This commit is contained in:
2025-05-05 15:50:04 -03:00
parent 8b047e56fd
commit 1257e4ad81
9 changed files with 386 additions and 86 deletions

View File

@@ -37,6 +37,9 @@ export default defineConfig({
prefetch: true, prefetch: true,
vite: { vite: {
plugins: [tailwindcss()], plugins: [tailwindcss()],
css: {
transformer: "lightningcss",
},
}, },
server: { server: {
host: "0.0.0.0", host: "0.0.0.0",

View File

@@ -23,6 +23,7 @@
"astro-icon": "^1.1.5", "astro-icon": "^1.1.5",
"astro-pagefind": "^1.8.3", "astro-pagefind": "^1.8.3",
"clsx": "^2.1.1", "clsx": "^2.1.1",
"lightningcss": "^1.29.3",
"react": "^19.1.0", "react": "^19.1.0",
"react-dom": "^19.1.0", "react-dom": "^19.1.0",
"react-hook-form": "^7.56.0", "react-hook-form": "^7.56.0",
@@ -1930,6 +1931,234 @@
"tailwindcss": "4.1.5" "tailwindcss": "4.1.5"
} }
}, },
"node_modules/@tailwindcss/node/node_modules/lightningcss": {
"version": "1.29.2",
"resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.29.2.tgz",
"integrity": "sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==",
"license": "MPL-2.0",
"dependencies": {
"detect-libc": "^2.0.3"
},
"engines": {
"node": ">= 12.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
},
"optionalDependencies": {
"lightningcss-darwin-arm64": "1.29.2",
"lightningcss-darwin-x64": "1.29.2",
"lightningcss-freebsd-x64": "1.29.2",
"lightningcss-linux-arm-gnueabihf": "1.29.2",
"lightningcss-linux-arm64-gnu": "1.29.2",
"lightningcss-linux-arm64-musl": "1.29.2",
"lightningcss-linux-x64-gnu": "1.29.2",
"lightningcss-linux-x64-musl": "1.29.2",
"lightningcss-win32-arm64-msvc": "1.29.2",
"lightningcss-win32-x64-msvc": "1.29.2"
}
},
"node_modules/@tailwindcss/node/node_modules/lightningcss-darwin-arm64": {
"version": "1.29.2",
"resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.29.2.tgz",
"integrity": "sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==",
"cpu": [
"arm64"
],
"license": "MPL-2.0",
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">= 12.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@tailwindcss/node/node_modules/lightningcss-darwin-x64": {
"version": "1.29.2",
"resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.29.2.tgz",
"integrity": "sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==",
"cpu": [
"x64"
],
"license": "MPL-2.0",
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">= 12.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@tailwindcss/node/node_modules/lightningcss-freebsd-x64": {
"version": "1.29.2",
"resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.29.2.tgz",
"integrity": "sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==",
"cpu": [
"x64"
],
"license": "MPL-2.0",
"optional": true,
"os": [
"freebsd"
],
"engines": {
"node": ">= 12.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@tailwindcss/node/node_modules/lightningcss-linux-arm-gnueabihf": {
"version": "1.29.2",
"resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.29.2.tgz",
"integrity": "sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==",
"cpu": [
"arm"
],
"license": "MPL-2.0",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 12.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@tailwindcss/node/node_modules/lightningcss-linux-arm64-gnu": {
"version": "1.29.2",
"resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.29.2.tgz",
"integrity": "sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==",
"cpu": [
"arm64"
],
"license": "MPL-2.0",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 12.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@tailwindcss/node/node_modules/lightningcss-linux-arm64-musl": {
"version": "1.29.2",
"resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.29.2.tgz",
"integrity": "sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==",
"cpu": [
"arm64"
],
"license": "MPL-2.0",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 12.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@tailwindcss/node/node_modules/lightningcss-linux-x64-gnu": {
"version": "1.29.2",
"resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.29.2.tgz",
"integrity": "sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==",
"cpu": [
"x64"
],
"license": "MPL-2.0",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 12.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@tailwindcss/node/node_modules/lightningcss-linux-x64-musl": {
"version": "1.29.2",
"resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.29.2.tgz",
"integrity": "sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==",
"cpu": [
"x64"
],
"license": "MPL-2.0",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 12.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@tailwindcss/node/node_modules/lightningcss-win32-arm64-msvc": {
"version": "1.29.2",
"resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.29.2.tgz",
"integrity": "sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==",
"cpu": [
"arm64"
],
"license": "MPL-2.0",
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">= 12.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@tailwindcss/node/node_modules/lightningcss-win32-x64-msvc": {
"version": "1.29.2",
"resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.29.2.tgz",
"integrity": "sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==",
"cpu": [
"x64"
],
"license": "MPL-2.0",
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">= 12.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@tailwindcss/oxide": { "node_modules/@tailwindcss/oxide": {
"version": "4.1.5", "version": "4.1.5",
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.5.tgz", "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.5.tgz",
@@ -4643,9 +4872,9 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/lightningcss": { "node_modules/lightningcss": {
"version": "1.29.2", "version": "1.29.3",
"resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.29.2.tgz", "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.29.3.tgz",
"integrity": "sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==", "integrity": "sha512-GlOJwTIP6TMIlrTFsxTerwC0W6OpQpCGuX1ECRLBUVRh6fpJH3xTqjCjRgQHTb4ZXexH9rtHou1Lf03GKzmhhQ==",
"license": "MPL-2.0", "license": "MPL-2.0",
"dependencies": { "dependencies": {
"detect-libc": "^2.0.3" "detect-libc": "^2.0.3"
@@ -4658,22 +4887,22 @@
"url": "https://opencollective.com/parcel" "url": "https://opencollective.com/parcel"
}, },
"optionalDependencies": { "optionalDependencies": {
"lightningcss-darwin-arm64": "1.29.2", "lightningcss-darwin-arm64": "1.29.3",
"lightningcss-darwin-x64": "1.29.2", "lightningcss-darwin-x64": "1.29.3",
"lightningcss-freebsd-x64": "1.29.2", "lightningcss-freebsd-x64": "1.29.3",
"lightningcss-linux-arm-gnueabihf": "1.29.2", "lightningcss-linux-arm-gnueabihf": "1.29.3",
"lightningcss-linux-arm64-gnu": "1.29.2", "lightningcss-linux-arm64-gnu": "1.29.3",
"lightningcss-linux-arm64-musl": "1.29.2", "lightningcss-linux-arm64-musl": "1.29.3",
"lightningcss-linux-x64-gnu": "1.29.2", "lightningcss-linux-x64-gnu": "1.29.3",
"lightningcss-linux-x64-musl": "1.29.2", "lightningcss-linux-x64-musl": "1.29.3",
"lightningcss-win32-arm64-msvc": "1.29.2", "lightningcss-win32-arm64-msvc": "1.29.3",
"lightningcss-win32-x64-msvc": "1.29.2" "lightningcss-win32-x64-msvc": "1.29.3"
} }
}, },
"node_modules/lightningcss-darwin-arm64": { "node_modules/lightningcss-darwin-arm64": {
"version": "1.29.2", "version": "1.29.3",
"resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.29.2.tgz", "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.29.3.tgz",
"integrity": "sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==", "integrity": "sha512-fb7raKO3pXtlNbQbiMeEu8RbBVHnpyqAoxTyTRMEWFQWmscGC2wZxoHzZ+YKAepUuKT9uIW5vL2QbFivTgprZg==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@@ -4691,9 +4920,9 @@
} }
}, },
"node_modules/lightningcss-darwin-x64": { "node_modules/lightningcss-darwin-x64": {
"version": "1.29.2", "version": "1.29.3",
"resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.29.2.tgz", "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.29.3.tgz",
"integrity": "sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==", "integrity": "sha512-KF2XZ4ZdmDGGtEYmx5wpzn6u8vg7AdBHaEOvDKu8GOs7xDL/vcU2vMKtTeNe1d4dogkDdi3B9zC77jkatWBwEQ==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@@ -4711,9 +4940,9 @@
} }
}, },
"node_modules/lightningcss-freebsd-x64": { "node_modules/lightningcss-freebsd-x64": {
"version": "1.29.2", "version": "1.29.3",
"resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.29.2.tgz", "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.29.3.tgz",
"integrity": "sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==", "integrity": "sha512-VUWeVf+V1UM54jv9M4wen9vMlIAyT69Krl9XjI8SsRxz4tdNV/7QEPlW6JASev/pYdiynUCW0pwaFquDRYdxMw==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@@ -4731,9 +4960,9 @@
} }
}, },
"node_modules/lightningcss-linux-arm-gnueabihf": { "node_modules/lightningcss-linux-arm-gnueabihf": {
"version": "1.29.2", "version": "1.29.3",
"resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.29.2.tgz", "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.29.3.tgz",
"integrity": "sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==", "integrity": "sha512-UhgZ/XVNfXQVEJrMIWeK1Laj8KbhjbIz7F4znUk7G4zeGw7TRoJxhb66uWrEsonn1+O45w//0i0Fu0wIovYdYg==",
"cpu": [ "cpu": [
"arm" "arm"
], ],
@@ -4751,9 +4980,9 @@
} }
}, },
"node_modules/lightningcss-linux-arm64-gnu": { "node_modules/lightningcss-linux-arm64-gnu": {
"version": "1.29.2", "version": "1.29.3",
"resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.29.2.tgz", "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.29.3.tgz",
"integrity": "sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==", "integrity": "sha512-Pqau7jtgJNmQ/esugfmAT1aCFy/Gxc92FOxI+3n+LbMHBheBnk41xHDhc0HeYlx9G0xP5tK4t0Koy3QGGNqypw==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@@ -4771,9 +5000,9 @@
} }
}, },
"node_modules/lightningcss-linux-arm64-musl": { "node_modules/lightningcss-linux-arm64-musl": {
"version": "1.29.2", "version": "1.29.3",
"resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.29.2.tgz", "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.29.3.tgz",
"integrity": "sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==", "integrity": "sha512-dxakOk66pf7KLS7VRYFO7B8WOJLecE5OPL2YOk52eriFd/yeyxt2Km5H0BjLfElokIaR+qWi33gB8MQLrdAY3A==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@@ -4791,9 +5020,9 @@
} }
}, },
"node_modules/lightningcss-linux-x64-gnu": { "node_modules/lightningcss-linux-x64-gnu": {
"version": "1.29.2", "version": "1.29.3",
"resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.29.2.tgz", "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.29.3.tgz",
"integrity": "sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==", "integrity": "sha512-ySZTNCpbfbK8rqpKJeJR2S0g/8UqqV3QnzcuWvpI60LWxnFN91nxpSSwCbzfOXkzKfar9j5eOuOplf+klKtINg==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@@ -4811,9 +5040,9 @@
} }
}, },
"node_modules/lightningcss-linux-x64-musl": { "node_modules/lightningcss-linux-x64-musl": {
"version": "1.29.2", "version": "1.29.3",
"resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.29.2.tgz", "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.29.3.tgz",
"integrity": "sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==", "integrity": "sha512-3pVZhIzW09nzi10usAXfIGTTSTYQ141dk88vGFNCgawIzayiIzZQxEcxVtIkdvlEq2YuFsL9Wcj/h61JHHzuFQ==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@@ -4831,9 +5060,9 @@
} }
}, },
"node_modules/lightningcss-win32-arm64-msvc": { "node_modules/lightningcss-win32-arm64-msvc": {
"version": "1.29.2", "version": "1.29.3",
"resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.29.2.tgz", "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.29.3.tgz",
"integrity": "sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==", "integrity": "sha512-VRnkAvtIkeWuoBJeGOTrZxsNp4HogXtcaaLm8agmbYtLDOhQdpgxW6NjZZjDXbvGF+eOehGulXZ3C1TiwHY4QQ==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@@ -4851,9 +5080,9 @@
} }
}, },
"node_modules/lightningcss-win32-x64-msvc": { "node_modules/lightningcss-win32-x64-msvc": {
"version": "1.29.2", "version": "1.29.3",
"resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.29.2.tgz", "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.29.3.tgz",
"integrity": "sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==", "integrity": "sha512-IszwRPu2cPnDQsZpd7/EAr0x2W7jkaWqQ1SwCVIZ/tSbZVXPLt6k8s6FkcyBjViCzvB5CW0We0QbbP7zp2aBjQ==",
"cpu": [ "cpu": [
"x64" "x64"
], ],

View File

@@ -24,6 +24,7 @@
"astro-icon": "^1.1.5", "astro-icon": "^1.1.5",
"astro-pagefind": "^1.8.3", "astro-pagefind": "^1.8.3",
"clsx": "^2.1.1", "clsx": "^2.1.1",
"lightningcss": "^1.29.3",
"react": "^19.1.0", "react": "^19.1.0",
"react-dom": "^19.1.0", "react-dom": "^19.1.0",
"react-hook-form": "^7.56.0", "react-hook-form": "^7.56.0",

View File

@@ -1,12 +1,52 @@
---
const { course } = Astro.props;
const currency = new Intl.NumberFormat("pt-BR", {
style: "currency",
currency: "BRL",
}).format(course.unit_price);
---
<details class:list={["group relative group", Astro.props.class]}> <details class:list={["group relative group", Astro.props.class]}>
<summary <summary
class="flex bg-black hover:bg-white hover:text-black group-open:text-black group-open:bg-white font-semibold py-2.5 px-3 rounded-md cursor-pointer transition" class="flex bg-black hover:bg-white hover:text-black group-open:text-black group-open:bg-white font-semibold py-2.5 px-3 rounded-md cursor-pointer transition"
> >
<slot name="label" /> Contratar agora
</summary> </summary>
<div <div
class="absolute right-0 top-full translate-y-1 bg-stone-900 border border-white/15 min-w-74 rounded-lg shadow drop-shadow" class="absolute right-0 top-full translate-y-1 bg-stone-900 border border-white/15 min-w-78 rounded-lg shadow drop-shadow p-2.5"
> >
<slot /> <strong>Selecione a opção:</strong>
<ul>
<li
class="p-2.5 hover:bg-white/10 rounded-lg flex gap-2.5 items-center"
>
<input
class="box-content size-3.5 border border-white/15 appearance-none rounded-full bg-white/5"
/>
<span class="uppercase">EDUSEG&reg; Flexível</span>
</li>
<li class="p-2.5 hover:bg-white/10 rounded-lg">
<input
class="box-content size-3.5 border border-white/15 appearance-none rounded-full bg-white/5"
/>
<span class="uppercase">EDUSEG&reg; In-Company</span>
</li>
<li class="p-2.5 hover:bg-white/10 rounded-lg">
<input
class="box-content size-3.5 border border-white/15 appearance-none rounded-full bg-white/5"
/>
<span class="uppercase">EDUSEG&reg; Conteúdo</span>
</li>
<li class="p-2.5 hover:bg-white/10 rounded-lg">
<input
class="box-content size-3.5 border border-white/15 appearance-none rounded-full bg-white/5"
/>
<span>Contratar {currency} p/ matrícula</span>
</li>
</ul>
<button
class="p-2.5 bg-lime-400 rounded-lg w-full text-black text-semibold"
>Continuar</button
>
</div> </div>
</details> </details>

View File

@@ -4,7 +4,8 @@ import { zodResolver } from "@hookform/resolvers/zod";
import clsx from "clsx"; import clsx from "clsx";
import { z } from "zod"; import { z } from "zod";
const N8N_URL = "https://n8n.eduseg.com.br/webhook/eduseg"; // const N8N_URL = "https://n8n.eduseg.com.br/webhook/eduseg";
const N8N_URL = "https://n8n.eduseg.com.br/webhook-test/eduseg";
const schema = z.object({ const schema = z.object({
name: z.string().nonempty({ message: "Deve preencher o nome" }), name: z.string().nonempty({ message: "Deve preencher o nome" }),
@@ -17,6 +18,12 @@ const schema = z.object({
message: z.string().nonempty({ message: "Deve preencher a mensagem" }), message: z.string().nonempty({ message: "Deve preencher a mensagem" }),
}); });
const solutions = [
"EDUSEG® FLEXÍVEL",
"EDUSEG® IN-COMPANY",
"EDUSEG® CONTEÚDO",
];
export default function Contact({ url }) { export default function Contact({ url }) {
const { register, formState, control, reset, setValue } = useForm({ const { register, formState, control, reset, setValue } = useForm({
resolver: zodResolver(schema), resolver: zodResolver(schema),
@@ -24,13 +31,13 @@ export default function Contact({ url }) {
useEffect(() => { useEffect(() => {
const handler = (e) => { const handler = (e) => {
setValue("plan", e.detail); setValue("solution", e.detail);
}; };
window.addEventListener("planUpdate", handler); window.addEventListener("custom_event:solution", handler);
return () => { return () => {
window.removeEventListener("planUpdate", handler); window.removeEventListener("custom_event:solution", handler);
}; };
}, [setValue]); }, [setValue]);
@@ -47,13 +54,24 @@ export default function Contact({ url }) {
</p> </p>
)} )}
<input type="hidden" {...register("plan")} /> <input type="hidden" {...register("solution")} />
<input type="hidden" defaultValue={url} {...register("url")} /> <input type="hidden" defaultValue={url} {...register("url")} />
<Control>
<Input as="select" disabled {...register("solution")}>
{solutions.map((text, idx) => (
<option value={text} key={idx}>
{text}
</option>
))}
</Input>
</Control>
<Control> <Control>
<Input <Input
aria-invalid={!!formState.errors?.name} aria-invalid={!!formState.errors?.name}
placeholder="Digite seu nome" placeholder="Digite seu nome"
autoFocus={true}
{...register("name")} {...register("name")}
/> />
<Error>{formState.errors.name?.message}</Error> <Error>{formState.errors.name?.message}</Error>
@@ -107,16 +125,21 @@ export default function Contact({ url }) {
); );
} }
export function Input({ as = "input", className, ...props }) { export function Input({ as = "input", className, children, ...props }) {
return createElement(as, { return createElement(
className: clsx( as,
"bg-white/5 focus:bg-white/15 rounded-lg p-3 w-full border border-white/10 focus:border-lime-400 focus:outline-0 transition", {
"placeholder-white/70", className: clsx(
"aria-invalid:border-red-600", "bg-white/10 focus:bg-white/15 rounded-lg p-3 w-full border border-white/10 focus:border-lime-400 focus:outline-0 transition appearance-none ",
className, "placeholder-white/70",
), "disabled:bg-white/5 disabled:text-white/30",
...props, "aria-invalid:border-red-600",
}); className,
),
...props,
},
children,
);
} }
function Control({ children, className }) { function Control({ children, className }) {

View File

@@ -9,7 +9,7 @@ const courses = await getCollection(
({ data }) => data.draft != true, ({ data }) => data.draft != true,
); );
const { title, course } = Astro.props; const { title } = Astro.props;
--- ---
<nav class="sticky top-0 z-10 bg-lime-400 py-3 drop-shadow shadow-sm"> <nav class="sticky top-0 z-10 bg-lime-400 py-3 drop-shadow shadow-sm">
@@ -25,22 +25,7 @@ const { title, course } = Astro.props;
<Icon name="chevron-down" aria-hidden="true" class="size-4 mt-1" /> <Icon name="chevron-down" aria-hidden="true" class="size-4 mt-1" />
</button> </button>
<BuyDropdown class="ml-auto"> <BuyDropdown class="ml-auto" {...Astro.props} />
<Fragment slot="label">Contratar agora</Fragment>
<ul class="divide-y divide-white/10">
<li class="uppercase py-2.5 px-5">EDUSEG&reg; Flexível</li>
<li class="uppercase py-2.5 px-5">EDUSEG&reg; In-Company</li>
<li class="uppercase py-2.5 px-5">EDUSEG&reg; Conteúdo</li>
<li class="py-2.5 px-5">
Contratar {
new Intl.NumberFormat("pt-BR", {
style: "currency",
currency: "BRL",
}).format(course.unit_price)
} p/ matrícula
</li>
</ul>
</BuyDropdown>
</Container> </Container>
<dialog <dialog

View File

@@ -1,5 +1,4 @@
--- ---
import { Icon } from "astro-icon/components";
import Container from "~/components/Container.astro"; import Container from "~/components/Container.astro";
import Contact from "./Contact.jsx"; import Contact from "./Contact.jsx";
import Modal from "~/components/Modal.astro"; import Modal from "~/components/Modal.astro";
@@ -44,6 +43,7 @@ import Modal from "~/components/Modal.astro";
<button <button
data-toggle="modal" data-toggle="modal"
data-target="#planform" data-target="#planform"
data-label="EDUSEG® FLEXÍVEL"
class="cursor-pointer font-semibold bg-lime-400 text-black hover:bg-white p-2.5 rounded-lg block text-center transition" class="cursor-pointer font-semibold bg-lime-400 text-black hover:bg-white p-2.5 rounded-lg block text-center transition"
> >
Saiba mais Saiba mais
@@ -73,6 +73,7 @@ import Modal from "~/components/Modal.astro";
<button <button
data-toggle="modal" data-toggle="modal"
data-target="#planform" data-target="#planform"
data-label="EDUSEG® IN-COMPANY"
class="cursor-pointer font-semibold bg-lime-400 text-black hover:bg-white p-2.5 rounded-lg block text-center transition" class="cursor-pointer font-semibold bg-lime-400 text-black hover:bg-white p-2.5 rounded-lg block text-center transition"
> >
Saiba mais Saiba mais
@@ -102,6 +103,7 @@ import Modal from "~/components/Modal.astro";
<button <button
data-toggle="modal" data-toggle="modal"
data-target="#planform" data-target="#planform"
data-label="EDUSEG® CONTEÚDO"
class="cursor-pointer font-semibold bg-lime-400 text-black hover:bg-white p-2.5 rounded-lg block text-center transition" class="cursor-pointer font-semibold bg-lime-400 text-black hover:bg-white p-2.5 rounded-lg block text-center transition"
> >
Saiba mais Saiba mais
@@ -111,6 +113,21 @@ import Modal from "~/components/Modal.astro";
</section> </section>
</Container> </Container>
<script is:inline> <script>
console.log(window.dataLayer); const buttons = document.querySelectorAll(
"[data-toggle=modal]",
) as NodeListOf<HTMLButtonElement>;
buttons.forEach((e) => {
e.addEventListener("click", (e) => {
const button = e.target as HTMLButtonElement;
// Dispatch a custom event with the selected solution label,
// so a React component can listen to it using `window.addEventListener`.
window.dispatchEvent(
new CustomEvent("custom_event:solution", {
detail: button.dataset.label,
}),
);
});
});
</script> </script>

View File

@@ -15,6 +15,8 @@ const bundlePath = `${import.meta.env.BASE_URL}pagefind/`;
</div> </div>
<script> <script>
window.dataLayer = window.dataLayer || [];
import { PagefindUI } from "@pagefind/default-ui"; import { PagefindUI } from "@pagefind/default-ui";
const element = "#pagefind-ui"; const element = "#pagefind-ui";
@@ -25,7 +27,7 @@ const bundlePath = `${import.meta.env.BASE_URL}pagefind/`;
const bundlePath = selector.getAttribute("data-bundle-path"); const bundlePath = selector.getAttribute("data-bundle-path");
// Pagefind UI configuration options // Pagefind UI configuration options
// https://pagefind.app/docs/ui/ // https://pagefind.app/docs/ui/
new PagefindUI({ const search = new PagefindUI({
element, element,
bundlePath, bundlePath,
autofocus: true, autofocus: true,
@@ -33,9 +35,9 @@ const bundlePath = `${import.meta.env.BASE_URL}pagefind/`;
pageSize: 5, pageSize: 5,
}); });
const a = console.log(search._pfs);
selector.querySelector<HTMLInputElement>(`input[type="text"]`); // search._pfs.$$set({ trigger_search_term: "aa" })
console.log(a); // console.log();
} }
} }

View File

@@ -22,7 +22,7 @@ const trends = await getEntries([
]); ]);
--- ---
<Layout> <Layout title="Educação que garante sua segurança">
<div class="space-y-6 lg:space-y-24"> <div class="space-y-6 lg:space-y-24">
<Container> <Container>
<nav <nav