-
+
Choose the right plan for you
-
+
Choose an affordable plan that's packed with the best features for
diff --git a/website/components/ui/accordion.tsx b/website/components/ui/accordion.tsx
new file mode 100644
index 0000000..6d6ec0e
--- /dev/null
+++ b/website/components/ui/accordion.tsx
@@ -0,0 +1,58 @@
+"use client"
+
+import * as React from "react"
+import * as AccordionPrimitive from "@radix-ui/react-accordion"
+import { ChevronDown } from "lucide-react"
+
+import { cn } from "@/utils/cn"
+
+const Accordion = AccordionPrimitive.Root
+
+const AccordionItem = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+))
+AccordionItem.displayName = "AccordionItem"
+
+const AccordionTrigger = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, children, ...props }, ref) => (
+
+ svg]:rotate-180",
+ className
+ )}
+ {...props}
+ >
+ {children}
+
+
+
+))
+AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName
+
+const AccordionContent = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, children, ...props }, ref) => (
+
+ {children}
+
+))
+
+AccordionContent.displayName = AccordionPrimitive.Content.displayName
+
+export { Accordion, AccordionItem, AccordionTrigger, AccordionContent }
diff --git a/website/components/ui/card.tsx b/website/components/ui/card.tsx
new file mode 100644
index 0000000..b874cd7
--- /dev/null
+++ b/website/components/ui/card.tsx
@@ -0,0 +1,79 @@
+import * as React from "react"
+
+import { cn } from "@/utils/cn"
+
+const Card = React.forwardRef<
+ HTMLDivElement,
+ React.HTMLAttributes
+>(({ className, ...props }, ref) => (
+
+))
+Card.displayName = "Card"
+
+const CardHeader = React.forwardRef<
+ HTMLDivElement,
+ React.HTMLAttributes
+>(({ className, ...props }, ref) => (
+
+))
+CardHeader.displayName = "CardHeader"
+
+const CardTitle = React.forwardRef<
+ HTMLDivElement,
+ React.HTMLAttributes
+>(({ className, ...props }, ref) => (
+
+))
+CardTitle.displayName = "CardTitle"
+
+const CardDescription = React.forwardRef<
+ HTMLDivElement,
+ React.HTMLAttributes
+>(({ className, ...props }, ref) => (
+
+))
+CardDescription.displayName = "CardDescription"
+
+const CardContent = React.forwardRef<
+ HTMLDivElement,
+ React.HTMLAttributes
+>(({ className, ...props }, ref) => (
+
+))
+CardContent.displayName = "CardContent"
+
+const CardFooter = React.forwardRef<
+ HTMLDivElement,
+ React.HTMLAttributes
+>(({ className, ...props }, ref) => (
+
+))
+CardFooter.displayName = "CardFooter"
+
+export { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }
diff --git a/website/configs/seo.ts b/website/configs/seo.ts
index 228f86b..dc3edaf 100644
--- a/website/configs/seo.ts
+++ b/website/configs/seo.ts
@@ -1,8 +1,12 @@
export const SEO = {
- title: "Blink Eye - Best Free Eye Care & Break Timer for Mac, Windows, Linux",
+ title: "Blink Eye - Best Eye Care & Break Timer for Mac, Windows, Linux",
description:
"A minimalist eye care reminder app to reduce eye strain, featuring customizable timers, full-screen popups, audio mute.",
keywords: [
+ "prevent rsi app",
+ "prevent cvs app",
+ "rsi app",
+ "cvs app",
"best eye care app 2024",
"screen break reminder app",
"free eye health app download",
@@ -37,9 +41,7 @@ export const SEO = {
"eye care reminder app for Linux",
"blink eye",
"blink eye for windows",
- "Noman Dhoni",
"Noman Dhoni Made App",
- "nomandhoni",
"eye care app for windows",
"20 20 20 rule app for windows",
"eye care",
@@ -53,44 +55,17 @@ export const SEO = {
"eye care tips",
"eye exercises app",
"eye protection app",
- "blink eye alternative",
- "eye care app for android",
- "eye care app for ios",
"eye care app for pc",
"eye care app for laptop",
"eye care app for desktop",
- "eye care app for chrome",
- "eye care app for firefox",
- "eye care app for safari",
- "eye care app for edge",
"eye care app for windows 10",
"eye care app for windows 11",
- "eye care app for windows 8",
- "eye care app for windows 7",
- "eye care app for windows xp",
- "eye care app for windows vista",
- "eye care app for windows 2000",
- "eye care app for windows 98",
- "eye care app for windows 95",
- "eye care app for windows 3.1",
- "eye care app for windows nt",
- "eye care app for windows me",
- "eye care app for windows ce",
"blink eye download",
"blink eye review",
"eye care app for windows",
"20 20 20 rule app for windows",
- "eye care reminder app",
- "eye care software",
- "eye care tips",
- "eye exercises app",
- "eye protection app",
- "eye care",
- "eye health app",
- "20 20 20 rule app",
],
- thumb:
- "https://repository-images.githubusercontent.com/749625079/db502010-82d3-4004-8e01-283d20915ee0",
+ thumb: "https://utfs.io/f/93hqarYp4cDdRfdEFOs3IvZkCG1g7rYl8WhFVBbNozK265eA",
url: "https://blinkeye.vercel.app",
twitter: "@blinkeyeapp",
};
diff --git a/website/package.json b/website/package.json
index 8c6151c..71d59fd 100644
--- a/website/package.json
+++ b/website/package.json
@@ -24,6 +24,7 @@
},
"dependencies": {
"@next/third-parties": "^15.0.3",
+ "@radix-ui/react-accordion": "^1.2.1",
"@radix-ui/react-dropdown-menu": "^2.1.2",
"@radix-ui/react-hover-card": "^1.1.2",
"@radix-ui/react-select": "^2.1.2",
diff --git a/website/tailwind.config.ts b/website/tailwind.config.ts
index f407f23..fd80e11 100644
--- a/website/tailwind.config.ts
+++ b/website/tailwind.config.ts
@@ -5,70 +5,78 @@ const config = {
content: ['./pages/**/*.{ts,tsx}', './components/**/*.{ts,tsx}', './app/**/*.{ts,tsx}', './src/**/*.{ts,tsx}'],
prefix: '',
theme: {
- container: {
- center: true,
- padding: '2rem',
- screens: {
- '2xl': '1400px',
- },
- },
- extend: {
- colors: {
- border: 'hsl(var(--border))',
- input: 'hsl(var(--input))',
- ring: 'hsl(var(--ring))',
- background: 'hsl(var(--background))',
- foreground: 'hsl(var(--foreground))',
- primary: {
- DEFAULT: 'hsl(var(--primary))',
- foreground: 'hsl(var(--primary-foreground))',
- },
- secondary: {
- DEFAULT: 'hsl(var(--secondary))',
- foreground: 'hsl(var(--secondary-foreground))',
- },
- destructive: {
- DEFAULT: 'hsl(var(--destructive))',
- foreground: 'hsl(var(--destructive-foreground))',
- },
- muted: {
- DEFAULT: 'hsl(var(--muted))',
- foreground: 'hsl(var(--muted-foreground))',
- },
- accent: {
- DEFAULT: 'hsl(var(--accent))',
- foreground: 'hsl(var(--accent-foreground))',
- },
- popover: {
- DEFAULT: 'hsl(var(--popover))',
- foreground: 'hsl(var(--popover-foreground))',
- },
- card: {
- DEFAULT: 'hsl(var(--card))',
- foreground: 'hsl(var(--card-foreground))',
- },
- },
- borderRadius: {
- lg: 'var(--radius)',
- md: 'calc(var(--radius) - 2px)',
- sm: 'calc(var(--radius) - 4px)',
- },
- keyframes: {
- 'accordion-down': {
- from: { height: '0' },
- to: { height: 'var(--radix-accordion-content-height)' },
- },
- 'accordion-up': {
- from: { height: 'var(--radix-accordion-content-height)' },
- to: { height: '0' },
- },
- },
- animation: {
- 'accordion-down': 'accordion-down 0.2s ease-out',
- 'accordion-up': 'accordion-up 0.2s ease-out',
- },
- },
- },
+ container: {
+ center: true,
+ padding: '2rem',
+ screens: {
+ '2xl': '1400px'
+ }
+ },
+ extend: {
+ colors: {
+ border: 'hsl(var(--border))',
+ input: 'hsl(var(--input))',
+ ring: 'hsl(var(--ring))',
+ background: 'hsl(var(--background))',
+ foreground: 'hsl(var(--foreground))',
+ primary: {
+ DEFAULT: 'hsl(var(--primary))',
+ foreground: 'hsl(var(--primary-foreground))'
+ },
+ secondary: {
+ DEFAULT: 'hsl(var(--secondary))',
+ foreground: 'hsl(var(--secondary-foreground))'
+ },
+ destructive: {
+ DEFAULT: 'hsl(var(--destructive))',
+ foreground: 'hsl(var(--destructive-foreground))'
+ },
+ muted: {
+ DEFAULT: 'hsl(var(--muted))',
+ foreground: 'hsl(var(--muted-foreground))'
+ },
+ accent: {
+ DEFAULT: 'hsl(var(--accent))',
+ foreground: 'hsl(var(--accent-foreground))'
+ },
+ popover: {
+ DEFAULT: 'hsl(var(--popover))',
+ foreground: 'hsl(var(--popover-foreground))'
+ },
+ card: {
+ DEFAULT: 'hsl(var(--card))',
+ foreground: 'hsl(var(--card-foreground))'
+ }
+ },
+ borderRadius: {
+ lg: 'var(--radius)',
+ md: 'calc(var(--radius) - 2px)',
+ sm: 'calc(var(--radius) - 4px)'
+ },
+ keyframes: {
+ 'accordion-down': {
+ from: {
+ height: '0'
+ },
+ to: {
+ height: 'var(--radix-accordion-content-height)'
+ }
+ },
+ 'accordion-up': {
+ from: {
+ height: 'var(--radix-accordion-content-height)'
+ },
+ to: {
+ height: '0'
+ }
+ }
+ },
+ animation: {
+ 'accordion-down': 'accordion-down 0.2s ease-out',
+ 'accordion-up': 'accordion-up 0.2s ease-out'
+ }
+ }
+ },
plugins: [require('tailwindcss-animate')],
} satisfies Config;