@moontra/moonui 6.1.0 → 6.3.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.
@@ -0,0 +1,33 @@
1
+ 'use client';
2
+
3
+ /** @license MoonUI v1.0.0 - MIT License - https://moonui.dev */
4
+ var B=Object.create;var $=Object.defineProperty;var z=Object.getOwnPropertyDescriptor;var H=Object.getOwnPropertyNames;var W=Object.getPrototypeOf,Y=Object.prototype.hasOwnProperty;var me=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof require<"u"?require:t)[r]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var d=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var G=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of H(t))!Y.call(e,o)&&o!==r&&$(e,o,{get:()=>t[o],enumerable:!(n=z(t,o))||n.enumerable});return e};var he=(e,t,r)=>(r=e!=null?B(W(e)):{},G(t||!e||!e.__esModule?$(r,"default",{value:e,enumerable:!0}):r,e));var b=(e,t,r)=>{if(!t.has(e))throw TypeError("Cannot "+r)};var Se=(e,t,r)=>(b(e,t,"read from private field"),r?r.call(e):t.get(e)),Ee=(e,t,r)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,r)},ke=(e,t,r,n)=>(b(e,t,"write to private field"),n?n.call(e,r):t.set(e,r),r);var V=d(u=>{"use strict";var y=Symbol.for("react.element"),J=Symbol.for("react.portal"),K=Symbol.for("react.fragment"),Q=Symbol.for("react.strict_mode"),X=Symbol.for("react.profiler"),Z=Symbol.for("react.provider"),ee=Symbol.for("react.context"),te=Symbol.for("react.forward_ref"),re=Symbol.for("react.suspense"),ne=Symbol.for("react.memo"),oe=Symbol.for("react.lazy"),j=Symbol.iterator;function ue(e){return e===null||typeof e!="object"?null:(e=j&&e[j]||e["@@iterator"],typeof e=="function"?e:null)}var x={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},P=Object.assign,g={};function p(e,t,r){this.props=e,this.context=t,this.refs=g,this.updater=r||x}p.prototype.isReactComponent={};p.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};p.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function I(){}I.prototype=p.prototype;function E(e,t,r){this.props=e,this.context=t,this.refs=g,this.updater=r||x}var k=E.prototype=new I;k.constructor=E;P(k,p.prototype);k.isPureReactComponent=!0;var O=Array.isArray,q=Object.prototype.hasOwnProperty,R={current:null},N={key:!0,ref:!0,__self:!0,__source:!0};function D(e,t,r){var n,o={},i=null,s=null;if(t!=null)for(n in t.ref!==void 0&&(s=t.ref),t.key!==void 0&&(i=""+t.key),t)q.call(t,n)&&!N.hasOwnProperty(n)&&(o[n]=t[n]);var f=arguments.length-2;if(f===1)o.children=r;else if(1<f){for(var c=Array(f),a=0;a<f;a++)c[a]=arguments[a+2];o.children=c}if(e&&e.defaultProps)for(n in f=e.defaultProps,f)o[n]===void 0&&(o[n]=f[n]);return{$$typeof:y,type:e,key:i,ref:s,props:o,_owner:R.current}}function ie(e,t){return{$$typeof:y,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}function w(e){return typeof e=="object"&&e!==null&&e.$$typeof===y}function se(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(r){return t[r]})}var C=/\/+/g;function S(e,t){return typeof e=="object"&&e!==null&&e.key!=null?se(""+e.key):t.toString(36)}function v(e,t,r,n,o){var i=typeof e;(i==="undefined"||i==="boolean")&&(e=null);var s=!1;if(e===null)s=!0;else switch(i){case"string":case"number":s=!0;break;case"object":switch(e.$$typeof){case y:case J:s=!0}}if(s)return s=e,o=o(s),e=n===""?"."+S(s,0):n,O(o)?(r="",e!=null&&(r=e.replace(C,"$&/")+"/"),v(o,t,r,"",function(a){return a})):o!=null&&(w(o)&&(o=ie(o,r+(!o.key||s&&s.key===o.key?"":(""+o.key).replace(C,"$&/")+"/")+e)),t.push(o)),1;if(s=0,n=n===""?".":n+":",O(e))for(var f=0;f<e.length;f++){i=e[f];var c=n+S(i,f);s+=v(i,t,r,c,o)}else if(c=ue(e),typeof c=="function")for(e=c.call(e),f=0;!(i=e.next()).done;)i=i.value,c=n+S(i,f++),s+=v(i,t,r,c,o);else if(i==="object")throw t=String(e),Error("Objects are not valid as a React child (found: "+(t==="[object Object]"?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.");return s}function _(e,t,r){if(e==null)return e;var n=[],o=0;return v(e,n,"","",function(i){return t.call(r,i,o++)}),n}function ce(e){if(e._status===-1){var t=e._result;t=t(),t.then(function(r){(e._status===0||e._status===-1)&&(e._status=1,e._result=r)},function(r){(e._status===0||e._status===-1)&&(e._status=2,e._result=r)}),e._status===-1&&(e._status=0,e._result=t)}if(e._status===1)return e._result.default;throw e._result}var l={current:null},m={transition:null},fe={ReactCurrentDispatcher:l,ReactCurrentBatchConfig:m,ReactCurrentOwner:R};function T(){throw Error("act(...) is not supported in production builds of React.")}u.Children={map:_,forEach:function(e,t,r){_(e,function(){t.apply(this,arguments)},r)},count:function(e){var t=0;return _(e,function(){t++}),t},toArray:function(e){return _(e,function(t){return t})||[]},only:function(e){if(!w(e))throw Error("React.Children.only expected to receive a single React element child.");return e}};u.Component=p;u.Fragment=K;u.Profiler=X;u.PureComponent=E;u.StrictMode=Q;u.Suspense=re;u.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=fe;u.act=T;u.cloneElement=function(e,t,r){if(e==null)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+e+".");var n=P({},e.props),o=e.key,i=e.ref,s=e._owner;if(t!=null){if(t.ref!==void 0&&(i=t.ref,s=R.current),t.key!==void 0&&(o=""+t.key),e.type&&e.type.defaultProps)var f=e.type.defaultProps;for(c in t)q.call(t,c)&&!N.hasOwnProperty(c)&&(n[c]=t[c]===void 0&&f!==void 0?f[c]:t[c])}var c=arguments.length-2;if(c===1)n.children=r;else if(1<c){f=Array(c);for(var a=0;a<c;a++)f[a]=arguments[a+2];n.children=f}return{$$typeof:y,type:e.type,key:o,ref:i,props:n,_owner:s}};u.createContext=function(e){return e={$$typeof:ee,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null},e.Provider={$$typeof:Z,_context:e},e.Consumer=e};u.createElement=D;u.createFactory=function(e){var t=D.bind(null,e);return t.type=e,t};u.createRef=function(){return{current:null}};u.forwardRef=function(e){return{$$typeof:te,render:e}};u.isValidElement=w;u.lazy=function(e){return{$$typeof:oe,_payload:{_status:-1,_result:e},_init:ce}};u.memo=function(e,t){return{$$typeof:ne,type:e,compare:t===void 0?null:t}};u.startTransition=function(e){var t=m.transition;m.transition={};try{e()}finally{m.transition=t}};u.unstable_act=T;u.useCallback=function(e,t){return l.current.useCallback(e,t)};u.useContext=function(e){return l.current.useContext(e)};u.useDebugValue=function(){};u.useDeferredValue=function(e){return l.current.useDeferredValue(e)};u.useEffect=function(e,t){return l.current.useEffect(e,t)};u.useId=function(){return l.current.useId()};u.useImperativeHandle=function(e,t,r){return l.current.useImperativeHandle(e,t,r)};u.useInsertionEffect=function(e,t){return l.current.useInsertionEffect(e,t)};u.useLayoutEffect=function(e,t){return l.current.useLayoutEffect(e,t)};u.useMemo=function(e,t){return l.current.useMemo(e,t)};u.useReducer=function(e,t,r){return l.current.useReducer(e,t,r)};u.useRef=function(e){return l.current.useRef(e)};u.useState=function(e){return l.current.useState(e)};u.useSyncExternalStore=function(e,t,r){return l.current.useSyncExternalStore(e,t,r)};u.useTransition=function(){return l.current.useTransition()};u.version="18.3.1"});var U=d(($e,L)=>{"use strict";L.exports=V()});var F=d(h=>{"use strict";var le=U(),ae=Symbol.for("react.element"),pe=Symbol.for("react.fragment"),ye=Object.prototype.hasOwnProperty,de=le.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,_e={key:!0,ref:!0,__self:!0,__source:!0};function A(e,t,r){var n,o={},i=null,s=null;r!==void 0&&(i=""+r),t.key!==void 0&&(i=""+t.key),t.ref!==void 0&&(s=t.ref);for(n in t)ye.call(t,n)&&!_e.hasOwnProperty(n)&&(o[n]=t[n]);if(e&&e.defaultProps)for(n in t=e.defaultProps,t)o[n]===void 0&&(o[n]=t[n]);return{$$typeof:ae,type:e,key:i,ref:s,props:o,_owner:de.current}}h.Fragment=pe;h.jsx=A;h.jsxs=A});var ve=d((je,M)=>{"use strict";M.exports=F()});export{me as a,d as b,he as c,Se as d,Ee as e,ke as f,U as g,ve as h};
5
+ /*! Bundled license information:
6
+
7
+ react/cjs/react.production.min.js:
8
+ (**
9
+ * @license React
10
+ * react.production.min.js
11
+ *
12
+ * Copyright (c) Facebook, Inc. and its affiliates.
13
+ *
14
+ * This source code is licensed under the MIT license found in the
15
+ * LICENSE file in the root directory of this source tree.
16
+ *)
17
+
18
+ react/cjs/react-jsx-runtime.production.min.js:
19
+ (**
20
+ * @license React
21
+ * react-jsx-runtime.production.min.js
22
+ *
23
+ * Copyright (c) Facebook, Inc. and its affiliates.
24
+ *
25
+ * This source code is licensed under the MIT license found in the
26
+ * LICENSE file in the root directory of this source tree.
27
+ *)
28
+ */
29
+
30
+ if (typeof window !== 'undefined' && !window.React) {
31
+ console.warn('MoonUI: React not found. Please include React and ReactDOM before MoonUI.');
32
+ }
33
+ //# sourceMappingURL=chunk-VXDFZPDA.global.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/jsx-runtime.js"],"sourcesContent":["/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];c.children=f}if(a&&a.defaultProps)for(d in g=a.defaultProps,g)void 0===c[d]&&(c[d]=g[d]);return{$$typeof:l,type:a,key:k,ref:h,props:c,_owner:K.current}}\nfunction N(a,b){return{$$typeof:l,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===l}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g;function Q(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction R(a,b,e,d,c){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case l:case n:h=!0}}if(h)return h=a,c=c(h),a=\"\"===d?\".\"+Q(h,0):d,I(c)?(e=\"\",null!=a&&(e=a.replace(P,\"$&/\")+\"/\"),R(c,b,e,\"\",function(a){return a})):null!=c&&(O(c)&&(c=N(c,e+(!c.key||h&&h.key===c.key?\"\":(\"\"+c.key).replace(P,\"$&/\")+\"/\")+a)),b.push(c)),1;h=0;d=\"\"===d?\".\":d+\":\";if(I(a))for(var g=0;g<a.length;g++){k=\na[g];var f=d+Q(k,g);h+=R(k,b,e,f,c)}else if(f=A(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=d+Q(k,g++),h+=R(k,b,e,f,c);else if(\"object\"===k)throw b=String(a),Error(\"Objects are not valid as a React child (found: \"+(\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b)+\"). If you meant to render a collection of children, use an array instead.\");return h}\nfunction S(a,b,e){if(null==a)return a;var d=[],c=0;R(a,d,\"\",\"\",function(a){return b.call(e,a,c++)});return d}function T(a){if(-1===a._status){var b=a._result;b=b();b.then(function(b){if(0===a._status||-1===a._status)a._status=1,a._result=b},function(b){if(0===a._status||-1===a._status)a._status=2,a._result=b});-1===a._status&&(a._status=0,a._result=b)}if(1===a._status)return a._result.default;throw a._result;}\nvar U={current:null},V={transition:null},W={ReactCurrentDispatcher:U,ReactCurrentBatchConfig:V,ReactCurrentOwner:K};function X(){throw Error(\"act(...) is not supported in production builds of React.\");}\nexports.Children={map:S,forEach:function(a,b,e){S(a,function(){b.apply(this,arguments)},e)},count:function(a){var b=0;S(a,function(){b++});return b},toArray:function(a){return S(a,function(a){return a})||[]},only:function(a){if(!O(a))throw Error(\"React.Children.only expected to receive a single React element child.\");return a}};exports.Component=E;exports.Fragment=p;exports.Profiler=r;exports.PureComponent=G;exports.StrictMode=q;exports.Suspense=w;\nexports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=W;exports.act=X;\nexports.cloneElement=function(a,b,e){if(null===a||void 0===a)throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \"+a+\".\");var d=C({},a.props),c=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=K.current);void 0!==b.key&&(c=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)J.call(b,f)&&!L.hasOwnProperty(f)&&(d[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)d.children=e;else if(1<f){g=Array(f);\nfor(var m=0;m<f;m++)g[m]=arguments[m+2];d.children=g}return{$$typeof:l,type:a.type,key:c,ref:k,props:d,_owner:h}};exports.createContext=function(a){a={$$typeof:u,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};a.Provider={$$typeof:t,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};\nexports.forwardRef=function(a){return{$$typeof:v,render:a}};exports.isValidElement=O;exports.lazy=function(a){return{$$typeof:y,_payload:{_status:-1,_result:a},_init:T}};exports.memo=function(a,b){return{$$typeof:x,type:a,compare:void 0===b?null:b}};exports.startTransition=function(a){var b=V.transition;V.transition={};try{a()}finally{V.transition=b}};exports.unstable_act=X;exports.useCallback=function(a,b){return U.current.useCallback(a,b)};exports.useContext=function(a){return U.current.useContext(a)};\nexports.useDebugValue=function(){};exports.useDeferredValue=function(a){return U.current.useDeferredValue(a)};exports.useEffect=function(a,b){return U.current.useEffect(a,b)};exports.useId=function(){return U.current.useId()};exports.useImperativeHandle=function(a,b,e){return U.current.useImperativeHandle(a,b,e)};exports.useInsertionEffect=function(a,b){return U.current.useInsertionEffect(a,b)};exports.useLayoutEffect=function(a,b){return U.current.useLayoutEffect(a,b)};\nexports.useMemo=function(a,b){return U.current.useMemo(a,b)};exports.useReducer=function(a,b,e){return U.current.useReducer(a,b,e)};exports.useRef=function(a){return U.current.useRef(a)};exports.useState=function(a){return U.current.useState(a)};exports.useSyncExternalStore=function(a,b,e){return U.current.useSyncExternalStore(a,b,e)};exports.useTransition=function(){return U.current.useTransition()};exports.version=\"18.3.1\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n"],"mappings":"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","names":["require_react_production_min","__commonJSMin","exports","l","n","p","q","r","t","u","v","w","x","y","z","A","a","B","C","D","E","b","e","F","G","H","I","J","K","L","M","d","c","k","h","g","f","m","N","O","escape","P","Q","R","S","T","U","V","W","X","require_react","__commonJSMin","exports","module","require_react_jsx_runtime_production_min","__commonJSMin","exports","f","k","l","m","n","p","q","c","a","g","b","d","e","h","require_jsx_runtime","__commonJSMin","exports","module"]}
@@ -12,4 +12,4 @@ declare function useIntersectionObserver({ threshold, root, rootMargin, freezeOn
12
12
 
13
13
  declare function useLocalStorage<T>(key: string, initialValue: T): [T, (value: T | ((val: T) => T)) => void];
14
14
 
15
- export { type UseIntersectionObserverOptions, useIntersectionObserver, useLocalStorage };
15
+ export { UseIntersectionObserverOptions, useIntersectionObserver, useLocalStorage };
@@ -12,4 +12,4 @@ declare function useIntersectionObserver({ threshold, root, rootMargin, freezeOn
12
12
 
13
13
  declare function useLocalStorage<T>(key: string, initialValue: T): [T, (value: T | ((val: T) => T)) => void];
14
14
 
15
- export { type UseIntersectionObserverOptions, useIntersectionObserver, useLocalStorage };
15
+ export { UseIntersectionObserverOptions, useIntersectionObserver, useLocalStorage };
@@ -1,36 +1,7 @@
1
1
  'use client';
2
2
 
3
3
  /** @license MoonUI v1.0.0 - MIT License - https://moonui.dev */
4
- "use client";import{c as u,g as p,h as b}from"../chunk-2EN7SB2G.global.js";var n=u(p()),O=u(b());function E({threshold:t=0,root:a=null,rootMargin:i="0%",freezeOnceVisible:o=!1,initialIsIntersecting:d=!1,onChange:e}={}){let[r,s]=n.useState(null),[c,m]=n.useState(d),f=n.useRef(!1);return n.useEffect(()=>{if(!r||!window.IntersectionObserver||f.current&&o)return;let w=new IntersectionObserver(([I])=>{if(f.current)return;let v=I.isIntersecting;m(v),e?.(v,I),v&&o&&(f.current=!0)},{threshold:t,root:a,rootMargin:i});return w.observe(r),()=>w.disconnect()},[r,t,a,i,o,e]),{ref:s,isIntersecting:c}}var l=u(p()),g="moonui:local-storage";function S(t,a){let[i,o]=(0,l.useState)(()=>{if(typeof window>"u")return a;try{let e=window.localStorage.getItem(t);return e?JSON.parse(e):a}catch(e){return console.error(`Error reading localStorage key "${t}":`,e),a}}),d=e=>{try{let r=e instanceof Function?e(i):e;o(r),typeof window<"u"&&(r===void 0?window.localStorage.removeItem(t):window.localStorage.setItem(t,JSON.stringify(r)),window.dispatchEvent(new CustomEvent(g,{detail:{key:t,value:r}})))}catch(r){console.error(`Error setting localStorage key "${t}":`,r)}};return(0,l.useEffect)(()=>{if(typeof window>"u")return;let e=s=>{if(s.key===t&&s.newValue!==null)try{o(JSON.parse(s.newValue))}catch(c){console.error(`Error parsing localStorage value for key "${t}":`,c)}},r=s=>{let c=s.detail;c&&c.key===t&&o(c.value)};return window.addEventListener("storage",e),window.addEventListener(g,r),()=>{window.removeEventListener("storage",e),window.removeEventListener(g,r)}},[t]),[i,d]}export{E as useIntersectionObserver,S as useLocalStorage};
5
-
6
- if (typeof window !== 'undefined' && !window.React) {
7
- console.warn('MoonUI: React not found. Please include React and ReactDOM before MoonUI.');
8
- }
9
- //# sourceMappingURL=index.global.js.mapype=E.prototype;function I(e,t,n){this.props=e,this.context=t,this.refs=z,this.updater=n||D}var h=I.prototype=new G;h.constructor=I;q(h,E.prototype);h.isPureReactComponent=!0;var $=Array.isArray;function C(){}var c={H:null,A:null,T:null,S:null},V=Object.prototype.hasOwnProperty;function A(e,t,n){var r=n.ref;return{$$typeof:O,type:e,key:t,ref:r!==void 0?r:null,props:n}}function ye(e,t){return A(e.type,t,e.props)}function b(e){return typeof e=="object"&&e!==null&&e.$$typeof===O}function me(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(n){return t[n]})}var Y=/\/+/g;function S(e,t){return typeof e=="object"&&e!==null&&e.key!=null?me(""+e.key):t.toString(36)}function Re(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:switch(typeof e.status=="string"?e.then(C,C):(e.status="pending",e.then(function(t){e.status==="pending"&&(e.status="fulfilled",e.value=t)},function(t){e.status==="pending"&&(e.status="rejected",e.reason=t)})),e.status){case"fulfilled":return e.value;case"rejected":throw e.reason}}throw e}function p(e,t,n,r,o){var s=typeof e;(s==="undefined"||s==="boolean")&&(e=null);var i=!1;if(e===null)i=!0;else switch(s){case"bigint":case"string":case"number":i=!0;break;case"object":switch(e.$$typeof){case O:case ue:i=!0;break;case U:return i=e._init,p(i(e._payload),t,n,r,o)}}if(i)return o=o(e),i=r===""?"."+S(e,0):r,$(o)?(n="",i!=null&&(n=i.replace(Y,"$&/")+"/"),p(o,t,n,"",function(T){return T})):o!=null&&(b(o)&&(o=ye(o,n+(o.key==null||e&&e.key===o.key?"":(""+o.key).replace(Y,"$&/")+"/")+i)),t.push(o)),1;i=0;var a=r===""?".":r+":";if($(e))for(var f=0;f<e.length;f++)r=e[f],s=a+S(r,f),i+=p(r,t,n,s,o);else if(f=_e(e),typeof f=="function")for(e=f.call(e),f=0;!(r=e.next()).done;)r=r.value,s=a+S(r,f++),i+=p(r,t,n,s,o);else if(s==="object"){if(typeof e.then=="function")return p(Re(e),t,n,r,o);throw t=String(e),Error("Objects are not valid as a React child (found: "+(t==="[object Object]"?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.")}return i}function y(e,t,n){if(e==null)return e;var r=[],o=0;return p(e,r,"","",function(s){return t.call(n,s,o++)}),r}function Te(e){if(e._status===-1){var t=e._result;t=t(),t.then(function(n){(e._status===0||e._status===-1)&&(e._status=1,e._result=n)},function(n){(e._status===0||e._status===-1)&&(e._status=2,e._result=n)}),e._status===-1&&(e._status=0,e._result=t)}if(e._status===1)return e._result.default;throw e._result}var k=typeof reportError=="function"?reportError:function(e){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof e=="object"&&e!==null&&typeof e.message=="string"?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",e);return}console.error(e)},we={map:y,forEach:function(e,t,n){y(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return y(e,function(){t++}),t},toArray:function(e){return y(e,function(t){return t})||[]},only:function(e){if(!b(e))throw Error("React.Children.only expected to receive a single React element child.");return e}};u.Activity=de;u.Children=we;u.Component=E;u.Fragment=ie;u.Profiler=fe;u.PureComponent=I;u.StrictMode=ce;u.Suspense=Ee;u.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=c;u.__COMPILER_RUNTIME={__proto__:null,c:function(e){return c.H.useMemoCache(e)}};u.cache=function(e){return function(){return e.apply(null,arguments)}};u.cacheSignal=function(){return null};u.cloneElement=function(e,t,n){if(e==null)throw Error("The argument must be a React element, but you passed "+e+".");var r=q({},e.props),o=e.key;if(t!=null)for(s in t.key!==void 0&&(o=""+t.key),t)!V.call(t,s)||s==="key"||s==="__self"||s==="__source"||s==="ref"&&t.ref===void 0||(r[s]=t[s]);var s=arguments.length-2;if(s===1)r.children=n;else if(1<s){for(var i=Array(s),a=0;a<s;a++)i[a]=arguments[a+2];r.children=i}return A(e.type,o,r)};u.createContext=function(e){return e={$$typeof:le,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null},e.Provider=e,e.Consumer={$$typeof:ae,_context:e},e};u.createElement=function(e,t,n){var r,o={},s=null;if(t!=null)for(r in t.key!==void 0&&(s=""+t.key),t)V.call(t,r)&&r!=="key"&&r!=="__self"&&r!=="__source"&&(o[r]=t[r]);var i=arguments.length-2;if(i===1)o.children=n;else if(1<i){for(var a=Array(i),f=0;f<i;f++)a[f]=arguments[f+2];o.children=a}if(e&&e.defaultProps)for(r in i=e.defaultProps,i)o[r]===void 0&&(o[r]=i[r]);return A(e,s,o)};u.createRef=function(){return{current:null}};u.forwardRef=function(e){return{$$typeof:pe,render:e}};u.isValidElement=b;u.lazy=function(e){return{$$typeof:U,_payload:{_status:-1,_result:e},_init:Te}};u.memo=function(e,t){return{$$typeof:ve,type:e,compare:t===void 0?null:t}};u.startTransition=function(e){var t=c.T,n={};c.T=n;try{var r=e(),o=c.S;o!==null&&o(n,r),typeof r=="object"&&r!==null&&typeof r.then=="function"&&r.then(C,k)}catch(s){k(s)}finally{t!==null&&n.types!==null&&(t.types=n.types),c.T=t}};u.unstable_useCacheRefresh=function(){return c.H.useCacheRefresh()};u.use=function(e){return c.H.use(e)};u.useActionState=function(e,t,n){return c.H.useActionState(e,t,n)};u.useCallback=function(e,t){return c.H.useCallback(e,t)};u.useContext=function(e){return c.H.useContext(e)};u.useDebugValue=function(){};u.useDeferredValue=function(e,t){return c.H.useDeferredValue(e,t)};u.useEffect=function(e,t){return c.H.useEffect(e,t)};u.useEffectEvent=function(e){return c.H.useEffectEvent(e)};u.useId=function(){return c.H.useId()};u.useImperativeHandle=function(e,t,n){return c.H.useImperativeHandle(e,t,n)};u.useInsertionEffect=function(e,t){return c.H.useInsertionEffect(e,t)};u.useLayoutEffect=function(e,t){return c.H.useLayoutEffect(e,t)};u.useMemo=function(e,t){return c.H.useMemo(e,t)};u.useOptimistic=function(e,t){return c.H.useOptimistic(e,t)};u.useReducer=function(e,t,n){return c.H.useReducer(e,t,n)};u.useRef=function(e){return c.H.useRef(e)};u.useState=function(e){return c.H.useState(e)};u.useSyncExternalStore=function(e,t,n){return c.H.useSyncExternalStore(e,t,n)};u.useTransition=function(){return c.H.useTransition()};u.version="19.2.3"});var L=d((Ae,B)=>{"use strict";B.exports=J()});var Q=d(m=>{"use strict";var ge=Symbol.for("react.transitional.element"),Se=Symbol.for("react.fragment");function W(e,t,n){var r=null;if(n!==void 0&&(r=""+n),t.key!==void 0&&(r=""+t.key),"key"in t){n={};for(var o in t)o!=="key"&&(n[o]=t[o])}else n=t;return t=n.ref,{$$typeof:ge,type:e,key:r,ref:t!==void 0?t:null,props:n}}m.Fragment=Se;m.jsx=W;m.jsxs=W});var N=d((Le,X)=>{"use strict";X.exports=Q()});var Oe={};oe(Oe,{useIntersectionObserver:()=>Z,useLocalStorage:()=>F});module.exports=se(Oe);var l=_(L()),Ce=_(N());function Z({threshold:e=0,root:t=null,rootMargin:n="0%",freezeOnceVisible:r=!1,initialIsIntersecting:o=!1,onChange:s}={}){let[i,a]=l.useState(null),[f,T]=l.useState(o),w=l.useRef(!1);return l.useEffect(()=>{if(!i||!window.IntersectionObserver||w.current&&r)return;let j=new IntersectionObserver(([P])=>{if(w.current)return;let g=P.isIntersecting;T(g),s?.(g,P),g&&r&&(w.current=!0)},{threshold:e,root:t,rootMargin:n});return j.observe(i),()=>j.disconnect()},[i,e,t,n,r,s]),{ref:a,isIntersecting:f}}var R=_(L()),x="moonui:local-storage";function F(e,t){let[n,r]=(0,R.useState)(()=>{if(typeof window>"u")return t;try{let s=window.localStorage.getItem(e);return s?JSON.parse(s):t}catch(s){return console.error(`Error reading localStorage key "${e}":`,s),t}}),o=s=>{try{let i=s instanceof Function?s(n):s;r(i),typeof window<"u"&&(i===void 0?window.localStorage.removeItem(e):window.localStorage.setItem(e,JSON.stringify(i)),window.dispatchEvent(new CustomEvent(x,{detail:{key:e,value:i}})))}catch(i){console.error(`Error setting localStorage key "${e}":`,i)}};return(0,R.useEffect)(()=>{if(typeof window>"u")return;let s=a=>{if(a.key===e&&a.newValue!==null)try{r(JSON.parse(a.newValue))}catch(f){console.error(`Error parsing localStorage value for key "${e}":`,f)}},i=a=>{let f=a.detail;f&&f.key===e&&r(f.value)};return window.addEventListener("storage",s),window.addEventListener(x,i),()=>{window.removeEventListener("storage",s),window.removeEventListener(x,i)}},[e]),[n,o]}
10
- /*! Bundled license information:
11
-
12
- react/cjs/react.production.js:
13
- (**
14
- * @license React
15
- * react.production.js
16
- *
17
- * Copyright (c) Meta Platforms, Inc. and affiliates.
18
- *
19
- * This source code is licensed under the MIT license found in the
20
- * LICENSE file in the root directory of this source tree.
21
- *)
22
-
23
- react/cjs/react-jsx-runtime.production.js:
24
- (**
25
- * @license React
26
- * react-jsx-runtime.production.js
27
- *
28
- * Copyright (c) Meta Platforms, Inc. and affiliates.
29
- *
30
- * This source code is licensed under the MIT license found in the
31
- * LICENSE file in the root directory of this source tree.
32
- *)
33
- */
4
+ "use client";import{c as u,g as p,h as b}from"../chunk-VXDFZPDA.global.js";var n=u(p()),O=u(b());function E({threshold:t=0,root:a=null,rootMargin:i="0%",freezeOnceVisible:o=!1,initialIsIntersecting:d=!1,onChange:e}={}){let[r,s]=n.useState(null),[c,m]=n.useState(d),f=n.useRef(!1);return n.useEffect(()=>{if(!r||!window.IntersectionObserver||f.current&&o)return;let w=new IntersectionObserver(([I])=>{if(f.current)return;let v=I.isIntersecting;m(v),e?.(v,I),v&&o&&(f.current=!0)},{threshold:t,root:a,rootMargin:i});return w.observe(r),()=>w.disconnect()},[r,t,a,i,o,e]),{ref:s,isIntersecting:c}}var l=u(p()),g="moonui:local-storage";function S(t,a){let[i,o]=(0,l.useState)(()=>{if(typeof window>"u")return a;try{let e=window.localStorage.getItem(t);return e?JSON.parse(e):a}catch(e){return console.error(`Error reading localStorage key "${t}":`,e),a}}),d=e=>{try{let r=e instanceof Function?e(i):e;o(r),typeof window<"u"&&(r===void 0?window.localStorage.removeItem(t):window.localStorage.setItem(t,JSON.stringify(r)),window.dispatchEvent(new CustomEvent(g,{detail:{key:t,value:r}})))}catch(r){console.error(`Error setting localStorage key "${t}":`,r)}};return(0,l.useEffect)(()=>{if(typeof window>"u")return;let e=s=>{if(s.key===t&&s.newValue!==null)try{o(JSON.parse(s.newValue))}catch(c){console.error(`Error parsing localStorage value for key "${t}":`,c)}},r=s=>{let c=s.detail;c&&c.key===t&&o(c.value)};return window.addEventListener("storage",e),window.addEventListener(g,r),()=>{window.removeEventListener("storage",e),window.removeEventListener(g,r)}},[t]),[i,d]}export{E as useIntersectionObserver,S as useLocalStorage};
34
5
 
35
6
  if (typeof window !== 'undefined' && !window.React) {
36
7
  console.warn('MoonUI: React not found. Please include React and ReactDOM before MoonUI.');
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/use-intersection-observer.tsx","../../src/use-local-storage.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\n\nexport interface UseIntersectionObserverOptions extends IntersectionObserverInit {\n freezeOnceVisible?: boolean;\n initialIsIntersecting?: boolean;\n onChange?: (isIntersecting: boolean, entry: IntersectionObserverEntry) => void;\n}\n\nexport function useIntersectionObserver({\n threshold = 0,\n root = null,\n rootMargin = \"0%\",\n freezeOnceVisible = false,\n initialIsIntersecting = false,\n onChange,\n}: UseIntersectionObserverOptions = {}) {\n const [ref, setRef] = React.useState<Element | null>(null);\n const [isIntersecting, setIsIntersecting] = React.useState(initialIsIntersecting);\n const frozen = React.useRef(false);\n\n React.useEffect(() => {\n if (!ref || !window.IntersectionObserver || (frozen.current && freezeOnceVisible)) {\n return;\n }\n\n const observer = new IntersectionObserver(\n ([entry]) => {\n // freezeOnceVisible: bir kez görünür olduktan sonra state DONMALI.\n // frozen guard'ı yalnızca yukarıdaki effect girişinde vardı; effect'in\n // deps'i değişmediği için yeniden koşmuyor, dolayısıyla guard hiç\n // devreye girmiyordu. Canlı observer bir sonraki entry'de\n // setIsIntersecting(false) çağırıp donmayı bozuyordu.\n if (frozen.current) {\n return;\n }\n\n const isElementIntersecting = entry.isIntersecting;\n setIsIntersecting(isElementIntersecting);\n onChange?.(isElementIntersecting, entry);\n\n if (isElementIntersecting && freezeOnceVisible) {\n frozen.current = true;\n }\n },\n { threshold, root, rootMargin }\n );\n\n observer.observe(ref);\n\n return () => observer.disconnect();\n }, [ref, threshold, root, rootMargin, freezeOnceVisible, onChange]);\n\n return { ref: setRef, isIntersecting };\n}\n\n// Lazy load component wrapper\ninterface LazyLoadProps {\n children: React.ReactNode;\n placeholder?: React.ReactNode;\n threshold?: number;\n rootMargin?: string;\n className?: string;\n}\n\nexport function LazyLoad({\n children,\n placeholder = <div className=\"h-20 bg-muted animate-pulse rounded\" />,\n threshold = 0.1,\n rootMargin = \"50px\",\n className,\n}: LazyLoadProps) {\n const { ref, isIntersecting } = useIntersectionObserver({\n threshold,\n rootMargin,\n freezeOnceVisible: true,\n });\n\n return (\n <div ref={ref} className={className}>\n {isIntersecting ? children : placeholder}\n </div>\n );\n}\n\n// Image lazy loading hook\nexport function useLazyImageLoading(\n imageSrc: string,\n options?: UseIntersectionObserverOptions\n) {\n const [src, setSrc] = React.useState<string | undefined>(undefined);\n const { ref, isIntersecting } = useIntersectionObserver({\n threshold: 0.01,\n rootMargin: \"50px\",\n ...options,\n });\n\n React.useEffect(() => {\n if (isIntersecting && imageSrc) {\n const img = new Image();\n img.src = imageSrc;\n img.onload = () => setSrc(imageSrc);\n }\n }, [isIntersecting, imageSrc]);\n\n return { ref, src, isLoaded: !!src };\n}\n\n// Viewport visibility hook\nexport function useIsInViewport(options?: UseIntersectionObserverOptions) {\n return useIntersectionObserver(options);\n}\n\n// Multiple elements observer\nexport function useMultipleIntersectionObserver(\n options: UseIntersectionObserverOptions = {}\n) {\n const [elements, setElements] = React.useState<Map<Element, boolean>>(new Map());\n const observer = React.useRef<IntersectionObserver | null>(null);\n\n React.useEffect(() => {\n if (!window.IntersectionObserver) return;\n\n observer.current = new IntersectionObserver(\n (entries) => {\n setElements((prev) => {\n const next = new Map(prev);\n entries.forEach((entry) => {\n next.set(entry.target, entry.isIntersecting);\n });\n return next;\n });\n },\n {\n threshold: options.threshold || 0,\n root: options.root || null,\n rootMargin: options.rootMargin || \"0%\",\n }\n );\n\n return () => observer.current?.disconnect();\n }, [options.threshold, options.root, options.rootMargin]);\n\n const observe = React.useCallback((element: Element | null) => {\n if (element && observer.current) {\n observer.current.observe(element);\n }\n }, []);\n\n const unobserve = React.useCallback((element: Element | null) => {\n if (element && observer.current) {\n observer.current.unobserve(element);\n setElements((prev) => {\n const next = new Map(prev);\n next.delete(element);\n return next;\n });\n }\n }, []);\n\n return { observe, unobserve, elements };\n}","import { useState, useEffect } from 'react'\n\n/**\n * Aynı sekmedeki diğer hook instance'larını haberdar eden özel olay.\n *\n * Native `storage` olayı YALNIZCA diğer sekme/pencerelerde tetiklenir — değeri\n * yazan dokümanda hiç tetiklenmez. Bu yüzden aynı sayfada `useLocalStorage(\"k\")`\n * kullanan iki component birbirinden habersiz kalıyor, biri güncellenince\n * diğeri bayat değeri göstermeye devam ediyordu.\n */\nconst LOCAL_SYNC_EVENT = 'moonui:local-storage'\n\ninterface LocalSyncDetail {\n key: string\n value: unknown\n}\n\n// Local storage hook with error handling and SSR support\nexport function useLocalStorage<T>(\n key: string,\n initialValue: T\n): [T, (value: T | ((val: T) => T)) => void] {\n // State to store our value\n // Pass initial state function to useState so logic is only executed once\n const [storedValue, setStoredValue] = useState<T>(() => {\n if (typeof window === 'undefined') {\n return initialValue\n }\n \n try {\n // Get from local storage by key\n const item = window.localStorage.getItem(key)\n // Parse stored json or if none return initialValue\n return item ? JSON.parse(item) : initialValue\n } catch (error) {\n // If error also return initialValue\n console.error(`Error reading localStorage key \"${key}\":`, error)\n return initialValue\n }\n })\n\n // Return a wrapped version of useState's setter function that persists the new value to localStorage\n const setValue = (value: T | ((val: T) => T)) => {\n try {\n // Allow value to be a function so we have the same API as useState\n const valueToStore = value instanceof Function ? value(storedValue) : value\n \n // Save state\n setStoredValue(valueToStore)\n \n // Save to local storage\n if (typeof window !== 'undefined') {\n if (valueToStore === undefined) {\n window.localStorage.removeItem(key)\n } else {\n window.localStorage.setItem(key, JSON.stringify(valueToStore))\n }\n\n // Aynı dokümandaki diğer instance'ları bilgilendir (bkz. LOCAL_SYNC_EVENT)\n window.dispatchEvent(\n new CustomEvent<LocalSyncDetail>(LOCAL_SYNC_EVENT, {\n detail: { key, value: valueToStore },\n })\n )\n }\n } catch (error) {\n // A more advanced implementation would handle the error case\n console.error(`Error setting localStorage key \"${key}\":`, error)\n }\n }\n\n // Listen for changes to localStorage from other tabs/windows\n useEffect(() => {\n if (typeof window === 'undefined') {\n return\n }\n\n const handleStorageChange = (e: StorageEvent) => {\n if (e.key === key && e.newValue !== null) {\n try {\n setStoredValue(JSON.parse(e.newValue))\n } catch (error) {\n console.error(`Error parsing localStorage value for key \"${key}\":`, error)\n }\n }\n }\n\n // Aynı sekmedeki kardeş instance'lar\n const handleLocalSync = (e: Event) => {\n const detail = (e as CustomEvent<LocalSyncDetail>).detail\n if (detail && detail.key === key) {\n setStoredValue(detail.value as T)\n }\n }\n\n window.addEventListener('storage', handleStorageChange)\n window.addEventListener(LOCAL_SYNC_EVENT, handleLocalSync)\n return () => {\n window.removeEventListener('storage', handleStorageChange)\n window.removeEventListener(LOCAL_SYNC_EVENT, handleLocalSync)\n }\n }, [key])\n\n return [storedValue, setValue]\n}"],"mappings":";2EAEA,IAAAA,EAAuB,OAkEPC,EAAA,OA1DT,SAASC,EAAwB,CACtC,UAAAC,EAAY,EACZ,KAAAC,EAAO,KACP,WAAAC,EAAa,KACb,kBAAAC,EAAoB,GACpB,sBAAAC,EAAwB,GACxB,SAAAC,CACF,EAAoC,CAAC,EAAG,CACtC,GAAM,CAACC,EAAKC,CAAM,EAAU,WAAyB,IAAI,EACnD,CAACC,EAAgBC,CAAiB,EAAU,WAASL,CAAqB,EAC1EM,EAAe,SAAO,EAAK,EAEjC,OAAM,YAAU,IAAM,CACpB,GAAI,CAACJ,GAAO,CAAC,OAAO,sBAAyBI,EAAO,SAAWP,EAC7D,OAGF,IAAMQ,EAAW,IAAI,qBACnB,CAAC,CAACC,CAAK,IAAM,CAMX,GAAIF,EAAO,QACT,OAGF,IAAMG,EAAwBD,EAAM,eACpCH,EAAkBI,CAAqB,EACvCR,IAAWQ,EAAuBD,CAAK,EAEnCC,GAAyBV,IAC3BO,EAAO,QAAU,GAErB,EACA,CAAE,UAAAV,EAAW,KAAAC,EAAM,WAAAC,CAAW,CAChC,EAEA,OAAAS,EAAS,QAAQL,CAAG,EAEb,IAAMK,EAAS,WAAW,CACnC,EAAG,CAACL,EAAKN,EAAWC,EAAMC,EAAYC,EAAmBE,CAAQ,CAAC,EAE3D,CAAE,IAAKE,EAAQ,eAAAC,CAAe,CACvC,CCvDA,IAAAM,EAAoC,OAU9BC,EAAmB,uBAQlB,SAASC,EACdC,EACAC,EAC2C,CAG3C,GAAM,CAACC,EAAaC,CAAc,KAAI,YAAY,IAAM,CACtD,GAAI,OAAO,OAAW,IACpB,OAAOF,EAGT,GAAI,CAEF,IAAMG,EAAO,OAAO,aAAa,QAAQJ,CAAG,EAE5C,OAAOI,EAAO,KAAK,MAAMA,CAAI,EAAIH,CACnC,OAASI,EAAO,CAEd,eAAQ,MAAM,mCAAmCL,CAAG,KAAMK,CAAK,EACxDJ,CACT,CACF,CAAC,EAGKK,EAAYC,GAA+B,CAC/C,GAAI,CAEF,IAAMC,EAAeD,aAAiB,SAAWA,EAAML,CAAW,EAAIK,EAGtEJ,EAAeK,CAAY,EAGvB,OAAO,OAAW,MAChBA,IAAiB,OACnB,OAAO,aAAa,WAAWR,CAAG,EAElC,OAAO,aAAa,QAAQA,EAAK,KAAK,UAAUQ,CAAY,CAAC,EAI/D,OAAO,cACL,IAAI,YAA6BV,EAAkB,CACjD,OAAQ,CAAE,IAAAE,EAAK,MAAOQ,CAAa,CACrC,CAAC,CACH,EAEJ,OAASH,EAAO,CAEd,QAAQ,MAAM,mCAAmCL,CAAG,KAAMK,CAAK,CACjE,CACF,EAGA,sBAAU,IAAM,CACd,GAAI,OAAO,OAAW,IACpB,OAGF,IAAMI,EAAuBC,GAAoB,CAC/C,GAAIA,EAAE,MAAQV,GAAOU,EAAE,WAAa,KAClC,GAAI,CACFP,EAAe,KAAK,MAAMO,EAAE,QAAQ,CAAC,CACvC,OAASL,EAAO,CACd,QAAQ,MAAM,6CAA6CL,CAAG,KAAMK,CAAK,CAC3E,CAEJ,EAGMM,EAAmBD,GAAa,CACpC,IAAME,EAAUF,EAAmC,OAC/CE,GAAUA,EAAO,MAAQZ,GAC3BG,EAAeS,EAAO,KAAU,CAEpC,EAEA,cAAO,iBAAiB,UAAWH,CAAmB,EACtD,OAAO,iBAAiBX,EAAkBa,CAAe,EAClD,IAAM,CACX,OAAO,oBAAoB,UAAWF,CAAmB,EACzD,OAAO,oBAAoBX,EAAkBa,CAAe,CAC9D,CACF,EAAG,CAACX,CAAG,CAAC,EAED,CAACE,EAAaI,CAAQ,CAC/B","names":["React","import_jsx_runtime","useIntersectionObserver","threshold","root","rootMargin","freezeOnceVisible","initialIsIntersecting","onChange","ref","setRef","isIntersecting","setIsIntersecting","frozen","observer","entry","isElementIntersecting","import_react","LOCAL_SYNC_EVENT","useLocalStorage","key","initialValue","storedValue","setStoredValue","item","error","setValue","value","valueToStore","handleStorageChange","e","handleLocalSync","detail"]} mapChildren(\n children,\n function () {\n forEachFunc.apply(this, arguments);\n },\n forEachContext\n );\n },\n count: function (children) {\n var n = 0;\n mapChildren(children, function () {\n n++;\n });\n return n;\n },\n toArray: function (children) {\n return (\n mapChildren(children, function (child) {\n return child;\n }) || []\n );\n },\n only: function (children) {\n if (!isValidElement(children))\n throw Error(\n \"React.Children.only expected to receive a single React element child.\"\n );\n return children;\n }\n };\nexports.Activity = REACT_ACTIVITY_TYPE;\nexports.Children = Children;\nexports.Component = Component;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.PureComponent = PureComponent;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n ReactSharedInternals;\nexports.__COMPILER_RUNTIME = {\n __proto__: null,\n c: function (size) {\n return ReactSharedInternals.H.useMemoCache(size);\n }\n};\nexports.cache = function (fn) {\n return function () {\n return fn.apply(null, arguments);\n };\n};\nexports.cacheSignal = function () {\n return null;\n};\nexports.cloneElement = function (element, config, children) {\n if (null === element || void 0 === element)\n throw Error(\n \"The argument must be a React element, but you passed \" + element + \".\"\n );\n var props = assign({}, element.props),\n key = element.key;\n if (null != config)\n for (propName in (void 0 !== config.key && (key = \"\" + config.key), config))\n !hasOwnProperty.call(config, propName) ||\n \"key\" === propName ||\n \"__self\" === propName ||\n \"__source\" === propName ||\n (\"ref\" === propName && void 0 === config.ref) ||\n (props[propName] = config[propName]);\n var propName = arguments.length - 2;\n if (1 === propName) props.children = children;\n else if (1 < propName) {\n for (var childArray = Array(propName), i = 0; i < propName; i++)\n childArray[i] = arguments[i + 2];\n props.children = childArray;\n }\n return ReactElement(element.type, key, props);\n};\nexports.createContext = function (defaultValue) {\n defaultValue = {\n $$typeof: REACT_CONTEXT_TYPE,\n _currentValue: defaultValue,\n _currentValue2: defaultValue,\n _threadCount: 0,\n Provider: null,\n Consumer: null\n };\n defaultValue.Provider = defaultValue;\n defaultValue.Consumer = {\n $$typeof: REACT_CONSUMER_TYPE,\n _context: defaultValue\n };\n return defaultValue;\n};\nexports.createElement = function (type, config, children) {\n var propName,\n props = {},\n key = null;\n if (null != config)\n for (propName in (void 0 !== config.key && (key = \"\" + config.key), config))\n hasOwnProperty.call(config, propName) &&\n \"key\" !== propName &&\n \"__self\" !== propName &&\n \"__source\" !== propName &&\n (props[propName] = config[propName]);\n var childrenLength = arguments.length - 2;\n if (1 === childrenLength) props.children = children;\n else if (1 < childrenLength) {\n for (var childArray = Array(childrenLength), i = 0; i < childrenLength; i++)\n childArray[i] = arguments[i + 2];\n props.children = childArray;\n }\n if (type && type.defaultProps)\n for (propName in ((childrenLength = type.defaultProps), childrenLength))\n void 0 === props[propName] &&\n (props[propName] = childrenLength[propName]);\n return ReactElement(type, key, props);\n};\nexports.createRef = function () {\n return { current: null };\n};\nexports.forwardRef = function (render) {\n return { $$typeof: REACT_FORWARD_REF_TYPE, render: render };\n};\nexports.isValidElement = isValidElement;\nexports.lazy = function (ctor) {\n return {\n $$typeof: REACT_LAZY_TYPE,\n _payload: { _status: -1, _result: ctor },\n _init: lazyInitializer\n };\n};\nexports.memo = function (type, compare) {\n return {\n $$typeof: REACT_MEMO_TYPE,\n type: type,\n compare: void 0 === compare ? null : compare\n };\n};\nexports.startTransition = function (scope) {\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n ReactSharedInternals.T = currentTransition;\n try {\n var returnValue = scope(),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n \"object\" === typeof returnValue &&\n null !== returnValue &&\n \"function\" === typeof returnValue.then &&\n returnValue.then(noop, reportGlobalError);\n } catch (error) {\n reportGlobalError(error);\n } finally {\n null !== prevTransition &&\n null !== currentTransition.types &&\n (prevTransition.types = currentTransition.types),\n (ReactSharedInternals.T = prevTransition);\n }\n};\nexports.unstable_useCacheRefresh = function () {\n return ReactSharedInternals.H.useCacheRefresh();\n};\nexports.use = function (usable) {\n return ReactSharedInternals.H.use(usable);\n};\nexports.useActionState = function (action, initialState, permalink) {\n return ReactSharedInternals.H.useActionState(action, initialState, permalink);\n};\nexports.useCallback = function (callback, deps) {\n return ReactSharedInternals.H.useCallback(callback, deps);\n};\nexports.useContext = function (Context) {\n return ReactSharedInternals.H.useContext(Context);\n};\nexports.useDebugValue = function () {};\nexports.useDeferredValue = function (value, initialValue) {\n return ReactSharedInternals.H.useDeferredValue(value, initialValue);\n};\nexports.useEffect = function (create, deps) {\n return ReactSharedInternals.H.useEffect(create, deps);\n};\nexports.useEffectEvent = function (callback) {\n return ReactSharedInternals.H.useEffectEvent(callback);\n};\nexports.useId = function () {\n return ReactSharedInternals.H.useId();\n};\nexports.useImperativeHandle = function (ref, create, deps) {\n return ReactSharedInternals.H.useImperativeHandle(ref, create, deps);\n};\nexports.useInsertionEffect = function (create, deps) {\n return ReactSharedInternals.H.useInsertionEffect(create, deps);\n};\nexports.useLayoutEffect = function (create, deps) {\n return ReactSharedInternals.H.useLayoutEffect(create, deps);\n};\nexports.useMemo = function (create, deps) {\n return ReactSharedInternals.H.useMemo(create, deps);\n};\nexports.useOptimistic = function (passthrough, reducer) {\n return ReactSharedInternals.H.useOptimistic(passthrough, reducer);\n};\nexports.useReducer = function (reducer, initialArg, init) {\n return ReactSharedInternals.H.useReducer(reducer, initialArg, init);\n};\nexports.useRef = function (initialValue) {\n return ReactSharedInternals.H.useRef(initialValue);\n};\nexports.useState = function (initialState) {\n return ReactSharedInternals.H.useState(initialState);\n};\nexports.useSyncExternalStore = function (\n subscribe,\n getSnapshot,\n getServerSnapshot\n) {\n return ReactSharedInternals.H.useSyncExternalStore(\n subscribe,\n getSnapshot,\n getServerSnapshot\n );\n};\nexports.useTransition = function () {\n return ReactSharedInternals.H.useTransition();\n};\nexports.version = \"19.2.3\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","\"use client\";\n\n/**\n * `@moontra/moonui/hooks` — genel amaçlı React hook'ları.\n *\n * NEDEN AYRI ALT-YOL (`./hooks`), ana barrel değil:\n * `src/index.tsx` sözleşme gereği yalnızca iki bölüm içerir (`./components/ui`\n * re-export'u + `cn`). Hook'ları oraya eklemek o sözleşmeyi bozardı, bu yüzden\n * hook'lar kendi giriş noktasından yayımlanır:\n *\n * import { useLocalStorage } from \"@moontra/moonui/hooks\"\n *\n * KAPSAM: buraya yalnızca TESTİ OLAN hook'lar alınır. `src/` kökünde henüz\n * dışa açılmamış başka yardımcılar da var (`LazyLoad`, `useLazyImageLoading`,\n * `useIsInViewport`, `useMultipleIntersectionObserver`, `use-scroll-animation`,\n * `use-performance-optimizer` ve `use-toast.ts`'in yetim kopyası). Test\n * kapsamları olmadığı için public API'ye alınmadılar — eklenmeden önce test\n * yazılmalı.\n */\n\nexport { useIntersectionObserver } from \"../use-intersection-observer\";\nexport type { UseIntersectionObserverOptions } from \"../use-intersection-observer\";\n\nexport { useLocalStorage } from \"../use-local-storage\";\n","\"use client\";\n\nimport * as React from \"react\";\n\nexport interface UseIntersectionObserverOptions extends IntersectionObserverInit {\n freezeOnceVisible?: boolean;\n initialIsIntersecting?: boolean;\n onChange?: (isIntersecting: boolean, entry: IntersectionObserverEntry) => void;\n}\n\nexport function useIntersectionObserver({\n threshold = 0,\n root = null,\n rootMargin = \"0%\",\n freezeOnceVisible = false,\n initialIsIntersecting = false,\n onChange,\n}: UseIntersectionObserverOptions = {}) {\n const [ref, setRef] = React.useState<Element | null>(null);\n const [isIntersecting, setIsIntersecting] = React.useState(initialIsIntersecting);\n const frozen = React.useRef(false);\n\n React.useEffect(() => {\n if (!ref || !window.IntersectionObserver || (frozen.current && freezeOnceVisible)) {\n return;\n }\n\n const observer = new IntersectionObserver(\n ([entry]) => {\n // freezeOnceVisible: bir kez görünür olduktan sonra state DONMALI.\n // frozen guard'ı yalnızca yukarıdaki effect girişinde vardı; effect'in\n // deps'i değişmediği için yeniden koşmuyor, dolayısıyla guard hiç\n // devreye girmiyordu. Canlı observer bir sonraki entry'de\n // setIsIntersecting(false) çağırıp donmayı bozuyordu.\n if (frozen.current) {\n return;\n }\n\n const isElementIntersecting = entry.isIntersecting;\n setIsIntersecting(isElementIntersecting);\n onChange?.(isElementIntersecting, entry);\n\n if (isElementIntersecting && freezeOnceVisible) {\n frozen.current = true;\n }\n },\n { threshold, root, rootMargin }\n );\n\n observer.observe(ref);\n\n return () => observer.disconnect();\n }, [ref, threshold, root, rootMargin, freezeOnceVisible, onChange]);\n\n return { ref: setRef, isIntersecting };\n}\n\n// Lazy load component wrapper\ninterface LazyLoadProps {\n children: React.ReactNode;\n placeholder?: React.ReactNode;\n threshold?: number;\n rootMargin?: string;\n className?: string;\n}\n\nexport function LazyLoad({\n children,\n placeholder = <div className=\"h-20 bg-muted animate-pulse rounded\" />,\n threshold = 0.1,\n rootMargin = \"50px\",\n className,\n}: LazyLoadProps) {\n const { ref, isIntersecting } = useIntersectionObserver({\n threshold,\n rootMargin,\n freezeOnceVisible: true,\n });\n\n return (\n <div ref={ref} className={className}>\n {isIntersecting ? children : placeholder}\n </div>\n );\n}\n\n// Image lazy loading hook\nexport function useLazyImageLoading(\n imageSrc: string,\n options?: UseIntersectionObserverOptions\n) {\n const [src, setSrc] = React.useState<string | undefined>(undefined);\n const { ref, isIntersecting } = useIntersectionObserver({\n threshold: 0.01,\n rootMargin: \"50px\",\n ...options,\n });\n\n React.useEffect(() => {\n if (isIntersecting && imageSrc) {\n const img = new Image();\n img.src = imageSrc;\n img.onload = () => setSrc(imageSrc);\n }\n }, [isIntersecting, imageSrc]);\n\n return { ref, src, isLoaded: !!src };\n}\n\n// Viewport visibility hook\nexport function useIsInViewport(options?: UseIntersectionObserverOptions) {\n return useIntersectionObserver(options);\n}\n\n// Multiple elements observer\nexport function useMultipleIntersectionObserver(\n options: UseIntersectionObserverOptions = {}\n) {\n const [elements, setElements] = React.useState<Map<Element, boolean>>(new Map());\n const observer = React.useRef<IntersectionObserver | null>(null);\n\n React.useEffect(() => {\n if (!window.IntersectionObserver) return;\n\n observer.current = new IntersectionObserver(\n (entries) => {\n setElements((prev) => {\n const next = new Map(prev);\n entries.forEach((entry) => {\n next.set(entry.target, entry.isIntersecting);\n });\n return next;\n });\n },\n {\n threshold: options.threshold || 0,\n root: options.root || null,\n rootMargin: options.rootMargin || \"0%\",\n }\n );\n\n return () => observer.current?.disconnect();\n }, [options.threshold, options.root, options.rootMargin]);\n\n const observe = React.useCallback((element: Element | null) => {\n if (element && observer.current) {\n observer.current.observe(element);\n }\n }, []);\n\n const unobserve = React.useCallback((element: Element | null) => {\n if (element && observer.current) {\n observer.current.unobserve(element);\n setElements((prev) => {\n const next = new Map(prev);\n next.delete(element);\n return next;\n });\n }\n }, []);\n\n return { observe, unobserve, elements };\n}","import { useState, useEffect } from 'react'\n\n/**\n * Aynı sekmedeki diğer hook instance'larını haberdar eden özel olay.\n *\n * Native `storage` olayı YALNIZCA diğer sekme/pencerelerde tetiklenir — değeri\n * yazan dokümanda hiç tetiklenmez. Bu yüzden aynı sayfada `useLocalStorage(\"k\")`\n * kullanan iki component birbirinden habersiz kalıyor, biri güncellenince\n * diğeri bayat değeri göstermeye devam ediyordu.\n */\nconst LOCAL_SYNC_EVENT = 'moonui:local-storage'\n\ninterface LocalSyncDetail {\n key: string\n value: unknown\n}\n\n// Local storage hook with error handling and SSR support\nexport function useLocalStorage<T>(\n key: string,\n initialValue: T\n): [T, (value: T | ((val: T) => T)) => void] {\n // State to store our value\n // Pass initial state function to useState so logic is only executed once\n const [storedValue, setStoredValue] = useState<T>(() => {\n if (typeof window === 'undefined') {\n return initialValue\n }\n \n try {\n // Get from local storage by key\n const item = window.localStorage.getItem(key)\n // Parse stored json or if none return initialValue\n return item ? JSON.parse(item) : initialValue\n } catch (error) {\n // If error also return initialValue\n console.error(`Error reading localStorage key \"${key}\":`, error)\n return initialValue\n }\n })\n\n // Return a wrapped version of useState's setter function that persists the new value to localStorage\n const setValue = (value: T | ((val: T) => T)) => {\n try {\n // Allow value to be a function so we have the same API as useState\n const valueToStore = value instanceof Function ? value(storedValue) : value\n \n // Save state\n setStoredValue(valueToStore)\n \n // Save to local storage\n if (typeof window !== 'undefined') {\n if (valueToStore === undefined) {\n window.localStorage.removeItem(key)\n } else {\n window.localStorage.setItem(key, JSON.stringify(valueToStore))\n }\n\n // Aynı dokümandaki diğer instance'ları bilgilendir (bkz. LOCAL_SYNC_EVENT)\n window.dispatchEvent(\n new CustomEvent<LocalSyncDetail>(LOCAL_SYNC_EVENT, {\n detail: { key, value: valueToStore },\n })\n )\n }\n } catch (error) {\n // A more advanced implementation would handle the error case\n console.error(`Error setting localStorage key \"${key}\":`, error)\n }\n }\n\n // Listen for changes to localStorage from other tabs/windows\n useEffect(() => {\n if (typeof window === 'undefined') {\n return\n }\n\n const handleStorageChange = (e: StorageEvent) => {\n if (e.key === key && e.newValue !== null) {\n try {\n setStoredValue(JSON.parse(e.newValue))\n } catch (error) {\n console.error(`Error parsing localStorage value for key \"${key}\":`, error)\n }\n }\n }\n\n // Aynı sekmedeki kardeş instance'lar\n const handleLocalSync = (e: Event) => {\n const detail = (e as CustomEvent<LocalSyncDetail>).detail\n if (detail && detail.key === key) {\n setStoredValue(detail.value as T)\n }\n }\n\n window.addEventListener('storage', handleStorageChange)\n window.addEventListener(LOCAL_SYNC_EVENT, handleLocalSync)\n return () => {\n window.removeEventListener('storage', handleStorageChange)\n window.removeEventListener(LOCAL_SYNC_EVENT, handleLocalSync)\n }\n }, [key])\n\n return [storedValue, setValue]\n}"],"mappings":"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","names":["require_react_production","__commonJSMin","exports","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_CONSUMER_TYPE","REACT_CONTEXT_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_ACTIVITY_TYPE","MAYBE_ITERATOR_SYMBOL","getIteratorFn","maybeIterable","ReactNoopUpdateQueue","assign","emptyObject","Component","props","context","updater","partialState","callback","ComponentDummy","PureComponent","pureComponentPrototype","isArrayImpl","noop","ReactSharedInternals","hasOwnProperty","ReactElement","type","key","refProp","cloneAndReplaceKey","oldElement","newKey","isValidElement","object","escape","escaperLookup","match","userProvidedKeyEscapeRegex","getElementKey","element","index","resolveThenable","thenable","fulfilledValue","error","mapIntoArray","children","array","escapedPrefix","nameSoFar","invokeCallback","c","nextNamePrefix","i","mapChildren","func","result","count","child","lazyInitializer","payload","ctor","moduleObject","reportGlobalError","event","Children","forEachFunc","forEachContext","n","size","fn","config","propName","childArray","defaultValue","childrenLength","render","compare","scope","prevTransition","currentTransition","returnValue","onStartTransitionFinish","usable","action","initialState","permalink","deps","Context","value","initialValue","create","ref","passthrough","reducer","initialArg","init","subscribe","getSnapshot","getServerSnapshot","require_react","__commonJSMin","exports","module","require_react_jsx_runtime_production","__commonJSMin","exports","REACT_ELEMENT_TYPE","REACT_FRAGMENT_TYPE","jsxProd","type","config","maybeKey","key","propName","require_jsx_runtime","__commonJSMin","exports","module","hooks_exports","__export","useIntersectionObserver","useLocalStorage","__toCommonJS","React","import_jsx_runtime","useIntersectionObserver","threshold","root","rootMargin","freezeOnceVisible","initialIsIntersecting","onChange","ref","setRef","isIntersecting","setIsIntersecting","frozen","observer","entry","isElementIntersecting","import_react","LOCAL_SYNC_EVENT","useLocalStorage","key","initialValue","storedValue","setStoredValue","item","error","setValue","value","valueToStore","handleStorageChange","e","handleLocalSync","detail"]}
1
+ {"version":3,"sources":["../../src/use-intersection-observer.tsx","../../src/use-local-storage.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\n\nexport interface UseIntersectionObserverOptions extends IntersectionObserverInit {\n freezeOnceVisible?: boolean;\n initialIsIntersecting?: boolean;\n onChange?: (isIntersecting: boolean, entry: IntersectionObserverEntry) => void;\n}\n\nexport function useIntersectionObserver({\n threshold = 0,\n root = null,\n rootMargin = \"0%\",\n freezeOnceVisible = false,\n initialIsIntersecting = false,\n onChange,\n}: UseIntersectionObserverOptions = {}) {\n const [ref, setRef] = React.useState<Element | null>(null);\n const [isIntersecting, setIsIntersecting] = React.useState(initialIsIntersecting);\n const frozen = React.useRef(false);\n\n React.useEffect(() => {\n if (!ref || !window.IntersectionObserver || (frozen.current && freezeOnceVisible)) {\n return;\n }\n\n const observer = new IntersectionObserver(\n ([entry]) => {\n // freezeOnceVisible: bir kez görünür olduktan sonra state DONMALI.\n // frozen guard'ı yalnızca yukarıdaki effect girişinde vardı; effect'in\n // deps'i değişmediği için yeniden koşmuyor, dolayısıyla guard hiç\n // devreye girmiyordu. Canlı observer bir sonraki entry'de\n // setIsIntersecting(false) çağırıp donmayı bozuyordu.\n if (frozen.current) {\n return;\n }\n\n const isElementIntersecting = entry.isIntersecting;\n setIsIntersecting(isElementIntersecting);\n onChange?.(isElementIntersecting, entry);\n\n if (isElementIntersecting && freezeOnceVisible) {\n frozen.current = true;\n }\n },\n { threshold, root, rootMargin }\n );\n\n observer.observe(ref);\n\n return () => observer.disconnect();\n }, [ref, threshold, root, rootMargin, freezeOnceVisible, onChange]);\n\n return { ref: setRef, isIntersecting };\n}\n\n// Lazy load component wrapper\ninterface LazyLoadProps {\n children: React.ReactNode;\n placeholder?: React.ReactNode;\n threshold?: number;\n rootMargin?: string;\n className?: string;\n}\n\nexport function LazyLoad({\n children,\n placeholder = <div className=\"h-20 bg-muted animate-pulse rounded\" />,\n threshold = 0.1,\n rootMargin = \"50px\",\n className,\n}: LazyLoadProps) {\n const { ref, isIntersecting } = useIntersectionObserver({\n threshold,\n rootMargin,\n freezeOnceVisible: true,\n });\n\n return (\n <div ref={ref} className={className}>\n {isIntersecting ? children : placeholder}\n </div>\n );\n}\n\n// Image lazy loading hook\nexport function useLazyImageLoading(\n imageSrc: string,\n options?: UseIntersectionObserverOptions\n) {\n const [src, setSrc] = React.useState<string | undefined>(undefined);\n const { ref, isIntersecting } = useIntersectionObserver({\n threshold: 0.01,\n rootMargin: \"50px\",\n ...options,\n });\n\n React.useEffect(() => {\n if (isIntersecting && imageSrc) {\n const img = new Image();\n img.src = imageSrc;\n img.onload = () => setSrc(imageSrc);\n }\n }, [isIntersecting, imageSrc]);\n\n return { ref, src, isLoaded: !!src };\n}\n\n// Viewport visibility hook\nexport function useIsInViewport(options?: UseIntersectionObserverOptions) {\n return useIntersectionObserver(options);\n}\n\n// Multiple elements observer\nexport function useMultipleIntersectionObserver(\n options: UseIntersectionObserverOptions = {}\n) {\n const [elements, setElements] = React.useState<Map<Element, boolean>>(new Map());\n const observer = React.useRef<IntersectionObserver | null>(null);\n\n React.useEffect(() => {\n if (!window.IntersectionObserver) return;\n\n observer.current = new IntersectionObserver(\n (entries) => {\n setElements((prev) => {\n const next = new Map(prev);\n entries.forEach((entry) => {\n next.set(entry.target, entry.isIntersecting);\n });\n return next;\n });\n },\n {\n threshold: options.threshold || 0,\n root: options.root || null,\n rootMargin: options.rootMargin || \"0%\",\n }\n );\n\n return () => observer.current?.disconnect();\n }, [options.threshold, options.root, options.rootMargin]);\n\n const observe = React.useCallback((element: Element | null) => {\n if (element && observer.current) {\n observer.current.observe(element);\n }\n }, []);\n\n const unobserve = React.useCallback((element: Element | null) => {\n if (element && observer.current) {\n observer.current.unobserve(element);\n setElements((prev) => {\n const next = new Map(prev);\n next.delete(element);\n return next;\n });\n }\n }, []);\n\n return { observe, unobserve, elements };\n}","import { useState, useEffect } from 'react'\n\n/**\n * Aynı sekmedeki diğer hook instance'larını haberdar eden özel olay.\n *\n * Native `storage` olayı YALNIZCA diğer sekme/pencerelerde tetiklenir — değeri\n * yazan dokümanda hiç tetiklenmez. Bu yüzden aynı sayfada `useLocalStorage(\"k\")`\n * kullanan iki component birbirinden habersiz kalıyor, biri güncellenince\n * diğeri bayat değeri göstermeye devam ediyordu.\n */\nconst LOCAL_SYNC_EVENT = 'moonui:local-storage'\n\ninterface LocalSyncDetail {\n key: string\n value: unknown\n}\n\n// Local storage hook with error handling and SSR support\nexport function useLocalStorage<T>(\n key: string,\n initialValue: T\n): [T, (value: T | ((val: T) => T)) => void] {\n // State to store our value\n // Pass initial state function to useState so logic is only executed once\n const [storedValue, setStoredValue] = useState<T>(() => {\n if (typeof window === 'undefined') {\n return initialValue\n }\n \n try {\n // Get from local storage by key\n const item = window.localStorage.getItem(key)\n // Parse stored json or if none return initialValue\n return item ? JSON.parse(item) : initialValue\n } catch (error) {\n // If error also return initialValue\n console.error(`Error reading localStorage key \"${key}\":`, error)\n return initialValue\n }\n })\n\n // Return a wrapped version of useState's setter function that persists the new value to localStorage\n const setValue = (value: T | ((val: T) => T)) => {\n try {\n // Allow value to be a function so we have the same API as useState\n const valueToStore = value instanceof Function ? value(storedValue) : value\n \n // Save state\n setStoredValue(valueToStore)\n \n // Save to local storage\n if (typeof window !== 'undefined') {\n if (valueToStore === undefined) {\n window.localStorage.removeItem(key)\n } else {\n window.localStorage.setItem(key, JSON.stringify(valueToStore))\n }\n\n // Aynı dokümandaki diğer instance'ları bilgilendir (bkz. LOCAL_SYNC_EVENT)\n window.dispatchEvent(\n new CustomEvent<LocalSyncDetail>(LOCAL_SYNC_EVENT, {\n detail: { key, value: valueToStore },\n })\n )\n }\n } catch (error) {\n // A more advanced implementation would handle the error case\n console.error(`Error setting localStorage key \"${key}\":`, error)\n }\n }\n\n // Listen for changes to localStorage from other tabs/windows\n useEffect(() => {\n if (typeof window === 'undefined') {\n return\n }\n\n const handleStorageChange = (e: StorageEvent) => {\n if (e.key === key && e.newValue !== null) {\n try {\n setStoredValue(JSON.parse(e.newValue))\n } catch (error) {\n console.error(`Error parsing localStorage value for key \"${key}\":`, error)\n }\n }\n }\n\n // Aynı sekmedeki kardeş instance'lar\n const handleLocalSync = (e: Event) => {\n const detail = (e as CustomEvent<LocalSyncDetail>).detail\n if (detail && detail.key === key) {\n setStoredValue(detail.value as T)\n }\n }\n\n window.addEventListener('storage', handleStorageChange)\n window.addEventListener(LOCAL_SYNC_EVENT, handleLocalSync)\n return () => {\n window.removeEventListener('storage', handleStorageChange)\n window.removeEventListener(LOCAL_SYNC_EVENT, handleLocalSync)\n }\n }, [key])\n\n return [storedValue, setValue]\n}"],"mappings":";2EAEA,IAAAA,EAAuB,OAkEPC,EAAA,OA1DT,SAASC,EAAwB,CACtC,UAAAC,EAAY,EACZ,KAAAC,EAAO,KACP,WAAAC,EAAa,KACb,kBAAAC,EAAoB,GACpB,sBAAAC,EAAwB,GACxB,SAAAC,CACF,EAAoC,CAAC,EAAG,CACtC,GAAM,CAACC,EAAKC,CAAM,EAAU,WAAyB,IAAI,EACnD,CAACC,EAAgBC,CAAiB,EAAU,WAASL,CAAqB,EAC1EM,EAAe,SAAO,EAAK,EAEjC,OAAM,YAAU,IAAM,CACpB,GAAI,CAACJ,GAAO,CAAC,OAAO,sBAAyBI,EAAO,SAAWP,EAC7D,OAGF,IAAMQ,EAAW,IAAI,qBACnB,CAAC,CAACC,CAAK,IAAM,CAMX,GAAIF,EAAO,QACT,OAGF,IAAMG,EAAwBD,EAAM,eACpCH,EAAkBI,CAAqB,EACvCR,IAAWQ,EAAuBD,CAAK,EAEnCC,GAAyBV,IAC3BO,EAAO,QAAU,GAErB,EACA,CAAE,UAAAV,EAAW,KAAAC,EAAM,WAAAC,CAAW,CAChC,EAEA,OAAAS,EAAS,QAAQL,CAAG,EAEb,IAAMK,EAAS,WAAW,CACnC,EAAG,CAACL,EAAKN,EAAWC,EAAMC,EAAYC,EAAmBE,CAAQ,CAAC,EAE3D,CAAE,IAAKE,EAAQ,eAAAC,CAAe,CACvC,CCvDA,IAAAM,EAAoC,OAU9BC,EAAmB,uBAQlB,SAASC,EACdC,EACAC,EAC2C,CAG3C,GAAM,CAACC,EAAaC,CAAc,KAAI,YAAY,IAAM,CACtD,GAAI,OAAO,OAAW,IACpB,OAAOF,EAGT,GAAI,CAEF,IAAMG,EAAO,OAAO,aAAa,QAAQJ,CAAG,EAE5C,OAAOI,EAAO,KAAK,MAAMA,CAAI,EAAIH,CACnC,OAASI,EAAO,CAEd,eAAQ,MAAM,mCAAmCL,CAAG,KAAMK,CAAK,EACxDJ,CACT,CACF,CAAC,EAGKK,EAAYC,GAA+B,CAC/C,GAAI,CAEF,IAAMC,EAAeD,aAAiB,SAAWA,EAAML,CAAW,EAAIK,EAGtEJ,EAAeK,CAAY,EAGvB,OAAO,OAAW,MAChBA,IAAiB,OACnB,OAAO,aAAa,WAAWR,CAAG,EAElC,OAAO,aAAa,QAAQA,EAAK,KAAK,UAAUQ,CAAY,CAAC,EAI/D,OAAO,cACL,IAAI,YAA6BV,EAAkB,CACjD,OAAQ,CAAE,IAAAE,EAAK,MAAOQ,CAAa,CACrC,CAAC,CACH,EAEJ,OAASH,EAAO,CAEd,QAAQ,MAAM,mCAAmCL,CAAG,KAAMK,CAAK,CACjE,CACF,EAGA,sBAAU,IAAM,CACd,GAAI,OAAO,OAAW,IACpB,OAGF,IAAMI,EAAuBC,GAAoB,CAC/C,GAAIA,EAAE,MAAQV,GAAOU,EAAE,WAAa,KAClC,GAAI,CACFP,EAAe,KAAK,MAAMO,EAAE,QAAQ,CAAC,CACvC,OAASL,EAAO,CACd,QAAQ,MAAM,6CAA6CL,CAAG,KAAMK,CAAK,CAC3E,CAEJ,EAGMM,EAAmBD,GAAa,CACpC,IAAME,EAAUF,EAAmC,OAC/CE,GAAUA,EAAO,MAAQZ,GAC3BG,EAAeS,EAAO,KAAU,CAEpC,EAEA,cAAO,iBAAiB,UAAWH,CAAmB,EACtD,OAAO,iBAAiBX,EAAkBa,CAAe,EAClD,IAAM,CACX,OAAO,oBAAoB,UAAWF,CAAmB,EACzD,OAAO,oBAAoBX,EAAkBa,CAAe,CAC9D,CACF,EAAG,CAACX,CAAG,CAAC,EAED,CAACE,EAAaI,CAAQ,CAC/B","names":["React","import_jsx_runtime","useIntersectionObserver","threshold","root","rootMargin","freezeOnceVisible","initialIsIntersecting","onChange","ref","setRef","isIntersecting","setIsIntersecting","frozen","observer","entry","isElementIntersecting","import_react","LOCAL_SYNC_EVENT","useLocalStorage","key","initialValue","storedValue","setStoredValue","item","error","setValue","value","valueToStore","handleStorageChange","e","handleLocalSync","detail"]}
@@ -124,5 +124,5 @@ function useLocalStorage(key, initialValue) {
124
124
 
125
125
  exports.useIntersectionObserver = useIntersectionObserver;
126
126
  exports.useLocalStorage = useLocalStorage;
127
- //# sourceMappingURL=index.js.map
127
+ //# sourceMappingURL=out.js.map
128
128
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/use-intersection-observer.tsx","../../src/use-local-storage.tsx"],"names":["React","useState","useEffect"],"mappings":"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","file":"index.js","sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\n\nexport interface UseIntersectionObserverOptions extends IntersectionObserverInit {\n freezeOnceVisible?: boolean;\n initialIsIntersecting?: boolean;\n onChange?: (isIntersecting: boolean, entry: IntersectionObserverEntry) => void;\n}\n\nexport function useIntersectionObserver({\n threshold = 0,\n root = null,\n rootMargin = \"0%\",\n freezeOnceVisible = false,\n initialIsIntersecting = false,\n onChange,\n}: UseIntersectionObserverOptions = {}) {\n const [ref, setRef] = React.useState<Element | null>(null);\n const [isIntersecting, setIsIntersecting] = React.useState(initialIsIntersecting);\n const frozen = React.useRef(false);\n\n React.useEffect(() => {\n if (!ref || !window.IntersectionObserver || (frozen.current && freezeOnceVisible)) {\n return;\n }\n\n const observer = new IntersectionObserver(\n ([entry]) => {\n // freezeOnceVisible: bir kez görünür olduktan sonra state DONMALI.\n // frozen guard'ı yalnızca yukarıdaki effect girişinde vardı; effect'in\n // deps'i değişmediği için yeniden koşmuyor, dolayısıyla guard hiç\n // devreye girmiyordu. Canlı observer bir sonraki entry'de\n // setIsIntersecting(false) çağırıp donmayı bozuyordu.\n if (frozen.current) {\n return;\n }\n\n const isElementIntersecting = entry.isIntersecting;\n setIsIntersecting(isElementIntersecting);\n onChange?.(isElementIntersecting, entry);\n\n if (isElementIntersecting && freezeOnceVisible) {\n frozen.current = true;\n }\n },\n { threshold, root, rootMargin }\n );\n\n observer.observe(ref);\n\n return () => observer.disconnect();\n }, [ref, threshold, root, rootMargin, freezeOnceVisible, onChange]);\n\n return { ref: setRef, isIntersecting };\n}\n\n// Lazy load component wrapper\ninterface LazyLoadProps {\n children: React.ReactNode;\n placeholder?: React.ReactNode;\n threshold?: number;\n rootMargin?: string;\n className?: string;\n}\n\nexport function LazyLoad({\n children,\n placeholder = <div className=\"h-20 bg-muted animate-pulse rounded\" />,\n threshold = 0.1,\n rootMargin = \"50px\",\n className,\n}: LazyLoadProps) {\n const { ref, isIntersecting } = useIntersectionObserver({\n threshold,\n rootMargin,\n freezeOnceVisible: true,\n });\n\n return (\n <div ref={ref} className={className}>\n {isIntersecting ? children : placeholder}\n </div>\n );\n}\n\n// Image lazy loading hook\nexport function useLazyImageLoading(\n imageSrc: string,\n options?: UseIntersectionObserverOptions\n) {\n const [src, setSrc] = React.useState<string | undefined>(undefined);\n const { ref, isIntersecting } = useIntersectionObserver({\n threshold: 0.01,\n rootMargin: \"50px\",\n ...options,\n });\n\n React.useEffect(() => {\n if (isIntersecting && imageSrc) {\n const img = new Image();\n img.src = imageSrc;\n img.onload = () => setSrc(imageSrc);\n }\n }, [isIntersecting, imageSrc]);\n\n return { ref, src, isLoaded: !!src };\n}\n\n// Viewport visibility hook\nexport function useIsInViewport(options?: UseIntersectionObserverOptions) {\n return useIntersectionObserver(options);\n}\n\n// Multiple elements observer\nexport function useMultipleIntersectionObserver(\n options: UseIntersectionObserverOptions = {}\n) {\n const [elements, setElements] = React.useState<Map<Element, boolean>>(new Map());\n const observer = React.useRef<IntersectionObserver | null>(null);\n\n React.useEffect(() => {\n if (!window.IntersectionObserver) return;\n\n observer.current = new IntersectionObserver(\n (entries) => {\n setElements((prev) => {\n const next = new Map(prev);\n entries.forEach((entry) => {\n next.set(entry.target, entry.isIntersecting);\n });\n return next;\n });\n },\n {\n threshold: options.threshold || 0,\n root: options.root || null,\n rootMargin: options.rootMargin || \"0%\",\n }\n );\n\n return () => observer.current?.disconnect();\n }, [options.threshold, options.root, options.rootMargin]);\n\n const observe = React.useCallback((element: Element | null) => {\n if (element && observer.current) {\n observer.current.observe(element);\n }\n }, []);\n\n const unobserve = React.useCallback((element: Element | null) => {\n if (element && observer.current) {\n observer.current.unobserve(element);\n setElements((prev) => {\n const next = new Map(prev);\n next.delete(element);\n return next;\n });\n }\n }, []);\n\n return { observe, unobserve, elements };\n}","import { useState, useEffect } from 'react'\n\n/**\n * Aynı sekmedeki diğer hook instance'larını haberdar eden özel olay.\n *\n * Native `storage` olayı YALNIZCA diğer sekme/pencerelerde tetiklenir — değeri\n * yazan dokümanda hiç tetiklenmez. Bu yüzden aynı sayfada `useLocalStorage(\"k\")`\n * kullanan iki component birbirinden habersiz kalıyor, biri güncellenince\n * diğeri bayat değeri göstermeye devam ediyordu.\n */\nconst LOCAL_SYNC_EVENT = 'moonui:local-storage'\n\ninterface LocalSyncDetail {\n key: string\n value: unknown\n}\n\n// Local storage hook with error handling and SSR support\nexport function useLocalStorage<T>(\n key: string,\n initialValue: T\n): [T, (value: T | ((val: T) => T)) => void] {\n // State to store our value\n // Pass initial state function to useState so logic is only executed once\n const [storedValue, setStoredValue] = useState<T>(() => {\n if (typeof window === 'undefined') {\n return initialValue\n }\n \n try {\n // Get from local storage by key\n const item = window.localStorage.getItem(key)\n // Parse stored json or if none return initialValue\n return item ? JSON.parse(item) : initialValue\n } catch (error) {\n // If error also return initialValue\n console.error(`Error reading localStorage key \"${key}\":`, error)\n return initialValue\n }\n })\n\n // Return a wrapped version of useState's setter function that persists the new value to localStorage\n const setValue = (value: T | ((val: T) => T)) => {\n try {\n // Allow value to be a function so we have the same API as useState\n const valueToStore = value instanceof Function ? value(storedValue) : value\n \n // Save state\n setStoredValue(valueToStore)\n \n // Save to local storage\n if (typeof window !== 'undefined') {\n if (valueToStore === undefined) {\n window.localStorage.removeItem(key)\n } else {\n window.localStorage.setItem(key, JSON.stringify(valueToStore))\n }\n\n // Aynı dokümandaki diğer instance'ları bilgilendir (bkz. LOCAL_SYNC_EVENT)\n window.dispatchEvent(\n new CustomEvent<LocalSyncDetail>(LOCAL_SYNC_EVENT, {\n detail: { key, value: valueToStore },\n })\n )\n }\n } catch (error) {\n // A more advanced implementation would handle the error case\n console.error(`Error setting localStorage key \"${key}\":`, error)\n }\n }\n\n // Listen for changes to localStorage from other tabs/windows\n useEffect(() => {\n if (typeof window === 'undefined') {\n return\n }\n\n const handleStorageChange = (e: StorageEvent) => {\n if (e.key === key && e.newValue !== null) {\n try {\n setStoredValue(JSON.parse(e.newValue))\n } catch (error) {\n console.error(`Error parsing localStorage value for key \"${key}\":`, error)\n }\n }\n }\n\n // Aynı sekmedeki kardeş instance'lar\n const handleLocalSync = (e: Event) => {\n const detail = (e as CustomEvent<LocalSyncDetail>).detail\n if (detail && detail.key === key) {\n setStoredValue(detail.value as T)\n }\n }\n\n window.addEventListener('storage', handleStorageChange)\n window.addEventListener(LOCAL_SYNC_EVENT, handleLocalSync)\n return () => {\n window.removeEventListener('storage', handleStorageChange)\n window.removeEventListener(LOCAL_SYNC_EVENT, handleLocalSync)\n }\n }, [key])\n\n return [storedValue, setValue]\n}"]}
1
+ {"version":3,"sources":["../../src/use-intersection-observer.tsx","../../src/use-local-storage.tsx"],"names":["useState","useEffect"],"mappings":"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","sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\n\nexport interface UseIntersectionObserverOptions extends IntersectionObserverInit {\n freezeOnceVisible?: boolean;\n initialIsIntersecting?: boolean;\n onChange?: (isIntersecting: boolean, entry: IntersectionObserverEntry) => void;\n}\n\nexport function useIntersectionObserver({\n threshold = 0,\n root = null,\n rootMargin = \"0%\",\n freezeOnceVisible = false,\n initialIsIntersecting = false,\n onChange,\n}: UseIntersectionObserverOptions = {}) {\n const [ref, setRef] = React.useState<Element | null>(null);\n const [isIntersecting, setIsIntersecting] = React.useState(initialIsIntersecting);\n const frozen = React.useRef(false);\n\n React.useEffect(() => {\n if (!ref || !window.IntersectionObserver || (frozen.current && freezeOnceVisible)) {\n return;\n }\n\n const observer = new IntersectionObserver(\n ([entry]) => {\n // freezeOnceVisible: bir kez görünür olduktan sonra state DONMALI.\n // frozen guard'ı yalnızca yukarıdaki effect girişinde vardı; effect'in\n // deps'i değişmediği için yeniden koşmuyor, dolayısıyla guard hiç\n // devreye girmiyordu. Canlı observer bir sonraki entry'de\n // setIsIntersecting(false) çağırıp donmayı bozuyordu.\n if (frozen.current) {\n return;\n }\n\n const isElementIntersecting = entry.isIntersecting;\n setIsIntersecting(isElementIntersecting);\n onChange?.(isElementIntersecting, entry);\n\n if (isElementIntersecting && freezeOnceVisible) {\n frozen.current = true;\n }\n },\n { threshold, root, rootMargin }\n );\n\n observer.observe(ref);\n\n return () => observer.disconnect();\n }, [ref, threshold, root, rootMargin, freezeOnceVisible, onChange]);\n\n return { ref: setRef, isIntersecting };\n}\n\n// Lazy load component wrapper\ninterface LazyLoadProps {\n children: React.ReactNode;\n placeholder?: React.ReactNode;\n threshold?: number;\n rootMargin?: string;\n className?: string;\n}\n\nexport function LazyLoad({\n children,\n placeholder = <div className=\"h-20 bg-muted animate-pulse rounded\" />,\n threshold = 0.1,\n rootMargin = \"50px\",\n className,\n}: LazyLoadProps) {\n const { ref, isIntersecting } = useIntersectionObserver({\n threshold,\n rootMargin,\n freezeOnceVisible: true,\n });\n\n return (\n <div ref={ref} className={className}>\n {isIntersecting ? children : placeholder}\n </div>\n );\n}\n\n// Image lazy loading hook\nexport function useLazyImageLoading(\n imageSrc: string,\n options?: UseIntersectionObserverOptions\n) {\n const [src, setSrc] = React.useState<string | undefined>(undefined);\n const { ref, isIntersecting } = useIntersectionObserver({\n threshold: 0.01,\n rootMargin: \"50px\",\n ...options,\n });\n\n React.useEffect(() => {\n if (isIntersecting && imageSrc) {\n const img = new Image();\n img.src = imageSrc;\n img.onload = () => setSrc(imageSrc);\n }\n }, [isIntersecting, imageSrc]);\n\n return { ref, src, isLoaded: !!src };\n}\n\n// Viewport visibility hook\nexport function useIsInViewport(options?: UseIntersectionObserverOptions) {\n return useIntersectionObserver(options);\n}\n\n// Multiple elements observer\nexport function useMultipleIntersectionObserver(\n options: UseIntersectionObserverOptions = {}\n) {\n const [elements, setElements] = React.useState<Map<Element, boolean>>(new Map());\n const observer = React.useRef<IntersectionObserver | null>(null);\n\n React.useEffect(() => {\n if (!window.IntersectionObserver) return;\n\n observer.current = new IntersectionObserver(\n (entries) => {\n setElements((prev) => {\n const next = new Map(prev);\n entries.forEach((entry) => {\n next.set(entry.target, entry.isIntersecting);\n });\n return next;\n });\n },\n {\n threshold: options.threshold || 0,\n root: options.root || null,\n rootMargin: options.rootMargin || \"0%\",\n }\n );\n\n return () => observer.current?.disconnect();\n }, [options.threshold, options.root, options.rootMargin]);\n\n const observe = React.useCallback((element: Element | null) => {\n if (element && observer.current) {\n observer.current.observe(element);\n }\n }, []);\n\n const unobserve = React.useCallback((element: Element | null) => {\n if (element && observer.current) {\n observer.current.unobserve(element);\n setElements((prev) => {\n const next = new Map(prev);\n next.delete(element);\n return next;\n });\n }\n }, []);\n\n return { observe, unobserve, elements };\n}","import { useState, useEffect } from 'react'\n\n/**\n * Aynı sekmedeki diğer hook instance'larını haberdar eden özel olay.\n *\n * Native `storage` olayı YALNIZCA diğer sekme/pencerelerde tetiklenir — değeri\n * yazan dokümanda hiç tetiklenmez. Bu yüzden aynı sayfada `useLocalStorage(\"k\")`\n * kullanan iki component birbirinden habersiz kalıyor, biri güncellenince\n * diğeri bayat değeri göstermeye devam ediyordu.\n */\nconst LOCAL_SYNC_EVENT = 'moonui:local-storage'\n\ninterface LocalSyncDetail {\n key: string\n value: unknown\n}\n\n// Local storage hook with error handling and SSR support\nexport function useLocalStorage<T>(\n key: string,\n initialValue: T\n): [T, (value: T | ((val: T) => T)) => void] {\n // State to store our value\n // Pass initial state function to useState so logic is only executed once\n const [storedValue, setStoredValue] = useState<T>(() => {\n if (typeof window === 'undefined') {\n return initialValue\n }\n \n try {\n // Get from local storage by key\n const item = window.localStorage.getItem(key)\n // Parse stored json or if none return initialValue\n return item ? JSON.parse(item) : initialValue\n } catch (error) {\n // If error also return initialValue\n console.error(`Error reading localStorage key \"${key}\":`, error)\n return initialValue\n }\n })\n\n // Return a wrapped version of useState's setter function that persists the new value to localStorage\n const setValue = (value: T | ((val: T) => T)) => {\n try {\n // Allow value to be a function so we have the same API as useState\n const valueToStore = value instanceof Function ? value(storedValue) : value\n \n // Save state\n setStoredValue(valueToStore)\n \n // Save to local storage\n if (typeof window !== 'undefined') {\n if (valueToStore === undefined) {\n window.localStorage.removeItem(key)\n } else {\n window.localStorage.setItem(key, JSON.stringify(valueToStore))\n }\n\n // Aynı dokümandaki diğer instance'ları bilgilendir (bkz. LOCAL_SYNC_EVENT)\n window.dispatchEvent(\n new CustomEvent<LocalSyncDetail>(LOCAL_SYNC_EVENT, {\n detail: { key, value: valueToStore },\n })\n )\n }\n } catch (error) {\n // A more advanced implementation would handle the error case\n console.error(`Error setting localStorage key \"${key}\":`, error)\n }\n }\n\n // Listen for changes to localStorage from other tabs/windows\n useEffect(() => {\n if (typeof window === 'undefined') {\n return\n }\n\n const handleStorageChange = (e: StorageEvent) => {\n if (e.key === key && e.newValue !== null) {\n try {\n setStoredValue(JSON.parse(e.newValue))\n } catch (error) {\n console.error(`Error parsing localStorage value for key \"${key}\":`, error)\n }\n }\n }\n\n // Aynı sekmedeki kardeş instance'lar\n const handleLocalSync = (e: Event) => {\n const detail = (e as CustomEvent<LocalSyncDetail>).detail\n if (detail && detail.key === key) {\n setStoredValue(detail.value as T)\n }\n }\n\n window.addEventListener('storage', handleStorageChange)\n window.addEventListener(LOCAL_SYNC_EVENT, handleLocalSync)\n return () => {\n window.removeEventListener('storage', handleStorageChange)\n window.removeEventListener(LOCAL_SYNC_EVENT, handleLocalSync)\n }\n }, [key])\n\n return [storedValue, setValue]\n}"]}
@@ -102,5 +102,5 @@ function useLocalStorage(key, initialValue) {
102
102
  }
103
103
 
104
104
  export { useIntersectionObserver, useLocalStorage };
105
- //# sourceMappingURL=index.mjs.map
105
+ //# sourceMappingURL=out.js.map
106
106
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/use-intersection-observer.tsx","../../src/use-local-storage.tsx"],"names":["useState","useEffect"],"mappings":"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","file":"index.mjs","sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\n\nexport interface UseIntersectionObserverOptions extends IntersectionObserverInit {\n freezeOnceVisible?: boolean;\n initialIsIntersecting?: boolean;\n onChange?: (isIntersecting: boolean, entry: IntersectionObserverEntry) => void;\n}\n\nexport function useIntersectionObserver({\n threshold = 0,\n root = null,\n rootMargin = \"0%\",\n freezeOnceVisible = false,\n initialIsIntersecting = false,\n onChange,\n}: UseIntersectionObserverOptions = {}) {\n const [ref, setRef] = React.useState<Element | null>(null);\n const [isIntersecting, setIsIntersecting] = React.useState(initialIsIntersecting);\n const frozen = React.useRef(false);\n\n React.useEffect(() => {\n if (!ref || !window.IntersectionObserver || (frozen.current && freezeOnceVisible)) {\n return;\n }\n\n const observer = new IntersectionObserver(\n ([entry]) => {\n // freezeOnceVisible: bir kez görünür olduktan sonra state DONMALI.\n // frozen guard'ı yalnızca yukarıdaki effect girişinde vardı; effect'in\n // deps'i değişmediği için yeniden koşmuyor, dolayısıyla guard hiç\n // devreye girmiyordu. Canlı observer bir sonraki entry'de\n // setIsIntersecting(false) çağırıp donmayı bozuyordu.\n if (frozen.current) {\n return;\n }\n\n const isElementIntersecting = entry.isIntersecting;\n setIsIntersecting(isElementIntersecting);\n onChange?.(isElementIntersecting, entry);\n\n if (isElementIntersecting && freezeOnceVisible) {\n frozen.current = true;\n }\n },\n { threshold, root, rootMargin }\n );\n\n observer.observe(ref);\n\n return () => observer.disconnect();\n }, [ref, threshold, root, rootMargin, freezeOnceVisible, onChange]);\n\n return { ref: setRef, isIntersecting };\n}\n\n// Lazy load component wrapper\ninterface LazyLoadProps {\n children: React.ReactNode;\n placeholder?: React.ReactNode;\n threshold?: number;\n rootMargin?: string;\n className?: string;\n}\n\nexport function LazyLoad({\n children,\n placeholder = <div className=\"h-20 bg-muted animate-pulse rounded\" />,\n threshold = 0.1,\n rootMargin = \"50px\",\n className,\n}: LazyLoadProps) {\n const { ref, isIntersecting } = useIntersectionObserver({\n threshold,\n rootMargin,\n freezeOnceVisible: true,\n });\n\n return (\n <div ref={ref} className={className}>\n {isIntersecting ? children : placeholder}\n </div>\n );\n}\n\n// Image lazy loading hook\nexport function useLazyImageLoading(\n imageSrc: string,\n options?: UseIntersectionObserverOptions\n) {\n const [src, setSrc] = React.useState<string | undefined>(undefined);\n const { ref, isIntersecting } = useIntersectionObserver({\n threshold: 0.01,\n rootMargin: \"50px\",\n ...options,\n });\n\n React.useEffect(() => {\n if (isIntersecting && imageSrc) {\n const img = new Image();\n img.src = imageSrc;\n img.onload = () => setSrc(imageSrc);\n }\n }, [isIntersecting, imageSrc]);\n\n return { ref, src, isLoaded: !!src };\n}\n\n// Viewport visibility hook\nexport function useIsInViewport(options?: UseIntersectionObserverOptions) {\n return useIntersectionObserver(options);\n}\n\n// Multiple elements observer\nexport function useMultipleIntersectionObserver(\n options: UseIntersectionObserverOptions = {}\n) {\n const [elements, setElements] = React.useState<Map<Element, boolean>>(new Map());\n const observer = React.useRef<IntersectionObserver | null>(null);\n\n React.useEffect(() => {\n if (!window.IntersectionObserver) return;\n\n observer.current = new IntersectionObserver(\n (entries) => {\n setElements((prev) => {\n const next = new Map(prev);\n entries.forEach((entry) => {\n next.set(entry.target, entry.isIntersecting);\n });\n return next;\n });\n },\n {\n threshold: options.threshold || 0,\n root: options.root || null,\n rootMargin: options.rootMargin || \"0%\",\n }\n );\n\n return () => observer.current?.disconnect();\n }, [options.threshold, options.root, options.rootMargin]);\n\n const observe = React.useCallback((element: Element | null) => {\n if (element && observer.current) {\n observer.current.observe(element);\n }\n }, []);\n\n const unobserve = React.useCallback((element: Element | null) => {\n if (element && observer.current) {\n observer.current.unobserve(element);\n setElements((prev) => {\n const next = new Map(prev);\n next.delete(element);\n return next;\n });\n }\n }, []);\n\n return { observe, unobserve, elements };\n}","import { useState, useEffect } from 'react'\n\n/**\n * Aynı sekmedeki diğer hook instance'larını haberdar eden özel olay.\n *\n * Native `storage` olayı YALNIZCA diğer sekme/pencerelerde tetiklenir — değeri\n * yazan dokümanda hiç tetiklenmez. Bu yüzden aynı sayfada `useLocalStorage(\"k\")`\n * kullanan iki component birbirinden habersiz kalıyor, biri güncellenince\n * diğeri bayat değeri göstermeye devam ediyordu.\n */\nconst LOCAL_SYNC_EVENT = 'moonui:local-storage'\n\ninterface LocalSyncDetail {\n key: string\n value: unknown\n}\n\n// Local storage hook with error handling and SSR support\nexport function useLocalStorage<T>(\n key: string,\n initialValue: T\n): [T, (value: T | ((val: T) => T)) => void] {\n // State to store our value\n // Pass initial state function to useState so logic is only executed once\n const [storedValue, setStoredValue] = useState<T>(() => {\n if (typeof window === 'undefined') {\n return initialValue\n }\n \n try {\n // Get from local storage by key\n const item = window.localStorage.getItem(key)\n // Parse stored json or if none return initialValue\n return item ? JSON.parse(item) : initialValue\n } catch (error) {\n // If error also return initialValue\n console.error(`Error reading localStorage key \"${key}\":`, error)\n return initialValue\n }\n })\n\n // Return a wrapped version of useState's setter function that persists the new value to localStorage\n const setValue = (value: T | ((val: T) => T)) => {\n try {\n // Allow value to be a function so we have the same API as useState\n const valueToStore = value instanceof Function ? value(storedValue) : value\n \n // Save state\n setStoredValue(valueToStore)\n \n // Save to local storage\n if (typeof window !== 'undefined') {\n if (valueToStore === undefined) {\n window.localStorage.removeItem(key)\n } else {\n window.localStorage.setItem(key, JSON.stringify(valueToStore))\n }\n\n // Aynı dokümandaki diğer instance'ları bilgilendir (bkz. LOCAL_SYNC_EVENT)\n window.dispatchEvent(\n new CustomEvent<LocalSyncDetail>(LOCAL_SYNC_EVENT, {\n detail: { key, value: valueToStore },\n })\n )\n }\n } catch (error) {\n // A more advanced implementation would handle the error case\n console.error(`Error setting localStorage key \"${key}\":`, error)\n }\n }\n\n // Listen for changes to localStorage from other tabs/windows\n useEffect(() => {\n if (typeof window === 'undefined') {\n return\n }\n\n const handleStorageChange = (e: StorageEvent) => {\n if (e.key === key && e.newValue !== null) {\n try {\n setStoredValue(JSON.parse(e.newValue))\n } catch (error) {\n console.error(`Error parsing localStorage value for key \"${key}\":`, error)\n }\n }\n }\n\n // Aynı sekmedeki kardeş instance'lar\n const handleLocalSync = (e: Event) => {\n const detail = (e as CustomEvent<LocalSyncDetail>).detail\n if (detail && detail.key === key) {\n setStoredValue(detail.value as T)\n }\n }\n\n window.addEventListener('storage', handleStorageChange)\n window.addEventListener(LOCAL_SYNC_EVENT, handleLocalSync)\n return () => {\n window.removeEventListener('storage', handleStorageChange)\n window.removeEventListener(LOCAL_SYNC_EVENT, handleLocalSync)\n }\n }, [key])\n\n return [storedValue, setValue]\n}"]}
1
+ {"version":3,"sources":["../../src/use-intersection-observer.tsx","../../src/use-local-storage.tsx"],"names":["useState","useEffect"],"mappings":"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","sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\n\nexport interface UseIntersectionObserverOptions extends IntersectionObserverInit {\n freezeOnceVisible?: boolean;\n initialIsIntersecting?: boolean;\n onChange?: (isIntersecting: boolean, entry: IntersectionObserverEntry) => void;\n}\n\nexport function useIntersectionObserver({\n threshold = 0,\n root = null,\n rootMargin = \"0%\",\n freezeOnceVisible = false,\n initialIsIntersecting = false,\n onChange,\n}: UseIntersectionObserverOptions = {}) {\n const [ref, setRef] = React.useState<Element | null>(null);\n const [isIntersecting, setIsIntersecting] = React.useState(initialIsIntersecting);\n const frozen = React.useRef(false);\n\n React.useEffect(() => {\n if (!ref || !window.IntersectionObserver || (frozen.current && freezeOnceVisible)) {\n return;\n }\n\n const observer = new IntersectionObserver(\n ([entry]) => {\n // freezeOnceVisible: bir kez görünür olduktan sonra state DONMALI.\n // frozen guard'ı yalnızca yukarıdaki effect girişinde vardı; effect'in\n // deps'i değişmediği için yeniden koşmuyor, dolayısıyla guard hiç\n // devreye girmiyordu. Canlı observer bir sonraki entry'de\n // setIsIntersecting(false) çağırıp donmayı bozuyordu.\n if (frozen.current) {\n return;\n }\n\n const isElementIntersecting = entry.isIntersecting;\n setIsIntersecting(isElementIntersecting);\n onChange?.(isElementIntersecting, entry);\n\n if (isElementIntersecting && freezeOnceVisible) {\n frozen.current = true;\n }\n },\n { threshold, root, rootMargin }\n );\n\n observer.observe(ref);\n\n return () => observer.disconnect();\n }, [ref, threshold, root, rootMargin, freezeOnceVisible, onChange]);\n\n return { ref: setRef, isIntersecting };\n}\n\n// Lazy load component wrapper\ninterface LazyLoadProps {\n children: React.ReactNode;\n placeholder?: React.ReactNode;\n threshold?: number;\n rootMargin?: string;\n className?: string;\n}\n\nexport function LazyLoad({\n children,\n placeholder = <div className=\"h-20 bg-muted animate-pulse rounded\" />,\n threshold = 0.1,\n rootMargin = \"50px\",\n className,\n}: LazyLoadProps) {\n const { ref, isIntersecting } = useIntersectionObserver({\n threshold,\n rootMargin,\n freezeOnceVisible: true,\n });\n\n return (\n <div ref={ref} className={className}>\n {isIntersecting ? children : placeholder}\n </div>\n );\n}\n\n// Image lazy loading hook\nexport function useLazyImageLoading(\n imageSrc: string,\n options?: UseIntersectionObserverOptions\n) {\n const [src, setSrc] = React.useState<string | undefined>(undefined);\n const { ref, isIntersecting } = useIntersectionObserver({\n threshold: 0.01,\n rootMargin: \"50px\",\n ...options,\n });\n\n React.useEffect(() => {\n if (isIntersecting && imageSrc) {\n const img = new Image();\n img.src = imageSrc;\n img.onload = () => setSrc(imageSrc);\n }\n }, [isIntersecting, imageSrc]);\n\n return { ref, src, isLoaded: !!src };\n}\n\n// Viewport visibility hook\nexport function useIsInViewport(options?: UseIntersectionObserverOptions) {\n return useIntersectionObserver(options);\n}\n\n// Multiple elements observer\nexport function useMultipleIntersectionObserver(\n options: UseIntersectionObserverOptions = {}\n) {\n const [elements, setElements] = React.useState<Map<Element, boolean>>(new Map());\n const observer = React.useRef<IntersectionObserver | null>(null);\n\n React.useEffect(() => {\n if (!window.IntersectionObserver) return;\n\n observer.current = new IntersectionObserver(\n (entries) => {\n setElements((prev) => {\n const next = new Map(prev);\n entries.forEach((entry) => {\n next.set(entry.target, entry.isIntersecting);\n });\n return next;\n });\n },\n {\n threshold: options.threshold || 0,\n root: options.root || null,\n rootMargin: options.rootMargin || \"0%\",\n }\n );\n\n return () => observer.current?.disconnect();\n }, [options.threshold, options.root, options.rootMargin]);\n\n const observe = React.useCallback((element: Element | null) => {\n if (element && observer.current) {\n observer.current.observe(element);\n }\n }, []);\n\n const unobserve = React.useCallback((element: Element | null) => {\n if (element && observer.current) {\n observer.current.unobserve(element);\n setElements((prev) => {\n const next = new Map(prev);\n next.delete(element);\n return next;\n });\n }\n }, []);\n\n return { observe, unobserve, elements };\n}","import { useState, useEffect } from 'react'\n\n/**\n * Aynı sekmedeki diğer hook instance'larını haberdar eden özel olay.\n *\n * Native `storage` olayı YALNIZCA diğer sekme/pencerelerde tetiklenir — değeri\n * yazan dokümanda hiç tetiklenmez. Bu yüzden aynı sayfada `useLocalStorage(\"k\")`\n * kullanan iki component birbirinden habersiz kalıyor, biri güncellenince\n * diğeri bayat değeri göstermeye devam ediyordu.\n */\nconst LOCAL_SYNC_EVENT = 'moonui:local-storage'\n\ninterface LocalSyncDetail {\n key: string\n value: unknown\n}\n\n// Local storage hook with error handling and SSR support\nexport function useLocalStorage<T>(\n key: string,\n initialValue: T\n): [T, (value: T | ((val: T) => T)) => void] {\n // State to store our value\n // Pass initial state function to useState so logic is only executed once\n const [storedValue, setStoredValue] = useState<T>(() => {\n if (typeof window === 'undefined') {\n return initialValue\n }\n \n try {\n // Get from local storage by key\n const item = window.localStorage.getItem(key)\n // Parse stored json or if none return initialValue\n return item ? JSON.parse(item) : initialValue\n } catch (error) {\n // If error also return initialValue\n console.error(`Error reading localStorage key \"${key}\":`, error)\n return initialValue\n }\n })\n\n // Return a wrapped version of useState's setter function that persists the new value to localStorage\n const setValue = (value: T | ((val: T) => T)) => {\n try {\n // Allow value to be a function so we have the same API as useState\n const valueToStore = value instanceof Function ? value(storedValue) : value\n \n // Save state\n setStoredValue(valueToStore)\n \n // Save to local storage\n if (typeof window !== 'undefined') {\n if (valueToStore === undefined) {\n window.localStorage.removeItem(key)\n } else {\n window.localStorage.setItem(key, JSON.stringify(valueToStore))\n }\n\n // Aynı dokümandaki diğer instance'ları bilgilendir (bkz. LOCAL_SYNC_EVENT)\n window.dispatchEvent(\n new CustomEvent<LocalSyncDetail>(LOCAL_SYNC_EVENT, {\n detail: { key, value: valueToStore },\n })\n )\n }\n } catch (error) {\n // A more advanced implementation would handle the error case\n console.error(`Error setting localStorage key \"${key}\":`, error)\n }\n }\n\n // Listen for changes to localStorage from other tabs/windows\n useEffect(() => {\n if (typeof window === 'undefined') {\n return\n }\n\n const handleStorageChange = (e: StorageEvent) => {\n if (e.key === key && e.newValue !== null) {\n try {\n setStoredValue(JSON.parse(e.newValue))\n } catch (error) {\n console.error(`Error parsing localStorage value for key \"${key}\":`, error)\n }\n }\n }\n\n // Aynı sekmedeki kardeş instance'lar\n const handleLocalSync = (e: Event) => {\n const detail = (e as CustomEvent<LocalSyncDetail>).detail\n if (detail && detail.key === key) {\n setStoredValue(detail.value as T)\n }\n }\n\n window.addEventListener('storage', handleStorageChange)\n window.addEventListener(LOCAL_SYNC_EVENT, handleLocalSync)\n return () => {\n window.removeEventListener('storage', handleStorageChange)\n window.removeEventListener(LOCAL_SYNC_EVENT, handleLocalSync)\n }\n }, [key])\n\n return [storedValue, setValue]\n}"]}
package/dist/index.d.mts CHANGED
@@ -116,6 +116,12 @@ interface BadgeProps extends React.HTMLAttributes<HTMLDivElement>, Omit<VariantP
116
116
  dotColor?: string;
117
117
  removable?: boolean;
118
118
  onRemove?: () => void;
119
+ /**
120
+ * Kaldırma düğmesinin erişilebilir adı için açık değer.
121
+ * Verilmezse ad rozetin görünen içeriğinden türetilir; içerik metne
122
+ * çevrilemiyorsa (ör. yalnız ikon) "Remove badge"e düşülür. (#298)
123
+ */
124
+ removeLabel?: string;
119
125
  leftIcon?: React.ReactNode;
120
126
  rightIcon?: React.ReactNode;
121
127
  variant?: 'primary' | 'secondary' | 'destructive' | 'outline' | 'success' | 'warning' | 'ghost' | 'pro' | 'admin';
@@ -2006,4 +2012,4 @@ declare const ToggleGroupItem: React.ForwardRefExoticComponent<ToggleGroupItemPr
2006
2012
 
2007
2013
  declare function cn(...inputs: ClassValue[]): string;
2008
2014
 
2009
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, type AlertProps, AlertTitle, AspectRatio, type AspectRatioProps, Avatar, AvatarFallback, AvatarGroup, type AvatarGroupProps, AvatarImage, type AvatarProps, Badge, type BadgeProps, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, type ButtonGroupProps, type ButtonProps, Card, CardCVCInput, type CardCVCInputProps, CardContent, CardDescription, CardExpiryInput, type CardExpiryInputProps, CardFooter, CardHeader, CardNumberInput, type CardNumberInputProps, type CardProps, CardTitle, CardZipInput, type CardZipInputProps, Carousel, type CarouselApi, CarouselContent, type CarouselContentProps, CarouselItem, type CarouselItemProps, CarouselNext, type CarouselOptions, type CarouselPlugin, CarouselPrevious, type CarouselProps, Checkbox, CheckboxGroup, type CheckboxGroupProps, CheckboxLabel, type CheckboxLabelProps, type CheckboxProps, CheckboxWithLabel, type CheckboxWithLabelProps, Collapsible, CollapsibleContent, type CollapsibleContentProps, CollapsibleTrigger, type CollapsibleTriggerProps, ColorPicker, type ColorPickerProps, type ColumnDefinition, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, DatePicker, type DatePickerProps, DateRangePicker, type DateRangePickerProps, DateTimePicker, type DateTimePickerProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogForm, DialogHeader, DialogTitle, DialogTrigger, DraggableList, type DraggableListProps, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, FileUpload, type FileUploadEntry, type FileUploadProps, FreeBadge, GestureDrawer, type GestureDrawerProps, GitHubStarButton, GitHubStars, GradientPicker, type GradientPickerProps, Input, InputOTP, InputOTPGroup, type InputOTPProps, InputOTPSeparator, InputOTPSlot, type InputOTPSlotProps, type InputProps, Kbd, type KbdProps, Label, type LabelProps, LockedComponent, MonthPicker, type MonthPickerProps, MoonLogo, MoonLogoAnimated, MoonLogoIcon, Accordion as MoonUIAccordion, AccordionContent as MoonUIAccordionContent, AccordionItem as MoonUIAccordionItem, AccordionTrigger as MoonUIAccordionTrigger, Alert as MoonUIAlert, AlertDescription as MoonUIAlertDescription, type AlertProps as MoonUIAlertProps, AlertTitle as MoonUIAlertTitle, AspectRatio as MoonUIAspectRatio, Avatar as MoonUIAvatar, AvatarFallback as MoonUIAvatarFallback, AvatarGroup as MoonUIAvatarGroup, type AvatarGroupProps as MoonUIAvatarGroupProps, AvatarImage as MoonUIAvatarImage, type AvatarProps as MoonUIAvatarProps, Badge as MoonUIBadge, type BadgeProps as MoonUIBadgeProps, Breadcrumb as MoonUIBreadcrumb, BreadcrumbEllipsis as MoonUIBreadcrumbEllipsis, BreadcrumbItem as MoonUIBreadcrumbItem, BreadcrumbLink as MoonUIBreadcrumbLink, BreadcrumbList as MoonUIBreadcrumbList, BreadcrumbPage as MoonUIBreadcrumbPage, BreadcrumbSeparator as MoonUIBreadcrumbSeparator, Button as MoonUIButton, ButtonGroup as MoonUIButtonGroup, type ButtonGroupProps as MoonUIButtonGroupProps, type ButtonProps as MoonUIButtonProps, Calendar as MoonUICalendar, type CalendarProps as MoonUICalendarProps, Card as MoonUICard, CardCVCInput as MoonUICardCVCInput, CardContent as MoonUICardContent, CardDescription as MoonUICardDescription, CardExpiryInput as MoonUICardExpiryInput, CardFooter as MoonUICardFooter, CardHeader as MoonUICardHeader, CardNumberInput as MoonUICardNumberInput, type CardProps as MoonUICardProps, CardTitle as MoonUICardTitle, CardZipInput as MoonUICardZipInput, Carousel as MoonUICarousel, type CarouselApi as MoonUICarouselApi, CarouselContent as MoonUICarouselContent, CarouselItem as MoonUICarouselItem, CarouselNext as MoonUICarouselNext, CarouselPrevious as MoonUICarouselPrevious, type CarouselProps as MoonUICarouselProps, Checkbox as MoonUICheckbox, CheckboxGroup as MoonUICheckboxGroup, type CheckboxGroupProps as MoonUICheckboxGroupProps, CheckboxLabel as MoonUICheckboxLabel, type CheckboxLabelProps as MoonUICheckboxLabelProps, type CheckboxProps as MoonUICheckboxProps, CheckboxWithLabel as MoonUICheckboxWithLabel, type CheckboxWithLabelProps as MoonUICheckboxWithLabelProps, Collapsible as MoonUICollapsible, CollapsibleContent as MoonUICollapsibleContent, CollapsibleTrigger as MoonUICollapsibleTrigger, ColorPicker as MoonUIColorPicker, type ColorPickerProps as MoonUIColorPickerProps, Command as MoonUICommand, CommandDialog as MoonUICommandDialog, CommandEmpty as MoonUICommandEmpty, CommandGroup as MoonUICommandGroup, CommandInput as MoonUICommandInput, CommandItem as MoonUICommandItem, CommandList as MoonUICommandList, CommandSeparator as MoonUICommandSeparator, CommandShortcut as MoonUICommandShortcut, DataTableBasic as MoonUIDataTableBasic, DatePicker as MoonUIDatePicker, type DatePickerProps as MoonUIDatePickerProps, DateRangePicker as MoonUIDateRangePicker, DateTimePicker as MoonUIDateTimePicker, Dialog as MoonUIDialog, DialogClose as MoonUIDialogClose, DialogContent as MoonUIDialogContent, DialogDescription as MoonUIDialogDescription, DialogFooter as MoonUIDialogFooter, DialogHeader as MoonUIDialogHeader, DialogTitle as MoonUIDialogTitle, DialogTrigger as MoonUIDialogTrigger, DraggableList as MoonUIDraggableList, type DraggableListProps as MoonUIDraggableListProps, DropdownMenu as MoonUIDropdownMenu, DropdownMenuCheckboxItem as MoonUIDropdownMenuCheckboxItem, DropdownMenuContent as MoonUIDropdownMenuContent, DropdownMenuGroup as MoonUIDropdownMenuGroup, DropdownMenuItem as MoonUIDropdownMenuItem, DropdownMenuLabel as MoonUIDropdownMenuLabel, DropdownMenuPortal as MoonUIDropdownMenuPortal, DropdownMenuRadioGroup as MoonUIDropdownMenuRadioGroup, DropdownMenuRadioItem as MoonUIDropdownMenuRadioItem, DropdownMenuSeparator as MoonUIDropdownMenuSeparator, DropdownMenuShortcut as MoonUIDropdownMenuShortcut, DropdownMenuSub as MoonUIDropdownMenuSub, DropdownMenuSubContent as MoonUIDropdownMenuSubContent, DropdownMenuSubTrigger as MoonUIDropdownMenuSubTrigger, DropdownMenuTrigger as MoonUIDropdownMenuTrigger, FileUpload as MoonUIFileUpload, type FileUploadEntry as MoonUIFileUploadEntry, type FileUploadProps as MoonUIFileUploadProps, FreeBadge as MoonUIFreeBadge, GestureDrawer as MoonUIGestureDrawer, type GestureDrawerProps as MoonUIGestureDrawerProps, GitHubStars as MoonUIGitHubStars, GradientPicker as MoonUIGradientPicker, Input as MoonUIInput, InputOTP as MoonUIInputOTP, InputOTPGroup as MoonUIInputOTPGroup, type InputOTPProps as MoonUIInputOTPProps, InputOTPSeparator as MoonUIInputOTPSeparator, InputOTPSlot as MoonUIInputOTPSlot, type InputProps as MoonUIInputProps, Kbd as MoonUIKbd, type KbdProps as MoonUIKbdProps, Label as MoonUILabel, type LabelProps as MoonUILabelProps, LockedComponent as MoonUILockedComponent, MonthPicker as MoonUIMonthPicker, MoonLogo as MoonUIMoonLogo, Pagination as MoonUIPagination, PaginationContent as MoonUIPaginationContent, PaginationEllipsis as MoonUIPaginationEllipsis, PaginationItem as MoonUIPaginationItem, PaginationLink as MoonUIPaginationLink, PaginationNext as MoonUIPaginationNext, PaginationPrevious as MoonUIPaginationPrevious, PhoneInput as MoonUIPhoneInput, Popover as MoonUIPopover, PopoverContent as MoonUIPopoverContent, PopoverTrigger as MoonUIPopoverTrigger, ProBadge as MoonUIProBadge, ProComponentWrapper as MoonUIProComponentWrapper, Progress as MoonUIProgress, type ProgressProps as MoonUIProgressProps, RadioGroup as MoonUIRadioGroup, RadioGroupItem as MoonUIRadioGroupItem, type RadioGroupItemProps as MoonUIRadioGroupItemProps, type RadioGroupProps as MoonUIRadioGroupProps, RadioItemWithLabel as MoonUIRadioItemWithLabel, type RadioItemWithLabelProps as MoonUIRadioItemWithLabelProps, RadioLabel as MoonUIRadioLabel, type RadioLabelProps as MoonUIRadioLabelProps, Rating as MoonUIRating, type RatingProps as MoonUIRatingProps, RichTextEditor as MoonUIRichTextEditor, ScrollArea as MoonUIScrollArea, ScrollBar as MoonUIScrollBar, ScrollReveal as MoonUIScrollReveal, ScrollRevealContainer as MoonUIScrollRevealContainer, ScrollRevealItem as MoonUIScrollRevealItem, Select as MoonUISelect, SelectContent as MoonUISelectContent, SelectGroup as MoonUISelectGroup, SelectItem as MoonUISelectItem, type SelectItemProps as MoonUISelectItemProps, SelectLabel as MoonUISelectLabel, SelectScrollDownButton as MoonUISelectScrollDownButton, SelectScrollUpButton as MoonUISelectScrollUpButton, SelectSeparator as MoonUISelectSeparator, SelectTrigger as MoonUISelectTrigger, type SelectTriggerProps as MoonUISelectTriggerProps, SelectValue as MoonUISelectValue, Separator as MoonUISeparator, SimpleColorPicker as MoonUISimpleColorPicker, SimpleEditor as MoonUISimpleEditor, type SimpleEditorProps as MoonUISimpleEditorProps, Skeleton as MoonUISkeleton, SkeletonAvatar as MoonUISkeletonAvatar, SkeletonCard as MoonUISkeletonCard, type SkeletonProps as MoonUISkeletonProps, SkeletonText as MoonUISkeletonText, Slider as MoonUISlider, type SliderBaseProps as MoonUISliderBaseProps, type SliderProps as MoonUISliderProps, Spinner as MoonUISpinner, type SpinnerProps as MoonUISpinnerProps, SwipeableCard as MoonUISwipeableCard, Switch as MoonUISwitch, type SwitchProps as MoonUISwitchProps, Table as MoonUITable, TableBody as MoonUITableBody, TableCaption as MoonUITableCaption, TableCell as MoonUITableCell, TableFooter as MoonUITableFooter, TableHead as MoonUITableHead, TableHeader as MoonUITableHeader, TableRow as MoonUITableRow, Tabs as MoonUITabs, TabsContent as MoonUITabsContent, TabsList as MoonUITabsList, TabsTrigger as MoonUITabsTrigger, TagsInput as MoonUITagsInput, type TagsInputProps as MoonUITagsInputProps, Textarea as MoonUITextarea, type TextareaProps as MoonUITextareaProps, Toast as MoonUIToast, ToastAction as MoonUIToastAction, ToastClose as MoonUIToastClose, ToastDescription as MoonUIToastDescription, ToastProvider as MoonUIToastProvider, ToastTitle as MoonUIToastTitle, ToastViewport as MoonUIToastViewport, Toaster as MoonUIToaster, Toggle as MoonUIToggle, ToggleGroup as MoonUIToggleGroup, ToggleGroupItem as MoonUIToggleGroupItem, type ToggleGroupItemProps as MoonUIToggleGroupItemProps, type ToggleGroupProps as MoonUIToggleGroupProps, type ToggleProps as MoonUIToggleProps, Tooltip as MoonUITooltip, TooltipContent as MoonUITooltipContent, TooltipProvider as MoonUITooltipProvider, TooltipTrigger as MoonUITooltipTrigger, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PhoneInput, type PhoneInputProps, Popover, PopoverAnchor, PopoverClose, PopoverContent, type PopoverContentProps, PopoverFooter, PopoverHeader, PopoverSeparator, PopoverTrigger, ProBadge, ProComponentWrapper, Progress, type ProgressProps, RadioGroup, RadioGroupItem, type RadioGroupItemProps, type RadioGroupProps, RadioItemWithLabel, type RadioItemWithLabelProps, RadioLabel, type RadioLabelProps, Rating, type RatingProps, RichTextEditor, type RichTextEditorProps, ScrollArea, ScrollBar, ScrollReveal, ScrollRevealContainer, type ScrollRevealContainerProps, ScrollRevealItem, type ScrollRevealItemProps, type ScrollRevealProps, Select, SelectContent, SelectGroup, SelectItem, type SelectItemProps, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, type SelectTriggerProps, SelectValue, Separator, type SeparatorProps, SimpleColorPicker, type SimpleColorPickerProps, SimpleEditor, type SimpleEditorProps, SimpleTooltip, type SimpleTooltipProps, Skeleton, SkeletonAvatar, type SkeletonAvatarProps, SkeletonCard, type SkeletonCardProps, type SkeletonProps, SkeletonText, type SkeletonTextProps, Slider, type SliderBaseProps, type SliderProps, type SortDirection, Spinner, type SpinnerProps, SwipeableCard, type SwipeableCardProps, Switch, type SwitchProps, type SwitchSize, type SwitchVariant, Table, TableBody, type TableBodyProps, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TagsInput, type TagsInputProps, Textarea, type TextareaProps, Toast, ToastAction, type ToastActionElement, ToastClose, ToastDescription, type ToastProps, ToastProvider, ToastTitle, ToastViewport, Toaster, Toggle, ToggleGroup, ToggleGroupItem, type ToggleGroupItemProps, type ToggleGroupProps, type ToggleProps, Tooltip, TooltipArrow, TooltipContent, type TooltipContentProps, TooltipProvider, TooltipTrigger, aspectRatioVariants, badgeVariants, buttonGroupVariants, buttonVariants, carouselContentVariants, carouselItemVariants, cn, collapsibleContentVariants, collapsibleTriggerVariants, inputOTPSlotVariants, kbdVariants, badgeVariants as moonUIBadgeVariants, buttonGroupVariants as moonUIButtonGroupVariants, buttonVariants as moonUIButtonVariants, carouselContentVariants as moonUICarouselContentVariants, carouselItemVariants as moonUICarouselItemVariants, createSortableHeader as moonUICreateSortableHeader, inputOTPSlotVariants as moonUIInputOTPSlotVariants, kbdVariants as moonUIKbdVariants, ratingVariants as moonUIRatingVariants, skeletonVariants as moonUISkeletonVariants, spinnerVariants as moonUISpinnerVariants, toggleVariants as moonUIToggleVariants, popoverContentVariants, progressVariants, ratingVariants, separatorVariants, skeletonVariants, spinnerVariants, switchVariants, toast, toggleVariants, tooltipVariants, useCarousel, useToast };
2015
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertProps, AlertTitle, AspectRatio, AspectRatioProps, Avatar, AvatarFallback, AvatarGroup, AvatarGroupProps, AvatarImage, AvatarProps, Badge, BadgeProps, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, ButtonGroupProps, ButtonProps, Card, CardCVCInput, CardCVCInputProps, CardContent, CardDescription, CardExpiryInput, CardExpiryInputProps, CardFooter, CardHeader, CardNumberInput, CardNumberInputProps, CardProps, CardTitle, CardZipInput, CardZipInputProps, Carousel, CarouselApi, CarouselContent, CarouselContentProps, CarouselItem, CarouselItemProps, CarouselNext, CarouselOptions, CarouselPlugin, CarouselPrevious, CarouselProps, Checkbox, CheckboxGroup, CheckboxGroupProps, CheckboxLabel, CheckboxLabelProps, CheckboxProps, CheckboxWithLabel, CheckboxWithLabelProps, Collapsible, CollapsibleContent, CollapsibleContentProps, CollapsibleTrigger, CollapsibleTriggerProps, ColorPicker, ColorPickerProps, ColumnDefinition, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, DatePicker, DatePickerProps, DateRangePicker, DateRangePickerProps, DateTimePicker, DateTimePickerProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogForm, DialogHeader, DialogTitle, DialogTrigger, DraggableList, DraggableListProps, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, FileUpload, FileUploadEntry, FileUploadProps, FreeBadge, GestureDrawer, GestureDrawerProps, GitHubStarButton, GitHubStars, GradientPicker, GradientPickerProps, Input, InputOTP, InputOTPGroup, InputOTPProps, InputOTPSeparator, InputOTPSlot, InputOTPSlotProps, InputProps, Kbd, KbdProps, Label, LabelProps, LockedComponent, MonthPicker, MonthPickerProps, MoonLogo, MoonLogoAnimated, MoonLogoIcon, Accordion as MoonUIAccordion, AccordionContent as MoonUIAccordionContent, AccordionItem as MoonUIAccordionItem, AccordionTrigger as MoonUIAccordionTrigger, Alert as MoonUIAlert, AlertDescription as MoonUIAlertDescription, AlertProps as MoonUIAlertProps, AlertTitle as MoonUIAlertTitle, AspectRatio as MoonUIAspectRatio, Avatar as MoonUIAvatar, AvatarFallback as MoonUIAvatarFallback, AvatarGroup as MoonUIAvatarGroup, AvatarGroupProps as MoonUIAvatarGroupProps, AvatarImage as MoonUIAvatarImage, AvatarProps as MoonUIAvatarProps, Badge as MoonUIBadge, BadgeProps as MoonUIBadgeProps, Breadcrumb as MoonUIBreadcrumb, BreadcrumbEllipsis as MoonUIBreadcrumbEllipsis, BreadcrumbItem as MoonUIBreadcrumbItem, BreadcrumbLink as MoonUIBreadcrumbLink, BreadcrumbList as MoonUIBreadcrumbList, BreadcrumbPage as MoonUIBreadcrumbPage, BreadcrumbSeparator as MoonUIBreadcrumbSeparator, Button as MoonUIButton, ButtonGroup as MoonUIButtonGroup, ButtonGroupProps as MoonUIButtonGroupProps, ButtonProps as MoonUIButtonProps, Calendar as MoonUICalendar, CalendarProps as MoonUICalendarProps, Card as MoonUICard, CardCVCInput as MoonUICardCVCInput, CardContent as MoonUICardContent, CardDescription as MoonUICardDescription, CardExpiryInput as MoonUICardExpiryInput, CardFooter as MoonUICardFooter, CardHeader as MoonUICardHeader, CardNumberInput as MoonUICardNumberInput, CardProps as MoonUICardProps, CardTitle as MoonUICardTitle, CardZipInput as MoonUICardZipInput, Carousel as MoonUICarousel, CarouselApi as MoonUICarouselApi, CarouselContent as MoonUICarouselContent, CarouselItem as MoonUICarouselItem, CarouselNext as MoonUICarouselNext, CarouselPrevious as MoonUICarouselPrevious, CarouselProps as MoonUICarouselProps, Checkbox as MoonUICheckbox, CheckboxGroup as MoonUICheckboxGroup, CheckboxGroupProps as MoonUICheckboxGroupProps, CheckboxLabel as MoonUICheckboxLabel, CheckboxLabelProps as MoonUICheckboxLabelProps, CheckboxProps as MoonUICheckboxProps, CheckboxWithLabel as MoonUICheckboxWithLabel, CheckboxWithLabelProps as MoonUICheckboxWithLabelProps, Collapsible as MoonUICollapsible, CollapsibleContent as MoonUICollapsibleContent, CollapsibleTrigger as MoonUICollapsibleTrigger, ColorPicker as MoonUIColorPicker, ColorPickerProps as MoonUIColorPickerProps, Command as MoonUICommand, CommandDialog as MoonUICommandDialog, CommandEmpty as MoonUICommandEmpty, CommandGroup as MoonUICommandGroup, CommandInput as MoonUICommandInput, CommandItem as MoonUICommandItem, CommandList as MoonUICommandList, CommandSeparator as MoonUICommandSeparator, CommandShortcut as MoonUICommandShortcut, DataTableBasic as MoonUIDataTableBasic, DatePicker as MoonUIDatePicker, DatePickerProps as MoonUIDatePickerProps, DateRangePicker as MoonUIDateRangePicker, DateTimePicker as MoonUIDateTimePicker, Dialog as MoonUIDialog, DialogClose as MoonUIDialogClose, DialogContent as MoonUIDialogContent, DialogDescription as MoonUIDialogDescription, DialogFooter as MoonUIDialogFooter, DialogHeader as MoonUIDialogHeader, DialogTitle as MoonUIDialogTitle, DialogTrigger as MoonUIDialogTrigger, DraggableList as MoonUIDraggableList, DraggableListProps as MoonUIDraggableListProps, DropdownMenu as MoonUIDropdownMenu, DropdownMenuCheckboxItem as MoonUIDropdownMenuCheckboxItem, DropdownMenuContent as MoonUIDropdownMenuContent, DropdownMenuGroup as MoonUIDropdownMenuGroup, DropdownMenuItem as MoonUIDropdownMenuItem, DropdownMenuLabel as MoonUIDropdownMenuLabel, DropdownMenuPortal as MoonUIDropdownMenuPortal, DropdownMenuRadioGroup as MoonUIDropdownMenuRadioGroup, DropdownMenuRadioItem as MoonUIDropdownMenuRadioItem, DropdownMenuSeparator as MoonUIDropdownMenuSeparator, DropdownMenuShortcut as MoonUIDropdownMenuShortcut, DropdownMenuSub as MoonUIDropdownMenuSub, DropdownMenuSubContent as MoonUIDropdownMenuSubContent, DropdownMenuSubTrigger as MoonUIDropdownMenuSubTrigger, DropdownMenuTrigger as MoonUIDropdownMenuTrigger, FileUpload as MoonUIFileUpload, FileUploadEntry as MoonUIFileUploadEntry, FileUploadProps as MoonUIFileUploadProps, FreeBadge as MoonUIFreeBadge, GestureDrawer as MoonUIGestureDrawer, GestureDrawerProps as MoonUIGestureDrawerProps, GitHubStars as MoonUIGitHubStars, GradientPicker as MoonUIGradientPicker, Input as MoonUIInput, InputOTP as MoonUIInputOTP, InputOTPGroup as MoonUIInputOTPGroup, InputOTPProps as MoonUIInputOTPProps, InputOTPSeparator as MoonUIInputOTPSeparator, InputOTPSlot as MoonUIInputOTPSlot, InputProps as MoonUIInputProps, Kbd as MoonUIKbd, KbdProps as MoonUIKbdProps, Label as MoonUILabel, LabelProps as MoonUILabelProps, LockedComponent as MoonUILockedComponent, MonthPicker as MoonUIMonthPicker, MoonLogo as MoonUIMoonLogo, Pagination as MoonUIPagination, PaginationContent as MoonUIPaginationContent, PaginationEllipsis as MoonUIPaginationEllipsis, PaginationItem as MoonUIPaginationItem, PaginationLink as MoonUIPaginationLink, PaginationNext as MoonUIPaginationNext, PaginationPrevious as MoonUIPaginationPrevious, PhoneInput as MoonUIPhoneInput, Popover as MoonUIPopover, PopoverContent as MoonUIPopoverContent, PopoverTrigger as MoonUIPopoverTrigger, ProBadge as MoonUIProBadge, ProComponentWrapper as MoonUIProComponentWrapper, Progress as MoonUIProgress, ProgressProps as MoonUIProgressProps, RadioGroup as MoonUIRadioGroup, RadioGroupItem as MoonUIRadioGroupItem, RadioGroupItemProps as MoonUIRadioGroupItemProps, RadioGroupProps as MoonUIRadioGroupProps, RadioItemWithLabel as MoonUIRadioItemWithLabel, RadioItemWithLabelProps as MoonUIRadioItemWithLabelProps, RadioLabel as MoonUIRadioLabel, RadioLabelProps as MoonUIRadioLabelProps, Rating as MoonUIRating, RatingProps as MoonUIRatingProps, RichTextEditor as MoonUIRichTextEditor, ScrollArea as MoonUIScrollArea, ScrollBar as MoonUIScrollBar, ScrollReveal as MoonUIScrollReveal, ScrollRevealContainer as MoonUIScrollRevealContainer, ScrollRevealItem as MoonUIScrollRevealItem, Select as MoonUISelect, SelectContent as MoonUISelectContent, SelectGroup as MoonUISelectGroup, SelectItem as MoonUISelectItem, SelectItemProps as MoonUISelectItemProps, SelectLabel as MoonUISelectLabel, SelectScrollDownButton as MoonUISelectScrollDownButton, SelectScrollUpButton as MoonUISelectScrollUpButton, SelectSeparator as MoonUISelectSeparator, SelectTrigger as MoonUISelectTrigger, SelectTriggerProps as MoonUISelectTriggerProps, SelectValue as MoonUISelectValue, Separator as MoonUISeparator, SimpleColorPicker as MoonUISimpleColorPicker, SimpleEditor as MoonUISimpleEditor, SimpleEditorProps as MoonUISimpleEditorProps, Skeleton as MoonUISkeleton, SkeletonAvatar as MoonUISkeletonAvatar, SkeletonCard as MoonUISkeletonCard, SkeletonProps as MoonUISkeletonProps, SkeletonText as MoonUISkeletonText, Slider as MoonUISlider, SliderBaseProps as MoonUISliderBaseProps, SliderProps as MoonUISliderProps, Spinner as MoonUISpinner, SpinnerProps as MoonUISpinnerProps, SwipeableCard as MoonUISwipeableCard, Switch as MoonUISwitch, SwitchProps as MoonUISwitchProps, Table as MoonUITable, TableBody as MoonUITableBody, TableCaption as MoonUITableCaption, TableCell as MoonUITableCell, TableFooter as MoonUITableFooter, TableHead as MoonUITableHead, TableHeader as MoonUITableHeader, TableRow as MoonUITableRow, Tabs as MoonUITabs, TabsContent as MoonUITabsContent, TabsList as MoonUITabsList, TabsTrigger as MoonUITabsTrigger, TagsInput as MoonUITagsInput, TagsInputProps as MoonUITagsInputProps, Textarea as MoonUITextarea, TextareaProps as MoonUITextareaProps, Toast as MoonUIToast, ToastAction as MoonUIToastAction, ToastClose as MoonUIToastClose, ToastDescription as MoonUIToastDescription, ToastProvider as MoonUIToastProvider, ToastTitle as MoonUIToastTitle, ToastViewport as MoonUIToastViewport, Toaster as MoonUIToaster, Toggle as MoonUIToggle, ToggleGroup as MoonUIToggleGroup, ToggleGroupItem as MoonUIToggleGroupItem, ToggleGroupItemProps as MoonUIToggleGroupItemProps, ToggleGroupProps as MoonUIToggleGroupProps, ToggleProps as MoonUIToggleProps, Tooltip as MoonUITooltip, TooltipContent as MoonUITooltipContent, TooltipProvider as MoonUITooltipProvider, TooltipTrigger as MoonUITooltipTrigger, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PhoneInput, PhoneInputProps, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverContentProps, PopoverFooter, PopoverHeader, PopoverSeparator, PopoverTrigger, ProBadge, ProComponentWrapper, Progress, ProgressProps, RadioGroup, RadioGroupItem, RadioGroupItemProps, RadioGroupProps, RadioItemWithLabel, RadioItemWithLabelProps, RadioLabel, RadioLabelProps, Rating, RatingProps, RichTextEditor, RichTextEditorProps, ScrollArea, ScrollBar, ScrollReveal, ScrollRevealContainer, ScrollRevealContainerProps, ScrollRevealItem, ScrollRevealItemProps, ScrollRevealProps, Select, SelectContent, SelectGroup, SelectItem, SelectItemProps, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectTriggerProps, SelectValue, Separator, SeparatorProps, SimpleColorPicker, SimpleColorPickerProps, SimpleEditor, SimpleEditorProps, SimpleTooltip, SimpleTooltipProps, Skeleton, SkeletonAvatar, SkeletonAvatarProps, SkeletonCard, SkeletonCardProps, SkeletonProps, SkeletonText, SkeletonTextProps, Slider, SliderBaseProps, SliderProps, SortDirection, Spinner, SpinnerProps, SwipeableCard, SwipeableCardProps, Switch, SwitchProps, SwitchSize, SwitchVariant, Table, TableBody, TableBodyProps, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TagsInput, TagsInputProps, Textarea, TextareaProps, Toast, ToastAction, ToastActionElement, ToastClose, ToastDescription, ToastProps, ToastProvider, ToastTitle, ToastViewport, Toaster, Toggle, ToggleGroup, ToggleGroupItem, ToggleGroupItemProps, ToggleGroupProps, ToggleProps, Tooltip, TooltipArrow, TooltipContent, TooltipContentProps, TooltipProvider, TooltipTrigger, aspectRatioVariants, badgeVariants, buttonGroupVariants, buttonVariants, carouselContentVariants, carouselItemVariants, cn, collapsibleContentVariants, collapsibleTriggerVariants, inputOTPSlotVariants, kbdVariants, badgeVariants as moonUIBadgeVariants, buttonGroupVariants as moonUIButtonGroupVariants, buttonVariants as moonUIButtonVariants, carouselContentVariants as moonUICarouselContentVariants, carouselItemVariants as moonUICarouselItemVariants, createSortableHeader as moonUICreateSortableHeader, inputOTPSlotVariants as moonUIInputOTPSlotVariants, kbdVariants as moonUIKbdVariants, ratingVariants as moonUIRatingVariants, skeletonVariants as moonUISkeletonVariants, spinnerVariants as moonUISpinnerVariants, toggleVariants as moonUIToggleVariants, popoverContentVariants, progressVariants, ratingVariants, separatorVariants, skeletonVariants, spinnerVariants, switchVariants, toast, toggleVariants, tooltipVariants, useCarousel, useToast };