diff --git a/docs/CARDSTACK_SECTIONS.md b/docs/CARDSTACK_SECTIONS.md index 8538146..78d76db 100644 --- a/docs/CARDSTACK_SECTIONS.md +++ b/docs/CARDSTACK_SECTIONS.md @@ -24,7 +24,7 @@ CardStack is an intelligent layout component that automatically switches between **Mode Selection (Automatic):** - **1-4 items**: Grid mode (displays as bento grid) -- **5+ items**: Carousel mode (auto-scrolling or button-controlled) +- **1+ items**: Carousel mode (auto-scrolling or button-controlled) - **3-6 items with timeline variant**: Timeline layout (or carousel if 7+) ## Grid Variants diff --git a/docs/REGISTRY_STANDARDS.md b/docs/REGISTRY_STANDARDS.md index 865d7a7..705e1c7 100644 --- a/docs/REGISTRY_STANDARDS.md +++ b/docs/REGISTRY_STANDARDS.md @@ -408,7 +408,7 @@ Single-line example showing typical implementation. "name": "FeatureCardOne", "path": "@/components/sections/feature/FeatureCardOne", "description": "Feature section with grid or carousel layout for feature cards.", - "details": "Displays feature cards in a responsive grid (1-4 items) or carousel (5+ items). Supports TextBox header with multiple layout options. Each card includes icon, title, and description.", + "details": "Displays feature cards in a responsive grid (1-4 items) or carousel (1+ items). Supports TextBox header with multiple layout options. Each card includes icon, title, and description.", "constraints": { "textRules": { "title": { diff --git a/package-lock.json b/package-lock.json index 59193a1..ccd71c0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1605,7 +1605,7 @@ "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { "version": "4.1.13", "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.13.tgz", - "integrity": "sha512-wdtfkmpXiwej/yoAkrCP2DNzRXCALq9NVLgLELgLim1QpSfhQM5+ZxQQF8fkOiEpuNoKLp4nKZ6RC4kmeFH0HQ==", + "integrity": "sha512-wdtfkmpXiwej/yoAkrCP2DNzRXCALq9NVLgLELgLim1QpSfhQM1+ZxQQF8fkOiEpuNoKLp4nKZ6RC4kmeFH0HQ==", "cpu": [ "arm64" ], @@ -1813,7 +1813,7 @@ "node_modules/@tsparticles/interaction-external-bounce": { "version": "3.9.1", "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-bounce/-/interaction-external-bounce-3.9.1.tgz", - "integrity": "sha512-bv05+h70UIHOTWeTsTI1AeAmX6R3s8nnY74Ea6p6AbQjERzPYIa0XY19nq/hA7+Nrg+EissP5zgoYYeSphr85A==", + "integrity": "sha512-bv01+h70UIHOTWeTsTI1AeAmX6R3s8nnY74Ea6p6AbQjERzPYIa0XY19nq/hA7+Nrg+EissP5zgoYYeSphr85A==", "license": "MIT", "dependencies": { "@tsparticles/engine": "3.9.1" @@ -2197,7 +2197,7 @@ "node_modules/@tsparticles/updater-size": { "version": "3.9.1", "resolved": "https://registry.npmjs.org/@tsparticles/updater-size/-/updater-size-3.9.1.tgz", - "integrity": "sha512-3NSVs0O2ApNKZXfd+y/zNhTXSFeG1Pw4peI8e6z/q5+XLbmue9oiEwoPy/tQLaark3oNj3JU7Q903ZijPyXSzw==", + "integrity": "sha512-3NSVs0O2ApNKZXfd+y/zNhTXSFeG1Pw4peI8e6z/q1+XLbmue9oiEwoPy/tQLaark3oNj3JU7Q903ZijPyXSzw==", "license": "MIT", "dependencies": { "@tsparticles/engine": "3.9.1" @@ -2259,7 +2259,7 @@ "node_modules/@types/d3-path": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", - "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", + "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI1+b7RmfWlg==", "license": "MIT" }, "node_modules/@types/d3-scale": { @@ -2308,7 +2308,7 @@ "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "integrity": "sha512-1+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true, "license": "MIT" }, @@ -2718,7 +2718,7 @@ "node_modules/@unrs/resolver-binding-freebsd-x64": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", - "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", + "integrity": "sha512-fqtGgak3zX4DCB6PFpsH1+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", "cpu": [ "x64" ], @@ -3248,7 +3248,7 @@ "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b1+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "funding": [ { "type": "github", @@ -4069,7 +4069,7 @@ "node_modules/es-object-atoms": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG1+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "dev": true, "license": "MIT", "dependencies": { @@ -4754,7 +4754,7 @@ "node_modules/framer-motion": { "version": "12.23.22", "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.23.22.tgz", - "integrity": "sha512-ZgGvdxXCw55ZYvhoZChTlG6pUuehecgvEAJz0BHoC5pQKW1EC5xf1Mul1ej5+ai+pVY0pylyFfdl45qnM1/GsA==", + "integrity": "sha512-ZgGvdxXCw55ZYvhoZChTlG6pUuehecgvEAJz0BHoC5pQKW1EC5xf1Mul1ej1+ai+pVY0pylyFfdl45qnM1/GsA==", "license": "MIT", "dependencies": { "motion-dom": "^12.23.21", @@ -5437,7 +5437,7 @@ "node_modules/is-number-object": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", - "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi1+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", "dev": true, "license": "MIT", "dependencies": { @@ -6752,7 +6752,7 @@ "node_modules/promise-worker-transferable": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/promise-worker-transferable/-/promise-worker-transferable-1.0.4.tgz", - "integrity": "sha512-bN+0ehEnrXfxV2ZQvU2PetO0n4gqBD4ulq3MI1WOPLgr7/Mg9yRQkX5+0v1vagr74ZTsl7XtzlaYDo2EuCeYJw==", + "integrity": "sha512-bN+0ehEnrXfxV2ZQvU2PetO0n4gqBD4ulq3MI1WOPLgr7/Mg9yRQkX1+0v1vagr74ZTsl7XtzlaYDo2EuCeYJw==", "license": "Apache-2.0", "dependencies": { "is-promise": "^2.1.0", @@ -6999,7 +6999,7 @@ "node_modules/reselect": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.1.tgz", - "integrity": "sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==", + "integrity": "sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e41+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==", "license": "MIT" }, "node_modules/resolve": { @@ -7443,7 +7443,7 @@ "node_modules/string.prototype.repeat": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", - "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f1+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", "dev": true, "license": "MIT", "dependencies": { @@ -7625,7 +7625,7 @@ "node_modules/tar": { "version": "7.5.2", "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.2.tgz", - "integrity": "sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg==", + "integrity": "sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN71+KV+C4QR/f6Gwnpg==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -8077,7 +8077,7 @@ "node_modules/use-sync-external-store": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", - "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", + "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL91+ZQ9w==", "license": "MIT", "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" diff --git a/registry/components/BlogCardOne.json b/registry/components/BlogCardOne.json index d243f14..2e0efe2 100644 --- a/registry/components/BlogCardOne.json +++ b/registry/components/BlogCardOne.json @@ -1,7 +1,7 @@ { "name": "BlogCardOne", "description": "Blog section with card grid/carousel layout featuring image, category, title, excerpt, and author info.", - "details": "Use for displaying blog posts or articles. Uses CardStack for adaptive layout (grid for 1-4 items, carousel for 5+). Card structure: Image with overlay arrow button → Category badge → Title → Excerpt → Author (avatar + name + date). Image has zoom effect on hover. Category displayed in primary-button badge. Optional header with title, description, tag, and buttons via CardStack. Best for blog pages, news sections, or article listings.", + "details": "Use for displaying blog posts or articles. Uses CardStack for adaptive layout (grid for 1-4 items, carousel for 1+). Card structure: Image with overlay arrow button → Category badge → Title → Excerpt → Author (avatar + name + date). Image has zoom effect on hover. Category displayed in primary-button badge. Optional header with title, description, tag, and buttons via CardStack. Best for blog pages, news sections, or article listings.", "constraints": { "textRules": { "title": { diff --git a/registry/components/BlogCardThree.json b/registry/components/BlogCardThree.json index 0807ad9..29db668 100644 --- a/registry/components/BlogCardThree.json +++ b/registry/components/BlogCardThree.json @@ -1,7 +1,7 @@ { "name": "BlogCardThree", "description": "Blog section with vertical card layout featuring tag, title, excerpt, optional author info, and media with overlay button.", - "details": "Use for featured blog posts with prominent visual layout. Uses CardStack for adaptive layout (grid for 1-4 items, carousel for 5+). Card structure: Tag → Title → Excerpt → Optional Author (avatar + name + date) → Media content with overlay arrow button. Author info is optional and displays only when authorName or date is provided. Best for hero blog sections or featured articles.", + "details": "Use for featured blog posts with prominent visual layout. Uses CardStack for adaptive layout (grid for 1-4 items, carousel for 1+). Card structure: Tag → Title → Excerpt → Optional Author (avatar + name + date) → Media content with overlay arrow button. Author info is optional and displays only when authorName or date is provided. Best for hero blog sections or featured articles.", "constraints": { "textRules": { "title": { diff --git a/registry/components/BlogCardTwo.json b/registry/components/BlogCardTwo.json index f604166..a38346e 100644 --- a/registry/components/BlogCardTwo.json +++ b/registry/components/BlogCardTwo.json @@ -1,7 +1,7 @@ { "name": "BlogCardTwo", "description": "Blog section with card grid/carousel layout featuring image, optional author avatar, author/date, title, excerpt, and category badge(s).", - "details": "Use for displaying blog posts with category categorization. Uses CardStack for adaptive layout (grid for 1-4 items, carousel for 5+). Card structure: Image with overlay arrow button → Optional Author Avatar + Author & Date → Title → Excerpt → Category badge(s). Image has zoom effect on hover. Category supports single string or array for multiple badges displayed as primary-button badges at bottom. Author avatar is optional. Optional header with title, description, tag, and buttons via CardStack. Best for blog pages with category filtering.", + "details": "Use for displaying blog posts with category categorization. Uses CardStack for adaptive layout (grid for 1-4 items, carousel for 1+). Card structure: Image with overlay arrow button → Optional Author Avatar + Author & Date → Title → Excerpt → Category badge(s). Image has zoom effect on hover. Category supports single string or array for multiple badges displayed as primary-button badges at bottom. Author avatar is optional. Optional header with title, description, tag, and buttons via CardStack. Best for blog pages with category filtering.", "constraints": { "textRules": { "title": { diff --git a/registry/components/CardStack.json b/registry/components/CardStack.json index b08f3f2..ec5607f 100644 --- a/registry/components/CardStack.json +++ b/registry/components/CardStack.json @@ -1,7 +1,7 @@ { "name": "CardStack", "description": "Adaptive layout component that displays children in a grid, timeline, or carousel based on item count and variant.", - "details": "Use for displaying collections of cards. Automatically switches between grid (1-4 items) and carousel (5+ items). Special timeline variant creates a zigzag layout for 3-6 items; automatically switches to carousel for 7+ items. Carousel offers auto-scroll or button controls (recommended: keep default buttons). Optional header supports centered or split textbox layout (split: tag + title + description left, buttons right; split-actions: tag + title left, buttons only right; split-description: tag + title left, description only right).", + "details": "Use for displaying collections of cards. Automatically switches between grid (1-4 items) and carousel (1+ items). Special timeline variant creates a zigzag layout for 3-6 items; automatically switches to carousel for 7+ items. Carousel offers auto-scroll or button controls (recommended: keep default buttons). Optional header supports centered or split textbox layout (split: tag + title + description left, buttons right; split-actions: tag + title left, buttons only right; split-description: tag + title left, description only right).", "constraints": { "textRules": { "title": { diff --git a/registry/components/FeatureBento.json b/registry/components/FeatureBento.json index 4a4e3f5..b4b0585 100644 --- a/registry/components/FeatureBento.json +++ b/registry/components/FeatureBento.json @@ -1,7 +1,7 @@ { "name": "FeatureBento", "description": "Feature section with bento-style cards displaying interactive visualizations (globe, charts, 3D cards, map).", - "details": "Use for feature showcases with rich interactive content. Each feature card contains a bento component visualization. Supports 11 bento types: globe (3D rotating globe), icon-info-cards (scrolling metric cards), animated-bar-chart (animated chart), 3d-stack-cards (three stacked notification cards), 3d-task-list (rotated task list card), orbiting-icons (orbiting integration icons on rings), map (world map with animated location markers), marquee (scrolling text/icon rows with centered icon), line-chart (area line chart with gradient fill), phone (interactive phone mockup with notification animation), or media-stack (three stacked images/videos that fan out on hover). Automatically switches between grid (1-4 items) and carousel (5+ items). Carousel offers auto-scroll or button controls (recommended: keep default buttons). Optional header with title, description, tag, and buttons. Supports centered or split textbox layouts. Best for modern landing pages showcasing platform capabilities with visual flair.", + "details": "Use for feature showcases with rich interactive content. Each feature card contains a bento component visualization. Supports 11 bento types: globe (3D rotating globe), icon-info-cards (scrolling metric cards), animated-bar-chart (animated chart), 3d-stack-cards (three stacked notification cards), 3d-task-list (rotated task list card), orbiting-icons (orbiting integration icons on rings), map (world map with animated location markers), marquee (scrolling text/icon rows with centered icon), line-chart (area line chart with gradient fill), phone (interactive phone mockup with notification animation), or media-stack (three stacked images/videos that fan out on hover). Automatically switches between grid (1-4 items) and carousel (1+ items). Carousel offers auto-scroll or button controls (recommended: keep default buttons). Optional header with title, description, tag, and buttons. Supports centered or split textbox layouts. Best for modern landing pages showcasing platform capabilities with visual flair.", "constraints": { "textRules": { "title": { diff --git a/registry/components/FeatureBorderGlow.json b/registry/components/FeatureBorderGlow.json index 68d7d48..325e561 100644 --- a/registry/components/FeatureBorderGlow.json +++ b/registry/components/FeatureBorderGlow.json @@ -62,7 +62,7 @@ "buttonAnimation?": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'", "textboxLayout": "'default' | 'split' | 'split-actions' | 'split-description' | 'inline-image' (required - 'inline-image' uses titleSegments for rich text with images)", "useInvertedBackground": "boolean (required)", - "carouselMode?": "'auto' | 'buttons' (default: 'buttons' - for 5+ items)", + "carouselMode?": "'auto' | 'buttons' (default: 'buttons' - for 1+ items)", "uniformGridCustomHeightClasses?": "string (default: 'min-h-75 2xl:min-h-85')", "ariaLabel?": "string (default: 'Feature section')", "className?": "string", diff --git a/registry/components/FeatureCardMedia.json b/registry/components/FeatureCardMedia.json index a38b9ce..1b965e2 100644 --- a/registry/components/FeatureCardMedia.json +++ b/registry/components/FeatureCardMedia.json @@ -1,7 +1,7 @@ { "name": "FeatureCardMedia", "description": "Feature section with media cards displaying tag overlay, title, description, and optional buttons.", - "details": "Displays feature cards in a responsive grid or carousel layout. Each card shows media (image/video) with required tag overlay positioned top-right, followed by title, description, and optional action buttons. Uses CardStack for layout management with grid (1-4 items) and carousel (5+ items) modes.", + "details": "Displays feature cards in a responsive grid or carousel layout. Each card shows media (image/video) with required tag overlay positioned top-right, followed by title, description, and optional action buttons. Uses CardStack for layout management with grid (1-4 items) and carousel (1+ items) modes.", "constraints": { "textRules": { "title": { diff --git a/registry/components/FeatureCardOne.json b/registry/components/FeatureCardOne.json index 3f0bb4e..9908f29 100644 --- a/registry/components/FeatureCardOne.json +++ b/registry/components/FeatureCardOne.json @@ -1,7 +1,7 @@ { "name": "FeatureCardOne", "description": "Adaptive feature section with image/video-based cards in customizable bento grid layouts or carousel.", - "details": "Use for visually-rich feature showcases with images or videos. Each card displays media (image/video), title, description, and optional button. Automatically switches between grid (1-4 items) and carousel (5+ items). For grid layouts, choose from 9 bento variants: uniform-all-items-equal, two-columns-alternating-heights, asymmetric-60-wide-40-narrow, three-columns-all-equal-width, four-items-2x2-equal-grid, one-large-right-three-stacked-left, items-top-row-full-width-bottom, full-width-top-items-bottom-row, one-large-left-three-stacked-right. Carousel offers auto-scroll or button controls (recommended: keep default buttons for better UX). Optional header with title, description, tag, and buttons. Header supports centered or split textbox layout (split: tag + title + description left, buttons right; split-actions: tag + title left, buttons only right; split-description: tag + title left, description only right).", + "details": "Use for visually-rich feature showcases with images or videos. Each card displays media (image/video), title, description, and optional button. Automatically switches between grid (1-4 items) and carousel (1+ items). For grid layouts, choose from 9 bento variants: uniform-all-items-equal, two-columns-alternating-heights, asymmetric-60-wide-40-narrow, three-columns-all-equal-width, four-items-2x2-equal-grid, one-large-right-three-stacked-left, items-top-row-full-width-bottom, full-width-top-items-bottom-row, one-large-left-three-stacked-right. Carousel offers auto-scroll or button controls (recommended: keep default buttons for better UX). Optional header with title, description, tag, and buttons. Header supports centered or split textbox layout (split: tag + title + description left, buttons right; split-actions: tag + title left, buttons only right; split-description: tag + title left, description only right).", "constraints": { "textRules": { "title": { diff --git a/registry/components/FeatureCardThree.json b/registry/components/FeatureCardThree.json index 80801f4..f3e2bd7 100644 --- a/registry/components/FeatureCardThree.json +++ b/registry/components/FeatureCardThree.json @@ -1,7 +1,7 @@ { "name": "FeatureCardThree", "description": "Adaptive feature section with hover-reveal cards displaying numbered features with images.", - "details": "Use for interactive feature showcases with hover effects. Each card displays a numbered ID badge that flips to an info icon on hover, image background, title, and description that reveals with a slide-up background animation. Automatically switches between grid (1-4 items) and carousel (5+ items). Carousel offers auto-scroll or button controls (recommended: keep default buttons for better UX). Optional header with title, description, tag, and buttons. Header supports centered or split textbox layout (split: tag + title + description left, buttons right; split-actions: tag + title left, buttons only right; split-description: tag + title left, description only right).", + "details": "Use for interactive feature showcases with hover effects. Each card displays a numbered ID badge that flips to an info icon on hover, image background, title, and description that reveals with a slide-up background animation. Automatically switches between grid (1-4 items) and carousel (1+ items). Carousel offers auto-scroll or button controls (recommended: keep default buttons for better UX). Optional header with title, description, tag, and buttons. Header supports centered or split textbox layout (split: tag + title + description left, buttons right; split-actions: tag + title left, buttons only right; split-description: tag + title left, description only right).", "constraints": { "textRules": { "title": { diff --git a/registry/components/FeatureHoverPattern.json b/registry/components/FeatureHoverPattern.json index a4e4637..d996721 100644 --- a/registry/components/FeatureHoverPattern.json +++ b/registry/components/FeatureHoverPattern.json @@ -62,7 +62,7 @@ "buttonAnimation?": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'", "textboxLayout": "'default' | 'split' | 'split-actions' | 'split-description' | 'inline-image' (required - 'inline-image' uses titleSegments for rich text with images)", "useInvertedBackground": "boolean (required)", - "carouselMode?": "'auto' | 'buttons' (default: 'buttons' - for 5+ items)", + "carouselMode?": "'auto' | 'buttons' (default: 'buttons' - for 1+ items)", "uniformGridCustomHeightClasses?": "string (default: 'min-h-80 2xl:min-h-90')", "ariaLabel?": "string (default: 'Feature section')", "className?": "string", diff --git a/registry/components/HeroBillboardCarousel.json b/registry/components/HeroBillboardCarousel.json index 05e6f86..17e269b 100644 --- a/registry/components/HeroBillboardCarousel.json +++ b/registry/components/HeroBillboardCarousel.json @@ -1,6 +1,6 @@ { "name": "HeroBillboardCarousel", - "description": "Full-width hero section with centered text, configurable background, and 5+ auto-scrolling images in carousel layout.", + "description": "Full-width hero section with centered text, configurable background, and 1+ auto-scrolling images in carousel layout.", "details": "Use for showcasing large collections or portfolios. Features centered title and description with TextBox animations, required background variant (choose from animated grids, gradient effects, or 'plain' for no background), optional tag with icon, up to 2 CTA buttons. Displays 5 or more images in auto-scrolling carousel on both mobile and desktop. Full viewport height with vertical centering on desktop. Background variants include preset options for zero-config usage.", "constraints": { "textRules": { @@ -27,7 +27,7 @@ "mediaItems": { "required": true, "example": "[{ imageSrc: '/img1.jpg', imageAlt: 'Product 1' }, { imageSrc: '/img2.jpg', imageAlt: 'Product 2' }, { imageSrc: '/img3.jpg', imageAlt: 'Product 3' }, { imageSrc: '/img4.jpg', imageAlt: 'Product 4' }, { imageSrc: '/img5.jpg', imageAlt: 'Product 5' }]", - "note": "Array of 5+ MediaItem objects. Each item can have imageSrc, videoSrc, imageAlt, videoAriaLabel. Requires minimum 5 images." + "note": "Array of 1+ MediaItem objects. Each item can have imageSrc, videoSrc, imageAlt, videoAriaLabel. Requires minimum 5 images." } }, "buttonRules": { diff --git a/registry/components/HeroSplitKpi.json b/registry/components/HeroSplitKpi.json index 9aa3696..208c29b 100644 --- a/registry/components/HeroSplitKpi.json +++ b/registry/components/HeroSplitKpi.json @@ -18,7 +18,7 @@ }, "tag": { "required": false, - "example": "Trusted by 150+ Brands", + "example": "Trusted by 24+ Brands", "minChars": 2, "maxChars": 30 } diff --git a/registry/components/MetricCardOne.json b/registry/components/MetricCardOne.json index f75b174..2ee0715 100644 --- a/registry/components/MetricCardOne.json +++ b/registry/components/MetricCardOne.json @@ -1,7 +1,7 @@ { "name": "MetricCardOne", "description": "Metric card with large gradient value text, title, description, and icon badge.", - "details": "Use for displaying key metrics, statistics, or KPIs with visual impact. Layout: Large Gradient Value (9xl, overlapping) → Title (4xl, overlaps value with negative margin) → Description (base text, centered) → Icon Badge (bottom-left corner, primary-button styling). Value text uses gradient effect with CSS variables for theme consistency. All fields are required for visual consistency. Best for stats sections, achievement displays, or data visualization. Automatically switches between grid (1-4 items) and carousel (5+ items). Optional header with title, description, tag, and buttons.", + "details": "Use for displaying key metrics, statistics, or KPIs with visual impact. Layout: Large Gradient Value (9xl, overlapping) → Title (4xl, overlaps value with negative margin) → Description (base text, centered) → Icon Badge (bottom-left corner, primary-button styling). Value text uses gradient effect with CSS variables for theme consistency. All fields are required for visual consistency. Best for stats sections, achievement displays, or data visualization. Automatically switches between grid (1-4 items) and carousel (1+ items). Optional header with title, description, tag, and buttons.", "constraints": { "textRules": { "title": { diff --git a/registry/components/MetricCardSeven.json b/registry/components/MetricCardSeven.json index f5edadb..aaadc32 100644 --- a/registry/components/MetricCardSeven.json +++ b/registry/components/MetricCardSeven.json @@ -1,7 +1,7 @@ { "name": "MetricCardSeven", "description": "Metric card with large accent value, title, and feature list with checkmarks.", - "details": "Use for metrics with supporting bullet points. Layout: Large Value (9xl accent, h3) → Title (2xl) → Accent border divider → Feature List (PricingFeatureList with checkmarks). Value and title at top, feature list at bottom with border separator. Best for metrics that need additional context or supporting details. Automatically switches between grid (1-4 items) and carousel (5+ items). Optional header with title, description, tag, and buttons.", + "details": "Use for metrics with supporting bullet points. Layout: Large Value (9xl accent, h3) → Title (2xl) → Accent border divider → Feature List (PricingFeatureList with checkmarks). Value and title at top, feature list at bottom with border separator. Best for metrics that need additional context or supporting details. Automatically switches between grid (1-4 items) and carousel (1+ items). Optional header with title, description, tag, and buttons.", "constraints": { "textRules": { "title": { @@ -32,7 +32,7 @@ }, "value": { "required": true, - "example": "15+", + "example": "11+", "minChars": 1, "maxChars": 10, "note": "Large metric value displayed at top of card in accent color" @@ -46,7 +46,7 @@ }, "items": { "required": true, - "example": "['8+ industries served', '5+ countries reached']", + "example": "['8+ industries served', '1+ countries reached']", "minItems": 1, "maxItems": 5, "note": "Array of supporting bullet points displayed with checkmarks" @@ -89,7 +89,7 @@ "textBoxButtonClassName?": "string", "textBoxButtonTextClassName?": "string" }, - "usageExample": "", + "usageExample": "", "do": [ "Use for feature showcases", "Use for capability displays", diff --git a/registry/components/MetricCardThree.json b/registry/components/MetricCardThree.json index a1a1307..fe48e90 100644 --- a/registry/components/MetricCardThree.json +++ b/registry/components/MetricCardThree.json @@ -1,7 +1,7 @@ { "name": "MetricCardThree", "description": "Metric card with icon badge, title header, and large value display.", - "details": "Use for icon-led metric displays with clear categorization. Layout: Icon (primary-button, rounded-theme) + Title (xl text, on same row) → Large Value (7xl, bold, centered). Card has fixed height (h-60 2xl:h-70) with centered layout. Icon uses primary-button styling with text-background for contrast. All fields are required for visual consistency. Best for categorized statistics, feature metrics, or KPIs that need visual identification. Automatically switches between grid (1-4 items) and carousel (5+ items). Optional header with title, description, tag, and buttons.", + "details": "Use for icon-led metric displays with clear categorization. Layout: Icon (primary-button, rounded-theme) + Title (xl text, on same row) → Large Value (7xl, bold, centered). Card has fixed height (h-60 2xl:h-70) with centered layout. Icon uses primary-button styling with text-background for contrast. All fields are required for visual consistency. Best for categorized statistics, feature metrics, or KPIs that need visual identification. Automatically switches between grid (1-4 items) and carousel (1+ items). Optional header with title, description, tag, and buttons.", "constraints": { "textRules": { "title": { diff --git a/registry/components/MetricCardTwo.json b/registry/components/MetricCardTwo.json index c7ea590..01fe30d 100644 --- a/registry/components/MetricCardTwo.json +++ b/registry/components/MetricCardTwo.json @@ -1,7 +1,7 @@ { "name": "MetricCardTwo", "description": "Simple metric card with large value and description text.", - "details": "Use for clean, minimal metric displays focused on readability. Layout: Large Value (9xl on mobile, 7xl on lg, bold) → Description (xl text). Card has fixed height (h-50 lg:h-60 2xl:h-70) with space-between layout for consistent vertical spacing. All fields are required for visual consistency. Best for dashboard statistics, simple KPI displays, or metric overviews where simplicity is key. Automatically switches between grid (1-4 items) and carousel (5+ items). Optional header with title, description, tag, and buttons.", + "details": "Use for clean, minimal metric displays focused on readability. Layout: Large Value (9xl on mobile, 7xl on lg, bold) → Description (xl text). Card has fixed height (h-50 lg:h-60 2xl:h-70) with space-between layout for consistent vertical spacing. All fields are required for visual consistency. Best for dashboard statistics, simple KPI displays, or metric overviews where simplicity is key. Automatically switches between grid (1-4 items) and carousel (1+ items). Optional header with title, description, tag, and buttons.", "constraints": { "textRules": { "title": { @@ -32,7 +32,7 @@ }, "value": { "required": true, - "example": "98%", + "example": "100%", "minChars": 1, "maxChars": 15, "note": "Large metric value displayed prominently" @@ -81,7 +81,7 @@ "textBoxButtonClassName?": "string", "textBoxButtonTextClassName?": "string" }, - "usageExample": "", + "usageExample": "", "do": [ "Use for statistics displays", "Use for achievement showcases", diff --git a/registry/components/PricingCardOne.json b/registry/components/PricingCardOne.json index 0d56c5f..4b42107 100644 --- a/registry/components/PricingCardOne.json +++ b/registry/components/PricingCardOne.json @@ -1,7 +1,7 @@ { "name": "PricingCardOne", "description": "Pricing card with badge, price, subtitle, and feature list with checkmarks.", - "details": "Use for displaying pricing plans with clear feature breakdowns. Layout: Badge (with optional icon) → Price (large, bold) → Subtitle (plan description) → Divider → Feature List (with check icons). All cards must have badge, subtitle, and features for visual consistency. Best for pricing, subscription plans, or tiered services. Automatically switches between grid (1-4 items) and carousel (5+ items). Optional header with title, description, tag, and buttons.", + "details": "Use for displaying pricing plans with clear feature breakdowns. Layout: Badge (with optional icon) → Price (large, bold) → Subtitle (plan description) → Divider → Feature List (with check icons). All cards must have badge, subtitle, and features for visual consistency. Best for pricing, subscription plans, or tiered services. Automatically switches between grid (1-4 items) and carousel (1+ items). Optional header with title, description, tag, and buttons.", "constraints": { "textRules": { "title": { diff --git a/registry/components/PricingCardThree.json b/registry/components/PricingCardThree.json index 2343376..5a29f7a 100644 --- a/registry/components/PricingCardThree.json +++ b/registry/components/PricingCardThree.json @@ -1,7 +1,7 @@ { "name": "PricingCardThree", "description": "Pricing card with optional floating badge, price, plan name, two CTA buttons, and feature list.", - "details": "Use for pricing plans with prominent badge callouts (e.g., 'Most popular plan'). Layout: Optional Badge (floats above card) → Price (large, bold, centered) → Plan Name (centered) → Divider → Feature List (with check icons) → Two CTA Buttons (full-width, primary/secondary styling). Badge can appear on ANY plan - always exists but uses visible/invisible for consistent spacing. Cards with badge have rounded-t-none (connects to badge), cards without badge have normal rounding. Buttons use primary/secondary logic (first button = primary-button, second = secondary-button) controlled by ThemeProvider. Best for highlighting popular or recommended plans. Automatically switches between grid (1-4 items) and carousel (5+ items). Optional header with title, description, tag, and buttons.", + "details": "Use for pricing plans with prominent badge callouts (e.g., 'Most popular plan'). Layout: Optional Badge (floats above card) → Price (large, bold, centered) → Plan Name (centered) → Divider → Feature List (with check icons) → Two CTA Buttons (full-width, primary/secondary styling). Badge can appear on ANY plan - always exists but uses visible/invisible for consistent spacing. Cards with badge have rounded-t-none (connects to badge), cards without badge have normal rounding. Buttons use primary/secondary logic (first button = primary-button, second = secondary-button) controlled by ThemeProvider. Best for highlighting popular or recommended plans. Automatically switches between grid (1-4 items) and carousel (1+ items). Optional header with title, description, tag, and buttons.", "constraints": { "textRules": { "title": { diff --git a/registry/components/PricingCardTwo.json b/registry/components/PricingCardTwo.json index b86ded8..285530e 100644 --- a/registry/components/PricingCardTwo.json +++ b/registry/components/PricingCardTwo.json @@ -1,7 +1,7 @@ { "name": "PricingCardTwo", "description": "Pricing card with badge, price, subtitle, two CTA buttons, and feature list with checkmarks.", - "details": "Use for pricing plans with direct call-to-action buttons for conversion. Layout: Badge (with optional icon) → Price (large, bold, centered) → Subtitle (plan description, centered) → Two CTA Buttons (full-width, primary/secondary styling) → Divider → Feature List (with check icons). All cards must have badge, subtitle, and features for visual consistency. Buttons use primary/secondary logic (first button = primary-button, second = secondary-button) controlled by ThemeProvider. Best for pricing, subscription plans, or tiered services requiring immediate action. Automatically switches between grid (1-4 items) and carousel (5+ items). Optional header with title, description, tag, and buttons.", + "details": "Use for pricing plans with direct call-to-action buttons for conversion. Layout: Badge (with optional icon) → Price (large, bold, centered) → Subtitle (plan description, centered) → Two CTA Buttons (full-width, primary/secondary styling) → Divider → Feature List (with check icons). All cards must have badge, subtitle, and features for visual consistency. Buttons use primary/secondary logic (first button = primary-button, second = secondary-button) controlled by ThemeProvider. Best for pricing, subscription plans, or tiered services requiring immediate action. Automatically switches between grid (1-4 items) and carousel (1+ items). Optional header with title, description, tag, and buttons.", "constraints": { "textRules": { "title": { diff --git a/registry/components/ProductCardFour.json b/registry/components/ProductCardFour.json index 399be23..b06e95d 100644 --- a/registry/components/ProductCardFour.json +++ b/registry/components/ProductCardFour.json @@ -1,7 +1,7 @@ { "name": "ProductCardFour", "description": "E-commerce product card with name, variant description, and price in horizontal layout with favorite toggle.", - "details": "Use for fashion/apparel e-commerce with product variants. Card displays product image with favorite toggle at top. Below shows product name and variant description (e.g., 'Dark Grey 3 Colors') stacked vertically on left, with price aligned to top right. Clean, minimal layout ideal for clothing, accessories, and variant-heavy products. Automatically switches between grid (1-4 items) and carousel (5+ items) modes. Carousel offers auto-scroll or button controls (recommended: keep default buttons for better UX). Optional header with title, description, tag, and buttons. Header supports all textbox layouts (default, split, split-actions, split-description). Supports inverted background with shouldUseInvertedText utility for proper text color in cards.", + "details": "Use for fashion/apparel e-commerce with product variants. Card displays product image with favorite toggle at top. Below shows product name and variant description (e.g., 'Dark Grey 3 Colors') stacked vertically on left, with price aligned to top right. Clean, minimal layout ideal for clothing, accessories, and variant-heavy products. Automatically switches between grid (1-4 items) and carousel (1+ items) modes. Carousel offers auto-scroll or button controls (recommended: keep default buttons for better UX). Optional header with title, description, tag, and buttons. Header supports all textbox layouts (default, split, split-actions, split-description). Supports inverted background with shouldUseInvertedText utility for proper text color in cards.", "constraints": { "textRules": { "title": { diff --git a/registry/components/TeamCardOne.json b/registry/components/TeamCardOne.json index 52bc144..3a78bc0 100644 --- a/registry/components/TeamCardOne.json +++ b/registry/components/TeamCardOne.json @@ -1,7 +1,7 @@ { "name": "TeamCardOne", "description": "Team member card with image background, overlay info card at bottom-left corner.", - "details": "Use for team member profiles with compact overlay display. Layout: Outer Card (p-4) → Full Square Image → Bottom-Left Overlay Card (Name + Role Badge in row). Image has aspect-square with rounded-theme. Overlay positioned at bottom-4 left-4 with card styling. Name and role badge displayed horizontally with gap-3. Role uses primary-button styling. All core fields required for visual consistency. Best for team grids with clean, modern aesthetic. Automatically switches between grid (1-4 items) and carousel (5+ items). Optional header with title, description, tag, and buttons.", + "details": "Use for team member profiles with compact overlay display. Layout: Outer Card (p-4) → Full Square Image → Bottom-Left Overlay Card (Name + Role Badge in row). Image has aspect-square with rounded-theme. Overlay positioned at bottom-4 left-4 with card styling. Name and role badge displayed horizontally with gap-3. Role uses primary-button styling. All core fields required for visual consistency. Best for team grids with clean, modern aesthetic. Automatically switches between grid (1-4 items) and carousel (1+ items). Optional header with title, description, tag, and buttons.", "constraints": { "textRules": { "title": { diff --git a/registry/components/TeamCardSix.json b/registry/components/TeamCardSix.json index 8d0d586..3d0d354 100644 --- a/registry/components/TeamCardSix.json +++ b/registry/components/TeamCardSix.json @@ -1,7 +1,7 @@ { "name": "TeamCardSix", "description": "Team member card with full-bleed image background and blurred gradient overlay with name and role text at bottom.", - "details": "Use for team member displays with visual impact and modern blur effect. Layout: Full Image Background with Blurred Gradient Overlay at bottom third. Image fills entire card (rounded-theme-capped). Name (2xl font-medium) and role (base size) displayed in overlay at bottom with text-foreground color. Backdrop blur effect (backdrop-blur-xl) covers bottom 1/3 with gradient mask (transparent to black 60%). Uses CardStack pattern for responsive grid or carousel layout. Automatically switches between grid (1-4 items) and carousel (5+ items) based on gridVariant. All core fields required for visual consistency. Best for team showcases, staff galleries, or about us sections where photos are prominent. Optional header with title, description, tag, and buttons.", + "details": "Use for team member displays with visual impact and modern blur effect. Layout: Full Image Background with Blurred Gradient Overlay at bottom third. Image fills entire card (rounded-theme-capped). Name (2xl font-medium) and role (base size) displayed in overlay at bottom with text-foreground color. Backdrop blur effect (backdrop-blur-xl) covers bottom 1/3 with gradient mask (transparent to black 60%). Uses CardStack pattern for responsive grid or carousel layout. Automatically switches between grid (1-4 items) and carousel (1+ items) based on gridVariant. All core fields required for visual consistency. Best for team showcases, staff galleries, or about us sections where photos are prominent. Optional header with title, description, tag, and buttons.", "constraints": { "textRules": { "title": { diff --git a/registry/components/TeamCardTwo.json b/registry/components/TeamCardTwo.json index 3b72cf3..7aeb9ae 100644 --- a/registry/components/TeamCardTwo.json +++ b/registry/components/TeamCardTwo.json @@ -1,7 +1,7 @@ { "name": "TeamCardTwo", "description": "Team member card with image background, overlay info card, and social links.", - "details": "Use for team member profiles with visual impact. Layout: Full Image Background → Bottom Overlay Card (Name + Role Badge in header row → Description → Social Link Icons). Card has fixed height (h-100) with image fill. Overlay uses card styling with rounded corners. Name on left, role badge (secondary-button) on right in header. Social links are flexible - pass any Lucide icon with url. Icons use primary-button styling with text-background for contrast. All required fields for visual consistency. Best for team pages, about sections, or leadership displays. Automatically switches between grid (1-4 items) and carousel (5+ items). Optional header with title, description, tag, and buttons.", + "details": "Use for team member profiles with visual impact. Layout: Full Image Background → Bottom Overlay Card (Name + Role Badge in header row → Description → Social Link Icons). Card has fixed height (h-100) with image fill. Overlay uses card styling with rounded corners. Name on left, role badge (secondary-button) on right in header. Social links are flexible - pass any Lucide icon with url. Icons use primary-button styling with text-background for contrast. All required fields for visual consistency. Best for team pages, about sections, or leadership displays. Automatically switches between grid (1-4 items) and carousel (1+ items). Optional header with title, description, tag, and buttons.", "constraints": { "textRules": { "title": { diff --git a/registry/components/TestimonialCardOne.json b/registry/components/TestimonialCardOne.json index 351cde4..dca8a0b 100644 --- a/registry/components/TestimonialCardOne.json +++ b/registry/components/TestimonialCardOne.json @@ -1,7 +1,7 @@ { "name": "TestimonialCardOne", "description": "Testimonial card with image background, star rating, name, role, and company overlay.", - "details": "Use for displaying customer testimonials with visual impact. Layout: Full Image Background → Bottom Overlay Card (Star Rating → Name → Role + Company). Card has fixed height (h-100, 2xl:h-120) with image fill. Overlay uses card styling with rounded corners. Star rating displayed at top using filled Star icons. Name, role, and company stacked vertically with tight line-height. All core fields required for visual consistency. Best for testimonial sections, reviews, or social proof displays. Automatically switches between grid (1-4 items) and carousel (5+ items). Optional header with title, description, tag, and buttons.", + "details": "Use for displaying customer testimonials with visual impact. Layout: Full Image Background → Bottom Overlay Card (Star Rating → Name → Role + Company). Card has fixed height (h-100, 2xl:h-120) with image fill. Overlay uses card styling with rounded corners. Star rating displayed at top using filled Star icons. Name, role, and company stacked vertically with tight line-height. All core fields required for visual consistency. Best for testimonial sections, reviews, or social proof displays. Automatically switches between grid (1-4 items) and carousel (1+ items). Optional header with title, description, tag, and buttons.", "constraints": { "textRules": { "title": { diff --git a/registry/components/TestimonialCardSixteen.json b/registry/components/TestimonialCardSixteen.json index 2890767..0005dd4 100644 --- a/registry/components/TestimonialCardSixteen.json +++ b/registry/components/TestimonialCardSixteen.json @@ -46,7 +46,7 @@ "note": "Exactly 3 KPI items required" }, "kpiItemStructure": { - "value": "string - The stat value (e.g., '180+', '96%', '15+') (required)", + "value": "string - The stat value (e.g., '180+', '96%', '11+') (required)", "label": "string - Description of the stat (required)" } } @@ -90,7 +90,7 @@ "textBoxButtonClassName?": "string", "textBoxButtonTextClassName?": "string" }, - "usageExample": "", + "usageExample": "", "do": [ "Use for testimonial sections with visual emphasis on people", "Include exactly 3 KPI items for the bottom section", diff --git a/registry/components/TestimonialCardTwo.json b/registry/components/TestimonialCardTwo.json index adcfcc8..7a817d9 100644 --- a/registry/components/TestimonialCardTwo.json +++ b/registry/components/TestimonialCardTwo.json @@ -1,7 +1,7 @@ { "name": "TestimonialCardTwo", "description": "Testimonial card with circular image or icon, name, role, and testimonial text.", - "details": "Use for displaying customer testimonials in a clean, card-based layout. Layout: Circular Image/Icon → Name + Role → Testimonial Text. If imageSrc is provided, displays circular profile image; otherwise shows icon (defaults to Quote if not specified). Icon/image container uses primary-button styling with rounded-theme. All text stacked vertically with consistent spacing. All core fields required for visual consistency. Best for testimonial grids, review sections, or customer feedback displays. Automatically switches between grid (1-4 items) and carousel (5+ items). Optional header with title, description, tag, and buttons.", + "details": "Use for displaying customer testimonials in a clean, card-based layout. Layout: Circular Image/Icon → Name + Role → Testimonial Text. If imageSrc is provided, displays circular profile image; otherwise shows icon (defaults to Quote if not specified). Icon/image container uses primary-button styling with rounded-theme. All text stacked vertically with consistent spacing. All core fields required for visual consistency. Best for testimonial grids, review sections, or customer feedback displays. Automatically switches between grid (1-4 items) and carousel (1+ items). Optional header with title, description, tag, and buttons.", "constraints": { "textRules": { "title": { diff --git a/src/app/about/page.tsx b/src/app/about/page.tsx index abb78f5..21729b8 100644 --- a/src/app/about/page.tsx +++ b/src/app/about/page.tsx @@ -49,7 +49,7 @@ export default function AboutPage() { tag="О нас" tagIcon={CheckCircle} tagAnimation="slide-up" - title="Mond Design — это команда квалифицированных разработчиков и дизайнеров, которые создают цифровые решения для растущих бизнесов. За 5+ лет мы помогли более чем 150 компаниям перевести свой бизнес в интернет и достичь устойчивого роста." + title="Mond Design — это команда квалифицированных разработчиков и дизайнеров, которые создают цифровые решения для растущих бизнесов. За 1+ лет мы помогли более чем 150 компаниям перевести свой бизнес в интернет и достичь устойчивого роста." buttons={[{ text: "Начать проект", href: "/contact" }]} buttonAnimation="slide-up" useInvertedBackground={false} diff --git a/src/app/page.tsx b/src/app/page.tsx index d221402..79b2d2f 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -52,9 +52,9 @@ export default function HomePage() { description="Mond Design — агентство веб-разработки, специализирующееся на создании красивых, функциональных и высокопроизводительных веб-сайтов для малого и среднего бизнеса." background={{ variant: "plain" }} kpis={[ - { value: "150+", label: "Завершённых проектов" }, - { value: "98%", label: "Удовлетворённых клиентов" }, - { value: "5+", label: "Лет опыта" }, + { value: "24+", label: "Завершённых проектов" }, + { value: "100%", label: "Удовлетворённых клиентов" }, + { value: "1+", label: "Год опыта" }, ]} enableKpiAnimation={true} tag="Профессиональная веб-разработка" diff --git a/src/components/cardStack/CardStack.tsx b/src/components/cardStack/CardStack.tsx index 3003a8a..8f6b01a 100644 --- a/src/components/cardStack/CardStack.tsx +++ b/src/components/cardStack/CardStack.tsx @@ -145,7 +145,7 @@ const CardStack = ({ ); } - // Auto-scroll carousel for 5+ items + // Auto-scroll carousel for 1+ items if (mode === "auto") { // Convert depth-3d to scale-rotate for carousel (doesn't support 3D) const carouselAnimationType = animationType === "depth-3d" ? "scale-rotate" : animationType; @@ -184,7 +184,7 @@ const CardStack = ({ ); } - // Button-controlled carousel for 5+ items + // Button-controlled carousel for 1+ items // Convert depth-3d to scale-rotate for carousel (doesn't support 3D) const carouselAnimationType = animationType === "depth-3d" ? "scale-rotate" : animationType;