@webority/ui-react 0.93.0 → 0.94.1

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.
@@ -2,7 +2,7 @@
2
2
  "kind": "WeborityWeb",
3
3
  "library": {
4
4
  "name": "@webority/ui-react",
5
- "version": "0.93.0"
5
+ "version": "0.94.1"
6
6
  },
7
7
  "rendererProtocolVersion": 7,
8
8
  "platform": "Web",
@@ -5363,7 +5363,7 @@
5363
5363
  {
5364
5364
  "name": "AppConfirmDialog",
5365
5365
  "marker": "AppConfirmDialog",
5366
- "acceptsChildren": false,
5366
+ "acceptsChildren": true,
5367
5367
  "props": [
5368
5368
  {
5369
5369
  "name": "cancelLabel",
@@ -5559,7 +5559,8 @@
5559
5559
  "The title is an h3 that takes focus when the dialog opens.",
5560
5560
  "A custom image is hidden from assistive technology with an empty alt, so the title and message carry the meaning.",
5561
5561
  "The confirm-phrase field is named \"Type <phrase> to confirm\", and Confirm stays disabled until the phrase matches.",
5562
- "While loading, Cancel is disabled and the backdrop and Escape no longer close the dialog."
5562
+ "While loading, Cancel is disabled and the backdrop and Escape no longer close the dialog.",
5563
+ "Children draw left-aligned between the message and the confirm-phrase field, so a field placed there keeps its own label."
5563
5564
  ]
5564
5565
  }
5565
5566
  },
@@ -12699,7 +12700,8 @@
12699
12700
  "name": "value",
12700
12701
  "type": "number",
12701
12702
  "required": false,
12702
- "description": "The current number. Leave it unset for an empty field."
12703
+ "nullable": true,
12704
+ "description": "The current number; null or unset for an empty field."
12703
12705
  }
12704
12706
  ],
12705
12707
  "itemsTakeAction": [],
@@ -16590,6 +16592,20 @@
16590
16592
  "required": false,
16591
16593
  "description": "A short label above the heading: any node, including a styled container drawn as a pill."
16592
16594
  },
16595
+ {
16596
+ "name": "eyebrowTone",
16597
+ "type": "enum",
16598
+ "enum": [
16599
+ "danger",
16600
+ "info",
16601
+ "neutral",
16602
+ "primary",
16603
+ "success",
16604
+ "warning"
16605
+ ],
16606
+ "required": false,
16607
+ "description": "Draws the eyebrow as a pill in this tone; unset keeps plain text."
16608
+ },
16593
16609
  {
16594
16610
  "name": "media",
16595
16611
  "type": "node",
@@ -17260,11 +17276,12 @@
17260
17276
  "name": "floatingLabel",
17261
17277
  "type": "enum",
17262
17278
  "enum": [
17279
+ "above",
17263
17280
  "border",
17264
17281
  "off"
17265
17282
  ],
17266
17283
  "required": false,
17267
- "description": "Where the label rests. Off keeps it above the control. Border sits the label inside as a placeholder, then slides it onto the top border on focus or once a value is chosen. Needs label.",
17284
+ "description": "Where the label rests. Off keeps it above the control. Border sits the label inside as a placeholder, then slides it onto the top border on focus or once a value is chosen. Above rests it above the box, clear of the border. Needs label.",
17268
17285
  "default": "off"
17269
17286
  },
17270
17287
  {
@@ -1,21 +1,21 @@
1
1
  {
2
2
  "name": "webority-web",
3
- "version": "0.93.0",
3
+ "version": "0.94.1",
4
4
  "platform": "Web",
5
5
  "kitModuleVersion": 2,
6
6
  "rendererProtocolVersion": 7,
7
7
  "library": {
8
8
  "name": "@webority/ui-react",
9
- "version": "0.93.0"
9
+ "version": "0.94.1"
10
10
  },
11
11
  "files": {
12
12
  "manifest.json": {
13
- "sha256": "15cadf4b943edc3d1b08a52df15df8a52bb11cc50a54554a9b194cca57551337",
14
- "bytes": 834141
13
+ "sha256": "9c6f939afa496593a26f60024c23a59a8c606c525c20087897c51294002ef86a",
14
+ "bytes": 834742
15
15
  },
16
16
  "kit.js": {
17
- "sha256": "dca03028dc60de47e37a3093ef084d91e51cdea4457b2d0f3937653ec361588e",
18
- "bytes": 10842858
17
+ "sha256": "435ea4d05f3d5ff31fc5d4c21d6c5c3f0af91250a6c6f02ed34a15b98451e5c5",
18
+ "bytes": 10845504
19
19
  },
20
20
  "kit.css": {
21
21
  "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
@@ -1 +1 @@
1
- import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import t from"./warnUnknownProps.js";import n from"./AppIcon.js";import{initialsOf as r}from"../lib/initials.js";import{formatDate as i,formatNumber as a,toInstant as o}from"@webority/ui-elements/helpers";import{Fragment as s,useEffect as c,useId as l,useRef as u}from"react";import{jsx as d,jsxs as f}from"react/jsx-runtime";import{COMMENT_REACTIONS as p,COMMENT_TEXT as m}from"@webority/ui-elements/elements/comment-thread";import{parseMentionValue as h}from"@webority/ui-elements/elements/mention-input";function g(n){let{comments:r=[],onPost:i,onReply:a,onEdit:o,onDelete:s,onReact:h,people:g,loadPeople:v,reactionChoices:y,readOnly:b=!1,label:x=m.listName,id:S,className:C=``,...w}=n;t(`AppCommentThread`,w);let T=l(),E=S||`comment-thread-${T.replace(/[^a-zA-Z0-9_-]/g,``)}`,D=u(null),O=typeof v==`function`,k=y?.length?y:p,A=u(null);return A.current={onPost:i,onReply:a,onEdit:o,onDelete:s,onReact:h,loadPeople:v},c(()=>{let e=D.current;if(e)return e.submit=async({intent:e,commentId:t,parentId:n,body:r,emoji:i})=>{let a=A.current;e===`post`?await a.onPost?.(r):e===`reply`?await a.onReply?.(n,r):e===`edit`?await a.onEdit?.(t,r):e===`delete`?await a.onDelete?.(t):e===`react`&&await a.onReact?.(t,i)},()=>{e.submit=void 0}},[]),c(()=>{let e=D.current;!e||O||(e.people=g||[])},[g,O]),c(()=>{let e=D.current;if(!e||!O)return;let t=new WeakMap,n=async e=>{let n=e.target,r=(t.get(n)??0)+1;t.set(n,r),n.loading=!0;try{let i=await A.current.loadPeople(e.detail.query);t.get(n)===r&&(n.people=i||[])}catch{t.get(n)===r&&(n.people=[])}finally{t.get(n)===r&&(n.loading=!1)}};return e.addEventListener(`search`,n),()=>e.removeEventListener(`search`,n)},[O]),f(`wui-comment-thread`,{ref:D,id:E,class:C?`wui-comment-thread ${C}`:`wui-comment-thread`,controlled:``,"read-only":b?``:void 0,remote:O?``:void 0,"reaction-choices":y?.length?y.join(` `):void 0,...e(`AppCommentThread`,n),...w,children:[d(`div`,{className:`wui-comment-items`,"data-wui-items":``,children:r.length?d(`ol`,{className:`wui-comment-list`,"aria-label":x,children:r.map(e=>d(_,{comment:e,topLevel:!0,readOnly:b},e.id))}):d(`p`,{className:`wui-comment-empty`,children:m.empty})}),!b&&d(`div`,{className:`wui-reaction-picker`,role:`group`,"aria-label":m.pickerName,"data-wui-picker":``,hidden:!0,children:k.map(e=>d(`button`,{type:`button`,className:`wui-reaction-choice`,"data-wui-emoji":e,children:e},e))}),!b&&f(`div`,{className:`wui-comment-composer`,"data-wui-composer":``,children:[d(`wui-mention-input`,{id:`${E}-new`,class:`wui-mention-input`,label:m.composerLabel,placeholder:m.composerPlaceholder,rows:`3`,remote:O?``:void 0}),d(`div`,{className:`wui-comment-form-actions`,children:d(`button`,{type:`button`,className:`btn btn-primary btn-sm`,"data-wui-action":`post`,children:m.post})}),d(`div`,{className:`wui-comment-error`,"data-wui-error":``,hidden:!0})]}),d(`span`,{className:`visually-hidden`,"data-wui-live":``,"aria-live":`polite`,"aria-atomic":`true`})]})}function _({comment:e,topLevel:t=!1,readOnly:c}){let{id:l,author:u,at:p,value:g,edited:v,deleted:y,canEdit:b,canDelete:x,reactions:S=[],replies:C=[]}=e,w=u?.name||``,T=o(p),E=!c&&!y&&b,D=!c&&!y&&x;return f(`li`,{className:`wui-comment`,"data-wui-comment":l,"data-value":g??``,"data-wui-deleted":y?``:void 0,children:[f(`div`,{className:`wui-comment-row`,children:[f(`span`,{className:`avatar avatar-sm wui-comment-avatar`,"aria-hidden":`true`,children:[d(`span`,{className:`avatar-face`,children:r(w)||`?`}),u?.src&&d(`img`,{className:`avatar-img`,src:u.src,alt:``,onError:e=>{e.currentTarget.hidden=!0}})]}),f(`div`,{className:`wui-comment-main`,children:[f(`div`,{className:`wui-comment-head`,children:[d(`span`,{className:`wui-comment-author`,children:w}),d(`time`,{className:`wui-comment-time`,dateTime:Number.isFinite(T)?new Date(T).toISOString():void 0,children:i(p,{pattern:`datetime`})}),v&&!y&&d(`span`,{className:`wui-comment-edited`,children:m.edited})]}),y?d(`div`,{className:`wui-comment-text wui-comment-text-deleted`,children:m.deleted}):d(`div`,{className:`wui-comment-text`,"data-wui-text":``,children:h(g).map((e,t)=>`text`in e?d(s,{children:e.text},t):f(`span`,{className:`wui-mention`,"data-mention-id":e.id,children:[`@`,e.label]},t))}),E&&d(`div`,{className:`wui-comment-editor`,"data-wui-editor":``,hidden:!0}),!y&&(S.length>0||!c)&&f(`div`,{className:`wui-comment-reactions`,role:`group`,"aria-label":m.reactions,children:[S.map(e=>c?f(`span`,{className:e.mine?`wui-reaction wui-reaction-mine`:`wui-reaction`,children:[d(`span`,{className:`wui-reaction-emoji`,children:e.emoji}),d(`span`,{className:`wui-reaction-count`,children:a(e.count,{decimals:0})})]},e.emoji):f(`button`,{type:`button`,className:e.mine?`wui-reaction wui-reaction-mine`:`wui-reaction`,"data-wui-emoji":e.emoji,"aria-pressed":e.mine?`true`:`false`,children:[d(`span`,{className:`wui-reaction-emoji`,children:e.emoji}),d(`span`,{className:`wui-reaction-count`,children:a(e.count,{decimals:0})})]},e.emoji)),!c&&d(`button`,{type:`button`,className:`wui-reaction-add`,"data-wui-action":`react-menu`,"aria-label":m.addReaction,"aria-haspopup":`true`,"aria-expanded":`false`,children:d(n,{name:`emoji-smile`,size:16})})]}),!c&&!y&&(t||E||D)&&f(`div`,{className:`wui-comment-actions`,"data-wui-actions":``,children:[t&&d(`button`,{type:`button`,className:`wui-comment-action`,"data-wui-action":`reply`,children:m.reply}),E&&d(`button`,{type:`button`,className:`wui-comment-action`,"data-wui-action":`edit`,children:m.edit}),D&&d(`button`,{type:`button`,className:`wui-comment-action`,"data-wui-action":`delete`,children:m.delete})]}),D&&f(`div`,{className:`wui-comment-confirm`,"data-wui-confirm":``,hidden:!0,children:[d(`span`,{className:`wui-comment-confirm-text`,children:m.confirmDelete}),d(`button`,{type:`button`,className:`btn btn-danger btn-sm`,"data-wui-action":`confirm-delete`,children:m.delete}),d(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,"data-wui-action":`cancel-delete`,children:m.cancel})]}),!c&&d(`div`,{className:`wui-comment-error`,"data-wui-error":``,hidden:!0})]})]}),t&&C.length>0&&d(`ol`,{className:`wui-comment-list wui-comment-replies`,"aria-label":m.repliesName(w),children:C.map(e=>d(_,{comment:e,readOnly:c},e.id))}),t&&!c&&!y&&d(`div`,{className:`wui-comment-reply`,"data-wui-reply":``,hidden:!0})]})}export{g as default};
1
+ import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import t from"./warnUnknownProps.js";import n from"./AppIcon.js";import{initialsOf as r}from"../lib/initials.js";import{parseMentionValue as i}from"@webority/ui-elements/elements/mention-input";import{formatDate as a,formatNumber as o,toInstant as s}from"@webority/ui-elements/helpers";import{Fragment as c,useEffect as l,useId as u,useRef as d}from"react";import{jsx as f,jsxs as p}from"react/jsx-runtime";import{COMMENT_REACTIONS as m,COMMENT_TEXT as h}from"@webority/ui-elements/elements/comment-thread";function g(n){let{comments:r=[],onPost:i,onReply:a,onEdit:o,onDelete:s,onReact:c,people:g,loadPeople:v,reactionChoices:y,readOnly:b=!1,label:x=h.listName,id:S,className:C=``,...w}=n;t(`AppCommentThread`,w);let T=u(),E=S||`comment-thread-${T.replace(/[^a-zA-Z0-9_-]/g,``)}`,D=d(null),O=typeof v==`function`,k=y?.length?y:m,A=d(null);return A.current={onPost:i,onReply:a,onEdit:o,onDelete:s,onReact:c,loadPeople:v},l(()=>{let e=D.current;if(e)return e.submit=async({intent:e,commentId:t,parentId:n,body:r,emoji:i})=>{let a=A.current;e===`post`?await a.onPost?.(r):e===`reply`?await a.onReply?.(n,r):e===`edit`?await a.onEdit?.(t,r):e===`delete`?await a.onDelete?.(t):e===`react`&&await a.onReact?.(t,i)},()=>{e.submit=void 0}},[]),l(()=>{let e=D.current;!e||O||(e.people=g||[])},[g,O]),l(()=>{let e=D.current;if(!e||!O)return;let t=new WeakMap,n=async e=>{let n=e.target,r=(t.get(n)??0)+1;t.set(n,r),n.loading=!0;try{let i=await A.current.loadPeople(e.detail.query);t.get(n)===r&&(n.people=i||[])}catch{t.get(n)===r&&(n.people=[])}finally{t.get(n)===r&&(n.loading=!1)}};return e.addEventListener(`search`,n),()=>e.removeEventListener(`search`,n)},[O]),p(`wui-comment-thread`,{ref:D,id:E,class:C?`wui-comment-thread ${C}`:`wui-comment-thread`,controlled:``,"read-only":b?``:void 0,remote:O?``:void 0,"reaction-choices":y?.length?y.join(` `):void 0,...e(`AppCommentThread`,n),...w,children:[f(`div`,{className:`wui-comment-items`,"data-wui-items":``,children:r.length?f(`ol`,{className:`wui-comment-list`,"aria-label":x,children:r.map(e=>f(_,{comment:e,topLevel:!0,readOnly:b},e.id))}):f(`p`,{className:`wui-comment-empty`,children:h.empty})}),!b&&f(`div`,{className:`wui-reaction-picker`,role:`group`,"aria-label":h.pickerName,"data-wui-picker":``,hidden:!0,children:k.map(e=>f(`button`,{type:`button`,className:`wui-reaction-choice`,"data-wui-emoji":e,children:e},e))}),!b&&p(`div`,{className:`wui-comment-composer`,"data-wui-composer":``,children:[f(`wui-mention-input`,{id:`${E}-new`,class:`wui-mention-input`,label:h.composerLabel,placeholder:h.composerPlaceholder,rows:`3`,remote:O?``:void 0}),f(`div`,{className:`wui-comment-form-actions`,children:f(`button`,{type:`button`,className:`btn btn-primary btn-sm`,"data-wui-action":`post`,children:h.post})}),f(`div`,{className:`wui-comment-error`,"data-wui-error":``,hidden:!0})]}),f(`span`,{className:`visually-hidden`,"data-wui-live":``,"aria-live":`polite`,"aria-atomic":`true`})]})}function _({comment:e,topLevel:t=!1,readOnly:l}){let{id:u,author:d,at:m,value:g,edited:v,deleted:y,canEdit:b,canDelete:x,reactions:S=[],replies:C=[]}=e,w=d?.name||``,T=s(m),E=!l&&!y&&b,D=!l&&!y&&x;return p(`li`,{className:`wui-comment`,"data-wui-comment":u,"data-value":g??``,"data-wui-deleted":y?``:void 0,children:[p(`div`,{className:`wui-comment-row`,children:[p(`span`,{className:`avatar avatar-sm wui-comment-avatar`,"aria-hidden":`true`,children:[f(`span`,{className:`avatar-face`,children:r(w)||`?`}),d?.src&&f(`img`,{className:`avatar-img`,src:d.src,alt:``,onError:e=>{e.currentTarget.hidden=!0}})]}),p(`div`,{className:`wui-comment-main`,children:[p(`div`,{className:`wui-comment-head`,children:[f(`span`,{className:`wui-comment-author`,children:w}),f(`time`,{className:`wui-comment-time`,dateTime:Number.isFinite(T)?new Date(T).toISOString():void 0,children:a(m,{pattern:`datetime`})}),v&&!y&&f(`span`,{className:`wui-comment-edited`,children:h.edited})]}),y?f(`div`,{className:`wui-comment-text wui-comment-text-deleted`,children:h.deleted}):f(`div`,{className:`wui-comment-text`,"data-wui-text":``,children:i(g).map((e,t)=>`text`in e?f(c,{children:e.text},t):p(`span`,{className:`wui-mention`,"data-mention-id":e.id,children:[`@`,e.label]},t))}),E&&f(`div`,{className:`wui-comment-editor`,"data-wui-editor":``,hidden:!0}),!y&&(S.length>0||!l)&&p(`div`,{className:`wui-comment-reactions`,role:`group`,"aria-label":h.reactions,children:[S.map(e=>l?p(`span`,{className:e.mine?`wui-reaction wui-reaction-mine`:`wui-reaction`,children:[f(`span`,{className:`wui-reaction-emoji`,children:e.emoji}),f(`span`,{className:`wui-reaction-count`,children:o(e.count,{decimals:0})})]},e.emoji):p(`button`,{type:`button`,className:e.mine?`wui-reaction wui-reaction-mine`:`wui-reaction`,"data-wui-emoji":e.emoji,"aria-pressed":e.mine?`true`:`false`,children:[f(`span`,{className:`wui-reaction-emoji`,children:e.emoji}),f(`span`,{className:`wui-reaction-count`,children:o(e.count,{decimals:0})})]},e.emoji)),!l&&f(`button`,{type:`button`,className:`wui-reaction-add`,"data-wui-action":`react-menu`,"aria-label":h.addReaction,"aria-haspopup":`true`,"aria-expanded":`false`,children:f(n,{name:`emoji-smile`,size:16})})]}),!l&&!y&&(t||E||D)&&p(`div`,{className:`wui-comment-actions`,"data-wui-actions":``,children:[t&&f(`button`,{type:`button`,className:`wui-comment-action`,"data-wui-action":`reply`,children:h.reply}),E&&f(`button`,{type:`button`,className:`wui-comment-action`,"data-wui-action":`edit`,children:h.edit}),D&&f(`button`,{type:`button`,className:`wui-comment-action`,"data-wui-action":`delete`,children:h.delete})]}),D&&p(`div`,{className:`wui-comment-confirm`,"data-wui-confirm":``,hidden:!0,children:[f(`span`,{className:`wui-comment-confirm-text`,children:h.confirmDelete}),f(`button`,{type:`button`,className:`btn btn-danger btn-sm`,"data-wui-action":`confirm-delete`,children:h.delete}),f(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,"data-wui-action":`cancel-delete`,children:h.cancel})]}),!l&&f(`div`,{className:`wui-comment-error`,"data-wui-error":``,hidden:!0})]})]}),t&&C.length>0&&f(`ol`,{className:`wui-comment-list wui-comment-replies`,"aria-label":h.repliesName(w),children:C.map(e=>f(_,{comment:e,readOnly:l},e.id))}),t&&!l&&!y&&f(`div`,{className:`wui-comment-reply`,"data-wui-reply":``,hidden:!0})]})}export{g as default};
@@ -1 +1 @@
1
- import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import t from"./warnUnknownProps.js";import n from"./AppIcon.js";import{jsx as r,jsxs as i}from"react/jsx-runtime";function a(a){let{columns:o=[],rows:s=[],caption:c,className:l=``,...u}=a;t(`AppCompareTable`,u);let d=e=>e===!0?r(`span`,{className:`compare-yes`,children:r(n,{name:`check`,size:16})}):e===!1?r(`span`,{className:`compare-no`,children:`-`}):e;return r(`div`,{className:`compare-table${l?` ${l}`:``}`,...e(`AppCompareTable`,a),...u,children:i(`table`,{children:[c&&r(`caption`,{className:`visually-hidden`,children:c}),r(`thead`,{children:r(`tr`,{children:o.map((e,t)=>r(`th`,{scope:`col`,className:e.highlight?`is-highlight`:void 0,children:e.label},e.label?`col-${t}-${e.label}`:`col-${t}`))})}),r(`tbody`,{children:s.map((e,t)=>i(`tr`,{children:[r(`th`,{scope:`row`,children:e.label}),e.values.map((e,t)=>r(`td`,{className:o[t+1]?.highlight?`is-highlight`:void 0,children:d(e)},o[t+1]?.label??t))]},e.key??`${e.label}-${t}`))})]})})}export{a as default};
1
+ import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import t from"./warnUnknownProps.js";import n from"./AppIcon.js";import{jsx as r,jsxs as i}from"react/jsx-runtime";function a(a){let{columns:o,rows:s,caption:c,className:l=``,...u}=a;if(!Array.isArray(o))throw Error(`<AppCompareTable> columns is required: pass the feature-name column, then one per option.`);if(!Array.isArray(s))throw Error(`<AppCompareTable> rows is required: pass one row per capability.`);t(`AppCompareTable`,u);let d=e=>e===!0?r(`span`,{className:`compare-yes`,children:r(n,{name:`check`,size:16})}):e===!1?r(`span`,{className:`compare-no`,children:`-`}):e;return r(`div`,{className:`compare-table${l?` ${l}`:``}`,...e(`AppCompareTable`,a),...u,children:i(`table`,{children:[c&&r(`caption`,{className:`visually-hidden`,children:c}),r(`thead`,{children:r(`tr`,{children:o.map((e,t)=>r(`th`,{scope:`col`,className:e.highlight?`is-highlight`:void 0,children:e.label},e.label?`col-${t}-${e.label}`:`col-${t}`))})}),r(`tbody`,{children:s.map((e,t)=>i(`tr`,{children:[r(`th`,{scope:`row`,children:e.label}),e.values.map((e,t)=>r(`td`,{className:o[t+1]?.highlight?`is-highlight`:void 0,children:d(e)},o[t+1]?.label??t))]},e.key??`${e.label}-${t}`))})]})})}export{a as default};
@@ -1 +1 @@
1
- import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import t from"./warnInvalidValue.js";import n from"./warnUnknownProps.js";import r from"./AppButton.js";import i from"./AppModal.js";import a from"./AppInput.js";import{MODAL_ICONS as o}from"./ModalIcons.js";import{useEffect as s,useState as c}from"react";import{Fragment as l,jsx as u,jsxs as d}from"react/jsx-runtime";var f=[`sm`,`md`,`lg`,`xl`];function p(p){let{open:m,title:h,message:g,confirmLabel:_=`Confirm`,cancelLabel:v=`Cancel`,danger:y=!1,tone:b,image:x,iconSize:S,confirmPhrase:C,onConfirm:w,onClose:T,loading:E=!1,staticBackdrop:D=!1,placement:O=`center`,size:k=`md`,className:A=``,...j}=p;n(`AppConfirmDialog`,j),t(`AppConfirmDialog`,`tone`,b,Object.keys(o)),t(`AppConfirmDialog`,`size`,typeof k==`string`?k:null,f);let[M,N]=c(``);if(s(()=>{m||N(``)},[m]),!m)return null;let P=!!C&&M.trim()!==C,F=x?null:o[b||(y?`delete`:`info`)],I=S>0?{"--wui-confirm-icon-size":`${S}px`}:void 0,L=()=>{E||T?.()};return u(i,{...e(`AppConfirmDialog`,p),...j,open:m,hideHeader:!0,title:h,onClose:L,staticBackdrop:D,placement:O,size:k,className:[`wui-confirm`,A].filter(Boolean).join(` `),footer:d(`div`,{className:`wui-confirm-actions`,children:[u(r,{variant:`secondary`,disabled:E,onClick:L,children:v}),u(r,{variant:y?`danger`:`primary`,disabled:P,loading:E,onClick:w,children:_})]}),children:d(`div`,{className:`wui-confirm-content`,children:[x?u(`span`,{className:`wui-confirm-icon`,style:I,children:u(`img`,{src:x,alt:``,"aria-hidden":`true`})}):F&&u(`span`,{className:`wui-confirm-icon`,style:I,children:u(F,{size:120})}),u(`h3`,{className:`wui-confirm-title`,tabIndex:-1,"data-autofocus":``,children:h}),g&&u(`p`,{className:`wui-confirm-msg`,children:g}),C&&u(a,{fieldClassName:`mt-3 mb-0 w-100 text-start`,label:d(l,{children:[`Type `,u(`strong`,{children:C}),` to confirm`]}),value:M,onChange:e=>N(e.target.value),"aria-label":`Type ${C} to confirm`,disabled:E})]})})}export{p as default};
1
+ import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import t from"./warnInvalidValue.js";import n from"./warnUnknownProps.js";import r from"./AppButton.js";import i from"./AppModal.js";import a from"./AppInput.js";import{MODAL_ICONS as o}from"./ModalIcons.js";import{useEffect as s,useState as c}from"react";import{Fragment as l,jsx as u,jsxs as d}from"react/jsx-runtime";var f=[`sm`,`md`,`lg`,`xl`];function p(p){let{open:m,title:h,message:g,confirmLabel:_=`Confirm`,cancelLabel:v=`Cancel`,danger:y=!1,tone:b,image:x,iconSize:S,confirmPhrase:C,onConfirm:w,onClose:T,loading:E=!1,staticBackdrop:D=!1,placement:O=`center`,size:k=`md`,className:A=``,children:j,...M}=p;n(`AppConfirmDialog`,M),t(`AppConfirmDialog`,`tone`,b,Object.keys(o)),t(`AppConfirmDialog`,`size`,typeof k==`string`?k:null,f);let[N,P]=c(``);if(s(()=>{m||P(``)},[m]),!m)return null;let F=!!C&&N.trim()!==C,I=x?null:o[b||(y?`delete`:`info`)],L=S>0?{"--wui-confirm-icon-size":`${S}px`}:void 0,R=()=>{E||T?.()};return u(i,{...e(`AppConfirmDialog`,p),...M,open:m,hideHeader:!0,title:h,onClose:R,staticBackdrop:D,placement:O,size:k,className:[`wui-confirm`,A].filter(Boolean).join(` `),footer:d(`div`,{className:`wui-confirm-actions`,children:[u(r,{variant:`secondary`,disabled:E,onClick:R,children:v}),u(r,{variant:y?`danger`:`primary`,disabled:F,loading:E,onClick:w,children:_})]}),children:d(`div`,{className:`wui-confirm-content`,children:[x?u(`span`,{className:`wui-confirm-icon`,style:L,children:u(`img`,{src:x,alt:``,"aria-hidden":`true`})}):I&&u(`span`,{className:`wui-confirm-icon`,style:L,children:u(I,{size:120})}),u(`h3`,{className:`wui-confirm-title`,tabIndex:-1,"data-autofocus":``,children:h}),g&&u(`p`,{className:`wui-confirm-msg`,children:g}),j!=null&&j!==!1&&u(`div`,{className:`wui-confirm-body`,children:j}),C&&u(a,{fieldClassName:`mt-3 mb-0 w-100 text-start`,label:d(l,{children:[`Type `,u(`strong`,{children:C}),` to confirm`]}),value:N,onChange:e=>P(e.target.value),"aria-label":`Type ${C} to confirm`,disabled:E})]})})}export{p as default};
@@ -1 +1 @@
1
- import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import t from"./warnInvalidValue.js";import n from"./warnUnknownProps.js";import r from"./AppIcon.js";import{errorToast as i}from"./toast.js";import{formatValue as a}from"@webority/ui-elements/helpers";import{useEffect as o,useId as s,useMemo as c,useRef as l,useState as u}from"react";import{jsx as d,jsxs as f}from"react/jsx-runtime";import{KANBAN_SUMMARY_FORMATS as p,KANBAN_TEXT as m,KANBAN_TONES as h,kanbanOverflow as g,kanbanSummaryFormat as _,kanbanVisibleLimit as v,sumKanbanValues as ee}from"@webority/ui-elements/elements/kanban";var te=e=>e.key??e.id,ne=e=>e.column,y=[`rupees`,`paise`],re=[`inline`,`stacked`];function b(b){let{columns:x=[],cards:S=[],renderCard:ie,renderColumnActions:ae,getCardKey:C=te,getCardColumn:w=ne,getCardValue:T,cardLabel:E,isCardLocked:D,onLocked:O,onMove:k,accept:A,filter:j,boardId:oe,ariaLabel:se=`Board`,emptyText:ce=m.empty,readOnly:le=!1,swipeHint:ue=!1,fill:M=!1,columnWidth:N,fillOffset:P,activeCardKey:F,headLayout:I=`inline`,summaryFormat:L,summaryUnit:R,className:z=``,id:B,...V}=b;n(`AppKanban`,V),t(`AppKanban`,`summaryFormat`,L,p),t(`AppKanban`,`summaryUnit`,R,y),t(`AppKanban`,`headLayout`,I,re);for(let e of x)t(`AppKanban`,`columns[].tone`,e.tone,h);let H=s(),U=B||`kanban-${H.replace(/[^a-zA-Z0-9_-]/g,``)}`,W=l(null),[G,K]=u(()=>new Map),[q,de]=u(()=>new Set),[fe,J]=u(()=>new Set),pe=c(()=>new Map(S.map(e=>[String(C(e)),e])),[S,C]),Y=l(null);Y.current={accept:A,onMove:k,onLocked:O,byKey:pe,columns:x};let X=L&&p.includes(L)&&(R==null||y.includes(R))?_(L,R):null,Z=c(()=>{let e=new Map(x.map(e=>[e.key,[]])),t=[];for(let n of S){let r=String(C(n)),i=G.get(r);i?t.push([n,i]):e.get(w(n))?.push(n)}for(let[n,r]of t){let t=e.get(r.to);t&&t.splice(Math.min(r.index,t.length),0,n)}return e},[x,S,G,C,w]);o(()=>{let e=W.current;if(!e)return;e.accept=(e,t,n)=>{let r=Y.current.accept;return!r||r(Y.current.byKey.get(e.getAttribute(`data-wui-card`)),t,n)};let t=e=>{let{key:t,from:n,to:r,index:a}=e.detail,o=Y.current.onMove,s=Y.current.byKey.get(t);if(!o||!s)return;let c=Y.current.columns.find(e=>e.key===r)?.visibleLimit!=null;c&&J(e=>new Set(e).add(t)),K(e=>new Map(e).set(t,{to:r,index:a}));let l=()=>K(e=>{let n=new Map(e);return n.delete(t),n}),u;try{u=o({card:s,key:t,from:n,to:r,index:a})}catch(e){u=Promise.reject(e)}Promise.resolve(u).then(l,e=>{l(),c&&J(e=>{let n=new Set(e);return n.delete(t),n}),i(e?.message||m.failed.server)})},n=e=>{let{key:t,reason:n}=e.detail,r=Y.current.byKey.get(t);r&&Y.current.onLocked?.({card:r,key:t,reason:n})};return e.addEventListener(`wui:kanban:move`,t),e.addEventListener(`wui:kanban:locked`,n),()=>{e.removeEventListener(`wui:kanban:move`,t),e.removeEventListener(`wui:kanban:locked`,n),e.accept=void 0}},[]);let Q=e=>!j||j(e)!==!1,me=(e,t)=>{q.has(e)&&J(e=>{let n=new Set(e);for(let e of t)n.delete(String(C(e)));return n}),de(t=>{let n=new Set(t);return n.delete(e)||n.add(e),n})},$={};return N!=null&&($[`--wui-kanban-column-width`]=`${N}px`),P!=null&&($[`--wui-kanban-fill-offset`]=`${P}px`),f(`wui-kanban`,{ref:W,id:U,class:z?`wui-kanban ${z}`:`wui-kanban`,role:`region`,"aria-label":se,"board-id":oe||void 0,"summary-format":X?L:void 0,"summary-unit":X&&R?R:void 0,readonly:le?``:void 0,fill:M?``:void 0,"data-head-layout":I===`stacked`?`stacked`:void 0,style:$,controlled:``,...e(`AppKanban`,b),...V,children:[d(`nav`,{className:`wui-kanban-switcher`,"aria-label":`Board columns`,children:x.map((e,t)=>f(`button`,{type:`button`,className:`wui-kanban-switch`,"data-wui-switch":e.key,"aria-controls":`${U}-${e.key}`,"aria-current":t===0?`true`:void 0,children:[d(`span`,{className:`wui-kanban-switch-title`,children:e.title}),d(`span`,{className:`wui-kanban-count`,"data-wui-count":``,children:(Z.get(e.key)||[]).filter(Q).length})]},e.key))}),ue&&f(`p`,{className:`wui-kanban-hint`,"aria-hidden":`true`,children:[d(r,{name:`arrow-swap-horizontal`,size:14}),m.swipeHint]}),d(`div`,{className:`wui-kanban-board`,"data-wui-scroller":``,children:x.map(e=>{let t=`${U}-${e.key}`,n=Z.get(e.key)||[],i=n.filter(Q),o=!!(e.collapsible&&e.collapsed),s=v(e.visibleLimit),c=q.has(e.key),l=g(i.map(e=>String(C(e))),s,c,fe),u=typeof e.summary==`function`?e.summary(i):e.summary;X&&(u=a(ee(i.map(e=>T?.(e))),X));let p=ae?.(e,i);return f(`section`,{className:`wui-kanban-column`,id:t,"data-wui-column":e.key,"data-tone":e.tone&&h.includes(e.tone)?e.tone:`neutral`,"aria-labelledby":`${t}-title`,"data-accept-from":e.acceptFrom?e.acceptFrom.join(` `):void 0,"data-collapsible":e.collapsible?``:void 0,"data-collapsed":o?``:void 0,children:[f(`header`,{className:`wui-kanban-head`,children:[d(`span`,{className:`wui-kanban-dot`,"aria-hidden":`true`}),d(`h2`,{className:`wui-kanban-title`,id:`${t}-title`,children:e.href?d(`a`,{href:e.href,children:e.title}):e.title}),d(`span`,{className:`wui-kanban-count`,"data-wui-count":``,children:i.length}),e.collapsible&&d(`span`,{className:`wui-kanban-lock`,"aria-hidden":`true`,children:d(r,{name:`lock`,size:14})}),p!=null&&p!==!1&&d(`div`,{className:`wui-kanban-actions`,"data-wui-no-drag":``,children:p}),e.collapsible&&d(`button`,{type:`button`,className:`wui-kanban-collapse`,"data-wui-collapse":``,"aria-expanded":o?`false`:`true`,"aria-controls":`${t}-body`,"aria-label":o?m.expand(e.title):m.collapse(e.title),children:d(r,{name:`chevron-left`,size:16})}),u!=null&&d(`div`,{className:`wui-kanban-summary`,"data-wui-summary":``,children:u})]}),d(`p`,{className:`wui-kanban-drop-note`,"data-wui-drop-note":``,hidden:!0}),d(`div`,{className:`wui-kanban-body`,id:`${t}-body`,"data-wui-body":``,children:n.map(e=>{let t=String(C(e)),n=G.has(t);return d(`article`,{className:`wui-kanban-card`,"data-wui-card":t,tabIndex:0,"aria-label":E?E(e):void 0,"data-wui-locked":D?.(e)?``:void 0,"data-wui-value":T?T(e)??void 0:void 0,"aria-current":F!=null&&t===String(F)?`true`:void 0,"aria-busy":n?`true`:void 0,"data-wui-saving":n?``:void 0,"data-wui-overflow":l.has(t)?``:void 0,hidden:!Q(e),children:ie?.(e)},t)})}),s!=null&&d(`button`,{type:`button`,className:`wui-kanban-more`,"data-wui-more":``,"aria-controls":`${t}-body`,"aria-expanded":c?`true`:`false`,hidden:c?i.length<=s:l.size===0,onClick:()=>me(e.key,n),children:c?m.fewer:m.more(l.size)}),d(`p`,{className:`wui-kanban-empty`,"data-wui-empty":``,hidden:i.length>0,children:e.emptyText??ce})]},e.key)})}),d(`p`,{className:`visually-hidden`,id:`${U}-help`,"data-wui-help":``,children:m.help}),d(`div`,{className:`visually-hidden`,"data-wui-live":``,"aria-live":`polite`,"aria-atomic":`true`})]})}export{b as default};
1
+ import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import t from"./warnInvalidValue.js";import n from"./warnUnknownProps.js";import r from"./AppIcon.js";import{errorToast as i}from"./toast.js";import{formatValue as a}from"@webority/ui-elements/helpers";import{useEffect as o,useId as s,useMemo as c,useRef as l,useState as u}from"react";import{jsx as d,jsxs as f}from"react/jsx-runtime";import{KANBAN_SUMMARY_FORMATS as p,KANBAN_TEXT as m,KANBAN_TONES as h,kanbanOverflow as g,kanbanSummaryFormat as _,kanbanVisibleLimit as v,sumKanbanValues as ee}from"@webority/ui-elements/elements/kanban";var te=e=>e.key??e.id,ne=e=>e.column,y=[`rupees`,`paise`],re=[`inline`,`stacked`];function b(b){let{columns:x,cards:S,renderCard:ie,renderColumnActions:ae,getCardKey:C=te,getCardColumn:w=ne,getCardValue:T,cardLabel:E,isCardLocked:D,onLocked:O,onMove:k,accept:A,filter:j,boardId:oe,ariaLabel:se=`Board`,emptyText:ce=m.empty,readOnly:le=!1,swipeHint:ue=!1,fill:M=!1,columnWidth:N,fillOffset:P,activeCardKey:F,headLayout:I=`inline`,summaryFormat:L,summaryUnit:R,className:z=``,id:B,...V}=b;if(!Array.isArray(x))throw Error(`<AppKanban> columns is required: pass the board's stage columns.`);if(!Array.isArray(S))throw Error(`<AppKanban> cards is required: pass the cards, an empty array for an empty board.`);n(`AppKanban`,V),t(`AppKanban`,`summaryFormat`,L,p),t(`AppKanban`,`summaryUnit`,R,y),t(`AppKanban`,`headLayout`,I,re);for(let e of x)t(`AppKanban`,`columns[].tone`,e.tone,h);let H=s(),U=B||`kanban-${H.replace(/[^a-zA-Z0-9_-]/g,``)}`,W=l(null),[G,K]=u(()=>new Map),[q,de]=u(()=>new Set),[fe,J]=u(()=>new Set),pe=c(()=>new Map(S.map(e=>[String(C(e)),e])),[S,C]),Y=l(null);Y.current={accept:A,onMove:k,onLocked:O,byKey:pe,columns:x};let X=L&&p.includes(L)&&(R==null||y.includes(R))?_(L,R):null,Z=c(()=>{let e=new Map(x.map(e=>[e.key,[]])),t=[];for(let n of S){let r=String(C(n)),i=G.get(r);i?t.push([n,i]):e.get(w(n))?.push(n)}for(let[n,r]of t){let t=e.get(r.to);t&&t.splice(Math.min(r.index,t.length),0,n)}return e},[x,S,G,C,w]);o(()=>{let e=W.current;if(!e)return;e.accept=(e,t,n)=>{let r=Y.current.accept;return!r||r(Y.current.byKey.get(e.getAttribute(`data-wui-card`)),t,n)};let t=e=>{let{key:t,from:n,to:r,index:a}=e.detail,o=Y.current.onMove,s=Y.current.byKey.get(t);if(!o||!s)return;let c=Y.current.columns.find(e=>e.key===r)?.visibleLimit!=null;c&&J(e=>new Set(e).add(t)),K(e=>new Map(e).set(t,{to:r,index:a}));let l=()=>K(e=>{let n=new Map(e);return n.delete(t),n}),u;try{u=o({card:s,key:t,from:n,to:r,index:a})}catch(e){u=Promise.reject(e)}Promise.resolve(u).then(l,e=>{l(),c&&J(e=>{let n=new Set(e);return n.delete(t),n}),i(e?.message||m.failed.server)})},n=e=>{let{key:t,reason:n}=e.detail,r=Y.current.byKey.get(t);r&&Y.current.onLocked?.({card:r,key:t,reason:n})};return e.addEventListener(`wui:kanban:move`,t),e.addEventListener(`wui:kanban:locked`,n),()=>{e.removeEventListener(`wui:kanban:move`,t),e.removeEventListener(`wui:kanban:locked`,n),e.accept=void 0}},[]);let Q=e=>!j||j(e)!==!1,me=(e,t)=>{q.has(e)&&J(e=>{let n=new Set(e);for(let e of t)n.delete(String(C(e)));return n}),de(t=>{let n=new Set(t);return n.delete(e)||n.add(e),n})},$={};return N!=null&&($[`--wui-kanban-column-width`]=`${N}px`),P!=null&&($[`--wui-kanban-fill-offset`]=`${P}px`),f(`wui-kanban`,{ref:W,id:U,class:z?`wui-kanban ${z}`:`wui-kanban`,role:`region`,"aria-label":se,"board-id":oe||void 0,"summary-format":X?L:void 0,"summary-unit":X&&R?R:void 0,readonly:le?``:void 0,fill:M?``:void 0,"data-head-layout":I===`stacked`?`stacked`:void 0,style:$,controlled:``,...e(`AppKanban`,b),...V,children:[d(`nav`,{className:`wui-kanban-switcher`,"aria-label":`Board columns`,children:x.map((e,t)=>f(`button`,{type:`button`,className:`wui-kanban-switch`,"data-wui-switch":e.key,"aria-controls":`${U}-${e.key}`,"aria-current":t===0?`true`:void 0,children:[d(`span`,{className:`wui-kanban-switch-title`,children:e.title}),d(`span`,{className:`wui-kanban-count`,"data-wui-count":``,children:(Z.get(e.key)||[]).filter(Q).length})]},e.key))}),ue&&f(`p`,{className:`wui-kanban-hint`,"aria-hidden":`true`,children:[d(r,{name:`arrow-swap-horizontal`,size:14}),m.swipeHint]}),d(`div`,{className:`wui-kanban-board`,"data-wui-scroller":``,children:x.map(e=>{let t=`${U}-${e.key}`,n=Z.get(e.key)||[],i=n.filter(Q),o=!!(e.collapsible&&e.collapsed),s=v(e.visibleLimit),c=q.has(e.key),l=g(i.map(e=>String(C(e))),s,c,fe),u=typeof e.summary==`function`?e.summary(i):e.summary;X&&(u=a(ee(i.map(e=>T?.(e))),X));let p=ae?.(e,i);return f(`section`,{className:`wui-kanban-column`,id:t,"data-wui-column":e.key,"data-tone":e.tone&&h.includes(e.tone)?e.tone:`neutral`,"aria-labelledby":`${t}-title`,"data-accept-from":e.acceptFrom?e.acceptFrom.join(` `):void 0,"data-collapsible":e.collapsible?``:void 0,"data-collapsed":o?``:void 0,children:[f(`header`,{className:`wui-kanban-head`,children:[d(`span`,{className:`wui-kanban-dot`,"aria-hidden":`true`}),d(`h2`,{className:`wui-kanban-title`,id:`${t}-title`,children:e.href?d(`a`,{href:e.href,children:e.title}):e.title}),d(`span`,{className:`wui-kanban-count`,"data-wui-count":``,children:i.length}),e.collapsible&&d(`span`,{className:`wui-kanban-lock`,"aria-hidden":`true`,children:d(r,{name:`lock`,size:14})}),p!=null&&p!==!1&&d(`div`,{className:`wui-kanban-actions`,"data-wui-no-drag":``,children:p}),e.collapsible&&d(`button`,{type:`button`,className:`wui-kanban-collapse`,"data-wui-collapse":``,"aria-expanded":o?`false`:`true`,"aria-controls":`${t}-body`,"aria-label":o?m.expand(e.title):m.collapse(e.title),children:d(r,{name:`chevron-left`,size:16})}),u!=null&&d(`div`,{className:`wui-kanban-summary`,"data-wui-summary":``,children:u})]}),d(`p`,{className:`wui-kanban-drop-note`,"data-wui-drop-note":``,hidden:!0}),d(`div`,{className:`wui-kanban-body`,id:`${t}-body`,"data-wui-body":``,children:n.map(e=>{let t=String(C(e)),n=G.has(t);return d(`article`,{className:`wui-kanban-card`,"data-wui-card":t,tabIndex:0,"aria-label":E?E(e):void 0,"data-wui-locked":D?.(e)?``:void 0,"data-wui-value":T?T(e)??void 0:void 0,"aria-current":F!=null&&t===String(F)?`true`:void 0,"aria-busy":n?`true`:void 0,"data-wui-saving":n?``:void 0,"data-wui-overflow":l.has(t)?``:void 0,hidden:!Q(e),children:ie?.(e)},t)})}),s!=null&&d(`button`,{type:`button`,className:`wui-kanban-more`,"data-wui-more":``,"aria-controls":`${t}-body`,"aria-expanded":c?`true`:`false`,hidden:c?i.length<=s:l.size===0,onClick:()=>me(e.key,n),children:c?m.fewer:m.more(l.size)}),d(`p`,{className:`wui-kanban-empty`,"data-wui-empty":``,hidden:i.length>0,children:e.emptyText??ce})]},e.key)})}),d(`p`,{className:`visually-hidden`,id:`${U}-help`,"data-wui-help":``,children:m.help}),d(`div`,{className:`visually-hidden`,"data-wui-live":``,"aria-live":`polite`,"aria-atomic":`true`})]})}export{b as default};
@@ -1 +1 @@
1
- import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import t from"./warnUnknownProps.js";import n from"../lib/FieldMessage.js";import r from"./AppInfoTip.js";import i from"./AppRequiredMark.js";import a from"./useWuiControl.js";import{forwardRef as o,useEffect as s,useId as c}from"react";import{jsx as l,jsxs as u}from"react/jsx-runtime";import"@webority/ui-elements/elements/mention-input";var d=o(function(o,d){let{value:f,onChange:p,people:m,loadPeople:h,minChars:g,debounce:_,onSubmit:v,rows:y=3,placeholder:b,disabled:x=!1,name:S,id:C,label:w,error:T,hint:E,required:D=!1,help:O,helpLabel:k=`More information`,className:A=``,fieldClassName:j=``,"data-canvas":M,...N}=o;t(`AppMentionInput`,N);let P=typeof h==`function`,F=c(),I=C||`mention-${F.replace(/[^a-zA-Z0-9_-]/g,``)}`,L=T?`${I}-error`:E?`${I}-hint`:void 0,{setRef:R,innerRef:z}=a({ref:d,value:f??``,on:{change:e=>{e.target===e.currentTarget&&p?.(e.currentTarget.value,{mentions:e.currentTarget.mentions})},"wui:mention-input:submit":()=>v?.()}});return s(()=>{let e=z.current;!e||P||(e.people=m||[])},[m,P,z]),s(()=>{let e=z.current;if(!e||!P)return;let t=0,n=null,r=async r=>{let i=++t;n?.abort(),n=typeof AbortController==`function`?new AbortController:null,e.loading=!0;try{let a=await h(r.detail.query,{signal:n?.signal});i===t&&(e.people=a||[])}catch{i===t&&(e.people=[])}finally{i===t&&(e.loading=!1)}};return e.addEventListener(`search`,r),()=>{t=-1,n?.abort(),e.removeEventListener(`search`,r),e.loading=!1}},[P,h,z]),u(`div`,{...e(`AppMentionInput`,o),className:`field${j?` ${j}`:``}`,children:[w&&u(`label`,{className:`label`,htmlFor:`${I}-text`,children:[w,D&&l(i,{}),O&&l(r,{label:k,children:O})]}),l(`wui-mention-input`,{ref:R,id:I,class:A?`wui-mention-input ${A}`:`wui-mention-input`,label:typeof w==`string`?w:void 0,placeholder:b||void 0,rows:String(y),name:S||void 0,remote:P?``:void 0,"min-chars":g==null?void 0:String(g),debounce:_==null?void 0:String(_),disabled:x?``:void 0,"aria-describedby":L,"aria-invalid":T?`true`:void 0,...N}),l(n,{error:T,hint:E,errorId:`${I}-error`,hintId:`${I}-hint`})]})});export{d as default};
1
+ import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import t from"./warnUnknownProps.js";import n from"../lib/FieldMessage.js";import r from"./AppInfoTip.js";import i from"./AppRequiredMark.js";import a from"./useWuiControl.js";import"@webority/ui-elements/elements/mention-input";import{forwardRef as o,useEffect as s,useId as c}from"react";import{jsx as l,jsxs as u}from"react/jsx-runtime";var d=o(function(o,d){let{value:f,onChange:p,people:m,loadPeople:h,minChars:g,debounce:_,onSubmit:v,rows:y=3,placeholder:b,disabled:x=!1,name:S,id:C,label:w,error:T,hint:E,required:D=!1,help:O,helpLabel:k=`More information`,className:A=``,fieldClassName:j=``,"data-canvas":M,...N}=o;t(`AppMentionInput`,N);let P=typeof h==`function`,F=c(),I=C||`mention-${F.replace(/[^a-zA-Z0-9_-]/g,``)}`,L=T?`${I}-error`:E?`${I}-hint`:void 0,{setRef:R,innerRef:z}=a({ref:d,value:f??``,on:{change:e=>{e.target===e.currentTarget&&p?.(e.currentTarget.value,{mentions:e.currentTarget.mentions})},"wui:mention-input:submit":()=>v?.()}});return s(()=>{let e=z.current;!e||P||(e.people=m||[])},[m,P,z]),s(()=>{let e=z.current;if(!e||!P)return;let t=0,n=null,r=async r=>{let i=++t;n?.abort(),n=typeof AbortController==`function`?new AbortController:null,e.loading=!0;try{let a=await h(r.detail.query,{signal:n?.signal});i===t&&(e.people=a||[])}catch{i===t&&(e.people=[])}finally{i===t&&(e.loading=!1)}};return e.addEventListener(`search`,r),()=>{t=-1,n?.abort(),e.removeEventListener(`search`,r),e.loading=!1}},[P,h,z]),u(`div`,{...e(`AppMentionInput`,o),className:`field${j?` ${j}`:``}`,children:[w&&u(`label`,{className:`label`,htmlFor:`${I}-text`,children:[w,D&&l(i,{}),O&&l(r,{label:k,children:O})]}),l(`wui-mention-input`,{ref:R,id:I,class:A?`wui-mention-input ${A}`:`wui-mention-input`,label:typeof w==`string`?w:void 0,placeholder:b||void 0,rows:String(y),name:S||void 0,remote:P?``:void 0,"min-chars":g==null?void 0:String(g),debounce:_==null?void 0:String(_),disabled:x?``:void 0,"aria-describedby":L,"aria-invalid":T?`true`:void 0,...N}),l(n,{error:T,hint:E,errorId:`${I}-error`,hintId:`${I}-hint`})]})});export{d as default};
@@ -1 +1 @@
1
- import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import t from"./warnInvalidValue.js";import n from"./warnUnknownProps.js";import r from"./AppIcon.js";import i from"../lib/FieldMessage.js";import a from"./AppInfoTip.js";import o from"./AppRequiredMark.js";import{forwardRef as s,useEffect as c,useId as l,useState as u}from"react";import{Form as d}from"react-bootstrap";import{jsx as f,jsxs as p}from"react/jsx-runtime";var m=[`sm`,`md`,`lg`],h=e=>{if(e===``||e===null)return null;let t=parseFloat(e);return Number.isNaN(t)?null:t},g=(e,t)=>t>0&&Number.isFinite(e)?e.toFixed(t):String(e??``),_=s(function(s,_){let{label:v,required:y=!1,error:b,hint:x,help:S,helpLabel:C=`More information`,value:w,onChange:T,min:E,max:D,step:O=1,precision:k=0,unit:A,size:j=`md`,id:M,name:N,className:P=``,fieldClassName:F=``,disabled:I=!1,"data-canvas":ee,...L}=s;n(`AppNumberInput`,L),t(`AppNumberInput`,`size`,j,m);let R=l(),z=M||R,B=e=>{if(k===0)return Math.round(e);let t=10**k;return Math.round(e*t)/t},V=e=>{let t=e;return typeof E==`number`&&(t=Math.max(t,E)),typeof D==`number`&&(t=Math.min(t,D)),t},H=e=>g(e,k),[U,W]=u(()=>H(w));c(()=>{W(e=>h(e)===(w??``)?e:g(w,k))},[w,k]);let G=e=>{let t=(h(U)??V(0))+e*O,n=V(B(t));W(H(n)),T?.(n)},K=h(U),q=I||K!==null&&typeof E==`number`&&K<=E,J=I||K!==null&&typeof D==`number`&&K>=D,Y=b&&z?`${z}-error`:void 0,X=x&&z?`${z}-hint`:void 0,Z=Y||X,Q=[`input`,j===`sm`?`input-sm`:``,j===`lg`?`input-lg`:``,b?`error`:``,`num-input`,P].filter(Boolean).join(` `),$=RegExp(`^${typeof E==`number`&&E>=0?``:`-?`}\\d*${k>0?`(\\.\\d*)?`:``}$`),te=e=>{let t=e.target.value;if(!$.test(t))return;W(t);let n=h(t);n!==null&&T?.(n)},ne=e=>{let t=h(e.target.value);if(t===null)W(``),T?.(``);else{let e=V(B(t));W(H(e)),T?.(e)}L.onBlur?.(e)},re=e=>{e.key===`ArrowUp`?(e.preventDefault(),G(1)):e.key===`ArrowDown`&&(e.preventDefault(),G(-1)),L.onKeyDown?.(e)},ie=f(d.Control,{...L,id:z,name:N,type:`text`,inputMode:k>0?`decimal`:`numeric`,className:Q,disabled:I,required:y,"aria-invalid":b?`true`:`false`,"aria-describedby":Z,value:U,ref:_,onChange:te,onBlur:ne,onKeyDown:re}),ae=p(`div`,{className:[`num-wrap`,j===`sm`?`num-wrap-sm`:``,j===`lg`?`num-wrap-lg`:``].filter(Boolean).join(` `),children:[f(`button`,{type:`button`,className:`num-btn`,"aria-label":`Decrease`,tabIndex:-1,disabled:q,onClick:()=>G(-1),children:f(r,{name:`minus`,size:16})}),ie,A&&f(`span`,{className:`affix`,children:A}),f(`button`,{type:`button`,className:`num-btn`,"aria-label":`Increase`,tabIndex:-1,disabled:J,onClick:()=>G(1),children:f(r,{name:`plus`,size:16})})]});return p(d.Group,{...e(`AppNumberInput`,s),className:`field${F?` ${F}`:``}`,children:[v&&p(d.Label,{className:`label`,htmlFor:z,children:[v,y&&f(o,{}),S&&f(a,{label:C,children:S})]}),ae,f(i,{error:b,hint:x,errorId:Y,hintId:X})]})});export{_ as default};
1
+ import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import t from"./warnInvalidValue.js";import n from"./warnUnknownProps.js";import r from"./AppIcon.js";import i from"../lib/FieldMessage.js";import a from"./AppInfoTip.js";import o from"./AppRequiredMark.js";import{forwardRef as s,useEffect as c,useId as l,useState as u}from"react";import{Form as d}from"react-bootstrap";import{jsx as f,jsxs as p}from"react/jsx-runtime";var m=[`sm`,`md`,`lg`],h=e=>{if(e===``||e===null)return null;let t=parseFloat(e);return Number.isNaN(t)?null:t},g=(e,t)=>t>0&&Number.isFinite(e)?e.toFixed(t):String(e??``),_=s(function(s,_){let{label:v,required:y=!1,error:b,hint:x,help:S,helpLabel:C=`More information`,value:w,onChange:T,min:E,max:D,step:O=1,precision:k=0,unit:A,size:j=`md`,id:M,name:N,className:P=``,fieldClassName:F=``,disabled:I=!1,"data-canvas":ee,...L}=s;n(`AppNumberInput`,L),t(`AppNumberInput`,`size`,j,m);let R=l(),z=M||R,B=e=>{if(k===0)return Math.round(e);let t=10**k;return Math.round(e*t)/t},V=e=>{let t=e;return typeof E==`number`&&(t=Math.max(t,E)),typeof D==`number`&&(t=Math.min(t,D)),t},H=e=>g(e,k),[U,W]=u(()=>H(w));c(()=>{W(e=>h(e)===(w??null)?e:g(w,k))},[w,k]);let G=e=>{let t=(h(U)??V(0))+e*O,n=V(B(t));W(H(n)),T?.(n)},K=h(U),q=I||K!==null&&typeof E==`number`&&K<=E,J=I||K!==null&&typeof D==`number`&&K>=D,Y=b&&z?`${z}-error`:void 0,X=x&&z?`${z}-hint`:void 0,Z=Y||X,Q=[`input`,j===`sm`?`input-sm`:``,j===`lg`?`input-lg`:``,b?`error`:``,`num-input`,P].filter(Boolean).join(` `),$=RegExp(`^${typeof E==`number`&&E>=0?``:`-?`}\\d*${k>0?`(\\.\\d*)?`:``}$`),te=e=>{let t=e.target.value;if(!$.test(t))return;W(t);let n=h(t);n!==null&&T?.(n)},ne=e=>{let t=h(e.target.value);if(t===null)W(``),T?.(null);else{let e=V(B(t));W(H(e)),T?.(e)}L.onBlur?.(e)},re=e=>{e.key===`ArrowUp`?(e.preventDefault(),G(1)):e.key===`ArrowDown`&&(e.preventDefault(),G(-1)),L.onKeyDown?.(e)},ie=f(d.Control,{...L,id:z,name:N,type:`text`,inputMode:k>0?`decimal`:`numeric`,className:Q,disabled:I,required:y,"aria-invalid":b?`true`:`false`,"aria-describedby":Z,value:U,ref:_,onChange:te,onBlur:ne,onKeyDown:re}),ae=p(`div`,{className:[`num-wrap`,j===`sm`?`num-wrap-sm`:``,j===`lg`?`num-wrap-lg`:``].filter(Boolean).join(` `),children:[f(`button`,{type:`button`,className:`num-btn`,"aria-label":`Decrease`,tabIndex:-1,disabled:q,onClick:()=>G(-1),children:f(r,{name:`minus`,size:16})}),ie,A&&f(`span`,{className:`affix`,children:A}),f(`button`,{type:`button`,className:`num-btn`,"aria-label":`Increase`,tabIndex:-1,disabled:J,onClick:()=>G(1),children:f(r,{name:`plus`,size:16})})]});return p(d.Group,{...e(`AppNumberInput`,s),className:`field${F?` ${F}`:``}`,children:[v&&p(d.Label,{className:`label`,htmlFor:z,children:[v,y&&f(o,{}),S&&f(a,{label:C,children:S})]}),ae,f(i,{error:b,hint:x,errorId:Y,hintId:X})]})});export{_ as default};
@@ -1 +1 @@
1
- import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import t from"./warnInvalidValue.js";import n from"./warnUnknownProps.js";import r,{SECTION_ALIGNS as i,SECTION_HEADINGS as a,SECTION_VARIANTS as o,sectionHeading as s}from"../lib/sectionShell.js";import{jsx as c}from"react/jsx-runtime";function l(l){let{title:u,as:d=`h1`,eyebrow:f,subtitle:p,align:m=`start`,variant:h=`default`,actions:g,media:_,className:v=``,...y}=l;return n(`AppSectionHero`,y),t(`AppSectionHero`,`as`,d,a),t(`AppSectionHero`,`align`,m,i),t(`AppSectionHero`,`variant`,h,o),c(r,{component:`AppSectionHero`,kind:`hero`,title:u,as:s(d,`h1`),eyebrow:f,subtitle:p,align:m,variant:h,actions:g,className:v,rest:{...e(`AppSectionHero`,l),...y},children:_!=null&&_!==!1&&c(`div`,{className:`wui-section-media`,children:_})})}export{l as default};
1
+ import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import t from"./warnInvalidValue.js";import n from"./warnUnknownProps.js";import r,{SECTION_ALIGNS as i,SECTION_EYEBROW_TONES as a,SECTION_HEADINGS as o,SECTION_VARIANTS as s,sectionHeading as c}from"../lib/sectionShell.js";import{jsx as l}from"react/jsx-runtime";function u(u){let{title:d,as:f=`h1`,eyebrow:p,subtitle:m,align:h=`start`,variant:g=`default`,eyebrowTone:_,actions:v,media:y,className:b=``,...x}=u;return n(`AppSectionHero`,x),t(`AppSectionHero`,`as`,f,o),t(`AppSectionHero`,`align`,h,i),t(`AppSectionHero`,`variant`,g,s),_!==void 0&&t(`AppSectionHero`,`eyebrowTone`,_,a),l(r,{component:`AppSectionHero`,kind:`hero`,title:d,as:c(f,`h1`),eyebrow:p,subtitle:m,align:h,variant:g,eyebrowTone:_,actions:v,className:b,rest:{...e(`AppSectionHero`,u),...x},children:y!=null&&y!==!1&&l(`div`,{className:`wui-section-media`,children:y})})}export{u as default};
@@ -1 +1 @@
1
- import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import t from"./warnInvalidValue.js";import n from"./warnUnknownProps.js";import ee from"../lib/FieldMessage.js";import r from"./AppInfoTip.js";import i from"./AppRequiredMark.js";import te from"./useNodeLabels.js";import a,{optionsEqual as o}from"./useWuiControl.js";import{forwardRef as s,useId as ne,useLayoutEffect as re,useRef as c}from"react";import{Fragment as l,jsx as u,jsxs as d}from"react/jsx-runtime";import"@webority/ui-elements/elements/select";var f=[`sm`,`lg`,`xl`],p=[`off`,`border`],m=(e,t)=>({value:e.value,label:t,icon:e.icon}),h=s(function(s,h){let{value:g,onChange:_,options:v=[],placeholder:y=`Select...`,searchPlaceholder:ie=`Search...`,searchable:ae=!1,clearable:oe=!1,size:b,icon:se,prefix:x,suffix:S,floatingLabel:C=`off`,disabled:w,label:T,required:E=!1,error:D,hint:O,help:k,helpLabel:A=`More information`,id:j,name:M,className:N=``,fieldClassName:P=``,"aria-label":F,"aria-labelledby":I,"aria-describedby":L,"data-canvas":ce,...R}=s;n(`AppSelect`,R),t(`AppSelect`,`size`,b,f),t(`AppSelect`,`floatingLabel`,C,p);let z=ne(),{setRef:B,innerRef:V}=a({ref:h,value:g??``,onChange:_}),{portal:H,toElementOptions:U}=te(v),W=c({el:null,options:null,map:null});re(()=>{let e=V.current;if(!e||W.current.el===e&&W.current.options===v&&W.current.map===U)return;W.current={el:e,options:v,map:U};let t=U(v,m);o(t,e.options)||(e.options=t)});let G=j||z,K=C!==`off`&&T,q=D&&G?`${G}-error`:void 0,J=O&&G?`${G}-hint`:void 0,le=q||J||L,Y=!K&&(x!=null||S!=null),X=!T&&!D&&!O,Z=e(`AppSelect`,s),Q=d(l,{children:[u(`wui-select`,{"aria-label":F||(typeof T==`string`?T:void 0),"aria-labelledby":I||void 0,"aria-describedby":le||void 0,"aria-invalid":D?`true`:void 0,ref:B,value:g||void 0,id:G,name:M,placeholder:C!==`off`&&T?` `:y,"search-placeholder":ie,searchable:ae?``:void 0,clearable:oe?``:void 0,size:b||void 0,icon:se||void 0,disabled:w?``:void 0,required:E?``:void 0,className:N||void 0,...X&&!Y?Z:null,...R}),H]}),$=Y?d(`div`,{...X?Z:null,className:`input-affixed`,children:[x!=null&&u(`span`,{className:`affix affix-pre`,children:x}),Q,S!=null&&u(`span`,{className:`affix affix-suf`,children:S})]}):Q;if(X)return $;let ue=[`field`,P].filter(Boolean).join(` `);return d(`div`,{...Z,className:ue,children:[T&&!K&&d(`label`,{className:`label`,htmlFor:G,children:[T,E&&u(i,{}),k&&u(r,{label:A,children:k})]}),K?d(`div`,{className:`field-float`,children:[Q,d(`label`,{className:`float-label`,htmlFor:G,children:[T,E&&u(i,{})]})]}):$,u(ee,{error:D,hint:O,errorId:q,hintId:J})]})});export{h as default};
1
+ import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import t from"./warnInvalidValue.js";import n from"./warnUnknownProps.js";import ee from"../lib/FieldMessage.js";import r from"./AppInfoTip.js";import i from"./AppRequiredMark.js";import te from"./useNodeLabels.js";import a,{optionsEqual as o}from"./useWuiControl.js";import{forwardRef as s,useId as ne,useLayoutEffect as re,useRef as c}from"react";import{Fragment as l,jsx as u,jsxs as d}from"react/jsx-runtime";import"@webority/ui-elements/elements/select";var f=[`sm`,`lg`,`xl`],p=[`off`,`border`,`above`],m=(e,t)=>({value:e.value,label:t,icon:e.icon}),h=s(function(s,h){let{value:g,onChange:_,options:v=[],placeholder:y=`Select...`,searchPlaceholder:ie=`Search...`,searchable:ae=!1,clearable:oe=!1,size:b,icon:se,prefix:x,suffix:S,floatingLabel:C=`off`,disabled:w,label:T,required:E=!1,error:D,hint:O,help:k,helpLabel:A=`More information`,id:j,name:M,className:N=``,fieldClassName:P=``,"aria-label":F,"aria-labelledby":I,"aria-describedby":L,"data-canvas":ce,...R}=s;n(`AppSelect`,R),t(`AppSelect`,`size`,b,f),t(`AppSelect`,`floatingLabel`,C,p);let z=ne(),{setRef:B,innerRef:V}=a({ref:h,value:g??``,onChange:_}),{portal:H,toElementOptions:U}=te(v),W=c({el:null,options:null,map:null});re(()=>{let e=V.current;if(!e||W.current.el===e&&W.current.options===v&&W.current.map===U)return;W.current={el:e,options:v,map:U};let t=U(v,m);o(t,e.options)||(e.options=t)});let G=j||z,K=C!==`off`&&T,q=D&&G?`${G}-error`:void 0,J=O&&G?`${G}-hint`:void 0,le=q||J||L,Y=!K&&(x!=null||S!=null),X=!T&&!D&&!O,Z=e(`AppSelect`,s),Q=d(l,{children:[u(`wui-select`,{"aria-label":F||(typeof T==`string`?T:void 0),"aria-labelledby":I||void 0,"aria-describedby":le||void 0,"aria-invalid":D?`true`:void 0,ref:B,value:g||void 0,id:G,name:M,placeholder:C!==`off`&&T?` `:y,"search-placeholder":ie,searchable:ae?``:void 0,clearable:oe?``:void 0,size:b||void 0,icon:se||void 0,disabled:w?``:void 0,required:E?``:void 0,className:N||void 0,...X&&!Y?Z:null,...R}),H]}),$=Y?d(`div`,{...X?Z:null,className:`input-affixed`,children:[x!=null&&u(`span`,{className:`affix affix-pre`,children:x}),Q,S!=null&&u(`span`,{className:`affix affix-suf`,children:S})]}):Q;if(X)return $;let ue=[`field`,P].filter(Boolean).join(` `);return d(`div`,{...Z,className:ue,children:[T&&!K&&d(`label`,{className:`label`,htmlFor:G,children:[T,E&&u(i,{}),k&&u(r,{label:A,children:k})]}),K?d(`div`,{className:C===`above`?`field-float wui-float-above`:`field-float`,children:[Q,d(`label`,{className:`float-label`,htmlFor:G,children:[T,E&&u(i,{})]})]}):$,u(ee,{error:D,hint:O,errorId:q,hintId:J})]})});export{h as default};
@@ -2,7 +2,7 @@
2
2
  "format": "webority-guidance/1",
3
3
  "package": {
4
4
  "name": "@webority/ui-react",
5
- "version": "0.93.0"
5
+ "version": "0.94.1"
6
6
  },
7
7
  "components": [
8
8
  {
@@ -2342,7 +2342,8 @@
2342
2342
  "The title is an h3 that takes focus when the dialog opens.",
2343
2343
  "A custom image is hidden from assistive technology with an empty alt, so the title and message carry the meaning.",
2344
2344
  "The confirm-phrase field is named \"Type <phrase> to confirm\", and Confirm stays disabled until the phrase matches.",
2345
- "While loading, Cancel is disabled and the backdrop and Escape no longer close the dialog."
2345
+ "While loading, Cancel is disabled and the backdrop and Escape no longer close the dialog.",
2346
+ "Children draw left-aligned between the message and the confirm-phrase field, so a field placed there keeps its own label."
2346
2347
  ]
2347
2348
  }
2348
2349
  },
@@ -1 +1 @@
1
- import{jsx as e,jsxs as t}from"react/jsx-runtime";var n=[`h1`,`h2`,`h3`,`h4`,`h5`,`h6`],r=[`start`,`center`],i=[`default`,`muted`];function a(e,t){return n.includes(e)?e:t}function o(e){return n[Math.min(n.indexOf(e)+1,5)]}function s({className:t,src:n,alt:r,width:i,height:a}){return e(`img`,{className:t,src:n,alt:r,width:i,height:a,loading:`lazy`,decoding:`async`})}function c({component:n,kind:r,title:i,as:a,eyebrow:o,subtitle:s,align:c,variant:l,actions:u,extraClass:d,className:f,rest:p,children:m}){if(i==null||i===``)throw Error(`${n} needs a title: every section opens with its heading.`);let h=a,g=p.id?`${p.id}-title`:void 0;return e(`section`,{className:[`wui-section`,`wui-section-${r}`,c===`center`?`wui-section-center`:``,l===`muted`?`wui-section-muted`:``,d,f].filter(Boolean).join(` `),"aria-labelledby":g,...p,children:t(`div`,{className:`wui-section-inner`,children:[t(`div`,{className:`wui-section-head`,children:[o!=null&&o!==``&&e(`div`,{className:`wui-section-eyebrow`,children:o}),e(h,{className:`wui-section-title`,id:g,children:i}),s!=null&&s!==``&&e(`p`,{className:`wui-section-subtitle`,children:s}),u!=null&&u!==!1&&e(`div`,{className:`wui-section-actions`,children:u})]}),m]})})}export{r as SECTION_ALIGNS,n as SECTION_HEADINGS,i as SECTION_VARIANTS,s as SectionImage,c as default,o as itemHeading,a as sectionHeading};
1
+ import{jsx as e,jsxs as t}from"react/jsx-runtime";var n=[`h1`,`h2`,`h3`,`h4`,`h5`,`h6`],r=[`start`,`center`],i=[`default`,`muted`],a=[`neutral`,`primary`,`success`,`warning`,`danger`,`info`];function o(e,t){return n.includes(e)?e:t}function s(e){return n[Math.min(n.indexOf(e)+1,5)]}function c({className:t,src:n,alt:r,width:i,height:a}){return e(`img`,{className:t,src:n,alt:r,width:i,height:a,loading:`lazy`,decoding:`async`})}function l({component:n,kind:r,title:i,as:o,eyebrow:s,subtitle:c,align:l,variant:u,eyebrowTone:d,actions:f,extraClass:p,className:m,rest:h,children:g}){if(i==null||i===``)throw Error(`${n} needs a title: every section opens with its heading.`);let _=o,v=h.id?`${h.id}-title`:void 0,y=a.includes(d);return e(`section`,{className:[`wui-section`,`wui-section-${r}`,l===`center`?`wui-section-center`:``,u===`muted`?`wui-section-muted`:``,p,m].filter(Boolean).join(` `),"aria-labelledby":v,...h,children:t(`div`,{className:`wui-section-inner`,children:[t(`div`,{className:`wui-section-head`,children:[s!=null&&s!==``&&e(`div`,{className:y?`wui-section-eyebrow wui-section-eyebrow-pill wui-section-eyebrow-${d}`:`wui-section-eyebrow`,children:s}),e(_,{className:`wui-section-title`,id:v,children:i}),c!=null&&c!==``&&e(`p`,{className:`wui-section-subtitle`,children:c}),f!=null&&f!==!1&&e(`div`,{className:`wui-section-actions`,children:f})]}),g]})})}export{r as SECTION_ALIGNS,a as SECTION_EYEBROW_TONES,n as SECTION_HEADINGS,i as SECTION_VARIANTS,c as SectionImage,l as default,s as itemHeading,o as sectionHeading};
@@ -1 +1 @@
1
- var e=`wui-shell-collapsed`;function t(t=e,n=document){for(let e of n.cookie.split(`;`)){let n=e.indexOf(`=`);if(n<0||e.slice(0,n).trim()!==t)continue;let r=e.slice(n+1).trim();return r===`1`||r!==`0`&&null}return null}function n(t,n=e,r=document){r.cookie=`${n}=${t?`1`:`0`}; Path=/; Max-Age=31536000; SameSite=Lax`}export{e as SHELL_COLLAPSED_COOKIE,t as readShellCollapsed,n as writeShellCollapsed};
1
+ var e=`wui-shell-collapsed`,t=e=>e instanceof DOMException&&e.name===`SecurityError`;function n(n=e,r=document){let i;try{i=r.cookie}catch(e){if(t(e))return null;throw e}for(let e of i.split(`;`)){let t=e.indexOf(`=`);if(t<0||e.slice(0,t).trim()!==n)continue;let r=e.slice(t+1).trim();return r===`1`||r!==`0`&&null}return null}function r(n,r=e,i=document){try{i.cookie=`${r}=${n?`1`:`0`}; Path=/; Max-Age=31536000; SameSite=Lax`}catch(e){if(!t(e))throw e}}export{e as SHELL_COLLAPSED_COOKIE,n as readShellCollapsed,r as writeShellCollapsed};
@@ -5,6 +5,7 @@
5
5
  * @param {boolean} props.open
6
6
  * @param {string} props.title
7
7
  * @param {import('react').ReactNode} [props.message]
8
+ * @param {import('react').ReactNode} [props.children] Extra content drawn between the message and the confirm-phrase field, such as a reason select or a note box.
8
9
  * @param {string} [props.confirmLabel]
9
10
  * @param {string} [props.cancelLabel]
10
11
  * @param {boolean} [props.danger]
@@ -27,6 +28,7 @@ export default function AppConfirmDialog(props: {
27
28
  title: string;
28
29
  /** The text that explains what the user is confirming. */
29
30
  message?: import('react').ReactNode;
31
+ children?: import('react').ReactNode;
30
32
  /**
31
33
  * The confirm button's text.
32
34
  * @default "Confirm"
@@ -6,7 +6,7 @@
6
6
  * surface reaches the same list through `<app-data-table src>`, which fetches HTML rows itself.
7
7
  *
8
8
  * @param {object} props
9
- * @param {object[]} props.columns
9
+ * @param {{ key: string, label: import('react').ReactNode, sortable?: boolean, align?: 'end'|'num'|'center', width?: string|number, minWidth?: string|number, nowrap?: boolean, cellClassName?: string, cellStyle?: object, hideable?: boolean, pin?: 'start'|'end', grow?: boolean }[]} props.columns
10
10
  * @param {object[]} props.rows
11
11
  * @param {(row: object, index: number) => string|number} [props.rowKey]
12
12
  * @param {{ key: string, dir: "asc"|"desc" }} [props.sort]
@@ -74,7 +74,20 @@
74
74
  */
75
75
  export default function AppDataTable(props: {
76
76
  /** The columns, each an object with a key and a label, plus optional settings such as sortable, hideable, pin, align and grow. */
77
- columns: object[];
77
+ columns: {
78
+ key: string;
79
+ label: import('react').ReactNode;
80
+ sortable?: boolean;
81
+ align?: 'end' | 'num' | 'center';
82
+ width?: string | number;
83
+ minWidth?: string | number;
84
+ nowrap?: boolean;
85
+ cellClassName?: string;
86
+ cellStyle?: object;
87
+ hideable?: boolean;
88
+ pin?: 'start' | 'end';
89
+ grow?: boolean;
90
+ }[];
78
91
  /** The row objects shown in the table, one per row, read through each column's key. */
79
92
  rows: object[];
80
93
  rowKey?: (row: object, index: number) => string | number;
@@ -1,7 +1,7 @@
1
1
  declare const AppNumberInput: import("react").ForwardRefExoticComponent<{
2
- /** The current number. Leave it unset for an empty field. */
3
- value?: number;
4
- onChange?: (next: number | '') => void;
2
+ /** The current number; null or unset for an empty field. */
3
+ value?: number | null;
4
+ onChange?: (next: number | null) => void;
5
5
  /** The label above the field. A required field shows a required mark after it. */
6
6
  label?: import('react').ReactNode;
7
7
  /**
@@ -15,6 +15,7 @@
15
15
  * @param {import('react').ReactNode} [props.subtitle]
16
16
  * @param {"start"|"center"} [props.align]
17
17
  * @param {"default"|"muted"} [props.variant]
18
+ * @param {"neutral"|"primary"|"success"|"warning"|"danger"|"info"} [props.eyebrowTone] Draws the eyebrow as a pill in this tone; unset keeps plain text.
18
19
  * @param {import('react').ReactNode} [props.actions]
19
20
  * @param {import('react').ReactNode} [props.media]
20
21
  * @param {string} [props.className]
@@ -41,6 +42,8 @@ export default function AppSectionHero(props: {
41
42
  * @default "default"
42
43
  */
43
44
  variant?: "default" | "muted";
45
+ /** Draws the eyebrow as a pill in this tone; unset keeps plain text. */
46
+ eyebrowTone?: "neutral" | "primary" | "success" | "warning" | "danger" | "info";
44
47
  /** The calls to action, usually one or two `AppButton`s. */
45
48
  actions?: import('react').ReactNode;
46
49
  /** An `<img>` with `width` and `height`, beside the copy. */
@@ -52,10 +52,10 @@ declare const AppSelect: import("react").ForwardRefExoticComponent<{
52
52
  /** Icon name shown in the control. */
53
53
  icon?: string;
54
54
  /**
55
- * Where the label rests. Off keeps it above the control. Border sits the label inside as a placeholder, then slides it onto the top border on focus or once a value is chosen. Needs label.
55
+ * Where the label rests. Off keeps it above the control. Border sits the label inside as a placeholder, then slides it onto the top border on focus or once a value is chosen. Above rests it above the box, clear of the border. Needs label.
56
56
  * @default "off"
57
57
  */
58
- floatingLabel?: "off" | "border";
58
+ floatingLabel?: "off" | "border" | "above";
59
59
  /** Disables the control. */
60
60
  disabled?: boolean;
61
61
  /** The visible field label. */
@@ -1,3 +1,4 @@
1
+ export { mentionedIds, parseMentionValue } from "@webority/ui-elements/elements/mention-input";
1
2
  export { createLocalSeenStore } from "@webority/ui-elements/elements/tour";
2
3
  export { postedMasked, themeBootScript } from "@webority/ui-elements/helpers";
3
4
  export { default as AppAccordion } from "./components/AppAccordion.jsx";
@@ -1,6 +1,7 @@
1
1
  export declare const SECTION_HEADINGS: string[];
2
2
  export declare const SECTION_ALIGNS: string[];
3
3
  export declare const SECTION_VARIANTS: string[];
4
+ export declare const SECTION_EYEBROW_TONES: string[];
4
5
  /** The heading tag for the section title: `as` when it is a heading, otherwise the section's default. */
5
6
  export declare function sectionHeading(as: any, fallback: any): any;
6
7
  /** The level under a section title, for an item's title (h2 gives h3; h6 stays h6). */
@@ -26,7 +27,7 @@ export declare function SectionImage({ className, src, alt, width, height }: {
26
27
  * a generated one would differ from Razor's on every render.
27
28
  * @internal not exported from the package barrel
28
29
  */
29
- export default function SectionShell({ component, kind, title, as, eyebrow, subtitle, align, variant, actions, extraClass, className, rest, children, }: {
30
+ export default function SectionShell({ component, kind, title, as, eyebrow, subtitle, align, variant, eyebrowTone, actions, extraClass, className, rest, children, }: {
30
31
  actions: any;
31
32
  align: any;
32
33
  as: any;
@@ -35,6 +36,7 @@ export default function SectionShell({ component, kind, title, as, eyebrow, subt
35
36
  component: any;
36
37
  extraClass: any;
37
38
  eyebrow: any;
39
+ eyebrowTone: any;
38
40
  kind: any;
39
41
  rest: any;
40
42
  subtitle: any;
@@ -1,6 +1,6 @@
1
1
  /** Default cookie name (AppShellTagHelper.CollapsedCookie). */
2
2
  export declare const SHELL_COLLAPSED_COOKIE = "wui-shell-collapsed";
3
- /** true / false from the cookie ("1" / "0"), or null when it is absent or holds anything else. */
3
+ /** true / false from the cookie ("1" / "0"), or null when it is absent, holds anything else or cannot be read. */
4
4
  export declare function readShellCollapsed(name?: string, doc?: Document): boolean;
5
- /** Remember the rail state for a year, site-wide. */
5
+ /** Remember the rail state for a year, site-wide; a frame without cookie access remembers nothing. */
6
6
  export declare function writeShellCollapsed(collapsed: any, name?: string, doc?: Document): void;
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/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/AppMarkdown.js";import Re from"./components/AppMentionInput.js";import ze from"./components/AppMenubar.js";import Be from"./components/AppMeter.js";import Ve from"./components/AppMetricStrip.js";import He from"./components/AppNavigationMenu.js";import Ue from"./components/AppNotificationCenter.js";import We from"./components/AppNumberInput.js";import Ge from"./components/AppOnboardingChecklist.js";import Ke from"./components/AppOtpInput.js";import qe from"./components/AppPageHeader.js";import Je from"./components/AppPagination.js";import Ye from"./components/AppPhoneNumberInput.js";import Xe from"./components/AppPricingCard.js";import Ze from"./components/AppQrCode.js";import Qe from"./components/AppRadio.js";import $e from"./components/AppRadioGroup.js";import et from"./components/AppRating.js";import tt from"./components/AppRecordPager.js";import nt from"./components/AppRelativeTime.js";import rt from"./components/AppRepeater.js";import it from"./components/AppResizable.js";import at from"./components/AppResizableHandle.js";import ot from"./components/AppResizablePanel.js";import st from"./components/AppResourceCard.js";import ct from"./components/AppResult.js";import lt from"./components/AppRichText.js";import ut from"./components/AppRollingNumber.js";import dt from"./components/AppRouteError.js";import ft from"./components/AppScoreScale.js";import pt from"./components/AppScrollbar.js";import mt from"./components/AppSectionCallToAction.js";import ht from"./components/AppSectionFaq.js";import gt from"./components/AppSectionFeatures.js";import _t from"./components/AppSectionHero.js";import vt from"./components/AppSectionLogos.js";import yt from"./components/AppSectionPricing.js";import bt from"./components/AppSectionTestimonials.js";import xt from"./components/AppShell.js";import St from"./components/AppShortcutLegend.js";import Ct from"./components/AppShowMore.js";import wt from"./components/AppSidebarMenu.js";import Tt from"./components/AppSlider.js";import Et from"./components/AppSortableList.js";import Dt from"./components/AppSplash.js";import Ot from"./components/AppSplitButton.js";import kt from"./components/AppSplitView.js";import At from"./components/AppStatusBadge.js";import jt from"./components/AppStepper.js";import Mt from"./components/AppTableEmptyState.js";import Nt from"./components/AppTableToolbar.js";import Pt from"./components/AppTabs.js";import Ft from"./components/AppTagInput.js";import It from"./components/AppTextarea.js";import Lt from"./components/AppThemeToggle.js";import Rt from"./components/AppTimeline.js";import zt from"./components/AppTimePicker.js";import Bt from"./components/AppToast.js";import Vt from"./components/AppToolbar.js";import Ht from"./components/AppTour.js";import Ut from"./components/AppTreeView.js";import Wt from"./components/AppTruncate.js";import Gt from"./components/AppUpdateBar.js";import Kt from"./components/AppWhatsNew.js";import qt from"./components/AppWizard.js";import Jt from"./components/AppWorkspaceSwitcher.js";import{useCommandPaletteShortcut as Yt}from"./lib/useCommandPaletteShortcut.js";import{useFloatingStack as Xt}from"./lib/useFloatingStack.js";import{useListQuery as Zt}from"./lib/useListQuery.js";import{useListShortcuts as Qt}from"./lib/useListShortcuts.js";import{usePagination as $t}from"./lib/usePagination.js";import{useTableView as en}from"./lib/useTableView.js";import{createLocalSeenStore as tn}from"@webority/ui-elements/elements/tour";import{postedMasked as nn,themeBootScript as rn}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 AppMarkdown,Re as AppMentionInput,ze as AppMenubar,Be as AppMeter,Ve as AppMetricStrip,_ as AppModal,me as AppMultiSelect,He as AppNavigationMenu,Ue as AppNotificationCenter,We as AppNumberInput,Ge as AppOnboardingChecklist,Ke as AppOtpInput,qe as AppPageHeader,Je as AppPagination,Ye as AppPhoneNumberInput,d as AppPopover,Xe as AppPricingCard,l as AppProgress,Ze as AppQrCode,Qe as AppRadio,$e as AppRadioGroup,et as AppRating,tt as AppRecordPager,nt as AppRelativeTime,rt as AppRepeater,p as AppRequiredMark,it as AppResizable,at as AppResizableHandle,ot as AppResizablePanel,st as AppResourceCard,ct as AppResult,lt as AppRichText,ut as AppRollingNumber,dt as AppRouteError,ft as AppScoreScale,pt as AppScrollbar,he as AppSearch,mt as AppSectionCallToAction,ht as AppSectionFaq,gt as AppSectionFeatures,_t as AppSectionHero,vt as AppSectionLogos,yt as AppSectionPricing,bt as AppSectionTestimonials,O as AppSegmented,ge as AppSelect,$ as AppSelectMini,xt as AppShell,St as AppShortcutLegend,Ct as AppShowMore,wt as AppSidebarMenu,Z as AppSkeleton,Q as AppSkeletonRows,Tt as AppSlider,Et as AppSortableList,Me as AppSparkline,R as AppSpinner,Dt as AppSplash,Ot as AppSplitButton,kt as AppSplitView,At as AppStatusBadge,jt as AppStepper,_e as AppSwitch,Mt as AppTableEmptyState,ee as AppTablePagination,Nt as AppTableToolbar,Pt as AppTabs,Ft as AppTagInput,It as AppTextarea,Lt as AppThemeToggle,zt as AppTimePicker,Rt as AppTimeline,Bt as AppToast,Vt as AppToolbar,e as AppTooltip,Ht as AppTour,Ut as AppTreeView,Wt as AppTruncate,Gt as AppUpdateBar,Kt as AppWhatsNew,qt as AppWizard,Jt as AppWorkspaceSwitcher,U as MODAL_ICONS,fe as buildListQuery,tn as createLocalSeenStore,De as dismissAll,Oe as errorToast,n as iconNames,pe as parseListQuery,nn as postedMasked,r as registerIcons,rn as themeBootScript,ke as toast,Yt as useCommandPaletteShortcut,Xt as useFloatingStack,Zt as useListQuery,Qt as useListShortcuts,$t as usePagination,en 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/AppMarkdown.js";import Re from"./components/AppMentionInput.js";import ze from"./components/AppMenubar.js";import Be from"./components/AppMeter.js";import Ve from"./components/AppMetricStrip.js";import He from"./components/AppNavigationMenu.js";import Ue from"./components/AppNotificationCenter.js";import We from"./components/AppNumberInput.js";import Ge from"./components/AppOnboardingChecklist.js";import Ke from"./components/AppOtpInput.js";import qe from"./components/AppPageHeader.js";import Je from"./components/AppPagination.js";import Ye from"./components/AppPhoneNumberInput.js";import Xe from"./components/AppPricingCard.js";import Ze from"./components/AppQrCode.js";import Qe from"./components/AppRadio.js";import $e from"./components/AppRadioGroup.js";import et from"./components/AppRating.js";import tt from"./components/AppRecordPager.js";import nt from"./components/AppRelativeTime.js";import rt from"./components/AppRepeater.js";import it from"./components/AppResizable.js";import at from"./components/AppResizableHandle.js";import ot from"./components/AppResizablePanel.js";import st from"./components/AppResourceCard.js";import ct from"./components/AppResult.js";import lt from"./components/AppRichText.js";import ut from"./components/AppRollingNumber.js";import dt from"./components/AppRouteError.js";import ft from"./components/AppScoreScale.js";import pt from"./components/AppScrollbar.js";import mt from"./components/AppSectionCallToAction.js";import ht from"./components/AppSectionFaq.js";import gt from"./components/AppSectionFeatures.js";import _t from"./components/AppSectionHero.js";import vt from"./components/AppSectionLogos.js";import yt from"./components/AppSectionPricing.js";import bt from"./components/AppSectionTestimonials.js";import xt from"./components/AppShell.js";import St from"./components/AppShortcutLegend.js";import Ct from"./components/AppShowMore.js";import wt from"./components/AppSidebarMenu.js";import Tt from"./components/AppSlider.js";import Et from"./components/AppSortableList.js";import Dt from"./components/AppSplash.js";import Ot from"./components/AppSplitButton.js";import kt from"./components/AppSplitView.js";import At from"./components/AppStatusBadge.js";import jt from"./components/AppStepper.js";import Mt from"./components/AppTableEmptyState.js";import Nt from"./components/AppTableToolbar.js";import Pt from"./components/AppTabs.js";import Ft from"./components/AppTagInput.js";import It from"./components/AppTextarea.js";import Lt from"./components/AppThemeToggle.js";import Rt from"./components/AppTimeline.js";import zt from"./components/AppTimePicker.js";import Bt from"./components/AppToast.js";import Vt from"./components/AppToolbar.js";import Ht from"./components/AppTour.js";import Ut from"./components/AppTreeView.js";import Wt from"./components/AppTruncate.js";import Gt from"./components/AppUpdateBar.js";import Kt from"./components/AppWhatsNew.js";import qt from"./components/AppWizard.js";import Jt from"./components/AppWorkspaceSwitcher.js";import{useCommandPaletteShortcut as Yt}from"./lib/useCommandPaletteShortcut.js";import{useFloatingStack as Xt}from"./lib/useFloatingStack.js";import{useListQuery as Zt}from"./lib/useListQuery.js";import{useListShortcuts as Qt}from"./lib/useListShortcuts.js";import{usePagination as $t}from"./lib/usePagination.js";import{useTableView as en}from"./lib/useTableView.js";import{mentionedIds as tn,parseMentionValue as nn}from"@webority/ui-elements/elements/mention-input";import{createLocalSeenStore as rn}from"@webority/ui-elements/elements/tour";import{postedMasked as an,themeBootScript as on}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 AppMarkdown,Re as AppMentionInput,ze as AppMenubar,Be as AppMeter,Ve as AppMetricStrip,_ as AppModal,me as AppMultiSelect,He as AppNavigationMenu,Ue as AppNotificationCenter,We as AppNumberInput,Ge as AppOnboardingChecklist,Ke as AppOtpInput,qe as AppPageHeader,Je as AppPagination,Ye as AppPhoneNumberInput,d as AppPopover,Xe as AppPricingCard,l as AppProgress,Ze as AppQrCode,Qe as AppRadio,$e as AppRadioGroup,et as AppRating,tt as AppRecordPager,nt as AppRelativeTime,rt as AppRepeater,p as AppRequiredMark,it as AppResizable,at as AppResizableHandle,ot as AppResizablePanel,st as AppResourceCard,ct as AppResult,lt as AppRichText,ut as AppRollingNumber,dt as AppRouteError,ft as AppScoreScale,pt as AppScrollbar,he as AppSearch,mt as AppSectionCallToAction,ht as AppSectionFaq,gt as AppSectionFeatures,_t as AppSectionHero,vt as AppSectionLogos,yt as AppSectionPricing,bt as AppSectionTestimonials,O as AppSegmented,ge as AppSelect,$ as AppSelectMini,xt as AppShell,St as AppShortcutLegend,Ct as AppShowMore,wt as AppSidebarMenu,Z as AppSkeleton,Q as AppSkeletonRows,Tt as AppSlider,Et as AppSortableList,Me as AppSparkline,R as AppSpinner,Dt as AppSplash,Ot as AppSplitButton,kt as AppSplitView,At as AppStatusBadge,jt as AppStepper,_e as AppSwitch,Mt as AppTableEmptyState,ee as AppTablePagination,Nt as AppTableToolbar,Pt as AppTabs,Ft as AppTagInput,It as AppTextarea,Lt as AppThemeToggle,zt as AppTimePicker,Rt as AppTimeline,Bt as AppToast,Vt as AppToolbar,e as AppTooltip,Ht as AppTour,Ut as AppTreeView,Wt as AppTruncate,Gt as AppUpdateBar,Kt as AppWhatsNew,qt as AppWizard,Jt as AppWorkspaceSwitcher,U as MODAL_ICONS,fe as buildListQuery,rn as createLocalSeenStore,De as dismissAll,Oe as errorToast,n as iconNames,tn as mentionedIds,pe as parseListQuery,nn as parseMentionValue,an as postedMasked,r as registerIcons,on as themeBootScript,ke as toast,Yt as useCommandPaletteShortcut,Xt as useFloatingStack,Zt as useListQuery,Qt as useListShortcuts,$t as usePagination,en as useTableView};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webority/ui-react",
3
- "version": "0.93.0",
3
+ "version": "0.94.1",
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",
@@ -29,8 +29,8 @@
29
29
  },
30
30
  "sideEffects": false,
31
31
  "dependencies": {
32
- "@webority/theme": "0.93.0",
33
- "@webority/ui-elements": "0.93.0"
32
+ "@webority/theme": "0.94.1",
33
+ "@webority/ui-elements": "0.94.1"
34
34
  },
35
35
  "peerDependencies": {
36
36
  "@webority/analytics": "^0.26.0",
@@ -56,8 +56,8 @@
56
56
  "typescript": "^7.0.2",
57
57
  "vite": "^8.0.12",
58
58
  "vitest": "5.0.1",
59
- "@webority/tokens": "0.93.0",
60
- "@webority/canvas-kit": "0.93.0"
59
+ "@webority/tokens": "0.94.1",
60
+ "@webority/canvas-kit": "0.94.1"
61
61
  },
62
62
  "scripts": {
63
63
  "build": "vite build && tsc -p tsconfig.json && node ../../scripts/inject-meta-docs.mjs && node ../canvas-kit/dist/cli.js build --config canvas-kit.json --out dist/canvas-kit && node ../canvas-kit/dist/cli.js guidance --config canvas-kit.json --out dist/guidance.json && node ../../scripts/sync-rcl-assets.mjs analytics",