stella-coder 3.9.2 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (235) hide show
  1. package/.mcp.json +11 -0
  2. package/.opencode/skills/banner-design/SKILL.md +196 -0
  3. package/.opencode/skills/banner-design/references/banner-sizes-and-styles.md +118 -0
  4. package/.opencode/skills/brand/SKILL.md +97 -0
  5. package/.opencode/skills/brand/references/approval-checklist.md +169 -0
  6. package/.opencode/skills/brand/references/asset-organization.md +157 -0
  7. package/.opencode/skills/brand/references/brand-guideline-template.md +140 -0
  8. package/.opencode/skills/brand/references/color-palette-management.md +186 -0
  9. package/.opencode/skills/brand/references/consistency-checklist.md +94 -0
  10. package/.opencode/skills/brand/references/logo-usage-rules.md +185 -0
  11. package/.opencode/skills/brand/references/messaging-framework.md +85 -0
  12. package/.opencode/skills/brand/references/typography-specifications.md +214 -0
  13. package/.opencode/skills/brand/references/update.md +118 -0
  14. package/.opencode/skills/brand/references/visual-identity.md +96 -0
  15. package/.opencode/skills/brand/references/voice-framework.md +88 -0
  16. package/.opencode/skills/brand/scripts/extract-colors.cjs +341 -0
  17. package/.opencode/skills/brand/scripts/inject-brand-context.cjs +349 -0
  18. package/.opencode/skills/brand/scripts/sync-brand-to-tokens.cjs +248 -0
  19. package/.opencode/skills/brand/scripts/tests/test_sync_brand_to_tokens.py +52 -0
  20. package/.opencode/skills/brand/scripts/validate-asset.cjs +387 -0
  21. package/.opencode/skills/brand/templates/brand-guidelines-starter.md +275 -0
  22. package/.opencode/skills/design/SKILL.md +313 -0
  23. package/.opencode/skills/design/data/cip/deliverables.csv +51 -0
  24. package/.opencode/skills/design/data/cip/industries.csv +21 -0
  25. package/.opencode/skills/design/data/cip/mockup-contexts.csv +21 -0
  26. package/.opencode/skills/design/data/cip/styles.csv +21 -0
  27. package/.opencode/skills/design/data/icon/styles.csv +16 -0
  28. package/.opencode/skills/design/data/logo/colors.csv +56 -0
  29. package/.opencode/skills/design/data/logo/industries.csv +56 -0
  30. package/.opencode/skills/design/data/logo/styles.csv +56 -0
  31. package/.opencode/skills/design/references/banner-sizes-and-styles.md +118 -0
  32. package/.opencode/skills/design/references/cip-deliverable-guide.md +95 -0
  33. package/.opencode/skills/design/references/cip-design.md +121 -0
  34. package/.opencode/skills/design/references/cip-prompt-engineering.md +84 -0
  35. package/.opencode/skills/design/references/cip-style-guide.md +68 -0
  36. package/.opencode/skills/design/references/design-routing.md +207 -0
  37. package/.opencode/skills/design/references/icon-design.md +122 -0
  38. package/.opencode/skills/design/references/logo-color-psychology.md +101 -0
  39. package/.opencode/skills/design/references/logo-design.md +92 -0
  40. package/.opencode/skills/design/references/logo-prompt-engineering.md +158 -0
  41. package/.opencode/skills/design/references/logo-style-guide.md +109 -0
  42. package/.opencode/skills/design/references/slides-copywriting-formulas.md +84 -0
  43. package/.opencode/skills/design/references/slides-create.md +4 -0
  44. package/.opencode/skills/design/references/slides-html-template.md +295 -0
  45. package/.opencode/skills/design/references/slides-layout-patterns.md +137 -0
  46. package/.opencode/skills/design/references/slides-strategies.md +94 -0
  47. package/.opencode/skills/design/references/slides.md +42 -0
  48. package/.opencode/skills/design/references/social-photos-design.md +329 -0
  49. package/.opencode/skills/design/scripts/cip/core.py +215 -0
  50. package/.opencode/skills/design/scripts/cip/generate.py +484 -0
  51. package/.opencode/skills/design/scripts/cip/render-html.py +424 -0
  52. package/.opencode/skills/design/scripts/cip/search.py +127 -0
  53. package/.opencode/skills/design/scripts/icon/generate.py +487 -0
  54. package/.opencode/skills/design/scripts/logo/core.py +175 -0
  55. package/.opencode/skills/design/scripts/logo/generate.py +362 -0
  56. package/.opencode/skills/design/scripts/logo/search.py +114 -0
  57. package/.opencode/skills/design-system/SKILL.md +244 -0
  58. package/.opencode/skills/design-system/data/slide-backgrounds.csv +11 -0
  59. package/.opencode/skills/design-system/data/slide-charts.csv +26 -0
  60. package/.opencode/skills/design-system/data/slide-color-logic.csv +14 -0
  61. package/.opencode/skills/design-system/data/slide-copy.csv +26 -0
  62. package/.opencode/skills/design-system/data/slide-layout-logic.csv +16 -0
  63. package/.opencode/skills/design-system/data/slide-layouts.csv +26 -0
  64. package/.opencode/skills/design-system/data/slide-strategies.csv +16 -0
  65. package/.opencode/skills/design-system/data/slide-typography.csv +15 -0
  66. package/.opencode/skills/design-system/references/component-specs.md +236 -0
  67. package/.opencode/skills/design-system/references/component-tokens.md +214 -0
  68. package/.opencode/skills/design-system/references/primitive-tokens.md +203 -0
  69. package/.opencode/skills/design-system/references/semantic-tokens.md +215 -0
  70. package/.opencode/skills/design-system/references/states-and-variants.md +241 -0
  71. package/.opencode/skills/design-system/references/tailwind-integration.md +251 -0
  72. package/.opencode/skills/design-system/references/token-architecture.md +224 -0
  73. package/.opencode/skills/design-system/scripts/embed-tokens.cjs +99 -0
  74. package/.opencode/skills/design-system/scripts/fetch-background.py +317 -0
  75. package/.opencode/skills/design-system/scripts/generate-slide.py +770 -0
  76. package/.opencode/skills/design-system/scripts/generate-tokens.cjs +205 -0
  77. package/.opencode/skills/design-system/scripts/html-token-validator.py +327 -0
  78. package/.opencode/skills/design-system/scripts/search-slides.py +218 -0
  79. package/.opencode/skills/design-system/scripts/slide-token-validator.py +35 -0
  80. package/.opencode/skills/design-system/scripts/slide_search_core.py +453 -0
  81. package/.opencode/skills/design-system/scripts/tests/test_validate_tokens.py +48 -0
  82. package/.opencode/skills/design-system/scripts/validate-tokens.cjs +246 -0
  83. package/.opencode/skills/design-system/templates/design-tokens-starter.json +143 -0
  84. package/.opencode/skills/slides/SKILL.md +40 -0
  85. package/.opencode/skills/slides/references/copywriting-formulas.md +84 -0
  86. package/.opencode/skills/slides/references/create.md +4 -0
  87. package/.opencode/skills/slides/references/html-template.md +295 -0
  88. package/.opencode/skills/slides/references/layout-patterns.md +137 -0
  89. package/.opencode/skills/slides/references/slide-strategies.md +94 -0
  90. package/.opencode/skills/ui-styling/LICENSE.txt +202 -0
  91. package/.opencode/skills/ui-styling/SKILL.md +324 -0
  92. package/.opencode/skills/ui-styling/references/canvas-design-system.md +320 -0
  93. package/.opencode/skills/ui-styling/references/shadcn-accessibility.md +471 -0
  94. package/.opencode/skills/ui-styling/references/shadcn-components.md +424 -0
  95. package/.opencode/skills/ui-styling/references/shadcn-theming.md +373 -0
  96. package/.opencode/skills/ui-styling/references/tailwind-customization.md +483 -0
  97. package/.opencode/skills/ui-styling/references/tailwind-responsive.md +382 -0
  98. package/.opencode/skills/ui-styling/references/tailwind-utilities.md +455 -0
  99. package/.opencode/skills/ui-styling/scripts/requirements.txt +17 -0
  100. package/.opencode/skills/ui-styling/scripts/shadcn_add.py +308 -0
  101. package/.opencode/skills/ui-styling/scripts/tailwind_config_gen.py +473 -0
  102. package/.opencode/skills/ui-styling/scripts/tests/coverage-ui.json +1 -0
  103. package/.opencode/skills/ui-styling/scripts/tests/requirements.txt +3 -0
  104. package/.opencode/skills/ui-styling/scripts/tests/test_shadcn_add.py +266 -0
  105. package/.opencode/skills/ui-styling/scripts/tests/test_tailwind_config_gen.py +394 -0
  106. package/.opencode/skills/ui-ux-pro-max/SKILL.md +396 -0
  107. package/.opencode/skills/ui-ux-pro-max/data/_sync_all.py +414 -0
  108. package/.opencode/skills/ui-ux-pro-max/data/app-interface.csv +31 -0
  109. package/.opencode/skills/ui-ux-pro-max/data/charts.csv +26 -0
  110. package/.opencode/skills/ui-ux-pro-max/data/colors.csv +193 -0
  111. package/.opencode/skills/ui-ux-pro-max/data/design.csv +1776 -0
  112. package/.opencode/skills/ui-ux-pro-max/data/draft.csv +1779 -0
  113. package/.opencode/skills/ui-ux-pro-max/data/google-fonts.csv +1924 -0
  114. package/.opencode/skills/ui-ux-pro-max/data/icons.csv +106 -0
  115. package/.opencode/skills/ui-ux-pro-max/data/landing.csv +35 -0
  116. package/.opencode/skills/ui-ux-pro-max/data/motion.csv +17 -0
  117. package/.opencode/skills/ui-ux-pro-max/data/products.csv +193 -0
  118. package/.opencode/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
  119. package/.opencode/skills/ui-ux-pro-max/data/stacks/angular.csv +51 -0
  120. package/.opencode/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -0
  121. package/.opencode/skills/ui-ux-pro-max/data/stacks/avalonia.csv +57 -0
  122. package/.opencode/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  123. package/.opencode/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  124. package/.opencode/skills/ui-ux-pro-max/data/stacks/javafx.csv +76 -0
  125. package/.opencode/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  126. package/.opencode/skills/ui-ux-pro-max/data/stacks/laravel.csv +51 -0
  127. package/.opencode/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  128. package/.opencode/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +71 -0
  129. package/.opencode/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  130. package/.opencode/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  131. package/.opencode/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
  132. package/.opencode/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  133. package/.opencode/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  134. package/.opencode/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  135. package/.opencode/skills/ui-ux-pro-max/data/stacks/threejs.csv +54 -0
  136. package/.opencode/skills/ui-ux-pro-max/data/stacks/uno.csv +60 -0
  137. package/.opencode/skills/ui-ux-pro-max/data/stacks/uwp.csv +56 -0
  138. package/.opencode/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  139. package/.opencode/skills/ui-ux-pro-max/data/stacks/winui.csv +60 -0
  140. package/.opencode/skills/ui-ux-pro-max/data/stacks/wpf.csv +57 -0
  141. package/.opencode/skills/ui-ux-pro-max/data/styles.csv +85 -0
  142. package/.opencode/skills/ui-ux-pro-max/data/typography.csv +75 -0
  143. package/.opencode/skills/ui-ux-pro-max/data/ui-reasoning.csv +162 -0
  144. package/.opencode/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  145. package/.opencode/skills/ui-ux-pro-max/scripts/__pycache__/core.cpython-312.pyc +0 -0
  146. package/.opencode/skills/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-312.pyc +0 -0
  147. package/.opencode/skills/ui-ux-pro-max/scripts/core.py +274 -0
  148. package/.opencode/skills/ui-ux-pro-max/scripts/design_system.py +1329 -0
  149. package/.opencode/skills/ui-ux-pro-max/scripts/search.py +127 -0
  150. package/README.md +5 -0
  151. package/STELLA.md +1 -1
  152. package/dist/antimalware/database.mjs +871 -0
  153. package/dist/antimalware/index.mjs +8 -0
  154. package/dist/antimalware/scanner.mjs +591 -0
  155. package/dist/antimalware/ui.mjs +570 -0
  156. package/dist/banner.mjs +46 -0
  157. package/dist/index.mjs +3073 -0
  158. package/dist/markdown.mjs +100 -0
  159. package/dist/sea-config.json +4 -0
  160. package/dist/security.mjs +237 -0
  161. package/dist/theme.mjs +89 -0
  162. package/dist/tools.mjs +3145 -0
  163. package/install-stella.bat +44 -0
  164. package/package.json +4 -2
  165. package/presentation-advanced-features-demo/README.md +27 -0
  166. package/presentation-advanced-features-demo/index.html +371 -0
  167. package/presentation-advanced-features-demo/print.html +81 -0
  168. package/presentation-advanced-features-demo/slide-01.html +98 -0
  169. package/presentation-advanced-features-demo/slide-02.html +101 -0
  170. package/presentation-advanced-features-demo/slide-03.html +100 -0
  171. package/presentation-advanced-features-demo/slide-04.html +100 -0
  172. package/presentation-advanced-features-demo/slide-05.html +100 -0
  173. package/presentation-advanced-features-demo/slide-06.html +64 -0
  174. package/presentation-advanced-features-demo/slide-07.html +101 -0
  175. package/presentation-advanced-features-demo/slide-08.html +91 -0
  176. package/presentation-stella-coder---ai-coding-agent/README.md +27 -0
  177. package/presentation-stella-coder---ai-coding-agent/index.html +168 -0
  178. package/presentation-stella-coder---ai-coding-agent/slide-01.html +98 -0
  179. package/presentation-stella-coder---ai-coding-agent/slide-02.html +101 -0
  180. package/presentation-stella-coder---ai-coding-agent/slide-03.html +100 -0
  181. package/presentation-stella-coder---ai-coding-agent/slide-04.html +100 -0
  182. package/presentation-stella-coder---ai-coding-agent/slide-05.html +100 -0
  183. package/presentation-stella-coder---ai-coding-agent/slide-06.html +100 -0
  184. package/presentation-stella-coder---ai-coding-agent/slide-07.html +100 -0
  185. package/presentation-stella-coder---ai-coding-agent/slide-08.html +64 -0
  186. package/presentation-stella-coder---ai-coding-agent/slide-09.html +101 -0
  187. package/presentation-stella-coder---ai-coding-agent/slide-10.html +91 -0
  188. package/presentation-stella-coder-demo/README.md +27 -0
  189. package/presentation-stella-coder-demo/index.html +371 -0
  190. package/presentation-stella-coder-demo/slide-01.html +98 -0
  191. package/presentation-stella-coder-demo/slide-02.html +101 -0
  192. package/presentation-stella-coder-demo/slide-03.html +100 -0
  193. package/presentation-stella-coder-demo/slide-04.html +100 -0
  194. package/presentation-stella-coder-demo/slide-05.html +100 -0
  195. package/presentation-stella-coder-demo/slide-06.html +64 -0
  196. package/presentation-stella-coder-demo/slide-07.html +101 -0
  197. package/presentation-stella-coder-demo/slide-08.html +91 -0
  198. package/presentation-stella-coder-features/README.md +27 -0
  199. package/presentation-stella-coder-features/index.html +364 -0
  200. package/presentation-stella-coder-features/print.html +77 -0
  201. package/presentation-stella-coder-features/slide-01.html +98 -0
  202. package/presentation-stella-coder-features/slide-02.html +101 -0
  203. package/presentation-stella-coder-features/slide-03.html +100 -0
  204. package/presentation-stella-coder-features/slide-04.html +100 -0
  205. package/presentation-stella-coder-features/slide-05.html +64 -0
  206. package/presentation-stella-coder-features/slide-06.html +101 -0
  207. package/presentation-stella-coder-features/slide-07.html +91 -0
  208. package/presentation-test-presentation/README.md +27 -0
  209. package/presentation-test-presentation/index.html +350 -0
  210. package/presentation-test-presentation/print.html +69 -0
  211. package/presentation-test-presentation/slide-01.html +98 -0
  212. package/presentation-test-presentation/slide-02.html +101 -0
  213. package/presentation-test-presentation/slide-03.html +64 -0
  214. package/presentation-test-presentation/slide-04.html +101 -0
  215. package/presentation-test-presentation/slide-05.html +91 -0
  216. package/presentation-/321/202/320/265/321/201/321/202/320/276/320/262/320/260/321/217-/320/277/321/200/320/265/320/267/320/265/320/275/321/202/320/260/321/206/320/270/321/217/README.md +27 -0
  217. package/presentation-/321/202/320/265/321/201/321/202/320/276/320/262/320/260/321/217-/320/277/321/200/320/265/320/267/320/265/320/275/321/202/320/260/321/206/320/270/321/217/index.html +159 -0
  218. package/presentation-/321/202/320/265/321/201/321/202/320/276/320/262/320/260/321/217-/320/277/321/200/320/265/320/267/320/265/320/275/321/202/320/260/321/206/320/270/321/217/slide-01.html +98 -0
  219. package/presentation-/321/202/320/265/321/201/321/202/320/276/320/262/320/260/321/217-/320/277/321/200/320/265/320/267/320/265/320/275/321/202/320/260/321/206/320/270/321/217/slide-02.html +101 -0
  220. package/presentation-/321/202/320/265/321/201/321/202/320/276/320/262/320/260/321/217-/320/277/321/200/320/265/320/267/320/265/320/275/321/202/320/260/321/206/320/270/321/217/slide-03.html +100 -0
  221. package/presentation-/321/202/320/265/321/201/321/202/320/276/320/262/320/260/321/217-/320/277/321/200/320/265/320/267/320/265/320/275/321/202/320/260/321/206/320/270/321/217/slide-04.html +100 -0
  222. package/presentation-/321/202/320/265/321/201/321/202/320/276/320/262/320/260/321/217-/320/277/321/200/320/265/320/267/320/265/320/275/321/202/320/260/321/206/320/270/321/217/slide-05.html +64 -0
  223. package/presentation-/321/202/320/265/321/201/321/202/320/276/320/262/320/260/321/217-/320/277/321/200/320/265/320/267/320/265/320/275/321/202/320/260/321/206/320/270/321/217/slide-06.html +101 -0
  224. package/presentation-/321/202/320/265/321/201/321/202/320/276/320/262/320/260/321/217-/320/277/321/200/320/265/320/267/320/265/320/275/321/202/320/260/321/206/320/270/321/217/slide-07.html +91 -0
  225. package/stella-cli/coding-brain.mjs +753 -0
  226. package/stella-cli/index.mjs +931 -15
  227. package/stella-cli/mcp.mjs +296 -0
  228. package/stella-cli/presentations.mjs +1106 -0
  229. package/stella-cli/subagents.mjs +142 -0
  230. package/stella-cli/telegram-bot.mjs +824 -0
  231. package/stella-cli/tg-bg.bat +13 -0
  232. package/stella-cli/tg-server.bat +15 -0
  233. package/stella-cli/tg-server.mjs +116 -0
  234. package/stella-cli/theme.mjs +6 -4
  235. package/stella-coder-3.9.2.tgz +0 -0
@@ -0,0 +1,44 @@
1
+ @echo off
2
+ chcp 65001 >nul
3
+ echo.
4
+ echo ╔══════════════════════════════════════════╗
5
+ echo ║ Stella Coder 3.9 - Installer ║
6
+ echo ║ powered by codex alex ║
7
+ echo ╚══════════════════════════════════════════╝
8
+ echo.
9
+
10
+ :: Check if Node.js is installed
11
+ where node >nul 2>nul
12
+ if %errorlevel% neq 0 (
13
+ echo [1/4] Node.js не найден. Установка...
14
+ echo Скачивание Node.js...
15
+ powershell -Command "Invoke-WebRequest -Uri 'https://nodejs.org/dist/v20.11.0/node-v20.11.0-x64.msi' -OutFile '%TEMP%\node-install.msi'"
16
+ echo Установка Node.js...
17
+ msiexec /i "%TEMP%\node-install.msi" /quiet /norestart
18
+ timeout /t 30 >nul
19
+ set PATH=%PATH%;C:\Program Files\nodejs\
20
+ ) else (
21
+ echo [1/4] Node.js найден
22
+ )
23
+
24
+ :: Check npm
25
+ where npm >nul 2>nul
26
+ if %errorlevel% neq 0 (
27
+ echo ОШИБКА: npm не установлен
28
+ pause
29
+ exit /b 1
30
+ )
31
+
32
+ echo [2/4] Установка Stella Coder...
33
+ call npm install -g stella-coder
34
+
35
+ echo [3/4] Проверка установки...
36
+ stella --version
37
+
38
+ echo [4/4] Готово!
39
+ echo.
40
+ echo ╔══════════════════════════════════════════╗
41
+ echo ║ Запуск: stella ║
42
+ echo ╚══════════════════════════════════════════╝
43
+ echo.
44
+ pause
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "stella-coder",
3
- "version": "3.9.2",
3
+ "version": "4.0.0",
4
4
  "private": false,
5
- "description": "Stella Coder 3.9 — AI coding agent with computer control, smart home, Office automation, and antivirus",
5
+ "description": "Stella Coder 4.0 — AI coding agent with subagents, MCP, computer control, smart home, Office automation, and antivirus",
6
6
  "main": "stella-cli/index.mjs",
7
7
  "bin": {
8
8
  "stella": "stella-cli/index.mjs",
@@ -36,12 +36,14 @@
36
36
  "ai": "^7.0.15",
37
37
  "class-variance-authority": "^0.7.1",
38
38
  "clsx": "^2.1.1",
39
+ "gsap": "^3.15.0",
39
40
  "lucide-react": "^1.16.0",
40
41
  "next": "16.2.6",
41
42
  "react": "^19",
42
43
  "react-dom": "^19",
43
44
  "shadcn": "^4.8.0",
44
45
  "tailwind-merge": "^3.3.1",
46
+ "three": "^0.185.1",
45
47
  "tw-animate-css": "^1.4.0",
46
48
  "zod": "^4.4.3"
47
49
  },
@@ -0,0 +1,27 @@
1
+ # Advanced Features Demo
2
+
3
+ ## Презентация
4
+
5
+ Эта презентация содержит 8 слайдов.
6
+
7
+ ### Просмотр
8
+
9
+ Откройте `index.html` в браузере для просмотра презентации.
10
+
11
+ ### Навигация
12
+
13
+ - Используйте клавиши ← → для навигации
14
+ - Нажмите F11 для полноэкранного режима
15
+
16
+ ### Тема
17
+
18
+ Tech Blue
19
+
20
+ ### Цвета
21
+
22
+ - Primary: #0ea5e9
23
+ - Secondary: #06b6d4
24
+ - Accent: #0ea5e9
25
+
26
+ ---
27
+ Создано с помощью Stella Coder
@@ -0,0 +1,371 @@
1
+ <!DOCTYPE html>
2
+ <html lang="ru">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Advanced Features Demo</title>
7
+ <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
8
+ <style>
9
+ * { margin: 0; padding: 0; box-sizing: border-box; }
10
+ body {
11
+ font-family: 'Inter', sans-serif;
12
+ background: #0c1222;
13
+ overflow: hidden;
14
+ }
15
+ .presentation {
16
+ width: 100vw;
17
+ height: 100vh;
18
+ display: flex;
19
+ align-items: center;
20
+ justify-content: center;
21
+ }
22
+ .slide-container {
23
+ width: 1280px;
24
+ height: 720px;
25
+ transform-origin: center center;
26
+ position: relative;
27
+ }
28
+ .slide {
29
+ position: absolute;
30
+ top: 0;
31
+ left: 0;
32
+ width: 100%;
33
+ height: 100%;
34
+ opacity: 0;
35
+ transform: translateX(100px);
36
+ transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
37
+ pointer-events: none;
38
+ }
39
+ .slide.active {
40
+ opacity: 1;
41
+ transform: translateX(0);
42
+ pointer-events: auto;
43
+ }
44
+ .slide.exit {
45
+ opacity: 0;
46
+ transform: translateX(-100px);
47
+ }
48
+ .controls {
49
+ position: fixed;
50
+ bottom: 30px;
51
+ left: 50%;
52
+ transform: translateX(-50%);
53
+ display: flex;
54
+ gap: 12px;
55
+ z-index: 1000;
56
+ }
57
+ .control-btn {
58
+ width: 48px;
59
+ height: 48px;
60
+ border-radius: 12px;
61
+ border: 1px solid #64748b30;
62
+ background: #131c31;
63
+ color: #f1f5f9;
64
+ cursor: pointer;
65
+ display: flex;
66
+ align-items: center;
67
+ justify-content: center;
68
+ transition: all 0.2s ease;
69
+ font-size: 18px;
70
+ }
71
+ .control-btn:hover {
72
+ background: #0ea5e9;
73
+ color: #0c1222;
74
+ transform: scale(1.1);
75
+ }
76
+ .control-btn:active {
77
+ transform: scale(0.95);
78
+ }
79
+ .progress {
80
+ position: fixed;
81
+ bottom: 0;
82
+ left: 0;
83
+ height: 4px;
84
+ background: linear-gradient(90deg, #0ea5e9, #06b6d4);
85
+ transition: width 0.3s ease;
86
+ }
87
+ .slide-counter {
88
+ position: fixed;
89
+ bottom: 40px;
90
+ right: 30px;
91
+ font-size: 14px;
92
+ color: #64748b;
93
+ }
94
+ .slide-thumbnails {
95
+ position: fixed;
96
+ bottom: 100px;
97
+ left: 50%;
98
+ transform: translateX(-50%);
99
+ display: flex;
100
+ gap: 8px;
101
+ opacity: 0;
102
+ transition: opacity 0.3s ease;
103
+ }
104
+ .slide-thumbnails.visible {
105
+ opacity: 1;
106
+ }
107
+ .thumbnail {
108
+ width: 80px;
109
+ height: 45px;
110
+ border: 2px solid #64748b30;
111
+ border-radius: 6px;
112
+ cursor: pointer;
113
+ transition: all 0.2s ease;
114
+ overflow: hidden;
115
+ }
116
+ .thumbnail:hover {
117
+ border-color: #0ea5e9;
118
+ transform: scale(1.1);
119
+ }
120
+ .thumbnail.active {
121
+ border-color: #0ea5e9;
122
+ box-shadow: 0 0 10px #0ea5e940;
123
+ }
124
+ .thumbnail iframe {
125
+ width: 1280px;
126
+ height: 720px;
127
+ transform: scale(0.0625);
128
+ transform-origin: top left;
129
+ pointer-events: none;
130
+ }
131
+ .slide-number {
132
+ position: fixed;
133
+ top: 30px;
134
+ left: 50%;
135
+ transform: translateX(-50%);
136
+ font-size: 14px;
137
+ color: #64748b;
138
+ background: #131c3180;
139
+ padding: 8px 16px;
140
+ border-radius: 20px;
141
+ backdrop-filter: blur(10px);
142
+ }
143
+ .minimap {
144
+ position: fixed;
145
+ top: 30px;
146
+ right: 30px;
147
+ display: flex;
148
+ flex-direction: column;
149
+ gap: 4px;
150
+ }
151
+ .minimap-dot {
152
+ width: 8px;
153
+ height: 8px;
154
+ border-radius: 50%;
155
+ background: #64748b40;
156
+ cursor: pointer;
157
+ transition: all 0.2s ease;
158
+ }
159
+ .minimap-dot:hover {
160
+ background: #0ea5e9;
161
+ transform: scale(1.5);
162
+ }
163
+ .minimap-dot.active {
164
+ background: #0ea5e9;
165
+ }
166
+ </style>
167
+ </head>
168
+ <body>
169
+ <div class="presentation">
170
+ <div class="slide-container" id="slideContainer">
171
+
172
+ <div class="slide active" id="slide1">
173
+ <iframe src="slide-01.html" width="1280" height="720" frameborder="0" style="border: none;"></iframe>
174
+ </div>
175
+ <div class="slide " id="slide2">
176
+ <iframe src="slide-02.html" width="1280" height="720" frameborder="0" style="border: none;"></iframe>
177
+ </div>
178
+ <div class="slide " id="slide3">
179
+ <iframe src="slide-03.html" width="1280" height="720" frameborder="0" style="border: none;"></iframe>
180
+ </div>
181
+ <div class="slide " id="slide4">
182
+ <iframe src="slide-04.html" width="1280" height="720" frameborder="0" style="border: none;"></iframe>
183
+ </div>
184
+ <div class="slide " id="slide5">
185
+ <iframe src="slide-05.html" width="1280" height="720" frameborder="0" style="border: none;"></iframe>
186
+ </div>
187
+ <div class="slide " id="slide6">
188
+ <iframe src="slide-06.html" width="1280" height="720" frameborder="0" style="border: none;"></iframe>
189
+ </div>
190
+ <div class="slide " id="slide7">
191
+ <iframe src="slide-07.html" width="1280" height="720" frameborder="0" style="border: none;"></iframe>
192
+ </div>
193
+ <div class="slide " id="slide8">
194
+ <iframe src="slide-08.html" width="1280" height="720" frameborder="0" style="border: none;"></iframe>
195
+ </div>
196
+ </div>
197
+ </div>
198
+
199
+ <div class="controls">
200
+ <button class="control-btn" onclick="prevSlide()" title="Предыдущий слайд">←</button>
201
+ <button class="control-btn" onclick="nextSlide()" title="Следующий слайд">→</button>
202
+ <button class="control-btn" onclick="toggleFullscreen()" title="Полноэкранный режим">⛶</button>
203
+ <button class="control-btn" onclick="toggleThumbnails()" title="Показать превью">📷</button>
204
+ <button class="control-btn" onclick="toggleMinimap()" title="Мини-карта">🗺</button>
205
+ </div>
206
+
207
+ <div class="progress" id="progress"></div>
208
+ <div class="slide-counter" id="slideCounter">1 / 8</div>
209
+ <div class="slide-number" id="slideNumber">1</div>
210
+
211
+ <div class="slide-thumbnails" id="thumbnails">
212
+
213
+ <div class="thumbnail active" onclick="goToSlide(1)">
214
+ <iframe src="slide-01.html" width="1280" height="720" frameborder="0"></iframe>
215
+ </div>
216
+ <div class="thumbnail " onclick="goToSlide(2)">
217
+ <iframe src="slide-02.html" width="1280" height="720" frameborder="0"></iframe>
218
+ </div>
219
+ <div class="thumbnail " onclick="goToSlide(3)">
220
+ <iframe src="slide-03.html" width="1280" height="720" frameborder="0"></iframe>
221
+ </div>
222
+ <div class="thumbnail " onclick="goToSlide(4)">
223
+ <iframe src="slide-04.html" width="1280" height="720" frameborder="0"></iframe>
224
+ </div>
225
+ <div class="thumbnail " onclick="goToSlide(5)">
226
+ <iframe src="slide-05.html" width="1280" height="720" frameborder="0"></iframe>
227
+ </div>
228
+ <div class="thumbnail " onclick="goToSlide(6)">
229
+ <iframe src="slide-06.html" width="1280" height="720" frameborder="0"></iframe>
230
+ </div>
231
+ <div class="thumbnail " onclick="goToSlide(7)">
232
+ <iframe src="slide-07.html" width="1280" height="720" frameborder="0"></iframe>
233
+ </div>
234
+ <div class="thumbnail " onclick="goToSlide(8)">
235
+ <iframe src="slide-08.html" width="1280" height="720" frameborder="0"></iframe>
236
+ </div>
237
+ </div>
238
+
239
+ <div class="minimap" id="minimap">
240
+
241
+ <div class="minimap-dot active" onclick="goToSlide(1)" title="Слайд 1"></div>
242
+ <div class="minimap-dot " onclick="goToSlide(2)" title="Слайд 2"></div>
243
+ <div class="minimap-dot " onclick="goToSlide(3)" title="Слайд 3"></div>
244
+ <div class="minimap-dot " onclick="goToSlide(4)" title="Слайд 4"></div>
245
+ <div class="minimap-dot " onclick="goToSlide(5)" title="Слайд 5"></div>
246
+ <div class="minimap-dot " onclick="goToSlide(6)" title="Слайд 6"></div>
247
+ <div class="minimap-dot " onclick="goToSlide(7)" title="Слайд 7"></div>
248
+ <div class="minimap-dot " onclick="goToSlide(8)" title="Слайд 8"></div>
249
+ </div>
250
+
251
+ <script>
252
+ let currentSlide = 1;
253
+ const totalSlides = 8;
254
+ let thumbnailsVisible = false;
255
+ let minimapVisible = false;
256
+
257
+ function showSlide(n, direction = 'next') {
258
+ const currentEl = document.getElementById('slide' + currentSlide);
259
+ const nextEl = document.getElementById('slide' + n);
260
+
261
+ if (currentEl) {
262
+ currentEl.classList.remove('active');
263
+ currentEl.classList.add('exit');
264
+ setTimeout(() => currentEl.classList.remove('exit'), 500);
265
+ }
266
+
267
+ if (nextEl) {
268
+ nextEl.style.transform = direction === 'next' ? 'translateX(100px)' : 'translateX(-100px)';
269
+ setTimeout(() => {
270
+ nextEl.classList.add('active');
271
+ nextEl.style.transform = '';
272
+ }, 50);
273
+ }
274
+
275
+ currentSlide = n;
276
+ updateUI();
277
+ }
278
+
279
+ function updateUI() {
280
+ document.getElementById('slideCounter').textContent = currentSlide + ' / ' + totalSlides;
281
+ document.getElementById('slideNumber').textContent = currentSlide;
282
+ document.getElementById('progress').style.width = ((currentSlide / totalSlides) * 100) + '%';
283
+
284
+ // Update thumbnails
285
+ document.querySelectorAll('.thumbnail').forEach((t, i) => {
286
+ t.classList.toggle('active', i + 1 === currentSlide);
287
+ });
288
+
289
+ // Update minimap
290
+ document.querySelectorAll('.minimap-dot').forEach((d, i) => {
291
+ d.classList.toggle('active', i + 1 === currentSlide);
292
+ });
293
+ }
294
+
295
+ function nextSlide() {
296
+ if (currentSlide < totalSlides) {
297
+ showSlide(currentSlide + 1, 'next');
298
+ }
299
+ }
300
+
301
+ function prevSlide() {
302
+ if (currentSlide > 1) {
303
+ showSlide(currentSlide - 1, 'prev');
304
+ }
305
+ }
306
+
307
+ function goToSlide(n) {
308
+ if (n >= 1 && n <= totalSlides) {
309
+ showSlide(n, n > currentSlide ? 'next' : 'prev');
310
+ }
311
+ }
312
+
313
+ function toggleFullscreen() {
314
+ if (!document.fullscreenElement) {
315
+ document.documentElement.requestFullscreen();
316
+ } else {
317
+ document.exitFullscreen();
318
+ }
319
+ }
320
+
321
+ function toggleThumbnails() {
322
+ thumbnailsVisible = !thumbnailsVisible;
323
+ document.getElementById('thumbnails').classList.toggle('visible', thumbnailsVisible);
324
+ }
325
+
326
+ function toggleMinimap() {
327
+ minimapVisible = !minimapVisible;
328
+ document.getElementById('minimap').style.display = minimapVisible ? 'flex' : 'none';
329
+ }
330
+
331
+ // Keyboard navigation
332
+ document.addEventListener('keydown', (e) => {
333
+ if (e.key === 'ArrowRight' || e.key === ' ') nextSlide();
334
+ if (e.key === 'ArrowLeft') prevSlide();
335
+ if (e.key === 'f') toggleFullscreen();
336
+ if (e.key === 't') toggleThumbnails();
337
+ if (e.key === 'm') toggleMinimap();
338
+ if (e.key === 'Home') goToSlide(1);
339
+ if (e.key === 'End') goToSlide(totalSlides);
340
+ });
341
+
342
+ // Touch support
343
+ let touchStartX = 0;
344
+ document.addEventListener('touchstart', (e) => {
345
+ touchStartX = e.touches[0].clientX;
346
+ });
347
+
348
+ document.addEventListener('touchend', (e) => {
349
+ const touchEndX = e.changedTouches[0].clientX;
350
+ const diff = touchStartX - touchEndX;
351
+
352
+ if (Math.abs(diff) > 50) {
353
+ if (diff > 0) nextSlide();
354
+ else prevSlide();
355
+ }
356
+ });
357
+
358
+ // Scale to fit
359
+ function scalePresentation() {
360
+ const container = document.getElementById('slideContainer');
361
+ const scaleX = window.innerWidth / 1280;
362
+ const scaleY = window.innerHeight / 720;
363
+ const scale = Math.min(scaleX, scaleY) * 0.9;
364
+ container.style.transform = 'scale(' + scale + ')';
365
+ }
366
+
367
+ window.addEventListener('resize', scalePresentation);
368
+ scalePresentation();
369
+ </script>
370
+ </body>
371
+ </html>
@@ -0,0 +1,81 @@
1
+ <!DOCTYPE html>
2
+ <html lang="ru">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Версия для печати</title>
7
+ <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
8
+ <style>
9
+ * { margin: 0; padding: 0; box-sizing: border-box; }
10
+ body {
11
+ font-family: 'Inter', sans-serif;
12
+ background: #ffffff;
13
+ color: #000000;
14
+ }
15
+ .slide {
16
+ width: 1280px;
17
+ height: 720px;
18
+ margin: 20px auto;
19
+ border: 1px solid #e5e7eb;
20
+ page-break-after: always;
21
+ position: relative;
22
+ overflow: hidden;
23
+ }
24
+ .slide:last-child {
25
+ page-break-after: avoid;
26
+ }
27
+ .slide-number {
28
+ position: absolute;
29
+ bottom: 20px;
30
+ right: 20px;
31
+ font-size: 12px;
32
+ color: #9ca3af;
33
+ }
34
+ @media print {
35
+ body {
36
+ background: white;
37
+ }
38
+ .slide {
39
+ border: none;
40
+ margin: 0;
41
+ page-break-after: always;
42
+ }
43
+ }
44
+ </style>
45
+ </head>
46
+ <body>
47
+
48
+ <div class="slide">
49
+ <iframe src="slide-01.html" width="1280" height="720" frameborder="0" style="border: none;"></iframe>
50
+ <div class="slide-number">1 / 8</div>
51
+ </div>
52
+ <div class="slide">
53
+ <iframe src="slide-02.html" width="1280" height="720" frameborder="0" style="border: none;"></iframe>
54
+ <div class="slide-number">2 / 8</div>
55
+ </div>
56
+ <div class="slide">
57
+ <iframe src="slide-03.html" width="1280" height="720" frameborder="0" style="border: none;"></iframe>
58
+ <div class="slide-number">3 / 8</div>
59
+ </div>
60
+ <div class="slide">
61
+ <iframe src="slide-04.html" width="1280" height="720" frameborder="0" style="border: none;"></iframe>
62
+ <div class="slide-number">4 / 8</div>
63
+ </div>
64
+ <div class="slide">
65
+ <iframe src="slide-05.html" width="1280" height="720" frameborder="0" style="border: none;"></iframe>
66
+ <div class="slide-number">5 / 8</div>
67
+ </div>
68
+ <div class="slide">
69
+ <iframe src="slide-06.html" width="1280" height="720" frameborder="0" style="border: none;"></iframe>
70
+ <div class="slide-number">6 / 8</div>
71
+ </div>
72
+ <div class="slide">
73
+ <iframe src="slide-07.html" width="1280" height="720" frameborder="0" style="border: none;"></iframe>
74
+ <div class="slide-number">7 / 8</div>
75
+ </div>
76
+ <div class="slide">
77
+ <iframe src="slide-08.html" width="1280" height="720" frameborder="0" style="border: none;"></iframe>
78
+ <div class="slide-number">8 / 8</div>
79
+ </div>
80
+ </body>
81
+ </html>
@@ -0,0 +1,98 @@
1
+
2
+ <!DOCTYPE html>
3
+ <html lang="ru">
4
+ <head>
5
+ <meta charset="UTF-8">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <title>Advanced Features Demo</title>
8
+ <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
9
+ <style>
10
+ * { margin: 0; padding: 0; box-sizing: border-box; }
11
+ body {
12
+ font-family: 'Inter', sans-serif;
13
+ background: #0c1222;
14
+ color: #f1f5f9;
15
+ min-height: 100vh;
16
+ display: flex;
17
+ align-items: center;
18
+ justify-content: center;
19
+ }
20
+ .slide {
21
+ width: 1280px;
22
+ height: 720px;
23
+ padding: 80px;
24
+ display: flex;
25
+ flex-direction: column;
26
+ justify-content: center;
27
+ position: relative;
28
+ overflow: hidden;
29
+ }
30
+ .slide::before {
31
+ content: '';
32
+ position: absolute;
33
+ top: -50%;
34
+ right: -50%;
35
+ width: 100%;
36
+ height: 100%;
37
+ background: radial-gradient(circle, #0ea5e915 0%, transparent 70%);
38
+ }
39
+ .slide::after {
40
+ content: '';
41
+ position: absolute;
42
+ bottom: -30%;
43
+ left: -30%;
44
+ width: 80%;
45
+ height: 80%;
46
+ background: radial-gradient(circle, #06b6d410 0%, transparent 70%);
47
+ }
48
+ .content { position: relative; z-index: 1; }
49
+ h1 {
50
+ font-size: 72px;
51
+ font-weight: 800;
52
+ line-height: 1.1;
53
+ margin-bottom: 24px;
54
+ background: linear-gradient(135deg, #f1f5f9 0%, #64748b 100%);
55
+ -webkit-background-clip: text;
56
+ -webkit-text-fill-color: transparent;
57
+ }
58
+ .subtitle {
59
+ font-size: 28px;
60
+ color: #64748b;
61
+ font-weight: 400;
62
+ max-width: 600px;
63
+ }
64
+ .author {
65
+ position: absolute;
66
+ bottom: 60px;
67
+ left: 80px;
68
+ font-size: 18px;
69
+ color: #64748b;
70
+ }
71
+ .date {
72
+ position: absolute;
73
+ bottom: 60px;
74
+ right: 80px;
75
+ font-size: 16px;
76
+ color: #64748b;
77
+ }
78
+ .accent-line {
79
+ width: 80px;
80
+ height: 4px;
81
+ background: linear-gradient(90deg, #0ea5e9, #06b6d4);
82
+ border-radius: 2px;
83
+ margin-bottom: 32px;
84
+ }
85
+ </style>
86
+ </head>
87
+ <body>
88
+ <div class="slide">
89
+ <div class="content">
90
+ <div class="accent-line"></div>
91
+ <h1>Advanced Features Demo</h1>
92
+ <p class="subtitle"></p>
93
+ </div>
94
+ <div class="author">Stella Team</div>
95
+ <div class="date">10.07.2026</div>
96
+ </div>
97
+ </body>
98
+ </html>