diff --git a/components.json b/components.json new file mode 100644 index 0000000..f826c54 --- /dev/null +++ b/components.json @@ -0,0 +1,22 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "new-york", + "rsc": true, + "tsx": true, + "tailwind": { + "config": "tailwind.config.ts", + "css": "src/app/globals.css", + "baseColor": "neutral", + "cssVariables": true, + "prefix": "" + }, + "iconLibrary": "lucide", + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + }, + "registries": {} +} diff --git a/package-lock.json b/package-lock.json index 1b36fe3..d568d61 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,9 +8,15 @@ "name": "summit-painting", "version": "0.1.0", "dependencies": { + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "framer-motion": "^12.23.12", + "lucide-react": "^0.542.0", "next": "15.5.2", "react": "19.1.0", - "react-dom": "19.1.0" + "react-dom": "19.1.0", + "tailwind-merge": "^3.3.1", + "tailwindcss-animate": "^1.0.7" }, "devDependencies": { "@eslint/eslintrc": "^3", @@ -2291,12 +2297,33 @@ "node": ">=18" } }, + "node_modules/class-variance-authority": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", + "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", + "license": "Apache-2.0", + "dependencies": { + "clsx": "^2.1.1" + }, + "funding": { + "url": "https://polar.sh/cva" + } + }, "node_modules/client-only": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", "license": "MIT" }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/color": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", @@ -3309,6 +3336,33 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/framer-motion": { + "version": "12.23.12", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.23.12.tgz", + "integrity": "sha512-6e78rdVtnBvlEVgu6eFEAgG9v3wLnYEboM8I5O5EXvfKC8gxGQB8wXJdhkMy10iVcn05jl6CNw7/HTsTCfwcWg==", + "license": "MIT", + "dependencies": { + "motion-dom": "^12.23.12", + "motion-utils": "^12.23.6", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "@emotion/is-prop-valid": "*", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/is-prop-valid": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -4475,6 +4529,15 @@ "loose-envify": "cli.js" } }, + "node_modules/lucide-react": { + "version": "0.542.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.542.0.tgz", + "integrity": "sha512-w3hD8/SQB7+lzU2r4VdFyzzOzKnUjTZIF/MQJGSSvni7Llewni4vuViRppfRAa2guOsY5k4jZyxw/i9DQHv+dw==", + "license": "ISC", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/magic-string": { "version": "0.30.18", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.18.tgz", @@ -4581,6 +4644,21 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/motion-dom": { + "version": "12.23.12", + "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.23.12.tgz", + "integrity": "sha512-RcR4fvMCTESQBD/uKQe49D5RUeDOokkGRmz4ceaJKDBgHYtZtntC/s2vLvY38gqGaytinij/yi3hMcWVcEF5Kw==", + "license": "MIT", + "dependencies": { + "motion-utils": "^12.23.6" + } + }, + "node_modules/motion-utils": { + "version": "12.23.6", + "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-12.23.6.tgz", + "integrity": "sha512-eAWoPgr4eFEOFfg2WjIsMoqJTW6Z8MTUCgn/GZ3VRpClWBdnbjryiA3ZSNLyxCTmCQx4RmYX6jX1iWHbenUPNQ==", + "license": "MIT" + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -5689,13 +5767,31 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/tailwind-merge": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.3.1.tgz", + "integrity": "sha512-gBXpgUm/3rp1lMZZrM/w7D8GKqshif0zAymAhbCyIt8KMe+0v9DQ7cdYLR4FHH/cKpdTXb+A/tKKU3eolfsI+g==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, "node_modules/tailwindcss": { "version": "4.1.13", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.13.tgz", "integrity": "sha512-i+zidfmTqtwquj4hMEwdjshYYgMbOrPzb9a0M3ZgNa0JMoZeFC6bxZvO8yr8ozS6ix2SDz0+mvryPeBs2TFE+w==", - "dev": true, "license": "MIT" }, + "node_modules/tailwindcss-animate": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz", + "integrity": "sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==", + "license": "MIT", + "peerDependencies": { + "tailwindcss": ">=3.0.0 || insiders" + } + }, "node_modules/tapable": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.3.tgz", diff --git a/package.json b/package.json index d26ac34..63b818d 100644 --- a/package.json +++ b/package.json @@ -9,19 +9,25 @@ "lint": "eslint" }, "dependencies": { + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "framer-motion": "^12.23.12", + "lucide-react": "^0.542.0", + "next": "15.5.2", "react": "19.1.0", "react-dom": "19.1.0", - "next": "15.5.2" + "tailwind-merge": "^3.3.1", + "tailwindcss-animate": "^1.0.7" }, "devDependencies": { - "typescript": "^5", + "@eslint/eslintrc": "^3", + "@tailwindcss/postcss": "^4", "@types/node": "^20", "@types/react": "^19", "@types/react-dom": "^19", - "@tailwindcss/postcss": "^4", - "tailwindcss": "^4", "eslint": "^9", "eslint-config-next": "15.5.2", - "@eslint/eslintrc": "^3" + "tailwindcss": "^4", + "typescript": "^5" } } diff --git a/postcss.config.mjs b/postcss.config.mjs index c7bcb4b..c2ddf74 100644 --- a/postcss.config.mjs +++ b/postcss.config.mjs @@ -1,5 +1,5 @@ -const config = { - plugins: ["@tailwindcss/postcss"], +export default { + plugins: { + "@tailwindcss/postcss": {}, + }, }; - -export default config; diff --git a/src/app/about/page.tsx b/src/app/about/page.tsx new file mode 100644 index 0000000..eaff7b8 --- /dev/null +++ b/src/app/about/page.tsx @@ -0,0 +1,68 @@ +import AboutUsSection from "@/components/ui/about-us-section"; + +export default function AboutPage() { + return ( +
+ We combine careful surface prep, premium materials, and a tidy jobsite to deliver long‑lasting results. + You'll get reliable scheduling, clear updates, and a thorough walkthrough at completion. +
++ We proudly serve these communities in Colorado Springs and surrounding areas. +
++ Contact us today for a free consultation and quote. +
+ +Cookies are small text files that are placed on your device when you visit a website. They help websites remember information about your visit and improve your browsing experience.
+ +We use cookies for the following purposes:
+These cookies are necessary for the website to function properly and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services, such as setting your privacy preferences, logging in, or filling in forms.
+ +These cookies allow us to count visits and traffic sources so we can measure and improve the performance of our site. They help us understand which pages are the most and least popular and see how visitors move around the site.
+ +These cookies enable the website to provide enhanced functionality and personalization. They may be set by us or by third-party providers whose services we have added to our pages.
+ +These cookies may be set through our site by our advertising partners. They may be used by those companies to build a profile of your interests and show you relevant advertisements on other sites.
+ +You can control and/or delete cookies as you wish. You can delete all cookies that are already on your device and you can set most browsers to prevent them from being placed. However, if you do this, you may have to manually adjust some preferences every time you visit the site.
+ +We reserve the right to modify this cookie policy at any time. Changes will be posted on this page with an updated effective date.
+ +If you have any questions about this cookie policy, please contact us at:
+
+ Summit Painting & Handyman
+ Email: nicholai@biohazardvfx.com
+ Phone: (719) 660-4281
+
+ See our transformation work in action. Real projects, real results. +
+{item.description}
+Location: {item.location}
++ Contact us today for a free consultation and quote. +
+ +
- src/app/page.tsx
-
- .
- Last updated: September 7, 2025
+ + +This privacy policy explains how Summit Painting & Handyman Services collects, uses, and protects your personal information when you visit our website or use our services.
+ + +We may collect the following types of information:
+We use the collected information for:
+We do not sell, trade, or rent your personal identification information to others. We may share information with trusted third parties who assist us in operating our website, conducting our business, or serving our customers.
+ + +We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information.
+ + +You have the right to access, update, or delete your personal information. You may also withdraw your consent for marketing communications at any time.
+ + +We reserve the right to modify this privacy policy at any time. Changes will be posted on this page with an updated effective date.
+ + +If you have any questions about this privacy policy, please contact us at:
+
+ Summit Painting & Handyman
+ Email: nicholai@biohazardvfx.com
+ Phone: (719) 660-4281
+
+ Fill out our discovery form to get a personalized estimate for your project. +
++ Comprehensive residential painting and handyman services tailored to your needs. +
+{service.description}
+ + Learn more → + ++ Contact us today for a free consultation and quote. +
+ +Last updated: September 7, 2025
+ + + + ++ Welcome to Summit Painting & Handyman Services. These terms and conditions outline the rules + and regulations for the use of our website and services. +
+ + ++ Unless otherwise stated, Summit Painting & Handyman Services and/or its licensors own the + intellectual property rights for all material on our website. All intellectual property rights + are reserved. +
+ + ++ We do not claim ownership of any user-generated content submitted through our services. + By submitting content, you grant us a non-exclusive, royalty-free license to use, reproduce, + and display such content in connection with providing our services. +
+ + ++ In no event shall Summit Painting & Handyman Services be liable for any indirect, + incidental, special, consequential or punitive damages, including without limitation, loss of + profits, data, use, goodwill, or other intangible losses. +
+ + ++ We reserve the right to modify these terms at any time. Changes will be posted on this page + with an updated effective date. Continued use of the website following any changes constitutes + acceptance of the updated terms. +
+ + +If you have any questions about these terms, please contact us at:
+
+ Summit Painting & Handyman
+ Email: nicholai@biohazardvfx.com
+ Phone: (719) 660-4281
+
+ For information on how we handle personal data, please see our{" "} + Privacy Policy. +
++ A simple, transparent process from quote to completion +
++ Scroll to explore our core services. Each card reveals our dedication to quality. +
++ Scroll to explore our core services. Each card reveals our dedication to quality. +
++ Discover our core services with care and attention to detail +
++ Scroll to explore our core services. The card will guide you through each offering. +
++ {area.description} +
++ Real feedback from local projects across Colorado Springs and surrounding areas. +
++++ + “{t.quote}” +
+ +
{desc}
+Let's create something beautiful together.
+{label}
+