@roy-ui/ui 0.0.6 → 0.0.8
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/Button-OZLAH5NO.css +179 -0
- package/dist/{Pagination-FUYIHYSD.css → Pagination-LLKV7XXI.css} +3 -1
- package/dist/Table-qVdGZkB4.d.ts +42 -0
- package/dist/TimePicker-BhRta4MK.d.ts +39 -0
- package/dist/chunk-4SGMAZBG.js +161 -0
- package/dist/chunk-4SGMAZBG.js.map +1 -0
- package/dist/chunk-5CIBIH7R.js +98 -0
- package/dist/chunk-5CIBIH7R.js.map +1 -0
- package/dist/chunk-75IGGPXL.js +518 -0
- package/dist/chunk-75IGGPXL.js.map +1 -0
- package/dist/chunk-C5X3TE5U.js +87 -0
- package/dist/chunk-C5X3TE5U.js.map +1 -0
- package/dist/chunk-HUCK7AM7.js +840 -0
- package/dist/chunk-HUCK7AM7.js.map +1 -0
- package/dist/chunk-KSHKVSNK.js +82 -0
- package/dist/chunk-KSHKVSNK.js.map +1 -0
- package/dist/chunk-M6HB6BMA.js +101 -0
- package/dist/chunk-M6HB6BMA.js.map +1 -0
- package/dist/chunk-MDPMEW4K.js +58 -0
- package/dist/chunk-MDPMEW4K.js.map +1 -0
- package/dist/chunk-PGV55XSZ.js +107 -0
- package/dist/chunk-PGV55XSZ.js.map +1 -0
- package/dist/chunk-RLBVY3DG.js +64 -0
- package/dist/chunk-RLBVY3DG.js.map +1 -0
- package/dist/chunk-SFENGB5N.js +410 -0
- package/dist/chunk-SFENGB5N.js.map +1 -0
- package/dist/chunk-XERZVDIT.js +194 -0
- package/dist/chunk-XERZVDIT.js.map +1 -0
- package/dist/components/button/index.d.ts +37 -0
- package/dist/components/button/index.js +4 -0
- package/dist/components/button/index.js.map +1 -0
- package/dist/components/data-table/index.d.ts +145 -0
- package/dist/components/data-table/index.js +9 -0
- package/dist/components/data-table/index.js.map +1 -0
- package/dist/components/date-range-picker/index.d.ts +30 -0
- package/dist/components/date-range-picker/index.js +4 -0
- package/dist/components/date-range-picker/index.js.map +1 -0
- package/dist/components/gradient-button/index.d.ts +12 -0
- package/dist/components/gradient-button/index.js +4 -0
- package/dist/components/gradient-button/index.js.map +1 -0
- package/dist/components/made-by/index.d.ts +23 -0
- package/dist/components/made-by/index.js +4 -0
- package/dist/components/made-by/index.js.map +1 -0
- package/dist/components/pagination/index.d.ts +23 -0
- package/dist/components/pagination/index.js +4 -0
- package/dist/components/pagination/index.js.map +1 -0
- package/dist/components/popover/index.d.ts +18 -0
- package/dist/components/popover/index.js +4 -0
- package/dist/components/popover/index.js.map +1 -0
- package/dist/components/table/index.d.ts +28 -0
- package/dist/components/table/index.js +4 -0
- package/dist/components/table/index.js.map +1 -0
- package/dist/components/table-search/index.d.ts +19 -0
- package/dist/components/table-search/index.js +4 -0
- package/dist/components/table-search/index.js.map +1 -0
- package/dist/components/text-morph/index.d.ts +28 -0
- package/dist/components/text-morph/index.js +4 -0
- package/dist/components/text-morph/index.js.map +1 -0
- package/dist/components/time-picker/index.d.ts +14 -0
- package/dist/components/time-picker/index.js +4 -0
- package/dist/components/time-picker/index.js.map +1 -0
- package/dist/components/tree-nav/index.d.ts +30 -0
- package/dist/components/tree-nav/index.js +4 -0
- package/dist/components/tree-nav/index.js.map +1 -0
- package/dist/dateUtils-B_m_EICl.d.ts +14 -0
- package/dist/index.d.ts +17 -408
- package/dist/index.js +12 -2462
- package/dist/index.js.map +1 -1
- package/package.json +51 -2
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useState, useRef, useEffect } from 'react';
|
|
3
|
+
import './Popover-LSYVKT4M.css';
|
|
4
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
5
|
+
|
|
6
|
+
// src/components/popover/Popover.tsx
|
|
7
|
+
var InfoIcon = () => /* @__PURE__ */ jsxs(
|
|
8
|
+
"svg",
|
|
9
|
+
{
|
|
10
|
+
width: "14",
|
|
11
|
+
height: "14",
|
|
12
|
+
viewBox: "0 0 24 24",
|
|
13
|
+
fill: "none",
|
|
14
|
+
stroke: "currentColor",
|
|
15
|
+
strokeWidth: "1.5",
|
|
16
|
+
strokeLinecap: "round",
|
|
17
|
+
strokeLinejoin: "round",
|
|
18
|
+
"aria-hidden": true,
|
|
19
|
+
children: [
|
|
20
|
+
/* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "9" }),
|
|
21
|
+
/* @__PURE__ */ jsx("path", { d: "M12 16v-5M12 8h.01" })
|
|
22
|
+
]
|
|
23
|
+
}
|
|
24
|
+
);
|
|
25
|
+
function Popover({
|
|
26
|
+
children,
|
|
27
|
+
title,
|
|
28
|
+
align = "right",
|
|
29
|
+
width = "md",
|
|
30
|
+
label = "Open menu",
|
|
31
|
+
defaultOpen = false,
|
|
32
|
+
renderTrigger
|
|
33
|
+
}) {
|
|
34
|
+
const [open, setOpen] = useState(defaultOpen);
|
|
35
|
+
const wrap = useRef(null);
|
|
36
|
+
const toggle = () => setOpen((o) => !o);
|
|
37
|
+
useEffect(() => {
|
|
38
|
+
if (!open) return;
|
|
39
|
+
function onDown(e) {
|
|
40
|
+
if (wrap.current && !wrap.current.contains(e.target)) {
|
|
41
|
+
setOpen(false);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function onKey(e) {
|
|
45
|
+
if (e.key === "Escape") setOpen(false);
|
|
46
|
+
}
|
|
47
|
+
document.addEventListener("mousedown", onDown);
|
|
48
|
+
document.addEventListener("keydown", onKey);
|
|
49
|
+
return () => {
|
|
50
|
+
document.removeEventListener("mousedown", onDown);
|
|
51
|
+
document.removeEventListener("keydown", onKey);
|
|
52
|
+
};
|
|
53
|
+
}, [open]);
|
|
54
|
+
const trigger = renderTrigger ? renderTrigger({ isOpen: open, toggle }) : /* @__PURE__ */ jsx(
|
|
55
|
+
"button",
|
|
56
|
+
{
|
|
57
|
+
type: "button",
|
|
58
|
+
onClick: toggle,
|
|
59
|
+
"aria-label": label,
|
|
60
|
+
"aria-expanded": open,
|
|
61
|
+
className: `royui-popover__trigger ${open ? "royui-popover__trigger--on" : ""}`,
|
|
62
|
+
children: /* @__PURE__ */ jsx(InfoIcon, {})
|
|
63
|
+
}
|
|
64
|
+
);
|
|
65
|
+
const widthClass = typeof width === "string" ? `royui-popover__panel--${width}` : "";
|
|
66
|
+
const customWidth = typeof width === "number" ? { width: `${width}px` } : void 0;
|
|
67
|
+
const alignClass = `royui-popover__panel--${align}`;
|
|
68
|
+
return /* @__PURE__ */ jsxs("div", { ref: wrap, className: "royui-popover", children: [
|
|
69
|
+
trigger,
|
|
70
|
+
open && /* @__PURE__ */ jsxs(
|
|
71
|
+
"div",
|
|
72
|
+
{
|
|
73
|
+
className: `royui-popover__panel ${widthClass} ${alignClass}`,
|
|
74
|
+
style: customWidth,
|
|
75
|
+
role: "dialog",
|
|
76
|
+
children: [
|
|
77
|
+
title && /* @__PURE__ */ jsx("div", { className: "royui-popover__title", children: title }),
|
|
78
|
+
/* @__PURE__ */ jsx("div", { className: "royui-popover__body", children })
|
|
79
|
+
]
|
|
80
|
+
}
|
|
81
|
+
)
|
|
82
|
+
] });
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export { Popover };
|
|
86
|
+
//# sourceMappingURL=chunk-C5X3TE5U.js.map
|
|
87
|
+
//# sourceMappingURL=chunk-C5X3TE5U.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/popover/Popover.tsx"],"names":[],"mappings":"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","file":"chunk-C5X3TE5U.js","sourcesContent":["'use client';\n\nimport {\n useEffect,\n useRef,\n useState,\n type ReactNode,\n} from 'react';\nimport './Popover.css';\n\nexport interface PopoverProps {\n children: ReactNode;\n title?: string;\n align?: 'left' | 'right';\n width?: 'sm' | 'md' | 'lg' | number;\n label?: string;\n defaultOpen?: boolean;\n renderTrigger?: (api: { isOpen: boolean; toggle: () => void }) => ReactNode;\n}\n\nconst InfoIcon = () => (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden\n >\n <circle cx=\"12\" cy=\"12\" r=\"9\" />\n <path d=\"M12 16v-5M12 8h.01\" />\n </svg>\n);\n\nexport function Popover({\n children,\n title,\n align = 'right',\n width = 'md',\n label = 'Open menu',\n defaultOpen = false,\n renderTrigger,\n}: PopoverProps) {\n const [open, setOpen] = useState(defaultOpen);\n const wrap = useRef<HTMLDivElement>(null);\n const toggle = () => setOpen((o) => !o);\n\n useEffect(() => {\n if (!open) return;\n function onDown(e: MouseEvent) {\n if (wrap.current && !wrap.current.contains(e.target as Node)) {\n setOpen(false);\n }\n }\n function onKey(e: KeyboardEvent) {\n if (e.key === 'Escape') setOpen(false);\n }\n document.addEventListener('mousedown', onDown);\n document.addEventListener('keydown', onKey);\n return () => {\n document.removeEventListener('mousedown', onDown);\n document.removeEventListener('keydown', onKey);\n };\n }, [open]);\n\n const trigger = renderTrigger ? (\n renderTrigger({ isOpen: open, toggle })\n ) : (\n <button\n type=\"button\"\n onClick={toggle}\n aria-label={label}\n aria-expanded={open}\n className={`royui-popover__trigger ${open ? 'royui-popover__trigger--on' : ''}`}\n >\n <InfoIcon />\n </button>\n );\n\n const widthClass =\n typeof width === 'string' ? `royui-popover__panel--${width}` : '';\n const customWidth =\n typeof width === 'number' ? { width: `${width}px` } : undefined;\n const alignClass = `royui-popover__panel--${align}`;\n\n return (\n <div ref={wrap} className=\"royui-popover\">\n {trigger}\n {open && (\n <div\n className={`royui-popover__panel ${widthClass} ${alignClass}`}\n style={customWidth}\n role=\"dialog\"\n >\n {title && <div className=\"royui-popover__title\">{title}</div>}\n <div className=\"royui-popover__body\">{children}</div>\n </div>\n )}\n </div>\n );\n}\n"]}
|