@brightspot/ui 1.5.0 → 1.7.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 (105) 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/pagination/Pagination.d.ts +109 -0
  14. package/dist/components/pagination/Pagination.d.ts.map +1 -0
  15. package/dist/components/pagination/Pagination.js +351 -0
  16. package/dist/components/pagination/Pagination.js.map +1 -0
  17. package/dist/custom-elements.json +1642 -182
  18. package/dist/storybook/assets/Avatar.stories-BAaSlDF7.js +213 -0
  19. package/dist/storybook/assets/AvatarGroup.stories-CgoDB4N4.js +225 -0
  20. package/dist/storybook/assets/{Badge.stories-Bbnc6fRy.js → Badge.stories-uexxdmo6.js} +3 -3
  21. package/dist/storybook/assets/{Button.stories-CRJ5n2y4.js → Button.stories-T9UJUPHI.js} +1 -1
  22. package/dist/storybook/assets/{CircularProgress.stories-D9vBj3JJ.js → CircularProgress.stories-DW-VJA5j.js} +6 -6
  23. package/dist/storybook/assets/{ClipboardMixin.stories-Dm-Jm4yb.js → ClipboardMixin.stories-DzU4vxu5.js} +1 -1
  24. package/dist/storybook/assets/{Color-6BZIO3FS-BcNIJY1U.js → Color-6BZIO3FS-DRk2xjoN.js} +1 -1
  25. package/dist/storybook/assets/{Colors.stories-B9_090wL.js → Colors.stories-_UPdvuhY.js} +1 -1
  26. package/dist/storybook/assets/{ComponentStatesMixin-ChiFBCuo.js → ComponentStatesMixin-BIu5SKeV.js} +1 -1
  27. package/dist/storybook/assets/{ComponentStatesMixin.stories-DHv9MHmE.js → ComponentStatesMixin.stories-C0FLaqLu.js} +1 -1
  28. package/dist/storybook/assets/{CopyToClipboard.stories-gtJlTP1l.js → CopyToClipboard.stories-D31zoUVI.js} +1 -1
  29. package/dist/storybook/assets/{Debounce.stories-BBNX7mJA.js → Debounce.stories-CgPPl5Ee.js} +1 -1
  30. package/dist/storybook/assets/{DocsRenderer-LL677BLK-D-E99pXl.js → DocsRenderer-LL677BLK-iwiwOzX9.js} +6 -6
  31. package/dist/storybook/assets/Dropdown.stories-CDcl6rmG.js +697 -0
  32. package/dist/storybook/assets/{Events.stories-DDmydlh_.js → Events.stories-DS6UC9dZ.js} +1 -1
  33. package/dist/storybook/assets/{Heading.stories-BLGfko-i.js → Heading.stories-CAQfEGE2.js} +1 -1
  34. package/dist/storybook/assets/{Icon.stories-BHnAGcFF.js → Icon.stories-C7msWlHs.js} +11 -11
  35. package/dist/storybook/assets/{LinearProgress.stories-Dx26a0P_.js → LinearProgress.stories-DBGJ5a2-.js} +7 -7
  36. package/dist/storybook/assets/Pagination.stories-C58bGOdf.js +272 -0
  37. package/dist/storybook/assets/{Popover.stories-CbqpY6YR.js → Popover.stories-C9zU0sEX.js} +5 -5
  38. package/dist/storybook/assets/{ReadyMixin-BHiHoIbr.js → ReadyMixin-qf8SAjMu.js} +1 -1
  39. package/dist/storybook/assets/{Rtc.stories-CAjDv_Ub.js → Rtc.stories-k9tKHNhD.js} +1 -1
  40. package/dist/storybook/assets/{ScrollShadow.stories-BSV4U-tq.js → ScrollShadow.stories-Bp42zyLH.js} +1 -1
  41. package/dist/storybook/assets/{Throttle.stories-kaxXQ8RZ.js → Throttle.stories-B5YU-Nms.js} +1 -1
  42. package/dist/storybook/assets/Tooltip.stories-COQcvOnL.js +143 -0
  43. package/dist/storybook/assets/{Widget.stories-DqATHnSq.js → Widget.stories-D3Sq5-_A.js} +13 -13
  44. package/dist/storybook/assets/{WithTooltip-65CFNBJE-BtbbFYSA.js → WithTooltip-65CFNBJE-Cox81aM_.js} +1 -1
  45. package/dist/storybook/assets/{formatter-EIJCOSYU-C87Csnpu.js → formatter-EIJCOSYU-3ErcoV9q.js} +1 -1
  46. package/dist/storybook/assets/if-defined-Bv2_qPJg.js +1 -0
  47. package/dist/storybook/assets/{iframe-CcloOV09.js → iframe-CM6gBkqA.js} +170 -170
  48. package/dist/storybook/assets/iframe-D3r2Ciu8.css +1 -0
  49. package/dist/storybook/assets/{index-DP7vnJf7.js → index-iwfnMgqg.js} +1 -1
  50. package/dist/storybook/assets/{onFind.stories-BxvoC-Z-.js → onFind.stories-CDtoTN6S.js} +1 -1
  51. package/dist/storybook/assets/{onRemove.stories-Dwoixzb0.js → onRemove.stories-CSTeFCLU.js} +1 -1
  52. package/dist/storybook/assets/{onVisible.stories-CinmRF9w.js → onVisible.stories-C-yiw9n4.js} +1 -1
  53. package/dist/storybook/assets/style-map-BJGdSb_D.js +1 -0
  54. package/dist/storybook/assets/{syntaxhighlighter-ED5Y7EFY-BHLkDkOn.js → syntaxhighlighter-ED5Y7EFY-BEudYlVi.js} +1 -1
  55. package/dist/storybook/iframe.html +2 -2
  56. package/dist/storybook/index.json +1 -1
  57. package/dist/storybook/project.json +1 -1
  58. package/dist/tailwind-plugin-button.js +10 -0
  59. package/dist/tailwind-plugin-button.js.map +1 -1
  60. package/dist/tailwind-plugin-button.ts +10 -0
  61. package/dist/tailwind-plugin-dropdown.d.ts +2 -0
  62. package/dist/tailwind-plugin-dropdown.d.ts.map +1 -0
  63. package/dist/tailwind-plugin-dropdown.js +223 -0
  64. package/dist/tailwind-plugin-dropdown.js.map +1 -0
  65. package/dist/tailwind-plugin-dropdown.ts +249 -0
  66. package/dist/tailwind-plugin-pagination.d.ts +2 -0
  67. package/dist/tailwind-plugin-pagination.d.ts.map +1 -0
  68. package/dist/tailwind-plugin-pagination.js +164 -0
  69. package/dist/tailwind-plugin-pagination.js.map +1 -0
  70. package/dist/tailwind-plugin-pagination.ts +179 -0
  71. package/dist/tailwind.config.d.ts +1 -4
  72. package/dist/tailwind.config.d.ts.map +1 -1
  73. package/dist/tailwind.config.js +1 -0
  74. package/dist/tailwind.config.js.map +1 -1
  75. package/dist/tailwind.config.ts +1 -0
  76. package/dist/util/EventEmitterMixin.d.ts +22 -0
  77. package/dist/util/EventEmitterMixin.d.ts.map +1 -1
  78. package/dist/util/EventEmitterMixin.js.map +1 -1
  79. package/dist/util/aria.d.ts.map +1 -1
  80. package/dist/util/aria.js +2 -1
  81. package/dist/util/aria.js.map +1 -1
  82. package/dist/util/i18n.d.ts +13 -0
  83. package/dist/util/i18n.d.ts.map +1 -0
  84. package/dist/util/i18n.js +21 -0
  85. package/dist/util/i18n.js.map +1 -0
  86. package/docs/components/Avatar.md +62 -0
  87. package/docs/components/AvatarGroup.md +52 -0
  88. package/docs/components/Badge.md +58 -0
  89. package/docs/components/CircularProgress.md +55 -0
  90. package/docs/components/CopyToClipboard.md +54 -0
  91. package/docs/components/Dropdown.md +100 -0
  92. package/docs/components/DropdownItem.md +64 -0
  93. package/docs/components/DropdownMenu.md +81 -0
  94. package/docs/components/Icon.md +61 -0
  95. package/docs/components/LinearProgress.md +40 -0
  96. package/docs/components/Pagination.md +95 -0
  97. package/docs/components/Popover.md +71 -0
  98. package/docs/components/README.md +24 -0
  99. package/docs/components/Widget.md +79 -0
  100. package/package.json +4 -3
  101. package/dist/storybook/assets/Avatar.stories-CPVNxsaA.js +0 -214
  102. package/dist/storybook/assets/AvatarGroup.stories-Bl65NGHl.js +0 -225
  103. package/dist/storybook/assets/Tooltip.stories-CsxXkztr.js +0 -143
  104. package/dist/storybook/assets/if-defined-COHr0XBn.js +0 -1
  105. package/dist/storybook/assets/iframe-BkDGeDre.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
+ })
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tailwind-plugin-pagination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tailwind-plugin-pagination.d.ts","sourceRoot":"","sources":["../src/tailwind-plugin-pagination.ts"],"names":[],"mappings":""}
@@ -0,0 +1,164 @@
1
+ import plugin from 'tailwindcss/plugin';
2
+ /**
3
+ * Pagination component styles.
4
+ *
5
+ * Class Names:
6
+ *
7
+ * btu-pagination - Root container
8
+ * btu-pagination-hidden - Hidden state (single page / no items)
9
+ * btu-pagination-disabled - Disabled state
10
+ * btu-pagination-loading - Loading state with dimmed controls
11
+ * btu-pagination-nav - Inner nav wrapper
12
+ * btu-pagination-size-changer - Page size select area
13
+ * btu-pagination-select - Native select element
14
+ * btu-pagination-total - "1-10 of 200" display
15
+ * btu-pagination-controls - Button group container
16
+ * btu-pagination-jumper - Slot area for custom jumper content
17
+ *
18
+ * Navigation buttons use btu-button classes (btu-button btu-button-text-hidden
19
+ * btu-button-sm). The controls container overrides
20
+ * border-radius for grouped button appearance.
21
+ *
22
+ * CSS Custom Properties:
23
+ *
24
+ * --pagination-color-background - Select background
25
+ * --pagination-color-foreground - Text/icon color
26
+ */
27
+ // Inline chevron-down SVG for select background
28
+ const chevronDownSvg = `url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E")`;
29
+ module.exports = plugin(function ({ addComponents, config }) {
30
+ const fontSize_sm = config('theme.fontSize.sm')?.[0] ?? '0.875rem';
31
+ const fontSize_xs = config('theme.fontSize.xs')?.[0] ?? '0.75rem';
32
+ addComponents({
33
+ '.btu-pagination': {
34
+ display: 'inline-flex',
35
+ alignItems: 'center',
36
+ gap: '0.75rem',
37
+ fontSize: fontSize_sm,
38
+ color: 'var(--pagination-color-foreground, oklch(var(--btu-theme-gray-700)))',
39
+ },
40
+ '.btu-pagination-hidden': {
41
+ display: 'none',
42
+ },
43
+ '.btu-pagination-disabled': {
44
+ opacity: '0.5',
45
+ pointerEvents: 'none',
46
+ },
47
+ '.btu-pagination-loading': {
48
+ pointerEvents: 'none',
49
+ '& .btu-pagination-size-changer': {
50
+ opacity: '0.5',
51
+ },
52
+ '& .btu-pagination-total': {
53
+ opacity: '0.5',
54
+ },
55
+ '& .btu-pagination-controls > .btu-button': {
56
+ opacity: '0.5',
57
+ },
58
+ '& .btu-pagination-controls > btu-circular-progress': {
59
+ position: 'absolute',
60
+ left: '50%',
61
+ top: '50%',
62
+ transform: 'translate(-50%, -50%)',
63
+ zIndex: '1',
64
+ },
65
+ },
66
+ '.btu-pagination-nav': {
67
+ display: 'flex',
68
+ alignItems: 'center',
69
+ gap: '0.75rem',
70
+ width: '100%',
71
+ },
72
+ '.btu-pagination-size-changer': {
73
+ display: 'inline-flex',
74
+ alignItems: 'center',
75
+ gap: '0.5rem',
76
+ '&:empty': {
77
+ display: 'none',
78
+ },
79
+ },
80
+ '.btu-pagination-select': {
81
+ appearance: 'none',
82
+ background: 'var(--pagination-color-background, var(--btu-theme-white, #fff))',
83
+ border: '1px solid oklch(var(--btu-theme-gray-300))',
84
+ borderRadius: '0.5rem',
85
+ padding: '0.375rem 1.75rem 0.375rem 0.5rem',
86
+ fontSize: fontSize_sm,
87
+ color: 'inherit',
88
+ cursor: 'pointer',
89
+ backgroundImage: chevronDownSvg,
90
+ backgroundRepeat: 'no-repeat',
91
+ backgroundPosition: 'right 0.5rem center',
92
+ backgroundSize: '1rem',
93
+ '&:focus-visible': {
94
+ outline: '2px solid oklch(var(--btu-theme-primary-400))',
95
+ outlineOffset: '-1px',
96
+ },
97
+ },
98
+ '.btu-pagination-total': {
99
+ fontSize: fontSize_xs,
100
+ color: 'oklch(var(--btu-theme-gray-500))',
101
+ fontWeight: '500',
102
+ whiteSpace: 'nowrap',
103
+ },
104
+ // When size-changer is hidden (empty), push total right next to controls
105
+ '.btu-pagination-size-changer:empty + .btu-pagination-total': {
106
+ marginLeft: 'auto',
107
+ },
108
+ '.btu-pagination-controls': {
109
+ position: 'relative',
110
+ display: 'inline-flex',
111
+ alignItems: 'center',
112
+ marginLeft: 'auto',
113
+ border: '1px solid oklch(var(--btu-theme-gray-300))',
114
+ borderRadius: '0.5rem',
115
+ '& > :first-child': {
116
+ borderTopLeftRadius: 'calc(0.5rem - 1px)',
117
+ borderBottomLeftRadius: 'calc(0.5rem - 1px)',
118
+ },
119
+ '& > :last-child': {
120
+ borderTopRightRadius: 'calc(0.5rem - 1px)',
121
+ borderBottomRightRadius: 'calc(0.5rem - 1px)',
122
+ },
123
+ '& > :focus-visible': {
124
+ zIndex: '1',
125
+ outline: 'none',
126
+ boxShadow: '0 0 0 1px oklch(var(--btu-theme-primary-400)), 0 0 0 4px oklch(var(--btu-theme-primary-100))',
127
+ borderRadius: 'calc(0.5rem - 1px)',
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
+ },
140
+ '.btu-pagination-controls > .btu-button': {
141
+ '--button-border-radius': '0',
142
+ '--button-color': 'var(--pagination-color-background, var(--btu-theme-white, #fff))',
143
+ 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
+ },
150
+ },
151
+ '.btu-pagination-jumper': {
152
+ display: 'inline-flex',
153
+ alignItems: 'center',
154
+ background: 'var(--pagination-color-background, var(--btu-theme-white, #fff))',
155
+ '&:empty': {
156
+ display: 'none',
157
+ },
158
+ '&:not(:empty)': {
159
+ borderRight: '1px solid oklch(var(--btu-theme-gray-200))',
160
+ },
161
+ },
162
+ });
163
+ });
164
+ //# sourceMappingURL=tailwind-plugin-pagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tailwind-plugin-pagination.js","sourceRoot":"","sources":["../src/tailwind-plugin-pagination.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,179 @@
1
+ import plugin from 'tailwindcss/plugin'
2
+ declare let module: any
3
+
4
+ /**
5
+ * Pagination component styles.
6
+ *
7
+ * Class Names:
8
+ *
9
+ * btu-pagination - Root container
10
+ * btu-pagination-hidden - Hidden state (single page / no items)
11
+ * btu-pagination-disabled - Disabled state
12
+ * btu-pagination-loading - Loading state with dimmed controls
13
+ * btu-pagination-nav - Inner nav wrapper
14
+ * btu-pagination-size-changer - Page size select area
15
+ * btu-pagination-select - Native select element
16
+ * btu-pagination-total - "1-10 of 200" display
17
+ * btu-pagination-controls - Button group container
18
+ * btu-pagination-jumper - Slot area for custom jumper content
19
+ *
20
+ * Navigation buttons use btu-button classes (btu-button btu-button-text-hidden
21
+ * btu-button-sm). The controls container overrides
22
+ * border-radius for grouped button appearance.
23
+ *
24
+ * CSS Custom Properties:
25
+ *
26
+ * --pagination-color-background - Select background
27
+ * --pagination-color-foreground - Text/icon color
28
+ */
29
+
30
+ // Inline chevron-down SVG for select background
31
+ const chevronDownSvg = `url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E")`
32
+
33
+ module.exports = plugin(function ({ addComponents, config }) {
34
+ const fontSize_sm = config('theme.fontSize.sm')?.[0] ?? '0.875rem'
35
+ const fontSize_xs = config('theme.fontSize.xs')?.[0] ?? '0.75rem'
36
+
37
+ addComponents({
38
+ '.btu-pagination': {
39
+ display: 'inline-flex',
40
+ alignItems: 'center',
41
+ gap: '0.75rem',
42
+ fontSize: fontSize_sm,
43
+ color: 'var(--pagination-color-foreground, oklch(var(--btu-theme-gray-700)))',
44
+ },
45
+
46
+ '.btu-pagination-hidden': {
47
+ display: 'none',
48
+ },
49
+
50
+ '.btu-pagination-disabled': {
51
+ opacity: '0.5',
52
+ pointerEvents: 'none',
53
+ },
54
+
55
+ '.btu-pagination-loading': {
56
+ pointerEvents: 'none',
57
+ '& .btu-pagination-size-changer': {
58
+ opacity: '0.5',
59
+ },
60
+ '& .btu-pagination-total': {
61
+ opacity: '0.5',
62
+ },
63
+ '& .btu-pagination-controls > .btu-button': {
64
+ opacity: '0.5',
65
+ },
66
+ '& .btu-pagination-controls > btu-circular-progress': {
67
+ position: 'absolute',
68
+ left: '50%',
69
+ top: '50%',
70
+ transform: 'translate(-50%, -50%)',
71
+ zIndex: '1',
72
+ },
73
+ },
74
+
75
+ '.btu-pagination-nav': {
76
+ display: 'flex',
77
+ alignItems: 'center',
78
+ gap: '0.75rem',
79
+ width: '100%',
80
+ },
81
+
82
+ '.btu-pagination-size-changer': {
83
+ display: 'inline-flex',
84
+ alignItems: 'center',
85
+ gap: '0.5rem',
86
+ '&:empty': {
87
+ display: 'none',
88
+ },
89
+ },
90
+
91
+ '.btu-pagination-select': {
92
+ appearance: 'none',
93
+ background: 'var(--pagination-color-background, var(--btu-theme-white, #fff))',
94
+ border: '1px solid oklch(var(--btu-theme-gray-300))',
95
+ borderRadius: '0.5rem',
96
+ padding: '0.375rem 1.75rem 0.375rem 0.5rem',
97
+ fontSize: fontSize_sm,
98
+ color: 'inherit',
99
+ cursor: 'pointer',
100
+ backgroundImage: chevronDownSvg,
101
+ backgroundRepeat: 'no-repeat',
102
+ backgroundPosition: 'right 0.5rem center',
103
+ backgroundSize: '1rem',
104
+ '&:focus-visible': {
105
+ outline: '2px solid oklch(var(--btu-theme-primary-400))',
106
+ outlineOffset: '-1px',
107
+ },
108
+ },
109
+
110
+ '.btu-pagination-total': {
111
+ fontSize: fontSize_xs,
112
+ color: 'oklch(var(--btu-theme-gray-500))',
113
+ fontWeight: '500',
114
+ whiteSpace: 'nowrap',
115
+ },
116
+
117
+ // When size-changer is hidden (empty), push total right next to controls
118
+ '.btu-pagination-size-changer:empty + .btu-pagination-total': {
119
+ marginLeft: 'auto',
120
+ },
121
+
122
+ '.btu-pagination-controls': {
123
+ position: 'relative',
124
+ display: 'inline-flex',
125
+ alignItems: 'center',
126
+ marginLeft: 'auto',
127
+ border: '1px solid oklch(var(--btu-theme-gray-300))',
128
+ borderRadius: '0.5rem',
129
+ '& > :first-child': {
130
+ borderTopLeftRadius: 'calc(0.5rem - 1px)',
131
+ borderBottomLeftRadius: 'calc(0.5rem - 1px)',
132
+ },
133
+ '& > :last-child': {
134
+ borderTopRightRadius: 'calc(0.5rem - 1px)',
135
+ borderBottomRightRadius: 'calc(0.5rem - 1px)',
136
+ },
137
+ '& > :focus-visible': {
138
+ zIndex: '1',
139
+ outline: 'none',
140
+ boxShadow: '0 0 0 1px oklch(var(--btu-theme-primary-400)), 0 0 0 4px oklch(var(--btu-theme-primary-100))',
141
+ borderRadius: 'calc(0.5rem - 1px)',
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
+ },
154
+
155
+ '.btu-pagination-controls > .btu-button': {
156
+ '--button-border-radius': '0',
157
+ '--button-color': 'var(--pagination-color-background, var(--btu-theme-white, #fff))',
158
+ 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
+ },
165
+ },
166
+
167
+ '.btu-pagination-jumper': {
168
+ display: 'inline-flex',
169
+ alignItems: 'center',
170
+ background: 'var(--pagination-color-background, var(--btu-theme-white, #fff))',
171
+ '&:empty': {
172
+ display: 'none',
173
+ },
174
+ '&:not(:empty)': {
175
+ borderRight: '1px solid oklch(var(--btu-theme-gray-200))',
176
+ },
177
+ },
178
+ })
179
+ })
@@ -705,10 +705,7 @@ declare const _default: {
705
705
  starFilled: string;
706
706
  };
707
707
  };
708
- plugins: {
709
- handler: import("tailwindcss/types/config").PluginCreator;
710
- config?: Partial<import("tailwindcss/types/config").Config>;
711
- }[];
708
+ plugins: any[];
712
709
  };
713
710
  export default _default;
714
711
  //# sourceMappingURL=tailwind.config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tailwind.config.d.ts","sourceRoot":"","sources":["../src/tailwind.config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCA6c8B;gBAAE,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAA;aAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAxchE,wBAooBkB"}
1
+ {"version":3,"file":"tailwind.config.d.ts","sourceRoot":"","sources":["../src/tailwind.config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCA6c8B;gBAAE,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAA;aAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAxchE,wBAqoBkB"}
@@ -623,6 +623,7 @@ export default {
623
623
  plugin(({ addVariant }) => {
624
624
  addVariant('touch-device', '@media (hover: none) or (pointer: coarse)');
625
625
  }),
626
+ require('./tailwind-plugin-pagination.ts'),
626
627
  ],
627
628
  };
628
629
  //# sourceMappingURL=tailwind.config.js.map