presently 0.1.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 (215) hide show
  1. checksums.yaml +7 -0
  2. data/bin/presently +13 -0
  3. data/lib/presently/application.rb +104 -0
  4. data/lib/presently/clock.rb +77 -0
  5. data/lib/presently/display_view.rb +73 -0
  6. data/lib/presently/environment/application.rb +62 -0
  7. data/lib/presently/page.rb +38 -0
  8. data/lib/presently/page.xrb +31 -0
  9. data/lib/presently/presentation.rb +72 -0
  10. data/lib/presently/presentation_controller.rb +181 -0
  11. data/lib/presently/presenter_view.rb +264 -0
  12. data/lib/presently/slide.rb +148 -0
  13. data/lib/presently/slide_view.rb +92 -0
  14. data/lib/presently/state.rb +66 -0
  15. data/lib/presently/version.rb +9 -0
  16. data/lib/presently.rb +9 -0
  17. data/license.md +21 -0
  18. data/public/_components/@socketry/syntax/Syntax/CodeElement.js +337 -0
  19. data/public/_components/@socketry/syntax/Syntax/Errors.js +52 -0
  20. data/public/_components/@socketry/syntax/Syntax/Language/apache.js +49 -0
  21. data/public/_components/@socketry/syntax/Syntax/Language/applescript.js +157 -0
  22. data/public/_components/@socketry/syntax/Syntax/Language/assembly.js +42 -0
  23. data/public/_components/@socketry/syntax/Syntax/Language/bash-script.js +108 -0
  24. data/public/_components/@socketry/syntax/Syntax/Language/bash.js +32 -0
  25. data/public/_components/@socketry/syntax/Syntax/Language/basic.js +232 -0
  26. data/public/_components/@socketry/syntax/Syntax/Language/c++.js +1 -0
  27. data/public/_components/@socketry/syntax/Syntax/Language/c.js +1 -0
  28. data/public/_components/@socketry/syntax/Syntax/Language/clang.js +201 -0
  29. data/public/_components/@socketry/syntax/Syntax/Language/cpp.js +1 -0
  30. data/public/_components/@socketry/syntax/Syntax/Language/csharp.js +166 -0
  31. data/public/_components/@socketry/syntax/Syntax/Language/css.js +244 -0
  32. data/public/_components/@socketry/syntax/Syntax/Language/diff.js +24 -0
  33. data/public/_components/@socketry/syntax/Syntax/Language/go.js +135 -0
  34. data/public/_components/@socketry/syntax/Syntax/Language/haskell.js +110 -0
  35. data/public/_components/@socketry/syntax/Syntax/Language/html.js +69 -0
  36. data/public/_components/@socketry/syntax/Syntax/Language/io.js +68 -0
  37. data/public/_components/@socketry/syntax/Syntax/Language/java.js +134 -0
  38. data/public/_components/@socketry/syntax/Syntax/Language/javascript.js +89 -0
  39. data/public/_components/@socketry/syntax/Syntax/Language/json.js +36 -0
  40. data/public/_components/@socketry/syntax/Syntax/Language/lisp.js +38 -0
  41. data/public/_components/@socketry/syntax/Syntax/Language/lua.js +87 -0
  42. data/public/_components/@socketry/syntax/Syntax/Language/markdown.js +112 -0
  43. data/public/_components/@socketry/syntax/Syntax/Language/nginx.js +37 -0
  44. data/public/_components/@socketry/syntax/Syntax/Language/objective-c.js +1 -0
  45. data/public/_components/@socketry/syntax/Syntax/Language/ocaml.js +225 -0
  46. data/public/_components/@socketry/syntax/Syntax/Language/pascal.js +166 -0
  47. data/public/_components/@socketry/syntax/Syntax/Language/patch.js +2 -0
  48. data/public/_components/@socketry/syntax/Syntax/Language/perl5.js +317 -0
  49. data/public/_components/@socketry/syntax/Syntax/Language/php-script.js +112 -0
  50. data/public/_components/@socketry/syntax/Syntax/Language/php.js +18 -0
  51. data/public/_components/@socketry/syntax/Syntax/Language/plain.js +20 -0
  52. data/public/_components/@socketry/syntax/Syntax/Language/protobuf.js +77 -0
  53. data/public/_components/@socketry/syntax/Syntax/Language/python.js +208 -0
  54. data/public/_components/@socketry/syntax/Syntax/Language/ruby.js +124 -0
  55. data/public/_components/@socketry/syntax/Syntax/Language/scala.js +81 -0
  56. data/public/_components/@socketry/syntax/Syntax/Language/smalltalk.js +30 -0
  57. data/public/_components/@socketry/syntax/Syntax/Language/sql.js +865 -0
  58. data/public/_components/@socketry/syntax/Syntax/Language/super-collider.js +70 -0
  59. data/public/_components/@socketry/syntax/Syntax/Language/swift.js +176 -0
  60. data/public/_components/@socketry/syntax/Syntax/Language/xml.js +76 -0
  61. data/public/_components/@socketry/syntax/Syntax/Language/xrb.js +33 -0
  62. data/public/_components/@socketry/syntax/Syntax/Language/yaml.js +29 -0
  63. data/public/_components/@socketry/syntax/Syntax/Language.js +276 -0
  64. data/public/_components/@socketry/syntax/Syntax/Loader.js +78 -0
  65. data/public/_components/@socketry/syntax/Syntax/Match.js +546 -0
  66. data/public/_components/@socketry/syntax/Syntax/Rule.js +306 -0
  67. data/public/_components/@socketry/syntax/Syntax.js +356 -0
  68. data/public/_components/@socketry/syntax/bin/syntax-ast.js +42 -0
  69. data/public/_components/@socketry/syntax/examples/_template.html +53 -0
  70. data/public/_components/@socketry/syntax/examples/apache.html +72 -0
  71. data/public/_components/@socketry/syntax/examples/applescript.html +72 -0
  72. data/public/_components/@socketry/syntax/examples/assembly.html +74 -0
  73. data/public/_components/@socketry/syntax/examples/bash.html +90 -0
  74. data/public/_components/@socketry/syntax/examples/basic.html +87 -0
  75. data/public/_components/@socketry/syntax/examples/c.html +141 -0
  76. data/public/_components/@socketry/syntax/examples/clang.html +202 -0
  77. data/public/_components/@socketry/syntax/examples/csharp.html +110 -0
  78. data/public/_components/@socketry/syntax/examples/css-colors.html +179 -0
  79. data/public/_components/@socketry/syntax/examples/custom-theme.html +155 -0
  80. data/public/_components/@socketry/syntax/examples/diff.html +142 -0
  81. data/public/_components/@socketry/syntax/examples/examples.css +216 -0
  82. data/public/_components/@socketry/syntax/examples/go.html +413 -0
  83. data/public/_components/@socketry/syntax/examples/haskell.html +373 -0
  84. data/public/_components/@socketry/syntax/examples/html.html +316 -0
  85. data/public/_components/@socketry/syntax/examples/index.html +97 -0
  86. data/public/_components/@socketry/syntax/examples/io.html +552 -0
  87. data/public/_components/@socketry/syntax/examples/java.html +786 -0
  88. data/public/_components/@socketry/syntax/examples/javascript.html +199 -0
  89. data/public/_components/@socketry/syntax/examples/json.html +150 -0
  90. data/public/_components/@socketry/syntax/examples/lisp.html +476 -0
  91. data/public/_components/@socketry/syntax/examples/lua.html +737 -0
  92. data/public/_components/@socketry/syntax/examples/markdown.html +121 -0
  93. data/public/_components/@socketry/syntax/examples/mixed.html +306 -0
  94. data/public/_components/@socketry/syntax/examples/nginx.html +554 -0
  95. data/public/_components/@socketry/syntax/examples/ocaml.html +596 -0
  96. data/public/_components/@socketry/syntax/examples/pascal.html +762 -0
  97. data/public/_components/@socketry/syntax/examples/perl5.html +488 -0
  98. data/public/_components/@socketry/syntax/examples/php-script.html +142 -0
  99. data/public/_components/@socketry/syntax/examples/php.html +95 -0
  100. data/public/_components/@socketry/syntax/examples/plain.html +222 -0
  101. data/public/_components/@socketry/syntax/examples/protobuf.html +405 -0
  102. data/public/_components/@socketry/syntax/examples/python.html +82 -0
  103. data/public/_components/@socketry/syntax/examples/readme.md +79 -0
  104. data/public/_components/@socketry/syntax/examples/ruby.html +58 -0
  105. data/public/_components/@socketry/syntax/examples/scala.html +41 -0
  106. data/public/_components/@socketry/syntax/examples/smalltalk.html +436 -0
  107. data/public/_components/@socketry/syntax/examples/sql.html +373 -0
  108. data/public/_components/@socketry/syntax/examples/super-collider.html +55 -0
  109. data/public/_components/@socketry/syntax/examples/swift.html +176 -0
  110. data/public/_components/@socketry/syntax/examples/wrap-demo.html +103 -0
  111. data/public/_components/@socketry/syntax/examples/xml.html +112 -0
  112. data/public/_components/@socketry/syntax/examples/xrb.html +37 -0
  113. data/public/_components/@socketry/syntax/examples/yaml.html +72 -0
  114. data/public/_components/@socketry/syntax/license.md +21 -0
  115. data/public/_components/@socketry/syntax/package-lock.json +834 -0
  116. data/public/_components/@socketry/syntax/package.json +43 -0
  117. data/public/_components/@socketry/syntax/readme.md +162 -0
  118. data/public/_components/@socketry/syntax/test/Syntax/CodeElement.js +306 -0
  119. data/public/_components/@socketry/syntax/test/Syntax/ErrorHandling.js +85 -0
  120. data/public/_components/@socketry/syntax/test/Syntax/Language/apache.js +153 -0
  121. data/public/_components/@socketry/syntax/test/Syntax/Language/applescript.js +198 -0
  122. data/public/_components/@socketry/syntax/test/Syntax/Language/assembly.js +209 -0
  123. data/public/_components/@socketry/syntax/test/Syntax/Language/bash-script.js +225 -0
  124. data/public/_components/@socketry/syntax/test/Syntax/Language/bash.js +162 -0
  125. data/public/_components/@socketry/syntax/test/Syntax/Language/basic.js +265 -0
  126. data/public/_components/@socketry/syntax/test/Syntax/Language/clang.js +390 -0
  127. data/public/_components/@socketry/syntax/test/Syntax/Language/csharp.js +436 -0
  128. data/public/_components/@socketry/syntax/test/Syntax/Language/css.js +431 -0
  129. data/public/_components/@socketry/syntax/test/Syntax/Language/diff.js +206 -0
  130. data/public/_components/@socketry/syntax/test/Syntax/Language/go.js +386 -0
  131. data/public/_components/@socketry/syntax/test/Syntax/Language/haskell.js +454 -0
  132. data/public/_components/@socketry/syntax/test/Syntax/Language/html.js +111 -0
  133. data/public/_components/@socketry/syntax/test/Syntax/Language/io.js +229 -0
  134. data/public/_components/@socketry/syntax/test/Syntax/Language/java.js +362 -0
  135. data/public/_components/@socketry/syntax/test/Syntax/Language/javascript.js +101 -0
  136. data/public/_components/@socketry/syntax/test/Syntax/Language/json.js +101 -0
  137. data/public/_components/@socketry/syntax/test/Syntax/Language/lisp.js +224 -0
  138. data/public/_components/@socketry/syntax/test/Syntax/Language/lua.js +307 -0
  139. data/public/_components/@socketry/syntax/test/Syntax/Language/markdown.js +163 -0
  140. data/public/_components/@socketry/syntax/test/Syntax/Language/nginx.js +267 -0
  141. data/public/_components/@socketry/syntax/test/Syntax/Language/ocaml.js +299 -0
  142. data/public/_components/@socketry/syntax/test/Syntax/Language/pascal.js +311 -0
  143. data/public/_components/@socketry/syntax/test/Syntax/Language/perl5.js +333 -0
  144. data/public/_components/@socketry/syntax/test/Syntax/Language/php-script.js +197 -0
  145. data/public/_components/@socketry/syntax/test/Syntax/Language/php.js +92 -0
  146. data/public/_components/@socketry/syntax/test/Syntax/Language/plain.js +327 -0
  147. data/public/_components/@socketry/syntax/test/Syntax/Language/protobuf.js +294 -0
  148. data/public/_components/@socketry/syntax/test/Syntax/Language/python.js +213 -0
  149. data/public/_components/@socketry/syntax/test/Syntax/Language/ruby.js +70 -0
  150. data/public/_components/@socketry/syntax/test/Syntax/Language/scala.js +75 -0
  151. data/public/_components/@socketry/syntax/test/Syntax/Language/smalltalk.js +223 -0
  152. data/public/_components/@socketry/syntax/test/Syntax/Language/sql.js +281 -0
  153. data/public/_components/@socketry/syntax/test/Syntax/Language/super-collider.js +66 -0
  154. data/public/_components/@socketry/syntax/test/Syntax/Language/swift.js +71 -0
  155. data/public/_components/@socketry/syntax/test/Syntax/Language/xml.js +170 -0
  156. data/public/_components/@socketry/syntax/test/Syntax/Language/xrb.js +57 -0
  157. data/public/_components/@socketry/syntax/test/Syntax/Language/yaml.js +123 -0
  158. data/public/_components/@socketry/syntax/test/Syntax/Language.js +62 -0
  159. data/public/_components/@socketry/syntax/test/Syntax/Match.js +40 -0
  160. data/public/_components/@socketry/syntax/test/Syntax/Rule.js +251 -0
  161. data/public/_components/@socketry/syntax/test/Syntax.js +38 -0
  162. data/public/_components/@socketry/syntax/test/helpers/ast-matcher.js +90 -0
  163. data/public/_components/@socketry/syntax/themes/base/apache.css +1 -0
  164. data/public/_components/@socketry/syntax/themes/base/applescript.css +1 -0
  165. data/public/_components/@socketry/syntax/themes/base/assembly.css +1 -0
  166. data/public/_components/@socketry/syntax/themes/base/bash.css +1 -0
  167. data/public/_components/@socketry/syntax/themes/base/basic.css +1 -0
  168. data/public/_components/@socketry/syntax/themes/base/c.css +1 -0
  169. data/public/_components/@socketry/syntax/themes/base/clang.css +0 -0
  170. data/public/_components/@socketry/syntax/themes/base/csharp.css +1 -0
  171. data/public/_components/@socketry/syntax/themes/base/css.css +22 -0
  172. data/public/_components/@socketry/syntax/themes/base/diff.css +48 -0
  173. data/public/_components/@socketry/syntax/themes/base/go.css +1 -0
  174. data/public/_components/@socketry/syntax/themes/base/haskell.css +1 -0
  175. data/public/_components/@socketry/syntax/themes/base/html.css +1 -0
  176. data/public/_components/@socketry/syntax/themes/base/io.css +1 -0
  177. data/public/_components/@socketry/syntax/themes/base/java.css +1 -0
  178. data/public/_components/@socketry/syntax/themes/base/javascript.css +1 -0
  179. data/public/_components/@socketry/syntax/themes/base/json.css +41 -0
  180. data/public/_components/@socketry/syntax/themes/base/lisp.css +1 -0
  181. data/public/_components/@socketry/syntax/themes/base/lua.css +1 -0
  182. data/public/_components/@socketry/syntax/themes/base/markdown.css +16 -0
  183. data/public/_components/@socketry/syntax/themes/base/nginx.css +1 -0
  184. data/public/_components/@socketry/syntax/themes/base/ocaml.css +1 -0
  185. data/public/_components/@socketry/syntax/themes/base/pascal.css +1 -0
  186. data/public/_components/@socketry/syntax/themes/base/perl5.css +1 -0
  187. data/public/_components/@socketry/syntax/themes/base/php-script.css +1 -0
  188. data/public/_components/@socketry/syntax/themes/base/php.css +1 -0
  189. data/public/_components/@socketry/syntax/themes/base/plain.css +1 -0
  190. data/public/_components/@socketry/syntax/themes/base/protobuf.css +1 -0
  191. data/public/_components/@socketry/syntax/themes/base/python.css +1 -0
  192. data/public/_components/@socketry/syntax/themes/base/ruby.css +23 -0
  193. data/public/_components/@socketry/syntax/themes/base/scala.css +3 -0
  194. data/public/_components/@socketry/syntax/themes/base/smalltalk.css +1 -0
  195. data/public/_components/@socketry/syntax/themes/base/sql.css +1 -0
  196. data/public/_components/@socketry/syntax/themes/base/super-collider.css +33 -0
  197. data/public/_components/@socketry/syntax/themes/base/swift.css +1 -0
  198. data/public/_components/@socketry/syntax/themes/base/syntax.css +63 -0
  199. data/public/_components/@socketry/syntax/themes/base/xml.css +1 -0
  200. data/public/_components/@socketry/syntax/themes/base/xrb.css +29 -0
  201. data/public/_components/@socketry/syntax/themes/base/yaml.css +1 -0
  202. data/public/_components/@socketry/syntax/themes/theming.md +233 -0
  203. data/public/_components/@socketry/syntax/update-examples.js +135 -0
  204. data/public/_static/index.css +593 -0
  205. data/public/application.js +147 -0
  206. data/readme.md +69 -0
  207. data/releases.md +3 -0
  208. data/templates/code.xrb +12 -0
  209. data/templates/default.xrb +5 -0
  210. data/templates/image.xrb +8 -0
  211. data/templates/section.xrb +5 -0
  212. data/templates/title.xrb +8 -0
  213. data/templates/translation.xrb +8 -0
  214. data/templates/two_column.xrb +8 -0
  215. metadata +280 -0
@@ -0,0 +1,121 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Markdown Examples - @socketry/syntax</title>
7
+ <link rel="stylesheet" href="examples.css">
8
+ </head>
9
+ <body>
10
+ <header>
11
+ <h1>Markdown Examples</h1>
12
+ <p class="subtitle">Markdown syntax with clickable links</p>
13
+ </header>
14
+
15
+ <nav>
16
+ <a href="index.html">Back to Examples</a>
17
+ <a href="javascript.html">JavaScript</a>
18
+ <a href="python.html">Python</a>
19
+ </nav>
20
+
21
+ <div class="example">
22
+ <h2>Complete Markdown Document</h2>
23
+ <p class="description">A full markdown document with various elements:</p>
24
+
25
+ <pre><code class="language-markdown"># Main Heading
26
+
27
+ This is a paragraph with **bold text**, *italic text*, and `inline code`.
28
+
29
+ ## Subheading
30
+
31
+ Here's a [link to example](https://example.com) and an ![image](image.png).
32
+
33
+ ### Code Block
34
+
35
+ ```javascript
36
+ const greeting = "Hello, World!";
37
+ console.log(greeting);
38
+ ```
39
+
40
+ ### Lists
41
+
42
+ - Unordered item 1
43
+ - Unordered item 2
44
+ - Nested item
45
+
46
+ 1. Ordered item 1
47
+ 2. Ordered item 2
48
+
49
+ ### Blockquote
50
+
51
+ > This is a quoted text.
52
+ > It can span multiple lines.
53
+
54
+ ---
55
+
56
+ That's a horizontal rule above.
57
+ </code></pre>
58
+ </div>
59
+
60
+ <div class="example">
61
+ <h2>Headers</h2>
62
+ <p class="description">Different heading levels:</p>
63
+
64
+ <pre><code class="language-markdown"># Heading 1
65
+ ## Heading 2
66
+ ### Heading 3
67
+ #### Heading 4
68
+ ##### Heading 5
69
+ ###### Heading 6
70
+ </code></pre>
71
+ </div>
72
+
73
+ <div class="example">
74
+ <h2>Text Formatting</h2>
75
+ <p class="description">Bold, italic, and code:</p>
76
+
77
+ <pre><code class="language-markdown">**Bold with asterisks**
78
+ __Bold with underscores__
79
+
80
+ *Italic with asterisks*
81
+ _Italic with underscores_
82
+
83
+ `Inline code`
84
+
85
+ ```
86
+ Code block
87
+ Multiple lines
88
+ ```
89
+ </code></pre>
90
+ </div>
91
+
92
+ <div class="example">
93
+ <h2>Links and Images</h2>
94
+ <p class="description">Markdown link and image syntax (links are clickable!):</p>
95
+
96
+ <pre><code class="language-markdown">[Link text](https://example.com)
97
+ [Link with title](https://example.com "Title")
98
+
99
+ ![Alt text](image.png)
100
+ ![Image with title](image.png "Image Title")
101
+
102
+ Plain URLs are also clickable:
103
+ https://github.com/socketry/syntax-js
104
+ http://example.com/path?query=value
105
+ </code></pre>
106
+ </div>
107
+
108
+ <script type="module">
109
+ import Syntax from '../Syntax.js';
110
+ import registerMarkdown from '../Syntax/Language/markdown.js';
111
+
112
+ // Register the Markdown language
113
+ registerMarkdown(Syntax.default);
114
+
115
+ // Automatically upgrade code blocks
116
+ document.addEventListener('DOMContentLoaded', async function() {
117
+ await Syntax.highlight();
118
+ });
119
+ </script>
120
+ </body>
121
+ </html>
@@ -0,0 +1,306 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Mixed Languages Examples - @socketry/syntax</title>
7
+ <link rel="stylesheet" href="examples.css">
8
+ </head>
9
+ <body>
10
+ <header>
11
+ <h1>Mixed Languages Examples</h1>
12
+ <p class="subtitle">Mixed Languages syntax highlighting</p>
13
+ </header>
14
+
15
+ <nav>
16
+ <a href="index.html">Back to Examples</a>
17
+ </nav>
18
+
19
+ <h1>Mixed Content Examples</h1>
20
+
21
+ <nav>
22
+ <a href="index.html">← Back</a>
23
+ <a href="javascript.html">JavaScript</a>
24
+ <a href="html.html">HTML</a>
25
+ </nav>
26
+
27
+ <div class="example">
28
+ <h2>HTML with Embedded JavaScript</h2>
29
+ <p class="description">JavaScript code inside &lt;script&gt; tags is highlighted with JavaScript syntax:</p>
30
+
31
+ <syntax-code language="html">
32
+ &lt;!DOCTYPE html&gt;
33
+ &lt;html lang="en"&gt;
34
+ &lt;head&gt;
35
+ &lt;meta charset="UTF-8"&gt;
36
+ &lt;title&gt;Interactive Page&lt;/title&gt;
37
+ &lt;script&gt;
38
+ // This JavaScript code is highlighted!
39
+ document.addEventListener('DOMContentLoaded', () => {
40
+ const button = document.querySelector('#myButton');
41
+ const counter = { count: 0 };
42
+
43
+ button.addEventListener('click', () => {
44
+ counter.count++;
45
+ console.log(`Clicked ${counter.count} times`);
46
+
47
+ // Update the UI
48
+ button.textContent = `Clicks: ${counter.count}`;
49
+ });
50
+ });
51
+ &lt;/script&gt;
52
+ &lt;/head&gt;
53
+ &lt;body&gt;
54
+ &lt;h1&gt;Click Counter&lt;/h1&gt;
55
+ &lt;button id="myButton"&gt;Click Me!&lt;/button&gt;
56
+ &lt;/body&gt;
57
+ &lt;/html&gt;
58
+ </syntax-code>
59
+ </div>
60
+
61
+ <div class="example">
62
+ <h2>Multiple Script Blocks</h2>
63
+ <p class="description">Multiple &lt;script&gt; tags with different content:</p>
64
+
65
+ <syntax-code language="html">
66
+ &lt;!DOCTYPE html&gt;
67
+ &lt;html&gt;
68
+ &lt;head&gt;
69
+ &lt;!-- External script --&gt;
70
+ &lt;script src="https://cdn.example.com/library.js"&gt;&lt;/script&gt;
71
+
72
+ &lt;!-- Module script --&gt;
73
+ &lt;script type="module"&gt;
74
+ import { helper } from './utils.js';
75
+
76
+ class App {
77
+ constructor() {
78
+ this.data = [];
79
+ }
80
+
81
+ async init() {
82
+ const response = await fetch('/api/data');
83
+ this.data = await response.json();
84
+ this.render();
85
+ }
86
+ }
87
+
88
+ const app = new App();
89
+ app.init();
90
+ &lt;/script&gt;
91
+
92
+ &lt;!-- Inline event handler (old style) --&gt;
93
+ &lt;script&gt;
94
+ function handleClick(event) {
95
+ alert('Button clicked!');
96
+ return false;
97
+ }
98
+ &lt;/script&gt;
99
+ &lt;/head&gt;
100
+ &lt;body&gt;
101
+ &lt;button onclick="handleClick(event)"&gt;Old Style Handler&lt;/button&gt;
102
+ &lt;/body&gt;
103
+ &lt;/html&gt;
104
+ </syntax-code>
105
+ </div>
106
+
107
+ <div class="example">
108
+ <h2>ES6 Modules in HTML</h2>
109
+ <p class="description">Modern JavaScript modules with imports:</p>
110
+
111
+ <syntax-code language="html">
112
+ &lt;!DOCTYPE html&gt;
113
+ &lt;html lang="en"&gt;
114
+ &lt;head&gt;
115
+ &lt;meta charset="UTF-8"&gt;
116
+ &lt;title&gt;ES Module Example&lt;/title&gt;
117
+ &lt;/head&gt;
118
+ &lt;body&gt;
119
+ &lt;div id="app"&gt;&lt;/div&gt;
120
+
121
+ &lt;script type="module"&gt;
122
+ // Dynamic imports
123
+ const { createApp } = await import('./framework.js');
124
+
125
+ // App component
126
+ const app = createApp({
127
+ data() {
128
+ return {
129
+ message: 'Hello, World!',
130
+ count: 0
131
+ };
132
+ },
133
+
134
+ methods: {
135
+ increment() {
136
+ this.count++;
137
+ }
138
+ },
139
+
140
+ template: `
141
+ &lt;div&gt;
142
+ &lt;h1&gt;{{ message }}&lt;/h1&gt;
143
+ &lt;p&gt;Count: {{ count }}&lt;/p&gt;
144
+ &lt;button @click="increment"&gt;Increment&lt;/button&gt;
145
+ &lt;/div&gt;
146
+ `
147
+ });
148
+
149
+ app.mount('#app');
150
+ &lt;/script&gt;
151
+ &lt;/body&gt;
152
+ &lt;/html&gt;
153
+ </syntax-code>
154
+ </div>
155
+
156
+ <div class="example">
157
+ <h2>Web Components</h2>
158
+ <p class="description">Custom elements with JavaScript:</p>
159
+
160
+ <syntax-code language="html">
161
+ &lt;!DOCTYPE html&gt;
162
+ &lt;html lang="en"&gt;
163
+ &lt;head&gt;
164
+ &lt;meta charset="UTF-8"&gt;
165
+ &lt;title&gt;Web Components&lt;/title&gt;
166
+ &lt;script&gt;
167
+ class MyCounter extends HTMLElement {
168
+ #count = 0;
169
+ #shadow;
170
+
171
+ constructor() {
172
+ super();
173
+ this.#shadow = this.attachShadow({ mode: 'open' });
174
+ }
175
+
176
+ connectedCallback() {
177
+ this.render();
178
+ this.#shadow.querySelector('button').addEventListener('click', () => {
179
+ this.#count++;
180
+ this.render();
181
+ });
182
+ }
183
+
184
+ render() {
185
+ this.#shadow.innerHTML = `
186
+ &lt;style&gt;
187
+ :host { display: block; padding: 1rem; }
188
+ button { padding: 0.5rem 1rem; }
189
+ &lt;/style&gt;
190
+ &lt;div&gt;
191
+ &lt;p&gt;Count: ${this.#count}&lt;/p&gt;
192
+ &lt;button&gt;Increment&lt;/button&gt;
193
+ &lt;/div&gt;
194
+ `;
195
+ }
196
+ }
197
+
198
+ customElements.define('my-counter', MyCounter);
199
+ &lt;/script&gt;
200
+ &lt;/head&gt;
201
+ &lt;body&gt;
202
+ &lt;h1&gt;Custom Counter Element&lt;/h1&gt;
203
+ &lt;my-counter&gt;&lt;/my-counter&gt;
204
+ &lt;my-counter&gt;&lt;/my-counter&gt;
205
+ &lt;/body&gt;
206
+ &lt;/html&gt;
207
+ </syntax-code>
208
+ </div>
209
+
210
+ <div class="example">
211
+ <h2>Async Script Loading</h2>
212
+ <p class="description">Different script loading strategies:</p>
213
+
214
+ <syntax-code language="html">
215
+ &lt;!DOCTYPE html&gt;
216
+ &lt;html lang="en"&gt;
217
+ &lt;head&gt;
218
+ &lt;meta charset="UTF-8"&gt;
219
+ &lt;title&gt;Script Loading Strategies&lt;/title&gt;
220
+
221
+ &lt;!-- Regular blocking script --&gt;
222
+ &lt;script src="critical.js"&gt;&lt;/script&gt;
223
+
224
+ &lt;!-- Async: Download in parallel, execute ASAP --&gt;
225
+ &lt;script async src="analytics.js"&gt;&lt;/script&gt;
226
+
227
+ &lt;!-- Defer: Download in parallel, execute after DOM ready --&gt;
228
+ &lt;script defer src="app.js"&gt;&lt;/script&gt;
229
+
230
+ &lt;!-- Module: Always deferred by default --&gt;
231
+ &lt;script type="module" src="main.js"&gt;&lt;/script&gt;
232
+
233
+ &lt;!-- Inline with initialization --&gt;
234
+ &lt;script&gt;
235
+ window.APP_CONFIG = {
236
+ apiUrl: 'https://api.example.com',
237
+ version: '1.0.0',
238
+ features: {
239
+ analytics: true,
240
+ darkMode: true
241
+ }
242
+ };
243
+ &lt;/script&gt;
244
+ &lt;/head&gt;
245
+ &lt;body&gt;
246
+ &lt;div id="root"&gt;&lt;/div&gt;
247
+ &lt;/body&gt;
248
+ &lt;/html&gt;
249
+ </syntax-code>
250
+ </div>
251
+
252
+ <div class="example">
253
+ <h2>Template Strings in HTML</h2>
254
+ <p class="description">Using template literals for dynamic content:</p>
255
+
256
+ <syntax-code language="html">
257
+ &lt;!DOCTYPE html&gt;
258
+ &lt;html lang="en"&gt;
259
+ &lt;head&gt;
260
+ &lt;meta charset="UTF-8"&gt;
261
+ &lt;title&gt;Templates&lt;/title&gt;
262
+ &lt;/head&gt;
263
+ &lt;body&gt;
264
+ &lt;div id="user-list"&gt;&lt;/div&gt;
265
+
266
+ &lt;script&gt;
267
+ const users = [
268
+ { id: 1, name: 'Alice', role: 'Admin' },
269
+ { id: 2, name: 'Bob', role: 'User' },
270
+ { id: 3, name: 'Charlie', role: 'Moderator' }
271
+ ];
272
+
273
+ function renderUsers(users) {
274
+ return users.map(user => `
275
+ &lt;div class="user-card" data-user-id="${user.id}"&gt;
276
+ &lt;h3&gt;${user.name}&lt;/h3&gt;
277
+ &lt;span class="badge ${user.role.toLowerCase()}"&gt;
278
+ ${user.role}
279
+ &lt;/span&gt;
280
+ &lt;button onclick="editUser(${user.id})"&gt;Edit&lt;/button&gt;
281
+ &lt;/div&gt;
282
+ `).join('');
283
+ }
284
+
285
+ document.getElementById('user-list').innerHTML = renderUsers(users);
286
+
287
+ function editUser(id) {
288
+ console.log(`Editing user ${id}`);
289
+ }
290
+ &lt;/script&gt;
291
+ &lt;/body&gt;
292
+ &lt;/html&gt;
293
+ </syntax-code>
294
+ </div>
295
+
296
+ <script type="module">
297
+ import Syntax from '../Syntax.js';
298
+
299
+ // Initialize highlighting
300
+ await Syntax.highlight({
301
+ autoUpgrade: true,
302
+ syntax: Syntax.default
303
+ });
304
+ </script>
305
+ </body>
306
+ </html>