@mkbabb/glass-ui 3.11.2 → 3.13.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 (360) hide show
  1. package/dist/{CardAction-DuArVky-.js → CardAction-Cj2eycQ2.js} +2 -2
  2. package/dist/{CommandShortcut-CefCj5mt.js → CommandShortcut-RowNEO6i.js} +4 -4
  3. package/dist/{ContextMenuSubContent-Bhg4f5jX.js → ContextMenuSubContent-BQmxTAdw.js} +4 -4
  4. package/dist/{DataTable-CUHMukiQ.js → DataTable-BCddn3T3.js} +3 -3
  5. package/dist/{DialogContent-BRkT1cjP.js → DialogContent-Dl9WkAoS.js} +3 -3
  6. package/dist/{DialogFooter-Gprw8H_A.js → DialogFooter-Blu4t7tJ.js} +2 -2
  7. package/dist/{HoverPopover-2LOIW34a.js → HoverPopover-CISOJQuZ.js} +1 -1
  8. package/dist/{IconTooltip-Cus0fvK0.js → IconTooltip-DPzE09X9.js} +1 -1
  9. package/dist/MetricBadge-C9QMz1KT.js +79 -0
  10. package/dist/{Notification-DLMhblXR.js → Notification-DdwNxIrI.js} +2 -2
  11. package/dist/{NumberFieldContent-BbLOh8RU.js → NumberFieldContent-CqaN-SvN.js} +3 -3
  12. package/dist/{PopoverContent-BId6ggf_.js → PopoverContent-BYwt2-4x.js} +1 -1
  13. package/dist/{ScrollingText-BPP84wKo.js → ScrollingText-DfFrwSph.js} +1 -1
  14. package/dist/{SelectScrollDownButton-T32cVFeM.js → SelectScrollDownButton-CiDUxfEj.js} +6 -6
  15. package/dist/{Switch-Ch-k3Rv-.js → Switch-CsIuYP_e.js} +1 -1
  16. package/dist/{TabsList-B8CVOQPC.js → TabsList-Dttss653.js} +9 -5
  17. package/dist/{Toaster-1rYWrmAm.js → Toaster-D6q4HtXu.js} +50 -47
  18. package/dist/{ToggleGroupItem-COu_4IW4.js → ToggleGroupItem-D_AHlRw9.js} +18 -22
  19. package/dist/animated-digit.js +2 -2
  20. package/dist/api/index.d.ts +5 -2
  21. package/dist/api.js +2 -2
  22. package/dist/aurora.js +69 -69
  23. package/dist/{badge-CaoFJzRb.js → badge-UILT_3pZ.js} +1 -1
  24. package/dist/badge.js +1 -1
  25. package/dist/{button-DN39cGqL.js → button-ChXMfsud.js} +12 -12
  26. package/dist/button.js +1 -1
  27. package/dist/card.js +1 -1
  28. package/dist/carousel.js +8 -8
  29. package/dist/{check-BBKKKSTf.js → check-njhk-vfu.js} +1 -1
  30. package/dist/{chevron-down-BSkTP2aL.js → chevron-down-DKkxb4VV.js} +1 -1
  31. package/dist/{chevron-right-sDM0Yvrf.js → chevron-right-CPXbqQQz.js} +1 -1
  32. package/dist/{chevron-up-CCOD_FTz.js → chevron-up-n_24SqI-.js} +1 -1
  33. package/dist/coalesceMetric-5qIeZnTx.js +13 -0
  34. package/dist/{color-C5ls_QF7.js → color-CUYeFbgd.js} +9 -7
  35. package/dist/color.js +1 -1
  36. package/dist/command.js +1 -1
  37. package/dist/components/custom/animated-digit/AnimatedDigit.vue.d.ts +8 -0
  38. package/dist/components/custom/aurora/constants/presets.d.ts +5 -62
  39. package/dist/components/custom/aurora/constants/shaders/mediums.glsl.d.ts +1 -1
  40. package/dist/components/custom/aurora/constants/shaders/vangogh-medium.glsl.d.ts +1 -0
  41. package/dist/components/custom/aurora/index.d.ts +1 -1
  42. package/dist/components/custom/configurator/ConfiguratorRow.vue.d.ts +16 -0
  43. package/dist/components/custom/constellation/Constellation.vue.d.ts +74 -6
  44. package/dist/components/custom/constellation/composables/createConstellationField.d.ts +41 -0
  45. package/dist/components/custom/constellation/composables/useConstellationPointer.d.ts +35 -0
  46. package/dist/components/custom/constellation/constants.d.ts +61 -0
  47. package/dist/components/custom/constellation/constellationDraw.d.ts +30 -0
  48. package/dist/components/custom/constellation/constellationField.d.ts +116 -149
  49. package/dist/components/custom/constellation/constellationInteraction.d.ts +132 -0
  50. package/dist/components/custom/constellation/index.d.ts +5 -2
  51. package/dist/components/custom/controls/DarkModeToggle.vue.d.ts +11 -0
  52. package/dist/components/custom/dock/DockRail.vue.d.ts +88 -0
  53. package/dist/components/custom/dock/DockTabButton.vue.d.ts +3 -4
  54. package/dist/components/custom/dock/GlassDock.vue.d.ts +5 -118
  55. package/dist/components/custom/dock/composables/dockMorphContext.d.ts +36 -0
  56. package/dist/components/custom/dock/composables/index.d.ts +1 -0
  57. package/dist/components/custom/dock/composables/useDockClickIntegrity.d.ts +23 -0
  58. package/dist/components/custom/dock/composables/useDockMorphWindow.d.ts +15 -0
  59. package/dist/components/custom/dock/composables/useDockOrientationMorph.d.ts +44 -0
  60. package/dist/components/custom/dock/composables/useDockShellProps.d.ts +165 -0
  61. package/dist/components/custom/dock/composables/useLayerTransition.d.ts +44 -0
  62. package/dist/components/custom/dock/constants.d.ts +48 -0
  63. package/dist/components/custom/dock/index.d.ts +3 -0
  64. package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +5 -37
  65. package/dist/components/custom/fourier-field/index.d.ts +1 -1
  66. package/dist/components/custom/fourier-field/math.d.ts +17 -0
  67. package/dist/components/custom/fourier-field/presets.d.ts +54 -0
  68. package/dist/components/custom/goo-blob/composables/buildMetaballProgram.d.ts +18 -0
  69. package/dist/components/custom/goo-blob/composables/uploadBlobUniforms.d.ts +41 -0
  70. package/dist/components/custom/goo-blob/composables/useBlobPointer.d.ts +4 -3
  71. package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +11 -8
  72. package/dist/components/custom/goo-blob/constants.d.ts +52 -0
  73. package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +1 -0
  74. package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +2 -2
  75. package/dist/components/custom/labeled-field/LabeledField.vue.d.ts +37 -0
  76. package/dist/components/custom/labeled-field/LabeledSelect.vue.d.ts +6 -0
  77. package/dist/components/custom/labeled-field/LabeledSlider.vue.d.ts +6 -0
  78. package/dist/components/custom/labeled-field/LabeledSwitch.vue.d.ts +6 -0
  79. package/dist/components/custom/metric-badge/MetricBadge.vue.d.ts +11 -18
  80. package/dist/components/custom/metric-badge/index.d.ts +1 -0
  81. package/dist/components/custom/metric-cell/MetricCell.vue.d.ts +15 -4
  82. package/dist/components/custom/metric-stack/MetricRow.vue.d.ts +6 -4
  83. package/dist/components/custom/tabs/constants.d.ts +12 -0
  84. package/dist/components/custom/underline/GlassUnderline.vue.d.ts +84 -0
  85. package/dist/components/custom/underline/index.d.ts +2 -0
  86. package/dist/components/custom/underline/types.d.ts +56 -0
  87. package/dist/components/ui/card/Card.vue.d.ts +15 -3
  88. package/dist/components/ui/drawer/Drawer.vue.d.ts +1 -0
  89. package/dist/components/ui/dropdown-menu/DropdownMenuSubContent.vue.d.ts +2 -2
  90. package/dist/components/ui/metric-pill/MetricPill.vue.d.ts +6 -3
  91. package/dist/components/ui/slider/index.d.ts +22 -19
  92. package/dist/components/ui/tabs/TabsIndicator.vue.d.ts +4 -1
  93. package/dist/components/ui/toast/use-toast.d.ts +2 -2
  94. package/dist/components/ui/toggle/Toggle.vue.d.ts +1 -1
  95. package/dist/components/ui/toggle/index.d.ts +1 -1
  96. package/dist/components/ui/toggle-group/ToggleGroup.vue.d.ts +1 -7
  97. package/dist/components/ui/toggle-group/ToggleGroupItem.vue.d.ts +1 -3
  98. package/dist/components/ui/toggle-group/toggleGroupContext.d.ts +0 -13
  99. package/dist/composables/color/index.d.ts +12 -0
  100. package/dist/composables/dark/index.d.ts +1 -1
  101. package/dist/composables/dark/useGlobalDark.d.ts +1 -21
  102. package/dist/composables/glass/index.d.ts +0 -1
  103. package/dist/composables/glass/useGlassBackdropLuminance.d.ts +59 -0
  104. package/dist/composables/glass/useSpecularTracking.d.ts +12 -3
  105. package/dist/composables/motion/core/index.d.ts +1 -1
  106. package/dist/composables/motion/curves.d.ts +48 -0
  107. package/dist/composables/motion/index.d.ts +2 -0
  108. package/dist/composables/motion/springPresets.d.ts +33 -0
  109. package/dist/composables/motion/suite.d.ts +2 -0
  110. package/dist/composables/motion/useLiquidFlex.d.ts +85 -0
  111. package/dist/composables/motion/useSpringMount.d.ts +1 -1
  112. package/dist/configurator.js +1 -1
  113. package/dist/confirm-dialog.js +2 -2
  114. package/dist/constellation.js +336 -222
  115. package/dist/context-menu.js +2 -2
  116. package/dist/controls.js +47 -13
  117. package/dist/dark.d.ts +1 -1
  118. package/dist/dark.js +1 -1
  119. package/dist/data-table.js +1 -1
  120. package/dist/dialog.js +2 -2
  121. package/dist/dock.js +705 -365
  122. package/dist/dockContext-BegmJVmx.js +17 -0
  123. package/dist/dom.js +5 -5
  124. package/dist/{dropdown-menu-D77jX6Df.js → dropdown-menu-DzkkyBwX.js} +11 -8
  125. package/dist/dropdown-menu.js +1 -1
  126. package/dist/expandable-container.js +39 -80
  127. package/dist/forms.js +5 -5
  128. package/dist/fourier-field.js +134 -99
  129. package/dist/fourier-math.js +2 -2
  130. package/dist/glass-panel.js +86 -20
  131. package/dist/glass-ui.css +1 -1
  132. package/dist/glass-ui.js +222 -212
  133. package/dist/goo-blob.js +243 -212
  134. package/dist/hover-card.js +1 -1
  135. package/dist/hover-popover.js +1 -1
  136. package/dist/icon-tooltip.js +1 -1
  137. package/dist/index.d.ts +1 -3
  138. package/dist/instrument-chassis.js +1 -1
  139. package/dist/keyboard.js +1 -1
  140. package/dist/label.js +1 -1
  141. package/dist/labeled-field.js +28 -18
  142. package/dist/{math-DTpRVC0e.js → math-U6-RrLmV.js} +18 -2
  143. package/dist/metric-badge.js +1 -1
  144. package/dist/metric-cell.js +25 -21
  145. package/dist/metric-stack.js +35 -34
  146. package/dist/{minimize-2-lcXOuc6V.js → minimize-2-BV31Ob_h.js} +1 -1
  147. package/dist/motion-core.js +32 -137
  148. package/dist/motion-curves.d.ts +1 -0
  149. package/dist/motion-curves.js +130 -0
  150. package/dist/motion.js +38 -37
  151. package/dist/notification.js +1 -1
  152. package/dist/number-field.js +1 -1
  153. package/dist/paper-backdrop.js +1 -1
  154. package/dist/popover.js +1 -1
  155. package/dist/{presets-BP_ALM0m.js → presets-BKVyQfbt.js} +1 -14
  156. package/dist/progress.js +1 -1
  157. package/dist/reactive.js +2 -2
  158. package/dist/scrolling-text.js +1 -1
  159. package/dist/{search-nbkvr2dC.js → search-BSGrf2Sk.js} +1 -1
  160. package/dist/search.js +9 -9
  161. package/dist/select.js +3 -3
  162. package/dist/separator.js +1 -1
  163. package/dist/{sheet-VZEtNFvO.js → sheet-1fChZjtw.js} +3 -3
  164. package/dist/sheet.js +1 -1
  165. package/dist/{slider-ClgpP7EB.js → slider-B-JP2JlI.js} +4 -4
  166. package/dist/slider.js +1 -1
  167. package/dist/sortable-list.js +2 -2
  168. package/dist/springPresets--YdWTHtm.js +40 -0
  169. package/dist/stacked-icons.js +6 -6
  170. package/dist/styles/animations.css +29 -114
  171. package/dist/styles/cards.css +55 -0
  172. package/dist/styles/components.css +4 -1
  173. package/dist/styles/configurator.css +42 -0
  174. package/dist/styles/dock/layer-group.css +83 -25
  175. package/dist/styles/dock/layers.css +23 -1
  176. package/dist/styles/dock/morph-bridge.css +123 -0
  177. package/dist/styles/dock/morph.css +175 -45
  178. package/dist/styles/dock/overflow.css +51 -1
  179. package/dist/styles/dock/rail-extend.css +300 -0
  180. package/dist/styles/dock/shell.css +63 -105
  181. package/dist/styles/dock-controls/dark-mode-toggle.css +109 -0
  182. package/dist/styles/dock-controls/icon-button.css +133 -0
  183. package/dist/styles/dock-controls/tab-button.css +202 -0
  184. package/dist/styles/dock-controls/touch-floor.css +94 -0
  185. package/dist/styles/dock-controls/triggers.css +128 -0
  186. package/dist/styles/dock-controls.css +30 -595
  187. package/dist/styles/dock.css +2 -0
  188. package/dist/styles/drawer.css +2 -0
  189. package/dist/styles/floating-panel.css +17 -0
  190. package/dist/styles/glass/a11y-fallback.css +245 -0
  191. package/dist/styles/glass/ladder.css +337 -0
  192. package/dist/styles/glass/material.css +238 -0
  193. package/dist/styles/glass/progress-rail.css +78 -0
  194. package/dist/styles/glass/squircle.css +66 -0
  195. package/dist/styles/glass/surfaces.css +306 -0
  196. package/dist/styles/glass-refract.css +2 -0
  197. package/dist/styles/glass.css +31 -1188
  198. package/dist/styles/hover-popover.css +2 -0
  199. package/dist/styles/index.css +28 -14
  200. package/dist/styles/instrument-chassis.css +4 -0
  201. package/dist/styles/paper.css +2 -68
  202. package/dist/styles/segmented-tabs.css +275 -0
  203. package/dist/styles/theme/bridges.css +337 -0
  204. package/dist/styles/theme/dark.css +7 -0
  205. package/dist/styles/theme/literals.css +94 -0
  206. package/dist/styles/theme/radius.css +95 -0
  207. package/dist/styles/theme.css +26 -529
  208. package/dist/styles/tokens/color-radius.css +260 -0
  209. package/dist/styles/tokens/dark-arm.css +200 -0
  210. package/dist/styles/tokens/glass.css +440 -0
  211. package/dist/styles/tokens/light-dark.css +158 -0
  212. package/dist/styles/tokens/offsets-sizing.css +500 -0
  213. package/dist/styles/tokens/property-regs.css +169 -0
  214. package/dist/styles/tokens/scale-paper.css +366 -0
  215. package/dist/styles/tokens/scheme-motion.css +334 -0
  216. package/dist/styles/tokens/shadow.css +166 -0
  217. package/dist/styles/tokens.css +22 -2360
  218. package/dist/styles/typography.css +75 -21
  219. package/dist/styles/utilities/a11y-overrides.css +140 -0
  220. package/dist/styles/utilities/animate.css +26 -0
  221. package/dist/styles/utilities/base.css +365 -0
  222. package/dist/styles/utilities/btn.css +401 -0
  223. package/dist/styles/utilities/components.css +317 -0
  224. package/dist/styles/utilities.css +19 -1291
  225. package/dist/styles/view-transition.css +0 -51
  226. package/dist/switch.js +1 -1
  227. package/dist/tabs.js +91 -82
  228. package/dist/timeline.js +1 -1
  229. package/dist/toast.js +1 -1
  230. package/dist/toggle-group.js +1 -1
  231. package/dist/tooltip.js +1 -1
  232. package/dist/underline.d.ts +1 -0
  233. package/dist/underline.js +85 -0
  234. package/dist/{useAnimatedNumber-Bcpy5Etf.js → useAnimatedNumber-C5I3wWd8.js} +1 -1
  235. package/dist/{useConfiguratorState-DxAqksK6.js → useConfiguratorState-DAoeHVue.js} +8 -8
  236. package/dist/{useGlobalDark-CAhOXNLO.js → useGlobalDark-yhL4Wp-s.js} +3 -22
  237. package/dist/useLiquidFlex-BL0lLLN2.js +30 -0
  238. package/dist/useRAFLoop-Bxv0o6L5.js +109 -0
  239. package/dist/{useScrollProgress-CffFGLa5.js → useScrollProgress-Dlvx-L3v.js} +1 -1
  240. package/dist/useSpecularTracking-Bo5su68i.js +32 -0
  241. package/dist/useSpringMount-CI2jOstM.js +108 -0
  242. package/dist/{useTouchGate-WFyJYsth.js → useTouchGate-Dg7MQI1G.js} +1 -1
  243. package/dist/utils/coalesceMetric.d.ts +29 -0
  244. package/dist/utils/index.d.ts +1 -0
  245. package/dist/vReveal-CqaCz_mC.js +44 -0
  246. package/dist/watercolor-dot.js +11 -9
  247. package/dist/{x-Dfsegz9Y.js → x-BUwTKe50.js} +1 -1
  248. package/package.json +78 -58
  249. package/src/styles/animations.css +29 -114
  250. package/src/styles/cards.css +53 -0
  251. package/src/styles/configurator.css +42 -0
  252. package/src/styles/dock/layer-group.css +83 -25
  253. package/src/styles/dock/layers.css +23 -1
  254. package/src/styles/dock/morph-bridge.css +123 -0
  255. package/src/styles/dock/morph.css +175 -45
  256. package/src/styles/dock/overflow.css +51 -1
  257. package/src/styles/dock/rail-extend.css +300 -0
  258. package/src/styles/dock/shell.css +63 -105
  259. package/src/styles/dock-controls/dark-mode-toggle.css +109 -0
  260. package/src/styles/dock-controls/icon-button.css +133 -0
  261. package/src/styles/dock-controls/tab-button.css +202 -0
  262. package/src/styles/dock-controls/touch-floor.css +94 -0
  263. package/src/styles/dock-controls/triggers.css +128 -0
  264. package/src/styles/dock-controls.css +30 -595
  265. package/src/styles/dock.css +2 -0
  266. package/src/styles/floating-panel.css +15 -0
  267. package/src/styles/glass/a11y-fallback.css +245 -0
  268. package/src/styles/glass/ladder.css +337 -0
  269. package/src/styles/glass/material.css +238 -0
  270. package/src/styles/glass/progress-rail.css +78 -0
  271. package/src/styles/glass/squircle.css +66 -0
  272. package/src/styles/glass/surfaces.css +306 -0
  273. package/src/styles/glass.css +31 -1188
  274. package/src/styles/index.css +28 -14
  275. package/src/styles/paper.css +2 -68
  276. package/src/styles/segmented-tabs.css +271 -0
  277. package/src/styles/theme/bridges.css +337 -0
  278. package/src/styles/theme/dark.css +7 -0
  279. package/src/styles/theme/literals.css +94 -0
  280. package/src/styles/theme/radius.css +95 -0
  281. package/src/styles/theme.css +26 -529
  282. package/src/styles/tokens/color-radius.css +260 -0
  283. package/src/styles/tokens/dark-arm.css +200 -0
  284. package/src/styles/tokens/glass.css +440 -0
  285. package/src/styles/tokens/light-dark.css +158 -0
  286. package/src/styles/tokens/offsets-sizing.css +500 -0
  287. package/src/styles/tokens/property-regs.css +169 -0
  288. package/src/styles/tokens/scale-paper.css +366 -0
  289. package/src/styles/tokens/scheme-motion.css +334 -0
  290. package/src/styles/tokens/shadow.css +166 -0
  291. package/src/styles/tokens.css +22 -2360
  292. package/src/styles/typography.css +75 -21
  293. package/src/styles/utilities/a11y-overrides.css +140 -0
  294. package/src/styles/utilities/animate.css +26 -0
  295. package/src/styles/utilities/base.css +365 -0
  296. package/src/styles/utilities/btn.css +401 -0
  297. package/src/styles/utilities/components.css +317 -0
  298. package/src/styles/utilities.css +19 -1291
  299. package/src/styles/view-transition.css +0 -51
  300. package/dist/DeckProgress-Dmk4_AKN.js +0 -23
  301. package/dist/InstrumentRail-CUJ05YVG.js +0 -44
  302. package/dist/MetricBadge-BZVWIxNy.js +0 -80
  303. package/dist/components/custom/deck-progress/DeckProgress.vue.d.ts +0 -27
  304. package/dist/components/custom/deck-progress/index.d.ts +0 -2
  305. package/dist/components/custom/dialog-native/GlassDialogNative.vue.d.ts +0 -57
  306. package/dist/components/custom/dialog-native/index.d.ts +0 -1
  307. package/dist/components/custom/handmark/HandMark.vue.d.ts +0 -29
  308. package/dist/components/custom/handmark/brush.d.ts +0 -242
  309. package/dist/components/custom/handmark/freehand.d.ts +0 -69
  310. package/dist/components/custom/handmark/geometry.d.ts +0 -50
  311. package/dist/components/custom/handmark/index.d.ts +0 -21
  312. package/dist/components/custom/handmark/ink.d.ts +0 -11
  313. package/dist/components/custom/handmark/texture.d.ts +0 -39
  314. package/dist/components/custom/handmark/types.d.ts +0 -53
  315. package/dist/components/custom/handmark/useHandMark.d.ts +0 -87
  316. package/dist/components/custom/instrument-rail/InstrumentRail.vue.d.ts +0 -91
  317. package/dist/components/custom/instrument-rail/index.d.ts +0 -2
  318. package/dist/composables/motion/useRouteTransition.d.ts +0 -42
  319. package/dist/deck-progress.d.ts +0 -1
  320. package/dist/deck-progress.js +0 -2
  321. package/dist/dockContext-BKeIMmNk.js +0 -9
  322. package/dist/handmark.d.ts +0 -1
  323. package/dist/handmark.js +0 -663
  324. package/dist/instrument-rail.d.ts +0 -1
  325. package/dist/instrument-rail.js +0 -2
  326. package/dist/styles/instrument-rail.css +0 -127
  327. package/dist/useGlassRenderer-D7YGOYiM.js +0 -69
  328. package/dist/useSpecularTracking-BVRZsRHA.js +0 -26
  329. package/dist/useSpringMount-BJSHcLl3.js +0 -113
  330. package/dist/useViewTransition-DaN5Zrox.js +0 -21
  331. package/dist/vReveal-zUIQk-rJ.js +0 -53
  332. package/src/styles/instrument-rail.css +0 -127
  333. /package/dist/{ContextMenuContent-DDa0v27s.js → ContextMenuContent-CT3AS1WX.js} +0 -0
  334. /package/dist/{HoverCardContent-B6CcQ8He.js → HoverCardContent-Csywg3YF.js} +0 -0
  335. /package/dist/{Input-xuDwALQR.js → Input-DWQQIOC4.js} +0 -0
  336. /package/dist/{InstrumentChassis-C2f6cBaQ.js → InstrumentChassis-UUJX0-mW.js} +0 -0
  337. /package/dist/{Label-zRfbQdCn.js → Label-r3WzWrsj.js} +0 -0
  338. /package/dist/{ModalOverlay-B1GkAjNb.js → ModalOverlay-DVLI2VRr.js} +0 -0
  339. /package/dist/{PaperBackdrop-CqwjnfLv.js → PaperBackdrop-DIXTtVq6.js} +0 -0
  340. /package/dist/{Progress-iEuD9pxG.js → Progress-DwlUKGbr.js} +0 -0
  341. /package/dist/{SelectGroup-BFiod7X2.js → SelectGroup-aumMgWLs.js} +0 -0
  342. /package/dist/{SelectSeparator-C4Ql0gzV.js → SelectSeparator-BQ_1Fcbp.js} +0 -0
  343. /package/dist/{Separator-D7sD7RKj.js → Separator-0JE6LtNu.js} +0 -0
  344. /package/dist/{TooltipProvider-CmZzCuaG.js → TooltipProvider-B3MkB_8P.js} +0 -0
  345. /package/dist/{compile-BOXjLUxu.js → compile-B7NGOBcP.js} +0 -0
  346. /package/dist/{constants-yKeKnE84.js → constants-CS75AWHG.js} +0 -0
  347. /package/dist/{createContext-B44Sah_H.js → createContext-BM46COQ-.js} +0 -0
  348. /package/dist/{createLucideIcon-B6uNAU9G.js → createLucideIcon-DydS2qgk.js} +0 -0
  349. /package/dist/{menuItemVariants-CCoBNkU5.js → menuItemVariants-DPiEarb0.js} +0 -0
  350. /package/dist/{supportsCssTimeline-C5oe0lnD.js → supportsCssTimeline-BWenxvHU.js} +0 -0
  351. /package/dist/{useIntersectionPause-Cck5Uxk8.js → useIntersectionPause-Cc-H9ees.js} +0 -0
  352. /package/dist/{useInterval-Dsmqwi03.js → useInterval-iHludrxk.js} +0 -0
  353. /package/dist/{useKeyboardShortcuts-CyIYrndH.js → useKeyboardShortcuts-Be3w_Rwk.js} +0 -0
  354. /package/dist/{useResizeObserver-CWCbk5Px.js → useResizeObserver-BhgdhOIj.js} +0 -0
  355. /package/dist/{useResolveTokenColor-r9pnNjqK.js → useResolveTokenColor-Dvn2RZJW.js} +0 -0
  356. /package/dist/{useSortable-C8ReQ50P.js → useSortable-muI29agz.js} +0 -0
  357. /package/dist/{useTextHighlight-CWEi25hf.js → useTextHighlight-DmRYkOBx.js} +0 -0
  358. /package/dist/{useTimer-3xqf_54b.js → useTimer-Dzarvzuk.js} +0 -0
  359. /package/dist/{useUserInvalidAria-DoJKMZ3s.js → useUserInvalidAria-B2h6jAM_.js} +0 -0
  360. /package/dist/{useViewportReady-RIr5Wgkh.js → useViewportReady-B40FK4Pa.js} +0 -0
@@ -1,23 +1,44 @@
1
- /* Dock CONTROL-family styles — carved out of dock.css at AU.W8b.3.
1
+ /* Dock CONTROL-family styles — thin @import root over dock-controls/*.css
2
+ (AZ.W-CARVE — the AU.W8b.3 monolith drained its no-god-module ratchet row).
2
3
  *
3
4
  * dock.css keeps the shell / density / grain / layer-crossfade contract + the
4
5
  * shared cross-control four-state contract (the `:focus-visible` / `:disabled`
5
6
  * comma-groups + the motion-token `:where()` group, which reference these
6
7
  * control selectors but are shared, not per-control). This file owns the FIVE
7
- * control families themselves:
8
- * 1. `.dock-icon-button` (base / --compact / hover / active / focus / active-paint)
9
- * 2. `.dark-mode-toggle-button` (sizes / hover / focus)
10
- * 3. `.dock-tab-button` (base / states / tier-primary audacious / tier-secondary)
11
- * 4. `.dock-select-trigger` / `.dock-dropdown-trigger` (base / states / __chevron / open-flip)
12
- * 5. the `@media (pointer: coarse)` per-button touch-target floor on `.dock-icon-button`
8
+ * control families themselves, carved into cohesive partials each under the
9
+ * 500-line bound, @import-ed below in CASCADE ORDER into the SAME
10
+ * `@layer components` (the carve moves rules across files in the same source
11
+ * position → byte-isomorphic dist; the no-god-module import-order gate witnesses):
12
+ * 1. dock-controls/icon-button.css `.dock-icon-button` (base / states / glyph / --compact)
13
+ * 2. dock-controls/dark-mode-toggle.css `.dark-mode-toggle-button` (sizes / in-dock glyph inset)
14
+ * 3. dock-controls/tab-button.css `.dock-tab-button` (base / tier-primary / tier-secondary)
15
+ * 4. dock-controls/triggers.css `.dock-select-trigger` / `.dock-dropdown-trigger` (base / states / __chevron)
16
+ * 5. dock-controls/touch-floor.css the coarse @media touch floor + the vertical-rail SELECTED register
17
+ *
18
+ * The shared cross-family `:where()` group (the small-tile specular sizing
19
+ * re-point) stays at THIS root — exactly as the dock.css carve kept its shared
20
+ * `:where()` four-state contract at ITS root — because it references every
21
+ * control selector and nesting it under one control would change coverage.
13
22
  *
14
23
  * AU.W8b.2 — the per-family parent+state clusters use native `&`-nesting
15
24
  * (Baseline Widely available 2023; Lightning CSS down-compiles so the shipped
16
25
  * `dist` CSS is flat with IDENTICAL specificity). The cross-family comma-groups
17
- * stay in dock.css UN-nested (nesting under one control would change coverage).
26
+ * stay UN-nested (nesting under one control would change coverage).
18
27
  *
19
28
  * Imported by index.css directly after dock.css in the same `@layer components`
20
- * (cascade rung 6b) — no new subpath; it ships inside `/styles`. */
29
+ * (cascade rung 6b) — no new subpath; it ships inside `/styles`.
30
+ *
31
+ * CSS `@import` rules must precede every other rule (the dock.css precedent),
32
+ * so the five family partials @import FIRST; the shared cross-family `:where()`
33
+ * group follows in its own `@layer components`. The `:where()` group has ZERO
34
+ * specificity and sets `--glass-specular-size` on the control family — no family
35
+ * partial re-sets that property, so its source position (after the imports vs
36
+ * before) is cascade-immaterial; the byte-isomorphism witness (§4) is the arbiter. */
37
+ @import "./dock-controls/icon-button.css";
38
+ @import "./dock-controls/dark-mode-toggle.css";
39
+ @import "./dock-controls/tab-button.css";
40
+ @import "./dock-controls/triggers.css";
41
+ @import "./dock-controls/touch-floor.css";
21
42
 
22
43
  @layer components {
23
44
  /* AV.W9.3 — momentum-gated dock-control press spring. The `:active` squish
@@ -50,590 +71,4 @@
50
71
  discipline) so the resting tile carries NO bloom. */
51
72
  --glass-specular-size: var(--dock-control-specular-size, 22%);
52
73
  }
53
-
54
- .dock-icon-button {
55
- display: inline-flex;
56
- align-items: center;
57
- justify-content: center;
58
- flex-shrink: 0;
59
- /* AQ.W3 §W3.2 identity base */
60
- scale: 1;
61
- width: var(--dock-control-size, var(--size-icon-btn));
62
- height: var(--dock-control-size, var(--size-icon-btn));
63
- padding: var(--dock-icon-padding, 0);
64
- cursor: pointer;
65
- border: none;
66
- background: transparent;
67
- border-radius: var(--dock-control-radius, var(--radius-pill));
68
- /* Foreground base routes through `--dock-fg-on-aurora` (defaults to
69
- `--foreground`, byte-identical to before) so a consumer floating the
70
- dock over an aurora can lift contrast per-backdrop. The muted icon
71
- weight mixes that base down with `--opacity-icon-muted`. */
72
- color: color-mix(
73
- in srgb,
74
- var(--dock-fg-on-aurora, var(--foreground))
75
- calc(var(--opacity-icon-muted) * 100%),
76
- transparent
77
- );
78
- outline: none;
79
- transition:
80
- background-color var(--dock-motion-fast),
81
- color var(--dock-motion-fast),
82
- /* AT.W7-dock-b — `scale` carries the press micro-feedback spring
83
- (transform-scoped only; the surface fades stay on the flat ease). */
84
- scale var(--dock-press-spring),
85
- opacity var(--dock-motion-fast),
86
- /* The box-shadow fade now carries ONLY the focus-visible ring (shared
87
- `:focus-visible` group in dock.css) + the active-state
88
- `--dock-active-shadow` — the AX.W09-retired hover `--glass-highlight`
89
- specular no longer rides it. */
90
- box-shadow var(--dock-motion-fast);
91
-
92
- /* AT.W7-dock-b — glass icon-hover. The icon-button hover reads as a glass
93
- surface, not a flat `--muted` plate: a translucent card-tinted fill is
94
- the hover affordance. A consumer retunes the fill via `--dock-icon-hover-bg`.
95
-
96
- AX.W09 — the dock control's SECOND specular (the `--glass-highlight`
97
- hover box-shadow, AT.W7-dock-b) is RETIRED. The dock-icon-button is a
98
- member of the unified `.glass-material` group (glass.css), so the moving
99
- `::before` catch-light is now its SOLE specular owner — one light per
100
- surface (the §0 "excise or fail" discipline). Stacking the
101
- `--glass-highlight` inset box-shadow on the most-hovered, slides-floated
102
- surface was the worst-offending double-light blowout; the card-tinted
103
- hover fill carries the affordance without a second catch-light, and
104
- dropping it also removes the `:not(:focus-visible)` specular-vs-ring
105
- juggle. */
106
- /* AX.W45 DK2 — the hover reads the FAMILY token `--dock-control-hover-bg`
107
- (the per-control `--dock-icon-hover-bg` still wins if a consumer set it),
108
- so the whole dock-control family shares ONE glass-translucent hover fill.
109
- One source per state across icon/tab/picker (no four-vocabulary drift). */
110
- &:hover:not(:disabled) {
111
- background: var(
112
- --dock-icon-hover-bg,
113
- var(--dock-control-hover-bg)
114
- );
115
- color: var(--btn-hover-color, var(--foreground));
116
- scale: var(--scale-hover-dock);
117
- }
118
-
119
- &:active:not(:disabled) {
120
- scale: var(--scale-press-dock);
121
- }
122
-
123
- &:focus:not(:focus-visible) {
124
- box-shadow: none;
125
- outline: none;
126
- }
127
-
128
- /* O.W6 Lane B — token-ladder active paint. Defaults match the prior
129
- hardcoded recipe (--muted bg + --foreground color, no transform / border
130
- / shadow). Consumers override the active variant via the
131
- `--dock-active-{bg,color,scale,border,shadow}` cohort scoped to a parent
132
- (e.g. bbnf-buddy `ToolsLayer.vue` audacious active treatment) — no
133
- `:deep()` escapes required. See tokens.css §10 (dock geometry block). */
134
- &:is(.is-active, .active, [aria-expanded="true"], [aria-pressed="true"]) {
135
- background: var(--dock-active-bg);
136
- color: var(--dock-active-color);
137
- scale: var(--dock-active-scale);
138
- border: var(--dock-active-border);
139
- box-shadow: var(--dock-active-shadow);
140
- }
141
- }
142
-
143
- /* focus-visible ring + disabled paint hoisted to the shared `:where()`
144
- group in dock.css. The box-shadow fade transition lives on the base
145
- `.dock-icon-button` rule (it carries the focus-ring + active-shadow fade
146
- since AX.W09 retired the hover `--glass-highlight` specular), so no
147
- per-state transition override is needed. */
148
-
149
- /* AX.W45 D15 — LIBRARY GLYPH OWNERSHIP. The dock icon-button now sizes its glyph
150
- (mirroring `.dark-mode-toggle-button > svg`), so the glyph scales WITH the box
151
- on the `--dock-scale` multiplier instead of swimming at a fixed consumer size.
152
- `--dock-icon-glyph: calc(1.25rem * var(--dock-scale))` (tokens.css) rides the
153
- multiplier — at 1.5× the glyph is 30px in a 60px box, the desktop proportion.
154
- A consumer passing an explicit lucide size class still WINS (utility layer >
155
- component layer) — a DEFAULT, not a ceiling, matching the `.dock-tab-button`
156
- font-size precedent. */
157
- .dock-icon-button > svg {
158
- width: var(--dock-icon-glyph, 1.25rem);
159
- height: var(--dock-icon-glyph, 1.25rem);
160
- }
161
-
162
- .dock-icon-button--compact {
163
- width: var(--dock-compact-control-size, auto);
164
- height: var(--dock-compact-control-size, auto);
165
- min-width: var(--dock-compact-control-min-width, 0);
166
- padding: var(--dock-compact-control-padding, 0.25rem);
167
- }
168
-
169
- .dark-mode-toggle-button {
170
- width: var(--dark-mode-toggle-size, 2.25rem);
171
- height: var(--dark-mode-toggle-size, 2.25rem);
172
- min-width: var(--dark-mode-toggle-size, 2.25rem);
173
- min-height: var(--dark-mode-toggle-size, 2.25rem);
174
- max-width: var(--dark-mode-toggle-size, 2.25rem);
175
- max-height: var(--dark-mode-toggle-size, 2.25rem);
176
- aspect-ratio: 1;
177
- padding: var(--dark-mode-toggle-padding, 0.375rem);
178
- transition:
179
- opacity var(--dock-motion-standard),
180
- background-color var(--dock-motion-standard),
181
- box-shadow var(--dock-motion-fast);
182
-
183
- & > svg {
184
- width: 100%;
185
- height: 100%;
186
- max-width: 100%;
187
- max-height: 100%;
188
- }
189
-
190
- &:hover,
191
- &:focus {
192
- background: var(--surface-tint-10);
193
- opacity: 1;
194
- outline: none;
195
- }
196
-
197
- &:focus-visible {
198
- box-shadow: var(--focus-ring-shadow);
199
- }
200
-
201
- &[data-size="sm"] {
202
- --dark-mode-toggle-size: 1.75rem;
203
- --dark-mode-toggle-padding: 0.25rem;
204
- }
205
-
206
- &[data-size="md"] {
207
- --dark-mode-toggle-size: 2.25rem;
208
- --dark-mode-toggle-padding: 0.375rem;
209
- }
210
-
211
- &[data-size="lg"] {
212
- --dark-mode-toggle-size: 2.75rem;
213
- --dark-mode-toggle-padding: 0.5rem;
214
- }
215
-
216
- &[data-size="control"] {
217
- --dark-mode-toggle-size: var(--control-size, 2.25rem);
218
- --dark-mode-toggle-padding: var(--control-icon-padding, 0.375rem);
219
- }
220
- }
221
-
222
- .dark-mode-toggle-button[data-size="dock"],
223
- .glass-dock
224
- .dark-mode-toggle-button:not([data-size="sm"]):not([data-size="lg"]):not(
225
- [data-size="control"]
226
- ) {
227
- --dark-mode-toggle-size: var(--dock-control-size, var(--size-icon-btn));
228
- --dark-mode-toggle-padding: var(--dock-icon-padding, 0);
229
- }
230
-
231
- /* AX.W06 USF-2 — the dock-control optical-size contract. The
232
- DarkModeToggle renders its OWN internal SVG `h-full w-full` (it bypasses
233
- the `--dock-icon-glyph`-sized `> svg` slot the `.dock-icon-button` family
234
- uses), so IN-DOCK it filled the whole control box edge-to-edge (~2.5× the
235
- nav glyphs) — `--dock-icon-padding` is NEVER DEFINED, so the
236
- `--dark-mode-toggle-padding: var(--dock-icon-padding, 0)` above fell to the
237
- `0` fallback and zero padding let the SVG fill the box. Route the in-dock
238
- toggle glyph through `--dock-control-glyph-size` (the ONE size the whole
239
- dock-control family reads, default = `--dock-icon-glyph`, the same
240
- `--dock-scale`-keyed glyph the nav icons paint), so the toggle is optically
241
- UNIFORM with the nav glyphs WHEN DOCKED. The `h-full w-full` SVG stays
242
- correct for the STANDALONE DarkModeToggle sizes (no `.glass-dock`
243
- ancestor); this rule is scoped to the in-dock path only. Machine-checked by
244
- the dock-control optical-parity gate, not eyeballed. */
245
- .glass-dock
246
- .dark-mode-toggle-button:not([data-size="sm"]):not([data-size="lg"]):not(
247
- [data-size="control"]
248
- )
249
- > svg {
250
- width: var(--dock-control-glyph-size, var(--dock-icon-glyph, 1.25rem));
251
- height: var(--dock-control-glyph-size, var(--dock-icon-glyph, 1.25rem));
252
- }
253
-
254
- .dock-tab-button {
255
- display: inline-flex;
256
- align-items: center;
257
- flex-shrink: 0;
258
- /* P.W4 Lane B inline-absorb: the `--dock-tab-h` density-keyed height
259
- knob (parallel to DockIconButton's --dock-control-size) merged
260
- here from the prior DockTabButton.vue scoped style block. The
261
- density rungs that set `--dock-tab-h` per tier live in dock.css
262
- (the `.glass-dock[data-density="…"]` blocks) — Q.W3
263
- Lane A consolidated them out of utilities.css, closing the
264
- cascade-order split-brain. When a parent <GlassDock density="…">
265
- sets `--dock-tab-h`, the tab-button reserves that row even when
266
- the glyph + padding sum would ride lower. Falls through to
267
- `--dock-tab-min-height` (kept for audacious-tier callers) and
268
- finally to `auto`. R3-spec / audit-E P0-3. */
269
- min-height: var(--dock-tab-h, var(--dock-tab-min-height, auto));
270
- padding-inline: var(--dock-tab-padding-inline, 0.75rem);
271
- padding-block: var(--dock-tab-padding-block, 0.375rem);
272
- border: none;
273
- background: transparent;
274
- border-radius: var(--dock-control-radius, var(--radius-pill));
275
- /* Default font-size carries through to text-only tab content; consumers
276
- wrapping content in an explicit type utility (e.g. `text-hero`,
277
- `text-display`) on an inner <span> win because Tailwind v4 ships
278
- @utility blocks in @layer utilities, which ranks above @layer
279
- components — so this declaration is a fallback, not a ceiling. */
280
- font-size: var(--type-small);
281
- line-height: 1;
282
- color: var(--muted-foreground);
283
- text-decoration: none;
284
- cursor: pointer;
285
- white-space: nowrap;
286
- outline: none;
287
- /* AQ.W3 §W3.2 identity base */
288
- scale: 1;
289
- transition:
290
- background-color var(--dock-motion-fast),
291
- color var(--dock-motion-fast),
292
- /* AT.W7-dock-b — press micro-feedback spring (transform-scoped). */ scale
293
- var(--dock-press-spring);
294
-
295
- /* AX.W45 DK2 — converged onto the FAMILY hover/active token pair (the
296
- surface-tint-8/10 ladder it spoke is ≈ the same intent — glass-translucent
297
- foreground-over-transparent). ONE grammar across icon/tab/picker.
298
- AX.W45-TUNE Q3/C3 — the hover MOTION channel is now UNIFIED: the
299
- `--scale-hover-dock` lift fires here (it used to fire on only icon +
300
- dropdown), so all four control members lift on hover as ONE register —
301
- the bg cross-fade (glass-tier), the scale, and the specular gleam read
302
- together BEFORE click. The transform rides `--dock-press-spring`
303
- (`--spring-smooth`) per the W52 easing doctrine. */
304
- &:hover:not(:disabled) {
305
- background: var(--dock-control-hover-bg);
306
- color: var(--foreground);
307
- scale: var(--scale-hover-dock);
308
- }
309
-
310
- &:active:not(:disabled) {
311
- scale: var(--scale-press-dock);
312
- }
313
-
314
- &:focus:not(:focus-visible) {
315
- box-shadow: none;
316
- }
317
-
318
- /* focus-visible ring + disabled paint hoisted to the shared `:where()`
319
- group in dock.css. */
320
-
321
- &:is(.is-active, .active, [aria-current="page"], [aria-pressed="true"]) {
322
- background: var(--dock-control-active-bg);
323
- color: var(--foreground);
324
- }
325
- }
326
-
327
- /* Tier — primary ────────────────────────────────────────────
328
- *
329
- * Per W2.7 §9, §12, §13, §17. The primary tier composes three at-rest
330
- * marks (top-highlight, bottom under-shadow, baseline glass) with two
331
- * disco accents on hover (specular swap, disco-grain).
332
- *
333
- * D6.b — the disco-STAR is GONE (the sparkle-sweep sweep is excised from the
334
- * underlying `btn-audacious`, utilities.css). The primary dock button's gold
335
- * identity — the "golden dock button" the user likes — is RE-EXPRESSED sans
336
- * star: a tooled `--gold-rim` gilt edge (the brushed-brass-under-glass read)
337
- * plus the surviving specular catch-light + disco-grain on hover. Three quiet
338
- * golds replacing one loud star.
339
- *
340
- * Reservation: disco fires on hover only. At rest the button reads as
341
- * a Vignelli-restrained composed glass surface with a hairline gilt edge.
342
- * The `--phase-color` cascade (provided by `<InstrumentChassis>` via
343
- * `data-phase`) tints the disco-grain radial only on hover; idle is neutral.
344
- *
345
- * K.W6 Lane B — the canonical disco-grain + specular recipe lifted to
346
- * `@utility btn-audacious` (utilities.css). The Vue <DockTabButton> attaches
347
- * `btn-audacious` automatically when the consumer passes `data-tier="primary"`.
348
- * The dock-local rules below are STRICTLY the dock extension: structural shell
349
- * (padding, base surface tint, min-height) + the gilt-edge gold identity +
350
- * phase-tint extensions (hover radial uses `--phase-color`, plus the
351
- * `[data-phase]` `::before` halo).
352
- */
353
- .dock-tab-button[data-tier="primary"] {
354
- --dock-tab-min-height: 4rem;
355
- padding-inline: 1.5rem;
356
- background: color-mix(in srgb, var(--card) 60%, transparent);
357
- color: var(--foreground);
358
-
359
- /* D6.b — the gilt edge: a 1px inner `--gold-rim` ring + a faint gold
360
- top-catch, the tooled-brass identity that replaces the excised star.
361
- A box-shadow (no layout, no paint cost), composing UNDER the hover
362
- specular/grain. The gold reads as a bevel light at the edge, never a
363
- fill — the surface still reads as composed glass. Idiom mirrors the
364
- `.glass-gilt` modifier (glass.css region) at the dock-button scale. */
365
- box-shadow:
366
- inset 0 0 0 1px var(--gold-rim),
367
- inset 0 0.5px 0 0
368
- color-mix(in oklab, var(--gold-light) 30%, transparent);
369
-
370
- /* Phase-tint hover override — same disco-grain composition as
371
- * `btn-audacious`, but the radial uses `--phase-color` (instrument-
372
- * cluster axis) instead of the canonical `--primary`. The `--paper-
373
- * clean-texture` overlay and `--glass-specular` shadow stack are
374
- * inherited from the underlying `btn-audacious` utility. */
375
- /* AX.W52 D19 — the phase-tint hover radial DEMOTED: the prior
376
- * `ellipse at 30% 30%` at 18% was a loud top-LEFT corner hotspot. Toned to
377
- * 8% and the anchor shifted off the hard corner toward a softer top-biased
378
- * ellipse (`40% 25%`) with a tighter `transparent 55%` falloff, so it reads
379
- * as a surface lift rather than a corner glow — the disco hover identity
380
- * survives, the egregious corner bloom does not. */
381
- &:hover:not(:disabled) {
382
- --glass-grain-opacity: var(--glass-grain-opacity-disco, 0.08);
383
- background-image:
384
- var(--paper-clean-texture),
385
- radial-gradient(
386
- ellipse at 40% 25%,
387
- color-mix(
388
- in srgb,
389
- var(--phase-color, var(--foreground)) 8%,
390
- transparent
391
- ),
392
- transparent 55%
393
- );
394
- background-blend-mode: overlay, normal;
395
- background-size: var(--paper-texture-size), auto;
396
- }
397
-
398
- /* Q.W3.A.4 — phase-tint backplate halo at the pill wrapper.
399
- *
400
- * An inner glyph wrapper's own halo would be clipped by the pill's
401
- * `overflow: hidden` and never escape the glyph box. This `::before`
402
- * lifts the phase-tint to the pill itself so the glow composes with the
403
- * whole CTA. Scoped to active phases — at idle / ready the pill stays
404
- * neutral and inherits the W2.7 reservation ("disco fires on hover
405
- * only"). */
406
- /* AX.W52 D19 — the REST phase-halo `::before` (fires during a speedtest run
407
- * on the most prominent dock control) DEMOTED on the same axis as the hover
408
- * radial: 18%→8%, the hard `30% 30%` corner shifted to a softer `40% 25%`
409
- * top-biased ellipse with a tighter `transparent 55%` falloff, and the
410
- * `opacity: 1` dropped to 0.5 so the persistent run-time halo is a subtle
411
- * surface lift, not a corner bloom that washes the pill for the whole run. */
412
- &[data-phase]:not([data-phase="ready"]):not([data-phase="idle"])::before {
413
- content: "";
414
- position: absolute;
415
- inset: 0;
416
- border-radius: inherit;
417
- background: radial-gradient(
418
- ellipse at 40% 25%,
419
- color-mix(
420
- in srgb,
421
- var(--phase-color, var(--foreground)) 8%,
422
- transparent
423
- )
424
- 0%,
425
- transparent 55%
426
- );
427
- pointer-events: none;
428
- z-index: -1;
429
- opacity: 0.5;
430
- transition: opacity var(--duration-fast) var(--ease-standard);
431
- }
432
- }
433
-
434
- /* Tier — secondary ──────────────────────────────────────────
435
- *
436
- * Companion to `data-tier="primary"`. Carries the same edge-light +
437
- * edge-shadow skeu vocabulary at quieter weight: no disco accent, no
438
- * sparkle, no curvature radial. Composes for icon-button consumers
439
- * (chassis ActionCluster, SettingsCog) where the surface needs a
440
- * glass-tier read but not the audacious primary punch. Per P.W1.B
441
- * audit-C §3 — closes the four bare `<DockIconButton>` consumer sites
442
- * (cog + back + retake + stop) without redefining the family. The
443
- * secondary tier is a cross-control comma-group (tab + icon button), so it
444
- * stays flat — nesting under one control would change coverage.
445
- */
446
- .dock-tab-button[data-tier="secondary"],
447
- .dock-icon-button[data-tier="secondary"] {
448
- background: color-mix(in srgb, var(--card) 50%, transparent);
449
- border: 1px solid var(--glass-border-quiet);
450
- box-shadow: var(--border-hairline), var(--glass-highlight);
451
- }
452
-
453
- .dock-tab-button[data-tier="secondary"]:hover:not(:disabled),
454
- .dock-icon-button[data-tier="secondary"]:hover:not(:disabled) {
455
- background: color-mix(in srgb, var(--card) 65%, transparent);
456
- box-shadow:
457
- var(--glass-specular),
458
- 0 0.5px 0 0 rgb(0 0 0 / 0.06);
459
- }
460
-
461
- .dock-select-trigger,
462
- .dock-dropdown-trigger {
463
- display: inline-flex;
464
- align-items: center;
465
- justify-content: center;
466
- flex-shrink: 0;
467
- /* AQ.W3 §W3.2 identity base */
468
- scale: 1;
469
- gap: var(--dock-trigger-gap, 0.25rem);
470
- min-height: var(--dock-trigger-min-height, auto);
471
- padding: var(--dock-trigger-padding-block, 0.25rem)
472
- var(--dock-trigger-padding-inline, 0.5rem);
473
- white-space: nowrap;
474
- cursor: pointer;
475
- border: none;
476
- background: transparent;
477
- border-radius: var(--dock-control-radius, var(--radius-pill));
478
- /* Shares the dock-icon-button legibility base (`--dock-fg-on-aurora`). */
479
- color: color-mix(
480
- in srgb,
481
- var(--dock-fg-on-aurora, var(--foreground))
482
- calc(var(--opacity-icon-muted) * 100%),
483
- transparent
484
- );
485
- outline: none;
486
- transition:
487
- background-color var(--dock-motion-fast),
488
- color var(--dock-motion-fast),
489
- /* AT.W7-dock-b — press micro-feedback spring (transform-scoped). */ scale
490
- var(--dock-press-spring),
491
- opacity var(--dock-motion-fast);
492
- }
493
-
494
- /* AX.W45 DK2 — the pickers move OFF the opaque `--muted` flat plate onto the
495
- glass-translucent FAMILY hover token (the dock substrate shows through, not a
496
- solid cream rectangle over the glass — the loudest "not right" tell). hover ≠
497
- open now: the active/open rule below reads `--dock-control-active-bg` (a tint
498
- LADDER step above hover), so an OPEN dropdown reads distinctly from a merely-
499
- hovered one (paired with the chevron flip). ONE source per state, glass-aware
500
- across the whole dock-control family. */
501
- /* AX.W45-TUNE Q3/C3 — the picker hover lift is now in the SHARED group: the
502
- `--scale-hover-dock` scale fires on BOTH select + dropdown (it used to fire on
503
- the dropdown ONLY — the split-brain hover the DK2 fix left). All four dock
504
- control members (icon/tab/select/dropdown) now lift on hover as one register,
505
- mirroring the unified glass-tier `--dock-control-hover-bg` cross-fade. The
506
- lone `.dock-dropdown-trigger:hover` scale rule is RETIRED into this group. */
507
- .dock-select-trigger:hover:not(:disabled),
508
- .dock-dropdown-trigger:hover:not(:disabled) {
509
- background: var(--dock-control-hover-bg);
510
- color: var(--btn-hover-color, var(--foreground));
511
- scale: var(--scale-hover-dock);
512
- }
513
-
514
- .dock-select-trigger:active:not(:disabled),
515
- .dock-dropdown-trigger:active:not(:disabled) {
516
- scale: var(--scale-press-dock);
517
- }
518
-
519
- .dock-select-trigger:focus:not(:focus-visible),
520
- .dock-dropdown-trigger:focus:not(:focus-visible) {
521
- box-shadow: none;
522
- outline: none;
523
- }
524
-
525
- /* focus-visible ring + disabled paint hoisted to the shared `:where()`
526
- group in dock.css; this rule adds only the box-shadow fade transition.
527
- `scale` keeps the AT.W7-dock-b press micro-feedback spring. */
528
- .dock-select-trigger:focus-visible,
529
- .dock-dropdown-trigger:focus-visible {
530
- transition:
531
- background-color var(--dock-motion-fast),
532
- color var(--dock-motion-fast),
533
- scale var(--dock-press-spring),
534
- opacity var(--dock-motion-fast),
535
- box-shadow var(--dock-motion-fast);
536
- }
537
-
538
- .dock-select-trigger:is(
539
- .is-active,
540
- .active,
541
- [aria-expanded="true"],
542
- [aria-pressed="true"]
543
- ),
544
- .dock-dropdown-trigger:is(
545
- .is-active,
546
- .active,
547
- [aria-expanded="true"],
548
- [aria-pressed="true"]
549
- ) {
550
- /* AX.W45 DK2 — the OPEN affordance: a translucent active fill a ladder step
551
- above hover (NOT the opaque `--muted`, NOT byte-identical to hover). OPEN =
552
- (chevron up + this active fill); HOVER = (the lighter hover fill, chevron
553
- down) — the smooth glass-aware four-state read the picker lacked. */
554
- background: var(--dock-control-active-bg);
555
- color: var(--foreground);
556
- }
557
-
558
- .dock-select-trigger__chevron {
559
- width: var(--dock-trigger-icon-size, 0.75rem);
560
- height: var(--dock-trigger-icon-size, 0.75rem);
561
- flex-shrink: 0;
562
- opacity: 0.5;
563
- /* Individual-transform identity base (AQ.W3 §W3.2) — `rotate:` longhand
564
- for family consistency (not a stacking-context hazard: child glyph).
565
- AT.W7-dock-b — the open/close flip carries the press micro-feedback
566
- spring (transform-scoped). */
567
- rotate: 0deg;
568
- transition: rotate var(--dock-press-spring);
569
- }
570
-
571
- .dock-select-trigger[data-state="open"] .dock-select-trigger__chevron {
572
- rotate: 180deg;
573
- }
574
-
575
- /* AX.W45 D15 — coarse-pointer touch floor, button-level half. The IN-DOCK floor
576
- is subsumed into the `--dock-scale` multiplier + the `max(…, 44px)` clamp in
577
- the dock.css density cascade (the in-dock control-size grows ~1.5× past the
578
- 44px target, the clamp guarantees the floor even below 1.0× scale). This
579
- per-button rule is the STANDALONE half: a DockIconButton with NO `.glass-dock`
580
- ancestor (a routed gear) has no density cascade lifting its size, so it keeps
581
- the explicit `min-{block,inline}-size` floor. Scoped `:not(:where(.glass-dock
582
- *))` so it does NOT double-stamp on an in-dock button (the cascade owns that —
583
- one path per surface, no two-floor). Compact buttons opt out. */
584
- @media (pointer: coarse) {
585
- .dock-icon-button:not(.dock-icon-button--compact):not(:where(.glass-dock *)) {
586
- min-block-size: var(--dock-touch-target, 2.75rem);
587
- min-inline-size: var(--dock-touch-target, 2.75rem);
588
- }
589
- }
590
-
591
- /* AX.W06 F2/F3 — the HOISTED refined rail nav-item polish. The demo's
592
- `SidebarDock` dogfooded the active-category affordance (accent glyph tint +
593
- a left-edge accent rule) as DEMO-PRIVATE chrome (`demo/layout/dock-nav.css`
594
- `.demo-sidebar-item.is-active`), so a consumer reaching for `variant="rail"`
595
- got the UN-refined bare `.is-active` colour shift. This hoists the refined
596
- treatment into the shipped variant CSS so the demo == the shipped contract
597
- (the demo no longer re-derives a worse rail by hand). The tap-squish press
598
- feedback (the `:active` `--scale-press-dock` squish) + the right-anchored
599
- tooltips are already the dock-control family + the consumer's `<Tooltip
600
- side="right">` — this carries the active-item ACCENT, the half the variant
601
- CSS did not own.
602
-
603
- The accent is TOKENIZED, not baked: `--dock-rail-active-accent` defaults to
604
- the library `--primary` brand ink; a consumer retints it per-instance (the
605
- demo overrides it to `--viz-fourier` NCSU-red on the cascade). The active
606
- state reads the SHIPPED four-state hooks the dock-control family already
607
- activates (`.is-active`, `aria-current="page"`, `[aria-pressed="true"]`).
608
- Scoped to a `.glass-dock.variant-rail` descendant icon-button — a horizontal
609
- dock or the layer-switcher rail are untouched. */
610
- .glass-dock.variant-rail .dock-icon-button {
611
- position: relative;
612
- }
613
-
614
- .glass-dock.variant-rail
615
- .dock-icon-button:is(.is-active, [aria-current="page"], [aria-pressed="true"]) {
616
- --dock-active-color: var(--dock-rail-active-accent, var(--primary));
617
- color: var(--dock-rail-active-accent, var(--primary));
618
- }
619
-
620
- /* The leading-edge accent rule — a short rounded bar pinned to the rail-leading
621
- edge of the active nav item (the iOS / Figma side-rail selected-affordance).
622
- `inset-inline-start` keys it off the writing-direction leading edge, so the
623
- bar sits OUTSIDE the button on the rail's plate; `inset-block: <inset>` keeps
624
- it short + centred. The width/inset/colour all read `--dock-rail-active-*`
625
- tokens so the whole accent is tunable from one place. */
626
- .glass-dock.variant-rail
627
- .dock-icon-button:is(.is-active, [aria-current="page"], [aria-pressed="true"])::before {
628
- content: "";
629
- position: absolute;
630
- inset-block: var(--dock-rail-accent-inset, 18%);
631
- inset-inline-start: calc(
632
- -1 * var(--dock-rail-accent-width, 3px) - var(--dock-rail-accent-gap, 2px)
633
- );
634
- width: var(--dock-rail-accent-width, 3px);
635
- border-radius: var(--radius-pill);
636
- background: var(--dock-rail-active-accent, var(--primary));
637
- pointer-events: none;
638
- }
639
74
  }
@@ -40,6 +40,8 @@
40
40
  @import "./dock/layers.css";
41
41
  @import "./dock/layer-group.css";
42
42
  @import "./dock/overflow.css";
43
+ @import "./dock/rail-extend.css";
44
+ @import "./dock/morph-bridge.css";
43
45
 
44
46
  /* AX.W01 — the SINGLE morph scalar. `useLayerTransition` writes it once per frame
45
47
  to the `.glass-dock` root; EVERY morph axis (box size, padding, radius, scale,
@@ -10,6 +10,10 @@
10
10
  backdrop-filter: var(--glass-blur-resting);
11
11
  color: var(--popover-foreground);
12
12
  box-shadow: var(--glass-shadow-resting);
13
+ /* AZ.R5-4 — the comfortable panel inner-pad rung (consumer-verified the
14
+ tight default). Token-first: a consumer retunes every floating panel +
15
+ dropdown surface from `--panel-padding`. */
16
+ padding: var(--panel-padding);
13
17
  pointer-events: auto;
14
18
  /* V.W3.T9 — animation grammar routes through the canonical
15
19
  Tailwind `animate-floating-panel-in` utility (defined in
@@ -32,3 +36,14 @@
32
36
  .dropdown-sub-content {
33
37
  font-family: var(--dropdown-menu-font, inherit);
34
38
  }
39
+
40
+ /* AZ.R5-4 — the comfortable menu inner-pad rung. The dropdown content family
41
+ reads the shared `--panel-padding` token (the prior hand-set `p-1` was the
42
+ tight floor the user flagged on the slides deck). Token-first: one override
43
+ retunes every teleported menu surface. Unlayered like the font rule above —
44
+ the `p-1`/literal Tailwind pad was removed from the SFC `cn()` chains so this
45
+ is the sole padding authority. */
46
+ .dropdown-menu-content,
47
+ .dropdown-sub-content {
48
+ padding: var(--panel-padding);
49
+ }