@mks2508/mks-ui 0.5.7 → 0.5.8

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 (262) hide show
  1. package/dist/react-ui/primitives/waapi/Gooey/Gooey.types.d.ts +2 -0
  2. package/dist/react-ui/primitives/waapi/Gooey/Gooey.types.d.ts.map +1 -1
  3. package/dist/react-ui/primitives/waapi/Gooey/GooeyCanvas.d.ts +1 -1
  4. package/dist/react-ui/primitives/waapi/Gooey/GooeyCanvas.d.ts.map +1 -1
  5. package/dist/react-ui/primitives/waapi/Gooey/GooeyCanvas.js +173 -43
  6. package/dist/react-ui/ui/DynamicToggle/{DynamicToggle-DOR3Ld-k.css → DynamicToggle-DJLwEkHr.css} +12 -19
  7. package/dist/react-ui/ui/DynamicToggle/DynamicToggle.css +12 -20
  8. package/dist/react-ui/ui/DynamicToggle/DynamicToggle.styles.d.ts +1 -0
  9. package/dist/react-ui/ui/DynamicToggle/DynamicToggle.styles.d.ts.map +1 -1
  10. package/dist/react-ui/ui/DynamicToggle/DynamicToggle.styles.js +7 -1
  11. package/dist/react-ui/ui/DynamicToggle/DynamicToggle.types.d.ts +55 -31
  12. package/dist/react-ui/ui/DynamicToggle/DynamicToggle.types.d.ts.map +1 -1
  13. package/dist/react-ui/ui/DynamicToggle/index.d.ts +9 -3
  14. package/dist/react-ui/ui/DynamicToggle/index.d.ts.map +1 -1
  15. package/dist/react-ui/ui/DynamicToggle/index.js +47 -34
  16. package/package.json +52 -13
  17. package/src/assets/react.svg +0 -1
  18. package/src/core/index.ts +0 -7
  19. package/src/core/types.ts +0 -82
  20. package/src/css.d.ts +0 -7
  21. package/src/index.css +0 -129
  22. package/src/index.ts +0 -29
  23. package/src/react-ui/blocks/Terminal/ResttyAdapter.ts +0 -278
  24. package/src/react-ui/blocks/Terminal/Terminal.adapter.ts +0 -97
  25. package/src/react-ui/blocks/Terminal/Terminal.theme.restty.ts +0 -155
  26. package/src/react-ui/blocks/Terminal/Terminal.theme.ts +0 -80
  27. package/src/react-ui/blocks/Terminal/Terminal.types.ts +0 -438
  28. package/src/react-ui/blocks/Terminal/TerminalDisplay.styles.ts +0 -38
  29. package/src/react-ui/blocks/Terminal/TerminalDisplay.tsx +0 -254
  30. package/src/react-ui/blocks/Terminal/TerminalDisplay.types.ts +0 -73
  31. package/src/react-ui/blocks/Terminal/TerminalPanel.tsx +0 -269
  32. package/src/react-ui/blocks/Terminal/TerminalRestty.tsx +0 -326
  33. package/src/react-ui/blocks/Terminal/TerminalXterm.tsx +0 -230
  34. package/src/react-ui/blocks/Terminal/XTermAdapter.ts +0 -163
  35. package/src/react-ui/blocks/Terminal/chrome.ts +0 -25
  36. package/src/react-ui/blocks/Terminal/components/LogLineBadges.tsx +0 -316
  37. package/src/react-ui/blocks/Terminal/components/SpecializedSyntaxHighlighter.tsx +0 -218
  38. package/src/react-ui/blocks/Terminal/components/SyntaxHighlight.tsx +0 -386
  39. package/src/react-ui/blocks/Terminal/components/TerminalLogBadge.tsx +0 -67
  40. package/src/react-ui/blocks/Terminal/components/index.ts +0 -10
  41. package/src/react-ui/blocks/Terminal/display.ts +0 -46
  42. package/src/react-ui/blocks/Terminal/hooks/index.ts +0 -22
  43. package/src/react-ui/blocks/Terminal/hooks/useTerminalSettings.ts +0 -229
  44. package/src/react-ui/blocks/Terminal/hooks/useTerminalWebSocket.ts +0 -292
  45. package/src/react-ui/blocks/Terminal/index.ts +0 -111
  46. package/src/react-ui/blocks/Terminal/panel/LogLinesViewer.tsx +0 -330
  47. package/src/react-ui/blocks/Terminal/panel/TerminalDebugPanel.tsx +0 -242
  48. package/src/react-ui/blocks/Terminal/panel/TerminalFilterDropdown.tsx +0 -202
  49. package/src/react-ui/blocks/Terminal/panel/TerminalFilterTabs.tsx +0 -140
  50. package/src/react-ui/blocks/Terminal/panel/TerminalInteractivePanel.tsx +0 -68
  51. package/src/react-ui/blocks/Terminal/panel/TerminalInteractivePanel.types.ts +0 -85
  52. package/src/react-ui/blocks/Terminal/panel/TerminalInteractivePanelRestty.tsx +0 -383
  53. package/src/react-ui/blocks/Terminal/panel/TerminalInteractivePanelXterm.tsx +0 -439
  54. package/src/react-ui/blocks/Terminal/panel/TerminalLogsPanel.tsx +0 -550
  55. package/src/react-ui/blocks/Terminal/panel/TerminalLogsPanel.types.ts +0 -259
  56. package/src/react-ui/blocks/Terminal/panel/TerminalPanelChrome.styles.ts +0 -75
  57. package/src/react-ui/blocks/Terminal/panel/TerminalPanelChrome.tsx +0 -266
  58. package/src/react-ui/blocks/Terminal/panel/TerminalPanelChrome.types.ts +0 -82
  59. package/src/react-ui/blocks/Terminal/panel/TerminalPanelFooter.tsx +0 -112
  60. package/src/react-ui/blocks/Terminal/panel/TerminalPanelHeader.tsx +0 -178
  61. package/src/react-ui/blocks/Terminal/panel/TerminalPanelToolbar.tsx +0 -203
  62. package/src/react-ui/blocks/Terminal/panel/TerminalSessionControl.tsx +0 -252
  63. package/src/react-ui/blocks/Terminal/panel/TerminalSessionTabs.tsx +0 -334
  64. package/src/react-ui/blocks/Terminal/panel/TerminalSettingsPopover.tsx +0 -261
  65. package/src/react-ui/blocks/Terminal/panel/TerminalThemeSelector.tsx +0 -248
  66. package/src/react-ui/blocks/Terminal/panel/index.ts +0 -72
  67. package/src/react-ui/blocks/Terminal/panel/terminal-filter-dropdown.module.css +0 -59
  68. package/src/react-ui/blocks/Terminal/panel/terminal-session-tabs.module.css +0 -59
  69. package/src/react-ui/blocks/Terminal/parsing/BadgeFormatter.ts +0 -180
  70. package/src/react-ui/blocks/Terminal/parsing/HttpLogParser.ts +0 -248
  71. package/src/react-ui/blocks/Terminal/parsing/LogParser.types.ts +0 -283
  72. package/src/react-ui/blocks/Terminal/parsing/LogParserService.ts +0 -686
  73. package/src/react-ui/blocks/Terminal/parsing/MultilineAggregator.ts +0 -466
  74. package/src/react-ui/blocks/Terminal/parsing/PersistentLogBuffer.ts +0 -343
  75. package/src/react-ui/blocks/Terminal/parsing/SyntaxHighlighter.ts +0 -167
  76. package/src/react-ui/blocks/Terminal/parsing/TableParser.ts +0 -348
  77. package/src/react-ui/blocks/Terminal/parsing/ansi/AnsiColorMapper.ts +0 -251
  78. package/src/react-ui/blocks/Terminal/parsing/ansi/AnsiParser.ts +0 -390
  79. package/src/react-ui/blocks/Terminal/parsing/ansi/ansi.constants.ts +0 -320
  80. package/src/react-ui/blocks/Terminal/parsing/ansi/index.ts +0 -20
  81. package/src/react-ui/blocks/Terminal/parsing/index.ts +0 -69
  82. package/src/react-ui/blocks/Terminal/parsing/levels/LogLevel.types.ts +0 -68
  83. package/src/react-ui/blocks/Terminal/parsing/levels/LogLevelDetector.ts +0 -436
  84. package/src/react-ui/blocks/Terminal/parsing/levels/index.ts +0 -14
  85. package/src/react-ui/blocks/index.ts +0 -11
  86. package/src/react-ui/components/MorphingPopover/MorphingPopover.types.ts +0 -49
  87. package/src/react-ui/components/MorphingPopover/index.tsx +0 -186
  88. package/src/react-ui/components/MorphingPopover/morphing-popover.module.css +0 -153
  89. package/src/react-ui/components/index.ts +0 -9
  90. package/src/react-ui/hooks/Animation/UseAutoHeight.tsx +0 -123
  91. package/src/react-ui/hooks/DOM/UseIsInView.tsx +0 -44
  92. package/src/react-ui/hooks/Formatting/UseListFormat.ts +0 -134
  93. package/src/react-ui/hooks/State/UseControlledState.tsx +0 -57
  94. package/src/react-ui/hooks/State/UseDataState.tsx +0 -76
  95. package/src/react-ui/hooks/index.ts +0 -20
  96. package/src/react-ui/icons/index.ts +0 -12
  97. package/src/react-ui/icons/lucide-animated/activity.tsx +0 -109
  98. package/src/react-ui/icons/lucide-animated/arrow-down-to-line.tsx +0 -51
  99. package/src/react-ui/icons/lucide-animated/arrow-up.tsx +0 -50
  100. package/src/react-ui/icons/lucide-animated/bell-electric.tsx +0 -124
  101. package/src/react-ui/icons/lucide-animated/bell.tsx +0 -93
  102. package/src/react-ui/icons/lucide-animated/bot.tsx +0 -122
  103. package/src/react-ui/icons/lucide-animated/box.tsx +0 -117
  104. package/src/react-ui/icons/lucide-animated/check.tsx +0 -21
  105. package/src/react-ui/icons/lucide-animated/circle-check.tsx +0 -107
  106. package/src/react-ui/icons/lucide-animated/delete.tsx +0 -133
  107. package/src/react-ui/icons/lucide-animated/download.tsx +0 -99
  108. package/src/react-ui/icons/lucide-animated/edit-2.tsx +0 -21
  109. package/src/react-ui/icons/lucide-animated/globe.tsx +0 -23
  110. package/src/react-ui/icons/lucide-animated/home.tsx +0 -103
  111. package/src/react-ui/icons/lucide-animated/index.ts +0 -38
  112. package/src/react-ui/icons/lucide-animated/layers.tsx +0 -23
  113. package/src/react-ui/icons/lucide-animated/layout-panel-top.tsx +0 -143
  114. package/src/react-ui/icons/lucide-animated/list.tsx +0 -54
  115. package/src/react-ui/icons/lucide-animated/package.tsx +0 -24
  116. package/src/react-ui/icons/lucide-animated/palette.tsx +0 -25
  117. package/src/react-ui/icons/lucide-animated/plus.tsx +0 -92
  118. package/src/react-ui/icons/lucide-animated/refresh-cw.tsx +0 -24
  119. package/src/react-ui/icons/lucide-animated/rocket.tsx +0 -24
  120. package/src/react-ui/icons/lucide-animated/save.tsx +0 -23
  121. package/src/react-ui/icons/lucide-animated/search.tsx +0 -94
  122. package/src/react-ui/icons/lucide-animated/settings.tsx +0 -92
  123. package/src/react-ui/icons/lucide-animated/terminal.tsx +0 -46
  124. package/src/react-ui/icons/lucide-animated/trash-2.tsx +0 -25
  125. package/src/react-ui/icons/lucide-animated/trending-down.tsx +0 -151
  126. package/src/react-ui/icons/lucide-animated/trending-up.tsx +0 -150
  127. package/src/react-ui/icons/lucide-animated/type.tsx +0 -23
  128. package/src/react-ui/icons/lucide-animated/upload.tsx +0 -23
  129. package/src/react-ui/icons/lucide-animated/x.tsx +0 -102
  130. package/src/react-ui/index.ts +0 -30
  131. package/src/react-ui/lib/get-strict-context.tsx +0 -56
  132. package/src/react-ui/lib/icon-wrapper.tsx +0 -70
  133. package/src/react-ui/lib/index.ts +0 -9
  134. package/src/react-ui/lib/utils.ts +0 -24
  135. package/src/react-ui/primitives/AutoHeight/index.tsx +0 -74
  136. package/src/react-ui/primitives/CountingNumber/index.tsx +0 -147
  137. package/src/react-ui/primitives/Highlight/Highlight.types.ts +0 -136
  138. package/src/react-ui/primitives/Highlight/index.tsx +0 -577
  139. package/src/react-ui/primitives/Slot/index.tsx +0 -128
  140. package/src/react-ui/primitives/index.ts +0 -16
  141. package/src/react-ui/primitives/waapi/Gooey/Gooey.types.ts +0 -141
  142. package/src/react-ui/primitives/waapi/Gooey/GooeyCanvas.tsx +0 -217
  143. package/src/react-ui/primitives/waapi/Gooey/GooeyFilter.tsx +0 -77
  144. package/src/react-ui/primitives/waapi/Gooey/MorphPath.tsx +0 -58
  145. package/src/react-ui/primitives/waapi/Gooey/gooey-utils.ts +0 -253
  146. package/src/react-ui/primitives/waapi/Gooey/index.ts +0 -50
  147. package/src/react-ui/primitives/waapi/Gooey/useMorphPath.ts +0 -48
  148. package/src/react-ui/primitives/waapi/Morph/Morph.types.ts +0 -106
  149. package/src/react-ui/primitives/waapi/Morph/MorphContext.tsx +0 -21
  150. package/src/react-ui/primitives/waapi/Morph/index.tsx +0 -56
  151. package/src/react-ui/primitives/waapi/Morph/techniques/index.ts +0 -12
  152. package/src/react-ui/primitives/waapi/Morph/techniques/useCSSGridMorph.ts +0 -89
  153. package/src/react-ui/primitives/waapi/Morph/techniques/useFLIPClipPath.ts +0 -176
  154. package/src/react-ui/primitives/waapi/Morph/techniques/useViewTransitions.ts +0 -87
  155. package/src/react-ui/primitives/waapi/Morph/useMorph.ts +0 -101
  156. package/src/react-ui/primitives/waapi/Reorder/Reorder.types.ts +0 -177
  157. package/src/react-ui/primitives/waapi/Reorder/index.tsx +0 -260
  158. package/src/react-ui/primitives/waapi/Reorder/useReorder.ts +0 -47
  159. package/src/react-ui/primitives/waapi/Reorder/useReorderPresence.ts +0 -209
  160. package/src/react-ui/primitives/waapi/Reorder/utils/separatorCoordination.ts +0 -104
  161. package/src/react-ui/primitives/waapi/SlidingNumber/SlidingNumber.styles.ts +0 -14
  162. package/src/react-ui/primitives/waapi/SlidingNumber/SlidingNumber.types.ts +0 -84
  163. package/src/react-ui/primitives/waapi/SlidingNumber/index.tsx +0 -474
  164. package/src/react-ui/primitives/waapi/SlidingText/SlidingText.styles.ts +0 -32
  165. package/src/react-ui/primitives/waapi/SlidingText/SlidingText.types.ts +0 -69
  166. package/src/react-ui/primitives/waapi/SlidingText/index.tsx +0 -140
  167. package/src/react-ui/primitives/waapi/core/animationConstants.ts +0 -215
  168. package/src/react-ui/primitives/waapi/core/index.ts +0 -53
  169. package/src/react-ui/primitives/waapi/core/types.ts +0 -200
  170. package/src/react-ui/primitives/waapi/core/useAnimationOrchestrator.ts +0 -430
  171. package/src/react-ui/primitives/waapi/core/useElementRegistry.ts +0 -81
  172. package/src/react-ui/primitives/waapi/core/useFLIPAnimation.ts +0 -138
  173. package/src/react-ui/primitives/waapi/core/usePositionCapture.ts +0 -106
  174. package/src/react-ui/primitives/waapi/index.ts +0 -139
  175. package/src/react-ui/styles/animations.css +0 -369
  176. package/src/react-ui/ui/Accordion/Accordion.styles.ts +0 -72
  177. package/src/react-ui/ui/Accordion/Accordion.types.ts +0 -199
  178. package/src/react-ui/ui/Accordion/index.tsx +0 -362
  179. package/src/react-ui/ui/AlertDialog/AlertDialog.styles.ts +0 -38
  180. package/src/react-ui/ui/AlertDialog/AlertDialog.types.ts +0 -296
  181. package/src/react-ui/ui/AlertDialog/index.tsx +0 -540
  182. package/src/react-ui/ui/Badge/Badge.styles.ts +0 -43
  183. package/src/react-ui/ui/Badge/Badge.types.ts +0 -26
  184. package/src/react-ui/ui/Badge/index.tsx +0 -34
  185. package/src/react-ui/ui/Button/Button.styles.ts +0 -57
  186. package/src/react-ui/ui/Button/Button.types.ts +0 -63
  187. package/src/react-ui/ui/Button/index.tsx +0 -155
  188. package/src/react-ui/ui/Card/Card.styles.ts +0 -32
  189. package/src/react-ui/ui/Card/Card.types.ts +0 -39
  190. package/src/react-ui/ui/Card/index.tsx +0 -130
  191. package/src/react-ui/ui/Checkbox/Checkbox.styles.ts +0 -40
  192. package/src/react-ui/ui/Checkbox/Checkbox.types.ts +0 -98
  193. package/src/react-ui/ui/Checkbox/index.tsx +0 -233
  194. package/src/react-ui/ui/Combobox/Combobox.styles.ts +0 -34
  195. package/src/react-ui/ui/Combobox/Combobox.types.ts +0 -89
  196. package/src/react-ui/ui/Combobox/index.tsx +0 -331
  197. package/src/react-ui/ui/CornerBracket/CornerBracket.styles.ts +0 -38
  198. package/src/react-ui/ui/CornerBracket/CornerBracket.types.ts +0 -15
  199. package/src/react-ui/ui/CornerBracket/index.tsx +0 -49
  200. package/src/react-ui/ui/DataCard/DataCard.styles.ts +0 -94
  201. package/src/react-ui/ui/DataCard/DataCard.types.ts +0 -125
  202. package/src/react-ui/ui/DataCard/index.tsx +0 -340
  203. package/src/react-ui/ui/Dialog/Dialog.styles.ts +0 -59
  204. package/src/react-ui/ui/Dialog/Dialog.types.ts +0 -284
  205. package/src/react-ui/ui/Dialog/index.tsx +0 -452
  206. package/src/react-ui/ui/DropdownMenu/DropdownMenu.styles.ts +0 -35
  207. package/src/react-ui/ui/DropdownMenu/DropdownMenu.types.ts +0 -81
  208. package/src/react-ui/ui/DropdownMenu/index.tsx +0 -300
  209. package/src/react-ui/ui/DynamicToggle/DynamicToggle.css +0 -376
  210. package/src/react-ui/ui/DynamicToggle/DynamicToggle.styles.ts +0 -85
  211. package/src/react-ui/ui/DynamicToggle/DynamicToggle.types.ts +0 -180
  212. package/src/react-ui/ui/DynamicToggle/index.tsx +0 -316
  213. package/src/react-ui/ui/DynamicToggle/prototype-v7-ios.html +0 -413
  214. package/src/react-ui/ui/DynamicToggle/prototype-v7.html +0 -615
  215. package/src/react-ui/ui/DynamicToggle/prototype-v8-gooey-safari.html +0 -560
  216. package/src/react-ui/ui/DynamicToggle/prototype-v8b-react-structure.html +0 -227
  217. package/src/react-ui/ui/DynamicToggle/prototype.html +0 -419
  218. package/src/react-ui/ui/Field/Field.styles.ts +0 -47
  219. package/src/react-ui/ui/Field/Field.types.ts +0 -60
  220. package/src/react-ui/ui/Field/index.tsx +0 -254
  221. package/src/react-ui/ui/Input/Input.styles.ts +0 -11
  222. package/src/react-ui/ui/Input/Input.types.ts +0 -10
  223. package/src/react-ui/ui/Input/index.tsx +0 -32
  224. package/src/react-ui/ui/InputGroup/InputGroup.styles.ts +0 -53
  225. package/src/react-ui/ui/InputGroup/InputGroup.types.ts +0 -44
  226. package/src/react-ui/ui/InputGroup/index.tsx +0 -149
  227. package/src/react-ui/ui/Label/Label.styles.ts +0 -10
  228. package/src/react-ui/ui/Label/Label.types.ts +0 -9
  229. package/src/react-ui/ui/Label/index.tsx +0 -27
  230. package/src/react-ui/ui/Menu/Menu.styles.ts +0 -71
  231. package/src/react-ui/ui/Menu/Menu.types.ts +0 -425
  232. package/src/react-ui/ui/Menu/index.tsx +0 -900
  233. package/src/react-ui/ui/Popover/Popover.styles.ts +0 -55
  234. package/src/react-ui/ui/Popover/Popover.types.ts +0 -261
  235. package/src/react-ui/ui/Popover/index.tsx +0 -422
  236. package/src/react-ui/ui/Progress/Progress.styles.ts +0 -36
  237. package/src/react-ui/ui/Progress/Progress.types.ts +0 -162
  238. package/src/react-ui/ui/Progress/index.tsx +0 -254
  239. package/src/react-ui/ui/Select/Select.styles.ts +0 -30
  240. package/src/react-ui/ui/Select/Select.types.ts +0 -51
  241. package/src/react-ui/ui/Select/index.tsx +0 -225
  242. package/src/react-ui/ui/Separator/Separator.styles.ts +0 -10
  243. package/src/react-ui/ui/Separator/Separator.types.ts +0 -10
  244. package/src/react-ui/ui/Separator/index.tsx +0 -37
  245. package/src/react-ui/ui/Switch/Switch.styles.ts +0 -50
  246. package/src/react-ui/ui/Switch/Switch.types.ts +0 -155
  247. package/src/react-ui/ui/Switch/index.tsx +0 -253
  248. package/src/react-ui/ui/Tabs/Tabs.css +0 -39
  249. package/src/react-ui/ui/Tabs/Tabs.styles.ts +0 -148
  250. package/src/react-ui/ui/Tabs/Tabs.types.ts +0 -255
  251. package/src/react-ui/ui/Tabs/index.tsx +0 -529
  252. package/src/react-ui/ui/TextFlow/TextFlow.styles.ts +0 -36
  253. package/src/react-ui/ui/TextFlow/TextFlow.types.ts +0 -118
  254. package/src/react-ui/ui/TextFlow/index.tsx +0 -276
  255. package/src/react-ui/ui/Textarea/Textarea.styles.ts +0 -10
  256. package/src/react-ui/ui/Textarea/Textarea.types.ts +0 -9
  257. package/src/react-ui/ui/Textarea/index.tsx +0 -27
  258. package/src/react-ui/ui/Tooltip/Tooltip.styles.ts +0 -43
  259. package/src/react-ui/ui/Tooltip/Tooltip.types.ts +0 -253
  260. package/src/react-ui/ui/Tooltip/index.tsx +0 -394
  261. package/src/react-ui/ui/index.ts +0 -41
  262. package/src/types/css-modules.d.ts +0 -18
@@ -50,6 +50,8 @@ export interface IGooeyCanvasProps {
50
50
  bubbleHeight?: number;
51
51
  /** Bubble inset from edges as fraction 0-1 (default: 0.2) */
52
52
  bubbleInset?: number;
53
+ /** Bubble position relative to the pill (default: 'top') */
54
+ bubblePosition?: 'top' | 'bottom' | 'left' | 'right';
53
55
  /** Whether the bubble is expanded */
54
56
  expanded?: boolean;
55
57
  /** Drop-shadow outline blur in px (default: 0.5) */
@@ -1 +1 @@
1
- {"version":3,"file":"Gooey.types.d.ts","sourceRoot":"","sources":["../../../../../src/react-ui/primitives/waapi/Gooey/Gooey.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC,2DAA2D;IAC3D,EAAE,EAAE,MAAM,CAAC;IACX,8CAA8C;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAMD;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,iBAAiB;IAChC,uEAAuE;IACvE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0BAA0B;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4BAA4B;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qDAAqD;IACrD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uDAAuD;IACvD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yDAAyD;IACzD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAMD;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,eAAgB,SAAQ,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC;IACrE,uBAAuB;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,QAAQ,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAMD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,uBAAuB;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,uBAAuB;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,yBAAyB;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qBAAqB;IACrB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B"}
1
+ {"version":3,"file":"Gooey.types.d.ts","sourceRoot":"","sources":["../../../../../src/react-ui/primitives/waapi/Gooey/Gooey.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC,2DAA2D;IAC3D,EAAE,EAAE,MAAM,CAAC;IACX,8CAA8C;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAMD;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,iBAAiB;IAChC,uEAAuE;IACvE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,cAAc,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IACrD,qCAAqC;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0BAA0B;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4BAA4B;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qDAAqD;IACrD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uDAAuD;IACvD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yDAAyD;IACzD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAMD;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,eAAgB,SAAQ,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC;IACrE,uBAAuB;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,QAAQ,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAMD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,uBAAuB;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,uBAAuB;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,yBAAyB;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qBAAqB;IACrB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B"}
@@ -2,7 +2,7 @@ import type { IGooeyCanvasProps } from './Gooey.types';
2
2
  /**
3
3
  * GooeyCanvas — SVG rects + gooey filter, WAAPI-animated bubble.
4
4
  */
5
- declare function GooeyCanvas({ blur, height, width, radius, fillColor, bubbleHeight: bubbleHeightProp, bubbleInset, expanded, outlineBlur, outlineColor, outlineLayers, alphaGain, alphaOffset, expandDuration, collapseDuration, expandEasing, collapseEasing, className, }: IGooeyCanvasProps): import("react/jsx-runtime").JSX.Element;
5
+ declare function GooeyCanvas({ blur, height, width, radius, fillColor, bubbleHeight: bubbleHeightProp, bubbleInset, bubblePosition, expanded, outlineBlur, outlineColor, outlineLayers, alphaGain, alphaOffset, expandDuration, collapseDuration, expandEasing, collapseEasing, className, }: IGooeyCanvasProps): import("react/jsx-runtime").JSX.Element;
6
6
  declare namespace GooeyCanvas {
7
7
  var displayName: string;
8
8
  }
@@ -1 +1 @@
1
- {"version":3,"file":"GooeyCanvas.d.ts","sourceRoot":"","sources":["../../../../../src/react-ui/primitives/waapi/Gooey/GooeyCanvas.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD;;GAEG;AACH,iBAAS,WAAW,CAAC,EACnB,IAAI,EACJ,MAAW,EACX,KAAW,EACX,MAAa,EACb,SAAyB,EACzB,YAAY,EAAE,gBAAgB,EAC9B,WAAiB,EACjB,QAAgB,EAChB,WAAiB,EACjB,YAA8B,EAC9B,aAAiB,EACjB,SAAS,EACT,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,SAAS,GACV,EAAE,iBAAiB,2CAuKnB;kBA1LQ,WAAW;;;AA8LpB,OAAO,EAAE,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"GooeyCanvas.d.ts","sourceRoot":"","sources":["../../../../../src/react-ui/primitives/waapi/Gooey/GooeyCanvas.tsx"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAOvD;;GAEG;AACH,iBAAS,WAAW,CAAC,EACnB,IAAI,EACJ,MAAW,EACX,KAAW,EACX,MAAa,EACb,SAAyB,EACzB,YAAY,EAAE,gBAAgB,EAC9B,WAAiB,EACjB,cAAsB,EACtB,QAAgB,EAChB,WAAiB,EACjB,YAA8B,EAC9B,aAAiB,EACjB,SAAS,EACT,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,SAAS,GACV,EAAE,iBAAiB,2CAwPnB;kBA5QQ,WAAW;;;AAgRpB,OAAO,EAAE,WAAW,EAAE,CAAC"}
@@ -13,6 +13,10 @@ import { jsx, jsxs } from "react/jsx-runtime";
13
13
  * Uses SVG `<rect>` elements inside a filtered container. The bubble rect
14
14
  * animates via WAAPI for smooth cross-browser rendering.
15
15
  *
16
+ * Supports four bubble positions: top (default), bottom, left, right.
17
+ * For vertical positions (top/bottom), animates y/height.
18
+ * For horizontal positions (left/right), animates x/width.
19
+ *
16
20
  * Key patterns (derived from Sileo):
17
21
  * - Filter applied to canvas div, SVG content inside (not HTML children)
18
22
  * - `transform: translateZ(0)` + `contain: layout style` on canvas
@@ -21,26 +25,153 @@ import { jsx, jsxs } from "react/jsx-runtime";
21
25
  *
22
26
  * @module @mks2508/mks-ui/react/primitives/waapi/Gooey
23
27
  */
28
+ /** Whether a bubble position is horizontal (left/right). */
29
+ function isHorizontal(pos) {
30
+ return pos === "left" || pos === "right";
31
+ }
24
32
  /**
25
33
  * GooeyCanvas — SVG rects + gooey filter, WAAPI-animated bubble.
26
34
  */
27
- function GooeyCanvas({ blur, height = 32, width = 260, radius = 9999, fillColor = "var(--card)", bubbleHeight: bubbleHeightProp, bubbleInset = .2, expanded = false, outlineBlur = .5, outlineColor = "var(--border)", outlineLayers = 2, alphaGain, alphaOffset, expandDuration, collapseDuration, expandEasing, collapseEasing, className }) {
35
+ function GooeyCanvas({ blur, height = 32, width = 260, radius = 9999, fillColor = "var(--card)", bubbleHeight: bubbleHeightProp, bubbleInset = .2, bubblePosition = "top", expanded = false, outlineBlur = .5, outlineColor = "var(--border)", outlineLayers = 2, alphaGain, alphaOffset, expandDuration, collapseDuration, expandEasing, collapseEasing, className }) {
28
36
  const filterId = React$1.useId().replace(/:/g, "") + "-goo";
29
37
  const computedBlur = blur ?? computeBlur(height);
30
38
  const bubbleRectRef = React$1.useRef(null);
31
39
  const animRef = React$1.useRef(null);
32
40
  const [ready, setReady] = React$1.useState(false);
33
41
  const lastValues = React$1.useRef({
34
- y: -1,
35
- h: -1
42
+ a: -1,
43
+ b: -1
36
44
  });
37
45
  const pad = 2;
38
46
  const effectiveR = Math.min(radius, height / 2);
47
+ const horiz = isHorizontal(bubblePosition);
39
48
  const bubbleH = bubbleHeightProp ?? Math.round(height * .4);
40
- const insetPx = width * bubbleInset;
41
- const bubbleW = width - 2 * insetPx;
42
49
  const bubbleR = Math.min(effectiveR * .6, bubbleH * .45, 12);
43
- const totalH = height + bubbleH;
50
+ const spanDim = horiz ? height : width;
51
+ const insetPx = spanDim * bubbleInset;
52
+ const bubbleSpan = spanDim - 2 * insetPx;
53
+ const svgW = horiz ? width + bubbleH : width;
54
+ const svgH = horiz ? height : height + bubbleH;
55
+ const pillX = bubblePosition === "left" ? bubbleH + pad : pad;
56
+ const pillY = bubblePosition === "top" ? bubbleH : 0;
57
+ const bubbleInitial = React$1.useMemo(() => {
58
+ switch (bubblePosition) {
59
+ case "top": return {
60
+ x: insetPx,
61
+ y: bubbleH,
62
+ w: bubbleSpan,
63
+ h: 0
64
+ };
65
+ case "bottom": return {
66
+ x: insetPx,
67
+ y: height,
68
+ w: bubbleSpan,
69
+ h: 0
70
+ };
71
+ case "left": return {
72
+ x: bubbleH,
73
+ y: insetPx,
74
+ w: 0,
75
+ h: bubbleSpan
76
+ };
77
+ case "right": return {
78
+ x: width - pad,
79
+ y: insetPx,
80
+ w: 0,
81
+ h: bubbleSpan
82
+ };
83
+ }
84
+ }, [
85
+ bubblePosition,
86
+ insetPx,
87
+ bubbleH,
88
+ bubbleSpan,
89
+ height,
90
+ width,
91
+ pad
92
+ ]);
93
+ const animTargets = React$1.useMemo(() => {
94
+ switch (bubblePosition) {
95
+ case "top": return {
96
+ attrs: ["y", "height"],
97
+ collapsed: {
98
+ a: bubbleH,
99
+ b: 0
100
+ },
101
+ expanded: {
102
+ a: 0,
103
+ b: bubbleH
104
+ }
105
+ };
106
+ case "bottom": return {
107
+ attrs: ["y", "height"],
108
+ collapsed: {
109
+ a: height,
110
+ b: 0
111
+ },
112
+ expanded: {
113
+ a: height,
114
+ b: bubbleH
115
+ }
116
+ };
117
+ case "left": return {
118
+ attrs: ["x", "width"],
119
+ collapsed: {
120
+ a: bubbleH,
121
+ b: 0
122
+ },
123
+ expanded: {
124
+ a: 0,
125
+ b: bubbleH
126
+ }
127
+ };
128
+ case "right": return {
129
+ attrs: ["x", "width"],
130
+ collapsed: {
131
+ a: width - pad,
132
+ b: 0
133
+ },
134
+ expanded: {
135
+ a: width - pad,
136
+ b: bubbleH
137
+ }
138
+ };
139
+ }
140
+ }, [
141
+ bubblePosition,
142
+ bubbleH,
143
+ height,
144
+ width,
145
+ pad
146
+ ]);
147
+ const svgStyle = React$1.useMemo(() => {
148
+ const base = {
149
+ position: "absolute",
150
+ overflow: "visible"
151
+ };
152
+ switch (bubblePosition) {
153
+ case "top": return {
154
+ ...base,
155
+ top: -bubbleH,
156
+ left: 0
157
+ };
158
+ case "bottom": return {
159
+ ...base,
160
+ top: 0,
161
+ left: 0
162
+ };
163
+ case "left": return {
164
+ ...base,
165
+ top: 0,
166
+ left: -bubbleH
167
+ };
168
+ case "right": return {
169
+ ...base,
170
+ top: 0,
171
+ left: 0
172
+ };
173
+ }
174
+ }, [bubblePosition, bubbleH]);
44
175
  const filterUrl = React$1.useMemo(() => `url(#${filterId})`, [filterId]);
45
176
  const outlineShadow = React$1.useMemo(() => {
46
177
  const shadow = `drop-shadow(0 0 ${outlineBlur}px ${outlineColor})`;
@@ -58,17 +189,21 @@ function GooeyCanvas({ blur, height = 32, width = 260, radius = 9999, fillColor
58
189
  React$1.useEffect(() => {
59
190
  const rect = bubbleRectRef.current;
60
191
  if (!rect) return;
192
+ const init = expanded ? animTargets.expanded : animTargets.collapsed;
61
193
  lastValues.current = {
62
- y: expanded ? 0 : bubbleH,
63
- h: expanded ? bubbleH : 0
194
+ a: init.a,
195
+ b: init.b
64
196
  };
65
- if (expanded) rect.animate([{
66
- y: "0px",
67
- height: `${bubbleH}px`
68
- }], {
69
- duration: 0,
70
- fill: "forwards"
71
- });
197
+ if (expanded) {
198
+ const [attrA, attrB] = animTargets.attrs;
199
+ rect.animate([{
200
+ [attrA]: `${init.a}px`,
201
+ [attrB]: `${init.b}px`
202
+ }], {
203
+ duration: 0,
204
+ fill: "forwards"
205
+ });
206
+ }
72
207
  const raf = requestAnimationFrame(() => setReady(true));
73
208
  return () => cancelAnimationFrame(raf);
74
209
  }, []);
@@ -76,21 +211,21 @@ function GooeyCanvas({ blur, height = 32, width = 260, radius = 9999, fillColor
76
211
  const rect = bubbleRectRef.current;
77
212
  if (!rect || !ready) return;
78
213
  const isExpanding = expanded;
214
+ const [attrA, attrB] = animTargets.attrs;
79
215
  const duration = getResponsiveDuration(isExpanding ? expandDuration ?? GOOEY_TIMING.EXPAND_DURATION : collapseDuration ?? GOOEY_TIMING.COLLAPSE_DURATION);
80
216
  const easing = isExpanding ? expandEasing ?? EASINGS.SPRING_GENTLE : collapseEasing ?? EASINGS.EASE_OUT_CUBIC;
81
- const toY = isExpanding ? 0 : bubbleH;
82
- const toH = isExpanding ? bubbleH : 0;
83
- const fromY = lastValues.current.y;
84
- const fromH = lastValues.current.h;
217
+ const to = isExpanding ? animTargets.expanded : animTargets.collapsed;
218
+ const fromA = lastValues.current.a;
219
+ const fromB = lastValues.current.b;
85
220
  lastValues.current = {
86
- y: toY,
87
- h: toH
221
+ a: to.a,
222
+ b: to.b
88
223
  };
89
224
  if (duration === 0) {
90
225
  if (animRef.current) animRef.current.cancel();
91
226
  rect.animate([{
92
- y: `${toY}px`,
93
- height: `${toH}px`
227
+ [attrA]: `${to.a}px`,
228
+ [attrB]: `${to.b}px`
94
229
  }], {
95
230
  duration: 0,
96
231
  fill: "forwards"
@@ -99,11 +234,11 @@ function GooeyCanvas({ blur, height = 32, width = 260, radius = 9999, fillColor
99
234
  }
100
235
  if (animRef.current) animRef.current.cancel();
101
236
  animRef.current = rect.animate([{
102
- y: `${fromY}px`,
103
- height: `${fromH}px`
237
+ [attrA]: `${fromA}px`,
238
+ [attrB]: `${fromB}px`
104
239
  }, {
105
- y: `${toY}px`,
106
- height: `${toH}px`
240
+ [attrA]: `${to.a}px`,
241
+ [attrB]: `${to.b}px`
107
242
  }], {
108
243
  duration,
109
244
  easing,
@@ -112,7 +247,7 @@ function GooeyCanvas({ blur, height = 32, width = 260, radius = 9999, fillColor
112
247
  }, [
113
248
  ready,
114
249
  expanded,
115
- bubbleH,
250
+ animTargets,
116
251
  expandDuration,
117
252
  collapseDuration,
118
253
  expandEasing,
@@ -124,15 +259,10 @@ function GooeyCanvas({ blur, height = 32, width = 260, radius = 9999, fillColor
124
259
  className: cn("absolute inset-0 rounded-[inherit] pointer-events-none z-0 overflow-visible", className),
125
260
  children: /* @__PURE__ */ jsxs("svg", {
126
261
  "data-slot": "gooey-svg",
127
- width,
128
- height: totalH,
129
- viewBox: `0 0 ${width} ${totalH}`,
130
- style: {
131
- position: "absolute",
132
- top: -bubbleH,
133
- left: 0,
134
- overflow: "visible"
135
- },
262
+ width: svgW,
263
+ height: svgH,
264
+ viewBox: `0 0 ${svgW} ${svgH}`,
265
+ style: svgStyle,
136
266
  "aria-hidden": "true",
137
267
  children: [
138
268
  /* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsxs("filter", {
@@ -162,8 +292,8 @@ function GooeyCanvas({ blur, height = 32, width = 260, radius = 9999, fillColor
162
292
  ]
163
293
  }) }),
164
294
  /* @__PURE__ */ jsx("rect", {
165
- x: pad,
166
- y: bubbleH,
295
+ x: pillX,
296
+ y: pillY,
167
297
  width: width - pad * 2,
168
298
  height: height - pad * 2,
169
299
  rx: effectiveR,
@@ -172,10 +302,10 @@ function GooeyCanvas({ blur, height = 32, width = 260, radius = 9999, fillColor
172
302
  }),
173
303
  /* @__PURE__ */ jsx("rect", {
174
304
  ref: bubbleRectRef,
175
- x: insetPx,
176
- y: bubbleH,
177
- width: bubbleW,
178
- height: 0,
305
+ x: bubbleInitial.x,
306
+ y: bubbleInitial.y,
307
+ width: bubbleInitial.w,
308
+ height: bubbleInitial.h,
179
309
  rx: bubbleR,
180
310
  ry: bubbleR,
181
311
  fill: fillColor
@@ -1,5 +1,5 @@
1
1
  /**
2
- * DynamicToggle — CSS state transitions.
2
+ * DynamicToggle v2 — CSS state transitions.
3
3
  *
4
4
  * Rules requiring :has(), container queries, clip-path, or pseudo-elements.
5
5
  * Layout, colors, sizing in Tailwind (DynamicToggle.styles.ts).
@@ -285,11 +285,11 @@
285
285
  }
286
286
 
287
287
  /* ══════════════════════════════════════════════════════════
288
- * GROUP LABEL (above/below the pill)
288
+ * GROUP LABEL / BUBBLE (above or below the pill)
289
289
  *
290
- * Replaces the old "bubble" element. Positioned via CSS grid.
291
- * In filter/path morph modes, rendered inside GooeyCanvas.
290
+ * Positioned via CSS. In filter/path morph modes, rendered with GooeyCanvas.
292
291
  * In none mode, simple CSS-driven show/hide.
292
+ * bubblePosition: top | bottom (no left/right in v2)
293
293
  * ══════════════════════════════════════════════════════════ */
294
294
 
295
295
  [data-slot="dt-group-label"] {
@@ -319,7 +319,7 @@
319
319
  }
320
320
 
321
321
  /* Top position */
322
- [data-slot="dt-group-label"][data-position="top"] {
322
+ [data-slot="dt-group-label"][data-bubble-position="top"] {
323
323
  bottom: 100%;
324
324
  border-radius: calc(var(--dt-h, 38px) * 0.2) calc(var(--dt-h, 38px) * 0.2) 0 0;
325
325
  border-bottom: none;
@@ -327,29 +327,25 @@
327
327
  }
328
328
 
329
329
  /* Bottom position */
330
- [data-slot="dt-group-label"][data-position="bottom"] {
330
+ [data-slot="dt-group-label"][data-bubble-position="bottom"] {
331
331
  top: 100%;
332
332
  border-radius: 0 0 calc(var(--dt-h, 38px) * 0.2) calc(var(--dt-h, 38px) * 0.2);
333
333
  border-top: none;
334
334
  margin-top: -1px;
335
335
  }
336
336
 
337
- /* When group active → group label grows */
338
- [data-slot="dt-root"]:not(:has([data-slot="dt-track"] > input:checked)) [data-slot="dt-group-label"] {
337
+ /* When group active → group label grows (vertical: top/bottom) */
338
+ [data-slot="dt-root"]:not(:has([data-slot="dt-track"] > input:checked)) [data-slot="dt-group-label"][data-bubble-position="top"],
339
+ [data-slot="dt-root"]:not(:has([data-slot="dt-track"] > input:checked)) [data-slot="dt-group-label"][data-bubble-position="bottom"] {
339
340
  grid-template-rows: 1fr;
340
341
  opacity: 1;
341
342
  }
342
- [data-slot="dt-root"]:not(:has([data-slot="dt-track"] > input:checked)) [data-slot="dt-group-label"] > span {
343
+ [data-slot="dt-root"]:not(:has([data-slot="dt-track"] > input:checked)) [data-slot="dt-group-label"][data-bubble-position="top"] > span,
344
+ [data-slot="dt-root"]:not(:has([data-slot="dt-track"] > input:checked)) [data-slot="dt-group-label"][data-bubble-position="bottom"] > span {
343
345
  padding: 0.35em 0.75em;
344
346
  }
345
347
 
346
348
  /* ── Filter morph mode ── */
347
- [data-slot="dt-root"][data-morph="filter"] {
348
- background: transparent;
349
- border-color: transparent;
350
- box-shadow: none;
351
- overflow: visible;
352
- }
353
349
  [data-slot="dt-root"][data-morph="filter"] [data-slot="dt-group-label"] {
354
350
  border: none;
355
351
  }
@@ -366,11 +362,8 @@
366
362
  }
367
363
 
368
364
  /* ── Path morph mode ── */
369
- [data-slot="dt-root"][data-morph="path"] {
370
- background: transparent;
371
- border-color: transparent;
372
- }
373
365
  [data-slot="dt-root"][data-morph="path"] [data-slot="dt-track"] {
374
366
  position: relative;
375
367
  z-index: 1;
376
368
  }
369
+
@@ -1,5 +1,5 @@
1
1
  /**
2
- * DynamicToggle — CSS state transitions.
2
+ * DynamicToggle v2 — CSS state transitions.
3
3
  *
4
4
  * Rules requiring :has(), container queries, clip-path, or pseudo-elements.
5
5
  * Layout, colors, sizing in Tailwind (DynamicToggle.styles.ts).
@@ -285,11 +285,11 @@
285
285
  }
286
286
 
287
287
  /* ══════════════════════════════════════════════════════════
288
- * GROUP LABEL (above/below the pill)
288
+ * GROUP LABEL / BUBBLE (above or below the pill)
289
289
  *
290
- * Replaces the old "bubble" element. Positioned via CSS grid.
291
- * In filter/path morph modes, rendered inside GooeyCanvas.
290
+ * Positioned via CSS. In filter/path morph modes, rendered with GooeyCanvas.
292
291
  * In none mode, simple CSS-driven show/hide.
292
+ * bubblePosition: top | bottom (no left/right in v2)
293
293
  * ══════════════════════════════════════════════════════════ */
294
294
 
295
295
  [data-slot="dt-group-label"] {
@@ -319,7 +319,7 @@
319
319
  }
320
320
 
321
321
  /* Top position */
322
- [data-slot="dt-group-label"][data-position="top"] {
322
+ [data-slot="dt-group-label"][data-bubble-position="top"] {
323
323
  bottom: 100%;
324
324
  border-radius: calc(var(--dt-h, 38px) * 0.2) calc(var(--dt-h, 38px) * 0.2) 0 0;
325
325
  border-bottom: none;
@@ -327,29 +327,25 @@
327
327
  }
328
328
 
329
329
  /* Bottom position */
330
- [data-slot="dt-group-label"][data-position="bottom"] {
330
+ [data-slot="dt-group-label"][data-bubble-position="bottom"] {
331
331
  top: 100%;
332
332
  border-radius: 0 0 calc(var(--dt-h, 38px) * 0.2) calc(var(--dt-h, 38px) * 0.2);
333
333
  border-top: none;
334
334
  margin-top: -1px;
335
335
  }
336
336
 
337
- /* When group active → group label grows */
338
- [data-slot="dt-root"]:not(:has([data-slot="dt-track"] > input:checked)) [data-slot="dt-group-label"] {
337
+ /* When group active → group label grows (vertical: top/bottom) */
338
+ [data-slot="dt-root"]:not(:has([data-slot="dt-track"] > input:checked)) [data-slot="dt-group-label"][data-bubble-position="top"],
339
+ [data-slot="dt-root"]:not(:has([data-slot="dt-track"] > input:checked)) [data-slot="dt-group-label"][data-bubble-position="bottom"] {
339
340
  grid-template-rows: 1fr;
340
341
  opacity: 1;
341
342
  }
342
- [data-slot="dt-root"]:not(:has([data-slot="dt-track"] > input:checked)) [data-slot="dt-group-label"] > span {
343
+ [data-slot="dt-root"]:not(:has([data-slot="dt-track"] > input:checked)) [data-slot="dt-group-label"][data-bubble-position="top"] > span,
344
+ [data-slot="dt-root"]:not(:has([data-slot="dt-track"] > input:checked)) [data-slot="dt-group-label"][data-bubble-position="bottom"] > span {
343
345
  padding: 0.35em 0.75em;
344
346
  }
345
347
 
346
348
  /* ── Filter morph mode ── */
347
- [data-slot="dt-root"][data-morph="filter"] {
348
- background: transparent;
349
- border-color: transparent;
350
- box-shadow: none;
351
- overflow: visible;
352
- }
353
349
  [data-slot="dt-root"][data-morph="filter"] [data-slot="dt-group-label"] {
354
350
  border: none;
355
351
  }
@@ -366,11 +362,7 @@
366
362
  }
367
363
 
368
364
  /* ── Path morph mode ── */
369
- [data-slot="dt-root"][data-morph="path"] {
370
- background: transparent;
371
- border-color: transparent;
372
- }
373
365
  [data-slot="dt-root"][data-morph="path"] [data-slot="dt-track"] {
374
366
  position: relative;
375
367
  z-index: 1;
376
- }
368
+ }
@@ -29,6 +29,7 @@ export declare const dynamicToggleVariants: (props?: ({
29
29
  variant?: "muted" | "default" | "outline" | "ghost" | null | undefined;
30
30
  size?: "default" | "sm" | "lg" | null | undefined;
31
31
  shape?: "square" | "pill" | "rounded" | null | undefined;
32
+ morph?: "filter" | "path" | "none" | null | undefined;
32
33
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
33
34
  /** Variant props extracted from CVA */
34
35
  export type DynamicToggleVariantProps = VariantProps<typeof dynamicToggleVariants>;
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicToggle.styles.d.ts","sourceRoot":"","sources":["../../../../src/react-ui/ui/DynamicToggle/DynamicToggle.styles.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,mCAAmC;AACnC,MAAM,MAAM,iBAAiB,GACzB,MAAM,GACN,OAAO,GACP,QAAQ,GACR,WAAW,GACX,OAAO,GACP,gBAAgB,GAChB,YAAY,CAAC;AAEjB;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,EAAE,UAAU,CAAC,iBAAiB,CAa7D,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB;;;;8EA8BhC,CAAC;AAEH,uCAAuC;AACvC,MAAM,MAAM,yBAAyB,GAAG,YAAY,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
1
+ {"version":3,"file":"DynamicToggle.styles.d.ts","sourceRoot":"","sources":["../../../../src/react-ui/ui/DynamicToggle/DynamicToggle.styles.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,mCAAmC;AACnC,MAAM,MAAM,iBAAiB,GACzB,MAAM,GACN,OAAO,GACP,QAAQ,GACR,WAAW,GACX,OAAO,GACP,gBAAgB,GAChB,YAAY,CAAC;AAEjB;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,EAAE,UAAU,CAAC,iBAAiB,CAa7D,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB;;;;;8EAqChC,CAAC;AAEH,uCAAuC;AACvC,MAAM,MAAM,yBAAyB,GAAG,YAAY,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
@@ -54,12 +54,18 @@ const dynamicToggleVariants = cva(dynamicToggleStyles.root, {
54
54
  pill: "rounded-full [--dt-radius:9999px]",
55
55
  rounded: "rounded-xl [--dt-radius:0.75rem]",
56
56
  square: "rounded-md [--dt-radius:0.375rem]"
57
+ },
58
+ morph: {
59
+ none: "",
60
+ filter: "bg-transparent border-transparent shadow-none overflow-visible",
61
+ path: "bg-transparent border-transparent"
57
62
  }
58
63
  },
59
64
  defaultVariants: {
60
65
  variant: "default",
61
66
  size: "default",
62
- shape: "pill"
67
+ shape: "pill",
68
+ morph: "none"
63
69
  }
64
70
  });
65
71