feat: replace literal decorations with AbstractBore and AbstractTrench
Former-commit-id: 4f7c5fcc7203aa4a36aabd8ffc13cf9f28a0f77a
This commit is contained in:
@@ -7,8 +7,8 @@ import { useState, useEffect } from 'react';
|
||||
import { Button } from '@/components/ui/Button';
|
||||
import { HoverShineOverlay } from '@/components/ui/HoverShineOverlay';
|
||||
import { StratumLines } from '@/components/ui/decorations/StratumLines';
|
||||
import { DrillBitSpinner } from '@/components/ui/decorations/DrillBitSpinner';
|
||||
import { DrillTeeth } from '@/components/ui/decorations/DrillTeeth';
|
||||
import { AbstractBore } from '@/components/ui/decorations/AbstractBore';
|
||||
import { AbstractTrench } from '@/components/ui/decorations/AbstractTrench';
|
||||
|
||||
interface CompetenceBentoGridProps {
|
||||
badge?: string;
|
||||
@@ -170,15 +170,10 @@ export function CompetenceBentoGrid(props: CompetenceBentoGridProps) {
|
||||
})}
|
||||
</div>
|
||||
</div>
|
||||
{/* Decorative: large abstract drill bit spinning slowly in background */}
|
||||
<div className="absolute top-1/2 -translate-y-1/2 -right-48 pointer-events-none opacity-[0.03]">
|
||||
<DrillBitSpinner size={600} duration={25} glow={false} />
|
||||
</div>
|
||||
{/* Decorative: abstract earth strata / excavation layers */}
|
||||
<StratumLines placement="bottom-left" invert />
|
||||
<StratumLines placement="bottom-right" invert />
|
||||
{/* Organic wave divider */}
|
||||
<DrillTeeth position="bottom" fill="var(--color-neutral)" />
|
||||
{/* Minimalist Abstract Drilling */}
|
||||
<AbstractBore className="top-1/4 opacity-40" invert />
|
||||
{/* Minimalist Abstract Trenching */}
|
||||
<AbstractTrench className="bottom-0 opacity-40" invert />
|
||||
</section>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -3,9 +3,8 @@ import Image from 'next/image';
|
||||
import Reveal from '@/components/Reveal';
|
||||
import { Badge, Container, Heading } from '@/components/ui';
|
||||
import { Button } from '@/components/ui/Button';
|
||||
import { DrillOrbit } from '@/components/ui/decorations/DrillOrbit';
|
||||
import { DrillBitSpinner } from '@/components/ui/decorations/DrillBitSpinner';
|
||||
import { DrillTeeth } from '@/components/ui/decorations/DrillTeeth';
|
||||
import { AbstractBore } from '@/components/ui/decorations/AbstractBore';
|
||||
import { AbstractTrench } from '@/components/ui/decorations/AbstractTrench';
|
||||
|
||||
export interface HeroSectionProps {
|
||||
title: string;
|
||||
@@ -73,14 +72,10 @@ export const HeroSection: React.FC<HeroSectionProps> = (props) => {
|
||||
)}
|
||||
</div>
|
||||
</Container>
|
||||
{/* Decorative: large abstract drill bit spinning slowly in background */}
|
||||
<div className="absolute top-1/2 -translate-y-1/2 -right-48 md:-right-64 pointer-events-none opacity-[0.03]">
|
||||
<DrillBitSpinner size={800} duration={20} glow={false} />
|
||||
</div>
|
||||
{/* Decorative: abstract HDD bore trajectory */}
|
||||
<DrillOrbit side="right" />
|
||||
{/* Organic wave divider — displaced earth strata */}
|
||||
<DrillTeeth position="bottom" fill="var(--color-primary-dark)" />
|
||||
{/* Minimalist Abstract Drilling (HDD) */}
|
||||
<AbstractBore className="top-1/3 -translate-y-1/2 opacity-60" />
|
||||
{/* Minimalist Abstract Trenching */}
|
||||
<AbstractTrench className="bottom-0 opacity-60" />
|
||||
</section>
|
||||
</Reveal>
|
||||
);
|
||||
|
||||
@@ -4,7 +4,7 @@ import { Button } from '@/components/ui/Button';
|
||||
import Image from 'next/image';
|
||||
import { motion, AnimatePresence } from 'framer-motion';
|
||||
import { useState, useEffect } from 'react';
|
||||
import { DrillTeeth } from '@/components/ui/decorations/DrillTeeth';
|
||||
import { AbstractBore } from '@/components/ui/decorations/AbstractBore';
|
||||
|
||||
interface HeroVideoProps {
|
||||
data?: any;
|
||||
@@ -109,8 +109,8 @@ export function HeroVideo(props: HeroVideoProps) {
|
||||
</div>
|
||||
</motion.div>
|
||||
</div>
|
||||
{/* Organic wave divider — displaced earth strata */}
|
||||
<DrillTeeth position="bottom" fill="var(--color-neutral-dark)" className="z-[5]" />
|
||||
{/* Minimalist Abstract Drilling */}
|
||||
<AbstractBore className="bottom-0 opacity-40 z-[5]" />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -5,9 +5,8 @@ import { motion } from 'framer-motion';
|
||||
import Link from 'next/link';
|
||||
import Image from 'next/image';
|
||||
import { HoverShineOverlay } from '@/components/ui/HoverShineOverlay';
|
||||
import { DrillOrbit } from '@/components/ui/decorations/DrillOrbit';
|
||||
import { DrillBitSpinner } from '@/components/ui/decorations/DrillBitSpinner';
|
||||
import { DrillTeeth } from '@/components/ui/decorations/DrillTeeth';
|
||||
import { AbstractBore } from '@/components/ui/decorations/AbstractBore';
|
||||
import { AbstractTrench } from '@/components/ui/decorations/AbstractTrench';
|
||||
|
||||
export interface Reference {
|
||||
id: string;
|
||||
@@ -154,14 +153,10 @@ export function ReferencesSlider(props: ReferencesSliderProps) {
|
||||
<svg xmlns="http://www.w3.org/2000/svg" className="w-5 h-5" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
|
||||
</Link>
|
||||
</div>
|
||||
{/* Decorative: large abstract drill bit spinning slowly in background */}
|
||||
<div className="absolute top-1/2 -translate-y-1/2 -right-48 pointer-events-none opacity-[0.03]">
|
||||
<DrillBitSpinner size={600} duration={25} glow={false} />
|
||||
</div>
|
||||
{/* Decorative: abstract HDD bore trajectory */}
|
||||
<DrillOrbit side="left" />
|
||||
{/* Organic wave divider */}
|
||||
<DrillTeeth position="bottom" fill="var(--color-neutral-dark)" />
|
||||
{/* Minimalist Abstract Drilling */}
|
||||
<AbstractBore className="top-1/4 opacity-30" />
|
||||
{/* Minimalist Abstract Trenching */}
|
||||
<AbstractTrench className="bottom-0 opacity-30" />
|
||||
</section>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
import * as React from 'react';
|
||||
import { motion, Variants } from 'framer-motion';
|
||||
import { HoverShineOverlay } from '@/components/ui/HoverShineOverlay';
|
||||
import { DrillTeeth } from '@/components/ui/decorations/DrillTeeth';
|
||||
import { AbstractTrench } from '@/components/ui/decorations/AbstractTrench';
|
||||
|
||||
export interface ServicePanelData {
|
||||
id: string;
|
||||
@@ -230,8 +230,8 @@ export function ServiceDetailGrid({
|
||||
})}
|
||||
</motion.div>
|
||||
</div>
|
||||
{/* Organic wave divider */}
|
||||
<DrillTeeth position="bottom" fill="#fafafa" />
|
||||
{/* Minimalist Abstract Trenching */}
|
||||
<AbstractTrench className="bottom-0 opacity-20" invert />
|
||||
</section>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -4,9 +4,8 @@ import * as React from 'react';
|
||||
import { motion, Variants } from 'framer-motion';
|
||||
import Image from 'next/image';
|
||||
import { HoverShineOverlay } from '@/components/ui/HoverShineOverlay';
|
||||
import { DrillOrbit } from '@/components/ui/decorations/DrillOrbit';
|
||||
import { DrillBitSpinner } from '@/components/ui/decorations/DrillBitSpinner';
|
||||
import { DrillTeeth } from '@/components/ui/decorations/DrillTeeth';
|
||||
import { AbstractBore } from '@/components/ui/decorations/AbstractBore';
|
||||
import { AbstractTrench } from '@/components/ui/decorations/AbstractTrench';
|
||||
|
||||
interface SubCompanyTilesProps {
|
||||
badge?: string;
|
||||
@@ -200,14 +199,10 @@ export function SubCompanyTiles(props: SubCompanyTilesProps) {
|
||||
})}
|
||||
</motion.div>
|
||||
</div>
|
||||
{/* Decorative: large abstract drill bit spinning slowly in background */}
|
||||
<div className="absolute top-1/3 -translate-y-1/2 -left-64 pointer-events-none opacity-[0.04]">
|
||||
<DrillBitSpinner size={700} duration={25} glow={false} />
|
||||
</div>
|
||||
{/* Decorative: abstract HDD bore trajectory */}
|
||||
<DrillOrbit side="right" />
|
||||
{/* Organic wave divider */}
|
||||
<DrillTeeth position="bottom" fill="var(--color-neutral-dark)" />
|
||||
{/* Minimalist Abstract Drilling */}
|
||||
<AbstractBore className="top-1/4 opacity-40" />
|
||||
{/* Minimalist Abstract Trenching */}
|
||||
<AbstractTrench className="bottom-0 opacity-40" />
|
||||
</section>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user