@hashicorp/mds-react 0.9.3 → 0.9.5

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 (371) hide show
  1. package/components/accordion/index.js +9 -0
  2. package/components/accordion/index.js.map +1 -0
  3. package/components/accordion/item/button.js +44 -0
  4. package/components/accordion/item/button.js.map +1 -0
  5. package/components/accordion/item/index.js +59 -0
  6. package/components/accordion/item/index.js.map +1 -0
  7. package/components/accordion/style.module.scss.js +24 -0
  8. package/components/accordion/style.module.scss.js.map +1 -0
  9. package/components/alert/alert.module.scss.js +29 -0
  10. package/components/alert/alert.module.scss.js.map +1 -0
  11. package/components/alert/icon.js +34 -0
  12. package/components/alert/icon.js.map +1 -0
  13. package/components/alert/index.js +97 -0
  14. package/components/alert/index.js.map +1 -0
  15. package/components/badge/index.js +50 -0
  16. package/components/badge/index.js.map +1 -0
  17. package/components/badge/style.module.scss +8 -6
  18. package/components/badge/style.module.scss.js +22 -0
  19. package/components/badge/style.module.scss.js.map +1 -0
  20. package/components/badge-count/index.js +29 -0
  21. package/components/badge-count/index.js.map +1 -0
  22. package/components/badge-count/style.module.scss +7 -6
  23. package/components/badge-count/style.module.scss.js +15 -0
  24. package/components/badge-count/style.module.scss.js.map +1 -0
  25. package/components/breadcrumbs/index.js +38 -0
  26. package/components/breadcrumbs/index.js.map +1 -0
  27. package/components/breadcrumbs/item/index.js +32 -0
  28. package/components/breadcrumbs/item/index.js.map +1 -0
  29. package/components/breadcrumbs/style.module.scss.js +27 -0
  30. package/components/breadcrumbs/style.module.scss.js.map +1 -0
  31. package/components/breadcrumbs/truncation-button/index.js +25 -0
  32. package/components/breadcrumbs/truncation-button/index.js.map +1 -0
  33. package/components/button/button-primitive.d.ts +5 -0
  34. package/components/button/button-primitive.js +59 -0
  35. package/components/button/button-primitive.js.map +1 -0
  36. package/components/button/index.d.ts +4 -5
  37. package/components/button/index.js +69 -0
  38. package/components/button/index.js.map +1 -0
  39. package/components/button/styles.module.scss.js +32 -0
  40. package/components/button/styles.module.scss.js.map +1 -0
  41. package/components/card/card-thumbnail/card-thumbnail.module.css.js +8 -0
  42. package/components/card/card-thumbnail/card-thumbnail.module.css.js.map +1 -0
  43. package/components/card/card-thumbnail/index.js +23 -0
  44. package/components/card/card-thumbnail/index.js.map +1 -0
  45. package/components/card/index.d.ts +2 -1
  46. package/components/card/index.js +160 -0
  47. package/components/card/index.js.map +1 -0
  48. package/components/card/styles.module.css.js +29 -0
  49. package/components/card/styles.module.css.js.map +1 -0
  50. package/components/card/types.d.ts +1 -0
  51. package/components/code-block/code-block.module.scss.js +34 -0
  52. package/components/code-block/code-block.module.scss.js.map +1 -0
  53. package/components/code-block/code-lines/index.js +59 -0
  54. package/components/code-block/code-lines/index.js.map +1 -0
  55. package/components/code-block/code-lines/utils/split-html-into-lines.js +19 -0
  56. package/components/code-block/code-lines/utils/split-html-into-lines.js.map +1 -0
  57. package/components/code-block/code-lines/utils/split-jsx-into-lines.js +31 -0
  58. package/components/code-block/code-lines/utils/split-jsx-into-lines.js.map +1 -0
  59. package/components/code-block/hidden-copy-content/index.js +13 -0
  60. package/components/code-block/hidden-copy-content/index.js.map +1 -0
  61. package/components/code-block/index.js +88 -0
  62. package/components/code-block/index.js.map +1 -0
  63. package/components/code-block/utils/parse-highlighted-lines.js +39 -0
  64. package/components/code-block/utils/parse-highlighted-lines.js.map +1 -0
  65. package/components/code-block/utils/process-snippet.js +20 -0
  66. package/components/code-block/utils/process-snippet.js.map +1 -0
  67. package/components/code-block/utils/shellwords.js +33 -0
  68. package/components/code-block/utils/shellwords.js.map +1 -0
  69. package/components/combo-box-primitive/index.js +302 -0
  70. package/components/combo-box-primitive/index.js.map +1 -0
  71. package/components/dialog-primitive/dialog.module.scss.js +12 -0
  72. package/components/dialog-primitive/dialog.module.scss.js.map +1 -0
  73. package/components/dialog-primitive/index.js +15 -0
  74. package/components/dialog-primitive/index.js.map +1 -0
  75. package/components/disclosure-primitive/index.js +57 -0
  76. package/components/disclosure-primitive/index.js.map +1 -0
  77. package/components/disclosure-primitive/styles.module.css.js +7 -0
  78. package/components/disclosure-primitive/styles.module.css.js.map +1 -0
  79. package/components/disclosure-primitive/use-disclosure-primitive.js +17 -0
  80. package/components/disclosure-primitive/use-disclosure-primitive.js.map +1 -0
  81. package/components/dismiss-button/index.js +22 -0
  82. package/components/dismiss-button/index.js.map +1 -0
  83. package/components/dismiss-button/styles.module.scss.js +7 -0
  84. package/components/dismiss-button/styles.module.scss.js.map +1 -0
  85. package/components/dropdown/index.js +79 -0
  86. package/components/dropdown/index.js.map +1 -0
  87. package/components/dropdown/list-item/custom.js +9 -0
  88. package/components/dropdown/list-item/custom.js.map +1 -0
  89. package/components/dropdown/list-item/index.js +14 -0
  90. package/components/dropdown/list-item/index.js.map +1 -0
  91. package/components/dropdown/list-item/interactive.js +49 -0
  92. package/components/dropdown/list-item/interactive.js.map +1 -0
  93. package/components/dropdown/list-item/separator.js +17 -0
  94. package/components/dropdown/list-item/separator.js.map +1 -0
  95. package/components/dropdown/list-item/styles.module.css.js +26 -0
  96. package/components/dropdown/list-item/styles.module.css.js.map +1 -0
  97. package/components/dropdown/list-item/title.js +9 -0
  98. package/components/dropdown/list-item/title.js.map +1 -0
  99. package/components/dropdown/styles.module.css.js +24 -0
  100. package/components/dropdown/styles.module.css.js.map +1 -0
  101. package/components/dropdown/toggle-button/index.js +54 -0
  102. package/components/dropdown/toggle-button/index.js.map +1 -0
  103. package/components/dropdown/toggle-button/styles.module.scss.js +14 -0
  104. package/components/dropdown/toggle-button/styles.module.scss.js.map +1 -0
  105. package/components/flight-icon/flight-icon.module.css.js +12 -0
  106. package/components/flight-icon/flight-icon.module.css.js.map +1 -0
  107. package/components/flight-icon/index.js +58 -0
  108. package/components/flight-icon/index.js.map +1 -0
  109. package/components/form/checkbox/form-checkbox.module.css.js +8 -0
  110. package/components/form/checkbox/form-checkbox.module.css.js.map +1 -0
  111. package/components/form/checkbox/index.js +109 -0
  112. package/components/form/checkbox/index.js.map +1 -0
  113. package/components/form/error/form-error.module.css.js +14 -0
  114. package/components/form/error/form-error.module.css.js.map +1 -0
  115. package/components/form/error/index.js +22 -0
  116. package/components/form/error/index.js.map +1 -0
  117. package/components/form/field/form-field.module.css.js +17 -0
  118. package/components/form/field/form-field.module.css.js.map +1 -0
  119. package/components/form/field/index.js +46 -0
  120. package/components/form/field/index.js.map +1 -0
  121. package/components/form/fieldset/form-fieldset.module.css.js +19 -0
  122. package/components/form/fieldset/form-fieldset.module.css.js.map +1 -0
  123. package/components/form/fieldset/index.d.ts +1 -2
  124. package/components/form/fieldset/index.js +65 -0
  125. package/components/form/fieldset/index.js.map +1 -0
  126. package/components/form/file-input/form-file-input.module.scss +2 -2
  127. package/components/form/file-input/form-file-input.module.scss.js +7 -0
  128. package/components/form/file-input/form-file-input.module.scss.js.map +1 -0
  129. package/components/form/file-input/index.js +68 -0
  130. package/components/form/file-input/index.js.map +1 -0
  131. package/components/form/helper-text/form-helper-text.module.css.js +7 -0
  132. package/components/form/helper-text/form-helper-text.module.css.js.map +1 -0
  133. package/components/form/helper-text/index.js +22 -0
  134. package/components/form/helper-text/index.js.map +1 -0
  135. package/components/form/indicator/form-indicator.module.css.js +8 -0
  136. package/components/form/indicator/form-indicator.module.css.js.map +1 -0
  137. package/components/form/indicator/index.js +23 -0
  138. package/components/form/indicator/index.js.map +1 -0
  139. package/components/form/label/form-label.module.css.js +10 -0
  140. package/components/form/label/form-label.module.css.js.map +1 -0
  141. package/components/form/label/index.js +33 -0
  142. package/components/form/label/index.js.map +1 -0
  143. package/components/form/legend/form-legend.module.css.js +10 -0
  144. package/components/form/legend/form-legend.module.css.js.map +1 -0
  145. package/components/form/legend/index.js +19 -0
  146. package/components/form/legend/index.js.map +1 -0
  147. package/components/form/radio/form-radio.module.scss.js +8 -0
  148. package/components/form/radio/form-radio.module.scss.js.map +1 -0
  149. package/components/form/radio/index.d.ts +3 -5
  150. package/components/form/radio/index.js +100 -0
  151. package/components/form/radio/index.js.map +1 -0
  152. package/components/form/radio-card/RadioCardStory.css +21 -0
  153. package/components/form/radio-card/description.js +10 -0
  154. package/components/form/radio-card/description.js.map +1 -0
  155. package/components/form/radio-card/form-radio-card.module.css.js +30 -0
  156. package/components/form/radio-card/form-radio-card.module.css.js.map +1 -0
  157. package/components/form/radio-card/group.js +31 -0
  158. package/components/form/radio-card/group.js.map +1 -0
  159. package/components/form/radio-card/index.js +67 -0
  160. package/components/form/radio-card/index.js.map +1 -0
  161. package/components/form/radio-card/label.js +10 -0
  162. package/components/form/radio-card/label.js.map +1 -0
  163. package/components/form/select/form-select.module.css.js +14 -0
  164. package/components/form/select/form-select.module.css.js.map +1 -0
  165. package/components/form/select/index.js +79 -0
  166. package/components/form/select/index.js.map +1 -0
  167. package/components/form/super-select/form-super-select.module.css.js +22 -0
  168. package/components/form/super-select/form-super-select.module.css.js.map +1 -0
  169. package/components/form/super-select/index.js +170 -0
  170. package/components/form/super-select/index.js.map +1 -0
  171. package/components/form/text-input/index.js +91 -0
  172. package/components/form/text-input/index.js.map +1 -0
  173. package/components/form/text-input/styles.module.css.js +15 -0
  174. package/components/form/text-input/styles.module.css.js.map +1 -0
  175. package/components/form/textarea/form-textarea.module.css.js +14 -0
  176. package/components/form/textarea/form-textarea.module.css.js.map +1 -0
  177. package/components/form/textarea/index.js +74 -0
  178. package/components/form/textarea/index.js.map +1 -0
  179. package/components/form/toggle/form-toggle.module.scss.js +12 -0
  180. package/components/form/toggle/form-toggle.module.scss.js.map +1 -0
  181. package/components/form/toggle/index.js +102 -0
  182. package/components/form/toggle/index.js.map +1 -0
  183. package/components/hds/wrappers/tooltip.js +51 -0
  184. package/components/hds/wrappers/tooltip.js.map +1 -0
  185. package/components/icon-tile/index.js +50 -0
  186. package/components/icon-tile/index.js.map +1 -0
  187. package/components/icon-tile/style.module.scss +12 -10
  188. package/components/icon-tile/style.module.scss.js +29 -0
  189. package/components/icon-tile/style.module.scss.js.map +1 -0
  190. package/components/index.d.ts +1 -1
  191. package/components/index.js +116 -73
  192. package/components/index.js.map +1 -1
  193. package/components/inline-link/index.js +34 -0
  194. package/components/inline-link/index.js.map +1 -0
  195. package/components/inline-link/inline-link.module.css.js +11 -0
  196. package/components/inline-link/inline-link.module.css.js.map +1 -0
  197. package/components/interactive/index.js +59 -0
  198. package/components/interactive/index.js.map +1 -0
  199. package/components/legacy-button/index.js +65 -0
  200. package/components/legacy-button/index.js.map +1 -0
  201. package/components/legacy-button/utils.js +39 -0
  202. package/components/legacy-button/utils.js.map +1 -0
  203. package/components/menu-primitive/index.js +68 -0
  204. package/components/menu-primitive/index.js.map +1 -0
  205. package/components/menu-primitive/styles.module.css.js +12 -0
  206. package/components/menu-primitive/styles.module.css.js.map +1 -0
  207. package/components/menu-primitive/use-menu-primitive.js +17 -0
  208. package/components/menu-primitive/use-menu-primitive.js.map +1 -0
  209. package/components/modal/index.js +61 -0
  210. package/components/modal/index.js.map +1 -0
  211. package/components/modal/modal.module.css +5 -0
  212. package/components/modal/modal.module.css.js +8 -0
  213. package/components/modal/modal.module.css.js.map +1 -0
  214. package/components/modal/use-modal.js +17 -0
  215. package/components/modal/use-modal.js.map +1 -0
  216. package/components/separator/index.js +15 -0
  217. package/components/separator/index.js.map +1 -0
  218. package/components/separator/separator.module.css.js +10 -0
  219. package/components/separator/separator.module.css.js.map +1 -0
  220. package/components/standalone-link/index.js +54 -0
  221. package/components/standalone-link/index.js.map +1 -0
  222. package/components/standalone-link/styles.module.scss.js +17 -0
  223. package/components/standalone-link/styles.module.scss.js.map +1 -0
  224. package/components/table/index.js +52 -0
  225. package/components/table/index.js.map +1 -0
  226. package/components/table/table.module.scss.js +33 -0
  227. package/components/table/table.module.scss.js.map +1 -0
  228. package/components/table/td.js +28 -0
  229. package/components/table/td.js.map +1 -0
  230. package/components/table/th-button-tooltip.js +24 -0
  231. package/components/table/th-button-tooltip.js.map +1 -0
  232. package/components/table/th.js +43 -0
  233. package/components/table/th.js.map +1 -0
  234. package/components/table/tr.js +9 -0
  235. package/components/table/tr.js.map +1 -0
  236. package/components/table/utils.js +28 -0
  237. package/components/table/utils.js.map +1 -0
  238. package/components/tabs/index.js +115 -0
  239. package/components/tabs/index.js.map +1 -0
  240. package/components/tabs/tab-panel.js +35 -0
  241. package/components/tabs/tab-panel.js.map +1 -0
  242. package/components/tabs/tab.js +70 -0
  243. package/components/tabs/tab.js.map +1 -0
  244. package/components/tabs/tabs.module.scss.js +22 -0
  245. package/components/tabs/tabs.module.scss.js.map +1 -0
  246. package/components/tabs/use-tabs-context.js +16 -0
  247. package/components/tabs/use-tabs-context.js.map +1 -0
  248. package/components/text/index.js +112 -0
  249. package/components/text/index.js.map +1 -0
  250. package/components/text/style.module.scss.js +9 -0
  251. package/components/text/style.module.scss.js.map +1 -0
  252. package/components/visualizations/bar-chart/horizontal-chart/dataset-value/index.js +62 -0
  253. package/components/visualizations/bar-chart/horizontal-chart/dataset-value/index.js.map +1 -0
  254. package/components/visualizations/bar-chart/horizontal-chart/dataset-value/style.module.css.js +20 -0
  255. package/components/visualizations/bar-chart/horizontal-chart/dataset-value/style.module.css.js.map +1 -0
  256. package/components/visualizations/bar-chart/horizontal-chart/index.js +104 -0
  257. package/components/visualizations/bar-chart/horizontal-chart/index.js.map +1 -0
  258. package/components/visualizations/bar-chart/horizontal-chart/legend/index.js +13 -0
  259. package/components/visualizations/bar-chart/horizontal-chart/legend/index.js.map +1 -0
  260. package/components/visualizations/bar-chart/horizontal-chart/legend/style.module.css.js +14 -0
  261. package/components/visualizations/bar-chart/horizontal-chart/legend/style.module.css.js.map +1 -0
  262. package/components/visualizations/bar-chart/horizontal-chart/style.module.css.js +28 -0
  263. package/components/visualizations/bar-chart/horizontal-chart/style.module.css.js.map +1 -0
  264. package/components/visualizations/bar-chart/index.js +37 -0
  265. package/components/visualizations/bar-chart/index.js.map +1 -0
  266. package/components/visualizations/bar-chart/style.module.css.js +12 -0
  267. package/components/visualizations/bar-chart/style.module.css.js.map +1 -0
  268. package/components/visualizations/donut-chart/components/arc-tooltip/index.js +14 -0
  269. package/components/visualizations/donut-chart/components/arc-tooltip/index.js.map +1 -0
  270. package/components/visualizations/donut-chart/components/arc-tooltip/styles.module.css.js +10 -0
  271. package/components/visualizations/donut-chart/components/arc-tooltip/styles.module.css.js.map +1 -0
  272. package/components/visualizations/donut-chart/components/external-arc-label/index.js +58 -0
  273. package/components/visualizations/donut-chart/components/external-arc-label/index.js.map +1 -0
  274. package/components/visualizations/donut-chart/components/external-arc-label/styles.module.css.js +16 -0
  275. package/components/visualizations/donut-chart/components/external-arc-label/styles.module.css.js.map +1 -0
  276. package/components/visualizations/donut-chart/components/internal-arc-label/index.js +42 -0
  277. package/components/visualizations/donut-chart/components/internal-arc-label/index.js.map +1 -0
  278. package/components/visualizations/donut-chart/components/internal-arc-label/styles.module.css.js +14 -0
  279. package/components/visualizations/donut-chart/components/internal-arc-label/styles.module.css.js.map +1 -0
  280. package/components/visualizations/donut-chart/index.js +90 -0
  281. package/components/visualizations/donut-chart/index.js.map +1 -0
  282. package/components/visualizations/donut-chart/styles.module.css.js +20 -0
  283. package/components/visualizations/donut-chart/styles.module.css.js.map +1 -0
  284. package/hooks/use-media-query/index.js +16 -0
  285. package/hooks/use-media-query/index.js.map +1 -0
  286. package/index.js +155 -101
  287. package/index.js.map +1 -1
  288. package/package.json +1 -1
  289. package/patterns/card/newsroom-card/index.js +26 -0
  290. package/patterns/card/newsroom-card/index.js.map +1 -0
  291. package/patterns/card/newsroom-card/style.module.css.js +8 -0
  292. package/patterns/card/newsroom-card/style.module.css.js.map +1 -0
  293. package/patterns/card/partner-card/index.js +42 -0
  294. package/patterns/card/partner-card/index.js.map +1 -0
  295. package/patterns/card/partner-card/style.module.css.js +12 -0
  296. package/patterns/card/partner-card/style.module.css.js.map +1 -0
  297. package/patterns/card/person-card/index.js +54 -0
  298. package/patterns/card/person-card/index.js.map +1 -0
  299. package/patterns/card/person-card/style.module.css.js +12 -0
  300. package/patterns/card/person-card/style.module.css.js.map +1 -0
  301. package/patterns/card/primitives.js +77 -0
  302. package/patterns/card/primitives.js.map +1 -0
  303. package/patterns/card/promo-card/index.js +36 -0
  304. package/patterns/card/promo-card/index.js.map +1 -0
  305. package/patterns/card/resource-card/index.js +26 -0
  306. package/patterns/card/resource-card/index.js.map +1 -0
  307. package/patterns/card/style.module.css.js +30 -0
  308. package/patterns/card/style.module.css.js.map +1 -0
  309. package/patterns/card/thumbnails/index.js +25 -0
  310. package/patterns/card/thumbnails/index.js.map +1 -0
  311. package/patterns/card/unified-card/index.js +37 -0
  312. package/patterns/card/unified-card/index.js.map +1 -0
  313. package/patterns/copy-button/clipboard.js +78 -0
  314. package/patterns/copy-button/clipboard.js.map +1 -0
  315. package/patterns/copy-button/index.js +57 -0
  316. package/patterns/copy-button/index.js.map +1 -0
  317. package/patterns/copy-button/style.module.css.js +13 -0
  318. package/patterns/copy-button/style.module.css.js.map +1 -0
  319. package/patterns/index.js +32 -22
  320. package/patterns/index.js.map +1 -1
  321. package/patterns/layout/index.js +47 -0
  322. package/patterns/layout/index.js.map +1 -0
  323. package/patterns/layout/layout.module.css.js +20 -0
  324. package/patterns/layout/layout.module.css.js.map +1 -0
  325. package/patterns/product-badge/index.js +22 -0
  326. package/patterns/product-badge/index.js.map +1 -0
  327. package/patterns/product-badge/style.module.css.js +8 -0
  328. package/patterns/product-badge/style.module.css.js.map +1 -0
  329. package/patterns/product-logo/index.js +130 -0
  330. package/patterns/product-logo/index.js.map +1 -0
  331. package/patterns/product-logo/product-logo.module.css.js +13 -0
  332. package/patterns/product-logo/product-logo.module.css.js.map +1 -0
  333. package/patterns/related-content/index.js +65 -0
  334. package/patterns/related-content/index.js.map +1 -0
  335. package/patterns/related-content/style.module.css.js +22 -0
  336. package/patterns/related-content/style.module.css.js.map +1 -0
  337. package/style.css +1 -1
  338. package/utils/get-contrast-yiq.js +13 -0
  339. package/utils/get-contrast-yiq.js.map +1 -0
  340. package/utils/hooks/use-screen-size.js +10 -0
  341. package/utils/hooks/use-screen-size.js.map +1 -0
  342. package/utils/i18n/constants/index.js +98 -0
  343. package/utils/i18n/constants/index.js.map +1 -0
  344. package/utils/i18n/helpers/locale-provider.js +9 -0
  345. package/utils/i18n/helpers/locale-provider.js.map +1 -0
  346. package/utils/i18n/helpers/to-smart-sentence-case.js +12 -0
  347. package/utils/i18n/helpers/to-smart-sentence-case.js.map +1 -0
  348. package/utils/i18n/helpers/to-smart-title-case.js +10 -0
  349. package/utils/i18n/helpers/to-smart-title-case.js.map +1 -0
  350. package/utils/i18n/helpers/use-locale.js +14 -0
  351. package/utils/i18n/helpers/use-locale.js.map +1 -0
  352. package/utils/i18n/index.js +41 -0
  353. package/utils/i18n/index.js.map +1 -0
  354. package/utils/i18n/index2.js +33 -0
  355. package/utils/i18n/index2.js.map +1 -0
  356. package/utils/index.js +7 -7
  357. package/utils/make-normalizer/index.js +34 -0
  358. package/utils/make-normalizer/index.js.map +1 -0
  359. package/{index-DBjAbGt7.js → utils/mds-context/index.js} +20 -19
  360. package/utils/mds-context/index.js.map +1 -0
  361. package/index-B9mPJh9w.js +0 -579
  362. package/index-B9mPJh9w.js.map +0 -1
  363. package/index-BHBlMMNF.js +0 -16
  364. package/index-BHBlMMNF.js.map +0 -1
  365. package/index-C4GBbW3N.js +0 -3567
  366. package/index-C4GBbW3N.js.map +0 -1
  367. package/index-DBjAbGt7.js.map +0 -1
  368. package/index-WkGIywHj.js +0 -767
  369. package/index-WkGIywHj.js.map +0 -1
  370. package/use-screen-size-BOnkX_K-.js +0 -9
  371. package/use-screen-size-BOnkX_K-.js.map +0 -1
package/index-B9mPJh9w.js DELETED
@@ -1,579 +0,0 @@
1
- import { jsx as t, jsxs as d, Fragment as q } from "react/jsx-runtime";
2
- import { forwardRef as J, memo as X } from "react";
3
- import { c as w, T as u, C as R, h as Z } from "./index-WkGIywHj.js";
4
- import { IconGithub16 as Q } from "@hashicorp/flight-icons/svg-react/github-16";
5
- import { IconTwitter16 as W } from "@hashicorp/flight-icons/svg-react/twitter-16";
6
- import { IconLinkedin16 as aa } from "@hashicorp/flight-icons/svg-react/linkedin-16";
7
- import { IconLink16 as ta } from "@hashicorp/flight-icons/svg-react/link-16";
8
- import { IconMail16 as na } from "@hashicorp/flight-icons/svg-react/mail-16";
9
- import { a as P, u as ea } from "./index-DBjAbGt7.js";
10
- import { IconArrowRight24 as oa } from "@hashicorp/flight-icons/svg-react/arrow-right-24";
11
- import y from "classnames";
12
- const ra = "badge__w7lpk", sa = {
13
- badge: ra
14
- }, E = ({ productName: a, hasDot: e }) => {
15
- const n = a.replace("hashicorp", "HashiCorp"), o = n === "HashiCorp cloud platform" ? "hashicorp" : a;
16
- return /* @__PURE__ */ t(
17
- w,
18
- {
19
- className: sa.badge,
20
- text: n,
21
- ...e && {
22
- icon: "dot",
23
- iconColor: `var(--mds-color-${o}-brand)`
24
- }
25
- }
26
- );
27
- };
28
- E.displayName = "ProductBadge";
29
- const ia = "card__zxzJV", la = "cta__mJ6Xp", ca = "thumbnail__10HM7", da = "image__zuf44", ma = "personThumbnail__ALced thumbnail__10HM7", pa = "logoThumbnail__OyvYI thumbnail__10HM7", ua = "meta__IBDgS", ha = "metaSeparator__40Llq", ga = "content__m6Hih", _a = "heading__uNTzq", ba = "description__c-x42", Na = "productBadges__bdjlp", m = {
30
- card: ia,
31
- cta: la,
32
- thumbnail: ca,
33
- image: da,
34
- personThumbnail: ma,
35
- logoThumbnail: pa,
36
- meta: ua,
37
- metaSeparator: ha,
38
- content: ga,
39
- heading: _a,
40
- description: ba,
41
- productBadges: Na
42
- }, I = ({ src: a, alt: e }) => {
43
- const n = P();
44
- return /* @__PURE__ */ t("div", { className: m.thumbnail, "data-testid": "wpl-card-thumbnail", children: /* @__PURE__ */ t("div", { className: m.image, children: /* @__PURE__ */ t(n, { src: a, alt: e, width: 800, height: 450 }) }) });
45
- };
46
- I.displayName = "Thumbnail";
47
- const S = ({ src: a, alt: e }) => {
48
- const n = P();
49
- return /* @__PURE__ */ t("div", { className: m.personThumbnail, "data-testid": "wpl-card-thumbnail", children: /* @__PURE__ */ t("div", { className: m.image, children: /* @__PURE__ */ t(n, { src: a, alt: e, width: 800, height: 450 }) }) });
50
- };
51
- S.displayName = "PersonThumbnail";
52
- const U = ({ src: a, alt: e }) => {
53
- const n = P();
54
- return /* @__PURE__ */ t("div", { className: m.logoThumbnail, "data-testid": "wpl-card-logo-thumbnail", children: /* @__PURE__ */ t("div", { className: m.image, children: /* @__PURE__ */ t(n, { src: a, alt: e, width: 800, height: 450 }) }) });
55
- };
56
- U.displayName = "LogoThumbnail";
57
- const x = J((a, e) => {
58
- const {
59
- withArrow: n = !0,
60
- link: o,
61
- clickHandler: r,
62
- isExternal: s,
63
- children: i,
64
- className: c,
65
- "aria-label": p
66
- } = a;
67
- return /* @__PURE__ */ d(
68
- R,
69
- {
70
- className: y(m.card, c),
71
- href: o,
72
- onClickCapture: r,
73
- isExternal: s,
74
- ref: e,
75
- "aria-label": p,
76
- children: [
77
- i,
78
- /* @__PURE__ */ t("div", { className: m.cta, children: n ? /* @__PURE__ */ t(oa, {}) : null })
79
- ]
80
- }
81
- );
82
- });
83
- x.displayName = "CardPrimitives.Root";
84
- const H = ({ items: a }) => /* @__PURE__ */ t("div", { className: m.meta, "data-testid": "wpl-card-meta", children: /* @__PURE__ */ t(u.Label, { children: a.map((e, n) => {
85
- const o = n === a.length - 1;
86
- return /* @__PURE__ */ d(q, { children: [
87
- e,
88
- o ? null : /* @__PURE__ */ t("span", { className: m.metaSeparator, "aria-hidden": !0, children: "|" })
89
- ] });
90
- }) }) });
91
- H.displayName = "Meta";
92
- const B = ({ children: a }) => /* @__PURE__ */ t("div", { className: m.content, "data-testid": "wpl-card-content", children: a });
93
- B.displayName = "Content";
94
- const M = ({ as: a = "h2", children: e }) => /* @__PURE__ */ t(u.DisplayExpressive, { tag: a, size: "200", className: m.heading, children: e });
95
- M.displayName = "Heading";
96
- const $ = ({ badges: a, children: e }) => /* @__PURE__ */ d("div", { className: m.productBadges, "data-testid": "wpl-card-badges", children: [
97
- a.map((n, o) => /* @__PURE__ */ t(
98
- E,
99
- {
100
- productName: n,
101
- hasDot: !0
102
- },
103
- `product-badge-${o}`
104
- )),
105
- e
106
- ] });
107
- $.displayName = "ProductBadges";
108
- const z = ({ children: a }) => /* @__PURE__ */ t(u.Body, { tag: "p", size: "200", className: m.description, children: a });
109
- z.displayName = "Description";
110
- const l = {
111
- Root: x,
112
- Thumbnail: I,
113
- PersonThumbnail: S,
114
- LogoThumbnail: U,
115
- Meta: H,
116
- Content: B,
117
- Heading: M,
118
- Description: z,
119
- ProductBadges: $
120
- }, L = ({
121
- heading: a,
122
- meta: e,
123
- link: n,
124
- productBadges: o,
125
- badges: r,
126
- thumbnail: s,
127
- withArrow: i = !1,
128
- isExternal: c = !1,
129
- className: p,
130
- "aria-label": N
131
- }) => /* @__PURE__ */ d(
132
- l.Root,
133
- {
134
- link: n,
135
- withArrow: i,
136
- isExternal: c,
137
- className: p,
138
- "aria-label": N || a,
139
- children: [
140
- s ? /* @__PURE__ */ t(l.Thumbnail, { ...s }) : null,
141
- /* @__PURE__ */ d(l.Content, { children: [
142
- e && e.length > 0 ? /* @__PURE__ */ t(l.Meta, { items: e }) : null,
143
- /* @__PURE__ */ t(l.Heading, { children: a }),
144
- o && o?.length > 0 ? /* @__PURE__ */ t(l.ProductBadges, { badges: o, children: r && r.length > 0 ? r.map((h, g) => Array.isArray(h) ? /* @__PURE__ */ t(w, { icon: h[0], text: h[1] }, g) : /* @__PURE__ */ t(w, { text: h }, g)) : null }) : null
145
- ] })
146
- ]
147
- }
148
- );
149
- L.displayName = "UnifiedCard";
150
- const Ca = "newsroomCard__5Rb0H", fa = {
151
- newsroomCard: Ca
152
- }, va = ({
153
- heading: a,
154
- date: e,
155
- category: n,
156
- link: o,
157
- thumbnail: r,
158
- withArrow: s = !1
159
- }) => /* @__PURE__ */ t(
160
- L,
161
- {
162
- heading: a,
163
- meta: [e, n],
164
- link: o,
165
- thumbnail: r,
166
- withArrow: s,
167
- className: fa.newsroomCard
168
- }
169
- );
170
- va.displayName = "NewsroomCard";
171
- const wa = "location__OjUu5", Pa = "thumbnailContainer__ATYhC", ya = "thumbnailIcon__Sx-P-", D = {
172
- location: wa,
173
- thumbnailContainer: Pa,
174
- thumbnailIcon: ya
175
- }, Ta = /* @__PURE__ */ new Map([
176
- // null signals that we don't want to render any icon
177
- ["hashicorp.com", null],
178
- [
179
- "twitter.com",
180
- /* @__PURE__ */ t(W, { "data-testid": "wpl-personcard-twitter-icon" })
181
- ],
182
- ["github.com", /* @__PURE__ */ t(Q, { "data-testid": "wpl-personcard-github-icon" })],
183
- [
184
- "linkedin.com",
185
- /* @__PURE__ */ t(aa, { "data-testid": "wpl-personcard-linkedin-icon" })
186
- ],
187
- ["mailto:", /* @__PURE__ */ t(na, { "data-testid": "wpl-personcard-mail-icon" })]
188
- ]), ka = X(function({ url: e }) {
189
- const { protocol: n, host: o } = new URL(e), r = Ta.get(n === "mailto:" ? "mailto:" : o);
190
- return r === null ? null : /* @__PURE__ */ t("div", { className: D.thumbnailIcon, children: r ?? /* @__PURE__ */ t(ta, { "data-testid": "wpl-personcard-link-icon" }) });
191
- }), Da = ({
192
- link: a,
193
- thumbnail: e,
194
- name: n,
195
- location: o,
196
- bio: r,
197
- productBadges: s
198
- }) => /* @__PURE__ */ d(l.Root, { link: a, withArrow: !1, "aria-label": n, children: [
199
- /* @__PURE__ */ d("div", { className: D.thumbnailContainer, children: [
200
- /* @__PURE__ */ t(l.PersonThumbnail, { ...e }),
201
- /* @__PURE__ */ t(ka, { url: a })
202
- ] }),
203
- /* @__PURE__ */ d(l.Content, { children: [
204
- /* @__PURE__ */ d("div", { children: [
205
- /* @__PURE__ */ t(l.Heading, { children: n }),
206
- o ? /* @__PURE__ */ t(u.Body, { tag: "p", size: "200", className: D.location, children: o }) : null
207
- ] }),
208
- r ? /* @__PURE__ */ t(l.Description, { children: r }) : null,
209
- s && s?.length > 0 ? /* @__PURE__ */ t(l.ProductBadges, { badges: s }) : null
210
- ] })
211
- ] });
212
- Da.displayName = "PersonCard";
213
- const La = ({
214
- heading: a,
215
- date: e,
216
- category: n,
217
- link: o,
218
- productBadges: r,
219
- thumbnail: s,
220
- isExternal: i
221
- }) => /* @__PURE__ */ t(
222
- L,
223
- {
224
- link: o,
225
- meta: e ? [e, n] : [n],
226
- productBadges: r,
227
- thumbnail: s,
228
- isExternal: i,
229
- heading: a
230
- }
231
- );
232
- La.displayName = "ResourceCard";
233
- const Oa = ({
234
- heading: a,
235
- description: e,
236
- eyebrow: n,
237
- link: o,
238
- clickHandler: r,
239
- thumbnail: s,
240
- withArrow: i = !1,
241
- isExternal: c = !1,
242
- className: p
243
- }) => /* @__PURE__ */ d(
244
- l.Root,
245
- {
246
- link: o,
247
- withArrow: i,
248
- isExternal: c,
249
- className: p,
250
- clickHandler: r,
251
- "aria-label": a,
252
- children: [
253
- s ? /* @__PURE__ */ t(l.Thumbnail, { ...s }) : null,
254
- /* @__PURE__ */ d(l.Content, { children: [
255
- n ? /* @__PURE__ */ t(l.Meta, { items: [n] }) : null,
256
- /* @__PURE__ */ t(l.Heading, { children: a }),
257
- e ? /* @__PURE__ */ t(l.Description, { children: e }) : null
258
- ] })
259
- ]
260
- }
261
- );
262
- Oa.displayName = "PromoCard";
263
- const Aa = "description__-1CDK", Ra = "logoContainer__9VUWm", Ea = "logo__E1-po", T = {
264
- description: Aa,
265
- logoContainer: Ra,
266
- logo: Ea
267
- }, Ia = ({
268
- heading: a,
269
- description: e,
270
- meta: n,
271
- link: o,
272
- productBadges: r,
273
- competencyBadges: s,
274
- logo: i,
275
- className: c
276
- }) => {
277
- const p = P(), N = r && r.length > 0, h = s && s.length > 0;
278
- return /* @__PURE__ */ d(
279
- l.Root,
280
- {
281
- link: o,
282
- withArrow: !1,
283
- isExternal: !1,
284
- className: c,
285
- "aria-label": a,
286
- children: [
287
- /* @__PURE__ */ t("div", { className: T.logoContainer, children: /* @__PURE__ */ t(p, { ...i, alt: i.alt, className: T.logo }) }),
288
- /* @__PURE__ */ d(l.Content, { children: [
289
- /* @__PURE__ */ t(l.Meta, { items: n }),
290
- /* @__PURE__ */ t(u.Body, { tag: "p", size: "200", className: T.description, children: e }),
291
- N || h ? /* @__PURE__ */ t(l.ProductBadges, { badges: r || [], children: h && s.map((g, f) => /* @__PURE__ */ t(w, { text: g, icon: "dot" }, f)) }) : null
292
- ] })
293
- ]
294
- }
295
- );
296
- };
297
- Ia.displayName = "PartnerCard";
298
- function b(a, e) {
299
- const n = a, o = e.aliases ?? Object.fromEntries(n.map((i) => [i, i])), r = e.transform ?? ((i) => i.trim().toLowerCase()), s = (i, c) => {
300
- const p = { ...o, ...c?.aliases ?? {} }, N = c?.fallback ?? e.fallback, h = c?.transform ?? r;
301
- if (typeof i != "string") return N;
302
- const g = h(i), f = p[g] ?? g;
303
- return n.includes(f) ? f : N;
304
- };
305
- return s.with = (i) => (c, p) => s(c, { ...i, ...p ?? {} }), s;
306
- }
307
- function O(a) {
308
- const e = (n, o) => {
309
- const r = {};
310
- for (const s in a) {
311
- if (!Object.prototype.hasOwnProperty.call(a, s)) continue;
312
- const i = s, c = a[i], p = o?.all ? c.with(o.all) : c;
313
- r[i] = p(n?.[i], o?.each?.[i]);
314
- }
315
- return r;
316
- };
317
- return e.with = (n) => {
318
- const o = {};
319
- for (const r in a) {
320
- if (!Object.prototype.hasOwnProperty.call(a, r)) continue;
321
- const s = r;
322
- o[s] = a[s].with(n);
323
- }
324
- return O(o);
325
- }, e;
326
- }
327
- const Sa = "layout__bSrhA", Ua = "faint__Z2ywD", xa = "transparent__9mJjZ", v = {
328
- layout: Sa,
329
- faint: Ua,
330
- transparent: xa,
331
- "padding-top-none": "padding-top-none__9PeMj",
332
- "padding-top-small": "padding-top-small__bSFSb",
333
- "padding-top-medium": "padding-top-medium__GrQm5",
334
- "padding-top-large": "padding-top-large__mDeeb",
335
- "padding-bottom-none": "padding-bottom-none__G-i6w",
336
- "padding-bottom-small": "padding-bottom-small__LraeK",
337
- "padding-bottom-medium": "padding-bottom-medium__PswfC",
338
- "padding-bottom-large": "padding-bottom-large__0VyXJ"
339
- }, j = "light", G = "primary", F = "medium", K = "medium", Ha = ["light", "dark"], Ba = ["primary", "faint", "transparent"], A = ["none", "small", "medium", "large"], _t = O({
340
- appearance: b(Ha, {
341
- fallback: j
342
- }),
343
- background: b(Ba, {
344
- fallback: G
345
- }),
346
- paddingTop: b(A, {
347
- fallback: F
348
- }),
349
- paddingBottom: b(A, {
350
- fallback: K
351
- })
352
- }), Ma = ({
353
- className: a,
354
- children: e,
355
- appearance: n = j,
356
- background: o = G,
357
- paddingBottom: r = F,
358
- paddingTop: s = K
359
- }) => /* @__PURE__ */ t(
360
- "div",
361
- {
362
- className: y([
363
- v.layout,
364
- { "mds-dark-mode": n === "dark" },
365
- v[o],
366
- v[`padding-top-${s}`],
367
- v[`padding-bottom-${r}`],
368
- a
369
- ]),
370
- children: e
371
- }
372
- );
373
- Ma.displayName = "Layout";
374
- const $a = "small__Y58kj", za = "medium__2A1Tv", ja = "large__ho0Xp", C = {
375
- "product-logo": "product-logo__moaPv",
376
- small: $a,
377
- medium: za,
378
- large: ja
379
- };
380
- function Ga(a) {
381
- return a.charAt(0).toUpperCase() + a.slice(1);
382
- }
383
- const V = "small", Y = "primary", Fa = "hcp", Ka = [
384
- "vault-radar",
385
- "vault-secrets",
386
- "vault-dedicated"
387
- ], Va = ["small", "medium", "large"], Ya = ["primary", "strong"], qa = [
388
- "hcp",
389
- "hashicorp",
390
- "boundary",
391
- "consul",
392
- "nomad",
393
- "packer",
394
- "terraform",
395
- "vault",
396
- "vault-dedicated",
397
- "vault-enterprise",
398
- "vault-radar",
399
- "vault-secrets",
400
- "vagrant",
401
- "waypoint"
402
- ], bt = O({
403
- size: b(Va, {
404
- fallback: V
405
- }),
406
- color: b(Ya, {
407
- fallback: Y
408
- }),
409
- product: b(qa, {
410
- fallback: Fa
411
- })
412
- }), Ja = ({
413
- size: a = V,
414
- color: e = Y,
415
- product: n
416
- }) => {
417
- const o = k[n]?.name ?? Ga(n);
418
- return /* @__PURE__ */ d("div", { className: y(C["product-logo"], C[a]), children: [
419
- /* @__PURE__ */ t(
420
- Z,
421
- {
422
- size: a === "small" ? 16 : 24,
423
- name: k[n]?.icon ?? `${n}-color`,
424
- color: k[n]?.color
425
- }
426
- ),
427
- Ka.includes(n) ? /* @__PURE__ */ d("div", { children: [
428
- /* @__PURE__ */ d(
429
- u.DisplayExpressive,
430
- {
431
- className: C[a],
432
- color: e,
433
- weight: "semibold",
434
- children: [
435
- o.split(" ").slice(0, 2).join(" "),
436
- " "
437
- ]
438
- }
439
- ),
440
- /* @__PURE__ */ t(
441
- u.DisplayExpressive,
442
- {
443
- className: C[a],
444
- color: e,
445
- weight: "regular",
446
- children: o.split(" ").slice(2)[0]
447
- }
448
- )
449
- ] }) : (
450
- // Default to unmodified display of the product name
451
- /* @__PURE__ */ t(
452
- u.DisplayExpressive,
453
- {
454
- className: C[a],
455
- color: e,
456
- weight: "semibold",
457
- children: o
458
- }
459
- )
460
- )
461
- ] });
462
- };
463
- Ja.displayName = "ProductLogo";
464
- const k = {
465
- hcp: {
466
- icon: "hashicorp-square",
467
- color: "var(--mds-color-hcp-brand)",
468
- name: "HashiCorp Cloud Platform"
469
- },
470
- hashicorp: {
471
- icon: "hashicorp",
472
- color: "var(--mds-color-hashicorp-brand)",
473
- name: "HashiCorp"
474
- },
475
- "vault-radar": {
476
- icon: "vault-square",
477
- color: "var(--mds-color-vault-radar-brand)",
478
- name: "HCP Vault Radar"
479
- },
480
- "vault-secrets": {
481
- icon: "vault-square",
482
- color: "var(--mds-color-vault-secrets-brand)",
483
- name: "HCP Vault Secrets"
484
- },
485
- "vault-dedicated": {
486
- icon: "vault-fill",
487
- color: "var(--mds-color-vault-secrets-brand)",
488
- name: "HCP Vault Dedicated"
489
- },
490
- "vault-enterprise": {
491
- icon: "vault-fill",
492
- color: "var(--mds-color-vault-secrets-brand)",
493
- name: "Vault Enterprise"
494
- }
495
- }, Xa = "root__wY2Kw", Za = "transparent__oS97K", Qa = "wrapper__z6E7B g-grid g-grid-container", Wa = "textStack__T-LcO", at = "headline__Msi9v", tt = "cards__RaaoR", nt = "cta__bp4JK", et = "dark__ccH93", _ = {
496
- root: Xa,
497
- transparent: Za,
498
- wrapper: Qa,
499
- textStack: Wa,
500
- headline: at,
501
- cards: tt,
502
- cta: nt,
503
- dark: et
504
- }, ot = ({
505
- appearance: a = "transparent",
506
- headline: e,
507
- description: n,
508
- cards: o,
509
- cta: r
510
- }) => {
511
- const s = ea();
512
- return /* @__PURE__ */ t(
513
- "div",
514
- {
515
- className: y(_.root, _[a], {
516
- "mds-dark-mode": a === "dark"
517
- }),
518
- children: /* @__PURE__ */ d("div", { className: _.wrapper, children: [
519
- /* @__PURE__ */ d("div", { className: _.textStack, children: [
520
- /* @__PURE__ */ t(
521
- u.DisplayExpressive,
522
- {
523
- tag: "h2",
524
- color: "primary",
525
- className: _.headline,
526
- size: "400",
527
- children: e
528
- }
529
- ),
530
- n ? /* @__PURE__ */ t(u.Body, { size: "300", color: "faint", tag: "p", children: n }) : null
531
- ] }),
532
- /* @__PURE__ */ t("div", { className: _.cards, "data-testid": "wpl-cards-container", children: o.map((i, c) => /* @__PURE__ */ t(
533
- R,
534
- {
535
- href: i.link,
536
- content: {
537
- ...i.thumbnail && {
538
- thumbnail: {
539
- alt: i.thumbnail.alt,
540
- src: i.thumbnail.src,
541
- aspectRatio: "16/9"
542
- }
543
- },
544
- eyebrow: i.meta,
545
- heading: i.heading,
546
- description: i.description,
547
- showArrow: !0
548
- }
549
- },
550
- c
551
- )) }),
552
- r ? /* @__PURE__ */ t("div", { className: _.cta, "data-testid": "wpl-cta-container", children: /* @__PURE__ */ t(s, { href: r.href, children: r.text }) }) : null
553
- ] })
554
- }
555
- );
556
- };
557
- ot.displayName = "RelatedContent";
558
- export {
559
- l as C,
560
- Ma as L,
561
- va as N,
562
- Da as P,
563
- La as R,
564
- L as U,
565
- Oa as a,
566
- Ia as b,
567
- Ha as c,
568
- Ba as d,
569
- A as e,
570
- E as f,
571
- Ja as g,
572
- Ya as h,
573
- qa as i,
574
- Va as j,
575
- bt as k,
576
- ot as l,
577
- _t as n
578
- };
579
- //# sourceMappingURL=index-B9mPJh9w.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-B9mPJh9w.js","sources":["../src/patterns/product-badge/index.tsx","../src/patterns/card/thumbnails/index.tsx","../src/patterns/card/primitives.tsx","../src/patterns/card/unified-card/index.tsx","../src/patterns/card/newsroom-card/index.tsx","../src/patterns/card/person-card/index.tsx","../src/patterns/card/resource-card/index.tsx","../src/patterns/card/promo-card/index.tsx","../src/patterns/card/partner-card/index.tsx","../src/utils/make-normalizer/index.tsx","../src/patterns/layout/index.tsx","../src/patterns/product-logo/index.tsx","../src/patterns/related-content/index.tsx"],"sourcesContent":["import { Badge } from '../../components/badge'\nimport s from './style.module.css'\n\ntype Products =\n\t| 'hashicorp'\n\t| 'boundary'\n\t| 'consul'\n\t| 'nomad'\n\t| 'packer'\n\t| 'terraform'\n\t| 'vault'\n\t| 'vagrant'\n\t| 'waypoint'\n\ninterface ProductBadgeProps {\n\tproductName: Products\n\thasDot?: boolean\n}\n\nconst ProductBadge = ({ productName, hasDot }: ProductBadgeProps) => {\n\tconst finalProductName = productName.replace('hashicorp', 'HashiCorp')\n\n\tconst productBrand =\n\t\tfinalProductName === 'HashiCorp cloud platform' ? 'hashicorp' : productName\n\n\treturn (\n\t\t<Badge\n\t\t\tclassName={s.badge}\n\t\t\ttext={finalProductName}\n\t\t\t{...(hasDot && {\n\t\t\t\ticon: 'dot',\n\t\t\t\ticonColor: `var(--mds-color-${productBrand}-brand)`,\n\t\t\t})}\n\t\t/>\n\t)\n}\n\nProductBadge.displayName = 'ProductBadge'\n\nexport type { ProductBadgeProps }\nexport { ProductBadge }\n","'use client'\n\nimport type { ThumbnailProps } from '../types'\nimport { useMDSImage } from '../../../utils/mds-context'\nimport s from '../style.module.css'\n\nexport const Thumbnail = ({ src, alt }: ThumbnailProps) => {\n\tconst Image = useMDSImage()\n\n\treturn (\n\t\t<div className={s.thumbnail} data-testid=\"wpl-card-thumbnail\">\n\t\t\t<div className={s.image}>\n\t\t\t\t<Image src={src} alt={alt} width={800} height={450} />\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n\nThumbnail.displayName = 'Thumbnail'\n\nexport const PersonThumbnail = ({ src, alt }: ThumbnailProps) => {\n\tconst Image = useMDSImage()\n\n\treturn (\n\t\t<div className={s.personThumbnail} data-testid=\"wpl-card-thumbnail\">\n\t\t\t<div className={s.image}>\n\t\t\t\t<Image src={src} alt={alt} width={800} height={450} />\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n\nPersonThumbnail.displayName = 'PersonThumbnail'\n\nexport const LogoThumbnail = ({ src, alt }: ThumbnailProps) => {\n\tconst Image = useMDSImage()\n\n\treturn (\n\t\t<div className={s.logoThumbnail} data-testid=\"wpl-card-logo-thumbnail\">\n\t\t\t<div className={s.image}>\n\t\t\t\t<Image src={src} alt={alt} width={800} height={450} />\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n\nLogoThumbnail.displayName = 'LogoThumbnail'\n","import { forwardRef } from 'react'\nimport { Card as MDSCard } from '../../components/card'\nimport { Text } from '../../components/text'\nimport { IconArrowRight24 } from '@hashicorp/flight-icons/svg-react/arrow-right-24'\nimport { ProductBadge } from '../product-badge'\nimport { Thumbnail, PersonThumbnail, LogoThumbnail } from './thumbnails'\nimport type {\n\tCardPrimitiveProps,\n\tMetaProps,\n\tContentProps,\n\tHeadingProps,\n\tProductBadgesProps,\n\tDescriptionProps,\n} from './types'\nimport s from './style.module.css'\nimport classNames from 'classnames'\n\nconst Root = forwardRef<HTMLDivElement, CardPrimitiveProps>((props, ref) => {\n\tconst {\n\t\twithArrow = true,\n\t\tlink,\n\t\tclickHandler,\n\t\tisExternal,\n\t\tchildren,\n\t\tclassName,\n\t\t'aria-label': ariaLabel,\n\t} = props\n\n\treturn (\n\t\t<MDSCard\n\t\t\tclassName={classNames(s.card, className)}\n\t\t\thref={link}\n\t\t\tonClickCapture={clickHandler}\n\t\t\tisExternal={isExternal}\n\t\t\tref={ref}\n\t\t\taria-label={ariaLabel}\n\t\t>\n\t\t\t{children}\n\t\t\t<div className={s.cta}>{withArrow ? <IconArrowRight24 /> : null}</div>\n\t\t</MDSCard>\n\t)\n})\n\nRoot.displayName = 'CardPrimitives.Root'\n\nconst Meta = ({ items }: MetaProps) => {\n\treturn (\n\t\t<div className={s.meta} data-testid=\"wpl-card-meta\">\n\t\t\t<Text.Label>\n\t\t\t\t{items.map((item, stableIdx) => {\n\t\t\t\t\tconst isLastItem = stableIdx === items.length - 1\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{item}\n\t\t\t\t\t\t\t{!isLastItem ? (\n\t\t\t\t\t\t\t\t<span className={s.metaSeparator} aria-hidden={true}>\n\t\t\t\t\t\t\t\t\t|\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t</>\n\t\t\t\t\t)\n\t\t\t\t})}\n\t\t\t</Text.Label>\n\t\t</div>\n\t)\n}\n\nMeta.displayName = 'Meta'\n\nconst Content = ({ children }: ContentProps) => {\n\treturn (\n\t\t<div className={s.content} data-testid=\"wpl-card-content\">\n\t\t\t{children}\n\t\t</div>\n\t)\n}\n\nContent.displayName = 'Content'\n\nconst Heading = ({ as = 'h2', children }: HeadingProps) => {\n\treturn (\n\t\t<Text.DisplayExpressive tag={as} size=\"200\" className={s.heading}>\n\t\t\t{children}\n\t\t</Text.DisplayExpressive>\n\t)\n}\n\nHeading.displayName = 'Heading'\n\nconst ProductBadges = ({ badges, children }: ProductBadgesProps) => {\n\treturn (\n\t\t<div className={s.productBadges} data-testid=\"wpl-card-badges\">\n\t\t\t{badges.map((badge, stableIdx) => {\n\t\t\t\treturn (\n\t\t\t\t\t<ProductBadge\n\t\t\t\t\t\t// eslint-disable-next-line react/no-array-index-key\n\t\t\t\t\t\tkey={`product-badge-${stableIdx}`}\n\t\t\t\t\t\tproductName={badge}\n\t\t\t\t\t\thasDot={true}\n\t\t\t\t\t/>\n\t\t\t\t)\n\t\t\t})}\n\t\t\t{children}\n\t\t</div>\n\t)\n}\n\nProductBadges.displayName = 'ProductBadges'\n\nconst Description = ({ children }: DescriptionProps) => {\n\treturn (\n\t\t<Text.Body tag=\"p\" size=\"200\" className={s.description}>\n\t\t\t{children}\n\t\t</Text.Body>\n\t)\n}\n\nDescription.displayName = 'Description'\n\nconst CardPrimitives = {\n\tRoot,\n\tThumbnail,\n\tPersonThumbnail,\n\tLogoThumbnail,\n\tMeta,\n\tContent,\n\tHeading,\n\tDescription,\n\tProductBadges,\n}\n\nexport { CardPrimitives }\n","import { Badge } from '../../../components/badge'\nimport { CardPrimitives } from '../primitives'\nimport type { CardPatternProps } from '../types'\n\ninterface UnifiedCardProps extends CardPatternProps {\n\tbadges?: (string | string[])[]\n}\n\nconst UnifiedCard = ({\n\theading,\n\tmeta,\n\tlink,\n\tproductBadges,\n\tbadges,\n\tthumbnail,\n\twithArrow = false,\n\tisExternal = false,\n\tclassName,\n\t'aria-label': ariaLabel,\n}: UnifiedCardProps) => {\n\treturn (\n\t\t<CardPrimitives.Root\n\t\t\tlink={link}\n\t\t\twithArrow={withArrow}\n\t\t\tisExternal={isExternal}\n\t\t\tclassName={className}\n\t\t\taria-label={ariaLabel || heading}\n\t\t>\n\t\t\t{thumbnail ? <CardPrimitives.Thumbnail {...thumbnail} /> : null}\n\t\t\t<CardPrimitives.Content>\n\t\t\t\t{meta && meta.length > 0 ? <CardPrimitives.Meta items={meta} /> : null}\n\t\t\t\t<CardPrimitives.Heading>{heading}</CardPrimitives.Heading>\n\t\t\t\t{productBadges && productBadges?.length > 0 ? (\n\t\t\t\t\t<CardPrimitives.ProductBadges badges={productBadges}>\n\t\t\t\t\t\t{badges && badges.length > 0\n\t\t\t\t\t\t\t? badges.map((badge, stableIdx) => {\n\t\t\t\t\t\t\t\t\tif (Array.isArray(badge)) {\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<Badge key={stableIdx} icon={badge[0]} text={badge[1]} />\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturn <Badge key={stableIdx} text={badge} />\n\t\t\t\t\t\t\t })\n\t\t\t\t\t\t\t: null}\n\t\t\t\t\t</CardPrimitives.ProductBadges>\n\t\t\t\t) : null}\n\t\t\t</CardPrimitives.Content>\n\t\t</CardPrimitives.Root>\n\t)\n}\n\nUnifiedCard.displayName = 'UnifiedCard'\n\nexport type { UnifiedCardProps }\nexport { UnifiedCard }\n","import type { ThumbnailProps } from '../types'\nimport { UnifiedCard } from '../unified-card'\nimport s from './style.module.css'\n\ninterface NewsroomCardProps {\n\theading: string\n\tdate: string\n\tcategory: string\n\tlink: string\n\tthumbnail?: ThumbnailProps\n\twithArrow?: boolean\n}\n\nconst NewsroomCard = ({\n\theading,\n\tdate,\n\tcategory,\n\tlink,\n\tthumbnail,\n\twithArrow = false,\n}: NewsroomCardProps) => {\n\treturn (\n\t\t<UnifiedCard\n\t\t\theading={heading}\n\t\t\tmeta={[date, category]}\n\t\t\tlink={link}\n\t\t\tthumbnail={thumbnail}\n\t\t\twithArrow={withArrow}\n\t\t\tclassName={s.newsroomCard}\n\t\t/>\n\t)\n}\n\nNewsroomCard.displayName = 'NewsroomCard'\n\nexport type { NewsroomCardProps }\nexport { NewsroomCard }\n","import { memo, type ReactNode } from 'react'\nimport { Text } from '../../../components/text'\nimport { IconGithub16 } from '@hashicorp/flight-icons/svg-react/github-16'\nimport { IconTwitter16 } from '@hashicorp/flight-icons/svg-react/twitter-16'\nimport { IconLinkedin16 } from '@hashicorp/flight-icons/svg-react/linkedin-16'\nimport { IconLink16 } from '@hashicorp/flight-icons/svg-react/link-16'\nimport { IconMail16 } from '@hashicorp/flight-icons/svg-react/mail-16'\nimport type { ProductBadgesProps, ThumbnailProps } from '../types'\nimport { CardPrimitives } from '../primitives'\nimport s from './style.module.css'\n\ninterface PersonCardProps {\n\tthumbnail: ThumbnailProps\n\tlink: string\n\tname: string\n\tlocation?: string\n\tbio?: string\n\tproductBadges?: ProductBadgesProps['badges']\n}\n\n// Map of hostnames to icons.\n/* eslint-disable react/jsx-key */\nconst iconMap = new Map<string, ReactNode>([\n\t// null signals that we don't want to render any icon\n\t['hashicorp.com', null],\n\t[\n\t\t'twitter.com',\n\t\t<IconTwitter16 data-testid={'wpl-personcard-twitter-icon'} />,\n\t],\n\t['github.com', <IconGithub16 data-testid={'wpl-personcard-github-icon'} />],\n\t[\n\t\t'linkedin.com',\n\t\t<IconLinkedin16 data-testid={'wpl-personcard-linkedin-icon'} />,\n\t],\n\t['mailto:', <IconMail16 data-testid={'wpl-personcard-mail-icon'} />],\n])\n/* eslint-enable react/jsx-key */\n\nconst Icon = memo(function Icon({ url }: { url: string }) {\n\tconst { protocol, host } = new URL(url)\n\tconst icon = iconMap.get(protocol === 'mailto:' ? 'mailto:' : host)\n\n\t// If the icon value is null, don't render an icon\n\tif (icon === null) {\n\t\treturn null\n\t}\n\n\t// Render the icon or the default icon if the icon value is undefined\n\treturn (\n\t\t<div className={s.thumbnailIcon}>\n\t\t\t{icon ?? <IconLink16 data-testid={'wpl-personcard-link-icon'} />}\n\t\t</div>\n\t)\n})\n\nconst PersonCard = ({\n\tlink,\n\tthumbnail,\n\tname,\n\tlocation,\n\tbio,\n\tproductBadges,\n}: PersonCardProps) => {\n\treturn (\n\t\t<CardPrimitives.Root link={link} withArrow={false} aria-label={name}>\n\t\t\t<div className={s.thumbnailContainer}>\n\t\t\t\t<CardPrimitives.PersonThumbnail {...thumbnail} />\n\t\t\t\t<Icon url={link} />\n\t\t\t</div>\n\t\t\t<CardPrimitives.Content>\n\t\t\t\t<div>\n\t\t\t\t\t<CardPrimitives.Heading>{name}</CardPrimitives.Heading>\n\t\t\t\t\t{location ? (\n\t\t\t\t\t\t<Text.Body tag=\"p\" size=\"200\" className={s.location}>\n\t\t\t\t\t\t\t{location}\n\t\t\t\t\t\t</Text.Body>\n\t\t\t\t\t) : null}\n\t\t\t\t</div>\n\t\t\t\t{bio ? (\n\t\t\t\t\t<CardPrimitives.Description>{bio}</CardPrimitives.Description>\n\t\t\t\t) : null}\n\t\t\t\t{productBadges && productBadges?.length > 0 ? (\n\t\t\t\t\t<CardPrimitives.ProductBadges badges={productBadges} />\n\t\t\t\t) : null}\n\t\t\t</CardPrimitives.Content>\n\t\t</CardPrimitives.Root>\n\t)\n}\n\nPersonCard.displayName = 'PersonCard'\n\nexport type { PersonCardProps }\nexport { PersonCard }\n","import type { CardPatternProps, ThumbnailProps } from '../types'\nimport { UnifiedCard } from '../unified-card'\n\ninterface ResourceCardProps {\n\theading: string\n\tdate?: string\n\tcategory: string\n\tlink: string\n\tproductBadges?: CardPatternProps['productBadges']\n\tthumbnail: ThumbnailProps\n\tisExternal?: CardPatternProps['isExternal']\n}\n\nconst ResourceCard = ({\n\theading,\n\tdate,\n\tcategory,\n\tlink,\n\tproductBadges,\n\tthumbnail,\n\tisExternal,\n}: ResourceCardProps) => {\n\tconst meta: string[] = date ? [date, category] : [category]\n\n\treturn (\n\t\t<UnifiedCard\n\t\t\tlink={link}\n\t\t\tmeta={meta}\n\t\t\tproductBadges={productBadges}\n\t\t\tthumbnail={thumbnail}\n\t\t\tisExternal={isExternal}\n\t\t\theading={heading}\n\t\t/>\n\t)\n}\n\nResourceCard.displayName = 'ResourceCard'\n\nexport type { ResourceCardProps }\nexport { ResourceCard }\n","import { CardPrimitives } from '../primitives'\nimport type { ThumbnailProps } from '../types'\n\ninterface PromoCardProps {\n\theading: string\n\tdescription?: string\n\teyebrow?: string\n\tlink: string\n\tclickHandler?: () => void\n\tthumbnail?: ThumbnailProps\n\twithArrow?: boolean\n\tisExternal?: boolean\n\tclassName?: string\n}\n\nconst PromoCard = ({\n\theading,\n\tdescription,\n\teyebrow,\n\tlink,\n\tclickHandler,\n\tthumbnail,\n\twithArrow = false,\n\tisExternal = false,\n\tclassName,\n}: PromoCardProps) => {\n\treturn (\n\t\t<CardPrimitives.Root\n\t\t\tlink={link}\n\t\t\twithArrow={withArrow}\n\t\t\tisExternal={isExternal}\n\t\t\tclassName={className}\n\t\t\tclickHandler={clickHandler}\n\t\t\taria-label={heading}\n\t\t>\n\t\t\t{thumbnail ? <CardPrimitives.Thumbnail {...thumbnail} /> : null}\n\t\t\t<CardPrimitives.Content>\n\t\t\t\t{eyebrow ? <CardPrimitives.Meta items={[eyebrow]} /> : null}\n\t\t\t\t<CardPrimitives.Heading>{heading}</CardPrimitives.Heading>\n\t\t\t\t{description ? (\n\t\t\t\t\t<CardPrimitives.Description>{description}</CardPrimitives.Description>\n\t\t\t\t) : null}\n\t\t\t</CardPrimitives.Content>\n\t\t</CardPrimitives.Root>\n\t)\n}\n\nPromoCard.displayName = 'PromoCard'\n\nexport type { PromoCardProps }\nexport { PromoCard }\n","'use client'\n\nimport type { MDSImageProps } from '../../../utils/mds-context'\nimport { useMDSImage } from '../../../utils/mds-context'\nimport { Badge } from '../../../components/badge'\nimport { Text } from '../../../components/text'\nimport { CardPrimitives } from '../primitives'\nimport type { CardPatternProps } from '../types'\nimport s from './style.module.css'\n\ninterface PartnerCardProps {\n\theading: string\n\tdescription: string\n\tmeta: string[]\n\tlink: string\n\tproductBadges?: CardPatternProps['productBadges']\n\tcompetencyBadges?: string[]\n\tlogo: MDSImageProps\n\tclassName?: string\n}\n\nconst PartnerCard = ({\n\theading,\n\tdescription,\n\tmeta,\n\tlink,\n\tproductBadges,\n\tcompetencyBadges,\n\tlogo,\n\tclassName,\n}: PartnerCardProps) => {\n\tconst Image = useMDSImage()\n\n\tconst hasProductBadges = productBadges && productBadges.length > 0\n\tconst hasCompetencyBadges = competencyBadges && competencyBadges.length > 0\n\n\treturn (\n\t\t<CardPrimitives.Root\n\t\t\tlink={link}\n\t\t\twithArrow={false}\n\t\t\tisExternal={false}\n\t\t\tclassName={className}\n\t\t\taria-label={heading}\n\t\t>\n\t\t\t<div className={s.logoContainer}>\n\t\t\t\t<Image {...logo} alt={logo.alt} className={s.logo} />\n\t\t\t</div>\n\t\t\t<CardPrimitives.Content>\n\t\t\t\t<CardPrimitives.Meta items={meta} />\n\t\t\t\t<Text.Body tag=\"p\" size=\"200\" className={s.description}>\n\t\t\t\t\t{description}\n\t\t\t\t</Text.Body>\n\t\t\t\t{hasProductBadges || hasCompetencyBadges ? (\n\t\t\t\t\t<CardPrimitives.ProductBadges badges={productBadges || []}>\n\t\t\t\t\t\t{hasCompetencyBadges &&\n\t\t\t\t\t\t\tcompetencyBadges.map((competencyBadge, stableIdx) => (\n\t\t\t\t\t\t\t\t<Badge key={stableIdx} text={competencyBadge} icon=\"dot\" />\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t</CardPrimitives.ProductBadges>\n\t\t\t\t) : null}\n\t\t\t</CardPrimitives.Content>\n\t\t</CardPrimitives.Root>\n\t)\n}\n\nPartnerCard.displayName = 'PartnerCard'\n\nexport type { PartnerCardProps }\nexport { PartnerCard }\n","export type NormalizerOpts<TOut extends string> = {\n\taliases?: Record<string, TOut>\n\tfallback?: TOut\n\ttransform?: (raw: string) => string\n}\n\nexport type Normalizer<TOut extends string> = {\n\t(input: unknown, opts?: NormalizerOpts<TOut>): TOut\n\twith(bound: NormalizerOpts<TOut>): Normalizer<TOut>\n}\n\nexport function makeNormalizer<\n\tTAllowed extends readonly string[],\n\tTOut extends TAllowed[number]\n>(\n\tallowed: TAllowed,\n\tdefaults: {\n\t\tfallback: TOut\n\t\taliases?: Record<string, TOut>\n\t\ttransform?: (raw: string) => string\n\t}\n): Normalizer<TOut> {\n\tconst list = allowed as readonly string[]\n\n\tconst defaultAliases: Record<string, TOut> =\n\t\tdefaults.aliases ??\n\t\t(Object.fromEntries(list.map((v) => [v, v])) as Record<string, TOut>)\n\n\tconst defaultTransform =\n\t\tdefaults.transform ?? ((s: string) => s.trim().toLowerCase())\n\n\tconst core = ((input: unknown, opts?: NormalizerOpts<TOut>): TOut => {\n\t\tconst aliases = { ...defaultAliases, ...(opts?.aliases ?? {}) }\n\t\tconst fallback = opts?.fallback ?? defaults.fallback\n\t\tconst transform = opts?.transform ?? defaultTransform\n\n\t\tif (typeof input !== 'string') return fallback\n\n\t\tconst s = transform(input)\n\t\tconst candidate = (aliases[s] ?? s) as string\n\t\treturn list.includes(candidate) ? (candidate as TOut) : fallback\n\t}) as Normalizer<TOut>\n\n\tcore.with = (bound: NormalizerOpts<TOut>) =>\n\t\t((input: unknown, opts?: NormalizerOpts<TOut>) =>\n\t\t\tcore(input, { ...bound, ...(opts ?? {}) })) as Normalizer<TOut>\n\n\treturn core\n}\n\n/**\n * Group helper: normalize a whole props object in one call.\n * - `all.transform` applies to every normalizer in the set (safe cross-type).\n * - `each[key]` lets you override per-key opts (aliases/fallback/transform).\n */\nexport function makeNormalizerSet<TOuts extends Record<string, string>>(map: {\n\t[K in keyof TOuts]: Normalizer<TOuts[K]>\n}) {\n\ttype In = { [K in keyof TOuts]?: unknown | null }\n\ttype Out = { [K in keyof TOuts]: TOuts[K] }\n\ttype All = Pick<NormalizerOpts<string>, 'transform'> // safe cross-prop\n\ttype Each = { [K in keyof TOuts]?: NormalizerOpts<TOuts[K]> }\n\ttype Call = (input: In, opts?: { all?: All; each?: Each }) => Out\n\n\tconst call = ((input: In, opts?: { all?: All; each?: Each }) => {\n\t\tconst out = {} as Out\n\t\tfor (const k in map) {\n\t\t\tif (!Object.prototype.hasOwnProperty.call(map, k)) continue\n\t\t\tconst key = k as keyof TOuts\n\t\t\tconst n = map[key]\n\t\t\tconst base = opts?.all ? n.with(opts.all as any) : n\n\t\t\tout[key] = base(input?.[key], opts?.each?.[key]) as TOuts[typeof key]\n\t\t}\n\t\treturn out\n\t}) as Call & { with(all: All): Call }\n\n\tcall.with = (all: All) => {\n\t\tconst bound = {} as { [K in keyof TOuts]: Normalizer<TOuts[K]> }\n\t\tfor (const k in map) {\n\t\t\tif (!Object.prototype.hasOwnProperty.call(map, k)) continue\n\t\t\tconst key = k as keyof TOuts\n\t\t\tbound[key] = map[key].with(all as any)\n\t\t}\n\t\treturn makeNormalizerSet(bound)\n\t}\n\n\treturn call\n}\n","import type { PropsWithChildren } from 'react'\nimport { makeNormalizer, makeNormalizerSet } from '../../utils/make-normalizer'\nimport classNames from 'classnames'\nimport s from './layout.module.css'\n\nconst DEFAULT_APPEARANCE = 'light'\nconst DEFAULT_BACKGROUND = 'primary'\nconst DEFAULT_PADDING_TOP = 'medium'\nconst DEFAULT_PADDING_BOTTOM = 'medium'\n\nexport const LAYOUT_APPEARANCES = ['light', 'dark'] as const\nexport const LAYOUT_BACKGROUNDS = ['primary', 'faint', 'transparent'] as const\nexport const LAYOUT_PADDING = ['none', 'small', 'medium', 'large'] as const\n\nexport type LayoutAppearance = (typeof LAYOUT_APPEARANCES)[number]\nexport type LayoutBackground = (typeof LAYOUT_BACKGROUNDS)[number]\nexport type LayoutPadding = (typeof LAYOUT_PADDING)[number]\n\nexport const normalizeLayoutProps = makeNormalizerSet({\n\tappearance: makeNormalizer(LAYOUT_APPEARANCES, {\n\t\tfallback: DEFAULT_APPEARANCE,\n\t}),\n\tbackground: makeNormalizer(LAYOUT_BACKGROUNDS, {\n\t\tfallback: DEFAULT_BACKGROUND,\n\t}),\n\tpaddingTop: makeNormalizer(LAYOUT_PADDING, {\n\t\tfallback: DEFAULT_PADDING_TOP,\n\t}),\n\tpaddingBottom: makeNormalizer(LAYOUT_PADDING, {\n\t\tfallback: DEFAULT_PADDING_BOTTOM,\n\t}),\n})\n\nexport interface LayoutProps extends PropsWithChildren {\n\tclassName?: string\n\t/**\n\t * The appearance of the layout\n\t */\n\tappearance?: LayoutAppearance\n\t/**\n\t * The color token used for the background. The color value changes based on `appearance`\n\t */\n\tbackground?: LayoutBackground\n\t/**\n\t * The space between the layout component's content and its top border\n\t */\n\tpaddingTop?: LayoutPadding\n\t/**\n\t * The space between the layout component's content and its bottom border\n\t */\n\tpaddingBottom?: LayoutPadding\n}\n\nexport const Layout = ({\n\tclassName,\n\tchildren,\n\tappearance = DEFAULT_APPEARANCE,\n\tbackground = DEFAULT_BACKGROUND,\n\tpaddingBottom = DEFAULT_PADDING_TOP,\n\tpaddingTop = DEFAULT_PADDING_BOTTOM,\n}: LayoutProps) => {\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames([\n\t\t\t\ts.layout,\n\t\t\t\t{ ['mds-dark-mode']: appearance === 'dark' },\n\t\t\t\ts[background],\n\t\t\t\ts[`padding-top-${paddingTop}`],\n\t\t\t\ts[`padding-bottom-${paddingBottom}`],\n\t\t\t\tclassName,\n\t\t\t])}\n\t\t>\n\t\t\t{children}\n\t\t</div>\n\t)\n}\n\nLayout.displayName = 'Layout'\n","import classNames from 'classnames'\nimport { makeNormalizer, makeNormalizerSet } from '../../utils/make-normalizer'\nimport { FlightIcon } from '../../components/flight-icon'\nimport { Text } from '../../components/text'\nimport s from './product-logo.module.css'\n\nfunction capitalize(value: string) {\n\treturn value.charAt(0).toUpperCase() + value.slice(1)\n}\n\nconst DEFAULT_SIZE = 'small'\nconst DEFAULT_COLOR = 'primary'\nconst DEFAULT_PRODUCT = 'hcp'\n\nconst HCP_PRODUCT_EXCEPTIONS = [\n\t'vault-radar',\n\t'vault-secrets',\n\t'vault-dedicated',\n]\n\nexport const PRODUCT_LOGO_SIZES = ['small', 'medium', 'large'] as const\nexport const PRODUCT_LOGO_COLORS = ['primary', 'strong'] as const\nexport const PRODUCT_LOGO_PRODUCTS = [\n\t'hcp',\n\t'hashicorp',\n\t'boundary',\n\t'consul',\n\t'nomad',\n\t'packer',\n\t'terraform',\n\t'vault',\n\t'vault-dedicated',\n\t'vault-enterprise',\n\t'vault-radar',\n\t'vault-secrets',\n\t'vagrant',\n\t'waypoint',\n] as const\n\nexport type ProductLogoSize = (typeof PRODUCT_LOGO_SIZES)[number]\nexport type ProductLogoColor = (typeof PRODUCT_LOGO_COLORS)[number]\nexport type ProductLogoProduct = (typeof PRODUCT_LOGO_PRODUCTS)[number]\n\nexport const normalizeProductLogoProps = makeNormalizerSet({\n\tsize: makeNormalizer(PRODUCT_LOGO_SIZES, {\n\t\tfallback: DEFAULT_SIZE,\n\t}),\n\tcolor: makeNormalizer(PRODUCT_LOGO_COLORS, {\n\t\tfallback: DEFAULT_COLOR,\n\t}),\n\tproduct: makeNormalizer(PRODUCT_LOGO_PRODUCTS, {\n\t\tfallback: DEFAULT_PRODUCT,\n\t}),\n})\n\nexport interface ProductLogoProps {\n\tsize?: ProductLogoSize\n\tcolor?: ProductLogoColor\n\tproduct: ProductLogoProduct\n}\n\nexport const ProductLogo = ({\n\tsize = DEFAULT_SIZE,\n\tcolor = DEFAULT_COLOR,\n\tproduct,\n}: ProductLogoProps) => {\n\tconst productName = PRODUCT_LOGO_MAP[product]?.name ?? capitalize(product)\n\n\treturn (\n\t\t<div className={classNames(s['product-logo'], s[size])}>\n\t\t\t<FlightIcon\n\t\t\t\tsize={size === 'small' ? 16 : 24}\n\t\t\t\tname={PRODUCT_LOGO_MAP[product]?.icon ?? `${product}-color`}\n\t\t\t\tcolor={PRODUCT_LOGO_MAP[product]?.color}\n\t\t\t/>\n\t\t\t{HCP_PRODUCT_EXCEPTIONS.includes(product) ? (\n\t\t\t\t<div>\n\t\t\t\t\t{/* Always bold \"HCP [Product]\"... */}\n\t\t\t\t\t<Text.DisplayExpressive\n\t\t\t\t\t\tclassName={s[size]}\n\t\t\t\t\t\tcolor={color}\n\t\t\t\t\t\tweight=\"semibold\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{productName.split(' ').slice(0, 2).join(' ')}{' '}\n\t\t\t\t\t</Text.DisplayExpressive>\n\t\t\t\t\t{/* ...But display the sub-product in regular weight */}\n\t\t\t\t\t<Text.DisplayExpressive\n\t\t\t\t\t\tclassName={s[size]}\n\t\t\t\t\t\tcolor={color}\n\t\t\t\t\t\tweight=\"regular\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{productName.split(' ').slice(2)[0]}\n\t\t\t\t\t</Text.DisplayExpressive>\n\t\t\t\t</div>\n\t\t\t) : (\n\t\t\t\t// Default to unmodified display of the product name\n\t\t\t\t<Text.DisplayExpressive\n\t\t\t\t\tclassName={s[size]}\n\t\t\t\t\tcolor={color}\n\t\t\t\t\tweight=\"semibold\"\n\t\t\t\t>\n\t\t\t\t\t{productName}\n\t\t\t\t</Text.DisplayExpressive>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n\nProductLogo.displayName = 'ProductLogo'\n\nconst PRODUCT_LOGO_MAP: Record<\n\tstring,\n\t{ icon: string; name: string; color: string }\n> = {\n\thcp: {\n\t\ticon: 'hashicorp-square',\n\t\tcolor: 'var(--mds-color-hcp-brand)',\n\t\tname: 'HashiCorp Cloud Platform',\n\t},\n\thashicorp: {\n\t\ticon: 'hashicorp',\n\t\tcolor: 'var(--mds-color-hashicorp-brand)',\n\t\tname: 'HashiCorp',\n\t},\n\t'vault-radar': {\n\t\ticon: 'vault-square',\n\t\tcolor: 'var(--mds-color-vault-radar-brand)',\n\t\tname: 'HCP Vault Radar',\n\t},\n\t'vault-secrets': {\n\t\ticon: 'vault-square',\n\t\tcolor: 'var(--mds-color-vault-secrets-brand)',\n\t\tname: 'HCP Vault Secrets',\n\t},\n\t'vault-dedicated': {\n\t\ticon: 'vault-fill',\n\t\tcolor: 'var(--mds-color-vault-secrets-brand)',\n\t\tname: 'HCP Vault Dedicated',\n\t},\n\t'vault-enterprise': {\n\t\ticon: 'vault-fill',\n\t\tcolor: 'var(--mds-color-vault-secrets-brand)',\n\t\tname: 'Vault Enterprise',\n\t},\n}\n","'use client'\n\nimport { Card } from '../../components/card'\nimport classNames from 'classnames'\nimport type { RelatedContentProps } from './types'\nimport { useMDSLink } from '../../utils/mds-context'\nimport s from './style.module.css'\nimport { Text } from '../../components'\n\nconst RelatedContent = ({\n\tappearance = 'transparent',\n\theadline,\n\tdescription,\n\tcards,\n\tcta,\n}: RelatedContentProps) => {\n\tconst Link = useMDSLink()\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(s.root, s[appearance], {\n\t\t\t\t['mds-dark-mode']: appearance === 'dark',\n\t\t\t})}\n\t\t>\n\t\t\t<div className={s.wrapper}>\n\t\t\t\t<div className={s.textStack}>\n\t\t\t\t\t<Text.DisplayExpressive\n\t\t\t\t\t\ttag=\"h2\"\n\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\tclassName={s.headline}\n\t\t\t\t\t\tsize=\"400\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{headline}\n\t\t\t\t\t</Text.DisplayExpressive>\n\t\t\t\t\t{description ? (\n\t\t\t\t\t\t<Text.Body size=\"300\" color=\"faint\" tag=\"p\">\n\t\t\t\t\t\t\t{description}\n\t\t\t\t\t\t</Text.Body>\n\t\t\t\t\t) : null}\n\t\t\t\t</div>\n\t\t\t\t<div className={s.cards} data-testid=\"wpl-cards-container\">\n\t\t\t\t\t{cards.map((card, i) => (\n\t\t\t\t\t\t<Card\n\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\thref={card.link}\n\t\t\t\t\t\t\tcontent={{\n\t\t\t\t\t\t\t\t...(card.thumbnail && {\n\t\t\t\t\t\t\t\t\tthumbnail: {\n\t\t\t\t\t\t\t\t\t\talt: card.thumbnail.alt,\n\t\t\t\t\t\t\t\t\t\tsrc: card.thumbnail.src,\n\t\t\t\t\t\t\t\t\t\taspectRatio: '16/9',\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\teyebrow: card.meta,\n\t\t\t\t\t\t\t\theading: card.heading,\n\t\t\t\t\t\t\t\tdescription: card.description,\n\t\t\t\t\t\t\t\tshowArrow: true,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\n\t\t\t\t{cta ? (\n\t\t\t\t\t<div className={s.cta} data-testid=\"wpl-cta-container\">\n\t\t\t\t\t\t<Link href={cta.href}>{cta.text}</Link>\n\t\t\t\t\t</div>\n\t\t\t\t) : null}\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n\nRelatedContent.displayName = 'RelatedContent'\n\nexport { RelatedContent }\n"],"names":["ProductBadge","productName","hasDot","finalProductName","productBrand","jsx","Badge","s","Thumbnail","src","alt","Image","useMDSImage","PersonThumbnail","LogoThumbnail","Root","forwardRef","props","ref","withArrow","link","clickHandler","isExternal","children","className","ariaLabel","jsxs","MDSCard","classNames","IconArrowRight24","Meta","items","Text","item","stableIdx","isLastItem","Fragment","Content","Heading","as","ProductBadges","badges","badge","Description","CardPrimitives","UnifiedCard","heading","meta","productBadges","thumbnail","NewsroomCard","date","category","iconMap","IconTwitter16","IconGithub16","IconLinkedin16","IconMail16","Icon","memo","url","protocol","host","icon","IconLink16","PersonCard","name","location","bio","ResourceCard","PromoCard","description","eyebrow","PartnerCard","competencyBadges","logo","hasProductBadges","hasCompetencyBadges","competencyBadge","makeNormalizer","allowed","defaults","list","defaultAliases","v","defaultTransform","core","input","opts","aliases","fallback","transform","candidate","bound","makeNormalizerSet","map","call","out","k","key","n","base","all","DEFAULT_APPEARANCE","DEFAULT_BACKGROUND","DEFAULT_PADDING_TOP","DEFAULT_PADDING_BOTTOM","LAYOUT_APPEARANCES","LAYOUT_BACKGROUNDS","LAYOUT_PADDING","normalizeLayoutProps","Layout","appearance","background","paddingBottom","paddingTop","capitalize","value","DEFAULT_SIZE","DEFAULT_COLOR","DEFAULT_PRODUCT","HCP_PRODUCT_EXCEPTIONS","PRODUCT_LOGO_SIZES","PRODUCT_LOGO_COLORS","PRODUCT_LOGO_PRODUCTS","normalizeProductLogoProps","ProductLogo","size","color","product","PRODUCT_LOGO_MAP","FlightIcon","RelatedContent","headline","cards","cta","Link","useMDSLink","card","i","Card"],"mappings":"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"}