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.
- package/README.md +52 -0
- package/dist/react/components/accordion/index.cjs.js +193 -0
- package/dist/react/components/accordion/index.cjs.js.map +1 -0
- package/dist/react/components/accordion/index.esm.js +169 -0
- package/dist/react/components/accordion/index.esm.js.map +1 -0
- package/dist/react/components/avatar/index.cjs.js +39 -0
- package/dist/react/components/avatar/index.cjs.js.map +1 -0
- package/dist/react/components/avatar/index.esm.js +34 -0
- package/dist/react/components/avatar/index.esm.js.map +1 -0
- package/dist/react/components/badge/index.cjs.js +92 -0
- package/dist/react/components/badge/index.cjs.js.map +1 -0
- package/dist/react/components/badge/index.esm.js +87 -0
- package/dist/react/components/badge/index.esm.js.map +1 -0
- package/dist/react/components/bigNumber/index.cjs.js +100 -0
- package/dist/react/components/bigNumber/index.cjs.js.map +1 -0
- package/dist/react/components/bigNumber/index.esm.js +95 -0
- package/dist/react/components/bigNumber/index.esm.js.map +1 -0
- package/dist/react/components/button/index.cjs.js +535 -0
- package/dist/react/components/button/index.cjs.js.map +1 -0
- package/dist/react/components/button/index.d.ts +3 -1
- package/dist/react/components/button/index.esm.js +530 -0
- package/dist/react/components/button/index.esm.js.map +1 -0
- package/dist/react/components/copyButton/index.cjs.js +95 -0
- package/dist/react/components/copyButton/index.cjs.js.map +1 -0
- package/dist/react/components/copyButton/index.esm.js +71 -0
- package/dist/react/components/copyButton/index.esm.js.map +1 -0
- package/dist/react/components/dashLogo/index.cjs.js +74 -0
- package/dist/react/components/dashLogo/index.cjs.js.map +1 -0
- package/dist/react/components/dashLogo/index.esm.js +69 -0
- package/dist/react/components/dashLogo/index.esm.js.map +1 -0
- package/dist/react/components/dateBlock/index.cjs.js +120 -0
- package/dist/react/components/dateBlock/index.cjs.js.map +1 -0
- package/dist/react/components/dateBlock/index.esm.js +115 -0
- package/dist/react/components/dateBlock/index.esm.js.map +1 -0
- package/dist/react/components/dialog/index.cjs.js +292 -0
- package/dist/react/components/dialog/index.cjs.js.map +1 -0
- package/dist/react/components/dialog/index.esm.js +270 -0
- package/dist/react/components/dialog/index.esm.js.map +1 -0
- package/dist/react/components/heading/index.cjs.js +60 -0
- package/dist/react/components/heading/index.cjs.js.map +1 -0
- package/dist/react/components/heading/index.esm.js +58 -0
- package/dist/react/components/heading/index.esm.js.map +1 -0
- package/dist/react/components/icons/index.cjs.js +1173 -0
- package/dist/react/components/icons/index.cjs.js.map +1 -0
- package/dist/react/components/icons/index.d.ts +2 -0
- package/dist/react/components/icons/index.esm.js +1128 -0
- package/dist/react/components/icons/index.esm.js.map +1 -0
- package/dist/react/components/identifier/index.cjs.js +286 -0
- package/dist/react/components/identifier/index.cjs.js.map +1 -0
- package/dist/react/components/identifier/index.esm.js +282 -0
- package/dist/react/components/identifier/index.esm.js.map +1 -0
- package/dist/react/components/index.cjs.js +101 -0
- package/dist/react/components/index.cjs.js.map +1 -0
- package/dist/react/components/index.d.ts +1 -1
- package/dist/react/components/index.esm.js +29 -0
- package/dist/react/components/index.esm.js.map +1 -0
- package/dist/react/components/input/index.cjs.js +237 -0
- package/dist/react/components/input/index.cjs.js.map +1 -0
- package/dist/react/components/input/index.esm.js +232 -0
- package/dist/react/components/input/index.esm.js.map +1 -0
- package/dist/react/components/list/index.cjs.js +49 -0
- package/dist/react/components/list/index.cjs.js.map +1 -0
- package/dist/react/components/list/index.esm.js +47 -0
- package/dist/react/components/list/index.esm.js.map +1 -0
- package/dist/react/components/notActive/index.cjs.js +40 -0
- package/dist/react/components/notActive/index.cjs.js.map +1 -0
- package/dist/react/components/notActive/index.esm.js +38 -0
- package/dist/react/components/notActive/index.esm.js.map +1 -0
- package/dist/react/components/overlayMenu/index.cjs.js +425 -0
- package/dist/react/components/overlayMenu/index.cjs.js.map +1 -0
- package/dist/react/components/overlayMenu/index.esm.js +420 -0
- package/dist/react/components/overlayMenu/index.esm.js.map +1 -0
- package/dist/react/components/overlaySelect/index.cjs.js +345 -0
- package/dist/react/components/overlaySelect/index.cjs.js.map +1 -0
- package/dist/react/components/overlaySelect/index.esm.js +340 -0
- package/dist/react/components/overlaySelect/index.esm.js.map +1 -0
- package/dist/react/components/progressStepBar/index.cjs.js +49 -0
- package/dist/react/components/progressStepBar/index.cjs.js.map +1 -0
- package/dist/react/components/progressStepBar/index.d.ts +2 -1
- package/dist/react/components/progressStepBar/index.esm.js +47 -0
- package/dist/react/components/progressStepBar/index.esm.js.map +1 -0
- package/dist/react/components/select/index.cjs.js +236 -0
- package/dist/react/components/select/index.cjs.js.map +1 -0
- package/dist/react/components/select/index.esm.js +212 -0
- package/dist/react/components/select/index.esm.js.map +1 -0
- package/dist/react/components/switch/index.cjs.js +184 -0
- package/dist/react/components/switch/index.cjs.js.map +1 -0
- package/dist/react/components/switch/index.esm.js +179 -0
- package/dist/react/components/switch/index.esm.js.map +1 -0
- package/dist/react/components/tabs/index.cjs.js +178 -0
- package/dist/react/components/tabs/index.cjs.js.map +1 -0
- package/dist/react/components/tabs/index.esm.js +154 -0
- package/dist/react/components/tabs/index.esm.js.map +1 -0
- package/dist/react/components/text/index.cjs.js +120 -0
- package/dist/react/components/text/index.cjs.js.map +1 -0
- package/dist/react/components/text/index.esm.js +115 -0
- package/dist/react/components/text/index.esm.js.map +1 -0
- package/dist/react/components/textarea/index.cjs.js +256 -0
- package/dist/react/components/textarea/index.cjs.js.map +1 -0
- package/dist/react/components/textarea/index.esm.js +251 -0
- package/dist/react/components/textarea/index.esm.js.map +1 -0
- package/dist/react/components/timeDelta/index.cjs.js +93 -0
- package/dist/react/components/timeDelta/index.cjs.js.map +1 -0
- package/dist/react/components/timeDelta/index.d.ts +1 -1
- package/dist/react/components/timeDelta/index.esm.js +88 -0
- package/dist/react/components/timeDelta/index.esm.js.map +1 -0
- package/dist/react/components/transactionStatusIcon/index.cjs.js +59 -0
- package/dist/react/components/transactionStatusIcon/index.cjs.js.map +1 -0
- package/dist/react/components/transactionStatusIcon/index.esm.js +54 -0
- package/dist/react/components/transactionStatusIcon/index.esm.js.map +1 -0
- package/dist/react/components/valueCard/index.cjs.js +176 -0
- package/dist/react/components/valueCard/index.cjs.js.map +1 -0
- package/dist/react/components/valueCard/index.d.ts +1 -1
- package/dist/react/components/valueCard/index.esm.js +171 -0
- package/dist/react/components/valueCard/index.esm.js.map +1 -0
- package/dist/react/contexts/ThemeContext.cjs.js +79 -0
- package/dist/react/contexts/ThemeContext.cjs.js.map +1 -0
- package/dist/react/contexts/ThemeContext.esm.js +76 -0
- package/dist/react/contexts/ThemeContext.esm.js.map +1 -0
- package/dist/react/contexts/index.cjs.js +11 -0
- package/dist/react/contexts/index.cjs.js.map +1 -0
- package/dist/react/contexts/index.esm.js +4 -0
- package/dist/react/contexts/index.esm.js.map +1 -0
- package/dist/react/hooks/useDebounce.cjs.js +83 -0
- package/dist/react/hooks/useDebounce.cjs.js.map +1 -0
- package/dist/react/hooks/useDebounce.esm.js +78 -0
- package/dist/react/hooks/useDebounce.esm.js.map +1 -0
- package/dist/react/index.cjs.js +99 -12811
- package/dist/react/index.cjs.js.map +1 -1
- package/dist/react/index.d.ts +1 -1
- package/dist/react/index.esm.js +27 -12725
- package/dist/react/index.esm.js.map +1 -1
- package/dist/react/shared/utils/datetime.cjs.js +59 -0
- package/dist/react/shared/utils/datetime.cjs.js.map +1 -0
- package/dist/react/shared/utils/datetime.esm.js +57 -0
- package/dist/react/shared/utils/datetime.esm.js.map +1 -0
- package/dist/react/utils/copyToClipboard.cjs.js +31 -0
- package/dist/react/utils/copyToClipboard.cjs.js.map +1 -0
- package/dist/react/utils/copyToClipboard.esm.js +26 -0
- package/dist/react/utils/copyToClipboard.esm.js.map +1 -0
- package/dist/react/utils/index.d.ts +1 -1
- package/dist/react-native/components/avatar/index.d.ts +26 -0
- package/dist/react-native/components/avatar/index.web.d.ts +24 -0
- package/dist/react-native/components/badge/index.d.ts +51 -0
- package/dist/react-native/components/bigNumber/index.d.ts +26 -0
- package/dist/react-native/components/button/index.d.ts +39 -0
- package/dist/react-native/components/copyButton/index.d.ts +22 -0
- package/dist/react-native/components/copyButton/index.web.d.ts +20 -0
- package/dist/react-native/components/dashLogo/index.d.ts +30 -0
- package/dist/react-native/components/heading/index.d.ts +25 -0
- package/dist/react-native/components/icons/index.d.ts +43 -0
- package/dist/react-native/components/identifier/index.d.ts +47 -0
- package/dist/react-native/components/index.d.ts +15 -0
- package/dist/react-native/components/input/index.d.ts +53 -0
- package/dist/react-native/components/notActive/index.d.ts +16 -0
- package/dist/react-native/components/tabs/index.d.ts +50 -0
- package/dist/react-native/components/text/index.d.ts +28 -0
- package/dist/react-native/components/transactionStatusIcon/index.d.ts +24 -0
- package/dist/react-native/components/valueCard/index.d.ts +43 -0
- package/dist/react-native/hooks/index.d.ts +1 -0
- package/dist/react-native/hooks/useDebounce.d.ts +43 -0
- package/dist/react-native/index.cjs.js +2856 -0
- package/dist/react-native/index.cjs.js.map +1 -0
- package/dist/react-native/index.d.ts +4 -0
- package/dist/react-native/index.esm.js +2808 -0
- package/dist/react-native/index.esm.js.map +1 -0
- package/dist/react-native/styles/index.d.ts +11 -0
- package/dist/react-native/styles/tokens.d.ts +308 -0
- package/dist/react-native/styles/utils.d.ts +65 -0
- package/dist/react-native/utils/clipboard.d.ts +27 -0
- package/dist/react-native/utils/index.d.ts +2 -0
- package/dist/react-native/utils/tw.d.ts +7 -0
- package/dist/shared/constants/colors.d.ts +25 -0
- package/dist/shared/constants/index.d.ts +2 -0
- package/dist/shared/constants/sizes.d.ts +49 -0
- package/dist/shared/index.cjs.js +171 -0
- package/dist/shared/index.cjs.js.map +1 -0
- package/dist/shared/index.d.ts +3 -0
- package/dist/shared/index.esm.js +161 -0
- package/dist/shared/index.esm.js.map +1 -0
- package/dist/shared/types/common.d.ts +33 -0
- package/dist/shared/types/index.d.ts +1 -0
- package/dist/shared/utils/index.d.ts +1 -0
- package/dist/styles.css +1 -1
- package/package.json +50 -8
- /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 '
|
|
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" | "
|
|
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":"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"}
|