From a2a1d3ec4e97336fdc452464609ccd38cb648d4c Mon Sep 17 00:00:00 2001 From: Yousif Akbar <11247449+yhakbar@users.noreply.github.com> Date: Mon, 5 May 2025 15:45:04 -0400 Subject: [PATCH 01/25] fix: Adding Tailwind --- docs-starlight/astro.config.mjs | 6 +- docs-starlight/bun.lock | 105 +++++++++++++++++++++++++++ docs-starlight/package.json | 5 +- docs-starlight/src/styles/global.css | 5 ++ 4 files changed, 119 insertions(+), 2 deletions(-) create mode 100644 docs-starlight/src/styles/global.css diff --git a/docs-starlight/astro.config.mjs b/docs-starlight/astro.config.mjs index ede2640064..ceb2662798 100644 --- a/docs-starlight/astro.config.mjs +++ b/docs-starlight/astro.config.mjs @@ -3,8 +3,8 @@ import { defineConfig } from "astro/config"; import starlight from "@astrojs/starlight"; import starlightLinksValidator from "starlight-links-validator"; import vercel from "@astrojs/vercel"; - import d2 from "astro-d2"; +import tailwindcss from "@tailwindcss/vite"; export const sidebar = [ { @@ -78,6 +78,7 @@ export default defineConfig({ integrations: [ starlight({ title: "Terragrunt", + customCss: ["./src/styles/global.css"], logo: { dark: "/src/assets/logo-light.svg", light: "/src/assets/logo-dark.svg", @@ -162,4 +163,7 @@ export default defineConfig({ "/docs/features/provider-cache/": "/docs/features/provider-cache-server/", "/docs/features/provider-caching/": "/docs/features/provider-cache-server/", }, + vite: { + plugins: [tailwindcss()], + }, }); diff --git a/docs-starlight/bun.lock b/docs-starlight/bun.lock index fd1e0b478b..420210abbc 100644 --- a/docs-starlight/bun.lock +++ b/docs-starlight/bun.lock @@ -5,13 +5,16 @@ "name": "docs-starlight", "dependencies": { "@astrojs/starlight": "^0.31.1", + "@astrojs/starlight-tailwind": "^4.0.1", "@astrojs/vercel": "^8.1.1", + "@tailwindcss/vite": "^4.1.5", "@zachleat/table-saw": "^1.0.6", "astro": "^5.4.2", "astro-d2": "^0.7.0", "gray-matter": "^4.0.3", "sharp": "^0.32.6", "starlight-links-validator": "^0.14.3", + "tailwindcss": "^4.1.5", }, "devDependencies": { "@types/bun": "^1.2.4", @@ -39,6 +42,8 @@ "@astrojs/starlight": ["@astrojs/starlight@0.31.1", "", { "dependencies": { "@astrojs/mdx": "^4.0.5", "@astrojs/sitemap": "^3.2.1", "@pagefind/default-ui": "^1.3.0", "@types/hast": "^3.0.4", "@types/js-yaml": "^4.0.9", "@types/mdast": "^4.0.4", "astro-expressive-code": "^0.40.0", "bcp-47": "^2.1.0", "hast-util-from-html": "^2.0.1", "hast-util-select": "^6.0.2", "hast-util-to-string": "^3.0.0", "hastscript": "^9.0.0", "i18next": "^23.11.5", "js-yaml": "^4.1.0", "mdast-util-directive": "^3.0.0", "mdast-util-to-markdown": "^2.1.0", "mdast-util-to-string": "^4.0.0", "pagefind": "^1.3.0", "rehype": "^13.0.1", "rehype-format": "^5.0.0", "remark-directive": "^3.0.0", "unified": "^11.0.5", "unist-util-visit": "^5.0.0", "vfile": "^6.0.2" }, "peerDependencies": { "astro": "^5.1.5" } }, "sha512-VIVkHugwgtEqJPiRH8+ouP0UqUfdmpBO9C64R+6QaQ2qmADNkI/BA3/YAJHTBZYlMQQGEEuLJwD9qpaUovi52Q=="], + "@astrojs/starlight-tailwind": ["@astrojs/starlight-tailwind@4.0.1", "", { "peerDependencies": { "@astrojs/starlight": ">=0.34.0", "tailwindcss": "^4.0.0" } }, "sha512-AOOEWTGqJ7fG66U04xTmZQZ40oZnUYe4Qljpr+No88ozKywtsD1DiXOrGTeHCnZu0hRtMbRtBGB1fZsf0L62iw=="], + "@astrojs/telemetry": ["@astrojs/telemetry@3.2.0", "", { "dependencies": { "ci-info": "^4.1.0", "debug": "^4.3.7", "dlv": "^1.1.3", "dset": "^3.1.4", "is-docker": "^3.0.0", "is-wsl": "^3.1.0", "which-pm-runs": "^1.1.0" } }, "sha512-wxhSKRfKugLwLlr4OFfcqovk+LIFtKwLyGPqMsv+9/ibqqnW3Gv7tBhtKEb0gAyUAC4G9BTVQeQahqnQAhd6IQ=="], "@astrojs/vercel": ["@astrojs/vercel@8.1.1", "", { "dependencies": { "@astrojs/internal-helpers": "0.6.0", "@vercel/analytics": "^1.5.0", "@vercel/edge": "^1.2.1", "@vercel/nft": "^0.29.2", "@vercel/routing-utils": "^5.0.4", "esbuild": "^0.25.0", "tinyglobby": "^0.2.12" }, "peerDependencies": { "astro": "^5.0.0" } }, "sha512-4tTib9LkAtg7tqac4L+pnWEveUmYyWRXpHivaVV3lHKeQjB28KUZ+YXtR/VUG6/xpMduo+OCOOg0l1zOPq/e4w=="], @@ -233,6 +238,36 @@ "@shikijs/vscode-textmate": ["@shikijs/vscode-textmate@10.0.2", "", {}, "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg=="], + "@tailwindcss/node": ["@tailwindcss/node@4.1.5", "", { "dependencies": { "enhanced-resolve": "^5.18.1", "jiti": "^2.4.2", "lightningcss": "1.29.2", "tailwindcss": "4.1.5" } }, "sha512-CBhSWo0vLnWhXIvpD0qsPephiaUYfHUX3U9anwDaHZAeuGpTiB3XmsxPAN6qX7bFhipyGBqOa1QYQVVhkOUGxg=="], + + "@tailwindcss/oxide": ["@tailwindcss/oxide@4.1.5", "", { "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.1.5", "@tailwindcss/oxide-darwin-arm64": "4.1.5", "@tailwindcss/oxide-darwin-x64": "4.1.5", "@tailwindcss/oxide-freebsd-x64": "4.1.5", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.5", "@tailwindcss/oxide-linux-arm64-gnu": "4.1.5", "@tailwindcss/oxide-linux-arm64-musl": "4.1.5", "@tailwindcss/oxide-linux-x64-gnu": "4.1.5", "@tailwindcss/oxide-linux-x64-musl": "4.1.5", "@tailwindcss/oxide-wasm32-wasi": "4.1.5", "@tailwindcss/oxide-win32-arm64-msvc": "4.1.5", "@tailwindcss/oxide-win32-x64-msvc": "4.1.5" } }, "sha512-1n4br1znquEvyW/QuqMKQZlBen+jxAbvyduU87RS8R3tUSvByAkcaMTkJepNIrTlYhD+U25K4iiCIxE6BGdRYA=="], + + "@tailwindcss/oxide-android-arm64": ["@tailwindcss/oxide-android-arm64@4.1.5", "", { "os": "android", "cpu": "arm64" }, "sha512-LVvM0GirXHED02j7hSECm8l9GGJ1RfgpWCW+DRn5TvSaxVsv28gRtoL4aWKGnXqwvI3zu1GABeDNDVZeDPOQrw=="], + + "@tailwindcss/oxide-darwin-arm64": ["@tailwindcss/oxide-darwin-arm64@4.1.5", "", { "os": "darwin", "cpu": "arm64" }, "sha512-//TfCA3pNrgnw4rRJOqavW7XUk8gsg9ddi8cwcsWXp99tzdBAZW0WXrD8wDyNbqjW316Pk2hiN/NJx/KWHl8oA=="], + + "@tailwindcss/oxide-darwin-x64": ["@tailwindcss/oxide-darwin-x64@4.1.5", "", { "os": "darwin", "cpu": "x64" }, "sha512-XQorp3Q6/WzRd9OalgHgaqgEbjP3qjHrlSUb5k1EuS1Z9NE9+BbzSORraO+ecW432cbCN7RVGGL/lSnHxcd+7Q=="], + + "@tailwindcss/oxide-freebsd-x64": ["@tailwindcss/oxide-freebsd-x64@4.1.5", "", { "os": "freebsd", "cpu": "x64" }, "sha512-bPrLWbxo8gAo97ZmrCbOdtlz/Dkuy8NK97aFbVpkJ2nJ2Jo/rsCbu0TlGx8joCuA3q6vMWTSn01JY46iwG+clg=="], + + "@tailwindcss/oxide-linux-arm-gnueabihf": ["@tailwindcss/oxide-linux-arm-gnueabihf@4.1.5", "", { "os": "linux", "cpu": "arm" }, "sha512-1gtQJY9JzMAhgAfvd/ZaVOjh/Ju/nCoAsvOVJenWZfs05wb8zq+GOTnZALWGqKIYEtyNpCzvMk+ocGpxwdvaVg=="], + + "@tailwindcss/oxide-linux-arm64-gnu": ["@tailwindcss/oxide-linux-arm64-gnu@4.1.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-dtlaHU2v7MtdxBXoqhxwsWjav7oim7Whc6S9wq/i/uUMTWAzq/gijq1InSgn2yTnh43kR+SFvcSyEF0GCNu1PQ=="], + + "@tailwindcss/oxide-linux-arm64-musl": ["@tailwindcss/oxide-linux-arm64-musl@4.1.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-fg0F6nAeYcJ3CriqDT1iVrqALMwD37+sLzXs8Rjy8Z1ZHshJoYceodfyUwGJEsQoTyWbliFNRs2wMQNXtT7MVA=="], + + "@tailwindcss/oxide-linux-x64-gnu": ["@tailwindcss/oxide-linux-x64-gnu@4.1.5", "", { "os": "linux", "cpu": "x64" }, "sha512-SO+F2YEIAHa1AITwc8oPwMOWhgorPzzcbhWEb+4oLi953h45FklDmM8dPSZ7hNHpIk9p/SCZKUYn35t5fjGtHA=="], + + "@tailwindcss/oxide-linux-x64-musl": ["@tailwindcss/oxide-linux-x64-musl@4.1.5", "", { "os": "linux", "cpu": "x64" }, "sha512-6UbBBplywkk/R+PqqioskUeXfKcBht3KU7juTi1UszJLx0KPXUo10v2Ok04iBJIaDPkIFkUOVboXms5Yxvaz+g=="], + + "@tailwindcss/oxide-wasm32-wasi": ["@tailwindcss/oxide-wasm32-wasi@4.1.5", "", { "dependencies": { "@emnapi/core": "^1.4.3", "@emnapi/runtime": "^1.4.3", "@emnapi/wasi-threads": "^1.0.2", "@napi-rs/wasm-runtime": "^0.2.9", "@tybys/wasm-util": "^0.9.0", "tslib": "^2.8.0" }, "cpu": "none" }, "sha512-hwALf2K9FHuiXTPqmo1KeOb83fTRNbe9r/Ixv9ZNQ/R24yw8Ge1HOWDDgTdtzntIaIUJG5dfXCf4g9AD4RiyhQ=="], + + "@tailwindcss/oxide-win32-arm64-msvc": ["@tailwindcss/oxide-win32-arm64-msvc@4.1.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-oDKncffWzaovJbkuR7/OTNFRJQVdiw/n8HnzaCItrNQUeQgjy7oUiYpsm9HUBgpmvmDpSSbGaCa2Evzvk3eFmA=="], + + "@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.1.5", "", { "os": "win32", "cpu": "x64" }, "sha512-WiR4dtyrFdbb+ov0LK+7XsFOsG+0xs0PKZKkt41KDn9jYpO7baE3bXiudPVkTqUEwNfiglCygQHl2jklvSBi7Q=="], + + "@tailwindcss/vite": ["@tailwindcss/vite@4.1.5", "", { "dependencies": { "@tailwindcss/node": "4.1.5", "@tailwindcss/oxide": "4.1.5", "tailwindcss": "4.1.5" }, "peerDependencies": { "vite": "^5.2.0 || ^6" } }, "sha512-FE1stRoqdHSb7RxesMfCXE8icwI1W6zGE/512ae3ZDrpkQYTTYeSyUJPRCjZd8CwVAhpDUbi1YR8pcZioFJQ/w=="], + "@types/acorn": ["@types/acorn@4.0.6", "", { "dependencies": { "@types/estree": "*" } }, "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ=="], "@types/bun": ["@types/bun@1.2.4", "", { "dependencies": { "bun-types": "1.2.4" } }, "sha512-QtuV5OMR8/rdKJs213iwXDpfVvnskPXY/S0ZiFbsTjQZycuqPbMW8Gf/XhLfwE5njW8sxI2WjISURXPlHypMFA=="], @@ -449,6 +484,8 @@ "end-of-stream": ["end-of-stream@1.4.4", "", { "dependencies": { "once": "^1.4.0" } }, "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q=="], + "enhanced-resolve": ["enhanced-resolve@5.18.1", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" } }, "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg=="], + "entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="], "es-module-lexer": ["es-module-lexer@1.6.0", "", {}, "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ=="], @@ -621,6 +658,8 @@ "jackspeak": ["jackspeak@3.4.3", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" }, "optionalDependencies": { "@pkgjs/parseargs": "^0.11.0" } }, "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw=="], + "jiti": ["jiti@2.4.2", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A=="], + "js-yaml": ["js-yaml@4.1.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA=="], "json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="], @@ -629,6 +668,28 @@ "kleur": ["kleur@4.1.5", "", {}, "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ=="], + "lightningcss": ["lightningcss@1.29.2", "", { "dependencies": { "detect-libc": "^2.0.3" }, "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" } }, "sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA=="], + + "lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.29.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA=="], + + "lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.29.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w=="], + + "lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.29.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg=="], + + "lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.29.2", "", { "os": "linux", "cpu": "arm" }, "sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg=="], + + "lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.29.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ=="], + + "lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.29.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ=="], + + "lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.29.2", "", { "os": "linux", "cpu": "x64" }, "sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg=="], + + "lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.29.2", "", { "os": "linux", "cpu": "x64" }, "sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w=="], + + "lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.29.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw=="], + + "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.29.2", "", { "os": "win32", "cpu": "x64" }, "sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA=="], + "load-yaml-file": ["load-yaml-file@0.2.0", "", { "dependencies": { "graceful-fs": "^4.1.5", "js-yaml": "^3.13.0", "pify": "^4.0.1", "strip-bom": "^3.0.0" } }, "sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw=="], "locate-path": ["locate-path@5.0.0", "", { "dependencies": { "p-locate": "^4.1.0" } }, "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g=="], @@ -995,6 +1056,10 @@ "style-to-object": ["style-to-object@1.0.8", "", { "dependencies": { "inline-style-parser": "0.2.4" } }, "sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g=="], + "tailwindcss": ["tailwindcss@4.1.5", "", {}, "sha512-nYtSPfWGDiWgCkwQG/m+aX83XCwf62sBgg3bIlNiiOcggnS1x3uVRDAuyelBFL+vJdOPPCGElxv9DjHJjRHiVA=="], + + "tapable": ["tapable@2.2.1", "", {}, "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ=="], + "tar": ["tar@7.4.3", "", { "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", "minipass": "^7.1.2", "minizlib": "^3.0.1", "mkdirp": "^3.0.1", "yallist": "^5.0.0" } }, "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw=="], "tar-fs": ["tar-fs@3.0.8", "", { "dependencies": { "pump": "^3.0.0", "tar-stream": "^3.1.5" }, "optionalDependencies": { "bare-fs": "^4.0.1", "bare-path": "^3.0.0" } }, "sha512-ZoROL70jptorGAlgAYiLoBLItEKw/fUxg9BSYK/dF/GAGYFJOJJJMvjPAKDJraCXFwadD456FCuvLWgfhMsPwg=="], @@ -1117,6 +1182,18 @@ "@isaacs/cliui/wrap-ansi": ["wrap-ansi@8.1.0", "", { "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", "strip-ansi": "^7.0.1" } }, "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ=="], + "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.4.3", "", { "dependencies": { "@emnapi/wasi-threads": "1.0.2", "tslib": "^2.4.0" }, "bundled": true }, "sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g=="], + + "@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.4.3", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ=="], + + "@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.0.2", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA=="], + + "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@0.2.9", "", { "dependencies": { "@emnapi/core": "^1.4.0", "@emnapi/runtime": "^1.4.0", "@tybys/wasm-util": "^0.9.0" }, "bundled": true }, "sha512-OKRBiajrrxB9ATokgEQoG87Z25c67pCpYcCwmXYX8PBftC9pBfN18gnm/fh1wurSLEKIAt+QRFLFCQISrb66Jg=="], + + "@tailwindcss/oxide-wasm32-wasi/@tybys/wasm-util": ["@tybys/wasm-util@0.9.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw=="], + + "@tailwindcss/oxide-wasm32-wasi/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "ansi-align/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], "anymatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], @@ -1153,6 +1230,22 @@ "@isaacs/cliui/string-width/emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="], + "@tailwindcss/oxide-wasm32-wasi/@emnapi/core/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.0.2", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA=="], + + "@tailwindcss/oxide-wasm32-wasi/@emnapi/core/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime/@emnapi/core": ["@emnapi/core@1.4.3", "", { "dependencies": { "@emnapi/wasi-threads": "1.0.2", "tslib": "^2.4.0" }, "bundled": true }, "sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g=="], + + "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime/@emnapi/runtime": ["@emnapi/runtime@1.4.3", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ=="], + + "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime/@tybys/wasm-util": ["@tybys/wasm-util@0.9.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw=="], + + "@tailwindcss/oxide-wasm32-wasi/@tybys/wasm-util/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "ansi-align/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], "ansi-align/string-width/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], @@ -1169,6 +1262,18 @@ "wrap-ansi-cjs/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + "@tailwindcss/oxide-wasm32-wasi/@emnapi/core/@emnapi/wasi-threads/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime/@emnapi/core/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.0.2", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA=="], + + "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime/@emnapi/core/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime/@emnapi/runtime/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime/@tybys/wasm-util/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "ansi-align/string-width/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + + "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime/@emnapi/core/@emnapi/wasi-threads/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], } } diff --git a/docs-starlight/package.json b/docs-starlight/package.json index d449c53d1b..d1ad3968a2 100644 --- a/docs-starlight/package.json +++ b/docs-starlight/package.json @@ -11,13 +11,16 @@ }, "dependencies": { "@astrojs/starlight": "^0.31.1", + "@astrojs/starlight-tailwind": "^4.0.1", "@astrojs/vercel": "^8.1.1", + "@tailwindcss/vite": "^4.1.5", "@zachleat/table-saw": "^1.0.6", "astro": "^5.4.2", "astro-d2": "^0.7.0", "gray-matter": "^4.0.3", "sharp": "^0.32.6", - "starlight-links-validator": "^0.14.3" + "starlight-links-validator": "^0.14.3", + "tailwindcss": "^4.1.5" }, "patchedDependencies": { "@astrojs/starlight@0.31.1": "patches/@astrojs%2Fstarlight@0.31.1.patch" diff --git a/docs-starlight/src/styles/global.css b/docs-starlight/src/styles/global.css new file mode 100644 index 0000000000..146149b66e --- /dev/null +++ b/docs-starlight/src/styles/global.css @@ -0,0 +1,5 @@ +@layer base, starlight, theme, components, utilities; + +@import '@astrojs/starlight-tailwind'; +@import 'tailwindcss/theme.css' layer(theme); +@import 'tailwindcss/utilities.css' layer(utilities); From d19718798b8efdd14d29b2779aed68d40b5beffc Mon Sep 17 00:00:00 2001 From: Yousif Akbar <11247449+yhakbar@users.noreply.github.com> Date: Mon, 5 May 2025 15:45:43 -0400 Subject: [PATCH 02/25] fix: Adding some basic content --- docs-starlight/src/content/docs/index.mdx | 17 -- docs-starlight/src/layouts/BaseLayout.astro | 21 ++ docs-starlight/src/pages/index.astro | 236 ++++++++++++++++++++ 3 files changed, 257 insertions(+), 17 deletions(-) delete mode 100644 docs-starlight/src/content/docs/index.mdx create mode 100644 docs-starlight/src/layouts/BaseLayout.astro create mode 100644 docs-starlight/src/pages/index.astro diff --git a/docs-starlight/src/content/docs/index.mdx b/docs-starlight/src/content/docs/index.mdx deleted file mode 100644 index b114b61891..0000000000 --- a/docs-starlight/src/content/docs/index.mdx +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: Terragrunt -description: The flexible Infrastructure as Code orchestrator that allows OpenTofu/Terraform to scale. -template: splash -hero: - tagline: Flexible orchestrator to scale IaC. - image: - dark: /src/assets/logo-light.svg - light: /src/assets/logo-dark.svg - actions: - - text: Quick Start - link: /docs/getting-started/quick-start - icon: rocket - - text: Reference - link: /docs/reference/hcl - icon: open-book ---- diff --git a/docs-starlight/src/layouts/BaseLayout.astro b/docs-starlight/src/layouts/BaseLayout.astro new file mode 100644 index 0000000000..1103316264 --- /dev/null +++ b/docs-starlight/src/layouts/BaseLayout.astro @@ -0,0 +1,21 @@ +--- +interface Props { + title: string; +} + +const { title } = Astro.props; +--- + + + + + + + + + {title} + + + + + diff --git a/docs-starlight/src/pages/index.astro b/docs-starlight/src/pages/index.astro new file mode 100644 index 0000000000..85f01fdad3 --- /dev/null +++ b/docs-starlight/src/pages/index.astro @@ -0,0 +1,236 @@ +--- +import BaseLayout from '../layouts/BaseLayout.astro'; + +const pageTitle = "Terragrunt by Gruntwork | Flexible IaC that Scales"; + +// Placeholder data for logos - replace with actual image paths or SVG components +const companyLogos = [ + { name: "Company A", placeholder: "bg-gray-300", alt: "Logo for Company A" }, + { name: "Company B", placeholder: "bg-gray-400", alt: "Logo for Company B" }, + { name: "Company C", placeholder: "bg-gray-500", alt: "Logo for Company C" }, + { name: "Company D", placeholder: "bg-gray-300", alt: "Logo for Company D" }, + { name: "Company E", placeholder: "bg-gray-400", alt: "Logo for Company E" }, + { name: "Company F", placeholder: "bg-gray-500", alt: "Logo for Company F" }, + { name: "Company G", placeholder: "bg-gray-300", alt: "Logo for Company G" }, +]; +--- + + + {/* Navbar Section */} +
+ {/* Apply container centering and padding to the nav element itself */} + +
+ +
+ {/* Hero Section */} +
+
+

+ Flexible IaC that scales +

+

+ Production-grade infrastructure tooling for OpenTofu/Terraform from the DevOps experts at Gruntwork. +

+ +
+
+ + {/* Logo Bar Section */} +
+
+

+ Orchestrating infrastructure at +

+
+ {/* Updated logo placeholders: Use img tag structure, constrain height, auto width */} + {companyLogos.map(logo => ( +
+ {/* Placeholder - Replace with actual tag */} + {/* {logo.alt} */} +
+ {logo.name} +
+
+ ))} +
+
+
+ + {/* Feature Sections */} +
+
+ + {/* Section: Best Way */} +
+

+ The Best Way to Manage Infrastructure at Scale +

+

+ Organically shaped by years of solving scaling problems for organizations managing massive OpenTofu/Terraform infrastructure estates. +

+
+ + {/* Feature Grid/List */} + {/* Increased gap for better spacing */} +
+ + {/* Feature: Control */} +
+

Control Your Infrastructure

+

{/* Added leading-relaxed */} + Limit Your Blast Radius 🎯
+ Break down your monolithic infrastructure to manageable units that are safe to update independently, and have their own state. +

+
+ + {/* Feature: Orchestrate */} +
+

Orchestrate Your Infrastructure

+

{/* Added leading-relaxed */} + Reject all-or-nothing updates. Control exactly what infrastructure is updated, how it gets updated, and in what order by taking advantage of stacks. +

+
+ + {/* Feature: Automate Backend */} +
+

Automate Your Backend Infrastructure

+

{/* Added leading-relaxed */} + Ensure your entire team is using secure, consistent OpenTofu/Terraform state backend configurations. +

+
+ + {/* Feature: DRY */} +
+

Reduce Code Duplication

+
{/* Increased space-y */} +

Includes

+

Define reusable infrastructure configurations once, and reference them wherever they’re needed using includes.

+

Reuse Production-Ready Patterns

+

Leverage the special construct of the Terragrunt Stack to encapsulate higher level collections of infrastructure components as a unified stack.

+

Out of the Box Self-Service

+

Maintain and expose an infrastructure catalog that your engineers can consume on demand. Make the easiest way to provision infrastructure the right way.

+
+
+ + {/* Feature: Consistency & Safety */} +
+

Codify Tribal Knowledge

+
{/* Increased space-y */} +

Automate Operational Tasks Using Hooks

+

Don’t ask that your engineers remember to do things before/after updating IaC, codify those tasks with hooks so that they’re done automatically.

+

Handle Expected Errors

+

Your engineers know that networks can be flaky, and cloud providers aren’t perfect. Automatically handle the errors they produce using built-in error handling.

+

Integrate Early and Often

+

Get your engineers on the same page. Keep them all working on a consistent, unified codebase, but gradually roll out new features using feature flags.

+
+
+ + {/* Empty div to push the last item if needed on certain grid layouts, or remove if layout adjusts well */} + + +
+
+
+ + {/* Upsell Section */} +
+
+

+ Supercharge Terragrunt for your Organization +

+

+ Buy a subscription to Gruntwork services to get a platform team for your platform team. Trade money for time, and focus your engineering efforts on the work that delivers value to your organization. +

+
+ {/* Added hover effect and slightly more padding */} +
+

Automate your CI/CD

+

{/* Added leading-relaxed */} + Gruntwork Pipelines is an out-of-the-box, best practices, secure CI/CD pipeline, built for Terragrunt, by the creators of Terragrunt. +

+ {/* Optional: Add a link */} + {/* Learn More → */} +
+ {/* Added hover effect and slightly more padding */} +
+

Keep your IaC Fresh

+

{/* Added leading-relaxed */} + Gruntwork Patcher is a dependency management tool that keeps your OpenTofu/Terraform modules up to date, even through breaking changes. +

+ {/* Optional: Add a link */} + {/* Learn More → */} +
+
+
+
+ +
+ + {/* Footer Section */} +
+
+ From the DevOps Experts at Gruntwork +
+
+ +
+ + From f79dcdf1c8b6994e141a0ff2d62482ab2ad1c62c Mon Sep 17 00:00:00 2001 From: Yousif Akbar <11247449+yhakbar@users.noreply.github.com> Date: Mon, 5 May 2025 17:28:02 -0400 Subject: [PATCH 03/25] feat: Adding homepage --- docs-starlight/src/pages/index.astro | 688 ++++++++++++++++++--------- 1 file changed, 457 insertions(+), 231 deletions(-) diff --git a/docs-starlight/src/pages/index.astro b/docs-starlight/src/pages/index.astro index 85f01fdad3..a5f31a6489 100644 --- a/docs-starlight/src/pages/index.astro +++ b/docs-starlight/src/pages/index.astro @@ -1,236 +1,462 @@ --- -import BaseLayout from '../layouts/BaseLayout.astro'; - -const pageTitle = "Terragrunt by Gruntwork | Flexible IaC that Scales"; - -// Placeholder data for logos - replace with actual image paths or SVG components -const companyLogos = [ - { name: "Company A", placeholder: "bg-gray-300", alt: "Logo for Company A" }, - { name: "Company B", placeholder: "bg-gray-400", alt: "Logo for Company B" }, - { name: "Company C", placeholder: "bg-gray-500", alt: "Logo for Company C" }, - { name: "Company D", placeholder: "bg-gray-300", alt: "Logo for Company D" }, - { name: "Company E", placeholder: "bg-gray-400", alt: "Logo for Company E" }, - { name: "Company F", placeholder: "bg-gray-500", alt: "Logo for Company F" }, - { name: "Company G", placeholder: "bg-gray-300", alt: "Logo for Company G" }, -]; +import StarlightPage from '@astrojs/starlight/components/StarlightPage.astro'; --- - - - {/* Navbar Section */} -
- {/* Apply container centering and padding to the nav element itself */} - -
- -
- {/* Hero Section */} -
-
-

- Flexible IaC that scales -

-

- Production-grade infrastructure tooling for OpenTofu/Terraform from the DevOps experts at Gruntwork. -

- -
-
- - {/* Logo Bar Section */} -
-
-

- Orchestrating infrastructure at -

-
- {/* Updated logo placeholders: Use img tag structure, constrain height, auto width */} - {companyLogos.map(logo => ( -
- {/* Placeholder - Replace with actual tag */} - {/* {logo.alt} */} -
- {logo.name} -
-
- ))} -
-
-
- - {/* Feature Sections */} -
-
- - {/* Section: Best Way */} -
-

- The Best Way to Manage Infrastructure at Scale -

-

- Organically shaped by years of solving scaling problems for organizations managing massive OpenTofu/Terraform infrastructure estates. -

-
- - {/* Feature Grid/List */} - {/* Increased gap for better spacing */} -
- - {/* Feature: Control */} -
-

Control Your Infrastructure

-

{/* Added leading-relaxed */} - Limit Your Blast Radius 🎯
- Break down your monolithic infrastructure to manageable units that are safe to update independently, and have their own state. -

-
- - {/* Feature: Orchestrate */} -
-

Orchestrate Your Infrastructure

-

{/* Added leading-relaxed */} - Reject all-or-nothing updates. Control exactly what infrastructure is updated, how it gets updated, and in what order by taking advantage of stacks. -

-
- - {/* Feature: Automate Backend */} -
-

Automate Your Backend Infrastructure

-

{/* Added leading-relaxed */} - Ensure your entire team is using secure, consistent OpenTofu/Terraform state backend configurations. -

-
- - {/* Feature: DRY */} -
-

Reduce Code Duplication

-
{/* Increased space-y */} -

Includes

-

Define reusable infrastructure configurations once, and reference them wherever they’re needed using includes.

-

Reuse Production-Ready Patterns

-

Leverage the special construct of the Terragrunt Stack to encapsulate higher level collections of infrastructure components as a unified stack.

-

Out of the Box Self-Service

-

Maintain and expose an infrastructure catalog that your engineers can consume on demand. Make the easiest way to provision infrastructure the right way.

-
-
- - {/* Feature: Consistency & Safety */} -
-

Codify Tribal Knowledge

-
{/* Increased space-y */} -

Automate Operational Tasks Using Hooks

-

Don’t ask that your engineers remember to do things before/after updating IaC, codify those tasks with hooks so that they’re done automatically.

-

Handle Expected Errors

-

Your engineers know that networks can be flaky, and cloud providers aren’t perfect. Automatically handle the errors they produce using built-in error handling.

-

Integrate Early and Often

-

Get your engineers on the same page. Keep them all working on a consistent, unified codebase, but gradually roll out new features using feature flags.

-
-
- - {/* Empty div to push the last item if needed on certain grid layouts, or remove if layout adjusts well */} - - -
-
-
- - {/* Upsell Section */} -
-
-

- Supercharge Terragrunt for your Organization -

-

- Buy a subscription to Gruntwork services to get a platform team for your platform team. Trade money for time, and focus your engineering efforts on the work that delivers value to your organization. -

-
- {/* Added hover effect and slightly more padding */} -
-

Automate your CI/CD

-

{/* Added leading-relaxed */} - Gruntwork Pipelines is an out-of-the-box, best practices, secure CI/CD pipeline, built for Terragrunt, by the creators of Terragrunt. -

- {/* Optional: Add a link */} - {/* Learn More → */} -
- {/* Added hover effect and slightly more padding */} -
-

Keep your IaC Fresh

-

{/* Added leading-relaxed */} - Gruntwork Patcher is a dependency management tool that keeps your OpenTofu/Terraform modules up to date, even through breaking changes. -

- {/* Optional: Add a link */} - {/* Learn More → */} -
-
-
-
- -
- - {/* Footer Section */} -
-
- From the DevOps Experts at Gruntwork -
-
- -
+ + + +
+

Flexible IaC That Scales

+

Production-grade infrastructure tooling for OpenTofu/Terraform from the DevOps experts at Gruntwork.

+ +
+ +
+

+ Orchestrating infrastructure at +

+
+ Client Logo 1 + Client Logo 2 + Client Logo 3 + Client Logo 4 + Client Logo 5 + Client Logo 6 + Client Logo 7 +
+
+ +
+

+ The Best Way to Manage Infrastructure at Scale +

+

+ Organically shaped by years of solving scaling problems for organizations managing massive OpenTofu/Terraform infrastructure estates. +

+
+ +
+
+

Control Your Infrastructure

+

Limit Your Blast Radius 🎯

+

Break down your monolithic infrastructure to manageable units that are safe to update independently, and have their own state.

+
+ +
+

Orchestrate Your Infrastructure

+

Reject all-or-nothing updates. Control exactly what infrastructure is updated, how it gets updated, and in what order by taking advantage of stacks.

+
+ +
+

Automate Your Backend Infrastructure

+

Ensure your entire team is using secure, consistent OpenTofu/Terraform state backend configurations.

+
+ +
+

Reduce Code Duplication

+

Includes

+

Define reusable infrastructure configurations once, and reference them wherever they're needed using includes.

+

Reuse Production-Ready Patterns

+

Leverage the special construct of the Terragrunt Stack to encapsulate higher level collections of infrastructure components as a unified stack.

+

Out of the Box Self-Service

+

Maintain and expose an infrastructure catalog that your engineers can consume on demand. Make the easiest way to provision infrastructure the right way.

+
+ +
+

Ensure Consistency and Safety

+

Codify Tribal Knowledge

+

Automate Operational Tasks Using Hooks

+

Don't ask that your engineers remember to do things before/after updating IaC, codify those tasks with hooks so that they're done automatically.

+

Handle Expected Errors

+

Your engineers know that networks can be flaky, and cloud providers aren't perfect. Automatically handle the errors they produce using built-in error handling.

+

Integrate Early and Often

+

Get your engineers on the same page. Keep them all working on a consistent, unified codebase, but gradually roll out new features using feature flags.

+
+
+ +
+

Supercharge Terragrunt for your Organization

+

+ Buy a subscription to Gruntwork services to get a platform team for your platform team. Trade money for time, and focus your engineering efforts on the work that delivers value to your organization. +

+
+
+
+ +
+

Automate your CI/CD

+

Gruntwork Pipelines provides a highly secure, GitOps driven infrastructure pipeline with first-class support for Terragrunt features like Stacks.

+ Learn More → +
+
+
+ +
+

Keep your IaC Fresh

+

Gruntwork Patcher makes updates to your infrastructure seamless, and will even patch your code to make it work with backward incompatible module releases. It also knows how to update your stacks and promote across environments.

+ Learn More → +
+
+
+ + + +
From 8b94f578ab344a510d1b96b4728dc9edceec7243 Mon Sep 17 00:00:00 2001 From: Yousif Akbar <11247449+yhakbar@users.noreply.github.com> Date: Tue, 6 May 2025 08:43:38 -0400 Subject: [PATCH 04/25] feat: Switching to Tailwind --- docs-starlight/src/pages/index.astro | 475 ++++----------------------- 1 file changed, 63 insertions(+), 412 deletions(-) diff --git a/docs-starlight/src/pages/index.astro b/docs-starlight/src/pages/index.astro index a5f31a6489..b8f913c246 100644 --- a/docs-starlight/src/pages/index.astro +++ b/docs-starlight/src/pages/index.astro @@ -9,454 +9,105 @@ import StarlightPage from '@astrojs/starlight/components/StarlightPage.astro'; pagefind: false, }}> -
-

Flexible IaC That Scales

-

Production-grade infrastructure tooling for OpenTofu/Terraform from the DevOps experts at Gruntwork.

-
- Quick Start - Docs +
+

Flexible IaC That Scales

+

Production-grade infrastructure tooling for OpenTofu/Terraform from the DevOps experts at Gruntwork.

+
-
-

+
+

Orchestrating infrastructure at

-
- Client Logo 1 - Client Logo 2 - Client Logo 3 - Client Logo 4 - Client Logo 5 - Client Logo 6 - Client Logo 7 +
+ Client Logo 1 + Client Logo 2 + Client Logo 3 + Client Logo 4 + Client Logo 5 + Client Logo 6 + Client Logo 7
-
-

+
+

The Best Way to Manage Infrastructure at Scale

-

+

Organically shaped by years of solving scaling problems for organizations managing massive OpenTofu/Terraform infrastructure estates.

-
-
-

Control Your Infrastructure

-

Limit Your Blast Radius 🎯

-

Break down your monolithic infrastructure to manageable units that are safe to update independently, and have their own state.

+
+
+

Control Your Infrastructure

+

Limit Your Blast Radius 🎯

+

Break down your monolithic infrastructure to manageable units that are safe to update independently, and have their own state.

-
-

Orchestrate Your Infrastructure

-

Reject all-or-nothing updates. Control exactly what infrastructure is updated, how it gets updated, and in what order by taking advantage of stacks.

+
+

Orchestrate Your Infrastructure

+

Reject all-or-nothing updates. Control exactly what infrastructure is updated, how it gets updated, and in what order by taking advantage of stacks.

-
-

Automate Your Backend Infrastructure

-

Ensure your entire team is using secure, consistent OpenTofu/Terraform state backend configurations.

+
+

Automate Your Backend Infrastructure

+

Ensure your entire team is using secure, consistent OpenTofu/Terraform state backend configurations.

-
-

Reduce Code Duplication

-

Includes

-

Define reusable infrastructure configurations once, and reference them wherever they're needed using includes.

-

Reuse Production-Ready Patterns

-

Leverage the special construct of the Terragrunt Stack to encapsulate higher level collections of infrastructure components as a unified stack.

-

Out of the Box Self-Service

-

Maintain and expose an infrastructure catalog that your engineers can consume on demand. Make the easiest way to provision infrastructure the right way.

+
+

Reduce Code Duplication

+

Includes

+

Define reusable infrastructure configurations once, and reference them wherever they're needed using includes.

+

Reuse Production-Ready Patterns

+

Leverage the special construct of the Terragrunt Stack to encapsulate higher level collections of infrastructure components as a unified stack.

+

Out of the Box Self-Service

+

Maintain and expose an infrastructure catalog that your engineers can consume on demand. Make the easiest way to provision infrastructure the right way.

-
-

Ensure Consistency and Safety

-

Codify Tribal Knowledge

-

Automate Operational Tasks Using Hooks

-

Don't ask that your engineers remember to do things before/after updating IaC, codify those tasks with hooks so that they're done automatically.

-

Handle Expected Errors

-

Your engineers know that networks can be flaky, and cloud providers aren't perfect. Automatically handle the errors they produce using built-in error handling.

-

Integrate Early and Often

-

Get your engineers on the same page. Keep them all working on a consistent, unified codebase, but gradually roll out new features using feature flags.

+
+

Ensure Consistency and Safety

+

Codify Tribal Knowledge

+

Automate Operational Tasks Using Hooks

+

Don't ask that your engineers remember to do things before/after updating IaC, codify those tasks with hooks so that they're done automatically.

+

Handle Expected Errors

+

Your engineers know that networks can be flaky, and cloud providers aren't perfect. Automatically handle the errors they produce using built-in error handling.

+

Integrate Early and Often

+

Get your engineers on the same page. Keep them all working on a consistent, unified codebase, but gradually roll out new features using feature flags.

-
-

Supercharge Terragrunt for your Organization

-

+

+

Supercharge Terragrunt for your Organization

+

Buy a subscription to Gruntwork services to get a platform team for your platform team. Trade money for time, and focus your engineering efforts on the work that delivers value to your organization.

-
-
-
+
+
+
-

Automate your CI/CD

-

Gruntwork Pipelines provides a highly secure, GitOps driven infrastructure pipeline with first-class support for Terragrunt features like Stacks.

- Learn More → +

Automate your CI/CD

+

Gruntwork Pipelines provides a highly secure, GitOps driven infrastructure pipeline with first-class support for Terragrunt features like Stacks.

+ Learn More →
-
-
+
+
-

Keep your IaC Fresh

-

Gruntwork Patcher makes updates to your infrastructure seamless, and will even patch your code to make it work with backward incompatible module releases. It also knows how to update your stacks and promote across environments.

- Learn More → +

Keep your IaC Fresh

+

Gruntwork Patcher makes updates to your infrastructure seamless, and will even patch your code to make it work with backward incompatible module releases. It also knows how to update your stacks and promote across environments.

+ Learn More →
-