diff --git a/@docs/assets/logo/taddy_label.svg b/@docs/assets/logo/taddy_label.svg new file mode 100644 index 0000000..f57e37d --- /dev/null +++ b/@docs/assets/logo/taddy_label.svg @@ -0,0 +1,3 @@ + diff --git a/@docs/assets/logo/taddy_new.svg b/@docs/assets/logo/taddy_new.svg new file mode 100644 index 0000000..a48a271 --- /dev/null +++ b/@docs/assets/logo/taddy_new.svg @@ -0,0 +1,25 @@ + diff --git a/@docs/website/components/playground/CompiledCode.tsx b/@docs/website/components/playground/CompiledCode.tsx index 7e17e58..2b16bf3 100644 --- a/@docs/website/components/playground/CompiledCode.tsx +++ b/@docs/website/components/playground/CompiledCode.tsx @@ -1,26 +1,26 @@ -import {css} from 'taddy'; +import { css } from 'taddy'; -import {useAtom} from '@reatom/react'; -import type {PropsWithChildren} from 'react'; +import { useAtom } from '@reatom/react'; +import type { PropsWithChildren } from 'react'; -import {Column, Row} from '../layout'; -import {transformAtom} from './atoms'; -import {Editor} from './Editor'; -import {EditorLayer} from './EditorLayer'; -import {ReactRender} from './ReactRender'; +import { Column, Row } from '../layout'; +import { transformAtom } from './atoms'; +import { Editor } from './Editor'; +import { EditorLayer } from './EditorLayer'; +import { ReactRender } from './ReactRender'; -const Title = ({children}: PropsWithChildren) =>
,
- inlineCode: ({className, ...props}) => (
+ code: ({ ...props }) => ,
+ inlineCode: ({ className, ...props }) => (
-
+ {name !== 'test' && }
{
+ return (
+
+
+
+ Start developing with
+
+
+ Go to docs
+
+
+ );
+};
+
+
+const styles = {
+ wrapper: css({
+ margin: '100px auto 220px auto',
+ }),
+ banner: css({
+ display: 'flex',
+ flexDirection: 'column',
+ margin: 'auto',
+ padding: '65px',
+ height: '240px',
+ backgroundImage: `url(${banner.src})`,
+ backgroundRepeat: 'no-repeat',
+ backgroundSize: 'contain',
+ backgroundPosition: 'center',
+ }),
+ label: css({
+ marginTop: '8px',
+ marginLeft: '16px'
+ }),
+ text: css({
+ display: 'flex',
+ justifyContent: 'center',
+ alignItems: 'center',
+ }),
+ title: css({
+ textAlign: 'center',
+ ...typography.header2,
+ color: colors.background,
+ }),
+ link: css({
+ margin: '16px auto 0 auto',
+ padding: '15px 42px',
+ ...typography.body,
+ color: colors.text,
+ borderRadius: '50px',
+ background: colors.background,
+ transition: 'all 0.2s ease',
+
+ ':hover': {
+ color: '#247eab'
+ }
+ })
+}
\ No newline at end of file
diff --git a/@docs/website/pages/test/components/Footer/Footer.tsx b/@docs/website/pages/test/components/Footer/Footer.tsx
new file mode 100644
index 0000000..5d0ccc0
--- /dev/null
+++ b/@docs/website/pages/test/components/Footer/Footer.tsx
@@ -0,0 +1,82 @@
+import React from 'react';
+import Image from 'next/image';
+
+import { css } from 'taddy';
+
+import taddy from '@docs/website/public/logo/taddy_new.svg';
+import label from '@docs/website/public/logo/taddy_label.svg';
+import { colors, typography } from 'styles/theme';
+
+
+const links = {
+ docs: {
+ title: 'Docs',
+ href: 'https://github.com/lttb/taddy'
+ },
+ github: {
+ title: 'Github',
+ href: 'https://github.com/lttb/taddy'
+ },
+ twitter: {
+ title: 'Twitter',
+ href: 'https://twitter.com/_lttb'
+ }
+}
+
+export const Footer = () => {
+ return (
+
+ );
+};
+
+
+const styles = {
+ header: css({
+ display: 'flex',
+ flexWrap: 'wrap',
+ // justifyContent: 'center',
+ // padding: '20px 0',
+ padding: '20px 42px',
+ justifyContent: 'space-between',
+ background: '#eef7fd',
+ // '@media': {
+ // 'min-width: 768px': {
+ // padding: '20px 42px',
+ // justifyContent: 'space-between',
+ // }
+ // },
+ }),
+ left: css({
+ display: 'flex'
+ }),
+ right: css({
+ alignSelf: 'center',
+ display: 'flex',
+ alignItems: 'center'
+ }),
+ label: css({
+ marginLeft: '12px',
+ marginTop: '4px'
+ }),
+ link: css({
+ ...typography.body,
+ color: colors.text,
+ marginLeft: '48px',
+ marginBottom: '8px',
+ transition: 'all 0.2s ease',
+
+ ':hover': {
+ color: '#247eab'
+ }
+ })
+}
\ No newline at end of file
diff --git a/@docs/website/pages/test/components/Header/Header.tsx b/@docs/website/pages/test/components/Header/Header.tsx
new file mode 100644
index 0000000..9a04f11
--- /dev/null
+++ b/@docs/website/pages/test/components/Header/Header.tsx
@@ -0,0 +1,78 @@
+import React from 'react';
+import Image from 'next/image';
+
+import { css } from 'taddy';
+
+import taddy from '@docs/website/public/logo/taddy_new.svg';
+import label from '@docs/website/public/logo/taddy_label.svg';
+import { colors, typography } from 'styles/theme';
+
+
+const links = {
+ docs: {
+ title: 'Docs',
+ href: 'https://github.com/lttb/taddy'
+ },
+ github: {
+ title: 'Github',
+ href: 'https://github.com/lttb/taddy'
+ },
+ twitter: {
+ title: 'Twitter',
+ href: 'https://twitter.com/_lttb'
+ }
+}
+
+export const Header = () => {
+ return (
+
+
+
+
+
+
+
+ );
+};
+
+
+const styles = {
+ header: css({
+ display: 'flex',
+ flexWrap: 'wrap',
+ padding: '0 42px',
+ justifyContent: 'space-between',
+ // '@media': {
+ // 'min-width: 768px': {
+ // padding: '0 42px',
+ // justifyContent: 'space-between',
+ // }
+ // },
+ }),
+ left: css({
+ display: 'flex'
+ }),
+ right: css({
+ alignSelf: 'center',
+ display: 'flex',
+ alignItems: 'center'
+ }),
+ label: css({
+ marginLeft: '12px',
+ marginTop: '4px'
+ }),
+ link: css({
+ ...typography.body,
+ color: colors.text,
+ marginLeft: '48px',
+ transition: 'all 0.2s ease',
+
+ ':hover': {
+ color: '#247eab'
+ }
+ })
+}
\ No newline at end of file
diff --git a/@docs/website/pages/test/components/Hero/Hero.tsx b/@docs/website/pages/test/components/Hero/Hero.tsx
new file mode 100644
index 0000000..d97d4c5
--- /dev/null
+++ b/@docs/website/pages/test/components/Hero/Hero.tsx
@@ -0,0 +1,156 @@
+import React from 'react';
+
+import { css } from 'taddy';
+import { colors, typography } from 'styles/theme';
+
+import { motion } from 'framer-motion';
+
+import taddy from '@docs/website/public/logo/taddy_new.svg';
+import label from '@docs/website/public/logo/taddy_label.svg';
+
+import polygon1 from '@docs/website/public/logo/polygons/Polygon 1.svg';
+import polygon2 from '@docs/website/public/logo/polygons/Polygon 2.svg';
+import polygon3 from '@docs/website/public/logo/polygons/Polygon 3.svg';
+import polygon5 from '@docs/website/public/logo/polygons/Polygon 5.svg';
+import polygon6 from '@docs/website/public/logo/polygons/Polygon 6.svg';
+import polygon7 from '@docs/website/public/logo/polygons/Polygon 7.svg';
+
+import Image from 'next/image';
+
+
+export const Hero = () => {
+ return (
+
+
+ Minimal bundle sizes and{' '}
+ maximum performance with taddy,
+ atomic compile-time CSS-in-JS library for any framework.
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+const styles = {
+ wrapper: css({
+ position: 'relative',
+ padding: '0 42px'
+ // '@media': {
+ // 'min-width: 768px': {
+ // padding: '0 42px',
+ // }
+ // },
+ }),
+ h1: css({
+ ...typography.caption,
+ color: colors.text,
+ margin: 0,
+ marginTop: '60px',
+ maxWidth: '690px'
+ }),
+ blue: css({
+ color: '#247eab'
+ }),
+ mainContainer: css({
+ display: 'flex',
+ flexWrap: 'wrap',
+ justifyContent: 'space-between',
+ height: '380px',
+ }),
+ logo: css({
+ flex: '0 0 33%',
+ animation: 'float 7s ease-in-out infinite'
+ }),
+ buttons: css({
+ alignSelf: 'flex-end',
+ flex: '0 0 33%'
+ // '@media': {
+ // 'min-width: 768px': {
+ // flex: '0 0 33%',
+ // }
+ // },
+ }),
+ button: css({
+ display: 'inline-block',
+ marginRight: '12px',
+ marginTop: '12px',
+ padding: '15px 42px',
+ ...typography.body,
+ color: colors.primary,
+ borderRadius: '50px',
+ background: 'linear-gradient(90deg, #aed3e5 0%, #e7f0fd 100%)',
+ backgroundColor: '#3596ff',
+ transition: 'all 0.2s ease',
+
+ ':hover': {
+ color: colors.background
+ }
+ }),
+ install: css({
+ ...typography.body,
+ color: '#e55454'
+ })
+}
+
+
+const polygons = {
+ one: css.mixin({
+ top: '256px',
+ left: '239px'
+ }),
+ two: css.mixin({
+ top: '320px',
+ left: '340px'
+ }),
+ three: css.mixin({
+ top: '332px',
+ left: '94px'
+ }),
+ five: css.mixin({
+ top: '54px',
+ right: '269px'
+ }),
+ six: css.mixin({
+ top: '175px',
+ right: '225px'
+ }),
+ seven: css.mixin({
+ top: '45px',
+ right: '110px'
+ }),
+ common: css.mixin({
+ position: 'absolute',
+ animation: 'rotate 7s ease-in-out infinite'
+ })
+}
\ No newline at end of file
diff --git a/@docs/website/pages/test/components/KeyFeatures/KeyFeatures.tsx b/@docs/website/pages/test/components/KeyFeatures/KeyFeatures.tsx
new file mode 100644
index 0000000..144a91c
--- /dev/null
+++ b/@docs/website/pages/test/components/KeyFeatures/KeyFeatures.tsx
@@ -0,0 +1,97 @@
+import React from 'react';
+
+import { css } from 'taddy';
+import { colors, typography } from 'styles/theme';
+
+const texts = [
+ {
+ title: 'Compile-time Atomic Style',
+ text: 'generates optimized atomic styles during the build process, resulting in minimal'
+ },
+ {
+ title: 'Mixins and Composes',
+ text: 'create reusable styling objects and easily apply and combine them to your styles'
+ },
+ {
+ title: 'Framework-Agnostic',
+ text: 'can be used with any JS framework or environment, making it highly versatile and adaptable'
+ },
+ {
+ title: 'Efficient and Performant',
+ text: 'optimizes the CSS output by reducing duplication and generating atomic class names'
+ },
+ {
+ title: 'Autocomplete',
+ text: 'with TypeScript support, taddy ensures type safety, allowing you to catch errors and get code suggestions for styles'
+ },
+ {
+ title: 'Developer Experience',
+ text: 'intuitive API and powerful features make it easy to write clean and maintainable styles for your components'
+ }
+]
+
+
+
+export const KeyFeatures = () => {
+ return (
+
+ Key features
+
+ {texts.map(({ title, text }, index) => (
+
+ 🧸
+
+ {title}
+ {text}
+
+
+ ))}
+
+
+ );
+};
+
+const styles = {
+ wrapper: css({
+ padding: '80px 180px 120px 180px',
+ background: 'linear-gradient(180deg, #aed3e5 0%, #e7f0fd 100%)',
+ }),
+ title: css({
+ textAlign: 'center',
+ ...typography.header2,
+ color: colors.primary,
+ marginBottom: '45px'
+ }),
+ blocks: css({
+ display: 'grid',
+ gridGap: '36px 95px',
+ gridTemplateColumns: '1fr 1fr',
+ maxWidth: '900px',
+ margin: 'auto'
+ }),
+ block: css({
+ display: 'flex',
+ padding: '16px 20px',
+ background: 'rgba(255, 255, 255, 0.90)',
+ borderRadius: '16px',
+ color: colors.primary,
+ boxShadow: '0px 3px 10px 0px rgba(16, 60, 78, 0.15)'
+ }),
+ taddy: css({
+ marginTop: '-6px',
+ fontSize: '24px'
+ }),
+ right: css({
+ marginLeft: '12px'
+ }),
+ feature: css({
+ marginBottom: '4px',
+ ...typography.body,
+ fontWeight: 700,
+ }),
+ text: css({
+ fontSize: '16px',
+ fontWeight: '400',
+ color: colors.text
+ })
+}
\ No newline at end of file
diff --git a/@docs/website/pages/test/components/MadeFor/MadeFor.tsx b/@docs/website/pages/test/components/MadeFor/MadeFor.tsx
new file mode 100644
index 0000000..81cfb67
--- /dev/null
+++ b/@docs/website/pages/test/components/MadeFor/MadeFor.tsx
@@ -0,0 +1,46 @@
+import React from 'react';
+
+import { css } from 'taddy';
+import { colors, typography } from 'styles/theme';
+
+
+
+export const MadeFor = () => {
+ return (
+
+ Made for
+
+ {['React Native', 'React', 'Svelte', 'Next.js', 'Nuxt', 'Vue', 'Parcel', 'Remix', 'Solid'].map((name) => (
+ {name}
+ ))}
+
+
+ );
+};
+
+const styles = {
+ wrapper: css({
+ margin: '120px 84px 0 84px',
+ padding: '70px 120px',
+ }),
+ title: css({
+ textAlign: 'center',
+ ...typography.header2,
+ color: colors.primary
+ }),
+ names: css({
+ marginTop: '24px',
+ display: 'flex',
+ justifyContent: 'center',
+ flexWrap: 'wrap'
+ }),
+ name: css({
+ marginRight: '42px',
+ marginBottom: '24px',
+ padding: '15px 36px',
+ border: `1px solid #aed3e5`,
+ borderRadius: '64px',
+ color: colors.primary,
+ ...typography.body
+ }),
+}
\ No newline at end of file
diff --git a/@docs/website/pages/test/components/Playground/Playground.tsx b/@docs/website/pages/test/components/Playground/Playground.tsx
new file mode 100644
index 0000000..067aa75
--- /dev/null
+++ b/@docs/website/pages/test/components/Playground/Playground.tsx
@@ -0,0 +1,81 @@
+import React from 'react';
+import dynamic from 'next/dynamic';
+
+import { css } from 'taddy';
+import { colors, typography } from 'styles/theme';
+
+
+const Playground = dynamic(
+ () => import('@docs/website/components/playground'),
+ {
+ ssr: false,
+ loading: () => loading ...
,
+ },
+);
+
+
+
+export const PlaygroundSection = () => {
+ return (
+
+ Playground
+ You can try taddy right now
+
+
+ {
+ return (
+
+ );
+ };
+ `}
+ />
+
+
+ );
+};
+
+const styles = {
+ wrapper: css({
+ marginTop: '120px',
+ padding: '0 120px',
+ textAlign: 'center'
+ }),
+ title: css({
+ ...typography.header2,
+ color: colors.primary
+ }),
+ subtitle: css({
+ fontFamily: 'Inter',
+ fontSize: '20px',
+ fontWeight: 400,
+ }),
+ container: css({
+ marginTop: '24px'
+ })
+}
\ No newline at end of file
diff --git a/@docs/website/pages/test/index.tsx b/@docs/website/pages/test/index.tsx
new file mode 100644
index 0000000..9127fd3
--- /dev/null
+++ b/@docs/website/pages/test/index.tsx
@@ -0,0 +1,23 @@
+import { Header } from './components/Header/Header';
+import { Footer } from './components/Footer/Footer';
+import { Hero } from './components/Hero/Hero';
+import { MadeFor } from './components/MadeFor/MadeFor';
+import { KeyFeatures } from './components/KeyFeatures/KeyFeatures';
+import { Banner } from './components/Banner/Banner';
+import { PlaygroundSection } from './components/Playground/Playground';
+
+export default function Home() {
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+ >
+ );
+}
\ No newline at end of file
diff --git a/@docs/website/public/logo/banner.svg b/@docs/website/public/logo/banner.svg
new file mode 100644
index 0000000..d50a213
--- /dev/null
+++ b/@docs/website/public/logo/banner.svg
@@ -0,0 +1,59 @@
+
diff --git a/@docs/website/public/logo/polygons/Polygon 1.png b/@docs/website/public/logo/polygons/Polygon 1.png
new file mode 100644
index 0000000..2a38f77
Binary files /dev/null and b/@docs/website/public/logo/polygons/Polygon 1.png differ
diff --git a/@docs/website/public/logo/polygons/Polygon 1.svg b/@docs/website/public/logo/polygons/Polygon 1.svg
new file mode 100644
index 0000000..88ca994
--- /dev/null
+++ b/@docs/website/public/logo/polygons/Polygon 1.svg
@@ -0,0 +1,3 @@
+
diff --git a/@docs/website/public/logo/polygons/Polygon 2.svg b/@docs/website/public/logo/polygons/Polygon 2.svg
new file mode 100644
index 0000000..9ed2ac2
--- /dev/null
+++ b/@docs/website/public/logo/polygons/Polygon 2.svg
@@ -0,0 +1,3 @@
+
diff --git a/@docs/website/public/logo/polygons/Polygon 3.svg b/@docs/website/public/logo/polygons/Polygon 3.svg
new file mode 100644
index 0000000..bdd2252
--- /dev/null
+++ b/@docs/website/public/logo/polygons/Polygon 3.svg
@@ -0,0 +1,3 @@
+
diff --git a/@docs/website/public/logo/polygons/Polygon 5.svg b/@docs/website/public/logo/polygons/Polygon 5.svg
new file mode 100644
index 0000000..c0564db
--- /dev/null
+++ b/@docs/website/public/logo/polygons/Polygon 5.svg
@@ -0,0 +1,3 @@
+
diff --git a/@docs/website/public/logo/polygons/Polygon 6.svg b/@docs/website/public/logo/polygons/Polygon 6.svg
new file mode 100644
index 0000000..968141f
--- /dev/null
+++ b/@docs/website/public/logo/polygons/Polygon 6.svg
@@ -0,0 +1,3 @@
+
diff --git a/@docs/website/public/logo/polygons/Polygon 7.svg b/@docs/website/public/logo/polygons/Polygon 7.svg
new file mode 100644
index 0000000..861f293
--- /dev/null
+++ b/@docs/website/public/logo/polygons/Polygon 7.svg
@@ -0,0 +1,3 @@
+
diff --git a/@docs/website/public/logo/taddy_label.svg b/@docs/website/public/logo/taddy_label.svg
new file mode 100644
index 0000000..f57e37d
--- /dev/null
+++ b/@docs/website/public/logo/taddy_label.svg
@@ -0,0 +1,3 @@
+
diff --git a/@docs/website/public/logo/taddy_new.svg b/@docs/website/public/logo/taddy_new.svg
new file mode 100644
index 0000000..a48a271
--- /dev/null
+++ b/@docs/website/public/logo/taddy_new.svg
@@ -0,0 +1,25 @@
+
diff --git a/@docs/website/styles/globals.css b/@docs/website/styles/globals.css
index a7b07e5..66a1daa 100644
--- a/@docs/website/styles/globals.css
+++ b/@docs/website/styles/globals.css
@@ -1,3 +1,5 @@
+@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700&display=swap');
+
html,
body {
padding: 0;
@@ -32,7 +34,39 @@ svg * {
all: inherit;
}
-li + li,
-li > ul {
+li+li,
+li>ul {
margin-top: 10px;
}
+
+.float {
+ animation: float 7s ease-in-out infinite;
+}
+
+@keyframes float {
+ 0% {
+ transform: translateY(0);
+ }
+
+ 50% {
+ transform: translateY(-15px);
+ }
+
+ 100% {
+ transform: translateY(0);
+ }
+}
+
+@keyframes rotate {
+ 0% {
+ transform: translateY(0) rotate(0deg);
+ }
+
+ 50% {
+ transform: translateY(10px) rotate(20deg);
+ }
+
+ 100% {
+ transform: translateY(0) rotate(0deg);
+ }
+}
\ No newline at end of file
diff --git a/@docs/website/styles/theme.ts b/@docs/website/styles/theme.ts
new file mode 100644
index 0000000..e717011
--- /dev/null
+++ b/@docs/website/styles/theme.ts
@@ -0,0 +1,34 @@
+import { mixin } from "taddy"
+
+export const colors = {
+ text: '#000',
+ primary: '#103c4e',
+ background: '#ffffff'
+}
+
+export const typography = {
+ header1: mixin({
+ fontSize: '72px',
+ lineHeight: '88px',
+ fontWeight: '700',
+ fontFamily: 'Inter',
+ }),
+ header2: mixin({
+ fontSize: '48px',
+ lineHeight: '54px',
+ fontWeight: '700',
+ fontFamily: 'Inter'
+ }),
+ caption: mixin({
+ fontSize: '24px',
+ lineHeight: '30px',
+ fontWeight: '400',
+ fontFamily: 'Inter'
+ }),
+ body: mixin({
+ fontSize: '18px',
+ lineHeight: '22px',
+ fontWeight: '500',
+ fontFamily: 'Inter'
+ }),
+}
\ No newline at end of file
diff --git a/yarn.lock b/yarn.lock
index 4ea7fe9..7aad991 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1465,6 +1465,18 @@
resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.0.tgz#c5153d50401ee3c027a57a177bc269b16d889cb7"
integrity sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==
+"@emotion/is-prop-valid@^0.8.2":
+ version "0.8.8"
+ resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz#db28b1c4368a259b60a97311d6a952d4fd01ac1a"
+ integrity sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==
+ dependencies:
+ "@emotion/memoize" "0.7.4"
+
+"@emotion/memoize@0.7.4":
+ version "0.7.4"
+ resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb"
+ integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==
+
"@esbuild-plugins/node-modules-polyfill@^0.1.4":
version "0.1.4"
resolved "https://registry.yarnpkg.com/@esbuild-plugins/node-modules-polyfill/-/node-modules-polyfill-0.1.4.tgz#eb2f55da11967b2986c913f1a7957d1c868849c0"
@@ -10057,6 +10069,15 @@ fragment-cache@^0.2.1:
dependencies:
map-cache "^0.2.2"
+framer-motion@^10.16.4:
+ version "10.16.4"
+ resolved "https://registry.yarnpkg.com/framer-motion/-/framer-motion-10.16.4.tgz#30279ef5499b8d85db3a298ee25c83429933e9f8"
+ integrity sha512-p9V9nGomS3m6/CALXqv6nFGMuFOxbWsmaOrdmhyQimMIlLl3LC7h7l86wge/Js/8cRu5ktutS/zlzgR7eBOtFA==
+ dependencies:
+ tslib "^2.4.0"
+ optionalDependencies:
+ "@emotion/is-prop-valid" "^0.8.2"
+
freeport-async@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/freeport-async/-/freeport-async-2.0.0.tgz#6adf2ec0c629d11abff92836acd04b399135bab4"