@underverse-ui/underverse 1.0.83 → 1.0.85
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/AGENTS.md +1 -1
- package/README.md +4 -1
- package/agent-recipes.json +1 -1
- package/api-reference.json +1 -1
- package/dist/index.cjs +170 -121
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +14 -3
- package/dist/index.d.ts +14 -3
- package/dist/index.js +170 -121
- package/dist/index.js.map +1 -1
- package/llms.txt +1 -1
- package/package.json +1 -1
package/AGENTS.md
CHANGED
|
@@ -51,7 +51,7 @@ import { OverlayScrollbarProvider, ScrollArea, DataTable } from "@underverse-ui/
|
|
|
51
51
|
export function App() {
|
|
52
52
|
return (
|
|
53
53
|
<OverlayScrollbarProvider theme="os-theme-underverse" autoHide="leave">
|
|
54
|
-
<ScrollArea className="h-56" useOverlayScrollbar />
|
|
54
|
+
<ScrollArea className="h-56 rounded-xl border border-border" useOverlayScrollbar />
|
|
55
55
|
<DataTable columns={columns} data={rows} useOverlayScrollbar />
|
|
56
56
|
</OverlayScrollbarProvider>
|
|
57
57
|
);
|
package/README.md
CHANGED
|
@@ -147,7 +147,7 @@ import { OverlayScrollbarProvider, ScrollArea, DataTable } from "@underverse-ui/
|
|
|
147
147
|
function App() {
|
|
148
148
|
return (
|
|
149
149
|
<OverlayScrollbarProvider theme="os-theme-underverse" autoHide="leave">
|
|
150
|
-
<ScrollArea className="h-56" useOverlayScrollbar>
|
|
150
|
+
<ScrollArea className="h-56 rounded-xl border border-border" useOverlayScrollbar>
|
|
151
151
|
{/* long content */}
|
|
152
152
|
</ScrollArea>
|
|
153
153
|
|
|
@@ -183,6 +183,9 @@ Provider props:
|
|
|
183
183
|
Component-level enable flags:
|
|
184
184
|
|
|
185
185
|
- `ScrollArea`: `useOverlayScrollbar?: boolean` (default `false`)
|
|
186
|
+
- `className` styles the outer wrapper
|
|
187
|
+
- `contentClassName` styles the scroll viewport
|
|
188
|
+
- set border/radius explicitly; the primitive no longer hardcodes rounded corners
|
|
186
189
|
- `Table`: `useOverlayScrollbar?: boolean` (default `false`)
|
|
187
190
|
- `DataTable`: `useOverlayScrollbar?: boolean` (default `false`)
|
|
188
191
|
- `Combobox`: `useOverlayScrollbar?: boolean` (default `false`)
|
package/agent-recipes.json
CHANGED
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
{
|
|
27
27
|
"id": "overlay-scrollbar-provider",
|
|
28
28
|
"title": "Enable overlay scrollbars (opt-in)",
|
|
29
|
-
"code": "import \"overlayscrollbars/overlayscrollbars.css\";\nimport { OverlayScrollbarProvider, ScrollArea } from \"@underverse-ui/underverse\";\n\nexport function App(){\n return (\n <OverlayScrollbarProvider theme=\"os-theme-underverse\" autoHide=\"leave\">\n <ScrollArea className=\"h-56\" useOverlayScrollbar>{/* content */}</ScrollArea>\n </OverlayScrollbarProvider>\n );\n}\n"
|
|
29
|
+
"code": "import \"overlayscrollbars/overlayscrollbars.css\";\nimport { OverlayScrollbarProvider, ScrollArea } from \"@underverse-ui/underverse\";\n\nexport function App(){\n return (\n <OverlayScrollbarProvider theme=\"os-theme-underverse\" autoHide=\"leave\">\n <ScrollArea className=\"h-56 rounded-xl border border-border\" useOverlayScrollbar>{/* content */}</ScrollArea>\n </OverlayScrollbarProvider>\n );\n}\n"
|
|
30
30
|
},
|
|
31
31
|
{
|
|
32
32
|
"id": "overlay-scrollbar-custom-component",
|
package/api-reference.json
CHANGED
package/dist/index.cjs
CHANGED
|
@@ -5493,9 +5493,10 @@ var ToastComponent = ({ toast, onRemove }) => {
|
|
|
5493
5493
|
"div",
|
|
5494
5494
|
{
|
|
5495
5495
|
className: cn(
|
|
5496
|
-
"relative w-80 rounded-xl border backdrop-blur-md transition-all duration-300 pointer-events-auto
|
|
5496
|
+
"relative w-80 rounded-xl border backdrop-blur-md transition-all duration-300 pointer-events-auto",
|
|
5497
5497
|
"bg-card shadow-xl",
|
|
5498
5498
|
"animate-in slide-in-from-right-full",
|
|
5499
|
+
toast.overflowHidden !== false && "overflow-hidden",
|
|
5499
5500
|
config.containerClassName,
|
|
5500
5501
|
isVisible ? "opacity-100 translate-x-0" : "opacity-0 translate-x-full"
|
|
5501
5502
|
),
|
|
@@ -6341,7 +6342,18 @@ var variantConfig = {
|
|
|
6341
6342
|
accentBarClassName: "bg-destructive"
|
|
6342
6343
|
}
|
|
6343
6344
|
};
|
|
6344
|
-
var Alert = ({
|
|
6345
|
+
var Alert = ({
|
|
6346
|
+
title,
|
|
6347
|
+
description,
|
|
6348
|
+
variant = "default",
|
|
6349
|
+
className,
|
|
6350
|
+
icon,
|
|
6351
|
+
dismissible = false,
|
|
6352
|
+
onClose,
|
|
6353
|
+
actions,
|
|
6354
|
+
closeAriaLabel,
|
|
6355
|
+
overflowHidden = true
|
|
6356
|
+
}) => {
|
|
6345
6357
|
const [open, setOpen] = (0, import_react12.useState)(true);
|
|
6346
6358
|
const t = useSmartTranslations("Common");
|
|
6347
6359
|
if (!open) return null;
|
|
@@ -6355,9 +6367,10 @@ var Alert = ({ title, description, variant = "default", className, icon, dismiss
|
|
|
6355
6367
|
"div",
|
|
6356
6368
|
{
|
|
6357
6369
|
className: cn(
|
|
6358
|
-
"relative w-full rounded-r-xl border border-l-0
|
|
6370
|
+
"relative w-full rounded-r-xl border border-l-0",
|
|
6359
6371
|
"flex items-start gap-3 p-4 pl-5",
|
|
6360
6372
|
"backdrop-blur-md",
|
|
6373
|
+
overflowHidden && "overflow-hidden",
|
|
6361
6374
|
config.containerClassName,
|
|
6362
6375
|
className
|
|
6363
6376
|
),
|
|
@@ -7934,19 +7947,23 @@ var variantClasses2 = {
|
|
|
7934
7947
|
accent: "bg-accent/10"
|
|
7935
7948
|
};
|
|
7936
7949
|
var ScrollArea = (0, import_react17.forwardRef)(
|
|
7937
|
-
({
|
|
7950
|
+
({
|
|
7951
|
+
className,
|
|
7952
|
+
contentClassName,
|
|
7953
|
+
children,
|
|
7954
|
+
variant = "default",
|
|
7955
|
+
outlined = false,
|
|
7956
|
+
overflowHidden = true,
|
|
7957
|
+
useOverlayScrollbar = false,
|
|
7958
|
+
...props
|
|
7959
|
+
}, ref) => {
|
|
7938
7960
|
const viewportRef = (0, import_react17.useRef)(null);
|
|
7939
7961
|
useOverlayScrollbarTarget(viewportRef, { enabled: useOverlayScrollbar });
|
|
7940
7962
|
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
7941
7963
|
"div",
|
|
7942
7964
|
{
|
|
7943
7965
|
ref,
|
|
7944
|
-
className: cn(
|
|
7945
|
-
"relative overflow-hidden rounded-2xl md:rounded-3xl",
|
|
7946
|
-
variantClasses2[variant],
|
|
7947
|
-
outlined && "border border-border/60",
|
|
7948
|
-
className
|
|
7949
|
-
),
|
|
7966
|
+
className: cn("relative", variantClasses2[variant], outlined && "border border-border/60", overflowHidden && "overflow-hidden", className),
|
|
7950
7967
|
...props,
|
|
7951
7968
|
children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { ref: viewportRef, className: cn("h-full w-full overflow-y-auto scroll-area-viewport", contentClassName), children })
|
|
7952
7969
|
}
|
|
@@ -7959,13 +7976,13 @@ ScrollArea.displayName = "ScrollArea";
|
|
|
7959
7976
|
var import_react18 = require("react");
|
|
7960
7977
|
var import_jsx_runtime33 = require("react/jsx-runtime");
|
|
7961
7978
|
var OverlayScrollArea = (0, import_react18.forwardRef)(
|
|
7962
|
-
({ className, viewportClassName, viewportProps, enabled = true, overlayScrollbarOptions, children, ...props }, ref) => {
|
|
7979
|
+
({ className, viewportClassName, viewportProps, enabled = true, overflowHidden = true, overlayScrollbarOptions, children, ...props }, ref) => {
|
|
7963
7980
|
const viewportRef = (0, import_react18.useRef)(null);
|
|
7964
7981
|
useOverlayScrollbarTarget(viewportRef, {
|
|
7965
7982
|
enabled,
|
|
7966
7983
|
...overlayScrollbarOptions
|
|
7967
7984
|
});
|
|
7968
|
-
return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { ref, className: cn("relative overflow-hidden", className), ...props, children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
7985
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { ref, className: cn("relative", overflowHidden && "overflow-hidden", className), ...props, children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
7969
7986
|
"div",
|
|
7970
7987
|
{
|
|
7971
7988
|
ref: viewportRef,
|
|
@@ -13733,6 +13750,7 @@ function CalendarTimeline({
|
|
|
13733
13750
|
dayEventMaxWidth,
|
|
13734
13751
|
monthEventStyle = "span",
|
|
13735
13752
|
monthEventMaxWidth,
|
|
13753
|
+
overflowHidden = true,
|
|
13736
13754
|
dayTimeStepMinutes = 60,
|
|
13737
13755
|
enableEventTooltips = true,
|
|
13738
13756
|
dayHeaderMode = "full",
|
|
@@ -14795,9 +14813,10 @@ function CalendarTimeline({
|
|
|
14795
14813
|
"div",
|
|
14796
14814
|
{
|
|
14797
14815
|
className: cn(
|
|
14798
|
-
"rounded-2xl md:rounded-3xl
|
|
14816
|
+
"rounded-2xl md:rounded-3xl bg-card text-card-foreground backdrop-blur-sm",
|
|
14799
14817
|
"border border-border/50 shadow-sm md:hover:shadow-md",
|
|
14800
14818
|
"transition-[transform,box-shadow,border-color,background-color] duration-300 ease-soft",
|
|
14819
|
+
overflowHidden && "overflow-hidden",
|
|
14801
14820
|
densityClass,
|
|
14802
14821
|
className
|
|
14803
14822
|
),
|
|
@@ -18962,6 +18981,7 @@ var ListRoot = React46.forwardRef(
|
|
|
18962
18981
|
className,
|
|
18963
18982
|
itemClassName,
|
|
18964
18983
|
// New prop
|
|
18984
|
+
overflowHidden = true,
|
|
18965
18985
|
children,
|
|
18966
18986
|
...rest
|
|
18967
18987
|
}, ref) => {
|
|
@@ -18975,21 +18995,36 @@ var ListRoot = React46.forwardRef(
|
|
|
18975
18995
|
bordered: "border border-border/50 rounded-2xl md:rounded-3xl max-md:rounded-xl",
|
|
18976
18996
|
card: "rounded-2xl md:rounded-3xl bg-card shadow-md border border-border/50 max-md:rounded-xl max-md:shadow-sm",
|
|
18977
18997
|
flush: "",
|
|
18978
|
-
striped: "rounded-2xl md:rounded-3xl border border-border/50
|
|
18998
|
+
striped: "rounded-2xl md:rounded-3xl border border-border/50 max-md:rounded-xl"
|
|
18979
18999
|
};
|
|
18980
19000
|
if (loading2) {
|
|
18981
19001
|
return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
18982
19002
|
Comp,
|
|
18983
19003
|
{
|
|
18984
19004
|
ref,
|
|
18985
|
-
className: cn(
|
|
19005
|
+
className: cn(
|
|
19006
|
+
"group/list",
|
|
19007
|
+
variantClasses3[variant],
|
|
19008
|
+
variant === "striped" && overflowHidden && "overflow-hidden",
|
|
19009
|
+
inset && "p-1.5 md:p-2 max-md:p-1",
|
|
19010
|
+
divided && "divide-y divide-border/60",
|
|
19011
|
+
className
|
|
19012
|
+
),
|
|
18986
19013
|
...rest,
|
|
18987
19014
|
children: Array.from({ length: loadingCount }).map((_, i) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(ListItemSkeleton, { size }, i))
|
|
18988
19015
|
}
|
|
18989
19016
|
);
|
|
18990
19017
|
}
|
|
18991
19018
|
if (!hasChildren && emptyText) {
|
|
18992
|
-
return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
19019
|
+
return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
19020
|
+
Comp,
|
|
19021
|
+
{
|
|
19022
|
+
ref,
|
|
19023
|
+
className: cn("group/list", variantClasses3[variant], variant === "striped" && overflowHidden && "overflow-hidden", inset && "p-1.5 md:p-2 max-md:p-1", className),
|
|
19024
|
+
...rest,
|
|
19025
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "text-center py-8 text-muted-foreground text-sm", children: emptyText })
|
|
19026
|
+
}
|
|
19027
|
+
);
|
|
18993
19028
|
}
|
|
18994
19029
|
return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
18995
19030
|
Comp,
|
|
@@ -18998,6 +19033,7 @@ var ListRoot = React46.forwardRef(
|
|
|
18998
19033
|
className: cn(
|
|
18999
19034
|
"group/list",
|
|
19000
19035
|
variantClasses3[variant],
|
|
19036
|
+
variant === "striped" && overflowHidden && "overflow-hidden",
|
|
19001
19037
|
inset && "p-1.5 md:p-2 max-md:p-1",
|
|
19002
19038
|
divided && "divide-y divide-border/60",
|
|
19003
19039
|
variant === "striped" && "[&>*:nth-child(even)]:bg-muted/30",
|
|
@@ -20328,7 +20364,8 @@ var MusicPlayer = ({
|
|
|
20328
20364
|
playlist = DEFAULT_PLAYLIST,
|
|
20329
20365
|
autoPlay = false,
|
|
20330
20366
|
showPlaylist: initialShowPlaylist = true,
|
|
20331
|
-
className = ""
|
|
20367
|
+
className = "",
|
|
20368
|
+
overflowHidden = true
|
|
20332
20369
|
}) => {
|
|
20333
20370
|
const [currentSongIndex, setCurrentSongIndex] = (0, import_react26.useState)(0);
|
|
20334
20371
|
const [isPlaying, setIsPlaying] = (0, import_react26.useState)(false);
|
|
@@ -20430,108 +20467,116 @@ var MusicPlayer = ({
|
|
|
20430
20467
|
}
|
|
20431
20468
|
}
|
|
20432
20469
|
}, [currentSongIndex, currentSong.startTime, isPlaying]);
|
|
20433
|
-
return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(
|
|
20434
|
-
|
|
20435
|
-
|
|
20436
|
-
|
|
20437
|
-
|
|
20438
|
-
|
|
20439
|
-
|
|
20440
|
-
]
|
|
20441
|
-
|
|
20442
|
-
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
20443
|
-
|
|
20444
|
-
{
|
|
20445
|
-
|
|
20446
|
-
|
|
20447
|
-
|
|
20448
|
-
|
|
20449
|
-
|
|
20450
|
-
|
|
20451
|
-
|
|
20452
|
-
|
|
20453
|
-
|
|
20454
|
-
|
|
20455
|
-
|
|
20456
|
-
|
|
20457
|
-
|
|
20458
|
-
|
|
20459
|
-
|
|
20460
|
-
|
|
20461
|
-
|
|
20462
|
-
|
|
20463
|
-
|
|
20464
|
-
|
|
20465
|
-
}
|
|
20466
|
-
|
|
20467
|
-
|
|
20468
|
-
|
|
20469
|
-
|
|
20470
|
-
|
|
20471
|
-
|
|
20472
|
-
|
|
20473
|
-
|
|
20474
|
-
|
|
20475
|
-
|
|
20476
|
-
|
|
20477
|
-
|
|
20478
|
-
|
|
20479
|
-
|
|
20480
|
-
|
|
20481
|
-
|
|
20482
|
-
|
|
20483
|
-
|
|
20484
|
-
|
|
20485
|
-
|
|
20486
|
-
|
|
20487
|
-
|
|
20488
|
-
|
|
20489
|
-
|
|
20490
|
-
|
|
20491
|
-
|
|
20492
|
-
|
|
20493
|
-
|
|
20494
|
-
|
|
20495
|
-
|
|
20496
|
-
|
|
20497
|
-
|
|
20498
|
-
|
|
20499
|
-
|
|
20500
|
-
|
|
20501
|
-
|
|
20502
|
-
|
|
20503
|
-
|
|
20504
|
-
|
|
20505
|
-
|
|
20506
|
-
|
|
20507
|
-
|
|
20508
|
-
|
|
20509
|
-
|
|
20510
|
-
|
|
20511
|
-
|
|
20512
|
-
|
|
20513
|
-
|
|
20514
|
-
|
|
20515
|
-
|
|
20516
|
-
|
|
20517
|
-
|
|
20518
|
-
|
|
20519
|
-
{
|
|
20520
|
-
|
|
20521
|
-
|
|
20522
|
-
|
|
20523
|
-
|
|
20524
|
-
|
|
20525
|
-
|
|
20526
|
-
|
|
20527
|
-
|
|
20528
|
-
|
|
20529
|
-
|
|
20530
|
-
|
|
20531
|
-
|
|
20532
|
-
|
|
20533
|
-
|
|
20534
|
-
|
|
20470
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(
|
|
20471
|
+
"div",
|
|
20472
|
+
{
|
|
20473
|
+
className: [
|
|
20474
|
+
"underverse-music-player bg-card dark:bg-card border border-border/50 rounded-2xl shadow-2xl",
|
|
20475
|
+
overflowHidden ? "overflow-hidden" : "",
|
|
20476
|
+
className
|
|
20477
|
+
].filter(Boolean).join(" "),
|
|
20478
|
+
children: [
|
|
20479
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("audio", { ref: audioRef, src: currentSong.audioUrl, onTimeUpdate: handleTimeUpdate, onLoadedMetadata: handleLoadedMetadata, onEnded: playNext }),
|
|
20480
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "p-6", children: [
|
|
20481
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "text-center mb-6", children: [
|
|
20482
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: "w-48 h-48 mx-auto mb-4 bg-primary/10 dark:bg-primary/20 border border-primary/30 rounded-2xl shadow-lg flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: "text-6xl", children: "\u{1F3B5}" }) }),
|
|
20483
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("h2", { className: "text-2xl font-bold text-foreground mb-1", children: currentSong.title }),
|
|
20484
|
+
currentSong.artist && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("p", { className: "text-muted-foreground", children: currentSong.artist })
|
|
20485
|
+
] }),
|
|
20486
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "mb-4", children: [
|
|
20487
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
20488
|
+
"input",
|
|
20489
|
+
{
|
|
20490
|
+
type: "range",
|
|
20491
|
+
min: "0",
|
|
20492
|
+
max: duration || 0,
|
|
20493
|
+
value: currentTime,
|
|
20494
|
+
onChange: handleSeek,
|
|
20495
|
+
className: "w-full h-2 bg-muted rounded-lg appearance-none cursor-pointer slider"
|
|
20496
|
+
}
|
|
20497
|
+
),
|
|
20498
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "flex justify-between text-sm text-muted-foreground mt-1", children: [
|
|
20499
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { children: formatTime3(currentTime) }),
|
|
20500
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { children: formatTime3(duration) })
|
|
20501
|
+
] })
|
|
20502
|
+
] }),
|
|
20503
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "flex items-center justify-center gap-4 mb-6", children: [
|
|
20504
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
20505
|
+
"button",
|
|
20506
|
+
{
|
|
20507
|
+
onClick: playPrevious,
|
|
20508
|
+
className: "w-12 h-12 flex items-center justify-center rounded-full bg-secondary hover:bg-secondary/80 transition-colors text-secondary-foreground",
|
|
20509
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_lucide_react33.SkipBack, { size: 24 })
|
|
20510
|
+
}
|
|
20511
|
+
),
|
|
20512
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
20513
|
+
"button",
|
|
20514
|
+
{
|
|
20515
|
+
onClick: togglePlay,
|
|
20516
|
+
className: "w-16 h-16 flex items-center justify-center rounded-full bg-primary hover:bg-primary/90 transition-colors text-primary-foreground shadow-lg",
|
|
20517
|
+
children: isPlaying ? /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_lucide_react33.Pause, { size: 32 }) : /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_lucide_react33.Play, { size: 32, className: "ml-1" })
|
|
20518
|
+
}
|
|
20519
|
+
),
|
|
20520
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
20521
|
+
"button",
|
|
20522
|
+
{
|
|
20523
|
+
onClick: playNext,
|
|
20524
|
+
className: "w-12 h-12 flex items-center justify-center rounded-full bg-secondary hover:bg-secondary/80 transition-colors text-secondary-foreground",
|
|
20525
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_lucide_react33.SkipForward, { size: 24 })
|
|
20526
|
+
}
|
|
20527
|
+
)
|
|
20528
|
+
] }),
|
|
20529
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "flex items-center gap-3 mb-4", children: [
|
|
20530
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("button", { onClick: toggleMute, className: "text-foreground hover:text-primary transition-colors", children: isMuted || volume === 0 ? /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_lucide_react33.VolumeX, { size: 20 }) : /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_lucide_react33.Volume2, { size: 20 }) }),
|
|
20531
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
20532
|
+
"input",
|
|
20533
|
+
{
|
|
20534
|
+
type: "range",
|
|
20535
|
+
min: "0",
|
|
20536
|
+
max: "1",
|
|
20537
|
+
step: "0.01",
|
|
20538
|
+
value: volume,
|
|
20539
|
+
onChange: handleVolumeChange,
|
|
20540
|
+
className: "flex-1 h-2 bg-muted rounded-lg appearance-none cursor-pointer"
|
|
20541
|
+
}
|
|
20542
|
+
)
|
|
20543
|
+
] }),
|
|
20544
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: "flex justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(
|
|
20545
|
+
"button",
|
|
20546
|
+
{
|
|
20547
|
+
onClick: () => setShowPlaylist(!showPlaylist),
|
|
20548
|
+
className: "flex items-center gap-2 px-4 py-2 bg-secondary hover:bg-secondary/80 rounded-lg text-secondary-foreground transition-colors",
|
|
20549
|
+
children: [
|
|
20550
|
+
showPlaylist ? /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_lucide_react33.X, { size: 20 }) : /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_lucide_react33.List, { size: 20 }),
|
|
20551
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { children: showPlaylist ? "Hide Playlist" : "Show Playlist" })
|
|
20552
|
+
]
|
|
20553
|
+
}
|
|
20554
|
+
) })
|
|
20555
|
+
] }),
|
|
20556
|
+
showPlaylist && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: "bg-muted/50 backdrop-blur-sm max-h-96 overflow-y-auto border-t border-border/50", children: /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "p-4", children: [
|
|
20557
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("h3", { className: "text-lg font-semibold text-foreground mb-3", children: [
|
|
20558
|
+
"Playlist (",
|
|
20559
|
+
playlist.length,
|
|
20560
|
+
" songs)"
|
|
20561
|
+
] }),
|
|
20562
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: "space-y-2", children: playlist.map((song, index) => /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(
|
|
20563
|
+
"div",
|
|
20564
|
+
{
|
|
20565
|
+
onClick: () => playSong(index),
|
|
20566
|
+
className: `flex items-center gap-3 p-3 rounded-lg cursor-pointer transition-all ${index === currentSongIndex ? "bg-primary/20 border border-primary shadow-lg" : "bg-secondary/30 hover:bg-secondary/50"}`,
|
|
20567
|
+
children: [
|
|
20568
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: "shrink-0 w-8 h-8 flex items-center justify-center rounded-full bg-primary text-primary-foreground text-sm font-semibold", children: index === currentSongIndex && isPlaying ? "\u25B6" : index + 1 }),
|
|
20569
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "flex-1 min-w-0", children: [
|
|
20570
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("p", { className: "text-foreground font-medium truncate", children: song.title }),
|
|
20571
|
+
song.artist && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("p", { className: "text-muted-foreground text-sm truncate", children: song.artist })
|
|
20572
|
+
] }),
|
|
20573
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: "text-muted-foreground text-sm shrink-0", children: song.duration })
|
|
20574
|
+
]
|
|
20575
|
+
},
|
|
20576
|
+
song.id
|
|
20577
|
+
)) })
|
|
20578
|
+
] }) }),
|
|
20579
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("style", { children: `
|
|
20535
20580
|
.underverse-music-player input[type="range"]::-webkit-slider-thumb {
|
|
20536
20581
|
-webkit-appearance: none;
|
|
20537
20582
|
appearance: none;
|
|
@@ -20557,7 +20602,9 @@ var MusicPlayer = ({
|
|
|
20557
20602
|
background: linear-gradient(to right, hsl(var(--primary)) var(--progress, 0%), hsl(var(--muted)) var(--progress, 0%));
|
|
20558
20603
|
}
|
|
20559
20604
|
` })
|
|
20560
|
-
|
|
20605
|
+
]
|
|
20606
|
+
}
|
|
20607
|
+
);
|
|
20561
20608
|
};
|
|
20562
20609
|
var MusicPlayer_default = MusicPlayer;
|
|
20563
20610
|
|
|
@@ -22092,6 +22139,7 @@ function DataTable({
|
|
|
22092
22139
|
storageKey,
|
|
22093
22140
|
stickyHeader = true,
|
|
22094
22141
|
maxHeight = 500,
|
|
22142
|
+
overflowHidden = true,
|
|
22095
22143
|
useOverlayScrollbar = false,
|
|
22096
22144
|
enableHeaderAutoFit = true,
|
|
22097
22145
|
labels
|
|
@@ -22225,7 +22273,8 @@ function DataTable({
|
|
|
22225
22273
|
"div",
|
|
22226
22274
|
{
|
|
22227
22275
|
className: cn(
|
|
22228
|
-
"relative rounded-2xl md:rounded-3xl border border-border/50 bg-card
|
|
22276
|
+
"relative rounded-2xl md:rounded-3xl border border-border/50 bg-card",
|
|
22277
|
+
overflowHidden && "overflow-hidden",
|
|
22229
22278
|
loading2 && "opacity-60 pointer-events-none"
|
|
22230
22279
|
),
|
|
22231
22280
|
children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|