Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions .stylelintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"rules": {
"declaration-block-no-duplicate-properties": [true, { "ignore": ["consecutive-duplicates-with-different-values"] }],
"no-duplicate-selectors": [true, { "severity": "warning" }],
"block-no-empty": true
},
"ignoreFiles": [
"themes/beaver/assets/css/vendors/**",
"themes/beaver/assets/css/586.css",
"themes/beaver/assets/css/style.css",
"themes/beaver/assets/css/theme-main.css",
"themes/beaver/assets/css/component-bundle.css",
"themes/beaver/assets/css/legacy-theme-skin.css",
"themes/beaver/assets/css/critical/fl-*.css",
"themes/beaver/assets/css/foundations/fl-builder-common-base.css"
]
}
1 change: 1 addition & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@ Follow official methodology from `/knowledge/`:

## 📁 Workflow Pointers

- **New page (paved path)**: `docs/workflows/new-page.md` - starter template, component reuse, slice recipe, traps
- CSS consolidation rules: `docs/workflows/css-consolidation.md`
- Blog pipeline: `docs/workflows/blog-pipeline.md`
- LinkedIn pipeline: `docs/workflows/linkedin-post-pipeline.md` (Paul Keen voice rules, AI score rubric, save-location convention)
Expand Down
Binary file modified bun.lockb
Binary file not shown.
1 change: 1 addition & 0 deletions docs/workflows/new-page.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ in production only — the visible-skip-link class of bug.
## 7. Verify

```
bun run lint:css # stylelint the hand-maintained layer
bin/qtest <name> # fast scoped gate (build + screenshots + guards)
bin/rake test:critical # before commit
bin/test && bin/dtest # both platforms before the PR
Expand Down
2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
"version": "1.0.0",
"description": "JetThoughts Hugo site with comprehensive build validation and zero-defect configuration",
"scripts": {
"lint:css": "stylelint \"themes/beaver/assets/css/pages/*.css\" \"themes/beaver/assets/css/components/*.css\"",
"build": "hugo",
"build:production": "hugo --minify --gc --cleanDestinationDir --environment production",
"build:preview": "hugo --buildDrafts --buildFuture",
Expand Down Expand Up @@ -30,6 +31,7 @@
"postcss-import": "^16.1.1",
"postcss-mixins": "^12.1.2",
"postcss-nested": "^7.0.2",
"stylelint": "^17.14.0",
"surge": "^0.27.4"
},
"dependencies": {
Expand Down
30 changes: 30 additions & 0 deletions test/unit/paved_path_guard_test.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# frozen_string_literal: true

require "test_helper"

# Paved-path consistency guard (Phase E): the new-page checklist
# (docs/workflows/new-page.md) requires every page bundle to be wired into
# the fast gate and the ownership map. This test fails when a page CSS file
# is added without those entries.
class PavedPathGuardTest < Minitest::Test
REPO_ROOT = File.expand_path("../..", __dir__)

def page_keys
Dir.glob(File.join(REPO_ROOT, "themes/beaver/assets/css/pages/*.css"))
.map { |f| File.basename(f, ".css") }
end

def test_every_page_css_has_a_qtest_mapping
qtest = File.read(File.join(REPO_ROOT, "bin/qtest"))
missing = page_keys.reject { |k| qtest.include?(%("#{k}")) }
assert_empty missing,
"pages/*.css without a bin/qtest PAGE_TESTS entry (see docs/workflows/new-page.md step 6)"
end

def test_every_page_css_is_in_the_ownership_map
map = File.read(File.join(REPO_ROOT, "docs/projects/2509-css-migration/css-bundle-ownership-map.md"))
missing = page_keys.reject { |k| map.include?(k) }
assert_empty missing,
"pages/*.css missing from css-bundle-ownership-map.md (see docs/workflows/new-page.md step 6)"
end
end
46 changes: 0 additions & 46 deletions themes/beaver/assets/css/components/c-cta-blocks.css
Original file line number Diff line number Diff line change
Expand Up @@ -29,52 +29,6 @@
position: relative;
padding: 60px 0;
}

/* CTA Column Group */
.c-cta-blocks__column-group {
/* Inherits from FL-Builder .fl-col-group */
}

/* CTA Content Column */
.c-cta-blocks__content-column {
/* Inherits from FL-Builder .fl-col */
}

/* CTA Heading Element */
.c-cta-blocks__heading {
/* Extends existing .c-cta-section__heading styling */
}

/* CTA Description Element */
.c-cta-blocks__description {
/* Extends existing .c-cta-section__description styling */
}

/* CTA Button Wrapper Element */
.c-cta-blocks__button {
/* Extends existing .c-cta-section__button styling */
}

/* CTA Intro Text Element */
.c-cta-blocks__intro-text {
/* Extends existing .c-contact-section__intro-text styling */
}

/* CTA Spacer Element */
.c-cta-blocks__spacer {
/* Extends existing .c-contact-section__spacer styling */
}

/* Contact CTA Variant Modifier */
.c-cta-blocks--contact {
/* Contact-specific styling (e.g., blue-border variant) */
}

/* Standard CTA Variant Modifier */
.c-cta-blocks--standard {
/* Standard CTA styling (e.g., Talk to Expert variant) */
}

/* CTA Button Alignment - Header Contact Button */
.fl-node-header-nav-contat-us-btn-nested .fl-button-wrap {
text-align: right;
Expand Down
40 changes: 0 additions & 40 deletions themes/beaver/assets/css/components/c-social-share.css
Original file line number Diff line number Diff line change
@@ -1,28 +1,3 @@
/* ========================================
Social Share Component (c-social-share)
BEM Convention - Phase 2 Migration
======================================== */

/* CRITICAL SPRINT 1 OBJECTIVE: Extract 177 social share patterns
Source: 930 social patterns found across CSS files
Target: c-social-share BEM component architecture

Pattern Categories:
- Social icons and styling
- Share button layouts
- Social media widgets
- Platform-specific styles (Facebook, Twitter, LinkedIn, Instagram)
- Animation and hover states
- Responsive social layouts
*/

/* ========================================
Base Social Share Component
======================================== */

.c-social-share {
/* Base social share container */
}

/* Social share list/grid layout */
.c-social-share__list {
Expand All @@ -31,27 +6,13 @@
margin: 0;
padding: 0;
}

.c-social-share__item {
/* Individual social share item */
}

.c-social-share__link {
/* Social share link styling */
display: inline-flex;
align-items: center;
justify-content: center;
text-decoration: none;
}

.c-social-share__icon {
/* Social share icon base styles */
}

.c-social-share__label {
/* Social share label text */
}

/* ========================================
Social Share Layout Modifiers
======================================== */
Expand Down Expand Up @@ -256,7 +217,6 @@
/* Author social styling */
.c-social-share--author .c-social-share__item {
display: inline-block;
margin-top: 0;
margin-right: 10px;
margin-top: 10px !important;
}
Expand Down
16 changes: 0 additions & 16 deletions themes/beaver/assets/css/components/info-card.css
Original file line number Diff line number Diff line change
Expand Up @@ -49,29 +49,13 @@
height: auto;
max-width: 100%;
}



.jt-info-card .pp-infobox:hover .pp-infobox-image img {
}



.jt-info-card .pp-infobox .animated {
-webkit-animation-duration: 500ms;
-moz-animation-duration: 500ms;
-o-animation-duration: 500ms;
-ms-animation-duration: 500ms;
animation-duration: 500ms;
}



.jt-info-card .pp-infobox-wrap .layout-3-wrapper, .jt-info-card .pp-infobox-wrap .layout-4-wrapper {
}



.jt-info-card .pp-infobox-wrap .layout-1 .pp-heading-wrapper, .jt-info-card .pp-infobox-wrap .layout-2 .pp-heading-wrapper {
display: flex;
align-items: center;
Expand Down
Loading
Loading