32 | {description} 33 |
34 |18 |
21 | "{quote}" 22 |
23 | 24 |{excerpt}
50 |66 | Don't just take our word for it — hear from some of our satisfied clients about their experience working with us. 67 |
68 |74 | Discover our latest thoughts and insights on web development, design, and AI technology. 75 |
76 |84 | Discover how we've helped businesses transform their digital presence with our innovative solutions. 85 |
86 |161 | {body} 162 |
163 | ) 164 | }) 165 | FormMessage.displayName = "FormMessage" 166 | 167 | export { 168 | useFormField, 169 | Form, 170 | FormItem, 171 | FormLabel, 172 | FormControl, 173 | FormDescription, 174 | FormMessage, 175 | FormField, 176 | } 177 | -------------------------------------------------------------------------------- /tailwind.config.ts: -------------------------------------------------------------------------------- 1 | 2 | import type { Config } from "tailwindcss"; 3 | 4 | export default { 5 | darkMode: ["class"], 6 | content: [ 7 | "./pages/**/*.{ts,tsx}", 8 | "./components/**/*.{ts,tsx}", 9 | "./app/**/*.{ts,tsx}", 10 | "./src/**/*.{ts,tsx}", 11 | ], 12 | prefix: "", 13 | theme: { 14 | container: { 15 | center: true, 16 | padding: '2rem', 17 | screens: { 18 | '2xl': '1400px' 19 | } 20 | }, 21 | extend: { 22 | colors: { 23 | border: 'hsl(var(--border))', 24 | input: 'hsl(var(--input))', 25 | ring: 'hsl(var(--ring))', 26 | background: 'hsl(var(--background))', 27 | foreground: 'hsl(var(--foreground))', 28 | primary: { 29 | DEFAULT: 'hsl(var(--primary))', 30 | foreground: 'hsl(var(--primary-foreground))' 31 | }, 32 | secondary: { 33 | DEFAULT: 'hsl(var(--secondary))', 34 | foreground: 'hsl(var(--secondary-foreground))' 35 | }, 36 | destructive: { 37 | DEFAULT: 'hsl(var(--destructive))', 38 | foreground: 'hsl(var(--destructive-foreground))' 39 | }, 40 | muted: { 41 | DEFAULT: 'hsl(var(--muted))', 42 | foreground: 'hsl(var(--muted-foreground))' 43 | }, 44 | accent: { 45 | DEFAULT: 'hsl(var(--accent))', 46 | foreground: 'hsl(var(--accent-foreground))' 47 | }, 48 | popover: { 49 | DEFAULT: 'hsl(var(--popover))', 50 | foreground: 'hsl(var(--popover-foreground))' 51 | }, 52 | card: { 53 | DEFAULT: 'hsl(var(--card))', 54 | foreground: 'hsl(var(--card-foreground))' 55 | }, 56 | sidebar: { 57 | DEFAULT: 'hsl(var(--sidebar-background))', 58 | foreground: 'hsl(var(--sidebar-foreground))', 59 | primary: 'hsl(var(--sidebar-primary))', 60 | 'primary-foreground': 'hsl(var(--sidebar-primary-foreground))', 61 | accent: 'hsl(var(--sidebar-accent))', 62 | 'accent-foreground': 'hsl(var(--sidebar-accent-foreground))', 63 | border: 'hsl(var(--sidebar-border))', 64 | ring: 'hsl(var(--sidebar-ring))' 65 | } 66 | }, 67 | borderRadius: { 68 | lg: 'var(--radius)', 69 | md: 'calc(var(--radius) - 2px)', 70 | sm: 'calc(var(--radius) - 4px)' 71 | }, 72 | keyframes: { 73 | 'accordion-down': { 74 | from: { height: '0' }, 75 | to: { height: 'var(--radix-accordion-content-height)' } 76 | }, 77 | 'accordion-up': { 78 | from: { height: 'var(--radix-accordion-content-height)' }, 79 | to: { height: '0' } 80 | }, 81 | 'fade-in': { 82 | '0%': { opacity: '0' }, 83 | '100%': { opacity: '1' } 84 | }, 85 | 'fade-out': { 86 | '0%': { opacity: '1' }, 87 | '100%': { opacity: '0' } 88 | }, 89 | 'slide-up': { 90 | '0%': { transform: 'translateY(20px)', opacity: '0' }, 91 | '100%': { transform: 'translateY(0)', opacity: '1' } 92 | }, 93 | 'slide-down': { 94 | '0%': { transform: 'translateY(-20px)', opacity: '0' }, 95 | '100%': { transform: 'translateY(0)', opacity: '1' } 96 | }, 97 | 'slide-left': { 98 | '0%': { transform: 'translateX(20px)', opacity: '0' }, 99 | '100%': { transform: 'translateX(0)', opacity: '1' } 100 | }, 101 | 'slide-right': { 102 | '0%': { transform: 'translateX(-20px)', opacity: '0' }, 103 | '100%': { transform: 'translateX(0)', opacity: '1' } 104 | }, 105 | 'scale-in': { 106 | '0%': { transform: 'scale(0.95)', opacity: '0' }, 107 | '100%': { transform: 'scale(1)', opacity: '1' } 108 | }, 109 | 'scale-out': { 110 | '0%': { transform: 'scale(1)', opacity: '1' }, 111 | '100%': { transform: 'scale(0.95)', opacity: '0' } 112 | }, 113 | 'rotate-in': { 114 | '0%': { transform: 'rotate(-5deg)', opacity: '0' }, 115 | '100%': { transform: 'rotate(0)', opacity: '1' } 116 | }, 117 | 'blur-in': { 118 | '0%': { filter: 'blur(8px)', opacity: '0' }, 119 | '100%': { filter: 'blur(0)', opacity: '1' } 120 | }, 121 | 'pulse-subtle': { 122 | '0%, 100%': { opacity: '1' }, 123 | '50%': { opacity: '0.85' } 124 | } 125 | }, 126 | animation: { 127 | 'accordion-down': 'accordion-down 0.2s ease-out', 128 | 'accordion-up': 'accordion-up 0.2s ease-out', 129 | 'fade-in': 'fade-in 0.5s ease-out forwards', 130 | 'fade-out': 'fade-out 0.5s ease-out forwards', 131 | 'slide-up': 'slide-up 0.6s ease-out forwards', 132 | 'slide-down': 'slide-down 0.6s ease-out forwards', 133 | 'slide-left': 'slide-left 0.6s ease-out forwards', 134 | 'slide-right': 'slide-right 0.6s ease-out forwards', 135 | 'scale-in': 'scale-in 0.6s cubic-bezier(0.16, 1, 0.3, 1) forwards', 136 | 'scale-out': 'scale-out 0.6s cubic-bezier(0.16, 1, 0.3, 1) forwards', 137 | 'rotate-in': 'rotate-in 0.6s cubic-bezier(0.16, 1, 0.3, 1) forwards', 138 | 'blur-in': 'blur-in 0.6s cubic-bezier(0.16, 1, 0.3, 1) forwards', 139 | 'pulse-subtle': 'pulse-subtle 3s ease-in-out infinite' 140 | } 141 | } 142 | }, 143 | plugins: [require("tailwindcss-animate")], 144 | } satisfies Config; 145 | -------------------------------------------------------------------------------- /src/components/ui/alert-dialog.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react" 2 | import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog" 3 | 4 | import { cn } from "@/lib/utils" 5 | import { buttonVariants } from "@/components/ui/button" 6 | 7 | const AlertDialog = AlertDialogPrimitive.Root 8 | 9 | const AlertDialogTrigger = AlertDialogPrimitive.Trigger 10 | 11 | const AlertDialogPortal = AlertDialogPrimitive.Portal 12 | 13 | const AlertDialogOverlay = React.forwardRef< 14 | React.ElementRef91 | Explore our collection of work that showcases our expertise in web development, 92 | design, and AI-powered solutions for various industries. 93 |
94 |,
17 | title: "MERN Stack Development",
18 | description: "Craft blazing-fast, scalable web apps with React, Node.js, Express, and MongoDB—built for performance & flexibility.",
19 | color: "bg-purple-50 dark:bg-purple-950/30",
20 | iconColor: "text-purple-500"
21 | },
22 | {
23 | icon: 104 | We offer a comprehensive range of web development services, powered by cutting-edge AI technology and human expertise to deliver exceptional results. 105 |
106 |111 | We blend AI innovation with human creativity to build websites that stand out in the digital landscape. 112 |
113 | 114 |Scroll to explore
141 |121 | Founded on the belief that AI can enhance rather than replace human creativity, we combine cutting-edge technology with skilled craftsmanship to build websites that are both innovative and authentic. 122 |
123 | 124 |{feature.description}
138 |78 | Have questions about our services or want to discuss your project? Reach out to us! 79 |
80 |