@brightspot/ui 1.4.1 → 1.6.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 (104) hide show
  1. package/README.md +12 -0
  2. package/dist/components/avatar/Avatar.d.ts +1 -1
  3. package/dist/components/avatar/Avatar.d.ts.map +1 -1
  4. package/dist/components/avatar/Avatar.js +3 -1
  5. package/dist/components/avatar/Avatar.js.map +1 -1
  6. package/dist/components/pagination/Pagination.d.ts +109 -0
  7. package/dist/components/pagination/Pagination.d.ts.map +1 -0
  8. package/dist/components/pagination/Pagination.js +351 -0
  9. package/dist/components/pagination/Pagination.js.map +1 -0
  10. package/dist/components/popover/Popover.d.ts +161 -0
  11. package/dist/components/popover/Popover.d.ts.map +1 -0
  12. package/dist/components/popover/Popover.js +436 -0
  13. package/dist/components/popover/Popover.js.map +1 -0
  14. package/dist/components/widget/Widget.css +104 -0
  15. package/dist/components/widget/Widget.d.ts +170 -0
  16. package/dist/components/widget/Widget.d.ts.map +1 -0
  17. package/dist/components/widget/Widget.js +434 -0
  18. package/dist/components/widget/Widget.js.map +1 -0
  19. package/dist/custom-elements.json +1151 -184
  20. package/dist/global.d.ts +5 -0
  21. package/dist/storybook/assets/{Avatar.stories-QxWs-YfX.js → Avatar.stories-CafEcy4T.js} +37 -32
  22. package/dist/storybook/assets/AvatarGroup.stories-BBkQuFKk.js +225 -0
  23. package/dist/storybook/assets/{Badge.stories-BpaApWbR.js → Badge.stories-mFZsls7i.js} +1 -1
  24. package/dist/storybook/assets/{Button.stories-C5h2usmd.js → Button.stories-CAWX17L1.js} +1 -1
  25. package/dist/storybook/assets/{CircularProgress.stories-DlPOiGja.js → CircularProgress.stories-DBVt4Cg2.js} +1 -1
  26. package/dist/storybook/assets/{ClipboardMixin.stories-Bb45-UOM.js → ClipboardMixin.stories-BH9E-OI6.js} +7 -7
  27. package/dist/storybook/assets/Color-6BZIO3FS-CVnTzq2p.js +1 -0
  28. package/dist/storybook/assets/{Colors.stories-DP2JKWUJ.js → Colors.stories-BFYmP0LL.js} +1 -1
  29. package/dist/storybook/assets/ComponentStatesMixin-Cu7YXkU8.js +1 -0
  30. package/dist/storybook/assets/{ComponentStatesMixin.stories-CyQ2aSTu.js → ComponentStatesMixin.stories-CAvyYt0H.js} +3 -3
  31. package/dist/storybook/assets/{CopyToClipboard.stories-DR7pckeV.js → CopyToClipboard.stories-DbJZsp_L.js} +1 -1
  32. package/dist/storybook/assets/{Debounce.stories-hkqyvqmg.js → Debounce.stories-BiFiH1K9.js} +1 -1
  33. package/dist/storybook/assets/{DocsRenderer-LL677BLK-Dtw9GMer.js → DocsRenderer-LL677BLK-Bq6G4eeC.js} +6 -6
  34. package/dist/storybook/assets/{Events.stories-BAgDzdyl.js → Events.stories-BsDBxh8_.js} +1 -1
  35. package/dist/storybook/assets/{Heading.stories-CN_fPsRf.js → Heading.stories-zGzWgHVO.js} +1 -1
  36. package/dist/storybook/assets/{Icon.stories-CSx_2K8V.js → Icon.stories-B4T6sSwf.js} +1 -1
  37. package/dist/storybook/assets/{LinearProgress.stories-In48DY2g.js → LinearProgress.stories-qzqmUUwY.js} +1 -1
  38. package/dist/storybook/assets/Pagination.stories-B6Q-7taJ.js +272 -0
  39. package/dist/storybook/assets/Popover.stories-CGkU0SGv.js +431 -0
  40. package/dist/storybook/assets/ReadyMixin-3YCzoG6W.js +1 -0
  41. package/dist/storybook/assets/{Rtc.stories-19d7WXe4.js → Rtc.stories-Y1MYTWAt.js} +1 -1
  42. package/dist/storybook/assets/{ScrollShadow.stories-BFjracVd.js → ScrollShadow.stories-B9kSpLT1.js} +1 -1
  43. package/dist/storybook/assets/{Throttle.stories-DD6ydiVq.js → Throttle.stories-BgvLDrS3.js} +1 -1
  44. package/dist/storybook/assets/Tooltip.stories-POo1M-ew.js +143 -0
  45. package/dist/storybook/assets/Widget.stories--JpqVyJe.js +233 -0
  46. package/dist/storybook/assets/{WithTooltip-65CFNBJE-Be1dKqOF.js → WithTooltip-65CFNBJE-DNbD9hAX.js} +2 -2
  47. package/dist/storybook/assets/custom-element-UsVr97OX.js +1 -0
  48. package/dist/storybook/assets/{formatter-EIJCOSYU-anC2P5HS.js → formatter-EIJCOSYU-Cy8KIxab.js} +1 -1
  49. package/dist/storybook/assets/if-defined-CngSGyRu.js +1 -0
  50. package/dist/storybook/assets/iframe-DiT9Iz2T.css +1 -0
  51. package/dist/storybook/assets/{iframe-Bl9oHz5c.js → iframe-Dz6CxatW.js} +95 -95
  52. package/dist/storybook/assets/{index-Cn5E5A3G.js → index-CebChkmF.js} +1 -1
  53. package/dist/storybook/assets/{onFind.stories-BMDLUk0l.js → onFind.stories-nHDImx0x.js} +1 -1
  54. package/dist/storybook/assets/{onRemove.stories-C3FcxtYh.js → onRemove.stories-CBxYVPwd.js} +1 -1
  55. package/dist/storybook/assets/{onVisible.stories-B8Zyu0Th.js → onVisible.stories-D4Qewc9Y.js} +1 -1
  56. package/dist/storybook/assets/style-map-BgW9piaW.js +1 -0
  57. package/dist/storybook/assets/{syntaxhighlighter-ED5Y7EFY-BfTKsIVL.js → syntaxhighlighter-ED5Y7EFY-CROW1475.js} +1 -1
  58. package/dist/storybook/iframe.html +2 -2
  59. package/dist/storybook/index.json +1 -1
  60. package/dist/storybook/project.json +1 -1
  61. package/dist/tailwind-plugin-pagination.d.ts +2 -0
  62. package/dist/tailwind-plugin-pagination.d.ts.map +1 -0
  63. package/dist/tailwind-plugin-pagination.js +164 -0
  64. package/dist/tailwind-plugin-pagination.js.map +1 -0
  65. package/dist/tailwind-plugin-pagination.ts +179 -0
  66. package/dist/tailwind-plugin-popover.d.ts +2 -0
  67. package/dist/tailwind-plugin-popover.d.ts.map +1 -0
  68. package/dist/tailwind-plugin-popover.js +177 -0
  69. package/dist/tailwind-plugin-popover.js.map +1 -0
  70. package/dist/tailwind-plugin-popover.ts +202 -0
  71. package/dist/tailwind-plugin-tooltip.d.ts +2 -0
  72. package/dist/tailwind-plugin-tooltip.d.ts.map +1 -0
  73. package/dist/tailwind-plugin-tooltip.js +184 -0
  74. package/dist/tailwind-plugin-tooltip.js.map +1 -0
  75. package/dist/tailwind-plugin-tooltip.ts +209 -0
  76. package/dist/tailwind.config.d.ts +1 -4
  77. package/dist/tailwind.config.d.ts.map +1 -1
  78. package/dist/tailwind.config.js +1 -0
  79. package/dist/tailwind.config.js.map +1 -1
  80. package/dist/tailwind.config.ts +1 -0
  81. package/dist/util/EventEmitterMixin.d.ts +20 -0
  82. package/dist/util/EventEmitterMixin.d.ts.map +1 -1
  83. package/dist/util/EventEmitterMixin.js +1 -1
  84. package/dist/util/EventEmitterMixin.js.map +1 -1
  85. package/dist/util/TooltipController.d.ts +37 -0
  86. package/dist/util/TooltipController.d.ts.map +1 -0
  87. package/dist/util/TooltipController.js +133 -0
  88. package/dist/util/TooltipController.js.map +1 -0
  89. package/dist/util/TooltipMixin.d.ts +42 -0
  90. package/dist/util/TooltipMixin.d.ts.map +1 -0
  91. package/dist/util/TooltipMixin.js +401 -0
  92. package/dist/util/TooltipMixin.js.map +1 -0
  93. package/dist/util/aria.d.ts.map +1 -1
  94. package/dist/util/aria.js +2 -1
  95. package/dist/util/aria.js.map +1 -1
  96. package/dist/util/i18n.d.ts +13 -0
  97. package/dist/util/i18n.d.ts.map +1 -0
  98. package/dist/util/i18n.js +21 -0
  99. package/dist/util/i18n.js.map +1 -0
  100. package/package.json +2 -2
  101. package/dist/storybook/assets/AvatarGroup.stories-Cy_Bvn7E.js +0 -211
  102. package/dist/storybook/assets/Color-6BZIO3FS-CcgGYVAo.js +0 -1
  103. package/dist/storybook/assets/ComponentStatesMixin-B7ci0thi.js +0 -1
  104. package/dist/storybook/assets/iframe-B4njXYq6.css +0 -1
@@ -0,0 +1,177 @@
1
+ import plugin from 'tailwindcss/plugin';
2
+ /**
3
+ * Popover plugin using CSS anchor positioning and the native Popover API.
4
+ *
5
+ * Uses the HTML popover attribute for top-layer rendering, light dismiss,
6
+ * and focus management. Animations use @starting-style for entry and
7
+ * transition-behavior: allow-discrete for exit.
8
+ *
9
+ * Class Names:
10
+ *
11
+ * btu-popover - Base popover styles (hidden by default via popover)
12
+ * btu-popover-top - Position above trigger
13
+ * btu-popover-bottom - Position below trigger (default)
14
+ * btu-popover-left - Position left of trigger
15
+ * btu-popover-right - Position right of trigger
16
+ * btu-popover-no-arrow - Hide the arrow pseudo-element
17
+ *
18
+ * Offset Sizes:
19
+ *
20
+ * btu-popover-offset-sm - 4px offset
21
+ * btu-popover-offset-md - 8px offset (same as default)
22
+ * btu-popover-offset-lg - 12px offset
23
+ * btu-popover-offset-xl - 16px offset
24
+ *
25
+ * CSS Custom Properties:
26
+ *
27
+ * --popover-color-background - Background color (default: var(--btu-theme-white, #fff))
28
+ * --popover-color-title - Title text color (consumer-applied on title elements; not set by plugin)
29
+ * --popover-color-content - Base text color (default: oklch(var(--btu-theme-gray-900)))
30
+ * --popover-border-radius - Border radius (default: theme borderRadius.lg)
31
+ */
32
+ module.exports = plugin(function ({ addComponents, theme, config }) {
33
+ addComponents({
34
+ // Base popover styles — exit state (applied when closing, before display:none)
35
+ '.btu-popover': {
36
+ // Structural custom properties — kept as declarations since they're
37
+ // controlled by component props, not external CSS on parent elements.
38
+ '--popover-offset': '8px',
39
+ '--popover-arrow-size': '8px',
40
+ padding: '12px 16px',
41
+ backgroundColor: `var(--popover-color-background, var(--btu-theme-white, #fff))`,
42
+ color: 'var(--popover-color-content, oklch(var(--btu-theme-gray-900)))',
43
+ borderRadius: `var(--popover-border-radius, ${theme('borderRadius.lg')})`,
44
+ boxShadow: theme('boxShadow.lg'),
45
+ // theme('fontSize.sm') returns only the size string; config() gives the raw tuple
46
+ fontSize: config('theme.fontSize.sm')?.[0] ?? '0.875rem',
47
+ lineHeight: config('theme.fontSize.sm')?.[1] ?? '1.25rem',
48
+ fontWeight: '400',
49
+ whiteSpace: 'normal',
50
+ textAlign: 'left',
51
+ maxWidth: '20rem',
52
+ pointerEvents: 'auto',
53
+ overflow: 'visible',
54
+ isolation: 'isolate',
55
+ margin: '0',
56
+ inset: 'unset',
57
+ border: 'none',
58
+ opacity: '0',
59
+ translate: '0 0',
60
+ transition: 'opacity 150ms ease, translate 150ms ease, display 150ms ease allow-discrete, overlay 150ms ease allow-discrete',
61
+ 'position-visibility': 'anchors-visible',
62
+ // Native popover reset — browser defaults override otherwise
63
+ '&:popover-open': {
64
+ overflow: 'visible',
65
+ opacity: '1',
66
+ translate: '0 0',
67
+ },
68
+ },
69
+ // Position: top
70
+ '.btu-popover-top': {
71
+ 'position-area': 'top',
72
+ bottom: 'var(--popover-offset)',
73
+ marginTop: 'var(--popover-offset)',
74
+ 'position-try-fallbacks': 'flip-block',
75
+ translate: '0 4px',
76
+ '&:popover-open': {
77
+ translate: '0 0',
78
+ },
79
+ },
80
+ // Position: bottom (default)
81
+ '.btu-popover-bottom': {
82
+ 'position-area': 'bottom',
83
+ top: 'var(--popover-offset)',
84
+ marginBottom: 'var(--popover-offset)',
85
+ 'position-try-fallbacks': 'flip-block',
86
+ translate: '0 -4px',
87
+ '&:popover-open': {
88
+ translate: '0 0',
89
+ },
90
+ },
91
+ // Position: left
92
+ '.btu-popover-left': {
93
+ 'position-area': 'left',
94
+ right: 'var(--popover-offset)',
95
+ marginLeft: 'var(--popover-offset)',
96
+ 'position-try-fallbacks': 'flip-inline',
97
+ translate: '4px 0',
98
+ '&:popover-open': {
99
+ translate: '0 0',
100
+ },
101
+ },
102
+ // Position: right
103
+ '.btu-popover-right': {
104
+ 'position-area': 'right',
105
+ left: 'var(--popover-offset)',
106
+ marginRight: 'var(--popover-offset)',
107
+ 'position-try-fallbacks': 'flip-inline',
108
+ translate: '-4px 0',
109
+ '&:popover-open': {
110
+ translate: '0 0',
111
+ },
112
+ },
113
+ // Offset sizes
114
+ '.btu-popover-offset-sm': { '--popover-offset': '4px' },
115
+ '.btu-popover-offset-md': { '--popover-offset': '8px' },
116
+ '.btu-popover-offset-lg': { '--popover-offset': '12px' },
117
+ '.btu-popover-offset-xl': { '--popover-offset': '16px' },
118
+ // @starting-style for entry animations
119
+ '@starting-style': {
120
+ '.btu-popover:popover-open': {
121
+ opacity: '0',
122
+ },
123
+ '.btu-popover-top:popover-open': {
124
+ translate: '0 4px',
125
+ },
126
+ '.btu-popover-bottom:popover-open': {
127
+ translate: '0 -4px',
128
+ },
129
+ '.btu-popover-left:popover-open': {
130
+ translate: '4px 0',
131
+ },
132
+ '.btu-popover-right:popover-open': {
133
+ translate: '-4px 0',
134
+ },
135
+ },
136
+ // Arrow for vertical popovers (top/bottom)
137
+ // Centered at 50% of the popover panel. This aligns with the trigger center
138
+ // because position-area centers the popover on the anchor element.
139
+ '.btu-popover-top::before, .btu-popover-bottom::before': {
140
+ content: '""',
141
+ position: 'absolute',
142
+ zIndex: '-1',
143
+ width: 'var(--popover-arrow-size)',
144
+ top: 'calc(-1 * var(--popover-offset))',
145
+ bottom: 'calc(-1 * var(--popover-offset))',
146
+ left: 'calc(50% - var(--popover-arrow-size) / 2)',
147
+ clipPath: 'polygon(50% calc(var(--popover-offset) - var(--popover-arrow-size)), 100% var(--popover-offset), 100% calc(100% - var(--popover-offset)), 50% calc(100% - var(--popover-offset) + var(--popover-arrow-size)), 0 calc(100% - var(--popover-offset)), 0 var(--popover-offset))',
148
+ background: 'inherit',
149
+ margin: 'inherit',
150
+ },
151
+ // Arrow for horizontal popovers (left/right)
152
+ '.btu-popover-left::before, .btu-popover-right::before': {
153
+ content: '""',
154
+ position: 'absolute',
155
+ zIndex: '-1',
156
+ height: 'var(--popover-arrow-size)',
157
+ left: 'calc(-1 * var(--popover-offset))',
158
+ right: 'calc(-1 * var(--popover-offset))',
159
+ top: 'calc(50% - var(--popover-arrow-size) / 2)',
160
+ clipPath: 'polygon(calc(var(--popover-offset) - var(--popover-arrow-size)) 50%, var(--popover-offset) 0, calc(100% - var(--popover-offset)) 0, calc(100% - var(--popover-offset) + var(--popover-arrow-size)) 50%, calc(100% - var(--popover-offset)) 100%, var(--popover-offset) 100%)',
161
+ background: 'inherit',
162
+ margin: 'inherit',
163
+ },
164
+ // Hide arrow when opted out
165
+ '.btu-popover-no-arrow::before': {
166
+ content: 'none',
167
+ },
168
+ // Reduced motion: disable translate animation, keep opacity fade
169
+ '@media (prefers-reduced-motion: reduce)': {
170
+ '.btu-popover': {
171
+ translate: 'none !important',
172
+ transition: 'opacity 150ms ease, display 150ms ease allow-discrete, overlay 150ms ease allow-discrete',
173
+ },
174
+ },
175
+ });
176
+ });
177
+ //# sourceMappingURL=tailwind-plugin-popover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tailwind-plugin-popover.js","sourceRoot":"","sources":["../src/tailwind-plugin-popover.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAA;AAGvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE;IAChE,aAAa,CAAC;QACZ,+EAA+E;QAC/E,cAAc,EAAE;YACd,oEAAoE;YACpE,sEAAsE;YACtE,kBAAkB,EAAE,KAAK;YACzB,sBAAsB,EAAE,KAAK;YAE7B,OAAO,EAAE,WAAW;YAEpB,eAAe,EAAE,+DAA+D;YAChF,KAAK,EAAE,gEAAgE;YACvE,YAAY,EAAE,gCAAgC,KAAK,CAAC,iBAAiB,CAAC,GAAG;YACzE,SAAS,EAAE,KAAK,CAAC,cAAc,CAAC;YAEhC,kFAAkF;YAClF,QAAQ,EAAE,MAAM,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,UAAU;YACxD,UAAU,EAAE,MAAM,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,SAAS;YACzD,UAAU,EAAE,KAAK;YACjB,UAAU,EAAE,QAAQ;YACpB,SAAS,EAAE,MAAM;YACjB,QAAQ,EAAE,OAAO;YAEjB,aAAa,EAAE,MAAM;YACrB,QAAQ,EAAE,SAAS;YACnB,SAAS,EAAE,SAAS;YACpB,MAAM,EAAE,GAAG;YACX,KAAK,EAAE,OAAO;YACd,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,GAAG;YACZ,SAAS,EAAE,KAAK;YAChB,UAAU,EACR,gHAAgH;YAElH,qBAAqB,EAAE,iBAAiB;YAExC,6DAA6D;YAC7D,gBAAgB,EAAE;gBAChB,QAAQ,EAAE,SAAS;gBACnB,OAAO,EAAE,GAAG;gBACZ,SAAS,EAAE,KAAK;aACjB;SACF;QAED,gBAAgB;QAChB,kBAAkB,EAAE;YAClB,eAAe,EAAE,KAAK;YACtB,MAAM,EAAE,uBAAuB;YAC/B,SAAS,EAAE,uBAAuB;YAClC,wBAAwB,EAAE,YAAY;YACtC,SAAS,EAAE,OAAO;YAElB,gBAAgB,EAAE;gBAChB,SAAS,EAAE,KAAK;aACjB;SACF;QAED,6BAA6B;QAC7B,qBAAqB,EAAE;YACrB,eAAe,EAAE,QAAQ;YACzB,GAAG,EAAE,uBAAuB;YAC5B,YAAY,EAAE,uBAAuB;YACrC,wBAAwB,EAAE,YAAY;YACtC,SAAS,EAAE,QAAQ;YAEnB,gBAAgB,EAAE;gBAChB,SAAS,EAAE,KAAK;aACjB;SACF;QAED,iBAAiB;QACjB,mBAAmB,EAAE;YACnB,eAAe,EAAE,MAAM;YACvB,KAAK,EAAE,uBAAuB;YAC9B,UAAU,EAAE,uBAAuB;YACnC,wBAAwB,EAAE,aAAa;YACvC,SAAS,EAAE,OAAO;YAElB,gBAAgB,EAAE;gBAChB,SAAS,EAAE,KAAK;aACjB;SACF;QAED,kBAAkB;QAClB,oBAAoB,EAAE;YACpB,eAAe,EAAE,OAAO;YACxB,IAAI,EAAE,uBAAuB;YAC7B,WAAW,EAAE,uBAAuB;YACpC,wBAAwB,EAAE,aAAa;YACvC,SAAS,EAAE,QAAQ;YAEnB,gBAAgB,EAAE;gBAChB,SAAS,EAAE,KAAK;aACjB;SACF;QAED,eAAe;QACf,wBAAwB,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE;QACvD,wBAAwB,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE;QACvD,wBAAwB,EAAE,EAAE,kBAAkB,EAAE,MAAM,EAAE;QACxD,wBAAwB,EAAE,EAAE,kBAAkB,EAAE,MAAM,EAAE;QAExD,uCAAuC;QACvC,iBAAiB,EAAE;YACjB,2BAA2B,EAAE;gBAC3B,OAAO,EAAE,GAAG;aACb;YACD,+BAA+B,EAAE;gBAC/B,SAAS,EAAE,OAAO;aACnB;YACD,kCAAkC,EAAE;gBAClC,SAAS,EAAE,QAAQ;aACpB;YACD,gCAAgC,EAAE;gBAChC,SAAS,EAAE,OAAO;aACnB;YACD,iCAAiC,EAAE;gBACjC,SAAS,EAAE,QAAQ;aACpB;SACF;QAED,2CAA2C;QAC3C,4EAA4E;QAC5E,mEAAmE;QACnE,uDAAuD,EAAE;YACvD,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,UAAU;YACpB,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,2BAA2B;YAClC,GAAG,EAAE,kCAAkC;YACvC,MAAM,EAAE,kCAAkC;YAC1C,IAAI,EAAE,2CAA2C;YACjD,QAAQ,EACN,8QAA8Q;YAChR,UAAU,EAAE,SAAS;YACrB,MAAM,EAAE,SAAS;SAClB;QAED,6CAA6C;QAC7C,uDAAuD,EAAE;YACvD,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,UAAU;YACpB,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,2BAA2B;YACnC,IAAI,EAAE,kCAAkC;YACxC,KAAK,EAAE,kCAAkC;YACzC,GAAG,EAAE,2CAA2C;YAChD,QAAQ,EACN,8QAA8Q;YAChR,UAAU,EAAE,SAAS;YACrB,MAAM,EAAE,SAAS;SAClB;QAED,4BAA4B;QAC5B,+BAA+B,EAAE;YAC/B,OAAO,EAAE,MAAM;SAChB;QAED,iEAAiE;QACjE,yCAAyC,EAAE;YACzC,cAAc,EAAE;gBACd,SAAS,EAAE,iBAAiB;gBAC5B,UAAU,EAAE,0FAA0F;aACvG;SACF;KACF,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,202 @@
1
+ import plugin from 'tailwindcss/plugin'
2
+ declare let module: any
3
+
4
+ /**
5
+ * Popover plugin using CSS anchor positioning and the native Popover API.
6
+ *
7
+ * Uses the HTML popover attribute for top-layer rendering, light dismiss,
8
+ * and focus management. Animations use @starting-style for entry and
9
+ * transition-behavior: allow-discrete for exit.
10
+ *
11
+ * Class Names:
12
+ *
13
+ * btu-popover - Base popover styles (hidden by default via popover)
14
+ * btu-popover-top - Position above trigger
15
+ * btu-popover-bottom - Position below trigger (default)
16
+ * btu-popover-left - Position left of trigger
17
+ * btu-popover-right - Position right of trigger
18
+ * btu-popover-no-arrow - Hide the arrow pseudo-element
19
+ *
20
+ * Offset Sizes:
21
+ *
22
+ * btu-popover-offset-sm - 4px offset
23
+ * btu-popover-offset-md - 8px offset (same as default)
24
+ * btu-popover-offset-lg - 12px offset
25
+ * btu-popover-offset-xl - 16px offset
26
+ *
27
+ * CSS Custom Properties:
28
+ *
29
+ * --popover-color-background - Background color (default: var(--btu-theme-white, #fff))
30
+ * --popover-color-title - Title text color (consumer-applied on title elements; not set by plugin)
31
+ * --popover-color-content - Base text color (default: oklch(var(--btu-theme-gray-900)))
32
+ * --popover-border-radius - Border radius (default: theme borderRadius.lg)
33
+ */
34
+
35
+ module.exports = plugin(function ({ addComponents, theme, config }) {
36
+ addComponents({
37
+ // Base popover styles — exit state (applied when closing, before display:none)
38
+ '.btu-popover': {
39
+ // Structural custom properties — kept as declarations since they're
40
+ // controlled by component props, not external CSS on parent elements.
41
+ '--popover-offset': '8px',
42
+ '--popover-arrow-size': '8px',
43
+
44
+ padding: '12px 16px',
45
+
46
+ backgroundColor: `var(--popover-color-background, var(--btu-theme-white, #fff))`,
47
+ color: 'var(--popover-color-content, oklch(var(--btu-theme-gray-900)))',
48
+ borderRadius: `var(--popover-border-radius, ${theme('borderRadius.lg')})`,
49
+ boxShadow: theme('boxShadow.lg'),
50
+
51
+ // theme('fontSize.sm') returns only the size string; config() gives the raw tuple
52
+ fontSize: config('theme.fontSize.sm')?.[0] ?? '0.875rem',
53
+ lineHeight: config('theme.fontSize.sm')?.[1] ?? '1.25rem',
54
+ fontWeight: '400',
55
+ whiteSpace: 'normal',
56
+ textAlign: 'left',
57
+ maxWidth: '20rem',
58
+
59
+ pointerEvents: 'auto',
60
+ overflow: 'visible',
61
+ isolation: 'isolate',
62
+ margin: '0',
63
+ inset: 'unset',
64
+ border: 'none',
65
+ opacity: '0',
66
+ translate: '0 0',
67
+ transition:
68
+ 'opacity 150ms ease, translate 150ms ease, display 150ms ease allow-discrete, overlay 150ms ease allow-discrete',
69
+
70
+ 'position-visibility': 'anchors-visible',
71
+
72
+ // Native popover reset — browser defaults override otherwise
73
+ '&:popover-open': {
74
+ overflow: 'visible',
75
+ opacity: '1',
76
+ translate: '0 0',
77
+ },
78
+ },
79
+
80
+ // Position: top
81
+ '.btu-popover-top': {
82
+ 'position-area': 'top',
83
+ bottom: 'var(--popover-offset)',
84
+ marginTop: 'var(--popover-offset)',
85
+ 'position-try-fallbacks': 'flip-block',
86
+ translate: '0 4px',
87
+
88
+ '&:popover-open': {
89
+ translate: '0 0',
90
+ },
91
+ },
92
+
93
+ // Position: bottom (default)
94
+ '.btu-popover-bottom': {
95
+ 'position-area': 'bottom',
96
+ top: 'var(--popover-offset)',
97
+ marginBottom: 'var(--popover-offset)',
98
+ 'position-try-fallbacks': 'flip-block',
99
+ translate: '0 -4px',
100
+
101
+ '&:popover-open': {
102
+ translate: '0 0',
103
+ },
104
+ },
105
+
106
+ // Position: left
107
+ '.btu-popover-left': {
108
+ 'position-area': 'left',
109
+ right: 'var(--popover-offset)',
110
+ marginLeft: 'var(--popover-offset)',
111
+ 'position-try-fallbacks': 'flip-inline',
112
+ translate: '4px 0',
113
+
114
+ '&:popover-open': {
115
+ translate: '0 0',
116
+ },
117
+ },
118
+
119
+ // Position: right
120
+ '.btu-popover-right': {
121
+ 'position-area': 'right',
122
+ left: 'var(--popover-offset)',
123
+ marginRight: 'var(--popover-offset)',
124
+ 'position-try-fallbacks': 'flip-inline',
125
+ translate: '-4px 0',
126
+
127
+ '&:popover-open': {
128
+ translate: '0 0',
129
+ },
130
+ },
131
+
132
+ // Offset sizes
133
+ '.btu-popover-offset-sm': { '--popover-offset': '4px' },
134
+ '.btu-popover-offset-md': { '--popover-offset': '8px' },
135
+ '.btu-popover-offset-lg': { '--popover-offset': '12px' },
136
+ '.btu-popover-offset-xl': { '--popover-offset': '16px' },
137
+
138
+ // @starting-style for entry animations
139
+ '@starting-style': {
140
+ '.btu-popover:popover-open': {
141
+ opacity: '0',
142
+ },
143
+ '.btu-popover-top:popover-open': {
144
+ translate: '0 4px',
145
+ },
146
+ '.btu-popover-bottom:popover-open': {
147
+ translate: '0 -4px',
148
+ },
149
+ '.btu-popover-left:popover-open': {
150
+ translate: '4px 0',
151
+ },
152
+ '.btu-popover-right:popover-open': {
153
+ translate: '-4px 0',
154
+ },
155
+ },
156
+
157
+ // Arrow for vertical popovers (top/bottom)
158
+ // Centered at 50% of the popover panel. This aligns with the trigger center
159
+ // because position-area centers the popover on the anchor element.
160
+ '.btu-popover-top::before, .btu-popover-bottom::before': {
161
+ content: '""',
162
+ position: 'absolute',
163
+ zIndex: '-1',
164
+ width: 'var(--popover-arrow-size)',
165
+ top: 'calc(-1 * var(--popover-offset))',
166
+ bottom: 'calc(-1 * var(--popover-offset))',
167
+ left: 'calc(50% - var(--popover-arrow-size) / 2)',
168
+ clipPath:
169
+ 'polygon(50% calc(var(--popover-offset) - var(--popover-arrow-size)), 100% var(--popover-offset), 100% calc(100% - var(--popover-offset)), 50% calc(100% - var(--popover-offset) + var(--popover-arrow-size)), 0 calc(100% - var(--popover-offset)), 0 var(--popover-offset))',
170
+ background: 'inherit',
171
+ margin: 'inherit',
172
+ },
173
+
174
+ // Arrow for horizontal popovers (left/right)
175
+ '.btu-popover-left::before, .btu-popover-right::before': {
176
+ content: '""',
177
+ position: 'absolute',
178
+ zIndex: '-1',
179
+ height: 'var(--popover-arrow-size)',
180
+ left: 'calc(-1 * var(--popover-offset))',
181
+ right: 'calc(-1 * var(--popover-offset))',
182
+ top: 'calc(50% - var(--popover-arrow-size) / 2)',
183
+ clipPath:
184
+ 'polygon(calc(var(--popover-offset) - var(--popover-arrow-size)) 50%, var(--popover-offset) 0, calc(100% - var(--popover-offset)) 0, calc(100% - var(--popover-offset) + var(--popover-arrow-size)) 50%, calc(100% - var(--popover-offset)) 100%, var(--popover-offset) 100%)',
185
+ background: 'inherit',
186
+ margin: 'inherit',
187
+ },
188
+
189
+ // Hide arrow when opted out
190
+ '.btu-popover-no-arrow::before': {
191
+ content: 'none',
192
+ },
193
+
194
+ // Reduced motion: disable translate animation, keep opacity fade
195
+ '@media (prefers-reduced-motion: reduce)': {
196
+ '.btu-popover': {
197
+ translate: 'none !important',
198
+ transition: 'opacity 150ms ease, display 150ms ease allow-discrete, overlay 150ms ease allow-discrete',
199
+ },
200
+ },
201
+ })
202
+ })
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tailwind-plugin-tooltip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tailwind-plugin-tooltip.d.ts","sourceRoot":"","sources":["../src/tailwind-plugin-tooltip.ts"],"names":[],"mappings":""}
@@ -0,0 +1,184 @@
1
+ import plugin from 'tailwindcss/plugin';
2
+ /**
3
+ * Tooltip plugin using CSS anchor positioning and the native Popover API.
4
+ *
5
+ * Uses the HTML popover attribute for top-layer rendering. Animations use
6
+ * @starting-style for entry and transition-behavior: allow-discrete for exit.
7
+ *
8
+ * Class Names:
9
+ *
10
+ * btu-tooltip - Base tooltip styles (hidden by default via popover)
11
+ * btu-tooltip-top - Position above trigger (default)
12
+ * btu-tooltip-bottom - Position below trigger
13
+ * btu-tooltip-left - Position left of trigger
14
+ * btu-tooltip-right - Position right of trigger
15
+ * btu-tooltip-no-arrow - Hide the arrow pseudo-element
16
+ *
17
+ * Offset Sizes:
18
+ *
19
+ * btu-tooltip-offset-sm - 4px offset
20
+ * btu-tooltip-offset-md - 8px offset (same as default)
21
+ * btu-tooltip-offset-lg - 12px offset
22
+ * btu-tooltip-offset-xl - 16px offset
23
+ *
24
+ * CSS Custom Properties:
25
+ *
26
+ * --tooltip-color-background - Background color (default: var(--btu-theme-white, #fff))
27
+ * --tooltip-color-text - Text color (default: oklch(var(--btu-theme-gray-900)))
28
+ * --tooltip-border-radius - Border radius (default: theme borderRadius.lg)
29
+ */
30
+ module.exports = plugin(function ({ addComponents, theme, config }) {
31
+ addComponents({
32
+ // Base tooltip styles — exit state (applied when closing, before display:none)
33
+ '.btu-tooltip': {
34
+ // Structural custom properties — kept as declarations since they're
35
+ // controlled by component props, not external CSS on parent elements.
36
+ '--tooltip-offset': '8px',
37
+ '--tooltip-arrow-size': '8px',
38
+ padding: '8px 12px',
39
+ backgroundColor: 'var(--tooltip-color-background, var(--btu-theme-white, #fff))',
40
+ color: `var(--tooltip-color-text, oklch(var(--btu-theme-gray-900)))`,
41
+ borderRadius: `var(--tooltip-border-radius, ${theme('borderRadius.lg')})`,
42
+ boxShadow: theme('boxShadow.lg'),
43
+ // theme('fontSize.xs') returns only the size string; config() gives the raw tuple
44
+ fontSize: config('theme.fontSize.xs')?.[0] ?? '0.75rem',
45
+ lineHeight: config('theme.fontSize.xs')?.[1] ?? '1.125rem',
46
+ fontWeight: '500',
47
+ whiteSpace: 'nowrap',
48
+ textAlign: 'left',
49
+ pointerEvents: 'none',
50
+ overflow: 'visible',
51
+ isolation: 'isolate',
52
+ margin: '0',
53
+ inset: 'unset',
54
+ border: 'none',
55
+ opacity: '0',
56
+ translate: '0 0',
57
+ transition: 'opacity 150ms ease, translate 150ms ease, display 150ms ease allow-discrete, overlay 150ms ease allow-discrete',
58
+ 'position-visibility': 'anchors-visible',
59
+ // Native popover reset — browser defaults override otherwise
60
+ '&:popover-open': {
61
+ overflow: 'visible',
62
+ opacity: '1',
63
+ translate: '0 0',
64
+ },
65
+ },
66
+ // Position: top (default)
67
+ // Gap via inset `bottom`; margin-top drives the arrow flip via `margin: inherit`
68
+ '.btu-tooltip-top': {
69
+ 'position-area': 'top',
70
+ bottom: 'var(--tooltip-offset)',
71
+ marginTop: 'var(--tooltip-offset)',
72
+ 'position-try-fallbacks': 'flip-block',
73
+ translate: '0 4px',
74
+ '&:popover-open': {
75
+ translate: '0 0',
76
+ },
77
+ },
78
+ // Position: bottom
79
+ // Gap via inset `top`; margin-bottom drives the arrow flip
80
+ '.btu-tooltip-bottom': {
81
+ 'position-area': 'bottom',
82
+ top: 'var(--tooltip-offset)',
83
+ marginBottom: 'var(--tooltip-offset)',
84
+ 'position-try-fallbacks': 'flip-block',
85
+ translate: '0 -4px',
86
+ '&:popover-open': {
87
+ translate: '0 0',
88
+ },
89
+ },
90
+ // Position: left
91
+ // Gap via inset `right`; margin-left drives the arrow flip
92
+ '.btu-tooltip-left': {
93
+ 'position-area': 'left',
94
+ right: 'var(--tooltip-offset)',
95
+ marginLeft: 'var(--tooltip-offset)',
96
+ 'position-try-fallbacks': 'flip-inline',
97
+ translate: '4px 0',
98
+ '&:popover-open': {
99
+ translate: '0 0',
100
+ },
101
+ },
102
+ // Position: right
103
+ // Gap via inset `left`; margin-right drives the arrow flip
104
+ '.btu-tooltip-right': {
105
+ 'position-area': 'right',
106
+ left: 'var(--tooltip-offset)',
107
+ marginRight: 'var(--tooltip-offset)',
108
+ 'position-try-fallbacks': 'flip-inline',
109
+ translate: '-4px 0',
110
+ '&:popover-open': {
111
+ translate: '0 0',
112
+ },
113
+ },
114
+ // Offset sizes
115
+ '.btu-tooltip-offset-sm': { '--tooltip-offset': '4px' },
116
+ '.btu-tooltip-offset-md': { '--tooltip-offset': '8px' },
117
+ '.btu-tooltip-offset-lg': { '--tooltip-offset': '12px' },
118
+ '.btu-tooltip-offset-xl': { '--tooltip-offset': '16px' },
119
+ // @starting-style for entry animations
120
+ '@starting-style': {
121
+ '.btu-tooltip:popover-open': {
122
+ opacity: '0',
123
+ },
124
+ '.btu-tooltip-top:popover-open': {
125
+ translate: '0 4px',
126
+ },
127
+ '.btu-tooltip-bottom:popover-open': {
128
+ translate: '0 -4px',
129
+ },
130
+ '.btu-tooltip-left:popover-open': {
131
+ translate: '4px 0',
132
+ },
133
+ '.btu-tooltip-right:popover-open': {
134
+ translate: '-4px 0',
135
+ },
136
+ },
137
+ // Arrow for vertical tooltips (top/bottom).
138
+ // Extends beyond both tooltip edges via negative inset. A hexagonal
139
+ // clip-path creates arrow tips on both ends; margin: inherit auto-flips
140
+ // the visible tip when position-try-fallbacks: flip-block activates.
141
+ // See: https://frontendmasters.com/blog/perfectly-pointed-tooltips-a-foundation/
142
+ // Arrow for vertical tooltips (top/bottom).
143
+ // Centered at 50% of the tooltip panel. This aligns with the trigger center
144
+ // because position-area centers the tooltip on the anchor element.
145
+ '.btu-tooltip-top::before, .btu-tooltip-bottom::before': {
146
+ content: '""',
147
+ position: 'absolute',
148
+ zIndex: '-1',
149
+ width: 'var(--tooltip-arrow-size)',
150
+ top: 'calc(-1 * var(--tooltip-offset))',
151
+ bottom: 'calc(-1 * var(--tooltip-offset))',
152
+ left: 'calc(50% - var(--tooltip-arrow-size) / 2)',
153
+ clipPath: 'polygon(50% calc(var(--tooltip-offset) - var(--tooltip-arrow-size)), 100% var(--tooltip-offset), 100% calc(100% - var(--tooltip-offset)), 50% calc(100% - var(--tooltip-offset) + var(--tooltip-arrow-size)), 0 calc(100% - var(--tooltip-offset)), 0 var(--tooltip-offset))',
154
+ background: 'inherit',
155
+ margin: 'inherit',
156
+ },
157
+ // Arrow for horizontal tooltips (left/right).
158
+ // Same technique rotated 90° for flip-inline.
159
+ '.btu-tooltip-left::before, .btu-tooltip-right::before': {
160
+ content: '""',
161
+ position: 'absolute',
162
+ zIndex: '-1',
163
+ height: 'var(--tooltip-arrow-size)',
164
+ left: 'calc(-1 * var(--tooltip-offset))',
165
+ right: 'calc(-1 * var(--tooltip-offset))',
166
+ top: 'calc(50% - var(--tooltip-arrow-size) / 2)',
167
+ clipPath: 'polygon(calc(var(--tooltip-offset) - var(--tooltip-arrow-size)) 50%, var(--tooltip-offset) 0, calc(100% - var(--tooltip-offset)) 0, calc(100% - var(--tooltip-offset) + var(--tooltip-arrow-size)) 50%, calc(100% - var(--tooltip-offset)) 100%, var(--tooltip-offset) 100%)',
168
+ background: 'inherit',
169
+ margin: 'inherit',
170
+ },
171
+ // Hide arrow when opted out
172
+ '.btu-tooltip-no-arrow::before': {
173
+ content: 'none',
174
+ },
175
+ // Reduced motion: disable translate animation, keep opacity fade
176
+ '@media (prefers-reduced-motion: reduce)': {
177
+ '.btu-tooltip': {
178
+ translate: 'none !important',
179
+ transition: 'opacity 150ms ease, display 150ms ease allow-discrete, overlay 150ms ease allow-discrete',
180
+ },
181
+ },
182
+ });
183
+ });
184
+ //# sourceMappingURL=tailwind-plugin-tooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tailwind-plugin-tooltip.js","sourceRoot":"","sources":["../src/tailwind-plugin-tooltip.ts"],"names":[],"mappings":"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"}