@brightspot/ui 1.0.1-wc.4 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/README.md +4 -0
  2. package/dist/components/avatar/Avatar.d.ts +82 -0
  3. package/dist/components/avatar/Avatar.d.ts.map +1 -0
  4. package/dist/components/avatar/Avatar.js +162 -0
  5. package/dist/components/avatar/Avatar.js.map +1 -0
  6. package/dist/components/avatar/AvatarGroup.d.ts +70 -0
  7. package/dist/components/avatar/AvatarGroup.d.ts.map +1 -0
  8. package/dist/components/avatar/AvatarGroup.js +145 -0
  9. package/dist/components/avatar/AvatarGroup.js.map +1 -0
  10. package/dist/components/badge/Badge.d.ts +75 -0
  11. package/dist/components/badge/Badge.d.ts.map +1 -0
  12. package/dist/components/badge/Badge.js +118 -0
  13. package/dist/components/badge/Badge.js.map +1 -0
  14. package/dist/custom-elements.json +437 -0
  15. package/dist/storybook/assets/Avatar.stories-BONZm4v8.js +209 -0
  16. package/dist/storybook/assets/AvatarGroup.stories-DDKujPh2.js +211 -0
  17. package/dist/storybook/assets/Badge.stories-C8Ahfpp6.js +134 -0
  18. package/dist/storybook/assets/{Button.stories-BH3fEuOH.js → Button.stories-Cwdvbnu1.js} +1 -1
  19. package/dist/storybook/assets/{Color-64QXVMR3-BV_8WWIP.js → Color-64QXVMR3-CqLd5_0n.js} +1 -1
  20. package/dist/storybook/assets/{Colors.stories-CcpJ2Txp.js → Colors.stories-BajWDIwn.js} +1 -1
  21. package/dist/storybook/assets/Events.stories-B32yjxgf.js +108 -0
  22. package/dist/storybook/assets/{Heading.stories-cqZamo-6.js → Heading.stories-C0ji1wRG.js} +1 -1
  23. package/dist/storybook/assets/{Icon.stories-uPhO3RBG.js → Icon.stories-DeEHMd7f.js} +1 -1
  24. package/dist/storybook/assets/{Loader.stories-D7Bl-LN9.js → Loader.stories-NxZ0SGA0.js} +1 -1
  25. package/dist/storybook/assets/ReadyMixin.stories-DavcxbQ0.js +55 -0
  26. package/dist/storybook/assets/{ScrollShadow.stories-CWKYDYLk.js → ScrollShadow.stories-1W8nsrPe.js} +1 -1
  27. package/dist/storybook/assets/{WithTooltip-SK46ZJ2J-DyavE1Bj.js → WithTooltip-SK46ZJ2J-BO-IGPcG.js} +5 -5
  28. package/dist/storybook/assets/formatter-OMEEQ6HG-wqmAyL2n.js +1 -0
  29. package/dist/storybook/assets/iframe-BEH5EoNR.css +1 -0
  30. package/dist/storybook/assets/{iframe-mIh0R_Av.js → iframe-BIFmrRK7.js} +152 -125
  31. package/dist/storybook/assets/{index-C8IjQgz6.js → index-B4dkQq9N.js} +1 -1
  32. package/dist/storybook/assets/{syntaxhighlighter-CAVLW7PM-36bUIV4n.js → syntaxhighlighter-CAVLW7PM-kyZrfiLk.js} +1 -1
  33. package/dist/storybook/iframe.html +2 -2
  34. package/dist/storybook/index.json +1 -1
  35. package/dist/storybook/project.json +1 -1
  36. package/dist/tailwind-plugin-avatar.d.ts +2 -0
  37. package/dist/tailwind-plugin-avatar.d.ts.map +1 -0
  38. package/dist/tailwind-plugin-avatar.js +130 -0
  39. package/dist/tailwind-plugin-avatar.js.map +1 -0
  40. package/dist/tailwind-plugin-avatar.ts +181 -0
  41. package/dist/tailwind-plugin-badge.js +24 -9
  42. package/dist/tailwind-plugin-badge.js.map +1 -1
  43. package/dist/tailwind-plugin-badge.ts +30 -11
  44. package/dist/tailwind-plugin-button.js +3 -6
  45. package/dist/tailwind-plugin-button.js.map +1 -1
  46. package/dist/tailwind-plugin-button.ts +3 -7
  47. package/dist/tailwind.config.js +2 -2
  48. package/dist/tailwind.config.js.map +1 -1
  49. package/dist/tailwind.config.ts +2 -2
  50. package/dist/utils/EventEmitterMixin.d.ts +19 -16
  51. package/dist/utils/EventEmitterMixin.d.ts.map +1 -1
  52. package/dist/utils/EventEmitterMixin.js +7 -7
  53. package/dist/utils/EventEmitterMixin.js.map +1 -1
  54. package/dist/utils/ReadyMixin.d.ts +31 -0
  55. package/dist/utils/ReadyMixin.d.ts.map +1 -0
  56. package/dist/utils/ReadyMixin.js +42 -0
  57. package/dist/utils/ReadyMixin.js.map +1 -0
  58. package/package.json +7 -6
  59. package/custom-elements.json +0 -214
  60. package/dist/components/widget/Widget.css +0 -118
  61. package/dist/components/widget/Widget.d.ts +0 -90
  62. package/dist/components/widget/Widget.d.ts.map +0 -1
  63. package/dist/components/widget/Widget.js +0 -196
  64. package/dist/components/widget/Widget.js.map +0 -1
  65. package/dist/components/widget/WidgetUtils.d.ts +0 -14
  66. package/dist/components/widget/WidgetUtils.d.ts.map +0 -1
  67. package/dist/components/widget/WidgetUtils.js +0 -42
  68. package/dist/components/widget/WidgetUtils.js.map +0 -1
  69. package/dist/storybook/assets/Badge.stories-cKvztBhm.js +0 -43
  70. package/dist/storybook/assets/Widget-CRTwFkFc.css +0 -1
  71. package/dist/storybook/assets/Widget.stories-CcjywoYR.js +0 -300
  72. package/dist/storybook/assets/formatter-OMEEQ6HG-DBJ97XaR.js +0 -1
  73. package/dist/storybook/assets/iframe-BdHEYpHD.css +0 -1
@@ -1,300 +0,0 @@
1
- import{g as u,x as o}from"./iframe-mIh0R_Av.js";import"./preload-helper-PPVm8Dsz.js";const{events:w,args:h,argTypes:v,template:y}=u("btu-widget"),E={title:"Components/Widget",component:"btu-widget",tags:["autodocs"],parameters:{actions:{handles:w}},args:{...h,heading:"Widget Title",internalname:"example",widgetid:"demo"},argTypes:v,render:e=>y(e,o`
2
- <div class="p-6">
3
- <p class="text-gray-700">This is the widget content. It can contain any HTML elements.</p>
4
- </div>
5
- `)},s={args:{},parameters:{docs:{description:{story:"Basic widget with a title. Non-collapsible by default, displays content statically."}}}},a={args:{collapsible:!0,heading:"Collapsible Widget"},parameters:{docs:{description:{story:"Collapsible widget with expand/collapse button. Click the title or press Enter/Space on the expand button to toggle. State persists in localStorage."}}}},r={args:{collapsible:!0,heading:"Widget with Error",internalname:"errorWidget",widgetid:"error-001"},render:e=>o`
6
- <btu-widget
7
- ?collapsible=${e.collapsible}
8
- .heading=${e.heading}
9
- .internalname=${e.internalname}
10
- .widgetid=${e.widgetid}
11
- >
12
- <div class="space-y-4 p-6">
13
- <div class="Message is-error bg-error-50 border-error-200 rounded border p-4">
14
- <p class="text-error-700 font-medium">Error: This field is required</p>
15
- </div>
16
- <div>
17
- <label class="mb-1 block text-sm font-medium text-gray-700">Required Field</label>
18
- <input
19
- type="text"
20
- class="border-error-600 focus:ring-error focus:border-error w-full rounded border px-3 py-2 focus:ring-2"
21
- />
22
- </div>
23
- </div>
24
- </btu-widget>
25
- `,parameters:{docs:{description:{story:"Widget automatically expands when it contains error messages (elements with `.Message.is-error` class). The title text turns red and displays an error icon."}}}},d={args:{collapsible:!0,heading:"Publishing Tools"},render:()=>o`
26
- <div class="space-y-4">
27
- <btu-widget collapsible heading="Metadata" internalname="metadata" widgetid="pub-001">
28
- <div class="p-6">
29
- <p class="text-gray-700">Edit page metadata and SEO settings.</p>
30
- </div>
31
- </btu-widget>
32
-
33
- <btu-widget collapsible heading="Tags & Categories" internalname="tags" widgetid="pub-002">
34
- <div class="p-6">
35
- <p class="text-gray-700">Manage content tags and categories.</p>
36
- </div>
37
- </btu-widget>
38
-
39
- <btu-widget collapsible heading="Scheduling" internalname="scheduling" widgetid="pub-003">
40
- <div class="p-6">
41
- <p class="text-gray-700">Set publish date and expiration settings.</p>
42
- </div>
43
- </btu-widget>
44
-
45
- <btu-widget collapsible heading="Permissions" internalname="permissions" widgetid="pub-004">
46
- <div class="p-6">
47
- <p class="text-gray-700">Configure access control and permissions.</p>
48
- </div>
49
- </btu-widget>
50
- </div>
51
- `,parameters:{docs:{description:{story:"Multiple collapsible widgets stacked vertically, simulating a right rail or sidebar layout. Each widget maintains independent collapse state."}}}},l={args:{collapsible:!0,heading:"Widget with Event Monitoring",internalname:"eventDemo",widgetid:"events-001"},render:e=>{const g=`widget-${Math.random().toString(36).substr(2,9)}`,p=`log-${g}`,m=(n,i)=>{const t=document.getElementById(p);if(!t)return;const b=new Date().toLocaleTimeString(),c=document.createElement("div");for(c.className="border-l-4 border-primary-500 bg-primary-50 px-4 py-2 mb-2",c.innerHTML=`
52
- <div class="flex items-center justify-between">
53
- <span class="font-semibold text-primary-900">${n}</span>
54
- <span class="text-xs text-primary-700">${b}</span>
55
- </div>
56
- ${i?`<pre class="text-xs text-primary-800 mt-1">${JSON.stringify(i,null,2)}</pre>`:""}
57
- `,t.insertBefore(c,t.firstChild);t.children.length>10;)t.removeChild(t.lastChild)};return setTimeout(()=>{const n=document.getElementById(g);n&&(n.addEventListener("btu-widget-ready",(i=>{m("btu-widget-ready",{timestamp:new Date().toISOString()})})),n.addEventListener("btu-widget-toggle",(i=>{const t=i.target;m("btu-widget-toggle",{collapsed:t.collapsed,timestamp:new Date().toISOString()})})))},0),o`
58
- <div class="space-y-4">
59
- <div class="rounded-lg border border-gray-200 bg-gray-50 p-4">
60
- <h3 class="mb-2 text-sm font-semibold text-gray-900">Event Log</h3>
61
- <p class="mb-3 text-xs text-gray-600">
62
- Events emitted by the widget will appear here in real-time. Try collapsing/expanding the widget below.
63
- </p>
64
- <div id="${p}" class="max-h-96 space-y-2 overflow-y-auto"></div>
65
- <div class="mt-3 text-xs text-gray-500">
66
- <strong>Events:</strong>
67
- <ul class="ml-2 mt-1 list-inside list-disc">
68
- <li><code>btu-widget-ready</code> - Fired after widget first render</li>
69
- <li><code>btu-widget-toggle</code> - Fired when collapse state changes</li>
70
- </ul>
71
- </div>
72
- </div>
73
-
74
- <btu-widget
75
- id="${g}"
76
- ?collapsible=${e.collapsible}
77
- .heading=${e.heading}
78
- .internalname=${e.internalname}
79
- .widgetid=${e.widgetid}
80
- >
81
- <div class="p-6">
82
- <p class="mb-4 text-gray-700">
83
- This widget demonstrates event emission. Open the browser console to see all events, or watch the event
84
- log above.
85
- </p>
86
- <div class="rounded border border-blue-200 bg-blue-50 p-3">
87
- <p class="text-sm text-blue-900">
88
- <strong>Try this:</strong> Click the collapse/expand button multiple times and watch the
89
- <code class="rounded bg-blue-100 px-1">btu-widget-toggle</code>
90
- events appear in the log above.
91
- </p>
92
- </div>
93
- </div>
94
- </btu-widget>
95
- </div>
96
- `},parameters:{docs:{description:{story:`
97
- Widget event emission demonstration. The widget emits two custom events:
98
-
99
- - **btu-widget-ready**: Fired once after the widget's first render and initialization
100
- - **btu-widget-toggle**: Fired whenever the collapse state changes (only for collapsible widgets)
101
-
102
- All events bubble up through the DOM and can be listened to on the widget element or any parent element.
103
- `}}}};s.parameters={...s.parameters,docs:{...s.parameters?.docs,source:{originalSource:`{
104
- args: {},
105
- parameters: {
106
- docs: {
107
- description: {
108
- story: 'Basic widget with a title. Non-collapsible by default, displays content statically.'
109
- }
110
- }
111
- }
112
- }`,...s.parameters?.docs?.source}}};a.parameters={...a.parameters,docs:{...a.parameters?.docs,source:{originalSource:`{
113
- args: {
114
- collapsible: true,
115
- heading: 'Collapsible Widget'
116
- },
117
- parameters: {
118
- docs: {
119
- description: {
120
- story: 'Collapsible widget with expand/collapse button. Click the title or press Enter/Space on the expand button to toggle. State persists in localStorage.'
121
- }
122
- }
123
- }
124
- }`,...a.parameters?.docs?.source}}};r.parameters={...r.parameters,docs:{...r.parameters?.docs,source:{originalSource:`{
125
- args: {
126
- collapsible: true,
127
- heading: 'Widget with Error',
128
- internalname: 'errorWidget',
129
- widgetid: 'error-001'
130
- },
131
- render: args => html\`
132
- <btu-widget
133
- ?collapsible=\${args.collapsible}
134
- .heading=\${args.heading}
135
- .internalname=\${args.internalname}
136
- .widgetid=\${args.widgetid}
137
- >
138
- <div class="space-y-4 p-6">
139
- <div class="Message is-error bg-error-50 border-error-200 rounded border p-4">
140
- <p class="text-error-700 font-medium">Error: This field is required</p>
141
- </div>
142
- <div>
143
- <label class="mb-1 block text-sm font-medium text-gray-700">Required Field</label>
144
- <input
145
- type="text"
146
- class="border-error-600 focus:ring-error focus:border-error w-full rounded border px-3 py-2 focus:ring-2"
147
- />
148
- </div>
149
- </div>
150
- </btu-widget>
151
- \`,
152
- parameters: {
153
- docs: {
154
- description: {
155
- story: 'Widget automatically expands when it contains error messages (elements with \`.Message.is-error\` class). The title text turns red and displays an error icon.'
156
- }
157
- }
158
- }
159
- }`,...r.parameters?.docs?.source}}};d.parameters={...d.parameters,docs:{...d.parameters?.docs,source:{originalSource:`{
160
- args: {
161
- collapsible: true,
162
- heading: 'Publishing Tools'
163
- },
164
- render: () => html\`
165
- <div class="space-y-4">
166
- <btu-widget collapsible heading="Metadata" internalname="metadata" widgetid="pub-001">
167
- <div class="p-6">
168
- <p class="text-gray-700">Edit page metadata and SEO settings.</p>
169
- </div>
170
- </btu-widget>
171
-
172
- <btu-widget collapsible heading="Tags & Categories" internalname="tags" widgetid="pub-002">
173
- <div class="p-6">
174
- <p class="text-gray-700">Manage content tags and categories.</p>
175
- </div>
176
- </btu-widget>
177
-
178
- <btu-widget collapsible heading="Scheduling" internalname="scheduling" widgetid="pub-003">
179
- <div class="p-6">
180
- <p class="text-gray-700">Set publish date and expiration settings.</p>
181
- </div>
182
- </btu-widget>
183
-
184
- <btu-widget collapsible heading="Permissions" internalname="permissions" widgetid="pub-004">
185
- <div class="p-6">
186
- <p class="text-gray-700">Configure access control and permissions.</p>
187
- </div>
188
- </btu-widget>
189
- </div>
190
- \`,
191
- parameters: {
192
- docs: {
193
- description: {
194
- story: 'Multiple collapsible widgets stacked vertically, simulating a right rail or sidebar layout. Each widget maintains independent collapse state.'
195
- }
196
- }
197
- }
198
- }`,...d.parameters?.docs?.source}}};l.parameters={...l.parameters,docs:{...l.parameters?.docs,source:{originalSource:`{
199
- args: {
200
- collapsible: true,
201
- heading: 'Widget with Event Monitoring',
202
- internalname: 'eventDemo',
203
- widgetid: 'events-001'
204
- },
205
- render: args => {
206
- // Create a unique ID for this story instance
207
- const widgetId = \`widget-\${Math.random().toString(36).substr(2, 9)}\`;
208
- const logId = \`log-\${widgetId}\`;
209
- const addLogEntry = (eventName: string, detail?: any) => {
210
- const logContainer = document.getElementById(logId);
211
- if (!logContainer) return;
212
- const timestamp = new Date().toLocaleTimeString();
213
- const entry = document.createElement('div');
214
- entry.className = 'border-l-4 border-primary-500 bg-primary-50 px-4 py-2 mb-2';
215
- entry.innerHTML = \`
216
- <div class="flex items-center justify-between">
217
- <span class="font-semibold text-primary-900">\${eventName}</span>
218
- <span class="text-xs text-primary-700">\${timestamp}</span>
219
- </div>
220
- \${detail ? \`<pre class="text-xs text-primary-800 mt-1">\${JSON.stringify(detail, null, 2)}</pre>\` : ''}
221
- \`;
222
- logContainer.insertBefore(entry, logContainer.firstChild);
223
-
224
- // Keep only last 10 entries
225
- while (logContainer.children.length > 10) {
226
- logContainer.removeChild(logContainer.lastChild!);
227
- }
228
- };
229
- setTimeout(() => {
230
- const widget = document.getElementById(widgetId);
231
- if (!widget) return;
232
- widget.addEventListener('btu-widget-ready', ((e: CustomEvent) => {
233
- addLogEntry('btu-widget-ready', {
234
- timestamp: new Date().toISOString()
235
- });
236
- }) as EventListener);
237
- widget.addEventListener('btu-widget-toggle', ((e: CustomEvent) => {
238
- const widgetElement = e.target as any;
239
- addLogEntry('btu-widget-toggle', {
240
- collapsed: widgetElement.collapsed,
241
- timestamp: new Date().toISOString()
242
- });
243
- }) as EventListener);
244
- }, 0);
245
- return html\`
246
- <div class="space-y-4">
247
- <div class="rounded-lg border border-gray-200 bg-gray-50 p-4">
248
- <h3 class="mb-2 text-sm font-semibold text-gray-900">Event Log</h3>
249
- <p class="mb-3 text-xs text-gray-600">
250
- Events emitted by the widget will appear here in real-time. Try collapsing/expanding the widget below.
251
- </p>
252
- <div id="\${logId}" class="max-h-96 space-y-2 overflow-y-auto"></div>
253
- <div class="mt-3 text-xs text-gray-500">
254
- <strong>Events:</strong>
255
- <ul class="ml-2 mt-1 list-inside list-disc">
256
- <li><code>btu-widget-ready</code> - Fired after widget first render</li>
257
- <li><code>btu-widget-toggle</code> - Fired when collapse state changes</li>
258
- </ul>
259
- </div>
260
- </div>
261
-
262
- <btu-widget
263
- id="\${widgetId}"
264
- ?collapsible=\${args.collapsible}
265
- .heading=\${args.heading}
266
- .internalname=\${args.internalname}
267
- .widgetid=\${args.widgetid}
268
- >
269
- <div class="p-6">
270
- <p class="mb-4 text-gray-700">
271
- This widget demonstrates event emission. Open the browser console to see all events, or watch the event
272
- log above.
273
- </p>
274
- <div class="rounded border border-blue-200 bg-blue-50 p-3">
275
- <p class="text-sm text-blue-900">
276
- <strong>Try this:</strong> Click the collapse/expand button multiple times and watch the
277
- <code class="rounded bg-blue-100 px-1">btu-widget-toggle</code>
278
- events appear in the log above.
279
- </p>
280
- </div>
281
- </div>
282
- </btu-widget>
283
- </div>
284
- \`;
285
- },
286
- parameters: {
287
- docs: {
288
- description: {
289
- story: \`
290
- Widget event emission demonstration. The widget emits two custom events:
291
-
292
- - **btu-widget-ready**: Fired once after the widget's first render and initialization
293
- - **btu-widget-toggle**: Fired whenever the collapse state changes (only for collapsible widgets)
294
-
295
- All events bubble up through the DOM and can be listened to on the widget element or any parent element.
296
- \`
297
- }
298
- }
299
- }
300
- }`,...l.parameters?.docs?.source}}};const C=["Default","Collapsible","WithErrorMessage","MultipleWidgets","EventEmission"];export{a as Collapsible,s as Default,l as EventEmission,d as MultipleWidgets,r as WithErrorMessage,C as __namedExportsOrder,E as default};
@@ -1 +0,0 @@
1
- import{d as i,a as t}from"./WithTooltip-SK46ZJ2J-DyavE1Bj.js";import{c as m}from"./iframe-mIh0R_Av.js";import"./preload-helper-PPVm8Dsz.js";var a=m(t(),1),d=(0,a.default)(2)(async(e,r)=>e===!1?r:i(r));export{d as formatter};