@underverse-ui/underverse 1.0.84 → 1.0.86
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/api-reference.json +1 -1
- package/dist/index.cjs +151 -117
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +9 -3
- package/dist/index.d.ts +9 -3
- package/dist/index.js +151 -117
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -448,6 +448,7 @@ interface Toast {
|
|
|
448
448
|
onClick: () => void;
|
|
449
449
|
};
|
|
450
450
|
dismissible?: boolean;
|
|
451
|
+
overflowHidden?: boolean;
|
|
451
452
|
}
|
|
452
453
|
interface ToastContextType {
|
|
453
454
|
addToast: (toast: Omit<Toast, "id">) => void;
|
|
@@ -542,8 +543,9 @@ interface AlertProps {
|
|
|
542
543
|
onClose?: () => void;
|
|
543
544
|
actions?: ReactNode;
|
|
544
545
|
closeAriaLabel?: string;
|
|
546
|
+
overflowHidden?: boolean;
|
|
545
547
|
}
|
|
546
|
-
declare const Alert: ({ title, description, variant, className, icon, dismissible, onClose, actions, closeAriaLabel }: AlertProps) => react_jsx_runtime.JSX.Element | null;
|
|
548
|
+
declare const Alert: ({ title, description, variant, className, icon, dismissible, onClose, actions, closeAriaLabel, overflowHidden, }: AlertProps) => react_jsx_runtime.JSX.Element | null;
|
|
547
549
|
|
|
548
550
|
interface GlobalLoadingProps {
|
|
549
551
|
className?: string;
|
|
@@ -1378,6 +1380,8 @@ interface CalendarTimelineProps<TResourceMeta = unknown, TEventMeta = unknown> e
|
|
|
1378
1380
|
monthEventStyle?: "span" | "compact";
|
|
1379
1381
|
/** Month view only (when `monthEventStyle="compact"`): max visual width (px). */
|
|
1380
1382
|
monthEventMaxWidth?: number;
|
|
1383
|
+
/** Clip overflow at the outer surface. Disable when child hover shadows or focus rings should escape the timeline card. Default: true. */
|
|
1384
|
+
overflowHidden?: boolean;
|
|
1381
1385
|
dayTimeStepMinutes?: number;
|
|
1382
1386
|
/** Render tooltips on events (can be expensive for large datasets). Default: true. */
|
|
1383
1387
|
enableEventTooltips?: boolean;
|
|
@@ -1468,7 +1472,7 @@ interface CalendarTimelineProps<TResourceMeta = unknown, TEventMeta = unknown> e
|
|
|
1468
1472
|
virtualization?: CalendarTimelineVirtualization;
|
|
1469
1473
|
}
|
|
1470
1474
|
|
|
1471
|
-
declare function CalendarTimeline<TResourceMeta = unknown, TEventMeta = unknown>({ resources, events, size, enableEventSheet, eventSheetSize, eventSheetOverlayOpacity, renderEventSheet, selectedEventId, defaultSelectedEventId, onSelectedEventIdChange, eventSheetOpen, defaultEventSheetOpen, onEventSheetOpenChange, onlyView, view, defaultView, onViewChange, dueDateSprint, date, defaultDate, onDateChange, weekStartsOn, locale, timeZone, labels, formatters, groups, groupCollapsed, defaultGroupCollapsed, onGroupCollapsedChange, hideResourceColumn, resourceColumnWidth, defaultResourceColumnWidth, onResourceColumnWidthChange, minResourceColumnWidth, maxResourceColumnWidth, rowHeight, defaultRowHeight, onRowHeightChange, minRowHeight, maxRowHeight, rowHeights, defaultRowHeights, onRowHeightsChange, autoRowHeight, enableLayoutResize, slotMinWidth, adaptiveSlotWidths, dayEventStyle, dayEventMaxWidth, monthEventStyle, monthEventMaxWidth, dayTimeStepMinutes, enableEventTooltips, dayHeaderMode, daySlotCompression, columnVirtualization, dayRangeMode, workHours, maxLanesPerRow, now, renderResource, renderGroup, renderEvent, interactions, onRangeChange, onEventClick, onEventDoubleClick, onCreateEventClick, onCreateEvent, onEventMove, onEventResize, onEventDelete, onMoreClick, virtualization, className, ...rest }: CalendarTimelineProps<TResourceMeta, TEventMeta>): react_jsx_runtime.JSX.Element;
|
|
1475
|
+
declare function CalendarTimeline<TResourceMeta = unknown, TEventMeta = unknown>({ resources, events, size, enableEventSheet, eventSheetSize, eventSheetOverlayOpacity, renderEventSheet, selectedEventId, defaultSelectedEventId, onSelectedEventIdChange, eventSheetOpen, defaultEventSheetOpen, onEventSheetOpenChange, onlyView, view, defaultView, onViewChange, dueDateSprint, date, defaultDate, onDateChange, weekStartsOn, locale, timeZone, labels, formatters, groups, groupCollapsed, defaultGroupCollapsed, onGroupCollapsedChange, hideResourceColumn, resourceColumnWidth, defaultResourceColumnWidth, onResourceColumnWidthChange, minResourceColumnWidth, maxResourceColumnWidth, rowHeight, defaultRowHeight, onRowHeightChange, minRowHeight, maxRowHeight, rowHeights, defaultRowHeights, onRowHeightsChange, autoRowHeight, enableLayoutResize, slotMinWidth, adaptiveSlotWidths, dayEventStyle, dayEventMaxWidth, monthEventStyle, monthEventMaxWidth, overflowHidden, dayTimeStepMinutes, enableEventTooltips, dayHeaderMode, daySlotCompression, columnVirtualization, dayRangeMode, workHours, maxLanesPerRow, now, renderResource, renderGroup, renderEvent, interactions, onRangeChange, onEventClick, onEventDoubleClick, onCreateEventClick, onCreateEvent, onEventMove, onEventResize, onEventDelete, onMoreClick, virtualization, className, ...rest }: CalendarTimelineProps<TResourceMeta, TEventMeta>): react_jsx_runtime.JSX.Element;
|
|
1472
1476
|
|
|
1473
1477
|
type ComboboxOption = string | {
|
|
1474
1478
|
label: string;
|
|
@@ -2105,6 +2109,7 @@ interface MusicPlayerProps {
|
|
|
2105
2109
|
autoPlay?: boolean;
|
|
2106
2110
|
showPlaylist?: boolean;
|
|
2107
2111
|
className?: string;
|
|
2112
|
+
overflowHidden?: boolean;
|
|
2108
2113
|
}
|
|
2109
2114
|
declare const MusicPlayer: React__default.FC<MusicPlayerProps>;
|
|
2110
2115
|
|
|
@@ -2416,8 +2421,9 @@ interface AccessDeniedProps {
|
|
|
2416
2421
|
}>;
|
|
2417
2422
|
className?: string;
|
|
2418
2423
|
children?: React__default.ReactNode;
|
|
2424
|
+
overflowHidden?: boolean;
|
|
2419
2425
|
}
|
|
2420
|
-
declare function AccessDenied({ title, description, variant, icon: Icon, className, children, }: AccessDeniedProps): react_jsx_runtime.JSX.Element;
|
|
2426
|
+
declare function AccessDenied({ title, description, variant, icon: Icon, className, children, overflowHidden, }: AccessDeniedProps): react_jsx_runtime.JSX.Element;
|
|
2421
2427
|
|
|
2422
2428
|
type ThemeMode = "light" | "dark" | "system";
|
|
2423
2429
|
interface ThemeToggleHeadlessProps {
|
package/dist/index.d.ts
CHANGED
|
@@ -448,6 +448,7 @@ interface Toast {
|
|
|
448
448
|
onClick: () => void;
|
|
449
449
|
};
|
|
450
450
|
dismissible?: boolean;
|
|
451
|
+
overflowHidden?: boolean;
|
|
451
452
|
}
|
|
452
453
|
interface ToastContextType {
|
|
453
454
|
addToast: (toast: Omit<Toast, "id">) => void;
|
|
@@ -542,8 +543,9 @@ interface AlertProps {
|
|
|
542
543
|
onClose?: () => void;
|
|
543
544
|
actions?: ReactNode;
|
|
544
545
|
closeAriaLabel?: string;
|
|
546
|
+
overflowHidden?: boolean;
|
|
545
547
|
}
|
|
546
|
-
declare const Alert: ({ title, description, variant, className, icon, dismissible, onClose, actions, closeAriaLabel }: AlertProps) => react_jsx_runtime.JSX.Element | null;
|
|
548
|
+
declare const Alert: ({ title, description, variant, className, icon, dismissible, onClose, actions, closeAriaLabel, overflowHidden, }: AlertProps) => react_jsx_runtime.JSX.Element | null;
|
|
547
549
|
|
|
548
550
|
interface GlobalLoadingProps {
|
|
549
551
|
className?: string;
|
|
@@ -1378,6 +1380,8 @@ interface CalendarTimelineProps<TResourceMeta = unknown, TEventMeta = unknown> e
|
|
|
1378
1380
|
monthEventStyle?: "span" | "compact";
|
|
1379
1381
|
/** Month view only (when `monthEventStyle="compact"`): max visual width (px). */
|
|
1380
1382
|
monthEventMaxWidth?: number;
|
|
1383
|
+
/** Clip overflow at the outer surface. Disable when child hover shadows or focus rings should escape the timeline card. Default: true. */
|
|
1384
|
+
overflowHidden?: boolean;
|
|
1381
1385
|
dayTimeStepMinutes?: number;
|
|
1382
1386
|
/** Render tooltips on events (can be expensive for large datasets). Default: true. */
|
|
1383
1387
|
enableEventTooltips?: boolean;
|
|
@@ -1468,7 +1472,7 @@ interface CalendarTimelineProps<TResourceMeta = unknown, TEventMeta = unknown> e
|
|
|
1468
1472
|
virtualization?: CalendarTimelineVirtualization;
|
|
1469
1473
|
}
|
|
1470
1474
|
|
|
1471
|
-
declare function CalendarTimeline<TResourceMeta = unknown, TEventMeta = unknown>({ resources, events, size, enableEventSheet, eventSheetSize, eventSheetOverlayOpacity, renderEventSheet, selectedEventId, defaultSelectedEventId, onSelectedEventIdChange, eventSheetOpen, defaultEventSheetOpen, onEventSheetOpenChange, onlyView, view, defaultView, onViewChange, dueDateSprint, date, defaultDate, onDateChange, weekStartsOn, locale, timeZone, labels, formatters, groups, groupCollapsed, defaultGroupCollapsed, onGroupCollapsedChange, hideResourceColumn, resourceColumnWidth, defaultResourceColumnWidth, onResourceColumnWidthChange, minResourceColumnWidth, maxResourceColumnWidth, rowHeight, defaultRowHeight, onRowHeightChange, minRowHeight, maxRowHeight, rowHeights, defaultRowHeights, onRowHeightsChange, autoRowHeight, enableLayoutResize, slotMinWidth, adaptiveSlotWidths, dayEventStyle, dayEventMaxWidth, monthEventStyle, monthEventMaxWidth, dayTimeStepMinutes, enableEventTooltips, dayHeaderMode, daySlotCompression, columnVirtualization, dayRangeMode, workHours, maxLanesPerRow, now, renderResource, renderGroup, renderEvent, interactions, onRangeChange, onEventClick, onEventDoubleClick, onCreateEventClick, onCreateEvent, onEventMove, onEventResize, onEventDelete, onMoreClick, virtualization, className, ...rest }: CalendarTimelineProps<TResourceMeta, TEventMeta>): react_jsx_runtime.JSX.Element;
|
|
1475
|
+
declare function CalendarTimeline<TResourceMeta = unknown, TEventMeta = unknown>({ resources, events, size, enableEventSheet, eventSheetSize, eventSheetOverlayOpacity, renderEventSheet, selectedEventId, defaultSelectedEventId, onSelectedEventIdChange, eventSheetOpen, defaultEventSheetOpen, onEventSheetOpenChange, onlyView, view, defaultView, onViewChange, dueDateSprint, date, defaultDate, onDateChange, weekStartsOn, locale, timeZone, labels, formatters, groups, groupCollapsed, defaultGroupCollapsed, onGroupCollapsedChange, hideResourceColumn, resourceColumnWidth, defaultResourceColumnWidth, onResourceColumnWidthChange, minResourceColumnWidth, maxResourceColumnWidth, rowHeight, defaultRowHeight, onRowHeightChange, minRowHeight, maxRowHeight, rowHeights, defaultRowHeights, onRowHeightsChange, autoRowHeight, enableLayoutResize, slotMinWidth, adaptiveSlotWidths, dayEventStyle, dayEventMaxWidth, monthEventStyle, monthEventMaxWidth, overflowHidden, dayTimeStepMinutes, enableEventTooltips, dayHeaderMode, daySlotCompression, columnVirtualization, dayRangeMode, workHours, maxLanesPerRow, now, renderResource, renderGroup, renderEvent, interactions, onRangeChange, onEventClick, onEventDoubleClick, onCreateEventClick, onCreateEvent, onEventMove, onEventResize, onEventDelete, onMoreClick, virtualization, className, ...rest }: CalendarTimelineProps<TResourceMeta, TEventMeta>): react_jsx_runtime.JSX.Element;
|
|
1472
1476
|
|
|
1473
1477
|
type ComboboxOption = string | {
|
|
1474
1478
|
label: string;
|
|
@@ -2105,6 +2109,7 @@ interface MusicPlayerProps {
|
|
|
2105
2109
|
autoPlay?: boolean;
|
|
2106
2110
|
showPlaylist?: boolean;
|
|
2107
2111
|
className?: string;
|
|
2112
|
+
overflowHidden?: boolean;
|
|
2108
2113
|
}
|
|
2109
2114
|
declare const MusicPlayer: React__default.FC<MusicPlayerProps>;
|
|
2110
2115
|
|
|
@@ -2416,8 +2421,9 @@ interface AccessDeniedProps {
|
|
|
2416
2421
|
}>;
|
|
2417
2422
|
className?: string;
|
|
2418
2423
|
children?: React__default.ReactNode;
|
|
2424
|
+
overflowHidden?: boolean;
|
|
2419
2425
|
}
|
|
2420
|
-
declare function AccessDenied({ title, description, variant, icon: Icon, className, children, }: AccessDeniedProps): react_jsx_runtime.JSX.Element;
|
|
2426
|
+
declare function AccessDenied({ title, description, variant, icon: Icon, className, children, overflowHidden, }: AccessDeniedProps): react_jsx_runtime.JSX.Element;
|
|
2421
2427
|
|
|
2422
2428
|
type ThemeMode = "light" | "dark" | "system";
|
|
2423
2429
|
interface ThemeToggleHeadlessProps {
|
package/dist/index.js
CHANGED
|
@@ -5308,9 +5308,10 @@ var ToastComponent = ({ toast, onRemove }) => {
|
|
|
5308
5308
|
"div",
|
|
5309
5309
|
{
|
|
5310
5310
|
className: cn(
|
|
5311
|
-
"relative w-80 rounded-xl border backdrop-blur-md transition-all duration-300 pointer-events-auto
|
|
5311
|
+
"relative w-80 rounded-xl border backdrop-blur-md transition-all duration-300 pointer-events-auto",
|
|
5312
5312
|
"bg-card shadow-xl",
|
|
5313
5313
|
"animate-in slide-in-from-right-full",
|
|
5314
|
+
toast.overflowHidden !== false && "overflow-hidden",
|
|
5314
5315
|
config.containerClassName,
|
|
5315
5316
|
isVisible ? "opacity-100 translate-x-0" : "opacity-0 translate-x-full"
|
|
5316
5317
|
),
|
|
@@ -6156,7 +6157,18 @@ var variantConfig = {
|
|
|
6156
6157
|
accentBarClassName: "bg-destructive"
|
|
6157
6158
|
}
|
|
6158
6159
|
};
|
|
6159
|
-
var Alert = ({
|
|
6160
|
+
var Alert = ({
|
|
6161
|
+
title,
|
|
6162
|
+
description,
|
|
6163
|
+
variant = "default",
|
|
6164
|
+
className,
|
|
6165
|
+
icon,
|
|
6166
|
+
dismissible = false,
|
|
6167
|
+
onClose,
|
|
6168
|
+
actions,
|
|
6169
|
+
closeAriaLabel,
|
|
6170
|
+
overflowHidden = true
|
|
6171
|
+
}) => {
|
|
6160
6172
|
const [open, setOpen] = useState12(true);
|
|
6161
6173
|
const t = useSmartTranslations("Common");
|
|
6162
6174
|
if (!open) return null;
|
|
@@ -6170,9 +6182,10 @@ var Alert = ({ title, description, variant = "default", className, icon, dismiss
|
|
|
6170
6182
|
"div",
|
|
6171
6183
|
{
|
|
6172
6184
|
className: cn(
|
|
6173
|
-
"relative w-full rounded-r-xl border border-l-0
|
|
6185
|
+
"relative w-full rounded-r-xl border border-l-0",
|
|
6174
6186
|
"flex items-start gap-3 p-4 pl-5",
|
|
6175
6187
|
"backdrop-blur-md",
|
|
6188
|
+
overflowHidden && "overflow-hidden",
|
|
6176
6189
|
config.containerClassName,
|
|
6177
6190
|
className
|
|
6178
6191
|
),
|
|
@@ -13552,6 +13565,7 @@ function CalendarTimeline({
|
|
|
13552
13565
|
dayEventMaxWidth,
|
|
13553
13566
|
monthEventStyle = "span",
|
|
13554
13567
|
monthEventMaxWidth,
|
|
13568
|
+
overflowHidden = true,
|
|
13555
13569
|
dayTimeStepMinutes = 60,
|
|
13556
13570
|
enableEventTooltips = true,
|
|
13557
13571
|
dayHeaderMode = "full",
|
|
@@ -14614,9 +14628,10 @@ function CalendarTimeline({
|
|
|
14614
14628
|
"div",
|
|
14615
14629
|
{
|
|
14616
14630
|
className: cn(
|
|
14617
|
-
"rounded-2xl md:rounded-3xl
|
|
14631
|
+
"rounded-2xl md:rounded-3xl bg-card text-card-foreground backdrop-blur-sm",
|
|
14618
14632
|
"border border-border/50 shadow-sm md:hover:shadow-md",
|
|
14619
14633
|
"transition-[transform,box-shadow,border-color,background-color] duration-300 ease-soft",
|
|
14634
|
+
overflowHidden && "overflow-hidden",
|
|
14620
14635
|
densityClass,
|
|
14621
14636
|
className
|
|
14622
14637
|
),
|
|
@@ -20180,7 +20195,8 @@ var MusicPlayer = ({
|
|
|
20180
20195
|
playlist = DEFAULT_PLAYLIST,
|
|
20181
20196
|
autoPlay = false,
|
|
20182
20197
|
showPlaylist: initialShowPlaylist = true,
|
|
20183
|
-
className = ""
|
|
20198
|
+
className = "",
|
|
20199
|
+
overflowHidden = true
|
|
20184
20200
|
}) => {
|
|
20185
20201
|
const [currentSongIndex, setCurrentSongIndex] = useState38(0);
|
|
20186
20202
|
const [isPlaying, setIsPlaying] = useState38(false);
|
|
@@ -20282,108 +20298,116 @@ var MusicPlayer = ({
|
|
|
20282
20298
|
}
|
|
20283
20299
|
}
|
|
20284
20300
|
}, [currentSongIndex, currentSong.startTime, isPlaying]);
|
|
20285
|
-
return /* @__PURE__ */ jsxs48(
|
|
20286
|
-
|
|
20287
|
-
|
|
20288
|
-
|
|
20289
|
-
|
|
20290
|
-
|
|
20291
|
-
|
|
20292
|
-
]
|
|
20293
|
-
|
|
20294
|
-
/* @__PURE__ */ jsx58(
|
|
20295
|
-
|
|
20296
|
-
{
|
|
20297
|
-
|
|
20298
|
-
|
|
20299
|
-
|
|
20300
|
-
|
|
20301
|
-
|
|
20302
|
-
|
|
20303
|
-
|
|
20304
|
-
|
|
20305
|
-
|
|
20306
|
-
|
|
20307
|
-
|
|
20308
|
-
|
|
20309
|
-
|
|
20310
|
-
|
|
20311
|
-
|
|
20312
|
-
|
|
20313
|
-
|
|
20314
|
-
|
|
20315
|
-
|
|
20316
|
-
|
|
20317
|
-
}
|
|
20318
|
-
|
|
20319
|
-
|
|
20320
|
-
|
|
20321
|
-
|
|
20322
|
-
|
|
20323
|
-
|
|
20324
|
-
|
|
20325
|
-
|
|
20326
|
-
|
|
20327
|
-
|
|
20328
|
-
|
|
20329
|
-
|
|
20330
|
-
|
|
20331
|
-
|
|
20332
|
-
|
|
20333
|
-
|
|
20334
|
-
|
|
20335
|
-
|
|
20336
|
-
|
|
20337
|
-
|
|
20338
|
-
|
|
20339
|
-
|
|
20340
|
-
|
|
20341
|
-
|
|
20342
|
-
|
|
20343
|
-
|
|
20344
|
-
|
|
20345
|
-
|
|
20346
|
-
|
|
20347
|
-
|
|
20348
|
-
|
|
20349
|
-
|
|
20350
|
-
|
|
20351
|
-
|
|
20352
|
-
|
|
20353
|
-
|
|
20354
|
-
|
|
20355
|
-
|
|
20356
|
-
|
|
20357
|
-
|
|
20358
|
-
|
|
20359
|
-
|
|
20360
|
-
|
|
20361
|
-
|
|
20362
|
-
|
|
20363
|
-
|
|
20364
|
-
|
|
20365
|
-
|
|
20366
|
-
|
|
20367
|
-
|
|
20368
|
-
|
|
20369
|
-
|
|
20370
|
-
|
|
20371
|
-
{
|
|
20372
|
-
|
|
20373
|
-
|
|
20374
|
-
|
|
20375
|
-
|
|
20376
|
-
|
|
20377
|
-
|
|
20378
|
-
|
|
20379
|
-
|
|
20380
|
-
|
|
20381
|
-
|
|
20382
|
-
|
|
20383
|
-
|
|
20384
|
-
|
|
20385
|
-
|
|
20386
|
-
|
|
20301
|
+
return /* @__PURE__ */ jsxs48(
|
|
20302
|
+
"div",
|
|
20303
|
+
{
|
|
20304
|
+
className: [
|
|
20305
|
+
"underverse-music-player bg-card dark:bg-card border border-border/50 rounded-2xl shadow-2xl",
|
|
20306
|
+
overflowHidden ? "overflow-hidden" : "",
|
|
20307
|
+
className
|
|
20308
|
+
].filter(Boolean).join(" "),
|
|
20309
|
+
children: [
|
|
20310
|
+
/* @__PURE__ */ jsx58("audio", { ref: audioRef, src: currentSong.audioUrl, onTimeUpdate: handleTimeUpdate, onLoadedMetadata: handleLoadedMetadata, onEnded: playNext }),
|
|
20311
|
+
/* @__PURE__ */ jsxs48("div", { className: "p-6", children: [
|
|
20312
|
+
/* @__PURE__ */ jsxs48("div", { className: "text-center mb-6", children: [
|
|
20313
|
+
/* @__PURE__ */ jsx58("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__ */ jsx58("div", { className: "text-6xl", children: "\u{1F3B5}" }) }),
|
|
20314
|
+
/* @__PURE__ */ jsx58("h2", { className: "text-2xl font-bold text-foreground mb-1", children: currentSong.title }),
|
|
20315
|
+
currentSong.artist && /* @__PURE__ */ jsx58("p", { className: "text-muted-foreground", children: currentSong.artist })
|
|
20316
|
+
] }),
|
|
20317
|
+
/* @__PURE__ */ jsxs48("div", { className: "mb-4", children: [
|
|
20318
|
+
/* @__PURE__ */ jsx58(
|
|
20319
|
+
"input",
|
|
20320
|
+
{
|
|
20321
|
+
type: "range",
|
|
20322
|
+
min: "0",
|
|
20323
|
+
max: duration || 0,
|
|
20324
|
+
value: currentTime,
|
|
20325
|
+
onChange: handleSeek,
|
|
20326
|
+
className: "w-full h-2 bg-muted rounded-lg appearance-none cursor-pointer slider"
|
|
20327
|
+
}
|
|
20328
|
+
),
|
|
20329
|
+
/* @__PURE__ */ jsxs48("div", { className: "flex justify-between text-sm text-muted-foreground mt-1", children: [
|
|
20330
|
+
/* @__PURE__ */ jsx58("span", { children: formatTime3(currentTime) }),
|
|
20331
|
+
/* @__PURE__ */ jsx58("span", { children: formatTime3(duration) })
|
|
20332
|
+
] })
|
|
20333
|
+
] }),
|
|
20334
|
+
/* @__PURE__ */ jsxs48("div", { className: "flex items-center justify-center gap-4 mb-6", children: [
|
|
20335
|
+
/* @__PURE__ */ jsx58(
|
|
20336
|
+
"button",
|
|
20337
|
+
{
|
|
20338
|
+
onClick: playPrevious,
|
|
20339
|
+
className: "w-12 h-12 flex items-center justify-center rounded-full bg-secondary hover:bg-secondary/80 transition-colors text-secondary-foreground",
|
|
20340
|
+
children: /* @__PURE__ */ jsx58(SkipBack, { size: 24 })
|
|
20341
|
+
}
|
|
20342
|
+
),
|
|
20343
|
+
/* @__PURE__ */ jsx58(
|
|
20344
|
+
"button",
|
|
20345
|
+
{
|
|
20346
|
+
onClick: togglePlay,
|
|
20347
|
+
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",
|
|
20348
|
+
children: isPlaying ? /* @__PURE__ */ jsx58(Pause2, { size: 32 }) : /* @__PURE__ */ jsx58(Play2, { size: 32, className: "ml-1" })
|
|
20349
|
+
}
|
|
20350
|
+
),
|
|
20351
|
+
/* @__PURE__ */ jsx58(
|
|
20352
|
+
"button",
|
|
20353
|
+
{
|
|
20354
|
+
onClick: playNext,
|
|
20355
|
+
className: "w-12 h-12 flex items-center justify-center rounded-full bg-secondary hover:bg-secondary/80 transition-colors text-secondary-foreground",
|
|
20356
|
+
children: /* @__PURE__ */ jsx58(SkipForward, { size: 24 })
|
|
20357
|
+
}
|
|
20358
|
+
)
|
|
20359
|
+
] }),
|
|
20360
|
+
/* @__PURE__ */ jsxs48("div", { className: "flex items-center gap-3 mb-4", children: [
|
|
20361
|
+
/* @__PURE__ */ jsx58("button", { onClick: toggleMute, className: "text-foreground hover:text-primary transition-colors", children: isMuted || volume === 0 ? /* @__PURE__ */ jsx58(VolumeX2, { size: 20 }) : /* @__PURE__ */ jsx58(Volume22, { size: 20 }) }),
|
|
20362
|
+
/* @__PURE__ */ jsx58(
|
|
20363
|
+
"input",
|
|
20364
|
+
{
|
|
20365
|
+
type: "range",
|
|
20366
|
+
min: "0",
|
|
20367
|
+
max: "1",
|
|
20368
|
+
step: "0.01",
|
|
20369
|
+
value: volume,
|
|
20370
|
+
onChange: handleVolumeChange,
|
|
20371
|
+
className: "flex-1 h-2 bg-muted rounded-lg appearance-none cursor-pointer"
|
|
20372
|
+
}
|
|
20373
|
+
)
|
|
20374
|
+
] }),
|
|
20375
|
+
/* @__PURE__ */ jsx58("div", { className: "flex justify-center", children: /* @__PURE__ */ jsxs48(
|
|
20376
|
+
"button",
|
|
20377
|
+
{
|
|
20378
|
+
onClick: () => setShowPlaylist(!showPlaylist),
|
|
20379
|
+
className: "flex items-center gap-2 px-4 py-2 bg-secondary hover:bg-secondary/80 rounded-lg text-secondary-foreground transition-colors",
|
|
20380
|
+
children: [
|
|
20381
|
+
showPlaylist ? /* @__PURE__ */ jsx58(X17, { size: 20 }) : /* @__PURE__ */ jsx58(List2, { size: 20 }),
|
|
20382
|
+
/* @__PURE__ */ jsx58("span", { children: showPlaylist ? "Hide Playlist" : "Show Playlist" })
|
|
20383
|
+
]
|
|
20384
|
+
}
|
|
20385
|
+
) })
|
|
20386
|
+
] }),
|
|
20387
|
+
showPlaylist && /* @__PURE__ */ jsx58("div", { className: "bg-muted/50 backdrop-blur-sm max-h-96 overflow-y-auto border-t border-border/50", children: /* @__PURE__ */ jsxs48("div", { className: "p-4", children: [
|
|
20388
|
+
/* @__PURE__ */ jsxs48("h3", { className: "text-lg font-semibold text-foreground mb-3", children: [
|
|
20389
|
+
"Playlist (",
|
|
20390
|
+
playlist.length,
|
|
20391
|
+
" songs)"
|
|
20392
|
+
] }),
|
|
20393
|
+
/* @__PURE__ */ jsx58("div", { className: "space-y-2", children: playlist.map((song, index) => /* @__PURE__ */ jsxs48(
|
|
20394
|
+
"div",
|
|
20395
|
+
{
|
|
20396
|
+
onClick: () => playSong(index),
|
|
20397
|
+
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"}`,
|
|
20398
|
+
children: [
|
|
20399
|
+
/* @__PURE__ */ jsx58("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 }),
|
|
20400
|
+
/* @__PURE__ */ jsxs48("div", { className: "flex-1 min-w-0", children: [
|
|
20401
|
+
/* @__PURE__ */ jsx58("p", { className: "text-foreground font-medium truncate", children: song.title }),
|
|
20402
|
+
song.artist && /* @__PURE__ */ jsx58("p", { className: "text-muted-foreground text-sm truncate", children: song.artist })
|
|
20403
|
+
] }),
|
|
20404
|
+
/* @__PURE__ */ jsx58("div", { className: "text-muted-foreground text-sm shrink-0", children: song.duration })
|
|
20405
|
+
]
|
|
20406
|
+
},
|
|
20407
|
+
song.id
|
|
20408
|
+
)) })
|
|
20409
|
+
] }) }),
|
|
20410
|
+
/* @__PURE__ */ jsx58("style", { children: `
|
|
20387
20411
|
.underverse-music-player input[type="range"]::-webkit-slider-thumb {
|
|
20388
20412
|
-webkit-appearance: none;
|
|
20389
20413
|
appearance: none;
|
|
@@ -20409,7 +20433,9 @@ var MusicPlayer = ({
|
|
|
20409
20433
|
background: linear-gradient(to right, hsl(var(--primary)) var(--progress, 0%), hsl(var(--muted)) var(--progress, 0%));
|
|
20410
20434
|
}
|
|
20411
20435
|
` })
|
|
20412
|
-
|
|
20436
|
+
]
|
|
20437
|
+
}
|
|
20438
|
+
);
|
|
20413
20439
|
};
|
|
20414
20440
|
var MusicPlayer_default = MusicPlayer;
|
|
20415
20441
|
|
|
@@ -22360,18 +22386,26 @@ function AccessDenied({
|
|
|
22360
22386
|
variant = "destructive",
|
|
22361
22387
|
icon: Icon,
|
|
22362
22388
|
className,
|
|
22363
|
-
children
|
|
22389
|
+
children,
|
|
22390
|
+
overflowHidden = true
|
|
22364
22391
|
}) {
|
|
22365
22392
|
const styles = VARIANT_STYLES[variant];
|
|
22366
22393
|
const UsedIcon = Icon || DEFAULT_ICONS[variant];
|
|
22367
|
-
return /* @__PURE__ */ jsx70(
|
|
22368
|
-
|
|
22369
|
-
|
|
22370
|
-
|
|
22371
|
-
|
|
22372
|
-
|
|
22373
|
-
|
|
22374
|
-
|
|
22394
|
+
return /* @__PURE__ */ jsx70(
|
|
22395
|
+
Card_default,
|
|
22396
|
+
{
|
|
22397
|
+
className: cn("p-8 text-center shadow-sm", styles.bg, styles.border, className),
|
|
22398
|
+
innerClassName: !overflowHidden ? "overflow-visible" : void 0,
|
|
22399
|
+
children: /* @__PURE__ */ jsxs59("div", { className: "flex flex-col items-center gap-4", children: [
|
|
22400
|
+
/* @__PURE__ */ jsx70("div", { className: cn("p-3 rounded-lg", styles.bg.replace("/5", "/10")), children: /* @__PURE__ */ jsx70(UsedIcon, { className: cn("w-8 h-8", styles.text) }) }),
|
|
22401
|
+
/* @__PURE__ */ jsxs59("div", { children: [
|
|
22402
|
+
/* @__PURE__ */ jsx70("h3", { className: cn("font-semibold mb-2", styles.text), children: title }),
|
|
22403
|
+
/* @__PURE__ */ jsx70("p", { className: cn(styles.text.replace("text-", "text-") + "/80", "text-sm"), children: description })
|
|
22404
|
+
] }),
|
|
22405
|
+
children && /* @__PURE__ */ jsx70("div", { className: "mt-2 flex flex-wrap gap-2 justify-center", children })
|
|
22406
|
+
] })
|
|
22407
|
+
}
|
|
22408
|
+
);
|
|
22375
22409
|
}
|
|
22376
22410
|
|
|
22377
22411
|
// src/components/ThemeToggleHeadless.tsx
|