updated logo,about page
BIN
public/apple-touch-icon.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 408 KiB After Width: | Height: | Size: 6.9 KiB |
BIN
src/assets/kapfoundry-logo-1.png
Normal file
|
After Width: | Height: | Size: 1.2 MiB |
BIN
src/assets/kapfoundry-logo-full.webp
Normal file
|
After Width: | Height: | Size: 109 KiB |
BIN
src/assets/kapfoundry-mark.webp
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
src/assets/kapfoundry-wordmark.webp
Normal file
|
After Width: | Height: | Size: 26 KiB |
2569
src/components/site/sections.tsx
Normal file
@@ -10,6 +10,7 @@
|
||||
|
||||
import { Route as rootRouteImport } from './routes/__root'
|
||||
import { Route as SitemapDotxmlRouteImport } from './routes/sitemap[.]xml'
|
||||
import { Route as AboutRouteImport } from './routes/about'
|
||||
import { Route as IndexRouteImport } from './routes/index'
|
||||
|
||||
const SitemapDotxmlRoute = SitemapDotxmlRouteImport.update({
|
||||
@@ -17,6 +18,11 @@ const SitemapDotxmlRoute = SitemapDotxmlRouteImport.update({
|
||||
path: '/sitemap.xml',
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any)
|
||||
const AboutRoute = AboutRouteImport.update({
|
||||
id: '/about',
|
||||
path: '/about',
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any)
|
||||
const IndexRoute = IndexRouteImport.update({
|
||||
id: '/',
|
||||
path: '/',
|
||||
@@ -25,27 +31,31 @@ const IndexRoute = IndexRouteImport.update({
|
||||
|
||||
export interface FileRoutesByFullPath {
|
||||
'/': typeof IndexRoute
|
||||
'/about': typeof AboutRoute
|
||||
'/sitemap.xml': typeof SitemapDotxmlRoute
|
||||
}
|
||||
export interface FileRoutesByTo {
|
||||
'/': typeof IndexRoute
|
||||
'/about': typeof AboutRoute
|
||||
'/sitemap.xml': typeof SitemapDotxmlRoute
|
||||
}
|
||||
export interface FileRoutesById {
|
||||
__root__: typeof rootRouteImport
|
||||
'/': typeof IndexRoute
|
||||
'/about': typeof AboutRoute
|
||||
'/sitemap.xml': typeof SitemapDotxmlRoute
|
||||
}
|
||||
export interface FileRouteTypes {
|
||||
fileRoutesByFullPath: FileRoutesByFullPath
|
||||
fullPaths: '/' | '/sitemap.xml'
|
||||
fullPaths: '/' | '/about' | '/sitemap.xml'
|
||||
fileRoutesByTo: FileRoutesByTo
|
||||
to: '/' | '/sitemap.xml'
|
||||
id: '__root__' | '/' | '/sitemap.xml'
|
||||
to: '/' | '/about' | '/sitemap.xml'
|
||||
id: '__root__' | '/' | '/about' | '/sitemap.xml'
|
||||
fileRoutesById: FileRoutesById
|
||||
}
|
||||
export interface RootRouteChildren {
|
||||
IndexRoute: typeof IndexRoute
|
||||
AboutRoute: typeof AboutRoute
|
||||
SitemapDotxmlRoute: typeof SitemapDotxmlRoute
|
||||
}
|
||||
|
||||
@@ -58,6 +68,13 @@ declare module '@tanstack/react-router' {
|
||||
preLoaderRoute: typeof SitemapDotxmlRouteImport
|
||||
parentRoute: typeof rootRouteImport
|
||||
}
|
||||
'/about': {
|
||||
id: '/about'
|
||||
path: '/about'
|
||||
fullPath: '/about'
|
||||
preLoaderRoute: typeof AboutRouteImport
|
||||
parentRoute: typeof rootRouteImport
|
||||
}
|
||||
'/': {
|
||||
id: '/'
|
||||
path: '/'
|
||||
@@ -70,6 +87,7 @@ declare module '@tanstack/react-router' {
|
||||
|
||||
const rootRouteChildren: RootRouteChildren = {
|
||||
IndexRoute: IndexRoute,
|
||||
AboutRoute: AboutRoute,
|
||||
SitemapDotxmlRoute: SitemapDotxmlRoute,
|
||||
}
|
||||
export const routeTree = rootRouteImport
|
||||
|
||||
@@ -79,7 +79,7 @@ export const Route = createRootRouteWithContext<{ queryClient: QueryClient }>()(
|
||||
{
|
||||
name: "description",
|
||||
content:
|
||||
"KapFoundry is a Hyderabad-based venture studio and technology holding company engineering AI-first, category-defining companies across logistics, retail, fintech, agritech, cuisine, and carbon.",
|
||||
"KapFoundry is a Bangalore-based venture studio and technology holding company engineering AI-first, category-defining companies across logistics, retail, fintech, agritech, cuisine, and carbon.",
|
||||
},
|
||||
{ name: "author", content: "KapFoundry" },
|
||||
{ property: "og:title", content: "KapFoundry: Build Bold. Build the Future." },
|
||||
@@ -95,6 +95,7 @@ export const Route = createRootRouteWithContext<{ queryClient: QueryClient }>()(
|
||||
links: [
|
||||
{ rel: "stylesheet", href: appCss },
|
||||
{ rel: "icon", href: "/favicon.png", type: "image/png" },
|
||||
{ rel: "apple-touch-icon", href: "/apple-touch-icon.png" },
|
||||
{ rel: "preconnect", href: "https://fonts.googleapis.com" },
|
||||
{ rel: "preconnect", href: "https://fonts.gstatic.com", crossOrigin: "anonymous" },
|
||||
{
|
||||
|
||||
36
src/routes/about.tsx
Normal file
@@ -0,0 +1,36 @@
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import {
|
||||
AboutHero,
|
||||
Contact,
|
||||
Different,
|
||||
SitePage,
|
||||
Team,
|
||||
VisionMission,
|
||||
} from "@/components/site/sections";
|
||||
|
||||
export const Route = createFileRoute("/about")({
|
||||
head: () => ({
|
||||
meta: [
|
||||
{ title: "About | KapFoundry" },
|
||||
{
|
||||
name: "description",
|
||||
content:
|
||||
"KapFoundry's vision, mission and team. A Bangalore-based venture studio building AI-first companies.",
|
||||
},
|
||||
{ property: "og:title", content: "About KapFoundry" },
|
||||
],
|
||||
}),
|
||||
component: About,
|
||||
});
|
||||
|
||||
function About() {
|
||||
return (
|
||||
<SitePage page="about">
|
||||
<AboutHero />
|
||||
<Different />
|
||||
<VisionMission />
|
||||
<Team />
|
||||
<Contact />
|
||||
</SitePage>
|
||||
);
|
||||
}
|
||||
2432
src/routes/index.tsx
@@ -7,7 +7,10 @@ export const Route = createFileRoute("/sitemap.xml")({
|
||||
server: {
|
||||
handlers: {
|
||||
GET: async () => {
|
||||
const entries = [{ path: "/", changefreq: "weekly", priority: "1.0" }];
|
||||
const entries = [
|
||||
{ path: "/", changefreq: "weekly", priority: "1.0" },
|
||||
{ path: "/about", changefreq: "monthly", priority: "0.8" },
|
||||
];
|
||||
const urls = entries.map(
|
||||
(e) =>
|
||||
` <url>\n <loc>${BASE_URL}${e.path}</loc>\n <changefreq>${e.changefreq}</changefreq>\n <priority>${e.priority}</priority>\n </url>`,
|
||||
|
||||
@@ -484,12 +484,6 @@ html.menu-open {
|
||||
clip-path: inset(0 0 round 0);
|
||||
}
|
||||
}
|
||||
@keyframes panel-rise {
|
||||
from {
|
||||
opacity: 0;
|
||||
transform: translate3d(0, 72px, 0);
|
||||
}
|
||||
}
|
||||
@keyframes glow-drift {
|
||||
from {
|
||||
translate: 0 -18%;
|
||||
@@ -506,17 +500,6 @@ html.menu-open {
|
||||
animation-timeline: view();
|
||||
animation-range: entry 0% entry 55%;
|
||||
}
|
||||
.panel-rise {
|
||||
animation: panel-rise linear both;
|
||||
animation-timeline: view();
|
||||
animation-range: entry 5% cover 30%;
|
||||
}
|
||||
/* Side-by-side on desktop: offset each panel's range so they rise left to right. */
|
||||
@media (min-width: 1024px) {
|
||||
.panel-rise {
|
||||
animation-range: entry calc(var(--i, 0) * 7%) cover calc(24% + var(--i, 0) * 3%);
|
||||
}
|
||||
}
|
||||
.glow-drift {
|
||||
animation: glow-drift linear both;
|
||||
animation-timeline: view();
|
||||
|
||||