@hashicorp/mds-react 0.9.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 (511) hide show
  1. package/LICENSE +336 -0
  2. package/README.md +109 -0
  3. package/dist/components/accordion/index.d.ts +14 -0
  4. package/dist/components/accordion/index.js +9 -0
  5. package/dist/components/accordion/index.js.map +1 -0
  6. package/dist/components/accordion/item/button.d.ts +6 -0
  7. package/dist/components/accordion/item/button.js +44 -0
  8. package/dist/components/accordion/item/button.js.map +1 -0
  9. package/dist/components/accordion/item/index.d.ts +24 -0
  10. package/dist/components/accordion/item/index.js +59 -0
  11. package/dist/components/accordion/item/index.js.map +1 -0
  12. package/dist/components/accordion/style.module.scss +110 -0
  13. package/dist/components/accordion/style.module.scss.js +24 -0
  14. package/dist/components/accordion/style.module.scss.js.map +1 -0
  15. package/dist/components/alert/alert.module.scss +229 -0
  16. package/dist/components/alert/alert.module.scss.js +29 -0
  17. package/dist/components/alert/alert.module.scss.js.map +1 -0
  18. package/dist/components/alert/icon.d.ts +9 -0
  19. package/dist/components/alert/icon.js +34 -0
  20. package/dist/components/alert/icon.js.map +1 -0
  21. package/dist/components/alert/index.d.ts +62 -0
  22. package/dist/components/alert/index.js +97 -0
  23. package/dist/components/alert/index.js.map +1 -0
  24. package/dist/components/badge/index.d.ts +30 -0
  25. package/dist/components/badge/index.js +50 -0
  26. package/dist/components/badge/index.js.map +1 -0
  27. package/dist/components/badge/style.module.scss +130 -0
  28. package/dist/components/badge/style.module.scss.js +22 -0
  29. package/dist/components/badge/style.module.scss.js.map +1 -0
  30. package/dist/components/badge-count/index.d.ts +16 -0
  31. package/dist/components/badge-count/index.js +29 -0
  32. package/dist/components/badge-count/index.js.map +1 -0
  33. package/dist/components/badge-count/style.module.scss +108 -0
  34. package/dist/components/badge-count/style.module.scss.js +15 -0
  35. package/dist/components/badge-count/style.module.scss.js.map +1 -0
  36. package/dist/components/breadcrumbs/index.d.ts +7 -0
  37. package/dist/components/breadcrumbs/index.js +38 -0
  38. package/dist/components/breadcrumbs/index.js.map +1 -0
  39. package/dist/components/breadcrumbs/item/index.d.ts +2 -0
  40. package/dist/components/breadcrumbs/item/index.js +32 -0
  41. package/dist/components/breadcrumbs/item/index.js.map +1 -0
  42. package/dist/components/breadcrumbs/style.module.scss +183 -0
  43. package/dist/components/breadcrumbs/style.module.scss.js +27 -0
  44. package/dist/components/breadcrumbs/style.module.scss.js.map +1 -0
  45. package/dist/components/breadcrumbs/truncation-button/index.d.ts +3 -0
  46. package/dist/components/breadcrumbs/truncation-button/index.js +25 -0
  47. package/dist/components/breadcrumbs/truncation-button/index.js.map +1 -0
  48. package/dist/components/breadcrumbs/types/index.d.ts +51 -0
  49. package/dist/components/button/index.d.ts +31 -0
  50. package/dist/components/button/index.js +119 -0
  51. package/dist/components/button/index.js.map +1 -0
  52. package/dist/components/button/styles.module.scss +221 -0
  53. package/dist/components/button/styles.module.scss.js +32 -0
  54. package/dist/components/button/styles.module.scss.js.map +1 -0
  55. package/dist/components/card/card-thumbnail/card-thumbnail.module.css +10 -0
  56. package/dist/components/card/card-thumbnail/card-thumbnail.module.css.js +8 -0
  57. package/dist/components/card/card-thumbnail/card-thumbnail.module.css.js.map +1 -0
  58. package/dist/components/card/card-thumbnail/index.d.ts +2 -0
  59. package/dist/components/card/card-thumbnail/index.js +23 -0
  60. package/dist/components/card/card-thumbnail/index.js.map +1 -0
  61. package/dist/components/card/index.d.ts +3 -0
  62. package/dist/components/card/index.js +157 -0
  63. package/dist/components/card/index.js.map +1 -0
  64. package/dist/components/card/styles.module.css +98 -0
  65. package/dist/components/card/styles.module.css.js +29 -0
  66. package/dist/components/card/styles.module.css.js.map +1 -0
  67. package/dist/components/card/types.d.ts +52 -0
  68. package/dist/components/code-block/code-block.module.scss +511 -0
  69. package/dist/components/code-block/code-block.module.scss.js +34 -0
  70. package/dist/components/code-block/code-block.module.scss.js.map +1 -0
  71. package/dist/components/code-block/code-lines/index.d.ts +12 -0
  72. package/dist/components/code-block/code-lines/index.js +59 -0
  73. package/dist/components/code-block/code-lines/index.js.map +1 -0
  74. package/dist/components/code-block/code-lines/utils/split-html-into-lines.d.ts +19 -0
  75. package/dist/components/code-block/code-lines/utils/split-html-into-lines.js +19 -0
  76. package/dist/components/code-block/code-lines/utils/split-html-into-lines.js.map +1 -0
  77. package/dist/components/code-block/code-lines/utils/split-jsx-into-lines.d.ts +21 -0
  78. package/dist/components/code-block/code-lines/utils/split-jsx-into-lines.js +31 -0
  79. package/dist/components/code-block/code-lines/utils/split-jsx-into-lines.js.map +1 -0
  80. package/dist/components/code-block/hidden-copy-content/index.d.ts +5 -0
  81. package/dist/components/code-block/hidden-copy-content/index.js +13 -0
  82. package/dist/components/code-block/hidden-copy-content/index.js.map +1 -0
  83. package/dist/components/code-block/index.d.ts +55 -0
  84. package/dist/components/code-block/index.js +88 -0
  85. package/dist/components/code-block/index.js.map +1 -0
  86. package/dist/components/code-block/utils/parse-highlighted-lines.d.ts +2 -0
  87. package/dist/components/code-block/utils/parse-highlighted-lines.js +39 -0
  88. package/dist/components/code-block/utils/parse-highlighted-lines.js.map +1 -0
  89. package/dist/components/code-block/utils/process-snippet.d.ts +12 -0
  90. package/dist/components/code-block/utils/process-snippet.js +20 -0
  91. package/dist/components/code-block/utils/process-snippet.js.map +1 -0
  92. package/dist/components/code-block/utils/shellwords.d.ts +14 -0
  93. package/dist/components/code-block/utils/shellwords.js +33 -0
  94. package/dist/components/code-block/utils/shellwords.js.map +1 -0
  95. package/dist/components/combo-box-primitive/index.d.ts +69 -0
  96. package/dist/components/combo-box-primitive/index.js +302 -0
  97. package/dist/components/combo-box-primitive/index.js.map +1 -0
  98. package/dist/components/dialog-primitive/dialog.module.scss +38 -0
  99. package/dist/components/dialog-primitive/dialog.module.scss.js +12 -0
  100. package/dist/components/dialog-primitive/dialog.module.scss.js.map +1 -0
  101. package/dist/components/dialog-primitive/index.d.ts +12 -0
  102. package/dist/components/dialog-primitive/index.js +15 -0
  103. package/dist/components/dialog-primitive/index.js.map +1 -0
  104. package/dist/components/disclosure-primitive/index.d.ts +19 -0
  105. package/dist/components/disclosure-primitive/index.js +57 -0
  106. package/dist/components/disclosure-primitive/index.js.map +1 -0
  107. package/dist/components/disclosure-primitive/styles.module.css +3 -0
  108. package/dist/components/disclosure-primitive/styles.module.css.js +7 -0
  109. package/dist/components/disclosure-primitive/styles.module.css.js.map +1 -0
  110. package/dist/components/disclosure-primitive/use-disclosure-primitive.d.ts +11 -0
  111. package/dist/components/disclosure-primitive/use-disclosure-primitive.js +17 -0
  112. package/dist/components/disclosure-primitive/use-disclosure-primitive.js.map +1 -0
  113. package/dist/components/dismiss-button/index.d.ts +9 -0
  114. package/dist/components/dismiss-button/index.js +22 -0
  115. package/dist/components/dismiss-button/index.js.map +1 -0
  116. package/dist/components/dismiss-button/styles.module.scss +31 -0
  117. package/dist/components/dismiss-button/styles.module.scss.js +7 -0
  118. package/dist/components/dismiss-button/styles.module.scss.js.map +1 -0
  119. package/dist/components/dropdown/index.d.ts +72 -0
  120. package/dist/components/dropdown/index.js +79 -0
  121. package/dist/components/dropdown/index.js.map +1 -0
  122. package/dist/components/dropdown/list-item/custom.d.ts +10 -0
  123. package/dist/components/dropdown/list-item/custom.js +9 -0
  124. package/dist/components/dropdown/list-item/custom.js.map +1 -0
  125. package/dist/components/dropdown/list-item/index.d.ts +19 -0
  126. package/dist/components/dropdown/list-item/index.js +14 -0
  127. package/dist/components/dropdown/list-item/index.js.map +1 -0
  128. package/dist/components/dropdown/list-item/interactive.d.ts +29 -0
  129. package/dist/components/dropdown/list-item/interactive.js +49 -0
  130. package/dist/components/dropdown/list-item/interactive.js.map +1 -0
  131. package/dist/components/dropdown/list-item/separator.d.ts +8 -0
  132. package/dist/components/dropdown/list-item/separator.js +17 -0
  133. package/dist/components/dropdown/list-item/separator.js.map +1 -0
  134. package/dist/components/dropdown/list-item/styles.module.css +222 -0
  135. package/dist/components/dropdown/list-item/styles.module.css.js +26 -0
  136. package/dist/components/dropdown/list-item/styles.module.css.js.map +1 -0
  137. package/dist/components/dropdown/list-item/title.d.ts +10 -0
  138. package/dist/components/dropdown/list-item/title.js +9 -0
  139. package/dist/components/dropdown/list-item/title.js.map +1 -0
  140. package/dist/components/dropdown/styles.module.css +74 -0
  141. package/dist/components/dropdown/styles.module.css.js +24 -0
  142. package/dist/components/dropdown/styles.module.css.js.map +1 -0
  143. package/dist/components/dropdown/toggle-button/index.d.ts +30 -0
  144. package/dist/components/dropdown/toggle-button/index.js +54 -0
  145. package/dist/components/dropdown/toggle-button/index.js.map +1 -0
  146. package/dist/components/dropdown/toggle-button/styles.module.scss +54 -0
  147. package/dist/components/dropdown/toggle-button/styles.module.scss.js +14 -0
  148. package/dist/components/dropdown/toggle-button/styles.module.scss.js.map +1 -0
  149. package/dist/components/flight-icon/flight-icon.module.css +31 -0
  150. package/dist/components/flight-icon/flight-icon.module.css.js +12 -0
  151. package/dist/components/flight-icon/flight-icon.module.css.js.map +1 -0
  152. package/dist/components/flight-icon/index.d.ts +44 -0
  153. package/dist/components/flight-icon/index.js +58 -0
  154. package/dist/components/flight-icon/index.js.map +1 -0
  155. package/dist/components/form/checkbox/form-checkbox.module.css +88 -0
  156. package/dist/components/form/checkbox/form-checkbox.module.css.js +8 -0
  157. package/dist/components/form/checkbox/form-checkbox.module.css.js.map +1 -0
  158. package/dist/components/form/checkbox/index.d.ts +45 -0
  159. package/dist/components/form/checkbox/index.js +109 -0
  160. package/dist/components/form/checkbox/index.js.map +1 -0
  161. package/dist/components/form/error/form-error.module.css +23 -0
  162. package/dist/components/form/error/form-error.module.css.js +14 -0
  163. package/dist/components/form/error/form-error.module.css.js.map +1 -0
  164. package/dist/components/form/error/index.d.ts +16 -0
  165. package/dist/components/form/error/index.js +22 -0
  166. package/dist/components/form/error/index.js.map +1 -0
  167. package/dist/components/form/field/form-field.module.css +79 -0
  168. package/dist/components/form/field/form-field.module.css.js +17 -0
  169. package/dist/components/form/field/form-field.module.css.js.map +1 -0
  170. package/dist/components/form/field/index.d.ts +19 -0
  171. package/dist/components/form/field/index.js +46 -0
  172. package/dist/components/form/field/index.js.map +1 -0
  173. package/dist/components/form/fieldset/form-fieldset.module.css +48 -0
  174. package/dist/components/form/fieldset/form-fieldset.module.css.js +19 -0
  175. package/dist/components/form/fieldset/form-fieldset.module.css.js.map +1 -0
  176. package/dist/components/form/fieldset/index.d.ts +19 -0
  177. package/dist/components/form/fieldset/index.js +65 -0
  178. package/dist/components/form/fieldset/index.js.map +1 -0
  179. package/dist/components/form/file-input/form-file-input.module.scss +81 -0
  180. package/dist/components/form/file-input/form-file-input.module.scss.js +7 -0
  181. package/dist/components/form/file-input/form-file-input.module.scss.js.map +1 -0
  182. package/dist/components/form/file-input/index.d.ts +27 -0
  183. package/dist/components/form/file-input/index.js +68 -0
  184. package/dist/components/form/file-input/index.js.map +1 -0
  185. package/dist/components/form/helper-text/form-helper-text.module.css +10 -0
  186. package/dist/components/form/helper-text/form-helper-text.module.css.js +7 -0
  187. package/dist/components/form/helper-text/form-helper-text.module.css.js.map +1 -0
  188. package/dist/components/form/helper-text/index.d.ts +11 -0
  189. package/dist/components/form/helper-text/index.js +22 -0
  190. package/dist/components/form/helper-text/index.js.map +1 -0
  191. package/dist/components/form/indicator/form-indicator.module.css +10 -0
  192. package/dist/components/form/indicator/form-indicator.module.css.js +8 -0
  193. package/dist/components/form/indicator/form-indicator.module.css.js.map +1 -0
  194. package/dist/components/form/indicator/index.d.ts +9 -0
  195. package/dist/components/form/indicator/index.js +22 -0
  196. package/dist/components/form/indicator/index.js.map +1 -0
  197. package/dist/components/form/label/form-label.module.css +15 -0
  198. package/dist/components/form/label/form-label.module.css.js +10 -0
  199. package/dist/components/form/label/form-label.module.css.js.map +1 -0
  200. package/dist/components/form/label/index.d.ts +14 -0
  201. package/dist/components/form/label/index.js +33 -0
  202. package/dist/components/form/label/index.js.map +1 -0
  203. package/dist/components/form/legend/form-legend.module.css +17 -0
  204. package/dist/components/form/legend/form-legend.module.css.js +10 -0
  205. package/dist/components/form/legend/form-legend.module.css.js.map +1 -0
  206. package/dist/components/form/legend/index.d.ts +12 -0
  207. package/dist/components/form/legend/index.js +19 -0
  208. package/dist/components/form/legend/index.js.map +1 -0
  209. package/dist/components/form/radio/form-radio.module.scss +74 -0
  210. package/dist/components/form/radio/form-radio.module.scss.js +8 -0
  211. package/dist/components/form/radio/form-radio.module.scss.js.map +1 -0
  212. package/dist/components/form/radio/index.d.ts +44 -0
  213. package/dist/components/form/radio/index.js +100 -0
  214. package/dist/components/form/radio/index.js.map +1 -0
  215. package/dist/components/form/radio-card/description.d.ts +3 -0
  216. package/dist/components/form/radio-card/description.js +10 -0
  217. package/dist/components/form/radio-card/description.js.map +1 -0
  218. package/dist/components/form/radio-card/form-radio-card.module.css +153 -0
  219. package/dist/components/form/radio-card/form-radio-card.module.css.js +30 -0
  220. package/dist/components/form/radio-card/form-radio-card.module.css.js.map +1 -0
  221. package/dist/components/form/radio-card/group.d.ts +11 -0
  222. package/dist/components/form/radio-card/group.js +31 -0
  223. package/dist/components/form/radio-card/group.js.map +1 -0
  224. package/dist/components/form/radio-card/index.d.ts +48 -0
  225. package/dist/components/form/radio-card/index.js +67 -0
  226. package/dist/components/form/radio-card/index.js.map +1 -0
  227. package/dist/components/form/radio-card/label.d.ts +3 -0
  228. package/dist/components/form/radio-card/label.js +10 -0
  229. package/dist/components/form/radio-card/label.js.map +1 -0
  230. package/dist/components/form/select/form-select.module.css +89 -0
  231. package/dist/components/form/select/form-select.module.css.js +14 -0
  232. package/dist/components/form/select/form-select.module.css.js.map +1 -0
  233. package/dist/components/form/select/index.d.ts +21 -0
  234. package/dist/components/form/select/index.js +79 -0
  235. package/dist/components/form/select/index.js.map +1 -0
  236. package/dist/components/form/super-select/form-super-select.module.css +155 -0
  237. package/dist/components/form/super-select/form-super-select.module.css.js +22 -0
  238. package/dist/components/form/super-select/form-super-select.module.css.js.map +1 -0
  239. package/dist/components/form/super-select/index.d.ts +55 -0
  240. package/dist/components/form/super-select/index.js +170 -0
  241. package/dist/components/form/super-select/index.js.map +1 -0
  242. package/dist/components/form/text-input/index.d.ts +98 -0
  243. package/dist/components/form/text-input/index.js +91 -0
  244. package/dist/components/form/text-input/index.js.map +1 -0
  245. package/dist/components/form/text-input/styles.module.css +158 -0
  246. package/dist/components/form/text-input/styles.module.css.js +15 -0
  247. package/dist/components/form/text-input/styles.module.css.js.map +1 -0
  248. package/dist/components/form/textarea/form-textarea.module.css +88 -0
  249. package/dist/components/form/textarea/form-textarea.module.css.js +14 -0
  250. package/dist/components/form/textarea/form-textarea.module.css.js.map +1 -0
  251. package/dist/components/form/textarea/index.d.ts +19 -0
  252. package/dist/components/form/textarea/index.js +74 -0
  253. package/dist/components/form/textarea/index.js.map +1 -0
  254. package/dist/components/form/toggle/form-toggle.module.scss +164 -0
  255. package/dist/components/form/toggle/form-toggle.module.scss.js +12 -0
  256. package/dist/components/form/toggle/form-toggle.module.scss.js.map +1 -0
  257. package/dist/components/form/toggle/index.d.ts +78 -0
  258. package/dist/components/form/toggle/index.js +102 -0
  259. package/dist/components/form/toggle/index.js.map +1 -0
  260. package/dist/components/hds/wrappers/tooltip.d.ts +13 -0
  261. package/dist/components/hds/wrappers/tooltip.js +51 -0
  262. package/dist/components/hds/wrappers/tooltip.js.map +1 -0
  263. package/dist/components/icon-tile/index.d.ts +21 -0
  264. package/dist/components/icon-tile/index.js +50 -0
  265. package/dist/components/icon-tile/index.js.map +1 -0
  266. package/dist/components/icon-tile/style.module.scss +136 -0
  267. package/dist/components/icon-tile/style.module.scss.js +29 -0
  268. package/dist/components/icon-tile/style.module.scss.js.map +1 -0
  269. package/dist/components/index.d.ts +60 -0
  270. package/dist/components/index.js +119 -0
  271. package/dist/components/index.js.map +1 -0
  272. package/dist/components/inline-link/index.d.ts +40 -0
  273. package/dist/components/inline-link/index.js +33 -0
  274. package/dist/components/inline-link/index.js.map +1 -0
  275. package/dist/components/inline-link/inline-link.module.css +49 -0
  276. package/dist/components/inline-link/inline-link.module.css.js +11 -0
  277. package/dist/components/inline-link/inline-link.module.css.js.map +1 -0
  278. package/dist/components/interactive/index.d.ts +26 -0
  279. package/dist/components/interactive/index.js +59 -0
  280. package/dist/components/interactive/index.js.map +1 -0
  281. package/dist/components/legacy-button/index.d.ts +5 -0
  282. package/dist/components/legacy-button/index.js +65 -0
  283. package/dist/components/legacy-button/index.js.map +1 -0
  284. package/dist/components/legacy-button/types.d.ts +37 -0
  285. package/dist/components/legacy-button/utils.d.ts +9 -0
  286. package/dist/components/legacy-button/utils.js +39 -0
  287. package/dist/components/legacy-button/utils.js.map +1 -0
  288. package/dist/components/menu-primitive/index.d.ts +14 -0
  289. package/dist/components/menu-primitive/index.js +68 -0
  290. package/dist/components/menu-primitive/index.js.map +1 -0
  291. package/dist/components/menu-primitive/styles.module.css +16 -0
  292. package/dist/components/menu-primitive/styles.module.css.js +12 -0
  293. package/dist/components/menu-primitive/styles.module.css.js.map +1 -0
  294. package/dist/components/menu-primitive/use-menu-primitive.d.ts +9 -0
  295. package/dist/components/menu-primitive/use-menu-primitive.js +17 -0
  296. package/dist/components/menu-primitive/use-menu-primitive.js.map +1 -0
  297. package/dist/components/modal/index.d.ts +13 -0
  298. package/dist/components/modal/index.js +61 -0
  299. package/dist/components/modal/index.js.map +1 -0
  300. package/dist/components/modal/modal.module.css +22 -0
  301. package/dist/components/modal/modal.module.css.js +8 -0
  302. package/dist/components/modal/modal.module.css.js.map +1 -0
  303. package/dist/components/modal/use-modal.d.ts +8 -0
  304. package/dist/components/modal/use-modal.js +17 -0
  305. package/dist/components/modal/use-modal.js.map +1 -0
  306. package/dist/components/separator/index.d.ts +10 -0
  307. package/dist/components/separator/index.js +15 -0
  308. package/dist/components/separator/index.js.map +1 -0
  309. package/dist/components/separator/separator.module.css +15 -0
  310. package/dist/components/separator/separator.module.css.js +10 -0
  311. package/dist/components/separator/separator.module.css.js.map +1 -0
  312. package/dist/components/standalone-link/index.d.ts +23 -0
  313. package/dist/components/standalone-link/index.js +54 -0
  314. package/dist/components/standalone-link/index.js.map +1 -0
  315. package/dist/components/standalone-link/styles.module.scss +166 -0
  316. package/dist/components/standalone-link/styles.module.scss.js +17 -0
  317. package/dist/components/standalone-link/styles.module.scss.js.map +1 -0
  318. package/dist/components/table/index.d.ts +58 -0
  319. package/dist/components/table/index.js +52 -0
  320. package/dist/components/table/index.js.map +1 -0
  321. package/dist/components/table/table.module.scss +192 -0
  322. package/dist/components/table/table.module.scss.js +33 -0
  323. package/dist/components/table/table.module.scss.js.map +1 -0
  324. package/dist/components/table/td.d.ts +17 -0
  325. package/dist/components/table/td.js +28 -0
  326. package/dist/components/table/td.js.map +1 -0
  327. package/dist/components/table/th-button-tooltip.d.ts +6 -0
  328. package/dist/components/table/th-button-tooltip.js +24 -0
  329. package/dist/components/table/th-button-tooltip.js.map +1 -0
  330. package/dist/components/table/th.d.ts +34 -0
  331. package/dist/components/table/th.js +43 -0
  332. package/dist/components/table/th.js.map +1 -0
  333. package/dist/components/table/tr.d.ts +12 -0
  334. package/dist/components/table/tr.js +9 -0
  335. package/dist/components/table/tr.js.map +1 -0
  336. package/dist/components/table/utils.d.ts +16 -0
  337. package/dist/components/table/utils.js +28 -0
  338. package/dist/components/table/utils.js.map +1 -0
  339. package/dist/components/tabs/index.d.ts +21 -0
  340. package/dist/components/tabs/index.js +117 -0
  341. package/dist/components/tabs/index.js.map +1 -0
  342. package/dist/components/tabs/tab-panel.d.ts +5 -0
  343. package/dist/components/tabs/tab-panel.js +35 -0
  344. package/dist/components/tabs/tab-panel.js.map +1 -0
  345. package/dist/components/tabs/tab.d.ts +24 -0
  346. package/dist/components/tabs/tab.js +70 -0
  347. package/dist/components/tabs/tab.js.map +1 -0
  348. package/dist/components/tabs/tabs.module.scss +163 -0
  349. package/dist/components/tabs/tabs.module.scss.js +22 -0
  350. package/dist/components/tabs/tabs.module.scss.js.map +1 -0
  351. package/dist/components/tabs/use-tabs-context.d.ts +15 -0
  352. package/dist/components/tabs/use-tabs-context.js +16 -0
  353. package/dist/components/tabs/use-tabs-context.js.map +1 -0
  354. package/dist/components/text/index.d.ts +44 -0
  355. package/dist/components/text/index.js +112 -0
  356. package/dist/components/text/index.js.map +1 -0
  357. package/dist/components/text/style.module.scss +11 -0
  358. package/dist/components/text/style.module.scss.js +9 -0
  359. package/dist/components/text/style.module.scss.js.map +1 -0
  360. package/dist/components/visualizations/bar-chart/horizontal-chart/dataset-value/index.d.ts +8 -0
  361. package/dist/components/visualizations/bar-chart/horizontal-chart/dataset-value/index.js +62 -0
  362. package/dist/components/visualizations/bar-chart/horizontal-chart/dataset-value/index.js.map +1 -0
  363. package/dist/components/visualizations/bar-chart/horizontal-chart/dataset-value/style.module.css +76 -0
  364. package/dist/components/visualizations/bar-chart/horizontal-chart/dataset-value/style.module.css.js +20 -0
  365. package/dist/components/visualizations/bar-chart/horizontal-chart/dataset-value/style.module.css.js.map +1 -0
  366. package/dist/components/visualizations/bar-chart/horizontal-chart/index.d.ts +44 -0
  367. package/dist/components/visualizations/bar-chart/horizontal-chart/index.js +104 -0
  368. package/dist/components/visualizations/bar-chart/horizontal-chart/index.js.map +1 -0
  369. package/dist/components/visualizations/bar-chart/horizontal-chart/legend/index.d.ts +10 -0
  370. package/dist/components/visualizations/bar-chart/horizontal-chart/legend/index.js +13 -0
  371. package/dist/components/visualizations/bar-chart/horizontal-chart/legend/index.js.map +1 -0
  372. package/dist/components/visualizations/bar-chart/horizontal-chart/legend/style.module.css +29 -0
  373. package/dist/components/visualizations/bar-chart/horizontal-chart/legend/style.module.css.js +14 -0
  374. package/dist/components/visualizations/bar-chart/horizontal-chart/legend/style.module.css.js.map +1 -0
  375. package/dist/components/visualizations/bar-chart/horizontal-chart/style.module.css +76 -0
  376. package/dist/components/visualizations/bar-chart/horizontal-chart/style.module.css.js +28 -0
  377. package/dist/components/visualizations/bar-chart/horizontal-chart/style.module.css.js.map +1 -0
  378. package/dist/components/visualizations/bar-chart/index.d.ts +13 -0
  379. package/dist/components/visualizations/bar-chart/index.js +37 -0
  380. package/dist/components/visualizations/bar-chart/index.js.map +1 -0
  381. package/dist/components/visualizations/bar-chart/style.module.css +39 -0
  382. package/dist/components/visualizations/bar-chart/style.module.css.js +12 -0
  383. package/dist/components/visualizations/bar-chart/style.module.css.js.map +1 -0
  384. package/dist/components/visualizations/donut-chart/components/arc-tooltip/index.d.ts +3 -0
  385. package/dist/components/visualizations/donut-chart/components/arc-tooltip/index.js +14 -0
  386. package/dist/components/visualizations/donut-chart/components/arc-tooltip/index.js.map +1 -0
  387. package/dist/components/visualizations/donut-chart/components/arc-tooltip/styles.module.css +14 -0
  388. package/dist/components/visualizations/donut-chart/components/arc-tooltip/styles.module.css.js +10 -0
  389. package/dist/components/visualizations/donut-chart/components/arc-tooltip/styles.module.css.js.map +1 -0
  390. package/dist/components/visualizations/donut-chart/components/external-arc-label/index.d.ts +3 -0
  391. package/dist/components/visualizations/donut-chart/components/external-arc-label/index.js +58 -0
  392. package/dist/components/visualizations/donut-chart/components/external-arc-label/index.js.map +1 -0
  393. package/dist/components/visualizations/donut-chart/components/external-arc-label/styles.module.css +32 -0
  394. package/dist/components/visualizations/donut-chart/components/external-arc-label/styles.module.css.js +16 -0
  395. package/dist/components/visualizations/donut-chart/components/external-arc-label/styles.module.css.js.map +1 -0
  396. package/dist/components/visualizations/donut-chart/components/index.d.ts +3 -0
  397. package/dist/components/visualizations/donut-chart/components/internal-arc-label/index.d.ts +3 -0
  398. package/dist/components/visualizations/donut-chart/components/internal-arc-label/index.js +42 -0
  399. package/dist/components/visualizations/donut-chart/components/internal-arc-label/index.js.map +1 -0
  400. package/dist/components/visualizations/donut-chart/components/internal-arc-label/styles.module.css +20 -0
  401. package/dist/components/visualizations/donut-chart/components/internal-arc-label/styles.module.css.js +14 -0
  402. package/dist/components/visualizations/donut-chart/components/internal-arc-label/styles.module.css.js.map +1 -0
  403. package/dist/components/visualizations/donut-chart/index.d.ts +10 -0
  404. package/dist/components/visualizations/donut-chart/index.js +90 -0
  405. package/dist/components/visualizations/donut-chart/index.js.map +1 -0
  406. package/dist/components/visualizations/donut-chart/styles.module.css +73 -0
  407. package/dist/components/visualizations/donut-chart/styles.module.css.js +20 -0
  408. package/dist/components/visualizations/donut-chart/styles.module.css.js.map +1 -0
  409. package/dist/components/visualizations/donut-chart/types.d.ts +16 -0
  410. package/dist/hooks/use-media-query/index.js +16 -0
  411. package/dist/hooks/use-media-query/index.js.map +1 -0
  412. package/dist/index.d.ts +3 -0
  413. package/dist/index.js +158 -0
  414. package/dist/index.js.map +1 -0
  415. package/dist/patterns/card/index.d.ts +5 -0
  416. package/dist/patterns/card/newsroom-card/index.d.ts +15 -0
  417. package/dist/patterns/card/newsroom-card/index.js +26 -0
  418. package/dist/patterns/card/newsroom-card/index.js.map +1 -0
  419. package/dist/patterns/card/newsroom-card/style.module.css +12 -0
  420. package/dist/patterns/card/newsroom-card/style.module.css.js +8 -0
  421. package/dist/patterns/card/newsroom-card/style.module.css.js.map +1 -0
  422. package/dist/patterns/card/partner-card/index.d.ts +18 -0
  423. package/dist/patterns/card/partner-card/index.js +42 -0
  424. package/dist/patterns/card/partner-card/index.js.map +1 -0
  425. package/dist/patterns/card/partner-card/style.module.css +24 -0
  426. package/dist/patterns/card/partner-card/style.module.css.js +12 -0
  427. package/dist/patterns/card/partner-card/style.module.css.js.map +1 -0
  428. package/dist/patterns/card/person-card/index.d.ts +15 -0
  429. package/dist/patterns/card/person-card/index.js +52 -0
  430. package/dist/patterns/card/person-card/index.js.map +1 -0
  431. package/dist/patterns/card/person-card/style.module.css +28 -0
  432. package/dist/patterns/card/person-card/style.module.css.js +12 -0
  433. package/dist/patterns/card/person-card/style.module.css.js.map +1 -0
  434. package/dist/patterns/card/primitives.d.ts +37 -0
  435. package/dist/patterns/card/primitives.js +77 -0
  436. package/dist/patterns/card/primitives.js.map +1 -0
  437. package/dist/patterns/card/promo-card/index.d.ts +18 -0
  438. package/dist/patterns/card/promo-card/index.js +36 -0
  439. package/dist/patterns/card/promo-card/index.js.map +1 -0
  440. package/dist/patterns/card/resource-card/index.d.ts +16 -0
  441. package/dist/patterns/card/resource-card/index.js +26 -0
  442. package/dist/patterns/card/resource-card/index.js.map +1 -0
  443. package/dist/patterns/card/style.module.css +121 -0
  444. package/dist/patterns/card/style.module.css.js +30 -0
  445. package/dist/patterns/card/style.module.css.js.map +1 -0
  446. package/dist/patterns/card/thumbnails/index.d.ts +13 -0
  447. package/dist/patterns/card/thumbnails/index.js +25 -0
  448. package/dist/patterns/card/thumbnails/index.js.map +1 -0
  449. package/dist/patterns/card/types.d.ts +41 -0
  450. package/dist/patterns/card/unified-card/index.d.ts +10 -0
  451. package/dist/patterns/card/unified-card/index.js +37 -0
  452. package/dist/patterns/card/unified-card/index.js.map +1 -0
  453. package/dist/patterns/copy-button/clipboard.d.ts +16 -0
  454. package/dist/patterns/copy-button/clipboard.js +78 -0
  455. package/dist/patterns/copy-button/clipboard.js.map +1 -0
  456. package/dist/patterns/copy-button/index.d.ts +19 -0
  457. package/dist/patterns/copy-button/index.js +57 -0
  458. package/dist/patterns/copy-button/index.js.map +1 -0
  459. package/dist/patterns/copy-button/style.module.css +23 -0
  460. package/dist/patterns/copy-button/style.module.css.js +13 -0
  461. package/dist/patterns/copy-button/style.module.css.js.map +1 -0
  462. package/dist/patterns/index.d.ts +15 -0
  463. package/dist/patterns/index.js +35 -0
  464. package/dist/patterns/index.js.map +1 -0
  465. package/dist/patterns/layout/index.d.ts +69 -0
  466. package/dist/patterns/layout/index.js +47 -0
  467. package/dist/patterns/layout/index.js.map +1 -0
  468. package/dist/patterns/layout/layout.module.css +72 -0
  469. package/dist/patterns/layout/layout.module.css.js +20 -0
  470. package/dist/patterns/layout/layout.module.css.js.map +1 -0
  471. package/dist/patterns/product-badge/index.d.ts +11 -0
  472. package/dist/patterns/product-badge/index.js +22 -0
  473. package/dist/patterns/product-badge/index.js.map +1 -0
  474. package/dist/patterns/product-badge/style.module.css +3 -0
  475. package/dist/patterns/product-badge/style.module.css.js +8 -0
  476. package/dist/patterns/product-badge/style.module.css.js.map +1 -0
  477. package/dist/patterns/product-logo/index.d.ts +48 -0
  478. package/dist/patterns/product-logo/index.js +130 -0
  479. package/dist/patterns/product-logo/index.js.map +1 -0
  480. package/dist/patterns/product-logo/product-logo.module.css +24 -0
  481. package/dist/patterns/product-logo/product-logo.module.css.js +13 -0
  482. package/dist/patterns/product-logo/product-logo.module.css.js.map +1 -0
  483. package/dist/patterns/related-content/index.d.ts +6 -0
  484. package/dist/patterns/related-content/index.js +65 -0
  485. package/dist/patterns/related-content/index.js.map +1 -0
  486. package/dist/patterns/related-content/style.module.css +74 -0
  487. package/dist/patterns/related-content/style.module.css.js +22 -0
  488. package/dist/patterns/related-content/style.module.css.js.map +1 -0
  489. package/dist/patterns/related-content/types.d.ts +14 -0
  490. package/dist/style.css +1 -0
  491. package/dist/styles/mixins/button.scss +284 -0
  492. package/dist/styles/mixins/focus-ring.scss +75 -0
  493. package/dist/utils/get-contrast-yiq.d.ts +20 -0
  494. package/dist/utils/get-contrast-yiq.js +13 -0
  495. package/dist/utils/get-contrast-yiq.js.map +1 -0
  496. package/dist/utils/hooks/use-screen-size.d.ts +5 -0
  497. package/dist/utils/hooks/use-screen-size.js +10 -0
  498. package/dist/utils/hooks/use-screen-size.js.map +1 -0
  499. package/dist/utils/i18n/index.d.ts +1 -0
  500. package/dist/utils/i18n/index.js +41 -0
  501. package/dist/utils/i18n/index.js.map +1 -0
  502. package/dist/utils/index.d.ts +3 -0
  503. package/dist/utils/index.js +10 -0
  504. package/dist/utils/index.js.map +1 -0
  505. package/dist/utils/make-normalizer/index.d.ts +30 -0
  506. package/dist/utils/make-normalizer/index.js +34 -0
  507. package/dist/utils/make-normalizer/index.js.map +1 -0
  508. package/dist/utils/mds-context/index.d.ts +59 -0
  509. package/dist/utils/mds-context/index.js +85 -0
  510. package/dist/utils/mds-context/index.js.map +1 -0
  511. package/package.json +113 -0
@@ -0,0 +1,33 @@
1
+ import { jsxs as c, jsx as p } from "react/jsx-runtime";
2
+ import f from "classnames";
3
+ import { Interactive as I } from "../interactive/index.js";
4
+ import i from "./inline-link.module.css.js";
5
+ import { FlightIcon as d } from "../flight-icon/index.js";
6
+ const g = ({
7
+ text: m,
8
+ color: o = "primary",
9
+ icon: r,
10
+ iconPosition: e = "trailing",
11
+ className: s,
12
+ isHrefExternal: t,
13
+ ...a
14
+ }) => {
15
+ const l = r || !t ? r : "external-link", n = l && /* @__PURE__ */ p(d, { name: l, size: 16, className: i.icon });
16
+ return /* @__PURE__ */ c(
17
+ I,
18
+ {
19
+ className: f(i["link-inline"], i[`color-${o}`], s),
20
+ ...a,
21
+ children: [
22
+ n && e === "leading" && n,
23
+ m,
24
+ n && e === "trailing" && n
25
+ ]
26
+ }
27
+ );
28
+ };
29
+ g.displayName = "InlineLink";
30
+ export {
31
+ g as InlineLink
32
+ };
33
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/inline-link/index.tsx"],"sourcesContent":["import classNames from 'classnames'\nimport { Interactive } from '../interactive'\nimport s from './inline-link.module.css'\nimport type { FlightIconName } from '../flight-icon'\nimport { FlightIcon } from '../flight-icon'\n\ninterface InlineLinkProps {\n\t/**\n\t * There are two available colors for an `<InlineLink />`: primary and secondary.\n\t */\n\tcolor?: 'primary' | 'secondary'\n\t/**\n\t * Use this parameter to show an icon.\n\t */\n\ticon?: FlightIconName\n\t/**\n\t * Positions the icon before or after the text.\n\t */\n\ticonPosition?: 'leading' | 'trailing'\n\t/**\n\t * URL parameter that’s passed down to the `<a>` element.\n\t */\n\thref: string\n\t/**\n\t * Controls if the <a> link is external. For security reasons, we add the target=\"_blank\" and rel=\"noopener noreferrer\" attributes to it by default.\n\t * default: `false`\n\t */\n\tisHrefExternal?: boolean\n\t/**\n\t * The content of the <a> HTML element.\n\t */\n\ttext: string\n\t/**\n\t * Optional class name to add to the component.\n\t */\n\tclassName?: string\n\tprefetch?: boolean\n\tlocale?: string\n}\n\nconst InlineLink = ({\n\ttext,\n\tcolor = 'primary',\n\ticon,\n\ticonPosition = 'trailing',\n\tclassName,\n\tisHrefExternal,\n\t...props\n}: InlineLinkProps) => {\n\tconst resolvedIcon = icon || !isHrefExternal ? icon : 'external-link'\n\tconst iconElement = resolvedIcon && (\n\t\t<FlightIcon name={resolvedIcon} size={16} className={s.icon} />\n\t)\n\n\treturn (\n\t\t<Interactive\n\t\t\tclassName={classNames(s['link-inline'], s[`color-${color}`], className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{iconElement && iconPosition === 'leading' && iconElement}\n\t\t\t{text}\n\t\t\t{iconElement && iconPosition === 'trailing' && iconElement}\n\t\t</Interactive>\n\t)\n}\n\nInlineLink.displayName = 'InlineLink'\n\nexport type { InlineLinkProps }\nexport { InlineLink }\n"],"names":["InlineLink","text","color","icon","iconPosition","className","isHrefExternal","props","resolvedIcon","iconElement","jsx","FlightIcon","s","jsxs","Interactive","classNames"],"mappings":";;;;;AAwCA,MAAMA,IAAa,CAAC;AAAA,EACnB,MAAAC;AAAA,EACA,OAAAC,IAAQ;AAAA,EACR,MAAAC;AAAA,EACA,cAAAC,IAAe;AAAA,EACf,WAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,GAAGC;AACJ,MAAuB;AACtB,QAAMC,IAAeL,KAAQ,CAACG,IAAiBH,IAAO,iBAChDM,IAAcD,KACnB,gBAAAE,EAACC,GAAA,EAAW,MAAMH,GAAc,MAAM,IAAI,WAAWI,EAAE,KAAA,CAAM;AAG9D,SACC,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACA,WAAWC,EAAWH,EAAE,aAAa,GAAGA,EAAE,SAASV,CAAK,EAAE,GAAGG,CAAS;AAAA,MACrE,GAAGE;AAAA,MAEH,UAAA;AAAA,QAAAE,KAAeL,MAAiB,aAAaK;AAAA,QAC7CR;AAAA,QACAQ,KAAeL,MAAiB,cAAcK;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGlD;AAEAT,EAAW,cAAc;"}
@@ -0,0 +1,49 @@
1
+ .link-inline {
2
+ text-decoration: underline;
3
+ border-radius: 2px; /* used for the focus-ring border-radius */
4
+
5
+ &:focus,
6
+ &:focus-visible {
7
+ text-decoration: none;
8
+ outline: 2px solid var(--mds-color-focus-action-internal);
9
+ outline-offset: 1px;
10
+ }
11
+ }
12
+
13
+ .color-primary {
14
+ color: var(--mds-color-foreground-action);
15
+
16
+ &:hover {
17
+ color: var(--mds-color-foreground-action-hover);
18
+ }
19
+
20
+ &:active {
21
+ color: var(--mds-color-foreground-action-active);
22
+ }
23
+ }
24
+
25
+ .color-secondary {
26
+ color: var(--mds-color-foreground-strong);
27
+
28
+ &:hover {
29
+ color: var(--mds-color-foreground-primary);
30
+ }
31
+
32
+ &:active {
33
+ color: var(--mds-color-foreground-faint);
34
+ }
35
+ }
36
+
37
+ .icon {
38
+ width: 1em; /* uses the current font-size for the width of the icon */
39
+ height: 1em; /* uses the current font-size for the height of the icon */
40
+ vertical-align: text-bottom;
41
+
42
+ &:first-child {
43
+ margin-right: 0.25em;
44
+ }
45
+
46
+ &:last-child {
47
+ margin-left: 0.25em;
48
+ }
49
+ }
@@ -0,0 +1,11 @@
1
+ const o = "icon__CPQmv", n = {
2
+ "link-inline": "link-inline__Wl8cA",
3
+ "color-primary": "color-primary__XlogH",
4
+ "color-secondary": "color-secondary__sf-Wg",
5
+ icon: o
6
+ };
7
+ export {
8
+ n as default,
9
+ o as icon
10
+ };
11
+ //# sourceMappingURL=inline-link.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inline-link.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,26 @@
1
+ import { ForwardRefExoticComponent, ButtonHTMLAttributes, MouseEventHandler } from 'react';
2
+ interface InteractiveProps extends React.HTMLAttributes<HTMLElement> {
3
+ isHrefExternal?: boolean;
4
+ href?: string;
5
+ onClick?: MouseEventHandler;
6
+ type?: ButtonHTMLAttributes<HTMLButtonElement>['type'];
7
+ prefetch?: boolean;
8
+ locale?: string;
9
+ }
10
+ declare const Interactive: ForwardRefExoticComponent<InteractiveProps & import('react').RefAttributes<HTMLButtonElement | HTMLAnchorElement>>;
11
+ /**
12
+ * Smaller, local version of our getLocalizedLinkProps util,
13
+ * cloned here to work around a cyclic dependency issue
14
+ * with the main @web/utils package.
15
+ *
16
+ * @param url An internal URL path
17
+ * @param locale A supported locale
18
+ * @returns A prefixed URL if locale is defined, otherwise the URL without prefix
19
+ */
20
+ export declare const getLocalizedLinkProps: (href: string, locale?: string, isHrefExternal?: boolean) => {
21
+ href: string;
22
+ hrefLang: string | undefined;
23
+ isHrefExternal?: boolean | undefined;
24
+ };
25
+ export type { InteractiveProps };
26
+ export { Interactive };
@@ -0,0 +1,59 @@
1
+ "use client";
2
+ import { jsx as c } from "react/jsx-runtime";
3
+ import { forwardRef as f } from "react";
4
+ import { useMDSLink as l } from "../../utils/mds-context/index.js";
5
+ const p = f((r, e) => {
6
+ const t = l(), {
7
+ href: i,
8
+ className: o,
9
+ isHrefExternal: n,
10
+ onClick: s,
11
+ children: a,
12
+ locale: d,
13
+ ...u
14
+ } = r;
15
+ return i ? /* @__PURE__ */ c(
16
+ t,
17
+ {
18
+ className: o,
19
+ target: n ? "_blank" : void 0,
20
+ rel: n ? "noopener noreferrer" : void 0,
21
+ onClick: s,
22
+ ...g(i, d, n),
23
+ ...u,
24
+ ref: e,
25
+ children: a
26
+ }
27
+ ) : /* @__PURE__ */ c(
28
+ "button",
29
+ {
30
+ type: "button",
31
+ className: o,
32
+ onClick: s,
33
+ ...u,
34
+ ref: e,
35
+ children: a
36
+ }
37
+ );
38
+ });
39
+ p.displayName = "Interactive";
40
+ const g = (r, e, t) => t ? {
41
+ href: r,
42
+ hrefLang: void 0
43
+ } : ["en", "de", "es", "fr", "ja", "ko", "pt", "id"].includes(
44
+ r.substring(1, 3)
45
+ ) ? {
46
+ href: r,
47
+ hrefLang: r.substring(1, 3)
48
+ } : r.startsWith("/") && e ? {
49
+ href: `/${e}${r}`,
50
+ hrefLang: e
51
+ } : {
52
+ href: r,
53
+ hrefLang: void 0
54
+ };
55
+ export {
56
+ p as Interactive,
57
+ g as getLocalizedLinkProps
58
+ };
59
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/interactive/index.tsx"],"sourcesContent":["'use client'\n\nimport { forwardRef, type ForwardRefExoticComponent } from 'react'\nimport type { ButtonHTMLAttributes, MouseEventHandler } from 'react'\nimport { useMDSLink } from '../../utils/mds-context'\n\ninterface InteractiveProps extends React.HTMLAttributes<HTMLElement> {\n\tisHrefExternal?: boolean\n\thref?: string\n\tonClick?: MouseEventHandler\n\ttype?: ButtonHTMLAttributes<HTMLButtonElement>['type']\n\tprefetch?: boolean\n\tlocale?: string\n}\n\nconst Interactive = forwardRef<\n\tHTMLAnchorElement | HTMLButtonElement,\n\tInteractiveProps\n>((props, ref) => {\n\tconst Link = useMDSLink()\n\tconst {\n\t\thref,\n\t\tclassName,\n\t\tisHrefExternal,\n\t\tonClick,\n\t\tchildren,\n\t\tlocale,\n\t\t...rest\n\t} = props\n\n\t// TODO: trigger link on space key up\n\tif (href) {\n\t\treturn (\n\t\t\t<Link\n\t\t\t\tclassName={className}\n\t\t\t\ttarget={isHrefExternal ? '_blank' : undefined}\n\t\t\t\trel={isHrefExternal ? 'noopener noreferrer' : undefined}\n\t\t\t\tonClick={onClick}\n\t\t\t\t{...getLocalizedLinkProps(href, locale, isHrefExternal)}\n\t\t\t\t{...rest}\n\t\t\t\tref={ref as ForwardRefExoticComponent<HTMLAnchorElement>}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</Link>\n\t\t)\n\t} else {\n\t\treturn (\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tclassName={className}\n\t\t\t\tonClick={onClick}\n\t\t\t\t{...rest}\n\t\t\t\tref={ref as ForwardRefExoticComponent<HTMLButtonElement>}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</button>\n\t\t)\n\t}\n})\nInteractive.displayName = 'Interactive'\n\n/**\n * Smaller, local version of our getLocalizedLinkProps util,\n * cloned here to work around a cyclic dependency issue\n * with the main @web/utils package.\n *\n * @param url An internal URL path\n * @param locale A supported locale\n * @returns A prefixed URL if locale is defined, otherwise the URL without prefix\n */\nexport const getLocalizedLinkProps = (\n\thref: string,\n\tlocale?: string,\n\tisHrefExternal?: boolean\n): {\n\thref: string\n\threfLang: string | undefined\n\tisHrefExternal?: boolean\n} => {\n\tif (isHrefExternal) {\n\t\treturn {\n\t\t\thref: href,\n\t\t\threfLang: undefined,\n\t\t}\n\t}\n\n\tif (\n\t\t['en', 'de', 'es', 'fr', 'ja', 'ko', 'pt', 'id'].includes(\n\t\t\thref.substring(1, 3)\n\t\t)\n\t) {\n\t\t// Don't localize if the href is already localized\n\t\treturn {\n\t\t\thref: href,\n\t\t\threfLang: href.substring(1, 3),\n\t\t}\n\t}\n\n\tif (href.startsWith('/') && locale) {\n\t\treturn {\n\t\t\thref: `/${locale}${href}`,\n\t\t\threfLang: locale,\n\t\t}\n\t}\n\n\treturn {\n\t\thref: href,\n\t\threfLang: undefined,\n\t}\n}\n\nexport type { InteractiveProps }\nexport { Interactive }\n"],"names":["Interactive","forwardRef","props","ref","Link","useMDSLink","href","className","isHrefExternal","onClick","children","locale","rest","jsx","getLocalizedLinkProps"],"mappings":";;;;AAmBC,MAAAA,IAAaC,EAAW,CAAAC,GAAAC,MAAA;AACxB,QAAMC,IAAAC,EAAA,GACL;AAAA,IACA,MAAAC;AAAA,IACA,WAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,SAAAC;AAAA,IACA,UAAAC;AAAA,IACA,QAAAC;AAAA,OACGC;AAAA,EAGJ,IAAIV;AACH,aACE,gBAAAW;AAAA,IAAAT;AAAA,IAAA;AAAA,MAEA,WAAAG;AAAA,MACA,QAAKC,IAAiB,WAAA;AAAA,MACtB,KAAAA,IAAA,wBAAA;AAAA,MACC,SAAAC;AAAA,MACA,GAAGK,EAAAR,GAAAK,GAAAH,CAAA;AAAA,MACJ,GAAAI;AAAA,MAEC,KAAAT;AAAA,MAAA,UAAAO;AAAA,IACF;AAAA,EAEF,IAEG,gBAAAG;AAAA,IAAA;AAAA,IAAA;AAAA,MAEA,MAAA;AAAA,MACA,WAAAN;AAAA,MACC,SAAAE;AAAA,MACD,GAAAG;AAAA,MAEC,KAAAT;AAAA,MAAA,UAAAO;AAAA,IACF;AAAA,EAEF;AAED,CAAA;AAWOV,EAAM,cAAA;AASZ,MAAIc,IAAgB,CAAAR,GAAAK,GAAAH,MACnBA,IACC;AAAA,EACA,MAAAF;AAAA,EACD,UAAA;AACD,WAIO,MAAU,MAAI,MAAA,MAAA,MAAA,MAAA,IAAA,EAAA;AAAA,EACpBA,EACC,UAAA,GAAA,CAAA;AAED,IACC;AAAA,EACA,MAAAA;AAAA,EACD,UAAAA,EAAA,UAAA,GAAA,CAAA;AACD,IAGCA,EAAO,WAAA,GAAA,KAAAK,IACN;AAAA,EACA,UAAUA,CAAA,GAAAL,CAAA;AAAA,EACX,UAAAK;AACD,IAGC;AAAA,EACA,MAAAL;AAAA,EACD,UAAA;AACD;"}
@@ -0,0 +1,5 @@
1
+ import { ForwardRefExoticComponent } from 'react';
2
+ import { ButtonProps } from './types';
3
+ /** @deprecated Use <Button> from '@hashicorp/mds-react/button' instead. Will be removed in v1.0. */
4
+ declare const MDSButton: ForwardRefExoticComponent<ButtonProps & import('react').RefAttributes<HTMLButtonElement | HTMLAnchorElement>>;
5
+ export { MDSButton };
@@ -0,0 +1,65 @@
1
+ import { jsx as b } from "react/jsx-runtime";
2
+ import { forwardRef as S } from "react";
3
+ import { determineColor as x, LINK_TYPE_ICON_MAP as l } from "./utils.js";
4
+ import { StandaloneLink as _ } from "../standalone-link/index.js";
5
+ import { Button as D } from "../button/index.js";
6
+ const H = S(
7
+ ({
8
+ locale: t,
9
+ text: a,
10
+ title: i,
11
+ url: n,
12
+ href: d,
13
+ linkType: o,
14
+ onClick: m,
15
+ external: f,
16
+ className: u,
17
+ size: c,
18
+ icon: s,
19
+ iconPosition: e = "trailing",
20
+ label: B,
21
+ disabled: E,
22
+ type: M,
23
+ theme: r,
24
+ ...P
25
+ }, g) => x(r) === "tertiary" ? /* @__PURE__ */ b(
26
+ _,
27
+ {
28
+ text: a || i,
29
+ color: r?.background === "dark" ? "secondary-inverted" : "secondary",
30
+ href: n || d,
31
+ icon: o ? l[o] : s,
32
+ iconPosition: o ? "trailing" : e,
33
+ className: u,
34
+ onClick: m,
35
+ size: c,
36
+ isHrefExternal: o === "outbound" || f,
37
+ ref: g,
38
+ locale: t
39
+ }
40
+ ) : /* @__PURE__ */ b(
41
+ D,
42
+ {
43
+ text: a || i,
44
+ href: n || d,
45
+ isHrefExternal: o === "outbound" || f,
46
+ color: x(r),
47
+ type: M,
48
+ icon: o ? l[o] : s,
49
+ iconPosition: o ? "trailing" : e,
50
+ onClick: m,
51
+ className: u,
52
+ size: c === "small" ? "medium" : "large",
53
+ "aria-label": B,
54
+ disabled: E,
55
+ ref: g,
56
+ locale: t,
57
+ ...P
58
+ }
59
+ )
60
+ );
61
+ H.displayName = "MDSButton";
62
+ export {
63
+ H as MDSButton
64
+ };
65
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/legacy-button/index.tsx"],"sourcesContent":["import { type ForwardRefExoticComponent, forwardRef } from 'react'\nimport type { ButtonProps } from './types'\nimport { determineColor, LINK_TYPE_ICON_MAP } from './utils'\nimport { StandaloneLink } from '../standalone-link'\nimport { Button } from '../button'\n\n/** @deprecated Use <Button> from '@hashicorp/mds-react/button' instead. Will be removed in v1.0. */\nconst MDSButton = forwardRef<\n\tHTMLAnchorElement | HTMLButtonElement,\n\tButtonProps\n>(\n\t(\n\t\t{\n\t\t\tlocale,\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\turl,\n\t\t\thref,\n\t\t\tlinkType,\n\t\t\tonClick,\n\t\t\texternal,\n\t\t\tclassName,\n\t\t\tsize,\n\t\t\ticon,\n\t\t\ticonPosition = 'trailing',\n\t\t\tlabel,\n\t\t\tdisabled,\n\t\t\ttype,\n\t\t\ttheme,\n\t\t\t...rest\n\t\t},\n\t\tref\n\t) => {\n\t\tconst color = determineColor(theme)\n\n\t\tif (color === 'tertiary') {\n\t\t\t// We prefer the Standalone Link component over the tertiary\n\t\t\t// button styles.\n\t\t\treturn (\n\t\t\t\t<StandaloneLink\n\t\t\t\t\ttext={(text || title) as string}\n\t\t\t\t\tcolor={\n\t\t\t\t\t\ttheme?.background === 'dark' ? 'secondary-inverted' : 'secondary'\n\t\t\t\t\t}\n\t\t\t\t\thref={url || href}\n\t\t\t\t\ticon={linkType ? LINK_TYPE_ICON_MAP[linkType] : icon}\n\t\t\t\t\ticonPosition={linkType ? 'trailing' : iconPosition}\n\t\t\t\t\tclassName={className}\n\t\t\t\t\tonClick={onClick as () => void}\n\t\t\t\t\tsize={size}\n\t\t\t\t\tisHrefExternal={linkType === 'outbound' || external}\n\t\t\t\t\tref={ref as ForwardRefExoticComponent<HTMLAnchorElement>}\n\t\t\t\t\tlocale={locale}\n\t\t\t\t/>\n\t\t\t)\n\t\t}\n\n\t\treturn (\n\t\t\t<Button\n\t\t\t\ttext={text || title}\n\t\t\t\thref={url || href}\n\t\t\t\tisHrefExternal={linkType === 'outbound' || external}\n\t\t\t\tcolor={determineColor(theme)}\n\t\t\t\ttype={type}\n\t\t\t\ticon={linkType ? LINK_TYPE_ICON_MAP[linkType] : icon}\n\t\t\t\ticonPosition={linkType ? 'trailing' : iconPosition}\n\t\t\t\tonClick={onClick as React.MouseEventHandler<HTMLButtonElement>}\n\t\t\t\tclassName={className}\n\t\t\t\t// Default buttons to the large size unless we specifically request the\n\t\t\t\t// small variant\n\t\t\t\tsize={size === 'small' ? 'medium' : 'large'}\n\t\t\t\taria-label={label}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tref={ref as ForwardRefExoticComponent<HTMLButtonElement>}\n\t\t\t\tlocale={locale}\n\t\t\t\t{...rest}\n\t\t\t/>\n\t\t)\n\t}\n)\n\nMDSButton.displayName = 'MDSButton'\n\nexport { MDSButton }\n"],"names":["MDSButton","forwardRef","locale","text","title","url","href","linkType","onClick","external","className","size","icon","iconPosition","label","disabled","type","theme","rest","ref","determineColor","jsx","StandaloneLink","LINK_TYPE_ICON_MAP","Button"],"mappings":";;;;;AAOA,MAAMA,IAAYC;AAAA,EAIjB,CACC;AAAA,IACC,QAAAC;AAAA,IACA,MAAAC;AAAA,IACA,OAAAC;AAAA,IACA,KAAAC;AAAA,IACA,MAAAC;AAAA,IACA,UAAAC;AAAA,IACA,SAAAC;AAAA,IACA,UAAAC;AAAA,IACA,WAAAC;AAAA,IACA,MAAAC;AAAA,IACA,MAAAC;AAAA,IACA,cAAAC,IAAe;AAAA,IACf,OAAAC;AAAA,IACA,UAAAC;AAAA,IACA,MAAAC;AAAA,IACA,OAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAEJC,MAEcC,EAAeH,CAAK,MAEpB,aAIZ,gBAAAI;AAAA,IAACC;AAAA,IAAA;AAAA,MACA,MAAOnB,KAAQC;AAAA,MACf,OACCa,GAAO,eAAe,SAAS,uBAAuB;AAAA,MAEvD,MAAMZ,KAAOC;AAAA,MACb,MAAMC,IAAWgB,EAAmBhB,CAAQ,IAAIK;AAAA,MAChD,cAAcL,IAAW,aAAaM;AAAA,MACtC,WAAAH;AAAA,MACA,SAAAF;AAAA,MACA,MAAAG;AAAA,MACA,gBAAgBJ,MAAa,cAAcE;AAAA,MAC3C,KAAAU;AAAA,MACA,QAAAjB;AAAA,IAAA;AAAA,EAAA,IAMF,gBAAAmB;AAAA,IAACG;AAAA,IAAA;AAAA,MACA,MAAMrB,KAAQC;AAAA,MACd,MAAMC,KAAOC;AAAA,MACb,gBAAgBC,MAAa,cAAcE;AAAA,MAC3C,OAAOW,EAAeH,CAAK;AAAA,MAC3B,MAAAD;AAAA,MACA,MAAMT,IAAWgB,EAAmBhB,CAAQ,IAAIK;AAAA,MAChD,cAAcL,IAAW,aAAaM;AAAA,MACtC,SAAAL;AAAA,MACA,WAAAE;AAAA,MAGA,MAAMC,MAAS,UAAU,WAAW;AAAA,MACpC,cAAYG;AAAA,MACZ,UAAAC;AAAA,MACA,KAAAI;AAAA,MACA,QAAAjB;AAAA,MACC,GAAGgB;AAAA,IAAA;AAAA,EAAA;AAIR;AAEAlB,EAAU,cAAc;"}
@@ -0,0 +1,37 @@
1
+ import { COLORS } from './utils';
2
+ type HashiCorpProduct = 'hashicorp' | 'boundary' | 'consul' | 'nomad' | 'packer' | 'terraform' | 'vault' | 'vagrant' | 'waypoint';
3
+ export type Size = 'medium' | 'small';
4
+ export type ThemeBackground = 'light' | 'dark' | 'brand';
5
+ export interface Theme {
6
+ variant?: ThemeVariant;
7
+ background?: ThemeBackground;
8
+ brand?: HashiCorpProduct | 'neutral';
9
+ }
10
+ export type LinkType = 'inbound' | 'outbound' | 'anchor' | 'download';
11
+ export type ThemeVariant = 'primary' | 'secondary' | 'tertiary' | 'tertiary-neutral' | 'ghost';
12
+ export type ButtonColor = (typeof COLORS)[number];
13
+ export interface ButtonBaseProps {
14
+ url?: string;
15
+ href?: string;
16
+ label?: string;
17
+ className?: string;
18
+ external?: boolean;
19
+ onClick?: React.MouseEventHandler<HTMLButtonElement> | React.MouseEventHandler<HTMLAnchorElement>;
20
+ size?: Size;
21
+ linkType?: LinkType;
22
+ disabled?: boolean;
23
+ icon?: string;
24
+ iconPosition?: 'leading' | 'trailing';
25
+ theme?: Theme;
26
+ type?: 'button' | 'submit' | 'reset';
27
+ locale?: string;
28
+ }
29
+ /** @deprecated Use type ButtonProps from '@hashicorp/mds-react/button' instead. Will be removed in v1.0. */
30
+ export type ButtonProps = (ButtonBaseProps & {
31
+ title: string;
32
+ text?: string;
33
+ }) | (ButtonBaseProps & {
34
+ title?: undefined;
35
+ text: string;
36
+ });
37
+ export {};
@@ -0,0 +1,9 @@
1
+ import { ButtonColor, Theme } from './types';
2
+ export declare const COLORS: readonly ["primary", "primary-black", "primary-white", "secondary", "secondary-high-contrast", "secondary-white", "secondary-black", "tertiary", "critical", "boundary", "consul", "nomad", "packer", "terraform", "vagrant", "vault", "waypoint", "hashicorp"];
3
+ export declare function determineColor(theme?: Theme): ButtonColor;
4
+ export declare const LINK_TYPE_ICON_MAP: {
5
+ inbound: string;
6
+ outbound: string;
7
+ download: string;
8
+ anchor: string;
9
+ };
@@ -0,0 +1,39 @@
1
+ function n(r) {
2
+ const a = r?.variant ? r.variant : "primary";
3
+ if (a === "primary")
4
+ switch (r?.brand) {
5
+ case "hashicorp":
6
+ return "primary";
7
+ case "boundary":
8
+ case "consul":
9
+ case "nomad":
10
+ case "packer":
11
+ case "terraform":
12
+ case "vagrant":
13
+ case "vault":
14
+ case "waypoint":
15
+ return r.brand;
16
+ case "neutral":
17
+ return "secondary-high-contrast";
18
+ default:
19
+ return "primary";
20
+ }
21
+ if (a === "secondary")
22
+ return "secondary";
23
+ if (a === "tertiary" || a === "tertiary-neutral" || a === "ghost")
24
+ return "tertiary";
25
+ throw new Error(
26
+ `Unable to determine HDS Button color from theme: ${JSON.stringify(r)}`
27
+ );
28
+ }
29
+ const t = {
30
+ inbound: "arrow-right",
31
+ outbound: "external-link",
32
+ download: "download",
33
+ anchor: "anchor"
34
+ };
35
+ export {
36
+ t as LINK_TYPE_ICON_MAP,
37
+ n as determineColor
38
+ };
39
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sources":["../../../src/components/legacy-button/utils.tsx"],"sourcesContent":["import type { ButtonColor, Theme, ThemeVariant } from './types'\n\nexport const COLORS = [\n\t'primary',\n\t'primary-black',\n\t'primary-white',\n\t'secondary', // deprecated; maps to secondary-white\n\t'secondary-high-contrast', // alternates between secondary-black and secondary-white based on theme\n\t'secondary-white',\n\t'secondary-black',\n\t'tertiary',\n\t'critical',\n\t'boundary',\n\t'consul',\n\t'nomad',\n\t'packer',\n\t'terraform',\n\t'vagrant',\n\t'vault',\n\t'waypoint',\n\t'hashicorp', // alias to primary\n] as const\n\nexport function determineColor(theme?: Theme): ButtonColor {\n\tconst variant: ThemeVariant = theme?.variant ? theme.variant : 'primary'\n\n\tif (variant === 'primary') {\n\t\tswitch (theme?.brand) {\n\t\t\tcase 'hashicorp':\n\t\t\t\treturn 'primary'\n\t\t\tcase 'boundary':\n\t\t\tcase 'consul':\n\t\t\tcase 'nomad':\n\t\t\tcase 'packer':\n\t\t\tcase 'terraform':\n\t\t\tcase 'vagrant':\n\t\t\tcase 'vault':\n\t\t\tcase 'waypoint':\n\t\t\t\treturn theme.brand\n\t\t\tcase 'neutral':\n\t\t\t\treturn 'secondary-high-contrast'\n\t\t\tdefault:\n\t\t\t\treturn 'primary'\n\t\t}\n\t}\n\n\tif (variant === 'secondary') {\n\t\treturn 'secondary'\n\t}\n\n\tif (\n\t\tvariant === 'tertiary' ||\n\t\tvariant === 'tertiary-neutral' ||\n\t\tvariant === 'ghost'\n\t) {\n\t\treturn 'tertiary'\n\t}\n\n\tthrow new Error(\n\t\t`Unable to determine HDS Button color from theme: ${JSON.stringify(theme)}`\n\t)\n}\n\nexport const LINK_TYPE_ICON_MAP = {\n\tinbound: 'arrow-right',\n\toutbound: 'external-link',\n\tdownload: 'download',\n\tanchor: 'anchor',\n}\n"],"names":["determineColor","theme","variant","LINK_TYPE_ICON_MAP"],"mappings":"AAuBO,SAASA,EAAeC,GAA4B;AAC1D,QAAMC,IAAwBD,GAAO,UAAUA,EAAM,UAAU;AAE/D,MAAIC,MAAY;AACf,YAAQD,GAAO,OAAA;AAAA,MACd,KAAK;AACJ,eAAO;AAAA,MACR,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACJ,eAAOA,EAAM;AAAA,MACd,KAAK;AACJ,eAAO;AAAA,MACR;AACC,eAAO;AAAA,IAAA;AAIV,MAAIC,MAAY;AACf,WAAO;AAGR,MACCA,MAAY,cACZA,MAAY,sBACZA,MAAY;AAEZ,WAAO;AAGR,QAAM,IAAI;AAAA,IACT,oDAAoD,KAAK,UAAUD,CAAK,CAAC;AAAA,EAAA;AAE3E;AAEO,MAAME,IAAqB;AAAA,EACjC,SAAS;AAAA,EACT,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAQ;AACT;"}
@@ -0,0 +1,14 @@
1
+ import { ReactNode, HTMLAttributes } from 'react';
2
+ interface MenuPrimitiveProps extends HTMLAttributes<HTMLDivElement> {
3
+ onClose?: () => void;
4
+ isFullWidth?: boolean;
5
+ children: ReactNode;
6
+ }
7
+ declare const Provider: ({ onClose, isFullWidth, children, className, ...rest }: MenuPrimitiveProps) => import("react/jsx-runtime").JSX.Element;
8
+ declare const Toggle: ({ children }: {
9
+ children: ReactNode;
10
+ }) => import("react/jsx-runtime").JSX.Element;
11
+ declare const Content: ({ children }: {
12
+ children: ReactNode;
13
+ }) => import("react/jsx-runtime").JSX.Element;
14
+ export { Provider, Toggle, Content };
@@ -0,0 +1,68 @@
1
+ "use client";
2
+ import { jsx as c } from "react/jsx-runtime";
3
+ import { useState as N, useRef as f, useCallback as i, useMemo as P } from "react";
4
+ import R from "classnames";
5
+ import { MenuPrimitiveContext as b, useMenuPrimitive as p } from "./use-menu-primitive.js";
6
+ import u from "./styles.module.css.js";
7
+ const E = ({
8
+ onClose: e,
9
+ isFullWidth: n,
10
+ children: d,
11
+ className: g,
12
+ ...v
13
+ }) => {
14
+ const [l, r] = N(!1), m = f(null), o = f(null), t = i(() => {
15
+ r(!1), e && e();
16
+ }, [r, e]), a = i(() => {
17
+ r((s) => !s), o?.current?.focus();
18
+ }, [o, r]), x = i(
19
+ (s) => {
20
+ m?.current?.contains(
21
+ s.relatedTarget || document.activeElement
22
+ ) || t();
23
+ },
24
+ [t]
25
+ ), O = i(
26
+ (s) => {
27
+ s.key === "Escape" && (t(), o?.current?.querySelector("button")?.focus());
28
+ },
29
+ [t]
30
+ ), M = P(
31
+ () => ({
32
+ isOpen: l,
33
+ onClickToggle: a,
34
+ toggleRef: o,
35
+ closeMenu: t
36
+ }),
37
+ [l, a, o, t]
38
+ );
39
+ return /* @__PURE__ */ c(b.Provider, { value: M, children: /* @__PURE__ */ c(
40
+ "div",
41
+ {
42
+ className: R(
43
+ u["menu-primitive"],
44
+ {
45
+ [u["width-full"]]: n
46
+ },
47
+ g
48
+ ),
49
+ onBlur: x,
50
+ onKeyUp: O,
51
+ ref: m,
52
+ ...v,
53
+ children: d
54
+ }
55
+ ) });
56
+ }, I = ({ children: e }) => {
57
+ const { toggleRef: n } = p();
58
+ return /* @__PURE__ */ c("div", { className: "hds-menu-primitive__toggle", ref: n, children: e });
59
+ }, S = ({ children: e }) => {
60
+ const { isOpen: n } = p();
61
+ return /* @__PURE__ */ c("div", { className: n ? u.isOpen : u.isClosed, tabIndex: -1, children: e });
62
+ };
63
+ export {
64
+ S as Content,
65
+ E as Provider,
66
+ I as Toggle
67
+ };
68
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/menu-primitive/index.tsx"],"sourcesContent":["'use client'\n\nimport {\n\tuseMemo,\n\tuseState,\n\tuseRef,\n\tuseCallback,\n\ttype ReactNode,\n\ttype FocusEvent,\n\ttype KeyboardEvent,\n\ttype HTMLAttributes,\n} from 'react'\nimport classNames from 'classnames'\nimport {\n\tMenuPrimitiveContext,\n\tuseMenuPrimitive,\n\ttype MenuPrimitiveContextState,\n} from './use-menu-primitive'\nimport s from './styles.module.css'\n\ninterface MenuPrimitiveProps extends HTMLAttributes<HTMLDivElement> {\n\tonClose?: () => void\n\tisFullWidth?: boolean\n\tchildren: ReactNode\n}\n\nconst Provider = ({\n\tonClose,\n\tisFullWidth,\n\tchildren,\n\tclassName,\n\t...rest\n}: MenuPrimitiveProps) => {\n\tconst [isOpen, setIsOpen] = useState(false)\n\tconst menuRef = useRef<HTMLDivElement | null>(null)\n\tconst toggleRef = useRef<HTMLDivElement | null>(null)\n\n\tconst closeMenu = useCallback(() => {\n\t\tsetIsOpen(false)\n\t\tif (onClose) {\n\t\t\tonClose()\n\t\t}\n\t}, [setIsOpen, onClose])\n\n\tconst onClickToggle = useCallback(() => {\n\t\tsetIsOpen((prevState) => !prevState)\n\t\ttoggleRef?.current?.focus()\n\t}, [toggleRef, setIsOpen])\n\n\tconst onFocusOut = useCallback(\n\t\t(event: FocusEvent) => {\n\t\t\tif (\n\t\t\t\t!menuRef?.current?.contains(\n\t\t\t\t\tevent.relatedTarget || document.activeElement\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tcloseMenu()\n\t\t\t}\n\t\t},\n\t\t[closeMenu]\n\t)\n\n\tconst onKeyUp = useCallback(\n\t\t(event: KeyboardEvent) => {\n\t\t\tif (event.key === 'Escape') {\n\t\t\t\tcloseMenu()\n\t\t\t\ttoggleRef?.current?.querySelector('button')?.focus()\n\t\t\t}\n\t\t},\n\t\t[closeMenu]\n\t)\n\n\tconst contextValue: MenuPrimitiveContextState = useMemo(\n\t\t() => ({\n\t\t\tisOpen,\n\t\t\tonClickToggle,\n\t\t\ttoggleRef,\n\t\t\tcloseMenu,\n\t\t}),\n\t\t[isOpen, onClickToggle, toggleRef, closeMenu]\n\t)\n\n\treturn (\n\t\t<MenuPrimitiveContext.Provider value={contextValue}>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\n\t\t\t\t\ts['menu-primitive'],\n\t\t\t\t\t{\n\t\t\t\t\t\t[s['width-full']]: isFullWidth,\n\t\t\t\t\t},\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonBlur={onFocusOut}\n\t\t\t\tonKeyUp={onKeyUp}\n\t\t\t\tref={menuRef}\n\t\t\t\t{...rest}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t</MenuPrimitiveContext.Provider>\n\t)\n}\n\nconst Toggle = ({ children }: { children: ReactNode }) => {\n\tconst { toggleRef } = useMenuPrimitive()\n\treturn (\n\t\t<div className=\"hds-menu-primitive__toggle\" ref={toggleRef}>\n\t\t\t{children}\n\t\t</div>\n\t)\n}\n\nconst Content = ({ children }: { children: ReactNode }) => {\n\tconst { isOpen } = useMenuPrimitive()\n\treturn (\n\t\t<div className={isOpen ? s.isOpen : s.isClosed} tabIndex={-1}>\n\t\t\t{children}\n\t\t</div>\n\t)\n}\n\nexport { Provider, Toggle, Content }\n"],"names":["Provider","onClose","isFullWidth","children","className","rest","isOpen","setIsOpen","useState","menuRef","useRef","toggleRef","closeMenu","useCallback","prevState","event","contextValue","useMemo","onClickToggle","jsx","MenuPrimitiveContext","classNames","s","onFocusOut","onKeyUp","useMenuPrimitive"],"mappings":";;;;;;AA0BkB,MACjBA,IAAA,CAAA;AAAA,EACA,SAAAC;AAAA,EACA,aAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AAAA,EACD,GAAAC;AACC,MAAA;AACA,QAAM,CAAAC,GAAAC,KAA4CC,EAAA,EAAA,GAC5CC,IAAAC,EAAY,OAEZC,IAAYD,EAAA,OACjBE,IAAeC,EAAA,MAAA;AACf,IAAAN,IAAa,QAEbN,EAAA;AAAA,EAGD,GAAA,CAAAM,GAAMN,CAAgB,CAAA,OACVY,QAAwB;AACnC,IAAAN,EAAA,CAAWO,MAAS,CAAAA,CAAM,GAC3BH,GAAI,SAAW,MAAU;AAAA,EAEzB,GAAA,CAAAA,GAAMJ,CAAa,CAAA,OACKM;AAAA,IACtB,CAAAE,MACE;AAAkB,MAClBN,GAAM;QACPM,EACC,iBAAA,SAAA;AAAA,MACD,KACDH,EAAA;AAAA,IAED;AAAA,IACD,CAAAA,CAAA;AAAA,EAEA,OAC2BC;AAAA,IACzB,CAAAE,MAAI;AACH,gBAAU,aACVH,EAAA,GACDD,GAAA,SAAA,cAAA,QAAA,GAAA,MAAA;AAAA,IAED;AAAA,IACD,CAAAC,CAAA;AAAA,EAEA,GACCI,IAAOC;AAAA,IAAA,OACN;AAAA,MACA,QAAAX;AAAA,MACA,eAAAY;AAAA,MACA,WAAAP;AAAA,MACD,WAAAC;AAAA,IACA;AAAA,IACD,CAAAN,GAAAY,GAAAP,GAAAC,CAAA;AAAA,EAEA;AAEE,SAAC,gBAAAO,EAAAC,EAAA,UAAA,EAAA,OAAAJ,GAAA,UAAA,gBAAAG;AAAA,IAAA;AAAA,IAAA;AAAA,MACW,WACRE;AAAA,QACFC,EAAA,gBAAA;AAAA,QAAA;AAAA,UAEA,CAAAA,EAAA,YAAA,CAAA,GAAApB;AAAA,QACA;AAAA,QACDE;AAAA,MACA;AAAA,MACA,QAAAmB;AAAA,MACA,SAAAC;AAAA,MACC,KAAGf;AAAA,MAEH,GAAAJ;AAAA,MAAA,UAAAF;AAAA;EAIL,EAAA,CAAA;AAEA,OACS,CAAA,EAAA,UAAAA;AACR,6BACM;AAIP,SAAA,gBAAAgB,EAAA,OAAA,EAAA,WAAA,8BAAA,KAAAR,GAAA,UAAAR,EAAA,CAAA;AAEA,OACS,CAAA,EAAO,UAAAA;AACf,QAAA,EAAA,QAAAG,EAAA,IAAAmB,EACM;AAIP,SAAA,gBAAAN,EAAA,OAAA,EAAA,WAAAb,IAAAgB,EAAA,SAAAA,EAAA,UAAA,UAAA,IAAA,UAAAnB,EAAA,CAAA;;"}
@@ -0,0 +1,16 @@
1
+ .menu-primitive {
2
+ position: relative;
3
+ width: fit-content;
4
+ }
5
+
6
+ .width-full {
7
+ width: 100%;
8
+ }
9
+
10
+ .isOpen {
11
+ display: block;
12
+ }
13
+
14
+ .isClosed {
15
+ display: none;
16
+ }
@@ -0,0 +1,12 @@
1
+ const i = "isOpen__Dbse-", s = "isClosed__HWTqi", e = {
2
+ "menu-primitive": "menu-primitive__EJFpE",
3
+ "width-full": "width-full__35Qjo",
4
+ isOpen: i,
5
+ isClosed: s
6
+ };
7
+ export {
8
+ e as default,
9
+ s as isClosed,
10
+ i as isOpen
11
+ };
12
+ //# sourceMappingURL=styles.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,9 @@
1
+ import { MouseEventHandler, RefObject } from 'react';
2
+ export interface MenuPrimitiveContextState {
3
+ isOpen: boolean;
4
+ onClickToggle: MouseEventHandler<HTMLButtonElement>;
5
+ toggleRef: RefObject<HTMLDivElement>;
6
+ closeMenu: () => void;
7
+ }
8
+ export declare const MenuPrimitiveContext: import('react').Context<MenuPrimitiveContextState | undefined>;
9
+ export declare function useMenuPrimitive(): MenuPrimitiveContextState;
@@ -0,0 +1,17 @@
1
+ "use client";
2
+ import { createContext as i, useContext as n } from "react";
3
+ const t = i(void 0);
4
+ t.displayName = "MenuPrimitiveContext";
5
+ function r() {
6
+ const e = n(t);
7
+ if (e === void 0)
8
+ throw new Error(
9
+ "useMenuPrimitive must be used within a MenuPrimitiveContext.Provider"
10
+ );
11
+ return e;
12
+ }
13
+ export {
14
+ t as MenuPrimitiveContext,
15
+ r as useMenuPrimitive
16
+ };
17
+ //# sourceMappingURL=use-menu-primitive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-menu-primitive.js","sources":["../../../src/components/menu-primitive/use-menu-primitive.ts"],"sourcesContent":["'use client'\n\nimport {\n\tcreateContext,\n\tuseContext,\n\ttype MouseEventHandler,\n\ttype RefObject,\n} from 'react'\n\nexport interface MenuPrimitiveContextState {\n\tisOpen: boolean\n\tonClickToggle: MouseEventHandler<HTMLButtonElement>\n\ttoggleRef: RefObject<HTMLDivElement>\n\tcloseMenu: () => void\n}\n\nexport const MenuPrimitiveContext = createContext<\n\tMenuPrimitiveContextState | undefined\n>(undefined)\nMenuPrimitiveContext.displayName = 'MenuPrimitiveContext'\n\nexport function useMenuPrimitive(): MenuPrimitiveContextState {\n\tconst context = useContext(MenuPrimitiveContext)\n\tif (context === undefined) {\n\t\tthrow new Error(\n\t\t\t'useMenuPrimitive must be used within a MenuPrimitiveContext.Provider'\n\t\t)\n\t}\n\treturn context\n}\n"],"names":["MenuPrimitiveContext","createContext","useMenuPrimitive","context","useContext"],"mappings":";;AAmBA,MAAAA,IAAqBC,EAAc,MAAA;AAE5BD,gBAAuD;AAC7D,SAAME;AACN,QAAIC,IAAYC,EAAWJ,CAAA;AAC1B,MAAAG,MAAU;AAAA,UACT,IAAA;AAAA,MACD;AAAA,IACD;AAED,SAAAA;;"}
@@ -0,0 +1,13 @@
1
+ import { useModal } from './use-modal';
2
+ import { ReactNode } from 'react';
3
+ interface ModalProps {
4
+ initialIsOpen?: boolean;
5
+ initialModalContent?: ReactNode;
6
+ onClose?: () => void;
7
+ children: ReactNode;
8
+ }
9
+ declare const ModalProvider: {
10
+ ({ onClose, initialIsOpen, initialModalContent, children, }: ModalProps): import("react/jsx-runtime").JSX.Element;
11
+ displayName: string;
12
+ };
13
+ export { useModal, ModalProvider };
@@ -0,0 +1,61 @@
1
+ "use client";
2
+ import { jsxs as d, Fragment as x, jsx as l } from "react/jsx-runtime";
3
+ import { useState as m, useCallback as c, useMemo as y, useEffect as h } from "react";
4
+ import k from "react-focus-lock";
5
+ import { Dialog as p } from "../dialog-primitive/index.js";
6
+ import { ModalContext as E } from "./use-modal.js";
7
+ import { useModal as I } from "./use-modal.js";
8
+ import D from "./modal.module.css.js";
9
+ const L = ({
10
+ onClose: s,
11
+ initialIsOpen: f = !1,
12
+ initialModalContent: u = null,
13
+ children: v
14
+ }) => {
15
+ const [r, a] = m(
16
+ u
17
+ ), [e, t] = m(f), o = c(() => {
18
+ t(!1), a(null), s && s();
19
+ }, [t, s]), i = c(
20
+ (n) => {
21
+ a(n), t(!0);
22
+ },
23
+ [t]
24
+ ), M = y(
25
+ () => ({
26
+ isOpen: e,
27
+ openModal: i,
28
+ modalContent: r,
29
+ closeModal: o
30
+ }),
31
+ [e, i, o, r]
32
+ );
33
+ return h(() => {
34
+ const n = (w) => {
35
+ w.key === "Escape" && e && o();
36
+ };
37
+ return e && window.addEventListener("keydown", n), () => {
38
+ e && window.removeEventListener("keydown", n);
39
+ };
40
+ }, [e, o]), /* @__PURE__ */ d(E.Provider, { value: M, children: [
41
+ v,
42
+ e && r && /* @__PURE__ */ d(x, { children: [
43
+ /* @__PURE__ */ l(k, { children: /* @__PURE__ */ l(
44
+ p.Wrapper,
45
+ {
46
+ onDismiss: o,
47
+ className: D.modal,
48
+ open: e,
49
+ children: r
50
+ }
51
+ ) }),
52
+ /* @__PURE__ */ l(p.Overlay, {})
53
+ ] })
54
+ ] });
55
+ };
56
+ L.displayName = "ModalProvider";
57
+ export {
58
+ L as ModalProvider,
59
+ I as useModal
60
+ };
61
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/modal/index.tsx"],"sourcesContent":["'use client'\n\nimport { useMemo, useState, useCallback, useEffect } from 'react'\nimport FocusLock from 'react-focus-lock'\nimport { Dialog } from '../dialog-primitive'\nimport { ModalContext, useModal } from './use-modal'\nimport type { ReactNode } from 'react'\nimport type { ModalContextState } from './use-modal'\nimport s from './modal.module.css'\n\ninterface ModalProps {\n\tinitialIsOpen?: boolean\n\tinitialModalContent?: ReactNode\n\tonClose?: () => void\n\tchildren: ReactNode\n}\n\nconst ModalProvider = ({\n\tonClose,\n\tinitialIsOpen = false,\n\tinitialModalContent = null,\n\tchildren,\n}: ModalProps) => {\n\tconst [modalContent, setModalContent] = useState<ReactNode | null>(\n\t\tinitialModalContent\n\t)\n\tconst [isOpen, setIsOpen] = useState(initialIsOpen)\n\n\tconst closeModal = useCallback(() => {\n\t\tsetIsOpen(false)\n\t\tsetModalContent(null)\n\t\tif (onClose) {\n\t\t\tonClose()\n\t\t}\n\t}, [setIsOpen, onClose])\n\n\tconst openModal = useCallback(\n\t\t(content: ReactNode) => {\n\t\t\tsetModalContent(content)\n\t\t\tsetIsOpen(true)\n\t\t},\n\t\t[setIsOpen]\n\t)\n\n\tconst contextValue: ModalContextState = useMemo(\n\t\t() => ({\n\t\t\tisOpen,\n\t\t\topenModal,\n\t\t\tmodalContent,\n\t\t\tcloseModal,\n\t\t}),\n\t\t[isOpen, openModal, closeModal, modalContent]\n\t)\n\n\tuseEffect(() => {\n\t\tconst handleKeyDown = (event: KeyboardEvent) => {\n\t\t\tif (event.key === 'Escape' && isOpen) {\n\t\t\t\tcloseModal()\n\t\t\t}\n\t\t}\n\t\tif (isOpen) {\n\t\t\twindow.addEventListener('keydown', handleKeyDown)\n\t\t}\n\n\t\treturn () => {\n\t\t\tif (isOpen) {\n\t\t\t\twindow.removeEventListener('keydown', handleKeyDown)\n\t\t\t}\n\t\t}\n\t}, [isOpen, closeModal])\n\n\treturn (\n\t\t<ModalContext.Provider value={contextValue}>\n\t\t\t{children}\n\t\t\t{isOpen && modalContent && (\n\t\t\t\t<>\n\t\t\t\t\t<FocusLock>\n\t\t\t\t\t\t<Dialog.Wrapper\n\t\t\t\t\t\t\tonDismiss={closeModal}\n\t\t\t\t\t\t\tclassName={s.modal}\n\t\t\t\t\t\t\topen={isOpen}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{modalContent}\n\t\t\t\t\t\t</Dialog.Wrapper>\n\t\t\t\t\t</FocusLock>\n\t\t\t\t\t<Dialog.Overlay />\n\t\t\t\t</>\n\t\t\t)}\n\t\t</ModalContext.Provider>\n\t)\n}\n\nModalProvider.displayName = 'ModalProvider'\n\nexport { useModal, ModalProvider }\n"],"names":["ModalProvider","onClose","initialIsOpen","initialModalContent","children","modalContent","setModalContent","useState","isOpen","setIsOpen","closeModal","useCallback","content","contextValue","useMemo","openModal","useEffect","handleKeyDown","event","jsxs","ModalContext","jsx","FocusLock","Dialog","s"],"mappings":";;;;;;;;AAiBuB,MACtBA,IAAA,CAAA;AAAA,EACA,SAAAC;AAAA,EACA,eAAAC,IAAA;AAAA,EACA,qBAAAC,IAAA;AAAA,EACD,UAAAC;AACC;AAAwC,QACvC,CAAAC,GAAAC,CAAA,IAAAC;AAAA,IACDJ;AAAA,EACA,GAEM,CAAAK,GAAAC,CAAa,IAAAF,EAAkBL,CAAA,GACpCQ,IAAeC,EAAA,MAAA;AACf,IAAAF,EAAA,EAAA,GACAH,EAAa,IAAA,QAEbL,EAAA;AAAA,EAGD,GAAA,CAAAQ,GAAMR,CAAY,CAAA,OACOU;AAAA,IACvB,CAAAC,MAAA;AACA,MAAAN,EAAcM,CAAA,GACfH,EAAA,EAAA;AAAA,IACA;AAAA,IACD,CAAAA,CAAA;AAAA,EAEA,GACCI,IAAOC;AAAA,IAAA,OACN;AAAA,MACA,QAAAN;AAAA,MACA,WAAAO;AAAA,MACA,cAAAV;AAAA,MACD,YAAAK;AAAA,IACA;AAAA,IACD,CAAAF,GAAAO,GAAAL,GAAAL,CAAA;AAAA,EAEA;AACC,SAAAW,EAAM,MAAA;AACL,UAAIC,IAAc,CAAAC;AACjB,gBAAW,YAAAV,KACZE,EAAA;AAAA,IAED;AACC,gBACD,OAAA,iBAAA,WAAAO,CAAA,SAGK;AACH,WACD,OAAA,oBAAA,WAAAA,CAAA;AAAA,IAEF;AAAA,EAEA,GAAA,CAAAT,GAAAE,CAAA,CACC,GACE,gBAAAS,EAAAC,EAAA,UAAA,EAAA,OAAAP,GAAA,UAAA;AAAA,IACAT;AAAA,IAECI,KAAAH,KACC,gBAAAc,iBAAA;AAAA,MAAQ,gBAAAE,EAAAC,GAAA,EAAA,UAAA,gBAAAD;AAAA,QAAPE,EAAA;AAAA,QAAA;AAAA,UAEA,WAAWb;AAAA,UACX,WAAMc,EAAA;AAAA,UAEL;UAAA,UAAAnB;AAAA;MAEH,EAAA,CAAA;AAAA,MAED,gBAAAgB,EAAAE,EAAA,SAAA,CAAA,CAAA;AAAA,MAEF,CAAA;AAAA,EAEF,EAAA,CAAA;AAEA;;"}