Commit Graph

16 Commits

Author SHA1 Message Date
Kunthawat Greethong
5ab00efd15 fix(home): separate mega-cta from tile-link-overlay (was overlapping with objective)
Before: .tile-link-overlay contained the .mega-cta text. Both overlay and .mega-objective were positioned at the bottom of the tile, causing visual overlap.
After: .mega-cta is a normal-flow <span> in tile-body (pushed to bottom via margin-top: auto). .tile-link-overlay is now an empty click target (no inner content, no padding, no flex).
2026-06-10 10:48:05 +07:00
Kunthawat Greethong
a7a0135727 feat(home): service tiles new colors + expanded content with bullets
Changes:
- Colors changed from yellow/purple-soft/mint/soft (same as problem section)
  → teal / coral / dark / purple (visually distinct from problems)
- Each tile now has 3 bullet points under subtitle to fill tile height
- Bullet styles: dot markers with currentColor at 0.4 opacity
- Text light (white) on dark surfaces (teal, coral, dark, purple)
- bullet list: mega-bullets class with proper spacing
2026-06-10 10:39:04 +07:00
Kunthawat Greethong
a1b1b16288 feat(portfolio): move what_we_did to hover overlay + show 4 specific clients
Per user spec:
1. Home portfolio now shows only 4 specific clients in order:
   Dataroot → Jet Industries → ทวนทอง 99 → สำนักงานกฎหมาย ตถาตา
   (was filtering by featured: true, now filters by slug)

2. PortfolioCard: what_we_did moved from always-visible to
   yellow hover overlay (shown above "เยี่ยมชมเว็บไซต์" button).
   All cards now have uniform layout:
   - Default: image + name + industry + category + result
   - On hover (desktop): overlay shows what_we_did text + visit button
   - No hover effect on mobile (tap navigates to URL)

3. Added what_we_did + result to 3 cards that were missing them:
   - Jet Industries, ทวนทอง 99, สำนักงานกฎหมาย ตถาตา

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-10 09:55:50 +07:00
Kunthawat Greethong
0ff6ae9020 content(home): simplify hero copy to 3 punchy lines
- badge: "เราจะช่วยคุณเพิ่มกำไร" → "Moreminimore"
- title: "เราช่วยวางระบบงาน..." → "เราจะช่วยคุณเพิ่มกำไร"
- subtitle: "รับทำเว็บ ที่ปรึกษา..." → "เราช่วยวางระบบงาน และใช้สถิติวางกลยุทธ์ทางการตลาด"

Update Hero.astro default props to match so other pages
that consume <Hero /> without props get the same copy.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-09 21:17:16 +07:00
Kunthawat Greethong
f47949c4b3 content(home): X1+X2 hero text + 2-col hero with pain stack + 2x2 services
Per user spec, restructured home page:

1. Hero copy (X1 + X2):
   - badge: "เราจะช่วยคุณเพิ่มกำไร"
   - title: "เราช่วยวางระบบงาน และใช้สถิติวางกลยุทธ์ทางการตลาด"
   - subtitle unchanged
   - replaced old "เว็บขายไม่ได้ โฆษณาเปลือง..." headline

2. Hero 2-column layout (text | pain stack):
   - Left 50%: badge, title, accent line, subtitle, CTA
   - Right 50%: 4 pain cards in vertical stack with colored
     surfaces (yellow, purple-soft, mint, teal) — staggered
     fade-in animation, each card has eyebrow "คุณกำลังเจอปัญหา"
     + pain question
   - Pain cards on right: "ยิ่งขาย กำไรยิ่งลด?", "มีเว็บไซต์
     เหมือนไม่มี?", "พนักงานทำงานได้น้อยกว่าที่ต้องการ?",
     "เอา AI มาให้ใช้ แต่งานไม่ได้มากขึ้นตามที่คิด?"
   - Responsive: stacks vertically on mobile (<1024px)
   - Pain card surfaces match bento tile vocabulary

3. Services section: 4x1 → 2x2 layout:
   - Each tile now span 6 (6+6 per row, 2 rows)
   - 4 tiles total: AI Consult (yellow), Automation (purple-soft),
     Marketing (mint), Web (soft)

4. Section title (X2):
   - "เริ่มจากอันที่ปวดที่สุด ค่อยขยายไปอันอื่น"
     → "เลือกบริการที่ตรงกับปัญหาของคุณ"

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-09 21:13:43 +07:00
Kunthawat Greethong
c92d446ff7 content(home+services): 19 text updates per user spec
Home (index.astro) updates:
- Section title: "มีวิธีแก้ที่เจาะจง" → "มีวิธีแก้ที่ต่างกัน"
- Problem 1 (โฆษณา): symptom "งบหมดไปกับคนที่ไม่ซื้อ" → "แต่คนที่ไม่ซื้อ"
- Problem 1 (โฆษณา): fix expanded with "ถ้ายังไม่มีการวางระบบเก็บข้อมูล..." caveat
- Problem 2 (เว็บ): symptom removed "ตะกร้าค้าง"
- Problem 2 (เว็บ): fix expanded with conditional "กรณีที่เว็บไม่มีโค้ดเก็บสถิติ..."
- Problem 3 (งานซ้ำ): title "ใช้เวลาคนเป็นชั่วโมง" → "เสียเวลาเป็นชั่วโมง"
- Problem 3 (งานซ้ำ): cause "ระบบเก่า" → "ระบบไม่มีการเชื่อม"
- Problem 3 (งานซ้ำ): fix expanded with "ลดเวลาจากชั่วโมงเป็นนาที"
- Problem 4 (AI): title expanded with cost context
- Problem 4 (AI): cause expanded with "พนักงานไม่เข้าใจ..."
- Problem 4 (AI): fix expanded with "วางระบบ AI Agent ให้มี skill"
- CTA: "ถาม 5 ข้อ...ทำได้หรือทำไม่ได้" → "แนะนำแนวทางเบื้องต้น...อะไรควรทำหรือไม่ควรทำ"

Service tile eyebrows (home):
- AI Consult → ที่ปรึกษาด้าน AI
- Automation Consult → วางระบบ Automation
- Marketing Consult → ที่ปรึกษาการตลาดออนไลน์
- Web Development → พัฒนาเว็บไซต์

Service tile subtitles + objectives (home) — per spec.

Service MDX content (affects service detail page + services/index):
- ai-consult-new.mdx: badge "AI Consult" → "ที่ปรึกษาด้าน AI"
- automation-new.mdx: badge "Automation Consult" → "วางระบบ Automation"
- marketing-new.mdx: badge "Marketing Consult" → "ที่ปรึกษาการตลาดออนไลน์", title → "Online Marketing Consult"
- webdev-new.mdx: badge "Web Development" → "พัฒนาเว็บไซต์"

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-09 20:52:51 +07:00
Kunthawat Greethong
bd1c979f1a fix(home): remove <a> wrapper around bento-tile (was breaking grid)
The home service section had each bento-tile wrapped in an
<a href="/services/..."> tag. This caused two problems:

1. The <a> became the grid item instead of the .bento-tile,
   so the .bento-tile's grid-column: span 3 was ignored.
   The <a> defaulted to display: block and stretched to
   100% width, so all 4 tiles in a row had the same wide
   width — but the grid was no longer dividing them equally.

2. Astro's scoped CSS only applies to elements with the
   matching data-astro-cid attribute. The <a> wrapper had
   its own scope, and the .bento-grid > a selector wasn't
   styled — so the grid layout didn't propagate correctly.

Fix: remove the <a> wrapper. Make the whole tile clickable
by adding an absolutely-positioned <a class="tile-link-overlay">
inside the tile (covers the entire tile, sits behind text via
z-index). The .bento-tile is now a direct child of .bento-grid
and grid-column: span 3 works as expected.

Result: 4 tiles width 3/12 each, exactly filling one row,
clickable from anywhere on the tile.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-09 20:00:52 +07:00
Kunthawat Greethong
43f609a794 fix(home): equal-height service tiles + dedupe services
Service section on home page had two issues:
1. Tiles were different heights (longer content = taller tile)
   because .bento-tile had no min-height
2. Two service tiles showed the same title (AI Consult + Automation
   Consult) because src/content/services/ has 4 old + 4 -new mdx
   files; .slice(0, 4) grabbed the first 4 alphabetically which
   contained duplicate base slugs

Fixes:
- Add min-height: 380px + flex column to BentoTile so all tiles
  in a row are visually equal regardless of content length
- Add dedupedServices helper in index.astro that groups services
  by base slug and prefers the -new version when both exist
- Use dedupedServices.slice(0, 4) instead of services.slice(0, 4)

Result: 4 unique services (ai-consult-new, automation-new,
marketing-new, webdev-new) at equal height, filling the row.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-09 13:40:42 +07:00
Kunthawat Greethong
b5be45bcd6 feat(pages): Bento Grid redesign across all pages
Apply Bento Grid + decorative parallax orb system from about.astro
to all remaining pages (home, services, portfolio, faq, contact,
terms, privacy, blog list, blog detail, services detail).

Layout changes (consistent across all pages):
- Main content sections use <BentoGrid> + <BentoTile>
- 2-3 <DecoOrb> per page for decorative parallax (no parallax blobs
  behind text — orbs are pure decoration, z-index: 0, pointer-events: none)
- Surface variants: white, soft, yellow, purple-soft, teal, mint, dark
  (rotated across pages for visual variety)
- Asymmetric span strategy (8+4, 7+5, 6+6) instead of flat grids
- Process sections use clean 4x1 grid
- Pull quote + yellow CTA kept as-is (standalone sections)

Content rules preserved:
- All Thai content kept verbatim
- No fabricated statistics
- No emoji icons (use text numerals 01 02 03 04)
- All design tokens from global.css (no hardcoded hex)
- Existing global classes (.container, .section, .btn, .section-badge,
  .section-title, .cta-section, etc.) reused — no design system break

Build verified: 22 pages built in 1.80s, no errors.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-08 23:30:48 +07:00
Macky
3f1c0061c7 refactor: remove EmDash CMS, hardcode static page content
- Remove EmDash: uninstalled emdash + @emdash-cms/* packages
- Delete src/utils/site-identity.ts (only file importing emdash)
- Delete src/live.config.ts (emdash stub)
- Delete src/content/pages/ (6 MD files: home/about/services/contact/faq/portfolio)
- Remove 'pages' collection from src/content.config.ts
- Hardcode home content as constants in src/pages/index.astro
- Fix duplicate 'megaphone' key in icon-paths.ts (pre-existing bug blocking build)

Home page redesign:
- New hero policy: 'เพิ่มยอดขาย ลดต้นทุน ลดเวลา' (replaces stats claim)
- Remove stats section (no claims until validated)
- 12 problem cards in 4 service buckets (3 each), outline-badge Lucide icons
- New pull quote: 'กำไรที่มากขึ้นของลูกค้า'
- Fix portfolio preview bug (was loading blog collection, now loads portfolio)

About page:
- Sync hero with new policy
- New 'นโยบายของเรา' section in story
- New dark pull-quote band with mission statement

Hero component:
- Remove hard-coded trust strip (50+/40+/5+/100% stats)
- Remove hard-coded secondary CTA
- Replace with named slots so callers can opt in

CLAUDE.md: updated to reflect new architecture (no CMS, static-only)

Verified: npm run build clean (18 pages, 1.74s)
2026-06-05 14:09:42 +07:00
Macky
0f79808a43 feat: replace all emojis with professional lucide-style SVG icon library
Build a curated 50-icon lucide library (Icon.astro + icon-paths.ts) and
replace every emoji across the site (~50 occurrences in 9 files):
- index.astro: 3 problem cards (message, trendingDown, globe)
- about.astro: 4 value cards (target, users, clock, shield)
- portfolio.astro: 7 industry filter buttons (factory, package, scale,
  graduationCap, trendingUp, pen, shoppingCart, layers)
- services/[slug].astro: ~25 feature/target/service icons
- services/index.astro: 6 decision-row tags + phone icon in CTA
- faq.astro: 5 category icons, 3 channel cards
- contact.astro: 3 channel picker, 5 info column, form options data-driven,
  checkCircle success
- Footer.astro: 3 contact icons (phone, mail, mapPin)
- Hero.astro: award icon in trust strip

Add icon wrapper styles to global.css (.problem-icon, .value-icon,
.channel-pick-icon, .info-icon, .channel-icon, .category-icon,
.feature-icon, .target-icon, .success-icon, .contact-icon, .btn-icon,
.filter-icon) — yellow square/circle backgrounds, dark text, consistent
sizing.

Build: 18 pages, 0 errors
2026-06-04 09:20:43 +07:00
Macky
0855e3d77b feat: light theme page templates + integration with new content collections
- All 11 page templates rewritten for light theme
- index.astro: 8 sections (hero, stats yellow band, problem cards,
  services mega-grid, black pull-quote, blog preview, yellow CTA)
- about.astro: story + values (4 dark-icon cards) + process 4-step
- contact.astro: 4 channel picker cards + 8-field form (added budget field)
  + 3-step 'what happens next' + pre-submit FAQ + yellow final CTA
- faq.astro: dynamic category rendering from content/faq collection
  (5 categories, 20 Q&A) + tag cloud + 3 channel cards
- portfolio.astro: industry filter bar (sticky) + 9 items with new
  schema (industry, what_we_did, result fields) + 'ดีลที่เราเลือก' section
- services/index.astro: decision table (6 rows, scannable in 30s)
  + 3 pricing tiers (Starter/Business/Enterprise) + add-on chips
- services/[slug].astro: 4 service types with light hero + pricing +
  tech options + AI features + 6-FAQ per service
- blog/index.astro: featured + 4-card grid from content collection
- blog/[slug].astro: 2-column with sidebar (about, contact, related)
- privacy.astro + terms.astro: legal content, light theme
- All form posts go to setTimeout success (placeholder for backend wire)
2026-06-03 14:15:33 +07:00
Kunthawat Greethong
494b50925e Add animated background to homepage hero
- Animated floating orbs with blur effect
- Floating particles rising animation
- Moving gradient lines
- Grid pattern with subtle movement
- Yellow glow effects on dark background
2026-05-22 12:40:01 +07:00
Kunthawat Greethong
41e334a703 Magazine style homepage - Phase 1
- Hero section with decorative elements and stats card
- Services section with asymmetric magazine grid
- Featured service card with dark background
- Pull quote editorial section
- Portfolio masonry grid layout
- Blog editorial layout with featured post
- High contrast CTA section
2026-05-21 15:18:37 +07:00
Kunthawat Greethong
b9cd01a55f Phase 1: Homepage seamless design - add gradient transitions
- Added gradient transitions between sections in global.css
- Portfolio section now has gradient-top (dark to white fade)
- Blog section now has gradient-bottom (white fade from dark)
- Reduced portfolio overlay opacity from 0.85 to 0.65
- Added border to blog cards for white-on-white visibility
- Blog cards now have primary color accent on hover
2026-05-21 14:29:31 +07:00
Kunthawat Greethong
0dcaf2f253 Before EmDash migration - plain Astro site with 22 pages, unique hero layouts per page, Thai content 2026-05-06 09:55:37 +07:00