@webority/ui-react 0.83.2 → 0.83.4
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/dist/components/AppAsyncBlock.js +1 -1
- package/dist/components/AppButton.js +1 -1
- package/dist/components/AppCommandPalette.js +1 -1
- package/dist/components/AppFileAttachment.js +1 -1
- package/dist/components/AppShell.js +1 -1
- package/dist/types/components/AppAsyncBlock.d.ts +3 -2
- package/dist/types/components/AppButton.d.ts +45 -18
- package/dist/types/components/AppShell.d.ts +5 -1
- package/dist/ui-react.js +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"./warnUnknownProps.js";import t from"./AppButton.js";import n from"./AppEmptyState.js";import r from"./
|
|
1
|
+
import e from"./warnUnknownProps.js";import t from"./AppButton.js";import n from"./AppEmptyState.js";import r from"./AppProgress.js";import{jsx as i}from"react/jsx-runtime";function a({loading:a=!1,error:o=null,empty:s=!1,children:c,onRetry:l,skeleton:u,className:d=``,...f}){e(`AppAsyncBlock`,f);let p=`async-block${d?` ${d}`:``}`;return a?i(`div`,{className:p,"data-state":`loading`,...f,children:u??i(r,{value:0,indeterminate:!0,size:`sm`,label:`Loading`})}):o?i(`div`,{className:p,"data-state":`error`,...f,children:i(n,{icon:`alert-circle`,title:`Something went wrong`,text:o,action:l?i(t,{variant:`secondary`,onClick:l,children:`Retry`}):null})}):s?i(`div`,{className:p,"data-state":`empty`,...f,children:i(n,{icon:`inbox`,title:`Nothing to show yet`})}):i(`div`,{className:p,"data-state":`content`,...f,children:c})}export{a as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"./warnInvalidValue.js";import t from"./warnUnknownProps.js";import{shortcutAria as n,shortcutChip as r}from"../lib/shortcutChip.js";import i from"./withTooltip.js";import a from"./AppIcon.js";import o from"./warnDeprecatedValue.js";import{Button as s}from"react-bootstrap";import{jsx as c,jsxs as l}from"react/jsx-runtime";var u={primary:`primary`,secondary:`secondary`,outline:`outline-primary`,ghost:`ghost`,text:`text`,danger:`danger`,success:`success`,"secondary-danger":`secondary-danger`,"outline-danger":`outline-danger`,light:`light`,warning:`warning`,neutral:`neutral`,"outline-light":`outline-light`,"outline-secondary":`outline-secondary`},d={subtle:{use:`neutral`,removeIn:`0.79.0`}};function f(e){return`btn-${u[d[e]?.use??e]??`primary`}`}var p={sm:14,md:16,lg:20},m=[`sheen`,`fill`,`expand`,`glow`,`roll`,`none`],h=[`rounded`,`pill`,`sharp`],g=[`linear`,`outline`,`bold`,`bulk`,`broken`,`twotone`],
|
|
1
|
+
import e from"./warnInvalidValue.js";import t from"./warnUnknownProps.js";import{shortcutAria as n,shortcutChip as r}from"../lib/shortcutChip.js";import i from"./withTooltip.js";import a from"./AppIcon.js";import o from"./warnDeprecatedValue.js";import{Button as s}from"react-bootstrap";import{jsx as c,jsxs as l}from"react/jsx-runtime";var u={primary:`primary`,secondary:`secondary`,outline:`outline-primary`,ghost:`ghost`,text:`text`,danger:`danger`,success:`success`,"secondary-danger":`secondary-danger`,"outline-danger":`outline-danger`,light:`light`,warning:`warning`,neutral:`neutral`,"outline-light":`outline-light`,"outline-secondary":`outline-secondary`},d={subtle:{use:`neutral`,removeIn:`0.79.0`}};function f(e){return`btn-${u[d[e]?.use??e]??`primary`}`}var p={sm:14,md:16,lg:20},m=[`sheen`,`fill`,`expand`,`glow`,`roll`,`none`],h=[`rounded`,`pill`,`sharp`],g=[`button`,`submit`,`reset`],_=[`linear`,`outline`,`bold`,`bulk`,`broken`,`twotone`],v=e=>e===`pill`||e===`sharp`?`wui-btn-shape-${e}`:``;function y(e){return l(`span`,{className:`wui-btn-roll`,children:[c(`span`,{className:`wui-btn-roll__a`,children:e}),c(`span`,{className:`wui-btn-roll__b`,"aria-hidden":`true`,children:e})]})}function b(e,t,n,r){if(!e)return null;let i=n=>typeof e==`string`?c(a,{name:e,size:p[t]??p.md,variant:r,className:n}):c(`span`,{className:[`d-inline-flex`,n].filter(Boolean).join(` `),children:e});return l(`span`,{className:n?`wui-btn-roll-ico wui-btn-pin-icon`:`wui-btn-roll-ico ms-2`,"aria-hidden":`true`,children:[i(),i(`wui-btn-roll-ico__next`)]})}function x(e,t,n,r){if(!e)return null;let i=t===`left`?`me-2`:`ms-2`;return typeof e==`string`?c(a,{name:e,size:p[n]??p.md,variant:r,className:i}):c(`span`,{className:`d-inline-flex ${i}`,children:e})}function S(e,t,n){return e?c(`span`,{className:`wui-btn-pin-icon`,"aria-hidden":`true`,children:typeof e==`string`?c(a,{name:e,size:p[t]??p.md,variant:n}):e}):null}function C({children:a,variant:f=`primary`,size:C=`md`,type:w=`button`,loading:T=!1,disabled:E=!1,block:D=!1,leftIcon:O=null,rightIcon:k=null,href:A,static:j=!1,tooltip:M,tooltipPlacement:N,shortcut:P,animation:F,pinRightIcon:I=!1,shape:L=`rounded`,iconVariant:R,className:z=``,...B}){t(`AppButton`,B),F!==void 0&&e(`AppButton`,`animation`,F,m);let V=F===`roll`&&!j,H=I&&k!=null&&k!==``&&!j&&!T;o(`AppButton`,`variant`,f,d);let U=d[f]?.use??f;if(e(`AppButton`,`variant`,U,Object.keys(u)),e(`AppButton`,`size`,C,Object.keys(p)),e(`AppButton`,`shape`,L,h),e(`AppButton`,`type`,w,g),R!==void 0&&e(`AppButton`,`iconVariant`,R,_),j){let e=[`btn`,`btn-${u[U]??`primary`}`,C===`sm`?`btn-sm`:C===`lg`?`btn-lg`:``,D?`w-100`:``,v(L),`btn-static`,z].filter(Boolean).join(` `),{onClick:t,...n}=B;return i(l(`span`,{className:e,...n,children:[x(O,`left`,C,R),a,x(k,`right`,C,R)]}),M,N)}let W=[D?`w-100`:``,T?`is-loading`:``,F&&m.includes(F)?`btn-anim-${F}`:``,H?`wui-btn-pin-end`:``,v(L),z].filter(Boolean).join(` `),G=(B.as===void 0||B.as===`button`)&&A===void 0&&B.to===void 0,K=G?{}:{role:void 0,tabIndex:E||T?-1:void 0},q=M!=null&&M!==``;return i(l(s,{type:G?w:void 0,href:A,variant:u[U]??`primary`,size:C===`md`?void 0:C,disabled:E||T,"aria-busy":T||void 0,"aria-keyshortcuts":n(P),className:W||void 0,...K,...B,children:[T&&c(`span`,{className:`spinner-border spinner-border-sm me-2`,"aria-hidden":`true`}),!T&&x(O,`left`,C,R),V?y(a):a,!T&&(V?b(k,C,H,R):H?S(k,C,R):x(k,`right`,C,R)),!q&&r(P)]}),M,N,P)}export{f as buttonVariantClass,C as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"./warnUnknownProps.js";import{shortcutAria as t,shortcutChip as n}from"../lib/shortcutChip.js";import r from"./AppIcon.js";import i from"./renderIconProp.js";import a from"./
|
|
1
|
+
import e from"./warnUnknownProps.js";import{shortcutAria as t,shortcutChip as n}from"../lib/shortcutChip.js";import r from"./AppIcon.js";import i from"./renderIconProp.js";import a from"./AppModal.js";import o from"./AppSpinner.js";import{matchSegments as s}from"@webority/ui-elements/helpers";import{Fragment as c,useEffect as l,useId as u,useLayoutEffect as d,useRef as f}from"react";import{jsx as p,jsxs as m}from"react/jsx-runtime";import"@webority/ui-elements/elements/command-palette";var h=`lg`;function g({open:t,onClose:n,query:r=``,onQueryChange:i,placeholder:o=`Search…`,groups:s=[],path:c=[],onPathChange:l,rootLabel:d,backLabel:f=`Back`,recentsKey:m,recentsLimit:g,recentsLabel:v,loading:y=!1,emptyText:b=`No results`,footer:x,ariaLabel:S=`Search`,highlight:C=!0,id:w,className:T=``,...E}){e(`AppCommandPalette`,E);let D=u(),O=w||D;return p(a,{open:t,onClose:n,hideHeader:!0,placement:`top`,size:h,ariaLabel:S,className:`wui-cmd-card${T?` ${T}`:``}`,children:p(_,{baseId:O,query:r,onQueryChange:i,placeholder:o,groups:s,path:c,onPathChange:l,rootLabel:d,backLabel:f,recentsKey:m,recentsLimit:g,recentsLabel:v,loading:y,emptyText:b,footer:x,ariaLabel:S,highlight:C,onClose:n,rest:E})})}function _({baseId:e,query:a,onQueryChange:s,placeholder:c,groups:u,path:h,onPathChange:g,rootLabel:_,backLabel:b,recentsKey:x,recentsLimit:S,recentsLabel:C,loading:w,emptyText:T,footer:E,ariaLabel:D,highlight:O,onClose:k,rest:A}){let j=f(null),M=`${e}-list`,N=u.filter(e=>e.items?.length),P=!w&&a.trim()!==``&&N.length===0;return d(()=>{j.current?.refresh?.()}),l(()=>{let e=j.current,t=e=>{let t=u.find(t=>String(t.key)===e.detail.groupKey)?.items?.find(t=>String(t.key)===e.detail.key);if(t){if(e.preventDefault(),t.page){s?.(``),g?.([...h,{key:t.page.key,label:t.page.label}]);return}t.onSelect?.(),k?.()}},n=e=>{e.preventDefault(),s?.(``),g?.(e.detail.path)};return e.addEventListener(`wui-command-palette:select`,t),e.addEventListener(`wui-command-palette:navigate`,n),()=>{e.removeEventListener(`wui-command-palette:select`,t),e.removeEventListener(`wui-command-palette:navigate`,n)}},[u,h,k,s,g]),m(`wui-command-palette`,{ref:j,path:JSON.stringify(h),"root-label":_,"recents-key":x,"recents-limit":S,"recents-label":C,...A,children:[m(`div`,{className:`wui-cmd-search`,children:[p(`span`,{className:`wui-cmd-search-icon`,"aria-hidden":`true`,children:p(r,{name:`search`,size:18})}),p(`input`,{className:`wui-cmd-input`,type:`text`,role:`combobox`,"aria-expanded":`true`,"aria-controls":M,"aria-autocomplete":`list`,"aria-label":D,placeholder:c,autoComplete:`off`,spellCheck:!1,"data-autofocus":``,value:a,onChange:e=>s?.(e.target.value)}),w&&p(o,{size:`sm`,className:`wui-cmd-spinner`})]}),m(`div`,{className:`wui-cmd-crumbs`,hidden:!0,children:[p(`button`,{type:`button`,className:`wui-cmd-back`,"aria-label":b,children:p(r,{name:`chevron-left`,size:16})}),p(`ol`,{className:`wui-cmd-trail`})]}),m(`div`,{className:`wui-cmd-list`,role:`listbox`,id:M,"aria-label":`Results`,"aria-busy":w?`true`:void 0,hidden:N.length===0,children:[p(`div`,{className:`wui-cmd-recents`}),N.map(o=>{let s=`${e}-${y(o.key)}`;return m(`div`,{className:`wui-cmd-group`,role:`group`,"aria-labelledby":s,children:[p(`div`,{className:`wui-cmd-group-label`,role:`presentation`,id:s,children:o.label}),o.items.map(e=>{let c=`${s}-${y(e.key)}`,l=e.description==null?null:`${c}-desc`,u=e.meta==null?null:`${c}-meta`;return m(`div`,{className:`wui-cmd-item`,role:`option`,id:c,"data-group-key":String(o.key),"data-key":String(e.key),"data-opens":e.page?String(e.page.key):void 0,"aria-label":e.ariaLabel||(typeof e.label==`string`?e.label:``)||void 0,"aria-describedby":[l,u].filter(Boolean).join(` `)||void 0,"aria-disabled":e.disabled?`true`:void 0,"aria-keyshortcuts":t(e.shortcut),children:[e.icon!=null&&p(`span`,{className:`wui-cmd-item-icon`,"aria-hidden":`true`,children:i(e.icon,{size:18})}),m(`span`,{className:`wui-cmd-item-text`,children:[p(`span`,{className:`wui-cmd-item-label`,children:O?v(e.label,a):e.label}),l&&p(`span`,{className:`wui-cmd-item-desc`,id:l,children:e.description})]}),u&&p(`span`,{className:`wui-cmd-item-meta`,id:u,children:e.meta}),n(e.shortcut),e.page&&p(`span`,{className:`wui-cmd-item-chevron`,"aria-hidden":`true`,children:p(r,{name:`chevron-right`,size:16})})]},e.key)})]},o.key)})]}),p(`div`,{className:`wui-cmd-empty`,role:`status`,children:P?T:null}),E!=null&&p(`div`,{className:`wui-cmd-footer`,children:E})]})}function v(e,t){if(typeof e!=`string`)return e;let n=s(e,t);if(n.length===1&&!n[0].match)return e;let r=0;return n.map(e=>{let t=r;return r+=e.text.length,e.match?p(`mark`,{className:`wui-cmd-mark`,children:e.text},t):p(c,{children:e.text},t)})}function y(e){return String(e).replace(/\s+/g,`_`)}export{g as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"./warnUnknownProps.js";import t from"./AppIcon.js";import n from"
|
|
1
|
+
import e from"./warnUnknownProps.js";import t from"./AppIcon.js";import n from"./AppProgress.js";import r from"../lib/FieldMessage.js";import{keyOf as i,linkOf as a,nameOf as o,sizeLabelOf as s,uploadErrorOf as c,uploadProgressOf as l,useItemUrl as u}from"../lib/fileItem.js";import d from"../lib/FileItemRow.js";import{DEFAULT_IMAGE_ACCEPT as f,DEFAULT_MAX_SIZE_MB as p,acceptLabel as m,isImageFile as h,isImageOnlyAccept as g,validateFile as _}from"@webority/ui-elements/helpers";import{useId as v,useState as y}from"react";import{Fragment as b,jsx as x,jsxs as S}from"react/jsx-runtime";function C({label:n=`Attachment`,value:o,name:s,onChange:c,multiple:l=!1,accept:u=f,maxSizeMb:m=p,optional:C=!1,validate:E=!0,error:D,id:O,...k}){e(`AppFileAttachment`,k);let A=v(),j=O||A,[M,N]=y(``),[P,F]=y(!1),I=l&&Array.isArray(o)?o:o?[o]:[],L=g(u),R=e=>e instanceof File?h(e):L||h(e),z=!l&&I.length===1&&R(I[0])&&(I[0]instanceof File||a(I[0])!==null),B=w(u,m);function V(e){if(!e.length)return;let t=[],n=``;for(let r of e){let e=E?_(r,{accept:u,maxSizeMb:m}):null;if(e){n||=e;continue}t.push(r)}if(N(n),t.length)if(l){let e=Array.isArray(o)?o:o?[o]:[],n=new Set(e.map(i));c(e.concat(t.filter(e=>!n.has(i(e)))))}else c(t[0])}function H(e){let t=Array.from(e.target.files||[]);e.target.value=``,V(t)}function U(e){N(``),c(l?I.filter((t,n)=>n!==e):null)}let W=D||M,G=W?`${j}-error`:void 0,K=l||I.length===0,q=L?`image`:`file`,J=l?`Add ${q}s`:`Add ${L?`an`:`a`} ${q}`;return S(`div`,{className:`field`,children:[S(`label`,{className:`label`,htmlFor:j,children:[n,C&&x(`span`,{className:`label-optional`,children:` (optional)`})]}),K&&S(b,{children:[S(`label`,{className:`attach-drop${P?` dragging`:``}`,htmlFor:j,onDragEnter:e=>{e.preventDefault(),k.disabled||F(!0)},onDragOver:e=>{e.preventDefault(),k.disabled||F(!0)},onDragLeave:e=>{e.preventDefault(),F(!1)},onDrop:e=>{e.preventDefault(),F(!1),!k.disabled&&V(Array.from(e.dataTransfer?.files||[]))},children:[x(`span`,{className:`attach-drop-icon`,children:x(t,{name:L?`image`:`file-text`,size:18})}),S(`span`,{className:`attach-drop-copy`,children:[x(`span`,{className:`attach-drop-title`,children:J}),B&&x(`span`,{className:`attach-drop-hint`,children:B})]}),x(`span`,{className:`attach-drop-cta`,children:`Browse`})]}),x(`input`,{id:j,type:`file`,className:`visually-hidden`,name:s,accept:u||void 0,multiple:l||void 0,"aria-describedby":G,onChange:H,...k})]}),z?x(T,{item:I[0],isImage:!0,onRemove:()=>U(0)}):I.length>0&&x(`div`,{className:`attach-list`,children:I.map((e,t)=>x(d,{item:e,isImage:R(e),onRemove:()=>U(t)},i(e)))}),x(r,{error:W,errorId:`${j}-error`})]})}function w(e,t){let n=e?.trim()?m(e):``,r=t>0?`up to ${t} MB`:``;return n&&r?`${n}, ${r}`:r?`Up to ${t} MB`:n}function T({item:e,isImage:r,onRemove:i}){let d=u(e,r),f=o(e),p=s(e),m=l(e),h=c(e),g=a(e);return S(`div`,{className:h?`attach-preview wui-attach-failed`:`attach-preview`,children:[S(`div`,{className:`attach-figure`,children:[x(`img`,{src:d,alt:f}),x(`button`,{type:`button`,className:`attach-remove`,"aria-label":`Remove attachment`,onClick:i,children:x(t,{name:`x`,size:18})})]}),S(`div`,{className:`attach-meta`,children:[x(`div`,{className:`attach-name`,children:g?x(`a`,{href:g,children:f}):f}),p&&x(`div`,{className:`attach-size`,children:p})]}),m!==null&&x(n,{value:m,size:`sm`,label:`Uploading ${f}`,className:`wui-attach-progress`}),h&&x(`div`,{className:`wui-attach-error`,children:h})]})}export{C as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"./warnInvalidValue.js";import t from"./warnUnknownProps.js";import n from"./AppIcon.js";import r from"./AppAvatar.js";import{navMatchScore as i}from"../lib/navMatch.js";import{readShellCollapsed as a,writeShellCollapsed as o}from"../lib/shellCookie.js";import{initScrollEdges as s}from"@webority/ui-elements/helpers";import{useEffect as c,useId as l,useMemo as u,useRef as d,useState as f}from"react";import{Fragment as p,jsx as m,jsxs as h}from"react/jsx-runtime";var g=99,_=4,v=5,y=[`prefix`,`exact`],b=[`comfortable`,`compact`],x=e=>e>g?`${g}+`:String(e);function S({groups:r=[],brand:i,sidebarStart:l,sidebarStartCompact:p,sidebarFooter:g,topbarStart:_,topbarEnd:v,footer:y,children:x,collapsed:S,onCollapsedChange:E,noSidebar:O=!1,density:j=`comfortable`,navLabel:N=`Main navigation`,linkComponent:P,currentPath:F,rememberCollapsed:I=!1,collapsedCookie:L=`wui-shell-collapsed`,tabBarLabel:R=`Quick navigation`,moreLabel:z=`More`,userMenu:B,notifications:V,search:H,className:U=``,...W}){t(`AppShell`,W),e(`AppShell`,`density`,j,b);let[G,K]=f(()=>I&&S===void 0&&typeof document<`u`?a(L)??!1:!1),[q,J]=f(!1),[Y,ee]=f(!1),[te,ne]=f(!1),X=d(null),Z=S??G,re=()=>{let e=!Z;S===void 0&&K(e),I&&o(e,L),E?.(e)},Q=u(()=>C(r,F),[r,F]),$=O?null:w(Q);return c(()=>{let e=()=>ee(window.scrollY>4);return e(),window.addEventListener(`scroll`,e,{passive:!0}),()=>window.removeEventListener(`scroll`,e)},[]),c(()=>{s()},[]),c(()=>{let e=X.current,t=e?.querySelector(`.app-nav-item[aria-current="page"]`);if(!e||!t)return;let n=t.getBoundingClientRect(),r=e.getBoundingClientRect();n.top<r.top?e.scrollTop-=r.top-n.top:n.bottom>r.bottom&&(e.scrollTop+=n.bottom-r.bottom)},[]),c(()=>{let e=X.current;if(!e)return;let t=()=>ne(e.scrollHeight>e.clientHeight);if(t(),typeof ResizeObserver>`u`)return;let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[Q]),c(()=>{if(!q)return;let e=e=>{e.key===`Escape`&&J(!1)};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[q]),h(`div`,{className:[`app-shell`,Z?`collapsed`:``,O?`no-sidebar`:``,q?`mobile-open`:``,U].filter(Boolean).join(` `),"data-density":j===`compact`?`compact`:void 0,...W,children:[m(`a`,{className:`wui-skip-link`,href:`#main-content`,children:`Skip to content`}),h(`aside`,{className:`app-sidebar`,children:[i&&m(`div`,{className:`app-sidebar-brand`,children:i}),l&&m(`div`,{className:`app-sidebar-start`,children:l}),p&&m(`div`,{className:`app-sidebar-start-compact`,children:p}),m(`nav`,{className:`app-sidebar-scroll`,"aria-label":N,ref:X,tabIndex:te?0:void 0,children:Q.map((e,t)=>h(`div`,{className:`app-nav-group`,children:[e.label&&m(`div`,{className:`app-nav-group-label`,children:e.label}),e.items.map(e=>m(D,{item:e,linkComponent:P,onNavigate:()=>J(!1)},e.key??e.href??e.label)),e.after&&m(`div`,{className:`wui-nav-group-after`,children:e.after})]},e.label??`group-${t}`))}),g&&m(`div`,{className:`app-sidebar-foot`,children:g}),!O&&m(`button`,{type:`button`,className:`app-sidebar-toggle`,onClick:re,"aria-label":Z?`Expand navigation`:`Collapse navigation`,"aria-expanded":!Z,children:m(n,{name:`chevrons-left`,size:20})})]}),h(`div`,{className:`app-main`,children:[h(`header`,{className:`app-topbar${Y?` scrolled`:``}`,children:[h(`div`,{className:`app-topbar-start`,children:[m(`button`,{type:`button`,className:`app-topbar-menu`,onClick:()=>J(!0),"aria-label":`Open navigation`,"aria-expanded":q,children:m(n,{name:`menu`,size:18})}),_,H&&m(M,{config:H})]}),h(`div`,{className:`app-topbar-end`,children:[v,V&&m(A,{config:V}),B&&m(k,{config:B,linkComponent:P})]})]}),m(`main`,{className:`app-content`,id:`main-content`,children:x}),y&&m(`footer`,{className:`app-footer`,children:y})]}),$&&h(`nav`,{className:`wui-tabbar`,"aria-label":R,children:[$.tabs.map(e=>m(T,{tab:e,linkComponent:P},e.key??e.href)),$.hasMore&&h(`button`,{type:`button`,className:`wui-tabbar-item${$.moreActive?` active`:``}`,onClick:()=>J(!0),children:[m(`span`,{className:`wui-tabbar-icon`,children:m(n,{name:`more`,size:24})}),m(`span`,{className:`wui-tabbar-label`,children:z})]})]}),m(`button`,{type:`button`,className:`app-scrim`,onClick:()=>J(!1),"aria-label":`Close navigation`,tabIndex:q?0:-1})]})}function C(t,n){let r=e=>(e??[]).map(e=>Array.isArray(e.children)?{...e,children:r(e.children)}:{...e}).filter(e=>(e.children?.length??0)>0||!!e.href),a=t.map(e=>({...e,items:r(e.items)})).filter(e=>e.items.length>0),o=[],s=e=>{for(let t of e)o.push(t),t.children&&s(t.children)};for(let e of a)s(e.items);for(let t of o)e(`AppShell`,`match`,t.match,y);let c=null;if(n!=null&&!o.some(e=>e.active===!0)){let e=-1;for(let t of o){if(t.active!=null||t.children?.length&&!t.href)continue;let r=i(n,t.href,{exact:t.match===`exact`,also:t.matchAlso});r>e&&(e=r,c=t)}}for(let e of o)e.active=e.active??e===c;return a}function w(e){let t=[],n=e=>{for(let r of e)r.children?.length?n(r.children):t.push(r)};for(let t of e)n(t.items);let r=t.filter(e=>e.tab);if(r.length===0)return null;let i=r.length<t.length,a=i?_:v;if(r.length>a)throw Error(`<AppShell>: ${r.length} items carry tab: true, but the phone tab bar holds ${a} (${i?`4 plus More, because other items exist`:`5 when every item is a tab`}). Flag fewer items.`);return{tabs:r,hasMore:i,moreActive:t.some(e=>!e.tab&&e.active)}}function T({tab:e,linkComponent:t}){let r=`wui-tabbar-item${e.active?` active`:``}`,i=h(p,{children:[e.icon&&m(`span`,{className:`wui-tabbar-icon`,children:typeof e.icon==`string`?m(n,{name:e.icon,size:24}):e.icon}),m(`span`,{className:`wui-tabbar-label`,children:e.tabLabel??e.label}),e.badge!=null&&m(`span`,{className:`wui-tabbar-badge${e.badgeTone?` tone-${e.badgeTone}`:``}`,title:e.badgeTitle||void 0,children:e.badge})]}),a=e.active?`page`:void 0;return t?m(t,{className:r,to:e.href,"aria-current":a,children:i}):m(`a`,{className:r,href:e.href,"aria-current":a,children:i})}function E(e){for(let t of e){if(t.active)return t;let e=t.children?.length?E(t.children):void 0;if(e)return e}}function D({item:e,linkComponent:t,onNavigate:r,depth:i=0}){let a=i>0,o=i>1?` wui-nav-depth-${Math.min(i,6)}`:``,s=Array.isArray(e.children)&&e.children.length>0,l=s?E(e.children):void 0,u=!!l,d=l?l.key??l.href??l.label:null,[g,_]=f(u);c(()=>{d!=null&&_(!0)},[d]);let v=typeof e.label==`string`?e.label:void 0,y=!a&&e.icon&&m(`span`,{className:`app-nav-icon`,children:typeof e.icon==`string`?m(n,{name:e.icon,size:22}):e.icon}),b=e.badge!=null&&m(`span`,{className:`app-nav-badge${e.badgeTone?` tone-${e.badgeTone}`:``}`,title:e.badgeTitle||void 0,children:e.badge}),x=h(p,{children:[y,m(`span`,{className:`app-nav-text`,children:e.label}),b,e.trailingIcon&&m(`span`,{className:`app-nav-trailing`,children:typeof e.trailingIcon==`string`?m(n,{name:e.trailingIcon,size:16}):e.trailingIcon})]}),S=e.active?`page`:void 0;if(s){let s=m(`div`,{className:`app-nav-sub${g?` expanded`:``}`,inert:!g,"aria-hidden":!g||void 0,children:m(`div`,{className:`app-nav-sub-inner`,children:e.children.map(e=>m(D,{item:e,linkComponent:t,onNavigate:r,depth:i+1},e.key??e.href))})});if(e.href){let i=t?m(t,{className:`wui-nav-split-link`,to:e.href,"aria-current":S,onClick:r,children:x}):m(`a`,{className:`wui-nav-split-link`,href:e.href,"aria-current":S,onClick:r,children:x});return h(p,{children:[h(`div`,{className:`app-nav-item has-children wui-nav-split${a?` app-nav-subitem`:``}${u||e.active?` active`:``}${o}`,"data-label":v,children:[i,m(`button`,{type:`button`,className:`app-nav-caret wui-nav-split-toggle`,"aria-expanded":g,"aria-label":`Show or hide ${v??``} pages`,onClick:()=>_(e=>!e),children:m(n,{name:`chevron-right`,size:16})})]}),s]})}return h(p,{children:[h(`button`,{type:`button`,className:`app-nav-item${a?` app-nav-subitem`:``} has-children${u?` active`:``}${o}`,"aria-expanded":g,"data-label":v,onClick:()=>_(e=>!e),children:[y,m(`span`,{className:`app-nav-text`,children:e.label}),b,m(`span`,{className:`app-nav-caret`,children:m(n,{name:`chevron-right`,size:16})})]}),s]})}let C=`app-nav-item${a?` app-nav-subitem`:``}${e.active?` active`:``}${o}`;return t?m(t,{className:C,to:e.href,"aria-current":S,"data-label":v,onClick:r,children:x}):m(`a`,{className:C,href:e.href,"aria-current":S,"data-label":v,onClick:r,children:x})}function O(){let[e,t]=f(!1),n=d(null);return c(()=>{if(!e)return;let r=e=>{n.current?.contains(e.target)||t(!1)},i=e=>{e.key===`Escape`&&(t(!1),n.current?.querySelector(`button`)?.focus())};return document.addEventListener(`mousedown`,r),document.addEventListener(`keydown`,i),()=>{document.removeEventListener(`mousedown`,r),document.removeEventListener(`keydown`,i)}},[e]),{open:e,setOpen:t,ref:n}}function k({config:e,linkComponent:t}){let i=l(),{open:a,setOpen:o,ref:s}=O(),{name:c,role:u,photo:d,profileHref:f,profileLabel:g=`My profile`,onLogout:_,logoutAction:v,logoutLabel:y=`Sign out`,items:b=[]}=e;if(!c)throw Error(`<AppShell> userMenu.name is required; the trigger and the avatar are named from it.`);let x=()=>o(!1),S=(e,n,r,i)=>t?m(t,{className:`dropdown-item`,to:e,onClick:i,children:n},r):m(`a`,{className:`dropdown-item`,href:e,onClick:i,children:n},r),C=h(p,{children:[m(n,{name:`log-out`,size:18}),y]});return h(`div`,{className:`dropdown wui-usermenu`,ref:s,children:[h(`button`,{type:`button`,id:i,className:`wui-usermenu-trigger`,"aria-expanded":a,"aria-label":`Account menu for ${c}`,onClick:()=>o(e=>!e),children:[m(r,{name:c,src:d,tone:`auto`}),h(`span`,{className:`wui-usermenu-text`,children:[m(`span`,{className:`wui-usermenu-name`,children:c}),u&&m(`span`,{className:`wui-usermenu-role`,children:u})]}),m(n,{name:`chevron-down`,size:14,className:`wui-usermenu-caret`})]}),h(`div`,{className:`dropdown-menu dropdown-menu-end wui-usermenu-menu${a?` show`:``}`,"aria-labelledby":i,"data-bs-popper":a?`static`:void 0,children:[h(`div`,{className:`wui-usermenu-head`,children:[m(r,{name:c,src:d,size:`lg`,tone:`auto`}),h(`div`,{className:`wui-usermenu-who`,children:[m(`div`,{className:`wui-usermenu-name`,children:c}),u&&m(`div`,{className:`wui-usermenu-role`,children:u})]})]}),f&&S(f,h(p,{children:[m(n,{name:`user`,size:18}),g]}),void 0,x),b.map(e=>{if(e.divider)return m(`hr`,{className:`dropdown-divider`},e.key);let t=h(p,{children:[e.icon&&m(n,{name:e.icon,size:18}),e.label]}),r=()=>{e.onClick?.(),x()};return e.href?S(e.href,t,e.key,r):m(`button`,{type:`button`,className:`dropdown-item`,onClick:r,children:t},e.key)}),v?m(`form`,{method:`post`,action:v,className:`wui-usermenu-logout`,children:m(`button`,{type:`submit`,className:`dropdown-item danger`,children:C})}):_&&m(`button`,{type:`button`,className:`dropdown-item danger`,onClick:()=>{x(),_()},children:C})]})]})}function A({config:e}){let t=l(),{open:r,setOpen:i,ref:a}=O(),{unread:o=0,items:s,loading:u=!1,onOpen:g,onMarkAllRead:_,viewAllHref:v,label:y=`Notifications`,emptyText:b=`You are all caught up.`}=e,[S,C]=f(``),w=d(o);c(()=>{w.current!==o&&(w.current=o,C(o===0?`No unread notifications`:`${x(o)} unread notifications`))},[o]);let T=null;return s?.length?T=m(`div`,{className:`wui-bell-items`,children:s.map((e,t)=>{let r=`wui-bell-item${e.read?` wui-bell-item-read`:``}`,i=h(p,{children:[m(`span`,{className:`wui-bell-dot`,"aria-hidden":`true`}),e.icon&&m(`span`,{className:`wui-bell-icon`,children:m(n,{name:e.icon,size:18})}),h(`span`,{className:`wui-bell-body`,children:[!e.read&&m(`span`,{className:`visually-hidden`,children:`Unread: `}),m(`span`,{className:`wui-bell-item-title`,children:e.title}),e.time&&m(`span`,{className:`wui-bell-when`,children:e.time})]})]});return e.href?m(`a`,{className:r,href:e.href,"data-id":e.id,children:i},e.id??t):m(`div`,{className:r,"data-id":e.id,children:i},e.id??t)})}):u?T=m(`div`,{className:`wui-bell-state`,children:`Loading…`}):s&&(T=m(`div`,{className:`wui-bell-state`,children:b})),h(`div`,{className:`dropdown wui-bell`,ref:a,children:[h(`button`,{type:`button`,id:t,className:`topbar-icon-btn wui-bell-trigger`,"aria-expanded":r,"aria-label":o===0?y:`${y}, ${x(o)} unread`,onClick:()=>{let e=!r;i(e),e&&g?.()},children:[m(n,{name:`notification`,size:20}),m(`span`,{className:`wui-bell-count`,"aria-hidden":`true`,hidden:o===0,children:x(o)})]}),m(`span`,{className:`visually-hidden`,"aria-live":`polite`,children:S}),h(`div`,{className:`dropdown-menu dropdown-menu-end wui-bell-menu${r?` show`:``}`,"aria-labelledby":t,"data-bs-popper":r?`static`:void 0,children:[h(`div`,{className:`wui-bell-head`,children:[m(`span`,{className:`wui-bell-title`,children:y}),_&&m(`button`,{type:`button`,className:`wui-bell-markall`,onClick:_,children:`Mark all read`})]}),m(`div`,{className:`wui-bell-list`,"aria-busy":u||void 0,children:T}),v&&m(`a`,{className:`wui-bell-foot`,href:v,children:`View all`})]})]})}var j=e=>!!e&&(e.isContentEditable||/^(INPUT|TEXTAREA|SELECT)$/.test(e.tagName));function M({config:e}){let t=l(),{value:r=``,onChange:i,results:a=null,loading:o=!1,onSelect:s,onSubmit:p,placeholder:g=`Search`}=e,[_,v]=f(!1),[y,b]=f(!1),[x,S]=f({results:null,index:-1}),C=x.results===a?x.index:-1,w=e=>S({results:a,index:e}),T=d(null),E=d(null),D=d([]),O=u(()=>(a??[]).flatMap(e=>e.hits??[]),[a]),k=a!=null&&!y,A=O.length;c(()=>{let e=e=>{e.key!==`/`||e.ctrlKey||e.metaKey||e.altKey||j(e.target)||(e.preventDefault(),v(!0),E.current?.focus())},t=e=>{T.current?.contains(e.target)||(b(!0),v(!1))};return document.addEventListener(`keydown`,e),document.addEventListener(`pointerdown`,t),()=>{document.removeEventListener(`keydown`,e),document.removeEventListener(`pointerdown`,t)}},[]);let M=e=>{if(e.key===`ArrowDown`||e.key===`ArrowUp`){if(!k||A===0)return;e.preventDefault(),w((C+(e.key===`ArrowDown`?1:-1)+A)%A)}else e.key===`Enter`?k&&C>=0&&D.current[C]?(e.preventDefault(),D.current[C].click()):p&&r.trim()!==``&&(e.preventDefault(),p(r.trim())):e.key===`Escape`&&(k?(e.preventDefault(),b(!0)):_&&(e.preventDefault(),v(!1)))},N=-1;return D.current=[],h(`div`,{className:`wui-topsearch${_?` is-open`:``}${o?` is-loading`:``}`,ref:T,children:[m(`button`,{type:`button`,className:`topbar-icon-btn wui-topsearch-open`,"aria-label":g,"aria-expanded":_,"aria-controls":`${t}-panel`,onClick:()=>{let e=!_;v(e),e&&E.current?.focus()},children:m(n,{name:`search`,size:20})}),h(`div`,{className:`wui-topsearch-panel`,id:`${t}-panel`,children:[h(`div`,{className:`search-wrap`,children:[m(n,{name:`search`,size:18,className:`search-icon`}),m(`input`,{ref:E,type:`search`,className:`form-control input search-input`,id:`${t}-input`,placeholder:g,"aria-label":g,role:`combobox`,"aria-autocomplete":`list`,"aria-expanded":k,"aria-controls":`${t}-list`,"aria-activedescendant":k&&C>=0?`${t}-opt-${C}`:void 0,autoComplete:`off`,value:r,onChange:e=>{b(!1),i?.(e.target.value)},onKeyDown:M})]}),m(`div`,{className:`wui-topsearch-results`,id:`${t}-list`,role:`listbox`,"aria-label":`Search results`,hidden:!k,children:k&&h(`div`,{className:`wui-topsearch-groups`,role:`presentation`,children:[A===0&&h(`div`,{className:`wui-topsearch-empty`,role:`option`,"aria-disabled":`true`,"aria-selected":`false`,children:[`No results for “`,r,`”`]}),a.filter(e=>e.hits?.length).map((e,r)=>h(`div`,{className:`wui-topsearch-group`,role:`group`,"aria-label":e.label??``,children:[e.label&&m(`div`,{className:`wui-topsearch-group-label`,role:`presentation`,children:e.label}),e.hits.map(e=>{N+=1;let r=N;return h(`a`,{className:`wui-topsearch-hit${r===C?` is-active`:``}`,role:`option`,"aria-selected":r===C,id:`${t}-opt-${r}`,href:e.href,ref:e=>{D.current[r]=e},onClick:t=>s?.(e,t),children:[e.icon&&m(`span`,{className:`wui-topsearch-hit-icon`,children:m(n,{name:e.icon,size:18})}),h(`span`,{className:`wui-topsearch-hit-text`,children:[m(`span`,{className:`wui-topsearch-hit-title`,children:e.title}),e.subtitle&&m(`span`,{className:`wui-topsearch-hit-sub`,children:e.subtitle})]})]},`${e.href}-${r}`)})]},e.label??r))]})})]}),m(`span`,{className:`visually-hidden`,"aria-live":`polite`,children:k?A===0?`No results`:`${A} ${A===1?`result`:`results`}`:``})]})}export{S as default};
|
|
1
|
+
import e from"./warnInvalidValue.js";import t from"./warnUnknownProps.js";import n from"./AppIcon.js";import r from"./AppAvatar.js";import{navMatchScore as i}from"../lib/navMatch.js";import{readShellCollapsed as a,writeShellCollapsed as o}from"../lib/shellCookie.js";import{initScrollEdges as s}from"@webority/ui-elements/helpers";import{useEffect as c,useId as l,useMemo as u,useRef as d,useState as f}from"react";import{Fragment as p,jsx as m,jsxs as h}from"react/jsx-runtime";var g=99,_=4,v=5,y=[`prefix`,`exact`],b=[`comfortable`,`compact`],x=[`default`,`primary`],S=e=>e>g?`${g}+`:String(e);function C({groups:r=[],brand:i,sidebarStart:l,sidebarStartCompact:p,sidebarFooter:g,topbarStart:_,topbarEnd:v,footer:y,launcher:S,children:C,collapsed:D,onCollapsedChange:k,noSidebar:M=!1,density:P=`comfortable`,topbarTone:F=`default`,navLabel:I=`Main navigation`,linkComponent:L,currentPath:R,rememberCollapsed:z=!1,collapsedCookie:B=`wui-shell-collapsed`,tabBarLabel:V=`Quick navigation`,moreLabel:H=`More`,userMenu:U,notifications:W,search:G,className:K=``,...q}){t(`AppShell`,q),e(`AppShell`,`density`,P,b),e(`AppShell`,`topbarTone`,F,x);let[ee,te]=f(()=>z&&D===void 0&&typeof document<`u`?a(B)??!1:!1),[J,Y]=f(!1),[ne,re]=f(!1),[ie,ae]=f(!1),X=d(null),Z=D??ee,oe=()=>{let e=!Z;D===void 0&&te(e),z&&o(e,B),k?.(e)},Q=u(()=>w(r,R),[r,R]),$=M?null:T(Q);return c(()=>{let e=()=>re(window.scrollY>4);return e(),window.addEventListener(`scroll`,e,{passive:!0}),()=>window.removeEventListener(`scroll`,e)},[]),c(()=>{s()},[]),c(()=>{let e=X.current,t=e?.querySelector(`.app-nav-item[aria-current="page"]`);if(!e||!t)return;let n=t.getBoundingClientRect(),r=e.getBoundingClientRect();n.top<r.top?e.scrollTop-=r.top-n.top:n.bottom>r.bottom&&(e.scrollTop+=n.bottom-r.bottom)},[]),c(()=>{let e=X.current;if(!e)return;let t=()=>ae(e.scrollHeight>e.clientHeight);if(t(),typeof ResizeObserver>`u`)return;let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[Q]),c(()=>{if(!J)return;let e=e=>{e.key===`Escape`&&Y(!1)};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[J]),h(`div`,{className:[`app-shell`,Z?`collapsed`:``,M?`no-sidebar`:``,J?`mobile-open`:``,K].filter(Boolean).join(` `),"data-density":P===`compact`?`compact`:void 0,...q,children:[m(`a`,{className:`wui-skip-link`,href:`#main-content`,children:`Skip to content`}),h(`aside`,{className:`app-sidebar`,children:[i&&m(`div`,{className:`app-sidebar-brand`,children:i}),l&&m(`div`,{className:`app-sidebar-start`,children:l}),p&&m(`div`,{className:`app-sidebar-start-compact`,children:p}),m(`nav`,{className:`app-sidebar-scroll`,"aria-label":I,ref:X,tabIndex:ie?0:void 0,children:Q.map((e,t)=>h(`div`,{className:`app-nav-group`,children:[e.label&&m(`div`,{className:`app-nav-group-label`,children:e.label}),e.items.map(e=>m(O,{item:e,linkComponent:L,onNavigate:()=>Y(!1)},e.key??e.href??e.label)),e.after&&m(`div`,{className:`wui-nav-group-after`,children:e.after})]},e.label??`group-${t}`))}),g&&m(`div`,{className:`app-sidebar-foot`,children:g}),!M&&m(`button`,{type:`button`,className:`app-sidebar-toggle`,onClick:oe,"aria-label":Z?`Expand navigation`:`Collapse navigation`,"aria-expanded":!Z,children:m(n,{name:`chevrons-left`,size:20})})]}),h(`div`,{className:`app-main`,children:[h(`header`,{className:`app-topbar${ne?` scrolled`:``}`,"data-tone":F===`primary`?`primary`:void 0,children:[h(`div`,{className:`app-topbar-start`,children:[m(`button`,{type:`button`,className:`app-topbar-menu`,onClick:()=>Y(!0),"aria-label":`Open navigation`,"aria-expanded":J,children:m(n,{name:`menu`,size:18})}),_,G&&m(N,{config:G})]}),h(`div`,{className:`app-topbar-end`,children:[v,W&&m(j,{config:W}),U&&m(A,{config:U,linkComponent:L})]})]}),m(`main`,{className:`app-content`,id:`main-content`,children:C}),y&&m(`footer`,{className:`app-footer`,children:y})]}),S&&m(`div`,{className:`wui-shell-launcher`,children:S}),$&&h(`nav`,{className:`wui-tabbar`,"aria-label":V,children:[$.tabs.map(e=>m(E,{tab:e,linkComponent:L},e.key??e.href)),$.hasMore&&h(`button`,{type:`button`,className:`wui-tabbar-item${$.moreActive?` active`:``}`,onClick:()=>Y(!0),children:[m(`span`,{className:`wui-tabbar-icon`,children:m(n,{name:`more`,size:24})}),m(`span`,{className:`wui-tabbar-label`,children:H})]})]}),m(`button`,{type:`button`,className:`app-scrim`,onClick:()=>Y(!1),"aria-label":`Close navigation`,tabIndex:J?0:-1})]})}function w(t,n){let r=e=>(e??[]).map(e=>Array.isArray(e.children)?{...e,children:r(e.children)}:{...e}).filter(e=>(e.children?.length??0)>0||!!e.href),a=t.map(e=>({...e,items:r(e.items)})).filter(e=>e.items.length>0),o=[],s=e=>{for(let t of e)o.push(t),t.children&&s(t.children)};for(let e of a)s(e.items);for(let t of o)e(`AppShell`,`match`,t.match,y);let c=null;if(n!=null&&!o.some(e=>e.active===!0)){let e=-1;for(let t of o){if(t.active!=null||t.children?.length&&!t.href)continue;let r=i(n,t.href,{exact:t.match===`exact`,also:t.matchAlso});r>e&&(e=r,c=t)}}for(let e of o)e.active=e.active??e===c;return a}function T(e){let t=[],n=e=>{for(let r of e)r.children?.length?n(r.children):t.push(r)};for(let t of e)n(t.items);let r=t.filter(e=>e.tab);if(r.length===0)return null;let i=r.length<t.length,a=i?_:v;if(r.length>a)throw Error(`<AppShell>: ${r.length} items carry tab: true, but the phone tab bar holds ${a} (${i?`4 plus More, because other items exist`:`5 when every item is a tab`}). Flag fewer items.`);return{tabs:r,hasMore:i,moreActive:t.some(e=>!e.tab&&e.active)}}function E({tab:e,linkComponent:t}){let r=`wui-tabbar-item${e.active?` active`:``}`,i=h(p,{children:[e.icon&&m(`span`,{className:`wui-tabbar-icon`,children:typeof e.icon==`string`?m(n,{name:e.icon,size:24}):e.icon}),m(`span`,{className:`wui-tabbar-label`,children:e.tabLabel??e.label}),e.badge!=null&&m(`span`,{className:`wui-tabbar-badge${e.badgeTone?` tone-${e.badgeTone}`:``}`,title:e.badgeTitle||void 0,children:e.badge})]}),a=e.active?`page`:void 0;return t?m(t,{className:r,to:e.href,"aria-current":a,children:i}):m(`a`,{className:r,href:e.href,"aria-current":a,children:i})}function D(e){for(let t of e){if(t.active)return t;let e=t.children?.length?D(t.children):void 0;if(e)return e}}function O({item:e,linkComponent:t,onNavigate:r,depth:i=0}){let a=i>0,o=i>1?` wui-nav-depth-${Math.min(i,6)}`:``,s=Array.isArray(e.children)&&e.children.length>0,l=s?D(e.children):void 0,u=!!l,d=l?l.key??l.href??l.label:null,[g,_]=f(u);c(()=>{d!=null&&_(!0)},[d]);let v=typeof e.label==`string`?e.label:void 0,y=!a&&e.icon&&m(`span`,{className:`app-nav-icon`,children:typeof e.icon==`string`?m(n,{name:e.icon,size:22}):e.icon}),b=e.badge!=null&&m(`span`,{className:`app-nav-badge${e.badgeTone?` tone-${e.badgeTone}`:``}`,title:e.badgeTitle||void 0,children:e.badge}),x=h(p,{children:[y,m(`span`,{className:`app-nav-text`,children:e.label}),b,e.trailingIcon&&m(`span`,{className:`app-nav-trailing`,children:typeof e.trailingIcon==`string`?m(n,{name:e.trailingIcon,size:16}):e.trailingIcon})]}),S=e.active?`page`:void 0;if(s){let s=m(`div`,{className:`app-nav-sub${g?` expanded`:``}`,inert:!g,"aria-hidden":!g||void 0,children:m(`div`,{className:`app-nav-sub-inner`,children:e.children.map(e=>m(O,{item:e,linkComponent:t,onNavigate:r,depth:i+1},e.key??e.href))})});if(e.href){let i=t?m(t,{className:`wui-nav-split-link`,to:e.href,"aria-current":S,onClick:r,children:x}):m(`a`,{className:`wui-nav-split-link`,href:e.href,"aria-current":S,onClick:r,children:x});return h(p,{children:[h(`div`,{className:`app-nav-item has-children wui-nav-split${a?` app-nav-subitem`:``}${u||e.active?` active`:``}${o}`,"data-label":v,children:[i,m(`button`,{type:`button`,className:`app-nav-caret wui-nav-split-toggle`,"aria-expanded":g,"aria-label":`Show or hide ${v??``} pages`,onClick:()=>_(e=>!e),children:m(n,{name:`chevron-right`,size:16})})]}),s]})}return h(p,{children:[h(`button`,{type:`button`,className:`app-nav-item${a?` app-nav-subitem`:``} has-children${u?` active`:``}${o}`,"aria-expanded":g,"data-label":v,onClick:()=>_(e=>!e),children:[y,m(`span`,{className:`app-nav-text`,children:e.label}),b,m(`span`,{className:`app-nav-caret`,children:m(n,{name:`chevron-right`,size:16})})]}),s]})}let C=`app-nav-item${a?` app-nav-subitem`:``}${e.active?` active`:``}${o}`;return t?m(t,{className:C,to:e.href,"aria-current":S,"data-label":v,onClick:r,children:x}):m(`a`,{className:C,href:e.href,"aria-current":S,"data-label":v,onClick:r,children:x})}function k(){let[e,t]=f(!1),n=d(null);return c(()=>{if(!e)return;let r=e=>{n.current?.contains(e.target)||t(!1)},i=e=>{e.key===`Escape`&&(t(!1),n.current?.querySelector(`button`)?.focus())};return document.addEventListener(`mousedown`,r),document.addEventListener(`keydown`,i),()=>{document.removeEventListener(`mousedown`,r),document.removeEventListener(`keydown`,i)}},[e]),{open:e,setOpen:t,ref:n}}function A({config:e,linkComponent:t}){let i=l(),{open:a,setOpen:o,ref:s}=k(),{name:c,role:u,photo:d,profileHref:f,profileLabel:g=`My profile`,onLogout:_,logoutAction:v,logoutLabel:y=`Sign out`,items:b=[]}=e;if(!c)throw Error(`<AppShell> userMenu.name is required; the trigger and the avatar are named from it.`);let x=()=>o(!1),S=(e,n,r,i)=>t?m(t,{className:`dropdown-item`,to:e,onClick:i,children:n},r):m(`a`,{className:`dropdown-item`,href:e,onClick:i,children:n},r),C=h(p,{children:[m(n,{name:`log-out`,size:18}),y]});return h(`div`,{className:`dropdown wui-usermenu`,ref:s,children:[h(`button`,{type:`button`,id:i,className:`wui-usermenu-trigger`,"aria-expanded":a,"aria-label":`Account menu for ${c}`,onClick:()=>o(e=>!e),children:[m(r,{name:c,src:d,tone:`auto`}),h(`span`,{className:`wui-usermenu-text`,children:[m(`span`,{className:`wui-usermenu-name`,children:c}),u&&m(`span`,{className:`wui-usermenu-role`,children:u})]}),m(n,{name:`chevron-down`,size:14,className:`wui-usermenu-caret`})]}),h(`div`,{className:`dropdown-menu dropdown-menu-end wui-usermenu-menu${a?` show`:``}`,"aria-labelledby":i,"data-bs-popper":a?`static`:void 0,children:[h(`div`,{className:`wui-usermenu-head`,children:[m(r,{name:c,src:d,size:`lg`,tone:`auto`}),h(`div`,{className:`wui-usermenu-who`,children:[m(`div`,{className:`wui-usermenu-name`,children:c}),u&&m(`div`,{className:`wui-usermenu-role`,children:u})]})]}),f&&S(f,h(p,{children:[m(n,{name:`user`,size:18}),g]}),void 0,x),b.map(e=>{if(e.divider)return m(`hr`,{className:`dropdown-divider`},e.key);let t=h(p,{children:[e.icon&&m(n,{name:e.icon,size:18}),e.label]}),r=()=>{e.onClick?.(),x()};return e.href?S(e.href,t,e.key,r):m(`button`,{type:`button`,className:`dropdown-item`,onClick:r,children:t},e.key)}),v?m(`form`,{method:`post`,action:v,className:`wui-usermenu-logout`,children:m(`button`,{type:`submit`,className:`dropdown-item danger`,children:C})}):_&&m(`button`,{type:`button`,className:`dropdown-item danger`,onClick:()=>{x(),_()},children:C})]})]})}function j({config:e}){let t=l(),{open:r,setOpen:i,ref:a}=k(),{unread:o=0,items:s,loading:u=!1,onOpen:g,onMarkAllRead:_,viewAllHref:v,label:y=`Notifications`,emptyText:b=`You are all caught up.`}=e,[x,C]=f(``),w=d(o);c(()=>{w.current!==o&&(w.current=o,C(o===0?`No unread notifications`:`${S(o)} unread notifications`))},[o]);let T=null;return s?.length?T=m(`div`,{className:`wui-bell-items`,children:s.map((e,t)=>{let r=`wui-bell-item${e.read?` wui-bell-item-read`:``}`,i=h(p,{children:[m(`span`,{className:`wui-bell-dot`,"aria-hidden":`true`}),e.icon&&m(`span`,{className:`wui-bell-icon`,children:m(n,{name:e.icon,size:18})}),h(`span`,{className:`wui-bell-body`,children:[!e.read&&m(`span`,{className:`visually-hidden`,children:`Unread: `}),m(`span`,{className:`wui-bell-item-title`,children:e.title}),e.time&&m(`span`,{className:`wui-bell-when`,children:e.time})]})]});return e.href?m(`a`,{className:r,href:e.href,"data-id":e.id,children:i},e.id??t):m(`div`,{className:r,"data-id":e.id,children:i},e.id??t)})}):u?T=m(`div`,{className:`wui-bell-state`,children:`Loading…`}):s&&(T=m(`div`,{className:`wui-bell-state`,children:b})),h(`div`,{className:`dropdown wui-bell`,ref:a,children:[h(`button`,{type:`button`,id:t,className:`topbar-icon-btn wui-bell-trigger`,"aria-expanded":r,"aria-label":o===0?y:`${y}, ${S(o)} unread`,onClick:()=>{let e=!r;i(e),e&&g?.()},children:[m(n,{name:`notification`,size:20}),m(`span`,{className:`wui-bell-count`,"aria-hidden":`true`,hidden:o===0,children:S(o)})]}),m(`span`,{className:`visually-hidden`,"aria-live":`polite`,children:x}),h(`div`,{className:`dropdown-menu dropdown-menu-end wui-bell-menu${r?` show`:``}`,"aria-labelledby":t,"data-bs-popper":r?`static`:void 0,children:[h(`div`,{className:`wui-bell-head`,children:[m(`span`,{className:`wui-bell-title`,children:y}),_&&m(`button`,{type:`button`,className:`wui-bell-markall`,onClick:_,children:`Mark all read`})]}),m(`div`,{className:`wui-bell-list`,"aria-busy":u||void 0,children:T}),v&&m(`a`,{className:`wui-bell-foot`,href:v,children:`View all`})]})]})}var M=e=>!!e&&(e.isContentEditable||/^(INPUT|TEXTAREA|SELECT)$/.test(e.tagName));function N({config:e}){let t=l(),{value:r=``,onChange:i,results:a=null,loading:o=!1,onSelect:s,onSubmit:p,placeholder:g=`Search`}=e,[_,v]=f(!1),[y,b]=f(!1),[x,S]=f({results:null,index:-1}),C=x.results===a?x.index:-1,w=e=>S({results:a,index:e}),T=d(null),E=d(null),D=d([]),O=u(()=>(a??[]).flatMap(e=>e.hits??[]),[a]),k=a!=null&&!y,A=O.length;c(()=>{let e=e=>{e.key!==`/`||e.ctrlKey||e.metaKey||e.altKey||M(e.target)||(e.preventDefault(),v(!0),E.current?.focus())},t=e=>{T.current?.contains(e.target)||(b(!0),v(!1))};return document.addEventListener(`keydown`,e),document.addEventListener(`pointerdown`,t),()=>{document.removeEventListener(`keydown`,e),document.removeEventListener(`pointerdown`,t)}},[]);let j=e=>{if(e.key===`ArrowDown`||e.key===`ArrowUp`){if(!k||A===0)return;e.preventDefault(),w((C+(e.key===`ArrowDown`?1:-1)+A)%A)}else e.key===`Enter`?k&&C>=0&&D.current[C]?(e.preventDefault(),D.current[C].click()):p&&r.trim()!==``&&(e.preventDefault(),p(r.trim())):e.key===`Escape`&&(k?(e.preventDefault(),b(!0)):_&&(e.preventDefault(),v(!1)))},N=-1;return D.current=[],h(`div`,{className:`wui-topsearch${_?` is-open`:``}${o?` is-loading`:``}`,ref:T,children:[m(`button`,{type:`button`,className:`topbar-icon-btn wui-topsearch-open`,"aria-label":g,"aria-expanded":_,"aria-controls":`${t}-panel`,onClick:()=>{let e=!_;v(e),e&&E.current?.focus()},children:m(n,{name:`search`,size:20})}),h(`div`,{className:`wui-topsearch-panel`,id:`${t}-panel`,children:[h(`div`,{className:`search-wrap`,children:[m(n,{name:`search`,size:18,className:`search-icon`}),m(`input`,{ref:E,type:`search`,className:`form-control input search-input`,id:`${t}-input`,placeholder:g,"aria-label":g,role:`combobox`,"aria-autocomplete":`list`,"aria-expanded":k,"aria-controls":`${t}-list`,"aria-activedescendant":k&&C>=0?`${t}-opt-${C}`:void 0,autoComplete:`off`,value:r,onChange:e=>{b(!1),i?.(e.target.value)},onKeyDown:j})]}),m(`div`,{className:`wui-topsearch-results`,id:`${t}-list`,role:`listbox`,"aria-label":`Search results`,hidden:!k,children:k&&h(`div`,{className:`wui-topsearch-groups`,role:`presentation`,children:[A===0&&h(`div`,{className:`wui-topsearch-empty`,role:`option`,"aria-disabled":`true`,"aria-selected":`false`,children:[`No results for “`,r,`”`]}),a.filter(e=>e.hits?.length).map((e,r)=>h(`div`,{className:`wui-topsearch-group`,role:`group`,"aria-label":e.label??``,children:[e.label&&m(`div`,{className:`wui-topsearch-group-label`,role:`presentation`,children:e.label}),e.hits.map(e=>{N+=1;let r=N;return h(`a`,{className:`wui-topsearch-hit${r===C?` is-active`:``}`,role:`option`,"aria-selected":r===C,id:`${t}-opt-${r}`,href:e.href,ref:e=>{D.current[r]=e},onClick:t=>s?.(e,t),children:[e.icon&&m(`span`,{className:`wui-topsearch-hit-icon`,children:m(n,{name:e.icon,size:18})}),h(`span`,{className:`wui-topsearch-hit-text`,children:[m(`span`,{className:`wui-topsearch-hit-title`,children:e.title}),e.subtitle&&m(`span`,{className:`wui-topsearch-hit-sub`,children:e.subtitle})]})]},`${e.href}-${r}`)})]},e.label??r))]})})]}),m(`span`,{className:`visually-hidden`,"aria-live":`polite`,children:k?A===0?`No results`:`${A} ${A===1?`result`:`results`}`:``})]})}export{C as default};
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* the loading state, which is the least surprising reading of "still in flight".
|
|
10
10
|
*
|
|
11
11
|
* @param {object} props
|
|
12
|
-
* @param {boolean} [props.loading=false] Show the skeleton (or
|
|
12
|
+
* @param {boolean} [props.loading=false] Show the skeleton (or the progress line) instead of content.
|
|
13
13
|
* @param {string|import('react').ReactNode} [props.error] An error to show in place of content.
|
|
14
14
|
* Falsy (including `null`/`undefined`) means no error.
|
|
15
15
|
* @param {boolean} [props.empty=false] Show the empty state instead of content — the fetch
|
|
@@ -18,7 +18,8 @@
|
|
|
18
18
|
* error-free and non-empty.
|
|
19
19
|
* @param {() => void} [props.onRetry] Shown as a Retry button on the error state when set.
|
|
20
20
|
* @param {import('react').ReactNode} [props.skeleton] Loading placeholder shaped like the
|
|
21
|
-
* content. Falls back to
|
|
21
|
+
* content. Falls back to the thin indeterminate progress line at the top of the block when
|
|
22
|
+
* omitted.
|
|
22
23
|
* @param {string} [props.className] Extra classes on the wrapper.
|
|
23
24
|
*/
|
|
24
25
|
export default function AppAsyncBlock({ loading, error, empty, children, onRetry, skeleton, className, ...rest }: {
|
|
@@ -1,23 +1,50 @@
|
|
|
1
1
|
export declare function buttonVariantClass(variant: any): string;
|
|
2
|
+
/**
|
|
3
|
+
* A button, or a button-styled link with href, in the kit's variants and sizes.
|
|
4
|
+
*
|
|
5
|
+
* @param {object} props
|
|
6
|
+
* @param {import('react').ReactNode} props.children The label.
|
|
7
|
+
* @param {"primary"|"secondary"|"outline"|"ghost"|"text"|"danger"|"success"|"secondary-danger"|"outline-danger"|"light"|"warning"|"neutral"|"outline-light"|"outline-secondary"|"subtle"} [props.variant="primary"] Emphasis level. subtle is deprecated (use neutral) and is removed in 0.79.0.
|
|
8
|
+
* @param {"sm"|"md"|"lg"} [props.size="md"] Control size.
|
|
9
|
+
* @param {"button"|"submit"|"reset"} [props.type="button"] The native button type; not emitted on a link-shaped button.
|
|
10
|
+
* @param {boolean} [props.loading=false] Shows a spinner and disables the button while work runs; hides both icons.
|
|
11
|
+
* @param {boolean} [props.disabled=false] Disables the button.
|
|
12
|
+
* @param {boolean} [props.block=false] Full width of its container.
|
|
13
|
+
* @param {string|import('react').ReactNode} [props.leftIcon=null] An icon name, or a node drawn as given.
|
|
14
|
+
* @param {string|import('react').ReactNode} [props.rightIcon=null] An icon name, or a node drawn as given.
|
|
15
|
+
* @param {string} [props.href] Render as a button-styled link (an <a href>) instead of a <button>; matches Razor <app-button href>.
|
|
16
|
+
* @param {boolean} [props.static=false] Render as a NON-interactive element (a <span>) that keeps the
|
|
17
|
+
* button's chrome but does not click, focus, or hover — a resolved/confirmation label (e.g. "Verified")
|
|
18
|
+
* sized to sit where its action button was. Ignores loading/disabled/type/href.
|
|
19
|
+
* @param {string} [props.tooltip] A collision-aware hover/focus tooltip (via AppTooltip / Popper) — flips to stay on-screen. For a labelled button use it sparingly (the label already says what it does); most useful on a terse or icon-led action.
|
|
20
|
+
* @param {"auto"|"top"|"bottom"|"start"|"end"} [props.tooltipPlacement="auto"] Preferred tooltip side; `auto` picks the side with the most room.
|
|
21
|
+
* @param {string} [props.shortcut] The key that runs this action ("A", "E", "/"), drawn as a key chip: in the tooltip when the button has one, otherwise after the label. Sets aria-keyshortcuts; the page binds the key itself (useListShortcuts). Ignored on a static button.
|
|
22
|
+
* @param {"sheen"|"fill"|"expand"|"glow"|"roll"|"none"} [props.animation] Hover animation; omit for the default sheen. `roll` rolls the label up and slides a trailing `rightIcon` through a round well.
|
|
23
|
+
* @param {boolean} [props.pinRightIcon=false] Pin the rightIcon (or the roll animation's icon well) to the button's end edge and centre the label; for a wide or full-width button.
|
|
24
|
+
* @param {"rounded"|"pill"|"sharp"} [props.shape="rounded"] Corner shape: the default rounded squircle, a fully rounded pill, or sharp square corners.
|
|
25
|
+
* @param {"linear"|"outline"|"bold"|"bulk"|"broken"|"twotone"} [props.iconVariant="linear"] The iconsax style of a named leftIcon / rightIcon; a node icon is drawn as given.
|
|
26
|
+
* @param {string} [props.className=""] Extra classes on the button.
|
|
27
|
+
* @param {(event: import('react').MouseEvent<HTMLElement>) => void} [props.onClick] Runs on a click; ignored on a static button.
|
|
28
|
+
*/
|
|
2
29
|
export default function AppButton({ children, variant, size, type, loading, disabled, block, leftIcon, rightIcon, href, static: isStatic, tooltip, tooltipPlacement, shortcut, animation, pinRightIcon, shape, iconVariant, className, ...rest }: {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
className?: string;
|
|
8
|
-
disabled?: boolean;
|
|
9
|
-
href: any;
|
|
10
|
-
iconVariant: any;
|
|
11
|
-
leftIcon?: any;
|
|
30
|
+
children: import('react').ReactNode;
|
|
31
|
+
variant?: "primary" | "secondary" | "outline" | "ghost" | "text" | "danger" | "success" | "secondary-danger" | "outline-danger" | "light" | "warning" | "neutral" | "outline-light" | "outline-secondary" | "subtle";
|
|
32
|
+
size?: "sm" | "md" | "lg";
|
|
33
|
+
type?: "button" | "submit" | "reset";
|
|
12
34
|
loading?: boolean;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
35
|
+
disabled?: boolean;
|
|
36
|
+
block?: boolean;
|
|
37
|
+
leftIcon?: string | import('react').ReactNode;
|
|
38
|
+
rightIcon?: string | import('react').ReactNode;
|
|
39
|
+
href?: string;
|
|
18
40
|
static?: boolean;
|
|
19
|
-
tooltip
|
|
20
|
-
tooltipPlacement
|
|
21
|
-
|
|
22
|
-
|
|
41
|
+
tooltip?: string;
|
|
42
|
+
tooltipPlacement?: "auto" | "top" | "bottom" | "start" | "end";
|
|
43
|
+
shortcut?: string;
|
|
44
|
+
animation?: "sheen" | "fill" | "expand" | "glow" | "roll" | "none";
|
|
45
|
+
pinRightIcon?: boolean;
|
|
46
|
+
shape?: "rounded" | "pill" | "sharp";
|
|
47
|
+
iconVariant?: "linear" | "outline" | "bold" | "bulk" | "broken" | "twotone";
|
|
48
|
+
className?: string;
|
|
49
|
+
onClick?: (event: import('react').MouseEvent<HTMLElement>) => void;
|
|
23
50
|
}): any;
|
|
@@ -188,11 +188,13 @@ export type SearchShape = {
|
|
|
188
188
|
* @param {import('react').ReactNode} [props.topbarStart] Leading topbar slot — page title, crumbs.
|
|
189
189
|
* @param {import('react').ReactNode} [props.topbarEnd] Trailing topbar slot — page actions; the bell and account menu follow it.
|
|
190
190
|
* @param {import('react').ReactNode} [props.footer]
|
|
191
|
+
* @param {import('react').ReactNode} [props.launcher] A floating button pinned to the bottom end corner over the page, such as an assistant launcher; on a phone it sits above the tab bar.
|
|
191
192
|
* @param {import('react').ReactNode} props.children The routed page.
|
|
192
193
|
* @param {boolean} [props.collapsed] Controlled rail state. Omit to let the shell own it.
|
|
193
194
|
* @param {(collapsed: boolean) => void} [props.onCollapsedChange]
|
|
194
195
|
* @param {boolean} [props.noSidebar=false] Full-width, no side nav — a focused wizard. No tab bar either.
|
|
195
196
|
* @param {'comfortable'|'compact'} [props.density='comfortable'] Compact sets the content's top padding to 12px.
|
|
197
|
+
* @param {'default'|'primary'} [props.topbarTone='default'] The top bar's colour. primary paints the bar in the primary colour, with its text, menu button, bell and account menu in the ink that reads on it; the search field keeps its own surface.
|
|
196
198
|
* @param {string} [props.navLabel='Main navigation']
|
|
197
199
|
* @param {string} [props.currentPath] The current location; items without `active` are matched against it.
|
|
198
200
|
* @param {boolean} [props.rememberCollapsed=false] Remember the uncontrolled rail state in a cookie.
|
|
@@ -204,7 +206,7 @@ export type SearchShape = {
|
|
|
204
206
|
* @param {SearchShape} [props.search] The topbar search.
|
|
205
207
|
* @param {string} [props.className]
|
|
206
208
|
*/
|
|
207
|
-
export default function AppShell({ groups, brand, sidebarStart, sidebarStartCompact, sidebarFooter, topbarStart, topbarEnd, footer, children, collapsed, onCollapsedChange, noSidebar, density, navLabel, linkComponent: Link, currentPath, rememberCollapsed, collapsedCookie, tabBarLabel, moreLabel, userMenu, notifications, search, className, ...rest }: {
|
|
209
|
+
export default function AppShell({ groups, brand, sidebarStart, sidebarStartCompact, sidebarFooter, topbarStart, topbarEnd, footer, launcher, children, collapsed, onCollapsedChange, noSidebar, density, topbarTone, navLabel, linkComponent: Link, currentPath, rememberCollapsed, collapsedCookie, tabBarLabel, moreLabel, userMenu, notifications, search, className, ...rest }: {
|
|
208
210
|
groups: {
|
|
209
211
|
label?: string;
|
|
210
212
|
items: NavItemShape[];
|
|
@@ -217,11 +219,13 @@ export default function AppShell({ groups, brand, sidebarStart, sidebarStartComp
|
|
|
217
219
|
topbarStart?: import('react').ReactNode;
|
|
218
220
|
topbarEnd?: import('react').ReactNode;
|
|
219
221
|
footer?: import('react').ReactNode;
|
|
222
|
+
launcher?: import('react').ReactNode;
|
|
220
223
|
children: import('react').ReactNode;
|
|
221
224
|
collapsed?: boolean;
|
|
222
225
|
onCollapsedChange?: (collapsed: boolean) => void;
|
|
223
226
|
noSidebar?: boolean;
|
|
224
227
|
density?: 'comfortable' | 'compact';
|
|
228
|
+
topbarTone?: 'default' | 'primary';
|
|
225
229
|
navLabel?: string;
|
|
226
230
|
currentPath?: string;
|
|
227
231
|
rememberCollapsed?: boolean;
|
package/dist/ui-react.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"./components/AppTooltip.js";import t,{iconNames as n,registerIcons as r}from"./components/AppIcon.js";import i from"./components/AppAccordion.js";import a from"./components/AppActionIcon.js";import o from"./components/AppAlert.js";import s from"./components/AppButton.js";import c from"./components/AppEmptyState.js";import l from"./components/AppSpinner.js";import u from"./components/AppAsyncBlock.js";import d from"./components/AppPopover.js";import f from"./components/AppInfoTip.js";import p from"./components/AppRequiredMark.js";import m from"./components/AppAutocomplete.js";import h from"./components/AppAvatar.js";import g from"./components/AppAvatarGroup.js";import _ from"./components/AppModal.js";import v from"./components/AppAvatarPicker.js";import y from"./components/AppBadge.js";import b from"./components/AppBanner.js";import x from"./components/AppBreadcrumbs.js";import S from"./components/AppButtonGroup.js";import C from"./components/AppCalendar.js";import w from"./components/AppCard.js";import T from"./components/AppCarousel.js";import E from"./components/AppChart.js";import D from"./components/AppDropdown.js";import O from"./components/AppSegmented.js";import k from"./components/AppChartCard.js";import A from"./components/AppCheckbox.js";import j from"./components/AppChip.js";import M from"./components/AppChipGroup.js";import N from"./components/AppChoiceCard.js";import P from"./components/AppChoiceChip.js";import F from"./components/AppCodeBlock.js";import I from"./components/AppColorField.js";import L from"./components/AppColumnMenu.js";import R from"./components/AppCommandPalette.js";import z from"./components/AppCommentThread.js";import B from"./components/AppCompareTable.js";import V from"./components/AppInput.js";import{MODAL_ICONS as H}from"./components/ModalIcons.js";import U from"./components/AppConfirmDialog.js";import W from"./components/AppConsentBanner.js";import G from"./components/AppContextMenu.js";import K from"./components/AppCopyButton.js";import q from"./components/AppCountrySelect.js";import J from"./components/AppDashboardCell.js";import Y from"./components/AppDashboardGrid.js";import X,{AppSkeletonRows as Z}from"./components/AppSkeleton.js";import Q from"./components/AppSelectMini.js";import $ from"./components/AppTablePagination.js";import ee from"./components/AppDataTable.js";import te from"./components/AppDatePicker.js";import ne from"./components/AppDateRangePicker.js";import re from"./components/AppDescriptions.js";import ie from"./components/AppDrawer.js";import ae from"./components/AppDropZone.js";import oe from"./components/AppDueDate.js";import se from"./components/AppErrorSummary.js";import ce from"./components/AppProgress.js";import le from"./components/AppFileAttachment.js";import ue from"./components/AppFilePicker.js";import de from"./components/AppFileViewer.js";import{buildListQuery as fe,parseListQuery as pe}from"./lib/listQuery.js";import me from"./components/AppMultiSelect.js";import he from"./components/AppSearch.js";import ge from"./components/AppSelect.js";import _e from"./components/AppSwitch.js";import ve from"./components/AppFilterBar.js";import ye from"./components/AppFloatingDock.js";import be from"./components/AppFormActions.js";import xe from"./components/AppFormRow.js";import Se from"./components/AppFormSection.js";import Ce from"./components/AppHoverCard.js";import we from"./components/AppInfoList.js";import Te from"./components/AppInlineEdit.js";import Ee from"./components/AppInputGroup.js";import{dismissAll as De,errorToast as Oe,toast as ke}from"./components/toast.js";import Ae from"./components/AppKanban.js";import je from"./components/AppKbd.js";import Me from"./components/AppSparkline.js";import Ne from"./components/AppKpiTile.js";import Pe from"./components/AppLightbox.js";import Fe from"./components/AppLink.js";import Ie from"./components/AppLogoPicker.js";import Le from"./components/AppMentionInput.js";import Re from"./components/AppMenubar.js";import ze from"./components/AppMeter.js";import Be from"./components/AppMetricStrip.js";import Ve from"./components/AppNavigationMenu.js";import He from"./components/AppNotificationCenter.js";import Ue from"./components/AppNumberInput.js";import We from"./components/AppOnboardingChecklist.js";import Ge from"./components/AppOtpInput.js";import Ke from"./components/AppPageHeader.js";import qe from"./components/AppPagination.js";import Je from"./components/AppPhoneNumberInput.js";import Ye from"./components/AppPricingCard.js";import Xe from"./components/AppQrCode.js";import Ze from"./components/AppRadio.js";import Qe from"./components/AppRadioGroup.js";import $e from"./components/AppRating.js";import et from"./components/AppRecordPager.js";import tt from"./components/AppRelativeTime.js";import nt from"./components/AppRepeater.js";import rt from"./components/AppResizable.js";import it from"./components/AppResizableHandle.js";import at from"./components/AppResizablePanel.js";import ot from"./components/AppResourceCard.js";import st from"./components/AppResult.js";import ct from"./components/AppRichText.js";import lt from"./components/AppRollingNumber.js";import ut from"./components/AppRouteError.js";import dt from"./components/AppScoreScale.js";import ft from"./components/AppScrollbar.js";import pt from"./components/AppSectionCallToAction.js";import mt from"./components/AppSectionFaq.js";import ht from"./components/AppSectionFeatures.js";import gt from"./components/AppSectionHero.js";import _t from"./components/AppSectionLogos.js";import vt from"./components/AppSectionPricing.js";import yt from"./components/AppSectionTestimonials.js";import bt from"./components/AppShell.js";import xt from"./components/AppShortcutLegend.js";import St from"./components/AppShowMore.js";import Ct from"./components/AppSidebarMenu.js";import wt from"./components/AppSlider.js";import Tt from"./components/AppSortableList.js";import Et from"./components/AppSplash.js";import Dt from"./components/AppSplitButton.js";import Ot from"./components/AppSplitView.js";import kt from"./components/AppStatusBadge.js";import At from"./components/AppStepper.js";import jt from"./components/AppTableEmptyState.js";import Mt from"./components/AppTableToolbar.js";import Nt from"./components/AppTabs.js";import Pt from"./components/AppTagInput.js";import Ft from"./components/AppTextarea.js";import It from"./components/AppThemeToggle.js";import Lt from"./components/AppTimeline.js";import Rt from"./components/AppTimePicker.js";import zt from"./components/AppToast.js";import Bt from"./components/AppToolbar.js";import Vt from"./components/AppTour.js";import Ht from"./components/AppTreeView.js";import Ut from"./components/AppTruncate.js";import Wt from"./components/AppUpdateBar.js";import Gt from"./components/AppWhatsNew.js";import Kt from"./components/AppWizard.js";import qt from"./components/AppWorkspaceSwitcher.js";import{useCommandPaletteShortcut as Jt}from"./lib/useCommandPaletteShortcut.js";import{useFloatingStack as Yt}from"./lib/useFloatingStack.js";import{useListQuery as Xt}from"./lib/useListQuery.js";import{useListShortcuts as Zt}from"./lib/useListShortcuts.js";import{usePagination as Qt}from"./lib/usePagination.js";import{useTableView as $t}from"./lib/useTableView.js";import{createLocalSeenStore as en}from"@webority/ui-elements/elements/tour";import{postedMasked as tn,themeBootScript as nn}from"@webority/ui-elements/helpers";export{i as AppAccordion,a as AppActionIcon,o as AppAlert,u as AppAsyncBlock,m as AppAutocomplete,h as AppAvatar,g as AppAvatarGroup,v as AppAvatarPicker,y as AppBadge,b as AppBanner,x as AppBreadcrumbs,s as AppButton,S as AppButtonGroup,C as AppCalendar,w as AppCard,T as AppCarousel,E as AppChart,k as AppChartCard,A as AppCheckbox,j as AppChip,M as AppChipGroup,N as AppChoiceCard,P as AppChoiceChip,F as AppCodeBlock,I as AppColorField,L as AppColumnMenu,R as AppCommandPalette,z as AppCommentThread,B as AppCompareTable,U as AppConfirmDialog,W as AppConsentBanner,G as AppContextMenu,K as AppCopyButton,q as AppCountrySelect,J as AppDashboardCell,Y as AppDashboardGrid,ee as AppDataTable,te as AppDatePicker,ne as AppDateRangePicker,re as AppDescriptions,ie as AppDrawer,ae as AppDropZone,D as AppDropdown,oe as AppDueDate,c as AppEmptyState,se as AppErrorSummary,le as AppFileAttachment,ue as AppFilePicker,de as AppFileViewer,ve as AppFilterBar,ye as AppFloatingDock,be as AppFormActions,xe as AppFormRow,Se as AppFormSection,Ce as AppHoverCard,t as AppIcon,we as AppInfoList,f as AppInfoTip,Te as AppInlineEdit,V as AppInput,Ee as AppInputGroup,Ae as AppKanban,je as AppKbd,Ne as AppKpiTile,Pe as AppLightbox,Fe as AppLink,Ie as AppLogoPicker,Le as AppMentionInput,Re as AppMenubar,ze as AppMeter,Be as AppMetricStrip,_ as AppModal,me as AppMultiSelect,Ve as AppNavigationMenu,He as AppNotificationCenter,Ue as AppNumberInput,We as AppOnboardingChecklist,Ge as AppOtpInput,Ke as AppPageHeader,qe as AppPagination,Je as AppPhoneNumberInput,d as AppPopover,Ye as AppPricingCard,ce as AppProgress,Xe as AppQrCode,Ze as AppRadio,Qe as AppRadioGroup,$e as AppRating,et as AppRecordPager,tt as AppRelativeTime,nt as AppRepeater,p as AppRequiredMark,rt as AppResizable,it as AppResizableHandle,at as AppResizablePanel,ot as AppResourceCard,st as AppResult,ct as AppRichText,lt as AppRollingNumber,ut as AppRouteError,dt as AppScoreScale,ft as AppScrollbar,he as AppSearch,pt as AppSectionCallToAction,mt as AppSectionFaq,ht as AppSectionFeatures,gt as AppSectionHero,_t as AppSectionLogos,vt as AppSectionPricing,yt as AppSectionTestimonials,O as AppSegmented,ge as AppSelect,Q as AppSelectMini,bt as AppShell,xt as AppShortcutLegend,St as AppShowMore,Ct as AppSidebarMenu,X as AppSkeleton,Z as AppSkeletonRows,wt as AppSlider,Tt as AppSortableList,Me as AppSparkline,l as AppSpinner,Et as AppSplash,Dt as AppSplitButton,Ot as AppSplitView,kt as AppStatusBadge,At as AppStepper,_e as AppSwitch,jt as AppTableEmptyState,$ as AppTablePagination,Mt as AppTableToolbar,Nt as AppTabs,Pt as AppTagInput,Ft as AppTextarea,It as AppThemeToggle,Rt as AppTimePicker,Lt as AppTimeline,zt as AppToast,Bt as AppToolbar,e as AppTooltip,Vt as AppTour,Ht as AppTreeView,Ut as AppTruncate,Wt as AppUpdateBar,Gt as AppWhatsNew,Kt as AppWizard,qt as AppWorkspaceSwitcher,H as MODAL_ICONS,fe as buildListQuery,en as createLocalSeenStore,De as dismissAll,Oe as errorToast,n as iconNames,pe as parseListQuery,tn as postedMasked,r as registerIcons,nn as themeBootScript,ke as toast,Jt as useCommandPaletteShortcut,Yt as useFloatingStack,Xt as useListQuery,Zt as useListShortcuts,Qt as usePagination,$t as useTableView};
|
|
1
|
+
import e from"./components/AppTooltip.js";import t,{iconNames as n,registerIcons as r}from"./components/AppIcon.js";import i from"./components/AppAccordion.js";import a from"./components/AppActionIcon.js";import o from"./components/AppAlert.js";import s from"./components/AppButton.js";import c from"./components/AppEmptyState.js";import l from"./components/AppProgress.js";import u from"./components/AppAsyncBlock.js";import d from"./components/AppPopover.js";import f from"./components/AppInfoTip.js";import p from"./components/AppRequiredMark.js";import m from"./components/AppAutocomplete.js";import h from"./components/AppAvatar.js";import g from"./components/AppAvatarGroup.js";import _ from"./components/AppModal.js";import v from"./components/AppAvatarPicker.js";import y from"./components/AppBadge.js";import b from"./components/AppBanner.js";import x from"./components/AppBreadcrumbs.js";import S from"./components/AppButtonGroup.js";import C from"./components/AppCalendar.js";import w from"./components/AppCard.js";import T from"./components/AppCarousel.js";import E from"./components/AppChart.js";import D from"./components/AppDropdown.js";import O from"./components/AppSegmented.js";import k from"./components/AppChartCard.js";import A from"./components/AppCheckbox.js";import j from"./components/AppChip.js";import M from"./components/AppChipGroup.js";import N from"./components/AppChoiceCard.js";import P from"./components/AppChoiceChip.js";import F from"./components/AppCodeBlock.js";import I from"./components/AppColorField.js";import L from"./components/AppColumnMenu.js";import R from"./components/AppSpinner.js";import z from"./components/AppCommandPalette.js";import B from"./components/AppCommentThread.js";import V from"./components/AppCompareTable.js";import H from"./components/AppInput.js";import{MODAL_ICONS as U}from"./components/ModalIcons.js";import W from"./components/AppConfirmDialog.js";import G from"./components/AppConsentBanner.js";import K from"./components/AppContextMenu.js";import q from"./components/AppCopyButton.js";import J from"./components/AppCountrySelect.js";import Y from"./components/AppDashboardCell.js";import X from"./components/AppDashboardGrid.js";import Z,{AppSkeletonRows as Q}from"./components/AppSkeleton.js";import $ from"./components/AppSelectMini.js";import ee from"./components/AppTablePagination.js";import te from"./components/AppDataTable.js";import ne from"./components/AppDatePicker.js";import re from"./components/AppDateRangePicker.js";import ie from"./components/AppDescriptions.js";import ae from"./components/AppDrawer.js";import oe from"./components/AppDropZone.js";import se from"./components/AppDueDate.js";import ce from"./components/AppErrorSummary.js";import le from"./components/AppFileAttachment.js";import ue from"./components/AppFilePicker.js";import de from"./components/AppFileViewer.js";import{buildListQuery as fe,parseListQuery as pe}from"./lib/listQuery.js";import me from"./components/AppMultiSelect.js";import he from"./components/AppSearch.js";import ge from"./components/AppSelect.js";import _e from"./components/AppSwitch.js";import ve from"./components/AppFilterBar.js";import ye from"./components/AppFloatingDock.js";import be from"./components/AppFormActions.js";import xe from"./components/AppFormRow.js";import Se from"./components/AppFormSection.js";import Ce from"./components/AppHoverCard.js";import we from"./components/AppInfoList.js";import Te from"./components/AppInlineEdit.js";import Ee from"./components/AppInputGroup.js";import{dismissAll as De,errorToast as Oe,toast as ke}from"./components/toast.js";import Ae from"./components/AppKanban.js";import je from"./components/AppKbd.js";import Me from"./components/AppSparkline.js";import Ne from"./components/AppKpiTile.js";import Pe from"./components/AppLightbox.js";import Fe from"./components/AppLink.js";import Ie from"./components/AppLogoPicker.js";import Le from"./components/AppMentionInput.js";import Re from"./components/AppMenubar.js";import ze from"./components/AppMeter.js";import Be from"./components/AppMetricStrip.js";import Ve from"./components/AppNavigationMenu.js";import He from"./components/AppNotificationCenter.js";import Ue from"./components/AppNumberInput.js";import We from"./components/AppOnboardingChecklist.js";import Ge from"./components/AppOtpInput.js";import Ke from"./components/AppPageHeader.js";import qe from"./components/AppPagination.js";import Je from"./components/AppPhoneNumberInput.js";import Ye from"./components/AppPricingCard.js";import Xe from"./components/AppQrCode.js";import Ze from"./components/AppRadio.js";import Qe from"./components/AppRadioGroup.js";import $e from"./components/AppRating.js";import et from"./components/AppRecordPager.js";import tt from"./components/AppRelativeTime.js";import nt from"./components/AppRepeater.js";import rt from"./components/AppResizable.js";import it from"./components/AppResizableHandle.js";import at from"./components/AppResizablePanel.js";import ot from"./components/AppResourceCard.js";import st from"./components/AppResult.js";import ct from"./components/AppRichText.js";import lt from"./components/AppRollingNumber.js";import ut from"./components/AppRouteError.js";import dt from"./components/AppScoreScale.js";import ft from"./components/AppScrollbar.js";import pt from"./components/AppSectionCallToAction.js";import mt from"./components/AppSectionFaq.js";import ht from"./components/AppSectionFeatures.js";import gt from"./components/AppSectionHero.js";import _t from"./components/AppSectionLogos.js";import vt from"./components/AppSectionPricing.js";import yt from"./components/AppSectionTestimonials.js";import bt from"./components/AppShell.js";import xt from"./components/AppShortcutLegend.js";import St from"./components/AppShowMore.js";import Ct from"./components/AppSidebarMenu.js";import wt from"./components/AppSlider.js";import Tt from"./components/AppSortableList.js";import Et from"./components/AppSplash.js";import Dt from"./components/AppSplitButton.js";import Ot from"./components/AppSplitView.js";import kt from"./components/AppStatusBadge.js";import At from"./components/AppStepper.js";import jt from"./components/AppTableEmptyState.js";import Mt from"./components/AppTableToolbar.js";import Nt from"./components/AppTabs.js";import Pt from"./components/AppTagInput.js";import Ft from"./components/AppTextarea.js";import It from"./components/AppThemeToggle.js";import Lt from"./components/AppTimeline.js";import Rt from"./components/AppTimePicker.js";import zt from"./components/AppToast.js";import Bt from"./components/AppToolbar.js";import Vt from"./components/AppTour.js";import Ht from"./components/AppTreeView.js";import Ut from"./components/AppTruncate.js";import Wt from"./components/AppUpdateBar.js";import Gt from"./components/AppWhatsNew.js";import Kt from"./components/AppWizard.js";import qt from"./components/AppWorkspaceSwitcher.js";import{useCommandPaletteShortcut as Jt}from"./lib/useCommandPaletteShortcut.js";import{useFloatingStack as Yt}from"./lib/useFloatingStack.js";import{useListQuery as Xt}from"./lib/useListQuery.js";import{useListShortcuts as Zt}from"./lib/useListShortcuts.js";import{usePagination as Qt}from"./lib/usePagination.js";import{useTableView as $t}from"./lib/useTableView.js";import{createLocalSeenStore as en}from"@webority/ui-elements/elements/tour";import{postedMasked as tn,themeBootScript as nn}from"@webority/ui-elements/helpers";export{i as AppAccordion,a as AppActionIcon,o as AppAlert,u as AppAsyncBlock,m as AppAutocomplete,h as AppAvatar,g as AppAvatarGroup,v as AppAvatarPicker,y as AppBadge,b as AppBanner,x as AppBreadcrumbs,s as AppButton,S as AppButtonGroup,C as AppCalendar,w as AppCard,T as AppCarousel,E as AppChart,k as AppChartCard,A as AppCheckbox,j as AppChip,M as AppChipGroup,N as AppChoiceCard,P as AppChoiceChip,F as AppCodeBlock,I as AppColorField,L as AppColumnMenu,z as AppCommandPalette,B as AppCommentThread,V as AppCompareTable,W as AppConfirmDialog,G as AppConsentBanner,K as AppContextMenu,q as AppCopyButton,J as AppCountrySelect,Y as AppDashboardCell,X as AppDashboardGrid,te as AppDataTable,ne as AppDatePicker,re as AppDateRangePicker,ie as AppDescriptions,ae as AppDrawer,oe as AppDropZone,D as AppDropdown,se as AppDueDate,c as AppEmptyState,ce as AppErrorSummary,le as AppFileAttachment,ue as AppFilePicker,de as AppFileViewer,ve as AppFilterBar,ye as AppFloatingDock,be as AppFormActions,xe as AppFormRow,Se as AppFormSection,Ce as AppHoverCard,t as AppIcon,we as AppInfoList,f as AppInfoTip,Te as AppInlineEdit,H as AppInput,Ee as AppInputGroup,Ae as AppKanban,je as AppKbd,Ne as AppKpiTile,Pe as AppLightbox,Fe as AppLink,Ie as AppLogoPicker,Le as AppMentionInput,Re as AppMenubar,ze as AppMeter,Be as AppMetricStrip,_ as AppModal,me as AppMultiSelect,Ve as AppNavigationMenu,He as AppNotificationCenter,Ue as AppNumberInput,We as AppOnboardingChecklist,Ge as AppOtpInput,Ke as AppPageHeader,qe as AppPagination,Je as AppPhoneNumberInput,d as AppPopover,Ye as AppPricingCard,l as AppProgress,Xe as AppQrCode,Ze as AppRadio,Qe as AppRadioGroup,$e as AppRating,et as AppRecordPager,tt as AppRelativeTime,nt as AppRepeater,p as AppRequiredMark,rt as AppResizable,it as AppResizableHandle,at as AppResizablePanel,ot as AppResourceCard,st as AppResult,ct as AppRichText,lt as AppRollingNumber,ut as AppRouteError,dt as AppScoreScale,ft as AppScrollbar,he as AppSearch,pt as AppSectionCallToAction,mt as AppSectionFaq,ht as AppSectionFeatures,gt as AppSectionHero,_t as AppSectionLogos,vt as AppSectionPricing,yt as AppSectionTestimonials,O as AppSegmented,ge as AppSelect,$ as AppSelectMini,bt as AppShell,xt as AppShortcutLegend,St as AppShowMore,Ct as AppSidebarMenu,Z as AppSkeleton,Q as AppSkeletonRows,wt as AppSlider,Tt as AppSortableList,Me as AppSparkline,R as AppSpinner,Et as AppSplash,Dt as AppSplitButton,Ot as AppSplitView,kt as AppStatusBadge,At as AppStepper,_e as AppSwitch,jt as AppTableEmptyState,ee as AppTablePagination,Mt as AppTableToolbar,Nt as AppTabs,Pt as AppTagInput,Ft as AppTextarea,It as AppThemeToggle,Rt as AppTimePicker,Lt as AppTimeline,zt as AppToast,Bt as AppToolbar,e as AppTooltip,Vt as AppTour,Ht as AppTreeView,Ut as AppTruncate,Wt as AppUpdateBar,Gt as AppWhatsNew,Kt as AppWizard,qt as AppWorkspaceSwitcher,U as MODAL_ICONS,fe as buildListQuery,en as createLocalSeenStore,De as dismissAll,Oe as errorToast,n as iconNames,pe as parseListQuery,tn as postedMasked,r as registerIcons,nn as themeBootScript,ke as toast,Jt as useCommandPaletteShortcut,Yt as useFloatingStack,Xt as useListQuery,Zt as useListShortcuts,Qt as usePagination,$t as useTableView};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webority/ui-react",
|
|
3
|
-
"version": "0.83.
|
|
3
|
+
"version": "0.83.4",
|
|
4
4
|
"description": "Webority shared React component library — App* primitives on react-bootstrap + the @webority/theme design system.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"type": "module",
|
|
@@ -27,8 +27,8 @@
|
|
|
27
27
|
},
|
|
28
28
|
"sideEffects": false,
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@webority/theme": "0.83.
|
|
31
|
-
"@webority/ui-elements": "0.83.
|
|
30
|
+
"@webority/theme": "0.83.4",
|
|
31
|
+
"@webority/ui-elements": "0.83.4"
|
|
32
32
|
},
|
|
33
33
|
"peerDependencies": {
|
|
34
34
|
"@webority/analytics": "^0.25.0",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"@types/react": "^19.2.17",
|
|
46
46
|
"@vitejs/plugin-react": "^6.0.1",
|
|
47
47
|
"@vitest/coverage-v8": "5.0.1",
|
|
48
|
-
"@webority/analytics": "0.25.
|
|
48
|
+
"@webority/analytics": "0.25.1",
|
|
49
49
|
"bootstrap": "5.3.3",
|
|
50
50
|
"jsdom": "30.1.1",
|
|
51
51
|
"react": "^19.2.6",
|