stella-coder 3.9.1 → 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 +12 -3
  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,350 @@
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>Test Presentation</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
+ 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 #73737330;
62
+ background: #fafafa;
63
+ color: #171717;
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: #000000;
73
+ color: #ffffff;
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, #000000, #525252);
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: #737373;
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 #73737330;
111
+ border-radius: 6px;
112
+ cursor: pointer;
113
+ transition: all 0.2s ease;
114
+ overflow: hidden;
115
+ }
116
+ .thumbnail:hover {
117
+ border-color: #000000;
118
+ transform: scale(1.1);
119
+ }
120
+ .thumbnail.active {
121
+ border-color: #000000;
122
+ box-shadow: 0 0 10px #00000040;
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: #737373;
138
+ background: #fafafa80;
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: #73737340;
156
+ cursor: pointer;
157
+ transition: all 0.2s ease;
158
+ }
159
+ .minimap-dot:hover {
160
+ background: #000000;
161
+ transform: scale(1.5);
162
+ }
163
+ .minimap-dot.active {
164
+ background: #000000;
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>
188
+ </div>
189
+
190
+ <div class="controls">
191
+ <button class="control-btn" onclick="prevSlide()" title="Предыдущий слайд">←</button>
192
+ <button class="control-btn" onclick="nextSlide()" title="Следующий слайд">→</button>
193
+ <button class="control-btn" onclick="toggleFullscreen()" title="Полноэкранный режим">⛶</button>
194
+ <button class="control-btn" onclick="toggleThumbnails()" title="Показать превью">📷</button>
195
+ <button class="control-btn" onclick="toggleMinimap()" title="Мини-карта">🗺</button>
196
+ </div>
197
+
198
+ <div class="progress" id="progress"></div>
199
+ <div class="slide-counter" id="slideCounter">1 / 5</div>
200
+ <div class="slide-number" id="slideNumber">1</div>
201
+
202
+ <div class="slide-thumbnails" id="thumbnails">
203
+
204
+ <div class="thumbnail active" onclick="goToSlide(1)">
205
+ <iframe src="slide-01.html" width="1280" height="720" frameborder="0"></iframe>
206
+ </div>
207
+ <div class="thumbnail " onclick="goToSlide(2)">
208
+ <iframe src="slide-02.html" width="1280" height="720" frameborder="0"></iframe>
209
+ </div>
210
+ <div class="thumbnail " onclick="goToSlide(3)">
211
+ <iframe src="slide-03.html" width="1280" height="720" frameborder="0"></iframe>
212
+ </div>
213
+ <div class="thumbnail " onclick="goToSlide(4)">
214
+ <iframe src="slide-04.html" width="1280" height="720" frameborder="0"></iframe>
215
+ </div>
216
+ <div class="thumbnail " onclick="goToSlide(5)">
217
+ <iframe src="slide-05.html" width="1280" height="720" frameborder="0"></iframe>
218
+ </div>
219
+ </div>
220
+
221
+ <div class="minimap" id="minimap">
222
+
223
+ <div class="minimap-dot active" onclick="goToSlide(1)" title="Слайд 1"></div>
224
+ <div class="minimap-dot " onclick="goToSlide(2)" title="Слайд 2"></div>
225
+ <div class="minimap-dot " onclick="goToSlide(3)" title="Слайд 3"></div>
226
+ <div class="minimap-dot " onclick="goToSlide(4)" title="Слайд 4"></div>
227
+ <div class="minimap-dot " onclick="goToSlide(5)" title="Слайд 5"></div>
228
+ </div>
229
+
230
+ <script>
231
+ let currentSlide = 1;
232
+ const totalSlides = 5;
233
+ let thumbnailsVisible = false;
234
+ let minimapVisible = false;
235
+
236
+ function showSlide(n, direction = 'next') {
237
+ const currentEl = document.getElementById('slide' + currentSlide);
238
+ const nextEl = document.getElementById('slide' + n);
239
+
240
+ if (currentEl) {
241
+ currentEl.classList.remove('active');
242
+ currentEl.classList.add('exit');
243
+ setTimeout(() => currentEl.classList.remove('exit'), 500);
244
+ }
245
+
246
+ if (nextEl) {
247
+ nextEl.style.transform = direction === 'next' ? 'translateX(100px)' : 'translateX(-100px)';
248
+ setTimeout(() => {
249
+ nextEl.classList.add('active');
250
+ nextEl.style.transform = '';
251
+ }, 50);
252
+ }
253
+
254
+ currentSlide = n;
255
+ updateUI();
256
+ }
257
+
258
+ function updateUI() {
259
+ document.getElementById('slideCounter').textContent = currentSlide + ' / ' + totalSlides;
260
+ document.getElementById('slideNumber').textContent = currentSlide;
261
+ document.getElementById('progress').style.width = ((currentSlide / totalSlides) * 100) + '%';
262
+
263
+ // Update thumbnails
264
+ document.querySelectorAll('.thumbnail').forEach((t, i) => {
265
+ t.classList.toggle('active', i + 1 === currentSlide);
266
+ });
267
+
268
+ // Update minimap
269
+ document.querySelectorAll('.minimap-dot').forEach((d, i) => {
270
+ d.classList.toggle('active', i + 1 === currentSlide);
271
+ });
272
+ }
273
+
274
+ function nextSlide() {
275
+ if (currentSlide < totalSlides) {
276
+ showSlide(currentSlide + 1, 'next');
277
+ }
278
+ }
279
+
280
+ function prevSlide() {
281
+ if (currentSlide > 1) {
282
+ showSlide(currentSlide - 1, 'prev');
283
+ }
284
+ }
285
+
286
+ function goToSlide(n) {
287
+ if (n >= 1 && n <= totalSlides) {
288
+ showSlide(n, n > currentSlide ? 'next' : 'prev');
289
+ }
290
+ }
291
+
292
+ function toggleFullscreen() {
293
+ if (!document.fullscreenElement) {
294
+ document.documentElement.requestFullscreen();
295
+ } else {
296
+ document.exitFullscreen();
297
+ }
298
+ }
299
+
300
+ function toggleThumbnails() {
301
+ thumbnailsVisible = !thumbnailsVisible;
302
+ document.getElementById('thumbnails').classList.toggle('visible', thumbnailsVisible);
303
+ }
304
+
305
+ function toggleMinimap() {
306
+ minimapVisible = !minimapVisible;
307
+ document.getElementById('minimap').style.display = minimapVisible ? 'flex' : 'none';
308
+ }
309
+
310
+ // Keyboard navigation
311
+ document.addEventListener('keydown', (e) => {
312
+ if (e.key === 'ArrowRight' || e.key === ' ') nextSlide();
313
+ if (e.key === 'ArrowLeft') prevSlide();
314
+ if (e.key === 'f') toggleFullscreen();
315
+ if (e.key === 't') toggleThumbnails();
316
+ if (e.key === 'm') toggleMinimap();
317
+ if (e.key === 'Home') goToSlide(1);
318
+ if (e.key === 'End') goToSlide(totalSlides);
319
+ });
320
+
321
+ // Touch support
322
+ let touchStartX = 0;
323
+ document.addEventListener('touchstart', (e) => {
324
+ touchStartX = e.touches[0].clientX;
325
+ });
326
+
327
+ document.addEventListener('touchend', (e) => {
328
+ const touchEndX = e.changedTouches[0].clientX;
329
+ const diff = touchStartX - touchEndX;
330
+
331
+ if (Math.abs(diff) > 50) {
332
+ if (diff > 0) nextSlide();
333
+ else prevSlide();
334
+ }
335
+ });
336
+
337
+ // Scale to fit
338
+ function scalePresentation() {
339
+ const container = document.getElementById('slideContainer');
340
+ const scaleX = window.innerWidth / 1280;
341
+ const scaleY = window.innerHeight / 720;
342
+ const scale = Math.min(scaleX, scaleY) * 0.9;
343
+ container.style.transform = 'scale(' + scale + ')';
344
+ }
345
+
346
+ window.addEventListener('resize', scalePresentation);
347
+ scalePresentation();
348
+ </script>
349
+ </body>
350
+ </html>
@@ -0,0 +1,69 @@
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 / 5</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 / 5</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 / 5</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 / 5</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 / 5</div>
67
+ </div>
68
+ </body>
69
+ </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>Test Presentation</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: #ffffff;
14
+ color: #171717;
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, #00000015 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, #52525210 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, #171717 0%, #737373 100%);
55
+ -webkit-background-clip: text;
56
+ -webkit-text-fill-color: transparent;
57
+ }
58
+ .subtitle {
59
+ font-size: 28px;
60
+ color: #737373;
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: #737373;
70
+ }
71
+ .date {
72
+ position: absolute;
73
+ bottom: 60px;
74
+ right: 80px;
75
+ font-size: 16px;
76
+ color: #737373;
77
+ }
78
+ .accent-line {
79
+ width: 80px;
80
+ height: 4px;
81
+ background: linear-gradient(90deg, #000000, #525252);
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>Test Presentation</h1>
92
+ <p class="subtitle"></p>
93
+ </div>
94
+ <div class="author">Test Author</div>
95
+ <div class="date">10.07.2026</div>
96
+ </div>
97
+ </body>
98
+ </html>
@@ -0,0 +1,101 @@
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
+ <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&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: #171717;
14
+ min-height: 100vh;
15
+ display: flex;
16
+ align-items: center;
17
+ justify-content: center;
18
+ }
19
+ .slide {
20
+ width: 1280px;
21
+ height: 720px;
22
+ padding: 80px;
23
+ display: flex;
24
+ flex-direction: column;
25
+ justify-content: center;
26
+ position: relative;
27
+ }
28
+ .slide-number {
29
+ position: absolute;
30
+ top: 40px;
31
+ right: 60px;
32
+ font-size: 14px;
33
+ color: #737373;
34
+ }
35
+ h2 {
36
+ font-size: 48px;
37
+ font-weight: 700;
38
+ margin-bottom: 40px;
39
+ color: #171717;
40
+ }
41
+ .content-grid {
42
+ display: grid;
43
+ grid-template-columns: 1fr 1fr;
44
+ gap: 40px;
45
+ }
46
+ .content-item {
47
+ padding: 24px;
48
+ background: #fafafa;
49
+ border-radius: 16px;
50
+ border: 1px solid #73737320;
51
+ }
52
+ .content-item h3 {
53
+ font-size: 20px;
54
+ font-weight: 600;
55
+ margin-bottom: 12px;
56
+ color: #000000;
57
+ }
58
+ .content-item p {
59
+ font-size: 16px;
60
+ line-height: 1.6;
61
+ color: #737373;
62
+ }
63
+ .bullet-list {
64
+ list-style: none;
65
+ padding: 0;
66
+ }
67
+ .bullet-list li {
68
+ font-size: 20px;
69
+ line-height: 1.8;
70
+ padding-left: 24px;
71
+ position: relative;
72
+ color: #171717;
73
+ }
74
+ .bullet-list li::before {
75
+ content: '';
76
+ position: absolute;
77
+ left: 0;
78
+ top: 50%;
79
+ transform: translateY(-50%);
80
+ width: 8px;
81
+ height: 8px;
82
+ background: #000000;
83
+ border-radius: 50%;
84
+ }
85
+ </style>
86
+ </head>
87
+ <body>
88
+ <div class="slide">
89
+ <div class="slide-number">1 / 3</div>
90
+ <h2>Введение</h2>
91
+
92
+ <ul class="bullet-list">
93
+ <li>Что такое Test Presentation</li>
94
+ <li>Актуальность темы</li>
95
+ <li>Цели и задачи работы</li>
96
+ <li>Методы исследования</li>
97
+ </ul>
98
+
99
+ </div>
100
+ </body>
101
+ </html>
@@ -0,0 +1,64 @@
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
+ <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: #171717;
14
+ min-height: 100vh;
15
+ display: flex;
16
+ align-items: center;
17
+ justify-content: center;
18
+ }
19
+ .slide {
20
+ width: 1280px;
21
+ height: 720px;
22
+ padding: 80px;
23
+ display: flex;
24
+ flex-direction: column;
25
+ justify-content: center;
26
+ align-items: center;
27
+ text-align: center;
28
+ position: relative;
29
+ }
30
+ .quote-mark {
31
+ font-size: 120px;
32
+ color: #000000;
33
+ opacity: 0.3;
34
+ line-height: 1;
35
+ margin-bottom: -40px;
36
+ }
37
+ .quote-text {
38
+ font-size: 36px;
39
+ font-weight: 500;
40
+ line-height: 1.6;
41
+ max-width: 900px;
42
+ margin-bottom: 40px;
43
+ }
44
+ .author {
45
+ font-size: 18px;
46
+ color: #737373;
47
+ }
48
+ .accent-line {
49
+ width: 60px;
50
+ height: 3px;
51
+ background: #000000;
52
+ margin-bottom: 40px;
53
+ }
54
+ </style>
55
+ </head>
56
+ <body>
57
+ <div class="slide">
58
+ <div class="quote-mark">"</div>
59
+ <div class="accent-line"></div>
60
+ <p class="quote-text">Test Presentation — это ключ к успешному развитию в современном мире.</p>
61
+ <p class="author">— Исследователь</p>
62
+ </div>
63
+ </body>
64
+ </html>