@lightsparkdev/ui 0.0.7 → 0.0.9

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 (142) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/chunk-3EVAP5JT.js +67 -0
  3. package/dist/{chunk-IQFU7CM5.js → chunk-3GS5EFXV.js} +1 -1
  4. package/dist/{chunk-CLU2FRJZ.js → chunk-55OQPFLF.js} +1 -1
  5. package/dist/{chunk-N2RDQJQ5.js → chunk-5POPBNPS.js} +1 -1
  6. package/dist/{chunk-WWFDI534.js → chunk-7C4MHI6Q.js} +13 -6
  7. package/dist/{chunk-3CZOYF3X.js → chunk-7T36JGTC.js} +2 -2
  8. package/dist/chunk-A4FQBEYU.js +163 -0
  9. package/dist/chunk-ATUH6SXK.js +233 -0
  10. package/dist/chunk-DQRN4E5G.js +25 -0
  11. package/dist/{chunk-RTUZVKPK.js → chunk-E3AOYBY5.js} +1 -1
  12. package/dist/{chunk-I74XQIVV.js → chunk-EEFNW7NS.js} +3 -3
  13. package/dist/{chunk-UO6U7AYM.js → chunk-FCZJILMW.js} +1 -1
  14. package/dist/{chunk-2WYVO6B2.js → chunk-H3RW6JSU.js} +1 -1
  15. package/dist/chunk-IPAXAP6K.js +119 -0
  16. package/dist/{chunk-NGS4OSWT.js → chunk-J4FJQ3FN.js} +1 -1
  17. package/dist/{chunk-RFGKH3R6.js → chunk-JK4BP73A.js} +39 -38
  18. package/dist/{chunk-T33SBHYI.js → chunk-KMR5C25B.js} +3 -1
  19. package/dist/{chunk-JYWYEOM6.js → chunk-NFSAJ5GJ.js} +23 -10
  20. package/dist/{chunk-G2PZZFJL.js → chunk-NM7UW54G.js} +21 -24
  21. package/dist/{chunk-M56R3RJ7.js → chunk-OGSDZTHM.js} +7 -3
  22. package/dist/chunk-P3EUPXFA.js +150 -0
  23. package/dist/chunk-PBRN7MJY.js +315 -0
  24. package/dist/{chunk-NH25O7PC.js → chunk-PVQCLQNA.js} +1 -1
  25. package/dist/{chunk-NZJCJJH5.js → chunk-RWIZ7Q74.js} +1 -1
  26. package/dist/{chunk-TAI352I3.js → chunk-VE7J2N47.js} +1 -1
  27. package/dist/{chunk-K7D7A34K.js → chunk-XP2MX2AA.js} +1 -1
  28. package/dist/{chunk-23SR7TFO.js → chunk-XZR237JJ.js} +1 -1
  29. package/dist/{chunk-VBWTKANQ.js → chunk-Y37DCY7Y.js} +3 -3
  30. package/dist/{chunk-SVQELXFK.js → chunk-Z5TPS2BO.js} +1 -1
  31. package/dist/{chunk-FKETYVPP.js → chunk-ZANLDY2W.js} +87 -43
  32. package/dist/components/Badge.cjs +1346 -0
  33. package/dist/components/Badge.d.cts +10 -0
  34. package/dist/components/Badge.d.ts +10 -0
  35. package/dist/components/Badge.js +13 -0
  36. package/dist/components/Button.cjs +235 -107
  37. package/dist/components/Button.d.cts +3 -1
  38. package/dist/components/Button.d.ts +3 -1
  39. package/dist/components/Button.js +8 -7
  40. package/dist/components/ButtonRow.cjs +254 -110
  41. package/dist/components/ButtonRow.d.cts +6 -2
  42. package/dist/components/ButtonRow.d.ts +6 -2
  43. package/dist/components/ButtonRow.js +14 -11
  44. package/dist/components/CardPage.cjs +1921 -0
  45. package/dist/components/CardPage.d.cts +54 -0
  46. package/dist/components/CardPage.d.ts +54 -0
  47. package/dist/components/CardPage.js +33 -0
  48. package/dist/components/Collapsible.cjs +38 -54
  49. package/dist/components/Collapsible.js +4 -5
  50. package/dist/components/ContentTable.cjs +38 -54
  51. package/dist/components/ContentTable.js +3 -4
  52. package/dist/components/CopyToClipboardButton.cjs +161 -65
  53. package/dist/components/CopyToClipboardButton.js +6 -5
  54. package/dist/components/CurrencyAmount.cjs +38 -54
  55. package/dist/components/CurrencyAmount.js +3 -4
  56. package/dist/components/FileInput.cjs +1959 -0
  57. package/dist/components/FileInput.d.cts +21 -0
  58. package/dist/components/FileInput.d.ts +21 -0
  59. package/dist/components/FileInput.js +113 -0
  60. package/dist/components/GradientCardHeader.cjs +177 -0
  61. package/dist/components/GradientCardHeader.d.cts +10 -0
  62. package/dist/components/GradientCardHeader.d.ts +10 -0
  63. package/dist/components/GradientCardHeader.js +8 -0
  64. package/dist/components/Icon.cjs +38 -54
  65. package/dist/components/Icon.js +2 -3
  66. package/dist/components/LightTooltip.cjs +1428 -0
  67. package/dist/components/LightTooltip.d.cts +9 -0
  68. package/dist/components/LightTooltip.d.ts +9 -0
  69. package/dist/components/LightTooltip.js +12 -0
  70. package/dist/components/LightboxImage.cjs +1 -1
  71. package/dist/components/LightboxImage.js +2 -2
  72. package/dist/components/LightsparkProvider.cjs +41 -57
  73. package/dist/components/LightsparkProvider.js +3 -4
  74. package/dist/components/Loading.cjs +38 -54
  75. package/dist/components/Loading.js +3 -4
  76. package/dist/components/Modal.cjs +251 -145
  77. package/dist/components/Modal.js +12 -11
  78. package/dist/components/Pill.cjs +1717 -0
  79. package/dist/components/Pill.d.cts +19 -0
  80. package/dist/components/Pill.d.ts +19 -0
  81. package/dist/components/Pill.js +16 -0
  82. package/dist/components/ProgressBar.cjs +38 -56
  83. package/dist/components/ProgressBar.js +2 -3
  84. package/dist/components/SecretContainer.cjs +162 -66
  85. package/dist/components/SecretContainer.js +7 -6
  86. package/dist/components/TextIconAligner.cjs +38 -54
  87. package/dist/components/TextIconAligner.js +3 -4
  88. package/dist/components/UnstyledButton.cjs +38 -54
  89. package/dist/components/UnstyledButton.js +2 -3
  90. package/dist/components/documentation/AnchorLinkHeader.cjs +38 -56
  91. package/dist/components/documentation/AnchorLinkHeader.js +3 -4
  92. package/dist/components/documentation/index.cjs +38 -56
  93. package/dist/components/documentation/index.js +3 -4
  94. package/dist/components/index.cjs +1191 -358
  95. package/dist/components/index.d.cts +7 -1
  96. package/dist/components/index.d.ts +7 -1
  97. package/dist/components/index.js +63 -32
  98. package/dist/icons/ArrowCornerDownRight.cjs +49 -0
  99. package/dist/icons/ArrowCornerDownRight.d.cts +5 -0
  100. package/dist/icons/ArrowCornerDownRight.d.ts +5 -0
  101. package/dist/icons/ArrowCornerDownRight.js +30 -0
  102. package/dist/icons/Copy.cjs +4 -3
  103. package/dist/icons/Copy.js +4 -3
  104. package/dist/icons/Download.cjs +22 -11
  105. package/dist/icons/Download.js +23 -12
  106. package/dist/icons/Sort.cjs +48 -0
  107. package/dist/icons/Sort.d.cts +5 -0
  108. package/dist/icons/Sort.d.ts +5 -0
  109. package/dist/icons/Sort.js +29 -0
  110. package/dist/icons/Upload.cjs +22 -11
  111. package/dist/icons/Upload.js +23 -12
  112. package/dist/icons/index.cjs +38 -54
  113. package/dist/icons/index.js +2 -3
  114. package/dist/router.cjs +7 -3
  115. package/dist/router.js +1 -1
  116. package/dist/styles/common.cjs +38 -66
  117. package/dist/styles/common.d.cts +10 -11
  118. package/dist/styles/common.d.ts +10 -11
  119. package/dist/styles/common.js +1 -14
  120. package/dist/styles/fields.cjs +117 -61
  121. package/dist/styles/fields.d.cts +12 -5
  122. package/dist/styles/fields.d.ts +12 -5
  123. package/dist/styles/fields.js +28 -164
  124. package/dist/styles/fonts/typography/Article.cjs +38 -54
  125. package/dist/styles/fonts/typography/Article.js +5 -6
  126. package/dist/styles/fonts/typography/index.cjs +38 -54
  127. package/dist/styles/fonts/typography/index.js +5 -6
  128. package/dist/styles/global.cjs +41 -57
  129. package/dist/styles/global.js +2 -3
  130. package/dist/styles/type.cjs +38 -54
  131. package/dist/styles/type.js +8 -145
  132. package/dist/styles/utils.cjs +38 -54
  133. package/dist/styles/utils.js +2 -3
  134. package/dist/styles/z-index.cjs +1 -1
  135. package/dist/styles/z-index.d.cts +1 -1
  136. package/dist/styles/z-index.d.ts +1 -1
  137. package/dist/styles/z-index.js +1 -1
  138. package/dist/types/index.d.cts +2 -0
  139. package/dist/types/index.d.ts +2 -0
  140. package/dist/utils/toReactNodes.cjs +7 -3
  141. package/dist/utils/toReactNodes.js +2 -2
  142. package/package.json +10 -6
@@ -72,8 +72,8 @@ __export(Modal_exports, {
72
72
  });
73
73
  module.exports = __toCommonJS(Modal_exports);
74
74
  var import_styled7 = __toESM(require("@emotion/styled"), 1);
75
- var import_react12 = __toESM(require("react"), 1);
76
- var import_react_dom = __toESM(require("react-dom"), 1);
75
+ var import_react15 = __toESM(require("react"), 1);
76
+ var import_react_dom2 = __toESM(require("react-dom"), 1);
77
77
 
78
78
  // src/hooks/useLiveRef.tsx
79
79
  var import_react = require("react");
@@ -207,7 +207,6 @@ function useBreakpoints() {
207
207
  // src/styles/common.tsx
208
208
  var import_react5 = require("@emotion/react");
209
209
  var import_styled = __toESM(require("@emotion/styled"), 1);
210
- var import_react_tooltip = require("react-tooltip");
211
210
 
212
211
  // src/styles/colors.tsx
213
212
  var import_react4 = require("@emotion/react");
@@ -1321,65 +1320,53 @@ function hexToRGB(hex) {
1321
1320
  ] : [0, 0, 0];
1322
1321
  }
1323
1322
 
1324
- // src/styles/z-index.tsx
1325
- var z = {
1326
- card: 1,
1327
- fieldError: 1,
1328
- textInput: 2,
1329
- select: 3,
1330
- selectFocused: 4,
1331
- walletActionPreviewTopGradient: 1,
1332
- headerContainer: 99,
1333
- smBanner: 99,
1334
- headerTop: 100,
1335
- navMenu: 100,
1336
- smNavMenu: 100,
1337
- navAction: 101,
1338
- smNavAction: 100,
1339
- // keep under navDropdown
1340
- tooltip: 160,
1341
- notificationBanner: 170,
1342
- qrReaderVideo: 180,
1343
- qrReaderOverlay: 181,
1344
- modalOverlay: 190,
1345
- modalContainer: 191,
1346
- dropdown: 192,
1347
- toast: 200
1348
- };
1349
-
1350
1323
  // src/styles/common.tsx
1351
1324
  var rootFontSizePx = 12;
1352
1325
  var rootFontSizeRems = rootFontSizePx / 16;
1353
- var standardContentInsetPx = 32;
1354
- var standardContentInsetMdPx = 24;
1355
- var standardContentInsetSmPx = 16;
1326
+ function buildStandardContentInset(smPx, minSmMaxLgPx, lgPx) {
1327
+ const smCSS = import_react5.css`
1328
+ ${bp.sm(`
1329
+ margin-left: auto;
1330
+ margin-right: auto;
1331
+ width: calc(100% - ${smPx * 2}px);
1332
+ `)}
1333
+ `;
1334
+ const minSmMaxLgCSS = import_react5.css`
1335
+ ${bp.minSmMaxLg(`
1336
+ margin-left: auto;
1337
+ margin-right: auto;
1338
+ width: calc(100% - ${minSmMaxLgPx * 2}px);
1339
+ `)}
1340
+ `;
1341
+ const lgCSS = import_react5.css`
1342
+ ${bp.lg(`
1343
+ margin-left: auto;
1344
+ margin-right: auto;
1345
+ width: calc(100% - ${lgPx * 2}px);
1346
+ max-width: 1280px;
1347
+ `)}
1348
+ `;
1349
+ return {
1350
+ smPx,
1351
+ minSmMaxLgPx,
1352
+ lgPx,
1353
+ smCSS,
1354
+ minSmMaxLgCSS,
1355
+ lgCSS,
1356
+ css: import_react5.css`
1357
+ ${lgCSS}
1358
+ ${smCSS}
1359
+ ${minSmMaxLgCSS}
1360
+ `
1361
+ };
1362
+ }
1363
+ var standardContentInset = buildStandardContentInset(16, 24, 32);
1356
1364
  var standardBorderRadius = (radius) => {
1357
1365
  const borderRadiusPx = Array.isArray(radius) ? radius.map((r) => `${r}px`).join(" ") : `${radius}px`;
1358
1366
  return `
1359
1367
  border-radius: ${borderRadiusPx};
1360
1368
  `;
1361
1369
  };
1362
- var smContentInset = import_react5.css`
1363
- ${bp.sm(`
1364
- margin-left: auto;
1365
- margin-right: auto;
1366
- width: calc(100% - ${standardContentInsetSmPx * 2}px);
1367
- `)}
1368
- `;
1369
- var minSmMaxLgContentInset = import_react5.css`
1370
- ${bp.minSmMaxLg(`
1371
- width: calc(100% - ${standardContentInsetMdPx * 2}px);
1372
- `)}
1373
- `;
1374
- var standardContentInset = import_react5.css`
1375
- margin-left: auto;
1376
- margin-right: auto;
1377
- width: calc(100% - ${standardContentInsetPx * 2}px);
1378
- max-width: 1280px;
1379
-
1380
- ${smContentInset}
1381
- ${minSmMaxLgContentInset}
1382
- `;
1383
1370
  var standardCardShadow = import_react5.css`
1384
1371
  box-shadow:
1385
1372
  0px 4px 10px 0px rgba(0, 0, 0, 0.08),
@@ -1414,9 +1401,6 @@ var Subtext = import_styled.default.div`
1414
1401
  var darkGradientBg = import_react5.css`
1415
1402
  background: ${darkGradient};
1416
1403
  `;
1417
- var StyledTooltip = (0, import_styled.default)(import_react_tooltip.Tooltip)`
1418
- z-index: ${z.modalOverlay};
1419
- `;
1420
1404
  var overlaySurfaceBorderColor = ({
1421
1405
  theme,
1422
1406
  important = false
@@ -1499,6 +1483,32 @@ var overflowAutoWithoutScrollbars = import_react6.css`
1499
1483
  }
1500
1484
  `;
1501
1485
 
1486
+ // src/styles/z-index.tsx
1487
+ var z = {
1488
+ card: 1,
1489
+ fieldError: 1,
1490
+ textInput: 2,
1491
+ select: 3,
1492
+ selectFocused: 4,
1493
+ walletActionPreviewTopGradient: 1,
1494
+ headerContainer: 99,
1495
+ smBanner: 99,
1496
+ headerTop: 100,
1497
+ navMenu: 100,
1498
+ smNavMenu: 100,
1499
+ navAction: 101,
1500
+ smNavAction: 100,
1501
+ // keep under navDropdown
1502
+ notificationBanner: 170,
1503
+ qrReaderVideo: 180,
1504
+ qrReaderOverlay: 181,
1505
+ modalOverlay: 190,
1506
+ modalContainer: 191,
1507
+ dropdown: 192,
1508
+ tooltip: 193,
1509
+ toast: 200
1510
+ };
1511
+
1502
1512
  // src/utils/emotion.tsx
1503
1513
  function select(component) {
1504
1514
  return component.toString();
@@ -1546,32 +1556,36 @@ function Link({
1546
1556
  externalLink,
1547
1557
  params,
1548
1558
  children,
1549
- css: css6,
1559
+ css: css7,
1550
1560
  onClick,
1551
1561
  className,
1552
1562
  hash = null,
1553
1563
  blue = false,
1554
1564
  newTab = false
1555
1565
  }) {
1556
- if (!isString(to) && !externalLink) {
1557
- throw new Error("Link must have either `to` or `externalLink` defined");
1566
+ if (!isString(to) && !externalLink && !onClick) {
1567
+ throw new Error(
1568
+ "Link must have either `to` or `externalLink` or `onClick` defined"
1569
+ );
1558
1570
  }
1559
1571
  let toStr;
1560
1572
  if (isString(to)) {
1561
1573
  toStr = replaceParams(to, params);
1562
1574
  toStr += hash ? `#${hash}` : "";
1563
- } else {
1575
+ } else if (externalLink) {
1564
1576
  const definedExternalLink = externalLink;
1565
1577
  if (!definedExternalLink.startsWith("http")) {
1566
1578
  throw new Error("Link's externalLink must start with http");
1567
1579
  }
1568
1580
  toStr = definedExternalLink;
1581
+ } else {
1582
+ toStr = "#";
1569
1583
  }
1570
1584
  return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
1571
1585
  import_react_router_dom.Link,
1572
1586
  {
1573
1587
  to: toStr,
1574
- css: css6,
1588
+ css: css7,
1575
1589
  onClick,
1576
1590
  className,
1577
1591
  style: { color: blue ? colors.blue43 : "inherit" },
@@ -1604,8 +1618,10 @@ function toReactNodes(toReactNodesArg) {
1604
1618
  }
1605
1619
 
1606
1620
  // src/components/Button.tsx
1607
- var import_react10 = require("@emotion/react");
1621
+ var import_react12 = require("@emotion/react");
1608
1622
  var import_styled5 = __toESM(require("@emotion/styled"), 1);
1623
+ var import_lodash_es3 = require("lodash-es");
1624
+ var import_react13 = require("react");
1609
1625
 
1610
1626
  // src/components/Icon.tsx
1611
1627
  var import_styled2 = __toESM(require("@emotion/styled"), 1);
@@ -1686,9 +1702,62 @@ var IconContainer = import_styled2.default.span`
1686
1702
  `}
1687
1703
  `;
1688
1704
 
1705
+ // src/components/LightTooltip.tsx
1706
+ var import_css = require("@emotion/css");
1707
+ var import_react10 = require("@emotion/react");
1708
+ var import_react11 = __toESM(require("react"), 1);
1709
+ var import_react_dom = __toESM(require("react-dom"), 1);
1710
+ var import_react_tooltip = require("react-tooltip");
1711
+ var import_jsx_runtime5 = require("@emotion/react/jsx-runtime");
1712
+ function LightTooltip(props) {
1713
+ const nodeRef = (0, import_react11.useRef)(null);
1714
+ const [nodeReady, setNodeReady] = import_react11.default.useState(false);
1715
+ (0, import_react11.useEffect)(() => {
1716
+ if (!nodeRef.current) {
1717
+ nodeRef.current = document.createElement("div");
1718
+ document.body.appendChild(nodeRef.current);
1719
+ }
1720
+ setNodeReady(true);
1721
+ return () => {
1722
+ if (nodeRef.current) {
1723
+ document.body.removeChild(nodeRef.current);
1724
+ nodeRef.current = null;
1725
+ }
1726
+ };
1727
+ }, []);
1728
+ const theme = (0, import_react10.useTheme)();
1729
+ console.log("LightTooltip.tsx: tooltipProps:", props);
1730
+ return nodeReady && nodeRef.current ? import_react_dom.default.createPortal(
1731
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1732
+ import_react_tooltip.Tooltip,
1733
+ __spreadProps(__spreadValues({}, props), {
1734
+ id: props.id || "",
1735
+ content: props.content || "",
1736
+ noArrow: true,
1737
+ border: "0.05rem solid rgba(0, 0, 0, 0.1)",
1738
+ className: styles({ theme }),
1739
+ variant: "light",
1740
+ delayShow: 180
1741
+ })
1742
+ ),
1743
+ nodeRef.current
1744
+ ) : null;
1745
+ }
1746
+ var styles = ({ theme }) => import_css.css`
1747
+ font-size: "10px",
1748
+ color: ${theme.c2Neutral};
1749
+ border-radius: 8px !important;
1750
+ padding: 16px !important;
1751
+ z-index: ${z.tooltip};
1752
+ ${overlaySurface({ theme, important: true })};
1753
+
1754
+ max-width: 260px;
1755
+ box-shadow: 0px 1px 4px 0px rgba(0, 0, 0, 0.10), 0px 4px 8px 0px rgba(0, 0, 0, 0.08) !important;
1756
+ `;
1757
+
1689
1758
  // src/components/Loading.tsx
1690
1759
  var import_styled3 = __toESM(require("@emotion/styled"), 1);
1691
- var import_jsx_runtime5 = require("@emotion/react/jsx-runtime");
1760
+ var import_jsx_runtime6 = require("@emotion/react/jsx-runtime");
1692
1761
  var defaultProps = {
1693
1762
  size: 60,
1694
1763
  center: true,
@@ -1699,7 +1768,7 @@ function Loading({
1699
1768
  size: size2 = defaultProps.size,
1700
1769
  ml = defaultProps.ml
1701
1770
  }) {
1702
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(LoadingWrapper, { center, ml, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Rotate, { children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Icon, { name: "LoadingSpinner", width: size2 }) }) });
1771
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(LoadingWrapper, { center, ml, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Rotate, { children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Icon, { name: "LoadingSpinner", width: size2 }) }) });
1703
1772
  }
1704
1773
  Loading.defaultProps = defaultProps;
1705
1774
  var LoadingWrapper = import_styled3.default.div`
@@ -1753,7 +1822,7 @@ var UnstyledButton = import_styled4.default.button`
1753
1822
  `;
1754
1823
 
1755
1824
  // src/components/Button.tsx
1756
- var import_jsx_runtime6 = require("@emotion/react/jsx-runtime");
1825
+ var import_jsx_runtime7 = require("@emotion/react/jsx-runtime");
1757
1826
  function getTextColor({ color, theme, primary: primary2, blue }) {
1758
1827
  if (color) {
1759
1828
  return color;
@@ -1788,12 +1857,37 @@ function getBackgroundColor({
1788
1857
  }
1789
1858
  return themeOr(colors.white, theme.c1Neutral)({ theme });
1790
1859
  }
1791
- function getPaddingX({ size: size2, ghost }) {
1792
- return ghost ? 0 : size2 === "lg" ? hPaddingPx : size2 === "md" ? 18 : 16;
1860
+ var paddingsY = {
1861
+ lg: 14,
1862
+ md: 9,
1863
+ sm: 6
1864
+ };
1865
+ var roundPaddingsX = {
1866
+ lg: 19,
1867
+ md: 14,
1868
+ sm: 10
1869
+ };
1870
+ var paddingsX = {
1871
+ lg: 24,
1872
+ md: 18,
1873
+ sm: 16
1874
+ };
1875
+ function getPaddingX({
1876
+ size: size2,
1877
+ ghost,
1878
+ isRound
1879
+ }) {
1880
+ return ghost ? 0 : isRound ? roundPaddingsX[size2] : paddingsX[size2];
1793
1881
  }
1794
- function getPadding({ iconWidth, size: size2, ghost, iconSide }) {
1795
- const paddingY = ghost ? 0 : size2 === "lg" ? 14 : size2 === "md" ? 9 : 6;
1796
- const paddingX = getPaddingX({ size: size2, ghost });
1882
+ function getPadding({
1883
+ iconWidth,
1884
+ size: size2,
1885
+ ghost,
1886
+ iconSide,
1887
+ isRound
1888
+ }) {
1889
+ const paddingY = ghost ? 0 : paddingsY[size2];
1890
+ const paddingX = getPaddingX({ size: size2, ghost, isRound });
1797
1891
  const paddingForIcon = iconWidth && !ghost ? iconWidth : 0;
1798
1892
  return `${paddingY}px ${paddingX + (iconSide === "right" ? paddingForIcon : 0)}px ${paddingY}px ${paddingX + (iconSide === "left" ? paddingForIcon : 0)}px`;
1799
1893
  }
@@ -1842,40 +1936,46 @@ function Button({
1842
1936
  type = "button",
1843
1937
  blue = false,
1844
1938
  newTab = false,
1845
- zIndex = void 0
1939
+ zIndex = void 0,
1940
+ tooltipText
1846
1941
  }) {
1942
+ const tooltipId = (0, import_react13.useRef)((0, import_lodash_es3.uniqueId)());
1847
1943
  const iconMarginRight = 6;
1848
1944
  const iconSize = size2 === "lg" ? 16 : 12;
1849
1945
  let currentIcon = null;
1850
1946
  if (loading) {
1851
- currentIcon = /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ButtonIcon, { ghost, iconSide, text, size: size2, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Loading, { size: iconSize, center: false }) });
1947
+ currentIcon = /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(ButtonIcon, { ghost, iconSide, text, size: size2, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Loading, { size: iconSize, center: false }) });
1852
1948
  } else if (icon) {
1853
- currentIcon = /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ButtonIcon, { ghost, iconSide, text, size: size2, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Icon, { name: icon, width: iconSize }) });
1949
+ currentIcon = /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(ButtonIcon, { ghost, iconSide, text, size: size2, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Icon, { name: icon, width: iconSize }) });
1854
1950
  }
1855
- const content = /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
1856
- "div",
1857
- {
1858
- css: {
1859
- display: "flex",
1860
- alignItems: "center",
1861
- justifyContent: "center"
1862
- },
1863
- children: [
1864
- iconSide === "left" && currentIcon,
1865
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1866
- "div",
1867
- {
1868
- css: {
1869
- textOverflow: "ellipsis",
1870
- overflow: "hidden"
1871
- },
1872
- children: text
1873
- }
1874
- ),
1875
- iconSide === "right" && currentIcon
1876
- ]
1877
- }
1878
- );
1951
+ const content = /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_react13.Fragment, { children: [
1952
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
1953
+ "div",
1954
+ __spreadProps(__spreadValues({}, tooltipText ? { "data-tooltip-id": tooltipId.current } : {}), {
1955
+ css: {
1956
+ display: "flex",
1957
+ alignItems: "center",
1958
+ justifyContent: "center"
1959
+ },
1960
+ children: [
1961
+ iconSide === "left" && currentIcon,
1962
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1963
+ "div",
1964
+ {
1965
+ css: {
1966
+ textOverflow: "ellipsis",
1967
+ overflow: "hidden"
1968
+ },
1969
+ children: text
1970
+ }
1971
+ ),
1972
+ iconSide === "right" && currentIcon
1973
+ ]
1974
+ })
1975
+ ),
1976
+ tooltipText ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(LightTooltip, { id: tooltipId.current, content: tooltipText }) : null
1977
+ ] });
1978
+ const isSingleCharRoundButton = Boolean(text && text.length === 1 && !icon);
1879
1979
  const commonProps = {
1880
1980
  backgroundColor,
1881
1981
  color,
@@ -1888,6 +1988,7 @@ function Button({
1888
1988
  fullWidth,
1889
1989
  blue,
1890
1990
  iconSide,
1991
+ isRound: isSingleCharRoundButton,
1891
1992
  iconWidth: currentIcon ? iconSize + iconMarginRight : 0,
1892
1993
  isLoading: loading,
1893
1994
  disabled: disabled || loading,
@@ -1900,11 +2001,10 @@ function Button({
1900
2001
  zIndex
1901
2002
  };
1902
2003
  if (to) {
1903
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ButtonLink, __spreadProps(__spreadValues({}, commonProps), { to, params: toParams, hash, children: content }));
2004
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(ButtonLink, __spreadProps(__spreadValues({}, commonProps), { to, params: toParams, hash, children: content }));
1904
2005
  }
1905
- return href ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ButtonHrefLink, __spreadProps(__spreadValues({}, commonProps), { href, target: "_blank", children: content })) : /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(StyledButton, __spreadProps(__spreadValues({}, commonProps), { children: content }));
2006
+ return href ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(ButtonHrefLink, __spreadProps(__spreadValues({}, commonProps), { href, target: "_blank", children: content })) : /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(StyledButton, __spreadProps(__spreadValues({}, commonProps), { children: content }));
1906
2007
  }
1907
- var hPaddingPx = 24;
1908
2008
  var buttonStyle = ({
1909
2009
  color,
1910
2010
  backgroundColor,
@@ -1920,8 +2020,9 @@ var buttonStyle = ({
1920
2020
  blue,
1921
2021
  text,
1922
2022
  zIndex,
1923
- iconSide
1924
- }) => import_react10.css`
2023
+ iconSide,
2024
+ isRound
2025
+ }) => import_react12.css`
1925
2026
  display: inline-flex;
1926
2027
  opacity: ${disabled && !isLoading ? 0.2 : 1};
1927
2028
  transition: opacity 0.2s;
@@ -1957,8 +2058,15 @@ var buttonStyle = ({
1957
2058
  primary: primary2,
1958
2059
  blue
1959
2060
  })};
1960
- border-radius: 32px;
1961
- padding: ${getPadding({ size: size2, iconWidth, text, ghost, iconSide })};
2061
+ border-radius: ${isRound ? "100%" : "32px"};
2062
+ padding: ${getPadding({
2063
+ size: size2,
2064
+ iconWidth,
2065
+ text,
2066
+ ghost,
2067
+ iconSide,
2068
+ isRound
2069
+ })};
1962
2070
  color: ${getTextColor({ color, theme, primary: primary2, blue })};
1963
2071
  transition:
1964
2072
  background-color 0.2s ease-out,
@@ -1971,7 +2079,7 @@ var buttonStyle = ({
1971
2079
  `;
1972
2080
  var ButtonIcon = import_styled5.default.div`
1973
2081
  ${(props) => props.ghost ? "" : "position: absolute;"}
1974
- ${({ iconSide, ghost, text, size: size2 }) => `${iconSide}: ${ghost && text ? 0 : getPaddingX({ size: size2, ghost })}px;`}
2082
+ ${({ iconSide, ghost, text, size: size2 }) => `${iconSide}: ${ghost && text ? 0 : getPaddingX({ size: size2, ghost, isRound: false })}px;`}
1975
2083
  `;
1976
2084
  var StyledButton = (0, import_styled5.default)(UnstyledButton)`
1977
2085
  ${(props) => buttonStyle(props)}
@@ -1985,8 +2093,8 @@ var ButtonHrefLink = import_styled5.default.a`
1985
2093
 
1986
2094
  // src/components/ProgressBar.tsx
1987
2095
  var import_styled6 = __toESM(require("@emotion/styled"), 1);
1988
- var import_react11 = require("react");
1989
- var import_jsx_runtime7 = require("@emotion/react/jsx-runtime");
2096
+ var import_react14 = require("react");
2097
+ var import_jsx_runtime8 = require("@emotion/react/jsx-runtime");
1990
2098
  var defaultProps2 = {
1991
2099
  isSm: false,
1992
2100
  stepDuration: 0.5
@@ -1997,8 +2105,8 @@ function ProgressBar({
1997
2105
  isSm = defaultProps2.isSm,
1998
2106
  stepDuration = defaultProps2.stepDuration
1999
2107
  }) {
2000
- const [percentage, setPercentage] = (0, import_react11.useState)(5);
2001
- (0, import_react11.useEffect)(() => {
2108
+ const [percentage, setPercentage] = (0, import_react14.useState)(5);
2109
+ (0, import_react14.useEffect)(() => {
2002
2110
  if (progressPercentage !== void 0) {
2003
2111
  setPercentage(progressPercentage);
2004
2112
  } else {
@@ -2007,7 +2115,7 @@ function ProgressBar({
2007
2115
  }, 0);
2008
2116
  }
2009
2117
  }, [progressPercentage]);
2010
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(ProgressBarContainer, { isSm, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Bar, { isSm, percentage, stepDuration, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
2118
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(ProgressBarContainer, { isSm, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Bar, { isSm, percentage, stepDuration, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2011
2119
  BarBg,
2012
2120
  {
2013
2121
  background,
@@ -2054,7 +2162,7 @@ var Bar = import_styled6.default.div`
2054
2162
  `;
2055
2163
 
2056
2164
  // src/components/Modal.tsx
2057
- var import_jsx_runtime8 = require("@emotion/react/jsx-runtime");
2165
+ var import_jsx_runtime9 = require("@emotion/react/jsx-runtime");
2058
2166
  function Modal({
2059
2167
  visible,
2060
2168
  title,
@@ -2069,31 +2177,31 @@ function Modal({
2069
2177
  submitDisabled,
2070
2178
  submitLoading,
2071
2179
  submitText,
2072
- cancelText,
2180
+ cancelText = "Cancel",
2073
2181
  firstFocusRef,
2074
2182
  nonDismissable = false,
2075
2183
  autoFocus = true,
2076
2184
  width = 460,
2077
2185
  progressBar
2078
2186
  }) {
2079
- const visibleChangedRef = (0, import_react12.useRef)(false);
2080
- const nodeRef = (0, import_react12.useRef)(null);
2187
+ const visibleChangedRef = (0, import_react15.useRef)(false);
2188
+ const nodeRef = (0, import_react15.useRef)(null);
2081
2189
  const [defaultFirstFocusRef, defaultFirstFocusRefCb] = useLiveRef();
2082
2190
  const ref = firstFocusRef || defaultFirstFocusRef;
2083
- const [nodeReady, setNodeReady] = import_react12.default.useState(false);
2084
- const overlayRef = (0, import_react12.useRef)(null);
2085
- const prevFocusedElement = (0, import_react12.useRef)();
2086
- const modalContainerRef = (0, import_react12.useRef)(null);
2191
+ const [nodeReady, setNodeReady] = import_react15.default.useState(false);
2192
+ const overlayRef = (0, import_react15.useRef)(null);
2193
+ const prevFocusedElement = (0, import_react15.useRef)();
2194
+ const modalContainerRef = (0, import_react15.useRef)(null);
2087
2195
  const bp2 = useBreakpoints();
2088
2196
  const isSm = bp2.current("sm" /* sm */);
2089
2197
  const formattedDescription = description ? toReactNodes(description) : null;
2090
- (0, import_react12.useEffect)(() => {
2198
+ (0, import_react15.useEffect)(() => {
2091
2199
  if (visible !== visibleChangedRef.current) {
2092
2200
  visibleChangedRef.current = visible;
2093
2201
  }
2094
2202
  }, [visible]);
2095
2203
  const visibleChanged = visible !== visibleChangedRef.current;
2096
- (0, import_react12.useEffect)(() => {
2204
+ (0, import_react15.useEffect)(() => {
2097
2205
  prevFocusedElement.current = document.activeElement;
2098
2206
  if (!nodeRef.current) {
2099
2207
  nodeRef.current = document.createElement("div");
@@ -2107,7 +2215,7 @@ function Modal({
2107
2215
  }
2108
2216
  };
2109
2217
  }, []);
2110
- (0, import_react12.useEffect)(() => {
2218
+ (0, import_react15.useEffect)(() => {
2111
2219
  const handleOutsideClick = (event) => {
2112
2220
  if (visible && overlayRef.current && event.target && overlayRef.current.contains(event.target) && !nonDismissable) {
2113
2221
  onClose();
@@ -2144,7 +2252,7 @@ function Modal({
2144
2252
  }
2145
2253
  };
2146
2254
  }, [onClose, visible, nonDismissable]);
2147
- (0, import_react12.useLayoutEffect)(() => {
2255
+ (0, import_react15.useLayoutEffect)(() => {
2148
2256
  if (visible) {
2149
2257
  if (visibleChanged) {
2150
2258
  prevFocusedElement.current = document.activeElement;
@@ -2173,9 +2281,9 @@ function Modal({
2173
2281
  onClose();
2174
2282
  }
2175
2283
  }
2176
- const modalContent = /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_react12.Fragment, { children: [
2177
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(ModalOverlay, { ref: overlayRef }),
2178
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2284
+ const modalContent = /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_react15.Fragment, { children: [
2285
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(ModalOverlay, { ref: overlayRef }),
2286
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2179
2287
  ModalContainer,
2180
2288
  {
2181
2289
  "aria-modal": true,
@@ -2183,30 +2291,30 @@ function Modal({
2183
2291
  tabIndex: -1,
2184
2292
  role: "dialog",
2185
2293
  ref: modalContainerRef,
2186
- children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(ModalContent, { width, ghost, children: [
2187
- !firstFocusRef && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(DefaultFocusTarget, { ref: defaultFirstFocusRefCb }),
2188
- !(nonDismissable || ghost) && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(CloseButton, { onClick: onClickCloseButton, type: "button", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Icon, { name: "Close", width: 9 }) }),
2189
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(ModalContentInner, { ghost, children: [
2190
- progressBar ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { css: { marginBottom: "20px" }, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2294
+ children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(ModalContent, { width, ghost, children: [
2295
+ !firstFocusRef && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(DefaultFocusTarget, { ref: defaultFirstFocusRefCb }),
2296
+ !(nonDismissable || ghost) && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(CloseButton, { onClick: onClickCloseButton, type: "button", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Icon, { name: "Close", width: 9 }) }),
2297
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(ModalContentInner, { ghost, children: [
2298
+ progressBar ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { css: { marginBottom: "20px" }, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2191
2299
  ProgressBar,
2192
2300
  {
2193
2301
  progressPercentage: progressBar.progressPercentage,
2194
2302
  isSm: progressBar.isSm
2195
2303
  }
2196
2304
  ) }) : null,
2197
- title ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("h4", { children: title }) : null,
2198
- formattedDescription ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Description, { children: formattedDescription }) : null,
2199
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { children }),
2200
- onSubmit ? /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(ModalButtonRow, { children: [
2201
- !isSm && !cancelHidden && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2305
+ title ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("h4", { children: title }) : null,
2306
+ formattedDescription ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Description, { children: formattedDescription }) : null,
2307
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { children }),
2308
+ onSubmit || onCancel ? /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(ModalButtonRow, { children: [
2309
+ !isSm && !cancelHidden && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2202
2310
  Button,
2203
2311
  {
2204
2312
  disabled: cancelDisabled,
2205
2313
  onClick: onClickCancel,
2206
- text: cancelText != null ? cancelText : "Cancel"
2314
+ text: cancelText
2207
2315
  }
2208
2316
  ),
2209
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2317
+ onSubmit && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2210
2318
  Button,
2211
2319
  {
2212
2320
  disabled: submitDisabled,
@@ -2216,15 +2324,15 @@ function Modal({
2216
2324
  type: "submit"
2217
2325
  }
2218
2326
  ),
2219
- isSm && !cancelHidden && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Button, { onClick: onClose, text: "Cancel" })
2327
+ isSm && !cancelHidden && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Button, { onClick: onClose, text: cancelText })
2220
2328
  ] }) : null
2221
2329
  ] })
2222
2330
  ] })
2223
2331
  }
2224
2332
  )
2225
2333
  ] });
2226
- return visible && nodeReady && nodeRef.current ? import_react_dom.default.createPortal(
2227
- onSubmit ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("form", { onSubmit: onSubmitForm, children: modalContent }) : modalContent,
2334
+ return visible && nodeReady && nodeRef.current ? import_react_dom2.default.createPortal(
2335
+ onSubmit ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("form", { onSubmit: onSubmitForm, children: modalContent }) : modalContent,
2228
2336
  nodeRef.current
2229
2337
  ) : null;
2230
2338
  }
@@ -2259,7 +2367,7 @@ var ModalContainer = import_styled7.default.div`
2259
2367
  justify-content: center;
2260
2368
  align-items: center;
2261
2369
  color: ${({ theme }) => theme.text};
2262
- padding-top: ${standardContentInsetSmPx}px;
2370
+ padding-top: ${standardContentInset.smPx}px;
2263
2371
  `;
2264
2372
  var contentTopMarginPx = 24;
2265
2373
  var Description = import_styled7.default.div`
@@ -2272,6 +2380,7 @@ var Description = import_styled7.default.div`
2272
2380
  var ModalButtonRow = import_styled7.default.div`
2273
2381
  margin-top: 32px;
2274
2382
  ${bp.minSm(`display: flex;`)}
2383
+ gap: 10px;
2275
2384
 
2276
2385
  button {
2277
2386
  width: 50%;
@@ -2284,14 +2393,11 @@ var ModalButtonRow = import_styled7.default.div`
2284
2393
  ${bp.sm(`
2285
2394
  margin-top: 16px;
2286
2395
  `)}
2287
- ${bp.minSm(`
2288
- margin-left: 10px;
2289
- `)}
2290
2396
  }
2291
2397
  `;
2292
2398
  var ModalContent = import_styled7.default.div`
2293
2399
  ${overflowAutoWithoutScrollbars}
2294
- ${smContentInset}
2400
+ ${standardContentInset.smCSS}
2295
2401
  ${standardBorderRadius(16)}
2296
2402
  ${(props) => props.ghost ? "" : overlaySurface}
2297
2403
  pointer-events: auto;