@brightspot/ui 1.6.0 → 1.8.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 (97) hide show
  1. package/dist/components/dropdown/Dropdown.d.ts +172 -0
  2. package/dist/components/dropdown/Dropdown.d.ts.map +1 -0
  3. package/dist/components/dropdown/Dropdown.js +407 -0
  4. package/dist/components/dropdown/Dropdown.js.map +1 -0
  5. package/dist/components/dropdown/DropdownItem.d.ts +108 -0
  6. package/dist/components/dropdown/DropdownItem.d.ts.map +1 -0
  7. package/dist/components/dropdown/DropdownItem.js +210 -0
  8. package/dist/components/dropdown/DropdownItem.js.map +1 -0
  9. package/dist/components/dropdown/DropdownMenu.d.ts +117 -0
  10. package/dist/components/dropdown/DropdownMenu.d.ts.map +1 -0
  11. package/dist/components/dropdown/DropdownMenu.js +295 -0
  12. package/dist/components/dropdown/DropdownMenu.js.map +1 -0
  13. package/dist/components/icon-button/IconButton.d.ts +85 -0
  14. package/dist/components/icon-button/IconButton.d.ts.map +1 -0
  15. package/dist/components/icon-button/IconButton.js +171 -0
  16. package/dist/components/icon-button/IconButton.js.map +1 -0
  17. package/dist/components/pagination/Pagination.d.ts +0 -1
  18. package/dist/components/pagination/Pagination.d.ts.map +1 -1
  19. package/dist/components/pagination/Pagination.js +22 -22
  20. package/dist/components/pagination/Pagination.js.map +1 -1
  21. package/dist/custom-elements.json +1212 -1
  22. package/dist/storybook/assets/Avatar.stories-XfJUoW42.js +213 -0
  23. package/dist/storybook/assets/{AvatarGroup.stories-BBkQuFKk.js → AvatarGroup.stories-CPkv0mVI.js} +1 -1
  24. package/dist/storybook/assets/{Badge.stories-mFZsls7i.js → Badge.stories-Z42hQyzK.js} +3 -3
  25. package/dist/storybook/assets/{Button.stories-CAWX17L1.js → Button.stories-DTcnCrp-.js} +1 -1
  26. package/dist/storybook/assets/{CircularProgress.stories-DBVt4Cg2.js → CircularProgress.stories-B59nHh_k.js} +6 -6
  27. package/dist/storybook/assets/{ClipboardMixin.stories-BH9E-OI6.js → ClipboardMixin.stories-C6DraZ93.js} +1 -1
  28. package/dist/storybook/assets/{Color-6BZIO3FS-CVnTzq2p.js → Color-6BZIO3FS-BuNGIaf5.js} +1 -1
  29. package/dist/storybook/assets/{Colors.stories-BFYmP0LL.js → Colors.stories-B3Capc8F.js} +1 -1
  30. package/dist/storybook/assets/{ComponentStatesMixin-Cu7YXkU8.js → ComponentStatesMixin-DRalOmcW.js} +1 -1
  31. package/dist/storybook/assets/{ComponentStatesMixin.stories-CAvyYt0H.js → ComponentStatesMixin.stories-TKD7YrVe.js} +1 -1
  32. package/dist/storybook/assets/{CopyToClipboard.stories-DbJZsp_L.js → CopyToClipboard.stories-Bv8jZ7TL.js} +1 -1
  33. package/dist/storybook/assets/{Debounce.stories-BiFiH1K9.js → Debounce.stories-CLwXI3OZ.js} +1 -1
  34. package/dist/storybook/assets/{DocsRenderer-LL677BLK-Bq6G4eeC.js → DocsRenderer-LL677BLK-DjMDalQg.js} +6 -6
  35. package/dist/storybook/assets/Dropdown.stories-D7X0Dbnt.js +697 -0
  36. package/dist/storybook/assets/{Events.stories-BsDBxh8_.js → Events.stories-Dgn1N8jT.js} +1 -1
  37. package/dist/storybook/assets/{Heading.stories-zGzWgHVO.js → Heading.stories-BcciQ3Ug.js} +1 -1
  38. package/dist/storybook/assets/{Icon.stories-B4T6sSwf.js → Icon.stories-BWqJoZUM.js} +11 -11
  39. package/dist/storybook/assets/IconButton.stories-BrMDAi9q.js +748 -0
  40. package/dist/storybook/assets/{LinearProgress.stories-qzqmUUwY.js → LinearProgress.stories-INijWBr_.js} +7 -7
  41. package/dist/storybook/assets/LucideDynamicLoader-jmdq8YDM.js +1 -0
  42. package/dist/storybook/assets/{Pagination.stories-B6Q-7taJ.js → Pagination.stories-CrExaWpC.js} +1 -1
  43. package/dist/storybook/assets/{Popover.stories-CGkU0SGv.js → Popover.stories-Bh6IUPG_.js} +5 -5
  44. package/dist/storybook/assets/{ReadyMixin-3YCzoG6W.js → ReadyMixin-C1lZU7vt.js} +1 -1
  45. package/dist/storybook/assets/{Rtc.stories-Y1MYTWAt.js → Rtc.stories-BHqFwgR7.js} +1 -1
  46. package/dist/storybook/assets/{ScrollShadow.stories-B9kSpLT1.js → ScrollShadow.stories-DnIj5cZF.js} +1 -1
  47. package/dist/storybook/assets/{Throttle.stories-BgvLDrS3.js → Throttle.stories-Dilsv90H.js} +1 -1
  48. package/dist/storybook/assets/Tooltip.stories-Dnb76OXa.js +143 -0
  49. package/dist/storybook/assets/{Widget.stories--JpqVyJe.js → Widget.stories-Cl-3dv15.js} +13 -13
  50. package/dist/storybook/assets/{WithTooltip-65CFNBJE-DNbD9hAX.js → WithTooltip-65CFNBJE-Bq21jhKM.js} +1 -1
  51. package/dist/storybook/assets/{formatter-EIJCOSYU-Cy8KIxab.js → formatter-EIJCOSYU-CwrejIu0.js} +1 -1
  52. package/dist/storybook/assets/if-defined-D1UQmdjo.js +1 -0
  53. package/dist/storybook/assets/iframe-CNxIA3cQ.css +1 -0
  54. package/dist/storybook/assets/{iframe-Dz6CxatW.js → iframe-CsKt54V3.js} +154 -154
  55. package/dist/storybook/assets/{index-CebChkmF.js → index-DQ0xe06s.js} +1 -1
  56. package/dist/storybook/assets/{onFind.stories-nHDImx0x.js → onFind.stories-CGeGoVR6.js} +1 -1
  57. package/dist/storybook/assets/{onRemove.stories-CBxYVPwd.js → onRemove.stories-DXOwfv14.js} +1 -1
  58. package/dist/storybook/assets/{onVisible.stories-D4Qewc9Y.js → onVisible.stories-DNzXceKW.js} +1 -1
  59. package/dist/storybook/assets/{style-map-BgW9piaW.js → style-map-kcS06w9f.js} +1 -1
  60. package/dist/storybook/assets/{syntaxhighlighter-ED5Y7EFY-CROW1475.js → syntaxhighlighter-ED5Y7EFY-BnpaJz4a.js} +1 -1
  61. package/dist/storybook/iframe.html +2 -2
  62. package/dist/storybook/index.json +1 -1
  63. package/dist/storybook/project.json +1 -1
  64. package/dist/tailwind-plugin-button.js +10 -0
  65. package/dist/tailwind-plugin-button.js.map +1 -1
  66. package/dist/tailwind-plugin-button.ts +10 -0
  67. package/dist/tailwind-plugin-dropdown.d.ts +2 -0
  68. package/dist/tailwind-plugin-dropdown.d.ts.map +1 -0
  69. package/dist/tailwind-plugin-dropdown.js +223 -0
  70. package/dist/tailwind-plugin-dropdown.js.map +1 -0
  71. package/dist/tailwind-plugin-dropdown.ts +249 -0
  72. package/dist/tailwind-plugin-pagination.js +9 -21
  73. package/dist/tailwind-plugin-pagination.js.map +1 -1
  74. package/dist/tailwind-plugin-pagination.ts +10 -21
  75. package/dist/util/EventEmitterMixin.d.ts +17 -0
  76. package/dist/util/EventEmitterMixin.d.ts.map +1 -1
  77. package/dist/util/EventEmitterMixin.js.map +1 -1
  78. package/docs/components/Avatar.md +62 -0
  79. package/docs/components/AvatarGroup.md +52 -0
  80. package/docs/components/Badge.md +58 -0
  81. package/docs/components/CircularProgress.md +55 -0
  82. package/docs/components/CopyToClipboard.md +54 -0
  83. package/docs/components/Dropdown.md +100 -0
  84. package/docs/components/DropdownItem.md +64 -0
  85. package/docs/components/DropdownMenu.md +81 -0
  86. package/docs/components/Icon.md +61 -0
  87. package/docs/components/IconButton.md +63 -0
  88. package/docs/components/LinearProgress.md +40 -0
  89. package/docs/components/Pagination.md +95 -0
  90. package/docs/components/Popover.md +71 -0
  91. package/docs/components/README.md +25 -0
  92. package/docs/components/Widget.md +79 -0
  93. package/package.json +3 -2
  94. package/dist/storybook/assets/Avatar.stories-CafEcy4T.js +0 -214
  95. package/dist/storybook/assets/Tooltip.stories-POo1M-ew.js +0 -143
  96. package/dist/storybook/assets/if-defined-CngSGyRu.js +0 -1
  97. package/dist/storybook/assets/iframe-DiT9Iz2T.css +0 -1
@@ -0,0 +1,249 @@
1
+ import plugin from 'tailwindcss/plugin'
2
+ import type { CSSRuleObject } from 'tailwindcss/types/config'
3
+ declare let module: any
4
+
5
+ /**
6
+ * Dropdown menu component styling.
7
+ *
8
+ * Class Names:
9
+ *
10
+ * btu-dropdown-panel - Panel container with popover positioning
11
+ * btu-dropdown-item - Menu item row
12
+ * btu-dropdown-item-selected - Selected/checked item highlight
13
+ * btu-dropdown-item-disabled - Disabled item styling (no pointer-events: none)
14
+ * btu-dropdown-divider - Horizontal separator between item groups
15
+ * btu-dropdown-subhead - Group heading label
16
+ * btu-dropdown-header - Menu header bar
17
+ * btu-dropdown-checkbox - Checkbox indicator
18
+ * btu-dropdown-favorite - Favorite star button
19
+ * btu-dropdown-shortcut - Keyboard shortcut text
20
+ * btu-dropdown-chevron - Trigger chevron icon
21
+ */
22
+
23
+ module.exports = plugin(function ({ addComponents, config, theme }) {
24
+ const itemFontSize = config('theme.fontSize.sm')?.[0] ?? '0.875rem'
25
+ const itemLineHeight = config('theme.fontSize.sm')?.[1] ?? '1.25rem'
26
+ const subheadFontSize = config('theme.fontSize.xs')?.[0] ?? '0.75rem'
27
+
28
+ const components: CSSRuleObject = {
29
+ /* ─── Panel ─── */
30
+ '.btu-dropdown-panel': {
31
+ backgroundColor: 'var(--dropdown-panel-background, var(--btu-theme-white))',
32
+ border: '1px solid var(--dropdown-panel-border-color, oklch(var(--btu-theme-gray-200)))',
33
+ borderRadius: `var(--dropdown-panel-border-radius, ${theme('borderRadius.lg')})`,
34
+ boxShadow: theme('boxShadow.lg'),
35
+ padding: '0.25rem 0',
36
+ overflow: 'auto',
37
+ maxHeight: 'min(20rem, 50vh)',
38
+
39
+ /* High-contrast border */
40
+ ':root.is-moreContrast &': {
41
+ borderColor: 'var(--dropdown-panel-border-color, oklch(var(--btu-theme-gray-400)))',
42
+ },
43
+ '@media screen and (prefers-contrast: more) and (forced-colors: none)': {
44
+ ':root:not(.is-normalContrast) &': {
45
+ borderColor: 'var(--dropdown-panel-border-color, oklch(var(--btu-theme-gray-400)))',
46
+ },
47
+ },
48
+
49
+ /* Exit state — hidden */
50
+ opacity: '0',
51
+
52
+ /* Transitions with allow-discrete for display/overlay */
53
+ transition: `opacity 150ms ease`,
54
+ '@supports (transition-behavior: allow-discrete)': {
55
+ transition: `opacity 150ms ease, display 150ms allow-discrete, overlay 150ms allow-discrete`,
56
+ },
57
+
58
+ /* Reduced motion */
59
+ '@media (prefers-reduced-motion: reduce)': {
60
+ transition: 'opacity 0.01ms ease',
61
+ '@supports (transition-behavior: allow-discrete)': {
62
+ transition: 'opacity 0.01ms ease, display 0.01ms allow-discrete, overlay 0.01ms allow-discrete',
63
+ },
64
+ },
65
+ },
66
+ /* Entry state — visible (popover open) */
67
+ '.btu-dropdown-panel:popover-open': {
68
+ opacity: '1',
69
+ },
70
+ /* Starting style for entry animation */
71
+ '@starting-style': {
72
+ '.btu-dropdown-panel:popover-open': {
73
+ opacity: '0',
74
+ },
75
+ } as any,
76
+
77
+ /* ─── Header ─── */
78
+ '.btu-dropdown-header': {
79
+ display: 'flex',
80
+ alignItems: 'center',
81
+ padding: '0.5rem 0.75rem',
82
+ fontSize: subheadFontSize,
83
+ fontWeight: theme('fontWeight.semibold'),
84
+ color: 'oklch(var(--btu-theme-gray-900))',
85
+ borderBottom: '1px solid var(--dropdown-divider-color, oklch(var(--btu-theme-gray-200)))',
86
+ marginBottom: '0.25rem',
87
+ },
88
+
89
+ /* ─── Empty state ─── */
90
+ '.btu-dropdown-empty': {
91
+ display: 'flex',
92
+ alignItems: 'center',
93
+ justifyContent: 'center',
94
+ padding: '1rem',
95
+ fontSize: itemFontSize,
96
+ color: 'var(--dropdown-empty-color, oklch(var(--btu-theme-gray-400)))',
97
+ },
98
+
99
+ /* ─── Item ─── */
100
+ '.btu-dropdown-item': {
101
+ display: 'flex',
102
+ alignItems: 'center',
103
+ gap: '0.5rem',
104
+ padding: '0.375rem 0.75rem',
105
+ fontSize: `var(--dropdown-item-font-size, ${itemFontSize})`,
106
+ lineHeight: itemLineHeight,
107
+ color: 'var(--dropdown-item-color, oklch(var(--btu-theme-gray-700)))',
108
+ backgroundColor: 'var(--dropdown-item-background, transparent)',
109
+ cursor: 'pointer',
110
+ userSelect: 'none',
111
+ outline: 'none',
112
+ whiteSpace: 'nowrap',
113
+
114
+ '&:hover': {
115
+ backgroundColor: 'var(--dropdown-item-hover-background, oklch(var(--btu-theme-gray-100)))',
116
+ color: 'var(--dropdown-item-hover-color, oklch(var(--btu-theme-gray-900)))',
117
+ },
118
+ '&:focus-visible': {
119
+ backgroundColor: 'var(--dropdown-item-hover-background, oklch(var(--btu-theme-gray-100)))',
120
+ color: 'var(--dropdown-item-hover-color, oklch(var(--btu-theme-gray-900)))',
121
+ },
122
+ },
123
+
124
+ '.btu-dropdown-item-selected': {
125
+ backgroundColor: 'var(--dropdown-item-selected-background, oklch(var(--btu-theme-primary-50)))',
126
+ color: 'var(--dropdown-item-selected-color, oklch(var(--btu-theme-primary-700)))',
127
+ '&:hover': {
128
+ backgroundColor: 'var(--dropdown-item-selected-background, oklch(var(--btu-theme-primary-50)))',
129
+ color: 'var(--dropdown-item-selected-color, oklch(var(--btu-theme-primary-700)))',
130
+ },
131
+ '&:focus-visible': {
132
+ backgroundColor: 'var(--dropdown-item-selected-background, oklch(var(--btu-theme-primary-50)))',
133
+ color: 'var(--dropdown-item-selected-color, oklch(var(--btu-theme-primary-700)))',
134
+ },
135
+ },
136
+
137
+ '.btu-dropdown-item-disabled': {
138
+ opacity: '0.5',
139
+ cursor: 'default',
140
+
141
+ ':root.is-moreContrast &': {
142
+ opacity: '0.4',
143
+ },
144
+ '@media screen and (prefers-contrast: more) and (forced-colors: none)': {
145
+ ':root:not(.is-normalContrast) &': {
146
+ opacity: '0.4',
147
+ },
148
+ },
149
+ },
150
+
151
+ /* ─── Checkbox indicator ─── */
152
+ '.btu-dropdown-checkbox': {
153
+ display: 'inline-flex',
154
+ alignItems: 'center',
155
+ justifyContent: 'center',
156
+ width: '1rem',
157
+ height: '1rem',
158
+ flexShrink: '0',
159
+ borderRadius: theme('borderRadius.sm'),
160
+ border: '1px solid oklch(var(--btu-theme-gray-300))',
161
+ backgroundColor: 'transparent',
162
+ color: 'transparent',
163
+ },
164
+ '.btu-dropdown-checkbox-checked': {
165
+ backgroundColor: 'oklch(var(--btu-theme-primary-600))',
166
+ borderColor: 'oklch(var(--btu-theme-primary-600))',
167
+ color: 'var(--btu-theme-white)',
168
+ },
169
+
170
+ /* ─── Divider ─── */
171
+ '.btu-dropdown-divider': {
172
+ borderTop: '1px solid var(--dropdown-divider-color, oklch(var(--btu-theme-gray-200)))',
173
+ margin: '0.25rem 0',
174
+ },
175
+
176
+ /* ─── Subhead ─── */
177
+ '.btu-dropdown-subhead': {
178
+ padding: '0.5rem 0.75rem 0.25rem',
179
+ fontSize: subheadFontSize,
180
+ fontWeight: theme('fontWeight.semibold'),
181
+ color: 'oklch(var(--btu-theme-gray-500))',
182
+ textTransform: 'uppercase',
183
+ letterSpacing: '0.05em',
184
+ lineHeight: '1rem',
185
+ },
186
+
187
+ /* ─── Favorite star ─── */
188
+ 'button.btu-dropdown-favorite': {
189
+ flexShrink: '0',
190
+ marginLeft: 'auto',
191
+ color: 'oklch(var(--btu-theme-gray-400))',
192
+ '&:hover': {
193
+ color: 'oklch(var(--btu-theme-warning-500))',
194
+ },
195
+ },
196
+ 'button.btu-dropdown-favorite-active': {
197
+ color: 'oklch(var(--btu-theme-warning-500))',
198
+ },
199
+
200
+ /* ─── Shortcut text ─── */
201
+ '.btu-dropdown-shortcut': {
202
+ marginLeft: 'auto',
203
+ fontSize: subheadFontSize,
204
+ color: 'oklch(var(--btu-theme-gray-400))',
205
+ },
206
+
207
+ /* ─── Disabled trigger ─── */
208
+ 'btu-dropdown[disabled]': {
209
+ opacity: '0.5',
210
+ pointerEvents: 'none',
211
+ },
212
+
213
+ /* ─── Chevron ─── */
214
+ '.btu-dropdown-chevron': {
215
+ transition: 'transform 200ms ease',
216
+ flexShrink: '0',
217
+ },
218
+ /* Icon-only trigger with chevron: override square sizing so both icons fit */
219
+ '.btu-button-text-hidden:has(.btu-dropdown-chevron)': {
220
+ width: 'auto',
221
+ gap: '0.5rem',
222
+ },
223
+ 'btu-dropdown[open] .btu-dropdown-chevron': {
224
+ transform: 'rotate(180deg)',
225
+ },
226
+
227
+ /* ─── Item icon container ─── */
228
+ '.btu-dropdown-item-icon': {
229
+ display: 'inline-flex',
230
+ flexShrink: '0',
231
+ },
232
+
233
+ /* ─── Item label ─── */
234
+ '.btu-dropdown-item-label': {
235
+ flex: '1',
236
+ overflow: 'hidden',
237
+ textOverflow: 'ellipsis',
238
+ },
239
+
240
+ /* ─── Selected check mark (non-checkbox mode) ─── */
241
+ '.btu-dropdown-check': {
242
+ display: 'inline-flex',
243
+ flexShrink: '0',
244
+ color: 'oklch(var(--btu-theme-primary-600))',
245
+ },
246
+ }
247
+
248
+ addComponents(components)
249
+ })
@@ -52,7 +52,7 @@ module.exports = plugin(function ({ addComponents, config }) {
52
52
  '& .btu-pagination-total': {
53
53
  opacity: '0.5',
54
54
  },
55
- '& .btu-pagination-controls > .btu-button': {
55
+ '& .btu-pagination-controls > btu-icon-button': {
56
56
  opacity: '0.5',
57
57
  },
58
58
  '& .btu-pagination-controls > btu-circular-progress': {
@@ -112,41 +112,29 @@ module.exports = plugin(function ({ addComponents, config }) {
112
112
  marginLeft: 'auto',
113
113
  border: '1px solid oklch(var(--btu-theme-gray-300))',
114
114
  borderRadius: '0.5rem',
115
- '& > :first-child': {
115
+ '& > btu-icon-button:first-of-type > .btu-button': {
116
116
  borderTopLeftRadius: 'calc(0.5rem - 1px)',
117
117
  borderBottomLeftRadius: 'calc(0.5rem - 1px)',
118
118
  },
119
- '& > :last-child': {
119
+ '& > btu-icon-button:last-of-type > .btu-button': {
120
120
  borderTopRightRadius: 'calc(0.5rem - 1px)',
121
121
  borderBottomRightRadius: 'calc(0.5rem - 1px)',
122
122
  },
123
- '& > :focus-visible': {
123
+ '& > btu-icon-button > .btu-button:focus-visible': {
124
124
  zIndex: '1',
125
125
  outline: 'none',
126
126
  boxShadow: '0 0 0 1px oklch(var(--btu-theme-primary-400)), 0 0 0 4px oklch(var(--btu-theme-primary-100))',
127
127
  borderRadius: 'calc(0.5rem - 1px)',
128
128
  },
129
- '& > :focus-within': {
130
- zIndex: '1',
131
- outline: 'none',
132
- boxShadow: '0 0 0 1px oklch(var(--btu-theme-primary-400)), 0 0 0 4px oklch(var(--btu-theme-primary-100))',
133
- borderRadius: 'calc(0.5rem - 1px)',
134
- '& :focus-visible': {
135
- outline: 'none',
136
- boxShadow: 'none',
137
- },
138
- },
139
129
  },
140
- '.btu-pagination-controls > .btu-button': {
130
+ '.btu-pagination-controls > btu-icon-button > .btu-button': {
141
131
  '--button-border-radius': '0',
142
132
  '--button-color': 'var(--pagination-color-background, var(--btu-theme-white, #fff))',
133
+ '--button-text-color': 'var(--pagination-color-foreground, oklch(var(--btu-theme-gray-700)))',
143
134
  borderRight: '1px solid oklch(var(--btu-theme-gray-200))',
144
- '&:last-child': {
145
- borderRight: 'none',
146
- },
147
- '&:disabled': {
148
- color: 'oklch(var(--btu-theme-gray-400))',
149
- },
135
+ },
136
+ '.btu-pagination-controls > btu-icon-button:last-of-type > .btu-button': {
137
+ borderRight: 'none',
150
138
  },
151
139
  '.btu-pagination-jumper': {
152
140
  display: 'inline-flex',
@@ -1 +1 @@
1
- {"version":3,"file":"tailwind-plugin-pagination.js","sourceRoot":"","sources":["../src/tailwind-plugin-pagination.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tailwind-plugin-pagination.js","sourceRoot":"","sources":["../src/tailwind-plugin-pagination.ts"],"names":[],"mappings":"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"}
@@ -60,7 +60,7 @@ module.exports = plugin(function ({ addComponents, config }) {
60
60
  '& .btu-pagination-total': {
61
61
  opacity: '0.5',
62
62
  },
63
- '& .btu-pagination-controls > .btu-button': {
63
+ '& .btu-pagination-controls > btu-icon-button': {
64
64
  opacity: '0.5',
65
65
  },
66
66
  '& .btu-pagination-controls > btu-circular-progress': {
@@ -126,42 +126,31 @@ module.exports = plugin(function ({ addComponents, config }) {
126
126
  marginLeft: 'auto',
127
127
  border: '1px solid oklch(var(--btu-theme-gray-300))',
128
128
  borderRadius: '0.5rem',
129
- '& > :first-child': {
129
+ '& > btu-icon-button:first-of-type > .btu-button': {
130
130
  borderTopLeftRadius: 'calc(0.5rem - 1px)',
131
131
  borderBottomLeftRadius: 'calc(0.5rem - 1px)',
132
132
  },
133
- '& > :last-child': {
133
+ '& > btu-icon-button:last-of-type > .btu-button': {
134
134
  borderTopRightRadius: 'calc(0.5rem - 1px)',
135
135
  borderBottomRightRadius: 'calc(0.5rem - 1px)',
136
136
  },
137
- '& > :focus-visible': {
137
+ '& > btu-icon-button > .btu-button:focus-visible': {
138
138
  zIndex: '1',
139
139
  outline: 'none',
140
140
  boxShadow: '0 0 0 1px oklch(var(--btu-theme-primary-400)), 0 0 0 4px oklch(var(--btu-theme-primary-100))',
141
141
  borderRadius: 'calc(0.5rem - 1px)',
142
142
  },
143
- '& > :focus-within': {
144
- zIndex: '1',
145
- outline: 'none',
146
- boxShadow: '0 0 0 1px oklch(var(--btu-theme-primary-400)), 0 0 0 4px oklch(var(--btu-theme-primary-100))',
147
- borderRadius: 'calc(0.5rem - 1px)',
148
- '& :focus-visible': {
149
- outline: 'none',
150
- boxShadow: 'none',
151
- },
152
- },
153
143
  },
154
144
 
155
- '.btu-pagination-controls > .btu-button': {
145
+ '.btu-pagination-controls > btu-icon-button > .btu-button': {
156
146
  '--button-border-radius': '0',
157
147
  '--button-color': 'var(--pagination-color-background, var(--btu-theme-white, #fff))',
148
+ '--button-text-color': 'var(--pagination-color-foreground, oklch(var(--btu-theme-gray-700)))',
158
149
  borderRight: '1px solid oklch(var(--btu-theme-gray-200))',
159
- '&:last-child': {
160
- borderRight: 'none',
161
- },
162
- '&:disabled': {
163
- color: 'oklch(var(--btu-theme-gray-400))',
164
- },
150
+ },
151
+
152
+ '.btu-pagination-controls > btu-icon-button:last-of-type > .btu-button': {
153
+ borderRight: 'none',
165
154
  },
166
155
 
167
156
  '.btu-pagination-jumper': {
@@ -49,6 +49,23 @@ export interface CustomEventMap {
49
49
  page: number;
50
50
  pageSize: number;
51
51
  }>;
52
+ 'btu-icon-button-ready': CustomEvent<unknown>;
53
+ 'btu-icon-button-click': CustomEvent<{
54
+ name: string | undefined;
55
+ }>;
56
+ 'btu-dropdown-ready': CustomEvent<unknown>;
57
+ 'btu-dropdown-show': CustomEvent<unknown>;
58
+ 'btu-dropdown-hide': CustomEvent<unknown>;
59
+ 'btu-dropdown-menu-ready': CustomEvent<unknown>;
60
+ 'btu-dropdown-item-ready': CustomEvent<unknown>;
61
+ 'btu-dropdown-item-select': CustomEvent<{
62
+ label: string;
63
+ selected: boolean;
64
+ }>;
65
+ 'btu-dropdown-item-favorite': CustomEvent<{
66
+ label: string;
67
+ favorited: boolean;
68
+ }>;
52
69
  }
53
70
  interface CombinedEventMap extends HTMLElementEventMap, CustomEventMap {
54
71
  }
@@ -1 +1 @@
1
- {"version":3,"file":"EventEmitterMixin.d.ts","sourceRoot":"","sources":["../../src/util/EventEmitterMixin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EventEmitterMixin.d.ts","sourceRoot":"","sources":["../../src/util/EventEmitterMixin.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"EventEmitterMixin.js","sourceRoot":"","sources":["../../src/util/EventEmitterMixin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAwDhC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAoC,UAAa,EAAE,EAAE;IACpF,MAAM,sBAAuB,SAAQ,UAAU;QAC7C;;;;WAIG;QACH,iBAAiB;YACf,KAAK,CAAC,iBAAiB,EAAE,CAAA;YACzB,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CACpB,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,CAAC,EAC5C,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,KAAK,EAAE,CAAC,CACnD,CAAA;QACH,CAAC;QAED;;;;WAIG;QACH,oBAAoB;YAClB,KAAK,CAAC,oBAAoB,EAAE,CAAA;YAC5B,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;QACvC,CAAC;QAED;;;;;;;;;;;;;;;;WAgBG;QACH,IAAI,CAAiC,IAAO,EAAE,MAA6C;YACzF,OAAO,IAAI,CAAC,aAAa,CACvB,IAAI,WAAW,CAAC,IAAI,EAAE;gBACpB,OAAO,EAAE,IAAI;gBACb,UAAU,EAAE,KAAK;gBACjB,QAAQ,EAAE,IAAI;gBACd,MAAM;aACP,CAAC,CACH,CAAA;QACH,CAAC;KACF;IACD,OAAO,sBAAqE,CAAA;AAC9E,CAAC,CAAA"}
1
+ {"version":3,"file":"EventEmitterMixin.js","sourceRoot":"","sources":["../../src/util/EventEmitterMixin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAiEhC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAoC,UAAa,EAAE,EAAE;IACpF,MAAM,sBAAuB,SAAQ,UAAU;QAC7C;;;;WAIG;QACH,iBAAiB;YACf,KAAK,CAAC,iBAAiB,EAAE,CAAA;YACzB,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CACpB,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,CAAC,EAC5C,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,KAAK,EAAE,CAAC,CACnD,CAAA;QACH,CAAC;QAED;;;;WAIG;QACH,oBAAoB;YAClB,KAAK,CAAC,oBAAoB,EAAE,CAAA;YAC5B,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;QACvC,CAAC;QAED;;;;;;;;;;;;;;;;WAgBG;QACH,IAAI,CAAiC,IAAO,EAAE,MAA6C;YACzF,OAAO,IAAI,CAAC,aAAa,CACvB,IAAI,WAAW,CAAC,IAAI,EAAE;gBACpB,OAAO,EAAE,IAAI;gBACb,UAAU,EAAE,KAAK;gBACjB,QAAQ,EAAE,IAAI;gBACd,MAAM;aACP,CAAC,CACH,CAAA;QACH,CAAC;KACF;IACD,OAAO,sBAAqE,CAAA;AAC9E,CAAC,CAAA"}
@@ -0,0 +1,62 @@
1
+ # `src/components/avatar/Avatar.ts`:
2
+
3
+ ## class: `Avatar`, `btu-avatar`
4
+
5
+ ### Superclass
6
+
7
+ | Name | Module | Package |
8
+ | ------------ | ------ | ------- |
9
+ | `LitElement` | | lit |
10
+
11
+ ### Mixins
12
+
13
+ | Name | Module | Package |
14
+ | ------------------- | ------------------------------ | ------- |
15
+ | `TooltipMixin` | /src/util/TooltipMixin.js | |
16
+ | `EventEmitterMixin` | /src/util/EventEmitterMixin.js | |
17
+ | `ReadyMixin` | /src/util/ReadyMixin.js | |
18
+
19
+ ### Fields
20
+
21
+ | Name | Privacy | Type | Default | Description | Inherited From |
22
+ | ---------- | ------- | ----------------------------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- |
23
+ | `src` | | `string` | `''` | Image source URL | |
24
+ | `alt` | | `string` | `''` | Alt text for the image | |
25
+ | `fallback` | | `string` | `''` | Fallback text (typically user initials) | |
26
+ | `size` | | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl' \| 'xxl'` | `'md'` | Size variant.&#xA;- 'xs': Extra small (1.5rem)&#xA;- 'sm': Small (2.25rem)&#xA;- 'md': Medium (2.5rem) - default&#xA;- 'lg': Large (3rem)&#xA;- 'xl': Extra large (3.5rem)&#xA;- 'xxl': Extra extra large (4rem) | |
27
+
28
+ ### Events
29
+
30
+ | Name | Type | Description | Inherited From |
31
+ | ------------------------- | ------------------------------------------ | ------------------------------------------- | -------------- |
32
+ | `btu-avatar-ready` | `CustomEvent` | Fired after first render and initialization | |
33
+ | `btu-avatar-image-loaded` | `CustomEvent<{src: string}>` | Fired when image successfully loads | |
34
+ | `btu-avatar-image-error` | `CustomEvent<{src: string, error: Event}>` | Fired when image fails to load | |
35
+
36
+ ### Attributes
37
+
38
+ | Name | Field | Inherited From |
39
+ | ---------- | -------- | -------------- |
40
+ | `src` | src | |
41
+ | `alt` | alt | |
42
+ | `fallback` | fallback | |
43
+ | `size` | size | |
44
+
45
+ ### CSS Properties
46
+
47
+ | Name | Default | Description |
48
+ | -------------------------- | ------- | ----------------------------------------------- |
49
+ | `--avatar-size` | | Custom size (overrides size prop) |
50
+ | `--avatar-bg-color` | | Fallback background color (default: purple-600) |
51
+ | `--avatar-corner-rounding` | | How rounded is the avatar (default: circle) |
52
+ | `--avatar-ring-color` | | Optional ring border color |
53
+ | `--avatar-ring-width` | | Ring border width (default: 2px) |
54
+
55
+ <hr/>
56
+
57
+ ## Exports
58
+
59
+ | Kind | Name | Declaration | Module | Package |
60
+ | --------------------------- | ------------ | ----------- | ------------------------------- | ------- |
61
+ | `js` | `default` | Avatar | src/components/avatar/Avatar.ts | |
62
+ | `custom-element-definition` | `btu-avatar` | Avatar | src/components/avatar/Avatar.ts | |
@@ -0,0 +1,52 @@
1
+ # `src/components/avatar/AvatarGroup.ts`:
2
+
3
+ ## class: `AvatarGroup`, `btu-avatar-group`
4
+
5
+ ### Superclass
6
+
7
+ | Name | Module | Package |
8
+ | ------------ | ------ | ------- |
9
+ | `LitElement` | | lit |
10
+
11
+ ### Mixins
12
+
13
+ | Name | Module | Package |
14
+ | ------------------- | ------------------------------ | ------- |
15
+ | `EventEmitterMixin` | /src/util/EventEmitterMixin.js | |
16
+ | `ReadyMixin` | /src/util/ReadyMixin.js | |
17
+
18
+ ### Fields
19
+
20
+ | Name | Privacy | Type | Default | Description | Inherited From |
21
+ | ------ | ------- | ---------------------- | ------- | ------------------------------------------------------------------- | -------------- |
22
+ | `max` | | `number \| undefined` | | Maximum number of visible avatars. Remaining avatars shown as "+N" | |
23
+ | `size` | | `'xs' \| 'sm' \| 'md'` | `'md'` | Size variant for all child avatars (unless individually overridden) | |
24
+
25
+ ### Methods
26
+
27
+ | Name | Privacy | Description | Parameters | Return | Inherited From |
28
+ | ---------------- | ------- | --------------------------------------------------------------------------------------------------------------------------- | ---------- | ------ | -------------- |
29
+ | `processAvatars` | | Process all avatar children: apply size, handle overflow&#xA;Call this method when avatars are dynamically added or removed | | `void` | |
30
+
31
+ ### Events
32
+
33
+ | Name | Type | Description | Inherited From |
34
+ | --------------------------- | ------------------------------- | ---------------------------------------------- | -------------- |
35
+ | `btu-avatar-group-ready` | `CustomEvent` | Fired after first render and initialization | |
36
+ | `btu-avatar-group-overflow` | `CustomEvent<{hidden: number}>` | Fired when avatars are hidden due to max limit | |
37
+
38
+ ### Attributes
39
+
40
+ | Name | Field | Inherited From |
41
+ | ------ | ----- | -------------- |
42
+ | `max` | max | |
43
+ | `size` | size | |
44
+
45
+ <hr/>
46
+
47
+ ## Exports
48
+
49
+ | Kind | Name | Declaration | Module | Package |
50
+ | --------------------------- | ------------------ | ----------- | ------------------------------------ | ------- |
51
+ | `js` | `default` | AvatarGroup | src/components/avatar/AvatarGroup.ts | |
52
+ | `custom-element-definition` | `btu-avatar-group` | AvatarGroup | src/components/avatar/AvatarGroup.ts | |
@@ -0,0 +1,58 @@
1
+ # `src/components/badge/Badge.ts`:
2
+
3
+ ## class: `Badge`, `btu-badge`
4
+
5
+ ### Superclass
6
+
7
+ | Name | Module | Package |
8
+ | ------------ | ------ | ------- |
9
+ | `LitElement` | | lit |
10
+
11
+ ### Mixins
12
+
13
+ | Name | Module | Package |
14
+ | ------------------- | ------------------------------ | ------- |
15
+ | `EventEmitterMixin` | /src/util/EventEmitterMixin.js | |
16
+ | `ReadyMixin` | /src/util/ReadyMixin.js | |
17
+
18
+ ### Fields
19
+
20
+ | Name | Privacy | Type | Default | Description | Inherited From |
21
+ | --------- | ------- | ---------------------------------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- |
22
+ | `variant` | | `'info' \| 'primary' \| 'error' \| 'success' \| 'warning'` | `'info'` | Style of the badge.&#xA;- 'info': Informational (default)&#xA;- 'primary': Primary action or emphasis&#xA;- 'error': Error or danger state&#xA;- 'success': Success or completion state&#xA;- 'warning': Warning or caution state | |
23
+ | `dot` | | `boolean` | `false` | Should a dot be displayed before the label? | |
24
+ | `size` | | `string` | `'sm'` | Size variant.&#xA;- 'sm': Small (default)&#xA;- 'md': Medium&#xA;- 'lg': Large | |
25
+
26
+ ### Events
27
+
28
+ | Name | Type | Description | Inherited From |
29
+ | ----------------- | ------------- | ------------------------------------------- | -------------- |
30
+ | `btu-badge-ready` | `CustomEvent` | Fired after first render and initialization | |
31
+
32
+ ### Attributes
33
+
34
+ | Name | Field | Inherited From |
35
+ | --------- | ------- | -------------- |
36
+ | `variant` | variant | |
37
+ | `dot` | dot | |
38
+ | `size` | size | |
39
+
40
+ ### CSS Properties
41
+
42
+ | Name | Default | Description |
43
+ | -------------------------- | ------- | ------------------------------------------------------------ |
44
+ | `--badge-color-foreground` | | Text color (overrides theme color) |
45
+ | `--badge-color-background` | | Background color (overrides theme color) |
46
+ | `--badge-radius-size` | | Border radius size (overrides shape default, default: 999px) |
47
+ | `--badge-px` | | Horizontal padding (overrides size default) |
48
+ | `--badge-py` | | Vertical padding (overrides size default) |
49
+ | `--badge-dot-size` | | Size of the dot affordance (default: 6px) |
50
+
51
+ <hr/>
52
+
53
+ ## Exports
54
+
55
+ | Kind | Name | Declaration | Module | Package |
56
+ | --------------------------- | ----------- | ----------- | ----------------------------- | ------- |
57
+ | `js` | `default` | Badge | src/components/badge/Badge.ts | |
58
+ | `custom-element-definition` | `btu-badge` | Badge | src/components/badge/Badge.ts | |