@janga/norna 0.7.2 → 0.7.3

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 (145) hide show
  1. package/README.md +16 -16
  2. package/bin/norna-cli.mjs +12 -7
  3. package/docs/README.md +10 -11
  4. package/docs/commands.md +8 -8
  5. package/docs/configuration.md +13 -145
  6. package/docs/content.md +17 -15
  7. package/docs/design/command-organization.md +55 -55
  8. package/docs/design/site-examples-structure.md +2 -2
  9. package/docs/engine-development.md +5 -5
  10. package/docs/getting-started.md +19 -26
  11. package/docs/images-and-metadata.md +1 -1
  12. package/docs/local-development.md +2 -2
  13. package/docs/publishing.md +1 -1
  14. package/docs/routes.md +2 -2
  15. package/docs/site-structure.md +8 -7
  16. package/docs/theme.md +149 -7
  17. package/docs/typography.md +47 -28
  18. package/examples/dog-gallery/.astro/collections/site.schema.json +802 -0
  19. package/examples/dog-gallery/.astro/collections/theme.schema.json +714 -0
  20. package/examples/dog-gallery/.astro/content-assets.mjs +4 -0
  21. package/examples/dog-gallery/.astro/content-modules.mjs +1 -0
  22. package/examples/dog-gallery/.astro/content.d.ts +175 -0
  23. package/examples/dog-gallery/.astro/data-store.json +1 -0
  24. package/examples/dog-gallery/.astro/dev-local.json +8 -0
  25. package/examples/dog-gallery/.astro/dev.json +13 -0
  26. package/examples/dog-gallery/.astro/dev.log +49 -0
  27. package/examples/dog-gallery/.astro/settings.json +5 -0
  28. package/examples/dog-gallery/.astro/types.d.ts +2 -0
  29. package/examples/dog-gallery/dist/_astro/GalleryGrid.astro_astro_type_script_index_0_lang.B0kxDyGz.js +1 -0
  30. package/examples/dog-gallery/dist/_astro/SitePage.BFHZm5UG.css +1 -0
  31. package/examples/dog-gallery/dist/dog-care/index.html +15 -0
  32. package/examples/dog-gallery/dist/favicon.svg +7 -0
  33. package/examples/dog-gallery/dist/images/generated/black-dogs/black-puppy-meadow-7255e3d9-1080.webp +0 -0
  34. package/examples/dog-gallery/dist/images/generated/black-dogs/black-puppy-meadow-7255e3d9-1440.webp +0 -0
  35. package/examples/dog-gallery/dist/images/generated/black-dogs/black-puppy-meadow-7255e3d9-1536.webp +0 -0
  36. package/examples/dog-gallery/dist/images/generated/black-dogs/black-puppy-meadow-7255e3d9-480.webp +0 -0
  37. package/examples/dog-gallery/dist/images/generated/black-dogs/black-puppy-meadow-7255e3d9-768.webp +0 -0
  38. package/examples/dog-gallery/dist/images/generated/black-dogs/photo-of-a-black-dog-5cf614d2-480.webp +0 -0
  39. package/examples/dog-gallery/dist/images/generated/black-dogs/photo-of-a-black-dog-5cf614d2-768.webp +0 -0
  40. package/examples/dog-gallery/dist/images/generated/black-dogs/photo-of-a-black-dog-5cf614d2-960.webp +0 -0
  41. package/examples/dog-gallery/dist/images/generated/brown-dogs/brown-dog-50ef114e-1080.webp +0 -0
  42. package/examples/dog-gallery/dist/images/generated/brown-dogs/brown-dog-50ef114e-1440.webp +0 -0
  43. package/examples/dog-gallery/dist/images/generated/brown-dogs/brown-dog-50ef114e-1920.webp +0 -0
  44. package/examples/dog-gallery/dist/images/generated/brown-dogs/brown-dog-50ef114e-3939.webp +0 -0
  45. package/examples/dog-gallery/dist/images/generated/brown-dogs/brown-dog-50ef114e-480.webp +0 -0
  46. package/examples/dog-gallery/dist/images/generated/brown-dogs/brown-dog-50ef114e-768.webp +0 -0
  47. package/examples/dog-gallery/dist/images/generated/brown-dogs/dog-accompanies-master-7ef804d5-1080.webp +0 -0
  48. package/examples/dog-gallery/dist/images/generated/brown-dogs/dog-accompanies-master-7ef804d5-1440.webp +0 -0
  49. package/examples/dog-gallery/dist/images/generated/brown-dogs/dog-accompanies-master-7ef804d5-1920.webp +0 -0
  50. package/examples/dog-gallery/dist/images/generated/brown-dogs/dog-accompanies-master-7ef804d5-2400.webp +0 -0
  51. package/examples/dog-gallery/dist/images/generated/brown-dogs/dog-accompanies-master-7ef804d5-480.webp +0 -0
  52. package/examples/dog-gallery/dist/images/generated/brown-dogs/dog-accompanies-master-7ef804d5-768.webp +0 -0
  53. package/examples/dog-gallery/dist/images/generated/golden-dogs/golden-retriever-f797fd88-1080.webp +0 -0
  54. package/examples/dog-gallery/dist/images/generated/golden-dogs/golden-retriever-f797fd88-1440.webp +0 -0
  55. package/examples/dog-gallery/dist/images/generated/golden-dogs/golden-retriever-f797fd88-1600.webp +0 -0
  56. package/examples/dog-gallery/dist/images/generated/golden-dogs/golden-retriever-f797fd88-480.webp +0 -0
  57. package/examples/dog-gallery/dist/images/generated/golden-dogs/golden-retriever-f797fd88-768.webp +0 -0
  58. package/examples/dog-gallery/dist/images/generated/golden-dogs/toller-puppy-a2a8fbc0-1080.webp +0 -0
  59. package/examples/dog-gallery/dist/images/generated/golden-dogs/toller-puppy-a2a8fbc0-1440.webp +0 -0
  60. package/examples/dog-gallery/dist/images/generated/golden-dogs/toller-puppy-a2a8fbc0-1920.webp +0 -0
  61. package/examples/dog-gallery/dist/images/generated/golden-dogs/toller-puppy-a2a8fbc0-2576.webp +0 -0
  62. package/examples/dog-gallery/dist/images/generated/golden-dogs/toller-puppy-a2a8fbc0-480.webp +0 -0
  63. package/examples/dog-gallery/dist/images/generated/golden-dogs/toller-puppy-a2a8fbc0-768.webp +0 -0
  64. package/examples/dog-gallery/dist/images/generated/white-dogs/white-cute-dog-077a0689-1080.webp +0 -0
  65. package/examples/dog-gallery/dist/images/generated/white-dogs/white-cute-dog-077a0689-1277.webp +0 -0
  66. package/examples/dog-gallery/dist/images/generated/white-dogs/white-cute-dog-077a0689-480.webp +0 -0
  67. package/examples/dog-gallery/dist/images/generated/white-dogs/white-cute-dog-077a0689-768.webp +0 -0
  68. package/examples/dog-gallery/dist/images/generated/white-dogs/white-puppy-garden-d3ab2ca0-1080.webp +0 -0
  69. package/examples/dog-gallery/dist/images/generated/white-dogs/white-puppy-garden-d3ab2ca0-1440.webp +0 -0
  70. package/examples/dog-gallery/dist/images/generated/white-dogs/white-puppy-garden-d3ab2ca0-1536.webp +0 -0
  71. package/examples/dog-gallery/dist/images/generated/white-dogs/white-puppy-garden-d3ab2ca0-480.webp +0 -0
  72. package/examples/dog-gallery/dist/images/generated/white-dogs/white-puppy-garden-d3ab2ca0-768.webp +0 -0
  73. package/examples/dog-gallery/dist/index.html +43 -0
  74. package/examples/dog-gallery/dist/robots.txt +2 -0
  75. package/examples/dog-gallery/node_modules/.vite/deps/_metadata.json +74 -0
  76. package/examples/dog-gallery/node_modules/.vite/deps/astro-D_GIpJIE.js +434 -0
  77. package/examples/dog-gallery/node_modules/.vite/deps/astro-D_GIpJIE.js.map +1 -0
  78. package/examples/dog-gallery/node_modules/.vite/deps/astro_n_aria-query.js +6390 -0
  79. package/examples/dog-gallery/node_modules/.vite/deps/astro_n_aria-query.js.map +1 -0
  80. package/examples/dog-gallery/node_modules/.vite/deps/astro_n_axobject-query.js +2702 -0
  81. package/examples/dog-gallery/node_modules/.vite/deps/astro_n_axobject-query.js.map +1 -0
  82. package/examples/dog-gallery/node_modules/.vite/deps/astro_n_html-escaper.js +65 -0
  83. package/examples/dog-gallery/node_modules/.vite/deps/astro_n_html-escaper.js.map +1 -0
  84. package/examples/dog-gallery/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +455 -0
  85. package/examples/dog-gallery/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +1 -0
  86. package/examples/dog-gallery/node_modules/.vite/deps/audit-DM9Hkl5B.js +1534 -0
  87. package/examples/dog-gallery/node_modules/.vite/deps/audit-DM9Hkl5B.js.map +1 -0
  88. package/examples/dog-gallery/node_modules/.vite/deps/highlight-DnZ1ULOL.js +48 -0
  89. package/examples/dog-gallery/node_modules/.vite/deps/highlight-DnZ1ULOL.js.map +1 -0
  90. package/examples/dog-gallery/node_modules/.vite/deps/icons-RyebKi45.js +42 -0
  91. package/examples/dog-gallery/node_modules/.vite/deps/icons-RyebKi45.js.map +1 -0
  92. package/examples/dog-gallery/node_modules/.vite/deps/package.json +3 -0
  93. package/examples/dog-gallery/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +4 -0
  94. package/examples/dog-gallery/node_modules/.vite/deps/settings-DaU-gNnK.js +190 -0
  95. package/examples/dog-gallery/node_modules/.vite/deps/settings-DaU-gNnK.js.map +1 -0
  96. package/examples/dog-gallery/node_modules/.vite/deps/toolbar-63PA619H.js +458 -0
  97. package/examples/dog-gallery/node_modules/.vite/deps/toolbar-63PA619H.js.map +1 -0
  98. package/examples/dog-gallery/node_modules/.vite/deps/ui-library--bkcNSYz.js +1016 -0
  99. package/examples/dog-gallery/node_modules/.vite/deps/ui-library--bkcNSYz.js.map +1 -0
  100. package/examples/dog-gallery/node_modules/.vite/deps/window-jPkpKVcy.js +32 -0
  101. package/examples/dog-gallery/node_modules/.vite/deps/window-jPkpKVcy.js.map +1 -0
  102. package/examples/dog-gallery/node_modules/.vite/deps/xray-BXCHpEJP.js +111 -0
  103. package/examples/dog-gallery/node_modules/.vite/deps/xray-BXCHpEJP.js.map +1 -0
  104. package/examples/dog-gallery/site/config.mjs +12 -42
  105. package/examples/dog-gallery/site/content.md +27 -5
  106. package/examples/dog-gallery/site/routes/dog-care/route-content.md +17 -3
  107. package/examples/dog-gallery/site/theme.md +85 -26
  108. package/fixtures/basic/site/config.mjs +2 -22
  109. package/fixtures/basic/site/content.md +1 -1
  110. package/fixtures/basic/site/theme.md +7 -3
  111. package/package.json +3 -3
  112. package/scripts/check-config.mjs +3 -3
  113. package/scripts/deploy-site.mjs +3 -3
  114. package/scripts/init-site.mjs +10 -8
  115. package/scripts/lib/frontmatter-yaml.mjs +85 -0
  116. package/scripts/lib/presentation.mjs +10 -11
  117. package/scripts/lib/project-config.mjs +91 -45
  118. package/scripts/lib/site-content.mjs +20 -2
  119. package/scripts/lib/theme-config.mjs +34 -0
  120. package/scripts/lib/typography.mjs +100 -20
  121. package/scripts/show-typography.mjs +58 -154
  122. package/scripts/sync-content-sections.mjs +6 -6
  123. package/scripts/test-content-check.mjs +3 -4
  124. package/scripts/test-engine-commands.mjs +2 -2
  125. package/scripts/test-package-check.mjs +17 -16
  126. package/scripts/test-temporary-visibility.mjs +2 -3
  127. package/src/components/SitePage.astro +2 -3
  128. package/src/components/SiteSection.astro +39 -5
  129. package/src/content.config.ts +60 -2
  130. package/src/layouts/BaseLayout.astro +17 -0
  131. package/src/styles/global.css +54 -50
  132. package/starters/basic/README.md +10 -15
  133. package/starters/basic/package.json +2 -2
  134. package/starters/basic/site/config.mjs +3 -24
  135. package/starters/basic/site/content.md +40 -7
  136. package/starters/basic/site/theme.md +110 -17
  137. package/starters/project/.github/workflows/deploy.yml +65 -0
  138. package/starters/project/README.md +72 -0
  139. package/starters/project/package-lock.json +4296 -0
  140. package/starters/project/package.json +35 -0
  141. package/starters/project/site/config.mjs +43 -0
  142. package/starters/project/site/content.md +88 -0
  143. package/starters/project/site/public/robots.txt +2 -0
  144. package/starters/project/site/routes/guide/route-content.md +58 -0
  145. package/starters/project/site/theme.md +15 -0
@@ -0,0 +1,1016 @@
1
+ import { n as DevToolbarWindow, t as settings } from "./astro_runtime_client_dev-toolbar_entrypoint__js.js";
2
+ import { n as isDefinedIcon, t as getIconElement } from "./icons-RyebKi45.js";
3
+ //#region ../../node_modules/astro/dist/runtime/client/dev-toolbar/ui-library/badge.js
4
+ var sizes$1 = ["small", "large"];
5
+ var styles$6 = [
6
+ "purple",
7
+ "gray",
8
+ "red",
9
+ "green",
10
+ "yellow",
11
+ "blue"
12
+ ];
13
+ var DevToolbarBadge = class extends HTMLElement {
14
+ _size = "small";
15
+ _badgeStyle = "purple";
16
+ get size() {
17
+ return this._size;
18
+ }
19
+ set size(value) {
20
+ if (!sizes$1.includes(value)) {
21
+ settings.logger.error(`Invalid size: ${value}, expected one of ${sizes$1.join(", ")}, got ${value}.`);
22
+ return;
23
+ }
24
+ this._size = value;
25
+ this.updateStyle();
26
+ }
27
+ get badgeStyle() {
28
+ return this._badgeStyle;
29
+ }
30
+ set badgeStyle(value) {
31
+ if (!styles$6.includes(value)) {
32
+ settings.logger.error(`Invalid style: ${value}, expected one of ${styles$6.join(", ")}, got ${value}.`);
33
+ return;
34
+ }
35
+ this._badgeStyle = value;
36
+ this.updateStyle();
37
+ }
38
+ shadowRoot;
39
+ static observedAttributes = ["badge-style", "size"];
40
+ constructor() {
41
+ super();
42
+ this.shadowRoot = this.attachShadow({ mode: "open" });
43
+ this.shadowRoot.innerHTML = `
44
+ <style>
45
+ .badge {
46
+ box-sizing: border-box;
47
+ border-radius: 4px;
48
+ border: 1px solid transparent;
49
+ padding: 8px;
50
+ font-size: 12px;
51
+ color: var(--text-color);
52
+ height: var(--size);
53
+ border: 1px solid var(--border-color);
54
+ display: flex;
55
+ align-items: center;
56
+ justify-content: center;
57
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
58
+
59
+ --purple-text: rgba(224, 204, 250, 1);
60
+ --purple-border: rgba(113, 24, 226, 1);
61
+
62
+ --gray-text: rgba(191, 193, 201, 1);
63
+ --gray-border:rgba(191, 193, 201, 1);
64
+
65
+ --red-text: rgba(249, 196, 215, 1);
66
+ --red-border: rgba(179, 62, 102, 1);
67
+
68
+ --green-text: rgba(213, 249, 196, 1);
69
+ --green-border: rgba(61, 125, 31, 1);
70
+
71
+ --yellow-text: rgba(249, 233, 196, 1);
72
+ --yellow-border: rgba(181, 138, 45, 1);
73
+
74
+ --blue-text: rgba(189, 195, 255, 1);
75
+ --blue-border: rgba(54, 69, 217, 1);
76
+
77
+ --large: 24px;
78
+ --small: 20px;
79
+ }
80
+ </style>
81
+ <style id="selected-style"></style>
82
+
83
+ <div class="badge">
84
+ <slot></slot>
85
+ </div>
86
+ `;
87
+ }
88
+ connectedCallback() {
89
+ this.updateStyle();
90
+ }
91
+ attributeChangedCallback() {
92
+ if (this.hasAttribute("badge-style")) this.badgeStyle = this.getAttribute("badge-style");
93
+ if (this.hasAttribute("size")) this.size = this.getAttribute("size");
94
+ }
95
+ updateStyle() {
96
+ const style = this.shadowRoot.querySelector("#selected-style");
97
+ if (style) style.innerHTML = `
98
+ .badge {
99
+ --text-color: var(--${this.badgeStyle}-text);
100
+ --border-color: var(--${this.badgeStyle}-border);
101
+ --size: var(--${this.size});
102
+ }`;
103
+ }
104
+ };
105
+ //#endregion
106
+ //#region ../../node_modules/astro/dist/runtime/client/dev-toolbar/ui-library/button.js
107
+ var sizes = [
108
+ "small",
109
+ "medium",
110
+ "large"
111
+ ];
112
+ var styles$5 = [
113
+ "ghost",
114
+ "outline",
115
+ "purple",
116
+ "gray",
117
+ "red",
118
+ "green",
119
+ "yellow",
120
+ "blue"
121
+ ];
122
+ var borderRadii = ["normal", "rounded"];
123
+ var DevToolbarButton = class extends HTMLElement {
124
+ _size = "small";
125
+ _buttonStyle = "purple";
126
+ _buttonBorderRadius = "normal";
127
+ get size() {
128
+ return this._size;
129
+ }
130
+ set size(value) {
131
+ if (!sizes.includes(value)) {
132
+ settings.logger.error(`Invalid size: ${value}, expected one of ${sizes.join(", ")}, got ${value}.`);
133
+ return;
134
+ }
135
+ this._size = value;
136
+ this.updateStyle();
137
+ }
138
+ get buttonStyle() {
139
+ return this._buttonStyle;
140
+ }
141
+ set buttonStyle(value) {
142
+ if (!styles$5.includes(value)) {
143
+ settings.logger.error(`Invalid style: ${value}, expected one of ${styles$5.join(", ")}, got ${value}.`);
144
+ return;
145
+ }
146
+ this._buttonStyle = value;
147
+ this.updateStyle();
148
+ }
149
+ get buttonBorderRadius() {
150
+ return this._buttonBorderRadius;
151
+ }
152
+ set buttonBorderRadius(value) {
153
+ if (!borderRadii.includes(value)) {
154
+ settings.logger.error(`Invalid border-radius: ${value}, expected one of ${borderRadii.join(", ")}, got ${value}.`);
155
+ return;
156
+ }
157
+ this._buttonBorderRadius = value;
158
+ this.updateStyle();
159
+ }
160
+ static observedAttributes = [
161
+ "button-style",
162
+ "size",
163
+ "button-border-radius"
164
+ ];
165
+ shadowRoot;
166
+ constructor() {
167
+ super();
168
+ this.shadowRoot = this.attachShadow({ mode: "open" });
169
+ this.shadowRoot.innerHTML = `
170
+ <style>
171
+ button {
172
+ --purple-background: rgba(113, 24, 226, 1);
173
+ --purple-border: rgba(224, 204, 250, 0.33);
174
+ --purple-text: #fff;
175
+
176
+ --gray-background: rgba(52, 56, 65, 1);
177
+ --gray-border: rgba(71, 78, 94, 1);
178
+ --gray-text: #fff;
179
+
180
+ --red-background: rgba(179, 62, 102, 1);
181
+ --red-border: rgba(249, 196, 215, 0.33);
182
+ --red-text: #fff;
183
+
184
+ --green-background: rgba(213, 249, 196, 1);
185
+ --green-border: rgba(61, 125, 31, 1);
186
+ --green-text: #000;
187
+
188
+ --yellow-background: rgba(255, 236, 179, 1);
189
+ --yellow-border: rgba(255, 191, 0, 1);
190
+ --yellow-text: #000;
191
+
192
+ --blue-background: rgba(54, 69, 217, 1);
193
+ --blue-border: rgba(189, 195, 255, 1);
194
+ --blue-text: #fff;
195
+
196
+ --outline-background: transparent;
197
+ --outline-border: #fff;
198
+ --outline-text: #fff;
199
+
200
+ --ghost-background: transparent;
201
+ --ghost-border: transparent;
202
+ --ghost-text: #fff;
203
+
204
+ --large-font-size: 16px;
205
+ --medium-font-size: 14px;
206
+ --small-font-size: 12px;
207
+
208
+ --large-padding: 12px 16px;
209
+ --large-rounded-padding: 12px 12px;
210
+ --medium-padding: 8px 12px;
211
+ --medium-rounded-padding: 8px 8px;
212
+ --small-padding: 4px 8px;
213
+ --small-rounded-padding: 4px 4px;
214
+
215
+ --normal-border-radius: 4px;
216
+ --rounded-border-radius: 9999px;
217
+
218
+ border: 1px solid var(--border);
219
+ padding: var(--padding);
220
+ font-size: var(--font-size);
221
+ background: var(--background);
222
+
223
+ color: var(--text-color);
224
+ border-radius: var(--border-radius);
225
+ display: flex;
226
+ align-items: center;
227
+ justify-content: center;
228
+ }
229
+
230
+ button:hover {
231
+ cursor: pointer;
232
+ }
233
+
234
+ ::slotted(astro-dev-toolbar-icon) {
235
+ display: inline-block;
236
+ height: 1em;
237
+ width: 1em;
238
+ margin-left: 0.5em;
239
+ }
240
+ </style>
241
+ <style id="selected-style"></style>
242
+
243
+ <button>
244
+ <slot></slot>
245
+ </button>
246
+ `;
247
+ }
248
+ connectedCallback() {
249
+ this.updateStyle();
250
+ }
251
+ updateStyle() {
252
+ const style = this.shadowRoot.querySelector("#selected-style");
253
+ if (style) style.innerHTML = `
254
+ button {
255
+ --background: var(--${this.buttonStyle}-background);
256
+ --border: var(--${this.buttonStyle}-border);
257
+ --font-size: var(--${this.size}-font-size);
258
+ --text-color: var(--${this.buttonStyle}-text);
259
+ ${this.buttonBorderRadius === "normal" ? "--padding: var(--" + this.size + "-padding);" : "--padding: var(--" + this.size + "-rounded-padding);"}
260
+ --border-radius: var(--${this.buttonBorderRadius}-border-radius);
261
+ }`;
262
+ }
263
+ attributeChangedCallback() {
264
+ if (this.hasAttribute("size")) this.size = this.getAttribute("size");
265
+ if (this.hasAttribute("button-style")) this.buttonStyle = this.getAttribute("button-style");
266
+ }
267
+ };
268
+ //#endregion
269
+ //#region ../../node_modules/astro/dist/runtime/client/dev-toolbar/ui-library/card.js
270
+ var styles$4 = [
271
+ "purple",
272
+ "gray",
273
+ "red",
274
+ "green",
275
+ "yellow",
276
+ "blue"
277
+ ];
278
+ var DevToolbarCard = class extends HTMLElement {
279
+ link;
280
+ clickAction;
281
+ shadowRoot;
282
+ _cardStyle = "purple";
283
+ get cardStyle() {
284
+ return this._cardStyle;
285
+ }
286
+ set cardStyle(value) {
287
+ if (!styles$4.includes(value)) {
288
+ settings.logger.error(`Invalid style: ${value}, expected one of ${styles$4.join(", ")}, got ${value}.`);
289
+ return;
290
+ }
291
+ this._cardStyle = value;
292
+ this.updateStyle();
293
+ }
294
+ static observedAttributes = ["card-style"];
295
+ constructor() {
296
+ super();
297
+ this.shadowRoot = this.attachShadow({ mode: "open" });
298
+ this.link = this.getAttribute("link");
299
+ }
300
+ attributeChangedCallback() {
301
+ if (this.hasAttribute("card-style")) this.cardStyle = this.getAttribute("card-style");
302
+ this.updateStyle();
303
+ }
304
+ updateStyle() {
305
+ const style = this.shadowRoot.querySelector("#selected-style");
306
+ if (style) style.innerHTML = `
307
+ :host {
308
+ --hover-background: var(--${this.cardStyle}-hover-background);
309
+ --hover-border: var(--${this.cardStyle}-hover-border);
310
+ }
311
+ `;
312
+ }
313
+ connectedCallback() {
314
+ const element = this.link ? "a" : this.clickAction ? "button" : "div";
315
+ this.shadowRoot.innerHTML += `
316
+ <style>
317
+ :host {
318
+ --purple-hover-background: rgba(136, 58, 234, 0.33);
319
+ --purple-hover-border: 1px solid rgba(113, 24, 226, 1);
320
+
321
+ --gray-hover-background: rgba(191, 193, 201, 0.33);
322
+ --gray-hover-border: 1px solid rgba(191, 193, 201, 1);
323
+
324
+ --red-hover-background: rgba(249, 196, 215, 0.33);
325
+ --red-hover-border: 1px solid rgba(179, 62, 102, 1);
326
+
327
+ --green-hover-background: rgba(213, 249, 196, 0.33);
328
+ --green-hover-border: 1px solid rgba(61, 125, 31, 1);
329
+
330
+ --yellow-hover-background: rgba(255, 236, 179, 0.33);
331
+ --yellow-hover-border: 1px solid rgba(255, 191, 0, 1);
332
+
333
+ --blue-hover-background: rgba(189, 195, 255, 0.33);
334
+ --blue-hover-border: 1px solid rgba(54, 69, 217, 1);
335
+ }
336
+
337
+ :host>a, :host>button, :host>div {
338
+ box-sizing: border-box;
339
+ padding: 16px;
340
+ display: block;
341
+ border-radius: 8px;
342
+ border: 1px solid rgba(35, 38, 45, 1);
343
+ color: rgba(191, 193, 201, 1);
344
+ text-decoration: none;
345
+ background-color: #13151A;
346
+ box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.10), 0px 1px 2px 0px rgba(0, 0, 0, 0.10), 0px 4px 4px 0px rgba(0, 0, 0, 0.09), 0px 10px 6px 0px rgba(0, 0, 0, 0.05), 0px 17px 7px 0px rgba(0, 0, 0, 0.01), 0px 26px 7px 0px rgba(0, 0, 0, 0.00);
347
+ width: 100%;
348
+ height: 100%;
349
+ }
350
+
351
+ h1, h2, h3, h4, h5, h6 {
352
+ color: #fff;
353
+ font-weight: 600;
354
+ }
355
+
356
+ a:hover, button:hover {
357
+ background: var(--hover-background);
358
+ border: var(--hover-border);
359
+ }
360
+
361
+ svg {
362
+ display: block;
363
+ margin: 0 auto;
364
+ }
365
+
366
+ span {
367
+ margin-top: 8px;
368
+ display: block;
369
+ text-align: center;
370
+ }
371
+ </style>
372
+ <style id="selected-style"></style>
373
+
374
+ <${element}${this.link ? ` href="${this.link}" target="_blank"` : ``} id="astro-overlay-card">
375
+ <slot />
376
+ </${element}>
377
+ `;
378
+ this.updateStyle();
379
+ if (this.clickAction) this.shadowRoot.getElementById("astro-overlay-card")?.addEventListener("click", this.clickAction);
380
+ }
381
+ };
382
+ //#endregion
383
+ //#region ../../node_modules/astro/dist/runtime/client/dev-toolbar/ui-library/highlight.js
384
+ var styles$3 = [
385
+ "purple",
386
+ "gray",
387
+ "red",
388
+ "green",
389
+ "yellow",
390
+ "blue"
391
+ ];
392
+ var DevToolbarHighlight = class extends HTMLElement {
393
+ icon;
394
+ _highlightStyle = "purple";
395
+ get highlightStyle() {
396
+ return this._highlightStyle;
397
+ }
398
+ set highlightStyle(value) {
399
+ if (!styles$3.includes(value)) {
400
+ settings.logger.error(`Invalid style: ${value}, expected one of ${styles$3.join(", ")}, got ${value}.`);
401
+ return;
402
+ }
403
+ this._highlightStyle = value;
404
+ this.updateStyle();
405
+ }
406
+ static observedAttributes = ["highlight-style"];
407
+ shadowRoot;
408
+ constructor() {
409
+ super();
410
+ this.shadowRoot = this.attachShadow({ mode: "open" });
411
+ this.icon = this.hasAttribute("icon") ? this.getAttribute("icon") : void 0;
412
+ this.shadowRoot.innerHTML = `
413
+ <style>
414
+ :host {
415
+ --purple-background: linear-gradient(180deg, rgba(224, 204, 250, 0.33) 0%, rgba(224, 204, 250, 0.0825) 100%);
416
+ --purple-border: 1px solid rgba(113, 24, 226, 1);
417
+
418
+ --gray-background: linear-gradient(180deg, rgba(191, 193, 201, 0.33) 0%, rgba(191, 193, 201, 0.0825) 100%);
419
+ --gray-border: 1px solid rgba(191, 193, 201, 1);
420
+
421
+ --red-background: linear-gradient(180deg, rgba(249, 196, 215, 0.33) 0%, rgba(249, 196, 215, 0.0825) 100%);
422
+ --red-border: 1px solid rgba(179, 62, 102, 1);
423
+
424
+ --green-background: linear-gradient(180deg, rgba(213, 249, 196, 0.33) 0%, rgba(213, 249, 196, 0.0825) 100%);
425
+ --green-border: 1px solid rgba(61, 125, 31, 1);
426
+
427
+ --yellow-background: linear-gradient(180deg, rgba(255, 236, 179, 0.33) 0%, rgba(255, 236, 179, 0.0825) 100%);
428
+ --yellow-border: 1px solid rgba(181, 138, 45, 1);
429
+
430
+ --blue-background: linear-gradient(180deg, rgba(189, 195, 255, 0.33) 0%, rgba(189, 195, 255, 0.0825) 100%);
431
+ --blue-border: 1px solid rgba(54, 69, 217, 1);
432
+
433
+ border-radius: 4px;
434
+ display: block;
435
+ width: 100%;
436
+ height: 100%;
437
+ position: absolute;
438
+ z-index: 2000000000;
439
+
440
+ background: var(--background);
441
+ border: var(--border);
442
+ }
443
+
444
+ .icon {
445
+ width: 24px;
446
+ height: 24px;
447
+ color: white;
448
+ background: linear-gradient(0deg, #B33E66, #B33E66), linear-gradient(0deg, #351722, #351722);
449
+ border: 1px solid rgba(53, 23, 34, 1);
450
+ border-radius: 9999px;
451
+ display: flex;
452
+ justify-content: center;
453
+ align-items: center;
454
+ position: absolute;
455
+ top: -15px;
456
+ right: -15px;
457
+ }
458
+ </style>
459
+ <style id="selected-style"></style>
460
+ `;
461
+ }
462
+ updateStyle() {
463
+ const style = this.shadowRoot.querySelector("#selected-style");
464
+ if (style) style.innerHTML = `
465
+ :host {
466
+ --background: var(--${this.highlightStyle}-background);
467
+ --border: var(--${this.highlightStyle}-border);
468
+ }`;
469
+ }
470
+ attributeChangedCallback() {
471
+ if (this.hasAttribute("highlight-style")) this.highlightStyle = this.getAttribute("highlight-style");
472
+ }
473
+ connectedCallback() {
474
+ this.updateStyle();
475
+ if (this.icon) {
476
+ let iconContainer = document.createElement("div");
477
+ iconContainer.classList.add("icon");
478
+ let iconElement;
479
+ if (isDefinedIcon(this.icon)) iconElement = getIconElement(this.icon);
480
+ else {
481
+ iconElement = document.createElementNS("http://www.w3.org/2000/svg", "svg");
482
+ iconElement.setAttribute("viewBox", "0 0 16 16");
483
+ iconElement.innerHTML = this.icon;
484
+ }
485
+ if (iconElement) {
486
+ iconElement?.style.setProperty("width", "16px");
487
+ iconElement?.style.setProperty("height", "16px");
488
+ iconContainer.append(iconElement);
489
+ this.shadowRoot.append(iconContainer);
490
+ }
491
+ }
492
+ }
493
+ };
494
+ //#endregion
495
+ //#region ../../node_modules/astro/dist/runtime/client/dev-toolbar/ui-library/icon.js
496
+ var DevToolbarIcon = class extends HTMLElement {
497
+ _icon = void 0;
498
+ shadowRoot;
499
+ get icon() {
500
+ return this._icon;
501
+ }
502
+ set icon(name) {
503
+ this._icon = name;
504
+ this.buildTemplate();
505
+ }
506
+ constructor() {
507
+ super();
508
+ this.shadowRoot = this.attachShadow({ mode: "open" });
509
+ if (this.hasAttribute("icon")) this.icon = this.getAttribute("icon");
510
+ else this.buildTemplate();
511
+ }
512
+ getIconHTML(icon) {
513
+ if (icon && isDefinedIcon(icon)) return getIconElement(icon)?.outerHTML ?? "";
514
+ return "<slot />";
515
+ }
516
+ buildTemplate() {
517
+ this.shadowRoot.innerHTML = `
518
+ <style>
519
+ svg {
520
+ width: 100%;
521
+ height: 100%;
522
+ }
523
+
524
+ @media (forced-colors: active) {
525
+ svg path[fill="#fff"] {
526
+ fill: black;
527
+ }
528
+ }
529
+ </style>
530
+ ${this.getIconHTML(this._icon)}`;
531
+ }
532
+ };
533
+ //#endregion
534
+ //#region ../../node_modules/astro/dist/runtime/client/dev-toolbar/ui-library/radio-checkbox.js
535
+ var styles$2 = [
536
+ "purple",
537
+ "gray",
538
+ "red",
539
+ "green",
540
+ "yellow",
541
+ "blue"
542
+ ];
543
+ var DevToolbarRadioCheckbox = class extends HTMLElement {
544
+ _radioStyle = "purple";
545
+ input;
546
+ shadowRoot;
547
+ get radioStyle() {
548
+ return this._radioStyle;
549
+ }
550
+ set radioStyle(value) {
551
+ if (!styles$2.includes(value)) {
552
+ console.error(`Invalid style: ${value}, expected one of ${styles$2.join(", ")}.`);
553
+ return;
554
+ }
555
+ this._radioStyle = value;
556
+ this.updateStyle();
557
+ }
558
+ static observedAttributes = [
559
+ "radio-style",
560
+ "checked",
561
+ "disabled",
562
+ "name",
563
+ "value"
564
+ ];
565
+ constructor() {
566
+ super();
567
+ this.shadowRoot = this.attachShadow({ mode: "open" });
568
+ this.shadowRoot.innerHTML = `
569
+ <style>
570
+ :host {
571
+ --purple-unchecked: rgba(224, 204, 250, 0.33);
572
+ --purple-checked: rgba(224, 204, 250, 1);
573
+
574
+ --gray-unchecked: rgba(191, 193, 201, 0.33);
575
+ --gray-checked: rgba(191, 193, 201, 1);
576
+
577
+ --red-unchecked: rgba(249, 196, 215, 0.33);
578
+ --red-checked: rgba(179, 62, 102, 1);
579
+
580
+ --green-unchecked: rgba(213, 249, 196, 0.33);
581
+ --green-checked: rgba(61, 125, 31, 1);
582
+
583
+ --yellow-unchecked: rgba(255, 236, 179, 0.33);
584
+ --yellow-checked: rgba(181, 138, 45, 1);
585
+
586
+ --blue-unchecked: rgba(189, 195, 255, 0.33);
587
+ --blue-checked: rgba(54, 69, 217, 1);
588
+ }
589
+
590
+ input[type="radio"] {
591
+ appearance: none;
592
+ -webkit-appearance: none;
593
+ display: flex;
594
+ align-content: center;
595
+ justify-content: center;
596
+ border: 2px solid var(--unchecked-color);
597
+ border-radius: 9999px;
598
+ width: 16px;
599
+ height: 16px;
600
+ }
601
+
602
+ input[type="radio"]::before {
603
+ content: "";
604
+ background-color: var(--checked-color);
605
+ width: 8px;
606
+ height: 8px;
607
+ border-radius: 9999px;
608
+ visibility: hidden;
609
+ margin: 2px;
610
+ }
611
+
612
+ input[type="radio"]:checked {
613
+ border-color: var(--checked-color);
614
+ }
615
+
616
+ input[type="radio"]:checked::before {
617
+ visibility: visible;
618
+ }
619
+ </style>
620
+ <style id="selected-style"></style>
621
+ `;
622
+ this.input = document.createElement("input");
623
+ this.input.type = "radio";
624
+ this.shadowRoot.append(this.input);
625
+ }
626
+ connectedCallback() {
627
+ this.updateInputState();
628
+ this.updateStyle();
629
+ }
630
+ updateStyle() {
631
+ const styleElement = this.shadowRoot.querySelector("#selected-style");
632
+ if (styleElement) styleElement.innerHTML = `
633
+ :host {
634
+ --unchecked-color: var(--${this._radioStyle}-unchecked);
635
+ --checked-color: var(--${this._radioStyle}-checked);
636
+ }
637
+ `;
638
+ }
639
+ updateInputState() {
640
+ this.input.checked = this.hasAttribute("checked");
641
+ this.input.disabled = this.hasAttribute("disabled");
642
+ this.input.name = this.getAttribute("name") || "";
643
+ this.input.value = this.getAttribute("value") || "";
644
+ }
645
+ attributeChangedCallback() {
646
+ if (this.hasAttribute("radio-style")) this.radioStyle = this.getAttribute("radio-style");
647
+ this.updateInputState();
648
+ }
649
+ };
650
+ //#endregion
651
+ //#region ../../node_modules/astro/dist/runtime/client/dev-toolbar/ui-library/select.js
652
+ var styles$1 = [
653
+ "purple",
654
+ "gray",
655
+ "red",
656
+ "green",
657
+ "yellow",
658
+ "blue"
659
+ ];
660
+ var DevToolbarSelect = class extends HTMLElement {
661
+ shadowRoot;
662
+ element;
663
+ _selectStyle = "gray";
664
+ get selectStyle() {
665
+ return this._selectStyle;
666
+ }
667
+ set selectStyle(value) {
668
+ if (!styles$1.includes(value)) {
669
+ settings.logger.error(`Invalid style: ${value}, expected one of ${styles$1.join(", ")}.`);
670
+ return;
671
+ }
672
+ this._selectStyle = value;
673
+ this.updateStyle();
674
+ }
675
+ static observedAttributes = ["select-style"];
676
+ constructor() {
677
+ super();
678
+ this.shadowRoot = this.attachShadow({ mode: "open" });
679
+ this.shadowRoot.innerHTML = `
680
+ <style>
681
+ :host {
682
+ --purple-text: rgba(224, 204, 250, 1);
683
+ --purple-border: rgba(113, 24, 226, 1);
684
+
685
+ --gray-text: rgba(191, 193, 201, 1);
686
+ --gray-border:rgba(191, 193, 201, 1);
687
+
688
+ --red-text: rgba(249, 196, 215, 1);
689
+ --red-border: rgba(179, 62, 102, 1);
690
+
691
+ --green-text: rgba(213, 249, 196, 1);
692
+ --green-border: rgba(61, 125, 31, 1);
693
+
694
+ --yellow-text: rgba(249, 233, 196, 1);
695
+ --yellow-border: rgba(181, 138, 45, 1);
696
+
697
+ --blue-text: rgba(189, 195, 255, 1);
698
+ --blue-border: rgba(54, 69, 217, 1);
699
+
700
+ --text-color: var(--gray-text);
701
+ --border-color: var(--gray-border);
702
+ }
703
+ select {
704
+ appearance: none;
705
+ text-align-last: center;
706
+ display: inline-block;
707
+ font-family: system-ui, sans-serif;
708
+ font-size: 14px;
709
+ padding: 4px 24px 4px 8px;
710
+ border: 1px solid var(--border-color);
711
+ border-radius: 4px;
712
+ color: var(--text-color);
713
+ background-color: transparent;
714
+ background-image:
715
+ linear-gradient(45deg, transparent 50%, var(--text-color) 50%),
716
+ linear-gradient(135deg, var(--text-color) 50%, transparent 50%);
717
+ background-position:
718
+ calc(100% - 12px) calc(1em - 2px),
719
+ calc(100% - 8px) calc(1em - 2px);
720
+ background-size: 4px 4px;
721
+ background-repeat: no-repeat;
722
+ }
723
+ </style>
724
+ <style id="selected-style"></style>
725
+ <slot></slot>
726
+ `;
727
+ this.element = document.createElement("select");
728
+ this.shadowRoot.addEventListener("slotchange", (event) => {
729
+ if (event.target instanceof HTMLSlotElement) this.element.append(...event.target.assignedNodes());
730
+ });
731
+ }
732
+ connectedCallback() {
733
+ this.element.name = "dev-toolbar-select";
734
+ this.shadowRoot.append(this.element);
735
+ this.updateStyle();
736
+ }
737
+ attributeChangedCallback() {
738
+ if (this.hasAttribute("select-style")) this.selectStyle = this.getAttribute("select-style");
739
+ }
740
+ updateStyle() {
741
+ const style = this.shadowRoot.querySelector("#selected-style");
742
+ if (style) style.innerHTML = `
743
+ :host {
744
+ --text-color: var(--${this.selectStyle}-text);
745
+ --border-color: var(--${this.selectStyle}-border);
746
+ }
747
+ `;
748
+ }
749
+ };
750
+ //#endregion
751
+ //#region ../../node_modules/astro/dist/runtime/client/dev-toolbar/ui-library/toggle.js
752
+ var styles = [
753
+ "purple",
754
+ "gray",
755
+ "red",
756
+ "green",
757
+ "yellow",
758
+ "blue"
759
+ ];
760
+ var DevToolbarToggle = class extends HTMLElement {
761
+ shadowRoot;
762
+ input;
763
+ _toggleStyle = "gray";
764
+ get toggleStyle() {
765
+ return this._toggleStyle;
766
+ }
767
+ set toggleStyle(value) {
768
+ if (!styles.includes(value)) {
769
+ settings.logger.error(`Invalid style: ${value}, expected one of ${styles.join(", ")}.`);
770
+ return;
771
+ }
772
+ this._toggleStyle = value;
773
+ this.updateStyle();
774
+ }
775
+ static observedAttributes = ["toggle-style"];
776
+ constructor() {
777
+ super();
778
+ this.shadowRoot = this.attachShadow({ mode: "open" });
779
+ this.shadowRoot.innerHTML = `
780
+ <style>
781
+ :host {
782
+ --purple-bg-on: rgba(113, 24, 226, 1);
783
+ --purple-border-off: rgba(113, 24, 226, 1);
784
+ --purple-border-on: rgba(224, 204, 250, 1);
785
+
786
+ --gray-bg-on: rgba(61, 125, 31, 1);
787
+ --gray-border-off: rgba(145, 152, 173, 1);
788
+ --gray-border-on: rgba(213, 249, 196, 1);
789
+
790
+ --red-bg-on: rgba(179, 62, 102, 1);
791
+ --red-border-off: rgba(179, 62, 102, 1);
792
+ --red-border-on: rgba(249, 196, 215, 1);
793
+
794
+ --green-bg-on: rgba(61, 125, 31, 1);
795
+ --green-border-off: rgba(61, 125, 31, 1);
796
+ --green-border-on: rgba(213, 249, 196, 1);
797
+
798
+ --yellow-bg-on: rgba(181, 138, 45, 1);
799
+ --yellow-border-off: rgba(181, 138, 45, 1);
800
+ --yellow-border-on: rgba(255, 236, 179, 1);
801
+
802
+ --blue-bg-on: rgba(54, 69, 217, 1);
803
+ --blue-border-off: rgba(54, 69, 217, 1);
804
+ --blue-border-on: rgba(189, 195, 255, 1);
805
+ }
806
+
807
+ input {
808
+ appearance: none;
809
+ width: 32px;
810
+ height: 20px;
811
+ border: 1px solid var(--border-off);
812
+ transition: background-color 0.2s ease, border-color 0.2s ease;
813
+ border-radius: 9999px;
814
+ }
815
+
816
+ input::after {
817
+ content: '';
818
+ width: 16px;
819
+ display: inline-block;
820
+ height: 16px;
821
+ background-color: var(--border-off);
822
+ border-radius: 9999px;
823
+ transition: transform 0.2s ease, background-color 0.2s ease;
824
+ top: 1px;
825
+ left: 1px;
826
+ position: relative;
827
+ }
828
+
829
+ @media (forced-colors: active) {
830
+ input::after {
831
+ border: 1px solid black;
832
+ top: 0px;
833
+ left: 0px;
834
+ }
835
+ }
836
+
837
+ input:checked {
838
+ border: 1px solid var(--border-on);
839
+ background-color: var(--bg-on);
840
+ }
841
+
842
+ input:checked::after {
843
+ transform: translateX(12px);
844
+ background: var(--border-on);
845
+ }
846
+ </style>
847
+ <style id="selected-style"></style>
848
+ `;
849
+ this.input = document.createElement("input");
850
+ }
851
+ attributeChangedCallback() {
852
+ if (this.hasAttribute("toggle-style")) this.toggleStyle = this.getAttribute("toggle-style");
853
+ }
854
+ updateStyle() {
855
+ const style = this.shadowRoot.querySelector("#selected-style");
856
+ if (style) style.innerHTML = `
857
+ :host {
858
+ --bg-on: var(--${this.toggleStyle}-bg-on);
859
+ --border-off: var(--${this.toggleStyle}-border-off);
860
+ --border-on: var(--${this.toggleStyle}-border-on);
861
+ }
862
+ `;
863
+ }
864
+ connectedCallback() {
865
+ this.input.type = "checkbox";
866
+ this.input.name = "dev-toolbar-toggle";
867
+ this.shadowRoot.append(this.input);
868
+ this.updateStyle();
869
+ }
870
+ get value() {
871
+ return this.input.value;
872
+ }
873
+ set value(val) {
874
+ this.input.value = val;
875
+ }
876
+ };
877
+ //#endregion
878
+ //#region ../../node_modules/astro/dist/runtime/client/dev-toolbar/ui-library/tooltip.js
879
+ var DevToolbarTooltip = class extends HTMLElement {
880
+ sections = [];
881
+ shadowRoot;
882
+ constructor() {
883
+ super();
884
+ this.shadowRoot = this.attachShadow({ mode: "open" });
885
+ }
886
+ connectedCallback() {
887
+ this.shadowRoot.innerHTML = `
888
+ <style>
889
+ :host {
890
+ position: absolute;
891
+ display: none;
892
+ color: white;
893
+ background: linear-gradient(0deg, #310A65, #310A65), linear-gradient(0deg, #7118E2, #7118E2);
894
+ border: 1px solid rgba(113, 24, 226, 1);
895
+ border-radius: 4px;
896
+ padding: 0;
897
+ font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
898
+ font-size: 14px;
899
+ margin: 0;
900
+ z-index: 2000000001;
901
+ max-width: 45ch;
902
+ width: fit-content;
903
+ min-width: 30ch;
904
+ box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.30), 0px 1px 2px 0px rgba(0, 0, 0, 0.29), 0px 4px 4px 0px rgba(0, 0, 0, 0.26), 0px 10px 6px 0px rgba(0, 0, 0, 0.15), 0px 17px 7px 0px rgba(0, 0, 0, 0.04), 0px 26px 7px 0px rgba(0, 0, 0, 0.01);
905
+ }
906
+
907
+ :host([data-show="true"]) {
908
+ display: block;
909
+ }
910
+
911
+ svg {
912
+ vertical-align: bottom;
913
+ margin-inline-end: 4px;
914
+ }
915
+
916
+ hr {
917
+ border: 1px solid rgba(136, 58, 234, 0.33);
918
+ padding: 0;
919
+ margin: 0;
920
+ }
921
+
922
+ section {
923
+ padding: 8px;
924
+ }
925
+
926
+ .section-content {
927
+ max-height: 250px;
928
+ overflow-y: auto;
929
+ }
930
+
931
+ .modal-title {
932
+ display: flex;
933
+ justify-content: space-between;
934
+ align-items: center;
935
+ }
936
+
937
+ .modal-main-title {
938
+ font-weight: bold;
939
+ }
940
+
941
+ .modal-title + div {
942
+ margin-top: 8px;
943
+ }
944
+
945
+ .modal-cta {
946
+ display: block;
947
+ font-weight: bold;
948
+ font-size: 0.9em;
949
+ }
950
+
951
+ .clickable-section {
952
+ background: rgba(113, 24, 226, 1);
953
+ padding: 8px;
954
+ border: 0;
955
+ color: white;
956
+ font-family: system-ui, sans-serif;
957
+ text-align: left;
958
+ line-height: 1.2;
959
+ white-space: nowrap;
960
+ text-decoration: none;
961
+ margin: 0;
962
+ width: 100%;
963
+ }
964
+
965
+ .clickable-section:hover {
966
+ cursor: pointer;
967
+ }
968
+
969
+ pre, code {
970
+ background: rgb(78, 27, 145);
971
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
972
+ border-radius: 2px;
973
+ font-size: 14px;
974
+ padding: 2px;
975
+ }
976
+ pre {
977
+ padding: 1em;
978
+ margin: 0 0;
979
+ overflow: auto;
980
+ }
981
+ `;
982
+ const fragment = new DocumentFragment();
983
+ this.sections.forEach((section, index) => {
984
+ const sectionElement = section.clickAction ? document.createElement("button") : document.createElement("section");
985
+ if (section.clickAction) {
986
+ sectionElement.classList.add("clickable-section");
987
+ sectionElement.addEventListener("click", async () => {
988
+ await section.clickAction();
989
+ });
990
+ }
991
+ sectionElement.innerHTML = `
992
+ ${section.title ? `<div class="modal-title"><span class="modal-main-title">
993
+ ${section.icon ? this.getElementForIcon(section.icon) : ""}${section.title}</span>${section.inlineTitle ?? ""}</div>` : ""}
994
+ ${section.content ? `<div class="section-content">${section.content}</div>` : ""}
995
+ ${section.clickDescription ? `<span class="modal-cta">${section.clickDescription}</span>` : ""}
996
+ `;
997
+ fragment.append(sectionElement);
998
+ if (index < this.sections.length - 1) fragment.append(document.createElement("hr"));
999
+ });
1000
+ this.shadowRoot.append(fragment);
1001
+ }
1002
+ getElementForIcon(icon) {
1003
+ let iconElement;
1004
+ if (isDefinedIcon(icon)) iconElement = getIconElement(icon);
1005
+ else {
1006
+ iconElement = document.createElementNS("http://www.w3.org/2000/svg", "svg");
1007
+ iconElement.setAttribute("viewBox", "0 0 16 16");
1008
+ iconElement.innerHTML = icon;
1009
+ }
1010
+ iconElement?.style.setProperty("width", "16px");
1011
+ iconElement?.style.setProperty("height", "16px");
1012
+ return iconElement?.outerHTML ?? "";
1013
+ }
1014
+ };
1015
+ //#endregion
1016
+ export { DevToolbarBadge, DevToolbarButton, DevToolbarCard, DevToolbarHighlight, DevToolbarIcon, DevToolbarRadioCheckbox, DevToolbarSelect, DevToolbarToggle, DevToolbarTooltip, DevToolbarWindow };