diff --git a/package-lock.json b/package-lock.json index 12f089c..2be5f85 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,6 +24,7 @@ "devDependencies": { "@biomejs/biome": "2.4.15", "@clerk/clerk-react": "^5.61.8", + "@tabler/icons-react": "^3.45.0", "@tailwindcss/vite": "^4.3.1", "@types/inquirer": "^9.0.9", "@types/node": "^22.10.0", @@ -1170,6 +1171,34 @@ "dev": true, "license": "MIT" }, + "node_modules/@tabler/icons": { + "version": "3.45.0", + "resolved": "https://registry.npmjs.org/@tabler/icons/-/icons-3.45.0.tgz", + "integrity": "sha512-jiATwV8+zGYLTZ7gMLGivCic+KtsMZXcDmufIG8umlLxoHhI6902hGYIEt0Oa9Y9SXblNzUlrisHm5jOFMxOQA==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/codecalm" + } + }, + "node_modules/@tabler/icons-react": { + "version": "3.45.0", + "resolved": "https://registry.npmjs.org/@tabler/icons-react/-/icons-react-3.45.0.tgz", + "integrity": "sha512-t/AuKs7ALMDDTY+B9IvfZnlO0mbLlP/lJxP/HnGC49QkM8mCsTN38kYyxjXxgrb1+TeK53ioVBJqIV7n/eysXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tabler/icons": "3.45.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/codecalm" + }, + "peerDependencies": { + "react": ">= 16" + } + }, "node_modules/@tailwindcss/node": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.3.1.tgz", diff --git a/package.json b/package.json index 6411d6d..ff6ef50 100644 --- a/package.json +++ b/package.json @@ -40,6 +40,7 @@ "devDependencies": { "@biomejs/biome": "2.4.15", "@clerk/clerk-react": "^5.61.8", + "@tabler/icons-react": "^3.45.0", "@tailwindcss/vite": "^4.3.1", "@types/inquirer": "^9.0.9", "@types/node": "^22.10.0", diff --git a/src/ui-app/components/landing/CTABanner.tsx b/src/ui-app/components/landing/CTABanner.tsx new file mode 100644 index 0000000..4b7ba1b --- /dev/null +++ b/src/ui-app/components/landing/CTABanner.tsx @@ -0,0 +1,49 @@ +import { Button } from "../ui/Button"; +import { Link } from "../ui/Link"; + +export function CTABanner() { + return ( +
+
+
+

+ Your observability data deserves better than a dashboard +

+

+ Connect Parseable to Claude, Cursor, or any MCP-compatible agent and investigate incidents across logs, metrics, traces, and alerts — in natural language, without switching context. +

+
+ + + + + + +
+
+
+
+ ); +} + +// ─── Footer ─────────────────────────────────────────────────────────────────── diff --git a/src/ui-app/components/landing/FeatureGrid.tsx b/src/ui-app/components/landing/FeatureGrid.tsx new file mode 100644 index 0000000..ea274e8 --- /dev/null +++ b/src/ui-app/components/landing/FeatureGrid.tsx @@ -0,0 +1,105 @@ +import { + IconBell, + IconBolt, + IconDatabase, + IconEye, + IconSearch, + IconShieldCheck, +} from "@tabler/icons-react"; + +const FEATURES = [ + { + icon: