diff --git a/assets/css/about-careers.css b/assets/css/about-careers.css new file mode 100644 index 0000000..0327391 --- /dev/null +++ b/assets/css/about-careers.css @@ -0,0 +1 @@ +.wp-block-heading.ls-careers-statement{max-width:18ch;text-wrap:balance}.ls-careers-goal{text-wrap:balance}@media(max-width: 781.98px){.ls-bento.wp-block-group{grid-template-columns:repeat(2, minmax(0, 1fr))}.ls-bento>.ls-bento__card{grid-column:span 1}.ls-bento>.ls-bento__card--feature,.ls-bento>.ls-bento__card--wide{grid-column:span 2}}@media(max-width: 599.98px){.ls-bento.wp-block-group{grid-template-columns:minmax(0, 1fr)}.ls-bento>.ls-bento__card,.ls-bento>.ls-bento__card--feature,.ls-bento>.ls-bento__card--wide{grid-column:auto}.ls-bento__card{min-height:0 !important}.ls-bento>.ls-bento__card--wide{align-items:flex-start;flex-direction:column}} diff --git a/functions.php b/functions.php index 70a8e96..7965159 100644 --- a/functions.php +++ b/functions.php @@ -130,6 +130,7 @@ function ls_theme_setup() { add_editor_style( 'assets/css/hero-split-form.css' ); add_editor_style( 'assets/css/scroll-timeline.css' ); add_editor_style( 'assets/css/details-card-grid.css' ); + add_editor_style( 'assets/css/about-careers.css' ); } add_action( 'after_setup_theme', 'ls_theme_setup' ); diff --git a/inc/animations.php b/inc/animations.php index fefac87..62c4849 100644 --- a/inc/animations.php +++ b/inc/animations.php @@ -115,6 +115,7 @@ function ls_theme_get_bundle_render_markers() { 'legal-page' => array( 'classes' => array( 'ls-page-hero', 'ls-legal-toc', 'ls-legal-body', 'ls-related-trust-grid' ) ), 'hero-split-form' => array( 'classes' => array( 'ls-hero-form-intro' ) ), 'scroll-timeline' => array( 'classes' => array( 'ls-scroll-timeline' ) ), + 'about-careers' => array( 'classes' => array( 'ls-careers-statement', 'ls-careers-goal', 'ls-bento' ) ), 'details-card-grid' => array( 'classes' => array( 'ls-year-card' ) ), ); } @@ -743,6 +744,15 @@ function ls_theme_get_effect_styles( $context = 'front' ) { return is_page( 'about/history' ); }, ), + 'about-careers' => array( + 'handle' => 'ls-theme-about-careers', + 'path' => 'assets/css/about-careers.css', + 'contexts' => array( 'front', 'editor' ), + // The About Careers page patterns: the statement measure and the bento reflow on small screens. The render-marker fallback loads it wherever the patterns render. + 'condition' => static function () { + return is_page( 'about/careers' ); + }, + ), ); /** diff --git a/package.json b/package.json index 752935e..9d60525 100644 --- a/package.json +++ b/package.json @@ -4,8 +4,8 @@ "description": "LightSpeed Theme is a custom WordPress block theme built by LightSpeed for fast, accessible, maintainable websites using the WordPress Site Editor and block editor.", "type": "module", "scripts": { - "build:css": "sass --no-source-map --no-charset --style=compressed src/scss/animations.scss:assets/css/animations.css src/scss/gsap-animations.scss:assets/css/gsap-animations.css src/scss/structural/taxonomy-filter.scss:assets/css/taxonomy-filter.css src/scss/structural/work-project-card.scss:assets/css/work-project-card.css src/scss/structural/work-archive-sections.scss:assets/css/work-archive-sections.css src/scss/structural/card-shells.scss:assets/css/card-shells.css src/scss/structural/cta-buttons.scss:assets/css/cta-buttons.css src/scss/structural/home-hero.scss:assets/css/home-hero.css src/scss/structural/work-hero.scss:assets/css/work-hero.css src/scss/structural/work-single-hero.scss:assets/css/work-single-hero.css src/scss/structural/blog-hero.scss:assets/css/blog-hero.css src/scss/structural/blog-all-articles.scss:assets/css/blog-all-articles.css src/scss/structural/blog-writing-cta.scss:assets/css/blog-writing-cta.css src/scss/structural/faq.scss:assets/css/faq.css src/scss/structural/links.scss:assets/css/links.css src/scss/structural/button-secondary.scss:assets/css/button-secondary.css src/scss/structural/featured-work.scss:assets/css/featured-work.css src/scss/structural/where-to-fit.scss:assets/css/where-to-fit.css src/scss/structural/homepage-cta.scss:assets/css/homepage-cta.css src/scss/structural/stats-bar.scss:assets/css/stats-bar.css src/scss/structural/homepage-card-rows.scss:assets/css/homepage-card-rows.css src/scss/structural/homepage-why-lightspeed.scss:assets/css/homepage-why-lightspeed.css src/scss/structural/search-results.scss:assets/css/search-results.css src/scss/structural/search-hero.scss:assets/css/search-hero.css src/scss/structural/services-hero.scss:assets/css/services-hero.css src/scss/structural/solutions-hero.scss:assets/css/solutions-hero.css src/scss/structural/services-linked-decisions.scss:assets/css/services-linked-decisions.css src/scss/structural/services-service-clusters.scss:assets/css/services-service-clusters.css src/scss/structural/services-service-tiles.scss:assets/css/services-service-tiles.css src/scss/structural/solutions-route-tiles.scss:assets/css/solutions-route-tiles.css src/scss/structural/stat-feature-bento.scss:assets/css/stat-feature-bento.css src/scss/structural/services-delivery-numbers.scss:assets/css/services-delivery-numbers.css src/scss/structural/corner-glow.scss:assets/css/corner-glow.css src/scss/structural/image-captions.scss:assets/css/image-captions.css src/scss/structural/phase-hero.scss:assets/css/phase-hero.css src/scss/structural/button-phase.scss:assets/css/button-phase.css src/scss/structural/phase-journey-nav.scss:assets/css/phase-journey-nav.css src/scss/structural/phase-services-in-phase.scss:assets/css/phase-services-in-phase.css src/scss/structural/phase-cta.scss:assets/css/phase-cta.css src/scss/structural/phase-delivery-numbers.scss:assets/css/phase-delivery-numbers.css src/scss/structural/phase-common-services.scss:assets/css/phase-common-services.css src/scss/structural/phase-support-focus.scss:assets/css/phase-support-focus.css src/scss/structural/phase-faq.scss:assets/css/phase-faq.css src/scss/structural/phase-where-to-go-next.scss:assets/css/phase-where-to-go-next.css src/scss/structural/tick-phase.scss:assets/css/tick-phase.css src/scss/structural/service-case-study.scss:assets/css/service-case-study.css src/scss/structural/solutions-case-study.scss:assets/css/solutions-case-study.css src/scss/structural/split-header-icon-card-grid.scss:assets/css/split-header-icon-card-grid.css src/scss/structural/solutions-split-faq.scss:assets/css/solutions-split-faq.css src/scss/structural/snapshot-card.scss:assets/css/snapshot-card.css src/scss/structural/legal-page.scss:assets/css/legal-page.css src/scss/structural/hero-split-form.scss:assets/css/hero-split-form.css src/scss/structural/hero-gradient-title.scss:assets/css/hero-gradient-title.css src/scss/structural/phase-link-card-grid.scss:assets/css/phase-link-card-grid.css src/scss/structural/scroll-timeline.scss:assets/css/scroll-timeline.css src/scss/structural/details-card-grid.scss:assets/css/details-card-grid.css src/scss/structural/about-culture.scss:assets/css/about-culture.css", - "build:css:dev": "sass --no-source-map --no-charset --style=expanded src/scss/animations.scss:assets/css/animations.css src/scss/gsap-animations.scss:assets/css/gsap-animations.css src/scss/structural/taxonomy-filter.scss:assets/css/taxonomy-filter.css src/scss/structural/work-project-card.scss:assets/css/work-project-card.css src/scss/structural/work-archive-sections.scss:assets/css/work-archive-sections.css src/scss/structural/card-shells.scss:assets/css/card-shells.css src/scss/structural/cta-buttons.scss:assets/css/cta-buttons.css src/scss/structural/home-hero.scss:assets/css/home-hero.css src/scss/structural/work-hero.scss:assets/css/work-hero.css src/scss/structural/work-single-hero.scss:assets/css/work-single-hero.css src/scss/structural/blog-hero.scss:assets/css/blog-hero.css src/scss/structural/blog-all-articles.scss:assets/css/blog-all-articles.css src/scss/structural/blog-writing-cta.scss:assets/css/blog-writing-cta.css src/scss/structural/faq.scss:assets/css/faq.css src/scss/structural/links.scss:assets/css/links.css src/scss/structural/button-secondary.scss:assets/css/button-secondary.css src/scss/structural/featured-work.scss:assets/css/featured-work.css src/scss/structural/where-to-fit.scss:assets/css/where-to-fit.css src/scss/structural/homepage-cta.scss:assets/css/homepage-cta.css src/scss/structural/stats-bar.scss:assets/css/stats-bar.css src/scss/structural/homepage-card-rows.scss:assets/css/homepage-card-rows.css src/scss/structural/homepage-why-lightspeed.scss:assets/css/homepage-why-lightspeed.css src/scss/structural/search-results.scss:assets/css/search-results.css src/scss/structural/search-hero.scss:assets/css/search-hero.css src/scss/structural/services-hero.scss:assets/css/services-hero.css src/scss/structural/solutions-hero.scss:assets/css/solutions-hero.css src/scss/structural/services-linked-decisions.scss:assets/css/services-linked-decisions.css src/scss/structural/services-service-clusters.scss:assets/css/services-service-clusters.css src/scss/structural/services-service-tiles.scss:assets/css/services-service-tiles.css src/scss/structural/solutions-route-tiles.scss:assets/css/solutions-route-tiles.css src/scss/structural/stat-feature-bento.scss:assets/css/stat-feature-bento.css src/scss/structural/services-delivery-numbers.scss:assets/css/services-delivery-numbers.css src/scss/structural/corner-glow.scss:assets/css/corner-glow.css src/scss/structural/image-captions.scss:assets/css/image-captions.css src/scss/structural/phase-hero.scss:assets/css/phase-hero.css src/scss/structural/button-phase.scss:assets/css/button-phase.css src/scss/structural/phase-journey-nav.scss:assets/css/phase-journey-nav.css src/scss/structural/phase-services-in-phase.scss:assets/css/phase-services-in-phase.css src/scss/structural/phase-cta.scss:assets/css/phase-cta.css src/scss/structural/phase-delivery-numbers.scss:assets/css/phase-delivery-numbers.css src/scss/structural/phase-common-services.scss:assets/css/phase-common-services.css src/scss/structural/phase-support-focus.scss:assets/css/phase-support-focus.css src/scss/structural/phase-faq.scss:assets/css/phase-faq.css src/scss/structural/phase-where-to-go-next.scss:assets/css/phase-where-to-go-next.css src/scss/structural/tick-phase.scss:assets/css/tick-phase.css src/scss/structural/service-case-study.scss:assets/css/service-case-study.css src/scss/structural/solutions-case-study.scss:assets/css/solutions-case-study.css src/scss/structural/split-header-icon-card-grid.scss:assets/css/split-header-icon-card-grid.css src/scss/structural/solutions-split-faq.scss:assets/css/solutions-split-faq.css src/scss/structural/snapshot-card.scss:assets/css/snapshot-card.css src/scss/structural/legal-page.scss:assets/css/legal-page.css src/scss/structural/hero-split-form.scss:assets/css/hero-split-form.css src/scss/structural/hero-gradient-title.scss:assets/css/hero-gradient-title.css src/scss/structural/phase-link-card-grid.scss:assets/css/phase-link-card-grid.css src/scss/structural/scroll-timeline.scss:assets/css/scroll-timeline.css src/scss/structural/details-card-grid.scss:assets/css/details-card-grid.css src/scss/structural/about-culture.scss:assets/css/about-culture.css", + "build:css": "sass --no-source-map --no-charset --style=compressed src/scss/animations.scss:assets/css/animations.css src/scss/gsap-animations.scss:assets/css/gsap-animations.css src/scss/structural/taxonomy-filter.scss:assets/css/taxonomy-filter.css src/scss/structural/work-project-card.scss:assets/css/work-project-card.css src/scss/structural/work-archive-sections.scss:assets/css/work-archive-sections.css src/scss/structural/card-shells.scss:assets/css/card-shells.css src/scss/structural/cta-buttons.scss:assets/css/cta-buttons.css src/scss/structural/home-hero.scss:assets/css/home-hero.css src/scss/structural/work-hero.scss:assets/css/work-hero.css src/scss/structural/work-single-hero.scss:assets/css/work-single-hero.css src/scss/structural/blog-hero.scss:assets/css/blog-hero.css src/scss/structural/blog-all-articles.scss:assets/css/blog-all-articles.css src/scss/structural/blog-writing-cta.scss:assets/css/blog-writing-cta.css src/scss/structural/faq.scss:assets/css/faq.css src/scss/structural/links.scss:assets/css/links.css src/scss/structural/button-secondary.scss:assets/css/button-secondary.css src/scss/structural/featured-work.scss:assets/css/featured-work.css src/scss/structural/where-to-fit.scss:assets/css/where-to-fit.css src/scss/structural/homepage-cta.scss:assets/css/homepage-cta.css src/scss/structural/stats-bar.scss:assets/css/stats-bar.css src/scss/structural/homepage-card-rows.scss:assets/css/homepage-card-rows.css src/scss/structural/homepage-why-lightspeed.scss:assets/css/homepage-why-lightspeed.css src/scss/structural/search-results.scss:assets/css/search-results.css src/scss/structural/search-hero.scss:assets/css/search-hero.css src/scss/structural/services-hero.scss:assets/css/services-hero.css src/scss/structural/solutions-hero.scss:assets/css/solutions-hero.css src/scss/structural/services-linked-decisions.scss:assets/css/services-linked-decisions.css src/scss/structural/services-service-clusters.scss:assets/css/services-service-clusters.css src/scss/structural/services-service-tiles.scss:assets/css/services-service-tiles.css src/scss/structural/solutions-route-tiles.scss:assets/css/solutions-route-tiles.css src/scss/structural/stat-feature-bento.scss:assets/css/stat-feature-bento.css src/scss/structural/services-delivery-numbers.scss:assets/css/services-delivery-numbers.css src/scss/structural/corner-glow.scss:assets/css/corner-glow.css src/scss/structural/image-captions.scss:assets/css/image-captions.css src/scss/structural/phase-hero.scss:assets/css/phase-hero.css src/scss/structural/button-phase.scss:assets/css/button-phase.css src/scss/structural/phase-journey-nav.scss:assets/css/phase-journey-nav.css src/scss/structural/phase-services-in-phase.scss:assets/css/phase-services-in-phase.css src/scss/structural/phase-cta.scss:assets/css/phase-cta.css src/scss/structural/phase-delivery-numbers.scss:assets/css/phase-delivery-numbers.css src/scss/structural/phase-common-services.scss:assets/css/phase-common-services.css src/scss/structural/phase-support-focus.scss:assets/css/phase-support-focus.css src/scss/structural/phase-faq.scss:assets/css/phase-faq.css src/scss/structural/phase-where-to-go-next.scss:assets/css/phase-where-to-go-next.css src/scss/structural/tick-phase.scss:assets/css/tick-phase.css src/scss/structural/service-case-study.scss:assets/css/service-case-study.css src/scss/structural/solutions-case-study.scss:assets/css/solutions-case-study.css src/scss/structural/split-header-icon-card-grid.scss:assets/css/split-header-icon-card-grid.css src/scss/structural/solutions-split-faq.scss:assets/css/solutions-split-faq.css src/scss/structural/snapshot-card.scss:assets/css/snapshot-card.css src/scss/structural/legal-page.scss:assets/css/legal-page.css src/scss/structural/hero-split-form.scss:assets/css/hero-split-form.css src/scss/structural/hero-gradient-title.scss:assets/css/hero-gradient-title.css src/scss/structural/phase-link-card-grid.scss:assets/css/phase-link-card-grid.css src/scss/structural/scroll-timeline.scss:assets/css/scroll-timeline.css src/scss/structural/details-card-grid.scss:assets/css/details-card-grid.css src/scss/structural/about-culture.scss:assets/css/about-culture.css src/scss/structural/about-careers.scss:assets/css/about-careers.css", + "build:css:dev": "sass --no-source-map --no-charset --style=expanded src/scss/animations.scss:assets/css/animations.css src/scss/gsap-animations.scss:assets/css/gsap-animations.css src/scss/structural/taxonomy-filter.scss:assets/css/taxonomy-filter.css src/scss/structural/work-project-card.scss:assets/css/work-project-card.css src/scss/structural/work-archive-sections.scss:assets/css/work-archive-sections.css src/scss/structural/card-shells.scss:assets/css/card-shells.css src/scss/structural/cta-buttons.scss:assets/css/cta-buttons.css src/scss/structural/home-hero.scss:assets/css/home-hero.css src/scss/structural/work-hero.scss:assets/css/work-hero.css src/scss/structural/work-single-hero.scss:assets/css/work-single-hero.css src/scss/structural/blog-hero.scss:assets/css/blog-hero.css src/scss/structural/blog-all-articles.scss:assets/css/blog-all-articles.css src/scss/structural/blog-writing-cta.scss:assets/css/blog-writing-cta.css src/scss/structural/faq.scss:assets/css/faq.css src/scss/structural/links.scss:assets/css/links.css src/scss/structural/button-secondary.scss:assets/css/button-secondary.css src/scss/structural/featured-work.scss:assets/css/featured-work.css src/scss/structural/where-to-fit.scss:assets/css/where-to-fit.css src/scss/structural/homepage-cta.scss:assets/css/homepage-cta.css src/scss/structural/stats-bar.scss:assets/css/stats-bar.css src/scss/structural/homepage-card-rows.scss:assets/css/homepage-card-rows.css src/scss/structural/homepage-why-lightspeed.scss:assets/css/homepage-why-lightspeed.css src/scss/structural/search-results.scss:assets/css/search-results.css src/scss/structural/search-hero.scss:assets/css/search-hero.css src/scss/structural/services-hero.scss:assets/css/services-hero.css src/scss/structural/solutions-hero.scss:assets/css/solutions-hero.css src/scss/structural/services-linked-decisions.scss:assets/css/services-linked-decisions.css src/scss/structural/services-service-clusters.scss:assets/css/services-service-clusters.css src/scss/structural/services-service-tiles.scss:assets/css/services-service-tiles.css src/scss/structural/solutions-route-tiles.scss:assets/css/solutions-route-tiles.css src/scss/structural/stat-feature-bento.scss:assets/css/stat-feature-bento.css src/scss/structural/services-delivery-numbers.scss:assets/css/services-delivery-numbers.css src/scss/structural/corner-glow.scss:assets/css/corner-glow.css src/scss/structural/image-captions.scss:assets/css/image-captions.css src/scss/structural/phase-hero.scss:assets/css/phase-hero.css src/scss/structural/button-phase.scss:assets/css/button-phase.css src/scss/structural/phase-journey-nav.scss:assets/css/phase-journey-nav.css src/scss/structural/phase-services-in-phase.scss:assets/css/phase-services-in-phase.css src/scss/structural/phase-cta.scss:assets/css/phase-cta.css src/scss/structural/phase-delivery-numbers.scss:assets/css/phase-delivery-numbers.css src/scss/structural/phase-common-services.scss:assets/css/phase-common-services.css src/scss/structural/phase-support-focus.scss:assets/css/phase-support-focus.css src/scss/structural/phase-faq.scss:assets/css/phase-faq.css src/scss/structural/phase-where-to-go-next.scss:assets/css/phase-where-to-go-next.css src/scss/structural/tick-phase.scss:assets/css/tick-phase.css src/scss/structural/service-case-study.scss:assets/css/service-case-study.css src/scss/structural/solutions-case-study.scss:assets/css/solutions-case-study.css src/scss/structural/split-header-icon-card-grid.scss:assets/css/split-header-icon-card-grid.css src/scss/structural/solutions-split-faq.scss:assets/css/solutions-split-faq.css src/scss/structural/snapshot-card.scss:assets/css/snapshot-card.css src/scss/structural/legal-page.scss:assets/css/legal-page.css src/scss/structural/hero-split-form.scss:assets/css/hero-split-form.css src/scss/structural/hero-gradient-title.scss:assets/css/hero-gradient-title.css src/scss/structural/phase-link-card-grid.scss:assets/css/phase-link-card-grid.css src/scss/structural/scroll-timeline.scss:assets/css/scroll-timeline.css src/scss/structural/details-card-grid.scss:assets/css/details-card-grid.css src/scss/structural/about-culture.scss:assets/css/about-culture.css src/scss/structural/about-careers.scss:assets/css/about-careers.css", "schema:validate": "node theme-utils.mjs validate-schema", "theme:validate": "node theme-utils.mjs validate-theme", "patterns:escape": "node theme-utils.mjs escape-patterns", @@ -16,7 +16,7 @@ "lint": "npm run lint:json", "lint:json": "node --input-type=module --eval \"import { readFileSync } from 'fs'; import { glob } from 'glob'; const files = await glob(['theme.json', 'styles/**/*.json']); let ok = true; for (const f of files) { try { JSON.parse(readFileSync(f, 'utf8')); } catch (e) { console.error('Invalid JSON:', f, e.message); ok = false; } } if (ok) console.log('All JSON files are valid.'); else process.exit(1);\"", "lint:scss": "stylelint \"src/scss/**/*.scss\"", - "watch:css": "sass --watch --no-source-map --no-charset --style=expanded src/scss/animations.scss:assets/css/animations.css src/scss/gsap-animations.scss:assets/css/gsap-animations.css src/scss/structural/taxonomy-filter.scss:assets/css/taxonomy-filter.css src/scss/structural/work-project-card.scss:assets/css/work-project-card.css src/scss/structural/work-archive-sections.scss:assets/css/work-archive-sections.css src/scss/structural/card-shells.scss:assets/css/card-shells.css src/scss/structural/cta-buttons.scss:assets/css/cta-buttons.css src/scss/structural/home-hero.scss:assets/css/home-hero.css src/scss/structural/work-hero.scss:assets/css/work-hero.css src/scss/structural/work-single-hero.scss:assets/css/work-single-hero.css src/scss/structural/blog-hero.scss:assets/css/blog-hero.css src/scss/structural/blog-all-articles.scss:assets/css/blog-all-articles.css src/scss/structural/blog-writing-cta.scss:assets/css/blog-writing-cta.css src/scss/structural/faq.scss:assets/css/faq.css src/scss/structural/links.scss:assets/css/links.css src/scss/structural/button-secondary.scss:assets/css/button-secondary.css src/scss/structural/featured-work.scss:assets/css/featured-work.css src/scss/structural/where-to-fit.scss:assets/css/where-to-fit.css src/scss/structural/homepage-cta.scss:assets/css/homepage-cta.css src/scss/structural/stats-bar.scss:assets/css/stats-bar.css src/scss/structural/homepage-card-rows.scss:assets/css/homepage-card-rows.css src/scss/structural/homepage-why-lightspeed.scss:assets/css/homepage-why-lightspeed.css src/scss/structural/search-results.scss:assets/css/search-results.css src/scss/structural/search-hero.scss:assets/css/search-hero.css src/scss/structural/services-hero.scss:assets/css/services-hero.css src/scss/structural/solutions-hero.scss:assets/css/solutions-hero.css src/scss/structural/services-linked-decisions.scss:assets/css/services-linked-decisions.css src/scss/structural/services-service-clusters.scss:assets/css/services-service-clusters.css src/scss/structural/services-service-tiles.scss:assets/css/services-service-tiles.css src/scss/structural/solutions-route-tiles.scss:assets/css/solutions-route-tiles.css src/scss/structural/stat-feature-bento.scss:assets/css/stat-feature-bento.css src/scss/structural/services-delivery-numbers.scss:assets/css/services-delivery-numbers.css src/scss/structural/corner-glow.scss:assets/css/corner-glow.css src/scss/structural/image-captions.scss:assets/css/image-captions.css src/scss/structural/phase-hero.scss:assets/css/phase-hero.css src/scss/structural/button-phase.scss:assets/css/button-phase.css src/scss/structural/phase-journey-nav.scss:assets/css/phase-journey-nav.css src/scss/structural/phase-services-in-phase.scss:assets/css/phase-services-in-phase.css src/scss/structural/phase-cta.scss:assets/css/phase-cta.css src/scss/structural/phase-delivery-numbers.scss:assets/css/phase-delivery-numbers.css src/scss/structural/phase-common-services.scss:assets/css/phase-common-services.css src/scss/structural/phase-support-focus.scss:assets/css/phase-support-focus.css src/scss/structural/phase-faq.scss:assets/css/phase-faq.css src/scss/structural/phase-where-to-go-next.scss:assets/css/phase-where-to-go-next.css src/scss/structural/tick-phase.scss:assets/css/tick-phase.css src/scss/structural/service-case-study.scss:assets/css/service-case-study.css src/scss/structural/solutions-case-study.scss:assets/css/solutions-case-study.css src/scss/structural/split-header-icon-card-grid.scss:assets/css/split-header-icon-card-grid.css src/scss/structural/solutions-split-faq.scss:assets/css/solutions-split-faq.css src/scss/structural/snapshot-card.scss:assets/css/snapshot-card.css src/scss/structural/legal-page.scss:assets/css/legal-page.css src/scss/structural/hero-split-form.scss:assets/css/hero-split-form.css src/scss/structural/hero-gradient-title.scss:assets/css/hero-gradient-title.css src/scss/structural/phase-link-card-grid.scss:assets/css/phase-link-card-grid.css src/scss/structural/scroll-timeline.scss:assets/css/scroll-timeline.css src/scss/structural/details-card-grid.scss:assets/css/details-card-grid.css src/scss/structural/about-culture.scss:assets/css/about-culture.css" + "watch:css": "sass --watch --no-source-map --no-charset --style=expanded src/scss/animations.scss:assets/css/animations.css src/scss/gsap-animations.scss:assets/css/gsap-animations.css src/scss/structural/taxonomy-filter.scss:assets/css/taxonomy-filter.css src/scss/structural/work-project-card.scss:assets/css/work-project-card.css src/scss/structural/work-archive-sections.scss:assets/css/work-archive-sections.css src/scss/structural/card-shells.scss:assets/css/card-shells.css src/scss/structural/cta-buttons.scss:assets/css/cta-buttons.css src/scss/structural/home-hero.scss:assets/css/home-hero.css src/scss/structural/work-hero.scss:assets/css/work-hero.css src/scss/structural/work-single-hero.scss:assets/css/work-single-hero.css src/scss/structural/blog-hero.scss:assets/css/blog-hero.css src/scss/structural/blog-all-articles.scss:assets/css/blog-all-articles.css src/scss/structural/blog-writing-cta.scss:assets/css/blog-writing-cta.css src/scss/structural/faq.scss:assets/css/faq.css src/scss/structural/links.scss:assets/css/links.css src/scss/structural/button-secondary.scss:assets/css/button-secondary.css src/scss/structural/featured-work.scss:assets/css/featured-work.css src/scss/structural/where-to-fit.scss:assets/css/where-to-fit.css src/scss/structural/homepage-cta.scss:assets/css/homepage-cta.css src/scss/structural/stats-bar.scss:assets/css/stats-bar.css src/scss/structural/homepage-card-rows.scss:assets/css/homepage-card-rows.css src/scss/structural/homepage-why-lightspeed.scss:assets/css/homepage-why-lightspeed.css src/scss/structural/search-results.scss:assets/css/search-results.css src/scss/structural/search-hero.scss:assets/css/search-hero.css src/scss/structural/services-hero.scss:assets/css/services-hero.css src/scss/structural/solutions-hero.scss:assets/css/solutions-hero.css src/scss/structural/services-linked-decisions.scss:assets/css/services-linked-decisions.css src/scss/structural/services-service-clusters.scss:assets/css/services-service-clusters.css src/scss/structural/services-service-tiles.scss:assets/css/services-service-tiles.css src/scss/structural/solutions-route-tiles.scss:assets/css/solutions-route-tiles.css src/scss/structural/stat-feature-bento.scss:assets/css/stat-feature-bento.css src/scss/structural/services-delivery-numbers.scss:assets/css/services-delivery-numbers.css src/scss/structural/corner-glow.scss:assets/css/corner-glow.css src/scss/structural/image-captions.scss:assets/css/image-captions.css src/scss/structural/phase-hero.scss:assets/css/phase-hero.css src/scss/structural/button-phase.scss:assets/css/button-phase.css src/scss/structural/phase-journey-nav.scss:assets/css/phase-journey-nav.css src/scss/structural/phase-services-in-phase.scss:assets/css/phase-services-in-phase.css src/scss/structural/phase-cta.scss:assets/css/phase-cta.css src/scss/structural/phase-delivery-numbers.scss:assets/css/phase-delivery-numbers.css src/scss/structural/phase-common-services.scss:assets/css/phase-common-services.css src/scss/structural/phase-support-focus.scss:assets/css/phase-support-focus.css src/scss/structural/phase-faq.scss:assets/css/phase-faq.css src/scss/structural/phase-where-to-go-next.scss:assets/css/phase-where-to-go-next.css src/scss/structural/tick-phase.scss:assets/css/tick-phase.css src/scss/structural/service-case-study.scss:assets/css/service-case-study.css src/scss/structural/solutions-case-study.scss:assets/css/solutions-case-study.css src/scss/structural/split-header-icon-card-grid.scss:assets/css/split-header-icon-card-grid.css src/scss/structural/solutions-split-faq.scss:assets/css/solutions-split-faq.css src/scss/structural/snapshot-card.scss:assets/css/snapshot-card.css src/scss/structural/legal-page.scss:assets/css/legal-page.css src/scss/structural/hero-split-form.scss:assets/css/hero-split-form.css src/scss/structural/hero-gradient-title.scss:assets/css/hero-gradient-title.css src/scss/structural/phase-link-card-grid.scss:assets/css/phase-link-card-grid.css src/scss/structural/scroll-timeline.scss:assets/css/scroll-timeline.css src/scss/structural/details-card-grid.scss:assets/css/details-card-grid.css src/scss/structural/about-culture.scss:assets/css/about-culture.css src/scss/structural/about-careers.scss:assets/css/about-careers.css" }, "devDependencies": { "@axe-core/playwright": "^4.13.0", diff --git a/patterns/hero/hero-split-photo.php b/patterns/hero/hero-split-photo.php new file mode 100644 index 0000000..d00a9ff --- /dev/null +++ b/patterns/hero/hero-split-photo.php @@ -0,0 +1,69 @@ + + +
+ + +
+ + is_registered( 'yoast-seo/breadcrumbs' ) ) : ?> + + + + +
+ + +
+ + +
+ + + +

+ +
+ + + +

+ + + +
+ +

+ +
+ +
+ + + +
+ +
<?php echo esc_attr__( 'The LightSpeed team together', 'ls-theme' ); ?>
+ +
+ +
+ +
+ +
+ diff --git a/patterns/sections/intro-icon-card-trio.php b/patterns/sections/intro-icon-card-trio.php new file mode 100644 index 0000000..2db61d6 --- /dev/null +++ b/patterns/sections/intro-icon-card-trio.php @@ -0,0 +1,100 @@ + 'users-three', + 'title' => __( 'AI Study Groups & Hackathons', 'ls-theme' ), + 'description' => __( 'Dedicated time to experiment with new AI capabilities, APIs, and prompt engineering.', 'ls-theme' ), + ), + array( + 'icon' => 'graduation-cap', + 'title' => __( 'Mentorship', 'ls-theme' ), + 'description' => __( 'We actively support junior developers through structured internships and senior mentorship.', 'ls-theme' ), + ), + array( + 'icon' => 'book', + 'title' => __( 'Continuous Learning Allowances', 'ls-theme' ), + 'description' => __( 'We provide resources to help you master GitHub, Copilot, and modern block theme practices.', 'ls-theme' ), + ), +); +?> + +
+ + +
+ + +
+ + +
+ + + +

+ +
+ + + +

+ + + +
+ +

+ + + +

+ +
+ +
+ + + +
+ + +
+ +
+ +
+ + + +
+ +

+ + + +

+ +
+ +
+ + +
+ +
+ +
+ diff --git a/patterns/sections/numbered-bento-cards.php b/patterns/sections/numbered-bento-cards.php new file mode 100644 index 0000000..109a23a --- /dev/null +++ b/patterns/sections/numbered-bento-cards.php @@ -0,0 +1,135 @@ + '01', + 'text' => __( 'Modern WordPress developers', 'ls-theme' ), + 'colour' => 'var(--wp--custom--color--text--brand)', + 'span' => 4, + 'size' => '600', + ), + array( + 'number' => '02', + 'text' => __( 'Block-theme and plugin builders', 'ls-theme' ), + 'colour' => 'var(--wp--custom--color--accent--warm)', + 'span' => 2, + 'size' => '400', + ), + array( + 'number' => '03', + 'text' => __( 'Designers who think in systems, not just screens', 'ls-theme' ), + 'colour' => 'var(--wp--custom--color--phase--grow)', + 'span' => 2, + 'size' => '400', + ), + array( + 'number' => '04', + 'text' => __( 'People comfortable with async work', 'ls-theme' ), + 'colour' => 'var(--wp--custom--color--phase--evolve)', + 'span' => 2, + 'size' => '400', + ), + array( + 'number' => '05', + 'text' => __( 'People who can work independently without disappearing', 'ls-theme' ), + 'colour' => 'var(--wp--custom--color--accent--warm)', + 'span' => 2, + 'size' => '400', + ), + array( + 'number' => '06', + 'text' => __( 'People who are curious about AI-assisted workflows but still care about judgment, craft and review', 'ls-theme' ), + 'colour' => 'var(--wp--custom--color--text--brand)', + 'span' => 6, + 'size' => '400', + ), +); +?> + +
+ + +
+ + +
+ + +
+ + + +

+ +
+ + + +

+ +
+ + + +
+ + 'article', + 'className' => 'is-style-card-plain ls-bento__card' . $ls_bento_modifier, + 'style' => array( + 'layout' => array( 'columnSpan' => $ls_bento_card['span'] ), + 'spacing' => array( 'blockGap' => 'var:preset|spacing|40' ), + ), + 'layout' => array( + 'type' => 'flex', + 'orientation' => $ls_bento_is_wide ? 'horizontal' : 'vertical', + 'flexWrap' => 'nowrap', + ), + ); + $ls_bento_min_height = $ls_bento_is_wide ? '0px' : '200px'; + + $ls_bento_attrs['style']['dimensions'] = array( 'minHeight' => $ls_bento_min_height ); + if ( $ls_bento_is_wide ) { + $ls_bento_attrs['layout']['verticalAlignment'] = 'center'; + } else { + $ls_bento_attrs['layout']['verticalAlignment'] = 'space-between'; + } + ?> + +
+ +

+ + + +

+ +
+ + +
+ +
+ +
+ diff --git a/patterns/sections/split-text-pair-statement.php b/patterns/sections/split-text-pair-statement.php new file mode 100644 index 0000000..d307242 --- /dev/null +++ b/patterns/sections/split-text-pair-statement.php @@ -0,0 +1,75 @@ + __( 'Why join LightSpeed', 'ls-theme' ), + 'text' => __( 'LightSpeed is not trying to build a culture around noise. We care about doing good work, improving over time, and using modern tools in ways that make the team stronger. If you like clean systems, practical delivery and open-source values, you will probably feel more at home here than in a company chasing hype.', 'ls-theme' ), + ), + array( + 'heading' => __( 'How we work', 'ls-theme' ), + 'text' => __( 'We are a remote-first team, and have been since 2014. That means flexible schedules, but it also means clear expectations. We document work, define review points, rely on shared tools, and expect people to communicate well.', 'ls-theme' ), + ), +); + +$ls_goal_html = sprintf( + /* translators: 1: struck-through phrase, 2: highlighted phrase. The line break between the two sentences is intentional. */ + __( 'The goal is not %1$s.
The goal is %2$s.', 'ls-theme' ), + '' . esc_html__( 'constant visibility', 'ls-theme' ) . '', + '' . esc_html__( 'dependable progress', 'ls-theme' ) . '' +); +?> + +
+ + +
+ + +
+ + + +
+ + +
+ + + +

+ +
+ + + +

+ +
+ + +
+ + + +
+ +

+ +
+ +
+ +
+ diff --git a/patterns/sections/statement-lede.php b/patterns/sections/statement-lede.php new file mode 100644 index 0000000..1678353 --- /dev/null +++ b/patterns/sections/statement-lede.php @@ -0,0 +1,46 @@ + + +
+ + +
+ + +
+ + + +

+ +
+ + + +

+ + + +
+ +

+ +
+ +
+ +
+ diff --git a/src/scss/structural/about-careers.scss b/src/scss/structural/about-careers.scss new file mode 100644 index 0000000..21e6994 --- /dev/null +++ b/src/scss/structural/about-careers.scss @@ -0,0 +1,68 @@ +/********** About Careers (About Careers page patterns) **********/ + +/* + * Everything the block attributes can express (type, colours, spacing, the Card - Plain shells, the + * bento grid and its column spans and the icon wells) is authored in + * the pattern files. This file owns only what JSON cannot: a measure in ch, text-wrap, inline-style + * overrides on small screens and the grid reflow. The mobile rules use WordPress's own breakpoints + * (781.98px for the columns stacking, 599.98px for the small-screen step). + */ + +// JSON limitation: max-width in ch and text-wrap have no heading-block key. They keep the very large +// statement breaking onto short lines. The extra class lifts it above core's constrained-layout +// max-width rule, which loads later at equal specificity — see AGENTS.md Theme-First Approach +.wp-block-heading.ls-careers-statement { + max-width: 18ch; + text-wrap: balance; +} + +// JSON limitation: text-wrap has no paragraph-block key — see AGENTS.md Theme-First Approach +.ls-careers-goal { + text-wrap: balance; +} + +@media (max-width: 781.98px) { + // JSON limitation: a core grid has one column count for every width, and the child column spans + // are generated single-class rules; the two-class selectors here override both at the stacking + // breakpoint — see AGENTS.md Theme-First Approach + .ls-bento.wp-block-group { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + .ls-bento > .ls-bento__card { + grid-column: span 1; + } + + // The feature card takes a full row here, so the four two-column cards after it fill two whole rows + // and the wide card closes the grid without leaving an empty cell. The cards are picked by class, + // not position, so reordering or deleting a card in the editor does not move the spans. + .ls-bento > .ls-bento__card--feature, + .ls-bento > .ls-bento__card--wide { + grid-column: span 2; + } +} + +@media (max-width: 599.98px) { + .ls-bento.wp-block-group { + grid-template-columns: minmax(0, 1fr); + } + + .ls-bento > .ls-bento__card, + .ls-bento > .ls-bento__card--feature, + .ls-bento > .ls-bento__card--wide { + grid-column: auto; + } + + // JSON limitation: inline min-height needs !important to drop on small screens — see AGENTS.md + // Theme-First Approach + .ls-bento__card { + min-height: 0 !important; + } + + // JSON limitation: the full-width card's row layout is a generated container class, so turning it + // into a column on small screens needs a breakpoint rule — see AGENTS.md Theme-First Approach + .ls-bento > .ls-bento__card--wide { + align-items: flex-start; + flex-direction: column; + } +}