@dmsi/wedgekit-react 0.0.140 → 0.0.141

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 (240) hide show
  1. package/dist/{chunk-4OS6APPF.js → chunk-4LXG6QNT.js} +2 -1
  2. package/dist/{chunk-KS4RDR6P.js → chunk-4NCDT5ZY.js} +21 -8
  3. package/dist/{chunk-R5TLUWDD.js → chunk-4T3DRGLF.js} +32 -30
  4. package/dist/{chunk-QZGUMB7T.js → chunk-4VTOTNKJ.js} +3 -0
  5. package/dist/{chunk-Y4HUYAI5.js → chunk-56Y5DDG3.js} +5 -2
  6. package/dist/{chunk-D2YP2BTN.js → chunk-5GOJRLQO.js} +10 -4
  7. package/dist/{chunk-J6LETUNM.js → chunk-AZ7LVLOK.js} +5 -2
  8. package/dist/{chunk-TTO4PL7Y.js → chunk-BATIOCXB.js} +7 -4
  9. package/dist/{chunk-CG2NIXZE.js → chunk-C4JGTH6G.js} +7 -3
  10. package/dist/{chunk-O4M2GISS.js → chunk-CYZL57LH.js} +5 -2
  11. package/dist/{chunk-6HIALT5L.js → chunk-E7D24OHM.js} +14 -5
  12. package/dist/{chunk-3ZUSYRI7.js → chunk-EPQLWHCL.js} +2 -2
  13. package/dist/{chunk-AY7ELVQY.js → chunk-EUXB3XKL.js} +5 -2
  14. package/dist/{chunk-6DONKNDT.js → chunk-EWGHVZL5.js} +2 -0
  15. package/dist/{chunk-VH3EJNVE.js → chunk-FFU6FB3K.js} +6 -3
  16. package/dist/{chunk-H6LXXGX6.js → chunk-FKMKHLQH.js} +6 -3
  17. package/dist/{chunk-4F6VQXKY.js → chunk-GG5JOFS6.js} +2 -1
  18. package/dist/{chunk-XCIBYDVK.js → chunk-GXSXCEAA.js} +25 -14
  19. package/dist/{chunk-VG4EPHJA.js → chunk-HVI3CL7Y.js} +6 -3
  20. package/dist/{chunk-AOELEEUS.js → chunk-I6GEUF6Y.js} +6 -3
  21. package/dist/{chunk-Z36QJ7ZF.js → chunk-J4E6Q5TM.js} +12 -9
  22. package/dist/{chunk-S5K22XTH.js → chunk-JWCT72WR.js} +5 -2
  23. package/dist/{chunk-QNQ5K7NW.js → chunk-LM5MKBPM.js} +8 -3
  24. package/dist/{chunk-EO3JJWFW.js → chunk-N6JVLYEE.js} +6 -3
  25. package/dist/{chunk-IGQVA7SC.js → chunk-NKUETCDA.js} +5 -2
  26. package/dist/{chunk-PCCJ7L3N.js → chunk-NMVSRA5Y.js} +12 -4
  27. package/dist/{chunk-X62XGQY7.js → chunk-NW2C4DL4.js} +18 -15
  28. package/dist/{chunk-OB3URVCR.js → chunk-PMBEIP24.js} +5 -1
  29. package/dist/{chunk-6UI5GABI.js → chunk-R7ELP5C5.js} +8 -5
  30. package/dist/{chunk-FWPJ73IK.js → chunk-SYEJVSE4.js} +3 -1
  31. package/dist/{chunk-WT5XXW6G.js → chunk-WFQEE2OO.js} +9 -4
  32. package/dist/{chunk-QTD7K43M.js → chunk-WSS2DFTP.js} +8 -6
  33. package/dist/{chunk-37TJJQL3.js → chunk-YR7JUKYO.js} +3 -0
  34. package/dist/{chunk-4JLU7TAC.js → chunk-ZFOANBWG.js} +3 -1
  35. package/dist/{chunk-P242H6OU.js → chunk-ZGFQN47L.js} +5 -2
  36. package/dist/components/AccessChangerTabItem.cjs +10 -4
  37. package/dist/components/AccessChangerTabItem.js +2 -2
  38. package/dist/components/Accordion.cjs +23 -11
  39. package/dist/components/Accordion.js +5 -5
  40. package/dist/components/Breadcrumbs.cjs +19 -8
  41. package/dist/components/Breadcrumbs.js +10 -5
  42. package/dist/components/Button.cjs +6 -3
  43. package/dist/components/Button.js +1 -1
  44. package/dist/components/CalendarRange.cjs +16 -5
  45. package/dist/components/CalendarRange.js +2 -2
  46. package/dist/components/Caption.cjs +18 -6
  47. package/dist/components/Caption.js +2 -2
  48. package/dist/components/Card.cjs +2 -1
  49. package/dist/components/Card.js +1 -1
  50. package/dist/components/Checkbox.cjs +18 -7
  51. package/dist/components/Checkbox.js +3 -3
  52. package/dist/components/ContentTab.cjs +22 -16
  53. package/dist/components/ContentTab.js +2 -2
  54. package/dist/components/ContentTabs.cjs +27 -18
  55. package/dist/components/ContentTabs.js +7 -4
  56. package/dist/components/DataGridCell.cjs +73 -39
  57. package/dist/components/DataGridCell.js +8 -8
  58. package/dist/components/DateInput.cjs +55 -35
  59. package/dist/components/DateInput.js +8 -4
  60. package/dist/components/DateRangeInput.cjs +55 -35
  61. package/dist/components/DateRangeInput.js +8 -4
  62. package/dist/components/Display.cjs +5 -2
  63. package/dist/components/Display.js +1 -1
  64. package/dist/components/FilterGroup.cjs +85 -44
  65. package/dist/components/FilterGroup.js +20 -10
  66. package/dist/components/FullViewportBox.cjs +3 -1
  67. package/dist/components/FullViewportBox.js +3 -1
  68. package/dist/components/Grid.cjs +3 -1
  69. package/dist/components/Grid.js +3 -1
  70. package/dist/components/Heading.cjs +5 -2
  71. package/dist/components/Heading.js +1 -1
  72. package/dist/components/HorizontalDivider.cjs +2 -2
  73. package/dist/components/HorizontalDivider.js +1 -1
  74. package/dist/components/Icon.cjs +5 -2
  75. package/dist/components/Icon.js +1 -1
  76. package/dist/components/Input.cjs +40 -32
  77. package/dist/components/Input.js +3 -3
  78. package/dist/components/InputGroup.cjs +11 -4
  79. package/dist/components/InputGroup.js +7 -3
  80. package/dist/components/Label.cjs +5 -2
  81. package/dist/components/Label.js +1 -1
  82. package/dist/components/Link.cjs +6 -3
  83. package/dist/components/Link.js +1 -1
  84. package/dist/components/List.cjs +3 -2
  85. package/dist/components/List.js +3 -2
  86. package/dist/components/LoadingScrim.cjs +4 -2
  87. package/dist/components/LoadingScrim.js +3 -2
  88. package/dist/components/MainBar.cjs +2 -0
  89. package/dist/components/MainBar.js +2 -0
  90. package/dist/components/Menu.cjs +3 -0
  91. package/dist/components/Menu.js +1 -1
  92. package/dist/components/MenuOption.cjs +19 -7
  93. package/dist/components/MenuOption.js +4 -4
  94. package/dist/components/MobileDataGrid.cjs +42 -18
  95. package/dist/components/MobileDataGrid.js +18 -11
  96. package/dist/components/Modal.cjs +38 -12
  97. package/dist/components/Modal.js +8 -8
  98. package/dist/components/ModalButtons.cjs +16 -6
  99. package/dist/components/ModalButtons.js +3 -3
  100. package/dist/components/ModalContent.cjs +3 -1
  101. package/dist/components/ModalContent.js +1 -1
  102. package/dist/components/ModalHeader.cjs +21 -9
  103. package/dist/components/ModalHeader.js +4 -4
  104. package/dist/components/ModalScrim.cjs +3 -1
  105. package/dist/components/ModalScrim.js +1 -1
  106. package/dist/components/NavigationTab.cjs +14 -5
  107. package/dist/components/NavigationTab.js +3 -3
  108. package/dist/components/NavigationTabs.cjs +17 -6
  109. package/dist/components/NavigationTabs.js +6 -4
  110. package/dist/components/NestedMenu.cjs +23 -9
  111. package/dist/components/NestedMenu.js +8 -6
  112. package/dist/components/Notification.cjs +32 -13
  113. package/dist/components/Notification.js +9 -5
  114. package/dist/components/OptionPill.cjs +21 -7
  115. package/dist/components/OptionPill.js +4 -4
  116. package/dist/components/PDFViewer.cjs +73 -29
  117. package/dist/components/PDFViewer.js +26 -20
  118. package/dist/components/Paragraph.cjs +6 -3
  119. package/dist/components/Paragraph.js +1 -1
  120. package/dist/components/Password.cjs +50 -37
  121. package/dist/components/Password.js +13 -8
  122. package/dist/components/PaymentOnAccountModal.cjs +135 -69
  123. package/dist/components/PaymentOnAccountModal.js +21 -21
  124. package/dist/components/ProjectBar.cjs +3 -1
  125. package/dist/components/ProjectBar.js +3 -1
  126. package/dist/components/Radio.cjs +12 -6
  127. package/dist/components/Radio.js +2 -2
  128. package/dist/components/Search.cjs +44 -32
  129. package/dist/components/Search.js +4 -4
  130. package/dist/components/Select.cjs +43 -32
  131. package/dist/components/Select.js +4 -4
  132. package/dist/components/SelectPaymentMethod.cjs +67 -29
  133. package/dist/components/SelectPaymentMethod.js +12 -12
  134. package/dist/components/SideMenu.cjs +3 -1
  135. package/dist/components/SideMenu.js +3 -1
  136. package/dist/components/SideMenuGroup.cjs +19 -8
  137. package/dist/components/SideMenuGroup.js +6 -4
  138. package/dist/components/SideMenuItem.cjs +15 -6
  139. package/dist/components/SideMenuItem.js +5 -2
  140. package/dist/components/Spinner.cjs +2 -1
  141. package/dist/components/Spinner.js +1 -1
  142. package/dist/components/Stack.cjs +6 -3
  143. package/dist/components/Stack.js +1 -1
  144. package/dist/components/StatusPill.cjs +12 -6
  145. package/dist/components/StatusPill.js +8 -5
  146. package/dist/components/Stepper.cjs +54 -38
  147. package/dist/components/Stepper.js +12 -7
  148. package/dist/components/Subheader.cjs +5 -2
  149. package/dist/components/Subheader.js +1 -1
  150. package/dist/components/Swatch.cjs +22 -10
  151. package/dist/components/Swatch.js +4 -4
  152. package/dist/components/Textarea.cjs +4 -1
  153. package/dist/components/Textarea.js +4 -1
  154. package/dist/components/Theme.cjs +2 -0
  155. package/dist/components/Theme.js +1 -1
  156. package/dist/components/Time.cjs +52 -36
  157. package/dist/components/Time.js +10 -5
  158. package/dist/components/Toast.cjs +29 -12
  159. package/dist/components/Toast.js +11 -6
  160. package/dist/components/Tooltip.cjs +3 -0
  161. package/dist/components/Tooltip.js +1 -1
  162. package/dist/components/TopBar.cjs +11 -4
  163. package/dist/components/TopBar.js +11 -4
  164. package/dist/components/Upload.cjs +30 -15
  165. package/dist/components/Upload.js +16 -10
  166. package/dist/components/index.cjs +221 -84
  167. package/dist/components/index.js +80 -38
  168. package/dist/index.css +24 -4
  169. package/package.json +1 -1
  170. package/src/components/Accordion.tsx +5 -2
  171. package/src/components/Breadcrumbs.tsx +9 -2
  172. package/src/components/Button.tsx +4 -1
  173. package/src/components/CalendarRange.tsx +9 -0
  174. package/src/components/Caption.tsx +11 -1
  175. package/src/components/Card.tsx +3 -2
  176. package/src/components/Checkbox.tsx +5 -0
  177. package/src/components/ContentTab.tsx +14 -12
  178. package/src/components/ContentTabs.tsx +6 -2
  179. package/src/components/DataGrid/ColumnSelectorHeaderCell/ColumnSelectorMenuOption.tsx +4 -1
  180. package/src/components/DataGrid/ColumnSelectorHeaderCell/index.tsx +7 -0
  181. package/src/components/DataGrid/PinnedColumns.tsx +8 -1
  182. package/src/components/DataGrid/TableBody/LoadingCell.tsx +7 -3
  183. package/src/components/DataGrid/TableBody/TableBodyRow.tsx +7 -1
  184. package/src/components/DataGrid/TableBody/index.tsx +7 -1
  185. package/src/components/DataGrid/index.tsx +18 -2
  186. package/src/components/DataGrid/types.ts +1 -0
  187. package/src/components/DataGridCell.tsx +12 -0
  188. package/src/components/DateInput.tsx +4 -0
  189. package/src/components/DateRangeInput.tsx +4 -0
  190. package/src/components/Display.tsx +3 -0
  191. package/src/components/FilterGroup.tsx +10 -0
  192. package/src/components/FullViewportBox.tsx +3 -0
  193. package/src/components/Grid.tsx +3 -0
  194. package/src/components/Heading.tsx +3 -0
  195. package/src/components/HorizontalDivider.tsx +2 -2
  196. package/src/components/Icon.tsx +3 -0
  197. package/src/components/Input.tsx +32 -36
  198. package/src/components/InputGroup.tsx +6 -2
  199. package/src/components/Label.tsx +3 -0
  200. package/src/components/Link.tsx +3 -0
  201. package/src/components/List.tsx +3 -1
  202. package/src/components/LoadingScrim.tsx +2 -1
  203. package/src/components/MainBar.tsx +3 -0
  204. package/src/components/Menu.tsx +3 -0
  205. package/src/components/MenuOption.tsx +4 -0
  206. package/src/components/MobileDataGrid.tsx +12 -3
  207. package/src/components/Modal.tsx +7 -0
  208. package/src/components/ModalButtons.tsx +5 -0
  209. package/src/components/ModalContent.tsx +3 -0
  210. package/src/components/ModalHeader.tsx +5 -1
  211. package/src/components/ModalScrim.tsx +3 -0
  212. package/src/components/NavigationTab.tsx +3 -0
  213. package/src/components/NavigationTabs.tsx +7 -3
  214. package/src/components/NestedMenu.tsx +5 -2
  215. package/src/components/Notification.tsx +4 -0
  216. package/src/components/OptionPill.tsx +5 -0
  217. package/src/components/PDFViewer.tsx +16 -8
  218. package/src/components/Paragraph.tsx +3 -0
  219. package/src/components/Password.tsx +7 -2
  220. package/src/components/PaymentOnAccountModal.tsx +6 -2
  221. package/src/components/ProjectBar.tsx +3 -0
  222. package/src/components/Radio.tsx +4 -1
  223. package/src/components/Search.tsx +5 -0
  224. package/src/components/Select.tsx +4 -0
  225. package/src/components/SelectPaymentMethod.tsx +17 -3
  226. package/src/components/SideMenu.tsx +3 -0
  227. package/src/components/SideMenuGroup.tsx +4 -1
  228. package/src/components/SideMenuItem.tsx +4 -0
  229. package/src/components/Spinner.tsx +3 -1
  230. package/src/components/Stack.tsx +3 -0
  231. package/src/components/StatusPill.tsx +4 -1
  232. package/src/components/Stepper.tsx +6 -1
  233. package/src/components/Subheader.tsx +3 -0
  234. package/src/components/Textarea.tsx +4 -1
  235. package/src/components/Theme.tsx +3 -0
  236. package/src/components/Time.tsx +7 -1
  237. package/src/components/Toast.tsx +8 -3
  238. package/src/components/Tooltip.tsx +4 -0
  239. package/src/components/TopBar.tsx +7 -2
  240. package/src/components/Upload.tsx +10 -4
@@ -207,7 +207,8 @@ var Heading = (_a) => {
207
207
  color,
208
208
  align,
209
209
  variant = "heading1",
210
- id
210
+ id,
211
+ testid
211
212
  } = _b, props = __objRest(_b, [
212
213
  "className",
213
214
  "children",
@@ -215,7 +216,8 @@ var Heading = (_a) => {
215
216
  "color",
216
217
  "align",
217
218
  "variant",
218
- "id"
219
+ "id",
220
+ "testid"
219
221
  ]);
220
222
  const defaultElement = variant === "heading1" ? "h1" : variant === "heading2" ? "h2" : "h3";
221
223
  const Element = as != null ? as : defaultElement;
@@ -223,6 +225,7 @@ var Heading = (_a) => {
223
225
  Element,
224
226
  __spreadProps(__spreadValues({
225
227
  id,
228
+ "data-testid": testid,
226
229
  className: (0, import_clsx2.default)(
227
230
  typography[variant],
228
231
  className,
@@ -263,7 +266,8 @@ var Button = (_a) => {
263
266
  iconOnly = false,
264
267
  colorClassName,
265
268
  href,
266
- id
269
+ id,
270
+ testid
267
271
  } = _b, props = __objRest(_b, [
268
272
  "variant",
269
273
  "as",
@@ -277,7 +281,8 @@ var Button = (_a) => {
277
281
  "iconOnly",
278
282
  "colorClassName",
279
283
  "href",
280
- "id"
284
+ "id",
285
+ "testid"
281
286
  ]);
282
287
  const primaryVariantStyles = variant === "primary" && (0, import_clsx3.default)(
283
288
  (colorClassName == null ? void 0 : colorClassName.trim()) ? colorClassName : "text-text-on-action-primary-normal",
@@ -365,6 +370,7 @@ var Button = (_a) => {
365
370
  Element,
366
371
  __spreadProps(__spreadValues({
367
372
  id,
373
+ "data-testid": testid,
368
374
  type: Element === "button" ? "button" : void 0,
369
375
  className: buttonClasses
370
376
  }, props), {
@@ -374,7 +380,7 @@ var Button = (_a) => {
374
380
  "data-theme": variant === "navigation" ? "brand" : void 0,
375
381
  children: [
376
382
  leftIcon && leftIcon,
377
- !iconOnly && children && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { id: id ? `${id}-label` : void 0, className: labelClasses, children }),
383
+ !iconOnly && children && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { id: id ? `${id}-label` : void 0, "data-testid": testid ? `${testid}-label` : void 0, className: labelClasses, children }),
378
384
  rightIcon && rightIcon
379
385
  ]
380
386
  })
@@ -389,17 +395,20 @@ function Icon(_a) {
389
395
  var _b = _a, {
390
396
  name,
391
397
  size = 24,
392
- variant = "outline"
398
+ variant = "outline",
399
+ testid
393
400
  } = _b, props = __objRest(_b, [
394
401
  "name",
395
402
  "size",
396
- "variant"
403
+ "variant",
404
+ "testid"
397
405
  ]);
398
406
  const variantStyle = variant === "filled" ? '"FILL" 1' : '"FILL" 0';
399
407
  const weightStyle = size === 16 ? '"wght" 400' : '"wght" 300';
400
408
  return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
401
409
  "span",
402
410
  __spreadProps(__spreadValues({}, props), {
411
+ "data-testid": testid,
403
412
  className: (0, import_clsx4.default)(
404
413
  "icon",
405
414
  `icon-${size}`,
@@ -422,12 +431,14 @@ var ModalHeader = ({
422
431
  hideCloseIcon,
423
432
  headerIcon,
424
433
  onClose,
425
- id
434
+ id,
435
+ testid
426
436
  }) => {
427
437
  return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
428
438
  "div",
429
439
  {
430
440
  id,
441
+ "data-testid": testid,
431
442
  className: (0, import_clsx5.default)(
432
443
  "flex justify-between items-center",
433
444
  layoutPaddding,
@@ -436,12 +447,13 @@ var ModalHeader = ({
436
447
  children: [
437
448
  /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: (0, import_clsx5.default)("flex items-center", layoutGroupGap), children: [
438
449
  headerIcon,
439
- title && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Heading2, { id: id ? `${id}-title` : void 0, as: "p", children: title })
450
+ title && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Heading2, { id: id ? `${id}-title` : void 0, testid: testid ? `${testid}-title` : void 0, as: "p", children: title })
440
451
  ] }),
441
452
  !hideCloseIcon && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
442
453
  Button,
443
454
  {
444
455
  id: id ? `${id}-close-button` : void 0,
456
+ testid: testid ? `${testid}-close-button` : void 0,
445
457
  iconOnly: true,
446
458
  variant: "tertiary",
447
459
  onClick: onClose,
@@ -460,12 +472,14 @@ var import_jsx_runtime5 = require("react/jsx-runtime");
460
472
  function ModalContent({
461
473
  fixedHeightScrolling,
462
474
  children,
463
- id
475
+ id,
476
+ testid
464
477
  }) {
465
478
  return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
466
479
  "div",
467
480
  {
468
481
  id,
482
+ "data-testid": testid,
469
483
  className: (0, import_clsx6.default)(
470
484
  "flex-grow desktop:flex-grow-0",
471
485
  layoutPaddding,
@@ -484,12 +498,14 @@ var ModalButtons = ({
484
498
  onClose,
485
499
  onContinue,
486
500
  customActions,
487
- id
501
+ id,
502
+ testid
488
503
  }) => {
489
504
  return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
490
505
  "div",
491
506
  {
492
507
  id,
508
+ "data-testid": testid,
493
509
  className: (0, import_clsx7.default)(
494
510
  "border-t border-neutral-300 flex justify-end",
495
511
  layoutPaddding,
@@ -500,6 +516,7 @@ var ModalButtons = ({
500
516
  Button,
501
517
  {
502
518
  id: id ? `${id}-close-button` : void 0,
519
+ testid: testid ? `${testid}-close-button` : void 0,
503
520
  variant: "secondary",
504
521
  leftIcon: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Icon, { name: "close", size: 24 }),
505
522
  onClick: onClose,
@@ -511,6 +528,7 @@ var ModalButtons = ({
511
528
  Button,
512
529
  {
513
530
  id: id ? `${id}-continue-button` : void 0,
531
+ testid: testid ? `${testid}-continue-button` : void 0,
514
532
  variant: "primary",
515
533
  leftIcon: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Icon, { name: "check", size: 24 }),
516
534
  className: "max-sm:w-full",
@@ -533,12 +551,14 @@ var ModalScrim = ({
533
551
  children,
534
552
  onClick,
535
553
  ref,
536
- id
554
+ id,
555
+ testid
537
556
  }) => {
538
557
  return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
539
558
  "div",
540
559
  {
541
560
  id,
561
+ "data-testid": testid,
542
562
  className: (0, import_clsx8.default)(
543
563
  "overflow-y-auto h-screen transition-[visibility,opacity,background] ease-in-out duration-100 grid place-content-center desktop:p-4 group bg-neutral-600/50 fixed opacity-0",
544
564
  !show && " pointer-events-none",
@@ -675,6 +695,7 @@ var sizes = {
675
695
  };
676
696
  var Modal = ({
677
697
  id,
698
+ testid,
678
699
  title,
679
700
  open = false,
680
701
  size = "small",
@@ -783,6 +804,7 @@ var Modal = ({
783
804
  ModalScrim,
784
805
  {
785
806
  id: id ? `${id}-scrim` : void 0,
807
+ testid: testid ? `${testid}-scrim` : void 0,
786
808
  size,
787
809
  ref: bgRef,
788
810
  show: open,
@@ -791,6 +813,7 @@ var Modal = ({
791
813
  "div",
792
814
  {
793
815
  id,
816
+ "data-testid": testid,
794
817
  ref: modalRef,
795
818
  className: (0, import_clsx9.default)(
796
819
  "bg-white shadow-md rounded-sm flex flex-col overflow-hidden w-full opacity-0 h-fit",
@@ -804,6 +827,7 @@ var Modal = ({
804
827
  ModalHeader,
805
828
  {
806
829
  id: id ? `${id}-header` : void 0,
830
+ testid: testid ? `${testid}-header` : void 0,
807
831
  title,
808
832
  onClose: handleClose,
809
833
  hideCloseIcon,
@@ -814,6 +838,7 @@ var Modal = ({
814
838
  ModalContent,
815
839
  {
816
840
  id: id ? `${id}-content` : void 0,
841
+ testid: testid ? `${testid}-content` : void 0,
817
842
  fixedHeightScrolling: computedFixedHeightScrolling,
818
843
  children
819
844
  }
@@ -822,6 +847,7 @@ var Modal = ({
822
847
  ModalButtons,
823
848
  {
824
849
  id: id ? `${id}-buttons` : void 0,
850
+ testid: testid ? `${testid}-buttons` : void 0,
825
851
  onClose: handleClose,
826
852
  onContinue,
827
853
  customActions
@@ -899,7 +925,8 @@ var Stack = (_a) => {
899
925
  id,
900
926
  noGap,
901
927
  marginTop,
902
- marginBottom
928
+ marginBottom,
929
+ testid
903
930
  } = _b, props = __objRest(_b, [
904
931
  "children",
905
932
  "items",
@@ -935,14 +962,16 @@ var Stack = (_a) => {
935
962
  "id",
936
963
  "noGap",
937
964
  "marginTop",
938
- "marginBottom"
965
+ "marginBottom",
966
+ "testid"
939
967
  ]);
940
968
  const flexClassNames = getFlexClassNames({ items, justify, grow });
941
969
  const gapClassNames = useGapClassNames(sizing);
942
970
  return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
943
971
  "div",
944
972
  __spreadProps(__spreadValues({
945
- id
973
+ id,
974
+ "data-testid": testid
946
975
  }, props), {
947
976
  style: {
948
977
  height: height === "full" ? "100%" : height !== void 0 ? `${height}px` : void 0,
@@ -1017,7 +1046,8 @@ var Paragraph = (_a) => {
1017
1046
  addOverflow,
1018
1047
  children,
1019
1048
  as = "p",
1020
- id
1049
+ id,
1050
+ testid
1021
1051
  } = _b, props = __objRest(_b, [
1022
1052
  "className",
1023
1053
  "color",
@@ -1027,13 +1057,15 @@ var Paragraph = (_a) => {
1027
1057
  "addOverflow",
1028
1058
  "children",
1029
1059
  "as",
1030
- "id"
1060
+ "id",
1061
+ "testid"
1031
1062
  ]);
1032
1063
  const Element = as;
1033
1064
  return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1034
1065
  Element,
1035
1066
  __spreadProps(__spreadValues({
1036
- id
1067
+ id,
1068
+ "data-testid": testid
1037
1069
  }, props), {
1038
1070
  className: (0, import_clsx11.default)(
1039
1071
  typography.paragraph,
@@ -1068,20 +1100,23 @@ var Label = (_a) => {
1068
1100
  className,
1069
1101
  color,
1070
1102
  align,
1071
- id
1103
+ id,
1104
+ testid
1072
1105
  } = _b, props = __objRest(_b, [
1073
1106
  "as",
1074
1107
  "padded",
1075
1108
  "className",
1076
1109
  "color",
1077
1110
  "align",
1078
- "id"
1111
+ "id",
1112
+ "testid"
1079
1113
  ]);
1080
1114
  const Element = as;
1081
1115
  return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1082
1116
  Element,
1083
1117
  __spreadProps(__spreadValues({
1084
1118
  id,
1119
+ "data-testid": testid,
1085
1120
  className: (0, import_clsx12.default)(
1086
1121
  typography.label,
1087
1122
  align === "left" && "text-left",
@@ -1137,6 +1172,7 @@ var import_jsx_runtime12 = require("react/jsx-runtime");
1137
1172
  var InputBase = (_a) => {
1138
1173
  var _b = _a, {
1139
1174
  id,
1175
+ testid,
1140
1176
  before,
1141
1177
  after,
1142
1178
  type,
@@ -1155,6 +1191,7 @@ var InputBase = (_a) => {
1155
1191
  fullWidth = true
1156
1192
  } = _b, props = __objRest(_b, [
1157
1193
  "id",
1194
+ "testid",
1158
1195
  "before",
1159
1196
  "after",
1160
1197
  "type",
@@ -1219,6 +1256,7 @@ var InputBase = (_a) => {
1219
1256
  "label",
1220
1257
  {
1221
1258
  id,
1259
+ "data-testid": testid,
1222
1260
  htmlFor: inputId,
1223
1261
  ref: inputContainerRef,
1224
1262
  className: (0, import_clsx13.default)(
@@ -1271,6 +1309,7 @@ var InputBase = (_a) => {
1271
1309
  required
1272
1310
  }, props), attributes), {
1273
1311
  id: inputId,
1312
+ "data-testid": testid ? `${testid}-input` : void 0,
1274
1313
  className: (0, import_clsx13.default)(
1275
1314
  "flex-1 outline-none w-full max-w-full min-h-6 min-w-0",
1276
1315
  "[appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none",
@@ -1288,7 +1327,7 @@ var InputBase = (_a) => {
1288
1327
  ]
1289
1328
  }
1290
1329
  ),
1291
- caption && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { id: id ? `${id}-caption` : void 0, children: caption })
1330
+ caption && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { id: id ? `${id}-caption` : void 0, "data-testid": testid ? `${testid}-caption` : void 0, children: caption })
1292
1331
  ]
1293
1332
  }
1294
1333
  );
@@ -1303,7 +1342,8 @@ var Input = (_a) => {
1303
1342
  onChange,
1304
1343
  onBlur,
1305
1344
  onClear,
1306
- id
1345
+ id,
1346
+ testid
1307
1347
  } = _b, props = __objRest(_b, [
1308
1348
  "variant",
1309
1349
  "decimals",
@@ -1313,30 +1353,30 @@ var Input = (_a) => {
1313
1353
  "onChange",
1314
1354
  "onBlur",
1315
1355
  "onClear",
1316
- "id"
1356
+ "id",
1357
+ "testid"
1317
1358
  ]);
1318
1359
  const [internalValue, setInternalValue] = (0, import_react6.useState)("");
1319
1360
  const [displayValue, setDisplayValue] = (0, import_react6.useState)("");
1320
1361
  (0, import_react6.useEffect)(() => {
1321
1362
  var _a2;
1322
1363
  const stringValue = (_a2 = propValue == null ? void 0 : propValue.toString()) != null ? _a2 : "";
1323
- if (variant === "currency") {
1324
- if (propValue === void 0 || propValue === "" || typeof propValue === "number" && isNaN(propValue)) {
1325
- setInternalValue("");
1326
- setDisplayValue("");
1327
- } else {
1328
- const numValue = typeof propValue === "string" ? parseFloat(propValue) : propValue;
1329
- if (!isNaN(numValue)) {
1330
- const formatted = numValue.toFixed(decimals != null ? decimals : 2);
1331
- setInternalValue(formatted);
1332
- setDisplayValue(formatCurrencyDisplay(formatted));
1333
- }
1334
- }
1335
- } else {
1336
- setInternalValue(stringValue);
1337
- setDisplayValue(stringValue);
1364
+ setInternalValue(stringValue);
1365
+ setDisplayValue(stringValue);
1366
+ }, [propValue]);
1367
+ (0, import_react6.useEffect)(() => {
1368
+ var _a2;
1369
+ if (variant !== "currency") {
1370
+ return;
1371
+ }
1372
+ const stringValue = (_a2 = propValue == null ? void 0 : propValue.toString()) != null ? _a2 : "";
1373
+ if (!stringValue) {
1374
+ return;
1338
1375
  }
1339
- }, [propValue, decimals, variant]);
1376
+ const formatted = formatDecimalValue(stringValue, decimals != null ? decimals : 2);
1377
+ setInternalValue(formatted);
1378
+ setDisplayValue(formatCurrencyDisplay(formatted));
1379
+ }, []);
1340
1380
  const getInputProps = () => {
1341
1381
  var _a2;
1342
1382
  const baseProps = __spreadProps(__spreadValues(__spreadProps(__spreadValues({}, props), {
@@ -1389,6 +1429,7 @@ var Input = (_a) => {
1389
1429
  Icon,
1390
1430
  {
1391
1431
  id: id ? `${id}-clear-button` : void 0,
1432
+ testid: testid ? `${testid}-clear-button` : void 0,
1392
1433
  name: "close",
1393
1434
  onClick: handleSearchReset,
1394
1435
  className: "cursor-pointer absolute right-2 bottom-2/4 translate-y-2/4"
@@ -1420,14 +1461,6 @@ var Input = (_a) => {
1420
1461
  };
1421
1462
  const handleChange = (e) => {
1422
1463
  const rawValue = e.target.value;
1423
- if (variant === "search") {
1424
- setInternalValue(rawValue);
1425
- setDisplayValue(rawValue);
1426
- if (typeof onChange === "function") {
1427
- onChange(e);
1428
- }
1429
- return;
1430
- }
1431
1464
  if (variant === "currency") {
1432
1465
  const raw = rawValue.replace(/,/g, "");
1433
1466
  if (raw === "") {
@@ -1464,6 +1497,9 @@ var Input = (_a) => {
1464
1497
  }
1465
1498
  };
1466
1499
  const handleBlur = (e) => {
1500
+ if (!internalValue) {
1501
+ return;
1502
+ }
1467
1503
  if (variant === "currency") {
1468
1504
  const formatted = formatDecimalValue(internalValue, decimals != null ? decimals : 2);
1469
1505
  setInternalValue(formatted);
@@ -1488,7 +1524,8 @@ var Input = (_a) => {
1488
1524
  before: getBeforeElement(),
1489
1525
  after: getAfterElement(),
1490
1526
  onChange: handleChange,
1491
- onBlur: handleBlur
1527
+ onBlur: handleBlur,
1528
+ testid
1492
1529
  })
1493
1530
  );
1494
1531
  };
@@ -1520,10 +1557,11 @@ Percentage.displayName = "Percentage";
1520
1557
  var import_clsx14 = __toESM(require("clsx"), 1);
1521
1558
  var import_jsx_runtime13 = require("react/jsx-runtime");
1522
1559
  function Card(props) {
1523
- const _a = props, { children, selected } = _a, rest = __objRest(_a, ["children", "selected"]);
1560
+ const _a = props, { children, selected, testid } = _a, rest = __objRest(_a, ["children", "selected", "testid"]);
1524
1561
  return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1525
1562
  "div",
1526
1563
  __spreadProps(__spreadValues({}, rest), {
1564
+ "data-testid": testid,
1527
1565
  className: (0, import_clsx14.default)(
1528
1566
  "rounded-sm p-desktop-layout-padding",
1529
1567
  selected ? "border-2 border-border-primary-focus" : "border border-border-primary-normal",
@@ -1544,7 +1582,7 @@ var import_react7 = require("react");
1544
1582
  var import_clsx15 = __toESM(require("clsx"), 1);
1545
1583
  var import_jsx_runtime14 = require("react/jsx-runtime");
1546
1584
  function Accordion(props) {
1547
- const { isOpen, onClick, className, disabled } = props;
1585
+ const { isOpen, onClick, className, disabled, testid } = props;
1548
1586
  const {
1549
1587
  title,
1550
1588
  before,
@@ -1575,11 +1613,12 @@ function Accordion(props) {
1575
1613
  ),
1576
1614
  selected: isOpen,
1577
1615
  onClick: handleClick,
1616
+ testid,
1578
1617
  children: [
1579
1618
  /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(Stack, { sizing: "component", horizontal: true, justify: "between", items: "center", children: [
1580
1619
  /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(Stack, { sizing: "layout-group", horizontal: true, items: "center", children: [
1581
1620
  before,
1582
- typeof title === "string" ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Paragraph, { className: "text-text-primary-normal", children: title }) : title
1621
+ typeof title === "string" ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Paragraph, { testid: testid ? `${testid}-title` : void 0, className: "text-text-primary-normal", children: title }) : title
1583
1622
  ] }),
1584
1623
  after
1585
1624
  ] }),
@@ -1590,6 +1629,7 @@ function Accordion(props) {
1590
1629
  style: {
1591
1630
  gridTemplateRows: isOpen ? "1fr" : "0fr"
1592
1631
  },
1632
+ "data-testid": testid ? `${testid}-content-container` : void 0,
1593
1633
  children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "overflow-hidden", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1594
1634
  "div",
1595
1635
  {
@@ -1620,7 +1660,8 @@ var Radio = (_a) => {
1620
1660
  disabled,
1621
1661
  checked,
1622
1662
  readOnly,
1623
- id
1663
+ id,
1664
+ testid
1624
1665
  } = _b, props = __objRest(_b, [
1625
1666
  "className",
1626
1667
  "label",
@@ -1628,7 +1669,8 @@ var Radio = (_a) => {
1628
1669
  "disabled",
1629
1670
  "checked",
1630
1671
  "readOnly",
1631
- "id"
1672
+ "id",
1673
+ "testid"
1632
1674
  ]);
1633
1675
  const radioId = id;
1634
1676
  const paragraphColor = disabled ? "text-primary-disabled" : error ? "text-primary-error" : "text-primary-normal";
@@ -1660,6 +1702,7 @@ var Radio = (_a) => {
1660
1702
  "input",
1661
1703
  __spreadValues({
1662
1704
  id: radioId,
1705
+ "data-testid": testid,
1663
1706
  type: "radio",
1664
1707
  className: "sr-only peer",
1665
1708
  disabled,
@@ -1693,7 +1736,7 @@ var Radio = (_a) => {
1693
1736
  }
1694
1737
  )
1695
1738
  ] }),
1696
- label && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Paragraph, { id: `${radioId}-label`, padded: true, color: paragraphColor, children: label })
1739
+ label && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Paragraph, { id: radioId ? `${radioId}-label` : void 0, testid: testid ? `${testid}-label` : void 0, padded: true, color: paragraphColor, children: label })
1697
1740
  ]
1698
1741
  }
1699
1742
  );
@@ -1742,7 +1785,8 @@ var Checkbox = (_a) => {
1742
1785
  onChange,
1743
1786
  indeterminate,
1744
1787
  paragraphClassName,
1745
- id
1788
+ id,
1789
+ testid
1746
1790
  } = _b, props = __objRest(_b, [
1747
1791
  "label",
1748
1792
  "error",
@@ -1752,7 +1796,8 @@ var Checkbox = (_a) => {
1752
1796
  "onChange",
1753
1797
  "indeterminate",
1754
1798
  "paragraphClassName",
1755
- "id"
1799
+ "id",
1800
+ "testid"
1756
1801
  ]);
1757
1802
  const selected = indeterminate || checked;
1758
1803
  const normalClassName = (0, import_clsx17.default)(
@@ -1781,6 +1826,7 @@ var Checkbox = (_a) => {
1781
1826
  "label",
1782
1827
  {
1783
1828
  id,
1829
+ "data-testid": testid,
1784
1830
  htmlFor: id ? `${id}-input` : void 0,
1785
1831
  className: (0, import_clsx17.default)(
1786
1832
  "flex items-center",
@@ -1794,6 +1840,7 @@ var Checkbox = (_a) => {
1794
1840
  "input",
1795
1841
  __spreadValues({
1796
1842
  id: id ? `${id}-input` : void 0,
1843
+ "data-testid": testid ? `${testid}-input` : void 0,
1797
1844
  type: "checkbox",
1798
1845
  className: "sr-only peer",
1799
1846
  disabled,
@@ -1825,6 +1872,7 @@ var Checkbox = (_a) => {
1825
1872
  Paragraph,
1826
1873
  {
1827
1874
  id: id ? `${id}-label` : void 0,
1875
+ testid: testid ? `${testid}-label` : void 0,
1828
1876
  as: "span",
1829
1877
  padded: true,
1830
1878
  className: (0, import_clsx17.default)(
@@ -1859,7 +1907,8 @@ var Subheader = (_a) => {
1859
1907
  align,
1860
1908
  color,
1861
1909
  tall,
1862
- id
1910
+ id,
1911
+ testid
1863
1912
  } = _b, props = __objRest(_b, [
1864
1913
  "className",
1865
1914
  "children",
@@ -1867,13 +1916,15 @@ var Subheader = (_a) => {
1867
1916
  "align",
1868
1917
  "color",
1869
1918
  "tall",
1870
- "id"
1919
+ "id",
1920
+ "testid"
1871
1921
  ]);
1872
1922
  const Element = as;
1873
1923
  return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1874
1924
  Element,
1875
1925
  __spreadProps(__spreadValues({
1876
1926
  id,
1927
+ "data-testid": testid,
1877
1928
  className: (0, import_clsx18.default)(
1878
1929
  typography.subheader,
1879
1930
  className,
@@ -1895,18 +1946,19 @@ Subheader.displayName = "Subheader";
1895
1946
  // src/components/HorizontalDivider.tsx
1896
1947
  var import_clsx19 = __toESM(require("clsx"), 1);
1897
1948
  var import_jsx_runtime18 = require("react/jsx-runtime");
1898
- function HorizontalDivider({ id, hideOnMobile }) {
1949
+ function HorizontalDivider({ id, testid, hideOnMobile }) {
1899
1950
  const hideOnMobileStyle = (0, import_clsx19.default)(hideOnMobile && "hidden desktop:block");
1900
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("hr", { id, className: (0, import_clsx19.default)("w-full border-t border-border-primary-normal", hideOnMobileStyle) });
1951
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("hr", { id, "data-testid": testid, className: (0, import_clsx19.default)("w-full border-t border-border-primary-normal", hideOnMobileStyle) });
1901
1952
  }
1902
1953
 
1903
1954
  // src/components/Spinner.tsx
1904
1955
  var import_jsx_runtime19 = require("react/jsx-runtime");
1905
- var Spinner = ({ size = "small" }) => {
1956
+ var Spinner = ({ size = "small", testid }) => {
1906
1957
  const dimension = size === "large" ? 48 : 24;
1907
1958
  return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
1908
1959
  "svg",
1909
1960
  {
1961
+ "data-testid": testid,
1910
1962
  width: dimension,
1911
1963
  height: dimension,
1912
1964
  viewBox: "0 0 24 24",
@@ -2026,7 +2078,8 @@ function SelectPaymentMethod(props) {
2026
2078
  isPayLoading,
2027
2079
  withCredits = false,
2028
2080
  isLoadingCCiframe,
2029
- cardPaymentUrl
2081
+ cardPaymentUrl,
2082
+ testid
2030
2083
  } = props;
2031
2084
  const payAllWithCredits = withCredits && amountToPay <= 0;
2032
2085
  (0, import_react7.useEffect)(() => {
@@ -2043,6 +2096,7 @@ function SelectPaymentMethod(props) {
2043
2096
  !!(allCredits == null ? void 0 : allCredits.length) && withCredits && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
2044
2097
  CreditsSelector,
2045
2098
  {
2099
+ testid: testid ? `${testid}-credit-selector` : void 0,
2046
2100
  selectedCredits: selectedCredits || [],
2047
2101
  allCredits: allCredits || [],
2048
2102
  setSelectedCredits: props.setSelectedCredits || (() => {
@@ -2052,6 +2106,7 @@ function SelectPaymentMethod(props) {
2052
2106
  (allowedMethods == null ? void 0 : allowedMethods.includes("ACHPayment")) && !!(customerBanks == null ? void 0 : customerBanks.length) && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
2053
2107
  ACHSelector,
2054
2108
  {
2109
+ testid: testid ? `${testid}-ach-selector` : void 0,
2055
2110
  selectedMethod,
2056
2111
  handleToggle,
2057
2112
  selectedBankGuid: selectedACHBankGuid || null,
@@ -2066,10 +2121,12 @@ function SelectPaymentMethod(props) {
2066
2121
  (allowedMethods == null ? void 0 : allowedMethods.includes("CCPayment")) && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
2067
2122
  Accordion,
2068
2123
  {
2124
+ testid: testid ? `${testid}-cc-payment` : void 0,
2069
2125
  isOpen: !payAllWithCredits && selectedMethod === "CCPayment",
2070
2126
  title: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
2071
2127
  Radio,
2072
2128
  {
2129
+ testid: testid ? `${testid}-cc-payment-radio` : void 0,
2073
2130
  label: "Pay by Credit/Debit Card",
2074
2131
  checked: !payAllWithCredits && selectedMethod === "CCPayment",
2075
2132
  onChange: (e) => e.stopPropagation(),
@@ -2109,10 +2166,11 @@ function SelectPaymentMethod(props) {
2109
2166
  block: true,
2110
2167
  onClick: onPay,
2111
2168
  disabled: isPayLoading || amountToPay <= 0,
2169
+ testid: testid ? `${testid}-submit-payment-button` : void 0,
2112
2170
  children: isPayLoading ? "Processing..." : "Submit Payment"
2113
2171
  }
2114
2172
  ),
2115
- payAllWithCredits && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Button, { block: true, onClick: onPay, disabled: isPayLoading, children: isPayLoading ? "Processing..." : "Submit Payment" })
2173
+ payAllWithCredits && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Button, { testid: testid ? `${testid}-submit-payment-button` : void 0, block: true, onClick: onPay, disabled: isPayLoading, children: isPayLoading ? "Processing..." : "Submit Payment" })
2116
2174
  ] });
2117
2175
  }
2118
2176
  function ACHSelector(props) {
@@ -2122,7 +2180,8 @@ function ACHSelector(props) {
2122
2180
  selectedBankGuid,
2123
2181
  setSelectedBankGuid,
2124
2182
  customerBanks,
2125
- disabled
2183
+ disabled,
2184
+ testid
2126
2185
  } = props;
2127
2186
  function handleBankSelect(e, bankGuid) {
2128
2187
  if (disabled) return;
@@ -2133,6 +2192,7 @@ function ACHSelector(props) {
2133
2192
  return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_jsx_runtime20.Fragment, { children: customerBanks.map((bank) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
2134
2193
  Card,
2135
2194
  {
2195
+ testid: testid ? `${testid}-bank-${bank.CustBankGUID}` : void 0,
2136
2196
  onClick: (e) => handleBankSelect(e, bank.CustBankGUID),
2137
2197
  selected: !disabled && selectedMethod === "ACHPayment" && selectedBankGuid === bank.CustBankGUID,
2138
2198
  children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
@@ -2149,7 +2209,7 @@ function ACHSelector(props) {
2149
2209
  )) });
2150
2210
  }
2151
2211
  function CreditsSelector(props) {
2152
- const { selectedCredits, allCredits, setSelectedCredits } = props;
2212
+ const { selectedCredits, allCredits, setSelectedCredits, testid } = props;
2153
2213
  const [isOpen, setIsOpen] = (0, import_react7.useState)(true);
2154
2214
  const handleCreditSelect = (credit) => {
2155
2215
  if (setSelectedCredits) {
@@ -2164,6 +2224,7 @@ function CreditsSelector(props) {
2164
2224
  isOpen,
2165
2225
  title: "Available Credits",
2166
2226
  onClick: () => setIsOpen((prev) => !prev),
2227
+ testid,
2167
2228
  children: [
2168
2229
  /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(HorizontalDivider, {}),
2169
2230
  /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Stack, { sizing: "layout-group", width: "full", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
@@ -2188,9 +2249,11 @@ function CreditsSelector(props) {
2188
2249
  onClick: () => handleCreditSelect(credits),
2189
2250
  paddingY: true,
2190
2251
  flexGrow: 1,
2252
+ testid: testid ? `${testid}-credit-${credits.InvoiceNumber}` : void 0,
2191
2253
  children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
2192
2254
  Checkbox,
2193
2255
  {
2256
+ testid: testid ? `${testid}-credit-${credits.InvoiceNumber}-checkbox` : void 0,
2194
2257
  label: credits.InvoiceNumber,
2195
2258
  checked: selectedCredits == null ? void 0 : selectedCredits.includes(credits),
2196
2259
  onChange: () => handleCreditSelect(credits)
@@ -2198,7 +2261,7 @@ function CreditsSelector(props) {
2198
2261
  )
2199
2262
  }
2200
2263
  ),
2201
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(Subheader, { className: " pr-desktop-component-padding", children: [
2264
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(Subheader, { testid: testid ? `${testid}-credit-${credits.InvoiceNumber}-InvoiceBalanceDue` : void 0, className: " pr-desktop-component-padding", children: [
2202
2265
  "$",
2203
2266
  formatCurrencyDisplay(
2204
2267
  `${Math.abs(credits.InvoiceBalanceDue)}`
@@ -2225,7 +2288,8 @@ function PaymentOnAccountModal(props) {
2225
2288
  onAmountChange,
2226
2289
  cardPaymentUrl,
2227
2290
  setCardPaymentUrl,
2228
- isLoadingCCiframe
2291
+ isLoadingCCiframe,
2292
+ testid
2229
2293
  } = props;
2230
2294
  const [amount, setAmount] = (0, import_react8.useState)(paymentProps.amountToPay);
2231
2295
  const { creditCardSettings, selectedMethod } = paymentProps;
@@ -2253,10 +2317,10 @@ function PaymentOnAccountModal(props) {
2253
2317
  }
2254
2318
  return 0;
2255
2319
  }, [creditCardSettings, amount, selectedMethod]);
2256
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Modal, { open: isOpen, onClose, title: "Payment on Account", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(Stack, { sizing: "layout-group", width: "full", children: [
2320
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Modal, { testid, open: isOpen, onClose, title: "Payment on Account", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(Stack, { sizing: "layout-group", width: "full", children: [
2257
2321
  selectedMethod === "CCPayment" && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(Stack, { horizontal: true, justify: "between", items: "center", children: [
2258
2322
  /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Paragraph, { children: "Surcharge" }),
2259
- /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(Paragraph, { children: [
2323
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(Paragraph, { testid: testid ? `${testid}-surcharge` : void 0, children: [
2260
2324
  "$",
2261
2325
  formatCurrencyDisplay(creditCardSurcharge.toFixed(2))
2262
2326
  ] })
@@ -2266,6 +2330,7 @@ function PaymentOnAccountModal(props) {
2266
2330
  /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
2267
2331
  Input,
2268
2332
  {
2333
+ testid: testid ? `${testid}-amount-to-pay` : void 0,
2269
2334
  type: "number",
2270
2335
  placeholder: "$0.00",
2271
2336
  align: "right",
@@ -2278,6 +2343,7 @@ function PaymentOnAccountModal(props) {
2278
2343
  /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
2279
2344
  SelectPaymentMethod,
2280
2345
  __spreadProps(__spreadValues({}, paymentProps), {
2346
+ testid: testid ? `${testid}-select-payment-method` : void 0,
2281
2347
  amountToPay: amount + creditCardSurcharge,
2282
2348
  cardPaymentUrl,
2283
2349
  setCardPaymentUrl,