@mkbabb/glass-ui 3.13.0 → 4.0.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 (304) hide show
  1. package/dist/CardAction-XH4YBVEK.js +158 -0
  2. package/dist/{CommandShortcut-RowNEO6i.js → CommandShortcut-DdtWXxOK.js} +57 -52
  3. package/dist/{ContextMenuSubContent-BQmxTAdw.js → ContextMenuSubContent-B0Vs6atR.js} +1 -1
  4. package/dist/{DataTable-BCddn3T3.js → DataTable-C464Zbqd.js} +99 -97
  5. package/dist/DialogContent-DDE6pQBU.js +103 -0
  6. package/dist/{DialogFooter-Blu4t7tJ.js → DialogFooter-8eZbdmPc.js} +1 -1
  7. package/dist/FadingScroll-DwNnvKMs.js +76 -0
  8. package/dist/{HoverPopover-CISOJQuZ.js → HoverPopover-Dpzwvc4t.js} +1 -1
  9. package/dist/IconChip-BDw1j5mu.js +54 -0
  10. package/dist/{MetricBadge-C9QMz1KT.js → MetricBadge-BpC0R_Ec.js} +1 -1
  11. package/dist/{Notification-DdwNxIrI.js → Notification-DKjKsQq8.js} +8 -8
  12. package/dist/{NumberFieldContent-CqaN-SvN.js → NumberFieldContent-1VtwDSgf.js} +1 -1
  13. package/dist/PopoverContent-BTorlp--.js +127 -0
  14. package/dist/{Progress-DwlUKGbr.js → Progress-hAT4gqGH.js} +97 -77
  15. package/dist/{ScrollingText-DfFrwSph.js → ScrollingText-CUVFTWk2.js} +2 -2
  16. package/dist/{SelectScrollDownButton-CiDUxfEj.js → SelectScrollDownButton-C1jb3b3K.js} +22 -6
  17. package/dist/{Switch-CsIuYP_e.js → Switch-Dr--uLGH.js} +1 -1
  18. package/dist/{Toaster-D6q4HtXu.js → Toaster-Bm_HQSpc.js} +6 -6
  19. package/dist/{ToggleGroupItem-D_AHlRw9.js → ToggleGroupItem-Dzk9hWsF.js} +1 -1
  20. package/dist/animated-digit.js +2 -2
  21. package/dist/api/index.d.ts +8 -5
  22. package/dist/api.js +2 -2
  23. package/dist/aurora.js +132 -117
  24. package/dist/{button-ChXMfsud.js → button-BNDWhAZb.js} +2 -2
  25. package/dist/button.js +1 -1
  26. package/dist/card.js +1 -1
  27. package/dist/carousel.d.ts +1 -1
  28. package/dist/carousel.js +97 -141
  29. package/dist/collapsible.js +1 -1
  30. package/dist/color-swatch.d.ts +1 -0
  31. package/dist/color-swatch.js +47 -0
  32. package/dist/color.js +1 -1
  33. package/dist/command.js +1 -1
  34. package/dist/components/custom/aurora/constants/presets.d.ts +28 -0
  35. package/dist/components/custom/aurora/constants/renderMode.d.ts +2 -0
  36. package/dist/components/custom/aurora/index.d.ts +1 -1
  37. package/dist/components/custom/color-swatch/ColorSwatch.vue.d.ts +22 -0
  38. package/dist/components/custom/color-swatch/index.d.ts +1 -0
  39. package/dist/components/custom/configurator/Configurator.vue.d.ts +19 -8
  40. package/dist/components/custom/constellation/Constellation.vue.d.ts +18 -206
  41. package/dist/components/custom/constellation/composables/useConstellation.d.ts +26 -0
  42. package/dist/components/custom/constellation/constellationField.d.ts +2 -369
  43. package/dist/components/custom/constellation/constellationTypes.d.ts +369 -0
  44. package/dist/components/custom/constellation/index.d.ts +1 -1
  45. package/dist/components/custom/dock/DockRail.vue.d.ts +17 -16
  46. package/dist/components/custom/dock/DockSection.vue.d.ts +69 -0
  47. package/dist/components/custom/dock/DockSeparator.vue.d.ts +49 -1
  48. package/dist/components/custom/dock/DockTabButton.vue.d.ts +5 -5
  49. package/dist/components/custom/dock/constants.d.ts +35 -0
  50. package/dist/components/custom/dock/index.d.ts +2 -0
  51. package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +10 -0
  52. package/dist/components/custom/fading-scroll/FadingScroll.vue.d.ts +25 -0
  53. package/dist/components/custom/fading-scroll/composables/useFadingScroll.d.ts +31 -0
  54. package/dist/components/custom/fading-scroll/constants.d.ts +19 -0
  55. package/dist/components/custom/fading-scroll/index.d.ts +2 -0
  56. package/dist/components/custom/fourier-field/FourierField.vue.d.ts +7 -0
  57. package/dist/components/custom/fourier-field/index.d.ts +1 -1
  58. package/dist/components/custom/fourier-field/math.d.ts +17 -0
  59. package/dist/components/custom/glass-panel/GlassPanel.vue.d.ts +8 -0
  60. package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +11 -1
  61. package/dist/components/custom/goo-blob/constants.d.ts +6 -1
  62. package/dist/components/custom/handmark/HandMark.vue.d.ts +29 -0
  63. package/dist/components/custom/handmark/brush.d.ts +269 -0
  64. package/dist/components/custom/handmark/composables/useHandMark.d.ts +89 -0
  65. package/dist/components/custom/handmark/constants.d.ts +39 -0
  66. package/dist/components/custom/handmark/freehand.d.ts +69 -0
  67. package/dist/components/custom/handmark/geometry.d.ts +52 -0
  68. package/dist/components/custom/handmark/index.d.ts +27 -0
  69. package/dist/components/custom/handmark/ink.d.ts +11 -0
  70. package/dist/components/custom/handmark/texture.d.ts +39 -0
  71. package/dist/components/custom/handmark/types.d.ts +62 -0
  72. package/dist/components/custom/icon-chip/IconChip.vue.d.ts +4 -0
  73. package/dist/components/custom/icon-chip/index.d.ts +2 -0
  74. package/dist/components/custom/icon-chip/types.d.ts +72 -0
  75. package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +15 -2
  76. package/dist/components/custom/pager-dots/PagerDots.vue.d.ts +39 -0
  77. package/dist/components/custom/pager-dots/index.d.ts +2 -0
  78. package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +20 -25
  79. package/dist/components/custom/tabs/composables/useTabIndicator.d.ts +30 -21
  80. package/dist/components/custom/tabs/constants.d.ts +9 -3
  81. package/dist/components/custom/tabs/index.d.ts +1 -1
  82. package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +14 -0
  83. package/dist/components/ui/_shared/index.d.ts +2 -0
  84. package/dist/components/ui/_shared/menuItemVariants.d.ts +19 -0
  85. package/dist/components/ui/_shared/useSurfaceAxis.d.ts +41 -0
  86. package/dist/components/ui/card/Card.vue.d.ts +1 -1
  87. package/dist/components/ui/carousel/index.d.ts +0 -1
  88. package/dist/components/ui/command/Command.vue.d.ts +3 -0
  89. package/dist/components/ui/dialog/DialogContent.vue.d.ts +8 -3
  90. package/dist/components/ui/drawer/DrawerContent.vue.d.ts +5 -0
  91. package/dist/components/ui/index.d.ts +0 -1
  92. package/dist/components/ui/popover/PopoverContent.vue.d.ts +3 -0
  93. package/dist/components/ui/progress/ProgressSectioned.vue.d.ts +14 -3
  94. package/dist/components/ui/select/SelectTrigger.vue.d.ts +27 -4
  95. package/dist/components/ui/sheet/SheetContent.vue.d.ts +6 -0
  96. package/dist/components/ui/skeleton/Skeleton.vue.d.ts +3 -0
  97. package/dist/composables/dark/index.d.ts +1 -1
  98. package/dist/composables/dark/useGlobalDark.d.ts +23 -1
  99. package/dist/composables/motion/useViewTransition.d.ts +36 -1
  100. package/dist/configurator.js +1 -1
  101. package/dist/confirm-dialog.js +2 -2
  102. package/dist/constellation.js +92 -94
  103. package/dist/context-menu.js +2 -2
  104. package/dist/controls.js +10 -4
  105. package/dist/dark.d.ts +1 -1
  106. package/dist/dark.js +1 -1
  107. package/dist/data-table.js +1 -1
  108. package/dist/dialog.js +2 -2
  109. package/dist/dock.js +510 -321
  110. package/dist/{dockContext-BegmJVmx.js → dockContext-Bu1Avy-a.js} +1 -1
  111. package/dist/dom.js +5 -5
  112. package/dist/{dropdown-menu-DzkkyBwX.js → dropdown-menu-BJ7E9js_.js} +2 -2
  113. package/dist/dropdown-menu.js +1 -1
  114. package/dist/expandable-container.js +42 -38
  115. package/dist/fading-scroll.d.ts +1 -0
  116. package/dist/fading-scroll.js +2 -0
  117. package/dist/forms.js +3 -3
  118. package/dist/fourier-field.js +38 -37
  119. package/dist/fourier-math.js +2 -2
  120. package/dist/glass-panel.js +39 -36
  121. package/dist/glass-ui.css +1 -1
  122. package/dist/glass-ui.js +129 -145
  123. package/dist/goo-blob.js +86 -81
  124. package/dist/handmark.d.ts +1 -0
  125. package/dist/handmark.js +707 -0
  126. package/dist/header-ribbon.js +1 -1
  127. package/dist/hover-card.js +1 -1
  128. package/dist/hover-popover.js +1 -1
  129. package/dist/icon-chip.d.ts +1 -0
  130. package/dist/icon-chip.js +2 -0
  131. package/dist/icon-tooltip.js +1 -1
  132. package/dist/index.d.ts +2 -2
  133. package/dist/keyboard.js +1 -1
  134. package/dist/label.js +1 -1
  135. package/dist/labeled-field.js +6 -6
  136. package/dist/{math-U6-RrLmV.js → math-DeuJwLFx.js} +11 -3
  137. package/dist/{menuItemVariants-DPiEarb0.js → menuItemVariants-DWRQXBxJ.js} +10 -4
  138. package/dist/metric-badge.js +1 -1
  139. package/dist/metric-cell.js +25 -22
  140. package/dist/metric-stack.js +1 -1
  141. package/dist/motion-core.js +33 -32
  142. package/dist/motion-curves.js +1 -1
  143. package/dist/motion.js +4 -4
  144. package/dist/notification.js +1 -1
  145. package/dist/number-field.js +1 -1
  146. package/dist/pager-dots.d.ts +1 -0
  147. package/dist/pager-dots.js +91 -0
  148. package/dist/paper-backdrop.js +1 -1
  149. package/dist/popover.js +1 -1
  150. package/dist/{presets-BKVyQfbt.js → presets-BW2b-fr1.js} +14 -1
  151. package/dist/progress.js +1 -1
  152. package/dist/pulse.js +1 -1
  153. package/dist/reactive.js +2 -2
  154. package/dist/scrolling-text.js +1 -1
  155. package/dist/search.js +5 -5
  156. package/dist/select.js +3 -3
  157. package/dist/separator.js +1 -1
  158. package/dist/{sheet-1fChZjtw.js → sheet-CquRYOAw.js} +59 -55
  159. package/dist/sheet.js +1 -1
  160. package/dist/{slider-B-JP2JlI.js → slider-DQ95MET2.js} +7 -7
  161. package/dist/slider.js +1 -1
  162. package/dist/sortable-list.js +3 -3
  163. package/dist/styles/animations.css +11 -26
  164. package/dist/styles/components.css +1 -1
  165. package/dist/styles/configurator.css +35 -0
  166. package/dist/styles/dock/density.css +19 -0
  167. package/dist/styles/dock/overflow.css +15 -0
  168. package/dist/styles/dock/rail-extend.css +168 -71
  169. package/dist/styles/dock/section.css +59 -0
  170. package/dist/styles/dock/shell.css +34 -5
  171. package/dist/styles/dock-controls/icon-button.css +11 -1
  172. package/dist/styles/dock-controls/tab-button.css +24 -83
  173. package/dist/styles/dock-controls/triggers.css +7 -0
  174. package/dist/styles/dock.css +6 -3
  175. package/dist/styles/drawer.css +46 -0
  176. package/dist/styles/feedback-tone.css +104 -0
  177. package/dist/styles/glass/ladder.css +68 -22
  178. package/dist/styles/glass/surface-axis.css +113 -0
  179. package/dist/styles/glass/surfaces.css +88 -12
  180. package/dist/styles/glass.css +5 -2
  181. package/dist/styles/icon-chip.css +149 -0
  182. package/dist/styles/index.css +67 -5
  183. package/dist/styles/instrument-chassis.css +42 -0
  184. package/dist/styles/menu.css +127 -0
  185. package/dist/styles/segmented-tabs.css +160 -89
  186. package/dist/styles/select.css +50 -0
  187. package/dist/styles/theme/bridges.css +11 -1
  188. package/dist/styles/tokens/color-radius.css +40 -13
  189. package/dist/styles/tokens/dark-arm.css +124 -16
  190. package/dist/styles/tokens/glass.css +83 -23
  191. package/dist/styles/tokens/light-dark.css +48 -19
  192. package/dist/styles/tokens/offsets-sizing.css +62 -0
  193. package/dist/styles/tokens/property-regs.css +3 -10
  194. package/dist/styles/tokens/scale-paper.css +45 -2
  195. package/dist/styles/tokens/scheme-motion.css +32 -14
  196. package/dist/styles/transitions.css +7 -7
  197. package/dist/styles/typography/scale.css +153 -0
  198. package/dist/styles/typography/semantic.css +220 -0
  199. package/dist/styles/typography/utilities.css +159 -0
  200. package/dist/styles/typography.css +23 -507
  201. package/dist/styles/utilities/a11y-overrides.css +33 -4
  202. package/dist/styles/utilities/base.css +177 -1
  203. package/dist/styles/utilities/btn.css +18 -201
  204. package/dist/styles/view-transition.css +4 -1
  205. package/dist/switch.js +1 -1
  206. package/dist/tabs.js +154 -183
  207. package/dist/timeline.js +2 -2
  208. package/dist/toast.js +1 -1
  209. package/dist/toggle-chip.js +3 -1
  210. package/dist/toggle-group.js +1 -1
  211. package/dist/typewriter.js +1 -1
  212. package/dist/{useAnimatedNumber-C5I3wWd8.js → useAnimatedNumber-C_3wZLx4.js} +1 -1
  213. package/dist/useConfiguratorState-kiIlun8I.js +303 -0
  214. package/dist/{useGlobalDark-yhL4Wp-s.js → useGlobalDark-C28t0VWJ.js} +22 -3
  215. package/dist/{useRAFLoop-Bxv0o6L5.js → useRAFLoop-CdwJ7284.js} +1 -1
  216. package/dist/{useSpringMount-CI2jOstM.js → useSpringMount-CvopqiFr.js} +1 -1
  217. package/dist/useSurfaceAxis-CMnF2zHb.js +7 -0
  218. package/dist/{useTouchGate-Dg7MQI1G.js → useTouchGate-28Tk2-t2.js} +1 -1
  219. package/dist/{vReveal-CqaCz_mC.js → useViewTransition-COsPjQVZ.js} +15 -12
  220. package/dist/vReveal-D9k0jADx.js +10 -0
  221. package/dist/watercolor-dot.js +12 -5
  222. package/package.json +71 -7
  223. package/src/styles/animations.css +11 -26
  224. package/src/styles/configurator.css +35 -0
  225. package/src/styles/dock/density.css +19 -0
  226. package/src/styles/dock/overflow.css +15 -0
  227. package/src/styles/dock/rail-extend.css +168 -71
  228. package/src/styles/dock/section.css +59 -0
  229. package/src/styles/dock/shell.css +34 -5
  230. package/src/styles/dock-controls/icon-button.css +11 -1
  231. package/src/styles/dock-controls/tab-button.css +24 -83
  232. package/src/styles/dock-controls/triggers.css +7 -0
  233. package/src/styles/dock.css +6 -3
  234. package/src/styles/drawer.css +42 -0
  235. package/src/styles/feedback-tone.css +104 -0
  236. package/src/styles/glass/ladder.css +68 -22
  237. package/src/styles/glass/surface-axis.css +113 -0
  238. package/src/styles/glass/surfaces.css +88 -12
  239. package/src/styles/glass.css +5 -2
  240. package/src/styles/icon-chip.css +149 -0
  241. package/src/styles/index.css +66 -4
  242. package/src/styles/instrument-chassis.css +42 -0
  243. package/src/styles/menu.css +127 -0
  244. package/src/styles/segmented-tabs.css +156 -87
  245. package/src/styles/select.css +50 -0
  246. package/src/styles/theme/bridges.css +11 -1
  247. package/src/styles/tokens/color-radius.css +40 -13
  248. package/src/styles/tokens/dark-arm.css +124 -16
  249. package/src/styles/tokens/glass.css +83 -23
  250. package/src/styles/tokens/light-dark.css +48 -19
  251. package/src/styles/tokens/offsets-sizing.css +62 -0
  252. package/src/styles/tokens/property-regs.css +3 -10
  253. package/src/styles/tokens/scale-paper.css +45 -2
  254. package/src/styles/tokens/scheme-motion.css +32 -14
  255. package/src/styles/transitions.css +7 -7
  256. package/src/styles/typography/scale.css +153 -0
  257. package/src/styles/typography/semantic.css +220 -0
  258. package/src/styles/typography/utilities.css +159 -0
  259. package/src/styles/typography.css +23 -507
  260. package/src/styles/utilities/a11y-overrides.css +33 -4
  261. package/src/styles/utilities/base.css +177 -1
  262. package/src/styles/utilities/btn.css +18 -201
  263. package/src/styles/view-transition.css +4 -1
  264. package/dist/CardAction-Cj2eycQ2.js +0 -157
  265. package/dist/DialogContent-Dl9WkAoS.js +0 -100
  266. package/dist/PopoverContent-BYwt2-4x.js +0 -121
  267. package/dist/TabsList-Dttss653.js +0 -105
  268. package/dist/components/custom/underline/GlassUnderline.vue.d.ts +0 -84
  269. package/dist/components/custom/underline/index.d.ts +0 -2
  270. package/dist/components/custom/underline/types.d.ts +0 -56
  271. package/dist/components/ui/carousel/CarouselDots.vue.d.ts +0 -4
  272. package/dist/underline.d.ts +0 -1
  273. package/dist/underline.js +0 -85
  274. package/dist/useConfiguratorState-DAoeHVue.js +0 -287
  275. /package/dist/{CollapsibleContent-CP9qF1v4.js → CollapsibleContent-C_s6fG7r.js} +0 -0
  276. /package/dist/{ContextMenuContent-CT3AS1WX.js → ContextMenuContent-ON3x7cuk.js} +0 -0
  277. /package/dist/{HoverCardContent-Csywg3YF.js → HoverCardContent-DkMaQzH5.js} +0 -0
  278. /package/dist/{IconTooltip-DPzE09X9.js → IconTooltip-DSjasZIt.js} +0 -0
  279. /package/dist/{Input-DWQQIOC4.js → Input-DVG_J0ne.js} +0 -0
  280. /package/dist/{Label-r3WzWrsj.js → Label-Ck9SWEKM.js} +0 -0
  281. /package/dist/{ModalOverlay-DVLI2VRr.js → ModalOverlay-CkPRRgl_.js} +0 -0
  282. /package/dist/{PaperBackdrop-DIXTtVq6.js → PaperBackdrop-nBKe0vkB.js} +0 -0
  283. /package/dist/{SelectGroup-aumMgWLs.js → SelectGroup-Dcczq44n.js} +0 -0
  284. /package/dist/{SelectSeparator-BQ_1Fcbp.js → SelectSeparator-DK2y1Bun.js} +0 -0
  285. /package/dist/{Separator-0JE6LtNu.js → Separator-BArl4OaB.js} +0 -0
  286. /package/dist/{_plugin-vue_export-helper-ok8pgSl5.js → _plugin-vue_export-helper-CBt_VvXa.js} +0 -0
  287. /package/dist/{color-CUYeFbgd.js → color-DweYl7pE.js} +0 -0
  288. /package/dist/{compile-B7NGOBcP.js → compile-EXXzEr1q.js} +0 -0
  289. /package/dist/{constants-CS75AWHG.js → constants-BPOqYJAm.js} +0 -0
  290. /package/dist/{createContext-BM46COQ-.js → createContext-B2RaZ-b8.js} +0 -0
  291. /package/dist/{prng-D27-B3tK.js → prng-Cg22zv8g.js} +0 -0
  292. /package/dist/{springPresets--YdWTHtm.js → springPresets-WXaLbu8u.js} +0 -0
  293. /package/dist/{useIntersectionPause-Cc-H9ees.js → useIntersectionPause-Bj4sPkMh.js} +0 -0
  294. /package/dist/{useInterval-iHludrxk.js → useInterval-CNdua40W.js} +0 -0
  295. /package/dist/{useKeyboardShortcuts-Be3w_Rwk.js → useKeyboardShortcuts-BXWXOZ-9.js} +0 -0
  296. /package/dist/{useLiquidFlex-BL0lLLN2.js → useLiquidFlex-C12hXwOZ.js} +0 -0
  297. /package/dist/{useResizeObserver-BhgdhOIj.js → useResizeObserver-V6nq5gJb.js} +0 -0
  298. /package/dist/{useResolveTokenColor-Dvn2RZJW.js → useResolveTokenColor-NUG2zYAW.js} +0 -0
  299. /package/dist/{useScrollProgress-Dlvx-L3v.js → useScrollProgress-D7bYU2RK.js} +0 -0
  300. /package/dist/{useSortable-muI29agz.js → useSortable-BVqlJRBR.js} +0 -0
  301. /package/dist/{useTextHighlight-DmRYkOBx.js → useTextHighlight-NmBM5V_4.js} +0 -0
  302. /package/dist/{useTimer-Dzarvzuk.js → useTimer-B_PAasDL.js} +0 -0
  303. /package/dist/{useUserInvalidAria-B2h6jAM_.js → useUserInvalidAria-CDfJuakL.js} +0 -0
  304. /package/dist/{useViewportReady-B40FK4Pa.js → useViewportReady-CvBcCYDf.js} +0 -0
@@ -1,7 +1,45 @@
1
1
  /* utilities/base.css
2
- The @layer components base half — section-description, labeled-field, popover-content, scrollbar, focus-ring, hairline-accent, interactive-item, tap-squish, status-dot, depth-text, preserve-3d, ios input fix, scroll-fade masks, deferred-section, scroll-timeline host, shimmer text, keyboard key.
2
+ The @layer components base half — section-description, labeled-field, popover-content, scrollbar, focus-ring, hairline-accent, interactive-item, tap-squish, status-dot, depth-text, preserve-3d, ios input fix, scroll-fade masks, fading-scroll (scroll-state-driven edge fade), deferred-section, scroll-timeline host, shimmer text, keyboard key.
3
3
  Carved from the utilities.css cascade root; @import-ed by utilities.css in
4
4
  cascade order. See docs/precepts/design-idioms.md §cohesion-aware partials. */
5
+
6
+ /* ═══════════════════════════════════════════════
7
+ §FADING-SCROLL — the per-edge mask-width interpolation customs (BA.W-FADING-SCROLL)
8
+
9
+ `<FadingScroll>`'s scroll-state-driven edge fade is a `mask-image` whose two
10
+ per-edge ramp widths are these registered `@property <length-percentage>`
11
+ customs. Registered (not bare custom props) so they INTERPOLATE smoothly off
12
+ the `scroll(self)` timeline below — an unregistered custom would jump between
13
+ the textual `0px` / `var(--fade-scroll-width)` endpoints rather than feathering.
14
+ `inherits: false`: each scroll port owns its own edge state (an ancestor must
15
+ never push a fade-width onto an unrelated descendant strip — mirrors the
16
+ `--progress-crescendo` / `--ripple-radius` non-inheriting registrations).
17
+ `initial-value: 0px` = the SHARP floor: an at-rest, no-overflow edge has NO
18
+ feather (the R8-08 "Shy" defect — the static `.scroll-fade-*` mask half-erased
19
+ the first card's chrome at rest — is structurally impossible because the
20
+ default is sharp and the timeline OPENS the feather only on real scroll).
21
+
22
+ These customs are INTERNAL (not a public token). The public knob is
23
+ `--fade-scroll-width` (offsets-sizing.css). Co-registered HERE (the consuming
24
+ CSS file) per the `@property --dock-morph-t` in dock.css precedent — a
25
+ component's typed property rides its own recipe file.
26
+
27
+ Co-written by the `useFadingScroll` JS fallback (the dual-path single writer):
28
+ the native `scroll(self)` timeline below owns these customs on a supporting
29
+ engine, the composable writes the SAME two customs when it is absent. Never
30
+ both — the composable feature-detect-gates OFF under timeline support.
31
+ ═══════════════════════════════════════════════ */
32
+ @property --fade-start {
33
+ syntax: "<length-percentage>";
34
+ inherits: false;
35
+ initial-value: 0px;
36
+ }
37
+ @property --fade-end {
38
+ syntax: "<length-percentage>";
39
+ inherits: false;
40
+ initial-value: 0px;
41
+ }
42
+
5
43
  @layer components {
6
44
  /* ── Section description (V.W3.T7) ──────────────────────────────
7
45
  Canonical recipe for the `<Section>` primitive's description
@@ -40,6 +78,23 @@
40
78
  without `:has()`/`:user-invalid` (not a live+dead alias). */
41
79
  .labeled-field {
42
80
  --field-label-color: var(--muted-foreground);
81
+ /* THE WIDTH CONTRACT (BA.W-CONFIG-CHASSIS.1, S1 / CFG-1). The
82
+ labeled-field root claims FULL inline width + lays its label/control
83
+ stack out as a column, so a slotted control (a Slider whose inner
84
+ `.glass-slider` resolves `width: 100%`) has a DEFINITE width to
85
+ resolve against — never the content-sized 0 the bare `display:block`
86
+ default produced inside the configurator row's flex slot. This is the
87
+ half that survives the `hide-label` register: with the visible label
88
+ rendered `sr-only`, the label was the only intrinsic width
89
+ contributor, so the field collapsed; `width:100%` makes the field own
90
+ its inline axis regardless of label visibility. `min-width:0` lets it
91
+ shrink below content min inside a constrained row. Standalone use is
92
+ unaffected (a `<LabeledField>` outside a flex parent fills its block
93
+ container exactly as the prior `display:block` did). */
94
+ display: flex;
95
+ flex-direction: column;
96
+ inline-size: 100%;
97
+ min-inline-size: 0;
43
98
  }
44
99
  .labeled-field:has(:user-invalid),
45
100
  .labeled-field.has-error {
@@ -284,6 +339,127 @@
284
339
  mask-image: linear-gradient(to bottom, transparent, black var(--mask-fade-width), black calc(100% - var(--mask-fade-width)), transparent);
285
340
  }
286
341
 
342
+ /* ── Fading scroll — the scroll-STATE-driven edge fade (BA.W-FADING-SCROLL) ──
343
+ `<FadingScroll>`'s recipe. SUPERSEDES the scroll-BLIND `.scroll-fade-*`
344
+ masks above (which feathered both edges unconditionally — the R8-08 "Shy"
345
+ defect). Here each edge's ramp width is a registered `--fade-start` /
346
+ `--fade-end` custom (above, default 0px = SHARP), driven by the
347
+ `scroll(self)` timeline so the start edge feathers only past `scroll > 0`
348
+ and the end edge only while trailing overflow remains.
349
+
350
+ The root IS the scroll port (the component sets overflow via the consumer's
351
+ utilities — `overflow-x-auto` / `overflow-y-auto` come from the class the
352
+ consumer passes; the axis floor below sets the OTHER axis). The 4-stop
353
+ mask reads the two customs; at rest both are 0px so the gradient is a flat
354
+ opaque pass-through (no feather). */
355
+ .fading-scroll {
356
+ /* The base mask is axis-specialized by the modifier classes below. The
357
+ default-x case uses the inline ramp; the y case the block ramp. */
358
+ mask-image: linear-gradient(
359
+ to right,
360
+ transparent 0,
361
+ black var(--fade-start),
362
+ black calc(100% - var(--fade-end)),
363
+ transparent 100%
364
+ );
365
+ }
366
+ .fading-scroll--x {
367
+ overflow-x: auto;
368
+ mask-image: linear-gradient(
369
+ to right,
370
+ transparent 0,
371
+ black var(--fade-start),
372
+ black calc(100% - var(--fade-end)),
373
+ transparent 100%
374
+ );
375
+ }
376
+ .fading-scroll--y {
377
+ overflow-y: auto;
378
+ mask-image: linear-gradient(
379
+ to bottom,
380
+ transparent 0,
381
+ black var(--fade-start),
382
+ black calc(100% - var(--fade-end)),
383
+ transparent 100%
384
+ );
385
+ }
386
+
387
+ /* The NATIVE primary path: drive the per-edge customs off a `scroll(self)`
388
+ timeline — ZERO JS on a supporting engine (the `scroll-driven.css` /
389
+ Baseline-Newly-Available bar). UNLIKE `scroll-driven.css` this is NOT
390
+ wrapped in `prefers-reduced-motion: no-preference` — the fade is a
391
+ LEGIBILITY cue, not motion, so it stays present under PRM (it merely stops
392
+ interpolating; the discrete overflow-edge presence stays correct, and the
393
+ registered customs make even the static endpoints land right). */
394
+ @supports (animation-timeline: scroll()) {
395
+ /* The start edge: from sharp (0) to feathered, completing within the
396
+ first `--fade-scroll-width` of scroll — so at `scroll = 0` the start is
397
+ SHARP and it ramps in only once the user genuinely scrolls past. */
398
+ @keyframes gl-fade-start-in {
399
+ from {
400
+ --fade-start: 0px;
401
+ }
402
+ to {
403
+ --fade-start: var(--fade-scroll-width);
404
+ }
405
+ }
406
+ /* The end edge: feathered while trailing overflow remains, ramping OUT to
407
+ sharp over the last `--fade-scroll-width` of scroll — so at the scroll
408
+ end (no trailing overflow) the end is SHARP. */
409
+ @keyframes gl-fade-end-out {
410
+ from {
411
+ --fade-end: var(--fade-scroll-width);
412
+ }
413
+ to {
414
+ --fade-end: 0px;
415
+ }
416
+ }
417
+ /* x axis — `scroll(self inline)`; two animations on the ONE element, each
418
+ gated by `animation-range` to the start / end sliver of the scroll
419
+ distance. `fadeStart`/`fadeEnd` props toggle their respective
420
+ animation off via the `[data-fade-*]` presence attrs. */
421
+ .fading-scroll--x[data-fade-start] {
422
+ animation: gl-fade-start-in linear both;
423
+ animation-timeline: scroll(self inline);
424
+ animation-range: 0 var(--fade-scroll-width);
425
+ }
426
+ .fading-scroll--x[data-fade-end] {
427
+ animation: gl-fade-end-out linear both;
428
+ animation-timeline: scroll(self inline);
429
+ animation-range: calc(100% - var(--fade-scroll-width)) 100%;
430
+ }
431
+ /* BOTH edges on one element compose as two named animations. */
432
+ .fading-scroll--x[data-fade-start][data-fade-end] {
433
+ animation:
434
+ gl-fade-start-in linear both,
435
+ gl-fade-end-out linear both;
436
+ animation-timeline: scroll(self inline), scroll(self inline);
437
+ animation-range:
438
+ 0 var(--fade-scroll-width),
439
+ calc(100% - var(--fade-scroll-width)) 100%;
440
+ }
441
+ /* y axis — `scroll(self block)`. */
442
+ .fading-scroll--y[data-fade-start] {
443
+ animation: gl-fade-start-in linear both;
444
+ animation-timeline: scroll(self block);
445
+ animation-range: 0 var(--fade-scroll-width);
446
+ }
447
+ .fading-scroll--y[data-fade-end] {
448
+ animation: gl-fade-end-out linear both;
449
+ animation-timeline: scroll(self block);
450
+ animation-range: calc(100% - var(--fade-scroll-width)) 100%;
451
+ }
452
+ .fading-scroll--y[data-fade-start][data-fade-end] {
453
+ animation:
454
+ gl-fade-start-in linear both,
455
+ gl-fade-end-out linear both;
456
+ animation-timeline: scroll(self block), scroll(self block);
457
+ animation-range:
458
+ 0 var(--fade-scroll-width),
459
+ calc(100% - var(--fade-scroll-width)) 100%;
460
+ }
461
+ }
462
+
287
463
  /* ── Deferred section — render-skip an offscreen subtree (AQ.W3 §5) ──────
288
464
  `content-visibility: auto` skips layout/paint/style of an offscreen
289
465
  subtree — the INP-under-load lever (fourier γ, muster, speedtest, words).
@@ -1,5 +1,5 @@
1
1
  /* utilities/btn.css
2
- The interactive/button @utility cluster — scale-on-hover, twin-line-divider, transition-control/collapse, sheet-animate, btn-audacious + btn-audacious-gold (+ the btn-gold-bg-sweep keyframes), table-cell/head density, rainbow-vivid/pastel, the text-highlight paint, and btn-interactive.
2
+ The interactive/button @utility cluster — scale-on-hover, twin-line-divider, transition-control/collapse, sheet-animate, table-cell/head density, rainbow-vivid/pastel, the text-highlight paint, and btn-interactive. (The btn-audacious/btn-audacious-gold disco recipes + the btn-gold-bg-sweep keyframes were RETIRED at BA.W-GLASS-CAL.)
3
3
  Carved from the utilities.css cascade root; @import-ed by utilities.css in
4
4
  cascade order. See docs/precepts/design-idioms.md §cohesion-aware partials. */
5
5
  /* ── Hover scale (O.W6 Lane C) ──
@@ -18,7 +18,7 @@
18
18
  (the settle register), NOT the bezier `--ease-standard` (a transform on a
19
19
  bezier reads mechanical; springs read alive on transform). */
20
20
  scale: 1;
21
- transition: scale var(--duration-fast) var(--spring-smooth);
21
+ transition: scale var(--spring-smooth-duration) var(--spring-smooth);
22
22
 
23
23
  &:hover {
24
24
  scale: var(--scale-hover);
@@ -81,203 +81,20 @@
81
81
  data-[state=closed]:duration-[var(--duration-fast)];
82
82
  }
83
83
 
84
- /* ── Audacious primary CTA recipe ────────────────────────────────────────
85
- Composes three at-rest marks (top-highlight via --glass-highlight, bottom
86
- under-shadow via --border-hairline, baseline glass) with three disco accents
87
- on hover (specular swap via --glass-specular, sparkle sweep via the ::after
88
- star, disco-grain via --paper-clean-texture blended with a --primary radial).
89
- Disco fires on hover only — at rest the button reads as a restrained glass
90
- surface. Pair with `bg-primary text-primary-foreground`; the utility owns
91
- the texture/highlight/sparkle composition only. */
92
- @utility btn-audacious {
93
- position: relative;
94
- isolation: isolate;
95
- overflow: hidden;
96
- border: 1px solid var(--glass-border-quiet);
97
- box-shadow:
98
- var(--border-hairline),
99
- var(--glass-highlight);
100
- transition:
101
- background var(--duration-fast) var(--ease-standard),
102
- color var(--duration-fast) var(--ease-standard),
103
- transform var(--duration-fast) var(--ease-standard),
104
- box-shadow var(--duration-fast) var(--ease-standard),
105
- --ripple-radius var(--motion-duration-ripple, 340ms) var(--ease-out-expo);
106
-
107
- /* Hover composition: paper-grain texture overlaid on a soft
108
- --primary radial, with the specular catch-light replacing the
109
- resting hairline highlight. The radial uses --primary at 18%
110
- — same alpha rung the dock primary tier consumes for phase
111
- tinting, just bound to the canonical CTA color instead. */
112
- &:hover:not(:disabled) {
113
- background-image:
114
- var(--paper-clean-texture),
115
- radial-gradient(
116
- ellipse at 30% 30%,
117
- color-mix(in srgb, var(--primary) 18%, transparent),
118
- transparent 70%
119
- );
120
- background-blend-mode: overlay, normal;
121
- background-size: var(--paper-texture-size), auto;
122
- box-shadow:
123
- var(--glass-specular),
124
- 0 0.5px 0 0 rgb(0 0 0 / 0.06);
125
- }
126
-
127
- /* AI.W4-M.2 (Q5 — G-AI-D27 ratified) — press-ripple via a typed
128
- `--ripple-radius` length custom property. The `::before`
129
- element paints a radial gradient whose stop radius equals the
130
- typed length; the `:active` rule sets the length to the cap
131
- (`--ripple-radius-max`, 12rem), and the host's transition
132
- (above) interpolates the radius via the @property registration
133
- (tokens.css §18). Release returns the length to its 0px initial
134
- value and the ripple retires. The ripple paints at z-index 0
135
- (above the host's background, below the slot content which sits
136
- in the default 0 stacking context but with text inheriting the
137
- slot's foreground colour). */
138
- &::before {
139
- content: "";
140
- position: absolute;
141
- inset: 0;
142
- pointer-events: none;
143
- z-index: 0;
144
- border-radius: inherit;
145
- background: radial-gradient(
146
- circle at center,
147
- color-mix(in srgb, var(--primary-foreground, hsl(0 0% 100%)) 35%, transparent) 0,
148
- color-mix(in srgb, var(--primary-foreground, hsl(0 0% 100%)) 18%, transparent)
149
- calc(var(--ripple-radius, 0px) * 0.55),
150
- transparent var(--ripple-radius, 0px)
151
- );
152
- transition: inherit;
153
- will-change: background;
154
- }
155
-
156
- &:active:not(:disabled) {
157
- --ripple-radius: var(--ripple-radius-max, 12rem);
158
- }
159
-
160
- /* Sparkle glyph — hidden at rest, animated on hover. The star
161
- sweeps diagonally from top-left to bottom-right per the canonical
162
- sparkle-sweep keyframe (animations.css). */
163
- &::after {
164
- content: "✦";
165
- position: absolute;
166
- top: 0.25rem;
167
- left: 0.5rem;
168
- color: hsl(0 0% 100% / 0.7);
169
- font-size: 0.75rem;
170
- line-height: 1;
171
- pointer-events: none;
172
- opacity: 0;
173
- will-change: transform, opacity;
174
- z-index: 1;
175
- }
176
-
177
- @media (prefers-reduced-motion: no-preference) {
178
- &:hover::after {
179
- animation: sparkle-sweep var(--duration-sparkle) var(--ease-out-expo);
180
- }
181
- }
182
-
183
- /* PRM bracket — the press-ripple retires; the press still reads
184
- via the audacious recipe's transform/scale beat (the ripple is
185
- affirmation atop affirmation). */
186
- @media (prefers-reduced-motion: reduce) {
187
- transition:
188
- background var(--duration-fast) var(--ease-standard),
189
- color var(--duration-fast) var(--ease-standard),
190
- transform var(--duration-fast) var(--ease-standard),
191
- box-shadow var(--duration-fast) var(--ease-standard);
192
-
193
- &:active:not(:disabled) {
194
- --ripple-radius: 0px;
195
- }
196
- }
197
- }
198
-
199
- /* ── Gold CTA shimmer modifier — AN.R0 D9 ───────────────────────────────
200
- `btn-audacious-gold` extends `btn-audacious` with a gold sweep shimmer
201
- on hover. Pair as `btn-audacious btn-audacious-gold` (or use the Button
202
- `variant="gold-audacious"` which composes both). The hover shimmer is a
203
- translucent linear-gradient sweep (low alpha — tasteful, not garish)
204
- that slides left-to-right via the existing `gold-shimmer-slide` keyframe
205
- (animations.css). The gold gradient uses the canonical `--color-gold-*`
206
- token triad (tokens.css §13).
207
-
208
- Design register:
209
- • PRM no-preference: shimmer sweeps continuously at `--duration-shimmer`
210
- rate; the sparkle-sweep (from btn-audacious) coexists on hover.
211
- • PRM reduce: static gold tint shows on hover; no animation.
212
- • The gold shimmer is a background-image layer ABOVE the existing
213
- btn-audacious paper-grain + primary-radial layers, blended with
214
- `overlay` so the glass substrate reads through at partial opacity.
215
- • The `::before` ripple and `::after` sparkle from btn-audacious are
216
- unchanged; this modifier only retunes the hover background layers.
217
- • Consumer applies: `<Button variant="gold-audacious">Next →</Button>` */
218
- @utility btn-audacious-gold {
219
- /* At rest: a faint warm gold tint over the glass surface reads as "warm
220
- glass" without announcing the hover state prematurely. */
221
- background-image:
222
- linear-gradient(
223
- 135deg,
224
- color-mix(in srgb, var(--color-gold) 8%, transparent),
225
- color-mix(in srgb, var(--color-gold-light) 5%, transparent) 50%,
226
- color-mix(in srgb, var(--color-gold) 8%, transparent)
227
- );
228
-
229
- /* Hover: deepen the plate to a SATURATED gold the white label clears (AW.W13
230
- names a "saturated gold backplate"; the D1 fix). The bottom layer is the
231
- OPAQUE fixed deep gold (`--color-gold-deep`, mode-INVARIANT) — a solid plate
232
- at ~6.5:1 (light) / ~5.5:1 (dark) against white, well below the ~0.18
233
- luminance floor white text needs for ≥4.5:1 (was a translucent 22-30% wash
234
- over near-cream glass → 1.29:1 white-on-pale-gold). The plate is FIXED-dark
235
- in both modes — deepening toward the mode-flipping `--foreground` brightened
236
- the dark plate to a cream-gold; `--color-gold-deep` does not flip. The
237
- shimmer sweep rides ABOVE as a LOW-alpha gold gradient (normal blend, ≤18% —
238
- it textures the plate without brightening it past the floor), and the
239
- paper-grain overlays for the disco facet. */
240
- &:hover:not(:disabled) {
241
- background-image:
242
- var(--paper-clean-texture),
243
- linear-gradient(
244
- 90deg,
245
- transparent 0%,
246
- color-mix(in srgb, var(--color-gold) 14%, transparent) 25%,
247
- color-mix(in srgb, var(--color-gold) 18%, transparent) 50%,
248
- color-mix(in srgb, var(--color-gold) 14%, transparent) 75%,
249
- transparent 100%
250
- ),
251
- linear-gradient(
252
- 135deg,
253
- var(--color-gold-deep),
254
- color-mix(in srgb, var(--color-gold-deep), var(--color-gold-dark) 18%) 50%,
255
- var(--color-gold-deep)
256
- );
257
- background-blend-mode: overlay, normal, normal;
258
- background-size: var(--paper-texture-size), 250% 100%, 100% 100%;
259
- background-position: 0 0, 100% 0, 0 0;
260
- box-shadow:
261
- var(--glass-specular),
262
- 0 0 0 1px color-mix(in srgb, var(--color-gold-dark) 40%, transparent),
263
- 0 0.5px 0 0 rgb(0 0 0 / 0.06);
264
- }
265
-
266
- @media (prefers-reduced-motion: no-preference) {
267
- &:hover:not(:disabled) {
268
- animation: btn-gold-bg-sweep var(--duration-shimmer) linear infinite;
269
- }
270
- }
271
- }
272
-
273
- /* Background-position sweep for the gold CTA hover shimmer.
274
- Distinct from `gold-shimmer-slide` (which animates background-position for
275
- a text-clip gradient). This variant sweeps the `background-position` of the
276
- 250% wide gradient across the button's bounding box. */
277
- @keyframes btn-gold-bg-sweep {
278
- 0% { background-position: 0 0, 100% 0, 0 0; }
279
- 100% { background-position: 0 0, -100% 0, 0 0; }
280
- }
84
+ /* ── Calm CTA register (BA.W-GLASS-CAL, H2a — the disco retired) ──────────
85
+ The `@utility btn-audacious` + `@utility btn-audacious-gold` recipes + the
86
+ `@keyframes btn-gold-bg-sweep` are RETIRED (clean break, no alias). The user
87
+ removed the "disco effect" wholesale: the sparkle `::after` glyph, the
88
+ disco-grain hover (`--paper-clean-texture` + `--primary`/gold radial), the
89
+ gold-sweep shimmer, and the typed `--ripple-radius` press-ripple are GONE.
90
+
91
+ The `primary-audacious`/`gold-audacious` Button variants (button/index.ts)
92
+ now collapse onto the calm glass-first register — the `glass-wash`/`btn-glass`
93
+ surface + the `--glass-specular` edge catch-light, hover/press on the §6
94
+ doctrine (surface→`--ease-standard`, scale→`--spring-smooth`). `gold-audacious`
95
+ keeps a STATIC warm-gold tint (no animated sweep). The fenced-out GOOD pops
96
+ (`.gold-shimmer` static text gradient, the specular gleam, the press-scale)
97
+ STAY — they were never disco. */
281
98
 
282
99
  /* ── Table density utilities — AN.R0 ─────────────────────────────────────
283
100
  `table-cell` and `table-head` replace the former Tailwind `p-4` / `h-12`
@@ -370,7 +187,7 @@
370
187
  transition:
371
188
  background-color var(--duration-fast) var(--ease-standard),
372
189
  color var(--duration-fast) var(--ease-standard),
373
- scale var(--duration-fast) var(--spring-smooth),
190
+ scale var(--spring-smooth-duration) var(--spring-smooth),
374
191
  opacity var(--duration-fast) var(--ease-standard);
375
192
 
376
193
  &:hover {
@@ -394,7 +211,7 @@
394
211
  transition:
395
212
  background-color var(--duration-fast) var(--ease-standard),
396
213
  color var(--duration-fast) var(--ease-standard),
397
- scale var(--duration-fast) var(--spring-smooth),
214
+ scale var(--spring-smooth-duration) var(--spring-smooth),
398
215
  opacity var(--duration-fast) var(--ease-standard),
399
216
  box-shadow var(--duration-fast) var(--ease-standard);
400
217
  }
@@ -35,7 +35,10 @@
35
35
  /* Shared group class — consumers add `view-transition-class: gl-list-item` on
36
36
  * each tracked element plus a unique `view-transition-name` per element. */
37
37
  ::view-transition-group(.gl-list-item) {
38
- animation-duration: var(--vt-duration, var(--duration-normal));
38
+ /* BA.W-GLASS-CAL Unit 3 — the duration fallback rides the bouncy spring's
39
+ OWN settle clock (`--spring-bouncy-duration`) so the default VT bounce
40
+ plays at its physical settle; a consumer still overrides via `--vt-duration`. */
41
+ animation-duration: var(--vt-duration, var(--spring-bouncy-duration));
39
42
  animation-timing-function: var(--vt-ease, var(--spring-bouncy));
40
43
  }
41
44
 
@@ -1,157 +0,0 @@
1
- import { t as e } from "./cn-DJXf4yaB.js";
2
- import { t } from "./useSpecularTracking-Bo5su68i.js";
3
- import { t as n } from "./_plugin-vue_export-helper-ok8pgSl5.js";
4
- import { computed as r, createBlock as i, createElementBlock as a, defineComponent as o, normalizeClass as s, normalizeStyle as c, openBlock as l, renderSlot as u, unref as d, withCtx as f } from "vue";
5
- import { Primitive as p } from "reka-ui";
6
- var m = /* @__PURE__ */ o({
7
- __name: "Card",
8
- props: {
9
- tier: { default: "resting" },
10
- surface: { default: "glass" },
11
- shadow: {
12
- type: Boolean,
13
- default: !0
14
- },
15
- grain: {
16
- type: Boolean,
17
- default: !0
18
- },
19
- specular: { default: "off" },
20
- class: { type: [
21
- Boolean,
22
- null,
23
- String,
24
- Object,
25
- Array
26
- ] },
27
- asChild: { type: Boolean },
28
- as: { default: "div" }
29
- },
30
- setup(n) {
31
- let a = n, { specularStyle: o, onPointerMove: m } = t(), h = r(() => a.surface === "glass" && a.specular !== "off"), g = r(() => a.specular === "full" ? {
32
- "--glass-specular-intensity-rest": "0.04",
33
- "--glass-specular-intensity-hover": "0.18",
34
- "--glass-specular-intensity-active": "0.26"
35
- } : {}), _ = r(() => h.value ? {
36
- ...g.value,
37
- ...o.value
38
- } : void 0);
39
- return (t, r) => (l(), i(d(p), {
40
- "data-slot": "card",
41
- "data-tier": n.tier,
42
- "data-surface": n.surface,
43
- "data-grain": n.grain,
44
- as: n.as,
45
- "as-child": n.asChild,
46
- style: c(_.value),
47
- onPointermove: r[0] ||= (e) => h.value && d(m)(e),
48
- class: s(d(e)("rounded-card text-card-foreground scrollbar-hidden", "[--card-spacing:--spacing(6)] data-[size=sm]:[--card-spacing:--spacing(4)]", n.tier === "opaque" ? "glass-resting glass-opaque" : `glass-${n.tier}`, h.value && "glass-specular-track", n.surface === "cartoon" && "cartoon-surface", n.surface === "veil" && "veil-surface", n.shadow && n.surface === "glass" && "shadow-card", !n.grain && "[&::after]:hidden", a.class))
49
- }, {
50
- default: f(() => [u(t.$slots, "default")]),
51
- _: 3
52
- }, 8, [
53
- "data-tier",
54
- "data-surface",
55
- "data-grain",
56
- "as",
57
- "as-child",
58
- "style",
59
- "class"
60
- ]));
61
- }
62
- }), h = /* @__PURE__ */ n(/* @__PURE__ */ o({
63
- __name: "CardHeader",
64
- props: {
65
- shrink: { type: Boolean },
66
- class: { type: [
67
- Boolean,
68
- null,
69
- String,
70
- Object,
71
- Array
72
- ] }
73
- },
74
- setup(t) {
75
- let n = t;
76
- return (r, i) => (l(), a("div", {
77
- "data-slot": "card-header",
78
- class: s(d(e)("@container/card-header flex flex-col gap-y-1.5 p-(--card-spacing)", "has-data-[slot=card-action]:grid has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-action]:items-start", t.shrink && "card-header--shrink", n.class))
79
- }, [u(r.$slots, "default", {}, void 0, !0)], 2));
80
- }
81
- }), [["__scopeId", "data-v-835e5cc0"]]), g = /* @__PURE__ */ o({
82
- __name: "CardTitle",
83
- props: { class: { type: [
84
- Boolean,
85
- null,
86
- String,
87
- Object,
88
- Array
89
- ] } },
90
- setup(t) {
91
- let n = t;
92
- return (t, r) => (l(), a("h3", {
93
- "data-slot": "card-title",
94
- class: s(d(e)("text-heading leading-none tracking-tight", n.class))
95
- }, [u(t.$slots, "default")], 2));
96
- }
97
- }), _ = /* @__PURE__ */ o({
98
- __name: "CardDescription",
99
- props: { class: { type: [
100
- Boolean,
101
- null,
102
- String,
103
- Object,
104
- Array
105
- ] } },
106
- setup(t) {
107
- let n = t;
108
- return (t, r) => (l(), a("p", {
109
- "data-slot": "card-description",
110
- class: s(d(e)("text-sm text-muted-foreground-strong", n.class))
111
- }, [u(t.$slots, "default")], 2));
112
- }
113
- }), v = /* @__PURE__ */ o({
114
- __name: "CardContent",
115
- props: { class: { type: [
116
- Boolean,
117
- null,
118
- String,
119
- Object,
120
- Array
121
- ] } },
122
- setup(t) {
123
- let n = t;
124
- return (t, r) => (l(), a("div", { class: s(d(e)("p-(--card-spacing)", n.class)) }, [u(t.$slots, "default")], 2));
125
- }
126
- }), y = /* @__PURE__ */ o({
127
- __name: "CardFooter",
128
- props: { class: { type: [
129
- Boolean,
130
- null,
131
- String,
132
- Object,
133
- Array
134
- ] } },
135
- setup(t) {
136
- let n = t;
137
- return (t, r) => (l(), a("div", { class: s(d(e)("flex items-center p-(--card-spacing) pt-0", n.class)) }, [u(t.$slots, "default")], 2));
138
- }
139
- }), b = /* @__PURE__ */ o({
140
- __name: "CardAction",
141
- props: { class: { type: [
142
- Boolean,
143
- null,
144
- String,
145
- Object,
146
- Array
147
- ] } },
148
- setup(t) {
149
- let n = t;
150
- return (t, r) => (l(), a("div", {
151
- "data-slot": "card-action",
152
- class: s(d(e)("col-start-2 row-span-2 row-start-1 self-start justify-self-end", n.class))
153
- }, [u(t.$slots, "default")], 2));
154
- }
155
- });
156
- //#endregion
157
- export { g as a, _ as i, y as n, h as o, v as r, m as s, b as t };