@bearmenu/ui 0.8.13 → 0.8.14

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 (285) hide show
  1. package/dist/{chunk-66MAPLXS.js → chunk-2ADCZXZJ.js} +1 -1
  2. package/dist/{chunk-2DEIXTBN.js → chunk-2ZXIXQIU.js} +1 -1
  3. package/dist/{chunk-YOKHBAIH.js → chunk-4OF4T4AI.js} +12 -11
  4. package/dist/{chunk-MZL7CGCL.js → chunk-4XDJXMLF.js} +2 -2
  5. package/dist/{chunk-YYGB4G4Q.js → chunk-CZK2MRS2.js} +1 -1
  6. package/dist/chunk-DJD3EMPK.js +126 -0
  7. package/dist/chunk-EZG2NELX.js +5 -0
  8. package/dist/{chunk-VAXOQS7W.js → chunk-F76NCVVR.js} +1 -1
  9. package/dist/{chunk-VG3PND3D.js → chunk-FMTJGO76.js} +1 -1
  10. package/dist/{chunk-UXWAOISG.js → chunk-FVSKGCK3.js} +2 -2
  11. package/dist/{chunk-2XCZJWTV.js → chunk-GNCWJWFE.js} +1 -1
  12. package/dist/{chunk-X3WMRKOW.js → chunk-HDR7V6IZ.js} +1 -1
  13. package/dist/{chunk-HSIYYA2E.js → chunk-HQU6QVAN.js} +5 -5
  14. package/dist/chunk-I5V446BX.js +27 -0
  15. package/dist/{chunk-WCTHZKU7.js → chunk-ICOU5QHT.js} +1 -1
  16. package/dist/{chunk-G7IFL4Z4.js → chunk-L3VEMP5A.js} +57 -9
  17. package/dist/chunk-LQWGZIYA.js +5 -0
  18. package/dist/{chunk-XNA2INVQ.js → chunk-MCOHLWRS.js} +2 -2
  19. package/dist/{chunk-3GWWZKX7.js → chunk-MMUBH76A.js} +21 -1
  20. package/dist/{chunk-ZDAHKI3A.js → chunk-MWB7S54O.js} +1 -1
  21. package/dist/{chunk-D5QHEHXJ.js → chunk-NMEVJT5Q.js} +1 -1
  22. package/dist/{chunk-3TNPSN4D.js → chunk-NSNEANOQ.js} +2 -2
  23. package/dist/{chunk-WSRWFA6K.js → chunk-NWZGSLPU.js} +1 -1
  24. package/dist/{chunk-LEAYBICI.js → chunk-OIV7B44M.js} +1 -1
  25. package/dist/{chunk-2CXU5WZO.js → chunk-P43B3ONY.js} +1 -1
  26. package/dist/{chunk-FRPPIXMY.js → chunk-PDTPO6NG.js} +1 -1
  27. package/dist/{chunk-6XMYEZVR.js → chunk-PX6RICS5.js} +1 -1
  28. package/dist/{chunk-6TEEY5YA.js → chunk-S33K4RC5.js} +1 -1
  29. package/dist/{chunk-3VMDCCCX.js → chunk-SC2VUTUI.js} +1 -1
  30. package/dist/{chunk-3NMG3KNA.js → chunk-SXQZ7DLH.js} +3 -3
  31. package/dist/{chunk-UDTG3RSE.js → chunk-T6S2ZBV6.js} +2 -2
  32. package/dist/{chunk-FKNBZF5T.js → chunk-WYTJR2YU.js} +1 -1
  33. package/dist/{chunk-QXHMPJ35.js → chunk-XBBEX4SF.js} +1 -1
  34. package/dist/chunk-XCB3F6SF.js +16 -0
  35. package/dist/{chunk-7BWTYWM3.js → chunk-ZLMRVBD7.js} +1 -1
  36. package/dist/{chunk-P7XTW2CG.js → chunk-ZLPWEHZO.js} +1 -1
  37. package/dist/components/accordion.js +1 -1
  38. package/dist/components/alert-dialog.js +2 -2
  39. package/dist/components/alert.js +2 -2
  40. package/dist/components/aspect-ratio.js +2 -2
  41. package/dist/components/avatar.js +1 -1
  42. package/dist/components/badge.js +2 -2
  43. package/dist/components/breadcrumb.js +1 -1
  44. package/dist/components/button-group.js +1 -1
  45. package/dist/components/button.js +2 -2
  46. package/dist/components/calendar.js +2 -2
  47. package/dist/components/card.js +3 -3
  48. package/dist/components/carousel.js +2 -2
  49. package/dist/components/category-deck.js +2 -2
  50. package/dist/components/checkbox.js +2 -2
  51. package/dist/components/circular-progress.js +1 -1
  52. package/dist/components/collapsible.js +1 -1
  53. package/dist/components/combobox.js +5 -5
  54. package/dist/components/command.js +3 -3
  55. package/dist/components/concept-card.js +2 -2
  56. package/dist/components/concept-compare-rail.js +3 -3
  57. package/dist/components/concept-compare.d.ts +2 -1
  58. package/dist/components/concept-compare.js +5 -5
  59. package/dist/components/concept-convergence.js +4 -4
  60. package/dist/components/convergence.js +3 -3
  61. package/dist/components/coverflow.js +1 -1
  62. package/dist/components/currency-input.js +2 -2
  63. package/dist/components/date-input.js +2 -2
  64. package/dist/components/day-rail-chip.js +2 -2
  65. package/dist/components/description-list.js +1 -1
  66. package/dist/components/dialog.js +2 -2
  67. package/dist/components/doorway-tiles.d.ts +57 -0
  68. package/dist/components/doorway-tiles.js +86 -0
  69. package/dist/components/drawer.js +1 -1
  70. package/dist/components/drift-rail.js +1 -1
  71. package/dist/components/dropdown-menu.js +1 -1
  72. package/dist/components/empty-state.js +3 -3
  73. package/dist/components/event-card.js +4 -4
  74. package/dist/components/event-compact-row.js +4 -4
  75. package/dist/components/event-day-header.js +2 -2
  76. package/dist/components/event-day-separator.js +3 -3
  77. package/dist/components/event-detail-panel.js +4 -4
  78. package/dist/components/event-hub-hero.js +2 -2
  79. package/dist/components/event-index-row.js +4 -4
  80. package/dist/components/event-list-row-wide.js +5 -5
  81. package/dist/components/event-list-row.js +5 -5
  82. package/dist/components/event-poster-fallback.js +1 -1
  83. package/dist/components/event-types.js +1 -1
  84. package/dist/components/events-empty-state.js +1 -1
  85. package/dist/components/explainer-steps.js +1 -1
  86. package/dist/components/facet-group.js +2 -2
  87. package/dist/components/featured-rail-item.js +2 -2
  88. package/dist/components/field.js +2 -2
  89. package/dist/components/filter-category-row.js +3 -3
  90. package/dist/components/form.js +2 -2
  91. package/dist/components/glass-ground.js +2 -2
  92. package/dist/components/grade-atom.d.ts +3 -0
  93. package/dist/components/grade-atom.js +4 -0
  94. package/dist/components/haptic-button.js +2 -2
  95. package/dist/components/hour-band.js +4 -4
  96. package/dist/components/hour-group.js +4 -4
  97. package/dist/components/hub-surface.js +1 -1
  98. package/dist/components/hue-chip.js +1 -1
  99. package/dist/components/icon.js +1 -1
  100. package/dist/components/input-group.js +1 -1
  101. package/dist/components/input-otp.js +1 -1
  102. package/dist/components/input.js +2 -2
  103. package/dist/components/item.js +1 -1
  104. package/dist/components/kbd.js +1 -1
  105. package/dist/components/kitchen-dossier.d.ts +2 -1
  106. package/dist/components/kitchen-dossier.js +3 -3
  107. package/dist/components/label.js +2 -2
  108. package/dist/components/lazy-markdown.js +1 -1
  109. package/dist/components/link-button.js +2 -2
  110. package/dist/components/markdown-renderer.js +1 -1
  111. package/dist/components/menu-dead-end.d.ts +2 -1
  112. package/dist/components/menu-dead-end.js +1 -1
  113. package/dist/components/menu-family-block.d.ts +2 -1
  114. package/dist/components/menu-family-block.js +14 -8
  115. package/dist/components/menu-family-card.d.ts +2 -1
  116. package/dist/components/menu-family-card.js +1 -1
  117. package/dist/components/menu-field.js +1 -1
  118. package/dist/components/menu-filter-chips.d.ts +2 -1
  119. package/dist/components/menu-filter-chips.js +3 -3
  120. package/dist/components/menu-group-rows.d.ts +2 -1
  121. package/dist/components/menu-group-rows.js +2 -2
  122. package/dist/components/menu-hub-hero.js +1 -1
  123. package/dist/components/menu-index-header.d.ts +2 -1
  124. package/dist/components/menu-index-header.js +2 -2
  125. package/dist/components/menu-index-list.d.ts +2 -1
  126. package/dist/components/menu-index-list.js +4 -4
  127. package/dist/components/menu-intent-hero.d.ts +3 -2
  128. package/dist/components/menu-intent-hero.js +1 -1
  129. package/dist/components/menu-item.d.ts +2 -1
  130. package/dist/components/menu-item.js +4 -4
  131. package/dist/components/menu-kitchen-list.d.ts +2 -1
  132. package/dist/components/menu-kitchen-list.js +4 -4
  133. package/dist/components/menu-mocks.d.ts +16 -5
  134. package/dist/components/menu-mocks.js +23 -2
  135. package/dist/components/menu-types.d.ts +21 -34
  136. package/dist/components/motion-icon-actions.d.ts +27 -0
  137. package/dist/components/motion-icon-actions.js +336 -0
  138. package/dist/components/motion-icon-controls.js +3 -3
  139. package/dist/components/motion-icon-set.d.ts +13 -1
  140. package/dist/components/motion-icon-set.js +197 -6
  141. package/dist/components/motion-icon.d.ts +15 -1
  142. package/dist/components/motion-icon.js +2 -2
  143. package/dist/components/multi-select-combobox.js +7 -7
  144. package/dist/components/multi-select-menu.js +2 -2
  145. package/dist/components/native-select.js +1 -1
  146. package/dist/components/open-now-list.d.ts +2 -1
  147. package/dist/components/open-now-list.js +2 -2
  148. package/dist/components/pagination.js +2 -2
  149. package/dist/components/phone-frame.js +1 -1
  150. package/dist/components/photo-ground.js +1 -1
  151. package/dist/components/place-about-tab.d.ts +2 -1
  152. package/dist/components/place-about-tab.js +6 -6
  153. package/dist/components/place-card.d.ts +94 -12
  154. package/dist/components/place-card.js +203 -128
  155. package/dist/components/place-details-mobile.d.ts +2 -1
  156. package/dist/components/place-details-mobile.js +7 -7
  157. package/dist/components/place-schedule-week.d.ts +2 -1
  158. package/dist/components/place-schedule-week.js +3 -3
  159. package/dist/components/place-types.d.ts +3 -265
  160. package/dist/components/popover.js +2 -2
  161. package/dist/components/poster-stack.js +1 -1
  162. package/dist/components/poster-tape.js +1 -1
  163. package/dist/components/poster-wall.d.ts +22 -6
  164. package/dist/components/poster-wall.js +197 -12
  165. package/dist/components/progress.js +1 -1
  166. package/dist/components/qa-block.d.ts +2 -1
  167. package/dist/components/qa-block.js +1 -1
  168. package/dist/components/quiet-stretch.js +1 -1
  169. package/dist/components/radio-group.js +1 -1
  170. package/dist/components/rating.js +1 -1
  171. package/dist/components/scroll-area.js +1 -1
  172. package/dist/components/scroll-fade.js +2 -2
  173. package/dist/components/search-bar.js +1 -1
  174. package/dist/components/searchable-select.js +5 -5
  175. package/dist/components/section-header.js +2 -2
  176. package/dist/components/segmented-nav.d.ts +24 -4
  177. package/dist/components/segmented-nav.js +11 -2
  178. package/dist/components/select.js +1 -1
  179. package/dist/components/selection-bar.js +1 -1
  180. package/dist/components/separator.js +2 -2
  181. package/dist/components/sheet.js +1 -1
  182. package/dist/components/signature-chip.js +3 -3
  183. package/dist/components/skeleton-card.js +3 -3
  184. package/dist/components/skeleton.js +2 -2
  185. package/dist/components/slider.js +1 -1
  186. package/dist/components/sliding-panels.js +2 -2
  187. package/dist/components/snap-rail.js +2 -2
  188. package/dist/components/sonner.js +1 -1
  189. package/dist/components/sort-option-list.js +1 -1
  190. package/dist/components/spinner.js +1 -1
  191. package/dist/components/stat-banner.js +1 -1
  192. package/dist/components/stepper.js +1 -1
  193. package/dist/components/sticky-container.js +1 -1
  194. package/dist/components/story.js +1 -1
  195. package/dist/components/switch.js +1 -1
  196. package/dist/components/table.js +1 -1
  197. package/dist/components/tabs.js +2 -2
  198. package/dist/components/tag-group.js +2 -2
  199. package/dist/components/tag.js +2 -2
  200. package/dist/components/text.js +2 -2
  201. package/dist/components/textarea.js +1 -1
  202. package/dist/components/timeline-band.js +4 -4
  203. package/dist/components/timeline-playhead.js +4 -4
  204. package/dist/components/toggle-group.js +2 -2
  205. package/dist/components/toggle.js +2 -2
  206. package/dist/components/tooltip.js +1 -1
  207. package/dist/components/top-comparison.d.ts +2 -1
  208. package/dist/components/top-comparison.js +1 -1
  209. package/dist/components/top-cross-link.d.ts +2 -1
  210. package/dist/components/top-cross-link.js +1 -1
  211. package/dist/components/top-ranking-entry.d.ts +2 -1
  212. package/dist/components/top-ranking-entry.js +6 -6
  213. package/dist/components/top-ranking-hero.d.ts +2 -1
  214. package/dist/components/top-ranking-hero.js +1 -1
  215. package/dist/components/top-ranking-legend.js +1 -1
  216. package/dist/components/top-types.d.ts +3 -1
  217. package/dist/components/use-mobile.js +1 -1
  218. package/dist/components/venue-events-block.js +5 -5
  219. package/dist/components/venue-grade-dimensions.d.ts +2 -1
  220. package/dist/components/venue-grade-dimensions.js +1 -1
  221. package/dist/components/venue-quotes.d.ts +2 -1
  222. package/dist/components/venue-quotes.js +1 -1
  223. package/dist/components/venue-wall.d.ts +2 -1
  224. package/dist/components/venue-wall.js +1 -1
  225. package/dist/components/weekday-theme-banner.js +1 -1
  226. package/dist/components/weekend-panel.js +4 -4
  227. package/dist/hooks/use-drag-swipe.js +1 -1
  228. package/dist/hooks/use-haptic.js +1 -1
  229. package/dist/hooks/use-media-query.js +1 -1
  230. package/dist/hooks/use-mobile.js +1 -1
  231. package/dist/hooks/use-mounted-theme.js +1 -1
  232. package/dist/hooks/use-sticky.js +1 -1
  233. package/dist/lib/card-hover.js +2 -18
  234. package/dist/lib/grade.d.ts +54 -0
  235. package/dist/lib/grade.js +2 -0
  236. package/dist/lib/icon-depth.d.ts +35 -0
  237. package/dist/lib/icon-depth.js +2 -0
  238. package/dist/lib/icon-registry.js +1 -1
  239. package/dist/lib/motion.js +2 -2
  240. package/dist/lib/overlay-pill.d.ts +30 -0
  241. package/dist/lib/overlay-pill.js +2 -0
  242. package/dist/lib/utils.js +1 -1
  243. package/dist/place-types-BHdeMMiG.d.ts +317 -0
  244. package/package.json +1 -1
  245. package/src/components/colour-dictionary.stories.tsx +268 -82
  246. package/src/components/doorway-tiles.stories.tsx +83 -0
  247. package/src/components/doorway-tiles.test.tsx +51 -0
  248. package/src/components/doorway-tiles.tsx +225 -0
  249. package/src/components/grade-atom.stories.tsx +81 -0
  250. package/src/components/grade-atom.tsx +256 -0
  251. package/src/components/hue-chip.stories.tsx +2 -2
  252. package/src/components/menu-family-block.stories.tsx +29 -0
  253. package/src/components/menu-family-block.test.tsx +51 -0
  254. package/src/components/menu-family-block.tsx +20 -4
  255. package/src/components/menu-intent-hero.tsx +1 -1
  256. package/src/components/menu-mocks.ts +39 -3
  257. package/src/components/menu-types.ts +17 -33
  258. package/src/components/motion-icon-actions.test.tsx +115 -0
  259. package/src/components/motion-icon-actions.tsx +580 -0
  260. package/src/components/motion-icon-controls.test.tsx +1 -0
  261. package/src/components/motion-icon-controls.tsx +18 -13
  262. package/src/components/motion-icon-set.stories.tsx +62 -3
  263. package/src/components/motion-icon-set.tsx +349 -2
  264. package/src/components/motion-icon.test.tsx +180 -1
  265. package/src/components/motion-icon.tsx +97 -8
  266. package/src/components/place-card.stories.tsx +66 -76
  267. package/src/components/place-card.test.tsx +188 -100
  268. package/src/components/place-card.tsx +356 -148
  269. package/src/components/place-types.ts +17 -4
  270. package/src/components/poster-wall.stories.tsx +84 -0
  271. package/src/components/poster-wall.test.tsx +94 -3
  272. package/src/components/poster-wall.tsx +257 -9
  273. package/src/components/segmented-nav.stories.tsx +72 -1
  274. package/src/components/segmented-nav.test.tsx +96 -0
  275. package/src/components/segmented-nav.tsx +36 -4
  276. package/src/globals.css +26 -0
  277. package/src/lib/grade.test.ts +82 -0
  278. package/src/lib/grade.ts +76 -0
  279. package/src/lib/icon-depth.ts +35 -0
  280. package/src/lib/overlay-pill.ts +29 -0
  281. package/dist/components/menu-family-tiles.d.ts +0 -19
  282. package/dist/components/menu-family-tiles.js +0 -57
  283. package/src/components/menu-family-tiles.stories.tsx +0 -54
  284. package/src/components/menu-family-tiles.test.tsx +0 -30
  285. package/src/components/menu-family-tiles.tsx +0 -132
@@ -1,5 +1,5 @@
1
1
  import { cn } from './chunk-FEK5XGZW.js';
2
- import { __objRest, __spreadValues } from './chunk-3GWWZKX7.js';
2
+ import { __objRest, __spreadValues } from './chunk-MMUBH76A.js';
3
3
  import * as React from 'react';
4
4
  import * as PopoverPrimitive from '@radix-ui/react-popover';
5
5
  import { jsx } from 'react/jsx-runtime';
@@ -1,5 +1,5 @@
1
1
  import { cn } from './chunk-FEK5XGZW.js';
2
- import { __objRest, __spreadValues } from './chunk-3GWWZKX7.js';
2
+ import { __objRest, __spreadValues } from './chunk-MMUBH76A.js';
3
3
  import * as React from 'react';
4
4
  import * as LabelPrimitive from '@radix-ui/react-label';
5
5
  import { cva } from 'class-variance-authority';
@@ -1,5 +1,5 @@
1
- import { beats, returnTransition, MotionIcon, pivot } from './chunk-G7IFL4Z4.js';
2
- import { __spreadProps, __spreadValues } from './chunk-3GWWZKX7.js';
1
+ import { beats, returnTransition, MotionIcon, pivot } from './chunk-L3VEMP5A.js';
2
+ import { __spreadProps, __spreadValues } from './chunk-MMUBH76A.js';
3
3
  import { motion } from 'framer-motion';
4
4
  import { jsx, jsxs } from 'react/jsx-runtime';
5
5
 
@@ -269,24 +269,25 @@ function MotionPlayPause(props) {
269
269
  /* @__PURE__ */ jsx(motion.rect, { variants: barRight, opacity: 0, style: origin, x: "14", y: "3", width: "5", height: "18", rx: "1" })
270
270
  ] }));
271
271
  }
272
- var EYE_TIMES = [0, 0.3, 0.74, 1];
272
+ var EYE_TIMES = [0, 0.18, 0.4, 0.5, 0.76, 1];
273
+ var EYE = beats(EYE_TIMES, 0.52);
273
274
  var lid = {
274
275
  rest: { scaleY: 1, transition: returnTransition },
275
- active: { scaleY: 0.18, transition: returnTransition },
276
- play: { scaleY: [1, 1.06, 0.14, 0.18], transition: beats(EYE_TIMES, 0.46) }
276
+ active: { scaleY: 1, transition: returnTransition },
277
+ play: { scaleY: [1, 1.08, 0.2, 0.2, 1.08, 1], transition: EYE }
277
278
  };
278
279
  var pupil = {
279
- rest: { scale: 1, opacity: 1, transition: returnTransition },
280
- active: { scale: 0.2, opacity: 0, transition: returnTransition },
281
- play: { scale: [1, 1, 0.2, 0.2], opacity: [1, 1, 0, 0], transition: beats(EYE_TIMES, 0.46) }
280
+ rest: { scaleY: 1, transition: returnTransition },
281
+ active: { scaleY: 1, transition: returnTransition },
282
+ play: { scaleY: [1, 1, 0.2, 0.2, 1, 1], transition: EYE }
282
283
  };
283
284
  var slash = {
284
285
  rest: { pathLength: 0, opacity: 0, transition: { duration: 0.16 } },
285
286
  active: { pathLength: 1, opacity: 1, transition: { duration: 0.16 } },
286
287
  play: {
287
- pathLength: [0, 0, 1, 1],
288
- opacity: [0, 1, 1, 1],
289
- transition: beats(EYE_TIMES, 0.46)
288
+ pathLength: [0, 0, 0, 0, 1, 1],
289
+ opacity: [0, 0, 1, 1, 1, 1],
290
+ transition: EYE
290
291
  }
291
292
  };
292
293
  function MotionEye(props) {
@@ -1,6 +1,6 @@
1
- import { stagger, ease, duration, springSnappy } from './chunk-LEAYBICI.js';
1
+ import { stagger, ease, duration, springSnappy } from './chunk-OIV7B44M.js';
2
2
  import { cn } from './chunk-FEK5XGZW.js';
3
- import { __spreadValues, __spreadProps } from './chunk-3GWWZKX7.js';
3
+ import { __spreadValues, __spreadProps } from './chunk-MMUBH76A.js';
4
4
  import { motion, useReducedMotion } from 'framer-motion';
5
5
  import { jsx, jsxs } from 'react/jsx-runtime';
6
6
 
@@ -1,5 +1,5 @@
1
1
  import { cn } from './chunk-FEK5XGZW.js';
2
- import { __objRest, __spreadValues } from './chunk-3GWWZKX7.js';
2
+ import { __objRest, __spreadValues } from './chunk-MMUBH76A.js';
3
3
  import * as React from 'react';
4
4
  import { cva } from 'class-variance-authority';
5
5
  import { jsx } from 'react/jsx-runtime';
@@ -0,0 +1,126 @@
1
+ import { shouldShowGradeNumber, resolveGradeBand, formatGrade } from './chunk-I5V446BX.js';
2
+ import { cn } from './chunk-FEK5XGZW.js';
3
+ import { Info, ShieldAlert } from 'lucide-react';
4
+ import { jsx, jsxs } from 'react/jsx-runtime';
5
+
6
+ var BAND_CLASSES = {
7
+ exceptional: "bg-amber-100 text-amber-800 ring-amber-400 dark:bg-amber-500/20 dark:text-amber-300 dark:ring-amber-500/60",
8
+ great: "bg-emerald-100 text-emerald-800 ring-emerald-400 dark:bg-emerald-500/20 dark:text-emerald-300 dark:ring-emerald-500/60",
9
+ good: "bg-sky-100 text-sky-800 ring-sky-400 dark:bg-sky-500/20 dark:text-sky-300 dark:ring-sky-500/60",
10
+ decent: "bg-orange-100 text-orange-800 ring-orange-400 dark:bg-orange-500/20 dark:text-orange-300 dark:ring-orange-500/60",
11
+ weak: "bg-rose-100 text-rose-800 ring-rose-400 dark:bg-rose-500/20 dark:text-rose-200 dark:ring-rose-500/60"
12
+ };
13
+ var SOFT_CLASSES = "bg-muted text-muted-foreground ring-border";
14
+ var PHOTO_SHELL = "bg-black/45 text-white backdrop-blur-sm ring-white/10 drop-shadow-[0_2px_6px_rgba(0,0,0,0.55)]";
15
+ var BAND_CLASSES_PHOTO = {
16
+ exceptional: { ring: "ring-amber-400/70", num: "text-amber-300" },
17
+ great: { ring: "ring-emerald-400/70", num: "text-emerald-300" },
18
+ good: { ring: "ring-sky-400/70", num: "text-sky-300" },
19
+ // Brighter/more saturated than the warm-canvas orange so it doesn't bleed into
20
+ // warm (restaurant) photos or compress toward the sky band on the dark shell.
21
+ decent: { ring: "ring-orange-300/90", num: "text-orange-200" },
22
+ weak: { ring: "ring-rose-400/70", num: "text-rose-200" }
23
+ };
24
+ var SIZE = {
25
+ xs: {
26
+ box: "h-6 px-1.5 rounded-md",
27
+ minW: "min-w-9",
28
+ num: "text-[13px]",
29
+ desc: "text-2xs",
30
+ gap: "gap-1",
31
+ shield: "h-3 w-3",
32
+ showDesc: false
33
+ },
34
+ sm: {
35
+ box: "h-7 px-2 rounded-md",
36
+ minW: "min-w-11",
37
+ num: "text-sm",
38
+ desc: "text-2xs",
39
+ gap: "gap-1.5",
40
+ shield: "h-3 w-3",
41
+ showDesc: true
42
+ },
43
+ md: {
44
+ box: "h-9 px-2.5 rounded-lg",
45
+ minW: "min-w-14",
46
+ num: "text-lg",
47
+ desc: "text-xs",
48
+ gap: "gap-1.5",
49
+ shield: "h-3.5 w-3.5",
50
+ showDesc: true
51
+ },
52
+ lg: {
53
+ box: "h-12 px-3.5 rounded-xl",
54
+ minW: "min-w-20",
55
+ num: "text-3xl",
56
+ desc: "text-sm",
57
+ gap: "gap-2",
58
+ shield: "h-4 w-4",
59
+ showDesc: true
60
+ }
61
+ };
62
+ function GradeAtom({
63
+ grade,
64
+ labels,
65
+ size = "md",
66
+ hideDescriptor,
67
+ onPhoto,
68
+ showInfo,
69
+ className
70
+ }) {
71
+ const overall = grade.overall;
72
+ if (overall == null) return null;
73
+ const sz = SIZE[size];
74
+ const infoGlyph = showInfo ? /* @__PURE__ */ jsx(Info, { className: cn("shrink-0 opacity-70", sz.shield), "aria-hidden": true }) : null;
75
+ if (!shouldShowGradeNumber(grade)) {
76
+ if (size === "xs") return null;
77
+ return /* @__PURE__ */ jsxs(
78
+ "span",
79
+ {
80
+ className: cn(
81
+ "inline-flex items-center justify-center font-medium ring-1 ring-inset",
82
+ onPhoto ? PHOTO_SHELL : SOFT_CLASSES,
83
+ sz.box,
84
+ sz.minW,
85
+ sz.desc,
86
+ sz.gap,
87
+ className
88
+ ),
89
+ children: [
90
+ labels.soft,
91
+ infoGlyph
92
+ ]
93
+ }
94
+ );
95
+ }
96
+ const band = resolveGradeBand(overall);
97
+ const value = formatGrade(overall);
98
+ const descriptor = labels.bands[band];
99
+ const showDesc = sz.showDesc && !hideDescriptor;
100
+ const photo = onPhoto ? BAND_CLASSES_PHOTO[band] : null;
101
+ return /* @__PURE__ */ jsxs(
102
+ "span",
103
+ {
104
+ className: cn(
105
+ // `justify-center` so a 1-glyph "9" sits centred in the reserved width
106
+ // instead of hugging the left edge of a pill sized for "8.2".
107
+ "inline-flex items-center justify-center font-semibold ring-1 ring-inset",
108
+ photo ? cn(PHOTO_SHELL, photo.ring) : BAND_CLASSES[band],
109
+ sz.box,
110
+ sz.minW,
111
+ sz.gap,
112
+ className
113
+ ),
114
+ "aria-label": grade.capped ? `${labels.aria(value)} \u2014 ${labels.capped}` : labels.aria(value),
115
+ title: grade.capped ? labels.capped : void 0,
116
+ children: [
117
+ /* @__PURE__ */ jsx("span", { className: cn("font-extrabold tabular-nums leading-none", sz.num, photo == null ? void 0 : photo.num), children: value }),
118
+ showDesc && /* @__PURE__ */ jsx("span", { className: cn("font-medium leading-none", sz.desc, onPhoto && "text-white/80"), children: descriptor }),
119
+ grade.capped && /* @__PURE__ */ jsx(ShieldAlert, { className: cn("shrink-0", sz.shield), "aria-hidden": true }),
120
+ infoGlyph
121
+ ]
122
+ }
123
+ );
124
+ }
125
+
126
+ export { GradeAtom };
@@ -0,0 +1,5 @@
1
+ // src/lib/overlay-pill.ts
2
+ var OVERLAY_PILL = "h-6 gap-1 rounded-full px-2 text-2xs font-semibold shadow-sm";
3
+ var OVERLAY_ICON = "h-3 w-3 shrink-0";
4
+
5
+ export { OVERLAY_ICON, OVERLAY_PILL };
@@ -1,6 +1,6 @@
1
1
  import { useHaptic } from './chunk-R47NEOSI.js';
2
2
  import { cn } from './chunk-FEK5XGZW.js';
3
- import { __objRest, __spreadProps, __spreadValues } from './chunk-3GWWZKX7.js';
3
+ import { __objRest, __spreadProps, __spreadValues } from './chunk-MMUBH76A.js';
4
4
  import * as React from 'react';
5
5
  import { Slot } from '@radix-ui/react-slot';
6
6
  import { cva } from 'class-variance-authority';
@@ -1,4 +1,4 @@
1
- import { Text } from './chunk-7BWTYWM3.js';
1
+ import { Text } from './chunk-ZLMRVBD7.js';
2
2
  import { cn } from './chunk-FEK5XGZW.js';
3
3
  import { useRef, useEffect } from 'react';
4
4
  import { jsx, jsxs } from 'react/jsx-runtime';
@@ -1,6 +1,6 @@
1
- import { textVariants } from './chunk-7BWTYWM3.js';
1
+ import { textVariants } from './chunk-ZLMRVBD7.js';
2
2
  import { cn } from './chunk-FEK5XGZW.js';
3
- import { __objRest, __spreadValues } from './chunk-3GWWZKX7.js';
3
+ import { __objRest, __spreadValues } from './chunk-MMUBH76A.js';
4
4
  import * as React from 'react';
5
5
  import { cva } from 'class-variance-authority';
6
6
  import { jsx } from 'react/jsx-runtime';
@@ -1,5 +1,5 @@
1
1
  import { cn } from './chunk-FEK5XGZW.js';
2
- import { __objRest, __spreadProps, __spreadValues } from './chunk-3GWWZKX7.js';
2
+ import { __objRest, __spreadProps, __spreadValues } from './chunk-MMUBH76A.js';
3
3
  import * as React from 'react';
4
4
  import { jsxs, jsx } from 'react/jsx-runtime';
5
5
 
@@ -1,5 +1,5 @@
1
1
  import { cn } from './chunk-FEK5XGZW.js';
2
- import { __objRest, __spreadValues } from './chunk-3GWWZKX7.js';
2
+ import { __objRest, __spreadValues } from './chunk-MMUBH76A.js';
3
3
  import * as TogglePrimitive from '@radix-ui/react-toggle';
4
4
  import { cva } from 'class-variance-authority';
5
5
  import { jsx } from 'react/jsx-runtime';
@@ -1,9 +1,9 @@
1
- import { PlaceScheduleWeek } from './chunk-VG3PND3D.js';
2
- import { Tag } from './chunk-ZDAHKI3A.js';
3
- import { Separator } from './chunk-WSRWFA6K.js';
4
- import { Text } from './chunk-7BWTYWM3.js';
1
+ import { PlaceScheduleWeek } from './chunk-FMTJGO76.js';
2
+ import { Tag } from './chunk-MWB7S54O.js';
3
+ import { Separator } from './chunk-NWZGSLPU.js';
4
+ import { Text } from './chunk-ZLMRVBD7.js';
5
5
  import { cn } from './chunk-FEK5XGZW.js';
6
- import { __spreadProps, __spreadValues } from './chunk-3GWWZKX7.js';
6
+ import { __spreadProps, __spreadValues } from './chunk-MMUBH76A.js';
7
7
  import { Fragment } from 'react';
8
8
  import { Phone, Globe, Check } from 'lucide-react';
9
9
  import { jsxs, jsx } from 'react/jsx-runtime';
@@ -0,0 +1,27 @@
1
+ // src/lib/grade.ts
2
+ function resolveGradeBand(overall) {
3
+ if (overall >= 9) return "exceptional";
4
+ if (overall >= 7.5) return "great";
5
+ if (overall >= 6) return "good";
6
+ if (overall >= 5) return "decent";
7
+ return "weak";
8
+ }
9
+ function formatGrade(overall) {
10
+ const clamped = Math.min(10, Math.max(1, overall));
11
+ const rounded = Math.round(clamped * 10) / 10;
12
+ return rounded.toFixed(1).replace(/\.0$/, "");
13
+ }
14
+ function shouldShowGradeNumber(grade) {
15
+ return grade.show_number !== false;
16
+ }
17
+ function showsGradeAtom(grade, size) {
18
+ if ((grade == null ? void 0 : grade.overall) == null) return false;
19
+ return size !== "xs" || shouldShowGradeNumber(grade);
20
+ }
21
+ function resolveDimensionTone(score) {
22
+ if (score >= 75) return "strong";
23
+ if (score >= 50) return "adequate";
24
+ return "low";
25
+ }
26
+
27
+ export { formatGrade, resolveDimensionTone, resolveGradeBand, shouldShowGradeNumber, showsGradeAtom };
@@ -1,5 +1,5 @@
1
1
  import { cn } from './chunk-FEK5XGZW.js';
2
- import { __spreadProps, __spreadValues } from './chunk-3GWWZKX7.js';
2
+ import { __spreadProps, __spreadValues } from './chunk-MMUBH76A.js';
3
3
  import { jsx } from 'react/jsx-runtime';
4
4
 
5
5
  var STOPS = [0, 0.25, 0.5, 0.75, 1];
@@ -1,7 +1,7 @@
1
1
  import { cn } from './chunk-FEK5XGZW.js';
2
- import { __spreadProps, __spreadValues } from './chunk-3GWWZKX7.js';
2
+ import { __spreadProps, __spreadValues, __async } from './chunk-MMUBH76A.js';
3
3
  import * as React from 'react';
4
- import { useAnimationControls, motion } from 'framer-motion';
4
+ import { useAnimationControls, useReducedMotion, motion } from 'framer-motion';
5
5
  import { jsx } from 'react/jsx-runtime';
6
6
 
7
7
  function beats(times, duration = 0.62) {
@@ -23,33 +23,81 @@ var rootVariants = {
23
23
  active: { strokeWidth: 2.25, transition: { duration: 0.18 } },
24
24
  play: { strokeWidth: 2.25, transition: { duration: 0.12 } }
25
25
  };
26
+ var GESTURE_MS = 700;
27
+ var HOLD_GRACE_MS = 900;
26
28
  function useIconGesture(active, replayToken) {
27
29
  const controls = useAnimationControls();
30
+ const reducedMotion = useReducedMotion() === true;
28
31
  const lastPlayAt = React.useRef(0);
29
32
  const seenToken = React.useRef(0);
30
33
  const seenActive = React.useRef(null);
34
+ const playCount = React.useRef(0);
35
+ const mounted = React.useRef(false);
36
+ const restTimer = React.useRef(null);
37
+ const clearRestTimer = React.useCallback(() => {
38
+ if (restTimer.current !== null) clearTimeout(restTimer.current);
39
+ restTimer.current = null;
40
+ }, []);
31
41
  React.useEffect(() => {
42
+ mounted.current = true;
32
43
  controls.set(active ? "active" : "rest");
33
44
  seenActive.current = active;
45
+ return () => {
46
+ mounted.current = false;
47
+ clearRestTimer();
48
+ };
34
49
  }, []);
50
+ const perform = React.useCallback(() => __async(null, null, function* () {
51
+ const id = ++playCount.current;
52
+ lastPlayAt.current = Date.now();
53
+ clearRestTimer();
54
+ if (reducedMotion) {
55
+ if (seenActive.current) controls.set("active");
56
+ return;
57
+ }
58
+ yield controls.start("play");
59
+ if (!mounted.current || playCount.current !== id) return;
60
+ if (seenActive.current) {
61
+ controls.set("active");
62
+ return;
63
+ }
64
+ restTimer.current = setTimeout(() => {
65
+ restTimer.current = null;
66
+ if (mounted.current && !seenActive.current) controls.set("rest");
67
+ }, HOLD_GRACE_MS);
68
+ }), [controls, clearRestTimer, reducedMotion]);
35
69
  React.useEffect(() => {
36
70
  if (replayToken === seenToken.current) return;
37
71
  seenToken.current = replayToken;
38
- lastPlayAt.current = Date.now();
39
- void controls.start("play");
40
- }, [replayToken, controls]);
72
+ void perform();
73
+ }, [replayToken, perform]);
41
74
  React.useEffect(() => {
42
75
  if (seenActive.current === null || seenActive.current === active) return;
43
76
  seenActive.current = active;
77
+ if (reducedMotion) {
78
+ clearRestTimer();
79
+ controls.set(active ? "active" : "rest");
80
+ return;
81
+ }
82
+ const sincePlay = Date.now() - lastPlayAt.current;
44
83
  if (!active) {
84
+ if (sincePlay < GESTURE_MS) return;
85
+ clearRestTimer();
45
86
  void controls.start("rest");
46
87
  return;
47
88
  }
48
- if (Date.now() - lastPlayAt.current < 600) return;
49
- void controls.start("play");
50
- }, [active, controls]);
89
+ if (sincePlay < GESTURE_MS + HOLD_GRACE_MS) {
90
+ clearRestTimer();
91
+ if (sincePlay >= GESTURE_MS) controls.set("active");
92
+ return;
93
+ }
94
+ void perform();
95
+ }, [active, controls, perform, clearRestTimer, reducedMotion]);
51
96
  return controls;
52
97
  }
98
+ function useSvgId(prefix) {
99
+ return `${prefix}-${React.useId().replace(/[^\w-]/g, "")}`;
100
+ }
53
101
  function MotionIcon({
54
102
  active = false,
55
103
  replayToken = 0,
@@ -76,4 +124,4 @@ function MotionIcon({
76
124
  );
77
125
  }
78
126
 
79
- export { MotionIcon, beats, pivot, poses, returnTransition, useIconGesture };
127
+ export { MotionIcon, beats, pivot, poses, returnTransition, useIconGesture, useSvgId };
@@ -0,0 +1,5 @@
1
+ // src/lib/icon-depth.ts
2
+ var RAISED_ICON_FILTER = "drop-shadow(0 1px 1px oklch(0 0 0 / 0.6)) drop-shadow(0 3px 8px oklch(0 0 0 / 0.4))";
3
+ var NEUTRAL_ICON_FILTER = "var(--icon-depth-neutral)";
4
+
5
+ export { NEUTRAL_ICON_FILTER, RAISED_ICON_FILTER };
@@ -1,6 +1,6 @@
1
- import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription } from './chunk-FRPPIXMY.js';
1
+ import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription } from './chunk-PDTPO6NG.js';
2
2
  import { cn } from './chunk-FEK5XGZW.js';
3
- import { __objRest, __spreadValues, __spreadProps } from './chunk-3GWWZKX7.js';
3
+ import { __objRest, __spreadValues, __spreadProps } from './chunk-MMUBH76A.js';
4
4
  import * as React from 'react';
5
5
  import { Command as Command$1 } from 'cmdk';
6
6
  import { Search } from 'lucide-react';
@@ -29,5 +29,25 @@ var __objRest = (source, exclude) => {
29
29
  }
30
30
  return target;
31
31
  };
32
+ var __async = (__this, __arguments, generator) => {
33
+ return new Promise((resolve, reject) => {
34
+ var fulfilled = (value) => {
35
+ try {
36
+ step(generator.next(value));
37
+ } catch (e) {
38
+ reject(e);
39
+ }
40
+ };
41
+ var rejected = (value) => {
42
+ try {
43
+ step(generator.throw(value));
44
+ } catch (e) {
45
+ reject(e);
46
+ }
47
+ };
48
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
49
+ step((generator = generator.apply(__this, __arguments)).next());
50
+ });
51
+ };
32
52
 
33
- export { __objRest, __spreadProps, __spreadValues };
53
+ export { __async, __objRest, __spreadProps, __spreadValues };
@@ -1,5 +1,5 @@
1
1
  import { cn } from './chunk-FEK5XGZW.js';
2
- import { __objRest, __spreadProps, __spreadValues } from './chunk-3GWWZKX7.js';
2
+ import { __objRest, __spreadProps, __spreadValues } from './chunk-MMUBH76A.js';
3
3
  import * as React from 'react';
4
4
  import { X } from 'lucide-react';
5
5
  import { cva } from 'class-variance-authority';
@@ -1,5 +1,5 @@
1
1
  import { cn } from './chunk-FEK5XGZW.js';
2
- import { __objRest, __spreadProps, __spreadValues } from './chunk-3GWWZKX7.js';
2
+ import { __objRest, __spreadProps, __spreadValues } from './chunk-MMUBH76A.js';
3
3
  import * as React from 'react';
4
4
  import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
5
5
  import { Minus, Check } from 'lucide-react';
@@ -1,5 +1,5 @@
1
- import { Separator } from './chunk-WSRWFA6K.js';
2
- import { Skeleton } from './chunk-QXHMPJ35.js';
1
+ import { Separator } from './chunk-NWZGSLPU.js';
2
+ import { Skeleton } from './chunk-XBBEX4SF.js';
3
3
  import { cn } from './chunk-FEK5XGZW.js';
4
4
  import { Radio } from 'lucide-react';
5
5
  import { jsxs, jsx } from 'react/jsx-runtime';
@@ -1,5 +1,5 @@
1
1
  import { cn } from './chunk-FEK5XGZW.js';
2
- import { __objRest, __spreadValues } from './chunk-3GWWZKX7.js';
2
+ import { __objRest, __spreadValues } from './chunk-MMUBH76A.js';
3
3
  import * as React from 'react';
4
4
  import * as SeparatorPrimitive from '@radix-ui/react-separator';
5
5
  import { jsx } from 'react/jsx-runtime';
@@ -1,4 +1,4 @@
1
- import { __spreadValues } from './chunk-3GWWZKX7.js';
1
+ import { __spreadValues } from './chunk-MMUBH76A.js';
2
2
 
3
3
  // src/lib/motion.ts
4
4
  var duration = {
@@ -1,5 +1,5 @@
1
1
  import { cn } from './chunk-FEK5XGZW.js';
2
- import { __objRest, __spreadValues } from './chunk-3GWWZKX7.js';
2
+ import { __objRest, __spreadValues } from './chunk-MMUBH76A.js';
3
3
  import { cva } from 'class-variance-authority';
4
4
  import { jsx } from 'react/jsx-runtime';
5
5
 
@@ -1,5 +1,5 @@
1
1
  import { cn } from './chunk-FEK5XGZW.js';
2
- import { __objRest, __spreadValues, __spreadProps } from './chunk-3GWWZKX7.js';
2
+ import { __objRest, __spreadValues, __spreadProps } from './chunk-MMUBH76A.js';
3
3
  import * as React from 'react';
4
4
  import * as DialogPrimitive from '@radix-ui/react-dialog';
5
5
  import { cva } from 'class-variance-authority';
@@ -1,5 +1,5 @@
1
1
  import { cn } from './chunk-FEK5XGZW.js';
2
- import { __objRest, __spreadProps, __spreadValues } from './chunk-3GWWZKX7.js';
2
+ import { __objRest, __spreadProps, __spreadValues } from './chunk-MMUBH76A.js';
3
3
  import * as React from 'react';
4
4
  import { jsxs, jsx } from 'react/jsx-runtime';
5
5
 
@@ -1,4 +1,4 @@
1
- import { Badge } from './chunk-2CXU5WZO.js';
1
+ import { Badge } from './chunk-P43B3ONY.js';
2
2
  import { cn } from './chunk-FEK5XGZW.js';
3
3
  import { jsx } from 'react/jsx-runtime';
4
4
 
@@ -1,4 +1,4 @@
1
- import { __objRest, __spreadValues } from './chunk-3GWWZKX7.js';
1
+ import { __objRest, __spreadValues } from './chunk-MMUBH76A.js';
2
2
  import * as AspectRatioPrimitive from '@radix-ui/react-aspect-ratio';
3
3
  import { jsx } from 'react/jsx-runtime';
4
4
 
@@ -1,7 +1,7 @@
1
- import { Separator } from './chunk-WSRWFA6K.js';
2
- import { Skeleton } from './chunk-QXHMPJ35.js';
1
+ import { Separator } from './chunk-NWZGSLPU.js';
2
+ import { Skeleton } from './chunk-XBBEX4SF.js';
3
3
  import { cn } from './chunk-FEK5XGZW.js';
4
- import { __objRest, __spreadValues } from './chunk-3GWWZKX7.js';
4
+ import { __objRest, __spreadValues } from './chunk-MMUBH76A.js';
5
5
  import { Star, Clock, Check, MessageSquare, ChevronRight } from 'lucide-react';
6
6
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
7
7
 
@@ -1,6 +1,6 @@
1
- import { SignatureChip } from './chunk-6TEEY5YA.js';
1
+ import { SignatureChip } from './chunk-S33K4RC5.js';
2
2
  import { cn } from './chunk-FEK5XGZW.js';
3
- import { __objRest, __spreadValues } from './chunk-3GWWZKX7.js';
3
+ import { __objRest, __spreadValues } from './chunk-MMUBH76A.js';
4
4
  import { memo } from 'react';
5
5
  import { MessageSquareQuote } from 'lucide-react';
6
6
  import { jsxs, jsx } from 'react/jsx-runtime';
@@ -1,5 +1,5 @@
1
1
  import { cn } from './chunk-FEK5XGZW.js';
2
- import { __objRest, __spreadProps, __spreadValues } from './chunk-3GWWZKX7.js';
2
+ import { __objRest, __spreadProps, __spreadValues } from './chunk-MMUBH76A.js';
3
3
  import * as React from 'react';
4
4
  import { cva } from 'class-variance-authority';
5
5
  import { jsx, jsxs } from 'react/jsx-runtime';
@@ -1,5 +1,5 @@
1
1
  import { cn } from './chunk-FEK5XGZW.js';
2
- import { __objRest, __spreadValues } from './chunk-3GWWZKX7.js';
2
+ import { __objRest, __spreadValues } from './chunk-MMUBH76A.js';
3
3
  import { jsx } from 'react/jsx-runtime';
4
4
 
5
5
  function Skeleton(_a) {
@@ -0,0 +1,16 @@
1
+ // src/lib/card-hover.ts
2
+ var HOVER_DURATION = "duration-[320ms]";
3
+ var HOVER_EASE = "ease-[cubic-bezier(0.4,0,0.2,1)]";
4
+ var HOVER_MOTION = `transition-transform ${HOVER_DURATION} ${HOVER_EASE} motion-reduce:transition-none will-change-transform`;
5
+ var HOVER_SHADOW_MOTION = `transition-shadow ${HOVER_DURATION} ${HOVER_EASE}`;
6
+ var HOVER_LIFT_GRID = "[@media(hover:hover)]:hover:-translate-y-1";
7
+ var HOVER_LIFT_GRID_GROUP = "[@media(hover:hover)]:group-hover/card:-translate-y-1";
8
+ var HOVER_LIFT_LIST = "[@media(hover:hover)]:hover:-translate-y-0.5";
9
+ var HOVER_IMAGE_SCALE = "group-hover:scale-[1.05]";
10
+ var HOVER_IMAGE_MOTION = `${HOVER_MOTION} ${HOVER_IMAGE_SCALE}`;
11
+ var HOVER_IMAGE_SHADOW = "shadow-[var(--shadow-card-image)] [@media(hover:hover)]:group-hover:shadow-[var(--shadow-card-image-hover)]";
12
+ var HOVER_IMAGE_SHADOW_INSET = "shadow-[var(--shadow-menu-cover-inset),var(--shadow-card-image)] [@media(hover:hover)]:group-hover:shadow-[var(--shadow-menu-cover-inset),var(--shadow-card-image-hover)]";
13
+ var HOVER_IMAGE_WRAPPER = `${HOVER_SHADOW_MOTION} ${HOVER_IMAGE_SHADOW}`;
14
+ var HOVER_IMAGE_WRAPPER_INSET = `${HOVER_SHADOW_MOTION} ${HOVER_IMAGE_SHADOW_INSET}`;
15
+
16
+ export { HOVER_DURATION, HOVER_EASE, HOVER_IMAGE_MOTION, HOVER_IMAGE_SCALE, HOVER_IMAGE_SHADOW, HOVER_IMAGE_SHADOW_INSET, HOVER_IMAGE_WRAPPER, HOVER_IMAGE_WRAPPER_INSET, HOVER_LIFT_GRID, HOVER_LIFT_GRID_GROUP, HOVER_LIFT_LIST, HOVER_MOTION, HOVER_SHADOW_MOTION };
@@ -1,5 +1,5 @@
1
1
  import { cn } from './chunk-FEK5XGZW.js';
2
- import { __objRest, __spreadValues } from './chunk-3GWWZKX7.js';
2
+ import { __objRest, __spreadValues } from './chunk-MMUBH76A.js';
3
3
  import { cva } from 'class-variance-authority';
4
4
  import { jsx } from 'react/jsx-runtime';
5
5
 
@@ -1,4 +1,4 @@
1
- import { SnapRail, SnapRailDots } from './chunk-FKNBZF5T.js';
1
+ import { SnapRail, SnapRailDots } from './chunk-WYTJR2YU.js';
2
2
  import { PhotoGround } from './chunk-CNJQUHCU.js';
3
3
  import { cn } from './chunk-FEK5XGZW.js';
4
4
  import * as React from 'react';
@@ -1,5 +1,5 @@
1
1
  import { cn } from '../chunk-FEK5XGZW.js';
2
- import { __objRest, __spreadValues, __spreadProps } from '../chunk-3GWWZKX7.js';
2
+ import { __objRest, __spreadValues, __spreadProps } from '../chunk-MMUBH76A.js';
3
3
  import * as React from 'react';
4
4
  import * as AccordionPrimitive from '@radix-ui/react-accordion';
5
5
  import { ChevronDown } from 'lucide-react';
@@ -1,7 +1,7 @@
1
- import { buttonVariants } from '../chunk-VAXOQS7W.js';
1
+ import { buttonVariants } from '../chunk-F76NCVVR.js';
2
2
  import '../chunk-R47NEOSI.js';
3
3
  import { cn } from '../chunk-FEK5XGZW.js';
4
- import { __objRest, __spreadProps, __spreadValues } from '../chunk-3GWWZKX7.js';
4
+ import { __objRest, __spreadProps, __spreadValues } from '../chunk-MMUBH76A.js';
5
5
  import * as React from 'react';
6
6
  import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';
7
7
  import { jsx, jsxs } from 'react/jsx-runtime';
@@ -1,6 +1,6 @@
1
- import { textVariants } from '../chunk-7BWTYWM3.js';
1
+ import { textVariants } from '../chunk-ZLMRVBD7.js';
2
2
  import { cn } from '../chunk-FEK5XGZW.js';
3
- import { __objRest, __spreadValues } from '../chunk-3GWWZKX7.js';
3
+ import { __objRest, __spreadValues } from '../chunk-MMUBH76A.js';
4
4
  import * as React from 'react';
5
5
  import { cva } from 'class-variance-authority';
6
6
  import { jsx } from 'react/jsx-runtime';