dash-ui-kit 1.0.93 → 2.0.0-dev

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 (186) hide show
  1. package/README.md +52 -0
  2. package/dist/react/components/accordion/index.cjs.js +193 -0
  3. package/dist/react/components/accordion/index.cjs.js.map +1 -0
  4. package/dist/react/components/accordion/index.esm.js +169 -0
  5. package/dist/react/components/accordion/index.esm.js.map +1 -0
  6. package/dist/react/components/avatar/index.cjs.js +39 -0
  7. package/dist/react/components/avatar/index.cjs.js.map +1 -0
  8. package/dist/react/components/avatar/index.esm.js +34 -0
  9. package/dist/react/components/avatar/index.esm.js.map +1 -0
  10. package/dist/react/components/badge/index.cjs.js +92 -0
  11. package/dist/react/components/badge/index.cjs.js.map +1 -0
  12. package/dist/react/components/badge/index.esm.js +87 -0
  13. package/dist/react/components/badge/index.esm.js.map +1 -0
  14. package/dist/react/components/bigNumber/index.cjs.js +100 -0
  15. package/dist/react/components/bigNumber/index.cjs.js.map +1 -0
  16. package/dist/react/components/bigNumber/index.esm.js +95 -0
  17. package/dist/react/components/bigNumber/index.esm.js.map +1 -0
  18. package/dist/react/components/button/index.cjs.js +535 -0
  19. package/dist/react/components/button/index.cjs.js.map +1 -0
  20. package/dist/react/components/button/index.d.ts +3 -1
  21. package/dist/react/components/button/index.esm.js +530 -0
  22. package/dist/react/components/button/index.esm.js.map +1 -0
  23. package/dist/react/components/copyButton/index.cjs.js +95 -0
  24. package/dist/react/components/copyButton/index.cjs.js.map +1 -0
  25. package/dist/react/components/copyButton/index.esm.js +71 -0
  26. package/dist/react/components/copyButton/index.esm.js.map +1 -0
  27. package/dist/react/components/dashLogo/index.cjs.js +74 -0
  28. package/dist/react/components/dashLogo/index.cjs.js.map +1 -0
  29. package/dist/react/components/dashLogo/index.esm.js +69 -0
  30. package/dist/react/components/dashLogo/index.esm.js.map +1 -0
  31. package/dist/react/components/dateBlock/index.cjs.js +120 -0
  32. package/dist/react/components/dateBlock/index.cjs.js.map +1 -0
  33. package/dist/react/components/dateBlock/index.esm.js +115 -0
  34. package/dist/react/components/dateBlock/index.esm.js.map +1 -0
  35. package/dist/react/components/dialog/index.cjs.js +292 -0
  36. package/dist/react/components/dialog/index.cjs.js.map +1 -0
  37. package/dist/react/components/dialog/index.esm.js +270 -0
  38. package/dist/react/components/dialog/index.esm.js.map +1 -0
  39. package/dist/react/components/heading/index.cjs.js +60 -0
  40. package/dist/react/components/heading/index.cjs.js.map +1 -0
  41. package/dist/react/components/heading/index.esm.js +58 -0
  42. package/dist/react/components/heading/index.esm.js.map +1 -0
  43. package/dist/react/components/icons/index.cjs.js +1173 -0
  44. package/dist/react/components/icons/index.cjs.js.map +1 -0
  45. package/dist/react/components/icons/index.d.ts +2 -0
  46. package/dist/react/components/icons/index.esm.js +1128 -0
  47. package/dist/react/components/icons/index.esm.js.map +1 -0
  48. package/dist/react/components/identifier/index.cjs.js +286 -0
  49. package/dist/react/components/identifier/index.cjs.js.map +1 -0
  50. package/dist/react/components/identifier/index.esm.js +282 -0
  51. package/dist/react/components/identifier/index.esm.js.map +1 -0
  52. package/dist/react/components/index.cjs.js +101 -0
  53. package/dist/react/components/index.cjs.js.map +1 -0
  54. package/dist/react/components/index.d.ts +1 -1
  55. package/dist/react/components/index.esm.js +29 -0
  56. package/dist/react/components/index.esm.js.map +1 -0
  57. package/dist/react/components/input/index.cjs.js +237 -0
  58. package/dist/react/components/input/index.cjs.js.map +1 -0
  59. package/dist/react/components/input/index.esm.js +232 -0
  60. package/dist/react/components/input/index.esm.js.map +1 -0
  61. package/dist/react/components/list/index.cjs.js +49 -0
  62. package/dist/react/components/list/index.cjs.js.map +1 -0
  63. package/dist/react/components/list/index.esm.js +47 -0
  64. package/dist/react/components/list/index.esm.js.map +1 -0
  65. package/dist/react/components/notActive/index.cjs.js +40 -0
  66. package/dist/react/components/notActive/index.cjs.js.map +1 -0
  67. package/dist/react/components/notActive/index.esm.js +38 -0
  68. package/dist/react/components/notActive/index.esm.js.map +1 -0
  69. package/dist/react/components/overlayMenu/index.cjs.js +425 -0
  70. package/dist/react/components/overlayMenu/index.cjs.js.map +1 -0
  71. package/dist/react/components/overlayMenu/index.esm.js +420 -0
  72. package/dist/react/components/overlayMenu/index.esm.js.map +1 -0
  73. package/dist/react/components/overlaySelect/index.cjs.js +345 -0
  74. package/dist/react/components/overlaySelect/index.cjs.js.map +1 -0
  75. package/dist/react/components/overlaySelect/index.esm.js +340 -0
  76. package/dist/react/components/overlaySelect/index.esm.js.map +1 -0
  77. package/dist/react/components/progressStepBar/index.cjs.js +49 -0
  78. package/dist/react/components/progressStepBar/index.cjs.js.map +1 -0
  79. package/dist/react/components/progressStepBar/index.d.ts +2 -1
  80. package/dist/react/components/progressStepBar/index.esm.js +47 -0
  81. package/dist/react/components/progressStepBar/index.esm.js.map +1 -0
  82. package/dist/react/components/select/index.cjs.js +236 -0
  83. package/dist/react/components/select/index.cjs.js.map +1 -0
  84. package/dist/react/components/select/index.esm.js +212 -0
  85. package/dist/react/components/select/index.esm.js.map +1 -0
  86. package/dist/react/components/switch/index.cjs.js +184 -0
  87. package/dist/react/components/switch/index.cjs.js.map +1 -0
  88. package/dist/react/components/switch/index.esm.js +179 -0
  89. package/dist/react/components/switch/index.esm.js.map +1 -0
  90. package/dist/react/components/tabs/index.cjs.js +178 -0
  91. package/dist/react/components/tabs/index.cjs.js.map +1 -0
  92. package/dist/react/components/tabs/index.esm.js +154 -0
  93. package/dist/react/components/tabs/index.esm.js.map +1 -0
  94. package/dist/react/components/text/index.cjs.js +120 -0
  95. package/dist/react/components/text/index.cjs.js.map +1 -0
  96. package/dist/react/components/text/index.esm.js +115 -0
  97. package/dist/react/components/text/index.esm.js.map +1 -0
  98. package/dist/react/components/textarea/index.cjs.js +256 -0
  99. package/dist/react/components/textarea/index.cjs.js.map +1 -0
  100. package/dist/react/components/textarea/index.esm.js +251 -0
  101. package/dist/react/components/textarea/index.esm.js.map +1 -0
  102. package/dist/react/components/timeDelta/index.cjs.js +93 -0
  103. package/dist/react/components/timeDelta/index.cjs.js.map +1 -0
  104. package/dist/react/components/timeDelta/index.d.ts +1 -1
  105. package/dist/react/components/timeDelta/index.esm.js +88 -0
  106. package/dist/react/components/timeDelta/index.esm.js.map +1 -0
  107. package/dist/react/components/transactionStatusIcon/index.cjs.js +59 -0
  108. package/dist/react/components/transactionStatusIcon/index.cjs.js.map +1 -0
  109. package/dist/react/components/transactionStatusIcon/index.esm.js +54 -0
  110. package/dist/react/components/transactionStatusIcon/index.esm.js.map +1 -0
  111. package/dist/react/components/valueCard/index.cjs.js +176 -0
  112. package/dist/react/components/valueCard/index.cjs.js.map +1 -0
  113. package/dist/react/components/valueCard/index.d.ts +1 -1
  114. package/dist/react/components/valueCard/index.esm.js +171 -0
  115. package/dist/react/components/valueCard/index.esm.js.map +1 -0
  116. package/dist/react/contexts/ThemeContext.cjs.js +79 -0
  117. package/dist/react/contexts/ThemeContext.cjs.js.map +1 -0
  118. package/dist/react/contexts/ThemeContext.esm.js +76 -0
  119. package/dist/react/contexts/ThemeContext.esm.js.map +1 -0
  120. package/dist/react/contexts/index.cjs.js +11 -0
  121. package/dist/react/contexts/index.cjs.js.map +1 -0
  122. package/dist/react/contexts/index.esm.js +4 -0
  123. package/dist/react/contexts/index.esm.js.map +1 -0
  124. package/dist/react/hooks/useDebounce.cjs.js +83 -0
  125. package/dist/react/hooks/useDebounce.cjs.js.map +1 -0
  126. package/dist/react/hooks/useDebounce.esm.js +78 -0
  127. package/dist/react/hooks/useDebounce.esm.js.map +1 -0
  128. package/dist/react/index.cjs.js +99 -12811
  129. package/dist/react/index.cjs.js.map +1 -1
  130. package/dist/react/index.d.ts +1 -1
  131. package/dist/react/index.esm.js +27 -12725
  132. package/dist/react/index.esm.js.map +1 -1
  133. package/dist/react/shared/utils/datetime.cjs.js +59 -0
  134. package/dist/react/shared/utils/datetime.cjs.js.map +1 -0
  135. package/dist/react/shared/utils/datetime.esm.js +57 -0
  136. package/dist/react/shared/utils/datetime.esm.js.map +1 -0
  137. package/dist/react/utils/copyToClipboard.cjs.js +31 -0
  138. package/dist/react/utils/copyToClipboard.cjs.js.map +1 -0
  139. package/dist/react/utils/copyToClipboard.esm.js +26 -0
  140. package/dist/react/utils/copyToClipboard.esm.js.map +1 -0
  141. package/dist/react/utils/index.d.ts +1 -1
  142. package/dist/react-native/components/avatar/index.d.ts +26 -0
  143. package/dist/react-native/components/avatar/index.web.d.ts +24 -0
  144. package/dist/react-native/components/badge/index.d.ts +51 -0
  145. package/dist/react-native/components/bigNumber/index.d.ts +26 -0
  146. package/dist/react-native/components/button/index.d.ts +39 -0
  147. package/dist/react-native/components/copyButton/index.d.ts +22 -0
  148. package/dist/react-native/components/copyButton/index.web.d.ts +20 -0
  149. package/dist/react-native/components/dashLogo/index.d.ts +30 -0
  150. package/dist/react-native/components/heading/index.d.ts +25 -0
  151. package/dist/react-native/components/icons/index.d.ts +43 -0
  152. package/dist/react-native/components/identifier/index.d.ts +47 -0
  153. package/dist/react-native/components/index.d.ts +15 -0
  154. package/dist/react-native/components/input/index.d.ts +53 -0
  155. package/dist/react-native/components/notActive/index.d.ts +16 -0
  156. package/dist/react-native/components/tabs/index.d.ts +50 -0
  157. package/dist/react-native/components/text/index.d.ts +28 -0
  158. package/dist/react-native/components/transactionStatusIcon/index.d.ts +24 -0
  159. package/dist/react-native/components/valueCard/index.d.ts +43 -0
  160. package/dist/react-native/hooks/index.d.ts +1 -0
  161. package/dist/react-native/hooks/useDebounce.d.ts +43 -0
  162. package/dist/react-native/index.cjs.js +2856 -0
  163. package/dist/react-native/index.cjs.js.map +1 -0
  164. package/dist/react-native/index.d.ts +4 -0
  165. package/dist/react-native/index.esm.js +2808 -0
  166. package/dist/react-native/index.esm.js.map +1 -0
  167. package/dist/react-native/styles/index.d.ts +11 -0
  168. package/dist/react-native/styles/tokens.d.ts +308 -0
  169. package/dist/react-native/styles/utils.d.ts +65 -0
  170. package/dist/react-native/utils/clipboard.d.ts +27 -0
  171. package/dist/react-native/utils/index.d.ts +2 -0
  172. package/dist/react-native/utils/tw.d.ts +7 -0
  173. package/dist/shared/constants/colors.d.ts +25 -0
  174. package/dist/shared/constants/index.d.ts +2 -0
  175. package/dist/shared/constants/sizes.d.ts +49 -0
  176. package/dist/shared/index.cjs.js +171 -0
  177. package/dist/shared/index.cjs.js.map +1 -0
  178. package/dist/shared/index.d.ts +3 -0
  179. package/dist/shared/index.esm.js +161 -0
  180. package/dist/shared/index.esm.js.map +1 -0
  181. package/dist/shared/types/common.d.ts +33 -0
  182. package/dist/shared/types/index.d.ts +1 -0
  183. package/dist/shared/utils/index.d.ts +1 -0
  184. package/dist/styles.css +1 -1
  185. package/package.json +50 -8
  186. /package/dist/{react → shared}/utils/datetime.d.ts +0 -0
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { type TimeDeltaFormat } from '../../utils/datetime';
2
+ import { type TimeDeltaFormat } from '../../../shared/utils/datetime';
3
3
  export interface TimeDeltaProps {
4
4
  /** Start date for delta calculation, defaults to now */
5
5
  startDate?: Date | number | string;
@@ -0,0 +1,88 @@
1
+ "use client";
2
+
3
+ import { jsx } from 'react/jsx-runtime';
4
+ import { useState, useEffect } from 'react';
5
+ import { cva } from 'class-variance-authority';
6
+ import { NotActive } from '../notActive/index.esm.js';
7
+ import { getTimeDelta } from '../../shared/utils/datetime.esm.js';
8
+ import { useTheme } from '../../contexts/ThemeContext.esm.js';
9
+
10
+ const wrapperStyles = cva('inline', {
11
+ variants: {
12
+ theme: {
13
+ light: 'text-gray-900',
14
+ dark: 'text-gray-100'
15
+ }
16
+ },
17
+ defaultVariants: {
18
+ theme: 'light'
19
+ }
20
+ });
21
+ /**
22
+ * TimeDelta component renews a human-readable delta string periodically,
23
+ * and optionally wraps it in a tooltip showing the exact date/time.
24
+ * Supports light/dark theme.
25
+ */
26
+ const TimeDelta = ({
27
+ startDate,
28
+ endDate,
29
+ // showTimestampTooltip = true,
30
+ // tooltipDate,
31
+ format = 'default'
32
+ }) => {
33
+ const {
34
+ theme
35
+ } = useTheme();
36
+ const [timeDelta, setTimeDelta] = useState(null);
37
+ // const tooltipDateObj = new Date(tooltipDate ?? endDate)
38
+ useEffect(() => {
39
+ if (endDate == null) {
40
+ setTimeDelta(null);
41
+ return;
42
+ }
43
+ let timeoutId;
44
+ const updateDelta = () => {
45
+ const start = startDate != null ? new Date(startDate) : new Date();
46
+ const end = new Date(endDate);
47
+ setTimeDelta(getTimeDelta(start, end, format));
48
+ const now = new Date();
49
+ const diffMs = Math.abs(end.getTime() - now.getTime());
50
+ if (diffMs > 60000) {
51
+ const msToNextMinute = (60 - now.getSeconds()) * 1000 - now.getMilliseconds();
52
+ timeoutId = setTimeout(updateDelta, msToNextMinute);
53
+ } else {
54
+ timeoutId = setTimeout(updateDelta, 1000);
55
+ }
56
+ };
57
+ updateDelta();
58
+ return () => clearTimeout(timeoutId);
59
+ }, [startDate, endDate, format]);
60
+ if (timeDelta == null || timeDelta === '') {
61
+ return jsx(NotActive, {});
62
+ }
63
+ // const showTooltip = showTimestampTooltip && format !== 'detailed' && !isNaN(tooltipDateObj.getTime())
64
+ const content = jsx("span", {
65
+ className: wrapperStyles({
66
+ theme
67
+ }),
68
+ children: timeDelta
69
+ });
70
+ // if (showTooltip) {
71
+ // return (
72
+ // <Tooltip
73
+ // placement="top"
74
+ // content={
75
+ // <span className={tooltipContentStyles()}>
76
+ // {tooltipDateObj.toLocaleDateString()}{' '}{tooltipDateObj.toLocaleTimeString()}
77
+ // </span>
78
+ // }
79
+ // >
80
+ // {content}
81
+ // </Tooltip>
82
+ // )
83
+ // }
84
+ return content;
85
+ };
86
+
87
+ export { TimeDelta, TimeDelta as default };
88
+ //# sourceMappingURL=index.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm.js","sources":["../../../../src/react/components/timeDelta/index.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react'\nimport { cva } from 'class-variance-authority'\nimport { NotActive } from '../notActive'\nimport { getTimeDelta, type TimeDeltaFormat } from '../../../shared/utils/datetime'\nimport { useTheme } from '../../contexts/ThemeContext'\n\nconst wrapperStyles = cva(\n 'inline',\n {\n variants: {\n theme: {\n light: 'text-gray-900',\n dark: 'text-gray-100'\n }\n },\n defaultVariants: {\n theme: 'light'\n }\n }\n)\n\nexport interface TimeDeltaProps {\n /** Start date for delta calculation, defaults to now */\n startDate?: Date | number | string\n /** End date or timestamp */\n endDate: Date | number | string\n /** Show tooltip with exact timestamp */\n showTimestampTooltip?: boolean\n /** Override date for tooltip instead of endDate */\n tooltipDate?: Date | number | string\n /** Format mode: 'default' shows delta and tooltip, 'detailed' suppresses tooltip */\n format?: TimeDeltaFormat\n}\n\n/**\n * TimeDelta component renews a human-readable delta string periodically,\n * and optionally wraps it in a tooltip showing the exact date/time.\n * Supports light/dark theme.\n */\nexport const TimeDelta: React.FC<TimeDeltaProps> = ({\n startDate,\n endDate,\n // showTimestampTooltip = true,\n // tooltipDate,\n format = 'default'\n}) => {\n const { theme } = useTheme()\n const [timeDelta, setTimeDelta] = useState<string | null>(null)\n // const tooltipDateObj = new Date(tooltipDate ?? endDate)\n\n useEffect(() => {\n if (endDate == null) {\n setTimeDelta(null)\n return\n }\n\n let timeoutId: ReturnType<typeof setTimeout>\n\n const updateDelta = (): void => {\n const start = startDate != null ? new Date(startDate) : new Date()\n const end = new Date(endDate)\n setTimeDelta(getTimeDelta(start, end, format))\n\n const now = new Date()\n const diffMs = Math.abs(end.getTime() - now.getTime())\n if (diffMs > 60_000) {\n const msToNextMinute = (60 - now.getSeconds()) * 1000 - now.getMilliseconds()\n timeoutId = setTimeout(updateDelta, msToNextMinute)\n } else {\n timeoutId = setTimeout(updateDelta, 1000)\n }\n }\n\n updateDelta()\n\n return () => clearTimeout(timeoutId)\n }, [startDate, endDate, format])\n\n if (timeDelta == null || timeDelta === '') {\n return <NotActive />\n }\n\n // const showTooltip = showTimestampTooltip && format !== 'detailed' && !isNaN(tooltipDateObj.getTime())\n const content = <span className={wrapperStyles({ theme })}>{timeDelta}</span>\n\n // if (showTooltip) {\n // return (\n // <Tooltip\n // placement=\"top\"\n // content={\n // <span className={tooltipContentStyles()}>\n // {tooltipDateObj.toLocaleDateString()}{' '}{tooltipDateObj.toLocaleTimeString()}\n // </span>\n // }\n // >\n // {content}\n // </Tooltip>\n // )\n // }\n\n return content\n}\n\nexport default TimeDelta "],"names":["wrapperStyles","cva","variants","theme","light","dark","defaultVariants","TimeDelta","startDate","endDate","format","useTheme","timeDelta","setTimeDelta","useState","useEffect","timeoutId","updateDelta","start","Date","end","getTimeDelta","now","diffMs","Math","abs","getTime","msToNextMinute","getSeconds","getMilliseconds","setTimeout","clearTimeout","_jsx","NotActive","content","className","children"],"mappings":";;;;;;;;;AAMA,MAAMA,aAAa,GAAGC,GAAG,CACvB,QAAQ,EACR;AACEC,EAAAA,QAAQ,EAAE;AACRC,IAAAA,KAAK,EAAE;AACLC,MAAAA,KAAK,EAAE,eAAe;AACtBC,MAAAA,IAAI,EAAE;AACP;GACF;AACDC,EAAAA,eAAe,EAAE;AACfH,IAAAA,KAAK,EAAE;AACR;AACF,CAAA,CACF;AAeD;;;;AAIG;AACI,MAAMI,SAAS,GAA6BA,CAAC;EAClDC,SAAS;EACTC,OAAO;AACP;AACA;AACAC,EAAAA,MAAM,GAAG;AACV,CAAA,KAAI;EACH,MAAM;AAAEP,IAAAA;GAAO,GAAGQ,QAAQ,EAAE;EAC5B,MAAM,CAACC,SAAS,EAAEC,YAAY,CAAC,GAAGC,QAAQ,CAAgB,IAAI,CAAC;AAC/D;AAEAC,EAAAA,SAAS,CAAC,MAAK;IACb,IAAIN,OAAO,IAAI,IAAI,EAAE;MACnBI,YAAY,CAAC,IAAI,CAAC;AAClB,MAAA;AACF;AAEA,IAAA,IAAIG,SAAwC;IAE5C,MAAMC,WAAW,GAAGA,MAAW;AAC7B,MAAA,MAAMC,KAAK,GAAGV,SAAS,IAAI,IAAI,GAAG,IAAIW,IAAI,CAACX,SAAS,CAAC,GAAG,IAAIW,IAAI,EAAE;AAClE,MAAA,MAAMC,GAAG,GAAG,IAAID,IAAI,CAACV,OAAO,CAAC;MAC7BI,YAAY,CAACQ,YAAY,CAACH,KAAK,EAAEE,GAAG,EAAEV,MAAM,CAAC,CAAC;AAE9C,MAAA,MAAMY,GAAG,GAAG,IAAIH,IAAI,EAAE;AACtB,MAAA,MAAMI,MAAM,GAAGC,IAAI,CAACC,GAAG,CAACL,GAAG,CAACM,OAAO,EAAE,GAAGJ,GAAG,CAACI,OAAO,EAAE,CAAC;MACtD,IAAIH,MAAM,GAAG,KAAM,EAAE;AACnB,QAAA,MAAMI,cAAc,GAAG,CAAC,EAAE,GAAGL,GAAG,CAACM,UAAU,EAAE,IAAI,IAAI,GAAGN,GAAG,CAACO,eAAe,EAAE;AAC7Eb,QAAAA,SAAS,GAAGc,UAAU,CAACb,WAAW,EAAEU,cAAc,CAAC;AACrD,OAAC,MAAM;AACLX,QAAAA,SAAS,GAAGc,UAAU,CAACb,WAAW,EAAE,IAAI,CAAC;AAC3C;KACD;AAEDA,IAAAA,WAAW,EAAE;AAEb,IAAA,OAAO,MAAMc,YAAY,CAACf,SAAS,CAAC;GACrC,EAAE,CAACR,SAAS,EAAEC,OAAO,EAAEC,MAAM,CAAC,CAAC;AAEhC,EAAA,IAAIE,SAAS,IAAI,IAAI,IAAIA,SAAS,KAAK,EAAE,EAAE;AACzC,IAAA,OAAOoB,GAAA,CAACC,SAAS,EAAA,EAAA,CAAG;AACtB;AAEA;AACA,EAAA,MAAMC,OAAO,GAAGF,GAAM,CAAA,MAAA,EAAA;IAAAG,SAAS,EAAEnC,aAAa,CAAC;AAAEG,MAAAA;AAAO,KAAA,CAAC;AAAGiC,IAAAA,QAAA,EAAAxB;IAAiB;AAE7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,EAAA,OAAOsB,OAAO;AAChB;;;;"}
@@ -0,0 +1,59 @@
1
+ "use client";
2
+
3
+ 'use strict';
4
+
5
+ Object.defineProperty(exports, '__esModule', { value: true });
6
+
7
+ var tslib = require('tslib');
8
+ var jsxRuntime = require('react/jsx-runtime');
9
+ var ThemeContext = require('../../contexts/ThemeContext.cjs.js');
10
+ var index = require('../icons/index.cjs.js');
11
+
12
+ /**
13
+ * Renders an icon corresponding to the given `status`.
14
+ * If `status` is not recognized, returns null.
15
+ * Colors adapt to light/dark theme unless overridden.
16
+ */
17
+ const TransactionStatusIcon = _a => {
18
+ var {
19
+ status,
20
+ color
21
+ } = _a,
22
+ props = tslib.__rest(_a, ["status", "color"]);
23
+ const {
24
+ theme
25
+ } = ThemeContext.useTheme();
26
+ const map = {
27
+ SUCCESS: index.SuccessIcon,
28
+ FAIL: index.ErrorIcon,
29
+ QUEUED: index.QueuedIcon,
30
+ POOLED: index.PooledIcon,
31
+ BROADCASTED: index.BroadcastedIcon
32
+ };
33
+ const IconComponent = map[status];
34
+ // Default colors based on theme, if no color override provided
35
+ const defaultColors = {
36
+ light: {
37
+ SUCCESS: '#1CC400',
38
+ FAIL: '#F45858',
39
+ QUEUED: '#F4A358',
40
+ POOLED: '#008DE4',
41
+ BROADCASTED: '#008DE4'
42
+ },
43
+ dark: {
44
+ SUCCESS: '#22D32E',
45
+ FAIL: '#FF6B6B',
46
+ QUEUED: '#FFB366',
47
+ POOLED: '#42A5F5',
48
+ BROADCASTED: '#42A5F5'
49
+ }
50
+ };
51
+ const iconColor = color !== null && color !== void 0 ? color : defaultColors[theme][status];
52
+ return IconComponent != null ? jsxRuntime.jsx(IconComponent, Object.assign({
53
+ color: iconColor
54
+ }, props)) : null;
55
+ };
56
+
57
+ exports.TransactionStatusIcon = TransactionStatusIcon;
58
+ exports.default = TransactionStatusIcon;
59
+ //# sourceMappingURL=index.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs.js","sources":["../../../../src/react/components/transactionStatusIcon/index.tsx"],"sourcesContent":["import React from 'react'\nimport { useTheme } from '../../contexts/ThemeContext'\nimport {\n SuccessIcon,\n ErrorIcon,\n QueuedIcon,\n PooledIcon,\n BroadcastedIcon\n} from '../icons'\n\n/**\n * Available status keys for which an icon will be rendered.\n */\nexport type StatusKey =\n | 'SUCCESS'\n | 'FAIL'\n | 'QUEUED'\n | 'POOLED'\n | 'BROADCASTED'\n\n/**\n * Props for the TransactionStatusIcon component.\n * Inherits all props of SuccessIcon (assumed representative of all icons),\n * plus a `status` field to choose which icon to render.\n */\nexport interface TransactionStatusIconProps\n extends Omit<React.ComponentProps<typeof SuccessIcon>, 'size' | 'color'> {\n /** Which status icon to show. */\n status: StatusKey\n /** Optional override for icon size. */\n size?: number\n /** Optional override for icon color. */\n color?: string\n}\n\n/**\n * Renders an icon corresponding to the given `status`.\n * If `status` is not recognized, returns null.\n * Colors adapt to light/dark theme unless overridden.\n */\nexport const TransactionStatusIcon: React.FC<TransactionStatusIconProps> = ({ status, color, ...props }) => {\n const { theme } = useTheme()\n \n const map = {\n SUCCESS: SuccessIcon,\n FAIL: ErrorIcon,\n QUEUED: QueuedIcon,\n POOLED: PooledIcon,\n BROADCASTED: BroadcastedIcon\n } as const\n\n const IconComponent = map[status]\n\n // Default colors based on theme, if no color override provided\n const defaultColors = {\n light: {\n SUCCESS: '#1CC400',\n FAIL: '#F45858',\n QUEUED: '#F4A358',\n POOLED: '#008DE4',\n BROADCASTED: '#008DE4'\n },\n dark: {\n SUCCESS: '#22D32E',\n FAIL: '#FF6B6B',\n QUEUED: '#FFB366',\n POOLED: '#42A5F5',\n BROADCASTED: '#42A5F5'\n }\n }\n\n const iconColor = color ?? defaultColors[theme][status]\n\n return IconComponent != null ? <IconComponent color={iconColor} {...props} /> : null\n}\n\nexport default TransactionStatusIcon "],"names":["TransactionStatusIcon","_a","status","color","props","__rest","theme","useTheme","map","SUCCESS","SuccessIcon","FAIL","ErrorIcon","QUEUED","QueuedIcon","POOLED","PooledIcon","BROADCASTED","BroadcastedIcon","IconComponent","defaultColors","light","dark","iconColor","_jsx","Object","assign"],"mappings":";;;;;;;;;;;AAmCA;;;;AAIG;AACUA,MAAAA,qBAAqB,GAA0CC,EAA2B,IAAI;MAA/B;MAAEC,MAAM;AAAEC,MAAAA;AAAK,KAAA,GAAAF,EAAY;IAAPG,KAAK,GAAAC,YAAA,CAAAJ,EAAA,EAAzB,mBAA2B,CAAF;EACnG,MAAM;AAAEK,IAAAA;GAAO,GAAGC,qBAAQ,EAAE;AAE5B,EAAA,MAAMC,GAAG,GAAG;AACVC,IAAAA,OAAO,EAAEC,iBAAW;AACpBC,IAAAA,IAAI,EAAEC,eAAS;AACfC,IAAAA,MAAM,EAAEC,gBAAU;AAClBC,IAAAA,MAAM,EAAEC,gBAAU;AAClBC,IAAAA,WAAW,EAAEC;GACL;AAEV,EAAA,MAAMC,aAAa,GAAGX,GAAG,CAACN,MAAM,CAAC;AAEjC;AACA,EAAA,MAAMkB,aAAa,GAAG;AACpBC,IAAAA,KAAK,EAAE;AACLZ,MAAAA,OAAO,EAAE,SAAS;AAClBE,MAAAA,IAAI,EAAE,SAAS;AACfE,MAAAA,MAAM,EAAE,SAAS;AACjBE,MAAAA,MAAM,EAAE,SAAS;AACjBE,MAAAA,WAAW,EAAE;KACd;AACDK,IAAAA,IAAI,EAAE;AACJb,MAAAA,OAAO,EAAE,SAAS;AAClBE,MAAAA,IAAI,EAAE,SAAS;AACfE,MAAAA,MAAM,EAAE,SAAS;AACjBE,MAAAA,MAAM,EAAE,SAAS;AACjBE,MAAAA,WAAW,EAAE;AACd;GACF;AAED,EAAA,MAAMM,SAAS,GAAGpB,KAAK,KAAA,IAAA,IAALA,KAAK,KAAL,MAAA,GAAAA,KAAK,GAAIiB,aAAa,CAACd,KAAK,CAAC,CAACJ,MAAM,CAAC;EAEvD,OAAOiB,aAAa,IAAI,IAAI,GAAGK,eAACL,aAAa,EAAAM,MAAA,CAAAC,MAAA,CAAA;AAACvB,IAAAA,KAAK,EAAEoB;KAAenB,KAAK,CAAA,CAAI,GAAG,IAAI;AACtF;;;;;"}
@@ -0,0 +1,54 @@
1
+ "use client";
2
+
3
+ import { __rest } from 'tslib';
4
+ import { jsx } from 'react/jsx-runtime';
5
+ import { useTheme } from '../../contexts/ThemeContext.esm.js';
6
+ import { BroadcastedIcon, PooledIcon, QueuedIcon, ErrorIcon, SuccessIcon } from '../icons/index.esm.js';
7
+
8
+ /**
9
+ * Renders an icon corresponding to the given `status`.
10
+ * If `status` is not recognized, returns null.
11
+ * Colors adapt to light/dark theme unless overridden.
12
+ */
13
+ const TransactionStatusIcon = _a => {
14
+ var {
15
+ status,
16
+ color
17
+ } = _a,
18
+ props = __rest(_a, ["status", "color"]);
19
+ const {
20
+ theme
21
+ } = useTheme();
22
+ const map = {
23
+ SUCCESS: SuccessIcon,
24
+ FAIL: ErrorIcon,
25
+ QUEUED: QueuedIcon,
26
+ POOLED: PooledIcon,
27
+ BROADCASTED: BroadcastedIcon
28
+ };
29
+ const IconComponent = map[status];
30
+ // Default colors based on theme, if no color override provided
31
+ const defaultColors = {
32
+ light: {
33
+ SUCCESS: '#1CC400',
34
+ FAIL: '#F45858',
35
+ QUEUED: '#F4A358',
36
+ POOLED: '#008DE4',
37
+ BROADCASTED: '#008DE4'
38
+ },
39
+ dark: {
40
+ SUCCESS: '#22D32E',
41
+ FAIL: '#FF6B6B',
42
+ QUEUED: '#FFB366',
43
+ POOLED: '#42A5F5',
44
+ BROADCASTED: '#42A5F5'
45
+ }
46
+ };
47
+ const iconColor = color !== null && color !== void 0 ? color : defaultColors[theme][status];
48
+ return IconComponent != null ? jsx(IconComponent, Object.assign({
49
+ color: iconColor
50
+ }, props)) : null;
51
+ };
52
+
53
+ export { TransactionStatusIcon, TransactionStatusIcon as default };
54
+ //# sourceMappingURL=index.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm.js","sources":["../../../../src/react/components/transactionStatusIcon/index.tsx"],"sourcesContent":["import React from 'react'\nimport { useTheme } from '../../contexts/ThemeContext'\nimport {\n SuccessIcon,\n ErrorIcon,\n QueuedIcon,\n PooledIcon,\n BroadcastedIcon\n} from '../icons'\n\n/**\n * Available status keys for which an icon will be rendered.\n */\nexport type StatusKey =\n | 'SUCCESS'\n | 'FAIL'\n | 'QUEUED'\n | 'POOLED'\n | 'BROADCASTED'\n\n/**\n * Props for the TransactionStatusIcon component.\n * Inherits all props of SuccessIcon (assumed representative of all icons),\n * plus a `status` field to choose which icon to render.\n */\nexport interface TransactionStatusIconProps\n extends Omit<React.ComponentProps<typeof SuccessIcon>, 'size' | 'color'> {\n /** Which status icon to show. */\n status: StatusKey\n /** Optional override for icon size. */\n size?: number\n /** Optional override for icon color. */\n color?: string\n}\n\n/**\n * Renders an icon corresponding to the given `status`.\n * If `status` is not recognized, returns null.\n * Colors adapt to light/dark theme unless overridden.\n */\nexport const TransactionStatusIcon: React.FC<TransactionStatusIconProps> = ({ status, color, ...props }) => {\n const { theme } = useTheme()\n \n const map = {\n SUCCESS: SuccessIcon,\n FAIL: ErrorIcon,\n QUEUED: QueuedIcon,\n POOLED: PooledIcon,\n BROADCASTED: BroadcastedIcon\n } as const\n\n const IconComponent = map[status]\n\n // Default colors based on theme, if no color override provided\n const defaultColors = {\n light: {\n SUCCESS: '#1CC400',\n FAIL: '#F45858',\n QUEUED: '#F4A358',\n POOLED: '#008DE4',\n BROADCASTED: '#008DE4'\n },\n dark: {\n SUCCESS: '#22D32E',\n FAIL: '#FF6B6B',\n QUEUED: '#FFB366',\n POOLED: '#42A5F5',\n BROADCASTED: '#42A5F5'\n }\n }\n\n const iconColor = color ?? defaultColors[theme][status]\n\n return IconComponent != null ? <IconComponent color={iconColor} {...props} /> : null\n}\n\nexport default TransactionStatusIcon "],"names":["TransactionStatusIcon","_a","status","color","props","__rest","theme","useTheme","map","SUCCESS","SuccessIcon","FAIL","ErrorIcon","QUEUED","QueuedIcon","POOLED","PooledIcon","BROADCASTED","BroadcastedIcon","IconComponent","defaultColors","light","dark","iconColor","_jsx","Object","assign"],"mappings":";;;;;;;AAmCA;;;;AAIG;AACUA,MAAAA,qBAAqB,GAA0CC,EAA2B,IAAI;MAA/B;MAAEC,MAAM;AAAEC,MAAAA;AAAK,KAAA,GAAAF,EAAY;IAAPG,KAAK,GAAAC,MAAA,CAAAJ,EAAA,EAAzB,mBAA2B,CAAF;EACnG,MAAM;AAAEK,IAAAA;GAAO,GAAGC,QAAQ,EAAE;AAE5B,EAAA,MAAMC,GAAG,GAAG;AACVC,IAAAA,OAAO,EAAEC,WAAW;AACpBC,IAAAA,IAAI,EAAEC,SAAS;AACfC,IAAAA,MAAM,EAAEC,UAAU;AAClBC,IAAAA,MAAM,EAAEC,UAAU;AAClBC,IAAAA,WAAW,EAAEC;GACL;AAEV,EAAA,MAAMC,aAAa,GAAGX,GAAG,CAACN,MAAM,CAAC;AAEjC;AACA,EAAA,MAAMkB,aAAa,GAAG;AACpBC,IAAAA,KAAK,EAAE;AACLZ,MAAAA,OAAO,EAAE,SAAS;AAClBE,MAAAA,IAAI,EAAE,SAAS;AACfE,MAAAA,MAAM,EAAE,SAAS;AACjBE,MAAAA,MAAM,EAAE,SAAS;AACjBE,MAAAA,WAAW,EAAE;KACd;AACDK,IAAAA,IAAI,EAAE;AACJb,MAAAA,OAAO,EAAE,SAAS;AAClBE,MAAAA,IAAI,EAAE,SAAS;AACfE,MAAAA,MAAM,EAAE,SAAS;AACjBE,MAAAA,MAAM,EAAE,SAAS;AACjBE,MAAAA,WAAW,EAAE;AACd;GACF;AAED,EAAA,MAAMM,SAAS,GAAGpB,KAAK,KAAA,IAAA,IAALA,KAAK,KAAL,MAAA,GAAAA,KAAK,GAAIiB,aAAa,CAACd,KAAK,CAAC,CAACJ,MAAM,CAAC;EAEvD,OAAOiB,aAAa,IAAI,IAAI,GAAGK,IAACL,aAAa,EAAAM,MAAA,CAAAC,MAAA,CAAA;AAACvB,IAAAA,KAAK,EAAEoB;KAAenB,KAAK,CAAA,CAAI,GAAG,IAAI;AACtF;;;;"}
@@ -0,0 +1,176 @@
1
+ "use client";
2
+
3
+ 'use strict';
4
+
5
+ Object.defineProperty(exports, '__esModule', { value: true });
6
+
7
+ var tslib = require('tslib');
8
+ var jsxRuntime = require('react/jsx-runtime');
9
+ var classVarianceAuthority = require('class-variance-authority');
10
+ var ThemeContext = require('../../contexts/ThemeContext.cjs.js');
11
+
12
+ const valueCard = classVarianceAuthority.cva('flex items-center transition-all outline outline-1 outline-offset-[-1px]', {
13
+ variants: {
14
+ theme: {
15
+ light: 'outline-gray-200',
16
+ dark: 'bg-gray-800/50 outline-gray-400'
17
+ },
18
+ colorScheme: {
19
+ default: '',
20
+ transparent: 'bg-transparent',
21
+ green: 'text-green-500 bg-green-200 outline-green-400',
22
+ lightBlue: 'bg-dash-brand-dim/10 !outline-dash-brand/20',
23
+ white: 'bg-white',
24
+ lightGray: 'bg-dash-primary-die-subdued',
25
+ yellow: 'bg-dash-yellow-light !outline-dash-yellow'
26
+ },
27
+ size: {
28
+ xs: 'px-[0.5rem] py-[0.25rem] rounded-[0.25rem]',
29
+ sm: 'dash-block-sm',
30
+ md: 'dash-block-md',
31
+ xl: 'dash-block-xl'
32
+ },
33
+ clickable: {
34
+ false: '',
35
+ true: 'cursor-pointer transition-colors active:translate-y-px active:opacity-90'
36
+ },
37
+ loading: {
38
+ false: '',
39
+ true: 'animate-pulse'
40
+ },
41
+ border: {
42
+ false: '!outline-none',
43
+ true: ''
44
+ }
45
+ },
46
+ compoundVariants: [
47
+ // default scheme hover
48
+ {
49
+ theme: 'light',
50
+ colorScheme: 'default',
51
+ clickable: true,
52
+ class: 'hover:bg-gray-200/50'
53
+ }, {
54
+ theme: 'dark',
55
+ colorScheme: 'default',
56
+ clickable: true,
57
+ class: 'hover:bg-gray-700/50'
58
+ },
59
+ // transparent scheme hover
60
+ {
61
+ theme: 'light',
62
+ colorScheme: 'transparent',
63
+ clickable: true,
64
+ class: 'hover:bg-gray-100'
65
+ }, {
66
+ theme: 'dark',
67
+ colorScheme: 'transparent',
68
+ clickable: true,
69
+ class: 'hover:bg-gray-900'
70
+ },
71
+ // green scheme hover
72
+ {
73
+ theme: 'light',
74
+ colorScheme: 'green',
75
+ clickable: true,
76
+ class: 'hover:bg-green-300'
77
+ }, {
78
+ theme: 'dark',
79
+ colorScheme: 'green',
80
+ clickable: true,
81
+ class: 'hover:bg-green-400'
82
+ },
83
+ // green lightBlue
84
+ {
85
+ colorScheme: 'lightBlue',
86
+ clickable: true,
87
+ class: 'hover:bg-dash-brand/15'
88
+ },
89
+ // white
90
+ {
91
+ theme: 'light',
92
+ colorScheme: 'white',
93
+ clickable: true,
94
+ class: 'hover:bg-gray-100'
95
+ }, {
96
+ theme: 'dark',
97
+ colorScheme: 'white',
98
+ clickable: true,
99
+ class: 'hover:bg-gray-100'
100
+ },
101
+ // lightGray scheme hover
102
+ {
103
+ theme: 'light',
104
+ colorScheme: 'lightGray',
105
+ clickable: true,
106
+ class: 'hover:bg-dash-primary-die'
107
+ }, {
108
+ theme: 'dark',
109
+ colorScheme: 'lightGray',
110
+ clickable: true,
111
+ class: 'hover:bg-gray-600'
112
+ },
113
+ // yellow scheme hover
114
+ {
115
+ colorScheme: 'yellow',
116
+ clickable: true,
117
+ class: 'hover:bg-dash-yellow'
118
+ }],
119
+ defaultVariants: {
120
+ theme: 'light',
121
+ colorScheme: 'default',
122
+ size: 'md',
123
+ clickable: false,
124
+ loading: false,
125
+ border: true
126
+ }
127
+ });
128
+ /**
129
+ * A card container that adapts to light/dark theme,
130
+ * supports various color schemes, sizes, clickability,
131
+ * loading state, and optional border styling.
132
+ *
133
+ * @example
134
+ * <ValueCard colorScheme="green" border as={Link} link="/foo">
135
+ * Go
136
+ * </ValueCard>
137
+ */
138
+ const ValueCard = _a => {
139
+ var {
140
+ as,
141
+ link = '',
142
+ colorScheme,
143
+ size,
144
+ clickable = false,
145
+ loading,
146
+ border,
147
+ className = '',
148
+ children
149
+ } = _a,
150
+ props = tslib.__rest(_a, ["as", "link", "colorScheme", "size", "clickable", "loading", "border", "className", "children"]);
151
+ const {
152
+ theme
153
+ } = ThemeContext.useTheme();
154
+ const isClickable = Boolean(link !== '' || clickable);
155
+ const classes = valueCard({
156
+ theme,
157
+ colorScheme,
158
+ size,
159
+ clickable: isClickable,
160
+ loading,
161
+ border
162
+ }) + ' ' + String(className);
163
+ // choose element: custom `as`, or <a> if link, else <div>
164
+ const Component = as !== null && as !== void 0 ? as : link !== '' ? 'a' : 'div';
165
+ const mergedProps = Object.assign(Object.assign({}, props), {
166
+ className: classes
167
+ });
168
+ if (link !== '') mergedProps.href = link;
169
+ return jsxRuntime.jsx(Component, Object.assign({}, mergedProps, {
170
+ children: children
171
+ }));
172
+ };
173
+
174
+ exports.ValueCard = ValueCard;
175
+ exports.default = ValueCard;
176
+ //# sourceMappingURL=index.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs.js","sources":["../../../../src/react/components/valueCard/index.tsx"],"sourcesContent":["import React from 'react'\nimport { cva, VariantProps } from 'class-variance-authority'\nimport { useTheme } from '../../contexts/ThemeContext'\n\nconst valueCard = cva(\n 'flex items-center transition-all outline outline-1 outline-offset-[-1px]',\n {\n variants: {\n theme: {\n light: 'outline-gray-200',\n dark: 'bg-gray-800/50 outline-gray-400'\n },\n colorScheme: {\n default: '',\n transparent: 'bg-transparent',\n green: 'text-green-500 bg-green-200 outline-green-400',\n lightBlue: 'bg-dash-brand-dim/10 !outline-dash-brand/20',\n white: 'bg-white',\n lightGray: 'bg-dash-primary-die-subdued',\n yellow: 'bg-dash-yellow-light !outline-dash-yellow'\n },\n size: {\n xs: 'px-[0.5rem] py-[0.25rem] rounded-[0.25rem]',\n sm: 'dash-block-sm',\n md: 'dash-block-md',\n xl: 'dash-block-xl'\n },\n clickable: {\n false: '',\n true: 'cursor-pointer transition-colors active:translate-y-px active:opacity-90'\n },\n loading: {\n false: '',\n true: 'animate-pulse'\n },\n border: {\n false: '!outline-none',\n true: ''\n }\n },\n compoundVariants: [\n // default scheme hover\n { theme: 'light', colorScheme: 'default', clickable: true, class: 'hover:bg-gray-200/50' },\n { theme: 'dark', colorScheme: 'default', clickable: true, class: 'hover:bg-gray-700/50' },\n // transparent scheme hover\n { theme: 'light', colorScheme: 'transparent', clickable: true, class: 'hover:bg-gray-100' },\n { theme: 'dark', colorScheme: 'transparent', clickable: true, class: 'hover:bg-gray-900' },\n // green scheme hover\n { theme: 'light', colorScheme: 'green', clickable: true, class: 'hover:bg-green-300' },\n { theme: 'dark', colorScheme: 'green', clickable: true, class: 'hover:bg-green-400' },\n // green lightBlue\n { colorScheme: 'lightBlue', clickable: true, class: 'hover:bg-dash-brand/15' },\n // white\n { theme: 'light', colorScheme: 'white', clickable: true, class: 'hover:bg-gray-100' },\n { theme: 'dark', colorScheme: 'white', clickable: true, class: 'hover:bg-gray-100' },\n // lightGray scheme hover\n { theme: 'light', colorScheme: 'lightGray', clickable: true, class: 'hover:bg-dash-primary-die' },\n { theme: 'dark', colorScheme: 'lightGray', clickable: true, class: 'hover:bg-gray-600' },\n // yellow scheme hover\n { colorScheme: 'yellow', clickable: true, class: 'hover:bg-dash-yellow' }\n ],\n defaultVariants: {\n theme: 'light',\n colorScheme: 'default',\n size: 'md',\n clickable: false,\n loading: false,\n border: true\n }\n }\n)\n\ntype ValueCardVariants = VariantProps<typeof valueCard>\n\nexport interface ValueCardProps extends Omit<ValueCardVariants, 'theme'> {\n /** If you pass an `as` component, it'll receive `href` when `link` is set */\n as?: React.ElementType\n /** Only applies `href` if `as` is `'a'` or a component that accepts `href` */\n link?: string\n className?: string\n children: React.ReactNode\n /** Additional props to pass to the underlying element */\n [key: string]: any\n}\n\n/**\n * A card container that adapts to light/dark theme,\n * supports various color schemes, sizes, clickability,\n * loading state, and optional border styling.\n *\n * @example\n * <ValueCard colorScheme=\"green\" border as={Link} link=\"/foo\">\n * Go\n * </ValueCard>\n */\nexport const ValueCard: React.FC<ValueCardProps> = ({\n as,\n link = '',\n colorScheme,\n size,\n clickable = false,\n loading,\n border,\n className = '',\n children,\n ...props\n}) => {\n const { theme } = useTheme()\n const isClickable = Boolean(link !== '' || clickable)\n\n const classes = valueCard({\n theme,\n colorScheme,\n size,\n clickable: isClickable,\n loading,\n border\n }) + ' ' + (String(className))\n\n // choose element: custom `as`, or <a> if link, else <div>\n const Component = as ?? (link !== '' ? 'a' : 'div')\n\n const mergedProps: any = { ...props, className: classes }\n if (link !== '') mergedProps.href = link\n\n return <Component {...mergedProps}>{children}</Component>\n}\n\nexport default ValueCard "],"names":["valueCard","cva","variants","theme","light","dark","colorScheme","default","transparent","green","lightBlue","white","lightGray","yellow","size","xs","sm","md","xl","clickable","false","true","loading","border","compoundVariants","class","defaultVariants","ValueCard","_a","as","link","className","children","props","__rest","useTheme","isClickable","Boolean","classes","String","Component","mergedProps","href","_jsx","Object","assign"],"mappings":"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"}
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import { VariantProps } from 'class-variance-authority';
3
3
  declare const valueCard: (props?: ({
4
4
  theme?: "light" | "dark" | null | undefined;
5
- colorScheme?: "white" | "default" | "lightBlue" | "lightGray" | "green" | "transparent" | "yellow" | null | undefined;
5
+ colorScheme?: "white" | "default" | "lightBlue" | "lightGray" | "green" | "yellow" | "transparent" | null | undefined;
6
6
  size?: "xs" | "sm" | "xl" | "md" | null | undefined;
7
7
  clickable?: boolean | null | undefined;
8
8
  loading?: boolean | null | undefined;
@@ -0,0 +1,171 @@
1
+ "use client";
2
+
3
+ import { __rest } from 'tslib';
4
+ import { jsx } from 'react/jsx-runtime';
5
+ import { cva } from 'class-variance-authority';
6
+ import { useTheme } from '../../contexts/ThemeContext.esm.js';
7
+
8
+ const valueCard = cva('flex items-center transition-all outline outline-1 outline-offset-[-1px]', {
9
+ variants: {
10
+ theme: {
11
+ light: 'outline-gray-200',
12
+ dark: 'bg-gray-800/50 outline-gray-400'
13
+ },
14
+ colorScheme: {
15
+ default: '',
16
+ transparent: 'bg-transparent',
17
+ green: 'text-green-500 bg-green-200 outline-green-400',
18
+ lightBlue: 'bg-dash-brand-dim/10 !outline-dash-brand/20',
19
+ white: 'bg-white',
20
+ lightGray: 'bg-dash-primary-die-subdued',
21
+ yellow: 'bg-dash-yellow-light !outline-dash-yellow'
22
+ },
23
+ size: {
24
+ xs: 'px-[0.5rem] py-[0.25rem] rounded-[0.25rem]',
25
+ sm: 'dash-block-sm',
26
+ md: 'dash-block-md',
27
+ xl: 'dash-block-xl'
28
+ },
29
+ clickable: {
30
+ false: '',
31
+ true: 'cursor-pointer transition-colors active:translate-y-px active:opacity-90'
32
+ },
33
+ loading: {
34
+ false: '',
35
+ true: 'animate-pulse'
36
+ },
37
+ border: {
38
+ false: '!outline-none',
39
+ true: ''
40
+ }
41
+ },
42
+ compoundVariants: [
43
+ // default scheme hover
44
+ {
45
+ theme: 'light',
46
+ colorScheme: 'default',
47
+ clickable: true,
48
+ class: 'hover:bg-gray-200/50'
49
+ }, {
50
+ theme: 'dark',
51
+ colorScheme: 'default',
52
+ clickable: true,
53
+ class: 'hover:bg-gray-700/50'
54
+ },
55
+ // transparent scheme hover
56
+ {
57
+ theme: 'light',
58
+ colorScheme: 'transparent',
59
+ clickable: true,
60
+ class: 'hover:bg-gray-100'
61
+ }, {
62
+ theme: 'dark',
63
+ colorScheme: 'transparent',
64
+ clickable: true,
65
+ class: 'hover:bg-gray-900'
66
+ },
67
+ // green scheme hover
68
+ {
69
+ theme: 'light',
70
+ colorScheme: 'green',
71
+ clickable: true,
72
+ class: 'hover:bg-green-300'
73
+ }, {
74
+ theme: 'dark',
75
+ colorScheme: 'green',
76
+ clickable: true,
77
+ class: 'hover:bg-green-400'
78
+ },
79
+ // green lightBlue
80
+ {
81
+ colorScheme: 'lightBlue',
82
+ clickable: true,
83
+ class: 'hover:bg-dash-brand/15'
84
+ },
85
+ // white
86
+ {
87
+ theme: 'light',
88
+ colorScheme: 'white',
89
+ clickable: true,
90
+ class: 'hover:bg-gray-100'
91
+ }, {
92
+ theme: 'dark',
93
+ colorScheme: 'white',
94
+ clickable: true,
95
+ class: 'hover:bg-gray-100'
96
+ },
97
+ // lightGray scheme hover
98
+ {
99
+ theme: 'light',
100
+ colorScheme: 'lightGray',
101
+ clickable: true,
102
+ class: 'hover:bg-dash-primary-die'
103
+ }, {
104
+ theme: 'dark',
105
+ colorScheme: 'lightGray',
106
+ clickable: true,
107
+ class: 'hover:bg-gray-600'
108
+ },
109
+ // yellow scheme hover
110
+ {
111
+ colorScheme: 'yellow',
112
+ clickable: true,
113
+ class: 'hover:bg-dash-yellow'
114
+ }],
115
+ defaultVariants: {
116
+ theme: 'light',
117
+ colorScheme: 'default',
118
+ size: 'md',
119
+ clickable: false,
120
+ loading: false,
121
+ border: true
122
+ }
123
+ });
124
+ /**
125
+ * A card container that adapts to light/dark theme,
126
+ * supports various color schemes, sizes, clickability,
127
+ * loading state, and optional border styling.
128
+ *
129
+ * @example
130
+ * <ValueCard colorScheme="green" border as={Link} link="/foo">
131
+ * Go
132
+ * </ValueCard>
133
+ */
134
+ const ValueCard = _a => {
135
+ var {
136
+ as,
137
+ link = '',
138
+ colorScheme,
139
+ size,
140
+ clickable = false,
141
+ loading,
142
+ border,
143
+ className = '',
144
+ children
145
+ } = _a,
146
+ props = __rest(_a, ["as", "link", "colorScheme", "size", "clickable", "loading", "border", "className", "children"]);
147
+ const {
148
+ theme
149
+ } = useTheme();
150
+ const isClickable = Boolean(link !== '' || clickable);
151
+ const classes = valueCard({
152
+ theme,
153
+ colorScheme,
154
+ size,
155
+ clickable: isClickable,
156
+ loading,
157
+ border
158
+ }) + ' ' + String(className);
159
+ // choose element: custom `as`, or <a> if link, else <div>
160
+ const Component = as !== null && as !== void 0 ? as : link !== '' ? 'a' : 'div';
161
+ const mergedProps = Object.assign(Object.assign({}, props), {
162
+ className: classes
163
+ });
164
+ if (link !== '') mergedProps.href = link;
165
+ return jsx(Component, Object.assign({}, mergedProps, {
166
+ children: children
167
+ }));
168
+ };
169
+
170
+ export { ValueCard, ValueCard as default };
171
+ //# sourceMappingURL=index.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm.js","sources":["../../../../src/react/components/valueCard/index.tsx"],"sourcesContent":["import React from 'react'\nimport { cva, VariantProps } from 'class-variance-authority'\nimport { useTheme } from '../../contexts/ThemeContext'\n\nconst valueCard = cva(\n 'flex items-center transition-all outline outline-1 outline-offset-[-1px]',\n {\n variants: {\n theme: {\n light: 'outline-gray-200',\n dark: 'bg-gray-800/50 outline-gray-400'\n },\n colorScheme: {\n default: '',\n transparent: 'bg-transparent',\n green: 'text-green-500 bg-green-200 outline-green-400',\n lightBlue: 'bg-dash-brand-dim/10 !outline-dash-brand/20',\n white: 'bg-white',\n lightGray: 'bg-dash-primary-die-subdued',\n yellow: 'bg-dash-yellow-light !outline-dash-yellow'\n },\n size: {\n xs: 'px-[0.5rem] py-[0.25rem] rounded-[0.25rem]',\n sm: 'dash-block-sm',\n md: 'dash-block-md',\n xl: 'dash-block-xl'\n },\n clickable: {\n false: '',\n true: 'cursor-pointer transition-colors active:translate-y-px active:opacity-90'\n },\n loading: {\n false: '',\n true: 'animate-pulse'\n },\n border: {\n false: '!outline-none',\n true: ''\n }\n },\n compoundVariants: [\n // default scheme hover\n { theme: 'light', colorScheme: 'default', clickable: true, class: 'hover:bg-gray-200/50' },\n { theme: 'dark', colorScheme: 'default', clickable: true, class: 'hover:bg-gray-700/50' },\n // transparent scheme hover\n { theme: 'light', colorScheme: 'transparent', clickable: true, class: 'hover:bg-gray-100' },\n { theme: 'dark', colorScheme: 'transparent', clickable: true, class: 'hover:bg-gray-900' },\n // green scheme hover\n { theme: 'light', colorScheme: 'green', clickable: true, class: 'hover:bg-green-300' },\n { theme: 'dark', colorScheme: 'green', clickable: true, class: 'hover:bg-green-400' },\n // green lightBlue\n { colorScheme: 'lightBlue', clickable: true, class: 'hover:bg-dash-brand/15' },\n // white\n { theme: 'light', colorScheme: 'white', clickable: true, class: 'hover:bg-gray-100' },\n { theme: 'dark', colorScheme: 'white', clickable: true, class: 'hover:bg-gray-100' },\n // lightGray scheme hover\n { theme: 'light', colorScheme: 'lightGray', clickable: true, class: 'hover:bg-dash-primary-die' },\n { theme: 'dark', colorScheme: 'lightGray', clickable: true, class: 'hover:bg-gray-600' },\n // yellow scheme hover\n { colorScheme: 'yellow', clickable: true, class: 'hover:bg-dash-yellow' }\n ],\n defaultVariants: {\n theme: 'light',\n colorScheme: 'default',\n size: 'md',\n clickable: false,\n loading: false,\n border: true\n }\n }\n)\n\ntype ValueCardVariants = VariantProps<typeof valueCard>\n\nexport interface ValueCardProps extends Omit<ValueCardVariants, 'theme'> {\n /** If you pass an `as` component, it'll receive `href` when `link` is set */\n as?: React.ElementType\n /** Only applies `href` if `as` is `'a'` or a component that accepts `href` */\n link?: string\n className?: string\n children: React.ReactNode\n /** Additional props to pass to the underlying element */\n [key: string]: any\n}\n\n/**\n * A card container that adapts to light/dark theme,\n * supports various color schemes, sizes, clickability,\n * loading state, and optional border styling.\n *\n * @example\n * <ValueCard colorScheme=\"green\" border as={Link} link=\"/foo\">\n * Go\n * </ValueCard>\n */\nexport const ValueCard: React.FC<ValueCardProps> = ({\n as,\n link = '',\n colorScheme,\n size,\n clickable = false,\n loading,\n border,\n className = '',\n children,\n ...props\n}) => {\n const { theme } = useTheme()\n const isClickable = Boolean(link !== '' || clickable)\n\n const classes = valueCard({\n theme,\n colorScheme,\n size,\n clickable: isClickable,\n loading,\n border\n }) + ' ' + (String(className))\n\n // choose element: custom `as`, or <a> if link, else <div>\n const Component = as ?? (link !== '' ? 'a' : 'div')\n\n const mergedProps: any = { ...props, className: classes }\n if (link !== '') mergedProps.href = link\n\n return <Component {...mergedProps}>{children}</Component>\n}\n\nexport default ValueCard "],"names":["valueCard","cva","variants","theme","light","dark","colorScheme","default","transparent","green","lightBlue","white","lightGray","yellow","size","xs","sm","md","xl","clickable","false","true","loading","border","compoundVariants","class","defaultVariants","ValueCard","_a","as","link","className","children","props","__rest","useTheme","isClickable","Boolean","classes","String","Component","mergedProps","href","_jsx","Object","assign"],"mappings":";;;;;;;AAIA,MAAMA,SAAS,GAAGC,GAAG,CACnB,0EAA0E,EAC1E;AACEC,EAAAA,QAAQ,EAAE;AACRC,IAAAA,KAAK,EAAE;AACLC,MAAAA,KAAK,EAAE,kBAAkB;AACzBC,MAAAA,IAAI,EAAE;KACP;AACDC,IAAAA,WAAW,EAAE;AACXC,MAAAA,OAAO,EAAE,EAAE;AACXC,MAAAA,WAAW,EAAE,gBAAgB;AAC7BC,MAAAA,KAAK,EAAE,+CAA+C;AACtDC,MAAAA,SAAS,EAAE,6CAA6C;AACxDC,MAAAA,KAAK,EAAE,UAAU;AACjBC,MAAAA,SAAS,EAAE,6BAA6B;AACxCC,MAAAA,MAAM,EAAE;KACT;AACDC,IAAAA,IAAI,EAAE;AACJC,MAAAA,EAAE,EAAE,4CAA4C;AAChDC,MAAAA,EAAE,EAAE,eAAe;AACnBC,MAAAA,EAAE,EAAE,eAAe;AACnBC,MAAAA,EAAE,EAAE;KACL;AACDC,IAAAA,SAAS,EAAE;AACTC,MAAAA,KAAK,EAAE,EAAE;AACTC,MAAAA,IAAI,EAAE;KACP;AACDC,IAAAA,OAAO,EAAE;AACPF,MAAAA,KAAK,EAAE,EAAE;AACTC,MAAAA,IAAI,EAAE;KACP;AACDE,IAAAA,MAAM,EAAE;AACNH,MAAAA,KAAK,EAAE,eAAe;AACtBC,MAAAA,IAAI,EAAE;AACP;GACF;AACDG,EAAAA,gBAAgB,EAAE;AAChB;AACA,EAAA;AAAErB,IAAAA,KAAK,EAAE,OAAO;AAAEG,IAAAA,WAAW,EAAE,SAAS;AAAEa,IAAAA,SAAS,EAAE,IAAI;AAAEM,IAAAA,KAAK,EAAE;AAAwB,GAAA,EAC1F;AAAEtB,IAAAA,KAAK,EAAE,MAAM;AAAEG,IAAAA,WAAW,EAAE,SAAS;AAAEa,IAAAA,SAAS,EAAE,IAAI;AAAEM,IAAAA,KAAK,EAAE;GAAwB;AACzF;AACA,EAAA;AAAEtB,IAAAA,KAAK,EAAE,OAAO;AAAEG,IAAAA,WAAW,EAAE,aAAa;AAAEa,IAAAA,SAAS,EAAE,IAAI;AAAEM,IAAAA,KAAK,EAAE;AAAqB,GAAA,EAC3F;AAAEtB,IAAAA,KAAK,EAAE,MAAM;AAAEG,IAAAA,WAAW,EAAE,aAAa;AAAEa,IAAAA,SAAS,EAAE,IAAI;AAAEM,IAAAA,KAAK,EAAE;GAAqB;AAC1F;AACA,EAAA;AAAEtB,IAAAA,KAAK,EAAE,OAAO;AAAEG,IAAAA,WAAW,EAAE,OAAO;AAAEa,IAAAA,SAAS,EAAE,IAAI;AAAEM,IAAAA,KAAK,EAAE;AAAsB,GAAA,EACtF;AAAEtB,IAAAA,KAAK,EAAE,MAAM;AAAEG,IAAAA,WAAW,EAAE,OAAO;AAAEa,IAAAA,SAAS,EAAE,IAAI;AAAEM,IAAAA,KAAK,EAAE;GAAsB;AACrF;AACA,EAAA;AAAEnB,IAAAA,WAAW,EAAE,WAAW;AAAEa,IAAAA,SAAS,EAAE,IAAI;AAAEM,IAAAA,KAAK,EAAE;GAA0B;AAC9E;AACA,EAAA;AAAEtB,IAAAA,KAAK,EAAE,OAAO;AAAEG,IAAAA,WAAW,EAAE,OAAO;AAAEa,IAAAA,SAAS,EAAE,IAAI;AAAEM,IAAAA,KAAK,EAAE;AAAqB,GAAA,EACrF;AAAEtB,IAAAA,KAAK,EAAE,MAAM;AAAEG,IAAAA,WAAW,EAAE,OAAO;AAAEa,IAAAA,SAAS,EAAE,IAAI;AAAEM,IAAAA,KAAK,EAAE;GAAqB;AACpF;AACA,EAAA;AAAEtB,IAAAA,KAAK,EAAE,OAAO;AAAEG,IAAAA,WAAW,EAAE,WAAW;AAAEa,IAAAA,SAAS,EAAE,IAAI;AAAEM,IAAAA,KAAK,EAAE;AAA6B,GAAA,EACjG;AAAEtB,IAAAA,KAAK,EAAE,MAAM;AAAEG,IAAAA,WAAW,EAAE,WAAW;AAAEa,IAAAA,SAAS,EAAE,IAAI;AAAEM,IAAAA,KAAK,EAAE;GAAqB;AACxF;AACA,EAAA;AAAEnB,IAAAA,WAAW,EAAE,QAAQ;AAAEa,IAAAA,SAAS,EAAE,IAAI;AAAEM,IAAAA,KAAK,EAAE;AAAwB,GAAA,CAC1E;AACDC,EAAAA,eAAe,EAAE;AACfvB,IAAAA,KAAK,EAAE,OAAO;AACdG,IAAAA,WAAW,EAAE,SAAS;AACtBQ,IAAAA,IAAI,EAAE,IAAI;AACVK,IAAAA,SAAS,EAAE,KAAK;AAChBG,IAAAA,OAAO,EAAE,KAAK;AACdC,IAAAA,MAAM,EAAE;AACT;AACF,CAAA,CACF;AAeD;;;;;;;;;AASG;AACUI,MAAAA,SAAS,GAA8BC,EAWnD,IAAI;EAX+C,IAAA;MAClDC,EAAE;AACFC,MAAAA,IAAI,GAAG,EAAE;MACTxB,WAAW;MACXQ,IAAI;AACJK,MAAAA,SAAS,GAAG,KAAK;MACjBG,OAAO;MACPC,MAAM;AACNQ,MAAAA,SAAS,GAAG,EAAE;AACdC,MAAAA;AAAQ,KAAA,GAAAJ,EAET;IADIK,KAAK,GAV0CC,MAAA,CAAAN,EAAA,EAAA,CAAA,IAAA,EAAA,MAAA,EAAA,aAAA,EAAA,MAAA,EAAA,WAAA,EAAA,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,UAAA,CAWnD,CADS;EAER,MAAM;AAAEzB,IAAAA;GAAO,GAAGgC,QAAQ,EAAE;EAC5B,MAAMC,WAAW,GAAGC,OAAO,CAACP,IAAI,KAAK,EAAE,IAAIX,SAAS,CAAC;EAErD,MAAMmB,OAAO,GAAGtC,SAAS,CAAC;IACxBG,KAAK;IACLG,WAAW;IACXQ,IAAI;AACJK,IAAAA,SAAS,EAAEiB,WAAW;IACtBd,OAAO;AACPC,IAAAA;GACD,CAAC,GAAG,GAAG,GAAIgB,MAAM,CAACR,SAAS,CAAE;AAE9B;AACA,EAAA,MAAMS,SAAS,GAAGX,EAAE,KAAA,IAAA,IAAFA,EAAE,KAAF,MAAA,GAAAA,EAAE,GAAKC,IAAI,KAAK,EAAE,GAAG,GAAG,GAAG,KAAM;AAEnD,EAAA,MAAMW,WAAW,mCAAaR,KAAK,CAAA,EAAA;AAAEF,IAAAA,SAAS,EAAEO;IAAS;EACzD,IAAIR,IAAI,KAAK,EAAE,EAAEW,WAAW,CAACC,IAAI,GAAGZ,IAAI;AAExC,EAAA,OAAOa,IAACH,SAAS,EAAAI,MAAA,CAAAC,MAAA,CAAA,EAAA,EAAKJ,WAAW,EAAG;AAAAT,IAAAA,QAAA,EAAAA;KAAqB;AAC3D;;;;"}