@janga/norna 0.7.16 → 0.7.18

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 (342) hide show
  1. package/README.md +18 -9
  2. package/astro.config.mjs +35 -3
  3. package/bin/norna-cli.mjs +1 -1
  4. package/docs/README.md +16 -14
  5. package/docs/commands.md +2 -2
  6. package/docs/configuration.md +25 -2
  7. package/docs/content.md +92 -103
  8. package/docs/design/navigation-and-theme-plan.md +186 -0
  9. package/docs/design/norna-diagram-design.md +9 -9
  10. package/docs/design/site-examples-structure.md +15 -11
  11. package/docs/engine-development.md +19 -22
  12. package/docs/getting-started.md +21 -16
  13. package/docs/images-and-metadata.md +12 -9
  14. package/docs/pages.md +190 -0
  15. package/docs/public-files.md +49 -36
  16. package/docs/publishing.md +19 -3
  17. package/docs/site-files.md +46 -38
  18. package/docs/sitewide-content.md +20 -36
  19. package/docs/theme.md +109 -143
  20. package/docs/typography.md +19 -31
  21. package/examples/README.md +10 -4
  22. package/examples/complete-sites/dog-shelter-multi-page/.astro/collections/site.schema.json +17 -41
  23. package/examples/complete-sites/dog-shelter-multi-page/.astro/collections/sitewide.schema.json +26 -67
  24. package/examples/complete-sites/dog-shelter-multi-page/.astro/collections/theme.schema.json +185 -88
  25. package/examples/complete-sites/dog-shelter-multi-page/.astro/data-store.json +1 -1
  26. package/examples/complete-sites/dog-shelter-multi-page/.astro/dev-local.json +4 -4
  27. package/examples/complete-sites/dog-shelter-multi-page/.astro/dev.json +5 -5
  28. package/examples/complete-sites/dog-shelter-multi-page/.astro/dev.log +33 -23
  29. package/examples/complete-sites/dog-shelter-multi-page/README.md +1 -1
  30. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/_metadata.json +8 -8
  31. package/examples/complete-sites/dog-shelter-multi-page/site/.norna/generated-images.json +20 -20
  32. package/examples/complete-sites/dog-shelter-multi-page/site/{content.md → pages/000-home/content.md} +3 -4
  33. package/examples/complete-sites/dog-shelter-multi-page/site/{routes → pages}/010-dogs/content.md +3 -4
  34. package/examples/complete-sites/dog-shelter-multi-page/site/{routes → pages}/020-adopt/content.md +3 -4
  35. package/examples/complete-sites/dog-shelter-multi-page/site/sitewide-content.yaml +2 -4
  36. package/examples/complete-sites/dog-shelter-single-page/.astro/collections/site.schema.json +17 -41
  37. package/examples/complete-sites/dog-shelter-single-page/.astro/collections/sitewide.schema.json +26 -67
  38. package/examples/complete-sites/dog-shelter-single-page/.astro/collections/theme.schema.json +185 -88
  39. package/examples/complete-sites/dog-shelter-single-page/.astro/data-store.json +1 -1
  40. package/examples/complete-sites/dog-shelter-single-page/.astro/dev-local.json +8 -0
  41. package/examples/complete-sites/dog-shelter-single-page/.astro/dev.json +5 -5
  42. package/examples/complete-sites/dog-shelter-single-page/.astro/dev.log +16 -12
  43. package/examples/complete-sites/dog-shelter-single-page/README.md +1 -1
  44. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/_metadata.json +8 -8
  45. package/examples/complete-sites/dog-shelter-single-page/site/.norna/generated-images.json +12 -12
  46. package/examples/complete-sites/dog-shelter-single-page/site/{content.md → pages/000-home/content.md} +5 -2
  47. package/examples/complete-sites/dog-shelter-single-page/site/sitewide-content.yaml +2 -4
  48. package/examples/feature-demos/media-and-surfaces/.astro/collections/site.schema.json +17 -41
  49. package/examples/feature-demos/media-and-surfaces/.astro/collections/sitewide.schema.json +26 -67
  50. package/examples/feature-demos/media-and-surfaces/.astro/collections/theme.schema.json +180 -91
  51. package/examples/feature-demos/media-and-surfaces/.astro/data-store.json +1 -1
  52. package/examples/feature-demos/media-and-surfaces/.astro/dev.log +4 -14
  53. package/examples/feature-demos/media-and-surfaces/README.md +2 -2
  54. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/_metadata.json +9 -9
  55. package/examples/feature-demos/media-and-surfaces/site/.norna/generated-images.json +16 -16
  56. package/examples/feature-demos/media-and-surfaces/site/{content.md → pages/000-home/content.md} +4 -7
  57. package/examples/feature-demos/media-and-surfaces/site/{routes → pages}/010-media/content.md +6 -5
  58. package/examples/feature-demos/media-and-surfaces/site/{routes → pages}/020-surfaces/content.md +9 -7
  59. package/examples/feature-demos/media-and-surfaces/site/pages/020-surfaces/theme.yaml +2 -0
  60. package/examples/feature-demos/media-and-surfaces/site/sitewide-content.yaml +0 -2
  61. package/examples/feature-demos/sitewide-content/README.md +3 -3
  62. package/examples/feature-demos/sitewide-content/site/pages/000-home/content.md +17 -0
  63. package/examples/feature-demos/sitewide-content/site/pages/010-logo-and-navigation/content.md +17 -0
  64. package/examples/feature-demos/sitewide-content/site/{routes → pages}/020-notices/content.md +7 -6
  65. package/examples/feature-demos/sitewide-content/site/{routes → pages}/030-footer/content.md +6 -5
  66. package/examples/feature-demos/sitewide-content/site/sitewide-content.yaml +4 -13
  67. package/examples/feature-demos/theme-preset-documentation/README.md +16 -0
  68. package/examples/feature-demos/theme-preset-documentation/site/.norna/generated-images.json +74 -0
  69. package/examples/feature-demos/{theme-presets/site/routes/020-documentation → theme-preset-documentation/site/pages/000-home}/content.md +4 -7
  70. package/examples/feature-demos/theme-preset-documentation/site/sitewide-content.yaml +3 -0
  71. package/examples/feature-demos/theme-preset-portfolio/README.md +16 -0
  72. package/examples/feature-demos/theme-preset-portfolio/site/.norna/generated-images.json +74 -0
  73. package/examples/feature-demos/theme-preset-portfolio/site/config.yaml +1 -0
  74. package/examples/feature-demos/{theme-presets/site/routes/010-portfolio → theme-preset-portfolio/site/pages/000-home}/content.md +4 -7
  75. package/examples/feature-demos/theme-preset-portfolio/site/public/robots.txt +2 -0
  76. package/examples/feature-demos/theme-preset-portfolio/site/sitewide-content.yaml +3 -0
  77. package/examples/feature-demos/theme-preset-project/README.md +16 -0
  78. package/examples/feature-demos/theme-preset-project/site/.norna/generated-images.json +74 -0
  79. package/examples/feature-demos/theme-preset-project/site/config.yaml +1 -0
  80. package/examples/feature-demos/{theme-presets/site/routes/030-project → theme-preset-project/site/pages/000-home}/content.md +4 -7
  81. package/examples/feature-demos/theme-preset-project/site/public/robots.txt +2 -0
  82. package/examples/feature-demos/theme-preset-project/site/sitewide-content.yaml +3 -0
  83. package/examples/feature-demos/theme-preset-statement/README.md +16 -0
  84. package/examples/feature-demos/theme-preset-statement/site/.norna/generated-images.json +74 -0
  85. package/examples/feature-demos/theme-preset-statement/site/config.yaml +1 -0
  86. package/examples/feature-demos/{theme-presets/site/routes/040-statement → theme-preset-statement/site/pages/000-home}/content.md +4 -7
  87. package/examples/feature-demos/theme-preset-statement/site/public/robots.txt +2 -0
  88. package/examples/feature-demos/theme-preset-statement/site/sitewide-content.yaml +3 -0
  89. package/fixtures/basic/site/{content.md → pages/000-home/content.md} +5 -6
  90. package/fixtures/basic/site/sitewide-content.yaml +1 -8
  91. package/fixtures/basic/site/theme.yaml +1 -8
  92. package/fixtures/content-model-v2/site/{content.md → pages/000-home/content.md} +11 -13
  93. package/fixtures/content-model-v2/site/pages/010-guide/content.md +18 -0
  94. package/fixtures/nested-pages/.astro/collections/site.schema.json +35 -0
  95. package/fixtures/nested-pages/.astro/collections/sitewide.schema.json +97 -0
  96. package/fixtures/nested-pages/.astro/collections/theme.schema.json +844 -0
  97. package/fixtures/nested-pages/.astro/content-assets.mjs +4 -0
  98. package/fixtures/nested-pages/.astro/content-modules.mjs +1 -0
  99. package/fixtures/nested-pages/.astro/content.d.ts +183 -0
  100. package/fixtures/nested-pages/.astro/data-store.json +1 -0
  101. package/fixtures/nested-pages/.astro/dev-local.json +8 -0
  102. package/fixtures/nested-pages/.astro/dev.log +1128 -0
  103. package/fixtures/nested-pages/.astro/settings.json +5 -0
  104. package/fixtures/nested-pages/.astro/types.d.ts +2 -0
  105. package/fixtures/nested-pages/node_modules/.vite/deps/_metadata.json +74 -0
  106. package/fixtures/nested-pages/node_modules/.vite/deps/astro-D_GIpJIE.js +434 -0
  107. package/fixtures/nested-pages/node_modules/.vite/deps/astro-D_GIpJIE.js.map +1 -0
  108. package/fixtures/nested-pages/node_modules/.vite/deps/astro_n_aria-query.js +6390 -0
  109. package/fixtures/nested-pages/node_modules/.vite/deps/astro_n_aria-query.js.map +1 -0
  110. package/fixtures/nested-pages/node_modules/.vite/deps/astro_n_axobject-query.js +2702 -0
  111. package/fixtures/nested-pages/node_modules/.vite/deps/astro_n_axobject-query.js.map +1 -0
  112. package/fixtures/nested-pages/node_modules/.vite/deps/astro_n_html-escaper.js +65 -0
  113. package/fixtures/nested-pages/node_modules/.vite/deps/astro_n_html-escaper.js.map +1 -0
  114. package/fixtures/nested-pages/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +455 -0
  115. package/fixtures/nested-pages/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +1 -0
  116. package/fixtures/nested-pages/node_modules/.vite/deps/audit-DM9Hkl5B.js +1534 -0
  117. package/fixtures/nested-pages/node_modules/.vite/deps/audit-DM9Hkl5B.js.map +1 -0
  118. package/fixtures/nested-pages/node_modules/.vite/deps/highlight-DnZ1ULOL.js +48 -0
  119. package/fixtures/nested-pages/node_modules/.vite/deps/highlight-DnZ1ULOL.js.map +1 -0
  120. package/fixtures/nested-pages/node_modules/.vite/deps/icons-RyebKi45.js +42 -0
  121. package/fixtures/nested-pages/node_modules/.vite/deps/icons-RyebKi45.js.map +1 -0
  122. package/fixtures/nested-pages/node_modules/.vite/deps/package.json +3 -0
  123. package/fixtures/nested-pages/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +4 -0
  124. package/fixtures/nested-pages/node_modules/.vite/deps/settings-DaU-gNnK.js +190 -0
  125. package/fixtures/nested-pages/node_modules/.vite/deps/settings-DaU-gNnK.js.map +1 -0
  126. package/fixtures/nested-pages/node_modules/.vite/deps/toolbar-63PA619H.js +458 -0
  127. package/fixtures/nested-pages/node_modules/.vite/deps/toolbar-63PA619H.js.map +1 -0
  128. package/fixtures/nested-pages/node_modules/.vite/deps/ui-library--bkcNSYz.js +1016 -0
  129. package/fixtures/nested-pages/node_modules/.vite/deps/ui-library--bkcNSYz.js.map +1 -0
  130. package/fixtures/nested-pages/node_modules/.vite/deps/window-jPkpKVcy.js +32 -0
  131. package/fixtures/nested-pages/node_modules/.vite/deps/window-jPkpKVcy.js.map +1 -0
  132. package/fixtures/nested-pages/node_modules/.vite/deps/xray-BXCHpEJP.js +111 -0
  133. package/fixtures/nested-pages/node_modules/.vite/deps/xray-BXCHpEJP.js.map +1 -0
  134. package/fixtures/nested-pages/site/.norna/generated-images.json +10 -0
  135. package/fixtures/nested-pages/site/config.yaml +3 -0
  136. package/fixtures/nested-pages/site/pages/000-home/content.md +15 -0
  137. package/fixtures/nested-pages/site/pages/010-guides/content.md +15 -0
  138. package/fixtures/nested-pages/site/pages/010-guides/pages/010-installation/content.md +21 -0
  139. package/fixtures/nested-pages/site/pages/010-guides/pages/010-installation/images/diagram.svg +21 -0
  140. package/fixtures/nested-pages/site/pages/010-guides/pages/010-installation/pages/010-macos/content.md +18 -0
  141. package/fixtures/nested-pages/site/pages/010-guides/pages/010-installation/theme.yaml +2 -0
  142. package/fixtures/nested-pages/site/pages/010-guides/pages/020-workflows/content.md +11 -0
  143. package/fixtures/nested-pages/site/pages/010-guides/pages/030-release-notes/content.md +9 -0
  144. package/fixtures/nested-pages/site/pages/010-guides/pages/040-configuration/content.md +3 -0
  145. package/fixtures/nested-pages/site/pages/010-guides/pages/050-content/content.md +3 -0
  146. package/fixtures/nested-pages/site/pages/010-guides/pages/060-themes/content.md +3 -0
  147. package/fixtures/nested-pages/site/pages/010-guides/pages/070-images/content.md +3 -0
  148. package/fixtures/nested-pages/site/pages/010-guides/pages/080-cards/content.md +3 -0
  149. package/fixtures/nested-pages/site/pages/010-guides/pages/090-notes/content.md +3 -0
  150. package/fixtures/nested-pages/site/pages/010-guides/pages/100-validation/content.md +3 -0
  151. package/fixtures/nested-pages/site/pages/010-guides/pages/110-synchronization/content.md +3 -0
  152. package/fixtures/nested-pages/site/pages/010-guides/pages/120-building/content.md +3 -0
  153. package/fixtures/nested-pages/site/pages/010-guides/pages/130-publishing/content.md +3 -0
  154. package/fixtures/nested-pages/site/pages/010-guides/pages/140-troubleshooting/content.md +3 -0
  155. package/fixtures/nested-pages/site/pages/010-guides/pages/150-migration/content.md +3 -0
  156. package/fixtures/nested-pages/site/pages/010-guides/pages/160-accessibility/content.md +3 -0
  157. package/fixtures/nested-pages/site/pages/010-guides/pages/170-performance/content.md +3 -0
  158. package/fixtures/nested-pages/site/pages/010-guides/pages/180-security/content.md +3 -0
  159. package/fixtures/nested-pages/site/pages/010-guides/pages/190-localization/content.md +3 -0
  160. package/fixtures/nested-pages/site/pages/010-guides/pages/200-upgrading/content.md +3 -0
  161. package/fixtures/nested-pages/site/pages/010-guides/pages/210-faq/content.md +3 -0
  162. package/fixtures/nested-pages/site/pages/010-guides/theme.yaml +7 -0
  163. package/fixtures/nested-pages/site/pages/020-reference/content.md +10 -0
  164. package/fixtures/nested-pages/site/pages/020-reference/pages/010-installation/content.md +11 -0
  165. package/fixtures/nested-pages/site/theme.yaml +1 -0
  166. package/package.json +8 -4
  167. package/schemas/config.schema.json +46 -5
  168. package/schemas/content-frontmatter.schema.json +28 -63
  169. package/schemas/manifest.json +4 -2
  170. package/schemas/page-theme.schema.json +192 -0
  171. package/schemas/sitewide-content.schema.json +58 -132
  172. package/schemas/theme.schema.json +434 -152
  173. package/scripts/check-config.mjs +8 -6
  174. package/scripts/deploy-site.mjs +6 -8
  175. package/scripts/doctor.mjs +2 -2
  176. package/scripts/generate-images.mjs +15 -29
  177. package/scripts/generate-schemas.mjs +7 -218
  178. package/scripts/lib/base-path-redirect.mjs +9 -0
  179. package/scripts/lib/editor-language-service.mjs +125 -79
  180. package/scripts/lib/example-sites.mjs +15 -3
  181. package/scripts/lib/heading-ids.mjs +161 -0
  182. package/scripts/lib/navigation-model.mjs +51 -0
  183. package/scripts/lib/norna-markdown-blocks.mjs +3 -4
  184. package/scripts/lib/page-model.mjs +102 -0
  185. package/scripts/lib/presentation.mjs +25 -17
  186. package/scripts/lib/project-config.mjs +46 -8
  187. package/scripts/lib/schema-definitions.mjs +78 -55
  188. package/scripts/lib/schema-editor-metadata.mjs +519 -0
  189. package/scripts/lib/schema-value-definitions.mjs +20 -6
  190. package/scripts/lib/site-content.mjs +159 -97
  191. package/scripts/lib/site-conventions.mjs +1 -0
  192. package/scripts/lib/site-paths.mjs +11 -5
  193. package/scripts/lib/theme-config.mjs +12 -18
  194. package/scripts/lib/theme-presets.mjs +55 -14
  195. package/scripts/release.mjs +1 -1
  196. package/scripts/show-typography.mjs +4 -30
  197. package/scripts/sync-content-sections.mjs +107 -68
  198. package/scripts/{test-temporary-visibility.mjs → test-banner-visibility.mjs} +8 -25
  199. package/scripts/test-client-javascript.mjs +50 -46
  200. package/scripts/test-content-check.mjs +153 -69
  201. package/scripts/test-content-model-v2.mjs +566 -285
  202. package/scripts/test-documentation.mjs +10 -3
  203. package/scripts/test-editor-language-service.mjs +172 -25
  204. package/scripts/test-engine-commands.mjs +6 -5
  205. package/scripts/test-examples.mjs +30 -1
  206. package/scripts/test-heading-ids.mjs +68 -0
  207. package/scripts/test-navigation-model.mjs +63 -0
  208. package/scripts/test-navigation.mjs +11 -2
  209. package/scripts/test-nested-pages.mjs +125 -0
  210. package/scripts/test-package-check.mjs +55 -95
  211. package/scripts/test-page-model.mjs +108 -0
  212. package/scripts/test-project-config.mjs +22 -3
  213. package/scripts/test-schemas.mjs +82 -15
  214. package/scripts/test-theme-presets.mjs +57 -42
  215. package/src/components/NavigationPageTree.astro +157 -0
  216. package/src/components/PageContentsLinks.astro +40 -0
  217. package/src/components/SectionNavigationScript.astro +117 -5
  218. package/src/components/SiteBreadcrumbs.astro +32 -0
  219. package/src/components/SiteNavigation.astro +97 -68
  220. package/src/components/SitePage.astro +93 -55
  221. package/src/components/SiteSection.astro +29 -27
  222. package/src/components/SiteTreeNavigation.astro +35 -0
  223. package/src/components/TreeNavigationScript.astro +83 -0
  224. package/src/content.config.ts +8 -10
  225. package/src/layouts/BaseLayout.astro +21 -20
  226. package/src/lib/pageThemes.ts +44 -0
  227. package/src/lib/sectionContent.ts +106 -107
  228. package/src/lib/siteNavigation.ts +49 -0
  229. package/src/lib/sitePages.ts +96 -38
  230. package/src/pages/{[slug].astro → [...slug].astro} +2 -2
  231. package/src/pages/index.astro +2 -1
  232. package/src/styles/global.css +743 -57
  233. package/starters/basic/README.md +9 -11
  234. package/starters/basic/site/{content.md → pages/000-home/content.md} +7 -4
  235. package/starters/basic/site/sitewide-content.yaml +1 -10
  236. package/starters/basic/site/theme.yaml +1 -105
  237. package/starters/project/README.md +14 -14
  238. package/starters/project/site/{content.md → pages/000-home/content.md} +5 -4
  239. package/starters/project/site/{routes → pages}/010-guide/content.md +5 -4
  240. package/starters/project/site/sitewide-content.yaml +1 -10
  241. package/starters/project/site/theme.yaml +1 -31
  242. package/docs/routes.md +0 -121
  243. package/examples/feature-demos/media-and-surfaces/site/routes/020-surfaces/theme.yaml +0 -3
  244. package/examples/feature-demos/sitewide-content/site/content.md +0 -16
  245. package/examples/feature-demos/sitewide-content/site/routes/010-identity/content.md +0 -20
  246. package/examples/feature-demos/theme-presets/README.md +0 -18
  247. package/examples/feature-demos/theme-presets/site/.norna/generated-images.json +0 -290
  248. package/examples/feature-demos/theme-presets/site/content.md +0 -17
  249. package/examples/feature-demos/theme-presets/site/sitewide-content.yaml +0 -12
  250. package/examples/feature-demos/theme-presets/site/theme.yaml +0 -1
  251. package/fixtures/content-model-v2/site/routes/010-guide/content.md +0 -17
  252. package/scripts/lib/route-model.mjs +0 -17
  253. package/scripts/test-route-model.mjs +0 -32
  254. package/src/lib/routeThemes.ts +0 -41
  255. /package/examples/complete-sites/dog-shelter-multi-page/site/{images/intro → pages/000-home/images}/shelter-dog.jpg +0 -0
  256. /package/examples/complete-sites/dog-shelter-multi-page/site/{routes/010-dogs/images/dogs → pages/010-dogs/images}/rex.jpg +0 -0
  257. /package/examples/complete-sites/dog-shelter-multi-page/site/{routes/010-dogs/images/dogs → pages/010-dogs/images}/rover.jpg +0 -0
  258. /package/examples/complete-sites/dog-shelter-multi-page/site/{routes/020-adopt/images/adopt → pages/020-adopt/images}/adoption-dog.jpg +0 -0
  259. /package/examples/complete-sites/dog-shelter-single-page/site/{images/you-can-help → pages/000-home/images}/foster-dog.jpg +0 -0
  260. /package/examples/complete-sites/dog-shelter-single-page/site/{images/what-we-do → pages/000-home/images}/rescue-dog.jpg +0 -0
  261. /package/examples/feature-demos/media-and-surfaces/site/{routes/010-media/images/cards → pages/010-media/images}/card-carousel.svg +0 -0
  262. /package/examples/feature-demos/media-and-surfaces/site/{routes/010-media/images/cards → pages/010-media/images}/card-stack.svg +0 -0
  263. /package/examples/feature-demos/media-and-surfaces/site/{routes/010-media/images/cards → pages/010-media/images}/card-surfaces.svg +0 -0
  264. /package/examples/feature-demos/media-and-surfaces/site/{routes/010-media/images/carousel → pages/010-media/images}/carousel-one.svg +0 -0
  265. /package/examples/feature-demos/media-and-surfaces/site/{routes/010-media/images/carousel → pages/010-media/images}/carousel-three.svg +0 -0
  266. /package/examples/feature-demos/media-and-surfaces/site/{routes/010-media/images/carousel → pages/010-media/images}/carousel-two.svg +0 -0
  267. /package/examples/feature-demos/media-and-surfaces/site/{routes/010-media/images/stack → pages/010-media/images}/stack-one.svg +0 -0
  268. /package/examples/feature-demos/media-and-surfaces/site/{routes/010-media/images/stack → pages/010-media/images}/stack-two.svg +0 -0
  269. /package/examples/feature-demos/{theme-presets → theme-preset-documentation}/site/config.yaml +0 -0
  270. /package/examples/feature-demos/{theme-presets/site/routes/020-documentation/images/documentation → theme-preset-documentation/site/pages/000-home/images}/black-schnauzer.jpg +0 -0
  271. /package/examples/feature-demos/{theme-presets/site/routes/020-documentation/images/documentation → theme-preset-documentation/site/pages/000-home/images}/retriever-portrait.jpg +0 -0
  272. /package/examples/feature-demos/{theme-presets/site/routes/020-documentation/images/documentation → theme-preset-documentation/site/pages/000-home/images}/schnauzer-portrait.jpg +0 -0
  273. /package/examples/feature-demos/{theme-presets → theme-preset-documentation}/site/public/robots.txt +0 -0
  274. /package/examples/feature-demos/{theme-presets/site/routes/020-documentation → theme-preset-documentation/site}/theme.yaml +0 -0
  275. /package/examples/feature-demos/{theme-presets/site/routes/010-portfolio/images/portfolio → theme-preset-portfolio/site/pages/000-home/images}/puppy-portrait.jpg +0 -0
  276. /package/examples/feature-demos/{theme-presets/site/routes/010-portfolio/images/portfolio → theme-preset-portfolio/site/pages/000-home/images}/shepherd-portrait.jpg +0 -0
  277. /package/examples/feature-demos/{theme-presets/site/routes/010-portfolio/images/portfolio → theme-preset-portfolio/site/pages/000-home/images}/white-puppy.jpg +0 -0
  278. /package/examples/feature-demos/{theme-presets/site/routes/010-portfolio → theme-preset-portfolio/site}/theme.yaml +0 -0
  279. /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/collections/routeTheme.schema.json +0 -0
  280. /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/collections/site.schema.json +0 -0
  281. /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/collections/sitewide.schema.json +0 -0
  282. /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/collections/theme.schema.json +0 -0
  283. /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/content-assets.mjs +0 -0
  284. /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/content-modules.mjs +0 -0
  285. /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/content.d.ts +0 -0
  286. /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/data-store.json +0 -0
  287. /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/dev-local.json +0 -0
  288. /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/dev.json +0 -0
  289. /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/dev.log +0 -0
  290. /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/settings.json +0 -0
  291. /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/types.d.ts +0 -0
  292. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/_metadata.json +0 -0
  293. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/astro-D_GIpJIE.js +0 -0
  294. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/astro-D_GIpJIE.js.map +0 -0
  295. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/astro_n_aria-query.js +0 -0
  296. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/astro_n_aria-query.js.map +0 -0
  297. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/astro_n_axobject-query.js +0 -0
  298. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/astro_n_axobject-query.js.map +0 -0
  299. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/astro_n_html-escaper.js +0 -0
  300. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/astro_n_html-escaper.js.map +0 -0
  301. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +0 -0
  302. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +0 -0
  303. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/audit-DM9Hkl5B.js +0 -0
  304. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/audit-DM9Hkl5B.js.map +0 -0
  305. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/embla-carousel.js +0 -0
  306. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/embla-carousel.js.map +0 -0
  307. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/highlight-DnZ1ULOL.js +0 -0
  308. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/highlight-DnZ1ULOL.js.map +0 -0
  309. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/icons-RyebKi45.js +0 -0
  310. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/icons-RyebKi45.js.map +0 -0
  311. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/package.json +0 -0
  312. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +0 -0
  313. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/settings-DaU-gNnK.js +0 -0
  314. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/settings-DaU-gNnK.js.map +0 -0
  315. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/toolbar-63PA619H.js +0 -0
  316. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/toolbar-63PA619H.js.map +0 -0
  317. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/ui-library--bkcNSYz.js +0 -0
  318. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/ui-library--bkcNSYz.js.map +0 -0
  319. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/window-jPkpKVcy.js +0 -0
  320. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/window-jPkpKVcy.js.map +0 -0
  321. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/xray-BXCHpEJP.js +0 -0
  322. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/xray-BXCHpEJP.js.map +0 -0
  323. /package/examples/feature-demos/{theme-presets/site/routes/030-project/images/project → theme-preset-project/site/pages/000-home/images}/boxer-portrait.jpg +0 -0
  324. /package/examples/feature-demos/{theme-presets/site/routes/030-project/images/project → theme-preset-project/site/pages/000-home/images}/grass-puppy.jpg +0 -0
  325. /package/examples/feature-demos/{theme-presets/site/routes/030-project/images/project → theme-preset-project/site/pages/000-home/images}/grey-street-dog.jpg +0 -0
  326. /package/examples/feature-demos/{theme-presets/site/routes/030-project → theme-preset-project/site}/theme.yaml +0 -0
  327. /package/examples/feature-demos/{theme-presets/site/routes/040-statement/images/statement → theme-preset-statement/site/pages/000-home/images}/black-pedigree.jpg +0 -0
  328. /package/examples/feature-demos/{theme-presets/site/routes/040-statement/images/statement → theme-preset-statement/site/pages/000-home/images}/sheepdog-grass.jpg +0 -0
  329. /package/examples/feature-demos/{theme-presets/site/routes/040-statement/images/statement → theme-preset-statement/site/pages/000-home/images}/sheepdog-wide.jpg +0 -0
  330. /package/examples/feature-demos/{theme-presets/site/routes/040-statement → theme-preset-statement/site}/theme.yaml +0 -0
  331. /package/fixtures/basic/site/{images/work → pages/000-home/images}/.gitkeep +0 -0
  332. /package/fixtures/content-model-v2/site/{images/card-section → pages/000-home/images}/adopt.svg +0 -0
  333. /package/fixtures/content-model-v2/site/{images/intro → pages/000-home/images}/detail.jpg +0 -0
  334. /package/fixtures/content-model-v2/site/{images/intro → pages/000-home/images}/duplicate.jpg +0 -0
  335. /package/fixtures/content-model-v2/site/{images/card-section → pages/000-home/images}/foster.svg +0 -0
  336. /package/fixtures/content-model-v2/site/{images/intro → pages/000-home/images}/hero.jpg +0 -0
  337. /package/fixtures/content-model-v2/site/{images/plain → pages/000-home/images}/image.jpg +0 -0
  338. /package/fixtures/content-model-v2/site/{images/timed → pages/000-home/images}/slide-one.jpg +0 -0
  339. /package/fixtures/content-model-v2/site/{images/timed → pages/000-home/images}/slide-three.jpg +0 -0
  340. /package/fixtures/content-model-v2/site/{images/timed → pages/000-home/images}/slide-two.jpg +0 -0
  341. /package/fixtures/content-model-v2/site/{routes/010-guide/images/intro → pages/010-guide/images}/duplicate.jpg +0 -0
  342. /package/starters/basic/site/{images/work → pages/000-home/images}/.gitkeep +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-library--bkcNSYz.js","names":["sizes","styles","styles","styles","styles","styles","styles"],"sources":["../../../../../node_modules/astro/dist/runtime/client/dev-toolbar/ui-library/badge.js","../../../../../node_modules/astro/dist/runtime/client/dev-toolbar/ui-library/button.js","../../../../../node_modules/astro/dist/runtime/client/dev-toolbar/ui-library/card.js","../../../../../node_modules/astro/dist/runtime/client/dev-toolbar/ui-library/highlight.js","../../../../../node_modules/astro/dist/runtime/client/dev-toolbar/ui-library/icon.js","../../../../../node_modules/astro/dist/runtime/client/dev-toolbar/ui-library/radio-checkbox.js","../../../../../node_modules/astro/dist/runtime/client/dev-toolbar/ui-library/select.js","../../../../../node_modules/astro/dist/runtime/client/dev-toolbar/ui-library/toggle.js","../../../../../node_modules/astro/dist/runtime/client/dev-toolbar/ui-library/tooltip.js"],"sourcesContent":["import { settings } from \"../settings.js\";\nconst sizes = [\"small\", \"large\"];\nconst styles = [\"purple\", \"gray\", \"red\", \"green\", \"yellow\", \"blue\"];\nclass DevToolbarBadge extends HTMLElement {\n _size = \"small\";\n _badgeStyle = \"purple\";\n get size() {\n return this._size;\n }\n set size(value) {\n if (!sizes.includes(value)) {\n settings.logger.error(\n `Invalid size: ${value}, expected one of ${sizes.join(\", \")}, got ${value}.`\n );\n return;\n }\n this._size = value;\n this.updateStyle();\n }\n get badgeStyle() {\n return this._badgeStyle;\n }\n set badgeStyle(value) {\n if (!styles.includes(value)) {\n settings.logger.error(\n `Invalid style: ${value}, expected one of ${styles.join(\", \")}, got ${value}.`\n );\n return;\n }\n this._badgeStyle = value;\n this.updateStyle();\n }\n shadowRoot;\n static observedAttributes = [\"badge-style\", \"size\"];\n constructor() {\n super();\n this.shadowRoot = this.attachShadow({ mode: \"open\" });\n this.shadowRoot.innerHTML = `\n\t\t\t<style>\n\t\t\t\t.badge {\n\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\tborder-radius: 4px;\n\t\t\t\t\tborder: 1px solid transparent;\n\t\t\t\t\tpadding: 8px;\n\t\t\t\t\tfont-size: 12px;\n\t\t\t\t\tcolor: var(--text-color);\n\t\t\t\t\theight: var(--size);\n\t\t\t\t\tborder: 1px solid var(--border-color);\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\talign-items: center;\n\t\t\t\t\tjustify-content: center;\n\t\t\t\t\tfont-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n\n\t\t\t\t\t--purple-text: rgba(224, 204, 250, 1);\n\t\t\t\t\t--purple-border: rgba(113, 24, 226, 1);\n\n\t\t\t\t\t--gray-text: rgba(191, 193, 201, 1);\n\t\t\t\t\t--gray-border:rgba(191, 193, 201, 1);\n\n\t\t\t\t\t--red-text: rgba(249, 196, 215, 1);\n\t\t\t\t\t--red-border: rgba(179, 62, 102, 1);\n\n\t\t\t\t\t--green-text: rgba(213, 249, 196, 1);\n\t\t\t\t\t--green-border: rgba(61, 125, 31, 1);\n\n\t\t\t\t\t--yellow-text: rgba(249, 233, 196, 1);\n\t\t\t\t\t--yellow-border: rgba(181, 138, 45, 1);\n\n\t\t\t\t\t--blue-text: rgba(189, 195, 255, 1);\n\t\t\t\t\t--blue-border: rgba(54, 69, 217, 1);\n\n\t\t\t\t\t--large: 24px;\n\t\t\t\t\t--small: 20px;\n\t\t\t\t}\n\t\t\t</style>\n\t\t\t<style id=\"selected-style\"></style>\n\n\t\t\t<div class=\"badge\">\n\t\t\t\t<slot></slot>\n\t\t\t</div>\n\t\t\t`;\n }\n connectedCallback() {\n this.updateStyle();\n }\n attributeChangedCallback() {\n if (this.hasAttribute(\"badge-style\"))\n this.badgeStyle = this.getAttribute(\"badge-style\");\n if (this.hasAttribute(\"size\")) this.size = this.getAttribute(\"size\");\n }\n updateStyle() {\n const style = this.shadowRoot.querySelector(\"#selected-style\");\n if (style) {\n style.innerHTML = `\n\t\t\t.badge {\n\t\t\t\t--text-color: var(--${this.badgeStyle}-text);\n\t\t\t\t--border-color: var(--${this.badgeStyle}-border);\n\t\t\t\t--size: var(--${this.size});\n\t\t\t}`;\n }\n }\n}\nexport {\n DevToolbarBadge\n};\n","import { settings } from \"../settings.js\";\nconst sizes = [\"small\", \"medium\", \"large\"];\nconst styles = [\"ghost\", \"outline\", \"purple\", \"gray\", \"red\", \"green\", \"yellow\", \"blue\"];\nconst borderRadii = [\"normal\", \"rounded\"];\nclass DevToolbarButton extends HTMLElement {\n _size = \"small\";\n _buttonStyle = \"purple\";\n _buttonBorderRadius = \"normal\";\n get size() {\n return this._size;\n }\n set size(value) {\n if (!sizes.includes(value)) {\n settings.logger.error(\n `Invalid size: ${value}, expected one of ${sizes.join(\", \")}, got ${value}.`\n );\n return;\n }\n this._size = value;\n this.updateStyle();\n }\n get buttonStyle() {\n return this._buttonStyle;\n }\n set buttonStyle(value) {\n if (!styles.includes(value)) {\n settings.logger.error(\n `Invalid style: ${value}, expected one of ${styles.join(\", \")}, got ${value}.`\n );\n return;\n }\n this._buttonStyle = value;\n this.updateStyle();\n }\n get buttonBorderRadius() {\n return this._buttonBorderRadius;\n }\n set buttonBorderRadius(value) {\n if (!borderRadii.includes(value)) {\n settings.logger.error(\n `Invalid border-radius: ${value}, expected one of ${borderRadii.join(\", \")}, got ${value}.`\n );\n return;\n }\n this._buttonBorderRadius = value;\n this.updateStyle();\n }\n static observedAttributes = [\"button-style\", \"size\", \"button-border-radius\"];\n shadowRoot;\n constructor() {\n super();\n this.shadowRoot = this.attachShadow({ mode: \"open\" });\n this.shadowRoot.innerHTML = `\n\t\t\t<style>\n\t\t\t\tbutton {\n\t\t\t\t\t--purple-background: rgba(113, 24, 226, 1);\n\t\t\t\t\t--purple-border: rgba(224, 204, 250, 0.33);\n\t\t\t\t\t--purple-text: #fff;\n\n\t\t\t\t\t--gray-background: rgba(52, 56, 65, 1);\n\t\t\t\t\t--gray-border: rgba(71, 78, 94, 1);\n\t\t\t\t\t--gray-text: #fff;\n\n\t\t\t\t\t--red-background: rgba(179, 62, 102, 1);\n\t\t\t\t\t--red-border: rgba(249, 196, 215, 0.33);\n\t\t\t\t\t--red-text: #fff;\n\n\t\t\t\t\t--green-background: rgba(213, 249, 196, 1);\n\t\t\t\t\t--green-border: rgba(61, 125, 31, 1);\n\t\t\t\t\t--green-text: #000;\n\n\t\t\t\t\t--yellow-background: rgba(255, 236, 179, 1);\n\t\t\t\t\t--yellow-border: rgba(255, 191, 0, 1);\n\t\t\t\t\t--yellow-text: #000;\n\n\t\t\t\t\t--blue-background: rgba(54, 69, 217, 1);\n\t\t\t\t\t--blue-border: rgba(189, 195, 255, 1);\n\t\t\t\t\t--blue-text: #fff;\n\n\t\t\t\t\t--outline-background: transparent;\n\t\t\t\t\t--outline-border: #fff;\n\t\t\t\t\t--outline-text: #fff;\n\n\t\t\t\t\t--ghost-background: transparent;\n\t\t\t\t\t--ghost-border: transparent;\n\t\t\t\t\t--ghost-text: #fff;\n\n\t\t\t\t\t--large-font-size: 16px;\n\t\t\t\t\t--medium-font-size: 14px;\n\t\t\t\t\t--small-font-size: 12px;\n\n\t\t\t\t\t--large-padding: 12px 16px;\n\t\t\t\t\t--large-rounded-padding: 12px 12px;\n\t\t\t\t\t--medium-padding: 8px 12px;\n\t\t\t\t\t--medium-rounded-padding: 8px 8px;\n\t\t\t\t\t--small-padding: 4px 8px;\n\t\t\t\t\t--small-rounded-padding: 4px 4px;\n\n\t\t\t\t\t--normal-border-radius: 4px;\n\t\t\t\t\t--rounded-border-radius: 9999px;\n\n\t\t\t\t\tborder: 1px solid var(--border);\n\t\t\t\t\tpadding: var(--padding);\n\t\t\t\t\tfont-size: var(--font-size);\n\t\t\t\t\tbackground: var(--background);\n\n\t\t\t\t\tcolor: var(--text-color);\n\t\t\t\t\tborder-radius: var(--border-radius);\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\talign-items: center;\n\t\t\t\t\tjustify-content: center;\n\t\t\t\t}\n\n\t\t\t\tbutton:hover {\n\t\t\t\t\tcursor: pointer;\n\t\t\t\t}\n\n\t\t\t\t::slotted(astro-dev-toolbar-icon) {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\theight: 1em;\n\t\t\t\t\twidth: 1em;\n\t\t\t\t\tmargin-left: 0.5em;\n\t\t\t\t}\n\t\t\t</style>\n\t\t\t<style id=\"selected-style\"></style>\n\n\t\t\t<button>\n\t\t\t\t<slot></slot>\n\t\t\t</button>\n\t\t`;\n }\n connectedCallback() {\n this.updateStyle();\n }\n updateStyle() {\n const style = this.shadowRoot.querySelector(\"#selected-style\");\n if (style) {\n style.innerHTML = `\n\t\t\tbutton {\n\t\t\t\t--background: var(--${this.buttonStyle}-background);\n\t\t\t\t--border: var(--${this.buttonStyle}-border);\n\t\t\t\t--font-size: var(--${this.size}-font-size);\n\t\t\t\t--text-color: var(--${this.buttonStyle}-text);\n\t\t\t\t${this.buttonBorderRadius === \"normal\" ? \"--padding: var(--\" + this.size + \"-padding);\" : \"--padding: var(--\" + this.size + \"-rounded-padding);\"}\n\t\t\t\t--border-radius: var(--${this.buttonBorderRadius}-border-radius);\n\t\t\t}`;\n }\n }\n attributeChangedCallback() {\n if (this.hasAttribute(\"size\")) this.size = this.getAttribute(\"size\");\n if (this.hasAttribute(\"button-style\"))\n this.buttonStyle = this.getAttribute(\"button-style\");\n }\n}\nexport {\n DevToolbarButton\n};\n","import { settings } from \"../settings.js\";\nconst styles = [\"purple\", \"gray\", \"red\", \"green\", \"yellow\", \"blue\"];\nclass DevToolbarCard extends HTMLElement {\n link;\n clickAction;\n shadowRoot;\n _cardStyle = \"purple\";\n get cardStyle() {\n return this._cardStyle;\n }\n set cardStyle(value) {\n if (!styles.includes(value)) {\n settings.logger.error(\n `Invalid style: ${value}, expected one of ${styles.join(\", \")}, got ${value}.`\n );\n return;\n }\n this._cardStyle = value;\n this.updateStyle();\n }\n static observedAttributes = [\"card-style\"];\n constructor() {\n super();\n this.shadowRoot = this.attachShadow({ mode: \"open\" });\n this.link = this.getAttribute(\"link\");\n }\n attributeChangedCallback() {\n if (this.hasAttribute(\"card-style\"))\n this.cardStyle = this.getAttribute(\"card-style\");\n this.updateStyle();\n }\n updateStyle() {\n const style = this.shadowRoot.querySelector(\"#selected-style\");\n if (style) {\n style.innerHTML = `\n\t\t\t\t:host {\n\t\t\t\t\t--hover-background: var(--${this.cardStyle}-hover-background);\n\t\t\t\t\t--hover-border: var(--${this.cardStyle}-hover-border);\n\t\t\t\t}\n\t\t\t`;\n }\n }\n connectedCallback() {\n const element = this.link ? \"a\" : this.clickAction ? \"button\" : \"div\";\n this.shadowRoot.innerHTML += `\n\t\t\t<style>\n\t\t\t\t:host {\n\t\t\t\t\t--purple-hover-background: rgba(136, 58, 234, 0.33);\n\t\t\t\t\t--purple-hover-border: 1px solid rgba(113, 24, 226, 1);\n\n\t\t\t\t\t--gray-hover-background: rgba(191, 193, 201, 0.33);\n\t\t\t\t\t--gray-hover-border: 1px solid rgba(191, 193, 201, 1);\n\n\t\t\t\t\t--red-hover-background: rgba(249, 196, 215, 0.33);\n\t\t\t\t\t--red-hover-border: 1px solid rgba(179, 62, 102, 1);\n\n\t\t\t\t\t--green-hover-background: rgba(213, 249, 196, 0.33);\n\t\t\t\t\t--green-hover-border: 1px solid rgba(61, 125, 31, 1);\n\n\t\t\t\t\t--yellow-hover-background: rgba(255, 236, 179, 0.33);\n\t\t\t\t\t--yellow-hover-border: 1px solid rgba(255, 191, 0, 1);\n\n\t\t\t\t\t--blue-hover-background: rgba(189, 195, 255, 0.33);\n\t\t\t\t\t--blue-hover-border: 1px solid rgba(54, 69, 217, 1);\n\t\t\t\t}\n\n\t\t\t\t:host>a, :host>button, :host>div {\n\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\tpadding: 16px;\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tborder-radius: 8px;\n\t\t\t\t\tborder: 1px solid rgba(35, 38, 45, 1);\n\t\t\t\t\tcolor: rgba(191, 193, 201, 1);\n\t\t\t\t\ttext-decoration: none;\n\t\t\t\t\tbackground-color: #13151A;\n\t\t\t\t\tbox-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);\n\t\t\t\t\twidth: 100%;\n \t\t\theight: 100%;\n\t\t\t\t}\n\n\t\t\t\th1, h2, h3, h4, h5, h6 {\n\t\t\t\t\tcolor: #fff;\n\t\t\t\t\tfont-weight: 600;\n\t\t\t\t}\n\n\t\t\t\ta:hover, button:hover {\n\t\t\t\t\tbackground: var(--hover-background);\n\t\t\t\t\tborder: var(--hover-border);\n\t\t\t\t}\n\n\t\t\t\tsvg {\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tmargin: 0 auto;\n\t\t\t\t}\n\n\t\t\t\tspan {\n\t\t\t\t\tmargin-top: 8px;\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\ttext-align: center;\n\t\t\t\t}\n\t\t\t</style>\n\t\t\t<style id=\"selected-style\"></style>\n\n\t\t\t<${element}${this.link ? ` href=\"${this.link}\" target=\"_blank\"` : ``} id=\"astro-overlay-card\">\n\t\t\t\t<slot />\n\t\t\t</${element}>\n\t\t`;\n this.updateStyle();\n if (this.clickAction) {\n this.shadowRoot.getElementById(\"astro-overlay-card\")?.addEventListener(\"click\", this.clickAction);\n }\n }\n}\nexport {\n DevToolbarCard\n};\n","import { settings } from \"../settings.js\";\nimport { getIconElement, isDefinedIcon } from \"./icons.js\";\nconst styles = [\"purple\", \"gray\", \"red\", \"green\", \"yellow\", \"blue\"];\nclass DevToolbarHighlight extends HTMLElement {\n icon;\n _highlightStyle = \"purple\";\n get highlightStyle() {\n return this._highlightStyle;\n }\n set highlightStyle(value) {\n if (!styles.includes(value)) {\n settings.logger.error(\n `Invalid style: ${value}, expected one of ${styles.join(\", \")}, got ${value}.`\n );\n return;\n }\n this._highlightStyle = value;\n this.updateStyle();\n }\n static observedAttributes = [\"highlight-style\"];\n shadowRoot;\n constructor() {\n super();\n this.shadowRoot = this.attachShadow({ mode: \"open\" });\n this.icon = this.hasAttribute(\"icon\") ? this.getAttribute(\"icon\") : void 0;\n this.shadowRoot.innerHTML = `\n\t\t\t<style>\n\t\t\t\t:host {\n\t\t\t\t\t--purple-background: linear-gradient(180deg, rgba(224, 204, 250, 0.33) 0%, rgba(224, 204, 250, 0.0825) 100%);\n\t\t\t\t\t--purple-border: 1px solid rgba(113, 24, 226, 1);\n\n\t\t\t\t\t--gray-background: linear-gradient(180deg, rgba(191, 193, 201, 0.33) 0%, rgba(191, 193, 201, 0.0825) 100%);\n\t\t\t\t\t--gray-border: 1px solid rgba(191, 193, 201, 1);\n\n\t\t\t\t\t--red-background: linear-gradient(180deg, rgba(249, 196, 215, 0.33) 0%, rgba(249, 196, 215, 0.0825) 100%);\n\t\t\t\t\t--red-border: 1px solid rgba(179, 62, 102, 1);\n\n\t\t\t\t\t--green-background: linear-gradient(180deg, rgba(213, 249, 196, 0.33) 0%, rgba(213, 249, 196, 0.0825) 100%);\n\t\t\t\t\t--green-border: 1px solid rgba(61, 125, 31, 1);\n\n\t\t\t\t\t--yellow-background: linear-gradient(180deg, rgba(255, 236, 179, 0.33) 0%, rgba(255, 236, 179, 0.0825) 100%);\n\t\t\t\t\t--yellow-border: 1px solid rgba(181, 138, 45, 1);\n\n\t\t\t\t\t--blue-background: linear-gradient(180deg, rgba(189, 195, 255, 0.33) 0%, rgba(189, 195, 255, 0.0825) 100%);\n\t\t\t\t\t--blue-border: 1px solid rgba(54, 69, 217, 1);\n\n\t\t\t\t\tborder-radius: 4px;\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\twidth: 100%;\n\t\t\t\t\theight: 100%;\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\tz-index: 2000000000;\n\n\t\t\t\t\tbackground: var(--background);\n\t\t\t\t\tborder: var(--border);\n\t\t\t\t}\n\n\t\t\t\t.icon {\n\t\t\t\t\twidth: 24px;\n\t\t\t\t\theight: 24px;\n\t\t\t\t\tcolor: white;\n\t\t\t\t\tbackground: linear-gradient(0deg, #B33E66, #B33E66), linear-gradient(0deg, #351722, #351722);\n\t\t\t\t\tborder: 1px solid rgba(53, 23, 34, 1);\n\t\t\t\t\tborder-radius: 9999px;\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\tjustify-content: center;\n\t\t\t\t\talign-items: center;\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\ttop: -15px;\n\t\t\t\t\tright: -15px;\n\t\t\t\t}\n\t\t\t</style>\n\t\t\t<style id=\"selected-style\"></style>\n\t\t`;\n }\n updateStyle() {\n const style = this.shadowRoot.querySelector(\"#selected-style\");\n if (style) {\n style.innerHTML = `\n\t\t\t:host {\n\t\t\t\t--background: var(--${this.highlightStyle}-background);\n\t\t\t\t--border: var(--${this.highlightStyle}-border);\n\t\t\t}`;\n }\n }\n attributeChangedCallback() {\n if (this.hasAttribute(\"highlight-style\"))\n this.highlightStyle = this.getAttribute(\"highlight-style\");\n }\n connectedCallback() {\n this.updateStyle();\n if (this.icon) {\n let iconContainer = document.createElement(\"div\");\n iconContainer.classList.add(\"icon\");\n let iconElement;\n if (isDefinedIcon(this.icon)) {\n iconElement = getIconElement(this.icon);\n } else {\n iconElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n iconElement.setAttribute(\"viewBox\", \"0 0 16 16\");\n iconElement.innerHTML = this.icon;\n }\n if (iconElement) {\n iconElement?.style.setProperty(\"width\", \"16px\");\n iconElement?.style.setProperty(\"height\", \"16px\");\n iconContainer.append(iconElement);\n this.shadowRoot.append(iconContainer);\n }\n }\n }\n}\nexport {\n DevToolbarHighlight\n};\n","import { getIconElement, isDefinedIcon } from \"./icons.js\";\nclass DevToolbarIcon extends HTMLElement {\n _icon = void 0;\n shadowRoot;\n get icon() {\n return this._icon;\n }\n set icon(name) {\n this._icon = name;\n this.buildTemplate();\n }\n constructor() {\n super();\n this.shadowRoot = this.attachShadow({ mode: \"open\" });\n if (this.hasAttribute(\"icon\")) {\n this.icon = this.getAttribute(\"icon\");\n } else {\n this.buildTemplate();\n }\n }\n getIconHTML(icon) {\n if (icon && isDefinedIcon(icon)) {\n return getIconElement(icon)?.outerHTML ?? \"\";\n }\n return \"<slot />\";\n }\n buildTemplate() {\n this.shadowRoot.innerHTML = `\n\t\t\t<style>\n\t\t\t\tsvg {\n\t\t\t\t\twidth: 100%;\n\t\t\t\t\theight: 100%;\n\t\t\t\t}\n\n\t\t\t\t@media (forced-colors: active) {\n\t\t\t\t\tsvg path[fill=\"#fff\"] {\n\t\t\t\t\t\tfill: black;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t</style>\n${this.getIconHTML(this._icon)}`;\n }\n}\nexport {\n DevToolbarIcon\n};\n","const styles = [\"purple\", \"gray\", \"red\", \"green\", \"yellow\", \"blue\"];\nclass DevToolbarRadioCheckbox extends HTMLElement {\n _radioStyle = \"purple\";\n input;\n shadowRoot;\n get radioStyle() {\n return this._radioStyle;\n }\n set radioStyle(value) {\n if (!styles.includes(value)) {\n console.error(`Invalid style: ${value}, expected one of ${styles.join(\", \")}.`);\n return;\n }\n this._radioStyle = value;\n this.updateStyle();\n }\n static observedAttributes = [\"radio-style\", \"checked\", \"disabled\", \"name\", \"value\"];\n constructor() {\n super();\n this.shadowRoot = this.attachShadow({ mode: \"open\" });\n this.shadowRoot.innerHTML = `\n\t\t<style>\n\t\t\t:host {\n\t\t\t\t--purple-unchecked: rgba(224, 204, 250, 0.33);\n\t\t\t\t--purple-checked: rgba(224, 204, 250, 1);\n\n\t\t\t\t--gray-unchecked: rgba(191, 193, 201, 0.33);\n\t\t\t\t--gray-checked: rgba(191, 193, 201, 1);\n\n\t\t\t\t--red-unchecked: rgba(249, 196, 215, 0.33);\n\t\t\t\t--red-checked: rgba(179, 62, 102, 1);\n\n\t\t\t\t--green-unchecked: rgba(213, 249, 196, 0.33);\n\t\t\t\t--green-checked: rgba(61, 125, 31, 1);\n\n\t\t\t\t--yellow-unchecked: rgba(255, 236, 179, 0.33);\n\t\t\t\t--yellow-checked: rgba(181, 138, 45, 1);\n\n\t\t\t\t--blue-unchecked: rgba(189, 195, 255, 0.33);\n\t\t\t\t--blue-checked: rgba(54, 69, 217, 1);\n\t\t\t}\n\n\t\t\tinput[type=\"radio\"] {\n\t\t\t\tappearance: none;\n\t\t\t\t-webkit-appearance: none;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-content: center;\n\t\t\t\tjustify-content: center;\n\t\t\t\tborder: 2px solid var(--unchecked-color);\n\t\t\t\tborder-radius: 9999px;\n\t\t\t\twidth: 16px;\n\t\t\t\theight: 16px;\n\t\t\t}\n\n\t\t\tinput[type=\"radio\"]::before {\n\t\t\t\tcontent: \"\";\n\t\t\t\tbackground-color: var(--checked-color);\n\t\t\t\twidth: 8px;\n\t\t\t\theight: 8px;\n\t\t\t\tborder-radius: 9999px;\n\t\t\t\tvisibility: hidden;\n\t\t\t\tmargin: 2px;\n\t\t\t}\n\n\t\t\tinput[type=\"radio\"]:checked {\n\t\t\t\tborder-color: var(--checked-color);\n\t\t\t}\n\n\t\t\tinput[type=\"radio\"]:checked::before {\n\t\t\t\tvisibility: visible;\n\t\t\t}\n\t\t</style>\n\t\t<style id=\"selected-style\"></style>\n\t\t`;\n this.input = document.createElement(\"input\");\n this.input.type = \"radio\";\n this.shadowRoot.append(this.input);\n }\n connectedCallback() {\n this.updateInputState();\n this.updateStyle();\n }\n updateStyle() {\n const styleElement = this.shadowRoot.querySelector(\"#selected-style\");\n if (styleElement) {\n styleElement.innerHTML = `\n\t\t\t\t:host {\n\t\t\t\t\t--unchecked-color: var(--${this._radioStyle}-unchecked);\n\t\t\t\t\t--checked-color: var(--${this._radioStyle}-checked);\n\t\t\t\t}\n\t\t\t`;\n }\n }\n updateInputState() {\n this.input.checked = this.hasAttribute(\"checked\");\n this.input.disabled = this.hasAttribute(\"disabled\");\n this.input.name = this.getAttribute(\"name\") || \"\";\n this.input.value = this.getAttribute(\"value\") || \"\";\n }\n attributeChangedCallback() {\n if (this.hasAttribute(\"radio-style\")) {\n this.radioStyle = this.getAttribute(\"radio-style\");\n }\n this.updateInputState();\n }\n}\nexport {\n DevToolbarRadioCheckbox\n};\n","import { settings } from \"../settings.js\";\nconst styles = [\"purple\", \"gray\", \"red\", \"green\", \"yellow\", \"blue\"];\nclass DevToolbarSelect extends HTMLElement {\n shadowRoot;\n element;\n _selectStyle = \"gray\";\n get selectStyle() {\n return this._selectStyle;\n }\n set selectStyle(value) {\n if (!styles.includes(value)) {\n settings.logger.error(`Invalid style: ${value}, expected one of ${styles.join(\", \")}.`);\n return;\n }\n this._selectStyle = value;\n this.updateStyle();\n }\n static observedAttributes = [\"select-style\"];\n constructor() {\n super();\n this.shadowRoot = this.attachShadow({ mode: \"open\" });\n this.shadowRoot.innerHTML = `\n <style>\n :host {\n --purple-text: rgba(224, 204, 250, 1);\n\t\t\t\t\t--purple-border: rgba(113, 24, 226, 1);\n\n --gray-text: rgba(191, 193, 201, 1);\n\t\t\t\t\t--gray-border:rgba(191, 193, 201, 1);\n\n\t\t\t\t\t--red-text: rgba(249, 196, 215, 1);\n\t\t\t\t\t--red-border: rgba(179, 62, 102, 1);\n\n\t\t\t\t\t--green-text: rgba(213, 249, 196, 1);\n\t\t\t\t\t--green-border: rgba(61, 125, 31, 1);\n\n\t\t\t\t\t--yellow-text: rgba(249, 233, 196, 1);\n\t\t\t\t\t--yellow-border: rgba(181, 138, 45, 1);\n\n\t\t\t\t\t--blue-text: rgba(189, 195, 255, 1);\n\t\t\t\t\t--blue-border: rgba(54, 69, 217, 1);\n\n --text-color: var(--gray-text);\n --border-color: var(--gray-border);\n }\n select {\n appearance: none;\n text-align-last: center;\n display: inline-block;\n font-family: system-ui, sans-serif;\n font-size: 14px;\n padding: 4px 24px 4px 8px;\n border: 1px solid var(--border-color);\n border-radius: 4px;\n color: var(--text-color);\n background-color: transparent;\n background-image:\n linear-gradient(45deg, transparent 50%, var(--text-color) 50%),\n linear-gradient(135deg, var(--text-color) 50%, transparent 50%);\n background-position:\n calc(100% - 12px) calc(1em - 2px),\n calc(100% - 8px) calc(1em - 2px);\n background-size: 4px 4px;\n background-repeat: no-repeat;\n }\n </style>\n <style id=\"selected-style\"></style>\n <slot></slot>\n `;\n this.element = document.createElement(\"select\");\n this.shadowRoot.addEventListener(\"slotchange\", (event) => {\n if (event.target instanceof HTMLSlotElement) {\n this.element.append(...event.target.assignedNodes());\n }\n });\n }\n connectedCallback() {\n this.element.name = \"dev-toolbar-select\";\n this.shadowRoot.append(this.element);\n this.updateStyle();\n }\n attributeChangedCallback() {\n if (this.hasAttribute(\"select-style\")) {\n this.selectStyle = this.getAttribute(\"select-style\");\n }\n }\n updateStyle() {\n const style = this.shadowRoot.querySelector(\"#selected-style\");\n if (style) {\n style.innerHTML = `\n :host {\n --text-color: var(--${this.selectStyle}-text);\n --border-color: var(--${this.selectStyle}-border);\n }\n `;\n }\n }\n}\nexport {\n DevToolbarSelect\n};\n","import { settings } from \"../settings.js\";\nconst styles = [\"purple\", \"gray\", \"red\", \"green\", \"yellow\", \"blue\"];\nclass DevToolbarToggle extends HTMLElement {\n shadowRoot;\n input;\n _toggleStyle = \"gray\";\n get toggleStyle() {\n return this._toggleStyle;\n }\n set toggleStyle(value) {\n if (!styles.includes(value)) {\n settings.logger.error(`Invalid style: ${value}, expected one of ${styles.join(\", \")}.`);\n return;\n }\n this._toggleStyle = value;\n this.updateStyle();\n }\n static observedAttributes = [\"toggle-style\"];\n constructor() {\n super();\n this.shadowRoot = this.attachShadow({ mode: \"open\" });\n this.shadowRoot.innerHTML = `\n\t\t<style>\n\t\t\t:host {\n\t\t\t\t--purple-bg-on: rgba(113, 24, 226, 1);\n\t\t\t\t--purple-border-off: rgba(113, 24, 226, 1);\n\t\t\t\t--purple-border-on: rgba(224, 204, 250, 1);\n\n\t\t\t\t--gray-bg-on: rgba(61, 125, 31, 1);\n\t\t\t\t--gray-border-off: rgba(145, 152, 173, 1);\n\t\t\t\t--gray-border-on: rgba(213, 249, 196, 1);\n\n\t\t\t\t--red-bg-on: rgba(179, 62, 102, 1);\n\t\t\t\t--red-border-off: rgba(179, 62, 102, 1);\n\t\t\t\t--red-border-on: rgba(249, 196, 215, 1);\n\n\t\t\t\t--green-bg-on: rgba(61, 125, 31, 1);\n\t\t\t\t--green-border-off: rgba(61, 125, 31, 1);\n\t\t\t\t--green-border-on: rgba(213, 249, 196, 1);\n\n\t\t\t\t--yellow-bg-on: rgba(181, 138, 45, 1);\n\t\t\t\t--yellow-border-off: rgba(181, 138, 45, 1);\n\t\t\t\t--yellow-border-on: rgba(255, 236, 179, 1);\n\n\t\t\t\t--blue-bg-on: rgba(54, 69, 217, 1);\n\t\t\t\t--blue-border-off: rgba(54, 69, 217, 1);\n\t\t\t\t--blue-border-on: rgba(189, 195, 255, 1);\n\t\t\t}\n\n\t\t\tinput {\n\t\t\t\tappearance: none;\n\t\t\t\twidth: 32px;\n\t\t\t\theight: 20px;\n\t\t\t\tborder: 1px solid var(--border-off);\n\t\t\t\ttransition: background-color 0.2s ease, border-color 0.2s ease;\n\t\t\t\tborder-radius: 9999px;\n\t\t\t}\n\n\t\t\tinput::after {\n\t\t\t\tcontent: '';\n\t\t\t\twidth: 16px;\n\t\t\t\tdisplay: inline-block;\n\t\t\t\theight: 16px;\n\t\t\t\tbackground-color: var(--border-off);\n\t\t\t\tborder-radius: 9999px;\n\t\t\t\ttransition: transform 0.2s ease, background-color 0.2s ease;\n\t\t\t\ttop: 1px;\n\t\t\t\tleft: 1px;\n\t\t\t\tposition: relative;\n\t\t\t}\n\n\t\t\t@media (forced-colors: active) {\n\t\t\t\tinput::after {\n\t\t\t\t\tborder: 1px solid black;\n\t\t\t\t\ttop: 0px;\n\t\t\t\t\tleft: 0px;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tinput:checked {\n\t\t\t\tborder: 1px solid var(--border-on);\n\t\t\t\tbackground-color: var(--bg-on);\n\t\t\t}\n\n\t\t\tinput:checked::after {\n\t\t\t\ttransform: translateX(12px);\n\t\t\t\tbackground: var(--border-on);\n\t\t\t}\n\t\t</style>\n\t\t<style id=\"selected-style\"></style>\n\t\t`;\n this.input = document.createElement(\"input\");\n }\n attributeChangedCallback() {\n if (this.hasAttribute(\"toggle-style\"))\n this.toggleStyle = this.getAttribute(\"toggle-style\");\n }\n updateStyle() {\n const style = this.shadowRoot.querySelector(\"#selected-style\");\n if (style) {\n style.innerHTML = `\n\t\t\t:host {\n\t\t\t\t--bg-on: var(--${this.toggleStyle}-bg-on);\n\t\t\t\t--border-off: var(--${this.toggleStyle}-border-off);\n\t\t\t\t--border-on: var(--${this.toggleStyle}-border-on);\n\t\t\t}\n\t\t`;\n }\n }\n connectedCallback() {\n this.input.type = \"checkbox\";\n this.input.name = \"dev-toolbar-toggle\";\n this.shadowRoot.append(this.input);\n this.updateStyle();\n }\n get value() {\n return this.input.value;\n }\n set value(val) {\n this.input.value = val;\n }\n}\nexport {\n DevToolbarToggle\n};\n","import { getIconElement, isDefinedIcon } from \"./icons.js\";\nclass DevToolbarTooltip extends HTMLElement {\n sections = [];\n shadowRoot;\n constructor() {\n super();\n this.shadowRoot = this.attachShadow({ mode: \"open\" });\n }\n connectedCallback() {\n this.shadowRoot.innerHTML = `\n\t\t\t<style>\n\t\t\t:host {\n\t\t\t\tposition: absolute;\n\t\t\t\tdisplay: none;\n\t\t\t\tcolor: white;\n\t\t\t\tbackground: linear-gradient(0deg, #310A65, #310A65), linear-gradient(0deg, #7118E2, #7118E2);\n\t\t\t\tborder: 1px solid rgba(113, 24, 226, 1);\n\t\t\t\tborder-radius: 4px;\n\t\t\t\tpadding: 0;\n\t\t\t\tfont-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\";\n\t\t\t\tfont-size: 14px;\n\t\t\t\tmargin: 0;\n\t\t\t\tz-index: 2000000001;\n\t\t\t\tmax-width: 45ch;\n\t\t\t\twidth: fit-content;\n\t\t\t\tmin-width: 30ch;\n\t\t\t\tbox-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);\n\t\t\t}\n\n\t\t\t:host([data-show=\"true\"]) {\n\t\t\t\tdisplay: block;\n\t\t\t}\n\n\t\t\tsvg {\n\t\t\t\tvertical-align: bottom;\n\t\t\t\tmargin-inline-end: 4px;\n\t\t\t}\n\n\t\t\thr {\n\t\t\t\tborder: 1px solid rgba(136, 58, 234, 0.33);\n\t\t\t\tpadding: 0;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\n\t\t\tsection {\n\t\t\t\tpadding: 8px;\n\t\t\t}\n\n\t\t\t.section-content {\n\t\t\t\tmax-height: 250px;\n \t\toverflow-y: auto;\n\t\t\t}\n\n\t\t\t.modal-title {\n\t\t\t\tdisplay: flex;\n\t\t\t\tjustify-content: space-between;\n\t\t\t\talign-items: center;\n\t\t\t}\n\n\t\t\t.modal-main-title {\n\t\t\t\tfont-weight: bold;\n\t\t\t}\n\n\t\t\t.modal-title + div {\n\t\t\t\tmargin-top: 8px;\n\t\t\t}\n\n\t\t\t.modal-cta {\n\t\t\t\tdisplay: block;\n\t\t\t\tfont-weight: bold;\n\t\t\t\tfont-size: 0.9em;\n\t\t\t}\n\n\t\t\t.clickable-section {\n\t\t\t\tbackground: rgba(113, 24, 226, 1);\n\t\t\t\tpadding: 8px;\n\t\t\t\tborder: 0;\n\t\t\t\tcolor: white;\n\t\t\t\tfont-family: system-ui, sans-serif;\n\t\t\t\ttext-align: left;\n\t\t\t\tline-height: 1.2;\n\t\t\t\twhite-space: nowrap;\n\t\t\t\ttext-decoration: none;\n\t\t\t\tmargin: 0;\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\t.clickable-section:hover {\n\t\t\t\tcursor: pointer;\n\t\t\t}\n\n\t\t\tpre, code {\n\t\t\t\tbackground: rgb(78, 27, 145);\n\t\t\t\tfont-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n\t\t\t\tborder-radius: 2px;\n\t\t\t\tfont-size: 14px;\n\t\t\t\tpadding: 2px;\n\t\t\t}\n\t\t\tpre {\n\t\t\t\tpadding: 1em;\n\t\t\t\tmargin: 0 0;\n\t\t\t\toverflow: auto;\n\t\t\t}\n\t\t\t`;\n const fragment = new DocumentFragment();\n this.sections.forEach((section, index) => {\n const sectionElement = section.clickAction ? document.createElement(\"button\") : document.createElement(\"section\");\n if (section.clickAction) {\n sectionElement.classList.add(\"clickable-section\");\n sectionElement.addEventListener(\"click\", async () => {\n await section.clickAction();\n });\n }\n sectionElement.innerHTML = `\n\t\t\t\t${section.title ? `<div class=\"modal-title\"><span class=\"modal-main-title\">\n\t\t\t\t\t\t${section.icon ? this.getElementForIcon(section.icon) : \"\"}${section.title}</span>${section.inlineTitle ?? \"\"}</div>` : \"\"}\n\t\t\t\t${section.content ? `<div class=\"section-content\">${section.content}</div>` : \"\"}\n\t\t\t\t${section.clickDescription ? `<span class=\"modal-cta\">${section.clickDescription}</span>` : \"\"}\n\t\t\t`;\n fragment.append(sectionElement);\n if (index < this.sections.length - 1) {\n fragment.append(document.createElement(\"hr\"));\n }\n });\n this.shadowRoot.append(fragment);\n }\n getElementForIcon(icon) {\n let iconElement;\n if (isDefinedIcon(icon)) {\n iconElement = getIconElement(icon);\n } else {\n iconElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n iconElement.setAttribute(\"viewBox\", \"0 0 16 16\");\n iconElement.innerHTML = icon;\n }\n iconElement?.style.setProperty(\"width\", \"16px\");\n iconElement?.style.setProperty(\"height\", \"16px\");\n return iconElement?.outerHTML ?? \"\";\n }\n}\nexport {\n DevToolbarTooltip\n};\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8],"mappings":";;;AACA,IAAMA,UAAQ,CAAC,SAAS,OAAO;AAC/B,IAAMC,WAAS;CAAC;CAAU;CAAQ;CAAO;CAAS;CAAU;AAAM;AAClE,IAAM,kBAAN,cAA8B,YAAY;CACxC,QAAQ;CACR,cAAc;CACd,IAAI,OAAO;EACT,OAAO,KAAK;CACd;CACA,IAAI,KAAK,OAAO;EACd,IAAI,CAACD,QAAM,SAAS,KAAK,GAAG;GAC1B,SAAS,OAAO,MACd,iBAAiB,MAAM,oBAAoBA,QAAM,KAAK,IAAI,EAAE,QAAQ,MAAM,EAC5E;GACA;EACF;EACA,KAAK,QAAQ;EACb,KAAK,YAAY;CACnB;CACA,IAAI,aAAa;EACf,OAAO,KAAK;CACd;CACA,IAAI,WAAW,OAAO;EACpB,IAAI,CAACC,SAAO,SAAS,KAAK,GAAG;GAC3B,SAAS,OAAO,MACd,kBAAkB,MAAM,oBAAoBA,SAAO,KAAK,IAAI,EAAE,QAAQ,MAAM,EAC9E;GACA;EACF;EACA,KAAK,cAAc;EACnB,KAAK,YAAY;CACnB;CACA;CACA,OAAO,qBAAqB,CAAC,eAAe,MAAM;CAClD,cAAc;EACZ,MAAM;EACN,KAAK,aAAa,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;EACpD,KAAK,WAAW,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4C9B;CACA,oBAAoB;EAClB,KAAK,YAAY;CACnB;CACA,2BAA2B;EACzB,IAAI,KAAK,aAAa,aAAa,GACjC,KAAK,aAAa,KAAK,aAAa,aAAa;EACnD,IAAI,KAAK,aAAa,MAAM,GAAG,KAAK,OAAO,KAAK,aAAa,MAAM;CACrE;CACA,cAAc;EACZ,MAAM,QAAQ,KAAK,WAAW,cAAc,iBAAiB;EAC7D,IAAI,OACF,MAAM,YAAY;;0BAEE,KAAK,WAAW;4BACd,KAAK,WAAW;oBACxB,KAAK,KAAK;;CAG5B;AACF;;;ACpGA,IAAM,QAAQ;CAAC;CAAS;CAAU;AAAO;AACzC,IAAMC,WAAS;CAAC;CAAS;CAAW;CAAU;CAAQ;CAAO;CAAS;CAAU;AAAM;AACtF,IAAM,cAAc,CAAC,UAAU,SAAS;AACxC,IAAM,mBAAN,cAA+B,YAAY;CACzC,QAAQ;CACR,eAAe;CACf,sBAAsB;CACtB,IAAI,OAAO;EACT,OAAO,KAAK;CACd;CACA,IAAI,KAAK,OAAO;EACd,IAAI,CAAC,MAAM,SAAS,KAAK,GAAG;GAC1B,SAAS,OAAO,MACd,iBAAiB,MAAM,oBAAoB,MAAM,KAAK,IAAI,EAAE,QAAQ,MAAM,EAC5E;GACA;EACF;EACA,KAAK,QAAQ;EACb,KAAK,YAAY;CACnB;CACA,IAAI,cAAc;EAChB,OAAO,KAAK;CACd;CACA,IAAI,YAAY,OAAO;EACrB,IAAI,CAACA,SAAO,SAAS,KAAK,GAAG;GAC3B,SAAS,OAAO,MACd,kBAAkB,MAAM,oBAAoBA,SAAO,KAAK,IAAI,EAAE,QAAQ,MAAM,EAC9E;GACA;EACF;EACA,KAAK,eAAe;EACpB,KAAK,YAAY;CACnB;CACA,IAAI,qBAAqB;EACvB,OAAO,KAAK;CACd;CACA,IAAI,mBAAmB,OAAO;EAC5B,IAAI,CAAC,YAAY,SAAS,KAAK,GAAG;GAChC,SAAS,OAAO,MACd,0BAA0B,MAAM,oBAAoB,YAAY,KAAK,IAAI,EAAE,QAAQ,MAAM,EAC3F;GACA;EACF;EACA,KAAK,sBAAsB;EAC3B,KAAK,YAAY;CACnB;CACA,OAAO,qBAAqB;EAAC;EAAgB;EAAQ;CAAsB;CAC3E;CACA,cAAc;EACZ,MAAM;EACN,KAAK,aAAa,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;EACpD,KAAK,WAAW,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8E9B;CACA,oBAAoB;EAClB,KAAK,YAAY;CACnB;CACA,cAAc;EACZ,MAAM,QAAQ,KAAK,WAAW,cAAc,iBAAiB;EAC7D,IAAI,OACF,MAAM,YAAY;;0BAEE,KAAK,YAAY;sBACrB,KAAK,YAAY;yBACd,KAAK,KAAK;0BACT,KAAK,YAAY;MACrC,KAAK,uBAAuB,WAAW,sBAAsB,KAAK,OAAO,eAAe,sBAAsB,KAAK,OAAO,qBAAqB;6BACxH,KAAK,mBAAmB;;CAGnD;CACA,2BAA2B;EACzB,IAAI,KAAK,aAAa,MAAM,GAAG,KAAK,OAAO,KAAK,aAAa,MAAM;EACnE,IAAI,KAAK,aAAa,cAAc,GAClC,KAAK,cAAc,KAAK,aAAa,cAAc;CACvD;AACF;;;ACxJA,IAAMC,WAAS;CAAC;CAAU;CAAQ;CAAO;CAAS;CAAU;AAAM;AAClE,IAAM,iBAAN,cAA6B,YAAY;CACvC;CACA;CACA;CACA,aAAa;CACb,IAAI,YAAY;EACd,OAAO,KAAK;CACd;CACA,IAAI,UAAU,OAAO;EACnB,IAAI,CAACA,SAAO,SAAS,KAAK,GAAG;GAC3B,SAAS,OAAO,MACd,kBAAkB,MAAM,oBAAoBA,SAAO,KAAK,IAAI,EAAE,QAAQ,MAAM,EAC9E;GACA;EACF;EACA,KAAK,aAAa;EAClB,KAAK,YAAY;CACnB;CACA,OAAO,qBAAqB,CAAC,YAAY;CACzC,cAAc;EACZ,MAAM;EACN,KAAK,aAAa,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;EACpD,KAAK,OAAO,KAAK,aAAa,MAAM;CACtC;CACA,2BAA2B;EACzB,IAAI,KAAK,aAAa,YAAY,GAChC,KAAK,YAAY,KAAK,aAAa,YAAY;EACjD,KAAK,YAAY;CACnB;CACA,cAAc;EACZ,MAAM,QAAQ,KAAK,WAAW,cAAc,iBAAiB;EAC7D,IAAI,OACF,MAAM,YAAY;;iCAES,KAAK,UAAU;6BACnB,KAAK,UAAU;;;CAI1C;CACA,oBAAoB;EAClB,MAAM,UAAU,KAAK,OAAO,MAAM,KAAK,cAAc,WAAW;EAChE,KAAK,WAAW,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA2D3B,UAAU,KAAK,OAAO,UAAU,KAAK,KAAK,qBAAqB,GAAG;;OAEjE,QAAQ;;EAEX,KAAK,YAAY;EACjB,IAAI,KAAK,aACP,KAAK,WAAW,eAAe,oBAAoB,CAAC,EAAE,iBAAiB,SAAS,KAAK,WAAW;CAEpG;AACF;;;AC9GA,IAAMC,WAAS;CAAC;CAAU;CAAQ;CAAO;CAAS;CAAU;AAAM;AAClE,IAAM,sBAAN,cAAkC,YAAY;CAC5C;CACA,kBAAkB;CAClB,IAAI,iBAAiB;EACnB,OAAO,KAAK;CACd;CACA,IAAI,eAAe,OAAO;EACxB,IAAI,CAACA,SAAO,SAAS,KAAK,GAAG;GAC3B,SAAS,OAAO,MACd,kBAAkB,MAAM,oBAAoBA,SAAO,KAAK,IAAI,EAAE,QAAQ,MAAM,EAC9E;GACA;EACF;EACA,KAAK,kBAAkB;EACvB,KAAK,YAAY;CACnB;CACA,OAAO,qBAAqB,CAAC,iBAAiB;CAC9C;CACA,cAAc;EACZ,MAAM;EACN,KAAK,aAAa,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;EACpD,KAAK,OAAO,KAAK,aAAa,MAAM,IAAI,KAAK,aAAa,MAAM,IAAI,KAAK;EACzE,KAAK,WAAW,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiD9B;CACA,cAAc;EACZ,MAAM,QAAQ,KAAK,WAAW,cAAc,iBAAiB;EAC7D,IAAI,OACF,MAAM,YAAY;;0BAEE,KAAK,eAAe;sBACxB,KAAK,eAAe;;CAGxC;CACA,2BAA2B;EACzB,IAAI,KAAK,aAAa,iBAAiB,GACrC,KAAK,iBAAiB,KAAK,aAAa,iBAAiB;CAC7D;CACA,oBAAoB;EAClB,KAAK,YAAY;EACjB,IAAI,KAAK,MAAM;GACb,IAAI,gBAAgB,SAAS,cAAc,KAAK;GAChD,cAAc,UAAU,IAAI,MAAM;GAClC,IAAI;GACJ,IAAI,cAAc,KAAK,IAAI,GACzB,cAAc,eAAe,KAAK,IAAI;QACjC;IACL,cAAc,SAAS,gBAAgB,8BAA8B,KAAK;IAC1E,YAAY,aAAa,WAAW,WAAW;IAC/C,YAAY,YAAY,KAAK;GAC/B;GACA,IAAI,aAAa;IACf,aAAa,MAAM,YAAY,SAAS,MAAM;IAC9C,aAAa,MAAM,YAAY,UAAU,MAAM;IAC/C,cAAc,OAAO,WAAW;IAChC,KAAK,WAAW,OAAO,aAAa;GACtC;EACF;CACF;AACF;;;AC7GA,IAAM,iBAAN,cAA6B,YAAY;CACvC,QAAQ,KAAK;CACb;CACA,IAAI,OAAO;EACT,OAAO,KAAK;CACd;CACA,IAAI,KAAK,MAAM;EACb,KAAK,QAAQ;EACb,KAAK,cAAc;CACrB;CACA,cAAc;EACZ,MAAM;EACN,KAAK,aAAa,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;EACpD,IAAI,KAAK,aAAa,MAAM,GAC1B,KAAK,OAAO,KAAK,aAAa,MAAM;OAEpC,KAAK,cAAc;CAEvB;CACA,YAAY,MAAM;EAChB,IAAI,QAAQ,cAAc,IAAI,GAC5B,OAAO,eAAe,IAAI,CAAC,EAAE,aAAa;EAE5C,OAAO;CACT;CACA,gBAAgB;EACd,KAAK,WAAW,YAAY;;;;;;;;;;;;;EAa9B,KAAK,YAAY,KAAK,KAAK;CAC3B;AACF;;;AC1CA,IAAMC,WAAS;CAAC;CAAU;CAAQ;CAAO;CAAS;CAAU;AAAM;AAClE,IAAM,0BAAN,cAAsC,YAAY;CAChD,cAAc;CACd;CACA;CACA,IAAI,aAAa;EACf,OAAO,KAAK;CACd;CACA,IAAI,WAAW,OAAO;EACpB,IAAI,CAACA,SAAO,SAAS,KAAK,GAAG;GAC3B,QAAQ,MAAM,kBAAkB,MAAM,oBAAoBA,SAAO,KAAK,IAAI,EAAE,EAAE;GAC9E;EACF;EACA,KAAK,cAAc;EACnB,KAAK,YAAY;CACnB;CACA,OAAO,qBAAqB;EAAC;EAAe;EAAW;EAAY;EAAQ;CAAO;CAClF,cAAc;EACZ,MAAM;EACN,KAAK,aAAa,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;EACpD,KAAK,WAAW,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsD5B,KAAK,QAAQ,SAAS,cAAc,OAAO;EAC3C,KAAK,MAAM,OAAO;EAClB,KAAK,WAAW,OAAO,KAAK,KAAK;CACnC;CACA,oBAAoB;EAClB,KAAK,iBAAiB;EACtB,KAAK,YAAY;CACnB;CACA,cAAc;EACZ,MAAM,eAAe,KAAK,WAAW,cAAc,iBAAiB;EACpE,IAAI,cACF,aAAa,YAAY;;gCAEC,KAAK,YAAY;8BACnB,KAAK,YAAY;;;CAI7C;CACA,mBAAmB;EACjB,KAAK,MAAM,UAAU,KAAK,aAAa,SAAS;EAChD,KAAK,MAAM,WAAW,KAAK,aAAa,UAAU;EAClD,KAAK,MAAM,OAAO,KAAK,aAAa,MAAM,KAAK;EAC/C,KAAK,MAAM,QAAQ,KAAK,aAAa,OAAO,KAAK;CACnD;CACA,2BAA2B;EACzB,IAAI,KAAK,aAAa,aAAa,GACjC,KAAK,aAAa,KAAK,aAAa,aAAa;EAEnD,KAAK,iBAAiB;CACxB;AACF;;;ACxGA,IAAMC,WAAS;CAAC;CAAU;CAAQ;CAAO;CAAS;CAAU;AAAM;AAClE,IAAM,mBAAN,cAA+B,YAAY;CACzC;CACA;CACA,eAAe;CACf,IAAI,cAAc;EAChB,OAAO,KAAK;CACd;CACA,IAAI,YAAY,OAAO;EACrB,IAAI,CAACA,SAAO,SAAS,KAAK,GAAG;GAC3B,SAAS,OAAO,MAAM,kBAAkB,MAAM,oBAAoBA,SAAO,KAAK,IAAI,EAAE,EAAE;GACtF;EACF;EACA,KAAK,eAAe;EACpB,KAAK,YAAY;CACnB;CACA,OAAO,qBAAqB,CAAC,cAAc;CAC3C,cAAc;EACZ,MAAM;EACN,KAAK,aAAa,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;EACpD,KAAK,WAAW,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgD5B,KAAK,UAAU,SAAS,cAAc,QAAQ;EAC9C,KAAK,WAAW,iBAAiB,eAAe,UAAU;GACxD,IAAI,MAAM,kBAAkB,iBAC1B,KAAK,QAAQ,OAAO,GAAG,MAAM,OAAO,cAAc,CAAC;EAEvD,CAAC;CACH;CACA,oBAAoB;EAClB,KAAK,QAAQ,OAAO;EACpB,KAAK,WAAW,OAAO,KAAK,OAAO;EACnC,KAAK,YAAY;CACnB;CACA,2BAA2B;EACzB,IAAI,KAAK,aAAa,cAAc,GAClC,KAAK,cAAc,KAAK,aAAa,cAAc;CAEvD;CACA,cAAc;EACZ,MAAM,QAAQ,KAAK,WAAW,cAAc,iBAAiB;EAC7D,IAAI,OACF,MAAM,YAAY;;gCAEQ,KAAK,YAAY;kCACf,KAAK,YAAY;;;CAIjD;AACF;;;AChGA,IAAM,SAAS;CAAC;CAAU;CAAQ;CAAO;CAAS;CAAU;AAAM;AAClE,IAAM,mBAAN,cAA+B,YAAY;CACzC;CACA;CACA,eAAe;CACf,IAAI,cAAc;EAChB,OAAO,KAAK;CACd;CACA,IAAI,YAAY,OAAO;EACrB,IAAI,CAAC,OAAO,SAAS,KAAK,GAAG;GAC3B,SAAS,OAAO,MAAM,kBAAkB,MAAM,oBAAoB,OAAO,KAAK,IAAI,EAAE,EAAE;GACtF;EACF;EACA,KAAK,eAAe;EACpB,KAAK,YAAY;CACnB;CACA,OAAO,qBAAqB,CAAC,cAAc;CAC3C,cAAc;EACZ,MAAM;EACN,KAAK,aAAa,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;EACpD,KAAK,WAAW,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsE5B,KAAK,QAAQ,SAAS,cAAc,OAAO;CAC7C;CACA,2BAA2B;EACzB,IAAI,KAAK,aAAa,cAAc,GAClC,KAAK,cAAc,KAAK,aAAa,cAAc;CACvD;CACA,cAAc;EACZ,MAAM,QAAQ,KAAK,WAAW,cAAc,iBAAiB;EAC7D,IAAI,OACF,MAAM,YAAY;;qBAEH,KAAK,YAAY;0BACZ,KAAK,YAAY;yBAClB,KAAK,YAAY;;;CAIxC;CACA,oBAAoB;EAClB,KAAK,MAAM,OAAO;EAClB,KAAK,MAAM,OAAO;EAClB,KAAK,WAAW,OAAO,KAAK,KAAK;EACjC,KAAK,YAAY;CACnB;CACA,IAAI,QAAQ;EACV,OAAO,KAAK,MAAM;CACpB;CACA,IAAI,MAAM,KAAK;EACb,KAAK,MAAM,QAAQ;CACrB;AACF;;;ACxHA,IAAM,oBAAN,cAAgC,YAAY;CAC1C,WAAW,CAAC;CACZ;CACA,cAAc;EACZ,MAAM;EACN,KAAK,aAAa,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;CACtD;CACA,oBAAoB;EAClB,KAAK,WAAW,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+F5B,MAAM,WAAW,IAAI,iBAAiB;EACtC,KAAK,SAAS,SAAS,SAAS,UAAU;GACxC,MAAM,iBAAiB,QAAQ,cAAc,SAAS,cAAc,QAAQ,IAAI,SAAS,cAAc,SAAS;GAChH,IAAI,QAAQ,aAAa;IACvB,eAAe,UAAU,IAAI,mBAAmB;IAChD,eAAe,iBAAiB,SAAS,YAAY;KACnD,MAAM,QAAQ,YAAY;IAC5B,CAAC;GACH;GACA,eAAe,YAAY;MAC3B,QAAQ,QAAQ;QACd,QAAQ,OAAO,KAAK,kBAAkB,QAAQ,IAAI,IAAI,KAAK,QAAQ,MAAM,SAAS,QAAQ,eAAe,GAAG,UAAU,GAAG;MAC3H,QAAQ,UAAU,gCAAgC,QAAQ,QAAQ,UAAU,GAAG;MAC/E,QAAQ,mBAAmB,2BAA2B,QAAQ,iBAAiB,WAAW,GAAG;;GAE7F,SAAS,OAAO,cAAc;GAC9B,IAAI,QAAQ,KAAK,SAAS,SAAS,GACjC,SAAS,OAAO,SAAS,cAAc,IAAI,CAAC;EAEhD,CAAC;EACD,KAAK,WAAW,OAAO,QAAQ;CACjC;CACA,kBAAkB,MAAM;EACtB,IAAI;EACJ,IAAI,cAAc,IAAI,GACpB,cAAc,eAAe,IAAI;OAC5B;GACL,cAAc,SAAS,gBAAgB,8BAA8B,KAAK;GAC1E,YAAY,aAAa,WAAW,WAAW;GAC/C,YAAY,YAAY;EAC1B;EACA,aAAa,MAAM,YAAY,SAAS,MAAM;EAC9C,aAAa,MAAM,YAAY,UAAU,MAAM;EAC/C,OAAO,aAAa,aAAa;CACnC;AACF"}
@@ -0,0 +1,32 @@
1
+ import { t as settings } from "./astro_runtime_client_dev-toolbar_entrypoint__js.js";
2
+ //#region ../../node_modules/astro/dist/runtime/client/dev-toolbar/apps/utils/window.js
3
+ function createWindowElement(content, placement = settings.config.placement) {
4
+ const windowElement = document.createElement("astro-dev-toolbar-window");
5
+ windowElement.innerHTML = content;
6
+ windowElement.placement = placement;
7
+ return windowElement;
8
+ }
9
+ function closeOnOutsideClick(eventTarget, additionalCheck) {
10
+ function onPageClick(event) {
11
+ const target = event.target;
12
+ if (!target) return;
13
+ if (!target.closest) return;
14
+ if (target.closest("astro-dev-toolbar")) return;
15
+ if (additionalCheck && additionalCheck(target)) return;
16
+ eventTarget.dispatchEvent(new CustomEvent("toggle-app", { detail: { state: false } }));
17
+ }
18
+ eventTarget.addEventListener("app-toggled", (event) => {
19
+ if (event.detail.state === true) document.addEventListener("click", onPageClick, true);
20
+ else document.removeEventListener("click", onPageClick, true);
21
+ });
22
+ }
23
+ function synchronizePlacementOnUpdate(eventTarget, canvas) {
24
+ eventTarget.addEventListener("placement-updated", (evt) => {
25
+ if (!(evt instanceof CustomEvent)) return;
26
+ const windowElement = canvas.querySelector("astro-dev-toolbar-window");
27
+ if (!windowElement) return;
28
+ windowElement.placement = evt.detail.placement;
29
+ });
30
+ }
31
+ //#endregion
32
+ export { createWindowElement as n, synchronizePlacementOnUpdate as r, closeOnOutsideClick as t };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"window-jPkpKVcy.js","names":["event"],"sources":["../../../../../node_modules/astro/dist/runtime/client/dev-toolbar/apps/utils/window.js"],"sourcesContent":["import { settings } from \"../../settings.js\";\nfunction createWindowElement(content, placement = settings.config.placement) {\n const windowElement = document.createElement(\"astro-dev-toolbar-window\");\n windowElement.innerHTML = content;\n windowElement.placement = placement;\n return windowElement;\n}\nfunction closeOnOutsideClick(eventTarget, additionalCheck) {\n function onPageClick(event) {\n const target = event.target;\n if (!target) return;\n if (!target.closest) return;\n if (target.closest(\"astro-dev-toolbar\")) return;\n if (additionalCheck && additionalCheck(target)) return;\n eventTarget.dispatchEvent(\n new CustomEvent(\"toggle-app\", {\n detail: {\n state: false\n }\n })\n );\n }\n eventTarget.addEventListener(\"app-toggled\", (event) => {\n if (event.detail.state === true) {\n document.addEventListener(\"click\", onPageClick, true);\n } else {\n document.removeEventListener(\"click\", onPageClick, true);\n }\n });\n}\nfunction synchronizePlacementOnUpdate(eventTarget, canvas) {\n eventTarget.addEventListener(\"placement-updated\", (evt) => {\n if (!(evt instanceof CustomEvent)) {\n return;\n }\n const windowElement = canvas.querySelector(\"astro-dev-toolbar-window\");\n if (!windowElement) {\n return;\n }\n const event = evt;\n windowElement.placement = event.detail.placement;\n });\n}\nexport {\n closeOnOutsideClick,\n createWindowElement,\n synchronizePlacementOnUpdate\n};\n"],"x_google_ignoreList":[0],"mappings":";;AACA,SAAS,oBAAoB,SAAS,YAAY,SAAS,OAAO,WAAW;CAC3E,MAAM,gBAAgB,SAAS,cAAc,0BAA0B;CACvE,cAAc,YAAY;CAC1B,cAAc,YAAY;CAC1B,OAAO;AACT;AACA,SAAS,oBAAoB,aAAa,iBAAiB;CACzD,SAAS,YAAY,OAAO;EAC1B,MAAM,SAAS,MAAM;EACrB,IAAI,CAAC,QAAQ;EACb,IAAI,CAAC,OAAO,SAAS;EACrB,IAAI,OAAO,QAAQ,mBAAmB,GAAG;EACzC,IAAI,mBAAmB,gBAAgB,MAAM,GAAG;EAChD,YAAY,cACV,IAAI,YAAY,cAAc,EAC5B,QAAQ,EACN,OAAO,MACT,EACF,CAAC,CACH;CACF;CACA,YAAY,iBAAiB,gBAAgB,UAAU;EACrD,IAAI,MAAM,OAAO,UAAU,MACzB,SAAS,iBAAiB,SAAS,aAAa,IAAI;OAEpD,SAAS,oBAAoB,SAAS,aAAa,IAAI;CAE3D,CAAC;AACH;AACA,SAAS,6BAA6B,aAAa,QAAQ;CACzD,YAAY,iBAAiB,sBAAsB,QAAQ;EACzD,IAAI,EAAE,eAAe,cACnB;EAEF,MAAM,gBAAgB,OAAO,cAAc,0BAA0B;EACrE,IAAI,CAAC,eACH;EAGF,cAAc,YAAYA,IAAM,OAAO;CACzC,CAAC;AACH"}
@@ -0,0 +1,111 @@
1
+ import { escape } from "./astro_n_html-escaper.js";
2
+ import { n as createWindowElement, r as synchronizePlacementOnUpdate, t as closeOnOutsideClick } from "./window-jPkpKVcy.js";
3
+ import { i as positionHighlight, n as createHighlight, r as getElementsPositionInDocument, t as attachTooltipToHighlight } from "./highlight-DnZ1ULOL.js";
4
+ //#region ../../node_modules/astro/dist/runtime/client/dev-toolbar/apps/xray.js
5
+ var xray_default = {
6
+ id: "astro:xray",
7
+ name: "Inspect",
8
+ icon: "<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path fill=\"#fff\" d=\"M7.9 1.5v-.4a1.1 1.1 0 0 1 2.2 0v.4a1.1 1.1 0 1 1-2.2 0Zm-6.4 8.6a1.1 1.1 0 1 0 0-2.2h-.4a1.1 1.1 0 0 0 0 2.2h.4ZM12 3.7a1.1 1.1 0 0 0 1.4-.7l.4-1.1a1.1 1.1 0 0 0-2.1-.8l-.4 1.2a1.1 1.1 0 0 0 .7 1.4Zm-9.7 7.6-1.2.4a1.1 1.1 0 1 0 .8 2.1l1-.4a1.1 1.1 0 1 0-.6-2ZM20.8 17a1.9 1.9 0 0 1 0 2.6l-1.2 1.2a1.9 1.9 0 0 1-2.6 0l-4.3-4.2-1.6 3.6a1.9 1.9 0 0 1-1.7 1.2A1.9 1.9 0 0 1 7.5 20L2.7 5a1.9 1.9 0 0 1 2.4-2.4l15 5a1.9 1.9 0 0 1 .2 3.4l-3.7 1.6 4.2 4.3ZM19 18.3 14.6 14a1.9 1.9 0 0 1 .6-3l3.2-1.5L5.1 5.1l4.3 13.3 1.5-3.2a1.9 1.9 0 0 1 3-.6l4.4 4.4.7-.7Z\"/></svg>",
9
+ init(canvas, eventTarget) {
10
+ let islandsOverlays = [];
11
+ addIslandsOverlay();
12
+ document.addEventListener("astro:after-swap", addIslandsOverlay);
13
+ document.addEventListener("astro:page-load", refreshIslandsOverlayPositions);
14
+ closeOnOutsideClick(eventTarget);
15
+ synchronizePlacementOnUpdate(eventTarget, canvas);
16
+ function addIslandsOverlay() {
17
+ islandsOverlays.forEach(({ highlightElement }) => {
18
+ highlightElement.remove();
19
+ });
20
+ islandsOverlays = [];
21
+ const islands = document.querySelectorAll("astro-island");
22
+ if (islands.length === 0) {
23
+ const window2 = createWindowElement(`<style>
24
+ header {
25
+ display: flex;
26
+ }
27
+
28
+ h1 {
29
+ display: flex;
30
+ align-items: center;
31
+ gap: 8px;
32
+ font-weight: 600;
33
+ color: #fff;
34
+ margin: 0;
35
+ font-size: 22px;
36
+ }
37
+
38
+ astro-dev-toolbar-icon {
39
+ width: 1em;
40
+ height: 1em;
41
+ padding: 8px;
42
+ display: block;
43
+ background: #5f9ea0;
44
+ border-radius: 9999px;
45
+ }
46
+ </style>
47
+ <header>
48
+ <h1><astro-dev-toolbar-icon icon="lightbulb"></astro-dev-toolbar-icon>No islands detected.</h1>
49
+ </header>
50
+ <p>
51
+ It looks like there are no interactive component islands on this page. Did you forget to add a client directive to your interactive UI component?
52
+ </p>
53
+ `);
54
+ canvas.append(window2);
55
+ return;
56
+ }
57
+ islands.forEach((island) => {
58
+ const computedStyle = window.getComputedStyle(island);
59
+ const islandElement = island.children[0] || island;
60
+ if (islandElement.offsetParent === null || computedStyle.display === "none") return;
61
+ const highlight = createHighlight(islandElement.getBoundingClientRect());
62
+ const tooltip = buildIslandTooltip(island);
63
+ const { isFixed } = getElementsPositionInDocument(islandElement);
64
+ if (isFixed) tooltip.style.position = highlight.style.position = "fixed";
65
+ attachTooltipToHighlight(highlight, tooltip, islandElement);
66
+ canvas.append(highlight);
67
+ islandsOverlays.push({
68
+ highlightElement: highlight,
69
+ island: islandElement
70
+ });
71
+ });
72
+ ["scroll", "resize"].forEach((event) => {
73
+ window.addEventListener(event, refreshIslandsOverlayPositions);
74
+ });
75
+ }
76
+ function refreshIslandsOverlayPositions() {
77
+ islandsOverlays.forEach(({ highlightElement, island: islandElement }) => {
78
+ positionHighlight(highlightElement, islandElement.getBoundingClientRect());
79
+ });
80
+ }
81
+ function buildIslandTooltip(island) {
82
+ const tooltip = document.createElement("astro-dev-toolbar-tooltip");
83
+ tooltip.sections = [];
84
+ const islandProps = island.getAttribute("props") ? JSON.parse(island.getAttribute("props")) : {};
85
+ const islandClientDirective = island.getAttribute("client");
86
+ if (islandClientDirective) tooltip.sections.push({
87
+ title: "Client directive",
88
+ inlineTitle: `<code>client:${islandClientDirective}</code>`
89
+ });
90
+ const islandPropsEntries = Object.entries(islandProps).filter((prop) => !prop[0].startsWith("data-astro-cid-"));
91
+ if (islandPropsEntries.length > 0) {
92
+ const stringifiedProps = JSON.stringify(Object.fromEntries(islandPropsEntries.map((prop) => [prop[0], prop[1][1]])), void 0, 2);
93
+ tooltip.sections.push({
94
+ title: "Props",
95
+ content: `<pre><code>${escape(stringifiedProps)}</code></pre>`
96
+ });
97
+ }
98
+ const islandComponentPath = island.getAttribute("component-url");
99
+ if (islandComponentPath) tooltip.sections.push({
100
+ content: islandComponentPath,
101
+ clickDescription: "Click to go to file",
102
+ async clickAction() {
103
+ await fetch("/__open-in-editor?file=" + encodeURIComponent(window.__astro_dev_toolbar__.root + islandComponentPath.slice(1)));
104
+ }
105
+ });
106
+ return tooltip;
107
+ }
108
+ }
109
+ };
110
+ //#endregion
111
+ export { xray_default as default };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xray-BXCHpEJP.js","names":["escapeHTML"],"sources":["../../../../../node_modules/astro/dist/runtime/client/dev-toolbar/apps/xray.js"],"sourcesContent":["import { escape as escapeHTML } from \"html-escaper\";\nimport {\n attachTooltipToHighlight,\n createHighlight,\n getElementsPositionInDocument,\n positionHighlight\n} from \"./utils/highlight.js\";\nimport {\n closeOnOutsideClick,\n createWindowElement,\n synchronizePlacementOnUpdate\n} from \"./utils/window.js\";\nconst icon = '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path fill=\"#fff\" d=\"M7.9 1.5v-.4a1.1 1.1 0 0 1 2.2 0v.4a1.1 1.1 0 1 1-2.2 0Zm-6.4 8.6a1.1 1.1 0 1 0 0-2.2h-.4a1.1 1.1 0 0 0 0 2.2h.4ZM12 3.7a1.1 1.1 0 0 0 1.4-.7l.4-1.1a1.1 1.1 0 0 0-2.1-.8l-.4 1.2a1.1 1.1 0 0 0 .7 1.4Zm-9.7 7.6-1.2.4a1.1 1.1 0 1 0 .8 2.1l1-.4a1.1 1.1 0 1 0-.6-2ZM20.8 17a1.9 1.9 0 0 1 0 2.6l-1.2 1.2a1.9 1.9 0 0 1-2.6 0l-4.3-4.2-1.6 3.6a1.9 1.9 0 0 1-1.7 1.2A1.9 1.9 0 0 1 7.5 20L2.7 5a1.9 1.9 0 0 1 2.4-2.4l15 5a1.9 1.9 0 0 1 .2 3.4l-3.7 1.6 4.2 4.3ZM19 18.3 14.6 14a1.9 1.9 0 0 1 .6-3l3.2-1.5L5.1 5.1l4.3 13.3 1.5-3.2a1.9 1.9 0 0 1 3-.6l4.4 4.4.7-.7Z\"/></svg>';\nvar xray_default = {\n id: \"astro:xray\",\n name: \"Inspect\",\n icon,\n init(canvas, eventTarget) {\n let islandsOverlays = [];\n addIslandsOverlay();\n document.addEventListener(\"astro:after-swap\", addIslandsOverlay);\n document.addEventListener(\"astro:page-load\", refreshIslandsOverlayPositions);\n closeOnOutsideClick(eventTarget);\n synchronizePlacementOnUpdate(eventTarget, canvas);\n function addIslandsOverlay() {\n islandsOverlays.forEach(({ highlightElement }) => {\n highlightElement.remove();\n });\n islandsOverlays = [];\n const islands = document.querySelectorAll(\"astro-island\");\n if (islands.length === 0) {\n const window2 = createWindowElement(\n `<style>\n\t\t\t\t\t\theader {\n\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\th1 {\n\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\talign-items: center;\n\t\t\t\t\t\t\tgap: 8px;\n\t\t\t\t\t\t\tfont-weight: 600;\n\t\t\t\t\t\t\tcolor: #fff;\n\t\t\t\t\t\t\tmargin: 0;\n\t\t\t\t\t\t\tfont-size: 22px;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tastro-dev-toolbar-icon {\n\t\t\t\t\t\t\twidth: 1em;\n\t\t\t\t\t\t height: 1em;\n\t\t\t\t\t\t padding: 8px;\n\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\tbackground: #5f9ea0;\n\t\t\t\t\t\t\tborder-radius: 9999px;\n\t\t\t\t\t\t}\n\t\t\t\t\t</style>\n\t\t\t\t\t<header>\n\t\t\t\t\t\t<h1><astro-dev-toolbar-icon icon=\"lightbulb\"></astro-dev-toolbar-icon>No islands detected.</h1>\n\t\t\t\t\t</header>\n\t\t\t\t\t<p>\n\t\t\t\t\t\tIt looks like there are no interactive component islands on this page. Did you forget to add a client directive to your interactive UI component?\n\t\t\t\t\t</p>\n\t\t\t\t\t`\n );\n canvas.append(window2);\n return;\n }\n islands.forEach((island) => {\n const computedStyle = window.getComputedStyle(island);\n const islandElement = island.children[0] || island;\n if (islandElement.offsetParent === null || computedStyle.display === \"none\") {\n return;\n }\n const rect = islandElement.getBoundingClientRect();\n const highlight = createHighlight(rect);\n const tooltip = buildIslandTooltip(island);\n const { isFixed } = getElementsPositionInDocument(islandElement);\n if (isFixed) {\n tooltip.style.position = highlight.style.position = \"fixed\";\n }\n attachTooltipToHighlight(highlight, tooltip, islandElement);\n canvas.append(highlight);\n islandsOverlays.push({ highlightElement: highlight, island: islandElement });\n });\n [\"scroll\", \"resize\"].forEach((event) => {\n window.addEventListener(event, refreshIslandsOverlayPositions);\n });\n }\n function refreshIslandsOverlayPositions() {\n islandsOverlays.forEach(({ highlightElement, island: islandElement }) => {\n const rect = islandElement.getBoundingClientRect();\n positionHighlight(highlightElement, rect);\n });\n }\n function buildIslandTooltip(island) {\n const tooltip = document.createElement(\"astro-dev-toolbar-tooltip\");\n tooltip.sections = [];\n const islandProps = island.getAttribute(\"props\") ? JSON.parse(island.getAttribute(\"props\")) : {};\n const islandClientDirective = island.getAttribute(\"client\");\n if (islandClientDirective) {\n tooltip.sections.push({\n title: \"Client directive\",\n inlineTitle: `<code>client:${islandClientDirective}</code>`\n });\n }\n const islandPropsEntries = Object.entries(islandProps).filter(\n (prop) => !prop[0].startsWith(\"data-astro-cid-\")\n );\n if (islandPropsEntries.length > 0) {\n const stringifiedProps = JSON.stringify(\n Object.fromEntries(islandPropsEntries.map((prop) => [prop[0], prop[1][1]])),\n void 0,\n 2\n );\n tooltip.sections.push({\n title: \"Props\",\n content: `<pre><code>${escapeHTML(stringifiedProps)}</code></pre>`\n });\n }\n const islandComponentPath = island.getAttribute(\"component-url\");\n if (islandComponentPath) {\n tooltip.sections.push({\n content: islandComponentPath,\n clickDescription: \"Click to go to file\",\n async clickAction() {\n await fetch(\n \"/__open-in-editor?file=\" + encodeURIComponent(\n window.__astro_dev_toolbar__.root + islandComponentPath.slice(1)\n )\n );\n }\n });\n }\n return tooltip;\n }\n }\n};\nexport {\n xray_default as default\n};\n"],"x_google_ignoreList":[0],"mappings":";;;;AAaA,IAAI,eAAe;CACjB,IAAI;CACJ,MAAM;CACN,MAAA;CACA,KAAK,QAAQ,aAAa;EACxB,IAAI,kBAAkB,CAAC;EACvB,kBAAkB;EAClB,SAAS,iBAAiB,oBAAoB,iBAAiB;EAC/D,SAAS,iBAAiB,mBAAmB,8BAA8B;EAC3E,oBAAoB,WAAW;EAC/B,6BAA6B,aAAa,MAAM;EAChD,SAAS,oBAAoB;GAC3B,gBAAgB,SAAS,EAAE,uBAAuB;IAChD,iBAAiB,OAAO;GAC1B,CAAC;GACD,kBAAkB,CAAC;GACnB,MAAM,UAAU,SAAS,iBAAiB,cAAc;GACxD,IAAI,QAAQ,WAAW,GAAG;IACxB,MAAM,UAAU,oBACd;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA+BF;IACA,OAAO,OAAO,OAAO;IACrB;GACF;GACA,QAAQ,SAAS,WAAW;IAC1B,MAAM,gBAAgB,OAAO,iBAAiB,MAAM;IACpD,MAAM,gBAAgB,OAAO,SAAS,MAAM;IAC5C,IAAI,cAAc,iBAAiB,QAAQ,cAAc,YAAY,QACnE;IAGF,MAAM,YAAY,gBADL,cAAc,sBACU,CAAC;IACtC,MAAM,UAAU,mBAAmB,MAAM;IACzC,MAAM,EAAE,YAAY,8BAA8B,aAAa;IAC/D,IAAI,SACF,QAAQ,MAAM,WAAW,UAAU,MAAM,WAAW;IAEtD,yBAAyB,WAAW,SAAS,aAAa;IAC1D,OAAO,OAAO,SAAS;IACvB,gBAAgB,KAAK;KAAE,kBAAkB;KAAW,QAAQ;IAAc,CAAC;GAC7E,CAAC;GACD,CAAC,UAAU,QAAQ,CAAC,CAAC,SAAS,UAAU;IACtC,OAAO,iBAAiB,OAAO,8BAA8B;GAC/D,CAAC;EACH;EACA,SAAS,iCAAiC;GACxC,gBAAgB,SAAS,EAAE,kBAAkB,QAAQ,oBAAoB;IAEvE,kBAAkB,kBADL,cAAc,sBACY,CAAC;GAC1C,CAAC;EACH;EACA,SAAS,mBAAmB,QAAQ;GAClC,MAAM,UAAU,SAAS,cAAc,2BAA2B;GAClE,QAAQ,WAAW,CAAC;GACpB,MAAM,cAAc,OAAO,aAAa,OAAO,IAAI,KAAK,MAAM,OAAO,aAAa,OAAO,CAAC,IAAI,CAAC;GAC/F,MAAM,wBAAwB,OAAO,aAAa,QAAQ;GAC1D,IAAI,uBACF,QAAQ,SAAS,KAAK;IACpB,OAAO;IACP,aAAa,gBAAgB,sBAAsB;GACrD,CAAC;GAEH,MAAM,qBAAqB,OAAO,QAAQ,WAAW,CAAC,CAAC,QACpD,SAAS,CAAC,KAAK,EAAE,CAAC,WAAW,iBAAiB,CACjD;GACA,IAAI,mBAAmB,SAAS,GAAG;IACjC,MAAM,mBAAmB,KAAK,UAC5B,OAAO,YAAY,mBAAmB,KAAK,SAAS,CAAC,KAAK,IAAI,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,GAC1E,KAAK,GACL,CACF;IACA,QAAQ,SAAS,KAAK;KACpB,OAAO;KACP,SAAS,cAAcA,OAAW,gBAAgB,EAAE;IACtD,CAAC;GACH;GACA,MAAM,sBAAsB,OAAO,aAAa,eAAe;GAC/D,IAAI,qBACF,QAAQ,SAAS,KAAK;IACpB,SAAS;IACT,kBAAkB;IAClB,MAAM,cAAc;KAClB,MAAM,MACJ,4BAA4B,mBAC1B,OAAO,sBAAsB,OAAO,oBAAoB,MAAM,CAAC,CACjE,CACF;IACF;GACF,CAAC;GAEH,OAAO;EACT;CACF;AACF"}
@@ -0,0 +1,10 @@
1
+ {
2
+ "pages/010-guides/pages/010-installation/images/diagram.svg": {
3
+ "kind": "static",
4
+ "outputVersion": 2,
5
+ "sourceHash": "5bf0dfcf8d4933ff5175143edfe95371bce44fb3b2e05db077dceb128500b948",
6
+ "src": "/images/original/pages/010-guides/pages/010-installation/images/diagram-5bf0dfcf.svg",
7
+ "width": 900,
8
+ "height": 240
9
+ }
10
+ }
@@ -0,0 +1,3 @@
1
+ url: http://localhost:4321/
2
+ navigation:
3
+ mode: tree
@@ -0,0 +1,15 @@
1
+ ---
2
+ page:
3
+ description: A focused fixture for nested Norna pages.
4
+ ---
5
+
6
+ # Nested pages
7
+
8
+ ## Start here
9
+
10
+ This fixture shows how parent and child pages form paths and navigation.
11
+
12
+ ## What to inspect
13
+
14
+ Open Guides, Installation and macOS in sequence. Reference contains another
15
+ Installation page to verify that page ids only need to be unique among siblings.
@@ -0,0 +1,15 @@
1
+ ---
2
+ page:
3
+ description: The parent page for nested guides.
4
+ ---
5
+
6
+ # Guides
7
+
8
+ ## Guide overview
9
+
10
+ Guides is a top-level page and the parent of Installation and Workflows.
11
+
12
+ ## Inherited presentation
13
+
14
+ This page defines a local theme. Its descendants inherit that theme unless they
15
+ define their own.
@@ -0,0 +1,21 @@
1
+ ---
2
+ page:
3
+ description: A nested installation guide.
4
+ ---
5
+
6
+ # Installation
7
+
8
+ ## Installation details
9
+
10
+ This page should be available at `/guides/installation/` and inherit the Guides
11
+ theme.
12
+
13
+ ## Examples
14
+
15
+ The managed image belongs to this nested page and section.
16
+
17
+ ```norna-image-stack
18
+ - image: diagram.svg
19
+ alt: Three nested page levels connected in sequence.
20
+ caption: A managed SVG resolved from the nested page image directory.
21
+ ```
@@ -0,0 +1,21 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 900 240" role="img" aria-labelledby="title desc">
2
+ <title id="title">Nested pages</title>
3
+ <desc id="desc">Three page boxes connected from Guides to Installation to macOS.</desc>
4
+ <rect width="900" height="240" fill="#f3f0e8"/>
5
+ <g fill="#fff" stroke="#191919" stroke-width="3">
6
+ <rect x="45" y="65" width="210" height="110" rx="6"/>
7
+ <rect x="345" y="65" width="210" height="110" rx="6"/>
8
+ <rect x="645" y="65" width="210" height="110" rx="6"/>
9
+ </g>
10
+ <g fill="#191919" font-family="system-ui, sans-serif" font-size="26" text-anchor="middle">
11
+ <text x="150" y="130">Guides</text>
12
+ <text x="450" y="130">Installation</text>
13
+ <text x="750" y="130">macOS</text>
14
+ </g>
15
+ <g fill="none" stroke="#b33a2b" stroke-width="4">
16
+ <path d="M270 120h55"/>
17
+ <path d="m315 110 10 10-10 10"/>
18
+ <path d="M570 120h55"/>
19
+ <path d="m615 110 10 10-10 10"/>
20
+ </g>
21
+ </svg>
@@ -0,0 +1,18 @@
1
+ ---
2
+ page:
3
+ description: A third-level macOS installation page.
4
+ ---
5
+
6
+ # macOS
7
+
8
+ ## Install
9
+
10
+ This third-level page should be available at `/guides/installation/macos/`.
11
+
12
+ ### Prerequisites
13
+
14
+ This nested heading verifies the current-page contents hierarchy.
15
+
16
+ ## Verify
17
+
18
+ The page should inherit the theme from Guides through its parent page.
@@ -0,0 +1,11 @@
1
+ ---
2
+ page:
3
+ description: A sibling page ordered after Installation.
4
+ ---
5
+
6
+ # Workflows
7
+
8
+ ## Local work
9
+
10
+ This sibling follows Installation because `020-workflows` follows
11
+ `010-installation`.
@@ -0,0 +1,9 @@
1
+ ---
2
+ page:
3
+ description: A leaf page without section headings.
4
+ ---
5
+
6
+ # Release notes
7
+
8
+ This page has no level-two headings and therefore appears as a direct mobile
9
+ navigation link rather than an expandable page.
@@ -0,0 +1,3 @@
1
+ # Configuration
2
+
3
+ Configuration reference for the long navigation fixture.
@@ -0,0 +1,3 @@
1
+ # Content
2
+
3
+ Content reference for the long navigation fixture.
@@ -0,0 +1,3 @@
1
+ # Themes
2
+
3
+ Theme reference for the long navigation fixture.
@@ -0,0 +1,3 @@
1
+ # Images
2
+
3
+ Image reference for the long navigation fixture.
@@ -0,0 +1,3 @@
1
+ # Cards
2
+
3
+ Card reference for the long navigation fixture.
@@ -0,0 +1,3 @@
1
+ # Notes
2
+
3
+ Note reference for the long navigation fixture.
@@ -0,0 +1,3 @@
1
+ # Validation
2
+
3
+ Validation reference for the long navigation fixture.
@@ -0,0 +1,3 @@
1
+ # Synchronization
2
+
3
+ Synchronization reference for the long navigation fixture.
@@ -0,0 +1,3 @@
1
+ # Building
2
+
3
+ Build reference for the long navigation fixture.
@@ -0,0 +1,3 @@
1
+ # Publishing
2
+
3
+ Publishing reference for the long navigation fixture.
@@ -0,0 +1,3 @@
1
+ # Troubleshooting
2
+
3
+ Troubleshooting reference for the long navigation fixture.
@@ -0,0 +1,3 @@
1
+ # Migration
2
+
3
+ Migration reference for the long navigation fixture.
@@ -0,0 +1,3 @@
1
+ # Accessibility
2
+
3
+ Accessibility reference for the long navigation fixture.
@@ -0,0 +1,3 @@
1
+ # Performance
2
+
3
+ Performance reference for the long navigation fixture.
@@ -0,0 +1,3 @@
1
+ # Security
2
+
3
+ Security reference for the long navigation fixture.
@@ -0,0 +1,3 @@
1
+ # Localization
2
+
3
+ Localization reference for the long navigation fixture.
@@ -0,0 +1,3 @@
1
+ # Upgrading
2
+
3
+ Upgrade reference for the long navigation fixture.
@@ -0,0 +1,3 @@
1
+ # FAQ
2
+
3
+ Frequently asked questions for the long navigation fixture.
@@ -0,0 +1,7 @@
1
+ layout:
2
+ contentSpacing: spacious
3
+ textWidth: wide
4
+ images:
5
+ width: 760px
6
+ sections:
7
+ backgroundPattern: cycling
@@ -0,0 +1,10 @@
1
+ ---
2
+ page:
3
+ description: A second top-level branch.
4
+ ---
5
+
6
+ # Reference
7
+
8
+ ## Reference overview
9
+
10
+ Reference follows Guides and has its own child named Installation.
@@ -0,0 +1,11 @@
1
+ ---
2
+ page:
3
+ description: A duplicate local page id in a different branch.
4
+ ---
5
+
6
+ # Reference installation
7
+
8
+ ## Options
9
+
10
+ This page should be available at `/reference/installation/` without conflicting
11
+ with `/guides/installation/`.
@@ -0,0 +1 @@
1
+ preset: documentation
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@janga/norna",
3
3
  "description": "An opinionated CLI for building responsive websites from Markdown, images, and theme presets.",
4
4
  "type": "module",
5
- "version": "0.7.16",
5
+ "version": "0.7.18",
6
6
  "license": "GPL-3.0-only",
7
7
  "repository": {
8
8
  "type": "git",
@@ -70,10 +70,13 @@
70
70
  "deploy:watch": "node bin/norna.mjs deploy:watch",
71
71
  "doctor": "node bin/norna.mjs doctor",
72
72
  "demo:build": "node bin/norna.mjs --site-dir examples/feature-demos/media-and-surfaces/site build",
73
- "test": "npm run schemas:check && npm run test:schemas && npm run test:route-model && npm run test:project-config && npm run test:editor-language && npm run test:content-check && npm run test:content-model-v2 && npm run test:theme-presets && npm run test:site-public && npm run test:cli-discovery && npm run test:engine-commands && npm run test:documentation && npm run test:ci-lockfile && npm run test:temporary-visibility && npm run test:client-javascript && npm run test:fixture:build && npm run test:examples && npm run package:check",
73
+ "test": "npm run schemas:check && npm run test:schemas && npm run test:page-model && npm run test:nested-pages && npm run test:heading-ids && npm run test:navigation-model && npm run test:project-config && npm run test:editor-language && npm run test:content-check && npm run test:content-model-v2 && npm run test:theme-presets && npm run test:site-public && npm run test:cli-discovery && npm run test:engine-commands && npm run test:documentation && npm run test:ci-lockfile && npm run test:banner-visibility && npm run test:client-javascript && npm run test:fixture:build && npm run test:examples && npm run package:check",
74
74
  "test:fixture:build": "node bin/norna.mjs --site-dir fixtures/basic/site build",
75
75
  "test:examples": "node scripts/test-examples.mjs",
76
- "test:route-model": "node scripts/test-route-model.mjs",
76
+ "test:page-model": "node scripts/test-page-model.mjs",
77
+ "test:nested-pages": "node scripts/test-nested-pages.mjs",
78
+ "test:heading-ids": "node scripts/test-heading-ids.mjs",
79
+ "test:navigation-model": "node scripts/test-navigation-model.mjs",
77
80
  "test:schemas": "node scripts/test-schemas.mjs",
78
81
  "test:project-config": "node scripts/test-project-config.mjs",
79
82
  "test:content-check": "node scripts/test-content-check.mjs",
@@ -85,9 +88,10 @@
85
88
  "test:editor-language": "node scripts/test-editor-language-service.mjs && npm --prefix editors/vscode run check",
86
89
  "test:documentation": "node scripts/test-documentation.mjs",
87
90
  "test:ci-lockfile": "node scripts/test-ci-lockfile.mjs",
88
- "test:temporary-visibility": "node scripts/test-temporary-visibility.mjs",
91
+ "test:banner-visibility": "node scripts/test-banner-visibility.mjs",
89
92
  "test:client-javascript": "node scripts/test-client-javascript.mjs",
90
93
  "test:navigation": "node scripts/test-navigation.mjs",
94
+ "test:navigation:tree": "node scripts/test-navigation.mjs --site-dir fixtures/nested-pages/site tests/navigation-tree.spec.ts",
91
95
  "test:navigation:stress": "node scripts/test-navigation.mjs tests/navigation-stress.spec.ts",
92
96
  "test:navigation:preview": "node scripts/test-navigation-preview.mjs",
93
97
  "package:check": "node scripts/test-package-check.mjs",