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
@@ -0,0 +1,95 @@
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 React = require('react');
10
+ var classVarianceAuthority = require('class-variance-authority');
11
+ var Popover = require('@radix-ui/react-popover');
12
+ var index = require('../icons/index.cjs.js');
13
+ var ThemeContext = require('../../contexts/ThemeContext.cjs.js');
14
+ var copyToClipboard = require('../../utils/copyToClipboard.cjs.js');
15
+
16
+ function _interopNamespaceDefault(e) {
17
+ var n = Object.create(null);
18
+ if (e) {
19
+ Object.keys(e).forEach(function (k) {
20
+ if (k !== 'default') {
21
+ var d = Object.getOwnPropertyDescriptor(e, k);
22
+ Object.defineProperty(n, k, d.get ? d : {
23
+ enumerable: true,
24
+ get: function () { return e[k]; }
25
+ });
26
+ }
27
+ });
28
+ }
29
+ n.default = e;
30
+ return Object.freeze(n);
31
+ }
32
+
33
+ var Popover__namespace = /*#__PURE__*/_interopNamespaceDefault(Popover);
34
+
35
+ const copyBtn = classVarianceAuthority.cva('p-0 flex-shrink-0 h-[max-content] min-w-0 bg-transparent transition-colors', {
36
+ variants: {
37
+ theme: {
38
+ light: 'hover:text-gray-600 active:text-gray-800',
39
+ dark: 'hover:text-gray-300 active:text-gray-100'
40
+ }
41
+ },
42
+ defaultVariants: {
43
+ theme: 'light'
44
+ }
45
+ });
46
+ const CopyButton = _a => {
47
+ var {
48
+ text,
49
+ className,
50
+ onCopy
51
+ } = _a,
52
+ props = tslib.__rest(_a, ["text", "className", "onCopy"]);
53
+ const {
54
+ theme
55
+ } = ThemeContext.useTheme();
56
+ const [open, setOpen] = React.useState(false);
57
+ const handleCopy = e => {
58
+ e.stopPropagation();
59
+ e.preventDefault();
60
+ copyToClipboard.copyToClipboard(text, onCopy);
61
+ setOpen(true);
62
+ setTimeout(() => setOpen(false), 1000);
63
+ };
64
+ return jsxRuntime.jsxs(Popover__namespace.Root, {
65
+ open: open,
66
+ children: [jsxRuntime.jsx(Popover__namespace.Trigger, {
67
+ asChild: true,
68
+ children: jsxRuntime.jsx("button", Object.assign({
69
+ type: 'button',
70
+ className: `${copyBtn({
71
+ theme
72
+ })} ${className !== null && className !== void 0 ? className : ''} hover:cursor-pointer`,
73
+ onClick: handleCopy
74
+ }, props, {
75
+ children: jsxRuntime.jsx(index.CopyIcon, {
76
+ className: 'w-4 h-4 transition',
77
+ color: theme === 'light' ? '#000000' : '#ffffff'
78
+ })
79
+ }))
80
+ }), jsxRuntime.jsx(Popover__namespace.Portal, {
81
+ children: jsxRuntime.jsxs(Popover__namespace.Content, {
82
+ className: 'bg-white text-gray-900 text-sm px-2 py-1 rounded shadow-lg',
83
+ side: 'top',
84
+ sideOffset: 5,
85
+ children: ["Copied", jsxRuntime.jsx(Popover__namespace.Arrow, {
86
+ className: 'fill-white'
87
+ })]
88
+ })
89
+ })]
90
+ });
91
+ };
92
+
93
+ exports.CopyButton = CopyButton;
94
+ exports.default = CopyButton;
95
+ //# sourceMappingURL=index.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs.js","sources":["../../../../src/react/components/copyButton/index.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { cva } from 'class-variance-authority'\nimport * as Popover from '@radix-ui/react-popover'\nimport { CopyIcon } from '../icons'\nimport { useTheme } from '../../contexts/ThemeContext'\nimport copyToClipboard, { CopyResult } from '../../utils/copyToClipboard'\n\nconst copyBtn = cva(\n 'p-0 flex-shrink-0 h-[max-content] min-w-0 bg-transparent transition-colors',\n {\n variants: {\n theme: {\n light: 'hover:text-gray-600 active:text-gray-800',\n dark: 'hover:text-gray-300 active:text-gray-100'\n }\n },\n defaultVariants: {\n theme: 'light'\n }\n }\n)\n\nexport interface CopyButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onCopy'> {\n /** Text to copy into clipboard */\n text: string\n /** Optional callback that will be called with the copy result */\n onCopy?: (result: CopyResult) => void\n}\n\nexport const CopyButton: React.FC<CopyButtonProps> = ({ text, className, onCopy, ...props }) => {\n const { theme } = useTheme()\n const [open, setOpen] = useState(false)\n\n const handleCopy = (e: React.MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation()\n e.preventDefault()\n copyToClipboard(text, onCopy)\n setOpen(true)\n setTimeout(() => setOpen(false), 1000)\n }\n\n return (\n <Popover.Root open={open}>\n <Popover.Trigger asChild>\n <button\n type='button'\n className={`${copyBtn({ theme })} ${className ?? ''} hover:cursor-pointer`}\n onClick={handleCopy}\n {...props}\n >\n <CopyIcon\n className='w-4 h-4 transition'\n color={theme === 'light' ? '#000000' : '#ffffff'}\n />\n </button>\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content\n className='bg-white text-gray-900 text-sm px-2 py-1 rounded shadow-lg'\n side='top'\n sideOffset={5}\n >\n Copied\n <Popover.Arrow className='fill-white' />\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n )\n}\n\nexport default CopyButton\n"],"names":["copyBtn","cva","variants","theme","light","dark","defaultVariants","CopyButton","_a","text","className","onCopy","props","__rest","useTheme","open","setOpen","useState","handleCopy","e","stopPropagation","preventDefault","copyToClipboard","setTimeout","_jsxs","Popover","Root","children","_jsx","Trigger","asChild","Object","assign","type","onClick","CopyIcon","color","Portal","Content","side","sideOffset","Arrow"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,MAAMA,OAAO,GAAGC,0BAAG,CACjB,4EAA4E,EAC5E;AACEC,EAAAA,QAAQ,EAAE;AACRC,IAAAA,KAAK,EAAE;AACLC,MAAAA,KAAK,EAAE,0CAA0C;AACjDC,MAAAA,IAAI,EAAE;AACP;GACF;AACDC,EAAAA,eAAe,EAAE;AACfH,IAAAA,KAAK,EAAE;AACR;AACF,CAAA,CACF;AASYI,MAAAA,UAAU,GAA+BC,EAAqC,IAAI;MAAzC;MAAEC,IAAI;MAAEC,SAAS;AAAEC,MAAAA;UAAkB;AAAPC,IAAAA,KAAK,GAAnCC,YAAA,CAAAL,EAAA,EAAA,CAAA,MAAA,EAAA,WAAA,EAAA,QAAA,CAAqC,CAAF;EACvF,MAAM;AAAEL,IAAAA;GAAO,GAAGW,qBAAQ,EAAE;EAC5B,MAAM,CAACC,IAAI,EAAEC,OAAO,CAAC,GAAGC,cAAQ,CAAC,KAAK,CAAC;EAEvC,MAAMC,UAAU,GAAIC,CAAsC,IAAI;IAC5DA,CAAC,CAACC,eAAe,EAAE;IACnBD,CAAC,CAACE,cAAc,EAAE;AAClBC,IAAAA,+BAAe,CAACb,IAAI,EAAEE,MAAM,CAAC;IAC7BK,OAAO,CAAC,IAAI,CAAC;IACbO,UAAU,CAAC,MAAMP,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC;GACvC;AAED,EAAA,OACEQ,gBAACC,kBAAO,CAACC,IAAI,EAAC;AAAAX,IAAAA,IAAI,EAAEA,IAAI;AACtBY,IAAAA,QAAA,EAAA,CAAAC,cAAA,CAACH,kBAAO,CAACI,OAAO,EAAC;AAAAC,MAAAA,OAAO,EACtB,IAAA;MAAAH,QAAA,EAAAC,cAAA,CAAA,QAAA,EAAAG,MAAA,CAAAC,MAAA,CAAA;AACEC,QAAAA,IAAI,EAAC,QAAQ;QACbvB,SAAS,EAAE,CAAGV,EAAAA,OAAO,CAAC;AAAEG,UAAAA;AAAK,SAAE,CAAC,CAAA,CAAA,EAAIO,SAAS,KAAT,IAAA,IAAAA,SAAS,KAAT,MAAA,GAAAA,SAAS,GAAI,EAAE,CAAuB,qBAAA,CAAA;AAC1EwB,QAAAA,OAAO,EAAEhB;OACL,EAAAN,KAAK;kBAETgB,cAAC,CAAAO,cAAQ,EACP;AAAAzB,UAAAA,SAAS,EAAC,oBAAoB;AAC9B0B,UAAAA,KAAK,EAAEjC,KAAK,KAAK,OAAO,GAAG,SAAS,GAAG;SACvC;AAAA,OAAA,CAAA;AAEY,KAAA,CAAA,EAClByB,cAAC,CAAAH,kBAAO,CAACY,MAAM,EAAA;AAAAV,MAAAA,QAAA,EACbH,eAAC,CAAAC,kBAAO,CAACa,OAAO;AACd5B,QAAAA,SAAS,EAAC,4DAA4D;AACtE6B,QAAAA,IAAI,EAAC,KAAK;AACVC,QAAAA,UAAU,EAAE,CAAC;QAGbb,QAAA,EAAA,CAAA,QAAA,EAAAC,cAAA,CAACH,kBAAO,CAACgB,KAAK,EAAC;AAAA/B,UAAAA,SAAS,EAAC;UAAe;OACxB;AAAA,KAAA,CACH;AACJ,GAAA,CAAA;AAEnB;;;;;"}
@@ -0,0 +1,71 @@
1
+ "use client";
2
+
3
+ import { __rest } from 'tslib';
4
+ import { jsxs, jsx } from 'react/jsx-runtime';
5
+ import { useState } from 'react';
6
+ import { cva } from 'class-variance-authority';
7
+ import * as Popover from '@radix-ui/react-popover';
8
+ import { CopyIcon } from '../icons/index.esm.js';
9
+ import { useTheme } from '../../contexts/ThemeContext.esm.js';
10
+ import { copyToClipboard } from '../../utils/copyToClipboard.esm.js';
11
+
12
+ const copyBtn = cva('p-0 flex-shrink-0 h-[max-content] min-w-0 bg-transparent transition-colors', {
13
+ variants: {
14
+ theme: {
15
+ light: 'hover:text-gray-600 active:text-gray-800',
16
+ dark: 'hover:text-gray-300 active:text-gray-100'
17
+ }
18
+ },
19
+ defaultVariants: {
20
+ theme: 'light'
21
+ }
22
+ });
23
+ const CopyButton = _a => {
24
+ var {
25
+ text,
26
+ className,
27
+ onCopy
28
+ } = _a,
29
+ props = __rest(_a, ["text", "className", "onCopy"]);
30
+ const {
31
+ theme
32
+ } = useTheme();
33
+ const [open, setOpen] = useState(false);
34
+ const handleCopy = e => {
35
+ e.stopPropagation();
36
+ e.preventDefault();
37
+ copyToClipboard(text, onCopy);
38
+ setOpen(true);
39
+ setTimeout(() => setOpen(false), 1000);
40
+ };
41
+ return jsxs(Popover.Root, {
42
+ open: open,
43
+ children: [jsx(Popover.Trigger, {
44
+ asChild: true,
45
+ children: jsx("button", Object.assign({
46
+ type: 'button',
47
+ className: `${copyBtn({
48
+ theme
49
+ })} ${className !== null && className !== void 0 ? className : ''} hover:cursor-pointer`,
50
+ onClick: handleCopy
51
+ }, props, {
52
+ children: jsx(CopyIcon, {
53
+ className: 'w-4 h-4 transition',
54
+ color: theme === 'light' ? '#000000' : '#ffffff'
55
+ })
56
+ }))
57
+ }), jsx(Popover.Portal, {
58
+ children: jsxs(Popover.Content, {
59
+ className: 'bg-white text-gray-900 text-sm px-2 py-1 rounded shadow-lg',
60
+ side: 'top',
61
+ sideOffset: 5,
62
+ children: ["Copied", jsx(Popover.Arrow, {
63
+ className: 'fill-white'
64
+ })]
65
+ })
66
+ })]
67
+ });
68
+ };
69
+
70
+ export { CopyButton, CopyButton as default };
71
+ //# sourceMappingURL=index.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm.js","sources":["../../../../src/react/components/copyButton/index.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { cva } from 'class-variance-authority'\nimport * as Popover from '@radix-ui/react-popover'\nimport { CopyIcon } from '../icons'\nimport { useTheme } from '../../contexts/ThemeContext'\nimport copyToClipboard, { CopyResult } from '../../utils/copyToClipboard'\n\nconst copyBtn = cva(\n 'p-0 flex-shrink-0 h-[max-content] min-w-0 bg-transparent transition-colors',\n {\n variants: {\n theme: {\n light: 'hover:text-gray-600 active:text-gray-800',\n dark: 'hover:text-gray-300 active:text-gray-100'\n }\n },\n defaultVariants: {\n theme: 'light'\n }\n }\n)\n\nexport interface CopyButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onCopy'> {\n /** Text to copy into clipboard */\n text: string\n /** Optional callback that will be called with the copy result */\n onCopy?: (result: CopyResult) => void\n}\n\nexport const CopyButton: React.FC<CopyButtonProps> = ({ text, className, onCopy, ...props }) => {\n const { theme } = useTheme()\n const [open, setOpen] = useState(false)\n\n const handleCopy = (e: React.MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation()\n e.preventDefault()\n copyToClipboard(text, onCopy)\n setOpen(true)\n setTimeout(() => setOpen(false), 1000)\n }\n\n return (\n <Popover.Root open={open}>\n <Popover.Trigger asChild>\n <button\n type='button'\n className={`${copyBtn({ theme })} ${className ?? ''} hover:cursor-pointer`}\n onClick={handleCopy}\n {...props}\n >\n <CopyIcon\n className='w-4 h-4 transition'\n color={theme === 'light' ? '#000000' : '#ffffff'}\n />\n </button>\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content\n className='bg-white text-gray-900 text-sm px-2 py-1 rounded shadow-lg'\n side='top'\n sideOffset={5}\n >\n Copied\n <Popover.Arrow className='fill-white' />\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n )\n}\n\nexport default CopyButton\n"],"names":["copyBtn","cva","variants","theme","light","dark","defaultVariants","CopyButton","_a","text","className","onCopy","props","__rest","useTheme","open","setOpen","useState","handleCopy","e","stopPropagation","preventDefault","copyToClipboard","setTimeout","_jsxs","Popover","Root","children","_jsx","Trigger","asChild","Object","assign","type","onClick","CopyIcon","color","Portal","Content","side","sideOffset","Arrow"],"mappings":";;;;;;;;;;;AAOA,MAAMA,OAAO,GAAGC,GAAG,CACjB,4EAA4E,EAC5E;AACEC,EAAAA,QAAQ,EAAE;AACRC,IAAAA,KAAK,EAAE;AACLC,MAAAA,KAAK,EAAE,0CAA0C;AACjDC,MAAAA,IAAI,EAAE;AACP;GACF;AACDC,EAAAA,eAAe,EAAE;AACfH,IAAAA,KAAK,EAAE;AACR;AACF,CAAA,CACF;AASYI,MAAAA,UAAU,GAA+BC,EAAqC,IAAI;MAAzC;MAAEC,IAAI;MAAEC,SAAS;AAAEC,MAAAA;UAAkB;AAAPC,IAAAA,KAAK,GAAnCC,MAAA,CAAAL,EAAA,EAAA,CAAA,MAAA,EAAA,WAAA,EAAA,QAAA,CAAqC,CAAF;EACvF,MAAM;AAAEL,IAAAA;GAAO,GAAGW,QAAQ,EAAE;EAC5B,MAAM,CAACC,IAAI,EAAEC,OAAO,CAAC,GAAGC,QAAQ,CAAC,KAAK,CAAC;EAEvC,MAAMC,UAAU,GAAIC,CAAsC,IAAI;IAC5DA,CAAC,CAACC,eAAe,EAAE;IACnBD,CAAC,CAACE,cAAc,EAAE;AAClBC,IAAAA,eAAe,CAACb,IAAI,EAAEE,MAAM,CAAC;IAC7BK,OAAO,CAAC,IAAI,CAAC;IACbO,UAAU,CAAC,MAAMP,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC;GACvC;AAED,EAAA,OACEQ,KAACC,OAAO,CAACC,IAAI,EAAC;AAAAX,IAAAA,IAAI,EAAEA,IAAI;AACtBY,IAAAA,QAAA,EAAA,CAAAC,GAAA,CAACH,OAAO,CAACI,OAAO,EAAC;AAAAC,MAAAA,OAAO,EACtB,IAAA;MAAAH,QAAA,EAAAC,GAAA,CAAA,QAAA,EAAAG,MAAA,CAAAC,MAAA,CAAA;AACEC,QAAAA,IAAI,EAAC,QAAQ;QACbvB,SAAS,EAAE,CAAGV,EAAAA,OAAO,CAAC;AAAEG,UAAAA;AAAK,SAAE,CAAC,CAAA,CAAA,EAAIO,SAAS,KAAT,IAAA,IAAAA,SAAS,KAAT,MAAA,GAAAA,SAAS,GAAI,EAAE,CAAuB,qBAAA,CAAA;AAC1EwB,QAAAA,OAAO,EAAEhB;OACL,EAAAN,KAAK;kBAETgB,GAAC,CAAAO,QAAQ,EACP;AAAAzB,UAAAA,SAAS,EAAC,oBAAoB;AAC9B0B,UAAAA,KAAK,EAAEjC,KAAK,KAAK,OAAO,GAAG,SAAS,GAAG;SACvC;AAAA,OAAA,CAAA;AAEY,KAAA,CAAA,EAClByB,GAAC,CAAAH,OAAO,CAACY,MAAM,EAAA;AAAAV,MAAAA,QAAA,EACbH,IAAC,CAAAC,OAAO,CAACa,OAAO;AACd5B,QAAAA,SAAS,EAAC,4DAA4D;AACtE6B,QAAAA,IAAI,EAAC,KAAK;AACVC,QAAAA,UAAU,EAAE,CAAC;QAGbb,QAAA,EAAA,CAAA,QAAA,EAAAC,GAAA,CAACH,OAAO,CAACgB,KAAK,EAAC;AAAA/B,UAAAA,SAAS,EAAC;UAAe;OACxB;AAAA,KAAA,CACH;AACJ,GAAA,CAAA;AAEnB;;;;"}
@@ -0,0 +1,74 @@
1
+ "use client";
2
+
3
+ 'use strict';
4
+
5
+ Object.defineProperty(exports, '__esModule', { value: true });
6
+
7
+ var jsxRuntime = require('react/jsx-runtime');
8
+
9
+ /**
10
+ * Dash Logo component with customizable size and color
11
+ * Original aspect ratio: 30:25 (1.2:1)
12
+ *
13
+ * Color can be set via:
14
+ * - color prop (takes precedence)
15
+ * - CSS class with text color (e.g., "text-dash-primary-dark-blue")
16
+ *
17
+ * SVG is wrapped in a container that centers the logo and supports:
18
+ * - containerPadding: padding around the logo
19
+ * - containerSize: width/height of the container
20
+ * - containerClassName: CSS class for the container
21
+ * - minWidth/minHeight: min-content (adapts to logo size)
22
+ */
23
+ const DashLogo = ({
24
+ color,
25
+ size,
26
+ width,
27
+ height,
28
+ className = '',
29
+ onClick,
30
+ containerPadding,
31
+ containerSize,
32
+ containerClassName = ''
33
+ }) => {
34
+ const logoWidth = width || size || 30;
35
+ const logoHeight = height || (size ? size * 25 / 30 : 25);
36
+ const containerStyle = {
37
+ display: 'flex',
38
+ justifyContent: 'center',
39
+ alignItems: 'center',
40
+ minWidth: 'min-content',
41
+ minHeight: 'min-content',
42
+ padding: typeof containerPadding === 'number' ? `${containerPadding}px` : containerPadding,
43
+ width: typeof containerSize === 'number' ? `${containerSize}px` : containerSize,
44
+ height: typeof containerSize === 'number' ? `${containerSize}px` : containerSize,
45
+ cursor: onClick ? 'pointer' : 'default'
46
+ };
47
+ return jsxRuntime.jsx("div", {
48
+ className: containerClassName,
49
+ style: containerStyle,
50
+ onClick: onClick,
51
+ children: jsxRuntime.jsxs("svg", {
52
+ width: logoWidth,
53
+ height: logoHeight,
54
+ viewBox: '0 0 30 25',
55
+ fill: 'none',
56
+ xmlns: 'http://www.w3.org/2000/svg',
57
+ className: `text-dash-brand ${className}`,
58
+ style: {
59
+ color: color || 'var(--color-dash-brand, #4C7EFF)'
60
+ },
61
+ children: [jsxRuntime.jsx("path", {
62
+ d: 'M19.6465 0C29.2466 2.13767e-05 30.9542 5.2464 29.585 12.6006C28.6773 17.5547 26.3845 21.3391 22.5537 23.1084C20.8153 23.9084 19.1848 24.3555 15.3389 24.3555H4.44629L5.33887 19.293H14.9229C20.6921 19.3084 22.2159 16.8009 22.9697 14.6162C23.2467 13.8008 23.9084 11.2619 23.9238 9.76953C23.9699 6.84642 22.5383 5.07715 17.6768 5.07715L7.81543 5.06152L8.72363 0H19.6465Z',
63
+ fill: color || 'currentColor'
64
+ }), jsxRuntime.jsx("path", {
65
+ d: 'M15.2002 9.63184C15.2002 9.63184 15.0775 10.232 14.7236 11.709C14.4621 12.8321 14.0462 14.6934 11.1846 14.6934H0C0.00327153 14.6775 0.12745 14.0734 0.476562 12.6162C0.73811 11.493 1.15435 9.63184 4.01562 9.63184H15.2002Z',
66
+ fill: color || 'currentColor'
67
+ })]
68
+ })
69
+ });
70
+ };
71
+
72
+ exports.DashLogo = DashLogo;
73
+ exports.default = DashLogo;
74
+ //# sourceMappingURL=index.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs.js","sources":["../../../../src/react/components/dashLogo/index.tsx"],"sourcesContent":["import React from 'react'\n\nexport interface DashLogoProps {\n color?: string\n size?: number\n width?: number\n height?: number\n className?: string\n onClick?: () => void\n containerPadding?: string | number\n containerSize?: string | number\n containerClassName?: string\n}\n\n/**\n * Dash Logo component with customizable size and color\n * Original aspect ratio: 30:25 (1.2:1)\n * \n * Color can be set via:\n * - color prop (takes precedence)\n * - CSS class with text color (e.g., \"text-dash-primary-dark-blue\")\n * \n * SVG is wrapped in a container that centers the logo and supports:\n * - containerPadding: padding around the logo\n * - containerSize: width/height of the container \n * - containerClassName: CSS class for the container\n * - minWidth/minHeight: min-content (adapts to logo size)\n */\nexport const DashLogo: React.FC<DashLogoProps> = ({\n color,\n size,\n width,\n height,\n className = '',\n onClick,\n containerPadding,\n containerSize,\n containerClassName = ''\n}) => {\n const logoWidth = width || size || 30\n const logoHeight = height || (size ? (size * 25) / 30 : 25)\n\n const containerStyle: React.CSSProperties = {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n minWidth: 'min-content',\n minHeight: 'min-content',\n padding: typeof containerPadding === 'number' ? `${containerPadding}px` : containerPadding,\n width: typeof containerSize === 'number' ? `${containerSize}px` : containerSize,\n height: typeof containerSize === 'number' ? `${containerSize}px` : containerSize,\n cursor: onClick ? 'pointer' : 'default'\n }\n\n return (\n <div\n className={containerClassName}\n style={containerStyle}\n onClick={onClick}\n >\n <svg\n width={logoWidth}\n height={logoHeight}\n viewBox='0 0 30 25'\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n className={`text-dash-brand ${className}`}\n style={{ \n color: color || 'var(--color-dash-brand, #4C7EFF)'\n }}\n >\n <path\n d='M19.6465 0C29.2466 2.13767e-05 30.9542 5.2464 29.585 12.6006C28.6773 17.5547 26.3845 21.3391 22.5537 23.1084C20.8153 23.9084 19.1848 24.3555 15.3389 24.3555H4.44629L5.33887 19.293H14.9229C20.6921 19.3084 22.2159 16.8009 22.9697 14.6162C23.2467 13.8008 23.9084 11.2619 23.9238 9.76953C23.9699 6.84642 22.5383 5.07715 17.6768 5.07715L7.81543 5.06152L8.72363 0H19.6465Z'\n fill={color || 'currentColor'}\n />\n <path\n d='M15.2002 9.63184C15.2002 9.63184 15.0775 10.232 14.7236 11.709C14.4621 12.8321 14.0462 14.6934 11.1846 14.6934H0C0.00327153 14.6775 0.12745 14.0734 0.476562 12.6162C0.73811 11.493 1.15435 9.63184 4.01562 9.63184H15.2002Z'\n fill={color || 'currentColor'}\n />\n </svg>\n </div>\n )\n}\n\nexport default DashLogo\n"],"names":["DashLogo","color","size","width","height","className","onClick","containerPadding","containerSize","containerClassName","logoWidth","logoHeight","containerStyle","display","justifyContent","alignItems","minWidth","minHeight","padding","cursor","_jsx","style","children","_jsxs","viewBox","fill","xmlns","d"],"mappings":";;;;;;;;AAcA;;;;;;;;;;;;;AAaG;AACI,MAAMA,QAAQ,GAA4BA,CAAC;EAChDC,KAAK;EACLC,IAAI;EACJC,KAAK;EACLC,MAAM;AACNC,EAAAA,SAAS,GAAG,EAAE;EACdC,OAAO;EACPC,gBAAgB;EAChBC,aAAa;AACbC,EAAAA,kBAAkB,GAAG;AAAE,CACxB,KAAI;AACH,EAAA,MAAMC,SAAS,GAAGP,KAAK,IAAID,IAAI,IAAI,EAAE;AACrC,EAAA,MAAMS,UAAU,GAAGP,MAAM,KAAKF,IAAI,GAAIA,IAAI,GAAG,EAAE,GAAI,EAAE,GAAG,EAAE,CAAC;AAE3D,EAAA,MAAMU,cAAc,GAAwB;AAC1CC,IAAAA,OAAO,EAAE,MAAM;AACfC,IAAAA,cAAc,EAAE,QAAQ;AACxBC,IAAAA,UAAU,EAAE,QAAQ;AACpBC,IAAAA,QAAQ,EAAE,aAAa;AACvBC,IAAAA,SAAS,EAAE,aAAa;IACxBC,OAAO,EAAE,OAAOX,gBAAgB,KAAK,QAAQ,GAAG,CAAGA,EAAAA,gBAAgB,CAAI,EAAA,CAAA,GAAGA,gBAAgB;IAC1FJ,KAAK,EAAE,OAAOK,aAAa,KAAK,QAAQ,GAAG,CAAGA,EAAAA,aAAa,CAAI,EAAA,CAAA,GAAGA,aAAa;IAC/EJ,MAAM,EAAE,OAAOI,aAAa,KAAK,QAAQ,GAAG,CAAGA,EAAAA,aAAa,CAAI,EAAA,CAAA,GAAGA,aAAa;AAChFW,IAAAA,MAAM,EAAEb,OAAO,GAAG,SAAS,GAAG;GAC/B;EAED,OACEc,cACE,CAAA,KAAA,EAAA;AAAAf,IAAAA,SAAS,EAAEI,kBAAkB;AAC7BY,IAAAA,KAAK,EAAET,cAAc;AACrBN,IAAAA,OAAO,EAAEA,OAAO;AAEhBgB,IAAAA,QAAA,EAAAC,eAAA,CAAA,KAAA,EAAA;AACEpB,MAAAA,KAAK,EAAEO,SAAS;AAChBN,MAAAA,MAAM,EAAEO,UAAU;AAClBa,MAAAA,OAAO,EAAC,WAAW;AACnBC,MAAAA,IAAI,EAAC,MAAM;AACXC,MAAAA,KAAK,EAAC,4BAA4B;MAClCrB,SAAS,EAAE,CAAmBA,gBAAAA,EAAAA,SAAS,CAAE,CAAA;AACzCgB,MAAAA,KAAK,EAAE;QACLpB,KAAK,EAAEA,KAAK,IAAI;OACjB;AAEDqB,MAAAA,QAAA,EAAA,CAAAF,cAAA,CAAA,MAAA,EAAA;AACEO,QAAAA,CAAC,EAAC,gXAAgX;QAClXF,IAAI,EAAExB,KAAK,IAAI;AAAc,OAAA,CAC7B,EACFmB,cAAA,CAAA,MAAA,EAAA;AACEO,QAAAA,CAAC,EAAC,8NAA8N;QAChOF,IAAI,EAAExB,KAAK,IAAI;AACf,OAAA,CAAA;KAAA;AAEA,GAAA,CAAA;AAEV;;;;;"}
@@ -0,0 +1,69 @@
1
+ "use client";
2
+
3
+ import { jsx, jsxs } from 'react/jsx-runtime';
4
+
5
+ /**
6
+ * Dash Logo component with customizable size and color
7
+ * Original aspect ratio: 30:25 (1.2:1)
8
+ *
9
+ * Color can be set via:
10
+ * - color prop (takes precedence)
11
+ * - CSS class with text color (e.g., "text-dash-primary-dark-blue")
12
+ *
13
+ * SVG is wrapped in a container that centers the logo and supports:
14
+ * - containerPadding: padding around the logo
15
+ * - containerSize: width/height of the container
16
+ * - containerClassName: CSS class for the container
17
+ * - minWidth/minHeight: min-content (adapts to logo size)
18
+ */
19
+ const DashLogo = ({
20
+ color,
21
+ size,
22
+ width,
23
+ height,
24
+ className = '',
25
+ onClick,
26
+ containerPadding,
27
+ containerSize,
28
+ containerClassName = ''
29
+ }) => {
30
+ const logoWidth = width || size || 30;
31
+ const logoHeight = height || (size ? size * 25 / 30 : 25);
32
+ const containerStyle = {
33
+ display: 'flex',
34
+ justifyContent: 'center',
35
+ alignItems: 'center',
36
+ minWidth: 'min-content',
37
+ minHeight: 'min-content',
38
+ padding: typeof containerPadding === 'number' ? `${containerPadding}px` : containerPadding,
39
+ width: typeof containerSize === 'number' ? `${containerSize}px` : containerSize,
40
+ height: typeof containerSize === 'number' ? `${containerSize}px` : containerSize,
41
+ cursor: onClick ? 'pointer' : 'default'
42
+ };
43
+ return jsx("div", {
44
+ className: containerClassName,
45
+ style: containerStyle,
46
+ onClick: onClick,
47
+ children: jsxs("svg", {
48
+ width: logoWidth,
49
+ height: logoHeight,
50
+ viewBox: '0 0 30 25',
51
+ fill: 'none',
52
+ xmlns: 'http://www.w3.org/2000/svg',
53
+ className: `text-dash-brand ${className}`,
54
+ style: {
55
+ color: color || 'var(--color-dash-brand, #4C7EFF)'
56
+ },
57
+ children: [jsx("path", {
58
+ d: 'M19.6465 0C29.2466 2.13767e-05 30.9542 5.2464 29.585 12.6006C28.6773 17.5547 26.3845 21.3391 22.5537 23.1084C20.8153 23.9084 19.1848 24.3555 15.3389 24.3555H4.44629L5.33887 19.293H14.9229C20.6921 19.3084 22.2159 16.8009 22.9697 14.6162C23.2467 13.8008 23.9084 11.2619 23.9238 9.76953C23.9699 6.84642 22.5383 5.07715 17.6768 5.07715L7.81543 5.06152L8.72363 0H19.6465Z',
59
+ fill: color || 'currentColor'
60
+ }), jsx("path", {
61
+ d: 'M15.2002 9.63184C15.2002 9.63184 15.0775 10.232 14.7236 11.709C14.4621 12.8321 14.0462 14.6934 11.1846 14.6934H0C0.00327153 14.6775 0.12745 14.0734 0.476562 12.6162C0.73811 11.493 1.15435 9.63184 4.01562 9.63184H15.2002Z',
62
+ fill: color || 'currentColor'
63
+ })]
64
+ })
65
+ });
66
+ };
67
+
68
+ export { DashLogo, DashLogo as default };
69
+ //# sourceMappingURL=index.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm.js","sources":["../../../../src/react/components/dashLogo/index.tsx"],"sourcesContent":["import React from 'react'\n\nexport interface DashLogoProps {\n color?: string\n size?: number\n width?: number\n height?: number\n className?: string\n onClick?: () => void\n containerPadding?: string | number\n containerSize?: string | number\n containerClassName?: string\n}\n\n/**\n * Dash Logo component with customizable size and color\n * Original aspect ratio: 30:25 (1.2:1)\n * \n * Color can be set via:\n * - color prop (takes precedence)\n * - CSS class with text color (e.g., \"text-dash-primary-dark-blue\")\n * \n * SVG is wrapped in a container that centers the logo and supports:\n * - containerPadding: padding around the logo\n * - containerSize: width/height of the container \n * - containerClassName: CSS class for the container\n * - minWidth/minHeight: min-content (adapts to logo size)\n */\nexport const DashLogo: React.FC<DashLogoProps> = ({\n color,\n size,\n width,\n height,\n className = '',\n onClick,\n containerPadding,\n containerSize,\n containerClassName = ''\n}) => {\n const logoWidth = width || size || 30\n const logoHeight = height || (size ? (size * 25) / 30 : 25)\n\n const containerStyle: React.CSSProperties = {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n minWidth: 'min-content',\n minHeight: 'min-content',\n padding: typeof containerPadding === 'number' ? `${containerPadding}px` : containerPadding,\n width: typeof containerSize === 'number' ? `${containerSize}px` : containerSize,\n height: typeof containerSize === 'number' ? `${containerSize}px` : containerSize,\n cursor: onClick ? 'pointer' : 'default'\n }\n\n return (\n <div\n className={containerClassName}\n style={containerStyle}\n onClick={onClick}\n >\n <svg\n width={logoWidth}\n height={logoHeight}\n viewBox='0 0 30 25'\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n className={`text-dash-brand ${className}`}\n style={{ \n color: color || 'var(--color-dash-brand, #4C7EFF)'\n }}\n >\n <path\n d='M19.6465 0C29.2466 2.13767e-05 30.9542 5.2464 29.585 12.6006C28.6773 17.5547 26.3845 21.3391 22.5537 23.1084C20.8153 23.9084 19.1848 24.3555 15.3389 24.3555H4.44629L5.33887 19.293H14.9229C20.6921 19.3084 22.2159 16.8009 22.9697 14.6162C23.2467 13.8008 23.9084 11.2619 23.9238 9.76953C23.9699 6.84642 22.5383 5.07715 17.6768 5.07715L7.81543 5.06152L8.72363 0H19.6465Z'\n fill={color || 'currentColor'}\n />\n <path\n d='M15.2002 9.63184C15.2002 9.63184 15.0775 10.232 14.7236 11.709C14.4621 12.8321 14.0462 14.6934 11.1846 14.6934H0C0.00327153 14.6775 0.12745 14.0734 0.476562 12.6162C0.73811 11.493 1.15435 9.63184 4.01562 9.63184H15.2002Z'\n fill={color || 'currentColor'}\n />\n </svg>\n </div>\n )\n}\n\nexport default DashLogo\n"],"names":["DashLogo","color","size","width","height","className","onClick","containerPadding","containerSize","containerClassName","logoWidth","logoHeight","containerStyle","display","justifyContent","alignItems","minWidth","minHeight","padding","cursor","_jsx","style","children","_jsxs","viewBox","fill","xmlns","d"],"mappings":";;;;AAcA;;;;;;;;;;;;;AAaG;AACI,MAAMA,QAAQ,GAA4BA,CAAC;EAChDC,KAAK;EACLC,IAAI;EACJC,KAAK;EACLC,MAAM;AACNC,EAAAA,SAAS,GAAG,EAAE;EACdC,OAAO;EACPC,gBAAgB;EAChBC,aAAa;AACbC,EAAAA,kBAAkB,GAAG;AAAE,CACxB,KAAI;AACH,EAAA,MAAMC,SAAS,GAAGP,KAAK,IAAID,IAAI,IAAI,EAAE;AACrC,EAAA,MAAMS,UAAU,GAAGP,MAAM,KAAKF,IAAI,GAAIA,IAAI,GAAG,EAAE,GAAI,EAAE,GAAG,EAAE,CAAC;AAE3D,EAAA,MAAMU,cAAc,GAAwB;AAC1CC,IAAAA,OAAO,EAAE,MAAM;AACfC,IAAAA,cAAc,EAAE,QAAQ;AACxBC,IAAAA,UAAU,EAAE,QAAQ;AACpBC,IAAAA,QAAQ,EAAE,aAAa;AACvBC,IAAAA,SAAS,EAAE,aAAa;IACxBC,OAAO,EAAE,OAAOX,gBAAgB,KAAK,QAAQ,GAAG,CAAGA,EAAAA,gBAAgB,CAAI,EAAA,CAAA,GAAGA,gBAAgB;IAC1FJ,KAAK,EAAE,OAAOK,aAAa,KAAK,QAAQ,GAAG,CAAGA,EAAAA,aAAa,CAAI,EAAA,CAAA,GAAGA,aAAa;IAC/EJ,MAAM,EAAE,OAAOI,aAAa,KAAK,QAAQ,GAAG,CAAGA,EAAAA,aAAa,CAAI,EAAA,CAAA,GAAGA,aAAa;AAChFW,IAAAA,MAAM,EAAEb,OAAO,GAAG,SAAS,GAAG;GAC/B;EAED,OACEc,GACE,CAAA,KAAA,EAAA;AAAAf,IAAAA,SAAS,EAAEI,kBAAkB;AAC7BY,IAAAA,KAAK,EAAET,cAAc;AACrBN,IAAAA,OAAO,EAAEA,OAAO;AAEhBgB,IAAAA,QAAA,EAAAC,IAAA,CAAA,KAAA,EAAA;AACEpB,MAAAA,KAAK,EAAEO,SAAS;AAChBN,MAAAA,MAAM,EAAEO,UAAU;AAClBa,MAAAA,OAAO,EAAC,WAAW;AACnBC,MAAAA,IAAI,EAAC,MAAM;AACXC,MAAAA,KAAK,EAAC,4BAA4B;MAClCrB,SAAS,EAAE,CAAmBA,gBAAAA,EAAAA,SAAS,CAAE,CAAA;AACzCgB,MAAAA,KAAK,EAAE;QACLpB,KAAK,EAAEA,KAAK,IAAI;OACjB;AAEDqB,MAAAA,QAAA,EAAA,CAAAF,GAAA,CAAA,MAAA,EAAA;AACEO,QAAAA,CAAC,EAAC,gXAAgX;QAClXF,IAAI,EAAExB,KAAK,IAAI;AAAc,OAAA,CAC7B,EACFmB,GAAA,CAAA,MAAA,EAAA;AACEO,QAAAA,CAAC,EAAC,8NAA8N;QAChOF,IAAI,EAAExB,KAAK,IAAI;AACf,OAAA,CAAA;KAAA;AAEA,GAAA,CAAA;AAEV;;;;"}
@@ -0,0 +1,120 @@
1
+ "use client";
2
+
3
+ 'use strict';
4
+
5
+ Object.defineProperty(exports, '__esModule', { value: true });
6
+
7
+ var jsxRuntime = require('react/jsx-runtime');
8
+ var classVarianceAuthority = require('class-variance-authority');
9
+ var index = require('../icons/index.cjs.js');
10
+ var index$1 = require('../timeDelta/index.cjs.js');
11
+ var ThemeContext = require('../../contexts/ThemeContext.cjs.js');
12
+
13
+ const wrapperStyles = classVarianceAuthority.cva('');
14
+ const infoContainer = classVarianceAuthority.cva('flex flex-wrap items-center whitespace-nowrap -mt-1 -mb-1');
15
+ const itemStyles = classVarianceAuthority.cva('mt-1 mb-1 mr-2 last:mr-0');
16
+ const dateTextStyles = classVarianceAuthority.cva('text-[0.813rem]', {
17
+ variants: {
18
+ theme: {
19
+ light: 'text-gray-900',
20
+ dark: 'text-gray-100'
21
+ }
22
+ },
23
+ defaultVariants: {
24
+ theme: 'light'
25
+ }
26
+ });
27
+ const deltaContainerStyles = classVarianceAuthority.cva('inline-block px-[10px] py-[3px] border rounded-[4px] text-[0.688rem]', {
28
+ variants: {
29
+ theme: {
30
+ light: 'border-[rgba(147,170,178,0.4)] text-[var(--chakra-colors-gray-250)]',
31
+ dark: 'border-gray-600 text-gray-400'
32
+ }
33
+ },
34
+ defaultVariants: {
35
+ theme: 'light'
36
+ }
37
+ });
38
+ /**
39
+ * DateBlock component displays a date, optional calendar icon,
40
+ * and relative time via TimeDelta. It can also show an optional
41
+ * tooltip with the relative time when hovered. Supports light/dark theme.
42
+ */
43
+ const DateBlock = ({
44
+ timestamp,
45
+ format = 'all',
46
+ showTime = false,
47
+ // showRelativeTooltip = false,
48
+ className = ''
49
+ }) => {
50
+ const {
51
+ theme
52
+ } = ThemeContext.useTheme();
53
+ const date = new Date(timestamp);
54
+ if (isNaN(date.getTime())) return null;
55
+ const modes = {
56
+ all: {
57
+ calendarIcon: true,
58
+ date: true,
59
+ delta: true
60
+ },
61
+ deltaOnly: {
62
+ calendarIcon: false,
63
+ date: false,
64
+ delta: true
65
+ },
66
+ dateOnly: {
67
+ calendarIcon: false,
68
+ date: true,
69
+ delta: false
70
+ }
71
+ };
72
+ const options = Object.assign({
73
+ day: 'numeric',
74
+ month: 'short',
75
+ year: 'numeric'
76
+ }, showTime ? {
77
+ hour: '2-digit',
78
+ minute: '2-digit'
79
+ } : {});
80
+ const formattedDate = date.toLocaleDateString('en-GB', options);
81
+ // const tooltipContent = showRelativeTooltip
82
+ // ? <TimeDelta endDate={timestamp} showTimestampTooltip={false} />
83
+ // : null
84
+ const content = jsxRuntime.jsxs("div", {
85
+ className: infoContainer(),
86
+ children: [modes[format].calendarIcon && jsxRuntime.jsx(index.CalendarIcon, {
87
+ className: `${itemStyles()} w-[12px] h-[14px]`,
88
+ color: theme === 'dark' ? '#9CA3AF' : '#93AAB2'
89
+ }), modes[format].date && jsxRuntime.jsx("div", {
90
+ className: `${itemStyles()} ${dateTextStyles({
91
+ theme
92
+ })}`,
93
+ children: formattedDate
94
+ }), modes[format].delta && jsxRuntime.jsx("div", {
95
+ className: `${itemStyles()} ${deltaContainerStyles({
96
+ theme
97
+ })}`,
98
+ children: jsxRuntime.jsx(index$1.TimeDelta, {
99
+ endDate: date,
100
+ showTimestampTooltip: format !== 'all'
101
+ })
102
+ })]
103
+ });
104
+ const wrapperClass = `${wrapperStyles()} ${className !== '' ? ` ${className}` : ''}`;
105
+ return jsxRuntime.jsx("div", {
106
+ className: wrapperClass,
107
+ children: content
108
+ });
109
+ // return tooltipContent ? (
110
+ // <Tooltip placement="top" content={tooltipContent}>
111
+ // <div className={wrapperClass}>{content}</div>
112
+ // </Tooltip>
113
+ // ) : (
114
+ // <div className={wrapperClass}>{content}</div>
115
+ // )
116
+ };
117
+
118
+ exports.DateBlock = DateBlock;
119
+ exports.default = DateBlock;
120
+ //# sourceMappingURL=index.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs.js","sources":["../../../../src/react/components/dateBlock/index.tsx"],"sourcesContent":["import React from 'react'\nimport { cva } from 'class-variance-authority'\nimport { CalendarIcon } from '../icons'\nimport { TimeDelta } from '../timeDelta'\nimport { useTheme } from '../../contexts/ThemeContext'\n\nconst wrapperStyles = cva('')\n\nconst infoContainer = cva(\n 'flex flex-wrap items-center whitespace-nowrap -mt-1 -mb-1'\n)\n\nconst itemStyles = cva(\n 'mt-1 mb-1 mr-2 last:mr-0'\n)\n\nconst dateTextStyles = cva(\n 'text-[0.813rem]',\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\nconst deltaContainerStyles = cva(\n 'inline-block px-[10px] py-[3px] border rounded-[4px] text-[0.688rem]',\n {\n variants: {\n theme: {\n light: 'border-[rgba(147,170,178,0.4)] text-[var(--chakra-colors-gray-250)]',\n dark: 'border-gray-600 text-gray-400'\n }\n },\n defaultVariants: {\n theme: 'light'\n }\n }\n)\n\nexport type DateBlockFormat = 'all' | 'deltaOnly' | 'dateOnly'\n\nexport interface DateBlockProps {\n /** Unix timestamp (ms), Date object, or parsable date string */\n timestamp: number | Date | string\n /** Display format: full date+delta, delta only, or date only */\n format?: DateBlockFormat\n /** Include hours and minutes in formatted date */\n showTime?: boolean\n /** Show a tooltip with relative time */\n showRelativeTooltip?: boolean\n /** Additional CSS classes for wrapper div */\n className?: string\n}\n\n/**\n * DateBlock component displays a date, optional calendar icon,\n * and relative time via TimeDelta. It can also show an optional\n * tooltip with the relative time when hovered. Supports light/dark theme.\n */\nexport const DateBlock: React.FC<DateBlockProps> = ({\n timestamp,\n format = 'all',\n showTime = false,\n // showRelativeTooltip = false,\n className = ''\n}) => {\n const { theme } = useTheme()\n const date = new Date(timestamp)\n if (isNaN(date.getTime())) return null\n\n const modes = {\n all: { calendarIcon: true, date: true, delta: true },\n deltaOnly: { calendarIcon: false, date: false, delta: true },\n dateOnly: { calendarIcon: false, date: true, delta: false }\n } as const\n\n const options: Intl.DateTimeFormatOptions = {\n day: 'numeric',\n month: 'short',\n year: 'numeric',\n ...(showTime ? { hour: '2-digit', minute: '2-digit' } : {})\n }\n\n const formattedDate = date.toLocaleDateString('en-GB', options)\n\n // const tooltipContent = showRelativeTooltip\n // ? <TimeDelta endDate={timestamp} showTimestampTooltip={false} />\n // : null\n\n const content = (\n <div className={infoContainer()}>\n {modes[format].calendarIcon && (\n <CalendarIcon\n className={`${itemStyles()} w-[12px] h-[14px]`}\n color={theme === 'dark' ? '#9CA3AF' : '#93AAB2'}\n />\n )}\n {modes[format].date && (\n <div className={`${itemStyles()} ${dateTextStyles({ theme })}`}>{formattedDate}</div>\n )}\n {modes[format].delta && (\n <div className={`${itemStyles()} ${deltaContainerStyles({ theme })}`}>\n <TimeDelta\n endDate={date}\n showTimestampTooltip={format !== 'all'}\n />\n </div>\n )}\n </div>\n )\n\n const wrapperClass = `${wrapperStyles()} ${className !== '' ? ` ${className}` : ''}`\n\n return <div className={wrapperClass}>{content}</div>\n\n // return tooltipContent ? (\n // <Tooltip placement=\"top\" content={tooltipContent}>\n // <div className={wrapperClass}>{content}</div>\n // </Tooltip>\n // ) : (\n // <div className={wrapperClass}>{content}</div>\n // )\n}\n\nexport default DateBlock "],"names":["wrapperStyles","cva","infoContainer","itemStyles","dateTextStyles","variants","theme","light","dark","defaultVariants","deltaContainerStyles","DateBlock","timestamp","format","showTime","className","useTheme","date","Date","isNaN","getTime","modes","all","calendarIcon","delta","deltaOnly","dateOnly","options","Object","assign","day","month","year","hour","minute","formattedDate","toLocaleDateString","content","_jsxs","children","_jsx","CalendarIcon","color","TimeDelta","endDate","showTimestampTooltip","wrapperClass"],"mappings":"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"}
@@ -0,0 +1,115 @@
1
+ "use client";
2
+
3
+ import { jsxs, jsx } from 'react/jsx-runtime';
4
+ import { cva } from 'class-variance-authority';
5
+ import { CalendarIcon } from '../icons/index.esm.js';
6
+ import { TimeDelta } from '../timeDelta/index.esm.js';
7
+ import { useTheme } from '../../contexts/ThemeContext.esm.js';
8
+
9
+ const wrapperStyles = cva('');
10
+ const infoContainer = cva('flex flex-wrap items-center whitespace-nowrap -mt-1 -mb-1');
11
+ const itemStyles = cva('mt-1 mb-1 mr-2 last:mr-0');
12
+ const dateTextStyles = cva('text-[0.813rem]', {
13
+ variants: {
14
+ theme: {
15
+ light: 'text-gray-900',
16
+ dark: 'text-gray-100'
17
+ }
18
+ },
19
+ defaultVariants: {
20
+ theme: 'light'
21
+ }
22
+ });
23
+ const deltaContainerStyles = cva('inline-block px-[10px] py-[3px] border rounded-[4px] text-[0.688rem]', {
24
+ variants: {
25
+ theme: {
26
+ light: 'border-[rgba(147,170,178,0.4)] text-[var(--chakra-colors-gray-250)]',
27
+ dark: 'border-gray-600 text-gray-400'
28
+ }
29
+ },
30
+ defaultVariants: {
31
+ theme: 'light'
32
+ }
33
+ });
34
+ /**
35
+ * DateBlock component displays a date, optional calendar icon,
36
+ * and relative time via TimeDelta. It can also show an optional
37
+ * tooltip with the relative time when hovered. Supports light/dark theme.
38
+ */
39
+ const DateBlock = ({
40
+ timestamp,
41
+ format = 'all',
42
+ showTime = false,
43
+ // showRelativeTooltip = false,
44
+ className = ''
45
+ }) => {
46
+ const {
47
+ theme
48
+ } = useTheme();
49
+ const date = new Date(timestamp);
50
+ if (isNaN(date.getTime())) return null;
51
+ const modes = {
52
+ all: {
53
+ calendarIcon: true,
54
+ date: true,
55
+ delta: true
56
+ },
57
+ deltaOnly: {
58
+ calendarIcon: false,
59
+ date: false,
60
+ delta: true
61
+ },
62
+ dateOnly: {
63
+ calendarIcon: false,
64
+ date: true,
65
+ delta: false
66
+ }
67
+ };
68
+ const options = Object.assign({
69
+ day: 'numeric',
70
+ month: 'short',
71
+ year: 'numeric'
72
+ }, showTime ? {
73
+ hour: '2-digit',
74
+ minute: '2-digit'
75
+ } : {});
76
+ const formattedDate = date.toLocaleDateString('en-GB', options);
77
+ // const tooltipContent = showRelativeTooltip
78
+ // ? <TimeDelta endDate={timestamp} showTimestampTooltip={false} />
79
+ // : null
80
+ const content = jsxs("div", {
81
+ className: infoContainer(),
82
+ children: [modes[format].calendarIcon && jsx(CalendarIcon, {
83
+ className: `${itemStyles()} w-[12px] h-[14px]`,
84
+ color: theme === 'dark' ? '#9CA3AF' : '#93AAB2'
85
+ }), modes[format].date && jsx("div", {
86
+ className: `${itemStyles()} ${dateTextStyles({
87
+ theme
88
+ })}`,
89
+ children: formattedDate
90
+ }), modes[format].delta && jsx("div", {
91
+ className: `${itemStyles()} ${deltaContainerStyles({
92
+ theme
93
+ })}`,
94
+ children: jsx(TimeDelta, {
95
+ endDate: date,
96
+ showTimestampTooltip: format !== 'all'
97
+ })
98
+ })]
99
+ });
100
+ const wrapperClass = `${wrapperStyles()} ${className !== '' ? ` ${className}` : ''}`;
101
+ return jsx("div", {
102
+ className: wrapperClass,
103
+ children: content
104
+ });
105
+ // return tooltipContent ? (
106
+ // <Tooltip placement="top" content={tooltipContent}>
107
+ // <div className={wrapperClass}>{content}</div>
108
+ // </Tooltip>
109
+ // ) : (
110
+ // <div className={wrapperClass}>{content}</div>
111
+ // )
112
+ };
113
+
114
+ export { DateBlock, DateBlock as default };
115
+ //# sourceMappingURL=index.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm.js","sources":["../../../../src/react/components/dateBlock/index.tsx"],"sourcesContent":["import React from 'react'\nimport { cva } from 'class-variance-authority'\nimport { CalendarIcon } from '../icons'\nimport { TimeDelta } from '../timeDelta'\nimport { useTheme } from '../../contexts/ThemeContext'\n\nconst wrapperStyles = cva('')\n\nconst infoContainer = cva(\n 'flex flex-wrap items-center whitespace-nowrap -mt-1 -mb-1'\n)\n\nconst itemStyles = cva(\n 'mt-1 mb-1 mr-2 last:mr-0'\n)\n\nconst dateTextStyles = cva(\n 'text-[0.813rem]',\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\nconst deltaContainerStyles = cva(\n 'inline-block px-[10px] py-[3px] border rounded-[4px] text-[0.688rem]',\n {\n variants: {\n theme: {\n light: 'border-[rgba(147,170,178,0.4)] text-[var(--chakra-colors-gray-250)]',\n dark: 'border-gray-600 text-gray-400'\n }\n },\n defaultVariants: {\n theme: 'light'\n }\n }\n)\n\nexport type DateBlockFormat = 'all' | 'deltaOnly' | 'dateOnly'\n\nexport interface DateBlockProps {\n /** Unix timestamp (ms), Date object, or parsable date string */\n timestamp: number | Date | string\n /** Display format: full date+delta, delta only, or date only */\n format?: DateBlockFormat\n /** Include hours and minutes in formatted date */\n showTime?: boolean\n /** Show a tooltip with relative time */\n showRelativeTooltip?: boolean\n /** Additional CSS classes for wrapper div */\n className?: string\n}\n\n/**\n * DateBlock component displays a date, optional calendar icon,\n * and relative time via TimeDelta. It can also show an optional\n * tooltip with the relative time when hovered. Supports light/dark theme.\n */\nexport const DateBlock: React.FC<DateBlockProps> = ({\n timestamp,\n format = 'all',\n showTime = false,\n // showRelativeTooltip = false,\n className = ''\n}) => {\n const { theme } = useTheme()\n const date = new Date(timestamp)\n if (isNaN(date.getTime())) return null\n\n const modes = {\n all: { calendarIcon: true, date: true, delta: true },\n deltaOnly: { calendarIcon: false, date: false, delta: true },\n dateOnly: { calendarIcon: false, date: true, delta: false }\n } as const\n\n const options: Intl.DateTimeFormatOptions = {\n day: 'numeric',\n month: 'short',\n year: 'numeric',\n ...(showTime ? { hour: '2-digit', minute: '2-digit' } : {})\n }\n\n const formattedDate = date.toLocaleDateString('en-GB', options)\n\n // const tooltipContent = showRelativeTooltip\n // ? <TimeDelta endDate={timestamp} showTimestampTooltip={false} />\n // : null\n\n const content = (\n <div className={infoContainer()}>\n {modes[format].calendarIcon && (\n <CalendarIcon\n className={`${itemStyles()} w-[12px] h-[14px]`}\n color={theme === 'dark' ? '#9CA3AF' : '#93AAB2'}\n />\n )}\n {modes[format].date && (\n <div className={`${itemStyles()} ${dateTextStyles({ theme })}`}>{formattedDate}</div>\n )}\n {modes[format].delta && (\n <div className={`${itemStyles()} ${deltaContainerStyles({ theme })}`}>\n <TimeDelta\n endDate={date}\n showTimestampTooltip={format !== 'all'}\n />\n </div>\n )}\n </div>\n )\n\n const wrapperClass = `${wrapperStyles()} ${className !== '' ? ` ${className}` : ''}`\n\n return <div className={wrapperClass}>{content}</div>\n\n // return tooltipContent ? (\n // <Tooltip placement=\"top\" content={tooltipContent}>\n // <div className={wrapperClass}>{content}</div>\n // </Tooltip>\n // ) : (\n // <div className={wrapperClass}>{content}</div>\n // )\n}\n\nexport default DateBlock "],"names":["wrapperStyles","cva","infoContainer","itemStyles","dateTextStyles","variants","theme","light","dark","defaultVariants","deltaContainerStyles","DateBlock","timestamp","format","showTime","className","useTheme","date","Date","isNaN","getTime","modes","all","calendarIcon","delta","deltaOnly","dateOnly","options","Object","assign","day","month","year","hour","minute","formattedDate","toLocaleDateString","content","_jsxs","children","_jsx","CalendarIcon","color","TimeDelta","endDate","showTimestampTooltip","wrapperClass"],"mappings":"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"}