@wix/web5-core 1.63.18 → 1.63.19

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.
@@ -373,39 +373,6 @@
373
373
  transform: translateY(-50%);
374
374
  }
375
375
 
376
- .web5-prompt-hint {
377
- display: inline-flex;
378
- align-items: center;
379
- gap: 4px;
380
- margin-right: 4px;
381
- color: var(--pi-field-placeholder);
382
- font-family: var(--pi-field-font-family);
383
- font-size: 12px;
384
- line-height: 1;
385
- white-space: nowrap;
386
- pointer-events: none;
387
- user-select: none;
388
- }
389
-
390
- .web5-prompt-hint__key {
391
- display: inline-flex;
392
- align-items: center;
393
- justify-content: center;
394
- min-width: 16px;
395
- padding: 1px 4px;
396
- border: 1px solid var(--pi-field-placeholder);
397
- border-radius: 3px;
398
- background: transparent;
399
- font-family: inherit;
400
- font-size: 11px;
401
- line-height: 1;
402
- }
403
-
404
- @media (pointer: coarse) {
405
- .web5-prompt-hint {
406
- display: none;
407
- }
408
- }
409
376
 
410
377
  .web5-prompt-field--multiline .web5-prompt-actions {
411
378
  top: auto;
@@ -589,7 +556,4 @@
589
556
  height: 20px;
590
557
  }
591
558
 
592
- .web5-prompt-hint {
593
- display: none;
594
- }
595
559
  }
@@ -361,7 +361,6 @@ const SearchSection = exports.SearchSection = /*#__PURE__*/(0, _react.forwardRef
361
361
  const handleExpandClick = () => {
362
362
  focusInput();
363
363
  };
364
- const showHint = inputValue === '' && !isFocused && !isCollapsed;
365
364
  return /*#__PURE__*/_react.default.createElement("div", {
366
365
  className: (0, _utils.cn)('web5-prompt-shell', isCollapsed && 'web5-prompt-shell--collapsed',
367
366
  // Widens the pill while the field or a chip holds focus. Driven by
@@ -371,7 +370,7 @@ const SearchSection = exports.SearchSection = /*#__PURE__*/(0, _react.forwardRef
371
370
  __self: this,
372
371
  __source: {
373
372
  fileName: _jsxFileName,
374
- lineNumber: 369,
373
+ lineNumber: 368,
375
374
  columnNumber: 5
376
375
  }
377
376
  }, /*#__PURE__*/_react.default.createElement("div", {
@@ -379,7 +378,7 @@ const SearchSection = exports.SearchSection = /*#__PURE__*/(0, _react.forwardRef
379
378
  __self: this,
380
379
  __source: {
381
380
  fileName: _jsxFileName,
382
- lineNumber: 380,
381
+ lineNumber: 379,
383
382
  columnNumber: 7
384
383
  }
385
384
  }, /*#__PURE__*/_react.default.createElement("button", {
@@ -392,7 +391,7 @@ const SearchSection = exports.SearchSection = /*#__PURE__*/(0, _react.forwardRef
392
391
  __self: this,
393
392
  __source: {
394
393
  fileName: _jsxFileName,
395
- lineNumber: 381,
394
+ lineNumber: 380,
396
395
  columnNumber: 9
397
396
  }
398
397
  }, effectiveCollapsedLabel), /*#__PURE__*/_react.default.createElement("div", {
@@ -403,7 +402,7 @@ const SearchSection = exports.SearchSection = /*#__PURE__*/(0, _react.forwardRef
403
402
  __self: this,
404
403
  __source: {
405
404
  fileName: _jsxFileName,
406
- lineNumber: 392,
405
+ lineNumber: 391,
407
406
  columnNumber: 9
408
407
  }
409
408
  }, contextBanner, /*#__PURE__*/_react.default.createElement("div", {
@@ -411,7 +410,7 @@ const SearchSection = exports.SearchSection = /*#__PURE__*/(0, _react.forwardRef
411
410
  __self: this,
412
411
  __source: {
413
412
  fileName: _jsxFileName,
414
- lineNumber: 399,
413
+ lineNumber: 398,
415
414
  columnNumber: 11
416
415
  }
417
416
  }, /*#__PURE__*/_react.default.createElement("div", {
@@ -419,7 +418,7 @@ const SearchSection = exports.SearchSection = /*#__PURE__*/(0, _react.forwardRef
419
418
  __self: this,
420
419
  __source: {
421
420
  fileName: _jsxFileName,
422
- lineNumber: 400,
421
+ lineNumber: 399,
423
422
  columnNumber: 13
424
423
  }
425
424
  }, /*#__PURE__*/_react.default.createElement("div", {
@@ -428,7 +427,7 @@ const SearchSection = exports.SearchSection = /*#__PURE__*/(0, _react.forwardRef
428
427
  __self: this,
429
428
  __source: {
430
429
  fileName: _jsxFileName,
431
- lineNumber: 406,
430
+ lineNumber: 405,
432
431
  columnNumber: 15
433
432
  }
434
433
  }, /*#__PURE__*/_react.default.createElement("div", {
@@ -436,7 +435,7 @@ const SearchSection = exports.SearchSection = /*#__PURE__*/(0, _react.forwardRef
436
435
  __self: this,
437
436
  __source: {
438
437
  fileName: _jsxFileName,
439
- lineNumber: 407,
438
+ lineNumber: 406,
440
439
  columnNumber: 17
441
440
  }
442
441
  }, /*#__PURE__*/_react.default.createElement("div", {
@@ -444,7 +443,7 @@ const SearchSection = exports.SearchSection = /*#__PURE__*/(0, _react.forwardRef
444
443
  __self: this,
445
444
  __source: {
446
445
  fileName: _jsxFileName,
447
- lineNumber: 408,
446
+ lineNumber: 407,
448
447
  columnNumber: 19
449
448
  }
450
449
  }, /*#__PURE__*/_react.default.createElement("textarea", {
@@ -463,7 +462,7 @@ const SearchSection = exports.SearchSection = /*#__PURE__*/(0, _react.forwardRef
463
462
  __self: this,
464
463
  __source: {
465
464
  fileName: _jsxFileName,
466
- lineNumber: 415,
465
+ lineNumber: 414,
467
466
  columnNumber: 21
468
467
  }
469
468
  }), /*#__PURE__*/_react.default.createElement("div", {
@@ -471,27 +470,10 @@ const SearchSection = exports.SearchSection = /*#__PURE__*/(0, _react.forwardRef
471
470
  __self: this,
472
471
  __source: {
473
472
  fileName: _jsxFileName,
474
- lineNumber: 430,
473
+ lineNumber: 429,
475
474
  columnNumber: 21
476
475
  }
477
- }, showHint && /*#__PURE__*/_react.default.createElement("span", {
478
- className: "web5-prompt-hint",
479
- "aria-hidden": "true",
480
- __self: this,
481
- __source: {
482
- fileName: _jsxFileName,
483
- lineNumber: 432,
484
- columnNumber: 25
485
- }
486
- }, "Press ", /*#__PURE__*/_react.default.createElement("kbd", {
487
- className: "web5-prompt-hint__key",
488
- __self: this,
489
- __source: {
490
- fileName: _jsxFileName,
491
- lineNumber: 433,
492
- columnNumber: 33
493
- }
494
- }, "/"), ' ', "to search"), onVoiceInput && /*#__PURE__*/_react.default.createElement("button", {
476
+ }, onVoiceInput && /*#__PURE__*/_react.default.createElement("button", {
495
477
  type: "button",
496
478
  onClick: onVoiceInput,
497
479
  className: "web5-prompt-voice",
@@ -500,14 +482,14 @@ const SearchSection = exports.SearchSection = /*#__PURE__*/(0, _react.forwardRef
500
482
  __self: this,
501
483
  __source: {
502
484
  fileName: _jsxFileName,
503
- lineNumber: 438,
485
+ lineNumber: 431,
504
486
  columnNumber: 25
505
487
  }
506
488
  }, /*#__PURE__*/_react.default.createElement(MicrophoneIcon, {
507
489
  __self: this,
508
490
  __source: {
509
491
  fileName: _jsxFileName,
510
- lineNumber: 445,
492
+ lineNumber: 438,
511
493
  columnNumber: 27
512
494
  }
513
495
  })), /*#__PURE__*/_react.default.createElement("button", {
@@ -520,7 +502,7 @@ const SearchSection = exports.SearchSection = /*#__PURE__*/(0, _react.forwardRef
520
502
  __self: this,
521
503
  __source: {
522
504
  fileName: _jsxFileName,
523
- lineNumber: 448,
505
+ lineNumber: 441,
524
506
  columnNumber: 23
525
507
  }
526
508
  }, submitLabel ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("span", {
@@ -528,7 +510,7 @@ const SearchSection = exports.SearchSection = /*#__PURE__*/(0, _react.forwardRef
528
510
  __self: this,
529
511
  __source: {
530
512
  fileName: _jsxFileName,
531
- lineNumber: 462,
513
+ lineNumber: 455,
532
514
  columnNumber: 29
533
515
  }
534
516
  }, submitLabel), /*#__PURE__*/_react.default.createElement(ArrowRightIcon, {
@@ -537,7 +519,7 @@ const SearchSection = exports.SearchSection = /*#__PURE__*/(0, _react.forwardRef
537
519
  __self: this,
538
520
  __source: {
539
521
  fileName: _jsxFileName,
540
- lineNumber: 465,
522
+ lineNumber: 458,
541
523
  columnNumber: 29
542
524
  }
543
525
  })) : /*#__PURE__*/_react.default.createElement(PromptSendIcon, {
@@ -546,7 +528,7 @@ const SearchSection = exports.SearchSection = /*#__PURE__*/(0, _react.forwardRef
546
528
  __self: this,
547
529
  __source: {
548
530
  fileName: _jsxFileName,
549
- lineNumber: 471,
531
+ lineNumber: 464,
550
532
  columnNumber: 27
551
533
  }
552
534
  })))))), chipsMarkup)))));
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_utils","_linkTypes","_jsxFileName","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ArrowDownIcon","createElement","xmlns","width","height","viewBox","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","__self","__source","fileName","lineNumber","columnNumber","d","MicrophoneIcon","props","_extends2","ArrowRightIcon","PromptSendIcon","SearchSection","exports","forwardRef","onSubmit","placeholder","submitLabel","collapsedLabel","onCollapsedChange","chips","chipDisplayMode","chipPosition","onVoiceInput","progressMessage","className","contextBanner","hasContext","canSubmitEmpty","hasContent","isBottomZoneVisible","onChipClick","onFocusChange","ref","inputValue","setInputValue","useState","isFocused","setIsFocused","hasFocusInside","setHasFocusInside","isMultiline","setIsMultiline","isCollapsed","setIsCollapsed","inputRef","useRef","hasExpandedWhileZoneVisibleRef","previouslyFocusedElementRef","showChips","length","effectiveCollapsedLabel","replace","handleSubmit","useCallback","trimmedValue","trim","useLayoutEffect","element","current","computedStyles","window","getComputedStyle","lineHeight","Number","parseFloat","hasValue","style","nextHeight","Math","min","max","scrollHeight","useEffect","hasFocusInsideRef","onFocusChangeRef","focusInput","active","document","activeElement","HTMLElement","body","requestAnimationFrame","_inputRef$current","focus","_inputRef$current2","blurInput","_inputRef$current3","blur","useImperativeHandle","handleKeyDown","key","_inputRef$current4","preventDefault","prev","shiftKey","handleInputChange","target","value","handleInputFocus","relatedTarget","handleContentFocus","handleContentBlur","next","currentTarget","contains","cn","role","canSubmit","chipsMarkup","map","chip","label","href","isWeb5Url","onMouseDown","onClick","_inputRef$current5","tabIndex","handleExpandClick","showHint","type","onFocus","onBlur","rows","onChange","onKeyDown","undefined","disabled","Fragment"],"sources":["../../../../src/components/ui/SearchSection.tsx"],"sourcesContent":["import React, {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useState,\n useRef,\n useCallback,\n useLayoutEffect,\n} from 'react';\nimport { cn } from '../../lib/utils';\nimport { isWeb5Url } from '../../types/link-types';\n\nexport interface ScrollChip {\n label: string;\n href: string;\n iconHint?: string;\n}\n\nexport interface SearchSectionProps {\n onSubmit?: (value: string) => void;\n placeholder?: string;\n /**\n * When set, the submit control renders as a labeled CTA button (text +\n * right arrow) instead of the icon-only send button. Used by the empty\n * state (e.g. \"Find Your Pair\").\n */\n submitLabel?: string;\n collapsedLabel?: string;\n onCollapsedChange?: (isCollapsed: boolean) => void;\n chips?: ScrollChip[];\n chipDisplayMode?: 'focus' | 'always';\n chipPosition?: 'top' | 'bottom';\n onVoiceInput?: () => void;\n progressMessage?: string;\n className?: string;\n contextBanner?: React.ReactNode;\n hasContext?: boolean;\n canSubmitEmpty?: boolean;\n hasContent?: boolean;\n isBottomZoneVisible?: boolean;\n onChipClick?: (e: React.MouseEvent<HTMLAnchorElement>, href: string) => void;\n onFocusChange?: (focused: boolean) => void;\n}\n\nexport interface SearchSectionHandle {\n focusInput: () => void;\n blurInput: () => void;\n}\n\nconst ArrowDownIcon: React.FC = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M12 5v14\" />\n <path d=\"m19 12-7 7-7-7\" />\n </svg>\n);\n\nconst MicrophoneIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n stroke=\"none\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z\" />\n <path\n d=\"M19 10v2a7 7 0 0 1-14 0v-2M12 19v3\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n fill=\"none\"\n />\n </svg>\n);\n\nconst ArrowRightIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M5 12h14\" />\n <path d=\"m12 5 7 7-7 7\" />\n </svg>\n);\n\nconst PromptSendIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n aria-hidden=\"true\"\n {...props}\n >\n <path\n d=\"M13.0306 7.53114C12.9609 7.60106 12.8781 7.65654 12.787 7.69439C12.6958 7.73224 12.5981 7.75173 12.4993 7.75173C12.4006 7.75173 12.3029 7.73224 12.2117 7.69439C12.1206 7.65654 12.0378 7.60106 11.9681 7.53114L8.74997 4.31301V13.5005C8.74997 13.6994 8.67095 13.8902 8.5303 14.0308C8.38965 14.1715 8.19888 14.2505 7.99997 14.2505C7.80106 14.2505 7.61029 14.1715 7.46964 14.0308C7.32899 13.8902 7.24997 13.6994 7.24997 13.5005V4.31301L4.0306 7.53114C3.8897 7.67203 3.69861 7.75119 3.49935 7.75119C3.30009 7.75119 3.10899 7.67203 2.9681 7.53114C2.8272 7.39024 2.74805 7.19915 2.74805 6.99989C2.74805 6.80063 2.8272 6.60953 2.9681 6.46864L7.4681 1.96864C7.53778 1.89872 7.62057 1.84324 7.71173 1.80539C7.8029 1.76753 7.90064 1.74805 7.99935 1.74805C8.09806 1.74805 8.1958 1.76753 8.28696 1.80539C8.37813 1.84324 8.46092 1.89872 8.5306 1.96864L13.0306 6.46864C13.1005 6.53832 13.156 6.62111 13.1938 6.71227C13.2317 6.80344 13.2512 6.90118 13.2512 6.99989C13.2512 7.0986 13.2317 7.19634 13.1938 7.2875C13.156 7.37867 13.1005 7.46146 13.0306 7.53114Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport const SearchSection = forwardRef<\n SearchSectionHandle,\n SearchSectionProps\n>(function SearchSection(\n {\n onSubmit,\n placeholder = 'Talk to us',\n submitLabel,\n collapsedLabel,\n onCollapsedChange,\n chips = [],\n chipDisplayMode = 'focus',\n chipPosition = 'top',\n onVoiceInput,\n progressMessage,\n className = '',\n contextBanner,\n hasContext,\n canSubmitEmpty = false,\n hasContent = false,\n isBottomZoneVisible = false,\n onChipClick,\n onFocusChange,\n },\n ref,\n) {\n const [inputValue, setInputValue] = useState('');\n const [isFocused, setIsFocused] = useState(false);\n const [hasFocusInside, setHasFocusInside] = useState(false);\n const [isMultiline, setIsMultiline] = useState(false);\n const [isCollapsed, setIsCollapsed] = useState(false);\n const inputRef = useRef<HTMLTextAreaElement>(null);\n const hasExpandedWhileZoneVisibleRef = useRef(false);\n const previouslyFocusedElementRef = useRef<HTMLElement | null>(null);\n const showChips =\n chips.length > 0 &&\n !hasContext &&\n (chipDisplayMode === 'always' || hasFocusInside);\n const effectiveCollapsedLabel =\n collapsedLabel ?? placeholder.replace(/\\.\\.\\.$/, '');\n\n const handleSubmit = useCallback(() => {\n const trimmedValue = inputValue.trim();\n if (trimmedValue || canSubmitEmpty) {\n onSubmit?.(trimmedValue);\n setInputValue('');\n }\n }, [canSubmitEmpty, inputValue, onSubmit]);\n\n useLayoutEffect(() => {\n const element = inputRef.current;\n if (!element) {\n return;\n }\n\n const computedStyles = window.getComputedStyle(element);\n const lineHeight = Number.parseFloat(computedStyles.lineHeight) || 32;\n\n const hasValue = inputValue.trim().length > 0;\n element.style.height = 'auto';\n const nextHeight = hasValue\n ? Math.min(Math.max(element.scrollHeight, lineHeight), 175)\n : lineHeight;\n element.style.height = `${nextHeight}px`;\n setIsMultiline(hasValue && nextHeight > lineHeight);\n }, [inputValue]);\n\n useEffect(() => {\n if (progressMessage || !hasContent) {\n setIsCollapsed(false);\n hasExpandedWhileZoneVisibleRef.current = false;\n return;\n }\n\n if (!isBottomZoneVisible) {\n hasExpandedWhileZoneVisibleRef.current = false;\n setIsCollapsed(false);\n return;\n }\n\n if (!hasExpandedWhileZoneVisibleRef.current) {\n setIsCollapsed(true);\n }\n }, [hasContent, isBottomZoneVisible, progressMessage]);\n\n useEffect(() => {\n onCollapsedChange?.(isCollapsed);\n }, [isCollapsed, onCollapsedChange]);\n\n const hasFocusInsideRef = useRef(hasFocusInside);\n hasFocusInsideRef.current = hasFocusInside;\n const onFocusChangeRef = useRef(onFocusChange);\n onFocusChangeRef.current = onFocusChange;\n\n useEffect(() => {\n onFocusChange?.(hasFocusInside);\n }, [hasFocusInside, onFocusChange]);\n\n useEffect(() => {\n return () => {\n if (hasFocusInsideRef.current) {\n onFocusChangeRef.current?.(false);\n }\n };\n }, []);\n\n const focusInput = useCallback(() => {\n const active = document.activeElement;\n if (\n active instanceof HTMLElement &&\n active !== inputRef.current &&\n active !== document.body\n ) {\n previouslyFocusedElementRef.current = active;\n }\n if (isCollapsed) {\n hasExpandedWhileZoneVisibleRef.current = true;\n setIsCollapsed(false);\n window.requestAnimationFrame(() => {\n inputRef.current?.focus();\n });\n } else {\n inputRef.current?.focus();\n }\n }, [isCollapsed]);\n\n const blurInput = useCallback(() => {\n inputRef.current?.blur();\n }, []);\n\n useImperativeHandle(ref, () => ({ focusInput, blurInput }), [\n focusInput,\n blurInput,\n ]);\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === 'Escape') {\n e.preventDefault();\n const prev = previouslyFocusedElementRef.current;\n previouslyFocusedElementRef.current = null;\n inputRef.current?.blur();\n prev?.focus?.();\n return;\n }\n if (\n e.key === 'Enter' &&\n !e.shiftKey &&\n (inputValue.trim() || canSubmitEmpty)\n ) {\n e.preventDefault();\n handleSubmit();\n }\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n setInputValue(e.target.value);\n };\n\n const handleInputFocus = (e: React.FocusEvent<HTMLTextAreaElement>) => {\n setIsFocused(true);\n if (\n e.relatedTarget instanceof HTMLElement &&\n e.relatedTarget !== inputRef.current\n ) {\n previouslyFocusedElementRef.current = e.relatedTarget;\n }\n };\n\n const handleContentFocus = () => {\n setHasFocusInside(true);\n };\n\n const handleContentBlur = (e: React.FocusEvent<HTMLDivElement>) => {\n const next = e.relatedTarget as Node | null;\n if (!next || !e.currentTarget.contains(next)) {\n setHasFocusInside(false);\n }\n };\n\n if (progressMessage) {\n return (\n <div\n className={cn('web5-prompt-progress', className)}\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n <div className=\"web5-prompt-progress__indicator\" aria-hidden=\"true\">\n <ArrowDownIcon />\n </div>\n <div className=\"web5-prompt-progress__message\">{progressMessage}</div>\n </div>\n );\n }\n\n const canSubmit = inputValue.trim().length > 0 || canSubmitEmpty;\n const chipsMarkup =\n chips.length > 0 ? (\n <div\n className={cn(\n 'web5-prompt-shell__chips',\n chipPosition === 'bottom'\n ? 'web5-prompt-shell__chips--bottom'\n : 'web5-prompt-shell__chips--top',\n showChips\n ? 'web5-prompt-shell__chips--visible'\n : 'web5-prompt-shell__chips--hidden',\n )}\n aria-hidden={isCollapsed || !showChips}\n >\n {chips.map((chip) => (\n <a\n key={chip.label}\n href={isWeb5Url(chip.href) ? '#' : chip.href}\n onMouseDown={(e) => e.preventDefault()}\n onClick={(e) => {\n e.preventDefault();\n onChipClick?.(e, chip.href);\n setInputValue('');\n inputRef.current?.blur();\n }}\n tabIndex={!isCollapsed && showChips ? 0 : -1}\n // `has-custom-focus` opts out of Wix Thunderbolt's global keyboard focus ring\n // so our inset :focus-visible ring isn't overwritten when embedded in a Wix site.\n className=\"web5-prompt-chip has-custom-focus\"\n >\n {chip.label}\n <PromptSendIcon\n aria-hidden=\"true\"\n className=\"web5-prompt-send-icon\"\n />\n </a>\n ))}\n </div>\n ) : null;\n\n const handleExpandClick = () => {\n focusInput();\n };\n\n const showHint = inputValue === '' && !isFocused && !isCollapsed;\n\n return (\n <div\n className={cn(\n 'web5-prompt-shell',\n isCollapsed && 'web5-prompt-shell--collapsed',\n // Widens the pill while the field or a chip holds focus. Driven by\n // `hasFocusInside` rather than `isFocused` so clicking a chip (which\n // preventDefaults its mousedown) doesn't collapse the width mid-click.\n hasFocusInside && !isCollapsed && 'web5-prompt-shell--focused',\n className,\n )}\n >\n <div className=\"web5-prompt-shell__stage\">\n <button\n type=\"button\"\n className=\"web5-prompt-shell__collapsed-button has-custom-focus\"\n onClick={handleExpandClick}\n aria-label={effectiveCollapsedLabel}\n aria-hidden={!isCollapsed}\n tabIndex={isCollapsed ? 0 : -1}\n >\n {effectiveCollapsedLabel}\n </button>\n\n <div\n className=\"web5-prompt-shell__content\"\n aria-hidden={isCollapsed}\n onFocus={handleContentFocus}\n onBlur={handleContentBlur}\n >\n {contextBanner}\n <div className=\"web5-prompt-shell__panel\">\n <div\n className={cn(\n 'web5-prompt-shell__stack',\n chipPosition === 'top' && 'web5-prompt-shell__stack--chips-top',\n )}\n >\n <div className=\"web5-prompt-search\" role=\"search\">\n <div className=\"web5-prompt-search__inner\">\n <div\n className={cn(\n 'web5-prompt-field',\n isFocused && 'web5-prompt-field--focused',\n isMultiline && 'web5-prompt-field--multiline',\n )}\n >\n <textarea\n ref={inputRef}\n rows={1}\n value={inputValue}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n onFocus={handleInputFocus}\n onBlur={() => setIsFocused(false)}\n placeholder={placeholder}\n aria-label=\"Search or ask a question\"\n aria-keyshortcuts=\"/ Control+K\"\n className=\"web5-prompt-input has-custom-focus placeholder:text-search-input-hint\"\n tabIndex={isCollapsed ? -1 : undefined}\n />\n\n <div className=\"web5-prompt-actions\">\n {showHint && (\n <span className=\"web5-prompt-hint\" aria-hidden=\"true\">\n Press <kbd className=\"web5-prompt-hint__key\">/</kbd>{' '}\n to search\n </span>\n )}\n {onVoiceInput && (\n <button\n type=\"button\"\n onClick={onVoiceInput}\n className=\"web5-prompt-voice\"\n aria-label=\"Voice input\"\n tabIndex={isCollapsed ? -1 : undefined}\n >\n <MicrophoneIcon />\n </button>\n )}\n <button\n type=\"button\"\n onClick={handleSubmit}\n className={cn(\n 'web5-prompt-submit',\n submitLabel && 'web5-prompt-submit--labeled',\n canSubmit && 'web5-prompt-submit--active',\n )}\n aria-label={submitLabel ?? 'Submit'}\n disabled={!canSubmit || isCollapsed}\n tabIndex={isCollapsed ? -1 : undefined}\n >\n {submitLabel ? (\n <>\n <span className=\"web5-prompt-submit__label\">\n {submitLabel}\n </span>\n <ArrowRightIcon\n aria-hidden=\"true\"\n className=\"web5-prompt-send-icon\"\n />\n </>\n ) : (\n <PromptSendIcon\n aria-hidden=\"true\"\n className=\"web5-prompt-send-icon\"\n />\n )}\n </button>\n </div>\n </div>\n </div>\n </div>\n\n {chipsMarkup}\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_utils","_linkTypes","_jsxFileName","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ArrowDownIcon","createElement","xmlns","width","height","viewBox","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","__self","__source","fileName","lineNumber","columnNumber","d","MicrophoneIcon","props","_extends2","ArrowRightIcon","PromptSendIcon","SearchSection","exports","forwardRef","onSubmit","placeholder","submitLabel","collapsedLabel","onCollapsedChange","chips","chipDisplayMode","chipPosition","onVoiceInput","progressMessage","className","contextBanner","hasContext","canSubmitEmpty","hasContent","isBottomZoneVisible","onChipClick","onFocusChange","ref","inputValue","setInputValue","useState","isFocused","setIsFocused","hasFocusInside","setHasFocusInside","isMultiline","setIsMultiline","isCollapsed","setIsCollapsed","inputRef","useRef","hasExpandedWhileZoneVisibleRef","previouslyFocusedElementRef","showChips","length","effectiveCollapsedLabel","replace","handleSubmit","useCallback","trimmedValue","trim","useLayoutEffect","element","current","computedStyles","window","getComputedStyle","lineHeight","Number","parseFloat","hasValue","style","nextHeight","Math","min","max","scrollHeight","useEffect","hasFocusInsideRef","onFocusChangeRef","focusInput","active","document","activeElement","HTMLElement","body","requestAnimationFrame","_inputRef$current","focus","_inputRef$current2","blurInput","_inputRef$current3","blur","useImperativeHandle","handleKeyDown","key","_inputRef$current4","preventDefault","prev","shiftKey","handleInputChange","target","value","handleInputFocus","relatedTarget","handleContentFocus","handleContentBlur","next","currentTarget","contains","cn","role","canSubmit","chipsMarkup","map","chip","label","href","isWeb5Url","onMouseDown","onClick","_inputRef$current5","tabIndex","handleExpandClick","type","onFocus","onBlur","rows","onChange","onKeyDown","undefined","disabled","Fragment"],"sources":["../../../../src/components/ui/SearchSection.tsx"],"sourcesContent":["import React, {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useState,\n useRef,\n useCallback,\n useLayoutEffect,\n} from 'react';\nimport { cn } from '../../lib/utils';\nimport { isWeb5Url } from '../../types/link-types';\n\nexport interface ScrollChip {\n label: string;\n href: string;\n iconHint?: string;\n}\n\nexport interface SearchSectionProps {\n onSubmit?: (value: string) => void;\n placeholder?: string;\n /**\n * When set, the submit control renders as a labeled CTA button (text +\n * right arrow) instead of the icon-only send button. Used by the empty\n * state (e.g. \"Find Your Pair\").\n */\n submitLabel?: string;\n collapsedLabel?: string;\n onCollapsedChange?: (isCollapsed: boolean) => void;\n chips?: ScrollChip[];\n chipDisplayMode?: 'focus' | 'always';\n chipPosition?: 'top' | 'bottom';\n onVoiceInput?: () => void;\n progressMessage?: string;\n className?: string;\n contextBanner?: React.ReactNode;\n hasContext?: boolean;\n canSubmitEmpty?: boolean;\n hasContent?: boolean;\n isBottomZoneVisible?: boolean;\n onChipClick?: (e: React.MouseEvent<HTMLAnchorElement>, href: string) => void;\n onFocusChange?: (focused: boolean) => void;\n}\n\nexport interface SearchSectionHandle {\n focusInput: () => void;\n blurInput: () => void;\n}\n\nconst ArrowDownIcon: React.FC = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M12 5v14\" />\n <path d=\"m19 12-7 7-7-7\" />\n </svg>\n);\n\nconst MicrophoneIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n stroke=\"none\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z\" />\n <path\n d=\"M19 10v2a7 7 0 0 1-14 0v-2M12 19v3\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n fill=\"none\"\n />\n </svg>\n);\n\nconst ArrowRightIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M5 12h14\" />\n <path d=\"m12 5 7 7-7 7\" />\n </svg>\n);\n\nconst PromptSendIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n aria-hidden=\"true\"\n {...props}\n >\n <path\n d=\"M13.0306 7.53114C12.9609 7.60106 12.8781 7.65654 12.787 7.69439C12.6958 7.73224 12.5981 7.75173 12.4993 7.75173C12.4006 7.75173 12.3029 7.73224 12.2117 7.69439C12.1206 7.65654 12.0378 7.60106 11.9681 7.53114L8.74997 4.31301V13.5005C8.74997 13.6994 8.67095 13.8902 8.5303 14.0308C8.38965 14.1715 8.19888 14.2505 7.99997 14.2505C7.80106 14.2505 7.61029 14.1715 7.46964 14.0308C7.32899 13.8902 7.24997 13.6994 7.24997 13.5005V4.31301L4.0306 7.53114C3.8897 7.67203 3.69861 7.75119 3.49935 7.75119C3.30009 7.75119 3.10899 7.67203 2.9681 7.53114C2.8272 7.39024 2.74805 7.19915 2.74805 6.99989C2.74805 6.80063 2.8272 6.60953 2.9681 6.46864L7.4681 1.96864C7.53778 1.89872 7.62057 1.84324 7.71173 1.80539C7.8029 1.76753 7.90064 1.74805 7.99935 1.74805C8.09806 1.74805 8.1958 1.76753 8.28696 1.80539C8.37813 1.84324 8.46092 1.89872 8.5306 1.96864L13.0306 6.46864C13.1005 6.53832 13.156 6.62111 13.1938 6.71227C13.2317 6.80344 13.2512 6.90118 13.2512 6.99989C13.2512 7.0986 13.2317 7.19634 13.1938 7.2875C13.156 7.37867 13.1005 7.46146 13.0306 7.53114Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport const SearchSection = forwardRef<\n SearchSectionHandle,\n SearchSectionProps\n>(function SearchSection(\n {\n onSubmit,\n placeholder = 'Talk to us',\n submitLabel,\n collapsedLabel,\n onCollapsedChange,\n chips = [],\n chipDisplayMode = 'focus',\n chipPosition = 'top',\n onVoiceInput,\n progressMessage,\n className = '',\n contextBanner,\n hasContext,\n canSubmitEmpty = false,\n hasContent = false,\n isBottomZoneVisible = false,\n onChipClick,\n onFocusChange,\n },\n ref,\n) {\n const [inputValue, setInputValue] = useState('');\n const [isFocused, setIsFocused] = useState(false);\n const [hasFocusInside, setHasFocusInside] = useState(false);\n const [isMultiline, setIsMultiline] = useState(false);\n const [isCollapsed, setIsCollapsed] = useState(false);\n const inputRef = useRef<HTMLTextAreaElement>(null);\n const hasExpandedWhileZoneVisibleRef = useRef(false);\n const previouslyFocusedElementRef = useRef<HTMLElement | null>(null);\n const showChips =\n chips.length > 0 &&\n !hasContext &&\n (chipDisplayMode === 'always' || hasFocusInside);\n const effectiveCollapsedLabel =\n collapsedLabel ?? placeholder.replace(/\\.\\.\\.$/, '');\n\n const handleSubmit = useCallback(() => {\n const trimmedValue = inputValue.trim();\n if (trimmedValue || canSubmitEmpty) {\n onSubmit?.(trimmedValue);\n setInputValue('');\n }\n }, [canSubmitEmpty, inputValue, onSubmit]);\n\n useLayoutEffect(() => {\n const element = inputRef.current;\n if (!element) {\n return;\n }\n\n const computedStyles = window.getComputedStyle(element);\n const lineHeight = Number.parseFloat(computedStyles.lineHeight) || 32;\n\n const hasValue = inputValue.trim().length > 0;\n element.style.height = 'auto';\n const nextHeight = hasValue\n ? Math.min(Math.max(element.scrollHeight, lineHeight), 175)\n : lineHeight;\n element.style.height = `${nextHeight}px`;\n setIsMultiline(hasValue && nextHeight > lineHeight);\n }, [inputValue]);\n\n useEffect(() => {\n if (progressMessage || !hasContent) {\n setIsCollapsed(false);\n hasExpandedWhileZoneVisibleRef.current = false;\n return;\n }\n\n if (!isBottomZoneVisible) {\n hasExpandedWhileZoneVisibleRef.current = false;\n setIsCollapsed(false);\n return;\n }\n\n if (!hasExpandedWhileZoneVisibleRef.current) {\n setIsCollapsed(true);\n }\n }, [hasContent, isBottomZoneVisible, progressMessage]);\n\n useEffect(() => {\n onCollapsedChange?.(isCollapsed);\n }, [isCollapsed, onCollapsedChange]);\n\n const hasFocusInsideRef = useRef(hasFocusInside);\n hasFocusInsideRef.current = hasFocusInside;\n const onFocusChangeRef = useRef(onFocusChange);\n onFocusChangeRef.current = onFocusChange;\n\n useEffect(() => {\n onFocusChange?.(hasFocusInside);\n }, [hasFocusInside, onFocusChange]);\n\n useEffect(() => {\n return () => {\n if (hasFocusInsideRef.current) {\n onFocusChangeRef.current?.(false);\n }\n };\n }, []);\n\n const focusInput = useCallback(() => {\n const active = document.activeElement;\n if (\n active instanceof HTMLElement &&\n active !== inputRef.current &&\n active !== document.body\n ) {\n previouslyFocusedElementRef.current = active;\n }\n if (isCollapsed) {\n hasExpandedWhileZoneVisibleRef.current = true;\n setIsCollapsed(false);\n window.requestAnimationFrame(() => {\n inputRef.current?.focus();\n });\n } else {\n inputRef.current?.focus();\n }\n }, [isCollapsed]);\n\n const blurInput = useCallback(() => {\n inputRef.current?.blur();\n }, []);\n\n useImperativeHandle(ref, () => ({ focusInput, blurInput }), [\n focusInput,\n blurInput,\n ]);\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === 'Escape') {\n e.preventDefault();\n const prev = previouslyFocusedElementRef.current;\n previouslyFocusedElementRef.current = null;\n inputRef.current?.blur();\n prev?.focus?.();\n return;\n }\n if (\n e.key === 'Enter' &&\n !e.shiftKey &&\n (inputValue.trim() || canSubmitEmpty)\n ) {\n e.preventDefault();\n handleSubmit();\n }\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n setInputValue(e.target.value);\n };\n\n const handleInputFocus = (e: React.FocusEvent<HTMLTextAreaElement>) => {\n setIsFocused(true);\n if (\n e.relatedTarget instanceof HTMLElement &&\n e.relatedTarget !== inputRef.current\n ) {\n previouslyFocusedElementRef.current = e.relatedTarget;\n }\n };\n\n const handleContentFocus = () => {\n setHasFocusInside(true);\n };\n\n const handleContentBlur = (e: React.FocusEvent<HTMLDivElement>) => {\n const next = e.relatedTarget as Node | null;\n if (!next || !e.currentTarget.contains(next)) {\n setHasFocusInside(false);\n }\n };\n\n if (progressMessage) {\n return (\n <div\n className={cn('web5-prompt-progress', className)}\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n <div className=\"web5-prompt-progress__indicator\" aria-hidden=\"true\">\n <ArrowDownIcon />\n </div>\n <div className=\"web5-prompt-progress__message\">{progressMessage}</div>\n </div>\n );\n }\n\n const canSubmit = inputValue.trim().length > 0 || canSubmitEmpty;\n const chipsMarkup =\n chips.length > 0 ? (\n <div\n className={cn(\n 'web5-prompt-shell__chips',\n chipPosition === 'bottom'\n ? 'web5-prompt-shell__chips--bottom'\n : 'web5-prompt-shell__chips--top',\n showChips\n ? 'web5-prompt-shell__chips--visible'\n : 'web5-prompt-shell__chips--hidden',\n )}\n aria-hidden={isCollapsed || !showChips}\n >\n {chips.map((chip) => (\n <a\n key={chip.label}\n href={isWeb5Url(chip.href) ? '#' : chip.href}\n onMouseDown={(e) => e.preventDefault()}\n onClick={(e) => {\n e.preventDefault();\n onChipClick?.(e, chip.href);\n setInputValue('');\n inputRef.current?.blur();\n }}\n tabIndex={!isCollapsed && showChips ? 0 : -1}\n // `has-custom-focus` opts out of Wix Thunderbolt's global keyboard focus ring\n // so our inset :focus-visible ring isn't overwritten when embedded in a Wix site.\n className=\"web5-prompt-chip has-custom-focus\"\n >\n {chip.label}\n <PromptSendIcon\n aria-hidden=\"true\"\n className=\"web5-prompt-send-icon\"\n />\n </a>\n ))}\n </div>\n ) : null;\n\n const handleExpandClick = () => {\n focusInput();\n };\n\n\n return (\n <div\n className={cn(\n 'web5-prompt-shell',\n isCollapsed && 'web5-prompt-shell--collapsed',\n // Widens the pill while the field or a chip holds focus. Driven by\n // `hasFocusInside` rather than `isFocused` so clicking a chip (which\n // preventDefaults its mousedown) doesn't collapse the width mid-click.\n hasFocusInside && !isCollapsed && 'web5-prompt-shell--focused',\n className,\n )}\n >\n <div className=\"web5-prompt-shell__stage\">\n <button\n type=\"button\"\n className=\"web5-prompt-shell__collapsed-button has-custom-focus\"\n onClick={handleExpandClick}\n aria-label={effectiveCollapsedLabel}\n aria-hidden={!isCollapsed}\n tabIndex={isCollapsed ? 0 : -1}\n >\n {effectiveCollapsedLabel}\n </button>\n\n <div\n className=\"web5-prompt-shell__content\"\n aria-hidden={isCollapsed}\n onFocus={handleContentFocus}\n onBlur={handleContentBlur}\n >\n {contextBanner}\n <div className=\"web5-prompt-shell__panel\">\n <div\n className={cn(\n 'web5-prompt-shell__stack',\n chipPosition === 'top' && 'web5-prompt-shell__stack--chips-top',\n )}\n >\n <div className=\"web5-prompt-search\" role=\"search\">\n <div className=\"web5-prompt-search__inner\">\n <div\n className={cn(\n 'web5-prompt-field',\n isFocused && 'web5-prompt-field--focused',\n isMultiline && 'web5-prompt-field--multiline',\n )}\n >\n <textarea\n ref={inputRef}\n rows={1}\n value={inputValue}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n onFocus={handleInputFocus}\n onBlur={() => setIsFocused(false)}\n placeholder={placeholder}\n aria-label=\"Search or ask a question\"\n aria-keyshortcuts=\"/ Control+K\"\n className=\"web5-prompt-input has-custom-focus placeholder:text-search-input-hint\"\n tabIndex={isCollapsed ? -1 : undefined}\n />\n\n <div className=\"web5-prompt-actions\">\n {onVoiceInput && (\n <button\n type=\"button\"\n onClick={onVoiceInput}\n className=\"web5-prompt-voice\"\n aria-label=\"Voice input\"\n tabIndex={isCollapsed ? -1 : undefined}\n >\n <MicrophoneIcon />\n </button>\n )}\n <button\n type=\"button\"\n onClick={handleSubmit}\n className={cn(\n 'web5-prompt-submit',\n submitLabel && 'web5-prompt-submit--labeled',\n canSubmit && 'web5-prompt-submit--active',\n )}\n aria-label={submitLabel ?? 'Submit'}\n disabled={!canSubmit || isCollapsed}\n tabIndex={isCollapsed ? -1 : undefined}\n >\n {submitLabel ? (\n <>\n <span className=\"web5-prompt-submit__label\">\n {submitLabel}\n </span>\n <ArrowRightIcon\n aria-hidden=\"true\"\n className=\"web5-prompt-send-icon\"\n />\n </>\n ) : (\n <PromptSendIcon\n aria-hidden=\"true\"\n className=\"web5-prompt-send-icon\"\n />\n )}\n </button>\n </div>\n </div>\n </div>\n </div>\n\n {chipsMarkup}\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n});\n"],"mappings":"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","ignoreList":[]}
@@ -70,3 +70,109 @@
70
70
  .web5-user-query__product-back:hover .web5-user-query__product-back-title {
71
71
  text-decoration: underline;
72
72
  }
73
+
74
+ /*
75
+ * Keyboard hint — "Press / to search", beside the Share action.
76
+ *
77
+ * It lived inside the prompt field until it was moved here: there it competed
78
+ * with the placeholder for the same space and vanished the moment the reader
79
+ * focused the input, so the shortcut was only ever shown to someone not using
80
+ * it. Its colour still comes from the prompt-input token family, which keeps
81
+ * it in step with the input it describes and themeable by the same knob.
82
+ */
83
+ .web5-prompt-hint {
84
+ display: inline-flex;
85
+ align-items: center;
86
+ gap: 4px;
87
+ color: var(--pi-field-placeholder);
88
+ font-family: var(--pi-field-font-family);
89
+ font-size: 12px;
90
+ line-height: 1;
91
+ white-space: nowrap;
92
+ pointer-events: none;
93
+ user-select: none;
94
+ }
95
+
96
+ .web5-prompt-hint__key {
97
+ display: inline-flex;
98
+ align-items: center;
99
+ justify-content: center;
100
+ min-width: 16px;
101
+ padding: 1px 4px;
102
+ border: 1px solid var(--pi-field-placeholder);
103
+ border-radius: 3px;
104
+ background: transparent;
105
+ font-family: inherit;
106
+ font-size: 11px;
107
+ line-height: 1;
108
+ }
109
+
110
+ /* No physical keyboard, no shortcut worth advertising. */
111
+ @media (pointer: coarse) {
112
+ .web5-prompt-hint {
113
+ display: none;
114
+ }
115
+ }
116
+
117
+ /* Mobile: the header is tight and there is no keyboard anyway. */
118
+ @media (max-width: 768px) {
119
+ .web5-prompt-hint {
120
+ display: none;
121
+ }
122
+ }
123
+
124
+ /*
125
+ * Action tooltips — "Share this", "New conversation".
126
+ *
127
+ * Brand-coloured via the theme tokens rather than the header's own greys, so a
128
+ * client that rebrands gets tooltips that match. `--primary` is the brand
129
+ * accent every client already sets; the copied-state toast beside this
130
+ * deliberately keeps its own near-black, because that one is a status message
131
+ * rather than a label and should not read as an action.
132
+ *
133
+ * Hover and focus-visible both, so a keyboard user gets the same affordance —
134
+ * the buttons are icon-only below the `sm` breakpoint, where the label is the
135
+ * only thing naming them.
136
+ */
137
+ .web5-user-query__tooltip {
138
+ position: absolute;
139
+ top: calc(100% + 6px);
140
+ right: 0;
141
+ z-index: 20;
142
+ padding: 5px 10px;
143
+ border-radius: 6px;
144
+ background: hsl(var(--primary, 262 83% 58%));
145
+ color: hsl(var(--primary-foreground, 0 0% 100%));
146
+ font-size: 12px;
147
+ line-height: 1.4;
148
+ white-space: nowrap;
149
+ pointer-events: none;
150
+ opacity: 0;
151
+ transform: translateY(-2px);
152
+ transition:
153
+ opacity 120ms ease-out,
154
+ transform 120ms ease-out;
155
+ }
156
+
157
+ .web5-user-query__action:hover .web5-user-query__tooltip,
158
+ .web5-user-query__action:focus-within .web5-user-query__tooltip {
159
+ opacity: 1;
160
+ transform: translateY(0);
161
+ }
162
+
163
+ /*
164
+ * Touch has no hover, so a tooltip there is either permanently invisible or
165
+ * permanently in the way. The buttons carry `aria-label`, which is what
166
+ * actually names them for anyone who needs it.
167
+ */
168
+ @media (pointer: coarse) {
169
+ .web5-user-query__tooltip {
170
+ display: none;
171
+ }
172
+ }
173
+
174
+ @media (prefers-reduced-motion: reduce) {
175
+ .web5-user-query__tooltip {
176
+ transition: none;
177
+ }
178
+ }