@ds-gn/ui 0.0.0-stage → 0.5.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 (271) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +155 -2
  3. package/THIRD_PARTY_NOTICES +167 -0
  4. package/assets/logo-full-dark.svg +4 -0
  5. package/assets/logo-full.svg +4 -0
  6. package/assets/logo-mark.svg +3 -0
  7. package/custom-elements.json +4696 -0
  8. package/dist/common/Base/Base.d.ts +22 -0
  9. package/dist/common/controllers/AuroraMeshController.d.ts +68 -0
  10. package/dist/common/controllers/AutoRotateController.d.ts +38 -0
  11. package/dist/common/controllers/BreakpointController.d.ts +30 -0
  12. package/dist/common/controllers/LayoutChangeController.d.ts +28 -0
  13. package/dist/common/controllers/WordCycleController.d.ts +36 -0
  14. package/dist/common/helpers/aurora-mesh.d.ts +11 -0
  15. package/dist/common/helpers/define-element.d.ts +14 -0
  16. package/dist/common/helpers/enum-creator.d.ts +2 -0
  17. package/dist/common/helpers/enum-validator.d.ts +1 -0
  18. package/dist/common/helpers/layout-change.d.ts +39 -0
  19. package/dist/common/helpers/layout-change.testing.d.ts +15 -0
  20. package/dist/common/helpers/logo.string.d.ts +23 -0
  21. package/dist/common/helpers/logo.string.js +43 -0
  22. package/dist/common/helpers/logo.utils.d.ts +8 -0
  23. package/dist/common/helpers/motion.d.ts +9 -0
  24. package/dist/common/helpers/story.utils.d.ts +32 -0
  25. package/dist/common/props/surface/surface.props.d.ts +6 -0
  26. package/dist/components/Background/src/Background.d.ts +44 -0
  27. package/dist/components/Background/src/Background.js +576 -0
  28. package/dist/components/Background/src/Background.props.d.ts +20 -0
  29. package/dist/components/Background/src/Background.props.js +47 -0
  30. package/dist/components/Background/src/Background.styles.d.ts +3 -0
  31. package/dist/components/Badge/src/Badge.d.ts +28 -0
  32. package/dist/components/Badge/src/Badge.js +429 -0
  33. package/dist/components/Badge/src/Badge.playground.d.ts +2 -0
  34. package/dist/components/Badge/src/Badge.props.d.ts +16 -0
  35. package/dist/components/Badge/src/Badge.props.js +44 -0
  36. package/dist/components/Badge/src/Badge.styles.d.ts +2 -0
  37. package/dist/components/Button/src/Button.d.ts +138 -0
  38. package/dist/components/Button/src/Button.js +1102 -0
  39. package/dist/components/Button/src/Button.playground.d.ts +2 -0
  40. package/dist/components/Button/src/Button.props.d.ts +47 -0
  41. package/dist/components/Button/src/Button.props.js +79 -0
  42. package/dist/components/Button/src/Button.styles.d.ts +11 -0
  43. package/dist/components/Card/src/Card.d.ts +39 -0
  44. package/dist/components/Card/src/Card.js +564 -0
  45. package/dist/components/Card/src/Card.playground.d.ts +2 -0
  46. package/dist/components/Card/src/Card.props.d.ts +22 -0
  47. package/dist/components/Card/src/Card.props.js +42 -0
  48. package/dist/components/Card/src/Card.styles.d.ts +11 -0
  49. package/dist/components/CodeBlock/src/CodeBlock.d.ts +18 -0
  50. package/dist/components/CodeBlock/src/CodeBlock.js +372 -0
  51. package/dist/components/CodeBlock/src/CodeBlock.props.d.ts +1 -0
  52. package/dist/components/CodeBlock/src/CodeBlock.props.js +5 -0
  53. package/dist/components/CodeBlock/src/CodeBlock.styles.d.ts +9 -0
  54. package/dist/components/Container/src/Container.d.ts +26 -0
  55. package/dist/components/Container/src/Container.js +354 -0
  56. package/dist/components/Container/src/Container.props.d.ts +20 -0
  57. package/dist/components/Container/src/Container.props.js +49 -0
  58. package/dist/components/Container/src/Container.styles.d.ts +2 -0
  59. package/dist/components/Divider/src/Divider.d.ts +23 -0
  60. package/dist/components/Divider/src/Divider.js +250 -0
  61. package/dist/components/Divider/src/Divider.props.d.ts +7 -0
  62. package/dist/components/Divider/src/Divider.props.js +34 -0
  63. package/dist/components/Divider/src/Divider.styles.d.ts +2 -0
  64. package/dist/components/FeatureItem/src/FeatureItem.d.ts +30 -0
  65. package/dist/components/FeatureItem/src/FeatureItem.js +368 -0
  66. package/dist/components/FeatureItem/src/FeatureItem.props.d.ts +10 -0
  67. package/dist/components/FeatureItem/src/FeatureItem.props.js +37 -0
  68. package/dist/components/FeatureItem/src/FeatureItem.styles.d.ts +3 -0
  69. package/dist/components/FeatureTabs/src/FeatureTabs.d.ts +48 -0
  70. package/dist/components/FeatureTabs/src/FeatureTabs.js +1333 -0
  71. package/dist/components/FeatureTabs/src/FeatureTabs.props.d.ts +27 -0
  72. package/dist/components/FeatureTabs/src/FeatureTabs.props.js +80 -0
  73. package/dist/components/FeatureTabs/src/FeatureTabs.styles.d.ts +35 -0
  74. package/dist/components/Footer/src/Footer.d.ts +39 -0
  75. package/dist/components/Footer/src/Footer.js +361 -0
  76. package/dist/components/Footer/src/Footer.styles.d.ts +6 -0
  77. package/dist/components/FormBlock/src/FormBlock.d.ts +40 -0
  78. package/dist/components/FormBlock/src/FormBlock.js +476 -0
  79. package/dist/components/FormBlock/src/FormBlock.props.d.ts +5 -0
  80. package/dist/components/FormBlock/src/FormBlock.props.js +8 -0
  81. package/dist/components/FormBlock/src/FormBlock.styles.d.ts +6 -0
  82. package/dist/components/Grid/src/Grid.d.ts +35 -0
  83. package/dist/components/Grid/src/Grid.js +381 -0
  84. package/dist/components/Grid/src/Grid.props.d.ts +28 -0
  85. package/dist/components/Grid/src/Grid.props.js +57 -0
  86. package/dist/components/Grid/src/Grid.styles.d.ts +3 -0
  87. package/dist/components/Heading/src/Heading.d.ts +26 -0
  88. package/dist/components/Heading/src/Heading.js +755 -0
  89. package/dist/components/Heading/src/Heading.playground.d.ts +2 -0
  90. package/dist/components/Heading/src/Heading.props.d.ts +19 -0
  91. package/dist/components/Heading/src/Heading.props.js +47 -0
  92. package/dist/components/Heading/src/Heading.styles.d.ts +4 -0
  93. package/dist/components/HeadingBlock/src/HeadingBlock.d.ts +28 -0
  94. package/dist/components/HeadingBlock/src/HeadingBlock.js +288 -0
  95. package/dist/components/HeadingBlock/src/HeadingBlock.playground.d.ts +2 -0
  96. package/dist/components/HeadingBlock/src/HeadingBlock.props.d.ts +6 -0
  97. package/dist/components/HeadingBlock/src/HeadingBlock.props.js +33 -0
  98. package/dist/components/HeadingBlock/src/HeadingBlock.styles.d.ts +2 -0
  99. package/dist/components/Hero/src/Hero.d.ts +42 -0
  100. package/dist/components/Hero/src/Hero.js +506 -0
  101. package/dist/components/Hero/src/Hero.props.d.ts +22 -0
  102. package/dist/components/Hero/src/Hero.props.js +51 -0
  103. package/dist/components/Hero/src/Hero.styles.d.ts +10 -0
  104. package/dist/components/Icon/src/Icon.d.ts +67 -0
  105. package/dist/components/Icon/src/Icon.js +303 -0
  106. package/dist/components/Icon/src/Icon.props.d.ts +8 -0
  107. package/dist/components/Icon/src/Icon.props.js +35 -0
  108. package/dist/components/Icon/src/Icon.styles.d.ts +3 -0
  109. package/dist/components/Icon/src/icons/arrow-left.d.ts +1 -0
  110. package/dist/components/Icon/src/icons/arrow-left.js +6 -0
  111. package/dist/components/Icon/src/icons/arrow-right.d.ts +1 -0
  112. package/dist/components/Icon/src/icons/arrow-right.js +6 -0
  113. package/dist/components/Icon/src/icons/calendar.d.ts +1 -0
  114. package/dist/components/Icon/src/icons/calendar.js +6 -0
  115. package/dist/components/Icon/src/icons/check.d.ts +1 -0
  116. package/dist/components/Icon/src/icons/check.js +6 -0
  117. package/dist/components/Icon/src/icons/chevron-down.d.ts +1 -0
  118. package/dist/components/Icon/src/icons/chevron-down.js +6 -0
  119. package/dist/components/Icon/src/icons/chevron-left.d.ts +1 -0
  120. package/dist/components/Icon/src/icons/chevron-left.js +6 -0
  121. package/dist/components/Icon/src/icons/chevron-right.d.ts +1 -0
  122. package/dist/components/Icon/src/icons/chevron-right.js +6 -0
  123. package/dist/components/Icon/src/icons/chevron-up.d.ts +1 -0
  124. package/dist/components/Icon/src/icons/chevron-up.js +6 -0
  125. package/dist/components/Icon/src/icons/circle-alert.d.ts +1 -0
  126. package/dist/components/Icon/src/icons/circle-alert.js +6 -0
  127. package/dist/components/Icon/src/icons/circle-check.d.ts +1 -0
  128. package/dist/components/Icon/src/icons/circle-check.js +6 -0
  129. package/dist/components/Icon/src/icons/circle-x.d.ts +1 -0
  130. package/dist/components/Icon/src/icons/circle-x.js +6 -0
  131. package/dist/components/Icon/src/icons/copy.d.ts +1 -0
  132. package/dist/components/Icon/src/icons/copy.js +6 -0
  133. package/dist/components/Icon/src/icons/download.d.ts +1 -0
  134. package/dist/components/Icon/src/icons/download.js +6 -0
  135. package/dist/components/Icon/src/icons/ellipsis-vertical.d.ts +1 -0
  136. package/dist/components/Icon/src/icons/ellipsis-vertical.js +6 -0
  137. package/dist/components/Icon/src/icons/ellipsis.d.ts +1 -0
  138. package/dist/components/Icon/src/icons/ellipsis.js +6 -0
  139. package/dist/components/Icon/src/icons/external-link.d.ts +1 -0
  140. package/dist/components/Icon/src/icons/external-link.js +6 -0
  141. package/dist/components/Icon/src/icons/eye-off.d.ts +1 -0
  142. package/dist/components/Icon/src/icons/eye-off.js +6 -0
  143. package/dist/components/Icon/src/icons/eye.d.ts +1 -0
  144. package/dist/components/Icon/src/icons/eye.js +6 -0
  145. package/dist/components/Icon/src/icons/icon-names.d.ts +2 -0
  146. package/dist/components/Icon/src/icons/icon-names.js +36 -0
  147. package/dist/components/Icon/src/icons/index.d.ts +34 -0
  148. package/dist/components/Icon/src/icons/index.js +35 -0
  149. package/dist/components/Icon/src/icons/info.d.ts +1 -0
  150. package/dist/components/Icon/src/icons/info.js +6 -0
  151. package/dist/components/Icon/src/icons/loader.d.ts +1 -0
  152. package/dist/components/Icon/src/icons/loader.js +6 -0
  153. package/dist/components/Icon/src/icons/mail.d.ts +1 -0
  154. package/dist/components/Icon/src/icons/mail.js +6 -0
  155. package/dist/components/Icon/src/icons/menu.d.ts +1 -0
  156. package/dist/components/Icon/src/icons/menu.js +6 -0
  157. package/dist/components/Icon/src/icons/minus.d.ts +1 -0
  158. package/dist/components/Icon/src/icons/minus.js +6 -0
  159. package/dist/components/Icon/src/icons/pencil.d.ts +1 -0
  160. package/dist/components/Icon/src/icons/pencil.js +6 -0
  161. package/dist/components/Icon/src/icons/plus.d.ts +1 -0
  162. package/dist/components/Icon/src/icons/plus.js +6 -0
  163. package/dist/components/Icon/src/icons/search.d.ts +1 -0
  164. package/dist/components/Icon/src/icons/search.js +6 -0
  165. package/dist/components/Icon/src/icons/settings.d.ts +1 -0
  166. package/dist/components/Icon/src/icons/settings.js +6 -0
  167. package/dist/components/Icon/src/icons/trash-2.d.ts +1 -0
  168. package/dist/components/Icon/src/icons/trash-2.js +6 -0
  169. package/dist/components/Icon/src/icons/triangle-alert.d.ts +1 -0
  170. package/dist/components/Icon/src/icons/triangle-alert.js +6 -0
  171. package/dist/components/Icon/src/icons/upload.d.ts +1 -0
  172. package/dist/components/Icon/src/icons/upload.js +6 -0
  173. package/dist/components/Icon/src/icons/user.d.ts +1 -0
  174. package/dist/components/Icon/src/icons/user.js +6 -0
  175. package/dist/components/Icon/src/icons/x.d.ts +1 -0
  176. package/dist/components/Icon/src/icons/x.js +6 -0
  177. package/dist/components/Image/src/Image.d.ts +76 -0
  178. package/dist/components/Image/src/Image.js +456 -0
  179. package/dist/components/Image/src/Image.props.d.ts +35 -0
  180. package/dist/components/Image/src/Image.props.js +65 -0
  181. package/dist/components/Image/src/Image.styles.d.ts +4 -0
  182. package/dist/components/Input/src/Input.d.ts +60 -0
  183. package/dist/components/Input/src/Input.js +648 -0
  184. package/dist/components/Input/src/Input.playground.d.ts +2 -0
  185. package/dist/components/Input/src/Input.props.d.ts +13 -0
  186. package/dist/components/Input/src/Input.props.js +41 -0
  187. package/dist/components/Input/src/Input.styles.d.ts +6 -0
  188. package/dist/components/Modal/src/Modal.d.ts +166 -0
  189. package/dist/components/Modal/src/Modal.js +1434 -0
  190. package/dist/components/Modal/src/Modal.playground.d.ts +2 -0
  191. package/dist/components/Modal/src/Modal.props.d.ts +66 -0
  192. package/dist/components/Modal/src/Modal.props.js +65 -0
  193. package/dist/components/Modal/src/Modal.styles.d.ts +29 -0
  194. package/dist/components/Nav/src/Nav.d.ts +66 -0
  195. package/dist/components/Nav/src/Nav.js +750 -0
  196. package/dist/components/Nav/src/Nav.props.d.ts +8 -0
  197. package/dist/components/Nav/src/Nav.props.js +13 -0
  198. package/dist/components/Nav/src/Nav.styles.d.ts +10 -0
  199. package/dist/components/NavDropdownColumn/src/NavDropdownColumn.d.ts +17 -0
  200. package/dist/components/NavDropdownColumn/src/NavDropdownColumn.js +170 -0
  201. package/dist/components/NavDropdownColumn/src/NavDropdownColumn.styles.d.ts +1 -0
  202. package/dist/components/NavLink/src/NavLink.d.ts +191 -0
  203. package/dist/components/NavLink/src/NavLink.js +1916 -0
  204. package/dist/components/NavLink/src/NavLink.props.d.ts +38 -0
  205. package/dist/components/NavLink/src/NavLink.props.js +58 -0
  206. package/dist/components/NavLink/src/NavLink.styles.d.ts +22 -0
  207. package/dist/components/Stack/src/Stack.d.ts +30 -0
  208. package/dist/components/Stack/src/Stack.js +300 -0
  209. package/dist/components/Stack/src/Stack.props.d.ts +24 -0
  210. package/dist/components/Stack/src/Stack.props.js +53 -0
  211. package/dist/components/Stack/src/Stack.styles.d.ts +2 -0
  212. package/dist/components/Text/src/Text.d.ts +32 -0
  213. package/dist/components/Text/src/Text.js +327 -0
  214. package/dist/components/Text/src/Text.props.d.ts +23 -0
  215. package/dist/components/Text/src/Text.props.js +52 -0
  216. package/dist/components/Text/src/Text.styles.d.ts +2 -0
  217. package/dist/playground/types.d.ts +29 -0
  218. package/dist/playground-manifest.d.ts +6 -0
  219. package/dist/playground-manifest.js +556 -0
  220. package/dist/react/Background.d.ts +6 -0
  221. package/dist/react/Background.js +13 -0
  222. package/dist/react/Badge.d.ts +6 -0
  223. package/dist/react/Badge.js +13 -0
  224. package/dist/react/Button.d.ts +6 -0
  225. package/dist/react/Button.js +13 -0
  226. package/dist/react/Card.d.ts +6 -0
  227. package/dist/react/Card.js +13 -0
  228. package/dist/react/CodeBlock.d.ts +6 -0
  229. package/dist/react/CodeBlock.js +13 -0
  230. package/dist/react/Container.d.ts +6 -0
  231. package/dist/react/Container.js +13 -0
  232. package/dist/react/Divider.d.ts +6 -0
  233. package/dist/react/Divider.js +13 -0
  234. package/dist/react/FeatureItem.d.ts +6 -0
  235. package/dist/react/FeatureItem.js +13 -0
  236. package/dist/react/FeatureTabs.d.ts +6 -0
  237. package/dist/react/FeatureTabs.js +13 -0
  238. package/dist/react/Footer.d.ts +6 -0
  239. package/dist/react/Footer.js +13 -0
  240. package/dist/react/FormBlock.d.ts +6 -0
  241. package/dist/react/FormBlock.js +13 -0
  242. package/dist/react/Grid.d.ts +6 -0
  243. package/dist/react/Grid.js +13 -0
  244. package/dist/react/Heading.d.ts +6 -0
  245. package/dist/react/Heading.js +13 -0
  246. package/dist/react/HeadingBlock.d.ts +6 -0
  247. package/dist/react/HeadingBlock.js +13 -0
  248. package/dist/react/Hero.d.ts +6 -0
  249. package/dist/react/Hero.js +13 -0
  250. package/dist/react/Icon.d.ts +6 -0
  251. package/dist/react/Icon.js +13 -0
  252. package/dist/react/Image.d.ts +8 -0
  253. package/dist/react/Image.js +13 -0
  254. package/dist/react/Input.d.ts +8 -0
  255. package/dist/react/Input.js +13 -0
  256. package/dist/react/Modal.d.ts +10 -0
  257. package/dist/react/Modal.js +17 -0
  258. package/dist/react/Nav.d.ts +6 -0
  259. package/dist/react/Nav.js +13 -0
  260. package/dist/react/NavDropdownColumn.d.ts +6 -0
  261. package/dist/react/NavDropdownColumn.js +13 -0
  262. package/dist/react/NavLink.d.ts +8 -0
  263. package/dist/react/NavLink.js +13 -0
  264. package/dist/react/Stack.d.ts +6 -0
  265. package/dist/react/Stack.js +13 -0
  266. package/dist/react/Text.d.ts +6 -0
  267. package/dist/react/Text.js +13 -0
  268. package/dist/react/index.d.ts +24 -0
  269. package/dist/react/index.js +25 -0
  270. package/dist/surface/surface.props.js +33 -0
  271. package/package.json +352 -4
@@ -0,0 +1,1916 @@
1
+ var __legacyDecorateClassTS = function(decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
4
+ r = Reflect.decorate(decorators, target, key, desc);
5
+ else
6
+ for (var i = decorators.length - 1;i >= 0; i--)
7
+ if (d = decorators[i])
8
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
9
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
10
+ };
11
+
12
+ // components/NavLink/src/NavLink.ts
13
+ import"../../Icon/src/Icon.js";
14
+ import"../../NavDropdownColumn/src/NavDropdownColumn.js";
15
+
16
+ // common/Base/Base.ts
17
+ import { html, LitElement } from "lit";
18
+
19
+ // common/helpers/define-element.ts
20
+ var defineElement = (tag, ctor) => {
21
+ if (typeof customElements === "undefined")
22
+ return;
23
+ if (!customElements.get(tag))
24
+ customElements.define(tag, ctor);
25
+ };
26
+
27
+ // common/Base/Base.css
28
+ import { css } from "lit";
29
+ var styles = css`/* Base reset in @layer base ensures it comes before utilities in Tailwind v4 cascade
30
+ This prevents the reset from overriding component utility classes */
31
+ @layer base {
32
+ :host {
33
+ display: block;
34
+ box-sizing: border-box;
35
+ line-height: 1.5;
36
+ -webkit-text-size-adjust: 100%;
37
+ tab-size: 4;
38
+ font-family: var(
39
+ --default-font-family,
40
+ var(--font-sans, ui-sans-serif, system-ui, sans-serif)
41
+ );
42
+ }
43
+
44
+ *,
45
+ *::before,
46
+ *::after {
47
+ box-sizing: inherit;
48
+ margin: 0;
49
+ padding: 0;
50
+ border: 0 solid;
51
+ }
52
+
53
+ :host h1,
54
+ :host h2,
55
+ :host h3,
56
+ :host h4,
57
+ :host h5,
58
+ :host h6 {
59
+ font-size: inherit;
60
+ font-weight: inherit;
61
+ margin: 0;
62
+ padding: 0;
63
+ }
64
+ }
65
+ `;
66
+ var Base_default = styles;
67
+
68
+ // common/Base/Base.ts
69
+ class Base extends LitElement {
70
+ static styles = Base_default;
71
+ updateTheme(changedProperties, surface) {
72
+ if (changedProperties.has("surface")) {
73
+ if (surface) {
74
+ this.setAttribute("data-theme", surface);
75
+ } else {
76
+ this.removeAttribute("data-theme");
77
+ }
78
+ }
79
+ }
80
+ emit(name, detail, options = {}) {
81
+ return this.dispatchEvent(new CustomEvent(name, {
82
+ detail,
83
+ bubbles: true,
84
+ composed: true,
85
+ cancelable: options.cancelable ?? false
86
+ }));
87
+ }
88
+ render() {
89
+ return html`<slot></slot>`;
90
+ }
91
+ }
92
+ defineElement("dsgn-base", Base);
93
+
94
+ // common/helpers/layout-change.ts
95
+ var listenersByTarget = new Map;
96
+ var observer;
97
+ var lastDocumentWidth;
98
+ var handleEntries = (entries) => {
99
+ const notify = new Set;
100
+ for (const entry of entries) {
101
+ if (entry.target !== document.documentElement) {
102
+ for (const listener of listenersByTarget.get(entry.target) ?? []) {
103
+ notify.add(listener);
104
+ }
105
+ continue;
106
+ }
107
+ const { width } = entry.contentRect;
108
+ if (width === lastDocumentWidth) {
109
+ continue;
110
+ }
111
+ lastDocumentWidth = width;
112
+ for (const listeners of listenersByTarget.values()) {
113
+ for (const listener of listeners) {
114
+ notify.add(listener);
115
+ }
116
+ }
117
+ }
118
+ for (const listener of notify) {
119
+ listener();
120
+ }
121
+ };
122
+ var observeLayoutChanges = (target, listener) => {
123
+ if (typeof ResizeObserver === "undefined" || typeof document === "undefined") {
124
+ return () => {};
125
+ }
126
+ if (!observer) {
127
+ lastDocumentWidth = undefined;
128
+ observer = new ResizeObserver(handleEntries);
129
+ observer.observe(document.documentElement);
130
+ }
131
+ let listeners = listenersByTarget.get(target);
132
+ if (!listeners) {
133
+ listeners = new Set;
134
+ listenersByTarget.set(target, listeners);
135
+ observer.observe(target);
136
+ }
137
+ listeners.add(listener);
138
+ return () => {
139
+ const current = listenersByTarget.get(target);
140
+ if (!current?.delete(listener)) {
141
+ return;
142
+ }
143
+ if (current.size === 0) {
144
+ listenersByTarget.delete(target);
145
+ observer?.unobserve(target);
146
+ }
147
+ if (listenersByTarget.size === 0) {
148
+ observer?.disconnect();
149
+ observer = undefined;
150
+ lastDocumentWidth = undefined;
151
+ }
152
+ };
153
+ };
154
+
155
+ // common/controllers/LayoutChangeController.ts
156
+ class LayoutChangeController {
157
+ constructor(host, onLayoutChange) {
158
+ this.wantsUpdates = false;
159
+ this.host = host;
160
+ this.onLayoutChange = onLayoutChange;
161
+ host.addController(this);
162
+ }
163
+ observe() {
164
+ this.wantsUpdates = true;
165
+ this.subscribe();
166
+ }
167
+ unobserve() {
168
+ this.wantsUpdates = false;
169
+ this.clear();
170
+ }
171
+ hostConnected() {
172
+ if (this.wantsUpdates) {
173
+ this.subscribe();
174
+ }
175
+ }
176
+ hostDisconnected() {
177
+ this.clear();
178
+ }
179
+ subscribe() {
180
+ if (this.unsubscribe) {
181
+ return;
182
+ }
183
+ this.unsubscribe = observeLayoutChanges(this.host, this.onLayoutChange);
184
+ }
185
+ clear() {
186
+ this.unsubscribe?.();
187
+ this.unsubscribe = undefined;
188
+ }
189
+ }
190
+
191
+ // common/helpers/enum-validator.ts
192
+ var enumValidator = (propName, enumSet, candidateValue) => {
193
+ if (!enumSet.has(candidateValue)) {
194
+ throw new Error(`Invalid prop ${propName} of value ${candidateValue}. Expected one of: ${Array.from(enumSet).join(", ")}`);
195
+ }
196
+ };
197
+
198
+ // common/helpers/enum-creator.ts
199
+ var enumCreator = (acceptableValues, propName, type, other = {}) => {
200
+ const acceptableValuesSet = new Set(acceptableValues);
201
+ return {
202
+ type,
203
+ hasChanged(newValue, oldValue) {
204
+ if (newValue !== oldValue) {
205
+ enumValidator(propName, acceptableValuesSet, newValue);
206
+ return true;
207
+ }
208
+ return false;
209
+ },
210
+ ...other
211
+ };
212
+ };
213
+
214
+ // common/props/surface/surface.props.ts
215
+ var surfaceValues = {
216
+ LIGHT: "light",
217
+ DARK: "dark"
218
+ };
219
+ var surfaceProps = enumCreator(Object.values(surfaceValues), "surface", String, { reflect: true });
220
+
221
+ // components/NavLink/src/NavLink.ts
222
+ import { html as html2, nothing } from "lit";
223
+ import { property, state } from "lit/decorators.js";
224
+
225
+ // common/controllers/BreakpointController.ts
226
+ import {
227
+ breakpointXs,
228
+ breakpointSm,
229
+ breakpointMd,
230
+ breakpointLg,
231
+ breakpointXl,
232
+ breakpoint2xl
233
+ } from "@ds-gn/tokens";
234
+ var breakpointConfigs = [
235
+ { name: "xs", cssVarName: "--breakpoint-xs" },
236
+ { name: "sm", cssVarName: "--breakpoint-sm" },
237
+ { name: "md", cssVarName: "--breakpoint-md" },
238
+ { name: "lg", cssVarName: "--breakpoint-lg" },
239
+ { name: "xl", cssVarName: "--breakpoint-xl" },
240
+ { name: "xxl", cssVarName: "--breakpoint-2xl" }
241
+ ];
242
+
243
+ class BreakpointRegistry {
244
+ static instance;
245
+ constructor() {
246
+ this.values = new Map([
247
+ ["xs", breakpointXs],
248
+ ["sm", breakpointSm],
249
+ ["md", breakpointMd],
250
+ ["lg", breakpointLg],
251
+ ["xl", breakpointXl],
252
+ ["xxl", breakpoint2xl]
253
+ ]);
254
+ }
255
+ static getInstance() {
256
+ if (!BreakpointRegistry.instance) {
257
+ BreakpointRegistry.instance = new BreakpointRegistry;
258
+ }
259
+ return BreakpointRegistry.instance;
260
+ }
261
+ getValue(breakpoint) {
262
+ return this.values.get(breakpoint) || "0px";
263
+ }
264
+ getAllValues() {
265
+ return new Map(this.values);
266
+ }
267
+ }
268
+
269
+ class BreakpointController {
270
+ constructor(host) {
271
+ this.registry = BreakpointRegistry.getInstance();
272
+ this.mediaQueryLists = new Map;
273
+ this._currentBreakpoint = "xs";
274
+ this._initialized = false;
275
+ this.handleBreakpointChange = (event) => {
276
+ if (event.matches) {
277
+ for (const [breakpoint, mql] of this.mediaQueryLists) {
278
+ if (mql === event.target) {
279
+ this._currentBreakpoint = breakpoint;
280
+ if ("currentBreakpoint" in this.host) {
281
+ this.host.currentBreakpoint = this._currentBreakpoint;
282
+ }
283
+ this.host.requestUpdate();
284
+ console.log("Breakpoint changed to:", breakpoint);
285
+ break;
286
+ }
287
+ }
288
+ }
289
+ };
290
+ this.host = host;
291
+ host.addController(this);
292
+ }
293
+ hostConnected() {
294
+ this.initializeBreakpoints();
295
+ }
296
+ initializeBreakpoints() {
297
+ if (this._initialized)
298
+ return;
299
+ this._initialized = true;
300
+ const breakpoints = Array.from(this.registry.getAllValues().entries());
301
+ for (let i = 0;i < breakpoints.length; i++) {
302
+ const [name, minWidth] = breakpoints[i];
303
+ const nextBreakpoint = breakpoints[i + 1];
304
+ let query = `(min-width: ${minWidth})`;
305
+ if (nextBreakpoint) {
306
+ const maxWidth = parseInt(nextBreakpoint[1]) - 1;
307
+ query += ` and (max-width: ${maxWidth}px)`;
308
+ }
309
+ const mql = window.matchMedia(query);
310
+ this.mediaQueryLists.set(name, mql);
311
+ mql.addEventListener("change", this.handleBreakpointChange);
312
+ if (mql.matches) {
313
+ this._currentBreakpoint = name;
314
+ }
315
+ }
316
+ if ("currentBreakpoint" in this.host) {
317
+ this.host.currentBreakpoint = this._currentBreakpoint;
318
+ }
319
+ console.log("BreakpointController initialized, currentz:", this._currentBreakpoint);
320
+ }
321
+ hostDisconnected() {
322
+ this.mediaQueryLists.forEach((mql) => {
323
+ mql.removeEventListener("change", this.handleBreakpointChange);
324
+ });
325
+ this.mediaQueryLists.clear();
326
+ this._initialized = false;
327
+ console.log("BreakpointController disconnected");
328
+ }
329
+ get current() {
330
+ return this._currentBreakpoint;
331
+ }
332
+ is(breakpoint) {
333
+ return this._currentBreakpoint === breakpoint;
334
+ }
335
+ isAtLeast(breakpoint) {
336
+ const currentIndex = breakpointConfigs.findIndex((c) => c.name === this._currentBreakpoint);
337
+ const targetIndex = breakpointConfigs.findIndex((c) => c.name === breakpoint);
338
+ return currentIndex >= targetIndex;
339
+ }
340
+ isAtMost(breakpoint) {
341
+ const currentIndex = breakpointConfigs.findIndex((c) => c.name === this._currentBreakpoint);
342
+ const targetIndex = breakpointConfigs.findIndex((c) => c.name === breakpoint);
343
+ return currentIndex <= targetIndex;
344
+ }
345
+ isBetween(min, max) {
346
+ return this.isAtLeast(min) && this.isAtMost(max);
347
+ }
348
+ getBreakpointValue(breakpoint) {
349
+ return this.registry.getValue(breakpoint);
350
+ }
351
+ }
352
+
353
+ // components/Icon/src/icons/arrow-right.ts
354
+ import { svg } from "lit";
355
+ var arrowRight = svg`<path d="M5 12h14" /><path d="m12 5 7 7-7 7" />`;
356
+ // components/Icon/src/icons/chevron-down.ts
357
+ import { svg as svg2 } from "lit";
358
+ var chevronDown = svg2`<path d="m6 9 6 6 6-6" />`;
359
+ // components/NavLink/src/NavLink.css
360
+ import { css as css2 } from "lit";
361
+ var styles2 = css2`/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */
362
+ @layer properties;
363
+ @layer theme {
364
+ :root, :host {
365
+ --font-sans: ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',
366
+ 'Noto Color Emoji';
367
+ --color-orange-200: oklch(90.1% 0.076 70.697);
368
+ --color-orange-300: oklch(83.7% 0.128 66.29);
369
+ --spacing: 0.25rem;
370
+ --text-xs: 0.75rem;
371
+ --text-xs--line-height: calc(1 / 0.75);
372
+ --text-sm: 0.875rem;
373
+ --text-sm--line-height: calc(1.25 / 0.875);
374
+ --font-weight-normal: 400;
375
+ --font-weight-medium: 500;
376
+ --font-weight-semibold: 600;
377
+ --leading-snug: 1.375;
378
+ --radius-lg: 0.5rem;
379
+ --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
380
+ --default-transition-duration: 150ms;
381
+ --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
382
+ --color-accent: inherit;
383
+ --color-nav-link-dropdown-text-hover: inherit;
384
+ --color-outline: inherit;
385
+ --color-page: inherit;
386
+ --color-surface-default: inherit;
387
+ --color-surface-elevated: inherit;
388
+ --color-text-primary: inherit;
389
+ --color-text-tertiary: inherit;
390
+ --animate-border-sweep: border-sweep 900ms cubic-bezier(0.4, 0, 0.2, 1);
391
+ }
392
+ }
393
+ @layer utilities {
394
+ .collapse {
395
+ visibility: collapse;
396
+ }
397
+ .visible {
398
+ visibility: visible;
399
+ }
400
+ .absolute {
401
+ position: absolute;
402
+ }
403
+ .relative {
404
+ position: relative;
405
+ }
406
+ .static {
407
+ position: static;
408
+ }
409
+ .top-full {
410
+ top: 100%;
411
+ }
412
+ .right-auto {
413
+ right: auto;
414
+ }
415
+ .left-0 {
416
+ left: calc(var(--spacing) * 0);
417
+ }
418
+ .z-50 {
419
+ z-index: 50;
420
+ }
421
+ .col-span-full {
422
+ grid-column: 1 / -1;
423
+ }
424
+ .-mx-2\\.5 {
425
+ margin-inline: calc(var(--spacing) * -2.5);
426
+ }
427
+ .ml-1\\.5 {
428
+ margin-left: calc(var(--spacing) * 1.5);
429
+ }
430
+ .contents {
431
+ display: contents;
432
+ }
433
+ .flex {
434
+ display: flex;
435
+ }
436
+ .grid {
437
+ display: grid;
438
+ }
439
+ .hidden {
440
+ display: none;
441
+ }
442
+ .inline {
443
+ display: inline;
444
+ }
445
+ .inline-block {
446
+ display: inline-block;
447
+ }
448
+ .inline-flex {
449
+ display: inline-flex;
450
+ }
451
+ .w-80 {
452
+ width: calc(var(--spacing) * 80);
453
+ }
454
+ .w-\\[36rem\\] {
455
+ width: 36rem;
456
+ }
457
+ .w-\\[54rem\\] {
458
+ width: 54rem;
459
+ }
460
+ .w-full {
461
+ width: 100%;
462
+ }
463
+ .max-w-\\[calc\\(100vw-2rem\\)\\] {
464
+ max-width: calc(100vw - 2rem);
465
+ }
466
+ .min-w-0 {
467
+ min-width: calc(var(--spacing) * 0);
468
+ }
469
+ .flex-none {
470
+ flex: none;
471
+ }
472
+ .rotate-180 {
473
+ rotate: 180deg;
474
+ }
475
+ .cursor-pointer {
476
+ cursor: pointer;
477
+ }
478
+ .grid-cols-\\[repeat\\(auto-fit\\,minmax\\(15rem\\,1fr\\)\\)\\] {
479
+ grid-template-columns: repeat(auto-fit,minmax(15rem,1fr));
480
+ }
481
+ .flex-col {
482
+ flex-direction: column;
483
+ }
484
+ .items-center {
485
+ align-items: center;
486
+ }
487
+ .items-start {
488
+ align-items: flex-start;
489
+ }
490
+ .gap-0\\.5 {
491
+ gap: calc(var(--spacing) * 0.5);
492
+ }
493
+ .gap-1 {
494
+ gap: calc(var(--spacing) * 1);
495
+ }
496
+ .gap-2 {
497
+ gap: calc(var(--spacing) * 2);
498
+ }
499
+ .rounded-full {
500
+ border-radius: calc(infinity * 1px);
501
+ }
502
+ .rounded-lg {
503
+ border-radius: var(--radius-lg);
504
+ }
505
+ .border {
506
+ border-style: var(--tw-border-style);
507
+ border-width: 1px;
508
+ }
509
+ .border-0 {
510
+ border-style: var(--tw-border-style);
511
+ border-width: 0px;
512
+ }
513
+ .border-\\[color-mix\\(in_oklab\\,var\\(--color-accent\\)_45\\%\\,transparent\\)\\] {
514
+ border-color: color-mix(in srgb,inherit 45%,transparent);
515
+ @supports (color: color-mix(in lab, red, red)) {
516
+ border-color: color-mix(in oklab,var(--color-accent) 45%,transparent);
517
+ }
518
+ }
519
+ .border-outline {
520
+ border-color: var(--color-outline);
521
+ }
522
+ .border-transparent {
523
+ border-color: transparent;
524
+ }
525
+ .bg-page {
526
+ background-color: var(--color-page);
527
+ }
528
+ .bg-surface-elevated {
529
+ background-color: var(--color-surface-elevated);
530
+ }
531
+ .bg-transparent {
532
+ background-color: transparent;
533
+ }
534
+ .p-4 {
535
+ padding: calc(var(--spacing) * 4);
536
+ }
537
+ .px-2\\.5 {
538
+ padding-inline: calc(var(--spacing) * 2.5);
539
+ }
540
+ .px-4 {
541
+ padding-inline: calc(var(--spacing) * 4);
542
+ }
543
+ .py-1 {
544
+ padding-block: calc(var(--spacing) * 1);
545
+ }
546
+ .py-2\\.5 {
547
+ padding-block: calc(var(--spacing) * 2.5);
548
+ }
549
+ .py-\\[7px\\] {
550
+ padding-block: 7px;
551
+ }
552
+ .pt-2 {
553
+ padding-top: calc(var(--spacing) * 2);
554
+ }
555
+ .text-left {
556
+ text-align: left;
557
+ }
558
+ .font-sans {
559
+ font-family: var(--font-sans);
560
+ }
561
+ .text-sm {
562
+ font-size: var(--text-sm);
563
+ line-height: var(--tw-leading, var(--text-sm--line-height));
564
+ }
565
+ .text-xs {
566
+ font-size: var(--text-xs);
567
+ line-height: var(--tw-leading, var(--text-xs--line-height));
568
+ }
569
+ .text-\\[13px\\] {
570
+ font-size: 13px;
571
+ }
572
+ .leading-snug {
573
+ --tw-leading: var(--leading-snug);
574
+ line-height: var(--leading-snug);
575
+ }
576
+ .font-medium {
577
+ --tw-font-weight: var(--font-weight-medium);
578
+ font-weight: var(--font-weight-medium);
579
+ }
580
+ .font-normal {
581
+ --tw-font-weight: var(--font-weight-normal);
582
+ font-weight: var(--font-weight-normal);
583
+ }
584
+ .font-semibold {
585
+ --tw-font-weight: var(--font-weight-semibold);
586
+ font-weight: var(--font-weight-semibold);
587
+ }
588
+ .text-\\[color-mix\\(in_oklab\\,var\\(--color-orange-300\\)_75\\%\\,transparent\\)\\] {
589
+ color: color-mix(in srgb,oklch(83.7% 0.128 66.29) 75%,transparent);
590
+ @supports (color: color-mix(in lab, red, red)) {
591
+ color: color-mix(in oklab,var(--color-orange-300) 75%,transparent);
592
+ }
593
+ }
594
+ .text-nav-link-dropdown-text-hover {
595
+ color: var(--color-nav-link-dropdown-text-hover);
596
+ }
597
+ .text-text-primary {
598
+ color: var(--color-text-primary);
599
+ }
600
+ .text-text-tertiary {
601
+ color: var(--color-text-tertiary);
602
+ }
603
+ .no-underline {
604
+ text-decoration-line: none;
605
+ }
606
+ .shadow {
607
+ --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
608
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
609
+ }
610
+ .shadow-lg {
611
+ --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
612
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
613
+ }
614
+ .ring {
615
+ --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
616
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
617
+ }
618
+ .drop-shadow-\\[0_0_18px_color-mix\\(in_oklab\\,_var\\(--color-accent\\)_14\\.625\\%\\,_transparent\\)\\] {
619
+ --tw-drop-shadow-size: drop-shadow(0 0 18px var(--tw-drop-shadow-color, color-mix(in srgb, inherit 14.625%, transparent)));
620
+ @supports (color: color-mix(in lab, red, red)) {
621
+ --tw-drop-shadow-size: drop-shadow(0 0 18px var(--tw-drop-shadow-color, color-mix(in oklab, var(--color-accent) 14.625%, transparent)));
622
+ }
623
+ --tw-drop-shadow: var(--tw-drop-shadow-size);
624
+ filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
625
+ }
626
+ .transition {
627
+ transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, content-visibility, overlay, pointer-events;
628
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
629
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
630
+ }
631
+ .transition-transform {
632
+ transition-property: transform, translate, scale, rotate;
633
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
634
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
635
+ }
636
+ .duration-150 {
637
+ --tw-duration: 150ms;
638
+ transition-duration: 150ms;
639
+ }
640
+ .duration-200 {
641
+ --tw-duration: 200ms;
642
+ transition-duration: 200ms;
643
+ }
644
+ .\\[background\\:linear-gradient\\(var\\(--color-surface-elevated\\)\\,var\\(--color-surface-elevated\\)\\)_padding-box\\,linear-gradient\\(120deg\\,color-mix\\(in_oklab\\,var\\(--color-accent\\)_45\\%\\,transparent\\)\\,color-mix\\(in_oklab\\,var\\(--color-accent\\)_45\\%\\,transparent\\)\\)_border-box\\] {
645
+ background: linear-gradient(var(--color-surface-elevated),var(--color-surface-elevated)) padding-box,linear-gradient(120deg,color-mix(in srgb,inherit 45%,transparent),color-mix(in srgb,inherit 45%,transparent)) border-box;
646
+ @supports (color: color-mix(in lab, red, red)) {
647
+ background: linear-gradient(var(--color-surface-elevated),var(--color-surface-elevated)) padding-box,linear-gradient(120deg,color-mix(in oklab,var(--color-accent) 45%,transparent),color-mix(in oklab,var(--color-accent) 45%,transparent)) border-box;
648
+ }
649
+ }
650
+ .group-hover\\:block {
651
+ &:is(:where(.group):hover *) {
652
+ @media (hover: hover) {
653
+ display: block;
654
+ }
655
+ }
656
+ }
657
+ .group-hover\\/nav-link\\:-translate-x-px {
658
+ &:is(:where(.group\\/nav-link):hover *) {
659
+ @media (hover: hover) {
660
+ --tw-translate-x: -1px;
661
+ translate: var(--tw-translate-x) var(--tw-translate-y);
662
+ }
663
+ }
664
+ }
665
+ .group-hover\\/nav-link\\:translate-x-\\[3px\\] {
666
+ &:is(:where(.group\\/nav-link):hover *) {
667
+ @media (hover: hover) {
668
+ --tw-translate-x: 3px;
669
+ translate: var(--tw-translate-x) var(--tw-translate-y);
670
+ }
671
+ }
672
+ }
673
+ .group-hover\\/nav-link\\:text-\\[var\\(--color-orange-200\\)\\] {
674
+ &:is(:where(.group\\/nav-link):hover *) {
675
+ @media (hover: hover) {
676
+ color: var(--color-orange-200);
677
+ }
678
+ }
679
+ }
680
+ .group-hover\\/nav-link\\:text-\\[var\\(--color-orange-300\\)\\] {
681
+ &:is(:where(.group\\/nav-link):hover *) {
682
+ @media (hover: hover) {
683
+ color: var(--color-orange-300);
684
+ }
685
+ }
686
+ }
687
+ .group-hover\\/nav-link\\:text-nav-link-dropdown-text-hover {
688
+ &:is(:where(.group\\/nav-link):hover *) {
689
+ @media (hover: hover) {
690
+ color: var(--color-nav-link-dropdown-text-hover);
691
+ }
692
+ }
693
+ }
694
+ .group-hover\\/nav-link\\:text-text-primary {
695
+ &:is(:where(.group\\/nav-link):hover *) {
696
+ @media (hover: hover) {
697
+ color: var(--color-text-primary);
698
+ }
699
+ }
700
+ }
701
+ .hover\\:scale-\\[0\\.98\\] {
702
+ &:hover {
703
+ @media (hover: hover) {
704
+ scale: 0.98;
705
+ }
706
+ }
707
+ }
708
+ .hover\\:animate-border-sweep {
709
+ &:hover {
710
+ @media (hover: hover) {
711
+ animation: var(--animate-border-sweep);
712
+ }
713
+ }
714
+ }
715
+ .hover\\:border-\\[color-mix\\(in_oklab\\,var\\(--color-accent\\)_60\\%\\,transparent\\)\\] {
716
+ &:hover {
717
+ @media (hover: hover) {
718
+ border-color: color-mix(in srgb,inherit 60%,transparent);
719
+ @supports (color: color-mix(in lab, red, red)) {
720
+ border-color: color-mix(in oklab,var(--color-accent) 60%,transparent);
721
+ }
722
+ }
723
+ }
724
+ }
725
+ .hover\\:border-\\[color-mix\\(in_oklab\\,var\\(--color-accent\\)_70\\%\\,transparent\\)\\] {
726
+ &:hover {
727
+ @media (hover: hover) {
728
+ border-color: color-mix(in srgb,inherit 70%,transparent);
729
+ @supports (color: color-mix(in lab, red, red)) {
730
+ border-color: color-mix(in oklab,var(--color-accent) 70%,transparent);
731
+ }
732
+ }
733
+ }
734
+ }
735
+ .hover\\:bg-surface-default {
736
+ &:hover {
737
+ @media (hover: hover) {
738
+ background-color: var(--color-surface-default);
739
+ }
740
+ }
741
+ }
742
+ .hover\\:text-\\[var\\(--color-orange-200\\)\\] {
743
+ &:hover {
744
+ @media (hover: hover) {
745
+ color: var(--color-orange-200);
746
+ }
747
+ }
748
+ }
749
+ .hover\\:text-nav-link-dropdown-text-hover {
750
+ &:hover {
751
+ @media (hover: hover) {
752
+ color: var(--color-nav-link-dropdown-text-hover);
753
+ }
754
+ }
755
+ }
756
+ .hover\\:text-text-primary {
757
+ &:hover {
758
+ @media (hover: hover) {
759
+ color: var(--color-text-primary);
760
+ }
761
+ }
762
+ }
763
+ .hover\\:shadow-\\[inset_0_1px_0_rgba\\(255\\,255\\,255\\,0\\.07\\)\\,0_0_0_3px_color-mix\\(in_oklab\\,var\\(--color-accent\\)_12\\%\\,transparent\\)\\] {
764
+ &:hover {
765
+ @media (hover: hover) {
766
+ --tw-shadow: inset 0 1px 0 var(--tw-shadow-color, rgba(255,255,255,0.07)), 0 0 0 3px var(--tw-shadow-color, color-mix(in srgb,inherit 12%,transparent));
767
+ @supports (color: color-mix(in lab, red, red)) {
768
+ --tw-shadow: inset 0 1px 0 var(--tw-shadow-color, rgba(255,255,255,0.07)), 0 0 0 3px var(--tw-shadow-color, color-mix(in oklab,var(--color-accent) 12%,transparent));
769
+ }
770
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
771
+ }
772
+ }
773
+ }
774
+ .hover\\:shadow-\\[inset_0_1px_3px_rgba\\(0\\,0\\,0\\,0\\.35\\)\\] {
775
+ &:hover {
776
+ @media (hover: hover) {
777
+ --tw-shadow: inset 0 1px 3px var(--tw-shadow-color, rgba(0,0,0,0.35));
778
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
779
+ }
780
+ }
781
+ }
782
+ .hover\\:\\[background\\:linear-gradient\\(var\\(--color-surface-elevated\\)\\,var\\(--color-surface-elevated\\)\\)_padding-box\\,conic-gradient\\(from_var\\(--dsgn-border-sweep-angle\\)\\,color-mix\\(in_oklab\\,var\\(--color-accent\\)_25\\%\\,transparent\\)_0\\%\\,var\\(--color-accent\\)_18\\%\\,color-mix\\(in_oklab\\,var\\(--color-accent\\)_25\\%\\,transparent\\)_40\\%\\,color-mix\\(in_oklab\\,var\\(--color-accent\\)_25\\%\\,transparent\\)_100\\%\\)_border-box\\] {
783
+ &:hover {
784
+ @media (hover: hover) {
785
+ background: linear-gradient(var(--color-surface-elevated),var(--color-surface-elevated)) padding-box,conic-gradient(from var(--dsgn-border-sweep-angle),color-mix(in srgb,inherit 25%,transparent) 0%,var(--color-accent) 18%,color-mix(in srgb,inherit 25%,transparent) 40%,color-mix(in srgb,inherit 25%,transparent) 100%) border-box;
786
+ @supports (color: color-mix(in lab, red, red)) {
787
+ background: linear-gradient(var(--color-surface-elevated),var(--color-surface-elevated)) padding-box,conic-gradient(from var(--dsgn-border-sweep-angle),color-mix(in oklab,var(--color-accent) 25%,transparent) 0%,var(--color-accent) 18%,color-mix(in oklab,var(--color-accent) 25%,transparent) 40%,color-mix(in oklab,var(--color-accent) 25%,transparent) 100%) border-box;
788
+ }
789
+ }
790
+ }
791
+ }
792
+ .hover\\:\\[background\\:radial-gradient\\(ellipse_closest-side\\,_color-mix\\(in_oklab\\,_var\\(--color-accent\\)_26\\%\\,_transparent\\)_0\\%\\,_color-mix\\(in_oklab\\,_var\\(--color-accent\\)_10\\%\\,_transparent\\)_55\\%\\,_transparent_100\\%\\)\\] {
793
+ &:hover {
794
+ @media (hover: hover) {
795
+ background: radial-gradient(ellipse closest-side, color-mix(in srgb, inherit 26%, transparent) 0%, color-mix(in srgb, inherit 10%, transparent) 55%, transparent 100%);
796
+ @supports (color: color-mix(in lab, red, red)) {
797
+ background: radial-gradient(ellipse closest-side, color-mix(in oklab, var(--color-accent) 26%, transparent) 0%, color-mix(in oklab, var(--color-accent) 10%, transparent) 55%, transparent 100%);
798
+ }
799
+ }
800
+ }
801
+ }
802
+ .hover\\:\\[background\\:radial-gradient\\(ellipse_closest-side\\,_color-mix\\(in_oklab\\,_var\\(--color-accent\\)_32\\.5\\%\\,_transparent\\)_0\\%\\,_color-mix\\(in_oklab\\,_var\\(--color-accent\\)_12\\.5\\%\\,_transparent\\)_55\\%\\,_transparent_100\\%\\)\\] {
803
+ &:hover {
804
+ @media (hover: hover) {
805
+ background: radial-gradient(ellipse closest-side, color-mix(in srgb, inherit 32.5%, transparent) 0%, color-mix(in srgb, inherit 12.5%, transparent) 55%, transparent 100%);
806
+ @supports (color: color-mix(in lab, red, red)) {
807
+ background: radial-gradient(ellipse closest-side, color-mix(in oklab, var(--color-accent) 32.5%, transparent) 0%, color-mix(in oklab, var(--color-accent) 12.5%, transparent) 55%, transparent 100%);
808
+ }
809
+ }
810
+ }
811
+ }
812
+ .focus-visible\\:outline-2 {
813
+ &:focus-visible {
814
+ outline-style: var(--tw-outline-style);
815
+ outline-width: 2px;
816
+ }
817
+ }
818
+ .focus-visible\\:outline-offset-2 {
819
+ &:focus-visible {
820
+ outline-offset: 2px;
821
+ }
822
+ }
823
+ .focus-visible\\:outline-accent {
824
+ &:focus-visible {
825
+ outline-color: var(--color-accent);
826
+ }
827
+ }
828
+ .active\\:scale-95 {
829
+ &:active {
830
+ --tw-scale-x: 95%;
831
+ --tw-scale-y: 95%;
832
+ --tw-scale-z: 95%;
833
+ scale: var(--tw-scale-x) var(--tw-scale-y);
834
+ }
835
+ }
836
+ .active\\:shadow-\\[inset_0_2px_5px_rgba\\(0\\,0\\,0\\,0\\.45\\)\\] {
837
+ &:active {
838
+ --tw-shadow: inset 0 2px 5px var(--tw-shadow-color, rgba(0,0,0,0.45));
839
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
840
+ }
841
+ }
842
+ .motion-reduce\\:transition-none {
843
+ @media (prefers-reduced-motion: reduce) {
844
+ transition-property: none;
845
+ }
846
+ }
847
+ .motion-reduce\\:hover\\:scale-100 {
848
+ @media (prefers-reduced-motion: reduce) {
849
+ &:hover {
850
+ @media (hover: hover) {
851
+ --tw-scale-x: 100%;
852
+ --tw-scale-y: 100%;
853
+ --tw-scale-z: 100%;
854
+ scale: var(--tw-scale-x) var(--tw-scale-y);
855
+ }
856
+ }
857
+ }
858
+ }
859
+ .motion-reduce\\:hover\\:animate-none {
860
+ @media (prefers-reduced-motion: reduce) {
861
+ &:hover {
862
+ @media (hover: hover) {
863
+ animation: none;
864
+ }
865
+ }
866
+ }
867
+ }
868
+ .motion-reduce\\:active\\:scale-100 {
869
+ @media (prefers-reduced-motion: reduce) {
870
+ &:active {
871
+ --tw-scale-x: 100%;
872
+ --tw-scale-y: 100%;
873
+ --tw-scale-z: 100%;
874
+ scale: var(--tw-scale-x) var(--tw-scale-y);
875
+ }
876
+ }
877
+ }
878
+ .max-sm\\:pointer-events-auto {
879
+ @media (width < 40rem) {
880
+ pointer-events: auto;
881
+ }
882
+ }
883
+ .max-sm\\:pointer-events-none {
884
+ @media (width < 40rem) {
885
+ pointer-events: none;
886
+ }
887
+ }
888
+ .max-sm\\:invisible {
889
+ @media (width < 40rem) {
890
+ visibility: hidden;
891
+ }
892
+ }
893
+ .max-sm\\:visible {
894
+ @media (width < 40rem) {
895
+ visibility: visible;
896
+ }
897
+ }
898
+ .max-sm\\:static {
899
+ @media (width < 40rem) {
900
+ position: static;
901
+ }
902
+ }
903
+ .max-sm\\:mx-0 {
904
+ @media (width < 40rem) {
905
+ margin-inline: calc(var(--spacing) * 0);
906
+ }
907
+ }
908
+ .max-sm\\:mt-1 {
909
+ @media (width < 40rem) {
910
+ margin-top: calc(var(--spacing) * 1);
911
+ }
912
+ }
913
+ .max-sm\\:mb-2 {
914
+ @media (width < 40rem) {
915
+ margin-bottom: calc(var(--spacing) * 2);
916
+ }
917
+ }
918
+ .max-sm\\:\\!flex {
919
+ @media (width < 40rem) {
920
+ display: flex !important;
921
+ }
922
+ }
923
+ .max-sm\\:\\!grid {
924
+ @media (width < 40rem) {
925
+ display: grid !important;
926
+ }
927
+ }
928
+ .max-sm\\:min-h-0 {
929
+ @media (width < 40rem) {
930
+ min-height: calc(var(--spacing) * 0);
931
+ }
932
+ }
933
+ .max-sm\\:w-full {
934
+ @media (width < 40rem) {
935
+ width: 100%;
936
+ }
937
+ }
938
+ .max-sm\\:max-w-none {
939
+ @media (width < 40rem) {
940
+ max-width: none;
941
+ }
942
+ }
943
+ .max-sm\\:min-w-full {
944
+ @media (width < 40rem) {
945
+ min-width: 100%;
946
+ }
947
+ }
948
+ .max-sm\\:grid-rows-\\[0fr\\] {
949
+ @media (width < 40rem) {
950
+ grid-template-rows: 0fr;
951
+ }
952
+ }
953
+ .max-sm\\:grid-rows-\\[1fr\\] {
954
+ @media (width < 40rem) {
955
+ grid-template-rows: 1fr;
956
+ }
957
+ }
958
+ .max-sm\\:flex-col {
959
+ @media (width < 40rem) {
960
+ flex-direction: column;
961
+ }
962
+ }
963
+ .max-sm\\:items-stretch {
964
+ @media (width < 40rem) {
965
+ align-items: stretch;
966
+ }
967
+ }
968
+ .max-sm\\:justify-between {
969
+ @media (width < 40rem) {
970
+ justify-content: space-between;
971
+ }
972
+ }
973
+ .max-sm\\:justify-center {
974
+ @media (width < 40rem) {
975
+ justify-content: center;
976
+ }
977
+ }
978
+ .max-sm\\:gap-1 {
979
+ @media (width < 40rem) {
980
+ gap: calc(var(--spacing) * 1);
981
+ }
982
+ }
983
+ .max-sm\\:gap-3 {
984
+ @media (width < 40rem) {
985
+ gap: calc(var(--spacing) * 3);
986
+ }
987
+ }
988
+ .max-sm\\:overflow-hidden {
989
+ @media (width < 40rem) {
990
+ overflow: hidden;
991
+ }
992
+ }
993
+ .max-sm\\:px-0 {
994
+ @media (width < 40rem) {
995
+ padding-inline: calc(var(--spacing) * 0);
996
+ }
997
+ }
998
+ .max-sm\\:pt-0 {
999
+ @media (width < 40rem) {
1000
+ padding-top: calc(var(--spacing) * 0);
1001
+ }
1002
+ }
1003
+ .max-sm\\:text-\\[var\\(--color-orange-200\\)\\] {
1004
+ @media (width < 40rem) {
1005
+ color: var(--color-orange-200);
1006
+ }
1007
+ }
1008
+ .max-sm\\:text-text-primary {
1009
+ @media (width < 40rem) {
1010
+ color: var(--color-text-primary);
1011
+ }
1012
+ }
1013
+ .max-sm\\:opacity-0 {
1014
+ @media (width < 40rem) {
1015
+ opacity: 0%;
1016
+ }
1017
+ }
1018
+ .max-sm\\:opacity-100 {
1019
+ @media (width < 40rem) {
1020
+ opacity: 100%;
1021
+ }
1022
+ }
1023
+ .max-sm\\:transition-\\[grid-template-rows\\,opacity\\,visibility\\] {
1024
+ @media (width < 40rem) {
1025
+ transition-property: grid-template-rows,opacity,visibility;
1026
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
1027
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
1028
+ }
1029
+ }
1030
+ .max-sm\\:duration-150 {
1031
+ @media (width < 40rem) {
1032
+ --tw-duration: 150ms;
1033
+ transition-duration: 150ms;
1034
+ }
1035
+ }
1036
+ .max-sm\\:ease-in-out {
1037
+ @media (width < 40rem) {
1038
+ --tw-ease: var(--ease-in-out);
1039
+ transition-timing-function: var(--ease-in-out);
1040
+ }
1041
+ }
1042
+ .max-sm\\:\\[background\\:radial-gradient\\(ellipse_closest-side\\,_color-mix\\(in_oklab\\,_var\\(--color-accent\\)_26\\%\\,_transparent\\)_0\\%\\,_color-mix\\(in_oklab\\,_var\\(--color-accent\\)_10\\%\\,_transparent\\)_55\\%\\,_transparent_100\\%\\)\\] {
1043
+ @media (width < 40rem) {
1044
+ background: radial-gradient(ellipse closest-side, color-mix(in srgb, inherit 26%, transparent) 0%, color-mix(in srgb, inherit 10%, transparent) 55%, transparent 100%);
1045
+ @supports (color: color-mix(in lab, red, red)) {
1046
+ background: radial-gradient(ellipse closest-side, color-mix(in oklab, var(--color-accent) 26%, transparent) 0%, color-mix(in oklab, var(--color-accent) 10%, transparent) 55%, transparent 100%);
1047
+ }
1048
+ }
1049
+ }
1050
+ .max-sm\\:\\[background\\:radial-gradient\\(ellipse_closest-side\\,_color-mix\\(in_oklab\\,_var\\(--color-accent\\)_32\\.5\\%\\,_transparent\\)_0\\%\\,_color-mix\\(in_oklab\\,_var\\(--color-accent\\)_12\\.5\\%\\,_transparent\\)_55\\%\\,_transparent_100\\%\\)\\] {
1051
+ @media (width < 40rem) {
1052
+ background: radial-gradient(ellipse closest-side, color-mix(in srgb, inherit 32.5%, transparent) 0%, color-mix(in srgb, inherit 12.5%, transparent) 55%, transparent 100%);
1053
+ @supports (color: color-mix(in lab, red, red)) {
1054
+ background: radial-gradient(ellipse closest-side, color-mix(in oklab, var(--color-accent) 32.5%, transparent) 0%, color-mix(in oklab, var(--color-accent) 12.5%, transparent) 55%, transparent 100%);
1055
+ }
1056
+ }
1057
+ }
1058
+ .max-sm\\:hover\\:text-\\[var\\(--color-orange-200\\)\\] {
1059
+ @media (width < 40rem) {
1060
+ &:hover {
1061
+ @media (hover: hover) {
1062
+ color: var(--color-orange-200);
1063
+ }
1064
+ }
1065
+ }
1066
+ }
1067
+ .max-sm\\:hover\\:text-text-primary {
1068
+ @media (width < 40rem) {
1069
+ &:hover {
1070
+ @media (hover: hover) {
1071
+ color: var(--color-text-primary);
1072
+ }
1073
+ }
1074
+ }
1075
+ }
1076
+ .max-sm\\:hover\\:\\[background\\:radial-gradient\\(ellipse_closest-side\\,_color-mix\\(in_oklab\\,_var\\(--color-accent\\)_26\\%\\,_transparent\\)_0\\%\\,_color-mix\\(in_oklab\\,_var\\(--color-accent\\)_10\\%\\,_transparent\\)_55\\%\\,_transparent_100\\%\\)\\] {
1077
+ @media (width < 40rem) {
1078
+ &:hover {
1079
+ @media (hover: hover) {
1080
+ background: radial-gradient(ellipse closest-side, color-mix(in srgb, inherit 26%, transparent) 0%, color-mix(in srgb, inherit 10%, transparent) 55%, transparent 100%);
1081
+ @supports (color: color-mix(in lab, red, red)) {
1082
+ background: radial-gradient(ellipse closest-side, color-mix(in oklab, var(--color-accent) 26%, transparent) 0%, color-mix(in oklab, var(--color-accent) 10%, transparent) 55%, transparent 100%);
1083
+ }
1084
+ }
1085
+ }
1086
+ }
1087
+ }
1088
+ .sm\\:block {
1089
+ @media (width >= 40rem) {
1090
+ display: block;
1091
+ }
1092
+ }
1093
+ .sm\\:translate-x-\\[var\\(--dsgn-nav-link-dropdown-shift\\,0px\\)\\] {
1094
+ @media (width >= 40rem) {
1095
+ --tw-translate-x: var(--dsgn-nav-link-dropdown-shift,0px);
1096
+ translate: var(--tw-translate-x) var(--tw-translate-y);
1097
+ }
1098
+ }
1099
+ .\\[\\&\\:\\:slotted\\(\\*\\)\\]\\:w-full {
1100
+ &::slotted(*) {
1101
+ width: 100%;
1102
+ }
1103
+ }
1104
+ .\\[\\&\\:\\:slotted\\(\\*\\)\\]\\:min-w-0 {
1105
+ &::slotted(*) {
1106
+ min-width: calc(var(--spacing) * 0);
1107
+ }
1108
+ }
1109
+ }
1110
+ @property --dsgn-border-sweep-angle {
1111
+ syntax: '<angle>';
1112
+ inherits: false;
1113
+ initial-value: 0deg;
1114
+ }
1115
+ @property --tw-border-style {
1116
+ syntax: "*";
1117
+ inherits: false;
1118
+ initial-value: solid;
1119
+ }
1120
+ @property --tw-leading {
1121
+ syntax: "*";
1122
+ inherits: false;
1123
+ }
1124
+ @property --tw-font-weight {
1125
+ syntax: "*";
1126
+ inherits: false;
1127
+ }
1128
+ @property --tw-shadow {
1129
+ syntax: "*";
1130
+ inherits: false;
1131
+ initial-value: 0 0 #0000;
1132
+ }
1133
+ @property --tw-shadow-color {
1134
+ syntax: "*";
1135
+ inherits: false;
1136
+ }
1137
+ @property --tw-shadow-alpha {
1138
+ syntax: "<percentage>";
1139
+ inherits: false;
1140
+ initial-value: 100%;
1141
+ }
1142
+ @property --tw-inset-shadow {
1143
+ syntax: "*";
1144
+ inherits: false;
1145
+ initial-value: 0 0 #0000;
1146
+ }
1147
+ @property --tw-inset-shadow-color {
1148
+ syntax: "*";
1149
+ inherits: false;
1150
+ }
1151
+ @property --tw-inset-shadow-alpha {
1152
+ syntax: "<percentage>";
1153
+ inherits: false;
1154
+ initial-value: 100%;
1155
+ }
1156
+ @property --tw-ring-color {
1157
+ syntax: "*";
1158
+ inherits: false;
1159
+ }
1160
+ @property --tw-ring-shadow {
1161
+ syntax: "*";
1162
+ inherits: false;
1163
+ initial-value: 0 0 #0000;
1164
+ }
1165
+ @property --tw-inset-ring-color {
1166
+ syntax: "*";
1167
+ inherits: false;
1168
+ }
1169
+ @property --tw-inset-ring-shadow {
1170
+ syntax: "*";
1171
+ inherits: false;
1172
+ initial-value: 0 0 #0000;
1173
+ }
1174
+ @property --tw-ring-inset {
1175
+ syntax: "*";
1176
+ inherits: false;
1177
+ }
1178
+ @property --tw-ring-offset-width {
1179
+ syntax: "<length>";
1180
+ inherits: false;
1181
+ initial-value: 0px;
1182
+ }
1183
+ @property --tw-ring-offset-color {
1184
+ syntax: "*";
1185
+ inherits: false;
1186
+ initial-value: #fff;
1187
+ }
1188
+ @property --tw-ring-offset-shadow {
1189
+ syntax: "*";
1190
+ inherits: false;
1191
+ initial-value: 0 0 #0000;
1192
+ }
1193
+ @property --tw-blur {
1194
+ syntax: "*";
1195
+ inherits: false;
1196
+ }
1197
+ @property --tw-brightness {
1198
+ syntax: "*";
1199
+ inherits: false;
1200
+ }
1201
+ @property --tw-contrast {
1202
+ syntax: "*";
1203
+ inherits: false;
1204
+ }
1205
+ @property --tw-grayscale {
1206
+ syntax: "*";
1207
+ inherits: false;
1208
+ }
1209
+ @property --tw-hue-rotate {
1210
+ syntax: "*";
1211
+ inherits: false;
1212
+ }
1213
+ @property --tw-invert {
1214
+ syntax: "*";
1215
+ inherits: false;
1216
+ }
1217
+ @property --tw-opacity {
1218
+ syntax: "*";
1219
+ inherits: false;
1220
+ }
1221
+ @property --tw-saturate {
1222
+ syntax: "*";
1223
+ inherits: false;
1224
+ }
1225
+ @property --tw-sepia {
1226
+ syntax: "*";
1227
+ inherits: false;
1228
+ }
1229
+ @property --tw-drop-shadow {
1230
+ syntax: "*";
1231
+ inherits: false;
1232
+ }
1233
+ @property --tw-drop-shadow-color {
1234
+ syntax: "*";
1235
+ inherits: false;
1236
+ }
1237
+ @property --tw-drop-shadow-alpha {
1238
+ syntax: "<percentage>";
1239
+ inherits: false;
1240
+ initial-value: 100%;
1241
+ }
1242
+ @property --tw-drop-shadow-size {
1243
+ syntax: "*";
1244
+ inherits: false;
1245
+ }
1246
+ @property --tw-duration {
1247
+ syntax: "*";
1248
+ inherits: false;
1249
+ }
1250
+ @property --tw-translate-x {
1251
+ syntax: "*";
1252
+ inherits: false;
1253
+ initial-value: 0;
1254
+ }
1255
+ @property --tw-translate-y {
1256
+ syntax: "*";
1257
+ inherits: false;
1258
+ initial-value: 0;
1259
+ }
1260
+ @property --tw-translate-z {
1261
+ syntax: "*";
1262
+ inherits: false;
1263
+ initial-value: 0;
1264
+ }
1265
+ @property --tw-outline-style {
1266
+ syntax: "*";
1267
+ inherits: false;
1268
+ initial-value: solid;
1269
+ }
1270
+ @property --tw-scale-x {
1271
+ syntax: "*";
1272
+ inherits: false;
1273
+ initial-value: 1;
1274
+ }
1275
+ @property --tw-scale-y {
1276
+ syntax: "*";
1277
+ inherits: false;
1278
+ initial-value: 1;
1279
+ }
1280
+ @property --tw-scale-z {
1281
+ syntax: "*";
1282
+ inherits: false;
1283
+ initial-value: 1;
1284
+ }
1285
+ @property --tw-ease {
1286
+ syntax: "*";
1287
+ inherits: false;
1288
+ }
1289
+ @keyframes border-sweep {
1290
+ from {
1291
+ --dsgn-border-sweep-angle: 0deg;
1292
+ }
1293
+ to {
1294
+ --dsgn-border-sweep-angle: 360deg;
1295
+ }
1296
+ }
1297
+ @layer properties {
1298
+ @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {
1299
+ *, ::before, ::after, ::backdrop {
1300
+ --tw-border-style: solid;
1301
+ --tw-leading: initial;
1302
+ --tw-font-weight: initial;
1303
+ --tw-shadow: 0 0 #0000;
1304
+ --tw-shadow-color: initial;
1305
+ --tw-shadow-alpha: 100%;
1306
+ --tw-inset-shadow: 0 0 #0000;
1307
+ --tw-inset-shadow-color: initial;
1308
+ --tw-inset-shadow-alpha: 100%;
1309
+ --tw-ring-color: initial;
1310
+ --tw-ring-shadow: 0 0 #0000;
1311
+ --tw-inset-ring-color: initial;
1312
+ --tw-inset-ring-shadow: 0 0 #0000;
1313
+ --tw-ring-inset: initial;
1314
+ --tw-ring-offset-width: 0px;
1315
+ --tw-ring-offset-color: #fff;
1316
+ --tw-ring-offset-shadow: 0 0 #0000;
1317
+ --tw-blur: initial;
1318
+ --tw-brightness: initial;
1319
+ --tw-contrast: initial;
1320
+ --tw-grayscale: initial;
1321
+ --tw-hue-rotate: initial;
1322
+ --tw-invert: initial;
1323
+ --tw-opacity: initial;
1324
+ --tw-saturate: initial;
1325
+ --tw-sepia: initial;
1326
+ --tw-drop-shadow: initial;
1327
+ --tw-drop-shadow-color: initial;
1328
+ --tw-drop-shadow-alpha: 100%;
1329
+ --tw-drop-shadow-size: initial;
1330
+ --tw-duration: initial;
1331
+ --tw-translate-x: 0;
1332
+ --tw-translate-y: 0;
1333
+ --tw-translate-z: 0;
1334
+ --tw-outline-style: solid;
1335
+ --tw-scale-x: 1;
1336
+ --tw-scale-y: 1;
1337
+ --tw-scale-z: 1;
1338
+ --tw-ease: initial;
1339
+ --dsgn-border-sweep-angle: 0deg;
1340
+ }
1341
+ }
1342
+ }
1343
+ `;
1344
+ var NavLink_default = styles2;
1345
+
1346
+ // components/NavLink/src/NavLink.props.ts
1347
+ var navLinkDropdownColumnValues = {
1348
+ ONE: "1",
1349
+ TWO: "2",
1350
+ THREE: "3"
1351
+ };
1352
+ var navLinkDropdownColumnsProps = enumCreator(Object.values(navLinkDropdownColumnValues), "dropdown-columns", String, { attribute: "dropdown-columns", reflect: true });
1353
+ var navLinkVariantValues = {
1354
+ LINK: "link",
1355
+ ACTION: "action",
1356
+ ACTION_SECONDARY: "action-secondary"
1357
+ };
1358
+ var navLinkVariantProps = enumCreator(Object.values(navLinkVariantValues), "variant", String, { reflect: true });
1359
+ var navLinkSecondaryHoverValues = {
1360
+ RING: "ring",
1361
+ SHIMMER: "shimmer",
1362
+ NUDGE: "nudge",
1363
+ DEEPEN: "deepen"
1364
+ };
1365
+ var navLinkSecondaryHoverProps = enumCreator(Object.values(navLinkSecondaryHoverValues), "secondary-hover", String, { attribute: "secondary-hover", reflect: true });
1366
+ var navLinkTargetValues = {
1367
+ SELF: "_self",
1368
+ BLANK: "_blank"
1369
+ };
1370
+ var navLinkTargetProps = enumCreator(Object.values(navLinkTargetValues), "target", String, { reflect: true });
1371
+
1372
+ // ../../node_modules/.bun/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs
1373
+ function r(e) {
1374
+ var t, f, n = "";
1375
+ if (typeof e == "string" || typeof e == "number")
1376
+ n += e;
1377
+ else if (typeof e == "object")
1378
+ if (Array.isArray(e)) {
1379
+ var o = e.length;
1380
+ for (t = 0;t < o; t++)
1381
+ e[t] && (f = r(e[t])) && (n && (n += " "), n += f);
1382
+ } else
1383
+ for (f in e)
1384
+ e[f] && (n && (n += " "), n += f);
1385
+ return n;
1386
+ }
1387
+ function clsx() {
1388
+ for (var e, t, f = 0, n = "", o = arguments.length;f < o; f++)
1389
+ (e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t);
1390
+ return n;
1391
+ }
1392
+ var clsx_default = clsx;
1393
+
1394
+ // components/NavLink/src/NavLink.styles.ts
1395
+ var baseClasses = [
1396
+ "inline-flex",
1397
+ "items-center",
1398
+ "font-sans",
1399
+ "no-underline",
1400
+ "cursor-pointer",
1401
+ "transition",
1402
+ "duration-150",
1403
+ "group/nav-link"
1404
+ ];
1405
+ var glowClass = "hover:[background:radial-gradient(ellipse_closest-side,_color-mix(in_oklab,_var(--color-accent)_26%,_transparent)_0%,_color-mix(in_oklab,_var(--color-accent)_10%,_transparent)_55%,_transparent_100%)]";
1406
+ var mobileHoverGlowClass = "max-sm:hover:[background:radial-gradient(ellipse_closest-side,_color-mix(in_oklab,_var(--color-accent)_26%,_transparent)_0%,_color-mix(in_oklab,_var(--color-accent)_10%,_transparent)_55%,_transparent_100%)]";
1407
+ var mobileActiveGlowClass = "max-sm:[background:radial-gradient(ellipse_closest-side,_color-mix(in_oklab,_var(--color-accent)_26%,_transparent)_0%,_color-mix(in_oklab,_var(--color-accent)_10%,_transparent)_55%,_transparent_100%)]";
1408
+ var actionGlowClass = "hover:[background:radial-gradient(ellipse_closest-side,_color-mix(in_oklab,_var(--color-accent)_32.5%,_transparent)_0%,_color-mix(in_oklab,_var(--color-accent)_12.5%,_transparent)_55%,_transparent_100%)]";
1409
+ var actionMobileGlowClass = "max-sm:[background:radial-gradient(ellipse_closest-side,_color-mix(in_oklab,_var(--color-accent)_32.5%,_transparent)_0%,_color-mix(in_oklab,_var(--color-accent)_12.5%,_transparent)_55%,_transparent_100%)]";
1410
+ var linkPillClasses = ["px-2.5", "py-2.5", "-mx-2.5", "rounded-lg"];
1411
+ var linkClasses = ["text-sm", "text-text-tertiary", ...linkPillClasses];
1412
+ var actionBaseClasses = [
1413
+ "text-[13px]",
1414
+ "font-semibold",
1415
+ "border",
1416
+ "rounded-full",
1417
+ "px-4",
1418
+ "py-[7px]",
1419
+ "max-sm:w-full",
1420
+ "max-sm:justify-center"
1421
+ ];
1422
+ var actionClasses = [
1423
+ ...actionBaseClasses,
1424
+ "text-text-primary",
1425
+ "border-outline",
1426
+ "bg-transparent"
1427
+ ];
1428
+ var actionSecondaryClasses = [
1429
+ ...actionBaseClasses,
1430
+ "bg-surface-elevated",
1431
+ "border-[color-mix(in_oklab,var(--color-accent)_45%,transparent)]",
1432
+ "text-nav-link-dropdown-text-hover"
1433
+ ];
1434
+ var secondaryHoverRingClasses = [
1435
+ "hover:border-[color-mix(in_oklab,var(--color-accent)_70%,transparent)]",
1436
+ "hover:shadow-[inset_0_1px_0_rgba(255,255,255,0.07),0_0_0_3px_color-mix(in_oklab,var(--color-accent)_12%,transparent)]"
1437
+ ];
1438
+ var secondaryHoverShimmerClasses = [
1439
+ "border-transparent",
1440
+ "[background:linear-gradient(var(--color-surface-elevated),var(--color-surface-elevated))_padding-box,linear-gradient(120deg,color-mix(in_oklab,var(--color-accent)_45%,transparent),color-mix(in_oklab,var(--color-accent)_45%,transparent))_border-box]",
1441
+ "hover:[background:linear-gradient(var(--color-surface-elevated),var(--color-surface-elevated))_padding-box,conic-gradient(from_var(--dsgn-border-sweep-angle),color-mix(in_oklab,var(--color-accent)_25%,transparent)_0%,var(--color-accent)_18%,color-mix(in_oklab,var(--color-accent)_25%,transparent)_40%,color-mix(in_oklab,var(--color-accent)_25%,transparent)_100%)_border-box]",
1442
+ "hover:animate-border-sweep",
1443
+ "motion-reduce:hover:animate-none"
1444
+ ];
1445
+ var secondaryHoverDeepenClasses = [
1446
+ "hover:bg-surface-default",
1447
+ "hover:border-[color-mix(in_oklab,var(--color-accent)_60%,transparent)]",
1448
+ "hover:shadow-[inset_0_1px_3px_rgba(0,0,0,0.35)]",
1449
+ "hover:scale-[0.98]",
1450
+ "active:scale-95",
1451
+ "active:shadow-[inset_0_2px_5px_rgba(0,0,0,0.45)]",
1452
+ "motion-reduce:hover:scale-100",
1453
+ "motion-reduce:active:scale-100"
1454
+ ];
1455
+ var secondaryHoverClasses = {
1456
+ [navLinkSecondaryHoverValues.RING]: secondaryHoverRingClasses,
1457
+ [navLinkSecondaryHoverValues.SHIMMER]: secondaryHoverShimmerClasses,
1458
+ [navLinkSecondaryHoverValues.NUDGE]: [],
1459
+ [navLinkSecondaryHoverValues.DEEPEN]: secondaryHoverDeepenClasses
1460
+ };
1461
+ var nudgeLabelClasses = () => clsx_default("inline-block", "transition-transform", "duration-200", "motion-reduce:transition-none", "group-hover/nav-link:-translate-x-px");
1462
+ var nudgeArrowClasses = () => clsx_default("ml-1.5", "inline-block", "transition-transform", "duration-200", "motion-reduce:transition-none", "text-[color-mix(in_oklab,var(--color-orange-300)_75%,transparent)]", "group-hover/nav-link:translate-x-[3px]", "group-hover/nav-link:text-[var(--color-orange-300)]");
1463
+ var variantClasses = {
1464
+ [navLinkVariantValues.LINK]: linkClasses,
1465
+ [navLinkVariantValues.ACTION]: actionClasses,
1466
+ [navLinkVariantValues.ACTION_SECONDARY]: actionSecondaryClasses
1467
+ };
1468
+ var glowClasses = (variant) => {
1469
+ if (variant === navLinkVariantValues.ACTION) {
1470
+ return [actionGlowClass, actionMobileGlowClass];
1471
+ }
1472
+ if (variant === navLinkVariantValues.ACTION_SECONDARY) {
1473
+ return [];
1474
+ }
1475
+ return glowClass;
1476
+ };
1477
+ var hoverTextClass = (surface, isDropdownItem) => {
1478
+ if (isDropdownItem)
1479
+ return "hover:text-nav-link-dropdown-text-hover";
1480
+ if (surface === surfaceValues.LIGHT)
1481
+ return "hover:text-text-primary";
1482
+ return "hover:text-[var(--color-orange-200)]";
1483
+ };
1484
+ var contentHoverTextClass = (surface, isDropdownItem) => {
1485
+ if (isDropdownItem) {
1486
+ return "group-hover/nav-link:text-nav-link-dropdown-text-hover";
1487
+ }
1488
+ if (surface === surfaceValues.LIGHT) {
1489
+ return "group-hover/nav-link:text-text-primary";
1490
+ }
1491
+ return "group-hover/nav-link:text-[var(--color-orange-200)]";
1492
+ };
1493
+ var classNames = (variant, surface, isDropdownItem = false, secondaryHover = navLinkSecondaryHoverValues.RING) => clsx_default(baseClasses, variantClasses[variant], !isDropdownItem && glowClasses(variant), variant === navLinkVariantValues.ACTION_SECONDARY && secondaryHoverClasses[secondaryHover], variant === navLinkVariantValues.LINK && hoverTextClass(surface, isDropdownItem));
1494
+ var wrapperClasses = () => clsx_default("group", "relative", "inline-flex", "items-center", "max-sm:w-full", "max-sm:flex-col", "max-sm:items-stretch");
1495
+ var disclosureTriggerClasses = (surface, open) => clsx_default(baseClasses, linkClasses, "gap-1", "border-0", "bg-transparent", "text-left", "focus-visible:outline-2", "focus-visible:outline-accent", "focus-visible:outline-offset-2", glowClass, hoverTextClass(surface, false), "max-sm:w-full", "max-sm:justify-between", "max-sm:gap-3", "max-sm:mx-0", "max-sm:px-0", mobileHoverGlowClass, surface === surfaceValues.LIGHT ? "max-sm:hover:text-text-primary" : "max-sm:hover:text-[var(--color-orange-200)]", open && [
1496
+ mobileActiveGlowClass,
1497
+ surface === surfaceValues.LIGHT ? "max-sm:text-text-primary" : "max-sm:text-[var(--color-orange-200)]"
1498
+ ]);
1499
+ var disclosureIconClasses = (open) => clsx_default("flex-none", "transition-transform", "duration-150", "motion-reduce:transition-none", open && "rotate-180");
1500
+ var linkContentClasses = (hasSubheading, surface, isDropdownItem = false) => clsx_default(hasSubheading ? [
1501
+ "flex",
1502
+ "min-w-0",
1503
+ "flex-col",
1504
+ "items-start",
1505
+ "gap-0.5",
1506
+ "text-left",
1507
+ "font-medium",
1508
+ "leading-snug",
1509
+ "text-text-primary",
1510
+ contentHoverTextClass(surface, isDropdownItem)
1511
+ ] : "contents");
1512
+ var linkSubheadingClasses = () => clsx_default("text-xs", "font-normal", "leading-snug", "text-text-tertiary");
1513
+ var dropdownAnchorClasses = [
1514
+ "left-0",
1515
+ "right-auto",
1516
+ "sm:translate-x-[var(--dsgn-nav-link-dropdown-shift,0px)]",
1517
+ "max-w-[calc(100vw-2rem)]"
1518
+ ];
1519
+ var dropdownColumnClasses = {
1520
+ [navLinkDropdownColumnValues.ONE]: [...dropdownAnchorClasses, "w-80"],
1521
+ [navLinkDropdownColumnValues.TWO]: [...dropdownAnchorClasses, "w-[36rem]"],
1522
+ [navLinkDropdownColumnValues.THREE]: [...dropdownAnchorClasses, "w-[54rem]"]
1523
+ };
1524
+ var dropdownClasses = (open, columns) => clsx_default("absolute", "top-full", "hidden", "pt-2", "z-50", dropdownColumnClasses[columns], "max-sm:w-full", "max-sm:min-w-full", "max-sm:max-w-none", "max-sm:static", "max-sm:!grid", "max-sm:pt-0", "max-sm:transition-[grid-template-rows,opacity,visibility]", "max-sm:duration-150", "max-sm:ease-in-out", "motion-reduce:transition-none", open && "sm:block", open ? [
1525
+ "max-sm:grid-rows-[1fr]",
1526
+ "max-sm:opacity-100",
1527
+ "max-sm:visible",
1528
+ "max-sm:pointer-events-auto"
1529
+ ] : [
1530
+ "max-sm:grid-rows-[0fr]",
1531
+ "max-sm:opacity-0",
1532
+ "max-sm:invisible",
1533
+ "max-sm:pointer-events-none"
1534
+ ]);
1535
+ var dropdownClipClasses = () => clsx_default("max-sm:min-h-0", "max-sm:overflow-hidden");
1536
+ var dropdownPanelClasses = () => clsx_default("p-4", "border", "border-outline", "rounded-lg", "bg-page", "text-text-primary", "shadow-lg", "drop-shadow-[0_0_18px_color-mix(in_oklab,_var(--color-accent)_14.625%,_transparent)]", "max-sm:mt-1", "max-sm:mb-2");
1537
+ var dropdownAutoColumnsClass = "grid-cols-[repeat(auto-fit,minmax(15rem,1fr))]";
1538
+ var dropdownSlotColumnClasses = {
1539
+ [navLinkDropdownColumnValues.ONE]: ["flex", "flex-col", "gap-1"],
1540
+ [navLinkDropdownColumnValues.TWO]: [
1541
+ "grid",
1542
+ dropdownAutoColumnsClass,
1543
+ "gap-2"
1544
+ ],
1545
+ [navLinkDropdownColumnValues.THREE]: [
1546
+ "grid",
1547
+ dropdownAutoColumnsClass,
1548
+ "gap-2"
1549
+ ]
1550
+ };
1551
+ var dropdownSlotClasses = (columns) => clsx_default(dropdownSlotColumnClasses[columns], "max-sm:!flex", "max-sm:flex-col", "max-sm:gap-1", "[&::slotted(*)]:min-w-0", "[&::slotted(*)]:w-full");
1552
+ var overviewClasses = () => clsx_default("col-span-full", "inline-flex", "w-full", "px-2.5", "py-1", "font-sans", "text-sm", "text-text-tertiary", "no-underline", "cursor-pointer", "hover:text-text-primary", "focus-visible:outline-2", "focus-visible:outline-accent", "focus-visible:outline-offset-2");
1553
+
1554
+ // components/NavLink/src/NavLink.ts
1555
+ var navLinkDropdownId = 0;
1556
+ var dropdownShiftProperty = "--dsgn-nav-link-dropdown-shift";
1557
+ var supportsHover = () => typeof window === "undefined" || typeof window.matchMedia !== "function" ? true : window.matchMedia("(hover: hover)").matches;
1558
+ var dropdownViewportGutter = 16;
1559
+
1560
+ class NavLink extends Base {
1561
+ constructor() {
1562
+ super(...arguments);
1563
+ this.surface = surfaceValues.DARK;
1564
+ this.variant = navLinkVariantValues.LINK;
1565
+ this.secondaryHover = navLinkSecondaryHoverValues.RING;
1566
+ this.href = "";
1567
+ this.target = navLinkTargetValues.SELF;
1568
+ this.rel = "";
1569
+ this.subheading = "";
1570
+ this.submenuLabel = "";
1571
+ this.overviewLabel = "";
1572
+ this.dropdownColumns = navLinkDropdownColumnValues.ONE;
1573
+ this.expanded = false;
1574
+ this.hasDropdown = false;
1575
+ this.pinned = false;
1576
+ this.keyboardDismissed = false;
1577
+ this.dropdownId = `dsgn-nav-link-dropdown-${++navLinkDropdownId}`;
1578
+ this.breakpointController = new BreakpointController(this);
1579
+ this.layoutChangeController = new LayoutChangeController(this, () => this.updateDropdownAlignment());
1580
+ this.handleDropdownSlotChange = () => {
1581
+ this.updateDropdownState();
1582
+ };
1583
+ this.handleLabelSlotChange = () => {
1584
+ this.requestUpdate();
1585
+ };
1586
+ this.toggleDropdown = () => {
1587
+ this.pinned = !this.pinned;
1588
+ if (this.pinned) {
1589
+ this.updateDropdownAlignment();
1590
+ }
1591
+ this.keyboardDismissed = false;
1592
+ this.setExpanded(this.pinned);
1593
+ };
1594
+ this.handleDocumentPointerDown = (event) => {
1595
+ if (!event.composedPath().includes(this)) {
1596
+ this.pinned = false;
1597
+ this.expanded = false;
1598
+ }
1599
+ };
1600
+ this.handlePointerEnter = () => {
1601
+ if (!this.hoverOpensDropdown) {
1602
+ return;
1603
+ }
1604
+ this.keyboardDismissed = false;
1605
+ this.updateDropdownState();
1606
+ if (this.hasDropdown) {
1607
+ this.updateDropdownAlignment();
1608
+ this.setExpanded(true);
1609
+ }
1610
+ };
1611
+ this.handlePointerLeave = () => {
1612
+ if (this.pinned || !this.hoverOpensDropdown || this.matches(":focus-within")) {
1613
+ return;
1614
+ }
1615
+ this.expanded = false;
1616
+ };
1617
+ this.handleFocusIn = () => {
1618
+ if (!this.hoverOpensDropdown || this.keyboardDismissed) {
1619
+ return;
1620
+ }
1621
+ this.updateDropdownState();
1622
+ if (this.hasDropdown) {
1623
+ this.updateDropdownAlignment();
1624
+ this.setExpanded(true);
1625
+ }
1626
+ };
1627
+ this.handleFocusOut = () => {
1628
+ if (this.pinned || !this.hoverOpensDropdown) {
1629
+ return;
1630
+ }
1631
+ requestAnimationFrame(() => {
1632
+ if (!this.matches(":focus-within")) {
1633
+ this.expanded = false;
1634
+ this.keyboardDismissed = false;
1635
+ }
1636
+ });
1637
+ };
1638
+ this.handleKeydown = (event) => {
1639
+ if (event.key === "Escape" && this.expanded && this.hasDropdown) {
1640
+ this.expanded = false;
1641
+ this.pinned = false;
1642
+ this.keyboardDismissed = true;
1643
+ this.shadowRoot?.querySelector("button, a")?.focus();
1644
+ }
1645
+ };
1646
+ }
1647
+ static styles = [Base.styles, NavLink_default];
1648
+ connectedCallback() {
1649
+ super.connectedCallback();
1650
+ this.updateDropdownState();
1651
+ }
1652
+ get computedRel() {
1653
+ const rawRel = this.rel ? this.rel.trim() : "";
1654
+ if (this.target !== navLinkTargetValues.BLANK) {
1655
+ return rawRel || undefined;
1656
+ }
1657
+ const tokens = new Set;
1658
+ for (const token of rawRel.split(/\s+/)) {
1659
+ if (token) {
1660
+ tokens.add(token.toLowerCase());
1661
+ }
1662
+ }
1663
+ tokens.add("noopener");
1664
+ tokens.add("noreferrer");
1665
+ return Array.from(tokens).join(" ");
1666
+ }
1667
+ disconnectedCallback() {
1668
+ document.removeEventListener("pointerdown", this.handleDocumentPointerDown);
1669
+ super.disconnectedCallback();
1670
+ }
1671
+ updated(changedProperties) {
1672
+ super.updated(changedProperties);
1673
+ this.updateTheme(changedProperties, this.surface);
1674
+ if (changedProperties.has("pinned")) {
1675
+ if (this.pinned) {
1676
+ document.addEventListener("pointerdown", this.handleDocumentPointerDown);
1677
+ } else {
1678
+ document.removeEventListener("pointerdown", this.handleDocumentPointerDown);
1679
+ }
1680
+ }
1681
+ if (changedProperties.has("expanded")) {
1682
+ if (this.expanded) {
1683
+ this.layoutChangeController.observe();
1684
+ } else {
1685
+ this.layoutChangeController.unobserve();
1686
+ this.clearDropdownAlignment();
1687
+ }
1688
+ }
1689
+ }
1690
+ updateDropdownState() {
1691
+ this.hasDropdown = this.querySelector('[slot="dropdown"]') !== null;
1692
+ if (!this.hasDropdown) {
1693
+ this.expanded = false;
1694
+ this.pinned = false;
1695
+ }
1696
+ }
1697
+ get labelText() {
1698
+ return Array.from(this.childNodes).filter((node) => node.nodeType === 3 || node instanceof Element && (!node.hasAttribute("slot") || node.getAttribute("slot") === "")).map((node) => node.textContent ?? "").join(" ").trim();
1699
+ }
1700
+ get hasDropdownDestination() {
1701
+ const descendants = Array.from(this.children);
1702
+ while (descendants.length) {
1703
+ const element = descendants.pop();
1704
+ if (!element)
1705
+ continue;
1706
+ if (element.tagName?.toLowerCase() === "dsgn-nav-link" && (element.getAttribute("href") === this.href || ("href" in element) && element.href === this.href)) {
1707
+ return true;
1708
+ }
1709
+ descendants.push(...Array.from(element.children));
1710
+ }
1711
+ return false;
1712
+ }
1713
+ get isDropdownItem() {
1714
+ let ancestor = this.parentElement;
1715
+ while (ancestor) {
1716
+ if (ancestor.tagName?.toLowerCase() === "dsgn-nav-dropdown-column") {
1717
+ return true;
1718
+ }
1719
+ ancestor = ancestor.parentElement;
1720
+ }
1721
+ return false;
1722
+ }
1723
+ get shouldRenderOverview() {
1724
+ return this.hasDropdown && Boolean(this.href) && Boolean(this.overviewLabel) && !this.hasDropdownDestination;
1725
+ }
1726
+ setExpanded(open) {
1727
+ if (this.expanded === open) {
1728
+ return;
1729
+ }
1730
+ this.expanded = open;
1731
+ this.emit("dsgn-nav-link-toggle", { open });
1732
+ }
1733
+ clearDropdownAlignment() {
1734
+ this.style.removeProperty(dropdownShiftProperty);
1735
+ }
1736
+ measureDropdownWidth() {
1737
+ const panel = this.shadowRoot?.querySelector(`#${this.dropdownId}`);
1738
+ if (!panel) {
1739
+ return 0;
1740
+ }
1741
+ const openWidth = panel.getBoundingClientRect().width;
1742
+ if (openWidth) {
1743
+ return openWidth;
1744
+ }
1745
+ panel.style.cssText = "display:block;visibility:hidden";
1746
+ const width = panel.getBoundingClientRect().width;
1747
+ panel.style.cssText = "";
1748
+ return width;
1749
+ }
1750
+ dropdownShift(triggerRect) {
1751
+ const panelWidth = this.measureDropdownWidth();
1752
+ const viewportRight = window.innerWidth - dropdownViewportGutter;
1753
+ if (!panelWidth || triggerRect.left + panelWidth <= viewportRight) {
1754
+ return 0;
1755
+ }
1756
+ const flipped = triggerRect.width - panelWidth;
1757
+ return triggerRect.left + flipped >= dropdownViewportGutter ? flipped : dropdownViewportGutter - triggerRect.left;
1758
+ }
1759
+ updateDropdownAlignment() {
1760
+ this.style.setProperty(dropdownShiftProperty, `${this.dropdownShift(this.getBoundingClientRect())}px`);
1761
+ }
1762
+ get hoverOpensDropdown() {
1763
+ return this.breakpointController.isAtLeast("sm") && supportsHover();
1764
+ }
1765
+ closeDropdown() {
1766
+ this.expanded = false;
1767
+ this.pinned = false;
1768
+ }
1769
+ get isNudgingSecondary() {
1770
+ return this.variant === navLinkVariantValues.ACTION_SECONDARY && this.secondaryHover === navLinkSecondaryHoverValues.NUDGE;
1771
+ }
1772
+ renderLabel() {
1773
+ if (this.isNudgingSecondary) {
1774
+ return html2`<span class="contents"
1775
+ ><span
1776
+ class="${linkContentClasses(Boolean(this.subheading), this.surface, this.isDropdownItem)}"
1777
+ ><span class="${nudgeLabelClasses()}"
1778
+ ><slot @slotchange=${this.handleLabelSlotChange}></slot></span
1779
+ >${this.subheading ? html2`<span class="${linkSubheadingClasses()}"
1780
+ >${this.subheading}</span
1781
+ >` : nothing}</span
1782
+ ><dsgn-icon
1783
+ class="${nudgeArrowClasses()}"
1784
+ .icon=${arrowRight}
1785
+ size="sm"
1786
+ aria-hidden="true"
1787
+ ></dsgn-icon
1788
+ ></span>`;
1789
+ }
1790
+ return html2`<span
1791
+ class="${linkContentClasses(Boolean(this.subheading), this.surface, this.isDropdownItem)}"
1792
+ >
1793
+ <slot @slotchange=${this.handleLabelSlotChange}></slot>
1794
+ ${this.subheading ? html2`
1795
+ <span class="${linkSubheadingClasses()}">${this.subheading}</span>
1796
+ ` : nothing}
1797
+ </span>`;
1798
+ }
1799
+ renderDisclosureTrigger(labelId) {
1800
+ return html2`
1801
+ <button
1802
+ id=${labelId}
1803
+ class="${disclosureTriggerClasses(this.surface, this.expanded)}"
1804
+ type="button"
1805
+ aria-controls=${this.dropdownId}
1806
+ aria-haspopup="true"
1807
+ aria-expanded=${this.expanded ? "true" : "false"}
1808
+ aria-label=${this.labelText ? nothing : this.submenuLabel}
1809
+ @click=${this.toggleDropdown}
1810
+ >
1811
+ ${this.renderLabel()}
1812
+ <dsgn-icon
1813
+ class="${disclosureIconClasses(this.expanded)}"
1814
+ .icon=${chevronDown}
1815
+ size="sm"
1816
+ aria-hidden="true"
1817
+ ></dsgn-icon>
1818
+ </button>
1819
+ `;
1820
+ }
1821
+ renderLinkTrigger(labelId) {
1822
+ return html2`
1823
+ <a
1824
+ id=${labelId}
1825
+ class="${classNames(this.variant, this.surface, this.isDropdownItem, this.secondaryHover)}"
1826
+ href=${this.href || nothing}
1827
+ target=${this.target}
1828
+ rel=${this.computedRel ?? nothing}
1829
+ >${this.renderLabel()}</a
1830
+ >
1831
+ `;
1832
+ }
1833
+ render() {
1834
+ const labelId = `${this.dropdownId}-label`;
1835
+ return html2`
1836
+ <span
1837
+ class="${wrapperClasses()}"
1838
+ @mouseenter=${this.handlePointerEnter}
1839
+ @mouseleave=${this.handlePointerLeave}
1840
+ @focusin=${this.handleFocusIn}
1841
+ @focusout=${this.handleFocusOut}
1842
+ @keydown=${this.handleKeydown}
1843
+ >
1844
+ ${this.hasDropdown ? this.renderDisclosureTrigger(labelId) : this.renderLinkTrigger(labelId)}
1845
+ <div
1846
+ id=${this.dropdownId}
1847
+ class="${dropdownClasses(this.expanded, this.dropdownColumns)}"
1848
+ aria-labelledby=${labelId}
1849
+ >
1850
+ <div class="${dropdownClipClasses()}">
1851
+ <div class="${dropdownPanelClasses()}">
1852
+ <div class="${dropdownSlotClasses(this.dropdownColumns)}">
1853
+ ${this.shouldRenderOverview ? html2`
1854
+ <a
1855
+ class="${overviewClasses()}"
1856
+ href=${this.href}
1857
+ target=${this.target}
1858
+ rel=${this.computedRel ?? nothing}
1859
+ >${this.overviewLabel}</a
1860
+ >
1861
+ ` : nothing}
1862
+ <slot
1863
+ name="dropdown"
1864
+ @slotchange=${this.handleDropdownSlotChange}
1865
+ ></slot>
1866
+ </div>
1867
+ </div>
1868
+ </div>
1869
+ </div>
1870
+ </span>
1871
+ `;
1872
+ }
1873
+ }
1874
+ __legacyDecorateClassTS([
1875
+ property({ ...surfaceProps })
1876
+ ], NavLink.prototype, "surface", undefined);
1877
+ __legacyDecorateClassTS([
1878
+ property({ ...navLinkVariantProps })
1879
+ ], NavLink.prototype, "variant", undefined);
1880
+ __legacyDecorateClassTS([
1881
+ property({ ...navLinkSecondaryHoverProps })
1882
+ ], NavLink.prototype, "secondaryHover", undefined);
1883
+ __legacyDecorateClassTS([
1884
+ property({ type: String })
1885
+ ], NavLink.prototype, "href", undefined);
1886
+ __legacyDecorateClassTS([
1887
+ property({ ...navLinkTargetProps })
1888
+ ], NavLink.prototype, "target", undefined);
1889
+ __legacyDecorateClassTS([
1890
+ property({ type: String })
1891
+ ], NavLink.prototype, "rel", undefined);
1892
+ __legacyDecorateClassTS([
1893
+ property({ type: String })
1894
+ ], NavLink.prototype, "subheading", undefined);
1895
+ __legacyDecorateClassTS([
1896
+ property({ type: String, attribute: "submenu-label" })
1897
+ ], NavLink.prototype, "submenuLabel", undefined);
1898
+ __legacyDecorateClassTS([
1899
+ property({ type: String, attribute: "overview-label" })
1900
+ ], NavLink.prototype, "overviewLabel", undefined);
1901
+ __legacyDecorateClassTS([
1902
+ property({ ...navLinkDropdownColumnsProps })
1903
+ ], NavLink.prototype, "dropdownColumns", undefined);
1904
+ __legacyDecorateClassTS([
1905
+ property({ type: Boolean, reflect: true })
1906
+ ], NavLink.prototype, "expanded", undefined);
1907
+ __legacyDecorateClassTS([
1908
+ state()
1909
+ ], NavLink.prototype, "hasDropdown", undefined);
1910
+ __legacyDecorateClassTS([
1911
+ state()
1912
+ ], NavLink.prototype, "pinned", undefined);
1913
+ defineElement("dsgn-nav-link", NavLink);
1914
+ export {
1915
+ NavLink
1916
+ };