Merge version_2_1781993840225 into main #1
@@ -5,15 +5,15 @@
|
||||
|
||||
:root {
|
||||
/* @colorThemes/lightTheme/grayNavyBlue */
|
||||
--background: #0B0F19;
|
||||
--card: #0F1422;
|
||||
--foreground: #FFFFFF;
|
||||
--primary-cta: #00E5FF;
|
||||
--primary-cta-text: #0B0F19;
|
||||
--secondary-cta: #0B0F19;
|
||||
--secondary-cta-text: #FFFFFF;
|
||||
--accent: #00F2FE;
|
||||
--background-accent: #0B0F19;
|
||||
--background: #FFFFFF;
|
||||
--card: #F8F9FA;
|
||||
--foreground: #000000;
|
||||
--primary-cta: #6B21A8;
|
||||
--primary-cta-text: #FFFFFF;
|
||||
--secondary-cta: #EAB308;
|
||||
--secondary-cta-text: #000000;
|
||||
--accent: #EF4444;
|
||||
--background-accent: #F3F4F6;
|
||||
|
||||
/* @layout/border-radius/rounded */
|
||||
--radius: 0.5rem;
|
||||
|
||||
@@ -1,197 +1,30 @@
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import FeaturesBentoGrid from '@/components/sections/features/FeaturesBentoGrid';
|
||||
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
|
||||
import HeroBillboardCarousel from '@/components/sections/hero/HeroBillboardCarousel';
|
||||
import MetricsMediaCards from '@/components/sections/metrics/MetricsMediaCards';
|
||||
import SocialProofMarquee from '@/components/sections/social-proof/SocialProofMarquee';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
// AUTO-GENERATED shell by per-section-migrate.
|
||||
// Section bodies live in ./<PageBase>/sections/<X>.tsx. Edit the section
|
||||
// files directly. Non-block content (wrappers, non-inlinable sections) is
|
||||
// preserved inline; extracted section blocks become <XSection/> refs.
|
||||
|
||||
export default function HomePage() {
|
||||
import React from 'react';
|
||||
import HeroSection from './HomePage/sections/Hero';
|
||||
import SocialSection from './HomePage/sections/Social';
|
||||
import ExpertiseSection from './HomePage/sections/Expertise';
|
||||
import ImpactSection from './HomePage/sections/Impact';
|
||||
import InsightsSection from './HomePage/sections/Insights';
|
||||
import ContactSection from './HomePage/sections/Contact';
|
||||
|
||||
export default function HomePage(): React.JSX.Element {
|
||||
return (
|
||||
<>
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroBillboardCarousel
|
||||
tag="PRESTIGIOUS CONSULTING"
|
||||
title="Architecting Disruptive Growth. Shaping What’s Next."
|
||||
description="Innovation Makers partners with global leaders and ambitious enterprises to navigate market disruption, build next-generation ventures, and scale exponential ideas."
|
||||
primaryButton={{
|
||||
text: "Initiate Partnership",
|
||||
href: "#contact",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Explore Our Frameworks →",
|
||||
href: "#expertise",
|
||||
}}
|
||||
items={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/3d-cyber-dots-abstract-background-with-rainbow-coloured-flowing-particles_1048-11880.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/3d-abstract-plexus-technology-design-network-communications_1048-15871.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/optical-fiber-background_23-2149301539.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/3d-data-technology-abstract-background-with-low-poly-plexus-design_1048-17734.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/3d-abstract-cyber-network-visualization-design_1048-17445.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/3d-rendering-futuristic-sci-fi-techno-lights-cool-background_181624-24522.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<>
|
||||
<HeroSection />
|
||||
|
||||
<div id="social" data-section="social">
|
||||
<SectionErrorBoundary name="social">
|
||||
<SocialProofMarquee
|
||||
tag="TRUSTED BY FUTURE-PROOF ORGANIZATIONS GLOBAL-WIDE"
|
||||
title="Strategic Partners"
|
||||
description="Our work informs the world's most critical enterprises."
|
||||
names={[
|
||||
"McKinsey",
|
||||
"BCG",
|
||||
"IDEO",
|
||||
"Fortune 500",
|
||||
"Government Entities",
|
||||
"Global Leaders",
|
||||
"Innovation Labs",
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<SocialSection />
|
||||
|
||||
<div id="expertise" data-section="expertise">
|
||||
<SectionErrorBoundary name="expertise">
|
||||
<FeaturesBentoGrid
|
||||
tag="CAPABILITIES"
|
||||
title="Core Expansion Pillars"
|
||||
description="Transforming complexity into competitive advantage through expert methodology."
|
||||
features={[
|
||||
{
|
||||
title: "Venture Building",
|
||||
description: "Designing, validating, and launching scalable new business models to capture untapped market shares.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/3d-abstract-background-with-futuristic-particles_1048-12370.jpg",
|
||||
},
|
||||
{
|
||||
title: "R&D Integration",
|
||||
description: "Weaponizing AI, spatial computing, and next-gen tech into market-ready, revenue-generating products.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/abstract-technology-frame-background-connecting-dots-digital-network-design_53876-153345.jpg",
|
||||
},
|
||||
{
|
||||
title: "Systemic Innovation",
|
||||
description: "Restructuring organizational DNA and training leadership to foster a perpetual state of innovation.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/polygonal-abstract-shapes-network-connection-big-data-concept_90220-460.jpg",
|
||||
},
|
||||
{
|
||||
title: "Future Forecasting",
|
||||
description: "Applying data-driven predictive models to anticipate macro-economic shifts before they disrupt your industry.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/amazing-beautiful-sky-with-clouds-with-antenna_58702-5845.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ExpertiseSection />
|
||||
|
||||
<div id="impact" data-section="impact">
|
||||
<SectionErrorBoundary name="impact">
|
||||
<MetricsMediaCards
|
||||
tag="EVIDENCE"
|
||||
title="Proven Outcomes, Not Theories."
|
||||
description="Real-world results delivered to the world's most demanding clients."
|
||||
metrics={[
|
||||
{
|
||||
value: "+340%",
|
||||
title: "Energy Sector ROI",
|
||||
description: "Accelerating the green hydrogen transition for a European energy conglomerate via autonomous asset management.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-digital-tablet-with-bar-graph_1098-3523.jpg",
|
||||
},
|
||||
{
|
||||
value: "14 Months",
|
||||
title: "Fintech Scale",
|
||||
description: "Building and spinning off a digital-first banking venture, capturing 2M+ active users within year one.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/structure-abstract-background-with-copy-space_1194-638424.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ImpactSection />
|
||||
|
||||
<div id="insights" data-section="insights">
|
||||
<SectionErrorBoundary name="insights">
|
||||
<FeaturesRevealCardsBento
|
||||
tag="INTELLECTUAL CAPITAL"
|
||||
title="The Makers’ Insights"
|
||||
description="Essential reading for the C-suite and innovation leads."
|
||||
items={[
|
||||
{
|
||||
title: "Sovereign AI Playbook",
|
||||
description: "Navigating tech nationalism and AI security in the modern age.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/abstract-fractal-geometric-figure-background-with-texture_1194-306732.jpg",
|
||||
},
|
||||
{
|
||||
title: "Incubation Failure",
|
||||
description: "Why 85% of corporate incubation units fail—and how to fix it.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/3d-rendering-abstract-black-white-background_23-2150914053.jpg",
|
||||
},
|
||||
{
|
||||
title: "Quantum Strategy",
|
||||
description: "Preparing your encryption strategy for the quantum revolution.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/abstract-fractal-geometric-figure-background-with-texture_1194-306725.jpg",
|
||||
},
|
||||
{
|
||||
title: "Market Disruption",
|
||||
description: "Identifying shifts before they happen.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/3d-render-abstract-techno-with-flowing-lines-particles_1048-13718.jpg",
|
||||
},
|
||||
{
|
||||
title: "Culture Scaling",
|
||||
description: "Fostering organizational agility at scale.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/abstract-fractal-geometric-figure-background-with-texture_1194-306740.jpg",
|
||||
},
|
||||
{
|
||||
title: "Data Governance",
|
||||
description: "Securing the future of your enterprise assets.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/cosmic-environment-with-colorful-neon-laser-lights-perfect-digital-wallpaper_181624-23726.jpg",
|
||||
},
|
||||
{
|
||||
title: "Growth Models",
|
||||
description: "Building exponential revenue frameworks.",
|
||||
href: "#",
|
||||
imageSrc: "https://storage.googleapis.com/webild/default/no-image.jpg?id=cbksr8",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<InsightsSection />
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="REQUEST ACCESS"
|
||||
text="Request a private, closed-door briefing with our senior innovation partners to audit your organization's disruption readiness."
|
||||
primaryButton={{
|
||||
text: "Submit Request",
|
||||
href: "#",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Contact Support",
|
||||
href: "#",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ContactSection />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
27
src/pages/HomePage/sections/Contact.tsx
Normal file
27
src/pages/HomePage/sections/Contact.tsx
Normal file
@@ -0,0 +1,27 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "contact" section.
|
||||
|
||||
import React from 'react';
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function ContactSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="REQUEST ACCESS"
|
||||
text="Request a private, closed-door briefing with our senior innovation partners to audit your organization's disruption readiness."
|
||||
primaryButton={{
|
||||
text: "Submit Request",
|
||||
href: "#",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Contact Support",
|
||||
href: "#",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
42
src/pages/HomePage/sections/Expertise.tsx
Normal file
42
src/pages/HomePage/sections/Expertise.tsx
Normal file
@@ -0,0 +1,42 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "expertise" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesBentoGrid from '@/components/sections/features/FeaturesBentoGrid';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function ExpertiseSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="expertise" data-section="expertise">
|
||||
<SectionErrorBoundary name="expertise">
|
||||
<FeaturesBentoGrid
|
||||
tag="CAPABILITIES"
|
||||
title="Core Expansion Pillars"
|
||||
description="Transforming complexity into competitive advantage through expert methodology."
|
||||
features={[
|
||||
{
|
||||
title: "Venture Building",
|
||||
description: "Designing, validating, and launching scalable new business models to capture untapped market shares.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/3d-abstract-background-with-futuristic-particles_1048-12370.jpg",
|
||||
},
|
||||
{
|
||||
title: "R&D Integration",
|
||||
description: "Weaponizing AI, spatial computing, and next-gen tech into market-ready, revenue-generating products.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/abstract-technology-frame-background-connecting-dots-digital-network-design_53876-153345.jpg",
|
||||
},
|
||||
{
|
||||
title: "Systemic Innovation",
|
||||
description: "Restructuring organizational DNA and training leadership to foster a perpetual state of innovation.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/polygonal-abstract-shapes-network-connection-big-data-concept_90220-460.jpg",
|
||||
},
|
||||
{
|
||||
title: "Future Forecasting",
|
||||
description: "Applying data-driven predictive models to anticipate macro-economic shifts before they disrupt your industry.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/amazing-beautiful-sky-with-clouds-with-antenna_58702-5845.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
48
src/pages/HomePage/sections/Hero.tsx
Normal file
48
src/pages/HomePage/sections/Hero.tsx
Normal file
@@ -0,0 +1,48 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "hero" section.
|
||||
|
||||
import React from 'react';
|
||||
import HeroBillboardCarousel from '@/components/sections/hero/HeroBillboardCarousel';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function HeroSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroBillboardCarousel
|
||||
tag="PRESTIGIOUS CONSULTING"
|
||||
title="Architecting Disruptive Growth. Shaping What’s Next."
|
||||
description="Innovation Makers partners with global leaders and ambitious enterprises to navigate market disruption, build next-generation ventures, and scale exponential ideas."
|
||||
primaryButton={{
|
||||
text: "Initiate Partnership",
|
||||
href: "#contact",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Explore Our Frameworks →",
|
||||
href: "#expertise",
|
||||
}}
|
||||
items={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/3d-cyber-dots-abstract-background-with-rainbow-coloured-flowing-particles_1048-11880.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/3d-abstract-plexus-technology-design-network-communications_1048-15871.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/optical-fiber-background_23-2149301539.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/3d-data-technology-abstract-background-with-low-poly-plexus-design_1048-17734.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/3d-abstract-cyber-network-visualization-design_1048-17445.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/3d-rendering-futuristic-sci-fi-techno-lights-cool-background_181624-24522.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
34
src/pages/HomePage/sections/Impact.tsx
Normal file
34
src/pages/HomePage/sections/Impact.tsx
Normal file
@@ -0,0 +1,34 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "impact" section.
|
||||
|
||||
import React from 'react';
|
||||
import MetricsMediaCards from '@/components/sections/metrics/MetricsMediaCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function ImpactSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="impact" data-section="impact">
|
||||
<SectionErrorBoundary name="impact">
|
||||
<MetricsMediaCards
|
||||
tag="EVIDENCE"
|
||||
title="Proven Outcomes, Not Theories."
|
||||
description="Real-world results delivered to the world's most demanding clients."
|
||||
metrics={[
|
||||
{
|
||||
value: "+340%",
|
||||
title: "Energy Sector ROI",
|
||||
description: "Accelerating the green hydrogen transition for a European energy conglomerate via autonomous asset management.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-digital-tablet-with-bar-graph_1098-3523.jpg",
|
||||
},
|
||||
{
|
||||
value: "14 Months",
|
||||
title: "Fintech Scale",
|
||||
description: "Building and spinning off a digital-first banking venture, capturing 2M+ active users within year one.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/structure-abstract-background-with-copy-space_1194-638424.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
64
src/pages/HomePage/sections/Insights.tsx
Normal file
64
src/pages/HomePage/sections/Insights.tsx
Normal file
@@ -0,0 +1,64 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "insights" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function InsightsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="insights" data-section="insights">
|
||||
<SectionErrorBoundary name="insights">
|
||||
<FeaturesRevealCardsBento
|
||||
tag="INTELLECTUAL CAPITAL"
|
||||
title="The Makers’ Insights"
|
||||
description="Essential reading for the C-suite and innovation leads."
|
||||
items={[
|
||||
{
|
||||
title: "Sovereign AI Playbook",
|
||||
description: "Navigating tech nationalism and AI security in the modern age.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/abstract-fractal-geometric-figure-background-with-texture_1194-306732.jpg",
|
||||
},
|
||||
{
|
||||
title: "Incubation Failure",
|
||||
description: "Why 85% of corporate incubation units fail—and how to fix it.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/3d-rendering-abstract-black-white-background_23-2150914053.jpg",
|
||||
},
|
||||
{
|
||||
title: "Quantum Strategy",
|
||||
description: "Preparing your encryption strategy for the quantum revolution.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/abstract-fractal-geometric-figure-background-with-texture_1194-306725.jpg",
|
||||
},
|
||||
{
|
||||
title: "Market Disruption",
|
||||
description: "Identifying shifts before they happen.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/3d-render-abstract-techno-with-flowing-lines-particles_1048-13718.jpg",
|
||||
},
|
||||
{
|
||||
title: "Culture Scaling",
|
||||
description: "Fostering organizational agility at scale.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/abstract-fractal-geometric-figure-background-with-texture_1194-306740.jpg",
|
||||
},
|
||||
{
|
||||
title: "Data Governance",
|
||||
description: "Securing the future of your enterprise assets.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/cosmic-environment-with-colorful-neon-laser-lights-perfect-digital-wallpaper_181624-23726.jpg",
|
||||
},
|
||||
{
|
||||
title: "Growth Models",
|
||||
description: "Building exponential revenue frameworks.",
|
||||
href: "#",
|
||||
imageSrc: "https://storage.googleapis.com/webild/default/no-image.jpg?id=cbksr8",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
29
src/pages/HomePage/sections/Social.tsx
Normal file
29
src/pages/HomePage/sections/Social.tsx
Normal file
@@ -0,0 +1,29 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "social" section.
|
||||
|
||||
import React from 'react';
|
||||
import SocialProofMarquee from '@/components/sections/social-proof/SocialProofMarquee';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function SocialSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="social" data-section="social">
|
||||
<SectionErrorBoundary name="social">
|
||||
<SocialProofMarquee
|
||||
tag="TRUSTED BY FUTURE-PROOF ORGANIZATIONS GLOBAL-WIDE"
|
||||
title="Strategic Partners"
|
||||
description="Our work informs the world's most critical enterprises."
|
||||
names={[
|
||||
"McKinsey",
|
||||
"BCG",
|
||||
"IDEO",
|
||||
"Fortune 500",
|
||||
"Government Entities",
|
||||
"Global Leaders",
|
||||
"Innovation Labs",
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user