@net-advantage/nabs-ui-avatar 0.1.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.
package/README.md ADDED
@@ -0,0 +1,13 @@
1
+ # nabs-ui-avatar
2
+
3
+ Reusable avatar control for the Nabs UI library.
4
+
5
+ ## Usage
6
+
7
+ ```jsx
8
+ import { Avatar } from "nabs-ui-avatar";
9
+
10
+ export function Example() {
11
+ return <Avatar authenticated name="Ada Lovelace" />;
12
+ }
13
+ ```
@@ -0,0 +1,10 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports);let t=require("react");var n=e((e=>{var t=require("react");function n(e){var t=`https://react.dev/errors/`+e;if(1<arguments.length){t+=`?args[]=`+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+=`&args[]=`+encodeURIComponent(arguments[n])}return`Minified React error #`+e+`; visit `+t+` for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`}function r(){}var i={d:{f:r,r:function(){throw Error(n(522))},D:r,C:r,L:r,m:r,X:r,S:r,M:r},p:0,findDOMNode:null},a=Symbol.for(`react.portal`);function o(e,t,n){var r=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:a,key:r==null?null:``+r,children:e,containerInfo:t,implementation:n}}var s=t.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function c(e,t){if(e===`font`)return``;if(typeof t==`string`)return t===`use-credentials`?t:``}e.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=i,e.createPortal=function(e,t){var r=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)throw Error(n(299));return o(e,t,null,r)},e.flushSync=function(e){var t=s.T,n=i.p;try{if(s.T=null,i.p=2,e)return e()}finally{s.T=t,i.p=n,i.d.f()}},e.preconnect=function(e,t){typeof e==`string`&&(t?(t=t.crossOrigin,t=typeof t==`string`?t===`use-credentials`?t:``:void 0):t=null,i.d.C(e,t))},e.prefetchDNS=function(e){typeof e==`string`&&i.d.D(e)},e.preinit=function(e,t){if(typeof e==`string`&&t&&typeof t.as==`string`){var n=t.as,r=c(n,t.crossOrigin),a=typeof t.integrity==`string`?t.integrity:void 0,o=typeof t.fetchPriority==`string`?t.fetchPriority:void 0;n===`style`?i.d.S(e,typeof t.precedence==`string`?t.precedence:void 0,{crossOrigin:r,integrity:a,fetchPriority:o}):n===`script`&&i.d.X(e,{crossOrigin:r,integrity:a,fetchPriority:o,nonce:typeof t.nonce==`string`?t.nonce:void 0})}},e.preinitModule=function(e,t){if(typeof e==`string`)if(typeof t==`object`&&t){if(t.as==null||t.as===`script`){var n=c(t.as,t.crossOrigin);i.d.M(e,{crossOrigin:n,integrity:typeof t.integrity==`string`?t.integrity:void 0,nonce:typeof t.nonce==`string`?t.nonce:void 0})}}else t??i.d.M(e)},e.preload=function(e,t){if(typeof e==`string`&&typeof t==`object`&&t&&typeof t.as==`string`){var n=t.as,r=c(n,t.crossOrigin);i.d.L(e,n,{crossOrigin:r,integrity:typeof t.integrity==`string`?t.integrity:void 0,nonce:typeof t.nonce==`string`?t.nonce:void 0,type:typeof t.type==`string`?t.type:void 0,fetchPriority:typeof t.fetchPriority==`string`?t.fetchPriority:void 0,referrerPolicy:typeof t.referrerPolicy==`string`?t.referrerPolicy:void 0,imageSrcSet:typeof t.imageSrcSet==`string`?t.imageSrcSet:void 0,imageSizes:typeof t.imageSizes==`string`?t.imageSizes:void 0,media:typeof t.media==`string`?t.media:void 0})}},e.preloadModule=function(e,t){if(typeof e==`string`)if(t){var n=c(t.as,t.crossOrigin);i.d.m(e,{as:typeof t.as==`string`&&t.as!==`script`?t.as:void 0,crossOrigin:n,integrity:typeof t.integrity==`string`?t.integrity:void 0})}else i.d.m(e)},e.requestFormReset=function(e){i.d.r(e)},e.unstable_batchedUpdates=function(e,t){return e(t)},e.useFormState=function(e,t,n){return s.H.useFormState(e,t,n)},e.useFormStatus=function(){return s.H.useHostTransitionStatus()},e.version=`19.2.7`})),r=e((e=>{process.env.NODE_ENV!==`production`&&(function(){function t(){}function n(e){return``+e}function r(e,t,r){var i=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;try{n(i);var a=!1}catch{a=!0}return a&&(console.error(`The provided key is an unsupported type %s. This value must be coerced to a string before using it here.`,typeof Symbol==`function`&&Symbol.toStringTag&&i[Symbol.toStringTag]||i.constructor.name||`Object`),n(i)),{$$typeof:u,key:i==null?null:``+i,children:e,containerInfo:t,implementation:r}}function i(e,t){if(e===`font`)return``;if(typeof t==`string`)return t===`use-credentials`?t:``}function a(e){return e===null?"`null`":e===void 0?"`undefined`":e===``?`an empty string`:`something with type "`+typeof e+`"`}function o(e){return e===null?"`null`":e===void 0?"`undefined`":e===``?`an empty string`:typeof e==`string`?JSON.stringify(e):typeof e==`number`?"`"+e+"`":`something with type "`+typeof e+`"`}function s(){var e=d.H;return e===null&&console.error(`Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:
2
+ 1. You might have mismatching versions of React and the renderer (such as React DOM)
3
+ 2. You might be breaking the Rules of Hooks
4
+ 3. You might have more than one copy of React in the same app
5
+ See https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.`),e}typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart==`function`&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());var c=require("react"),l={d:{f:t,r:function(){throw Error(`Invalid form element. requestFormReset must be passed a form that was rendered by React.`)},D:t,C:t,L:t,m:t,X:t,S:t,M:t},p:0,findDOMNode:null},u=Symbol.for(`react.portal`),d=c.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;typeof Map==`function`&&Map.prototype!=null&&typeof Map.prototype.forEach==`function`&&typeof Set==`function`&&Set.prototype!=null&&typeof Set.prototype.clear==`function`&&typeof Set.prototype.forEach==`function`||console.error(`React depends on Map and Set built-in types. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills`),e.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=l,e.createPortal=function(e,t){var n=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)throw Error(`Target container is not a DOM element.`);return r(e,t,null,n)},e.flushSync=function(e){var t=d.T,n=l.p;try{if(d.T=null,l.p=2,e)return e()}finally{d.T=t,l.p=n,l.d.f()&&console.error(`flushSync was called from inside a lifecycle method. React cannot flush when React is already rendering. Consider moving this call to a scheduler task or micro task.`)}},e.preconnect=function(e,t){typeof e==`string`&&e?t!=null&&typeof t!=`object`?console.error("ReactDOM.preconnect(): Expected the `options` argument (second) to be an object but encountered %s instead. The only supported option at this time is `crossOrigin` which accepts a string.",o(t)):t!=null&&typeof t.crossOrigin!=`string`&&console.error("ReactDOM.preconnect(): Expected the `crossOrigin` option (second argument) to be a string but encountered %s instead. Try removing this option or passing a string value instead.",a(t.crossOrigin)):console.error("ReactDOM.preconnect(): Expected the `href` argument (first) to be a non-empty string but encountered %s instead.",a(e)),typeof e==`string`&&(t?(t=t.crossOrigin,t=typeof t==`string`?t===`use-credentials`?t:``:void 0):t=null,l.d.C(e,t))},e.prefetchDNS=function(e){if(typeof e!=`string`||!e)console.error("ReactDOM.prefetchDNS(): Expected the `href` argument (first) to be a non-empty string but encountered %s instead.",a(e));else if(1<arguments.length){var t=arguments[1];typeof t==`object`&&t.hasOwnProperty(`crossOrigin`)?console.error("ReactDOM.prefetchDNS(): Expected only one argument, `href`, but encountered %s as a second argument instead. This argument is reserved for future options and is currently disallowed. It looks like the you are attempting to set a crossOrigin property for this DNS lookup hint. Browsers do not perform DNS queries using CORS and setting this attribute on the resource hint has no effect. Try calling ReactDOM.prefetchDNS() with just a single string argument, `href`.",o(t)):console.error("ReactDOM.prefetchDNS(): Expected only one argument, `href`, but encountered %s as a second argument instead. This argument is reserved for future options and is currently disallowed. Try calling ReactDOM.prefetchDNS() with just a single string argument, `href`.",o(t))}typeof e==`string`&&l.d.D(e)},e.preinit=function(e,t){if(typeof e==`string`&&e?typeof t!=`object`||!t?console.error("ReactDOM.preinit(): Expected the `options` argument (second) to be an object with an `as` property describing the type of resource to be preinitialized but encountered %s instead.",o(t)):t.as!==`style`&&t.as!==`script`&&console.error('ReactDOM.preinit(): Expected the `as` property in the `options` argument (second) to contain a valid value describing the type of resource to be preinitialized but encountered %s instead. Valid values for `as` are "style" and "script".',o(t.as)):console.error("ReactDOM.preinit(): Expected the `href` argument (first) to be a non-empty string but encountered %s instead.",a(e)),typeof e==`string`&&t&&typeof t.as==`string`){var n=t.as,r=i(n,t.crossOrigin),s=typeof t.integrity==`string`?t.integrity:void 0,c=typeof t.fetchPriority==`string`?t.fetchPriority:void 0;n===`style`?l.d.S(e,typeof t.precedence==`string`?t.precedence:void 0,{crossOrigin:r,integrity:s,fetchPriority:c}):n===`script`&&l.d.X(e,{crossOrigin:r,integrity:s,fetchPriority:c,nonce:typeof t.nonce==`string`?t.nonce:void 0})}},e.preinitModule=function(e,t){var n=``;if(typeof e==`string`&&e||(n+=" The `href` argument encountered was "+a(e)+`.`),t!==void 0&&typeof t!=`object`?n+=" The `options` argument encountered was "+a(t)+`.`:t&&`as`in t&&t.as!==`script`&&(n+=" The `as` option encountered was "+o(t.as)+`.`),n)console.error("ReactDOM.preinitModule(): Expected up to two arguments, a non-empty `href` string and, optionally, an `options` object with a valid `as` property.%s",n);else switch(n=t&&typeof t.as==`string`?t.as:`script`,n){case`script`:break;default:n=o(n),console.error('ReactDOM.preinitModule(): Currently the only supported "as" type for this function is "script" but received "%s" instead. This warning was generated for `href` "%s". In the future other module types will be supported, aligning with the import-attributes proposal. Learn more here: (https://github.com/tc39/proposal-import-attributes)',n,e)}typeof e==`string`&&(typeof t==`object`&&t?(t.as==null||t.as===`script`)&&(n=i(t.as,t.crossOrigin),l.d.M(e,{crossOrigin:n,integrity:typeof t.integrity==`string`?t.integrity:void 0,nonce:typeof t.nonce==`string`?t.nonce:void 0})):t??l.d.M(e))},e.preload=function(e,t){var n=``;if(typeof e==`string`&&e||(n+=" The `href` argument encountered was "+a(e)+`.`),typeof t!=`object`||!t?n+=" The `options` argument encountered was "+a(t)+`.`:typeof t.as==`string`&&t.as||(n+=" The `as` option encountered was "+a(t.as)+`.`),n&&console.error('ReactDOM.preload(): Expected two arguments, a non-empty `href` string and an `options` object with an `as` property valid for a `<link rel="preload" as="..." />` tag.%s',n),typeof e==`string`&&typeof t==`object`&&t&&typeof t.as==`string`){n=t.as;var r=i(n,t.crossOrigin);l.d.L(e,n,{crossOrigin:r,integrity:typeof t.integrity==`string`?t.integrity:void 0,nonce:typeof t.nonce==`string`?t.nonce:void 0,type:typeof t.type==`string`?t.type:void 0,fetchPriority:typeof t.fetchPriority==`string`?t.fetchPriority:void 0,referrerPolicy:typeof t.referrerPolicy==`string`?t.referrerPolicy:void 0,imageSrcSet:typeof t.imageSrcSet==`string`?t.imageSrcSet:void 0,imageSizes:typeof t.imageSizes==`string`?t.imageSizes:void 0,media:typeof t.media==`string`?t.media:void 0})}},e.preloadModule=function(e,t){var n=``;typeof e==`string`&&e||(n+=" The `href` argument encountered was "+a(e)+`.`),t!==void 0&&typeof t!=`object`?n+=" The `options` argument encountered was "+a(t)+`.`:t&&`as`in t&&typeof t.as!=`string`&&(n+=" The `as` option encountered was "+a(t.as)+`.`),n&&console.error('ReactDOM.preloadModule(): Expected two arguments, a non-empty `href` string and, optionally, an `options` object with an `as` property valid for a `<link rel="modulepreload" as="..." />` tag.%s',n),typeof e==`string`&&(t?(n=i(t.as,t.crossOrigin),l.d.m(e,{as:typeof t.as==`string`&&t.as!==`script`?t.as:void 0,crossOrigin:n,integrity:typeof t.integrity==`string`?t.integrity:void 0})):l.d.m(e))},e.requestFormReset=function(e){l.d.r(e)},e.unstable_batchedUpdates=function(e,t){return e(t)},e.useFormState=function(e,t,n){return s().useFormState(e,t,n)},e.useFormStatus=function(){return s().useHostTransitionStatus()},e.version=`19.2.7`,typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop==`function`&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error())})()})),i=e(((e,t)=>{function i(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`)){if(process.env.NODE_ENV!==`production`)throw Error(`^_^`);try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(i)}catch(e){console.error(e)}}}process.env.NODE_ENV===`production`?(i(),t.exports=n()):t.exports=r()}))(),a=e((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),o=e((e=>{process.env.NODE_ENV!==`production`&&(function(){function t(e){if(e==null)return null;if(typeof e==`function`)return e.$$typeof===O?null:e.displayName||e.name||null;if(typeof e==`string`)return e;switch(e){case _:return`Fragment`;case y:return`Profiler`;case v:return`StrictMode`;case C:return`Suspense`;case w:return`SuspenseList`;case D:return`Activity`}if(typeof e==`object`)switch(typeof e.tag==`number`&&console.error(`Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.`),e.$$typeof){case g:return`Portal`;case x:return e.displayName||`Context`;case b:return(e._context.displayName||`Context`)+`.Consumer`;case S:var n=e.render;return e=e.displayName,e||=(e=n.displayName||n.name||``,e===``?`ForwardRef`:`ForwardRef(`+e+`)`),e;case T:return n=e.displayName||null,n===null?t(e.type)||`Memo`:n;case E:n=e._payload,e=e._init;try{return t(e(n))}catch{}}return null}function n(e){return``+e}function r(e){try{n(e);var t=!1}catch{t=!0}if(t){t=console;var r=t.error,i=typeof Symbol==`function`&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||`Object`;return r.call(t,`The provided key is an unsupported type %s. This value must be coerced to a string before using it here.`,i),n(e)}}function i(e){if(e===_)return`<>`;if(typeof e==`object`&&e&&e.$$typeof===E)return`<...>`;try{var n=t(e);return n?`<`+n+`>`:`<...>`}catch{return`<...>`}}function a(){var e=k.A;return e===null?null:e.getOwner()}function o(){return Error(`react-stack-top-frame`)}function s(e){if(A.call(e,`key`)){var t=Object.getOwnPropertyDescriptor(e,`key`).get;if(t&&t.isReactWarning)return!1}return e.key!==void 0}function c(e,t){function n(){N||(N=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",t))}n.isReactWarning=!0,Object.defineProperty(e,"key",{get:n,configurable:!0})}function l(){var e=t(this.type);return P[e]||(P[e]=!0,console.error(`Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.`)),e=this.props.ref,e===void 0?null:e}function u(e,t,n,r,i,a){var o=n.ref;return e={$$typeof:h,type:e,key:t,props:n,_owner:r},(o===void 0?null:o)===null?Object.defineProperty(e,"ref",{enumerable:!1,value:null}):Object.defineProperty(e,"ref",{enumerable:!1,get:l}),e._store={},Object.defineProperty(e._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(e,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(e,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:i}),Object.defineProperty(e,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:a}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function d(e,n,i,o,l,d){var p=n.children;if(p!==void 0)if(o)if(j(p)){for(o=0;o<p.length;o++)f(p[o]);Object.freeze&&Object.freeze(p)}else console.error(`React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.`);else f(p);if(A.call(n,`key`)){p=t(e);var m=Object.keys(n).filter(function(e){return e!==`key`});o=0<m.length?`{key: someKey, `+m.join(`: ..., `)+`: ...}`:`{key: someKey}`,L[p+o]||(m=0<m.length?`{`+m.join(`: ..., `)+`: ...}`:`{}`,console.error(`A props object containing a "key" prop is being spread into JSX:
6
+ let props = %s;
7
+ <%s {...props} />
8
+ React keys must be passed directly to JSX without using spread:
9
+ let props = %s;
10
+ <%s key={someKey} {...props} />`,o,p,m,p),L[p+o]=!0)}if(p=null,i!==void 0&&(r(i),p=``+i),s(n)&&(r(n.key),p=``+n.key),`key`in n)for(var h in i={},n)h!==`key`&&(i[h]=n[h]);else i=n;return p&&c(i,typeof e==`function`?e.displayName||e.name||`Unknown`:e),u(e,p,i,a(),l,d)}function f(e){p(e)?e._store&&(e._store.validated=1):typeof e==`object`&&e&&e.$$typeof===E&&(e._payload.status===`fulfilled`?p(e._payload.value)&&e._payload.value._store&&(e._payload.value._store.validated=1):e._store&&(e._store.validated=1))}function p(e){return typeof e==`object`&&!!e&&e.$$typeof===h}var m=require("react"),h=Symbol.for(`react.transitional.element`),g=Symbol.for(`react.portal`),_=Symbol.for(`react.fragment`),v=Symbol.for(`react.strict_mode`),y=Symbol.for(`react.profiler`),b=Symbol.for(`react.consumer`),x=Symbol.for(`react.context`),S=Symbol.for(`react.forward_ref`),C=Symbol.for(`react.suspense`),w=Symbol.for(`react.suspense_list`),T=Symbol.for(`react.memo`),E=Symbol.for(`react.lazy`),D=Symbol.for(`react.activity`),O=Symbol.for(`react.client.reference`),k=m.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,A=Object.prototype.hasOwnProperty,j=Array.isArray,M=console.createTask?console.createTask:function(){return null};m={react_stack_bottom_frame:function(e){return e()}};var N,P={},F=m.react_stack_bottom_frame.bind(m,o)(),I=M(i(o)),L={};e.Fragment=_,e.jsx=function(e,t,n){var r=1e4>k.recentlyCreatedOwnerStacks++;return d(e,t,n,!1,r?Error(`react-stack-top-frame`):F,r?M(i(e)):I)},e.jsxs=function(e,t,n){var r=1e4>k.recentlyCreatedOwnerStacks++;return d(e,t,n,!0,r?Error(`react-stack-top-frame`):F,r?M(i(e)):I)}})()})),s=e(((e,t)=>{process.env.NODE_ENV===`production`?t.exports=a():t.exports=o()}))();function c(e){return!!(e&&`type`in e&&e.type===`divider`)}function l(e){return e.label??e.children??`Menu item`}function u(e,t){return e.value??e.label??`item-${t}`}function d({label:e=`Menu`,triggerContent:n,triggerAriaLabel:r,menuAlign:a=`start`,items:o=[],className:d=``,triggerClassName:f=``,menuClassName:p=``,itemClassName:m=``,dividerClassName:h=``,id:g,onItemSelect:_,...v}){let[y,b]=(0,t.useState)(!1),x=(0,t.useRef)(null),S=(0,t.useRef)(null),C=(0,t.useRef)(null),w=(0,t.useId)(),T=g??`nabs-ui-dropdownmenu-${w.replace(/:/g,``)}`,E=[`nabs-ui-dropdownmenu`,d].filter(Boolean).join(` `),D=[`nabs-ui-dropdownmenu__trigger`,f].filter(Boolean).join(` `),O=[`nabs-ui-dropdownmenu__menu`,p].filter(Boolean).join(` `),k=[`nabs-ui-dropdownmenu__item`,m].filter(Boolean).join(` `),A=[`nabs-ui-dropdownmenu__divider`,h].filter(Boolean).join(` `);(0,t.useEffect)(()=>{let e=e=>{e.target instanceof Node&&x.current&&!x.current.contains(e.target)&&C.current&&!C.current.contains(e.target)&&b(!1)},t=e=>{e.key===`Escape`&&b(!1)};return document.addEventListener(`pointerdown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`pointerdown`,e),document.removeEventListener(`keydown`,t)}},[]),(0,t.useLayoutEffect)(()=>{if(!y||!S.current)return;let e=()=>{let e=S.current?.getBoundingClientRect(),t=C.current?.getBoundingClientRect(),n=C.current;if(!e||!t||!n)return;let r=Math.max(e.width,t.width),i=window.innerWidth-r-8,o=a===`end`?e.right-r:e.left,s=Math.max(8,Math.min(o,i)),c=Math.max(8,e.bottom+10);n.style.position=`fixed`,n.style.top=`${c}px`,n.style.left=`${s}px`,n.style.right=`auto`,n.style.minWidth=`${r}px`,n.style.visibility=`visible`};return C.current&&(C.current.style.visibility=`hidden`),e(),window.addEventListener(`resize`,e),window.addEventListener(`scroll`,e,!0),()=>{window.removeEventListener(`resize`,e),window.removeEventListener(`scroll`,e,!0)}},[a,y]);let j=(e,t)=>{if(b(!1),e.disabled){t.preventDefault();return}_?.(e,t),e.onSelect?.(e,t)};return(0,s.jsxs)(`div`,{ref:x,className:E,...v,children:[(0,s.jsx)(`button`,{ref:S,type:`button`,className:D,"aria-haspopup":`menu`,"aria-controls":T,"aria-label":r??e,onClick:()=>b(e=>!e),children:n??(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(`span`,{className:`nabs-ui-dropdownmenu__triggerLabel`,children:e}),(0,s.jsx)(`span`,{className:`nabs-ui-dropdownmenu__triggerChevron`,"aria-hidden":`true`,children:`▾`})]})}),y&&typeof document<`u`?(0,i.createPortal)((0,s.jsx)(`div`,{ref:C,id:T,className:O,"aria-label":e,children:o.map((e,t)=>{if(c(e))return(0,s.jsx)(`div`,{className:A,role:`separator`,"aria-hidden":`true`},`divider-${t}`);let n=l(e),r=[k,e.disabled?`nabs-ui-dropdownmenu__item--disabled`:``,e.danger?`nabs-ui-dropdownmenu__item--danger`:``].filter(Boolean).join(` `),i={className:r,"aria-disabled":e.disabled||void 0};return e.href?(0,s.jsxs)(`a`,{...i,href:e.disabled?void 0:e.href,onClick:t=>j(e,t),children:[(0,s.jsx)(`span`,{className:`nabs-ui-dropdownmenu__itemLabel`,children:n}),e.description?(0,s.jsx)(`span`,{className:`nabs-ui-dropdownmenu__itemDescription`,children:e.description}):null]},u(e,t)):(0,s.jsxs)(`button`,{type:`button`,className:r,disabled:e.disabled,onClick:t=>j(e,t),children:[(0,s.jsx)(`span`,{className:`nabs-ui-dropdownmenu__itemLabel`,children:n}),e.description?(0,s.jsx)(`span`,{className:`nabs-ui-dropdownmenu__itemDescription`,children:e.description}):null]},u(e,t))})}),document.body):null]})}function f(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?`?`:t.slice(0,2).map(e=>e[0]?.toUpperCase()??``).join(``)}var p=(0,t.forwardRef)(function({authenticated:e=!1,name:t=`Guest user`,avatarUrl:n=``,loginHref:r,profileHref:i=`#`,logoutHref:a=`#`,onLoginClick:o,onProfileClick:c,onLogoutClick:l,className:u=``,menuLabel:p,...m},h){let g=t.trim()||`Guest user`,_=f(g),v=[`nabs-ui-avatar`,e?`nabs-ui-avatar--authenticated`:`nabs-ui-avatar--unauthenticated`,u].filter(Boolean).join(` `),y=e=>{o&&(e.preventDefault(),o(e))},b=e=>{c&&(e.preventDefault(),c(e))},x=e=>{l&&(e.preventDefault(),l(e))};return(0,s.jsx)(`div`,{ref:h,className:v,...m,children:e?(0,s.jsx)(d,{className:`nabs-ui-avatar__menuRoot`,label:`${g} account menu`,triggerAriaLabel:p??`${g} account menu`,menuAlign:`end`,triggerContent:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(`span`,{className:`nabs-ui-avatar__avatar`,"aria-hidden":`true`,children:n?(0,s.jsx)(`img`,{className:`nabs-ui-avatar__image`,src:n,alt:``}):_}),(0,s.jsx)(`span`,{className:`nabs-ui-avatar__name`,children:g}),(0,s.jsx)(`span`,{className:`nabs-ui-avatar__chevron`,"aria-hidden":`true`,children:`▾`})]}),triggerClassName:`nabs-ui-avatar__trigger`,menuClassName:`nabs-ui-avatar__menu`,itemClassName:`nabs-ui-avatar__menuItem`,items:[{label:`Profile`,href:i,onSelect:(e,t)=>b(t)},{label:`Logout`,href:a,danger:!0,onSelect:(e,t)=>x(t)}]}):r?(0,s.jsxs)(`a`,{className:`nabs-ui-avatar__login`,href:r,onClick:y,children:[(0,s.jsx)(`span`,{className:`nabs-ui-avatar__avatar nabs-ui-avatar__avatar--placeholder`,"aria-hidden":`true`,children:_}),(0,s.jsx)(`span`,{className:`nabs-ui-avatar__loginText`,children:`Login`})]}):(0,s.jsxs)(`button`,{type:`button`,className:`nabs-ui-avatar__login`,onClick:y,children:[(0,s.jsx)(`span`,{className:`nabs-ui-avatar__avatar nabs-ui-avatar__avatar--placeholder`,"aria-hidden":`true`,children:_}),(0,s.jsx)(`span`,{className:`nabs-ui-avatar__loginText`,children:`Login`})]})})});p.displayName=`Avatar`,exports.Avatar=p;
@@ -0,0 +1,2 @@
1
+ .nabs-ui-dropdownmenu{align-items:flex-start;display:inline-flex;position:relative}.nabs-ui-dropdownmenu__trigger{color:#0f172a;cursor:pointer;font:inherit;background:#fff;border:1px solid #cbd5e1;border-radius:999px;align-items:center;gap:.6rem;padding:.55rem .8rem .55rem 1rem;transition:background-color .12s,border-color .12s,box-shadow .12s,transform .12s;display:inline-flex}.nabs-ui-dropdownmenu__trigger:hover{background:#f8fafc;transform:translateY(-1px)}.nabs-ui-dropdownmenu__trigger:focus-visible,.nabs-ui-dropdownmenu__item:focus-visible{outline-offset:2px;outline:3px solid #0f172a33}.nabs-ui-dropdownmenu__triggerLabel{font-size:.95rem;font-weight:600;line-height:1.2}.nabs-ui-dropdownmenu__triggerChevron{color:#64748b;padding-right:.1rem;font-size:.8rem;line-height:1}.nabs-ui-dropdownmenu__menu{z-index:2147483647;background:#fff;border:1px solid #cbd5e1;border-radius:1rem;gap:.25rem;min-width:13rem;padding:.5rem;display:grid;position:absolute;top:calc(100% + .6rem);left:0;box-shadow:0 14px 30px #0f172a1f}.nabs-ui-dropdownmenu__item[aria-disabled=true]{pointer-events:none}.nabs-ui-dropdownmenu__item{color:#0f172a;cursor:pointer;text-align:left;background:0 0;border:0;border-radius:.8rem;place-items:flex-start start;gap:.15rem;padding:.75rem .9rem;transition:background-color .12s,color .12s;display:grid}.nabs-ui-dropdownmenu__item:hover{background:#f8fafc}.nabs-ui-dropdownmenu__item--danger{color:#b91c1c}.nabs-ui-dropdownmenu__item--danger:hover{background:#fef2f2}.nabs-ui-dropdownmenu__item--disabled{cursor:not-allowed;opacity:.5}.nabs-ui-dropdownmenu__itemLabel{font-size:.95rem;font-weight:600;line-height:1.2}.nabs-ui-dropdownmenu__itemDescription{color:#64748b;font-size:.82rem;line-height:1.25}.nabs-ui-dropdownmenu__divider{border-top:1px solid #e2e8f0;margin:.25rem 0}.nabs-ui-avatar{align-items:center;display:inline-flex;position:relative}.nabs-ui-avatar__login,.nabs-ui-avatar__trigger{color:#0f172a;cursor:pointer;font:inherit;background:#fff;border:1px solid #cbd5e1;border-radius:999px;align-items:center;gap:.75rem;padding:.35rem .45rem .35rem .35rem;text-decoration:none;transition:background-color .12s,border-color .12s,box-shadow .12s,transform .12s;display:inline-flex}.nabs-ui-avatar__login:hover,.nabs-ui-avatar__trigger:hover{background:#f8fafc;transform:translateY(-1px)}.nabs-ui-avatar__login:focus-visible,.nabs-ui-avatar__trigger:focus-visible,.nabs-ui-avatar__menuItem:focus-visible{outline-offset:2px;outline:3px solid #0f172a33}.nabs-ui-avatar__avatar{color:#fff;background:linear-gradient(135deg,#0f172a 0%,#334155 100%);border-radius:999px;flex:none;justify-content:center;align-items:center;width:2.5rem;height:2.5rem;font-size:.95rem;font-weight:700;display:inline-flex;overflow:hidden}.nabs-ui-avatar__avatar--placeholder{background:linear-gradient(135deg,#475569 0%,#0f172a 100%)}.nabs-ui-avatar__image{object-fit:cover;width:100%;height:100%;display:block}.nabs-ui-avatar__loginText,.nabs-ui-avatar__name{font-size:.95rem;font-weight:600;line-height:1.2}.nabs-ui-avatar__name{text-overflow:ellipsis;white-space:nowrap;max-width:10rem;overflow:hidden}.nabs-ui-avatar__chevron{color:#64748b;padding-right:.15rem;font-size:.8rem;line-height:1}.nabs-ui-avatar__menu{z-index:2147483647;background:#fff;border:1px solid #cbd5e1;border-radius:1rem;gap:.25rem;min-width:12rem;padding:.5rem;display:grid;position:absolute;top:calc(100% + .75rem);left:auto;right:0;box-shadow:0 14px 30px #0f172a1f}.nabs-ui-avatar__menuItem{color:#0f172a;border-radius:.8rem;justify-content:flex-start;align-items:center;padding:.8rem .9rem;font-size:.95rem;font-weight:600;text-decoration:none;transition:background-color .12s,color .12s;display:flex}.nabs-ui-avatar__menuItem:hover{background:#f8fafc}.nabs-ui-avatar__menuItem--danger{color:#b91c1c}.nabs-ui-avatar__menuItem--danger:hover{background:#fef2f2}
2
+ /*$vite$:1*/
@@ -0,0 +1,639 @@
1
+ import { forwardRef as e, useEffect as t, useId as n, useLayoutEffect as r, useRef as i, useState as a } from "react";
2
+ //#region \0rolldown/runtime.js
3
+ var o = (e, t) => () => (t || (e((t = { exports: {} }).exports, t), e = null), t.exports), s = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy < "u" ? new Proxy(e, { get: (e, t) => (typeof require < "u" ? require : e)[t] }) : e)(function(e) {
4
+ if (typeof require < "u") return require.apply(this, arguments);
5
+ throw Error("Calling `require` for \"" + e + "\" in an environment that doesn't expose the `require` function. See https://rolldown.rs/in-depth/bundling-cjs#require-external-modules for more details.");
6
+ }), c = /* @__PURE__ */ o(((e) => {
7
+ var t = s("react");
8
+ function n(e) {
9
+ var t = "https://react.dev/errors/" + e;
10
+ if (1 < arguments.length) {
11
+ t += "?args[]=" + encodeURIComponent(arguments[1]);
12
+ for (var n = 2; n < arguments.length; n++) t += "&args[]=" + encodeURIComponent(arguments[n]);
13
+ }
14
+ return "Minified React error #" + e + "; visit " + t + " for the full message or use the non-minified dev environment for full errors and additional helpful warnings.";
15
+ }
16
+ function r() {}
17
+ var i = {
18
+ d: {
19
+ f: r,
20
+ r: function() {
21
+ throw Error(n(522));
22
+ },
23
+ D: r,
24
+ C: r,
25
+ L: r,
26
+ m: r,
27
+ X: r,
28
+ S: r,
29
+ M: r
30
+ },
31
+ p: 0,
32
+ findDOMNode: null
33
+ }, a = Symbol.for("react.portal");
34
+ function o(e, t, n) {
35
+ var r = 3 < arguments.length && arguments[3] !== void 0 ? arguments[3] : null;
36
+ return {
37
+ $$typeof: a,
38
+ key: r == null ? null : "" + r,
39
+ children: e,
40
+ containerInfo: t,
41
+ implementation: n
42
+ };
43
+ }
44
+ var c = t.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;
45
+ function l(e, t) {
46
+ if (e === "font") return "";
47
+ if (typeof t == "string") return t === "use-credentials" ? t : "";
48
+ }
49
+ e.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE = i, e.createPortal = function(e, t) {
50
+ var r = 2 < arguments.length && arguments[2] !== void 0 ? arguments[2] : null;
51
+ if (!t || t.nodeType !== 1 && t.nodeType !== 9 && t.nodeType !== 11) throw Error(n(299));
52
+ return o(e, t, null, r);
53
+ }, e.flushSync = function(e) {
54
+ var t = c.T, n = i.p;
55
+ try {
56
+ if (c.T = null, i.p = 2, e) return e();
57
+ } finally {
58
+ c.T = t, i.p = n, i.d.f();
59
+ }
60
+ }, e.preconnect = function(e, t) {
61
+ typeof e == "string" && (t ? (t = t.crossOrigin, t = typeof t == "string" ? t === "use-credentials" ? t : "" : void 0) : t = null, i.d.C(e, t));
62
+ }, e.prefetchDNS = function(e) {
63
+ typeof e == "string" && i.d.D(e);
64
+ }, e.preinit = function(e, t) {
65
+ if (typeof e == "string" && t && typeof t.as == "string") {
66
+ var n = t.as, r = l(n, t.crossOrigin), a = typeof t.integrity == "string" ? t.integrity : void 0, o = typeof t.fetchPriority == "string" ? t.fetchPriority : void 0;
67
+ n === "style" ? i.d.S(e, typeof t.precedence == "string" ? t.precedence : void 0, {
68
+ crossOrigin: r,
69
+ integrity: a,
70
+ fetchPriority: o
71
+ }) : n === "script" && i.d.X(e, {
72
+ crossOrigin: r,
73
+ integrity: a,
74
+ fetchPriority: o,
75
+ nonce: typeof t.nonce == "string" ? t.nonce : void 0
76
+ });
77
+ }
78
+ }, e.preinitModule = function(e, t) {
79
+ if (typeof e == "string") if (typeof t == "object" && t) {
80
+ if (t.as == null || t.as === "script") {
81
+ var n = l(t.as, t.crossOrigin);
82
+ i.d.M(e, {
83
+ crossOrigin: n,
84
+ integrity: typeof t.integrity == "string" ? t.integrity : void 0,
85
+ nonce: typeof t.nonce == "string" ? t.nonce : void 0
86
+ });
87
+ }
88
+ } else t ?? i.d.M(e);
89
+ }, e.preload = function(e, t) {
90
+ if (typeof e == "string" && typeof t == "object" && t && typeof t.as == "string") {
91
+ var n = t.as, r = l(n, t.crossOrigin);
92
+ i.d.L(e, n, {
93
+ crossOrigin: r,
94
+ integrity: typeof t.integrity == "string" ? t.integrity : void 0,
95
+ nonce: typeof t.nonce == "string" ? t.nonce : void 0,
96
+ type: typeof t.type == "string" ? t.type : void 0,
97
+ fetchPriority: typeof t.fetchPriority == "string" ? t.fetchPriority : void 0,
98
+ referrerPolicy: typeof t.referrerPolicy == "string" ? t.referrerPolicy : void 0,
99
+ imageSrcSet: typeof t.imageSrcSet == "string" ? t.imageSrcSet : void 0,
100
+ imageSizes: typeof t.imageSizes == "string" ? t.imageSizes : void 0,
101
+ media: typeof t.media == "string" ? t.media : void 0
102
+ });
103
+ }
104
+ }, e.preloadModule = function(e, t) {
105
+ if (typeof e == "string") if (t) {
106
+ var n = l(t.as, t.crossOrigin);
107
+ i.d.m(e, {
108
+ as: typeof t.as == "string" && t.as !== "script" ? t.as : void 0,
109
+ crossOrigin: n,
110
+ integrity: typeof t.integrity == "string" ? t.integrity : void 0
111
+ });
112
+ } else i.d.m(e);
113
+ }, e.requestFormReset = function(e) {
114
+ i.d.r(e);
115
+ }, e.unstable_batchedUpdates = function(e, t) {
116
+ return e(t);
117
+ }, e.useFormState = function(e, t, n) {
118
+ return c.H.useFormState(e, t, n);
119
+ }, e.useFormStatus = function() {
120
+ return c.H.useHostTransitionStatus();
121
+ }, e.version = "19.2.7";
122
+ })), l = /* @__PURE__ */ o(((e) => {
123
+ process.env.NODE_ENV !== "production" && (function() {
124
+ function t() {}
125
+ function n(e) {
126
+ return "" + e;
127
+ }
128
+ function r(e, t, r) {
129
+ var i = 3 < arguments.length && arguments[3] !== void 0 ? arguments[3] : null;
130
+ try {
131
+ n(i);
132
+ var a = !1;
133
+ } catch {
134
+ a = !0;
135
+ }
136
+ return a && (console.error("The provided key is an unsupported type %s. This value must be coerced to a string before using it here.", typeof Symbol == "function" && Symbol.toStringTag && i[Symbol.toStringTag] || i.constructor.name || "Object"), n(i)), {
137
+ $$typeof: d,
138
+ key: i == null ? null : "" + i,
139
+ children: e,
140
+ containerInfo: t,
141
+ implementation: r
142
+ };
143
+ }
144
+ function i(e, t) {
145
+ if (e === "font") return "";
146
+ if (typeof t == "string") return t === "use-credentials" ? t : "";
147
+ }
148
+ function a(e) {
149
+ return e === null ? "`null`" : e === void 0 ? "`undefined`" : e === "" ? "an empty string" : "something with type \"" + typeof e + "\"";
150
+ }
151
+ function o(e) {
152
+ return e === null ? "`null`" : e === void 0 ? "`undefined`" : e === "" ? "an empty string" : typeof e == "string" ? JSON.stringify(e) : typeof e == "number" ? "`" + e + "`" : "something with type \"" + typeof e + "\"";
153
+ }
154
+ function c() {
155
+ var e = f.H;
156
+ return e === null && console.error("Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem."), e;
157
+ }
158
+ typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ < "u" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart == "function" && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());
159
+ var l = s("react"), u = {
160
+ d: {
161
+ f: t,
162
+ r: function() {
163
+ throw Error("Invalid form element. requestFormReset must be passed a form that was rendered by React.");
164
+ },
165
+ D: t,
166
+ C: t,
167
+ L: t,
168
+ m: t,
169
+ X: t,
170
+ S: t,
171
+ M: t
172
+ },
173
+ p: 0,
174
+ findDOMNode: null
175
+ }, d = Symbol.for("react.portal"), f = l.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;
176
+ typeof Map == "function" && Map.prototype != null && typeof Map.prototype.forEach == "function" && typeof Set == "function" && Set.prototype != null && typeof Set.prototype.clear == "function" && typeof Set.prototype.forEach == "function" || console.error("React depends on Map and Set built-in types. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"), e.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE = u, e.createPortal = function(e, t) {
177
+ var n = 2 < arguments.length && arguments[2] !== void 0 ? arguments[2] : null;
178
+ if (!t || t.nodeType !== 1 && t.nodeType !== 9 && t.nodeType !== 11) throw Error("Target container is not a DOM element.");
179
+ return r(e, t, null, n);
180
+ }, e.flushSync = function(e) {
181
+ var t = f.T, n = u.p;
182
+ try {
183
+ if (f.T = null, u.p = 2, e) return e();
184
+ } finally {
185
+ f.T = t, u.p = n, u.d.f() && console.error("flushSync was called from inside a lifecycle method. React cannot flush when React is already rendering. Consider moving this call to a scheduler task or micro task.");
186
+ }
187
+ }, e.preconnect = function(e, t) {
188
+ typeof e == "string" && e ? t != null && typeof t != "object" ? console.error("ReactDOM.preconnect(): Expected the `options` argument (second) to be an object but encountered %s instead. The only supported option at this time is `crossOrigin` which accepts a string.", o(t)) : t != null && typeof t.crossOrigin != "string" && console.error("ReactDOM.preconnect(): Expected the `crossOrigin` option (second argument) to be a string but encountered %s instead. Try removing this option or passing a string value instead.", a(t.crossOrigin)) : console.error("ReactDOM.preconnect(): Expected the `href` argument (first) to be a non-empty string but encountered %s instead.", a(e)), typeof e == "string" && (t ? (t = t.crossOrigin, t = typeof t == "string" ? t === "use-credentials" ? t : "" : void 0) : t = null, u.d.C(e, t));
189
+ }, e.prefetchDNS = function(e) {
190
+ if (typeof e != "string" || !e) console.error("ReactDOM.prefetchDNS(): Expected the `href` argument (first) to be a non-empty string but encountered %s instead.", a(e));
191
+ else if (1 < arguments.length) {
192
+ var t = arguments[1];
193
+ typeof t == "object" && t.hasOwnProperty("crossOrigin") ? console.error("ReactDOM.prefetchDNS(): Expected only one argument, `href`, but encountered %s as a second argument instead. This argument is reserved for future options and is currently disallowed. It looks like the you are attempting to set a crossOrigin property for this DNS lookup hint. Browsers do not perform DNS queries using CORS and setting this attribute on the resource hint has no effect. Try calling ReactDOM.prefetchDNS() with just a single string argument, `href`.", o(t)) : console.error("ReactDOM.prefetchDNS(): Expected only one argument, `href`, but encountered %s as a second argument instead. This argument is reserved for future options and is currently disallowed. Try calling ReactDOM.prefetchDNS() with just a single string argument, `href`.", o(t));
194
+ }
195
+ typeof e == "string" && u.d.D(e);
196
+ }, e.preinit = function(e, t) {
197
+ if (typeof e == "string" && e ? typeof t != "object" || !t ? console.error("ReactDOM.preinit(): Expected the `options` argument (second) to be an object with an `as` property describing the type of resource to be preinitialized but encountered %s instead.", o(t)) : t.as !== "style" && t.as !== "script" && console.error("ReactDOM.preinit(): Expected the `as` property in the `options` argument (second) to contain a valid value describing the type of resource to be preinitialized but encountered %s instead. Valid values for `as` are \"style\" and \"script\".", o(t.as)) : console.error("ReactDOM.preinit(): Expected the `href` argument (first) to be a non-empty string but encountered %s instead.", a(e)), typeof e == "string" && t && typeof t.as == "string") {
198
+ var n = t.as, r = i(n, t.crossOrigin), s = typeof t.integrity == "string" ? t.integrity : void 0, c = typeof t.fetchPriority == "string" ? t.fetchPriority : void 0;
199
+ n === "style" ? u.d.S(e, typeof t.precedence == "string" ? t.precedence : void 0, {
200
+ crossOrigin: r,
201
+ integrity: s,
202
+ fetchPriority: c
203
+ }) : n === "script" && u.d.X(e, {
204
+ crossOrigin: r,
205
+ integrity: s,
206
+ fetchPriority: c,
207
+ nonce: typeof t.nonce == "string" ? t.nonce : void 0
208
+ });
209
+ }
210
+ }, e.preinitModule = function(e, t) {
211
+ var n = "";
212
+ if (typeof e == "string" && e || (n += " The `href` argument encountered was " + a(e) + "."), t !== void 0 && typeof t != "object" ? n += " The `options` argument encountered was " + a(t) + "." : t && "as" in t && t.as !== "script" && (n += " The `as` option encountered was " + o(t.as) + "."), n) console.error("ReactDOM.preinitModule(): Expected up to two arguments, a non-empty `href` string and, optionally, an `options` object with a valid `as` property.%s", n);
213
+ else switch (n = t && typeof t.as == "string" ? t.as : "script", n) {
214
+ case "script": break;
215
+ default: n = o(n), console.error("ReactDOM.preinitModule(): Currently the only supported \"as\" type for this function is \"script\" but received \"%s\" instead. This warning was generated for `href` \"%s\". In the future other module types will be supported, aligning with the import-attributes proposal. Learn more here: (https://github.com/tc39/proposal-import-attributes)", n, e);
216
+ }
217
+ typeof e == "string" && (typeof t == "object" && t ? (t.as == null || t.as === "script") && (n = i(t.as, t.crossOrigin), u.d.M(e, {
218
+ crossOrigin: n,
219
+ integrity: typeof t.integrity == "string" ? t.integrity : void 0,
220
+ nonce: typeof t.nonce == "string" ? t.nonce : void 0
221
+ })) : t ?? u.d.M(e));
222
+ }, e.preload = function(e, t) {
223
+ var n = "";
224
+ if (typeof e == "string" && e || (n += " The `href` argument encountered was " + a(e) + "."), typeof t != "object" || !t ? n += " The `options` argument encountered was " + a(t) + "." : typeof t.as == "string" && t.as || (n += " The `as` option encountered was " + a(t.as) + "."), n && console.error("ReactDOM.preload(): Expected two arguments, a non-empty `href` string and an `options` object with an `as` property valid for a `<link rel=\"preload\" as=\"...\" />` tag.%s", n), typeof e == "string" && typeof t == "object" && t && typeof t.as == "string") {
225
+ n = t.as;
226
+ var r = i(n, t.crossOrigin);
227
+ u.d.L(e, n, {
228
+ crossOrigin: r,
229
+ integrity: typeof t.integrity == "string" ? t.integrity : void 0,
230
+ nonce: typeof t.nonce == "string" ? t.nonce : void 0,
231
+ type: typeof t.type == "string" ? t.type : void 0,
232
+ fetchPriority: typeof t.fetchPriority == "string" ? t.fetchPriority : void 0,
233
+ referrerPolicy: typeof t.referrerPolicy == "string" ? t.referrerPolicy : void 0,
234
+ imageSrcSet: typeof t.imageSrcSet == "string" ? t.imageSrcSet : void 0,
235
+ imageSizes: typeof t.imageSizes == "string" ? t.imageSizes : void 0,
236
+ media: typeof t.media == "string" ? t.media : void 0
237
+ });
238
+ }
239
+ }, e.preloadModule = function(e, t) {
240
+ var n = "";
241
+ typeof e == "string" && e || (n += " The `href` argument encountered was " + a(e) + "."), t !== void 0 && typeof t != "object" ? n += " The `options` argument encountered was " + a(t) + "." : t && "as" in t && typeof t.as != "string" && (n += " The `as` option encountered was " + a(t.as) + "."), n && console.error("ReactDOM.preloadModule(): Expected two arguments, a non-empty `href` string and, optionally, an `options` object with an `as` property valid for a `<link rel=\"modulepreload\" as=\"...\" />` tag.%s", n), typeof e == "string" && (t ? (n = i(t.as, t.crossOrigin), u.d.m(e, {
242
+ as: typeof t.as == "string" && t.as !== "script" ? t.as : void 0,
243
+ crossOrigin: n,
244
+ integrity: typeof t.integrity == "string" ? t.integrity : void 0
245
+ })) : u.d.m(e));
246
+ }, e.requestFormReset = function(e) {
247
+ u.d.r(e);
248
+ }, e.unstable_batchedUpdates = function(e, t) {
249
+ return e(t);
250
+ }, e.useFormState = function(e, t, n) {
251
+ return c().useFormState(e, t, n);
252
+ }, e.useFormStatus = function() {
253
+ return c().useHostTransitionStatus();
254
+ }, e.version = "19.2.7", typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ < "u" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop == "function" && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());
255
+ })();
256
+ })), u = (/* @__PURE__ */ o(((e, t) => {
257
+ function n() {
258
+ if (!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ > "u" || typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE != "function")) {
259
+ if (process.env.NODE_ENV !== "production") throw Error("^_^");
260
+ try {
261
+ __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n);
262
+ } catch (e) {
263
+ console.error(e);
264
+ }
265
+ }
266
+ }
267
+ process.env.NODE_ENV === "production" ? (n(), t.exports = c()) : t.exports = l();
268
+ })))(), d = /* @__PURE__ */ o(((e) => {
269
+ var t = Symbol.for("react.transitional.element"), n = Symbol.for("react.fragment");
270
+ function r(e, n, r) {
271
+ var i = null;
272
+ if (r !== void 0 && (i = "" + r), n.key !== void 0 && (i = "" + n.key), "key" in n) for (var a in r = {}, n) a !== "key" && (r[a] = n[a]);
273
+ else r = n;
274
+ return n = r.ref, {
275
+ $$typeof: t,
276
+ type: e,
277
+ key: i,
278
+ ref: n === void 0 ? null : n,
279
+ props: r
280
+ };
281
+ }
282
+ e.Fragment = n, e.jsx = r, e.jsxs = r;
283
+ })), f = /* @__PURE__ */ o(((e) => {
284
+ process.env.NODE_ENV !== "production" && (function() {
285
+ function t(e) {
286
+ if (e == null) return null;
287
+ if (typeof e == "function") return e.$$typeof === k ? null : e.displayName || e.name || null;
288
+ if (typeof e == "string") return e;
289
+ switch (e) {
290
+ case v: return "Fragment";
291
+ case b: return "Profiler";
292
+ case y: return "StrictMode";
293
+ case w: return "Suspense";
294
+ case T: return "SuspenseList";
295
+ case O: return "Activity";
296
+ }
297
+ if (typeof e == "object") switch (typeof e.tag == "number" && console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."), e.$$typeof) {
298
+ case _: return "Portal";
299
+ case S: return e.displayName || "Context";
300
+ case x: return (e._context.displayName || "Context") + ".Consumer";
301
+ case C:
302
+ var n = e.render;
303
+ return e = e.displayName, e ||= (e = n.displayName || n.name || "", e === "" ? "ForwardRef" : "ForwardRef(" + e + ")"), e;
304
+ case E: return n = e.displayName || null, n === null ? t(e.type) || "Memo" : n;
305
+ case D:
306
+ n = e._payload, e = e._init;
307
+ try {
308
+ return t(e(n));
309
+ } catch {}
310
+ }
311
+ return null;
312
+ }
313
+ function n(e) {
314
+ return "" + e;
315
+ }
316
+ function r(e) {
317
+ try {
318
+ n(e);
319
+ var t = !1;
320
+ } catch {
321
+ t = !0;
322
+ }
323
+ if (t) {
324
+ t = console;
325
+ var r = t.error, i = typeof Symbol == "function" && Symbol.toStringTag && e[Symbol.toStringTag] || e.constructor.name || "Object";
326
+ return r.call(t, "The provided key is an unsupported type %s. This value must be coerced to a string before using it here.", i), n(e);
327
+ }
328
+ }
329
+ function i(e) {
330
+ if (e === v) return "<>";
331
+ if (typeof e == "object" && e && e.$$typeof === D) return "<...>";
332
+ try {
333
+ var n = t(e);
334
+ return n ? "<" + n + ">" : "<...>";
335
+ } catch {
336
+ return "<...>";
337
+ }
338
+ }
339
+ function a() {
340
+ var e = A.A;
341
+ return e === null ? null : e.getOwner();
342
+ }
343
+ function o() {
344
+ return Error("react-stack-top-frame");
345
+ }
346
+ function c(e) {
347
+ if (j.call(e, "key")) {
348
+ var t = Object.getOwnPropertyDescriptor(e, "key").get;
349
+ if (t && t.isReactWarning) return !1;
350
+ }
351
+ return e.key !== void 0;
352
+ }
353
+ function l(e, t) {
354
+ function n() {
355
+ P || (P = !0, console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)", t));
356
+ }
357
+ n.isReactWarning = !0, Object.defineProperty(e, "key", {
358
+ get: n,
359
+ configurable: !0
360
+ });
361
+ }
362
+ function u() {
363
+ var e = t(this.type);
364
+ return F[e] || (F[e] = !0, console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")), e = this.props.ref, e === void 0 ? null : e;
365
+ }
366
+ function d(e, t, n, r, i, a) {
367
+ var o = n.ref;
368
+ return e = {
369
+ $$typeof: g,
370
+ type: e,
371
+ key: t,
372
+ props: n,
373
+ _owner: r
374
+ }, (o === void 0 ? null : o) === null ? Object.defineProperty(e, "ref", {
375
+ enumerable: !1,
376
+ value: null
377
+ }) : Object.defineProperty(e, "ref", {
378
+ enumerable: !1,
379
+ get: u
380
+ }), e._store = {}, Object.defineProperty(e._store, "validated", {
381
+ configurable: !1,
382
+ enumerable: !1,
383
+ writable: !0,
384
+ value: 0
385
+ }), Object.defineProperty(e, "_debugInfo", {
386
+ configurable: !1,
387
+ enumerable: !1,
388
+ writable: !0,
389
+ value: null
390
+ }), Object.defineProperty(e, "_debugStack", {
391
+ configurable: !1,
392
+ enumerable: !1,
393
+ writable: !0,
394
+ value: i
395
+ }), Object.defineProperty(e, "_debugTask", {
396
+ configurable: !1,
397
+ enumerable: !1,
398
+ writable: !0,
399
+ value: a
400
+ }), Object.freeze && (Object.freeze(e.props), Object.freeze(e)), e;
401
+ }
402
+ function f(e, n, i, o, s, u) {
403
+ var f = n.children;
404
+ if (f !== void 0) if (o) if (M(f)) {
405
+ for (o = 0; o < f.length; o++) p(f[o]);
406
+ Object.freeze && Object.freeze(f);
407
+ } else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");
408
+ else p(f);
409
+ if (j.call(n, "key")) {
410
+ f = t(e);
411
+ var m = Object.keys(n).filter(function(e) {
412
+ return e !== "key";
413
+ });
414
+ o = 0 < m.length ? "{key: someKey, " + m.join(": ..., ") + ": ...}" : "{key: someKey}", R[f + o] || (m = 0 < m.length ? "{" + m.join(": ..., ") + ": ...}" : "{}", console.error("A props object containing a \"key\" prop is being spread into JSX:\n let props = %s;\n <%s {...props} />\nReact keys must be passed directly to JSX without using spread:\n let props = %s;\n <%s key={someKey} {...props} />", o, f, m, f), R[f + o] = !0);
415
+ }
416
+ if (f = null, i !== void 0 && (r(i), f = "" + i), c(n) && (r(n.key), f = "" + n.key), "key" in n) for (var h in i = {}, n) h !== "key" && (i[h] = n[h]);
417
+ else i = n;
418
+ return f && l(i, typeof e == "function" ? e.displayName || e.name || "Unknown" : e), d(e, f, i, a(), s, u);
419
+ }
420
+ function p(e) {
421
+ m(e) ? e._store && (e._store.validated = 1) : typeof e == "object" && e && e.$$typeof === D && (e._payload.status === "fulfilled" ? m(e._payload.value) && e._payload.value._store && (e._payload.value._store.validated = 1) : e._store && (e._store.validated = 1));
422
+ }
423
+ function m(e) {
424
+ return typeof e == "object" && !!e && e.$$typeof === g;
425
+ }
426
+ var h = s("react"), g = Symbol.for("react.transitional.element"), _ = Symbol.for("react.portal"), v = Symbol.for("react.fragment"), y = Symbol.for("react.strict_mode"), b = Symbol.for("react.profiler"), x = Symbol.for("react.consumer"), S = Symbol.for("react.context"), C = Symbol.for("react.forward_ref"), w = Symbol.for("react.suspense"), T = Symbol.for("react.suspense_list"), E = Symbol.for("react.memo"), D = Symbol.for("react.lazy"), O = Symbol.for("react.activity"), k = Symbol.for("react.client.reference"), A = h.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, j = Object.prototype.hasOwnProperty, M = Array.isArray, N = console.createTask ? console.createTask : function() {
427
+ return null;
428
+ };
429
+ h = { react_stack_bottom_frame: function(e) {
430
+ return e();
431
+ } };
432
+ var P, F = {}, I = h.react_stack_bottom_frame.bind(h, o)(), L = N(i(o)), R = {};
433
+ e.Fragment = v, e.jsx = function(e, t, n) {
434
+ var r = 1e4 > A.recentlyCreatedOwnerStacks++;
435
+ return f(e, t, n, !1, r ? Error("react-stack-top-frame") : I, r ? N(i(e)) : L);
436
+ }, e.jsxs = function(e, t, n) {
437
+ var r = 1e4 > A.recentlyCreatedOwnerStacks++;
438
+ return f(e, t, n, !0, r ? Error("react-stack-top-frame") : I, r ? N(i(e)) : L);
439
+ };
440
+ })();
441
+ })), p = (/* @__PURE__ */ o(((e, t) => {
442
+ process.env.NODE_ENV === "production" ? t.exports = d() : t.exports = f();
443
+ })))();
444
+ function m(e) {
445
+ return !!(e && "type" in e && e.type === "divider");
446
+ }
447
+ function h(e) {
448
+ return e.label ?? e.children ?? "Menu item";
449
+ }
450
+ function g(e, t) {
451
+ return e.value ?? e.label ?? `item-${t}`;
452
+ }
453
+ function _({ label: e = "Menu", triggerContent: o, triggerAriaLabel: s, menuAlign: c = "start", items: l = [], className: d = "", triggerClassName: f = "", menuClassName: _ = "", itemClassName: v = "", dividerClassName: y = "", id: b, onItemSelect: x, ...S }) {
454
+ let [C, w] = a(!1), T = i(null), E = i(null), D = i(null), O = n(), k = b ?? `nabs-ui-dropdownmenu-${O.replace(/:/g, "")}`, A = ["nabs-ui-dropdownmenu", d].filter(Boolean).join(" "), j = ["nabs-ui-dropdownmenu__trigger", f].filter(Boolean).join(" "), M = ["nabs-ui-dropdownmenu__menu", _].filter(Boolean).join(" "), N = ["nabs-ui-dropdownmenu__item", v].filter(Boolean).join(" "), P = ["nabs-ui-dropdownmenu__divider", y].filter(Boolean).join(" ");
455
+ t(() => {
456
+ let e = (e) => {
457
+ e.target instanceof Node && T.current && !T.current.contains(e.target) && D.current && !D.current.contains(e.target) && w(!1);
458
+ }, t = (e) => {
459
+ e.key === "Escape" && w(!1);
460
+ };
461
+ return document.addEventListener("pointerdown", e), document.addEventListener("keydown", t), () => {
462
+ document.removeEventListener("pointerdown", e), document.removeEventListener("keydown", t);
463
+ };
464
+ }, []), r(() => {
465
+ if (!C || !E.current) return;
466
+ let e = () => {
467
+ let e = E.current?.getBoundingClientRect(), t = D.current?.getBoundingClientRect(), n = D.current;
468
+ if (!e || !t || !n) return;
469
+ let r = Math.max(e.width, t.width), i = window.innerWidth - r - 8, a = c === "end" ? e.right - r : e.left, o = Math.max(8, Math.min(a, i)), s = Math.max(8, e.bottom + 10);
470
+ n.style.position = "fixed", n.style.top = `${s}px`, n.style.left = `${o}px`, n.style.right = "auto", n.style.minWidth = `${r}px`, n.style.visibility = "visible";
471
+ };
472
+ return D.current && (D.current.style.visibility = "hidden"), e(), window.addEventListener("resize", e), window.addEventListener("scroll", e, !0), () => {
473
+ window.removeEventListener("resize", e), window.removeEventListener("scroll", e, !0);
474
+ };
475
+ }, [c, C]);
476
+ let F = (e, t) => {
477
+ if (w(!1), e.disabled) {
478
+ t.preventDefault();
479
+ return;
480
+ }
481
+ x?.(e, t), e.onSelect?.(e, t);
482
+ };
483
+ return /* @__PURE__ */ (0, p.jsxs)("div", {
484
+ ref: T,
485
+ className: A,
486
+ ...S,
487
+ children: [/* @__PURE__ */ (0, p.jsx)("button", {
488
+ ref: E,
489
+ type: "button",
490
+ className: j,
491
+ "aria-haspopup": "menu",
492
+ "aria-controls": k,
493
+ "aria-label": s ?? e,
494
+ onClick: () => w((e) => !e),
495
+ children: o ?? /* @__PURE__ */ (0, p.jsxs)(p.Fragment, { children: [/* @__PURE__ */ (0, p.jsx)("span", {
496
+ className: "nabs-ui-dropdownmenu__triggerLabel",
497
+ children: e
498
+ }), /* @__PURE__ */ (0, p.jsx)("span", {
499
+ className: "nabs-ui-dropdownmenu__triggerChevron",
500
+ "aria-hidden": "true",
501
+ children: "▾"
502
+ })] })
503
+ }), C && typeof document < "u" ? (0, u.createPortal)(/* @__PURE__ */ (0, p.jsx)("div", {
504
+ ref: D,
505
+ id: k,
506
+ className: M,
507
+ "aria-label": e,
508
+ children: l.map((e, t) => {
509
+ if (m(e)) return /* @__PURE__ */ (0, p.jsx)("div", {
510
+ className: P,
511
+ role: "separator",
512
+ "aria-hidden": "true"
513
+ }, `divider-${t}`);
514
+ let n = h(e), r = [
515
+ N,
516
+ e.disabled ? "nabs-ui-dropdownmenu__item--disabled" : "",
517
+ e.danger ? "nabs-ui-dropdownmenu__item--danger" : ""
518
+ ].filter(Boolean).join(" "), i = {
519
+ className: r,
520
+ "aria-disabled": e.disabled || void 0
521
+ };
522
+ return e.href ? /* @__PURE__ */ (0, p.jsxs)("a", {
523
+ ...i,
524
+ href: e.disabled ? void 0 : e.href,
525
+ onClick: (t) => F(e, t),
526
+ children: [/* @__PURE__ */ (0, p.jsx)("span", {
527
+ className: "nabs-ui-dropdownmenu__itemLabel",
528
+ children: n
529
+ }), e.description ? /* @__PURE__ */ (0, p.jsx)("span", {
530
+ className: "nabs-ui-dropdownmenu__itemDescription",
531
+ children: e.description
532
+ }) : null]
533
+ }, g(e, t)) : /* @__PURE__ */ (0, p.jsxs)("button", {
534
+ type: "button",
535
+ className: r,
536
+ disabled: e.disabled,
537
+ onClick: (t) => F(e, t),
538
+ children: [/* @__PURE__ */ (0, p.jsx)("span", {
539
+ className: "nabs-ui-dropdownmenu__itemLabel",
540
+ children: n
541
+ }), e.description ? /* @__PURE__ */ (0, p.jsx)("span", {
542
+ className: "nabs-ui-dropdownmenu__itemDescription",
543
+ children: e.description
544
+ }) : null]
545
+ }, g(e, t));
546
+ })
547
+ }), document.body) : null]
548
+ });
549
+ }
550
+ //#endregion
551
+ //#region src/Avatar.tsx
552
+ function v(e) {
553
+ let t = e.trim().split(/\s+/).filter(Boolean);
554
+ return t.length === 0 ? "?" : t.slice(0, 2).map((e) => e[0]?.toUpperCase() ?? "").join("");
555
+ }
556
+ var y = e(function({ authenticated: e = !1, name: t = "Guest user", avatarUrl: n = "", loginHref: r, profileHref: i = "#", logoutHref: a = "#", onLoginClick: o, onProfileClick: s, onLogoutClick: c, className: l = "", menuLabel: u, ...d }, f) {
557
+ let m = t.trim() || "Guest user", h = v(m), g = [
558
+ "nabs-ui-avatar",
559
+ e ? "nabs-ui-avatar--authenticated" : "nabs-ui-avatar--unauthenticated",
560
+ l
561
+ ].filter(Boolean).join(" "), y = (e) => {
562
+ o && (e.preventDefault(), o(e));
563
+ }, b = (e) => {
564
+ s && (e.preventDefault(), s(e));
565
+ }, x = (e) => {
566
+ c && (e.preventDefault(), c(e));
567
+ };
568
+ return /* @__PURE__ */ (0, p.jsx)("div", {
569
+ ref: f,
570
+ className: g,
571
+ ...d,
572
+ children: e ? /* @__PURE__ */ (0, p.jsx)(_, {
573
+ className: "nabs-ui-avatar__menuRoot",
574
+ label: `${m} account menu`,
575
+ triggerAriaLabel: u ?? `${m} account menu`,
576
+ menuAlign: "end",
577
+ triggerContent: /* @__PURE__ */ (0, p.jsxs)(p.Fragment, { children: [
578
+ /* @__PURE__ */ (0, p.jsx)("span", {
579
+ className: "nabs-ui-avatar__avatar",
580
+ "aria-hidden": "true",
581
+ children: n ? /* @__PURE__ */ (0, p.jsx)("img", {
582
+ className: "nabs-ui-avatar__image",
583
+ src: n,
584
+ alt: ""
585
+ }) : h
586
+ }),
587
+ /* @__PURE__ */ (0, p.jsx)("span", {
588
+ className: "nabs-ui-avatar__name",
589
+ children: m
590
+ }),
591
+ /* @__PURE__ */ (0, p.jsx)("span", {
592
+ className: "nabs-ui-avatar__chevron",
593
+ "aria-hidden": "true",
594
+ children: "▾"
595
+ })
596
+ ] }),
597
+ triggerClassName: "nabs-ui-avatar__trigger",
598
+ menuClassName: "nabs-ui-avatar__menu",
599
+ itemClassName: "nabs-ui-avatar__menuItem",
600
+ items: [{
601
+ label: "Profile",
602
+ href: i,
603
+ onSelect: (e, t) => b(t)
604
+ }, {
605
+ label: "Logout",
606
+ href: a,
607
+ danger: !0,
608
+ onSelect: (e, t) => x(t)
609
+ }]
610
+ }) : r ? /* @__PURE__ */ (0, p.jsxs)("a", {
611
+ className: "nabs-ui-avatar__login",
612
+ href: r,
613
+ onClick: y,
614
+ children: [/* @__PURE__ */ (0, p.jsx)("span", {
615
+ className: "nabs-ui-avatar__avatar nabs-ui-avatar__avatar--placeholder",
616
+ "aria-hidden": "true",
617
+ children: h
618
+ }), /* @__PURE__ */ (0, p.jsx)("span", {
619
+ className: "nabs-ui-avatar__loginText",
620
+ children: "Login"
621
+ })]
622
+ }) : /* @__PURE__ */ (0, p.jsxs)("button", {
623
+ type: "button",
624
+ className: "nabs-ui-avatar__login",
625
+ onClick: y,
626
+ children: [/* @__PURE__ */ (0, p.jsx)("span", {
627
+ className: "nabs-ui-avatar__avatar nabs-ui-avatar__avatar--placeholder",
628
+ "aria-hidden": "true",
629
+ children: h
630
+ }), /* @__PURE__ */ (0, p.jsx)("span", {
631
+ className: "nabs-ui-avatar__loginText",
632
+ children: "Login"
633
+ })]
634
+ })
635
+ });
636
+ });
637
+ y.displayName = "Avatar";
638
+ //#endregion
639
+ export { y as Avatar };
package/package.json ADDED
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": "@net-advantage/nabs-ui-avatar",
3
+ "version": "0.1.0",
4
+ "description": "Reusable React avatar control for the Nabs UI library.",
5
+ "type": "module",
6
+ "main": "./dist/nabs-ui-avatar.cjs",
7
+ "module": "./dist/nabs-ui-avatar.js",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/nabs-ui-avatar.js",
11
+ "require": "./dist/nabs-ui-avatar.cjs"
12
+ },
13
+ "./Avatar": "./src/Avatar.tsx",
14
+ "./style.css": "./dist/nabs-ui-avatar.css"
15
+ },
16
+ "files": [
17
+ "dist"
18
+ ],
19
+ "peerDependencies": {
20
+ "react": "^19.0.0"
21
+ },
22
+ "dependencies": {
23
+ "@net-advantage/nabs-ui-dropdownmenu": "0.1.0"
24
+ },
25
+ "devDependencies": {
26
+ "@vitejs/plugin-react": "^6.0.1",
27
+ "react-dom": "^19.2.6",
28
+ "vite": "^8.0.12"
29
+ },
30
+ "scripts": {
31
+ "build": "vite build",
32
+ "dev": "vite"
33
+ }
34
+ }