dash-ui-kit 2.1.0-dev → 2.1.1
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/dist/react/components/copyButton/index.cjs.js +7 -7
- package/dist/react/components/copyButton/index.cjs.js.map +1 -1
- package/dist/react/components/copyButton/index.esm.js +6 -6
- package/dist/react/components/copyButton/index.esm.js.map +1 -1
- package/dist/react/components/index.cjs.js +47 -43
- package/dist/react/components/index.cjs.js.map +1 -1
- package/dist/react/components/index.d.ts +2 -0
- package/dist/react/components/index.esm.js +2 -0
- package/dist/react/components/index.esm.js.map +1 -1
- package/dist/react/components/popover/index.cjs.js +116 -0
- package/dist/react/components/popover/index.cjs.js.map +1 -0
- package/dist/react/components/popover/index.d.ts +23 -0
- package/dist/react/components/popover/index.esm.js +92 -0
- package/dist/react/components/popover/index.esm.js.map +1 -0
- package/dist/react/components/tooltip/index.cjs.js +98 -0
- package/dist/react/components/tooltip/index.cjs.js.map +1 -0
- package/dist/react/components/tooltip/index.d.ts +21 -0
- package/dist/react/components/tooltip/index.esm.js +74 -0
- package/dist/react/components/tooltip/index.esm.js.map +1 -0
- package/dist/react/index.cjs.js +47 -43
- package/dist/react/index.cjs.js.map +1 -1
- package/dist/react/index.d.ts +2 -0
- package/dist/react/index.esm.js +2 -0
- package/dist/react/index.esm.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +2 -1
|
@@ -8,7 +8,7 @@ var tslib = require('tslib');
|
|
|
8
8
|
var jsxRuntime = require('react/jsx-runtime');
|
|
9
9
|
var React = require('react');
|
|
10
10
|
var classVarianceAuthority = require('class-variance-authority');
|
|
11
|
-
var
|
|
11
|
+
var PopoverPrimitive = require('@radix-ui/react-popover');
|
|
12
12
|
var index = require('../icons/index.cjs.js');
|
|
13
13
|
var ThemeContext = require('../../contexts/ThemeContext.cjs.js');
|
|
14
14
|
var copyToClipboard = require('../../utils/copyToClipboard.cjs.js');
|
|
@@ -30,7 +30,7 @@ function _interopNamespaceDefault(e) {
|
|
|
30
30
|
return Object.freeze(n);
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
var
|
|
33
|
+
var PopoverPrimitive__namespace = /*#__PURE__*/_interopNamespaceDefault(PopoverPrimitive);
|
|
34
34
|
|
|
35
35
|
const copyBtn = classVarianceAuthority.cva('p-0 flex-shrink-0 h-[max-content] min-w-0 bg-transparent transition-colors', {
|
|
36
36
|
variants: {
|
|
@@ -61,9 +61,9 @@ const CopyButton = _a => {
|
|
|
61
61
|
setOpen(true);
|
|
62
62
|
setTimeout(() => setOpen(false), 1000);
|
|
63
63
|
};
|
|
64
|
-
return jsxRuntime.jsxs(
|
|
64
|
+
return jsxRuntime.jsxs(PopoverPrimitive__namespace.Root, {
|
|
65
65
|
open: open,
|
|
66
|
-
children: [jsxRuntime.jsx(
|
|
66
|
+
children: [jsxRuntime.jsx(PopoverPrimitive__namespace.Trigger, {
|
|
67
67
|
asChild: true,
|
|
68
68
|
children: jsxRuntime.jsx("button", Object.assign({
|
|
69
69
|
type: 'button',
|
|
@@ -77,12 +77,12 @@ const CopyButton = _a => {
|
|
|
77
77
|
color: theme === 'light' ? '#000000' : '#ffffff'
|
|
78
78
|
})
|
|
79
79
|
}))
|
|
80
|
-
}), jsxRuntime.jsx(
|
|
81
|
-
children: jsxRuntime.jsxs(
|
|
80
|
+
}), jsxRuntime.jsx(PopoverPrimitive__namespace.Portal, {
|
|
81
|
+
children: jsxRuntime.jsxs(PopoverPrimitive__namespace.Content, {
|
|
82
82
|
className: 'bg-white text-gray-900 text-sm px-2 py-1 rounded shadow-lg',
|
|
83
83
|
side: 'top',
|
|
84
84
|
sideOffset: 5,
|
|
85
|
-
children: ["Copied", jsxRuntime.jsx(
|
|
85
|
+
children: ["Copied", jsxRuntime.jsx(PopoverPrimitive__namespace.Arrow, {
|
|
86
86
|
className: 'fill-white'
|
|
87
87
|
})]
|
|
88
88
|
})
|
|
@@ -1 +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,
|
|
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,2BAAO,CAACC,IAAI,EAAC;AAAAX,IAAAA,IAAI,EAAEA,IAAI;AACtBY,IAAAA,QAAA,EAAA,CAAAC,cAAA,CAACH,2BAAO,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,2BAAO,CAACY,MAAM,EAAA;AAAAV,MAAAA,QAAA,EACbH,eAAC,CAAAC,2BAAO,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,2BAAO,CAACgB,KAAK,EAAC;AAAA/B,UAAAA,SAAS,EAAC;UAAe;OACxB;AAAA,KAAA,CACH;AACJ,GAAA,CAAA;AAEnB;;;;;"}
|
|
@@ -4,7 +4,7 @@ import { __rest } from 'tslib';
|
|
|
4
4
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
5
5
|
import { useState } from 'react';
|
|
6
6
|
import { cva } from 'class-variance-authority';
|
|
7
|
-
import * as
|
|
7
|
+
import * as PopoverPrimitive from '@radix-ui/react-popover';
|
|
8
8
|
import { CopyIcon } from '../icons/index.esm.js';
|
|
9
9
|
import { useTheme } from '../../contexts/ThemeContext.esm.js';
|
|
10
10
|
import { copyToClipboard } from '../../utils/copyToClipboard.esm.js';
|
|
@@ -38,9 +38,9 @@ const CopyButton = _a => {
|
|
|
38
38
|
setOpen(true);
|
|
39
39
|
setTimeout(() => setOpen(false), 1000);
|
|
40
40
|
};
|
|
41
|
-
return jsxs(
|
|
41
|
+
return jsxs(PopoverPrimitive.Root, {
|
|
42
42
|
open: open,
|
|
43
|
-
children: [jsx(
|
|
43
|
+
children: [jsx(PopoverPrimitive.Trigger, {
|
|
44
44
|
asChild: true,
|
|
45
45
|
children: jsx("button", Object.assign({
|
|
46
46
|
type: 'button',
|
|
@@ -54,12 +54,12 @@ const CopyButton = _a => {
|
|
|
54
54
|
color: theme === 'light' ? '#000000' : '#ffffff'
|
|
55
55
|
})
|
|
56
56
|
}))
|
|
57
|
-
}), jsx(
|
|
58
|
-
children: jsxs(
|
|
57
|
+
}), jsx(PopoverPrimitive.Portal, {
|
|
58
|
+
children: jsxs(PopoverPrimitive.Content, {
|
|
59
59
|
className: 'bg-white text-gray-900 text-sm px-2 py-1 rounded shadow-lg',
|
|
60
60
|
side: 'top',
|
|
61
61
|
sideOffset: 5,
|
|
62
|
-
children: ["Copied", jsx(
|
|
62
|
+
children: ["Copied", jsx(PopoverPrimitive.Arrow, {
|
|
63
63
|
className: 'fill-white'
|
|
64
64
|
})]
|
|
65
65
|
})
|
|
@@ -1 +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,
|
|
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,gBAAO,CAACC,IAAI,EAAC;AAAAX,IAAAA,IAAI,EAAEA,IAAI;AACtBY,IAAAA,QAAA,EAAA,CAAAC,GAAA,CAACH,gBAAO,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,gBAAO,CAACY,MAAM,EAAA;AAAAV,MAAAA,QAAA,EACbH,IAAC,CAAAC,gBAAO,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,gBAAO,CAACgB,KAAK,EAAC;AAAA/B,UAAAA,SAAS,EAAC;UAAe;OACxB;AAAA,KAAA,CACH;AACJ,GAAA,CAAA;AAEnB;;;;"}
|
|
@@ -27,7 +27,9 @@ var index$l = require('./progressStepBar/index.cjs.js');
|
|
|
27
27
|
var index$m = require('./dashLogo/index.cjs.js');
|
|
28
28
|
var index$n = require('./dialog/index.cjs.js');
|
|
29
29
|
var index$o = require('./tabs/index.cjs.js');
|
|
30
|
-
var index$p = require('./
|
|
30
|
+
var index$p = require('./tooltip/index.cjs.js');
|
|
31
|
+
var index$q = require('./popover/index.cjs.js');
|
|
32
|
+
var index$r = require('./icons/index.cjs.js');
|
|
31
33
|
|
|
32
34
|
|
|
33
35
|
|
|
@@ -56,46 +58,48 @@ exports.ProgressStepBar = index$l.ProgressStepBar;
|
|
|
56
58
|
exports.DashLogo = index$m.DashLogo;
|
|
57
59
|
exports.Dialog = index$n.DashDialog;
|
|
58
60
|
exports.Tabs = index$o.Tabs;
|
|
59
|
-
exports.
|
|
60
|
-
exports.
|
|
61
|
-
exports.
|
|
62
|
-
exports.
|
|
63
|
-
exports.
|
|
64
|
-
exports.
|
|
65
|
-
exports.
|
|
66
|
-
exports.
|
|
67
|
-
exports.
|
|
68
|
-
exports.
|
|
69
|
-
exports.
|
|
70
|
-
exports.
|
|
71
|
-
exports.
|
|
72
|
-
exports.
|
|
73
|
-
exports.
|
|
74
|
-
exports.
|
|
75
|
-
exports.
|
|
76
|
-
exports.
|
|
77
|
-
exports.
|
|
78
|
-
exports.
|
|
79
|
-
exports.
|
|
80
|
-
exports.
|
|
81
|
-
exports.
|
|
82
|
-
exports.
|
|
83
|
-
exports.
|
|
84
|
-
exports.
|
|
85
|
-
exports.
|
|
86
|
-
exports.
|
|
87
|
-
exports.
|
|
88
|
-
exports.
|
|
89
|
-
exports.
|
|
90
|
-
exports.
|
|
91
|
-
exports.
|
|
92
|
-
exports.
|
|
93
|
-
exports.
|
|
94
|
-
exports.
|
|
95
|
-
exports.
|
|
96
|
-
exports.
|
|
97
|
-
exports.
|
|
98
|
-
exports.
|
|
99
|
-
exports.
|
|
100
|
-
exports.
|
|
61
|
+
exports.Tooltip = index$p.Tooltip;
|
|
62
|
+
exports.Popover = index$q.Popover;
|
|
63
|
+
exports.AirplaneIcon = index$r.AirplaneIcon;
|
|
64
|
+
exports.ArrowIcon = index$r.ArrowIcon;
|
|
65
|
+
exports.BroadcastedIcon = index$r.BroadcastedIcon;
|
|
66
|
+
exports.BurgerMenuIcon = index$r.BurgerMenuIcon;
|
|
67
|
+
exports.CalendarIcon = index$r.CalendarIcon;
|
|
68
|
+
exports.ChainSmallIcon = index$r.ChainSmallIcon;
|
|
69
|
+
exports.CheckIcon = index$r.CheckIcon;
|
|
70
|
+
exports.CheckmarkIcon = index$r.CheckmarkIcon;
|
|
71
|
+
exports.ChevronIcon = index$r.ChevronIcon;
|
|
72
|
+
exports.CircleProcessIcon = index$r.CircleProcessIcon;
|
|
73
|
+
exports.CopyIcon = index$r.CopyIcon;
|
|
74
|
+
exports.CreditsIcon = index$r.CreditsIcon;
|
|
75
|
+
exports.CrossIcon = index$r.CrossIcon;
|
|
76
|
+
exports.DeleteIcon = index$r.DeleteIcon;
|
|
77
|
+
exports.DocumentIcon = index$r.DocumentIcon;
|
|
78
|
+
exports.EditIcon = index$r.EditIcon;
|
|
79
|
+
exports.ErrorIcon = index$r.ErrorIcon;
|
|
80
|
+
exports.ExternalLinkIcon = index$r.ExternalLinkIcon;
|
|
81
|
+
exports.EyeClosedIcon = index$r.EyeClosedIcon;
|
|
82
|
+
exports.EyeOpenIcon = index$r.EyeOpenIcon;
|
|
83
|
+
exports.FaceIcon = index$r.FaceIcon;
|
|
84
|
+
exports.FilterIcon = index$r.FilterIcon;
|
|
85
|
+
exports.FingerprintIcon = index$r.FingerprintIcon;
|
|
86
|
+
exports.InfoCircleIcon = index$r.InfoCircleIcon;
|
|
87
|
+
exports.KebabMenuIcon = index$r.KebabMenuIcon;
|
|
88
|
+
exports.KeyIcon = index$r.KeyIcon;
|
|
89
|
+
exports.LockIcon = index$r.LockIcon;
|
|
90
|
+
exports.PendingIcon = index$r.PendingIcon;
|
|
91
|
+
exports.PlusIcon = index$r.PlusIcon;
|
|
92
|
+
exports.PooledIcon = index$r.PooledIcon;
|
|
93
|
+
exports.ProtectedMessageIcon = index$r.ProtectedMessageIcon;
|
|
94
|
+
exports.QuestionMessageIcon = index$r.QuestionMessageIcon;
|
|
95
|
+
exports.QueuedIcon = index$r.QueuedIcon;
|
|
96
|
+
exports.SearchIcon = index$r.SearchIcon;
|
|
97
|
+
exports.SettingsIcon = index$r.SettingsIcon;
|
|
98
|
+
exports.ShieldSmallIcon = index$r.ShieldSmallIcon;
|
|
99
|
+
exports.SignIcon = index$r.SignIcon;
|
|
100
|
+
exports.SignLockIcon = index$r.SignLockIcon;
|
|
101
|
+
exports.SmartphoneIcon = index$r.SmartphoneIcon;
|
|
102
|
+
exports.SuccessIcon = index$r.SuccessIcon;
|
|
103
|
+
exports.WalletIcon = index$r.WalletIcon;
|
|
104
|
+
exports.WebIcon = index$r.WebIcon;
|
|
101
105
|
//# sourceMappingURL=index.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -23,5 +23,7 @@ export { ProgressStepBar, type ProgressStepBarProps } from './progressStepBar';
|
|
|
23
23
|
export { DashLogo, type DashLogoProps } from './dashLogo';
|
|
24
24
|
export { Dialog, type DialogProps } from './dialog';
|
|
25
25
|
export { Tabs, type TabsProps, type TabItem } from './tabs';
|
|
26
|
+
export { Tooltip, type TooltipProps } from './tooltip';
|
|
27
|
+
export { Popover, type PopoverProps } from './popover';
|
|
26
28
|
export type { TimeDeltaFormat } from '../../shared/utils/datetime';
|
|
27
29
|
export { ArrowIcon, CopyIcon, SuccessIcon, ErrorIcon, QueuedIcon, PooledIcon, BroadcastedIcon, CalendarIcon, EyeOpenIcon, EyeClosedIcon, CheckIcon, KeyIcon, ProtectedMessageIcon, SmartphoneIcon, CrossIcon, WalletIcon, PlusIcon, FilterIcon, EditIcon, DeleteIcon, DocumentIcon, ChevronIcon, BurgerMenuIcon, KebabMenuIcon, CircleProcessIcon, CreditsIcon, WebIcon, ChainSmallIcon, SettingsIcon, ShieldSmallIcon, QuestionMessageIcon, CheckmarkIcon, FingerprintIcon, FaceIcon, SignIcon, SignLockIcon, LockIcon, PendingIcon, SearchIcon, AirplaneIcon, ExternalLinkIcon, InfoCircleIcon } from './icons';
|
|
@@ -25,5 +25,7 @@ export { ProgressStepBar } from './progressStepBar/index.esm.js';
|
|
|
25
25
|
export { DashLogo } from './dashLogo/index.esm.js';
|
|
26
26
|
export { DashDialog as Dialog } from './dialog/index.esm.js';
|
|
27
27
|
export { Tabs } from './tabs/index.esm.js';
|
|
28
|
+
export { Tooltip } from './tooltip/index.esm.js';
|
|
29
|
+
export { Popover } from './popover/index.esm.js';
|
|
28
30
|
export { AirplaneIcon, ArrowIcon, BroadcastedIcon, BurgerMenuIcon, CalendarIcon, ChainSmallIcon, CheckIcon, CheckmarkIcon, ChevronIcon, CircleProcessIcon, CopyIcon, CreditsIcon, CrossIcon, DeleteIcon, DocumentIcon, EditIcon, ErrorIcon, ExternalLinkIcon, EyeClosedIcon, EyeOpenIcon, FaceIcon, FilterIcon, FingerprintIcon, InfoCircleIcon, KebabMenuIcon, KeyIcon, LockIcon, PendingIcon, PlusIcon, PooledIcon, ProtectedMessageIcon, QuestionMessageIcon, QueuedIcon, SearchIcon, SettingsIcon, ShieldSmallIcon, SignIcon, SignLockIcon, SmartphoneIcon, SuccessIcon, WalletIcon, WebIcon } from './icons/index.esm.js';
|
|
29
31
|
//# sourceMappingURL=index.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,116 @@
|
|
|
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 React = require('react');
|
|
9
|
+
var PopoverPrimitive = require('@radix-ui/react-popover');
|
|
10
|
+
var classVarianceAuthority = require('class-variance-authority');
|
|
11
|
+
var ThemeContext = require('../../contexts/ThemeContext.cjs.js');
|
|
12
|
+
var index = require('../icons/index.cjs.js');
|
|
13
|
+
|
|
14
|
+
function _interopNamespaceDefault(e) {
|
|
15
|
+
var n = Object.create(null);
|
|
16
|
+
if (e) {
|
|
17
|
+
Object.keys(e).forEach(function (k) {
|
|
18
|
+
if (k !== 'default') {
|
|
19
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
20
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
21
|
+
enumerable: true,
|
|
22
|
+
get: function () { return e[k]; }
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
n.default = e;
|
|
28
|
+
return Object.freeze(n);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
var PopoverPrimitive__namespace = /*#__PURE__*/_interopNamespaceDefault(PopoverPrimitive);
|
|
32
|
+
|
|
33
|
+
const popoverContent = classVarianceAuthority.cva(['z-50 rounded-md p-4 shadow-lg outline-none', 'w-64', 'animate-in fade-in-0 zoom-in-95', 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95', 'data-[side=bottom]:slide-in-from-top-2', 'data-[side=left]:slide-in-from-right-2', 'data-[side=right]:slide-in-from-left-2', 'data-[side=top]:slide-in-from-bottom-2'].join(' '), {
|
|
34
|
+
variants: {
|
|
35
|
+
theme: {
|
|
36
|
+
light: 'bg-white border border-gray-200 text-gray-900',
|
|
37
|
+
dark: 'bg-gray-950 border border-gray-800 text-gray-50'
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
defaultVariants: {
|
|
41
|
+
theme: 'light'
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
const popoverArrow = classVarianceAuthority.cva('', {
|
|
45
|
+
variants: {
|
|
46
|
+
theme: {
|
|
47
|
+
light: 'fill-white stroke-gray-200',
|
|
48
|
+
dark: 'fill-gray-950 stroke-gray-800'
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
defaultVariants: {
|
|
52
|
+
theme: 'light'
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
const closeButton = classVarianceAuthority.cva(['absolute top-2 right-2 rounded-sm opacity-70 transition-opacity', 'hover:opacity-100 focus:outline-none disabled:pointer-events-none cursor-pointer'].join(' '), {
|
|
56
|
+
variants: {
|
|
57
|
+
theme: {
|
|
58
|
+
light: 'text-gray-600 hover:text-gray-900',
|
|
59
|
+
dark: 'text-gray-400 hover:text-gray-100'
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
defaultVariants: {
|
|
63
|
+
theme: 'light'
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
const Popover = ({
|
|
67
|
+
content,
|
|
68
|
+
children,
|
|
69
|
+
side = 'bottom',
|
|
70
|
+
sideOffset = 8,
|
|
71
|
+
showCloseButton = false,
|
|
72
|
+
open,
|
|
73
|
+
onOpenChange,
|
|
74
|
+
defaultOpen,
|
|
75
|
+
className
|
|
76
|
+
}) => {
|
|
77
|
+
const {
|
|
78
|
+
theme
|
|
79
|
+
} = ThemeContext.useTheme();
|
|
80
|
+
return jsxRuntime.jsxs(PopoverPrimitive__namespace.Root, {
|
|
81
|
+
open: open,
|
|
82
|
+
defaultOpen: defaultOpen,
|
|
83
|
+
onOpenChange: onOpenChange,
|
|
84
|
+
children: [jsxRuntime.jsx(PopoverPrimitive__namespace.Trigger, {
|
|
85
|
+
asChild: true,
|
|
86
|
+
children: /*#__PURE__*/React.isValidElement(children) ? children : jsxRuntime.jsx("span", {
|
|
87
|
+
children: children
|
|
88
|
+
})
|
|
89
|
+
}), jsxRuntime.jsx(PopoverPrimitive__namespace.Portal, {
|
|
90
|
+
children: jsxRuntime.jsxs(PopoverPrimitive__namespace.Content, {
|
|
91
|
+
side: side,
|
|
92
|
+
sideOffset: sideOffset,
|
|
93
|
+
className: `${popoverContent({
|
|
94
|
+
theme
|
|
95
|
+
})} ${className !== null && className !== void 0 ? className : ''}`,
|
|
96
|
+
children: [showCloseButton && jsxRuntime.jsx(PopoverPrimitive__namespace.Close, {
|
|
97
|
+
className: closeButton({
|
|
98
|
+
theme
|
|
99
|
+
}),
|
|
100
|
+
"aria-label": 'Close',
|
|
101
|
+
children: jsxRuntime.jsx(index.CrossIcon, {
|
|
102
|
+
size: 14
|
|
103
|
+
})
|
|
104
|
+
}), content, jsxRuntime.jsx(PopoverPrimitive__namespace.Arrow, {
|
|
105
|
+
className: popoverArrow({
|
|
106
|
+
theme
|
|
107
|
+
})
|
|
108
|
+
})]
|
|
109
|
+
})
|
|
110
|
+
})]
|
|
111
|
+
});
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
exports.Popover = Popover;
|
|
115
|
+
exports.default = Popover;
|
|
116
|
+
//# sourceMappingURL=index.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../../../../src/react/components/popover/index.tsx"],"sourcesContent":["import React from 'react'\nimport * as PopoverPrimitive from '@radix-ui/react-popover'\nimport { cva } from 'class-variance-authority'\nimport { useTheme } from '../../contexts/ThemeContext'\nimport { CrossIcon } from '../icons'\n\nconst popoverContent = cva(\n [\n 'z-50 rounded-md p-4 shadow-lg outline-none',\n 'w-64',\n 'animate-in fade-in-0 zoom-in-95',\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95',\n 'data-[side=bottom]:slide-in-from-top-2',\n 'data-[side=left]:slide-in-from-right-2',\n 'data-[side=right]:slide-in-from-left-2',\n 'data-[side=top]:slide-in-from-bottom-2',\n ].join(' '),\n {\n variants: {\n theme: {\n light: 'bg-white border border-gray-200 text-gray-900',\n dark: 'bg-gray-950 border border-gray-800 text-gray-50',\n },\n },\n defaultVariants: {\n theme: 'light',\n },\n }\n)\n\nconst popoverArrow = cva('', {\n variants: {\n theme: {\n light: 'fill-white stroke-gray-200',\n dark: 'fill-gray-950 stroke-gray-800',\n },\n },\n defaultVariants: {\n theme: 'light',\n },\n})\n\nconst closeButton = cva(\n [\n 'absolute top-2 right-2 rounded-sm opacity-70 transition-opacity',\n 'hover:opacity-100 focus:outline-none disabled:pointer-events-none cursor-pointer',\n ].join(' '),\n {\n variants: {\n theme: {\n light: 'text-gray-600 hover:text-gray-900',\n dark: 'text-gray-400 hover:text-gray-100',\n },\n },\n defaultVariants: {\n theme: 'light',\n },\n }\n)\n\nexport interface PopoverProps {\n /** Popover body content */\n content: React.ReactNode\n /** Element that triggers the popover on click */\n children: React.ReactNode\n /** Which side the popover appears on */\n side?: 'top' | 'bottom' | 'left' | 'right'\n /** Offset from the trigger in pixels */\n sideOffset?: number\n /** Whether to show a close button inside the popover */\n showCloseButton?: boolean\n /** Controlled open state */\n open?: boolean\n /** Called when open state changes */\n onOpenChange?: (open: boolean) => void\n /** Default open (uncontrolled) */\n defaultOpen?: boolean\n /** Additional className for the content container */\n className?: string\n}\n\nexport const Popover: React.FC<PopoverProps> = ({\n content,\n children,\n side = 'bottom',\n sideOffset = 8,\n showCloseButton = false,\n open,\n onOpenChange,\n defaultOpen,\n className,\n}) => {\n const { theme } = useTheme()\n\n return (\n <PopoverPrimitive.Root\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n >\n <PopoverPrimitive.Trigger asChild>\n {React.isValidElement(children) ? children : <span>{children}</span>}\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n side={side}\n sideOffset={sideOffset}\n className={`${popoverContent({ theme })} ${className ?? ''}`}\n >\n {showCloseButton && (\n <PopoverPrimitive.Close className={closeButton({ theme })} aria-label='Close'>\n <CrossIcon size={14} />\n </PopoverPrimitive.Close>\n )}\n {content}\n <PopoverPrimitive.Arrow className={popoverArrow({ theme })} />\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n )\n}\n\nexport default Popover\n"],"names":["popoverContent","cva","join","variants","theme","light","dark","defaultVariants","popoverArrow","closeButton","Popover","content","children","side","sideOffset","showCloseButton","open","onOpenChange","defaultOpen","className","useTheme","_jsxs","PopoverPrimitive","Root","_jsx","Trigger","asChild","React","isValidElement","Portal","Content","Close","CrossIcon","size","Arrow"],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface PopoverProps {
|
|
3
|
+
/** Popover body content */
|
|
4
|
+
content: React.ReactNode;
|
|
5
|
+
/** Element that triggers the popover on click */
|
|
6
|
+
children: React.ReactNode;
|
|
7
|
+
/** Which side the popover appears on */
|
|
8
|
+
side?: 'top' | 'bottom' | 'left' | 'right';
|
|
9
|
+
/** Offset from the trigger in pixels */
|
|
10
|
+
sideOffset?: number;
|
|
11
|
+
/** Whether to show a close button inside the popover */
|
|
12
|
+
showCloseButton?: boolean;
|
|
13
|
+
/** Controlled open state */
|
|
14
|
+
open?: boolean;
|
|
15
|
+
/** Called when open state changes */
|
|
16
|
+
onOpenChange?: (open: boolean) => void;
|
|
17
|
+
/** Default open (uncontrolled) */
|
|
18
|
+
defaultOpen?: boolean;
|
|
19
|
+
/** Additional className for the content container */
|
|
20
|
+
className?: string;
|
|
21
|
+
}
|
|
22
|
+
export declare const Popover: React.FC<PopoverProps>;
|
|
23
|
+
export default Popover;
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
4
|
+
import React from 'react';
|
|
5
|
+
import * as PopoverPrimitive from '@radix-ui/react-popover';
|
|
6
|
+
import { cva } from 'class-variance-authority';
|
|
7
|
+
import { useTheme } from '../../contexts/ThemeContext.esm.js';
|
|
8
|
+
import { CrossIcon } from '../icons/index.esm.js';
|
|
9
|
+
|
|
10
|
+
const popoverContent = cva(['z-50 rounded-md p-4 shadow-lg outline-none', 'w-64', 'animate-in fade-in-0 zoom-in-95', 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95', 'data-[side=bottom]:slide-in-from-top-2', 'data-[side=left]:slide-in-from-right-2', 'data-[side=right]:slide-in-from-left-2', 'data-[side=top]:slide-in-from-bottom-2'].join(' '), {
|
|
11
|
+
variants: {
|
|
12
|
+
theme: {
|
|
13
|
+
light: 'bg-white border border-gray-200 text-gray-900',
|
|
14
|
+
dark: 'bg-gray-950 border border-gray-800 text-gray-50'
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
defaultVariants: {
|
|
18
|
+
theme: 'light'
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
const popoverArrow = cva('', {
|
|
22
|
+
variants: {
|
|
23
|
+
theme: {
|
|
24
|
+
light: 'fill-white stroke-gray-200',
|
|
25
|
+
dark: 'fill-gray-950 stroke-gray-800'
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
defaultVariants: {
|
|
29
|
+
theme: 'light'
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
const closeButton = cva(['absolute top-2 right-2 rounded-sm opacity-70 transition-opacity', 'hover:opacity-100 focus:outline-none disabled:pointer-events-none cursor-pointer'].join(' '), {
|
|
33
|
+
variants: {
|
|
34
|
+
theme: {
|
|
35
|
+
light: 'text-gray-600 hover:text-gray-900',
|
|
36
|
+
dark: 'text-gray-400 hover:text-gray-100'
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
defaultVariants: {
|
|
40
|
+
theme: 'light'
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
const Popover = ({
|
|
44
|
+
content,
|
|
45
|
+
children,
|
|
46
|
+
side = 'bottom',
|
|
47
|
+
sideOffset = 8,
|
|
48
|
+
showCloseButton = false,
|
|
49
|
+
open,
|
|
50
|
+
onOpenChange,
|
|
51
|
+
defaultOpen,
|
|
52
|
+
className
|
|
53
|
+
}) => {
|
|
54
|
+
const {
|
|
55
|
+
theme
|
|
56
|
+
} = useTheme();
|
|
57
|
+
return jsxs(PopoverPrimitive.Root, {
|
|
58
|
+
open: open,
|
|
59
|
+
defaultOpen: defaultOpen,
|
|
60
|
+
onOpenChange: onOpenChange,
|
|
61
|
+
children: [jsx(PopoverPrimitive.Trigger, {
|
|
62
|
+
asChild: true,
|
|
63
|
+
children: /*#__PURE__*/React.isValidElement(children) ? children : jsx("span", {
|
|
64
|
+
children: children
|
|
65
|
+
})
|
|
66
|
+
}), jsx(PopoverPrimitive.Portal, {
|
|
67
|
+
children: jsxs(PopoverPrimitive.Content, {
|
|
68
|
+
side: side,
|
|
69
|
+
sideOffset: sideOffset,
|
|
70
|
+
className: `${popoverContent({
|
|
71
|
+
theme
|
|
72
|
+
})} ${className !== null && className !== void 0 ? className : ''}`,
|
|
73
|
+
children: [showCloseButton && jsx(PopoverPrimitive.Close, {
|
|
74
|
+
className: closeButton({
|
|
75
|
+
theme
|
|
76
|
+
}),
|
|
77
|
+
"aria-label": 'Close',
|
|
78
|
+
children: jsx(CrossIcon, {
|
|
79
|
+
size: 14
|
|
80
|
+
})
|
|
81
|
+
}), content, jsx(PopoverPrimitive.Arrow, {
|
|
82
|
+
className: popoverArrow({
|
|
83
|
+
theme
|
|
84
|
+
})
|
|
85
|
+
})]
|
|
86
|
+
})
|
|
87
|
+
})]
|
|
88
|
+
});
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
export { Popover, Popover as default };
|
|
92
|
+
//# sourceMappingURL=index.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../../../../src/react/components/popover/index.tsx"],"sourcesContent":["import React from 'react'\nimport * as PopoverPrimitive from '@radix-ui/react-popover'\nimport { cva } from 'class-variance-authority'\nimport { useTheme } from '../../contexts/ThemeContext'\nimport { CrossIcon } from '../icons'\n\nconst popoverContent = cva(\n [\n 'z-50 rounded-md p-4 shadow-lg outline-none',\n 'w-64',\n 'animate-in fade-in-0 zoom-in-95',\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95',\n 'data-[side=bottom]:slide-in-from-top-2',\n 'data-[side=left]:slide-in-from-right-2',\n 'data-[side=right]:slide-in-from-left-2',\n 'data-[side=top]:slide-in-from-bottom-2',\n ].join(' '),\n {\n variants: {\n theme: {\n light: 'bg-white border border-gray-200 text-gray-900',\n dark: 'bg-gray-950 border border-gray-800 text-gray-50',\n },\n },\n defaultVariants: {\n theme: 'light',\n },\n }\n)\n\nconst popoverArrow = cva('', {\n variants: {\n theme: {\n light: 'fill-white stroke-gray-200',\n dark: 'fill-gray-950 stroke-gray-800',\n },\n },\n defaultVariants: {\n theme: 'light',\n },\n})\n\nconst closeButton = cva(\n [\n 'absolute top-2 right-2 rounded-sm opacity-70 transition-opacity',\n 'hover:opacity-100 focus:outline-none disabled:pointer-events-none cursor-pointer',\n ].join(' '),\n {\n variants: {\n theme: {\n light: 'text-gray-600 hover:text-gray-900',\n dark: 'text-gray-400 hover:text-gray-100',\n },\n },\n defaultVariants: {\n theme: 'light',\n },\n }\n)\n\nexport interface PopoverProps {\n /** Popover body content */\n content: React.ReactNode\n /** Element that triggers the popover on click */\n children: React.ReactNode\n /** Which side the popover appears on */\n side?: 'top' | 'bottom' | 'left' | 'right'\n /** Offset from the trigger in pixels */\n sideOffset?: number\n /** Whether to show a close button inside the popover */\n showCloseButton?: boolean\n /** Controlled open state */\n open?: boolean\n /** Called when open state changes */\n onOpenChange?: (open: boolean) => void\n /** Default open (uncontrolled) */\n defaultOpen?: boolean\n /** Additional className for the content container */\n className?: string\n}\n\nexport const Popover: React.FC<PopoverProps> = ({\n content,\n children,\n side = 'bottom',\n sideOffset = 8,\n showCloseButton = false,\n open,\n onOpenChange,\n defaultOpen,\n className,\n}) => {\n const { theme } = useTheme()\n\n return (\n <PopoverPrimitive.Root\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n >\n <PopoverPrimitive.Trigger asChild>\n {React.isValidElement(children) ? children : <span>{children}</span>}\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n side={side}\n sideOffset={sideOffset}\n className={`${popoverContent({ theme })} ${className ?? ''}`}\n >\n {showCloseButton && (\n <PopoverPrimitive.Close className={closeButton({ theme })} aria-label='Close'>\n <CrossIcon size={14} />\n </PopoverPrimitive.Close>\n )}\n {content}\n <PopoverPrimitive.Arrow className={popoverArrow({ theme })} />\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n )\n}\n\nexport default Popover\n"],"names":["popoverContent","cva","join","variants","theme","light","dark","defaultVariants","popoverArrow","closeButton","Popover","content","children","side","sideOffset","showCloseButton","open","onOpenChange","defaultOpen","className","useTheme","_jsxs","PopoverPrimitive","Root","_jsx","Trigger","asChild","React","isValidElement","Portal","Content","Close","CrossIcon","size","Arrow"],"mappings":"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"}
|
|
@@ -0,0 +1,98 @@
|
|
|
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 React = require('react');
|
|
9
|
+
var TooltipPrimitive = require('@radix-ui/react-tooltip');
|
|
10
|
+
var classVarianceAuthority = require('class-variance-authority');
|
|
11
|
+
var ThemeContext = require('../../contexts/ThemeContext.cjs.js');
|
|
12
|
+
|
|
13
|
+
function _interopNamespaceDefault(e) {
|
|
14
|
+
var n = Object.create(null);
|
|
15
|
+
if (e) {
|
|
16
|
+
Object.keys(e).forEach(function (k) {
|
|
17
|
+
if (k !== 'default') {
|
|
18
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
19
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
20
|
+
enumerable: true,
|
|
21
|
+
get: function () { return e[k]; }
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
n.default = e;
|
|
27
|
+
return Object.freeze(n);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
var TooltipPrimitive__namespace = /*#__PURE__*/_interopNamespaceDefault(TooltipPrimitive);
|
|
31
|
+
|
|
32
|
+
const tooltipContent = classVarianceAuthority.cva(['z-50 rounded px-2 py-1 text-sm leading-none', 'select-none', 'animate-in fade-in-0 zoom-in-95', 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95', 'data-[side=bottom]:slide-in-from-top-2', 'data-[side=left]:slide-in-from-right-2', 'data-[side=right]:slide-in-from-left-2', 'data-[side=top]:slide-in-from-bottom-2'].join(' '), {
|
|
33
|
+
variants: {
|
|
34
|
+
theme: {
|
|
35
|
+
light: 'bg-white text-gray-900 shadow-lg',
|
|
36
|
+
dark: 'bg-gray-950 text-gray-50 shadow-lg'
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
defaultVariants: {
|
|
40
|
+
theme: 'light'
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
const tooltipArrow = classVarianceAuthority.cva('', {
|
|
44
|
+
variants: {
|
|
45
|
+
theme: {
|
|
46
|
+
light: 'fill-white',
|
|
47
|
+
dark: 'fill-gray-950'
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
defaultVariants: {
|
|
51
|
+
theme: 'light'
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
const Tooltip = ({
|
|
55
|
+
content,
|
|
56
|
+
children,
|
|
57
|
+
side = 'top',
|
|
58
|
+
sideOffset = 6,
|
|
59
|
+
delayDuration = 300,
|
|
60
|
+
open,
|
|
61
|
+
onOpenChange,
|
|
62
|
+
defaultOpen
|
|
63
|
+
}) => {
|
|
64
|
+
const {
|
|
65
|
+
theme
|
|
66
|
+
} = ThemeContext.useTheme();
|
|
67
|
+
return jsxRuntime.jsx(TooltipPrimitive__namespace.Provider, {
|
|
68
|
+
delayDuration: delayDuration,
|
|
69
|
+
children: jsxRuntime.jsxs(TooltipPrimitive__namespace.Root, {
|
|
70
|
+
open: open,
|
|
71
|
+
defaultOpen: defaultOpen,
|
|
72
|
+
onOpenChange: onOpenChange,
|
|
73
|
+
children: [jsxRuntime.jsx(TooltipPrimitive__namespace.Trigger, {
|
|
74
|
+
asChild: true,
|
|
75
|
+
children: /*#__PURE__*/React.isValidElement(children) ? children : jsxRuntime.jsx("span", {
|
|
76
|
+
children: children
|
|
77
|
+
})
|
|
78
|
+
}), jsxRuntime.jsx(TooltipPrimitive__namespace.Portal, {
|
|
79
|
+
children: jsxRuntime.jsxs(TooltipPrimitive__namespace.Content, {
|
|
80
|
+
side: side,
|
|
81
|
+
sideOffset: sideOffset,
|
|
82
|
+
className: tooltipContent({
|
|
83
|
+
theme
|
|
84
|
+
}),
|
|
85
|
+
children: [content, jsxRuntime.jsx(TooltipPrimitive__namespace.Arrow, {
|
|
86
|
+
className: tooltipArrow({
|
|
87
|
+
theme
|
|
88
|
+
})
|
|
89
|
+
})]
|
|
90
|
+
})
|
|
91
|
+
})]
|
|
92
|
+
})
|
|
93
|
+
});
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
exports.Tooltip = Tooltip;
|
|
97
|
+
exports.default = Tooltip;
|
|
98
|
+
//# sourceMappingURL=index.cjs.js.map
|