@brightspot/ui 6.8.0 → 6.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/dist/storybook/assets/{ActionBar.stories-CJBn-mku.js → ActionBar.stories-BOXYJYXy.js} +31 -28
  2. package/dist/storybook/assets/ActionItem-WoDvowFu.js +16 -0
  3. package/dist/storybook/assets/{ActionItem.stories-DXzC9C1u.js → ActionItem.stories-CVFoWP54.js} +2 -2
  4. package/dist/storybook/assets/AiSparkle.stories-Psv9jNpy.js +73 -0
  5. package/dist/storybook/assets/Avatar-CIQcHS8b.js +4 -0
  6. package/dist/storybook/assets/Avatar.stories-BE2Xn8fx.js +213 -0
  7. package/dist/storybook/assets/AvatarGroup-Chs0VKPg.js +1 -0
  8. package/dist/storybook/assets/AvatarGroup.stories-2ar6gCeX.js +225 -0
  9. package/dist/storybook/assets/Badge-AV20mCMJ.js +1 -0
  10. package/dist/storybook/assets/{Badge.stories-DEpoJpUZ.js → Badge.stories-w9LqNw0A.js} +4 -4
  11. package/dist/storybook/assets/Banner-FSFX1AIb.css +1 -0
  12. package/dist/storybook/assets/{Banner.stories--jeU6fKq.js → Banner.stories-Clhh1bBs.js} +14 -14
  13. package/dist/storybook/assets/Button-B7fn_wd5.js +10 -0
  14. package/dist/storybook/assets/Button.stories-5h4M8nd2.js +54 -0
  15. package/dist/storybook/assets/ButtonGroup-BmndBsBy.js +1 -0
  16. package/dist/storybook/assets/{ButtonGroup.stories-CerE_0AC.js → ButtonGroup.stories-CR1H4H7u.js} +7 -7
  17. package/dist/storybook/assets/Card-DyntwdY-.css +1 -0
  18. package/dist/storybook/assets/{Card.stories-5SxHtU3Y.js → Card.stories-Bz5vXq5y.js} +60 -29
  19. package/dist/storybook/assets/{Celebrate.stories-COS789GX.js → Celebrate.stories-Bu3CNw0k.js} +5 -5
  20. package/dist/storybook/assets/Checkbox-BALsanB1.js +30 -0
  21. package/dist/storybook/assets/{Checkbox.stories-DuQu38Gv.js → Checkbox.stories-BdvCht5c.js} +10 -10
  22. package/dist/storybook/assets/CircularProgress-BeE2fWON.js +42 -0
  23. package/dist/storybook/assets/{CircularProgress.stories-Lf2Ws46Y.js → CircularProgress.stories-CL8Lc6eU.js} +2 -2
  24. package/dist/storybook/assets/ClipboardMixin-C6wcbXIO.js +1 -0
  25. package/dist/storybook/assets/{ClipboardMixin.stories-BT5KfLZ_.js → ClipboardMixin.stories-BsjzC7wd.js} +6 -6
  26. package/dist/storybook/assets/{Color-6BZIO3FS-BNBxjqrS.js → Color-6BZIO3FS-Dsd6EVV9.js} +1 -1
  27. package/dist/storybook/assets/{Colors.stories-Ck6bXbd0.js → Colors.stories-CkCdNN9Y.js} +1 -1
  28. package/dist/storybook/assets/{CombinedEffects.stories-DLELdAMr.js → CombinedEffects.stories-QG78pIiG.js} +2 -2
  29. package/dist/storybook/assets/{ComponentStatesMixin-B6uJL_2c.js → ComponentStatesMixin-CG-Dx_Vk.js} +1 -1
  30. package/dist/storybook/assets/{ComponentStatesMixin.stories-fiyrALkY.js → ComponentStatesMixin.stories-B1yuAqua.js} +1 -1
  31. package/dist/storybook/assets/{CopyToClipboard.stories-2OfBH19_.js → CopyToClipboard.stories-CyKcumJ9.js} +18 -10
  32. package/dist/storybook/assets/{Debounce.stories-C9qo3lIN.js → Debounce.stories-BuNskQ33.js} +1 -1
  33. package/dist/storybook/assets/{DocsRenderer-LL677BLK-CBVYZYjR.js → DocsRenderer-LL677BLK-BrPyc8XX.js} +3 -3
  34. package/dist/storybook/assets/{Dropdown.stories-15ZDMkRz.js → Dropdown.stories-DHXeP07z.js} +2 -2
  35. package/dist/storybook/assets/DropdownMenu-WoWnJiQk.js +42 -0
  36. package/dist/storybook/assets/EmptyState-h0A4Qpiu.css +1 -0
  37. package/dist/storybook/assets/{EmptyState.stories-Bjb8hzYj.js → EmptyState.stories-BRoVusey.js} +33 -21
  38. package/dist/storybook/assets/EscaAvatar.stories-CWAE-4Uz.js +140 -0
  39. package/dist/storybook/assets/{Events.stories-BV0vMF2I.js → Events.stories-D-npDwlx.js} +2 -2
  40. package/dist/storybook/assets/{Heading.stories-CEUJqUbQ.js → Heading.stories-D7hmvFEN.js} +1 -1
  41. package/dist/storybook/assets/{HueRipple.stories-CwvtcOM_.js → HueRipple.stories-Dx3ozdHi.js} +2 -2
  42. package/dist/storybook/assets/Icon-DPQKiWDz.js +34409 -0
  43. package/dist/storybook/assets/{Icon.stories-AB_v-61c.js → Icon.stories-CVsQvcwd.js} +10 -10
  44. package/dist/storybook/assets/IconButton-Dp4Z06bL.js +12 -0
  45. package/dist/storybook/assets/{IconButton.stories-BHuHsM3k.js → IconButton.stories-DTbfHfcQ.js} +2 -2
  46. package/dist/storybook/assets/LinearProgress-DG3tPlGH.js +25 -0
  47. package/dist/storybook/assets/{LinearProgress.stories-BNN5SXe3.js → LinearProgress.stories-VIU6OqYd.js} +2 -2
  48. package/dist/storybook/assets/Message-BzkpGg8z.js +28 -0
  49. package/dist/storybook/assets/Message-CM3eexdu.css +1 -0
  50. package/dist/storybook/assets/{Message.stories-DdLhMXnb.js → Message.stories-C9bzoQes.js} +2 -2
  51. package/dist/storybook/assets/OnFindMixin-CeeYfx9k.js +1 -0
  52. package/dist/storybook/assets/{OnFindMixin.stories-B-5TeBOF.js → OnFindMixin.stories-Dq06nuVf.js} +9 -9
  53. package/dist/storybook/assets/Pagination-CnWa6AX5.js +88 -0
  54. package/dist/storybook/assets/{Pagination.stories-C9zsOdb2.js → Pagination.stories-BsH2eN2W.js} +33 -33
  55. package/dist/storybook/assets/{Popover.stories-BiqIwebU.js → Popover.stories-CLnzpgEE.js} +16 -16
  56. package/dist/storybook/assets/ProgressMixin-D1atDw3n.js +1 -0
  57. package/dist/storybook/assets/Radio-B6Aq6K0V.js +25 -0
  58. package/dist/storybook/assets/{Radio.stories-BmrEdPkm.js → Radio.stories-BCVbISmb.js} +6 -6
  59. package/dist/storybook/assets/{RadioGroup.stories-ChARVXs3.js → RadioGroup.stories-B-TGP_-v.js} +22 -22
  60. package/dist/storybook/assets/{ReadyMixin-BbuzH3uO.js → ReadyMixin-C8HW2nGE.js} +1 -1
  61. package/dist/storybook/assets/RovingTabindexMixin-DI5rmyR7.js +1 -0
  62. package/dist/storybook/assets/{RovingTabindexMixin.stories-xm4b394_.js → RovingTabindexMixin.stories-DVKCC_R7.js} +5 -5
  63. package/dist/storybook/assets/{Rtc.stories-DdcMaELA.js → Rtc.stories-bBYHOszW.js} +1 -1
  64. package/dist/storybook/assets/{ScrollShadow.stories-CI67Ougx.js → ScrollShadow.stories-BIK8YINt.js} +1 -1
  65. package/dist/storybook/assets/{Switch.stories-DOqrRkxc.js → Switch.stories-COEk74kM.js} +60 -27
  66. package/dist/storybook/assets/{Tab.stories-DN8o4cf_.js → Tab.stories-Dbt9JvSx.js} +7 -7
  67. package/dist/storybook/assets/Tabs-BIScOPS0.js +17 -0
  68. package/dist/storybook/assets/{Tabs.stories-BEowfCcl.js → Tabs.stories-CodKgVf2.js} +6 -6
  69. package/dist/storybook/assets/{Throttle.stories-BZ_nsuw1.js → Throttle.stories-BhIqWWrQ.js} +1 -1
  70. package/dist/storybook/assets/Tooltip.stories-DKD8nBM1.js +143 -0
  71. package/dist/storybook/assets/TooltipMixin-CRNNusJ7.js +1 -0
  72. package/dist/storybook/assets/{Upload.stories-sAEiabwq.js → Upload.stories-WTO15ST1.js} +102 -52
  73. package/dist/storybook/assets/UploadItem-DejgZ5A0.js +54 -0
  74. package/dist/storybook/assets/{UploadItem.stories-C19JMfmB.js → UploadItem.stories-Pk3ghOcI.js} +4 -4
  75. package/dist/storybook/assets/{Welcome.stories-C30jg0r1.js → Welcome.stories-DrNnxvt9.js} +9 -9
  76. package/dist/storybook/assets/Widget-elBzGg8w.css +1 -0
  77. package/dist/storybook/assets/Widget.stories-CYC5Qdac.js +279 -0
  78. package/dist/storybook/assets/{WithTooltip-65CFNBJE-PFRy5maL.js → WithTooltip-65CFNBJE-DK6PZNaa.js} +1 -1
  79. package/dist/storybook/assets/ai-sparkle-BZMJJAxY.js +1 -0
  80. package/dist/storybook/assets/aria-D5THOgos.js +1 -0
  81. package/dist/storybook/assets/{blocks-DLjjvsFT.js → blocks-Dzcxb014.js} +5 -5
  82. package/dist/storybook/assets/esca-glow-BwdhBvIX.js +2 -0
  83. package/dist/storybook/assets/esca-idle-B-fumiIb.js +1 -0
  84. package/dist/storybook/assets/esca-search-rwNfo19I.js +1 -0
  85. package/dist/storybook/assets/esca-task-complete-BAJP2dY2.js +1 -0
  86. package/dist/storybook/assets/esca-wave-Bjs4CUR7.js +1 -0
  87. package/dist/storybook/assets/{formatter-EIJCOSYU-D39uscG_.js → formatter-EIJCOSYU-PioIuXjk.js} +1 -1
  88. package/dist/storybook/assets/i18n-BQ-Uj-0B.js +1 -0
  89. package/dist/storybook/assets/if-defined-DL7cQU7O.js +1 -0
  90. package/dist/storybook/assets/{iframe-B9buZjP7.js → iframe-Byo_x5o2.js} +24 -24
  91. package/dist/storybook/assets/{index-BdEHup-4.js → index-gox-Wle0.js} +1 -1
  92. package/dist/storybook/assets/lottie_svg-3t2UJxjZ.js +2 -0
  93. package/dist/storybook/assets/{onFind-CGzSFqNN.js → onFind-BWiaccUj.js} +1 -1
  94. package/dist/storybook/assets/{onFind.stories-Dq71qO14.js → onFind.stories-CC_XTN2G.js} +1 -1
  95. package/dist/storybook/assets/{onRemove.stories-B1GqLH_U.js → onRemove.stories-CXxpL4ud.js} +1 -1
  96. package/dist/storybook/assets/{onVisible.stories-BNKxOfLw.js → onVisible.stories-DKA9cexx.js} +1 -1
  97. package/dist/storybook/assets/property-_few0Xe5.js +1 -0
  98. package/dist/storybook/assets/ref-BaIdO8Sk.js +1 -0
  99. package/dist/storybook/assets/state-BBcPmYaV.js +1 -0
  100. package/dist/storybook/assets/{style-map-qCiIYcp5.js → style-map-DxZm5Cj7.js} +1 -1
  101. package/dist/storybook/assets/{syntaxhighlighter-ED5Y7EFY-CUM-CaRF.js → syntaxhighlighter-ED5Y7EFY-B0_bSGZz.js} +1 -1
  102. package/dist/storybook/iframe.html +1 -1
  103. package/dist/storybook/project.json +1 -1
  104. package/package.json +2 -1
  105. package/dist/storybook/assets/AiSparkle.stories-BfjT5jrJ.js +0 -72
  106. package/dist/storybook/assets/Avatar.stories-D8lnIZaY.js +0 -213
  107. package/dist/storybook/assets/AvatarGroup.stories-Cz9oVah0.js +0 -225
  108. package/dist/storybook/assets/Button-2ucj5lUP.js +0 -10
  109. package/dist/storybook/assets/Button.stories-ndl1RJd7.js +0 -54
  110. package/dist/storybook/assets/EscaAvatar.stories-Rc2MSzCX.js +0 -139
  111. package/dist/storybook/assets/LucideDynamicLoader-BuoNL33C.js +0 -1
  112. package/dist/storybook/assets/Tooltip.stories-3bar43ZN.js +0 -143
  113. package/dist/storybook/assets/Widget.stories-9-1XpZNl.js +0 -233
  114. package/dist/storybook/assets/if-defined-BwWBCoAU.js +0 -1
@@ -1,4 +1,35 @@
1
- import{g as u,x as e}from"./iframe-B9buZjP7.js";import{o as p}from"./style-map-qCiIYcp5.js";import"./preload-helper-PPVm8Dsz.js";const{events:m,args:b,argTypes:l}=u("btu-card"),h=[1,2,3,4,5,6],f={title:"Components/Card",component:"btu-card",tags:["autodocs"],parameters:{docs:{subtitle:"A flexible content container for presenting and organizing information",description:{component:`
1
+ import{E as s,x as a,i as w,g as C}from"./iframe-Byo_x5o2.js";import{o as S}from"./style-map-DxZm5Cj7.js";import"./Avatar-CIQcHS8b.js";import"./AvatarGroup-Chs0VKPg.js";import"./Badge-AV20mCMJ.js";import{n as c}from"./property-_few0Xe5.js";import{r as k}from"./state-BBcPmYaV.js";import{E as _,R as A}from"./ReadyMixin-C8HW2nGE.js";import{O as z}from"./OnFindMixin-CeeYfx9k.js";import"./Checkbox-BALsanB1.js";import"./Icon-DPQKiWDz.js";import"./IconButton-Dp4Z06bL.js";import"./preload-helper-PPVm8Dsz.js";import"./TooltipMixin-CRNNusJ7.js";import"./onFind-BWiaccUj.js";import"./if-defined-DL7cQU7O.js";var F=Object.defineProperty,o=(e,t,i,d)=>{for(var r=void 0,v=e.length-1,f;v>=0;v--)(f=e[v])&&(r=f(t,i,r)||r);return r&&F(t,i,r),r};const x=e=>typeof e=="number"&&Number.isInteger(e)&&e>=1&&e<=6;class n extends _(z(A(w))){constructor(){super(...arguments),this.heading="",this.headingLevel=2,this.compact=!1,this.disabled=!1,this._initialClasses=[],this._initialClassesCaptured=!1,this._checked=!1,this._dropped=!1,this._draggable=!1,this._hasImage=!1,this._imageFailed=!1,this._hasBadge=!1,this._hasIcon=!1,this._hasAction=!1,this._hasSecondaryAction=!1,this._hasFields=!1,this._linkFocused=!1,this.handleCheckboxChange=t=>{t.target?.closest(".btu-card-action, .btu-card-secondary-action")&&(this._checked=t.detail.checked,this.requestUpdate())},this.handleLinkFocus=t=>{const i=t.target.matches(":focus-visible");i!==this._linkFocused&&(this._linkFocused=i,this.requestUpdate())},this.handleLinkBlur=()=>{this._linkFocused&&(this._linkFocused=!1,this.requestUpdate())},this.handleImageError=t=>{t.target?.remove(),this._imageFailed=!0,this.requestUpdate()}}get mode(){return this.compact?"compact":this._hasImage||this._hasIcon?"media":"text"}get _showTopRow(){return this.mode==="compact"?!1:this.mode==="text"?this._hasBadge:this._hasBadge||this._hasAction}connectedCallback(){super.connectedCallback(),this._initialClassesCaptured||(this.className&&(this._initialClasses=this.className.split(" ").filter(t=>t.trim())),this._initialClassesCaptured=!0),this.hasUpdated||(this._hasImage=!!this.querySelector(":scope > img"),this._hasBadge=!!this.querySelector(":scope > btu-badge"),this._hasIcon=!!this.querySelector(":scope > btu-icon"),this._hasAction=!!this.querySelector(':scope > [slot="action"]'),this._hasSecondaryAction=!!this.querySelector(':scope > [slot="secondary-action"]'),this._hasFields=!!this.querySelector(':scope > [slot="fields"]'),this._checked=!!this.querySelector(":scope > btu-checkbox[checked]")),this.addEventListener("btu-checkbox-change",this.handleCheckboxChange)}createRenderRoot(){return this}willUpdate(t){t.has("headingLevel")&&!x(this.headingLevel)&&console.warn(`[btu-card] Invalid heading-level="${this.headingLevel}". Valid values are 1-6. Falling back to default (2).`),this.href&&!this.disabled&&!this.heading&&!this.description&&console.warn("[btu-card] href is set without a heading or description — the link will have no accessible name.");const i=this.mode,d=!!(this.href&&!this.disabled),r=[...this._initialClasses,"btu-card",i==="media"&&"btu-card-media",i==="text"&&"btu-card-text",i==="compact"&&"btu-card-compact",this._checked&&"btu-card-selected",this._dropped&&"btu-card-dropped",this.disabled&&"btu-card-disabled",this._draggable&&"btu-card-draggable",d&&"btu-card-linked",d&&this._linkFocused&&"btu-card-link-focused",this._showTopRow&&"btu-card-has-top",i!=="compact"&&this._hasFields&&"btu-card-has-fields",i!=="compact"&&this._hasSecondaryAction&&"btu-card-has-secondary-action"];this.className=r.filter(Boolean).join(" ")}firstUpdated(t){super.firstUpdated(t),this.emit("btu-card-ready")}onFindRegistration(){return{selectors:":scope > [slot], :scope > img, :scope > btu-badge, :scope > btu-icon",callback:t=>this.redistributeChild(t)}}updated(){this.placeMovableChildren()}redistributeChild(t){const i=t.getAttribute("slot");if(i==="action"){this._actionEl=t,this.wireSelectionCheckbox(t),this._hasAction||(this._hasAction=!0,this.requestUpdate()),this.placeMovableChildren();return}if(i==="secondary-action"){this._secondaryActionEl=t,this.wireSelectionCheckbox(t),this._hasSecondaryAction||(this._hasSecondaryAction=!0,this.requestUpdate()),this.placeMovableChildren();return}if(i==="fields"){this.querySelector(".btu-card-fields")?.appendChild(t),this._hasFields||(this._hasFields=!0,this.requestUpdate());return}if(t.tagName==="IMG"){this._hasImage=!0,this._imageFailed=!1,t.addEventListener("error",this.handleImageError,{once:!0}),this.querySelector(".btu-card-image")?.appendChild(t),this.requestUpdate();return}if(t.tagName==="BTU-ICON"){this._iconEl=t,this._hasIcon||(this._hasIcon=!0,this.requestUpdate()),this.placeMovableChildren();return}t.tagName==="BTU-BADGE"&&(this._badgeEl=t,this._hasBadge||(this._hasBadge=!0,this.requestUpdate()),this.placeMovableChildren())}wireSelectionCheckbox(t){t.tagName==="BTU-CHECKBOX"&&(this._checked=t.hasAttribute("checked"),!t.hasAttribute("label")&&this.heading&&t.setAttribute("label",this.heading),this.requestUpdate())}placeMovableChildren(){this.placeChild(this._badgeEl,".btu-card-badge"),this.placeChild(this._iconEl,this.mode==="compact"?".btu-card-icon-container":".btu-card-image-fallback"),this.placeChild(this._actionEl,".btu-card-action"),this.placeChild(this._secondaryActionEl,".btu-card-secondary-action")}placeChild(t,i){if(!t)return;const d=this.querySelector(i);d&&t.parentElement!==d&&d.appendChild(t)}renderTop(){return this._showTopRow?a`
2
+ <div class="btu-card-top">
3
+ <div class="btu-card-badge"></div>
4
+ ${this.renderAction()}
5
+ </div>
6
+ `:s}renderImage(){if(this.mode!=="media")return s;const t=!this._hasImage||this._imageFailed;return a`
7
+ <div class="btu-card-image">
8
+ ${t?a`<div class="btu-card-image-fallback">
9
+ ${this._hasIcon?s:a`<btu-icon symbol="file-text"></btu-icon>`}
10
+ </div>`:s}
11
+ </div>
12
+ `}renderIconContainer(){return this.mode!=="compact"||!this._hasIcon?s:a`<div class="btu-card-icon-container"></div>`}renderAction(){return a`<div class="btu-card-action"></div>`}renderSecondaryAction(){return a`<div class="btu-card-secondary-action"></div>`}renderFields(){return a`<div class="btu-card-fields"></div>`}renderHeading(){if(!this.heading)return s;switch(x(this.headingLevel)?this.headingLevel:2){case 1:return a`<h1 class="btu-card-title">${this.heading}</h1>`;case 2:return a`<h2 class="btu-card-title">${this.heading}</h2>`;case 3:return a`<h3 class="btu-card-title">${this.heading}</h3>`;case 4:return a`<h4 class="btu-card-title">${this.heading}</h4>`;case 5:return a`<h5 class="btu-card-title">${this.heading}</h5>`;case 6:return a`<h6 class="btu-card-title">${this.heading}</h6>`}}renderContent(){return a`
13
+ <div class="btu-card-content">
14
+ ${this.mode==="compact"?this.renderIconContainer():s}
15
+ ${this.mode==="compact"?this.renderAction():s}
16
+ ${this.heading?a`<div class="btu-card-title-row">
17
+ ${this.renderHeading()} ${this.mode==="compact"?s:this.renderSecondaryAction()}
18
+ ${this.mode==="text"&&!this._hasBadge?this.renderAction():s}
19
+ </div>`:s}
20
+ ${this.description?a`<div class="btu-card-description">${this.description}</div>`:s}
21
+ ${this.mode==="compact"?s:this.renderFields()}
22
+ </div>
23
+ `}render(){return a`
24
+ ${this.href&&!this.disabled?a`<a
25
+ href=${this.href}
26
+ class="btu-card-link"
27
+ aria-label=${this.heading||this.description||s}
28
+ @focus=${this.handleLinkFocus}
29
+ @blur=${this.handleLinkBlur}
30
+ ></a>`:s}
31
+ ${this.renderImage()} ${this.renderTop()} ${this.renderContent()}
32
+ `}}o([c({type:String})],n.prototype,"heading");o([c({type:Number,attribute:"heading-level"})],n.prototype,"headingLevel");o([c({type:String})],n.prototype,"description");o([c({type:Boolean})],n.prototype,"compact");o([c({type:Boolean})],n.prototype,"disabled");o([c({type:String})],n.prototype,"href");o([k()],n.prototype,"_dropped");o([k()],n.prototype,"_draggable");customElements.get("btu-card")||customElements.define("btu-card",n);const{events:T,args:$,argTypes:y}=C("btu-card"),I=[1,2,3,4,5,6],G={title:"Components/Card",component:"btu-card",tags:["autodocs"],parameters:{docs:{subtitle:"A flexible content container for presenting and organizing information",description:{component:`
2
33
  <h3>When to use:</h3>
3
34
  <ul>
4
35
  <li>To present content items in a browsable grid or list — search results, board views, quick start cards</li>
@@ -9,20 +40,20 @@ import{g as u,x as e}from"./iframe-B9buZjP7.js";import{o as p}from"./style-map-q
9
40
  <ul>
10
41
  <li>Cards are focusable when they have an href set (unless disabled)</li>
11
42
  </ul>
12
- `}},actions:{handles:m},controls:{expanded:!0}},args:{...b,compact:!1,heading:"Content heading",description:"Content Type · Summary Field · Summary Field","heading-level":2},argTypes:{...l,"--card-min-width":{table:{disable:!0}},"--card-background":{table:{disable:!0}},"--card-border":{table:{disable:!0}},"--card-radius":{table:{disable:!0}},"--card-img-ratio":{table:{disable:!0}},"--card-img-fit":{table:{disable:!0}},"--card-icon-background":{table:{disable:!0}},compact:{...l.compact,control:{type:"boolean"}},"heading-level":{...l["heading-level"],control:{type:"select"},options:h,description:"Heading level (1-6) for the card heading element. Drives the semantic h1–h6 tag (default: 2)."},customMinWidth:{name:"--card-min-width",control:{type:"text"},description:"Minimum width of the card (default: 160px)",table:{category:"CSS Properties"}},customBg:{name:"--card-background",control:{type:"color"},description:"Background color",table:{category:"CSS Properties"}},customBorder:{name:"--card-border",control:{type:"text"},description:"Border shorthand (default: 1px solid gray-200)",table:{category:"CSS Properties"}},customRadius:{name:"--card-radius",control:{type:"text"},description:"Corner rounding (default: 8px)",table:{category:"CSS Properties"}},customImgRatio:{name:"--card-img-ratio",control:{type:"text"},description:"Fixed aspect ratio for the thumbnail when an `<img>` child is present (default: 16 / 9)",table:{category:"CSS Properties"}},customImgFit:{name:"--card-img-fit",control:{type:"select"},options:["contain","cover"],description:"Object-fit mode for the `<img>` child thumbnail (default: contain)",table:{category:"CSS Properties"}},customIconBg:{name:"--card-icon-background",control:{type:"color"},description:"Background color behind the `<btu-icon>` child (compact card and media-image fallback) (default: gray-100)",table:{category:"CSS Properties"}}},render:t=>{const a={};return t.customMinWidth&&(a["--card-min-width"]=t.customMinWidth),t.customBg&&(a["--card-background"]=t.customBg),t.customBorder&&(a["--card-border"]=t.customBorder),t.customRadius&&(a["--card-radius"]=t.customRadius),t.customImgRatio&&(a["--card-img-ratio"]=t.customImgRatio),t.customImgFit&&(a["--card-img-fit"]=t.customImgFit),t.customIconBg&&(a["--card-icon-background"]=t.customIconBg),e`
43
+ `}},actions:{handles:T},controls:{expanded:!0}},args:{...$,compact:!1,heading:"Content heading",description:"Content Type · Summary Field · Summary Field","heading-level":2},argTypes:{...y,"--card-min-width":{table:{disable:!0}},"--card-background":{table:{disable:!0}},"--card-border":{table:{disable:!0}},"--card-radius":{table:{disable:!0}},"--card-img-ratio":{table:{disable:!0}},"--card-img-fit":{table:{disable:!0}},"--card-icon-background":{table:{disable:!0}},compact:{...y.compact,control:{type:"boolean"}},"heading-level":{...y["heading-level"],control:{type:"select"},options:I,description:"Heading level (1-6) for the card heading element. Drives the semantic h1–h6 tag (default: 2)."},customMinWidth:{name:"--card-min-width",control:{type:"text"},description:"Minimum width of the card (default: 160px)",table:{category:"CSS Properties"}},customBg:{name:"--card-background",control:{type:"color"},description:"Background color",table:{category:"CSS Properties"}},customBorder:{name:"--card-border",control:{type:"text"},description:"Border shorthand (default: 1px solid gray-200)",table:{category:"CSS Properties"}},customRadius:{name:"--card-radius",control:{type:"text"},description:"Corner rounding (default: 8px)",table:{category:"CSS Properties"}},customImgRatio:{name:"--card-img-ratio",control:{type:"text"},description:"Fixed aspect ratio for the thumbnail when an `<img>` child is present (default: 16 / 9)",table:{category:"CSS Properties"}},customImgFit:{name:"--card-img-fit",control:{type:"select"},options:["contain","cover"],description:"Object-fit mode for the `<img>` child thumbnail (default: contain)",table:{category:"CSS Properties"}},customIconBg:{name:"--card-icon-background",control:{type:"color"},description:"Background color behind the `<btu-icon>` child (compact card and media-image fallback) (default: gray-100)",table:{category:"CSS Properties"}}},render:e=>{const t={};return e.customMinWidth&&(t["--card-min-width"]=e.customMinWidth),e.customBg&&(t["--card-background"]=e.customBg),e.customBorder&&(t["--card-border"]=e.customBorder),e.customRadius&&(t["--card-radius"]=e.customRadius),e.customImgRatio&&(t["--card-img-ratio"]=e.customImgRatio),e.customImgFit&&(t["--card-img-fit"]=e.customImgFit),e.customIconBg&&(t["--card-icon-background"]=e.customIconBg),a`
13
44
  <div style="max-width: 262px;">
14
45
  <btu-card
15
- ?compact="${t.compact}"
16
- heading="${t.heading}"
17
- heading-level="${t["heading-level"]}"
18
- description="${t.description}"
19
- ?disabled="${t.disabled}"
20
- href="${t.href}"
21
- style=${p(a)}
46
+ ?compact="${e.compact}"
47
+ heading="${e.heading}"
48
+ heading-level="${e["heading-level"]}"
49
+ description="${e.description}"
50
+ ?disabled="${e.disabled}"
51
+ href="${e.href}"
52
+ style=${S(t)}
22
53
  >
23
54
  </btu-card>
24
55
  </div>
25
- `}},i={args:{}},n={render:()=>e`
56
+ `}},l={args:{}},u={render:()=>a`
26
57
  <div style="display: flex; gap: 1rem; flex-wrap: wrap; align-items: start;">
27
58
  <div style="width: 262px;">
28
59
  <btu-card heading="Media Card" description="Content Type · Summary Field · Summary Field">
@@ -49,7 +80,7 @@ import{g as u,x as e}from"./iframe-B9buZjP7.js";import{o as p}from"./style-map-q
49
80
  </btu-card>
50
81
  </div>
51
82
  </div>
52
- `,parameters:{docs:{description:{story:'The layout is driven by composition. This way the implementer has control over the inner components, such as badge.\n\n- A card with an `<img>` direct child renders the image above the text content.\n- A `<btu-icon>` direct child shows in the image area — as the fallback when an image fails to load, or as the only media when no `<img>` is provided (see "Icon only"). Without a composed icon, a failed image defaults to a `file-text` icon.\n- A `<btu-badge>` direct child renders a status badge in the top-left corner.\n'}}}},o={render:()=>{const t=a=>{a.stopPropagation(),alert("Action clicked — navigation prevented")};return e`
83
+ `,parameters:{docs:{description:{story:'The layout is driven by composition. This way the implementer has control over the inner components, such as badge.\n\n- A card with an `<img>` direct child renders the image above the text content.\n- A `<btu-icon>` direct child shows in the image area — as the fallback when an image fails to load, or as the only media when no `<img>` is provided (see "Icon only"). Without a composed icon, a failed image defaults to a `file-text` icon.\n- A `<btu-badge>` direct child renders a status badge in the top-left corner.\n'}}}},h={render:()=>{const e=t=>{t.stopPropagation(),alert("Action clicked — navigation prevented")};return a`
53
84
  <div style="display: flex; gap: 1rem; flex-wrap: wrap; align-items: start;">
54
85
  <div style="width: 262px;">
55
86
  <btu-card
@@ -66,7 +97,7 @@ import{g as u,x as e}from"./iframe-B9buZjP7.js";import{o as p}from"./style-map-q
66
97
  size="sm"
67
98
  type="secondary-clear"
68
99
  aria-label="Quick view"
69
- @click=${t}
100
+ @click=${e}
70
101
  ></btu-icon-button>
71
102
  </btu-card>
72
103
  </div>
@@ -83,7 +114,7 @@ import{g as u,x as e}from"./iframe-B9buZjP7.js";import{o as p}from"./style-map-q
83
114
  size="sm"
84
115
  type="secondary-clear"
85
116
  aria-label="Favorite"
86
- @click=${t}
117
+ @click=${e}
87
118
  ></btu-icon-button>
88
119
  <btu-icon-button
89
120
  slot="secondary-action"
@@ -91,7 +122,7 @@ import{g as u,x as e}from"./iframe-B9buZjP7.js";import{o as p}from"./style-map-q
91
122
  size="sm"
92
123
  type="secondary-clear"
93
124
  aria-label="Quick view"
94
- @click=${t}
125
+ @click=${e}
95
126
  ></btu-icon-button>
96
127
  </btu-card>
97
128
  </div>
@@ -108,12 +139,12 @@ import{g as u,x as e}from"./iframe-B9buZjP7.js";import{o as p}from"./style-map-q
108
139
  size="sm"
109
140
  type="secondary-clear"
110
141
  aria-label="Quick view"
111
- @click=${t}
142
+ @click=${e}
112
143
  ></btu-icon-button>
113
144
  </btu-card>
114
145
  </div>
115
146
  </div>
116
- `},parameters:{docs:{description:{story:'Cards expose two action positions, both pseudo-slots:\n\n- `slot="action"` — the top-right corner.\n- `slot="secondary-action"` — next to the title.\n\nA `<btu-checkbox>` action stays visible, while a `<btu-icon-button>` action is revealed on hover/focus.\n\nThese cards also have `href` set to demonstrate that clicking anywhere on the card navigates to the link, while clicking an action triggers its own handler without navigating. Tabbing focuses the card first, then the actions.'}}}},s={render:()=>e`
147
+ `},parameters:{docs:{description:{story:'Cards expose two action positions, both pseudo-slots:\n\n- `slot="action"` — the top-right corner.\n- `slot="secondary-action"` — next to the title.\n\nA `<btu-checkbox>` action stays visible, while a `<btu-icon-button>` action is revealed on hover/focus.\n\nThese cards also have `href` set to demonstrate that clicking anywhere on the card navigates to the link, while clicking an action triggers its own handler without navigating. Tabbing focuses the card first, then the actions.'}}}},p={render:()=>a`
117
148
  <div style="display: flex; gap: 1rem; flex-wrap: wrap; align-items: start;">
118
149
  <div style="width: 262px;">
119
150
  <btu-card heading="Content title" description="Content Type · Summary Field · Summary Field">
@@ -174,7 +205,7 @@ import{g as u,x as e}from"./iframe-B9buZjP7.js";import{o as p}from"./style-map-q
174
205
  </btu-card>
175
206
  </div>
176
207
  </div>
177
- `,parameters:{docs:{description:{story:'Cards support a `slot="fields"` pseudo-slot for structured metadata. These cards show content type, last updated date, and a viewers section with an avatar group.'}}}},r={render:()=>e`
208
+ `,parameters:{docs:{description:{story:'Cards support a `slot="fields"` pseudo-slot for structured metadata. These cards show content type, last updated date, and a viewers section with an avatar group.'}}}},b={render:()=>a`
178
209
  <div style="display: flex; gap: 1rem; flex-wrap: wrap; align-items: start;">
179
210
  <div style="width: 262px;">
180
211
  <btu-card compact heading="Quick Action" description="Quick start tile">
@@ -191,7 +222,7 @@ import{g as u,x as e}from"./iframe-B9buZjP7.js";import{o as p}from"./style-map-q
191
222
  </btu-card>
192
223
  </div>
193
224
  </div>
194
- `,parameters:{docs:{description:{story:"Set the `compact` attribute for a quick-start tile with a featured icon. Provide the featured icon as a `<btu-icon>` direct child. Badge, image, fields, and secondary-action slots are ignored in this case. Only the top-right `action` slot is available."}}}},c={render:()=>e`
225
+ `,parameters:{docs:{description:{story:"Set the `compact` attribute for a quick-start tile with a featured icon. Provide the featured icon as a `<btu-icon>` direct child. Badge, image, fields, and secondary-action slots are ignored in this case. Only the top-right `action` slot is available."}}}},m={render:()=>a`
195
226
  <div style="display: flex; flex-direction: column; gap: 1.5rem;">
196
227
  <div>
197
228
  <p
@@ -242,17 +273,17 @@ import{g as u,x as e}from"./iframe-B9buZjP7.js";import{o as p}from"./style-map-q
242
273
  </div>
243
274
  </div>
244
275
  </div>
245
- `,parameters:{docs:{description:{story:"By default images use `object-fit: contain` so the full image is always visible. Set `--card-img-fit: cover` to fill the thumbnail area by cropping instead."}}}},d={render:()=>e`
276
+ `,parameters:{docs:{description:{story:"By default images use `object-fit: contain` so the full image is always visible. Set `--card-img-fit: cover` to fill the thumbnail area by cropping instead."}}}},g={render:()=>a`
246
277
  <div style="display: grid; gap: 1rem; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));">
247
- ${[1,2,3,4,5].map(t=>e`
248
- <btu-card heading="Card ${t}" description="Content Type · Summary Field">
278
+ ${[1,2,3,4,5].map(e=>a`
279
+ <btu-card heading="Card ${e}" description="Content Type · Summary Field">
249
280
  <btu-badge variant="info" size="sm">Content Status</btu-badge>
250
281
  </btu-card>
251
282
  `)}
252
283
  </div>
253
- `,parameters:{docs:{description:{story:"Cards are `width: 100%` by default and rely on the parent layout to control their size. A CSS grid with `repeat(auto-fill, minmax(220px, 1fr))` is a common responsive pattern."}}}};i.parameters={...i.parameters,docs:{...i.parameters?.docs,source:{originalSource:`{
284
+ `,parameters:{docs:{description:{story:"Cards are `width: 100%` by default and rely on the parent layout to control their size. A CSS grid with `repeat(auto-fill, minmax(220px, 1fr))` is a common responsive pattern."}}}};l.parameters={...l.parameters,docs:{...l.parameters?.docs,source:{originalSource:`{
254
285
  args: {}
255
- }`,...i.parameters?.docs?.source}}};n.parameters={...n.parameters,docs:{...n.parameters?.docs,source:{originalSource:`{
286
+ }`,...l.parameters?.docs?.source}}};u.parameters={...u.parameters,docs:{...u.parameters?.docs,source:{originalSource:`{
256
287
  render: () => html\`
257
288
  <div style="display: flex; gap: 1rem; flex-wrap: wrap; align-items: start;">
258
289
  <div style="width: 262px;">
@@ -293,7 +324,7 @@ import{g as u,x as e}from"./iframe-B9buZjP7.js";import{o as p}from"./style-map-q
293
324
  }
294
325
  }
295
326
  }
296
- }`,...n.parameters?.docs?.source}}};o.parameters={...o.parameters,docs:{...o.parameters?.docs,source:{originalSource:`{
327
+ }`,...u.parameters?.docs?.source}}};h.parameters={...h.parameters,docs:{...h.parameters?.docs,source:{originalSource:`{
297
328
  render: () => {
298
329
  const handleActionClick = (e: Event) => {
299
330
  e.stopPropagation();
@@ -380,7 +411,7 @@ These cards also have \\\`href\\\` set to demonstrate that clicking anywhere on
380
411
  }
381
412
  }
382
413
  }
383
- }`,...o.parameters?.docs?.source}}};s.parameters={...s.parameters,docs:{...s.parameters?.docs,source:{originalSource:`{
414
+ }`,...h.parameters?.docs?.source}}};p.parameters={...p.parameters,docs:{...p.parameters?.docs,source:{originalSource:`{
384
415
  render: () => html\`
385
416
  <div style="display: flex; gap: 1rem; flex-wrap: wrap; align-items: start;">
386
417
  <div style="width: 262px;">
@@ -450,7 +481,7 @@ These cards also have \\\`href\\\` set to demonstrate that clicking anywhere on
450
481
  }
451
482
  }
452
483
  }
453
- }`,...s.parameters?.docs?.source}}};r.parameters={...r.parameters,docs:{...r.parameters?.docs,source:{originalSource:`{
484
+ }`,...p.parameters?.docs?.source}}};b.parameters={...b.parameters,docs:{...b.parameters?.docs,source:{originalSource:`{
454
485
  render: () => html\`
455
486
  <div style="display: flex; gap: 1rem; flex-wrap: wrap; align-items: start;">
456
487
  <div style="width: 262px;">
@@ -476,7 +507,7 @@ These cards also have \\\`href\\\` set to demonstrate that clicking anywhere on
476
507
  }
477
508
  }
478
509
  }
479
- }`,...r.parameters?.docs?.source}}};c.parameters={...c.parameters,docs:{...c.parameters?.docs,source:{originalSource:`{
510
+ }`,...b.parameters?.docs?.source}}};m.parameters={...m.parameters,docs:{...m.parameters?.docs,source:{originalSource:`{
480
511
  render: () => html\`
481
512
  <div style="display: flex; flex-direction: column; gap: 1.5rem;">
482
513
  <div>
@@ -536,7 +567,7 @@ These cards also have \\\`href\\\` set to demonstrate that clicking anywhere on
536
567
  }
537
568
  }
538
569
  }
539
- }`,...c.parameters?.docs?.source}}};d.parameters={...d.parameters,docs:{...d.parameters?.docs,source:{originalSource:`{
570
+ }`,...m.parameters?.docs?.source}}};g.parameters={...g.parameters,docs:{...g.parameters?.docs,source:{originalSource:`{
540
571
  render: () => html\`
541
572
  <div style="display: grid; gap: 1rem; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));">
542
573
  \${[1, 2, 3, 4, 5].map(i => html\`
@@ -553,4 +584,4 @@ These cards also have \\\`href\\\` set to demonstrate that clicking anywhere on
553
584
  }
554
585
  }
555
586
  }
556
- }`,...d.parameters?.docs?.source}}};const x=["Default","Composition","ActionSlots","FieldsSlot","Compact","ImageCropping","Sizing"];export{o as ActionSlots,r as Compact,n as Composition,i as Default,s as FieldsSlot,c as ImageCropping,d as Sizing,x as __namedExportsOrder,f as default};
587
+ }`,...g.parameters?.docs?.source}}};const H=["Default","Composition","ActionSlots","FieldsSlot","Compact","ImageCropping","Sizing"];export{h as ActionSlots,b as Compact,u as Composition,l as Default,p as FieldsSlot,m as ImageCropping,g as Sizing,H as __namedExportsOrder,G as default};
@@ -1,4 +1,4 @@
1
- import{x as a}from"./iframe-B9buZjP7.js";import{b as i}from"./celebrate-KwPoF1K3.js";import{B as r}from"./Button-2ucj5lUP.js";import"./preload-helper-PPVm8Dsz.js";import"./position-CFNQy3J6.js";const m={title:"Effects/Celebrate",tags:["autodocs"],parameters:{docs:{subtitle:"A sparkle burst effect for delightful micro-interactions",description:{component:`
1
+ import{x as i}from"./iframe-Byo_x5o2.js";import"./Icon-DPQKiWDz.js";import{b as a}from"./celebrate-KwPoF1K3.js";import{B as r}from"./Button-B7fn_wd5.js";import"./preload-helper-PPVm8Dsz.js";import"./property-_few0Xe5.js";import"./ReadyMixin-C8HW2nGE.js";import"./position-CFNQy3J6.js";const h={title:"Effects/Celebrate",tags:["autodocs"],parameters:{docs:{subtitle:"A sparkle burst effect for delightful micro-interactions",description:{component:`
2
2
  A celebratory sparkle animation that fires from a given position. Colored circles, ellipses, and sparkle particles burst outward using CSS offset-path animations.
3
3
 
4
4
  ### Usage
@@ -16,8 +16,8 @@ el.dispatchEvent(new CustomEvent('btu-effect-celebrate', {
16
16
  bubbles: true, composed: true,
17
17
  }))
18
18
  \`\`\`
19
- `}},controls:{expanded:!0}},argTypes:{duration:{control:{type:"range",min:500,max:5e3,step:100},description:"Animation duration (ms)"},size:{control:{type:"range",min:100,max:600,step:50},description:"Size of the sparkle burst area (px)"}},args:{duration:2e3,size:300}},n={render:s=>a`
20
- <div @click=${t=>i({position:t,...s})} class="bg-gray-50" style="min-height: 100vh;">
19
+ `}},controls:{expanded:!0}},argTypes:{duration:{control:{type:"range",min:500,max:5e3,step:100},description:"Animation duration (ms)"},size:{control:{type:"range",min:100,max:600,step:50},description:"Size of the sparkle burst area (px)"}},args:{duration:2e3,size:300}},n={render:s=>i`
20
+ <div @click=${t=>a({position:t,...s})} class="bg-gray-50" style="min-height: 100vh;">
21
21
  <div class="flex flex-col gap-8 p-6">
22
22
  <div class="flex flex-col gap-2">
23
23
  <h2 class="text-2xl font-semibold text-gray-900">Celebrate</h2>
@@ -34,7 +34,7 @@ el.dispatchEvent(new CustomEvent('btu-effect-celebrate', {
34
34
  </div>
35
35
  </div>
36
36
  </div>
37
- `,parameters:{docs:{description:{story:"Click anywhere to trigger the default sparkle burst animation."}}}},o={args:{duration:2e3,size:300},render:s=>{const e=t=>{t.stopPropagation();const l=t.currentTarget??t.target;i({position:l,...s})};return a`
37
+ `,parameters:{docs:{description:{story:"Click anywhere to trigger the default sparkle burst animation."}}}},o={args:{duration:2e3,size:300},render:s=>{const e=t=>{t.stopPropagation();const l=t.currentTarget??t.target;a({position:l,...s})};return i`
38
38
  <div class="bg-gray-50" style="min-height: 40vh;">
39
39
  <div class="flex flex-col gap-6 p-6">
40
40
  <div class="flex flex-col gap-2">
@@ -181,4 +181,4 @@ el.dispatchEvent(new CustomEvent('btu-effect-celebrate', {
181
181
  }
182
182
  }
183
183
  }
184
- }`,...o.parameters?.docs?.source}}};const f=["Default","OnElement"];export{n as Default,o as OnElement,f as __namedExportsOrder,m as default};
184
+ }`,...o.parameters?.docs?.source}}};const x=["Default","OnElement"];export{n as Default,o as OnElement,x as __namedExportsOrder,h as default};
@@ -0,0 +1,30 @@
1
+ import{i as p,E as o,x as a}from"./iframe-Byo_x5o2.js";import{n as i}from"./property-_few0Xe5.js";import{o as n}from"./if-defined-DL7cQU7O.js";import{E as u,R as b}from"./ReadyMixin-C8HW2nGE.js";import"./Icon-DPQKiWDz.js";var k=Object.defineProperty,s=(h,e,r,m)=>{for(var c=void 0,l=h.length-1,d;l>=0;l--)(d=h[l])&&(c=d(e,r,c)||c);return c&&k(e,r,c),c};class t extends u(b(p)){constructor(){super(...arguments),this.size="sm",this.checked=!1,this.indeterminate=!1,this.disabled=!1,this.invalid=!1,this.required=!1,this.value="on",this._userInitiated=!1,this._initialClasses=[],this._initialClassesCaptured=!1,this._descId=`checkbox-desc-${crypto.randomUUID()}`,this._errorId=`checkbox-error-${crypto.randomUUID()}`,this._handleClick=e=>{this.disabled||e.target.closest(".btu-checkbox-input")||this.renderRoot.querySelector(".btu-checkbox-input")?.click()}}connectedCallback(){super.connectedCallback(),this._initialClassesCaptured||(this.className&&(this._initialClasses=this.className.split(" ").filter(e=>e.trim())),this._initialClassesCaptured=!0),this.addEventListener("click",this._handleClick)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("click",this._handleClick)}createRenderRoot(){return this}willUpdate(e){super.willUpdate(e);const r=[...this._initialClasses,"btu-checkbox",this.size==="md"&&"btu-checkbox-md",(this.invalid||this.error)&&"btu-checkbox-invalid"];this.className=r.filter(Boolean).join(" ")}firstUpdated(e){super.firstUpdated(e),this.emit("btu-checkbox-ready")}updated(e){super.updated(e);const r=this.renderRoot.querySelector(".btu-checkbox-input");r&&(r.indeterminate=this.indeterminate),this._userInitiated&&(this._userInitiated=!1,e.has("checked")&&this.emit("btu-checkbox-change",{checked:this.checked}))}_onInputChange(e){const r=e.target;this._userInitiated=!0,this.checked=r.checked,this.indeterminate&&(this.indeterminate=!1)}get _describedBy(){const e=[];return this.description&&e.push(this._descId),this.error&&e.push(this._errorId),e.length?e.join(" "):void 0}get _iconSymbol(){return this.indeterminate?"minus":"check"}render(){return a`
2
+ <input
3
+ type="checkbox"
4
+ class="btu-checkbox-input"
5
+ .checked=${this.checked}
6
+ ?disabled=${this.disabled}
7
+ ?required=${this.required}
8
+ name=${n(this.name)}
9
+ value=${this.value}
10
+ aria-checked=${n(this.indeterminate?"mixed":void 0)}
11
+ aria-label=${n(this.label)}
12
+ aria-describedby=${n(this._describedBy)}
13
+ aria-invalid=${n(this.invalid||this.error?"true":void 0)}
14
+ @change=${this._onInputChange}
15
+ />
16
+ <span class="btu-checkbox-box">
17
+ <btu-icon
18
+ class="btu-checkbox-icon"
19
+ symbol=${this._iconSymbol}
20
+ style="--icon-size: var(--checkbox-icon-size)"
21
+ ></btu-icon>
22
+ </span>
23
+ ${this.label||this.description||this.error?a`
24
+ <span class="btu-checkbox-text">
25
+ ${this.label?a`<span class="btu-checkbox-label">${this.label}</span>`:o}
26
+ ${this.description?a`<span id=${this._descId} class="btu-checkbox-description">${this.description}</span>`:o}
27
+ ${this.error?a`<span id=${this._errorId} class="btu-checkbox-error">${this.error}</span>`:o}
28
+ </span>
29
+ `:o}
30
+ `}}s([i()],t.prototype,"label");s([i()],t.prototype,"description");s([i({reflect:!0})],t.prototype,"size");s([i({type:Boolean,reflect:!0})],t.prototype,"checked");s([i({type:Boolean,reflect:!0})],t.prototype,"indeterminate");s([i({type:Boolean,reflect:!0})],t.prototype,"disabled");s([i({type:Boolean,reflect:!0})],t.prototype,"invalid");s([i()],t.prototype,"error");s([i({type:Boolean,reflect:!0})],t.prototype,"required");s([i()],t.prototype,"name");s([i()],t.prototype,"value");customElements.get("btu-checkbox")||customElements.define("btu-checkbox",t);
@@ -1,4 +1,4 @@
1
- import{g as x,x as p}from"./iframe-B9buZjP7.js";import{o as t}from"./if-defined-BwWBCoAU.js";import{o as g}from"./style-map-qCiIYcp5.js";import"./preload-helper-PPVm8Dsz.js";const{events:y,args:v,argTypes:f}=x("btu-checkbox"),S={customColorPrimary:"--checkbox-color-primary",customColorBorder:"--checkbox-color-border",customColorError:"--checkbox-color-error",customBorderRadius:"--checkbox-border-radius",customLabelSpacing:"--checkbox-label-spacing"},C=e=>Object.entries(S).reduce((r,[h,k])=>(e[h]&&(r[k]=e[h]),r),{}),P={title:"Components/Checkbox",component:"btu-checkbox",tags:["autodocs"],parameters:{docs:{subtitle:"A checkbox for selecting one or more options",description:{component:`
1
+ import{g as x,x as p}from"./iframe-Byo_x5o2.js";import{o as t}from"./if-defined-DL7cQU7O.js";import{o as g}from"./style-map-DxZm5Cj7.js";import"./Checkbox-BALsanB1.js";import"./preload-helper-PPVm8Dsz.js";import"./property-_few0Xe5.js";import"./ReadyMixin-C8HW2nGE.js";import"./Icon-DPQKiWDz.js";const{events:y,args:v,argTypes:f}=x("btu-checkbox"),S={customColorPrimary:"--checkbox-color-primary",customColorBorder:"--checkbox-color-border",customColorError:"--checkbox-color-error",customBorderRadius:"--checkbox-border-radius",customLabelSpacing:"--checkbox-label-spacing"},C=e=>Object.entries(S).reduce((r,[h,k])=>(e[h]&&(r[k]=e[h]),r),{}),B={title:"Components/Checkbox",component:"btu-checkbox",tags:["autodocs"],parameters:{docs:{subtitle:"A checkbox for selecting one or more options",description:{component:`
2
2
  <h3>When to use:</h3>
3
3
  <ul>
4
4
  <li>For selecting one or more options from a set</li>
@@ -20,7 +20,7 @@ import{g as x,x as p}from"./iframe-B9buZjP7.js";import{o as t}from"./if-defined-
20
20
  ?required=${e.required}
21
21
  style=${g(C(e))}
22
22
  ></btu-checkbox>
23
- `},o={args:{}},c={args:{checked:!0,label:"Accepted terms"}},a={args:{label:"Remember me",description:"Save your login details for next time.",checked:!0}},n={args:{label:"Select all",indeterminate:!0},parameters:{docs:{description:{story:"Indeterminate state shows a minus icon. Clicking clears indeterminate and toggles the checked state."}}}},s={args:{label:"Unavailable option",disabled:!0}},l={args:{label:"Previously accepted",disabled:!0,checked:!0}},i={args:{label:"Accept terms and conditions",invalid:!0,error:"You must accept the terms to continue."}},d={render:()=>p`
23
+ `},o={args:{}},c={args:{checked:!0,label:"Accepted terms"}},a={args:{label:"Remember me",description:"Save your login details for next time.",checked:!0}},n={args:{label:"Select all",indeterminate:!0},parameters:{docs:{description:{story:"Indeterminate state shows a minus icon. Clicking clears indeterminate and toggles the checked state."}}}},s={args:{label:"Unavailable option",disabled:!0}},i={args:{label:"Previously accepted",disabled:!0,checked:!0}},l={args:{label:"Accept terms and conditions",invalid:!0,error:"You must accept the terms to continue."}},d={render:()=>p`
24
24
  <div style="display: flex; flex-direction: column; gap: 0.75rem;">
25
25
  <span style="font-size: 0.875rem; font-weight: 600; color: oklch(var(--btu-theme-gray-700));">Toppings</span>
26
26
  <btu-checkbox label="Pepperoni" name="toppings" checked></btu-checkbox>
@@ -28,12 +28,12 @@ import{g as x,x as p}from"./iframe-B9buZjP7.js";import{o as t}from"./if-defined-
28
28
  <btu-checkbox label="Extra cheese" name="toppings" checked></btu-checkbox>
29
29
  <btu-checkbox label="Olives" name="toppings"></btu-checkbox>
30
30
  </div>
31
- `},b={args:{label:"Partial selection",disabled:!0,indeterminate:!0}},u={render:()=>p`
31
+ `},b={args:{label:"Partial selection",disabled:!0,indeterminate:!0}},m={render:()=>p`
32
32
  <div style="display: flex; flex-direction: column; gap: 1rem;">
33
33
  <btu-checkbox size="sm" label="Small (default)" checked></btu-checkbox>
34
34
  <btu-checkbox size="md" label="Medium" checked></btu-checkbox>
35
35
  </div>
36
- `},m={render:()=>p`
36
+ `},u={render:()=>p`
37
37
  <div style="display: flex; flex-direction: column; gap: 0.75rem;">
38
38
  <btu-checkbox
39
39
  label="Toggle me"
@@ -76,19 +76,19 @@ import{g as x,x as p}from"./iframe-B9buZjP7.js";import{o as t}from"./if-defined-
76
76
  label: 'Unavailable option',
77
77
  disabled: true
78
78
  }
79
- }`,...s.parameters?.docs?.source}}};l.parameters={...l.parameters,docs:{...l.parameters?.docs,source:{originalSource:`{
79
+ }`,...s.parameters?.docs?.source}}};i.parameters={...i.parameters,docs:{...i.parameters?.docs,source:{originalSource:`{
80
80
  args: {
81
81
  label: 'Previously accepted',
82
82
  disabled: true,
83
83
  checked: true
84
84
  }
85
- }`,...l.parameters?.docs?.source}}};i.parameters={...i.parameters,docs:{...i.parameters?.docs,source:{originalSource:`{
85
+ }`,...i.parameters?.docs?.source}}};l.parameters={...l.parameters,docs:{...l.parameters?.docs,source:{originalSource:`{
86
86
  args: {
87
87
  label: 'Accept terms and conditions',
88
88
  invalid: true,
89
89
  error: 'You must accept the terms to continue.'
90
90
  }
91
- }`,...i.parameters?.docs?.source}}};d.parameters={...d.parameters,docs:{...d.parameters?.docs,source:{originalSource:`{
91
+ }`,...l.parameters?.docs?.source}}};d.parameters={...d.parameters,docs:{...d.parameters?.docs,source:{originalSource:`{
92
92
  render: () => html\`
93
93
  <div style="display: flex; flex-direction: column; gap: 0.75rem;">
94
94
  <span style="font-size: 0.875rem; font-weight: 600; color: oklch(var(--btu-theme-gray-700));">Toppings</span>
@@ -104,14 +104,14 @@ import{g as x,x as p}from"./iframe-B9buZjP7.js";import{o as t}from"./if-defined-
104
104
  disabled: true,
105
105
  indeterminate: true
106
106
  }
107
- }`,...b.parameters?.docs?.source}}};u.parameters={...u.parameters,docs:{...u.parameters?.docs,source:{originalSource:`{
107
+ }`,...b.parameters?.docs?.source}}};m.parameters={...m.parameters,docs:{...m.parameters?.docs,source:{originalSource:`{
108
108
  render: () => html\`
109
109
  <div style="display: flex; flex-direction: column; gap: 1rem;">
110
110
  <btu-checkbox size="sm" label="Small (default)" checked></btu-checkbox>
111
111
  <btu-checkbox size="md" label="Medium" checked></btu-checkbox>
112
112
  </div>
113
113
  \`
114
- }`,...u.parameters?.docs?.source}}};m.parameters={...m.parameters,docs:{...m.parameters?.docs,source:{originalSource:`{
114
+ }`,...m.parameters?.docs?.source}}};u.parameters={...u.parameters,docs:{...u.parameters?.docs,source:{originalSource:`{
115
115
  render: () => html\`
116
116
  <div style="display: flex; flex-direction: column; gap: 0.75rem;">
117
117
  <btu-checkbox
@@ -138,4 +138,4 @@ import{g as x,x as p}from"./iframe-B9buZjP7.js";import{o as t}from"./if-defined-
138
138
  }
139
139
  }
140
140
  }
141
- }`,...m.parameters?.docs?.source}}};const w=["Default","Checked","WithDescription","Indeterminate","Disabled","DisabledChecked","InvalidWithError","Group","DisabledIndeterminate","Sizes","Events"];export{c as Checked,o as Default,s as Disabled,l as DisabledChecked,b as DisabledIndeterminate,m as Events,d as Group,n as Indeterminate,i as InvalidWithError,u as Sizes,a as WithDescription,w as __namedExportsOrder,P as default};
141
+ }`,...u.parameters?.docs?.source}}};const A=["Default","Checked","WithDescription","Indeterminate","Disabled","DisabledChecked","InvalidWithError","Group","DisabledIndeterminate","Sizes","Events"];export{c as Checked,o as Default,s as Disabled,i as DisabledChecked,b as DisabledIndeterminate,u as Events,d as Group,n as Indeterminate,l as InvalidWithError,m as Sizes,a as WithDescription,A as __namedExportsOrder,B as default};
@@ -0,0 +1,42 @@
1
+ import{E as r,x as u,i as $}from"./iframe-Byo_x5o2.js";import{n as p}from"./property-_few0Xe5.js";import{E as g,R as k}from"./ReadyMixin-C8HW2nGE.js";import{P as v}from"./ProgressMixin-D1atDw3n.js";var y=Object.defineProperty,f=(o,e,i,a)=>{for(var t=void 0,s=o.length-1,n;s>=0;s--)(n=o[s])&&(t=n(e,i,t)||t);return t&&y(e,i,t),t};class m extends v(g(k($))){constructor(){super(...arguments),this.indeterminate=!0,this.size="sm",this._initialClasses=[],this._initialClassesCaptured=!1}connectedCallback(){super.connectedCallback(),this._initialClassesCaptured||(this.className&&(this._initialClasses=this.className.split(" ").filter(e=>e.trim())),this._initialClassesCaptured=!0),this._styleObserver=new MutationObserver(e=>{e.forEach(i=>{i.type==="attributes"&&i.attributeName==="style"&&this.requestUpdate()})}),this._styleObserver.observe(this,{attributes:!0,attributeFilter:["style"]})}createRenderRoot(){return this}willUpdate(){const e=[...this._initialClasses,"inline-flex","flex-col","items-center"];this.className=e.join(" ")}firstUpdated(e){super.firstUpdated(e),this.indeterminate||this._setupInitialAnimation()}disconnectedCallback(){super.disconnectedCallback(),this._styleObserver?.disconnect(),this._cleanupInitialAnimation()}updated(e){super.updated(e),e.has("indeterminate")&&!this.indeterminate&&this._setupInitialAnimation(),this.indeterminate||this._trackCompletion()}render(){const e={sm:16,md:32,lg:48},i=getComputedStyle(this).getPropertyValue("--progress-size").trim(),a=parseFloat(i),t=i&&!isNaN(a)&&a>0?a:e[this.size]??e.sm,s=this.thickness??2,n=this._getProgressColorValue(),c=(t-s)/2,h=2*Math.PI*c,l=t/2,d=this._getAnimatedProgress(),b=this.indeterminate?0:h-d/100*h;return u`
2
+ <span
3
+ class="blokk"
4
+ role="progressbar"
5
+ aria-label="${this.ariaLabel||r}"
6
+ aria-labelledby="${this.ariaLabelledBy||r}"
7
+ aria-valuenow="${this.indeterminate?r:d}"
8
+ aria-valuemin="${this.indeterminate?r:"0"}"
9
+ aria-valuemax="${this.indeterminate?r:"100"}"
10
+ aria-valuetext="${this.indeterminate?r:this.ariaValueText||this.label||`${d} percent`}"
11
+ >
12
+ <svg
13
+ class="${this.indeterminate?"animate-circular-progress-rotate":""} blokk"
14
+ width="${t}"
15
+ height="${t}"
16
+ viewBox="0 0 ${t} ${t}"
17
+ aria-hidden="true"
18
+ >
19
+ <circle
20
+ cx="${l}"
21
+ cy="${l}"
22
+ r="${c}"
23
+ fill="none"
24
+ stroke="var(--track-color, oklch(var(--btu-theme-gray-100)))"
25
+ stroke-width="${s}"
26
+ />
27
+ <circle
28
+ class="${this.indeterminate?"animate-circular-progress-dash":"-rotate-90"} origin-center transition-all duration-300 ease-in-out"
29
+ cx="${l}"
30
+ cy="${l}"
31
+ r="${c}"
32
+ fill="none"
33
+ stroke="${n}"
34
+ stroke-width="${s}"
35
+ stroke-dasharray="${this.indeterminate?"1, 200":h}"
36
+ stroke-dashoffset="${this.indeterminate?"0":b}"
37
+ stroke-linecap="round"
38
+ />
39
+ </svg>
40
+ </span>
41
+ ${this.label?u`<span class="mt-2 text-center text-xs font-medium text-gray-700">${this.label}</span>`:""}
42
+ `}}f([p({type:Boolean})],m.prototype,"indeterminate");f([p({type:String})],m.prototype,"size");customElements.get("btu-circular-progress")||customElements.define("btu-circular-progress",m);
@@ -1,4 +1,4 @@
1
- import{g as S,E as h,x as T}from"./iframe-B9buZjP7.js";import{o as $}from"./style-map-qCiIYcp5.js";import"./preload-helper-PPVm8Dsz.js";const{events:V,args:A,argTypes:u}=S("btu-circular-progress"),O={title:"Components/Circular Progress",component:"btu-circular-progress",tags:["autodocs"],parameters:{docs:{subtitle:"A component for showing loading states or progress",description:{component:`
1
+ import{g as S,E as h,x as T}from"./iframe-Byo_x5o2.js";import{o as $}from"./style-map-DxZm5Cj7.js";import"./CircularProgress-BeE2fWON.js";import"./preload-helper-PPVm8Dsz.js";import"./property-_few0Xe5.js";import"./ReadyMixin-C8HW2nGE.js";import"./ProgressMixin-D1atDw3n.js";import"./aria-D5THOgos.js";const{events:V,args:A,argTypes:u}=S("btu-circular-progress"),F={title:"Components/Circular Progress",component:"btu-circular-progress",tags:["autodocs"],parameters:{docs:{subtitle:"A component for showing loading states or progress",description:{component:`
2
2
  <h3>When to use:</h3>
3
3
  <ul>
4
4
  <li>To indicate loading or processing state</li>
@@ -448,4 +448,4 @@ Demonstrates accessibility best practices for screen reader users:
448
448
  }
449
449
  }
450
450
  }
451
- }`,...E.parameters?.docs?.source}}};const W=["Default","DeterminateProgress","AnimatedProgress","InitialAnimation","CompletionEvent","Accessibility"];export{E as Accessibility,x as AnimatedProgress,C as CompletionEvent,f as Default,v as DeterminateProgress,y as InitialAnimation,W as __namedExportsOrder,O as default};
451
+ }`,...E.parameters?.docs?.source}}};const H=["Default","DeterminateProgress","AnimatedProgress","InitialAnimation","CompletionEvent","Accessibility"];export{E as Accessibility,x as AnimatedProgress,C as CompletionEvent,f as Default,v as DeterminateProgress,y as InitialAnimation,H as __namedExportsOrder,F as default};
@@ -0,0 +1 @@
1
+ import"./iframe-Byo_x5o2.js";import{a as i}from"./aria-D5THOgos.js";const c=r=>{class a extends r{get copiedStateKey(){return`${this.tagName.toLowerCase()}-copied`}async copy(e,o=3e3){if(!e)return;const t=this.copiedStateKey;if(!this.states.has(t)){try{if(!navigator.clipboard||typeof navigator.clipboard.writeText!="function")throw new Error("Clipboard API is not available in this environment.");await navigator.clipboard.writeText(e)}catch(s){console.error("Failed to copy text to clipboard:",s),i("Copy failed");return}this.states.add(t),this.requestUpdate(),this.emit(t),i("Copied!"),setTimeout(()=>{this.states.delete(t),this.requestUpdate()},o)}}}return a};export{c as C};
@@ -1,4 +1,4 @@
1
- import{x as m,i as h}from"./iframe-B9buZjP7.js";import{t as u}from"./custom-element-UsVr97OX.js";import{C as b}from"./ComponentStatesMixin-B6uJL_2c.js";import{E as y,R as x}from"./ReadyMixin-BbuzH3uO.js";import"./preload-helper-PPVm8Dsz.js";function n(e,d){let r=document.getElementById("aria-live-container");r||(r=document.createElement("div"),r.setAttribute("id","aria-live-container"),document.body.appendChild(r));const t=document.createElement("div"),i="speak-"+Date.now();t.setAttribute("id",i),t.setAttribute("aria-atomic","true"),t.setAttribute("aria-live","polite"),t.style.cssText="position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border-width: 0;",r.appendChild(t),setTimeout(()=>{const o=document.getElementById(i);o&&(o.innerHTML=e)},150),window.BRIGHTSPOT?.ariaDebug===!0&&console.log(`ARIA Announced: "${e}"`),setTimeout(()=>{document.getElementById(i)?.remove()},2e3)}const g=e=>{class d extends e{get copiedStateKey(){return`${this.tagName.toLowerCase()}-copied`}async copy(t,i=3e3){if(!t)return;const o=this.copiedStateKey;if(!this.states.has(o)){try{if(!navigator.clipboard||typeof navigator.clipboard.writeText!="function")throw new Error("Clipboard API is not available in this environment.");await navigator.clipboard.writeText(t)}catch(a){console.error("Failed to copy text to clipboard:",a),n("Copy failed");return}this.states.add(o),this.requestUpdate(),this.emit(o),n("Copied!"),setTimeout(()=>{this.states.delete(o),this.requestUpdate()},i)}}}return d};var c=Object.freeze,f=Object.defineProperty,v=Object.getOwnPropertyDescriptor,C=(e,d,r,t)=>{for(var i=t>1?void 0:t?v(d,r):d,o=e.length-1,a;o>=0;o--)(a=e[o])&&(i=a(i)||i);return i},E=(e,d)=>c(f(e,"raw",{value:c(e.slice())})),l;const I={title:"Mixins/Clipboard",tags:["autodocs"],parameters:{docs:{description:{component:`
1
+ import{x as p,i as m}from"./iframe-Byo_x5o2.js";import{t as h}from"./custom-element-UsVr97OX.js";import{C as b}from"./ClipboardMixin-C6wcbXIO.js";import{C as u}from"./ComponentStatesMixin-CG-Dx_Vk.js";import{E as y,R as x}from"./ReadyMixin-C8HW2nGE.js";import"./preload-helper-PPVm8Dsz.js";import"./aria-D5THOgos.js";var a=Object.freeze,g=Object.defineProperty,f=Object.getOwnPropertyDescriptor,v=(e,t,l,r)=>{for(var o=r>1?void 0:r?f(t,l):t,d=e.length-1,s;d>=0;d--)(s=e[d])&&(o=s(o)||o);return o},C=(e,t)=>a(g(e,"raw",{value:a(e.slice())})),c;const D={title:"Mixins/Clipboard",tags:["autodocs"],parameters:{docs:{description:{component:`
2
2
  \`ClipboardMixin\` adds clipboard copy functionality via a <code>copy()</code> method that writes text to the system clipboard.
3
3
 
4
4
  It adds a temporary state and emits an event, which web components can use for visual feedback.
@@ -138,12 +138,12 @@ my-copy-button:state(my-copy-button-copied)::after {
138
138
  <li>State automatically clears after the specified timeout (default: 3 seconds)</li>
139
139
  <li>Empty strings are ignored (no-op)</li>
140
140
  </ul>
141
- `}}}};let p=class extends g(b(y(x(h)))){constructor(){super(...arguments),this.textToCopy="Hello from ClipboardMixin!"}async handleCopy(){await this.copy(this.textToCopy)}render(){const e=this.states.has("clipboard-demo-copied");return m`
141
+ `}}}};let n=class extends b(u(y(x(m)))){constructor(){super(...arguments),this.textToCopy="Hello from ClipboardMixin!"}async handleCopy(){await this.copy(this.textToCopy)}render(){const e=this.states.has("clipboard-demo-copied");return p`
142
142
  <div style="display: flex; align-items: center; gap: 1rem;">
143
143
  <input
144
144
  type="text"
145
145
  .value=${this.textToCopy}
146
- @input=${d=>{this.textToCopy=d.target.value}}
146
+ @input=${t=>{this.textToCopy=t.target.value}}
147
147
  style="flex: 1; border-radius: 4px; border: 1px solid #d1d5db; padding: 0.5rem 0.75rem;"
148
148
  placeholder="Enter text to copy"
149
149
  />
@@ -154,7 +154,7 @@ my-copy-button:state(my-copy-button-copied)::after {
154
154
  ${e?"✓ Copied!":"Copy"}
155
155
  </button>
156
156
  </div>
157
- `}};p=C([u("clipboard-demo")],p);const s={render:()=>m(l||(l=E([`<div class="flex flex-col gap-4">
157
+ `}};n=v([h("clipboard-demo")],n);const i={render:()=>p(c||(c=C([`<div class="flex flex-col gap-4">
158
158
  <div>
159
159
  <h4 class="mb-2 font-bold">Interactive Clipboard Demo</h4>
160
160
  <p class="mb-4 text-sm text-gray-600">
@@ -190,7 +190,7 @@ my-copy-button:state(my-copy-button-copied)::after {
190
190
  })
191
191
  })()
192
192
  <\/script>
193
- </div>`])))};s.parameters={...s.parameters,docs:{...s.parameters?.docs,source:{originalSource:`{
193
+ </div>`])))};i.parameters={...i.parameters,docs:{...i.parameters?.docs,source:{originalSource:`{
194
194
  render: () => html\`<div class="flex flex-col gap-4">
195
195
  <div>
196
196
  <h4 class="mb-2 font-bold">Interactive Clipboard Demo</h4>
@@ -228,4 +228,4 @@ my-copy-button:state(my-copy-button-copied)::after {
228
228
  })()
229
229
  <\/script>
230
230
  </div>\`
231
- }`,...s.parameters?.docs?.source}}};const D=["ClipboardMixinDemo"];export{s as ClipboardMixinDemo,D as __namedExportsOrder,I as default};
231
+ }`,...i.parameters?.docs?.source}}};const P=["ClipboardMixinDemo"];export{i as ClipboardMixinDemo,P as __namedExportsOrder,D as default};