Ashley
Редакторський шаблон креативної агенції з кастомним магнітним курсором, переходами між сторінками та стримано кінематографічною темно-кремовою палітрою.

Враження
Ashley — Настрій
Ashley сприймається як сучасна монографія креативної агенції. Палітра — редакторськи стримана: паперово-білі сторінки, чорнильно-чорні секції та єдиний акцент кольору #ff9800 (помаранчеве полум'я), який бере на себе майже всю візуальну роботу: підсвічує активний індикатор слайдера відгуків, обводить hover-лінію кожної картки, малює бейдж-цитату на аватарі засновника, заповнює праву смугу прогресу скролу та стрілку «Read more». Outfit — єдина гарнітура; вона чергує regular і паперово-тонкий 100-weight у межах одного заголовка, через що типографіка звучить як діалог двох голосів. Сайт користується великим повітрям, фіксованою рамкою-обкладинкою, що тримає кутові елементи інтерфейсу, і повторюваними декоративними мотивами (повільно обертовий каркасний додекаедр, SVG-лінії, текст «Scroll down» на колі), створюючи стримано-кінематографічний настрій без відеофонів і фотонакладок.
Цільова аудиторія — креативні студії, брендингові майстерні, дизайн-агенції та зрілі сольні практики, які хочуть, щоб їхня робота читалася як кураторська добірка, а не як продаж. Шаблон ідеально ляже на ребренд студії, перезапуск портфоліо або будь-який проєкт, де темп читання й голос засновника (цитата в About, варіант Home v2 «Personal») важливіші за щільність контенту. Він не підійде для SaaS-маркетингу, e-commerce чи дашбордів — тут немає таблиць тарифів, порівняльних чартів і чеклистів фіч, а ритм «темний герой → нескінченне маркі партнерів» розрахований на читача, який скролить, а не сканує.
Виробничі застереження: шаблон використовує бібліотеку Swup.js для SPA-подібних переходів між сторінками; цієї бібліотеки немає в контрольованому словнику аналізатора, тому її записано під найближчий аналог barba — пам'ятайте, що насправді це Swup. tilt.js і fancybox входять до постачання, але ініціалізується лише fancybox (на сторінках галереї портфоліо); tilt лежить мертвим вантажем. Курсор і декілька важких декорацій ховаються нижче 1200px (display: none), тож мобільний/планшетний досвід навмисно простіший. Розкриття на hover у картках команди та сервісів означає, що для тач-пристроїв резервний стан примусово виставлено в «відкрите» через media queries — перевірте перед викатом, якщо проєкт чутливий до доступності. Темного режиму немає: темні секції позначаються вручну класом mil-dark-bg, а курсор міняє колір через обгортку mi-invert-fix. Стек — jQuery 3.x плюс GSAP, ScrollTrigger, ScrollToPlugin і Swiper — оцінюйте проти бюджету бандла.
Палітра
Типографіка
Бібліотеки
Сторінки
- Home v1
home-1.html - Home v2 (Personal)
home-2.html - Portfolio Grid 1
portfolio-1.html - Portfolio Grid 2
portfolio-2.html - Portfolio Slider
portfolio-3.html - Project 1
project-1.html - Project 2
project-2.html - Project 3
project-3.html - Project 4
project-4.html - Project 5
project-5.html - Project 6
project-6.html - Services List
services.html - Single Service
service.html - Team
team.html - Blog
blog.html - Blog Inner
blog-inner.html - Publication
publication.html - Contact
contact.html - 404
404.html
Ключові фішки
Stateful magnetic cursor with contextual labels (More / Choose / arrow / accent)
- Де знайти
- js/main.js (lines ~232-360), home-1.html .mil-ball
- Чому цікаво
- One ball element absorbs four behaviours via class targets (.mil-drag, .mil-more, .mil-choose, .mil-accent-cursor); each hover switches the inner SVG/label scale on a 0.2s GSAP tween, so the same custom cursor reads completely differently across hero, sliders and links without any JS state machine.
- Коли використовувати
- You want a portfolio or agency site cursor that does more than follow the pointer — labelled hover states on key interactive zones.
- Техніка
- GSAP, jQuery hover delegation, CSS scale transforms
Sequenced split-text preloader that wipes a brand string with an accent box
- Де знайти
- js/main.js (timeline at lines 51-116), home-1.html .mil-preloader
- Чому цікаво
- The intro plays three staggered words, then a left-anchored orange box stretches to 100% width and immediately collapses from the right while the brand string fades in underneath — a single reusable timeline pattern that doubles as the cue for revealing every .mil-up element on the page.
- Коли використовувати
- You need a brand-stating preloader that hands off naturally to a wholesale FromTo of every above-the-fold animated element.
- Техніка
- GSAP timeline with relative offsets, CSS reveal box
Scroll-driven CSS scale parallax via data-value-1 / data-value-2
- Де знайти
- js/main.js (.mil-scale block ~422-439), home-1.html .mil-banner .mil-animation
- Чому цікаво
- Authors annotate any element with two data values and ScrollTrigger scrubs gsap.fromTo(scale: v1, scale: v2) — the same primitive drives the giant background dodecahedrons in the hero and the subtle 1.0->1.2 zoom on portrait images, with no per-element JS.
- Коли використовувати
- You want declarative scroll-scrubbed parallax/zoom without writing one ScrollTrigger per element.
- Техніка
- GSAP ScrollTrigger scrub, HTML data attributes
Animated dodecahedron + line decoration cloned via JS into multiple frames
- Де знайти
- home-1.html .mil-hidden-elements, js/main.js append section ~141-146, scss/_components.scss .mil-dodecahedron
- Чому цікаво
- A single 3D wireframe dodecahedron and a tall lines SVG live hidden once and are jQuery-cloned into every .mil-animation / .mil-lines-place placeholder; CSS handles a 100s rotateXYZ keyframe and a 10s vertical jump, so heavy-looking decoration costs almost nothing in markup.
- Коли використовувати
- You want repeating ambient ornaments (geometric loops, line patterns) without copying SVGs into every section.
- Техніка
- CSS keyframes, transform-style: preserve-3d, jQuery clone() + appendTo()
Avatar-bullet testimonials slider with fade + Swiper parallax
- Де знайти
- home-1.html .mil-reviews-slider, .mil-revi-pagination, js/main.js mySwiper config
- Чому цікаво
- Pagination bullets are 110px circles holding the customer's portrait via background-image and an inset accent ring marks the active state; the slide content uses Swiper's parallax data attributes for a -200 horizontal offset and opacity 0 on entrance, while the slider itself runs in fade mode so visuals overlap rather than translate.
- Коли використовувати
- You want a testimonials section that immediately reads as 'choose a person' rather than 'choose slide N'.
- Техніка
- Swiper (effect: fade, parallax, custom renderBullet), CSS box-shadow rings
Linear infinite logo marquee using Swiper free-mode
- Де знайти
- home-1.html .mil-infinite-show, js/main.js (~526-541), scss/_components.scss .mil-infinite-show .swiper-wrapper { transition-timing-function: linear }
- Чому цікаво
- Instead of a CSS @keyframes translate, the marquee uses Swiper with autoplay delay 0, loop true, freeMode true, speed 5000 and a CSS override forcing linear timing on swiper-wrapper — gives a proper infinite scroll that pauses on hover/touch and reflows with breakpoints.
- Коли використовувати
- You need a logo strip that survives reordering, responsive item counts and touch gestures without bespoke JS.
- Техніка
- Swiper.js (autoplay+loop+freeMode), CSS transition-timing-function override
Page-to-page transitions via Swup with shared menu container
- Де знайти
- home-1.html script tags, js/main.js Swup options ~21-27 and swup:contentReplaced ~616-700
- Чому цікаво
- Swup is configured with two containers (#swupMain and #swupMenu) so the off-canvas menu persists across navigations; on contentReplaced the script resets scroll, refreshes ScrollTrigger, re-clones decorations and re-binds the accordion — a reusable pattern for SPA-feeling static sites.
- Коли використовувати
- You're building a static HTML multi-page site that should feel like an SPA with persistent UI shells.
- Техніка
- Swup.js, jQuery re-init hooks, ScrollTrigger.refresh()
Hover service card that reveals body text and grayscale-to-color arrow
- Де знайти
- scss/_components.scss .mil-service-card-sm (~1238-1300), home-1.html services section
- Чому цікаво
- At rest the card shows only a heading; on hover the description fades-up, the icon button scales from 0.3 to 1 and lifts grayscale, and a 4px accent line sweeps in from the left — three coordinated transitions on a single anchor with no JS, all driven by CSS variables for timing ($t-md, $t-lg).
- Коли використовувати
- You want a dense services grid that stays calm at rest but rewards intent without a click.
- Техніка
- CSS transitions, filter: grayscale, transform: scale, ::before pseudo-element
Компоненти
Full-viewport dark hero with rotating dodecahedron decoration, oversized headline mixing thin and regular weights, and a circling Scroll-down SVG anchor.
Fixed corner frame with logo top-left and burger top-right, plus a back-to-top link bottom-right that fades in after 40% scroll.
Black fullscreen overlay menu with staggered reveal of nav, contact info and a wireframe dodecahedron animation panel.
Two-column About block with founder quote-avatar, copy on the left and a tall portrait with parallax-scaled image on the right.
Four-up dark services grid where each card reveals its description and arrow button on hover, plus an inline image-text headline above.
Two-column team grid where each portrait reveals a dark overlay with name, role and social icons on hover; second column is offset vertically.
Centered fade-effect Swiper slider for testimonials with circular avatar bullets used as pagination dots, plus prev/next round arrows.
Continuous linear-easing Swiper marquee of partner logos that loops at 5000ms speed with zero delay autoplay.
Two-column blog teaser grid with category pill, date label, headline, two-line clamped intro and a Read more arrow link.
Dark inverted-fix footer with newsletter input, footer nav, multi-region addresses and circular social icons over a soft jumping dodecahedron.
GSAP-driven ball cursor that swells, swaps to an arrow icon, picks up More/Choose labels or turns accent-orange depending on the hovered element.
Sequenced GSAP timeline preloader: three muted words slide in, then a horizontal accent reveal box wipes a domain string before the loader fades.
Right-edge fixed 4px scrollbar rail that fills with the brand accent as you scroll, scrubbed by ScrollTrigger.
Circular SVG text Scroll down — Scroll down — wrapped around an arrow button, slowly rotating 360deg on scroll for the bottom-right of the hero.