upd
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,221 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="robots" content="noindex, noarchive">
|
||||
<meta name="format-detection" content="telephone=no">
|
||||
<title>Transfonter demo</title>
|
||||
<link href="stylesheet.css" rel="stylesheet">
|
||||
<style>
|
||||
/*
|
||||
http://meyerweb.com/eric/tools/css/reset/
|
||||
v2.0 | 20110126
|
||||
License: none (public domain)
|
||||
*/
|
||||
html, body, div, span, applet, object, iframe,
|
||||
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
|
||||
a, abbr, acronym, address, big, cite, code,
|
||||
del, dfn, em, img, ins, kbd, q, s, samp,
|
||||
small, strike, strong, sub, sup, tt, var,
|
||||
b, u, i, center,
|
||||
dl, dt, dd, ol, ul, li,
|
||||
fieldset, form, label, legend,
|
||||
table, caption, tbody, tfoot, thead, tr, th, td,
|
||||
article, aside, canvas, details, embed,
|
||||
figure, figcaption, footer, header, hgroup,
|
||||
menu, nav, output, ruby, section, summary,
|
||||
time, mark, audio, video {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
font-size: 100%;
|
||||
font: inherit;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
/* HTML5 display-role reset for older browsers */
|
||||
article, aside, details, figcaption, figure,
|
||||
footer, header, hgroup, menu, nav, section {
|
||||
display: block;
|
||||
}
|
||||
body {
|
||||
line-height: 1;
|
||||
}
|
||||
ol, ul {
|
||||
list-style: none;
|
||||
}
|
||||
blockquote, q {
|
||||
quotes: none;
|
||||
}
|
||||
blockquote:before, blockquote:after,
|
||||
q:before, q:after {
|
||||
content: '';
|
||||
content: none;
|
||||
}
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
/* demo styles */
|
||||
body {
|
||||
background: #f0f0f0;
|
||||
color: #000;
|
||||
}
|
||||
.page {
|
||||
background: #fff;
|
||||
width: 920px;
|
||||
margin: 0 auto;
|
||||
padding: 20px 20px 0 20px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.font-container {
|
||||
overflow-x: auto;
|
||||
overflow-y: hidden;
|
||||
margin-bottom: 40px;
|
||||
line-height: 1.3;
|
||||
white-space: nowrap;
|
||||
padding-bottom: 5px;
|
||||
}
|
||||
h1 {
|
||||
position: relative;
|
||||
background: #444;
|
||||
font-size: 32px;
|
||||
color: #fff;
|
||||
padding: 10px 20px;
|
||||
margin: 0 -20px 12px -20px;
|
||||
}
|
||||
.letters {
|
||||
font-size: 25px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
.s10:before {
|
||||
content: '10px';
|
||||
}
|
||||
.s11:before {
|
||||
content: '11px';
|
||||
}
|
||||
.s12:before {
|
||||
content: '12px';
|
||||
}
|
||||
.s14:before {
|
||||
content: '14px';
|
||||
}
|
||||
.s18:before {
|
||||
content: '18px';
|
||||
}
|
||||
.s24:before {
|
||||
content: '24px';
|
||||
}
|
||||
.s30:before {
|
||||
content: '30px';
|
||||
}
|
||||
.s36:before {
|
||||
content: '36px';
|
||||
}
|
||||
.s48:before {
|
||||
content: '48px';
|
||||
}
|
||||
.s60:before {
|
||||
content: '60px';
|
||||
}
|
||||
.s72:before {
|
||||
content: '72px';
|
||||
}
|
||||
.s10:before, .s11:before, .s12:before, .s14:before,
|
||||
.s18:before, .s24:before, .s30:before, .s36:before,
|
||||
.s48:before, .s60:before, .s72:before {
|
||||
font-family: Arial, sans-serif;
|
||||
font-size: 10px;
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
color: #999;
|
||||
padding-right: 6px;
|
||||
}
|
||||
pre {
|
||||
display: block;
|
||||
padding: 9px;
|
||||
margin: 0 0 12px;
|
||||
font-family: Monaco, Menlo, Consolas, "Courier New", monospace;
|
||||
font-size: 13px;
|
||||
line-height: 1.428571429;
|
||||
color: #333;
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
background-color: #f5f5f5;
|
||||
border: 1px solid #ccc;
|
||||
overflow-x: auto;
|
||||
border-radius: 4px;
|
||||
}
|
||||
/* responsive */
|
||||
@media (max-width: 959px) {
|
||||
.page {
|
||||
width: auto;
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="page">
|
||||
<div class="demo">
|
||||
<h1 style="font-family: 'Mixcase Mixed'; font-weight: normal; font-style: normal;">Mixcase Mixed</h1>
|
||||
<pre title="Usage">.your-style {
|
||||
font-family: 'Mixcase Mixed';
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}</pre>
|
||||
<pre title="Preload (optional)">
|
||||
<link rel="preload" href="MixcaseMixed.woff2" as="font" type="font/woff2" crossorigin></pre>
|
||||
<div class="font-container" style="font-family: 'Mixcase Mixed'; font-weight: normal; font-style: normal;">
|
||||
<p class="letters">
|
||||
abcdefghijklmnopqrstuvwxyz<br>
|
||||
ABCDEFGHIJKLMNOPQRSTUVWXYZ<br>
|
||||
0123456789.:,;()*!?'@#<>$%&^+-=~
|
||||
</p>
|
||||
<p class="s10" style="font-size: 10px;">The quick brown fox jumps over the lazy dog.</p>
|
||||
<p class="s11" style="font-size: 11px;">The quick brown fox jumps over the lazy dog.</p>
|
||||
<p class="s12" style="font-size: 12px;">The quick brown fox jumps over the lazy dog.</p>
|
||||
<p class="s14" style="font-size: 14px;">The quick brown fox jumps over the lazy dog.</p>
|
||||
<p class="s18" style="font-size: 18px;">The quick brown fox jumps over the lazy dog.</p>
|
||||
<p class="s24" style="font-size: 24px;">The quick brown fox jumps over the lazy dog.</p>
|
||||
<p class="s30" style="font-size: 30px;">The quick brown fox jumps over the lazy dog.</p>
|
||||
<p class="s36" style="font-size: 36px;">The quick brown fox jumps over the lazy dog.</p>
|
||||
<p class="s48" style="font-size: 48px;">The quick brown fox jumps over the lazy dog.</p>
|
||||
<p class="s60" style="font-size: 60px;">The quick brown fox jumps over the lazy dog.</p>
|
||||
<p class="s72" style="font-size: 72px;">The quick brown fox jumps over the lazy dog.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="demo">
|
||||
<h1 style="font-family: 'Mixcase Unmixed'; font-weight: normal; font-style: normal;">Mixcase Unmixed</h1>
|
||||
<pre title="Usage">.your-style {
|
||||
font-family: 'Mixcase Unmixed';
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}</pre>
|
||||
<pre title="Preload (optional)">
|
||||
<link rel="preload" href="MixcaseUnmixed.woff2" as="font" type="font/woff2" crossorigin></pre>
|
||||
<div class="font-container" style="font-family: 'Mixcase Unmixed'; font-weight: normal; font-style: normal;">
|
||||
<p class="letters">
|
||||
abcdefghijklmnopqrstuvwxyz<br>
|
||||
ABCDEFGHIJKLMNOPQRSTUVWXYZ<br>
|
||||
0123456789.:,;()*!?'@#<>$%&^+-=~
|
||||
</p>
|
||||
<p class="s10" style="font-size: 10px;">The quick brown fox jumps over the lazy dog.</p>
|
||||
<p class="s11" style="font-size: 11px;">The quick brown fox jumps over the lazy dog.</p>
|
||||
<p class="s12" style="font-size: 12px;">The quick brown fox jumps over the lazy dog.</p>
|
||||
<p class="s14" style="font-size: 14px;">The quick brown fox jumps over the lazy dog.</p>
|
||||
<p class="s18" style="font-size: 18px;">The quick brown fox jumps over the lazy dog.</p>
|
||||
<p class="s24" style="font-size: 24px;">The quick brown fox jumps over the lazy dog.</p>
|
||||
<p class="s30" style="font-size: 30px;">The quick brown fox jumps over the lazy dog.</p>
|
||||
<p class="s36" style="font-size: 36px;">The quick brown fox jumps over the lazy dog.</p>
|
||||
<p class="s48" style="font-size: 48px;">The quick brown fox jumps over the lazy dog.</p>
|
||||
<p class="s60" style="font-size: 60px;">The quick brown fox jumps over the lazy dog.</p>
|
||||
<p class="s72" style="font-size: 72px;">The quick brown fox jumps over the lazy dog.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,26 @@
|
||||
@font-face {
|
||||
font-family: 'Mixcase Mixed';
|
||||
src: url('MixcaseMixed.eot');
|
||||
src: local('Mixcase Mixed'), local('MixcaseMixed'),
|
||||
url('MixcaseMixed.eot?#iefix') format('embedded-opentype'),
|
||||
url('MixcaseMixed.woff2') format('woff2'),
|
||||
url('MixcaseMixed.woff') format('woff'),
|
||||
url('MixcaseMixed.ttf') format('truetype');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Mixcase Unmixed';
|
||||
src: url('MixcaseUnmixed.eot');
|
||||
src: local('Mixcase Unmixed'), local('MixcaseUnmixed'),
|
||||
url('MixcaseUnmixed.eot?#iefix') format('embedded-opentype'),
|
||||
url('MixcaseUnmixed.woff2') format('woff2'),
|
||||
url('MixcaseUnmixed.woff') format('woff'),
|
||||
url('MixcaseUnmixed.ttf') format('truetype');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
interface Props {
|
||||
variant?: "primary" | "secondary";
|
||||
size?: "large" | "medium" | "small";
|
||||
roundedFull?: boolean;
|
||||
icon?: JSX.Element;
|
||||
onlyIcon?: boolean;
|
||||
children?: React.ReactNode;
|
||||
onClick?: () => void;
|
||||
}
|
||||
|
||||
const variantClasses = {
|
||||
primary: "bg-[#00BED7] text-white hover:bg-[#0AB3C9]",
|
||||
secondary: "",
|
||||
};
|
||||
|
||||
const sizeClasses = {
|
||||
large: "px-4 py-3 gap-2 text-base",
|
||||
medium: "px-3.5 py-2.5 gap-1 text-sm",
|
||||
small: "px-3 py-2.5 gap-1 text-xs",
|
||||
};
|
||||
|
||||
function Button2({
|
||||
variant = "primary",
|
||||
size = "medium",
|
||||
roundedFull = false,
|
||||
icon,
|
||||
onlyIcon = false,
|
||||
children,
|
||||
onClick,
|
||||
}: Props) {
|
||||
return (
|
||||
<button
|
||||
className={`flex items-center transition-colors w-fit ${
|
||||
variantClasses[variant]
|
||||
} ${sizeClasses[size]} ${roundedFull ? "rounded-full" : "rounded-lg"} `}
|
||||
onClick={onClick}
|
||||
>
|
||||
{onlyIcon ? (
|
||||
icon
|
||||
) : (
|
||||
<>
|
||||
{icon}
|
||||
{children}
|
||||
</>
|
||||
)}
|
||||
</button>
|
||||
);
|
||||
}
|
||||
|
||||
export default Button2;
|
||||
@@ -1,3 +1,5 @@
|
||||
@import url("/fonts/Mixcase/stylesheet.css");
|
||||
|
||||
@tailwind base;
|
||||
@tailwind components;
|
||||
@tailwind utilities;
|
||||
@@ -45,7 +47,7 @@ body {
|
||||
}
|
||||
|
||||
.font-mixcase {
|
||||
font-family: "Mixcase", sans-serif;
|
||||
font-family: "Mixcase Unmixed", sans-serif;
|
||||
}
|
||||
|
||||
@layer components {
|
||||
|
||||
@@ -9,7 +9,7 @@ import DesktopHeader from "../components/header/Header/DesktopHeader";
|
||||
import MobileHeader from "../components/header/Header/MobileHeader";
|
||||
import Footer from "../components/Footer";
|
||||
|
||||
const WithoutFooterLayout = () => {
|
||||
function WithFooterLayout() {
|
||||
const { modal } = useModal();
|
||||
const { setOnFullscreen } = useFullScreen();
|
||||
const onFullscreenHandle = useFullScreenHandle();
|
||||
@@ -20,7 +20,10 @@ const WithoutFooterLayout = () => {
|
||||
|
||||
return (
|
||||
<>
|
||||
<FullScreen handle={onFullscreenHandle} className="flex flex-col min-h-screen">
|
||||
<FullScreen
|
||||
handle={onFullscreenHandle}
|
||||
className="flex flex-col min-h-screen"
|
||||
>
|
||||
{isMobile ? <MobileHeader /> : <DesktopHeader />}
|
||||
{modal}
|
||||
<Outlet />
|
||||
@@ -28,6 +31,6 @@ const WithoutFooterLayout = () => {
|
||||
</FullScreen>
|
||||
</>
|
||||
);
|
||||
};
|
||||
}
|
||||
|
||||
export default WithoutFooterLayout;
|
||||
export default WithFooterLayout;
|
||||
|
||||
+5
-4
@@ -5,7 +5,7 @@ import DefaultLayout from "./layouts/DefaultLayout";
|
||||
import MasterplanPage from "./pages/MasterplanPage";
|
||||
import ComplexPage from "./pages/ComplexPage";
|
||||
import ComplexWingPage from "./pages/ComplexWingPage";
|
||||
import AboutProjectsPage from "./pages/AboutProjectsPage";
|
||||
// import AboutProjectsPage from "./pages/AboutProjectsPage";
|
||||
import UnitTypesPage from "./pages/UnitTypesPage";
|
||||
import AboutPage from "./pages/AboutPage";
|
||||
// import ApartmentPage from "./pages/ApartmentPage";
|
||||
@@ -13,7 +13,8 @@ import VirtualTourPage from "./pages/VirtualTourPage";
|
||||
import UnitTypesItemPage from "./pages/UnitTypesItemPage";
|
||||
import SearchPage2 from "./pages/SearchPage2";
|
||||
import FavoritesPage2 from "./pages/FavoritesPage2";
|
||||
import WithoutFooterLayout from "./layouts/WithFooterLayout";
|
||||
import WithFooterLayout from "./layouts/WithFooterLayout";
|
||||
import AboutProjects2Page from "./pages/AboutProjects2Page";
|
||||
|
||||
const router = createBrowserRouter([
|
||||
{
|
||||
@@ -44,11 +45,11 @@ const router = createBrowserRouter([
|
||||
},
|
||||
{
|
||||
path: "/",
|
||||
element: <WithoutFooterLayout />,
|
||||
element: <WithFooterLayout />,
|
||||
children: [
|
||||
{
|
||||
path: "about-projects",
|
||||
element: <AboutProjectsPage />,
|
||||
element: <AboutProjects2Page />,
|
||||
},
|
||||
{
|
||||
path: "about",
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
import Button2 from "../components/Button2";
|
||||
import ArrowLeftIcon from "../components/icons/ArrowLeftIcon";
|
||||
|
||||
function AboutProjects2Page() {
|
||||
return (
|
||||
<div className="pt-[58px] space-y-[100px]">
|
||||
<div className="px-6 pt-16 space-y-16">
|
||||
<p className="text-[56px] text-[#0D1922] font-mixcase -tracking-[1.68px] uppercase leading-none">
|
||||
Rove Home this residence a complete ecosystem that has everything
|
||||
you’ll ever need. This isn’t just where you’ll live. It’s where you’ll
|
||||
thrive.
|
||||
</p>
|
||||
<div className="flex gap-6">
|
||||
<div className="w-1/4 flex flex-col justify-between gap-6">
|
||||
<div className="space-y-6">
|
||||
<p className="text-xs font-semibold">ABOUT ROVE HOME</p>
|
||||
<p className="text-2xl text-[#00BED7] font-semibold">
|
||||
Embrace Rove’s forever-young spirit at Rove Home, where
|
||||
inspiring design and vibrant art installations converge with an
|
||||
exceptional location and an extended playlist of life-enhancing{" "}
|
||||
</p>
|
||||
</div>
|
||||
<Button2 icon={<ArrowLeftIcon />}>Masterplan</Button2>
|
||||
</div>
|
||||
<div className="w-3/4">
|
||||
<img
|
||||
src=""
|
||||
alt=""
|
||||
className="aspect-[22/9] h-full w-full rounded-2xl object-cover"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="relative h-screen bg-blue-100">
|
||||
<div className="absolute w-full h-full"></div>
|
||||
<div className="absolute bottom-6 left-6 bg-white w-[378px] p-8 rounded-2xl space-y-8">
|
||||
<div className="space-y-4">
|
||||
<p className="text-2xl text-[#00BED7] font-semibold">Rove Home</p>
|
||||
<p>
|
||||
Rove Home branded residences are an extension of the Rove Hotels
|
||||
brand. These branded residences are for hassle-free living, with
|
||||
personalized expressions of your ideal living environment.
|
||||
</p>
|
||||
<p>
|
||||
We’ve handpicked prime locations to ensure you get the very best.
|
||||
From interiors that uplift and energise, and amenities that are
|
||||
thoughtful and engaging to contemporarily stylish yet cosy
|
||||
apartments, we decided that this is the kind of place where we’d
|
||||
like to live – so we set out to build exactly that. We think
|
||||
you’ll agree.
|
||||
</p>
|
||||
</div>
|
||||
<div className=""></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default AboutProjects2Page;
|
||||
Reference in New Issue
Block a user