Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
137 changes: 137 additions & 0 deletions app/css/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
/* Additional styles */
@import './additional-styles/utility-patterns.css' layer(components);
@import './additional-styles/theme.css';
@import "tw-animate-css";

@custom-variant dark (&:is(.dark *));

@plugin "@tailwindcss/forms" {
strategy: base;
Expand Down Expand Up @@ -91,3 +94,137 @@
border-color: var(--color-gray-200, currentColor);
}
}

@theme inline {
--radius-sm: calc(var(--radius) - 4px);
--radius-md: calc(var(--radius) - 2px);
--radius-lg: var(--radius);
--radius-xl: calc(var(--radius) + 4px);
--color-background: var(--background);
--color-foreground: var(--foreground);
--color-card: var(--card);
--color-card-foreground: var(--card-foreground);
--color-popover: var(--popover);
--color-popover-foreground: var(--popover-foreground);
--color-primary: var(--primary);
--color-primary-foreground: var(--primary-foreground);
--color-secondary: var(--secondary);
--color-secondary-foreground: var(--secondary-foreground);
--color-muted: var(--muted);
--color-muted-foreground: var(--muted-foreground);
--color-accent: var(--accent);
--color-accent-foreground: var(--accent-foreground);
--color-destructive: var(--destructive);
--color-border: var(--border);
--color-input: var(--input);
--color-ring: var(--ring);
--color-chart-1: var(--chart-1);
--color-chart-2: var(--chart-2);
--color-chart-3: var(--chart-3);
--color-chart-4: var(--chart-4);
--color-chart-5: var(--chart-5);
--color-sidebar: var(--sidebar);
--color-sidebar-foreground: var(--sidebar-foreground);
--color-sidebar-primary: var(--sidebar-primary);
--color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
--color-sidebar-accent: var(--sidebar-accent);
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
--color-sidebar-border: var(--sidebar-border);
--color-sidebar-ring: var(--sidebar-ring);
--animate-marquee: marquee var(--duration) infinite linear;
--animate-marquee-vertical: marquee-vertical var(--duration) linear infinite;
@keyframes marquee {
from {
transform: translateX(0);
}
to {
transform: translateX(calc(-100% - var(--gap)));
}
}
@keyframes marquee-vertical {
from {
transform: translateY(0);
}
to {
transform: translateY(calc(-100% - var(--gap)));
}
}
}

:root {
--radius: 0.625rem;
--card: oklch(1 0 0);
--card-foreground: oklch(0.145 0 0);
--popover: oklch(1 0 0);
--popover-foreground: oklch(0.145 0 0);
--primary: oklch(0.205 0 0);
--primary-foreground: oklch(0.985 0 0);
--secondary: oklch(0.97 0 0);
--secondary-foreground: oklch(0.205 0 0);
--muted: oklch(0.97 0 0);
--muted-foreground: oklch(0.556 0 0);
--accent: oklch(0.97 0 0);
--accent-foreground: oklch(0.205 0 0);
--destructive: oklch(0.577 0.245 27.325);
--border: oklch(0.922 0 0);
--input: oklch(0.922 0 0);
--ring: oklch(0.708 0 0);
--chart-1: oklch(0.646 0.222 41.116);
--chart-2: oklch(0.6 0.118 184.704);
--chart-3: oklch(0.398 0.07 227.392);
--chart-4: oklch(0.828 0.189 84.429);
--chart-5: oklch(0.769 0.188 70.08);
--sidebar: oklch(0.985 0 0);
--sidebar-foreground: oklch(0.145 0 0);
--sidebar-primary: oklch(0.205 0 0);
--sidebar-primary-foreground: oklch(0.985 0 0);
--sidebar-accent: oklch(0.97 0 0);
--sidebar-accent-foreground: oklch(0.205 0 0);
--sidebar-border: oklch(0.922 0 0);
--sidebar-ring: oklch(0.708 0 0);
--background: oklch(1 0 0);
--foreground: oklch(0.145 0 0);
}

.dark {
--background: oklch(0.145 0 0);
--foreground: oklch(0.985 0 0);
--card: oklch(0.205 0 0);
--card-foreground: oklch(0.985 0 0);
--popover: oklch(0.205 0 0);
--popover-foreground: oklch(0.985 0 0);
--primary: oklch(0.922 0 0);
--primary-foreground: oklch(0.205 0 0);
--secondary: oklch(0.269 0 0);
--secondary-foreground: oklch(0.985 0 0);
--muted: oklch(0.269 0 0);
--muted-foreground: oklch(0.708 0 0);
--accent: oklch(0.269 0 0);
--accent-foreground: oklch(0.985 0 0);
--destructive: oklch(0.704 0.191 22.216);
--border: oklch(1 0 0 / 10%);
--input: oklch(1 0 0 / 15%);
--ring: oklch(0.556 0 0);
--chart-1: oklch(0.488 0.243 264.376);
--chart-2: oklch(0.696 0.17 162.48);
--chart-3: oklch(0.769 0.188 70.08);
--chart-4: oklch(0.627 0.265 303.9);
--chart-5: oklch(0.645 0.246 16.439);
--sidebar: oklch(0.205 0 0);
--sidebar-foreground: oklch(0.985 0 0);
--sidebar-primary: oklch(0.488 0.243 264.376);
--sidebar-primary-foreground: oklch(0.985 0 0);
--sidebar-accent: oklch(0.269 0 0);
--sidebar-accent-foreground: oklch(0.985 0 0);
--sidebar-border: oklch(1 0 0 / 10%);
--sidebar-ring: oklch(0.556 0 0);
}

@layer base {
* {
@apply border-border outline-ring/50;
}
body {
@apply bg-background text-foreground;
}
}
22 changes: 22 additions & 0 deletions components.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"$schema": "https://ui.shadcn.com/schema.json",
"style": "new-york",
"rsc": true,
"tsx": true,
"tailwind": {
"config": "",
"css": "app/css/style.css",
"baseColor": "neutral",
"cssVariables": true,
"prefix": ""
},
"iconLibrary": "lucide",
"aliases": {
"components": "@/components",
"utils": "@/lib/utils",
"ui": "@/components/ui",
"lib": "@/lib",
"hooks": "@/hooks"
},
"registries": {}
}
81 changes: 69 additions & 12 deletions components/features.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
"use client";

import Image from "next/image";
import BlurredShapeGray from "@/public/images/blurred-shape-gray.svg";
import BlurredShape from "@/public/images/blurred-shape.svg";
import FeaturesImage from "@/public/images/features.png";
import { motion } from "motion/react";

export default function Features() {
return (
Expand Down Expand Up @@ -59,7 +62,16 @@ export default function Features() {
</div>
{/* Items */}
<div className="mx-auto grid max-w-sm gap-12 sm:max-w-none sm:grid-cols-2 md:gap-x-14 md:gap-y-16 lg:grid-cols-3">
<article>
<motion.article
whileHover={{
scale: 1.1,
// Will be used when gesture starts
transition: { duration: 0.5 },
}}
// Will be used when gesture ends
transition={{ duration: 0.5 }}
className="rounded-2xl border p-4 border-neutral-600 hover:border-indigo-400"
>
<svg
className="mb-3 fill-indigo-500"
xmlns="http://www.w3.org/2000/svg"
Expand All @@ -79,8 +91,17 @@ export default function Features() {
Track progress across custom flows for your team. Find the right
balance for the user, privacy and security.
</p>
</article>
<article>
</motion.article>
<motion.article
whileHover={{
scale: 1.1,
// Will be used when gesture starts
transition: { duration: 0.5 },
}}
// Will be used when gesture ends
transition={{ duration: 0.5 }}
className="rounded-2xl border p-4 border-neutral-600 hover:border-indigo-400"
>
<svg
className="mb-3 fill-indigo-500"
xmlns="http://www.w3.org/2000/svg"
Expand All @@ -97,8 +118,17 @@ export default function Features() {
Track progress across custom flows for your team. Find the right
balance for the user, privacy and security.
</p>
</article>
<article>
</motion.article>
<motion.article
whileHover={{
scale: 1.1,
// Will be used when gesture starts
transition: { duration: 0.5 },
}}
// Will be used when gesture ends
transition={{ duration: 0.5 }}
className="rounded-2xl border p-4 border-neutral-600 hover:border-indigo-400"
>
<svg
className="mb-3 fill-indigo-500"
xmlns="http://www.w3.org/2000/svg"
Expand All @@ -118,8 +148,17 @@ export default function Features() {
Track progress across custom flows for your team. Find the right
balance for the user, privacy and security.
</p>
</article>
<article>
</motion.article>
<motion.article
whileHover={{
scale: 1.1,
// Will be used when gesture starts
transition: { duration: 0.5 },
}}
// Will be used when gesture ends
transition={{ duration: 0.5 }}
className="rounded-2xl border p-4 border-neutral-600 hover:border-indigo-400"
>
<svg
className="mb-3 fill-indigo-500"
xmlns="http://www.w3.org/2000/svg"
Expand All @@ -144,8 +183,17 @@ export default function Features() {
Track progress across custom flows for your team. Find the right
balance for the user, privacy and security.
</p>
</article>
<article>
</motion.article>
<motion.article
whileHover={{
scale: 1.1,
// Will be used when gesture starts
transition: { duration: 0.5 },
}}
// Will be used when gesture ends
transition={{ duration: 0.5 }}
className="rounded-2xl border p-4 border-neutral-600 hover:border-indigo-400"
>
<svg
className="mb-3 fill-indigo-500"
xmlns="http://www.w3.org/2000/svg"
Expand All @@ -165,8 +213,17 @@ export default function Features() {
Track progress across custom flows for your team. Find the right
balance for the user, privacy and security.
</p>
</article>
<article>
</motion.article>
<motion.article
whileHover={{
scale: 1.1,
// Will be used when gesture starts
transition: { duration: 0.5 },
}}
// Will be used when gesture ends
transition={{ duration: 0.5 }}
className="rounded-2xl border p-4 border-neutral-600 hover:border-indigo-400"
>
<svg
className="mb-3 fill-indigo-500"
xmlns="http://www.w3.org/2000/svg"
Expand All @@ -186,7 +243,7 @@ export default function Features() {
Track progress across custom flows for your team. Find the right
balance for the user, privacy and security.
</p>
</article>
</motion.article>
</div>
</div>
</div>
Expand Down
Loading