Motiva
Мои коллекции
← каталог

Landing Studio

Готовый лендинг креативной студии из семи секций каталога. Сама страница ничего не рисует — задаёт только тон акцента и вертикальный ритм, всё остальное приезжает из дизайн-системы.

cssloadhoverrevealbasic~8 КБreduced-motion ✓
↕ демо длиннее кадра — прокрутите его

Установка

npx shadcn@latest add https://motiva.pages.dev/r/landing-studio.json
Что нужно в проекте до установки
  1. components.json в корне — с алиасами в форме"components": "@/components". Нет файла — CLI не поймёт, куда класть.
  2. Алиас @ объявлен дважды: "paths": {"@/*": ["./src/*"]} в корневом tsconfig.json (в Vite он часто содержит только references — тогда CLI создаёт папку@) и resolve.alias в конфиге сборщика.
  3. Токены подключены один раз на приложение:import "@/styles/motiva-tokens.css" — они приезжают вместе с записью. Без них секция потеряет цвета, ритм и тему.
  4. Своя типографика не должна спорить: если у вас на обёрткеtext-align: center, он протечёт внутрь блоков.
  5. Проект без TypeScript? Всё равно нужен минимальныйtsconfig.json с pathsи "tsx": true в components.json: CLI грузит tsconfig безусловно, а с "tsx": false идёт за jsconfig.json и падает так же. Приехавший рядом.tsx можно не трогать — вам нужен.vanilla.js.

Экспорт

↓ Скачать .zip

Код

import { NavSticky } from "@/components/nav-sticky";
import { HeroSplit } from "@/components/hero-split";
import { LogosStrip } from "@/components/logos-strip";
import { FeaturesBento } from "@/components/features-bento";
import { ShowcaseMasonry } from "@/components/showcase-masonry";
import { CtaGlow } from "@/components/cta-glow";
import { FooterMinimal } from "@/components/footer-minimal";

/**
 * Лендинг креативной студии — быстрый старт, а не ещё один эффект.
 *
 * Страница НИЧЕГО не рисует сама: она только расставляет секции и задаёт две вещи —
 * вертикальный ритм (`--ds-section-y`) и тон акцента (`--ds-accent-h`). Всё остальное
 * приезжает из дизайн-системы, поэтому ре-брендинг — это одно число, а не проход по файлам.
 *
 * Именно так и задумано разделение: эффект — кирпич, секция — стена, страница — дом.
 * Каждая секция объявлена в `registryDependencies`, поэтому
 * `npx shadcn add .../r/landing-studio.json` ставит и страницу, и все секции, и эффекты,
 * из которых они собраны.
 *
 * Контент здесь — дефолты секций. Чтобы сделать страницу своей, передай пропсы: у каждой
 * секции весь текст и картинки вынесены в типизированный интерфейс, ничего не «зашито».
 */
export function LandingStudio() {
  return (
    <div
      className="lst ds-scope"
      style={{
        textAlign: "start",
        // ds-scope + одно число: внутри контейнера пересчитывается весь набор акцента
        ["--ds-accent-h" as string]: "300",
        // вертикальный ритм страницы — секции сами отступов себе не назначают
        ["--ds-section-y" as string]: "clamp(48px, 7vw, 96px)",
        background: "var(--ds-bg, oklch(0.14 0.02 275))",
      }}
    >
      <NavSticky brand="studio⁄" links={["Работы", "Услуги", "Студия", "Контакты"]} cta="Обсудить" />

      <HeroSplit
        eyebrow="креативная студия"
        lines={["Делаем бренды,"]}
        accentLine="которые движутся"
        sub="Айдентика, сайты и моушен. Собираем не картинки, а систему, в которой каждая деталь знает, как себя вести."
        primary="Обсудить проект"
        secondary="Смотреть работы"
      />

      <LogosStrip caption="нам доверяют" />

      <FeaturesBento />

      <ShowcaseMasonry />

      <CtaGlow />

      <FooterMinimal />
    </div>
  );
}
лицензия: MITавтор: Motivaисточник: оригинал (Motiva)v1.0.0