UNPKG

@sammy-labs/walkthroughs

Version:
454 lines (395 loc) 11.4 kB
.sammy-labs-active .sammy-labs-overlay,.sammy-labs-active * { pointer-events: none; } .sammy-labs-active .sammy-labs-active-element, .sammy-labs-active .sammy-labs-active-element *, .sammy-labs-popover, .sammy-labs-popover * { pointer-events: auto; } @keyframes animate-fade-in { 0% { opacity: 0; } to { opacity: 1; } } .sammy-labs-fade .sammy-labs-overlay { animation: animate-fade-in 200ms ease-in-out; } .sammy-labs-fade .sammy-labs-popover { animation: animate-fade-in 200ms; } /* Popover styles */ .sammy-labs-popover { all: unset; box-sizing: border-box; color: #2d2d2d; margin: 0; padding: 15px; border-radius: 5px; min-width: 250px; max-width: 300px; box-shadow: 0 1px 10px #0006; z-index: 1000000000; position: fixed; top: 0; right: 0; background-color: #fff; } .sammy-labs-popover * { font-family: "Helvetica Neue", Inter, ui-sans-serif, "Apple Color Emoji", Helvetica, Arial, sans-serif; } /* Special handling for input steps to ensure popover stays visible */ .sammy-labs-input-step { opacity: 1 !important; visibility: visible !important; pointer-events: auto !important; } /* Ensure input elements remain interactive during walkthroughs */ .sammy-labs-active .sammy-labs-active-element input, .sammy-labs-active .sammy-labs-active-element textarea, .sammy-labs-active .sammy-labs-active-element select { pointer-events: auto !important; -webkit-user-select: text !important; -moz-user-select: text !important; user-select: text !important; } /* Prevent accidental selection of popover text during input */ .sammy-labs-input-step .sammy-labs-popover-description, .sammy-labs-input-step .sammy-labs-popover-title { -webkit-user-select: none; -moz-user-select: none; user-select: none; } .sammy-labs-popover-title { font: 19px / normal sans-serif; font-weight: 600; display: block; position: relative; line-height: 1.5; zoom: 1; margin: 0; } .sammy-labs-popover-close-btn { all: unset; display: flex !important; align-items: center; justify-content: center; width: 28px; height: 28px; cursor: pointer; font-size: 20px; font-weight: 500; color: #71717a; border-radius: 50%; line-height: 1; box-sizing: border-box; text-align: center; transition: background-color 0.2s ease, color 0.2s ease; } .sammy-labs-popover-close-btn:hover, .sammy-labs-popover-close-btn:focus { color: #2d2d2d; background-color: rgba(0, 0, 0, 0.05); display: flex !important; } .sammy-labs-popover-title[style*="block"] + .sammy-labs-popover-description { margin-top: 5px; } .sammy-labs-popover-description { margin-bottom: 0; font: 14px / normal sans-serif; line-height: 1.5; font-weight: 400; zoom: 1; } .sammy-labs-popover-footer { margin-top: 15px; text-align: right; zoom: 1; display: flex; flex-direction: column; gap: 0; } .sammy-labs-popover-progress-text { font-size: 13px; font-weight: 400; color: #727272; zoom: 1; } .sammy-labs-popover-footer button:not(.sammy-labs-popover-prev-btn):not(.sammy-labs-popover-next-btn) { all: unset; display: inline-block; box-sizing: border-box; padding: 3px 7px; text-decoration: none; text-shadow: 1px 1px 0 #fff; background-color: #ffffff; color: #2d2d2d; font: 12px / normal sans-serif; cursor: pointer; outline: 0; zoom: 1; line-height: 1.3; border: 1px solid #ccc; border-radius: 3px; } .sammy-labs-popover-footer .sammy-labs-popover-btn-disabled { opacity: 0.5; pointer-events: none; } /* Disable the scrolling of parent element if it has an active element*/ :not(body):has(> .sammy-labs-active-element) { overflow: hidden !important; } .sammy-labs-no-interaction, .sammy-labs-no-interaction * { pointer-events: none !important; } .sammy-labs-popover-footer button:not(.sammy-labs-popover-prev-btn):not(.sammy-labs-popover-next-btn):hover, .sammy-labs-popover-footer button:not(.sammy-labs-popover-prev-btn):not(.sammy-labs-popover-next-btn):focus { background-color: #f7f7f7; } .sammy-labs-popover-navigation-btns { display: flex; flex-grow: 1; justify-content: flex-end; } .sammy-labs-popover-navigation-btns button + button { margin-left: 4px; } /* Reset navigation buttons to remove browser defaults that cause double shadow effect */ .sammy-labs-popover-prev-btn, .sammy-labs-popover-next-btn { all: unset; display: inline-block; box-sizing: border-box; cursor: pointer; font-family: inherit; /* Explicitly reset text styling to prevent double text effect */ text-shadow: none !important; text-decoration: none !important; text-transform: none !important; letter-spacing: normal !important; word-spacing: normal !important; text-indent: 0 !important; text-align: center !important; text-rendering: auto !important; font-style: normal !important; font-variant: normal !important; font-stretch: normal !important; line-height: normal !important; -webkit-font-smoothing: auto !important; -moz-osx-font-smoothing: auto !important; /* Prevent any outline or shadow effects */ outline: none !important; box-shadow: none !important; filter: none !important; /* Prevent any pseudo-element text duplication */ position: relative !important; } /* Explicitly prevent pseudo-elements from adding duplicate content */ .sammy-labs-popover-prev-btn::before, .sammy-labs-popover-prev-btn::after, .sammy-labs-popover-next-btn::before, .sammy-labs-popover-next-btn::after { content: none !important; display: none !important; } .sammy-labs-popover-arrow { content: ""; position: absolute; border: 8px solid #fff; filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.1)); z-index: 10; } .sammy-labs-popover-arrow-side-over { display: none; } /** Popover Arrow Sides **/ .sammy-labs-popover-arrow-side-left { left: 100%; border-right-color: transparent; border-bottom-color: transparent; border-top-color: transparent; } .sammy-labs-popover-arrow-side-right { right: 100%; border-left-color: transparent; border-bottom-color: transparent; border-top-color: transparent; } .sammy-labs-popover-arrow-side-top { top: 100%; border-right-color: transparent; border-bottom-color: transparent; border-left-color: transparent; } .sammy-labs-popover-arrow-side-bottom { bottom: 100%; border-left-color: transparent; border-top-color: transparent; border-right-color: transparent; } .sammy-labs-popover-arrow-side-center { display: none; } /* Left/Start + Right/Start */ .sammy-labs-popover-arrow-side-left.sammy-labs-popover-arrow-align-start, .sammy-labs-popover-arrow-side-right.sammy-labs-popover-arrow-align-start { top: 15px; } /* Top/Start + Bottom/Start */ .sammy-labs-popover-arrow-side-top.sammy-labs-popover-arrow-align-start, .sammy-labs-popover-arrow-side-bottom.sammy-labs-popover-arrow-align-start { left: 15px; } /* End/Left + End/Right */ .sammy-labs-popover-arrow-align-end.sammy-labs-popover-arrow-side-left, .sammy-labs-popover-arrow-align-end.sammy-labs-popover-arrow-side-right { bottom: 15px; } /* Top/End + Bottom/End */ .sammy-labs-popover-arrow-side-top.sammy-labs-popover-arrow-align-end, .sammy-labs-popover-arrow-side-bottom.sammy-labs-popover-arrow-align-end { right: 15px; } /* Left/Center + Right/Center */ .sammy-labs-popover-arrow-side-left.sammy-labs-popover-arrow-align-center, .sammy-labs-popover-arrow-side-right.sammy-labs-popover-arrow-align-center { top: 50%; margin-top: -8px; } /* Top/Center + Bottom/Center */ .sammy-labs-popover-arrow-side-top.sammy-labs-popover-arrow-align-center, .sammy-labs-popover-arrow-side-bottom.sammy-labs-popover-arrow-align-center { left: 50%; margin-left: -8px; } /* No arrow */ .sammy-labs-popover-arrow-none { display: none; } /* Reaction styles */ .sammy-labs-popover-reaction-container { display: flex; align-items: center; justify-content: space-between; width: 100%; padding: 0; margin-top: 8px; } .sammy-labs-popover-reaction-text { color: #71717a; font-weight: 500; font-size: 13px; } .sammy-labs-popover-reaction-buttons { display: flex; align-items: center; gap: 8px; } .sammy-labs-popover-reaction-wrapper { margin-top: 0; } .sammy-labs-popover-reaction-btn { all: unset; display: flex; align-items: center; justify-content: center; width: 36px; height: 36px; cursor: pointer; font-size: 18px; border-radius: 6px; transition: all 0.2s ease; background-color: white; border: 1px solid #e5e5e5; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); } .sammy-labs-popover-reaction-btn:hover { background-color: #f9f9f9; border-color: #d1d5db; transform: scale(1.1); box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); } .sammy-labs-popover-reaction-btn:active { transform: scale(0.95); } /* Thumbs up active state - green theme */ .sammy-labs-popover-reaction-btn.thumbs-up.sammy-labs-popover-reaction-btn-active { background-color: #f0fdf4 !important; border-color: #bbf7d0 !important; color: #16a34a !important; box-shadow: 0 2px 8px rgba(34, 197, 94, 0.2) !important; } .sammy-labs-popover-reaction-btn.thumbs-up.sammy-labs-popover-reaction-btn-active:hover { background-color: #dcfce7 !important; border-color: #86efac !important; transform: scale(1.05) !important; box-shadow: 0 4px 12px rgba(34, 197, 94, 0.3) !important; } /* Thumbs down active state - red theme */ .sammy-labs-popover-reaction-btn.thumbs-down.sammy-labs-popover-reaction-btn-active { background-color: #fef2f2 !important; border-color: #fecaca !important; color: #dc2626 !important; box-shadow: 0 2px 8px rgba(220, 38, 38, 0.2) !important; } .sammy-labs-popover-reaction-btn.thumbs-down.sammy-labs-popover-reaction-btn-active:hover { background-color: #fee2e2 !important; border-color: #fca5a5 !important; transform: scale(1.05) !important; box-shadow: 0 4px 12px rgba(220, 38, 38, 0.3) !important; } /* Drag handle styles */ .sammy-labs-popover-drag-handle { position: absolute; top: -8px; left: 50%; transform: translateX(-50%); width: 60px; height: 20px; cursor: move; display: flex; align-items: center; justify-content: center; background-color: rgba(255, 255, 255, 0.95); border-radius: 10px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); border: 1px solid rgba(0, 0, 0, 0.08); transition: all 0.2s ease; z-index: 10; } .sammy-labs-popover-drag-handle:hover { background-color: #f5f5f5; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); } .sammy-labs-popover-drag-handle::before { top: 7px; } .sammy-labs-popover-drag-handle::before,.sammy-labs-popover-drag-handle::after { content: ""; width: 30px; height: 2px; background-color: #9ca3af; border-radius: 1px; position: absolute; } .sammy-labs-popover-drag-handle::after { bottom: 7px; } /* Make sure the popover has relative positioning for the drag handle */ .sammy-labs-popover.sammy-labs-fallback-popover { position: fixed !important; } /* Ensure drag handle is visible for draggable popovers */ .sammy-labs-popover.sammy-labs-fallback-popover .sammy-labs-popover-drag-handle, .sammy-labs-popover.sammy-informational-corner .sammy-labs-popover-drag-handle { display: flex !important; } /* Hide drag handle for regular popovers */ .sammy-labs-popover:not(.sammy-labs-fallback-popover):not(.sammy-informational-corner) .sammy-labs-popover-drag-handle { display: none; }