Skip to content

Commit 2ddbad8

Browse files
authored
Merge pull request #3220 from gluestack/feat/web-changes
Feat/web changes
2 parents 087aea6 + b24a5b3 commit 2ddbad8

File tree

39 files changed

+1430
-1261
lines changed

39 files changed

+1430
-1261
lines changed

apps/kitchen-sink/babel.config.js

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,7 @@ module.exports = function (api) {
22
api.cache(true);
33

44
return {
5-
presets: [
6-
[
7-
'babel-preset-expo',
8-
{
9-
jsxImportSource: 'nativewind',
10-
},
11-
],
12-
'nativewind/babel',
13-
],
5+
presets: [['babel-preset-expo'], 'nativewind/babel'],
146

157
plugins: [
168
[
@@ -24,7 +16,7 @@ module.exports = function (api) {
2416
},
2517
},
2618
],
27-
'react-native-reanimated/plugin',
19+
'react-native-worklets/plugin',
2820
],
2921
};
3022
};

apps/starter-kit-expo/babel.config.js

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,7 @@ module.exports = function (api) {
22
api.cache(true);
33

44
return {
5-
presets: [
6-
[
7-
'babel-preset-expo',
8-
{
9-
jsxImportSource: 'nativewind',
10-
},
11-
],
12-
'nativewind/babel',
13-
],
5+
presets: [['babel-preset-expo'], 'nativewind/babel'],
146

157
plugins: [
168
[
@@ -24,7 +16,7 @@ module.exports = function (api) {
2416
},
2517
},
2618
],
27-
'react-native-reanimated/plugin',
19+
'react-native-worklets/plugin',
2820
],
2921
};
3022
};

apps/website/app/blogs/public-incident-report/blog.mdx

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,54 @@
11
import { AlertTriangle, Shield, Clock, Users, Package, Network, FileText, CheckCircle } from 'lucide-react'
22
import { Box } from "@/components/ui/box"
3+
import { HStack } from '@/components/ui/hstack';
4+
import { Text } from '@/components/ui/text';
5+
import { Image } from '@/components/ui/image';
6+
7+
<Text className="text-sm pt-2">September 4, 2025</Text>
38

49
# React Native ARIA & gluestack-ui Security Incident Report
10+
<HStack className="gap-12 items-center">
11+
<HStack className="gap-3 items-center">
12+
<Box className="h-8 w-8 rounded-full overflow-hidden">
13+
<Image
14+
source={{ uri: 'https://avatars.githubusercontent.com/u/101696945?v=4' }}
15+
alt="sanchit"
16+
className="h-8 w-8"
17+
/>
18+
</Box>
19+
<Box>
20+
<Text className="text-sm font-bold text-typography-900">Sanchit Kumar</Text>
21+
<Text className="text-sm">Building gluestack-ui</Text>
22+
</Box>
23+
</HStack>
24+
<HStack className="gap-3 items-center">
25+
<Box className="h-8 w-8 rounded-full overflow-hidden">
26+
<Image
27+
source={{ uri: 'https://avatars.githubusercontent.com/u/98085611?v=4' }}
28+
alt="ujjwal"
29+
className="h-8 w-8"
30+
/>
31+
</Box>
32+
<Box>
33+
<Text className="text-sm font-bold text-typography-900">Ujjwal Aggarwal</Text>
34+
<Text className="text-sm">Building gluestack-ui</Text>
35+
</Box>
36+
</HStack>
37+
<HStack className="gap-3 items-center">
38+
<Box className="h-8 w-8 rounded-full overflow-hidden">
39+
<Image
40+
source={{ uri: 'https://avatars.githubusercontent.com/u/120183344?s=200&v=4' }}
41+
alt="gluestack support team"
42+
className="h-8 w-8"
43+
/>
44+
</Box>
45+
<Box>
46+
<Text className="text-sm font-bold text-typography-900">Gluestack Support Team</Text>
47+
<Text className="text-sm">Support Team</Text>
48+
</Box>
49+
</HStack>
50+
</HStack>
51+
<br />
552

653
<div className="flex items-center gap-4 mb-8 p-4 border border-red-600 shadow-soft-1 shadow-red-500 rounded-lg">
754
<AlertTriangle className="h-6 w-6 text-red-600" />

apps/website/app/cookie-policy/page.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@ const CookiePolicy = () => {
1717
<Text className="mb-4">Effective Date: 12/23/2022</Text>
1818
<Heading
1919
className="text-4xl lg:text-5xl mt-0"
20-
color="$textDark50"
21-
lineHeight="$5xl"
2220
>
2321
COOKIE POLICY
2422
</Heading>
Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,20 @@
1-
'use client';
2-
import { Box } from '@/components/ui/box';
3-
import WebsiteLayout from '@/components/page-components/landing-page/WebsiteLayout';
4-
import BadgeComponent from '@/components/page-components/landing-page/BadgeComponent';
5-
import Footer from '@/components/page-components/landing-page/Footer';
6-
1+
import { Metadata } from 'next';
2+
export const metadata: Metadata = {
3+
title: 'Hire Experts | gluestack-ui | GeekyAnts React Native Experts',
4+
description:
5+
'Hire GeekyAnts experts for your gluestack-ui and React Native projects. Get professional support, custom development, and UI/UX expertise from the team behind gluestack-ui.',
6+
openGraph: {
7+
title: 'Hire Experts | gluestack-ui | GeekyAnts React Native Experts',
8+
description:
9+
'Hire GeekyAnts experts for your gluestack-ui and React Native projects. Get professional support, custom development, and UI/UX expertise from the team behind gluestack-ui.',
10+
siteName: 'gluestack',
11+
url: 'https://gluestack.io/experts',
12+
},
13+
};
714
export default function ExpertLayout({
815
children,
916
}: Readonly<{
1017
children: React.ReactNode;
1118
}>) {
12-
return (
13-
<WebsiteLayout applyBgImage={true}>
14-
<Box className="justify-center self-center mx-auto max-w-[1440px] w-[85%]">
15-
<Box className="">{children}</Box>
16-
</Box>
17-
<BadgeComponent />
18-
<Footer />
19-
</WebsiteLayout>
20-
);
19+
return <>{children}</>;
2120
}

apps/website/app/experts/page.tsx

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,28 @@
22
import { useContext } from 'react';
33
import { ThemeContext } from '@/utils/context/theme-context';
44
import { Widget } from '@typeform/embed-react';
5+
import { Box } from '@/components/ui/box';
6+
import WebsiteLayout from '@/components/page-components/landing-page/WebsiteLayout';
7+
import BadgeComponent from '@/components/page-components/landing-page/BadgeComponent';
8+
import Footer from '@/components/page-components/landing-page/Footer';
59

610
export default function Expert() {
711
const { colorMode } = useContext(ThemeContext);
812

913
return (
10-
<>
11-
<Widget
12-
id={colorMode === 'light' ? 'aRuH9GIE' : 's2VB1ZKy'}
13-
disableScroll
14-
inlineOnMobile
15-
className="bg-background-0 pt-[48px] lg:pt-[53px] w-full h-[100vh]"
16-
/>
17-
</>
14+
<WebsiteLayout applyBgImage={true}>
15+
<Box className="justify-center self-center mx-auto max-w-[1440px] w-[85%]">
16+
<Box className="">
17+
<Widget
18+
id={colorMode === 'light' ? 'aRuH9GIE' : 's2VB1ZKy'}
19+
disableScroll
20+
inlineOnMobile
21+
className="bg-background-0 pt-[48px] lg:pt-[53px] w-full h-[100vh]"
22+
/>
23+
</Box>
24+
</Box>
25+
<BadgeComponent />
26+
<Footer />
27+
</WebsiteLayout>
1828
);
1929
}

apps/website/app/globals.css

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
@tailwind components;
33
@tailwind utilities;
44

5+
html {
6+
scroll-behavior: smooth;
7+
}
58
:root {
69
--foreground-rgb: 0, 0, 0;
710
--background-start-rgb: 214, 219, 220;

apps/website/app/layout.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import {
55
Source_Code_Pro,
66
Space_Mono,
77
} from 'next/font/google';
8+
import { GeistSans } from 'geist/font/sans';
9+
import { GeistMono } from 'geist/font/mono';
810
import './globals.css';
911
import CanonicalLink from '@/components/custom/canonical/CanonicalLink';
1012
import Provider from './provider';
@@ -107,9 +109,10 @@ export default function RootLayout({
107109
return (
108110
<html
109111
lang="en"
110-
className={`${plusJakartaSans.variable} ${roboto.variable} ${sourceCodePro.variable} ${inter.className} ${spaceMono.variable}`}
112+
className={`${plusJakartaSans.variable} ${roboto.variable} ${sourceCodePro.variable} ${inter.className} ${spaceMono.variable} ${GeistMono.className} ${GeistSans.className}`}
111113
>
112114
<head>
115+
<meta name="robots" content="index, follow" />
113116
{/* Preconnect to Google Fonts domains with higher priority */}
114117
<link
115118
rel="preconnect"
@@ -146,7 +149,7 @@ export default function RootLayout({
146149
/>
147150
{/* End Google Tag Manager */}
148151
</head>
149-
<body className={inter.className}>
152+
<body className={GeistSans.className}>
150153
<Provider>{children}</Provider>
151154
</body>
152155
</html>

apps/website/app/ui/docs/layout.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ export const metadata: Metadata = {
1313
description:
1414
'A powerful React & React Native component library with customizable Tailwind UI components & patterns. Works seamlessly with shadcn React Native for web & mobile apps!',
1515
siteName: 'gluestack',
16-
// url: 'https://gluestack.io/',
16+
url: 'https://gluestack.io/',
1717
images: [
1818
{
1919
url: 'https://gluestack.io/images/og-image.png',

apps/website/components/custom/layout/index.tsx

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import { Box } from '@/components/ui/box';
1616
import { Fab, FabIcon } from '@/components/ui/fab';
1717
import { MoonIcon, SunIcon } from '@/components/ui/icon';
1818
import { ThemeContext } from '@/utils/context/theme-context';
19+
import { TOC } from '../toc';
1920

2021
export const Layout = ({ children }: { children: React.ReactNode }) => {
2122
const { colorMode, setColorMode } = useContext(ThemeContext);
@@ -30,6 +31,12 @@ export const Layout = ({ children }: { children: React.ReactNode }) => {
3031
pathname.includes('docs/components/all-components') ||
3132
pathname.includes('overview/quick-start');
3233

34+
const tocLayout =
35+
fluidLayout ||
36+
pathname.includes('docs/mcp-server') ||
37+
pathname.includes('guides/tutorials') ||
38+
pathname.includes('/guides/more/releases') ||
39+
pathname.includes('guides/more/discord-faqs');
3340
// Reset scroll position when pathname changes
3441
useEffect(() => {
3542
const layoutElement = docsLayoutRef.current;
@@ -57,15 +64,11 @@ export const Layout = ({ children }: { children: React.ReactNode }) => {
5764
fluidLayout ? '' : 'lg:ml-36 md:w-[85%]'
5865
}`}
5966
>
60-
<div
61-
className={`w-[250px] hidden lg:flex z-0 ${
62-
fluidLayout ? 'ml-8' : ''
63-
}`}
64-
>
67+
<div className="w-[250px] hidden lg:flex z-0">
6568
<Sidebar />
6669
</div>
6770

68-
<div className="flex-1 md:items-center md:w-[85%] mx-auto">
71+
<div className="flex-1 md:items-center md:w-[60%] lg:[85%] mx-auto px-4 md:px-6 lg:px-8">
6972
{/* <ComponentIntro
7073
display={fluidLayout ? "flex" : "none"}
7174
sidebarItems={sidebars}
@@ -76,13 +79,13 @@ export const Layout = ({ children }: { children: React.ReactNode }) => {
7679
/> */}
7780

7881
<div
79-
className={`flex-1 flex-row sidebar-hide ${isOpenSidebar ? 'hidden' : ''}`}
82+
className={`flex-1 flex-row sidebar-hide shrink ${isOpenSidebar ? 'hidden' : ''}`}
8083
>
8184
<MDXProvider components={useMDXComponents({})}>
8285
<div
8386
className={`px-4 md:px-0 ${fluidLayout ? 'max-w-[92%] mx-auto' : 'max-w-[736px] 2xl:mx-auto'} ${pathname.includes('overview/quick-start') || pathname.includes('docs/apps') ? '2xl:max-w-[1280px]' : ''}`}
8487
>
85-
<LayoutContent className="flex md:min-w-[736px] lg:min-w-[662px] xl:min-w-[598px] 2xl:min-w-[736px] h-full w-full mx-auto flex-col scroll-smooth">
88+
<LayoutContent className="flex h-full w-full mx-auto flex-col scroll-smooth">
8689
{children}
8790
<EditPageOnGithubLink sidebarItems={sidebarData} />
8891
<PrevNextButtons sidebarItems={sidebarData} />
@@ -91,6 +94,11 @@ export const Layout = ({ children }: { children: React.ReactNode }) => {
9194
</MDXProvider>
9295
</div>
9396
</div>
97+
{!tocLayout && (
98+
<div className="ml-8 w-[250px] hidden min-[1180px]:flex z-0 shrink-0">
99+
<TOC />
100+
</div>
101+
)}
94102
</div>
95103
<Box className="fixed bottom-0 right-0 min-[992px]:hidden ">
96104
<Fab

0 commit comments

Comments
 (0)