@xhub-short/ui 0.1.0-beta.1 → 0.1.0-beta.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/dist/CommentSheet.css-DyEc3Sro.d.ts +217 -0
  2. package/dist/VideoSlotPlayIndicator-DPs8Xt5C.d.ts +51 -0
  3. package/dist/chunk-3OB3OVYR.js +349 -0
  4. package/dist/{chunk-WKX2WBVO.js → chunk-3XPJHUYL.js} +1 -39
  5. package/dist/chunk-4RIMQOBR.js +58 -0
  6. package/dist/chunk-4TUBNA2X.js +180 -0
  7. package/dist/{chunk-4YDIRPIN.js → chunk-ANCP53F3.js} +3 -3
  8. package/dist/{chunk-UXMA4KJZ.js → chunk-CAWE42LH.js} +5 -3
  9. package/dist/{chunk-ANGBSV7L.js → chunk-CIIZ3IHV.js} +10 -5
  10. package/dist/chunk-DR7KR7OT.js +103 -0
  11. package/dist/chunk-DXLCQ4FH.js +102 -0
  12. package/dist/chunk-EDWS2IPH.js +1 -0
  13. package/dist/chunk-FR7UQSZP.js +570 -0
  14. package/dist/chunk-IWSBYOSS.js +91 -0
  15. package/dist/chunk-JEY6R4KJ.js +334 -0
  16. package/dist/chunk-KMJ3PQ7M.js +1262 -0
  17. package/dist/chunk-MFJS65C5.js +368 -0
  18. package/dist/{chunk-HW4LXTFT.js → chunk-OM4L7RE5.js} +18 -6
  19. package/dist/chunk-PBIH2F2Q.js +344 -0
  20. package/dist/chunk-PJ4NMVMY.js +326 -0
  21. package/dist/chunk-Q6MG7AVG.js +531 -0
  22. package/dist/chunk-QCKVF2DR.js +713 -0
  23. package/dist/chunk-QCRRF76W.js +75 -0
  24. package/dist/chunk-QUEJHA24.js +508 -0
  25. package/dist/chunk-VXW7AOGM.js +285 -0
  26. package/dist/chunk-YB7AXTX7.js +430 -0
  27. package/dist/chunk-ZGWSJ6Z5.js +601 -0
  28. package/dist/components/ActionBar/index.js +1 -1
  29. package/dist/components/AdvanceMenu/index.d.ts +78 -0
  30. package/dist/components/AdvanceMenu/index.js +1 -0
  31. package/dist/components/AuthorInfo/index.d.ts +5 -1
  32. package/dist/components/AuthorInfo/index.js +1 -1
  33. package/dist/components/BottomSheet/index.d.ts +82 -0
  34. package/dist/components/BottomSheet/index.js +1 -0
  35. package/dist/components/CleanModeOverlay/index.d.ts +60 -0
  36. package/dist/components/CleanModeOverlay/index.js +1 -0
  37. package/dist/components/CommentSheet/index.d.ts +164 -0
  38. package/dist/components/CommentSheet/index.js +1 -0
  39. package/dist/components/DetailView/index.d.ts +311 -0
  40. package/dist/components/DetailView/index.js +1 -0
  41. package/dist/components/ErrorBoundary/index.js +1 -1
  42. package/dist/components/ImageCarousel/index.d.ts +50 -0
  43. package/dist/components/ImageCarousel/index.js +1 -0
  44. package/dist/components/ImagePostSlot/index.d.ts +207 -0
  45. package/dist/components/ImagePostSlot/index.js +1 -0
  46. package/dist/components/ProgressBar/index.d.ts +30 -2
  47. package/dist/components/ProgressBar/index.js +1 -1
  48. package/dist/components/QualityPicker/index.d.ts +35 -0
  49. package/dist/components/QualityPicker/index.js +1 -0
  50. package/dist/components/ReportSheet/index.d.ts +68 -0
  51. package/dist/components/ReportSheet/index.js +1 -0
  52. package/dist/components/Skeleton/index.js +1 -1
  53. package/dist/components/SpeedPicker/index.d.ts +32 -0
  54. package/dist/components/SpeedPicker/index.js +1 -0
  55. package/dist/components/VideoFeed/index.d.ts +12 -1
  56. package/dist/components/VideoFeed/index.js +1 -1
  57. package/dist/components/VideoInfo/index.d.ts +4 -2
  58. package/dist/components/VideoInfo/index.js +1 -1
  59. package/dist/components/VideoPlayer/index.d.ts +14 -41
  60. package/dist/components/VideoPlayer/index.js +1 -1
  61. package/dist/components/VideoSlot/index.d.ts +84 -65
  62. package/dist/components/VideoSlot/index.js +2 -1
  63. package/dist/components/VirtualSlider/index.d.ts +339 -0
  64. package/dist/components/VirtualSlider/index.js +1 -0
  65. package/dist/components/icons/index.js +1 -1
  66. package/dist/index.d.ts +107 -95
  67. package/dist/index.js +84 -27
  68. package/package.json +51 -7
  69. package/dist/chunk-2PTMP65P.js +0 -738
  70. package/dist/chunk-4MN72OZH.js +0 -148
  71. package/dist/chunk-DHQJBXQW.js +0 -562
  72. package/dist/chunk-SSJDO24Q.js +0 -204
  73. package/dist/chunk-XAOEHLOX.js +0 -1326
  74. package/dist/chunk-YW23IBKF.js +0 -530
  75. package/dist/chunk-ZZDQKP4R.js +0 -418
  76. package/dist/use-gesture-react.esm-3SV4QLEJ.js +0 -1893
@@ -110,10 +110,10 @@ function BookmarkFilledIcon(props) {
110
110
  ) });
111
111
  }
112
112
  function PlayIcon(props) {
113
- return /* @__PURE__ */ jsx("svg", { ...getIconProps(props), "aria-hidden": "true", children: /* @__PURE__ */ jsx(
113
+ return /* @__PURE__ */ jsx("svg", { "aria-hidden": "true", xmlns: "http://www.w3.org/2000/svg", fill: "none", ...getIconProps(props), children: /* @__PURE__ */ jsx(
114
114
  "path",
115
115
  {
116
- d: "M17.0089 3.45151C12.3423 0.748041 6.5 4.11533 6.5 9.50852V38.4835C6.5 43.8767 12.3423 47.244 17.0089 44.5405L42.0169 30.053C46.6717 27.3565 46.6717 20.6356 42.0169 17.939L17.0089 3.45151Z",
116
+ d: "M9.92196 2.01322C7.19974 0.436195 3.79175 2.40044 3.79175 5.54647V22.4486C3.79175 25.5946 7.19974 27.5588 9.92195 25.9818L24.5099 17.5308C27.2252 15.9578 27.2252 12.0373 24.5099 10.4643L9.92196 2.01322Z",
117
117
  fill: "currentColor"
118
118
  }
119
119
  ) });
@@ -122,7 +122,7 @@ function PauseIcon(props) {
122
122
  return /* @__PURE__ */ jsx("svg", { ...getIconProps(props), "aria-hidden": "true", children: /* @__PURE__ */ jsx(
123
123
  "path",
124
124
  {
125
- d: "M20.751 3.6V20.4C20.751 21.036 20.751 21.42 20.561 21.794C20.392 22.126 20.127 22.391 19.796 22.559C19.422 22.749 19.038 22.749 18.401 22.749H16.601C15.965 22.749 15.58 22.749 15.206 22.559C14.875 22.391 14.61 22.126 14.441 21.794C14.25 21.419 14.25 21.035 14.25 20.399V3.6C14.25 2.964 14.25 2.58 14.44 2.206C14.609 1.874 14.874 1.609 15.205 1.441C15.579 1.25 15.963 1.25 16.6 1.25H18.4C19.037 1.25 19.421 1.25 19.796 1.441C20.126 1.609 20.391 1.874 20.56 2.205C20.751 2.58 20.751 2.964 20.751 3.6ZM8.796 1.441C8.421 1.25 8.037 1.25 7.4 1.25H5.6C4.963 1.25 4.579 1.25 4.205 1.441C3.873 1.61 3.608 1.875 3.44 2.206C3.25 2.58 3.25 2.964 3.25 3.6V20.4C3.25 21.036 3.25 21.42 3.44 21.793C3.609 22.125 3.874 22.39 4.206 22.559C4.58 22.749 4.964 22.749 5.601 22.749H7.401C8.037 22.749 8.422 22.749 8.796 22.559C9.127 22.391 9.392 22.126 9.561 21.794C9.751 21.42 9.751 21.036 9.751 20.4V3.6C9.751 2.964 9.751 2.58 9.56 2.205C9.391 1.873 9.126 1.609 8.796 1.441Z",
125
+ d: "M24.2096 4.20016V23.8002C24.2096 24.5422 24.2096 24.9902 23.9879 25.4265C23.7907 25.8138 23.4816 26.123 23.0954 26.319C22.6591 26.5407 22.2111 26.5407 21.4679 26.5407H19.3679C18.6259 26.5407 18.1767 26.5407 17.7404 26.319C17.3542 26.123 17.0451 25.8138 16.8479 25.4265C16.6251 24.989 16.6251 24.541 16.6251 23.799V4.20016C16.6251 3.45816 16.6251 3.01016 16.8467 2.57383C17.0439 2.1865 17.3531 1.87733 17.7393 1.68133C18.1756 1.4585 18.6236 1.4585 19.3667 1.4585H21.4667C22.2099 1.4585 22.6579 1.4585 23.0954 1.68133C23.4804 1.87733 23.7896 2.1865 23.9867 2.57266C24.2096 3.01016 24.2096 3.45816 24.2096 4.20016ZM10.2621 1.68133C9.82458 1.4585 9.37658 1.4585 8.63342 1.4585H6.53341C5.79025 1.4585 5.34225 1.4585 4.90591 1.68133C4.51858 1.8785 4.20941 2.18766 4.01341 2.57383C3.79175 3.01016 3.79175 3.45816 3.79175 4.20016V23.8002C3.79175 24.5422 3.79175 24.9902 4.01341 25.4253C4.21058 25.8127 4.51975 26.1218 4.90708 26.319C5.34341 26.5407 5.79141 26.5407 6.53458 26.5407H8.63458C9.37658 26.5407 9.82575 26.5407 10.2621 26.319C10.6482 26.123 10.9574 25.8138 11.1546 25.4265C11.3762 24.9902 11.3762 24.5422 11.3762 23.8002V4.20016C11.3762 3.45816 11.3762 3.01016 11.1534 2.57266C10.9562 2.18533 10.6471 1.87733 10.2621 1.68133Z",
126
126
  fill: "currentColor"
127
127
  }
128
128
  ) });
@@ -1,7 +1,8 @@
1
1
  // src/utils/injectComponentCSS.ts
2
2
  var injectedStyles = /* @__PURE__ */ new Set();
3
3
  var STYLE_ID_PREFIX = "sv-styles-";
4
- function injectComponentCSS(componentId, css) {
4
+ function injectComponentCSS(componentId, css, options = {}) {
5
+ const { layered = true } = options;
5
6
  if (typeof document === "undefined") {
6
7
  return () => {
7
8
  };
@@ -20,11 +21,12 @@ function injectComponentCSS(componentId, css) {
20
21
  const style = document.createElement("style");
21
22
  style.id = styleId;
22
23
  style.setAttribute("data-sv-component", componentId);
23
- style.textContent = css;
24
+ style.textContent = layered ? `@layer sv {
25
+ ${css}
26
+ }` : css;
24
27
  document.head.appendChild(style);
25
28
  injectedStyles.add(componentId);
26
29
  return () => {
27
- removeComponentCSS(componentId);
28
30
  };
29
31
  }
30
32
  function removeComponentCSS(componentId) {
@@ -1,5 +1,6 @@
1
- import { cn, formatCount } from './chunk-WKX2WBVO.js';
2
- import { injectComponentCSS } from './chunk-UXMA4KJZ.js';
1
+ import { formatCount } from './chunk-3XPJHUYL.js';
2
+ import { injectComponentCSS } from './chunk-CAWE42LH.js';
3
+ import { clsx } from 'clsx';
3
4
  import { createContext, useInsertionEffect, useState, useRef, useEffect, useCallback, useContext } from 'react';
4
5
  import { jsx, jsxs } from 'react/jsx-runtime';
5
6
 
@@ -339,6 +340,7 @@ function ActionButton({
339
340
  const handleTouchEnd = useCallback(
340
341
  (e) => {
341
342
  e.stopPropagation();
343
+ e.preventDefault();
342
344
  if (!disabled && onClick) {
343
345
  onClick();
344
346
  }
@@ -360,7 +362,7 @@ function ActionButton({
360
362
  const formattedCount = count !== void 0 ? formatter(count) : null;
361
363
  const shouldShowCount = count !== void 0 && (!hideZeroCount || count > 0);
362
364
  const displayIcon = isActive && activeIcon ? activeIcon : icon;
363
- const buttonClasses = cn(
365
+ const buttonClasses = clsx(
364
366
  CSS_PREFIX,
365
367
  variant !== "default" && `${CSS_PREFIX}--${variant}`,
366
368
  type !== "default" && `${CSS_PREFIX}--${type}`,
@@ -389,7 +391,10 @@ function ActionButton({
389
391
  shouldShowCount && /* @__PURE__ */ jsx(
390
392
  "span",
391
393
  {
392
- className: cn(`${CSS_PREFIX}__count`, !shouldShowCount && `${CSS_PREFIX}__count--hidden`),
394
+ className: clsx(
395
+ `${CSS_PREFIX}__count`,
396
+ !shouldShowCount && `${CSS_PREFIX}__count--hidden`
397
+ ),
393
398
  children: formattedCount
394
399
  }
395
400
  )
@@ -443,7 +448,7 @@ function ActionBarHeadlessRoot({
443
448
  interactionState,
444
449
  interactionActions
445
450
  };
446
- const containerClasses = cn(
451
+ const containerClasses = clsx(
447
452
  CSS_PREFIX2,
448
453
  direction === "horizontal" && `${CSS_PREFIX2}--horizontal`,
449
454
  className
@@ -0,0 +1,103 @@
1
+ import { clsx } from 'clsx';
2
+ import { memo, useEffect, useCallback } from 'react';
3
+ import { jsxs, jsx } from 'react/jsx-runtime';
4
+
5
+ // src/components/QualityPicker/QualityPickerHeadless.tsx
6
+
7
+ // src/components/QualityPicker/QualityPicker.css.ts
8
+ var QUALITY_PICKER_CSS = `.sv-quality-picker{--sv-quality-picker-bg:rgba(28,28,30,.95);--sv-quality-picker-text:#fff;--sv-quality-picker-text-secondary:rgba(255,255,255,.6);--sv-quality-picker-selected:#007aff;--sv-quality-picker-item-hover:rgba(255,255,255,.1);--sv-quality-picker-check:#007aff;--sv-quality-picker-badge:rgba(255,255,255,.15);--sv-quality-picker-item-height:48px;--sv-quality-picker-radius:12px;--sv-quality-picker-padding:8px}.sv-quality-picker{padding:var(--sv-quality-picker-padding)}.sv-quality-picker-title{padding:8px 16px;font-size:14px;font-weight:600;color:var(--sv-quality-picker-text-secondary);text-align:center}.sv-quality-picker-options{display:flex;flex-direction:column;gap:2px}.sv-quality-picker-option{display:flex;align-items:center;gap:12px;height:var(--sv-quality-picker-item-height);padding:0 16px;border:0;background:transparent;color:var(--sv-quality-picker-text);font-size:16px;font-weight:normal;cursor:pointer;border-radius:var(--sv-quality-picker-radius);transition:background-color 150ms ease;-webkit-tap-highlight-color:transparent}.sv-quality-picker-option:hover{background:var(--sv-quality-picker-item-hover)}.sv-quality-picker-option[data-selected="true"]{color:var(--sv-quality-picker-selected);font-weight:500}.sv-quality-picker-option-label{flex:1;display:flex;align-items:center;gap:8px}.sv-quality-picker-option-badge{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;padding:2px 6px;background:var(--sv-quality-picker-badge);border-radius:4px;color:var(--sv-quality-picker-text-secondary)}.sv-quality-picker-option[data-selected="true"] .sv-quality-picker-option-badge{background:var(--sv-quality-picker-selected);color:#fff}.sv-quality-picker-option-check{width:20px;height:20px;color:var(--sv-quality-picker-check);opacity:0;transition:opacity 150ms ease}.sv-quality-picker-option[data-selected="true"] .sv-quality-picker-option-check{opacity:1}.sv-quality-picker-empty{padding:24px 16px;text-align:center;color:var(--sv-quality-picker-text-secondary);font-size:14px}`;
9
+ var cssInjected = false;
10
+ function injectCSS() {
11
+ if (cssInjected || typeof document === "undefined") return;
12
+ const styleId = "sv-quality-picker-styles";
13
+ if (!document.getElementById(styleId)) {
14
+ const style = document.createElement("style");
15
+ style.id = styleId;
16
+ style.textContent = QUALITY_PICKER_CSS;
17
+ document.head.appendChild(style);
18
+ }
19
+ cssInjected = true;
20
+ }
21
+ function CheckIcon() {
22
+ return /* @__PURE__ */ jsx("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", children: /* @__PURE__ */ jsx("polyline", { points: "20 6 9 17 4 12" }) });
23
+ }
24
+ function getQualityBadge(height) {
25
+ if (height >= 2160) return "4K";
26
+ if (height >= 1080) return "FHD";
27
+ if (height >= 720) return "HD";
28
+ return null;
29
+ }
30
+ function formatQualityLabel(level) {
31
+ return `${level.height}p`;
32
+ }
33
+ function QualityPickerHeadlessComponent({
34
+ quality,
35
+ levels,
36
+ onQualityChange,
37
+ title = "Quality",
38
+ className,
39
+ onClose,
40
+ autoClose = true,
41
+ showAuto = true,
42
+ autoLabel = "Auto",
43
+ emptyMessage = "No quality options available"
44
+ }) {
45
+ useEffect(() => {
46
+ injectCSS();
47
+ }, []);
48
+ const handleSelect = useCallback(
49
+ (level) => {
50
+ onQualityChange(level);
51
+ if (autoClose && onClose) {
52
+ onClose();
53
+ }
54
+ },
55
+ [onQualityChange, autoClose, onClose]
56
+ );
57
+ const sortedLevels = [...levels].sort((a, b) => b.height - a.height);
58
+ const isEmpty = sortedLevels.length === 0;
59
+ return /* @__PURE__ */ jsxs("div", { className: clsx("sv-quality-picker", className), "aria-label": title, children: [
60
+ title && /* @__PURE__ */ jsx("div", { className: "sv-quality-picker-title", children: title }),
61
+ isEmpty ? /* @__PURE__ */ jsx("div", { className: "sv-quality-picker-empty", children: emptyMessage }) : /* @__PURE__ */ jsxs("div", { className: "sv-quality-picker-options", children: [
62
+ showAuto && /* @__PURE__ */ jsxs(
63
+ "button",
64
+ {
65
+ type: "button",
66
+ className: "sv-quality-picker-option",
67
+ "data-selected": quality === -1,
68
+ onClick: () => handleSelect(-1),
69
+ "aria-selected": quality === -1,
70
+ children: [
71
+ /* @__PURE__ */ jsx("span", { className: "sv-quality-picker-option-label", children: autoLabel }),
72
+ /* @__PURE__ */ jsx("span", { className: "sv-quality-picker-option-check", children: /* @__PURE__ */ jsx(CheckIcon, {}) })
73
+ ]
74
+ }
75
+ ),
76
+ sortedLevels.map((level, index) => {
77
+ const isSelected = quality === index;
78
+ const badge = getQualityBadge(level.height);
79
+ return /* @__PURE__ */ jsxs(
80
+ "button",
81
+ {
82
+ type: "button",
83
+ className: "sv-quality-picker-option",
84
+ "data-selected": isSelected,
85
+ onClick: () => handleSelect(index),
86
+ "aria-selected": isSelected,
87
+ children: [
88
+ /* @__PURE__ */ jsxs("span", { className: "sv-quality-picker-option-label", children: [
89
+ formatQualityLabel(level),
90
+ badge && /* @__PURE__ */ jsx("span", { className: "sv-quality-picker-option-badge", children: badge })
91
+ ] }),
92
+ /* @__PURE__ */ jsx("span", { className: "sv-quality-picker-option-check", children: /* @__PURE__ */ jsx(CheckIcon, {}) })
93
+ ]
94
+ },
95
+ level.height
96
+ );
97
+ })
98
+ ] })
99
+ ] });
100
+ }
101
+ var QualityPickerHeadless = memo(QualityPickerHeadlessComponent);
102
+
103
+ export { QUALITY_PICKER_CSS, QualityPickerHeadless };
@@ -0,0 +1,102 @@
1
+ import { BottomSheetHeadless, useBottomSheetContext } from './chunk-PJ4NMVMY.js';
2
+ import { clsx } from 'clsx';
3
+ import { memo, useEffect, useCallback } from 'react';
4
+ import { jsx, jsxs } from 'react/jsx-runtime';
5
+
6
+ // src/components/AdvanceMenu/AdvanceMenu.css.ts
7
+ var ADVANCE_MENU_CSS = `.sv-advance-menu{--sv-advance-menu-bg:rgba(28,28,30,.95);--sv-advance-menu-border:rgba(255,255,255,.1);--sv-advance-menu-text:#fff;--sv-advance-menu-text-secondary:rgba(255,255,255,.6);--sv-advance-menu-backdrop:rgba(0,0,0,.5);--sv-advance-menu-item-hover:rgba(255,255,255,.1);--sv-advance-menu-item-active:rgba(255,255,255,.15);--sv-advance-menu-danger:#ff453a;--sv-advance-menu-icon:rgba(255,255,255,.8);--sv-advance-menu-radius:16px;--sv-advance-menu-item-height:52px;--sv-advance-menu-padding:8px;--sv-advance-menu-icon-size:24px;--sv-advance-menu-gap:12px;--sv-sheet-bg:var(--sv-advance-menu-bg);--sv-sheet-border-radius:var(--sv-advance-menu-radius);--sv-sheet-handle-bg:var(--sv-advance-menu-border)}.sv-advance-menu-backdrop{--sv-sheet-backdrop-bg:var(--sv-advance-menu-backdrop)}.sv-advance-menu-sheet{padding-bottom:env(safe-area-inset-bottom,0)}.sv-advance-menu-items{padding:var(--sv-advance-menu-padding);display:flex;flex-direction:column;gap:2px}.sv-advance-menu-item{display:flex;align-items:center;gap:var(--sv-advance-menu-gap);height:var(--sv-advance-menu-item-height);padding:0 16px;border:0;background:transparent;color:var(--sv-advance-menu-text);font-size:16px;font-weight:normal;text-align:left;cursor:pointer;border-radius:12px;transition:background-color 150ms ease;-webkit-tap-highlight-color:transparent}.sv-advance-menu-item:hover:not(:disabled){background:var(--sv-advance-menu-item-hover)}.sv-advance-menu-item:active:not(:disabled){background:var(--sv-advance-menu-item-active)}.sv-advance-menu-item:disabled{opacity:.5;cursor:not-allowed}.sv-advance-menu-item[data-danger="true"]{color:var(--sv-advance-menu-danger)}.sv-advance-menu-item[data-danger="true"] .sv-advance-menu-item-icon{color:var(--sv-advance-menu-danger)}.sv-advance-menu-item-icon{width:var(--sv-advance-menu-icon-size);height:var(--sv-advance-menu-icon-size);color:var(--sv-advance-menu-icon);flex-shrink:0;display:flex;align-items:center;justify-content:center}.sv-advance-menu-item-icon svg{width:100%;height:100%}.sv-advance-menu-item-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sv-advance-menu-item-value{color:var(--sv-advance-menu-text-secondary);font-size:14px}.sv-advance-menu-separator{height:1px;background:var(--sv-advance-menu-border);margin:8px 16px}.sv-advance-menu-section-title{padding:8px 16px 4px;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--sv-advance-menu-text-secondary)}`;
8
+ var cssInjected = false;
9
+ function injectCSS() {
10
+ if (cssInjected || typeof document === "undefined") return;
11
+ const styleId = "sv-advance-menu-styles";
12
+ if (!document.getElementById(styleId)) {
13
+ const style = document.createElement("style");
14
+ style.id = styleId;
15
+ style.textContent = ADVANCE_MENU_CSS;
16
+ document.head.appendChild(style);
17
+ }
18
+ cssInjected = true;
19
+ }
20
+ function AdvanceMenuHeadlessComponent({
21
+ isOpen,
22
+ onClose,
23
+ children,
24
+ className,
25
+ sheetClassName,
26
+ backdropClassName,
27
+ closeOnBackdropClick = true,
28
+ closeOnEscape = true,
29
+ showDragHandle = true,
30
+ ariaLabel = "Menu"
31
+ }) {
32
+ useEffect(() => {
33
+ injectCSS();
34
+ }, []);
35
+ return /* @__PURE__ */ jsx(
36
+ BottomSheetHeadless,
37
+ {
38
+ isOpen,
39
+ onClose,
40
+ height: "auto",
41
+ className: clsx("sv-advance-menu", "sv-advance-menu-sheet", sheetClassName, className),
42
+ backdropClassName: clsx("sv-advance-menu-backdrop", backdropClassName),
43
+ contentClassName: "sv-advance-menu-items",
44
+ closeOnBackdropClick,
45
+ closeOnEscape,
46
+ showDragHandle,
47
+ ariaLabel,
48
+ children
49
+ }
50
+ );
51
+ }
52
+ function AdvanceMenuItem({
53
+ icon,
54
+ label,
55
+ value,
56
+ onClick,
57
+ disabled = false,
58
+ danger = false,
59
+ className,
60
+ closeOnClick = false
61
+ }) {
62
+ const { onClose } = useBottomSheetContext();
63
+ const handleClick = useCallback(() => {
64
+ if (disabled) return;
65
+ onClick?.();
66
+ if (closeOnClick) {
67
+ onClose();
68
+ }
69
+ }, [disabled, onClick, closeOnClick, onClose]);
70
+ return /* @__PURE__ */ jsxs(
71
+ "button",
72
+ {
73
+ type: "button",
74
+ className: clsx("sv-advance-menu-item", className),
75
+ onClick: handleClick,
76
+ disabled,
77
+ "data-danger": danger,
78
+ role: "menuitem",
79
+ children: [
80
+ icon && /* @__PURE__ */ jsx("span", { className: "sv-advance-menu-item-icon", children: icon }),
81
+ /* @__PURE__ */ jsx("span", { className: "sv-advance-menu-item-label", children: label }),
82
+ value && /* @__PURE__ */ jsx("span", { className: "sv-advance-menu-item-value", children: value })
83
+ ]
84
+ }
85
+ );
86
+ }
87
+ function AdvanceMenuSeparator({ className }) {
88
+ return /* @__PURE__ */ jsx("div", { className: clsx("sv-advance-menu-separator", className) });
89
+ }
90
+ function AdvanceMenuSectionTitle({
91
+ children,
92
+ className
93
+ }) {
94
+ return /* @__PURE__ */ jsx("div", { className: clsx("sv-advance-menu-section-title", className), children });
95
+ }
96
+ var AdvanceMenuHeadless = Object.assign(memo(AdvanceMenuHeadlessComponent), {
97
+ Item: memo(AdvanceMenuItem),
98
+ Separator: memo(AdvanceMenuSeparator),
99
+ SectionTitle: memo(AdvanceMenuSectionTitle)
100
+ });
101
+
102
+ export { ADVANCE_MENU_CSS, AdvanceMenuHeadless };
@@ -0,0 +1 @@
1
+ export { clsx, clsx as clsx2 } from 'clsx';