@pnx-mixtape/mxds 0.0.23 → 0.0.26

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 (299) hide show
  1. package/.storybook/decorators.ts +7 -0
  2. package/.storybook/main.ts +29 -0
  3. package/.storybook/manager.ts +6 -0
  4. package/.storybook/preview.ts +61 -0
  5. package/.storybook/public/demo-logo.svg +4 -0
  6. package/.storybook/public/design-system.svg +1 -0
  7. package/.storybook/public/favicon.svg +7 -0
  8. package/.storybook/public/mixtape-logo.png +0 -0
  9. package/.storybook/public/mixtape.webp +0 -0
  10. package/.storybook/public/pinto.png +0 -0
  11. package/.storybook/public/pinto.svg +1 -0
  12. package/.storybook/public/xb.png +0 -0
  13. package/.storybook/public/xb.svg +1 -0
  14. package/.storybook/src/global.d.ts +16 -0
  15. package/.storybook/src/theme.ts +8 -0
  16. package/.storybook/storybook.css +35 -0
  17. package/.storybook/theme-demo.css +93 -0
  18. package/.storybook/vitest.setup.ts +17 -0
  19. package/dist/build/accordion.css +76 -86
  20. package/dist/build/accordion.entry.js +46 -72
  21. package/dist/build/base.css +1 -993
  22. package/dist/build/breadcrumb.css +1 -55
  23. package/dist/build/button.css +1 -126
  24. package/dist/build/callout.css +1 -11
  25. package/dist/build/card.css +1 -161
  26. package/dist/build/carousel.css +1 -125
  27. package/dist/build/chunks/Accordion-Dwh42fp7.js +42 -0
  28. package/dist/build/chunks/DropMenu-plGsgySm.js +43 -0
  29. package/dist/build/chunks/Popover-Bws25suh.js +27 -0
  30. package/dist/build/chunks/polyfills-Du4RTZDf.js +511 -0
  31. package/dist/build/chunks/popover-Bd5oQ1Ic.js +407 -0
  32. package/dist/build/chunks/utilities-DepaJdUg.js +242 -0
  33. package/dist/build/constants.css +91 -123
  34. package/dist/build/container-grid.css +1 -186
  35. package/dist/build/content-block.css +1 -36
  36. package/dist/build/dialog.css +1 -108
  37. package/dist/build/dialog.entry.js +45 -85
  38. package/dist/build/drop-menu.css +1 -89
  39. package/dist/build/drop-menu.entry.js +2 -2
  40. package/dist/build/drupal.css +1 -66
  41. package/dist/build/filters.css +1 -117
  42. package/dist/build/filters.entry.js +113 -142
  43. package/dist/build/footer.css +1 -141
  44. package/dist/build/form.css +1 -491
  45. package/dist/build/global-alert.css +1 -60
  46. package/dist/build/global-alert.entry.js +51 -75
  47. package/dist/build/grid.css +1 -195
  48. package/dist/build/header.css +1 -149
  49. package/dist/build/header.entry.js +598 -1180
  50. package/dist/build/hero-banner.css +1 -73
  51. package/dist/build/icon.css +1 -399
  52. package/dist/build/in-page-alert.css +1 -93
  53. package/dist/build/in-page-navigation.css +1 -17
  54. package/dist/build/in-page-navigation.entry.js +67 -103
  55. package/dist/build/link-list.css +1 -45
  56. package/dist/build/list-item.css +1 -29
  57. package/dist/build/masthead.css +1 -53
  58. package/dist/build/navigation.css +1 -356
  59. package/dist/build/navigation.entry.js +79 -222
  60. package/dist/build/page.css +1 -65
  61. package/dist/build/pagination.css +1 -111
  62. package/dist/build/popover.css +1 -119
  63. package/dist/build/popover.entry.js +1 -2
  64. package/dist/build/results-bar.css +1 -21
  65. package/dist/build/section.css +1 -147
  66. package/dist/build/side-navigation.css +1 -85
  67. package/dist/build/sidebar.css +1 -53
  68. package/dist/build/social-links.css +1 -20
  69. package/dist/build/steps.css +1 -118
  70. package/dist/build/sticky.css +1 -47
  71. package/dist/build/sticky.entry.js +48 -59
  72. package/dist/build/tabs.css +1 -108
  73. package/dist/build/tabs.entry.js +130 -209
  74. package/dist/build/tag.css +1 -70
  75. package/dist/build/utilities.css +1 -186
  76. package/dist/build/utility-list.css +1 -43
  77. package/dist/build/utility-list.entry.js +52 -80
  78. package/package.json +44 -54
  79. package/src/Atom/Atom.mdx +18 -18
  80. package/src/Atom/Background/{Backgrounds.stories.ts → Background.stories.ts} +2 -1
  81. package/src/Atom/Background/__snapshots__/Background.stories.ts.snap +81 -0
  82. package/src/Atom/Background/_background.css +10 -11
  83. package/src/Atom/Background/backgrounds.twig +6 -4
  84. package/src/Atom/Button/Button.stories.ts +0 -1
  85. package/src/Atom/Button/Button.stories.tsx +2 -0
  86. package/src/Atom/Button/__snapshots__/Button.stories.ts.snap +77 -97
  87. package/src/Atom/Button/__snapshots__/Button.stories.tsx.snap +3 -15
  88. package/src/Atom/Button/_buttons-styles.css +18 -6
  89. package/src/Atom/Button/_buttons.css +1 -1
  90. package/src/Atom/DefinitionList/DefinitionList.stories.tsx +2 -1
  91. package/src/Atom/DefinitionList/__snapshots__/DefinitionList.stories.ts.snap +13 -26
  92. package/src/Atom/DefinitionList/__snapshots__/DefinitionList.stories.tsx.snap +2 -29
  93. package/src/Atom/Heading/Heading.stories.tsx +2 -1
  94. package/src/Atom/Heading/__snapshots__/Heading.stories.ts.snap +9 -13
  95. package/src/Atom/Heading/__snapshots__/Heading.stories.tsx.snap +2 -8
  96. package/src/Atom/Icon/Icon.stories.tsx +2 -1
  97. package/src/Atom/Icon/__snapshots__/Icon.stories.ts.snap +21 -28
  98. package/src/Atom/Icon/__snapshots__/Icon.stories.tsx.snap +4 -15
  99. package/src/Atom/Icon/_extended-set.css +0 -8
  100. package/src/Atom/Icon/_icon.css +15 -6
  101. package/src/Atom/Image/__snapshots__/Image.stories.ts.snap +6 -9
  102. package/src/Atom/Link/Link.stories.tsx +2 -1
  103. package/src/Atom/Link/__snapshots__/Link.stories.ts.snap +47 -56
  104. package/src/Atom/Link/__snapshots__/Link.stories.tsx.snap +4 -22
  105. package/src/Atom/Link/_links.css +1 -0
  106. package/src/Atom/Media/Media.stories.ts +1 -1
  107. package/src/Atom/Media/Media.stories.tsx +2 -1
  108. package/src/Atom/Media/__snapshots__/Media.stories.ts.snap +27 -12
  109. package/src/Atom/Media/__snapshots__/Media.stories.tsx.snap +3 -16
  110. package/src/Atom/Spacing/__snapshots__/Spacing.stories.ts.snap +5 -8
  111. package/src/Atom/Table/Table.stories.ts +0 -1
  112. package/src/Atom/Table/TableResponsive.stories.ts +0 -1
  113. package/src/Atom/Table/__snapshots__/Table.stories.ts.snap +129 -261
  114. package/src/Atom/Table/__snapshots__/TableResponsive.stories.ts.snap +34 -67
  115. package/src/Atom/Text/Text.stories.tsx +2 -1
  116. package/src/Atom/Text/__snapshots__/Text.stories.ts.snap +32 -46
  117. package/src/Atom/Text/__snapshots__/Text.stories.tsx.snap +2 -6
  118. package/src/Atom/Video/__snapshots__/Video.stories.ts.snap +6 -11
  119. package/src/Atom/_flow.css +16 -1
  120. package/src/Component/Accordion/Accordion.stories.tsx +2 -0
  121. package/src/Component/Accordion/__snapshots__/Accordion.stories.ts.snap +106 -140
  122. package/src/Component/Accordion/__snapshots__/Accordion.stories.tsx.snap +3 -49
  123. package/src/Component/Accordion/__snapshots__/AccordionItem.stories.ts.snap +52 -81
  124. package/src/Component/Breadcrumb/Breadcrumb.stories.tsx +2 -0
  125. package/src/Component/Breadcrumb/__snapshots__/Breadcrumb.stories.ts.snap +29 -33
  126. package/src/Component/Breadcrumb/__snapshots__/Breadcrumb.stories.tsx.snap +3 -62
  127. package/src/Component/Callout/__snapshots__/Callout.stories.ts.snap +9 -11
  128. package/src/Component/Card/Card.stories.tsx +2 -0
  129. package/src/Component/Card/__snapshots__/Card.stories.ts.snap +237 -272
  130. package/src/Component/Card/__snapshots__/Card.stories.tsx.snap +4 -85
  131. package/src/Component/Carousel/Elements/Carousel.ts +10 -7
  132. package/src/Component/Carousel/__snapshots__/Carousel.stories.ts.snap +992 -1187
  133. package/src/Component/ContentBlock/ContentBlock.stories.tsx +2 -0
  134. package/src/Component/ContentBlock/__snapshots__/ContentBlock.stories.ts.snap +161 -155
  135. package/src/Component/ContentBlock/__snapshots__/ContentBlock.stories.tsx.snap +2 -25
  136. package/src/Component/Dialog/Dialog.stories.tsx +2 -0
  137. package/src/Component/Dialog/__snapshots__/Dialog.stories.ts.snap +92 -110
  138. package/src/Component/Dialog/__snapshots__/Dialog.stories.tsx.snap +2 -31
  139. package/src/Component/DropMenu/DropMenu.stories.tsx +2 -0
  140. package/src/Component/DropMenu/DropMenu.tsx +1 -3
  141. package/src/Component/DropMenu/__snapshots__/DropMenu.stories.ts.snap +25 -72
  142. package/src/Component/DropMenu/__snapshots__/DropMenu.stories.tsx.snap +2 -46
  143. package/src/Component/Filters/__snapshots__/FilterItem.stories.ts.snap +80 -121
  144. package/src/Component/Filters/__snapshots__/Filters.stories.ts.snap +323 -424
  145. package/src/Component/GlobalAlert/GlobalAlert.stories.tsx +2 -0
  146. package/src/Component/GlobalAlert/__snapshots__/GlobalAlert.stories.ts.snap +25 -37
  147. package/src/Component/GlobalAlert/__snapshots__/GlobalAlert.stories.tsx.snap +3 -46
  148. package/src/Component/HeroBanner/HeroBanner.stories.tsx +2 -0
  149. package/src/Component/HeroBanner/__snapshots__/HeroBanner.stories.ts.snap +105 -106
  150. package/src/Component/HeroBanner/__snapshots__/HeroBanner.stories.tsx.snap +3 -34
  151. package/src/Component/HeroSearch/HeroSearch.stories.ts +0 -2
  152. package/src/Component/HeroSearch/HeroSearch.stories.tsx +2 -0
  153. package/src/Component/HeroSearch/__snapshots__/HeroSearch.stories.ts.snap +122 -165
  154. package/src/Component/HeroSearch/__snapshots__/HeroSearch.stories.tsx.snap +3 -34
  155. package/src/Component/InPageAlert/InPageAlert.stories.tsx +2 -0
  156. package/src/Component/InPageAlert/__snapshots__/InPageAlert.stories.ts.snap +87 -70
  157. package/src/Component/InPageAlert/__snapshots__/InPageAlert.stories.tsx.snap +5 -65
  158. package/src/Component/InPageNavigation/InPageNavigation.stories.ts +1 -0
  159. package/src/Component/InPageNavigation/InPageNavigation.stories.tsx +2 -0
  160. package/src/Component/InPageNavigation/__snapshots__/InPageNavigation.stories.ts.snap +88 -208
  161. package/src/Component/InPageNavigation/__snapshots__/InPageNavigation.stories.tsx.snap +2 -148
  162. package/src/Component/InPageNavigation/in-page-navigation.css +5 -0
  163. package/src/Component/LinkList/LinkList.stories.tsx +2 -1
  164. package/src/Component/LinkList/__snapshots__/LinkList.stories.ts.snap +67 -66
  165. package/src/Component/LinkList/__snapshots__/LinkList.stories.tsx.snap +2 -32
  166. package/src/Component/ListItem/ListItem.stories.tsx +2 -1
  167. package/src/Component/ListItem/__snapshots__/ListItem.stories.ts.snap +153 -167
  168. package/src/Component/ListItem/__snapshots__/ListItem.stories.tsx.snap +2 -25
  169. package/src/Component/Navigation/Dropdown.stories.tsx +2 -0
  170. package/src/Component/Navigation/Elements/Navigation.ts +5 -5
  171. package/src/Component/Navigation/Navigation.stories.tsx +2 -0
  172. package/src/Component/Navigation/__snapshots__/Dropdown.stories.tsx.snap +2 -38
  173. package/src/Component/Navigation/__snapshots__/Navigation.stories.ts.snap +204 -279
  174. package/src/Component/Navigation/__snapshots__/Navigation.stories.tsx.snap +3 -59
  175. package/src/Component/Navigation/_navigation.css +2 -2
  176. package/src/Component/Pagination/Pagination.stories.tsx +2 -0
  177. package/src/Component/Pagination/__snapshots__/Pagination.stories.ts.snap +70 -60
  178. package/src/Component/Pagination/__snapshots__/Pagination.stories.tsx.snap +2 -62
  179. package/src/Component/Popover/Elements/Popover.ts +5 -1
  180. package/src/Component/Popover/Popover.stories.ts +45 -0
  181. package/src/Component/Popover/__snapshots__/Popover.stories.ts.snap +366 -470
  182. package/src/Component/Popover/popover.css +3 -4
  183. package/src/Component/ResultsBar/ResultsBar.stories.tsx +2 -0
  184. package/src/Component/ResultsBar/__snapshots__/ResultsBar.stories.ts.snap +25 -46
  185. package/src/Component/ResultsBar/__snapshots__/ResultsBar.stories.tsx.snap +4 -50
  186. package/src/Component/SideNavigation/__snapshots__/SideNavigation.stories.ts.snap +76 -81
  187. package/src/Component/SocialLinks/__snapshots__/SocialLinks.stories.ts.snap +35 -32
  188. package/src/Component/SocialShare/SocialShare.stories.tsx +2 -1
  189. package/src/Component/SocialShare/__snapshots__/SocialShare.stories.ts.snap +11 -27
  190. package/src/Component/SocialShare/__snapshots__/SocialShare.stories.tsx.snap +4 -22
  191. package/src/Component/SocialShare/social-share.twig +1 -0
  192. package/src/Component/Steps/__snapshots__/StepItem.stories.ts.snap +11 -23
  193. package/src/Component/Steps/__snapshots__/Steps.stories.ts.snap +142 -173
  194. package/src/Component/Steps/steps.css +4 -3
  195. package/src/Component/Sticky/Sticky.stories.tsx +2 -0
  196. package/src/Component/Sticky/__snapshots__/Sticky.stories.ts.snap +6 -12
  197. package/src/Component/Sticky/__snapshots__/Sticky.stories.tsx.snap +2 -10
  198. package/src/Component/Tabs/Tabs.stories.tsx +2 -0
  199. package/src/Component/Tabs/__snapshots__/TabItem.stories.ts.snap +5 -9
  200. package/src/Component/Tabs/__snapshots__/Tabs.stories.ts.snap +37 -210
  201. package/src/Component/Tabs/__snapshots__/Tabs.stories.tsx.snap +2 -116
  202. package/src/Component/Tag/Tag.stories.tsx +2 -0
  203. package/src/Component/Tag/__snapshots__/Tag.stories.ts.snap +37 -61
  204. package/src/Component/Tag/__snapshots__/Tag.stories.tsx.snap +2 -6
  205. package/src/Component/Tag/tags.twig +6 -6
  206. package/src/Component/UtilityList/__snapshots__/UtilityList.stories.ts.snap +122 -245
  207. package/src/Component/UtilityList/utility-list.css +4 -0
  208. package/src/Component/UtilityList/utility-list.twig +2 -1
  209. package/src/Form/Checkbox/FormCheckbox.stories.tsx +2 -2
  210. package/src/Form/Checkbox/__snapshots__/Checkbox.stories.ts.snap +13 -26
  211. package/src/Form/Checkbox/__snapshots__/FormCheckbox.stories.tsx.snap +5 -0
  212. package/src/Form/Description/FormDescription.stories.tsx +2 -1
  213. package/src/Form/Description/__snapshots__/Description.stories.ts.snap +5 -9
  214. package/src/Form/Description/__snapshots__/FormDescription.stories.tsx.snap +2 -9
  215. package/src/Form/Description/__snapshots__/FormStatus.stories.ts.snap +9 -17
  216. package/src/Form/Form/Form.stories.tsx +2 -1
  217. package/src/Form/Form/FormTitle.stories.tsx +2 -1
  218. package/src/Form/Form/__snapshots__/Form.stories.tsx.snap +2 -5
  219. package/src/Form/Form/__snapshots__/FormTitle.stories.tsx.snap +2 -8
  220. package/src/Form/FormItem/FormItem.stories.tsx +8 -5
  221. package/src/Form/FormItem/__snapshots__/FormItem.stories.ts.snap +88 -129
  222. package/src/Form/Label/FormLabel.stories.tsx +2 -1
  223. package/src/Form/Label/__snapshots__/FormLabel.stories.tsx.snap +3 -18
  224. package/src/Form/Label/__snapshots__/Label.stories.ts.snap +13 -25
  225. package/src/Form/Radio/FormRadio.stories.tsx +2 -14
  226. package/src/Form/Radio/__snapshots__/FormRadio.stories.tsx.snap +3 -0
  227. package/src/Form/Radio/__snapshots__/Radio.stories.ts.snap +42 -57
  228. package/src/Form/Search/__snapshots__/Search.stories.ts.snap +11 -26
  229. package/src/Form/Select/FormSelect.stories.tsx +2 -1
  230. package/src/Form/Select/__snapshots__/FormSelect.stories.tsx.snap +2 -22
  231. package/src/Form/Select/__snapshots__/Select.stories.ts.snap +8 -19
  232. package/src/Form/TextInput/FormText.stories.tsx +2 -1
  233. package/src/Form/TextInput/InputDivider.stories.ts +0 -1
  234. package/src/Form/TextInput/__snapshots__/FormText.stories.tsx.snap +2 -12
  235. package/src/Form/TextInput/__snapshots__/InputDivider.stories.ts.snap +11 -26
  236. package/src/Form/TextInput/__snapshots__/TextInput.stories.ts.snap +11 -25
  237. package/src/Form/Textarea/FormTextarea.stories.tsx +2 -1
  238. package/src/Form/Textarea/__snapshots__/FormTextarea.stories.tsx.snap +2 -11
  239. package/src/Form/Textarea/__snapshots__/Textarea.stories.ts.snap +5 -11
  240. package/src/Layout/Footer/Footer.stories.ts +18 -1
  241. package/src/Layout/Footer/Footer.stories.tsx +2 -0
  242. package/src/Layout/Footer/__snapshots__/Footer.stories.ts.snap +360 -301
  243. package/src/Layout/Footer/__snapshots__/Footer.stories.tsx.snap +3 -62
  244. package/src/Layout/Footer/footer.css +16 -35
  245. package/src/Layout/Footer/footer.twig +6 -6
  246. package/src/Layout/Grid/Grid.stories.tsx +2 -0
  247. package/src/Layout/Grid/__snapshots__/Grid.stories.ts.snap +72 -66
  248. package/src/Layout/Grid/__snapshots__/Grid.stories.tsx.snap +6 -62
  249. package/src/Layout/Grid/__snapshots__/GridItem.stories.ts.snap +9 -13
  250. package/src/Layout/Header/Header.stories.tsx +2 -1
  251. package/src/Layout/Header/__snapshots__/Header.stories.ts.snap +315 -466
  252. package/src/Layout/Header/__snapshots__/Header.stories.tsx.snap +2 -58
  253. package/src/Layout/Masthead/__snapshots__/Masthead.stories.ts.snap +86 -87
  254. package/src/Layout/Page/Page.stories.tsx +2 -0
  255. package/src/Layout/Page/__snapshots__/Page.stories.tsx.snap +2 -81
  256. package/src/Layout/Section/__snapshots__/Background.stories.ts.snap +51 -61
  257. package/src/Layout/Section/__snapshots__/Breakouts.stories.ts.snap +34 -78
  258. package/src/Layout/Section/__snapshots__/Flow.stories.ts.snap +54 -89
  259. package/src/Layout/Section/__snapshots__/Section.stories.ts.snap +89 -99
  260. package/src/Layout/Section/__snapshots__/Section.stories.tsx.snap +4 -34
  261. package/src/Layout/Section/__snapshots__/SectionGrid.stories.tsx.snap +3 -35
  262. package/src/Layout/Section/section.twig +2 -2
  263. package/src/Layout/Sidebar/Sidebar.stories.tsx +1 -1
  264. package/src/Layout/Sidebar/__snapshots__/Sidebar.stories.ts.snap +49 -40
  265. package/src/Layout/Sidebar/__snapshots__/Sidebar.stories.tsx.snap +4 -44
  266. package/src/Layout/Sidebar/sidebar.css +2 -2
  267. package/src/Layout/Sidebar/sidebar.twig +8 -5
  268. package/src/Utility/_layout-utils.css +9 -1
  269. package/src/constants.css +115 -114
  270. package/src/enums.ts +1 -0
  271. package/src/tokens.js +26 -19
  272. package/dist/build/accordion.entry.js.map +0 -1
  273. package/dist/build/chunks/Accordion-D1HQ0FDq.js +0 -63
  274. package/dist/build/chunks/Accordion-D1HQ0FDq.js.map +0 -1
  275. package/dist/build/chunks/disclosure-widget-CdjCdx7t.js +0 -129
  276. package/dist/build/chunks/disclosure-widget-CdjCdx7t.js.map +0 -1
  277. package/dist/build/chunks/drop-menu.entry-fzV-_VFl.js +0 -70
  278. package/dist/build/chunks/drop-menu.entry-fzV-_VFl.js.map +0 -1
  279. package/dist/build/chunks/polyfills-DnrsypYs.js +0 -812
  280. package/dist/build/chunks/polyfills-DnrsypYs.js.map +0 -1
  281. package/dist/build/chunks/popover-DzUcnIlX.js +0 -797
  282. package/dist/build/chunks/popover-DzUcnIlX.js.map +0 -1
  283. package/dist/build/chunks/popover.entry-BQvyR0d5.js +0 -38
  284. package/dist/build/chunks/popover.entry-BQvyR0d5.js.map +0 -1
  285. package/dist/build/chunks/utilities-Ci7wwNeg.js +0 -148
  286. package/dist/build/chunks/utilities-Ci7wwNeg.js.map +0 -1
  287. package/dist/build/dialog.entry.js.map +0 -1
  288. package/dist/build/drop-menu.entry.js.map +0 -1
  289. package/dist/build/filters.entry.js.map +0 -1
  290. package/dist/build/global-alert.entry.js.map +0 -1
  291. package/dist/build/header.entry.js.map +0 -1
  292. package/dist/build/in-page-navigation.entry.js.map +0 -1
  293. package/dist/build/navigation.entry.js.map +0 -1
  294. package/dist/build/popover.entry.js.map +0 -1
  295. package/dist/build/sticky.entry.js.map +0 -1
  296. package/dist/build/tabs.entry.js.map +0 -1
  297. package/dist/build/utility-list.entry.js.map +0 -1
  298. package/src/Atom/Background/__snapshots__/Backgrounds.stories.ts.snap +0 -176
  299. package/src/Form/FormItem/__snapshots__/FormItem.stories.tsx.snap +0 -110
@@ -3,23 +3,26 @@
3
3
  baseClass,
4
4
  order ? "mx-grid--"~order : null,
5
5
  ] %}
6
+ {% for modifier in modifiers %}
7
+ {% set classes = classes|merge(["mx-section--"~modifier]) %}
8
+ {% endfor %}
6
9
  {% set attributes = (attributes ?? create_attribute()).addClass(classes) %}
7
- {% set sidebarAttributes = (sidebarAttributes ?? create_attribute()) %}
8
- {% set contentAttributes = (contentAttributes ?? create_attribute()) %}
10
+ {% set sidebarAttributes = (sidebarAttributes ?? create_attribute()).addClass('mx-vertical-flow-grid') %}
11
+ {% set contentAttributes = (contentAttributes ?? create_attribute()).addClass('js-content', 'mx-vertical-flow-grid') %}
9
12
 
10
13
  {% if sidebarContent is not empty %}
11
14
  {% set sidebar %}
12
- <aside{{ sidebarAttributes }}>
15
+ <aside {{ sidebarAttributes }}>
13
16
  {{ sidebarContent }}
14
17
  </aside>
15
18
  {% endset %}
16
19
  {% endif %}
17
20
 
18
- <div{{ attributes }}>
21
+ <div {{ attributes }}>
19
22
  {% if sidebar is not empty and before %}
20
23
  {{ sidebar }}
21
24
  {% endif %}
22
- <section{{ contentAttributes }}>
25
+ <section {{ contentAttributes }}>
23
26
  {{ content }}
24
27
  </section>
25
28
  {% if sidebar is not empty and not before %}
@@ -12,10 +12,18 @@
12
12
  display: flex;
13
13
  }
14
14
 
15
- .place-center {
15
+ .place--center {
16
16
  place-content: center;
17
17
  }
18
18
 
19
+ .place--end {
20
+ place-content: end;
21
+ }
22
+
23
+ .place--start {
24
+ place-content: start;
25
+ }
26
+
19
27
  .align--center {
20
28
  margin-inline: auto;
21
29
  }
package/src/constants.css CHANGED
@@ -7,122 +7,123 @@
7
7
  @property --scheme {
8
8
  syntax: "light | dark";
9
9
  inherits: true;
10
- initial-value: token("colour.scheme");
10
+ initial-value: token("colour.main.scheme");
11
11
  }
12
12
 
13
- :root {
14
- --_hue-primary: token("colour.primary");
15
- --_hue-accent: token("colour.accent");
16
- --_hue-info: token("colour.info");
17
- --_hue-error: token("colour.error");
18
- --_hue-warning: token("colour.warning");
19
- --_hue-success: token("colour.success");
20
- --_hue-outline: token("utility.outline.hue");
21
-
22
- /* Brand colors */
23
- --colour-primary: oklch(50% 0.3 var(--_hue-primary));
24
- --colour-primary-light: color-mix(in oklch, var(--colour-primary), white 90%);
25
- --colour-accent: oklch(50% 0.3 var(--_hue-accent));
26
- --colour-accent-light: color-mix(in oklch, var(--colour-accent), white 90%);
27
-
28
- /* System colours */
29
- --color-scheme: token("colour.scheme");
30
-
31
- color-scheme: var(--color-scheme);
32
-
33
- --colour-background: light-dark(token("colour.main.bg"), token("colour.reverse.bg"));
34
- --colour-background-alt: light-dark(token("colour.main.bgAlt"), token("colour.reverse.bgAlt"));
35
- --colour-foreground: light-dark(token("colour.main.fg"), token("colour.reverse.fg"));
36
- --colour-foreground-alt: light-dark(token("colour.main.fgAlt"), token("colour.reverse.fgAlt"));
37
- --colour-border: light-dark(token("colour.main.border"), token("colour.reverse.border"));
38
- --colour-link: light-dark(var(--colour-primary), var(--colour-primary-light));
39
-
40
- /* Reverse colors */
41
- --colour-foreground-reverse: light-dark(token("colour.reverse.fg"), token("colour.main.fg"));
42
- --colour-background-reverse: light-dark(token("colour.reverse.bg"), token("colour.main.bg"));
43
-
44
- /* State colours */
45
- --colour-error: oklch(45% 0.3 var(--_hue-error));
46
- --colour-success: oklch(50% 0.3 var(--_hue-success));
47
- --colour-warning: oklch(55% 0.3 var(--_hue-warning));
48
- --colour-info: oklch(50% 0.3 var(--_hue-info));
49
-
50
- /* Typography */
51
- --font-family: token("font.family");
52
- --type-ratio: token("font.size.ratio");
53
- --type-ratio-small: token("font.size.ratioSmall");
54
- --base-font-size: max(1rem, token("font.size.basePx"));
55
- --font-size: var(--base-font-size);
56
- --font-size-s: calc(var(--base-font-size) / var(--type-ratio-small));
57
- --font-size-xs: calc(var(--font-size-s) / var(--type-ratio-small));
58
- --font-size-sm: calc(var(--base-font-size) * var(--type-ratio-small));
59
- --font-size-m: calc(var(--base-font-size) * var(--type-ratio));
60
- --font-size-l: calc(var(--font-size-m) * var(--type-ratio));
61
- --font-size-xl: calc(var(--font-size-l) * var(--type-ratio));
62
- --font-size-xxl: calc(var(--font-size-xl) * var(--type-ratio));
63
- --font-size-xxxl: calc(var(--font-size-xxl) * var(--type-ratio));
64
- --font-size-diff: token("font.size.diff");
65
-
66
- --line-height: token("font.lineHeight.main");
67
- --line-height-h: token("font.lineHeight.heading");
68
- --line-height-ui: token("font.lineHeight.ui");
69
-
70
- --font-weight-normal: token("font.weight.main");
71
- --font-weight-bold: token("font.weight.bold");
72
-
73
- /* Spacing */
74
- --spacing-xxxxs: token("size.spacing.xxxxs");
75
- --spacing-xxxs: token("size.spacing.xxxs");
76
- --spacing-xxs: token("size.spacing.xxs");
77
- --spacing-xs: token("size.spacing.xs");
78
- --spacing-s: token("size.spacing.s");
79
- --spacing-m: token("size.spacing.m");
80
- --spacing-l: token("size.spacing.l");
81
- --spacing-xl: token("size.spacing.xl");
82
- --spacing-xxl: token("size.spacing.xxl");
83
- --spacing-xxxl: token("size.spacing.xxxl");
84
- --spacing-xxxxl: token("size.spacing.xxxl");
85
- --spacing-ul: token("size.spacing.ul");
86
- --spacing-uul: token("size.spacing.uul");
87
- --spacing-uuul: token("size.spacing.uuul");
88
-
89
- --outline-width: token("utility.outline.width");
90
- --outline-style: token("utility.outline.style");
91
- --_colour-outline: oklch(50% 0.3 var(--_hue-outline));
92
- --outline-color: light-dark(
93
- var(--_colour-outline),
94
- color-mix(in oklch, var(--_colour-outline), white 90%)
95
- );
96
-
97
- /* Layout */
98
- --container-max-width-narrow: token("size.container.narrow");
99
- --container-max-width: token("size.container.aligned");
100
- --gutter-min: token("size.container.gutterMin");
101
- --gutter-max: token("size.container.gutterMax");
102
- --gap-s: token("size.gap.s");
103
- --gap: token("size.gap.m");
104
- --gap-l: token("size.gap.l");
105
- --gap-xl: token("size.gap.xl");
106
- --breakpoint-xs: token("breakpoint.xs");
107
- --breakpoint-s: token("breakpoint.s");
108
- --breakpoint-m: token("breakpoint.m");
109
- --breakpoint-l: token("breakpoint.l");
110
- --breakpoint-xl: token("breakpoint.xl");
111
-
112
- /* Utility */
113
- --shadow-color: token("utility.shadow.colour");
114
- --shadow-size: token("utility.shadow.size");
115
- --shadow-shape: 0 0 var(--shadow-size);
116
- --box-shadow: var(--shadow-shape) var(--shadow-color);
117
- --border-radius: token("utility.radius.m");
118
- --border-radius-l: token("utility.radius.l");
119
- --border-radius-round: token("utility.radius.round");
120
- --ratio: token("utility.ratio");
121
- --ease: cubic-bezier(0.25, 0, 0.3, 1);
122
- }
123
-
124
- @media (--medium-down) {
13
+ @layer design-system.defaults {
125
14
  :root {
126
- --section-xl: var(--spacing-xxl);
15
+ /* Brand colors */
16
+ --colour-primary: token("colour.primary.colour");
17
+ --colour-primary-light: color-mix(in oklch, var(--colour-primary), white 90%);
18
+ --colour-primary-lighter: color-mix(in oklch, var(--colour-primary), white 20%);
19
+ --colour-primary-darker: color-mix(in oklch, var(--colour-primary), black 10%);
20
+ --colour-primary-scheme: token("colour.primary.scheme");
21
+ --colour-accent: token("colour.accent.colour");
22
+ --colour-accent-light: color-mix(in oklch, var(--colour-accent), white 90%);
23
+ --colour-accent-lighter: color-mix(in oklch, var(--colour-accent), white 20%);
24
+ --colour-accent-darker: color-mix(in oklch, var(--colour-accent), black 10%);
25
+ --colour-accent-scheme: token("colour.accent.scheme");
26
+
27
+ /* System colours */
28
+ --colour-scheme: token("colour.main.scheme");
29
+
30
+ color-scheme: var(--scheme);
31
+
32
+ --colour-background: light-dark(token("colour.main.bg"), token("colour.reverse.bg"));
33
+ --colour-background-alt: light-dark(token("colour.main.bgAlt"), token("colour.reverse.bgAlt"));
34
+ --colour-foreground: light-dark(token("colour.main.fg"), token("colour.reverse.fg"));
35
+ --colour-foreground-alt: light-dark(token("colour.main.fgAlt"), token("colour.reverse.fgAlt"));
36
+ --colour-border: light-dark(token("colour.main.border"), token("colour.reverse.border"));
37
+ --colour-link: light-dark(var(--colour-primary), var(--colour-primary-light));
38
+
39
+ /* Reverse colors */
40
+ --colour-foreground-reverse: light-dark(token("colour.reverse.fg"), token("colour.main.fg"));
41
+ --colour-background-reverse: light-dark(token("colour.reverse.bg"), token("colour.main.bg"));
42
+ --colour-reverse-scheme: token("colour.reverse.scheme");
43
+
44
+ /* State colours */
45
+ --colour-error: token("colour.error");
46
+ --colour-success: token("colour.success");
47
+ --colour-warning: token("colour.warning");
48
+ --colour-info: token("colour.info");
49
+
50
+ /* Typography */
51
+ --font-family: token("font.family");
52
+ --type-ratio: token("font.size.ratio");
53
+ --type-ratio-small: token("font.size.ratioSmall");
54
+ --base-font-size: max(1rem, token("font.size.basePx"));
55
+ --font-size: var(--base-font-size);
56
+ --font-size-s: calc(var(--base-font-size) / var(--type-ratio-small));
57
+ --font-size-xs: calc(var(--font-size-s) / var(--type-ratio-small));
58
+ --font-size-sm: calc(var(--base-font-size) * var(--type-ratio-small));
59
+ --font-size-m: calc(var(--base-font-size) * var(--type-ratio));
60
+ --font-size-l: calc(var(--font-size-m) * var(--type-ratio));
61
+ --font-size-xl: calc(var(--font-size-l) * var(--type-ratio));
62
+ --font-size-xxl: calc(var(--font-size-xl) * var(--type-ratio));
63
+ --font-size-xxxl: calc(var(--font-size-xxl) * var(--type-ratio));
64
+ --font-size-diff: token("font.size.diff");
65
+
66
+ --line-height: token("font.lineHeight.main");
67
+ --line-height-h: token("font.lineHeight.heading");
68
+ --line-height-ui: token("font.lineHeight.ui");
69
+
70
+ --font-weight-normal: token("font.weight.main");
71
+ --font-weight-bold: token("font.weight.bold");
72
+
73
+ /* Spacing */
74
+ --spacing-xxxxs: token("size.spacing.xxxxs");
75
+ --spacing-xxxs: token("size.spacing.xxxs");
76
+ --spacing-xxs: token("size.spacing.xxs");
77
+ --spacing-xs: token("size.spacing.xs");
78
+ --spacing-s: token("size.spacing.s");
79
+ --spacing-m: token("size.spacing.m");
80
+ --spacing-l: token("size.spacing.l");
81
+ --spacing-xl: token("size.spacing.xl");
82
+ --spacing-xxl: token("size.spacing.xxl");
83
+ --spacing-xxxl: token("size.spacing.xxxl");
84
+ --spacing-xxxxl: token("size.spacing.xxxl");
85
+ --spacing-ul: token("size.spacing.ul");
86
+ --spacing-uul: token("size.spacing.uul");
87
+ --spacing-uuul: token("size.spacing.uuul");
88
+
89
+ --outline-size: token("utility.outline.width");
90
+ --outline-style: token("utility.outline.style");
91
+ --_colour-outline: token("utility.outline.colour");
92
+ --outline-color: light-dark(
93
+ var(--_colour-outline),
94
+ color-mix(in oklch, var(--_colour-outline), white 90%)
95
+ );
96
+
97
+ /* Layout */
98
+ --container-max-width-narrow: token("size.container.narrow");
99
+ --container-max-width: token("size.container.aligned");
100
+ --gutter-min: token("size.container.gutterMin");
101
+ --gutter-max: token("size.container.gutterMax");
102
+ --gap-s: token("size.gap.s");
103
+ --gap: token("size.gap.m");
104
+ --gap-l: token("size.gap.l");
105
+ --gap-xl: token("size.gap.xl");
106
+ --breakpoint-xs: token("breakpoint.xs");
107
+ --breakpoint-s: token("breakpoint.s");
108
+ --breakpoint-m: token("breakpoint.m");
109
+ --breakpoint-l: token("breakpoint.l");
110
+ --breakpoint-xl: token("breakpoint.xl");
111
+
112
+ /* Utility */
113
+ --shadow-color: token("utility.shadow.colour");
114
+ --shadow-size: token("utility.shadow.size");
115
+ --shadow-shape: 0 0 var(--shadow-size);
116
+ --box-shadow: var(--shadow-shape) var(--shadow-color);
117
+ --border-radius: token("utility.radius.m");
118
+ --border-radius-l: token("utility.radius.l");
119
+ --border-radius-round: token("utility.radius.round");
120
+ --ratio: token("utility.ratio");
121
+ --ease: cubic-bezier(0.25, 0, 0.3, 1);
122
+ }
123
+
124
+ @media (--medium-down) {
125
+ :root {
126
+ --section-xl: var(--spacing-xxl);
127
+ }
127
128
  }
128
129
  }
package/src/enums.ts CHANGED
@@ -146,6 +146,7 @@ export enum Icons {
146
146
  TRASH = "trash",
147
147
  USER = "user",
148
148
  SHARE = "share",
149
+ QUESTION = "question",
149
150
  }
150
151
 
151
152
  export enum GridColumns {
package/src/tokens.js CHANGED
@@ -29,27 +29,34 @@ export default {
29
29
  dropMenu: "420px",
30
30
  },
31
31
  colour: {
32
- scheme: "light",
33
- primary: "260",
34
- accent: "320",
32
+ primary: {
33
+ colour: "hsl(223 100% 50%)",
34
+ scheme: "dark",
35
+ },
36
+ accent: {
37
+ colour: "hsl(60, 94%, 68%)",
38
+ scheme: "light",
39
+ },
35
40
  main: {
36
- fg: "oklch(0 0 100)",
37
- bg: "oklch(1 0 100)",
38
- fgAlt: "oklch(0.25 0 100)",
39
- bgAlt: "oklch(0.95 0 100)",
40
- border: "oklch(.9 0 100)",
41
+ fg: "hsl(60 30% 6%)",
42
+ bg: "hsl(60 0% 100%)",
43
+ fgAlt: "hsl(60 30% 20%)",
44
+ bgAlt: "hsl(60 30% 95%)",
45
+ border: "hsl(60 5% 85%)",
46
+ scheme: "light",
41
47
  },
42
48
  reverse: {
43
- fg: "oklch(1 0 100)",
44
- bg: "oklch(0 0 100)",
45
- fgAlt: "oklch(0.95 0 100)",
46
- bgAlt: "oklch(0.25 0 100)",
47
- border: "oklch(0.25 0 100)",
49
+ fg: "hsl(60 0% 100%)",
50
+ bg: "hsl(60 30% 6%)",
51
+ fgAlt: "hsl(60 5% 60%)",
52
+ bgAlt: "hsl(60 0% 5%)",
53
+ border: "hsl(60 0% 20%)",
54
+ scheme: "dark",
48
55
  },
49
- info: "260",
50
- warning: "90",
51
- success: "140",
52
- error: "20",
56
+ info: "hsl(223 100% 50%)",
57
+ warning: "hsl(35 100% 32%)",
58
+ success: "hsl(120 100% 26%)",
59
+ error: "hsl(348 100% 33%)",
53
60
  },
54
61
  font: {
55
62
  family: "system-ui, sans-serif",
@@ -105,7 +112,7 @@ export default {
105
112
  outline: {
106
113
  width: "2px",
107
114
  style: "solid",
108
- hue: "260",
115
+ colour: "hsl(223 100% 50%)",
109
116
  },
110
117
  radius: {
111
118
  m: "4px",
@@ -113,7 +120,7 @@ export default {
113
120
  round: "50%",
114
121
  },
115
122
  shadow: {
116
- colour: "oklch(0.25 0 100 / 0.15)",
123
+ colour: "hsl(0 0% 13% / 15%)",
117
124
  size: global.size.xs,
118
125
  },
119
126
  ratio: "16 / 9",
@@ -1 +0,0 @@
1
- {"version":3,"file":"accordion.entry.js","sources":["../../src/Component/Accordion/Elements/AccordionGroup.ts"],"sourcesContent":["/**\n * Accordion Group\n * @file Support opening and closing all.\n */\n\nexport default class AccordionGroup extends HTMLElement {\n internals_: ElementInternals\n controller: AbortController\n\n constructor() {\n super()\n this.internals_ = this.attachInternals()\n this.controller = new AbortController()\n }\n\n connectedCallback(): void {\n if (!this.accordions || !this.expandTrigger || !this.collapseTrigger) return\n this.handleToggle()\n const { signal }: AbortController = this.controller\n this.addEventListener(\"click\", this.handleClick, {\n signal,\n })\n this.accordions.forEach(details =>\n details.addEventListener(\"toggle\", this.handleToggle, {\n signal,\n }),\n )\n }\n\n disconnectedCallback(): void {\n this.controller.abort()\n }\n\n handleClick = ({ target }) => {\n if (target === this.expandTrigger) {\n this.handleExpand()\n }\n if (target === this.collapseTrigger) {\n this.handleCollapse()\n }\n }\n\n handleExpand = () => {\n this.accordions.forEach(detail => (detail.open = true))\n this.expandTrigger.disabled = true\n this.collapseTrigger.disabled = false\n }\n\n handleCollapse = () => {\n this.accordions.forEach(detail => (detail.open = false))\n this.expandTrigger.disabled = false\n this.collapseTrigger.disabled = true\n }\n\n handleToggle = () => {\n this.expandTrigger.disabled = [...this.accordions].every(details => details.open === true)\n this.collapseTrigger.disabled = [...this.accordions].every(details => details.open !== true)\n }\n\n get accordions(): NodeListOf<HTMLDetailsElement> | null {\n const accordions: NodeListOf<HTMLDetailsElement> | null = this.querySelectorAll(\"details\")\n if (!accordions.length) {\n throw new Error(`${this.localName} must contain at least one <details> element.`)\n }\n return accordions\n }\n\n get expandTrigger(): HTMLButtonElement | null {\n const trigger: HTMLButtonElement | null = this.querySelector(\"button[data-expand]\")\n if (!trigger) {\n throw new Error(`${this.localName} must contain a <button data-expand> element.`)\n }\n return trigger\n }\n\n get collapseTrigger(): HTMLButtonElement | null {\n const trigger: HTMLButtonElement | null = this.querySelector(\"button[data-collapse]\")\n if (!trigger) {\n throw new Error(`${this.localName} must contain a <button data-collapse> element.`)\n }\n return trigger\n }\n}\n\nif (!customElements.get(\"mx-accordion-group\"))\n customElements.define(\"mx-accordion-group\", AccordionGroup)\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"mx-accordion-group\": AccordionGroup\n }\n}\n"],"names":[],"mappings":";AAKA,MAAqB,uBAAuB,YAAY;AAAA,EACtD;AAAA,EACA;AAAA,EAEA,cAAc;AACZ,UAAA;AACA,SAAK,aAAa,KAAK,gBAAA;AACvB,SAAK,aAAa,IAAI,gBAAA;AAAA,EACxB;AAAA,EAEA,oBAA0B;AACxB,QAAI,CAAC,KAAK,cAAc,CAAC,KAAK,iBAAiB,CAAC,KAAK,gBAAiB;AACtE,SAAK,aAAA;AACL,UAAM,EAAE,WAA4B,KAAK;AACzC,SAAK,iBAAiB,SAAS,KAAK,aAAa;AAAA,MAC/C;AAAA,IAAA,CACD;AACD,SAAK,WAAW;AAAA,MAAQ,CAAA,YACtB,QAAQ,iBAAiB,UAAU,KAAK,cAAc;AAAA,QACpD;AAAA,MAAA,CACD;AAAA,IAAA;AAAA,EAEL;AAAA,EAEA,uBAA6B;AAC3B,SAAK,WAAW,MAAA;AAAA,EAClB;AAAA,EAEA,cAAc,CAAC,EAAE,aAAa;AAC5B,QAAI,WAAW,KAAK,eAAe;AACjC,WAAK,aAAA;AAAA,IACP;AACA,QAAI,WAAW,KAAK,iBAAiB;AACnC,WAAK,eAAA;AAAA,IACP;AAAA,EACF;AAAA,EAEA,eAAe,MAAM;AACnB,SAAK,WAAW,QAAQ,CAAA,WAAW,OAAO,OAAO,IAAK;AACtD,SAAK,cAAc,WAAW;AAC9B,SAAK,gBAAgB,WAAW;AAAA,EAClC;AAAA,EAEA,iBAAiB,MAAM;AACrB,SAAK,WAAW,QAAQ,CAAA,WAAW,OAAO,OAAO,KAAM;AACvD,SAAK,cAAc,WAAW;AAC9B,SAAK,gBAAgB,WAAW;AAAA,EAClC;AAAA,EAEA,eAAe,MAAM;AACnB,SAAK,cAAc,WAAW,CAAC,GAAG,KAAK,UAAU,EAAE,MAAM,CAAA,YAAW,QAAQ,SAAS,IAAI;AACzF,SAAK,gBAAgB,WAAW,CAAC,GAAG,KAAK,UAAU,EAAE,MAAM,CAAA,YAAW,QAAQ,SAAS,IAAI;AAAA,EAC7F;AAAA,EAEA,IAAI,aAAoD;AACtD,UAAM,aAAoD,KAAK,iBAAiB,SAAS;AACzF,QAAI,CAAC,WAAW,QAAQ;AACtB,YAAM,IAAI,MAAM,GAAG,KAAK,SAAS,+CAA+C;AAAA,IAClF;AACA,WAAO;AAAA,EACT;AAAA,EAEA,IAAI,gBAA0C;AAC5C,UAAM,UAAoC,KAAK,cAAc,qBAAqB;AAClF,QAAI,CAAC,SAAS;AACZ,YAAM,IAAI,MAAM,GAAG,KAAK,SAAS,+CAA+C;AAAA,IAClF;AACA,WAAO;AAAA,EACT;AAAA,EAEA,IAAI,kBAA4C;AAC9C,UAAM,UAAoC,KAAK,cAAc,uBAAuB;AACpF,QAAI,CAAC,SAAS;AACZ,YAAM,IAAI,MAAM,GAAG,KAAK,SAAS,iDAAiD;AAAA,IACpF;AACA,WAAO;AAAA,EACT;AACF;AAEA,IAAI,CAAC,eAAe,IAAI,oBAAoB;AAC1C,iBAAe,OAAO,sBAAsB,cAAc;"}
@@ -1,63 +0,0 @@
1
- import { m as makeAnchor } from "./utilities-Ci7wwNeg.js";
2
- class Accordion extends HTMLElement {
3
- internals_;
4
- controller;
5
- constructor() {
6
- super();
7
- this.internals_ = this.attachInternals();
8
- this.controller = new AbortController();
9
- }
10
- connectedCallback() {
11
- if (!this.details || !this.trigger) return;
12
- const { signal } = this.controller;
13
- document.addEventListener("beforeprint", this.handleOpen, {
14
- signal
15
- });
16
- document.addEventListener("afterprint", this.handleClose, {
17
- signal
18
- });
19
- this.handleHash();
20
- document.addEventListener("hashchange", this.handleHash, { signal });
21
- }
22
- disconnectedCallback() {
23
- this.controller.abort();
24
- }
25
- handleOpen = () => {
26
- if (!this.details) return;
27
- this.details.open = true;
28
- };
29
- handleClose = () => {
30
- if (!this.details) return;
31
- this.details.open = false;
32
- };
33
- handleHash = () => {
34
- const { hash } = window.location;
35
- if (hash && hash === `#${this.details?.id}`) {
36
- this.handleOpen();
37
- }
38
- };
39
- get details() {
40
- const details = this.querySelector("details");
41
- if (!details) {
42
- throw new Error(`${this.localName} must contain a <details> element.`);
43
- }
44
- details.id = details.id || this.generatedId();
45
- return details;
46
- }
47
- get trigger() {
48
- const trigger = this.querySelector("summary");
49
- if (!trigger) {
50
- throw new Error(`${this.localName} must contain a <summary> element.`);
51
- }
52
- return trigger;
53
- }
54
- generatedId = () => {
55
- const string = this.trigger?.textContent?.trim();
56
- return !string ? "" : makeAnchor(string);
57
- };
58
- }
59
- if (!customElements.get("mx-accordion")) customElements.define("mx-accordion", Accordion);
60
- export {
61
- Accordion as A
62
- };
63
- //# sourceMappingURL=Accordion-D1HQ0FDq.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Accordion-D1HQ0FDq.js","sources":["../../../src/Component/Accordion/Elements/Accordion.ts"],"sourcesContent":["/**\n * Accordion\n * @file Support opening on hash, adding an ID attribute and toggling on print.\n */\n\nimport { makeAnchor } from \"../../../Utility/utilities\"\n\nexport default class Accordion extends HTMLElement {\n internals_: ElementInternals\n controller: AbortController\n\n constructor() {\n super()\n this.internals_ = this.attachInternals()\n this.controller = new AbortController()\n }\n\n connectedCallback(): void {\n if (!this.details || !this.trigger) return\n\n const { signal }: AbortController = this.controller\n document.addEventListener(\"beforeprint\", this.handleOpen, {\n signal,\n })\n document.addEventListener(\"afterprint\", this.handleClose, {\n signal,\n })\n this.handleHash()\n document.addEventListener(\"hashchange\", this.handleHash, { signal })\n }\n\n disconnectedCallback(): void {\n this.controller.abort()\n }\n\n handleOpen = (): void => {\n if (!this.details) return\n this.details.open = true\n }\n\n handleClose = (): void => {\n if (!this.details) return\n this.details.open = false\n }\n\n handleHash = (): void => {\n const { hash }: Location = window.location\n if (hash && hash === `#${this.details?.id}`) {\n this.handleOpen()\n }\n }\n\n get details(): HTMLDetailsElement | null {\n const details: HTMLDetailsElement | null = this.querySelector(\"details\")\n if (!details) {\n throw new Error(`${this.localName} must contain a <details> element.`)\n }\n details.id = details.id || this.generatedId()\n return details\n }\n\n get trigger(): HTMLElement | null {\n const trigger: HTMLElement | null = this.querySelector(\"summary\")\n if (!trigger) {\n throw new Error(`${this.localName} must contain a <summary> element.`)\n }\n return trigger\n }\n\n generatedId = (): string => {\n const string: string | undefined = this.trigger?.textContent?.trim()\n return !string ? \"\" : makeAnchor(string)\n }\n}\n\nif (!customElements.get(\"mx-accordion\")) customElements.define(\"mx-accordion\", Accordion)\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"mx-accordion\": Accordion\n }\n}\n"],"names":[],"mappings":";AAOA,MAAqB,kBAAkB,YAAY;AAAA,EACjD;AAAA,EACA;AAAA,EAEA,cAAc;AACZ,UAAA;AACA,SAAK,aAAa,KAAK,gBAAA;AACvB,SAAK,aAAa,IAAI,gBAAA;AAAA,EACxB;AAAA,EAEA,oBAA0B;AACxB,QAAI,CAAC,KAAK,WAAW,CAAC,KAAK,QAAS;AAEpC,UAAM,EAAE,WAA4B,KAAK;AACzC,aAAS,iBAAiB,eAAe,KAAK,YAAY;AAAA,MACxD;AAAA,IAAA,CACD;AACD,aAAS,iBAAiB,cAAc,KAAK,aAAa;AAAA,MACxD;AAAA,IAAA,CACD;AACD,SAAK,WAAA;AACL,aAAS,iBAAiB,cAAc,KAAK,YAAY,EAAE,QAAQ;AAAA,EACrE;AAAA,EAEA,uBAA6B;AAC3B,SAAK,WAAW,MAAA;AAAA,EAClB;AAAA,EAEA,aAAa,MAAY;AACvB,QAAI,CAAC,KAAK,QAAS;AACnB,SAAK,QAAQ,OAAO;AAAA,EACtB;AAAA,EAEA,cAAc,MAAY;AACxB,QAAI,CAAC,KAAK,QAAS;AACnB,SAAK,QAAQ,OAAO;AAAA,EACtB;AAAA,EAEA,aAAa,MAAY;AACvB,UAAM,EAAE,SAAmB,OAAO;AAClC,QAAI,QAAQ,SAAS,IAAI,KAAK,SAAS,EAAE,IAAI;AAC3C,WAAK,WAAA;AAAA,IACP;AAAA,EACF;AAAA,EAEA,IAAI,UAAqC;AACvC,UAAM,UAAqC,KAAK,cAAc,SAAS;AACvE,QAAI,CAAC,SAAS;AACZ,YAAM,IAAI,MAAM,GAAG,KAAK,SAAS,oCAAoC;AAAA,IACvE;AACA,YAAQ,KAAK,QAAQ,MAAM,KAAK,YAAA;AAChC,WAAO;AAAA,EACT;AAAA,EAEA,IAAI,UAA8B;AAChC,UAAM,UAA8B,KAAK,cAAc,SAAS;AAChE,QAAI,CAAC,SAAS;AACZ,YAAM,IAAI,MAAM,GAAG,KAAK,SAAS,oCAAoC;AAAA,IACvE;AACA,WAAO;AAAA,EACT;AAAA,EAEA,cAAc,MAAc;AAC1B,UAAM,SAA6B,KAAK,SAAS,aAAa,KAAA;AAC9D,WAAO,CAAC,SAAS,KAAK,WAAW,MAAM;AAAA,EACzC;AACF;AAEA,IAAI,CAAC,eAAe,IAAI,cAAc,EAAG,gBAAe,OAAO,gBAAgB,SAAS;"}
@@ -1,129 +0,0 @@
1
- import { m as makeAnchor } from "./utilities-Ci7wwNeg.js";
2
- class DisclosureWidget {
3
- options;
4
- context;
5
- trigger;
6
- element;
7
- id;
8
- isOpen;
9
- attached;
10
- constructor(trigger, element, overrides, context = document) {
11
- if (!trigger) {
12
- throw new Error("toggle is required.");
13
- }
14
- if (!element) {
15
- throw new Error("element is required.");
16
- }
17
- const options = {
18
- attribute: "inert",
19
- shouldPreventDefault: true,
20
- setInitialAttribute: true,
21
- clickEvent: "click"
22
- };
23
- this.options = { ...options, ...overrides };
24
- this.context = context || document;
25
- this.trigger = trigger;
26
- this.element = element;
27
- this.id = this.element.id || this.generatedId();
28
- }
29
- init = () => {
30
- if (Object.prototype.hasOwnProperty.call(this.trigger, "disclosureWidget")) return;
31
- const { attribute, setInitialAttribute } = this.options;
32
- this.trigger.disclosureWidget = this;
33
- if (setInitialAttribute) this.element.setAttribute(attribute, "");
34
- this.attach();
35
- };
36
- handleToggle = () => {
37
- const { attribute, setInitialAttribute } = this.options;
38
- this.element.toggleAttribute(attribute);
39
- const hasAttribute = this.element.hasAttribute(attribute);
40
- this.isOpen = setInitialAttribute ? !hasAttribute : hasAttribute;
41
- this.trigger.setAttribute("aria-expanded", String(this.isOpen));
42
- const newEvent = new CustomEvent("disclosure-toggle", {
43
- bubbles: true,
44
- cancelable: true,
45
- detail: {
46
- isOpen: this.isOpen,
47
- id: this.id,
48
- options: this.options,
49
- target: this.element
50
- }
51
- });
52
- this.trigger.dispatchEvent(newEvent);
53
- };
54
- handleMouse = (event) => {
55
- const { currentTarget, type, relatedTarget } = event;
56
- if (type === "mouseover" || type === "mouseout") {
57
- const triggerParent = this.trigger.parentNode;
58
- if (triggerParent !== currentTarget || triggerParent.contains(relatedTarget))
59
- return;
60
- } else if (this.trigger !== currentTarget) return;
61
- const { shouldPreventDefault } = this.options;
62
- this.handleToggle();
63
- if (shouldPreventDefault) {
64
- event.preventDefault();
65
- event.stopPropagation();
66
- }
67
- };
68
- handleKeyboard = (event) => {
69
- const { key, target } = event;
70
- if (this.trigger !== target) return;
71
- const { isOpen } = this;
72
- const { shouldPreventDefault } = this.options;
73
- switch (key) {
74
- // Down/Enter should open it.
75
- case "ArrowDown":
76
- case "Enter":
77
- if (!isOpen) this.handleToggle();
78
- if (shouldPreventDefault) event.preventDefault();
79
- break;
80
- // Up/Esc should close it.
81
- case "ArrowUp":
82
- case "Escape":
83
- if (isOpen) this.handleToggle();
84
- if (shouldPreventDefault) event.preventDefault();
85
- break;
86
- }
87
- };
88
- attach = () => {
89
- if (this.attached) return;
90
- const { clickEvent } = this.options;
91
- if (clickEvent === "mouseover") {
92
- const parent = this.trigger.parentNode;
93
- parent.addEventListener("mouseover", this.handleMouse);
94
- parent.addEventListener("mouseout", this.handleMouse);
95
- } else {
96
- this.trigger.addEventListener("click", this.handleMouse);
97
- }
98
- this.trigger.addEventListener("keydown", this.handleKeyboard);
99
- this.trigger.setAttribute("aria-expanded", "false");
100
- if (!this.trigger.hasAttribute("aria-controls"))
101
- this.trigger.setAttribute("aria-controls", this.id);
102
- this.attached = true;
103
- };
104
- detach = () => {
105
- if (!this.attached) return;
106
- if (this.isOpen) {
107
- this.handleToggle();
108
- }
109
- const { clickEvent } = this.options;
110
- if (clickEvent === "mouseover") {
111
- const parent = this.trigger.parentNode;
112
- parent.removeEventListener("mouseover", this.handleMouse);
113
- parent.removeEventListener("mouseout", this.handleMouse);
114
- } else {
115
- this.trigger.removeEventListener("click", this.handleMouse);
116
- }
117
- this.trigger.removeEventListener("keydown", this.handleKeyboard);
118
- this.trigger.removeAttribute("aria-expanded");
119
- this.attached = false;
120
- };
121
- generatedId = () => {
122
- const string = this.trigger?.textContent?.trim();
123
- return !string ? "" : makeAnchor(string);
124
- };
125
- }
126
- export {
127
- DisclosureWidget as D
128
- };
129
- //# sourceMappingURL=disclosure-widget-CdjCdx7t.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"disclosure-widget-CdjCdx7t.js","sources":["../../../src/Utility/Elements/disclosure-widget.ts"],"sourcesContent":["/**\n * Class for a generic Disclosure Widget.\n */\nimport { makeAnchor } from \"../utilities\"\n\ntype DisclosureWidgetOptions = {\n attribute?: string\n shouldPreventDefault?: boolean\n setInitialAttribute?: boolean\n clickEvent?: \"click\" | \"mouseover\"\n}\n\nexport type DisclosureWidgetEvent = {\n isOpen: boolean\n id: string\n options: DisclosureWidgetOptions\n target: Element\n}\n\nexport default class DisclosureWidget {\n options: DisclosureWidgetOptions\n context: Document | Element\n trigger: Element & { disclosureWidget?: DisclosureWidget }\n element: Element\n id: string\n isOpen?: boolean\n attached?: boolean\n\n constructor(\n trigger: Element,\n element: Element,\n overrides?: DisclosureWidgetOptions,\n context: Element | Document = document,\n ) {\n if (!trigger) {\n throw new Error(\"toggle is required.\")\n }\n if (!element) {\n throw new Error(\"element is required.\")\n }\n const options: DisclosureWidgetOptions = {\n attribute: \"inert\",\n shouldPreventDefault: true,\n setInitialAttribute: true,\n clickEvent: \"click\",\n }\n\n this.options = { ...options, ...overrides }\n this.context = context || document\n this.trigger = trigger\n this.element = element\n this.id = this.element.id || this.generatedId()\n }\n\n init = (): void => {\n if (Object.prototype.hasOwnProperty.call(this.trigger, \"disclosureWidget\")) return\n const { attribute, setInitialAttribute } = this.options\n this.trigger.disclosureWidget = this\n if (setInitialAttribute) this.element.setAttribute(attribute, \"\")\n this.attach()\n }\n\n handleToggle = (): void => {\n const { attribute, setInitialAttribute } = this.options\n this.element.toggleAttribute(attribute)\n const hasAttribute: boolean = this.element.hasAttribute(attribute)\n this.isOpen = setInitialAttribute ? !hasAttribute : hasAttribute\n this.trigger.setAttribute(\"aria-expanded\", String(this.isOpen))\n const newEvent: CustomEvent<DisclosureWidgetEvent> = new CustomEvent(\"disclosure-toggle\", {\n bubbles: true,\n cancelable: true,\n detail: {\n isOpen: this.isOpen,\n id: this.id,\n options: this.options,\n target: this.element,\n },\n })\n this.trigger.dispatchEvent(newEvent)\n }\n\n handleMouse = (event: MouseEvent): void => {\n const { currentTarget, type, relatedTarget } = event\n\n if (type === \"mouseover\" || type === \"mouseout\") {\n const triggerParent = this.trigger.parentNode\n if (triggerParent !== currentTarget || triggerParent.contains(relatedTarget as HTMLElement))\n return\n } else if (this.trigger !== currentTarget) return\n\n const { shouldPreventDefault } = this.options\n this.handleToggle()\n if (shouldPreventDefault) {\n event.preventDefault()\n event.stopPropagation()\n }\n }\n\n handleKeyboard = (event: KeyboardEvent): void => {\n const { key, target } = event\n if (this.trigger !== target) return\n const { isOpen } = this\n const { shouldPreventDefault } = this.options\n\n switch (key) {\n // Down/Enter should open it.\n case \"ArrowDown\":\n case \"Enter\":\n if (!isOpen) this.handleToggle()\n if (shouldPreventDefault) event.preventDefault()\n break\n\n // Up/Esc should close it.\n case \"ArrowUp\":\n case \"Escape\":\n if (isOpen) this.handleToggle()\n if (shouldPreventDefault) event.preventDefault()\n break\n\n default:\n break\n }\n }\n\n attach = (): void => {\n if (this.attached) return\n const { clickEvent } = this.options\n if (clickEvent === \"mouseover\") {\n const parent = this.trigger.parentNode\n parent.addEventListener(\"mouseover\", this.handleMouse)\n parent.addEventListener(\"mouseout\", this.handleMouse)\n } else {\n this.trigger.addEventListener(\"click\", this.handleMouse)\n }\n this.trigger.addEventListener(\"keydown\", this.handleKeyboard)\n\n this.trigger.setAttribute(\"aria-expanded\", \"false\")\n if (!this.trigger.hasAttribute(\"aria-controls\"))\n this.trigger.setAttribute(\"aria-controls\", this.id)\n this.attached = true\n }\n\n detach = (): void => {\n if (!this.attached) return\n if (this.isOpen) {\n this.handleToggle()\n }\n const { clickEvent } = this.options\n if (clickEvent === \"mouseover\") {\n const parent = this.trigger.parentNode\n parent.removeEventListener(\"mouseover\", this.handleMouse)\n parent.removeEventListener(\"mouseout\", this.handleMouse)\n } else {\n this.trigger.removeEventListener(\"click\", this.handleMouse)\n }\n this.trigger.removeEventListener(\"keydown\", this.handleKeyboard)\n\n this.trigger.removeAttribute(\"aria-expanded\")\n this.attached = false\n }\n\n generatedId = (): string => {\n const string: string | undefined = this.trigger?.textContent?.trim()\n return !string ? \"\" : makeAnchor(string)\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,70 +0,0 @@
1
- import { P as Popover } from "./popover.entry-BQvyR0d5.js";
2
- class DropMenu extends Popover {
3
- controller;
4
- closeOnClick;
5
- constructor() {
6
- super();
7
- this.controller = new AbortController();
8
- }
9
- async connectedCallback() {
10
- await super.connectedCallback();
11
- if (!this.container || !this.trigger) return;
12
- this.closeOnClick = this.hasAttribute("closeonclick");
13
- const { signal } = this.controller;
14
- document.addEventListener(
15
- "click",
16
- (event) => {
17
- const targetElement = event.target;
18
- const selectable = targetElement.closest("a, button");
19
- if (targetElement !== this.container && ![...this.items].includes(selectable))
20
- return;
21
- this.handleSelect(event);
22
- event.preventDefault();
23
- },
24
- {
25
- signal
26
- }
27
- );
28
- document.addEventListener(
29
- "keydown",
30
- (event) => {
31
- const { target, key } = event;
32
- if (target !== this.container && ![...this.items].includes(target))
33
- return;
34
- if (key === "Enter") this.handleSelect(event);
35
- event.preventDefault();
36
- },
37
- {
38
- signal
39
- }
40
- );
41
- }
42
- disconnectedCallback() {
43
- this.controller.abort();
44
- }
45
- handleSelect = (event) => {
46
- const target = event.target;
47
- this.items?.forEach((item) => {
48
- if (!(item instanceof HTMLButtonElement)) return;
49
- item.setAttribute("aria-checked", String(item === target));
50
- });
51
- const newEvent = new CustomEvent("drop-menu-select", {
52
- bubbles: true,
53
- cancelable: true,
54
- detail: {
55
- event,
56
- target
57
- }
58
- });
59
- this.container.dispatchEvent(newEvent);
60
- if (this.closeOnClick) this.container.togglePopover();
61
- };
62
- get items() {
63
- return this.container.querySelectorAll("a, button");
64
- }
65
- }
66
- if (!customElements.get("mx-dropmenu")) customElements.define("mx-dropmenu", DropMenu);
67
- export {
68
- DropMenu as D
69
- };
70
- //# sourceMappingURL=drop-menu.entry-fzV-_VFl.js.map