@blukavantui/community 1.0.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. package/README.md +11 -5
  2. package/dist/build-audit.json +181 -53
  3. package/dist/checkbox.css +1 -0
  4. package/dist/checkbox.d.ts +2 -0
  5. package/dist/checkbox.js +1 -0
  6. package/dist/chunk-3PNBQVYS.js +1 -0
  7. package/dist/chunk-5ENZVZGF.js +0 -0
  8. package/dist/chunk-AL2ETLJV.js +1 -0
  9. package/dist/chunk-BN3PDE5G.js +0 -0
  10. package/dist/chunk-EOKNLCNS.js +1 -0
  11. package/dist/chunk-EPZGLHPD.js +0 -0
  12. package/dist/chunk-FNX33PDD.js +0 -0
  13. package/dist/chunk-GXHANADL.js +1 -0
  14. package/dist/chunk-HO6CYWED.js +0 -0
  15. package/dist/chunk-IJ62ILKE.js +0 -0
  16. package/dist/chunk-IO22GWON.js +0 -0
  17. package/dist/chunk-IZJN3EF7.js +1 -0
  18. package/dist/chunk-JVE6CXCJ.js +1 -0
  19. package/dist/chunk-MYVLBALF.js +1 -0
  20. package/dist/chunk-OPMD7QNV.js +1 -0
  21. package/dist/chunk-RWBLICYX.js +0 -0
  22. package/dist/chunk-RYD6RHRX.js +0 -0
  23. package/dist/chunk-UN2SLVFG.js +1 -0
  24. package/dist/chunk-VJVFHL6P.js +0 -0
  25. package/dist/chunk-XWXEH3SW.js +1 -0
  26. package/dist/chunk-YCLR3IE3.js +0 -0
  27. package/dist/columns2.css +1 -0
  28. package/dist/columns2.d.ts +2 -0
  29. package/dist/columns2.js +1 -0
  30. package/dist/columns3.css +1 -0
  31. package/dist/columns3.d.ts +2 -0
  32. package/dist/columns3.js +1 -0
  33. package/dist/columns4.css +1 -0
  34. package/dist/columns4.d.ts +2 -0
  35. package/dist/columns4.js +1 -0
  36. package/dist/content.js +1 -1
  37. package/dist/core.js +1 -1
  38. package/dist/data.css +63 -0
  39. package/dist/data.d.ts +1 -0
  40. package/dist/data.js +1 -1
  41. package/dist/date-picker.css +5 -5
  42. package/dist/date-picker.js +1 -1
  43. package/dist/date-range-picker.css +5 -5
  44. package/dist/date-range-picker.js +1 -1
  45. package/dist/date-time-picker.css +5 -5
  46. package/dist/date-time-picker.js +1 -1
  47. package/dist/draft-components.json +77 -0
  48. package/dist/feedback.js +1 -1
  49. package/dist/form-field.css +1 -0
  50. package/dist/form-field.d.ts +2 -0
  51. package/dist/form-field.js +1 -0
  52. package/dist/form-layout/choice.d.ts +15 -0
  53. package/dist/form-layout/layout.d.ts +12 -0
  54. package/dist/form-layout/select.d.ts +3 -0
  55. package/dist/form-layout/shared.d.ts +21 -0
  56. package/dist/form-layout/table.d.ts +20 -0
  57. package/dist/form-layout/text.d.ts +3 -0
  58. package/dist/form-layout/types.d.ts +151 -0
  59. package/dist/form-layout.css +62 -0
  60. package/dist/form-layout.d.ts +12 -0
  61. package/dist/form-layout.js +1 -0
  62. package/dist/index.d.ts +1 -0
  63. package/dist/index.js +1 -1
  64. package/dist/inputs.css +83 -20
  65. package/dist/inputs.d.ts +8 -0
  66. package/dist/inputs.js +1 -1
  67. package/dist/layout.css +63 -0
  68. package/dist/layout.d.ts +3 -0
  69. package/dist/layout.js +1 -1
  70. package/dist/native/date-picker.js +1 -1
  71. package/dist/native/date-range-picker.js +1 -1
  72. package/dist/native/date-time-picker.js +1 -1
  73. package/dist/native/form-layout.js +1 -0
  74. package/dist/native/time-picker.js +1 -1
  75. package/dist/native-components/form-layout.d.ts +1 -0
  76. package/dist/radio-button.css +1 -0
  77. package/dist/radio-button.d.ts +2 -0
  78. package/dist/radio-button.js +1 -0
  79. package/dist/radio-group.css +1 -0
  80. package/dist/radio-group.d.ts +2 -0
  81. package/dist/radio-group.js +1 -0
  82. package/dist/select.css +1 -0
  83. package/dist/select.d.ts +2 -0
  84. package/dist/select.js +1 -0
  85. package/dist/sizes.json +272 -90
  86. package/dist/styles.css +83 -20
  87. package/dist/switch.css +1 -0
  88. package/dist/switch.d.ts +2 -0
  89. package/dist/switch.js +1 -0
  90. package/dist/table.css +1 -0
  91. package/dist/table.d.ts +2 -0
  92. package/dist/table.js +1 -0
  93. package/dist/text-area.css +1 -0
  94. package/dist/text-area.d.ts +2 -0
  95. package/dist/text-area.js +1 -0
  96. package/dist/text-input.css +1 -0
  97. package/dist/text-input.d.ts +2 -0
  98. package/dist/text-input.js +1 -0
  99. package/dist/time-picker.css +5 -5
  100. package/dist/time-picker.js +1 -1
  101. package/docs/FORM-LAYOUT-ESSENTIALS.md +122 -0
  102. package/docs/PUBLISHING.md +129 -25
  103. package/draft-components.json +77 -0
  104. package/edition.json +44 -7
  105. package/npm-shrinkwrap.json +2 -2
  106. package/package.json +76 -10
  107. package/scripts/build.mjs +16 -8
  108. package/src/checkbox.ts +2 -0
  109. package/src/columns2.ts +2 -0
  110. package/src/columns3.ts +2 -0
  111. package/src/columns4.ts +2 -0
  112. package/src/data.ts +1 -0
  113. package/src/form-field.ts +2 -0
  114. package/src/form-layout/choice.ts +66 -0
  115. package/src/form-layout/layout.ts +40 -0
  116. package/src/form-layout/select.ts +97 -0
  117. package/src/form-layout/shared.ts +57 -0
  118. package/src/form-layout/table.ts +86 -0
  119. package/src/form-layout/text.ts +73 -0
  120. package/src/form-layout/types.ts +59 -0
  121. package/src/form-layout.ts +12 -0
  122. package/src/index.ts +2 -0
  123. package/src/inputs.ts +8 -0
  124. package/src/layout.ts +3 -0
  125. package/src/native-components/form-layout.ts +21 -0
  126. package/src/radio-button.ts +2 -0
  127. package/src/radio-group.ts +2 -0
  128. package/src/runtime/date-picker.js +21 -12
  129. package/src/runtime/date-range-picker.js +21 -12
  130. package/src/runtime/date-time-picker.js +21 -12
  131. package/src/runtime/time-picker.js +21 -12
  132. package/src/select.ts +2 -0
  133. package/src/switch.ts +2 -0
  134. package/src/table.ts +2 -0
  135. package/src/text-area.ts +2 -0
  136. package/src/text-input.ts +2 -0
  137. package/src/types.ts +0 -12
  138. package/styles/checkbox.css +1 -0
  139. package/styles/columns2.css +1 -0
  140. package/styles/columns3.css +1 -0
  141. package/styles/columns4.css +1 -0
  142. package/styles/date-picker.css +5 -5
  143. package/styles/date-range-picker.css +5 -5
  144. package/styles/date-time-picker.css +5 -5
  145. package/styles/form-field.css +1 -0
  146. package/styles/form-layout.css +62 -0
  147. package/styles/radio-button.css +1 -0
  148. package/styles/radio-group.css +1 -0
  149. package/styles/select.css +1 -0
  150. package/styles/switch.css +1 -0
  151. package/styles/table.css +1 -0
  152. package/styles/text-area.css +1 -0
  153. package/styles/text-input.css +1 -0
  154. package/styles/time-picker.css +5 -5
  155. package/test/form-layout.test.mjs +28 -0
  156. package/test/isolation.test.mjs +2 -2
  157. package/dist/chunk-2TCNAQC6.js +0 -1
  158. package/dist/chunk-CTLZIWMX.js +0 -1
  159. package/dist/chunk-MHHJZYXW.js +0 -1
  160. package/dist/chunk-XDYBNO4P.js +0 -1
@@ -0,0 +1 @@
1
+ import{a as X}from"./chunk-MEEQNPGM.js";import{c as G,d as Q}from"./chunk-5TEIXA4R.js";var O=G("advanced",()=>({instances:new Map,serial:0})),fe=()=>`blu-advanced-${++O.serial}`;function c(e,t,a){let r=document.createElement(e);return t&&(r.className=t),a!==void 0&&(r.textContent=String(a)),r}function u(e,t,a){return a==null?e.removeAttribute(t):e.setAttribute(t,String(a)),e}function x(e,t,a="blu-picker__button"){let r=c("button",a,e);return r.type="button",r.addEventListener("click",t),r}function I(e,t,...a){if(!e.dead)try{Promise.resolve(e.events[t]?.(...a)).catch(r=>K(e,r))}catch(r){K(e,r)}}function K(e,t){if(e.dead)return;let a=t?.message||String(t);e.notice.textContent=a,e.lastError!==a&&(e.lastError=a,I(e,"Error",a))}function Z(e,t){let a=typeof e=="string"?JSON.parse(e||"[]"):e||[];if(!Array.isArray(a))throw Error(t+" must be a list.");return a}function me(e,t,a){let r=o=>{let n=O.instances.get(o);!n||n.kind!==e||(n.dead=!0,n.dispose?.(),n.root.remove(),n.notice.remove(),n.host._bluAdvancedOwner===o&&delete n.host._bluAdvancedOwner,O.instances.delete(o))};return Q(e,()=>({sync(o,n={},m={},h){let l=document.getElementById(o);if(!l)return e+" host was not found.";let g=h||o,p=O.instances.get(g);p&&(p.host!==l||p.kind!==e)&&(p.destroy(p.key),p=null);let i=O.instances.get(l._bluAdvancedOwner);if(i&&i!==p&&i.destroy(i.key),!p){p={key:g,host:l,kind:e,uid:fe(),options:n,events:m,dead:!1,destroy:r},p.root=c("div"),p.notice=u(c("div","blu-advanced-sr"),"role","status"),u(p.notice,"aria-atomic","true"),l.append(p.root,p.notice),O.instances.set(g,p),l._bluAdvancedOwner=g;try{t(p)}catch(f){throw r(g),f}}p.options=n,p.events=m;try{return a(p),l.dataset.bluRuntimeReady="true",""}catch(f){return K(p,f),f.message||String(f)}},destroy:r}))}var v=e=>String(e).padStart(2,"0");function q(e){return String(e.getFullYear()).padStart(4,"0")+"-"+v(e.getMonth()+1)+"-"+v(e.getDate())}function b(e){let t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(String(e));if(!t||+t[1]<1||+t[1]>9999)return null;let a=new Date(2e3,+t[2]-1,+t[3],12);return a.setFullYear(+t[1]),q(a)===e?a:null}function L(e){let t=/^(\d{2}):(\d{2})$/.exec(String(e));return t&&+t[1]<24&&+t[2]<60?t[1]+":"+t[2]:null}function ee(e,t="YYYY-MM-DD"){if(e=String(e).trim(),!e)return"";let a=e;if(t!=="YYYY-MM-DD"){let r=/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/.exec(e);if(!r)return null;a=r[3]+"-"+v(+(t==="DD/MM/YYYY"?r[2]:r[1]))+"-"+v(+(t==="DD/MM/YYYY"?r[1]:r[2]))}return b(a)?a:null}function te(e,t="YYYY-MM-DD"){if(!e)return"";let a=e.split("-");return t==="MM/DD/YYYY"?a[1]+"/"+a[2]+"/"+a[0]:t==="DD/MM/YYYY"?a[2]+"/"+a[1]+"/"+a[0]:e}function he(e,t=24){if(e=String(e).trim(),!e)return"";let a=/^(\d{1,2}):(\d{2})(?:\s*(AM|PM))?$/i.exec(e);return!a||+a[2]>59||(t===12?!a[3]||+a[1]<1||+a[1]>12:a[3]||+a[1]>23)?null:v(a[3]?+a[1]%12+(a[3].toUpperCase()==="PM"?12:0):+a[1])+":"+a[2]}function T(e,t=24){if(!e)return"";let[a,r]=e.split(":").map(Number);return t===12?(a%12||12)+":"+v(r)+" "+(a<12?"AM":"PM"):v(a)+":"+v(r)}function ae(e,t){let a=b(e);return a.setDate(a.getDate()+t),q(a)}function ie(e,t){let a=b(e),r=a.getDate();return a.setDate(1),a.setMonth(a.getMonth()+t),a.setDate(Math.min(r,new Date(a.getFullYear(),a.getMonth()+1,0).getDate())),q(a)}function ge(e,t){let a=b(e),r=b(t);return Math.round((r.getTime()-a.getTime())/864e5)}function z(e,t,a,r){return b(e)?t&&e<t?"Choose "+t+" or later.":a&&e>a?"Choose "+a+" or earlier.":r?.has(e)?"This date is unavailable.":"":"Enter a real calendar date."}function oe(e,t,a={}){if(!e||!t)return"Choose both a start date and an end date.";let r=z(e,a.Min,a.Max,a.disabled)||z(t,a.Min,a.Max,a.disabled);if(r)return r;if(t<e)return"End date must be on or after start date.";let o=ge(e,t)+1;if(a.MinRangeDays&&o<a.MinRangeDays)return"Choose at least "+a.MinRangeDays+" days.";if(a.MaxRangeDays&&o>a.MaxRangeDays)return"Choose no more than "+a.MaxRangeDays+" days.";if(a.disabled){for(let n of a.disabled)if(n>=e&&n<=t)return"The range includes an unavailable date."}return""}var ye=["YYYY-MM-DD","MM/DD/YYYY","DD/MM/YYYY"],N=()=>q(new Date),S=e=>String(e||"").split("T")[0],F=e=>String(e||"").split("T")[1]||"";function w(e,t){let a=b(t);return a?new Intl.DateTimeFormat(e.locale,{dateStyle:"full"}).format(a):t}function B(e,t,a=e.fields){e.error.textContent=t,e.error.hidden=!t||e.isOpen,e.dialogError&&(e.dialogError.textContent=e.isOpen?t:"");for(let o of e.fields)u(o.input,"aria-invalid",t&&a.includes(o)?"true":null);let r=!t;(e.valid!==r||e.validationMessage!==t)&&(e.valid=r,e.validationMessage=t,I(e,"ValidationChanged",r,t))}function V(e,t){return z(t,S(e.options.Min),S(e.options.Max),e.disabledDates)}function be(e,t,a){if(!L(t))return"Enter a valid time.";let r=e.dateTime?a+"T"+t:t,o=e.options.Min,n=e.options.Max;return o&&r<o?"Choose "+o+" or later.":n&&r>n?"Choose "+n+" or earlier.":""}function de(e,t,a,r){if(e.range)return!t&&!a&&!e.options.IsRequired?"":oe(t,a,{...e.options,disabled:e.disabledDates});if(!t&&!r)return e.options.IsRequired?"A "+(e.timeOnly?"time":"date")+" is required.":"";if(!e.timeOnly){if(!t)return"Choose a date.";let o=V(e,t);if(o)return o}return e.hasTime?r?be(e,r,t):"Choose a time.":""}function le(e){e.timeOnly?e.fields[0].input.value=T(e.value,e.cycle):(e.fields[0].input.value=te(e.range?e.start:S(e.value),e.format),e.range&&(e.fields[1].input.value=te(e.end,e.format)),e.dateTime&&(e.fields[1].input.value=T(F(e.value),e.cycle)));let t=e.range?[e.start,e.end].filter(Boolean).join(" to "):e.value;e.typedDirty=!1,e.clearButton.hidden=e.options.ShowClear===!1||!t}function k(e,t=!0){if(e.isOpen){e.isOpen=!1,e.dialog.hidePopover&&e.dialog.matches(":popover-open")&&e.dialog.hidePopover(),e.dialog.hidden=!0,e.error.hidden=!e.validationMessage;for(let{input:a}of e.fields)u(a,"aria-expanded","false");t&&e.anchor?.isConnected&&!e.anchor.disabled&&e.anchor.focus({preventScroll:!0}),I(e,"OpenChanged",!1)}}function Y(e){if(!e.isOpen||e.dead)return;let t=e.anchor.getBoundingClientRect(),a=window.visualViewport,r=a?.offsetLeft||0,o=a?.offsetTop||0,n=a?.width||document.documentElement.clientWidth,m=a?.height||window.innerHeight,h=6,l=8;if(t.bottom<=o||t.top>=o+m||t.right<=r||t.left>=r+n){k(e,!1);return}let g=e.dialog,p=Math.min(e.timeOnly?300:344,n-l*2);g.dataset.compact=String(m<420),g.style.width=p+"px",g.style.maxHeight="none";let i=Math.max(0,o+m-l-t.bottom-h),f=Math.max(0,t.top-h-o-l),d=g.scrollHeight+2,D=d>i&&f>i,E=Math.max(0,m-l*2);g.style.maxHeight=E+"px";let y=e.fieldRow.getBoundingClientRect();g.style.left=Math.max(r+l,Math.min(y.left+(y.width-p)/2,r+n-l-p))+"px";let M=D?t.top-h-d:t.bottom+h;g.style.top=Math.max(o+l,Math.min(M,o+m-l-Math.min(d,E)))+"px",g.dataset.placement=D?"top":"bottom"}function ne(e){(e.timeOnly||e.dateTime&&e.anchor===e.fields[1].input?e.hours:e.calendar.querySelector('[data-date="'+e.focusDate+'"]')||e.monthSelect).focus({preventScroll:!0})}function H(e,t,a,r,o=!1){let n=de(e,t,a,r);if(B(e,n),n)return e.dialogError.textContent=n,!1;let m=document.activeElement===e.clearButton&&!t&&!a&&!r,h=e.timeOnly?r:e.dateTime?t?t+"T"+r:"":t,l=e.range?e.start!==t||e.end!==a:e.value!==h;return e.range?(e.start=t,e.end=a,e.options.StartDate=t,e.options.EndDate=a):(e.value=h,e.options.Value=h),e.inputSignature=JSON.stringify(e.range?[e.start,e.end]:[e.value]),le(e),o||k(e),m&&e.fields[0].input.focus({preventScroll:!0}),e.notice.textContent=e.range?t?w(e,t)+" to "+w(e,a):"Date range cleared":h?"Selected "+(e.timeOnly?T(h,e.cycle):w(e,t)+(e.hasTime?" at "+T(r,e.cycle):"")):"Selection cleared",l&&(e.range?I(e,"Change",t,a):I(e,"Change",h)),!0}function re(e,t=!1){if(e.options.IsDisabled||e.options.IsReadOnly)return;let a=e.timeOnly?"":ee(e.fields[0].input.value,e.format),r=e.range?ee(e.fields[1].input.value,e.format):"",o=e.hasTime?he(e.fields[e.timeOnly?0:1].input.value,e.cycle):"";if(a===null||r===null){B(e,"Enter a real date using "+e.format+".");return}if(o===null){B(e,e.cycle===12?"Enter a time such as 9:15 AM.":"Enter a time such as 14:30.");return}H(e,a,r,o,t)&&t&&(e.draftStart=a,e.draftEnd=r,e.draftTime=o,a&&(e.focusDate=a,e.month=a.slice(0,7)),_(e),J(e),s(e),Y(e))}function De(e){let t=e.range||e.dateTime?2:1;e.fields=[];for(let a=0;a<t;a++){let r=c("div","blu-picker__field"),o=c("label"),n=c("input","blu-picker__input");n.type="text",n.id=e.uid+"-input-"+a,o.htmlFor=n.id,n.autocomplete="off",n.spellcheck=!1,u(n,"role","combobox"),u(n,"aria-haspopup","dialog"),u(n,"aria-expanded","false"),u(n,"aria-autocomplete","none"),u(n,"aria-controls",e.uid+"-dialog"),u(n,"aria-describedby",e.uid+"-hint "+e.uid+"-error "+e.uid+"-keyboard"),n.addEventListener("input",()=>{e.typedDirty=!0}),n.addEventListener("change",()=>re(e,e.isOpen)),n.addEventListener("pointerdown",l=>{l.pointerType==="mouse"&&(e.touchOpen=!1,n.inputMode="text"),(l.pointerType==="touch"||l.pointerType==="pen")&&e.manualInput!==n&&!e.options.IsDisabled&&!e.options.IsReadOnly&&(l.preventDefault(),e.touchOpen=!0,n.inputMode="none",P(e,n,!0))}),n.addEventListener("click",l=>{e.manualInput!==n&&(e.touchOpen?(l.preventDefault(),P(e,n,!0)):P(e,n,!1))}),n.addEventListener("blur",()=>{e.manualInput===n&&(e.manualInput=null)}),n.addEventListener("keydown",l=>{l.ctrlKey||l.metaKey||l.shiftKey||(l.key==="ArrowDown"&&(l.preventDefault(),P(e,n,!0)),l.key==="Enter"&&(l.preventDefault(),!e.isOpen&&!e.typedDirty?P(e,n,!0):re(e)),l.key==="Tab"&&k(e,!1))});let m=c("div","blu-picker__field-control"),h=u(c("span","blu-picker__field-icon"),"aria-hidden","true");h.innerHTML=e.timeOnly||e.dateTime&&a?'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7"><circle cx="12" cy="12" r="8.5"/><path d="M12 7v5l3 2"/></svg>':'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7"><rect x="4" y="5" width="16" height="16" rx="3"/><path d="M8 3v4m8-4v4M4 10h16m-11 4h2m3 0h2m-7 3h2"/></svg>',m.append(n,h),r.append(o,m),e.fields.push({field:r,label:o,input:n}),e.fieldRow.append(r)}}function C(e,t,a){let r=c("option","",a);return r.value=String(t),e.append(r),r}function A(e,t,a){let r=c("label","blu-picker__select-field"),o=c("span","blu-picker__select-caption",t),n=c("select","blu-picker__input");return n.id=e.uid+"-"+a,r.append(o,n),{wrap:r,select:n}}function ve(e){if(e.button!==0)return;let t=e.target.closest?.("button");!t||t.disabled||(e.preventDefault(),t.focus({preventScroll:!0}))}function R(e,t){let a=S(e.options.Min)||"0001-01-01",r=S(e.options.Max)||"9999-12-31";t=t<a?a:t>r?r:t,b(t)&&(e.focusDate=t,e.month=t.slice(0,7),_(e),e.calendar.querySelector('[data-date="'+t+'"]')?.focus({preventScroll:!0}))}function Se(e,t,a){if(t.altKey||t.ctrlKey||t.metaKey)return;let r,o={ArrowLeft:-1,ArrowRight:1,ArrowUp:-7,ArrowDown:7};if(t.key in o)r=ae(a,o[t.key]);else if(t.key==="Home"||t.key==="End"){let n=(b(a).getDay()-e.firstDay+7)%7;r=ae(a,t.key==="Home"?-n:6-n)}else(t.key==="PageUp"||t.key==="PageDown")&&(r=ie(a,(t.key==="PageUp"?-1:1)*(t.shiftKey?12:1)));r&&(t.preventDefault(),R(e,r))}function ce(e,t){if(!V(e,t)){if(e.dialogError.textContent="",e.focusDate=t,e.range?e.rangeNext==="start"?(e.draftStart=t,e.draftEnd="",e.rangeNext="end"):(t<e.draftStart?(e.draftEnd=e.draftStart,e.draftStart=t):e.draftEnd=t,e.rangeNext="start"):e.draftStart=t,!e.hasTime&&!e.range){H(e,t,"","");return}_(e),e.calendar.querySelector('[data-date="'+t+'"]')?.focus({preventScroll:!0}),s(e)}}function s(e){let t=e.range?e.draftStart?w(e,e.draftStart)+(e.draftEnd?" to "+w(e,e.draftEnd):" \u2014 choose an end date"):"Choose a start date":e.hasTime?(e.draftStart?w(e,e.draftStart)+" \xB7 ":"")+T(e.draftTime,e.cycle):"",a=r=>b(r)?new Intl.DateTimeFormat(e.locale,{month:"short",day:"numeric"}).format(b(r)):"";e.selectionSpeech.textContent=t,e.selectionVisual.textContent=e.range?e.draftStart?a(e.draftStart)+(e.draftEnd?" \u2013 "+a(e.draftEnd):" \u2014 choose end"):"Choose start date":e.dateTime?a(e.draftStart)+" \xB7 "+T(e.draftTime,e.cycle):e.timeOnly?T(e.draftTime,e.cycle):"",e.selection.hidden=!t}function _(e){let t=b(e.month+"-01");if(!t)return;let a=t.getFullYear(),r=t.getMonth(),o=Number(S(e.options.Min).slice(0,4))||1,n=Number(S(e.options.Max).slice(0,4))||9999;e.monthSelect.value=String(r),e.yearInput.value=String(a),u(e.yearInput,"aria-invalid",null),e.yearInput.min=String(o),e.yearInput.max=String(n);let m=new Intl.DateTimeFormat(e.locale,{month:"long",year:"numeric"}).format(t);e.caption.textContent!==m&&(e.caption.textContent=m);let h=(t.getDay()-e.firstDay+7)%7,l=new Date(a,r+1,0).getDate();if(e.focusDate.startsWith(e.month)||(e.focusDate=e.month+"-01"),!e.dayCells){let i=c("tbody");e.dayCells=[];for(let f=0;f<6;f++){let d=c("tr");for(let D=0;D<7;D++){let E=c("td"),y=x("",()=>ce(e,y.dataset.date),"blu-picker__day");y.addEventListener("keydown",M=>Se(e,M,y.dataset.date)),y.addEventListener("focus",()=>{e.focusDate=y.dataset.date;for(let M of e.dayCells)M.button.tabIndex=M.button===y?0:-1}),E.append(y),d.append(E),e.dayCells.push({cell:E,button:y})}i.append(d)}e.calendar.append(i)}for(let i=0;i<e.dayCells.length;i++){let{cell:f,button:d}=e.dayCells[i],D=i-h+1,E=D>0&&D<=l;if(d.hidden=!E,!E){d.tabIndex=-1,delete d.dataset.date,u(f,"aria-selected",null);continue}let y=e.month+"-"+v(D),M=y===e.draftStart||e.range&&y===e.draftEnd,U=e.range&&e.draftStart&&e.draftEnd&&y>e.draftStart&&y<e.draftEnd,W=V(e,y),$=!!(M||U),pe=e.range&&M?y===e.draftStart?e.draftEnd?", range starts here; "+w(e,e.draftStart)+" to "+w(e,e.draftEnd):", start date; choose an end date":", range ends here; "+w(e,e.draftStart)+" to "+w(e,e.draftEnd):"",j=w(e,y)+($?", selected":"")+pe+(W?", unavailable":"");d.dataset.date=y,d.tabIndex=y===e.focusDate?0:-1,d.textContent!==String(D)&&(d.textContent=String(D)),d.getAttribute("aria-label")!==j&&u(d,"aria-label",j),u(f,"aria-selected",String($)),u(d,"aria-disabled",W?"true":null),u(d,"aria-current",y===N()?"date":null),d.dataset.selected=String(M),d.dataset.between=String(!!U)}for(let i=0;i<6;i++)e.dayCells[i*7].cell.parentElement.hidden=i*7-h+1>l;let g=S(e.options.Min),p=S(e.options.Max);e.prev.disabled=!!g&&e.month<=g.slice(0,7)||a===1&&r===0,e.next.disabled=!!p&&e.month>=p.slice(0,7)||a===9999&&r===11,e.todayButton.hidden=e.timeOnly||e.options.ShowToday===!1,e.todayButton.disabled=!!V(e,N())}function J(e){if(!e.hasTime)return;let[t,a]=(e.draftTime||"09:00").split(":").map(Number);e.hours.replaceChildren(),e.minutes.replaceChildren();for(let r=0;r<(e.cycle===12?12:24);r++)C(e.hours,e.cycle===12?r+1:r,v(e.cycle===12?r+1:r));for(let r=0;r<60;r+=e.step)C(e.minutes,r,v(r));a%e.step&&C(e.minutes,a,v(a)+" (entered)"),e.hours.value=String(e.cycle===12?t%12||12:t),e.minutes.value=String(a),e.period.value=t<12?"AM":"PM",e.periodField.hidden=e.cycle!==12,s(e)}function P(e,t=e.fields[0].input,a=!0){if(e.options.IsDisabled||e.options.IsReadOnly)return;if(e.anchor=t,e.manualInput=null,e.typeButton.hidden=!e.touchOpen,e.isOpen){e.range&&(e.rangeNext=t===e.fields[1].input&&e.draftStart?"end":"start"),Y(e),a&&ne(e);return}e.draftStart=e.timeOnly?"":e.range?e.start:S(e.value),e.draftEnd=e.end||"",e.draftTime=e.timeOnly?e.value:F(e.value),e.hasTime&&!L(e.draftTime)&&(e.draftTime="09:00"),e.rangeNext="start",e.range&&t===e.fields[1].input&&e.draftStart&&(e.rangeNext="end");let r=e.range&&e.rangeNext==="end"?e.draftEnd:e.draftStart;e.focusDate=b(r)?r:b(e.draftStart)?e.draftStart:N();let o=S(e.options.Min),n=S(e.options.Max);e.timeOnly||(o&&e.focusDate<o&&(e.focusDate=o),n&&e.focusDate>n&&(e.focusDate=n)),e.month=e.focusDate.slice(0,7),e.dialogError.textContent="",_(e),J(e),s(e),e.isOpen=!0,e.dialog.hidden=!1,e.dialog.showPopover&&e.dialog.showPopover(),e.dialog.scrollTop=0;for(let{input:m}of e.fields)u(m,"aria-expanded","true");Y(e),a&&e.isOpen&&ne(e),I(e,"OpenChanged",!0)}function we(e){e.range=e.kind==="DateRangePicker",e.timeOnly=e.kind==="TimePicker",e.dateTime=e.kind==="DateTimePicker",e.hasTime=e.timeOnly||e.dateTime,e.root.className="blu-picker",e.fieldRow=c("div","blu-picker__fields"),e.error=u(c("div","blu-picker__error"),"role","alert"),e.error.id=e.uid+"-error",e.error.hidden=!0,e.hint=c("div","blu-picker__hint"),e.hint.id=e.uid+"-hint",e.actions=c("div","blu-picker__actions"),e.clearButton=x("Clear",()=>H(e,"","","")),e.actions.append(e.clearButton),e.root.append(e.fieldRow,e.hint,e.actions,e.error),De(e);let t=c("span","blu-advanced-sr","Click the field or press Down Arrow to browse. Escape closes the popup.");t.id=e.uid+"-keyboard",e.root.append(t),e.dialog=c("div","blu-picker__dialog blu-picker__popup"),e.dialog.id=e.uid+"-dialog",e.dialog.hidden=!0,u(e.dialog,"role","dialog"),u(e.dialog,"aria-labelledby",e.uid+"-title"),u(e.dialog,"aria-modal","false"),e.dialog.showPopover&&u(e.dialog,"popover","manual"),e.root.append(e.dialog),e.dialog.addEventListener("mousedown",ve),e.title=c("h2","blu-advanced-sr"),e.title.id=e.uid+"-title",e.dialog.append(e.title),e.presets=c("div","blu-picker__presets"),e.dialog.append(e.presets),e.calendarArea=c("div","blu-picker__calendar-area"),e.calendarArea.hidden=e.timeOnly,e.dialog.append(e.calendarArea);let a=c("div","blu-picker__calendar-nav"),r=A(e,"Month","month");e.monthSelect=r.select;let o=c("label","blu-picker__select-field");o.append(c("span","blu-picker__select-caption","Year")),e.yearInput=c("input","blu-picker__input"),e.yearInput.type="number",e.yearInput.step="1",o.append(e.yearInput);let n=d=>{let D=ie(e.focusDate,d);R(e,D)};e.prev=x("\u2039",()=>n(-1)),u(e.prev,"aria-label","Previous month"),e.next=x("\u203A",()=>n(1)),u(e.next,"aria-label","Next month"),a.append(e.prev,r.wrap,o,e.next),e.calendarArea.append(a),e.monthSelect.addEventListener("change",()=>R(e,String(e.yearInput.value).padStart(4,"0")+"-"+v(+e.monthSelect.value+1)+"-01")),e.yearInput.addEventListener("change",()=>{let d=Number(e.yearInput.value);if(!Number.isInteger(d)||d<+e.yearInput.min||d>+e.yearInput.max){e.dialogError.textContent="Enter a year from "+e.yearInput.min+" to "+e.yearInput.max+".",u(e.yearInput,"aria-invalid","true");return}u(e.yearInput,"aria-invalid",null),e.dialogError.textContent="",R(e,String(d).padStart(4,"0")+"-"+v(+e.monthSelect.value+1)+"-01")}),e.caption=u(c("h3","blu-picker__caption blu-advanced-sr"),"aria-live","polite"),e.caption.id=e.uid+"-caption",e.calendarArea.append(e.caption),e.calendar=u(c("table","blu-picker__calendar"),"role","grid"),u(e.calendar,"aria-labelledby",e.caption.id),e.range&&u(e.calendar,"aria-multiselectable","true"),e.calendarArea.append(e.calendar),e.todayButton=x("Today",()=>{e.focusDate=N(),e.month=e.focusDate.slice(0,7),ce(e,e.focusDate)}),e.calendarArea.append(c("p","blu-advanced-sr","Arrow keys move by day or week. Home/End move within the week. Page Up/Down change month; hold Shift to change year.")),e.timeArea=c("div","blu-picker__time-area"),e.timeArea.hidden=!e.hasTime,e.dialog.append(e.timeArea);let m=A(e,"Hour","hour"),h=A(e,"Minute","minute"),l=A(e,"AM / PM","period");e.hours=m.select,e.minutes=h.select,e.period=l.select,e.periodField=l.wrap,C(e.period,"AM","AM"),C(e.period,"PM","PM"),e.timeArea.append(m.wrap,h.wrap,l.wrap);for(let d of[e.hours,e.minutes,e.period])d.addEventListener("change",()=>{let D=+e.hours.value;e.cycle===12&&(D=D%12+(e.period.value==="PM"?12:0)),e.draftTime=v(D)+":"+v(+e.minutes.value),e.dialogError.textContent="",s(e)});e.selection=u(c("div","blu-picker__selection"),"role","status"),u(e.selection,"aria-atomic","true"),e.selectionSpeech=c("span","blu-advanced-sr"),e.selectionVisual=u(c("span"),"aria-hidden","true"),e.selection.append(e.selectionSpeech,e.selectionVisual),e.dialogError=u(c("div","blu-picker__error"),"role","alert"),e.dialogError.id=e.uid+"-dialog-error",u(e.yearInput,"aria-describedby",e.dialogError.id),e.apply=x("Apply",()=>H(e,e.draftStart,e.draftEnd,e.draftTime),"blu-picker__button blu-picker__button--primary"),e.apply.hidden=!e.range&&!e.hasTime,e.typeButton=x("Type",()=>{let d=e.anchor;k(e,!1),e.manualInput=d,d.inputMode="text",d.focus({preventScroll:!0})}),u(e.typeButton,"aria-label","Type a date or time"),e.typeButton.hidden=!0;let g=c("div","blu-picker__popup-actions");g.append(e.typeButton,e.todayButton,x("Cancel",()=>k(e)),e.apply),e.dialog.append(e.selection,e.dialogError,g);let p=d=>{e.isOpen&&!e.root.contains(d.target)&&k(e,!1)},i=d=>{e.isOpen&&d.key==="Escape"&&!d.defaultPrevented&&(d.preventDefault(),d.stopPropagation(),k(e))},f=d=>{!e.isOpen||e.dialog.contains(d?.target)||(cancelAnimationFrame(e.positionFrame),e.positionFrame=requestAnimationFrame(()=>Y(e)))};document.addEventListener("pointerdown",p,!0),document.addEventListener("focusin",p),e.root.addEventListener("keydown",i),window.addEventListener("resize",f),document.addEventListener("scroll",f,!0),window.visualViewport?.addEventListener("resize",f),window.visualViewport?.addEventListener("scroll",f),window.ResizeObserver&&(e.popupObserver=new ResizeObserver(()=>f()),e.popupObserver.observe(e.fieldRow),e.popupObserver.observe(e.dialog)),e.dispose=()=>{k(e,!1),cancelAnimationFrame(e.positionFrame),e.popupObserver?.disconnect(),document.removeEventListener("pointerdown",p,!0),document.removeEventListener("focusin",p),e.root.removeEventListener("keydown",i),window.removeEventListener("resize",f),document.removeEventListener("scroll",f,!0),window.visualViewport?.removeEventListener("resize",f),window.visualViewport?.removeEventListener("scroll",f)}}function Me(e){let t=JSON.stringify(e.options);if(e.renderSignature===t)return;let a=e.isOpen?document.activeElement:null,r=a?.dataset?.date,o=a?.id,n=e.options;if(e.label=String(n.Label||{DatePicker:"Date",TimePicker:"Time",DateTimePicker:"Date and time",DateRangePicker:"Date range"}[e.kind]),e.locale=String(n.Locale||"en-US"),new Intl.DateTimeFormat(e.locale),e.format=ye.includes(n.DateFormat)?n.DateFormat:"YYYY-MM-DD",e.cycle=Number(n.HourCycle)===12?12:24,e.step=Number(n.MinuteStep??15),!Number.isInteger(e.step)||e.step<1||e.step>60)throw Error("MinuteStep must be a whole number from 1 to 60.");if(e.firstDay=Number(n.FirstDayOfWeek??1),!Number.isInteger(e.firstDay)||e.firstDay<0||e.firstDay>6)throw Error("FirstDayOfWeek must be 0\u20136.");e.disabledDates=new Set(Z(n.DisabledDatesJson??n.DisabledDates,"DisabledDates").map(i=>typeof i=="string"?i:i.Date));for(let i of e.disabledDates)if(!b(i))throw Error("DisabledDates must contain ISO calendar dates.");for(let i of["Min","Max"])if(n[i]&&!(e.timeOnly?L(n[i]):b(S(n[i]))&&(!e.dateTime||L(F(n[i])))))throw Error(i+" must use the documented ISO value format.");if(n.Min&&n.Max&&n.Min>n.Max)throw Error("Min must be on or before Max.");for(let i of["MinRangeDays","MaxRangeDays"])if(n[i]!==void 0&&(!Number.isInteger(Number(n[i]))||Number(n[i])<0))throw Error(i+" must be a non-negative whole number.");if(n.MinRangeDays&&n.MaxRangeDays&&Number(n.MinRangeDays)>Number(n.MaxRangeDays))throw Error("MinRangeDays must not exceed MaxRangeDays.");let m=e.range?[String(n.StartDate||""),String(n.EndDate||"")]:[String(n.Value||"")],h=JSON.stringify(m),l=h!==e.inputSignature;if(e.inputSignature=h,e.range?(e.start=m[0],e.end=m[1]):e.value=m[0],e.fields.forEach((i,f)=>{i.label.textContent=e.range?e.label+(f?" \u2014 end":" \u2014 start"):e.dateTime?e.label+(f?" \u2014 time":" \u2014 date"):e.label,i.input.disabled=!!n.IsDisabled,i.input.readOnly=!!n.IsReadOnly,i.input.required=!!n.IsRequired,i.input.placeholder=String(n.Placeholder||(e.timeOnly||e.dateTime&&f?e.cycle===12?"9:00 AM":"09:00":e.format))}),e.hint.textContent=e.timeOnly?(e.cycle===12?"h:mm AM/PM":"HH:mm")+" \xB7 local time":e.format+(e.dateTime?" \xB7 "+(e.cycle===12?"h:mm AM/PM":"HH:mm")+" local time":""),e.title.textContent=e.label,e.clearButton.disabled=!!n.IsDisabled||!!n.IsReadOnly,l||e.previousFormat!==e.format||e.previousCycle!==e.cycle){le(e);let i=m.some(Boolean);B(e,i?de(e,e.timeOnly?"":e.range?e.start:S(e.value),e.end||"",e.timeOnly?e.value:F(e.value)):""),e.previousFormat=e.format,e.previousCycle=e.cycle}e.monthSelect.replaceChildren();for(let i=0;i<12;i++)C(e.monthSelect,i,new Intl.DateTimeFormat(e.locale,{month:"long"}).format(new Date(2024,i,1)));e.calendar.tHead?.remove();let g=c("thead"),p=c("tr");for(let i=0;i<7;i++){let f=new Date(2024,0,7+(i+e.firstDay)%7),d=c("th","",new Intl.DateTimeFormat(e.locale,{weekday:"short"}).format(f));d.scope="col",d.abbr=new Intl.DateTimeFormat(e.locale,{weekday:"long"}).format(f),p.append(d)}if(g.append(p),e.calendar.prepend(g),e.presets.replaceChildren(),e.presets.hidden=!e.range,e.range)for(let i of Z(n.PresetsJson??n.Presets,"Presets")){if(!i.Label||!b(i.StartDate)||!b(i.EndDate))throw Error("Presets need Label, StartDate and EndDate.");let f=x(i.Label,()=>{e.draftStart=i.StartDate,e.draftEnd=i.EndDate,e.rangeNext="start",e.focusDate=e.draftStart,e.month=e.focusDate.slice(0,7),e.dialogError.textContent="",_(e),s(e)});f.disabled=!!oe(i.StartDate,i.EndDate,{...n,disabled:e.disabledDates}),e.presets.append(f)}e.isOpen&&(n.IsDisabled||n.IsReadOnly||l?k(e):(_(e),J(e),r?e.calendar.querySelector('[data-date="'+r+'"]')?.focus({preventScroll:!0}):o&&document.getElementById(o)?.focus({preventScroll:!0}),Y(e))),e.renderSignature=t}var ue=()=>me("DateTimePicker",we,Me);function Oe(e,t={},a={}){return ue(),X(e,"DateTimePicker",t,r=>({Change:o=>(r({Value:o}),a.Change?.(o)),ValidationChanged:(o,n)=>a.ValidationChanged?.(o,n),OpenChanged:o=>a.OpenChanged?.(o),Error:o=>a.Error?.(o)}),["DisabledDates"],[])}export{Oe as a};
File without changes
File without changes
@@ -0,0 +1 @@
1
+ import{a as c,d as b,g as C}from"./chunk-EOKNLCNS.js";function h(n,r={}){let i={...r},e=!1,t,o={},a=b(n,i),l=a.body,u=["id","aria-describedby","aria-invalid","aria-required"];function s(){if(t)for(let d of u){let p=o[d];p===null?t.removeAttribute(d):t.setAttribute(d,p)}}function m(d){if(e)throw Error("Component is destroyed.");i={...i,...d},i.Control!==t&&(s(),l.replaceChildren(),t=i.Control,t&&(o=Object.fromEntries(u.map(p=>[p,t.getAttribute(p)])),l.append(t))),a.paint(i,t?[t]:[]),t&&o["aria-describedby"]&&t.setAttribute("aria-describedby",[o["aria-describedby"],t.getAttribute("aria-describedby")].filter(Boolean).join(" "))}return m({}),{element:a.root,content:l,update:m,destroy(){e||(e=!0,s(),a.root.remove())}}}function f(n,r,i={}){let e={...i},t=!1,o=c("div","blu-columns"),a=Array.from({length:r},(u,s)=>{let m=c("div","blu-columns__column");return m.dataset.column=String(s+1),o.append(m),m});n.append(o);function l(u){if(t)throw Error("Component is destroyed.");e={...e,...u};let s={Equal:"minmax(0,1fr) minmax(0,1fr)",OneThirdTwoThirds:"minmax(0,1fr) minmax(0,2fr)",TwoThirdsOneThird:"minmax(0,2fr) minmax(0,1fr)",OneQuarterThreeQuarters:"minmax(0,1fr) minmax(0,3fr)",ThreeQuartersOneQuarter:"minmax(0,3fr) minmax(0,1fr)"};if(r===2&&e.Ratio&&!s[e.Ratio])throw Error("Unsupported two-column ratio.");if(r===3&&e.Ratio&&!["Equal","WideCenter"].includes(e.Ratio))throw Error("Unsupported three-column ratio.");if(r===4&&e.Ratio&&e.Ratio!=="Equal")throw Error("Four columns use equal widths.");o.className="blu-columns blu-columns--stack-"+(e.StackAt||"Medium").toLowerCase()+(e.EqualHeight?" blu-columns--equal-height":"")+(e.ExtendedClass?" "+e.ExtendedClass:""),o.style.setProperty("--blu-columns-tracks",r===2?s[e.Ratio||"Equal"]:r===3&&e.Ratio==="WideCenter"?"minmax(0,1fr) minmax(0,2fr) minmax(0,1fr)":`repeat(${r}, minmax(0, 1fr))`),o.style.setProperty("--blu-columns-gap",C(e.Gap,24,0,96)+"px"),o.style.alignItems=e.EqualHeight?"stretch":(e.Align||"Stretch").toLowerCase()}return l({}),{element:o,columns:a,update:l,destroy(){t||(t=!0,o.remove())}}}var E=(n,r={})=>f(n,2,r),y=(n,r={})=>f(n,3,r),g=(n,r={})=>f(n,4,r);export{h as a,E as b,y as c,g as d};
File without changes
@@ -0,0 +1 @@
1
+ import{a as X}from"./chunk-MEEQNPGM.js";import{c as G,d as Q}from"./chunk-5TEIXA4R.js";var C=G("advanced",()=>({instances:new Map,serial:0})),fe=()=>`blu-advanced-${++C.serial}`;function c(e,t,a){let r=document.createElement(e);return t&&(r.className=t),a!==void 0&&(r.textContent=String(a)),r}function u(e,t,a){return a==null?e.removeAttribute(t):e.setAttribute(t,String(a)),e}function x(e,t,a="blu-picker__button"){let r=c("button",a,e);return r.type="button",r.addEventListener("click",t),r}function I(e,t,...a){if(!e.dead)try{Promise.resolve(e.events[t]?.(...a)).catch(r=>K(e,r))}catch(r){K(e,r)}}function K(e,t){if(e.dead)return;let a=t?.message||String(t);e.notice.textContent=a,e.lastError!==a&&(e.lastError=a,I(e,"Error",a))}function Z(e,t){let a=typeof e=="string"?JSON.parse(e||"[]"):e||[];if(!Array.isArray(a))throw Error(t+" must be a list.");return a}function me(e,t,a){let r=o=>{let n=C.instances.get(o);!n||n.kind!==e||(n.dead=!0,n.dispose?.(),n.root.remove(),n.notice.remove(),n.host._bluAdvancedOwner===o&&delete n.host._bluAdvancedOwner,C.instances.delete(o))};return Q(e,()=>({sync(o,n={},m={},h){let l=document.getElementById(o);if(!l)return e+" host was not found.";let g=h||o,p=C.instances.get(g);p&&(p.host!==l||p.kind!==e)&&(p.destroy(p.key),p=null);let i=C.instances.get(l._bluAdvancedOwner);if(i&&i!==p&&i.destroy(i.key),!p){p={key:g,host:l,kind:e,uid:fe(),options:n,events:m,dead:!1,destroy:r},p.root=c("div"),p.notice=u(c("div","blu-advanced-sr"),"role","status"),u(p.notice,"aria-atomic","true"),l.append(p.root,p.notice),C.instances.set(g,p),l._bluAdvancedOwner=g;try{t(p)}catch(f){throw r(g),f}}p.options=n,p.events=m;try{return a(p),l.dataset.bluRuntimeReady="true",""}catch(f){return K(p,f),f.message||String(f)}},destroy:r}))}var v=e=>String(e).padStart(2,"0");function q(e){return String(e.getFullYear()).padStart(4,"0")+"-"+v(e.getMonth()+1)+"-"+v(e.getDate())}function b(e){let t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(String(e));if(!t||+t[1]<1||+t[1]>9999)return null;let a=new Date(2e3,+t[2]-1,+t[3],12);return a.setFullYear(+t[1]),q(a)===e?a:null}function L(e){let t=/^(\d{2}):(\d{2})$/.exec(String(e));return t&&+t[1]<24&&+t[2]<60?t[1]+":"+t[2]:null}function ee(e,t="YYYY-MM-DD"){if(e=String(e).trim(),!e)return"";let a=e;if(t!=="YYYY-MM-DD"){let r=/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/.exec(e);if(!r)return null;a=r[3]+"-"+v(+(t==="DD/MM/YYYY"?r[2]:r[1]))+"-"+v(+(t==="DD/MM/YYYY"?r[1]:r[2]))}return b(a)?a:null}function te(e,t="YYYY-MM-DD"){if(!e)return"";let a=e.split("-");return t==="MM/DD/YYYY"?a[1]+"/"+a[2]+"/"+a[0]:t==="DD/MM/YYYY"?a[2]+"/"+a[1]+"/"+a[0]:e}function he(e,t=24){if(e=String(e).trim(),!e)return"";let a=/^(\d{1,2}):(\d{2})(?:\s*(AM|PM))?$/i.exec(e);return!a||+a[2]>59||(t===12?!a[3]||+a[1]<1||+a[1]>12:a[3]||+a[1]>23)?null:v(a[3]?+a[1]%12+(a[3].toUpperCase()==="PM"?12:0):+a[1])+":"+a[2]}function O(e,t=24){if(!e)return"";let[a,r]=e.split(":").map(Number);return t===12?(a%12||12)+":"+v(r)+" "+(a<12?"AM":"PM"):v(a)+":"+v(r)}function ae(e,t){let a=b(e);return a.setDate(a.getDate()+t),q(a)}function ie(e,t){let a=b(e),r=a.getDate();return a.setDate(1),a.setMonth(a.getMonth()+t),a.setDate(Math.min(r,new Date(a.getFullYear(),a.getMonth()+1,0).getDate())),q(a)}function ge(e,t){let a=b(e),r=b(t);return Math.round((r.getTime()-a.getTime())/864e5)}function z(e,t,a,r){return b(e)?t&&e<t?"Choose "+t+" or later.":a&&e>a?"Choose "+a+" or earlier.":r?.has(e)?"This date is unavailable.":"":"Enter a real calendar date."}function oe(e,t,a={}){if(!e||!t)return"Choose both a start date and an end date.";let r=z(e,a.Min,a.Max,a.disabled)||z(t,a.Min,a.Max,a.disabled);if(r)return r;if(t<e)return"End date must be on or after start date.";let o=ge(e,t)+1;if(a.MinRangeDays&&o<a.MinRangeDays)return"Choose at least "+a.MinRangeDays+" days.";if(a.MaxRangeDays&&o>a.MaxRangeDays)return"Choose no more than "+a.MaxRangeDays+" days.";if(a.disabled){for(let n of a.disabled)if(n>=e&&n<=t)return"The range includes an unavailable date."}return""}var ye=["YYYY-MM-DD","MM/DD/YYYY","DD/MM/YYYY"],N=()=>q(new Date),S=e=>String(e||"").split("T")[0],F=e=>String(e||"").split("T")[1]||"";function w(e,t){let a=b(t);return a?new Intl.DateTimeFormat(e.locale,{dateStyle:"full"}).format(a):t}function B(e,t,a=e.fields){e.error.textContent=t,e.error.hidden=!t||e.isOpen,e.dialogError&&(e.dialogError.textContent=e.isOpen?t:"");for(let o of e.fields)u(o.input,"aria-invalid",t&&a.includes(o)?"true":null);let r=!t;(e.valid!==r||e.validationMessage!==t)&&(e.valid=r,e.validationMessage=t,I(e,"ValidationChanged",r,t))}function H(e,t){return z(t,S(e.options.Min),S(e.options.Max),e.disabledDates)}function be(e,t,a){if(!L(t))return"Enter a valid time.";let r=e.dateTime?a+"T"+t:t,o=e.options.Min,n=e.options.Max;return o&&r<o?"Choose "+o+" or later.":n&&r>n?"Choose "+n+" or earlier.":""}function de(e,t,a,r){if(e.range)return!t&&!a&&!e.options.IsRequired?"":oe(t,a,{...e.options,disabled:e.disabledDates});if(!t&&!r)return e.options.IsRequired?"A "+(e.timeOnly?"time":"date")+" is required.":"";if(!e.timeOnly){if(!t)return"Choose a date.";let o=H(e,t);if(o)return o}return e.hasTime?r?be(e,r,t):"Choose a time.":""}function le(e){e.timeOnly?e.fields[0].input.value=O(e.value,e.cycle):(e.fields[0].input.value=te(e.range?e.start:S(e.value),e.format),e.range&&(e.fields[1].input.value=te(e.end,e.format)),e.dateTime&&(e.fields[1].input.value=O(F(e.value),e.cycle)));let t=e.range?[e.start,e.end].filter(Boolean).join(" to "):e.value;e.typedDirty=!1,e.clearButton.hidden=e.options.ShowClear===!1||!t}function k(e,t=!0){if(e.isOpen){e.isOpen=!1,e.dialog.hidePopover&&e.dialog.matches(":popover-open")&&e.dialog.hidePopover(),e.dialog.hidden=!0,e.error.hidden=!e.validationMessage;for(let{input:a}of e.fields)u(a,"aria-expanded","false");t&&e.anchor?.isConnected&&!e.anchor.disabled&&e.anchor.focus({preventScroll:!0}),I(e,"OpenChanged",!1)}}function Y(e){if(!e.isOpen||e.dead)return;let t=e.anchor.getBoundingClientRect(),a=window.visualViewport,r=a?.offsetLeft||0,o=a?.offsetTop||0,n=a?.width||document.documentElement.clientWidth,m=a?.height||window.innerHeight,h=6,l=8;if(t.bottom<=o||t.top>=o+m||t.right<=r||t.left>=r+n){k(e,!1);return}let g=e.dialog,p=Math.min(e.timeOnly?300:344,n-l*2);g.dataset.compact=String(m<420),g.style.width=p+"px",g.style.maxHeight="none";let i=Math.max(0,o+m-l-t.bottom-h),f=Math.max(0,t.top-h-o-l),d=g.scrollHeight+2,D=d>i&&f>i,E=Math.max(0,m-l*2);g.style.maxHeight=E+"px";let y=e.fieldRow.getBoundingClientRect();g.style.left=Math.max(r+l,Math.min(y.left+(y.width-p)/2,r+n-l-p))+"px";let M=D?t.top-h-d:t.bottom+h;g.style.top=Math.max(o+l,Math.min(M,o+m-l-Math.min(d,E)))+"px",g.dataset.placement=D?"top":"bottom"}function ne(e){(e.timeOnly||e.dateTime&&e.anchor===e.fields[1].input?e.hours:e.calendar.querySelector('[data-date="'+e.focusDate+'"]')||e.monthSelect).focus({preventScroll:!0})}function V(e,t,a,r,o=!1){let n=de(e,t,a,r);if(B(e,n),n)return e.dialogError.textContent=n,!1;let m=document.activeElement===e.clearButton&&!t&&!a&&!r,h=e.timeOnly?r:e.dateTime?t?t+"T"+r:"":t,l=e.range?e.start!==t||e.end!==a:e.value!==h;return e.range?(e.start=t,e.end=a,e.options.StartDate=t,e.options.EndDate=a):(e.value=h,e.options.Value=h),e.inputSignature=JSON.stringify(e.range?[e.start,e.end]:[e.value]),le(e),o||k(e),m&&e.fields[0].input.focus({preventScroll:!0}),e.notice.textContent=e.range?t?w(e,t)+" to "+w(e,a):"Date range cleared":h?"Selected "+(e.timeOnly?O(h,e.cycle):w(e,t)+(e.hasTime?" at "+O(r,e.cycle):"")):"Selection cleared",l&&(e.range?I(e,"Change",t,a):I(e,"Change",h)),!0}function re(e,t=!1){if(e.options.IsDisabled||e.options.IsReadOnly)return;let a=e.timeOnly?"":ee(e.fields[0].input.value,e.format),r=e.range?ee(e.fields[1].input.value,e.format):"",o=e.hasTime?he(e.fields[e.timeOnly?0:1].input.value,e.cycle):"";if(a===null||r===null){B(e,"Enter a real date using "+e.format+".");return}if(o===null){B(e,e.cycle===12?"Enter a time such as 9:15 AM.":"Enter a time such as 14:30.");return}V(e,a,r,o,t)&&t&&(e.draftStart=a,e.draftEnd=r,e.draftTime=o,a&&(e.focusDate=a,e.month=a.slice(0,7)),_(e),J(e),s(e),Y(e))}function De(e){let t=e.range||e.dateTime?2:1;e.fields=[];for(let a=0;a<t;a++){let r=c("div","blu-picker__field"),o=c("label"),n=c("input","blu-picker__input");n.type="text",n.id=e.uid+"-input-"+a,o.htmlFor=n.id,n.autocomplete="off",n.spellcheck=!1,u(n,"role","combobox"),u(n,"aria-haspopup","dialog"),u(n,"aria-expanded","false"),u(n,"aria-autocomplete","none"),u(n,"aria-controls",e.uid+"-dialog"),u(n,"aria-describedby",e.uid+"-hint "+e.uid+"-error "+e.uid+"-keyboard"),n.addEventListener("input",()=>{e.typedDirty=!0}),n.addEventListener("change",()=>re(e,e.isOpen)),n.addEventListener("pointerdown",l=>{l.pointerType==="mouse"&&(e.touchOpen=!1,n.inputMode="text"),(l.pointerType==="touch"||l.pointerType==="pen")&&e.manualInput!==n&&!e.options.IsDisabled&&!e.options.IsReadOnly&&(l.preventDefault(),e.touchOpen=!0,n.inputMode="none",P(e,n,!0))}),n.addEventListener("click",l=>{e.manualInput!==n&&(e.touchOpen?(l.preventDefault(),P(e,n,!0)):P(e,n,!1))}),n.addEventListener("blur",()=>{e.manualInput===n&&(e.manualInput=null)}),n.addEventListener("keydown",l=>{l.ctrlKey||l.metaKey||l.shiftKey||(l.key==="ArrowDown"&&(l.preventDefault(),P(e,n,!0)),l.key==="Enter"&&(l.preventDefault(),!e.isOpen&&!e.typedDirty?P(e,n,!0):re(e)),l.key==="Tab"&&k(e,!1))});let m=c("div","blu-picker__field-control"),h=u(c("span","blu-picker__field-icon"),"aria-hidden","true");h.innerHTML=e.timeOnly||e.dateTime&&a?'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7"><circle cx="12" cy="12" r="8.5"/><path d="M12 7v5l3 2"/></svg>':'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7"><rect x="4" y="5" width="16" height="16" rx="3"/><path d="M8 3v4m8-4v4M4 10h16m-11 4h2m3 0h2m-7 3h2"/></svg>',m.append(n,h),r.append(o,m),e.fields.push({field:r,label:o,input:n}),e.fieldRow.append(r)}}function T(e,t,a){let r=c("option","",a);return r.value=String(t),e.append(r),r}function R(e,t,a){let r=c("label","blu-picker__select-field"),o=c("span","blu-picker__select-caption",t),n=c("select","blu-picker__input");return n.id=e.uid+"-"+a,r.append(o,n),{wrap:r,select:n}}function ve(e){if(e.button!==0)return;let t=e.target.closest?.("button");!t||t.disabled||(e.preventDefault(),t.focus({preventScroll:!0}))}function A(e,t){let a=S(e.options.Min)||"0001-01-01",r=S(e.options.Max)||"9999-12-31";t=t<a?a:t>r?r:t,b(t)&&(e.focusDate=t,e.month=t.slice(0,7),_(e),e.calendar.querySelector('[data-date="'+t+'"]')?.focus({preventScroll:!0}))}function Se(e,t,a){if(t.altKey||t.ctrlKey||t.metaKey)return;let r,o={ArrowLeft:-1,ArrowRight:1,ArrowUp:-7,ArrowDown:7};if(t.key in o)r=ae(a,o[t.key]);else if(t.key==="Home"||t.key==="End"){let n=(b(a).getDay()-e.firstDay+7)%7;r=ae(a,t.key==="Home"?-n:6-n)}else(t.key==="PageUp"||t.key==="PageDown")&&(r=ie(a,(t.key==="PageUp"?-1:1)*(t.shiftKey?12:1)));r&&(t.preventDefault(),A(e,r))}function ce(e,t){if(!H(e,t)){if(e.dialogError.textContent="",e.focusDate=t,e.range?e.rangeNext==="start"?(e.draftStart=t,e.draftEnd="",e.rangeNext="end"):(t<e.draftStart?(e.draftEnd=e.draftStart,e.draftStart=t):e.draftEnd=t,e.rangeNext="start"):e.draftStart=t,!e.hasTime&&!e.range){V(e,t,"","");return}_(e),e.calendar.querySelector('[data-date="'+t+'"]')?.focus({preventScroll:!0}),s(e)}}function s(e){let t=e.range?e.draftStart?w(e,e.draftStart)+(e.draftEnd?" to "+w(e,e.draftEnd):" \u2014 choose an end date"):"Choose a start date":e.hasTime?(e.draftStart?w(e,e.draftStart)+" \xB7 ":"")+O(e.draftTime,e.cycle):"",a=r=>b(r)?new Intl.DateTimeFormat(e.locale,{month:"short",day:"numeric"}).format(b(r)):"";e.selectionSpeech.textContent=t,e.selectionVisual.textContent=e.range?e.draftStart?a(e.draftStart)+(e.draftEnd?" \u2013 "+a(e.draftEnd):" \u2014 choose end"):"Choose start date":e.dateTime?a(e.draftStart)+" \xB7 "+O(e.draftTime,e.cycle):e.timeOnly?O(e.draftTime,e.cycle):"",e.selection.hidden=!t}function _(e){let t=b(e.month+"-01");if(!t)return;let a=t.getFullYear(),r=t.getMonth(),o=Number(S(e.options.Min).slice(0,4))||1,n=Number(S(e.options.Max).slice(0,4))||9999;e.monthSelect.value=String(r),e.yearInput.value=String(a),u(e.yearInput,"aria-invalid",null),e.yearInput.min=String(o),e.yearInput.max=String(n);let m=new Intl.DateTimeFormat(e.locale,{month:"long",year:"numeric"}).format(t);e.caption.textContent!==m&&(e.caption.textContent=m);let h=(t.getDay()-e.firstDay+7)%7,l=new Date(a,r+1,0).getDate();if(e.focusDate.startsWith(e.month)||(e.focusDate=e.month+"-01"),!e.dayCells){let i=c("tbody");e.dayCells=[];for(let f=0;f<6;f++){let d=c("tr");for(let D=0;D<7;D++){let E=c("td"),y=x("",()=>ce(e,y.dataset.date),"blu-picker__day");y.addEventListener("keydown",M=>Se(e,M,y.dataset.date)),y.addEventListener("focus",()=>{e.focusDate=y.dataset.date;for(let M of e.dayCells)M.button.tabIndex=M.button===y?0:-1}),E.append(y),d.append(E),e.dayCells.push({cell:E,button:y})}i.append(d)}e.calendar.append(i)}for(let i=0;i<e.dayCells.length;i++){let{cell:f,button:d}=e.dayCells[i],D=i-h+1,E=D>0&&D<=l;if(d.hidden=!E,!E){d.tabIndex=-1,delete d.dataset.date,u(f,"aria-selected",null);continue}let y=e.month+"-"+v(D),M=y===e.draftStart||e.range&&y===e.draftEnd,U=e.range&&e.draftStart&&e.draftEnd&&y>e.draftStart&&y<e.draftEnd,W=H(e,y),$=!!(M||U),pe=e.range&&M?y===e.draftStart?e.draftEnd?", range starts here; "+w(e,e.draftStart)+" to "+w(e,e.draftEnd):", start date; choose an end date":", range ends here; "+w(e,e.draftStart)+" to "+w(e,e.draftEnd):"",j=w(e,y)+($?", selected":"")+pe+(W?", unavailable":"");d.dataset.date=y,d.tabIndex=y===e.focusDate?0:-1,d.textContent!==String(D)&&(d.textContent=String(D)),d.getAttribute("aria-label")!==j&&u(d,"aria-label",j),u(f,"aria-selected",String($)),u(d,"aria-disabled",W?"true":null),u(d,"aria-current",y===N()?"date":null),d.dataset.selected=String(M),d.dataset.between=String(!!U)}for(let i=0;i<6;i++)e.dayCells[i*7].cell.parentElement.hidden=i*7-h+1>l;let g=S(e.options.Min),p=S(e.options.Max);e.prev.disabled=!!g&&e.month<=g.slice(0,7)||a===1&&r===0,e.next.disabled=!!p&&e.month>=p.slice(0,7)||a===9999&&r===11,e.todayButton.hidden=e.timeOnly||e.options.ShowToday===!1,e.todayButton.disabled=!!H(e,N())}function J(e){if(!e.hasTime)return;let[t,a]=(e.draftTime||"09:00").split(":").map(Number);e.hours.replaceChildren(),e.minutes.replaceChildren();for(let r=0;r<(e.cycle===12?12:24);r++)T(e.hours,e.cycle===12?r+1:r,v(e.cycle===12?r+1:r));for(let r=0;r<60;r+=e.step)T(e.minutes,r,v(r));a%e.step&&T(e.minutes,a,v(a)+" (entered)"),e.hours.value=String(e.cycle===12?t%12||12:t),e.minutes.value=String(a),e.period.value=t<12?"AM":"PM",e.periodField.hidden=e.cycle!==12,s(e)}function P(e,t=e.fields[0].input,a=!0){if(e.options.IsDisabled||e.options.IsReadOnly)return;if(e.anchor=t,e.manualInput=null,e.typeButton.hidden=!e.touchOpen,e.isOpen){e.range&&(e.rangeNext=t===e.fields[1].input&&e.draftStart?"end":"start"),Y(e),a&&ne(e);return}e.draftStart=e.timeOnly?"":e.range?e.start:S(e.value),e.draftEnd=e.end||"",e.draftTime=e.timeOnly?e.value:F(e.value),e.hasTime&&!L(e.draftTime)&&(e.draftTime="09:00"),e.rangeNext="start",e.range&&t===e.fields[1].input&&e.draftStart&&(e.rangeNext="end");let r=e.range&&e.rangeNext==="end"?e.draftEnd:e.draftStart;e.focusDate=b(r)?r:b(e.draftStart)?e.draftStart:N();let o=S(e.options.Min),n=S(e.options.Max);e.timeOnly||(o&&e.focusDate<o&&(e.focusDate=o),n&&e.focusDate>n&&(e.focusDate=n)),e.month=e.focusDate.slice(0,7),e.dialogError.textContent="",_(e),J(e),s(e),e.isOpen=!0,e.dialog.hidden=!1,e.dialog.showPopover&&e.dialog.showPopover(),e.dialog.scrollTop=0;for(let{input:m}of e.fields)u(m,"aria-expanded","true");Y(e),a&&e.isOpen&&ne(e),I(e,"OpenChanged",!0)}function we(e){e.range=e.kind==="DateRangePicker",e.timeOnly=e.kind==="TimePicker",e.dateTime=e.kind==="DateTimePicker",e.hasTime=e.timeOnly||e.dateTime,e.root.className="blu-picker",e.fieldRow=c("div","blu-picker__fields"),e.error=u(c("div","blu-picker__error"),"role","alert"),e.error.id=e.uid+"-error",e.error.hidden=!0,e.hint=c("div","blu-picker__hint"),e.hint.id=e.uid+"-hint",e.actions=c("div","blu-picker__actions"),e.clearButton=x("Clear",()=>V(e,"","","")),e.actions.append(e.clearButton),e.root.append(e.fieldRow,e.hint,e.actions,e.error),De(e);let t=c("span","blu-advanced-sr","Click the field or press Down Arrow to browse. Escape closes the popup.");t.id=e.uid+"-keyboard",e.root.append(t),e.dialog=c("div","blu-picker__dialog blu-picker__popup"),e.dialog.id=e.uid+"-dialog",e.dialog.hidden=!0,u(e.dialog,"role","dialog"),u(e.dialog,"aria-labelledby",e.uid+"-title"),u(e.dialog,"aria-modal","false"),e.dialog.showPopover&&u(e.dialog,"popover","manual"),e.root.append(e.dialog),e.dialog.addEventListener("mousedown",ve),e.title=c("h2","blu-advanced-sr"),e.title.id=e.uid+"-title",e.dialog.append(e.title),e.presets=c("div","blu-picker__presets"),e.dialog.append(e.presets),e.calendarArea=c("div","blu-picker__calendar-area"),e.calendarArea.hidden=e.timeOnly,e.dialog.append(e.calendarArea);let a=c("div","blu-picker__calendar-nav"),r=R(e,"Month","month");e.monthSelect=r.select;let o=c("label","blu-picker__select-field");o.append(c("span","blu-picker__select-caption","Year")),e.yearInput=c("input","blu-picker__input"),e.yearInput.type="number",e.yearInput.step="1",o.append(e.yearInput);let n=d=>{let D=ie(e.focusDate,d);A(e,D)};e.prev=x("\u2039",()=>n(-1)),u(e.prev,"aria-label","Previous month"),e.next=x("\u203A",()=>n(1)),u(e.next,"aria-label","Next month"),a.append(e.prev,r.wrap,o,e.next),e.calendarArea.append(a),e.monthSelect.addEventListener("change",()=>A(e,String(e.yearInput.value).padStart(4,"0")+"-"+v(+e.monthSelect.value+1)+"-01")),e.yearInput.addEventListener("change",()=>{let d=Number(e.yearInput.value);if(!Number.isInteger(d)||d<+e.yearInput.min||d>+e.yearInput.max){e.dialogError.textContent="Enter a year from "+e.yearInput.min+" to "+e.yearInput.max+".",u(e.yearInput,"aria-invalid","true");return}u(e.yearInput,"aria-invalid",null),e.dialogError.textContent="",A(e,String(d).padStart(4,"0")+"-"+v(+e.monthSelect.value+1)+"-01")}),e.caption=u(c("h3","blu-picker__caption blu-advanced-sr"),"aria-live","polite"),e.caption.id=e.uid+"-caption",e.calendarArea.append(e.caption),e.calendar=u(c("table","blu-picker__calendar"),"role","grid"),u(e.calendar,"aria-labelledby",e.caption.id),e.range&&u(e.calendar,"aria-multiselectable","true"),e.calendarArea.append(e.calendar),e.todayButton=x("Today",()=>{e.focusDate=N(),e.month=e.focusDate.slice(0,7),ce(e,e.focusDate)}),e.calendarArea.append(c("p","blu-advanced-sr","Arrow keys move by day or week. Home/End move within the week. Page Up/Down change month; hold Shift to change year.")),e.timeArea=c("div","blu-picker__time-area"),e.timeArea.hidden=!e.hasTime,e.dialog.append(e.timeArea);let m=R(e,"Hour","hour"),h=R(e,"Minute","minute"),l=R(e,"AM / PM","period");e.hours=m.select,e.minutes=h.select,e.period=l.select,e.periodField=l.wrap,T(e.period,"AM","AM"),T(e.period,"PM","PM"),e.timeArea.append(m.wrap,h.wrap,l.wrap);for(let d of[e.hours,e.minutes,e.period])d.addEventListener("change",()=>{let D=+e.hours.value;e.cycle===12&&(D=D%12+(e.period.value==="PM"?12:0)),e.draftTime=v(D)+":"+v(+e.minutes.value),e.dialogError.textContent="",s(e)});e.selection=u(c("div","blu-picker__selection"),"role","status"),u(e.selection,"aria-atomic","true"),e.selectionSpeech=c("span","blu-advanced-sr"),e.selectionVisual=u(c("span"),"aria-hidden","true"),e.selection.append(e.selectionSpeech,e.selectionVisual),e.dialogError=u(c("div","blu-picker__error"),"role","alert"),e.dialogError.id=e.uid+"-dialog-error",u(e.yearInput,"aria-describedby",e.dialogError.id),e.apply=x("Apply",()=>V(e,e.draftStart,e.draftEnd,e.draftTime),"blu-picker__button blu-picker__button--primary"),e.apply.hidden=!e.range&&!e.hasTime,e.typeButton=x("Type",()=>{let d=e.anchor;k(e,!1),e.manualInput=d,d.inputMode="text",d.focus({preventScroll:!0})}),u(e.typeButton,"aria-label","Type a date or time"),e.typeButton.hidden=!0;let g=c("div","blu-picker__popup-actions");g.append(e.typeButton,e.todayButton,x("Cancel",()=>k(e)),e.apply),e.dialog.append(e.selection,e.dialogError,g);let p=d=>{e.isOpen&&!e.root.contains(d.target)&&k(e,!1)},i=d=>{e.isOpen&&d.key==="Escape"&&!d.defaultPrevented&&(d.preventDefault(),d.stopPropagation(),k(e))},f=d=>{!e.isOpen||e.dialog.contains(d?.target)||(cancelAnimationFrame(e.positionFrame),e.positionFrame=requestAnimationFrame(()=>Y(e)))};document.addEventListener("pointerdown",p,!0),document.addEventListener("focusin",p),e.root.addEventListener("keydown",i),window.addEventListener("resize",f),document.addEventListener("scroll",f,!0),window.visualViewport?.addEventListener("resize",f),window.visualViewport?.addEventListener("scroll",f),window.ResizeObserver&&(e.popupObserver=new ResizeObserver(()=>f()),e.popupObserver.observe(e.fieldRow),e.popupObserver.observe(e.dialog)),e.dispose=()=>{k(e,!1),cancelAnimationFrame(e.positionFrame),e.popupObserver?.disconnect(),document.removeEventListener("pointerdown",p,!0),document.removeEventListener("focusin",p),e.root.removeEventListener("keydown",i),window.removeEventListener("resize",f),document.removeEventListener("scroll",f,!0),window.visualViewport?.removeEventListener("resize",f),window.visualViewport?.removeEventListener("scroll",f)}}function Me(e){let t=JSON.stringify(e.options);if(e.renderSignature===t)return;let a=e.isOpen?document.activeElement:null,r=a?.dataset?.date,o=a?.id,n=e.options;if(e.label=String(n.Label||{DatePicker:"Date",TimePicker:"Time",DateTimePicker:"Date and time",DateRangePicker:"Date range"}[e.kind]),e.locale=String(n.Locale||"en-US"),new Intl.DateTimeFormat(e.locale),e.format=ye.includes(n.DateFormat)?n.DateFormat:"YYYY-MM-DD",e.cycle=Number(n.HourCycle)===12?12:24,e.step=Number(n.MinuteStep??15),!Number.isInteger(e.step)||e.step<1||e.step>60)throw Error("MinuteStep must be a whole number from 1 to 60.");if(e.firstDay=Number(n.FirstDayOfWeek??1),!Number.isInteger(e.firstDay)||e.firstDay<0||e.firstDay>6)throw Error("FirstDayOfWeek must be 0\u20136.");e.disabledDates=new Set(Z(n.DisabledDatesJson??n.DisabledDates,"DisabledDates").map(i=>typeof i=="string"?i:i.Date));for(let i of e.disabledDates)if(!b(i))throw Error("DisabledDates must contain ISO calendar dates.");for(let i of["Min","Max"])if(n[i]&&!(e.timeOnly?L(n[i]):b(S(n[i]))&&(!e.dateTime||L(F(n[i])))))throw Error(i+" must use the documented ISO value format.");if(n.Min&&n.Max&&n.Min>n.Max)throw Error("Min must be on or before Max.");for(let i of["MinRangeDays","MaxRangeDays"])if(n[i]!==void 0&&(!Number.isInteger(Number(n[i]))||Number(n[i])<0))throw Error(i+" must be a non-negative whole number.");if(n.MinRangeDays&&n.MaxRangeDays&&Number(n.MinRangeDays)>Number(n.MaxRangeDays))throw Error("MinRangeDays must not exceed MaxRangeDays.");let m=e.range?[String(n.StartDate||""),String(n.EndDate||"")]:[String(n.Value||"")],h=JSON.stringify(m),l=h!==e.inputSignature;if(e.inputSignature=h,e.range?(e.start=m[0],e.end=m[1]):e.value=m[0],e.fields.forEach((i,f)=>{i.label.textContent=e.range?e.label+(f?" \u2014 end":" \u2014 start"):e.dateTime?e.label+(f?" \u2014 time":" \u2014 date"):e.label,i.input.disabled=!!n.IsDisabled,i.input.readOnly=!!n.IsReadOnly,i.input.required=!!n.IsRequired,i.input.placeholder=String(n.Placeholder||(e.timeOnly||e.dateTime&&f?e.cycle===12?"9:00 AM":"09:00":e.format))}),e.hint.textContent=e.timeOnly?(e.cycle===12?"h:mm AM/PM":"HH:mm")+" \xB7 local time":e.format+(e.dateTime?" \xB7 "+(e.cycle===12?"h:mm AM/PM":"HH:mm")+" local time":""),e.title.textContent=e.label,e.clearButton.disabled=!!n.IsDisabled||!!n.IsReadOnly,l||e.previousFormat!==e.format||e.previousCycle!==e.cycle){le(e);let i=m.some(Boolean);B(e,i?de(e,e.timeOnly?"":e.range?e.start:S(e.value),e.end||"",e.timeOnly?e.value:F(e.value)):""),e.previousFormat=e.format,e.previousCycle=e.cycle}e.monthSelect.replaceChildren();for(let i=0;i<12;i++)T(e.monthSelect,i,new Intl.DateTimeFormat(e.locale,{month:"long"}).format(new Date(2024,i,1)));e.calendar.tHead?.remove();let g=c("thead"),p=c("tr");for(let i=0;i<7;i++){let f=new Date(2024,0,7+(i+e.firstDay)%7),d=c("th","",new Intl.DateTimeFormat(e.locale,{weekday:"short"}).format(f));d.scope="col",d.abbr=new Intl.DateTimeFormat(e.locale,{weekday:"long"}).format(f),p.append(d)}if(g.append(p),e.calendar.prepend(g),e.presets.replaceChildren(),e.presets.hidden=!e.range,e.range)for(let i of Z(n.PresetsJson??n.Presets,"Presets")){if(!i.Label||!b(i.StartDate)||!b(i.EndDate))throw Error("Presets need Label, StartDate and EndDate.");let f=x(i.Label,()=>{e.draftStart=i.StartDate,e.draftEnd=i.EndDate,e.rangeNext="start",e.focusDate=e.draftStart,e.month=e.focusDate.slice(0,7),e.dialogError.textContent="",_(e),s(e)});f.disabled=!!oe(i.StartDate,i.EndDate,{...n,disabled:e.disabledDates}),e.presets.append(f)}e.isOpen&&(n.IsDisabled||n.IsReadOnly||l?k(e):(_(e),J(e),r?e.calendar.querySelector('[data-date="'+r+'"]')?.focus({preventScroll:!0}):o&&document.getElementById(o)?.focus({preventScroll:!0}),Y(e))),e.renderSignature=t}var ue=()=>me("DateRangePicker",we,Me);function Ce(e,t={},a={}){return ue(),X(e,"DateRangePicker",t,r=>({Change:(o,n)=>(r({StartDate:o,EndDate:n}),a.Change?.(o,n)),ValidationChanged:(o,n)=>a.ValidationChanged?.(o,n),OpenChanged:o=>a.OpenChanged?.(o),Error:o=>a.Error?.(o)}),["DisabledDates","Presets"],[])}export{Ce as a};
File without changes
@@ -0,0 +1 @@
1
+ @import './form-layout.css';
@@ -0,0 +1,2 @@
1
+ export { createColumns2 } from './form-layout/layout.js';
2
+ export type * from './form-layout/types.js';
@@ -0,0 +1 @@
1
+ import"./chunk-BN3PDE5G.js";import{b as a}from"./chunk-UN2SLVFG.js";import"./chunk-EOKNLCNS.js";export{a as createColumns2};
@@ -0,0 +1 @@
1
+ @import './form-layout.css';
@@ -0,0 +1,2 @@
1
+ export { createColumns3 } from './form-layout/layout.js';
2
+ export type * from './form-layout/types.js';
@@ -0,0 +1 @@
1
+ import"./chunk-VJVFHL6P.js";import{c as a}from"./chunk-UN2SLVFG.js";import"./chunk-EOKNLCNS.js";export{a as createColumns3};
@@ -0,0 +1 @@
1
+ @import './form-layout.css';
@@ -0,0 +1,2 @@
1
+ export { createColumns4 } from './form-layout/layout.js';
2
+ export type * from './form-layout/types.js';
@@ -0,0 +1 @@
1
+ import"./chunk-IJ62ILKE.js";import{d as a}from"./chunk-UN2SLVFG.js";import"./chunk-EOKNLCNS.js";export{a as createColumns4};
package/dist/content.js CHANGED
@@ -1 +1 @@
1
- import{a as d}from"./chunk-4RM3B4L7.js";import{a as g}from"./chunk-NB5PGEDY.js";import{a as f}from"./chunk-3ZS5YITP.js";import{a as m}from"./chunk-SEJUHKS5.js";import{a as p}from"./chunk-WHA6UO5X.js";import{a as t}from"./chunk-KR3UUTB2.js";import{a as x}from"./chunk-VBRSAI3K.js";import{a}from"./chunk-IHKCC6WJ.js";import{a as b}from"./chunk-75BQYII5.js";import{a as c}from"./chunk-CZXYS6CY.js";import{a as o}from"./chunk-U4ZP73V4.js";import{a as r}from"./chunk-W27NAI62.js";import{a as e}from"./chunk-IIKSMXQE.js";import"./chunk-MEEQNPGM.js";import"./chunk-5TEIXA4R.js";import"./chunk-SDMH2EVD.js";export{b as createCollectionLayout,t as createContentCarousel,c as createHeroSection,m as createImageCompare,g as createLogoCloud,f as createMediaCard,e as createMediaImage,x as createProfileCard,a as createQuoteCard,d as createSplitSection,p as createTextHighlight,r as createVideoLightbox,o as createVideoPlayer};
1
+ import{a as t}from"./chunk-KR3UUTB2.js";import{a as x}from"./chunk-VBRSAI3K.js";import{a}from"./chunk-IHKCC6WJ.js";import{a as b}from"./chunk-75BQYII5.js";import{a as c}from"./chunk-CZXYS6CY.js";import{a as d}from"./chunk-4RM3B4L7.js";import{a as g}from"./chunk-NB5PGEDY.js";import{a as o}from"./chunk-U4ZP73V4.js";import{a as r}from"./chunk-W27NAI62.js";import{a as e}from"./chunk-IIKSMXQE.js";import{a as f}from"./chunk-3ZS5YITP.js";import{a as m}from"./chunk-SEJUHKS5.js";import{a as p}from"./chunk-WHA6UO5X.js";import"./chunk-MEEQNPGM.js";import"./chunk-5TEIXA4R.js";import"./chunk-SDMH2EVD.js";export{b as createCollectionLayout,t as createContentCarousel,c as createHeroSection,m as createImageCompare,g as createLogoCloud,f as createMediaCard,e as createMediaImage,x as createProfileCard,a as createQuoteCard,d as createSplitSection,p as createTextHighlight,r as createVideoLightbox,o as createVideoPlayer};
package/dist/core.js CHANGED
@@ -1 +1 @@
1
- import"./chunk-UUZ4HU7L.js";import{a as t}from"./chunk-6XOMFIPU.js";import"./chunk-7KMRDQZG.js";import"./chunk-Y4WEMSE4.js";import"./chunk-TIXCZTJ7.js";import"./chunk-RZ5YSY7Y.js";import{b as o,c as r,d as e,e as f,g as m,h as p}from"./chunk-O3MRWAI5.js";import"./chunk-MEEQNPGM.js";import"./chunk-5TEIXA4R.js";import"./chunk-SDMH2EVD.js";export{o as buttonElement,e as createBadge,r as createButton,f as createChip,p as createChipGroup,t as createFontProvider,m as createSkeleton};
1
+ import{a as t}from"./chunk-6XOMFIPU.js";import"./chunk-7KMRDQZG.js";import"./chunk-Y4WEMSE4.js";import"./chunk-TIXCZTJ7.js";import"./chunk-RZ5YSY7Y.js";import"./chunk-UUZ4HU7L.js";import{b as o,c as r,d as e,e as f,g as m,h as p}from"./chunk-O3MRWAI5.js";import"./chunk-MEEQNPGM.js";import"./chunk-5TEIXA4R.js";import"./chunk-SDMH2EVD.js";export{o as buttonElement,e as createBadge,r as createButton,f as createChip,p as createChipGroup,t as createFontProvider,m as createSkeleton};
package/dist/data.css CHANGED
@@ -811,3 +811,66 @@ beside the live host/List, never inside a JavaScript-owned host. */
811
811
 
812
812
  /* Native content wrapper; DashboardCanvas owns layout and panel chrome. */
813
813
  .blu-dashboard-panel__content { min-width:0; min-height:0; }
814
+
815
+ /* Community Form & Layout Essentials — local draft; no OutSystems UI selectors. */
816
+ .blu-field,.blu-columns,.blu-table{box-sizing:border-box;min-width:0;color:var(--bluui-text,#182230);font-family:var(--blu-font-family,Inter,system-ui,sans-serif);font-size:14px}
817
+ .blu-field *,.blu-columns *,.blu-table *{box-sizing:border-box}
818
+ .blu-field [hidden],.blu-table [hidden]{display:none!important}
819
+ .blu-field{--blu-field-height:42px;--blu-field-padding:12px;display:flex;flex-direction:column;gap:7px;border:0;padding:0;margin:0;min-inline-size:0}
820
+ .blu-field--small{--blu-field-height:34px;--blu-field-padding:9px;font-size:13px}.blu-field--large{--blu-field-height:50px;--blu-field-padding:15px;font-size:16px}
821
+ .blu-field__label{font-weight:600;line-height:1.5;padding:0;margin:0 0 2px}.blu-field__body{min-width:0}
822
+ .blu-field__help,.blu-choice__description,.blu-field__count{font-size:12px;color:var(--bluui-text-muted,#5c6b80);line-height:1.5}.blu-field__error{color:var(--bluui-color-error-text,#b42318);font-size:12px;line-height:1.5}.blu-field__count{text-align:end;margin-top:5px;font-variant-numeric:tabular-nums}
823
+ .blu-text,.blu-textarea,.blu-select__trigger{border:1px solid var(--bluui-control-border,#7b8799);border-radius:var(--blu-radius-md,8px);background:var(--bluui-surface,#fff);color:inherit;transition:border-color .12s,box-shadow .12s}
824
+ .blu-text{display:flex;align-items:center;gap:8px;min-height:var(--blu-field-height);padding:0 var(--blu-field-padding)}
825
+ .blu-text__input{width:100%;min-width:0;border:0!important;box-shadow:none!important;outline:none!important;background:transparent!important;color:inherit;padding:9px 0!important;font:inherit;line-height:1.5;height:auto}
826
+ .blu-text__input::placeholder,.blu-textarea::placeholder{color:var(--bluui-text-muted,#5c6b80);opacity:1}
827
+ .blu-text:focus-within,.blu-textarea:focus-visible,.blu-select__trigger:focus-visible{border-color:var(--bluui-primary,#4f46e5);outline:2px solid var(--bluui-primary,#4f46e5);outline-offset:2px}
828
+ .blu-text__adornment{display:inline-flex;flex:none;gap:6px;align-items:center;color:var(--bluui-text-muted,#5c6b80);white-space:nowrap}.blu-text__adornment img{width:24px;height:24px;object-fit:contain;border-radius:4px}
829
+ .blu-text__action{display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:4px;background:transparent;color:var(--bluui-primary,#4f46e5);font:inherit;font-size:12px;font-weight:600;min-width:26px;min-height:30px;cursor:pointer;white-space:nowrap;padding:3px}
830
+ .blu-text__action:hover{background:var(--bluui-hover,#f0f2f7)}
831
+ .blu-field button:focus-visible,.blu-table button:focus-visible,.blu-table__scroll:focus-visible{outline:2px solid var(--bluui-primary,#4f46e5);outline-offset:3px}
832
+ .blu-textarea{display:block;width:100%;min-height:var(--blu-field-height);padding:10px var(--blu-field-padding);font:inherit;line-height:1.6}
833
+ .blu-field[data-invalid=true] .blu-text,.blu-field[data-invalid=true] .blu-textarea,.blu-field[data-invalid=true] .blu-select__trigger{border-color:var(--bluui-color-error-text,#b42318)}
834
+ .blu-field[data-disabled=true]{opacity:.6}.blu-field input:disabled,.blu-field textarea:disabled,.blu-field button:disabled{cursor:not-allowed}
835
+ .blu-field input[readonly],.blu-field textarea[readonly]{cursor:default}
836
+ .blu-choice{display:flex;align-items:center;position:relative;gap:10px;min-height:32px;cursor:pointer;line-height:1.5}.blu-choice__input{position:absolute;inline-size:1px;block-size:1px;clip-path:inset(50%);overflow:hidden;white-space:nowrap;opacity:0}
837
+ .blu-choice__mark{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;width:19px;height:19px;border:1.5px solid var(--bluui-control-border,#7b8799);border-radius:5px;background:var(--bluui-surface,#fff);color:var(--bluui-on-primary,#fff)}
838
+ .blu-choice__input:checked+.blu-choice__mark,.blu-choice__input:indeterminate+.blu-choice__mark{background:var(--bluui-primary,#4f46e5);border-color:var(--bluui-primary,#4f46e5)}
839
+ .blu-choice--checkbox .blu-choice__input:checked+.blu-choice__mark:after{content:'';width:5px;height:9px;border:solid currentColor;border-width:0 2px 2px 0;transform:translateY(-1px) rotate(45deg)}
840
+ .blu-choice__input:indeterminate+.blu-choice__mark:after{content:'';width:9px;height:2px;background:currentColor;transform:none;border:0}
841
+ .blu-choice__input:focus-visible+.blu-choice__mark{outline:2px solid var(--bluui-primary,#4f46e5);outline-offset:3px}
842
+ .blu-choice:has(input:disabled){opacity:.6;cursor:not-allowed}.blu-field[data-disabled=true] .blu-choice:has(input:disabled){opacity:1}
843
+ .blu-choice--radio .blu-choice__mark{border-radius:50%}.blu-choice--radio .blu-choice__input:checked+.blu-choice__mark:after{content:'';width:7px;height:7px;border-radius:50%;background:currentColor}
844
+ .blu-choice--switch .blu-choice__mark{width:38px;height:22px;border-radius:20px;background:var(--bluui-control-border,#7b8799);padding:2px;justify-content:flex-start}
845
+ .blu-choice--switch .blu-choice__mark:after{content:'';height:16px;width:16px;background:#fff;border-radius:50%;transition:transform .15s}
846
+ .blu-choice--switch .blu-choice__input:checked+.blu-choice__mark:after{transform:translateX(14px)}.blu-choice--switch .blu-choice__input:checked+.blu-choice__mark{background:var(--bluui-primary,#4f46e5)}
847
+ .blu-choice__state{margin-inline-start:auto;font-size:12px;color:var(--bluui-text-muted,#5c6b80)}.blu-choice__description{display:block}
848
+ .blu-radio-group{display:flex;flex-direction:column;gap:10px}.blu-radio-group--horizontal{flex-direction:row;flex-wrap:wrap;gap:12px 24px}
849
+ .blu-select{position:relative;display:flex;gap:5px}.blu-select__native{position:absolute;width:1px;height:1px;opacity:0;clip-path:inset(50%);pointer-events:none}
850
+ .blu-select__trigger{display:flex;align-items:center;justify-content:space-between;gap:10px;min-width:0;min-height:var(--blu-field-height);width:100%;padding:9px var(--blu-field-padding);font:inherit;text-align:start;cursor:pointer}
851
+ .blu-select__trigger:after{content:'';width:7px;height:7px;border:solid currentColor;border-width:0 1.5px 1.5px 0;transform:translateY(-2px) rotate(45deg);flex-shrink:0}.blu-select__trigger[data-placeholder=true]{color:var(--bluui-text-muted,#5c6b80)}
852
+ .blu-select__popup{box-sizing:border-box;position:absolute;inset:calc(100% + 6px) 0 auto;z-index:1000;max-height:320px;overflow:auto;margin:0;padding:6px;border:1px solid var(--bluui-border-strong,#b8c4d4);border-radius:10px;background:var(--bluui-surface,#fff);box-shadow:var(--bluui-menu-shadow,0 10px 30px #17203326);color:var(--bluui-text,#182230);font:inherit}
853
+ .blu-select__search{width:100%;min-height:38px;padding:8px 10px;border:1px solid var(--bluui-control-border,#7b8799);border-radius:6px;background:var(--bluui-surface,#fff);color:inherit;font:inherit;margin-bottom:5px;outline-offset:2px}
854
+ .blu-select__option{padding:9px 10px;border-radius:5px;cursor:pointer;line-height:1.5}.blu-select__option[aria-selected=true]{font-weight:600;color:var(--bluui-primary,#4f46e5)}.blu-select__option[data-active=true]{background:var(--bluui-selected,#e9e6ff)}.blu-select__option[aria-disabled=true]{opacity:.5;cursor:not-allowed}
855
+ .blu-columns{display:grid;grid-template-columns:var(--blu-columns-tracks,1fr 1fr);gap:var(--blu-columns-gap,24px)}.blu-columns__column{min-width:0;display:flex;flex-direction:column;gap:20px}
856
+ @media(max-width:479px){.blu-columns--stack-small{grid-template-columns:minmax(0,1fr)}}
857
+ @media(max-width:767px){.blu-columns--stack-medium{grid-template-columns:minmax(0,1fr)}}
858
+ @media(max-width:1023px){.blu-columns--stack-large{grid-template-columns:minmax(0,1fr)}}
859
+ .blu-table{border:1px solid var(--bluui-border,#e2e8f0);border-radius:12px;background:var(--bluui-surface,#fff);overflow:hidden}
860
+ .blu-table__scroll{overflow:auto}.blu-table table{width:100%;border-collapse:collapse;font:inherit;text-align:start}.blu-table caption{text-align:start;padding:18px;font-weight:600;font-size:15px}
861
+ .blu-table th{font-size:12px;color:var(--bluui-text-muted,#5c6b80);background:var(--bluui-surface-muted,#f7f8fb);font-weight:600;white-space:nowrap}
862
+ .blu-table th,.blu-table td{padding:14px 18px;border-top:1px solid var(--bluui-border,#e2e8f0);line-height:1.5}
863
+ .blu-table[data-density=Compact] th,.blu-table[data-density=Compact] td{padding:8px 12px}
864
+ .blu-table[data-striped=true] tbody tr:nth-child(even){background:var(--bluui-surface-muted,#f7f8fb)}
865
+ .blu-table__sort{font:inherit;font-weight:600;color:inherit;background:transparent;border:0;padding:0;cursor:pointer;display:inline-flex;align-items:center;gap:12px}
866
+ .blu-table__empty{text-align:center!important;height:140px;color:var(--bluui-text-muted,#5c6b80)}
867
+ .blu-table__footer{display:flex;align-items:center;gap:8px;padding:12px 18px;border-top:1px solid var(--bluui-border,#e2e8f0);font-size:12px;flex-wrap:wrap}.blu-table__footer>span{margin-inline-end:auto;color:var(--bluui-text-muted,#5c6b80)}
868
+ .blu-table-button{border:1px solid var(--bluui-border-strong,#b8c4d4);border-radius:6px;padding:6px 10px;background:var(--bluui-surface,#fff);font:inherit;font-size:12px;color:var(--bluui-text,#182230);cursor:pointer;min-height:30px;white-space:nowrap}.blu-table-button:hover{background:var(--bluui-hover,#f0f2f7)}.blu-table-button:disabled{opacity:.5;cursor:not-allowed}.blu-table__actions{display:flex;gap:6px}
869
+ @media(prefers-reduced-motion:reduce){.blu-field *{transition:none!important}}
870
+ @media(forced-colors:active){.blu-choice__mark{forced-color-adjust:none;border-color:ButtonText;background:Canvas;color:HighlightText}.blu-choice__input:checked+.blu-choice__mark,.blu-choice__input:indeterminate+.blu-choice__mark{background:Highlight;border-color:Highlight}.blu-select__option[data-active=true]{outline:2px solid Highlight}.blu-choice--switch .blu-choice__mark:after{background:ButtonText}.blu-choice--switch .blu-choice__input:checked+.blu-choice__mark:after{background:HighlightText}}
871
+
872
+ /* Equal height is row-scoped; stacked columns retain their content height. */
873
+ .blu-columns.blu-columns--equal-height{align-items:stretch}
874
+ .blu-columns--equal-height > .blu-columns__column > :only-child{flex:1 1 auto}
875
+ .blu-columns--equal-height > .blu-columns__column > [data-placeholder]{display:flex;flex-direction:column}
876
+ .blu-columns--equal-height > .blu-columns__column > [data-placeholder] > :only-child{flex:1 1 auto}
package/dist/data.d.ts CHANGED
@@ -7,3 +7,4 @@ export * from './descriptions.js';
7
7
  export * from './sparkline.js';
8
8
  export * from './dashboard-canvas.js';
9
9
  export * from './dashboard-panel.js';
10
+ export * from './table.js';
package/dist/data.js CHANGED
@@ -1 +1 @@
1
- import{a as m}from"./chunk-RGTLYBOY.js";import{a as p}from"./chunk-J7BV4KHG.js";import{a as t}from"./chunk-W4SW4RWX.js";import{a as x}from"./chunk-BLDXIO7P.js";import{a}from"./chunk-KBOMPMSI.js";import{a as o}from"./chunk-H7ETPJVW.js";import{a as r}from"./chunk-MCVO25PZ.js";import{a as e}from"./chunk-NTFHNL7T.js";import{a as f}from"./chunk-AICXIQKD.js";import"./chunk-MEEQNPGM.js";import"./chunk-5TEIXA4R.js";import"./chunk-SDMH2EVD.js";export{x as createDashboardCanvas,a as createDashboardPanel,p as createDescriptions,e as createPagination,m as createQRCode,t as createSparkline,f as createStatistic,r as createTimeline,o as createTreeView};
1
+ import{a as x}from"./chunk-BLDXIO7P.js";import{a}from"./chunk-KBOMPMSI.js";import{a as o}from"./chunk-H7ETPJVW.js";import{a as r}from"./chunk-MCVO25PZ.js";import{a as e}from"./chunk-NTFHNL7T.js";import{a as f}from"./chunk-AICXIQKD.js";import{a as m}from"./chunk-RGTLYBOY.js";import{a as p}from"./chunk-J7BV4KHG.js";import{a as t}from"./chunk-W4SW4RWX.js";import"./chunk-MEEQNPGM.js";import"./chunk-5TEIXA4R.js";import"./chunk-SDMH2EVD.js";import{a as b}from"./chunk-IZJN3EF7.js";import"./chunk-EOKNLCNS.js";export{x as createDashboardCanvas,a as createDashboardPanel,p as createDescriptions,e as createPagination,m as createQRCode,t as createSparkline,f as createStatistic,b as createTable,r as createTimeline,o as createTreeView};
@@ -6,7 +6,7 @@
6
6
  .blu-picker [hidden],.blu-picker__dialog [hidden] {display:none!important;}
7
7
  .blu-picker__fields {display:flex;flex-wrap:wrap;gap:12px;}
8
8
  .blu-picker__field {flex:1 1 180px;min-width:0;}
9
- .blu-picker__field label,.blu-picker__select-field>span {display:block;margin-bottom:5px;color:var(--bluui-text,#182230);font-weight:600;}
9
+ .blu-picker__field label,.blu-picker__select-caption {display:block;margin-bottom:5px;color:var(--bluui-text,#182230);font-weight:600;}
10
10
  .blu-picker__input {display:block;width:100%;min-width:0;min-height:42px;padding:9px 11px;border:1px solid var(--bluui-control-border,#69788d);border-radius:9px;background:var(--bluui-surface,#fff);color:var(--bluui-text,#182230);font:inherit;line-height:1.4;}
11
11
  .blu-picker__field-control {position:relative;}
12
12
  .blu-picker__field-control>.blu-picker__input {padding-right:38px;}
@@ -29,7 +29,7 @@
29
29
  .blu-picker__dialog::backdrop {background:transparent;pointer-events:none;}
30
30
  .blu-picker__dialog-head {display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:14px;}
31
31
  .blu-picker__dialog-head h2 {font-size:16px;line-height:1.4;font-family:var(--blu-font-heading-family,inherit);margin:0;overflow-wrap:anywhere;}
32
- .blu-picker__calendar-nav {display:grid;grid-template-columns:32px minmax(0,1fr) 72px 32px;align-items:end;gap:6px;margin-top:0;}
32
+ .blu-picker__calendar-nav {display:grid;grid-template-columns:32px minmax(0,1fr) 88px 32px;align-items:end;gap:6px;margin-top:0;}
33
33
  .blu-picker__calendar-nav>.blu-picker__button {height:36px;padding:2px;font-size:22px;}
34
34
  .blu-picker__select-field {min-width:0;}
35
35
  .blu-picker__caption {font-size:15px;text-align:center;margin:16px 0 8px;}
@@ -54,8 +54,8 @@
54
54
  /* Compact popup controls; editable text stays at 16px to avoid iOS focus zoom. */
55
55
  .blu-picker__dialog .blu-picker__input {min-height:36px;padding:5px 7px;font-size:16px;line-height:1.2;}
56
56
  .blu-picker__dialog .blu-picker__button {min-height:34px;min-width:32px;padding:5px 9px;font-size:13px;line-height:1.25;}
57
- .blu-picker__dialog .blu-picker__select-field>span {font-size:11px;margin-bottom:2px;}
58
- .blu-picker__calendar-nav .blu-picker__select-field>span {position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;margin:0;}
57
+ .blu-picker__dialog .blu-picker__select-caption {font-size:11px;margin-bottom:2px;}
58
+ .blu-picker__calendar-nav .blu-picker__select-caption {position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;margin:0;}
59
59
  .blu-picker__dialog .blu-picker__error {margin-top:4px;font-size:12px;line-height:1.3;}
60
60
  @media(pointer:coarse){
61
61
  .blu-picker__field-control>.blu-picker__input {font-size:16px;min-height:44px;}
@@ -72,7 +72,7 @@
72
72
  .blu-picker__dialog[data-compact=true] .blu-picker__calendar td {height:24px;}
73
73
  .blu-picker__dialog[data-compact=true] .blu-picker__day {min-height:24px;padding:3px 0;}
74
74
  .blu-picker__dialog[data-compact=true] .blu-picker__time-area {margin:4px 0;gap:6px;}
75
- .blu-picker__dialog[data-compact=true] .blu-picker__time-area .blu-picker__select-field>span {position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;}
75
+ .blu-picker__dialog[data-compact=true] .blu-picker__time-area .blu-picker__select-caption {position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;}
76
76
  .blu-picker__dialog[data-compact=true] .blu-picker__selection {position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;margin:0;}
77
77
  .blu-picker__dialog[data-compact=true] .blu-picker__popup-actions {margin-top:4px;gap:4px;}
78
78
  .blu-picker__dialog[data-compact=true] .blu-picker__presets {margin-bottom:4px;gap:4px;}
@@ -1 +1 @@
1
- import{a}from"./chunk-MHHJZYXW.js";import"./chunk-MEEQNPGM.js";import"./chunk-5TEIXA4R.js";import"./chunk-SDMH2EVD.js";export{a as createDatePicker};
1
+ import{a}from"./chunk-3PNBQVYS.js";import"./chunk-MEEQNPGM.js";import"./chunk-5TEIXA4R.js";import"./chunk-SDMH2EVD.js";export{a as createDatePicker};
@@ -6,7 +6,7 @@
6
6
  .blu-picker [hidden],.blu-picker__dialog [hidden] {display:none!important;}
7
7
  .blu-picker__fields {display:flex;flex-wrap:wrap;gap:12px;}
8
8
  .blu-picker__field {flex:1 1 180px;min-width:0;}
9
- .blu-picker__field label,.blu-picker__select-field>span {display:block;margin-bottom:5px;color:var(--bluui-text,#182230);font-weight:600;}
9
+ .blu-picker__field label,.blu-picker__select-caption {display:block;margin-bottom:5px;color:var(--bluui-text,#182230);font-weight:600;}
10
10
  .blu-picker__input {display:block;width:100%;min-width:0;min-height:42px;padding:9px 11px;border:1px solid var(--bluui-control-border,#69788d);border-radius:9px;background:var(--bluui-surface,#fff);color:var(--bluui-text,#182230);font:inherit;line-height:1.4;}
11
11
  .blu-picker__field-control {position:relative;}
12
12
  .blu-picker__field-control>.blu-picker__input {padding-right:38px;}
@@ -29,7 +29,7 @@
29
29
  .blu-picker__dialog::backdrop {background:transparent;pointer-events:none;}
30
30
  .blu-picker__dialog-head {display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:14px;}
31
31
  .blu-picker__dialog-head h2 {font-size:16px;line-height:1.4;font-family:var(--blu-font-heading-family,inherit);margin:0;overflow-wrap:anywhere;}
32
- .blu-picker__calendar-nav {display:grid;grid-template-columns:32px minmax(0,1fr) 72px 32px;align-items:end;gap:6px;margin-top:0;}
32
+ .blu-picker__calendar-nav {display:grid;grid-template-columns:32px minmax(0,1fr) 88px 32px;align-items:end;gap:6px;margin-top:0;}
33
33
  .blu-picker__calendar-nav>.blu-picker__button {height:36px;padding:2px;font-size:22px;}
34
34
  .blu-picker__select-field {min-width:0;}
35
35
  .blu-picker__caption {font-size:15px;text-align:center;margin:16px 0 8px;}
@@ -54,8 +54,8 @@
54
54
  /* Compact popup controls; editable text stays at 16px to avoid iOS focus zoom. */
55
55
  .blu-picker__dialog .blu-picker__input {min-height:36px;padding:5px 7px;font-size:16px;line-height:1.2;}
56
56
  .blu-picker__dialog .blu-picker__button {min-height:34px;min-width:32px;padding:5px 9px;font-size:13px;line-height:1.25;}
57
- .blu-picker__dialog .blu-picker__select-field>span {font-size:11px;margin-bottom:2px;}
58
- .blu-picker__calendar-nav .blu-picker__select-field>span {position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;margin:0;}
57
+ .blu-picker__dialog .blu-picker__select-caption {font-size:11px;margin-bottom:2px;}
58
+ .blu-picker__calendar-nav .blu-picker__select-caption {position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;margin:0;}
59
59
  .blu-picker__dialog .blu-picker__error {margin-top:4px;font-size:12px;line-height:1.3;}
60
60
  @media(pointer:coarse){
61
61
  .blu-picker__field-control>.blu-picker__input {font-size:16px;min-height:44px;}
@@ -72,7 +72,7 @@
72
72
  .blu-picker__dialog[data-compact=true] .blu-picker__calendar td {height:24px;}
73
73
  .blu-picker__dialog[data-compact=true] .blu-picker__day {min-height:24px;padding:3px 0;}
74
74
  .blu-picker__dialog[data-compact=true] .blu-picker__time-area {margin:4px 0;gap:6px;}
75
- .blu-picker__dialog[data-compact=true] .blu-picker__time-area .blu-picker__select-field>span {position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;}
75
+ .blu-picker__dialog[data-compact=true] .blu-picker__time-area .blu-picker__select-caption {position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;}
76
76
  .blu-picker__dialog[data-compact=true] .blu-picker__selection {position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;margin:0;}
77
77
  .blu-picker__dialog[data-compact=true] .blu-picker__popup-actions {margin-top:4px;gap:4px;}
78
78
  .blu-picker__dialog[data-compact=true] .blu-picker__presets {margin-bottom:4px;gap:4px;}
@@ -1 +1 @@
1
- import{a}from"./chunk-CTLZIWMX.js";import"./chunk-MEEQNPGM.js";import"./chunk-5TEIXA4R.js";import"./chunk-SDMH2EVD.js";export{a as createDateRangePicker};
1
+ import{a}from"./chunk-XWXEH3SW.js";import"./chunk-MEEQNPGM.js";import"./chunk-5TEIXA4R.js";import"./chunk-SDMH2EVD.js";export{a as createDateRangePicker};
@@ -6,7 +6,7 @@
6
6
  .blu-picker [hidden],.blu-picker__dialog [hidden] {display:none!important;}
7
7
  .blu-picker__fields {display:flex;flex-wrap:wrap;gap:12px;}
8
8
  .blu-picker__field {flex:1 1 180px;min-width:0;}
9
- .blu-picker__field label,.blu-picker__select-field>span {display:block;margin-bottom:5px;color:var(--bluui-text,#182230);font-weight:600;}
9
+ .blu-picker__field label,.blu-picker__select-caption {display:block;margin-bottom:5px;color:var(--bluui-text,#182230);font-weight:600;}
10
10
  .blu-picker__input {display:block;width:100%;min-width:0;min-height:42px;padding:9px 11px;border:1px solid var(--bluui-control-border,#69788d);border-radius:9px;background:var(--bluui-surface,#fff);color:var(--bluui-text,#182230);font:inherit;line-height:1.4;}
11
11
  .blu-picker__field-control {position:relative;}
12
12
  .blu-picker__field-control>.blu-picker__input {padding-right:38px;}
@@ -29,7 +29,7 @@
29
29
  .blu-picker__dialog::backdrop {background:transparent;pointer-events:none;}
30
30
  .blu-picker__dialog-head {display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:14px;}
31
31
  .blu-picker__dialog-head h2 {font-size:16px;line-height:1.4;font-family:var(--blu-font-heading-family,inherit);margin:0;overflow-wrap:anywhere;}
32
- .blu-picker__calendar-nav {display:grid;grid-template-columns:32px minmax(0,1fr) 72px 32px;align-items:end;gap:6px;margin-top:0;}
32
+ .blu-picker__calendar-nav {display:grid;grid-template-columns:32px minmax(0,1fr) 88px 32px;align-items:end;gap:6px;margin-top:0;}
33
33
  .blu-picker__calendar-nav>.blu-picker__button {height:36px;padding:2px;font-size:22px;}
34
34
  .blu-picker__select-field {min-width:0;}
35
35
  .blu-picker__caption {font-size:15px;text-align:center;margin:16px 0 8px;}
@@ -54,8 +54,8 @@
54
54
  /* Compact popup controls; editable text stays at 16px to avoid iOS focus zoom. */
55
55
  .blu-picker__dialog .blu-picker__input {min-height:36px;padding:5px 7px;font-size:16px;line-height:1.2;}
56
56
  .blu-picker__dialog .blu-picker__button {min-height:34px;min-width:32px;padding:5px 9px;font-size:13px;line-height:1.25;}
57
- .blu-picker__dialog .blu-picker__select-field>span {font-size:11px;margin-bottom:2px;}
58
- .blu-picker__calendar-nav .blu-picker__select-field>span {position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;margin:0;}
57
+ .blu-picker__dialog .blu-picker__select-caption {font-size:11px;margin-bottom:2px;}
58
+ .blu-picker__calendar-nav .blu-picker__select-caption {position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;margin:0;}
59
59
  .blu-picker__dialog .blu-picker__error {margin-top:4px;font-size:12px;line-height:1.3;}
60
60
  @media(pointer:coarse){
61
61
  .blu-picker__field-control>.blu-picker__input {font-size:16px;min-height:44px;}
@@ -72,7 +72,7 @@
72
72
  .blu-picker__dialog[data-compact=true] .blu-picker__calendar td {height:24px;}
73
73
  .blu-picker__dialog[data-compact=true] .blu-picker__day {min-height:24px;padding:3px 0;}
74
74
  .blu-picker__dialog[data-compact=true] .blu-picker__time-area {margin:4px 0;gap:6px;}
75
- .blu-picker__dialog[data-compact=true] .blu-picker__time-area .blu-picker__select-field>span {position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;}
75
+ .blu-picker__dialog[data-compact=true] .blu-picker__time-area .blu-picker__select-caption {position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;}
76
76
  .blu-picker__dialog[data-compact=true] .blu-picker__selection {position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;margin:0;}
77
77
  .blu-picker__dialog[data-compact=true] .blu-picker__popup-actions {margin-top:4px;gap:4px;}
78
78
  .blu-picker__dialog[data-compact=true] .blu-picker__presets {margin-bottom:4px;gap:4px;}
@@ -1 +1 @@
1
- import{a}from"./chunk-2TCNAQC6.js";import"./chunk-MEEQNPGM.js";import"./chunk-5TEIXA4R.js";import"./chunk-SDMH2EVD.js";export{a as createDateTimePicker};
1
+ import{a}from"./chunk-OPMD7QNV.js";import"./chunk-MEEQNPGM.js";import"./chunk-5TEIXA4R.js";import"./chunk-SDMH2EVD.js";export{a as createDateTimePicker};
@@ -0,0 +1,77 @@
1
+ {
2
+ "status": "local draft — not published; native models validated, compiled consumer testing pending",
3
+ "components": [
4
+ {
5
+ "name": "Checkbox",
6
+ "slug": "checkbox",
7
+ "factory": "createCheckbox",
8
+ "group": "inputs"
9
+ },
10
+ {
11
+ "name": "TextInput",
12
+ "slug": "text-input",
13
+ "factory": "createTextInput",
14
+ "group": "inputs"
15
+ },
16
+ {
17
+ "name": "TextArea",
18
+ "slug": "text-area",
19
+ "factory": "createTextArea",
20
+ "group": "inputs"
21
+ },
22
+ {
23
+ "name": "RadioButton",
24
+ "slug": "radio-button",
25
+ "factory": "createRadioButton",
26
+ "group": "inputs"
27
+ },
28
+ {
29
+ "name": "RadioGroup",
30
+ "slug": "radio-group",
31
+ "factory": "createRadioGroup",
32
+ "group": "inputs"
33
+ },
34
+ {
35
+ "name": "Switch",
36
+ "slug": "switch",
37
+ "factory": "createSwitch",
38
+ "group": "inputs"
39
+ },
40
+ {
41
+ "name": "Select",
42
+ "slug": "select",
43
+ "factory": "createSelect",
44
+ "group": "inputs"
45
+ },
46
+ {
47
+ "name": "FormField",
48
+ "slug": "form-field",
49
+ "factory": "createFormField",
50
+ "group": "inputs"
51
+ },
52
+ {
53
+ "name": "Columns2",
54
+ "slug": "columns2",
55
+ "factory": "createColumns2",
56
+ "group": "layout"
57
+ },
58
+ {
59
+ "name": "Columns3",
60
+ "slug": "columns3",
61
+ "factory": "createColumns3",
62
+ "group": "layout"
63
+ },
64
+ {
65
+ "name": "Columns4",
66
+ "slug": "columns4",
67
+ "factory": "createColumns4",
68
+ "group": "layout"
69
+ },
70
+ {
71
+ "name": "Table",
72
+ "slug": "table",
73
+ "factory": "createTable",
74
+ "group": "data"
75
+ }
76
+ ]
77
+ }
package/dist/feedback.js CHANGED
@@ -1 +1 @@
1
- import{a as b}from"./chunk-MBC4UVTS.js";import{a as c}from"./chunk-T45UAWNI.js";import{a as d}from"./chunk-7HXX66DB.js";import{a as g}from"./chunk-6EJIIQNF.js";import{a as r}from"./chunk-MZBB5ROJ.js";import{a as e}from"./chunk-6EHKOVZK.js";import{a as f}from"./chunk-GK3INPAZ.js";import{a as m,b as p,c as t,d as x}from"./chunk-UEOCR2C3.js";import{a}from"./chunk-LGJVLEAH.js";import"./chunk-2HFI6CC6.js";import{i as o}from"./chunk-O3MRWAI5.js";import"./chunk-MEEQNPGM.js";import"./chunk-5TEIXA4R.js";import"./chunk-SDMH2EVD.js";export{c as createChat,d as createChatWidget,r as createCommandPalette,f as createDrawer,o as createEmptyState,g as createFloatButton,e as createModal,m as createNotification,b as createNotificationCenter,a as createTour,x as dismissNotification,p as showNotification,t as updateNotification};
1
+ import{a as g}from"./chunk-6EJIIQNF.js";import{a as r}from"./chunk-MZBB5ROJ.js";import{a as e}from"./chunk-6EHKOVZK.js";import{a as f}from"./chunk-GK3INPAZ.js";import{a as m,b as p,c as t,d as x}from"./chunk-UEOCR2C3.js";import{a}from"./chunk-LGJVLEAH.js";import{a as b}from"./chunk-MBC4UVTS.js";import{a as c}from"./chunk-T45UAWNI.js";import{a as d}from"./chunk-7HXX66DB.js";import"./chunk-2HFI6CC6.js";import{i as o}from"./chunk-O3MRWAI5.js";import"./chunk-MEEQNPGM.js";import"./chunk-5TEIXA4R.js";import"./chunk-SDMH2EVD.js";export{c as createChat,d as createChatWidget,r as createCommandPalette,f as createDrawer,o as createEmptyState,g as createFloatButton,e as createModal,m as createNotification,b as createNotificationCenter,a as createTour,x as dismissNotification,p as showNotification,t as updateNotification};
@@ -0,0 +1 @@
1
+ @import './form-layout.css';
@@ -0,0 +1,2 @@
1
+ export { createFormField } from './form-layout/layout.js';
2
+ export type * from './form-layout/types.js';
@@ -0,0 +1 @@
1
+ import"./chunk-RYD6RHRX.js";import{a}from"./chunk-UN2SLVFG.js";import"./chunk-EOKNLCNS.js";export{a as createFormField};
@@ -0,0 +1,15 @@
1
+ import type { CheckboxOptions, SwitchOptions, RadioButtonOptions, RadioGroupOptions, FieldComponent, FieldEvents } from './types.js';
2
+ type ToggleOptions = CheckboxOptions & SwitchOptions;
3
+ export declare function createCheckbox(host: HTMLElement, options?: CheckboxOptions, events?: FieldEvents<boolean>): FieldComponent<ToggleOptions, boolean>;
4
+ export declare function createSwitch(host: HTMLElement, options?: SwitchOptions, events?: FieldEvents<boolean>): FieldComponent<ToggleOptions, boolean>;
5
+ export declare function createRadioButton(host: HTMLElement, options: RadioButtonOptions, events?: FieldEvents<boolean>): FieldComponent<ToggleOptions, boolean>;
6
+ export declare function createRadioGroup(host: HTMLElement, initial: RadioGroupOptions, events?: FieldEvents<string>): {
7
+ element: HTMLDivElement | HTMLFieldSetElement;
8
+ update: (patch: Partial<RadioGroupOptions>) => void;
9
+ reset: () => void;
10
+ getValue: () => string;
11
+ focus: () => void | undefined;
12
+ validate: () => boolean;
13
+ destroy: () => void;
14
+ };
15
+ export {};
@@ -0,0 +1,12 @@
1
+ import type { FormFieldOptions, ColumnsOptions, ColumnsComponent } from './types.js';
2
+ /** Wrap a consumer-owned control. Destroy restores its original ARIA attributes. */
3
+ export declare function createFormField(host: HTMLElement, initial?: FormFieldOptions): {
4
+ element: HTMLDivElement | HTMLFieldSetElement;
5
+ content: HTMLDivElement;
6
+ update: (patch: Partial<FormFieldOptions>) => void;
7
+ destroy(): void;
8
+ };
9
+ export declare function createColumns(host: HTMLElement, count: 2 | 3 | 4, initial?: ColumnsOptions): ColumnsComponent;
10
+ export declare const createColumns2: (host: HTMLElement, options?: ColumnsOptions) => ColumnsComponent;
11
+ export declare const createColumns3: (host: HTMLElement, options?: ColumnsOptions) => ColumnsComponent;
12
+ export declare const createColumns4: (host: HTMLElement, options?: ColumnsOptions) => ColumnsComponent;
@@ -0,0 +1,3 @@
1
+ import type { SelectOptions, FieldEvents, FieldComponent } from './types.js';
2
+ /** A styled listbox backed by a form-associated select; the native menu is never shown. */
3
+ export declare function createSelect(host: HTMLElement, initial: SelectOptions, events?: FieldEvents<string>): FieldComponent<SelectOptions, string>;
@@ -0,0 +1,21 @@
1
+ import type { FieldOptions } from './types.js';
2
+ export declare function el<K extends keyof HTMLElementTagNameMap>(tag: K, cls?: string, text?: string): HTMLElementTagNameMap[K];
3
+ export declare function uid(): string;
4
+ export declare function attr(node: Element, name: string, value?: string | number | boolean): void;
5
+ export declare function frame(host: HTMLElement, options: FieldOptions, group?: boolean): {
6
+ root: HTMLDivElement | HTMLFieldSetElement;
7
+ label: HTMLLabelElement | HTMLLegendElement;
8
+ body: HTMLDivElement;
9
+ description: HTMLDivElement;
10
+ error: HTMLDivElement;
11
+ id: string;
12
+ paint: (p: FieldOptions, controls: HTMLElement[]) => void;
13
+ };
14
+ export declare function lifecycle(root: HTMLElement, reset: () => void): {
15
+ signal: AbortSignal;
16
+ check(): void;
17
+ destroy(): void;
18
+ };
19
+ export declare function common(control: HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement, p: FieldOptions): void;
20
+ export declare function bound(value: number | undefined, fallback: number, min: number, max: number): number;
21
+ export declare function imageUrl(value: string): string;