@bearmenu/ui 0.8.12 → 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.
- package/dist/{chunk-66MAPLXS.js → chunk-2ADCZXZJ.js} +1 -1
- package/dist/{chunk-2DEIXTBN.js → chunk-2ZXIXQIU.js} +1 -1
- package/dist/{chunk-YOKHBAIH.js → chunk-4OF4T4AI.js} +12 -11
- package/dist/{chunk-MZL7CGCL.js → chunk-4XDJXMLF.js} +2 -2
- package/dist/{chunk-YYGB4G4Q.js → chunk-CZK2MRS2.js} +1 -1
- package/dist/chunk-DJD3EMPK.js +126 -0
- package/dist/chunk-EZG2NELX.js +5 -0
- package/dist/{chunk-VAXOQS7W.js → chunk-F76NCVVR.js} +1 -1
- package/dist/{chunk-VG3PND3D.js → chunk-FMTJGO76.js} +1 -1
- package/dist/{chunk-UXWAOISG.js → chunk-FVSKGCK3.js} +2 -2
- package/dist/{chunk-2XCZJWTV.js → chunk-GNCWJWFE.js} +1 -1
- package/dist/{chunk-X3WMRKOW.js → chunk-HDR7V6IZ.js} +1 -1
- package/dist/{chunk-HSIYYA2E.js → chunk-HQU6QVAN.js} +5 -5
- package/dist/chunk-I5V446BX.js +27 -0
- package/dist/{chunk-WCTHZKU7.js → chunk-ICOU5QHT.js} +1 -1
- package/dist/{chunk-G7IFL4Z4.js → chunk-L3VEMP5A.js} +57 -9
- package/dist/chunk-LQWGZIYA.js +5 -0
- package/dist/{chunk-XNA2INVQ.js → chunk-MCOHLWRS.js} +2 -2
- package/dist/{chunk-3GWWZKX7.js → chunk-MMUBH76A.js} +21 -1
- package/dist/{chunk-ZDAHKI3A.js → chunk-MWB7S54O.js} +1 -1
- package/dist/{chunk-D5QHEHXJ.js → chunk-NMEVJT5Q.js} +1 -1
- package/dist/{chunk-3TNPSN4D.js → chunk-NSNEANOQ.js} +2 -2
- package/dist/{chunk-WSRWFA6K.js → chunk-NWZGSLPU.js} +1 -1
- package/dist/{chunk-LEAYBICI.js → chunk-OIV7B44M.js} +1 -1
- package/dist/{chunk-2CXU5WZO.js → chunk-P43B3ONY.js} +1 -1
- package/dist/{chunk-FRPPIXMY.js → chunk-PDTPO6NG.js} +1 -1
- package/dist/{chunk-6XMYEZVR.js → chunk-PX6RICS5.js} +1 -1
- package/dist/{chunk-6TEEY5YA.js → chunk-S33K4RC5.js} +1 -1
- package/dist/{chunk-3VMDCCCX.js → chunk-SC2VUTUI.js} +1 -1
- package/dist/{chunk-24RFI4RQ.js → chunk-SXQZ7DLH.js} +4 -4
- package/dist/{chunk-UDTG3RSE.js → chunk-T6S2ZBV6.js} +2 -2
- package/dist/{chunk-DTXNDLSE.js → chunk-WYTJR2YU.js} +16 -1
- package/dist/{chunk-QXHMPJ35.js → chunk-XBBEX4SF.js} +1 -1
- package/dist/chunk-XCB3F6SF.js +16 -0
- package/dist/{chunk-7BWTYWM3.js → chunk-ZLMRVBD7.js} +1 -1
- package/dist/{chunk-7A42J73Q.js → chunk-ZLPWEHZO.js} +1 -1
- package/dist/components/accordion.js +1 -1
- package/dist/components/alert-dialog.js +2 -2
- package/dist/components/alert.d.ts +2 -2
- package/dist/components/alert.js +2 -2
- package/dist/components/aspect-ratio.js +2 -2
- package/dist/components/avatar.js +1 -1
- package/dist/components/badge.d.ts +1 -1
- package/dist/components/badge.js +2 -2
- package/dist/components/breadcrumb.js +1 -1
- package/dist/components/button-group.js +1 -1
- package/dist/components/button.d.ts +1 -1
- package/dist/components/button.js +2 -2
- package/dist/components/calendar.js +2 -2
- package/dist/components/card.d.ts +2 -2
- package/dist/components/card.js +3 -3
- package/dist/components/carousel.js +2 -2
- package/dist/components/category-deck.js +2 -2
- package/dist/components/checkbox.js +2 -2
- package/dist/components/circular-progress.js +1 -1
- package/dist/components/collapsible.js +1 -1
- package/dist/components/combobox.js +5 -5
- package/dist/components/command.d.ts +15 -15
- package/dist/components/command.js +3 -3
- package/dist/components/concept-card.js +2 -2
- package/dist/components/concept-compare-rail.js +3 -3
- package/dist/components/concept-compare.d.ts +2 -1
- package/dist/components/concept-compare.js +5 -5
- package/dist/components/concept-convergence.js +4 -4
- package/dist/components/convergence.js +3 -3
- package/dist/components/coverflow.js +1 -1
- package/dist/components/currency-input.js +2 -2
- package/dist/components/date-input.d.ts +1 -1
- package/dist/components/date-input.js +2 -2
- package/dist/components/day-rail-chip.js +2 -2
- package/dist/components/description-list.js +1 -1
- package/dist/components/dialog.js +2 -2
- package/dist/components/doorway-tiles.d.ts +57 -0
- package/dist/components/doorway-tiles.js +86 -0
- package/dist/components/drawer.js +1 -1
- package/dist/components/drift-rail.js +1 -1
- package/dist/components/dropdown-menu.js +1 -1
- package/dist/components/empty-state.js +3 -3
- package/dist/components/event-card.js +4 -4
- package/dist/components/event-compact-row.js +4 -4
- package/dist/components/event-day-header.js +2 -2
- package/dist/components/event-day-separator.js +3 -3
- package/dist/components/event-detail-panel.js +4 -4
- package/dist/components/event-hub-hero.js +2 -2
- package/dist/components/event-index-row.js +4 -4
- package/dist/components/event-list-row-wide.js +5 -5
- package/dist/components/event-list-row.js +5 -5
- package/dist/components/event-poster-fallback.js +1 -1
- package/dist/components/event-types.js +1 -1
- package/dist/components/events-empty-state.js +1 -1
- package/dist/components/explainer-steps.js +1 -1
- package/dist/components/facet-group.js +2 -2
- package/dist/components/featured-rail-item.js +2 -2
- package/dist/components/field.js +2 -2
- package/dist/components/filter-category-row.js +3 -3
- package/dist/components/form.js +2 -2
- package/dist/components/glass-ground.js +2 -2
- package/dist/components/grade-atom.d.ts +3 -0
- package/dist/components/grade-atom.js +4 -0
- package/dist/components/haptic-button.js +2 -2
- package/dist/components/hour-band.js +4 -4
- package/dist/components/hour-group.js +4 -4
- package/dist/components/hub-surface.js +1 -1
- package/dist/components/hue-chip.js +1 -1
- package/dist/components/icon.js +1 -1
- package/dist/components/input-group.js +1 -1
- package/dist/components/input-otp.js +1 -1
- package/dist/components/input.js +2 -2
- package/dist/components/item.d.ts +2 -2
- package/dist/components/item.js +1 -1
- package/dist/components/kbd.js +1 -1
- package/dist/components/kitchen-dossier.d.ts +2 -1
- package/dist/components/kitchen-dossier.js +3 -3
- package/dist/components/label.js +2 -2
- package/dist/components/lazy-markdown.js +1 -1
- package/dist/components/link-button.js +2 -2
- package/dist/components/markdown-renderer.js +1 -1
- package/dist/components/menu-dead-end.d.ts +2 -1
- package/dist/components/menu-dead-end.js +1 -1
- package/dist/components/menu-family-block.d.ts +2 -1
- package/dist/components/menu-family-block.js +14 -8
- package/dist/components/menu-family-card.d.ts +2 -1
- package/dist/components/menu-family-card.js +1 -1
- package/dist/components/menu-field.js +1 -1
- package/dist/components/menu-filter-chips.d.ts +2 -1
- package/dist/components/menu-filter-chips.js +3 -3
- package/dist/components/menu-group-rows.d.ts +2 -1
- package/dist/components/menu-group-rows.js +2 -2
- package/dist/components/menu-hub-hero.js +1 -1
- package/dist/components/menu-index-header.d.ts +2 -1
- package/dist/components/menu-index-header.js +2 -2
- package/dist/components/menu-index-list.d.ts +9 -8
- package/dist/components/menu-index-list.js +4 -4
- package/dist/components/menu-intent-hero.d.ts +3 -2
- package/dist/components/menu-intent-hero.js +1 -1
- package/dist/components/menu-item.d.ts +2 -1
- package/dist/components/menu-item.js +4 -4
- package/dist/components/menu-kitchen-list.d.ts +2 -1
- package/dist/components/menu-kitchen-list.js +4 -4
- package/dist/components/menu-mocks.d.ts +16 -5
- package/dist/components/menu-mocks.js +23 -2
- package/dist/components/menu-types.d.ts +21 -34
- package/dist/components/motion-icon-actions.d.ts +27 -0
- package/dist/components/motion-icon-actions.js +336 -0
- package/dist/components/motion-icon-controls.js +3 -3
- package/dist/components/motion-icon-set.d.ts +13 -1
- package/dist/components/motion-icon-set.js +197 -6
- package/dist/components/motion-icon.d.ts +15 -1
- package/dist/components/motion-icon.js +2 -2
- package/dist/components/multi-select-combobox.js +7 -7
- package/dist/components/multi-select-menu.js +2 -2
- package/dist/components/native-select.js +1 -1
- package/dist/components/open-now-list.d.ts +2 -1
- package/dist/components/open-now-list.js +2 -2
- package/dist/components/pagination.js +2 -2
- package/dist/components/phone-frame.js +1 -1
- package/dist/components/photo-ground.js +1 -1
- package/dist/components/place-about-tab.d.ts +2 -1
- package/dist/components/place-about-tab.js +6 -6
- package/dist/components/place-card.d.ts +94 -12
- package/dist/components/place-card.js +203 -128
- package/dist/components/place-details-mobile.d.ts +2 -1
- package/dist/components/place-details-mobile.js +7 -7
- package/dist/components/place-schedule-week.d.ts +2 -1
- package/dist/components/place-schedule-week.js +3 -3
- package/dist/components/place-types.d.ts +3 -265
- package/dist/components/popover.js +2 -2
- package/dist/components/poster-stack.js +1 -1
- package/dist/components/poster-tape.js +1 -1
- package/dist/components/poster-wall.d.ts +22 -6
- package/dist/components/poster-wall.js +197 -12
- package/dist/components/progress.js +1 -1
- package/dist/components/qa-block.d.ts +2 -1
- package/dist/components/qa-block.js +1 -1
- package/dist/components/quiet-stretch.js +1 -1
- package/dist/components/radio-group.js +1 -1
- package/dist/components/rating.js +1 -1
- package/dist/components/scroll-area.js +1 -1
- package/dist/components/scroll-fade.js +2 -2
- package/dist/components/search-bar.js +1 -1
- package/dist/components/searchable-select.js +5 -5
- package/dist/components/section-header.js +2 -2
- package/dist/components/segmented-nav.d.ts +24 -4
- package/dist/components/segmented-nav.js +11 -2
- package/dist/components/select.js +1 -1
- package/dist/components/selection-bar.js +1 -1
- package/dist/components/separator.js +2 -2
- package/dist/components/sheet.js +1 -1
- package/dist/components/signature-chip.js +3 -3
- package/dist/components/skeleton-card.js +3 -3
- package/dist/components/skeleton.js +2 -2
- package/dist/components/slider.js +1 -1
- package/dist/components/sliding-panels.js +2 -2
- package/dist/components/snap-rail.d.ts +0 -5
- package/dist/components/snap-rail.js +2 -2
- package/dist/components/sonner.js +1 -1
- package/dist/components/sort-option-list.js +1 -1
- package/dist/components/spinner.d.ts +2 -2
- package/dist/components/spinner.js +1 -1
- package/dist/components/stat-banner.js +1 -1
- package/dist/components/stepper.js +1 -1
- package/dist/components/sticky-container.js +1 -1
- package/dist/components/story.js +1 -1
- package/dist/components/switch.js +1 -1
- package/dist/components/table.js +1 -1
- package/dist/components/tabs.js +2 -2
- package/dist/components/tag-group.js +2 -2
- package/dist/components/tag.d.ts +2 -2
- package/dist/components/tag.js +2 -2
- package/dist/components/text.d.ts +3 -3
- package/dist/components/text.js +2 -2
- package/dist/components/textarea.js +1 -1
- package/dist/components/timeline-band.js +4 -4
- package/dist/components/timeline-playhead.js +4 -4
- package/dist/components/toggle-group.js +2 -2
- package/dist/components/toggle.js +2 -2
- package/dist/components/tooltip.js +1 -1
- package/dist/components/top-comparison.d.ts +2 -1
- package/dist/components/top-comparison.js +1 -1
- package/dist/components/top-cross-link.d.ts +2 -1
- package/dist/components/top-cross-link.js +1 -1
- package/dist/components/top-ranking-entry.d.ts +2 -1
- package/dist/components/top-ranking-entry.js +6 -6
- package/dist/components/top-ranking-hero.d.ts +2 -1
- package/dist/components/top-ranking-hero.js +1 -1
- package/dist/components/top-ranking-legend.js +1 -1
- package/dist/components/top-types.d.ts +3 -1
- package/dist/components/use-mobile.js +1 -1
- package/dist/components/venue-events-block.js +5 -5
- package/dist/components/venue-grade-dimensions.d.ts +2 -1
- package/dist/components/venue-grade-dimensions.js +1 -1
- package/dist/components/venue-quotes.d.ts +2 -1
- package/dist/components/venue-quotes.js +1 -1
- package/dist/components/venue-wall.d.ts +2 -1
- package/dist/components/venue-wall.js +1 -1
- package/dist/components/weekday-theme-banner.js +1 -1
- package/dist/components/weekend-panel.js +4 -4
- package/dist/hooks/use-drag-swipe.js +1 -1
- package/dist/hooks/use-haptic.js +1 -1
- package/dist/hooks/use-media-query.js +1 -1
- package/dist/hooks/use-mobile.js +1 -1
- package/dist/hooks/use-mounted-theme.js +1 -1
- package/dist/hooks/use-sticky.js +1 -1
- package/dist/lib/card-hover.js +2 -18
- package/dist/lib/grade.d.ts +54 -0
- package/dist/lib/grade.js +2 -0
- package/dist/lib/icon-depth.d.ts +35 -0
- package/dist/lib/icon-depth.js +2 -0
- package/dist/lib/icon-registry.js +1 -1
- package/dist/lib/motion.js +2 -2
- package/dist/lib/overlay-pill.d.ts +30 -0
- package/dist/lib/overlay-pill.js +2 -0
- package/dist/lib/utils.js +1 -1
- package/dist/place-types-BHdeMMiG.d.ts +317 -0
- package/package.json +1 -1
- package/src/components/colour-dictionary.stories.tsx +268 -82
- package/src/components/doorway-tiles.stories.tsx +83 -0
- package/src/components/doorway-tiles.test.tsx +51 -0
- package/src/components/doorway-tiles.tsx +225 -0
- package/src/components/grade-atom.stories.tsx +81 -0
- package/src/components/grade-atom.tsx +256 -0
- package/src/components/hue-chip.stories.tsx +2 -2
- package/src/components/menu-family-block.stories.tsx +29 -0
- package/src/components/menu-family-block.test.tsx +51 -0
- package/src/components/menu-family-block.tsx +20 -4
- package/src/components/menu-index-list.tsx +7 -7
- package/src/components/menu-intent-hero.tsx +1 -1
- package/src/components/menu-kitchen-list.tsx +4 -1
- package/src/components/menu-mocks.ts +39 -3
- package/src/components/menu-types.ts +17 -33
- package/src/components/motion-icon-actions.test.tsx +115 -0
- package/src/components/motion-icon-actions.tsx +580 -0
- package/src/components/motion-icon-controls.test.tsx +1 -0
- package/src/components/motion-icon-controls.tsx +18 -13
- package/src/components/motion-icon-set.stories.tsx +62 -3
- package/src/components/motion-icon-set.tsx +349 -2
- package/src/components/motion-icon.test.tsx +180 -1
- package/src/components/motion-icon.tsx +97 -8
- package/src/components/place-card.stories.tsx +66 -76
- package/src/components/place-card.test.tsx +188 -100
- package/src/components/place-card.tsx +356 -148
- package/src/components/place-types.ts +17 -4
- package/src/components/poster-wall.stories.tsx +84 -0
- package/src/components/poster-wall.test.tsx +94 -3
- package/src/components/poster-wall.tsx +257 -9
- package/src/components/segmented-nav.stories.tsx +72 -1
- package/src/components/segmented-nav.test.tsx +96 -0
- package/src/components/segmented-nav.tsx +36 -4
- package/src/components/snap-rail.tsx +19 -0
- package/src/globals.css +26 -0
- package/src/lib/grade.test.ts +82 -0
- package/src/lib/grade.ts +76 -0
- package/src/lib/icon-depth.ts +35 -0
- package/src/lib/overlay-pill.ts +29 -0
- package/dist/components/menu-family-tiles.d.ts +0 -19
- package/dist/components/menu-family-tiles.js +0 -57
- package/src/components/menu-family-tiles.stories.tsx +0 -54
- package/src/components/menu-family-tiles.test.tsx +0 -30
- 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-
|
|
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-
|
|
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-
|
|
2
|
-
import { __spreadProps, __spreadValues } from './chunk-
|
|
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.
|
|
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:
|
|
276
|
-
play: { scaleY: [1, 1.
|
|
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: {
|
|
280
|
-
active: {
|
|
281
|
-
play: {
|
|
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:
|
|
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-
|
|
1
|
+
import { stagger, ease, duration, springSnappy } from './chunk-OIV7B44M.js';
|
|
2
2
|
import { cn } from './chunk-FEK5XGZW.js';
|
|
3
|
-
import { __spreadValues, __spreadProps } from './chunk-
|
|
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-
|
|
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 };
|
|
@@ -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-
|
|
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,6 +1,6 @@
|
|
|
1
|
-
import { textVariants } from './chunk-
|
|
1
|
+
import { textVariants } from './chunk-ZLMRVBD7.js';
|
|
2
2
|
import { cn } from './chunk-FEK5XGZW.js';
|
|
3
|
-
import { __objRest, __spreadValues } from './chunk-
|
|
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-
|
|
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-
|
|
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-
|
|
2
|
-
import { Tag } from './chunk-
|
|
3
|
-
import { Separator } from './chunk-
|
|
4
|
-
import { Text } from './chunk-
|
|
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-
|
|
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,7 +1,7 @@
|
|
|
1
1
|
import { cn } from './chunk-FEK5XGZW.js';
|
|
2
|
-
import { __spreadProps, __spreadValues } from './chunk-
|
|
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
|
-
|
|
39
|
-
|
|
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 (
|
|
49
|
-
|
|
50
|
-
|
|
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 };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription } from './chunk-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
2
|
-
import { Skeleton } from './chunk-
|
|
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-
|
|
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,5 +1,5 @@
|
|
|
1
1
|
import { cn } from './chunk-FEK5XGZW.js';
|
|
2
|
-
import { __objRest, __spreadValues } from './chunk-
|
|
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-
|
|
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-
|
|
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,7 +1,7 @@
|
|
|
1
|
-
import { Separator } from './chunk-
|
|
2
|
-
import { Skeleton } from './chunk-
|
|
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-
|
|
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
|
|
|
@@ -72,7 +72,7 @@ function KitchenRow({
|
|
|
72
72
|
)
|
|
73
73
|
] }),
|
|
74
74
|
/* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-0.5 lg:w-[226px] lg:flex-none", children: [
|
|
75
|
-
/* @__PURE__ */ jsx("span", { className: "truncate text-[14.5px] font-bold tracking-[-0.01em] lg:text-[15.5px]", children: place.name }),
|
|
75
|
+
/* @__PURE__ */ jsx("span", { className: "truncate text-[14.5px] font-bold tracking-[-0.01em] lg:line-clamp-2 lg:whitespace-normal lg:text-[15.5px] lg:leading-tight", children: place.name }),
|
|
76
76
|
/* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1 truncate text-xs text-muted-foreground", children: [
|
|
77
77
|
place.rating && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
78
78
|
/* @__PURE__ */ jsx(Star, { className: "h-[11px] w-[11px] shrink-0", "aria-hidden": true }),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { SignatureChip } from './chunk-
|
|
1
|
+
import { SignatureChip } from './chunk-S33K4RC5.js';
|
|
2
2
|
import { cn } from './chunk-FEK5XGZW.js';
|
|
3
|
-
import { __objRest, __spreadValues } from './chunk-
|
|
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-
|
|
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';
|
|
@@ -105,11 +105,26 @@ var SnapRail = React.forwardRef(
|
|
|
105
105
|
}
|
|
106
106
|
);
|
|
107
107
|
SnapRail.displayName = "SnapRail";
|
|
108
|
+
var MAX_DOTS = 12;
|
|
108
109
|
function SnapRailDots({
|
|
109
110
|
count,
|
|
110
111
|
active,
|
|
111
112
|
className
|
|
112
113
|
}) {
|
|
114
|
+
if (count > MAX_DOTS) {
|
|
115
|
+
return /* @__PURE__ */ jsxs(
|
|
116
|
+
"div",
|
|
117
|
+
{
|
|
118
|
+
"aria-hidden": true,
|
|
119
|
+
className: cn("flex justify-center text-[11px] tabular-nums text-muted-foreground", className),
|
|
120
|
+
children: [
|
|
121
|
+
active + 1,
|
|
122
|
+
" / ",
|
|
123
|
+
count
|
|
124
|
+
]
|
|
125
|
+
}
|
|
126
|
+
);
|
|
127
|
+
}
|
|
113
128
|
return /* @__PURE__ */ jsx("div", { "aria-hidden": true, className: cn("flex justify-center gap-1.5", className), children: Array.from({ length: count }, (_, index) => /* @__PURE__ */ jsx(
|
|
114
129
|
"span",
|
|
115
130
|
{
|
|
@@ -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-
|
|
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
|
|