@omega.js/desktop 0.50.0 → 0.51.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/README.md +1 -1
- package/dist/assets/css/tokens/_index.scss +1 -1
- package/dist/assets/themes/base/_includes/frontend/sections/account-section-header.html +4 -1
- package/dist/assets/themes/base/_includes/frontend/sections/footer.html +13 -6
- package/dist/assets/themes/base/_includes/frontend/sections/nav.html +10 -8
- package/dist/assets/themes/base/_includes/global/sections/account.html +3 -1
- package/dist/assets/themes/base/_includes/global/sections/app-sidebar.html +12 -8
- package/dist/assets/themes/base/_includes/global/sections/app-topbar.html +10 -6
- package/dist/assets/themes/base/_includes/global/sections/page-header.html +8 -4
- package/dist/assets/themes/base/_layouts/backend/pages/dashboard/index.html +24 -24
- package/dist/assets/themes/base/_layouts/frontend/pages/about.html +10 -10
- package/dist/assets/themes/base/_layouts/frontend/pages/account/index.html +35 -35
- package/dist/assets/themes/base/_layouts/frontend/pages/alternatives/index.html +4 -4
- package/dist/assets/themes/base/_layouts/frontend/pages/auth/signin.html +1 -1
- package/dist/assets/themes/base/_layouts/frontend/pages/auth/signup.html +4 -4
- package/dist/assets/themes/base/_layouts/frontend/pages/contact.html +3 -3
- package/dist/assets/themes/base/_layouts/frontend/pages/download.html +34 -33
- package/dist/assets/themes/base/_layouts/frontend/pages/extension/index.html +11 -11
- package/dist/assets/themes/base/_layouts/frontend/pages/legal/document.html +1 -1
- package/dist/assets/themes/base/_layouts/frontend/pages/status.html +1 -1
- package/dist/assets/themes/base/_layouts/frontend/pages/team/index.html +9 -7
- package/dist/assets/themes/base/_layouts/frontend/pages/team/member.html +5 -3
- package/dist/assets/themes/base/_sections/about/letter/section.html +1 -1
- package/dist/assets/themes/base/_sections/about/letter/section.json5 +4 -4
- package/dist/assets/themes/base/_sections/marketing/bento/section.html +1 -1
- package/dist/assets/themes/base/_sections/marketing/bento/section.json5 +15 -15
- package/dist/assets/themes/base/_sections/marketing/cta/section.json5 +1 -1
- package/dist/assets/themes/base/_sections/marketing/hero/section.html +6 -6
- package/dist/assets/themes/base/_sections/marketing/hero/section.json5 +10 -10
- package/dist/assets/themes/base/_sections/marketing/product-demo/section.html +1 -1
- package/dist/assets/themes/base/_sections/marketing/product-demo/section.json5 +2 -2
- package/dist/assets/themes/base/_sections/marketing/stats/section.html +1 -1
- package/dist/assets/themes/base/_sections/marketing/stats/section.json5 +5 -5
- package/dist/assets/themes/base/_sections/marketing/trusted-by/section.html +1 -1
- package/dist/assets/themes/base/_sections/marketing/trusted-by/section.json5 +2 -2
- package/dist/assets/themes/neobrutalism/_layouts/frontend/pages/index.html +10 -10
- package/dist/assets/themes/newsflash/_layouts/frontend/pages/index.html +10 -10
- package/dist/assets/themes/newsflash/_sections/marketing/desks/section.html +2 -2
- package/dist/assets/themes/newsflash/_sections/marketing/desks/section.json5 +4 -4
- package/dist/build.js +69 -28
- package/dist/cli-run.js +20 -13
- package/dist/cli.js +12 -7
- package/dist/commands/build.js +0 -2
- package/dist/commands/deploy.js +116 -44
- package/dist/commands/finalize-release.js +5 -4
- package/dist/commands/launch.js +12 -7
- package/dist/commands/lib/deploy-precheck.js +66 -34
- package/dist/commands/lib/ensure-target.js +71 -11
- package/dist/commands/package.js +0 -1
- package/dist/commands/publish.js +11 -4
- package/dist/commands/release.js +99 -252
- package/dist/commands/runner.js +42 -5
- package/dist/commands/sign-windows.js +46 -15
- package/dist/commands/test.js +4 -3
- package/dist/commands/validate-certs.js +291 -115
- package/dist/config/page-template.html +4 -0
- package/dist/defaults/.github/workflows/build.yml +144 -64
- package/dist/defaults/AGENTS.md +3 -2
- package/dist/defaults/_.gitignore +4 -2
- package/dist/defaults/config/certs/README.md +25 -45
- package/dist/defaults/config/omega.json5 +66 -32
- package/dist/defaults/hooks/deploy/pre.js +10 -0
- package/dist/defaults/src/assets/scss/main.scss +12 -2
- package/dist/defaults/src/integrations/tray/index.js +1 -1
- package/dist/gulp/main.js +13 -25
- package/dist/gulp/tasks/audit.js +18 -6
- package/dist/gulp/tasks/build-config.js +181 -60
- package/dist/gulp/tasks/bundle.js +108 -36
- package/dist/gulp/tasks/release.js +86 -4
- package/dist/gulp/tasks/sass.js +11 -0
- package/dist/hooks/lib/notarize-tools.js +137 -0
- package/dist/hooks/notarize-artifacts.js +57 -0
- package/dist/hooks/notarize.js +59 -8
- package/dist/lib/auth-persistence.js +25 -0
- package/dist/lib/client-bridge.js +11 -8
- package/dist/lib/deep-link.js +15 -8
- package/dist/lib/protocol.js +7 -1
- package/dist/lib/restart-manager/install.js +6 -3
- package/dist/lib/sign-helpers/auto-unlock.js +65 -27
- package/dist/lib/sign-helpers/console-lock.js +34 -0
- package/dist/lib/sign-helpers/exec-with-limit.js +68 -0
- package/dist/lib/sign-helpers/resolve-icons.js +6 -4
- package/dist/lib/tray.js +7 -6
- package/dist/main.js +16 -0
- package/dist/preload.js +8 -0
- package/dist/renderer.js +16 -4
- package/dist/runner/job-started.js +104 -0
- package/dist/test/fixtures/consumer-app/config/omega.json5 +7 -0
- package/dist/test/fixtures/consumer-app/package.json +1 -1
- package/dist/test/fixtures/consumer-app/src/assets/js/components/main/index.js +7 -1
- package/dist/test/harness/main-entry.js +2 -1
- package/dist/test/harness/renderer-preload.js +12 -3
- package/dist/test/runners/boot.js +101 -11
- package/dist/test/runners/electron.js +1 -1
- package/dist/test/suites/boot/consumer-app-boots.test.js +54 -0
- package/dist/test/suites/build/audit.test.js +45 -6
- package/dist/test/suites/build/auth-persistence-resolve.test.js +119 -0
- package/dist/test/suites/build/auto-unlock.test.js +105 -0
- package/dist/test/suites/build/boot-runner-timeout.test.js +253 -0
- package/dist/test/suites/build/brand-scss.test.js +106 -0
- package/dist/test/suites/build/build-config.test.js +146 -36
- package/dist/test/suites/build/build-json-bake.test.js +245 -0
- package/dist/test/suites/build/build-verbs.test.js +48 -15
- package/dist/test/suites/build/build-workflow-jobs.test.js +190 -0
- package/dist/test/suites/build/cli.test.js +32 -10
- package/dist/test/suites/build/config-schema.test.js +4 -4
- package/dist/test/suites/build/console-lock.test.js +51 -0
- package/dist/test/suites/build/defaults-scaffold.test.js +71 -2
- package/dist/test/suites/build/deploy-direct.test.js +241 -0
- package/dist/test/suites/build/deploy-dispatch.test.js +287 -0
- package/dist/test/suites/build/deploy-hook.test.js +169 -0
- package/dist/test/suites/build/ensure-target.test.js +14 -2
- package/dist/test/suites/build/env-delivery.test.js +19 -10
- package/dist/test/suites/build/env-watch.test.js +18 -7
- package/dist/test/suites/build/esm-only-dependency.test.js +127 -0
- package/dist/test/suites/build/exec-with-limit.test.js +53 -0
- package/dist/test/suites/build/finalize-release.test.js +2 -2
- package/dist/test/suites/build/get-config.test.js +120 -8
- package/dist/test/suites/build/github-utils.test.js +12 -6
- package/dist/test/suites/build/license-stamp.test.js +6 -4
- package/dist/test/suites/build/manager.test.js +88 -68
- package/dist/test/suites/build/manifest-deps.test.js +116 -0
- package/dist/test/suites/build/merge-line-files.test.js +27 -4
- package/dist/test/suites/build/notarize-artifacts.test.js +135 -0
- package/dist/test/suites/build/notarize-tools.test.js +38 -0
- package/dist/test/suites/build/notarize.test.js +207 -0
- package/dist/test/suites/build/release-pipeline.test.js +38 -60
- package/dist/test/suites/build/release-skipped-upload.test.js +107 -0
- package/dist/test/suites/build/resolve-icons.test.js +35 -35
- package/dist/test/suites/build/runner-job-guard.test.js +182 -0
- package/dist/test/suites/build/runner.test.js +25 -2
- package/dist/test/suites/build/sentry.test.js +8 -3
- package/dist/test/suites/build/setup-scripts.test.js +3 -0
- package/dist/test/suites/build/sign-windows.test.js +92 -8
- package/dist/test/suites/build/test-stealth.test.js +17 -11
- package/dist/test/suites/build/url-helpers.test.js +37 -17
- package/dist/test/suites/build/validate-certs.test.js +428 -55
- package/dist/test/suites/build/validate-config.test.js +3 -3
- package/dist/test/suites/main/auth-flow.test.js +12 -0
- package/dist/test/suites/main/auth-persistence.test.js +14 -17
- package/dist/test/suites/main/auto-updater.test.js +2 -2
- package/dist/test/suites/main/boot-sequence.test.js +1 -1
- package/dist/test/suites/main/client-bridge.integration.test.js +5 -82
- package/dist/test/suites/main/client-bridge.test.js +19 -6
- package/dist/test/suites/main/deep-link.test.js +54 -0
- package/dist/test/suites/main/startup-paths-and-ua.test.js +1 -1
- package/dist/test/suites/main/url-helpers.test.js +81 -72
- package/dist/test/suites/renderer/cross-context-helpers.test.js +19 -16
- package/dist/utils/build-pipeline.js +10 -10
- package/dist/utils/github.js +12 -51
- package/dist/utils/load-env.js +66 -0
- package/dist/utils/mode-helpers.js +43 -111
- package/dist/utils/platform.js +37 -0
- package/dist/utils/runner-env.js +2 -1
- package/dist/utils/runner-job-guard.js +149 -0
- package/dist/utils/ship-keys.js +52 -0
- package/dist/utils/test-stealth.js +5 -3
- package/dist/utils/url-helpers.js +33 -17
- package/dist/vendor/config/bundle-id.js +53 -0
- package/dist/vendor/config/client-config.js +141 -0
- package/dist/vendor/config/company.js +334 -15
- package/dist/vendor/config/dev-facts.js +48 -0
- package/dist/vendor/config/env-delivery.js +231 -9
- package/dist/vendor/config/env-retired.js +137 -0
- package/dist/vendor/config/env-rules.js +22 -3
- package/dist/vendor/config/env-schema.js +234 -117
- package/dist/vendor/config/env.js +55 -26
- package/dist/vendor/config/environment.js +189 -0
- package/dist/vendor/config/hooks.js +13 -11
- package/dist/vendor/config/index.js +121 -44
- package/dist/vendor/config/load.js +366 -115
- package/dist/vendor/config/merge.js +2 -2
- package/dist/vendor/config/order.js +3 -3
- package/dist/vendor/config/platforms.js +276 -0
- package/dist/vendor/config/repo.js +226 -104
- package/dist/vendor/config/retired-keys.js +232 -27
- package/dist/vendor/config/schema.js +525 -99
- package/dist/vendor/config/site-global.js +63 -53
- package/dist/vendor/config/targets.js +187 -0
- package/dist/vendor/config/validate.js +119 -59
- package/dist/vendor/devkit/argv.js +118 -0
- package/dist/vendor/devkit/attach-log-file.js +21 -13
- package/dist/vendor/devkit/brand-tokens.js +278 -0
- package/dist/vendor/devkit/brand-version.js +264 -0
- package/dist/vendor/devkit/build-json.js +91 -0
- package/dist/vendor/devkit/bundle.js +48 -0
- package/dist/vendor/devkit/certificate-expiry.js +108 -0
- package/dist/vendor/devkit/certs.js +16 -194
- package/dist/vendor/devkit/ci-workflows.js +124 -8
- package/dist/vendor/devkit/cli-router.js +3 -3
- package/dist/vendor/devkit/defaults-engine.js +69 -7
- package/dist/vendor/devkit/deploy-follow.js +297 -0
- package/dist/vendor/devkit/deploy-precheck.js +23 -8
- package/dist/vendor/devkit/deploy-record.js +11 -27
- package/dist/vendor/devkit/deploy-snapshot.js +661 -0
- package/dist/vendor/devkit/deploy.js +445 -75
- package/dist/vendor/devkit/git-auth.js +73 -0
- package/dist/vendor/devkit/git-remote.js +95 -0
- package/dist/vendor/devkit/github-repo.js +290 -0
- package/dist/vendor/devkit/local.js +47 -0
- package/dist/vendor/devkit/merge-line-files.js +23 -16
- package/dist/vendor/devkit/omega-bin.js +18 -3
- package/dist/vendor/devkit/pack-local.js +391 -0
- package/dist/vendor/devkit/preludes/index.js +120 -0
- package/dist/vendor/devkit/preludes/origin-heal.js +156 -0
- package/dist/vendor/devkit/service-account.js +43 -0
- package/dist/vendor/devkit/ship-plan.js +112 -0
- package/dist/vendor/devkit/signing-env.js +180 -0
- package/dist/vendor/devkit/signing-tree.js +92 -0
- package/dist/vendor/devkit/target-seams.js +142 -0
- package/dist/vendor/devkit/target-secrets.js +235 -50
- package/dist/vendor/devkit/test/esm-only-fixture.js +48 -0
- package/dist/vendor/devkit/test/fixtures/esm-only-package/browser.js +19 -0
- package/dist/vendor/devkit/test/fixtures/esm-only-package/index.js +20 -0
- package/dist/vendor/devkit/test/fixtures/esm-only-package/package.json +13 -0
- package/dist/vendor/monitoring/env.js +20 -10
- package/dist/vendor/monitoring/main.js +1 -1
- package/dist/vendor/monitoring/preload.js +1 -1
- package/dist/vendor/monitoring/renderer.js +1 -1
- package/docs/analytics.md +1 -1
- package/docs/auto-updater.md +5 -5
- package/docs/boot-sequence.md +1 -1
- package/docs/build-system.md +15 -7
- package/docs/client-bridge.md +9 -7
- package/docs/config-schema.md +4 -4
- package/docs/css.md +8 -2
- package/docs/deep-link.md +12 -4
- package/docs/environment-detection.md +32 -24
- package/docs/hooks.md +3 -1
- package/docs/icons.md +7 -7
- package/docs/index.md +61 -23
- package/docs/installer-options.md +24 -21
- package/docs/logging.md +5 -5
- package/docs/releasing.md +25 -17
- package/docs/runner.md +40 -5
- package/docs/shared/brands.md +12 -6
- package/docs/shared/breaking-changes.md +375 -21
- package/docs/shared/config.md +757 -199
- package/docs/shared/deploys.md +194 -91
- package/docs/shared/icons.md +18 -0
- package/docs/shared/local-dev.md +24 -6
- package/docs/shared/logging.md +9 -6
- package/docs/shared/monitoring.md +27 -13
- package/docs/shared/publishing.md +3 -3
- package/docs/shared/rulings.md +2 -2
- package/docs/shared/testing.md +1 -1
- package/docs/shared/theming.md +26 -1
- package/docs/shared/translation.md +49 -7
- package/docs/shared/updates.md +1 -1
- package/docs/signing.md +59 -33
- package/docs/test-framework.md +10 -5
- package/docs/themes.md +15 -1
- package/package.json +18 -12
- package/bin/omega-desktop +0 -2
- package/dist/commands/push-secrets.js +0 -141
- package/dist/test/suites/build/deliver-certs.test.js +0 -95
- package/dist/test/suites/build/derive-signing-env.test.js +0 -122
- package/dist/test/suites/build/push-secrets.test.js +0 -226
- package/dist/test/suites/build/resolve-signing-cert.test.js +0 -342
- package/dist/utils/deliver-certs.js +0 -69
- package/dist/utils/derive-signing-env.js +0 -56
- package/dist/utils/resolve-signing-cert.js +0 -175
- package/dist/vendor/config/desktop-artifacts.js +0 -110
- package/dist/vendor/config/instances.js +0 -208
- /package/dist/defaults/config/icons/{macos → mac}/dmg.png +0 -0
- /package/dist/defaults/config/icons/{macos → mac}/icon.png +0 -0
- /package/dist/defaults/config/icons/{macos → mac}/tray.png +0 -0
|
@@ -39,7 +39,7 @@ runs the container's full width. {% endcomment -%}
|
|
|
39
39
|
<span class="omega-micro omega-fragment__label">{{ args.feed_label }}</span>
|
|
40
40
|
{% for item in args.feed_items %}
|
|
41
41
|
<div class="omega-fragment__msg">
|
|
42
|
-
<span class="omega-fragment__msg-mark"><i class="
|
|
42
|
+
<span class="omega-fragment__msg-mark"><i class="{{ item.icon }} fa-xs" aria-hidden="true"></i></span>
|
|
43
43
|
<span>{{ item.text }}</span>
|
|
44
44
|
</div>
|
|
45
45
|
{% endfor %}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
args: {
|
|
5
5
|
aside_label: 'string',
|
|
6
6
|
feed_label: 'string',
|
|
7
|
-
feed_items: 'array', // [{ icon, text }] — the ops feed's messages; text carries markup. Empty = no feed, and no aside unless a photo holds it
|
|
7
|
+
feed_items: 'array', // [{ icon, text }] — the ops feed's messages; icon is the full Font Awesome class string, text carries markup. Empty = no feed, and no aside unless a photo holds it
|
|
8
8
|
feed_status: 'string', // the chip riding the foot of the feed
|
|
9
9
|
mission: 'object', // { title, description }
|
|
10
10
|
vision: 'object', // { title, description }
|
|
@@ -19,9 +19,9 @@
|
|
|
19
19
|
// Placeholder copy, the photo-band way: the demo feed ships so the aside
|
|
20
20
|
// reads as a living one, and a brand's own items REPLACE it wholesale.
|
|
21
21
|
feed_items: [
|
|
22
|
-
{ icon: 'rocket', text: '<strong>v2.4</strong> shipped to production' },
|
|
23
|
-
{ icon: 'user-plus', text: 'Two new faces on support' },
|
|
24
|
-
{ icon: 'quote-left', text: '"Best tool we\'ve adopted this year"' },
|
|
22
|
+
{ icon: 'fa-solid fa-rocket', text: '<strong>v2.4</strong> shipped to production' },
|
|
23
|
+
{ icon: 'fa-solid fa-user-plus', text: 'Two new faces on support' },
|
|
24
|
+
{ icon: 'fa-solid fa-quote-left', text: '"Best tool we\'ve adopted this year"' },
|
|
25
25
|
],
|
|
26
26
|
feed_status: 'All systems go',
|
|
27
27
|
mission: {
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
<span class="omega-tile__ordinal">{{ forloop.index }}</span>
|
|
28
28
|
{% endiftruthy %}
|
|
29
29
|
{% iftruthy item.icon %}
|
|
30
|
-
<span class="omega-icon-chip"><i class="
|
|
30
|
+
<span class="omega-icon-chip"><i class="{{ item.icon }} fa-sm" aria-hidden="true"></i></span>
|
|
31
31
|
{% endiftruthy %}
|
|
32
32
|
<span class="omega-tile__title">{{ item.title }}</span>
|
|
33
33
|
</div>
|
|
@@ -23,32 +23,32 @@
|
|
|
23
23
|
{
|
|
24
24
|
type: 'code',
|
|
25
25
|
span: 'big',
|
|
26
|
-
icon: 'sliders',
|
|
26
|
+
icon: 'fa-solid fa-sliders',
|
|
27
27
|
title: 'One config, every surface',
|
|
28
28
|
description: 'A single file drives your brand, targets, and integrations. Change it once and every page follows.',
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
31
|
type: 'split',
|
|
32
32
|
span: 'tall',
|
|
33
|
-
icon: 'circle-half-stroke',
|
|
33
|
+
icon: 'fa-solid fa-circle-half-stroke',
|
|
34
34
|
title: 'Light & dark, born together',
|
|
35
35
|
description: 'Every component ships in both modes from day one, with no bolted-on dark theme.',
|
|
36
36
|
},
|
|
37
37
|
{
|
|
38
38
|
type: 'terminal',
|
|
39
|
-
icon: 'terminal',
|
|
39
|
+
icon: 'fa-solid fa-terminal',
|
|
40
40
|
title: 'Deploy in one verb',
|
|
41
41
|
description: 'Build, verify, and publish from a single command.',
|
|
42
42
|
},
|
|
43
43
|
{
|
|
44
44
|
type: 'brand',
|
|
45
|
-
icon: 'palette',
|
|
45
|
+
icon: 'fa-solid fa-palette',
|
|
46
46
|
title: 'Your brand, everywhere',
|
|
47
47
|
description: 'One brand color recolors every accent surface: buttons, links, focus rings, charts.',
|
|
48
48
|
},
|
|
49
49
|
{
|
|
50
50
|
type: 'default',
|
|
51
|
-
icon: 'shield-halved',
|
|
51
|
+
icon: 'fa-solid fa-shield-halved',
|
|
52
52
|
title: 'Auth & accounts built in',
|
|
53
53
|
description: 'Sign-in, subscriptions, and billing flows ready on day one.',
|
|
54
54
|
},
|
|
@@ -85,19 +85,19 @@
|
|
|
85
85
|
subheadline: 'Each tile is the link: the whole card clicks through.',
|
|
86
86
|
items: [
|
|
87
87
|
{
|
|
88
|
-
icon: 'tag',
|
|
88
|
+
icon: 'fa-solid fa-tag',
|
|
89
89
|
title: 'What it costs',
|
|
90
90
|
description: 'Every plan, and what each one includes.',
|
|
91
91
|
href: '/pricing',
|
|
92
92
|
},
|
|
93
93
|
{
|
|
94
|
-
icon: 'users',
|
|
94
|
+
icon: 'fa-solid fa-users',
|
|
95
95
|
title: 'Who we are',
|
|
96
96
|
description: 'The people behind the product.',
|
|
97
97
|
href: '/about',
|
|
98
98
|
},
|
|
99
99
|
{
|
|
100
|
-
icon: 'envelope',
|
|
100
|
+
icon: 'fa-solid fa-envelope',
|
|
101
101
|
title: 'Talk to us',
|
|
102
102
|
description: 'Questions, demos, and anything else.',
|
|
103
103
|
href: '/contact',
|
|
@@ -112,10 +112,10 @@
|
|
|
112
112
|
headline: 'Four steps, start to live',
|
|
113
113
|
numbered: true,
|
|
114
114
|
items: [
|
|
115
|
-
{ icon: 'comments', title: 'Discover', description: 'We listen before we draw anything.' },
|
|
116
|
-
{ icon: 'pen-ruler', title: 'Design', description: 'The shape of the thing, agreed up front.' },
|
|
117
|
-
{ icon: 'hammer', title: 'Build', description: 'Shipped in weekly slices you can see.' },
|
|
118
|
-
{ icon: 'rocket', title: 'Launch', description: 'Live, measured, and handed over.' },
|
|
115
|
+
{ icon: 'fa-solid fa-comments', title: 'Discover', description: 'We listen before we draw anything.' },
|
|
116
|
+
{ icon: 'fa-solid fa-pen-ruler', title: 'Design', description: 'The shape of the thing, agreed up front.' },
|
|
117
|
+
{ icon: 'fa-solid fa-hammer', title: 'Build', description: 'Shipped in weekly slices you can see.' },
|
|
118
|
+
{ icon: 'fa-solid fa-rocket', title: 'Launch', description: 'Live, measured, and handed over.' },
|
|
119
119
|
],
|
|
120
120
|
},
|
|
121
121
|
},
|
|
@@ -129,19 +129,19 @@
|
|
|
129
129
|
items: [
|
|
130
130
|
{
|
|
131
131
|
type: 'terminal',
|
|
132
|
-
icon: 'terminal',
|
|
132
|
+
icon: 'fa-solid fa-terminal',
|
|
133
133
|
title: 'One-verb deploys',
|
|
134
134
|
description: 'Build, verify, and publish from a single command.',
|
|
135
135
|
},
|
|
136
136
|
{
|
|
137
137
|
type: 'default',
|
|
138
|
-
icon: 'bolt',
|
|
138
|
+
icon: 'fa-solid fa-bolt',
|
|
139
139
|
title: 'Fast by default',
|
|
140
140
|
description: 'Static output, tuned assets, nothing to babysit.',
|
|
141
141
|
},
|
|
142
142
|
{
|
|
143
143
|
type: 'default',
|
|
144
|
-
icon: 'lock',
|
|
144
|
+
icon: 'fa-solid fa-lock',
|
|
145
145
|
title: 'Secure sessions',
|
|
146
146
|
description: 'Auth and account flows ready on day one.',
|
|
147
147
|
},
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
headline: 'Ready to ship',
|
|
32
32
|
headline_accent: 'something great?',
|
|
33
33
|
subheadline: 'Start free and grow into every surface your product needs.',
|
|
34
|
-
primary_button: { text: 'Start free', href: '/signup', icon: 'rocket' },
|
|
34
|
+
primary_button: { text: 'Start free', href: '/signup', icon: 'fa-solid fa-rocket' },
|
|
35
35
|
command: 'npx acme setup',
|
|
36
36
|
secondary_button: { text: 'Talk to sales', href: '/contact', nudge: true },
|
|
37
37
|
},
|
|
@@ -25,7 +25,7 @@ centred product frame never stacks under one either. {% endcomment %}
|
|
|
25
25
|
{% assign demo_btn_class = demo.options.button.class | default: "btn-adaptive" %}
|
|
26
26
|
<button type="submit" class="btn {{ demo_btn_class }} btn-lg text-nowrap flex-shrink-0">
|
|
27
27
|
{% iftruthy demo.options.button.icon %}
|
|
28
|
-
<i class="
|
|
28
|
+
<i class="{{ demo.options.button.icon }} me-2" aria-hidden="true"></i>
|
|
29
29
|
{% endiftruthy %}
|
|
30
30
|
{{ demo.options.button.text }}
|
|
31
31
|
</button>
|
|
@@ -42,7 +42,7 @@ centred product frame never stacks under one either. {% endcomment %}
|
|
|
42
42
|
<div class="col-12 {% if field_size == 'half' %}col-sm-6{% endif %}">
|
|
43
43
|
<label for="hero-demo-{{ field.name }}" class="form-label d-flex align-items-center mb-2">
|
|
44
44
|
{% iftruthy field.icon %}
|
|
45
|
-
<i class="
|
|
45
|
+
<i class="{{ field.icon }} me-2" aria-hidden="true"></i>
|
|
46
46
|
{% endiftruthy %}
|
|
47
47
|
{{ field.label | default: field.placeholder | default: field.name }}
|
|
48
48
|
{% iftruthy field.required %}<span class="text-danger ms-1" aria-hidden="true">*</span>{% endiftruthy %}
|
|
@@ -84,7 +84,7 @@ centred product frame never stacks under one either. {% endcomment %}
|
|
|
84
84
|
<div class="col-12 {% unless demo.options.button.full_width %}col-sm-auto{% endunless %}">
|
|
85
85
|
<button type="submit" class="btn {{ form_btn_class }} btn-lg w-100">
|
|
86
86
|
{% iftruthy demo.options.button.icon %}
|
|
87
|
-
<i class="
|
|
87
|
+
<i class="{{ demo.options.button.icon }} me-2" aria-hidden="true"></i>
|
|
88
88
|
{% endiftruthy %}
|
|
89
89
|
{{ demo.options.button.text }}
|
|
90
90
|
</button>
|
|
@@ -208,7 +208,7 @@ in place, unchanged. {% endcomment %}
|
|
|
208
208
|
<div class="omega-hero__ctas" data-omega-reveal>
|
|
209
209
|
{% if args.primary_button.enabled != false and args.primary_button.text %}
|
|
210
210
|
<a href="{{ args.primary_button.href }}" class="btn {{ primary_btn_class }} btn-lg{% iffalsy args.primary_button.icon %} omega-hover-nudge{% endiffalsy %}">
|
|
211
|
-
{% iftruthy args.primary_button.icon %}<i class="
|
|
211
|
+
{% iftruthy args.primary_button.icon %}<i class="{{ args.primary_button.icon }} me-2" aria-hidden="true"></i>{% endiftruthy %}
|
|
212
212
|
{{ args.primary_button.text }}
|
|
213
213
|
{% iffalsy args.primary_button.icon %}<span class="omega-nudge ms-2"><i class="fa-solid fa-arrow-right fa-sm"></i></span>{% endiffalsy %}
|
|
214
214
|
</a>
|
|
@@ -220,7 +220,7 @@ in place, unchanged. {% endcomment %}
|
|
|
220
220
|
{% endiftruthy %}
|
|
221
221
|
{% if args.secondary_button.enabled != false and args.secondary_button.text %}
|
|
222
222
|
<a href="{{ args.secondary_button.href }}" class="btn {{ secondary_btn_class }} btn-lg{% iffalsy args.secondary_button.icon %} omega-hover-nudge{% endiffalsy %}">
|
|
223
|
-
{% iftruthy args.secondary_button.icon %}<i class="
|
|
223
|
+
{% iftruthy args.secondary_button.icon %}<i class="{{ args.secondary_button.icon }} me-2" aria-hidden="true"></i>{% endiftruthy %}
|
|
224
224
|
{{ args.secondary_button.text }}
|
|
225
225
|
{% iffalsy args.secondary_button.icon %}<span class="omega-nudge ms-2"><i class="fa-solid fa-arrow-right fa-sm"></i></span>{% endiffalsy %}
|
|
226
226
|
</a>
|
|
@@ -272,7 +272,7 @@ consumer authors. {% endcomment %}
|
|
|
272
272
|
{% for card in args.cards %}
|
|
273
273
|
<div class="omega-hero__card">
|
|
274
274
|
{% iftruthy card.icon %}
|
|
275
|
-
<span class="omega-hero__card-ico"><i class="
|
|
275
|
+
<span class="omega-hero__card-ico"><i class="{{ card.icon }}" aria-hidden="true"></i></span>
|
|
276
276
|
{% endiftruthy %}
|
|
277
277
|
{%- comment %} A value is TEXT, never markup (#580). {% endcomment -%}
|
|
278
278
|
<span class="omega-hero__card-num">{{ card.number | escape_once }}</span>
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
heading_level: 'number', // the headline's heading tag (default 1) — a hero-shaped band BELOW the page's opener authors 2, so one page never ships two h1s (#500)
|
|
12
12
|
rotating: 'array',
|
|
13
13
|
description: 'string',
|
|
14
|
-
primary_button: 'object', // { text, href, enabled, icon?, class? } — an authored class replaces btn-adaptive; an authored icon leads the label INSTEAD of the arrow nudge
|
|
14
|
+
primary_button: 'object', // { text, href, enabled, icon?, class? } — an authored class replaces btn-adaptive; an authored icon (the full Font Awesome class string) leads the label INSTEAD of the arrow nudge
|
|
15
15
|
command: 'string',
|
|
16
16
|
command_href: 'string',
|
|
17
17
|
secondary_button: 'object', // { text, href, enabled, icon?, class? } — same contract over btn-outline-adaptive
|
|
@@ -126,7 +126,7 @@
|
|
|
126
126
|
subtext: 'No credit card required - 5 free logos',
|
|
127
127
|
button: {
|
|
128
128
|
text: 'Generate logo',
|
|
129
|
-
icon: 'wand-magic-sparkles',
|
|
129
|
+
icon: 'fa-solid fa-wand-magic-sparkles',
|
|
130
130
|
class: 'btn-adaptive-inverse',
|
|
131
131
|
},
|
|
132
132
|
},
|
|
@@ -135,13 +135,13 @@
|
|
|
135
135
|
// btn-adaptive and an authored icon takes the arrow nudge's place.
|
|
136
136
|
primary_button: {
|
|
137
137
|
text: 'Get started free',
|
|
138
|
-
icon: 'rocket',
|
|
138
|
+
icon: 'fa-solid fa-rocket',
|
|
139
139
|
href: '/dashboard',
|
|
140
140
|
class: 'btn-light',
|
|
141
141
|
},
|
|
142
142
|
secondary_button: {
|
|
143
143
|
text: 'Explore solutions',
|
|
144
|
-
icon: 'book-open',
|
|
144
|
+
icon: 'fa-solid fa-book-open',
|
|
145
145
|
href: '/pricing',
|
|
146
146
|
class: 'btn-outline-light',
|
|
147
147
|
},
|
|
@@ -164,7 +164,7 @@
|
|
|
164
164
|
{
|
|
165
165
|
name: 'industry',
|
|
166
166
|
label: 'Industry',
|
|
167
|
-
icon: 'building',
|
|
167
|
+
icon: 'fa-solid fa-building',
|
|
168
168
|
type: 'select',
|
|
169
169
|
size: 'half',
|
|
170
170
|
placeholder: 'Select industry',
|
|
@@ -178,7 +178,7 @@
|
|
|
178
178
|
{
|
|
179
179
|
name: 'company_size',
|
|
180
180
|
label: 'Company size',
|
|
181
|
-
icon: 'users',
|
|
181
|
+
icon: 'fa-solid fa-users',
|
|
182
182
|
type: 'select',
|
|
183
183
|
size: 'half',
|
|
184
184
|
placeholder: 'Select size',
|
|
@@ -192,7 +192,7 @@
|
|
|
192
192
|
{
|
|
193
193
|
name: 'message',
|
|
194
194
|
label: 'Tell us about your project',
|
|
195
|
-
icon: 'comment',
|
|
195
|
+
icon: 'fa-solid fa-comment',
|
|
196
196
|
type: 'textarea',
|
|
197
197
|
size: 'full',
|
|
198
198
|
placeholder: 'Describe your goals, challenges, or questions...',
|
|
@@ -202,7 +202,7 @@
|
|
|
202
202
|
],
|
|
203
203
|
button: {
|
|
204
204
|
text: 'Get quote',
|
|
205
|
-
icon: 'paper-plane',
|
|
205
|
+
icon: 'fa-solid fa-paper-plane',
|
|
206
206
|
full_width: true,
|
|
207
207
|
class: 'btn-adaptive-inverse',
|
|
208
208
|
},
|
|
@@ -325,8 +325,8 @@
|
|
|
325
325
|
label: 'Stat cards',
|
|
326
326
|
args: {
|
|
327
327
|
cards: [
|
|
328
|
-
{ number: '99%', label: 'Uptime', icon: 'shield-halved' },
|
|
329
|
-
{ number: '500K+', label: 'Builds shipped', icon: 'rocket' },
|
|
328
|
+
{ number: '99%', label: 'Uptime', icon: 'fa-solid fa-shield-halved' },
|
|
329
|
+
{ number: '500K+', label: 'Builds shipped', icon: 'fa-solid fa-rocket' },
|
|
330
330
|
{ number: '30+', label: 'Integrations' },
|
|
331
331
|
],
|
|
332
332
|
},
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
aria-selected="{% if forloop.first %}true{% else %}false{% endif %}"
|
|
21
21
|
>
|
|
22
22
|
{% iftruthy tab.icon %}
|
|
23
|
-
<i class="
|
|
23
|
+
<i class="{{ tab.icon }} fa-sm me-2" aria-hidden="true"></i>
|
|
24
24
|
{% endiftruthy %}
|
|
25
25
|
{{ tab.label }}
|
|
26
26
|
</button>
|
|
@@ -24,14 +24,14 @@
|
|
|
24
24
|
{
|
|
25
25
|
id: 'dashboard',
|
|
26
26
|
label: 'Dashboard',
|
|
27
|
-
icon: 'gauge-high',
|
|
27
|
+
icon: 'fa-solid fa-gauge-high',
|
|
28
28
|
video: 'https://cdn.itwcreativeworks.com/assets/sample/videos/demos/16x9/sample-demo-1.webm',
|
|
29
29
|
features: ['Easy setup', 'Powerful tools', 'Real-time updates'],
|
|
30
30
|
},
|
|
31
31
|
{
|
|
32
32
|
id: 'analytics',
|
|
33
33
|
label: 'Analytics',
|
|
34
|
-
icon: 'chart-line',
|
|
34
|
+
icon: 'fa-solid fa-chart-line',
|
|
35
35
|
video: 'https://cdn.itwcreativeworks.com/assets/sample/videos/demos/16x9/sample-demo-2.webm',
|
|
36
36
|
features: ['Advanced analytics', 'Custom reports', 'Data insights'],
|
|
37
37
|
},
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
{% capture stat_class %}omega-stat{% if tone_slots contains stat.color %} omega-{{ stat.color }}{% endif %}{% endcapture %}
|
|
12
12
|
<div class="{{ stat_class }}" data-omega-reveal>
|
|
13
13
|
{% iftruthy stat.icon %}
|
|
14
|
-
<span class="omega-icon-chip omega-stat__icon"><i class="
|
|
14
|
+
<span class="omega-icon-chip omega-stat__icon"><i class="{{ stat.icon }} fa-sm" aria-hidden="true"></i></span>
|
|
15
15
|
{% endiftruthy %}
|
|
16
16
|
{%- comment %} A value is TEXT, never markup (#580): a stat like
|
|
17
17
|
`<200ms` opened a tag the minifier then ate, printing a visible
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
description: 'Stats band — serif numbers with count-up on reveal. Callers with a bare frontmatter array pass it as the items named arg ({% section "marketing/stats", items: resolved.stats %}); empty items suppresses the band.',
|
|
3
3
|
|
|
4
4
|
args: {
|
|
5
|
-
items: 'array', // [{ number, label, sublabel, icon, color }] — icon
|
|
5
|
+
items: 'array', // [{ number, label, sublabel, icon, color }] — icon is the full Font Awesome class string ('fa-brands fa-figma'); color names a tone slot (tone-1…tone-6), never a hex
|
|
6
6
|
|
|
7
7
|
after: 'html', // finished markup rendered inside the band container after the grid ({% slot after %}) — e.g. a trailing CTA button
|
|
8
8
|
},
|
|
@@ -23,10 +23,10 @@
|
|
|
23
23
|
label: 'Icons and tones',
|
|
24
24
|
args: {
|
|
25
25
|
items: [
|
|
26
|
-
{ number: '2017', label: 'Founded', sublabel: 'Still shipping', icon: 'calendar', color: 'tone-1' },
|
|
27
|
-
{ number: '50+', label: 'Team members', sublabel: 'Across 9 time zones', icon: 'users', color: 'tone-2' },
|
|
28
|
-
{ number: '1M+', label: 'Happy customers', sublabel: 'And counting', icon: 'smile', color: 'tone-3' },
|
|
29
|
-
{ number: '120+', label: 'Countries', sublabel: 'Served from the edge', icon: 'globe', color: 'tone-4' },
|
|
26
|
+
{ number: '2017', label: 'Founded', sublabel: 'Still shipping', icon: 'fa-solid fa-calendar', color: 'tone-1' },
|
|
27
|
+
{ number: '50+', label: 'Team members', sublabel: 'Across 9 time zones', icon: 'fa-solid fa-users', color: 'tone-2' },
|
|
28
|
+
{ number: '1M+', label: 'Happy customers', sublabel: 'And counting', icon: 'fa-solid fa-smile', color: 'tone-3' },
|
|
29
|
+
{ number: '120+', label: 'Countries', sublabel: 'Served from the edge', icon: 'fa-solid fa-globe', color: 'tone-4' },
|
|
30
30
|
],
|
|
31
31
|
},
|
|
32
32
|
},
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
description: 'Logo marquee — the "trusted by" wall. Per logo: `logo` = combomark slug (core/logos, the REAL wordmark lockups); `icon` =
|
|
2
|
+
description: 'Logo marquee — the "trusted by" wall. Per logo: `logo` = combomark slug (core/logos, the REAL wordmark lockups); `icon` = the full Font Awesome class string (mark + name lockup), e.g. `fa-brands fa-github`; `src` = custom image; name-only falls back to the typographic word. Empty logos suppresses the band.',
|
|
3
3
|
|
|
4
4
|
args: {
|
|
5
5
|
headline: 'string',
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
headline: 'Backed by',
|
|
30
30
|
logos: [
|
|
31
31
|
{ name: 'Google', logo: 'google' },
|
|
32
|
-
{ name: 'GitHub', icon: 'github' },
|
|
32
|
+
{ name: 'GitHub', icon: 'fa-brands fa-github' },
|
|
33
33
|
{ name: 'Initech' },
|
|
34
34
|
],
|
|
35
35
|
},
|
|
@@ -10,11 +10,11 @@ hero:
|
|
|
10
10
|
description: "AI automation for modern businesses made simple"
|
|
11
11
|
primary_button:
|
|
12
12
|
text: "Get started free"
|
|
13
|
-
icon: "rocket"
|
|
13
|
+
icon: "fa-solid fa-rocket"
|
|
14
14
|
href: "/dashboard"
|
|
15
15
|
secondary_button:
|
|
16
16
|
text: "See pricing"
|
|
17
|
-
icon: "book-open"
|
|
17
|
+
icon: "fa-solid fa-book-open"
|
|
18
18
|
href: "/pricing"
|
|
19
19
|
|
|
20
20
|
# Trusted By Section (base marketing/trusted-by, restyled)
|
|
@@ -61,18 +61,18 @@ highlights:
|
|
|
61
61
|
subheadline: "Get unlimited design requests delivered fast with our streamlined process."
|
|
62
62
|
cta_button:
|
|
63
63
|
text: "Get started"
|
|
64
|
-
icon: "rocket"
|
|
64
|
+
icon: "fa-solid fa-rocket"
|
|
65
65
|
href: "/dashboard"
|
|
66
66
|
items:
|
|
67
67
|
- title: "Subscribe"
|
|
68
68
|
description: "Choose your plan and submit unlimited design requests."
|
|
69
|
-
icon: "rotate"
|
|
69
|
+
icon: "fa-solid fa-rotate"
|
|
70
70
|
- title: "Receive"
|
|
71
71
|
description: "Get your designs delivered in as fast as two business days."
|
|
72
|
-
icon: "bolt"
|
|
72
|
+
icon: "fa-solid fa-bolt"
|
|
73
73
|
- title: "Revise"
|
|
74
74
|
description: "Request unlimited revisions until it's perfect."
|
|
75
|
-
icon: "thumbs-up"
|
|
75
|
+
icon: "fa-solid fa-thumbs-up"
|
|
76
76
|
|
|
77
77
|
# Testimonials Section
|
|
78
78
|
testimonials:
|
|
@@ -163,10 +163,10 @@ config:
|
|
|
163
163
|
<div class="col-lg-5">
|
|
164
164
|
<div class="d-grid gap-3 neo-hero__actions">
|
|
165
165
|
<a href="{{ resolved.hero.primary_button.href }}" class="btn btn-dark btn-lg">
|
|
166
|
-
<i class="
|
|
166
|
+
<i class="{{ resolved.hero.primary_button.icon }} me-2" aria-hidden="true"></i>{{ resolved.hero.primary_button.text }}
|
|
167
167
|
</a>
|
|
168
168
|
<a href="{{ resolved.hero.secondary_button.href }}" class="btn btn-light btn-lg">
|
|
169
|
-
<i class="
|
|
169
|
+
<i class="{{ resolved.hero.secondary_button.icon }} me-2" aria-hidden="true"></i>{{ resolved.hero.secondary_button.text }}
|
|
170
170
|
</a>
|
|
171
171
|
</div>
|
|
172
172
|
</div>
|
|
@@ -240,7 +240,7 @@ config:
|
|
|
240
240
|
<div class="card-body">
|
|
241
241
|
<div class="neo-step-card__top">
|
|
242
242
|
<span class="neo-step-card__num">{{ forloop.index }}</span>
|
|
243
|
-
<span class="neo-step-card__icon"><i class="
|
|
243
|
+
<span class="neo-step-card__icon"><i class="{{ feature.icon }}" aria-hidden="true"></i></span>
|
|
244
244
|
</div>
|
|
245
245
|
<h3 class="neo-step-card__title">{{ feature.title }}</h3>
|
|
246
246
|
<p class="neo-step-card__desc">{{ feature.description }}</p>
|
|
@@ -253,7 +253,7 @@ config:
|
|
|
253
253
|
{% iftruthy resolved.highlights.cta_button %}
|
|
254
254
|
<div class="text-center mt-5">
|
|
255
255
|
<a href="{{ resolved.highlights.cta_button.href }}" class="btn btn-warning btn-lg">
|
|
256
|
-
<i class="
|
|
256
|
+
<i class="{{ resolved.highlights.cta_button.icon }} me-2" aria-hidden="true"></i>{{ resolved.highlights.cta_button.text }}
|
|
257
257
|
</a>
|
|
258
258
|
</div>
|
|
259
259
|
{% endiftruthy %}
|
|
@@ -9,11 +9,11 @@ hero:
|
|
|
9
9
|
description: "Sharp reporting and zero noise: the stories that matter, delivered before your coffee gets cold."
|
|
10
10
|
primary_button:
|
|
11
11
|
text: "Read the latest"
|
|
12
|
-
icon: "bolt"
|
|
12
|
+
icon: "fa-solid fa-bolt"
|
|
13
13
|
href: "/blog"
|
|
14
14
|
secondary_button:
|
|
15
15
|
text: "Get the newsletter"
|
|
16
|
-
icon: "envelope"
|
|
16
|
+
icon: "fa-solid fa-envelope"
|
|
17
17
|
href: "#signup"
|
|
18
18
|
|
|
19
19
|
# The Latest — the front-page feed (posts-driven; newsflash-specific section)
|
|
@@ -63,20 +63,20 @@ desks:
|
|
|
63
63
|
subheadline: "Three desks, one standard: report it right, write it sharp."
|
|
64
64
|
cta_button:
|
|
65
65
|
text: "Browse all stories"
|
|
66
|
-
icon: "arrow-right"
|
|
66
|
+
icon: "fa-solid fa-arrow-right"
|
|
67
67
|
href: "/blog"
|
|
68
68
|
items:
|
|
69
69
|
- title: "Tech"
|
|
70
70
|
description: "The machines, the makers, and the money rewiring how we live and work."
|
|
71
|
-
icon: "microchip"
|
|
71
|
+
icon: "fa-solid fa-microchip"
|
|
72
72
|
href: "/blog/categories/tech"
|
|
73
73
|
- title: "Culture"
|
|
74
74
|
description: "What we watch, wear, and argue about, and why it matters more than you think."
|
|
75
|
-
icon: "masks-theater"
|
|
75
|
+
icon: "fa-solid fa-masks-theater"
|
|
76
76
|
href: "/blog/categories/culture"
|
|
77
77
|
- title: "Money"
|
|
78
78
|
description: "Markets, paychecks, and the economics hiding inside everyday decisions."
|
|
79
|
-
icon: "chart-line"
|
|
79
|
+
icon: "fa-solid fa-chart-line"
|
|
80
80
|
href: "/blog/categories/money"
|
|
81
81
|
|
|
82
82
|
# Stats Section — the masthead numbers
|
|
@@ -103,11 +103,11 @@ cta:
|
|
|
103
103
|
subheadline: "Join the readers who start their day with {{ resolved.config.brand.name }}: reporting with teeth, context with heart, and zero filler."
|
|
104
104
|
primary_button:
|
|
105
105
|
text: "Start reading"
|
|
106
|
-
icon: "bolt"
|
|
106
|
+
icon: "fa-solid fa-bolt"
|
|
107
107
|
href: "/blog"
|
|
108
108
|
secondary_button:
|
|
109
109
|
text: "Get the newsletter"
|
|
110
|
-
icon: "envelope"
|
|
110
|
+
icon: "fa-solid fa-envelope"
|
|
111
111
|
href: "#signup"
|
|
112
112
|
---
|
|
113
113
|
|
|
@@ -156,12 +156,12 @@ cta:
|
|
|
156
156
|
<div class="d-flex flex-wrap gap-3">
|
|
157
157
|
{% iftruthy resolved.hero.primary_button %}
|
|
158
158
|
<a href="{{ resolved.hero.primary_button.href }}" class="btn btn-primary btn-lg">
|
|
159
|
-
<i class="
|
|
159
|
+
<i class="{{ resolved.hero.primary_button.icon }} me-2" aria-hidden="true"></i>{{ resolved.hero.primary_button.text }}
|
|
160
160
|
</a>
|
|
161
161
|
{% endiftruthy %}
|
|
162
162
|
{% iftruthy resolved.hero.secondary_button %}
|
|
163
163
|
<a href="{{ resolved.hero.secondary_button.href }}" class="btn btn-outline-dark btn-lg">
|
|
164
|
-
<i class="
|
|
164
|
+
<i class="{{ resolved.hero.secondary_button.icon }} me-2" aria-hidden="true"></i>{{ resolved.hero.secondary_button.text }}
|
|
165
165
|
</a>
|
|
166
166
|
{% endiftruthy %}
|
|
167
167
|
</div>
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
<div class="col-md-4" data-lazy="@class animation-slide-up">
|
|
19
19
|
<a href="{{ desk_href }}" class="card newsflash-story-card h-100 p-4 text-decoration-none">
|
|
20
20
|
<span class="newsflash-desks__icon d-inline-flex align-items-center justify-content-center rounded-circle text-bg-primary mb-3">
|
|
21
|
-
<i class="
|
|
21
|
+
<i class="{{ desk.icon }}" aria-hidden="true"></i>
|
|
22
22
|
</span>
|
|
23
23
|
<h3 class="h4 mb-2">{{ desk.title }}</h3>
|
|
24
24
|
<p class="text-body-secondary mb-0">{{ desk.description }}</p>
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
{% iftruthy args.cta_button %}
|
|
32
32
|
<div class="text-center mt-5" data-lazy="@class animation-slide-up">
|
|
33
33
|
<a href="{{ args.cta_button.href }}" class="btn btn-primary btn-lg">
|
|
34
|
-
<i class="
|
|
34
|
+
<i class="{{ args.cta_button.icon }} me-2" aria-hidden="true"></i>{{ args.cta_button.text }}
|
|
35
35
|
</a>
|
|
36
36
|
</div>
|
|
37
37
|
{% endiftruthy %}
|
|
@@ -24,25 +24,25 @@
|
|
|
24
24
|
subheadline: 'Three beats, one standard.',
|
|
25
25
|
items: [
|
|
26
26
|
{
|
|
27
|
-
icon: 'microchip',
|
|
27
|
+
icon: 'fa-solid fa-microchip',
|
|
28
28
|
title: 'Technology',
|
|
29
29
|
description: 'Chips, code, and the people shipping both.',
|
|
30
30
|
href: '/blog',
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
|
-
icon: 'chart-line',
|
|
33
|
+
icon: 'fa-solid fa-chart-line',
|
|
34
34
|
title: 'Markets',
|
|
35
35
|
description: 'What moved, why it moved, who moved it.',
|
|
36
36
|
href: '/blog',
|
|
37
37
|
},
|
|
38
38
|
{
|
|
39
|
-
icon: 'landmark',
|
|
39
|
+
icon: 'fa-solid fa-landmark',
|
|
40
40
|
title: 'Policy',
|
|
41
41
|
description: 'The rules being written while you read this.',
|
|
42
42
|
href: '/blog',
|
|
43
43
|
},
|
|
44
44
|
],
|
|
45
|
-
cta_button: { icon: 'rss', text: 'Browse all coverage', href: '/blog' },
|
|
45
|
+
cta_button: { icon: 'fa-solid fa-rss', text: 'Browse all coverage', href: '/blog' },
|
|
46
46
|
},
|
|
47
47
|
},
|
|
48
48
|
],
|