@leed-ai/cli 0.0.0 → 6.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (263) hide show
  1. package/LICENSE.md +57 -0
  2. package/README.md +120 -3
  3. package/dist/LICENSE.md +57 -0
  4. package/dist/acorn-DAgDT1om.js +5087 -0
  5. package/dist/angular-l0_4PK8N.js +3598 -0
  6. package/dist/authShared-Dray38Ls.js +1161 -0
  7. package/dist/babel-CJeRQd5u.js +10038 -0
  8. package/dist/buildResults-tiq1nugP.js +21180 -0
  9. package/dist/chunk-1VJ9lAw7.js +42 -0
  10. package/dist/cliAuth-38JjD6hw.js +15 -0
  11. package/dist/env-B0bHiXJJ.js +29 -0
  12. package/dist/errors-CqKamGCu.js +481 -0
  13. package/dist/estree-E8WG8UHj.js +6930 -0
  14. package/dist/flow-6xaRIbPQ.js +52255 -0
  15. package/dist/glimmer-aJPjsfbT.js +7272 -0
  16. package/dist/graphql-mcgtPEiZ.js +1901 -0
  17. package/dist/html--eeea3Kl.js +6553 -0
  18. package/dist/leed.eleventy.mjs +6525 -0
  19. package/dist/leed.mjs +88952 -0
  20. package/dist/leed.sources.json +798 -0
  21. package/dist/leedLogger-Zkada5aO.js +78 -0
  22. package/dist/markdown-D73jNKwx.js +6836 -0
  23. package/dist/meriyah-CMp1nDDW.js +8932 -0
  24. package/dist/package.json +101 -0
  25. package/dist/postcss-h4fBr2Fn.js +6760 -0
  26. package/dist/prettier-CwFSKxfN.js +16821 -0
  27. package/dist/static/customer-site-worker/package.json +9 -0
  28. package/dist/static/customer-site-worker/src/assetsHydration.ts +55 -0
  29. package/dist/static/customer-site-worker/src/constants.ts +20 -0
  30. package/dist/static/customer-site-worker/src/cors.ts +120 -0
  31. package/dist/static/customer-site-worker/src/index.ts +242 -0
  32. package/dist/static/customer-site-worker/src/mcp-proxy.ts +98 -0
  33. package/dist/static/customer-site-worker/src/proxy.ts +92 -0
  34. package/dist/static/customer-site-worker/src/proxyHeaders.ts +47 -0
  35. package/dist/static/customer-site-worker/src/tier.ts +40 -0
  36. package/dist/static/customer-site-worker/src/types.ts +82 -0
  37. package/dist/static/customer-site-worker/test/functions-mock.worker.js +50 -0
  38. package/dist/static/customer-site-worker/tsconfig.json +19 -0
  39. package/dist/static/customer-site-worker/vitest.workers.config.ts +61 -0
  40. package/dist/static/install/husky/colors.mjs +5 -0
  41. package/dist/static/install/husky/hooks/commit-msg +1 -0
  42. package/dist/static/install/husky/hooks/pre-commit +1 -0
  43. package/dist/static/install/husky/hooks/pre-push +1 -0
  44. package/dist/static/install/husky/valid-command.mjs +29 -0
  45. package/dist/static/install/husky/valid-commit-msg.mjs +20 -0
  46. package/dist/static/install/package.json +10 -0
  47. package/dist/static/install/packages.txt +4 -0
  48. package/dist/static/install/tasks.json +111 -0
  49. package/dist/static/javascript/detectIncognito.js +195 -0
  50. package/dist/static/javascript/documentation.js +2781 -0
  51. package/dist/static/javascript/fp/fp.esm.js +2896 -0
  52. package/dist/static/javascript/fp/fp.js +3067 -0
  53. package/dist/static/javascript/live-search.js +986 -0
  54. package/dist/static/javascript/lunr-search.js +843 -0
  55. package/dist/static/javascript/timeme.js +451 -0
  56. package/dist/static/javascript/tracker/webmcp.js +67 -0
  57. package/dist/static/javascript/tracker/whisper.js +1 -0
  58. package/dist/static/javascript/utilities.js +819 -0
  59. package/dist/static/javascript/versions.json +74 -0
  60. package/dist/static/javascript/zoomable.js +488 -0
  61. package/dist/static/site/_data/eleventyComputed.js +228 -0
  62. package/dist/static/site/_data/leed-form-data.json +253 -0
  63. package/dist/static/site/_includes/leed/api/bits/array-type.hbs +24 -0
  64. package/dist/static/site/_includes/leed/api/bits/badges.hbs +9 -0
  65. package/dist/static/site/_includes/leed/api/bits/description.hbs +9 -0
  66. package/dist/static/site/_includes/leed/api/bits/examples.hbs +42 -0
  67. package/dist/static/site/_includes/leed/api/bits/scopes.hbs +28 -0
  68. package/dist/static/site/_includes/leed/api/object.hbs +110 -0
  69. package/dist/static/site/_includes/leed/api/parameters.hbs +11 -0
  70. package/dist/static/site/_includes/leed/api/property.hbs +153 -0
  71. package/dist/static/site/_includes/leed/api/request-body.hbs +51 -0
  72. package/dist/static/site/_includes/leed/api/responses.hbs +89 -0
  73. package/dist/static/site/_includes/leed/api/security-constraints.hbs +59 -0
  74. package/dist/static/site/_includes/leed/api/security.hbs +75 -0
  75. package/dist/static/site/_includes/leed/components/pagination.hbs +45 -0
  76. package/dist/static/site/_includes/leed/components/scroll-status-indicator-horizontal.hbs +22 -0
  77. package/dist/static/site/_includes/leed/docs/alpha/api.hbs +6 -0
  78. package/dist/static/site/_includes/leed/docs/alpha/base.hbs +26 -0
  79. package/dist/static/site/_includes/leed/docs/alpha/documentation.hbs +7 -0
  80. package/dist/static/site/_includes/leed/docs/api-article.hbs +75 -0
  81. package/dist/static/site/_includes/leed/docs/bravo/api.hbs +5 -0
  82. package/dist/static/site/_includes/leed/docs/bravo/base.hbs +31 -0
  83. package/dist/static/site/_includes/leed/docs/bravo/documentation.hbs +7 -0
  84. package/dist/static/site/_includes/leed/docs/charlie/api.hbs +6 -0
  85. package/dist/static/site/_includes/leed/docs/charlie/base.hbs +27 -0
  86. package/dist/static/site/_includes/leed/docs/charlie/documentation.hbs +10 -0
  87. package/dist/static/site/_includes/leed/docs/doc-article.hbs +40 -0
  88. package/dist/static/site/_includes/leed/docs/docs-footer.hbs +35 -0
  89. package/dist/static/site/_includes/leed/docs/docs-header.hbs +59 -0
  90. package/dist/static/site/_includes/leed/docs/document-search-modal.hbs +36 -0
  91. package/dist/static/site/_includes/leed/docs/document-search.hbs +23 -0
  92. package/dist/static/site/_includes/leed/docs/footer.hbs +12 -0
  93. package/dist/static/site/_includes/leed/docs/header/brand.hbs +19 -0
  94. package/dist/static/site/_includes/leed/docs/header/chrome.hbs +33 -0
  95. package/dist/static/site/_includes/leed/docs/header/compact.hbs +19 -0
  96. package/dist/static/site/_includes/leed/docs/header/cta.hbs +15 -0
  97. package/dist/static/site/_includes/leed/docs/header/nav.hbs +18 -0
  98. package/dist/static/site/_includes/leed/docs/header/top-search.hbs +15 -0
  99. package/dist/static/site/_includes/leed/docs/mini-bar.hbs +53 -0
  100. package/dist/static/site/_includes/leed/docs/pagination.hbs +19 -0
  101. package/dist/static/site/_includes/leed/docs/shell.hbs +56 -0
  102. package/dist/static/site/_includes/leed/docs/sidebar.hbs +52 -0
  103. package/dist/static/site/_includes/leed/docs/social-icons.hbs +81 -0
  104. package/dist/static/site/_includes/leed/docs/style.hbs +17 -0
  105. package/dist/static/site/_includes/leed/docs/toc.hbs +7 -0
  106. package/dist/static/site/_includes/leed/form.hbs +266 -0
  107. package/dist/static/site/_includes/leed/head.hbs +67 -0
  108. package/dist/static/site/_includes/leed/menu/builder.hbs +35 -0
  109. package/dist/static/site/_includes/leed/menu/item.hbs +67 -0
  110. package/dist/static/site/_includes/leed/menu/link.hbs +59 -0
  111. package/dist/static/site/_includes/leed/metadata/ogCard.hbs +40 -0
  112. package/dist/static/site/_includes/leed/metadata/siteMetadata.hbs +24 -0
  113. package/dist/static/site/_includes/leed/metadata/twitterCard.hbs +34 -0
  114. package/dist/static/site/_includes/leed/popup-video.hbs +21 -0
  115. package/dist/static/site/_includes/leed/stub-template.hbs +17 -0
  116. package/dist/static/site/_includes/leed/unsubscribe-form.hbs +30 -0
  117. package/dist/static/site/_layouts/leed-documentation.hbs +12 -0
  118. package/dist/static/site/leed-feed-atom.hbs +42 -0
  119. package/dist/static/site/leed-feed-json.hbs +56 -0
  120. package/dist/static/site/leed-feed-rss.hbs +39 -0
  121. package/dist/static/site/leed-headers.hbs +38 -0
  122. package/dist/static/site/leed-redirects.hbs +10 -0
  123. package/dist/static/site/leed-sitemap-pageType.hbs +28 -0
  124. package/dist/static/site/leed-sitemap.hbs +19 -0
  125. package/dist/static/site/leed-unsubscribe.hbs +44 -0
  126. package/dist/static/site/leed-unsubscribed.hbs +40 -0
  127. package/dist/static/tailwind/components/alerts.css +132 -0
  128. package/dist/static/tailwind/components/api-methods.css +39 -0
  129. package/dist/static/tailwind/components/breadcrumbs.css +31 -0
  130. package/dist/static/tailwind/components/code.css +88 -0
  131. package/dist/static/tailwind/components/collapsible.css +38 -0
  132. package/dist/static/tailwind/components/document-search.css +222 -0
  133. package/dist/static/tailwind/components/form.css +185 -0
  134. package/dist/static/tailwind/components/kbd.css +7 -0
  135. package/dist/static/tailwind/components/pagination.css +81 -0
  136. package/dist/static/tailwind/components/scroll-status-indicator.css +5 -0
  137. package/dist/static/tailwind/components/tab-groups.css +117 -0
  138. package/dist/static/tailwind/components/tables.css +0 -0
  139. package/dist/static/tailwind/components/toc.css +60 -0
  140. package/dist/static/tailwind/components.css +248 -0
  141. package/dist/static/tailwind/defaults.css +260 -0
  142. package/dist/static/tailwind/docs/api.css +701 -0
  143. package/dist/static/tailwind/docs/components/blockquote.css +5 -0
  144. package/dist/static/tailwind/docs/components/button.css +11 -0
  145. package/dist/static/tailwind/docs/components/docs-pagination.css +71 -0
  146. package/dist/static/tailwind/docs/components/mobile-bar.css +83 -0
  147. package/dist/static/tailwind/docs/components/navigation.css +279 -0
  148. package/dist/static/tailwind/docs/components/table.css +54 -0
  149. package/dist/static/tailwind/docs/components.css +6 -0
  150. package/dist/static/tailwind/docs/docs.css +427 -0
  151. package/dist/static/tailwind/docs/layouts/alpha.css +108 -0
  152. package/dist/static/tailwind/docs/layouts/bravo.css +218 -0
  153. package/dist/static/tailwind/docs/layouts/charlie.css +105 -0
  154. package/dist/static/tailwind/docs/layouts.css +3 -0
  155. package/dist/static/tailwind/docs/themes/amber.css +113 -0
  156. package/dist/static/tailwind/docs/themes/blue.css +94 -0
  157. package/dist/static/tailwind/docs/themes/cyan.css +111 -0
  158. package/dist/static/tailwind/docs/themes/emerald.css +111 -0
  159. package/dist/static/tailwind/docs/themes/fuchsia.css +111 -0
  160. package/dist/static/tailwind/docs/themes/green.css +95 -0
  161. package/dist/static/tailwind/docs/themes/indigo.css +111 -0
  162. package/dist/static/tailwind/docs/themes/lime.css +111 -0
  163. package/dist/static/tailwind/docs/themes/orange.css +111 -0
  164. package/dist/static/tailwind/docs/themes/pink.css +111 -0
  165. package/dist/static/tailwind/docs/themes/purple.css +111 -0
  166. package/dist/static/tailwind/docs/themes/red.css +111 -0
  167. package/dist/static/tailwind/docs/themes/rose.css +111 -0
  168. package/dist/static/tailwind/docs/themes/sky.css +111 -0
  169. package/dist/static/tailwind/docs/themes/teal.css +111 -0
  170. package/dist/static/tailwind/docs/themes/violet.css +111 -0
  171. package/dist/static/tailwind/docs/themes/yellow.css +111 -0
  172. package/dist/static/tailwind/docs/themes.css +84 -0
  173. package/dist/static/tailwind/font-awesome/free-7.3.1/brands.css +2455 -0
  174. package/dist/static/tailwind/font-awesome/free-7.3.1/fontawesome.css +8997 -0
  175. package/dist/static/tailwind/font-awesome/free-7.3.1/fonts.css +45 -0
  176. package/dist/static/tailwind/font-awesome/free-7.3.1/icons.json +2608 -0
  177. package/dist/static/tailwind/font-awesome/free-7.3.1.css +3 -0
  178. package/dist/static/tailwind/font-awesome/pro-7.0.0/brands.css +2215 -0
  179. package/dist/static/tailwind/font-awesome/pro-7.0.0/fontawesome.css +19281 -0
  180. package/dist/static/tailwind/font-awesome/pro-7.0.0/fonts.css +445 -0
  181. package/dist/static/tailwind/font-awesome/pro-7.0.0.css +3 -0
  182. package/dist/static/tailwind/font-awesome/pro-7.3.1/brands.css +2455 -0
  183. package/dist/static/tailwind/font-awesome/pro-7.3.1/fontawesome.css +20365 -0
  184. package/dist/static/tailwind/font-awesome/pro-7.3.1/fonts.css +589 -0
  185. package/dist/static/tailwind/font-awesome/pro-7.3.1.css +3 -0
  186. package/dist/static/tailwind/fonts/all.css +6 -0
  187. package/dist/static/tailwind/fonts/config.jsonc +31 -0
  188. package/dist/static/tailwind/fonts/geist-mono.css +142 -0
  189. package/dist/static/tailwind/fonts/geist.css +142 -0
  190. package/dist/static/tailwind/fonts/inter.css +215 -0
  191. package/dist/static/tailwind/fonts/jetbrains-mono.css +126 -0
  192. package/dist/static/tailwind/fonts/noto-sans.css +134 -0
  193. package/dist/static/tailwind/fonts/open-sans.css +89 -0
  194. package/dist/static/tailwind/highlighters.css +14 -0
  195. package/dist/static/tailwind/hljs/README.md +53 -0
  196. package/dist/static/tailwind/hljs/a11y.css +96 -0
  197. package/dist/static/tailwind/hljs/atom-fruit.css +90 -0
  198. package/dist/static/tailwind/hljs/atom-one.css +164 -0
  199. package/dist/static/tailwind/hljs/default.css +164 -0
  200. package/dist/static/tailwind/hljs/github.css +101 -0
  201. package/dist/static/tailwind/hljs/google-code.css +112 -0
  202. package/dist/static/tailwind/hljs/grayscale.css +115 -0
  203. package/dist/static/tailwind/hljs/gruvbox-hard.css +115 -0
  204. package/dist/static/tailwind/hljs/gruvbox-medium.css +115 -0
  205. package/dist/static/tailwind/hljs/gruvbox-soft.css +115 -0
  206. package/dist/static/tailwind/hljs/papercolor.css +120 -0
  207. package/dist/static/tailwind/hljs/qt-creator.css +91 -0
  208. package/dist/static/tailwind/hljs/summerfruit.css +115 -0
  209. package/dist/static/tailwind/hljs/tomorrow.css +115 -0
  210. package/dist/static/tailwind/leed.css +170 -0
  211. package/dist/static/tailwind/site-tokens.reference.css +105 -0
  212. package/dist/static/tailwind/utils/icons.css +102 -0
  213. package/dist/static/tailwind/utils/utilities.css +105 -0
  214. package/dist/static/templates/pages/PAGE.hbs +27 -0
  215. package/dist/static/templates/pages/PAGE_LAYOUT.hbs +19 -0
  216. package/dist/static/templates/pages/PAGE_TYPE_INDEX.hbs +89 -0
  217. package/dist/static/templates/pages/PAGINATED_PAGE_TYPE_ITEM.hbs +52 -0
  218. package/dist/static/templates/pages/PAGINATED_PAGE_TYPE_LIST.hbs +39 -0
  219. package/dist/static/templates/pages/PAGINATED_PAGE_TYPE_PAGINATION.hbs +11 -0
  220. package/dist/static/templates/raw-content/.ci/build.sh +58 -0
  221. package/dist/static/templates/raw-content/README.md +179 -0
  222. package/dist/static/templates/raw-content/_gitignore +50 -0
  223. package/dist/static/templates/raw-content/src/404.hbs +21 -0
  224. package/dist/static/templates/raw-content/src/_data/autolink.json +1 -0
  225. package/dist/static/templates/raw-content/src/_data/ctaList.json +1 -0
  226. package/dist/static/templates/raw-content/src/_data/leedForms.json +1 -0
  227. package/dist/static/templates/raw-content/src/_data/menu.json +1 -0
  228. package/dist/static/templates/raw-content/src/_includes/footer.hbs +18 -0
  229. package/dist/static/templates/raw-content/src/_includes/header-includes.hbs +25 -0
  230. package/dist/static/templates/raw-content/src/_includes/header.hbs +5 -0
  231. package/dist/static/templates/raw-content/src/_includes/site-template.hbs +23 -0
  232. package/dist/static/templates/raw-content/src/_includes/unsubscribe-DISABLED.hbs +17 -0
  233. package/dist/static/templates/raw-content/src/_includes/unsubscribed-DISABLED.hbs +13 -0
  234. package/dist/static/templates/raw-content/src/_layouts/empty.hbs +2 -0
  235. package/dist/static/templates/raw-content/src/index.hbs +21 -0
  236. package/dist/static/templates/raw-content/src/robots.hbs +9 -0
  237. package/dist/static/templates/raw-content/tailwind/site/base.css +44 -0
  238. package/dist/static/templates/raw-content/tailwind/site.config.css +3 -0
  239. package/dist/static/templates/sandbox/_gitignore +50 -0
  240. package/dist/static/templates/sandbox/identity.json +1 -0
  241. package/dist/static/templates/sandbox/src/404.hbs +21 -0
  242. package/dist/static/templates/sandbox/src/_data/autolink.json +1 -0
  243. package/dist/static/templates/sandbox/src/_data/ctaList.json +1 -0
  244. package/dist/static/templates/sandbox/src/_data/labelList.json +9 -0
  245. package/dist/static/templates/sandbox/src/_data/leedForms.json +20 -0
  246. package/dist/static/templates/sandbox/src/_data/menu.json +19 -0
  247. package/dist/static/templates/sandbox/src/_data/pageTypeList.json +14 -0
  248. package/dist/static/templates/sandbox/src/_data/searchIndexList.json +1 -0
  249. package/dist/static/templates/sandbox/src/_data/userList.json +11 -0
  250. package/dist/static/templates/sandbox/src/_includes/footer.hbs +18 -0
  251. package/dist/static/templates/sandbox/src/_includes/header-includes.hbs +25 -0
  252. package/dist/static/templates/sandbox/src/_includes/header.hbs +5 -0
  253. package/dist/static/templates/sandbox/src/_includes/site-template.hbs +23 -0
  254. package/dist/static/templates/sandbox/src/_layouts/empty.hbs +2 -0
  255. package/dist/static/templates/sandbox/src/index.hbs +20 -0
  256. package/dist/static/templates/sandbox/src/robots.hbs +9 -0
  257. package/dist/static/templates/sandbox/src/src.11tydata.json +39 -0
  258. package/dist/static/templates/sandbox/tailwind/site/base.css +44 -0
  259. package/dist/static/templates/sandbox/tailwind/site.config.css +3 -0
  260. package/dist/thrown-sukVkp_1.js +113 -0
  261. package/dist/typescript-D4T0V_Hn.js +23004 -0
  262. package/dist/yaml-9wR8GxF_.js +5236 -0
  263. package/package.json +152 -10
@@ -0,0 +1,52 @@
1
+ {{!--
2
+ Left navigation sidebar. On desktop it is always visible; below the `lg`
3
+ breakpoint it becomes an overlay driven by the docs mini bar's toggle.
4
+ --}}
5
+ <div id="docs-sidebar-nav"
6
+ x-data="sidebarNav()"
7
+ {{!-- Only an actual breakpoint crossing closes the drawer. A blanket
8
+ close() on every resize also fired when a mobile soft keyboard opened,
9
+ which shut the drawer the instant a reader tapped the nav filter. --}}
10
+ @resize.window.debounce.50ms="handleResize()"
11
+ @click.away="close()"
12
+ aria-labelledby="sidebar-toggle-button"
13
+ x-show="open || !isSmallerThanDesktop"
14
+ x-effect="$el.style.display = (open || !isSmallerThanDesktop) ? '' : 'none'"
15
+ :aria-hidden="(!open && isSmallerThanDesktop) ? 'true' : 'false'"
16
+ class="docs-sidebar" :class="[ (open && isSmallerThanDesktop) ? 'zindex-high' : 'zindex-low']">
17
+ <div class="docs-mobile-menu-overlay" @click="close()"></div>
18
+ <div id="docs-navigation" x-data="leedDocsNavigation">
19
+ {{!-- Nav filter. Rendered inside #docs-navigation on purpose: below `lg`
20
+ that element is the fixed drawer panel, so a sibling would sit
21
+ behind the overlay. Server-rendered in full — NavFilterManager
22
+ injects nothing — and carries no `x-` attributes, so Alpine never
23
+ adopts it and the filter stays out of the reactivity graph. --}}
24
+ <div id="docs-nav-filter">
25
+ <div class="docs-nav-filter__field">
26
+ <i class="docs-nav-filter__icon" aria-hidden="true"></i>
27
+ <label class="sr-only" for="docs-nav-filter-input">Filter navigation</label>
28
+ <input type="search"
29
+ id="docs-nav-filter-input"
30
+ class="docs-nav-filter__input"
31
+ maxlength="128"
32
+ autocomplete="off"
33
+ placeholder="Filter menu...">
34
+ <button type="button"
35
+ id="docs-nav-filter-clear"
36
+ class="docs-nav-filter__clear"
37
+ aria-label="Clear filter"
38
+ hidden></button>
39
+ </div>
40
+ {{!-- Not the input's aria-describedby: a description that changes on
41
+ every keystroke is announced a second time by some screen
42
+ readers, on top of the polite update. --}}
43
+ <span id="docs-nav-filter-status" class="sr-only" role="status" aria-live="polite"></span>
44
+ </div>
45
+ {{!-- There is a short code function that looks up the name from the page type --}}
46
+ {{> leed/menu/builder menuName=(docsMenuName "left") }}
47
+ {{!-- Outside #docs-nav-filter so a site's `#docs-nav-filter { display: none }`
48
+ opt-out does not also swallow the empty state, and so the message
49
+ reads where the list was. --}}
50
+ <p id="docs-nav-filter-empty" class="docs-nav-filter__empty" hidden>No matching pages</p>
51
+ </div>
52
+ </div>
@@ -0,0 +1,81 @@
1
+ {{!-- partial to show the social icons --}}
2
+ <div class="flex flex-wrap footer-align space-x-6 md:ml-auto mb-6 ml-0! md:ml-0!">
3
+ {{#if externalAccounts.linkedinId }}
4
+ <a href="https://www.linkedin.com/company/{{ externalAccounts.linkedinId }}" target="_blank" class="social-icon linkedin-colors">
5
+ <span class="sr-only">LinkedIn</span>
6
+ <i class="fa-brands fa-linkedin"></i>
7
+ </a>
8
+ {{/if}}
9
+ {{#if externalAccounts.discordInviteId }}
10
+ <a href="https://discord.gg/{{ externalAccounts.discordInviteId }}" target="_blank" class="social-icon discord-colors">
11
+ <span class="sr-only">Discord</span>
12
+ <i class="fa-brands fa-discord"></i>
13
+ </a>
14
+ {{/if}}
15
+ {{#if externalAccounts.blueskyId }}
16
+ <a href="https://bsky.app/profile/{{ externalAccounts.blueskyId }}" target="_blank" class="social-icon bluesky-colors">
17
+ <span class="sr-only">Bluesky</span>
18
+ <i class="fa-brands fa-bluesky"></i>
19
+ </a>
20
+ {{/if}}
21
+ {{#if externalAccounts.twitterId }}
22
+ <a href="https://x.com/{{ externalAccounts.twitterId }}" target="_blank" class="social-icon twitter-colors">
23
+ <span class="sr-only">Twitter</span>
24
+ <i class="fa-brands fa-x-twitter"></i>
25
+ </a>
26
+ {{/if}}
27
+ {{#if externalAccounts.facebookId }}
28
+ <a href="https://www.facebook.com/{{ externalAccounts.facebookId }}" target="_blank" class="social-icon facebook-colors">
29
+ <span class="sr-only">Facebook</span>
30
+ <i class="fa-brands fa-facebook"></i>
31
+ </a>
32
+ {{/if}}
33
+ {{#if externalAccounts.mastodonId }}
34
+ <a href="https://{{ externalAccounts.mastodonId }}" target="_blank" class="social-icon mastodon-colors">
35
+ <span class="sr-only">Mastodon</span>
36
+ <i class="fa-brands fa-mastodon"></i>
37
+ </a>
38
+ {{/if}}
39
+ {{#if externalAccounts.instagramId }}
40
+ <a href="https://www.instagram.com/{{ externalAccounts.instagramId }}" target="_blank" class="social-icon instagram-colors">
41
+ <span class="sr-only">Instagram</span>
42
+ <i class="fa-brands fa-instagram"></i>
43
+ </a>
44
+ {{/if}}
45
+ {{#if externalAccounts.tiktokId }}
46
+ <a href="https://www.tiktok.com/{{ externalAccounts.tiktokId }}" target="_blank" class="social-icon tiktok-colors">
47
+ <span class="sr-only">TikTok</span>
48
+ <i class="fa-brands fa-tiktok"></i>
49
+ </a>
50
+ {{/if}}
51
+ {{#if externalAccounts.youtubeId }}
52
+ <a href="https://www.youtube.com/{{ externalAccounts.youtubeId }}" target="_blank" class="social-icon youtube-colors">
53
+ <span class="sr-only">YouTube</span>
54
+ <i class="fa-brands fa-youtube"></i>
55
+ </a>
56
+ {{/if}}
57
+ {{#if externalAccounts.twitchId }}
58
+ <a href="https://www.twitch.tv/{{ externalAccounts.twitchId }}" target="_blank" class="social-icon twitch-colors">
59
+ <span class="sr-only">Twitch</span>
60
+ <i class="fa-brands fa-twitch"></i>
61
+ </a>
62
+ {{/if}}
63
+ {{#if externalAccounts.redditId }}
64
+ <a href="https://www.reddit.com/user/{{ externalAccounts.redditId }}" target="_blank" class="social-icon reddit-colors">
65
+ <span class="sr-only">Reddit</span>
66
+ <i class="fa-brands fa-reddit"></i>
67
+ </a>
68
+ {{/if}}
69
+ {{#if externalAccounts.githubId }}
70
+ <a href="https://github.com/{{ externalAccounts.githubId }}" target="_blank" class="social-icon github-colors">
71
+ <span class="sr-only">GitHub</span>
72
+ <i class="fa-brands fa-github"></i>
73
+ </a>
74
+ {{/if}}
75
+ {{#if externalAccounts.gitlabId }}
76
+ <a href="https://gitlab.com/{{ externalAccounts.gitlabId }}" target="_blank" class="social-icon gitlab-colors">
77
+ <span class="sr-only">GitLab</span>
78
+ <i class="fa-brands fa-gitlab"></i>
79
+ </a>
80
+ {{/if}}
81
+ </div>
@@ -0,0 +1,17 @@
1
+ {{#if documentationConfiguration.logo }}
2
+ <style>
3
+ :root {
4
+ {{#if documentationConfiguration.logo.light }}
5
+ --nav-logo-url: url('{{ documentationConfiguration.logo.light }}');
6
+ {{/if}}
7
+ }
8
+ {{#if documentationConfiguration.logo.dark }}
9
+ @media (prefers-color-scheme: dark) {
10
+ :root {
11
+ --nav-logo-url: url('{{ documentationConfiguration.logo.dark}}');
12
+ }
13
+ }
14
+ {{/if}}
15
+ </style>
16
+ <!-- End of style generated by https://leed.ai -->
17
+ {{/if}}
@@ -0,0 +1,7 @@
1
+ {{!-- Desktop table of contents. The mobile copy is moved into the mini bar by JavaScript. --}}
2
+ <div id="docs-toc-wrapper" class="hidden lg:block">
3
+ <aside id="leed-toc" class="py-6 px-4">
4
+ <p id="leed-toc-heading"><i class="fa-solid leed-icon-list"></i> On this page</p>
5
+ {{{ toc content '{"tags": ["h2", "h3"], "wrapper": "div", "wrapperClass": "leed-nav-toc"}' }}}
6
+ </aside>
7
+ </div>
@@ -0,0 +1,266 @@
1
+ {{! Usage:
2
+ leed/form formId="2312kjk1" <-- this is when included in a template page, unless we allow them to put it in the template metadata
3
+ leed/form <-- formId is read from the page metadata. This is best for landing pages where a form is specified in the CMS.
4
+ }}
5
+ {{! > leed/form formId="2312kjk1" }}
6
+ {{#with (lookup leedForms formId) }}
7
+ {{!-- https://blog.cloudflare.com/turnstile-private-captcha-alternative/ --}}
8
+
9
+ {{!--
10
+ leed-utils.js attaches to the onsubmit event of all of our "LeedForm" forms
11
+ 1. LeedForm is our key to capture all onsubmit events <-- this is for us
12
+ 2. leed-form is purely a class name for styling <-- this is for styling
13
+ 3. formPrototype comes from the form creator and it inserted to make it easy for customers to create one style and reuse it across locations
14
+
15
+ Note: Within forms the id fields are used to connect the labels to the form element.
16
+ The name field of the form element is what is submitted for a form submission.
17
+
18
+ Supported fields:
19
+ // these are provided when we hook & submit the form.
20
+ "formId", "pid", "pt", "u"
21
+ // The rest of these fields will get mapped into the database directly.
22
+ "email", "phone", "company", "firstname", "lastname", "title",
23
+ "address", "city", "state", "postalcode",
24
+ "country", "terms", "productname",
25
+ --}}
26
+
27
+ <div class="leed-form-container {{#if formPrototype}}{{formPrototype}}-container{{/if}}">
28
+ {{#if heading }}
29
+ <div id="{{ ../formId }}-heading" class="leed-form-heading">{{ heading }}</div>
30
+ {{/if}}
31
+ {{#if leedAutofill }}
32
+ {{!-- wb stands for welcome back --}}
33
+ <div id="{{ ../formId }}-wb" style="display: none;" class="leed-form-welcome-back">{{ welcomeBackMessage }}</div>
34
+ {{/if}}
35
+ {{#if details }}
36
+ <div id="{{ ../formId }}-details" class="leed-form-details">{{ details }}</div>
37
+ {{/if}}
38
+
39
+ <form data-id="{{ ../formId }}"
40
+ class="LeedForm leed-form {{#if formPrototype}}{{formPrototype}}{{/if}}"
41
+ id="{{ ../formId }}"
42
+ {{#if successCallback }}
43
+ data-successcallback="{{ successCallback }}"
44
+ {{/if}}
45
+ {{#if failureCallback }}
46
+ data-failurecallback="{{ failureCallback }}"
47
+ {{/if}}
48
+ >
49
+
50
+ {{#each fields }}
51
+ <div class="leed-form-block {{type}}
52
+ {{!-- If hideableFields is enabled, the lowest priority is form_fills, so we add that. Only if specify email_batch do we add that --}}
53
+ {{!-- #if ../hideableFields --}}
54
+ {{#not (eq name "terms")}}known-valid-hideable{{/not}}">
55
+ {{#if this.labelBefore }}
56
+ {{#gt @index 0 }}{{/gt}}
57
+ <label for="{{ fieldId ../../formId }}">{{{ this.labelBefore }}}</label>
58
+ {{/if}}
59
+
60
+ {{#eq type "label" }}
61
+ <label id="{{ fieldId ../../formId }}">{{{ this.value }}}</label><br/>
62
+ {{/eq}}
63
+
64
+ {{#eq type "select" }}
65
+ {{!-- Country codes https://www.iban.com/country-codes --}}
66
+ <select id="{{ fieldId ../../formId }}"
67
+ {{#if required }}
68
+ required="true"
69
+ {{/if}}
70
+ {{#if multiple }}
71
+ multiple="true"
72
+ {{/if}}
73
+ {{#if size }}
74
+ size="{{ size }}"
75
+ {{/if}}
76
+ name="{{ name }}">
77
+ {{#if placeHolder }}
78
+ <option value="">{{{ placeHolder }}}</option>
79
+ {{/if}}
80
+ {{#each options }}
81
+ <option value="{{ value }}">{{{ this.label }}}</option>
82
+ {{/each}}
83
+ </select>
84
+ {{/eq}}
85
+
86
+ {{#eq type "countries" }}
87
+ {{!-- Country codes https://www.iban.com/country-codes --}}
88
+ <select id="{{ fieldId ../../formId }}"
89
+ {{#if required }}
90
+ required="true"
91
+ {{/if}}
92
+ {{#if multiple }}
93
+ multiple="true"
94
+ {{/if}}
95
+ {{#if size }}
96
+ size="{{ size }}"
97
+ {{/if}}
98
+ name="{{ name }}">
99
+ {{#if placeHolder }}
100
+ <option value="">{{ placeHolder }}</option>
101
+ {{/if}}
102
+ {{#each @root/leed-form-data/countries }}
103
+ <option
104
+ {{#eq value ../value}}selected="true"{{/eq}}
105
+ value="{{ value }}">
106
+ {{{ this.label }}}
107
+ </option>
108
+ {{/each}}
109
+ </select>
110
+ {{/eq}}
111
+
112
+ {{#eq type "textarea" }}
113
+ <textarea id="{{ fieldId ../../formId }}"
114
+ {{#if required }}
115
+ required="true"
116
+ {{/if}}
117
+ {{#if oninput }}
118
+ oninput="{{ oninput }}"
119
+ {{/if}}
120
+ {{#if onchange }}
121
+ onchange="{{ onchange }}"
122
+ {{/if}}
123
+ {{#if multiple }}
124
+ multiple="true"
125
+ {{/if}}
126
+ {{#if rows }}
127
+ rows="{{ rows }}"
128
+ {{/if}}
129
+ {{#if cols }}
130
+ cols="{{ cols }}"
131
+ {{/if}}
132
+ name="{{ name }}">{{#if value }}{{ value }}{{/if}}</textarea>
133
+ {{/eq}}
134
+
135
+ {{#or (eq type "text") (eq type "tel") (eq type "email") }}
136
+ <input
137
+ id="{{ fieldId ../../formId }}"
138
+ name="{{ name }}"
139
+ type="{{ type }}"
140
+ {{#if placeHolder }}
141
+ placeholder="{{ placeHolder }}"
142
+ {{/if}}
143
+ {{#if oninput }}
144
+ oninput="{{ oninput }}"
145
+ {{/if}}
146
+ {{#if onchange }}
147
+ onchange="{{ onchange }}"
148
+ {{/if}}
149
+ {{#if pattern }}
150
+ pattern="{{ pattern }}"
151
+ {{/if}}
152
+ {{#if value }}
153
+ value="{{ value }}"
154
+ {{/if}}
155
+ {{#if required }}
156
+ required="true"
157
+ {{/if}}
158
+ >
159
+ {{/or}}
160
+
161
+ {{#or (eq type "radiogroup") (eq type "checkboxgroup") }}
162
+ {{#each options }}
163
+ <div class="leed-form-group-option">
164
+ {{#if this.labelBefore }}
165
+ <label for="{{ fieldId ../../formId }}">{{{ this.labelBefore }}}</label>
166
+ {{/if}}
167
+
168
+ <input
169
+ id="{{ fieldId ../../formId}}"
170
+ name="{{ name }}"
171
+ type="{{ type }}"
172
+ {{#if selected}}
173
+ checked="checked"
174
+ {{/if}}
175
+ {{#if ../required }}
176
+ required="true"
177
+ {{/if}}
178
+ {{#if ../onchange }}
179
+ onchange="{{ ../onchange }}"
180
+ {{/if}}
181
+ value="{{ value }}">
182
+
183
+ {{#if this.labelAfter }}
184
+ <label for="{{ fieldId ../../formId }}">{{{ this.labelAfter }}}</label>
185
+ {{/if}}
186
+ </div>
187
+ {{/each}}
188
+ {{/or}}
189
+
190
+ {{#or (eq type "radio") (eq type "checkbox") }}
191
+ <input
192
+ id="{{ fieldId ../../formId }}"
193
+ name="{{ name }}"
194
+ type="{{ type }}"
195
+ {{#if placeHolder }}
196
+ placeholder="{{ placeHolder }}"
197
+ {{/if}}
198
+ {{#if oninput }}
199
+ oninput="{{ oninput }}"
200
+ {{/if}}
201
+ {{#if onchange }}
202
+ onchange="{{ onchange }}"
203
+ {{/if}}
204
+ {{#if pattern }}
205
+ pattern="{{ pattern }}"
206
+ {{/if}}
207
+ {{#if value }}
208
+ value="{{ value }}"
209
+ {{/if}}
210
+ {{#if required }}
211
+ required="true"
212
+ {{/if}}
213
+ {{#if selected }}
214
+ checked="checked"
215
+ {{/if}}
216
+ >
217
+ {{/or}}
218
+
219
+ {{#if this.labelAfter }}
220
+ <label for="{{ fieldId ../../formId }}">{{{ this.labelAfter }}}</label>
221
+ {{/if}}
222
+
223
+ </div>
224
+ {{/each}}
225
+
226
+ {{#each fields }}
227
+ {{#eq type "hidden" }}
228
+ <input type="hidden" value="{{{ value }}}" name="{{ name }}" />
229
+ {{/eq}}
230
+ {{/each}}
231
+
232
+ <button id="{{ ../formId }}-button" data-default="{{{ button }}}" type="submit" class="flex items-center">
233
+ <div id="{{ ../formId }}-button-submit" class="leed-form-button-label" style="display: block;">{{{ button }}}</div>
234
+ <div id="{{ ../formId }}-button-sending" class="leed-form-button-label" style="display: none;">Sending ...</div>
235
+ <div id="{{ ../formId }}-button-email-sent" class="leed-form-button-label" style="display: none;">Email Sent!</div>
236
+ <div id="{{ ../formId }}-button-error" class="leed-form-button-label" style="display: none;">Try again!</div>
237
+ <div id="{{ ../formId }}-button-thanks" class="leed-form-button-label" style="display: none;">Thank you!</div>
238
+ <div id="{{ ../formId }}-button-downloading" class="leed-form-button-label leed-form-button-spinner !flex items-center" style="display: none !important;">
239
+ <div><i class="leed-form-spinner"></i></div>
240
+ <div>Downloading ...</div>
241
+ </div>
242
+ </button>
243
+ <div class="cf-turnstile" data-sitekey="{{ turnstileKey @root }}" style="display: none;"></div>
244
+ </form>
245
+ </div>
246
+
247
+ {{#if (eq this.autofill "linkedin") }}
248
+ <script src="https://www.linkedin.com/autofill/js/autofill.js" type="text/javascript" async></script>
249
+ <script type="IN/Form2" data-form="{{ ../formId }}"
250
+ {{#each fields }}
251
+ {{#or (eq name "firstname") (eq name "lastname") (eq name "phone") (eq name "email") (eq name "company") (eq name "title") (eq name "city") (eq name "state") (eq name "country") }}
252
+ data-field-{{ this.name }}="{{ fieldId ../../formId }}"
253
+ {{/or}}
254
+ {{#if (eq name "postalcode") }}
255
+ data-field-zip="{{ fieldId ../../formId }}"
256
+ {{/if}}
257
+ {{/each}}
258
+ ></script>
259
+ {{/if}}
260
+
261
+ {{#if leedAutofill }}
262
+ <script>leedAutofill('{{ ../formId }}');</script>
263
+ {{/if}}
264
+
265
+ <!-- Leed Form generated by https://leed.ai -->
266
+ {{/with}}
@@ -0,0 +1,67 @@
1
+ {{#if (templateExists "header-includes.hbs") }}
2
+ {{> header-includes }}
3
+ {{/if}}
4
+ <!-- Start headers generated by https://leed.ai -->
5
+
6
+ {{#if this.leedSiteEnv.env.css.usingTailwind }}
7
+ {{!--
8
+ Split into a preload hint and a plain stylesheet rather than the combined
9
+ `rel="preload stylesheet"`. Loading priority is unchanged, but the dev server's
10
+ CSS hot-reload iterates `link[rel="stylesheet"]` — an exact attribute match — so
11
+ the combined form matched nothing and a CSS edit never reached the browser.
12
+ --}}
13
+ <link href="{{ this.leedSiteEnv.env.css.tailwindCSSPath }}" rel="preload" as="style">
14
+ <link href="{{ this.leedSiteEnv.env.css.tailwindCSSPath }}" rel="stylesheet">
15
+ <!-- TailwindCSS generated by https://leed.ai -->
16
+ {{/if}}
17
+
18
+ {{> leed/metadata/siteMetadata }}
19
+
20
+ {{> leed/metadata/twitterCard }}
21
+
22
+ {{> leed/metadata/ogCard }}
23
+
24
+ {{{ JSON-LD }}}
25
+
26
+ {{! https://developer.mozilla.org/en-US/docs/Web/HTML/Link_types/preload }}
27
+ <script>
28
+ const pid = "{{ this.uniquePageId }}";
29
+ const pt = "{{ this.pageTypeId }}";
30
+ {{!-- Lunr only (#329). The search index is a BUILD-TIME concern of the prebuilt
31
+ Lunr index and nothing else: live search resolves its searchable universe
32
+ server-side from `pt` and fetches its filter facets from /api/search/facets,
33
+ so it needs no index id, no page-type list, and no republish to pick up an
34
+ index edit. --}}
35
+ {{#unless (hasFeature "docsLiveSearch") }}
36
+ {{#if documentationConfiguration.searchIndexId }}
37
+ const searchIndexId = "{{ documentationConfiguration.searchIndexId }}";
38
+ const searchIndexHash = "{{ searchIndexHash }}";
39
+ const searchDocumentsHash = "{{ searchDocumentHash }}";
40
+ {{/if}}
41
+ {{/unless}}
42
+ </script>
43
+ {{!-- find new versions here https://cdnjs.com/ --}}
44
+ <script defer src="https://cdnjs.cloudflare.com/ajax/libs/alpinejs/3.16.3/cdn.min.js"></script>
45
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/js-cookie/3.0.8/js.cookie.min.js"></script>
46
+ <script src="{{ this.leedSiteEnv.env.javascript.zoomableJS }}"></script>
47
+ <script src="{{ this.leedSiteEnv.env.javascript.fingerprintJS }}"></script>
48
+ <script src="{{ this.leedSiteEnv.env.javascript.privacyJS }}"></script>
49
+ <script src="{{ this.leedSiteEnv.env.javascript.timerJS }}"></script>
50
+ <script src="{{ this.leedSiteEnv.env.javascript.trackerJS }}"></script>
51
+ {{!-- In-page WebMCP registration (#294): only loaded when the site has MCP enabled. --}}
52
+ {{#if entitlements.mcp }}
53
+ <script defer src="{{ this.leedSiteEnv.env.javascript.webmcpJS }}"></script>
54
+ {{/if}}
55
+ <script src="{{ this.leedSiteEnv.env.javascript.leedUtilsJS }}"></script>
56
+ <script src="{{ this.leedSiteEnv.env.javascript.documentationJS }}"></script>
57
+ {{#if (hasFeature "docsLiveSearch") }}
58
+ <script src="{{ this.leedSiteEnv.env.javascript.liveSearchJS }}"></script>
59
+ {{else}}
60
+ <script src="{{ this.leedSiteEnv.env.javascript.searchJS }}"></script>
61
+ {{/if}}
62
+ {{#if @root/deployment/public/turnstilePublicKey }}
63
+ <script defer src="https://challenges.cloudflare.com/turnstile/v0/api.js"></script>
64
+ {{/if}}
65
+
66
+ {{> leed/docs/style }}
67
+ <!-- End of headers generated by https://leed.ai -->
@@ -0,0 +1,35 @@
1
+ {{! Usage for leed/menu/builder ... name of the must be passed in, class names are optional }}
2
+ {{!
3
+ Main menu template
4
+ usage: {{> leed/menu/builder menuName="top" menuClass="..." submenuClass="..." onClick="..." \}\}
5
+ @param {string} menuName - The name of the menu to render (e.g., "top")
6
+ @param {string} [menuClass] - Optional CSS class for the main menu
7
+ @param {string} [submenuClass] - Optional CSS class for submenus
8
+ @param {string} [onClick] - Optional onClick handler for menu items
9
+ @param {string} [instance] - Optional instance identifier for analytics
10
+ @param {boolean} [expanded] - Optional boolean to default expand the menu
11
+ }}
12
+
13
+ {{#with (lookup menu menuName) }}
14
+ <!-- Start menu -->
15
+ <ul role="menu" aria-label="{{ ../menuName }} - Navigation" class="
16
+ leed-menu
17
+ leed-menu-{{ ../menuName }}
18
+ {{ ../menuClass }}
19
+ "
20
+ data-expanded="{{ expanded }}">
21
+ {{#each items}}
22
+ {{> leed/menu/item
23
+ item=this
24
+ menuName=../../menuName
25
+ submenuClass=../../submenuClass
26
+ onClick=../../onClick
27
+ instance=../../instance
28
+ submenuLevel=1
29
+ isSubmenuItem=false
30
+ expanded=../expanded
31
+ }}
32
+ {{/each}}
33
+ </ul>
34
+ <!-- Leed '{{ ../menuName }}' Menu generated by https://leed.ai -->
35
+ {{/with}}
@@ -0,0 +1,67 @@
1
+ {{!
2
+ Menu item template (recursive)
3
+ @param {Object} item - The menu item object
4
+ @param {string} menuName - The name of the parent menu
5
+ @param {string} [submenuClass] - Optional CSS class for submenus
6
+ @param {string} [onClick] - Optional onClick handler for menu items
7
+ @param {string} [instance] - Optional instance identifier for analytics
8
+ @param {number} [submenuLevel] - which level this item is located
9
+ @param {string} [isSubmenuItem] - top level or sub menu
10
+ @param {boolean} [expanded] - Optional boolean to default expand the menu
11
+ }}
12
+
13
+ {{!-- Skip items with nothing to show: a link to an unpublished page, and a folder whose
14
+ every entry is hidden. An item renders its submenu only when a child renders, so a
15
+ published link whose children are all unpublished shows no empty list or toggle. --}}
16
+ {{#isFalsey item.disabled}}
17
+ {{#if (menuItemShouldRender item)}}
18
+ <li role="menuitem"
19
+ {{#if (menuItemHasVisibleChildren item)}}
20
+ aria-haspopup="menu"
21
+ aria-controls="submenu-{{ item.menuItemId }}"
22
+ {{#or expanded item.expanded }}
23
+ data-expanded="true"
24
+ aria-expanded="true"
25
+ {{/or}}
26
+ {{/if}}
27
+ class="
28
+ {{#if isSubmenuItem}}leed-submenu__item{{else}}leed-menu__item{{/if}}
29
+ "
30
+ data-id="{{ item.menuItemId }}"
31
+ {{#if (menuItemHasVisibleChildren item)}}data-submenu-id="submenu-{{ item.menuItemId }}"{{/if}}>
32
+
33
+ {{> leed/menu/link
34
+ item=item
35
+ menuName=menuName
36
+ onClick=onClick
37
+ instance=instance
38
+ isSubmenuItem=isSubmenuItem
39
+ }}
40
+
41
+ {{#if (menuItemHasVisibleChildren item)}}
42
+ <ul role="menu" class="
43
+ leed-submenu
44
+ leed-submenu--level-{{submenuLevel}}
45
+ {{submenuClass}}
46
+ "
47
+ id="submenu-{{ item.menuItemId }}"
48
+ {{#or expanded item.expanded}}aria-hidden="false"{{/or}}>
49
+ {{#each item.submenu}}
50
+ {{#isFalsey this.disabled }}
51
+ {{> leed/menu/item
52
+ item=this
53
+ menuName=../menuName
54
+ submenuClass=../submenuClass
55
+ onClick=../onClick
56
+ instance=../instance
57
+ submenuLevel=(add ../submenuLevel 1)
58
+ isSubmenuItem=true
59
+ expanded=(or ../expanded ../item.expanded)
60
+ }}
61
+ {{/isFalsey}}
62
+ {{/each}}
63
+ </ul>
64
+ {{/if}}
65
+ </li>
66
+ {{/if}}
67
+ {{/isFalsey}}
@@ -0,0 +1,59 @@
1
+ {{!
2
+ Menu link template
3
+ @param {Object} item - The menu item object
4
+ @param {string} menuName - The name of the parent menu
5
+ @param {string} [menuClass] - Optional CSS class for menu items
6
+ @param {string} [onClick] - Optional onClick handler for menu items
7
+ @param {string} [instance] - Optional instance identifier for analytics
8
+ @param {string} [isSubmenuItem] - top level or sub menu
9
+ }}
10
+
11
+ {{!-- Open the correct tag. Render a real <a> only when the href resolves —
12
+ pageid: links to unpublished pages fall through to the no-link wrapper
13
+ so parents with children still render their submenu. --}}
14
+ {{#if (hrefIsRenderable item.href)}}
15
+ <a
16
+ href="{{ item.href }}"
17
+ data-reason="utm_campaign=leed&utm_source=menu&utm_medium={{ menuName }}&utm_term={{item.menuItemId}}{{#if instance}}-{{instance}}{{/if}}&utm_content={{ stripTags item.name }}"
18
+ class="leed-menu__item--wrapper {{#if isSubmenuItem}}leed-submenu__item--link{{else}}leed-menu__item--link{{/if}}"
19
+ {{#if item.target}}
20
+ target="{{ item.target }}"
21
+ {{/if}}
22
+ {{#if onClick}}
23
+ {{{ onClick }}}
24
+ {{/if}}
25
+ {{#if item.title}}
26
+ title="{{ item.title }}"
27
+ {{/if}}
28
+ >
29
+ {{else}}
30
+ <div class="leed-menu__item--wrapper {{#if isSubmenuItem}}leed-submenu__item--no-link{{else}}leed-menu__item--no-link{{/if}}">
31
+ {{/if}}
32
+
33
+ {{!-- This goes in both types of tags --}}
34
+ {{#if item.image }}
35
+ <div class="leed-menu__item--image">
36
+ {{{ ImageTag item.image }}}
37
+ </div>
38
+ {{/if}}
39
+
40
+ <span class="leed-menu__item--text">
41
+ {{#if item.icon}}
42
+ <i class="leed-menu__item--icon {{ item.icon }}"{{#if item.iconStyle}} style="{{ item.iconStyle }}"{{/if}}></i>
43
+ {{/if}}
44
+ <span class="leed-menu__item--name">{{{ item.name }}}{{#if item.target}}&nbsp;<i class="leed-menu__item--leave"></i>{{/if}}</span>
45
+ {{#if (menuItemHasVisibleChildren item) }}
46
+ <i class="leed-menu__item--toggle" aria-hidden="true"></i>
47
+ {{/if}}
48
+ </span>
49
+
50
+ {{#if item.description}}
51
+ <div class="leed-menu__item--description">{{{ item.description }}}</div>
52
+ {{/if}}
53
+
54
+ {{!-- Close the correct tag (must mirror the open decision above). --}}
55
+ {{#if (hrefIsRenderable item.href)}}
56
+ </a>
57
+ {{else}}
58
+ </div>
59
+ {{/if}}