@brightspot/ui 6.3.5 → 6.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.
- package/README.md +2 -0
- package/dist/components/popover/Popover.d.ts +21 -0
- package/dist/components/popover/Popover.d.ts.map +1 -1
- package/dist/components/popover/Popover.js +85 -0
- package/dist/components/popover/Popover.js.map +1 -1
- package/dist/components/tabs/Tab.d.ts +1 -1
- package/dist/components/tabs/Tab.js +1 -1
- package/dist/custom-elements.json +14 -1
- package/dist/storybook/assets/{ActionBar.stories-CgkvHW27.js → ActionBar.stories-CyrWbZkU.js} +1 -1
- package/dist/storybook/assets/{ActionItem.stories-CyxwhrvR.js → ActionItem.stories-D289PqhK.js} +1 -1
- package/dist/storybook/assets/{AiSparkle.stories-h2LSw10e.js → AiSparkle.stories-Dej2Wktc.js} +1 -1
- package/dist/storybook/assets/{Avatar.stories-CQ3eFTbI.js → Avatar.stories-DGUhUkwq.js} +1 -1
- package/dist/storybook/assets/{AvatarGroup.stories-CIyZOd7R.js → AvatarGroup.stories-CPwRaMIK.js} +1 -1
- package/dist/storybook/assets/{Badge.stories-CwPkYUuY.js → Badge.stories-0KzitC2n.js} +1 -1
- package/dist/storybook/assets/{Banner.stories-B7AhWymc.js → Banner.stories-DNtqnXAp.js} +1 -1
- package/dist/storybook/assets/{Button-fLz-Mqji.js → Button-CWHtTXwM.js} +1 -1
- package/dist/storybook/assets/{Button.stories-Bj_cB5Tr.js → Button.stories-Bi-MajOM.js} +1 -1
- package/dist/storybook/assets/{ButtonGroup.stories-DMAr8q3A.js → ButtonGroup.stories-DRVCaM3T.js} +1 -1
- package/dist/storybook/assets/{Card.stories-CouVkvTr.js → Card.stories-Ca21MUf2.js} +1 -1
- package/dist/storybook/assets/{Celebrate.stories-Cai7aITx.js → Celebrate.stories-d4ouDVSf.js} +1 -1
- package/dist/storybook/assets/{Checkbox.stories-BTzuHih7.js → Checkbox.stories-DGYMCoPL.js} +1 -1
- package/dist/storybook/assets/{CircularProgress.stories-DwiMDCrW.js → CircularProgress.stories-TLUKn59S.js} +1 -1
- package/dist/storybook/assets/{ClipboardMixin.stories-BTzKKsAG.js → ClipboardMixin.stories-D4sLLX3A.js} +1 -1
- package/dist/storybook/assets/{Color-6BZIO3FS-z5x4axZs.js → Color-6BZIO3FS-DasxsVys.js} +1 -1
- package/dist/storybook/assets/{Colors.stories-LjQN3QJP.js → Colors.stories-BcaxhrWi.js} +1 -1
- package/dist/storybook/assets/{CombinedEffects.stories-CcWkxBPD.js → CombinedEffects.stories-Da1vPYog.js} +1 -1
- package/dist/storybook/assets/{ComponentStatesMixin-6JmalSeW.js → ComponentStatesMixin-C5-EArF-.js} +1 -1
- package/dist/storybook/assets/{ComponentStatesMixin.stories-wr7wl9D5.js → ComponentStatesMixin.stories-DPp1pnlh.js} +1 -1
- package/dist/storybook/assets/{CopyToClipboard.stories-CBL_GlzJ.js → CopyToClipboard.stories-CrYOAXIE.js} +1 -1
- package/dist/storybook/assets/{Debounce.stories-DDW0347e.js → Debounce.stories-OHpSSOWP.js} +1 -1
- package/dist/storybook/assets/{DocsRenderer-LL677BLK-LHrG4h5r.js → DocsRenderer-LL677BLK-BBjqnKJz.js} +3 -3
- package/dist/storybook/assets/{Dropdown.stories-BixGKdVC.js → Dropdown.stories-Ca_3OzYk.js} +1 -1
- package/dist/storybook/assets/{EmptyState.stories-DYCizkT5.js → EmptyState.stories-IJOBvkeQ.js} +1 -1
- package/dist/storybook/assets/{EscaAvatar.stories-IV0FybUu.js → EscaAvatar.stories-Ca5mrHK5.js} +1 -1
- package/dist/storybook/assets/{Events.stories-9X1B5LFU.js → Events.stories-mk3o4H-1.js} +1 -1
- package/dist/storybook/assets/{Heading.stories-BWFKyeYP.js → Heading.stories-BCmCdDGL.js} +1 -1
- package/dist/storybook/assets/{HueRipple.stories-KJySD4yc.js → HueRipple.stories-DFtimmD-.js} +1 -1
- package/dist/storybook/assets/{Icon.stories-n4-_RBwe.js → Icon.stories-CfsBM1vA.js} +1 -1
- package/dist/storybook/assets/{IconButton.stories--cc9Az0q.js → IconButton.stories-BqMbwr3s.js} +1 -1
- package/dist/storybook/assets/{LinearProgress.stories-CXISMQqr.js → LinearProgress.stories-BWdemzi0.js} +1 -1
- package/dist/storybook/assets/{Message.stories-DCgZ9H2r.js → Message.stories-Z_H9PmGg.js} +1 -1
- package/dist/storybook/assets/{OnFindMixin.stories-DwYEl4q4.js → OnFindMixin.stories-DmCtF_Py.js} +1 -1
- package/dist/storybook/assets/{Pagination.stories-B8AqV3jI.js → Pagination.stories-BbiH-XdZ.js} +1 -1
- package/dist/storybook/assets/{Popover.stories-Dj8TUysk.js → Popover.stories-bxWb2l8c.js} +97 -14
- package/dist/storybook/assets/{ReadyMixin-B1y8EBLz.js → ReadyMixin-DehOcbYB.js} +1 -1
- package/dist/storybook/assets/{RovingTabindexMixin.stories-BTYV78Cy.js → RovingTabindexMixin.stories-PDi3Gbmt.js} +1 -1
- package/dist/storybook/assets/{Rtc.stories-CiQ4OgEf.js → Rtc.stories-fVPUs7VO.js} +1 -1
- package/dist/storybook/assets/{ScrollShadow.stories-BRpbl9WU.js → ScrollShadow.stories-D7MTe49h.js} +1 -1
- package/dist/storybook/assets/{Switch.stories-Dfw56-LB.js → Switch.stories-_Xgp_9V4.js} +1 -1
- package/dist/storybook/assets/{Tab.stories-DCIPSPwr.js → Tab.stories-DgO_oZX0.js} +4 -4
- package/dist/storybook/assets/{Tabs.stories-DrT2D2oW.js → Tabs.stories-ChN1szFL.js} +1 -1
- package/dist/storybook/assets/{Throttle.stories-B5Y8K9s3.js → Throttle.stories-ClFkiAMe.js} +1 -1
- package/dist/storybook/assets/{Tooltip.stories-CUjm8cuW.js → Tooltip.stories-BHOdZEw2.js} +1 -1
- package/dist/storybook/assets/{Upload.stories-Dt7V8qIe.js → Upload.stories-BLs0X2F6.js} +1 -1
- package/dist/storybook/assets/{UploadItem.stories-DSXxGs8M.js → UploadItem.stories-CHCpPL7t.js} +1 -1
- package/dist/storybook/assets/{Welcome.stories-BDFQb8oF.js → Welcome.stories-DLoiQCnZ.js} +1 -1
- package/dist/storybook/assets/{Widget.stories-CQnE1dST.js → Widget.stories-Bk4jjx7Q.js} +1 -1
- package/dist/storybook/assets/{WithTooltip-65CFNBJE-D1OYJPzp.js → WithTooltip-65CFNBJE-Ckgk7wzk.js} +1 -1
- package/dist/storybook/assets/{blocks-Z0quNc1U.js → blocks-wSKOBuKH.js} +5 -5
- package/dist/storybook/assets/{formatter-EIJCOSYU-DwWzDvJC.js → formatter-EIJCOSYU-DEpJ5Gq0.js} +1 -1
- package/dist/storybook/assets/if-defined-DphVHb7j.js +1 -0
- package/dist/storybook/assets/{iframe-WTEmYHJj.js → iframe-BSHPpSig.js} +4 -4
- package/dist/storybook/assets/iframe-D7jBrFjV.css +1 -0
- package/dist/storybook/assets/{index-BvPCa7_B.js → index-Cn8vvE6a.js} +1 -1
- package/dist/storybook/assets/{onFind-CqIRRMTv.js → onFind-DJOHkvQ2.js} +1 -1
- package/dist/storybook/assets/{onFind.stories-C4PPQTaQ.js → onFind.stories-CTmXCV_g.js} +1 -1
- package/dist/storybook/assets/{onRemove.stories-BGFCh6DN.js → onRemove.stories-r7-2gQn3.js} +1 -1
- package/dist/storybook/assets/{onVisible.stories-4ni7syfJ.js → onVisible.stories-B_Lx-0SL.js} +1 -1
- package/dist/storybook/assets/{style-map-BhvFBtuB.js → style-map-uSz4USKK.js} +1 -1
- package/dist/storybook/assets/{syntaxhighlighter-ED5Y7EFY-D_cJwnoJ.js → syntaxhighlighter-ED5Y7EFY-D36nxrU2.js} +1 -1
- package/dist/storybook/iframe.html +2 -2
- package/dist/storybook/index.json +1 -1
- package/dist/storybook/project.json +1 -1
- package/dist/tailwind-plugin-badge.js +2 -2
- package/dist/tailwind-plugin-badge.ts +3 -3
- package/dist/tailwind-plugin-button-group.js +50 -27
- package/dist/tailwind-plugin-button-group.js.map +1 -1
- package/dist/tailwind-plugin-button-group.ts +61 -33
- package/dist/tailwind-plugin-button.js +15 -5
- package/dist/tailwind-plugin-button.js.map +1 -1
- package/dist/tailwind-plugin-button.ts +16 -5
- package/dist/tailwind-plugin-pagination.js +4 -1
- package/dist/tailwind-plugin-pagination.js.map +1 -1
- package/dist/tailwind-plugin-pagination.ts +4 -1
- package/dist/tailwind-plugin-popover.js +90 -23
- package/dist/tailwind-plugin-popover.js.map +1 -1
- package/dist/tailwind-plugin-popover.ts +95 -25
- package/dist/tailwind-plugin-tooltip.js +3 -0
- package/dist/tailwind-plugin-tooltip.js.map +1 -1
- package/dist/tailwind-plugin-tooltip.ts +3 -0
- package/docs/components/ActionBar.md +9 -8
- package/docs/components/Avatar.md +20 -19
- package/docs/components/AvatarGroup.md +5 -4
- package/docs/components/Badge.md +8 -7
- package/docs/components/ButtonGroup.md +12 -11
- package/docs/components/Icon.md +8 -7
- package/docs/components/Pagination.md +19 -18
- package/docs/components/Popover.md +21 -17
- package/docs/components/Tab.md +13 -12
- package/docs/components/Tabs.md +13 -12
- package/package.json +1 -1
- package/src/legacy/tool-ui/src/Admin.css +10 -1
- package/src/legacy/tool-ui/src/CodeMirror.css +4 -3
- package/src/legacy/tool-ui/src/ContentInputGroup.css +86 -62
- package/src/legacy/tool-ui/src/ContentInputGroup.ts +33 -0
- package/src/legacy/tool-ui/src/Conversation.ts +3 -0
- package/src/legacy/tool-ui/src/Entry.ts +1 -0
- package/src/legacy/tool-ui/src/Global.d.ts +3 -0
- package/src/legacy/tool-ui/src/LocationMap.css +106 -2
- package/src/legacy/tool-ui/src/MenuView.css +1 -2
- package/src/legacy/tool-ui/src/NewTabLinks.ts +25 -0
- package/src/legacy/tool-ui/src/Notification.css +20 -2
- package/src/legacy/tool-ui/src/Notifications.ts +5 -0
- package/src/legacy/tool-ui/src/RepeatableContentInputGroup.css +28 -21
- package/src/legacy/tool-ui/src/RepeatableContentSelector.css +50 -50
- package/src/legacy/tool-ui/src/SearchResult.css +5 -0
- package/src/legacy/tool-ui/src/Suggestions.css +1 -1
- package/src/legacy/tool-ui/src/form/CodeInput/CodeMirror.ts +0 -1
- package/src/legacy/tool-ui/src/main/webapp/dist/130.8cc1870de35c48fb16bc.js +1 -0
- package/src/legacy/tool-ui/src/main/webapp/dist/CodeMirror.deeefe0da1691332b8d9.js +1 -0
- package/src/legacy/tool-ui/src/main/webapp/dist/{RTEProseMirror.420477026fe7508c83cf.js → RTEProseMirror.3ab7e02ee7ea42af94e5.js} +6 -6
- package/src/legacy/tool-ui/src/main/webapp/dist/iframeResizer.contentWindow.min.ea954ff5c2278da22eb4.js +2 -0
- package/src/legacy/tool-ui/src/main/webapp/dist/iframeResizer.contentWindow.min.ea954ff5c2278da22eb4.js.LICENSE.txt +7 -0
- package/src/legacy/tool-ui/src/main/webapp/dist/lucide.a0ab0ebd23916ff7c28c.woff2 +0 -0
- package/src/legacy/tool-ui/src/main/webapp/dist/{v4.f3d988f6f7e664a8ac1f.js → v4.77773a9500063c0e2e37.js} +6 -6
- package/src/legacy/tool-ui/src/main/webapp/dist/v4.d48271241dbf3eecc14e.css +3 -0
- package/src/legacy/tool-ui/src/main/webapp/dist/v5.78c144a01e1cf543642b.css +5 -0
- package/src/legacy/tool-ui/src/main/webapp/dist/{v5.9aca525c9803b3173f73.js → v5.9f309b0ce98df4565933.js} +6 -6
- package/src/legacy/tool-ui/src/main/webapp/v4/ContentEdit.less +1 -0
- package/src/legacy/tool-ui/src/main/webapp/v4/Entry.less +7 -0
- package/src/legacy/tool-ui/src/main/webapp/v4/SearchResult.less +7 -0
- package/src/legacy/tool-ui/src/v5.css +9 -0
- package/src/legacy/tool-ui/src/v5.ts +13 -0
- package/dist/storybook/assets/if-defined-Dl8MuiCE.js +0 -1
- package/dist/storybook/assets/iframe-HDp5BmO_.css +0 -1
- package/src/legacy/tool-ui/src/main/webapp/dist/2825.c1342ac2662d11fd4125.js +0 -1
- package/src/legacy/tool-ui/src/main/webapp/dist/CodeMirror.5ddffe054374f883d6f8.js +0 -1
- package/src/legacy/tool-ui/src/main/webapp/dist/v4.05d6a78ae435b930dd53.css +0 -3
- package/src/legacy/tool-ui/src/main/webapp/dist/v5.95b7459d6c50c61b6480.css +0 -5
- /package/src/legacy/tool-ui/src/main/webapp/dist/{RTEProseMirror.420477026fe7508c83cf.js.LICENSE.txt → RTEProseMirror.3ab7e02ee7ea42af94e5.js.LICENSE.txt} +0 -0
- /package/src/legacy/tool-ui/src/main/webapp/dist/{v4.f3d988f6f7e664a8ac1f.js.LICENSE.txt → v4.77773a9500063c0e2e37.js.LICENSE.txt} +0 -0
- /package/src/legacy/tool-ui/src/main/webapp/dist/{v5.9aca525c9803b3173f73.js.LICENSE.txt → v5.9f309b0ce98df4565933.js.LICENSE.txt} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"generatedAt":
|
|
1
|
+
{"generatedAt":1789748067369,"hasCustomBabel":false,"hasCustomWebpack":false,"hasStaticDirs":true,"hasStorybookEslint":true,"refCount":0,"knownPackages":{"testPackages":{"@storybook/addon-vitest":"10.2.12","@vitest/browser-playwright":"4.0.18","playwright":"1.58.2","vitest":"4.0.18"},"stylingPackages":{"tailwindcss":"^3.4.13","autoprefixer":"10.4.21"}},"hasRouterPackage":false,"packageManager":{"type":"yarn","agent":"yarn","nodeLinker":"undefined"},"preview":{"usesGlobals":true},"framework":{"name":"@storybook/web-components-vite","options":{}},"builder":"@storybook/builder-vite","renderer":"@storybook/web-components","portableStoriesFileCount":0,"applicationFileCount":6,"storybookVersion":"10.2.12","storybookVersionSpecifier":"10.2.12","language":"typescript","storybookPackages":{"@storybook/addon-themes":{"version":"10.2.12"},"@storybook/web-components-vite":{"version":"10.2.12"},"@wc-toolkit/storybook-helpers":{"version":"10.0.0"},"eslint-plugin-storybook":{"version":"10.0.7"},"storybook":{}},"addons":{"@storybook/addon-docs":{"version":"10.2.12"},"@storybook/addon-vitest":{"version":"10.2.12"}},"packageJsonType":"module"}
|
|
@@ -55,7 +55,7 @@ module.exports = plugin(function ({ addBase, addComponents, theme, e, matchUtili
|
|
|
55
55
|
[`${className}-${e(key)}`]: {
|
|
56
56
|
'--icon-size': iconSizes['xs'],
|
|
57
57
|
backgroundColor: fill,
|
|
58
|
-
color: `var(--badge-color-foreground, oklch(var(--btu-theme-${key}-
|
|
58
|
+
color: `var(--badge-color-foreground, oklch(var(--btu-theme-${key}-800)))`,
|
|
59
59
|
textDecoration: 'underline',
|
|
60
60
|
textDecorationColor: `var(--badge-color-background, oklch(var(--btu-theme-${key}-50)))`,
|
|
61
61
|
},
|
|
@@ -75,7 +75,7 @@ module.exports = plugin(function ({ addBase, addComponents, theme, e, matchUtili
|
|
|
75
75
|
// the fill/text/underline all read, so one declaration flips all three
|
|
76
76
|
// coherently (and the busy pill-fill layer follows the fill var).
|
|
77
77
|
[`${className}-solid${className}-${e(key)}`]: {
|
|
78
|
-
'--badge-color-background': `oklch(var(--btu-theme-${key}-
|
|
78
|
+
'--badge-color-background': `oklch(var(--btu-theme-${key}-800))`,
|
|
79
79
|
'--badge-color-foreground': `oklch(var(--btu-theme-${key}-50))`,
|
|
80
80
|
},
|
|
81
81
|
// Solid busy: foreground and background are swapped versus soft, so reuse
|
|
@@ -12,7 +12,7 @@ declare let module: any
|
|
|
12
12
|
* btu-badge-[sm|md|lg] - Size of the Badge.
|
|
13
13
|
* btu-badge-[$theme-colors] - Color of the Badge (includes text-decoration-color support).
|
|
14
14
|
* btu-badge-solid - Solid fill: swaps the resting foreground/background shades
|
|
15
|
-
* (fill -> X-
|
|
15
|
+
* (fill -> X-800, text -> X-50) for a filled pill instead of
|
|
16
16
|
* the default soft fill. Combine with a btu-badge-<color>
|
|
17
17
|
* class; on its own it has no effect.
|
|
18
18
|
*
|
|
@@ -113,7 +113,7 @@ module.exports = plugin(
|
|
|
113
113
|
[`${className}-${e(key)}`]: {
|
|
114
114
|
'--icon-size': iconSizes['xs'],
|
|
115
115
|
backgroundColor: fill,
|
|
116
|
-
color: `var(--badge-color-foreground, oklch(var(--btu-theme-${key}-
|
|
116
|
+
color: `var(--badge-color-foreground, oklch(var(--btu-theme-${key}-800)))`,
|
|
117
117
|
textDecoration: 'underline',
|
|
118
118
|
textDecorationColor: `var(--badge-color-background, oklch(var(--btu-theme-${key}-50)))`,
|
|
119
119
|
},
|
|
@@ -133,7 +133,7 @@ module.exports = plugin(
|
|
|
133
133
|
// the fill/text/underline all read, so one declaration flips all three
|
|
134
134
|
// coherently (and the busy pill-fill layer follows the fill var).
|
|
135
135
|
[`${className}-solid${className}-${e(key)}`]: {
|
|
136
|
-
'--badge-color-background': `oklch(var(--btu-theme-${key}-
|
|
136
|
+
'--badge-color-background': `oklch(var(--btu-theme-${key}-800))`,
|
|
137
137
|
'--badge-color-foreground': `oklch(var(--btu-theme-${key}-50))`,
|
|
138
138
|
},
|
|
139
139
|
// Solid busy: foreground and background are swapped versus soft, so reuse
|
|
@@ -7,11 +7,14 @@ import plugin from 'tailwindcss/plugin';
|
|
|
7
7
|
* children. `btu-icon-button` uses `display: contents` so its inner `<button>`
|
|
8
8
|
* participates directly in the group's flex layout.
|
|
9
9
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* `<
|
|
14
|
-
*
|
|
10
|
+
* Grouped controls may be `<button>`, `<btu-icon-button>`, or an anchor carrying
|
|
11
|
+
* `.btu-button` (`<a class="btu-button">`) — a segmented view-switcher made of real
|
|
12
|
+
* links is a normal pattern, so anchors get the connected corners and the selection
|
|
13
|
+
* treatment too. A bare `<a>` without `.btu-button` is left alone.
|
|
14
|
+
*
|
|
15
|
+
* Selected state is read per element type: `aria-pressed="true"` on a button, and
|
|
16
|
+
* `aria-current` (any value but `false`) on an anchor, which is the correct attribute
|
|
17
|
+
* for a link marking the active destination.
|
|
15
18
|
*
|
|
16
19
|
* Selection uses a circular wipe transition: a `::after` pseudo-element with
|
|
17
20
|
* `clip-path: circle()` reveals the selection color from the center outward.
|
|
@@ -35,6 +38,26 @@ module.exports = plugin(function ({ addComponents, addBase }) {
|
|
|
35
38
|
const allSelected = `${connected}[data-all-selected]`;
|
|
36
39
|
const borderColor = 'var(--button-group-border-color, oklch(var(--btu-theme-gray-300)))';
|
|
37
40
|
const outerRadius = 'var(--button-group-border-radius, 0.5rem)';
|
|
41
|
+
// A grouped control is normally a <button>, but a navigational group is built from
|
|
42
|
+
// links, and those need the same connected and selected treatment. An anchor must
|
|
43
|
+
// carry .btu-button to opt in — a bare <a> in a group isn't a control.
|
|
44
|
+
//
|
|
45
|
+
// Each element type keeps its own selected-state signal: aria-pressed belongs to
|
|
46
|
+
// toggle buttons, aria-current to a link marking the active destination. Rules are
|
|
47
|
+
// emitted as comma-separated selectors rather than :is(button, a.btu-button) so the
|
|
48
|
+
// existing button rules keep their original specificity.
|
|
49
|
+
//
|
|
50
|
+
// The anchor is matched as `a[class~="btu-button"]`, not `a.btu-button`. `@apply
|
|
51
|
+
// btu-button` clones every rule whose selector references the `.btu-button` class,
|
|
52
|
+
// once per apply-site — the legacy tool-ui has ~200 of them, so the class form
|
|
53
|
+
// multiplied this plugin's output ~198x and put 1.27 MB into v5.css. The attribute
|
|
54
|
+
// form selects the same elements at the same specificity without being treated as a
|
|
55
|
+
// reference to the component. See test/css-bloat.
|
|
56
|
+
const ITEMS = [
|
|
57
|
+
{ sel: 'button', armed: '[aria-pressed]', on: '[aria-pressed="true"]' },
|
|
58
|
+
{ sel: 'a[class~="btu-button"]', armed: '[aria-current]', on: '[aria-current]:not([aria-current="false"])' },
|
|
59
|
+
];
|
|
60
|
+
const over = (tpl) => ITEMS.map(tpl).join(', ');
|
|
38
61
|
const components = {
|
|
39
62
|
// ─── Base ─────────────────────────────────────────────────────────
|
|
40
63
|
'.btu-button-group': {
|
|
@@ -57,30 +80,30 @@ module.exports = plugin(function ({ addComponents, addBase }) {
|
|
|
57
80
|
},
|
|
58
81
|
// ─── slot="end" auto-margin ──────────────────────────────────────
|
|
59
82
|
// Direct children and inner button (for display:contents wrappers like btu-icon-button)
|
|
60
|
-
|
|
83
|
+
[over(i => `btu-button-group[orientation="horizontal"] > [slot="end"], btu-button-group[orientation="horizontal"] > [slot="end"] > ${i.sel}`)]: {
|
|
61
84
|
marginInlineStart: 'auto',
|
|
62
85
|
},
|
|
63
|
-
|
|
86
|
+
[over(i => `btu-button-group[orientation="vertical"] > [slot="end"], btu-button-group[orientation="vertical"] > [slot="end"] > ${i.sel}`)]: {
|
|
64
87
|
marginBlockStart: 'auto',
|
|
65
88
|
},
|
|
66
89
|
// ─── Size propagation via CSS ─────────────────────────────────────
|
|
67
|
-
|
|
90
|
+
[over(i => `btu-button-group[size="small"] ${i.sel}`)]: {
|
|
68
91
|
padding: 'var(--button-padding-sm)',
|
|
69
92
|
width: 'var(--button-size-sm, auto)',
|
|
70
93
|
height: 'var(--button-size-sm, auto)',
|
|
71
94
|
},
|
|
72
|
-
|
|
95
|
+
[over(i => `btu-button-group[size="medium"] ${i.sel}`)]: {
|
|
73
96
|
padding: 'var(--button-padding-md)',
|
|
74
97
|
width: 'var(--button-size-md, auto)',
|
|
75
98
|
height: 'var(--button-size-md, auto)',
|
|
76
99
|
},
|
|
77
|
-
|
|
100
|
+
[over(i => `btu-button-group[size="large"] ${i.sel}`)]: {
|
|
78
101
|
padding: 'var(--button-padding-lg)',
|
|
79
102
|
width: 'var(--button-size-lg, auto)',
|
|
80
103
|
height: 'var(--button-size-lg, auto)',
|
|
81
104
|
},
|
|
82
105
|
// ─── Connected: convert outline buttons to border-based ───────────
|
|
83
|
-
[`${connected}
|
|
106
|
+
[over(i => `${connected} ${i.sel}`)]: {
|
|
84
107
|
outline: 'none',
|
|
85
108
|
border: `1px solid ${borderColor}`,
|
|
86
109
|
transition: 'box-shadow 100ms ease, filter 100ms ease',
|
|
@@ -100,13 +123,13 @@ module.exports = plugin(function ({ addComponents, addBase }) {
|
|
|
100
123
|
// so the button itself must stay at its normal (non-pressed) color.
|
|
101
124
|
// Selection colors default to the button's own --button-tint-* shades,
|
|
102
125
|
// overridable via the documented --button-group-* properties.
|
|
103
|
-
|
|
126
|
+
[over(i => `.btu-button-group ${i.sel}${i.armed}`)]: {
|
|
104
127
|
'--button-pressed-color': 'initial',
|
|
105
128
|
'--button-pressed-text-color': 'initial',
|
|
106
129
|
isolation: 'isolate',
|
|
107
130
|
transition: 'color 150ms ease-in',
|
|
108
131
|
},
|
|
109
|
-
|
|
132
|
+
[over(i => `.btu-button-group ${i.sel}${i.armed}::after`)]: {
|
|
110
133
|
content: '""',
|
|
111
134
|
position: 'absolute',
|
|
112
135
|
inset: '0',
|
|
@@ -117,64 +140,64 @@ module.exports = plugin(function ({ addComponents, addBase }) {
|
|
|
117
140
|
transition: 'clip-path 150ms ease-in',
|
|
118
141
|
},
|
|
119
142
|
// ─── Selection wipe: active state ─────────────────────────────────
|
|
120
|
-
|
|
143
|
+
[over(i => `.btu-button-group ${i.sel}${i.on}`)]: {
|
|
121
144
|
color: 'var(--button-group-selection-color, var(--button-tint-strong))',
|
|
122
145
|
transition: 'color 200ms ease-out',
|
|
123
146
|
},
|
|
124
|
-
|
|
147
|
+
[over(i => `.btu-button-group ${i.sel}${i.on}::after`)]: {
|
|
125
148
|
clipPath: 'circle(75% at center)',
|
|
126
149
|
transition: 'clip-path 200ms ease-out',
|
|
127
150
|
},
|
|
128
151
|
// ─── Reduced motion ─────────────────────────────────────────────────
|
|
129
152
|
'@media (prefers-reduced-motion: reduce)': {
|
|
130
|
-
|
|
153
|
+
[over(i => `.btu-button-group ${i.sel}${i.armed}`)]: {
|
|
131
154
|
transition: 'color 0.01ms ease',
|
|
132
155
|
},
|
|
133
|
-
|
|
156
|
+
[over(i => `.btu-button-group ${i.sel}${i.armed}::after`)]: {
|
|
134
157
|
transition: 'clip-path 0.01ms ease',
|
|
135
158
|
},
|
|
136
|
-
[`${allSelected}
|
|
159
|
+
[over(i => `${allSelected} ${i.sel}${i.on}`)]: {
|
|
137
160
|
animation: 'none',
|
|
138
161
|
},
|
|
139
162
|
},
|
|
140
163
|
// ─── Connected variant — horizontal ───────────────────────────────
|
|
141
|
-
[`${connectedH}
|
|
164
|
+
[over(i => `${connectedH} ${i.sel}`)]: {
|
|
142
165
|
borderRadius: '0',
|
|
143
166
|
marginInlineEnd: '-1px',
|
|
144
167
|
position: 'relative',
|
|
145
|
-
'&:hover, &:focus-visible, &:active, &[aria-pressed="true"]': {
|
|
168
|
+
'&:hover, &:focus-visible, &:active, &[aria-pressed="true"], &[aria-current]:not([aria-current="false"])': {
|
|
146
169
|
zIndex: '1',
|
|
147
170
|
},
|
|
148
171
|
'&:focus-visible': {
|
|
149
172
|
zIndex: '2',
|
|
150
173
|
},
|
|
151
174
|
},
|
|
152
|
-
[`${connectedH} > :first-child:is(
|
|
175
|
+
[over(i => `${connectedH} > :first-child:is(${i.sel}), ${connectedH} > :first-child > ${i.sel}`)]: {
|
|
153
176
|
borderStartStartRadius: outerRadius,
|
|
154
177
|
borderEndStartRadius: outerRadius,
|
|
155
178
|
},
|
|
156
|
-
[`${connectedH} > :last-child:is(
|
|
179
|
+
[over(i => `${connectedH} > :last-child:is(${i.sel}), ${connectedH} > :last-child > ${i.sel}`)]: {
|
|
157
180
|
borderStartEndRadius: outerRadius,
|
|
158
181
|
borderEndEndRadius: outerRadius,
|
|
159
182
|
marginInlineEnd: '0',
|
|
160
183
|
},
|
|
161
184
|
// ─── Connected variant — vertical ─────────────────────────────────
|
|
162
|
-
[`${connectedV}
|
|
185
|
+
[over(i => `${connectedV} ${i.sel}`)]: {
|
|
163
186
|
borderRadius: '0',
|
|
164
187
|
marginBlockEnd: '-1px',
|
|
165
188
|
position: 'relative',
|
|
166
|
-
'&:hover, &:focus-visible, &:active, &[aria-pressed="true"]': {
|
|
189
|
+
'&:hover, &:focus-visible, &:active, &[aria-pressed="true"], &[aria-current]:not([aria-current="false"])': {
|
|
167
190
|
zIndex: '1',
|
|
168
191
|
},
|
|
169
192
|
'&:focus-visible': {
|
|
170
193
|
zIndex: '2',
|
|
171
194
|
},
|
|
172
195
|
},
|
|
173
|
-
[`${connectedV} > :first-child:is(
|
|
196
|
+
[over(i => `${connectedV} > :first-child:is(${i.sel}), ${connectedV} > :first-child > ${i.sel}`)]: {
|
|
174
197
|
borderStartStartRadius: outerRadius,
|
|
175
198
|
borderStartEndRadius: outerRadius,
|
|
176
199
|
},
|
|
177
|
-
[`${connectedV} > :last-child:is(
|
|
200
|
+
[over(i => `${connectedV} > :last-child:is(${i.sel}), ${connectedV} > :last-child > ${i.sel}`)]: {
|
|
178
201
|
borderEndStartRadius: outerRadius,
|
|
179
202
|
borderEndEndRadius: outerRadius,
|
|
180
203
|
marginBlockEnd: '0',
|
|
@@ -188,7 +211,7 @@ module.exports = plugin(function ({ addComponents, addBase }) {
|
|
|
188
211
|
};
|
|
189
212
|
// ─── All-selected shimmer (connected only) ─────────────────────────
|
|
190
213
|
// Text color pulse + border color pulse on each button, staggered.
|
|
191
|
-
components[`${allSelected}
|
|
214
|
+
components[over(i => `${allSelected} ${i.sel}${i.on}`)] = {
|
|
192
215
|
animation: 'btu-shimmer-all 500ms ease-in-out both',
|
|
193
216
|
animationDelay: 'calc((var(--_btn-index, 1) - 1) * 100ms)',
|
|
194
217
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tailwind-plugin-button-group.js","sourceRoot":"","sources":["../src/tailwind-plugin-button-group.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAA;AAIvC
|
|
1
|
+
{"version":3,"file":"tailwind-plugin-button-group.js","sourceRoot":"","sources":["../src/tailwind-plugin-button-group.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,11 +10,14 @@ declare let module: any
|
|
|
10
10
|
* children. `btu-icon-button` uses `display: contents` so its inner `<button>`
|
|
11
11
|
* participates directly in the group's flex layout.
|
|
12
12
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* `<
|
|
17
|
-
*
|
|
13
|
+
* Grouped controls may be `<button>`, `<btu-icon-button>`, or an anchor carrying
|
|
14
|
+
* `.btu-button` (`<a class="btu-button">`) — a segmented view-switcher made of real
|
|
15
|
+
* links is a normal pattern, so anchors get the connected corners and the selection
|
|
16
|
+
* treatment too. A bare `<a>` without `.btu-button` is left alone.
|
|
17
|
+
*
|
|
18
|
+
* Selected state is read per element type: `aria-pressed="true"` on a button, and
|
|
19
|
+
* `aria-current` (any value but `false`) on an anchor, which is the correct attribute
|
|
20
|
+
* for a link marking the active destination.
|
|
18
21
|
*
|
|
19
22
|
* Selection uses a circular wipe transition: a `::after` pseudo-element with
|
|
20
23
|
* `clip-path: circle()` reveals the selection color from the center outward.
|
|
@@ -40,6 +43,27 @@ module.exports = plugin(function ({ addComponents, addBase }) {
|
|
|
40
43
|
const borderColor = 'var(--button-group-border-color, oklch(var(--btu-theme-gray-300)))'
|
|
41
44
|
const outerRadius = 'var(--button-group-border-radius, 0.5rem)'
|
|
42
45
|
|
|
46
|
+
// A grouped control is normally a <button>, but a navigational group is built from
|
|
47
|
+
// links, and those need the same connected and selected treatment. An anchor must
|
|
48
|
+
// carry .btu-button to opt in — a bare <a> in a group isn't a control.
|
|
49
|
+
//
|
|
50
|
+
// Each element type keeps its own selected-state signal: aria-pressed belongs to
|
|
51
|
+
// toggle buttons, aria-current to a link marking the active destination. Rules are
|
|
52
|
+
// emitted as comma-separated selectors rather than :is(button, a.btu-button) so the
|
|
53
|
+
// existing button rules keep their original specificity.
|
|
54
|
+
//
|
|
55
|
+
// The anchor is matched as `a[class~="btu-button"]`, not `a.btu-button`. `@apply
|
|
56
|
+
// btu-button` clones every rule whose selector references the `.btu-button` class,
|
|
57
|
+
// once per apply-site — the legacy tool-ui has ~200 of them, so the class form
|
|
58
|
+
// multiplied this plugin's output ~198x and put 1.27 MB into v5.css. The attribute
|
|
59
|
+
// form selects the same elements at the same specificity without being treated as a
|
|
60
|
+
// reference to the component. See test/css-bloat.
|
|
61
|
+
const ITEMS = [
|
|
62
|
+
{ sel: 'button', armed: '[aria-pressed]', on: '[aria-pressed="true"]' },
|
|
63
|
+
{ sel: 'a[class~="btu-button"]', armed: '[aria-current]', on: '[aria-current]:not([aria-current="false"])' },
|
|
64
|
+
]
|
|
65
|
+
const over = (tpl: (i: (typeof ITEMS)[number]) => string) => ITEMS.map(tpl).join(', ')
|
|
66
|
+
|
|
43
67
|
const components: CSSRuleObject = {
|
|
44
68
|
// ─── Base ─────────────────────────────────────────────────────────
|
|
45
69
|
'.btu-button-group': {
|
|
@@ -66,34 +90,38 @@ module.exports = plugin(function ({ addComponents, addBase }) {
|
|
|
66
90
|
|
|
67
91
|
// ─── slot="end" auto-margin ──────────────────────────────────────
|
|
68
92
|
// Direct children and inner button (for display:contents wrappers like btu-icon-button)
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
93
|
+
[over(
|
|
94
|
+
i =>
|
|
95
|
+
`btu-button-group[orientation="horizontal"] > [slot="end"], btu-button-group[orientation="horizontal"] > [slot="end"] > ${i.sel}`,
|
|
96
|
+
)]: {
|
|
97
|
+
marginInlineStart: 'auto',
|
|
98
|
+
},
|
|
99
|
+
[over(
|
|
100
|
+
i =>
|
|
101
|
+
`btu-button-group[orientation="vertical"] > [slot="end"], btu-button-group[orientation="vertical"] > [slot="end"] > ${i.sel}`,
|
|
102
|
+
)]: {
|
|
103
|
+
marginBlockStart: 'auto',
|
|
104
|
+
},
|
|
77
105
|
|
|
78
106
|
// ─── Size propagation via CSS ─────────────────────────────────────
|
|
79
|
-
|
|
107
|
+
[over(i => `btu-button-group[size="small"] ${i.sel}`)]: {
|
|
80
108
|
padding: 'var(--button-padding-sm)',
|
|
81
109
|
width: 'var(--button-size-sm, auto)',
|
|
82
110
|
height: 'var(--button-size-sm, auto)',
|
|
83
111
|
},
|
|
84
|
-
|
|
112
|
+
[over(i => `btu-button-group[size="medium"] ${i.sel}`)]: {
|
|
85
113
|
padding: 'var(--button-padding-md)',
|
|
86
114
|
width: 'var(--button-size-md, auto)',
|
|
87
115
|
height: 'var(--button-size-md, auto)',
|
|
88
116
|
},
|
|
89
|
-
|
|
117
|
+
[over(i => `btu-button-group[size="large"] ${i.sel}`)]: {
|
|
90
118
|
padding: 'var(--button-padding-lg)',
|
|
91
119
|
width: 'var(--button-size-lg, auto)',
|
|
92
120
|
height: 'var(--button-size-lg, auto)',
|
|
93
121
|
},
|
|
94
122
|
|
|
95
123
|
// ─── Connected: convert outline buttons to border-based ───────────
|
|
96
|
-
[`${connected}
|
|
124
|
+
[over(i => `${connected} ${i.sel}`)]: {
|
|
97
125
|
outline: 'none',
|
|
98
126
|
border: `1px solid ${borderColor}`,
|
|
99
127
|
transition: 'box-shadow 100ms ease, filter 100ms ease',
|
|
@@ -115,13 +143,13 @@ module.exports = plugin(function ({ addComponents, addBase }) {
|
|
|
115
143
|
// so the button itself must stay at its normal (non-pressed) color.
|
|
116
144
|
// Selection colors default to the button's own --button-tint-* shades,
|
|
117
145
|
// overridable via the documented --button-group-* properties.
|
|
118
|
-
|
|
146
|
+
[over(i => `.btu-button-group ${i.sel}${i.armed}`)]: {
|
|
119
147
|
'--button-pressed-color': 'initial',
|
|
120
148
|
'--button-pressed-text-color': 'initial',
|
|
121
149
|
isolation: 'isolate',
|
|
122
150
|
transition: 'color 150ms ease-in',
|
|
123
151
|
},
|
|
124
|
-
|
|
152
|
+
[over(i => `.btu-button-group ${i.sel}${i.armed}::after`)]: {
|
|
125
153
|
content: '""',
|
|
126
154
|
position: 'absolute',
|
|
127
155
|
inset: '0',
|
|
@@ -133,68 +161,68 @@ module.exports = plugin(function ({ addComponents, addBase }) {
|
|
|
133
161
|
},
|
|
134
162
|
|
|
135
163
|
// ─── Selection wipe: active state ─────────────────────────────────
|
|
136
|
-
|
|
164
|
+
[over(i => `.btu-button-group ${i.sel}${i.on}`)]: {
|
|
137
165
|
color: 'var(--button-group-selection-color, var(--button-tint-strong))',
|
|
138
166
|
transition: 'color 200ms ease-out',
|
|
139
167
|
},
|
|
140
168
|
|
|
141
|
-
|
|
169
|
+
[over(i => `.btu-button-group ${i.sel}${i.on}::after`)]: {
|
|
142
170
|
clipPath: 'circle(75% at center)',
|
|
143
171
|
transition: 'clip-path 200ms ease-out',
|
|
144
172
|
},
|
|
145
173
|
|
|
146
174
|
// ─── Reduced motion ─────────────────────────────────────────────────
|
|
147
175
|
'@media (prefers-reduced-motion: reduce)': {
|
|
148
|
-
|
|
176
|
+
[over(i => `.btu-button-group ${i.sel}${i.armed}`)]: {
|
|
149
177
|
transition: 'color 0.01ms ease',
|
|
150
178
|
},
|
|
151
|
-
|
|
179
|
+
[over(i => `.btu-button-group ${i.sel}${i.armed}::after`)]: {
|
|
152
180
|
transition: 'clip-path 0.01ms ease',
|
|
153
181
|
},
|
|
154
|
-
[`${allSelected}
|
|
182
|
+
[over(i => `${allSelected} ${i.sel}${i.on}`)]: {
|
|
155
183
|
animation: 'none',
|
|
156
184
|
},
|
|
157
185
|
},
|
|
158
186
|
|
|
159
187
|
// ─── Connected variant — horizontal ───────────────────────────────
|
|
160
|
-
[`${connectedH}
|
|
188
|
+
[over(i => `${connectedH} ${i.sel}`)]: {
|
|
161
189
|
borderRadius: '0',
|
|
162
190
|
marginInlineEnd: '-1px',
|
|
163
191
|
position: 'relative',
|
|
164
|
-
'&:hover, &:focus-visible, &:active, &[aria-pressed="true"]': {
|
|
192
|
+
'&:hover, &:focus-visible, &:active, &[aria-pressed="true"], &[aria-current]:not([aria-current="false"])': {
|
|
165
193
|
zIndex: '1',
|
|
166
194
|
},
|
|
167
195
|
'&:focus-visible': {
|
|
168
196
|
zIndex: '2',
|
|
169
197
|
},
|
|
170
198
|
},
|
|
171
|
-
[`${connectedH} > :first-child:is(
|
|
199
|
+
[over(i => `${connectedH} > :first-child:is(${i.sel}), ${connectedH} > :first-child > ${i.sel}`)]: {
|
|
172
200
|
borderStartStartRadius: outerRadius,
|
|
173
201
|
borderEndStartRadius: outerRadius,
|
|
174
202
|
},
|
|
175
|
-
[`${connectedH} > :last-child:is(
|
|
203
|
+
[over(i => `${connectedH} > :last-child:is(${i.sel}), ${connectedH} > :last-child > ${i.sel}`)]: {
|
|
176
204
|
borderStartEndRadius: outerRadius,
|
|
177
205
|
borderEndEndRadius: outerRadius,
|
|
178
206
|
marginInlineEnd: '0',
|
|
179
207
|
},
|
|
180
208
|
|
|
181
209
|
// ─── Connected variant — vertical ─────────────────────────────────
|
|
182
|
-
[`${connectedV}
|
|
210
|
+
[over(i => `${connectedV} ${i.sel}`)]: {
|
|
183
211
|
borderRadius: '0',
|
|
184
212
|
marginBlockEnd: '-1px',
|
|
185
213
|
position: 'relative',
|
|
186
|
-
'&:hover, &:focus-visible, &:active, &[aria-pressed="true"]': {
|
|
214
|
+
'&:hover, &:focus-visible, &:active, &[aria-pressed="true"], &[aria-current]:not([aria-current="false"])': {
|
|
187
215
|
zIndex: '1',
|
|
188
216
|
},
|
|
189
217
|
'&:focus-visible': {
|
|
190
218
|
zIndex: '2',
|
|
191
219
|
},
|
|
192
220
|
},
|
|
193
|
-
[`${connectedV} > :first-child:is(
|
|
221
|
+
[over(i => `${connectedV} > :first-child:is(${i.sel}), ${connectedV} > :first-child > ${i.sel}`)]: {
|
|
194
222
|
borderStartStartRadius: outerRadius,
|
|
195
223
|
borderStartEndRadius: outerRadius,
|
|
196
224
|
},
|
|
197
|
-
[`${connectedV} > :last-child:is(
|
|
225
|
+
[over(i => `${connectedV} > :last-child:is(${i.sel}), ${connectedV} > :last-child > ${i.sel}`)]: {
|
|
198
226
|
borderEndStartRadius: outerRadius,
|
|
199
227
|
borderEndEndRadius: outerRadius,
|
|
200
228
|
marginBlockEnd: '0',
|
|
@@ -210,7 +238,7 @@ module.exports = plugin(function ({ addComponents, addBase }) {
|
|
|
210
238
|
|
|
211
239
|
// ─── All-selected shimmer (connected only) ─────────────────────────
|
|
212
240
|
// Text color pulse + border color pulse on each button, staggered.
|
|
213
|
-
components[`${allSelected}
|
|
241
|
+
components[over(i => `${allSelected} ${i.sel}${i.on}`)] = {
|
|
214
242
|
animation: 'btu-shimmer-all 500ms ease-in-out both',
|
|
215
243
|
animationDelay: 'calc((var(--_btn-index, 1) - 1) * 100ms)',
|
|
216
244
|
}
|
|
@@ -157,6 +157,16 @@ module.exports = plugin(function ({ addComponents, addUtilities, theme }) {
|
|
|
157
157
|
},
|
|
158
158
|
};
|
|
159
159
|
// background & text colors for buttons in different states
|
|
160
|
+
// -600 doesn't clear WCAG AA (4.5:1) against white for these hues, either as a solid
|
|
161
|
+
// fill under white text or as fill-none (the color used as text on the page).
|
|
162
|
+
// Measured against white: warning 3.49:1, teal 3.80:1 — vs primary 5.44:1 and error
|
|
163
|
+
// 4.85:1, which pass. At -700 warning is 5.43:1 and teal 5.57:1. success was already
|
|
164
|
+
// stepped down for the same reason; it just predates the other two being noticed.
|
|
165
|
+
const needsDarkerStep = new Set(['success', 'warning', 'teal']);
|
|
166
|
+
const solidStep = (k) => (k === 'gray' ? '100' : needsDarkerStep.has(k) ? '700' : '600');
|
|
167
|
+
const hoverStep = (k) => (k === 'gray' ? '200' : needsDarkerStep.has(k) ? '800' : '700');
|
|
168
|
+
// success keeps -600 here: only the two measured failures move.
|
|
169
|
+
const onSurfaceStep = (k) => (k === 'gray' || k === 'warning' || k === 'teal' ? '700' : '600');
|
|
160
170
|
for (const key in colors) {
|
|
161
171
|
if (key === 'currentColor' || key === 'transparent' || key === 'white' || key === 'black' || key === 'ai')
|
|
162
172
|
continue;
|
|
@@ -164,9 +174,9 @@ module.exports = plugin(function ({ addComponents, addUtilities, theme }) {
|
|
|
164
174
|
// Gray buttons borrow primary for their pressed/selected tint.
|
|
165
175
|
const tintKey = key === 'gray' ? 'primary' : key;
|
|
166
176
|
const focusStyle = {
|
|
167
|
-
'--button-color': `oklch(var(--btu-theme-${key}-${key
|
|
177
|
+
'--button-color': `oklch(var(--btu-theme-${key}-${solidStep(key)}))`,
|
|
168
178
|
'--button-fill-none-color': `transparent`,
|
|
169
|
-
'--button-fill-none-text-color': `oklch(var(--btu-theme-${key}-${key
|
|
179
|
+
'--button-fill-none-text-color': `oklch(var(--btu-theme-${key}-${onSurfaceStep(key)}))`,
|
|
170
180
|
'--tw-ring-opacity': '1',
|
|
171
181
|
'--tw-ring-color': `oklch(var(--btu-theme-${ringColorKey}-100))`,
|
|
172
182
|
'--tw-ring-offset-width': '1px',
|
|
@@ -176,10 +186,10 @@ module.exports = plugin(function ({ addComponents, addUtilities, theme }) {
|
|
|
176
186
|
'--tw-ring-color': `oklch(var(--btu-theme-${ringColorKey}-400))`,
|
|
177
187
|
};
|
|
178
188
|
components[prefix + '-' + key] = {
|
|
179
|
-
'--button-color': `oklch(var(--btu-theme-${key}-${key
|
|
189
|
+
'--button-color': `oklch(var(--btu-theme-${key}-${solidStep(key)}))`,
|
|
180
190
|
'--button-text-color': `${key === 'gray' ? 'oklch(var(--btu-theme-gray-700))' : 'var(--btu-theme-white)'}`,
|
|
181
191
|
'--button-fill-none-color': 'transparent',
|
|
182
|
-
'--button-fill-none-text-color': `oklch(var(--btu-theme-${key}-${key
|
|
192
|
+
'--button-fill-none-text-color': `oklch(var(--btu-theme-${key}-${onSurfaceStep(key)}))`,
|
|
183
193
|
'--button-outline-color': `oklch(var(--btu-theme-${key}-300))`,
|
|
184
194
|
'--button-disabled-color-fill': `oklch(var(--btu-theme-${key}-${key === 'gray' ? '100' : key === 'primary' ? '300' : '200'}))`,
|
|
185
195
|
'--button-disabled-color-fill-none': `var(--button-fill-none) oklch(var(--btu-theme-white))`,
|
|
@@ -191,7 +201,7 @@ module.exports = plugin(function ({ addComponents, addUtilities, theme }) {
|
|
|
191
201
|
'--button-tint-strong': `oklch(var(--btu-theme-${tintKey}-800))`,
|
|
192
202
|
'--button-tint-highlight': `oklch(var(--btu-theme-${tintKey}-200))`,
|
|
193
203
|
'&:hover': {
|
|
194
|
-
'--button-color': `oklch(var(--btu-theme-${key}-${key
|
|
204
|
+
'--button-color': `oklch(var(--btu-theme-${key}-${hoverStep(key)}))`,
|
|
195
205
|
'--button-fill-none-color': `oklch(var(--btu-theme-${key}-${key === 'gray' ? '200' : '50'}))`,
|
|
196
206
|
'--button-fill-none-text-color': `oklch(var(--btu-theme-${key}-${key === 'gray' ? '900' : '800'}))`,
|
|
197
207
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tailwind-plugin-button.js","sourceRoot":"","sources":["../src/tailwind-plugin-button.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"tailwind-plugin-button.js","sourceRoot":"","sources":["../src/tailwind-plugin-button.ts"],"names":[],"mappings":"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"}
|