@brightspot/ui 1.2.0 → 1.4.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 (134) hide show
  1. package/dist/components/copy-to-clipboard/CopyToClipboard.d.ts +57 -0
  2. package/dist/components/copy-to-clipboard/CopyToClipboard.d.ts.map +1 -0
  3. package/dist/components/copy-to-clipboard/CopyToClipboard.js +84 -0
  4. package/dist/components/copy-to-clipboard/CopyToClipboard.js.map +1 -0
  5. package/dist/custom-elements.json +114 -0
  6. package/dist/global.d.ts +10 -0
  7. package/dist/storybook/assets/{Avatar.stories-BlxrclP0.js → Avatar.stories-DrhezTR1.js} +2 -2
  8. package/dist/storybook/assets/{AvatarGroup.stories-E3VUvBae.js → AvatarGroup.stories-DrlxT-mF.js} +1 -1
  9. package/dist/storybook/assets/{Badge.stories-f4YvPz0W.js → Badge.stories-DtJcBfOR.js} +1 -1
  10. package/dist/storybook/assets/{Button.stories-N66xrq4q.js → Button.stories-BKUfLgSY.js} +1 -1
  11. package/dist/storybook/assets/{CircularProgress.stories-zWyELtfc.js → CircularProgress.stories-dpmD-XJT.js} +1 -1
  12. package/dist/storybook/assets/ClipboardMixin.stories-C0pnQ7BY.js +228 -0
  13. package/dist/storybook/assets/Color-64QXVMR3-Dnd9S2a1.js +1 -0
  14. package/dist/storybook/assets/{Colors.stories-nEoNeHhf.js → Colors.stories-bKK25qgF.js} +1 -1
  15. package/dist/storybook/assets/ComponentStatesMixin-C2HZ9ZFb.js +1 -0
  16. package/dist/storybook/assets/ComponentStatesMixin.stories-9mRp2zuB.js +313 -0
  17. package/dist/storybook/assets/CopyToClipboard.stories-BW3oaT1i.js +277 -0
  18. package/dist/storybook/assets/Debounce.stories-BXx3CKvQ.js +199 -0
  19. package/dist/storybook/assets/{Events.stories-BP3ensxX.js → Events.stories-PBeiuWQn.js} +1 -1
  20. package/dist/storybook/assets/{Heading.stories-DGqWaBpi.js → Heading.stories-Djkl0MoC.js} +1 -1
  21. package/dist/storybook/assets/{Icon.stories-BWWjh4NZ.js → Icon.stories-Cam1fyud.js} +1 -1
  22. package/dist/storybook/assets/{LinearProgress.stories-DMVolkoE.js → LinearProgress.stories-BDNoYIJu.js} +1 -1
  23. package/dist/storybook/assets/Rtc.stories-BrTAIAi1.js +281 -0
  24. package/dist/storybook/assets/{ScrollShadow.stories-BmwSRNje.js → ScrollShadow.stories-DHcKhkag.js} +1 -1
  25. package/dist/storybook/assets/{Throttle.stories-DBj-9rhV.js → Throttle.stories-cSYT_BXu.js} +1 -1
  26. package/dist/storybook/assets/{WithTooltip-SK46ZJ2J-DW4NXFWt.js → WithTooltip-SK46ZJ2J-Df0E-KJO.js} +43 -43
  27. package/dist/storybook/assets/_commonjsHelpers-CqkleIqs.js +1 -0
  28. package/dist/storybook/assets/formatter-OMEEQ6HG-DFa_WTfb.js +1 -0
  29. package/dist/storybook/assets/{iframe-CxsKJSj-.css → iframe-BMxUFmpF.css} +1 -1
  30. package/dist/storybook/assets/{iframe-Z4F0Cgki.js → iframe-lTczLWsL.js} +76 -76
  31. package/dist/storybook/assets/index-yMswRDPh.js +1 -0
  32. package/dist/storybook/assets/onFind-C6olvKHR.js +1 -0
  33. package/dist/storybook/assets/onFind.stories-DfW54CDE.js +284 -0
  34. package/dist/storybook/assets/onRemove.stories-C7W9KyRr.js +234 -0
  35. package/dist/storybook/assets/onVisible.stories-CIl6R0q4.js +187 -0
  36. package/dist/storybook/assets/syntaxhighlighter-CAVLW7PM-DoI0ixeu.js +6 -0
  37. package/dist/storybook/iframe.html +2 -2
  38. package/dist/storybook/index.json +1 -1
  39. package/dist/storybook/project.json +1 -1
  40. package/dist/tailwind-plugin-button.js +3 -0
  41. package/dist/tailwind-plugin-button.js.map +1 -1
  42. package/dist/tailwind-plugin-button.ts +4 -0
  43. package/dist/util/ClipboardMixin.d.ts +39 -0
  44. package/dist/util/ClipboardMixin.d.ts.map +1 -0
  45. package/dist/util/ClipboardMixin.js +77 -0
  46. package/dist/util/ClipboardMixin.js.map +1 -0
  47. package/dist/util/ComponentStatesMixin.d.ts +54 -0
  48. package/dist/util/ComponentStatesMixin.d.ts.map +1 -0
  49. package/dist/util/ComponentStatesMixin.js +58 -0
  50. package/dist/util/ComponentStatesMixin.js.map +1 -0
  51. package/dist/util/EventEmitterMixin.d.ts +5 -3
  52. package/dist/util/EventEmitterMixin.d.ts.map +1 -1
  53. package/dist/util/EventEmitterMixin.js.map +1 -1
  54. package/dist/util/Socket.d.ts +29 -0
  55. package/dist/util/Socket.d.ts.map +1 -0
  56. package/dist/util/Socket.js +153 -0
  57. package/dist/util/Socket.js.map +1 -0
  58. package/dist/util/Tether.d.ts +18 -0
  59. package/dist/util/Tether.d.ts.map +1 -0
  60. package/dist/util/Tether.js +102 -0
  61. package/dist/util/Tether.js.map +1 -0
  62. package/dist/util/TetherLayout.d.ts +12 -0
  63. package/dist/util/TetherLayout.d.ts.map +1 -0
  64. package/dist/util/TetherLayout.js +121 -0
  65. package/dist/util/TetherLayout.js.map +1 -0
  66. package/dist/util/debounce.d.ts +3 -0
  67. package/dist/util/debounce.d.ts.map +1 -0
  68. package/dist/util/debounce.js +15 -0
  69. package/dist/util/debounce.js.map +1 -0
  70. package/dist/util/focusable.d.ts +9 -0
  71. package/dist/util/focusable.d.ts.map +1 -0
  72. package/dist/util/focusable.js +19 -0
  73. package/dist/util/focusable.js.map +1 -0
  74. package/dist/util/getComponentKey.d.ts +2 -0
  75. package/dist/util/getComponentKey.d.ts.map +1 -0
  76. package/dist/util/getComponentKey.js +21 -0
  77. package/dist/util/getComponentKey.js.map +1 -0
  78. package/dist/util/keyboard.d.ts +8 -0
  79. package/dist/util/keyboard.d.ts.map +1 -0
  80. package/dist/util/keyboard.js +138 -0
  81. package/dist/util/keyboard.js.map +1 -0
  82. package/dist/util/noise.d.ts +6 -0
  83. package/dist/util/noise.d.ts.map +1 -0
  84. package/dist/util/noise.js +43 -0
  85. package/dist/util/noise.js.map +1 -0
  86. package/dist/util/onFind.d.ts +11 -0
  87. package/dist/util/onFind.d.ts.map +1 -0
  88. package/dist/util/onFind.js +210 -0
  89. package/dist/util/onFind.js.map +1 -0
  90. package/dist/util/onFindOnce.d.ts +3 -0
  91. package/dist/util/onFindOnce.d.ts.map +1 -0
  92. package/dist/util/onFindOnce.js +25 -0
  93. package/dist/util/onFindOnce.js.map +1 -0
  94. package/dist/util/onRTEReady.d.ts +22 -0
  95. package/dist/util/onRTEReady.d.ts.map +1 -0
  96. package/dist/util/onRTEReady.js +69 -0
  97. package/dist/util/onRTEReady.js.map +1 -0
  98. package/dist/util/onRemove.d.ts +7 -0
  99. package/dist/util/onRemove.d.ts.map +1 -0
  100. package/dist/util/onRemove.js +24 -0
  101. package/dist/util/onRemove.js.map +1 -0
  102. package/dist/util/onVisible.d.ts +3 -0
  103. package/dist/util/onVisible.d.ts.map +1 -0
  104. package/dist/util/onVisible.js +22 -0
  105. package/dist/util/onVisible.js.map +1 -0
  106. package/dist/util/previousUntil.d.ts +2 -0
  107. package/dist/util/previousUntil.d.ts.map +1 -0
  108. package/dist/util/previousUntil.js +21 -0
  109. package/dist/util/previousUntil.js.map +1 -0
  110. package/dist/util/repaint.d.ts +3 -0
  111. package/dist/util/repaint.d.ts.map +1 -0
  112. package/dist/util/repaint.js +14 -0
  113. package/dist/util/repaint.js.map +1 -0
  114. package/dist/util/rtc.d.ts +10 -0
  115. package/dist/util/rtc.d.ts.map +1 -0
  116. package/dist/util/rtc.js +184 -0
  117. package/dist/util/rtc.js.map +1 -0
  118. package/dist/util/storage.d.ts +6 -0
  119. package/dist/util/storage.d.ts.map +1 -0
  120. package/dist/util/storage.js +18 -0
  121. package/dist/util/storage.js.map +1 -0
  122. package/dist/util/transition.d.ts +2 -0
  123. package/dist/util/transition.d.ts.map +1 -0
  124. package/dist/util/transition.js +4 -0
  125. package/dist/util/transition.js.map +1 -0
  126. package/dist/util/types.d.ts +10 -0
  127. package/dist/util/types.d.ts.map +1 -0
  128. package/dist/util/types.js +2 -0
  129. package/dist/util/types.js.map +1 -0
  130. package/package.json +7 -2
  131. package/dist/storybook/assets/Color-64QXVMR3-B3Y5c9dl.js +0 -1
  132. package/dist/storybook/assets/formatter-OMEEQ6HG-BBn014aZ.js +0 -1
  133. package/dist/storybook/assets/index-BUj5S-B7.js +0 -1
  134. package/dist/storybook/assets/syntaxhighlighter-CAVLW7PM-CsQveU1N.js +0 -6
@@ -0,0 +1,228 @@
1
+ import{x as m,i as b}from"./iframe-lTczLWsL.js";import{t as u,C as h}from"./ComponentStatesMixin-C2HZ9ZFb.js";import"./preload-helper-PPVm8Dsz.js";const x=t=>{class o extends t{connectedCallback(){super.connectedCallback(),Promise.resolve().then(()=>this.emit("btu-element-connected",{}),e=>this.emit("btu-element-error",{error:e}))}disconnectedCallback(){super.disconnectedCallback(),this.emit("btu-element-disconnected")}emit(e,i){return this.dispatchEvent(new CustomEvent(e,{bubbles:!0,cancelable:!1,composed:!0,detail:i}))}}return o},y=t=>{class o extends t{connectedCallback(){const e=()=>{super.connectedCallback()};document.readyState!=="loading"?e():document.addEventListener("DOMContentLoaded",()=>e())}}return o};function s(t,o){let r=document.getElementById("aria-live-container");r||(r=document.createElement("div"),r.setAttribute("id","aria-live-container"),document.body.appendChild(r));const e=document.createElement("div"),i="speak-"+Date.now();e.setAttribute("id",i),e.setAttribute("aria-atomic","true"),e.setAttribute("aria-live","polite"),e.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(e),setTimeout(()=>{const d=document.getElementById(i);d&&(d.innerHTML=t)},150),window.BRIGHTSPOT?.ariaDebug===!0&&console.log(`ARIA Announced: "${t}"`),setTimeout(()=>{document.getElementById(i)?.remove()},2e3)}const g=t=>{class o extends t{async copy(e,i=3e3){if(e&&!this.states.has("btu-clipboard-copied")){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(d){console.error("Failed to copy text to clipboard:",d),s("Copy failed");return}this.states.add("btu-clipboard-copied"),this.requestUpdate(),this.emit("btu-clipboard-copied"),s("Copied!"),setTimeout(()=>{this.states.delete("btu-clipboard-copied"),this.requestUpdate()},i)}}}return o};var c=Object.freeze,v=Object.defineProperty,C=Object.getOwnPropertyDescriptor,f=(t,o,r,e)=>{for(var i=e>1?void 0:e?C(o,r):o,d=t.length-1,n;d>=0;d--)(n=t[d])&&(i=n(i)||i);return i},E=(t,o)=>c(v(t,"raw",{value:c(t.slice())})),l;const k={title:"Mixins/Clipboard",tags:["autodocs"],parameters:{docs:{description:{component:`
2
+ \`ClipboardMixin\` adds clipboard copy functionality via a <code>copy()</code> method that writes text to the system clipboard.
3
+
4
+ It adds a temporary state and emits an event, which web components can use for visual feedback.
5
+
6
+ <h3>What ClipboardMixin Provides</h3>
7
+ <ul>
8
+ <li><strong>copy(text, timeout?):</strong> Async method to copy text to clipboard using native Clipboard API (<code>navigator.clipboard.writeText</code>)</li>
9
+ <li>Automatic <code>btu-clipboard-copied</code> state management (3 seconds default)</li>
10
+ <li>Emits <code>btu-clipboard-copied</code> event on successful copy</li>
11
+ </ul>
12
+
13
+ <h3>Method API</h3>
14
+
15
+ <table>
16
+ <thead>
17
+ <tr>
18
+ <th>Method</th>
19
+ <th>Parameters</th>
20
+ <th>Return Type</th>
21
+ <th>Description</th>
22
+ </tr>
23
+ </thead>
24
+ <tbody>
25
+ <tr>
26
+ <td><code>copy</code></td>
27
+ <td><code>text: string</code><br/><code>timeout?: number</code></td>
28
+ <td><code>Promise&lt;void&gt;</code></td>
29
+ <td>Copies text to clipboard. Timeout specifies how long to keep success state (default: 3000ms)</td>
30
+ </tr>
31
+ </tbody>
32
+ </table>
33
+
34
+ <h3>Events</h3>
35
+
36
+ <table>
37
+ <thead>
38
+ <tr>
39
+ <th>Event Name</th>
40
+ <th>Type</th>
41
+ <th>Description</th>
42
+ <th>Detail</th>
43
+ </tr>
44
+ </thead>
45
+ <tbody>
46
+ <tr>
47
+ <td><code>btu-clipboard-copied</code></td>
48
+ <td>CustomEvent</td>
49
+ <td>Fired when text is successfully copied to clipboard</td>
50
+ <td><code>{}</code></td>
51
+ </tr>
52
+ </tbody>
53
+ </table>
54
+
55
+ <h3>Dependencies</h3>
56
+
57
+ <p><strong>ClipboardMixin requires the following mixins to function properly:</strong></p>
58
+ <ul>
59
+ <li><strong><a href="?path=/docs/mixins-component-states--docs">ComponentStatesMixin</a>:</strong> For managing the <code>btu-clipboard-copied</code> state</li>
60
+ <li><strong><a href="?path=/docs/mixins-events--docs">EventEmitterMixin</a>:</strong> For emitting the <code>btu-clipboard-copied</code> event</li>
61
+ </ul>
62
+
63
+ <h3>Mixin Composition</h3>
64
+
65
+ <p>ClipboardMixin must be composed with ComponentStatesMixin and EventEmitterMixin. The recommended order is:</p>
66
+
67
+ <p>✅ <strong>Correct composition order:</strong></p>
68
+ \`\`\`
69
+ ClipboardMixin(
70
+ ComponentStatesMixin(
71
+ EventEmitterMixin(
72
+ ReadyMixin(LitElement)
73
+ )
74
+ )
75
+ )
76
+ \`\`\`
77
+
78
+ <p>❌ <strong>Incorrect - missing required mixins:</strong></p>
79
+ \`\`\`
80
+ ClipboardMixin(LitElement) // Error: ComponentStatesMixin required
81
+ \`\`\`
82
+
83
+ <h3>TypeScript Usage</h3>
84
+
85
+ \`\`\`typescript
86
+ import { ClipboardMixin } from './ClipboardMixin'
87
+ import { ComponentStatesMixin } from './ComponentStatesMixin'
88
+ import { EventEmitterMixin } from './EventEmitterMixin'
89
+ import { ReadyMixin } from './ReadyMixin'
90
+ import { LitElement, html } from 'lit'
91
+ import { customElement } from 'lit/decorators.js'
92
+
93
+ @customElement('my-copy-button')
94
+ class MyCopyButton extends ClipboardMixin(
95
+ ComponentStatesMixin(
96
+ EventEmitterMixin(
97
+ ReadyMixin(LitElement)
98
+ )
99
+ )
100
+ ) {
101
+ async handleClick() {
102
+ await this.copy('Hello, World!', 5000)
103
+ }
104
+
105
+ render() {
106
+ const isCopied = this.states.has('btu-clipboard-copied')
107
+
108
+ return html\`
109
+ <button @click=\${this.handleClick}>
110
+ \${isCopied ? 'Copied!' : 'Copy Text'}
111
+ </button>
112
+ \`
113
+ }
114
+ }
115
+ \`\`\`
116
+
117
+ <h3>CSS Styling</h3>
118
+
119
+ <p>Style the copied state using the <code>:state()</code> pseudo-class:</p>
120
+
121
+ \`\`\`css
122
+ my-copy-button:state(btu-clipboard-copied) {
123
+ background-color: #10b981;
124
+ color: white;
125
+ }
126
+
127
+ my-copy-button:state(btu-clipboard-copied)::after {
128
+ content: ' ✓';
129
+ }
130
+ \`\`\`
131
+
132
+ <h3>Behavior Notes</h3>
133
+ <ul>
134
+ <li>The <code>copy()</code> method is debounced - duplicate calls while in success state are ignored</li>
135
+ <li>State automatically clears after the specified timeout (default: 3 seconds)</li>
136
+ <li>Empty strings are ignored (no-op)</li>
137
+ </ul>
138
+ `}}}};let p=class extends g(h(x(y(b)))){constructor(){super(...arguments),this.textToCopy="Hello from ClipboardMixin!"}async handleCopy(){await this.copy(this.textToCopy)}render(){const t=this.states.has("btu-clipboard-copied");return m`
139
+ <div style="display: flex; align-items: center; gap: 1rem;">
140
+ <input
141
+ type="text"
142
+ .value=${this.textToCopy}
143
+ @input=${o=>{this.textToCopy=o.target.value}}
144
+ style="flex: 1; border-radius: 4px; border: 1px solid #d1d5db; padding: 0.5rem 0.75rem;"
145
+ placeholder="Enter text to copy"
146
+ />
147
+ <button
148
+ @click=${this.handleCopy}
149
+ style="background-color: ${t?"#10b981":"#3b82f6"}; border-radius: 4px; padding: 0.5rem 1rem; font-weight: 600; color: white; transition: background-color 0.2s; border: none; cursor: pointer;"
150
+ >
151
+ ${t?"✓ Copied!":"Copy"}
152
+ </button>
153
+ </div>
154
+ `}};p=f([u("clipboard-demo")],p);const a={render:()=>m(l||(l=E([`<div class="flex flex-col gap-4">
155
+ <div>
156
+ <h4 class="mb-2 font-bold">Interactive Clipboard Demo</h4>
157
+ <p class="mb-4 text-sm text-gray-600">
158
+ Edit the text and click "Copy" to copy it to your clipboard. The button will show feedback for 3 seconds.
159
+ Check the browser console to see the emitted event.
160
+ </p>
161
+ </div>
162
+
163
+ <clipboard-demo id="clipboard-demo"></clipboard-demo>
164
+
165
+ <div class="rounded bg-gray-100 p-4">
166
+ <p class="mb-2 text-sm font-semibold text-gray-700">Try pasting here to verify:</p>
167
+ <textarea
168
+ class="w-full rounded border border-gray-300 p-2"
169
+ rows="2"
170
+ placeholder="Paste copied text here (Cmd+V or Ctrl+V)"
171
+ ></textarea>
172
+ </div>
173
+
174
+ <script>
175
+ ;(() => {
176
+ const demo = document.getElementById('clipboard-demo')
177
+ if (!demo) return
178
+
179
+ // Listen for copy event
180
+ demo.addEventListener('btu-clipboard-copied', e => {
181
+ console.log('📋 btu-clipboard-copied event fired', e.detail)
182
+ console.log('✅ Text successfully copied to clipboard')
183
+ console.log(
184
+ '🎯 State check: demo.states.has("btu-clipboard-copied") =',
185
+ demo.states.has('btu-clipboard-copied'),
186
+ )
187
+ })
188
+ })()
189
+ <\/script>
190
+ </div>`])))};a.parameters={...a.parameters,docs:{...a.parameters?.docs,source:{originalSource:`{
191
+ render: () => html\`<div class="flex flex-col gap-4">
192
+ <div>
193
+ <h4 class="mb-2 font-bold">Interactive Clipboard Demo</h4>
194
+ <p class="mb-4 text-sm text-gray-600">
195
+ Edit the text and click "Copy" to copy it to your clipboard. The button will show feedback for 3 seconds.
196
+ Check the browser console to see the emitted event.
197
+ </p>
198
+ </div>
199
+
200
+ <clipboard-demo id="clipboard-demo"></clipboard-demo>
201
+
202
+ <div class="rounded bg-gray-100 p-4">
203
+ <p class="mb-2 text-sm font-semibold text-gray-700">Try pasting here to verify:</p>
204
+ <textarea
205
+ class="w-full rounded border border-gray-300 p-2"
206
+ rows="2"
207
+ placeholder="Paste copied text here (Cmd+V or Ctrl+V)"
208
+ ></textarea>
209
+ </div>
210
+
211
+ <script>
212
+ ;(() => {
213
+ const demo = document.getElementById('clipboard-demo')
214
+ if (!demo) return
215
+
216
+ // Listen for copy event
217
+ demo.addEventListener('btu-clipboard-copied', e => {
218
+ console.log('📋 btu-clipboard-copied event fired', e.detail)
219
+ console.log('✅ Text successfully copied to clipboard')
220
+ console.log(
221
+ '🎯 State check: demo.states.has("btu-clipboard-copied") =',
222
+ demo.states.has('btu-clipboard-copied'),
223
+ )
224
+ })
225
+ })()
226
+ <\/script>
227
+ </div>\`
228
+ }`,...a.parameters?.docs?.source}}};const S=["ClipboardMixinDemo"];export{a as ClipboardMixinDemo,S as __namedExportsOrder,k as default};
@@ -0,0 +1 @@
1
+ import{r as x,R as b,s as E,W as J,g as me,T as ye,F as xe,M as we}from"./WithTooltip-SK46ZJ2J-Df0E-KJO.js";import{_ as d,a as ke,b as q}from"./iframe-lTczLWsL.js";import"./preload-helper-PPVm8Dsz.js";import"./_commonjsHelpers-CqkleIqs.js";var _e=q({"../../node_modules/color-name/index.js"(t,l){l.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}}}),Q=q({"../../node_modules/color-convert/conversions.js"(t,l){var i=_e(),f={};for(const e of Object.keys(i))f[i[e]]=e;var s={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};l.exports=s;for(const e of Object.keys(s)){if(!("channels"in s[e]))throw new Error("missing channels property: "+e);if(!("labels"in s[e]))throw new Error("missing channel labels property: "+e);if(s[e].labels.length!==s[e].channels)throw new Error("channel and label counts mismatch: "+e);const{channels:r,labels:n}=s[e];delete s[e].channels,delete s[e].labels,Object.defineProperty(s[e],"channels",{value:r}),Object.defineProperty(s[e],"labels",{value:n})}s.rgb.hsl=function(e){const r=e[0]/255,n=e[1]/255,o=e[2]/255,a=Math.min(r,n,o),c=Math.max(r,n,o),u=c-a;let h,g;c===a?h=0:r===c?h=(n-o)/u:n===c?h=2+(o-r)/u:o===c&&(h=4+(r-n)/u),h=Math.min(h*60,360),h<0&&(h+=360);const p=(a+c)/2;return c===a?g=0:p<=.5?g=u/(c+a):g=u/(2-c-a),[h,g*100,p*100]},s.rgb.hsv=function(e){let r,n,o,a,c;const u=e[0]/255,h=e[1]/255,g=e[2]/255,p=Math.max(u,h,g),y=p-Math.min(u,h,g),m=d(function(_){return(p-_)/6/y+1/2},"diffc");return y===0?(a=0,c=0):(c=y/p,r=m(u),n=m(h),o=m(g),u===p?a=o-n:h===p?a=1/3+r-o:g===p&&(a=2/3+n-r),a<0?a+=1:a>1&&(a-=1)),[a*360,c*100,p*100]},s.rgb.hwb=function(e){const r=e[0],n=e[1];let o=e[2];const a=s.rgb.hsl(e)[0],c=1/255*Math.min(r,Math.min(n,o));return o=1-1/255*Math.max(r,Math.max(n,o)),[a,c*100,o*100]},s.rgb.cmyk=function(e){const r=e[0]/255,n=e[1]/255,o=e[2]/255,a=Math.min(1-r,1-n,1-o),c=(1-r-a)/(1-a)||0,u=(1-n-a)/(1-a)||0,h=(1-o-a)/(1-a)||0;return[c*100,u*100,h*100,a*100]};function v(e,r){return(e[0]-r[0])**2+(e[1]-r[1])**2+(e[2]-r[2])**2}d(v,"comparativeDistance"),s.rgb.keyword=function(e){const r=f[e];if(r)return r;let n=1/0,o;for(const a of Object.keys(i)){const c=i[a],u=v(e,c);u<n&&(n=u,o=a)}return o},s.keyword.rgb=function(e){return i[e]},s.rgb.xyz=function(e){let r=e[0]/255,n=e[1]/255,o=e[2]/255;r=r>.04045?((r+.055)/1.055)**2.4:r/12.92,n=n>.04045?((n+.055)/1.055)**2.4:n/12.92,o=o>.04045?((o+.055)/1.055)**2.4:o/12.92;const a=r*.4124+n*.3576+o*.1805,c=r*.2126+n*.7152+o*.0722,u=r*.0193+n*.1192+o*.9505;return[a*100,c*100,u*100]},s.rgb.lab=function(e){const r=s.rgb.xyz(e);let n=r[0],o=r[1],a=r[2];n/=95.047,o/=100,a/=108.883,n=n>.008856?n**(1/3):7.787*n+16/116,o=o>.008856?o**(1/3):7.787*o+16/116,a=a>.008856?a**(1/3):7.787*a+16/116;const c=116*o-16,u=500*(n-o),h=200*(o-a);return[c,u,h]},s.hsl.rgb=function(e){const r=e[0]/360,n=e[1]/100,o=e[2]/100;let a,c,u;if(n===0)return u=o*255,[u,u,u];o<.5?a=o*(1+n):a=o+n-o*n;const h=2*o-a,g=[0,0,0];for(let p=0;p<3;p++)c=r+1/3*-(p-1),c<0&&c++,c>1&&c--,6*c<1?u=h+(a-h)*6*c:2*c<1?u=a:3*c<2?u=h+(a-h)*(2/3-c)*6:u=h,g[p]=u*255;return g},s.hsl.hsv=function(e){const r=e[0];let n=e[1]/100,o=e[2]/100,a=n;const c=Math.max(o,.01);o*=2,n*=o<=1?o:2-o,a*=c<=1?c:2-c;const u=(o+n)/2,h=o===0?2*a/(c+a):2*n/(o+n);return[r,h*100,u*100]},s.hsv.rgb=function(e){const r=e[0]/60,n=e[1]/100;let o=e[2]/100;const a=Math.floor(r)%6,c=r-Math.floor(r),u=255*o*(1-n),h=255*o*(1-n*c),g=255*o*(1-n*(1-c));switch(o*=255,a){case 0:return[o,g,u];case 1:return[h,o,u];case 2:return[u,o,g];case 3:return[u,h,o];case 4:return[g,u,o];case 5:return[o,u,h]}},s.hsv.hsl=function(e){const r=e[0],n=e[1]/100,o=e[2]/100,a=Math.max(o,.01);let c,u;u=(2-n)*o;const h=(2-n)*a;return c=n*a,c/=h<=1?h:2-h,c=c||0,u/=2,[r,c*100,u*100]},s.hwb.rgb=function(e){const r=e[0]/360;let n=e[1]/100,o=e[2]/100;const a=n+o;let c;a>1&&(n/=a,o/=a);const u=Math.floor(6*r),h=1-o;c=6*r-u,(u&1)!==0&&(c=1-c);const g=n+c*(h-n);let p,y,m;switch(u){default:case 6:case 0:p=h,y=g,m=n;break;case 1:p=g,y=h,m=n;break;case 2:p=n,y=h,m=g;break;case 3:p=n,y=g,m=h;break;case 4:p=g,y=n,m=h;break;case 5:p=h,y=n,m=g;break}return[p*255,y*255,m*255]},s.cmyk.rgb=function(e){const r=e[0]/100,n=e[1]/100,o=e[2]/100,a=e[3]/100,c=1-Math.min(1,r*(1-a)+a),u=1-Math.min(1,n*(1-a)+a),h=1-Math.min(1,o*(1-a)+a);return[c*255,u*255,h*255]},s.xyz.rgb=function(e){const r=e[0]/100,n=e[1]/100,o=e[2]/100;let a,c,u;return a=r*3.2406+n*-1.5372+o*-.4986,c=r*-.9689+n*1.8758+o*.0415,u=r*.0557+n*-.204+o*1.057,a=a>.0031308?1.055*a**(1/2.4)-.055:a*12.92,c=c>.0031308?1.055*c**(1/2.4)-.055:c*12.92,u=u>.0031308?1.055*u**(1/2.4)-.055:u*12.92,a=Math.min(Math.max(0,a),1),c=Math.min(Math.max(0,c),1),u=Math.min(Math.max(0,u),1),[a*255,c*255,u*255]},s.xyz.lab=function(e){let r=e[0],n=e[1],o=e[2];r/=95.047,n/=100,o/=108.883,r=r>.008856?r**(1/3):7.787*r+16/116,n=n>.008856?n**(1/3):7.787*n+16/116,o=o>.008856?o**(1/3):7.787*o+16/116;const a=116*n-16,c=500*(r-n),u=200*(n-o);return[a,c,u]},s.lab.xyz=function(e){const r=e[0],n=e[1],o=e[2];let a,c,u;c=(r+16)/116,a=n/500+c,u=c-o/200;const h=c**3,g=a**3,p=u**3;return c=h>.008856?h:(c-16/116)/7.787,a=g>.008856?g:(a-16/116)/7.787,u=p>.008856?p:(u-16/116)/7.787,a*=95.047,c*=100,u*=108.883,[a,c,u]},s.lab.lch=function(e){const r=e[0],n=e[1],o=e[2];let a;a=Math.atan2(o,n)*360/2/Math.PI,a<0&&(a+=360);const u=Math.sqrt(n*n+o*o);return[r,u,a]},s.lch.lab=function(e){const r=e[0],n=e[1],a=e[2]/360*2*Math.PI,c=n*Math.cos(a),u=n*Math.sin(a);return[r,c,u]},s.rgb.ansi16=function(e,r=null){const[n,o,a]=e;let c=r===null?s.rgb.hsv(e)[2]:r;if(c=Math.round(c/50),c===0)return 30;let u=30+(Math.round(a/255)<<2|Math.round(o/255)<<1|Math.round(n/255));return c===2&&(u+=60),u},s.hsv.ansi16=function(e){return s.rgb.ansi16(s.hsv.rgb(e),e[2])},s.rgb.ansi256=function(e){const r=e[0],n=e[1],o=e[2];return r===n&&n===o?r<8?16:r>248?231:Math.round((r-8)/247*24)+232:16+36*Math.round(r/255*5)+6*Math.round(n/255*5)+Math.round(o/255*5)},s.ansi16.rgb=function(e){let r=e%10;if(r===0||r===7)return e>50&&(r+=3.5),r=r/10.5*255,[r,r,r];const n=(~~(e>50)+1)*.5,o=(r&1)*n*255,a=(r>>1&1)*n*255,c=(r>>2&1)*n*255;return[o,a,c]},s.ansi256.rgb=function(e){if(e>=232){const c=(e-232)*10+8;return[c,c,c]}e-=16;let r;const n=Math.floor(e/36)/5*255,o=Math.floor((r=e%36)/6)/5*255,a=r%6/5*255;return[n,o,a]},s.rgb.hex=function(e){const n=(((Math.round(e[0])&255)<<16)+((Math.round(e[1])&255)<<8)+(Math.round(e[2])&255)).toString(16).toUpperCase();return"000000".substring(n.length)+n},s.hex.rgb=function(e){const r=e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!r)return[0,0,0];let n=r[0];r[0].length===3&&(n=n.split("").map(h=>h+h).join(""));const o=parseInt(n,16),a=o>>16&255,c=o>>8&255,u=o&255;return[a,c,u]},s.rgb.hcg=function(e){const r=e[0]/255,n=e[1]/255,o=e[2]/255,a=Math.max(Math.max(r,n),o),c=Math.min(Math.min(r,n),o),u=a-c;let h,g;return u<1?h=c/(1-u):h=0,u<=0?g=0:a===r?g=(n-o)/u%6:a===n?g=2+(o-r)/u:g=4+(r-n)/u,g/=6,g%=1,[g*360,u*100,h*100]},s.hsl.hcg=function(e){const r=e[1]/100,n=e[2]/100,o=n<.5?2*r*n:2*r*(1-n);let a=0;return o<1&&(a=(n-.5*o)/(1-o)),[e[0],o*100,a*100]},s.hsv.hcg=function(e){const r=e[1]/100,n=e[2]/100,o=r*n;let a=0;return o<1&&(a=(n-o)/(1-o)),[e[0],o*100,a*100]},s.hcg.rgb=function(e){const r=e[0]/360,n=e[1]/100,o=e[2]/100;if(n===0)return[o*255,o*255,o*255];const a=[0,0,0],c=r%1*6,u=c%1,h=1-u;let g=0;switch(Math.floor(c)){case 0:a[0]=1,a[1]=u,a[2]=0;break;case 1:a[0]=h,a[1]=1,a[2]=0;break;case 2:a[0]=0,a[1]=1,a[2]=u;break;case 3:a[0]=0,a[1]=h,a[2]=1;break;case 4:a[0]=u,a[1]=0,a[2]=1;break;default:a[0]=1,a[1]=0,a[2]=h}return g=(1-n)*o,[(n*a[0]+g)*255,(n*a[1]+g)*255,(n*a[2]+g)*255]},s.hcg.hsv=function(e){const r=e[1]/100,n=e[2]/100,o=r+n*(1-r);let a=0;return o>0&&(a=r/o),[e[0],a*100,o*100]},s.hcg.hsl=function(e){const r=e[1]/100,o=e[2]/100*(1-r)+.5*r;let a=0;return o>0&&o<.5?a=r/(2*o):o>=.5&&o<1&&(a=r/(2*(1-o))),[e[0],a*100,o*100]},s.hcg.hwb=function(e){const r=e[1]/100,n=e[2]/100,o=r+n*(1-r);return[e[0],(o-r)*100,(1-o)*100]},s.hwb.hcg=function(e){const r=e[1]/100,o=1-e[2]/100,a=o-r;let c=0;return a<1&&(c=(o-a)/(1-a)),[e[0],a*100,c*100]},s.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]},s.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]},s.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]},s.gray.hsl=function(e){return[0,0,e[0]]},s.gray.hsv=s.gray.hsl,s.gray.hwb=function(e){return[0,100,e[0]]},s.gray.cmyk=function(e){return[0,0,0,e[0]]},s.gray.lab=function(e){return[e[0],0,0]},s.gray.hex=function(e){const r=Math.round(e[0]/100*255)&255,o=((r<<16)+(r<<8)+r).toString(16).toUpperCase();return"000000".substring(o.length)+o},s.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]}}}),Me=q({"../../node_modules/color-convert/route.js"(t,l){var i=Q();function f(){const r={},n=Object.keys(i);for(let o=n.length,a=0;a<o;a++)r[n[a]]={distance:-1,parent:null};return r}d(f,"buildGraph");function s(r){const n=f(),o=[r];for(n[r].distance=0;o.length;){const a=o.pop(),c=Object.keys(i[a]);for(let u=c.length,h=0;h<u;h++){const g=c[h],p=n[g];p.distance===-1&&(p.distance=n[a].distance+1,p.parent=a,o.unshift(g))}}return n}d(s,"deriveBFS");function v(r,n){return function(o){return n(r(o))}}d(v,"link");function e(r,n){const o=[n[r].parent,r];let a=i[n[r].parent][r],c=n[r].parent;for(;n[c].parent;)o.unshift(n[c].parent),a=v(i[n[c].parent][c],a),c=n[c].parent;return a.conversion=o,a}d(e,"wrapConversion"),l.exports=function(r){const n=s(r),o={},a=Object.keys(n);for(let c=a.length,u=0;u<c;u++){const h=a[u];n[h].parent!==null&&(o[h]=e(h,n))}return o}}}),Ee=q({"../../node_modules/color-convert/index.js"(t,l){var i=Q(),f=Me(),s={},v=Object.keys(i);function e(n){const o=d(function(...a){const c=a[0];return c==null?c:(c.length>1&&(a=c),n(a))},"wrappedFn");return"conversion"in n&&(o.conversion=n.conversion),o}d(e,"wrapRaw");function r(n){const o=d(function(...a){const c=a[0];if(c==null)return c;c.length>1&&(a=c);const u=n(a);if(typeof u=="object")for(let h=u.length,g=0;g<h;g++)u[g]=Math.round(u[g]);return u},"wrappedFn");return"conversion"in n&&(o.conversion=n.conversion),o}d(r,"wrapRounded"),v.forEach(n=>{s[n]={},Object.defineProperty(s[n],"channels",{value:i[n].channels}),Object.defineProperty(s[n],"labels",{value:i[n].labels});const o=f(n);Object.keys(o).forEach(c=>{const u=o[c];s[n][c]=r(u),s[n][c].raw=e(u)})}),l.exports=s}}),M=ke(Ee());function Z(t,l,{signal:i,edges:f}={}){let s,v=null;const e=f!=null&&f.includes("leading"),r=f==null||f.includes("trailing"),n=d(()=>{v!==null&&(t.apply(s,v),s=void 0,v=null)},"invoke"),o=d(()=>{r&&n(),h()},"onTimerEnd");let a=null;const c=d(()=>{a!=null&&clearTimeout(a),a=setTimeout(()=>{a=null,o()},l)},"schedule"),u=d(()=>{a!==null&&(clearTimeout(a),a=null)},"cancelTimer"),h=d(()=>{u(),s=void 0,v=null},"cancel"),g=d(()=>{n()},"flush"),p=d(function(...y){if(i?.aborted)return;s=this,v=y;const m=a==null;c(),e&&m&&n()},"debounced");return p.schedule=c,p.cancel=h,p.flush=g,i?.addEventListener("abort",h,{once:!0}),p}d(Z,"debounce");function ee(t,...l){return te(t,ne,...l)}d(ee,"partial");function te(t,l,...i){const f=d(function(...s){let v=0;const e=i.slice().map(n=>n===l?s[v++]:n),r=s.slice(v);return t.apply(this,e.concat(r))},"partialed");return t.prototype&&(f.prototype=Object.create(t.prototype)),f}d(te,"partialImpl");var ne=Symbol("partial.placeholder");ee.placeholder=ne;function re(t,...l){return oe(t,ae,...l)}d(re,"partialRight");function oe(t,l,...i){const f=d(function(...s){const v=i.filter(a=>a===l).length,e=Math.max(s.length-v,0),r=s.slice(0,e);let n=e;const o=i.slice().map(a=>a===l?s[n++]:a);return t.apply(this,r.concat(o))},"partialedRight");return t.prototype&&(f.prototype=Object.create(t.prototype)),f}d(oe,"partialRightImpl");var ae=Symbol("partialRight.placeholder");re.placeholder=ae;function C(){return(C=Object.assign||function(t){for(var l=1;l<arguments.length;l++){var i=arguments[l];for(var f in i)Object.prototype.hasOwnProperty.call(i,f)&&(t[f]=i[f])}return t}).apply(this,arguments)}d(C,"u");function T(t,l){if(t==null)return{};var i,f,s={},v=Object.keys(t);for(f=0;f<v.length;f++)l.indexOf(i=v[f])>=0||(s[i]=t[i]);return s}d(T,"c");function z(t){var l=x.useRef(t),i=x.useRef(function(f){l.current&&l.current(f)});return l.current=t,i.current}d(z,"i");var R=d(function(t,l,i){return l===void 0&&(l=0),i===void 0&&(i=1),t>i?i:t<l?l:t},"s"),S=d(function(t){return"touches"in t},"f"),K=d(function(t){return t&&t.ownerDocument.defaultView||self},"v"),A=d(function(t,l,i){var f=t.getBoundingClientRect(),s=S(l)?(function(v,e){for(var r=0;r<v.length;r++)if(v[r].identifier===e)return v[r];return v[0]})(l.touches,i):l;return{left:R((s.pageX-(f.left+K(t).pageXOffset))/f.width),top:R((s.pageY-(f.top+K(t).pageYOffset))/f.height)}},"d"),W=d(function(t){!S(t)&&t.preventDefault()},"h"),X=b.memo(function(t){var l=t.onMove,i=t.onKey,f=T(t,["onMove","onKey"]),s=x.useRef(null),v=z(l),e=z(i),r=x.useRef(null),n=x.useRef(!1),o=x.useMemo(function(){var h=d(function(y){W(y),(S(y)?y.touches.length>0:y.buttons>0)&&s.current?v(A(s.current,y,r.current)):p(!1)},"e"),g=d(function(){return p(!1)},"r");function p(y){var m=n.current,_=K(s.current),w=y?_.addEventListener:_.removeEventListener;w(m?"touchmove":"mousemove",h),w(m?"touchend":"mouseup",g)}return d(p,"t"),[function(y){var m=y.nativeEvent,_=s.current;if(_&&(W(m),!(function(I,be){return be&&!S(I)})(m,n.current)&&_)){if(S(m)){n.current=!0;var w=m.changedTouches||[];w.length&&(r.current=w[0].identifier)}_.focus(),v(A(_,m,r.current)),p(!0)}},function(y){var m=y.which||y.keyCode;m<37||m>40||(y.preventDefault(),e({left:m===39?.05:m===37?-.05:0,top:m===40?.05:m===38?-.05:0}))},p]},[e,v]),a=o[0],c=o[1],u=o[2];return x.useEffect(function(){return u},[u]),b.createElement("div",C({},f,{onTouchStart:a,onMouseDown:a,className:"react-colorful__interactive",ref:s,onKeyDown:c,tabIndex:0,role:"slider"}))}),O=d(function(t){return t.filter(Boolean).join(" ")},"g"),D=d(function(t){var l=t.color,i=t.left,f=t.top,s=f===void 0?.5:f,v=O(["react-colorful__pointer",t.className]);return b.createElement("div",{className:v,style:{top:100*s+"%",left:100*i+"%"}},b.createElement("div",{className:"react-colorful__pointer-fill",style:{backgroundColor:l}}))},"p"),k=d(function(t,l,i){return l===void 0&&(l=0),i===void 0&&(i=Math.pow(10,l)),Math.round(i*t)/i},"b"),Ce={grad:.9,turn:360,rad:360/(2*Math.PI)},$e=d(function(t){return ce(F(t))},"x"),F=d(function(t){return t[0]==="#"&&(t=t.substring(1)),t.length<6?{r:parseInt(t[0]+t[0],16),g:parseInt(t[1]+t[1],16),b:parseInt(t[2]+t[2],16),a:t.length===4?k(parseInt(t[3]+t[3],16)/255,2):1}:{r:parseInt(t.substring(0,2),16),g:parseInt(t.substring(2,4),16),b:parseInt(t.substring(4,6),16),a:t.length===8?k(parseInt(t.substring(6,8),16)/255,2):1}},"C"),Re=d(function(t,l){return l===void 0&&(l="deg"),Number(t)*(Ce[l]||1)},"E"),Se=d(function(t){var l=/hsla?\(?\s*(-?\d*\.?\d+)(deg|rad|grad|turn)?[,\s]+(-?\d*\.?\d+)%?[,\s]+(-?\d*\.?\d+)%?,?\s*[/\s]*(-?\d*\.?\d+)?(%)?\s*\)?/i.exec(t);return l?Oe({h:Re(l[1],l[2]),s:Number(l[3]),l:Number(l[4]),a:l[5]===void 0?1:Number(l[5])/(l[6]?100:1)}):{h:0,s:0,v:0,a:1}},"H"),Oe=d(function(t){var l=t.s,i=t.l;return{h:t.h,s:(l*=(i<50?i:100-i)/100)>0?2*l/(i+l)*100:0,v:i+l,a:t.a}},"N"),Ie=d(function(t){return He(se(t))},"w"),le=d(function(t){var l=t.s,i=t.v,f=t.a,s=(200-l)*i/100;return{h:k(t.h),s:k(s>0&&s<200?l*i/100/(s<=100?s:200-s)*100:0),l:k(s/2),a:k(f,2)}},"y"),B=d(function(t){var l=le(t);return"hsl("+l.h+", "+l.s+"%, "+l.l+"%)"},"q"),j=d(function(t){var l=le(t);return"hsla("+l.h+", "+l.s+"%, "+l.l+"%, "+l.a+")"},"k"),se=d(function(t){var l=t.h,i=t.s,f=t.v,s=t.a;l=l/360*6,i/=100,f/=100;var v=Math.floor(l),e=f*(1-i),r=f*(1-(l-v)*i),n=f*(1-(1-l+v)*i),o=v%6;return{r:k(255*[f,r,e,e,n,f][o]),g:k(255*[n,f,f,r,e,e][o]),b:k(255*[e,e,n,f,f,r][o]),a:k(s,2)}},"I"),Ne=d(function(t){var l=/rgba?\(?\s*(-?\d*\.?\d+)(%)?[,\s]+(-?\d*\.?\d+)(%)?[,\s]+(-?\d*\.?\d+)(%)?,?\s*[/\s]*(-?\d*\.?\d+)?(%)?\s*\)?/i.exec(t);return l?ce({r:Number(l[1])/(l[2]?100/255:1),g:Number(l[3])/(l[4]?100/255:1),b:Number(l[5])/(l[6]?100/255:1),a:l[7]===void 0?1:Number(l[7])/(l[8]?100:1)}):{h:0,s:0,v:0,a:1}},"z"),N=d(function(t){var l=t.toString(16);return l.length<2?"0"+l:l},"D"),He=d(function(t){var l=t.r,i=t.g,f=t.b,s=t.a,v=s<1?N(k(255*s)):"";return"#"+N(l)+N(i)+N(f)+v},"K"),ce=d(function(t){var l=t.r,i=t.g,f=t.b,s=t.a,v=Math.max(l,i,f),e=v-Math.min(l,i,f),r=e?v===l?(i-f)/e:v===i?2+(f-l)/e:4+(l-i)/e:0;return{h:k(60*(r<0?r+6:r)),s:k(v?e/v*100:0),v:k(v/255*100),a:s}},"L"),ie=b.memo(function(t){var l=t.hue,i=t.onChange,f=O(["react-colorful__hue",t.className]);return b.createElement("div",{className:f},b.createElement(X,{onMove:d(function(s){i({h:360*s.left})},"onMove"),onKey:d(function(s){i({h:R(l+360*s.left,0,360)})},"onKey"),"aria-label":"Hue","aria-valuenow":k(l),"aria-valuemax":"360","aria-valuemin":"0"},b.createElement(D,{className:"react-colorful__hue-pointer",left:l/360,color:B({h:l,s:100,v:100,a:1})})))}),ue=b.memo(function(t){var l=t.hsva,i=t.onChange,f={backgroundColor:B({h:l.h,s:100,v:100,a:1})};return b.createElement("div",{className:"react-colorful__saturation",style:f},b.createElement(X,{onMove:d(function(s){i({s:100*s.left,v:100-100*s.top})},"onMove"),onKey:d(function(s){i({s:R(l.s+100*s.left,0,100),v:R(l.v-100*s.top,0,100)})},"onKey"),"aria-label":"Color","aria-valuetext":"Saturation "+k(l.s)+"%, Brightness "+k(l.v)+"%"},b.createElement(D,{className:"react-colorful__saturation-pointer",top:1-l.v/100,left:l.s/100,color:B(l)})))}),fe=d(function(t,l){if(t===l)return!0;for(var i in t)if(t[i]!==l[i])return!1;return!0},"F"),he=d(function(t,l){return t.replace(/\s/g,"")===l.replace(/\s/g,"")},"P"),je=d(function(t,l){return t.toLowerCase()===l.toLowerCase()||fe(F(t),F(l))},"X");function G(t,l,i){var f=z(i),s=x.useState(function(){return t.toHsva(l)}),v=s[0],e=s[1],r=x.useRef({color:l,hsva:v});x.useEffect(function(){if(!t.equal(l,r.current.color)){var o=t.toHsva(l);r.current={hsva:o,color:l},e(o)}},[l,t]),x.useEffect(function(){var o;fe(v,r.current.hsva)||t.equal(o=t.fromHsva(v),r.current.color)||(r.current={hsva:v,color:o},f(o))},[v,t,f]);var n=x.useCallback(function(o){e(function(a){return Object.assign({},a,o)})},[]);return[v,n]}d(G,"Y");var ze=typeof window<"u"?x.useLayoutEffect:x.useEffect,Pe=d(function(){return typeof __webpack_nonce__<"u"?__webpack_nonce__:void 0},"$"),U=new Map,de=d(function(t){ze(function(){var l=t.current?t.current.ownerDocument:document;if(l!==void 0&&!U.has(l)){var i=l.createElement("style");i.innerHTML=`.react-colorful{position:relative;display:flex;flex-direction:column;width:200px;height:200px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.react-colorful__saturation{position:relative;flex-grow:1;border-color:transparent;border-bottom:12px solid #000;border-radius:8px 8px 0 0;background-image:linear-gradient(0deg,#000,transparent),linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.react-colorful__alpha-gradient,.react-colorful__pointer-fill{content:"";position:absolute;left:0;top:0;right:0;bottom:0;pointer-events:none;border-radius:inherit}.react-colorful__alpha-gradient,.react-colorful__saturation{box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}.react-colorful__alpha,.react-colorful__hue{position:relative;height:24px}.react-colorful__hue{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.react-colorful__last-control{border-radius:0 0 8px 8px}.react-colorful__interactive{position:absolute;left:0;top:0;right:0;bottom:0;border-radius:inherit;outline:none;touch-action:none}.react-colorful__pointer{position:absolute;z-index:1;box-sizing:border-box;width:28px;height:28px;transform:translate(-50%,-50%);background-color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2)}.react-colorful__interactive:focus .react-colorful__pointer{transform:translate(-50%,-50%) scale(1.1)}.react-colorful__alpha,.react-colorful__alpha-pointer{background-color:#fff;background-image:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill-opacity=".05"><path d="M8 0h8v8H8zM0 8h8v8H0z"/></svg>')}.react-colorful__saturation-pointer{z-index:3}.react-colorful__hue-pointer{z-index:2}`,U.set(l,i);var f=Pe();f&&i.setAttribute("nonce",f),l.head.appendChild(i)}},[])},"Q"),qe=d(function(t){var l=t.className,i=t.colorModel,f=t.color,s=f===void 0?i.defaultColor:f,v=t.onChange,e=T(t,["className","colorModel","color","onChange"]),r=x.useRef(null);de(r);var n=G(i,s,v),o=n[0],a=n[1],c=O(["react-colorful",l]);return b.createElement("div",C({},e,{ref:r,className:c}),b.createElement(ue,{hsva:o,onChange:a}),b.createElement(ie,{hue:o.h,onChange:a,className:"react-colorful__last-control"}))},"U"),Te={defaultColor:"000",toHsva:$e,fromHsva:d(function(t){return Ie({h:t.h,s:t.s,v:t.v,a:1})},"fromHsva"),equal:je},Le=d(function(t){return b.createElement(qe,C({},t,{colorModel:Te}))},"Z"),Ke=d(function(t){var l=t.className,i=t.hsva,f=t.onChange,s={backgroundImage:"linear-gradient(90deg, "+j(Object.assign({},i,{a:0}))+", "+j(Object.assign({},i,{a:1}))+")"},v=O(["react-colorful__alpha",l]),e=k(100*i.a);return b.createElement("div",{className:v},b.createElement("div",{className:"react-colorful__alpha-gradient",style:s}),b.createElement(X,{onMove:d(function(r){f({a:r.left})},"onMove"),onKey:d(function(r){f({a:R(i.a+r.left)})},"onKey"),"aria-label":"Alpha","aria-valuetext":e+"%","aria-valuenow":e,"aria-valuemin":"0","aria-valuemax":"100"},b.createElement(D,{className:"react-colorful__alpha-pointer",left:i.a,color:j(i)})))},"ee"),ve=d(function(t){var l=t.className,i=t.colorModel,f=t.color,s=f===void 0?i.defaultColor:f,v=t.onChange,e=T(t,["className","colorModel","color","onChange"]),r=x.useRef(null);de(r);var n=G(i,s,v),o=n[0],a=n[1],c=O(["react-colorful",l]);return b.createElement("div",C({},e,{ref:r,className:c}),b.createElement(ue,{hsva:o,onChange:a}),b.createElement(ie,{hue:o.h,onChange:a}),b.createElement(Ke,{hsva:o,onChange:a,className:"react-colorful__last-control"}))},"re"),Fe={defaultColor:"hsla(0, 0%, 0%, 1)",toHsva:Se,fromHsva:j,equal:he},Be=d(function(t){return b.createElement(ve,C({},t,{colorModel:Fe}))},"ue"),Ve={defaultColor:"rgba(0, 0, 0, 1)",toHsva:Ne,fromHsva:d(function(t){var l=se(t);return"rgba("+l.r+", "+l.g+", "+l.b+", "+l.a+")"},"fromHsva"),equal:he},Xe=d(function(t){return b.createElement(ve,C({},t,{colorModel:Ve}))},"He"),De=E.div({position:"relative",maxWidth:250,'&[aria-readonly="true"]':{opacity:.5}}),Ge=E(J)({position:"absolute",zIndex:1,top:4,left:4,"[aria-readonly=true] &":{cursor:"not-allowed"}}),Ae=E.div({width:200,margin:5,".react-colorful__saturation":{borderRadius:"4px 4px 0 0"},".react-colorful__hue":{boxShadow:"inset 0 0 0 1px rgb(0 0 0 / 5%)"},".react-colorful__last-control":{borderRadius:"0 0 4px 4px"}}),We=E(ye)(({theme:t})=>({fontFamily:t.typography.fonts.base})),Ue=E.div({display:"grid",gridTemplateColumns:"repeat(9, 16px)",gap:6,padding:3,marginTop:5,width:200}),Ye=E.div(({theme:t,active:l})=>({width:16,height:16,boxShadow:l?`${t.appBorderColor} 0 0 0 1px inset, ${t.textMutedColor}50 0 0 0 4px`:`${t.appBorderColor} 0 0 0 1px inset`,borderRadius:t.appBorderRadius})),Je=`url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill-opacity=".05"><path d="M8 0h8v8H8zM0 8h8v8H0z"/></svg>')`,Y=d(({value:t,style:l,...i})=>{const f=`linear-gradient(${t}, ${t}), ${Je}, linear-gradient(#fff, #fff)`;return b.createElement(Ye,{...i,style:{...l,backgroundImage:f}})},"Swatch"),Qe=E(xe.Input)(({theme:t,readOnly:l})=>({width:"100%",paddingLeft:30,paddingRight:30,boxSizing:"border-box",fontFamily:t.typography.fonts.base})),Ze=E(we)(({theme:t})=>({position:"absolute",zIndex:1,top:6,right:7,width:20,height:20,padding:4,boxSizing:"border-box",cursor:"pointer",color:t.input.color})),ge=(t=>(t.RGB="rgb",t.HSL="hsl",t.HEX="hex",t))(ge||{}),L=Object.values(ge),et=/\(([0-9]+),\s*([0-9]+)%?,\s*([0-9]+)%?,?\s*([0-9.]+)?\)/,tt=/^\s*rgba?\(([0-9]+),\s*([0-9]+),\s*([0-9]+),?\s*([0-9.]+)?\)\s*$/i,nt=/^\s*hsla?\(([0-9]+),\s*([0-9]+)%,\s*([0-9]+)%,?\s*([0-9.]+)?\)\s*$/i,V=/^\s*#?([0-9a-f]{3}|[0-9a-f]{6})\s*$/i,rt=/^\s*#?([0-9a-f]{3})\s*$/i,ot={hex:Le,rgb:Xe,hsl:Be},H={hex:"transparent",rgb:"rgba(0, 0, 0, 0)",hsl:"hsla(0, 0%, 0%, 0)"},pe=d(t=>{const l=t?.match(et);if(!l)return[0,0,0,1];const[,i,f,s,v=1]=l;return[i,f,s,v].map(Number)},"stringToArgs"),at=d(t=>{const[l,i,f,s]=pe(t),[v,e,r]=M.default.rgb.hsl([l,i,f])||[0,0,0];return{valid:!0,value:t,keyword:M.default.rgb.keyword([l,i,f]),colorSpace:"rgb",rgb:t,hsl:`hsla(${v}, ${e}%, ${r}%, ${s})`,hex:`#${M.default.rgb.hex([l,i,f]).toLowerCase()}`}},"parseRgb"),lt=d(t=>{const[l,i,f,s]=pe(t),[v,e,r]=M.default.hsl.rgb([l,i,f])||[0,0,0];return{valid:!0,value:t,keyword:M.default.hsl.keyword([l,i,f]),colorSpace:"hsl",rgb:`rgba(${v}, ${e}, ${r}, ${s})`,hsl:t,hex:`#${M.default.hsl.hex([l,i,f]).toLowerCase()}`}},"parseHsl"),st=d(t=>{const l=t.replace("#",""),i=M.default.keyword.rgb(l)||M.default.hex.rgb(l),f=M.default.rgb.hsl(i);let s=t;/[^#a-f0-9]/i.test(t)?s=l:V.test(t)&&(s=`#${l}`);let v=!0;if(s.startsWith("#"))v=V.test(s);else try{M.default.keyword.hex(s)}catch{v=!1}return{valid:v,value:s,keyword:M.default.rgb.keyword(i),colorSpace:"hex",rgb:`rgba(${i[0]}, ${i[1]}, ${i[2]}, 1)`,hsl:`hsla(${f[0]}, ${f[1]}%, ${f[2]}%, 1)`,hex:s}},"parseHexOrKeyword"),$=d(t=>{if(t)return tt.test(t)?at(t):nt.test(t)?lt(t):st(t)},"parseValue"),ct=d((t,l,i)=>{if(!t||!l?.valid)return H[i];if(i!=="hex")return l?.[i]||H[i];if(!l.hex.startsWith("#"))try{return`#${M.default.keyword.hex(l.hex)}`}catch{return H.hex}const f=l.hex.match(rt);if(!f)return V.test(l.hex)?l.hex:H.hex;const[s,v,e]=f[1].split("");return`#${s}${s}${v}${v}${e}${e}`},"getRealValue"),it=d((t,l)=>{const[i,f]=x.useState(t||""),[s,v]=x.useState(()=>$(i)),[e,r]=x.useState(s?.colorSpace||"hex");x.useEffect(()=>{const c=t||"",u=$(c);f(c),v(u),r(u?.colorSpace||"hex")},[t]);const n=x.useMemo(()=>ct(i,s,e).toLowerCase(),[i,s,e]),o=x.useCallback(c=>{const u=$(c),h=u?.value||c||"";f(h),h===""&&(v(void 0),l(void 0)),u&&(v(u),r(u.colorSpace),l(u.value))},[l]),a=x.useCallback(()=>{const u=(L.indexOf(e)+1)%L.length,h=L[u];r(h);const g=s?.[h]||"";f(g),l(g)},[s,e,l]);return{value:i,realValue:n,updateValue:o,color:s,colorSpace:e,cycleColorSpace:a}},"useColorInput"),P=d(t=>t.replace(/\s*/,"").toLowerCase(),"id"),ut=d((t,l,i)=>{const[f,s]=x.useState(l?.valid?[l]:[]);x.useEffect(()=>{l===void 0&&s([])},[l]);const v=x.useMemo(()=>(t||[]).map(n=>typeof n=="string"?$(n):n.title?{...$(n.color),keyword:n.title}:$(n.color)).concat(f).filter(Boolean).slice(-27),[t,f]),e=x.useCallback(r=>{r?.valid&&(v.some(n=>n&&n[i]&&P(n[i]||"")===P(r[i]||""))||s(n=>n.concat(r)))},[i,v]);return{presets:v,addPreset:e}},"usePresets"),ft=d(({name:t,value:l,onChange:i,onFocus:f,onBlur:s,presetColors:v,startOpen:e=!1,argType:r})=>{const n=x.useCallback(Z(i,200),[i]),{value:o,realValue:a,updateValue:c,color:u,colorSpace:h,cycleColorSpace:g}=it(l,n),{presets:p,addPreset:y}=ut(v??[],u,h),m=ot[h],_=!!r?.table?.readonly;return b.createElement(De,{"aria-readonly":_},b.createElement(Ge,{startOpen:e,trigger:_?null:void 0,closeOnOutsideClick:!0,onVisibleChange:()=>u&&y(u),tooltip:b.createElement(Ae,null,b.createElement(m,{color:a==="transparent"?"#000000":a,onChange:c,onFocus:f,onBlur:s}),p.length>0&&b.createElement(Ue,null,p.map((w,I)=>b.createElement(J,{key:`${w?.value||I}-${I}`,hasChrome:!1,tooltip:b.createElement(We,{note:w?.keyword||w?.value||""})},b.createElement(Y,{value:w?.[h]||"",active:!!(u&&w&&w[h]&&P(w[h]||"")===P(u[h])),onClick:()=>w&&c(w.value||"")})))))},b.createElement(Y,{value:a,style:{margin:4}})),b.createElement(Qe,{id:me(t),value:o,onChange:w=>c(w.target.value),onFocus:w=>w.target.select(),readOnly:_,placeholder:"Choose color..."}),o?b.createElement(Ze,{onClick:g}):null)},"ColorControl"),pt=ft;export{ft as ColorControl,pt as default};
@@ -1,4 +1,4 @@
1
- import{x as a}from"./iframe-Z4F0Cgki.js";import"./preload-helper-PPVm8Dsz.js";const b=c=>{const r=[...c.palette?.entries()??[]];return r.length>0&&r[0][1].includes("-gradient")?a`
1
+ import{x as a}from"./iframe-lTczLWsL.js";import"./preload-helper-PPVm8Dsz.js";const b=c=>{const r=[...c.palette?.entries()??[]];return r.length>0&&r[0][1].includes("-gradient")?a`
2
2
  <div class="my-10 flex flex-wrap gap-4">
3
3
  ${r.map(([e,d])=>a`
4
4
  <div class="w-[200px] overflow-clip rounded-lg bg-white shadow-md">
@@ -0,0 +1 @@
1
+ import"./iframe-lTczLWsL.js";const i=t=>(s,e)=>{e!==void 0?e.addInitializer((()=>{customElements.define(t,s)})):customElements.define(t,s)},a=t=>{class s extends t{constructor(){super(...arguments),this.internals=this.attachInternals(),this.states=this.internals.states}}return s};export{a as C,i as t};
@@ -0,0 +1,313 @@
1
+ import{x as c,i as p}from"./iframe-lTczLWsL.js";import{t as m,C as u}from"./ComponentStatesMixin-C2HZ9ZFb.js";import"./preload-helper-PPVm8Dsz.js";var r=Object.freeze,b=Object.defineProperty,h=Object.getOwnPropertyDescriptor,x=(e,o,g,d)=>{for(var t=d>1?void 0:d?h(o,g):o,s=e.length-1,n;s>=0;s--)(n=e[s])&&(t=n(t)||t);return t},f=(e,o)=>r(b(e,"raw",{value:r(e.slice())})),l;const E={title:"Mixins/Component States",tags:["autodocs"],parameters:{docs:{description:{component:`
2
+ \`ComponentStatesMixin\` provides access to the **Custom State API** for managing component-specific states that can be styled with the \`:state()\` pseudo-class in CSS.
3
+
4
+ Uses \`ElementInternals.states\` (\`CustomStateSet\`) to manage component states that are separate from attributes, providing better encapsulation and performance.
5
+
6
+ <h3>What ComponentStatesMixin Provides</h3>
7
+ <ul>
8
+ <li><strong>internals:</strong> <code>ElementInternals</code> instance for accessing internal element APIs</li>
9
+ <li><strong>states:</strong> <code>CustomStateSet</code> for managing component states (add, delete, has, clear)</li>
10
+ <li>Access to browser-native Custom State API</li>
11
+ <li>States can be styled externally using CSS <code>:state()</code> pseudo-class</li>
12
+ </ul>
13
+
14
+ <h3>Default Component States</h3>
15
+
16
+ <p>The following states are available across all Brightspot UI components:</p>
17
+
18
+ <table>
19
+ <thead>
20
+ <tr>
21
+ <th>State Name</th>
22
+ <th>Description</th>
23
+ <th>Usage</th>
24
+ </tr>
25
+ </thead>
26
+ <tbody>
27
+ <tr>
28
+ <td><code>btu-error</code></td>
29
+ <td>Indicates an error state</td>
30
+ <td>Form validation errors, failed operations</td>
31
+ </tr>
32
+ <tr>
33
+ <td><code>btu-loading</code></td>
34
+ <td>Indicates a loading/pending state</td>
35
+ <td>Async operations in progress</td>
36
+ </tr>
37
+ <tr>
38
+ <td><code>btu-expanded</code></td>
39
+ <td>Indicates an expanded state</td>
40
+ <td>Collapsible/expandable components</td>
41
+ </tr>
42
+ <tr>
43
+ <td><code>btu-clipboard-copied</code></td>
44
+ <td>Indicates successful clipboard copy</td>
45
+ <td>Copy-to-clipboard operations</td>
46
+ </tr>
47
+ </tbody>
48
+ </table>
49
+
50
+ <h3>TypeScript Usage</h3>
51
+
52
+ \`\`\`typescript
53
+ import { ComponentStatesMixin } from './ComponentStatesMixin'
54
+ import { LitElement } from 'lit'
55
+
56
+ // Basic usage
57
+ class MyComponent extends ComponentStatesMixin(LitElement) {
58
+ async fetchData() {
59
+ // Add loading state
60
+ this.states.add('btu-loading')
61
+ this.requestUpdate()
62
+
63
+ try {
64
+ const data = await fetch('/api/data')
65
+ this.states.delete('btu-loading')
66
+ this.requestUpdate()
67
+ } catch (error) {
68
+ this.states.delete('btu-loading')
69
+ this.states.add('btu-error')
70
+ this.requestUpdate()
71
+ }
72
+ }
73
+
74
+ checkState() {
75
+ if (this.states.has('btu-loading')) {
76
+ console.log('Component is loading...')
77
+ }
78
+ }
79
+ }
80
+ \`\`\`
81
+
82
+ <h3>CSS Styling with :state()</h3>
83
+
84
+ <p>Style components based on their current state using the \`:state()\` pseudo-class:</p>
85
+
86
+ \`\`\`css
87
+ /* Style component when in loading state */
88
+ my-component:state(btu-loading) {
89
+ opacity: 0.5;
90
+ pointer-events: none;
91
+ cursor: wait;
92
+ }
93
+
94
+ /* Style component when in error state */
95
+ my-component:state(btu-error) {
96
+ border-color: red;
97
+ background-color: #fee;
98
+ }
99
+
100
+ /* Style component when expanded */
101
+ my-component:state(btu-expanded) {
102
+ height: auto;
103
+ max-height: 500px;
104
+ }
105
+ \`\`\`
106
+
107
+ <h3>Learn More</h3>
108
+ <ul>
109
+ <li><a href="https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals/states" target="_blank">MDN: ElementInternals.states</a></li>
110
+ <li><a href="https://developer.mozilla.org/en-US/docs/Web/CSS/:state" target="_blank">MDN: :state() pseudo-class</a></li>
111
+ <li><a href="https://developer.mozilla.org/en-US/docs/Web/API/CustomStateSet" target="_blank">MDN: CustomStateSet</a></li>
112
+ </ul>
113
+ `}}}};let i=class extends u(p){render(){return c`
114
+ <div style="border-radius: 4px; border: 2px solid #d1d5db; padding: 1rem; transition: all 0.2s;">
115
+ <p style="font-size: 0.875rem; color: #4b5563;">Current states will affect styling of this text box</p>
116
+ </div>
117
+ `}};i=x([m("state-demo")],i);const a={render:()=>c(l||(l=f([`<div class="flex flex-col gap-4">
118
+ <div>
119
+ <h4 class="mb-2 font-bold">Interactive Component States Demo</h4>
120
+ <p class="mb-4 text-sm text-gray-600">
121
+ Click the checkboxes to toggle states and observe the visual changes. Open your browser console to see state
122
+ change logs.
123
+ </p>
124
+ </div>
125
+
126
+ <state-demo id="state-demo"></state-demo>
127
+
128
+ <div class="flex flex-wrap gap-4">
129
+ <label style="display: flex; align-items: center; gap: 0.5rem; cursor: pointer;">
130
+ <input type="checkbox" id="toggle-error" />
131
+ <span>Error State</span>
132
+ </label>
133
+ <label style="display: flex; align-items: center; gap: 0.5rem; cursor: pointer;">
134
+ <input type="checkbox" id="toggle-loading" />
135
+ <span>Loading State</span>
136
+ </label>
137
+ <label style="display: flex; align-items: center; gap: 0.5rem; cursor: pointer;">
138
+ <input type="checkbox" id="toggle-expanded" />
139
+ <span>Expanded State</span>
140
+ </label>
141
+ <button id="clear-states" class="btu-button btu-button-gray btu-button-md">Clear All States</button>
142
+ </div>
143
+
144
+ <style>
145
+ state-demo:state(btu-error) {
146
+ border-color: #ef4444 !important;
147
+ background-color: #fee2e2 !important;
148
+ }
149
+
150
+ state-demo:state(btu-loading) {
151
+ opacity: 0.6;
152
+ cursor: wait;
153
+ }
154
+
155
+ state-demo:state(btu-expanded) {
156
+ padding: 2rem !important;
157
+ background-color: #dbeafe !important;
158
+ }
159
+ </style>
160
+
161
+ <script>
162
+ ;(() => {
163
+ const demo = document.getElementById('state-demo')
164
+ if (!demo) return
165
+
166
+ const toggleError = document.getElementById('toggle-error')
167
+ const toggleLoading = document.getElementById('toggle-loading')
168
+ const toggleExpanded = document.getElementById('toggle-expanded')
169
+ const clearStates = document.getElementById('clear-states')
170
+
171
+ toggleError?.addEventListener('change', e => {
172
+ if (e.target.checked) {
173
+ demo.states.add('btu-error')
174
+ console.log('✅ Added btu-error state')
175
+ } else {
176
+ demo.states.delete('btu-error')
177
+ console.log('❌ Removed btu-error state')
178
+ }
179
+ demo.requestUpdate()
180
+ })
181
+
182
+ toggleLoading?.addEventListener('change', e => {
183
+ if (e.target.checked) {
184
+ demo.states.add('btu-loading')
185
+ console.log('⏳ Added btu-loading state')
186
+ } else {
187
+ demo.states.delete('btu-loading')
188
+ console.log('❌ Removed btu-loading state')
189
+ }
190
+ demo.requestUpdate()
191
+ })
192
+
193
+ toggleExpanded?.addEventListener('change', e => {
194
+ if (e.target.checked) {
195
+ demo.states.add('btu-expanded')
196
+ console.log('📖 Added btu-expanded state')
197
+ } else {
198
+ demo.states.delete('btu-expanded')
199
+ console.log('❌ Removed btu-expanded state')
200
+ }
201
+ demo.requestUpdate()
202
+ })
203
+
204
+ clearStates?.addEventListener('click', () => {
205
+ demo.states.clear()
206
+ toggleError.checked = false
207
+ toggleLoading.checked = false
208
+ toggleExpanded.checked = false
209
+ console.log('🧹 Cleared all states')
210
+ demo.requestUpdate()
211
+ })
212
+ })()
213
+ <\/script>
214
+ </div>`])))};a.parameters={...a.parameters,docs:{...a.parameters?.docs,source:{originalSource:`{
215
+ render: () => html\`<div class="flex flex-col gap-4">
216
+ <div>
217
+ <h4 class="mb-2 font-bold">Interactive Component States Demo</h4>
218
+ <p class="mb-4 text-sm text-gray-600">
219
+ Click the checkboxes to toggle states and observe the visual changes. Open your browser console to see state
220
+ change logs.
221
+ </p>
222
+ </div>
223
+
224
+ <state-demo id="state-demo"></state-demo>
225
+
226
+ <div class="flex flex-wrap gap-4">
227
+ <label style="display: flex; align-items: center; gap: 0.5rem; cursor: pointer;">
228
+ <input type="checkbox" id="toggle-error" />
229
+ <span>Error State</span>
230
+ </label>
231
+ <label style="display: flex; align-items: center; gap: 0.5rem; cursor: pointer;">
232
+ <input type="checkbox" id="toggle-loading" />
233
+ <span>Loading State</span>
234
+ </label>
235
+ <label style="display: flex; align-items: center; gap: 0.5rem; cursor: pointer;">
236
+ <input type="checkbox" id="toggle-expanded" />
237
+ <span>Expanded State</span>
238
+ </label>
239
+ <button id="clear-states" class="btu-button btu-button-gray btu-button-md">Clear All States</button>
240
+ </div>
241
+
242
+ <style>
243
+ state-demo:state(btu-error) {
244
+ border-color: #ef4444 !important;
245
+ background-color: #fee2e2 !important;
246
+ }
247
+
248
+ state-demo:state(btu-loading) {
249
+ opacity: 0.6;
250
+ cursor: wait;
251
+ }
252
+
253
+ state-demo:state(btu-expanded) {
254
+ padding: 2rem !important;
255
+ background-color: #dbeafe !important;
256
+ }
257
+ </style>
258
+
259
+ <script>
260
+ ;(() => {
261
+ const demo = document.getElementById('state-demo')
262
+ if (!demo) return
263
+
264
+ const toggleError = document.getElementById('toggle-error')
265
+ const toggleLoading = document.getElementById('toggle-loading')
266
+ const toggleExpanded = document.getElementById('toggle-expanded')
267
+ const clearStates = document.getElementById('clear-states')
268
+
269
+ toggleError?.addEventListener('change', e => {
270
+ if (e.target.checked) {
271
+ demo.states.add('btu-error')
272
+ console.log('✅ Added btu-error state')
273
+ } else {
274
+ demo.states.delete('btu-error')
275
+ console.log('❌ Removed btu-error state')
276
+ }
277
+ demo.requestUpdate()
278
+ })
279
+
280
+ toggleLoading?.addEventListener('change', e => {
281
+ if (e.target.checked) {
282
+ demo.states.add('btu-loading')
283
+ console.log('⏳ Added btu-loading state')
284
+ } else {
285
+ demo.states.delete('btu-loading')
286
+ console.log('❌ Removed btu-loading state')
287
+ }
288
+ demo.requestUpdate()
289
+ })
290
+
291
+ toggleExpanded?.addEventListener('change', e => {
292
+ if (e.target.checked) {
293
+ demo.states.add('btu-expanded')
294
+ console.log('📖 Added btu-expanded state')
295
+ } else {
296
+ demo.states.delete('btu-expanded')
297
+ console.log('❌ Removed btu-expanded state')
298
+ }
299
+ demo.requestUpdate()
300
+ })
301
+
302
+ clearStates?.addEventListener('click', () => {
303
+ demo.states.clear()
304
+ toggleError.checked = false
305
+ toggleLoading.checked = false
306
+ toggleExpanded.checked = false
307
+ console.log('🧹 Cleared all states')
308
+ demo.requestUpdate()
309
+ })
310
+ })()
311
+ <\/script>
312
+ </div>\`
313
+ }`,...a.parameters?.docs?.source}}};const C=["ComponentStates"];export{a as ComponentStates,C as __namedExportsOrder,E as default};