Commit Graph
55 Commits
Author SHA1 Message Date
root bd20a4040d fix: цвет иконки FAB icon-only на design-system (исключён .fab из правила ссылок) 2026-09-11 14:49:40 +02:00
root f7545e4203 feat: появление секции marquee при скролле (data-reveal, мягкий fade+сдвиг) 2026-09-11 13:47:19 +02:00
root 4212579c5a fix: внутренние ссылки без .html (clean URL) в партиалах, cases, cookie-policy, resume 2026-09-11 13:43:53 +02:00
root 5b1725e330 style: --edge-pad уменьшен вдвое (clamp(0.5rem,2vw,1.4rem)) 2026-09-11 13:38:18 +02:00
root 400f2d3cfa style: header скрыт вверху, плавающая панель только при скролле 2026-09-11 13:20:35 +02:00
root e0bfe5a747 style: header__inner единый отступ (--edge-pad), убран боковой max() в padding 2026-09-11 13:17:28 +02:00
root 73fb0a1636 style: единый отступ fixed FAB и плавающего меню (--edge-pad) 2026-09-11 13:06:54 +02:00
root 8f40fcb5ed feat: дефолт fade для карусели; просмотрщик без анимации смены кадра 2026-09-11 13:03:46 +02:00
root a43aaa5e22 feat: case-media-gallery--wide — 4 колонки, выход за колонку как у case-media--wide 2026-09-10 21:35:49 +02:00
root bd9b749a10 style: hover кнопок плеера — иконка в акцент; фон кнопки Play как у панели 2026-09-10 20:57:20 +02:00
root 2d0f3f3989 feat: варианты анимации слайдера (slide/fade/none), пилюли-точки, blur-фон просмотрщика, фикс открытия в natural-слайдерах 2026-09-10 19:58:21 +02:00
root c14bb1f543 fix: доработки слайдера и просмотрщика
- case-media-slider: обрамление+hover как у карточек, стрелки только при наведении (fade-in),
  группа пред/след-пилюля в правом нижнем углу, disabled-кнопки видны (не скрываются),
  убран border-radius у img/figcaption (скругление у viewport), неактивные слайды не скрываются
  visibility (нет 'дырки' при перелистывании), настраиваемая ширина --wide/--content/--natural
- image-load-placeholder: исключён .case-media-slider (нет блика/серого фона)
- icon-press: универсальный эффект 'продавливания' иконки при нажатии (.icon-press + :active/.is-pressed),
  применён к слайдеру и всем кнопкам просмотрщика
2026-09-09 19:29:30 +02:00
root 95b4eaca93 feat: галерея-слайдер, листалка в просмотрщике и TUI braille-спиннер
- case-media-slider: переиспользуемый слайдер (prev/next + точки, swipe, клавиатура, lazy)
- image-viewer: листалка prev/next в тулбаре как пилюли, пагинация-точки в тулбаре слева,
  группа масштаба (slider + текст) с gap 0.25rem, текст масштаба --text-muted/400
- tui-spinner: переиспользуемый braille-спиннер (чистый CSS), лоадер просмотрщика
- design-system.html: живой пример TUI braille-спиннера
- fix: удалён мёртвый textContent='Загрузка...', убивавший .tui-spinner при повторном открытии
2026-09-09 17:49:56 +02:00
root 9b91ed165f fix: карточки «Смотрите также» встают в ряд на ширине ~1278px
data-mp-cells-sm=2 для карточек related — в диапазоне 4 колонок
(≈1080–1355px вьюпорта) карточки занимают по 2 колонки и парятся,
устраняя пустую колонку справа. В десктопном 6-колоночном диапазоне
сохраняется data-mp-cells=3.
2026-09-08 19:04:42 +02:00
root 16dafcbf01 chore: удалена пустая секция section--surface после контактов
Убран инклюд {{> footer-spacer}} (пустая <section class="section section--surface"
aria-hidden> как прокладка перед футером) на главной и во всех 16 кейсах.
Пересобраны страницы (build:pages).
2026-09-08 18:15:04 +02:00
Local Build 8f62dec556 feat: компонент sep, сепараторы в резюме, соцсети, посещённые ссылки 2026-08-15 22:48:19 +02:00
Local Build 8ce691eee7 Чистый URL для cookie-policy: cookie-policy/ вместо cookie-policy.html 2026-08-15 20:06:12 +02:00
Local Build c4bfe5c9ee Чистые URL для кейсов: cases/slug/ вместо cases/slug.html, исправлены пути к ассетам 2026-08-15 16:37:54 +02:00
Local Build c66b9b856f Hero: marquee, блок 'Смотрите также', заголовки кейсов, меню, шапка кейсов 2026-08-15 14:11:51 +02:00
Local Build a09e3e671e Hero: текст + marquee, блок 'Смотрите также' на страницах кейсов, masonry fix для hidden 2026-08-15 13:49:19 +02:00
Local Build 77a9f6dfe6 Hero: обновил текст, добавил marquee-секцию с бегущей строкой 2026-08-14 10:47:18 +02:00
Local Build 5544a48400 merge feature/resume-pdf-download into dev 2026-08-14 10:05:40 +02:00
Local Build 97e56b48bf PDF резюме: Puppeteer-скрипт, кнопка скачивания, имя файла Mamadaev_Nik__CV__Product_Designer_UX-UI 2026-08-14 10:05:17 +02:00
Local Build 34cec0e42c feat: добавлена карточка Астратек в опыт работы 2026-08-14 10:00:25 +02:00
Local Build 322938b5ec fix(fab): add missing icon properties for print FAB
Added display, width, height, background:currentColor, and full
mask-size/mask-repeat/mask-position properties to match the
original fab-primary__ico pattern.
2026-08-13 21:32:23 +02:00
Local Build 9326bdb080 fix(icon): replace stroke-based printer icon with filled version
mask-image uses alpha channel - stroke-based SVGs with fill='none'
are invisible as masks. Using filled path version instead.
2026-08-13 21:30:46 +02:00
Local Build 77af88449f fix(fab): remove glass-neutral from primary button
Primary FAB in original design does not have glass-neutral class.
Only secondary buttons use glass-neutral.
2026-08-13 21:27:54 +02:00
Local Build 4dfb483a34 fix(fab): follow original FAB stack structure
- Secondary button wrapped in theme-panel-fab-wrap (above primary)
- Primary button outside wrap (below secondary)
- Added glass-neutral class to both buttons
- Matches the pattern from fab-stack-home-contact.html
2026-08-13 21:26:59 +02:00
Local Build e44a72f559 feat(pdf): add print FAB + fix color-mix via clean clone approach
- Added secondary FAB button 'Печать' with printer icon (window.print)
- Created printer.svg icon for the print button
- Added .fab-secondary__ico--print CSS class
- Fixed html2pdf color-mix() issue: buildCleanClone() creates a deep clone
  with all computed styles inlined, all stylesheets removed, and
  pseudo-elements converted to real DOM elements before passing to html2pdf
- Two separate handlers: pdfBtn for download, printBtn for print dialog
2026-08-13 21:20:27 +02:00
Local Build 319c23e69e fix(pdf): switch to window.print() for reliable PDF export
html2canvas (bundled in html2pdf.js) can't parse CSS color-mix()
function regardless of onclone workarounds. Using window.print()
which leverages the browser's native renderer with full CSS support.
In Chrome/Edge the print dialog defaults to 'Save as PDF' destination.
2026-08-13 21:14:24 +02:00
Local Build e00487aa15 fix(pdf): aggressive stylesheet cleanup via deleteRule + pseudo-element flattening
- Delete all CSS rules via sheet.deleteRule(0) loop (not just clear textContent)
- Remove all <style> and <link rel=stylesheet> elements from clone
- Convert ::before/::after pseudo-elements into real DOM elements with inline styles
- All computed styles inlined on every element in the clone
- This ensures html2canvas never encounters color-mix() in any stylesheet
2026-08-13 21:09:55 +02:00
Local Build debbefcb43 fix(pdf): use html2canvas onclone to inline all styles before render
Previous flattenColors approach failed because html2canvas reads CSS
rules from stylesheets, not computed styles. Now in the onclone callback:
1. Walk all elements, get computed styles from original doc
2. Set every property as inline style on cloned elements
3. Remove all <style> tags and <link rel=stylesheet> from clone
This ensures html2canvas never encounters raw color-mix() in stylesheets.
2026-08-13 21:01:55 +02:00
Local Build 7df7734eeb fix(pdf): flatten color-mix() values before html2canvas render
html2canvas can't parse CSS color-mix() function. Before rendering,
walk the DOM tree and inline computed styles (with color-mix resolved
by the browser) as inline styles. Restore originals after save.
2026-08-13 20:57:33 +02:00
Local Build 7170b8a5fa fix(pdf): add missing .save() call to trigger file download
html2pdf().from().set() only configures, .save() actually triggers
the browser download dialog.
2026-08-13 20:56:02 +02:00
Local Build 1b53e67d90 debug(pdf): add detailed step-by-step console logging 2026-08-13 20:53:04 +02:00
Local Build 01fb4e8e47 docs(ds): add FAB button with label to design system page and DESIGN.md
- Add live examples: fab--primary (icon-only), fab--primary + fab--label (with text), fab--secondary
- Add FAB-кнопки section to DESIGN.md component table
- Document --on-accent computation rule in theme-init-script
2026-08-13 20:49:47 +02:00
Local Build 632e54ce4e fix: compute --on-accent in inline head script for all pages
--on-accent was only set by deferred theme-core.js module, causing
all fab--primary and btn--primary elements to have wrong text/icon
color on first paint. Now computed from HSL values in the synchronous
theme-init-script partial, matching theme-core.js logic exactly.

Remove hardcoded fallback from fab--label CSS.
2026-08-13 20:46:50 +02:00
Local Build f12199ef3b fix(resume): add --on-accent fallback to hover/focus-visible states 2026-08-13 20:44:23 +02:00
Local Build 651e0e1c16 fix(resume): add fallback for --on-accent to fix text color
--on-accent is set by deferred JS module, so var(--on-accent) is
undefined on first paint. Added fallback hsl(0 0% 98%) to fab--label
so text is white before JS defines the token.
2026-08-13 20:37:52 +02:00
Local Build e02291fffd fix(resume): use fab fab--primary pattern with text label
- fab fab--primary fab--label (same base as contact FAB)
- fab-primary__ico--pdf with cv.svg mask
- fab__label for text
- fab__spinner for loading state
- fab--label overrides fixed width from fab--primary
2026-08-13 20:27:13 +02:00
Local Build d7e717e2e7 fix(resume): use design-system .btn component for PDF button
- Use btn btn--primary btn--flat btn--resume (existing pattern)
- btn__icon with cv.svg mask already defined in design system
- Remove all custom fab--primary overrides
- Keep only btn__spinner and loading state CSS
2026-08-13 20:23:03 +02:00
Local Build f173efd339 feat(resume): add label text to PDF download button
- Button now shows icon + 'Скачать в PDF' text
- Add fab--label modifier for auto-width with padding
- Add fab-primary__label for text styling
2026-08-13 20:18:17 +02:00
Local Build c4066b35d0 debug: add console.log to trace PDF button click flow 2026-08-13 20:17:31 +02:00
Local Build 1ab72e533a refactor(resume): use design-system fab--primary pattern for PDF button
- Use fab-primary__ico with mask-image (cv.svg) instead of inline SVG
- Follow same pattern as contact FAB
- Add fab-primary__spinner for loading state
- Remove custom fab--pdf styles
2026-08-13 20:14:43 +02:00
Local Build e39c07f544 fix(resume): remove glass-neutral from PDF FAB to fix background override 2026-08-13 20:13:02 +02:00
Local Build 1a1648c5e2 feat(resume): add PDF download FAB button with lazy-loaded html2pdf.js
- New partial fab-stack-resume.html with PDF download button
- Button shows spinner during PDF generation
- Photo converted to dataURL before rendering
- html2pdf.js loaded from CDN on first click only
- CSS for fab--pdf button and loading spinner
2026-08-13 19:54:30 +02:00
Bot Dev 3b706066c9 dev: fix ALLOWED_HOSTS quoting in content-edit-storage.js 2026-07-29 19:06:35 +02:00
Bot Dev e42f0c746c dev: allow content-edit UI host from sslip.io domain 2026-07-29 18:39:28 +02:00
Bot Dev 12e2b121c7 dev: allow content-edits API from sslip.io domain 2026-07-29 18:21:54 +02:00
Bot Dev 935e32c166 dev: use node:22-slim local 2026-07-29 16:37:23 +02:00