{"_id":"@aagumin/marp-technical-theme","_rev":"2-8170f9d7cf958f85f56aea7041fed26d","name":"@aagumin/marp-technical-theme","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@aagumin/marp-technical-theme","version":"0.1.0","keywords":["marp","marpit","presentation","slides","theme"],"author":{"name":"aagumin"},"license":"MIT","_id":"@aagumin/marp-technical-theme@0.1.0","maintainers":[{"name":"aagumin","email":"gumin@live.ru"}],"homepage":"https://github.com/aagumin/marp-technical-theme#readme","bugs":{"url":"https://github.com/aagumin/marp-technical-theme/issues"},"dist":{"shasum":"710de76c52df5eb3cfe539791c861acff9142e99","tarball":"https://registry.npmjs.org/@aagumin/marp-technical-theme/-/marp-technical-theme-0.1.0.tgz","fileCount":7,"integrity":"sha512-ApU2On+Tb+CGekGdnmXGY9Va/7uqLjoUTYDAxj3Yo33ccLCGMX2N7sNhbXAkrz+xT/oAw7cVGrTXrXtZJOH70w==","signatures":[{"sig":"MEUCIC1HaRhSNtrdGmf3QwKvnJIUXM99VXg1YiCyqIYX+nEQAiEAuVwK8XS4Kx6HfNLXy7yHQNDD187d6EVwZW+iPsjpxxo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":745680},"main":"./dist/technical.css","type":"module","style":"./dist/technical.css","engines":{"node":">=18"},"exports":{".":"./dist/technical.css","./theme.css":"./dist/technical.css","./starter.md":"./examples/starter.md"},"gitHead":"d7020185d554a4537b2c9e2031f05dbe6be32fd8","scripts":{"test":"node --test","build":"node scripts/marp.mjs build","prepack":"npm run build:theme","preview":"node scripts/marp.mjs preview","showcase":"node scripts/showcase.mjs","pack:check":"npm run build:theme && npm pack --dry-run --ignore-scripts","build:theme":"node scripts/build-theme.mjs"},"_npmUser":{"name":"aagumin","email":"gumin@live.ru"},"repository":{"url":"git+https://github.com/aagumin/marp-technical-theme.git","type":"git"},"_npmVersion":"11.17.0","description":"A light Marp theme for technical talks and bilingual learning materials","directories":{},"_nodeVersion":"26.5.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"pdf-lib":"1.17.1","@marp-team/marp-cli":"4.5.0"},"_npmOperationalInternal":{"tmp":"tmp/marp-technical-theme_0.1.0_1788255686703_0.040324223646262425","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@aagumin/marp-technical-theme","version":"0.1.1","description":"A light Marp theme for technical talks and bilingual learning materials","license":"MIT","author":{"name":"aagumin"},"type":"module","repository":{"type":"git","url":"git+https://github.com/aagumin/marp-technical-theme.git"},"bugs":{"url":"https://github.com/aagumin/marp-technical-theme/issues"},"homepage":"https://github.com/aagumin/marp-technical-theme#readme","keywords":["marp","marpit","presentation","slides","theme"],"main":"./dist/technical.css","style":"./dist/technical.css","exports":{".":"./dist/technical.css","./theme.css":"./dist/technical.css","./starter.md":"./examples/starter.md"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"engines":{"node":">=18"},"scripts":{"test":"node --test","build":"node scripts/marp.mjs build","preview":"node scripts/marp.mjs preview","showcase":"node scripts/showcase.mjs","build:theme":"node scripts/build-theme.mjs","prepack":"npm run build:theme","pack:check":"npm run build:theme && npm pack --dry-run --ignore-scripts"},"devDependencies":{"@marp-team/marp-cli":"4.5.0","pdf-lib":"1.17.1"},"gitHead":"2b3eed7a76be13f224e54432591a9e5de48c1d7c","_id":"@aagumin/marp-technical-theme@0.1.1","_nodeVersion":"24.19.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-2CRUdL291LL+LJiXtTa2IIfTKwB48k4eWPAHjOAAZW87D1YLo8fAoAWCHKFTDvjAlFSWwqvZ7SBECMPTDYPYzQ==","shasum":"661526859ade793e08a04a7d8478aabbd1d818fa","tarball":"https://registry.npmjs.org/@aagumin/marp-technical-theme/-/marp-technical-theme-0.1.1.tgz","fileCount":7,"unpackedSize":745680,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aagumin%2fmarp-technical-theme@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHiqbXZq4hXxV8WZOwe9KP61UqC/vK6dvcUPBYx2uV3FAiBQhAcOXg7lgDkwRA5cekqZiUQnHa+3mDr/ie866CFgwQ=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5491b2ad-92fb-45d8-b05d-09a4fa515efb"}},"directories":{},"maintainers":[{"name":"aagumin","email":"gumin@live.ru"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/marp-technical-theme_0.1.1_1788268943152_0.40180274291941376"},"_hasShrinkwrap":false}},"time":{"created":"2026-09-01T09:41:26.472Z","modified":"2026-09-01T13:22:23.613Z","0.1.0":"2026-09-01T09:41:26.877Z","0.1.1":"2026-09-01T13:22:23.300Z"},"bugs":{"url":"https://github.com/aagumin/marp-technical-theme/issues"},"author":{"name":"aagumin"},"license":"MIT","homepage":"https://github.com/aagumin/marp-technical-theme#readme","keywords":["marp","marpit","presentation","slides","theme"],"repository":{"type":"git","url":"git+https://github.com/aagumin/marp-technical-theme.git"},"description":"A light Marp theme for technical talks and bilingual learning materials","maintainers":[{"name":"aagumin","email":"gumin@live.ru"}],"readme":"# @aagumin/marp-technical-theme\n\nСветлая тема Marp для технических докладов и учебных материалов. Основной текст набирается шрифтом Inter, код набирается JetBrains Mono. Тема рассчитана на русский текст с английскими терминами и экспорт в PDF 16:9.\n\n## Быстрый старт\n\nУстановите Marp CLI и тему:\n\n```sh\nnpm install --save-dev @marp-team/marp-cli @aagumin/marp-technical-theme\n```\n\nСоздайте `marp.config.mjs`:\n\n```js\nimport { createRequire } from 'node:module'\n\nconst require = createRequire(import.meta.url)\n\nexport default {\n  themeSet: [require.resolve('@aagumin/marp-technical-theme')],\n  allowLocalFiles: true,\n}\n```\n\nСкопируйте starter и замените демонстрационный текст:\n\n```sh\ncp node_modules/@aagumin/marp-technical-theme/examples/starter.md slides.md\n```\n\nСоберите PDF:\n\n```sh\nnpx marp slides.md --pdf\n```\n\nMarp найдёт `marp.config.mjs` в текущем каталоге.\n\nОпция `allowLocalFiles: true` нужна только для изображений презентации, если они лежат на диске. Шрифты уже встроены в опубликованный `dist/technical.css`: пакет не обращается к сети и не требует копировать файлы шрифтов в проект.\n\nДля экспорта PDF и PNG установите Google Chrome, Microsoft Edge или Firefox. Используйте Markdown и изображения из доверенных источников, поскольку Marp получит доступ к локальным файлам.\n\n## Front matter\n\nКаждая презентация начинается с настроек:\n\n```yaml\n---\nmarp: true\ntheme: technical\nsize: 16:9\npaginate: true\nfooter: Название доклада\n---\n```\n\nОбложка скрывает footer и номер страницы. На остальных слайдах Marp показывает значение `footer` слева и номер справа.\n\n## Разработка темы\n\nКлонируйте репозиторий и установите зависимости:\n\n```sh\nnpm install\n```\n\nДоступные команды:\n\n```sh\n# Собрать dist/slides.pdf\nnpm run build -- slides.md\n\n# Следить за изменениями и открыть preview\nnpm run preview -- slides.md\n\n# Проверить тему на демонстрационной презентации\nnpm run showcase\n\n# Собрать CSS с встроенными шрифтами\nnpm run build:theme\n\n# Проверить файлы будущего npm-пакета\nnpm run pack:check\n```\n\nЛокальные скрипты загружают тему из `theme/technical.css`. `build:theme` встраивает Inter и JetBrains Mono в `dist/technical.css`; исходные WOFF2 остаются ресурсами сборки и не входят в npm tarball. `pack:check` собирает тему и проверяет содержимое будущего пакета.\n\n## Обычный слайд\n\nКласс не нужен:\n\n```md\n# Как работает scheduler\n\nКороткое объяснение процесса.\n\n- Получает очередь задач\n- Выбирает доступный worker\n- Обновляет состояние\n```\n\nFenced code block получает тёмный фон и подсветку синтаксиса:\n\n````md\n```go\nfunc main() {\n    fmt.Println(\"ready\")\n}\n```\n````\n\n## Специальные макеты\n\n### `cover`\n\n```md\n<!-- _class: cover -->\n\n# Название доклада\n\nEnglish subtitle\n\nИмя автора · Событие\n```\n\n### `section`\n\n```md\n<!-- _class: section -->\n\n# Архитектура решения\n\nОт запроса до результата\n```\n\n### `columns`\n\nДва blockquote становятся колонками. Внутри работают заголовки, списки, изображения и короткие блоки кода.\n\n```md\n<!-- _class: columns -->\n\n# До и после\n\n> ## До\n>\n> - Ручная настройка\n> - Разный результат\n\n> ## После\n>\n> - Один Markdown\n> - Стабильный PDF\n```\n\n### `takeaway`\n\n```md\n<!-- _class: takeaway -->\n\n# Надёжность начинается с **явного состояния**\n\nОдна строка пояснения.\n```\n\n### `quote`\n\n```md\n<!-- _class: quote -->\n\n# Инженерный ориентир\n\n> Короткая цитата, которую легко прочитать с экрана.\n>\n> - Автор или источник\n```\n\n### `code`\n\n````md\n<!-- _class: code -->\n\n# Название примера\n\n```go\nfunc dispatch(ctx context.Context) error {\n    return queue.Run(ctx)\n}\n```\n````\n\n### `image-left` и `image-right`\n\nКласс задаёт акцент, а стандартная директива Marp создаёт сегментированное изображение.\n\n```md\n<!-- _class: image-left -->\n\n![bg left:42%](architecture.svg)\n\n# Поток данных\n\nОписание изображения и главный вывод.\n```\n\nДля правой стороны используйте `image-right` и `![bg right:42%](image.png)`.\n\n## Рабочие пределы\n\n- До шести пунктов списка на обычном слайде.\n- До 16 строк кода в `code`.\n- До двух строк заголовка.\n- До четырёх строк текста в каждой колонке помимо списка или изображения.\n- Таблица до шести строк и пяти столбцов.\n\nCSS не сокращает переполненный текст. Разделите материал на два слайда, если содержимое выходит за безопасную область.\n\n## Структура\n\n```text\nassets/          исходные шрифты для сборки и лицензии\nexamples/        starter и 12-слайдовый showcase\nscripts/         сборка и проверка PDF\ntheme/           technical.css\ntests/           unit- и render-тесты\ndist/            CSS с встроенными шрифтами и локальные результаты сборки\n```\n\n## Публикация\n\nПервую версию опубликуйте из локального терминала после входа в npm:\n\n```sh\nnpm login\nnpm test\nnpm run pack:check\nnpm publish\n```\n\nПосле первого выпуска добавьте trusted publisher в настройках пакета на npmjs.com:\n\n- GitHub user or organization: `aagumin`\n- repository: `marp-technical-theme`\n- workflow: `publish.yml`\n- allowed action: `npm publish`\n\nСледующие версии публикует GitHub Actions после отправки тега `v*`:\n\n```sh\nnpm version patch\ngit push --follow-tags\n```\n\nWorkflow использует OIDC и не требует постоянного npm-токена в GitHub Secrets.\n\n## Лицензии и происхождение стиля\n\nКод темы распространяется по [MIT License](LICENSE). Inter и JetBrains Mono распространяются по SIL Open Font License 1.1. Тексты лицензий находятся в `assets/licenses`.\n\nВизуальный язык вдохновлён открытыми техническими презентациями: крупной типографикой, свободной сеткой и яркими разделителями. Тема не содержит логотипы или графические материалы CNCF и не связана с Cloud Native Computing Foundation.\n","readmeFilename":"README.md"}