@janga/norna 0.7.11 → 0.7.13

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 (239) hide show
  1. package/README.md +120 -108
  2. package/bin/norna-cli.mjs +1 -1
  3. package/docs/README.md +107 -75
  4. package/docs/assets/norna-dog-shelter.jpg +0 -0
  5. package/docs/commands.md +7 -4
  6. package/docs/configuration.md +86 -185
  7. package/docs/design/command-organization.md +1 -1
  8. package/docs/design/norna-diagram-design.md +2 -1
  9. package/docs/design/site-examples-structure.md +4 -1
  10. package/docs/engine-development.md +15 -8
  11. package/docs/getting-started.md +126 -144
  12. package/docs/how-to/embedded-site.md +35 -0
  13. package/docs/publishing.md +47 -46
  14. package/docs/requirements.md +54 -0
  15. package/docs/routes.md +1 -1
  16. package/docs/site-structure.md +4 -4
  17. package/docs/sitewide-content.md +2 -1
  18. package/docs/theme.md +18 -0
  19. package/examples/README.md +26 -24
  20. package/examples/complete-sites/dog-shelter-multi-page/.astro/content-assets.mjs +4 -1
  21. package/examples/complete-sites/dog-shelter-multi-page/.astro/content.d.ts +1 -1
  22. package/examples/complete-sites/dog-shelter-multi-page/.astro/data-store.json +1 -1
  23. package/examples/complete-sites/dog-shelter-multi-page/.astro/dev.json +6 -8
  24. package/examples/complete-sites/dog-shelter-multi-page/.astro/dev.log +26 -53
  25. package/examples/complete-sites/dog-shelter-multi-page/README.md +7 -0
  26. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/_metadata.json +29 -35
  27. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/{astro-D_GIpJIE.js → astro-B3JHJyiv.js} +4 -4
  28. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro-B3JHJyiv.js.map +1 -0
  29. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_n_aria-query.js +151 -151
  30. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_n_aria-query.js.map +1 -1
  31. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_n_axobject-query.js +131 -131
  32. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_n_axobject-query.js.map +1 -1
  33. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_n_html-escaper.js +1 -1
  34. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_n_html-escaper.js.map +1 -1
  35. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +10 -10
  36. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +1 -1
  37. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/{audit-DM9Hkl5B.js → audit-C3SVr7dT.js} +10 -10
  38. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/audit-C3SVr7dT.js.map +1 -0
  39. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/{highlight-DnZ1ULOL.js → highlight-BLtvqtzO.js} +1 -1
  40. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/highlight-BLtvqtzO.js.map +1 -0
  41. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/{icons-RyebKi45.js → icons-C92i61-2.js} +1 -1
  42. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/icons-C92i61-2.js.map +1 -0
  43. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/{settings-DaU-gNnK.js → settings-v5GgKks_.js} +2 -2
  44. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/settings-v5GgKks_.js.map +1 -0
  45. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/{toolbar-63PA619H.js → toolbar-BFvJVp26.js} +2 -2
  46. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/toolbar-BFvJVp26.js.map +1 -0
  47. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/{ui-library--bkcNSYz.js → ui-library-Cd35oAvo.js} +10 -10
  48. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/ui-library-Cd35oAvo.js.map +1 -0
  49. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/{window-jPkpKVcy.js → window-vo3A6TMn.js} +1 -1
  50. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/window-vo3A6TMn.js.map +1 -0
  51. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/{xray-BXCHpEJP.js → xray-DwhzGckb.js} +3 -3
  52. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/xray-DwhzGckb.js.map +1 -0
  53. package/examples/complete-sites/dog-shelter-multi-page/site/.norna/generated-images.json +92 -12
  54. package/examples/complete-sites/dog-shelter-multi-page/site/config.md +3 -0
  55. package/examples/complete-sites/dog-shelter-multi-page/site/content.md +12 -0
  56. package/examples/complete-sites/dog-shelter-multi-page/site/images/intro/shelter-dog.jpg +0 -0
  57. package/examples/complete-sites/dog-shelter-multi-page/site/public/logo.svg +9 -0
  58. package/examples/complete-sites/dog-shelter-multi-page/site/routes/010-dogs/images/dogs/rex.jpg +0 -0
  59. package/examples/complete-sites/dog-shelter-multi-page/site/routes/010-dogs/images/dogs/rover.jpg +0 -0
  60. package/examples/complete-sites/dog-shelter-multi-page/site/routes/010-dogs/route-content.md +11 -19
  61. package/examples/complete-sites/dog-shelter-multi-page/site/routes/020-adopt/images/adopt/adoption-dog.jpg +0 -0
  62. package/examples/complete-sites/dog-shelter-multi-page/site/routes/020-adopt/route-content.md +11 -0
  63. package/examples/complete-sites/dog-shelter-multi-page/site/sitewide-content.md +12 -2
  64. package/examples/complete-sites/dog-shelter-multi-page/site/theme.md +1 -23
  65. package/examples/complete-sites/dog-shelter-single-page/.astro/collections/site.schema.json +59 -0
  66. package/examples/complete-sites/dog-shelter-single-page/.astro/collections/sitewide.schema.json +138 -0
  67. package/examples/complete-sites/dog-shelter-single-page/.astro/collections/theme.schema.json +755 -0
  68. package/examples/complete-sites/dog-shelter-single-page/.astro/content-assets.mjs +4 -0
  69. package/examples/complete-sites/dog-shelter-single-page/.astro/content-modules.mjs +1 -0
  70. package/examples/complete-sites/dog-shelter-single-page/.astro/content.d.ts +183 -0
  71. package/examples/complete-sites/dog-shelter-single-page/.astro/data-store.json +1 -0
  72. package/examples/complete-sites/dog-shelter-single-page/.astro/dev.json +13 -0
  73. package/examples/complete-sites/dog-shelter-single-page/.astro/dev.log +14 -0
  74. package/examples/complete-sites/dog-shelter-single-page/.astro/settings.json +5 -0
  75. package/examples/complete-sites/dog-shelter-single-page/.astro/types.d.ts +2 -0
  76. package/examples/complete-sites/dog-shelter-single-page/README.md +7 -0
  77. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/_metadata.json +74 -0
  78. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro-B3JHJyiv.js +434 -0
  79. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro-B3JHJyiv.js.map +1 -0
  80. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_n_aria-query.js +6390 -0
  81. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_n_aria-query.js.map +1 -0
  82. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_n_axobject-query.js +2702 -0
  83. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_n_axobject-query.js.map +1 -0
  84. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_n_html-escaper.js +65 -0
  85. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_n_html-escaper.js.map +1 -0
  86. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +455 -0
  87. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +1 -0
  88. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/audit-C3SVr7dT.js +1534 -0
  89. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/audit-C3SVr7dT.js.map +1 -0
  90. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/highlight-BLtvqtzO.js +48 -0
  91. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/highlight-BLtvqtzO.js.map +1 -0
  92. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/icons-C92i61-2.js +42 -0
  93. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/icons-C92i61-2.js.map +1 -0
  94. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/package.json +3 -0
  95. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +4 -0
  96. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/settings-v5GgKks_.js +190 -0
  97. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/settings-v5GgKks_.js.map +1 -0
  98. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/toolbar-BFvJVp26.js +458 -0
  99. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/toolbar-BFvJVp26.js.map +1 -0
  100. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/ui-library-Cd35oAvo.js +1016 -0
  101. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/ui-library-Cd35oAvo.js.map +1 -0
  102. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/window-vo3A6TMn.js +32 -0
  103. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/window-vo3A6TMn.js.map +1 -0
  104. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/xray-DwhzGckb.js +111 -0
  105. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/xray-DwhzGckb.js.map +1 -0
  106. package/examples/complete-sites/dog-shelter-single-page/site/.norna/generated-images.json +44 -12
  107. package/examples/complete-sites/dog-shelter-single-page/site/config.md +3 -0
  108. package/examples/complete-sites/dog-shelter-single-page/site/content.md +20 -24
  109. package/examples/complete-sites/dog-shelter-single-page/site/images/what-we-do/rescue-dog.jpg +0 -0
  110. package/examples/complete-sites/dog-shelter-single-page/site/images/you-can-help/foster-dog.jpg +0 -0
  111. package/examples/complete-sites/dog-shelter-single-page/site/public/logo.svg +9 -0
  112. package/examples/complete-sites/dog-shelter-single-page/site/sitewide-content.md +12 -2
  113. package/examples/complete-sites/dog-shelter-single-page/site/theme.md +1 -23
  114. package/examples/feature-demos/media-and-surfaces/.astro/data-store.json +1 -1
  115. package/examples/feature-demos/media-and-surfaces/.astro/dev.log +15 -2
  116. package/examples/feature-demos/media-and-surfaces/README.md +7 -1
  117. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/_metadata.json +7 -1
  118. package/examples/{complete-sites/dog-shelter-multi-page → feature-demos/media-and-surfaces}/node_modules/.vite/deps/embla-carousel.js +1 -1
  119. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/embla-carousel.js.map +1 -0
  120. package/examples/feature-demos/media-and-surfaces/site/config.md +3 -0
  121. package/examples/feature-demos/media-and-surfaces/site/content.md +5 -51
  122. package/examples/feature-demos/media-and-surfaces/site/routes/010-media/route-content.md +10 -25
  123. package/examples/feature-demos/media-and-surfaces/site/routes/020-surfaces/route-content.md +1 -1
  124. package/examples/feature-demos/sitewide-content/.astro/collections/site.schema.json +59 -0
  125. package/examples/feature-demos/sitewide-content/.astro/collections/sitewide.schema.json +138 -0
  126. package/examples/feature-demos/sitewide-content/.astro/collections/theme.schema.json +755 -0
  127. package/examples/feature-demos/sitewide-content/.astro/content-assets.mjs +1 -0
  128. package/examples/feature-demos/sitewide-content/.astro/content-modules.mjs +1 -0
  129. package/examples/feature-demos/sitewide-content/.astro/content.d.ts +183 -0
  130. package/examples/feature-demos/sitewide-content/.astro/data-store.json +1 -0
  131. package/examples/feature-demos/sitewide-content/.astro/dev.json +13 -0
  132. package/examples/feature-demos/sitewide-content/.astro/dev.log +18 -0
  133. package/examples/feature-demos/sitewide-content/.astro/settings.json +5 -0
  134. package/examples/feature-demos/sitewide-content/.astro/types.d.ts +2 -0
  135. package/examples/feature-demos/sitewide-content/README.md +18 -0
  136. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/_metadata.json +74 -0
  137. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro-B3JHJyiv.js +434 -0
  138. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro-B3JHJyiv.js.map +1 -0
  139. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_n_aria-query.js +6390 -0
  140. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_n_aria-query.js.map +1 -0
  141. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_n_axobject-query.js +2702 -0
  142. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_n_axobject-query.js.map +1 -0
  143. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_n_html-escaper.js +65 -0
  144. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_n_html-escaper.js.map +1 -0
  145. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +455 -0
  146. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +1 -0
  147. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/audit-C3SVr7dT.js +1534 -0
  148. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/audit-C3SVr7dT.js.map +1 -0
  149. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/highlight-BLtvqtzO.js +48 -0
  150. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/highlight-BLtvqtzO.js.map +1 -0
  151. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/icons-C92i61-2.js +42 -0
  152. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/icons-C92i61-2.js.map +1 -0
  153. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/package.json +3 -0
  154. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +4 -0
  155. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/settings-v5GgKks_.js +190 -0
  156. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/settings-v5GgKks_.js.map +1 -0
  157. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/toolbar-BFvJVp26.js +458 -0
  158. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/toolbar-BFvJVp26.js.map +1 -0
  159. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/ui-library-Cd35oAvo.js +1016 -0
  160. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/ui-library-Cd35oAvo.js.map +1 -0
  161. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/window-vo3A6TMn.js +32 -0
  162. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/window-vo3A6TMn.js.map +1 -0
  163. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/xray-DwhzGckb.js +111 -0
  164. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/xray-DwhzGckb.js.map +1 -0
  165. package/examples/feature-demos/sitewide-content/site/.norna/generated-images.json +1 -0
  166. package/examples/feature-demos/sitewide-content/site/config.md +3 -0
  167. package/examples/feature-demos/sitewide-content/site/content.md +16 -0
  168. package/examples/feature-demos/sitewide-content/site/public/logo.svg +6 -0
  169. package/examples/feature-demos/sitewide-content/site/public/robots.txt +2 -0
  170. package/examples/feature-demos/sitewide-content/site/routes/010-identity/route-content.md +20 -0
  171. package/examples/feature-demos/sitewide-content/site/routes/020-notices/route-content.md +22 -0
  172. package/examples/feature-demos/sitewide-content/site/routes/030-footer/route-content.md +17 -0
  173. package/examples/feature-demos/sitewide-content/site/sitewide-content.md +33 -0
  174. package/examples/feature-demos/sitewide-content/site/theme.md +3 -0
  175. package/examples/feature-demos/theme-presets/.astro/dev.log +37 -0
  176. package/examples/feature-demos/theme-presets/README.md +5 -1
  177. package/examples/feature-demos/theme-presets/site/config.md +3 -0
  178. package/fixtures/basic/site/config.md +3 -0
  179. package/fixtures/content-model-v2/site/config.md +3 -0
  180. package/package.json +12 -7
  181. package/scripts/build-pages.mjs +4 -6
  182. package/scripts/check-config.mjs +1 -10
  183. package/scripts/deploy-site.mjs +12 -8
  184. package/scripts/lib/example-sites.mjs +3 -0
  185. package/scripts/lib/github-repository.mjs +44 -0
  186. package/scripts/lib/norna-markdown-blocks.mjs +97 -10
  187. package/scripts/lib/project-config.mjs +112 -123
  188. package/scripts/lib/site-content.mjs +7 -0
  189. package/scripts/lib/site-paths.mjs +6 -2
  190. package/scripts/test-client-javascript.mjs +221 -0
  191. package/scripts/test-content-check.mjs +103 -0
  192. package/scripts/test-content-model-v2.mjs +9 -13
  193. package/scripts/test-documentation.mjs +116 -0
  194. package/scripts/test-engine-commands.mjs +12 -3
  195. package/scripts/test-examples.mjs +9 -0
  196. package/scripts/test-package-check.mjs +17 -9
  197. package/scripts/test-project-config.mjs +125 -0
  198. package/scripts/test-temporary-visibility.mjs +3 -10
  199. package/scripts/test-theme-presets.mjs +3 -8
  200. package/scripts/watch-pages-deploy.mjs +15 -11
  201. package/src/components/GalleryGrid.astro +30 -230
  202. package/src/components/ImageCarousel.astro +184 -0
  203. package/src/components/MobileSectionNavigationScript.astro +14 -0
  204. package/src/components/SiteNavigation.astro +54 -341
  205. package/src/components/SiteNotesScript.astro +43 -0
  206. package/src/components/SitePage.astro +4 -1
  207. package/src/components/SiteSection.astro +4 -47
  208. package/src/layouts/BaseLayout.astro +1 -1
  209. package/src/lib/galleryImages.ts +53 -0
  210. package/src/styles/global.css +81 -1
  211. package/starters/basic/.github/workflows/deploy.yml +1 -2
  212. package/starters/basic/README.md +10 -8
  213. package/starters/basic/site/config.md +3 -0
  214. package/starters/project/.github/workflows/deploy.yml +1 -2
  215. package/starters/project/README.md +3 -4
  216. package/starters/project/site/config.md +3 -0
  217. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro-D_GIpJIE.js.map +0 -1
  218. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/audit-DM9Hkl5B.js.map +0 -1
  219. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/embla-carousel.js.map +0 -1
  220. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/highlight-DnZ1ULOL.js.map +0 -1
  221. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/icons-RyebKi45.js.map +0 -1
  222. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/settings-DaU-gNnK.js.map +0 -1
  223. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/toolbar-63PA619H.js.map +0 -1
  224. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/ui-library--bkcNSYz.js.map +0 -1
  225. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/window-jPkpKVcy.js.map +0 -1
  226. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/xray-BXCHpEJP.js.map +0 -1
  227. package/examples/complete-sites/dog-shelter-multi-page/site/config.mjs +0 -30
  228. package/examples/complete-sites/dog-shelter-multi-page/site/routes/010-dogs/images/dogs/rex.svg +0 -19
  229. package/examples/complete-sites/dog-shelter-multi-page/site/routes/010-dogs/images/dogs/rover.svg +0 -19
  230. package/examples/complete-sites/dog-shelter-single-page/site/config.mjs +0 -30
  231. package/examples/complete-sites/dog-shelter-single-page/site/images/what-we-do/dog-house.svg +0 -25
  232. package/examples/complete-sites/dog-shelter-single-page/site/images/you-can-help/heart.svg +0 -13
  233. package/examples/feature-demos/media-and-surfaces/site/config.mjs +0 -30
  234. package/examples/feature-demos/media-and-surfaces/site/routes/010-media/theme.md +0 -3
  235. package/examples/feature-demos/theme-presets/site/config.mjs +0 -30
  236. package/fixtures/basic/site/config.mjs +0 -27
  237. package/fixtures/content-model-v2/site/config.mjs +0 -11
  238. package/starters/basic/site/config.mjs +0 -27
  239. package/starters/project/site/config.mjs +0 -30
@@ -0,0 +1,455 @@
1
+ import { loadDevToolbarApps } from "astro:toolbar:internal";
2
+ //#region ../../../node_modules/astro/dist/runtime/client/dev-toolbar/helpers.js
3
+ var ToolbarAppEventTarget = class extends EventTarget {
4
+ constructor() {
5
+ super();
6
+ }
7
+ /**
8
+ * Toggle the notification state of the toolbar
9
+ * @param options - The notification options
10
+ * @param options.state - The state of the notification
11
+ * @param options.level - The level of the notification, optional when state is false
12
+ */
13
+ toggleNotification(options) {
14
+ this.dispatchEvent(new CustomEvent("toggle-notification", { detail: {
15
+ state: options.state,
16
+ level: options.state === true ? options.level : void 0
17
+ } }));
18
+ }
19
+ /**
20
+ * Toggle the app state on or off
21
+ * @param options - The app state options
22
+ * @param options.state - The new state of the app
23
+ */
24
+ toggleState(options) {
25
+ this.dispatchEvent(new CustomEvent("toggle-app", { detail: { state: options.state } }));
26
+ }
27
+ /**
28
+ * Fired when the app is toggled on or off
29
+ * @param callback - The callback to run when the event is fired, takes an object with the new state
30
+ */
31
+ onToggled(callback) {
32
+ this.addEventListener("app-toggled", (evt) => {
33
+ if (!(evt instanceof CustomEvent)) return;
34
+ callback(evt.detail);
35
+ });
36
+ }
37
+ /**
38
+ * Fired when the toolbar placement is updated by the user
39
+ * @param callback - The callback to run when the event is fired, takes an object with the new placement
40
+ */
41
+ onToolbarPlacementUpdated(callback) {
42
+ this.addEventListener("placement-updated", (evt) => {
43
+ if (!(evt instanceof CustomEvent)) return;
44
+ callback(evt.detail);
45
+ });
46
+ }
47
+ };
48
+ var serverHelpers = {
49
+ /**
50
+ * Send a message to the server, the payload can be any serializable data.
51
+ *
52
+ * The server can listen for this message in the `astro:server:config` hook of an Astro integration, using the `toolbar.on` method.
53
+ *
54
+ * @param event - The event name
55
+ * @param payload - The payload to send
56
+ */
57
+ send: (event, payload) => {
58
+ if (import.meta.hot) import.meta.hot.send(event, payload);
59
+ },
60
+ /**
61
+ * Receive a message from the server.
62
+ * @param event - The event name
63
+ * @param callback - The callback to run when the event is received.
64
+ * The payload's content will be passed to the callback as an argument
65
+ */
66
+ on: (event, callback) => {
67
+ if (import.meta.hot) import.meta.hot.on(event, callback);
68
+ }
69
+ };
70
+ //#endregion
71
+ //#region ../../../node_modules/astro/dist/runtime/client/dev-toolbar/ui-library/window.js
72
+ var placements = [
73
+ "bottom-left",
74
+ "bottom-center",
75
+ "bottom-right"
76
+ ];
77
+ function isValidPlacement(value) {
78
+ return placements.map(String).includes(value);
79
+ }
80
+ var DevToolbarWindow = class extends HTMLElement {
81
+ shadowRoot;
82
+ _placement = defaultSettings.placement;
83
+ get placement() {
84
+ return this._placement;
85
+ }
86
+ set placement(value) {
87
+ if (!isValidPlacement(value)) {
88
+ settings.logger.error(`Invalid placement: ${value}, expected one of ${placements.join(", ")}, got ${value}.`);
89
+ return;
90
+ }
91
+ this._placement = value;
92
+ this.updateStyle();
93
+ }
94
+ static observedAttributes = ["placement"];
95
+ constructor() {
96
+ super();
97
+ this.shadowRoot = this.attachShadow({ mode: "open" });
98
+ }
99
+ async connectedCallback() {
100
+ this.shadowRoot.innerHTML = `
101
+ <style>
102
+ :host {
103
+ box-sizing: border-box;
104
+ display: flex;
105
+ flex-direction: column;
106
+ background: linear-gradient(0deg, #13151A, #13151A), linear-gradient(0deg, #343841, #343841);
107
+ border: 1px solid rgba(52, 56, 65, 1);
108
+ width: min(640px, 100%);
109
+ max-height: 480px;
110
+ border-radius: 12px;
111
+ padding: 24px;
112
+ font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
113
+ color: rgba(191, 193, 201, 1);
114
+ position: fixed;
115
+ z-index: 999999999;
116
+ bottom: 72px;
117
+ box-shadow: 0px 0px 0px 0px rgba(19, 21, 26, 0.30), 0px 1px 2px 0px rgba(19, 21, 26, 0.29), 0px 4px 4px 0px rgba(19, 21, 26, 0.26), 0px 10px 6px 0px rgba(19, 21, 26, 0.15), 0px 17px 7px 0px rgba(19, 21, 26, 0.04), 0px 26px 7px 0px rgba(19, 21, 26, 0.01);
118
+ }
119
+
120
+ @media (forced-colors: active) {
121
+ :host {
122
+ background: white;
123
+ }
124
+ }
125
+
126
+ @media (max-width: 640px) {
127
+ :host {
128
+ border-radius: 0;
129
+ }
130
+ }
131
+
132
+ ::slotted(h1), ::slotted(h2), ::slotted(h3), ::slotted(h4), ::slotted(h5) {
133
+ font-weight: 600;
134
+ color: #fff;
135
+ }
136
+
137
+ ::slotted(h1) {
138
+ font-size: 22px;
139
+ }
140
+
141
+ ::slotted(h2) {
142
+ font-size: 20px;
143
+ }
144
+
145
+ ::slotted(h3) {
146
+ font-size: 18px;
147
+ }
148
+
149
+ ::slotted(h4) {
150
+ font-size: 16px;
151
+ }
152
+
153
+ ::slotted(h5) {
154
+ font-size: 14px;
155
+ }
156
+
157
+ hr, ::slotted(hr) {
158
+ border: 1px solid rgba(27, 30, 36, 1);
159
+ margin: 1em 0;
160
+ }
161
+
162
+ p, ::slotted(p) {
163
+ line-height: 1.5em;
164
+ }
165
+ </style>
166
+ <style id="selected-style"></style>
167
+
168
+ <slot />
169
+ `;
170
+ this.updateStyle();
171
+ }
172
+ attributeChangedCallback() {
173
+ if (this.hasAttribute("placement")) this.placement = this.getAttribute("placement");
174
+ }
175
+ updateStyle() {
176
+ const style = this.shadowRoot.querySelector("#selected-style");
177
+ if (style) style.innerHTML = {
178
+ "bottom-left": `
179
+ :host {
180
+ left: 16px;
181
+ }
182
+ `,
183
+ "bottom-center": `
184
+ :host {
185
+ left: 50%;
186
+ transform: translateX(-50%);
187
+ }
188
+ `,
189
+ "bottom-right": `
190
+ :host {
191
+ right: 16px;
192
+ }
193
+ `
194
+ }[this.placement];
195
+ }
196
+ };
197
+ //#endregion
198
+ //#region ../../../node_modules/astro/dist/runtime/client/dev-toolbar/settings.js
199
+ var defaultSettings = {
200
+ disableAppNotification: false,
201
+ verbose: false,
202
+ placement: "bottom-center"
203
+ };
204
+ var settings = getSettings();
205
+ function getSettings() {
206
+ let _settings = { ...defaultSettings };
207
+ const configPlacement = globalThis.__astro_dev_toolbar__?.placement;
208
+ if (configPlacement && isValidPlacement(configPlacement)) _settings.placement = configPlacement;
209
+ const toolbarSettings = localStorage.getItem("astro:dev-toolbar:settings");
210
+ if (toolbarSettings) _settings = {
211
+ ..._settings,
212
+ ...JSON.parse(toolbarSettings)
213
+ };
214
+ function updateSetting(key, value) {
215
+ _settings[key] = value;
216
+ localStorage.setItem("astro:dev-toolbar:settings", JSON.stringify(_settings));
217
+ }
218
+ function log(message, level = "log") {
219
+ console[level](`%cAstro`, "background: linear-gradient(66.77deg, #D83333 0%, #F041FF 100%); color: white; padding-inline: 4px; border-radius: 2px; font-family: monospace;", message);
220
+ }
221
+ return {
222
+ get config() {
223
+ return _settings;
224
+ },
225
+ updateSetting,
226
+ logger: {
227
+ log,
228
+ warn: (message) => {
229
+ log(message, "warn");
230
+ },
231
+ error: (message) => {
232
+ log(message, "error");
233
+ },
234
+ verboseLog: (message) => {
235
+ if (_settings.verbose) log(message);
236
+ }
237
+ }
238
+ };
239
+ }
240
+ //#endregion
241
+ //#region ../../../node_modules/astro/dist/runtime/client/dev-toolbar/entrypoint.js
242
+ var overlay;
243
+ document.addEventListener("DOMContentLoaded", async () => {
244
+ const [customAppsDefinitions, { default: astroDevToolApp }, { default: astroAuditApp }, { default: astroXrayApp }, { default: astroSettingsApp }, { AstroDevToolbar, DevToolbarCanvas, getAppIcon }, { DevToolbarCard, DevToolbarHighlight, DevToolbarTooltip, DevToolbarWindow, DevToolbarToggle, DevToolbarButton, DevToolbarBadge, DevToolbarIcon, DevToolbarSelect, DevToolbarRadioCheckbox }] = await Promise.all([
245
+ loadDevToolbarApps(),
246
+ import("./astro-B3JHJyiv.js"),
247
+ import("./audit-C3SVr7dT.js"),
248
+ import("./xray-DwhzGckb.js"),
249
+ import("./settings-v5GgKks_.js"),
250
+ import("./toolbar-BFvJVp26.js"),
251
+ import("./ui-library-Cd35oAvo.js")
252
+ ]);
253
+ customElements.define("astro-dev-toolbar", AstroDevToolbar);
254
+ customElements.define("astro-dev-toolbar-window", DevToolbarWindow);
255
+ customElements.define("astro-dev-toolbar-app-canvas", DevToolbarCanvas);
256
+ customElements.define("astro-dev-toolbar-tooltip", DevToolbarTooltip);
257
+ customElements.define("astro-dev-toolbar-highlight", DevToolbarHighlight);
258
+ customElements.define("astro-dev-toolbar-card", DevToolbarCard);
259
+ customElements.define("astro-dev-toolbar-toggle", DevToolbarToggle);
260
+ customElements.define("astro-dev-toolbar-button", DevToolbarButton);
261
+ customElements.define("astro-dev-toolbar-badge", DevToolbarBadge);
262
+ customElements.define("astro-dev-toolbar-icon", DevToolbarIcon);
263
+ customElements.define("astro-dev-toolbar-select", DevToolbarSelect);
264
+ customElements.define("astro-dev-toolbar-radio-checkbox", DevToolbarRadioCheckbox);
265
+ overlay = document.createElement("astro-dev-toolbar");
266
+ const notificationLevels = [
267
+ "error",
268
+ "warning",
269
+ "info"
270
+ ];
271
+ const notificationSVGs = {
272
+ error: "<svg viewBox=\"0 0 10 10\" style=\"--fill:var(--fill-default);--fill-default:#B33E66;--fill-hover:#E3AFC1;\"><rect width=\"9\" height=\"9\" x=\".5\" y=\".5\" fill=\"var(--fill)\" stroke=\"#13151A\" stroke-width=\"2\" rx=\"4.5\"/></svg>",
273
+ warning: "<svg width=\"12\" height=\"10\" fill=\"none\" style=\"--fill:var(--fill-default);--fill-default:#B58A2D;--fill-hover:#D5B776;\"><path fill=\"var(--fill)\" stroke=\"#13151A\" stroke-width=\"2\" d=\"M7.29904 1.25c-.57735-1-2.02073-1-2.59808 0l-3.4641 6C.65951 8.25 1.3812 9.5 2.5359 9.5h6.9282c1.1547 0 1.8764-1.25 1.299-2.25l-3.46406-6Z\"/></svg>",
274
+ info: "<svg viewBox=\"0 0 10 10\" style=\"--fill:var(--fill-default);--fill-default:#3645D9;--fill-hover:#BDC3FF;\"><rect width=\"9\" height=\"9\" x=\".5\" y=\".5\" fill=\"var(--fill)\" stroke=\"#13151A\" stroke-width=\"2\" rx=\"1.5\"/></svg>"
275
+ };
276
+ const prepareApp = (appDefinition, builtIn) => {
277
+ const eventTarget = new ToolbarAppEventTarget();
278
+ const app = {
279
+ ...appDefinition,
280
+ builtIn,
281
+ active: false,
282
+ status: "loading",
283
+ notification: {
284
+ state: false,
285
+ level: void 0
286
+ },
287
+ eventTarget
288
+ };
289
+ eventTarget.addEventListener("toggle-notification", (evt) => {
290
+ if (!(evt instanceof CustomEvent)) return;
291
+ const target = overlay.shadowRoot?.querySelector(`[data-app-id="${app.id}"]`);
292
+ if (!target) return;
293
+ const notificationElement = target.querySelector(".notification");
294
+ if (!notificationElement) return;
295
+ let newState = evt.detail.state ?? true;
296
+ let level = notificationLevels.includes(evt?.detail?.level) ? evt.detail.level : "error";
297
+ app.notification.state = newState;
298
+ if (newState) app.notification.level = level;
299
+ notificationElement.toggleAttribute("data-active", newState);
300
+ if (newState) {
301
+ notificationElement.setAttribute("data-level", level);
302
+ notificationElement.innerHTML = notificationSVGs[level];
303
+ }
304
+ });
305
+ const onToggleApp = async (evt) => {
306
+ let newState = void 0;
307
+ if (evt instanceof CustomEvent) newState = evt.detail.state ?? true;
308
+ await overlay.setAppStatus(app, newState);
309
+ };
310
+ eventTarget.addEventListener("toggle-app", onToggleApp);
311
+ return app;
312
+ };
313
+ const apps = [...[
314
+ astroDevToolApp,
315
+ astroXrayApp,
316
+ astroAuditApp,
317
+ astroSettingsApp,
318
+ {
319
+ id: "astro:more",
320
+ name: "More",
321
+ icon: "dots-three",
322
+ init(canvas, eventTarget) {
323
+ const hiddenApps = apps.filter((p) => !p.builtIn).slice(overlay.customAppsToShow);
324
+ createDropdown();
325
+ document.addEventListener("astro:after-swap", createDropdown);
326
+ function createDropdown() {
327
+ const style = document.createElement("style");
328
+ style.innerHTML = `
329
+ #dropdown {
330
+ background: rgba(19, 21, 26, 1);
331
+ border: 1px solid rgba(52, 56, 65, 1);
332
+ border-radius: 12px;
333
+ box-shadow: 0px 0px 0px 0px rgba(19, 21, 26, 0.30), 0px 1px 2px 0px rgba(19, 21, 26, 0.29), 0px 4px 4px 0px rgba(19, 21, 26, 0.26), 0px 10px 6px 0px rgba(19, 21, 26, 0.15), 0px 17px 7px 0px rgba(19, 21, 26, 0.04), 0px 26px 7px 0px rgba(19, 21, 26, 0.01);
334
+ width: 192px;
335
+ padding: 8px;
336
+ z-index: 2000000010;
337
+ transform: translate(-50%, 0%);
338
+ position: fixed;
339
+ bottom: 72px;
340
+ left: 50%;
341
+ }
342
+
343
+ .notification {
344
+ display: none;
345
+ position: absolute;
346
+ top: -4px;
347
+ right: -5px;
348
+ width: 12px;
349
+ height: 10px;
350
+ }
351
+
352
+ .notification svg {
353
+ display: block;
354
+ }
355
+
356
+ #dropdown:not([data-no-notification]) .notification[data-active] {
357
+ display: block;
358
+ }
359
+
360
+ #dropdown button {
361
+ border: 0;
362
+ background: transparent;
363
+ color: white;
364
+ font-family: system-ui, sans-serif;
365
+ font-size: 14px;
366
+ white-space: nowrap;
367
+ text-decoration: none;
368
+ margin: 0;
369
+ display: flex;
370
+ align-items: center;
371
+ width: 100%;
372
+ padding: 8px;
373
+ border-radius: 8px;
374
+ }
375
+
376
+ #dropdown button:hover, #dropdown button:focus-visible {
377
+ background: #FFFFFF20;
378
+ cursor: pointer;
379
+ }
380
+
381
+ #dropdown button.active {
382
+ background: rgba(71, 78, 94, 1);
383
+ }
384
+
385
+ #dropdown .icon {
386
+ position: relative;
387
+ height: 20px;
388
+ width: 20px;
389
+ padding: 1px;
390
+ margin-right: 0.5em;
391
+ }
392
+
393
+ #dropdown .icon svg {
394
+ max-height: 100%;
395
+ max-width: 100%;
396
+ }
397
+ `;
398
+ canvas.append(style);
399
+ const dropdown = document.createElement("div");
400
+ dropdown.id = "dropdown";
401
+ dropdown.toggleAttribute("data-no-notification", settings.config.disableAppNotification);
402
+ for (const app of hiddenApps) {
403
+ const buttonContainer = document.createElement("div");
404
+ buttonContainer.classList.add("item");
405
+ const button = document.createElement("button");
406
+ button.setAttribute("data-app-id", app.id);
407
+ const iconContainer = document.createElement("div");
408
+ const iconElement = document.createElement("template");
409
+ iconElement.innerHTML = app.icon ? getAppIcon(app.icon) : "?";
410
+ iconContainer.append(iconElement.content.cloneNode(true));
411
+ const notification = document.createElement("div");
412
+ notification.classList.add("notification");
413
+ iconContainer.append(notification);
414
+ iconContainer.classList.add("icon");
415
+ button.append(iconContainer);
416
+ button.append(document.createTextNode(app.name));
417
+ button.addEventListener("click", () => {
418
+ overlay.toggleAppStatus(app);
419
+ });
420
+ buttonContainer.append(button);
421
+ dropdown.append(buttonContainer);
422
+ app.eventTarget.addEventListener("toggle-notification", (evt) => {
423
+ if (!(evt instanceof CustomEvent)) return;
424
+ let newState = evt.detail.state ?? true;
425
+ let level = notificationLevels.includes(evt?.detail?.level) ? evt.detail.level : "error";
426
+ notification.toggleAttribute("data-active", newState);
427
+ if (newState) {
428
+ notification.setAttribute("data-level", level);
429
+ notification.innerHTML = notificationSVGs[level];
430
+ }
431
+ app.notification.state = newState;
432
+ if (newState) app.notification.level = level;
433
+ eventTarget.dispatchEvent(new CustomEvent("toggle-notification", { detail: {
434
+ state: hiddenApps.some((p) => p.notification.state === true),
435
+ level: [
436
+ "error",
437
+ "warning",
438
+ "info"
439
+ ].find((notificationLevel) => hiddenApps.some((p) => p.notification.state === true && p.notification.level === notificationLevel)) ?? "error"
440
+ } }));
441
+ });
442
+ }
443
+ canvas.append(dropdown);
444
+ }
445
+ }
446
+ }
447
+ ].map((appDef) => prepareApp(appDef, true)), ...customAppsDefinitions.map((appDef) => prepareApp(appDef, false))];
448
+ overlay.apps = apps;
449
+ document.body.append(overlay);
450
+ document.addEventListener("astro:after-swap", () => {
451
+ document.body.append(overlay);
452
+ });
453
+ });
454
+ //#endregion
455
+ export { serverHelpers as a, placements as i, DevToolbarWindow as n, isValidPlacement as r, settings as t };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"astro_runtime_client_dev-toolbar_entrypoint__js.js","names":[],"sources":["../../../../../../node_modules/astro/dist/runtime/client/dev-toolbar/helpers.js","../../../../../../node_modules/astro/dist/runtime/client/dev-toolbar/ui-library/window.js","../../../../../../node_modules/astro/dist/runtime/client/dev-toolbar/settings.js","../../../../../../node_modules/astro/dist/runtime/client/dev-toolbar/entrypoint.js"],"sourcesContent":["class ToolbarAppEventTarget extends EventTarget {\n constructor() {\n super();\n }\n /**\n * Toggle the notification state of the toolbar\n * @param options - The notification options\n * @param options.state - The state of the notification\n * @param options.level - The level of the notification, optional when state is false\n */\n toggleNotification(options) {\n this.dispatchEvent(\n new CustomEvent(\"toggle-notification\", {\n detail: {\n state: options.state,\n level: options.state === true ? options.level : void 0\n }\n })\n );\n }\n /**\n * Toggle the app state on or off\n * @param options - The app state options\n * @param options.state - The new state of the app\n */\n toggleState(options) {\n this.dispatchEvent(\n new CustomEvent(\"toggle-app\", {\n detail: {\n state: options.state\n }\n })\n );\n }\n /**\n * Fired when the app is toggled on or off\n * @param callback - The callback to run when the event is fired, takes an object with the new state\n */\n onToggled(callback) {\n this.addEventListener(\"app-toggled\", (evt) => {\n if (!(evt instanceof CustomEvent)) return;\n callback(evt.detail);\n });\n }\n /**\n * Fired when the toolbar placement is updated by the user\n * @param callback - The callback to run when the event is fired, takes an object with the new placement\n */\n onToolbarPlacementUpdated(callback) {\n this.addEventListener(\"placement-updated\", (evt) => {\n if (!(evt instanceof CustomEvent)) return;\n callback(evt.detail);\n });\n }\n}\nconst serverHelpers = {\n /**\n * Send a message to the server, the payload can be any serializable data.\n *\n * The server can listen for this message in the `astro:server:config` hook of an Astro integration, using the `toolbar.on` method.\n *\n * @param event - The event name\n * @param payload - The payload to send\n */\n send: (event, payload) => {\n if (import.meta.hot) {\n import.meta.hot.send(event, payload);\n }\n },\n /**\n * Receive a message from the server.\n * @param event - The event name\n * @param callback - The callback to run when the event is received.\n * The payload's content will be passed to the callback as an argument\n */\n on: (event, callback) => {\n if (import.meta.hot) {\n import.meta.hot.on(event, callback);\n }\n }\n};\nexport {\n ToolbarAppEventTarget,\n serverHelpers\n};\n","import { defaultSettings, settings } from \"../settings.js\";\nconst placements = [\"bottom-left\", \"bottom-center\", \"bottom-right\"];\nfunction isValidPlacement(value) {\n return placements.map(String).includes(value);\n}\nclass DevToolbarWindow extends HTMLElement {\n shadowRoot;\n _placement = defaultSettings.placement;\n get placement() {\n return this._placement;\n }\n set placement(value) {\n if (!isValidPlacement(value)) {\n settings.logger.error(\n `Invalid placement: ${value}, expected one of ${placements.join(\", \")}, got ${value}.`\n );\n return;\n }\n this._placement = value;\n this.updateStyle();\n }\n static observedAttributes = [\"placement\"];\n constructor() {\n super();\n this.shadowRoot = this.attachShadow({ mode: \"open\" });\n }\n async connectedCallback() {\n this.shadowRoot.innerHTML = `\n\t\t\t<style>\n\t\t\t\t:host {\n\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\tflex-direction: column;\n\t\t\t\t\tbackground: linear-gradient(0deg, #13151A, #13151A), linear-gradient(0deg, #343841, #343841);\n\t\t\t\t\tborder: 1px solid rgba(52, 56, 65, 1);\n\t\t\t\t\twidth: min(640px, 100%);\n\t\t\t\t\tmax-height: 480px;\n\t\t\t\t\tborder-radius: 12px;\n\t\t\t\t\tpadding: 24px;\n\t\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\t\tcolor: rgba(191, 193, 201, 1);\n\t\t\t\t\tposition: fixed;\n\t\t\t\t\tz-index: 999999999;\n\t\t\t\t\tbottom: 72px;\n\t\t\t\t\tbox-shadow: 0px 0px 0px 0px rgba(19, 21, 26, 0.30), 0px 1px 2px 0px rgba(19, 21, 26, 0.29), 0px 4px 4px 0px rgba(19, 21, 26, 0.26), 0px 10px 6px 0px rgba(19, 21, 26, 0.15), 0px 17px 7px 0px rgba(19, 21, 26, 0.04), 0px 26px 7px 0px rgba(19, 21, 26, 0.01);\n\t\t\t\t}\n\n\t\t\t\t@media (forced-colors: active) {\n\t\t\t\t\t:host {\n\t\t\t\t\t\tbackground: white;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t@media (max-width: 640px) {\n\t\t\t\t\t:host {\n\t\t\t\t\t\tborder-radius: 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t::slotted(h1), ::slotted(h2), ::slotted(h3), ::slotted(h4), ::slotted(h5) {\n\t\t\t\t\tfont-weight: 600;\n\t\t\t\t\tcolor: #fff;\n\t\t\t\t}\n\n\t\t\t\t::slotted(h1) {\n\t\t\t\t\tfont-size: 22px;\n\t\t\t\t}\n\n\t\t\t\t::slotted(h2) {\n\t\t\t\t\tfont-size: 20px;\n\t\t\t\t}\n\n\t\t\t\t::slotted(h3) {\n\t\t\t\t\tfont-size: 18px;\n\t\t\t\t}\n\n\t\t\t\t::slotted(h4) {\n\t\t\t\t\tfont-size: 16px;\n\t\t\t\t}\n\n\t\t\t\t::slotted(h5) {\n\t\t\t\t\tfont-size: 14px;\n\t\t\t\t}\n\n\t\t\t\thr, ::slotted(hr) {\n\t\t\t\t\tborder: 1px solid rgba(27, 30, 36, 1);\n\t\t\t\t\tmargin: 1em 0;\n\t\t\t\t}\n\n\t\t\t\tp, ::slotted(p) {\n\t\t\t\t\tline-height: 1.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<slot />\n\t\t`;\n this.updateStyle();\n }\n attributeChangedCallback() {\n if (this.hasAttribute(\"placement\"))\n this.placement = this.getAttribute(\"placement\");\n }\n updateStyle() {\n const style = this.shadowRoot.querySelector(\"#selected-style\");\n if (style) {\n const styleMap = {\n \"bottom-left\": `\n\t\t\t\t\t:host {\n\t\t\t\t\t\tleft: 16px;\n\t\t\t\t\t}\n\t\t\t\t`,\n \"bottom-center\": `\n\t\t\t\t\t:host {\n\t\t\t\t\t\tleft: 50%;\n\t\t\t\t\t\ttransform: translateX(-50%);\n\t\t\t\t\t}\n\t\t\t\t`,\n \"bottom-right\": `\n\t\t\t\t\t:host {\n\t\t\t\t\t\tright: 16px;\n\t\t\t\t\t}\n\t\t\t\t`\n };\n style.innerHTML = styleMap[this.placement];\n }\n }\n}\nexport {\n DevToolbarWindow,\n isValidPlacement,\n placements\n};\n","import { isValidPlacement } from \"./ui-library/window.js\";\nconst defaultSettings = {\n disableAppNotification: false,\n verbose: false,\n placement: \"bottom-center\"\n};\nconst settings = getSettings();\nfunction getSettings() {\n let _settings = { ...defaultSettings };\n const configPlacement = globalThis.__astro_dev_toolbar__?.placement;\n if (configPlacement && isValidPlacement(configPlacement)) {\n _settings.placement = configPlacement;\n }\n const toolbarSettings = localStorage.getItem(\"astro:dev-toolbar:settings\");\n if (toolbarSettings) {\n _settings = { ..._settings, ...JSON.parse(toolbarSettings) };\n }\n function updateSetting(key, value) {\n _settings[key] = value;\n localStorage.setItem(\"astro:dev-toolbar:settings\", JSON.stringify(_settings));\n }\n function log(message, level = \"log\") {\n console[level](\n `%cAstro`,\n \"background: linear-gradient(66.77deg, #D83333 0%, #F041FF 100%); color: white; padding-inline: 4px; border-radius: 2px; font-family: monospace;\",\n message\n );\n }\n return {\n get config() {\n return _settings;\n },\n updateSetting,\n logger: {\n log,\n warn: (message) => {\n log(message, \"warn\");\n },\n error: (message) => {\n log(message, \"error\");\n },\n verboseLog: (message) => {\n if (_settings.verbose) {\n log(message);\n }\n }\n }\n };\n}\nexport {\n defaultSettings,\n settings\n};\n","import { loadDevToolbarApps } from \"astro:toolbar:internal\";\nimport { ToolbarAppEventTarget } from \"./helpers.js\";\nimport { settings } from \"./settings.js\";\nlet overlay;\ndocument.addEventListener(\"DOMContentLoaded\", async () => {\n const [\n customAppsDefinitions,\n { default: astroDevToolApp },\n { default: astroAuditApp },\n { default: astroXrayApp },\n { default: astroSettingsApp },\n { AstroDevToolbar, DevToolbarCanvas, getAppIcon },\n {\n DevToolbarCard,\n DevToolbarHighlight,\n DevToolbarTooltip,\n DevToolbarWindow,\n DevToolbarToggle,\n DevToolbarButton,\n DevToolbarBadge,\n DevToolbarIcon,\n DevToolbarSelect,\n DevToolbarRadioCheckbox\n }\n ] = await Promise.all([\n loadDevToolbarApps(),\n import(\"./apps/astro.js\"),\n import(\"./apps/audit/index.js\"),\n import(\"./apps/xray.js\"),\n import(\"./apps/settings.js\"),\n import(\"./toolbar.js\"),\n import(\"./ui-library/index.js\")\n ]);\n customElements.define(\"astro-dev-toolbar\", AstroDevToolbar);\n customElements.define(\"astro-dev-toolbar-window\", DevToolbarWindow);\n customElements.define(\"astro-dev-toolbar-app-canvas\", DevToolbarCanvas);\n customElements.define(\"astro-dev-toolbar-tooltip\", DevToolbarTooltip);\n customElements.define(\"astro-dev-toolbar-highlight\", DevToolbarHighlight);\n customElements.define(\"astro-dev-toolbar-card\", DevToolbarCard);\n customElements.define(\"astro-dev-toolbar-toggle\", DevToolbarToggle);\n customElements.define(\"astro-dev-toolbar-button\", DevToolbarButton);\n customElements.define(\"astro-dev-toolbar-badge\", DevToolbarBadge);\n customElements.define(\"astro-dev-toolbar-icon\", DevToolbarIcon);\n customElements.define(\"astro-dev-toolbar-select\", DevToolbarSelect);\n customElements.define(\"astro-dev-toolbar-radio-checkbox\", DevToolbarRadioCheckbox);\n overlay = document.createElement(\"astro-dev-toolbar\");\n const notificationLevels = [\"error\", \"warning\", \"info\"];\n const notificationSVGs = {\n error: '<svg viewBox=\"0 0 10 10\" style=\"--fill:var(--fill-default);--fill-default:#B33E66;--fill-hover:#E3AFC1;\"><rect width=\"9\" height=\"9\" x=\".5\" y=\".5\" fill=\"var(--fill)\" stroke=\"#13151A\" stroke-width=\"2\" rx=\"4.5\"/></svg>',\n warning: '<svg width=\"12\" height=\"10\" fill=\"none\" style=\"--fill:var(--fill-default);--fill-default:#B58A2D;--fill-hover:#D5B776;\"><path fill=\"var(--fill)\" stroke=\"#13151A\" stroke-width=\"2\" d=\"M7.29904 1.25c-.57735-1-2.02073-1-2.59808 0l-3.4641 6C.65951 8.25 1.3812 9.5 2.5359 9.5h6.9282c1.1547 0 1.8764-1.25 1.299-2.25l-3.46406-6Z\"/></svg>',\n info: '<svg viewBox=\"0 0 10 10\" style=\"--fill:var(--fill-default);--fill-default:#3645D9;--fill-hover:#BDC3FF;\"><rect width=\"9\" height=\"9\" x=\".5\" y=\".5\" fill=\"var(--fill)\" stroke=\"#13151A\" stroke-width=\"2\" rx=\"1.5\"/></svg>'\n };\n const prepareApp = (appDefinition, builtIn) => {\n const eventTarget = new ToolbarAppEventTarget();\n const app = {\n ...appDefinition,\n builtIn,\n active: false,\n status: \"loading\",\n notification: { state: false, level: void 0 },\n eventTarget\n };\n eventTarget.addEventListener(\"toggle-notification\", (evt) => {\n if (!(evt instanceof CustomEvent)) return;\n const target = overlay.shadowRoot?.querySelector(`[data-app-id=\"${app.id}\"]`);\n if (!target) return;\n const notificationElement = target.querySelector(\".notification\");\n if (!notificationElement) return;\n let newState = evt.detail.state ?? true;\n let level = notificationLevels.includes(evt?.detail?.level) ? evt.detail.level : \"error\";\n app.notification.state = newState;\n if (newState) app.notification.level = level;\n notificationElement.toggleAttribute(\"data-active\", newState);\n if (newState) {\n notificationElement.setAttribute(\"data-level\", level);\n notificationElement.innerHTML = notificationSVGs[level];\n }\n });\n const onToggleApp = async (evt) => {\n let newState = void 0;\n if (evt instanceof CustomEvent) {\n newState = evt.detail.state ?? true;\n }\n await overlay.setAppStatus(app, newState);\n };\n eventTarget.addEventListener(\"toggle-app\", onToggleApp);\n return app;\n };\n const astroMoreApp = {\n id: \"astro:more\",\n name: \"More\",\n icon: \"dots-three\",\n init(canvas, eventTarget) {\n const hiddenApps = apps.filter((p) => !p.builtIn).slice(overlay.customAppsToShow);\n createDropdown();\n document.addEventListener(\"astro:after-swap\", createDropdown);\n function createDropdown() {\n const style = document.createElement(\"style\");\n style.innerHTML = `\n\t\t\t\t\t#dropdown {\n\t\t\t\t\t\tbackground: rgba(19, 21, 26, 1);\n\t\t\t\t\t\tborder: 1px solid rgba(52, 56, 65, 1);\n\t\t\t\t\t\tborder-radius: 12px;\n\t\t\t\t\t\tbox-shadow: 0px 0px 0px 0px rgba(19, 21, 26, 0.30), 0px 1px 2px 0px rgba(19, 21, 26, 0.29), 0px 4px 4px 0px rgba(19, 21, 26, 0.26), 0px 10px 6px 0px rgba(19, 21, 26, 0.15), 0px 17px 7px 0px rgba(19, 21, 26, 0.04), 0px 26px 7px 0px rgba(19, 21, 26, 0.01);\n\t\t\t\t\t\twidth: 192px;\n\t\t\t\t\t\tpadding: 8px;\n\t\t\t\t\t\tz-index: 2000000010;\n\t\t\t\t\t\ttransform: translate(-50%, 0%);\n\t\t\t\t\t\tposition: fixed;\n\t\t\t\t\t\tbottom: 72px;\n\t\t\t\t\t\tleft: 50%;\n\t\t\t\t\t}\n\n\t\t\t\t\t.notification {\n\t\t\t\t\t\tdisplay: none;\n\t\t\t\t\t\tposition: absolute;\n\t\t\t\t\t\ttop: -4px;\n\t\t\t\t\t\tright: -5px;\n\t\t\t\t\t\twidth: 12px;\n\t\t\t\t\t\theight: 10px;\n\t\t\t\t\t}\n\n\t\t\t\t\t.notification svg {\n\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t}\n\n\t\t\t\t\t#dropdown:not([data-no-notification]) .notification[data-active] {\n\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t}\n\n\t\t\t\t\t#dropdown button {\n\t\t\t\t\t\tborder: 0;\n\t\t\t\t\t\tbackground: transparent;\n\t\t\t\t\t\tcolor: white;\n\t\t\t\t\t\tfont-family: system-ui, sans-serif;\n\t\t\t\t\t\tfont-size: 14px;\n\t\t\t\t\t\twhite-space: nowrap;\n\t\t\t\t\t\ttext-decoration: none;\n\t\t\t\t\t\tmargin: 0;\n\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\talign-items: center;\n\t\t\t\t\t\twidth: 100%;\n\t\t\t\t\t\tpadding: 8px;\n\t\t\t\t\t\tborder-radius: 8px;\n\t\t\t\t\t}\n\n\t\t\t\t\t#dropdown button:hover, #dropdown button:focus-visible {\n\t\t\t\t\t\tbackground: #FFFFFF20;\n\t\t\t\t\t\tcursor: pointer;\n\t\t\t\t\t}\n\n\t\t\t\t\t#dropdown button.active {\n\t\t\t\t\t\tbackground: rgba(71, 78, 94, 1);\n\t\t\t\t\t}\n\n\t\t\t\t\t#dropdown .icon {\n\t\t\t\t\t\tposition: relative;\n\t\t\t\t\t\theight: 20px;\n\t\t\t\t\t\twidth: 20px;\n\t\t\t\t\t\tpadding: 1px;\n\t\t\t\t\t\tmargin-right: 0.5em;\n\t\t\t\t\t}\n\n\t\t\t\t\t#dropdown .icon svg {\n\t\t\t\t\t\tmax-height: 100%;\n\t\t\t\t\t\tmax-width: 100%;\n\t\t\t\t\t}\n\t\t\t\t`;\n canvas.append(style);\n const dropdown = document.createElement(\"div\");\n dropdown.id = \"dropdown\";\n dropdown.toggleAttribute(\"data-no-notification\", settings.config.disableAppNotification);\n for (const app of hiddenApps) {\n const buttonContainer = document.createElement(\"div\");\n buttonContainer.classList.add(\"item\");\n const button = document.createElement(\"button\");\n button.setAttribute(\"data-app-id\", app.id);\n const iconContainer = document.createElement(\"div\");\n const iconElement = document.createElement(\"template\");\n iconElement.innerHTML = app.icon ? getAppIcon(app.icon) : \"?\";\n iconContainer.append(iconElement.content.cloneNode(true));\n const notification = document.createElement(\"div\");\n notification.classList.add(\"notification\");\n iconContainer.append(notification);\n iconContainer.classList.add(\"icon\");\n button.append(iconContainer);\n button.append(document.createTextNode(app.name));\n button.addEventListener(\"click\", () => {\n overlay.toggleAppStatus(app);\n });\n buttonContainer.append(button);\n dropdown.append(buttonContainer);\n app.eventTarget.addEventListener(\"toggle-notification\", (evt) => {\n if (!(evt instanceof CustomEvent)) return;\n let newState = evt.detail.state ?? true;\n let level = notificationLevels.includes(evt?.detail?.level) ? evt.detail.level : \"error\";\n notification.toggleAttribute(\"data-active\", newState);\n if (newState) {\n notification.setAttribute(\"data-level\", level);\n notification.innerHTML = notificationSVGs[level];\n }\n app.notification.state = newState;\n if (newState) app.notification.level = level;\n eventTarget.dispatchEvent(\n new CustomEvent(\"toggle-notification\", {\n detail: {\n state: hiddenApps.some((p) => p.notification.state === true),\n level: [\"error\", \"warning\", \"info\"].find(\n (notificationLevel) => hiddenApps.some(\n (p) => p.notification.state === true && p.notification.level === notificationLevel\n )\n ) ?? \"error\"\n }\n })\n );\n });\n }\n canvas.append(dropdown);\n }\n }\n };\n const apps = [\n ...[astroDevToolApp, astroXrayApp, astroAuditApp, astroSettingsApp, astroMoreApp].map(\n (appDef) => prepareApp(appDef, true)\n ),\n ...customAppsDefinitions.map((appDef) => prepareApp(appDef, false))\n ];\n overlay.apps = apps;\n document.body.append(overlay);\n document.addEventListener(\"astro:after-swap\", () => {\n document.body.append(overlay);\n });\n});\n"],"x_google_ignoreList":[0,1,2,3],"mappings":"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"}