├── .env.example ├── .github └── dependabot.yml ├── .gitignore ├── .husky └── pre-commit ├── .prettierignore ├── .prettierrc ├── .vscode └── settings.json ├── LICENSE.md ├── README.md ├── app ├── app.vue ├── assets │ └── css │ │ └── tailwind.css ├── components │ ├── Footer.vue │ ├── Home │ │ ├── Companies.vue │ │ ├── FAQ.vue │ │ ├── Hero.vue │ │ ├── Review.vue │ │ └── Services.vue │ ├── LanguageSwitcher.vue │ ├── Nav.vue │ └── Ui │ │ ├── Accordion │ │ ├── Accordion.vue │ │ ├── Content.vue │ │ ├── Header.vue │ │ ├── Item.vue │ │ └── Trigger.vue │ │ ├── Avatar │ │ ├── Avatar.vue │ │ ├── Fallback.vue │ │ └── Image.vue │ │ ├── Badge.vue │ │ ├── BorderBeam.vue │ │ ├── Button.vue │ │ ├── Container.vue │ │ ├── DropdownMenu │ │ ├── Arrow.vue │ │ ├── CheckboxItem.vue │ │ ├── Content.vue │ │ ├── DropdownMenu.vue │ │ ├── Group.vue │ │ ├── Item.vue │ │ ├── ItemIndicator.vue │ │ ├── Label.vue │ │ ├── Portal.vue │ │ ├── RadioGroup.vue │ │ ├── RadioItem.vue │ │ ├── Separator.vue │ │ ├── Shortcut.vue │ │ ├── Sub.vue │ │ ├── SubContent.vue │ │ ├── SubTrigger.vue │ │ └── Trigger.vue │ │ ├── Navbar.vue │ │ ├── Tooltip │ │ ├── Arrow.vue │ │ ├── Content.vue │ │ ├── Portal.vue │ │ ├── Provider.vue │ │ ├── Tooltip.vue │ │ └── Trigger.vue │ │ └── VueSonner.client.vue ├── layouts │ └── default.vue ├── locales │ ├── en.json │ ├── es.json │ ├── fr.json │ └── translations.csv ├── pages │ └── index.vue └── utils │ ├── seo.ts │ ├── shared.styles.ts │ └── useT.ts ├── eslint.config.mjs ├── modules └── translation.ts ├── nuxt.config.ts ├── package-lock.json ├── package.json ├── public ├── cover.png ├── favicon.ico ├── icons │ ├── apple-touch-icon.png │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── favicon.ico │ ├── pwa-192x192.png │ ├── pwa-512x512.png │ ├── pwa-maskable-192x192.png │ ├── pwa-maskable-512x512.png │ └── site.webmanifest ├── logo-black.png └── logo-white.png ├── server └── tsconfig.json ├── tailwind.config.js ├── tsconfig.json └── ui-thing.config.ts /.env.example: -------------------------------------------------------------------------------- 1 | SITE_URL=http://localhost:3000 2 | NODE_ENV=development 3 | HOTJAR_ID=1234567 4 | HOTJAR_VERSION=6 -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # Please see the documentation for all configuration options: 2 | # https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates 3 | 4 | version: 2 5 | updates: 6 | - package-ecosystem: "npm" 7 | directory: "/" 8 | schedule: 9 | interval: "weekly" 10 | day: "sunday" 11 | time: "06:00" 12 | timezone: "America/Jamaica" 13 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Nuxt dev/build outputs 2 | .output 3 | .data 4 | .nuxt 5 | .nitro 6 | .cache 7 | dist 8 | 9 | # Node dependencies 10 | node_modules 11 | 12 | # Logs 13 | logs 14 | *.log 15 | 16 | # Misc 17 | .DS_Store 18 | .fleet 19 | .idea 20 | 21 | # Local env files 22 | .env 23 | .env.* 24 | !.env.example 25 | 26 | # Logs 27 | logs 28 | *.log 29 | npm-debug.log* 30 | yarn-debug.log* 31 | yarn-error.log* 32 | lerna-debug.log* 33 | .pnpm-debug.log* 34 | 35 | # Diagnostic reports (https://nodejs.org/api/report.html) 36 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 37 | 38 | # Runtime data 39 | pids 40 | *.pid 41 | *.seed 42 | *.pid.lock 43 | 44 | # Directory for instrumented libs generated by jscoverage/JSCover 45 | lib-cov 46 | 47 | # Coverage directory used by tools like istanbul 48 | coverage 49 | *.lcov 50 | 51 | # nyc test coverage 52 | .nyc_output 53 | 54 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 55 | .grunt 56 | 57 | # Bower dependency directory (https://bower.io/) 58 | bower_components 59 | 60 | # node-waf configuration 61 | .lock-wscript 62 | 63 | # Compiled binary addons (https://nodejs.org/api/addons.html) 64 | build/Release 65 | 66 | # Dependency directories 67 | node_modules/ 68 | jspm_packages/ 69 | 70 | # Snowpack dependency directory (https://snowpack.dev/) 71 | web_modules/ 72 | 73 | # TypeScript cache 74 | *.tsbuildinfo 75 | 76 | # Optional npm cache directory 77 | .npm 78 | 79 | # Optional eslint cache 80 | .eslintcache 81 | 82 | # Optional stylelint cache 83 | .stylelintcache 84 | 85 | # Microbundle cache 86 | .rpt2_cache/ 87 | .rts2_cache_cjs/ 88 | .rts2_cache_es/ 89 | .rts2_cache_umd/ 90 | 91 | # Optional REPL history 92 | .node_repl_history 93 | 94 | # Output of 'npm pack' 95 | *.tgz 96 | 97 | # Yarn Integrity file 98 | .yarn-integrity 99 | 100 | # dotenv environment variable files 101 | .env 102 | .env.development.local 103 | .env.test.local 104 | .env.production.local 105 | .env.local 106 | 107 | # parcel-bundler cache (https://parceljs.org/) 108 | .cache 109 | .parcel-cache 110 | 111 | # Next.js build output 112 | .next 113 | out 114 | 115 | # Nuxt.js build / generate output 116 | .nuxt 117 | dist 118 | 119 | # Gatsby files 120 | .cache/ 121 | # Comment in the public line in if your project uses Gatsby and not Next.js 122 | # https://nextjs.org/blog/next-9-1#public-directory-support 123 | # public 124 | 125 | # vuepress build output 126 | .vuepress/dist 127 | 128 | # vuepress v2.x temp and cache directory 129 | .temp 130 | .cache 131 | 132 | # Docusaurus cache and generated files 133 | .docusaurus 134 | 135 | # Serverless directories 136 | .serverless/ 137 | 138 | # FuseBox cache 139 | .fusebox/ 140 | 141 | # DynamoDB Local files 142 | .dynamodb/ 143 | 144 | # TernJS port file 145 | .tern-port 146 | 147 | # Stores VSCode versions used for testing VSCode extensions 148 | .vscode-test 149 | 150 | # yarn v2 151 | .yarn/cache 152 | .yarn/unplugged 153 | .yarn/build-state.yml 154 | .yarn/install-state.gz 155 | .pnp.* 156 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | npm run format && npm run lint:fix 2 | 3 | # Add this to test the code before committing 4 | # exit 1 -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | # Nuxt dev/build outputs 2 | .output 3 | .data 4 | .nuxt 5 | .nitro 6 | .cache 7 | dist 8 | 9 | # Node dependencies 10 | node_modules 11 | 12 | # Logs 13 | logs 14 | *.log 15 | 16 | # Misc 17 | .DS_Store 18 | .fleet 19 | .idea 20 | 21 | # Local env files 22 | .env 23 | .env.* 24 | !.env.example 25 | 26 | # Logs 27 | logs 28 | *.log 29 | npm-debug.log* 30 | yarn-debug.log* 31 | yarn-error.log* 32 | lerna-debug.log* 33 | .pnpm-debug.log* 34 | 35 | # Diagnostic reports (https://nodejs.org/api/report.html) 36 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 37 | 38 | # Runtime data 39 | pids 40 | *.pid 41 | *.seed 42 | *.pid.lock 43 | 44 | # Directory for instrumented libs generated by jscoverage/JSCover 45 | lib-cov 46 | 47 | # Coverage directory used by tools like istanbul 48 | coverage 49 | *.lcov 50 | 51 | # nyc test coverage 52 | .nyc_output 53 | 54 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 55 | .grunt 56 | 57 | # Bower dependency directory (https://bower.io/) 58 | bower_components 59 | 60 | # node-waf configuration 61 | .lock-wscript 62 | 63 | # Compiled binary addons (https://nodejs.org/api/addons.html) 64 | build/Release 65 | 66 | # Dependency directories 67 | node_modules/ 68 | jspm_packages/ 69 | 70 | # Snowpack dependency directory (https://snowpack.dev/) 71 | web_modules/ 72 | 73 | # TypeScript cache 74 | *.tsbuildinfo 75 | 76 | # Optional npm cache directory 77 | .npm 78 | 79 | # Optional eslint cache 80 | .eslintcache 81 | 82 | # Optional stylelint cache 83 | .stylelintcache 84 | 85 | # Microbundle cache 86 | .rpt2_cache/ 87 | .rts2_cache_cjs/ 88 | .rts2_cache_es/ 89 | .rts2_cache_umd/ 90 | 91 | # Optional REPL history 92 | .node_repl_history 93 | 94 | # Output of 'npm pack' 95 | *.tgz 96 | 97 | # Yarn Integrity file 98 | .yarn-integrity 99 | 100 | # dotenv environment variable files 101 | .env 102 | .env.development.local 103 | .env.test.local 104 | .env.production.local 105 | .env.local 106 | 107 | # parcel-bundler cache (https://parceljs.org/) 108 | .cache 109 | .parcel-cache 110 | 111 | # Next.js build output 112 | .next 113 | out 114 | 115 | # Nuxt.js build / generate output 116 | .nuxt 117 | dist 118 | 119 | # Gatsby files 120 | .cache/ 121 | # Comment in the public line in if your project uses Gatsby and not Next.js 122 | # https://nextjs.org/blog/next-9-1#public-directory-support 123 | # public 124 | 125 | # vuepress build output 126 | .vuepress/dist 127 | 128 | # vuepress v2.x temp and cache directory 129 | .temp 130 | .cache 131 | 132 | # Docusaurus cache and generated files 133 | .docusaurus 134 | 135 | # Serverless directories 136 | .serverless/ 137 | 138 | # FuseBox cache 139 | .fusebox/ 140 | 141 | # DynamoDB Local files 142 | .dynamodb/ 143 | 144 | # TernJS port file 145 | .tern-port 146 | 147 | # Stores VSCode versions used for testing VSCode extensions 148 | .vscode-test 149 | 150 | # yarn v2 151 | .yarn/cache 152 | .yarn/unplugged 153 | .yarn/build-state.yml 154 | .yarn/install-state.gz 155 | .pnp.* 156 | 157 | # Ignore locales formatting 158 | **/locales/*.json -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "arrowParens": "always", 3 | "endOfLine": "lf", 4 | "plugins": ["@ianvs/prettier-plugin-sort-imports", "prettier-plugin-tailwindcss"], 5 | "printWidth": 100, 6 | "semi": true, 7 | "singleQuote": false, 8 | "tabWidth": 2, 9 | "trailingComma": "es5", 10 | "useTabs": false, 11 | "vueIndentScriptAndStyle": true, 12 | "tailwindFunctions": ["tv"], 13 | "importOrder": ["", "", "", "", "^[.]"] 14 | } 15 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "eslint.useFlatConfig": true 3 | } 4 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Behon Baker. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # TechNova Solutions Landing Page 2 | 3 | Welcome to the TechNova Solutions landing page repository. This project is built using the Nuxt 4 to provide a modern, responsive, and user-friendly landing page for our fictional tech startup, TechNova Solutions. [UI Thing](https://ui-thing.behonbaker.com/getting-started/introduction) was used in the creation of this project 🙂. 4 | 5 | ## Overview 6 | 7 | This project is a landing page for a fictional tech startup, TechNova Solutions. Use it if you want to create a landing page for your own project. 8 | 9 | ## Sections 10 | 11 | This landing page includes the following sections: 12 | 13 | - **Hero Section** 14 | - **Social Proof Section** 15 | - **Services Section** 16 | - **Review Section** 17 | - **FAQ Section** 18 | 19 | ## Nuxt Modules Used 20 | 21 | This project leverages several modules from the Nuxt ecosystem to enhance functionality and development experience: 22 | 23 | - Nuxt Translation Manager - https://github.com/samk-dev/nuxt-translation-manager 24 | - Nuxt i18n - https://i18n.nuxtjs.org/ 25 | - Nuxt TailwindCSS - https://tailwindcss.nuxtjs.org/ 26 | - Nuxt Color Mode - https://color-mode.nuxtjs.org/ 27 | - VueUse Nuxt - https://vueuse.org/ 28 | - Nuxt ESLint - https://eslint.nuxt.com/packages/module 29 | - Nuxt Icon - https://github.com/nuxt/icon 30 | - Nuxt Security - https://nuxt-security.vercel.app/ 31 | - Nuxt Vite PWA - https://vite-pwa-org.netlify.app/frameworks/nuxt 32 | - Nuxt Hotjar - https://github.com/damevin/nuxt-module-hotjar 33 | - Nuxt GSAP - https://github.com/hypernym-studio/nuxt-gsap 34 | - Nuxt Marquee - https://hanzydev.github.io/nuxt-marquee/ 35 | - Nuxt SEO - https://nuxtseo.com/nuxt-seo/getting-started/installation 36 | 37 | Thanks to all the creators of these modules for making them available to the Nuxt community. 38 | 39 | ## Getting Started 40 | 41 | Follow these steps to set up the project locally and get it running on your machine: 42 | 43 | ### Prerequisites 44 | 45 | Ensure you have the following installed on your system: 46 | 47 | - Node.js (version 18.x or later) 48 | - A package manager like npm or yarn 49 | 50 | ### Installation 51 | 52 | 1. **Clone the repository:** 53 | ```bash 54 | npx --yes giget@latest gh:BayBreezy/technova my-project --install 55 | ``` 56 | 2. **Navigate to the project directory:** 57 | ```bash 58 | cd my-project 59 | ``` 60 | 61 | ### Environment Variables 62 | 63 | Create a `.env` file in the root of the project and add the contents of the `.env.example` file to it. Fill in the necessary values for the environment variables. 64 | 65 | ### Development 66 | 67 | Start te development server with the following command: 68 | 69 | ```bash 70 | npm run dev 71 | ``` 72 | 73 | Open your browser and navigate to `http://localhost:3000` to view the project. 74 | 75 | ## Contributing 76 | 77 | We welcome contributions to enhance this project. Please feel free to open issues or submit pull requests. 78 | 79 | ## License 80 | 81 | This project is licensed under the MIT License. 82 | 83 | --- 84 | 85 | Thank you for using the TechNova Solutions Landing Page repository. We hope this project helps you build a fantastic landing page for your business. 86 | -------------------------------------------------------------------------------- /app/app.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 30 | -------------------------------------------------------------------------------- /app/assets/css/tailwind.css: -------------------------------------------------------------------------------- 1 | @import url("https://rsms.me/inter/inter.css"); 2 | 3 | @tailwind base; 4 | @tailwind components; 5 | @tailwind utilities; 6 | 7 | @layer base { 8 | :root { 9 | --background: 0 0% 100%; 10 | --foreground: 240 10% 3.9%; 11 | --card: 0 0% 100%; 12 | --card-foreground: 240 10% 3.9%; 13 | --popover: 0 0% 100%; 14 | --popover-foreground: 240 10% 3.9%; 15 | --primary: 240 5.9% 10%; 16 | --primary-foreground: 0 0% 98%; 17 | --secondary: 240 4.8% 95.9%; 18 | --secondary-foreground: 240 5.9% 10%; 19 | --muted: 240 4.8% 95.9%; 20 | --muted-foreground: 240 3.8% 46.1%; 21 | --accent: 240 4.8% 95.9%; 22 | --accent-foreground: 240 5.9% 10%; 23 | --destructive: 0 84.2% 60.2%; 24 | --destructive-foreground: 0 0% 98%; 25 | --border: 240 5.9% 90%; 26 | --input: 240 5.9% 90%; 27 | --ring: 240 5.9% 10%; 28 | --radius: 0.5rem; 29 | } 30 | 31 | .dark { 32 | --background: 240 10% 3.9%; 33 | --foreground: 0 0% 98%; 34 | --card: 240 10% 3.9%; 35 | --card-foreground: 0 0% 98%; 36 | --popover: 240 10% 3.9%; 37 | --popover-foreground: 0 0% 98%; 38 | --primary: 0 0% 98%; 39 | --primary-foreground: 240 5.9% 10%; 40 | --secondary: 240 3.7% 15.9%; 41 | --secondary-foreground: 0 0% 98%; 42 | --muted: 240 3.7% 15.9%; 43 | --muted-foreground: 240 5% 64.9%; 44 | --accent: 240 3.7% 15.9%; 45 | --accent-foreground: 0 0% 98%; 46 | --destructive: 0 62.8% 30.6%; 47 | --destructive-foreground: 0 0% 98%; 48 | --border: 240 3.7% 15.9%; 49 | --input: 240 3.7% 15.9%; 50 | --ring: 240 4.9% 83.9%; 51 | } 52 | } 53 | 54 | @layer base { 55 | * { 56 | @apply border-border; 57 | } 58 | body { 59 | @apply bg-background text-foreground; 60 | font-feature-settings: 61 | "rlig" 1, 62 | "calt" 1; 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /app/components/Footer.vue: -------------------------------------------------------------------------------- 1 | 37 | 38 | 111 | -------------------------------------------------------------------------------- /app/components/Home/Companies.vue: -------------------------------------------------------------------------------- 1 | 31 | 32 | 46 | -------------------------------------------------------------------------------- /app/components/Home/FAQ.vue: -------------------------------------------------------------------------------- 1 | 42 | 43 | 90 | -------------------------------------------------------------------------------- /app/components/Home/Hero.vue: -------------------------------------------------------------------------------- 1 | 43 | 44 | 72 | -------------------------------------------------------------------------------- /app/components/Home/Review.vue: -------------------------------------------------------------------------------- 1 | 22 | 23 | 43 | -------------------------------------------------------------------------------- /app/components/Home/Services.vue: -------------------------------------------------------------------------------- 1 | 41 | 42 | 89 | -------------------------------------------------------------------------------- /app/components/LanguageSwitcher.vue: -------------------------------------------------------------------------------- 1 | 25 | 26 | 30 | -------------------------------------------------------------------------------- /app/components/Nav.vue: -------------------------------------------------------------------------------- 1 | 31 | 32 | 43 | -------------------------------------------------------------------------------- /app/components/Ui/Accordion/Accordion.vue: -------------------------------------------------------------------------------- 1 | 21 | 22 | 46 | -------------------------------------------------------------------------------- /app/components/Ui/Accordion/Content.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 28 | -------------------------------------------------------------------------------- /app/components/Ui/Accordion/Header.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 23 | -------------------------------------------------------------------------------- /app/components/Ui/Accordion/Item.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 24 | -------------------------------------------------------------------------------- /app/components/Ui/Accordion/Trigger.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 40 | -------------------------------------------------------------------------------- /app/components/Ui/Avatar/Avatar.vue: -------------------------------------------------------------------------------- 1 | 19 | 20 | 51 | -------------------------------------------------------------------------------- /app/components/Ui/Avatar/Fallback.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 26 | -------------------------------------------------------------------------------- /app/components/Ui/Avatar/Image.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 25 | -------------------------------------------------------------------------------- /app/components/Ui/Badge.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 53 | -------------------------------------------------------------------------------- /app/components/Ui/BorderBeam.vue: -------------------------------------------------------------------------------- 1 | 15 | 16 | 28 | 29 | 40 | -------------------------------------------------------------------------------- /app/components/Ui/Button.vue: -------------------------------------------------------------------------------- 1 | 21 | 22 | 70 | -------------------------------------------------------------------------------- /app/components/Ui/Container.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 28 | -------------------------------------------------------------------------------- /app/components/Ui/DropdownMenu/Arrow.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 27 | -------------------------------------------------------------------------------- /app/components/Ui/DropdownMenu/CheckboxItem.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 36 | -------------------------------------------------------------------------------- /app/components/Ui/DropdownMenu/Content.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 42 | -------------------------------------------------------------------------------- /app/components/Ui/DropdownMenu/DropdownMenu.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 16 | -------------------------------------------------------------------------------- /app/components/Ui/DropdownMenu/Group.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 13 | -------------------------------------------------------------------------------- /app/components/Ui/DropdownMenu/Item.vue: -------------------------------------------------------------------------------- 1 | 16 | 17 | 51 | -------------------------------------------------------------------------------- /app/components/Ui/DropdownMenu/ItemIndicator.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 27 | -------------------------------------------------------------------------------- /app/components/Ui/DropdownMenu/Label.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 26 | -------------------------------------------------------------------------------- /app/components/Ui/DropdownMenu/Portal.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 13 | -------------------------------------------------------------------------------- /app/components/Ui/DropdownMenu/RadioGroup.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 17 | -------------------------------------------------------------------------------- /app/components/Ui/DropdownMenu/RadioItem.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 35 | -------------------------------------------------------------------------------- /app/components/Ui/DropdownMenu/Separator.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 20 | -------------------------------------------------------------------------------- /app/components/Ui/DropdownMenu/Shortcut.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 27 | -------------------------------------------------------------------------------- /app/components/Ui/DropdownMenu/Sub.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 15 | -------------------------------------------------------------------------------- /app/components/Ui/DropdownMenu/SubContent.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 42 | -------------------------------------------------------------------------------- /app/components/Ui/DropdownMenu/SubTrigger.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 42 | -------------------------------------------------------------------------------- /app/components/Ui/DropdownMenu/Trigger.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 13 | -------------------------------------------------------------------------------- /app/components/Ui/Navbar.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 36 | -------------------------------------------------------------------------------- /app/components/Ui/Tooltip/Arrow.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 14 | -------------------------------------------------------------------------------- /app/components/Ui/Tooltip/Content.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 41 | -------------------------------------------------------------------------------- /app/components/Ui/Tooltip/Portal.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 13 | -------------------------------------------------------------------------------- /app/components/Ui/Tooltip/Provider.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 13 | -------------------------------------------------------------------------------- /app/components/Ui/Tooltip/Tooltip.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 25 | -------------------------------------------------------------------------------- /app/components/Ui/Tooltip/Trigger.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 13 | -------------------------------------------------------------------------------- /app/components/Ui/VueSonner.client.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 15 | 48 | -------------------------------------------------------------------------------- /app/layouts/default.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /app/locales/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "allRightsReserved": "All rights reserved", 3 | "chooseLanguage": "Choose language", 4 | "faq.cta.getInTouch": "Get in Touch", 5 | "faq.five.content": "We prioritize cybersecurity by implementing robust security measures, including encryption, secure access controls, and regular security audits, to protect your data from threats and breaches.", 6 | "faq.five.title": "How do you ensure the security of our data?", 7 | "faq.four.content": "Yes, we offer comprehensive support and maintenance services to ensure that our solutions continue to operate smoothly and efficiently, minimizing downtime and addressing any issues promptly.", 8 | "faq.four.title": "Do you offer support and maintenance for the solutions you provide?", 9 | "faq.one.content": "We work with a diverse range of businesses, from startups to large enterprises, across various industries including finance, healthcare, retail, and technology.", 10 | "faq.one.title": "What types of businesses do you work with?", 11 | "faq.six.content": "Absolutely. Our cloud migration services are designed to help you transition seamlessly to the cloud, ensuring minimal disruption to your operations while maximizing the benefits of scalability, flexibility, and cost-efficiency.", 12 | "faq.six.title": "Can you help with migrating our existing systems to the cloud?", 13 | "faq.stillHaveQuestions": "Still have questions?", 14 | "faq.stillHaveQuestionsContent": "Can't find the answer you're looking for? Please chat to our friendly team.", 15 | "faq.subtitle": "Got questions? We've got answers. Here are some of the most common inquiries we receive from our clients.", 16 | "faq.three.content": "Our IT consulting process involves an initial assessment of your current IT infrastructure, followed by strategic planning and implementation of tailored solutions to enhance efficiency and achieve your business goals.", 17 | "faq.three.title": "What is your process for IT consulting?", 18 | "faq.title": "Frequently Asked Questions", 19 | "faq.two.content": "The timeline for developing custom software varies based on the complexity and scope of the project. Typically, it can take anywhere from a few weeks to several months.", 20 | "faq.two.title": "How long does it take to develop custom software?", 21 | "features": "Features", 22 | "homeCompanies": "Join 4,000+ companies already growing with us", 23 | "homeHero.cta.getStarted": "Get Started", 24 | "homeHero.cta.learnMore": "Learn More", 25 | "homeHero.featuresBadge": "Check our latest features", 26 | "homeHero.subtitle": "Empowering your business with cutting-edge technology.", 27 | "homeHero.title": "Innovative Tech Solutions for Your Business", 28 | "homeService.subtitle": "We provide a wide range of tailored software solutions to meet your business needs.", 29 | "homeService.title": "Our Comprehensive Technology Service", 30 | "services": "Services", 31 | "services.cloud.description": "Our cloud services include migration, management, and optimization, enabling your business to scale efficiently while maintaining high security and performance standards.", 32 | "services.cloud.title": "Cloud Solutions and Services for Scalability and Security", 33 | "services.custom.description": "We provide tailored software solutions designed to meet the specific requirements of your business, ensuring optimal performance and scalability.", 34 | "services.custom.title": "Custom Software Development for Unique Business Needs", 35 | "services.cyber.description": "Our comprehensive cybersecurity services safeguard your business against cyber threats, ensuring the confidentiality, integrity, and availability of your data.", 36 | "services.cyber.title": "Cybersecurity Solutions to Protect Your Digital Assets", 37 | "services.digital.description": "We help businesses transition to the digital age by implementing cutting-edge technologies and strategies that drive innovation and operational excellence.", 38 | "services.digital.title": "Digital Transformation for Future-Ready Operations", 39 | "services.mobile.description": "We design and develop intuitive mobile applications that enhance user engagement and deliver seamless experiences across all devices and platforms.", 40 | "services.mobile.title": "Mobile App Development for Engaging User Experiences", 41 | "services.strategic.description": "Our expert consultants offer strategic advice and insights to help you optimize your IT infrastructure, improve processes, and achieve your business goals.", 42 | "services.strategic.title": "Strategic IT Consulting for Enhanced Efficiency" 43 | } -------------------------------------------------------------------------------- /app/locales/es.json: -------------------------------------------------------------------------------- 1 | { 2 | "allRightsReserved": "Todos los derechos reservados", 3 | "chooseLanguage": "Elija el idioma", 4 | "faq.cta.getInTouch": "Contactar", 5 | "faq.five.content": "Priorizamos la ciberseguridad mediante la implementación de medidas de seguridad sólidas, que incluyen cifrado, controles de acceso seguros y auditorías de seguridad regulares, para proteger sus datos de amenazas y brechas.", 6 | "faq.five.title": "¿Cómo garantizan la seguridad de nuestros datos?", 7 | "faq.four.content": "Sí, ofrecemos servicios integrales de soporte y mantenimiento para garantizar que nuestras soluciones sigan funcionando de manera fluida y eficiente, minimizando el tiempo de inactividad y abordando cualquier problema de manera oportuna.", 8 | "faq.four.title": "¿Ofrecen soporte y mantenimiento para las soluciones que proporcionan?", 9 | "faq.one.content": "Trabajamos con una amplia gama de empresas, desde startups hasta grandes empresas, en diversas industrias como finanzas, salud, comercio minorista y tecnología.", 10 | "faq.one.title": "¿Con qué tipos de empresas trabajan?", 11 | "faq.six.content": "Absolutamente. Nuestros servicios de migración a la nube están diseñados para ayudarlo a hacer la transición de manera fluida a la nube, garantizando una interrupción mínima en sus operaciones y maximizando los beneficios de escalabilidad, flexibilidad y rentabilidad.", 12 | "faq.six.title": "¿Pueden ayudar con la migración de nuestros sistemas existentes a la nube?", 13 | "faq.stillHaveQuestions": "¿Todavía tienes preguntas?", 14 | "faq.stillHaveQuestionsContent": "¿No encuentras la respuesta que buscas? Por favor, chatea con nuestro amable equipo.", 15 | "faq.subtitle": "¿Tienes preguntas? Tenemos respuestas. Aquí tienes algunas de las consultas más comunes que recibimos de nuestros clientes.", 16 | "faq.three.content": "Nuestro proceso de consultoría de TI implica una evaluación inicial de su infraestructura de TI actual, seguida de la planificación estratégica e implementación de soluciones personalizadas para mejorar la eficiencia y alcanzar sus objetivos comerciales.", 17 | "faq.three.title": "¿Cuál es su proceso para la consultoría de TI?", 18 | "faq.title": "Preguntas Frecuentes", 19 | "faq.two.content": "El cronograma para desarrollar software personalizado varía según la complejidad y el alcance del proyecto. Por lo general, puede llevar desde unas semanas hasta varios meses.", 20 | "faq.two.title": "¿Cuánto tiempo se tarda en desarrollar software personalizado?", 21 | "features": "Características", 22 | "homeCompanies": "Únase a más de 4,000 empresas que ya están creciendo con nosotros", 23 | "homeHero.cta.getStarted": "Empezar", 24 | "homeHero.cta.learnMore": "Saber más", 25 | "homeHero.featuresBadge": "Ver nuestras últimas características", 26 | "homeHero.subtitle": "Potencie su negocio con tecnología de vanguardia.", 27 | "homeHero.title": "Soluciones tecnológicas innovadoras para su negocio", 28 | "homeService.subtitle": "Ofrecemos una amplia gama de soluciones de software personalizadas para satisfacer las necesidades de su negocio.", 29 | "homeService.title": "Nuestro Servicio Tecnológico Integral", 30 | "services": "Servicios", 31 | "services.cloud.description": "Nuestros servicios en la nube incluyen migración, gestión y optimización, lo que permite a su empresa escalar de manera eficiente manteniendo altos estándares de seguridad y rendimiento.", 32 | "services.cloud.title": "Soluciones y servicios en la nube para escalabilidad y seguridad", 33 | "services.custom.description": "Ofrecemos soluciones de software personalizadas diseñadas para satisfacer los requisitos específicos de su negocio, garantizando un rendimiento y escalabilidad óptimos.", 34 | "services.custom.title": "Desarrollo de software personalizado para necesidades comerciales únicas", 35 | "services.cyber.description": "Nuestros servicios integrales de ciberseguridad protegen su empresa contra amenazas cibernéticas, garantizando la confidencialidad, integridad y disponibilidad de sus datos.", 36 | "services.cyber.title": "Soluciones de ciberseguridad para proteger sus activos digitales", 37 | "services.digital.description": "Ayudamos a las empresas a hacer la transición a la era digital mediante la implementación de tecnologías y estrategias de vanguardia que impulsan la innovación y la excelencia operativa.", 38 | "services.digital.title": "Transformación digital para operaciones preparadas para el futuro", 39 | "services.mobile.description": "Diseñamos y desarrollamos aplicaciones móviles intuitivas que mejoran la participación del usuario y ofrecen experiencias fluidas en todos los dispositivos y plataformas.", 40 | "services.mobile.title": "Desarrollo de aplicaciones móviles para experiencias de usuario atractivas", 41 | "services.strategic.description": "Nuestros consultores expertos ofrecen asesoramiento estratégico y conocimientos para ayudarlo a optimizar su infraestructura de TI, mejorar procesos y alcanzar sus objetivos comerciales.", 42 | "services.strategic.title": "Consultoría estratégica de TI para una mayor eficiencia" 43 | } -------------------------------------------------------------------------------- /app/locales/fr.json: -------------------------------------------------------------------------------- 1 | { 2 | "allRightsReserved": "Tous droits réservés", 3 | "chooseLanguage": "Choisissez la langue", 4 | "faq.cta.getInTouch": "Entrer en contact", 5 | "faq.five.content": "Nous accordons la priorité à la cybersécurité en mettant en œuvre des mesures de sécurité robustes, y compris le cryptage, les contrôles d'accès sécurisés et les audits de sécurité réguliers, pour protéger vos données contre les menaces et les violations.", 6 | "faq.five.title": "Comment assurez-vous la sécurité de nos données?", 7 | "faq.four.content": "Oui, nous proposons des services de support et de maintenance complets pour garantir que nos solutions continuent de fonctionner de manière fluide et efficace, minimisant les temps d'arrêt et traitant rapidement tout problème.", 8 | "faq.four.title": "Fournissez-vous un support et une maintenance pour les solutions que vous fournissez?", 9 | "faq.one.content": "Nous travaillons avec une gamme diversifiée d'entreprises, des startups aux grandes entreprises, dans divers secteurs, notamment la finance, la santé, le commerce de détail et la technologie.", 10 | "faq.one.title": "Avec quels types d'entreprises travaillez-vous?", 11 | "faq.six.content": "\"Absolument. Nos services de migration vers le cloud sont conçus pour vous aider à", 12 | "faq.six.title": "Pouvez-vous aider à migrer nos systèmes existants vers le cloud?", 13 | "faq.stillHaveQuestions": "Vous avez encore des questions?", 14 | "faq.stillHaveQuestionsContent": "Vous ne trouvez pas la réponse que vous cherchez? Veuillez discuter avec notre équipe sympathique.", 15 | "faq.subtitle": "Vous avez des questions? Nous avons des réponses. Voici quelques-unes des questions les plus fréquemment posées par nos clients.", 16 | "faq.three.content": "Notre processus de conseil en TI implique une évaluation initiale de votre infrastructure informatique actuelle, suivie de la planification stratégique et de la mise en œuvre de solutions sur mesure pour améliorer l'efficacité et atteindre vos objectifs commerciaux.", 17 | "faq.three.title": "Quel est votre processus de conseil en TI?", 18 | "faq.title": "Foire aux questions", 19 | "faq.two.content": "Le calendrier de développement de logiciels personnalisés varie en fonction de la complexité et de la portée du projet. En général, cela peut prendre de quelques semaines à plusieurs mois.", 20 | "faq.two.title": "Combien de temps faut-il pour développer un logiciel personnalisé?", 21 | "features": "Fonctionnalités", 22 | "homeCompanies": "Rejoignez plus de 4 000 entreprises qui grandissent déjà avec nous", 23 | "homeHero.cta.getStarted": "Commencer", 24 | "homeHero.cta.learnMore": "En savoir plus", 25 | "homeHero.featuresBadge": "Découvrez nos dernières fonctionnalités", 26 | "homeHero.subtitle": "Donnez à votre entreprise les moyens de la technologie de pointe.", 27 | "homeHero.title": "Solutions technologiques innovantes pour votre entreprise", 28 | "homeService.subtitle": "Nous fournissons une large gamme de solutions logicielles sur mesure pour répondre à vos besoins commerciaux.", 29 | "homeService.title": "Notre service technologique complet", 30 | "services": "Prestations", 31 | "services.cloud.description": "Nos services cloud comprennent la migration, la gestion et l'optimisation, permettant à votre entreprise de se développer efficacement tout en maintenant des normes de sécurité et de performance élevées.", 32 | "services.cloud.title": "Solutions et services cloud pour la scalabilité et la sécurité", 33 | "services.custom.description": "Nous fournissons des solutions logicielles sur mesure conçues pour répondre aux exigences spécifiques de votre entreprise, garantissant des performances et une évolutivité optimales.", 34 | "services.custom.title": "Développement de logiciels personnalisés pour des besoins commerciaux uniques", 35 | "services.cyber.description": "Nos services de cybersécurité complets protègent votre entreprise contre les menaces cybernétiques, garantissant la confidentialité, l'intégrité et la disponibilité de vos données.", 36 | "services.cyber.title": "Solutions de cybersécurité pour protéger vos actifs numériques", 37 | "services.digital.description": "Nous aidons les entreprises à passer à l'ère numérique en mettant en œuvre des technologies et des stratégies de pointe qui favorisent l'innovation et l'excellence opérationnelle.", 38 | "services.digital.title": "Transformation numérique pour des opérations prêtes pour l'avenir", 39 | "services.mobile.description": "Nous concevons et développons des applications mobiles intuitives qui améliorent l'engagement des utilisateurs et offrent des expériences fluides sur tous les appareils et plateformes.", 40 | "services.mobile.title": "Développement d'applications mobiles pour des expériences utilisateur engageantes", 41 | "services.strategic.description": "Nos consultants experts offrent des conseils stratégiques et des informations pour vous aider à optimiser votre infrastructure informatique, améliorer vos processus et atteindre vos objectifs commerciaux.", 42 | "services.strategic.title": "Conseil stratégique en TI pour une efficacité accrue" 43 | } -------------------------------------------------------------------------------- /app/locales/translations.csv: -------------------------------------------------------------------------------- 1 | Key,en,es,fr 2 | allRightsReserved,All rights reserved,"Todos los derechos reservados",Tous droits réservés 3 | chooseLanguage,Choose language,Elija el idioma,Choisissez la langue 4 | homeHero.featuresBadge,Check our latest features,Ver nuestras últimas características,Découvrez nos dernières fonctionnalités 5 | homeHero.title,Innovative Tech Solutions for Your Business,Soluciones tecnológicas innovadoras para su negocio,Solutions technologiques innovantes pour votre entreprise 6 | homeHero.subtitle,Empowering your business with cutting-edge technology.,Potencie su negocio con tecnología de vanguardia.,Donnez à votre entreprise les moyens de la technologie de pointe. 7 | homeHero.cta.getStarted,Get Started,Empezar,Commencer 8 | homeHero.cta.learnMore,Learn More,Saber más,En savoir plus 9 | homeCompanies,"Join 4,000+ companies already growing with us","Únase a más de 4,000 empresas que ya están creciendo con nosotros","Rejoignez plus de 4 000 entreprises qui grandissent déjà avec nous" 10 | features,Features,Características,Fonctionnalités 11 | services,Services,Servicios,Prestations 12 | homeService.title,Our Comprehensive Technology Service,Nuestro Servicio Tecnológico Integral,Notre service technologique complet 13 | homeService.subtitle,We provide a wide range of tailored software solutions to meet your business needs.,Ofrecemos una amplia gama de soluciones de software personalizadas para satisfacer las necesidades de su negocio.,Nous fournissons une large gamme de solutions logicielles sur mesure pour répondre à vos besoins commerciaux. 14 | faq.title,Frequently Asked Questions,Preguntas Frecuentes,Foire aux questions 15 | faq.subtitle,"Got questions? We've got answers. Here are some of the most common inquiries we receive from our clients.","¿Tienes preguntas? Tenemos respuestas. Aquí tienes algunas de las consultas más comunes que recibimos de nuestros clientes.","Vous avez des questions? Nous avons des réponses. Voici quelques-unes des questions les plus fréquemment posées par nos clients." 16 | faq.stillHaveQuestions,Still have questions?,¿Todavía tienes preguntas?,Vous avez encore des questions? 17 | faq.stillHaveQuestionsContent,"Can't find the answer you're looking for? Please chat to our friendly team.","¿No encuentras la respuesta que buscas? Por favor, chatea con nuestro amable equipo.","Vous ne trouvez pas la réponse que vous cherchez? Veuillez discuter avec notre équipe sympathique." 18 | faq.cta.getInTouch,Get in Touch,Contactar,Entrer en contact 19 | # Services 20 | services.custom.title,Custom Software Development for Unique Business Needs,Desarrollo de software personalizado para necesidades comerciales únicas,Développement de logiciels personnalisés pour des besoins commerciaux uniques 21 | services.custom.description,"We provide tailored software solutions designed to meet the specific requirements of your business, ensuring optimal performance and scalability.","Ofrecemos soluciones de software personalizadas diseñadas para satisfacer los requisitos específicos de su negocio, garantizando un rendimiento y escalabilidad óptimos.","Nous fournissons des solutions logicielles sur mesure conçues pour répondre aux exigences spécifiques de votre entreprise, garantissant des performances et une évolutivité optimales." 22 | services.strategic.title,"Strategic IT Consulting for Enhanced Efficiency","Consultoría estratégica de TI para una mayor eficiencia","Conseil stratégique en TI pour une efficacité accrue" 23 | services.strategic.description,"Our expert consultants offer strategic advice and insights to help you optimize your IT infrastructure, improve processes, and achieve your business goals.","Nuestros consultores expertos ofrecen asesoramiento estratégico y conocimientos para ayudarlo a optimizar su infraestructura de TI, mejorar procesos y alcanzar sus objetivos comerciales.","Nos consultants experts offrent des conseils stratégiques et des informations pour vous aider à optimiser votre infrastructure informatique, améliorer vos processus et atteindre vos objectifs commerciaux." 24 | services.digital.title,"Digital Transformation for Future-Ready Operations","Transformación digital para operaciones preparadas para el futuro","Transformation numérique pour des opérations prêtes pour l'avenir" 25 | services.digital.description,"We help businesses transition to the digital age by implementing cutting-edge technologies and strategies that drive innovation and operational excellence.","Ayudamos a las empresas a hacer la transición a la era digital mediante la implementación de tecnologías y estrategias de vanguardia que impulsan la innovación y la excelencia operativa.","Nous aidons les entreprises à passer à l'ère numérique en mettant en œuvre des technologies et des stratégies de pointe qui favorisent l'innovation et l'excellence opérationnelle." 26 | services.cloud.title,"Cloud Solutions and Services for Scalability and Security","Soluciones y servicios en la nube para escalabilidad y seguridad","Solutions et services cloud pour la scalabilité et la sécurité" 27 | services.cloud.description,"Our cloud services include migration, management, and optimization, enabling your business to scale efficiently while maintaining high security and performance standards.","Nuestros servicios en la nube incluyen migración, gestión y optimización, lo que permite a su empresa escalar de manera eficiente manteniendo altos estándares de seguridad y rendimiento.","Nos services cloud comprennent la migration, la gestion et l'optimisation, permettant à votre entreprise de se développer efficacement tout en maintenant des normes de sécurité et de performance élevées." 28 | services.mobile.title,"Mobile App Development for Engaging User Experiences","Desarrollo de aplicaciones móviles para experiencias de usuario atractivas","Développement d'applications mobiles pour des expériences utilisateur engageantes" 29 | services.mobile.description,"We design and develop intuitive mobile applications that enhance user engagement and deliver seamless experiences across all devices and platforms.","Diseñamos y desarrollamos aplicaciones móviles intuitivas que mejoran la participación del usuario y ofrecen experiencias fluidas en todos los dispositivos y plataformas.","Nous concevons et développons des applications mobiles intuitives qui améliorent l'engagement des utilisateurs et offrent des expériences fluides sur tous les appareils et plateformes." 30 | services.cyber.title,"Cybersecurity Solutions to Protect Your Digital Assets","Soluciones de ciberseguridad para proteger sus activos digitales","Solutions de cybersécurité pour protéger vos actifs numériques" 31 | services.cyber.description,"Our comprehensive cybersecurity services safeguard your business against cyber threats, ensuring the confidentiality, integrity, and availability of your data.","Nuestros servicios integrales de ciberseguridad protegen su empresa contra amenazas cibernéticas, garantizando la confidencialidad, integridad y disponibilidad de sus datos.","Nos services de cybersécurité complets protègent votre entreprise contre les menaces cybernétiques, garantissant la confidentialité, l'intégrité et la disponibilité de vos données." 32 | # FAQs 33 | faq.one.title,"What types of businesses do you work with?","¿Con qué tipos de empresas trabajan?","Avec quels types d'entreprises travaillez-vous?" 34 | faq.one.content,"We work with a diverse range of businesses, from startups to large enterprises, across various industries including finance, healthcare, retail, and technology.","Trabajamos con una amplia gama de empresas, desde startups hasta grandes empresas, en diversas industrias como finanzas, salud, comercio minorista y tecnología.","Nous travaillons avec une gamme diversifiée d'entreprises, des startups aux grandes entreprises, dans divers secteurs, notamment la finance, la santé, le commerce de détail et la technologie." 35 | faq.two.title,"How long does it take to develop custom software?",¿Cuánto tiempo se tarda en desarrollar software personalizado?,"Combien de temps faut-il pour développer un logiciel personnalisé?" 36 | faq.two.content,"The timeline for developing custom software varies based on the complexity and scope of the project. Typically, it can take anywhere from a few weeks to several months.","El cronograma para desarrollar software personalizado varía según la complejidad y el alcance del proyecto. Por lo general, puede llevar desde unas semanas hasta varios meses.","Le calendrier de développement de logiciels personnalisés varie en fonction de la complexité et de la portée du projet. En général, cela peut prendre de quelques semaines à plusieurs mois." 37 | faq.three.title,"What is your process for IT consulting?",¿Cuál es su proceso para la consultoría de TI?,"Quel est votre processus de conseil en TI?" 38 | faq.three.content,"Our IT consulting process involves an initial assessment of your current IT infrastructure, followed by strategic planning and implementation of tailored solutions to enhance efficiency and achieve your business goals.","Nuestro proceso de consultoría de TI implica una evaluación inicial de su infraestructura de TI actual, seguida de la planificación estratégica e implementación de soluciones personalizadas para mejorar la eficiencia y alcanzar sus objetivos comerciales.","Notre processus de conseil en TI implique une évaluation initiale de votre infrastructure informatique actuelle, suivie de la planification stratégique et de la mise en œuvre de solutions sur mesure pour améliorer l'efficacité et atteindre vos objectifs commerciaux." 39 | faq.four.title,"Do you offer support and maintenance for the solutions you provide?","¿Ofrecen soporte y mantenimiento para las soluciones que proporcionan?","Fournissez-vous un support et une maintenance pour les solutions que vous fournissez?" 40 | faq.four.content,"Yes, we offer comprehensive support and maintenance services to ensure that our solutions continue to operate smoothly and efficiently, minimizing downtime and addressing any issues promptly.","Sí, ofrecemos servicios integrales de soporte y mantenimiento para garantizar que nuestras soluciones sigan funcionando de manera fluida y eficiente, minimizando el tiempo de inactividad y abordando cualquier problema de manera oportuna.","Oui, nous proposons des services de support et de maintenance complets pour garantir que nos solutions continuent de fonctionner de manière fluide et efficace, minimisant les temps d'arrêt et traitant rapidement tout problème." 41 | faq.five.title,"How do you ensure the security of our data?",¿Cómo garantizan la seguridad de nuestros datos?,"Comment assurez-vous la sécurité de nos données?" 42 | faq.five.content,"We prioritize cybersecurity by implementing robust security measures, including encryption, secure access controls, and regular security audits, to protect your data from threats and breaches.","Priorizamos la ciberseguridad mediante la implementación de medidas de seguridad sólidas, que incluyen cifrado, controles de acceso seguros y auditorías de seguridad regulares, para proteger sus datos de amenazas y brechas.","Nous accordons la priorité à la cybersécurité en mettant en œuvre des mesures de sécurité robustes, y compris le cryptage, les contrôles d'accès sécurisés et les audits de sécurité réguliers, pour protéger vos données contre les menaces et les violations." 43 | faq.six.title,"Can you help with migrating our existing systems to the cloud?",¿Pueden ayudar con la migración de nuestros sistemas existentes a la nube?,"Pouvez-vous aider à migrer nos systèmes existants vers le cloud?" 44 | faq.six.content,"Absolutely. Our cloud migration services are designed to help you transition seamlessly to the cloud, ensuring minimal disruption to your operations while maximizing the benefits of scalability, flexibility, and cost-efficiency.","Absolutamente. Nuestros servicios de migración a la nube están diseñados para ayudarlo a hacer la transición de manera fluida a la nube, garantizando una interrupción mínima en sus operaciones y maximizando los beneficios de escalabilidad, flexibilidad y rentabilidad.","Absolument. Nos services de migration vers le cloud sont conçus pour vous aider à -------------------------------------------------------------------------------- /app/pages/index.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 21 | -------------------------------------------------------------------------------- /app/utils/seo.ts: -------------------------------------------------------------------------------- 1 | export const SITE_URL = import.meta.env.SITE_URL; 2 | export const SITE_NAME = "TechNova Solutions"; 3 | export const SITE_SHORT_NAME = "TechNova"; 4 | export const SITE_THEME_COLOR = "#09090b"; 5 | export const SITE_TITLE = "TechNova Solutions"; 6 | export const SITE_DESCRIPTION = 7 | "TechNova Solutions a Nuxt 4 starter template built with UI Thing. This company can offer a range of innovative technology services and products, which allows you to showcase various features and content areas on the landing page."; 8 | export const SITE_LOCALE = "en"; 9 | -------------------------------------------------------------------------------- /app/utils/shared.styles.ts: -------------------------------------------------------------------------------- 1 | // Add here because button styles are used in several components 2 | export const buttonStyles = tv({ 3 | base: "inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2", 4 | variants: { 5 | variant: { 6 | default: "bg-primary text-primary-foreground hover:bg-primary/90", 7 | destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90", 8 | outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground", 9 | secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80", 10 | ghost: "hover:bg-accent hover:text-accent-foreground", 11 | link: "text-primary underline-offset-4 hover:underline", 12 | }, 13 | size: { 14 | default: "h-10 px-4 py-2", 15 | sm: "h-9 rounded-md px-3", 16 | lg: "h-11 rounded-md px-8", 17 | "icon-sm": "h-9 w-9", 18 | icon: "h-10 w-10", 19 | }, 20 | disabled: { 21 | true: "pointer-events-none opacity-50", 22 | }, 23 | }, 24 | defaultVariants: { 25 | variant: "default", 26 | size: "default", 27 | }, 28 | }); 29 | -------------------------------------------------------------------------------- /app/utils/useT.ts: -------------------------------------------------------------------------------- 1 | import type enUS from "~/locales/en.json"; 2 | 3 | /** 4 | * Used to get the translation of a key 5 | * This was created so that we get type help from the IDE 6 | * @param value The key to translate 7 | */ 8 | export const useT = (value: keyof typeof enUS | number) => { 9 | return useI18n().t(value); 10 | }; 11 | -------------------------------------------------------------------------------- /eslint.config.mjs: -------------------------------------------------------------------------------- 1 | // @ts-check 2 | import withNuxt from "./.nuxt/eslint.config.mjs"; 3 | 4 | export default withNuxt({ 5 | rules: { 6 | "vue/no-v-html": "off", 7 | "@typescript-eslint/no-explicit-any": "off", 8 | "vue/multi-word-component-names": "off", 9 | "vue/require-default-prop": "off", 10 | }, 11 | ignores: [".nuxt", "node_modules"], 12 | }); 13 | -------------------------------------------------------------------------------- /modules/translation.ts: -------------------------------------------------------------------------------- 1 | import { defineNuxtModule } from "nuxt/kit"; 2 | 3 | export default defineNuxtModule({ 4 | meta: { name: "Reload Translations" }, 5 | async setup(_, nuxt) { 6 | // restart the dev server when the files in the locales directory change 7 | nuxt.hook("builder:watch", (ev, path) => { 8 | if (path.includes("locales/translations")) { 9 | nuxt.callHook("restart"); 10 | } 11 | }); 12 | }, 13 | }); 14 | -------------------------------------------------------------------------------- /nuxt.config.ts: -------------------------------------------------------------------------------- 1 | import { 2 | SITE_DESCRIPTION, 3 | SITE_LOCALE, 4 | SITE_NAME, 5 | SITE_SHORT_NAME, 6 | SITE_THEME_COLOR, 7 | SITE_URL, 8 | } from "./app/utils/seo.js"; 9 | 10 | export default defineNuxtConfig({ 11 | compatibilityDate: "2024-04-03", 12 | devtools: { enabled: true, componentInspector: false }, 13 | future: { compatibilityVersion: 4 }, 14 | experimental: { typedPages: true }, 15 | watch: ["locales"], 16 | 17 | modules: [ 18 | "nuxt-translation-manager", 19 | "@nuxtjs/i18n", 20 | "@nuxtjs/tailwindcss", 21 | "@nuxtjs/color-mode", 22 | "@vueuse/nuxt", 23 | "@nuxt/eslint", 24 | "@nuxt/icon", 25 | "nuxt-security", 26 | "@vite-pwa/nuxt", 27 | "nuxt-module-hotjar", 28 | "@hypernym/nuxt-gsap", 29 | "nuxt-rellax", 30 | "./modules/translation", 31 | "nuxt-marquee", 32 | "@nuxtjs/seo", 33 | ], 34 | 35 | // Nuxt GSAP - https://github.com/hypernym-studio/nuxt-gsap 36 | gsap: { 37 | composables: true, 38 | provide: false, 39 | extraPlugins: { scrollTrigger: true }, 40 | }, 41 | 42 | // Nuxt Hotjar - https://github.com/damevin/nuxt-module-hotjar 43 | hotjar: { 44 | hotjarId: import.meta.env.HOTJAR_ID, 45 | scriptVersion: +import.meta.env.HOTJAR_VERSION, 46 | debug: import.meta.env.NODE_ENV === "development", 47 | }, 48 | 49 | // Nuxt i18n - https://i18n.nuxtjs.org/docs/getting-started 50 | i18n: { 51 | locales: [ 52 | { code: "en", language: "en-US", name: "English", isCatchallLocale: true, file: "en.json" }, 53 | { code: "fr", language: "fr-FR", name: "Français", file: "fr.json" }, 54 | { code: "es", language: "es-ES", name: "Español", file: "es.json" }, 55 | ], 56 | strategy: "prefix_except_default", 57 | defaultLocale: SITE_LOCALE, 58 | lazy: true, 59 | langDir: "locales", 60 | detectBrowserLanguage: { 61 | useCookie: true, 62 | cookieKey: "i18n_redirected", 63 | alwaysRedirect: true, 64 | redirectOn: "root", 65 | }, 66 | compilation: { strictMessage: false }, 67 | baseUrl: SITE_URL, 68 | }, 69 | 70 | // Nuxt Security - https://nuxt-security.vercel.app/documentation/getting-started/setup 71 | security: { 72 | headers: { 73 | crossOriginEmbedderPolicy: "unsafe-none", 74 | contentSecurityPolicy: { 75 | "img-src": [ 76 | "'self'", 77 | "data:", 78 | "https://randomuser.me", 79 | "https://*.unsplash.com", 80 | "https://*.hotjar.com", 81 | ], 82 | "style-src": ["'self'", "'unsafe-inline'", "https://rsms.me"], 83 | "script-src": ["'self'", "'unsafe-inline'", "https://*.hotjar.com", "https://*.hotjar.io"], 84 | "connect-src": [ 85 | "'self'", 86 | "https://randomuser.me", 87 | "https://*.unsplash.com", 88 | "https://*.hotjar.com", 89 | "https://*.hotjar.io", 90 | "wss://*.hotjar.com", 91 | ], 92 | }, 93 | }, 94 | }, 95 | 96 | // Nuxt PWA - https://vite-pwa-org.netlify.app/frameworks/nuxt.html 97 | pwa: { 98 | devOptions: { suppressWarnings: true }, 99 | client: { installPrompt: false, periodicSyncForUpdates: 60 * 60 }, 100 | includeAssets: ["favicon.ico", "robots.txt"], 101 | registerType: "autoUpdate", 102 | manifest: { 103 | name: SITE_NAME, 104 | short_name: SITE_SHORT_NAME, 105 | icons: [ 106 | { 107 | src: "/icons/pwa-192x192.png", 108 | sizes: "192x192", 109 | type: "image/png", 110 | purpose: "any", 111 | }, 112 | { 113 | src: "/icons/pwa-512x512.png", 114 | sizes: "512x512", 115 | type: "image/png", 116 | purpose: "any", 117 | }, 118 | { 119 | src: "/icons/pwa-maskable-192x192.png", 120 | sizes: "192x192", 121 | type: "image/png", 122 | purpose: "maskable", 123 | }, 124 | { 125 | src: "/icons/pwa-maskable-512x512.png", 126 | sizes: "512x512", 127 | type: "image/png", 128 | purpose: "maskable", 129 | }, 130 | ], 131 | start_url: "/", 132 | display: "standalone", 133 | background_color: "#FFFFFF", 134 | theme_color: SITE_THEME_COLOR, 135 | description: SITE_DESCRIPTION, 136 | }, 137 | workbox: { 138 | globPatterns: ["**/*.{js,css,html,png,svg,ico}"], 139 | }, 140 | injectManifest: { 141 | globPatterns: ["**/*.{js,css,html,png,svg,ico}"], 142 | }, 143 | }, 144 | 145 | // Nuxt tailwind - https://tailwindcss.nuxtjs.org/getting-started/installation 146 | tailwindcss: { exposeConfig: true }, 147 | 148 | // Nuxt Color Mode - https://color-mode.nuxtjs.org/ 149 | colorMode: { classSuffix: "" }, 150 | 151 | imports: { 152 | imports: [ 153 | { from: "tailwind-variants", name: "tv" }, 154 | { from: "tailwind-variants", name: "VariantProps", type: true }, 155 | { from: "vue-sonner", name: "toast", as: "useSonner" }, 156 | ], 157 | }, 158 | 159 | app: { 160 | head: { 161 | title: SITE_NAME, 162 | titleTemplate: `%s | ${SITE_NAME}`, 163 | }, 164 | }, 165 | build: { transpile: ["vue-sonner"] }, 166 | site: { 167 | name: SITE_NAME, 168 | description: SITE_DESCRIPTION, 169 | url: SITE_URL, 170 | defaultLocale: SITE_LOCALE, 171 | }, 172 | schemaOrg: { 173 | identity: { 174 | name: SITE_NAME, 175 | description: SITE_DESCRIPTION, 176 | url: SITE_URL, 177 | logo: `${SITE_URL}/logo-black.png`, 178 | type: "Organization", 179 | }, 180 | }, 181 | sitemap: { 182 | autoLastmod: true, 183 | autoI18n: true, 184 | }, 185 | }); 186 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "technova-solutions-ui-thing", 3 | "private": false, 4 | "description": "TechNova Solutions a Nuxt 4 starter template built with UI Thing. This company can offer a range of innovative technology services and products, which allows you to showcase various features and content areas on the landing page.", 5 | "license": "MIT", 6 | "author": { 7 | "name": "Behon Baker", 8 | "email": "behon.baker@yahoo.com", 9 | "url": "https://behonbaker.com" 10 | }, 11 | "type": "module", 12 | "scripts": { 13 | "build": "nuxt build", 14 | "clean": "rm -rf .nuxt dist node_modules package-lock.json && npm install", 15 | "dev": "nuxt dev --host", 16 | "format": "npx --yes prettier --write .", 17 | "generate": "nuxt generate", 18 | "postinstall": "nuxt prepare", 19 | "lint": "eslint .", 20 | "lint:fix": "eslint . --fix", 21 | "preview": "nuxt preview", 22 | "ui:add": "npx --yes ui-thing@latest add", 23 | "prepare": "husky" 24 | }, 25 | "dependencies": { 26 | "@iconify/vue": "^4.3.0", 27 | "@nuxt/eslint": "^0.7.5", 28 | "@nuxt/icon": "^1.10.3", 29 | "@nuxtjs/i18n": "^8.5.6", 30 | "@nuxtjs/seo": "^2.0.2", 31 | "@vite-pwa/nuxt": "^0.10.6", 32 | "nuxt": "^3.15.1", 33 | "nuxt-marquee": "^1.0.4", 34 | "nuxt-module-hotjar": "^1.3.2", 35 | "nuxt-security": "^2.1.5", 36 | "nuxt-translation-manager": "^1.1.1", 37 | "radix-vue": "^1.9.12", 38 | "tailwind-variants": "^0.3.0", 39 | "vue": "latest", 40 | "vue-router": "latest", 41 | "vue-sonner": "^1.3.0", 42 | "vue-use-fixed-header": "^2.0.3" 43 | }, 44 | "devDependencies": { 45 | "@hypernym/nuxt-gsap": "^2.4.3", 46 | "@ianvs/prettier-plugin-sort-imports": "^4.4.0", 47 | "@iconify-json/logos": "^1.2.4", 48 | "@iconify-json/lucide": "^1.2.22", 49 | "@iconify-json/ph": "^1.2.2", 50 | "@nuxtjs/color-mode": "^3.5.2", 51 | "@nuxtjs/tailwindcss": "^6.12.2", 52 | "@tailwindcss/forms": "^0.5.10", 53 | "@vueuse/nuxt": "^12.4.0", 54 | "husky": "^9.1.7", 55 | "nuxt-rellax": "^0.0.17", 56 | "prettier": "^3.4.2", 57 | "prettier-plugin-tailwindcss": "^0.6.9", 58 | "tailwindcss-animate": "^1.0.7", 59 | "typescript": "^5.7.3" 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /public/cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BayBreezy/technova/beee3e8d39b2e40083bf464e95b55e0b9954774e/public/cover.png -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BayBreezy/technova/beee3e8d39b2e40083bf464e95b55e0b9954774e/public/favicon.ico -------------------------------------------------------------------------------- /public/icons/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BayBreezy/technova/beee3e8d39b2e40083bf464e95b55e0b9954774e/public/icons/apple-touch-icon.png -------------------------------------------------------------------------------- /public/icons/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BayBreezy/technova/beee3e8d39b2e40083bf464e95b55e0b9954774e/public/icons/favicon-16x16.png -------------------------------------------------------------------------------- /public/icons/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BayBreezy/technova/beee3e8d39b2e40083bf464e95b55e0b9954774e/public/icons/favicon-32x32.png -------------------------------------------------------------------------------- /public/icons/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BayBreezy/technova/beee3e8d39b2e40083bf464e95b55e0b9954774e/public/icons/favicon.ico -------------------------------------------------------------------------------- /public/icons/pwa-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BayBreezy/technova/beee3e8d39b2e40083bf464e95b55e0b9954774e/public/icons/pwa-192x192.png -------------------------------------------------------------------------------- /public/icons/pwa-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BayBreezy/technova/beee3e8d39b2e40083bf464e95b55e0b9954774e/public/icons/pwa-512x512.png -------------------------------------------------------------------------------- /public/icons/pwa-maskable-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BayBreezy/technova/beee3e8d39b2e40083bf464e95b55e0b9954774e/public/icons/pwa-maskable-192x192.png -------------------------------------------------------------------------------- /public/icons/pwa-maskable-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BayBreezy/technova/beee3e8d39b2e40083bf464e95b55e0b9954774e/public/icons/pwa-maskable-512x512.png -------------------------------------------------------------------------------- /public/icons/site.webmanifest: -------------------------------------------------------------------------------- 1 | { 2 | "name": "TechNova Solutions", 3 | "short_name": "TechNova", 4 | "icons": [ 5 | { 6 | "src": "/icons/pwa-192x192.png", 7 | "sizes": "192x192", 8 | "type": "image/png", 9 | "purpose": "any" 10 | }, 11 | { 12 | "src": "/icons/pwa-512x512.png", 13 | "sizes": "512x512", 14 | "type": "image/png", 15 | "purpose": "any" 16 | }, 17 | { 18 | "src": "/icons/pwa-maskable-192x192.png", 19 | "sizes": "192x192", 20 | "type": "image/png", 21 | "purpose": "maskable" 22 | }, 23 | { 24 | "src": "/icons/pwa-maskable-512x512.png", 25 | "sizes": "512x512", 26 | "type": "image/png", 27 | "purpose": "maskable" 28 | } 29 | ], 30 | "start_url": "/", 31 | "display": "standalone", 32 | "background_color": "#FFFFFF", 33 | "theme_color": "#09090b", 34 | "description": "TechNova Solutions a Nuxt 4 starter template built with UI Thing. This company can offer a range of innovative technology services and products, which allows you to showcase various features and content areas on the landing page." 35 | } 36 | -------------------------------------------------------------------------------- /public/logo-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BayBreezy/technova/beee3e8d39b2e40083bf464e95b55e0b9954774e/public/logo-black.png -------------------------------------------------------------------------------- /public/logo-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BayBreezy/technova/beee3e8d39b2e40083bf464e95b55e0b9954774e/public/logo-white.png -------------------------------------------------------------------------------- /server/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../.nuxt/tsconfig.server.json" 3 | } 4 | -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | const { fontFamily } = require("tailwindcss/defaultTheme"); 2 | 3 | /**@type {import('tailwindcss').Config} */ 4 | module.exports = { 5 | darkMode: "class", 6 | theme: { 7 | extend: { 8 | container: { 9 | center: true, 10 | padding: { 11 | DEFAULT: "1rem", 12 | sm: "2rem", 13 | lg: "4rem", 14 | }, 15 | screens: { 16 | "2xl": "1300px", 17 | }, 18 | }, 19 | fontFamily: { 20 | sans: ["Inter var", "Inter", ...fontFamily.sans], 21 | }, 22 | borderRadius: { 23 | lg: "var(--radius)", 24 | md: "calc(var(--radius) - 2px)", 25 | sm: "calc(var(--radius) - 4px)", 26 | }, 27 | keyframes: { 28 | "accordion-down": { 29 | from: { height: "0px" }, 30 | to: { height: "var(--radix-accordion-content-height)" }, 31 | }, 32 | "accordion-up": { 33 | from: { height: "var(--radix-accordion-content-height)" }, 34 | to: { height: "0px" }, 35 | }, 36 | fadeIn: { 37 | from: { opacity: "0" }, 38 | to: { opacity: "1" }, 39 | }, 40 | fadeOut: { 41 | from: { opacity: "1" }, 42 | to: { opacity: "0" }, 43 | }, 44 | "collapse-down": { 45 | from: { height: "0px" }, 46 | to: { height: "var(--radix-collapsible-content-height)" }, 47 | }, 48 | "collapse-up": { 49 | from: { height: "var(--radix-collapsible-content-height)" }, 50 | to: { height: "0px" }, 51 | }, 52 | "border-beam": { 53 | "100%": { 54 | "offset-distance": "100%", 55 | }, 56 | }, 57 | }, 58 | animation: { 59 | "accordion-down": "accordion-down 0.2s ease-out", 60 | "accordion-up": "accordion-up 0.2s ease-out", 61 | fadeIn: "fadeIn 0.2s ease-out", 62 | fadeOut: "fadeOut 0.2s ease-out", 63 | "collapse-down": "collapse-down 0.2s ease-out", 64 | "collapse-up": "collapse-up 0.2s ease-out", 65 | "border-beam": "border-beam calc(var(--duration)*1s) infinite linear", 66 | }, 67 | colors: { 68 | border: "hsl(var(--border))", 69 | input: "hsl(var(--input))", 70 | ring: "hsl(var(--ring))", 71 | background: "hsl(var(--background))", 72 | foreground: "hsl(var(--foreground))", 73 | primary: { 74 | DEFAULT: "hsl(var(--primary))", 75 | foreground: "hsl(var(--primary-foreground))", 76 | }, 77 | secondary: { 78 | DEFAULT: "hsl(var(--secondary))", 79 | foreground: "hsl(var(--secondary-foreground))", 80 | }, 81 | destructive: { 82 | DEFAULT: "hsl(var(--destructive))", 83 | foreground: "hsl(var(--destructive-foreground))", 84 | }, 85 | muted: { 86 | DEFAULT: "hsl(var(--muted))", 87 | foreground: "hsl(var(--muted-foreground))", 88 | }, 89 | accent: { 90 | DEFAULT: "hsl(var(--accent))", 91 | foreground: "hsl(var(--accent-foreground))", 92 | }, 93 | popover: { 94 | DEFAULT: "hsl(var(--popover))", 95 | foreground: "hsl(var(--popover-foreground))", 96 | }, 97 | card: { 98 | DEFAULT: "hsl(var(--card))", 99 | foreground: "hsl(var(--card-foreground))", 100 | }, 101 | }, 102 | }, 103 | }, 104 | plugins: [require("tailwindcss-animate"), require("@tailwindcss/forms")({ strategy: "class" })], 105 | }; 106 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | // https://nuxt.com/docs/guide/concepts/typescript 3 | "extends": "./.nuxt/tsconfig.json" 4 | } 5 | -------------------------------------------------------------------------------- /ui-thing.config.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | theme: "zinc", 3 | tailwindCSSLocation: "app/assets/css/tailwind.css", 4 | tailwindConfigLocation: "tailwind.config.js", 5 | componentsLocation: "app/components/Ui", 6 | composablesLocation: "app/composables", 7 | pluginsLocation: "app/plugins", 8 | utilsLocation: "app/utils", 9 | force: true, 10 | useDefaultFilename: true, 11 | packageManager: "npm", 12 | }; 13 | --------------------------------------------------------------------------------