@jamsrui/hooks 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/README.md +40 -0
  2. package/dist/chunk-3X65K33M.mjs +1 -0
  3. package/dist/chunk-43ASRVYW.mjs +1 -0
  4. package/dist/chunk-56DWXUCB.js +1 -0
  5. package/dist/chunk-6WUWFSQK.mjs +1 -0
  6. package/dist/chunk-7MY42IVC.mjs +1 -0
  7. package/dist/chunk-AU73JWKB.js +1 -0
  8. package/dist/chunk-BKKV5MEI.js +1 -0
  9. package/dist/chunk-CWAYV277.mjs +1 -0
  10. package/dist/chunk-KJ55QJAT.js +1 -0
  11. package/dist/chunk-LDFOT2HS.mjs +1 -0
  12. package/dist/chunk-MMYWZJVT.mjs +1 -0
  13. package/dist/chunk-P3NRDKDG.mjs +3 -0
  14. package/dist/chunk-PQQAVORW.js +1 -0
  15. package/dist/chunk-Q75QUB2K.js +1 -0
  16. package/dist/chunk-QKESLIWA.js +1 -0
  17. package/dist/chunk-QTKNXL66.js +3 -0
  18. package/dist/chunk-QUV6YK34.js +1 -0
  19. package/dist/chunk-SVC2SW73.mjs +1 -0
  20. package/dist/chunk-TBOAIC2E.mjs +1 -0
  21. package/dist/chunk-WT5WDB2I.js +1 -0
  22. package/dist/chunk-XBLQTFHA.mjs +1 -0
  23. package/dist/chunk-YCL4SJLF.js +1 -0
  24. package/dist/chunk-YMEX6ZHF.js +1 -0
  25. package/dist/chunk-ZTJ3FIEN.mjs +1 -0
  26. package/dist/index.d.mts +13 -0
  27. package/dist/index.d.ts +13 -0
  28. package/dist/index.js +1 -0
  29. package/dist/index.mjs +1 -0
  30. package/dist/use-callback-ref.d.mts +7 -0
  31. package/dist/use-callback-ref.d.ts +7 -0
  32. package/dist/use-callback-ref.js +1 -0
  33. package/dist/use-callback-ref.mjs +1 -0
  34. package/dist/use-controlled-state.d.mts +9 -0
  35. package/dist/use-controlled-state.d.ts +9 -0
  36. package/dist/use-controlled-state.js +1 -0
  37. package/dist/use-controlled-state.mjs +1 -0
  38. package/dist/use-controlled.d.mts +21 -0
  39. package/dist/use-controlled.d.ts +21 -0
  40. package/dist/use-controlled.js +1 -0
  41. package/dist/use-controlled.mjs +1 -0
  42. package/dist/use-disabled.d.mts +12 -0
  43. package/dist/use-disabled.d.ts +12 -0
  44. package/dist/use-disabled.js +1 -0
  45. package/dist/use-disabled.mjs +1 -0
  46. package/dist/use-disclosure.d.mts +11 -0
  47. package/dist/use-disclosure.d.ts +11 -0
  48. package/dist/use-disclosure.js +1 -0
  49. package/dist/use-disclosure.mjs +1 -0
  50. package/dist/use-focus-visible.d.mts +11 -0
  51. package/dist/use-focus-visible.d.ts +11 -0
  52. package/dist/use-focus-visible.js +1 -0
  53. package/dist/use-focus-visible.mjs +1 -0
  54. package/dist/use-focus.d.mts +13 -0
  55. package/dist/use-focus.d.ts +13 -0
  56. package/dist/use-focus.js +1 -0
  57. package/dist/use-focus.mjs +1 -0
  58. package/dist/use-hover.d.mts +13 -0
  59. package/dist/use-hover.d.ts +13 -0
  60. package/dist/use-hover.js +1 -0
  61. package/dist/use-hover.mjs +1 -0
  62. package/dist/use-merge-refs.d.mts +6 -0
  63. package/dist/use-merge-refs.d.ts +6 -0
  64. package/dist/use-merge-refs.js +1 -0
  65. package/dist/use-merge-refs.mjs +1 -0
  66. package/dist/use-mobile.d.mts +3 -0
  67. package/dist/use-mobile.d.ts +3 -0
  68. package/dist/use-mobile.js +1 -0
  69. package/dist/use-mobile.mjs +1 -0
  70. package/dist/use-press.d.mts +11 -0
  71. package/dist/use-press.d.ts +11 -0
  72. package/dist/use-press.js +1 -0
  73. package/dist/use-press.mjs +1 -0
  74. package/dist/use-render-element.d.mts +15 -0
  75. package/dist/use-render-element.d.ts +15 -0
  76. package/dist/use-render-element.js +1 -0
  77. package/dist/use-render-element.mjs +1 -0
  78. package/package.json +46 -0
package/README.md ADDED
@@ -0,0 +1,40 @@
1
+ # 🚀 **JamsrUI**
2
+
3
+ **A comprehensive React UI component library designed for developers, with Tailwind CSS integration for seamless styling.**
4
+
5
+
6
+ ## 📖 **Overview**
7
+
8
+ [JamsrUI](https://jamsr-ui.jamsrworld.com) is designed to help developers build modern, fast and visually appealing web applications with ease.
9
+
10
+ ## 🚀 Getting Started
11
+
12
+ Boost & Build your websites using [JamsrUI](https://jamsr-ui.jamsrworld.com).
13
+
14
+ ## ✨ Features
15
+
16
+ - 🚀 **Production-Ready**: Optimized for modern React projects.
17
+ - 🎨 **Customizable**: Easily override styles and themes.
18
+ - 🛠️ **Reusable Components**: Save time with prebuilt, efficient UI elements.
19
+ - ⚡ **Developer-Friendly**: Simple API and well-documented usage.
20
+ - 📦 **Lightweight**: Minimal dependencies for fast performance.
21
+ - 🖥️ **Modern Design**: Clean, responsive, and user-friendly components.
22
+
23
+ ## 🌱 Community
24
+
25
+ We’re thrilled to see the community actively engage with **JamsrUI**! Whether you're sharing feedback, reporting bugs, requesting features, or showcasing projects built with JamsrUI, your involvement helps us grow and improve.
26
+
27
+ ### How to Engage
28
+
29
+ - 💬 **Report Bugs**: [GitHub Issues](https://github.com/jamsrworld/jamsr-ui/issues)
30
+ - 🚀 **Request Features**: Share ideas for new components.
31
+ - 🤝 **Showcase Projects**: Let us know how you use JamsrUI.
32
+
33
+ ## Contributing
34
+
35
+ We welcome contributions from developers of all skill levels!
36
+
37
+ ## ⭐ Support the Project
38
+
39
+ If you find **JamsrUI** helpful, consider giving it a ⭐ on [GitHub](https://github.com/jamsrworld/jamsr-ui).
40
+
@@ -0,0 +1 @@
1
+ import{useEffect as a,useRef as i,useState as l}from"react";var f=u=>{let{isDisabled:s}=u,t=i(null),[c,n]=l(!1);return a(()=>{let e=t.current;if(s||!e)return;let r=()=>{n(!0)},o=()=>{n(!1)};return e.addEventListener("focus",r),e.addEventListener("blur",o),()=>{e.removeEventListener("focus",r),e.removeEventListener("blur",o)}},[s]),s?{ref:t,isFocused:!1}:{ref:t,isFocused:c}};export{f as a};
@@ -0,0 +1 @@
1
+ import{useEffect as t,useMemo as u,useRef as f}from"react";function a(e){let n=f(e);return t(()=>{n.current=e}),u(()=>(...r)=>n.current?.(...r),[])}export{a};
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _react = require('react');var a=768;function r(){let[o,n]=_react.useState.call(void 0, void 0);return _react.useEffect.call(void 0, ()=>{let e=window.matchMedia(`(max-width: ${a-1}px)`),t=()=>n(e.matches);return e.addEventListener("change",t),n(e.matches),()=>e.removeEventListener("change",t)},[]),!!o}exports.a = r;
@@ -0,0 +1 @@
1
+ import{a as r}from"./chunk-43ASRVYW.mjs";import{useCallback as i,useEffect as d,useRef as S,useState as p}from"react";function C({defaultProp:c,onChange:o}){let t=p(c),[e]=t,n=S(e),a=r(o);return d(()=>{n.current!==e&&(a(e),n.current=e)},[e,n,a]),t}function R({defaultProp:c,onChange:o,prop:t}){let[e,n]=C({defaultProp:c,onChange:o}),a=t!==void 0,T=a?t:e,l=r(o),f=i(s=>{if(a){let u=typeof s=="function"?s(t):s;u!==t&&l(u)}else n(s)},[a,t,n,l]);return[T,f]}export{R as a};
@@ -0,0 +1 @@
1
+ import{useEffect as E,useRef as f,useState as m}from"react";var L=(l={})=>{let{isDisabled:r=!1}=l,[v,n]=m(!1),i=f(null);return E(()=>{if(r)return n(!1),()=>{};let o=!1,d=s=>{["Tab","ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Home","End","Enter"," "].includes(s.key)&&(o=!0)},t=()=>{o=!1},u=()=>{n(o)},a=()=>{n(!1)},c=s=>{(s.key==="Enter"||s.key===" ")&&n(!0)};document.addEventListener("keydown",d),document.addEventListener("mousedown",t),document.addEventListener("touchstart",t);let e=i.current;return e&&(e.addEventListener("focus",u),e.addEventListener("blur",a),e.addEventListener("keydown",c)),()=>{document.removeEventListener("keydown",d),document.removeEventListener("mousedown",t),document.removeEventListener("touchstart",t),e&&(e.removeEventListener("focus",u),e.removeEventListener("blur",a),e.removeEventListener("keydown",c))}},[r]),{ref:i,isFocusVisible:v}};export{L as a};
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _react = require('react');function a(e){let n=_react.useRef.call(void 0, e);return _react.useEffect.call(void 0, ()=>{n.current=e}),_react.useMemo.call(void 0, ()=>(...r)=>_optionalChain([n, 'access', _ => _.current, 'optionalCall', _2 => _2(...r)]),[])}exports.a = a;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkAU73JWKBjs = require('./chunk-AU73JWKB.js');var _react = require('react');function C({defaultProp:c,onChange:o}){let t=_react.useState.call(void 0, c),[e]=t,n=_react.useRef.call(void 0, e),a=_chunkAU73JWKBjs.a.call(void 0, o);return _react.useEffect.call(void 0, ()=>{n.current!==e&&(a(e),n.current=e)},[e,n,a]),t}function R({defaultProp:c,onChange:o,prop:t}){let[e,n]=C({defaultProp:c,onChange:o}),a=t!==void 0,T=a?t:e,l=_chunkAU73JWKBjs.a.call(void 0, o),f=_react.useCallback.call(void 0, s=>{if(a){let u=typeof s=="function"?s(t):s;u!==t&&l(u)}else n(s)},[a,t,n,l]);return[T,f]}exports.a = R;
@@ -0,0 +1 @@
1
+ import{useCallback as r,useEffect as S,useMemo as l,useReducer as f,useRef as y}from"react";var T={isPressing:!1,isPointerInside:!1};function g(t,i){switch(i.type){case"PRESS_START":return{isPressing:!0,isPointerInside:!0};case"POINTER_LEAVE":return{...t,isPointerInside:!1};case"POINTER_ENTER":return{...t,isPointerInside:!0};case"PRESS_END":return{...t,isPressing:!1};default:return t}}function N(t){let{isDisabled:i=!1}=t,[e,n]=f(g,T),d=y(null),u=e.isPressing&&e.isPointerInside,o=r(()=>{n({type:"PRESS_START"})},[]),P=r(()=>{e.isPressing&&n({type:"POINTER_LEAVE"})},[e.isPressing]),a=r(()=>{e.isPressing&&n({type:"POINTER_ENTER"})},[e.isPressing]),E=r(()=>{e.isPressing&&n({type:"PRESS_END"})},[e.isPressing]),c=r(s=>{(s.key==="Enter"||s.key===" ")&&n({type:"PRESS_START"})},[]),p=r(s=>{(s.key==="Enter"||s.key===" ")&&e.isPressing&&n({type:"PRESS_END"})},[e.isPressing]);S(()=>{if(i)return;let s=()=>{e.isPressing&&n({type:"PRESS_END"})};return window.addEventListener("pointerup",s),window.addEventListener("contextmenu",s),()=>{window.removeEventListener("pointerup",s),window.removeEventListener("contextmenu",s)}},[e.isPressing,e.isPointerInside,i]);let R=l(()=>i?{}:{onPointerDown:o,onPointerEnter:a,onPointerLeave:P,onKeyDown:c,onKeyUp:p,onPointerCancel:E,ref:d},[c,p,o,a,P,i,E]);return{isPressed:u,pressProps:R}}export{N as a};
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }var _react = require('react');var E=a=>{let{enterDelay:s=0,exitDelay:r=0,isDisabled:u}=_nullishCoalesce(a, () => ({})),[v,n]=_react.useState.call(void 0, !1),i=_react.useRef.call(void 0, null);return _react.useEffect.call(void 0, ()=>{let e=i.current;if(!e||u)return n(!1),()=>{};let t=null,o=null,l=()=>{o&&clearTimeout(o),t=setTimeout(()=>{n(!0)},s)},m=()=>{t&&clearTimeout(t),o=setTimeout(()=>{n(!1)},r)};return e.addEventListener("mouseenter",l),e.addEventListener("mouseleave",m),()=>{t&&clearTimeout(t),o&&clearTimeout(o),e.removeEventListener("mouseenter",l),e.removeEventListener("mouseleave",m)}},[s,r,u]),{ref:i,isHovered:v}};exports.a = E;
@@ -0,0 +1 @@
1
+ import{useEffect as c,useRef as f,useState as T}from"react";var E=a=>{let{enterDelay:s=0,exitDelay:r=0,isDisabled:u}=a??{},[v,n]=T(!1),i=f(null);return c(()=>{let e=i.current;if(!e||u)return n(!1),()=>{};let t=null,o=null,l=()=>{o&&clearTimeout(o),t=setTimeout(()=>{n(!0)},s)},m=()=>{t&&clearTimeout(t),o=setTimeout(()=>{n(!1)},r)};return e.addEventListener("mouseenter",l),e.addEventListener("mouseleave",m),()=>{t&&clearTimeout(t),o&&clearTimeout(o),e.removeEventListener("mouseenter",l),e.removeEventListener("mouseleave",m)}},[s,r,u]),{ref:i,isHovered:v}};export{E as a};
@@ -0,0 +1 @@
1
+ import{useCallback as o,useMemo as f,useRef as i}from"react";function R(t){let u=i(void 0),a=o(e=>{let r=t.map(n=>{if(n!=null){if(typeof n=="function"){let c=n,l=c(e);return typeof l=="function"?l:()=>{c(null)}}return n.current=e,()=>{n.current=null}}});return()=>{r.forEach(n=>n?.())}},t);return f(()=>t.every(e=>e==null)?null:e=>{u.current&&(u.current(),u.current=void 0),e!=null&&(u.current=a(e))},t)}export{R as a};
@@ -0,0 +1,3 @@
1
+ import{useCallback as f,useEffect as i,useRef as l,useState as h}from"react";function p({controlled:t,default:o,name:n,state:r="value"}){let{current:e}=l(t!==void 0),[c,u]=h(o),d=e?t:c;if(process.env.NODE_ENV!=="production"){i(()=>{e!==(t!==void 0)&&console.error([`Base UI: A component is changing the ${e?"":"un"}controlled ${r} state of ${n} to be ${e?"un":""}controlled.`,"Elements should not switch from uncontrolled to controlled (or vice versa).",`Decide between using a controlled or uncontrolled ${n} element for the lifetime of the component.`,"The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.","More info: https://fb.me/react-controlled-components"].join(`
2
+ `))},[r,n,t]);let{current:s}=l(o);i(()=>{!e&&!Object.is(s,o)&&console.error([`Base UI: A component is changing the default ${r} state of an uncontrolled ${n} after being initialized. To suppress this warning opt to use a controlled ${n}.`].join(`
3
+ `))},[JSON.stringify(o)])}let a=f(s=>{e||u(s)},[]);return[d,a]}export{p as a};
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _react = require('react');var L=(l={})=>{let{isDisabled:r=!1}=l,[v,n]=_react.useState.call(void 0, !1),i=_react.useRef.call(void 0, null);return _react.useEffect.call(void 0, ()=>{if(r)return n(!1),()=>{};let o=!1,d=s=>{["Tab","ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Home","End","Enter"," "].includes(s.key)&&(o=!0)},t=()=>{o=!1},u=()=>{n(o)},a=()=>{n(!1)},c=s=>{(s.key==="Enter"||s.key===" ")&&n(!0)};document.addEventListener("keydown",d),document.addEventListener("mousedown",t),document.addEventListener("touchstart",t);let e=i.current;return e&&(e.addEventListener("focus",u),e.addEventListener("blur",a),e.addEventListener("keydown",c)),()=>{document.removeEventListener("keydown",d),document.removeEventListener("mousedown",t),document.removeEventListener("touchstart",t),e&&(e.removeEventListener("focus",u),e.removeEventListener("blur",a),e.removeEventListener("keydown",c))}},[r]),{ref:i,isFocusVisible:v}};exports.a = L;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _react = require('react');var f=u=>{let{isDisabled:s}=u,t=_react.useRef.call(void 0, null),[c,n]=_react.useState.call(void 0, !1);return _react.useEffect.call(void 0, ()=>{let e=t.current;if(s||!e)return;let r=()=>{n(!0)},o=()=>{n(!1)};return e.addEventListener("focus",r),e.addEventListener("blur",o),()=>{e.removeEventListener("focus",r),e.removeEventListener("blur",o)}},[s]),s?{ref:t,isFocused:!1}:{ref:t,isFocused:c}};exports.a = f;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _react = require('react');var T={isPressing:!1,isPointerInside:!1};function g(t,i){switch(i.type){case"PRESS_START":return{isPressing:!0,isPointerInside:!0};case"POINTER_LEAVE":return{...t,isPointerInside:!1};case"POINTER_ENTER":return{...t,isPointerInside:!0};case"PRESS_END":return{...t,isPressing:!1};default:return t}}function N(t){let{isDisabled:i=!1}=t,[e,n]=_react.useReducer.call(void 0, g,T),d=_react.useRef.call(void 0, null),u=e.isPressing&&e.isPointerInside,o=_react.useCallback.call(void 0, ()=>{n({type:"PRESS_START"})},[]),P=_react.useCallback.call(void 0, ()=>{e.isPressing&&n({type:"POINTER_LEAVE"})},[e.isPressing]),a=_react.useCallback.call(void 0, ()=>{e.isPressing&&n({type:"POINTER_ENTER"})},[e.isPressing]),E=_react.useCallback.call(void 0, ()=>{e.isPressing&&n({type:"PRESS_END"})},[e.isPressing]),c=_react.useCallback.call(void 0, s=>{(s.key==="Enter"||s.key===" ")&&n({type:"PRESS_START"})},[]),p=_react.useCallback.call(void 0, s=>{(s.key==="Enter"||s.key===" ")&&e.isPressing&&n({type:"PRESS_END"})},[e.isPressing]);_react.useEffect.call(void 0, ()=>{if(i)return;let s=()=>{e.isPressing&&n({type:"PRESS_END"})};return window.addEventListener("pointerup",s),window.addEventListener("contextmenu",s),()=>{window.removeEventListener("pointerup",s),window.removeEventListener("contextmenu",s)}},[e.isPressing,e.isPointerInside,i]);let R=_react.useMemo.call(void 0, ()=>i?{}:{onPointerDown:o,onPointerEnter:a,onPointerLeave:P,onKeyDown:c,onKeyUp:p,onPointerCancel:E,ref:d},[c,p,o,a,P,i,E]);return{isPressed:u,pressProps:R}}exports.a = N;
@@ -0,0 +1,3 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _react = require('react');function p({controlled:t,default:o,name:n,state:r="value"}){let{current:e}=_react.useRef.call(void 0, t!==void 0),[c,u]=_react.useState.call(void 0, o),d=e?t:c;if(process.env.NODE_ENV!=="production"){_react.useEffect.call(void 0, ()=>{e!==(t!==void 0)&&console.error([`Base UI: A component is changing the ${e?"":"un"}controlled ${r} state of ${n} to be ${e?"un":""}controlled.`,"Elements should not switch from uncontrolled to controlled (or vice versa).",`Decide between using a controlled or uncontrolled ${n} element for the lifetime of the component.`,"The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.","More info: https://fb.me/react-controlled-components"].join(`
2
+ `))},[r,n,t]);let{current:s}=_react.useRef.call(void 0, o);_react.useEffect.call(void 0, ()=>{!e&&!Object.is(s,o)&&console.error([`Base UI: A component is changing the default ${r} state of an uncontrolled ${n} after being initialized. To suppress this warning opt to use a controlled ${n}.`].join(`
3
+ `))},[JSON.stringify(o)])}let a=_react.useCallback.call(void 0, s=>{e||u(s)},[]);return[d,a]}exports.a = p;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }var _chunkYMEX6ZHFjs = require('./chunk-YMEX6ZHF.js');var _react = require('react'); var _react2 = _interopRequireDefault(_react);var _utils = require('@jamsrui/utils');function d(r){return function(e){return r==="button"?_react2.default.createElement("button",{type:"button",...e}):r==="img"?_react2.default.createElement("img",{alt:"",...e}):_react2.default.createElement(r,{...e})}}var y=(r,o)=>{let{props:e}=o,s=Array.isArray(e)?e:[e],p=_utils.mergeProps.call(void 0, ...s),{render:i,...c}=p,t=_nullishCoalesce(i, () => (d(r)({}))),f=_chunkYMEX6ZHFjs.a.call(void 0, [t.props.ref,...s.map(l=>l.ref)]),u=_utils.mergeProps.call(void 0, t.props,c);return _react.cloneElement.call(void 0, t,{...u,ref:f})};exports.a = y;
@@ -0,0 +1 @@
1
+ import{useEffect as s,useState as i}from"react";var a=768;function r(){let[o,n]=i(void 0);return s(()=>{let e=window.matchMedia(`(max-width: ${a-1}px)`),t=()=>n(e.matches);return e.addEventListener("change",t),n(e.matches),()=>e.removeEventListener("change",t)},[]),!!o}export{r as a};
@@ -0,0 +1 @@
1
+ import{useEffect as u,useRef as c,useState as f}from"react";var p=l=>{let{isDisabled:e,isFormControl:s}=l??{},t=c(null),[a,b]=f(!1);return u(()=>{let i=t.current;if(!i||e||!s)return()=>{};let r=i.closest("fieldset");if(!r)return()=>{};let o=()=>{let d=r.disabled;b(d)};o();let n=new MutationObserver(o);return n.observe(r,{attributes:!0,attributeFilter:["disabled"]}),()=>n.disconnect()},[s,e]),e||!s?{ref:t,isDisabled:e}:{ref:t,isDisabled:a}};export{p as a};
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }var _react = require('react');var p=s=>{let[n,e]=_react.useState.call(void 0, _nullishCoalesce(s, () => (!1))),t=_react.useCallback.call(void 0, ()=>e(!0),[]),l=_react.useCallback.call(void 0, ()=>e(!1),[]);return{onToggle:_react.useCallback.call(void 0, ()=>e(c=>!c),[]),isOpen:n,setIsOpen:e,onOpen:t,onClose:l}};exports.a = p;
@@ -0,0 +1 @@
1
+ import{a as m}from"./chunk-MMYWZJVT.mjs";import n,{cloneElement as g}from"react";import{mergeProps as a}from"@jamsrui/utils";function d(r){return function(e){return r==="button"?n.createElement("button",{type:"button",...e}):r==="img"?n.createElement("img",{alt:"",...e}):n.createElement(r,{...e})}}var y=(r,o)=>{let{props:e}=o,s=Array.isArray(e)?e:[e],p=a(...s),{render:i,...c}=p,t=i??d(r)({}),f=m([t.props.ref,...s.map(l=>l.ref)]),u=a(t.props,c);return g(t,{...u,ref:f})};export{y as a};
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }var _react = require('react');var p=l=>{let{isDisabled:e,isFormControl:s}=_nullishCoalesce(l, () => ({})),t=_react.useRef.call(void 0, null),[a,b]=_react.useState.call(void 0, !1);return _react.useEffect.call(void 0, ()=>{let i=t.current;if(!i||e||!s)return()=>{};let r=i.closest("fieldset");if(!r)return()=>{};let o=()=>{let d=r.disabled;b(d)};o();let n=new MutationObserver(o);return n.observe(r,{attributes:!0,attributeFilter:["disabled"]}),()=>n.disconnect()},[s,e]),e||!s?{ref:t,isDisabled:e}:{ref:t,isDisabled:a}};exports.a = p;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _react = require('react');function R(t){let u=_react.useRef.call(void 0, void 0),a=_react.useCallback.call(void 0, e=>{let r=t.map(n=>{if(n!=null){if(typeof n=="function"){let c=n,l=c(e);return typeof l=="function"?l:()=>{c(null)}}return n.current=e,()=>{n.current=null}}});return()=>{r.forEach(n=>_optionalChain([n, 'optionalCall', _ => _()]))}},t);return _react.useMemo.call(void 0, ()=>t.every(e=>e==null)?null:e=>{u.current&&(u.current(),u.current=void 0),e!=null&&(u.current=a(e))},t)}exports.a = R;
@@ -0,0 +1 @@
1
+ import{useCallback as o,useState as r}from"react";var p=s=>{let[n,e]=r(s??!1),t=o(()=>e(!0),[]),l=o(()=>e(!1),[]);return{onToggle:o(()=>e(c=>!c),[]),isOpen:n,setIsOpen:e,onOpen:t,onClose:l}};export{p as a};
@@ -0,0 +1,13 @@
1
+ export { useControlled } from './use-controlled.mjs';
2
+ export { useControlledState } from './use-controlled-state.mjs';
3
+ export { useIsDisabled } from './use-disabled.mjs';
4
+ export { useDisclosure } from './use-disclosure.mjs';
5
+ export { useFocus } from './use-focus.mjs';
6
+ export { useFocusVisible } from './use-focus-visible.mjs';
7
+ export { useHover } from './use-hover.mjs';
8
+ export { useMergeRefs } from './use-merge-refs.mjs';
9
+ export { useIsMobile } from './use-mobile.mjs';
10
+ export { usePress } from './use-press.mjs';
11
+ export { useRenderElement } from './use-render-element.mjs';
12
+ import 'react';
13
+ import '@jamsrui/utils';
@@ -0,0 +1,13 @@
1
+ export { useControlled } from './use-controlled.js';
2
+ export { useControlledState } from './use-controlled-state.js';
3
+ export { useIsDisabled } from './use-disabled.js';
4
+ export { useDisclosure } from './use-disclosure.js';
5
+ export { useFocus } from './use-focus.js';
6
+ export { useFocusVisible } from './use-focus-visible.js';
7
+ export { useHover } from './use-hover.js';
8
+ export { useMergeRefs } from './use-merge-refs.js';
9
+ export { useIsMobile } from './use-mobile.js';
10
+ export { usePress } from './use-press.js';
11
+ export { useRenderElement } from './use-render-element.js';
12
+ import 'react';
13
+ import '@jamsrui/utils';
package/dist/index.js ADDED
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkKJ55QJATjs = require('./chunk-KJ55QJAT.js');var _chunk56DWXUCBjs = require('./chunk-56DWXUCB.js');var _chunkQKESLIWAjs = require('./chunk-QKESLIWA.js');var _chunkQUV6YK34js = require('./chunk-QUV6YK34.js');var _chunkYMEX6ZHFjs = require('./chunk-YMEX6ZHF.js');var _chunkBKKV5MEIjs = require('./chunk-BKKV5MEI.js');require('./chunk-AU73JWKB.js');var _chunkQTKNXL66js = require('./chunk-QTKNXL66.js');var _chunkYCL4SJLFjs = require('./chunk-YCL4SJLF.js');var _chunkWT5WDB2Ijs = require('./chunk-WT5WDB2I.js');var _chunkPQQAVORWjs = require('./chunk-PQQAVORW.js');var _chunkQ75QUB2Kjs = require('./chunk-Q75QUB2K.js');exports.useControlled = _chunkQTKNXL66js.a; exports.useControlledState = _chunkBKKV5MEIjs.a; exports.useDisclosure = _chunkWT5WDB2Ijs.a; exports.useFocus = _chunkQ75QUB2Kjs.a; exports.useFocusVisible = _chunkPQQAVORWjs.a; exports.useHover = _chunkKJ55QJATjs.a; exports.useIsDisabled = _chunkYCL4SJLFjs.a; exports.useIsMobile = _chunk56DWXUCBjs.a; exports.useMergeRefs = _chunkYMEX6ZHFjs.a; exports.usePress = _chunkQKESLIWAjs.a; exports.useRenderElement = _chunkQUV6YK34js.a;
package/dist/index.mjs ADDED
@@ -0,0 +1 @@
1
+ import{a as f}from"./chunk-LDFOT2HS.mjs";import{a as p}from"./chunk-SVC2SW73.mjs";import{a as x}from"./chunk-CWAYV277.mjs";import{a as l}from"./chunk-XBLQTFHA.mjs";import{a as m}from"./chunk-MMYWZJVT.mjs";import{a as o}from"./chunk-6WUWFSQK.mjs";import"./chunk-43ASRVYW.mjs";import{a as e}from"./chunk-P3NRDKDG.mjs";import{a as r}from"./chunk-TBOAIC2E.mjs";import{a as s}from"./chunk-ZTJ3FIEN.mjs";import{a as u}from"./chunk-7MY42IVC.mjs";import{a as t}from"./chunk-3X65K33M.mjs";export{e as useControlled,o as useControlledState,s as useDisclosure,t as useFocus,u as useFocusVisible,f as useHover,r as useIsDisabled,p as useIsMobile,m as useMergeRefs,x as usePress,l as useRenderElement};
@@ -0,0 +1,7 @@
1
+ /**
2
+ * A custom hook that converts a callback to a ref to avoid triggering re-renders when passed as a
3
+ * prop or avoid re-executing effects when passed as a dependency
4
+ */
5
+ declare function useCallbackRef<T extends (...args: any[]) => any>(callback: T | undefined): T;
6
+
7
+ export { useCallbackRef };
@@ -0,0 +1,7 @@
1
+ /**
2
+ * A custom hook that converts a callback to a ref to avoid triggering re-renders when passed as a
3
+ * prop or avoid re-executing effects when passed as a dependency
4
+ */
5
+ declare function useCallbackRef<T extends (...args: any[]) => any>(callback: T | undefined): T;
6
+
7
+ export { useCallbackRef };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkAU73JWKBjs = require('./chunk-AU73JWKB.js');exports.useCallbackRef = _chunkAU73JWKBjs.a;
@@ -0,0 +1 @@
1
+ import{a}from"./chunk-43ASRVYW.mjs";export{a as useCallbackRef};
@@ -0,0 +1,9 @@
1
+ import * as react from 'react';
2
+
3
+ declare function useControlledState<T>({ defaultProp, onChange, prop, }: {
4
+ defaultProp?: T;
5
+ prop?: T;
6
+ onChange?: (state: T) => void;
7
+ }): readonly [T, react.Dispatch<react.SetStateAction<T>>];
8
+
9
+ export { useControlledState };
@@ -0,0 +1,9 @@
1
+ import * as react from 'react';
2
+
3
+ declare function useControlledState<T>({ defaultProp, onChange, prop, }: {
4
+ defaultProp?: T;
5
+ prop?: T;
6
+ onChange?: (state: T) => void;
7
+ }): readonly [T, react.Dispatch<react.SetStateAction<T>>];
8
+
9
+ export { useControlledState };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkBKKV5MEIjs = require('./chunk-BKKV5MEI.js');require('./chunk-AU73JWKB.js');exports.useControlledState = _chunkBKKV5MEIjs.a;
@@ -0,0 +1 @@
1
+ import{a}from"./chunk-6WUWFSQK.mjs";import"./chunk-43ASRVYW.mjs";export{a as useControlledState};
@@ -0,0 +1,21 @@
1
+ interface UseControlledProps<T = unknown> {
2
+ /**
3
+ * Holds the component value when it's controlled.
4
+ */
5
+ controlled: T | undefined;
6
+ /**
7
+ * The default value when uncontrolled.
8
+ */
9
+ default: T | undefined;
10
+ /**
11
+ * The component name displayed in warnings.
12
+ */
13
+ name: string;
14
+ /**
15
+ * The name of the state variable displayed in warnings.
16
+ */
17
+ state?: string;
18
+ }
19
+ declare function useControlled<T = unknown>({ controlled, default: defaultProp, name, state, }: UseControlledProps<T>): [T, (newValue: T | ((prevValue: T) => T)) => void];
20
+
21
+ export { type UseControlledProps, useControlled };
@@ -0,0 +1,21 @@
1
+ interface UseControlledProps<T = unknown> {
2
+ /**
3
+ * Holds the component value when it's controlled.
4
+ */
5
+ controlled: T | undefined;
6
+ /**
7
+ * The default value when uncontrolled.
8
+ */
9
+ default: T | undefined;
10
+ /**
11
+ * The component name displayed in warnings.
12
+ */
13
+ name: string;
14
+ /**
15
+ * The name of the state variable displayed in warnings.
16
+ */
17
+ state?: string;
18
+ }
19
+ declare function useControlled<T = unknown>({ controlled, default: defaultProp, name, state, }: UseControlledProps<T>): [T, (newValue: T | ((prevValue: T) => T)) => void];
20
+
21
+ export { type UseControlledProps, useControlled };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkQTKNXL66js = require('./chunk-QTKNXL66.js');exports.useControlled = _chunkQTKNXL66js.a;
@@ -0,0 +1 @@
1
+ import{a}from"./chunk-P3NRDKDG.mjs";export{a as useControlled};
@@ -0,0 +1,12 @@
1
+ import * as react from 'react';
2
+
3
+ type UseIsDisableProps = {
4
+ isDisabled: boolean;
5
+ isFormControl: boolean;
6
+ };
7
+ declare const useIsDisabled: <T extends HTMLElement>(props: UseIsDisableProps) => {
8
+ ref: react.RefObject<T | null>;
9
+ isDisabled: boolean;
10
+ };
11
+
12
+ export { useIsDisabled };
@@ -0,0 +1,12 @@
1
+ import * as react from 'react';
2
+
3
+ type UseIsDisableProps = {
4
+ isDisabled: boolean;
5
+ isFormControl: boolean;
6
+ };
7
+ declare const useIsDisabled: <T extends HTMLElement>(props: UseIsDisableProps) => {
8
+ ref: react.RefObject<T | null>;
9
+ isDisabled: boolean;
10
+ };
11
+
12
+ export { useIsDisabled };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkYCL4SJLFjs = require('./chunk-YCL4SJLF.js');exports.useIsDisabled = _chunkYCL4SJLFjs.a;
@@ -0,0 +1 @@
1
+ import{a}from"./chunk-TBOAIC2E.mjs";export{a as useIsDisabled};
@@ -0,0 +1,11 @@
1
+ import * as react from 'react';
2
+
3
+ declare const useDisclosure: (defaultOpen?: boolean) => {
4
+ onToggle: () => void;
5
+ isOpen: boolean;
6
+ setIsOpen: react.Dispatch<react.SetStateAction<boolean>>;
7
+ onOpen: () => void;
8
+ onClose: () => void;
9
+ };
10
+
11
+ export { useDisclosure };
@@ -0,0 +1,11 @@
1
+ import * as react from 'react';
2
+
3
+ declare const useDisclosure: (defaultOpen?: boolean) => {
4
+ onToggle: () => void;
5
+ isOpen: boolean;
6
+ setIsOpen: react.Dispatch<react.SetStateAction<boolean>>;
7
+ onOpen: () => void;
8
+ onClose: () => void;
9
+ };
10
+
11
+ export { useDisclosure };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkWT5WDB2Ijs = require('./chunk-WT5WDB2I.js');exports.useDisclosure = _chunkWT5WDB2Ijs.a;
@@ -0,0 +1 @@
1
+ import{a}from"./chunk-ZTJ3FIEN.mjs";export{a as useDisclosure};
@@ -0,0 +1,11 @@
1
+ import * as react from 'react';
2
+
3
+ type UseFocusVisibleOptions = {
4
+ isDisabled?: boolean;
5
+ };
6
+ declare const useFocusVisible: <T extends HTMLElement>(options?: UseFocusVisibleOptions) => {
7
+ ref: react.RefObject<T | null>;
8
+ isFocusVisible: boolean;
9
+ };
10
+
11
+ export { type UseFocusVisibleOptions, useFocusVisible };
@@ -0,0 +1,11 @@
1
+ import * as react from 'react';
2
+
3
+ type UseFocusVisibleOptions = {
4
+ isDisabled?: boolean;
5
+ };
6
+ declare const useFocusVisible: <T extends HTMLElement>(options?: UseFocusVisibleOptions) => {
7
+ ref: react.RefObject<T | null>;
8
+ isFocusVisible: boolean;
9
+ };
10
+
11
+ export { type UseFocusVisibleOptions, useFocusVisible };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkPQQAVORWjs = require('./chunk-PQQAVORW.js');exports.useFocusVisible = _chunkPQQAVORWjs.a;
@@ -0,0 +1 @@
1
+ import{a}from"./chunk-7MY42IVC.mjs";export{a as useFocusVisible};
@@ -0,0 +1,13 @@
1
+ import * as react from 'react';
2
+
3
+ declare const useFocus: <T extends HTMLElement>(props: useFocus.Props) => {
4
+ ref: react.RefObject<T | null>;
5
+ isFocused: boolean;
6
+ };
7
+ declare namespace useFocus {
8
+ interface Props {
9
+ isDisabled?: boolean;
10
+ }
11
+ }
12
+
13
+ export { useFocus };
@@ -0,0 +1,13 @@
1
+ import * as react from 'react';
2
+
3
+ declare const useFocus: <T extends HTMLElement>(props: useFocus.Props) => {
4
+ ref: react.RefObject<T | null>;
5
+ isFocused: boolean;
6
+ };
7
+ declare namespace useFocus {
8
+ interface Props {
9
+ isDisabled?: boolean;
10
+ }
11
+ }
12
+
13
+ export { useFocus };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkQ75QUB2Kjs = require('./chunk-Q75QUB2K.js');exports.useFocus = _chunkQ75QUB2Kjs.a;
@@ -0,0 +1 @@
1
+ import{a}from"./chunk-3X65K33M.mjs";export{a as useFocus};
@@ -0,0 +1,13 @@
1
+ import * as react from 'react';
2
+
3
+ type UseHoverOptions = {
4
+ enterDelay?: number;
5
+ exitDelay?: number;
6
+ isDisabled?: boolean;
7
+ };
8
+ declare const useHover: <T extends HTMLElement>(options?: UseHoverOptions) => {
9
+ ref: react.RefObject<T | null>;
10
+ isHovered: boolean;
11
+ };
12
+
13
+ export { type UseHoverOptions, useHover };
@@ -0,0 +1,13 @@
1
+ import * as react from 'react';
2
+
3
+ type UseHoverOptions = {
4
+ enterDelay?: number;
5
+ exitDelay?: number;
6
+ isDisabled?: boolean;
7
+ };
8
+ declare const useHover: <T extends HTMLElement>(options?: UseHoverOptions) => {
9
+ ref: react.RefObject<T | null>;
10
+ isHovered: boolean;
11
+ };
12
+
13
+ export { type UseHoverOptions, useHover };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkKJ55QJATjs = require('./chunk-KJ55QJAT.js');exports.useHover = _chunkKJ55QJATjs.a;
@@ -0,0 +1 @@
1
+ import{a}from"./chunk-LDFOT2HS.mjs";export{a as useHover};
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Merges an array of refs into a single memoized callback ref or `null`.
3
+ */
4
+ declare function useMergeRefs<Instance>(refs: Array<React.Ref<Instance> | undefined>): null | React.RefCallback<Instance>;
5
+
6
+ export { useMergeRefs };
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Merges an array of refs into a single memoized callback ref or `null`.
3
+ */
4
+ declare function useMergeRefs<Instance>(refs: Array<React.Ref<Instance> | undefined>): null | React.RefCallback<Instance>;
5
+
6
+ export { useMergeRefs };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkYMEX6ZHFjs = require('./chunk-YMEX6ZHF.js');exports.useMergeRefs = _chunkYMEX6ZHFjs.a;
@@ -0,0 +1 @@
1
+ import{a}from"./chunk-MMYWZJVT.mjs";export{a as useMergeRefs};
@@ -0,0 +1,3 @@
1
+ declare function useIsMobile(): boolean;
2
+
3
+ export { useIsMobile };
@@ -0,0 +1,3 @@
1
+ declare function useIsMobile(): boolean;
2
+
3
+ export { useIsMobile };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunk56DWXUCBjs = require('./chunk-56DWXUCB.js');exports.useIsMobile = _chunk56DWXUCBjs.a;
@@ -0,0 +1 @@
1
+ import{a}from"./chunk-SVC2SW73.mjs";export{a as useIsMobile};
@@ -0,0 +1,11 @@
1
+ declare function usePress(props: usePress.UsePressProps): {
2
+ isPressed: boolean;
3
+ pressProps: any;
4
+ };
5
+ declare namespace usePress {
6
+ interface UsePressProps {
7
+ isDisabled?: boolean;
8
+ }
9
+ }
10
+
11
+ export { usePress };
@@ -0,0 +1,11 @@
1
+ declare function usePress(props: usePress.UsePressProps): {
2
+ isPressed: boolean;
3
+ pressProps: any;
4
+ };
5
+ declare namespace usePress {
6
+ interface UsePressProps {
7
+ isDisabled?: boolean;
8
+ }
9
+ }
10
+
11
+ export { usePress };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkQKESLIWAjs = require('./chunk-QKESLIWA.js');exports.usePress = _chunkQKESLIWAjs.a;
@@ -0,0 +1 @@
1
+ import{a}from"./chunk-CWAYV277.mjs";export{a as usePress};
@@ -0,0 +1,15 @@
1
+ import react__default from 'react';
2
+ import { UIProps } from '@jamsrui/utils';
3
+
4
+ declare const useRenderElement: <TagName extends keyof react__default.JSX.IntrinsicElements>(element: TagName, params: useRenderElement.Parameters<TagName>) => react__default.ReactElement;
5
+ declare namespace useRenderElement {
6
+ interface Parameters<TagName extends keyof react__default.JSX.IntrinsicElements> {
7
+ props: UIProps<TagName> | UIProps<TagName>[];
8
+ }
9
+ interface ComponentProps {
10
+ className?: string;
11
+ render?: react__default.ReactElement;
12
+ }
13
+ }
14
+
15
+ export { useRenderElement };
@@ -0,0 +1,15 @@
1
+ import react__default from 'react';
2
+ import { UIProps } from '@jamsrui/utils';
3
+
4
+ declare const useRenderElement: <TagName extends keyof react__default.JSX.IntrinsicElements>(element: TagName, params: useRenderElement.Parameters<TagName>) => react__default.ReactElement;
5
+ declare namespace useRenderElement {
6
+ interface Parameters<TagName extends keyof react__default.JSX.IntrinsicElements> {
7
+ props: UIProps<TagName> | UIProps<TagName>[];
8
+ }
9
+ interface ComponentProps {
10
+ className?: string;
11
+ render?: react__default.ReactElement;
12
+ }
13
+ }
14
+
15
+ export { useRenderElement };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkQUV6YK34js = require('./chunk-QUV6YK34.js');require('./chunk-YMEX6ZHF.js');exports.useRenderElement = _chunkQUV6YK34js.a;
@@ -0,0 +1 @@
1
+ import{a}from"./chunk-XBLQTFHA.mjs";import"./chunk-MMYWZJVT.mjs";export{a as useRenderElement};
package/package.json ADDED
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "@jamsrui/hooks",
3
+ "version": "0.0.2",
4
+ "peerDependencies": {
5
+ "react": ">=19"
6
+ },
7
+ "dependencies": {
8
+ "@jamsrui/utils": "^0.0.2"
9
+ },
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/index.d.ts",
13
+ "import": "./dist/index.mjs",
14
+ "require": "./dist/index.js"
15
+ }
16
+ },
17
+ "description": "A modern and beautiful Next.js UI components library.",
18
+ "keywords": [
19
+ "react",
20
+ "ui",
21
+ "UI components",
22
+ "Next.js",
23
+ "React",
24
+ "JamsrUI",
25
+ "jamsr-ui",
26
+ "TypeScript"
27
+ ],
28
+ "sideEffects": false,
29
+ "license": "MIT",
30
+ "author": "@jamsrworld",
31
+ "repository": {
32
+ "type": "git",
33
+ "url": "https://github.com/jamsrworld/jamsr-ui"
34
+ },
35
+ "bugs": {
36
+ "url": "https://github.com/jamsrworld/jamsr-ui/issues"
37
+ },
38
+ "homepage": "https://jamsr-ui.jamsrworld.com",
39
+ "files": [
40
+ "dist",
41
+ "README",
42
+ "README.md",
43
+ "package.json",
44
+ "LICENSE"
45
+ ]
46
+ }