@hashicorp/mds-react 0.9.2 → 0.9.4

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 (452) hide show
  1. package/components/accordion/index.d.ts +1 -1
  2. package/components/accordion/index.js +9 -0
  3. package/components/accordion/index.js.map +1 -0
  4. package/components/accordion/item/button.js +44 -0
  5. package/components/accordion/item/button.js.map +1 -0
  6. package/components/accordion/item/index.d.ts +1 -1
  7. package/components/accordion/item/index.js +59 -0
  8. package/components/accordion/item/index.js.map +1 -0
  9. package/components/accordion/style.module.scss.js +24 -0
  10. package/components/accordion/style.module.scss.js.map +1 -0
  11. package/components/alert/alert.module.scss.js +29 -0
  12. package/components/alert/alert.module.scss.js.map +1 -0
  13. package/components/alert/icon.d.ts +2 -2
  14. package/components/alert/icon.js +34 -0
  15. package/components/alert/icon.js.map +1 -0
  16. package/components/alert/index.d.ts +6 -6
  17. package/components/alert/index.js +97 -0
  18. package/components/alert/index.js.map +1 -0
  19. package/components/badge/index.d.ts +1 -1
  20. package/components/badge/index.js +50 -0
  21. package/components/badge/index.js.map +1 -0
  22. package/components/badge/style.module.scss.js +22 -0
  23. package/components/badge/style.module.scss.js.map +1 -0
  24. package/components/badge-count/index.d.ts +1 -1
  25. package/components/badge-count/index.js +29 -0
  26. package/components/badge-count/index.js.map +1 -0
  27. package/components/badge-count/style.module.scss.js +15 -0
  28. package/components/badge-count/style.module.scss.js.map +1 -0
  29. package/components/breadcrumbs/index.d.ts +2 -2
  30. package/components/breadcrumbs/index.js +38 -0
  31. package/components/breadcrumbs/index.js.map +1 -0
  32. package/components/breadcrumbs/item/index.d.ts +1 -1
  33. package/components/breadcrumbs/item/index.js +32 -0
  34. package/components/breadcrumbs/item/index.js.map +1 -0
  35. package/components/breadcrumbs/style.module.scss.js +27 -0
  36. package/components/breadcrumbs/style.module.scss.js.map +1 -0
  37. package/components/breadcrumbs/truncation-button/index.d.ts +1 -1
  38. package/components/breadcrumbs/truncation-button/index.js +25 -0
  39. package/components/breadcrumbs/truncation-button/index.js.map +1 -0
  40. package/components/breadcrumbs/types/index.d.ts +1 -1
  41. package/components/button/index.d.ts +4 -3
  42. package/components/button/index.js +119 -0
  43. package/components/button/index.js.map +1 -0
  44. package/components/button/styles.module.scss.js +32 -0
  45. package/components/button/styles.module.scss.js.map +1 -0
  46. package/components/card/card-thumbnail/card-thumbnail.module.css.js +8 -0
  47. package/components/card/card-thumbnail/card-thumbnail.module.css.js.map +1 -0
  48. package/components/card/card-thumbnail/index.d.ts +1 -1
  49. package/components/card/card-thumbnail/index.js +23 -0
  50. package/components/card/card-thumbnail/index.js.map +1 -0
  51. package/components/card/index.d.ts +3 -2
  52. package/components/card/index.js +160 -0
  53. package/components/card/index.js.map +1 -0
  54. package/components/card/styles.module.css.js +29 -0
  55. package/components/card/styles.module.css.js.map +1 -0
  56. package/components/card/types.d.ts +4 -3
  57. package/components/code-block/code-block.module.scss.js +34 -0
  58. package/components/code-block/code-block.module.scss.js.map +1 -0
  59. package/components/code-block/code-lines/index.d.ts +1 -8
  60. package/components/code-block/code-lines/index.js +59 -0
  61. package/components/code-block/code-lines/index.js.map +1 -0
  62. package/components/code-block/code-lines/utils/split-html-into-lines.d.ts +1 -1
  63. package/components/code-block/code-lines/utils/split-html-into-lines.js +19 -0
  64. package/components/code-block/code-lines/utils/split-html-into-lines.js.map +1 -0
  65. package/components/code-block/code-lines/utils/split-jsx-into-lines.d.ts +1 -1
  66. package/components/code-block/code-lines/utils/split-jsx-into-lines.js +31 -0
  67. package/components/code-block/code-lines/utils/split-jsx-into-lines.js.map +1 -0
  68. package/components/code-block/hidden-copy-content/index.d.ts +3 -3
  69. package/components/code-block/hidden-copy-content/index.js +13 -0
  70. package/components/code-block/hidden-copy-content/index.js.map +1 -0
  71. package/components/code-block/index.d.ts +1 -1
  72. package/components/code-block/index.js +88 -0
  73. package/components/code-block/index.js.map +1 -0
  74. package/components/code-block/utils/parse-highlighted-lines.js +39 -0
  75. package/components/code-block/utils/parse-highlighted-lines.js.map +1 -0
  76. package/components/code-block/utils/process-snippet.js +20 -0
  77. package/components/code-block/utils/process-snippet.js.map +1 -0
  78. package/components/code-block/utils/shellwords.js +33 -0
  79. package/components/code-block/utils/shellwords.js.map +1 -0
  80. package/components/combo-box-primitive/index.d.ts +1 -0
  81. package/components/combo-box-primitive/index.js +302 -0
  82. package/components/combo-box-primitive/index.js.map +1 -0
  83. package/components/dialog-primitive/dialog.module.scss.js +12 -0
  84. package/components/dialog-primitive/dialog.module.scss.js.map +1 -0
  85. package/components/dialog-primitive/index.d.ts +1 -1
  86. package/components/dialog-primitive/index.js +15 -0
  87. package/components/dialog-primitive/index.js.map +1 -0
  88. package/components/disclosure-primitive/index.d.ts +1 -2
  89. package/components/disclosure-primitive/index.js +57 -0
  90. package/components/disclosure-primitive/index.js.map +1 -0
  91. package/components/disclosure-primitive/styles.module.css.js +7 -0
  92. package/components/disclosure-primitive/styles.module.css.js.map +1 -0
  93. package/components/disclosure-primitive/use-disclosure-primitive.d.ts +2 -2
  94. package/components/disclosure-primitive/use-disclosure-primitive.js +17 -0
  95. package/components/disclosure-primitive/use-disclosure-primitive.js.map +1 -0
  96. package/components/dismiss-button/index.d.ts +1 -0
  97. package/components/dismiss-button/index.js +22 -0
  98. package/components/dismiss-button/index.js.map +1 -0
  99. package/components/dismiss-button/styles.module.scss.js +7 -0
  100. package/components/dismiss-button/styles.module.scss.js.map +1 -0
  101. package/components/dropdown/index.d.ts +6 -6
  102. package/components/dropdown/index.js +79 -0
  103. package/components/dropdown/index.js.map +1 -0
  104. package/components/dropdown/list-item/custom.d.ts +1 -1
  105. package/components/dropdown/list-item/custom.js +9 -0
  106. package/components/dropdown/list-item/custom.js.map +1 -0
  107. package/components/dropdown/list-item/index.d.ts +4 -4
  108. package/components/dropdown/list-item/index.js +14 -0
  109. package/components/dropdown/list-item/index.js.map +1 -0
  110. package/components/dropdown/list-item/interactive.d.ts +1 -1
  111. package/components/dropdown/list-item/interactive.js +49 -0
  112. package/components/dropdown/list-item/interactive.js.map +1 -0
  113. package/components/dropdown/list-item/separator.d.ts +1 -1
  114. package/components/dropdown/list-item/separator.js +17 -0
  115. package/components/dropdown/list-item/separator.js.map +1 -0
  116. package/components/dropdown/list-item/styles.module.css.js +26 -0
  117. package/components/dropdown/list-item/styles.module.css.js.map +1 -0
  118. package/components/dropdown/list-item/title.d.ts +1 -1
  119. package/components/dropdown/list-item/title.js +9 -0
  120. package/components/dropdown/list-item/title.js.map +1 -0
  121. package/components/dropdown/styles.module.css.js +24 -0
  122. package/components/dropdown/styles.module.css.js.map +1 -0
  123. package/components/dropdown/toggle-button/index.d.ts +2 -2
  124. package/components/dropdown/toggle-button/index.js +54 -0
  125. package/components/dropdown/toggle-button/index.js.map +1 -0
  126. package/components/dropdown/toggle-button/styles.module.scss.js +14 -0
  127. package/components/dropdown/toggle-button/styles.module.scss.js.map +1 -0
  128. package/components/flight-icon/flight-icon.module.css.js +12 -0
  129. package/components/flight-icon/flight-icon.module.css.js.map +1 -0
  130. package/components/flight-icon/index.d.ts +2 -2
  131. package/components/flight-icon/index.js +58 -0
  132. package/components/flight-icon/index.js.map +1 -0
  133. package/components/form/checkbox/form-checkbox.module.css.js +8 -0
  134. package/components/form/checkbox/form-checkbox.module.css.js.map +1 -0
  135. package/components/form/checkbox/index.d.ts +1 -1
  136. package/components/form/checkbox/index.js +109 -0
  137. package/components/form/checkbox/index.js.map +1 -0
  138. package/components/form/error/form-error.module.css.js +14 -0
  139. package/components/form/error/form-error.module.css.js.map +1 -0
  140. package/components/form/error/index.d.ts +1 -1
  141. package/components/form/error/index.js +22 -0
  142. package/components/form/error/index.js.map +1 -0
  143. package/components/form/field/form-field.module.css.js +17 -0
  144. package/components/form/field/form-field.module.css.js.map +1 -0
  145. package/components/form/field/index.d.ts +1 -1
  146. package/components/form/field/index.js +46 -0
  147. package/components/form/field/index.js.map +1 -0
  148. package/components/form/fieldset/form-fieldset.module.css.js +19 -0
  149. package/components/form/fieldset/form-fieldset.module.css.js.map +1 -0
  150. package/components/form/fieldset/index.d.ts +1 -1
  151. package/components/form/fieldset/index.js +65 -0
  152. package/components/form/fieldset/index.js.map +1 -0
  153. package/components/form/file-input/form-file-input.module.scss.js +7 -0
  154. package/components/form/file-input/form-file-input.module.scss.js.map +1 -0
  155. package/components/form/file-input/index.d.ts +1 -1
  156. package/components/form/file-input/index.js +68 -0
  157. package/components/form/file-input/index.js.map +1 -0
  158. package/components/form/helper-text/form-helper-text.module.css.js +7 -0
  159. package/components/form/helper-text/form-helper-text.module.css.js.map +1 -0
  160. package/components/form/helper-text/index.d.ts +1 -1
  161. package/components/form/helper-text/index.js +22 -0
  162. package/components/form/helper-text/index.js.map +1 -0
  163. package/components/form/indicator/form-indicator.module.css.js +8 -0
  164. package/components/form/indicator/form-indicator.module.css.js.map +1 -0
  165. package/components/form/indicator/index.js +23 -0
  166. package/components/form/indicator/index.js.map +1 -0
  167. package/components/form/label/form-label.module.css.js +10 -0
  168. package/components/form/label/form-label.module.css.js.map +1 -0
  169. package/components/form/label/index.d.ts +1 -1
  170. package/components/form/label/index.js +33 -0
  171. package/components/form/label/index.js.map +1 -0
  172. package/components/form/legend/form-legend.module.css.js +10 -0
  173. package/components/form/legend/form-legend.module.css.js.map +1 -0
  174. package/components/form/legend/index.d.ts +1 -1
  175. package/components/form/legend/index.js +19 -0
  176. package/components/form/legend/index.js.map +1 -0
  177. package/components/form/radio/form-radio.module.scss.js +8 -0
  178. package/components/form/radio/form-radio.module.scss.js.map +1 -0
  179. package/components/form/radio/index.d.ts +1 -1
  180. package/components/form/radio/index.js +100 -0
  181. package/components/form/radio/index.js.map +1 -0
  182. package/components/form/radio-card/description.js +10 -0
  183. package/components/form/radio-card/description.js.map +1 -0
  184. package/components/form/radio-card/form-radio-card.module.css.js +30 -0
  185. package/components/form/radio-card/form-radio-card.module.css.js.map +1 -0
  186. package/components/form/radio-card/group.d.ts +1 -1
  187. package/components/form/radio-card/group.js +31 -0
  188. package/components/form/radio-card/group.js.map +1 -0
  189. package/components/form/radio-card/index.d.ts +2 -2
  190. package/components/form/radio-card/index.js +67 -0
  191. package/components/form/radio-card/index.js.map +1 -0
  192. package/components/form/radio-card/label.js +10 -0
  193. package/components/form/radio-card/label.js.map +1 -0
  194. package/components/form/select/form-select.module.css.js +14 -0
  195. package/components/form/select/form-select.module.css.js.map +1 -0
  196. package/components/form/select/index.d.ts +1 -1
  197. package/components/form/select/index.js +79 -0
  198. package/components/form/select/index.js.map +1 -0
  199. package/components/form/super-select/form-super-select.module.css.js +22 -0
  200. package/components/form/super-select/form-super-select.module.css.js.map +1 -0
  201. package/components/form/super-select/index.d.ts +2 -2
  202. package/components/form/super-select/index.js +170 -0
  203. package/components/form/super-select/index.js.map +1 -0
  204. package/components/form/text-input/index.d.ts +1 -1
  205. package/components/form/text-input/index.js +91 -0
  206. package/components/form/text-input/index.js.map +1 -0
  207. package/components/form/text-input/styles.module.css.js +15 -0
  208. package/components/form/text-input/styles.module.css.js.map +1 -0
  209. package/components/form/textarea/form-textarea.module.css.js +14 -0
  210. package/components/form/textarea/form-textarea.module.css.js.map +1 -0
  211. package/components/form/textarea/index.d.ts +1 -1
  212. package/components/form/textarea/index.js +74 -0
  213. package/components/form/textarea/index.js.map +1 -0
  214. package/components/form/toggle/form-toggle.module.scss.js +12 -0
  215. package/components/form/toggle/form-toggle.module.scss.js.map +1 -0
  216. package/components/form/toggle/index.d.ts +1 -1
  217. package/components/form/toggle/index.js +102 -0
  218. package/components/form/toggle/index.js.map +1 -0
  219. package/components/hds/wrappers/tooltip.d.ts +3 -4
  220. package/components/hds/wrappers/tooltip.js +51 -0
  221. package/components/hds/wrappers/tooltip.js.map +1 -0
  222. package/components/icon-tile/index.d.ts +1 -1
  223. package/components/icon-tile/index.js +50 -0
  224. package/components/icon-tile/index.js.map +1 -0
  225. package/components/icon-tile/style.module.scss.js +29 -0
  226. package/components/icon-tile/style.module.scss.js.map +1 -0
  227. package/components/index.d.ts +1 -1
  228. package/components/index.js +116 -73
  229. package/components/index.js.map +1 -1
  230. package/components/inline-link/index.d.ts +1 -1
  231. package/components/inline-link/index.js +33 -0
  232. package/components/inline-link/index.js.map +1 -0
  233. package/components/inline-link/inline-link.module.css.js +11 -0
  234. package/components/inline-link/inline-link.module.css.js.map +1 -0
  235. package/components/interactive/index.d.ts +3 -4
  236. package/components/interactive/index.js +59 -0
  237. package/components/interactive/index.js.map +1 -0
  238. package/components/legacy-button/index.d.ts +3 -3
  239. package/components/legacy-button/index.js +65 -0
  240. package/components/legacy-button/index.js.map +1 -0
  241. package/components/legacy-button/types.d.ts +1 -1
  242. package/components/legacy-button/utils.d.ts +1 -1
  243. package/components/legacy-button/utils.js +39 -0
  244. package/components/legacy-button/utils.js.map +1 -0
  245. package/components/menu-primitive/index.d.ts +1 -1
  246. package/components/menu-primitive/index.js +68 -0
  247. package/components/menu-primitive/index.js.map +1 -0
  248. package/components/menu-primitive/styles.module.css.js +12 -0
  249. package/components/menu-primitive/styles.module.css.js.map +1 -0
  250. package/components/menu-primitive/use-menu-primitive.d.ts +2 -2
  251. package/components/menu-primitive/use-menu-primitive.js +17 -0
  252. package/components/menu-primitive/use-menu-primitive.js.map +1 -0
  253. package/components/modal/index.d.ts +1 -1
  254. package/components/modal/index.js +61 -0
  255. package/components/modal/index.js.map +1 -0
  256. package/components/modal/modal.module.css.js +8 -0
  257. package/components/modal/modal.module.css.js.map +1 -0
  258. package/components/modal/use-modal.d.ts +2 -2
  259. package/components/modal/use-modal.js +17 -0
  260. package/components/modal/use-modal.js.map +1 -0
  261. package/components/separator/index.d.ts +1 -1
  262. package/components/separator/index.js +15 -0
  263. package/components/separator/index.js.map +1 -0
  264. package/components/separator/separator.module.css.js +10 -0
  265. package/components/separator/separator.module.css.js.map +1 -0
  266. package/components/standalone-link/index.d.ts +2 -2
  267. package/components/standalone-link/index.js +54 -0
  268. package/components/standalone-link/index.js.map +1 -0
  269. package/components/standalone-link/styles.module.scss.js +17 -0
  270. package/components/standalone-link/styles.module.scss.js.map +1 -0
  271. package/components/table/index.d.ts +5 -5
  272. package/components/table/index.js +52 -0
  273. package/components/table/index.js.map +1 -0
  274. package/components/table/table.module.scss.js +33 -0
  275. package/components/table/table.module.scss.js.map +1 -0
  276. package/components/table/td.d.ts +2 -2
  277. package/components/table/td.js +28 -0
  278. package/components/table/td.js.map +1 -0
  279. package/components/table/th-button-tooltip.js +24 -0
  280. package/components/table/th-button-tooltip.js.map +1 -0
  281. package/components/table/th.d.ts +2 -2
  282. package/components/table/th.js +43 -0
  283. package/components/table/th.js.map +1 -0
  284. package/components/table/tr.d.ts +1 -1
  285. package/components/table/tr.js +9 -0
  286. package/components/table/tr.js.map +1 -0
  287. package/components/table/utils.js +28 -0
  288. package/components/table/utils.js.map +1 -0
  289. package/components/tabs/index.d.ts +3 -3
  290. package/components/tabs/index.js +117 -0
  291. package/components/tabs/index.js.map +1 -0
  292. package/components/tabs/tab-panel.d.ts +1 -1
  293. package/components/tabs/tab-panel.js +35 -0
  294. package/components/tabs/tab-panel.js.map +1 -0
  295. package/components/tabs/tab.d.ts +2 -2
  296. package/components/tabs/tab.js +70 -0
  297. package/components/tabs/tab.js.map +1 -0
  298. package/components/tabs/tabs.module.scss.js +22 -0
  299. package/components/tabs/tabs.module.scss.js.map +1 -0
  300. package/components/tabs/use-tabs-context.d.ts +2 -2
  301. package/components/tabs/use-tabs-context.js +16 -0
  302. package/components/tabs/use-tabs-context.js.map +1 -0
  303. package/components/text/index.d.ts +6 -6
  304. package/components/text/index.js +112 -0
  305. package/components/text/index.js.map +1 -0
  306. package/components/text/style.module.scss.js +9 -0
  307. package/components/text/style.module.scss.js.map +1 -0
  308. package/components/visualizations/bar-chart/horizontal-chart/dataset-value/index.js +62 -0
  309. package/components/visualizations/bar-chart/horizontal-chart/dataset-value/index.js.map +1 -0
  310. package/components/visualizations/bar-chart/horizontal-chart/dataset-value/style.module.css.js +20 -0
  311. package/components/visualizations/bar-chart/horizontal-chart/dataset-value/style.module.css.js.map +1 -0
  312. package/components/visualizations/bar-chart/horizontal-chart/index.d.ts +1 -0
  313. package/components/visualizations/bar-chart/horizontal-chart/index.js +104 -0
  314. package/components/visualizations/bar-chart/horizontal-chart/index.js.map +1 -0
  315. package/components/visualizations/bar-chart/horizontal-chart/legend/index.js +13 -0
  316. package/components/visualizations/bar-chart/horizontal-chart/legend/index.js.map +1 -0
  317. package/components/visualizations/bar-chart/horizontal-chart/legend/style.module.css.js +14 -0
  318. package/components/visualizations/bar-chart/horizontal-chart/legend/style.module.css.js.map +1 -0
  319. package/components/visualizations/bar-chart/horizontal-chart/style.module.css.js +28 -0
  320. package/components/visualizations/bar-chart/horizontal-chart/style.module.css.js.map +1 -0
  321. package/components/visualizations/bar-chart/index.d.ts +1 -1
  322. package/components/visualizations/bar-chart/index.js +37 -0
  323. package/components/visualizations/bar-chart/index.js.map +1 -0
  324. package/components/visualizations/bar-chart/style.module.css.js +12 -0
  325. package/components/visualizations/bar-chart/style.module.css.js.map +1 -0
  326. package/components/visualizations/donut-chart/components/arc-tooltip/index.d.ts +2 -2
  327. package/components/visualizations/donut-chart/components/arc-tooltip/index.js +14 -0
  328. package/components/visualizations/donut-chart/components/arc-tooltip/index.js.map +1 -0
  329. package/components/visualizations/donut-chart/components/arc-tooltip/styles.module.css.js +10 -0
  330. package/components/visualizations/donut-chart/components/arc-tooltip/styles.module.css.js.map +1 -0
  331. package/components/visualizations/donut-chart/components/external-arc-label/index.d.ts +2 -2
  332. package/components/visualizations/donut-chart/components/external-arc-label/index.js +58 -0
  333. package/components/visualizations/donut-chart/components/external-arc-label/index.js.map +1 -0
  334. package/components/visualizations/donut-chart/components/external-arc-label/styles.module.css.js +16 -0
  335. package/components/visualizations/donut-chart/components/external-arc-label/styles.module.css.js.map +1 -0
  336. package/components/visualizations/donut-chart/components/internal-arc-label/index.d.ts +2 -2
  337. package/components/visualizations/donut-chart/components/internal-arc-label/index.js +42 -0
  338. package/components/visualizations/donut-chart/components/internal-arc-label/index.js.map +1 -0
  339. package/components/visualizations/donut-chart/components/internal-arc-label/styles.module.css.js +14 -0
  340. package/components/visualizations/donut-chart/components/internal-arc-label/styles.module.css.js.map +1 -0
  341. package/components/visualizations/donut-chart/index.d.ts +1 -1
  342. package/components/visualizations/donut-chart/index.js +90 -0
  343. package/components/visualizations/donut-chart/index.js.map +1 -0
  344. package/components/visualizations/donut-chart/styles.module.css.js +20 -0
  345. package/components/visualizations/donut-chart/styles.module.css.js.map +1 -0
  346. package/hooks/use-media-query/index.js +16 -0
  347. package/hooks/use-media-query/index.js.map +1 -0
  348. package/index.js +155 -101
  349. package/index.js.map +1 -1
  350. package/package.json +1 -1
  351. package/patterns/card/newsroom-card/index.d.ts +1 -1
  352. package/patterns/card/newsroom-card/index.js +26 -0
  353. package/patterns/card/newsroom-card/index.js.map +1 -0
  354. package/patterns/card/newsroom-card/style.module.css.js +8 -0
  355. package/patterns/card/newsroom-card/style.module.css.js.map +1 -0
  356. package/patterns/card/partner-card/index.d.ts +2 -2
  357. package/patterns/card/partner-card/index.js +42 -0
  358. package/patterns/card/partner-card/index.js.map +1 -0
  359. package/patterns/card/partner-card/style.module.css.js +12 -0
  360. package/patterns/card/partner-card/style.module.css.js.map +1 -0
  361. package/patterns/card/person-card/index.d.ts +1 -1
  362. package/patterns/card/person-card/index.js +52 -0
  363. package/patterns/card/person-card/index.js.map +1 -0
  364. package/patterns/card/person-card/style.module.css.js +12 -0
  365. package/patterns/card/person-card/style.module.css.js.map +1 -0
  366. package/patterns/card/primitives.d.ts +5 -5
  367. package/patterns/card/primitives.js +77 -0
  368. package/patterns/card/primitives.js.map +1 -0
  369. package/patterns/card/promo-card/index.d.ts +1 -1
  370. package/patterns/card/promo-card/index.js +36 -0
  371. package/patterns/card/promo-card/index.js.map +1 -0
  372. package/patterns/card/resource-card/index.d.ts +1 -1
  373. package/patterns/card/resource-card/index.js +26 -0
  374. package/patterns/card/resource-card/index.js.map +1 -0
  375. package/patterns/card/style.module.css.js +30 -0
  376. package/patterns/card/style.module.css.js.map +1 -0
  377. package/patterns/card/thumbnails/index.d.ts +1 -1
  378. package/patterns/card/thumbnails/index.js +25 -0
  379. package/patterns/card/thumbnails/index.js.map +1 -0
  380. package/patterns/card/types.d.ts +6 -6
  381. package/patterns/card/unified-card/index.d.ts +1 -1
  382. package/patterns/card/unified-card/index.js +37 -0
  383. package/patterns/card/unified-card/index.js.map +1 -0
  384. package/patterns/copy-button/clipboard.d.ts +1 -1
  385. package/patterns/copy-button/clipboard.js +78 -0
  386. package/patterns/copy-button/clipboard.js.map +1 -0
  387. package/patterns/copy-button/index.d.ts +1 -1
  388. package/patterns/copy-button/index.js +57 -0
  389. package/patterns/copy-button/index.js.map +1 -0
  390. package/patterns/copy-button/style.module.css.js +13 -0
  391. package/patterns/copy-button/style.module.css.js.map +1 -0
  392. package/patterns/index.js +32 -22
  393. package/patterns/index.js.map +1 -1
  394. package/patterns/layout/index.d.ts +20 -20
  395. package/patterns/layout/index.js +47 -0
  396. package/patterns/layout/index.js.map +1 -0
  397. package/patterns/layout/layout.module.css.js +20 -0
  398. package/patterns/layout/layout.module.css.js.map +1 -0
  399. package/patterns/product-badge/index.js +22 -0
  400. package/patterns/product-badge/index.js.map +1 -0
  401. package/patterns/product-badge/style.module.css.js +8 -0
  402. package/patterns/product-badge/style.module.css.js.map +1 -0
  403. package/patterns/product-logo/index.d.ts +15 -15
  404. package/patterns/product-logo/index.js +130 -0
  405. package/patterns/product-logo/index.js.map +1 -0
  406. package/patterns/product-logo/product-logo.module.css.js +13 -0
  407. package/patterns/product-logo/product-logo.module.css.js.map +1 -0
  408. package/patterns/related-content/index.d.ts +1 -1
  409. package/patterns/related-content/index.js +65 -0
  410. package/patterns/related-content/index.js.map +1 -0
  411. package/patterns/related-content/style.module.css.js +22 -0
  412. package/patterns/related-content/style.module.css.js.map +1 -0
  413. package/patterns/related-content/types.d.ts +1 -1
  414. package/style.css +1 -1
  415. package/styles/mixins/button.scss +1 -6
  416. package/utils/get-contrast-yiq.js +13 -0
  417. package/utils/get-contrast-yiq.js.map +1 -0
  418. package/utils/hooks/use-screen-size.js +10 -0
  419. package/utils/hooks/use-screen-size.js.map +1 -0
  420. package/utils/i18n/constants/index.js +98 -0
  421. package/utils/i18n/constants/index.js.map +1 -0
  422. package/utils/i18n/helpers/locale-provider.js +9 -0
  423. package/utils/i18n/helpers/locale-provider.js.map +1 -0
  424. package/utils/i18n/helpers/to-smart-sentence-case.js +12 -0
  425. package/utils/i18n/helpers/to-smart-sentence-case.js.map +1 -0
  426. package/utils/i18n/helpers/to-smart-title-case.js +10 -0
  427. package/utils/i18n/helpers/to-smart-title-case.js.map +1 -0
  428. package/utils/i18n/helpers/use-locale.js +14 -0
  429. package/utils/i18n/helpers/use-locale.js.map +1 -0
  430. package/utils/i18n/index.d.ts +1 -1
  431. package/utils/i18n/index.js +41 -0
  432. package/utils/i18n/index.js.map +1 -0
  433. package/utils/i18n/index2.js +33 -0
  434. package/utils/i18n/index2.js.map +1 -0
  435. package/utils/index.js +7 -7
  436. package/utils/make-normalizer/index.d.ts +6 -6
  437. package/utils/make-normalizer/index.js +34 -0
  438. package/utils/make-normalizer/index.js.map +1 -0
  439. package/utils/mds-context/index.d.ts +1 -1
  440. package/{index-DBjAbGt7.js → utils/mds-context/index.js} +20 -19
  441. package/utils/mds-context/index.js.map +1 -0
  442. package/index-B9mPJh9w.js +0 -579
  443. package/index-B9mPJh9w.js.map +0 -1
  444. package/index-BHBlMMNF.js +0 -16
  445. package/index-BHBlMMNF.js.map +0 -1
  446. package/index-C4GBbW3N.js +0 -3567
  447. package/index-C4GBbW3N.js.map +0 -1
  448. package/index-DBjAbGt7.js.map +0 -1
  449. package/index-WkGIywHj.js +0 -767
  450. package/index-WkGIywHj.js.map +0 -1
  451. package/use-screen-size-BOnkX_K-.js +0 -9
  452. package/use-screen-size-BOnkX_K-.js.map +0 -1
@@ -0,0 +1,10 @@
1
+ "use client";
2
+ import { useMediaQuery as e } from "../../hooks/use-media-query/index.js";
3
+ const t = () => e("(max-width: 768px)"), m = () => e("(min-width: 768px) and (max-width: 1119px)"), s = () => e("(min-width: 768px)"), d = () => e("(min-width: 1120px)");
4
+ export {
5
+ d as useLarge,
6
+ m as useMedium,
7
+ s as useMediumUp,
8
+ t as useSmall
9
+ };
10
+ //# sourceMappingURL=use-screen-size.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-screen-size.js","sources":["../../../src/utils/hooks/use-screen-size.ts"],"sourcesContent":["'use client'\n\nimport { useMediaQuery } from '@web/hooks/use-media-query'\n\n// ref: https://github.com/hashicorp/web/blob/main/packages/mds-tokens/src/custom-media.css\nconst useSmall = () => useMediaQuery('(max-width: 768px)')\nconst useMedium = () =>\n\tuseMediaQuery('(min-width: 768px) and (max-width: 1119px)')\nconst useMediumUp = () => useMediaQuery('(min-width: 768px)')\nconst useLarge = () => useMediaQuery('(min-width: 1120px)')\n\nexport { useSmall, useMedium, useMediumUp, useLarge }\n"],"names":["useSmall","useMediaQuery","useMedium","useMediumUp"],"mappings":";;AAMA,MAAMA,IAAA,MAAYC,EACjB,oBAAc,GACTC,IAAA,MAAcD,EAAM,4CAAkC,GACtDE,IAAW,MAAMF,EAAc,oBAAqB;"}
@@ -0,0 +1,98 @@
1
+ const e = "en", n = {
2
+ en: /* @__PURE__ */ new Set([
3
+ "a",
4
+ "an",
5
+ "and",
6
+ "as",
7
+ "at",
8
+ "but",
9
+ "by",
10
+ "for",
11
+ "in",
12
+ "nor",
13
+ "of",
14
+ "on",
15
+ "or",
16
+ "so",
17
+ "the",
18
+ "to",
19
+ "up",
20
+ "yet"
21
+ ]),
22
+ de: /* @__PURE__ */ new Set(),
23
+ // Capitalization rules in German don't suppress small words.
24
+ es: /* @__PURE__ */ new Set([
25
+ "el",
26
+ "la",
27
+ "los",
28
+ "las",
29
+ "un",
30
+ "una",
31
+ "unos",
32
+ "unas",
33
+ "y",
34
+ "o",
35
+ "pero",
36
+ "de",
37
+ "del",
38
+ "al",
39
+ "en",
40
+ "por",
41
+ "para",
42
+ "con"
43
+ ]),
44
+ fr: /* @__PURE__ */ new Set([
45
+ "le",
46
+ "la",
47
+ "les",
48
+ "un",
49
+ "une",
50
+ "et",
51
+ "de",
52
+ "du",
53
+ "des",
54
+ "en",
55
+ "à",
56
+ "au",
57
+ "aux",
58
+ "pour",
59
+ "avec"
60
+ ]),
61
+ ja: /* @__PURE__ */ new Set(),
62
+ // Japanese doesn't use title casing; characters are not case-sensitive
63
+ ko: /* @__PURE__ */ new Set(),
64
+ // Korean doesn't use casing
65
+ pt: /* @__PURE__ */ new Set([
66
+ "o",
67
+ "a",
68
+ "os",
69
+ "as",
70
+ "um",
71
+ "uma",
72
+ "uns",
73
+ "umas",
74
+ "e",
75
+ "ou",
76
+ "mas",
77
+ "de",
78
+ "do",
79
+ "da",
80
+ "dos",
81
+ "das",
82
+ "em",
83
+ "no",
84
+ "na",
85
+ "nos",
86
+ "nas",
87
+ "por",
88
+ "para",
89
+ "com"
90
+ ]),
91
+ id: /* @__PURE__ */ new Set()
92
+ // ! TODO Determine Indonesian's small word rules, and apply them here
93
+ };
94
+ export {
95
+ e as DEFAULT_LOCALE,
96
+ n as smallWordsByLocale
97
+ };
98
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../utils/i18n/constants/index.ts"],"sourcesContent":["import type { SupportedLocale } from '../types'\n\nexport const DEFAULT_LOCALE = 'en'\n\nexport const LOCALE_LANGUAGE_MAP = {\n\ten: 'English',\n\tfr: 'Français',\n\tde: 'Deutsch',\n\tja: '日本語',\n\tko: '한국어',\n\tpt: 'Português',\n\tes: 'Español',\n\tid: 'Bahasa Indonesia',\n}\n\nexport const SUPPORTED_LOCALES = Object.keys(\n\tLOCALE_LANGUAGE_MAP\n) as SupportedLocale[]\n\nexport const smallWordsByLocale: Record<SupportedLocale, Set<string>> = {\n\ten: new Set([\n\t\t'a',\n\t\t'an',\n\t\t'and',\n\t\t'as',\n\t\t'at',\n\t\t'but',\n\t\t'by',\n\t\t'for',\n\t\t'in',\n\t\t'nor',\n\t\t'of',\n\t\t'on',\n\t\t'or',\n\t\t'so',\n\t\t'the',\n\t\t'to',\n\t\t'up',\n\t\t'yet',\n\t]),\n\tde: new Set(), // Capitalization rules in German don't suppress small words.\n\tes: new Set([\n\t\t'el',\n\t\t'la',\n\t\t'los',\n\t\t'las',\n\t\t'un',\n\t\t'una',\n\t\t'unos',\n\t\t'unas',\n\t\t'y',\n\t\t'o',\n\t\t'pero',\n\t\t'de',\n\t\t'del',\n\t\t'al',\n\t\t'en',\n\t\t'por',\n\t\t'para',\n\t\t'con',\n\t]),\n\tfr: new Set([\n\t\t'le',\n\t\t'la',\n\t\t'les',\n\t\t'un',\n\t\t'une',\n\t\t'et',\n\t\t'de',\n\t\t'du',\n\t\t'des',\n\t\t'en',\n\t\t'à',\n\t\t'au',\n\t\t'aux',\n\t\t'pour',\n\t\t'avec',\n\t]),\n\tja: new Set(), // Japanese doesn't use title casing; characters are not case-sensitive\n\tko: new Set(), // Korean doesn't use casing\n\tpt: new Set([\n\t\t'o',\n\t\t'a',\n\t\t'os',\n\t\t'as',\n\t\t'um',\n\t\t'uma',\n\t\t'uns',\n\t\t'umas',\n\t\t'e',\n\t\t'ou',\n\t\t'mas',\n\t\t'de',\n\t\t'do',\n\t\t'da',\n\t\t'dos',\n\t\t'das',\n\t\t'em',\n\t\t'no',\n\t\t'na',\n\t\t'nos',\n\t\t'nas',\n\t\t'por',\n\t\t'para',\n\t\t'com',\n\t]),\n\tid: new Set(), // ! TODO Determine Indonesian's small word rules, and apply them here\n}\n"],"names":["DEFAULT_LOCALE","smallWordsByLocale"],"mappings":"AAEO,MAAMA,IAAiB,MAiBjBC,IAA2D;AAAA,EACvE,wBAAQ,IAAI;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACA;AAAA,EACD,wBAAQ,IAAA;AAAA;AAAA,EACR,wBAAQ,IAAI;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACA;AAAA,EACD,wBAAQ,IAAI;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACA;AAAA,EACD,wBAAQ,IAAA;AAAA;AAAA,EACR,wBAAQ,IAAA;AAAA;AAAA,EACR,wBAAQ,IAAI;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACA;AAAA,EACD,wBAAQ,IAAA;AAAA;AACT;"}
@@ -0,0 +1,9 @@
1
+ "use client";
2
+ import { createContext as t } from "react";
3
+ const o = t(
4
+ void 0
5
+ );
6
+ export {
7
+ o as LocaleContext
8
+ };
9
+ //# sourceMappingURL=locale-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locale-provider.js","sources":["../../../../../utils/i18n/helpers/locale-provider.tsx"],"sourcesContent":["'use client'\n\nimport { createContext, type PropsWithChildren } from 'react'\nimport type { SupportedLocale } from '../types'\nimport { isSupportedLocale } from './is-supported-locale'\nimport { DEFAULT_LOCALE } from '../constants'\n\nfunction resolveLocale(input: string): SupportedLocale {\n\treturn isSupportedLocale(input) ? input : DEFAULT_LOCALE\n}\n\ntype LocaleContextValue = {\n\tlocale: SupportedLocale\n}\n\ninterface LocaleProviderProps extends PropsWithChildren {\n\t/**\n\t * Supported locales can be found in `SUPPORTED_LOCALES`.\n\t */\n\tlocale: string\n}\n\nexport const LocaleContext = createContext<LocaleContextValue | undefined>(\n\tundefined\n)\n\nexport const LocaleProvider = ({ locale, children }: LocaleProviderProps) => {\n\tconst resolvedLocale = resolveLocale(locale)\n\n\treturn (\n\t\t<LocaleContext.Provider value={{ locale: resolvedLocale }}>\n\t\t\t{children}\n\t\t</LocaleContext.Provider>\n\t)\n}\n"],"names":["LocaleContext","createContext"],"mappings":";;AAsB6B,MAC5BA,IAAAC;AAAA,EACD;;"}
@@ -0,0 +1,12 @@
1
+ function o(t, r) {
2
+ if (r === "ja" || r === "ko")
3
+ return t;
4
+ const e = t.match(/^(\s*[\p{P}\p{Zs}]*)?(\p{L})(.*)$/u);
5
+ if (!e) return t;
6
+ const [, n, s, a] = e;
7
+ return (n ?? "") + s.toLocaleUpperCase(r) + a.toLocaleLowerCase(r);
8
+ }
9
+ export {
10
+ o as toSmartSentenceCase
11
+ };
12
+ //# sourceMappingURL=to-smart-sentence-case.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"to-smart-sentence-case.js","sources":["../../../../../utils/i18n/helpers/to-smart-sentence-case.ts"],"sourcesContent":["import type { SupportedLocale } from '../types'\n\nexport function toSmartSentenceCase(\n\ttext: string,\n\tlocale: SupportedLocale\n): string {\n\t// Skip transformation for non-cased languages\n\tif (locale === 'ja' || locale === 'ko') {\n\t\treturn text\n\t}\n\n\tconst match = text.match(/^(\\s*[\\p{P}\\p{Zs}]*)?(\\p{L})(.*)$/u)\n\n\tif (!match) return text // fallback if no match\n\n\tconst [, leading, firstChar, rest] = match\n\n\treturn (\n\t\t(leading ?? '') +\n\t\tfirstChar.toLocaleUpperCase(locale) +\n\t\trest.toLocaleLowerCase(locale)\n\t)\n}\n"],"names":["toSmartSentenceCase","text","locale","match","leading","firstChar","rest"],"mappings":"AAEO,SAASA,EACfC,GACAC,GACS;AAET,MAAIA,MAAW,QAAQA,MAAW;AACjC,WAAOD;AAGR,QAAME,IAAQF,EAAK,MAAM,oCAAoC;AAE7D,MAAI,CAACE,EAAO,QAAOF;AAEnB,QAAM,GAAGG,GAASC,GAAWC,CAAI,IAAIH;AAErC,UACEC,KAAW,MACZC,EAAU,kBAAkBH,CAAM,IAClCI,EAAK,kBAAkBJ,CAAM;AAE/B;"}
@@ -0,0 +1,10 @@
1
+ import { smallWordsByLocale as i } from "../constants/index.js";
2
+ function c(o, t) {
3
+ const s = i[t], e = o.toLocaleLowerCase(t).split(/([\s\-:,.]+)/);
4
+ let a = !0;
5
+ return e.map((r) => /^[\s\-:,.]+$/.test(r) ? (/[:.!?]\s*$/.test(r) && (a = !0), r) : r.charAt(0).toLocaleUpperCase && (a || !s.has(r)) ? (a = !1, r.charAt(0).toLocaleUpperCase(t) + r.slice(1)) : r).join("");
6
+ }
7
+ export {
8
+ c as toSmartTitleCase
9
+ };
10
+ //# sourceMappingURL=to-smart-title-case.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"to-smart-title-case.js","sources":["../../../../../utils/i18n/helpers/to-smart-title-case.ts"],"sourcesContent":["import { smallWordsByLocale } from '../constants'\nimport { type SupportedLocale } from '../types'\n\nexport function toSmartTitleCase(\n\ttext: string,\n\tlocale: SupportedLocale\n): string {\n\tconst smallWords = smallWordsByLocale[locale]\n\tconst segments = text.toLocaleLowerCase(locale).split(/([\\s\\-:,.]+)/)\n\n\tlet capitalizeNext = true\n\n\treturn segments\n\t\t.map((segment) => {\n\t\t\tif (/^[\\s\\-:,.]+$/.test(segment)) {\n\t\t\t\t// If punctuation ends a sentence-like clause, capitalize the next word\n\t\t\t\tif (/[:.!?]\\s*$/.test(segment)) {\n\t\t\t\t\tcapitalizeNext = true\n\t\t\t\t}\n\t\t\t\treturn segment\n\t\t\t}\n\n\t\t\t// For non-cased languages (ja, ko), return as-is\n\t\t\tif (!segment.charAt(0).toLocaleUpperCase) return segment\n\n\t\t\tif (capitalizeNext || !smallWords.has(segment)) {\n\t\t\t\tcapitalizeNext = false\n\t\t\t\treturn segment.charAt(0).toLocaleUpperCase(locale) + segment.slice(1)\n\t\t\t} else {\n\t\t\t\treturn segment\n\t\t\t}\n\t\t})\n\t\t.join('')\n}\n"],"names":["toSmartTitleCase","text","locale","smallWords","smallWordsByLocale","segments","capitalizeNext","segment"],"mappings":";AAGO,SAASA,EACfC,GACAC,GACS;AACT,QAAMC,IAAaC,EAAmBF,CAAM,GACtCG,IAAWJ,EAAK,kBAAkBC,CAAM,EAAE,MAAM,cAAc;AAEpE,MAAII,IAAiB;AAErB,SAAOD,EACL,IAAI,CAACE,MACD,eAAe,KAAKA,CAAO,KAE1B,aAAa,KAAKA,CAAO,MAC5BD,IAAiB,KAEXC,KAIHA,EAAQ,OAAO,CAAC,EAAE,sBAEnBD,KAAkB,CAACH,EAAW,IAAII,CAAO,MAC5CD,IAAiB,IACVC,EAAQ,OAAO,CAAC,EAAE,kBAAkBL,CAAM,IAAIK,EAAQ,MAAM,CAAC,KAJpBA,CAQjD,EACA,KAAK,EAAE;AACV;"}
@@ -0,0 +1,14 @@
1
+ import { useContext as n } from "react";
2
+ import { DEFAULT_LOCALE as e } from "../constants/index.js";
3
+ import { LocaleContext as r } from "./locale-provider.js";
4
+ let t = !1;
5
+ function i() {
6
+ const o = n(r)?.locale;
7
+ return !o && typeof window < "u" && !t && (t = !0, console.warn(
8
+ `[@web/utils] No <LocaleProvider> found. Defaulting to "${e}".`
9
+ )), o || e;
10
+ }
11
+ export {
12
+ i as useLocale
13
+ };
14
+ //# sourceMappingURL=use-locale.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-locale.js","sources":["../../../../../utils/i18n/helpers/use-locale.ts"],"sourcesContent":["import { useContext } from 'react'\nimport { DEFAULT_LOCALE } from '../constants'\nimport { LocaleContext } from './locale-provider'\nimport type { SupportedLocale } from '../types'\n\nlet hasWarned = false\n\nexport function useLocale(): SupportedLocale {\n\tconst locale = useContext(LocaleContext)?.locale\n\n\tif (!locale && typeof window !== 'undefined' && !hasWarned) {\n\t\thasWarned = true\n\t\tconsole.warn(\n\t\t\t`[@web/utils] No <LocaleProvider> found. Defaulting to \"${DEFAULT_LOCALE}\".`\n\t\t)\n\t}\n\n\treturn locale || DEFAULT_LOCALE\n}\n"],"names":["hasWarned","useLocale","locale","useContext","LocaleContext","DEFAULT_LOCALE"],"mappings":";;;AAKA,IAAIA,IAAY;AAET,SAASC,IAA6B;AAC5C,QAAMC,IAASC,EAAWC,CAAa,GAAG;AAE1C,SAAI,CAACF,KAAU,OAAO,SAAW,OAAe,CAACF,MAChDA,IAAY,IACZ,QAAQ;AAAA,IACP,0DAA0DK,CAAc;AAAA,EAAA,IAInEH,KAAUG;AAClB;"}
@@ -1 +1 @@
1
- export declare const localize: (key: "required" | "optional", locale: import("@web/utils/i18n/types").SupportedLocale, capitalization?: "title" | "none" | "lower" | "sentence" | "upper") => string;
1
+ export declare const localize: (key: "required" | "optional", locale: "id" | "fr" | "en" | "de" | "es" | "ja" | "ko" | "pt", capitalization?: ("title" | "none" | "lower" | "sentence" | "upper") | undefined) => string;
@@ -0,0 +1,41 @@
1
+ import { createLocalize as o } from "./index2.js";
2
+ const r = o({
3
+ de: {
4
+ optional: "optional",
5
+ // "optional" is the same in German
6
+ required: "erforderlich"
7
+ },
8
+ en: {
9
+ optional: "optional",
10
+ required: "required"
11
+ },
12
+ es: {
13
+ optional: "opcional",
14
+ required: "obligatorio"
15
+ },
16
+ fr: {
17
+ optional: "facultatif",
18
+ required: "obligatoire"
19
+ },
20
+ id: {
21
+ // ! TODO Translate text to Indonesian
22
+ optional: "optional",
23
+ required: "required"
24
+ },
25
+ ja: {
26
+ optional: "任意",
27
+ required: "必須"
28
+ },
29
+ ko: {
30
+ optional: "선택 사항",
31
+ required: "필수"
32
+ },
33
+ pt: {
34
+ optional: "opcional",
35
+ required: "obrigatório"
36
+ }
37
+ });
38
+ export {
39
+ r as localize
40
+ };
41
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/utils/i18n/index.ts"],"sourcesContent":["import { createLocalize } from '@web/utils/i18n'\n\nexport const localize = createLocalize({\n\tde: {\n\t\toptional: 'optional', // \"optional\" is the same in German\n\t\trequired: 'erforderlich',\n\t},\n\ten: {\n\t\toptional: 'optional',\n\t\trequired: 'required',\n\t},\n\tes: {\n\t\toptional: 'opcional',\n\t\trequired: 'obligatorio',\n\t},\n\tfr: {\n\t\toptional: 'facultatif',\n\t\trequired: 'obligatoire',\n\t},\n\tid: {\n\t\t// ! TODO Translate text to Indonesian\n\t\toptional: 'optional',\n\t\trequired: 'required',\n\t},\n\tja: {\n\t\toptional: '任意',\n\t\trequired: '必須',\n\t},\n\tko: {\n\t\toptional: '선택 사항',\n\t\trequired: '필수',\n\t},\n\tpt: {\n\t\toptional: 'opcional',\n\t\trequired: 'obrigatório',\n\t},\n})\n"],"names":["localize","createLocalize"],"mappings":";AAEO,MAAMA,IAAWC,EAAe;AAAA,EACtC,IAAI;AAAA,IACH,UAAU;AAAA;AAAA,IACV,UAAU;AAAA,EAAA;AAAA,EAEX,IAAI;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA,EAAA;AAAA,EAEX,IAAI;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA,EAAA;AAAA,EAEX,IAAI;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA,EAAA;AAAA,EAEX,IAAI;AAAA;AAAA,IAEH,UAAU;AAAA,IACV,UAAU;AAAA,EAAA;AAAA,EAEX,IAAI;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA,EAAA;AAAA,EAEX,IAAI;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA,EAAA;AAAA,EAEX,IAAI;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA,EAAA;AAEZ,CAAC;"}
@@ -0,0 +1,33 @@
1
+ import "./helpers/locale-provider.js";
2
+ import { toSmartSentenceCase as p } from "./helpers/to-smart-sentence-case.js";
3
+ import { toSmartTitleCase as f } from "./helpers/to-smart-title-case.js";
4
+ import "react";
5
+ function i(o, u) {
6
+ return u.split(".").reduce((t, r) => {
7
+ if (typeof t == "object" && t !== null && r in t)
8
+ return t[r];
9
+ }, o);
10
+ }
11
+ function w(o, u = "en") {
12
+ return function(r, n, s) {
13
+ const e = i(o[n], r) ?? i(o[u], r);
14
+ if (typeof e != "string") return "";
15
+ switch (s) {
16
+ case "title":
17
+ return f(e, n);
18
+ case "sentence":
19
+ return p(e, n);
20
+ case "upper":
21
+ return e.toLocaleUpperCase(n);
22
+ case "lower":
23
+ return e.toLocaleLowerCase(n);
24
+ case "none":
25
+ default:
26
+ return e;
27
+ }
28
+ };
29
+ }
30
+ export {
31
+ w as createLocalize
32
+ };
33
+ //# sourceMappingURL=index2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index2.js","sources":["../../../../utils/i18n/index.ts"],"sourcesContent":["import { toSmartSentenceCase, toSmartTitleCase } from './helpers'\nimport type { SupportedLocale } from './types'\n\ntype Capitalization = 'none' | 'lower' | 'sentence' | 'title' | 'upper'\n\ntype DotPrefix<T extends string, U extends string> = `${T}.${U}`\n\ntype NestedKeyOf<ObjectType extends object> = {\n\t[K in keyof ObjectType & string]: ObjectType[K] extends object\n\t\t? DotPrefix<K, NestedKeyOf<ObjectType[K]>>\n\t\t: K\n}[keyof ObjectType & string]\n\nfunction getByDotPath<T extends object, P extends string>(\n\tobj: T,\n\tpath: P\n): unknown {\n\treturn path.split('.').reduce((acc: unknown, part) => {\n\t\tif (typeof acc === 'object' && acc !== null && part in acc) {\n\t\t\treturn (acc as Record<string, unknown>)[part]\n\t\t}\n\t\treturn undefined\n\t}, obj)\n}\n\nexport function createLocalize<Messages extends Record<string, unknown>>(\n\tlocalizations: Record<SupportedLocale, Messages>,\n\tfallbackLocale: SupportedLocale = 'en'\n) {\n\ttype Key = NestedKeyOf<Messages>\n\n\treturn function translate(\n\t\tkey: Key,\n\t\tlocale: SupportedLocale,\n\t\tcapitalization?: Capitalization\n\t): string {\n\t\tconst word =\n\t\t\tgetByDotPath(localizations[locale], key) ??\n\t\t\tgetByDotPath(localizations[fallbackLocale], key)\n\n\t\tif (typeof word !== 'string') return ''\n\n\t\tswitch (capitalization) {\n\t\t\tcase 'title':\n\t\t\t\treturn toSmartTitleCase(word, locale)\n\t\t\tcase 'sentence':\n\t\t\t\treturn toSmartSentenceCase(word, locale)\n\t\t\tcase 'upper':\n\t\t\t\treturn word.toLocaleUpperCase(locale)\n\t\t\tcase 'lower':\n\t\t\t\treturn word.toLocaleLowerCase(locale)\n\t\t\tcase 'none':\n\t\t\tdefault:\n\t\t\t\treturn word\n\t\t}\n\t}\n}\n"],"names":["getByDotPath","obj","path","acc","part","createLocalize","localizations","fallbackLocale","key","locale","capitalization","word","toSmartTitleCase","toSmartSentenceCase"],"mappings":";;;;AAaA,SAASA,EACRC,GACAC,GACU;AACV,SAAOA,EAAK,MAAM,GAAG,EAAE,OAAO,CAACC,GAAcC,MAAS;AACrD,QAAI,OAAOD,KAAQ,YAAYA,MAAQ,QAAQC,KAAQD;AACtD,aAAQA,EAAgCC,CAAI;AAAA,EAG9C,GAAGH,CAAG;AACP;AAEO,SAASI,EACfC,GACAC,IAAkC,MACjC;AAGD,SAAO,SACNC,GACAC,GACAC,GACS;AACT,UAAMC,IACLX,EAAaM,EAAcG,CAAM,GAAGD,CAAG,KACvCR,EAAaM,EAAcC,CAAc,GAAGC,CAAG;AAEhD,QAAI,OAAOG,KAAS,SAAU,QAAO;AAErC,YAAQD,GAAA;AAAA,MACP,KAAK;AACJ,eAAOE,EAAiBD,GAAMF,CAAM;AAAA,MACrC,KAAK;AACJ,eAAOI,EAAoBF,GAAMF,CAAM;AAAA,MACxC,KAAK;AACJ,eAAOE,EAAK,kBAAkBF,CAAM;AAAA,MACrC,KAAK;AACJ,eAAOE,EAAK,kBAAkBF,CAAM;AAAA,MACrC,KAAK;AAAA,MACL;AACC,eAAOE;AAAA,IAAA;AAAA,EAEV;AACD;"}
package/utils/index.js CHANGED
@@ -1,10 +1,10 @@
1
- import { u as a, a as r, b as u, c as m } from "../use-screen-size-BOnkX_K-.js";
2
- import { M } from "../index-DBjAbGt7.js";
1
+ import { useLarge as u, useMedium as m, useMediumUp as o, useSmall as s } from "./hooks/use-screen-size.js";
2
+ import { MDSProvider as i } from "./mds-context/index.js";
3
3
  export {
4
- M as MDSProvider,
5
- a as useLarge,
6
- r as useMedium,
7
- u as useMediumUp,
8
- m as useSmall
4
+ i as MDSProvider,
5
+ u as useLarge,
6
+ m as useMedium,
7
+ o as useMediumUp,
8
+ s as useSmall
9
9
  };
10
10
  //# sourceMappingURL=index.js.map
@@ -20,11 +20,11 @@ export declare function makeNormalizer<TAllowed extends readonly string[], TOut
20
20
  export declare function makeNormalizerSet<TOuts extends Record<string, string>>(map: {
21
21
  [K in keyof TOuts]: Normalizer<TOuts[K]>;
22
22
  }): ((input: { [K in keyof TOuts]?: unknown; }, opts?: {
23
- all?: Pick<NormalizerOpts<string>, "transform">;
24
- each?: { [K_1 in keyof TOuts]?: NormalizerOpts<TOuts[K_1]> | undefined; };
25
- }) => { [K_2 in keyof TOuts]: TOuts[K_2]; }) & {
23
+ all?: Pick<NormalizerOpts<string>, "transform"> | undefined;
24
+ each?: { [K_1 in keyof TOuts]?: NormalizerOpts<TOuts[K_1]> | undefined; } | undefined;
25
+ } | undefined) => { [K_2 in keyof TOuts]: TOuts[K_2]; }) & {
26
26
  with(all: Pick<NormalizerOpts<string>, "transform">): (input: { [K in keyof TOuts]?: unknown; }, opts?: {
27
- all?: Pick<NormalizerOpts<string>, "transform">;
28
- each?: { [K_1 in keyof TOuts]?: NormalizerOpts<TOuts[K_1]> | undefined; };
29
- }) => { [K_2 in keyof TOuts]: TOuts[K_2]; };
27
+ all?: Pick<NormalizerOpts<string>, "transform"> | undefined;
28
+ each?: { [K_1 in keyof TOuts]?: NormalizerOpts<TOuts[K_1]> | undefined; } | undefined;
29
+ } | undefined) => { [K_2 in keyof TOuts]: TOuts[K_2]; };
30
30
  };
@@ -0,0 +1,34 @@
1
+ function h(o, s) {
2
+ const a = o, r = s.aliases ?? Object.fromEntries(a.map((t) => [t, t])), c = s.transform ?? ((t) => t.trim().toLowerCase()), n = (t, e) => {
3
+ const i = { ...r, ...e?.aliases ?? {} }, l = e?.fallback ?? s.fallback, k = e?.transform ?? c;
4
+ if (typeof t != "string") return l;
5
+ const f = k(t), u = i[f] ?? f;
6
+ return a.includes(u) ? u : l;
7
+ };
8
+ return n.with = (t) => (e, i) => n(e, { ...t, ...i ?? {} }), n;
9
+ }
10
+ function b(o) {
11
+ const s = (a, r) => {
12
+ const c = {};
13
+ for (const n in o) {
14
+ if (!Object.prototype.hasOwnProperty.call(o, n)) continue;
15
+ const t = n, e = o[t], i = r?.all ? e.with(r.all) : e;
16
+ c[t] = i(a?.[t], r?.each?.[t]);
17
+ }
18
+ return c;
19
+ };
20
+ return s.with = (a) => {
21
+ const r = {};
22
+ for (const c in o) {
23
+ if (!Object.prototype.hasOwnProperty.call(o, c)) continue;
24
+ const n = c;
25
+ r[n] = o[n].with(a);
26
+ }
27
+ return b(r);
28
+ }, s;
29
+ }
30
+ export {
31
+ h as makeNormalizer,
32
+ b as makeNormalizerSet
33
+ };
34
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/utils/make-normalizer/index.tsx"],"sourcesContent":["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"],"names":["makeNormalizer","allowed","defaults","list","defaultAliases","v","defaultTransform","s","core","input","opts","aliases","fallback","transform","candidate","bound","makeNormalizerSet","map","call","out","k","key","n","base","all"],"mappings":"AAWO,SAASA,EAIfC,GACAC,GAKmB;AACnB,QAAMC,IAAOF,GAEPG,IACLF,EAAS,WACR,OAAO,YAAYC,EAAK,IAAI,CAACE,MAAM,CAACA,GAAGA,CAAC,CAAC,CAAC,GAEtCC,IACLJ,EAAS,cAAc,CAACK,MAAcA,EAAE,OAAO,gBAE1CC,IAAQ,CAACC,GAAgBC,MAAsC;AACpE,UAAMC,IAAU,EAAE,GAAGP,GAAgB,GAAIM,GAAM,WAAW,GAAC,GACrDE,IAAWF,GAAM,YAAYR,EAAS,UACtCW,IAAYH,GAAM,aAAaJ;AAErC,QAAI,OAAOG,KAAU,SAAU,QAAOG;AAEtC,UAAML,IAAIM,EAAUJ,CAAK,GACnBK,IAAaH,EAAQJ,CAAC,KAAKA;AACjC,WAAOJ,EAAK,SAASW,CAAS,IAAKA,IAAqBF;AAAA,EACzD;AAEA,SAAAJ,EAAK,OAAO,CAACO,MACX,CAACN,GAAgBC,MACjBF,EAAKC,GAAO,EAAE,GAAGM,GAAO,GAAIL,KAAQ,CAAA,GAAK,GAEpCF;AACR;AAOO,SAASQ,EAAwDC,GAErE;AAOF,QAAMC,IAAQ,CAACT,GAAWC,MAAsC;AAC/D,UAAMS,IAAM,CAAA;AACZ,eAAWC,KAAKH,GAAK;AACpB,UAAI,CAAC,OAAO,UAAU,eAAe,KAAKA,GAAKG,CAAC,EAAG;AACnD,YAAMC,IAAMD,GACNE,IAAIL,EAAII,CAAG,GACXE,IAAOb,GAAM,MAAMY,EAAE,KAAKZ,EAAK,GAAU,IAAIY;AACnD,MAAAH,EAAIE,CAAG,IAAIE,EAAKd,IAAQY,CAAG,GAAGX,GAAM,OAAOW,CAAG,CAAC;AAAA,IAChD;AACA,WAAOF;AAAA,EACR;AAEA,SAAAD,EAAK,OAAO,CAACM,MAAa;AACzB,UAAMT,IAAQ,CAAA;AACd,eAAWK,KAAKH,GAAK;AACpB,UAAI,CAAC,OAAO,UAAU,eAAe,KAAKA,GAAKG,CAAC,EAAG;AACnD,YAAMC,IAAMD;AACZ,MAAAL,EAAMM,CAAG,IAAIJ,EAAII,CAAG,EAAE,KAAKG,CAAU;AAAA,IACtC;AACA,WAAOR,EAAkBD,CAAK;AAAA,EAC/B,GAEOG;AACR;"}
@@ -1,4 +1,4 @@
1
- import { type CSSProperties, type ImgHTMLAttributes, type ComponentType } from 'react';
1
+ import { CSSProperties, ImgHTMLAttributes, ComponentType } from 'react';
2
2
  type FillLayout = {
3
3
  fill: true;
4
4
  /** Strongly recommended when using fill */
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { jsx as n } from "react/jsx-runtime";
2
3
  import { createContext as d, forwardRef as x, useContext as g } from "react";
3
4
  const m = (t) => {
@@ -5,11 +6,11 @@ const m = (t) => {
5
6
  alt: e,
6
7
  src: i,
7
8
  className: o,
8
- style: a,
9
- loading: s,
10
- decoding: c,
11
- fetchPriority: l,
12
- objectFit: u,
9
+ style: c,
10
+ loading: l,
11
+ decoding: s,
12
+ fetchPriority: u,
13
+ objectFit: a,
13
14
  objectPosition: f
14
15
  // Next extras are accepted but ignored by the default renderer
15
16
  } = t;
@@ -19,17 +20,17 @@ const m = (t) => {
19
20
  alt: e,
20
21
  src: i,
21
22
  className: o,
22
- loading: s,
23
- decoding: c,
24
- fetchPriority: l,
23
+ loading: l,
24
+ decoding: s,
25
+ fetchPriority: u,
25
26
  style: {
26
27
  position: "absolute",
27
28
  inset: 0,
28
29
  width: "100%",
29
30
  height: "100%",
30
- objectFit: u ?? "cover",
31
+ objectFit: a ?? "cover",
31
32
  objectPosition: f,
32
- ...a
33
+ ...c
33
34
  }
34
35
  }
35
36
  ) : /* @__PURE__ */ n(
@@ -40,13 +41,13 @@ const m = (t) => {
40
41
  width: t.width,
41
42
  height: t.height,
42
43
  className: o,
43
- loading: s,
44
- decoding: c,
45
- fetchPriority: l,
44
+ loading: l,
45
+ decoding: s,
46
+ fetchPriority: u,
46
47
  style: {
47
- objectFit: u,
48
+ objectFit: a,
48
49
  objectPosition: f,
49
- ...a
50
+ ...c
50
51
  }
51
52
  }
52
53
  );
@@ -77,8 +78,8 @@ function j() {
77
78
  return g(v);
78
79
  }
79
80
  export {
80
- P as M,
81
- b as a,
82
- j as u
81
+ P as MDSProvider,
82
+ b as useMDSImage,
83
+ j as useMDSLink
83
84
  };
84
- //# sourceMappingURL=index-DBjAbGt7.js.map
85
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/utils/mds-context/index.tsx"],"sourcesContent":["'use client'\n\nimport {\n\tcreateContext,\n\tuseContext,\n\tforwardRef,\n\ttype CSSProperties,\n\ttype ImgHTMLAttributes,\n\ttype ComponentType,\n} from 'react'\n\n/* ----------------------------- Image ----------------------------- */\n\ntype FillLayout = {\n\tfill: true\n\t/** Strongly recommended when using fill */\n\tsizes?: string\n}\n\ntype FixedLayout = {\n\twidth: number\n\theight: number\n\tfill?: false\n}\n\n/** Next/Image extras we want to allow on adapters (all optional here) */\ntype NextImageExtras = {\n\tpriority?: boolean\n\tplaceholder?: 'blur' | 'empty'\n\tblurDataURL?: string\n\tquality?: number\n\tunoptimized?: boolean\n\tonLoadingComplete?: (img: HTMLImageElement) => void\n}\n\nexport type MDSImageProps =\n\t// Core, DS-neutral props\n\t({\n\t\talt: string\n\t\t/** DS-neutral; Next adapter may also accept StaticImageData at runtime */\n\t\tsrc: string\n\t\tclassName?: string\n\t\tstyle?: CSSProperties\n\t\tloading?: 'eager' | 'lazy'\n\t\tdecoding?: 'sync' | 'async' | 'auto'\n\t\tfetchPriority?: 'high' | 'low' | 'auto'\n\t\tobjectFit?: string\n\t\tobjectPosition?: string\n\t} & (FillLayout | FixedLayout)) &\n\t\t// Allow common <img> props without clobbering the ones we define\n\t\tOmit<\n\t\t\tImgHTMLAttributes<HTMLImageElement>,\n\t\t\t'src' | 'alt' | 'width' | 'height' | 'loading' | 'decoding'\n\t\t> &\n\t\t// Make Next extras available (adapters can use them; default img ignores)\n\t\tNextImageExtras\n\ntype ImageComponent = ComponentType<MDSImageProps>\n\nconst DefaultImg: ImageComponent = (props) => {\n\tconst {\n\t\talt,\n\t\tsrc,\n\t\tclassName,\n\t\tstyle,\n\t\tloading,\n\t\tdecoding,\n\t\tfetchPriority,\n\t\tobjectFit,\n\t\tobjectPosition,\n\t\t// Next extras are accepted but ignored by the default renderer\n\t} = props\n\n\tif ('fill' in props && props.fill) {\n\t\treturn (\n\t\t\t<img\n\t\t\t\talt={alt}\n\t\t\t\tsrc={src}\n\t\t\t\tclassName={className}\n\t\t\t\tloading={loading}\n\t\t\t\tdecoding={decoding}\n\t\t\t\tfetchPriority={fetchPriority}\n\t\t\t\tstyle={{\n\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\tinset: 0,\n\t\t\t\t\twidth: '100%',\n\t\t\t\t\theight: '100%',\n\t\t\t\t\tobjectFit: (objectFit as CSSProperties['objectFit']) ?? 'cover',\n\t\t\t\t\tobjectPosition,\n\t\t\t\t\t...style,\n\t\t\t\t}}\n\t\t\t/>\n\t\t)\n\t}\n\n\treturn (\n\t\t<img\n\t\t\talt={alt}\n\t\t\tsrc={src}\n\t\t\twidth={props.width}\n\t\t\theight={props.height}\n\t\t\tclassName={className}\n\t\t\tloading={loading}\n\t\t\tdecoding={decoding}\n\t\t\tfetchPriority={fetchPriority}\n\t\t\tstyle={{\n\t\t\t\tobjectFit: objectFit as CSSProperties['objectFit'],\n\t\t\t\tobjectPosition,\n\t\t\t\t...style,\n\t\t\t}}\n\t\t/>\n\t)\n}\n\nconst ImageCtx = createContext<ImageComponent>(DefaultImg)\n\n/* ------------------------------ Link ----------------------------- */\n\n/**\n * Start from all standard <a> props, then refine:\n * - force a typed href\n * - keep children required\n * - keep Next-specific props optional so the default <a> can ignore them\n */\nexport type MDSLinkProps = Omit<\n\tReact.AnchorHTMLAttributes<HTMLAnchorElement>,\n\t'href'\n> & {\n\thref: string | URL\n\ttarget?: React.HTMLAttributeAnchorTarget\n\tonClick?: React.MouseEventHandler<HTMLAnchorElement>\n} & {\n\t// Next.js extras (optional; default <a> ignores them)\n\tprefetch?: boolean\n\treplace?: boolean\n\tscroll?: boolean\n\tshallow?: boolean\n\tlocale?: string | false\n}\n\ntype LinkComponent = React.ForwardRefExoticComponent<\n\tMDSLinkProps & React.RefAttributes<HTMLAnchorElement>\n>\n\nconst DefaultLink: LinkComponent = forwardRef<HTMLAnchorElement, MDSLinkProps>(\n\t({ href, children, ...rest }, ref) => (\n\t\t<a\n\t\t\tref={ref}\n\t\t\thref={typeof href === 'string' ? href : href.toString()}\n\t\t\t{...rest}\n\t\t>\n\t\t\t{children}\n\t\t</a>\n\t)\n)\n\nDefaultLink.displayName = 'DefaultLink'\n\nconst LinkCtx = createContext<LinkComponent>(DefaultLink)\n\n/* ----------------------- Provider + hooks ------------------------ */\n\nexport function MDSProvider({\n\tchildren,\n\timageComponent,\n\tlinkComponent,\n}: {\n\tchildren: React.ReactNode\n\timageComponent?: ImageComponent\n\tlinkComponent?: LinkComponent\n}) {\n\treturn (\n\t\t<ImageCtx.Provider value={imageComponent ?? DefaultImg}>\n\t\t\t<LinkCtx.Provider value={linkComponent ?? DefaultLink}>\n\t\t\t\t{children}\n\t\t\t</LinkCtx.Provider>\n\t\t</ImageCtx.Provider>\n\t)\n}\n\nexport function useMDSImage() {\n\treturn useContext(ImageCtx)\n}\n\nexport function useMDSLink() {\n\treturn useContext(LinkCtx)\n}\n"],"names":["DefaultImg","props","alt","src","className","style","loading","decoding","fetchPriority","objectFit","objectPosition","jsx","ImageCtx","createContext","DefaultLink","href","children","rest","ref","LinkCtx","MDSProvider","imageComponent","linkComponent","useMDSImage","useContext","useMDSLink"],"mappings":";;;AA4DC,MAAAA,IAAM,CAAAC,MAAA;AAAA,QACL;AAAA,IACA,KAAAC;AAAA,IACA,KAAAC;AAAA,IACA,WAAAC;AAAA,IACA,OAAAC;AAAA,IACA,SAAAC;AAAA,IACA,UAAAC;AAAA,IACA,eAAAC;AAAA,IACA,WAAAC;AAAA,IAAA,gBAAAC;AAAA;AAAA,EAID,IAAIT;AACH,0BACC,OAAC,gBAAAU;AAAA,IAAA;AAAA,IAAA;AAAA,MAEA,KAAAT;AAAA,MACA,KAAAC;AAAA,MACA,WAAAC;AAAA,MACA,SAAAE;AAAA,MACA,UAAAC;AAAA,MACA,eAAAC;AAAA,MAAO,OACN;AAAA,QACA,UAAO;AAAA,QACP,OAAO;AAAA,QACP;QACA,QAAA;AAAA,QACA,WAAAC,KAAA;AAAA,QACA,gBAAAC;AAAA,QAAG,GAAAL;AAAA,MACJ;AAAA,IACD;AAAA,EAEF,IAGE,gBAAAM;AAAA,IAAA;AAAA,IAAA;AAAA,MAEA,KAAAT;AAAA,MACA,KAAAC;AAAA,MACA,SAAQ;AAAA,MACR,QAAAF,EAAA;AAAA,MACA,WAAAG;AAAA,MACA,SAAAE;AAAA,MACA,UAAAC;AAAA,MACA,eAAAC;AAAA,MAAO,OACN;AAAA,QACA,WAAAC;AAAA,QACA,gBAAAC;AAAA,QAAG,GAAAL;AAAA,MACJ;AAAA,IACD;AAAA,EAEF;AAEA,GA8BMO,IAAAC,EAA6Bb,CAAA,GAC/Bc;EACF,CAAA,EAAC,MAAAC,GAAA,UAAAC,GAAA,GAAAC,EAAA,GAAAC,MAAA,gBAAAP;AAAA,IAAA;AAAA,IAAA;AAAA,MAEA,KAAAO;AAAA,MACC,MAAG,OAAAH,KAAA,WAAAA,IAAAA,EAAA,SAAA;AAAA,MAEH,GAAAE;AAAA,MAAA,UAAAD;AAAA,IAAA;AAAA,EAGJ;AAEA;AAEAF,EAAM,cAAU;AAIT,MAAAK,MAAqBL,CAAA;AAAA,SAC3BM,EAAA;AAAA,EACA,UAAAJ;AAAA,EACA,gBAAAK;AAAA,EACD,eAAAC;AAKC,GAAA;AAOD,SAAA,gBAAAX,EAAAC,EAAA,UAAA,EAAA,OAAAS,KAAArB,GAAA,UAAA,gBAAAW,EAAAQ,EAAA,UAAA,EAAA,OAAAG,KAAAR,GAAA,UAAAE,EAAA,CAAA,EAAA,CAAA;AAEO;AACN,SAAOO,IAAW;AACnB,SAAAC,EAAAZ,CAAA;AAEO;AACN,SAAOa,IAAW;AACnB,SAAAD,EAAAL,CAAA;;"}