@webority/ui-react 0.99.0 → 0.100.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,7 +2,7 @@
2
2
  "kind": "WeborityWeb",
3
3
  "library": {
4
4
  "name": "@webority/ui-react",
5
- "version": "0.99.0"
5
+ "version": "0.100.0"
6
6
  },
7
7
  "rendererProtocolVersion": 7,
8
8
  "platform": "Web",
@@ -2045,6 +2045,12 @@
2045
2045
  "required": false,
2046
2046
  "description": "Emphasis level.",
2047
2047
  "default": "primary"
2048
+ },
2049
+ {
2050
+ "name": "vibrate",
2051
+ "type": "any",
2052
+ "required": false,
2053
+ "description": "Phones only: true buzzes 10 ms on a tap, or a whole number of milliseconds from 1 to 100. Not applied while disabled or loading; ignored where the browser has no vibration."
2048
2054
  }
2049
2055
  ],
2050
2056
  "itemsTakeAction": [],
@@ -9783,6 +9789,13 @@
9783
9789
  "required": false,
9784
9790
  "description": "The form field name."
9785
9791
  },
9792
+ {
9793
+ "name": "optional",
9794
+ "type": "boolean",
9795
+ "required": false,
9796
+ "description": "Ends the label with (optional) when the field is not required. Required wins when both are set.",
9797
+ "default": false
9798
+ },
9786
9799
  {
9787
9800
  "name": "passwordPolicy",
9788
9801
  "type": "object",
@@ -19174,6 +19187,67 @@
19174
19187
  ]
19175
19188
  }
19176
19189
  },
19190
+ {
19191
+ "name": "AppSkeletonLines",
19192
+ "marker": "AppSkeletonLines",
19193
+ "acceptsChildren": false,
19194
+ "props": [
19195
+ {
19196
+ "name": "className",
19197
+ "type": "string",
19198
+ "required": false,
19199
+ "description": "Extra class names added to the wrapper.",
19200
+ "default": ""
19201
+ },
19202
+ {
19203
+ "name": "lastLineWidth",
19204
+ "type": "string",
19205
+ "required": false,
19206
+ "description": "Width of the last line as a CSS length string, such as 60% or 12rem. The other lines are full width.",
19207
+ "default": "60%"
19208
+ },
19209
+ {
19210
+ "name": "lines",
19211
+ "type": "number",
19212
+ "required": false,
19213
+ "description": "How many lines to draw, an integer from 1 to 12. Any other value renders the default and warns.",
19214
+ "default": 3
19215
+ }
19216
+ ],
19217
+ "itemsTakeAction": [],
19218
+ "takesAction": [],
19219
+ "source": "@webority/ui-react",
19220
+ "usage": {
19221
+ "when": [
19222
+ "A paragraph of text is loading and the page should hold its shape.",
19223
+ "A card or a description is waiting for its first data."
19224
+ ],
19225
+ "whenNot": [
19226
+ {
19227
+ "text": "A single bar stands in for one element, such as a heading or a value.",
19228
+ "instead": "AppSkeleton"
19229
+ },
19230
+ {
19231
+ "text": "A table is loading its first page.",
19232
+ "instead": "AppSkeletonRows"
19233
+ },
19234
+ {
19235
+ "text": "The data loaded but the result set is empty.",
19236
+ "instead": "AppEmptyState"
19237
+ },
19238
+ {
19239
+ "text": "The whole page is blocked on a single request.",
19240
+ "instead": "a page-level spinner"
19241
+ }
19242
+ ],
19243
+ "do": [],
19244
+ "dont": [],
19245
+ "a11y": [
19246
+ "The wrapper is aria-hidden, so screen readers skip the placeholder lines.",
19247
+ "The lines have no role and take no focus."
19248
+ ]
19249
+ }
19250
+ },
19177
19251
  {
19178
19252
  "name": "AppSkeletonRows",
19179
19253
  "marker": null,
@@ -22257,6 +22331,13 @@
22257
22331
  "required": false,
22258
22332
  "description": "The field name the text posts under."
22259
22333
  },
22334
+ {
22335
+ "name": "optional",
22336
+ "type": "boolean",
22337
+ "required": false,
22338
+ "description": "Ends the label with (optional) when the field is not required. Required wins when both are set.",
22339
+ "default": false
22340
+ },
22260
22341
  {
22261
22342
  "name": "placeholder",
22262
22343
  "type": "string",
@@ -24665,7 +24746,6 @@
24665
24746
  "card",
24666
24747
  "drawer",
24667
24748
  "modal",
24668
- "overlay",
24669
24749
  "popover"
24670
24750
  ],
24671
24751
  "font": [
@@ -25251,13 +25331,6 @@
25251
25331
  "color": "rgba(7, 20, 55, 0.28)",
25252
25332
  "elevation": 12
25253
25333
  },
25254
- "overlay": {
25255
- "x": 0,
25256
- "y": 24,
25257
- "blur": 60,
25258
- "spread": -16,
25259
- "color": "rgba(7, 20, 55, 0.28)"
25260
- },
25261
25334
  "popover": {
25262
25335
  "x": 0,
25263
25336
  "y": 8,
@@ -1,21 +1,21 @@
1
1
  {
2
2
  "name": "webority-web",
3
- "version": "0.99.0",
3
+ "version": "0.100.0",
4
4
  "platform": "Web",
5
5
  "kitModuleVersion": 2,
6
6
  "rendererProtocolVersion": 7,
7
7
  "library": {
8
8
  "name": "@webority/ui-react",
9
- "version": "0.99.0"
9
+ "version": "0.100.0"
10
10
  },
11
11
  "files": {
12
12
  "manifest.json": {
13
- "sha256": "7180779193cea71a33c29bc0e19db62b99b3d753367063a3882ec4bcaaf34464",
14
- "bytes": 841333
13
+ "sha256": "cabf45aeafb33cbf781c41577631fe816445103148b4f1be0388684cb02100ea",
14
+ "bytes": 843941
15
15
  },
16
16
  "kit.js": {
17
- "sha256": "becd4964e26fc1aa0c09323c29372907bbafa6e8b35810ba33db1179e9381e11",
18
- "bytes": 10859956
17
+ "sha256": "b76e8f678745673c055adb08c7c64d8c1f088a3f329260bcf9c901fb3f4de710",
18
+ "bytes": 10863245
19
19
  },
20
20
  "kit.css": {
21
21
  "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
@@ -1 +1 @@
1
- import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import t from"./warnInvalidValue.js";import n from"./warnUnknownProps.js";import{shortcutAria as r,shortcutChip as i}from"../lib/shortcutChip.js";import a from"./withTooltip.js";import o from"./AppIcon.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`};function d(e){return`btn-${u[e]??`primary`}`}var f={sm:14,md:16,lg:20},p=[`sheen`,`fill`,`expand`,`glow`,`roll`,`none`],m=[`rounded`,`pill`,`sharp`],h=[`button`,`submit`,`reset`],g=[`linear`,`outline`,`bold`,`bulk`,`broken`,`twotone`],_=e=>e===`pill`||e===`sharp`?`wui-btn-shape-${e}`:``;function v(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 y(e,t,n,r){if(!e)return null;let i=n=>typeof e==`string`?c(o,{name:e,size:f[t]??f.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 b(e,t,n,r){if(!e)return null;let i=t===`left`?`me-2`:`ms-2`;return typeof e==`string`?c(o,{name:e,size:f[n]??f.md,variant:r,className:i}):c(`span`,{className:`d-inline-flex ${i}`,children:e})}function x(e,t,n){return e?c(`span`,{className:`wui-btn-pin-icon`,"aria-hidden":`true`,children:typeof e==`string`?c(o,{name:e,size:f[t]??f.md,variant:n}):e}):null}function S(o){let{children:d,variant:S=`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}=o;n(`AppButton`,B),F!==void 0&&t(`AppButton`,`animation`,F,p);let V=F===`roll`&&!j,H=I&&k!=null&&k!==``&&!j&&!T;if(t(`AppButton`,`variant`,S,Object.keys(u)),t(`AppButton`,`size`,C,Object.keys(f)),t(`AppButton`,`shape`,L,m),t(`AppButton`,`type`,w,h),R!==void 0&&t(`AppButton`,`iconVariant`,R,g),j){let t=[`btn`,`btn-${u[S]??`primary`}`,C===`sm`?`btn-sm`:C===`lg`?`btn-lg`:``,D?`w-100`:``,_(L),`btn-static`,z].filter(Boolean).join(` `),{onClick:n,...r}=B;return a(l(`span`,{className:t,...e(`AppButton`,o),...r,children:[b(O,`left`,C,R),d,b(k,`right`,C,R)]}),M,N)}let U=[D?`w-100`:``,T?`is-loading`:``,F&&p.includes(F)?`btn-anim-${F}`:``,H?`wui-btn-pin-end`:``,_(L),z].filter(Boolean).join(` `),W=(B.as===void 0||B.as===`button`)&&A===void 0&&B.to===void 0,G=W?{}:{role:void 0,tabIndex:E||T?-1:void 0},K=M!=null&&M!==``;return a(l(s,{type:W?w:void 0,href:A,variant:u[S]??`primary`,size:C===`md`?void 0:C,disabled:E||T,"aria-busy":T||void 0,"aria-keyshortcuts":r(P),className:U||void 0,...G,...e(`AppButton`,o),...B,children:[T&&c(`span`,{className:`spinner-border spinner-border-sm me-2`,"aria-hidden":`true`}),!T&&b(O,`left`,C,R),V?v(d):d,!T&&(V?y(k,C,H,R):H?x(k,C,R):b(k,`right`,C,R)),!K&&i(P)]}),M,N,P)}export{d as buttonVariantClass,S as default};
1
+ import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import t from"./warnInvalidValue.js";import n from"./warnUnknownProps.js";import{shortcutAria as r,shortcutChip as i}from"../lib/shortcutChip.js";import a from"./withTooltip.js";import o from"./AppIcon.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`};function d(e){return`btn-${u[e]??`primary`}`}var f={sm:14,md:16,lg:20},p=[`sheen`,`fill`,`expand`,`glow`,`roll`,`none`],m=[`rounded`,`pill`,`sharp`],h=[`button`,`submit`,`reset`],g=new Set([!0,!1,...Array.from({length:100},(e,t)=>t+1)]),_=[`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(o,{name:e,size:f[t]??f.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(o,{name:e,size:f[n]??f.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(o,{name:e,size:f[t]??f.md,variant:n}):e}):null}function C(o){let{children:d,variant:C=`primary`,size:w=`md`,type:T=`button`,loading:E=!1,disabled:D=!1,block:O=!1,leftIcon:k=null,rightIcon:A=null,href:j,static:M=!1,tooltip:N,tooltipPlacement:P,shortcut:F,animation:I,pinRightIcon:L=!1,shape:R=`rounded`,iconVariant:z,className:B=``,onClick:V,vibrate:H,...U}=o;n(`AppButton`,U),t(`AppButton`,`vibrate`,H,g);let W=H===!0?10:Number.isInteger(H)&&H>=1&&H<=100?H:0;I!==void 0&&t(`AppButton`,`animation`,I,p);let G=I===`roll`&&!M,K=L&&A!=null&&A!==``&&!M&&!E;if(t(`AppButton`,`variant`,C,Object.keys(u)),t(`AppButton`,`size`,w,Object.keys(f)),t(`AppButton`,`shape`,R,m),t(`AppButton`,`type`,T,h),z!==void 0&&t(`AppButton`,`iconVariant`,z,_),M)return a(l(`span`,{className:[`btn`,`btn-${u[C]??`primary`}`,w===`sm`?`btn-sm`:w===`lg`?`btn-lg`:``,O?`w-100`:``,v(R),`btn-static`,B].filter(Boolean).join(` `),...e(`AppButton`,o),...U,children:[x(k,`left`,w,z),d,x(A,`right`,w,z)]}),N,P);let q=[O?`w-100`:``,E?`is-loading`:``,I&&p.includes(I)?`btn-anim-${I}`:``,K?`wui-btn-pin-end`:``,v(R),B].filter(Boolean).join(` `),J=(U.as===void 0||U.as===`button`)&&j===void 0&&U.to===void 0,Y=J?{}:{role:void 0,tabIndex:D||E?-1:void 0},X=N!=null&&N!==``,Z=W?e=>{!D&&!E&&navigator.vibrate?.(W),V?.(e)}:V;return a(l(s,{type:J?T:void 0,href:j,variant:u[C]??`primary`,size:w===`md`?void 0:w,disabled:D||E,"aria-busy":E||void 0,"aria-keyshortcuts":r(F),"data-wui-vibrate":W||void 0,className:q||void 0,onClick:Z,...Y,...e(`AppButton`,o),...U,children:[E&&c(`span`,{className:`spinner-border spinner-border-sm me-2`,"aria-hidden":`true`}),!E&&x(k,`left`,w,z),G?y(d):d,!E&&(G?b(A,w,K,z):K?S(A,w,z):x(A,`right`,w,z)),!X&&i(F)]}),N,P,F)}export{d as buttonVariantClass,C 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 ee from"../lib/FieldMessage.js";import te from"./AppPopover.js";import ne from"./AppInfoTip.js";import i from"./AppRequiredMark.js";import{MASK_INPUT_TYPES as re,MASK_NAMES as ie,attachInputMask as ae,evaluatePassword as oe,formatMasked as a,isMaskPattern as se,postedMasked as ce}from"@webority/ui-elements/helpers";import{forwardRef as o,useEffect as s,useId as le,useRef as c,useState as l}from"react";import{Form as u}from"react-bootstrap";import{jsx as d,jsxs as f}from"react/jsx-runtime";var ue=[`sm`,`md`,`lg`,`xl`],de=[`bare`],fe=[`off`,`border`,`above`],pe=[`off`,`shown`],p=o(function(o,p){let{label:m,required:h=!1,error:me,hint:g,help:_,helpLabel:he=`More information`,type:v=`text`,size:y=`md`,leftIcon:b,rightIcon:x,onRightIconClick:ge,rightIconLabel:_e,unit:S,id:ve,name:ye,className:be=``,fieldClassName:C=``,disabled:w=!1,readOnly:T=!1,clearable:E=!1,showCount:D=!1,maxLength:O,prefix:k,suffix:A,action:j,floatingLabel:M=`off`,variant:N,passwordRequirements:P=`off`,passwordPolicy:xe,requirementsPlacement:F=`auto`,mask:I,postFormatted:L=!1,onMaskChange:R,"data-canvas":Se,...z}=o;n(`AppInput`,z),t(`AppInput`,`size`,y,ue),t(`AppInput`,`variant`,N,de),t(`AppInput`,`floatingLabel`,M,fe),t(`AppInput`,`passwordRequirements`,P,pe),I!=null&&!se(I)&&t(`AppInput`,`mask`,I,ie),I!=null&&t(`AppInput`,`type`,v,re);let[B,Ce]=l(!1),[we,Te]=l(``),V=me||we,Ee=le(),H=ve||Ee,U=v===`password`,De=U&&B?`text`:v,W=c(null),Oe=e=>{W.current=e,typeof p==`function`?p(e):p&&(p.current=e)},G=String(z.value??z.defaultValue??``),[ke,K]=l(()=>!!G),[Ae,je]=l(()=>G.length),Me=E&&!w&&!T,q=E||D,J=U&&P===`shown`,[Ne,Pe]=l(G);s(()=>{!J||z.value===void 0||Pe(String(z.value??``))},[z.value,J]),s(()=>{if(!q||z.value===void 0)return;let e=String(z.value??``);K(!!e),je(e.length)},[z.value,q]);let Fe=e=>{K(!!e.target.value),je(e.target.value.length),z.onInput?.(e)},Ie=e=>{J&&Pe(e.target.value),q?Fe(e):z.onInput?.(e)},Le=I?{...z.value!==void 0&&{value:a(I,z.value)},...z.defaultValue!==void 0&&{defaultValue:a(I,z.defaultValue)}}:null,Re=c(R);Re.current=R,s(()=>{let e=W.current;if(!(!I||!e))return ae(e,{mask:I,postFormatted:L,onChange:(e,t)=>Re.current?.(e,t),onInvalidChange:Te})},[I,L]);let Y=e=>I&&!L&&e?t=>{let n=t.target,r=new Proxy(n,{get:(e,t)=>{if(t===`value`)return ce(I,e.value);let n=Reflect.get(e,t,e);return typeof n==`function`?n.bind(e):n}});e(Object.create(t,{target:{value:r}}))}:e,ze=Me?d(`button`,{type:`button`,className:`input-clear`,onClick:()=>{let e=W.current;if(!e)return;let t=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,`value`)?.set;t?t.call(e,``):e.value=``,e.dispatchEvent(new Event(`input`,{bubbles:!0})),K(!1),e.focus()},"aria-label":`Clear`,tabIndex:-1,hidden:!ke,children:d(r,{name:`x`,size:16})}):null,Be=V&&H?`${H}-error`:void 0,Ve=g&&H?`${H}-hint`:void 0,X=J&&F===`inline`,He=X&&H?`${H}-requirements`:void 0,Ue=Be||(X?He:Ve),We=[`input`,y===`sm`?`input-sm`:``,y===`lg`?`input-lg`:``,y===`xl`?`wui-input-xl`:``,V?`error`:``,U?`pw`:``,S?`num-input`:``,!(M!==`off`&&m||k||A||S||U||x)&&E&&Me?`has-clear`:``,N===`bare`?`input-bare`:``,be].filter(Boolean).join(` `),Z=d(u.Control,{id:H,name:ye,type:De,className:We,disabled:w,readOnly:T,required:h,"aria-invalid":V?`true`:`false`,"aria-describedby":Ue,maxLength:O,...z,onChange:Y(z.onChange),onBlur:Y(z.onBlur),...Le,placeholder:M===`off`?z.placeholder:` `,ref:Oe,onInput:q||J?Ie:z.onInput}),Q=xe??!0,Ge=Q&&typeof Q==`object`&&Q.title||`Password requirements`,Ke=J?oe(Ne,Q):null,qe=J?d(`ul`,{className:`pw-criteria`,"aria-live":`polite`,id:He,"aria-label":X?Ge:void 0,children:Ke.map(e=>f(`li`,{className:`pw-rule ${e.met?`met`:`unmet`}`,children:[d(`span`,{className:`pw-mark`,"aria-hidden":`true`}),d(`span`,{className:`pw-rule-text`,children:e.label}),d(`span`,{className:`visually-hidden`,children:e.met?`: met`:`: not met`})]},e.key))}):null,$;if(M!==`off`&&m&&!U)$=f(`div`,{className:M===`above`?`field-float wui-float-above`:`field-float`,children:[Z,f(`label`,{className:`float-label`,htmlFor:H,children:[m,h&&d(i,{})]})]});else if(j)$=f(`div`,{className:`input-action-row`,children:[f(`div`,{className:b?`input-icon`:`input-wrap`,children:[b&&d(`span`,{className:`ic`,children:d(r,{name:b,size:16})}),Z]}),d(`div`,{className:`input-action`,children:j})]});else if(k||A)$=f(`div`,{className:`input-affixed`,children:[k!=null&&d(`span`,{className:`affix affix-pre`,children:k}),Z,A!=null&&d(`span`,{className:`affix affix-suf`,children:A})]});else if(S)$=f(`div`,{className:`input-with-unit`,children:[Z,d(`span`,{className:`unit`,children:S})]});else if(U){let e=f(`button`,{type:`button`,className:`pw-toggle${B?` pw-revealed`:``}`,onClick:()=>Ce(e=>!e),"aria-label":B?`Hide password`:`Show password`,tabIndex:-1,children:[d(r,{name:`eye`,size:18,className:`pw-eye`}),d(r,{name:`eye-off`,size:18,className:`pw-eye-off`})]}),t=M!==`off`&&m?d(`div`,{className:M===`above`?`field-float wui-float-above`:`field-float`,children:f(`div`,{className:`input-wrap`,children:[Z,e,f(`label`,{className:`float-label`,htmlFor:H,children:[m,h&&d(i,{})]})]})}):f(`div`,{className:b?`input-icon`:`input-wrap`,children:[b&&d(`span`,{className:`ic`,children:d(r,{name:b,size:16})}),Z,e]});$=J&&!X?d(te,{trigger:t,triggerType:`focus`,placement:F,title:Ge,className:`pw-popover`,children:qe}):t}else $=x?f(`div`,{className:`input-wrap`,children:[Z,d(`button`,{type:`button`,className:`pw-toggle`,onClick:ge,disabled:!ge,tabIndex:-1,"aria-label":_e||x,children:d(r,{name:x,size:18})})]}):E?f(`div`,{className:b?`input-icon`:`input-wrap`,children:[b&&d(`span`,{className:`ic`,children:d(r,{name:b,size:16})}),Z,ze]}):b?f(`div`,{className:`input-icon`,children:[d(`span`,{className:`ic`,children:d(r,{name:b,size:16})}),Z]}):Z;return f(u.Group,{...e(`AppInput`,o),className:`field${C?` ${C}`:``}`,children:[m&&M===`off`&&f(u.Label,{className:`label`,htmlFor:H,children:[m,h&&d(i,{}),_&&d(ne,{label:he,children:_})]}),$,X&&d(`div`,{className:`wui-pw-inline`,children:qe}),d(ee,{error:V,hint:X?null:g,errorId:Be,hintId:Ve}),D&&f(`div`,{className:`field-count${O&&Ae>=O?` at-limit`:``}`,children:[Ae,O?` / ${O}`:``]})]})});export{p as default};
1
+ import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import{devWarn as t}from"../lib/devWarn.js";import n from"./warnInvalidValue.js";import r from"./warnUnknownProps.js";import i from"./AppIcon.js";import ee from"../lib/FieldMessage.js";import te from"./AppPopover.js";import ne from"./AppInfoTip.js";import a from"./AppRequiredMark.js";import{MASK_INPUT_TYPES as re,MASK_NAMES as ie,attachInputMask as ae,evaluatePassword as oe,formatMasked as o,isMaskPattern as se,postedMasked as ce}from"@webority/ui-elements/helpers";import{forwardRef as s,useEffect as c,useId as le,useRef as ue,useState as l}from"react";import{Form as u}from"react-bootstrap";import{jsx as d,jsxs as f}from"react/jsx-runtime";var de=[`sm`,`md`,`lg`,`xl`],fe=[`bare`],pe=[`off`,`border`,`above`],me=[`off`,`shown`],p=s(function(s,p){let{label:m,required:h=!1,optional:g=!1,error:he,hint:ge,help:_e,helpLabel:ve=`More information`,type:_=`text`,size:v=`md`,leftIcon:y,rightIcon:b,onRightIconClick:ye,rightIconLabel:be,unit:x,id:xe,name:Se,className:Ce=``,fieldClassName:S=``,disabled:C=!1,readOnly:w=!1,clearable:T=!1,showCount:E=!1,maxLength:D,prefix:O,suffix:k,action:A,floatingLabel:j=`off`,variant:M,passwordRequirements:N=`off`,passwordPolicy:we,requirementsPlacement:P=`auto`,mask:F,postFormatted:I=!1,onMaskChange:L,"data-canvas":Te,...R}=s;r(`AppInput`,R),n(`AppInput`,`size`,v,de),n(`AppInput`,`variant`,M,fe),n(`AppInput`,`floatingLabel`,j,pe),n(`AppInput`,`passwordRequirements`,N,me),c(()=>{g&&h&&typeof process<`u`&&process.env.NODE_ENV!==`production`&&t(`AppInput: optional and required together; optional ignored`)},[g,h]),F!=null&&!se(F)&&n(`AppInput`,`mask`,F,ie),F!=null&&n(`AppInput`,`type`,_,re);let[z,Ee]=l(!1),[De,Oe]=l(``),B=he||De,ke=le(),V=xe||ke,H=_===`password`,Ae=H&&z?`text`:_,U=ue(null),je=e=>{U.current=e,typeof p==`function`?p(e):p&&(p.current=e)},W=String(R.value??R.defaultValue??``),[Me,G]=l(()=>!!W),[Ne,Pe]=l(()=>W.length),Fe=T&&!C&&!w,K=T||E,q=H&&N===`shown`,[Ie,Le]=l(W);c(()=>{!q||R.value===void 0||Le(String(R.value??``))},[R.value,q]),c(()=>{if(!K||R.value===void 0)return;let e=String(R.value??``);G(!!e),Pe(e.length)},[R.value,K]);let Re=e=>{G(!!e.target.value),Pe(e.target.value.length),R.onInput?.(e)},ze=e=>{q&&Le(e.target.value),K?Re(e):R.onInput?.(e)},Be=F?{...R.value!==void 0&&{value:o(F,R.value)},...R.defaultValue!==void 0&&{defaultValue:o(F,R.defaultValue)}}:null,Ve=ue(L);Ve.current=L,c(()=>{let e=U.current;if(!(!F||!e))return ae(e,{mask:F,postFormatted:I,onChange:(e,t)=>Ve.current?.(e,t),onInvalidChange:Oe})},[F,I]);let He=e=>F&&!I&&e?t=>{let n=t.target,r=new Proxy(n,{get:(e,t)=>{if(t===`value`)return ce(F,e.value);let n=Reflect.get(e,t,e);return typeof n==`function`?n.bind(e):n}});e(Object.create(t,{target:{value:r}}))}:e,Ue=Fe?d(`button`,{type:`button`,className:`input-clear`,onClick:()=>{let e=U.current;if(!e)return;let t=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,`value`)?.set;t?t.call(e,``):e.value=``,e.dispatchEvent(new Event(`input`,{bubbles:!0})),G(!1),e.focus()},"aria-label":`Clear`,tabIndex:-1,hidden:!Me,children:d(i,{name:`x`,size:16})}):null,We=B&&V?`${V}-error`:void 0,Ge=ge&&V?`${V}-hint`:void 0,J=q&&P===`inline`,Y=J&&V?`${V}-requirements`:void 0,Ke=We||(J?Y:Ge),qe=[`input`,v===`sm`?`input-sm`:``,v===`lg`?`input-lg`:``,v===`xl`?`wui-input-xl`:``,B?`error`:``,H?`pw`:``,x?`num-input`:``,!(j!==`off`&&m||O||k||x||H||b)&&T&&Fe?`has-clear`:``,M===`bare`?`input-bare`:``,Ce].filter(Boolean).join(` `),X=d(u.Control,{id:V,name:Se,type:Ae,className:qe,disabled:C,readOnly:w,required:h,"aria-invalid":B?`true`:`false`,"aria-describedby":Ke,maxLength:D,...R,onChange:He(R.onChange),onBlur:He(R.onBlur),...Be,placeholder:j===`off`?R.placeholder:` `,ref:je,onInput:K||q?ze:R.onInput}),Z=we??!0,Je=Z&&typeof Z==`object`&&Z.title||`Password requirements`,Ye=q?oe(Ie,Z):null,Q=q?d(`ul`,{className:`pw-criteria`,"aria-live":`polite`,id:Y,"aria-label":J?Je:void 0,children:Ye.map(e=>f(`li`,{className:`pw-rule ${e.met?`met`:`unmet`}`,children:[d(`span`,{className:`pw-mark`,"aria-hidden":`true`}),d(`span`,{className:`pw-rule-text`,children:e.label}),d(`span`,{className:`visually-hidden`,children:e.met?`: met`:`: not met`})]},e.key))}):null,$;if(j!==`off`&&m&&!H)$=f(`div`,{className:j===`above`?`field-float wui-float-above`:`field-float`,children:[X,f(`label`,{className:`float-label`,htmlFor:V,children:[m,h&&d(a,{})]})]});else if(A)$=f(`div`,{className:`input-action-row`,children:[f(`div`,{className:y?`input-icon`:`input-wrap`,children:[y&&d(`span`,{className:`ic`,children:d(i,{name:y,size:16})}),X]}),d(`div`,{className:`input-action`,children:A})]});else if(O||k)$=f(`div`,{className:`input-affixed`,children:[O!=null&&d(`span`,{className:`affix affix-pre`,children:O}),X,k!=null&&d(`span`,{className:`affix affix-suf`,children:k})]});else if(x)$=f(`div`,{className:`input-with-unit`,children:[X,d(`span`,{className:`unit`,children:x})]});else if(H){let e=f(`button`,{type:`button`,className:`pw-toggle${z?` pw-revealed`:``}`,onClick:()=>Ee(e=>!e),"aria-label":z?`Hide password`:`Show password`,tabIndex:-1,children:[d(i,{name:`eye`,size:18,className:`pw-eye`}),d(i,{name:`eye-off`,size:18,className:`pw-eye-off`})]}),t=j!==`off`&&m?d(`div`,{className:j===`above`?`field-float wui-float-above`:`field-float`,children:f(`div`,{className:`input-wrap`,children:[X,e,f(`label`,{className:`float-label`,htmlFor:V,children:[m,h&&d(a,{})]})]})}):f(`div`,{className:y?`input-icon`:`input-wrap`,children:[y&&d(`span`,{className:`ic`,children:d(i,{name:y,size:16})}),X,e]});$=q&&!J?d(te,{trigger:t,triggerType:`focus`,placement:P,title:Je,className:`pw-popover`,children:Q}):t}else $=b?f(`div`,{className:`input-wrap`,children:[X,d(`button`,{type:`button`,className:`pw-toggle`,onClick:ye,disabled:!ye,tabIndex:-1,"aria-label":be||b,children:d(i,{name:b,size:18})})]}):T?f(`div`,{className:y?`input-icon`:`input-wrap`,children:[y&&d(`span`,{className:`ic`,children:d(i,{name:y,size:16})}),X,Ue]}):y?f(`div`,{className:`input-icon`,children:[d(`span`,{className:`ic`,children:d(i,{name:y,size:16})}),X]}):X;return f(u.Group,{...e(`AppInput`,s),className:`field${S?` ${S}`:``}`,children:[m&&j===`off`&&f(u.Label,{className:`label`,htmlFor:V,children:[m,g&&!h&&d(`span`,{className:`label-optional`,children:` (optional)`}),h&&d(a,{}),_e&&d(ne,{label:ve,children:_e})]}),$,J&&d(`div`,{className:`wui-pw-inline`,children:Q}),d(ee,{error:B,hint:J?null:ge,errorId:We,hintId:Ge}),E&&f(`div`,{className:`field-count${D&&Ne>=D?` at-limit`:``}`,children:[Ne,D?` / ${D}`:``]})]})});export{p as default};
@@ -0,0 +1 @@
1
+ import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import t from"./warnInvalidValue.js";import n from"./warnUnknownProps.js";import{jsx as r}from"react/jsx-runtime";var i=Array.from({length:12},(e,t)=>t+1),a=3;function o(o){let{lines:s=a,lastLineWidth:c=`60%`,className:l=``,style:u,...d}=o;n(`AppSkeletonLines`,d),t(`AppSkeletonLines`,`lines`,s,i);let f=i.includes(s)?s:a;return r(`div`,{className:[`wui-skeleton-lines`,l].filter(Boolean).join(` `),"aria-hidden":`true`,style:u,...e(`AppSkeletonLines`,o),...d,children:Array.from({length:f},(e,t)=>r(`span`,{className:`skeleton`,style:t===f-1?{width:c}:void 0},`line-${t}`))})}export{o 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{forwardRef as a,useCallback as o,useEffect as s,useId as c,useLayoutEffect as l,useRef as u,useState as d}from"react";import{Form as f}from"react-bootstrap";import{jsx as p,jsxs as m}from"react/jsx-runtime";var h=a(function(a,h){let{label:g,required:_=!1,error:v,hint:y,help:b,helpLabel:x=`More information`,id:S,name:C,rows:w=4,autoGrow:T=!1,showCount:E=!1,maxLength:D,disabled:O=!1,readOnly:k=!1,className:A=``,fieldClassName:j=``,"data-canvas":M,...N}=a;t(`AppTextarea`,N);let P=c(),F=S||P,I=[`textarea`,T?`autosize`:``,v?`error`:``,A].filter(Boolean).join(` `),L=v&&F?`${F}-error`:void 0,R=y&&F?`${F}-hint`:void 0,z=L||R,B=u(null),V=e=>{B.current=e,typeof h==`function`?h(e):h&&(h.current=e)},H=o(()=>{let e=B.current;e&&(e.style.height=`auto`,e.style.height=`${e.scrollHeight}px`)},[]);l(()=>{T&&H()},[T,H,N.value]);let[U,W]=d(()=>String(N.value??N.defaultValue??``).length);s(()=>{!E||N.value===void 0||W(String(N.value??``).length)},[N.value,E]);let G=e=>{T&&H(),E&&W(e.target.value.length),N.onInput?.(e)};return m(f.Group,{...e(`AppTextarea`,a),className:`field${j?` ${j}`:``}`,children:[g&&m(f.Label,{className:`label`,htmlFor:F,children:[g,_&&p(i,{}),b&&p(r,{label:x,children:b})]}),p(f.Control,{as:`textarea`,id:F,name:C,rows:w,className:I,"aria-invalid":v?`true`:`false`,"aria-describedby":z,required:_,maxLength:D,disabled:O,readOnly:k,...N,ref:V,onInput:G}),p(n,{error:v,hint:y,errorId:L,hintId:R}),E&&m(`div`,{className:`field-count${D&&U>=D?` at-limit`:``}`,children:[U,D?` / ${D}`:``]})]})});export{h as default};
1
+ import{wuiMarkerAttributes as e}from"../lib/wuiMarker.js";import{devWarn as t}from"../lib/devWarn.js";import n from"./warnUnknownProps.js";import r from"../lib/FieldMessage.js";import i from"./AppInfoTip.js";import a from"./AppRequiredMark.js";import{forwardRef as o,useCallback as s,useEffect as c,useId as l,useLayoutEffect as u,useRef as d,useState as f}from"react";import{Form as p}from"react-bootstrap";import{jsx as m,jsxs as h}from"react/jsx-runtime";var g=o(function(o,g){let{label:_,required:v=!1,optional:y=!1,error:b,hint:x,help:S,helpLabel:C=`More information`,id:w,name:T,rows:E=4,autoGrow:D=!1,showCount:O=!1,maxLength:k,disabled:A=!1,readOnly:j=!1,className:M=``,fieldClassName:N=``,"data-canvas":P,...F}=o;n(`AppTextarea`,F),c(()=>{y&&v&&typeof process<`u`&&process.env.NODE_ENV!==`production`&&t(`AppTextarea: optional and required together; optional ignored`)},[y,v]);let I=l(),L=w||I,R=[`textarea`,D?`autosize`:``,b?`error`:``,M].filter(Boolean).join(` `),z=b&&L?`${L}-error`:void 0,B=x&&L?`${L}-hint`:void 0,V=z||B,H=d(null),U=e=>{H.current=e,typeof g==`function`?g(e):g&&(g.current=e)},W=s(()=>{let e=H.current;e&&(e.style.height=`auto`,e.style.height=`${e.scrollHeight}px`)},[]);u(()=>{D&&W()},[D,W,F.value]);let[G,K]=f(()=>String(F.value??F.defaultValue??``).length);c(()=>{!O||F.value===void 0||K(String(F.value??``).length)},[F.value,O]);let q=e=>{D&&W(),O&&K(e.target.value.length),F.onInput?.(e)};return h(p.Group,{...e(`AppTextarea`,o),className:`field${N?` ${N}`:``}`,children:[_&&h(p.Label,{className:`label`,htmlFor:L,children:[_,y&&!v&&m(`span`,{className:`label-optional`,children:` (optional)`}),v&&m(a,{}),S&&m(i,{label:C,children:S})]}),m(p.Control,{as:`textarea`,id:L,name:T,rows:E,className:R,"aria-invalid":b?`true`:`false`,"aria-describedby":V,required:v,maxLength:k,disabled:A,readOnly:j,...F,ref:U,onInput:q}),m(r,{error:b,hint:x,errorId:z,hintId:B}),O&&h(`div`,{className:`field-count${k&&G>=k?` at-limit`:``}`,children:[G,k?` / ${k}`:``]})]})});export{g as default};
@@ -2,7 +2,7 @@
2
2
  "format": "webority-guidance/1",
3
3
  "package": {
4
4
  "name": "@webority/ui-react",
5
- "version": "0.99.0"
5
+ "version": "0.100.0"
6
6
  },
7
7
  "components": [
8
8
  {
@@ -7460,6 +7460,39 @@
7460
7460
  ]
7461
7461
  }
7462
7462
  },
7463
+ {
7464
+ "name": "AppSkeletonLines",
7465
+ "usage": {
7466
+ "when": [
7467
+ "A paragraph of text is loading and the page should hold its shape.",
7468
+ "A card or a description is waiting for its first data."
7469
+ ],
7470
+ "whenNot": [
7471
+ {
7472
+ "text": "A single bar stands in for one element, such as a heading or a value.",
7473
+ "instead": "AppSkeleton"
7474
+ },
7475
+ {
7476
+ "text": "A table is loading its first page.",
7477
+ "instead": "AppSkeletonRows"
7478
+ },
7479
+ {
7480
+ "text": "The data loaded but the result set is empty.",
7481
+ "instead": "AppEmptyState"
7482
+ },
7483
+ {
7484
+ "text": "The whole page is blocked on a single request.",
7485
+ "instead": "a page-level spinner"
7486
+ }
7487
+ ],
7488
+ "do": [],
7489
+ "dont": [],
7490
+ "a11y": [
7491
+ "The wrapper is aria-hidden, so screen readers skip the placeholder lines.",
7492
+ "The lines have no role and take no focus."
7493
+ ]
7494
+ }
7495
+ },
7463
7496
  {
7464
7497
  "name": "AppSkeletonRows",
7465
7498
  "usage": {
@@ -22,6 +22,7 @@ export declare function buttonVariantClass(variant: any): string;
22
22
  * @param {"rounded"|"pill"|"sharp"} [props.shape]
23
23
  * @param {"linear"|"outline"|"bold"|"bulk"|"broken"|"twotone"} [props.iconVariant]
24
24
  * @param {string} [props.className]
25
+ * @param {boolean|number} [props.vibrate] `true` buzzes 10 ms on a tap, a whole number 1 to 100 buzzes that many ms; phones only.
25
26
  * @param {(event: import('react').MouseEvent<HTMLElement>) => void} [props.onClick] Runs on a click; ignored on a static button.
26
27
  */
27
28
  export default function AppButton(props: {
@@ -98,5 +99,7 @@ export default function AppButton(props: {
98
99
  * @default ""
99
100
  */
100
101
  className?: string;
102
+ /** Phones only: true buzzes 10 ms on a tap, or a whole number of milliseconds from 1 to 100. Not applied while disabled or loading; ignored where the browser has no vibration. */
103
+ vibrate?: boolean | number;
101
104
  onClick?: (event: import('react').MouseEvent<HTMLElement>) => void;
102
105
  }): any;
@@ -6,6 +6,11 @@ declare const AppInput: import("react").ForwardRefExoticComponent<{
6
6
  * @default false
7
7
  */
8
8
  required?: boolean;
9
+ /**
10
+ * Ends the label with (optional) when the field is not required. Required wins when both are set.
11
+ * @default false
12
+ */
13
+ optional?: boolean;
9
14
  /** A validation message under the field. It marks the control invalid for assistive technology. */
10
15
  error?: string;
11
16
  /** Help text under the field. An error replaces it while both are set. */
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Placeholder lines while text loads: a column of skeleton bars, each one text line tall. Every line
3
+ * is full width except the last, which takes `lastLineWidth`, so the block reads as a paragraph.
4
+ *
5
+ * @param {object} props
6
+ * @param {number} [props.lines] How many lines, an integer from 1 to 12.
7
+ * @param {string} [props.lastLineWidth] Width of the last line as any CSS length.
8
+ * @param {string} [props.className]
9
+ * @param {import('react').CSSProperties} [props.style]
10
+ */
11
+ export default function AppSkeletonLines(props: {
12
+ /**
13
+ * How many lines to draw, an integer from 1 to 12. Any other value renders the default and warns.
14
+ * @default 3
15
+ */
16
+ lines?: number;
17
+ /**
18
+ * Width of the last line as a CSS length string, such as 60% or 12rem. The other lines are full width.
19
+ * @default "60%"
20
+ */
21
+ lastLineWidth?: string;
22
+ /**
23
+ * Extra class names added to the wrapper.
24
+ * @default ""
25
+ */
26
+ className?: string;
27
+ style?: import('react').CSSProperties;
28
+ }): import("react").JSX.Element;
@@ -6,6 +6,11 @@ declare const AppTextarea: import("react").ForwardRefExoticComponent<{
6
6
  * @default false
7
7
  */
8
8
  required?: boolean;
9
+ /**
10
+ * Ends the label with (optional) when the field is not required. Required wins when both are set.
11
+ * @default false
12
+ */
13
+ optional?: boolean;
9
14
  /** An error message. It replaces the hint and marks the field invalid. */
10
15
  error?: string;
11
16
  /** Help text under the field. */
@@ -121,6 +121,7 @@ export { default as AppShortcutLegend } from "./components/AppShortcutLegend.jsx
121
121
  export { default as AppShowMore } from "./components/AppShowMore.jsx";
122
122
  export { default as AppSidebarMenu } from "./components/AppSidebarMenu.jsx";
123
123
  export { AppSkeletonRows, default as AppSkeleton } from "./components/AppSkeleton.jsx";
124
+ export { default as AppSkeletonLines } from "./components/AppSkeletonLines.jsx";
124
125
  export { default as AppSlider } from "./components/AppSlider.jsx";
125
126
  export { default as AppSortableList } from "./components/AppSortableList.jsx";
126
127
  export { default as AppSparkline } from "./components/AppSparkline.jsx";
@@ -152,6 +153,7 @@ export { default as AppWizard } from "./components/AppWizard.jsx";
152
153
  export { default as AppWorkspaceSwitcher } from "./components/AppWorkspaceSwitcher.jsx";
153
154
  export { MODAL_ICONS } from "./components/ModalIcons.jsx";
154
155
  export { dismissAll, errorToast, toast } from "./components/toast.js";
156
+ export { default as warnInvalidValue } from "./components/warnInvalidValue.js";
155
157
  export { buildListQuery, parseListQuery } from "./lib/listQuery.js";
156
158
  export { useCommandPaletteShortcut } from "./lib/useCommandPaletteShortcut.js";
157
159
  export { useFloatingStack } from "./lib/useFloatingStack.js";
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/AppCountryFlag.js";import Y from"./components/AppCountrySelect.js";import X from"./components/AppDashboardCell.js";import Z from"./components/AppDashboardGrid.js";import Q,{AppSkeletonRows as $}from"./components/AppSkeleton.js";import ee from"./components/AppSelectMini.js";import te from"./components/AppTablePagination.js";import ne from"./components/AppDataTable.js";import re from"./components/AppDatePicker.js";import ie from"./components/AppDateRangePicker.js";import ae from"./components/AppDescriptions.js";import oe from"./components/AppDrawer.js";import se from"./components/AppDropZone.js";import ce from"./components/AppDueDate.js";import le from"./components/AppErrorSummary.js";import ue from"./components/AppFileAttachment.js";import de from"./components/AppFilePicker.js";import fe from"./components/AppFileViewer.js";import{buildListQuery as pe,parseListQuery as me}from"./lib/listQuery.js";import he from"./components/AppMultiSelect.js";import ge from"./components/AppSearch.js";import _e from"./components/AppSelect.js";import ve from"./components/AppSwitch.js";import ye from"./components/AppFilterBar.js";import be from"./components/AppFloatingDock.js";import xe from"./components/AppFormActions.js";import Se from"./components/AppFormRow.js";import Ce from"./components/AppFormSection.js";import we from"./components/AppHoverCard.js";import Te from"./components/AppInfoList.js";import Ee from"./components/AppInlineEdit.js";import De from"./components/AppInputGroup.js";import{dismissAll as Oe,errorToast as ke,toast as Ae}from"./components/toast.js";import je from"./components/AppKanban.js";import Me from"./components/AppKbd.js";import Ne from"./components/AppSparkline.js";import Pe from"./components/AppKpiTile.js";import Fe from"./components/AppLightbox.js";import Ie from"./components/AppLink.js";import Le from"./components/AppLogoPicker.js";import Re from"./components/AppMarkdown.js";import ze from"./components/AppMentionInput.js";import Be from"./components/AppMenubar.js";import Ve from"./components/AppMeter.js";import He from"./components/AppMetricStrip.js";import Ue from"./components/AppNavigationMenu.js";import We from"./components/AppNotificationCenter.js";import Ge from"./components/AppNumberInput.js";import Ke from"./components/AppOnboardingChecklist.js";import qe from"./components/AppOtpInput.js";import Je from"./components/AppPageHeader.js";import Ye from"./components/AppPagination.js";import Xe from"./components/AppPhoneNumberInput.js";import Ze from"./components/AppPricingCard.js";import Qe from"./components/AppQrCode.js";import $e from"./components/AppRadio.js";import et from"./components/AppRadioGroup.js";import tt from"./components/AppRating.js";import nt from"./components/AppRecordPager.js";import rt from"./components/AppRelativeTime.js";import it from"./components/AppRepeater.js";import at from"./components/AppResizable.js";import ot from"./components/AppResizableHandle.js";import st from"./components/AppResizablePanel.js";import ct from"./components/AppResourceCard.js";import lt from"./components/AppResult.js";import ut from"./components/AppRichText.js";import dt from"./components/AppRollingNumber.js";import ft from"./components/AppRouteError.js";import pt from"./components/AppScoreScale.js";import mt from"./components/AppScrollbar.js";import ht from"./components/AppSectionCallToAction.js";import gt from"./components/AppSectionFaq.js";import _t from"./components/AppSectionFeatures.js";import vt from"./components/AppSectionHero.js";import yt from"./components/AppSectionLogos.js";import bt from"./components/AppSectionPricing.js";import xt from"./components/AppSectionTestimonials.js";import St from"./components/AppShell.js";import Ct from"./components/AppShortcutLegend.js";import wt from"./components/AppShowMore.js";import Tt from"./components/AppSidebarMenu.js";import Et from"./components/AppSlider.js";import Dt from"./components/AppSortableList.js";import Ot from"./components/AppSplash.js";import kt from"./components/AppSplitButton.js";import At from"./components/AppSplitView.js";import jt from"./components/AppStatusBadge.js";import Mt from"./components/AppStepper.js";import Nt from"./components/AppTableEmptyState.js";import Pt from"./components/AppTableToolbar.js";import Ft from"./components/AppTabs.js";import It from"./components/AppTagInput.js";import Lt from"./components/AppTextarea.js";import Rt from"./components/AppThemeToggle.js";import zt from"./components/AppTimeline.js";import Bt from"./components/AppTimePicker.js";import Vt from"./components/AppToast.js";import Ht from"./components/AppToolbar.js";import Ut from"./components/AppTour.js";import Wt from"./components/AppTreeView.js";import Gt from"./components/AppTruncate.js";import Kt from"./components/AppUpdateBar.js";import qt from"./components/AppWhatsNew.js";import Jt from"./components/AppWizard.js";import Yt from"./components/AppWorkspaceSwitcher.js";import{useCommandPaletteShortcut as Xt}from"./lib/useCommandPaletteShortcut.js";import{useFloatingStack as Zt}from"./lib/useFloatingStack.js";import{useListQuery as Qt}from"./lib/useListQuery.js";import{useListShortcuts as $t}from"./lib/useListShortcuts.js";import{usePagination as en}from"./lib/usePagination.js";import{useTableView as tn}from"./lib/useTableView.js";import{mentionedIds as nn,parseMentionValue as rn}from"@webority/ui-elements/elements/mention-input";import{createLocalSeenStore as an}from"@webority/ui-elements/elements/tour";import{postedMasked as on,themeBootScript as sn}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 AppCountryFlag,Y as AppCountrySelect,X as AppDashboardCell,Z as AppDashboardGrid,ne as AppDataTable,re as AppDatePicker,ie as AppDateRangePicker,ae as AppDescriptions,oe as AppDrawer,se as AppDropZone,D as AppDropdown,ce as AppDueDate,c as AppEmptyState,le as AppErrorSummary,ue as AppFileAttachment,de as AppFilePicker,fe as AppFileViewer,ye as AppFilterBar,be as AppFloatingDock,xe as AppFormActions,Se as AppFormRow,Ce as AppFormSection,we as AppHoverCard,t as AppIcon,Te as AppInfoList,f as AppInfoTip,Ee as AppInlineEdit,H as AppInput,De as AppInputGroup,je as AppKanban,Me as AppKbd,Pe as AppKpiTile,Fe as AppLightbox,Ie as AppLink,Le as AppLogoPicker,Re as AppMarkdown,ze as AppMentionInput,Be as AppMenubar,Ve as AppMeter,He as AppMetricStrip,_ as AppModal,he as AppMultiSelect,Ue as AppNavigationMenu,We as AppNotificationCenter,Ge as AppNumberInput,Ke as AppOnboardingChecklist,qe as AppOtpInput,Je as AppPageHeader,Ye as AppPagination,Xe as AppPhoneNumberInput,d as AppPopover,Ze as AppPricingCard,l as AppProgress,Qe as AppQrCode,$e as AppRadio,et as AppRadioGroup,tt as AppRating,nt as AppRecordPager,rt as AppRelativeTime,it as AppRepeater,p as AppRequiredMark,at as AppResizable,ot as AppResizableHandle,st as AppResizablePanel,ct as AppResourceCard,lt as AppResult,ut as AppRichText,dt as AppRollingNumber,ft as AppRouteError,pt as AppScoreScale,mt as AppScrollbar,ge as AppSearch,ht as AppSectionCallToAction,gt as AppSectionFaq,_t as AppSectionFeatures,vt as AppSectionHero,yt as AppSectionLogos,bt as AppSectionPricing,xt as AppSectionTestimonials,O as AppSegmented,_e as AppSelect,ee as AppSelectMini,St as AppShell,Ct as AppShortcutLegend,wt as AppShowMore,Tt as AppSidebarMenu,Q as AppSkeleton,$ as AppSkeletonRows,Et as AppSlider,Dt as AppSortableList,Ne as AppSparkline,R as AppSpinner,Ot as AppSplash,kt as AppSplitButton,At as AppSplitView,jt as AppStatusBadge,Mt as AppStepper,ve as AppSwitch,Nt as AppTableEmptyState,te as AppTablePagination,Pt as AppTableToolbar,Ft as AppTabs,It as AppTagInput,Lt as AppTextarea,Rt as AppThemeToggle,Bt as AppTimePicker,zt as AppTimeline,Vt as AppToast,Ht as AppToolbar,e as AppTooltip,Ut as AppTour,Wt as AppTreeView,Gt as AppTruncate,Kt as AppUpdateBar,qt as AppWhatsNew,Jt as AppWizard,Yt as AppWorkspaceSwitcher,U as MODAL_ICONS,pe as buildListQuery,an as createLocalSeenStore,Oe as dismissAll,ke as errorToast,n as iconNames,nn as mentionedIds,me as parseListQuery,rn as parseMentionValue,on as postedMasked,r as registerIcons,sn as themeBootScript,Ae as toast,Xt as useCommandPaletteShortcut,Zt as useFloatingStack,Qt as useListQuery,$t as useListShortcuts,en as usePagination,tn as useTableView};
1
+ import e from"./components/warnInvalidValue.js";import t from"./components/AppTooltip.js";import n,{iconNames as r,registerIcons as i}from"./components/AppIcon.js";import a from"./components/AppAccordion.js";import o from"./components/AppActionIcon.js";import s from"./components/AppAlert.js";import c from"./components/AppButton.js";import l from"./components/AppEmptyState.js";import u from"./components/AppProgress.js";import d from"./components/AppAsyncBlock.js";import f from"./components/AppPopover.js";import p from"./components/AppInfoTip.js";import m from"./components/AppRequiredMark.js";import h from"./components/AppAutocomplete.js";import g from"./components/AppAvatar.js";import _ from"./components/AppAvatarGroup.js";import v from"./components/AppModal.js";import y from"./components/AppAvatarPicker.js";import b from"./components/AppBadge.js";import x from"./components/AppBanner.js";import S from"./components/AppBreadcrumbs.js";import C from"./components/AppButtonGroup.js";import w from"./components/AppCalendar.js";import T from"./components/AppCard.js";import E from"./components/AppCarousel.js";import D from"./components/AppChart.js";import O from"./components/AppDropdown.js";import k from"./components/AppSegmented.js";import A from"./components/AppChartCard.js";import j from"./components/AppCheckbox.js";import M from"./components/AppChip.js";import N from"./components/AppChipGroup.js";import P from"./components/AppChoiceCard.js";import F from"./components/AppChoiceChip.js";import I from"./components/AppCodeBlock.js";import L from"./components/AppColorField.js";import R from"./components/AppColumnMenu.js";import z from"./components/AppSpinner.js";import B from"./components/AppCommandPalette.js";import V from"./components/AppCommentThread.js";import H from"./components/AppCompareTable.js";import U from"./components/AppInput.js";import{MODAL_ICONS as W}from"./components/ModalIcons.js";import G from"./components/AppConfirmDialog.js";import K from"./components/AppConsentBanner.js";import q from"./components/AppContextMenu.js";import J from"./components/AppCopyButton.js";import Y from"./components/AppCountryFlag.js";import X from"./components/AppCountrySelect.js";import Z from"./components/AppDashboardCell.js";import Q from"./components/AppDashboardGrid.js";import $,{AppSkeletonRows as ee}from"./components/AppSkeleton.js";import te from"./components/AppSelectMini.js";import ne from"./components/AppTablePagination.js";import re from"./components/AppDataTable.js";import ie from"./components/AppDatePicker.js";import ae from"./components/AppDateRangePicker.js";import oe from"./components/AppDescriptions.js";import se from"./components/AppDrawer.js";import ce from"./components/AppDropZone.js";import le from"./components/AppDueDate.js";import ue from"./components/AppErrorSummary.js";import de from"./components/AppFileAttachment.js";import fe from"./components/AppFilePicker.js";import pe from"./components/AppFileViewer.js";import{buildListQuery as me,parseListQuery as he}from"./lib/listQuery.js";import ge from"./components/AppMultiSelect.js";import _e from"./components/AppSearch.js";import ve from"./components/AppSelect.js";import ye from"./components/AppSwitch.js";import be from"./components/AppFilterBar.js";import xe from"./components/AppFloatingDock.js";import Se from"./components/AppFormActions.js";import Ce from"./components/AppFormRow.js";import we from"./components/AppFormSection.js";import Te from"./components/AppHoverCard.js";import Ee from"./components/AppInfoList.js";import De from"./components/AppInlineEdit.js";import Oe from"./components/AppInputGroup.js";import{dismissAll as ke,errorToast as Ae,toast as je}from"./components/toast.js";import Me from"./components/AppKanban.js";import Ne from"./components/AppKbd.js";import Pe from"./components/AppSparkline.js";import Fe from"./components/AppKpiTile.js";import Ie from"./components/AppLightbox.js";import Le from"./components/AppLink.js";import Re from"./components/AppLogoPicker.js";import ze from"./components/AppMarkdown.js";import Be from"./components/AppMentionInput.js";import Ve from"./components/AppMenubar.js";import He from"./components/AppMeter.js";import Ue from"./components/AppMetricStrip.js";import We from"./components/AppNavigationMenu.js";import Ge from"./components/AppNotificationCenter.js";import Ke from"./components/AppNumberInput.js";import qe from"./components/AppOnboardingChecklist.js";import Je from"./components/AppOtpInput.js";import Ye from"./components/AppPageHeader.js";import Xe from"./components/AppPagination.js";import Ze from"./components/AppPhoneNumberInput.js";import Qe from"./components/AppPricingCard.js";import $e from"./components/AppQrCode.js";import et from"./components/AppRadio.js";import tt from"./components/AppRadioGroup.js";import nt from"./components/AppRating.js";import rt from"./components/AppRecordPager.js";import it from"./components/AppRelativeTime.js";import at from"./components/AppRepeater.js";import ot from"./components/AppResizable.js";import st from"./components/AppResizableHandle.js";import ct from"./components/AppResizablePanel.js";import lt from"./components/AppResourceCard.js";import ut from"./components/AppResult.js";import dt from"./components/AppRichText.js";import ft from"./components/AppRollingNumber.js";import pt from"./components/AppRouteError.js";import mt from"./components/AppScoreScale.js";import ht from"./components/AppScrollbar.js";import gt from"./components/AppSectionCallToAction.js";import _t from"./components/AppSectionFaq.js";import vt from"./components/AppSectionFeatures.js";import yt from"./components/AppSectionHero.js";import bt from"./components/AppSectionLogos.js";import xt from"./components/AppSectionPricing.js";import St from"./components/AppSectionTestimonials.js";import Ct from"./components/AppShell.js";import wt from"./components/AppShortcutLegend.js";import Tt from"./components/AppShowMore.js";import Et from"./components/AppSidebarMenu.js";import Dt from"./components/AppSkeletonLines.js";import Ot from"./components/AppSlider.js";import kt from"./components/AppSortableList.js";import At from"./components/AppSplash.js";import jt from"./components/AppSplitButton.js";import Mt from"./components/AppSplitView.js";import Nt from"./components/AppStatusBadge.js";import Pt from"./components/AppStepper.js";import Ft from"./components/AppTableEmptyState.js";import It from"./components/AppTableToolbar.js";import Lt from"./components/AppTabs.js";import Rt from"./components/AppTagInput.js";import zt from"./components/AppTextarea.js";import Bt from"./components/AppThemeToggle.js";import Vt from"./components/AppTimeline.js";import Ht from"./components/AppTimePicker.js";import Ut from"./components/AppToast.js";import Wt from"./components/AppToolbar.js";import Gt from"./components/AppTour.js";import Kt from"./components/AppTreeView.js";import qt from"./components/AppTruncate.js";import Jt from"./components/AppUpdateBar.js";import Yt from"./components/AppWhatsNew.js";import Xt from"./components/AppWizard.js";import Zt from"./components/AppWorkspaceSwitcher.js";import{useCommandPaletteShortcut as Qt}from"./lib/useCommandPaletteShortcut.js";import{useFloatingStack as $t}from"./lib/useFloatingStack.js";import{useListQuery as en}from"./lib/useListQuery.js";import{useListShortcuts as tn}from"./lib/useListShortcuts.js";import{usePagination as nn}from"./lib/usePagination.js";import{useTableView as rn}from"./lib/useTableView.js";import{mentionedIds as an,parseMentionValue as on}from"@webority/ui-elements/elements/mention-input";import{createLocalSeenStore as sn}from"@webority/ui-elements/elements/tour";import{postedMasked as cn,themeBootScript as ln}from"@webority/ui-elements/helpers";export{a as AppAccordion,o as AppActionIcon,s as AppAlert,d as AppAsyncBlock,h as AppAutocomplete,g as AppAvatar,_ as AppAvatarGroup,y as AppAvatarPicker,b as AppBadge,x as AppBanner,S as AppBreadcrumbs,c as AppButton,C as AppButtonGroup,w as AppCalendar,T as AppCard,E as AppCarousel,D as AppChart,A as AppChartCard,j as AppCheckbox,M as AppChip,N as AppChipGroup,P as AppChoiceCard,F as AppChoiceChip,I as AppCodeBlock,L as AppColorField,R as AppColumnMenu,B as AppCommandPalette,V as AppCommentThread,H as AppCompareTable,G as AppConfirmDialog,K as AppConsentBanner,q as AppContextMenu,J as AppCopyButton,Y as AppCountryFlag,X as AppCountrySelect,Z as AppDashboardCell,Q as AppDashboardGrid,re as AppDataTable,ie as AppDatePicker,ae as AppDateRangePicker,oe as AppDescriptions,se as AppDrawer,ce as AppDropZone,O as AppDropdown,le as AppDueDate,l as AppEmptyState,ue as AppErrorSummary,de as AppFileAttachment,fe as AppFilePicker,pe as AppFileViewer,be as AppFilterBar,xe as AppFloatingDock,Se as AppFormActions,Ce as AppFormRow,we as AppFormSection,Te as AppHoverCard,n as AppIcon,Ee as AppInfoList,p as AppInfoTip,De as AppInlineEdit,U as AppInput,Oe as AppInputGroup,Me as AppKanban,Ne as AppKbd,Fe as AppKpiTile,Ie as AppLightbox,Le as AppLink,Re as AppLogoPicker,ze as AppMarkdown,Be as AppMentionInput,Ve as AppMenubar,He as AppMeter,Ue as AppMetricStrip,v as AppModal,ge as AppMultiSelect,We as AppNavigationMenu,Ge as AppNotificationCenter,Ke as AppNumberInput,qe as AppOnboardingChecklist,Je as AppOtpInput,Ye as AppPageHeader,Xe as AppPagination,Ze as AppPhoneNumberInput,f as AppPopover,Qe as AppPricingCard,u as AppProgress,$e as AppQrCode,et as AppRadio,tt as AppRadioGroup,nt as AppRating,rt as AppRecordPager,it as AppRelativeTime,at as AppRepeater,m as AppRequiredMark,ot as AppResizable,st as AppResizableHandle,ct as AppResizablePanel,lt as AppResourceCard,ut as AppResult,dt as AppRichText,ft as AppRollingNumber,pt as AppRouteError,mt as AppScoreScale,ht as AppScrollbar,_e as AppSearch,gt as AppSectionCallToAction,_t as AppSectionFaq,vt as AppSectionFeatures,yt as AppSectionHero,bt as AppSectionLogos,xt as AppSectionPricing,St as AppSectionTestimonials,k as AppSegmented,ve as AppSelect,te as AppSelectMini,Ct as AppShell,wt as AppShortcutLegend,Tt as AppShowMore,Et as AppSidebarMenu,$ as AppSkeleton,Dt as AppSkeletonLines,ee as AppSkeletonRows,Ot as AppSlider,kt as AppSortableList,Pe as AppSparkline,z as AppSpinner,At as AppSplash,jt as AppSplitButton,Mt as AppSplitView,Nt as AppStatusBadge,Pt as AppStepper,ye as AppSwitch,Ft as AppTableEmptyState,ne as AppTablePagination,It as AppTableToolbar,Lt as AppTabs,Rt as AppTagInput,zt as AppTextarea,Bt as AppThemeToggle,Ht as AppTimePicker,Vt as AppTimeline,Ut as AppToast,Wt as AppToolbar,t as AppTooltip,Gt as AppTour,Kt as AppTreeView,qt as AppTruncate,Jt as AppUpdateBar,Yt as AppWhatsNew,Xt as AppWizard,Zt as AppWorkspaceSwitcher,W as MODAL_ICONS,me as buildListQuery,sn as createLocalSeenStore,ke as dismissAll,Ae as errorToast,r as iconNames,an as mentionedIds,he as parseListQuery,on as parseMentionValue,cn as postedMasked,i as registerIcons,ln as themeBootScript,je as toast,Qt as useCommandPaletteShortcut,$t as useFloatingStack,en as useListQuery,tn as useListShortcuts,nn as usePagination,rn as useTableView,e as warnInvalidValue};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webority/ui-react",
3
- "version": "0.99.0",
3
+ "version": "0.100.0",
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.99.0",
33
- "@webority/ui-elements": "0.99.0"
32
+ "@webority/theme": "0.100.0",
33
+ "@webority/ui-elements": "0.100.0"
34
34
  },
35
35
  "peerDependencies": {
36
36
  "@webority/analytics": "^0.28.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/canvas-kit": "0.99.0",
60
- "@webority/tokens": "0.99.0"
59
+ "@webority/tokens": "0.100.0",
60
+ "@webority/canvas-kit": "0.100.0"
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",