@gv-tech/ui-web 2.15.2 → 2.17.0

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 (143) hide show
  1. package/README.md +1 -1
  2. package/dist/accordion.cjs +1 -1
  3. package/dist/accordion.mjs +3 -3
  4. package/dist/alert-dialog.cjs +2 -2
  5. package/dist/alert-dialog.mjs +16 -16
  6. package/dist/alert.cjs +1 -1
  7. package/dist/alert.mjs +1 -1
  8. package/dist/avatar.cjs +1 -1
  9. package/dist/avatar.mjs +34 -34
  10. package/dist/badge.cjs +1 -1
  11. package/dist/badge.mjs +1 -1
  12. package/dist/breadcrumb.cjs +1 -1
  13. package/dist/breadcrumb.mjs +1 -1
  14. package/dist/button.cjs +1 -1
  15. package/dist/button.mjs +1 -1
  16. package/dist/calendar.cjs +1 -1
  17. package/dist/calendar.mjs +1 -1
  18. package/dist/card.cjs +1 -1
  19. package/dist/card.mjs +1 -1
  20. package/dist/carousel.cjs +1 -1
  21. package/dist/carousel.mjs +1 -1
  22. package/dist/chart.cjs +1 -1
  23. package/dist/chart.mjs +1 -1
  24. package/dist/checkbox.cjs +1 -1
  25. package/dist/checkbox.mjs +2 -2
  26. package/dist/command.cjs +1 -1
  27. package/dist/command.mjs +114 -114
  28. package/dist/context-menu.cjs +1 -1
  29. package/dist/context-menu.mjs +68 -68
  30. package/dist/dialog.cjs +1 -1
  31. package/dist/dialog.mjs +21 -21
  32. package/dist/drawer.cjs +1 -1
  33. package/dist/drawer.mjs +16 -16
  34. package/dist/dropdown-menu.cjs +1 -1
  35. package/dist/dropdown-menu.mjs +43 -43
  36. package/dist/form.cjs +1 -1
  37. package/dist/form.mjs +1 -1
  38. package/dist/hover-card.cjs +1 -1
  39. package/dist/hover-card.mjs +2 -2
  40. package/dist/index.cjs +1 -1
  41. package/dist/index.d.ts +52 -0
  42. package/dist/index.mjs +101 -95
  43. package/dist/input.cjs +1 -1
  44. package/dist/input.mjs +1 -1
  45. package/dist/label.cjs +1 -1
  46. package/dist/label.mjs +2 -2
  47. package/dist/menubar.cjs +1 -1
  48. package/dist/menubar.mjs +77 -77
  49. package/dist/navigation-menu.cjs +1 -1
  50. package/dist/navigation-menu.mjs +57 -57
  51. package/dist/pagination.cjs +1 -1
  52. package/dist/pagination.mjs +1 -1
  53. package/dist/popover.cjs +1 -1
  54. package/dist/popover.mjs +62 -62
  55. package/dist/progress.cjs +2 -2
  56. package/dist/progress.mjs +2 -2
  57. package/dist/radio-group.cjs +1 -1
  58. package/dist/radio-group.mjs +36 -36
  59. package/dist/resizable.cjs +1 -1
  60. package/dist/resizable.mjs +1 -1
  61. package/dist/scroll-area.cjs +1 -1
  62. package/dist/scroll-area.mjs +88 -88
  63. package/dist/scroll-to-top.cjs +1 -0
  64. package/dist/scroll-to-top.d.ts +12 -0
  65. package/dist/scroll-to-top.mjs +86 -0
  66. package/dist/search.cjs +1 -1
  67. package/dist/search.mjs +1 -1
  68. package/dist/select.cjs +1 -1
  69. package/dist/select.mjs +74 -74
  70. package/dist/separator.cjs +1 -1
  71. package/dist/separator.mjs +9 -9
  72. package/dist/sheet.cjs +1 -1
  73. package/dist/sheet.mjs +12 -12
  74. package/dist/skeleton.cjs +1 -1
  75. package/dist/skeleton.mjs +1 -1
  76. package/dist/slider.cjs +1 -1
  77. package/dist/slider.mjs +2 -2
  78. package/dist/support-fab.cjs +1 -0
  79. package/dist/support-fab.d.ts +20 -0
  80. package/dist/support-fab.mjs +120 -0
  81. package/dist/switch.cjs +1 -1
  82. package/dist/switch.mjs +12 -12
  83. package/dist/table-of-contents.cjs +1 -0
  84. package/dist/table-of-contents.d.ts +35 -0
  85. package/dist/table-of-contents.mjs +160 -0
  86. package/dist/table.cjs +1 -1
  87. package/dist/table.mjs +1 -1
  88. package/dist/tabs.cjs +1 -1
  89. package/dist/tabs.mjs +41 -41
  90. package/dist/text.cjs +1 -1
  91. package/dist/text.mjs +1 -1
  92. package/dist/textarea.cjs +1 -1
  93. package/dist/textarea.mjs +1 -1
  94. package/dist/{theme-toggle-B4VZTDpe.js → theme-toggle-DXQGNfCe.js} +1 -1
  95. package/dist/{theme-toggle-WtPW9UZi.mjs → theme-toggle-tHXIbr8W.mjs} +1 -1
  96. package/dist/theme-toggle.cjs +1 -1
  97. package/dist/theme-toggle.mjs +2 -2
  98. package/dist/toast.cjs +1 -1
  99. package/dist/toast.mjs +35 -35
  100. package/dist/toggle-group.cjs +1 -1
  101. package/dist/toggle-group.mjs +15 -15
  102. package/dist/toggle.cjs +1 -1
  103. package/dist/toggle.mjs +4 -4
  104. package/dist/tooltip.cjs +1 -1
  105. package/dist/tooltip.mjs +3 -3
  106. package/dist/utils-DY6fhrgS.mjs +12 -0
  107. package/dist/utils-cdbZV8DZ.js +1 -0
  108. package/package.json +1 -1
  109. package/src/accordion.tsx +2 -2
  110. package/src/alert-dialog.tsx +6 -6
  111. package/src/avatar.tsx +3 -3
  112. package/src/checkbox.tsx +1 -1
  113. package/src/command.tsx +7 -7
  114. package/src/context-menu.tsx +8 -8
  115. package/src/dialog.tsx +4 -4
  116. package/src/drawer.tsx +3 -3
  117. package/src/dropdown-menu.tsx +8 -8
  118. package/src/hover-card.tsx +1 -1
  119. package/src/index.ts +12 -1
  120. package/src/label.tsx +1 -1
  121. package/src/lib/utils.ts +10 -0
  122. package/src/menubar.tsx +10 -10
  123. package/src/navigation-menu.tsx +6 -6
  124. package/src/popover.tsx +1 -1
  125. package/src/progress.tsx +1 -1
  126. package/src/radio-group.tsx +2 -2
  127. package/src/scroll-area.tsx +2 -2
  128. package/src/scroll-to-top.tsx +134 -0
  129. package/src/select.tsx +7 -7
  130. package/src/separator.tsx +1 -1
  131. package/src/setupTests.ts +1 -1
  132. package/src/sheet.tsx +4 -4
  133. package/src/slider.tsx +1 -1
  134. package/src/support-fab.tsx +190 -0
  135. package/src/switch.tsx +1 -1
  136. package/src/table-of-contents.tsx +285 -0
  137. package/src/tabs.tsx +3 -3
  138. package/src/toast.tsx +6 -6
  139. package/src/toggle-group.tsx +2 -2
  140. package/src/toggle.tsx +1 -1
  141. package/src/tooltip.tsx +2 -2
  142. package/dist/utils-B6yFEsav.mjs +0 -8
  143. package/dist/utils-IjLH3w2e.js +0 -1
package/dist/sheet.mjs CHANGED
@@ -1,11 +1,11 @@
1
1
  "use client";
2
2
  import { j as a } from "./jsx-runtime-tc70JA_2.mjs";
3
- import { O as r, P as x, C as n, a as d, T as l, D as m, R as h, b as u } from "./index-DlY82G31.mjs";
3
+ import { O as r, P as h, C as n, a as d, T as l, D as m, R as x, b as u } from "./index-DlY82G31.mjs";
4
4
  import { cva as g } from "class-variance-authority";
5
5
  import { X as y } from "lucide-react";
6
6
  import * as i from "react";
7
- import { c as o } from "./utils-B6yFEsav.mjs";
8
- const P = h, z = u, F = d, b = x, c = i.forwardRef(({ className: e, ...t }, s) => /* @__PURE__ */ a.jsx(
7
+ import { c as o } from "./utils-DY6fhrgS.mjs";
8
+ const P = x, z = u, F = d, b = h, c = i.forwardRef(({ className: e, ...t }, s) => /* @__PURE__ */ a.jsx(
9
9
  r,
10
10
  {
11
11
  className: o(
@@ -16,7 +16,7 @@ const P = h, z = u, F = d, b = x, c = i.forwardRef(({ className: e, ...t }, s) =
16
16
  ref: s
17
17
  }
18
18
  ));
19
- c.displayName = r.displayName;
19
+ c.displayName = r?.displayName || "SheetOverlay";
20
20
  const N = g(
21
21
  "fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 data-[state=open]:animate-in data-[state=closed]:animate-out",
22
22
  {
@@ -32,7 +32,7 @@ const N = g(
32
32
  side: "right"
33
33
  }
34
34
  }
35
- ), j = i.forwardRef(
35
+ ), S = i.forwardRef(
36
36
  ({ side: e = "right", className: t, children: s, ...f }, p) => /* @__PURE__ */ a.jsxs(b, { children: [
37
37
  /* @__PURE__ */ a.jsx(c, {}),
38
38
  /* @__PURE__ */ a.jsxs(n, { ref: p, className: o(N({ side: e }), t), ...f, children: [
@@ -44,22 +44,22 @@ const N = g(
44
44
  ] })
45
45
  ] })
46
46
  );
47
- j.displayName = n.displayName;
48
- const S = ({ className: e, ...t }) => /* @__PURE__ */ a.jsx("div", { className: o("flex flex-col space-y-2 text-center sm:text-left", e), ...t });
49
- S.displayName = "SheetHeader";
47
+ S.displayName = n?.displayName || "SheetContent";
48
+ const j = ({ className: e, ...t }) => /* @__PURE__ */ a.jsx("div", { className: o("flex flex-col space-y-2 text-center sm:text-left", e), ...t });
49
+ j.displayName = "SheetHeader";
50
50
  const w = ({ className: e, ...t }) => /* @__PURE__ */ a.jsx("div", { className: o("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", e), ...t });
51
51
  w.displayName = "SheetFooter";
52
52
  const v = i.forwardRef(({ className: e, ...t }, s) => /* @__PURE__ */ a.jsx(l, { ref: s, className: o("text-foreground text-lg font-semibold", e), ...t }));
53
- v.displayName = l.displayName;
53
+ v.displayName = l?.displayName || "SheetTitle";
54
54
  const R = i.forwardRef(({ className: e, ...t }, s) => /* @__PURE__ */ a.jsx(m, { ref: s, className: o("text-muted-foreground text-sm", e), ...t }));
55
- R.displayName = m.displayName;
55
+ R.displayName = m?.displayName || "SheetDescription";
56
56
  export {
57
57
  P as Sheet,
58
58
  F as SheetClose,
59
- j as SheetContent,
59
+ S as SheetContent,
60
60
  R as SheetDescription,
61
61
  w as SheetFooter,
62
- S as SheetHeader,
62
+ j as SheetHeader,
63
63
  c as SheetOverlay,
64
64
  b as SheetPortal,
65
65
  v as SheetTitle,
package/dist/skeleton.cjs CHANGED
@@ -1 +1 @@
1
- "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("./jsx-runtime-nZSsnGb7.js"),r=require("./utils-IjLH3w2e.js");function i({className:e,...t}){return n.jsxRuntimeExports.jsx("div",{className:r.cn("bg-primary/10 animate-pulse rounded-md",e),...t})}exports.Skeleton=i;
1
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("./jsx-runtime-nZSsnGb7.js"),r=require("./utils-cdbZV8DZ.js");function i({className:e,...t}){return n.jsxRuntimeExports.jsx("div",{className:r.cn("bg-primary/10 animate-pulse rounded-md",e),...t})}exports.Skeleton=i;
package/dist/skeleton.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { j as t } from "./jsx-runtime-tc70JA_2.mjs";
3
- import { c as m } from "./utils-B6yFEsav.mjs";
3
+ import { c as m } from "./utils-DY6fhrgS.mjs";
4
4
  function s({ className: e, ...r }) {
5
5
  return /* @__PURE__ */ t.jsx("div", { className: m("bg-primary/10 animate-pulse rounded-md", e), ...r });
6
6
  }
package/dist/slider.cjs CHANGED
@@ -1 +1 @@
1
- "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("./jsx-runtime-nZSsnGb7.js"),le=require("react"),L=require("./index-C8ni3LLa.js"),E=require("./index-BtZvtDmp.js"),C=require("./index-_XxjJPRD.js"),de=require("./index-D2HnlO3y.js"),ue=require("./index-Ce5TOFAK.js"),fe=require("./index-Dko2XdTk.js"),me=require("./index-DYxWvftI.js"),pe=require("./index-Cjj_rUPu.js"),xe=require("./index-BGIK9FQF.js"),Se=require("./utils-IjLH3w2e.js");function he(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const n in e)if(n!=="default"){const o=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,o.get?o:{enumerable:!0,get:()=>e[n]})}}return t.default=e,Object.freeze(t)}const l=he(le);var U=["PageUp","PageDown"],F=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],Y={"from-left":["Home","PageDown","ArrowDown","ArrowLeft"],"from-right":["Home","PageDown","ArrowDown","ArrowRight"],"from-bottom":["Home","PageDown","ArrowDown","ArrowLeft"],"from-top":["Home","PageDown","ArrowUp","ArrowLeft"]},_="Slider",[k,ge,ve]=xe.createCollection(_),[X]=de.createContextScope(_,[ve]),[Re,A]=X(_),G=l.forwardRef((e,t)=>{const{name:n,min:o=0,max:i=100,step:c=1,orientation:r="horizontal",disabled:a=!1,minStepsBetweenThumbs:f=0,defaultValue:v=[o],value:S,onValueChange:s=()=>{},onValueCommit:u=()=>{},inverted:g=!1,form:w,...h}=e,p=l.useRef(new Set),m=l.useRef(0),R=r==="horizontal"?be:we,[x=[],M]=ue.useControllableState({prop:S,defaultProp:v,onChange:b=>{[...p.current][m.current]?.focus(),s(b)}}),T=l.useRef(x);function V(b){const y=De(x,b);K(b,y)}function ae(b){K(b,m.current)}function ce(){const b=T.current[m.current];x[m.current]!==b&&u(x)}function K(b,y,{commit:B}={commit:!1}){const $=Ke(c),N=Ie(Math.round((b-o)/c)*c+o,$),I=L.clamp(N,[o,i]);M((D=[])=>{const P=Pe(D,I,y);if(Me(P,f*c)){m.current=P.indexOf(I);const q=String(P)!==String(D);return q&&B&&u(P),q?P:D}else return D})}return d.jsxRuntimeExports.jsx(Re,{scope:e.__scopeSlider,name:n,disabled:a,min:o,max:i,valueIndexToChangeRef:m,thumbs:p.current,values:x,orientation:r,form:w,children:d.jsxRuntimeExports.jsx(k.Provider,{scope:e.__scopeSlider,children:d.jsxRuntimeExports.jsx(k.Slot,{scope:e.__scopeSlider,children:d.jsxRuntimeExports.jsx(R,{"aria-disabled":a,"data-disabled":a?"":void 0,...h,ref:t,onPointerDown:E.composeEventHandlers(h.onPointerDown,()=>{a||(T.current=x)}),min:o,max:i,inverted:g,onSlideStart:a?void 0:V,onSlideMove:a?void 0:ae,onSlideEnd:a?void 0:ce,onHomeKeyDown:()=>!a&&K(o,0,{commit:!0}),onEndKeyDown:()=>!a&&K(i,x.length-1,{commit:!0}),onStepKeyDown:({event:b,direction:y})=>{if(!a){const N=U.includes(b.key)||b.shiftKey&&F.includes(b.key)?10:1,I=m.current,D=x[I],P=c*N*y;K(D+P,I,{commit:!0})}}})})})})});G.displayName=_;var[W,J]=X(_,{startEdge:"left",endEdge:"right",size:"width",direction:1}),be=l.forwardRef((e,t)=>{const{min:n,max:o,dir:i,inverted:c,onSlideStart:r,onSlideMove:a,onSlideEnd:f,onStepKeyDown:v,...S}=e,[s,u]=l.useState(null),g=C.useComposedRefs(t,R=>u(R)),w=l.useRef(void 0),h=fe.useDirection(i),p=h==="ltr",m=p&&!c||!p&&c;function j(R){const x=w.current||s.getBoundingClientRect(),M=[0,x.width],V=z(M,m?[n,o]:[o,n]);return w.current=x,V(R-x.left)}return d.jsxRuntimeExports.jsx(W,{scope:e.__scopeSlider,startEdge:m?"left":"right",endEdge:m?"right":"left",direction:m?1:-1,size:"width",children:d.jsxRuntimeExports.jsx(Q,{dir:h,"data-orientation":"horizontal",...S,ref:g,style:{...S.style,"--radix-slider-thumb-transform":"translateX(-50%)"},onSlideStart:R=>{const x=j(R.clientX);r?.(x)},onSlideMove:R=>{const x=j(R.clientX);a?.(x)},onSlideEnd:()=>{w.current=void 0,f?.()},onStepKeyDown:R=>{const M=Y[m?"from-left":"from-right"].includes(R.key);v?.({event:R,direction:M?-1:1})}})})}),we=l.forwardRef((e,t)=>{const{min:n,max:o,inverted:i,onSlideStart:c,onSlideMove:r,onSlideEnd:a,onStepKeyDown:f,...v}=e,S=l.useRef(null),s=C.useComposedRefs(t,S),u=l.useRef(void 0),g=!i;function w(h){const p=u.current||S.current.getBoundingClientRect(),m=[0,p.height],R=z(m,g?[o,n]:[n,o]);return u.current=p,R(h-p.top)}return d.jsxRuntimeExports.jsx(W,{scope:e.__scopeSlider,startEdge:g?"bottom":"top",endEdge:g?"top":"bottom",size:"height",direction:g?1:-1,children:d.jsxRuntimeExports.jsx(Q,{"data-orientation":"vertical",...v,ref:s,style:{...v.style,"--radix-slider-thumb-transform":"translateY(50%)"},onSlideStart:h=>{const p=w(h.clientY);c?.(p)},onSlideMove:h=>{const p=w(h.clientY);r?.(p)},onSlideEnd:()=>{u.current=void 0,a?.()},onStepKeyDown:h=>{const m=Y[g?"from-bottom":"from-top"].includes(h.key);f?.({event:h,direction:m?-1:1})}})})}),Q=l.forwardRef((e,t)=>{const{__scopeSlider:n,onSlideStart:o,onSlideMove:i,onSlideEnd:c,onHomeKeyDown:r,onEndKeyDown:a,onStepKeyDown:f,...v}=e,S=A(_,n);return d.jsxRuntimeExports.jsx(E.Primitive.span,{...v,ref:t,onKeyDown:E.composeEventHandlers(e.onKeyDown,s=>{s.key==="Home"?(r(s),s.preventDefault()):s.key==="End"?(a(s),s.preventDefault()):U.concat(F).includes(s.key)&&(f(s),s.preventDefault())}),onPointerDown:E.composeEventHandlers(e.onPointerDown,s=>{const u=s.target;u.setPointerCapture(s.pointerId),s.preventDefault(),S.thumbs.has(u)?u.focus():o(s)}),onPointerMove:E.composeEventHandlers(e.onPointerMove,s=>{s.target.hasPointerCapture(s.pointerId)&&i(s)}),onPointerUp:E.composeEventHandlers(e.onPointerUp,s=>{const u=s.target;u.hasPointerCapture(s.pointerId)&&(u.releasePointerCapture(s.pointerId),c(s))})})}),Z="SliderTrack",ee=l.forwardRef((e,t)=>{const{__scopeSlider:n,...o}=e,i=A(Z,n);return d.jsxRuntimeExports.jsx(E.Primitive.span,{"data-disabled":i.disabled?"":void 0,"data-orientation":i.orientation,...o,ref:t})});ee.displayName=Z;var H="SliderRange",te=l.forwardRef((e,t)=>{const{__scopeSlider:n,...o}=e,i=A(H,n),c=J(H,n),r=l.useRef(null),a=C.useComposedRefs(t,r),f=i.values.length,v=i.values.map(u=>re(u,i.min,i.max)),S=f>1?Math.min(...v):0,s=100-Math.max(...v);return d.jsxRuntimeExports.jsx(E.Primitive.span,{"data-orientation":i.orientation,"data-disabled":i.disabled?"":void 0,...o,ref:a,style:{...e.style,[c.startEdge]:S+"%",[c.endEdge]:s+"%"}})});te.displayName=H;var O="SliderThumb",ne=l.forwardRef((e,t)=>{const n=ge(e.__scopeSlider),[o,i]=l.useState(null),c=C.useComposedRefs(t,a=>i(a)),r=l.useMemo(()=>o?n().findIndex(a=>a.ref.current===o):-1,[n,o]);return d.jsxRuntimeExports.jsx(Ee,{...e,ref:c,index:r})}),Ee=l.forwardRef((e,t)=>{const{__scopeSlider:n,index:o,name:i,...c}=e,r=A(O,n),a=J(O,n),[f,v]=l.useState(null),S=C.useComposedRefs(t,j=>v(j)),s=f?r.form||!!f.closest("form"):!0,u=pe.useSize(f),g=r.values[o],w=g===void 0?0:re(g,r.min,r.max),h=je(o,r.values.length),p=u?.[a.size],m=p?Ce(p,w,a.direction):0;return l.useEffect(()=>{if(f)return r.thumbs.add(f),()=>{r.thumbs.delete(f)}},[f,r.thumbs]),d.jsxRuntimeExports.jsxs("span",{style:{transform:"var(--radix-slider-thumb-transform)",position:"absolute",[a.startEdge]:`calc(${w}% + ${m}px)`},children:[d.jsxRuntimeExports.jsx(k.ItemSlot,{scope:e.__scopeSlider,children:d.jsxRuntimeExports.jsx(E.Primitive.span,{role:"slider","aria-label":e["aria-label"]||h,"aria-valuemin":r.min,"aria-valuenow":g,"aria-valuemax":r.max,"aria-orientation":r.orientation,"data-orientation":r.orientation,"data-disabled":r.disabled?"":void 0,tabIndex:r.disabled?void 0:0,...c,ref:S,style:g===void 0?{display:"none"}:e.style,onFocus:E.composeEventHandlers(e.onFocus,()=>{r.valueIndexToChangeRef.current=o})})}),s&&d.jsxRuntimeExports.jsx(oe,{name:i??(r.name?r.name+(r.values.length>1?"[]":""):void 0),form:r.form,value:g},o)]})});ne.displayName=O;var ye="RadioBubbleInput",oe=l.forwardRef(({__scopeSlider:e,value:t,...n},o)=>{const i=l.useRef(null),c=C.useComposedRefs(i,o),r=me.usePrevious(t);return l.useEffect(()=>{const a=i.current;if(!a)return;const f=window.HTMLInputElement.prototype,S=Object.getOwnPropertyDescriptor(f,"value").set;if(r!==t&&S){const s=new Event("input",{bubbles:!0});S.call(a,t),a.dispatchEvent(s)}},[r,t]),d.jsxRuntimeExports.jsx(E.Primitive.input,{style:{display:"none"},...n,ref:c,defaultValue:t})});oe.displayName=ye;function Pe(e=[],t,n){const o=[...e];return o[n]=t,o.sort((i,c)=>i-c)}function re(e,t,n){const c=100/(n-t)*(e-t);return L.clamp(c,[0,100])}function je(e,t){return t>2?`Value ${e+1} of ${t}`:t===2?["Minimum","Maximum"][e]:void 0}function De(e,t){if(e.length===1)return 0;const n=e.map(i=>Math.abs(i-t)),o=Math.min(...n);return n.indexOf(o)}function Ce(e,t,n){const o=e/2,c=z([0,50],[0,o]);return(o-c(t)*n)*n}function _e(e){return e.slice(0,-1).map((t,n)=>e[n+1]-t)}function Me(e,t){if(t>0){const n=_e(e);return Math.min(...n)>=t}return!0}function z(e,t){return n=>{if(e[0]===e[1]||t[0]===t[1])return t[0];const o=(t[1]-t[0])/(e[1]-e[0]);return t[0]+o*(n-e[0])}}function Ke(e){return(String(e).split(".")[1]||"").length}function Ie(e,t){const n=Math.pow(10,t);return Math.round(e*n)/n}var se=G,Ae=ee,Te=te,Ve=ne;const ie=l.forwardRef(({className:e,...t},n)=>d.jsxRuntimeExports.jsxs(se,{ref:n,className:Se.cn("relative flex w-full touch-none items-center select-none",e),...t,children:[d.jsxRuntimeExports.jsx(Ae,{className:"bg-primary/20 relative h-1.5 w-full grow overflow-hidden rounded-full",children:d.jsxRuntimeExports.jsx(Te,{className:"bg-primary absolute h-full"})}),d.jsxRuntimeExports.jsx(Ve,{className:"border-primary/50 bg-background focus-visible:ring-ring block h-4 w-4 rounded-full border shadow transition-colors focus-visible:ring-1 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50"})]}));ie.displayName=se.displayName;exports.Slider=ie;
1
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("./jsx-runtime-nZSsnGb7.js"),le=require("react"),L=require("./index-C8ni3LLa.js"),E=require("./index-BtZvtDmp.js"),C=require("./index-_XxjJPRD.js"),de=require("./index-D2HnlO3y.js"),ue=require("./index-Ce5TOFAK.js"),fe=require("./index-Dko2XdTk.js"),me=require("./index-DYxWvftI.js"),pe=require("./index-Cjj_rUPu.js"),xe=require("./index-BGIK9FQF.js"),Se=require("./utils-cdbZV8DZ.js");function he(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const n in e)if(n!=="default"){const o=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,o.get?o:{enumerable:!0,get:()=>e[n]})}}return t.default=e,Object.freeze(t)}const l=he(le);var U=["PageUp","PageDown"],F=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],Y={"from-left":["Home","PageDown","ArrowDown","ArrowLeft"],"from-right":["Home","PageDown","ArrowDown","ArrowRight"],"from-bottom":["Home","PageDown","ArrowDown","ArrowLeft"],"from-top":["Home","PageDown","ArrowUp","ArrowLeft"]},_="Slider",[k,ge,ve]=xe.createCollection(_),[X]=de.createContextScope(_,[ve]),[Re,A]=X(_),G=l.forwardRef((e,t)=>{const{name:n,min:o=0,max:i=100,step:c=1,orientation:r="horizontal",disabled:a=!1,minStepsBetweenThumbs:f=0,defaultValue:v=[o],value:S,onValueChange:s=()=>{},onValueCommit:u=()=>{},inverted:g=!1,form:w,...h}=e,p=l.useRef(new Set),m=l.useRef(0),R=r==="horizontal"?be:we,[x=[],M]=ue.useControllableState({prop:S,defaultProp:v,onChange:b=>{[...p.current][m.current]?.focus(),s(b)}}),T=l.useRef(x);function V(b){const y=De(x,b);K(b,y)}function ae(b){K(b,m.current)}function ce(){const b=T.current[m.current];x[m.current]!==b&&u(x)}function K(b,y,{commit:B}={commit:!1}){const $=Ke(c),N=Ie(Math.round((b-o)/c)*c+o,$),I=L.clamp(N,[o,i]);M((D=[])=>{const P=Pe(D,I,y);if(Me(P,f*c)){m.current=P.indexOf(I);const q=String(P)!==String(D);return q&&B&&u(P),q?P:D}else return D})}return d.jsxRuntimeExports.jsx(Re,{scope:e.__scopeSlider,name:n,disabled:a,min:o,max:i,valueIndexToChangeRef:m,thumbs:p.current,values:x,orientation:r,form:w,children:d.jsxRuntimeExports.jsx(k.Provider,{scope:e.__scopeSlider,children:d.jsxRuntimeExports.jsx(k.Slot,{scope:e.__scopeSlider,children:d.jsxRuntimeExports.jsx(R,{"aria-disabled":a,"data-disabled":a?"":void 0,...h,ref:t,onPointerDown:E.composeEventHandlers(h.onPointerDown,()=>{a||(T.current=x)}),min:o,max:i,inverted:g,onSlideStart:a?void 0:V,onSlideMove:a?void 0:ae,onSlideEnd:a?void 0:ce,onHomeKeyDown:()=>!a&&K(o,0,{commit:!0}),onEndKeyDown:()=>!a&&K(i,x.length-1,{commit:!0}),onStepKeyDown:({event:b,direction:y})=>{if(!a){const N=U.includes(b.key)||b.shiftKey&&F.includes(b.key)?10:1,I=m.current,D=x[I],P=c*N*y;K(D+P,I,{commit:!0})}}})})})})});G.displayName=_;var[W,J]=X(_,{startEdge:"left",endEdge:"right",size:"width",direction:1}),be=l.forwardRef((e,t)=>{const{min:n,max:o,dir:i,inverted:c,onSlideStart:r,onSlideMove:a,onSlideEnd:f,onStepKeyDown:v,...S}=e,[s,u]=l.useState(null),g=C.useComposedRefs(t,R=>u(R)),w=l.useRef(void 0),h=fe.useDirection(i),p=h==="ltr",m=p&&!c||!p&&c;function j(R){const x=w.current||s.getBoundingClientRect(),M=[0,x.width],V=z(M,m?[n,o]:[o,n]);return w.current=x,V(R-x.left)}return d.jsxRuntimeExports.jsx(W,{scope:e.__scopeSlider,startEdge:m?"left":"right",endEdge:m?"right":"left",direction:m?1:-1,size:"width",children:d.jsxRuntimeExports.jsx(Q,{dir:h,"data-orientation":"horizontal",...S,ref:g,style:{...S.style,"--radix-slider-thumb-transform":"translateX(-50%)"},onSlideStart:R=>{const x=j(R.clientX);r?.(x)},onSlideMove:R=>{const x=j(R.clientX);a?.(x)},onSlideEnd:()=>{w.current=void 0,f?.()},onStepKeyDown:R=>{const M=Y[m?"from-left":"from-right"].includes(R.key);v?.({event:R,direction:M?-1:1})}})})}),we=l.forwardRef((e,t)=>{const{min:n,max:o,inverted:i,onSlideStart:c,onSlideMove:r,onSlideEnd:a,onStepKeyDown:f,...v}=e,S=l.useRef(null),s=C.useComposedRefs(t,S),u=l.useRef(void 0),g=!i;function w(h){const p=u.current||S.current.getBoundingClientRect(),m=[0,p.height],R=z(m,g?[o,n]:[n,o]);return u.current=p,R(h-p.top)}return d.jsxRuntimeExports.jsx(W,{scope:e.__scopeSlider,startEdge:g?"bottom":"top",endEdge:g?"top":"bottom",size:"height",direction:g?1:-1,children:d.jsxRuntimeExports.jsx(Q,{"data-orientation":"vertical",...v,ref:s,style:{...v.style,"--radix-slider-thumb-transform":"translateY(50%)"},onSlideStart:h=>{const p=w(h.clientY);c?.(p)},onSlideMove:h=>{const p=w(h.clientY);r?.(p)},onSlideEnd:()=>{u.current=void 0,a?.()},onStepKeyDown:h=>{const m=Y[g?"from-bottom":"from-top"].includes(h.key);f?.({event:h,direction:m?-1:1})}})})}),Q=l.forwardRef((e,t)=>{const{__scopeSlider:n,onSlideStart:o,onSlideMove:i,onSlideEnd:c,onHomeKeyDown:r,onEndKeyDown:a,onStepKeyDown:f,...v}=e,S=A(_,n);return d.jsxRuntimeExports.jsx(E.Primitive.span,{...v,ref:t,onKeyDown:E.composeEventHandlers(e.onKeyDown,s=>{s.key==="Home"?(r(s),s.preventDefault()):s.key==="End"?(a(s),s.preventDefault()):U.concat(F).includes(s.key)&&(f(s),s.preventDefault())}),onPointerDown:E.composeEventHandlers(e.onPointerDown,s=>{const u=s.target;u.setPointerCapture(s.pointerId),s.preventDefault(),S.thumbs.has(u)?u.focus():o(s)}),onPointerMove:E.composeEventHandlers(e.onPointerMove,s=>{s.target.hasPointerCapture(s.pointerId)&&i(s)}),onPointerUp:E.composeEventHandlers(e.onPointerUp,s=>{const u=s.target;u.hasPointerCapture(s.pointerId)&&(u.releasePointerCapture(s.pointerId),c(s))})})}),Z="SliderTrack",ee=l.forwardRef((e,t)=>{const{__scopeSlider:n,...o}=e,i=A(Z,n);return d.jsxRuntimeExports.jsx(E.Primitive.span,{"data-disabled":i.disabled?"":void 0,"data-orientation":i.orientation,...o,ref:t})});ee.displayName=Z;var H="SliderRange",te=l.forwardRef((e,t)=>{const{__scopeSlider:n,...o}=e,i=A(H,n),c=J(H,n),r=l.useRef(null),a=C.useComposedRefs(t,r),f=i.values.length,v=i.values.map(u=>re(u,i.min,i.max)),S=f>1?Math.min(...v):0,s=100-Math.max(...v);return d.jsxRuntimeExports.jsx(E.Primitive.span,{"data-orientation":i.orientation,"data-disabled":i.disabled?"":void 0,...o,ref:a,style:{...e.style,[c.startEdge]:S+"%",[c.endEdge]:s+"%"}})});te.displayName=H;var O="SliderThumb",ne=l.forwardRef((e,t)=>{const n=ge(e.__scopeSlider),[o,i]=l.useState(null),c=C.useComposedRefs(t,a=>i(a)),r=l.useMemo(()=>o?n().findIndex(a=>a.ref.current===o):-1,[n,o]);return d.jsxRuntimeExports.jsx(Ee,{...e,ref:c,index:r})}),Ee=l.forwardRef((e,t)=>{const{__scopeSlider:n,index:o,name:i,...c}=e,r=A(O,n),a=J(O,n),[f,v]=l.useState(null),S=C.useComposedRefs(t,j=>v(j)),s=f?r.form||!!f.closest("form"):!0,u=pe.useSize(f),g=r.values[o],w=g===void 0?0:re(g,r.min,r.max),h=je(o,r.values.length),p=u?.[a.size],m=p?Ce(p,w,a.direction):0;return l.useEffect(()=>{if(f)return r.thumbs.add(f),()=>{r.thumbs.delete(f)}},[f,r.thumbs]),d.jsxRuntimeExports.jsxs("span",{style:{transform:"var(--radix-slider-thumb-transform)",position:"absolute",[a.startEdge]:`calc(${w}% + ${m}px)`},children:[d.jsxRuntimeExports.jsx(k.ItemSlot,{scope:e.__scopeSlider,children:d.jsxRuntimeExports.jsx(E.Primitive.span,{role:"slider","aria-label":e["aria-label"]||h,"aria-valuemin":r.min,"aria-valuenow":g,"aria-valuemax":r.max,"aria-orientation":r.orientation,"data-orientation":r.orientation,"data-disabled":r.disabled?"":void 0,tabIndex:r.disabled?void 0:0,...c,ref:S,style:g===void 0?{display:"none"}:e.style,onFocus:E.composeEventHandlers(e.onFocus,()=>{r.valueIndexToChangeRef.current=o})})}),s&&d.jsxRuntimeExports.jsx(oe,{name:i??(r.name?r.name+(r.values.length>1?"[]":""):void 0),form:r.form,value:g},o)]})});ne.displayName=O;var ye="RadioBubbleInput",oe=l.forwardRef(({__scopeSlider:e,value:t,...n},o)=>{const i=l.useRef(null),c=C.useComposedRefs(i,o),r=me.usePrevious(t);return l.useEffect(()=>{const a=i.current;if(!a)return;const f=window.HTMLInputElement.prototype,S=Object.getOwnPropertyDescriptor(f,"value").set;if(r!==t&&S){const s=new Event("input",{bubbles:!0});S.call(a,t),a.dispatchEvent(s)}},[r,t]),d.jsxRuntimeExports.jsx(E.Primitive.input,{style:{display:"none"},...n,ref:c,defaultValue:t})});oe.displayName=ye;function Pe(e=[],t,n){const o=[...e];return o[n]=t,o.sort((i,c)=>i-c)}function re(e,t,n){const c=100/(n-t)*(e-t);return L.clamp(c,[0,100])}function je(e,t){return t>2?`Value ${e+1} of ${t}`:t===2?["Minimum","Maximum"][e]:void 0}function De(e,t){if(e.length===1)return 0;const n=e.map(i=>Math.abs(i-t)),o=Math.min(...n);return n.indexOf(o)}function Ce(e,t,n){const o=e/2,c=z([0,50],[0,o]);return(o-c(t)*n)*n}function _e(e){return e.slice(0,-1).map((t,n)=>e[n+1]-t)}function Me(e,t){if(t>0){const n=_e(e);return Math.min(...n)>=t}return!0}function z(e,t){return n=>{if(e[0]===e[1]||t[0]===t[1])return t[0];const o=(t[1]-t[0])/(e[1]-e[0]);return t[0]+o*(n-e[0])}}function Ke(e){return(String(e).split(".")[1]||"").length}function Ie(e,t){const n=Math.pow(10,t);return Math.round(e*n)/n}var se=G,Ae=ee,Te=te,Ve=ne;const ie=l.forwardRef(({className:e,...t},n)=>d.jsxRuntimeExports.jsxs(se,{ref:n,className:Se.cn("relative flex w-full touch-none items-center select-none",e),...t,children:[d.jsxRuntimeExports.jsx(Ae,{className:"bg-primary/20 relative h-1.5 w-full grow overflow-hidden rounded-full",children:d.jsxRuntimeExports.jsx(Te,{className:"bg-primary absolute h-full"})}),d.jsxRuntimeExports.jsx(Ve,{className:"border-primary/50 bg-background focus-visible:ring-ring block h-4 w-4 rounded-full border shadow transition-colors focus-visible:ring-1 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50"})]}));ie.displayName=se?.displayName||"Slider";exports.Slider=ie;
package/dist/slider.mjs CHANGED
@@ -10,7 +10,7 @@ import { u as ue } from "./index-CD6_IrA-.mjs";
10
10
  import { u as fe } from "./index-BZPx6jYI.mjs";
11
11
  import { u as me } from "./index-C1qb0595.mjs";
12
12
  import { c as pe } from "./index-DFdF7K7v.mjs";
13
- import { c as Se } from "./utils-B6yFEsav.mjs";
13
+ import { c as Se } from "./utils-DY6fhrgS.mjs";
14
14
  var $ = ["PageUp", "PageDown"], X = ["ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight"], G = {
15
15
  "from-left": ["Home", "PageDown", "ArrowDown", "ArrowLeft"],
16
16
  "from-right": ["Home", "PageDown", "ArrowDown", "ArrowRight"],
@@ -437,7 +437,7 @@ const Ve = c.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ d.jsxs(
437
437
  ]
438
438
  }
439
439
  ));
440
- Ve.displayName = se.displayName;
440
+ Ve.displayName = se?.displayName || "Slider";
441
441
  export {
442
442
  Ve as Slider
443
443
  };
@@ -0,0 +1 @@
1
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./jsx-runtime-nZSsnGb7.js"),g=require("lucide-react"),P=require("react"),z=require("./button.cjs"),a=require("./dialog.cjs"),c=require("./drawer.cjs"),x=require("./utils-cdbZV8DZ.js");function I(t){const s=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const n in t)if(n!=="default"){const r=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(s,n,r.get?r:{enumerable:!0,get:()=>t[n]})}}return s.default=t,Object.freeze(s)}const i=I(P),w="(max-width: 767px)",E=t=>{const s=t.trim();return s.endsWith("/")?s.slice(0,-1):s},R=t=>t.trim().replace(/^@+/,""),U=(t,s)=>{const n=E(t),r=encodeURIComponent(R(s));return`${n}/${r}`},F=(t,s)=>{const n=E(t),r=encodeURIComponent(R(s));return`${n}/widget/page/${r}`},L=()=>{const t=()=>typeof window>"u"||typeof window.matchMedia!="function"?!1:window.matchMedia(w).matches,[s,n]=i.useState(t);return i.useEffect(()=>{if(typeof window>"u"||typeof window.matchMedia!="function")return;const r=window.matchMedia(w),l=u=>n(u.matches);return n(r.matches),r.addEventListener("change",l),()=>{r.removeEventListener("change",l)}},[]),s};function T({supportUrl:t="https://www.buymeacoffee.com",creatorId:s,title:n="Buy me a coffee",description:r="Support the project directly from this panel.",iframeTitle:l="Buy Me a Coffee support form",open:u,defaultOpen:y=!1,onOpenChange:p,positionClassName:v,buttonClassName:M,panelClassName:f,className:D,type:N,onClick:C,...O}){const S=L(),d=u!==void 0,[_,k]=i.useState(y),j=d?u:_,m=i.useCallback(o=>{d||k(o),p?.(o)},[d,p]),q=i.useMemo(()=>U(t,s),[s,t]),B=i.useMemo(()=>F(t,s),[s,t]),h=e.jsxRuntimeExports.jsxs("div",{className:"flex max-h-[75vh] flex-col gap-3",children:[e.jsxRuntimeExports.jsx("div",{className:"overflow-hidden rounded-md border",children:e.jsxRuntimeExports.jsx("iframe",{title:l,src:B,className:"h-[560px] w-full border-0",loading:"lazy",referrerPolicy:"strict-origin-when-cross-origin"})}),e.jsxRuntimeExports.jsxs("div",{className:"text-muted-foreground flex items-center justify-between gap-2 text-xs",children:[e.jsxRuntimeExports.jsx("span",{children:"If the embedded checkout is unavailable, open the support page directly."}),e.jsxRuntimeExports.jsxs("a",{href:q,target:"_blank",rel:"noopener noreferrer",className:"text-foreground inline-flex items-center gap-1 font-medium underline underline-offset-2",children:["Open Buy Me a Coffee",e.jsxRuntimeExports.jsx(g.ExternalLink,{className:"h-3.5 w-3.5"})]})]})]}),b=e.jsxRuntimeExports.jsx("div",{className:x.cn("fixed right-6 bottom-6 z-50",v),children:e.jsxRuntimeExports.jsxs(z.Button,{"aria-label":"Support this project",type:N??"button",className:x.cn("inline-flex h-14 w-14 rounded-full border border-black/15 bg-[#ffdd00] text-black shadow-[0_16px_36px_-18px_rgba(0,0,0,0.8)] transition hover:-translate-y-0.5 hover:scale-105 hover:bg-[#ffe347] focus-visible:ring-2 focus-visible:ring-offset-2 active:translate-y-0 active:scale-95",M,D),onClick:o=>{C?.(o),o.defaultPrevented||m(!0)},...O,children:[e.jsxRuntimeExports.jsx(g.Coffee,{className:"h-6 w-6"}),e.jsxRuntimeExports.jsx("span",{className:"sr-only",children:"Support this project"})]})});return S?e.jsxRuntimeExports.jsxs(e.jsxRuntimeExports.Fragment,{children:[b,e.jsxRuntimeExports.jsx(c.Drawer,{open:j,onOpenChange:m,children:e.jsxRuntimeExports.jsxs(c.DrawerContent,{className:x.cn("mx-auto w-full max-w-xl",f),children:[e.jsxRuntimeExports.jsxs(c.DrawerHeader,{children:[e.jsxRuntimeExports.jsx(c.DrawerTitle,{children:n}),e.jsxRuntimeExports.jsx(c.DrawerDescription,{children:r})]}),e.jsxRuntimeExports.jsx("div",{className:"px-4 pb-4",children:h})]})})]}):e.jsxRuntimeExports.jsxs(e.jsxRuntimeExports.Fragment,{children:[b,e.jsxRuntimeExports.jsx(a.Dialog,{open:j,onOpenChange:m,children:e.jsxRuntimeExports.jsxs(a.DialogContent,{className:x.cn("max-w-xl p-5",f),children:[e.jsxRuntimeExports.jsxs(a.DialogHeader,{children:[e.jsxRuntimeExports.jsx(a.DialogTitle,{children:n}),e.jsxRuntimeExports.jsx(a.DialogDescription,{children:r})]}),h]})})]})}exports.SupportFab=T;
@@ -0,0 +1,20 @@
1
+ import { JSX } from 'react/jsx-runtime';
2
+ import * as React_2 from 'react';
3
+
4
+ export declare function SupportFab({ supportUrl, creatorId, title, description, iframeTitle, open, defaultOpen, onOpenChange, positionClassName, buttonClassName, panelClassName, className, type, onClick, ...buttonProps }: SupportFabProps): JSX.Element;
5
+
6
+ export declare interface SupportFabProps extends Omit<React_2.ButtonHTMLAttributes<HTMLButtonElement>, 'onChange'> {
7
+ supportUrl?: string;
8
+ creatorId: string;
9
+ title?: string;
10
+ description?: string;
11
+ iframeTitle?: string;
12
+ open?: boolean;
13
+ defaultOpen?: boolean;
14
+ onOpenChange?: (open: boolean) => void;
15
+ positionClassName?: string;
16
+ buttonClassName?: string;
17
+ panelClassName?: string;
18
+ }
19
+
20
+ export { }
@@ -0,0 +1,120 @@
1
+ "use client";
2
+ import { j as e } from "./jsx-runtime-tc70JA_2.mjs";
3
+ import { Coffee as _, ExternalLink as I } from "lucide-react";
4
+ import * as o from "react";
5
+ import { Button as R } from "./button.mjs";
6
+ import { Dialog as U, DialogContent as z, DialogHeader as L, DialogTitle as $, DialogDescription as F } from "./dialog.mjs";
7
+ import { Drawer as P, DrawerContent as H, DrawerHeader as Q, DrawerTitle as T, DrawerDescription as W } from "./drawer.mjs";
8
+ import { c as l } from "./utils-DY6fhrgS.mjs";
9
+ const g = "(max-width: 767px)", w = (t) => {
10
+ const n = t.trim();
11
+ return n.endsWith("/") ? n.slice(0, -1) : n;
12
+ }, b = (t) => t.trim().replace(/^@+/, ""), Y = (t, n) => {
13
+ const s = w(t), r = encodeURIComponent(b(n));
14
+ return `${s}/${r}`;
15
+ }, q = (t, n) => {
16
+ const s = w(t), r = encodeURIComponent(b(n));
17
+ return `${s}/widget/page/${r}`;
18
+ }, A = () => {
19
+ const t = () => typeof window > "u" || typeof window.matchMedia != "function" ? !1 : window.matchMedia(g).matches, [n, s] = o.useState(t);
20
+ return o.useEffect(() => {
21
+ if (typeof window > "u" || typeof window.matchMedia != "function")
22
+ return;
23
+ const r = window.matchMedia(g), a = (c) => s(c.matches);
24
+ return s(r.matches), r.addEventListener("change", a), () => {
25
+ r.removeEventListener("change", a);
26
+ };
27
+ }, []), n;
28
+ };
29
+ function ee({
30
+ supportUrl: t = "https://www.buymeacoffee.com",
31
+ creatorId: n,
32
+ title: s = "Buy me a coffee",
33
+ description: r = "Support the project directly from this panel.",
34
+ iframeTitle: a = "Buy Me a Coffee support form",
35
+ open: c,
36
+ defaultOpen: j = !1,
37
+ onOpenChange: f,
38
+ positionClassName: v,
39
+ buttonClassName: y,
40
+ panelClassName: h,
41
+ className: M,
42
+ type: C,
43
+ onClick: D,
44
+ ...N
45
+ }) {
46
+ const E = A(), d = c !== void 0, [k, B] = o.useState(j), u = d ? c : k, m = o.useCallback(
47
+ (i) => {
48
+ d || B(i), f?.(i);
49
+ },
50
+ [d, f]
51
+ ), O = o.useMemo(() => Y(t, n), [n, t]), S = o.useMemo(() => q(t, n), [n, t]), p = /* @__PURE__ */ e.jsxs("div", { className: "flex max-h-[75vh] flex-col gap-3", children: [
52
+ /* @__PURE__ */ e.jsx("div", { className: "overflow-hidden rounded-md border", children: /* @__PURE__ */ e.jsx(
53
+ "iframe",
54
+ {
55
+ title: a,
56
+ src: S,
57
+ className: "h-[560px] w-full border-0",
58
+ loading: "lazy",
59
+ referrerPolicy: "strict-origin-when-cross-origin"
60
+ }
61
+ ) }),
62
+ /* @__PURE__ */ e.jsxs("div", { className: "text-muted-foreground flex items-center justify-between gap-2 text-xs", children: [
63
+ /* @__PURE__ */ e.jsx("span", { children: "If the embedded checkout is unavailable, open the support page directly." }),
64
+ /* @__PURE__ */ e.jsxs(
65
+ "a",
66
+ {
67
+ href: O,
68
+ target: "_blank",
69
+ rel: "noopener noreferrer",
70
+ className: "text-foreground inline-flex items-center gap-1 font-medium underline underline-offset-2",
71
+ children: [
72
+ "Open Buy Me a Coffee",
73
+ /* @__PURE__ */ e.jsx(I, { className: "h-3.5 w-3.5" })
74
+ ]
75
+ }
76
+ )
77
+ ] })
78
+ ] }), x = /* @__PURE__ */ e.jsx("div", { className: l("fixed right-6 bottom-6 z-50", v), children: /* @__PURE__ */ e.jsxs(
79
+ R,
80
+ {
81
+ "aria-label": "Support this project",
82
+ type: C ?? "button",
83
+ className: l(
84
+ "inline-flex h-14 w-14 rounded-full border border-black/15 bg-[#ffdd00] text-black shadow-[0_16px_36px_-18px_rgba(0,0,0,0.8)] transition hover:-translate-y-0.5 hover:scale-105 hover:bg-[#ffe347] focus-visible:ring-2 focus-visible:ring-offset-2 active:translate-y-0 active:scale-95",
85
+ y,
86
+ M
87
+ ),
88
+ onClick: (i) => {
89
+ D?.(i), i.defaultPrevented || m(!0);
90
+ },
91
+ ...N,
92
+ children: [
93
+ /* @__PURE__ */ e.jsx(_, { className: "h-6 w-6" }),
94
+ /* @__PURE__ */ e.jsx("span", { className: "sr-only", children: "Support this project" })
95
+ ]
96
+ }
97
+ ) });
98
+ return E ? /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
99
+ x,
100
+ /* @__PURE__ */ e.jsx(P, { open: u, onOpenChange: m, children: /* @__PURE__ */ e.jsxs(H, { className: l("mx-auto w-full max-w-xl", h), children: [
101
+ /* @__PURE__ */ e.jsxs(Q, { children: [
102
+ /* @__PURE__ */ e.jsx(T, { children: s }),
103
+ /* @__PURE__ */ e.jsx(W, { children: r })
104
+ ] }),
105
+ /* @__PURE__ */ e.jsx("div", { className: "px-4 pb-4", children: p })
106
+ ] }) })
107
+ ] }) : /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
108
+ x,
109
+ /* @__PURE__ */ e.jsx(U, { open: u, onOpenChange: m, children: /* @__PURE__ */ e.jsxs(z, { className: l("max-w-xl p-5", h), children: [
110
+ /* @__PURE__ */ e.jsxs(L, { children: [
111
+ /* @__PURE__ */ e.jsx($, { children: s }),
112
+ /* @__PURE__ */ e.jsx(F, { children: r })
113
+ ] }),
114
+ p
115
+ ] }) })
116
+ ] });
117
+ }
118
+ export {
119
+ ee as SupportFab
120
+ };
package/dist/switch.cjs CHANGED
@@ -1 +1 @@
1
- "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("./jsx-runtime-nZSsnGb7.js"),B=require("react"),S=require("./index-BtZvtDmp.js"),j=require("./index-_XxjJPRD.js"),M=require("./index-D2HnlO3y.js"),I=require("./index-Ce5TOFAK.js"),$=require("./index-DYxWvftI.js"),H=require("./index-Cjj_rUPu.js"),R=require("./utils-IjLH3w2e.js");function z(t){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const e in t)if(e!=="default"){const o=Object.getOwnPropertyDescriptor(t,e);Object.defineProperty(r,e,o.get?o:{enumerable:!0,get:()=>t[e]})}}return r.default=t,Object.freeze(r)}const n=z(B);var b="Switch",[A]=M.createContextScope(b),[D,U]=A(b),y=n.forwardRef((t,r)=>{const{__scopeSwitch:e,name:o,checked:s,defaultChecked:m,required:u,disabled:c,value:d="on",onCheckedChange:x,form:a,...v}=t,[l,p]=n.useState(null),w=j.useComposedRefs(r,h=>p(h)),g=n.useRef(!1),k=l?a||!!l.closest("form"):!0,[f,T]=I.useControllableState({prop:s,defaultProp:m??!1,onChange:x,caller:b});return i.jsxRuntimeExports.jsxs(D,{scope:e,checked:f,disabled:c,children:[i.jsxRuntimeExports.jsx(S.Primitive.button,{type:"button",role:"switch","aria-checked":f,"aria-required":u,"data-state":_(f),"data-disabled":c?"":void 0,disabled:c,value:d,...v,ref:w,onClick:S.composeEventHandlers(t.onClick,h=>{T(O=>!O),k&&(g.current=h.isPropagationStopped(),g.current||h.stopPropagation())})}),k&&i.jsxRuntimeExports.jsx(P,{control:l,bubbles:!g.current,name:o,value:d,checked:f,required:u,disabled:c,form:a,style:{transform:"translateX(-100%)"}})]})});y.displayName=b;var C="SwitchThumb",E=n.forwardRef((t,r)=>{const{__scopeSwitch:e,...o}=t,s=U(C,e);return i.jsxRuntimeExports.jsx(S.Primitive.span,{"data-state":_(s.checked),"data-disabled":s.disabled?"":void 0,...o,ref:r})});E.displayName=C;var L="SwitchBubbleInput",P=n.forwardRef(({__scopeSwitch:t,control:r,checked:e,bubbles:o=!0,...s},m)=>{const u=n.useRef(null),c=j.useComposedRefs(u,m),d=$.usePrevious(e),x=H.useSize(r);return n.useEffect(()=>{const a=u.current;if(!a)return;const v=window.HTMLInputElement.prototype,p=Object.getOwnPropertyDescriptor(v,"checked").set;if(d!==e&&p){const w=new Event("click",{bubbles:o});p.call(a,e),a.dispatchEvent(w)}},[d,e,o]),i.jsxRuntimeExports.jsx("input",{type:"checkbox","aria-hidden":!0,defaultChecked:e,...s,tabIndex:-1,ref:c,style:{...s.style,...x,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});P.displayName=L;function _(t){return t?"checked":"unchecked"}var N=y,F=E;const q=n.forwardRef(({className:t,...r},e)=>i.jsxRuntimeExports.jsx(N,{className:R.cn("peer focus-visible:ring-ring focus-visible:ring-offset-background data-[state=checked]:bg-primary data-[state=unchecked]:bg-input inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50",t),...r,ref:e,children:i.jsxRuntimeExports.jsx(F,{className:R.cn("bg-background pointer-events-none block h-4 w-4 rounded-full shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0")})}));q.displayName=N.displayName;exports.Switch=q;
1
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("./jsx-runtime-nZSsnGb7.js"),B=require("react"),g=require("./index-BtZvtDmp.js"),j=require("./index-_XxjJPRD.js"),M=require("./index-D2HnlO3y.js"),I=require("./index-Ce5TOFAK.js"),$=require("./index-DYxWvftI.js"),H=require("./index-Cjj_rUPu.js"),R=require("./utils-cdbZV8DZ.js");function z(t){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const e in t)if(e!=="default"){const o=Object.getOwnPropertyDescriptor(t,e);Object.defineProperty(r,e,o.get?o:{enumerable:!0,get:()=>t[e]})}}return r.default=t,Object.freeze(r)}const n=z(B);var b="Switch",[A]=M.createContextScope(b),[D,U]=A(b),y=n.forwardRef((t,r)=>{const{__scopeSwitch:e,name:o,checked:s,defaultChecked:m,required:u,disabled:c,value:d="on",onCheckedChange:x,form:a,...w}=t,[l,p]=n.useState(null),v=j.useComposedRefs(r,h=>p(h)),S=n.useRef(!1),k=l?a||!!l.closest("form"):!0,[f,T]=I.useControllableState({prop:s,defaultProp:m??!1,onChange:x,caller:b});return i.jsxRuntimeExports.jsxs(D,{scope:e,checked:f,disabled:c,children:[i.jsxRuntimeExports.jsx(g.Primitive.button,{type:"button",role:"switch","aria-checked":f,"aria-required":u,"data-state":_(f),"data-disabled":c?"":void 0,disabled:c,value:d,...w,ref:v,onClick:g.composeEventHandlers(t.onClick,h=>{T(O=>!O),k&&(S.current=h.isPropagationStopped(),S.current||h.stopPropagation())})}),k&&i.jsxRuntimeExports.jsx(P,{control:l,bubbles:!S.current,name:o,value:d,checked:f,required:u,disabled:c,form:a,style:{transform:"translateX(-100%)"}})]})});y.displayName=b;var C="SwitchThumb",E=n.forwardRef((t,r)=>{const{__scopeSwitch:e,...o}=t,s=U(C,e);return i.jsxRuntimeExports.jsx(g.Primitive.span,{"data-state":_(s.checked),"data-disabled":s.disabled?"":void 0,...o,ref:r})});E.displayName=C;var L="SwitchBubbleInput",P=n.forwardRef(({__scopeSwitch:t,control:r,checked:e,bubbles:o=!0,...s},m)=>{const u=n.useRef(null),c=j.useComposedRefs(u,m),d=$.usePrevious(e),x=H.useSize(r);return n.useEffect(()=>{const a=u.current;if(!a)return;const w=window.HTMLInputElement.prototype,p=Object.getOwnPropertyDescriptor(w,"checked").set;if(d!==e&&p){const v=new Event("click",{bubbles:o});p.call(a,e),a.dispatchEvent(v)}},[d,e,o]),i.jsxRuntimeExports.jsx("input",{type:"checkbox","aria-hidden":!0,defaultChecked:e,...s,tabIndex:-1,ref:c,style:{...s.style,...x,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});P.displayName=L;function _(t){return t?"checked":"unchecked"}var N=y,F=E;const q=n.forwardRef(({className:t,...r},e)=>i.jsxRuntimeExports.jsx(N,{className:R.cn("peer focus-visible:ring-ring focus-visible:ring-offset-background data-[state=checked]:bg-primary data-[state=unchecked]:bg-input inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50",t),...r,ref:e,children:i.jsxRuntimeExports.jsx(F,{className:R.cn("bg-background pointer-events-none block h-4 w-4 rounded-full shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0")})}));q.displayName=N?.displayName||"Switch";exports.Switch=q;
package/dist/switch.mjs CHANGED
@@ -7,8 +7,8 @@ import { c as M } from "./index-IZ2gq03c.mjs";
7
7
  import { u as H } from "./index-p6xVFRb4.mjs";
8
8
  import { u as A } from "./index-BZPx6jYI.mjs";
9
9
  import { u as U } from "./index-C1qb0595.mjs";
10
- import { c as x } from "./utils-B6yFEsav.mjs";
11
- var h = "Switch", [q] = M(h), [z, L] = q(h), P = o.forwardRef(
10
+ import { c as x } from "./utils-DY6fhrgS.mjs";
11
+ var m = "Switch", [q] = M(m), [z, L] = q(m), P = o.forwardRef(
12
12
  (t, r) => {
13
13
  const {
14
14
  __scopeSwitch: e,
@@ -21,11 +21,11 @@ var h = "Switch", [q] = M(h), [z, L] = q(h), P = o.forwardRef(
21
21
  onCheckedChange: w,
22
22
  form: i,
23
23
  ...v
24
- } = t, [l, p] = o.useState(null), k = y(r, (m) => p(m)), S = o.useRef(!1), g = l ? i || !!l.closest("form") : !0, [f, B] = H({
24
+ } = t, [l, p] = o.useState(null), S = y(r, (h) => p(h)), k = o.useRef(!1), g = l ? i || !!l.closest("form") : !0, [f, B] = H({
25
25
  prop: s,
26
26
  defaultProp: b ?? !1,
27
27
  onChange: w,
28
- caller: h
28
+ caller: m
29
29
  });
30
30
  return /* @__PURE__ */ a.jsxs(z, { scope: e, checked: f, disabled: c, children: [
31
31
  /* @__PURE__ */ a.jsx(
@@ -40,9 +40,9 @@ var h = "Switch", [q] = M(h), [z, L] = q(h), P = o.forwardRef(
40
40
  disabled: c,
41
41
  value: u,
42
42
  ...v,
43
- ref: k,
44
- onClick: I(t.onClick, (m) => {
45
- B((T) => !T), g && (S.current = m.isPropagationStopped(), S.current || m.stopPropagation());
43
+ ref: S,
44
+ onClick: I(t.onClick, (h) => {
45
+ B((T) => !T), g && (k.current = h.isPropagationStopped(), k.current || h.stopPropagation());
46
46
  })
47
47
  }
48
48
  ),
@@ -50,7 +50,7 @@ var h = "Switch", [q] = M(h), [z, L] = q(h), P = o.forwardRef(
50
50
  N,
51
51
  {
52
52
  control: l,
53
- bubbles: !S.current,
53
+ bubbles: !k.current,
54
54
  name: n,
55
55
  value: u,
56
56
  checked: f,
@@ -63,7 +63,7 @@ var h = "Switch", [q] = M(h), [z, L] = q(h), P = o.forwardRef(
63
63
  ] });
64
64
  }
65
65
  );
66
- P.displayName = h;
66
+ P.displayName = m;
67
67
  var R = "SwitchThumb", E = o.forwardRef(
68
68
  (t, r) => {
69
69
  const { __scopeSwitch: e, ...n } = t, s = L(R, e);
@@ -96,8 +96,8 @@ var O = "SwitchBubbleInput", N = o.forwardRef(
96
96
  "checked"
97
97
  ).set;
98
98
  if (u !== e && p) {
99
- const k = new Event("click", { bubbles: n });
100
- p.call(i, e), i.dispatchEvent(k);
99
+ const S = new Event("click", { bubbles: n });
100
+ p.call(i, e), i.dispatchEvent(S);
101
101
  }
102
102
  }, [u, e, n]), /* @__PURE__ */ a.jsx(
103
103
  "input",
@@ -144,7 +144,7 @@ const F = o.forwardRef(({ className: t, ...r }, e) => /* @__PURE__ */ a.jsx(
144
144
  )
145
145
  }
146
146
  ));
147
- F.displayName = _.displayName;
147
+ F.displayName = _?.displayName || "Switch";
148
148
  export {
149
149
  F as Switch
150
150
  };
@@ -0,0 +1 @@
1
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./jsx-runtime-nZSsnGb7.js"),O=require("react"),h=require("./utils-cdbZV8DZ.js");function C(n){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(n){for(const i in n)if(i!=="default"){const a=Object.getOwnPropertyDescriptor(n,i);Object.defineProperty(r,i,a.get?a:{enumerable:!0,get:()=>n[i]})}}return r.default=n,Object.freeze(r)}const l=C(O),E=l.createContext(null);function R(){const n=l.useContext(E);if(!n)throw new Error("TOC components must be used within a TableOfContents provider");return n}function b({children:n,className:r,activeId:i,minLevel:a=1,maxLevel:s=4,selector:x="h1, h2, h3, h4, h5, h6"}){const[u,f]=l.useState([]),[t,d]=l.useState(null),p=l.useMemo(()=>u.find(o=>o.id===t)?.text||null,[u,t]),c=l.useCallback(o=>{f(j=>JSON.stringify(j)===JSON.stringify(o)?j:o)},[]),m=l.useMemo(()=>({headings:u,activeId:i||t,activeHeadingText:p,registerHeadings:c,setActiveId:d,config:{minLevel:a,maxLevel:s,selector:x,className:r}}),[u,t,i,p,c,a,s,x,r]);return e.jsxRuntimeExports.jsx(E.Provider,{value:m,children:e.jsxRuntimeExports.jsx("div",{className:h.cn("relative",r),children:n||e.jsxRuntimeExports.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxRuntimeExports.jsx(v,{}),e.jsxRuntimeExports.jsx(g,{children:null})]})})})}function v({className:n}){const{headings:r,activeId:i,activeHeadingText:a}=R(),[s,x]=l.useState(!1);if(l.useEffect(()=>{if(!s)return;const t=()=>{x(!1)};return window.addEventListener("scroll",t,{passive:!0}),()=>window.removeEventListener("scroll",t)},[s]),r.length===0)return null;const u=Math.min(...r.map(t=>t.level)),f=e.jsxRuntimeExports.jsx("ul",{className:"m-0 list-none text-sm",children:r.map(t=>{const d=i===t.id,p=`${(t.level-u)*1}rem`;return e.jsxRuntimeExports.jsx("li",{className:"mt-0 pt-2",children:e.jsxRuntimeExports.jsx("a",{href:`#${t.id}`,onClick:()=>x(!1),className:h.cn("hover:text-foreground inline-block no-underline transition-colors",d?"text-primary font-medium":"text-muted-foreground"),style:{paddingLeft:p},children:t.text})},t.id)})});return e.jsxRuntimeExports.jsxs(e.jsxRuntimeExports.Fragment,{children:[e.jsxRuntimeExports.jsxs("div",{className:h.cn("bg-background/95 sticky top-0 z-40 border-b backdrop-blur xl:hidden",n),children:[e.jsxRuntimeExports.jsxs("button",{onClick:()=>x(!s),className:"flex w-full items-center justify-between px-4 py-3 text-left",children:[e.jsxRuntimeExports.jsxs("div",{className:"flex items-center gap-2 overflow-hidden",children:[e.jsxRuntimeExports.jsx("span",{className:"text-muted-foreground text-xs font-semibold tracking-wider uppercase",children:"On this page:"}),e.jsxRuntimeExports.jsx("span",{className:"truncate text-sm font-medium",children:a||"Overview"})]}),e.jsxRuntimeExports.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:h.cn("shrink-0 transition-transform duration-200",s&&"rotate-180"),children:e.jsxRuntimeExports.jsx("path",{d:"m6 9 6 6 6-6"})})]}),s&&e.jsxRuntimeExports.jsx("div",{className:"bg-background border-t px-4 pt-2 pb-6",children:e.jsxRuntimeExports.jsx("nav",{"aria-label":"Table of contents mobile",children:f})})]}),e.jsxRuntimeExports.jsx("nav",{className:h.cn("hidden xl:block",n),"aria-label":"Table of contents",children:f})]})}function g({children:n,className:r}){const{registerHeadings:i,setActiveId:a,config:s}=R(),x=l.useRef(null);return l.useEffect(()=>{const u=x.current;if(!u)return;const f=()=>{const c=Array.from(u.querySelectorAll(s.selector||"h1, h2, h3, h4, h5, h6")).filter(o=>{const j=parseInt(o.tagName.charAt(1),10);return j>=(s.minLevel??1)&&j<=(s.maxLevel??4)}),m=c.map(o=>(o.id||(o.id=h.slugify(o.textContent||"heading")),{id:o.id,text:o.textContent||"",level:parseInt(o.tagName.charAt(1),10)}));return i(m),c},t=f(),d=new IntersectionObserver(c=>{c.forEach(m=>{m.isIntersecting&&a(m.target.id)})},{rootMargin:"0px 0px -80% 0px",threshold:.1});t.forEach(c=>d.observe(c));const p=new MutationObserver(()=>{const c=f();d.disconnect(),c.forEach(m=>d.observe(m))});return p.observe(u,{childList:!0,subtree:!0,characterData:!0}),()=>{d.disconnect(),p.disconnect()}},[s.selector,s.minLevel,s.maxLevel,i,a]),e.jsxRuntimeExports.jsx("div",{ref:x,className:r,children:n})}b.List=v;b.Content=g;exports.TableOfContents=b;exports.TableOfContentsContent=g;exports.TableOfContentsList=v;
@@ -0,0 +1,35 @@
1
+ import { JSX } from 'react/jsx-runtime';
2
+ import { TableOfContentsContentBaseProps as TableOfContentsContentProps } from '../../ui-core/src';
3
+ import { TableOfContentsListBaseProps as TableOfContentsListProps } from '../../ui-core/src';
4
+ import { TableOfContentsRootBaseProps } from '../../ui-core/src';
5
+
6
+ /**
7
+ * Root component that provides the Table of Contents context.
8
+ * Can be used as a wrapper OR standalone.
9
+ * If used as a wrapper: <TableOfContents><List /><Content>{children}</Content></TableOfContents>
10
+ * If used standalone: <TableOfContents /> (requires container ref or defaults to document)
11
+ */
12
+ export declare function TableOfContents({ children, className, activeId: activeIdOverride, minLevel, maxLevel, selector, }: TableOfContentsProps): JSX.Element;
13
+
14
+ export declare namespace TableOfContents {
15
+ var List: typeof TableOfContentsList;
16
+ var Content: typeof TableOfContentsContent;
17
+ }
18
+
19
+ /**
20
+ * Wraps the content area and automatically detects headings within it.
21
+ */
22
+ export declare function TableOfContentsContent({ children, className }: TableOfContentsContentProps): JSX.Element;
23
+
24
+ export { TableOfContentsContentProps }
25
+
26
+ /**
27
+ * Renders the actual list of links.
28
+ */
29
+ export declare function TableOfContentsList({ className }: TableOfContentsListProps): JSX.Element | null;
30
+
31
+ export { TableOfContentsListProps }
32
+
33
+ export declare type TableOfContentsProps = TableOfContentsRootBaseProps;
34
+
35
+ export { }
@@ -0,0 +1,160 @@
1
+ "use client";
2
+ import { j as e } from "./jsx-runtime-tc70JA_2.mjs";
3
+ import * as i from "react";
4
+ import { c as p, s as k } from "./utils-DY6fhrgS.mjs";
5
+ const g = i.createContext(null);
6
+ function b() {
7
+ const c = i.useContext(g);
8
+ if (!c)
9
+ throw new Error("TOC components must be used within a TableOfContents provider");
10
+ return c;
11
+ }
12
+ function j({
13
+ children: c,
14
+ className: l,
15
+ activeId: f,
16
+ minLevel: x = 1,
17
+ maxLevel: n = 4,
18
+ selector: a = "h1, h2, h3, h4, h5, h6"
19
+ }) {
20
+ const [o, h] = i.useState([]), [t, d] = i.useState(null), m = i.useMemo(() => o.find((s) => s.id === t)?.text || null, [o, t]), r = i.useCallback((s) => {
21
+ h((v) => JSON.stringify(v) === JSON.stringify(s) ? v : s);
22
+ }, []), u = i.useMemo(
23
+ () => ({
24
+ headings: o,
25
+ activeId: f || t,
26
+ activeHeadingText: m,
27
+ registerHeadings: r,
28
+ setActiveId: d,
29
+ config: { minLevel: x, maxLevel: n, selector: a, className: l }
30
+ }),
31
+ [
32
+ o,
33
+ t,
34
+ f,
35
+ m,
36
+ r,
37
+ x,
38
+ n,
39
+ a,
40
+ l
41
+ ]
42
+ );
43
+ return /* @__PURE__ */ e.jsx(g.Provider, { value: u, children: /* @__PURE__ */ e.jsx("div", { className: p("relative", l), children: c || /* @__PURE__ */ e.jsxs("div", { className: "flex flex-col gap-4", children: [
44
+ /* @__PURE__ */ e.jsx(w, {}),
45
+ /* @__PURE__ */ e.jsx(C, { children: null })
46
+ ] }) }) });
47
+ }
48
+ function w({ className: c }) {
49
+ const { headings: l, activeId: f, activeHeadingText: x } = b(), [n, a] = i.useState(!1);
50
+ if (i.useEffect(() => {
51
+ if (!n)
52
+ return;
53
+ const t = () => {
54
+ a(!1);
55
+ };
56
+ return window.addEventListener("scroll", t, { passive: !0 }), () => window.removeEventListener("scroll", t);
57
+ }, [n]), l.length === 0)
58
+ return null;
59
+ const o = Math.min(...l.map((t) => t.level)), h = /* @__PURE__ */ e.jsx("ul", { className: "m-0 list-none text-sm", children: l.map((t) => {
60
+ const d = f === t.id, m = `${(t.level - o) * 1}rem`;
61
+ return /* @__PURE__ */ e.jsx("li", { className: "mt-0 pt-2", children: /* @__PURE__ */ e.jsx(
62
+ "a",
63
+ {
64
+ href: `#${t.id}`,
65
+ onClick: () => a(!1),
66
+ className: p(
67
+ "hover:text-foreground inline-block no-underline transition-colors",
68
+ d ? "text-primary font-medium" : "text-muted-foreground"
69
+ ),
70
+ style: { paddingLeft: m },
71
+ children: t.text
72
+ }
73
+ ) }, t.id);
74
+ }) });
75
+ return /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
76
+ /* @__PURE__ */ e.jsxs("div", { className: p("bg-background/95 sticky top-0 z-40 border-b backdrop-blur xl:hidden", c), children: [
77
+ /* @__PURE__ */ e.jsxs(
78
+ "button",
79
+ {
80
+ onClick: () => a(!n),
81
+ className: "flex w-full items-center justify-between px-4 py-3 text-left",
82
+ children: [
83
+ /* @__PURE__ */ e.jsxs("div", { className: "flex items-center gap-2 overflow-hidden", children: [
84
+ /* @__PURE__ */ e.jsx("span", { className: "text-muted-foreground text-xs font-semibold tracking-wider uppercase", children: "On this page:" }),
85
+ /* @__PURE__ */ e.jsx("span", { className: "truncate text-sm font-medium", children: x || "Overview" })
86
+ ] }),
87
+ /* @__PURE__ */ e.jsx(
88
+ "svg",
89
+ {
90
+ xmlns: "http://www.w3.org/2000/svg",
91
+ width: "16",
92
+ height: "16",
93
+ viewBox: "0 0 24 24",
94
+ fill: "none",
95
+ stroke: "currentColor",
96
+ strokeWidth: "2",
97
+ strokeLinecap: "round",
98
+ strokeLinejoin: "round",
99
+ className: p("shrink-0 transition-transform duration-200", n && "rotate-180"),
100
+ children: /* @__PURE__ */ e.jsx("path", { d: "m6 9 6 6 6-6" })
101
+ }
102
+ )
103
+ ]
104
+ }
105
+ ),
106
+ n && /* @__PURE__ */ e.jsx("div", { className: "bg-background border-t px-4 pt-2 pb-6", children: /* @__PURE__ */ e.jsx("nav", { "aria-label": "Table of contents mobile", children: h }) })
107
+ ] }),
108
+ /* @__PURE__ */ e.jsx("nav", { className: p("hidden xl:block", c), "aria-label": "Table of contents", children: h })
109
+ ] });
110
+ }
111
+ function C({ children: c, className: l }) {
112
+ const { registerHeadings: f, setActiveId: x, config: n } = b(), a = i.useRef(null);
113
+ return i.useEffect(() => {
114
+ const o = a.current;
115
+ if (!o)
116
+ return;
117
+ const h = () => {
118
+ const r = Array.from(o.querySelectorAll(n.selector || "h1, h2, h3, h4, h5, h6")).filter(
119
+ (s) => {
120
+ const v = parseInt(s.tagName.charAt(1), 10);
121
+ return v >= (n.minLevel ?? 1) && v <= (n.maxLevel ?? 4);
122
+ }
123
+ ), u = r.map((s) => (s.id || (s.id = k(s.textContent || "heading")), {
124
+ id: s.id,
125
+ text: s.textContent || "",
126
+ level: parseInt(s.tagName.charAt(1), 10)
127
+ }));
128
+ return f(u), r;
129
+ }, t = h(), d = new IntersectionObserver(
130
+ (r) => {
131
+ r.forEach((u) => {
132
+ u.isIntersecting && x(u.target.id);
133
+ });
134
+ },
135
+ {
136
+ rootMargin: "0px 0px -80% 0px",
137
+ threshold: 0.1
138
+ }
139
+ );
140
+ t.forEach((r) => d.observe(r));
141
+ const m = new MutationObserver(() => {
142
+ const r = h();
143
+ d.disconnect(), r.forEach((u) => d.observe(u));
144
+ });
145
+ return m.observe(o, {
146
+ childList: !0,
147
+ subtree: !0,
148
+ characterData: !0
149
+ }), () => {
150
+ d.disconnect(), m.disconnect();
151
+ };
152
+ }, [n.selector, n.minLevel, n.maxLevel, f, x]), /* @__PURE__ */ e.jsx("div", { ref: a, className: l, children: c });
153
+ }
154
+ j.List = w;
155
+ j.Content = C;
156
+ export {
157
+ j as TableOfContents,
158
+ C as TableOfContentsContent,
159
+ w as TableOfContentsList
160
+ };
package/dist/table.cjs CHANGED
@@ -1 +1 @@
1
- "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./jsx-runtime-nZSsnGb7.js"),f=require("react"),r=require("./utils-IjLH3w2e.js");function p(e){const a=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const l=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(a,t,l.get?l:{enumerable:!0,get:()=>e[t]})}}return a.default=e,Object.freeze(a)}const s=p(f),n=s.forwardRef(({className:e,...a},t)=>o.jsxRuntimeExports.jsx("div",{className:"relative w-full overflow-auto",children:o.jsxRuntimeExports.jsx("table",{ref:t,className:r.cn("w-full caption-bottom text-sm",e),...a})}));n.displayName="Table";const c=s.forwardRef(({className:e,...a},t)=>o.jsxRuntimeExports.jsx("thead",{ref:t,className:r.cn("[&_tr]:border-b",e),...a}));c.displayName="TableHeader";const d=s.forwardRef(({className:e,...a},t)=>o.jsxRuntimeExports.jsx("tbody",{ref:t,className:r.cn("[&_tr:last-child]:border-0",e),...a}));d.displayName="TableBody";const i=s.forwardRef(({className:e,...a},t)=>o.jsxRuntimeExports.jsx("tfoot",{ref:t,className:r.cn("bg-muted/50 border-t font-medium [&>tr]:last:border-b-0",e),...a}));i.displayName="TableFooter";const b=s.forwardRef(({className:e,...a},t)=>o.jsxRuntimeExports.jsx("tr",{ref:t,className:r.cn("hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors",e),...a}));b.displayName="TableRow";const m=s.forwardRef(({className:e,...a},t)=>o.jsxRuntimeExports.jsx("th",{ref:t,className:r.cn("text-muted-foreground h-10 px-2 text-left align-middle font-medium [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",e),...a}));m.displayName="TableHead";const u=s.forwardRef(({className:e,...a},t)=>o.jsxRuntimeExports.jsx("td",{ref:t,className:r.cn("p-2 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",e),...a}));u.displayName="TableCell";const x=s.forwardRef(({className:e,...a},t)=>o.jsxRuntimeExports.jsx("caption",{ref:t,className:r.cn("text-muted-foreground mt-4 text-sm",e),...a}));x.displayName="TableCaption";exports.Table=n;exports.TableBody=d;exports.TableCaption=x;exports.TableCell=u;exports.TableFooter=i;exports.TableHead=m;exports.TableHeader=c;exports.TableRow=b;
1
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./jsx-runtime-nZSsnGb7.js"),f=require("react"),r=require("./utils-cdbZV8DZ.js");function p(e){const a=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const l=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(a,t,l.get?l:{enumerable:!0,get:()=>e[t]})}}return a.default=e,Object.freeze(a)}const s=p(f),n=s.forwardRef(({className:e,...a},t)=>o.jsxRuntimeExports.jsx("div",{className:"relative w-full overflow-auto",children:o.jsxRuntimeExports.jsx("table",{ref:t,className:r.cn("w-full caption-bottom text-sm",e),...a})}));n.displayName="Table";const c=s.forwardRef(({className:e,...a},t)=>o.jsxRuntimeExports.jsx("thead",{ref:t,className:r.cn("[&_tr]:border-b",e),...a}));c.displayName="TableHeader";const d=s.forwardRef(({className:e,...a},t)=>o.jsxRuntimeExports.jsx("tbody",{ref:t,className:r.cn("[&_tr:last-child]:border-0",e),...a}));d.displayName="TableBody";const i=s.forwardRef(({className:e,...a},t)=>o.jsxRuntimeExports.jsx("tfoot",{ref:t,className:r.cn("bg-muted/50 border-t font-medium [&>tr]:last:border-b-0",e),...a}));i.displayName="TableFooter";const b=s.forwardRef(({className:e,...a},t)=>o.jsxRuntimeExports.jsx("tr",{ref:t,className:r.cn("hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors",e),...a}));b.displayName="TableRow";const m=s.forwardRef(({className:e,...a},t)=>o.jsxRuntimeExports.jsx("th",{ref:t,className:r.cn("text-muted-foreground h-10 px-2 text-left align-middle font-medium [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",e),...a}));m.displayName="TableHead";const u=s.forwardRef(({className:e,...a},t)=>o.jsxRuntimeExports.jsx("td",{ref:t,className:r.cn("p-2 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",e),...a}));u.displayName="TableCell";const x=s.forwardRef(({className:e,...a},t)=>o.jsxRuntimeExports.jsx("caption",{ref:t,className:r.cn("text-muted-foreground mt-4 text-sm",e),...a}));x.displayName="TableCaption";exports.Table=n;exports.TableBody=d;exports.TableCaption=x;exports.TableCell=u;exports.TableFooter=i;exports.TableHead=m;exports.TableHeader=c;exports.TableRow=b;
package/dist/table.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { j as o } from "./jsx-runtime-tc70JA_2.mjs";
3
3
  import * as l from "react";
4
- import { c as s } from "./utils-B6yFEsav.mjs";
4
+ import { c as s } from "./utils-DY6fhrgS.mjs";
5
5
  const r = l.forwardRef(
6
6
  ({ className: e, ...a }, t) => /* @__PURE__ */ o.jsx("div", { className: "relative w-full overflow-auto", children: /* @__PURE__ */ o.jsx("table", { ref: t, className: s("w-full caption-bottom text-sm", e), ...a }) })
7
7
  );