@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,4696 @@
1
+ {
2
+ "schemaVersion": "1.0.0",
3
+ "readme": "",
4
+ "modules": [
5
+ {
6
+ "kind": "javascript-module",
7
+ "path": "components/Background/src/Background.ts",
8
+ "declarations": [
9
+ {
10
+ "kind": "class",
11
+ "description": "Full-bleed backdrop that wraps a group of slotted components. A `variant`\n(`solid` or `gradient`) sets the base fill; `aurora` layers the animated mesh\non top of that base, so a solid or gradient backdrop and the drift can be\ncombined. The sole consumer of the shared aurora-mesh engine\n(`AuroraMeshController` + `renderAuroraMesh`). Used from the CMS to give a\nsection its own background while composing other components within it.",
12
+ "name": "Background",
13
+ "slots": [
14
+ {
15
+ "description": "Section content rendered above the background.",
16
+ "name": ""
17
+ }
18
+ ],
19
+ "members": [
20
+ {
21
+ "kind": "field",
22
+ "name": "_inView",
23
+ "privacy": "private",
24
+ "default": "new IntersectionController<boolean>(this, { config: { threshold: 0 }, callback: (entries) => entries[entries.length - 1]?.isIntersecting ?? false, })"
25
+ },
26
+ {
27
+ "kind": "field",
28
+ "name": "_mesh",
29
+ "type": {
30
+ "text": "AuroraMeshController"
31
+ },
32
+ "privacy": "private",
33
+ "default": "new AuroraMeshController( this, { opacityScale: INTENSITY_SCALE[this.intensity] }, // Only run the mesh when the overlay is enabled and on-screen — solid / // gradient backgrounds (the default) do no animation work. () => this.aurora && this._inView.value === true, )"
34
+ },
35
+ {
36
+ "kind": "field",
37
+ "name": "variant",
38
+ "type": {
39
+ "text": "BackgroundVariantType"
40
+ },
41
+ "description": "Base fill: a flat surface or a gradient.",
42
+ "attribute": "variant",
43
+ "reflects": true
44
+ },
45
+ {
46
+ "kind": "field",
47
+ "name": "aurora",
48
+ "type": {
49
+ "text": "boolean"
50
+ },
51
+ "default": "false",
52
+ "description": "Layer the animated aurora mesh on top of the base fill.",
53
+ "attribute": "aurora",
54
+ "reflects": true
55
+ },
56
+ {
57
+ "kind": "field",
58
+ "name": "intensity",
59
+ "type": {
60
+ "text": "AuroraIntensityType"
61
+ },
62
+ "description": "Brightness of the drifting aurora blobs (only applies when `aurora`).",
63
+ "attribute": "intensity",
64
+ "reflects": true
65
+ },
66
+ {
67
+ "kind": "field",
68
+ "name": "surface",
69
+ "type": {
70
+ "text": "SurfaceType"
71
+ },
72
+ "description": "Surface theme variant (light or dark)",
73
+ "attribute": "surface",
74
+ "reflects": true
75
+ }
76
+ ],
77
+ "superclass": {
78
+ "name": "Base",
79
+ "module": "/common/Base/Base.ts"
80
+ },
81
+ "tagName": "dsgn-background",
82
+ "customElement": true,
83
+ "attributes": [
84
+ {
85
+ "name": "variant",
86
+ "fieldName": "variant",
87
+ "type": {
88
+ "text": "BackgroundVariantType"
89
+ },
90
+ "description": "Base fill: a flat surface or a gradient."
91
+ },
92
+ {
93
+ "name": "aurora",
94
+ "fieldName": "aurora",
95
+ "type": {
96
+ "text": "boolean"
97
+ },
98
+ "default": "false",
99
+ "description": "Layer the animated aurora mesh on top of the base fill."
100
+ },
101
+ {
102
+ "name": "intensity",
103
+ "fieldName": "intensity",
104
+ "type": {
105
+ "text": "AuroraIntensityType"
106
+ },
107
+ "description": "Brightness of the drifting aurora blobs (only applies when `aurora`)."
108
+ },
109
+ {
110
+ "name": "surface",
111
+ "fieldName": "surface",
112
+ "type": {
113
+ "text": "SurfaceType"
114
+ },
115
+ "description": "Surface theme variant (light or dark)"
116
+ }
117
+ ]
118
+ }
119
+ ],
120
+ "exports": [
121
+ {
122
+ "kind": "js",
123
+ "name": "Background",
124
+ "declaration": {
125
+ "name": "Background",
126
+ "module": "components/Background/src/Background.ts"
127
+ }
128
+ },
129
+ {
130
+ "kind": "custom-element-definition",
131
+ "name": "dsgn-background",
132
+ "declaration": {
133
+ "name": "Background",
134
+ "module": "components/Background/src/Background.ts"
135
+ }
136
+ }
137
+ ]
138
+ },
139
+ {
140
+ "kind": "javascript-module",
141
+ "path": "components/Badge/src/Badge.ts",
142
+ "declarations": [
143
+ {
144
+ "kind": "class",
145
+ "description": "",
146
+ "name": "Badge",
147
+ "slots": [
148
+ {
149
+ "description": "Badge label.",
150
+ "name": ""
151
+ }
152
+ ],
153
+ "members": [
154
+ {
155
+ "kind": "field",
156
+ "name": "surface",
157
+ "type": {
158
+ "text": "SurfaceType"
159
+ },
160
+ "description": "Surface theme variant (light or dark)",
161
+ "attribute": "surface",
162
+ "reflects": true
163
+ },
164
+ {
165
+ "kind": "field",
166
+ "name": "variant",
167
+ "type": {
168
+ "text": "BadgeVariantType"
169
+ },
170
+ "description": "Visual variant",
171
+ "attribute": "variant",
172
+ "reflects": true
173
+ },
174
+ {
175
+ "kind": "field",
176
+ "name": "size",
177
+ "type": {
178
+ "text": "BadgeSizeType"
179
+ },
180
+ "description": "Size variant",
181
+ "attribute": "size",
182
+ "reflects": true
183
+ }
184
+ ],
185
+ "superclass": {
186
+ "name": "Base",
187
+ "package": "@common/Base/Base.ts"
188
+ },
189
+ "tagName": "dsgn-badge",
190
+ "customElement": true,
191
+ "attributes": [
192
+ {
193
+ "name": "surface",
194
+ "fieldName": "surface",
195
+ "type": {
196
+ "text": "SurfaceType"
197
+ },
198
+ "description": "Surface theme variant (light or dark)"
199
+ },
200
+ {
201
+ "name": "variant",
202
+ "fieldName": "variant",
203
+ "type": {
204
+ "text": "BadgeVariantType"
205
+ },
206
+ "description": "Visual variant"
207
+ },
208
+ {
209
+ "name": "size",
210
+ "fieldName": "size",
211
+ "type": {
212
+ "text": "BadgeSizeType"
213
+ },
214
+ "description": "Size variant"
215
+ }
216
+ ]
217
+ }
218
+ ],
219
+ "exports": [
220
+ {
221
+ "kind": "js",
222
+ "name": "Badge",
223
+ "declaration": {
224
+ "name": "Badge",
225
+ "module": "components/Badge/src/Badge.ts"
226
+ }
227
+ },
228
+ {
229
+ "kind": "custom-element-definition",
230
+ "name": "dsgn-badge",
231
+ "declaration": {
232
+ "name": "Badge",
233
+ "module": "components/Badge/src/Badge.ts"
234
+ }
235
+ }
236
+ ]
237
+ },
238
+ {
239
+ "kind": "javascript-module",
240
+ "path": "components/Button/src/Button.ts",
241
+ "declarations": [
242
+ {
243
+ "kind": "class",
244
+ "description": "",
245
+ "name": "Button",
246
+ "slots": [
247
+ {
248
+ "description": "Button or link label.",
249
+ "name": ""
250
+ }
251
+ ],
252
+ "members": [
253
+ {
254
+ "kind": "field",
255
+ "name": "formAssociated",
256
+ "type": {
257
+ "text": "boolean"
258
+ },
259
+ "static": true,
260
+ "default": "true",
261
+ "description": "Form association lets `type=\"submit\"`/`type=\"reset\"` reach an enclosing\n`<form>` across the shadow boundary, and lets `name`/`value` participate in\nsubmission the way a native submit button does."
262
+ },
263
+ {
264
+ "kind": "field",
265
+ "name": "#internals",
266
+ "privacy": "private",
267
+ "type": {
268
+ "text": "ElementInternals"
269
+ }
270
+ },
271
+ {
272
+ "kind": "field",
273
+ "name": "surface",
274
+ "type": {
275
+ "text": "SurfaceType"
276
+ },
277
+ "description": "Surface theme variant (light or dark)",
278
+ "attribute": "surface",
279
+ "reflects": true
280
+ },
281
+ {
282
+ "kind": "field",
283
+ "name": "appearance",
284
+ "type": {
285
+ "text": "ButtonAppearanceType"
286
+ },
287
+ "description": "Button style appearance",
288
+ "attribute": "appearance",
289
+ "reflects": true
290
+ },
291
+ {
292
+ "kind": "field",
293
+ "name": "buttonWeight",
294
+ "type": {
295
+ "text": "ButtonWeightType"
296
+ },
297
+ "description": "Font weight of the button label. Default `semibold` for CTA energy; use\n`medium` or lighter when the button sits in dense chrome (e.g. nav) and\nneeds to visually settle with surrounding text.",
298
+ "attribute": "button-weight",
299
+ "reflects": true
300
+ },
301
+ {
302
+ "kind": "field",
303
+ "name": "target",
304
+ "type": {
305
+ "text": "ButtonTargetType"
306
+ },
307
+ "description": "Target for the button when used as a link",
308
+ "attribute": "target",
309
+ "reflects": true
310
+ },
311
+ {
312
+ "kind": "field",
313
+ "name": "href",
314
+ "type": {
315
+ "text": "string"
316
+ },
317
+ "default": "''",
318
+ "description": "Optional URL that turns the button into a link",
319
+ "attribute": "href"
320
+ },
321
+ {
322
+ "kind": "field",
323
+ "name": "icon",
324
+ "type": {
325
+ "text": "SVGTemplateResult | undefined"
326
+ },
327
+ "description": "SVG template content for the icon. Tree-shakeable and needs no registry,\nbut only settable from JS — use `icon-name` for declarative/CMS usage."
328
+ },
329
+ {
330
+ "kind": "field",
331
+ "name": "iconName",
332
+ "type": {
333
+ "text": "IconName | ''"
334
+ },
335
+ "default": "''",
336
+ "description": "Icon name, resolved by the `<dsgn-icon>` this button already renders. Lets\nan icon be authored as data (markup, CMS, the docs playground) rather than\nas a Lit template. Requires the icons to be registered at app entry:\n\n import { Icon } from '@ds-gn/ui/icon';\n import * as icons from '@ds-gn/ui/icon/icons';\n Icon.registerIcons(icons);\n\n`icon` wins when both are set — that precedence lives in `<dsgn-icon>`.",
337
+ "attribute": "icon-name"
338
+ },
339
+ {
340
+ "kind": "field",
341
+ "name": "iconPosition",
342
+ "type": {
343
+ "text": "ButtonIconPositionType"
344
+ },
345
+ "description": "Icon position relative to the label",
346
+ "attribute": "icon-position",
347
+ "reflects": true
348
+ },
349
+ {
350
+ "kind": "field",
351
+ "name": "rel",
352
+ "type": {
353
+ "text": "string"
354
+ },
355
+ "default": "''",
356
+ "description": "Relationship between the current page and the linked page.\nDefaults to a safe value for links opened in a new tab.",
357
+ "attribute": "rel"
358
+ },
359
+ {
360
+ "kind": "field",
361
+ "name": "size",
362
+ "type": {
363
+ "text": "ButtonSizeType"
364
+ },
365
+ "description": "Control size. `md` matches the historical (only) size, so existing markup\nrenders unchanged.",
366
+ "attribute": "size",
367
+ "reflects": true
368
+ },
369
+ {
370
+ "kind": "field",
371
+ "name": "type",
372
+ "type": {
373
+ "text": "ButtonTypeType"
374
+ },
375
+ "description": "Behavior when the button is activated inside a form. Ignored in link mode\n(`href`), where the element is an `<a>`.",
376
+ "attribute": "type",
377
+ "reflects": true
378
+ },
379
+ {
380
+ "kind": "field",
381
+ "name": "disabled",
382
+ "type": {
383
+ "text": "boolean"
384
+ },
385
+ "default": "false",
386
+ "description": "Blocks activation and marks the control inert. In link mode the `href` is\ndropped and `aria-disabled` is set, since `<a>` has no native `disabled`.",
387
+ "attribute": "disabled",
388
+ "reflects": true
389
+ },
390
+ {
391
+ "kind": "field",
392
+ "name": "loading",
393
+ "type": {
394
+ "text": "boolean"
395
+ },
396
+ "default": "false",
397
+ "description": "Busy state for async actions: swaps the icon for a spinner, marks the\ncontrol `aria-busy`, and blocks activation. Unlike `disabled` the control\nstays focusable, so focus is not lost mid-action — in link mode the `href`\nstill has to go (a `click` guard alone would not stop a middle-click's\n`auxclick` from opening the target), so focusability is restored with an\nexplicit `tabindex`.",
398
+ "attribute": "loading",
399
+ "reflects": true
400
+ },
401
+ {
402
+ "kind": "field",
403
+ "name": "name",
404
+ "type": {
405
+ "text": "string"
406
+ },
407
+ "default": "''",
408
+ "description": "Submitted with the form when this button is the activating submitter,\nmirroring a native submit button's `name`/`value` pair. Both reflect, as\nthey do on a native `<button>`, so the authored state is visible in the DOM\nand to attribute selectors.",
409
+ "attribute": "name",
410
+ "reflects": true
411
+ },
412
+ {
413
+ "kind": "field",
414
+ "name": "value",
415
+ "type": {
416
+ "text": "string"
417
+ },
418
+ "default": "''",
419
+ "attribute": "value",
420
+ "reflects": true
421
+ },
422
+ {
423
+ "kind": "field",
424
+ "name": "_formDisabled",
425
+ "type": {
426
+ "text": "boolean"
427
+ },
428
+ "privacy": "private",
429
+ "default": "false",
430
+ "description": "Disabled state inherited from an ancestor `<fieldset>`/form owner, kept\nseparate from the authored `disabled` property. Writing the inherited state\nback into `disabled` would reflect a `disabled` attribute the author never\nset — and because the element's own attribute keeps its effective state\ndisabled, re-enabling the fieldset would not change that state, so no\n`formDisabledCallback(false)` would arrive to undo it and the control would\nbe stuck disabled forever."
431
+ },
432
+ {
433
+ "kind": "field",
434
+ "name": "isDisabled",
435
+ "type": {
436
+ "text": "boolean"
437
+ },
438
+ "privacy": "private",
439
+ "description": "Authored `disabled` combined with any state inherited from the form.",
440
+ "readonly": true
441
+ },
442
+ {
443
+ "kind": "field",
444
+ "name": "isInert",
445
+ "type": {
446
+ "text": "boolean"
447
+ },
448
+ "privacy": "private",
449
+ "description": "True when activation should be suppressed.",
450
+ "readonly": true
451
+ },
452
+ {
453
+ "kind": "field",
454
+ "name": "computedRel",
455
+ "type": {
456
+ "text": "string | undefined"
457
+ },
458
+ "privacy": "private",
459
+ "readonly": true
460
+ },
461
+ {
462
+ "kind": "method",
463
+ "name": "_handleClick",
464
+ "privacy": "private",
465
+ "parameters": [
466
+ {
467
+ "name": "event",
468
+ "type": {
469
+ "text": "MouseEvent"
470
+ }
471
+ }
472
+ ],
473
+ "description": "The inner `<button>` is always `type=\"button\"`: it lives in the shadow root,\nso a native submit would never find the light-DOM form. Submission and reset\nare driven here through `ElementInternals.form` instead."
474
+ },
475
+ {
476
+ "kind": "method",
477
+ "name": "_submitOrReset",
478
+ "privacy": "private",
479
+ "parameters": [
480
+ {
481
+ "name": "form",
482
+ "type": {
483
+ "text": "HTMLFormElement"
484
+ }
485
+ }
486
+ ]
487
+ },
488
+ {
489
+ "kind": "method",
490
+ "name": "formDisabledCallback",
491
+ "parameters": [
492
+ {
493
+ "name": "disabled",
494
+ "type": {
495
+ "text": "boolean"
496
+ }
497
+ }
498
+ ]
499
+ },
500
+ {
501
+ "kind": "method",
502
+ "name": "_renderContent",
503
+ "privacy": "private",
504
+ "description": "The spinner takes the icon's place while loading; on a button with no icon\nit leads the label, so the only layout shift is the gap."
505
+ }
506
+ ],
507
+ "superclass": {
508
+ "name": "Base",
509
+ "package": "@common/Base/Base.ts"
510
+ },
511
+ "tagName": "dsgn-button",
512
+ "customElement": true,
513
+ "attributes": [
514
+ {
515
+ "name": "surface",
516
+ "fieldName": "surface",
517
+ "type": {
518
+ "text": "SurfaceType"
519
+ },
520
+ "description": "Surface theme variant (light or dark)"
521
+ },
522
+ {
523
+ "name": "appearance",
524
+ "fieldName": "appearance",
525
+ "type": {
526
+ "text": "ButtonAppearanceType"
527
+ },
528
+ "description": "Button style appearance"
529
+ },
530
+ {
531
+ "name": "button-weight",
532
+ "fieldName": "buttonWeight",
533
+ "type": {
534
+ "text": "ButtonWeightType"
535
+ },
536
+ "description": "Font weight of the button label. Default `semibold` for CTA energy; use\n`medium` or lighter when the button sits in dense chrome (e.g. nav) and\nneeds to visually settle with surrounding text."
537
+ },
538
+ {
539
+ "name": "target",
540
+ "fieldName": "target",
541
+ "type": {
542
+ "text": "ButtonTargetType"
543
+ },
544
+ "description": "Target for the button when used as a link"
545
+ },
546
+ {
547
+ "name": "href",
548
+ "fieldName": "href",
549
+ "type": {
550
+ "text": "string"
551
+ },
552
+ "default": "''",
553
+ "description": "Optional URL that turns the button into a link"
554
+ },
555
+ {
556
+ "name": "icon-name",
557
+ "fieldName": "iconName",
558
+ "type": {
559
+ "text": "IconName | ''"
560
+ },
561
+ "default": "''",
562
+ "description": "Icon name, resolved by the `<dsgn-icon>` this button already renders. Lets\nan icon be authored as data (markup, CMS, the docs playground) rather than\nas a Lit template. Requires the icons to be registered at app entry:\n\n import { Icon } from '@ds-gn/ui/icon';\n import * as icons from '@ds-gn/ui/icon/icons';\n Icon.registerIcons(icons);\n\n`icon` wins when both are set — that precedence lives in `<dsgn-icon>`."
563
+ },
564
+ {
565
+ "name": "icon-position",
566
+ "fieldName": "iconPosition",
567
+ "type": {
568
+ "text": "ButtonIconPositionType"
569
+ },
570
+ "description": "Icon position relative to the label"
571
+ },
572
+ {
573
+ "name": "rel",
574
+ "fieldName": "rel",
575
+ "type": {
576
+ "text": "string"
577
+ },
578
+ "default": "''",
579
+ "description": "Relationship between the current page and the linked page.\nDefaults to a safe value for links opened in a new tab."
580
+ },
581
+ {
582
+ "name": "size",
583
+ "fieldName": "size",
584
+ "type": {
585
+ "text": "ButtonSizeType"
586
+ },
587
+ "description": "Control size. `md` matches the historical (only) size, so existing markup\nrenders unchanged."
588
+ },
589
+ {
590
+ "name": "type",
591
+ "fieldName": "type",
592
+ "type": {
593
+ "text": "ButtonTypeType"
594
+ },
595
+ "description": "Behavior when the button is activated inside a form. Ignored in link mode\n(`href`), where the element is an `<a>`."
596
+ },
597
+ {
598
+ "name": "disabled",
599
+ "fieldName": "disabled",
600
+ "type": {
601
+ "text": "boolean"
602
+ },
603
+ "default": "false",
604
+ "description": "Blocks activation and marks the control inert. In link mode the `href` is\ndropped and `aria-disabled` is set, since `<a>` has no native `disabled`."
605
+ },
606
+ {
607
+ "name": "loading",
608
+ "fieldName": "loading",
609
+ "type": {
610
+ "text": "boolean"
611
+ },
612
+ "default": "false",
613
+ "description": "Busy state for async actions: swaps the icon for a spinner, marks the\ncontrol `aria-busy`, and blocks activation. Unlike `disabled` the control\nstays focusable, so focus is not lost mid-action — in link mode the `href`\nstill has to go (a `click` guard alone would not stop a middle-click's\n`auxclick` from opening the target), so focusability is restored with an\nexplicit `tabindex`."
614
+ },
615
+ {
616
+ "name": "name",
617
+ "fieldName": "name",
618
+ "type": {
619
+ "text": "string"
620
+ },
621
+ "default": "''",
622
+ "description": "Submitted with the form when this button is the activating submitter,\nmirroring a native submit button's `name`/`value` pair. Both reflect, as\nthey do on a native `<button>`, so the authored state is visible in the DOM\nand to attribute selectors."
623
+ },
624
+ {
625
+ "name": "value",
626
+ "fieldName": "value",
627
+ "type": {
628
+ "text": "string"
629
+ },
630
+ "default": "''"
631
+ }
632
+ ]
633
+ }
634
+ ],
635
+ "exports": [
636
+ {
637
+ "kind": "js",
638
+ "name": "Button",
639
+ "declaration": {
640
+ "name": "Button",
641
+ "module": "components/Button/src/Button.ts"
642
+ }
643
+ },
644
+ {
645
+ "kind": "custom-element-definition",
646
+ "name": "dsgn-button",
647
+ "declaration": {
648
+ "name": "Button",
649
+ "module": "components/Button/src/Button.ts"
650
+ }
651
+ }
652
+ ]
653
+ },
654
+ {
655
+ "kind": "javascript-module",
656
+ "path": "components/Card/src/Card.ts",
657
+ "declarations": [
658
+ {
659
+ "kind": "class",
660
+ "description": "",
661
+ "name": "Card",
662
+ "slots": [
663
+ {
664
+ "description": "Badge content above the heading.",
665
+ "name": "badge"
666
+ },
667
+ {
668
+ "description": "Card heading.",
669
+ "name": "heading"
670
+ },
671
+ {
672
+ "description": "Card media.",
673
+ "name": "media"
674
+ },
675
+ {
676
+ "description": "Card footer content.",
677
+ "name": "footer"
678
+ }
679
+ ],
680
+ "members": [
681
+ {
682
+ "kind": "field",
683
+ "name": "surface",
684
+ "type": {
685
+ "text": "SurfaceType"
686
+ },
687
+ "description": "Surface theme variant (light or dark)",
688
+ "attribute": "surface",
689
+ "reflects": true
690
+ },
691
+ {
692
+ "kind": "field",
693
+ "name": "variant",
694
+ "type": {
695
+ "text": "CardVariantType"
696
+ },
697
+ "description": "Visual card variant",
698
+ "attribute": "variant",
699
+ "reflects": true
700
+ },
701
+ {
702
+ "kind": "field",
703
+ "name": "padding",
704
+ "type": {
705
+ "text": "CardPaddingType"
706
+ },
707
+ "description": "Internal card padding",
708
+ "attribute": "padding",
709
+ "reflects": true
710
+ },
711
+ {
712
+ "kind": "field",
713
+ "name": "features",
714
+ "type": {
715
+ "text": "CardFeature[]"
716
+ },
717
+ "default": "[]",
718
+ "description": "Feature items rendered inside the card body"
719
+ },
720
+ {
721
+ "kind": "field",
722
+ "name": "#hasBadge",
723
+ "privacy": "private",
724
+ "readonly": true
725
+ },
726
+ {
727
+ "kind": "field",
728
+ "name": "#hasHeading",
729
+ "privacy": "private",
730
+ "readonly": true
731
+ },
732
+ {
733
+ "kind": "method",
734
+ "name": "#renderBadge",
735
+ "privacy": "private"
736
+ },
737
+ {
738
+ "kind": "method",
739
+ "name": "#renderHeading",
740
+ "privacy": "private"
741
+ },
742
+ {
743
+ "kind": "method",
744
+ "name": "#renderFeatures",
745
+ "privacy": "private"
746
+ }
747
+ ],
748
+ "superclass": {
749
+ "name": "Base",
750
+ "module": "/common/Base/Base.ts"
751
+ },
752
+ "tagName": "dsgn-card",
753
+ "customElement": true,
754
+ "attributes": [
755
+ {
756
+ "name": "surface",
757
+ "fieldName": "surface",
758
+ "type": {
759
+ "text": "SurfaceType"
760
+ },
761
+ "description": "Surface theme variant (light or dark)"
762
+ },
763
+ {
764
+ "name": "variant",
765
+ "fieldName": "variant",
766
+ "type": {
767
+ "text": "CardVariantType"
768
+ },
769
+ "description": "Visual card variant"
770
+ },
771
+ {
772
+ "name": "padding",
773
+ "fieldName": "padding",
774
+ "type": {
775
+ "text": "CardPaddingType"
776
+ },
777
+ "description": "Internal card padding"
778
+ }
779
+ ]
780
+ }
781
+ ],
782
+ "exports": [
783
+ {
784
+ "kind": "js",
785
+ "name": "Card",
786
+ "declaration": {
787
+ "name": "Card",
788
+ "module": "components/Card/src/Card.ts"
789
+ }
790
+ },
791
+ {
792
+ "kind": "custom-element-definition",
793
+ "name": "dsgn-card",
794
+ "declaration": {
795
+ "name": "Card",
796
+ "module": "components/Card/src/Card.ts"
797
+ }
798
+ }
799
+ ]
800
+ },
801
+ {
802
+ "kind": "javascript-module",
803
+ "path": "components/CodeBlock/src/CodeBlock.ts",
804
+ "declarations": [
805
+ {
806
+ "kind": "class",
807
+ "description": "",
808
+ "name": "CodeBlock",
809
+ "members": [
810
+ {
811
+ "kind": "field",
812
+ "name": "surface",
813
+ "type": {
814
+ "text": "SurfaceType"
815
+ },
816
+ "attribute": "surface",
817
+ "reflects": true
818
+ },
819
+ {
820
+ "kind": "field",
821
+ "name": "command",
822
+ "type": {
823
+ "text": "string"
824
+ },
825
+ "default": "''",
826
+ "attribute": "command"
827
+ },
828
+ {
829
+ "kind": "field",
830
+ "name": "output",
831
+ "type": {
832
+ "text": "string"
833
+ },
834
+ "default": "''",
835
+ "attribute": "output"
836
+ },
837
+ {
838
+ "kind": "field",
839
+ "name": "path",
840
+ "type": {
841
+ "text": "string"
842
+ },
843
+ "default": "codeBlockDefaultPath",
844
+ "attribute": "path"
845
+ }
846
+ ],
847
+ "superclass": {
848
+ "name": "Base",
849
+ "package": "@common/Base/Base.ts"
850
+ },
851
+ "tagName": "dsgn-code-block",
852
+ "customElement": true,
853
+ "attributes": [
854
+ {
855
+ "name": "surface",
856
+ "fieldName": "surface",
857
+ "type": {
858
+ "text": "SurfaceType"
859
+ }
860
+ },
861
+ {
862
+ "name": "command",
863
+ "fieldName": "command",
864
+ "type": {
865
+ "text": "string"
866
+ },
867
+ "default": "''"
868
+ },
869
+ {
870
+ "name": "output",
871
+ "fieldName": "output",
872
+ "type": {
873
+ "text": "string"
874
+ },
875
+ "default": "''"
876
+ },
877
+ {
878
+ "name": "path",
879
+ "fieldName": "path",
880
+ "type": {
881
+ "text": "string"
882
+ },
883
+ "default": "codeBlockDefaultPath"
884
+ }
885
+ ]
886
+ }
887
+ ],
888
+ "exports": [
889
+ {
890
+ "kind": "js",
891
+ "name": "CodeBlock",
892
+ "declaration": {
893
+ "name": "CodeBlock",
894
+ "module": "components/CodeBlock/src/CodeBlock.ts"
895
+ }
896
+ },
897
+ {
898
+ "kind": "custom-element-definition",
899
+ "name": "dsgn-code-block",
900
+ "declaration": {
901
+ "name": "CodeBlock",
902
+ "module": "components/CodeBlock/src/CodeBlock.ts"
903
+ }
904
+ }
905
+ ]
906
+ },
907
+ {
908
+ "kind": "javascript-module",
909
+ "path": "components/Container/src/Container.ts",
910
+ "declarations": [
911
+ {
912
+ "kind": "class",
913
+ "description": "",
914
+ "name": "Container",
915
+ "slots": [
916
+ {
917
+ "description": "Constrained page content.",
918
+ "name": ""
919
+ }
920
+ ],
921
+ "members": [
922
+ {
923
+ "kind": "field",
924
+ "name": "size",
925
+ "type": {
926
+ "text": "ContainerSizeType"
927
+ },
928
+ "description": "Maximum width of the container",
929
+ "attribute": "size",
930
+ "reflects": true
931
+ },
932
+ {
933
+ "kind": "field",
934
+ "name": "paddingX",
935
+ "type": {
936
+ "text": "ContainerPaddingType"
937
+ },
938
+ "description": "Horizontal padding (padding-inline)",
939
+ "attribute": "padding-x",
940
+ "reflects": true
941
+ },
942
+ {
943
+ "kind": "field",
944
+ "name": "paddingY",
945
+ "type": {
946
+ "text": "ContainerPaddingType"
947
+ },
948
+ "description": "Vertical padding (padding-block)",
949
+ "attribute": "padding-y",
950
+ "reflects": true
951
+ }
952
+ ],
953
+ "superclass": {
954
+ "name": "Base",
955
+ "module": "/common/Base/Base.ts"
956
+ },
957
+ "tagName": "dsgn-container",
958
+ "customElement": true,
959
+ "attributes": [
960
+ {
961
+ "name": "size",
962
+ "fieldName": "size",
963
+ "type": {
964
+ "text": "ContainerSizeType"
965
+ },
966
+ "description": "Maximum width of the container"
967
+ },
968
+ {
969
+ "name": "padding-x",
970
+ "fieldName": "paddingX",
971
+ "type": {
972
+ "text": "ContainerPaddingType"
973
+ },
974
+ "description": "Horizontal padding (padding-inline)"
975
+ },
976
+ {
977
+ "name": "padding-y",
978
+ "fieldName": "paddingY",
979
+ "type": {
980
+ "text": "ContainerPaddingType"
981
+ },
982
+ "description": "Vertical padding (padding-block)"
983
+ }
984
+ ]
985
+ }
986
+ ],
987
+ "exports": [
988
+ {
989
+ "kind": "js",
990
+ "name": "Container",
991
+ "declaration": {
992
+ "name": "Container",
993
+ "module": "components/Container/src/Container.ts"
994
+ }
995
+ },
996
+ {
997
+ "kind": "custom-element-definition",
998
+ "name": "dsgn-container",
999
+ "declaration": {
1000
+ "name": "Container",
1001
+ "module": "components/Container/src/Container.ts"
1002
+ }
1003
+ }
1004
+ ]
1005
+ },
1006
+ {
1007
+ "kind": "javascript-module",
1008
+ "path": "components/Divider/src/Divider.ts",
1009
+ "declarations": [
1010
+ {
1011
+ "kind": "class",
1012
+ "description": "",
1013
+ "name": "Divider",
1014
+ "members": [
1015
+ {
1016
+ "kind": "field",
1017
+ "name": "surface",
1018
+ "type": {
1019
+ "text": "SurfaceType"
1020
+ },
1021
+ "description": "Surface theme variant (light or dark)",
1022
+ "attribute": "surface",
1023
+ "reflects": true
1024
+ },
1025
+ {
1026
+ "kind": "field",
1027
+ "name": "spacing",
1028
+ "type": {
1029
+ "text": "DividerSpacingType"
1030
+ },
1031
+ "description": "Vertical spacing above and below the divider",
1032
+ "attribute": "spacing",
1033
+ "reflects": true
1034
+ }
1035
+ ],
1036
+ "superclass": {
1037
+ "name": "Base",
1038
+ "module": "/common/Base/Base.ts"
1039
+ },
1040
+ "tagName": "dsgn-divider",
1041
+ "customElement": true,
1042
+ "attributes": [
1043
+ {
1044
+ "name": "surface",
1045
+ "fieldName": "surface",
1046
+ "type": {
1047
+ "text": "SurfaceType"
1048
+ },
1049
+ "description": "Surface theme variant (light or dark)"
1050
+ },
1051
+ {
1052
+ "name": "spacing",
1053
+ "fieldName": "spacing",
1054
+ "type": {
1055
+ "text": "DividerSpacingType"
1056
+ },
1057
+ "description": "Vertical spacing above and below the divider"
1058
+ }
1059
+ ]
1060
+ }
1061
+ ],
1062
+ "exports": [
1063
+ {
1064
+ "kind": "js",
1065
+ "name": "Divider",
1066
+ "declaration": {
1067
+ "name": "Divider",
1068
+ "module": "components/Divider/src/Divider.ts"
1069
+ }
1070
+ },
1071
+ {
1072
+ "kind": "custom-element-definition",
1073
+ "name": "dsgn-divider",
1074
+ "declaration": {
1075
+ "name": "Divider",
1076
+ "module": "components/Divider/src/Divider.ts"
1077
+ }
1078
+ }
1079
+ ]
1080
+ },
1081
+ {
1082
+ "kind": "javascript-module",
1083
+ "path": "components/FeatureItem/src/FeatureItem.ts",
1084
+ "declarations": [
1085
+ {
1086
+ "kind": "class",
1087
+ "description": "",
1088
+ "name": "FeatureItem",
1089
+ "slots": [
1090
+ {
1091
+ "description": "Feature label.",
1092
+ "name": ""
1093
+ }
1094
+ ],
1095
+ "members": [
1096
+ {
1097
+ "kind": "field",
1098
+ "name": "surface",
1099
+ "type": {
1100
+ "text": "SurfaceType"
1101
+ },
1102
+ "description": "Surface theme — controls background and text colour",
1103
+ "attribute": "surface",
1104
+ "reflects": true
1105
+ },
1106
+ {
1107
+ "kind": "field",
1108
+ "name": "variant",
1109
+ "type": {
1110
+ "text": "FeatureItemVariantType"
1111
+ },
1112
+ "description": "Visual variant — controls icon badge colour",
1113
+ "attribute": "variant",
1114
+ "reflects": true
1115
+ },
1116
+ {
1117
+ "kind": "field",
1118
+ "name": "icon",
1119
+ "type": {
1120
+ "text": "SVGTemplateResult | undefined"
1121
+ },
1122
+ "description": "SVG template content for the icon.\nWhen omitted the icon badge is not rendered."
1123
+ }
1124
+ ],
1125
+ "superclass": {
1126
+ "name": "Base",
1127
+ "module": "/common/Base/Base.ts"
1128
+ },
1129
+ "tagName": "dsgn-feature-item",
1130
+ "customElement": true,
1131
+ "attributes": [
1132
+ {
1133
+ "name": "surface",
1134
+ "fieldName": "surface",
1135
+ "type": {
1136
+ "text": "SurfaceType"
1137
+ },
1138
+ "description": "Surface theme — controls background and text colour"
1139
+ },
1140
+ {
1141
+ "name": "variant",
1142
+ "fieldName": "variant",
1143
+ "type": {
1144
+ "text": "FeatureItemVariantType"
1145
+ },
1146
+ "description": "Visual variant — controls icon badge colour"
1147
+ }
1148
+ ]
1149
+ }
1150
+ ],
1151
+ "exports": [
1152
+ {
1153
+ "kind": "js",
1154
+ "name": "FeatureItem",
1155
+ "declaration": {
1156
+ "name": "FeatureItem",
1157
+ "module": "components/FeatureItem/src/FeatureItem.ts"
1158
+ }
1159
+ },
1160
+ {
1161
+ "kind": "custom-element-definition",
1162
+ "name": "dsgn-feature-item",
1163
+ "declaration": {
1164
+ "name": "FeatureItem",
1165
+ "module": "components/FeatureItem/src/FeatureItem.ts"
1166
+ }
1167
+ }
1168
+ ]
1169
+ },
1170
+ {
1171
+ "kind": "javascript-module",
1172
+ "path": "components/FeatureTabs/src/FeatureTabs.ts",
1173
+ "declarations": [
1174
+ {
1175
+ "kind": "class",
1176
+ "description": "",
1177
+ "name": "FeatureTabs",
1178
+ "slots": [
1179
+ {
1180
+ "description": "Optional content above the tab interface.",
1181
+ "name": "header"
1182
+ }
1183
+ ],
1184
+ "members": [
1185
+ {
1186
+ "kind": "field",
1187
+ "name": "_inView",
1188
+ "privacy": "private",
1189
+ "default": "new IntersectionController<boolean>(this, { config: { threshold: 0 }, callback: (entries) => entries[entries.length - 1]?.isIntersecting ?? false, })"
1190
+ },
1191
+ {
1192
+ "kind": "field",
1193
+ "name": "_rotate",
1194
+ "type": {
1195
+ "text": "AutoRotateController"
1196
+ },
1197
+ "privacy": "private",
1198
+ "default": "new AutoRotateController( this, DEFAULT_DURATION, () => this._inView.value === true, )"
1199
+ },
1200
+ {
1201
+ "kind": "field",
1202
+ "name": "surface",
1203
+ "type": {
1204
+ "text": "SurfaceType"
1205
+ },
1206
+ "attribute": "surface",
1207
+ "reflects": true
1208
+ },
1209
+ {
1210
+ "kind": "field",
1211
+ "name": "features",
1212
+ "type": {
1213
+ "text": "FeatureTabData[]"
1214
+ },
1215
+ "default": "DEFAULT_FEATURES"
1216
+ },
1217
+ {
1218
+ "kind": "field",
1219
+ "name": "duration",
1220
+ "type": {
1221
+ "text": "number"
1222
+ },
1223
+ "default": "DEFAULT_DURATION",
1224
+ "attribute": "duration"
1225
+ },
1226
+ {
1227
+ "kind": "field",
1228
+ "name": "codePath",
1229
+ "type": {
1230
+ "text": "string"
1231
+ },
1232
+ "default": "DEFAULT_CODE_PATH",
1233
+ "description": "Working-directory path shown in each tab's code block.",
1234
+ "attribute": "code-path"
1235
+ },
1236
+ {
1237
+ "kind": "field",
1238
+ "name": "rotatingLabel",
1239
+ "type": {
1240
+ "text": "string"
1241
+ },
1242
+ "default": "DEFAULT_ROTATING_LABEL",
1243
+ "description": "Leading text of the auto-rotate status (the `· Ns` is derived from duration).",
1244
+ "attribute": "rotating-label"
1245
+ },
1246
+ {
1247
+ "kind": "field",
1248
+ "name": "pausedLabel",
1249
+ "type": {
1250
+ "text": "string"
1251
+ },
1252
+ "default": "DEFAULT_PAUSED_LABEL",
1253
+ "description": "Auto-rotate status text shown while paused.",
1254
+ "attribute": "paused-label"
1255
+ },
1256
+ {
1257
+ "kind": "field",
1258
+ "name": "pauseAriaLabel",
1259
+ "type": {
1260
+ "text": "string"
1261
+ },
1262
+ "default": "DEFAULT_PAUSE_ARIA_LABEL",
1263
+ "description": "Accessible label for the pause control.",
1264
+ "attribute": "pause-aria-label"
1265
+ },
1266
+ {
1267
+ "kind": "field",
1268
+ "name": "resumeAriaLabel",
1269
+ "type": {
1270
+ "text": "string"
1271
+ },
1272
+ "default": "DEFAULT_RESUME_ARIA_LABEL",
1273
+ "description": "Accessible label for the resume control.",
1274
+ "attribute": "resume-aria-label"
1275
+ },
1276
+ {
1277
+ "kind": "field",
1278
+ "name": "tabsAriaLabel",
1279
+ "type": {
1280
+ "text": "string"
1281
+ },
1282
+ "default": "DEFAULT_TABS_ARIA_LABEL",
1283
+ "description": "Accessible label for the tab list.",
1284
+ "attribute": "tabs-aria-label"
1285
+ },
1286
+ {
1287
+ "kind": "method",
1288
+ "name": "_handleTabClick",
1289
+ "privacy": "private",
1290
+ "parameters": [
1291
+ {
1292
+ "name": "index",
1293
+ "type": {
1294
+ "text": "number"
1295
+ }
1296
+ }
1297
+ ]
1298
+ },
1299
+ {
1300
+ "kind": "method",
1301
+ "name": "_handleTabKeyDown",
1302
+ "privacy": "private",
1303
+ "parameters": [
1304
+ {
1305
+ "name": "event",
1306
+ "type": {
1307
+ "text": "KeyboardEvent"
1308
+ }
1309
+ },
1310
+ {
1311
+ "name": "index",
1312
+ "type": {
1313
+ "text": "number"
1314
+ }
1315
+ }
1316
+ ]
1317
+ },
1318
+ {
1319
+ "kind": "method",
1320
+ "name": "_handlePauseResume",
1321
+ "privacy": "private"
1322
+ },
1323
+ {
1324
+ "kind": "method",
1325
+ "name": "_renderIcon",
1326
+ "privacy": "private",
1327
+ "parameters": [
1328
+ {
1329
+ "name": "name",
1330
+ "type": {
1331
+ "text": "FeatureTabIcon"
1332
+ }
1333
+ },
1334
+ {
1335
+ "name": "size",
1336
+ "default": "'md'",
1337
+ "type": {
1338
+ "text": "IconSizeType"
1339
+ }
1340
+ }
1341
+ ]
1342
+ },
1343
+ {
1344
+ "kind": "method",
1345
+ "name": "_renderCtas",
1346
+ "privacy": "private",
1347
+ "parameters": [
1348
+ {
1349
+ "name": "feature",
1350
+ "type": {
1351
+ "text": "FeatureTabData"
1352
+ }
1353
+ }
1354
+ ]
1355
+ },
1356
+ {
1357
+ "kind": "method",
1358
+ "name": "_renderDetailPanel",
1359
+ "privacy": "private",
1360
+ "parameters": [
1361
+ {
1362
+ "name": "idx",
1363
+ "type": {
1364
+ "text": "number"
1365
+ }
1366
+ },
1367
+ {
1368
+ "name": "feature",
1369
+ "type": {
1370
+ "text": "FeatureTabData"
1371
+ }
1372
+ },
1373
+ {
1374
+ "name": "progress",
1375
+ "type": {
1376
+ "text": "number"
1377
+ }
1378
+ },
1379
+ {
1380
+ "name": "total",
1381
+ "type": {
1382
+ "text": "number"
1383
+ }
1384
+ },
1385
+ {
1386
+ "name": "paused",
1387
+ "type": {
1388
+ "text": "boolean"
1389
+ }
1390
+ },
1391
+ {
1392
+ "name": "features",
1393
+ "type": {
1394
+ "text": "FeatureTabData[]"
1395
+ }
1396
+ },
1397
+ {
1398
+ "name": "slot",
1399
+ "optional": true,
1400
+ "type": {
1401
+ "text": "string"
1402
+ }
1403
+ }
1404
+ ]
1405
+ },
1406
+ {
1407
+ "kind": "method",
1408
+ "name": "_renderTabList",
1409
+ "privacy": "private",
1410
+ "parameters": [
1411
+ {
1412
+ "name": "features",
1413
+ "type": {
1414
+ "text": "FeatureTabData[]"
1415
+ }
1416
+ },
1417
+ {
1418
+ "name": "idx",
1419
+ "type": {
1420
+ "text": "number"
1421
+ }
1422
+ },
1423
+ {
1424
+ "name": "progress",
1425
+ "type": {
1426
+ "text": "number"
1427
+ }
1428
+ },
1429
+ {
1430
+ "name": "paused",
1431
+ "type": {
1432
+ "text": "boolean"
1433
+ }
1434
+ },
1435
+ {
1436
+ "name": "slot",
1437
+ "optional": true,
1438
+ "type": {
1439
+ "text": "string"
1440
+ }
1441
+ }
1442
+ ]
1443
+ }
1444
+ ],
1445
+ "superclass": {
1446
+ "name": "Base",
1447
+ "package": "@common/Base/Base.ts"
1448
+ },
1449
+ "tagName": "dsgn-feature-tabs",
1450
+ "customElement": true,
1451
+ "attributes": [
1452
+ {
1453
+ "name": "surface",
1454
+ "fieldName": "surface",
1455
+ "type": {
1456
+ "text": "SurfaceType"
1457
+ }
1458
+ },
1459
+ {
1460
+ "name": "duration",
1461
+ "fieldName": "duration",
1462
+ "type": {
1463
+ "text": "number"
1464
+ },
1465
+ "default": "DEFAULT_DURATION"
1466
+ },
1467
+ {
1468
+ "name": "code-path",
1469
+ "fieldName": "codePath",
1470
+ "type": {
1471
+ "text": "string"
1472
+ },
1473
+ "default": "DEFAULT_CODE_PATH",
1474
+ "description": "Working-directory path shown in each tab's code block."
1475
+ },
1476
+ {
1477
+ "name": "rotating-label",
1478
+ "fieldName": "rotatingLabel",
1479
+ "type": {
1480
+ "text": "string"
1481
+ },
1482
+ "default": "DEFAULT_ROTATING_LABEL",
1483
+ "description": "Leading text of the auto-rotate status (the `· Ns` is derived from duration)."
1484
+ },
1485
+ {
1486
+ "name": "paused-label",
1487
+ "fieldName": "pausedLabel",
1488
+ "type": {
1489
+ "text": "string"
1490
+ },
1491
+ "default": "DEFAULT_PAUSED_LABEL",
1492
+ "description": "Auto-rotate status text shown while paused."
1493
+ },
1494
+ {
1495
+ "name": "pause-aria-label",
1496
+ "fieldName": "pauseAriaLabel",
1497
+ "type": {
1498
+ "text": "string"
1499
+ },
1500
+ "default": "DEFAULT_PAUSE_ARIA_LABEL",
1501
+ "description": "Accessible label for the pause control."
1502
+ },
1503
+ {
1504
+ "name": "resume-aria-label",
1505
+ "fieldName": "resumeAriaLabel",
1506
+ "type": {
1507
+ "text": "string"
1508
+ },
1509
+ "default": "DEFAULT_RESUME_ARIA_LABEL",
1510
+ "description": "Accessible label for the resume control."
1511
+ },
1512
+ {
1513
+ "name": "tabs-aria-label",
1514
+ "fieldName": "tabsAriaLabel",
1515
+ "type": {
1516
+ "text": "string"
1517
+ },
1518
+ "default": "DEFAULT_TABS_ARIA_LABEL",
1519
+ "description": "Accessible label for the tab list."
1520
+ }
1521
+ ]
1522
+ }
1523
+ ],
1524
+ "exports": [
1525
+ {
1526
+ "kind": "js",
1527
+ "name": "FeatureTabs",
1528
+ "declaration": {
1529
+ "name": "FeatureTabs",
1530
+ "module": "components/FeatureTabs/src/FeatureTabs.ts"
1531
+ }
1532
+ },
1533
+ {
1534
+ "kind": "custom-element-definition",
1535
+ "name": "dsgn-feature-tabs",
1536
+ "declaration": {
1537
+ "name": "FeatureTabs",
1538
+ "module": "components/FeatureTabs/src/FeatureTabs.ts"
1539
+ }
1540
+ }
1541
+ ]
1542
+ },
1543
+ {
1544
+ "kind": "javascript-module",
1545
+ "path": "components/Footer/src/Footer.ts",
1546
+ "declarations": [
1547
+ {
1548
+ "kind": "class",
1549
+ "description": "",
1550
+ "name": "Footer",
1551
+ "slots": [
1552
+ {
1553
+ "description": "Brand or logo content.",
1554
+ "name": "logo"
1555
+ },
1556
+ {
1557
+ "description": "First footer column.",
1558
+ "name": "col-1"
1559
+ },
1560
+ {
1561
+ "description": "Second footer column.",
1562
+ "name": "col-2"
1563
+ },
1564
+ {
1565
+ "description": "Third footer column.",
1566
+ "name": "col-3"
1567
+ },
1568
+ {
1569
+ "description": "Bottom-row legal or secondary content.",
1570
+ "name": "bottom"
1571
+ }
1572
+ ],
1573
+ "members": [
1574
+ {
1575
+ "kind": "field",
1576
+ "name": "surface",
1577
+ "type": {
1578
+ "text": "SurfaceType"
1579
+ },
1580
+ "description": "Surface theme variant (light or dark)",
1581
+ "attribute": "surface",
1582
+ "reflects": true
1583
+ },
1584
+ {
1585
+ "kind": "field",
1586
+ "name": "containerSize",
1587
+ "type": {
1588
+ "text": "ContainerSizeType"
1589
+ },
1590
+ "description": "Container max-width size",
1591
+ "attribute": "container-size",
1592
+ "reflects": true
1593
+ },
1594
+ {
1595
+ "kind": "field",
1596
+ "name": "containerPaddingX",
1597
+ "type": {
1598
+ "text": "ContainerPaddingType"
1599
+ },
1600
+ "description": "Container horizontal padding",
1601
+ "attribute": "padding-x",
1602
+ "reflects": true
1603
+ },
1604
+ {
1605
+ "kind": "field",
1606
+ "name": "containerPaddingY",
1607
+ "type": {
1608
+ "text": "ContainerPaddingType"
1609
+ },
1610
+ "description": "Container vertical padding",
1611
+ "attribute": "padding-y",
1612
+ "reflects": true
1613
+ }
1614
+ ],
1615
+ "superclass": {
1616
+ "name": "Base",
1617
+ "module": "/common/Base/Base.ts"
1618
+ },
1619
+ "tagName": "dsgn-footer",
1620
+ "customElement": true,
1621
+ "attributes": [
1622
+ {
1623
+ "name": "surface",
1624
+ "fieldName": "surface",
1625
+ "type": {
1626
+ "text": "SurfaceType"
1627
+ },
1628
+ "description": "Surface theme variant (light or dark)"
1629
+ },
1630
+ {
1631
+ "name": "container-size",
1632
+ "fieldName": "containerSize",
1633
+ "type": {
1634
+ "text": "ContainerSizeType"
1635
+ },
1636
+ "description": "Container max-width size"
1637
+ },
1638
+ {
1639
+ "name": "padding-x",
1640
+ "fieldName": "containerPaddingX",
1641
+ "type": {
1642
+ "text": "ContainerPaddingType"
1643
+ },
1644
+ "description": "Container horizontal padding"
1645
+ },
1646
+ {
1647
+ "name": "padding-y",
1648
+ "fieldName": "containerPaddingY",
1649
+ "type": {
1650
+ "text": "ContainerPaddingType"
1651
+ },
1652
+ "description": "Container vertical padding"
1653
+ }
1654
+ ]
1655
+ }
1656
+ ],
1657
+ "exports": [
1658
+ {
1659
+ "kind": "js",
1660
+ "name": "Footer",
1661
+ "declaration": {
1662
+ "name": "Footer",
1663
+ "module": "components/Footer/src/Footer.ts"
1664
+ }
1665
+ },
1666
+ {
1667
+ "kind": "custom-element-definition",
1668
+ "name": "dsgn-footer",
1669
+ "declaration": {
1670
+ "name": "Footer",
1671
+ "module": "components/Footer/src/Footer.ts"
1672
+ }
1673
+ }
1674
+ ]
1675
+ },
1676
+ {
1677
+ "kind": "javascript-module",
1678
+ "path": "components/FormBlock/src/FormBlock.ts",
1679
+ "declarations": [
1680
+ {
1681
+ "kind": "class",
1682
+ "description": "",
1683
+ "name": "FormBlock",
1684
+ "slots": [
1685
+ {
1686
+ "description": "Form input control.",
1687
+ "name": "input"
1688
+ },
1689
+ {
1690
+ "description": "Form submission control.",
1691
+ "name": "button"
1692
+ },
1693
+ {
1694
+ "description": "Supporting form note.",
1695
+ "name": "note"
1696
+ },
1697
+ {
1698
+ "description": "Content shown after a successful submission.",
1699
+ "name": "success"
1700
+ }
1701
+ ],
1702
+ "members": [
1703
+ {
1704
+ "kind": "field",
1705
+ "name": "surface",
1706
+ "type": {
1707
+ "text": "SurfaceType"
1708
+ },
1709
+ "attribute": "surface",
1710
+ "reflects": true
1711
+ },
1712
+ {
1713
+ "kind": "field",
1714
+ "name": "alignment",
1715
+ "type": {
1716
+ "text": "FormBlockAlignmentType"
1717
+ },
1718
+ "description": "Horizontal alignment of the form row and supporting content.",
1719
+ "attribute": "alignment",
1720
+ "reflects": true
1721
+ },
1722
+ {
1723
+ "kind": "field",
1724
+ "name": "success",
1725
+ "type": {
1726
+ "text": "boolean"
1727
+ },
1728
+ "default": "false",
1729
+ "description": "Success state. Drives the fade/swap animation that hides the form row\nand reveals the `success` slot. Application code (or any consumer)\nflips this to `true` once submission completes; for convenience, the\n`dsgn-form-success` event also sets it. Set back to `false` to reset.",
1730
+ "attribute": "success",
1731
+ "reflects": true
1732
+ },
1733
+ {
1734
+ "kind": "field",
1735
+ "name": "_fading",
1736
+ "type": {
1737
+ "text": "boolean"
1738
+ },
1739
+ "privacy": "private",
1740
+ "default": "false"
1741
+ },
1742
+ {
1743
+ "kind": "field",
1744
+ "name": "_showSuccess",
1745
+ "type": {
1746
+ "text": "boolean"
1747
+ },
1748
+ "privacy": "private",
1749
+ "default": "false"
1750
+ },
1751
+ {
1752
+ "kind": "field",
1753
+ "name": "_note",
1754
+ "privacy": "private",
1755
+ "readonly": true
1756
+ },
1757
+ {
1758
+ "kind": "field",
1759
+ "name": "_successSlot",
1760
+ "privacy": "private",
1761
+ "readonly": true
1762
+ },
1763
+ {
1764
+ "kind": "field",
1765
+ "name": "_onFormSuccess",
1766
+ "privacy": "private"
1767
+ }
1768
+ ],
1769
+ "superclass": {
1770
+ "name": "Base",
1771
+ "module": "/common/Base/Base.ts"
1772
+ },
1773
+ "tagName": "dsgn-form-block",
1774
+ "customElement": true,
1775
+ "attributes": [
1776
+ {
1777
+ "name": "surface",
1778
+ "fieldName": "surface",
1779
+ "type": {
1780
+ "text": "SurfaceType"
1781
+ }
1782
+ },
1783
+ {
1784
+ "name": "alignment",
1785
+ "fieldName": "alignment",
1786
+ "type": {
1787
+ "text": "FormBlockAlignmentType"
1788
+ },
1789
+ "description": "Horizontal alignment of the form row and supporting content."
1790
+ },
1791
+ {
1792
+ "name": "success",
1793
+ "fieldName": "success",
1794
+ "type": {
1795
+ "text": "boolean"
1796
+ },
1797
+ "default": "false",
1798
+ "description": "Success state. Drives the fade/swap animation that hides the form row\nand reveals the `success` slot. Application code (or any consumer)\nflips this to `true` once submission completes; for convenience, the\n`dsgn-form-success` event also sets it. Set back to `false` to reset."
1799
+ }
1800
+ ]
1801
+ }
1802
+ ],
1803
+ "exports": [
1804
+ {
1805
+ "kind": "js",
1806
+ "name": "FormBlock",
1807
+ "declaration": {
1808
+ "name": "FormBlock",
1809
+ "module": "components/FormBlock/src/FormBlock.ts"
1810
+ }
1811
+ },
1812
+ {
1813
+ "kind": "custom-element-definition",
1814
+ "name": "dsgn-form-block",
1815
+ "declaration": {
1816
+ "name": "FormBlock",
1817
+ "module": "components/FormBlock/src/FormBlock.ts"
1818
+ }
1819
+ }
1820
+ ]
1821
+ },
1822
+ {
1823
+ "kind": "javascript-module",
1824
+ "path": "components/Grid/src/Grid.ts",
1825
+ "declarations": [
1826
+ {
1827
+ "kind": "class",
1828
+ "description": "",
1829
+ "name": "Grid",
1830
+ "slots": [
1831
+ {
1832
+ "description": "First grid column.",
1833
+ "name": "col-1"
1834
+ },
1835
+ {
1836
+ "description": "Second grid column.",
1837
+ "name": "col-2"
1838
+ },
1839
+ {
1840
+ "description": "Third grid column when the selected layout provides one.",
1841
+ "name": "col-3"
1842
+ },
1843
+ {
1844
+ "description": "Fourth grid column when the selected layout provides one.",
1845
+ "name": "col-4"
1846
+ }
1847
+ ],
1848
+ "members": [
1849
+ {
1850
+ "kind": "field",
1851
+ "name": "cols",
1852
+ "type": {
1853
+ "text": "GridColsType"
1854
+ },
1855
+ "description": "Number of columns (all collapse to 1 on mobile, expand at lg)",
1856
+ "attribute": "cols",
1857
+ "reflects": true
1858
+ },
1859
+ {
1860
+ "kind": "field",
1861
+ "name": "gap",
1862
+ "type": {
1863
+ "text": "GridGapType"
1864
+ },
1865
+ "description": "Gap between grid cells",
1866
+ "attribute": "gap",
1867
+ "reflects": true
1868
+ },
1869
+ {
1870
+ "kind": "field",
1871
+ "name": "align",
1872
+ "type": {
1873
+ "text": "GridAlignType"
1874
+ },
1875
+ "description": "Cross-axis alignment of grid items",
1876
+ "attribute": "align",
1877
+ "reflects": true
1878
+ },
1879
+ {
1880
+ "kind": "field",
1881
+ "name": "reverse",
1882
+ "type": {
1883
+ "text": "boolean"
1884
+ },
1885
+ "default": "false",
1886
+ "description": "Reverses the visual column order at lg+ without changing DOM order",
1887
+ "attribute": "reverse",
1888
+ "reflects": true
1889
+ }
1890
+ ],
1891
+ "superclass": {
1892
+ "name": "Base",
1893
+ "module": "/common/Base/Base.ts"
1894
+ },
1895
+ "tagName": "dsgn-grid",
1896
+ "customElement": true,
1897
+ "attributes": [
1898
+ {
1899
+ "name": "cols",
1900
+ "fieldName": "cols",
1901
+ "type": {
1902
+ "text": "GridColsType"
1903
+ },
1904
+ "description": "Number of columns (all collapse to 1 on mobile, expand at lg)"
1905
+ },
1906
+ {
1907
+ "name": "gap",
1908
+ "fieldName": "gap",
1909
+ "type": {
1910
+ "text": "GridGapType"
1911
+ },
1912
+ "description": "Gap between grid cells"
1913
+ },
1914
+ {
1915
+ "name": "align",
1916
+ "fieldName": "align",
1917
+ "type": {
1918
+ "text": "GridAlignType"
1919
+ },
1920
+ "description": "Cross-axis alignment of grid items"
1921
+ },
1922
+ {
1923
+ "name": "reverse",
1924
+ "fieldName": "reverse",
1925
+ "type": {
1926
+ "text": "boolean"
1927
+ },
1928
+ "default": "false",
1929
+ "description": "Reverses the visual column order at lg+ without changing DOM order"
1930
+ }
1931
+ ]
1932
+ }
1933
+ ],
1934
+ "exports": [
1935
+ {
1936
+ "kind": "js",
1937
+ "name": "Grid",
1938
+ "declaration": {
1939
+ "name": "Grid",
1940
+ "module": "components/Grid/src/Grid.ts"
1941
+ }
1942
+ },
1943
+ {
1944
+ "kind": "custom-element-definition",
1945
+ "name": "dsgn-grid",
1946
+ "declaration": {
1947
+ "name": "Grid",
1948
+ "module": "components/Grid/src/Grid.ts"
1949
+ }
1950
+ }
1951
+ ]
1952
+ },
1953
+ {
1954
+ "kind": "javascript-module",
1955
+ "path": "components/Heading/src/Heading.ts",
1956
+ "declarations": [
1957
+ {
1958
+ "kind": "class",
1959
+ "description": "",
1960
+ "name": "Heading",
1961
+ "slots": [
1962
+ {
1963
+ "description": "Heading content.",
1964
+ "name": ""
1965
+ }
1966
+ ],
1967
+ "members": [
1968
+ {
1969
+ "kind": "field",
1970
+ "name": "_inView",
1971
+ "privacy": "private",
1972
+ "default": "new IntersectionController<boolean>(this, { config: { threshold: 0 }, callback: (entries) => entries[entries.length - 1]?.isIntersecting ?? false, })"
1973
+ },
1974
+ {
1975
+ "kind": "field",
1976
+ "name": "wordCycleController",
1977
+ "privacy": "private",
1978
+ "default": "new WordCycleController( this, undefined, undefined, () => this._inView.value === true, )"
1979
+ },
1980
+ {
1981
+ "kind": "field",
1982
+ "name": "surface",
1983
+ "type": {
1984
+ "text": "SurfaceType"
1985
+ },
1986
+ "attribute": "surface",
1987
+ "reflects": true
1988
+ },
1989
+ {
1990
+ "kind": "field",
1991
+ "name": "headingSize",
1992
+ "type": {
1993
+ "text": "HeadingSizeType"
1994
+ },
1995
+ "attribute": "heading-size",
1996
+ "reflects": true
1997
+ },
1998
+ {
1999
+ "kind": "field",
2000
+ "name": "headingWeight",
2001
+ "type": {
2002
+ "text": "HeadingWeightType"
2003
+ },
2004
+ "attribute": "heading-weight",
2005
+ "reflects": true
2006
+ },
2007
+ {
2008
+ "kind": "field",
2009
+ "name": "words",
2010
+ "type": {
2011
+ "text": "string[] | undefined"
2012
+ },
2013
+ "attribute": "words"
2014
+ },
2015
+ {
2016
+ "kind": "field",
2017
+ "name": "wordInterval",
2018
+ "type": {
2019
+ "text": "number | undefined"
2020
+ },
2021
+ "attribute": "word-interval"
2022
+ },
2023
+ {
2024
+ "kind": "field",
2025
+ "name": "wordCycles",
2026
+ "type": {
2027
+ "text": "number"
2028
+ },
2029
+ "default": "1",
2030
+ "attribute": "word-cycles"
2031
+ },
2032
+ {
2033
+ "kind": "method",
2034
+ "name": "renderContent",
2035
+ "privacy": "private",
2036
+ "return": {
2037
+ "type": {
2038
+ "text": "TemplateResult"
2039
+ }
2040
+ }
2041
+ }
2042
+ ],
2043
+ "superclass": {
2044
+ "name": "Base",
2045
+ "module": "/common/Base/Base.ts"
2046
+ },
2047
+ "tagName": "dsgn-heading",
2048
+ "customElement": true,
2049
+ "attributes": [
2050
+ {
2051
+ "name": "surface",
2052
+ "fieldName": "surface",
2053
+ "type": {
2054
+ "text": "SurfaceType"
2055
+ }
2056
+ },
2057
+ {
2058
+ "name": "heading-size",
2059
+ "fieldName": "headingSize",
2060
+ "type": {
2061
+ "text": "HeadingSizeType"
2062
+ }
2063
+ },
2064
+ {
2065
+ "name": "heading-weight",
2066
+ "fieldName": "headingWeight",
2067
+ "type": {
2068
+ "text": "HeadingWeightType"
2069
+ }
2070
+ },
2071
+ {
2072
+ "name": "words",
2073
+ "fieldName": "words",
2074
+ "type": {
2075
+ "text": "string[] | undefined"
2076
+ }
2077
+ },
2078
+ {
2079
+ "name": "word-interval",
2080
+ "fieldName": "wordInterval",
2081
+ "type": {
2082
+ "text": "number | undefined"
2083
+ }
2084
+ },
2085
+ {
2086
+ "name": "word-cycles",
2087
+ "fieldName": "wordCycles",
2088
+ "type": {
2089
+ "text": "number"
2090
+ },
2091
+ "default": "1"
2092
+ }
2093
+ ]
2094
+ }
2095
+ ],
2096
+ "exports": [
2097
+ {
2098
+ "kind": "js",
2099
+ "name": "Heading",
2100
+ "declaration": {
2101
+ "name": "Heading",
2102
+ "module": "components/Heading/src/Heading.ts"
2103
+ }
2104
+ },
2105
+ {
2106
+ "kind": "custom-element-definition",
2107
+ "name": "dsgn-heading",
2108
+ "declaration": {
2109
+ "name": "Heading",
2110
+ "module": "components/Heading/src/Heading.ts"
2111
+ }
2112
+ }
2113
+ ]
2114
+ },
2115
+ {
2116
+ "kind": "javascript-module",
2117
+ "path": "components/HeadingBlock/src/HeadingBlock.ts",
2118
+ "declarations": [
2119
+ {
2120
+ "kind": "class",
2121
+ "description": "",
2122
+ "name": "HeadingBlock",
2123
+ "slots": [
2124
+ {
2125
+ "description": "Optional eyebrow text.",
2126
+ "name": "eyebrow"
2127
+ },
2128
+ {
2129
+ "description": "Heading content.",
2130
+ "name": "heading"
2131
+ },
2132
+ {
2133
+ "description": "Supporting description.",
2134
+ "name": "description"
2135
+ },
2136
+ {
2137
+ "description": "Primary action.",
2138
+ "name": "action-primary"
2139
+ },
2140
+ {
2141
+ "description": "Secondary action.",
2142
+ "name": "action-secondary"
2143
+ }
2144
+ ],
2145
+ "members": [
2146
+ {
2147
+ "kind": "field",
2148
+ "name": "surface",
2149
+ "type": {
2150
+ "text": "SurfaceType"
2151
+ },
2152
+ "attribute": "surface",
2153
+ "reflects": true
2154
+ },
2155
+ {
2156
+ "kind": "field",
2157
+ "name": "alignment",
2158
+ "type": {
2159
+ "text": "HeadingBlockAlignmentType"
2160
+ },
2161
+ "attribute": "alignment",
2162
+ "reflects": true
2163
+ },
2164
+ {
2165
+ "kind": "field",
2166
+ "name": "_eyebrow",
2167
+ "privacy": "private",
2168
+ "readonly": true
2169
+ }
2170
+ ],
2171
+ "superclass": {
2172
+ "name": "Base",
2173
+ "module": "/common/Base/Base.ts"
2174
+ },
2175
+ "tagName": "dsgn-heading-block",
2176
+ "customElement": true,
2177
+ "attributes": [
2178
+ {
2179
+ "name": "surface",
2180
+ "fieldName": "surface",
2181
+ "type": {
2182
+ "text": "SurfaceType"
2183
+ }
2184
+ },
2185
+ {
2186
+ "name": "alignment",
2187
+ "fieldName": "alignment",
2188
+ "type": {
2189
+ "text": "HeadingBlockAlignmentType"
2190
+ }
2191
+ }
2192
+ ]
2193
+ }
2194
+ ],
2195
+ "exports": [
2196
+ {
2197
+ "kind": "js",
2198
+ "name": "HeadingBlock",
2199
+ "declaration": {
2200
+ "name": "HeadingBlock",
2201
+ "module": "components/HeadingBlock/src/HeadingBlock.ts"
2202
+ }
2203
+ },
2204
+ {
2205
+ "kind": "custom-element-definition",
2206
+ "name": "dsgn-heading-block",
2207
+ "declaration": {
2208
+ "name": "HeadingBlock",
2209
+ "module": "components/HeadingBlock/src/HeadingBlock.ts"
2210
+ }
2211
+ }
2212
+ ]
2213
+ },
2214
+ {
2215
+ "kind": "javascript-module",
2216
+ "path": "components/Hero/src/Hero.ts",
2217
+ "declarations": [
2218
+ {
2219
+ "kind": "class",
2220
+ "description": "",
2221
+ "name": "Hero",
2222
+ "slots": [
2223
+ {
2224
+ "description": "Primary hero content.",
2225
+ "name": "content"
2226
+ },
2227
+ {
2228
+ "description": "Hero form content.",
2229
+ "name": "form"
2230
+ },
2231
+ {
2232
+ "description": "Hero media or visual content.",
2233
+ "name": "asset"
2234
+ },
2235
+ {
2236
+ "description": "Supporting feature content.",
2237
+ "name": "features"
2238
+ }
2239
+ ],
2240
+ "members": [
2241
+ {
2242
+ "kind": "field",
2243
+ "name": "surface",
2244
+ "type": {
2245
+ "text": "SurfaceType"
2246
+ },
2247
+ "description": "Surface theme variant (light or dark)",
2248
+ "attribute": "surface",
2249
+ "reflects": true
2250
+ },
2251
+ {
2252
+ "kind": "field",
2253
+ "name": "layout",
2254
+ "type": {
2255
+ "text": "HeroLayoutType"
2256
+ },
2257
+ "description": "Layout arrangement of content and asset",
2258
+ "attribute": "layout",
2259
+ "reflects": true
2260
+ },
2261
+ {
2262
+ "kind": "field",
2263
+ "name": "minHeight",
2264
+ "type": {
2265
+ "text": "HeroMinHeightType"
2266
+ },
2267
+ "description": "Minimum height of the hero section",
2268
+ "attribute": "min-height",
2269
+ "reflects": true
2270
+ },
2271
+ {
2272
+ "kind": "field",
2273
+ "name": "contentAlign",
2274
+ "type": {
2275
+ "text": "HeroContentAlignType"
2276
+ },
2277
+ "description": "Horizontal alignment of content, form, and features in the centered layout.\nHas no effect on asset-right / asset-left / asset-background layouts.",
2278
+ "attribute": "content-align",
2279
+ "reflects": true
2280
+ }
2281
+ ],
2282
+ "superclass": {
2283
+ "name": "Base",
2284
+ "module": "/common/Base/Base.ts"
2285
+ },
2286
+ "tagName": "dsgn-hero",
2287
+ "customElement": true,
2288
+ "attributes": [
2289
+ {
2290
+ "name": "surface",
2291
+ "fieldName": "surface",
2292
+ "type": {
2293
+ "text": "SurfaceType"
2294
+ },
2295
+ "description": "Surface theme variant (light or dark)"
2296
+ },
2297
+ {
2298
+ "name": "layout",
2299
+ "fieldName": "layout",
2300
+ "type": {
2301
+ "text": "HeroLayoutType"
2302
+ },
2303
+ "description": "Layout arrangement of content and asset"
2304
+ },
2305
+ {
2306
+ "name": "min-height",
2307
+ "fieldName": "minHeight",
2308
+ "type": {
2309
+ "text": "HeroMinHeightType"
2310
+ },
2311
+ "description": "Minimum height of the hero section"
2312
+ },
2313
+ {
2314
+ "name": "content-align",
2315
+ "fieldName": "contentAlign",
2316
+ "type": {
2317
+ "text": "HeroContentAlignType"
2318
+ },
2319
+ "description": "Horizontal alignment of content, form, and features in the centered layout.\nHas no effect on asset-right / asset-left / asset-background layouts."
2320
+ }
2321
+ ]
2322
+ }
2323
+ ],
2324
+ "exports": [
2325
+ {
2326
+ "kind": "js",
2327
+ "name": "Hero",
2328
+ "declaration": {
2329
+ "name": "Hero",
2330
+ "module": "components/Hero/src/Hero.ts"
2331
+ }
2332
+ },
2333
+ {
2334
+ "kind": "custom-element-definition",
2335
+ "name": "dsgn-hero",
2336
+ "declaration": {
2337
+ "name": "Hero",
2338
+ "module": "components/Hero/src/Hero.ts"
2339
+ }
2340
+ }
2341
+ ]
2342
+ },
2343
+ {
2344
+ "kind": "javascript-module",
2345
+ "path": "components/Icon/src/Icon.ts",
2346
+ "declarations": [
2347
+ {
2348
+ "kind": "class",
2349
+ "description": "",
2350
+ "name": "Icon",
2351
+ "members": [
2352
+ {
2353
+ "kind": "field",
2354
+ "name": "_registry",
2355
+ "type": {
2356
+ "text": "Record<string, SVGTemplateResult>"
2357
+ },
2358
+ "privacy": "private",
2359
+ "static": true,
2360
+ "default": "{}"
2361
+ },
2362
+ {
2363
+ "kind": "method",
2364
+ "name": "registerIcons",
2365
+ "static": true,
2366
+ "return": {
2367
+ "type": {
2368
+ "text": "void"
2369
+ }
2370
+ },
2371
+ "parameters": [
2372
+ {
2373
+ "name": "registry",
2374
+ "type": {
2375
+ "text": "Record<string, SVGTemplateResult>"
2376
+ }
2377
+ }
2378
+ ],
2379
+ "description": "Register icons for use with the `icon-name` attribute.\nCall this once at your app entry point with whichever icons you need:\n\n import { Icon } from '@ds-gn/ui/icon';\n import * as allIcons from '@ds-gn/ui/icon/icons';\n Icon.registerIcons(allIcons);\n\nCustom icons work too — any SVGTemplateResult keyed by name:\n\n import { svg } from 'lit';\n Icon.registerIcons({ myIcon: svg`<path d=\"...\"/>` });"
2380
+ },
2381
+ {
2382
+ "kind": "field",
2383
+ "name": "surface",
2384
+ "type": {
2385
+ "text": "SurfaceType"
2386
+ },
2387
+ "description": "Surface theme variant (light or dark)",
2388
+ "attribute": "surface",
2389
+ "reflects": true
2390
+ },
2391
+ {
2392
+ "kind": "field",
2393
+ "name": "size",
2394
+ "type": {
2395
+ "text": "IconSizeType"
2396
+ },
2397
+ "description": "Icon size variant\n sm = 16px, md = 20px, lg = 24px (default), xl = 32px",
2398
+ "attribute": "size",
2399
+ "reflects": true
2400
+ },
2401
+ {
2402
+ "kind": "field",
2403
+ "name": "icon",
2404
+ "type": {
2405
+ "text": "SVGTemplateResult | undefined"
2406
+ },
2407
+ "description": "SVG template content for the icon.\nPass an imported icon definition directly for tree-shakeable usage:\n\n import { arrowRight } from '@ds-gn/ui/icon/icons';\n html`<dsgn-icon .icon=${arrowRight}></dsgn-icon>`"
2408
+ },
2409
+ {
2410
+ "kind": "field",
2411
+ "name": "iconName",
2412
+ "type": {
2413
+ "text": "IconName | ''"
2414
+ },
2415
+ "default": "''",
2416
+ "description": "Icon name for declarative/SSR/CMS usage.\nRequires icons to be registered via Icon.registerIcons() at app entry:\n\n <dsgn-icon icon-name=\"arrowRight\"></dsgn-icon>",
2417
+ "attribute": "icon-name"
2418
+ },
2419
+ {
2420
+ "kind": "field",
2421
+ "name": "label",
2422
+ "type": {
2423
+ "text": "string"
2424
+ },
2425
+ "default": "''",
2426
+ "description": "Accessible label for the icon.\nWhen provided, the icon is announced by screen readers.\nWhen omitted, the icon is treated as decorative (aria-hidden).",
2427
+ "attribute": "label"
2428
+ }
2429
+ ],
2430
+ "superclass": {
2431
+ "name": "Base",
2432
+ "package": "@common/Base/Base.ts"
2433
+ },
2434
+ "tagName": "dsgn-icon",
2435
+ "customElement": true,
2436
+ "attributes": [
2437
+ {
2438
+ "name": "surface",
2439
+ "fieldName": "surface",
2440
+ "type": {
2441
+ "text": "SurfaceType"
2442
+ },
2443
+ "description": "Surface theme variant (light or dark)"
2444
+ },
2445
+ {
2446
+ "name": "size",
2447
+ "fieldName": "size",
2448
+ "type": {
2449
+ "text": "IconSizeType"
2450
+ },
2451
+ "description": "Icon size variant\n sm = 16px, md = 20px, lg = 24px (default), xl = 32px"
2452
+ },
2453
+ {
2454
+ "name": "icon-name",
2455
+ "fieldName": "iconName",
2456
+ "type": {
2457
+ "text": "IconName | ''"
2458
+ },
2459
+ "default": "''",
2460
+ "description": "Icon name for declarative/SSR/CMS usage.\nRequires icons to be registered via Icon.registerIcons() at app entry:\n\n <dsgn-icon icon-name=\"arrowRight\"></dsgn-icon>"
2461
+ },
2462
+ {
2463
+ "name": "label",
2464
+ "fieldName": "label",
2465
+ "type": {
2466
+ "text": "string"
2467
+ },
2468
+ "default": "''",
2469
+ "description": "Accessible label for the icon.\nWhen provided, the icon is announced by screen readers.\nWhen omitted, the icon is treated as decorative (aria-hidden)."
2470
+ }
2471
+ ]
2472
+ }
2473
+ ],
2474
+ "exports": [
2475
+ {
2476
+ "kind": "js",
2477
+ "name": "Icon",
2478
+ "declaration": {
2479
+ "name": "Icon",
2480
+ "module": "components/Icon/src/Icon.ts"
2481
+ }
2482
+ },
2483
+ {
2484
+ "kind": "custom-element-definition",
2485
+ "name": "dsgn-icon",
2486
+ "declaration": {
2487
+ "name": "Icon",
2488
+ "module": "components/Icon/src/Icon.ts"
2489
+ }
2490
+ }
2491
+ ]
2492
+ },
2493
+ {
2494
+ "kind": "javascript-module",
2495
+ "path": "components/Image/src/Image.ts",
2496
+ "declarations": [
2497
+ {
2498
+ "kind": "class",
2499
+ "description": "",
2500
+ "name": "Image",
2501
+ "slots": [
2502
+ {
2503
+ "description": "Custom content displayed when the image cannot be loaded.",
2504
+ "name": "error"
2505
+ }
2506
+ ],
2507
+ "members": [
2508
+ {
2509
+ "kind": "field",
2510
+ "name": "surface",
2511
+ "type": {
2512
+ "text": "SurfaceType"
2513
+ },
2514
+ "description": "Surface theme variant (light or dark)",
2515
+ "attribute": "surface",
2516
+ "reflects": true
2517
+ },
2518
+ {
2519
+ "kind": "field",
2520
+ "name": "fit",
2521
+ "type": {
2522
+ "text": "ImageFitType"
2523
+ },
2524
+ "description": "CSS object-fit behavior",
2525
+ "attribute": "fit",
2526
+ "reflects": true
2527
+ },
2528
+ {
2529
+ "kind": "field",
2530
+ "name": "aspect",
2531
+ "type": {
2532
+ "text": "ImageAspectType"
2533
+ },
2534
+ "description": "Aspect ratio preset",
2535
+ "attribute": "aspect",
2536
+ "reflects": true
2537
+ },
2538
+ {
2539
+ "kind": "field",
2540
+ "name": "radius",
2541
+ "type": {
2542
+ "text": "ImageRadiusType"
2543
+ },
2544
+ "description": "Border radius",
2545
+ "attribute": "radius",
2546
+ "reflects": true
2547
+ },
2548
+ {
2549
+ "kind": "field",
2550
+ "name": "loading",
2551
+ "type": {
2552
+ "text": "ImageLoadingType"
2553
+ },
2554
+ "description": "Native loading strategy",
2555
+ "attribute": "loading",
2556
+ "reflects": true
2557
+ },
2558
+ {
2559
+ "kind": "field",
2560
+ "name": "src",
2561
+ "type": {
2562
+ "text": "string"
2563
+ },
2564
+ "default": "''",
2565
+ "description": "Image source URL",
2566
+ "attribute": "src"
2567
+ },
2568
+ {
2569
+ "kind": "field",
2570
+ "name": "alt",
2571
+ "type": {
2572
+ "text": "string"
2573
+ },
2574
+ "default": "''",
2575
+ "description": "Alt text for accessibility",
2576
+ "attribute": "alt"
2577
+ },
2578
+ {
2579
+ "kind": "field",
2580
+ "name": "srcset",
2581
+ "type": {
2582
+ "text": "string"
2583
+ },
2584
+ "default": "''",
2585
+ "description": "Responsive image srcset",
2586
+ "attribute": "srcset"
2587
+ },
2588
+ {
2589
+ "kind": "field",
2590
+ "name": "sizes",
2591
+ "type": {
2592
+ "text": "string"
2593
+ },
2594
+ "default": "''",
2595
+ "description": "Responsive sizes attribute",
2596
+ "attribute": "sizes"
2597
+ },
2598
+ {
2599
+ "kind": "field",
2600
+ "name": "width",
2601
+ "type": {
2602
+ "text": "number | undefined"
2603
+ },
2604
+ "description": "Intrinsic width for CLS prevention",
2605
+ "attribute": "width"
2606
+ },
2607
+ {
2608
+ "kind": "field",
2609
+ "name": "height",
2610
+ "type": {
2611
+ "text": "number | undefined"
2612
+ },
2613
+ "description": "Intrinsic height for CLS prevention",
2614
+ "attribute": "height"
2615
+ },
2616
+ {
2617
+ "kind": "field",
2618
+ "name": "fetchpriority",
2619
+ "type": {
2620
+ "text": "string"
2621
+ },
2622
+ "default": "''",
2623
+ "description": "Fetch priority hint for the underlying <img> element.\nUse \"high\" for above-the-fold images (e.g. hero) to signal LCP importance.",
2624
+ "attribute": "fetchpriority"
2625
+ },
2626
+ {
2627
+ "kind": "field",
2628
+ "name": "fallbackSrc",
2629
+ "type": {
2630
+ "text": "string"
2631
+ },
2632
+ "default": "''",
2633
+ "description": "Fallback image URL when primary source fails",
2634
+ "attribute": "fallback-src"
2635
+ },
2636
+ {
2637
+ "kind": "field",
2638
+ "name": "_hasError",
2639
+ "type": {
2640
+ "text": "boolean"
2641
+ },
2642
+ "privacy": "private",
2643
+ "default": "false"
2644
+ },
2645
+ {
2646
+ "kind": "method",
2647
+ "name": "_handleError",
2648
+ "privacy": "private"
2649
+ },
2650
+ {
2651
+ "kind": "method",
2652
+ "name": "#renderError",
2653
+ "privacy": "private"
2654
+ },
2655
+ {
2656
+ "kind": "method",
2657
+ "name": "#renderFallback",
2658
+ "privacy": "private"
2659
+ }
2660
+ ],
2661
+ "events": [
2662
+ {
2663
+ "description": "Fired when the image fails to load; `detail` is `{ src }`.",
2664
+ "name": "dsgn-image-error"
2665
+ }
2666
+ ],
2667
+ "superclass": {
2668
+ "name": "Base",
2669
+ "package": "@common/Base/Base.ts"
2670
+ },
2671
+ "tagName": "dsgn-image",
2672
+ "customElement": true,
2673
+ "attributes": [
2674
+ {
2675
+ "name": "surface",
2676
+ "fieldName": "surface",
2677
+ "type": {
2678
+ "text": "SurfaceType"
2679
+ },
2680
+ "description": "Surface theme variant (light or dark)"
2681
+ },
2682
+ {
2683
+ "name": "fit",
2684
+ "fieldName": "fit",
2685
+ "type": {
2686
+ "text": "ImageFitType"
2687
+ },
2688
+ "description": "CSS object-fit behavior"
2689
+ },
2690
+ {
2691
+ "name": "aspect",
2692
+ "fieldName": "aspect",
2693
+ "type": {
2694
+ "text": "ImageAspectType"
2695
+ },
2696
+ "description": "Aspect ratio preset"
2697
+ },
2698
+ {
2699
+ "name": "radius",
2700
+ "fieldName": "radius",
2701
+ "type": {
2702
+ "text": "ImageRadiusType"
2703
+ },
2704
+ "description": "Border radius"
2705
+ },
2706
+ {
2707
+ "name": "loading",
2708
+ "fieldName": "loading",
2709
+ "type": {
2710
+ "text": "ImageLoadingType"
2711
+ },
2712
+ "description": "Native loading strategy"
2713
+ },
2714
+ {
2715
+ "name": "src",
2716
+ "fieldName": "src",
2717
+ "type": {
2718
+ "text": "string"
2719
+ },
2720
+ "default": "''",
2721
+ "description": "Image source URL"
2722
+ },
2723
+ {
2724
+ "name": "alt",
2725
+ "fieldName": "alt",
2726
+ "type": {
2727
+ "text": "string"
2728
+ },
2729
+ "default": "''",
2730
+ "description": "Alt text for accessibility"
2731
+ },
2732
+ {
2733
+ "name": "srcset",
2734
+ "fieldName": "srcset",
2735
+ "type": {
2736
+ "text": "string"
2737
+ },
2738
+ "default": "''",
2739
+ "description": "Responsive image srcset"
2740
+ },
2741
+ {
2742
+ "name": "sizes",
2743
+ "fieldName": "sizes",
2744
+ "type": {
2745
+ "text": "string"
2746
+ },
2747
+ "default": "''",
2748
+ "description": "Responsive sizes attribute"
2749
+ },
2750
+ {
2751
+ "name": "width",
2752
+ "fieldName": "width",
2753
+ "type": {
2754
+ "text": "number | undefined"
2755
+ },
2756
+ "description": "Intrinsic width for CLS prevention"
2757
+ },
2758
+ {
2759
+ "name": "height",
2760
+ "fieldName": "height",
2761
+ "type": {
2762
+ "text": "number | undefined"
2763
+ },
2764
+ "description": "Intrinsic height for CLS prevention"
2765
+ },
2766
+ {
2767
+ "name": "fetchpriority",
2768
+ "fieldName": "fetchpriority",
2769
+ "type": {
2770
+ "text": "string"
2771
+ },
2772
+ "default": "''",
2773
+ "description": "Fetch priority hint for the underlying <img> element.\nUse \"high\" for above-the-fold images (e.g. hero) to signal LCP importance."
2774
+ },
2775
+ {
2776
+ "name": "fallback-src",
2777
+ "fieldName": "fallbackSrc",
2778
+ "type": {
2779
+ "text": "string"
2780
+ },
2781
+ "default": "''",
2782
+ "description": "Fallback image URL when primary source fails"
2783
+ }
2784
+ ]
2785
+ }
2786
+ ],
2787
+ "exports": [
2788
+ {
2789
+ "kind": "js",
2790
+ "name": "Image",
2791
+ "declaration": {
2792
+ "name": "Image",
2793
+ "module": "components/Image/src/Image.ts"
2794
+ }
2795
+ },
2796
+ {
2797
+ "kind": "custom-element-definition",
2798
+ "name": "dsgn-image",
2799
+ "declaration": {
2800
+ "name": "Image",
2801
+ "module": "components/Image/src/Image.ts"
2802
+ }
2803
+ }
2804
+ ]
2805
+ },
2806
+ {
2807
+ "kind": "javascript-module",
2808
+ "path": "components/Input/src/Input.ts",
2809
+ "declarations": [
2810
+ {
2811
+ "kind": "class",
2812
+ "description": "",
2813
+ "name": "Input",
2814
+ "members": [
2815
+ {
2816
+ "kind": "field",
2817
+ "name": "formAssociated",
2818
+ "type": {
2819
+ "text": "boolean"
2820
+ },
2821
+ "static": true,
2822
+ "default": "true"
2823
+ },
2824
+ {
2825
+ "kind": "field",
2826
+ "name": "#internals",
2827
+ "privacy": "private",
2828
+ "type": {
2829
+ "text": "ElementInternals"
2830
+ }
2831
+ },
2832
+ {
2833
+ "kind": "field",
2834
+ "name": "surface",
2835
+ "type": {
2836
+ "text": "SurfaceType"
2837
+ },
2838
+ "attribute": "surface",
2839
+ "reflects": true
2840
+ },
2841
+ {
2842
+ "kind": "field",
2843
+ "name": "type",
2844
+ "type": {
2845
+ "text": "InputTypeType"
2846
+ },
2847
+ "attribute": "type",
2848
+ "reflects": true
2849
+ },
2850
+ {
2851
+ "kind": "field",
2852
+ "name": "placeholder",
2853
+ "type": {
2854
+ "text": "string"
2855
+ },
2856
+ "default": "''",
2857
+ "attribute": "placeholder"
2858
+ },
2859
+ {
2860
+ "kind": "field",
2861
+ "name": "label",
2862
+ "type": {
2863
+ "text": "string"
2864
+ },
2865
+ "default": "''",
2866
+ "attribute": "label"
2867
+ },
2868
+ {
2869
+ "kind": "field",
2870
+ "name": "ariaLabel",
2871
+ "type": {
2872
+ "text": "string"
2873
+ },
2874
+ "default": "''",
2875
+ "attribute": "aria-label"
2876
+ },
2877
+ {
2878
+ "kind": "field",
2879
+ "name": "error",
2880
+ "type": {
2881
+ "text": "string"
2882
+ },
2883
+ "default": "''",
2884
+ "attribute": "error"
2885
+ },
2886
+ {
2887
+ "kind": "field",
2888
+ "name": "size",
2889
+ "type": {
2890
+ "text": "InputSizeType"
2891
+ },
2892
+ "attribute": "size",
2893
+ "reflects": true
2894
+ },
2895
+ {
2896
+ "kind": "field",
2897
+ "name": "value",
2898
+ "type": {
2899
+ "text": "string"
2900
+ },
2901
+ "default": "''",
2902
+ "description": "Current value. Deliberately not reflected: a native `<input>`'s `value`\ncontent attribute is the *default* value, not the live one, so reflecting\nwould overwrite the author's `value=\"\"` default on every keystroke.",
2903
+ "attribute": "value"
2904
+ },
2905
+ {
2906
+ "kind": "field",
2907
+ "name": "name",
2908
+ "type": {
2909
+ "text": "string"
2910
+ },
2911
+ "default": "''",
2912
+ "description": "Field name under which the value is submitted. Reflected because the browser\nbuilds a form's entry list from the `name` **content attribute**, not the\nIDL property — so a name set only as a property (e.g. via the React wrapper)\nwould leave the host without the attribute and the value would be silently\ndropped from `FormData`.",
2913
+ "attribute": "name",
2914
+ "reflects": true
2915
+ },
2916
+ {
2917
+ "kind": "field",
2918
+ "name": "disabled",
2919
+ "type": {
2920
+ "text": "boolean"
2921
+ },
2922
+ "default": "false",
2923
+ "attribute": "disabled",
2924
+ "reflects": true
2925
+ },
2926
+ {
2927
+ "kind": "field",
2928
+ "name": "required",
2929
+ "type": {
2930
+ "text": "boolean"
2931
+ },
2932
+ "default": "false",
2933
+ "attribute": "required",
2934
+ "reflects": true
2935
+ },
2936
+ {
2937
+ "kind": "field",
2938
+ "name": "_formDisabled",
2939
+ "type": {
2940
+ "text": "boolean"
2941
+ },
2942
+ "privacy": "private",
2943
+ "default": "false",
2944
+ "description": "Disabled state inherited from an ancestor `<fieldset>`/form owner, kept\nseparate from the authored `disabled` property. Writing the inherited state\nback into `disabled` would reflect a `disabled` attribute the author never\nset — and because the element's own attribute keeps its effective state\ndisabled, re-enabling the fieldset would not change that state, so no\n`formDisabledCallback(false)` would arrive to undo it and the control would\nbe stuck disabled forever."
2945
+ },
2946
+ {
2947
+ "kind": "field",
2948
+ "name": "isDisabled",
2949
+ "type": {
2950
+ "text": "boolean"
2951
+ },
2952
+ "privacy": "private",
2953
+ "description": "Authored `disabled` combined with any state inherited from the form.",
2954
+ "readonly": true
2955
+ },
2956
+ {
2957
+ "kind": "method",
2958
+ "name": "_syncValidity",
2959
+ "privacy": "private"
2960
+ },
2961
+ {
2962
+ "kind": "method",
2963
+ "name": "_handleInput",
2964
+ "privacy": "private",
2965
+ "parameters": [
2966
+ {
2967
+ "name": "e",
2968
+ "type": {
2969
+ "text": "Event"
2970
+ }
2971
+ }
2972
+ ]
2973
+ },
2974
+ {
2975
+ "kind": "method",
2976
+ "name": "formResetCallback"
2977
+ },
2978
+ {
2979
+ "kind": "method",
2980
+ "name": "formDisabledCallback",
2981
+ "parameters": [
2982
+ {
2983
+ "name": "disabled",
2984
+ "type": {
2985
+ "text": "boolean"
2986
+ }
2987
+ }
2988
+ ]
2989
+ }
2990
+ ],
2991
+ "events": [
2992
+ {
2993
+ "description": "Fired when the value changes; `detail` is `{ value, name }`.",
2994
+ "name": "dsgn-input"
2995
+ }
2996
+ ],
2997
+ "superclass": {
2998
+ "name": "Base",
2999
+ "module": "/common/Base/Base.ts"
3000
+ },
3001
+ "tagName": "dsgn-input",
3002
+ "customElement": true,
3003
+ "attributes": [
3004
+ {
3005
+ "name": "surface",
3006
+ "fieldName": "surface",
3007
+ "type": {
3008
+ "text": "SurfaceType"
3009
+ }
3010
+ },
3011
+ {
3012
+ "name": "type",
3013
+ "fieldName": "type",
3014
+ "type": {
3015
+ "text": "InputTypeType"
3016
+ }
3017
+ },
3018
+ {
3019
+ "name": "placeholder",
3020
+ "fieldName": "placeholder",
3021
+ "type": {
3022
+ "text": "string"
3023
+ },
3024
+ "default": "''"
3025
+ },
3026
+ {
3027
+ "name": "label",
3028
+ "fieldName": "label",
3029
+ "type": {
3030
+ "text": "string"
3031
+ },
3032
+ "default": "''"
3033
+ },
3034
+ {
3035
+ "name": "aria-label",
3036
+ "fieldName": "ariaLabel",
3037
+ "type": {
3038
+ "text": "string"
3039
+ },
3040
+ "default": "''"
3041
+ },
3042
+ {
3043
+ "name": "error",
3044
+ "fieldName": "error",
3045
+ "type": {
3046
+ "text": "string"
3047
+ },
3048
+ "default": "''"
3049
+ },
3050
+ {
3051
+ "name": "size",
3052
+ "fieldName": "size",
3053
+ "type": {
3054
+ "text": "InputSizeType"
3055
+ }
3056
+ },
3057
+ {
3058
+ "name": "value",
3059
+ "fieldName": "value",
3060
+ "type": {
3061
+ "text": "string"
3062
+ },
3063
+ "default": "''",
3064
+ "description": "Current value. Deliberately not reflected: a native `<input>`'s `value`\ncontent attribute is the *default* value, not the live one, so reflecting\nwould overwrite the author's `value=\"\"` default on every keystroke."
3065
+ },
3066
+ {
3067
+ "name": "name",
3068
+ "fieldName": "name",
3069
+ "type": {
3070
+ "text": "string"
3071
+ },
3072
+ "default": "''",
3073
+ "description": "Field name under which the value is submitted. Reflected because the browser\nbuilds a form's entry list from the `name` **content attribute**, not the\nIDL property — so a name set only as a property (e.g. via the React wrapper)\nwould leave the host without the attribute and the value would be silently\ndropped from `FormData`."
3074
+ },
3075
+ {
3076
+ "name": "disabled",
3077
+ "fieldName": "disabled",
3078
+ "type": {
3079
+ "text": "boolean"
3080
+ },
3081
+ "default": "false"
3082
+ },
3083
+ {
3084
+ "name": "required",
3085
+ "fieldName": "required",
3086
+ "type": {
3087
+ "text": "boolean"
3088
+ },
3089
+ "default": "false"
3090
+ }
3091
+ ]
3092
+ }
3093
+ ],
3094
+ "exports": [
3095
+ {
3096
+ "kind": "js",
3097
+ "name": "Input",
3098
+ "declaration": {
3099
+ "name": "Input",
3100
+ "module": "components/Input/src/Input.ts"
3101
+ }
3102
+ },
3103
+ {
3104
+ "kind": "custom-element-definition",
3105
+ "name": "dsgn-input",
3106
+ "declaration": {
3107
+ "name": "Input",
3108
+ "module": "components/Input/src/Input.ts"
3109
+ }
3110
+ }
3111
+ ]
3112
+ },
3113
+ {
3114
+ "kind": "javascript-module",
3115
+ "path": "components/Modal/src/Modal.ts",
3116
+ "declarations": [
3117
+ {
3118
+ "kind": "class",
3119
+ "description": "Accessible modal dialog built on the native `<dialog>` element and\n`showModal()`, so the top layer, background inertness, and focus containment\ncome from the platform rather than a hand-rolled focus trap.\n\nAll copy is supplied by the consumer through slots — `heading`, `description`,\nthe default content slot, `footer`, and an optional `close` control whose\nactivation is picked up automatically.",
3120
+ "name": "Modal",
3121
+ "cssParts": [
3122
+ {
3123
+ "description": "Native dialog element.",
3124
+ "name": "dialog"
3125
+ },
3126
+ {
3127
+ "description": "Built-in close button.",
3128
+ "name": "close-button"
3129
+ }
3130
+ ],
3131
+ "slots": [
3132
+ {
3133
+ "description": "Modal body content.",
3134
+ "name": ""
3135
+ },
3136
+ {
3137
+ "description": "Title content; supplies the dialog's accessible name.",
3138
+ "name": "heading"
3139
+ },
3140
+ {
3141
+ "description": "Supporting text referenced by `aria-describedby`.",
3142
+ "name": "description"
3143
+ },
3144
+ {
3145
+ "description": "Actions, typically buttons.",
3146
+ "name": "footer"
3147
+ },
3148
+ {
3149
+ "description": "A close control; clicking anything slotted here requests a close.",
3150
+ "name": "close"
3151
+ }
3152
+ ],
3153
+ "members": [
3154
+ {
3155
+ "kind": "field",
3156
+ "name": "_dialog",
3157
+ "type": {
3158
+ "text": "HTMLDialogElement | null"
3159
+ },
3160
+ "privacy": "private"
3161
+ },
3162
+ {
3163
+ "kind": "field",
3164
+ "name": "surface",
3165
+ "type": {
3166
+ "text": "SurfaceType"
3167
+ },
3168
+ "attribute": "surface",
3169
+ "reflects": true
3170
+ },
3171
+ {
3172
+ "kind": "field",
3173
+ "name": "open",
3174
+ "type": {
3175
+ "text": "boolean"
3176
+ },
3177
+ "default": "false",
3178
+ "description": "Whether the modal is shown. This is the single source of truth: the\ncomponent drives `showModal()`/`close()` from it, and sets it back to\n`false` itself whenever the dialog closes (Escape, backdrop, close control).\nA consumer holding `open` in its own state should therefore listen for\n`dsgn-modal-close` and mirror the change back, otherwise the two will drift\non the next open.",
3179
+ "attribute": "open",
3180
+ "reflects": true
3181
+ },
3182
+ {
3183
+ "kind": "field",
3184
+ "name": "placement",
3185
+ "type": {
3186
+ "text": "ModalPlacementType"
3187
+ },
3188
+ "attribute": "placement",
3189
+ "reflects": true
3190
+ },
3191
+ {
3192
+ "kind": "field",
3193
+ "name": "motion",
3194
+ "type": {
3195
+ "text": "ModalMotionType"
3196
+ },
3197
+ "description": "Motion origin. `inherit` follows `placement`; `none` is fade-only.",
3198
+ "attribute": "motion",
3199
+ "reflects": true
3200
+ },
3201
+ {
3202
+ "kind": "field",
3203
+ "name": "size",
3204
+ "type": {
3205
+ "text": "ModalSizeType"
3206
+ },
3207
+ "attribute": "size",
3208
+ "reflects": true
3209
+ },
3210
+ {
3211
+ "kind": "field",
3212
+ "name": "ariaLabel",
3213
+ "type": {
3214
+ "text": "string"
3215
+ },
3216
+ "default": "''",
3217
+ "description": "Accessible name for the dialog, for the case where there is no visible\nheading. A filled `heading` slot takes precedence.",
3218
+ "attribute": "aria-label"
3219
+ },
3220
+ {
3221
+ "kind": "field",
3222
+ "name": "closeLabel",
3223
+ "type": {
3224
+ "text": "string"
3225
+ },
3226
+ "default": "'Close'",
3227
+ "description": "Accessible name for the built-in close control. Supplied by the CMS via the\nconsuming template; the default is a Storybook/dev fallback only. Ignored\nwhen the consumer slots their own control into `close`.",
3228
+ "attribute": "close-label"
3229
+ },
3230
+ {
3231
+ "kind": "field",
3232
+ "name": "noCloseControl",
3233
+ "type": {
3234
+ "text": "boolean"
3235
+ },
3236
+ "default": "false",
3237
+ "description": "Drops the built-in close control. Every modal gets one by default so there\nis always a visible way out; opt out only when the flow supplies its own\ndismissal (a footer \"Cancel\", say) — and never together with\n`no-escape-dismiss`, which would leave keyboard users stuck.\n\nA control slotted into `close` replaces the built-in one whatever this is\nset to, since it is the slot's fallback content.",
3238
+ "attribute": "no-close-control",
3239
+ "reflects": true
3240
+ },
3241
+ {
3242
+ "kind": "field",
3243
+ "name": "noBackdropDismiss",
3244
+ "type": {
3245
+ "text": "boolean"
3246
+ },
3247
+ "default": "false",
3248
+ "description": "Blocks dismissal by clicking the backdrop.",
3249
+ "attribute": "no-backdrop-dismiss",
3250
+ "reflects": true
3251
+ },
3252
+ {
3253
+ "kind": "field",
3254
+ "name": "noEscapeDismiss",
3255
+ "type": {
3256
+ "text": "boolean"
3257
+ },
3258
+ "default": "false",
3259
+ "description": "Blocks dismissal by Escape. Reserve it for flows that would lose data —\nalways leave a visible way out (a close control or a footer action), or\nkeyboard users are stuck.",
3260
+ "attribute": "no-escape-dismiss",
3261
+ "reflects": true
3262
+ },
3263
+ {
3264
+ "kind": "field",
3265
+ "name": "_closing",
3266
+ "type": {
3267
+ "text": "boolean"
3268
+ },
3269
+ "privacy": "private",
3270
+ "default": "false",
3271
+ "description": "Drives `data-state`, which the stylesheet keys the exit animation on."
3272
+ },
3273
+ {
3274
+ "kind": "field",
3275
+ "name": "_hasHeading",
3276
+ "type": {
3277
+ "text": "boolean"
3278
+ },
3279
+ "privacy": "private",
3280
+ "default": "false"
3281
+ },
3282
+ {
3283
+ "kind": "field",
3284
+ "name": "_hasDescription",
3285
+ "type": {
3286
+ "text": "boolean"
3287
+ },
3288
+ "privacy": "private",
3289
+ "default": "false"
3290
+ },
3291
+ {
3292
+ "kind": "field",
3293
+ "name": "_hasFooter",
3294
+ "type": {
3295
+ "text": "boolean"
3296
+ },
3297
+ "privacy": "private",
3298
+ "default": "false"
3299
+ },
3300
+ {
3301
+ "kind": "field",
3302
+ "name": "_hasCloseControl",
3303
+ "type": {
3304
+ "text": "boolean"
3305
+ },
3306
+ "privacy": "private",
3307
+ "default": "false"
3308
+ },
3309
+ {
3310
+ "kind": "field",
3311
+ "name": "_closeReason",
3312
+ "type": {
3313
+ "text": "ModalCloseReasonType"
3314
+ },
3315
+ "privacy": "private"
3316
+ },
3317
+ {
3318
+ "kind": "field",
3319
+ "name": "_returnValue",
3320
+ "type": {
3321
+ "text": "string"
3322
+ },
3323
+ "privacy": "private",
3324
+ "default": "''"
3325
+ },
3326
+ {
3327
+ "kind": "field",
3328
+ "name": "_previouslyFocused",
3329
+ "type": {
3330
+ "text": "HTMLElement | null"
3331
+ },
3332
+ "privacy": "private",
3333
+ "default": "null"
3334
+ },
3335
+ {
3336
+ "kind": "field",
3337
+ "name": "_pointerDownOnBackdrop",
3338
+ "type": {
3339
+ "text": "boolean"
3340
+ },
3341
+ "privacy": "private",
3342
+ "default": "false"
3343
+ },
3344
+ {
3345
+ "kind": "field",
3346
+ "name": "_holdsScrollLock",
3347
+ "type": {
3348
+ "text": "boolean"
3349
+ },
3350
+ "privacy": "private",
3351
+ "default": "false"
3352
+ },
3353
+ {
3354
+ "kind": "field",
3355
+ "name": "_hasCloseAffordance",
3356
+ "type": {
3357
+ "text": "boolean"
3358
+ },
3359
+ "privacy": "private",
3360
+ "description": "Whether the header will show a close control — either one the consumer\nslotted, or the built-in default that has not been opted out of.",
3361
+ "readonly": true
3362
+ },
3363
+ {
3364
+ "kind": "field",
3365
+ "name": "_motionOrigin",
3366
+ "type": {
3367
+ "text": "string"
3368
+ },
3369
+ "privacy": "private",
3370
+ "description": "The resolved animation origin, with `inherit` folded into `placement`.",
3371
+ "readonly": true
3372
+ },
3373
+ {
3374
+ "kind": "method",
3375
+ "name": "show",
3376
+ "description": "Show the modal. No-op if it is already open."
3377
+ },
3378
+ {
3379
+ "kind": "method",
3380
+ "name": "close",
3381
+ "parameters": [
3382
+ {
3383
+ "name": "returnValue",
3384
+ "default": "''",
3385
+ "type": {
3386
+ "text": "string"
3387
+ }
3388
+ }
3389
+ ],
3390
+ "description": "Close the modal immediately, without firing the cancelable\n`dsgn-modal-request-close` — this is the imperative \"I have decided\" path.\nThe optional `returnValue` lands on the native dialog and on the\n`dsgn-modal-close` detail."
3391
+ },
3392
+ {
3393
+ "kind": "method",
3394
+ "name": "requestClose",
3395
+ "return": {
3396
+ "type": {
3397
+ "text": "boolean"
3398
+ }
3399
+ },
3400
+ "parameters": [
3401
+ {
3402
+ "name": "reason",
3403
+ "default": "modalCloseReasonValues.API",
3404
+ "type": {
3405
+ "text": "ModalCloseReasonType"
3406
+ }
3407
+ }
3408
+ ],
3409
+ "description": "Ask to close. Fires the cancelable `dsgn-modal-request-close`; the modal\nstays open if a listener calls `preventDefault()`. This is the path Escape,\nthe backdrop, and the slotted close control take, so a consumer can guard\nall of them (e.g. \"discard unsaved changes?\") in one listener."
3410
+ },
3411
+ {
3412
+ "kind": "method",
3413
+ "name": "_syncDialogState",
3414
+ "privacy": "private"
3415
+ },
3416
+ {
3417
+ "kind": "method",
3418
+ "name": "_openDialog",
3419
+ "privacy": "private",
3420
+ "parameters": [
3421
+ {
3422
+ "name": "dialog",
3423
+ "type": {
3424
+ "text": "HTMLDialogElement"
3425
+ }
3426
+ }
3427
+ ]
3428
+ },
3429
+ {
3430
+ "kind": "method",
3431
+ "name": "_runCloseSequence",
3432
+ "privacy": "private",
3433
+ "parameters": [
3434
+ {
3435
+ "name": "dialog",
3436
+ "type": {
3437
+ "text": "HTMLDialogElement"
3438
+ }
3439
+ }
3440
+ ],
3441
+ "description": "Play the exit animation, then leave the top layer. The dialog stays in the\ntop layer for the whole animation because `dialog.close()` is what removes\nit, and that is deliberately the last step — no timers involved, the wait is\non the animations' own `finished` promises."
3442
+ },
3443
+ {
3444
+ "kind": "method",
3445
+ "name": "_focusInitialElement",
3446
+ "privacy": "private",
3447
+ "parameters": [
3448
+ {
3449
+ "name": "dialog",
3450
+ "type": {
3451
+ "text": "HTMLDialogElement"
3452
+ }
3453
+ }
3454
+ ],
3455
+ "description": "Deliberate initial focus: an author-marked `[autofocus]` (light DOM first,\nsince that is where the modal's content lives), otherwise the dialog itself.\nThe native autofocus algorithm is not relied on — it is inconsistent for\ncontent that reaches the dialog through a slot."
3456
+ },
3457
+ {
3458
+ "kind": "method",
3459
+ "name": "_restoreFocus",
3460
+ "privacy": "private"
3461
+ },
3462
+ {
3463
+ "kind": "method",
3464
+ "name": "_acquireScrollLock",
3465
+ "privacy": "private"
3466
+ },
3467
+ {
3468
+ "kind": "method",
3469
+ "name": "_releaseScrollLock",
3470
+ "privacy": "private"
3471
+ },
3472
+ {
3473
+ "kind": "method",
3474
+ "name": "_handleNativeClose",
3475
+ "privacy": "private",
3476
+ "description": "The native `close` event is the single point where \"the dialog is now\nshut\" is handled, so a consumer calling `close()` on the inner dialog\ndirectly still gets the scroll unlock, focus restore, and public event."
3477
+ },
3478
+ {
3479
+ "kind": "method",
3480
+ "name": "_handleCancel",
3481
+ "privacy": "private",
3482
+ "parameters": [
3483
+ {
3484
+ "name": "event",
3485
+ "type": {
3486
+ "text": "Event"
3487
+ }
3488
+ }
3489
+ ],
3490
+ "description": "Escape (and any other platform close request) is always prevented, because\nthe default behavior would yank the dialog out of the top layer before the\nexit animation could run. The dismissal is then re-issued through\n`requestClose()` so it is cancelable and animated like every other path."
3491
+ },
3492
+ {
3493
+ "kind": "method",
3494
+ "name": "_handlePointerDown",
3495
+ "privacy": "private",
3496
+ "parameters": [
3497
+ {
3498
+ "name": "event",
3499
+ "type": {
3500
+ "text": "MouseEvent"
3501
+ }
3502
+ }
3503
+ ],
3504
+ "description": "Clicks on the backdrop are reported with the dialog itself as the target\n(the panel is the dialog's only child and covers it). Requiring the press\n*and* the release to land there stops a text selection that started inside\nthe modal and ended on the backdrop from dismissing it."
3505
+ },
3506
+ {
3507
+ "kind": "method",
3508
+ "name": "_handleDialogClick",
3509
+ "privacy": "private",
3510
+ "parameters": [
3511
+ {
3512
+ "name": "event",
3513
+ "type": {
3514
+ "text": "MouseEvent"
3515
+ }
3516
+ }
3517
+ ]
3518
+ },
3519
+ {
3520
+ "kind": "method",
3521
+ "name": "_handleCloseControlClick",
3522
+ "privacy": "private"
3523
+ },
3524
+ {
3525
+ "kind": "method",
3526
+ "name": "_handleSlotChange",
3527
+ "privacy": "private",
3528
+ "parameters": [
3529
+ {
3530
+ "name": "event",
3531
+ "type": {
3532
+ "text": "Event"
3533
+ }
3534
+ }
3535
+ ],
3536
+ "description": "Empty regions collapse rather than leaving stray padding, and an empty\n`heading`/`description` must not be referenced by `aria-labelledby` /\n`aria-describedby` — a dangling reference produces no accessible name at\nall, which is worse than falling back to `aria-label`."
3537
+ }
3538
+ ],
3539
+ "events": [
3540
+ {
3541
+ "description": "Fired after the dialog enters the top layer.",
3542
+ "name": "dsgn-modal-open"
3543
+ },
3544
+ {
3545
+ "description": "Fired before closing; cancelable, `detail` is `{ reason }`. Call `preventDefault()` to keep the modal open.",
3546
+ "name": "dsgn-modal-request-close"
3547
+ },
3548
+ {
3549
+ "description": "Fired once the exit animation has finished and the dialog has left the top layer; `detail` is `{ reason, returnValue }`.",
3550
+ "name": "dsgn-modal-close"
3551
+ }
3552
+ ],
3553
+ "superclass": {
3554
+ "name": "Base",
3555
+ "module": "/common/Base/Base.ts"
3556
+ },
3557
+ "tagName": "dsgn-modal",
3558
+ "customElement": true,
3559
+ "attributes": [
3560
+ {
3561
+ "name": "surface",
3562
+ "fieldName": "surface",
3563
+ "type": {
3564
+ "text": "SurfaceType"
3565
+ }
3566
+ },
3567
+ {
3568
+ "name": "open",
3569
+ "fieldName": "open",
3570
+ "type": {
3571
+ "text": "boolean"
3572
+ },
3573
+ "default": "false",
3574
+ "description": "Whether the modal is shown. This is the single source of truth: the\ncomponent drives `showModal()`/`close()` from it, and sets it back to\n`false` itself whenever the dialog closes (Escape, backdrop, close control).\nA consumer holding `open` in its own state should therefore listen for\n`dsgn-modal-close` and mirror the change back, otherwise the two will drift\non the next open."
3575
+ },
3576
+ {
3577
+ "name": "placement",
3578
+ "fieldName": "placement",
3579
+ "type": {
3580
+ "text": "ModalPlacementType"
3581
+ }
3582
+ },
3583
+ {
3584
+ "name": "motion",
3585
+ "fieldName": "motion",
3586
+ "type": {
3587
+ "text": "ModalMotionType"
3588
+ },
3589
+ "description": "Motion origin. `inherit` follows `placement`; `none` is fade-only."
3590
+ },
3591
+ {
3592
+ "name": "size",
3593
+ "fieldName": "size",
3594
+ "type": {
3595
+ "text": "ModalSizeType"
3596
+ }
3597
+ },
3598
+ {
3599
+ "name": "aria-label",
3600
+ "fieldName": "ariaLabel",
3601
+ "type": {
3602
+ "text": "string"
3603
+ },
3604
+ "default": "''",
3605
+ "description": "Accessible name for the dialog, for the case where there is no visible\nheading. A filled `heading` slot takes precedence."
3606
+ },
3607
+ {
3608
+ "name": "close-label",
3609
+ "fieldName": "closeLabel",
3610
+ "type": {
3611
+ "text": "string"
3612
+ },
3613
+ "default": "'Close'",
3614
+ "description": "Accessible name for the built-in close control. Supplied by the CMS via the\nconsuming template; the default is a Storybook/dev fallback only. Ignored\nwhen the consumer slots their own control into `close`."
3615
+ },
3616
+ {
3617
+ "name": "no-close-control",
3618
+ "fieldName": "noCloseControl",
3619
+ "type": {
3620
+ "text": "boolean"
3621
+ },
3622
+ "default": "false",
3623
+ "description": "Drops the built-in close control. Every modal gets one by default so there\nis always a visible way out; opt out only when the flow supplies its own\ndismissal (a footer \"Cancel\", say) — and never together with\n`no-escape-dismiss`, which would leave keyboard users stuck.\n\nA control slotted into `close` replaces the built-in one whatever this is\nset to, since it is the slot's fallback content."
3624
+ },
3625
+ {
3626
+ "name": "no-backdrop-dismiss",
3627
+ "fieldName": "noBackdropDismiss",
3628
+ "type": {
3629
+ "text": "boolean"
3630
+ },
3631
+ "default": "false",
3632
+ "description": "Blocks dismissal by clicking the backdrop."
3633
+ },
3634
+ {
3635
+ "name": "no-escape-dismiss",
3636
+ "fieldName": "noEscapeDismiss",
3637
+ "type": {
3638
+ "text": "boolean"
3639
+ },
3640
+ "default": "false",
3641
+ "description": "Blocks dismissal by Escape. Reserve it for flows that would lose data —\nalways leave a visible way out (a close control or a footer action), or\nkeyboard users are stuck."
3642
+ }
3643
+ ]
3644
+ }
3645
+ ],
3646
+ "exports": [
3647
+ {
3648
+ "kind": "js",
3649
+ "name": "Modal",
3650
+ "declaration": {
3651
+ "name": "Modal",
3652
+ "module": "components/Modal/src/Modal.ts"
3653
+ }
3654
+ },
3655
+ {
3656
+ "kind": "custom-element-definition",
3657
+ "name": "dsgn-modal",
3658
+ "declaration": {
3659
+ "name": "Modal",
3660
+ "module": "components/Modal/src/Modal.ts"
3661
+ }
3662
+ }
3663
+ ]
3664
+ },
3665
+ {
3666
+ "kind": "javascript-module",
3667
+ "path": "components/Nav/src/Nav.ts",
3668
+ "declarations": [
3669
+ {
3670
+ "kind": "class",
3671
+ "description": "",
3672
+ "name": "Nav",
3673
+ "slots": [
3674
+ {
3675
+ "description": "Brand or logo content.",
3676
+ "name": "logo"
3677
+ },
3678
+ {
3679
+ "description": "Primary navigation links.",
3680
+ "name": "links"
3681
+ },
3682
+ {
3683
+ "description": "Navigation actions.",
3684
+ "name": "actions"
3685
+ }
3686
+ ],
3687
+ "members": [
3688
+ {
3689
+ "kind": "field",
3690
+ "name": "surface",
3691
+ "type": {
3692
+ "text": "SurfaceType"
3693
+ },
3694
+ "description": "Surface theme variant (light or dark)",
3695
+ "attribute": "surface",
3696
+ "reflects": true
3697
+ },
3698
+ {
3699
+ "kind": "field",
3700
+ "name": "sticky",
3701
+ "type": {
3702
+ "text": "boolean"
3703
+ },
3704
+ "default": "false",
3705
+ "description": "Whether the nav sticks to the top of the viewport",
3706
+ "attribute": "sticky",
3707
+ "reflects": true
3708
+ },
3709
+ {
3710
+ "kind": "field",
3711
+ "name": "transparent",
3712
+ "type": {
3713
+ "text": "boolean"
3714
+ },
3715
+ "default": "false",
3716
+ "description": "Whether the nav has a transparent background (for hero overlays)",
3717
+ "attribute": "transparent",
3718
+ "reflects": true
3719
+ },
3720
+ {
3721
+ "kind": "field",
3722
+ "name": "menuOpenLabel",
3723
+ "type": {
3724
+ "text": "string"
3725
+ },
3726
+ "default": "'Open navigation menu'",
3727
+ "description": "Accessible label for the mobile menu button when the menu is closed.\nSupplied by the CMS via the marketing template; the default is a\nStorybook/dev fallback only.",
3728
+ "attribute": "menu-open-label"
3729
+ },
3730
+ {
3731
+ "kind": "field",
3732
+ "name": "menuCloseLabel",
3733
+ "type": {
3734
+ "text": "string"
3735
+ },
3736
+ "default": "'Close navigation menu'",
3737
+ "description": "Accessible label for the mobile menu button when the menu is open.\nSupplied by the CMS via the marketing template; the default is a\nStorybook/dev fallback only.",
3738
+ "attribute": "menu-close-label"
3739
+ },
3740
+ {
3741
+ "kind": "field",
3742
+ "name": "menuOpen",
3743
+ "type": {
3744
+ "text": "boolean"
3745
+ },
3746
+ "privacy": "private",
3747
+ "default": "false"
3748
+ },
3749
+ {
3750
+ "kind": "field",
3751
+ "name": "hasNavigationItems",
3752
+ "type": {
3753
+ "text": "boolean"
3754
+ },
3755
+ "privacy": "private",
3756
+ "default": "false"
3757
+ },
3758
+ {
3759
+ "kind": "method",
3760
+ "name": "getNavigationLinks",
3761
+ "privacy": "private",
3762
+ "return": {
3763
+ "type": {
3764
+ "text": "NavLink[]"
3765
+ }
3766
+ }
3767
+ },
3768
+ {
3769
+ "kind": "method",
3770
+ "name": "hasSlottedNavigationItems",
3771
+ "privacy": "private",
3772
+ "return": {
3773
+ "type": {
3774
+ "text": "boolean"
3775
+ }
3776
+ },
3777
+ "description": "Any element assigned to the links/actions slots — regardless of tag. The\nmobile menu (toggle + panel) must appear for plain `<a slot=\"links\">`\nconsumers too, or their links would vanish below `sm`. Dropdown management\nis separately scoped to `dsgn-nav-link` via getNavigationLinks()."
3778
+ },
3779
+ {
3780
+ "kind": "field",
3781
+ "name": "updateNavigationItems",
3782
+ "privacy": "private"
3783
+ },
3784
+ {
3785
+ "kind": "method",
3786
+ "name": "toggleMenu",
3787
+ "privacy": "private"
3788
+ },
3789
+ {
3790
+ "kind": "method",
3791
+ "name": "closeMenu",
3792
+ "privacy": "private"
3793
+ },
3794
+ {
3795
+ "kind": "method",
3796
+ "name": "closeDropdowns",
3797
+ "privacy": "private",
3798
+ "parameters": [
3799
+ {
3800
+ "name": "except",
3801
+ "optional": true,
3802
+ "type": {
3803
+ "text": "NavLink"
3804
+ }
3805
+ }
3806
+ ]
3807
+ },
3808
+ {
3809
+ "kind": "field",
3810
+ "name": "handleDropdownToggle",
3811
+ "privacy": "private"
3812
+ },
3813
+ {
3814
+ "kind": "field",
3815
+ "name": "handleKeydown",
3816
+ "privacy": "private"
3817
+ },
3818
+ {
3819
+ "kind": "field",
3820
+ "name": "handleMenuClick",
3821
+ "privacy": "private"
3822
+ }
3823
+ ],
3824
+ "superclass": {
3825
+ "name": "Base",
3826
+ "module": "/common/Base/Base.ts"
3827
+ },
3828
+ "tagName": "dsgn-nav",
3829
+ "customElement": true,
3830
+ "attributes": [
3831
+ {
3832
+ "name": "surface",
3833
+ "fieldName": "surface",
3834
+ "type": {
3835
+ "text": "SurfaceType"
3836
+ },
3837
+ "description": "Surface theme variant (light or dark)"
3838
+ },
3839
+ {
3840
+ "name": "sticky",
3841
+ "fieldName": "sticky",
3842
+ "type": {
3843
+ "text": "boolean"
3844
+ },
3845
+ "default": "false",
3846
+ "description": "Whether the nav sticks to the top of the viewport"
3847
+ },
3848
+ {
3849
+ "name": "transparent",
3850
+ "fieldName": "transparent",
3851
+ "type": {
3852
+ "text": "boolean"
3853
+ },
3854
+ "default": "false",
3855
+ "description": "Whether the nav has a transparent background (for hero overlays)"
3856
+ },
3857
+ {
3858
+ "name": "menu-open-label",
3859
+ "fieldName": "menuOpenLabel",
3860
+ "type": {
3861
+ "text": "string"
3862
+ },
3863
+ "default": "'Open navigation menu'",
3864
+ "description": "Accessible label for the mobile menu button when the menu is closed.\nSupplied by the CMS via the marketing template; the default is a\nStorybook/dev fallback only."
3865
+ },
3866
+ {
3867
+ "name": "menu-close-label",
3868
+ "fieldName": "menuCloseLabel",
3869
+ "type": {
3870
+ "text": "string"
3871
+ },
3872
+ "default": "'Close navigation menu'",
3873
+ "description": "Accessible label for the mobile menu button when the menu is open.\nSupplied by the CMS via the marketing template; the default is a\nStorybook/dev fallback only."
3874
+ }
3875
+ ]
3876
+ }
3877
+ ],
3878
+ "exports": [
3879
+ {
3880
+ "kind": "js",
3881
+ "name": "Nav",
3882
+ "declaration": {
3883
+ "name": "Nav",
3884
+ "module": "components/Nav/src/Nav.ts"
3885
+ }
3886
+ },
3887
+ {
3888
+ "kind": "custom-element-definition",
3889
+ "name": "dsgn-nav",
3890
+ "declaration": {
3891
+ "name": "Nav",
3892
+ "module": "components/Nav/src/Nav.ts"
3893
+ }
3894
+ }
3895
+ ]
3896
+ },
3897
+ {
3898
+ "kind": "javascript-module",
3899
+ "path": "components/NavDropdownColumn/src/NavDropdownColumn.ts",
3900
+ "declarations": [
3901
+ {
3902
+ "kind": "class",
3903
+ "description": "An ordered vertical group of links within a NavLink dropdown.",
3904
+ "name": "NavDropdownColumn",
3905
+ "slots": [
3906
+ {
3907
+ "description": "Column links.",
3908
+ "name": ""
3909
+ }
3910
+ ],
3911
+ "members": [],
3912
+ "superclass": {
3913
+ "name": "Base",
3914
+ "module": "/common/Base/Base.ts"
3915
+ },
3916
+ "tagName": "dsgn-nav-dropdown-column",
3917
+ "customElement": true,
3918
+ "attributes": []
3919
+ }
3920
+ ],
3921
+ "exports": [
3922
+ {
3923
+ "kind": "js",
3924
+ "name": "NavDropdownColumn",
3925
+ "declaration": {
3926
+ "name": "NavDropdownColumn",
3927
+ "module": "components/NavDropdownColumn/src/NavDropdownColumn.ts"
3928
+ }
3929
+ },
3930
+ {
3931
+ "kind": "custom-element-definition",
3932
+ "name": "dsgn-nav-dropdown-column",
3933
+ "declaration": {
3934
+ "name": "NavDropdownColumn",
3935
+ "module": "components/NavDropdownColumn/src/NavDropdownColumn.ts"
3936
+ }
3937
+ }
3938
+ ]
3939
+ },
3940
+ {
3941
+ "kind": "javascript-module",
3942
+ "path": "components/NavLink/src/NavLink.ts",
3943
+ "declarations": [
3944
+ {
3945
+ "kind": "class",
3946
+ "description": "",
3947
+ "name": "NavLink",
3948
+ "slots": [
3949
+ {
3950
+ "description": "Link label.",
3951
+ "name": ""
3952
+ },
3953
+ {
3954
+ "description": "Dropdown content.",
3955
+ "name": "dropdown"
3956
+ }
3957
+ ],
3958
+ "members": [
3959
+ {
3960
+ "kind": "field",
3961
+ "name": "surface",
3962
+ "type": {
3963
+ "text": "SurfaceType"
3964
+ },
3965
+ "description": "Surface theme variant (light or dark). Defaults to `dark` — the nav this\nlink lives in is dark by default.",
3966
+ "attribute": "surface",
3967
+ "reflects": true
3968
+ },
3969
+ {
3970
+ "kind": "field",
3971
+ "name": "variant",
3972
+ "type": {
3973
+ "text": "NavLinkVariantType"
3974
+ },
3975
+ "description": "Visual variant: a quiet wayfinding `link` (default), the primary pill CTA\n(`action`, transparent fill), or the secondary pill CTA\n(`action-secondary`, filled surface). The two CTA variants are designed to\nsit side by side in the nav's `actions` slot.",
3976
+ "attribute": "variant",
3977
+ "reflects": true
3978
+ },
3979
+ {
3980
+ "kind": "field",
3981
+ "name": "secondaryHover",
3982
+ "type": {
3983
+ "text": "NavLinkSecondaryHoverType"
3984
+ },
3985
+ "description": "Hover treatment for the `action-secondary` CTA. Ignored by every other\nvariant. All four share one rest state and differ only on hover: a soft\naccent `ring`, a one-pass border `shimmer`, a directional `nudge` of the\nlabel and a trailing arrow, or a `deepen` of the fill.",
3986
+ "attribute": "secondary-hover",
3987
+ "reflects": true
3988
+ },
3989
+ {
3990
+ "kind": "field",
3991
+ "name": "href",
3992
+ "type": {
3993
+ "text": "string"
3994
+ },
3995
+ "default": "''",
3996
+ "description": "Destination URL for the link",
3997
+ "attribute": "href"
3998
+ },
3999
+ {
4000
+ "kind": "field",
4001
+ "name": "target",
4002
+ "type": {
4003
+ "text": "NavLinkTargetType"
4004
+ },
4005
+ "description": "Target for the link",
4006
+ "attribute": "target",
4007
+ "reflects": true
4008
+ },
4009
+ {
4010
+ "kind": "field",
4011
+ "name": "rel",
4012
+ "type": {
4013
+ "text": "string"
4014
+ },
4015
+ "default": "''",
4016
+ "description": "Relationship between the current page and the linked page.\nDefaults to a safe value for links opened in a new tab.",
4017
+ "attribute": "rel"
4018
+ },
4019
+ {
4020
+ "kind": "field",
4021
+ "name": "subheading",
4022
+ "type": {
4023
+ "text": "string"
4024
+ },
4025
+ "default": "''",
4026
+ "description": "Optional supporting copy shown beneath the link label.",
4027
+ "attribute": "subheading"
4028
+ },
4029
+ {
4030
+ "kind": "field",
4031
+ "name": "submenuLabel",
4032
+ "type": {
4033
+ "text": "string"
4034
+ },
4035
+ "default": "''",
4036
+ "description": "Accessible name for the disclosure trigger, used when no text is slotted\ninto the link. Supplied by the CMS via the marketing template.",
4037
+ "attribute": "submenu-label"
4038
+ },
4039
+ {
4040
+ "kind": "field",
4041
+ "name": "overviewLabel",
4042
+ "type": {
4043
+ "text": "string"
4044
+ },
4045
+ "default": "''",
4046
+ "description": "Label for the panel's link back to this link's own destination, shown when\nthe dropdown does not already contain a link to it. Supplied by the CMS.",
4047
+ "attribute": "overview-label"
4048
+ },
4049
+ {
4050
+ "kind": "field",
4051
+ "name": "dropdownColumns",
4052
+ "type": {
4053
+ "text": "NavLinkDropdownColumnsType"
4054
+ },
4055
+ "description": "Number of explicitly slotted desktop dropdown column groups. Mobile always\nstacks those groups into one column.",
4056
+ "attribute": "dropdown-columns",
4057
+ "reflects": true
4058
+ },
4059
+ {
4060
+ "kind": "field",
4061
+ "name": "expanded",
4062
+ "type": {
4063
+ "text": "boolean"
4064
+ },
4065
+ "default": "false",
4066
+ "description": "Whether the dropdown is currently expanded. Reflected only while open.",
4067
+ "attribute": "expanded",
4068
+ "reflects": true
4069
+ },
4070
+ {
4071
+ "kind": "field",
4072
+ "name": "hasDropdown",
4073
+ "type": {
4074
+ "text": "boolean"
4075
+ },
4076
+ "privacy": "private",
4077
+ "default": "false"
4078
+ },
4079
+ {
4080
+ "kind": "field",
4081
+ "name": "pinned",
4082
+ "type": {
4083
+ "text": "boolean"
4084
+ },
4085
+ "privacy": "private",
4086
+ "default": "false",
4087
+ "description": "Set when the panel was opened deliberately (a click on the disclosure)\nrather than by hovering. A pinned panel ignores pointer-leave, so it stays\nput until it is dismissed — by clicking again, Escape, a click outside, or\nanother dropdown opening."
4088
+ },
4089
+ {
4090
+ "kind": "field",
4091
+ "name": "keyboardDismissed",
4092
+ "type": {
4093
+ "text": "boolean"
4094
+ },
4095
+ "privacy": "private",
4096
+ "default": "false",
4097
+ "description": "Set when the desktop dropdown is dismissed with Escape. Suppresses the\nfocus-to-open behaviour while the trigger keeps focus, so the panel doesn't\nspring back open; cleared once focus leaves or the pointer re-enters."
4098
+ },
4099
+ {
4100
+ "kind": "field",
4101
+ "name": "dropdownId",
4102
+ "privacy": "private",
4103
+ "readonly": true,
4104
+ "default": "`dsgn-nav-link-dropdown-${++navLinkDropdownId}`"
4105
+ },
4106
+ {
4107
+ "kind": "field",
4108
+ "name": "breakpointController",
4109
+ "privacy": "private",
4110
+ "default": "new BreakpointController(this)",
4111
+ "description": "Tracks the viewport so hover-to-open stays desktop-only. Below `sm` the\nlayout swaps the desktop trigger for the mobile disclosure button, and touch\ntaps synthesize `mouseenter` before `click` — ungated, the two fight each\nother and the tap opens then immediately re-closes the dropdown."
4112
+ },
4113
+ {
4114
+ "kind": "field",
4115
+ "name": "layoutChangeController",
4116
+ "privacy": "private",
4117
+ "default": "new LayoutChangeController(this, () => this.updateDropdownAlignment(), )",
4118
+ "description": "The shift is measured against the viewport, so a change in the room around\nthe trigger invalidates it: an open panel would otherwise keep the offset\nthe old width earned it and hang off whichever edge the new width put it\nover. Only subscribed while a panel is open. See the controller for the\nlayout changes this does and does not see."
4119
+ },
4120
+ {
4121
+ "kind": "field",
4122
+ "name": "computedRel",
4123
+ "type": {
4124
+ "text": "string | undefined"
4125
+ },
4126
+ "privacy": "private",
4127
+ "description": "Resolve the `rel` attribute. For `target=\"_blank\"` links, always include\n`noopener`/`noreferrer` (merged with any author-provided tokens) so a\nnew-tab nav link never exposes `window.opener`.",
4128
+ "readonly": true
4129
+ },
4130
+ {
4131
+ "kind": "method",
4132
+ "name": "updateDropdownState",
4133
+ "privacy": "private"
4134
+ },
4135
+ {
4136
+ "kind": "field",
4137
+ "name": "handleDropdownSlotChange",
4138
+ "privacy": "private"
4139
+ },
4140
+ {
4141
+ "kind": "field",
4142
+ "name": "handleLabelSlotChange",
4143
+ "privacy": "private"
4144
+ },
4145
+ {
4146
+ "kind": "field",
4147
+ "name": "labelText",
4148
+ "type": {
4149
+ "text": "string"
4150
+ },
4151
+ "privacy": "private",
4152
+ "readonly": true
4153
+ },
4154
+ {
4155
+ "kind": "field",
4156
+ "name": "hasDropdownDestination",
4157
+ "type": {
4158
+ "text": "boolean"
4159
+ },
4160
+ "privacy": "private",
4161
+ "readonly": true
4162
+ },
4163
+ {
4164
+ "kind": "field",
4165
+ "name": "isDropdownItem",
4166
+ "type": {
4167
+ "text": "boolean"
4168
+ },
4169
+ "privacy": "private",
4170
+ "readonly": true
4171
+ },
4172
+ {
4173
+ "kind": "field",
4174
+ "name": "shouldRenderOverview",
4175
+ "type": {
4176
+ "text": "boolean"
4177
+ },
4178
+ "privacy": "private",
4179
+ "readonly": true
4180
+ },
4181
+ {
4182
+ "kind": "method",
4183
+ "name": "setExpanded",
4184
+ "privacy": "private",
4185
+ "parameters": [
4186
+ {
4187
+ "name": "open",
4188
+ "type": {
4189
+ "text": "boolean"
4190
+ }
4191
+ }
4192
+ ],
4193
+ "description": "The single place the panel opens or closes, so every path tells the nav\nabout it. That matters for the hover and focus paths in particular: the nav\ncloses siblings only on this event, and a sibling a click has pinned\nignores pointer and focus leave, so without it two panels sit open at once."
4194
+ },
4195
+ {
4196
+ "kind": "field",
4197
+ "name": "toggleDropdown",
4198
+ "privacy": "private"
4199
+ },
4200
+ {
4201
+ "kind": "field",
4202
+ "name": "handleDocumentPointerDown",
4203
+ "privacy": "private"
4204
+ },
4205
+ {
4206
+ "kind": "method",
4207
+ "name": "clearDropdownAlignment",
4208
+ "privacy": "private"
4209
+ },
4210
+ {
4211
+ "kind": "method",
4212
+ "name": "measureDropdownWidth",
4213
+ "privacy": "private",
4214
+ "return": {
4215
+ "type": {
4216
+ "text": "number"
4217
+ }
4218
+ },
4219
+ "description": "Width the dropdown panel renders at. A closed panel is `display: none`, so\nlay it out just long enough to read it — the browser cannot paint between\nthe two writes below, so nothing flashes."
4220
+ },
4221
+ {
4222
+ "kind": "method",
4223
+ "name": "dropdownShift",
4224
+ "privacy": "private",
4225
+ "return": {
4226
+ "type": {
4227
+ "text": "number"
4228
+ }
4229
+ },
4230
+ "parameters": [
4231
+ {
4232
+ "name": "triggerRect",
4233
+ "type": {
4234
+ "text": "DOMRect"
4235
+ }
4236
+ }
4237
+ ],
4238
+ "description": "Horizontal shift for the panel, measured from the left-aligned position\nunder its trigger. Hanging right of the trigger is the default; if that\nwould spill past the viewport, the panel flips to hang left instead, with\nits right edge on the trigger's. Only when *that* would leave the viewport\ntoo — a panel wider than the room on either side of its trigger — does it\ngive up the anchor and sit on the gutter, where its fluid width has already\nshrunk it to fit."
4239
+ },
4240
+ {
4241
+ "kind": "method",
4242
+ "name": "updateDropdownAlignment",
4243
+ "privacy": "private",
4244
+ "description": "Panels are positioned against their own trigger and the viewport, not\nagainst the nav, so every column count uses the same rule."
4245
+ },
4246
+ {
4247
+ "kind": "field",
4248
+ "name": "hoverOpensDropdown",
4249
+ "type": {
4250
+ "text": "boolean"
4251
+ },
4252
+ "privacy": "private",
4253
+ "description": "Hover-to-open applies only where the desktop trigger is rendered (>= sm)\nand only on a device that really hovers.",
4254
+ "readonly": true
4255
+ },
4256
+ {
4257
+ "kind": "field",
4258
+ "name": "handlePointerEnter",
4259
+ "privacy": "private"
4260
+ },
4261
+ {
4262
+ "kind": "field",
4263
+ "name": "handlePointerLeave",
4264
+ "privacy": "private"
4265
+ },
4266
+ {
4267
+ "kind": "field",
4268
+ "name": "handleFocusIn",
4269
+ "privacy": "private"
4270
+ },
4271
+ {
4272
+ "kind": "field",
4273
+ "name": "handleFocusOut",
4274
+ "privacy": "private"
4275
+ },
4276
+ {
4277
+ "kind": "field",
4278
+ "name": "handleKeydown",
4279
+ "privacy": "private"
4280
+ },
4281
+ {
4282
+ "kind": "method",
4283
+ "name": "closeDropdown",
4284
+ "description": "Collapse the mobile dropdown. Used by the containing nav when another\ndisclosure opens or when the mobile menu closes."
4285
+ },
4286
+ {
4287
+ "kind": "field",
4288
+ "name": "isNudgingSecondary",
4289
+ "type": {
4290
+ "text": "boolean"
4291
+ },
4292
+ "privacy": "private",
4293
+ "description": "Whether this is the secondary CTA using the `nudge` hover treatment, which\nis the only one that needs extra markup: the label has to be a box that can\nbe translated, and it gains a trailing arrow to move against.",
4294
+ "readonly": true
4295
+ },
4296
+ {
4297
+ "kind": "method",
4298
+ "name": "renderLabel",
4299
+ "privacy": "private",
4300
+ "description": "The label and any supporting copy, shared by both trigger shapes."
4301
+ },
4302
+ {
4303
+ "kind": "method",
4304
+ "name": "renderDisclosureTrigger",
4305
+ "privacy": "private",
4306
+ "parameters": [
4307
+ {
4308
+ "name": "labelId",
4309
+ "type": {
4310
+ "text": "string"
4311
+ }
4312
+ }
4313
+ ],
4314
+ "description": "A link that owns a dropdown is a disclosure button, not a link: activating\nit opens the panel rather than navigating, and announcing it as a link\nwould promise a navigation that never happens. Its own destination stays\nreachable through the panel's overview link."
4315
+ },
4316
+ {
4317
+ "kind": "method",
4318
+ "name": "renderLinkTrigger",
4319
+ "privacy": "private",
4320
+ "parameters": [
4321
+ {
4322
+ "name": "labelId",
4323
+ "type": {
4324
+ "text": "string"
4325
+ }
4326
+ }
4327
+ ]
4328
+ }
4329
+ ],
4330
+ "events": [
4331
+ {
4332
+ "description": "Fired when the dropdown is toggled; `detail` is `{ open }`. The parent `dsgn-nav` listens for this to close sibling dropdowns.",
4333
+ "name": "dsgn-nav-link-toggle"
4334
+ }
4335
+ ],
4336
+ "superclass": {
4337
+ "name": "Base",
4338
+ "package": "@common/Base/Base.ts"
4339
+ },
4340
+ "tagName": "dsgn-nav-link",
4341
+ "customElement": true,
4342
+ "attributes": [
4343
+ {
4344
+ "name": "surface",
4345
+ "fieldName": "surface",
4346
+ "type": {
4347
+ "text": "SurfaceType"
4348
+ },
4349
+ "description": "Surface theme variant (light or dark). Defaults to `dark` — the nav this\nlink lives in is dark by default."
4350
+ },
4351
+ {
4352
+ "name": "variant",
4353
+ "fieldName": "variant",
4354
+ "type": {
4355
+ "text": "NavLinkVariantType"
4356
+ },
4357
+ "description": "Visual variant: a quiet wayfinding `link` (default), the primary pill CTA\n(`action`, transparent fill), or the secondary pill CTA\n(`action-secondary`, filled surface). The two CTA variants are designed to\nsit side by side in the nav's `actions` slot."
4358
+ },
4359
+ {
4360
+ "name": "secondary-hover",
4361
+ "fieldName": "secondaryHover",
4362
+ "type": {
4363
+ "text": "NavLinkSecondaryHoverType"
4364
+ },
4365
+ "description": "Hover treatment for the `action-secondary` CTA. Ignored by every other\nvariant. All four share one rest state and differ only on hover: a soft\naccent `ring`, a one-pass border `shimmer`, a directional `nudge` of the\nlabel and a trailing arrow, or a `deepen` of the fill."
4366
+ },
4367
+ {
4368
+ "name": "href",
4369
+ "fieldName": "href",
4370
+ "type": {
4371
+ "text": "string"
4372
+ },
4373
+ "default": "''",
4374
+ "description": "Destination URL for the link"
4375
+ },
4376
+ {
4377
+ "name": "target",
4378
+ "fieldName": "target",
4379
+ "type": {
4380
+ "text": "NavLinkTargetType"
4381
+ },
4382
+ "description": "Target for the link"
4383
+ },
4384
+ {
4385
+ "name": "rel",
4386
+ "fieldName": "rel",
4387
+ "type": {
4388
+ "text": "string"
4389
+ },
4390
+ "default": "''",
4391
+ "description": "Relationship between the current page and the linked page.\nDefaults to a safe value for links opened in a new tab."
4392
+ },
4393
+ {
4394
+ "name": "subheading",
4395
+ "fieldName": "subheading",
4396
+ "type": {
4397
+ "text": "string"
4398
+ },
4399
+ "default": "''",
4400
+ "description": "Optional supporting copy shown beneath the link label."
4401
+ },
4402
+ {
4403
+ "name": "submenu-label",
4404
+ "fieldName": "submenuLabel",
4405
+ "type": {
4406
+ "text": "string"
4407
+ },
4408
+ "default": "''",
4409
+ "description": "Accessible name for the disclosure trigger, used when no text is slotted\ninto the link. Supplied by the CMS via the marketing template."
4410
+ },
4411
+ {
4412
+ "name": "overview-label",
4413
+ "fieldName": "overviewLabel",
4414
+ "type": {
4415
+ "text": "string"
4416
+ },
4417
+ "default": "''",
4418
+ "description": "Label for the panel's link back to this link's own destination, shown when\nthe dropdown does not already contain a link to it. Supplied by the CMS."
4419
+ },
4420
+ {
4421
+ "name": "dropdown-columns",
4422
+ "fieldName": "dropdownColumns",
4423
+ "type": {
4424
+ "text": "NavLinkDropdownColumnsType"
4425
+ },
4426
+ "description": "Number of explicitly slotted desktop dropdown column groups. Mobile always\nstacks those groups into one column."
4427
+ },
4428
+ {
4429
+ "name": "expanded",
4430
+ "fieldName": "expanded",
4431
+ "type": {
4432
+ "text": "boolean"
4433
+ },
4434
+ "default": "false",
4435
+ "description": "Whether the dropdown is currently expanded. Reflected only while open."
4436
+ }
4437
+ ]
4438
+ }
4439
+ ],
4440
+ "exports": [
4441
+ {
4442
+ "kind": "js",
4443
+ "name": "NavLink",
4444
+ "declaration": {
4445
+ "name": "NavLink",
4446
+ "module": "components/NavLink/src/NavLink.ts"
4447
+ }
4448
+ },
4449
+ {
4450
+ "kind": "custom-element-definition",
4451
+ "name": "dsgn-nav-link",
4452
+ "declaration": {
4453
+ "name": "NavLink",
4454
+ "module": "components/NavLink/src/NavLink.ts"
4455
+ }
4456
+ }
4457
+ ]
4458
+ },
4459
+ {
4460
+ "kind": "javascript-module",
4461
+ "path": "components/Stack/src/Stack.ts",
4462
+ "declarations": [
4463
+ {
4464
+ "kind": "class",
4465
+ "description": "",
4466
+ "name": "Stack",
4467
+ "slots": [
4468
+ {
4469
+ "description": "Stack content.",
4470
+ "name": ""
4471
+ }
4472
+ ],
4473
+ "members": [
4474
+ {
4475
+ "kind": "field",
4476
+ "name": "direction",
4477
+ "type": {
4478
+ "text": "StackDirectionType"
4479
+ },
4480
+ "description": "Stack direction — vertical (column) or horizontal (row)",
4481
+ "attribute": "direction",
4482
+ "reflects": true
4483
+ },
4484
+ {
4485
+ "kind": "field",
4486
+ "name": "gap",
4487
+ "type": {
4488
+ "text": "StackGapType"
4489
+ },
4490
+ "description": "Gap between items",
4491
+ "attribute": "gap",
4492
+ "reflects": true
4493
+ },
4494
+ {
4495
+ "kind": "field",
4496
+ "name": "align",
4497
+ "type": {
4498
+ "text": "StackAlignType"
4499
+ },
4500
+ "description": "Cross-axis alignment of items",
4501
+ "attribute": "align",
4502
+ "reflects": true
4503
+ },
4504
+ {
4505
+ "kind": "field",
4506
+ "name": "wrap",
4507
+ "type": {
4508
+ "text": "boolean"
4509
+ },
4510
+ "default": "false",
4511
+ "description": "Whether items should wrap when horizontal",
4512
+ "attribute": "wrap",
4513
+ "reflects": true
4514
+ }
4515
+ ],
4516
+ "superclass": {
4517
+ "name": "Base",
4518
+ "module": "/common/Base/Base.ts"
4519
+ },
4520
+ "tagName": "dsgn-stack",
4521
+ "customElement": true,
4522
+ "attributes": [
4523
+ {
4524
+ "name": "direction",
4525
+ "fieldName": "direction",
4526
+ "type": {
4527
+ "text": "StackDirectionType"
4528
+ },
4529
+ "description": "Stack direction — vertical (column) or horizontal (row)"
4530
+ },
4531
+ {
4532
+ "name": "gap",
4533
+ "fieldName": "gap",
4534
+ "type": {
4535
+ "text": "StackGapType"
4536
+ },
4537
+ "description": "Gap between items"
4538
+ },
4539
+ {
4540
+ "name": "align",
4541
+ "fieldName": "align",
4542
+ "type": {
4543
+ "text": "StackAlignType"
4544
+ },
4545
+ "description": "Cross-axis alignment of items"
4546
+ },
4547
+ {
4548
+ "name": "wrap",
4549
+ "fieldName": "wrap",
4550
+ "type": {
4551
+ "text": "boolean"
4552
+ },
4553
+ "default": "false",
4554
+ "description": "Whether items should wrap when horizontal"
4555
+ }
4556
+ ]
4557
+ }
4558
+ ],
4559
+ "exports": [
4560
+ {
4561
+ "kind": "js",
4562
+ "name": "Stack",
4563
+ "declaration": {
4564
+ "name": "Stack",
4565
+ "module": "components/Stack/src/Stack.ts"
4566
+ }
4567
+ },
4568
+ {
4569
+ "kind": "custom-element-definition",
4570
+ "name": "dsgn-stack",
4571
+ "declaration": {
4572
+ "name": "Stack",
4573
+ "module": "components/Stack/src/Stack.ts"
4574
+ }
4575
+ }
4576
+ ]
4577
+ },
4578
+ {
4579
+ "kind": "javascript-module",
4580
+ "path": "components/Text/src/Text.ts",
4581
+ "declarations": [
4582
+ {
4583
+ "kind": "class",
4584
+ "description": "",
4585
+ "name": "Text",
4586
+ "slots": [
4587
+ {
4588
+ "description": "Text content.",
4589
+ "name": ""
4590
+ }
4591
+ ],
4592
+ "members": [
4593
+ {
4594
+ "kind": "field",
4595
+ "name": "surface",
4596
+ "type": {
4597
+ "text": "SurfaceType"
4598
+ },
4599
+ "description": "Surface theme variant (light or dark)",
4600
+ "attribute": "surface",
4601
+ "reflects": true
4602
+ },
4603
+ {
4604
+ "kind": "field",
4605
+ "name": "size",
4606
+ "type": {
4607
+ "text": "TextSizeType"
4608
+ },
4609
+ "description": "Text size scale",
4610
+ "attribute": "size",
4611
+ "reflects": true
4612
+ },
4613
+ {
4614
+ "kind": "field",
4615
+ "name": "weight",
4616
+ "type": {
4617
+ "text": "TextWeightType"
4618
+ },
4619
+ "description": "Font weight",
4620
+ "attribute": "weight",
4621
+ "reflects": true
4622
+ },
4623
+ {
4624
+ "kind": "field",
4625
+ "name": "color",
4626
+ "type": {
4627
+ "text": "TextColorType"
4628
+ },
4629
+ "description": "Semantic text color",
4630
+ "attribute": "color",
4631
+ "reflects": true
4632
+ }
4633
+ ],
4634
+ "superclass": {
4635
+ "name": "Base",
4636
+ "module": "/common/Base/Base.ts"
4637
+ },
4638
+ "tagName": "dsgn-text",
4639
+ "customElement": true,
4640
+ "attributes": [
4641
+ {
4642
+ "name": "surface",
4643
+ "fieldName": "surface",
4644
+ "type": {
4645
+ "text": "SurfaceType"
4646
+ },
4647
+ "description": "Surface theme variant (light or dark)"
4648
+ },
4649
+ {
4650
+ "name": "size",
4651
+ "fieldName": "size",
4652
+ "type": {
4653
+ "text": "TextSizeType"
4654
+ },
4655
+ "description": "Text size scale"
4656
+ },
4657
+ {
4658
+ "name": "weight",
4659
+ "fieldName": "weight",
4660
+ "type": {
4661
+ "text": "TextWeightType"
4662
+ },
4663
+ "description": "Font weight"
4664
+ },
4665
+ {
4666
+ "name": "color",
4667
+ "fieldName": "color",
4668
+ "type": {
4669
+ "text": "TextColorType"
4670
+ },
4671
+ "description": "Semantic text color"
4672
+ }
4673
+ ]
4674
+ }
4675
+ ],
4676
+ "exports": [
4677
+ {
4678
+ "kind": "js",
4679
+ "name": "Text",
4680
+ "declaration": {
4681
+ "name": "Text",
4682
+ "module": "components/Text/src/Text.ts"
4683
+ }
4684
+ },
4685
+ {
4686
+ "kind": "custom-element-definition",
4687
+ "name": "dsgn-text",
4688
+ "declaration": {
4689
+ "name": "Text",
4690
+ "module": "components/Text/src/Text.ts"
4691
+ }
4692
+ }
4693
+ ]
4694
+ }
4695
+ ]
4696
+ }