diff --git a/src/components/library/molecules/StepIndicator/StepIndicator.module.scss b/src/components/library/molecules/StepIndicator/StepIndicator.module.scss index e7f019e..b0029cb 100644 --- a/src/components/library/molecules/StepIndicator/StepIndicator.module.scss +++ b/src/components/library/molecules/StepIndicator/StepIndicator.module.scss @@ -103,7 +103,6 @@ top: 18px; left: 46px; right: 46px; - width: 79.5%; height: 1px; background: var(--gray-100); overflow: hidden; diff --git a/src/components/library/molecules/TagMultiSelect/TagMultiSelect.module.scss b/src/components/library/molecules/TagMultiSelect/TagMultiSelect.module.scss index b8eafd4..6dc6848 100644 --- a/src/components/library/molecules/TagMultiSelect/TagMultiSelect.module.scss +++ b/src/components/library/molecules/TagMultiSelect/TagMultiSelect.module.scss @@ -8,25 +8,35 @@ position: relative; } +// Geometry mirrors the Dropdown trigger so the two fields read as one control +// when they stack in a form: same height, padding, radius, and chevron divider. .trigger { width: 100%; + height: 44px; + box-sizing: border-box; display: flex; align-items: center; justify-content: space-between; gap: 8px; background: var(--white); border: 1px solid var(--brown-border); - border-radius: 4px; - padding: 12px 16px; + border-radius: 8px; + padding: 0 0 0 12px; cursor: pointer; + transition: all 0.2s ease; &:disabled { opacity: 0.5; cursor: not-allowed; } - &.open { + &.open, + &:not(:disabled):hover { border-color: var(--brown); + + .iconWrapper { + border-left: 1px solid var(--brown); + } } .placeholder { @@ -35,13 +45,27 @@ color: var(--black); } + .iconWrapper { + border-left: 1px solid var(--brown-border); + height: -webkit-fill-available; + padding: 0 16px; + display: flex; + align-items: center; + justify-content: center; + } + .icon { + flex-shrink: 0; transform: rotate(90deg); transition: transform 0.2s ease; &.rotated { transform: rotate(-90deg); } + + path { + fill: var(--brown); + } } } diff --git a/src/components/library/molecules/TagMultiSelect/TagMultiSelect.tsx b/src/components/library/molecules/TagMultiSelect/TagMultiSelect.tsx index 7969576..0a2e4b5 100644 --- a/src/components/library/molecules/TagMultiSelect/TagMultiSelect.tsx +++ b/src/components/library/molecules/TagMultiSelect/TagMultiSelect.tsx @@ -67,11 +67,13 @@ export function TagMultiSelect(props: TagMultiSelectProps): JSX.Element { > {value.length > 0 ? `${value.length} selected` : placeholder} - +
+ +
{isOpen && (!portal || menuPos) && diff --git a/src/components/library/organisms/InteractiveCover/coverHotspots.ts b/src/components/library/organisms/InteractiveCover/coverHotspots.ts index 2140619..cab5b44 100644 --- a/src/components/library/organisms/InteractiveCover/coverHotspots.ts +++ b/src/components/library/organisms/InteractiveCover/coverHotspots.ts @@ -123,11 +123,39 @@ const makeHotspot = ( const lorem = 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cih sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus'; +// Hit boxes are sized to the glow silhouette each hotspot lights up, so the +// whole building answers the pointer rather than just its roofline. +// +// Order matters: overlapping triggers share a z-index, so the last one declared +// wins the pointer. The tree (house-2) is the backdrop the buildings sit in +// front of, so it goes first and the buildings keep their own hover areas. export const coverHotspots: CoverHotspot[] = [ + makeHotspot( + 'house-2', + { + // The glow here traces the tree, not a building — hence the wide box. + hit: { left: 17.76, top: 0, width: 30.85, height: 55 }, + highlight: { + src: '/library/images/hotspots/house-2.svg', + alt: '', + left: 17.98, + top: 0, + width: 47.06, + }, + card: { left: 53.0, top: 19.01 }, + }, + { + libraryName: 'Sarah’s Library', + about: lorem, + bookCount: 88, + videoCount: 34, + songCount: 12, + }, + ), makeHotspot( 'house-1', { - hit: { left: 37.73, top: 11.9, width: 12.55, height: 35.9 }, + hit: { left: 41.45, top: 20.02, width: 13.13, height: 29.79 }, highlight: { src: '/library/images/hotspots/house-1.svg', alt: '', @@ -145,36 +173,15 @@ export const coverHotspots: CoverHotspot[] = [ songCount: 17, }, { - hit: { left: 45.8, top: 11.9, width: 6 }, + // The panorama art sits 0.33% lower here, matching the highlight offset. + hit: { top: 20.35 }, highlight: { left: 45.6, top: 7.9 }, }, ), - makeHotspot( - 'house-2', - { - hit: { left: 14.13, top: 2, width: 22.41, height: 60 }, - highlight: { - src: '/library/images/hotspots/house-2.svg', - alt: '', - left: 17.98, - top: 0, - width: 47.06, - }, - card: { left: 53.0, top: 19.01 }, - }, - { - libraryName: 'Sarah’s Library', - about: lorem, - bookCount: 88, - videoCount: 34, - songCount: 12, - }, - { hit: { left: 34.7824, top: 0 } }, - ), makeHotspot( 'house-3', { - hit: { left: 27.58, top: 43, width: 12.7, height: 34 }, + hit: { left: 31.13, top: 50.79, width: 15.57, height: 37.59 }, highlight: { src: '/library/images/hotspots/house-3.svg', alt: '', @@ -192,14 +199,14 @@ export const coverHotspots: CoverHotspot[] = [ songCount: 9, }, { - hit: { left: 41, top: 52, width: 7.096, height: 34 }, + hit: { top: 49.79 }, highlight: { left: 40.4, top: 17.5 }, }, ), makeHotspot( 'house-4', { - hit: { left: 17.12, top: 57, width: 10.46, height: 17 }, + hit: { left: 20.02, top: 61.73, width: 11.43, height: 22.42 }, highlight: { src: '/library/images/hotspots/house-4.svg', alt: '', @@ -217,7 +224,7 @@ export const coverHotspots: CoverHotspot[] = [ songCount: 6, }, { - hit: { left: 35.6, top: 66 }, + hit: { top: 60.83 }, highlight: { left: 35.552, top: 28 }, }, ), @@ -225,7 +232,7 @@ export const coverHotspots: CoverHotspot[] = [ 'house-5', { // Leader line exits to the LEFT, so the card sits left of the lantern. - hit: { left: 61.94, top: 38, width: 8.96, height: 26 }, + hit: { left: 65.44, top: 49.75, width: 8.59, height: 24.69 }, highlight: { src: '/library/images/hotspots/house-5.svg', alt: '', @@ -242,6 +249,5 @@ export const coverHotspots: CoverHotspot[] = [ videoCount: 14, songCount: 4, }, - { hit: { left: 57.7312, top: 44, width: 4.3008, height: 28 } }, ), ]; diff --git a/src/components/library/organisms/Sidebar/Sidebar.module.scss b/src/components/library/organisms/Sidebar/Sidebar.module.scss index f661b41..60771ee 100644 --- a/src/components/library/organisms/Sidebar/Sidebar.module.scss +++ b/src/components/library/organisms/Sidebar/Sidebar.module.scss @@ -133,13 +133,15 @@ display: flex; flex-wrap: wrap; + // 20px row + the wrapper's 12px padding = a 44px box. &.tagsEmpty { - height: 50px; + height: 20px; align-items: center; } .emptyTags { color: var(--gray-medium); + line-height: 20px; } .button {