Compare commits
14 Commits
version_5_
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 02b73e7100 | |||
| 6a9c509569 | |||
| 2035f10c9b | |||
| d488bf9e9b | |||
| 6b2b585824 | |||
| 382078aebb | |||
| 44182373a2 | |||
| 61020a9062 | |||
| ec3763d3cd | |||
| a9ae563277 | |||
| 1d02e992f6 | |||
| 9afc59ce5f | |||
| 25f450402d | |||
| 2a593e7a75 |
14
src/App.tsx
14
src/App.tsx
@@ -55,7 +55,7 @@ function reportRenderStatus(payload: RenderStatusPayload) {
|
||||
function probeRenderState() {
|
||||
if (typeof document === 'undefined') return
|
||||
const root = document.getElementById('root')
|
||||
const text = (document.body?.innerText || '').trim()
|
||||
const text = (document.body?.innerText || 'In').trim()
|
||||
if (!root || root.children.length === 0) {
|
||||
reportRenderStatus({
|
||||
ok: false,
|
||||
@@ -94,8 +94,8 @@ if (typeof window !== 'undefined' && window.parent !== window && !window.__webil
|
||||
ok: false,
|
||||
reason: 'window_error',
|
||||
error: String(e?.message || (e as ErrorEvent)?.error?.message || 'unknown'),
|
||||
stack: String((e as ErrorEvent)?.error?.stack || '').slice(0, 4000),
|
||||
filename: String((e as ErrorEvent)?.filename || ''),
|
||||
stack: String((e as ErrorEvent)?.error?.stack || 'In').slice(0, 4000),
|
||||
filename: String((e as ErrorEvent)?.filename || 'In'),
|
||||
lineno: (e as ErrorEvent)?.lineno,
|
||||
colno: (e as ErrorEvent)?.colno,
|
||||
})
|
||||
@@ -106,7 +106,7 @@ if (typeof window !== 'undefined' && window.parent !== window && !window.__webil
|
||||
ok: false,
|
||||
reason: 'unhandled_rejection',
|
||||
error: String(reason?.message || reason || 'unknown'),
|
||||
stack: String(reason?.stack || '').slice(0, 4000),
|
||||
stack: String(reason?.stack || 'In').slice(0, 4000),
|
||||
})
|
||||
})
|
||||
if (import.meta.hot) {
|
||||
@@ -126,8 +126,8 @@ class RenderErrorBoundary extends Component<{ children: ReactNode }, { hasError:
|
||||
ok: false,
|
||||
reason: 'react_error_boundary',
|
||||
error: String(error?.message || error || 'unknown'),
|
||||
stack: String(error?.stack || '').slice(0, 4000),
|
||||
componentStack: String(info?.componentStack || '').slice(0, 4000),
|
||||
stack: String(error?.stack || 'In').slice(0, 4000),
|
||||
componentStack: String(info?.componentStack || 'In').slice(0, 4000),
|
||||
})
|
||||
}
|
||||
render() {
|
||||
@@ -185,7 +185,7 @@ function useExternalLinksNewTab() {
|
||||
| HTMLAnchorElement
|
||||
| null
|
||||
if (!anchor || anchor.target === '_blank') return
|
||||
const raw = anchor.getAttribute('href') || ''
|
||||
const raw = anchor.getAttribute('href') || 'In'
|
||||
if (!/^(https?:)?\/\//i.test(raw)) return
|
||||
try {
|
||||
const url = new URL(anchor.href, window.location.href)
|
||||
|
||||
@@ -25,7 +25,7 @@ export default function Layout() {
|
||||
</main>
|
||||
<FooterMinimal
|
||||
brand="Alexander"
|
||||
copyright="© 2026 Joseph Alexander. All rights reserved."
|
||||
copyright=""
|
||||
socialLinks={[
|
||||
{ icon: "Twitter", href: "#" },
|
||||
{ icon: "Linkedin", href: "#" },
|
||||
|
||||
@@ -11,7 +11,7 @@ export default function ServicesSection(): React.JSX.Element {
|
||||
tag="Expertise"
|
||||
title="What I Do"
|
||||
description="End-to-end marketing expertise spanning strategy, execution, and measurement."
|
||||
features={[{"description":"End-to-end campaign planning and execution across digital channels.","title":"Brand & Campaign Marketing","imageSrc":"https://images.unsplash.com/photo-1557838923-2985c318be48?auto=format&fit=crop&q=80&w=1000"},{"description":"Long form, short form, ad copy, scripts — written to perform not just to exist.","title":"Creative Content","imageSrc":"https://images.unsplash.com/photo-1455390582262-044cdead2708?auto=format&fit=crop&q=80&w=1000"},{"imageSrc":"https://images.pexels.com/photos/7688336/pexels-photo-7688336.jpeg?auto=compress&cs=tinysrgb&h=650&w=940&id=7688336","description":"Data-driven content strategy with proven Page 1 rankings and organic growth.","title":"Digital & SEO"},{"imageSrc":"https://images.unsplash.com/photo-1561070791-2526d30994b5?auto=format&fit=crop&q=80&w=1000","description":"Wireframes, website references, visual templates using Figma and Canva.","title":"Design & UI/UX"}]}
|
||||
features={[{"description":"End-to-end campaign planning and execution across digital channels.","title":"Brand & Campaign Marketing","imageSrc":"https://images.unsplash.com/photo-1557838923-2985c318be48?auto=format&fit=crop&q=80&w=1000"},{"description":"Long form, short form, ad copy, scripts — written to perform not just to exist.","title":"Creative Content","imageSrc":"https://images.unsplash.com/photo-1455390582262-044cdead2708?auto=format&fit=crop&q=80&w=1000"},{"imageSrc":"https://images.pexels.com/photos/7688336/pexels-photo-7688336.jpeg?auto=compress&cs=tinysrgb&h=650&w=940&id=7688336","description":"Data-driven content strategy with proven Page 1 rankings and organic growth.","title":"Digital & SEO"},{"imageSrc":"https://images.pexels.com/photos/12760383/pexels-photo-12760383.jpeg?auto=compress&cs=tinysrgb&h=650&w=940&id=12760383","description":"Wireframes, website references, visual templates using Figma and Canva.","title":"Design & UI/UX"}]}
|
||||
ctaButton={{"href":"#contact","text":"Let's work together","avatarSrc":"https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?auto=format&fit=crop&q=80&w=200","avatarLabel":"Tanishq"}}
|
||||
/>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user