@liveblocks/react-ui 3.2.1 → 3.3.0
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/_private/index.cjs +4 -2
- package/dist/_private/index.cjs.map +1 -1
- package/dist/_private/index.d.cts +100 -33
- package/dist/_private/index.d.ts +100 -33
- package/dist/_private/index.js +3 -2
- package/dist/_private/index.js.map +1 -1
- package/dist/components/AiChat.cjs +11 -9
- package/dist/components/AiChat.cjs.map +1 -1
- package/dist/components/AiChat.js +12 -10
- package/dist/components/AiChat.js.map +1 -1
- package/dist/components/Thread.cjs +58 -0
- package/dist/components/Thread.cjs.map +1 -1
- package/dist/components/Thread.js +59 -1
- package/dist/components/Thread.js.map +1 -1
- package/dist/components/internal/AiComposer.cjs +132 -0
- package/dist/components/internal/AiComposer.cjs.map +1 -0
- package/dist/components/internal/AiComposer.js +130 -0
- package/dist/components/internal/AiComposer.js.map +1 -0
- package/dist/components/internal/Button.cjs.map +1 -1
- package/dist/components/internal/Button.js.map +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +113 -11
- package/dist/index.d.ts +113 -11
- package/dist/index.js.map +1 -1
- package/dist/overrides.cjs +4 -3
- package/dist/overrides.cjs.map +1 -1
- package/dist/overrides.js +4 -3
- package/dist/overrides.js.map +1 -1
- package/dist/primitives/AiComposer/contexts.cjs +24 -0
- package/dist/primitives/AiComposer/contexts.cjs.map +1 -0
- package/dist/primitives/AiComposer/contexts.js +19 -0
- package/dist/primitives/AiComposer/contexts.js.map +1 -0
- package/dist/primitives/AiComposer/index.cjs +348 -0
- package/dist/primitives/AiComposer/index.cjs.map +1 -0
- package/dist/primitives/AiComposer/index.js +340 -0
- package/dist/primitives/AiComposer/index.js.map +1 -0
- package/dist/primitives/index.d.cts +8 -1
- package/dist/primitives/index.d.ts +8 -1
- package/dist/version.cjs +1 -1
- package/dist/version.js +1 -1
- package/package.json +4 -4
- package/src/styles/index.css +36 -10
- package/styles.css +1 -1
- package/styles.css.map +1 -1
- package/dist/components/internal/AiChatComposer.cjs +0 -161
- package/dist/components/internal/AiChatComposer.cjs.map +0 -1
- package/dist/components/internal/AiChatComposer.js +0 -159
- package/dist/components/internal/AiChatComposer.js.map +0 -1
- package/dist/primitives/AiChatComposer/index.cjs +0 -202
- package/dist/primitives/AiChatComposer/index.cjs.map +0 -1
- package/dist/primitives/AiChatComposer/index.js +0 -195
- package/dist/primitives/AiChatComposer/index.js.map +0 -1
package/styles.css.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["src/styles/src/styles/index.css","src/styles/src/styles/utils.css"],"names":[],"mappings":"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","file":"styles.css","sourcesContent":["@import \"./utils\";\n@import \"./constants\";\n\n.lb-root {\n /**\n * Basic\n */\n --lb-radius: 0.5em;\n --lb-spacing: 1em;\n --lb-accent: #17f;\n --lb-accent-foreground: #fff;\n --lb-destructive: #f45;\n --lb-destructive-foreground: #fff;\n --lb-background: #fff;\n --lb-foreground: #111;\n\n /**\n * Advanced\n */\n --lb-line-height: 1.5;\n --lb-icon-size: 20px;\n --lb-icon-weight: 1.5px;\n --lb-avatar-radius: 50%;\n --lb-button-radius: calc(0.75 * var(--lb-radius));\n --lb-transition-duration: 0.1s;\n --lb-transition-easing: cubic-bezier(0.4, 0, 0.2, 1);\n --lb-highlight-shadow: inset 0 0 0 1px rgb(0 0 0 / 10%);\n --lb-elevation-shadow: $lb-elevation-shadow;\n --lb-elevation-shadow-moderate: $lb-elevation-shadow-moderate;\n --lb-tooltip-shadow: $lb-tooltip-shadow;\n --lb-accent-contrast: 8%;\n --lb-destructive-contrast: 8%;\n --lb-foreground-contrast: 8%;\n\n /**\n * Colors\n */\n --lb-background-foreground-faint: color-mix-scale(\n var(--lb-background),\n var(--lb-foreground),\n var(--lb-foreground-contrast),\n 50\n );\n --lb-background-accent-faint: color-mix-scale(\n var(--lb-background),\n var(--lb-accent),\n var(--lb-accent-contrast),\n 50\n );\n --lb-background-accent-subtle: color-mix-scale(\n var(--lb-background),\n var(--lb-accent),\n var(--lb-accent-contrast),\n 100\n );\n --lb-background-destructive-faint: color-mix-scale(\n var(--lb-background),\n var(--lb-destructive),\n var(--lb-destructive-contrast),\n 50\n );\n --lb-background-destructive-subtle: color-mix-scale(\n var(--lb-background),\n var(--lb-destructive),\n var(--lb-destructive-contrast),\n 100\n );\n --lb-accent-subtle: color-mix-scale(\n var(--lb-dynamic-background),\n var(--lb-accent),\n var(--lb-accent-contrast),\n 100\n );\n --lb-accent-moderate: color-mix-scale(\n var(--lb-dynamic-background),\n var(--lb-accent),\n var(--lb-accent-contrast),\n 400\n );\n --lb-accent-tertiary: color-mix-scale(\n var(--lb-dynamic-background),\n var(--lb-accent),\n var(--lb-accent-contrast),\n 600\n );\n --lb-accent-secondary: color-mix-scale(\n var(--lb-dynamic-background),\n var(--lb-accent),\n var(--lb-accent-contrast),\n 800\n );\n --lb-destructive-subtle: color-mix-scale(\n var(--lb-dynamic-background),\n var(--lb-destructive),\n var(--lb-destructive-contrast),\n 100\n );\n --lb-destructive-moderate: color-mix-scale(\n var(--lb-dynamic-background),\n var(--lb-destructive),\n var(--lb-destructive-contrast),\n 400\n );\n --lb-destructive-tertiary: color-mix-scale(\n var(--lb-dynamic-background),\n var(--lb-destructive),\n var(--lb-destructive-contrast),\n 600\n );\n --lb-destructive-secondary: color-mix-scale(\n var(--lb-dynamic-background),\n var(--lb-destructive),\n var(--lb-destructive-contrast),\n 800\n );\n --lb-foreground-subtle: color-mix-scale(\n var(--lb-dynamic-background),\n var(--lb-foreground),\n var(--lb-foreground-contrast),\n 100\n );\n --lb-foreground-moderate: color-mix-scale(\n var(--lb-dynamic-background),\n var(--lb-foreground),\n var(--lb-foreground-contrast),\n 400\n );\n --lb-foreground-tertiary: color-mix-scale(\n var(--lb-dynamic-background),\n var(--lb-foreground),\n var(--lb-foreground-contrast),\n 600\n );\n --lb-foreground-secondary: color-mix-scale(\n var(--lb-dynamic-background),\n var(--lb-foreground),\n var(--lb-foreground-contrast),\n 800\n );\n --lb-selection: color-mix(in srgb, var(--lb-accent) 40%, transparent);\n\n overflow-wrap: break-word;\n accent-color: var(--lb-accent);\n text-size-adjust: none;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n\n &,\n *,\n ::before,\n ::after {\n box-sizing: border-box;\n transition: none var(--lb-transition-duration) var(--lb-transition-easing);\n }\n\n /* Define some variables only on first .lb-root instances */\n &:where(:not(& &)) {\n --lb-dynamic-background: var(--lb-background);\n }\n}\n\n/*************************************\n * States *\n *************************************/\n\n.lb-loading,\n.lb-empty,\n.lb-error {\n position: absolute;\n inset: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.lb-loading {\n color: var(--lb-foreground-moderate);\n}\n\n.lb-empty,\n.lb-error {\n padding: var(--lb-spacing);\n color: var(--lb-foreground-tertiary);\n font-size: 0.875em;\n text-align: center;\n text-wrap: balance;\n}\n\n/*************************************\n * Icon *\n *************************************/\n\n.lb-icon-container,\n.lb-icon {\n inline-size: var(--lb-icon-size);\n block-size: var(--lb-icon-size);\n}\n\n.lb-icon-container {\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.lb-icon {\n --lb-icon-background: var(--lb-dynamic-background);\n\n * {\n stroke-width: var(--lb-icon-weight);\n vector-effect: non-scaling-stroke;\n }\n}\n\n.lb-icon-spinner {\n transform-origin: center;\n animation: lb-animation-spin 0.75s linear infinite;\n}\n\n/*************************************\n * Button *\n *************************************/\n\n.lb-button {\n --lb-button-background: var(--lb-dynamic-background);\n\n @include button;\n\n display: flex;\n justify-content: center;\n align-items: center;\n padding: calc(0.25 * var(--lb-spacing));\n border-radius: var(--lb-button-radius);\n background: var(--lb-button-background);\n color: var(--lb-foreground-moderate);\n\n &:where(.lb-button\\:non-disableable:disabled) {\n cursor: default;\n }\n\n &:where(:not(.lb-button\\:non-disableable):disabled) {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n &:where(\n :enabled:hover,\n :enabled:focus-visible,\n [aria-expanded=\"true\"],\n [aria-selected=\"true\"]\n ) {\n --lb-button-background: var(--lb-foreground-subtle);\n\n color: var(--lb-foreground-tertiary);\n }\n\n &:where(\n [data-variant=\"default\"]:not(\n :is(\n :enabled:hover,\n :enabled:focus-visible,\n [aria-expanded=\"true\"],\n [aria-selected=\"true\"],\n [aria-pressed]\n )\n )\n ) {\n background: transparent;\n }\n\n &:where([data-variant=\"primary\"]) {\n --lb-button-background: var(--lb-accent);\n\n color: var(--lb-accent-foreground);\n\n &:where(\n :enabled:hover,\n :enabled:focus-visible,\n [aria-expanded=\"true\"],\n [aria-selected=\"true\"]\n ) {\n --lb-button-background: var(--lb-accent-secondary);\n\n color: var(--lb-accent-foreground);\n }\n }\n\n &:where([data-variant=\"destructive\"]) {\n --lb-button-background: var(--lb-destructive);\n\n color: var(--lb-destructive-foreground);\n\n &:where(\n :enabled:hover,\n :enabled:focus-visible,\n [aria-expanded=\"true\"],\n [aria-selected=\"true\"]\n ) {\n --lb-button-background: var(--lb-destructive-secondary);\n\n color: var(--lb-destructive-foreground);\n }\n }\n\n &:where([data-variant=\"outline\"]) {\n box-shadow: inset 0 0 0 1px var(--lb-foreground-subtle);\n transition-property: background, color, opacity, box-shadow;\n }\n\n &:where(:has(.lb-button-label)) {\n gap: calc(0.175 * var(--lb-spacing));\n padding-inline: calc(0.55 * var(--lb-spacing));\n\n &:where(:has(.lb-icon-container)) {\n padding-inline-start: calc(0.4 * var(--lb-spacing));\n }\n }\n\n &:where([data-variant=\"toolbar\"]) {\n color: var(--lb-foreground-tertiary);\n\n &:where([aria-pressed=\"true\"]) {\n --lb-button-background: var(--lb-foreground-subtle);\n\n color: var(--lb-foreground-secondary);\n\n :where(.lb-icon *) {\n stroke-width: calc(1.25 * var(--lb-icon-weight));\n }\n }\n }\n\n &:where([data-variant=\"secondary\"]) {\n --lb-button-background: var(--lb-foreground-subtle);\n\n color: var(--lb-foreground-tertiary);\n\n &:where(\n :enabled:hover,\n :enabled:focus-visible,\n [aria-expanded=\"true\"],\n [aria-selected=\"true\"]\n ) {\n --lb-button-background: var(--lb-foreground);\n\n color: var(--lb-dynamic-background);\n }\n }\n\n &:where([data-size=\"large\"]) {\n padding: calc(0.5 * var(--lb-spacing));\n\n &:where(:has(.lb-button-label)) {\n gap: calc(0.35 * var(--lb-spacing));\n padding-inline: calc(0.7 * var(--lb-spacing));\n\n &:where(:has(.lb-icon-container)) {\n padding-inline-start: calc(0.6 * var(--lb-spacing));\n }\n }\n }\n\n :where(.lb-icon-container) {\n flex: none;\n }\n\n :where(.lb-icon) {\n --lb-icon-background: var(--lb-button-background);\n }\n}\n\n.lb-button-label {\n display: inline-flex;\n flex: none;\n align-items: center;\n block-size: var(--lb-icon-size);\n font-weight: 500;\n font-size: calc(0.7 * var(--lb-icon-size));\n line-height: 1;\n}\n\n/*************************************\n * Dropdown *\n *************************************/\n\n.lb-dropdown {\n min-inline-size: 160px;\n}\n\n.lb-dropdown-label {\n padding: calc(0.875 * var(--lb-spacing)) calc(0.625 * var(--lb-spacing))\n calc(0.125 * var(--lb-spacing));\n color: var(--lb-foreground-tertiary);\n font-weight: 600;\n font-size: 0.675em;\n text-transform: uppercase;\n pointer-events: none;\n user-select: none;\n\n &:where(:first-child) {\n padding-block-start: var(--lb-spacing);\n }\n}\n\n.lb-dropdown-separator {\n block-size: 1px;\n margin: $lb-elevation-padding calc(-1 * $lb-elevation-padding);\n background: var(--lb-foreground-subtle);\n}\n\n.lb-dropdown-item {\n :where(.lb-icon-container) {\n margin-inline-start: calc(-0.125 * var(--lb-spacing));\n margin-inline-end: calc(0.375 * var(--lb-spacing));\n color: var(--lb-foreground-moderate);\n transition-property: color;\n }\n}\n\n.lb-dropdown-item:where(\n :is(\n [data-highlighted]:not([data-highlighted=\"false\"]),\n [data-selected]:not([data-selected=\"false\"]),\n [data-active]:not([data-active=\"false\"])\n )\n ) {\n :where(.lb-icon-container) {\n color: var(--lb-foreground-tertiary);\n }\n}\n\n.lb-dropdown-item:where(:has(.lb-dropdown-item-accessory)) {\n :where(.lb-dropdown-item-label) {\n margin-inline-end: calc(0.375 * var(--lb-spacing));\n }\n}\n\n.lb-dropdown-item-accessory {\n margin-inline-start: auto;\n margin-inline-end: calc(-0.25 * var(--lb-spacing));\n}\n\n/* If a dropdown has at least one icon, all items should be aligned has if they had an icon */\n.lb-dropdown:where(:has(.lb-dropdown-item-icon))\n :where(.lb-dropdown-item:not(:has(.lb-dropdown-item-icon)))\n :where(.lb-dropdown-item-label) {\n margin-inline-start: calc(\n var(--lb-icon-size) + (0.375 - 0.125) * var(--lb-spacing)\n );\n}\n\n/*************************************\n * Select *\n *************************************/\n\n.lb-select-button {\n min-inline-size: 0;\n\n :where(.lb-button-label) {\n @include truncate;\n\n flex: 1;\n }\n}\n\n.lb-select-button-chevron {\n flex: none;\n margin-inline-end: calc(-0.25 * var(--lb-spacing));\n opacity: 0.75;\n}\n\n/*************************************\n * Collapsible *\n *************************************/\n\n.lb-collapsible-trigger {\n all: unset;\n position: relative;\n box-sizing: inherit;\n user-select: none;\n transition-timing-function: var(--lb-transition-easing);\n transition-duration: var(--lb-transition-duration);\n transition-property: color, background, opacity;\n -webkit-tap-highlight-color: transparent;\n\n &:where(:not([data-disabled])) {\n cursor: pointer;\n }\n}\n\n.lb-collapsible-chevron {\n inline-size: calc(0.8 * var(--lb-icon-size));\n block-size: calc(0.8 * var(--lb-icon-size));\n margin-inline-start: -1px;\n margin-block-start: 1px;\n color: var(--lb-foreground-moderate);\n}\n\n@media (prefers-reduced-motion: no-preference) {\n @supports (interpolate-size: allow-keywords) {\n .lb-collapsible-content {\n block-size: 0;\n opacity: 0;\n transition-duration: calc(3 * var(--lb-transition-duration));\n transition-property: block-size, opacity, content-visibility;\n\n /* overflow-block: clip; doesn't work as expected */\n /* stylelint-disable-next-line plugin/use-logical-properties-and-values */\n overflow-y: clip;\n\n /* interpolate-size is a new-ish property */\n /* stylelint-disable-next-line */\n interpolate-size: allow-keywords;\n\n /* transition-behavior is a new-ish property */\n /* stylelint-disable-next-line */\n transition-behavior: allow-discrete;\n\n &:where([data-state=\"open\"]) {\n block-size: auto;\n opacity: 1;\n\n /* overflow-block: auto; doesn't work as expected */\n /* stylelint-disable-next-line plugin/use-logical-properties-and-values */\n overflow-y: auto;\n }\n }\n }\n\n .lb-collapsible-chevron {\n transition-property: transform;\n\n .lb-collapsible:where([data-state=\"open\"]) :where(&) {\n transform: rotate(90deg);\n }\n }\n}\n\n/* Fix default browser styles when `hidden=\"until-found\"` isn't supported. */\n.lb-collapsible-content:where([hidden]:not([hidden=\"until-found\"])) {\n display: none !important;\n}\n\n/*************************************\n * Prose *\n *************************************/\n\n.lb-prose {\n &,\n * {\n line-height: var(--lb-line-height);\n }\n\n :where(p) {\n margin-block: 0.75em;\n }\n\n :where(p, li) {\n text-wrap: pretty;\n }\n\n :where(h1, h2, h3, h4, h5, h6) {\n margin-block-start: 1.5em;\n margin-block-end: 0.375em;\n font-weight: 600;\n text-wrap: balance;\n }\n\n :where(h1) {\n font-size: 1.75em;\n line-height: calc(0.8 * var(--lb-line-height));\n }\n\n :where(h2) {\n font-size: 1.5em;\n line-height: calc(0.86 * var(--lb-line-height));\n }\n\n :where(h3) {\n font-size: 1.25em;\n line-height: calc(0.92 * var(--lb-line-height));\n }\n\n :where(h4) {\n font-size: 1.125em;\n line-height: calc(0.98 * var(--lb-line-height));\n }\n\n :where(h5) {\n font-size: 1em;\n }\n\n :where(h6) {\n font-size: 0.875em;\n }\n\n :where(hr) {\n margin-block: 1.5em;\n border: none;\n border-block-start: 1px solid var(--lb-foreground-subtle);\n }\n\n :where(ol, ul) {\n display: flex;\n flex-direction: column;\n gap: 0.25em;\n margin-block: 0.75em;\n padding-inline-start: 1.125em;\n list-style-position: outside;\n\n :where(ol, ul) {\n margin-block: 0;\n }\n }\n\n :where(ul) {\n list-style-type: disc;\n }\n\n :where(ol) {\n list-style-type: decimal;\n }\n\n :where(li) {\n margin-block: 0;\n\n > :where(ol, ul) {\n margin-block-start: 0.25em;\n }\n\n > :where(p) {\n margin-block: 0.25em;\n }\n\n > :where(p:first-child) {\n margin-block-start: 0;\n }\n\n > :where(p:last-child) {\n margin-block-end: 0;\n }\n }\n\n :where(a) {\n color: var(--lb-foreground);\n outline: none;\n font-weight: 500;\n transition-property: color, text-decoration-color;\n text-decoration-line: underline;\n text-decoration-color: var(--lb-foreground-moderate);\n text-underline-offset: 2px;\n\n &:where([href]):where(:hover, :focus-visible) {\n color: var(--lb-accent);\n text-decoration-color: var(--lb-accent-moderate);\n }\n }\n\n :where(strong) {\n font-weight: 600;\n }\n\n :where(table) {\n inline-size: 100%;\n min-inline-size: 0;\n margin-block: 1em;\n border-collapse: collapse;\n table-layout: auto;\n word-break: break-word;\n }\n\n :where(thead) {\n border-block-end: 2px solid var(--lb-foreground-subtle);\n\n :where(th) {\n vertical-align: bottom;\n }\n }\n\n :where(tbody) {\n :where(td) {\n vertical-align: baseline;\n }\n\n :where(tr:not(:last-child)) {\n border-block-end: 1px solid var(--lb-foreground-subtle);\n }\n }\n\n :where(tfoot) {\n border-block-start: 2px solid var(--lb-foreground-subtle);\n\n :where(td) {\n vertical-align: top;\n }\n }\n\n :where(th, td) {\n padding-inline: 0.75em;\n padding-block: 0.5em;\n text-align: start;\n\n &:where(:first-child) {\n padding-inline-start: 0;\n }\n\n &:where(:last-child) {\n padding-inline-end: 0;\n }\n }\n\n :where(.lb-code-block) {\n margin-block: 1em;\n }\n\n :where(blockquote) {\n position: relative;\n margin-inline: 0;\n margin-block: 0.75em;\n padding: 0;\n padding-inline-start: 1.25em;\n\n &::after {\n content: \"\";\n position: absolute;\n inset-inline-start: 0;\n inset-block-start: 0;\n inline-size: 4px;\n block-size: 100%;\n border-radius: calc(0.5 * var(--lb-radius));\n background: var(--lb-foreground-subtle);\n }\n\n &:where(& + &) {\n margin-block-start: 1em;\n }\n\n > :where(:first-child) {\n margin-block-start: 0;\n }\n\n > :where(:last-child) {\n margin-block-end: 0;\n }\n }\n\n > :where(:first-child) {\n margin-block-start: 0;\n }\n\n > :where(:last-child) {\n margin-block-end: 0;\n }\n}\n\n/*************************************\n * Composer suggestions *\n *************************************/\n\n.lb-composer-suggestions-list {\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n.lb-composer-suggestions-list-item {\n scroll-margin-block: $lb-elevation-padding;\n}\n\n/*************************************\n * Composer mention suggestions *\n *************************************/\n\n.lb-composer-mention-suggestions {\n --lb-composer-mention-suggestion-avatar-size: 1.25rem;\n}\n\n.lb-composer-mention-suggestion {\n padding: calc(0.375 * var(--lb-spacing)) calc(0.625 * var(--lb-spacing));\n}\n\n.lb-composer-mention-suggestion-avatar {\n inline-size: var(--lb-composer-mention-suggestion-avatar-size);\n margin-inline-start: calc(-0.125 * var(--lb-spacing));\n margin-inline-end: calc(0.5 * var(--lb-spacing));\n margin-block: calc(0.125 * var(--lb-spacing));\n background: var(--lb-foreground-subtle);\n color: var(--lb-foreground-moderate);\n}\n\n/*************************************\n * List *\n *************************************/\n\n.lb-list {\n display: contents;\n\n :where(:first-child) {\n @include capitalize;\n }\n}\n\n/*************************************\n * Date *\n *************************************/\n\n.lb-date {\n @include capitalize;\n}\n\n/*************************************\n * Emoji *\n *************************************/\n\n.lb-emoji {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n inline-size: 1em;\n white-space: nowrap;\n}\n\n@include safari-only {\n .lb-emoji {\n transform: scale(0.825);\n will-change: transform;\n }\n}\n\n/*************************************\n * Emoji picker *\n *************************************/\n\n.lb-emoji-picker {\n --lb-emoji-picker-padding: $lb-emoji-picker-padding;\n --lb-emoji-picker-offset-padding: calc(\n $lb-emoji-picker-padding + 0.375 * var(--lb-spacing)\n );\n\n display: flex;\n flex-direction: column;\n inline-size: 100%;\n max-inline-size: var(--frimousse-viewport-width);\n block-size: 374px;\n color: var(--lb-foreground);\n}\n\n.lb-emoji-picker-header {\n flex: none;\n border-block-end: 1px solid var(--lb-foreground-subtle);\n}\n\n.lb-emoji-picker-footer {\n display: flex;\n flex: none;\n gap: calc(0.5 * var(--lb-spacing));\n align-items: center;\n inline-size: 100%;\n padding: calc(0.5 * var(--lb-spacing));\n border-block-start: 1px solid var(--lb-foreground-subtle);\n}\n\n.lb-emoji-picker-active-emoji {\n display: flex;\n flex: none;\n justify-content: center;\n align-items: center;\n inline-size: 1.25em;\n block-size: 1.25em;\n font-size: 1.25em;\n}\n\n.lb-emoji-picker-active-emoji-label {\n @include truncate;\n\n flex: 1;\n color: var(--lb-foreground-secondary);\n font-weight: 500;\n font-size: 0.8125em;\n}\n\n.lb-emoji-picker-active-emoji-label-placeholder {\n margin-inline-start: calc(0.5 * var(--lb-spacing));\n color: var(--lb-foreground-moderate);\n}\n\n.lb-emoji-picker-skin-tone-selector {\n display: flex;\n flex: none;\n justify-content: center;\n align-items: center;\n inline-size: calc(1.75 * var(--lb-spacing));\n block-size: calc(1.75 * var(--lb-spacing));\n margin-inline-start: auto;\n}\n\n.lb-emoji-picker-search-container {\n position: relative;\n display: flex;\n align-items: center;\n\n :where(.lb-icon) {\n position: absolute;\n inset-inline-start: var(--lb-emoji-picker-offset-padding);\n color: var(--lb-foreground-moderate);\n pointer-events: none;\n }\n}\n\n.lb-emoji-picker-search {\n all: unset;\n box-sizing: inherit;\n inline-size: 100%;\n padding: var(--lb-emoji-picker-offset-padding);\n padding-inline-start: calc(\n var(--lb-icon-size) + var(--lb-emoji-picker-offset-padding) + 0.375 *\n var(--lb-spacing)\n );\n background: transparent;\n outline: none;\n appearance: textfield;\n\n &::placeholder {\n color: var(--lb-foreground-moderate);\n }\n\n &::-webkit-search-cancel-button {\n display: none;\n }\n}\n\n.lb-emoji-picker-content {\n position: relative;\n flex: 1;\n outline: none;\n}\n\n.lb-emoji-picker-category-header {\n padding: var(--lb-emoji-picker-padding) var(--lb-emoji-picker-offset-padding);\n background: var(--lb-dynamic-background);\n}\n\n.lb-emoji-picker-category-header-title {\n color: var(--lb-foreground-tertiary);\n font-weight: 600;\n font-size: 0.675em;\n text-transform: uppercase;\n}\n\n.lb-emoji-picker-list {\n padding-block-end: var(--lb-emoji-picker-padding);\n animation: lb-animation-appear var(--lb-transition-duration)\n var(--lb-transition-easing) both;\n}\n\n.lb-emoji-picker-row {\n display: flex;\n padding-inline: var(--lb-emoji-picker-padding);\n scroll-margin-block-end: var(--lb-emoji-picker-padding);\n}\n\n.lb-emoji-picker-emoji {\n all: unset;\n display: flex;\n justify-content: center;\n align-items: center;\n overflow: hidden;\n box-sizing: inherit;\n aspect-ratio: 1;\n padding: calc(0.375 * var(--lb-spacing));\n border-radius: calc(var(--lb-radius) - 0.75 * $lb-emoji-picker-padding);\n text-align: center;\n}\n\n/*************************************\n * Tooltip *\n *************************************/\n\n.lb-tooltip {\n --lb-background: #222;\n --lb-foreground: #fff;\n --lb-foreground-contrast: 10%;\n --lb-dynamic-background: var(--lb-background);\n\n position: relative;\n display: flex;\n align-items: center;\n max-inline-size: 300px;\n min-block-size: calc(\n $lb-tooltip-shortcut-height + 2 * $lb-tooltip-additional-padding\n );\n padding-inline: $lb-tooltip-horizontal-padding;\n border-radius: var(--lb-radius);\n background: var(--lb-dynamic-background);\n color: var(--lb-foreground);\n box-shadow: var(--lb-tooltip-shadow);\n font-size: 0.75rem;\n line-height: 1;\n overflow-wrap: anywhere;\n pointer-events: none;\n\n &::after {\n content: \"\";\n position: absolute;\n inset: 0;\n z-index: 1;\n border-radius: inherit;\n box-shadow: var(--lb-inset-shadow);\n pointer-events: none;\n }\n}\n\n.lb-tooltip\\:multiline {\n justify-content: center;\n padding-block: calc(\n $lb-tooltip-vertical-padding * (1 / $lb-tooltip-line-height)\n );\n line-height: $lb-tooltip-line-height;\n text-align: center;\n}\n\n.lb-tooltip-shortcut {\n display: flex;\n gap: calc(0.125 * var(--lb-spacing));\n justify-content: center;\n align-items: center;\n block-size: $lb-tooltip-shortcut-height;\n margin-inline-start: $lb-tooltip-horizontal-padding;\n margin-inline-end: calc(\n -1 * $lb-tooltip-horizontal-padding + $lb-tooltip-additional-padding\n );\n padding-inline: calc(0.25 * var(--lb-spacing));\n border-radius: calc(\n var(--lb-radius) - 0.625 * $lb-tooltip-additional-padding\n );\n background: var(--lb-foreground-subtle);\n color: var(--lb-foreground-tertiary);\n font-family: inherit;\n line-height: 1;\n text-transform: uppercase;\n\n :where(abbr) {\n all: unset;\n }\n}\n\n/*************************************\n * Avatar *\n *************************************/\n\n.lb-avatar {\n position: relative;\n container-type: inline-size;\n display: flex;\n justify-content: center;\n align-items: center;\n overflow: hidden;\n aspect-ratio: 1;\n border-radius: var(--lb-avatar-radius);\n background: var(--lb-foreground-subtle);\n color: var(--lb-foreground-moderate);\n\n &:where([data-loading]) {\n background: var(--lb-foreground);\n opacity: $lb-loading-opacity;\n }\n}\n\n.lb-avatar-image {\n position: absolute;\n inset: 0;\n object-fit: cover;\n inline-size: 100%;\n block-size: 100%;\n}\n\n.lb-avatar-fallback {\n font-weight: 500;\n font-size: 35cqi;\n white-space: nowrap;\n\n /**\n * Progressive enhancement: Only show the fallback when container queries are supported\n */\n @supports not (container-type: inline-size) {\n display: none;\n }\n}\n\n/*************************************\n * Name *\n *************************************/\n\n.lb-name {\n display: inline-block;\n\n &:where([data-loading]) {\n &::before {\n content: \"\\FEFF\";\n display: inline-block;\n vertical-align: middle;\n inline-size: 8ch;\n block-size: 1.75ex;\n border-radius: calc(0.5 * var(--lb-radius));\n background: currentcolor;\n opacity: $lb-loading-opacity;\n user-select: none;\n }\n }\n}\n\n/*************************************\n * Loading *\n *************************************/\n\n:is(.lb-avatar, .lb-name):where([data-loading]) {\n animation: lb-animation-shimmer 8s linear infinite;\n}\n\n/*************************************\n * Body *\n *************************************/\n\n:is(.lb-comment-body, .lb-composer-editor) {\n color: var(--lb-foreground-secondary);\n\n &,\n * {\n line-height: var(--lb-line-height);\n }\n\n :where(p) {\n --lb-line-height-crop: calc(1lh - 1em) / -2;\n\n margin-block-start: 0.25em;\n margin-block-end: 0.25em;\n\n /* Cancel out the impact of line-height on margins/paddings */\n &:where(:first-of-type) {\n margin-block-start: calc(0.125em + var(--lb-line-height-crop));\n }\n\n /* Cancel out the impact of line-height on margins/paddings */\n &:where(:last-of-type) {\n margin-block-end: calc(0.125em + var(--lb-line-height-crop));\n }\n }\n\n :where(strong) {\n font-weight: 600;\n }\n}\n\n.lb-comment-mention,\n.lb-composer-mention {\n color: var(--lb-accent);\n box-decoration-break: clone;\n font-weight: 500;\n}\n\n:is(.lb-comment-link, .lb-composer-link) {\n color: var(--lb-foreground);\n outline: none;\n font-weight: 500;\n transition-property: color, text-decoration-color;\n text-decoration-line: underline;\n text-decoration-color: var(--lb-foreground-moderate);\n text-underline-offset: 2px;\n\n &:where([href]):where(:hover, :focus-visible) {\n color: var(--lb-accent);\n text-decoration-color: var(--lb-accent-moderate);\n }\n}\n\n.lb-comment-mention:where([data-self]),\n.lb-composer-mention {\n padding: 0.1em 0.3em;\n border-radius: calc(0.675 * var(--lb-radius));\n background: var(--lb-accent-subtle);\n}\n\n/*************************************\n * Composer *\n *************************************/\n\n.lb-composer {\n position: relative;\n background: var(--lb-dynamic-background);\n color: var(--lb-foreground);\n transition-property: background;\n}\n\n.lb-composer-form {\n margin: 0;\n}\n\n.lb-composer:where(:has(.lb-composer-editor:not(:focus-visible))) {\n :where(.lb-button[data-variant=\"primary\"]) {\n --lb-button-background: var(--lb-foreground-subtle);\n\n color: var(--lb-foreground-tertiary);\n\n &:where(:enabled:hover, :enabled:focus-visible) {\n --lb-button-background: var(--lb-accent);\n\n color: var(--lb-accent-foreground);\n }\n }\n}\n\n.lb-composer-editor {\n padding: var(--lb-spacing);\n outline: none;\n\n &:where([data-disabled]:not([data-disabled=\"false\"])) {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n :where(.lb-composer-editor-container:has(.lb-composer-attachments)) & {\n padding-block-end: calc(0.25 * var(--lb-spacing));\n }\n\n :where([data-placeholder]) {\n color: var(--lb-foreground-moderate);\n }\n}\n\n.lb-composer-mention {\n @include invisible-selection;\n\n &:where([data-selected]:not([data-selected=\"false\"])) {\n background: var(--lb-accent);\n color: var(--lb-accent-foreground);\n }\n}\n\n.lb-composer-footer {\n display: flex;\n gap: calc(0.75 * var(--lb-spacing));\n align-items: center;\n block-size: calc($lb-button-size + var(--lb-spacing));\n margin-block-start: calc(-0.125 * var(--lb-spacing));\n padding: 0 var(--lb-spacing) var(--lb-spacing);\n}\n\n.lb-composer-actions,\n.lb-composer-editor-actions {\n display: flex;\n gap: calc(0.125 * var(--lb-spacing));\n align-items: center;\n}\n\n.lb-composer-editor-actions {\n margin-inline-end: auto;\n}\n\n.lb-composer-attribution {\n color: var(--lb-foreground-moderate);\n outline: none;\n transition-property: color;\n\n &:where(:hover, :focus-visible) {\n color: var(--lb-foreground-tertiary);\n }\n\n :where(svg) {\n block-size: calc(0.75 * $lb-button-size);\n }\n}\n\n.lb-composer-attachments {\n padding-inline: var(--lb-spacing);\n padding-block-start: calc(0.75 * var(--lb-spacing));\n padding-block-end: var(--lb-spacing);\n}\n\n.lb-composer-editor-container:where([data-drop]) * {\n pointer-events: none;\n}\n\n.lb-composer-attachments-drop-area {\n position: absolute;\n inset: 0;\n display: flex;\n place-content: center;\n place-items: center;\n color: var(--lb-accent);\n\n &::before,\n &::after {\n content: \"\";\n position: absolute;\n inset: calc(0.5 * var(--lb-spacing));\n z-index: 0;\n border-radius: calc(0.75 * var(--lb-radius));\n }\n\n &::before {\n background: currentcolor;\n opacity: calc(1 * var(--lb-accent-contrast));\n }\n\n &::after {\n border: 2px dashed currentcolor;\n opacity: calc(2 * var(--lb-accent-contrast));\n }\n}\n\n.lb-composer-attachments-drop-area-label {\n position: relative;\n display: flex;\n gap: calc(0.25 * var(--lb-spacing));\n place-items: center;\n padding: calc(0.375 * var(--lb-spacing)) calc(0.5 * var(--lb-spacing));\n border-radius: calc(0.75 * var(--lb-radius));\n background: var(--lb-accent);\n color: var(--lb-accent-foreground);\n font-weight: 500;\n pointer-events: none;\n}\n\n/*************************************\n * Floating Toolbar *\n *************************************/\n\n.lb-composer-floating-toolbar {\n display: flex;\n flex-direction: row;\n gap: $lb-elevation-padding;\n padding: $lb-elevation-padding;\n user-select: none;\n\n /* Invisibly increase the buttons' hit target size */\n :where(.lb-button) {\n &::before {\n content: \"\";\n position: absolute;\n inset: calc(-1 * $lb-elevation-padding);\n z-index: -1;\n border-radius: inherit;\n }\n\n &:where(:not(:first-of-type))::before {\n inset-inline-start: calc(-0.5 * $lb-elevation-padding);\n }\n\n &:where(:not(:last-of-type))::before {\n inset-inline-end: calc(-0.5 * $lb-elevation-padding);\n }\n }\n}\n\n/*************************************\n * Comment *\n *************************************/\n\n.lb-comment {\n --lb-comment-avatar-size: $lb-button-size;\n\n position: relative;\n padding: var(--lb-spacing);\n background: var(--lb-dynamic-background);\n color: var(--lb-foreground);\n font-weight: 400;\n scroll-margin: var(--lb-spacing);\n\n @media (hover: hover) {\n &:where(.lb-comment\\:show-actions-hover) {\n :where(.lb-comment-actions) {\n position: absolute;\n inset-inline-end: 0;\n opacity: 0;\n transition-property: opacity;\n }\n\n &:where(:is(:hover, :focus-within, .lb-comment\\:action-open)) {\n :where(.lb-comment-actions) {\n position: relative;\n opacity: 1;\n }\n }\n }\n }\n\n &:where(:target, [data-target]) {\n --lb-dynamic-background: var(--lb-background-accent-faint);\n }\n\n &:where([data-editing]) {\n --lb-dynamic-background: var(--lb-background-foreground-faint);\n }\n}\n\n.lb-comment-header {\n position: relative;\n display: flex;\n gap: calc(0.75 * var(--lb-spacing));\n align-items: center;\n block-size: var(--lb-comment-avatar-size);\n margin-block-end: calc(0.75 * var(--lb-spacing));\n}\n\n.lb-comment-details {\n display: flex;\n gap: calc(0.75 * var(--lb-spacing));\n align-items: center;\n min-inline-size: 0;\n}\n\n.lb-comment-avatar {\n flex: none;\n inline-size: var(--lb-comment-avatar-size);\n}\n\n.lb-comment-details-labels {\n display: flex;\n gap: calc(0.5 * var(--lb-spacing));\n align-items: baseline;\n min-inline-size: 0;\n}\n\n.lb-comment-author,\n.lb-comment-date {\n @include truncate;\n @include capitalize;\n}\n\n.lb-comment-author {\n font-weight: 500;\n}\n\n.lb-comment-date {\n color: var(--lb-foreground-tertiary);\n font-size: 0.875em;\n}\n\n.lb-comment-date-created,\n.lb-comment-date-edited {\n display: contents;\n}\n\n.lb-comment-actions {\n display: flex;\n gap: calc(0.125 * var(--lb-spacing));\n margin-inline-start: auto;\n}\n\n.lb-comment-composer {\n margin: calc(-1 * var(--lb-spacing));\n background: unset;\n}\n\n.lb-comment-body {\n /**\n * Prevent empty lines from collapsing\n */\n :where(p span:only-child:empty)::before {\n content: \"\\FEFF\";\n user-select: none;\n }\n}\n\n.lb-comment-attachments {\n margin-block-start: calc(0.75 * var(--lb-spacing));\n}\n\n.lb-comment-reactions {\n display: flex;\n flex-wrap: wrap;\n gap: calc(0.375 * var(--lb-spacing));\n margin-block-start: calc(0.75 * var(--lb-spacing));\n}\n\n.lb-comment-reaction {\n gap: calc(0.375 * var(--lb-spacing));\n block-size: $lb-button-size;\n padding-inline: calc(0.575 * var(--lb-spacing));\n border-radius: $lb-radius-full;\n\n &:where([data-self]) {\n background: var(--lb-accent-subtle);\n color: var(--lb-accent-secondary);\n box-shadow: inset 0 0 0 1px var(--lb-accent-moderate);\n\n &:where(\n :enabled:hover,\n :enabled:focus-visible,\n [aria-expanded=\"true\"],\n [aria-selected=\"true\"]\n ) {\n color: var(--lb-accent);\n }\n }\n}\n\n.lb-comment-reaction-count {\n font-weight: 500;\n font-size: 0.75em;\n font-variant-numeric: tabular-nums;\n}\n\n.lb-comment-reaction-tooltip {\n max-inline-size: 200px;\n}\n\n.lb-comment-deleted {\n color: var(--lb-foreground-tertiary);\n font-size: 0.875em;\n}\n\n.lb-comment\\:indent-content {\n min-block-size: calc(var(--lb-comment-avatar-size) + 2 * var(--lb-spacing));\n\n :where(.lb-comment-header) {\n block-size: $lb-button-size;\n margin-block-end: calc(0.25 * var(--lb-spacing));\n }\n\n :where(.lb-comment-avatar) {\n position: absolute;\n inset-inline-start: 0;\n inset-block-start: 0;\n }\n\n :where(.lb-comment-details-labels) {\n margin-inline-start: calc(\n var(--lb-comment-avatar-size) + 0.75 * var(--lb-spacing)\n );\n }\n\n :where(.lb-comment-content) {\n padding-inline-start: calc(\n var(--lb-comment-avatar-size) + 0.75 * var(--lb-spacing)\n );\n }\n}\n\n/*************************************\n * Thread *\n *************************************/\n\n.lb-thread {\n background: var(--lb-dynamic-background);\n color: var(--lb-foreground);\n transition-property: background;\n\n @media (hover: hover) {\n &:where(.lb-thread\\:show-actions-hover :is(:hover, :focus-within)) {\n :where(.lb-thread-actions) {\n opacity: 1;\n }\n }\n }\n}\n\n.lb-thread-comments {\n position: relative;\n z-index: 0;\n display: flex;\n flex-direction: column;\n}\n\n.lb-thread-comment {\n z-index: 0;\n padding-block: calc(0.6 * var(--lb-spacing));\n transition-property: background;\n\n &:where(.lb-comment\\:indent-content) {\n min-block-size: calc(var(--lb-comment-avatar-size) + var(--lb-spacing));\n }\n\n &:where(:first-of-type, [data-editing]) {\n padding-block-start: var(--lb-spacing);\n\n &:where(.lb-comment\\:indent-content) {\n min-block-size: calc(\n var(--lb-comment-avatar-size) + 1.5 * var(--lb-spacing)\n );\n }\n }\n\n &:where(:last-of-type, [data-editing]) {\n padding-block-end: var(--lb-spacing);\n\n &:where(.lb-comment\\:indent-content) {\n min-block-size: calc(\n var(--lb-comment-avatar-size) + 1.75 * var(--lb-spacing)\n );\n }\n }\n}\n\n.lb-thread-new-indicator {\n position: relative;\n z-index: 1;\n display: flex;\n justify-content: center;\n align-items: center;\n block-size: 0;\n\n &::before,\n &::after {\n content: \"\";\n z-index: 0;\n flex: 1;\n block-size: 0;\n border-block-start: 1px solid var(--lb-foreground-subtle);\n transition-property: border;\n }\n}\n\n.lb-thread-new-indicator-label {\n z-index: 1;\n display: flex;\n flex: none;\n gap: calc(0.325 * var(--lb-spacing));\n align-items: center;\n padding: calc(0.25 * var(--lb-spacing)) var(--lb-spacing);\n color: var(--lb-accent);\n font-weight: 600;\n font-size: 0.675em;\n text-transform: uppercase;\n}\n\n.lb-thread-new-indicator-label-icon {\n inline-size: calc(0.6 * var(--lb-icon-size));\n block-size: calc(0.6 * var(--lb-icon-size));\n}\n\n.lb-thread-composer {\n position: relative;\n\n &::after {\n content: \"\";\n position: absolute;\n inset: 0;\n inline-size: 100%;\n block-size: 100%;\n border-block-start: 1px solid var(--lb-foreground-subtle);\n pointer-events: none;\n transition-property: border;\n }\n}\n\n/*************************************\n * Attachments *\n *************************************/\n\n.lb-comment-attachments,\n.lb-composer-attachments {\n display: flex;\n flex-direction: column;\n gap: calc(0.75 * var(--lb-spacing));\n}\n\n.lb-attachments {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(min(100%, 200px), 1fr));\n gap: calc(0.75 * var(--lb-spacing));\n}\n\n.lb-attachment,\n.lb-attachment-delete {\n @include button;\n}\n\n.lb-attachment {\n position: relative;\n display: flex;\n inline-size: 100%;\n min-inline-size: 0;\n border-radius: var(--lb-radius);\n background: var(--lb-dynamic-background);\n box-shadow: inset 0 0 0 1px var(--lb-foreground-subtle);\n\n &:where([tabindex=\"-1\"]) {\n cursor: default;\n }\n\n &:where(:not([tabindex=\"-1\"])) {\n &:where(:hover, :focus-visible) {\n background: var(--lb-foreground-subtle);\n }\n }\n}\n\n.lb-attachment-delete {\n position: absolute;\n inset-inline-end: -0.35rem;\n inset-block-start: -0.35rem;\n z-index: 2;\n display: flex;\n justify-content: center;\n align-items: center;\n inline-size: 1.1rem;\n block-size: 1.1rem;\n border-radius: 50%;\n background: var(--lb-foreground-subtle);\n color: var(--lb-foreground-secondary);\n box-shadow: 0 0 0 2px var(--lb-dynamic-background);\n opacity: 0;\n\n /* Invisibly increase the button's hit target size */\n &::before {\n content: \"\";\n position: absolute;\n inset: -4px;\n z-index: -1;\n border-radius: inherit;\n }\n\n &:where(:hover, :focus-visible) {\n background: var(--lb-foreground-secondary);\n color: var(--lb-dynamic-background);\n }\n\n :where(.lb-attachment:focus-within, .lb-attachment:hover) & {\n opacity: 1;\n }\n\n :where(.lb-icon) {\n inline-size: 0.75rem;\n }\n}\n\n.lb-attachment-details {\n position: relative;\n display: flex;\n flex-direction: column;\n gap: calc(0.25 * var(--lb-spacing));\n justify-content: center;\n min-inline-size: 0;\n font-size: 0.875em;\n}\n\n.lb-attachment-name {\n display: flex;\n font-weight: 500;\n}\n\n.lb-attachment-name-base,\n.lb-attachment-description {\n @include truncate;\n\n transition-property: color;\n}\n\n.lb-attachment-preview {\n position: relative;\n display: flex;\n flex: none;\n justify-content: center;\n align-items: center;\n overflow: hidden;\n background: color-mix(\n in srgb,\n transparent,\n var(--lb-foreground) var(--lb-foreground-contrast)\n );\n color: var(--lb-foreground-tertiary);\n transition-property: background, color;\n}\n\n.lb-attachment-preview-media {\n border-radius: inherit;\n transition-property: opacity;\n\n &,\n &::after,\n img,\n video {\n position: absolute;\n inset: 0;\n inline-size: 100%;\n block-size: 100%;\n }\n\n img,\n video {\n object-fit: cover;\n pointer-events: none;\n }\n\n &::after {\n content: \"\";\n border-radius: inherit;\n box-shadow: var(--lb-highlight-shadow);\n pointer-events: none;\n }\n\n &:where([data-hidden]) {\n opacity: 0;\n }\n}\n\n.lb-attachment-icon {\n flex: none;\n overflow: visible;\n color: var(--lb-foreground);\n}\n\n.lb-attachment-icon-glyph {\n fill: var(--lb-foreground-moderate);\n}\n\n.lb-attachment-icon-background {\n fill: var(--lb-background);\n}\n\n.lb-attachment-icon-fold {\n fill-opacity: calc(0.75 * var(--lb-foreground-contrast));\n}\n\n.lb-attachment-icon-shadow {\n filter: blur(6px);\n fill-opacity: var(--lb-foreground-contrast);\n}\n\n.lb-file-attachment {\n gap: calc(0.5 * var(--lb-spacing));\n padding: calc(0.5 * var(--lb-spacing));\n padding-inline-end: calc(0.65 * var(--lb-spacing));\n\n :where(.lb-attachment-preview) {\n aspect-ratio: 1;\n inline-size: 2.5rem;\n border-radius: calc(0.5 * var(--lb-radius));\n }\n\n :where(.lb-attachment-name) {\n color: var(--lb-foreground-secondary);\n }\n\n :where(.lb-attachment-description) {\n color: var(--lb-foreground-tertiary);\n }\n\n &:where(:not([tabindex=\"-1\"])) {\n &:where(:hover, :focus-visible, :focus-within) {\n :where(.lb-attachment-name) {\n color: var(--lb-foreground);\n }\n\n :where(.lb-attachment-description) {\n color: var(--lb-foreground-secondary);\n }\n }\n }\n}\n\n.lb-media-attachment {\n aspect-ratio: 16 / 10;\n\n :where(.lb-attachment-preview) {\n position: absolute;\n inset: 0;\n border-radius: inherit;\n }\n\n :where(.lb-attachment-details) {\n position: absolute;\n inset-inline: 0;\n inset-block-end: 0;\n padding: calc(0.75 * var(--lb-spacing));\n border-end-start-radius: inherit;\n border-end-end-radius: inherit;\n background: linear-gradient(to bottom, transparent, rgba(0 0 0 / 80%));\n text-shadow: 0 0 2px rgba(0 0 0 / 40%);\n opacity: 0;\n transition-property: opacity;\n }\n\n :where(.lb-attachment-name) {\n color: #fff;\n }\n\n :where(.lb-attachment-description) {\n color: rgba(255 255 255 / 80%);\n }\n\n &:where(:not([tabindex=\"-1\"])) {\n &:where(:hover, :focus-visible, :focus-within) {\n :where(.lb-attachment-details) {\n opacity: 1;\n }\n }\n }\n}\n\n.lb-attachment:where([data-error]) {\n :where(.lb-attachment-preview) {\n background: var(--lb-destructive);\n color: var(--lb-destructive-foreground);\n }\n}\n\n/*************************************\n * Inbox Notification *\n *************************************/\n\n.lb-inbox-notification {\n --lb-inbox-notification-aside-size: 36px;\n\n position: relative;\n display: flex;\n gap: calc(0.75 * var(--lb-spacing));\n overflow: hidden;\n padding: var(--lb-spacing);\n background: var(--lb-dynamic-background);\n color: var(--lb-foreground);\n font-weight: 400;\n text-decoration: inherit;\n transition-property: background;\n\n /* Highlight missing notifications during development */\n &:where([data-missing]) {\n --lb-accent: var(--lb-destructive) !important;\n --lb-accent-foreground: var(--lb-destructive-foreground) !important;\n --lb-accent-contrast: var(--lb-destructive-contrast) !important;\n --lb-dynamic-background: var(--lb-background-accent-faint);\n }\n\n &:where([data-unread]) {\n --lb-dynamic-background: var(--lb-background-accent-faint);\n }\n\n &:where([href]) {\n cursor: pointer;\n\n &:where(:hover, :focus-visible, :focus-within) {\n --lb-dynamic-background: var(--lb-background-foreground-faint);\n }\n\n &:where([data-unread]) {\n &:where(:hover, :focus-visible, :focus-within) {\n --lb-dynamic-background: var(--lb-background-accent-subtle);\n }\n }\n }\n\n @media (hover: hover) {\n &:where(.lb-inbox-notification\\:show-actions-hover) {\n :where(.lb-inbox-notification-header) {\n display: grid;\n grid-template: \"title secondary\" / 1fr max-content;\n }\n\n :where(.lb-inbox-notification-details) {\n opacity: 1;\n transition-property: opacity;\n }\n\n :where(.lb-inbox-notification-actions) {\n opacity: 0;\n transition-property: opacity;\n }\n\n &:where(:is(:hover, :focus-within, .lb-inbox-notification\\:action-open)) {\n :where(.lb-inbox-notification-details) {\n opacity: 0;\n }\n\n :where(.lb-inbox-notification-actions) {\n opacity: 1;\n }\n }\n\n :where(.lb-inbox-notification-details),\n :where(.lb-inbox-notification-actions) {\n grid-area: secondary;\n justify-self: end;\n }\n }\n }\n}\n\n.lb-inbox-notification-aside {\n flex: none;\n inline-size: var(--lb-inbox-notification-aside-size);\n}\n\n.lb-inbox-notification-icon {\n display: flex;\n justify-content: center;\n place-items: center;\n aspect-ratio: 1;\n border-radius: 50%;\n background: var(--lb-foreground-subtle);\n\n .lb-inbox-notification:where([data-missing]) :where(&) {\n background: var(--lb-accent-subtle);\n color: var(--lb-accent);\n }\n}\n\n.lb-inbox-notification-content {\n flex: 1;\n}\n\n.lb-inbox-notification-content,\n.lb-inbox-notification-body {\n min-inline-size: 0;\n max-inline-size: 100%;\n}\n\n.lb-inbox-notification-header {\n display: flex;\n gap: calc(0.75 * var(--lb-spacing));\n align-items: center;\n margin-block-start: calc(0.25 * var(--lb-spacing));\n margin-block-end: calc(0.5 * var(--lb-spacing));\n}\n\n.lb-inbox-notification-title {\n min-block-size: $lb-button-size;\n\n :where(.lb-inbox-notification:not([data-inspector])) & {\n @include capitalize;\n }\n\n :where(strong, .lb-list, .lb-name) {\n font-weight: 500;\n }\n}\n\n.lb-inbox-notification-details {\n flex: none;\n align-self: start;\n min-inline-size: 0;\n block-size: $lb-button-size;\n margin-inline-start: auto;\n}\n\n.lb-inbox-notification-details-labels {\n display: flex;\n align-items: baseline;\n min-inline-size: 0;\n\n &::before {\n content: \"\\FEFF\";\n }\n}\n\n.lb-inbox-notification-actions {\n display: flex;\n grid-area: actions;\n gap: calc(0.125 * var(--lb-spacing));\n align-self: start;\n}\n\n.lb-inbox-notification-comments {\n display: flex;\n flex-direction: column;\n gap: var(--lb-spacing);\n}\n\n.lb-inbox-notification-comment {\n padding: 0;\n background: transparent;\n\n :where(.lb-comment-header) {\n block-size: auto;\n color: var(--lb-foreground-tertiary);\n font-size: 0.875rem;\n }\n\n :where(.lb-comment-reaction),\n :where(.lb-comment-attachment) {\n pointer-events: none;\n }\n}\n\n.lb-inbox-notification-date {\n color: var(--lb-foreground-tertiary);\n font-size: 0.875em;\n}\n\n.lb-inbox-notification-unread-indicator {\n align-self: center;\n inline-size: 10px;\n block-size: 10px;\n margin-inline-start: calc(0.5 * var(--lb-spacing));\n border-radius: 50%;\n background: var(--lb-accent);\n}\n\n/*************************************\n * History Version Summary *\n *************************************/\n\n.lb-history-version-summary {\n position: relative;\n display: flex;\n flex-direction: column;\n gap: calc(0.25 * var(--lb-spacing));\n justify-content: center;\n inline-size: 100%;\n min-inline-size: 0;\n padding: var(--lb-spacing);\n background: var(--lb-dynamic-background);\n transition-property: background;\n\n &:where(\n :hover,\n :focus-visible,\n :focus-within,\n [data-selected]:not([data-selected=\"false\"])\n ) {\n --lb-dynamic-background: var(--lb-background-foreground-faint);\n }\n}\n\n.lb-history-version-summary-date,\n.lb-history-version-summary-authors {\n @include truncate;\n @include capitalize;\n\n min-inline-size: 0;\n max-inline-size: 100%;\n}\n\n.lb-history-version-summary-date {\n color: var(--lb-foreground-secondary);\n font-weight: 500;\n}\n\n.lb-history-version-summary-authors {\n color: var(--lb-foreground-tertiary);\n}\n\n/*************************************\n * History Version Previe *\n *************************************/\n\n.lb-history-version-preview {\n position: relative;\n display: flex;\n flex-direction: column;\n background: var(--lb-dynamic-background);\n\n /* overflow-block: auto; doesn't work as expected */\n /* stylelint-disable-next-line plugin/use-logical-properties-and-values */\n overflow-y: auto;\n}\n\n.lb-history-version-preview-content {\n flex: 1 0 auto;\n padding: var(--lb-spacing);\n}\n\n.lb-history-version-preview-footer {\n position: sticky;\n inset-block-end: 0;\n display: flex;\n flex: none;\n gap: var(--lb-spacing);\n align-items: center;\n margin-block-start: auto;\n padding: var(--lb-spacing);\n border-block-start: 1px solid var(--lb-foreground-subtle);\n background: var(--lb-dynamic-background);\n}\n\n.lb-history-version-preview-authors {\n @include truncate;\n\n flex: 1 1 auto;\n min-inline-size: 0;\n color: var(--lb-foreground-tertiary);\n}\n\n.lb-history-version-preview-actions {\n display: flex;\n flex: none;\n gap: calc(0.35 * var(--lb-spacing));\n align-items: center;\n margin-inline-start: auto;\n}\n\n/*************************************\n * Lists *\n *************************************/\n\n.lb-inbox-notification-list,\n.lb-history-version-summary-list {\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n.lb-inbox-notification-list-item,\n.lb-history-version-summary-list-item {\n &:where(:not(:last-of-type)) {\n border-block-end: 1px solid var(--lb-foreground-subtle);\n }\n}\n\n/*************************************\n * Inline code *\n *************************************/\n\n:is(.lb-root) {\n :where(code:not(pre > code)) {\n padding: 0.2em 0.4em;\n border-radius: calc(0.75 * var(--lb-radius));\n background: var(--lb-foreground-subtle);\n box-decoration-break: clone;\n font-size: 85%;\n line-height: 1;\n }\n\n /**\n * Merge adjacent inline code elements\n */\n :where(span:has(code) + span code) {\n padding-inline-start: 0;\n border-start-start-radius: 0;\n border-end-start-radius: 0;\n }\n\n :where(span:has(code):has(+ span code) code) {\n padding-inline-end: 0;\n border-start-end-radius: 0;\n border-end-end-radius: 0;\n }\n}\n\n/* 0,0,0 specificity to inherit any styles applied to `code` elements */\n:where(:is(.lb-root) code) {\n font-family: ui-monospace, Menlo, Monaco, \"Roboto Mono\", \"Cascadia Code\",\n \"Source Code Pro\", Consolas, \"DejaVu Sans Mono\", monospace;\n}\n\n/*************************************\n * Elevation *\n *************************************/\n\n.lb-elevation {\n --lb-dynamic-background: var(--lb-background);\n\n position: relative;\n overflow: hidden;\n border-radius: var(--lb-radius);\n background: var(--lb-dynamic-background);\n box-shadow: var(--lb-elevation-shadow);\n\n &::after {\n content: \"\";\n position: absolute;\n inset: 0;\n z-index: 1;\n border-radius: inherit;\n box-shadow: var(--lb-inset-shadow);\n pointer-events: none;\n }\n\n &:where(.lb-elevation-moderate) {\n box-shadow: var(--lb-elevation-shadow-moderate);\n }\n}\n\n/*************************************\n * Elevation lists *\n *************************************/\n\n.lb-dropdown,\n.lb-composer-suggestions {\n padding: $lb-elevation-padding;\n\n /* overflow-block: auto; doesn't work as expected */\n /* stylelint-disable-next-line plugin/use-logical-properties-and-values */\n overflow-y: auto;\n\n &:where([data-hidden]) {\n opacity: 0;\n }\n}\n\n.lb-dropdown-item,\n.lb-composer-suggestions-list-item {\n display: flex;\n align-items: center;\n padding: calc(0.25 * var(--lb-spacing)) calc(0.5 * var(--lb-spacing));\n font-size: 0.875rem;\n}\n\n.lb-dropdown-item,\n.lb-composer-suggestions-list-item,\n.lb-emoji-picker-emoji {\n border-radius: calc(var(--lb-radius) - 0.75 * $lb-elevation-padding);\n color: var(--lb-foreground-secondary);\n outline: none;\n cursor: pointer;\n user-select: none;\n transition-property: background, color, opacity;\n}\n\n:is(\n .lb-dropdown-item,\n .lb-composer-suggestions-list-item,\n .lb-emoji-picker-emoji\n) {\n &:where(\n [data-highlighted]:not([data-highlighted=\"false\"]),\n [data-selected]:not([data-selected=\"false\"]),\n [data-active]:not([data-active=\"false\"])\n ) {\n background: var(--lb-foreground-subtle);\n transition-duration: calc(var(--lb-transition-duration) / 2);\n }\n\n &:where(:disabled, [data-disabled]:not([data-disabled=\"false\"])) {\n opacity: 0.5;\n cursor: not-allowed;\n }\n}\n\n/*************************************\n * Floating animations *\n *************************************/\n\n.lb-dropdown,\n.lb-composer-suggestions,\n.lb-composer-floating-toolbar,\n.lb-tooltip,\n.lb-emoji-picker {\n animation-duration: var(--lb-transition-duration);\n animation-timing-function: var(--lb-transition-easing);\n will-change: transform, opacity;\n}\n\n:is(\n .lb-dropdown,\n .lb-emoji-picker,\n .lb-tooltip:where([data-state=\"delayed-open\"]),\n .lb-composer-suggestions,\n .lb-composer-floating-toolbar\n) {\n &:where([data-side=\"top\"]) {\n animation-name: lb-animation-slide-up;\n }\n\n &:where([data-side=\"bottom\"]) {\n animation-name: lb-animation-slide-down;\n }\n}\n\n:is(\n .lb-dropdown,\n .lb-emoji-picker,\n .lb-tooltip,\n .lb-composer-suggestions,\n .lb-composer-floating-toolbar\n) {\n &:where([data-state=\"closed\"]) {\n animation-name: lb-animation-disappear;\n }\n}\n\n@media (prefers-reduced-motion) {\n .lb-dropdown:where(:not([data-state=\"closed\"])),\n .lb-emoji-picker:where(:not([data-state=\"closed\"])),\n .lb-tooltip:where([data-state=\"delayed-open\"]:not([data-state=\"closed\"])),\n .lb-composer-suggestions:where(:not([data-state=\"closed\"])) {\n animation-name: lb-animation-appear;\n }\n}\n\n/*************************************\n * Code block *\n *************************************/\n\n.lb-code-block {\n min-inline-size: 0;\n border: 1px solid var(--lb-foreground-subtle);\n border-radius: var(--lb-radius);\n\n :where(.lb-code-block-header) {\n display: flex;\n align-items: center;\n padding: calc(0.5 * var(--lb-spacing));\n }\n\n :where(.lb-code-block-title) {\n margin-inline-start: calc(0.5 * var(--lb-spacing));\n color: var(--lb-foreground-tertiary);\n font-weight: 600;\n font-size: 0.675em;\n text-transform: uppercase;\n }\n\n :where(.lb-code-block-header-actions) {\n margin-inline-start: auto;\n }\n\n :where(.lb-code-block-content) {\n min-inline-size: 0;\n margin: 0;\n padding: 0 var(--lb-spacing) calc(0.875 * var(--lb-spacing));\n font-size: 85%;\n line-height: var(--lb-line-height);\n\n /* overflow-inline: auto; doesn't work as expected */\n /* stylelint-disable-next-line plugin/use-logical-properties-and-values */\n overflow-x: auto;\n }\n}\n\n/*************************************\n * Chat Composer *\n *************************************/\n\n.lb-ai-chat-composer {\n position: relative;\n inline-size: 100%;\n color: var(--lb-foreground);\n}\n\n.lb-ai-chat-composer-form:where(\n :has(.lb-ai-chat-composer-editor:not(:focus-visible))\n ) {\n :where(.lb-button[data-variant=\"primary\"]) {\n --lb-button-background: var(--lb-foreground-subtle);\n\n color: var(--lb-foreground-tertiary);\n\n &:where(:enabled:hover, :enabled:focus-visible) {\n --lb-button-background: var(--lb-accent);\n\n color: var(--lb-accent-foreground);\n }\n }\n}\n\n.lb-ai-chat-composer-editor {\n max-block-size: 15rem;\n padding: var(--lb-spacing) var(--lb-spacing) 0;\n color: var(--lb-foreground-secondary);\n outline: none;\n resize: none;\n\n /* overflow-block: auto; doesn't work as expected */\n /* stylelint-disable-next-line plugin/use-logical-properties-and-values */\n overflow-y: auto;\n\n &,\n * {\n line-height: var(--lb-line-height);\n }\n\n :where(p) {\n --lb-line-height-crop: calc(1lh - 1em) / -2;\n\n margin-block-start: 0.25em;\n margin-block-end: 0.25em;\n\n /* Cancel out the impact of line-height on margins/paddings */\n &:where(:first-of-type) {\n margin-block-start: calc(0.125em + var(--lb-line-height-crop));\n }\n\n /* Cancel out the impact of line-height on margins/paddings */\n &:where(:last-of-type) {\n margin-block-end: calc(0.125em + var(--lb-line-height-crop));\n }\n }\n\n &:where([data-disabled]:not([data-disabled=\"false\"])) {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n :where([data-placeholder]) {\n color: var(--lb-foreground-moderate);\n }\n}\n\n.lb-ai-chat-composer-footer {\n display: flex;\n gap: calc(0.75 * var(--lb-spacing));\n align-items: center;\n margin-block-start: calc(-0.125 * var(--lb-spacing));\n padding: var(--lb-spacing);\n}\n\n.lb-ai-chat-composer-actions,\n.lb-ai-chat-composer-editor-actions {\n display: flex;\n gap: calc(0.125 * var(--lb-spacing));\n align-items: center;\n}\n\n.lb-ai-chat-composer-editor-actions {\n margin-inline-end: auto;\n}\n\n/*************************************\n * Chat message *\n *************************************/\n\n.lb-ai-chat-message {\n display: flex;\n flex-direction: column;\n gap: var(--lb-spacing);\n color: var(--lb-foreground);\n scroll-margin-block-start: calc(1.5 * var(--lb-spacing));\n}\n\n.lb-ai-chat-user-message {\n :where(.lb-ai-chat-message-content) {\n min-block-size: calc(1lh + var(--lb-spacing));\n padding: calc(0.5 * var(--lb-spacing)) var(--lb-spacing);\n\n /**\n * Exactly half the height (line-height + padding) of a one line bubble,\n * so that it doesn't change when the text wraps and the bubble becomes taller.\n */\n border-radius: calc((1lh + var(--lb-spacing)) / 2);\n background: var(--lb-background-foreground-faint);\n color: var(--lb-foreground);\n line-height: var(--lb-line-height);\n }\n}\n\n.lb-ai-chat-message-deleted {\n position: relative;\n align-items: center;\n inline-size: 100%;\n color: var(--lb-foreground-moderate);\n font-size: 0.875em;\n text-wrap: pretty;\n}\n\n.lb-ai-chat-message-error {\n display: flex;\n gap: calc(0.5 * var(--lb-spacing));\n align-items: flex-start;\n inline-size: 100%;\n color: var(--lb-destructive);\n font-size: 0.875em;\n line-height: var(--lb-line-height);\n text-wrap: pretty;\n word-break: break-word;\n\n :where(.lb-icon-container) {\n block-size: 1lh;\n color: var(--lb-destructive-secondary);\n }\n\n :where(code:not(pre > code)) {\n background: var(--lb-destructive-subtle);\n }\n}\n\n.lb-ai-chat-message-content {\n inline-size: 100%;\n white-space: break-spaces;\n\n &:where(:empty) {\n display: contents;\n }\n\n > :where(.lb-ai-chat-message-text) {\n margin-block: var(--lb-spacing);\n }\n\n > :where(.lb-ai-chat-message-tool-invocation) {\n margin-block: var(--lb-spacing);\n }\n\n > :where(:first-child) {\n margin-block-start: 0;\n }\n\n > :where(:last-child) {\n margin-block-end: 0;\n }\n}\n\n.lb-ai-chat-messages {\n display: flex;\n flex-direction: column;\n gap: calc(1.5 * var(--lb-spacing));\n inline-size: 100%;\n max-inline-size: min(\n calc(var(--lb-ai-chat-container-width) - var(--lb-spacing)),\n calc(100% - 3 * var(--lb-spacing))\n );\n margin-inline: auto;\n padding-block-start: calc(1.5 * var(--lb-spacing));\n padding-block-end: calc(3 * var(--lb-spacing));\n\n :where(.lb-ai-chat-user-message) {\n max-inline-size: 80%;\n margin-inline-start: auto;\n }\n}\n\n.lb-ai-chat-footer {\n position: relative;\n display: flex;\n flex-direction: column;\n gap: calc(0.75 * var(--lb-spacing));\n inline-size: 100%;\n}\n\n.lb-ai-chat {\n --lb-ai-chat-container-width: 100%;\n\n display: flex;\n flex-direction: column;\n inline-size: 100%;\n block-size: 100%;\n background: var(--lb-background);\n isolation: isolate;\n\n /* overflow-block: auto; doesn't work as expected */\n /* stylelint-disable-next-line plugin/use-logical-properties-and-values */\n overflow-y: auto;\n\n :where(.lb-ai-chat-footer) {\n position: sticky;\n inset-block-end: 0;\n z-index: 1;\n margin-block-start: auto;\n }\n\n :where(.lb-ai-chat-composer) {\n margin-inline: auto;\n }\n}\n\n.lb-ai-chat:where(.lb-ai-chat\\:layout-compact) {\n :where(.lb-ai-chat-footer) {\n background: var(--lb-dynamic-background);\n\n &::after {\n content: \"\";\n position: absolute;\n inset: 0;\n border-block-start: 1px solid var(--lb-foreground-subtle);\n pointer-events: none;\n }\n }\n\n :where(.lb-ai-chat-composer) {\n max-inline-size: min(\n 100%,\n calc(var(--lb-ai-chat-container-width) + var(--lb-spacing))\n );\n }\n}\n\n.lb-ai-chat:where(.lb-ai-chat\\:layout-inset) {\n :where(.lb-ai-chat-footer) {\n padding: var(--lb-spacing);\n padding-block-start: 0;\n\n &::before {\n content: \"\";\n position: absolute;\n inset: 0;\n inset-block-start: calc(-3 * var(--lb-spacing));\n background: linear-gradient(\n to bottom,\n transparent 0%,\n var(--lb-background) calc(3.5 * var(--lb-spacing))\n );\n pointer-events: none;\n }\n }\n\n :where(.lb-ai-chat-composer) {\n max-inline-size: var(--lb-ai-chat-container-width);\n border-radius: calc(2 * var(--lb-radius));\n }\n}\n\n.lb-ai-chat-content {\n position: relative;\n flex: 1 0 auto;\n}\n\n.lb-ai-chat-footer-actions {\n position: absolute;\n inset-inline: 0;\n inset-block-start: calc(-1 * var(--lb-spacing));\n display: flex;\n justify-content: center;\n pointer-events: none;\n transform: translateY(-100%);\n}\n\n.lb-ai-chat-scroll-indicator {\n border-radius: $lb-radius-full;\n color: var(--lb-foreground-moderate);\n opacity: 0;\n pointer-events: none;\n transition-property: transform, opacity, background;\n transform: scale(0.8);\n transform-origin: bottom;\n\n &:where([data-visible]) {\n opacity: 1;\n pointer-events: all;\n transform: scale(1);\n }\n}\n\n.lb-ai-chat-scroll-indicator-button {\n @include button-base;\n\n padding: calc(0.375 * var(--lb-spacing));\n border-radius: $lb-radius-full;\n color: var(--lb-foreground-moderate);\n transition-property: opacity, color;\n\n &:where(:hover, :focus-visible) {\n color: var(--lb-foreground-secondary);\n }\n\n &::after {\n content: \"\";\n position: absolute;\n inset: 0;\n border-radius: inherit;\n pointer-events: none;\n transition-property: box-shadow;\n }\n\n &:where(:focus-visible)::after {\n box-shadow: inset var(--lb-accent) 0 0 0 2px;\n }\n}\n\n.lb-ai-chat-pending {\n user-select: none;\n animation: lb-animation-shimmer-small 5s linear infinite;\n}\n\n.lb-ai-chat-message-thinking,\n.lb-ai-chat-message-reasoning {\n inline-size: fit-content;\n max-inline-size: 100%;\n color: var(--lb-foreground-tertiary);\n\n &:where(.lb-ai-chat-pending),\n :where(.lb-ai-chat-pending) {\n color: var(--lb-foreground);\n }\n}\n\n.lb-ai-chat-message-reasoning {\n margin-block-end: calc(0.75 * var(--lb-spacing));\n\n :where(.lb-collapsible-trigger) {\n display: flex;\n gap: calc(0.25 * var(--lb-spacing));\n align-items: center;\n\n &:where(:focus-visible) {\n color: var(--lb-accent);\n\n :where(.lb-collapsible-chevron) {\n color: var(--lb-accent-moderate);\n }\n }\n }\n\n :where(.lb-collapsible-content) {\n display: flex;\n flex-direction: column;\n gap: calc(0.5 * var(--lb-spacing));\n line-height: var(--lb-line-height);\n\n :where(& > *:first-child) {\n margin-block-start: calc(0.5 * var(--lb-spacing));\n }\n }\n\n :where(.lb-prose) {\n color: var(--lb-foreground);\n font-size: 0.875em;\n opacity: 0.75;\n }\n}\n\n.lb-ai-tool {\n position: relative;\n border-radius: var(--lb-radius);\n box-shadow: inset 0 0 0 1px var(--lb-foreground-subtle);\n\n &::after {\n content: \"\";\n position: absolute;\n inset: 0;\n border-radius: inherit;\n pointer-events: none;\n transition-property: box-shadow;\n }\n\n &:where(:has(.lb-ai-tool-header:focus-visible)) {\n z-index: 1;\n\n &::after {\n box-shadow:\n var(--lb-dynamic-background) 0 0 0 2px,\n var(--lb-accent) 0 0 0 4px;\n }\n }\n}\n\n.lb-ai-tool-header {\n display: flex;\n gap: calc(0.3125 * var(--lb-spacing));\n align-items: center;\n inline-size: 100%;\n block-size: calc($lb-button-size + var(--lb-spacing));\n padding-inline: calc(0.5 * var(--lb-spacing));\n}\n\n.lb-ai-tool-header-icon-container,\n.lb-ai-tool-icon {\n display: flex;\n flex: none;\n justify-content: center;\n align-items: center;\n inline-size: $lb-button-size;\n block-size: $lb-button-size;\n}\n\n.lb-ai-tool-header-icon-container {\n color: var(--lb-foreground-moderate);\n\n &:where(:has(.lb-ai-tool-icon)) {\n margin-inline-end: calc(0.25 * var(--lb-spacing));\n }\n}\n\n.lb-ai-tool-icon {\n border-radius: calc(0.75 * var(--lb-radius));\n background: var(--lb-foreground-subtle);\n font-size: 0.875em;\n}\n\n.lb-ai-tool-header-title {\n @include truncate;\n\n margin-inline-end: calc(0.25 * var(--lb-spacing));\n color: var(--lb-foreground-secondary);\n font-size: 0.9375em;\n\n &:where(:first-child) {\n margin-inline-start: calc(0.3125 * var(--lb-spacing));\n }\n}\n\n.lb-ai-tool-header-status {\n flex: none;\n margin-inline-start: auto;\n margin-inline-end: calc(0.1875 * var(--lb-spacing));\n color: var(--lb-foreground-moderate);\n}\n\n.lb-ai-tool:where([data-result=\"error\"]) {\n box-shadow: inset 0 0 0 1px var(--lb-destructive-moderate);\n\n &:where(:has(.lb-ai-tool-header:focus-visible)) {\n &::after {\n box-shadow:\n var(--lb-dynamic-background) 0 0 0 2px,\n var(--lb-destructive) 0 0 0 4px;\n }\n }\n\n :where(.lb-ai-tool-header-status) {\n color: var(--lb-destructive);\n }\n}\n\n.lb-ai-tool-content:where(:not(:empty)) {\n padding: 0 calc(0.75 * var(--lb-spacing)) calc(0.75 * var(--lb-spacing));\n}\n\n.lb-ai-tool-inspector {\n display: flex;\n flex-direction: column;\n gap: calc(0.75 * var(--lb-spacing));\n}\n\n.lb-ai-tool-confirmation-footer {\n display: flex;\n align-items: center;\n margin-block-start: calc(0.75 * var(--lb-spacing));\n}\n\n.lb-ai-tool-confirmation-actions {\n display: flex;\n gap: calc(0.75 * var(--lb-spacing));\n justify-content: flex-end;\n align-items: center;\n margin-inline-start: auto;\n}\n\n/*************************************\n * Animations *\n *************************************/\n\n@keyframes lb-animation-slide-down {\n from {\n opacity: 0;\n transform: translateY(-4px);\n }\n\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes lb-animation-slide-up {\n from {\n opacity: 0;\n transform: translateY(4px);\n }\n\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes lb-animation-appear {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n@keyframes lb-animation-disappear {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n}\n\n@keyframes lb-animation-shimmer {\n from,\n to {\n mask-image: linear-gradient(\n 90deg,\n rgb(0 0 0 / 50%),\n #000,\n #000,\n rgb(0 0 0 / 50%)\n );\n mask-size: 400% 100%;\n }\n\n from {\n mask-position: 200% 0;\n }\n\n to {\n mask-position: -200% 0;\n }\n}\n\n@keyframes lb-animation-shimmer-small {\n from,\n to {\n mask-image: linear-gradient(\n 90deg,\n #000 0%,\n rgb(0 0 0 / 50%) 18%,\n rgb(0 0 0 / 50%) 82%,\n #000 100%\n );\n mask-size: 300% 100%;\n }\n\n from {\n mask-position: 200% 0;\n }\n\n to {\n mask-position: -100% 0;\n }\n}\n\n@keyframes lb-animation-spin {\n from {\n transform: rotate(0deg);\n }\n\n to {\n transform: rotate(360deg);\n }\n}\n","/* Because of `all: unset`, we have to re-define some of these values. */\n@mixin button-base {\n all: unset;\n position: relative;\n box-sizing: inherit;\n outline: none;\n cursor: pointer;\n user-select: none;\n transition-timing-function: var(--lb-transition-easing);\n transition-duration: var(--lb-transition-duration);\n -webkit-tap-highlight-color: transparent;\n}\n\n@mixin button {\n @include button-base;\n\n transition-property: background, color, opacity;\n\n &::after {\n content: \"\";\n position: absolute;\n inset: 0;\n border-radius: inherit;\n pointer-events: none;\n transition-property: box-shadow;\n }\n\n &:where(:focus-visible) {\n z-index: 1;\n\n &::after {\n box-shadow:\n var(--lb-dynamic-background) 0 0 0 2px,\n var(--lb-accent) 0 0 0 4px;\n }\n }\n}\n\n@mixin truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n@mixin capitalize {\n &::first-letter {\n text-transform: capitalize;\n }\n}\n\n@mixin invisible-selection {\n &::selection,\n *::selection {\n background: transparent;\n }\n}\n\n@mixin invisible-scrollbar {\n & {\n -ms-overflow-style: none;\n scrollbar-width: none;\n }\n\n &::-webkit-scrollbar {\n display: none;\n }\n}\n\n@mixin firefox-only {\n @supports (-moz-appearance: none) {\n @content;\n }\n}\n\n@mixin not-firefox {\n @supports not (-moz-appearance: none) {\n @content;\n }\n}\n\n@mixin safari-only {\n @supports (background: -webkit-named-image(i)) {\n @content;\n }\n}\n\n@mixin not-safari {\n @supports not (background: -webkit-named-image(i)) {\n @content;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["src/styles/src/styles/index.css","src/styles/src/styles/utils.css"],"names":[],"mappings":"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","file":"styles.css","sourcesContent":["@import \"./utils\";\n@import \"./constants\";\n\n.lb-root {\n /**\n * Basic\n */\n --lb-radius: 0.5em;\n --lb-spacing: 1em;\n --lb-accent: #17f;\n --lb-accent-foreground: #fff;\n --lb-destructive: #f45;\n --lb-destructive-foreground: #fff;\n --lb-background: #fff;\n --lb-foreground: #111;\n\n /**\n * Advanced\n */\n --lb-line-height: 1.5;\n --lb-icon-size: 20px;\n --lb-icon-weight: 1.5px;\n --lb-avatar-radius: 50%;\n --lb-button-radius: calc(0.75 * var(--lb-radius));\n --lb-transition-duration: 0.1s;\n --lb-transition-easing: cubic-bezier(0.4, 0, 0.2, 1);\n --lb-highlight-shadow: inset 0 0 0 1px rgb(0 0 0 / 10%);\n --lb-elevation-shadow: $lb-elevation-shadow;\n --lb-elevation-shadow-moderate: $lb-elevation-shadow-moderate;\n --lb-tooltip-shadow: $lb-tooltip-shadow;\n --lb-accent-contrast: 8%;\n --lb-destructive-contrast: 8%;\n --lb-foreground-contrast: 8%;\n\n /**\n * Colors\n */\n --lb-background-foreground-faint: color-mix-scale(\n var(--lb-background),\n var(--lb-foreground),\n var(--lb-foreground-contrast),\n 50\n );\n --lb-background-accent-faint: color-mix-scale(\n var(--lb-background),\n var(--lb-accent),\n var(--lb-accent-contrast),\n 50\n );\n --lb-background-accent-subtle: color-mix-scale(\n var(--lb-background),\n var(--lb-accent),\n var(--lb-accent-contrast),\n 100\n );\n --lb-background-destructive-faint: color-mix-scale(\n var(--lb-background),\n var(--lb-destructive),\n var(--lb-destructive-contrast),\n 50\n );\n --lb-background-destructive-subtle: color-mix-scale(\n var(--lb-background),\n var(--lb-destructive),\n var(--lb-destructive-contrast),\n 100\n );\n --lb-accent-subtle: color-mix-scale(\n var(--lb-dynamic-background),\n var(--lb-accent),\n var(--lb-accent-contrast),\n 100\n );\n --lb-accent-moderate: color-mix-scale(\n var(--lb-dynamic-background),\n var(--lb-accent),\n var(--lb-accent-contrast),\n 400\n );\n --lb-accent-tertiary: color-mix-scale(\n var(--lb-dynamic-background),\n var(--lb-accent),\n var(--lb-accent-contrast),\n 600\n );\n --lb-accent-secondary: color-mix-scale(\n var(--lb-dynamic-background),\n var(--lb-accent),\n var(--lb-accent-contrast),\n 800\n );\n --lb-destructive-subtle: color-mix-scale(\n var(--lb-dynamic-background),\n var(--lb-destructive),\n var(--lb-destructive-contrast),\n 100\n );\n --lb-destructive-moderate: color-mix-scale(\n var(--lb-dynamic-background),\n var(--lb-destructive),\n var(--lb-destructive-contrast),\n 400\n );\n --lb-destructive-tertiary: color-mix-scale(\n var(--lb-dynamic-background),\n var(--lb-destructive),\n var(--lb-destructive-contrast),\n 600\n );\n --lb-destructive-secondary: color-mix-scale(\n var(--lb-dynamic-background),\n var(--lb-destructive),\n var(--lb-destructive-contrast),\n 800\n );\n --lb-foreground-subtle: color-mix-scale(\n var(--lb-dynamic-background),\n var(--lb-foreground),\n var(--lb-foreground-contrast),\n 100\n );\n --lb-foreground-moderate: color-mix-scale(\n var(--lb-dynamic-background),\n var(--lb-foreground),\n var(--lb-foreground-contrast),\n 400\n );\n --lb-foreground-tertiary: color-mix-scale(\n var(--lb-dynamic-background),\n var(--lb-foreground),\n var(--lb-foreground-contrast),\n 600\n );\n --lb-foreground-secondary: color-mix-scale(\n var(--lb-dynamic-background),\n var(--lb-foreground),\n var(--lb-foreground-contrast),\n 800\n );\n --lb-selection: color-mix(in srgb, var(--lb-accent) 40%, transparent);\n\n overflow-wrap: break-word;\n accent-color: var(--lb-accent);\n text-size-adjust: none;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n\n &,\n *,\n ::before,\n ::after {\n box-sizing: border-box;\n transition: none var(--lb-transition-duration) var(--lb-transition-easing);\n }\n\n /* Define some variables only on first .lb-root instances */\n &:where(:not(& &)) {\n --lb-dynamic-background: var(--lb-background);\n }\n}\n\n/*************************************\n * States *\n *************************************/\n\n.lb-loading,\n.lb-empty,\n.lb-error {\n position: absolute;\n inset: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.lb-loading {\n color: var(--lb-foreground-moderate);\n}\n\n.lb-empty,\n.lb-error {\n padding: var(--lb-spacing);\n color: var(--lb-foreground-tertiary);\n font-size: 0.875em;\n text-align: center;\n text-wrap: balance;\n}\n\n/*************************************\n * Icon *\n *************************************/\n\n.lb-icon-container,\n.lb-icon {\n inline-size: var(--lb-icon-size);\n block-size: var(--lb-icon-size);\n}\n\n.lb-icon-container {\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.lb-icon {\n --lb-icon-background: var(--lb-dynamic-background);\n\n * {\n stroke-width: var(--lb-icon-weight);\n vector-effect: non-scaling-stroke;\n }\n}\n\n.lb-icon-spinner {\n transform-origin: center;\n animation: lb-animation-spin 0.75s linear infinite;\n}\n\n/*************************************\n * Button *\n *************************************/\n\n.lb-button {\n --lb-button-background: var(--lb-dynamic-background);\n\n @include button;\n\n display: flex;\n justify-content: center;\n align-items: center;\n padding: calc(0.25 * var(--lb-spacing));\n border-radius: var(--lb-button-radius);\n background: var(--lb-button-background);\n color: var(--lb-foreground-moderate);\n\n &:where(.lb-button\\:non-disableable:disabled) {\n cursor: default;\n }\n\n &:where(:not(.lb-button\\:non-disableable):disabled) {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n &:where(\n :enabled:hover,\n :enabled:focus-visible,\n [aria-expanded=\"true\"],\n [aria-selected=\"true\"]\n ) {\n --lb-button-background: var(--lb-foreground-subtle);\n\n color: var(--lb-foreground-tertiary);\n }\n\n &:where(\n [data-variant=\"default\"]:not(\n :is(\n :enabled:hover,\n :enabled:focus-visible,\n [aria-expanded=\"true\"],\n [aria-selected=\"true\"],\n [aria-pressed]\n )\n )\n ) {\n background: transparent;\n }\n\n &:where([data-variant=\"primary\"]) {\n --lb-button-background: var(--lb-accent);\n\n color: var(--lb-accent-foreground);\n\n &:where(\n :enabled:hover,\n :enabled:focus-visible,\n [aria-expanded=\"true\"],\n [aria-selected=\"true\"]\n ) {\n --lb-button-background: var(--lb-accent-secondary);\n\n color: var(--lb-accent-foreground);\n }\n }\n\n &:where([data-variant=\"destructive\"]) {\n --lb-button-background: var(--lb-destructive);\n\n color: var(--lb-destructive-foreground);\n\n &:where(\n :enabled:hover,\n :enabled:focus-visible,\n [aria-expanded=\"true\"],\n [aria-selected=\"true\"]\n ) {\n --lb-button-background: var(--lb-destructive-secondary);\n\n color: var(--lb-destructive-foreground);\n }\n }\n\n &:where([data-variant=\"outline\"]) {\n box-shadow: inset 0 0 0 1px var(--lb-foreground-subtle);\n transition-property: background, color, opacity, box-shadow;\n }\n\n &:where([data-variant=\"ghost\"]) {\n background: transparent;\n }\n\n &:where(:has(.lb-button-label)) {\n gap: calc(0.175 * var(--lb-spacing));\n padding-inline: calc(0.55 * var(--lb-spacing));\n\n &:where(:has(.lb-icon-container)) {\n padding-inline-start: calc(0.4 * var(--lb-spacing));\n }\n }\n\n &:where([data-variant=\"toolbar\"]) {\n color: var(--lb-foreground-tertiary);\n\n &:where([aria-pressed=\"true\"]) {\n --lb-button-background: var(--lb-foreground-subtle);\n\n color: var(--lb-foreground-secondary);\n\n :where(.lb-icon *) {\n stroke-width: calc(1.25 * var(--lb-icon-weight));\n }\n }\n }\n\n &:where([data-variant=\"secondary\"]) {\n --lb-button-background: var(--lb-foreground-subtle);\n\n color: var(--lb-foreground-tertiary);\n\n &:where(\n :enabled:hover,\n :enabled:focus-visible,\n [aria-expanded=\"true\"],\n [aria-selected=\"true\"]\n ) {\n --lb-button-background: var(--lb-foreground);\n\n color: var(--lb-dynamic-background);\n }\n }\n\n &:where([data-size=\"large\"]) {\n padding: calc(0.5 * var(--lb-spacing));\n\n &:where(:has(.lb-button-label)) {\n gap: calc(0.35 * var(--lb-spacing));\n padding-inline: calc(0.7 * var(--lb-spacing));\n\n &:where(:has(.lb-icon-container)) {\n padding-inline-start: calc(0.6 * var(--lb-spacing));\n }\n }\n }\n\n :where(.lb-icon-container) {\n flex: none;\n }\n\n :where(.lb-icon) {\n --lb-icon-background: var(--lb-button-background);\n }\n}\n\n.lb-button-label {\n display: inline-flex;\n flex: none;\n align-items: center;\n block-size: var(--lb-icon-size);\n font-weight: 500;\n font-size: calc(0.7 * var(--lb-icon-size));\n line-height: 1;\n}\n\n/*************************************\n * Dropdown *\n *************************************/\n\n.lb-dropdown {\n min-inline-size: 160px;\n}\n\n.lb-dropdown-label {\n padding: calc(0.875 * var(--lb-spacing)) calc(0.625 * var(--lb-spacing))\n calc(0.125 * var(--lb-spacing));\n color: var(--lb-foreground-tertiary);\n font-weight: 600;\n font-size: 0.675em;\n text-transform: uppercase;\n pointer-events: none;\n user-select: none;\n\n &:where(:first-child) {\n padding-block-start: var(--lb-spacing);\n }\n}\n\n.lb-dropdown-separator {\n block-size: 1px;\n margin: $lb-elevation-padding calc(-1 * $lb-elevation-padding);\n background: var(--lb-foreground-subtle);\n}\n\n.lb-dropdown-item {\n :where(.lb-icon-container) {\n margin-inline-start: calc(-0.125 * var(--lb-spacing));\n margin-inline-end: calc(0.375 * var(--lb-spacing));\n color: var(--lb-foreground-moderate);\n transition-property: color;\n }\n}\n\n.lb-dropdown-item:where(\n :is(\n [data-highlighted]:not([data-highlighted=\"false\"]),\n [data-selected]:not([data-selected=\"false\"]),\n [data-active]:not([data-active=\"false\"])\n )\n ) {\n :where(.lb-icon-container) {\n color: var(--lb-foreground-tertiary);\n }\n}\n\n.lb-dropdown-item:where(:has(.lb-dropdown-item-accessory)) {\n :where(.lb-dropdown-item-label) {\n margin-inline-end: calc(0.375 * var(--lb-spacing));\n }\n}\n\n.lb-dropdown-item-accessory {\n margin-inline-start: auto;\n margin-inline-end: calc(-0.25 * var(--lb-spacing));\n}\n\n/* If a dropdown has at least one icon, all items should be aligned has if they had an icon */\n.lb-dropdown:where(:has(.lb-dropdown-item-icon))\n :where(.lb-dropdown-item:not(:has(.lb-dropdown-item-icon)))\n :where(.lb-dropdown-item-label) {\n margin-inline-start: calc(\n var(--lb-icon-size) + (0.375 - 0.125) * var(--lb-spacing)\n );\n}\n\n/*************************************\n * Select *\n *************************************/\n\n.lb-select-button {\n min-inline-size: 0;\n\n :where(.lb-button-label) {\n @include truncate;\n\n flex: 1;\n }\n}\n\n.lb-select-button-chevron {\n flex: none;\n margin-inline-end: calc(-0.25 * var(--lb-spacing));\n opacity: 0.75;\n}\n\n/*************************************\n * Collapsible *\n *************************************/\n\n.lb-collapsible-trigger {\n all: unset;\n position: relative;\n box-sizing: inherit;\n user-select: none;\n transition-timing-function: var(--lb-transition-easing);\n transition-duration: var(--lb-transition-duration);\n transition-property: color, background, opacity;\n -webkit-tap-highlight-color: transparent;\n\n &:where(:not([data-disabled])) {\n cursor: pointer;\n }\n}\n\n.lb-collapsible-chevron {\n inline-size: calc(0.8 * var(--lb-icon-size));\n block-size: calc(0.8 * var(--lb-icon-size));\n margin-inline-start: -1px;\n margin-block-start: 1px;\n color: var(--lb-foreground-moderate);\n}\n\n@media (prefers-reduced-motion: no-preference) {\n @supports (interpolate-size: allow-keywords) {\n .lb-collapsible-content {\n block-size: 0;\n opacity: 0;\n transition-duration: calc(3 * var(--lb-transition-duration));\n transition-property: block-size, opacity, content-visibility;\n\n /* overflow-block: clip; doesn't work as expected */\n /* stylelint-disable-next-line plugin/use-logical-properties-and-values */\n overflow-y: clip;\n\n /* interpolate-size is a new-ish property */\n /* stylelint-disable-next-line */\n interpolate-size: allow-keywords;\n\n /* transition-behavior is a new-ish property */\n /* stylelint-disable-next-line */\n transition-behavior: allow-discrete;\n\n &:where([data-state=\"open\"]) {\n block-size: auto;\n opacity: 1;\n\n /* overflow-block: auto; doesn't work as expected */\n /* stylelint-disable-next-line plugin/use-logical-properties-and-values */\n overflow-y: auto;\n }\n }\n }\n\n .lb-collapsible-chevron {\n transition-property: transform;\n\n .lb-collapsible:where([data-state=\"open\"]) :where(&) {\n transform: rotate(90deg);\n }\n }\n}\n\n/* Fix default browser styles when `hidden=\"until-found\"` isn't supported. */\n.lb-collapsible-content:where([hidden]:not([hidden=\"until-found\"])) {\n display: none !important;\n}\n\n/*************************************\n * Prose *\n *************************************/\n\n.lb-prose {\n &,\n * {\n line-height: var(--lb-line-height);\n }\n\n :where(p) {\n margin-block: 0.75em;\n }\n\n :where(p, li) {\n text-wrap: pretty;\n }\n\n :where(h1, h2, h3, h4, h5, h6) {\n margin-block-start: 1.5em;\n margin-block-end: 0.375em;\n font-weight: 600;\n text-wrap: balance;\n }\n\n :where(h1) {\n font-size: 1.75em;\n line-height: calc(0.8 * var(--lb-line-height));\n }\n\n :where(h2) {\n font-size: 1.5em;\n line-height: calc(0.86 * var(--lb-line-height));\n }\n\n :where(h3) {\n font-size: 1.25em;\n line-height: calc(0.92 * var(--lb-line-height));\n }\n\n :where(h4) {\n font-size: 1.125em;\n line-height: calc(0.98 * var(--lb-line-height));\n }\n\n :where(h5) {\n font-size: 1em;\n }\n\n :where(h6) {\n font-size: 0.875em;\n }\n\n :where(hr) {\n margin-block: 1.5em;\n border: none;\n border-block-start: 1px solid var(--lb-foreground-subtle);\n }\n\n :where(ol, ul) {\n display: flex;\n flex-direction: column;\n gap: 0.25em;\n margin-block: 0.75em;\n padding-inline-start: 1.125em;\n list-style-position: outside;\n\n :where(ol, ul) {\n margin-block: 0;\n }\n }\n\n :where(ul) {\n list-style-type: disc;\n }\n\n :where(ol) {\n list-style-type: decimal;\n }\n\n :where(li) {\n margin-block: 0;\n\n > :where(ol, ul) {\n margin-block-start: 0.25em;\n }\n\n > :where(p) {\n margin-block: 0.25em;\n }\n\n > :where(p:first-child) {\n margin-block-start: 0;\n }\n\n > :where(p:last-child) {\n margin-block-end: 0;\n }\n }\n\n :where(a) {\n color: var(--lb-foreground);\n outline: none;\n font-weight: 500;\n transition-property: color, text-decoration-color;\n text-decoration-line: underline;\n text-decoration-color: var(--lb-foreground-moderate);\n text-underline-offset: 2px;\n\n &:where([href]):where(:hover, :focus-visible) {\n color: var(--lb-accent);\n text-decoration-color: var(--lb-accent-moderate);\n }\n }\n\n :where(strong) {\n font-weight: 600;\n }\n\n :where(table) {\n inline-size: 100%;\n min-inline-size: 0;\n margin-block: 1em;\n border-collapse: collapse;\n table-layout: auto;\n word-break: break-word;\n }\n\n :where(thead) {\n border-block-end: 2px solid var(--lb-foreground-subtle);\n\n :where(th) {\n vertical-align: bottom;\n }\n }\n\n :where(tbody) {\n :where(td) {\n vertical-align: baseline;\n }\n\n :where(tr:not(:last-child)) {\n border-block-end: 1px solid var(--lb-foreground-subtle);\n }\n }\n\n :where(tfoot) {\n border-block-start: 2px solid var(--lb-foreground-subtle);\n\n :where(td) {\n vertical-align: top;\n }\n }\n\n :where(th, td) {\n padding-inline: 0.75em;\n padding-block: 0.5em;\n text-align: start;\n\n &:where(:first-child) {\n padding-inline-start: 0;\n }\n\n &:where(:last-child) {\n padding-inline-end: 0;\n }\n }\n\n :where(.lb-code-block) {\n margin-block: 1em;\n }\n\n :where(blockquote) {\n position: relative;\n margin-inline: 0;\n margin-block: 0.75em;\n padding: 0;\n padding-inline-start: 1.25em;\n\n &::after {\n content: \"\";\n position: absolute;\n inset-inline-start: 0;\n inset-block-start: 0;\n inline-size: 4px;\n block-size: 100%;\n border-radius: calc(0.5 * var(--lb-radius));\n background: var(--lb-foreground-subtle);\n }\n\n &:where(& + &) {\n margin-block-start: 1em;\n }\n\n > :where(:first-child) {\n margin-block-start: 0;\n }\n\n > :where(:last-child) {\n margin-block-end: 0;\n }\n }\n\n > :where(:first-child) {\n margin-block-start: 0;\n }\n\n > :where(:last-child) {\n margin-block-end: 0;\n }\n}\n\n/*************************************\n * Composer suggestions *\n *************************************/\n\n.lb-composer-suggestions-list {\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n.lb-composer-suggestions-list-item {\n scroll-margin-block: $lb-elevation-padding;\n}\n\n/*************************************\n * Composer mention suggestions *\n *************************************/\n\n.lb-composer-mention-suggestions {\n --lb-composer-mention-suggestion-avatar-size: 1.25rem;\n}\n\n.lb-composer-mention-suggestion {\n padding: calc(0.375 * var(--lb-spacing)) calc(0.625 * var(--lb-spacing));\n}\n\n.lb-composer-mention-suggestion-avatar {\n inline-size: var(--lb-composer-mention-suggestion-avatar-size);\n margin-inline-start: calc(-0.125 * var(--lb-spacing));\n margin-inline-end: calc(0.5 * var(--lb-spacing));\n margin-block: calc(0.125 * var(--lb-spacing));\n background: var(--lb-foreground-subtle);\n color: var(--lb-foreground-moderate);\n}\n\n/*************************************\n * List *\n *************************************/\n\n.lb-list {\n display: contents;\n\n :where(:first-child) {\n @include capitalize;\n }\n}\n\n/*************************************\n * Date *\n *************************************/\n\n.lb-date {\n @include capitalize;\n}\n\n/*************************************\n * Emoji *\n *************************************/\n\n.lb-emoji {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n inline-size: 1em;\n white-space: nowrap;\n}\n\n@include safari-only {\n .lb-emoji {\n transform: scale(0.825);\n will-change: transform;\n }\n}\n\n/*************************************\n * Emoji picker *\n *************************************/\n\n.lb-emoji-picker {\n --lb-emoji-picker-padding: $lb-emoji-picker-padding;\n --lb-emoji-picker-offset-padding: calc(\n $lb-emoji-picker-padding + 0.375 * var(--lb-spacing)\n );\n\n display: flex;\n flex-direction: column;\n inline-size: 100%;\n max-inline-size: var(--frimousse-viewport-width);\n block-size: 374px;\n color: var(--lb-foreground);\n}\n\n.lb-emoji-picker-header {\n flex: none;\n border-block-end: 1px solid var(--lb-foreground-subtle);\n}\n\n.lb-emoji-picker-footer {\n display: flex;\n flex: none;\n gap: calc(0.5 * var(--lb-spacing));\n align-items: center;\n inline-size: 100%;\n padding: calc(0.5 * var(--lb-spacing));\n border-block-start: 1px solid var(--lb-foreground-subtle);\n}\n\n.lb-emoji-picker-active-emoji {\n display: flex;\n flex: none;\n justify-content: center;\n align-items: center;\n inline-size: 1.25em;\n block-size: 1.25em;\n font-size: 1.25em;\n}\n\n.lb-emoji-picker-active-emoji-label {\n @include truncate;\n\n flex: 1;\n color: var(--lb-foreground-secondary);\n font-weight: 500;\n font-size: 0.8125em;\n}\n\n.lb-emoji-picker-active-emoji-label-placeholder {\n margin-inline-start: calc(0.5 * var(--lb-spacing));\n color: var(--lb-foreground-moderate);\n}\n\n.lb-emoji-picker-skin-tone-selector {\n display: flex;\n flex: none;\n justify-content: center;\n align-items: center;\n inline-size: calc(1.75 * var(--lb-spacing));\n block-size: calc(1.75 * var(--lb-spacing));\n margin-inline-start: auto;\n}\n\n.lb-emoji-picker-search-container {\n position: relative;\n display: flex;\n align-items: center;\n\n :where(.lb-icon) {\n position: absolute;\n inset-inline-start: var(--lb-emoji-picker-offset-padding);\n color: var(--lb-foreground-moderate);\n pointer-events: none;\n }\n}\n\n.lb-emoji-picker-search {\n all: unset;\n box-sizing: inherit;\n inline-size: 100%;\n padding: var(--lb-emoji-picker-offset-padding);\n padding-inline-start: calc(\n var(--lb-icon-size) + var(--lb-emoji-picker-offset-padding) + 0.375 *\n var(--lb-spacing)\n );\n background: transparent;\n outline: none;\n appearance: textfield;\n\n &::placeholder {\n color: var(--lb-foreground-moderate);\n }\n\n &::-webkit-search-cancel-button {\n display: none;\n }\n}\n\n.lb-emoji-picker-content {\n position: relative;\n flex: 1;\n outline: none;\n}\n\n.lb-emoji-picker-category-header {\n padding: var(--lb-emoji-picker-padding) var(--lb-emoji-picker-offset-padding);\n background: var(--lb-dynamic-background);\n}\n\n.lb-emoji-picker-category-header-title {\n color: var(--lb-foreground-tertiary);\n font-weight: 600;\n font-size: 0.675em;\n text-transform: uppercase;\n}\n\n.lb-emoji-picker-list {\n padding-block-end: var(--lb-emoji-picker-padding);\n animation: lb-animation-appear var(--lb-transition-duration)\n var(--lb-transition-easing) both;\n}\n\n.lb-emoji-picker-row {\n display: flex;\n padding-inline: var(--lb-emoji-picker-padding);\n scroll-margin-block-end: var(--lb-emoji-picker-padding);\n}\n\n.lb-emoji-picker-emoji {\n all: unset;\n display: flex;\n justify-content: center;\n align-items: center;\n overflow: hidden;\n box-sizing: inherit;\n aspect-ratio: 1;\n padding: calc(0.375 * var(--lb-spacing));\n border-radius: calc(var(--lb-radius) - 0.75 * $lb-emoji-picker-padding);\n text-align: center;\n}\n\n/*************************************\n * Tooltip *\n *************************************/\n\n.lb-tooltip {\n --lb-background: #222;\n --lb-foreground: #fff;\n --lb-foreground-contrast: 10%;\n --lb-dynamic-background: var(--lb-background);\n\n position: relative;\n display: flex;\n align-items: center;\n max-inline-size: 300px;\n min-block-size: calc(\n $lb-tooltip-shortcut-height + 2 * $lb-tooltip-additional-padding\n );\n padding-inline: $lb-tooltip-horizontal-padding;\n border-radius: var(--lb-radius);\n background: var(--lb-dynamic-background);\n color: var(--lb-foreground);\n box-shadow: var(--lb-tooltip-shadow);\n font-size: 0.75rem;\n line-height: 1;\n overflow-wrap: anywhere;\n pointer-events: none;\n\n &::after {\n content: \"\";\n position: absolute;\n inset: 0;\n z-index: 1;\n border-radius: inherit;\n box-shadow: var(--lb-inset-shadow);\n pointer-events: none;\n }\n}\n\n.lb-tooltip\\:multiline {\n justify-content: center;\n padding-block: calc(\n $lb-tooltip-vertical-padding * (1 / $lb-tooltip-line-height)\n );\n line-height: $lb-tooltip-line-height;\n text-align: center;\n}\n\n.lb-tooltip-shortcut {\n display: flex;\n gap: calc(0.125 * var(--lb-spacing));\n justify-content: center;\n align-items: center;\n block-size: $lb-tooltip-shortcut-height;\n margin-inline-start: $lb-tooltip-horizontal-padding;\n margin-inline-end: calc(\n -1 * $lb-tooltip-horizontal-padding + $lb-tooltip-additional-padding\n );\n padding-inline: calc(0.25 * var(--lb-spacing));\n border-radius: calc(\n var(--lb-radius) - 0.625 * $lb-tooltip-additional-padding\n );\n background: var(--lb-foreground-subtle);\n color: var(--lb-foreground-tertiary);\n font-family: inherit;\n line-height: 1;\n text-transform: uppercase;\n\n :where(abbr) {\n all: unset;\n }\n}\n\n/*************************************\n * Avatar *\n *************************************/\n\n.lb-avatar {\n position: relative;\n container-type: inline-size;\n display: flex;\n justify-content: center;\n align-items: center;\n overflow: hidden;\n aspect-ratio: 1;\n border-radius: var(--lb-avatar-radius);\n background: var(--lb-foreground-subtle);\n color: var(--lb-foreground-moderate);\n\n &:where([data-loading]) {\n background: var(--lb-foreground);\n opacity: $lb-loading-opacity;\n }\n}\n\n.lb-avatar-image {\n position: absolute;\n inset: 0;\n object-fit: cover;\n inline-size: 100%;\n block-size: 100%;\n}\n\n.lb-avatar-fallback {\n font-weight: 500;\n font-size: 35cqi;\n white-space: nowrap;\n\n /**\n * Progressive enhancement: Only show the fallback when container queries are supported\n */\n @supports not (container-type: inline-size) {\n display: none;\n }\n}\n\n/*************************************\n * Name *\n *************************************/\n\n.lb-name {\n display: inline-block;\n\n &:where([data-loading]) {\n &::before {\n content: \"\\FEFF\";\n display: inline-block;\n vertical-align: middle;\n inline-size: 8ch;\n block-size: 1.75ex;\n border-radius: calc(0.5 * var(--lb-radius));\n background: currentcolor;\n opacity: $lb-loading-opacity;\n user-select: none;\n }\n }\n}\n\n/*************************************\n * Loading *\n *************************************/\n\n:is(.lb-avatar, .lb-name):where([data-loading]) {\n animation: lb-animation-shimmer 8s linear infinite;\n}\n\n/*************************************\n * Body *\n *************************************/\n\n:is(.lb-comment-body, .lb-composer-editor) {\n color: var(--lb-foreground-secondary);\n\n &,\n * {\n line-height: var(--lb-line-height);\n }\n\n :where(p) {\n --lb-line-height-crop: calc(1lh - 1em) / -2;\n\n margin-block-start: 0.25em;\n margin-block-end: 0.25em;\n\n /* Cancel out the impact of line-height on margins/paddings */\n &:where(:first-of-type) {\n margin-block-start: calc(0.125em + var(--lb-line-height-crop));\n }\n\n /* Cancel out the impact of line-height on margins/paddings */\n &:where(:last-of-type) {\n margin-block-end: calc(0.125em + var(--lb-line-height-crop));\n }\n }\n\n :where(strong) {\n font-weight: 600;\n }\n}\n\n.lb-comment-mention,\n.lb-composer-mention {\n color: var(--lb-accent);\n box-decoration-break: clone;\n font-weight: 500;\n}\n\n:is(.lb-comment-link, .lb-composer-link) {\n color: var(--lb-foreground);\n outline: none;\n font-weight: 500;\n transition-property: color, text-decoration-color;\n text-decoration-line: underline;\n text-decoration-color: var(--lb-foreground-moderate);\n text-underline-offset: 2px;\n\n &:where([href]):where(:hover, :focus-visible) {\n color: var(--lb-accent);\n text-decoration-color: var(--lb-accent-moderate);\n }\n}\n\n.lb-comment-mention:where([data-self]),\n.lb-composer-mention {\n padding: 0.1em 0.3em;\n border-radius: calc(0.675 * var(--lb-radius));\n background: var(--lb-accent-subtle);\n}\n\n/*************************************\n * Composer *\n *************************************/\n\n.lb-composer {\n position: relative;\n background: var(--lb-dynamic-background);\n color: var(--lb-foreground);\n transition-property: background;\n}\n\n.lb-composer-form {\n margin: 0;\n}\n\n.lb-composer:where(:has(.lb-composer-editor:not(:focus-visible))) {\n :where(.lb-button[data-variant=\"primary\"]) {\n --lb-button-background: var(--lb-foreground-subtle);\n\n color: var(--lb-foreground-tertiary);\n\n &:where(:enabled:hover, :enabled:focus-visible) {\n --lb-button-background: var(--lb-accent);\n\n color: var(--lb-accent-foreground);\n }\n }\n}\n\n.lb-composer-editor {\n padding: var(--lb-spacing);\n outline: none;\n\n &:where([data-disabled]:not([data-disabled=\"false\"])) {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n :where(.lb-composer-editor-container:has(.lb-composer-attachments)) & {\n padding-block-end: calc(0.25 * var(--lb-spacing));\n }\n\n :where([data-placeholder]) {\n color: var(--lb-foreground-moderate);\n }\n}\n\n.lb-composer-mention {\n @include invisible-selection;\n\n &:where([data-selected]:not([data-selected=\"false\"])) {\n background: var(--lb-accent);\n color: var(--lb-accent-foreground);\n }\n}\n\n.lb-composer-footer {\n display: flex;\n gap: calc(0.75 * var(--lb-spacing));\n align-items: center;\n block-size: calc($lb-button-size + var(--lb-spacing));\n margin-block-start: calc(-0.125 * var(--lb-spacing));\n padding: 0 var(--lb-spacing) var(--lb-spacing);\n}\n\n.lb-composer-actions,\n.lb-composer-editor-actions {\n display: flex;\n gap: calc(0.125 * var(--lb-spacing));\n align-items: center;\n}\n\n.lb-composer-editor-actions {\n margin-inline-end: auto;\n}\n\n.lb-composer-attribution {\n color: var(--lb-foreground-moderate);\n outline: none;\n transition-property: color;\n\n &:where(:hover, :focus-visible) {\n color: var(--lb-foreground-tertiary);\n }\n\n :where(svg) {\n block-size: calc(0.75 * $lb-button-size);\n }\n}\n\n.lb-composer-attachments {\n padding-inline: var(--lb-spacing);\n padding-block-start: calc(0.75 * var(--lb-spacing));\n padding-block-end: var(--lb-spacing);\n}\n\n.lb-composer-editor-container:where([data-drop]) * {\n pointer-events: none;\n}\n\n.lb-composer-attachments-drop-area {\n position: absolute;\n inset: 0;\n display: flex;\n place-content: center;\n place-items: center;\n color: var(--lb-accent);\n\n &::before,\n &::after {\n content: \"\";\n position: absolute;\n inset: calc(0.5 * var(--lb-spacing));\n z-index: 0;\n border-radius: calc(0.75 * var(--lb-radius));\n }\n\n &::before {\n background: currentcolor;\n opacity: calc(1 * var(--lb-accent-contrast));\n }\n\n &::after {\n border: 2px dashed currentcolor;\n opacity: calc(2 * var(--lb-accent-contrast));\n }\n}\n\n.lb-composer-attachments-drop-area-label {\n position: relative;\n display: flex;\n gap: calc(0.25 * var(--lb-spacing));\n place-items: center;\n padding: calc(0.375 * var(--lb-spacing)) calc(0.5 * var(--lb-spacing));\n border-radius: calc(0.75 * var(--lb-radius));\n background: var(--lb-accent);\n color: var(--lb-accent-foreground);\n font-weight: 500;\n pointer-events: none;\n}\n\n/*************************************\n * Floating Toolbar *\n *************************************/\n\n.lb-composer-floating-toolbar {\n display: flex;\n flex-direction: row;\n gap: $lb-elevation-padding;\n padding: $lb-elevation-padding;\n user-select: none;\n\n /* Invisibly increase the buttons' hit target size */\n :where(.lb-button) {\n &::before {\n content: \"\";\n position: absolute;\n inset: calc(-1 * $lb-elevation-padding);\n z-index: -1;\n border-radius: inherit;\n }\n\n &:where(:not(:first-of-type))::before {\n inset-inline-start: calc(-0.5 * $lb-elevation-padding);\n }\n\n &:where(:not(:last-of-type))::before {\n inset-inline-end: calc(-0.5 * $lb-elevation-padding);\n }\n }\n}\n\n/*************************************\n * Comment *\n *************************************/\n\n.lb-comment {\n --lb-comment-avatar-size: $lb-button-size;\n\n position: relative;\n padding: var(--lb-spacing);\n background: var(--lb-dynamic-background);\n color: var(--lb-foreground);\n font-weight: 400;\n scroll-margin: var(--lb-spacing);\n\n @media (hover: hover) {\n &:where(.lb-comment\\:show-actions-hover) {\n :where(.lb-comment-actions) {\n position: absolute;\n inset-inline-end: 0;\n opacity: 0;\n transition-property: opacity;\n }\n\n &:where(:is(:hover, :focus-within, .lb-comment\\:action-open)) {\n :where(.lb-comment-actions) {\n position: relative;\n opacity: 1;\n }\n }\n }\n }\n\n &:where(:target, [data-target]) {\n --lb-dynamic-background: var(--lb-background-accent-faint);\n }\n\n &:where([data-editing]) {\n --lb-dynamic-background: var(--lb-background-foreground-faint);\n }\n}\n\n.lb-comment-header {\n position: relative;\n display: flex;\n gap: calc(0.75 * var(--lb-spacing));\n align-items: center;\n block-size: var(--lb-comment-avatar-size);\n margin-block-end: calc(0.75 * var(--lb-spacing));\n}\n\n.lb-comment-details {\n display: flex;\n gap: calc(0.75 * var(--lb-spacing));\n align-items: center;\n min-inline-size: 0;\n}\n\n.lb-comment-avatar {\n flex: none;\n inline-size: var(--lb-comment-avatar-size);\n}\n\n.lb-comment-details-labels {\n display: flex;\n gap: calc(0.5 * var(--lb-spacing));\n align-items: baseline;\n min-inline-size: 0;\n}\n\n.lb-comment-author,\n.lb-comment-date {\n @include truncate;\n @include capitalize;\n}\n\n.lb-comment-author {\n font-weight: 500;\n}\n\n.lb-comment-date {\n color: var(--lb-foreground-tertiary);\n font-size: 0.875em;\n}\n\n.lb-comment-date-created,\n.lb-comment-date-edited {\n display: contents;\n}\n\n.lb-comment-actions {\n display: flex;\n gap: calc(0.125 * var(--lb-spacing));\n margin-inline-start: auto;\n}\n\n.lb-comment-composer {\n margin: calc(-1 * var(--lb-spacing));\n background: unset;\n}\n\n.lb-comment-body {\n /**\n * Prevent empty lines from collapsing\n */\n :where(p span:only-child:empty)::before {\n content: \"\\FEFF\";\n user-select: none;\n }\n}\n\n.lb-comment-attachments {\n margin-block-start: calc(0.75 * var(--lb-spacing));\n}\n\n.lb-comment-reactions {\n display: flex;\n flex-wrap: wrap;\n gap: calc(0.375 * var(--lb-spacing));\n margin-block-start: calc(0.75 * var(--lb-spacing));\n}\n\n.lb-comment-reaction {\n gap: calc(0.375 * var(--lb-spacing));\n block-size: $lb-button-size;\n padding-inline: calc(0.575 * var(--lb-spacing));\n border-radius: $lb-radius-full;\n\n &:where([data-self]) {\n background: var(--lb-accent-subtle);\n color: var(--lb-accent-secondary);\n box-shadow: inset 0 0 0 1px var(--lb-accent-moderate);\n\n &:where(\n :enabled:hover,\n :enabled:focus-visible,\n [aria-expanded=\"true\"],\n [aria-selected=\"true\"]\n ) {\n color: var(--lb-accent);\n }\n }\n}\n\n.lb-comment-reaction-count {\n font-weight: 500;\n font-size: 0.75em;\n font-variant-numeric: tabular-nums;\n}\n\n.lb-comment-reaction-tooltip {\n max-inline-size: 200px;\n}\n\n.lb-comment-deleted {\n color: var(--lb-foreground-tertiary);\n font-size: 0.875em;\n}\n\n.lb-comment\\:indent-content {\n min-block-size: calc(var(--lb-comment-avatar-size) + 2 * var(--lb-spacing));\n\n :where(.lb-comment-header) {\n block-size: $lb-button-size;\n margin-block-end: calc(0.25 * var(--lb-spacing));\n }\n\n :where(.lb-comment-avatar) {\n position: absolute;\n inset-inline-start: 0;\n inset-block-start: 0;\n }\n\n :where(.lb-comment-details-labels) {\n margin-inline-start: calc(\n var(--lb-comment-avatar-size) + 0.75 * var(--lb-spacing)\n );\n }\n\n :where(.lb-comment-content) {\n padding-inline-start: calc(\n var(--lb-comment-avatar-size) + 0.75 * var(--lb-spacing)\n );\n }\n}\n\n/*************************************\n * Thread *\n *************************************/\n\n.lb-thread {\n background: var(--lb-dynamic-background);\n color: var(--lb-foreground);\n transition-property: background;\n\n @media (hover: hover) {\n &:where(.lb-thread\\:show-actions-hover :is(:hover, :focus-within)) {\n :where(.lb-thread-actions) {\n opacity: 1;\n }\n }\n }\n}\n\n.lb-thread-comments {\n position: relative;\n z-index: 0;\n display: flex;\n flex-direction: column;\n}\n\n.lb-thread-comment {\n z-index: 0;\n padding-block: calc(0.6 * var(--lb-spacing));\n transition-property: background;\n\n &:where(.lb-comment\\:indent-content) {\n min-block-size: calc(var(--lb-comment-avatar-size) + var(--lb-spacing));\n }\n\n &:where(:first-of-type, [data-editing]) {\n padding-block-start: var(--lb-spacing);\n\n &:where(.lb-comment\\:indent-content) {\n min-block-size: calc(\n var(--lb-comment-avatar-size) + 1.5 * var(--lb-spacing)\n );\n }\n }\n\n &:where(:last-of-type, [data-editing]) {\n padding-block-end: var(--lb-spacing);\n\n &:where(.lb-comment\\:indent-content) {\n min-block-size: calc(\n var(--lb-comment-avatar-size) + 1.75 * var(--lb-spacing)\n );\n }\n }\n}\n\n.lb-thread-show-more {\n position: relative;\n z-index: 1;\n display: flex;\n gap: calc(0.5 * var(--lb-spacing));\n justify-content: center;\n align-items: center;\n\n &::before,\n &::after {\n content: \"\";\n z-index: 0;\n flex: 1 0 auto;\n min-inline-size: var(--lb-spacing);\n block-size: 0;\n border-block-start: 1px dashed var(--lb-foreground-subtle);\n transition-property: border;\n }\n}\n\n:where(.lb-thread-show-more + .lb-thread-new-indicator) {\n margin-block-start: calc(0.5 * var(--lb-spacing));\n}\n\n.lb-thread-new-indicator {\n position: relative;\n z-index: 1;\n display: flex;\n justify-content: center;\n align-items: center;\n block-size: 0;\n\n &::before,\n &::after {\n content: \"\";\n z-index: 0;\n flex: 1;\n block-size: 0;\n border-block-start: 1px solid var(--lb-foreground-subtle);\n transition-property: border;\n }\n}\n\n.lb-thread-new-indicator-label {\n z-index: 1;\n display: flex;\n flex: none;\n gap: calc(0.325 * var(--lb-spacing));\n align-items: center;\n padding: calc(0.25 * var(--lb-spacing)) var(--lb-spacing);\n color: var(--lb-accent);\n font-weight: 600;\n font-size: 0.675em;\n text-transform: uppercase;\n}\n\n.lb-thread-new-indicator-label-icon {\n inline-size: calc(0.6 * var(--lb-icon-size));\n block-size: calc(0.6 * var(--lb-icon-size));\n}\n\n.lb-thread-composer {\n position: relative;\n\n &::after {\n content: \"\";\n position: absolute;\n inset: 0;\n inline-size: 100%;\n block-size: 100%;\n border-block-start: 1px solid var(--lb-foreground-subtle);\n pointer-events: none;\n transition-property: border;\n }\n}\n\n/*************************************\n * Attachments *\n *************************************/\n\n.lb-comment-attachments,\n.lb-composer-attachments {\n display: flex;\n flex-direction: column;\n gap: calc(0.75 * var(--lb-spacing));\n}\n\n.lb-attachments {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(min(100%, 200px), 1fr));\n gap: calc(0.75 * var(--lb-spacing));\n}\n\n.lb-attachment,\n.lb-attachment-delete {\n @include button;\n}\n\n.lb-attachment {\n position: relative;\n display: flex;\n inline-size: 100%;\n min-inline-size: 0;\n border-radius: var(--lb-radius);\n background: var(--lb-dynamic-background);\n box-shadow: inset 0 0 0 1px var(--lb-foreground-subtle);\n\n &:where([tabindex=\"-1\"]) {\n cursor: default;\n }\n\n &:where(:not([tabindex=\"-1\"])) {\n &:where(:hover, :focus-visible) {\n background: var(--lb-foreground-subtle);\n }\n }\n}\n\n.lb-attachment-delete {\n position: absolute;\n inset-inline-end: -0.35rem;\n inset-block-start: -0.35rem;\n z-index: 2;\n display: flex;\n justify-content: center;\n align-items: center;\n inline-size: 1.1rem;\n block-size: 1.1rem;\n border-radius: 50%;\n background: var(--lb-foreground-subtle);\n color: var(--lb-foreground-secondary);\n box-shadow: 0 0 0 2px var(--lb-dynamic-background);\n opacity: 0;\n\n /* Invisibly increase the button's hit target size */\n &::before {\n content: \"\";\n position: absolute;\n inset: -4px;\n z-index: -1;\n border-radius: inherit;\n }\n\n &:where(:hover, :focus-visible) {\n background: var(--lb-foreground-secondary);\n color: var(--lb-dynamic-background);\n }\n\n :where(.lb-attachment:focus-within, .lb-attachment:hover) & {\n opacity: 1;\n }\n\n :where(.lb-icon) {\n inline-size: 0.75rem;\n }\n}\n\n.lb-attachment-details {\n position: relative;\n display: flex;\n flex-direction: column;\n gap: calc(0.25 * var(--lb-spacing));\n justify-content: center;\n min-inline-size: 0;\n font-size: 0.875em;\n}\n\n.lb-attachment-name {\n display: flex;\n font-weight: 500;\n}\n\n.lb-attachment-name-base,\n.lb-attachment-description {\n @include truncate;\n\n transition-property: color;\n}\n\n.lb-attachment-preview {\n position: relative;\n display: flex;\n flex: none;\n justify-content: center;\n align-items: center;\n overflow: hidden;\n background: color-mix(\n in srgb,\n transparent,\n var(--lb-foreground) var(--lb-foreground-contrast)\n );\n color: var(--lb-foreground-tertiary);\n transition-property: background, color;\n}\n\n.lb-attachment-preview-media {\n border-radius: inherit;\n transition-property: opacity;\n\n &,\n &::after,\n img,\n video {\n position: absolute;\n inset: 0;\n inline-size: 100%;\n block-size: 100%;\n }\n\n img,\n video {\n object-fit: cover;\n pointer-events: none;\n }\n\n &::after {\n content: \"\";\n border-radius: inherit;\n box-shadow: var(--lb-highlight-shadow);\n pointer-events: none;\n }\n\n &:where([data-hidden]) {\n opacity: 0;\n }\n}\n\n.lb-attachment-icon {\n flex: none;\n overflow: visible;\n color: var(--lb-foreground);\n}\n\n.lb-attachment-icon-glyph {\n fill: var(--lb-foreground-moderate);\n}\n\n.lb-attachment-icon-background {\n fill: var(--lb-background);\n}\n\n.lb-attachment-icon-fold {\n fill-opacity: calc(0.75 * var(--lb-foreground-contrast));\n}\n\n.lb-attachment-icon-shadow {\n filter: blur(6px);\n fill-opacity: var(--lb-foreground-contrast);\n}\n\n.lb-file-attachment {\n gap: calc(0.5 * var(--lb-spacing));\n padding: calc(0.5 * var(--lb-spacing));\n padding-inline-end: calc(0.65 * var(--lb-spacing));\n\n :where(.lb-attachment-preview) {\n aspect-ratio: 1;\n inline-size: 2.5rem;\n border-radius: calc(0.5 * var(--lb-radius));\n }\n\n :where(.lb-attachment-name) {\n color: var(--lb-foreground-secondary);\n }\n\n :where(.lb-attachment-description) {\n color: var(--lb-foreground-tertiary);\n }\n\n &:where(:not([tabindex=\"-1\"])) {\n &:where(:hover, :focus-visible, :focus-within) {\n :where(.lb-attachment-name) {\n color: var(--lb-foreground);\n }\n\n :where(.lb-attachment-description) {\n color: var(--lb-foreground-secondary);\n }\n }\n }\n}\n\n.lb-media-attachment {\n aspect-ratio: 16 / 10;\n\n :where(.lb-attachment-preview) {\n position: absolute;\n inset: 0;\n border-radius: inherit;\n }\n\n :where(.lb-attachment-details) {\n position: absolute;\n inset-inline: 0;\n inset-block-end: 0;\n padding: calc(0.75 * var(--lb-spacing));\n border-end-start-radius: inherit;\n border-end-end-radius: inherit;\n background: linear-gradient(to bottom, transparent, rgba(0 0 0 / 80%));\n text-shadow: 0 0 2px rgba(0 0 0 / 40%);\n opacity: 0;\n transition-property: opacity;\n }\n\n :where(.lb-attachment-name) {\n color: #fff;\n }\n\n :where(.lb-attachment-description) {\n color: rgba(255 255 255 / 80%);\n }\n\n &:where(:not([tabindex=\"-1\"])) {\n &:where(:hover, :focus-visible, :focus-within) {\n :where(.lb-attachment-details) {\n opacity: 1;\n }\n }\n }\n}\n\n.lb-attachment:where([data-error]) {\n :where(.lb-attachment-preview) {\n background: var(--lb-destructive);\n color: var(--lb-destructive-foreground);\n }\n}\n\n/*************************************\n * Inbox Notification *\n *************************************/\n\n.lb-inbox-notification {\n --lb-inbox-notification-aside-size: 36px;\n\n position: relative;\n display: flex;\n gap: calc(0.75 * var(--lb-spacing));\n overflow: hidden;\n padding: var(--lb-spacing);\n background: var(--lb-dynamic-background);\n color: var(--lb-foreground);\n font-weight: 400;\n text-decoration: inherit;\n transition-property: background;\n\n /* Highlight missing notifications during development */\n &:where([data-missing]) {\n --lb-accent: var(--lb-destructive) !important;\n --lb-accent-foreground: var(--lb-destructive-foreground) !important;\n --lb-accent-contrast: var(--lb-destructive-contrast) !important;\n --lb-dynamic-background: var(--lb-background-accent-faint);\n }\n\n &:where([data-unread]) {\n --lb-dynamic-background: var(--lb-background-accent-faint);\n }\n\n &:where([href]) {\n cursor: pointer;\n\n &:where(:hover, :focus-visible, :focus-within) {\n --lb-dynamic-background: var(--lb-background-foreground-faint);\n }\n\n &:where([data-unread]) {\n &:where(:hover, :focus-visible, :focus-within) {\n --lb-dynamic-background: var(--lb-background-accent-subtle);\n }\n }\n }\n\n @media (hover: hover) {\n &:where(.lb-inbox-notification\\:show-actions-hover) {\n :where(.lb-inbox-notification-header) {\n display: grid;\n grid-template: \"title secondary\" / 1fr max-content;\n }\n\n :where(.lb-inbox-notification-details) {\n opacity: 1;\n transition-property: opacity;\n }\n\n :where(.lb-inbox-notification-actions) {\n opacity: 0;\n transition-property: opacity;\n }\n\n &:where(:is(:hover, :focus-within, .lb-inbox-notification\\:action-open)) {\n :where(.lb-inbox-notification-details) {\n opacity: 0;\n }\n\n :where(.lb-inbox-notification-actions) {\n opacity: 1;\n }\n }\n\n :where(.lb-inbox-notification-details),\n :where(.lb-inbox-notification-actions) {\n grid-area: secondary;\n justify-self: end;\n }\n }\n }\n}\n\n.lb-inbox-notification-aside {\n flex: none;\n inline-size: var(--lb-inbox-notification-aside-size);\n}\n\n.lb-inbox-notification-icon {\n display: flex;\n justify-content: center;\n place-items: center;\n aspect-ratio: 1;\n border-radius: 50%;\n background: var(--lb-foreground-subtle);\n\n .lb-inbox-notification:where([data-missing]) :where(&) {\n background: var(--lb-accent-subtle);\n color: var(--lb-accent);\n }\n}\n\n.lb-inbox-notification-content {\n flex: 1;\n}\n\n.lb-inbox-notification-content,\n.lb-inbox-notification-body {\n min-inline-size: 0;\n max-inline-size: 100%;\n}\n\n.lb-inbox-notification-header {\n display: flex;\n gap: calc(0.75 * var(--lb-spacing));\n align-items: center;\n margin-block-start: calc(0.25 * var(--lb-spacing));\n margin-block-end: calc(0.5 * var(--lb-spacing));\n}\n\n.lb-inbox-notification-title {\n min-block-size: $lb-button-size;\n\n :where(.lb-inbox-notification:not([data-inspector])) & {\n @include capitalize;\n }\n\n :where(strong, .lb-list, .lb-name) {\n font-weight: 500;\n }\n}\n\n.lb-inbox-notification-details {\n flex: none;\n align-self: start;\n min-inline-size: 0;\n block-size: $lb-button-size;\n margin-inline-start: auto;\n}\n\n.lb-inbox-notification-details-labels {\n display: flex;\n align-items: baseline;\n min-inline-size: 0;\n\n &::before {\n content: \"\\FEFF\";\n }\n}\n\n.lb-inbox-notification-actions {\n display: flex;\n grid-area: actions;\n gap: calc(0.125 * var(--lb-spacing));\n align-self: start;\n}\n\n.lb-inbox-notification-comments {\n display: flex;\n flex-direction: column;\n gap: var(--lb-spacing);\n}\n\n.lb-inbox-notification-comment {\n padding: 0;\n background: transparent;\n\n :where(.lb-comment-header) {\n block-size: auto;\n color: var(--lb-foreground-tertiary);\n font-size: 0.875rem;\n }\n\n :where(.lb-comment-reaction),\n :where(.lb-comment-attachment) {\n pointer-events: none;\n }\n}\n\n.lb-inbox-notification-date {\n color: var(--lb-foreground-tertiary);\n font-size: 0.875em;\n}\n\n.lb-inbox-notification-unread-indicator {\n align-self: center;\n inline-size: 10px;\n block-size: 10px;\n margin-inline-start: calc(0.5 * var(--lb-spacing));\n border-radius: 50%;\n background: var(--lb-accent);\n}\n\n/*************************************\n * History Version Summary *\n *************************************/\n\n.lb-history-version-summary {\n position: relative;\n display: flex;\n flex-direction: column;\n gap: calc(0.25 * var(--lb-spacing));\n justify-content: center;\n inline-size: 100%;\n min-inline-size: 0;\n padding: var(--lb-spacing);\n background: var(--lb-dynamic-background);\n transition-property: background;\n\n &:where(\n :hover,\n :focus-visible,\n :focus-within,\n [data-selected]:not([data-selected=\"false\"])\n ) {\n --lb-dynamic-background: var(--lb-background-foreground-faint);\n }\n}\n\n.lb-history-version-summary-date,\n.lb-history-version-summary-authors {\n @include truncate;\n @include capitalize;\n\n min-inline-size: 0;\n max-inline-size: 100%;\n}\n\n.lb-history-version-summary-date {\n color: var(--lb-foreground-secondary);\n font-weight: 500;\n}\n\n.lb-history-version-summary-authors {\n color: var(--lb-foreground-tertiary);\n}\n\n/*************************************\n * History Version Previe *\n *************************************/\n\n.lb-history-version-preview {\n position: relative;\n display: flex;\n flex-direction: column;\n background: var(--lb-dynamic-background);\n\n /* overflow-block: auto; doesn't work as expected */\n /* stylelint-disable-next-line plugin/use-logical-properties-and-values */\n overflow-y: auto;\n}\n\n.lb-history-version-preview-content {\n flex: 1 0 auto;\n padding: var(--lb-spacing);\n}\n\n.lb-history-version-preview-footer {\n position: sticky;\n inset-block-end: 0;\n display: flex;\n flex: none;\n gap: var(--lb-spacing);\n align-items: center;\n margin-block-start: auto;\n padding: var(--lb-spacing);\n border-block-start: 1px solid var(--lb-foreground-subtle);\n background: var(--lb-dynamic-background);\n}\n\n.lb-history-version-preview-authors {\n @include truncate;\n\n flex: 1 1 auto;\n min-inline-size: 0;\n color: var(--lb-foreground-tertiary);\n}\n\n.lb-history-version-preview-actions {\n display: flex;\n flex: none;\n gap: calc(0.35 * var(--lb-spacing));\n align-items: center;\n margin-inline-start: auto;\n}\n\n/*************************************\n * Lists *\n *************************************/\n\n.lb-inbox-notification-list,\n.lb-history-version-summary-list {\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n.lb-inbox-notification-list-item,\n.lb-history-version-summary-list-item {\n &:where(:not(:last-of-type)) {\n border-block-end: 1px solid var(--lb-foreground-subtle);\n }\n}\n\n/*************************************\n * Inline code *\n *************************************/\n\n:is(.lb-root) {\n :where(code:not(pre > code)) {\n padding: 0.2em 0.4em;\n border-radius: calc(0.75 * var(--lb-radius));\n background: var(--lb-foreground-subtle);\n box-decoration-break: clone;\n font-size: 85%;\n line-height: 1;\n }\n\n /**\n * Merge adjacent inline code elements\n */\n :where(span:has(code) + span code) {\n padding-inline-start: 0;\n border-start-start-radius: 0;\n border-end-start-radius: 0;\n }\n\n :where(span:has(code):has(+ span code) code) {\n padding-inline-end: 0;\n border-start-end-radius: 0;\n border-end-end-radius: 0;\n }\n}\n\n/* 0,0,0 specificity to inherit any styles applied to `code` elements */\n:where(:is(.lb-root) code) {\n font-family: ui-monospace, Menlo, Monaco, \"Roboto Mono\", \"Cascadia Code\",\n \"Source Code Pro\", Consolas, \"DejaVu Sans Mono\", monospace;\n}\n\n/*************************************\n * Elevation *\n *************************************/\n\n.lb-elevation {\n --lb-dynamic-background: var(--lb-background);\n\n position: relative;\n overflow: hidden;\n border-radius: var(--lb-radius);\n background: var(--lb-dynamic-background);\n box-shadow: var(--lb-elevation-shadow);\n\n &::after {\n content: \"\";\n position: absolute;\n inset: 0;\n z-index: 1;\n border-radius: inherit;\n box-shadow: var(--lb-inset-shadow);\n pointer-events: none;\n }\n\n &:where(.lb-elevation-moderate) {\n box-shadow: var(--lb-elevation-shadow-moderate);\n }\n}\n\n/*************************************\n * Elevation lists *\n *************************************/\n\n.lb-dropdown,\n.lb-composer-suggestions {\n padding: $lb-elevation-padding;\n\n /* overflow-block: auto; doesn't work as expected */\n /* stylelint-disable-next-line plugin/use-logical-properties-and-values */\n overflow-y: auto;\n\n &:where([data-hidden]) {\n opacity: 0;\n }\n}\n\n.lb-dropdown-item,\n.lb-composer-suggestions-list-item {\n display: flex;\n align-items: center;\n padding: calc(0.25 * var(--lb-spacing)) calc(0.5 * var(--lb-spacing));\n font-size: 0.875rem;\n}\n\n.lb-dropdown-item,\n.lb-composer-suggestions-list-item,\n.lb-emoji-picker-emoji {\n border-radius: calc(var(--lb-radius) - 0.75 * $lb-elevation-padding);\n color: var(--lb-foreground-secondary);\n outline: none;\n cursor: pointer;\n user-select: none;\n transition-property: background, color, opacity;\n}\n\n:is(\n .lb-dropdown-item,\n .lb-composer-suggestions-list-item,\n .lb-emoji-picker-emoji\n) {\n &:where(\n [data-highlighted]:not([data-highlighted=\"false\"]),\n [data-selected]:not([data-selected=\"false\"]),\n [data-active]:not([data-active=\"false\"])\n ) {\n background: var(--lb-foreground-subtle);\n transition-duration: calc(var(--lb-transition-duration) / 2);\n }\n\n &:where(:disabled, [data-disabled]:not([data-disabled=\"false\"])) {\n opacity: 0.5;\n cursor: not-allowed;\n }\n}\n\n/*************************************\n * Floating animations *\n *************************************/\n\n.lb-dropdown,\n.lb-composer-suggestions,\n.lb-composer-floating-toolbar,\n.lb-tooltip,\n.lb-emoji-picker {\n animation-duration: var(--lb-transition-duration);\n animation-timing-function: var(--lb-transition-easing);\n will-change: transform, opacity;\n}\n\n:is(\n .lb-dropdown,\n .lb-emoji-picker,\n .lb-tooltip:where([data-state=\"delayed-open\"]),\n .lb-composer-suggestions,\n .lb-composer-floating-toolbar\n) {\n &:where([data-side=\"top\"]) {\n animation-name: lb-animation-slide-up;\n }\n\n &:where([data-side=\"bottom\"]) {\n animation-name: lb-animation-slide-down;\n }\n}\n\n:is(\n .lb-dropdown,\n .lb-emoji-picker,\n .lb-tooltip,\n .lb-composer-suggestions,\n .lb-composer-floating-toolbar\n) {\n &:where([data-state=\"closed\"]) {\n animation-name: lb-animation-disappear;\n }\n}\n\n@media (prefers-reduced-motion) {\n .lb-dropdown:where(:not([data-state=\"closed\"])),\n .lb-emoji-picker:where(:not([data-state=\"closed\"])),\n .lb-tooltip:where([data-state=\"delayed-open\"]:not([data-state=\"closed\"])),\n .lb-composer-suggestions:where(:not([data-state=\"closed\"])) {\n animation-name: lb-animation-appear;\n }\n}\n\n/*************************************\n * Code block *\n *************************************/\n\n.lb-code-block {\n min-inline-size: 0;\n border: 1px solid var(--lb-foreground-subtle);\n border-radius: var(--lb-radius);\n\n :where(.lb-code-block-header) {\n display: flex;\n align-items: center;\n padding: calc(0.5 * var(--lb-spacing));\n }\n\n :where(.lb-code-block-title) {\n margin-inline-start: calc(0.5 * var(--lb-spacing));\n color: var(--lb-foreground-tertiary);\n font-weight: 600;\n font-size: 0.675em;\n text-transform: uppercase;\n }\n\n :where(.lb-code-block-header-actions) {\n margin-inline-start: auto;\n }\n\n :where(.lb-code-block-content) {\n min-inline-size: 0;\n margin: 0;\n padding: 0 var(--lb-spacing) calc(0.875 * var(--lb-spacing));\n font-size: 85%;\n line-height: var(--lb-line-height);\n\n /* overflow-inline: auto; doesn't work as expected */\n /* stylelint-disable-next-line plugin/use-logical-properties-and-values */\n overflow-x: auto;\n }\n}\n\n/*************************************\n * AI Composer *\n *************************************/\n\n.lb-ai-composer {\n position: relative;\n inline-size: 100%;\n color: var(--lb-foreground);\n}\n\n.lb-ai-composer-form:where(:has(.lb-ai-composer-editor:not(:focus-visible))) {\n :where(.lb-button[data-variant=\"primary\"]) {\n --lb-button-background: var(--lb-foreground-subtle);\n\n color: var(--lb-foreground-tertiary);\n\n &:where(:enabled:hover, :enabled:focus-visible) {\n --lb-button-background: var(--lb-accent);\n\n color: var(--lb-accent-foreground);\n }\n }\n}\n\n.lb-ai-composer-editor {\n max-block-size: 15rem;\n padding: var(--lb-spacing) var(--lb-spacing) 0;\n color: var(--lb-foreground-secondary);\n outline: none;\n resize: none;\n\n /* overflow-block: auto; doesn't work as expected */\n /* stylelint-disable-next-line plugin/use-logical-properties-and-values */\n overflow-y: auto;\n\n &,\n * {\n line-height: var(--lb-line-height);\n }\n\n :where(p) {\n --lb-line-height-crop: calc(1lh - 1em) / -2;\n\n margin-block-start: 0.25em;\n margin-block-end: 0.25em;\n\n /* Cancel out the impact of line-height on margins/paddings */\n &:where(:first-of-type) {\n margin-block-start: calc(0.125em + var(--lb-line-height-crop));\n }\n\n /* Cancel out the impact of line-height on margins/paddings */\n &:where(:last-of-type) {\n margin-block-end: calc(0.125em + var(--lb-line-height-crop));\n }\n }\n\n &:where([data-disabled]:not([data-disabled=\"false\"])) {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n :where([data-placeholder]) {\n color: var(--lb-foreground-moderate);\n }\n}\n\n.lb-ai-composer-footer {\n display: flex;\n gap: calc(0.75 * var(--lb-spacing));\n align-items: center;\n margin-block-start: calc(-0.125 * var(--lb-spacing));\n padding: var(--lb-spacing);\n}\n\n.lb-ai-composer-actions,\n.lb-ai-composer-editor-actions {\n display: flex;\n gap: calc(0.125 * var(--lb-spacing));\n align-items: center;\n}\n\n.lb-ai-composer-editor-actions {\n margin-inline-end: auto;\n}\n\n/*************************************\n * Chat message *\n *************************************/\n\n.lb-ai-chat-message {\n display: flex;\n flex-direction: column;\n gap: var(--lb-spacing);\n color: var(--lb-foreground);\n scroll-margin-block-start: calc(1.5 * var(--lb-spacing));\n}\n\n.lb-ai-chat-user-message {\n :where(.lb-ai-chat-message-content) {\n min-block-size: calc(1lh + var(--lb-spacing));\n padding: calc(0.5 * var(--lb-spacing)) var(--lb-spacing);\n\n /**\n * Exactly half the height (line-height + padding) of a one line bubble,\n * so that it doesn't change when the text wraps and the bubble becomes taller.\n */\n border-radius: calc((1lh + var(--lb-spacing)) / 2);\n background: var(--lb-background-foreground-faint);\n color: var(--lb-foreground);\n line-height: var(--lb-line-height);\n }\n}\n\n.lb-ai-chat-message-deleted {\n position: relative;\n align-items: center;\n inline-size: 100%;\n color: var(--lb-foreground-moderate);\n font-size: 0.875em;\n text-wrap: pretty;\n}\n\n.lb-ai-chat-message-error {\n display: flex;\n gap: calc(0.5 * var(--lb-spacing));\n align-items: flex-start;\n inline-size: 100%;\n color: var(--lb-destructive);\n font-size: 0.875em;\n line-height: var(--lb-line-height);\n text-wrap: pretty;\n word-break: break-word;\n\n :where(.lb-icon-container) {\n block-size: 1lh;\n color: var(--lb-destructive-secondary);\n }\n\n :where(code:not(pre > code)) {\n background: var(--lb-destructive-subtle);\n }\n}\n\n.lb-ai-chat-message-content {\n inline-size: 100%;\n white-space: break-spaces;\n\n &:where(:empty) {\n display: contents;\n }\n\n > :where(.lb-ai-chat-message-text) {\n margin-block: var(--lb-spacing);\n }\n\n > :where(.lb-ai-chat-message-tool-invocation) {\n margin-block: var(--lb-spacing);\n }\n\n > :where(:first-child) {\n margin-block-start: 0;\n }\n\n > :where(:last-child) {\n margin-block-end: 0;\n }\n}\n\n.lb-ai-chat-messages {\n display: flex;\n flex-direction: column;\n gap: calc(1.5 * var(--lb-spacing));\n inline-size: 100%;\n max-inline-size: min(\n calc(var(--lb-ai-chat-container-width) - var(--lb-spacing)),\n calc(100% - 3 * var(--lb-spacing))\n );\n margin-inline: auto;\n padding-block-start: calc(1.5 * var(--lb-spacing));\n padding-block-end: calc(3 * var(--lb-spacing));\n\n :where(.lb-ai-chat-user-message) {\n max-inline-size: 80%;\n margin-inline-start: auto;\n }\n}\n\n.lb-ai-chat-footer {\n position: relative;\n display: flex;\n flex-direction: column;\n gap: calc(0.75 * var(--lb-spacing));\n inline-size: 100%;\n}\n\n.lb-ai-chat {\n --lb-ai-chat-container-width: 100%;\n\n display: flex;\n flex-direction: column;\n inline-size: 100%;\n block-size: 100%;\n background: var(--lb-background);\n isolation: isolate;\n\n /* overflow-block: auto; doesn't work as expected */\n /* stylelint-disable-next-line plugin/use-logical-properties-and-values */\n overflow-y: auto;\n\n :where(.lb-ai-chat-footer) {\n position: sticky;\n inset-block-end: 0;\n z-index: 1;\n margin-block-start: auto;\n }\n\n :where(.lb-ai-chat-composer) {\n margin-inline: auto;\n }\n}\n\n.lb-ai-chat:where(.lb-ai-chat\\:layout-compact) {\n :where(.lb-ai-chat-footer) {\n background: var(--lb-dynamic-background);\n\n &::after {\n content: \"\";\n position: absolute;\n inset: 0;\n border-block-start: 1px solid var(--lb-foreground-subtle);\n pointer-events: none;\n }\n }\n\n :where(.lb-ai-chat-composer) {\n max-inline-size: min(\n 100%,\n calc(var(--lb-ai-chat-container-width) + var(--lb-spacing))\n );\n }\n}\n\n.lb-ai-chat:where(.lb-ai-chat\\:layout-inset) {\n :where(.lb-ai-chat-footer) {\n padding: var(--lb-spacing);\n padding-block-start: 0;\n\n &::before {\n content: \"\";\n position: absolute;\n inset: 0;\n inset-block-start: calc(-3 * var(--lb-spacing));\n background: linear-gradient(\n to bottom,\n transparent 0%,\n var(--lb-background) calc(3.5 * var(--lb-spacing))\n );\n pointer-events: none;\n }\n }\n\n :where(.lb-ai-chat-composer) {\n max-inline-size: var(--lb-ai-chat-container-width);\n border-radius: calc(2 * var(--lb-radius));\n }\n}\n\n.lb-ai-chat-content {\n position: relative;\n flex: 1 0 auto;\n}\n\n.lb-ai-chat-footer-actions {\n position: absolute;\n inset-inline: 0;\n inset-block-start: calc(-1 * var(--lb-spacing));\n display: flex;\n justify-content: center;\n pointer-events: none;\n transform: translateY(-100%);\n}\n\n.lb-ai-chat-scroll-indicator {\n border-radius: $lb-radius-full;\n color: var(--lb-foreground-moderate);\n opacity: 0;\n pointer-events: none;\n transition-property: transform, opacity, background;\n transform: scale(0.8);\n transform-origin: bottom;\n\n &:where([data-visible]) {\n opacity: 1;\n pointer-events: all;\n transform: scale(1);\n }\n}\n\n.lb-ai-chat-scroll-indicator-button {\n @include button-base;\n\n padding: calc(0.375 * var(--lb-spacing));\n border-radius: $lb-radius-full;\n color: var(--lb-foreground-moderate);\n transition-property: opacity, color;\n\n &:where(:hover, :focus-visible) {\n color: var(--lb-foreground-secondary);\n }\n\n &::after {\n content: \"\";\n position: absolute;\n inset: 0;\n border-radius: inherit;\n pointer-events: none;\n transition-property: box-shadow;\n }\n\n &:where(:focus-visible)::after {\n box-shadow: inset var(--lb-accent) 0 0 0 2px;\n }\n}\n\n.lb-ai-chat-pending {\n user-select: none;\n animation: lb-animation-shimmer-small 5s linear infinite;\n}\n\n.lb-ai-chat-message-thinking,\n.lb-ai-chat-message-reasoning {\n inline-size: fit-content;\n max-inline-size: 100%;\n color: var(--lb-foreground-tertiary);\n\n &:where(.lb-ai-chat-pending),\n :where(.lb-ai-chat-pending) {\n color: var(--lb-foreground);\n }\n}\n\n.lb-ai-chat-message-reasoning {\n margin-block-end: calc(0.75 * var(--lb-spacing));\n\n :where(.lb-collapsible-trigger) {\n display: flex;\n gap: calc(0.25 * var(--lb-spacing));\n align-items: center;\n\n &:where(:focus-visible) {\n color: var(--lb-accent);\n\n :where(.lb-collapsible-chevron) {\n color: var(--lb-accent-moderate);\n }\n }\n }\n\n :where(.lb-collapsible-content) {\n display: flex;\n flex-direction: column;\n gap: calc(0.5 * var(--lb-spacing));\n line-height: var(--lb-line-height);\n\n :where(& > *:first-child) {\n margin-block-start: calc(0.5 * var(--lb-spacing));\n }\n }\n\n :where(.lb-prose) {\n color: var(--lb-foreground);\n font-size: 0.875em;\n opacity: 0.75;\n }\n}\n\n.lb-ai-tool {\n position: relative;\n border-radius: var(--lb-radius);\n box-shadow: inset 0 0 0 1px var(--lb-foreground-subtle);\n\n &::after {\n content: \"\";\n position: absolute;\n inset: 0;\n border-radius: inherit;\n pointer-events: none;\n transition-property: box-shadow;\n }\n\n &:where(:has(.lb-ai-tool-header:focus-visible)) {\n z-index: 1;\n\n &::after {\n box-shadow:\n var(--lb-dynamic-background) 0 0 0 2px,\n var(--lb-accent) 0 0 0 4px;\n }\n }\n}\n\n.lb-ai-tool-header {\n display: flex;\n gap: calc(0.3125 * var(--lb-spacing));\n align-items: center;\n inline-size: 100%;\n block-size: calc($lb-button-size + var(--lb-spacing));\n padding-inline: calc(0.5 * var(--lb-spacing));\n}\n\n.lb-ai-tool-header-icon-container,\n.lb-ai-tool-icon {\n display: flex;\n flex: none;\n justify-content: center;\n align-items: center;\n inline-size: $lb-button-size;\n block-size: $lb-button-size;\n}\n\n.lb-ai-tool-header-icon-container {\n color: var(--lb-foreground-moderate);\n\n &:where(:has(.lb-ai-tool-icon)) {\n margin-inline-end: calc(0.25 * var(--lb-spacing));\n }\n}\n\n.lb-ai-tool-icon {\n border-radius: calc(0.75 * var(--lb-radius));\n background: var(--lb-foreground-subtle);\n font-size: 0.875em;\n}\n\n.lb-ai-tool-header-title {\n @include truncate;\n\n margin-inline-end: calc(0.25 * var(--lb-spacing));\n color: var(--lb-foreground-secondary);\n font-size: 0.9375em;\n\n &:where(:first-child) {\n margin-inline-start: calc(0.3125 * var(--lb-spacing));\n }\n}\n\n.lb-ai-tool-header-status {\n flex: none;\n margin-inline-start: auto;\n margin-inline-end: calc(0.1875 * var(--lb-spacing));\n color: var(--lb-foreground-moderate);\n}\n\n.lb-ai-tool:where([data-result=\"error\"]) {\n box-shadow: inset 0 0 0 1px var(--lb-destructive-moderate);\n\n &:where(:has(.lb-ai-tool-header:focus-visible)) {\n &::after {\n box-shadow:\n var(--lb-dynamic-background) 0 0 0 2px,\n var(--lb-destructive) 0 0 0 4px;\n }\n }\n\n :where(.lb-ai-tool-header-status) {\n color: var(--lb-destructive);\n }\n}\n\n.lb-ai-tool-content:where(:not(:empty)) {\n padding: 0 calc(0.75 * var(--lb-spacing)) calc(0.75 * var(--lb-spacing));\n}\n\n.lb-ai-tool-inspector {\n display: flex;\n flex-direction: column;\n gap: calc(0.75 * var(--lb-spacing));\n}\n\n.lb-ai-tool-confirmation-footer {\n display: flex;\n align-items: center;\n margin-block-start: calc(0.75 * var(--lb-spacing));\n}\n\n.lb-ai-tool-confirmation-actions {\n display: flex;\n gap: calc(0.75 * var(--lb-spacing));\n justify-content: flex-end;\n align-items: center;\n margin-inline-start: auto;\n}\n\n/*************************************\n * Animations *\n *************************************/\n\n@keyframes lb-animation-slide-down {\n from {\n opacity: 0;\n transform: translateY(-4px);\n }\n\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes lb-animation-slide-up {\n from {\n opacity: 0;\n transform: translateY(4px);\n }\n\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes lb-animation-appear {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n@keyframes lb-animation-disappear {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n}\n\n@keyframes lb-animation-shimmer {\n from,\n to {\n mask-image: linear-gradient(\n 90deg,\n rgb(0 0 0 / 50%),\n #000,\n #000,\n rgb(0 0 0 / 50%)\n );\n mask-size: 400% 100%;\n }\n\n from {\n mask-position: 200% 0;\n }\n\n to {\n mask-position: -200% 0;\n }\n}\n\n@keyframes lb-animation-shimmer-small {\n from,\n to {\n mask-image: linear-gradient(\n 90deg,\n #000 0%,\n rgb(0 0 0 / 50%) 18%,\n rgb(0 0 0 / 50%) 82%,\n #000 100%\n );\n mask-size: 300% 100%;\n }\n\n from {\n mask-position: 200% 0;\n }\n\n to {\n mask-position: -100% 0;\n }\n}\n\n@keyframes lb-animation-spin {\n from {\n transform: rotate(0deg);\n }\n\n to {\n transform: rotate(360deg);\n }\n}\n","/* Because of `all: unset`, we have to re-define some of these values. */\n@mixin button-base {\n all: unset;\n position: relative;\n box-sizing: inherit;\n outline: none;\n cursor: pointer;\n user-select: none;\n transition-timing-function: var(--lb-transition-easing);\n transition-duration: var(--lb-transition-duration);\n -webkit-tap-highlight-color: transparent;\n}\n\n@mixin button {\n @include button-base;\n\n transition-property: background, color, opacity;\n\n &::after {\n content: \"\";\n position: absolute;\n inset: 0;\n border-radius: inherit;\n pointer-events: none;\n transition-property: box-shadow;\n }\n\n &:where(:focus-visible) {\n z-index: 1;\n\n &::after {\n box-shadow:\n var(--lb-dynamic-background) 0 0 0 2px,\n var(--lb-accent) 0 0 0 4px;\n }\n }\n}\n\n@mixin truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n@mixin capitalize {\n &::first-letter {\n text-transform: capitalize;\n }\n}\n\n@mixin invisible-selection {\n &::selection,\n *::selection {\n background: transparent;\n }\n}\n\n@mixin invisible-scrollbar {\n & {\n -ms-overflow-style: none;\n scrollbar-width: none;\n }\n\n &::-webkit-scrollbar {\n display: none;\n }\n}\n\n@mixin firefox-only {\n @supports (-moz-appearance: none) {\n @content;\n }\n}\n\n@mixin not-firefox {\n @supports not (-moz-appearance: none) {\n @content;\n }\n}\n\n@mixin safari-only {\n @supports (background: -webkit-named-image(i)) {\n @content;\n }\n}\n\n@mixin not-safari {\n @supports not (background: -webkit-named-image(i)) {\n @content;\n }\n}\n"]}
|
|
@@ -1,161 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
-
var core = require('@liveblocks/core');
|
|
5
|
-
var react$1 = require('@liveblocks/react');
|
|
6
|
-
var _private = require('@liveblocks/react/_private');
|
|
7
|
-
var react = require('react');
|
|
8
|
-
var Send = require('../../icons/Send.cjs');
|
|
9
|
-
var Stop = require('../../icons/Stop.cjs');
|
|
10
|
-
var overrides = require('../../overrides.cjs');
|
|
11
|
-
var index = require('../../primitives/AiChatComposer/index.cjs');
|
|
12
|
-
var cn = require('../../utils/cn.cjs');
|
|
13
|
-
var Button = require('./Button.cjs');
|
|
14
|
-
var Tooltip = require('./Tooltip.cjs');
|
|
15
|
-
var TooltipPrimitive = require('@radix-ui/react-tooltip');
|
|
16
|
-
|
|
17
|
-
const AiChatComposer = react.forwardRef(
|
|
18
|
-
({
|
|
19
|
-
defaultValue,
|
|
20
|
-
onComposerSubmit,
|
|
21
|
-
disabled,
|
|
22
|
-
autoFocus,
|
|
23
|
-
overrides: overrides$1,
|
|
24
|
-
className,
|
|
25
|
-
chatId,
|
|
26
|
-
branchId,
|
|
27
|
-
copilotId,
|
|
28
|
-
stream = true,
|
|
29
|
-
onUserMessageCreate,
|
|
30
|
-
...props
|
|
31
|
-
}, forwardedRef) => {
|
|
32
|
-
const $ = overrides.useOverrides(overrides$1);
|
|
33
|
-
const client = react$1.useClient();
|
|
34
|
-
const getLastMessageId = react.useCallback((messages) => {
|
|
35
|
-
const lastMessage = messages[messages.length - 1];
|
|
36
|
-
if (lastMessage === void 0)
|
|
37
|
-
return null;
|
|
38
|
-
return lastMessage.id;
|
|
39
|
-
}, []);
|
|
40
|
-
const getAbortableMessageId = react.useCallback((messages) => {
|
|
41
|
-
return messages.find(
|
|
42
|
-
(m) => m.role === "assistant" && (m.status === "generating" || m.status === "awaiting-tool")
|
|
43
|
-
)?.id;
|
|
44
|
-
}, []);
|
|
45
|
-
const messages\u03A3 = client[core.kInternal].ai.signals.getChatMessagesForBranch\u03A3(
|
|
46
|
-
chatId,
|
|
47
|
-
branchId
|
|
48
|
-
);
|
|
49
|
-
const abortableMessageId = _private.useSignal(messages\u03A3, getAbortableMessageId);
|
|
50
|
-
const lastMessageId = _private.useSignal(messages\u03A3, getLastMessageId);
|
|
51
|
-
const handleComposerSubmit = react.useCallback(
|
|
52
|
-
(message, event) => {
|
|
53
|
-
if (abortableMessageId !== void 0) {
|
|
54
|
-
event.preventDefault();
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
onComposerSubmit?.(message, event);
|
|
58
|
-
if (event.isDefaultPrevented())
|
|
59
|
-
return;
|
|
60
|
-
const content = [{ type: "text", text: message.text }];
|
|
61
|
-
const newMessageId = client[core.kInternal].ai[core.kInternal].context.messagesStore.createOptimistically(
|
|
62
|
-
chatId,
|
|
63
|
-
"user",
|
|
64
|
-
lastMessageId,
|
|
65
|
-
content
|
|
66
|
-
);
|
|
67
|
-
onUserMessageCreate?.({ id: newMessageId });
|
|
68
|
-
const targetMessageId = client[core.kInternal].ai[core.kInternal].context.messagesStore.createOptimistically(
|
|
69
|
-
chatId,
|
|
70
|
-
"assistant",
|
|
71
|
-
newMessageId
|
|
72
|
-
);
|
|
73
|
-
client[core.kInternal].ai.askUserMessageInChat(
|
|
74
|
-
chatId,
|
|
75
|
-
{ id: newMessageId, parentMessageId: lastMessageId, content },
|
|
76
|
-
targetMessageId,
|
|
77
|
-
{
|
|
78
|
-
stream,
|
|
79
|
-
copilotId
|
|
80
|
-
}
|
|
81
|
-
);
|
|
82
|
-
},
|
|
83
|
-
[
|
|
84
|
-
onComposerSubmit,
|
|
85
|
-
onUserMessageCreate,
|
|
86
|
-
client,
|
|
87
|
-
chatId,
|
|
88
|
-
lastMessageId,
|
|
89
|
-
abortableMessageId,
|
|
90
|
-
stream,
|
|
91
|
-
copilotId
|
|
92
|
-
]
|
|
93
|
-
);
|
|
94
|
-
return /* @__PURE__ */ jsxRuntime.jsx(TooltipPrimitive.TooltipProvider, {
|
|
95
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(index.AiChatComposerForm, {
|
|
96
|
-
className: cn.cn(
|
|
97
|
-
"lb-root lb-ai-chat-composer lb-ai-chat-composer-form",
|
|
98
|
-
className
|
|
99
|
-
),
|
|
100
|
-
dir: $.dir,
|
|
101
|
-
...props,
|
|
102
|
-
disabled,
|
|
103
|
-
ref: forwardedRef,
|
|
104
|
-
onComposerSubmit: handleComposerSubmit,
|
|
105
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs("div", {
|
|
106
|
-
className: "lb-ai-chat-composer-editor-container",
|
|
107
|
-
children: [
|
|
108
|
-
/* @__PURE__ */ jsxRuntime.jsx(index.AiChatComposerEditor, {
|
|
109
|
-
autoFocus,
|
|
110
|
-
className: "lb-ai-chat-composer-editor",
|
|
111
|
-
placeholder: $.AI_CHAT_COMPOSER_PLACEHOLDER,
|
|
112
|
-
defaultValue
|
|
113
|
-
}),
|
|
114
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", {
|
|
115
|
-
className: "lb-ai-chat-composer-footer",
|
|
116
|
-
children: [
|
|
117
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", {
|
|
118
|
-
className: "lb-ai-chat-composer-editor-actions"
|
|
119
|
-
}),
|
|
120
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", {
|
|
121
|
-
className: "lb-ai-chat-composer-actions",
|
|
122
|
-
children: abortableMessageId === void 0 ? /* @__PURE__ */ jsxRuntime.jsx(Tooltip.ShortcutTooltip, {
|
|
123
|
-
content: $.AI_CHAT_COMPOSER_SEND,
|
|
124
|
-
shortcut: "Enter",
|
|
125
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(index.AiChatComposerSubmit, {
|
|
126
|
-
asChild: true,
|
|
127
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(Button.Button, {
|
|
128
|
-
onPointerDown: (event) => event.preventDefault(),
|
|
129
|
-
onClick: (event) => event.stopPropagation(),
|
|
130
|
-
className: "lb-ai-chat-composer-action",
|
|
131
|
-
variant: "primary",
|
|
132
|
-
"aria-label": $.AI_CHAT_COMPOSER_SEND,
|
|
133
|
-
icon: /* @__PURE__ */ jsxRuntime.jsx(Send.SendIcon, {})
|
|
134
|
-
})
|
|
135
|
-
})
|
|
136
|
-
}) : /* @__PURE__ */ jsxRuntime.jsx(Tooltip.ShortcutTooltip, {
|
|
137
|
-
content: $.AI_CHAT_COMPOSER_ABORT,
|
|
138
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(Button.Button, {
|
|
139
|
-
onPointerDown: (event) => event.preventDefault(),
|
|
140
|
-
onClick: (event) => {
|
|
141
|
-
event.stopPropagation();
|
|
142
|
-
client[core.kInternal].ai.abort(abortableMessageId);
|
|
143
|
-
},
|
|
144
|
-
className: "lb-ai-chat-composer-action",
|
|
145
|
-
variant: "secondary",
|
|
146
|
-
"aria-label": $.AI_CHAT_COMPOSER_ABORT,
|
|
147
|
-
icon: /* @__PURE__ */ jsxRuntime.jsx(Stop.StopIcon, {})
|
|
148
|
-
})
|
|
149
|
-
})
|
|
150
|
-
})
|
|
151
|
-
]
|
|
152
|
-
})
|
|
153
|
-
]
|
|
154
|
-
})
|
|
155
|
-
})
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
);
|
|
159
|
-
|
|
160
|
-
exports.AiChatComposer = AiChatComposer;
|
|
161
|
-
//# sourceMappingURL=AiChatComposer.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AiChatComposer.cjs","sources":["../../../src/components/internal/AiChatComposer.tsx"],"sourcesContent":["import type {\n AiChatMessage,\n CopilotId,\n MessageId,\n WithNavigation,\n} from \"@liveblocks/core\";\nimport { kInternal } from \"@liveblocks/core\";\nimport { useClient } from \"@liveblocks/react\";\nimport { useSignal } from \"@liveblocks/react/_private\";\nimport {\n type ComponentProps,\n type FormEvent,\n forwardRef,\n useCallback,\n} from \"react\";\n\nimport { SendIcon } from \"../../icons/Send\";\nimport { StopIcon } from \"../../icons/Stop\";\nimport {\n type AiChatComposerOverrides,\n type GlobalOverrides,\n useOverrides,\n} from \"../../overrides\";\nimport * as ComposerPrimitive from \"../../primitives/AiChatComposer\";\nimport { cn } from \"../../utils/cn\";\nimport { Button } from \"./Button\";\nimport { ShortcutTooltip, TooltipProvider } from \"./Tooltip\";\n\ntype UiChatMessage = WithNavigation<AiChatMessage>;\n\n/* -------------------------------------------------------------------------------------------------\n * AiChatComposer\n * -----------------------------------------------------------------------------------------------*/\nexport interface AiChatComposerProps extends ComponentProps<\"form\"> {\n /**\n * The composer's initial value.\n */\n defaultValue?: string;\n /**\n * The event handler called when a chat message is submitted.\n */\n onComposerSubmit?: (\n message: {\n /**\n * The submitted message text.\n */\n text: string;\n },\n event: FormEvent<HTMLFormElement>\n ) => void;\n\n /**\n * @internal\n * The event handler called when a user chat message is created optimistically.\n */\n onUserMessageCreate?: (message: {\n /**\n * The created user message id.\n */\n id: MessageId;\n }) => void;\n /**\n * Whether the composer is disabled.\n */\n disabled?: boolean;\n /**\n * Whether to focus the editor on mount.\n */\n autoFocus?: boolean;\n /**\n * Override the component's strings.\n */\n overrides?: Partial<GlobalOverrides & AiChatComposerOverrides>;\n /**\n * The id of the chat the composer belongs to.\n */\n chatId: string;\n /**\n * The id of the copilot to use to send the message.\n */\n copilotId?: CopilotId;\n /**\n * @internal\n */\n branchId?: MessageId;\n /**\n * @internal\n */\n stream?: boolean;\n}\n\nexport const AiChatComposer = forwardRef<HTMLFormElement, AiChatComposerProps>(\n (\n {\n defaultValue,\n onComposerSubmit,\n disabled,\n autoFocus,\n overrides,\n className,\n chatId,\n branchId,\n copilotId,\n stream = true,\n onUserMessageCreate,\n ...props\n },\n forwardedRef\n ) => {\n const $ = useOverrides(overrides);\n const client = useClient();\n\n const getLastMessageId = useCallback((messages: UiChatMessage[]) => {\n const lastMessage = messages[messages.length - 1];\n if (lastMessage === undefined) return null;\n return lastMessage.id;\n }, []);\n\n const getAbortableMessageId = useCallback((messages: UiChatMessage[]) => {\n return messages.find(\n (m) =>\n m.role === \"assistant\" &&\n (m.status === \"generating\" || m.status === \"awaiting-tool\")\n )?.id;\n }, []);\n\n const messagesΣ = client[kInternal].ai.signals.getChatMessagesForBranchΣ(\n chatId,\n branchId\n );\n\n const abortableMessageId = useSignal(messagesΣ, getAbortableMessageId);\n const lastMessageId = useSignal(messagesΣ, getLastMessageId);\n\n const handleComposerSubmit = useCallback(\n (message: { text: string }, event: FormEvent<HTMLFormElement>) => {\n if (abortableMessageId !== undefined) {\n event.preventDefault();\n return;\n }\n\n onComposerSubmit?.(message, event);\n if (event.isDefaultPrevented()) return;\n\n const content = [{ type: \"text\" as const, text: message.text }];\n const newMessageId = client[kInternal].ai[\n kInternal\n ].context.messagesStore.createOptimistically(\n chatId,\n \"user\",\n lastMessageId,\n content\n );\n onUserMessageCreate?.({ id: newMessageId });\n\n const targetMessageId = client[kInternal].ai[\n kInternal\n ].context.messagesStore.createOptimistically(\n chatId,\n \"assistant\",\n newMessageId\n );\n\n client[kInternal].ai.askUserMessageInChat(\n chatId,\n { id: newMessageId, parentMessageId: lastMessageId, content },\n targetMessageId,\n {\n stream,\n copilotId,\n }\n );\n },\n [\n onComposerSubmit,\n onUserMessageCreate,\n client,\n chatId,\n lastMessageId,\n abortableMessageId,\n stream,\n copilotId,\n ]\n );\n\n return (\n <TooltipProvider>\n <ComposerPrimitive.Form\n className={cn(\n \"lb-root lb-ai-chat-composer lb-ai-chat-composer-form\",\n className\n )}\n dir={$.dir}\n {...props}\n disabled={disabled}\n ref={forwardedRef}\n onComposerSubmit={handleComposerSubmit}\n >\n <div className=\"lb-ai-chat-composer-editor-container\">\n <ComposerPrimitive.Editor\n autoFocus={autoFocus}\n className=\"lb-ai-chat-composer-editor\"\n placeholder={$.AI_CHAT_COMPOSER_PLACEHOLDER}\n defaultValue={defaultValue}\n />\n\n <div className=\"lb-ai-chat-composer-footer\">\n <div className=\"lb-ai-chat-composer-editor-actions\">\n {/* No actions for now but it makes sense to keep the DOM structure */}\n </div>\n\n <div className=\"lb-ai-chat-composer-actions\">\n {abortableMessageId === undefined ? (\n <ShortcutTooltip\n content={$.AI_CHAT_COMPOSER_SEND}\n shortcut=\"Enter\"\n >\n <ComposerPrimitive.Submit asChild>\n <Button\n onPointerDown={(event) => event.preventDefault()}\n onClick={(event) => event.stopPropagation()}\n className=\"lb-ai-chat-composer-action\"\n variant=\"primary\"\n aria-label={$.AI_CHAT_COMPOSER_SEND}\n icon={<SendIcon />}\n />\n </ComposerPrimitive.Submit>\n </ShortcutTooltip>\n ) : (\n <ShortcutTooltip content={$.AI_CHAT_COMPOSER_ABORT}>\n <Button\n onPointerDown={(event) => event.preventDefault()}\n onClick={(event) => {\n event.stopPropagation();\n client[kInternal].ai.abort(abortableMessageId);\n }}\n className=\"lb-ai-chat-composer-action\"\n variant=\"secondary\"\n aria-label={$.AI_CHAT_COMPOSER_ABORT}\n icon={<StopIcon />}\n />\n </ShortcutTooltip>\n )}\n </div>\n </div>\n </div>\n </ComposerPrimitive.Form>\n </TooltipProvider>\n );\n }\n);\n"],"names":["forwardRef","overrides","useOverrides","useClient","useCallback","kInternal","useSignal","jsx","TooltipProvider","ComposerPrimitive.Form","cn","jsxs","ComposerPrimitive.Editor","ShortcutTooltip","ComposerPrimitive.Submit","Button","SendIcon","StopIcon"],"mappings":";;;;;;;;;;;;;;;;AA2FO,MAAM,cAAiB,GAAAA,gBAAA;AAAA,EAC5B,CACE;AAAA,IACE,YAAA;AAAA,IACA,gBAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,eACAC,WAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAS,GAAA,IAAA;AAAA,IACT,mBAAA;AAAA,IACG,GAAA,KAAA;AAAA,KAEL,YACG,KAAA;AACH,IAAM,MAAA,CAAA,GAAIC,uBAAaD,WAAS,CAAA,CAAA;AAChC,IAAA,MAAM,SAASE,iBAAU,EAAA,CAAA;AAEzB,IAAM,MAAA,gBAAA,GAAmBC,iBAAY,CAAA,CAAC,QAA8B,KAAA;AAClE,MAAM,MAAA,WAAA,GAAc,QAAS,CAAA,QAAA,CAAS,MAAS,GAAA,CAAA,CAAA,CAAA;AAC/C,MAAA,IAAI,WAAgB,KAAA,KAAA,CAAA;AAAW,QAAO,OAAA,IAAA,CAAA;AACtC,MAAA,OAAO,WAAY,CAAA,EAAA,CAAA;AAAA,KACrB,EAAG,EAAE,CAAA,CAAA;AAEL,IAAM,MAAA,qBAAA,GAAwBA,iBAAY,CAAA,CAAC,QAA8B,KAAA;AACvE,MAAA,OAAO,QAAS,CAAA,IAAA;AAAA,QACd,CAAC,MACC,CAAE,CAAA,IAAA,KAAS,gBACV,CAAE,CAAA,MAAA,KAAW,YAAgB,IAAA,CAAA,CAAE,MAAW,KAAA,eAAA,CAAA;AAAA,OAC5C,EAAA,EAAA,CAAA;AAAA,KACL,EAAG,EAAE,CAAA,CAAA;AAEL,IAAA,MAAM,cAAY,GAAA,MAAA,CAAOC,cAAW,CAAA,CAAA,EAAA,CAAG,OAAQ,CAAA,8BAAA;AAAA,MAC7C,MAAA;AAAA,MACA,QAAA;AAAA,KACF,CAAA;AAEA,IAAM,MAAA,kBAAA,GAAqBC,kBAAU,CAAA,cAAA,EAAW,qBAAqB,CAAA,CAAA;AACrE,IAAM,MAAA,aAAA,GAAgBA,kBAAU,CAAA,cAAA,EAAW,gBAAgB,CAAA,CAAA;AAE3D,IAAA,MAAM,oBAAuB,GAAAF,iBAAA;AAAA,MAC3B,CAAC,SAA2B,KAAsC,KAAA;AAChE,QAAA,IAAI,uBAAuB,KAAW,CAAA,EAAA;AACpC,UAAA,KAAA,CAAM,cAAe,EAAA,CAAA;AACrB,UAAA,OAAA;AAAA,SACF;AAEA,QAAA,gBAAA,GAAmB,SAAS,KAAK,CAAA,CAAA;AACjC,QAAA,IAAI,MAAM,kBAAmB,EAAA;AAAG,UAAA,OAAA;AAEhC,QAAM,MAAA,OAAA,GAAU,CAAC,EAAE,IAAA,EAAM,QAAiB,IAAM,EAAA,OAAA,CAAQ,MAAM,CAAA,CAAA;AAC9D,QAAA,MAAM,eAAe,MAAO,CAAAC,cAAA,CAAA,CAAW,EACrC,CAAAA,cAAA,CAAA,CACA,QAAQ,aAAc,CAAA,oBAAA;AAAA,UACtB,MAAA;AAAA,UACA,MAAA;AAAA,UACA,aAAA;AAAA,UACA,OAAA;AAAA,SACF,CAAA;AACA,QAAsB,mBAAA,GAAA,EAAE,EAAI,EAAA,YAAA,EAAc,CAAA,CAAA;AAE1C,QAAA,MAAM,kBAAkB,MAAO,CAAAA,cAAA,CAAA,CAAW,EACxC,CAAAA,cAAA,CAAA,CACA,QAAQ,aAAc,CAAA,oBAAA;AAAA,UACtB,MAAA;AAAA,UACA,WAAA;AAAA,UACA,YAAA;AAAA,SACF,CAAA;AAEA,QAAA,MAAA,CAAOA,gBAAW,EAAG,CAAA,oBAAA;AAAA,UACnB,MAAA;AAAA,UACA,EAAE,EAAA,EAAI,YAAc,EAAA,eAAA,EAAiB,eAAe,OAAQ,EAAA;AAAA,UAC5D,eAAA;AAAA,UACA;AAAA,YACE,MAAA;AAAA,YACA,SAAA;AAAA,WACF;AAAA,SACF,CAAA;AAAA,OACF;AAAA,MACA;AAAA,QACE,gBAAA;AAAA,QACA,mBAAA;AAAA,QACA,MAAA;AAAA,QACA,MAAA;AAAA,QACA,aAAA;AAAA,QACA,kBAAA;AAAA,QACA,MAAA;AAAA,QACA,SAAA;AAAA,OACF;AAAA,KACF,CAAA;AAEA,IAAA,uBACGE,cAAA,CAAAC,gCAAA,EAAA;AAAA,MACC,QAAA,kBAAAD,cAAA,CAACE,wBAAA,EAAA;AAAA,QACC,SAAW,EAAAC,KAAA;AAAA,UACT,sDAAA;AAAA,UACA,SAAA;AAAA,SACF;AAAA,QACA,KAAK,CAAE,CAAA,GAAA;AAAA,QACN,GAAG,KAAA;AAAA,QACJ,QAAA;AAAA,QACA,GAAK,EAAA,YAAA;AAAA,QACL,gBAAkB,EAAA,oBAAA;AAAA,QAElB,QAAC,kBAAAC,eAAA,CAAA,KAAA,EAAA;AAAA,UAAI,SAAU,EAAA,sCAAA;AAAA,UACb,QAAA,EAAA;AAAA,4BAAAJ,cAAA,CAACK,0BAAA,EAAA;AAAA,cACC,SAAA;AAAA,cACA,SAAU,EAAA,4BAAA;AAAA,cACV,aAAa,CAAE,CAAA,4BAAA;AAAA,cACf,YAAA;AAAA,aACF,CAAA;AAAA,4BAECD,eAAA,CAAA,KAAA,EAAA;AAAA,cAAI,SAAU,EAAA,4BAAA;AAAA,cACb,QAAA,EAAA;AAAA,gCAACJ,cAAA,CAAA,KAAA,EAAA;AAAA,kBAAI,SAAU,EAAA,oCAAA;AAAA,iBAEf,CAAA;AAAA,gCAECA,cAAA,CAAA,KAAA,EAAA;AAAA,kBAAI,SAAU,EAAA,6BAAA;AAAA,kBACZ,QAAA,EAAA,kBAAA,KAAuB,yBACrBA,cAAA,CAAAM,uBAAA,EAAA;AAAA,oBACC,SAAS,CAAE,CAAA,qBAAA;AAAA,oBACX,QAAS,EAAA,OAAA;AAAA,oBAET,QAAA,kBAAAN,cAAA,CAACO,0BAAA,EAAA;AAAA,sBAAyB,OAAO,EAAA,IAAA;AAAA,sBAC/B,QAAC,kBAAAP,cAAA,CAAAQ,aAAA,EAAA;AAAA,wBACC,aAAe,EAAA,CAAC,KAAU,KAAA,KAAA,CAAM,cAAe,EAAA;AAAA,wBAC/C,OAAS,EAAA,CAAC,KAAU,KAAA,KAAA,CAAM,eAAgB,EAAA;AAAA,wBAC1C,SAAU,EAAA,4BAAA;AAAA,wBACV,OAAQ,EAAA,SAAA;AAAA,wBACR,cAAY,CAAE,CAAA,qBAAA;AAAA,wBACd,IAAA,iCAAOC,aAAS,EAAA,EAAA,CAAA;AAAA,uBAClB,CAAA;AAAA,qBACF,CAAA;AAAA,mBACF,oBAECT,cAAA,CAAAM,uBAAA,EAAA;AAAA,oBAAgB,SAAS,CAAE,CAAA,sBAAA;AAAA,oBAC1B,QAAC,kBAAAN,cAAA,CAAAQ,aAAA,EAAA;AAAA,sBACC,aAAe,EAAA,CAAC,KAAU,KAAA,KAAA,CAAM,cAAe,EAAA;AAAA,sBAC/C,OAAA,EAAS,CAAC,KAAU,KAAA;AAClB,wBAAA,KAAA,CAAM,eAAgB,EAAA,CAAA;AACtB,wBAAO,MAAA,CAAAV,cAAA,CAAA,CAAW,EAAG,CAAA,KAAA,CAAM,kBAAkB,CAAA,CAAA;AAAA,uBAC/C;AAAA,sBACA,SAAU,EAAA,4BAAA;AAAA,sBACV,OAAQ,EAAA,WAAA;AAAA,sBACR,cAAY,CAAE,CAAA,sBAAA;AAAA,sBACd,IAAA,iCAAOY,aAAS,EAAA,EAAA,CAAA;AAAA,qBAClB,CAAA;AAAA,mBACF,CAAA;AAAA,iBAEJ,CAAA;AAAA,eAAA;AAAA,aACF,CAAA;AAAA,WAAA;AAAA,SACF,CAAA;AAAA,OACF,CAAA;AAAA,KACF,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
|