@lidofinance/lido-app-ui 1.5.0 → 1.6.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 (261) hide show
  1. package/dist/cjs/accordion/Accordion.cjs +5 -0
  2. package/dist/cjs/accordion/Accordion.cjs.map +1 -1
  3. package/dist/cjs/badge/Badge.cjs +3 -0
  4. package/dist/cjs/badge/Badge.cjs.map +1 -1
  5. package/dist/cjs/banner/Banner.cjs +6 -0
  6. package/dist/cjs/banner/Banner.cjs.map +1 -1
  7. package/dist/cjs/button/Button.cjs +5 -0
  8. package/dist/cjs/button/Button.cjs.map +1 -1
  9. package/dist/cjs/card/Card.cjs +2 -0
  10. package/dist/cjs/card/Card.cjs.map +1 -1
  11. package/dist/cjs/checkbox/Checkbox.cjs +4 -0
  12. package/dist/cjs/checkbox/Checkbox.cjs.map +1 -1
  13. package/dist/cjs/counter/Counter.cjs +2 -0
  14. package/dist/cjs/counter/Counter.cjs.map +1 -1
  15. package/dist/cjs/data-list/DataList.cjs +5 -1
  16. package/dist/cjs/data-list/DataList.cjs.map +1 -1
  17. package/dist/cjs/data-list/DataListRow.cjs +10 -1
  18. package/dist/cjs/data-list/DataListRow.cjs.map +1 -1
  19. package/dist/cjs/icon-button/IconButton.cjs +3 -0
  20. package/dist/cjs/icon-button/IconButton.cjs.map +1 -1
  21. package/dist/cjs/identicon/Identicon.cjs +8 -2
  22. package/dist/cjs/identicon/Identicon.cjs.map +1 -1
  23. package/dist/cjs/input/Input.cjs +7 -0
  24. package/dist/cjs/input/Input.cjs.map +1 -1
  25. package/dist/cjs/message-box/MessageBox.cjs +5 -0
  26. package/dist/cjs/message-box/MessageBox.cjs.map +1 -1
  27. package/dist/cjs/modal/Modal.cjs +13 -2
  28. package/dist/cjs/modal/Modal.cjs.map +1 -1
  29. package/dist/cjs/notification/Notification.cjs +10 -1
  30. package/dist/cjs/notification/Notification.cjs.map +1 -1
  31. package/dist/cjs/radio-button/RadioButton.cjs +4 -0
  32. package/dist/cjs/radio-button/RadioButton.cjs.map +1 -1
  33. package/dist/cjs/rich-input/RichInput.cjs +9 -0
  34. package/dist/cjs/rich-input/RichInput.cjs.map +1 -1
  35. package/dist/cjs/section-title/SectionTitle.cjs +5 -0
  36. package/dist/cjs/section-title/SectionTitle.cjs.map +1 -1
  37. package/dist/cjs/segmented-control/Segment.cjs +3 -0
  38. package/dist/cjs/segmented-control/Segment.cjs.map +1 -1
  39. package/dist/cjs/segmented-control/SegmentCard.cjs +8 -0
  40. package/dist/cjs/segmented-control/SegmentCard.cjs.map +1 -1
  41. package/dist/cjs/segmented-control/SegmentedControl.cjs +6 -1
  42. package/dist/cjs/segmented-control/SegmentedControl.cjs.map +1 -1
  43. package/dist/cjs/segmented-control/SegmentedControlCard.cjs +6 -1
  44. package/dist/cjs/segmented-control/SegmentedControlCard.cjs.map +1 -1
  45. package/dist/cjs/slider/Slider.cjs +3 -0
  46. package/dist/cjs/slider/Slider.cjs.map +1 -1
  47. package/dist/cjs/small-card/SmallCard.cjs +8 -0
  48. package/dist/cjs/small-card/SmallCard.cjs.map +1 -1
  49. package/dist/cjs/stat-item/StatItem.cjs +8 -0
  50. package/dist/cjs/stat-item/StatItem.cjs.map +1 -1
  51. package/dist/cjs/switch/Switch.cjs +4 -0
  52. package/dist/cjs/switch/Switch.cjs.map +1 -1
  53. package/dist/cjs/tabs/Tab.cjs +2 -0
  54. package/dist/cjs/tabs/Tab.cjs.map +1 -1
  55. package/dist/cjs/tabs/Tabs.cjs +6 -1
  56. package/dist/cjs/tabs/Tabs.cjs.map +1 -1
  57. package/dist/cjs/tag/Tag.cjs +4 -0
  58. package/dist/cjs/tag/Tag.cjs.map +1 -1
  59. package/dist/cjs/text-link/TextLink.cjs +3 -0
  60. package/dist/cjs/text-link/TextLink.cjs.map +1 -1
  61. package/dist/cjs/token-amount/TokenAmount.cjs +8 -2
  62. package/dist/cjs/token-amount/TokenAmount.cjs.map +1 -1
  63. package/dist/cjs/token-selector/TokenSelector.cjs +20 -1
  64. package/dist/cjs/token-selector/TokenSelector.cjs.map +1 -1
  65. package/dist/cjs/tooltip/Tooltip.cjs +3 -0
  66. package/dist/cjs/tooltip/Tooltip.cjs.map +1 -1
  67. package/dist/cjs/tx-status/TxStatus.cjs +9 -1
  68. package/dist/cjs/tx-status/TxStatus.cjs.map +1 -1
  69. package/dist/cjs/typography/Typography.cjs +2 -0
  70. package/dist/cjs/typography/Typography.cjs.map +1 -1
  71. package/dist/esm/accordion/Accordion.mjs +5 -0
  72. package/dist/esm/accordion/Accordion.mjs.map +1 -1
  73. package/dist/esm/badge/Badge.mjs +3 -0
  74. package/dist/esm/badge/Badge.mjs.map +1 -1
  75. package/dist/esm/banner/Banner.mjs +6 -0
  76. package/dist/esm/banner/Banner.mjs.map +1 -1
  77. package/dist/esm/button/Button.mjs +5 -0
  78. package/dist/esm/button/Button.mjs.map +1 -1
  79. package/dist/esm/card/Card.mjs +2 -0
  80. package/dist/esm/card/Card.mjs.map +1 -1
  81. package/dist/esm/checkbox/Checkbox.mjs +4 -0
  82. package/dist/esm/checkbox/Checkbox.mjs.map +1 -1
  83. package/dist/esm/counter/Counter.mjs +2 -0
  84. package/dist/esm/counter/Counter.mjs.map +1 -1
  85. package/dist/esm/data-list/DataList.mjs +5 -1
  86. package/dist/esm/data-list/DataList.mjs.map +1 -1
  87. package/dist/esm/data-list/DataListRow.mjs +10 -1
  88. package/dist/esm/data-list/DataListRow.mjs.map +1 -1
  89. package/dist/esm/icon-button/IconButton.mjs +3 -0
  90. package/dist/esm/icon-button/IconButton.mjs.map +1 -1
  91. package/dist/esm/identicon/Identicon.mjs +8 -2
  92. package/dist/esm/identicon/Identicon.mjs.map +1 -1
  93. package/dist/esm/input/Input.mjs +7 -0
  94. package/dist/esm/input/Input.mjs.map +1 -1
  95. package/dist/esm/message-box/MessageBox.mjs +5 -0
  96. package/dist/esm/message-box/MessageBox.mjs.map +1 -1
  97. package/dist/esm/modal/Modal.mjs +13 -2
  98. package/dist/esm/modal/Modal.mjs.map +1 -1
  99. package/dist/esm/notification/Notification.mjs +10 -1
  100. package/dist/esm/notification/Notification.mjs.map +1 -1
  101. package/dist/esm/radio-button/RadioButton.mjs +4 -0
  102. package/dist/esm/radio-button/RadioButton.mjs.map +1 -1
  103. package/dist/esm/rich-input/RichInput.mjs +9 -0
  104. package/dist/esm/rich-input/RichInput.mjs.map +1 -1
  105. package/dist/esm/section-title/SectionTitle.mjs +5 -0
  106. package/dist/esm/section-title/SectionTitle.mjs.map +1 -1
  107. package/dist/esm/segmented-control/Segment.mjs +3 -0
  108. package/dist/esm/segmented-control/Segment.mjs.map +1 -1
  109. package/dist/esm/segmented-control/SegmentCard.mjs +8 -0
  110. package/dist/esm/segmented-control/SegmentCard.mjs.map +1 -1
  111. package/dist/esm/segmented-control/SegmentedControl.mjs +6 -1
  112. package/dist/esm/segmented-control/SegmentedControl.mjs.map +1 -1
  113. package/dist/esm/segmented-control/SegmentedControlCard.mjs +6 -1
  114. package/dist/esm/segmented-control/SegmentedControlCard.mjs.map +1 -1
  115. package/dist/esm/slider/Slider.mjs +3 -0
  116. package/dist/esm/slider/Slider.mjs.map +1 -1
  117. package/dist/esm/small-card/SmallCard.mjs +8 -0
  118. package/dist/esm/small-card/SmallCard.mjs.map +1 -1
  119. package/dist/esm/stat-item/StatItem.mjs +8 -0
  120. package/dist/esm/stat-item/StatItem.mjs.map +1 -1
  121. package/dist/esm/switch/Switch.mjs +4 -0
  122. package/dist/esm/switch/Switch.mjs.map +1 -1
  123. package/dist/esm/tabs/Tab.mjs +2 -0
  124. package/dist/esm/tabs/Tab.mjs.map +1 -1
  125. package/dist/esm/tabs/Tabs.mjs +6 -1
  126. package/dist/esm/tabs/Tabs.mjs.map +1 -1
  127. package/dist/esm/tag/Tag.mjs +4 -0
  128. package/dist/esm/tag/Tag.mjs.map +1 -1
  129. package/dist/esm/text-link/TextLink.mjs +3 -0
  130. package/dist/esm/text-link/TextLink.mjs.map +1 -1
  131. package/dist/esm/token-amount/TokenAmount.mjs +8 -2
  132. package/dist/esm/token-amount/TokenAmount.mjs.map +1 -1
  133. package/dist/esm/token-selector/TokenSelector.mjs +20 -1
  134. package/dist/esm/token-selector/TokenSelector.mjs.map +1 -1
  135. package/dist/esm/tooltip/Tooltip.mjs +3 -0
  136. package/dist/esm/tooltip/Tooltip.mjs.map +1 -1
  137. package/dist/esm/tx-status/TxStatus.mjs +9 -1
  138. package/dist/esm/tx-status/TxStatus.mjs.map +1 -1
  139. package/dist/esm/typography/Typography.mjs +2 -0
  140. package/dist/esm/typography/Typography.mjs.map +1 -1
  141. package/dist/types/accordion/Accordion.d.ts +8 -1
  142. package/dist/types/accordion/Accordion.d.ts.map +1 -1
  143. package/dist/types/badge/Badge.d.ts +6 -1
  144. package/dist/types/badge/Badge.d.ts.map +1 -1
  145. package/dist/types/badge/index.d.ts +1 -1
  146. package/dist/types/badge/index.d.ts.map +1 -1
  147. package/dist/types/banner/Banner.d.ts +9 -1
  148. package/dist/types/banner/Banner.d.ts.map +1 -1
  149. package/dist/types/button/Button.d.ts +8 -1
  150. package/dist/types/button/Button.d.ts.map +1 -1
  151. package/dist/types/button/index.d.ts +1 -1
  152. package/dist/types/button/index.d.ts.map +1 -1
  153. package/dist/types/card/Card.d.ts +7 -2
  154. package/dist/types/card/Card.d.ts.map +1 -1
  155. package/dist/types/card/index.d.ts +1 -1
  156. package/dist/types/card/index.d.ts.map +1 -1
  157. package/dist/types/checkbox/Checkbox.d.ts +7 -0
  158. package/dist/types/checkbox/Checkbox.d.ts.map +1 -1
  159. package/dist/types/checkbox/index.d.ts +1 -1
  160. package/dist/types/checkbox/index.d.ts.map +1 -1
  161. package/dist/types/counter/Counter.d.ts +5 -1
  162. package/dist/types/counter/Counter.d.ts.map +1 -1
  163. package/dist/types/counter/index.d.ts +1 -1
  164. package/dist/types/counter/index.d.ts.map +1 -1
  165. package/dist/types/data-list/DataList.d.ts +7 -4
  166. package/dist/types/data-list/DataList.d.ts.map +1 -1
  167. package/dist/types/data-list/DataListRow.d.ts +11 -4
  168. package/dist/types/data-list/DataListRow.d.ts.map +1 -1
  169. package/dist/types/data-list/index.d.ts +2 -2
  170. package/dist/types/data-list/index.d.ts.map +1 -1
  171. package/dist/types/icon-button/IconButton.d.ts +6 -1
  172. package/dist/types/icon-button/IconButton.d.ts.map +1 -1
  173. package/dist/types/icon-button/index.d.ts +1 -1
  174. package/dist/types/icon-button/index.d.ts.map +1 -1
  175. package/dist/types/identicon/Identicon.d.ts +11 -3
  176. package/dist/types/identicon/Identicon.d.ts.map +1 -1
  177. package/dist/types/identicon/index.d.ts +1 -1
  178. package/dist/types/identicon/index.d.ts.map +1 -1
  179. package/dist/types/input/Input.d.ts +10 -0
  180. package/dist/types/input/Input.d.ts.map +1 -1
  181. package/dist/types/message-box/MessageBox.d.ts +8 -1
  182. package/dist/types/message-box/MessageBox.d.ts.map +1 -1
  183. package/dist/types/message-box/index.d.ts +1 -1
  184. package/dist/types/message-box/index.d.ts.map +1 -1
  185. package/dist/types/modal/Modal.d.ts +12 -4
  186. package/dist/types/modal/Modal.d.ts.map +1 -1
  187. package/dist/types/modal/index.d.ts +1 -1
  188. package/dist/types/modal/index.d.ts.map +1 -1
  189. package/dist/types/notification/Notification.d.ts +15 -6
  190. package/dist/types/notification/Notification.d.ts.map +1 -1
  191. package/dist/types/notification/index.d.ts +1 -1
  192. package/dist/types/notification/index.d.ts.map +1 -1
  193. package/dist/types/radio-button/RadioButton.d.ts +7 -0
  194. package/dist/types/radio-button/RadioButton.d.ts.map +1 -1
  195. package/dist/types/radio-button/index.d.ts +1 -1
  196. package/dist/types/radio-button/index.d.ts.map +1 -1
  197. package/dist/types/rich-input/RichInput.d.ts +11 -1
  198. package/dist/types/rich-input/RichInput.d.ts.map +1 -1
  199. package/dist/types/rich-input/index.d.ts +1 -1
  200. package/dist/types/rich-input/index.d.ts.map +1 -1
  201. package/dist/types/section-title/SectionTitle.d.ts +8 -1
  202. package/dist/types/section-title/SectionTitle.d.ts.map +1 -1
  203. package/dist/types/section-title/index.d.ts +1 -1
  204. package/dist/types/section-title/index.d.ts.map +1 -1
  205. package/dist/types/segmented-control/Segment.d.ts +6 -0
  206. package/dist/types/segmented-control/Segment.d.ts.map +1 -1
  207. package/dist/types/segmented-control/SegmentCard.d.ts +9 -0
  208. package/dist/types/segmented-control/SegmentCard.d.ts.map +1 -1
  209. package/dist/types/segmented-control/SegmentedControl.d.ts +9 -4
  210. package/dist/types/segmented-control/SegmentedControl.d.ts.map +1 -1
  211. package/dist/types/segmented-control/SegmentedControlCard.d.ts +9 -4
  212. package/dist/types/segmented-control/SegmentedControlCard.d.ts.map +1 -1
  213. package/dist/types/segmented-control/index.d.ts +4 -4
  214. package/dist/types/segmented-control/index.d.ts.map +1 -1
  215. package/dist/types/slider/Slider.d.ts +6 -0
  216. package/dist/types/slider/Slider.d.ts.map +1 -1
  217. package/dist/types/slider/index.d.ts +1 -1
  218. package/dist/types/slider/index.d.ts.map +1 -1
  219. package/dist/types/small-card/SmallCard.d.ts +11 -1
  220. package/dist/types/small-card/SmallCard.d.ts.map +1 -1
  221. package/dist/types/small-card/index.d.ts +1 -1
  222. package/dist/types/small-card/index.d.ts.map +1 -1
  223. package/dist/types/stat-item/StatItem.d.ts +10 -1
  224. package/dist/types/stat-item/StatItem.d.ts.map +1 -1
  225. package/dist/types/stat-item/index.d.ts +1 -1
  226. package/dist/types/stat-item/index.d.ts.map +1 -1
  227. package/dist/types/switch/Switch.d.ts +7 -0
  228. package/dist/types/switch/Switch.d.ts.map +1 -1
  229. package/dist/types/switch/index.d.ts +1 -1
  230. package/dist/types/switch/index.d.ts.map +1 -1
  231. package/dist/types/tabs/Tab.d.ts +5 -0
  232. package/dist/types/tabs/Tab.d.ts.map +1 -1
  233. package/dist/types/tabs/Tabs.d.ts +9 -4
  234. package/dist/types/tabs/Tabs.d.ts.map +1 -1
  235. package/dist/types/tabs/index.d.ts +2 -2
  236. package/dist/types/tabs/index.d.ts.map +1 -1
  237. package/dist/types/tag/Tag.d.ts +7 -1
  238. package/dist/types/tag/Tag.d.ts.map +1 -1
  239. package/dist/types/tag/index.d.ts +1 -1
  240. package/dist/types/tag/index.d.ts.map +1 -1
  241. package/dist/types/text-link/TextLink.d.ts +6 -1
  242. package/dist/types/text-link/TextLink.d.ts.map +1 -1
  243. package/dist/types/text-link/index.d.ts +1 -1
  244. package/dist/types/text-link/index.d.ts.map +1 -1
  245. package/dist/types/token-amount/TokenAmount.d.ts +9 -4
  246. package/dist/types/token-amount/TokenAmount.d.ts.map +1 -1
  247. package/dist/types/token-selector/TokenSelector.d.ts +17 -4
  248. package/dist/types/token-selector/TokenSelector.d.ts.map +1 -1
  249. package/dist/types/token-selector/index.d.ts +1 -1
  250. package/dist/types/token-selector/index.d.ts.map +1 -1
  251. package/dist/types/tooltip/Tooltip.d.ts +6 -1
  252. package/dist/types/tooltip/Tooltip.d.ts.map +1 -1
  253. package/dist/types/tooltip/index.d.ts +1 -1
  254. package/dist/types/tooltip/index.d.ts.map +1 -1
  255. package/dist/types/tx-status/TxStatus.d.ts +11 -4
  256. package/dist/types/tx-status/TxStatus.d.ts.map +1 -1
  257. package/dist/types/tx-status/index.d.ts +1 -1
  258. package/dist/types/tx-status/index.d.ts.map +1 -1
  259. package/dist/types/typography/Typography.d.ts +5 -1
  260. package/dist/types/typography/Typography.d.ts.map +1 -1
  261. package/package.json +1 -1
@@ -9,12 +9,14 @@ const Checkbox = /*#__PURE__*/forwardRef((_ref, ref) => {
9
9
  label,
10
10
  className,
11
11
  disabled,
12
+ dataTestId,
12
13
  ...rest
13
14
  } = _ref;
14
15
  return /*#__PURE__*/jsxs("label", {
15
16
  className: cn(styles.container, className, {
16
17
  [styles.containerDisabled]: disabled
17
18
  }),
19
+ "data-testid": dataTestId?.root,
18
20
  children: [/*#__PURE__*/jsxs("span", {
19
21
  className: styles.control,
20
22
  children: [/*#__PURE__*/jsx("input", {
@@ -22,6 +24,7 @@ const Checkbox = /*#__PURE__*/forwardRef((_ref, ref) => {
22
24
  type: "checkbox",
23
25
  className: styles.input,
24
26
  disabled: disabled,
27
+ "data-testid": dataTestId?.input,
25
28
  ...rest
26
29
  }), /*#__PURE__*/jsx(IconCheck, {
27
30
  className: styles.tick
@@ -30,6 +33,7 @@ const Checkbox = /*#__PURE__*/forwardRef((_ref, ref) => {
30
33
  className: cn(styles.label, {
31
34
  [styles.labelDisabled]: disabled
32
35
  }),
36
+ "data-testid": dataTestId?.label,
33
37
  children: label
34
38
  }) : null]
35
39
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox.mjs","sources":["../../../src/checkbox/Checkbox.tsx"],"sourcesContent":["import { forwardRef, type InputHTMLAttributes, type ReactNode } from 'react'\n\nimport { IconCheck } from '../icons'\nimport cn from 'classnames'\n\nimport styles from './Checkbox.module.css'\n\nexport type CheckboxProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'type'\n> & {\n label?: ReactNode\n}\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n ({ label, className, disabled, ...rest }, ref) => (\n <label\n className={cn(styles.container, className, {\n [styles.containerDisabled]: disabled,\n })}\n >\n <span className={styles.control}>\n <input\n ref={ref}\n type='checkbox'\n className={styles.input}\n disabled={disabled}\n {...rest}\n />\n <IconCheck className={styles.tick} />\n </span>\n {label ? (\n <span\n className={cn(styles.label, { [styles.labelDisabled]: disabled })}\n >\n {label}\n </span>\n ) : null}\n </label>\n ),\n)\n\nCheckbox.displayName = 'Checkbox'\n"],"names":["Checkbox","forwardRef","_ref","ref","label","className","disabled","rest","_jsxs","cn","styles","container","containerDisabled","children","control","_jsx","type","input","IconCheck","tick","labelDisabled","displayName"],"mappings":";;;;;;AAcO,MAAMA,QAAQ,gBAAGC,UAAU,CAChC,CAAAC,IAAA,EAA0CC,GAAG,KAAA;EAAA,IAA5C;IAAEC,KAAK;IAAEC,SAAS;IAAEC,QAAQ;IAAE,GAAGC,IAAAA;AAAK,GAAC,GAAAL,IAAA,CAAA;AAAA,EAAA,oBACtCM,IAAA,CAAA,OAAA,EAAA;IACEH,SAAS,EAAEI,EAAE,CAACC,MAAM,CAACC,SAAS,EAAEN,SAAS,EAAE;MACzC,CAACK,MAAM,CAACE,iBAAiB,GAAGN,QAAAA;AAC9B,KAAC,CAAE;AAAAO,IAAAA,QAAA,gBAEHL,IAAA,CAAA,MAAA,EAAA;MAAMH,SAAS,EAAEK,MAAM,CAACI,OAAQ;AAAAD,MAAAA,QAAA,gBAC9BE,GAAA,CAAA,OAAA,EAAA;AACEZ,QAAAA,GAAG,EAAEA,GAAI;AACTa,QAAAA,IAAI,EAAC,UAAU;QACfX,SAAS,EAAEK,MAAM,CAACO,KAAM;AACxBX,QAAAA,QAAQ,EAAEA,QAAS;QAAA,GACfC,IAAAA;AAAI,OACT,CAAC,eACFQ,GAAA,CAACG,SAAS,EAAA;QAACb,SAAS,EAAEK,MAAM,CAACS,IAAAA;AAAK,OAAE,CAAC,CAAA;AAAA,KACjC,CAAC,EACNf,KAAK,gBACJW,GAAA,CAAA,MAAA,EAAA;AACEV,MAAAA,SAAS,EAAEI,EAAE,CAACC,MAAM,CAACN,KAAK,EAAE;QAAE,CAACM,MAAM,CAACU,aAAa,GAAGd,QAAAA;AAAS,OAAC,CAAE;AAAAO,MAAAA,QAAA,EAEjET,KAAAA;KACG,CAAC,GACL,IAAI,CAAA;AAAA,GACH,CAAC,CAAA;AAAA,CAEZ,EAAC;AAEDJ,QAAQ,CAACqB,WAAW,GAAG,UAAU;;;;"}
1
+ {"version":3,"file":"Checkbox.mjs","sources":["../../../src/checkbox/Checkbox.tsx"],"sourcesContent":["import { forwardRef, type InputHTMLAttributes, type ReactNode } from 'react'\n\nimport { IconCheck } from '../icons'\nimport cn from 'classnames'\n\nimport styles from './Checkbox.module.css'\n\nexport type CheckboxDataTestId = {\n root?: string\n input?: string\n label?: string\n}\n\nexport type CheckboxProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'type'\n> & {\n label?: ReactNode\n dataTestId?: CheckboxDataTestId\n}\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n ({ label, className, disabled, dataTestId, ...rest }, ref) => (\n <label\n className={cn(styles.container, className, {\n [styles.containerDisabled]: disabled,\n })}\n data-testid={dataTestId?.root}\n >\n <span className={styles.control}>\n <input\n ref={ref}\n type='checkbox'\n className={styles.input}\n disabled={disabled}\n data-testid={dataTestId?.input}\n {...rest}\n />\n <IconCheck className={styles.tick} />\n </span>\n {label ? (\n <span\n className={cn(styles.label, { [styles.labelDisabled]: disabled })}\n data-testid={dataTestId?.label}\n >\n {label}\n </span>\n ) : null}\n </label>\n ),\n)\n\nCheckbox.displayName = 'Checkbox'\n"],"names":["Checkbox","forwardRef","_ref","ref","label","className","disabled","dataTestId","rest","_jsxs","cn","styles","container","containerDisabled","root","children","control","_jsx","type","input","IconCheck","tick","labelDisabled","displayName"],"mappings":";;;;;;AAqBO,MAAMA,QAAQ,gBAAGC,UAAU,CAChC,CAAAC,IAAA,EAAsDC,GAAG,KAAA;EAAA,IAAxD;IAAEC,KAAK;IAAEC,SAAS;IAAEC,QAAQ;IAAEC,UAAU;IAAE,GAAGC,IAAAA;AAAK,GAAC,GAAAN,IAAA,CAAA;AAAA,EAAA,oBAClDO,IAAA,CAAA,OAAA,EAAA;IACEJ,SAAS,EAAEK,EAAE,CAACC,MAAM,CAACC,SAAS,EAAEP,SAAS,EAAE;MACzC,CAACM,MAAM,CAACE,iBAAiB,GAAGP,QAAAA;AAC9B,KAAC,CAAE;IACH,aAAaC,EAAAA,UAAU,EAAEO,IAAK;AAAAC,IAAAA,QAAA,gBAE9BN,IAAA,CAAA,MAAA,EAAA;MAAMJ,SAAS,EAAEM,MAAM,CAACK,OAAQ;AAAAD,MAAAA,QAAA,gBAC9BE,GAAA,CAAA,OAAA,EAAA;AACEd,QAAAA,GAAG,EAAEA,GAAI;AACTe,QAAAA,IAAI,EAAC,UAAU;QACfb,SAAS,EAAEM,MAAM,CAACQ,KAAM;AACxBb,QAAAA,QAAQ,EAAEA,QAAS;QACnB,aAAaC,EAAAA,UAAU,EAAEY,KAAM;QAAA,GAC3BX,IAAAA;AAAI,OACT,CAAC,eACFS,GAAA,CAACG,SAAS,EAAA;QAACf,SAAS,EAAEM,MAAM,CAACU,IAAAA;AAAK,OAAE,CAAC,CAAA;AAAA,KACjC,CAAC,EACNjB,KAAK,gBACJa,GAAA,CAAA,MAAA,EAAA;AACEZ,MAAAA,SAAS,EAAEK,EAAE,CAACC,MAAM,CAACP,KAAK,EAAE;QAAE,CAACO,MAAM,CAACW,aAAa,GAAGhB,QAAAA;AAAS,OAAC,CAAE;MAClE,aAAaC,EAAAA,UAAU,EAAEH,KAAM;AAAAW,MAAAA,QAAA,EAE9BX,KAAAA;KACG,CAAC,GACL,IAAI,CAAA;AAAA,GACH,CAAC,CAAA;AAAA,CAEZ,EAAC;AAEDJ,QAAQ,CAACuB,WAAW,GAAG,UAAU;;;;"}
@@ -7,10 +7,12 @@ const Counter = _ref => {
7
7
  variant = 'default',
8
8
  className,
9
9
  children,
10
+ dataTestId,
10
11
  ...rest
11
12
  } = _ref;
12
13
  return /*#__PURE__*/jsx("span", {
13
14
  className: cn(styles.counter, styles[variant], className),
15
+ "data-testid": dataTestId?.root,
14
16
  ...rest,
15
17
  children: children
16
18
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Counter.mjs","sources":["../../../src/counter/Counter.tsx"],"sourcesContent":["import type { HTMLAttributes } from 'react'\n\nimport cn from 'classnames'\n\nimport styles from './Counter.module.css'\n\nexport type CounterVariant =\n | 'default'\n | 'neutral'\n | 'error'\n | 'warning'\n | 'action'\n | 'active'\n\nexport type CounterProps = HTMLAttributes<HTMLSpanElement> & {\n variant?: CounterVariant\n}\n\nexport const Counter = ({\n variant = 'default',\n className,\n children,\n ...rest\n}: CounterProps) => (\n <span className={cn(styles.counter, styles[variant], className)} {...rest}>\n {children}\n </span>\n)\n"],"names":["Counter","_ref","variant","className","children","rest","_jsx","cn","styles","counter"],"mappings":";;;;AAkBO,MAAMA,OAAO,GAAGC,IAAA,IAAA;EAAA,IAAC;AACtBC,IAAAA,OAAO,GAAG,SAAS;IACnBC,SAAS;IACTC,QAAQ;IACR,GAAGC,IAAAA;AACS,GAAC,GAAAJ,IAAA,CAAA;AAAA,EAAA,oBACbK,GAAA,CAAA,MAAA,EAAA;AAAMH,IAAAA,SAAS,EAAEI,EAAE,CAACC,MAAM,CAACC,OAAO,EAAED,MAAM,CAACN,OAAO,CAAC,EAAEC,SAAS,CAAE;AAAA,IAAA,GAAKE,IAAI;AAAAD,IAAAA,QAAA,EACtEA,QAAAA;AAAQ,GACL,CAAC,CAAA;AAAA;;;;"}
1
+ {"version":3,"file":"Counter.mjs","sources":["../../../src/counter/Counter.tsx"],"sourcesContent":["import type { HTMLAttributes } from 'react'\n\nimport cn from 'classnames'\n\nimport styles from './Counter.module.css'\n\nexport type CounterVariant =\n | 'default'\n | 'neutral'\n | 'error'\n | 'warning'\n | 'action'\n | 'active'\n\nexport type CounterDataTestId = {\n root?: string\n}\n\nexport type CounterProps = HTMLAttributes<HTMLSpanElement> & {\n variant?: CounterVariant\n dataTestId?: CounterDataTestId\n}\n\nexport const Counter = ({\n variant = 'default',\n className,\n children,\n dataTestId,\n ...rest\n}: CounterProps) => (\n <span\n className={cn(styles.counter, styles[variant], className)}\n data-testid={dataTestId?.root}\n {...rest}\n >\n {children}\n </span>\n)\n"],"names":["Counter","_ref","variant","className","children","dataTestId","rest","_jsx","cn","styles","counter","root"],"mappings":";;;;AAuBO,MAAMA,OAAO,GAAGC,IAAA,IAAA;EAAA,IAAC;AACtBC,IAAAA,OAAO,GAAG,SAAS;IACnBC,SAAS;IACTC,QAAQ;IACRC,UAAU;IACV,GAAGC,IAAAA;AACS,GAAC,GAAAL,IAAA,CAAA;AAAA,EAAA,oBACbM,GAAA,CAAA,MAAA,EAAA;AACEJ,IAAAA,SAAS,EAAEK,EAAE,CAACC,MAAM,CAACC,OAAO,EAAED,MAAM,CAACP,OAAO,CAAC,EAAEC,SAAS,CAAE;IAC1D,aAAaE,EAAAA,UAAU,EAAEM,IAAK;AAAA,IAAA,GAC1BL,IAAI;AAAAF,IAAAA,QAAA,EAEPA,QAAAA;AAAQ,GACL,CAAC,CAAA;AAAA;;;;"}
@@ -6,10 +6,14 @@ const DataList = _ref => {
6
6
  let {
7
7
  children,
8
8
  className,
9
- divided = false
9
+ divided = false,
10
+ dataTestId,
11
+ ...rest
10
12
  } = _ref;
11
13
  return /*#__PURE__*/jsx("div", {
12
14
  className: cn(styles.card, divided && styles.divided, className),
15
+ "data-testid": dataTestId?.root,
16
+ ...rest,
13
17
  children: children
14
18
  });
15
19
  };
@@ -1 +1 @@
1
- {"version":3,"file":"DataList.mjs","sources":["../../../src/data-list/DataList.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\n\nimport cn from 'classnames'\n\nimport styles from './DataList.module.css'\n\nexport type DataListProps = {\n children: ReactNode\n className?: string\n divided?: boolean\n}\n\nexport const DataList = ({\n children,\n className,\n divided = false,\n}: DataListProps) => (\n <div className={cn(styles.card, divided && styles.divided, className)}>\n {children}\n </div>\n)\n"],"names":["DataList","_ref","children","className","divided","_jsx","cn","styles","card"],"mappings":";;;;AAYO,MAAMA,QAAQ,GAAGC,IAAA,IAAA;EAAA,IAAC;IACvBC,QAAQ;IACRC,SAAS;AACTC,IAAAA,OAAO,GAAG,KAAA;AACG,GAAC,GAAAH,IAAA,CAAA;AAAA,EAAA,oBACdI,GAAA,CAAA,KAAA,EAAA;AAAKF,IAAAA,SAAS,EAAEG,EAAE,CAACC,MAAM,CAACC,IAAI,EAAEJ,OAAO,IAAIG,MAAM,CAACH,OAAO,EAAED,SAAS,CAAE;AAAAD,IAAAA,QAAA,EACnEA,QAAAA;AAAQ,GACN,CAAC,CAAA;AAAA;;;;"}
1
+ {"version":3,"file":"DataList.mjs","sources":["../../../src/data-list/DataList.tsx"],"sourcesContent":["import type { ComponentPropsWithoutRef, ReactNode } from 'react'\n\nimport cn from 'classnames'\n\nimport styles from './DataList.module.css'\n\nexport type DataListDataTestId = {\n root?: string\n}\n\nexport type DataListProps = Omit<\n ComponentPropsWithoutRef<'div'>,\n 'children'\n> & {\n children: ReactNode\n divided?: boolean\n dataTestId?: DataListDataTestId\n}\n\nexport const DataList = ({\n children,\n className,\n divided = false,\n dataTestId,\n ...rest\n}: DataListProps) => (\n <div\n className={cn(styles.card, divided && styles.divided, className)}\n data-testid={dataTestId?.root}\n {...rest}\n >\n {children}\n </div>\n)\n"],"names":["DataList","_ref","children","className","divided","dataTestId","rest","_jsx","cn","styles","card","root"],"mappings":";;;;AAmBO,MAAMA,QAAQ,GAAGC,IAAA,IAAA;EAAA,IAAC;IACvBC,QAAQ;IACRC,SAAS;AACTC,IAAAA,OAAO,GAAG,KAAK;IACfC,UAAU;IACV,GAAGC,IAAAA;AACU,GAAC,GAAAL,IAAA,CAAA;AAAA,EAAA,oBACdM,GAAA,CAAA,KAAA,EAAA;AACEJ,IAAAA,SAAS,EAAEK,EAAE,CAACC,MAAM,CAACC,IAAI,EAAEN,OAAO,IAAIK,MAAM,CAACL,OAAO,EAAED,SAAS,CAAE;IACjE,aAAaE,EAAAA,UAAU,EAAEM,IAAK;AAAA,IAAA,GAC1BL,IAAI;AAAAJ,IAAAA,QAAA,EAEPA,QAAAA;AAAQ,GACN,CAAC,CAAA;AAAA;;;;"}
@@ -14,19 +14,25 @@ const DataListRow = _ref => {
14
14
  infoFaint = false,
15
15
  description,
16
16
  descriptionInfo,
17
- className
17
+ className,
18
+ dataTestId,
19
+ ...rest
18
20
  } = _ref;
19
21
  return /*#__PURE__*/jsxs("div", {
20
22
  className: cn(styles.row, className),
23
+ "data-testid": dataTestId?.root,
24
+ ...rest,
21
25
  children: [/*#__PURE__*/jsxs("span", {
22
26
  className: styles.mainRow,
23
27
  children: [/*#__PURE__*/jsxs("span", {
24
28
  className: styles.labelGroup,
25
29
  children: [icon ? /*#__PURE__*/jsx("span", {
26
30
  className: styles.leadingIcon,
31
+ "data-testid": dataTestId?.icon,
27
32
  children: icon
28
33
  }) : null, /*#__PURE__*/jsx("span", {
29
34
  className: styles.label,
35
+ "data-testid": dataTestId?.label,
30
36
  children: label
31
37
  }), info ? /*#__PURE__*/jsx(Tooltip, {
32
38
  content: info,
@@ -37,6 +43,7 @@ const DataListRow = _ref => {
37
43
  }) : null]
38
44
  }), isChangeValue(value) ? /*#__PURE__*/jsxs("span", {
39
45
  className: styles.value,
46
+ "data-testid": dataTestId?.value,
40
47
  children: [/*#__PURE__*/jsx("span", {
41
48
  className: styles.valueOld,
42
49
  children: value.from
@@ -49,12 +56,14 @@ const DataListRow = _ref => {
49
56
  })]
50
57
  }) : /*#__PURE__*/jsx("span", {
51
58
  className: styles.value,
59
+ "data-testid": dataTestId?.value,
52
60
  children: value
53
61
  })]
54
62
  }), description ? /*#__PURE__*/jsxs("span", {
55
63
  className: styles.descriptionRow,
56
64
  children: [/*#__PURE__*/jsx("span", {
57
65
  className: styles.description,
66
+ "data-testid": dataTestId?.description,
58
67
  children: description
59
68
  }), descriptionInfo ? /*#__PURE__*/jsx(Tooltip, {
60
69
  content: descriptionInfo,
@@ -1 +1 @@
1
- {"version":3,"file":"DataListRow.mjs","sources":["../../../src/data-list/DataListRow.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\n\nimport { IconInfo } from '../icons'\nimport cn from 'classnames'\nimport { Tooltip } from '../tooltip'\n\nimport styles from './DataList.module.css'\n\nexport type DetailRowValue = ReactNode | { from: ReactNode; to: ReactNode }\n\nexport type DetailRowProps = {\n label: ReactNode\n value: DetailRowValue\n icon?: ReactNode\n info?: ReactNode\n infoFaint?: boolean\n description?: ReactNode\n descriptionInfo?: ReactNode\n className?: string\n}\n\nconst isChangeValue = (\n value: DetailRowValue,\n): value is { from: ReactNode; to: ReactNode } =>\n typeof value === 'object' &&\n value !== null &&\n 'from' in value &&\n 'to' in value\n\nexport const DataListRow = ({\n label,\n value,\n icon,\n info,\n infoFaint = false,\n description,\n descriptionInfo,\n className,\n}: DetailRowProps) => (\n <div className={cn(styles.row, className)}>\n <span className={styles.mainRow}>\n <span className={styles.labelGroup}>\n {icon ? <span className={styles.leadingIcon}>{icon}</span> : null}\n <span className={styles.label}>{label}</span>\n {info ? (\n <Tooltip\n content={info}\n className={cn(styles.info, infoFaint && styles.infoFaint)}\n >\n <IconInfo className={styles.infoIcon} />\n </Tooltip>\n ) : null}\n </span>\n {isChangeValue(value) ? (\n <span className={styles.value}>\n <span className={styles.valueOld}>{value.from}</span>\n <span className={styles.valueArrow} aria-hidden='true'>\n →\n </span>\n <span>{value.to}</span>\n </span>\n ) : (\n <span className={styles.value}>{value}</span>\n )}\n </span>\n {description ? (\n <span className={styles.descriptionRow}>\n <span className={styles.description}>{description}</span>\n {descriptionInfo ? (\n <Tooltip content={descriptionInfo} className={styles.info}>\n <IconInfo className={styles.descriptionIcon} />\n </Tooltip>\n ) : null}\n </span>\n ) : null}\n </div>\n)\n"],"names":["isChangeValue","value","DataListRow","_ref","label","icon","info","infoFaint","description","descriptionInfo","className","_jsxs","cn","styles","row","children","mainRow","labelGroup","_jsx","leadingIcon","Tooltip","content","IconInfo","infoIcon","valueOld","from","valueArrow","to","descriptionRow","descriptionIcon"],"mappings":"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"}
1
+ {"version":3,"file":"DataListRow.mjs","sources":["../../../src/data-list/DataListRow.tsx"],"sourcesContent":["import type { ComponentPropsWithoutRef, ReactNode } from 'react'\n\nimport { IconInfo } from '../icons'\nimport cn from 'classnames'\nimport { Tooltip } from '../tooltip'\n\nimport styles from './DataList.module.css'\n\nexport type DetailRowValue = ReactNode | { from: ReactNode; to: ReactNode }\n\nexport type DataListRowDataTestId = {\n root?: string\n label?: string\n value?: string\n icon?: string\n description?: string\n}\n\nexport type DetailRowProps = ComponentPropsWithoutRef<'div'> & {\n label: ReactNode\n value: DetailRowValue\n icon?: ReactNode\n info?: ReactNode\n infoFaint?: boolean\n description?: ReactNode\n descriptionInfo?: ReactNode\n dataTestId?: DataListRowDataTestId\n}\n\nconst isChangeValue = (\n value: DetailRowValue,\n): value is { from: ReactNode; to: ReactNode } =>\n typeof value === 'object' &&\n value !== null &&\n 'from' in value &&\n 'to' in value\n\nexport const DataListRow = ({\n label,\n value,\n icon,\n info,\n infoFaint = false,\n description,\n descriptionInfo,\n className,\n dataTestId,\n ...rest\n}: DetailRowProps) => (\n <div\n className={cn(styles.row, className)}\n data-testid={dataTestId?.root}\n {...rest}\n >\n <span className={styles.mainRow}>\n <span className={styles.labelGroup}>\n {icon ? (\n <span className={styles.leadingIcon} data-testid={dataTestId?.icon}>\n {icon}\n </span>\n ) : null}\n <span className={styles.label} data-testid={dataTestId?.label}>\n {label}\n </span>\n {info ? (\n <Tooltip\n content={info}\n className={cn(styles.info, infoFaint && styles.infoFaint)}\n >\n <IconInfo className={styles.infoIcon} />\n </Tooltip>\n ) : null}\n </span>\n {isChangeValue(value) ? (\n <span className={styles.value} data-testid={dataTestId?.value}>\n <span className={styles.valueOld}>{value.from}</span>\n <span className={styles.valueArrow} aria-hidden='true'>\n →\n </span>\n <span>{value.to}</span>\n </span>\n ) : (\n <span className={styles.value} data-testid={dataTestId?.value}>\n {value}\n </span>\n )}\n </span>\n {description ? (\n <span className={styles.descriptionRow}>\n <span\n className={styles.description}\n data-testid={dataTestId?.description}\n >\n {description}\n </span>\n {descriptionInfo ? (\n <Tooltip content={descriptionInfo} className={styles.info}>\n <IconInfo className={styles.descriptionIcon} />\n </Tooltip>\n ) : null}\n </span>\n ) : null}\n </div>\n)\n"],"names":["isChangeValue","value","DataListRow","_ref","label","icon","info","infoFaint","description","descriptionInfo","className","dataTestId","rest","_jsxs","cn","styles","row","root","children","mainRow","labelGroup","_jsx","leadingIcon","Tooltip","content","IconInfo","infoIcon","valueOld","from","valueArrow","to","descriptionRow","descriptionIcon"],"mappings":"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"}
@@ -11,6 +11,7 @@ const IconButton = _ref => {
11
11
  loading = false,
12
12
  disabled = false,
13
13
  icon,
14
+ dataTestId,
14
15
  ...rest
15
16
  } = _ref;
16
17
  return /*#__PURE__*/jsx("button", {
@@ -18,6 +19,7 @@ const IconButton = _ref => {
18
19
  disabled: disabled || loading,
19
20
  "aria-busy": loading || undefined,
20
21
  className: cn(styles.button, styles[variant], loading && styles.loading, className),
22
+ "data-testid": dataTestId?.root,
21
23
  ...rest,
22
24
  children: loading ? /*#__PURE__*/jsx(IconLoaderCircle, {
23
25
  className: styles.spinner,
@@ -25,6 +27,7 @@ const IconButton = _ref => {
25
27
  }) : /*#__PURE__*/jsx("span", {
26
28
  className: styles.icon,
27
29
  "aria-hidden": "true",
30
+ "data-testid": dataTestId?.icon,
28
31
  children: icon
29
32
  })
30
33
  });
@@ -1 +1 @@
1
- {"version":3,"file":"IconButton.mjs","sources":["../../../src/icon-button/IconButton.tsx"],"sourcesContent":["import type { ButtonHTMLAttributes, ReactNode } from 'react'\n\nimport cn from 'classnames'\n\nimport { IconLoaderCircle } from '../icons'\nimport styles from './IconButton.module.css'\n\nexport type IconButtonVariant = 'outline' | 'ghost'\n\nexport type IconButtonProps = Omit<\n ButtonHTMLAttributes<HTMLButtonElement>,\n 'aria-label'\n> & {\n 'aria-label': string\n icon: ReactNode\n variant?: IconButtonVariant\n loading?: boolean\n}\n\nexport const IconButton = ({\n className,\n type = 'button',\n variant = 'outline',\n loading = false,\n disabled = false,\n icon,\n ...rest\n}: IconButtonProps) => (\n <button\n type={type}\n disabled={disabled || loading}\n aria-busy={loading || undefined}\n className={cn(\n styles.button,\n styles[variant],\n loading && styles.loading,\n className,\n )}\n {...rest}\n >\n {loading ? (\n <IconLoaderCircle className={styles.spinner} aria-hidden='true' />\n ) : (\n <span className={styles.icon} aria-hidden='true'>\n {icon}\n </span>\n )}\n </button>\n)\n"],"names":["IconButton","_ref","className","type","variant","loading","disabled","icon","rest","_jsx","undefined","cn","styles","button","children","IconLoaderCircle","spinner"],"mappings":";;;;;AAmBO,MAAMA,UAAU,GAAGC,IAAA,IAAA;EAAA,IAAC;IACzBC,SAAS;AACTC,IAAAA,IAAI,GAAG,QAAQ;AACfC,IAAAA,OAAO,GAAG,SAAS;AACnBC,IAAAA,OAAO,GAAG,KAAK;AACfC,IAAAA,QAAQ,GAAG,KAAK;IAChBC,IAAI;IACJ,GAAGC,IAAAA;AACY,GAAC,GAAAP,IAAA,CAAA;AAAA,EAAA,oBAChBQ,GAAA,CAAA,QAAA,EAAA;AACEN,IAAAA,IAAI,EAAEA,IAAK;IACXG,QAAQ,EAAEA,QAAQ,IAAID,OAAQ;IAC9B,WAAWA,EAAAA,OAAO,IAAIK,SAAU;AAChCR,IAAAA,SAAS,EAAES,EAAE,CACXC,MAAM,CAACC,MAAM,EACbD,MAAM,CAACR,OAAO,CAAC,EACfC,OAAO,IAAIO,MAAM,CAACP,OAAO,EACzBH,SACF,CAAE;AAAA,IAAA,GACEM,IAAI;AAAAM,IAAAA,QAAA,EAEPT,OAAO,gBACNI,GAAA,CAACM,gBAAgB,EAAA;MAACb,SAAS,EAAEU,MAAM,CAACI,OAAQ;MAAC,aAAY,EAAA,MAAA;KAAQ,CAAC,gBAElEP,GAAA,CAAA,MAAA,EAAA;MAAMP,SAAS,EAAEU,MAAM,CAACL,IAAK;AAAC,MAAA,aAAA,EAAY,MAAM;AAAAO,MAAAA,QAAA,EAC7CP,IAAAA;KACG,CAAA;AACP,GACK,CAAC,CAAA;AAAA;;;;"}
1
+ {"version":3,"file":"IconButton.mjs","sources":["../../../src/icon-button/IconButton.tsx"],"sourcesContent":["import type { ButtonHTMLAttributes, ReactNode } from 'react'\n\nimport cn from 'classnames'\n\nimport { IconLoaderCircle } from '../icons'\nimport styles from './IconButton.module.css'\n\nexport type IconButtonVariant = 'outline' | 'ghost'\n\nexport type IconButtonDataTestId = {\n root?: string\n icon?: string\n}\n\nexport type IconButtonProps = Omit<\n ButtonHTMLAttributes<HTMLButtonElement>,\n 'aria-label'\n> & {\n 'aria-label': string\n icon: ReactNode\n variant?: IconButtonVariant\n loading?: boolean\n dataTestId?: IconButtonDataTestId\n}\n\nexport const IconButton = ({\n className,\n type = 'button',\n variant = 'outline',\n loading = false,\n disabled = false,\n icon,\n dataTestId,\n ...rest\n}: IconButtonProps) => (\n <button\n type={type}\n disabled={disabled || loading}\n aria-busy={loading || undefined}\n className={cn(\n styles.button,\n styles[variant],\n loading && styles.loading,\n className,\n )}\n data-testid={dataTestId?.root}\n {...rest}\n >\n {loading ? (\n <IconLoaderCircle className={styles.spinner} aria-hidden='true' />\n ) : (\n <span\n className={styles.icon}\n aria-hidden='true'\n data-testid={dataTestId?.icon}\n >\n {icon}\n </span>\n )}\n </button>\n)\n"],"names":["IconButton","_ref","className","type","variant","loading","disabled","icon","dataTestId","rest","_jsx","undefined","cn","styles","button","root","children","IconLoaderCircle","spinner"],"mappings":";;;;;AAyBO,MAAMA,UAAU,GAAGC,IAAA,IAAA;EAAA,IAAC;IACzBC,SAAS;AACTC,IAAAA,IAAI,GAAG,QAAQ;AACfC,IAAAA,OAAO,GAAG,SAAS;AACnBC,IAAAA,OAAO,GAAG,KAAK;AACfC,IAAAA,QAAQ,GAAG,KAAK;IAChBC,IAAI;IACJC,UAAU;IACV,GAAGC,IAAAA;AACY,GAAC,GAAAR,IAAA,CAAA;AAAA,EAAA,oBAChBS,GAAA,CAAA,QAAA,EAAA;AACEP,IAAAA,IAAI,EAAEA,IAAK;IACXG,QAAQ,EAAEA,QAAQ,IAAID,OAAQ;IAC9B,WAAWA,EAAAA,OAAO,IAAIM,SAAU;AAChCT,IAAAA,SAAS,EAAEU,EAAE,CACXC,MAAM,CAACC,MAAM,EACbD,MAAM,CAACT,OAAO,CAAC,EACfC,OAAO,IAAIQ,MAAM,CAACR,OAAO,EACzBH,SACF,CAAE;IACF,aAAaM,EAAAA,UAAU,EAAEO,IAAK;AAAA,IAAA,GAC1BN,IAAI;AAAAO,IAAAA,QAAA,EAEPX,OAAO,gBACNK,GAAA,CAACO,gBAAgB,EAAA;MAACf,SAAS,EAAEW,MAAM,CAACK,OAAQ;MAAC,aAAY,EAAA,MAAA;KAAQ,CAAC,gBAElER,GAAA,CAAA,MAAA,EAAA;MACER,SAAS,EAAEW,MAAM,CAACN,IAAK;AACvB,MAAA,aAAA,EAAY,MAAM;MAClB,aAAaC,EAAAA,UAAU,EAAED,IAAK;AAAAS,MAAAA,QAAA,EAE7BT,IAAAA;KACG,CAAA;AACP,GACK,CAAC,CAAA;AAAA;;;;"}
@@ -8,16 +8,22 @@ const Identicon = /*#__PURE__*/forwardRef((_ref, ref) => {
8
8
  let {
9
9
  address,
10
10
  size = 40,
11
- className
11
+ className,
12
+ style,
13
+ dataTestId,
14
+ ...rest
12
15
  } = _ref;
13
16
  return /*#__PURE__*/jsx("span", {
14
17
  ref: ref,
15
18
  className: cn(styles.root, !address && styles.empty, className),
16
19
  style: {
17
20
  width: size,
18
- height: size
21
+ height: size,
22
+ ...style
19
23
  },
20
24
  "aria-hidden": "true",
25
+ "data-testid": dataTestId?.root,
26
+ ...rest,
21
27
  children: address ? /*#__PURE__*/jsx(Jazzicon, {
22
28
  diameter: size,
23
29
  seed: jsNumberForAddress(address)
@@ -1 +1 @@
1
- {"version":3,"file":"Identicon.mjs","sources":["../../../src/identicon/Identicon.tsx"],"sourcesContent":["import { forwardRef } from 'react'\nimport Jazzicon, { jsNumberForAddress } from 'react-jazzicon'\n\nimport cn from 'classnames'\n\nimport styles from './Identicon.module.css'\n\nexport type IdenticonProps = {\n address?: string\n size?: number\n className?: string\n}\n\nexport const Identicon = forwardRef<HTMLSpanElement, IdenticonProps>(\n ({ address, size = 40, className }, ref) => (\n <span\n ref={ref}\n className={cn(styles.root, !address && styles.empty, className)}\n style={{ width: size, height: size }}\n aria-hidden='true'\n >\n {address ? (\n <Jazzicon diameter={size} seed={jsNumberForAddress(address)} />\n ) : null}\n </span>\n ),\n)\n\nIdenticon.displayName = 'Identicon'\n"],"names":["Identicon","forwardRef","_ref","ref","address","size","className","_jsx","cn","styles","root","empty","style","width","height","children","Jazzicon","diameter","seed","jsNumberForAddress","displayName"],"mappings":";;;;;;AAaO,MAAMA,SAAS,gBAAGC,UAAU,CACjC,CAAAC,IAAA,EAAoCC,GAAG,KAAA;EAAA,IAAtC;IAAEC,OAAO;AAAEC,IAAAA,IAAI,GAAG,EAAE;AAAEC,IAAAA,SAAAA;AAAU,GAAC,GAAAJ,IAAA,CAAA;AAAA,EAAA,oBAChCK,GAAA,CAAA,MAAA,EAAA;AACEJ,IAAAA,GAAG,EAAEA,GAAI;AACTG,IAAAA,SAAS,EAAEE,EAAE,CAACC,MAAM,CAACC,IAAI,EAAE,CAACN,OAAO,IAAIK,MAAM,CAACE,KAAK,EAAEL,SAAS,CAAE;AAChEM,IAAAA,KAAK,EAAE;AAAEC,MAAAA,KAAK,EAAER,IAAI;AAAES,MAAAA,MAAM,EAAET,IAAAA;KAAO;AACrC,IAAA,aAAA,EAAY,MAAM;AAAAU,IAAAA,QAAA,EAEjBX,OAAO,gBACNG,GAAA,CAACS,QAAQ,EAAA;AAACC,MAAAA,QAAQ,EAAEZ,IAAK;MAACa,IAAI,EAAEC,kBAAkB,CAACf,OAAO,CAAA;AAAE,KAAE,CAAC,GAC7D,IAAA;AAAI,GACJ,CAAC,CAAA;AAAA,CAEX,EAAC;AAEDJ,SAAS,CAACoB,WAAW,GAAG,WAAW;;;;"}
1
+ {"version":3,"file":"Identicon.mjs","sources":["../../../src/identicon/Identicon.tsx"],"sourcesContent":["import { forwardRef, type ComponentPropsWithoutRef } from 'react'\nimport Jazzicon, { jsNumberForAddress } from 'react-jazzicon'\n\nimport cn from 'classnames'\n\nimport styles from './Identicon.module.css'\n\nexport type IdenticonDataTestId = {\n root?: string\n}\n\nexport type IdenticonProps = ComponentPropsWithoutRef<'span'> & {\n address?: string\n size?: number\n dataTestId?: IdenticonDataTestId\n}\n\nexport const Identicon = forwardRef<HTMLSpanElement, IdenticonProps>(\n ({ address, size = 40, className, style, dataTestId, ...rest }, ref) => (\n <span\n ref={ref}\n className={cn(styles.root, !address && styles.empty, className)}\n style={{ width: size, height: size, ...style }}\n aria-hidden='true'\n data-testid={dataTestId?.root}\n {...rest}\n >\n {address ? (\n <Jazzicon diameter={size} seed={jsNumberForAddress(address)} />\n ) : null}\n </span>\n ),\n)\n\nIdenticon.displayName = 'Identicon'\n"],"names":["Identicon","forwardRef","_ref","ref","address","size","className","style","dataTestId","rest","_jsx","cn","styles","root","empty","width","height","children","Jazzicon","diameter","seed","jsNumberForAddress","displayName"],"mappings":";;;;;;AAiBO,MAAMA,SAAS,gBAAGC,UAAU,CACjC,CAAAC,IAAA,EAAgEC,GAAG,KAAA;EAAA,IAAlE;IAAEC,OAAO;AAAEC,IAAAA,IAAI,GAAG,EAAE;IAAEC,SAAS;IAAEC,KAAK;IAAEC,UAAU;IAAE,GAAGC,IAAAA;AAAK,GAAC,GAAAP,IAAA,CAAA;AAAA,EAAA,oBAC5DQ,GAAA,CAAA,MAAA,EAAA;AACEP,IAAAA,GAAG,EAAEA,GAAI;AACTG,IAAAA,SAAS,EAAEK,EAAE,CAACC,MAAM,CAACC,IAAI,EAAE,CAACT,OAAO,IAAIQ,MAAM,CAACE,KAAK,EAAER,SAAS,CAAE;AAChEC,IAAAA,KAAK,EAAE;AAAEQ,MAAAA,KAAK,EAAEV,IAAI;AAAEW,MAAAA,MAAM,EAAEX,IAAI;MAAE,GAAGE,KAAAA;KAAQ;AAC/C,IAAA,aAAA,EAAY,MAAM;IAClB,aAAaC,EAAAA,UAAU,EAAEK,IAAK;AAAA,IAAA,GAC1BJ,IAAI;AAAAQ,IAAAA,QAAA,EAEPb,OAAO,gBACNM,GAAA,CAACQ,QAAQ,EAAA;AAACC,MAAAA,QAAQ,EAAEd,IAAK;MAACe,IAAI,EAAEC,kBAAkB,CAACjB,OAAO,CAAA;AAAE,KAAE,CAAC,GAC7D,IAAA;AAAI,GACJ,CAAC,CAAA;AAAA,CAEX,EAAC;AAEDJ,SAAS,CAACsB,WAAW,GAAG,WAAW;;;;"}
@@ -16,6 +16,7 @@ const Input = /*#__PURE__*/forwardRef((_ref, ref) => {
16
16
  disabled,
17
17
  className,
18
18
  id,
19
+ dataTestId,
19
20
  ...rest
20
21
  } = _ref;
21
22
  const fallbackId = useId();
@@ -26,11 +27,13 @@ const Input = /*#__PURE__*/forwardRef((_ref, ref) => {
26
27
  const showErrorMessage = errorMessage != null;
27
28
  return /*#__PURE__*/jsxs("div", {
28
29
  className: cn(styles.field, className),
30
+ "data-testid": dataTestId?.root,
29
31
  children: [label != null ? /*#__PURE__*/jsxs("span", {
30
32
  className: styles.labelRow,
31
33
  children: [/*#__PURE__*/jsx("label", {
32
34
  className: styles.label,
33
35
  htmlFor: inputId,
36
+ "data-testid": dataTestId?.label,
34
37
  children: label
35
38
  }), tooltip != null ? /*#__PURE__*/jsx(Tooltip, {
36
39
  content: tooltip,
@@ -47,6 +50,7 @@ const Input = /*#__PURE__*/forwardRef((_ref, ref) => {
47
50
  children: [icon ? /*#__PURE__*/jsx("span", {
48
51
  className: styles.icon,
49
52
  "aria-hidden": "true",
53
+ "data-testid": dataTestId?.icon,
50
54
  children: icon
51
55
  }) : null, /*#__PURE__*/jsx("input", {
52
56
  ref: ref,
@@ -55,15 +59,18 @@ const Input = /*#__PURE__*/forwardRef((_ref, ref) => {
55
59
  disabled: disabled,
56
60
  "aria-invalid": hasError || undefined,
57
61
  "aria-describedby": showErrorMessage ? errorId : undefined,
62
+ "data-testid": dataTestId?.input,
58
63
  ...rest
59
64
  })]
60
65
  }), showErrorMessage ? /*#__PURE__*/jsx("p", {
61
66
  id: errorId,
62
67
  className: styles.errorText,
63
68
  role: "alert",
69
+ "data-testid": dataTestId?.error,
64
70
  children: errorMessage
65
71
  }) : null, description != null ? /*#__PURE__*/jsx("p", {
66
72
  className: styles.description,
73
+ "data-testid": dataTestId?.description,
67
74
  children: description
68
75
  }) : null]
69
76
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Input.mjs","sources":["../../../src/input/Input.tsx"],"sourcesContent":["import {\n forwardRef,\n useId,\n type InputHTMLAttributes,\n type ReactNode,\n} from 'react'\n\nimport cn from 'classnames'\n\nimport { IconInfo } from '../icons'\nimport { Tooltip } from '../tooltip'\nimport styles from './Input.module.css'\n\nexport type InputSize = 'default' | 'small'\n\nexport type InputProps = Omit<InputHTMLAttributes<HTMLInputElement>, 'size'> & {\n size?: InputSize\n icon?: ReactNode\n label?: ReactNode\n tooltip?: ReactNode\n description?: ReactNode\n error?: ReactNode | boolean\n}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n size = 'default',\n icon,\n label,\n tooltip,\n description,\n error,\n disabled,\n className,\n id,\n ...rest\n },\n ref,\n ) => {\n const fallbackId = useId()\n const inputId = id ?? fallbackId\n const errorId = `${inputId}-error`\n\n const hasError = Boolean(error)\n const errorMessage = typeof error === 'boolean' ? null : error\n const showErrorMessage = errorMessage != null\n\n return (\n <div className={cn(styles.field, className)}>\n {label != null ? (\n <span className={styles.labelRow}>\n <label className={styles.label} htmlFor={inputId}>\n {label}\n </label>\n {tooltip != null ? (\n <Tooltip content={tooltip}>\n <IconInfo className={styles.tooltipIcon} aria-hidden='true' />\n </Tooltip>\n ) : null}\n </span>\n ) : null}\n <label\n className={cn(styles.root, styles[size], {\n [styles.error]: hasError,\n [styles.disabled]: disabled,\n })}\n >\n {icon ? (\n <span className={styles.icon} aria-hidden='true'>\n {icon}\n </span>\n ) : null}\n <input\n ref={ref}\n id={inputId}\n className={styles.input}\n disabled={disabled}\n aria-invalid={hasError || undefined}\n aria-describedby={showErrorMessage ? errorId : undefined}\n {...rest}\n />\n </label>\n {showErrorMessage ? (\n <p id={errorId} className={styles.errorText} role='alert'>\n {errorMessage}\n </p>\n ) : null}\n {description != null ? (\n <p className={styles.description}>{description}</p>\n ) : null}\n </div>\n )\n },\n)\n\nInput.displayName = 'Input'\n"],"names":["Input","forwardRef","_ref","ref","size","icon","label","tooltip","description","error","disabled","className","id","rest","fallbackId","useId","inputId","errorId","hasError","Boolean","errorMessage","showErrorMessage","_jsxs","cn","styles","field","children","labelRow","_jsx","htmlFor","Tooltip","content","IconInfo","tooltipIcon","root","input","undefined","errorText","role","displayName"],"mappings":"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"}
1
+ {"version":3,"file":"Input.mjs","sources":["../../../src/input/Input.tsx"],"sourcesContent":["import {\n forwardRef,\n useId,\n type InputHTMLAttributes,\n type ReactNode,\n} from 'react'\n\nimport cn from 'classnames'\n\nimport { IconInfo } from '../icons'\nimport { Tooltip } from '../tooltip'\nimport styles from './Input.module.css'\n\nexport type InputSize = 'default' | 'small'\n\nexport type InputDataTestId = {\n root?: string\n label?: string\n icon?: string\n input?: string\n error?: string\n description?: string\n}\n\nexport type InputProps = Omit<InputHTMLAttributes<HTMLInputElement>, 'size'> & {\n size?: InputSize\n icon?: ReactNode\n label?: ReactNode\n tooltip?: ReactNode\n description?: ReactNode\n error?: ReactNode | boolean\n dataTestId?: InputDataTestId\n}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n size = 'default',\n icon,\n label,\n tooltip,\n description,\n error,\n disabled,\n className,\n id,\n dataTestId,\n ...rest\n },\n ref,\n ) => {\n const fallbackId = useId()\n const inputId = id ?? fallbackId\n const errorId = `${inputId}-error`\n\n const hasError = Boolean(error)\n const errorMessage = typeof error === 'boolean' ? null : error\n const showErrorMessage = errorMessage != null\n\n return (\n <div\n className={cn(styles.field, className)}\n data-testid={dataTestId?.root}\n >\n {label != null ? (\n <span className={styles.labelRow}>\n <label\n className={styles.label}\n htmlFor={inputId}\n data-testid={dataTestId?.label}\n >\n {label}\n </label>\n {tooltip != null ? (\n <Tooltip content={tooltip}>\n <IconInfo className={styles.tooltipIcon} aria-hidden='true' />\n </Tooltip>\n ) : null}\n </span>\n ) : null}\n <label\n className={cn(styles.root, styles[size], {\n [styles.error]: hasError,\n [styles.disabled]: disabled,\n })}\n >\n {icon ? (\n <span\n className={styles.icon}\n aria-hidden='true'\n data-testid={dataTestId?.icon}\n >\n {icon}\n </span>\n ) : null}\n <input\n ref={ref}\n id={inputId}\n className={styles.input}\n disabled={disabled}\n aria-invalid={hasError || undefined}\n aria-describedby={showErrorMessage ? errorId : undefined}\n data-testid={dataTestId?.input}\n {...rest}\n />\n </label>\n {showErrorMessage ? (\n <p\n id={errorId}\n className={styles.errorText}\n role='alert'\n data-testid={dataTestId?.error}\n >\n {errorMessage}\n </p>\n ) : null}\n {description != null ? (\n <p\n className={styles.description}\n data-testid={dataTestId?.description}\n >\n {description}\n </p>\n ) : null}\n </div>\n )\n },\n)\n\nInput.displayName = 'Input'\n"],"names":["Input","forwardRef","_ref","ref","size","icon","label","tooltip","description","error","disabled","className","id","dataTestId","rest","fallbackId","useId","inputId","errorId","hasError","Boolean","errorMessage","showErrorMessage","_jsxs","cn","styles","field","root","children","labelRow","_jsx","htmlFor","Tooltip","content","IconInfo","tooltipIcon","input","undefined","errorText","role","displayName"],"mappings":"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"}
@@ -20,23 +20,28 @@ const MessageBox = _ref => {
20
20
  headline,
21
21
  className,
22
22
  children,
23
+ dataTestId,
23
24
  ...rest
24
25
  } = _ref;
25
26
  const Icon = variantIcons[variant];
26
27
  return /*#__PURE__*/jsxs("div", {
27
28
  className: cn(styles.box, styles[variant], className),
29
+ "data-testid": dataTestId?.root,
28
30
  ...rest,
29
31
  children: [icon ? /*#__PURE__*/jsx("span", {
30
32
  className: styles.icon,
31
33
  "aria-hidden": "true",
34
+ "data-testid": dataTestId?.icon,
32
35
  children: /*#__PURE__*/jsx(Icon, {})
33
36
  }) : null, /*#__PURE__*/jsxs("div", {
34
37
  className: styles.text,
35
38
  children: [headline != null ? /*#__PURE__*/jsx("div", {
36
39
  className: styles.headline,
40
+ "data-testid": dataTestId?.headline,
37
41
  children: headline
38
42
  }) : null, /*#__PURE__*/jsx("div", {
39
43
  className: styles.description,
44
+ "data-testid": dataTestId?.description,
40
45
  children: children
41
46
  })]
42
47
  })]
@@ -1 +1 @@
1
- {"version":3,"file":"MessageBox.mjs","sources":["../../../src/message-box/MessageBox.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from 'react'\n\nimport { IconCheck, IconInfo, IconShield, IconWarning } from '../icons'\nimport cn from 'classnames'\n\nimport styles from './MessageBox.module.css'\n\nexport type MessageBoxVariant =\n | 'default'\n | 'info'\n | 'warning'\n | 'error'\n | 'success'\n\nconst variantIcons = {\n default: IconInfo,\n info: IconShield,\n warning: IconWarning,\n error: IconWarning,\n success: IconCheck,\n}\n\nexport type MessageBoxProps = HTMLAttributes<HTMLDivElement> & {\n variant?: MessageBoxVariant\n icon?: boolean\n headline?: ReactNode\n}\n\nexport const MessageBox = ({\n variant = 'default',\n icon = true,\n headline,\n className,\n children,\n ...rest\n}: MessageBoxProps) => {\n const Icon = variantIcons[variant]\n\n return (\n <div className={cn(styles.box, styles[variant], className)} {...rest}>\n {icon ? (\n <span className={styles.icon} aria-hidden='true'>\n <Icon />\n </span>\n ) : null}\n <div className={styles.text}>\n {headline != null ? (\n <div className={styles.headline}>{headline}</div>\n ) : null}\n <div className={styles.description}>{children}</div>\n </div>\n </div>\n )\n}\n"],"names":["variantIcons","default","IconInfo","info","IconShield","warning","IconWarning","error","success","IconCheck","MessageBox","_ref","variant","icon","headline","className","children","rest","Icon","_jsxs","cn","styles","box","_jsx","text","description"],"mappings":";;;;;;;;AAcA,MAAMA,YAAY,GAAG;AACnBC,EAAAA,OAAO,EAAEC,QAAQ;AACjBC,EAAAA,IAAI,EAAEC,UAAU;AAChBC,EAAAA,OAAO,EAAEC,WAAW;AACpBC,EAAAA,KAAK,EAAED,WAAW;AAClBE,EAAAA,OAAO,EAAEC,SAAAA;AACX,CAAC,CAAA;AAQYC,MAAAA,UAAU,GAAGC,IAAA,IAOH;EAAA,IAPI;AACzBC,IAAAA,OAAO,GAAG,SAAS;AACnBC,IAAAA,IAAI,GAAG,IAAI;IACXC,QAAQ;IACRC,SAAS;IACTC,QAAQ;IACR,GAAGC,IAAAA;AACY,GAAC,GAAAN,IAAA,CAAA;AAChB,EAAA,MAAMO,IAAI,GAAGlB,YAAY,CAACY,OAAO,CAAC,CAAA;AAElC,EAAA,oBACEO,IAAA,CAAA,KAAA,EAAA;AAAKJ,IAAAA,SAAS,EAAEK,EAAE,CAACC,MAAM,CAACC,GAAG,EAAED,MAAM,CAACT,OAAO,CAAC,EAAEG,SAAS,CAAE;AAAA,IAAA,GAAKE,IAAI;IAAAD,QAAA,EAAA,CACjEH,IAAI,gBACHU,GAAA,CAAA,MAAA,EAAA;MAAMR,SAAS,EAAEM,MAAM,CAACR,IAAK;AAAC,MAAA,aAAA,EAAY,MAAM;AAAAG,MAAAA,QAAA,eAC9CO,GAAA,CAACL,IAAI,EAAE,EAAA,CAAA;AAAC,KACJ,CAAC,GACL,IAAI,eACRC,IAAA,CAAA,KAAA,EAAA;MAAKJ,SAAS,EAAEM,MAAM,CAACG,IAAK;AAAAR,MAAAA,QAAA,EACzBF,CAAAA,QAAQ,IAAI,IAAI,gBACfS,GAAA,CAAA,KAAA,EAAA;QAAKR,SAAS,EAAEM,MAAM,CAACP,QAAS;AAAAE,QAAAA,QAAA,EAAEF,QAAAA;AAAQ,OAAM,CAAC,GAC/C,IAAI,eACRS,GAAA,CAAA,KAAA,EAAA;QAAKR,SAAS,EAAEM,MAAM,CAACI,WAAY;AAAAT,QAAAA,QAAA,EAAEA,QAAAA;AAAQ,OAAM,CAAC,CAAA;AAAA,KACjD,CAAC,CAAA;AAAA,GACH,CAAC,CAAA;AAEV;;;;"}
1
+ {"version":3,"file":"MessageBox.mjs","sources":["../../../src/message-box/MessageBox.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from 'react'\n\nimport { IconCheck, IconInfo, IconShield, IconWarning } from '../icons'\nimport cn from 'classnames'\n\nimport styles from './MessageBox.module.css'\n\nexport type MessageBoxVariant =\n | 'default'\n | 'info'\n | 'warning'\n | 'error'\n | 'success'\n\nconst variantIcons = {\n default: IconInfo,\n info: IconShield,\n warning: IconWarning,\n error: IconWarning,\n success: IconCheck,\n}\n\nexport type MessageBoxDataTestId = {\n root?: string\n icon?: string\n headline?: string\n description?: string\n}\n\nexport type MessageBoxProps = HTMLAttributes<HTMLDivElement> & {\n variant?: MessageBoxVariant\n icon?: boolean\n headline?: ReactNode\n dataTestId?: MessageBoxDataTestId\n}\n\nexport const MessageBox = ({\n variant = 'default',\n icon = true,\n headline,\n className,\n children,\n dataTestId,\n ...rest\n}: MessageBoxProps) => {\n const Icon = variantIcons[variant]\n\n return (\n <div\n className={cn(styles.box, styles[variant], className)}\n data-testid={dataTestId?.root}\n {...rest}\n >\n {icon ? (\n <span\n className={styles.icon}\n aria-hidden='true'\n data-testid={dataTestId?.icon}\n >\n <Icon />\n </span>\n ) : null}\n <div className={styles.text}>\n {headline != null ? (\n <div className={styles.headline} data-testid={dataTestId?.headline}>\n {headline}\n </div>\n ) : null}\n <div\n className={styles.description}\n data-testid={dataTestId?.description}\n >\n {children}\n </div>\n </div>\n </div>\n )\n}\n"],"names":["variantIcons","default","IconInfo","info","IconShield","warning","IconWarning","error","success","IconCheck","MessageBox","_ref","variant","icon","headline","className","children","dataTestId","rest","Icon","_jsxs","cn","styles","box","root","_jsx","text","description"],"mappings":";;;;;;;;AAcA,MAAMA,YAAY,GAAG;AACnBC,EAAAA,OAAO,EAAEC,QAAQ;AACjBC,EAAAA,IAAI,EAAEC,UAAU;AAChBC,EAAAA,OAAO,EAAEC,WAAW;AACpBC,EAAAA,KAAK,EAAED,WAAW;AAClBE,EAAAA,OAAO,EAAEC,SAAAA;AACX,CAAC,CAAA;AAgBYC,MAAAA,UAAU,GAAGC,IAAA,IAQH;EAAA,IARI;AACzBC,IAAAA,OAAO,GAAG,SAAS;AACnBC,IAAAA,IAAI,GAAG,IAAI;IACXC,QAAQ;IACRC,SAAS;IACTC,QAAQ;IACRC,UAAU;IACV,GAAGC,IAAAA;AACY,GAAC,GAAAP,IAAA,CAAA;AAChB,EAAA,MAAMQ,IAAI,GAAGnB,YAAY,CAACY,OAAO,CAAC,CAAA;AAElC,EAAA,oBACEQ,IAAA,CAAA,KAAA,EAAA;AACEL,IAAAA,SAAS,EAAEM,EAAE,CAACC,MAAM,CAACC,GAAG,EAAED,MAAM,CAACV,OAAO,CAAC,EAAEG,SAAS,CAAE;IACtD,aAAaE,EAAAA,UAAU,EAAEO,IAAK;AAAA,IAAA,GAC1BN,IAAI;IAAAF,QAAA,EAAA,CAEPH,IAAI,gBACHY,GAAA,CAAA,MAAA,EAAA;MACEV,SAAS,EAAEO,MAAM,CAACT,IAAK;AACvB,MAAA,aAAA,EAAY,MAAM;MAClB,aAAaI,EAAAA,UAAU,EAAEJ,IAAK;AAAAG,MAAAA,QAAA,eAE9BS,GAAA,CAACN,IAAI,EAAE,EAAA,CAAA;AAAC,KACJ,CAAC,GACL,IAAI,eACRC,IAAA,CAAA,KAAA,EAAA;MAAKL,SAAS,EAAEO,MAAM,CAACI,IAAK;AAAAV,MAAAA,QAAA,EACzBF,CAAAA,QAAQ,IAAI,IAAI,gBACfW,GAAA,CAAA,KAAA,EAAA;QAAKV,SAAS,EAAEO,MAAM,CAACR,QAAS;QAAC,aAAaG,EAAAA,UAAU,EAAEH,QAAS;AAAAE,QAAAA,QAAA,EAChEF,QAAAA;AAAQ,OACN,CAAC,GACJ,IAAI,eACRW,GAAA,CAAA,KAAA,EAAA;QACEV,SAAS,EAAEO,MAAM,CAACK,WAAY;QAC9B,aAAaV,EAAAA,UAAU,EAAEU,WAAY;AAAAX,QAAAA,QAAA,EAEpCA,QAAAA;AAAQ,OACN,CAAC,CAAA;AAAA,KACH,CAAC,CAAA;AAAA,GACH,CAAC,CAAA;AAEV;;;;"}
@@ -28,7 +28,9 @@ const Modal = _ref => {
28
28
  withOverlay = false,
29
29
  bodyFill = false,
30
30
  children,
31
- className
31
+ className,
32
+ dataTestId,
33
+ ...rest
32
34
  } = _ref;
33
35
  const titleId = useId();
34
36
  const backdropMouseDown = useRef(false);
@@ -50,6 +52,8 @@ const Modal = _ref => {
50
52
  role: "dialog",
51
53
  "aria-modal": withOverlay || undefined,
52
54
  "aria-labelledby": title ? titleId : undefined,
55
+ "data-testid": dataTestId?.root,
56
+ ...rest,
53
57
  children: [/*#__PURE__*/jsxs("div", {
54
58
  className: styles.headerGroup,
55
59
  children: [/*#__PURE__*/jsxs("div", {
@@ -57,19 +61,25 @@ const Modal = _ref => {
57
61
  children: [/*#__PURE__*/jsx("span", {
58
62
  id: titleId,
59
63
  className: cn(styles.title, !title && styles.titleHidden),
64
+ "data-testid": dataTestId?.title,
60
65
  children: title
61
66
  }), onClose ? /*#__PURE__*/jsx(IconButton, {
62
67
  variant: "outline",
63
68
  "aria-label": "Close",
64
69
  icon: /*#__PURE__*/jsx(IconCross, {}),
65
- onClick: onClose
70
+ onClick: onClose,
71
+ dataTestId: {
72
+ root: dataTestId?.closeButton
73
+ }
66
74
  }) : null]
67
75
  }), subtitle != null ? /*#__PURE__*/jsx("p", {
68
76
  className: styles.subtitle,
77
+ "data-testid": dataTestId?.subtitle,
69
78
  children: subtitle
70
79
  }) : null]
71
80
  }), /*#__PURE__*/jsx("div", {
72
81
  className: styles.body,
82
+ "data-testid": dataTestId?.body,
73
83
  children: children
74
84
  })]
75
85
  });
@@ -84,6 +94,7 @@ const Modal = _ref => {
84
94
  className: styles.overlay,
85
95
  onMouseDown: handleOverlayMouseDown,
86
96
  onClick: handleOverlayClick,
97
+ "data-testid": dataTestId?.overlay,
87
98
  children: card
88
99
  })
89
100
  );
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.mjs","sources":["../../../src/modal/Modal.tsx"],"sourcesContent":["import {\n useEffect,\n useId,\n useRef,\n type MouseEvent,\n type ReactNode,\n} from 'react'\n\nimport { IconButton } from '../icon-button'\nimport { IconCross } from '../icons'\nimport cn from 'classnames'\n\nimport styles from './Modal.module.css'\n\n// Ref-counted so stacked overlays (e.g. connect modal + an action modal) lock on\n// the first and only restore on the last, regardless of close order.\nlet scrollLockCount = 0\nlet restoreOverflow = ''\n\nconst lockBodyScroll = () => {\n if (scrollLockCount === 0) {\n restoreOverflow = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n }\n scrollLockCount += 1\n}\n\nconst unlockBodyScroll = () => {\n scrollLockCount = Math.max(0, scrollLockCount - 1)\n if (scrollLockCount === 0) {\n document.body.style.overflow = restoreOverflow\n }\n}\n\nexport type ModalProps = {\n title?: ReactNode\n subtitle?: ReactNode\n onClose?: () => void\n withOverlay?: boolean\n bodyFill?: boolean\n children: ReactNode\n className?: string\n}\n\nexport const Modal = ({\n title,\n subtitle,\n onClose,\n withOverlay = false,\n bodyFill = false,\n children,\n className,\n}: ModalProps) => {\n const titleId = useId()\n const backdropMouseDown = useRef(false)\n\n useEffect(() => {\n if (!withOverlay) return\n lockBodyScroll()\n return unlockBodyScroll\n }, [withOverlay])\n\n const handleOverlayMouseDown = (event: MouseEvent<HTMLDivElement>) => {\n backdropMouseDown.current = event.target === event.currentTarget\n }\n\n const handleOverlayClick = (event: MouseEvent<HTMLDivElement>) => {\n if (event.target !== event.currentTarget) return\n if (!backdropMouseDown.current) return\n onClose?.()\n }\n\n const card = (\n <div\n className={cn(styles.card, bodyFill && styles.cardBodyFill, className)}\n role='dialog'\n aria-modal={withOverlay || undefined}\n aria-labelledby={title ? titleId : undefined}\n >\n <div className={styles.headerGroup}>\n <div className={styles.header}>\n <span\n id={titleId}\n className={cn(styles.title, !title && styles.titleHidden)}\n >\n {title}\n </span>\n {onClose ? (\n <IconButton\n variant='outline'\n aria-label='Close'\n icon={<IconCross />}\n onClick={onClose}\n />\n ) : null}\n </div>\n {subtitle != null ? (\n <p className={styles.subtitle}>{subtitle}</p>\n ) : null}\n </div>\n <div className={styles.body}>{children}</div>\n </div>\n )\n\n if (!withOverlay) return card\n\n return (\n // The backdrop is a pointer-only affordance — making it focusable would put\n // a stop in the tab order before the dialog. Keyboard users close via the\n // close button.\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions\n <div\n className={styles.overlay}\n onMouseDown={handleOverlayMouseDown}\n onClick={handleOverlayClick}\n >\n {card}\n </div>\n )\n}\n"],"names":["scrollLockCount","restoreOverflow","lockBodyScroll","document","body","style","overflow","unlockBodyScroll","Math","max","Modal","_ref","title","subtitle","onClose","withOverlay","bodyFill","children","className","titleId","useId","backdropMouseDown","useRef","useEffect","handleOverlayMouseDown","event","current","target","currentTarget","handleOverlayClick","card","_jsxs","cn","styles","cardBodyFill","role","undefined","headerGroup","header","_jsx","id","titleHidden","IconButton","variant","icon","IconCross","onClick","overlay","onMouseDown"],"mappings":"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"}
1
+ {"version":3,"file":"Modal.mjs","sources":["../../../src/modal/Modal.tsx"],"sourcesContent":["import {\n useEffect,\n useId,\n useRef,\n type ComponentPropsWithoutRef,\n type MouseEvent,\n type ReactNode,\n} from 'react'\n\nimport { IconButton } from '../icon-button'\nimport { IconCross } from '../icons'\nimport cn from 'classnames'\n\nimport styles from './Modal.module.css'\n\n// Ref-counted so stacked overlays (e.g. connect modal + an action modal) lock on\n// the first and only restore on the last, regardless of close order.\nlet scrollLockCount = 0\nlet restoreOverflow = ''\n\nconst lockBodyScroll = () => {\n if (scrollLockCount === 0) {\n restoreOverflow = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n }\n scrollLockCount += 1\n}\n\nconst unlockBodyScroll = () => {\n scrollLockCount = Math.max(0, scrollLockCount - 1)\n if (scrollLockCount === 0) {\n document.body.style.overflow = restoreOverflow\n }\n}\n\nexport type ModalDataTestId = {\n root?: string\n title?: string\n subtitle?: string\n closeButton?: string\n body?: string\n overlay?: string\n}\n\nexport type ModalProps = Omit<\n ComponentPropsWithoutRef<'div'>,\n 'title' | 'children'\n> & {\n title?: ReactNode\n subtitle?: ReactNode\n onClose?: () => void\n withOverlay?: boolean\n bodyFill?: boolean\n children: ReactNode\n dataTestId?: ModalDataTestId\n}\n\nexport const Modal = ({\n title,\n subtitle,\n onClose,\n withOverlay = false,\n bodyFill = false,\n children,\n className,\n dataTestId,\n ...rest\n}: ModalProps) => {\n const titleId = useId()\n const backdropMouseDown = useRef(false)\n\n useEffect(() => {\n if (!withOverlay) return\n lockBodyScroll()\n return unlockBodyScroll\n }, [withOverlay])\n\n const handleOverlayMouseDown = (event: MouseEvent<HTMLDivElement>) => {\n backdropMouseDown.current = event.target === event.currentTarget\n }\n\n const handleOverlayClick = (event: MouseEvent<HTMLDivElement>) => {\n if (event.target !== event.currentTarget) return\n if (!backdropMouseDown.current) return\n onClose?.()\n }\n\n const card = (\n <div\n className={cn(styles.card, bodyFill && styles.cardBodyFill, className)}\n role='dialog'\n aria-modal={withOverlay || undefined}\n aria-labelledby={title ? titleId : undefined}\n data-testid={dataTestId?.root}\n {...rest}\n >\n <div className={styles.headerGroup}>\n <div className={styles.header}>\n <span\n id={titleId}\n className={cn(styles.title, !title && styles.titleHidden)}\n data-testid={dataTestId?.title}\n >\n {title}\n </span>\n {onClose ? (\n <IconButton\n variant='outline'\n aria-label='Close'\n icon={<IconCross />}\n onClick={onClose}\n dataTestId={{ root: dataTestId?.closeButton }}\n />\n ) : null}\n </div>\n {subtitle != null ? (\n <p className={styles.subtitle} data-testid={dataTestId?.subtitle}>\n {subtitle}\n </p>\n ) : null}\n </div>\n <div className={styles.body} data-testid={dataTestId?.body}>\n {children}\n </div>\n </div>\n )\n\n if (!withOverlay) return card\n\n return (\n // The backdrop is a pointer-only affordance — making it focusable would put\n // a stop in the tab order before the dialog. Keyboard users close via the\n // close button.\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions\n <div\n className={styles.overlay}\n onMouseDown={handleOverlayMouseDown}\n onClick={handleOverlayClick}\n data-testid={dataTestId?.overlay}\n >\n {card}\n </div>\n )\n}\n"],"names":["scrollLockCount","restoreOverflow","lockBodyScroll","document","body","style","overflow","unlockBodyScroll","Math","max","Modal","_ref","title","subtitle","onClose","withOverlay","bodyFill","children","className","dataTestId","rest","titleId","useId","backdropMouseDown","useRef","useEffect","handleOverlayMouseDown","event","current","target","currentTarget","handleOverlayClick","card","_jsxs","cn","styles","cardBodyFill","role","undefined","root","headerGroup","header","_jsx","id","titleHidden","IconButton","variant","icon","IconCross","onClick","closeButton","overlay","onMouseDown"],"mappings":"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"}
@@ -7,22 +7,29 @@ const Notification = _ref => {
7
7
  title,
8
8
  children,
9
9
  actions,
10
- className
10
+ className,
11
+ dataTestId,
12
+ ...rest
11
13
  } = _ref;
12
14
  return /*#__PURE__*/jsxs("div", {
13
15
  className: cn(styles.notification, className),
14
16
  role: "alert",
17
+ "data-testid": dataTestId?.root,
18
+ ...rest,
15
19
  children: [/*#__PURE__*/jsxs("div", {
16
20
  className: styles.content,
17
21
  children: [/*#__PURE__*/jsx("p", {
18
22
  className: styles.title,
23
+ "data-testid": dataTestId?.title,
19
24
  children: title
20
25
  }), children != null ? /*#__PURE__*/jsx("div", {
21
26
  className: styles.body,
27
+ "data-testid": dataTestId?.body,
22
28
  children: children
23
29
  }) : null]
24
30
  }), actions != null ? /*#__PURE__*/jsx("div", {
25
31
  className: styles.actions,
32
+ "data-testid": dataTestId?.actions,
26
33
  children: actions
27
34
  }) : null]
28
35
  });
@@ -32,11 +39,13 @@ const NotificationButton = _ref2 => {
32
39
  variant = 'primary',
33
40
  className,
34
41
  type = 'button',
42
+ dataTestId,
35
43
  ...rest
36
44
  } = _ref2;
37
45
  return /*#__PURE__*/jsx("button", {
38
46
  type: type,
39
47
  className: cn(styles.button, styles[variant], className),
48
+ "data-testid": dataTestId?.root,
40
49
  ...rest
41
50
  });
42
51
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Notification.mjs","sources":["../../../src/notification/Notification.tsx"],"sourcesContent":["import type { ButtonHTMLAttributes, ReactNode } from 'react'\n\nimport cn from 'classnames'\n\nimport styles from './Notification.module.css'\n\nexport type NotificationProps = {\n title: ReactNode\n children?: ReactNode\n actions?: ReactNode\n className?: string\n}\n\nexport const Notification = ({\n title,\n children,\n actions,\n className,\n}: NotificationProps) => (\n <div className={cn(styles.notification, className)} role='alert'>\n <div className={styles.content}>\n <p className={styles.title}>{title}</p>\n {children != null ? <div className={styles.body}>{children}</div> : null}\n </div>\n {actions != null ? <div className={styles.actions}>{actions}</div> : null}\n </div>\n)\n\nexport type NotificationButtonVariant = 'primary' | 'secondary'\n\nexport type NotificationButtonProps =\n ButtonHTMLAttributes<HTMLButtonElement> & {\n variant?: NotificationButtonVariant\n }\n\nexport const NotificationButton = ({\n variant = 'primary',\n className,\n type = 'button',\n ...rest\n}: NotificationButtonProps) => (\n <button\n type={type}\n className={cn(styles.button, styles[variant], className)}\n {...rest}\n />\n)\n"],"names":["Notification","_ref","title","children","actions","className","_jsxs","cn","styles","notification","role","content","_jsx","body","NotificationButton","_ref2","variant","type","rest","button"],"mappings":";;;;AAaO,MAAMA,YAAY,GAAGC,IAAA,IAAA;EAAA,IAAC;IAC3BC,KAAK;IACLC,QAAQ;IACRC,OAAO;AACPC,IAAAA,SAAAA;AACiB,GAAC,GAAAJ,IAAA,CAAA;AAAA,EAAA,oBAClBK,IAAA,CAAA,KAAA,EAAA;IAAKD,SAAS,EAAEE,EAAE,CAACC,MAAM,CAACC,YAAY,EAAEJ,SAAS,CAAE;AAACK,IAAAA,IAAI,EAAC,OAAO;AAAAP,IAAAA,QAAA,gBAC9DG,IAAA,CAAA,KAAA,EAAA;MAAKD,SAAS,EAAEG,MAAM,CAACG,OAAQ;AAAAR,MAAAA,QAAA,gBAC7BS,GAAA,CAAA,GAAA,EAAA;QAAGP,SAAS,EAAEG,MAAM,CAACN,KAAM;AAAAC,QAAAA,QAAA,EAAED,KAAAA;AAAK,OAAI,CAAC,EACtCC,QAAQ,IAAI,IAAI,gBAAGS,GAAA,CAAA,KAAA,EAAA;QAAKP,SAAS,EAAEG,MAAM,CAACK,IAAK;AAAAV,QAAAA,QAAA,EAAEA,QAAAA;OAAc,CAAC,GAAG,IAAI,CAAA;AAAA,KACrE,CAAC,EACLC,OAAO,IAAI,IAAI,gBAAGQ,GAAA,CAAA,KAAA,EAAA;MAAKP,SAAS,EAAEG,MAAM,CAACJ,OAAQ;AAAAD,MAAAA,QAAA,EAAEC,OAAAA;KAAa,CAAC,GAAG,IAAI,CAAA;AAAA,GACtE,CAAC,CAAA;AAAA,EACP;AASM,MAAMU,kBAAkB,GAAGC,KAAA,IAAA;EAAA,IAAC;AACjCC,IAAAA,OAAO,GAAG,SAAS;IACnBX,SAAS;AACTY,IAAAA,IAAI,GAAG,QAAQ;IACf,GAAGC,IAAAA;AACoB,GAAC,GAAAH,KAAA,CAAA;AAAA,EAAA,oBACxBH,GAAA,CAAA,QAAA,EAAA;AACEK,IAAAA,IAAI,EAAEA,IAAK;AACXZ,IAAAA,SAAS,EAAEE,EAAE,CAACC,MAAM,CAACW,MAAM,EAAEX,MAAM,CAACQ,OAAO,CAAC,EAAEX,SAAS,CAAE;IAAA,GACrDa,IAAAA;AAAI,GACT,CAAC,CAAA;AAAA;;;;"}
1
+ {"version":3,"file":"Notification.mjs","sources":["../../../src/notification/Notification.tsx"],"sourcesContent":["import type {\n ButtonHTMLAttributes,\n ComponentPropsWithoutRef,\n ReactNode,\n} from 'react'\n\nimport cn from 'classnames'\n\nimport styles from './Notification.module.css'\n\nexport type NotificationDataTestId = {\n root?: string\n title?: string\n body?: string\n actions?: string\n}\n\nexport type NotificationProps = Omit<\n ComponentPropsWithoutRef<'div'>,\n 'title'\n> & {\n title: ReactNode\n actions?: ReactNode\n dataTestId?: NotificationDataTestId\n}\n\nexport const Notification = ({\n title,\n children,\n actions,\n className,\n dataTestId,\n ...rest\n}: NotificationProps) => (\n <div\n className={cn(styles.notification, className)}\n role='alert'\n data-testid={dataTestId?.root}\n {...rest}\n >\n <div className={styles.content}>\n <p className={styles.title} data-testid={dataTestId?.title}>\n {title}\n </p>\n {children != null ? (\n <div className={styles.body} data-testid={dataTestId?.body}>\n {children}\n </div>\n ) : null}\n </div>\n {actions != null ? (\n <div className={styles.actions} data-testid={dataTestId?.actions}>\n {actions}\n </div>\n ) : null}\n </div>\n)\n\nexport type NotificationButtonVariant = 'primary' | 'secondary'\n\nexport type NotificationButtonDataTestId = {\n root?: string\n}\n\nexport type NotificationButtonProps =\n ButtonHTMLAttributes<HTMLButtonElement> & {\n variant?: NotificationButtonVariant\n dataTestId?: NotificationButtonDataTestId\n }\n\nexport const NotificationButton = ({\n variant = 'primary',\n className,\n type = 'button',\n dataTestId,\n ...rest\n}: NotificationButtonProps) => (\n <button\n type={type}\n className={cn(styles.button, styles[variant], className)}\n data-testid={dataTestId?.root}\n {...rest}\n />\n)\n"],"names":["Notification","_ref","title","children","actions","className","dataTestId","rest","_jsxs","cn","styles","notification","role","root","content","_jsx","body","NotificationButton","_ref2","variant","type","button"],"mappings":";;;;AA0BO,MAAMA,YAAY,GAAGC,IAAA,IAAA;EAAA,IAAC;IAC3BC,KAAK;IACLC,QAAQ;IACRC,OAAO;IACPC,SAAS;IACTC,UAAU;IACV,GAAGC,IAAAA;AACc,GAAC,GAAAN,IAAA,CAAA;AAAA,EAAA,oBAClBO,IAAA,CAAA,KAAA,EAAA;IACEH,SAAS,EAAEI,EAAE,CAACC,MAAM,CAACC,YAAY,EAAEN,SAAS,CAAE;AAC9CO,IAAAA,IAAI,EAAC,OAAO;IACZ,aAAaN,EAAAA,UAAU,EAAEO,IAAK;AAAA,IAAA,GAC1BN,IAAI;AAAAJ,IAAAA,QAAA,gBAERK,IAAA,CAAA,KAAA,EAAA;MAAKH,SAAS,EAAEK,MAAM,CAACI,OAAQ;AAAAX,MAAAA,QAAA,gBAC7BY,GAAA,CAAA,GAAA,EAAA;QAAGV,SAAS,EAAEK,MAAM,CAACR,KAAM;QAAC,aAAaI,EAAAA,UAAU,EAAEJ,KAAM;AAAAC,QAAAA,QAAA,EACxDD,KAAAA;AAAK,OACL,CAAC,EACHC,QAAQ,IAAI,IAAI,gBACfY,GAAA,CAAA,KAAA,EAAA;QAAKV,SAAS,EAAEK,MAAM,CAACM,IAAK;QAAC,aAAaV,EAAAA,UAAU,EAAEU,IAAK;AAAAb,QAAAA,QAAA,EACxDA,QAAAA;OACE,CAAC,GACJ,IAAI,CAAA;AAAA,KACL,CAAC,EACLC,OAAO,IAAI,IAAI,gBACdW,GAAA,CAAA,KAAA,EAAA;MAAKV,SAAS,EAAEK,MAAM,CAACN,OAAQ;MAAC,aAAaE,EAAAA,UAAU,EAAEF,OAAQ;AAAAD,MAAAA,QAAA,EAC9DC,OAAAA;KACE,CAAC,GACJ,IAAI,CAAA;AAAA,GACL,CAAC,CAAA;AAAA,EACP;AAcM,MAAMa,kBAAkB,GAAGC,KAAA,IAAA;EAAA,IAAC;AACjCC,IAAAA,OAAO,GAAG,SAAS;IACnBd,SAAS;AACTe,IAAAA,IAAI,GAAG,QAAQ;IACfd,UAAU;IACV,GAAGC,IAAAA;AACoB,GAAC,GAAAW,KAAA,CAAA;AAAA,EAAA,oBACxBH,GAAA,CAAA,QAAA,EAAA;AACEK,IAAAA,IAAI,EAAEA,IAAK;AACXf,IAAAA,SAAS,EAAEI,EAAE,CAACC,MAAM,CAACW,MAAM,EAAEX,MAAM,CAACS,OAAO,CAAC,EAAEd,SAAS,CAAE;IACzD,aAAaC,EAAAA,UAAU,EAAEO,IAAK;IAAA,GAC1BN,IAAAA;AAAI,GACT,CAAC,CAAA;AAAA;;;;"}
@@ -8,12 +8,14 @@ const RadioButton = /*#__PURE__*/forwardRef((_ref, ref) => {
8
8
  label,
9
9
  className,
10
10
  disabled,
11
+ dataTestId,
11
12
  ...rest
12
13
  } = _ref;
13
14
  return /*#__PURE__*/jsxs("label", {
14
15
  className: cn(styles.container, className, {
15
16
  [styles.containerDisabled]: disabled
16
17
  }),
18
+ "data-testid": dataTestId?.root,
17
19
  children: [/*#__PURE__*/jsxs("span", {
18
20
  className: styles.control,
19
21
  children: [/*#__PURE__*/jsx("input", {
@@ -21,6 +23,7 @@ const RadioButton = /*#__PURE__*/forwardRef((_ref, ref) => {
21
23
  type: "radio",
22
24
  className: styles.input,
23
25
  disabled: disabled,
26
+ "data-testid": dataTestId?.input,
24
27
  ...rest
25
28
  }), /*#__PURE__*/jsx("span", {
26
29
  className: styles.dot
@@ -29,6 +32,7 @@ const RadioButton = /*#__PURE__*/forwardRef((_ref, ref) => {
29
32
  className: cn(styles.label, {
30
33
  [styles.labelDisabled]: disabled
31
34
  }),
35
+ "data-testid": dataTestId?.label,
32
36
  children: label
33
37
  }) : null]
34
38
  });
@@ -1 +1 @@
1
- {"version":3,"file":"RadioButton.mjs","sources":["../../../src/radio-button/RadioButton.tsx"],"sourcesContent":["import { forwardRef, type InputHTMLAttributes, type ReactNode } from 'react'\n\nimport cn from 'classnames'\n\nimport styles from './RadioButton.module.css'\n\nexport type RadioButtonProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'type'\n> & {\n label?: ReactNode\n}\n\nexport const RadioButton = forwardRef<HTMLInputElement, RadioButtonProps>(\n ({ label, className, disabled, ...rest }, ref) => (\n <label\n className={cn(styles.container, className, {\n [styles.containerDisabled]: disabled,\n })}\n >\n <span className={styles.control}>\n <input\n ref={ref}\n type='radio'\n className={styles.input}\n disabled={disabled}\n {...rest}\n />\n <span className={styles.dot} />\n </span>\n {label ? (\n <span\n className={cn(styles.label, { [styles.labelDisabled]: disabled })}\n >\n {label}\n </span>\n ) : null}\n </label>\n ),\n)\n\nRadioButton.displayName = 'RadioButton'\n"],"names":["RadioButton","forwardRef","_ref","ref","label","className","disabled","rest","_jsxs","cn","styles","container","containerDisabled","children","control","_jsx","type","input","dot","labelDisabled","displayName"],"mappings":";;;;;AAaO,MAAMA,WAAW,gBAAGC,UAAU,CACnC,CAAAC,IAAA,EAA0CC,GAAG,KAAA;EAAA,IAA5C;IAAEC,KAAK;IAAEC,SAAS;IAAEC,QAAQ;IAAE,GAAGC,IAAAA;AAAK,GAAC,GAAAL,IAAA,CAAA;AAAA,EAAA,oBACtCM,IAAA,CAAA,OAAA,EAAA;IACEH,SAAS,EAAEI,EAAE,CAACC,MAAM,CAACC,SAAS,EAAEN,SAAS,EAAE;MACzC,CAACK,MAAM,CAACE,iBAAiB,GAAGN,QAAAA;AAC9B,KAAC,CAAE;AAAAO,IAAAA,QAAA,gBAEHL,IAAA,CAAA,MAAA,EAAA;MAAMH,SAAS,EAAEK,MAAM,CAACI,OAAQ;AAAAD,MAAAA,QAAA,gBAC9BE,GAAA,CAAA,OAAA,EAAA;AACEZ,QAAAA,GAAG,EAAEA,GAAI;AACTa,QAAAA,IAAI,EAAC,OAAO;QACZX,SAAS,EAAEK,MAAM,CAACO,KAAM;AACxBX,QAAAA,QAAQ,EAAEA,QAAS;QAAA,GACfC,IAAAA;OACL,CAAC,eACFQ,GAAA,CAAA,MAAA,EAAA;QAAMV,SAAS,EAAEK,MAAM,CAACQ,GAAAA;AAAI,OAAE,CAAC,CAAA;AAAA,KAC3B,CAAC,EACNd,KAAK,gBACJW,GAAA,CAAA,MAAA,EAAA;AACEV,MAAAA,SAAS,EAAEI,EAAE,CAACC,MAAM,CAACN,KAAK,EAAE;QAAE,CAACM,MAAM,CAACS,aAAa,GAAGb,QAAAA;AAAS,OAAC,CAAE;AAAAO,MAAAA,QAAA,EAEjET,KAAAA;KACG,CAAC,GACL,IAAI,CAAA;AAAA,GACH,CAAC,CAAA;AAAA,CAEZ,EAAC;AAEDJ,WAAW,CAACoB,WAAW,GAAG,aAAa;;;;"}
1
+ {"version":3,"file":"RadioButton.mjs","sources":["../../../src/radio-button/RadioButton.tsx"],"sourcesContent":["import { forwardRef, type InputHTMLAttributes, type ReactNode } from 'react'\n\nimport cn from 'classnames'\n\nimport styles from './RadioButton.module.css'\n\nexport type RadioButtonDataTestId = {\n root?: string\n input?: string\n label?: string\n}\n\nexport type RadioButtonProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'type'\n> & {\n label?: ReactNode\n dataTestId?: RadioButtonDataTestId\n}\n\nexport const RadioButton = forwardRef<HTMLInputElement, RadioButtonProps>(\n ({ label, className, disabled, dataTestId, ...rest }, ref) => (\n <label\n className={cn(styles.container, className, {\n [styles.containerDisabled]: disabled,\n })}\n data-testid={dataTestId?.root}\n >\n <span className={styles.control}>\n <input\n ref={ref}\n type='radio'\n className={styles.input}\n disabled={disabled}\n data-testid={dataTestId?.input}\n {...rest}\n />\n <span className={styles.dot} />\n </span>\n {label ? (\n <span\n className={cn(styles.label, { [styles.labelDisabled]: disabled })}\n data-testid={dataTestId?.label}\n >\n {label}\n </span>\n ) : null}\n </label>\n ),\n)\n\nRadioButton.displayName = 'RadioButton'\n"],"names":["RadioButton","forwardRef","_ref","ref","label","className","disabled","dataTestId","rest","_jsxs","cn","styles","container","containerDisabled","root","children","control","_jsx","type","input","dot","labelDisabled","displayName"],"mappings":";;;;;AAoBO,MAAMA,WAAW,gBAAGC,UAAU,CACnC,CAAAC,IAAA,EAAsDC,GAAG,KAAA;EAAA,IAAxD;IAAEC,KAAK;IAAEC,SAAS;IAAEC,QAAQ;IAAEC,UAAU;IAAE,GAAGC,IAAAA;AAAK,GAAC,GAAAN,IAAA,CAAA;AAAA,EAAA,oBAClDO,IAAA,CAAA,OAAA,EAAA;IACEJ,SAAS,EAAEK,EAAE,CAACC,MAAM,CAACC,SAAS,EAAEP,SAAS,EAAE;MACzC,CAACM,MAAM,CAACE,iBAAiB,GAAGP,QAAAA;AAC9B,KAAC,CAAE;IACH,aAAaC,EAAAA,UAAU,EAAEO,IAAK;AAAAC,IAAAA,QAAA,gBAE9BN,IAAA,CAAA,MAAA,EAAA;MAAMJ,SAAS,EAAEM,MAAM,CAACK,OAAQ;AAAAD,MAAAA,QAAA,gBAC9BE,GAAA,CAAA,OAAA,EAAA;AACEd,QAAAA,GAAG,EAAEA,GAAI;AACTe,QAAAA,IAAI,EAAC,OAAO;QACZb,SAAS,EAAEM,MAAM,CAACQ,KAAM;AACxBb,QAAAA,QAAQ,EAAEA,QAAS;QACnB,aAAaC,EAAAA,UAAU,EAAEY,KAAM;QAAA,GAC3BX,IAAAA;OACL,CAAC,eACFS,GAAA,CAAA,MAAA,EAAA;QAAMZ,SAAS,EAAEM,MAAM,CAACS,GAAAA;AAAI,OAAE,CAAC,CAAA;AAAA,KAC3B,CAAC,EACNhB,KAAK,gBACJa,GAAA,CAAA,MAAA,EAAA;AACEZ,MAAAA,SAAS,EAAEK,EAAE,CAACC,MAAM,CAACP,KAAK,EAAE;QAAE,CAACO,MAAM,CAACU,aAAa,GAAGf,QAAAA;AAAS,OAAC,CAAE;MAClE,aAAaC,EAAAA,UAAU,EAAEH,KAAM;AAAAW,MAAAA,QAAA,EAE9BX,KAAAA;KACG,CAAC,GACL,IAAI,CAAA;AAAA,GACH,CAAC,CAAA;AAAA,CAEZ,EAAC;AAEDJ,WAAW,CAACsB,WAAW,GAAG,aAAa;;;;"}