@liveblocks/react-ui 2.25.0-aiprivatebeta5 → 2.25.0-aiprivatebeta6
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 -0
- package/dist/_private/index.cjs.map +1 -1
- package/dist/_private/index.d.cts +31 -94
- package/dist/_private/index.d.ts +31 -94
- package/dist/_private/index.js +2 -0
- package/dist/_private/index.js.map +1 -1
- package/dist/components/AiChat.cjs +217 -0
- package/dist/components/AiChat.cjs.map +1 -0
- package/dist/components/AiChat.js +215 -0
- package/dist/components/AiChat.js.map +1 -0
- package/dist/components/Comment.cjs +2 -2
- package/dist/components/Comment.cjs.map +1 -1
- package/dist/components/Comment.js +1 -1
- package/dist/components/Comment.js.map +1 -1
- package/dist/components/Composer.cjs +1 -2
- package/dist/components/Composer.cjs.map +1 -1
- package/dist/components/Composer.js +1 -2
- package/dist/components/Composer.js.map +1 -1
- package/dist/components/internal/AiChatAssistantMessage.cjs +83 -124
- package/dist/components/internal/AiChatAssistantMessage.cjs.map +1 -1
- package/dist/components/internal/AiChatAssistantMessage.js +81 -122
- package/dist/components/internal/AiChatAssistantMessage.js.map +1 -1
- package/dist/components/internal/AiChatComposer.cjs +30 -266
- package/dist/components/internal/AiChatComposer.cjs.map +1 -1
- package/dist/components/internal/AiChatComposer.js +35 -267
- package/dist/components/internal/AiChatComposer.js.map +1 -1
- package/dist/components/internal/AiChatUserMessage.cjs +18 -168
- package/dist/components/internal/AiChatUserMessage.cjs.map +1 -1
- package/dist/components/internal/AiChatUserMessage.js +20 -170
- package/dist/components/internal/AiChatUserMessage.js.map +1 -1
- package/dist/constants.cjs +2 -0
- package/dist/constants.cjs.map +1 -1
- package/dist/constants.js +2 -1
- package/dist/constants.js.map +1 -1
- package/dist/icon.cjs +4 -0
- package/dist/icon.cjs.map +1 -1
- package/dist/icon.js +2 -0
- package/dist/icon.js.map +1 -1
- package/dist/icons/Copy.cjs +8 -9
- package/dist/icons/Copy.cjs.map +1 -1
- package/dist/icons/Copy.js +8 -9
- package/dist/icons/Copy.js.map +1 -1
- package/dist/icons/Retry.cjs +21 -0
- package/dist/icons/Retry.cjs.map +1 -0
- package/dist/icons/Retry.js +19 -0
- package/dist/icons/Retry.js.map +1 -0
- package/dist/icons/index.cjs +4 -0
- package/dist/icons/index.cjs.map +1 -1
- package/dist/icons/index.js +2 -0
- package/dist/icons/index.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +32 -43
- package/dist/index.d.ts +32 -43
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/overrides.cjs +10 -10
- package/dist/overrides.cjs.map +1 -1
- package/dist/overrides.js +10 -10
- package/dist/overrides.js.map +1 -1
- package/dist/primitives/AiChatComposer/index.cjs +203 -0
- package/dist/primitives/AiChatComposer/index.cjs.map +1 -0
- package/dist/primitives/AiChatComposer/index.js +196 -0
- package/dist/primitives/AiChatComposer/index.js.map +1 -0
- package/dist/primitives/Comment/index.cjs +2 -2
- package/dist/primitives/Comment/index.cjs.map +1 -1
- package/dist/primitives/Comment/index.js +1 -1
- package/dist/primitives/Comment/index.js.map +1 -1
- package/dist/primitives/Composer/index.cjs +19 -14
- package/dist/primitives/Composer/index.cjs.map +1 -1
- package/dist/primitives/Composer/index.js +18 -13
- package/dist/primitives/Composer/index.js.map +1 -1
- package/dist/{slate → primitives/Composer/slate}/plugins/auto-formatting.cjs +3 -3
- package/dist/primitives/Composer/slate/plugins/auto-formatting.cjs.map +1 -0
- package/dist/{slate → primitives/Composer/slate}/plugins/auto-formatting.js +3 -3
- package/dist/primitives/Composer/slate/plugins/auto-formatting.js.map +1 -0
- package/dist/{slate → primitives/Composer/slate}/plugins/auto-links.cjs +7 -2
- package/dist/primitives/Composer/slate/plugins/auto-links.cjs.map +1 -0
- package/dist/{slate → primitives/Composer/slate}/plugins/auto-links.js +8 -3
- package/dist/primitives/Composer/slate/plugins/auto-links.js.map +1 -0
- package/dist/{slate → primitives/Composer/slate}/plugins/custom-links.cjs +8 -3
- package/dist/primitives/Composer/slate/plugins/custom-links.cjs.map +1 -0
- package/dist/{slate → primitives/Composer/slate}/plugins/custom-links.js +9 -4
- package/dist/primitives/Composer/slate/plugins/custom-links.js.map +1 -0
- package/dist/{slate → primitives/Composer/slate}/plugins/mentions.cjs +9 -10
- package/dist/primitives/Composer/slate/plugins/mentions.cjs.map +1 -0
- package/dist/{slate → primitives/Composer/slate}/plugins/mentions.js +6 -6
- package/dist/primitives/Composer/slate/plugins/mentions.js.map +1 -0
- package/dist/{slate → primitives/Composer/slate}/plugins/paste.cjs +1 -1
- package/dist/primitives/Composer/slate/plugins/paste.cjs.map +1 -0
- package/dist/{slate → primitives/Composer/slate}/plugins/paste.js +1 -1
- package/dist/primitives/Composer/slate/plugins/paste.js.map +1 -0
- package/dist/primitives/Composer/utils.cjs +4 -4
- package/dist/primitives/Composer/utils.cjs.map +1 -1
- package/dist/primitives/Composer/utils.js +4 -4
- package/dist/primitives/Composer/utils.js.map +1 -1
- package/dist/primitives/index.cjs +2 -5
- package/dist/primitives/index.cjs.map +1 -1
- package/dist/primitives/index.d.cts +33 -62
- package/dist/primitives/index.d.ts +33 -62
- package/dist/primitives/index.js +6 -5
- package/dist/primitives/index.js.map +1 -1
- package/dist/primitives/internal/{Collapsible.cjs → Collapsible/index.cjs} +23 -17
- package/dist/primitives/internal/Collapsible/index.cjs.map +1 -0
- package/dist/primitives/internal/{Collapsible.js → Collapsible/index.js} +23 -17
- package/dist/primitives/internal/Collapsible/index.js.map +1 -0
- package/dist/primitives/slate/plugins/empty-clear-formatting.cjs.map +1 -0
- package/dist/primitives/slate/plugins/empty-clear-formatting.js.map +1 -0
- package/dist/{slate → primitives/slate}/plugins/normalize.cjs +0 -5
- package/dist/primitives/slate/plugins/normalize.cjs.map +1 -0
- package/dist/{slate → primitives/slate}/plugins/normalize.js +0 -5
- package/dist/primitives/slate/plugins/normalize.js.map +1 -0
- package/dist/primitives/slate/utils/get-character.cjs.map +1 -0
- package/dist/primitives/slate/utils/get-character.js.map +1 -0
- package/dist/primitives/slate/utils/get-dom-range.cjs.map +1 -0
- package/dist/primitives/slate/utils/get-dom-range.js.map +1 -0
- package/dist/primitives/slate/utils/get-match-range.cjs.map +1 -0
- package/dist/primitives/slate/utils/get-match-range.js.map +1 -0
- package/dist/primitives/slate/utils/is-empty-string.cjs.map +1 -0
- package/dist/primitives/slate/utils/is-empty-string.js.map +1 -0
- package/dist/primitives/slate/utils/is-empty.cjs.map +1 -0
- package/dist/primitives/slate/utils/is-empty.js.map +1 -0
- package/dist/primitives/slate/utils/is-text.cjs.map +1 -0
- package/dist/primitives/slate/utils/is-text.js.map +1 -0
- package/dist/primitives/slate/utils/is-whitespace-character.cjs.map +1 -0
- package/dist/primitives/slate/utils/is-whitespace-character.js.map +1 -0
- package/dist/{slate → primitives/slate}/utils/marks.cjs +9 -9
- package/dist/primitives/slate/utils/marks.cjs.map +1 -0
- package/dist/{slate → primitives/slate}/utils/marks.js +9 -9
- package/dist/primitives/slate/utils/marks.js.map +1 -0
- package/dist/primitives/slate/utils/selection-contains-inlines.cjs.map +1 -0
- package/dist/primitives/slate/utils/selection-contains-inlines.js.map +1 -0
- package/dist/version.cjs +1 -1
- package/dist/version.js +1 -1
- package/package.json +4 -4
- package/src/styles/index.css +119 -133
- package/src/styles/utils.css +7 -2
- package/styles.css +1 -1
- package/styles.css.map +1 -1
- package/dist/components/AiChat/AiChat.cjs +0 -211
- package/dist/components/AiChat/AiChat.cjs.map +0 -1
- package/dist/components/AiChat/AiChat.js +0 -209
- package/dist/components/AiChat/AiChat.js.map +0 -1
- package/dist/primitives/Chat/Composer/index.cjs +0 -323
- package/dist/primitives/Chat/Composer/index.cjs.map +0 -1
- package/dist/primitives/Chat/Composer/index.js +0 -315
- package/dist/primitives/Chat/Composer/index.js.map +0 -1
- package/dist/primitives/internal/Collapsible.cjs.map +0 -1
- package/dist/primitives/internal/Collapsible.js.map +0 -1
- package/dist/slate/plugins/auto-formatting.cjs.map +0 -1
- package/dist/slate/plugins/auto-formatting.js.map +0 -1
- package/dist/slate/plugins/auto-links.cjs.map +0 -1
- package/dist/slate/plugins/auto-links.js.map +0 -1
- package/dist/slate/plugins/custom-links.cjs.map +0 -1
- package/dist/slate/plugins/custom-links.js.map +0 -1
- package/dist/slate/plugins/empty-clear-formatting.cjs.map +0 -1
- package/dist/slate/plugins/empty-clear-formatting.js.map +0 -1
- package/dist/slate/plugins/mentions.cjs.map +0 -1
- package/dist/slate/plugins/mentions.js.map +0 -1
- package/dist/slate/plugins/normalize.cjs.map +0 -1
- package/dist/slate/plugins/normalize.js.map +0 -1
- package/dist/slate/plugins/paste.cjs.map +0 -1
- package/dist/slate/plugins/paste.js.map +0 -1
- package/dist/slate/utils/get-character.cjs.map +0 -1
- package/dist/slate/utils/get-character.js.map +0 -1
- package/dist/slate/utils/get-dom-range.cjs.map +0 -1
- package/dist/slate/utils/get-dom-range.js.map +0 -1
- package/dist/slate/utils/get-match-range.cjs.map +0 -1
- package/dist/slate/utils/get-match-range.js.map +0 -1
- package/dist/slate/utils/is-empty-string.cjs.map +0 -1
- package/dist/slate/utils/is-empty-string.js.map +0 -1
- package/dist/slate/utils/is-empty.cjs.map +0 -1
- package/dist/slate/utils/is-empty.js.map +0 -1
- package/dist/slate/utils/is-text.cjs.map +0 -1
- package/dist/slate/utils/is-text.js.map +0 -1
- package/dist/slate/utils/is-whitespace-character.cjs.map +0 -1
- package/dist/slate/utils/is-whitespace-character.js.map +0 -1
- package/dist/slate/utils/marks.cjs.map +0 -1
- package/dist/slate/utils/marks.js.map +0 -1
- package/dist/slate/utils/selection-contains-inlines.cjs.map +0 -1
- package/dist/slate/utils/selection-contains-inlines.js.map +0 -1
- /package/dist/{slate → primitives/slate}/plugins/empty-clear-formatting.cjs +0 -0
- /package/dist/{slate → primitives/slate}/plugins/empty-clear-formatting.js +0 -0
- /package/dist/{slate → primitives/slate}/utils/get-character.cjs +0 -0
- /package/dist/{slate → primitives/slate}/utils/get-character.js +0 -0
- /package/dist/{slate → primitives/slate}/utils/get-dom-range.cjs +0 -0
- /package/dist/{slate → primitives/slate}/utils/get-dom-range.js +0 -0
- /package/dist/{slate → primitives/slate}/utils/get-match-range.cjs +0 -0
- /package/dist/{slate → primitives/slate}/utils/get-match-range.js +0 -0
- /package/dist/{slate → primitives/slate}/utils/is-empty-string.cjs +0 -0
- /package/dist/{slate → primitives/slate}/utils/is-empty-string.js +0 -0
- /package/dist/{slate → primitives/slate}/utils/is-empty.cjs +0 -0
- /package/dist/{slate → primitives/slate}/utils/is-empty.js +0 -0
- /package/dist/{slate → primitives/slate}/utils/is-text.cjs +0 -0
- /package/dist/{slate → primitives/slate}/utils/is-text.js +0 -0
- /package/dist/{slate → primitives/slate}/utils/is-whitespace-character.cjs +0 -0
- /package/dist/{slate → primitives/slate}/utils/is-whitespace-character.js +0 -0
- /package/dist/{slate → primitives/slate}/utils/selection-contains-inlines.cjs +0 -0
- /package/dist/{slate → primitives/slate}/utils/selection-contains-inlines.js +0 -0
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-small: $lb-elevation-shadow-small;\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=\"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 * 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@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\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 @include capitalize;\n\n min-block-size: $lb-button-size;\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) {\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 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\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 * Chat Composer *\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-form {\n position: relative;\n background: var(--lb-dynamic-background);\n color: var(--lb-foreground);\n transition-property: background;\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 composer attachments *\n *************************************/\n.lb-ai-chat-composer-attachments {\n display: flex;\n flex-direction: column;\n gap: calc(0.75 * var(--lb-spacing));\n padding-inline: var(--lb-spacing);\n padding-block-start: calc(0.75 * var(--lb-spacing));\n}\n\n.lb-ai-chat-composer-editor-container:where([data-drop]) * {\n pointer-events: none;\n}\n\n/*************************************\n * Chat message *\n *************************************/\n.lb-ai-chat-user-message {\n display: flex;\n flex-direction: column;\n gap: calc(0.75 * var(--lb-spacing));\n\n &,\n * {\n line-height: var(--lb-line-height);\n }\n}\n\n.lb-ai-chat-user-message-content {\n padding: calc(0.75 * var(--lb-spacing)) calc(1.375 * var(--lb-spacing));\n border-radius: calc(3 * var(--lb-radius));\n background: var(--lb-background-foreground-faint);\n color: var(--lb-foreground);\n white-space: break-spaces;\n}\n\n.lb-ai-chat-user-message-attachments {\n display: flex;\n flex-direction: column;\n gap: calc(0.75 * var(--lb-spacing));\n}\n\n.lb-ai-chat-user-message-media-attachments {\n display: flex;\n flex-wrap: wrap;\n gap: calc(0.75 * var(--lb-spacing));\n justify-content: flex-end;\n}\n\n.lb-ai-chat-user-message-attachment {\n flex-shrink: 1;\n flex-basis: 300px;\n}\n\n.lb-ai-chat-assistant-message {\n display: flex;\n flex-direction: column;\n gap: calc(0.75 * var(--lb-spacing));\n color: var(--lb-foreground);\n\n @media (hover: hover) {\n &:where(.lb-ai-chat-assistant-message\\:show-actions-hover) {\n :where(.lb-ai-chat-assistant-message-actions) {\n opacity: 0;\n transition-property: opacity;\n }\n\n &:where(:is(:hover, :focus-within)) {\n :where(.lb-ai-chat-assistant-message-actions) {\n opacity: 1;\n }\n }\n }\n }\n}\n\n.lb-ai-chat-assistant-message-content {\n inline-size: 100%;\n}\n\n.lb-ai-chat-assistant-message-text-part {\n display: flex;\n flex-direction: column;\n\n &,\n * {\n line-height: var(--lb-line-height);\n }\n\n :where(p) {\n margin-block: 0.25em;\n }\n\n :where(h1, h2, h3, h4, h5, h6) {\n margin-block: 0.5em;\n font-weight: 600;\n }\n\n :where(h1) {\n font-size: 1.75em;\n }\n\n :where(h2) {\n font-size: 1.5em;\n }\n\n :where(h3) {\n font-size: 1.25em;\n }\n\n :where(h4) {\n font-size: 1.125em;\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: calc(0.75 * var(--lb-spacing));\n border-block-start: 1px solid var(--lb-foreground-subtle);\n }\n\n :where(blockquote) {\n position: relative;\n margin-block-start: calc(0.75 * var(--lb-spacing));\n padding: calc(0.375 * var(--lb-spacing)) calc(1.5 * var(--lb-spacing));\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\n :where(ol, ul) {\n margin-block: calc(0.75 * var(--lb-spacing));\n padding-inline-start: calc(1.5 * var(--lb-spacing));\n list-style-position: outside;\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: calc(0.25 * var(--lb-spacing));\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 :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(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 :where(pre) {\n margin-block: 0.25em;\n padding: var(--lb-spacing);\n border-radius: var(--lb-radius);\n box-decoration-break: clone;\n box-shadow: var(--lb-foreground-subtle) 0 0 0 1px inset;\n\n :where(code) {\n padding: 0;\n background: transparent;\n }\n }\n\n :where(strong) {\n font-weight: 600;\n }\n}\n\n.lb-ai-chat-assistant-message-thinking {\n @include truncate;\n\n user-select: none;\n animation: lb-animation-shimmer-small 8s linear infinite;\n}\n\n.lb-ai-chat-user-message-deleted,\n.lb-ai-chat-assistant-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: balance;\n}\n\n.lb-ai-chat-assitant-message-error {\n --lb-dynamic-background: var(--lb-background-destructive-subtle);\n\n position: relative;\n display: flex;\n gap: calc(0.5 * var(--lb-spacing));\n align-items: center;\n inline-size: 100%;\n padding: calc(0.75 * var(--lb-spacing));\n border-radius: var(--lb-radius);\n background: var(--lb-dynamic-background);\n color: var(--lb-destructive);\n font-size: 0.875em;\n text-wrap: balance;\n\n :where(.lb-icon-container) {\n color: var(--lb-destructive-secondary);\n }\n}\n\n.lb-ai-chat-assistant-message-reasoning-part {\n position: relative;\n display: flex;\n flex-direction: column;\n inline-size: 100%;\n color: var(--lb-foreground-secondary);\n font-size: 0.875em;\n}\n\n.lb-ai-chat-assistant-message-reasoning-part-trigger {\n @include truncate;\n\n display: flex;\n gap: calc(0.25 * var(--lb-spacing));\n align-items: center;\n\n &:where([data-reasoning]) {\n animation: lb-animation-shimmer-small 8s linear infinite;\n }\n}\n\n.lb-ai-chat-assistant-message-reasoning-part-content {\n display: flex;\n gap: calc(0.5 * var(--lb-spacing));\n line-height: var(--lb-line-height);\n\n &:where([data-state=\"open\"]) {\n margin-block-start: 0.25em;\n }\n}\n\n.lb-ai-chat-assistant-message-actions {\n display: flex;\n gap: calc(0.125 * var(--lb-spacing));\n align-items: center;\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\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-ai-chat-messages {\n display: flex;\n flex-direction: column;\n gap: calc(0.75 * 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: var(--lb-spacing);\n padding-block-end: calc(5 * var(--lb-spacing));\n}\n\n.lb-ai-chat-loading,\n.lb-ai-chat-error {\n position: relative;\n flex: 1 1 auto;\n}\n\n.lb-ai-chat-messages-user-message {\n max-inline-size: 80%;\n margin-inline-start: auto;\n}\n\n.lb-ai-chat-footer {\n position: sticky;\n inset-block-end: 0;\n display: flex;\n flex-direction: column;\n gap: calc(0.75 * var(--lb-spacing));\n inline-size: 100%;\n margin-block-start: auto;\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 * var(--lb-spacing))\n );\n pointer-events: none;\n }\n}\n\n.lb-ai-chat-footer-actions {\n position: absolute;\n inset-inline: 0;\n inset-block-start: calc(-3 * var(--lb-spacing));\n display: flex;\n justify-content: center;\n pointer-events: none;\n}\n\n.lb-ai-chat-composer {\n position: relative;\n inline-size: 100%;\n max-inline-size: var(--lb-ai-chat-container-width);\n margin-inline: auto;\n margin-block-start: auto;\n border-radius: calc(2 * var(--lb-radius));\n background: var(--lb-dynamic-background);\n box-shadow: var(--lb-elevation-shadow-small);\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-ai-chat-scroll-button {\n border-radius: $lb-radius-full;\n opacity: 0;\n pointer-events: none;\n transition-property: opacity;\n\n &:where([data-visible]) {\n opacity: 1;\n pointer-events: all;\n }\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 8%,\n rgb(0 0 0 / 50%) 20%,\n rgb(0 0 0 / 50%) 80%,\n #000 92%\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-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 these values. */\n@mixin button {\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 transition-property: background, color, opacity;\n -webkit-tap-highlight-color: transparent;\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-small: $lb-elevation-shadow-small;\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=\"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 * 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@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\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 @include capitalize;\n\n min-block-size: $lb-button-size;\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) {\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 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\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 * Chat Composer *\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-form {\n position: relative;\n background: var(--lb-dynamic-background);\n color: var(--lb-foreground);\n transition-property: background;\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: calc(0.75 * var(--lb-spacing));\n color: var(--lb-foreground);\n\n @media (hover: hover) {\n &:where(.lb-ai-chat-message\\:show-actions-hover) {\n :where(.lb-ai-chat-message-actions) {\n opacity: 0;\n transition-property: opacity;\n }\n\n &:where(:is(:hover, :focus-within)) {\n :where(.lb-ai-chat-message-actions) {\n opacity: 1;\n }\n }\n }\n }\n}\n\n.lb-ai-chat-message-content {\n inline-size: 100%;\n white-space: break-spaces;\n}\n\n.lb-ai-chat-user-message {\n :where(.lb-ai-chat-message-content) {\n padding: calc(0.5 * var(--lb-spacing)) var(--lb-spacing);\n border-radius: calc(3 * var(--lb-radius));\n background: var(--lb-background-foreground-faint);\n color: var(--lb-foreground);\n }\n}\n\n.lb-ai-chat-message-text {\n display: flex;\n flex-direction: column;\n\n &,\n * {\n line-height: var(--lb-line-height);\n }\n\n :where(p) {\n margin-block: 0.25em;\n }\n\n :where(h1, h2, h3, h4, h5, h6) {\n margin-block: 0.5em;\n font-weight: 600;\n }\n\n :where(h1) {\n font-size: 1.75em;\n }\n\n :where(h2) {\n font-size: 1.5em;\n }\n\n :where(h3) {\n font-size: 1.25em;\n }\n\n :where(h4) {\n font-size: 1.125em;\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: calc(0.75 * var(--lb-spacing));\n border-block-start: 1px solid var(--lb-foreground-subtle);\n }\n\n :where(blockquote) {\n position: relative;\n margin-block-start: calc(0.75 * var(--lb-spacing));\n padding: calc(0.375 * var(--lb-spacing)) calc(1.5 * var(--lb-spacing));\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\n :where(ol, ul) {\n margin-block: calc(0.75 * var(--lb-spacing));\n padding-inline-start: calc(1.5 * var(--lb-spacing));\n list-style-position: outside;\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: calc(0.25 * var(--lb-spacing));\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 :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(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 :where(pre) {\n margin-block: 0.25em;\n padding: var(--lb-spacing);\n border-radius: var(--lb-radius);\n box-decoration-break: clone;\n box-shadow: var(--lb-foreground-subtle) 0 0 0 1px inset;\n\n :where(code) {\n padding: 0;\n background: transparent;\n }\n }\n\n :where(strong) {\n font-weight: 600;\n }\n}\n\n.lb-ai-chat-message-tool {\n margin-block: calc(0.25 * var(--lb-spacing));\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: balance;\n}\n\n.lb-ai-chat-message-error {\n --lb-dynamic-background: var(--lb-background-destructive-subtle);\n\n position: relative;\n display: flex;\n gap: calc(0.5 * var(--lb-spacing));\n align-items: center;\n inline-size: 100%;\n padding: calc(0.75 * var(--lb-spacing));\n border-radius: var(--lb-radius);\n background: var(--lb-dynamic-background);\n color: var(--lb-destructive);\n font-size: 0.875em;\n text-wrap: balance;\n\n :where(.lb-icon-container) {\n color: var(--lb-destructive-secondary);\n }\n}\n\n.lb-ai-chat-assistant-message-collapsible {\n position: relative;\n display: flex;\n flex-direction: column;\n inline-size: 100%;\n color: var(--lb-foreground-secondary);\n font-size: 0.875em;\n}\n\n.lb-ai-chat-message-collapsible-trigger {\n @include truncate;\n\n display: flex;\n gap: calc(0.25 * var(--lb-spacing));\n align-items: center;\n cursor: pointer;\n}\n\n.lb-ai-chat-message-collapsible-content {\n display: flex;\n gap: calc(0.5 * var(--lb-spacing));\n line-height: var(--lb-line-height);\n\n &:where([data-state=\"open\"]) {\n margin-block-start: 0.25em;\n }\n}\n\n.lb-ai-chat-message-actions {\n display: flex;\n gap: calc(0.125 * var(--lb-spacing));\n align-items: center;\n}\n\n.lb-ai-chat-messages {\n display: flex;\n flex-direction: column;\n gap: calc(0.75 * 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: var(--lb-spacing);\n padding-block-end: calc(5 * var(--lb-spacing));\n\n :where(.lb-ai-chat-user-message) {\n max-inline-size: 80%;\n margin-inline-start: auto;\n\n :where(.lb-ai-chat-message-actions) {\n margin-inline-start: auto;\n }\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 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 margin-inline: auto;\n border-radius: calc(2 * var(--lb-radius));\n background: var(--lb-dynamic-background);\n box-shadow: var(--lb-elevation-shadow-small);\n }\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-composer {\n position: relative;\n inline-size: 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 @include truncate;\n\n user-select: none;\n animation: lb-animation-shimmer-small 8s linear infinite;\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 8%,\n rgb(0 0 0 / 50%) 20%,\n rgb(0 0 0 / 50%) 80%,\n #000 92%\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-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 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,211 +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 ChevronDown = require('../../icons/ChevronDown.cjs');
|
|
9
|
-
var Spinner = require('../../icons/Spinner.cjs');
|
|
10
|
-
var overrides = require('../../overrides.cjs');
|
|
11
|
-
var classNames = require('../../utils/class-names.cjs');
|
|
12
|
-
var AiChatAssistantMessage = require('../internal/AiChatAssistantMessage.cjs');
|
|
13
|
-
var AiChatComposer = require('../internal/AiChatComposer.cjs');
|
|
14
|
-
var AiChatUserMessage = require('../internal/AiChatUserMessage.cjs');
|
|
15
|
-
|
|
16
|
-
const MIN_DISTANCE_TO_BOTTOM = 50;
|
|
17
|
-
const AiChat = react.forwardRef(function({
|
|
18
|
-
chatId,
|
|
19
|
-
copilotId,
|
|
20
|
-
overrides: overrides$1,
|
|
21
|
-
contexts = [],
|
|
22
|
-
tools = {},
|
|
23
|
-
className,
|
|
24
|
-
...props
|
|
25
|
-
}, forwardedRef) {
|
|
26
|
-
const { messages, isLoading, error } = react$1.useAiChatMessages(chatId);
|
|
27
|
-
const $ = overrides.useOverrides(overrides$1);
|
|
28
|
-
const containerRef = react.useRef(null);
|
|
29
|
-
const [distanceToBottom, setDistanceToBottom] = react.useState(null);
|
|
30
|
-
const client = react$1.useClient();
|
|
31
|
-
react.useImperativeHandle(
|
|
32
|
-
forwardedRef,
|
|
33
|
-
() => containerRef.current,
|
|
34
|
-
[]
|
|
35
|
-
);
|
|
36
|
-
react.useEffect(() => {
|
|
37
|
-
const unregister = contexts.map(
|
|
38
|
-
(context) => client[core.kInternal].ai.registerChatContext(chatId, context)
|
|
39
|
-
);
|
|
40
|
-
return () => {
|
|
41
|
-
unregister.forEach((unregister2) => unregister2());
|
|
42
|
-
};
|
|
43
|
-
}, [client, chatId, contexts]);
|
|
44
|
-
react.useEffect(() => {
|
|
45
|
-
Object.entries(tools).map(
|
|
46
|
-
([key, value]) => client[core.kInternal].ai.registerChatTool(chatId, key, value)
|
|
47
|
-
);
|
|
48
|
-
return () => {
|
|
49
|
-
Object.entries(tools).map(
|
|
50
|
-
([key]) => client[core.kInternal].ai.unregisterChatTool(chatId, key)
|
|
51
|
-
);
|
|
52
|
-
};
|
|
53
|
-
}, [client, chatId, tools]);
|
|
54
|
-
react.useEffect(() => {
|
|
55
|
-
const container = containerRef.current;
|
|
56
|
-
if (container === null)
|
|
57
|
-
return;
|
|
58
|
-
function handleScrollChange() {
|
|
59
|
-
const container2 = containerRef.current;
|
|
60
|
-
if (container2 === null)
|
|
61
|
-
return;
|
|
62
|
-
setDistanceToBottom(
|
|
63
|
-
container2.scrollHeight - container2.clientHeight - container2.scrollTop
|
|
64
|
-
);
|
|
65
|
-
}
|
|
66
|
-
container.addEventListener("scroll", handleScrollChange);
|
|
67
|
-
return () => {
|
|
68
|
-
container.removeEventListener("scroll", handleScrollChange);
|
|
69
|
-
};
|
|
70
|
-
}, []);
|
|
71
|
-
react.useEffect(() => {
|
|
72
|
-
const container = containerRef.current;
|
|
73
|
-
if (container === null)
|
|
74
|
-
return;
|
|
75
|
-
setDistanceToBottom(
|
|
76
|
-
container.scrollHeight - container.clientHeight - container.scrollTop
|
|
77
|
-
);
|
|
78
|
-
}, [messages]);
|
|
79
|
-
react.useEffect(() => {
|
|
80
|
-
const container = containerRef.current;
|
|
81
|
-
if (container === null)
|
|
82
|
-
return;
|
|
83
|
-
const distanceToBottom2 = container.scrollHeight - container.clientHeight - container.scrollTop;
|
|
84
|
-
if (messages === void 0)
|
|
85
|
-
return;
|
|
86
|
-
const lastMessage = messages[messages.length - 1];
|
|
87
|
-
if (lastMessage !== void 0 && lastMessage.role === "user") {
|
|
88
|
-
container.scrollTo({
|
|
89
|
-
top: container.scrollHeight,
|
|
90
|
-
behavior: "smooth"
|
|
91
|
-
});
|
|
92
|
-
} else if (distanceToBottom2 <= MIN_DISTANCE_TO_BOTTOM) {
|
|
93
|
-
container.scrollTo({
|
|
94
|
-
top: container.scrollHeight,
|
|
95
|
-
behavior: "smooth"
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
}, [messages]);
|
|
99
|
-
react.useEffect(() => {
|
|
100
|
-
const container = containerRef.current;
|
|
101
|
-
if (container === null)
|
|
102
|
-
return;
|
|
103
|
-
const observer = new ResizeObserver(() => {
|
|
104
|
-
const container2 = containerRef.current;
|
|
105
|
-
if (container2 === null)
|
|
106
|
-
return;
|
|
107
|
-
setDistanceToBottom(
|
|
108
|
-
container2.scrollHeight - container2.clientHeight - container2.scrollTop
|
|
109
|
-
);
|
|
110
|
-
});
|
|
111
|
-
observer.observe(container);
|
|
112
|
-
return () => {
|
|
113
|
-
observer.disconnect();
|
|
114
|
-
};
|
|
115
|
-
}, []);
|
|
116
|
-
const scrollToBottomCallbackRef = react.useRef(void 0);
|
|
117
|
-
if (scrollToBottomCallbackRef.current === void 0) {
|
|
118
|
-
scrollToBottomCallbackRef.current = function() {
|
|
119
|
-
const container = containerRef.current;
|
|
120
|
-
if (container === null)
|
|
121
|
-
return;
|
|
122
|
-
container.scrollTo({
|
|
123
|
-
top: container.scrollHeight,
|
|
124
|
-
behavior: "instant"
|
|
125
|
-
});
|
|
126
|
-
};
|
|
127
|
-
}
|
|
128
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", {
|
|
129
|
-
ref: containerRef,
|
|
130
|
-
...props,
|
|
131
|
-
className: classNames.classNames("lb-root lb-ai-chat", className),
|
|
132
|
-
children: [
|
|
133
|
-
isLoading ? /* @__PURE__ */ jsxRuntime.jsx("div", {
|
|
134
|
-
className: "lb-ai-chat-loading lb-loading",
|
|
135
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(Spinner.SpinnerIcon, {})
|
|
136
|
-
}) : error !== void 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", {
|
|
137
|
-
className: "lb-ai-chat-error lb-error",
|
|
138
|
-
children: $.GET_CHAT_MESSAGES_ERROR(error)
|
|
139
|
-
}) : /* @__PURE__ */ jsxRuntime.jsx("div", {
|
|
140
|
-
className: "lb-ai-chat-messages",
|
|
141
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(Messages, {
|
|
142
|
-
messages,
|
|
143
|
-
overrides: $,
|
|
144
|
-
onDistanceToBottomChange: scrollToBottomCallbackRef.current
|
|
145
|
-
})
|
|
146
|
-
}),
|
|
147
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", {
|
|
148
|
-
className: "lb-ai-chat-footer",
|
|
149
|
-
children: [
|
|
150
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", {
|
|
151
|
-
className: "lb-ai-chat-footer-actions",
|
|
152
|
-
children: /* @__PURE__ */ jsxRuntime.jsx("button", {
|
|
153
|
-
className: "lb-ai-chat-scroll-button lb-button",
|
|
154
|
-
"data-visible": distanceToBottom !== null && distanceToBottom > MIN_DISTANCE_TO_BOTTOM ? "" : void 0,
|
|
155
|
-
"data-variant": "secondary",
|
|
156
|
-
onClick: () => {
|
|
157
|
-
const container = containerRef.current;
|
|
158
|
-
if (container === null)
|
|
159
|
-
return;
|
|
160
|
-
container.scrollTo({
|
|
161
|
-
top: container.scrollHeight,
|
|
162
|
-
behavior: "smooth"
|
|
163
|
-
});
|
|
164
|
-
},
|
|
165
|
-
children: /* @__PURE__ */ jsxRuntime.jsx("span", {
|
|
166
|
-
className: "lb-icon-container",
|
|
167
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(ChevronDown.ChevronDownIcon, {})
|
|
168
|
-
})
|
|
169
|
-
})
|
|
170
|
-
}),
|
|
171
|
-
/* @__PURE__ */ jsxRuntime.jsx(AiChatComposer.AiChatComposer, {
|
|
172
|
-
chatId,
|
|
173
|
-
copilotId,
|
|
174
|
-
className: "lb-ai-chat-composer",
|
|
175
|
-
overrides: $
|
|
176
|
-
}, chatId)
|
|
177
|
-
]
|
|
178
|
-
})
|
|
179
|
-
]
|
|
180
|
-
});
|
|
181
|
-
});
|
|
182
|
-
function Messages({
|
|
183
|
-
messages,
|
|
184
|
-
overrides: overrides$1,
|
|
185
|
-
onDistanceToBottomChange
|
|
186
|
-
}) {
|
|
187
|
-
const $ = overrides.useOverrides(overrides$1);
|
|
188
|
-
_private.useLayoutEffect(() => {
|
|
189
|
-
onDistanceToBottomChange();
|
|
190
|
-
}, [onDistanceToBottomChange]);
|
|
191
|
-
return messages.map((message) => {
|
|
192
|
-
if (message.role === "user") {
|
|
193
|
-
return /* @__PURE__ */ jsxRuntime.jsx(AiChatUserMessage.AiChatUserMessage, {
|
|
194
|
-
message,
|
|
195
|
-
overrides: $,
|
|
196
|
-
className: "lb-ai-chat-messages-user-message"
|
|
197
|
-
}, message.id);
|
|
198
|
-
} else if (message.role === "assistant") {
|
|
199
|
-
return /* @__PURE__ */ jsxRuntime.jsx(AiChatAssistantMessage.AiChatAssistantMessage, {
|
|
200
|
-
message,
|
|
201
|
-
overrides: $,
|
|
202
|
-
className: "lb-ai-chat-messages-assistant-message"
|
|
203
|
-
}, message.id);
|
|
204
|
-
} else {
|
|
205
|
-
return null;
|
|
206
|
-
}
|
|
207
|
-
});
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
exports.AiChat = AiChat;
|
|
211
|
-
//# sourceMappingURL=AiChat.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AiChat.cjs","sources":["../../../src/components/AiChat/AiChat.tsx"],"sourcesContent":["import {\n type AiChatContext,\n type ClientToolDefinition,\n type CopilotId,\n kInternal,\n type UiChatMessage,\n} from \"@liveblocks/core\";\nimport { useAiChatMessages, useClient } from \"@liveblocks/react\";\nimport { useLayoutEffect } from \"@liveblocks/react/_private\";\nimport {\n forwardRef,\n type HTMLAttributes,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from \"react\";\n\nimport { ChevronDownIcon } from \"../../icons/ChevronDown\";\nimport { SpinnerIcon } from \"../../icons/Spinner\";\nimport {\n type ChatComposerOverrides,\n type ChatMessageOverrides,\n type ChatOverrides,\n type GlobalOverrides,\n useOverrides,\n} from \"../../overrides\";\nimport { classNames } from \"../../utils/class-names\";\nimport { AiChatAssistantMessage } from \"../internal/AiChatAssistantMessage\";\nimport { AiChatComposer } from \"../internal/AiChatComposer\";\nimport { AiChatUserMessage } from \"../internal/AiChatUserMessage\";\n\n/**\n * The number of pixels from the bottom of the messages list to trigger the scroll to bottom.\n */\nconst MIN_DISTANCE_TO_BOTTOM = 50;\n\nexport type AiChatProps = HTMLAttributes<HTMLDivElement> & {\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?: string;\n /**\n * The contextual information to include in the chat. Used by the assistant when generating responses.\n */\n contexts?: AiChatContext[];\n /**\n * The contextual information to include in the chat. Used by the assistant when generating responses.\n */\n tools?: Record<string, ClientToolDefinition>;\n /**\n * Override the component's strings.\n */\n overrides?: Partial<\n GlobalOverrides &\n ChatMessageOverrides &\n ChatComposerOverrides &\n ChatOverrides\n >;\n};\nexport const AiChat = forwardRef<HTMLDivElement, AiChatProps>(function (\n {\n chatId,\n copilotId,\n overrides,\n contexts = [],\n tools = {},\n className,\n ...props\n },\n forwardedRef\n) {\n const { messages, isLoading, error } = useAiChatMessages(chatId);\n const $ = useOverrides(overrides);\n const containerRef = useRef<HTMLDivElement | null>(null);\n const [distanceToBottom, setDistanceToBottom] = useState<number | null>(null);\n const client = useClient();\n\n useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(\n forwardedRef,\n () => containerRef.current,\n []\n );\n\n // Add the provided contextual information to the chat on mount and remove on unmount\n // Note: 'contexts' will most likely be a new object on each render (unless user passes a stable object), but this won't be an issue as context addition and removal is a quick operation\n useEffect(() => {\n const unregister = contexts.map((context) =>\n client[kInternal].ai.registerChatContext(chatId, context)\n );\n return () => {\n unregister.forEach((unregister) => unregister());\n };\n }, [client, chatId, contexts]);\n\n // Register the provided tools to the chat on mount and unregister them on unmount\n useEffect(() => {\n Object.entries(tools).map(([key, value]) =>\n client[kInternal].ai.registerChatTool(chatId, key, value)\n );\n return () => {\n Object.entries(tools).map(([key]) =>\n client[kInternal].ai.unregisterChatTool(chatId, key)\n );\n };\n }, [client, chatId, tools]);\n\n useEffect(() => {\n const container = containerRef.current;\n if (container === null) return;\n function handleScrollChange() {\n const container = containerRef.current;\n if (container === null) return;\n\n setDistanceToBottom(\n container.scrollHeight - container.clientHeight - container.scrollTop\n );\n }\n container.addEventListener(\"scroll\", handleScrollChange);\n return () => {\n container.removeEventListener(\"scroll\", handleScrollChange);\n };\n }, []);\n\n useEffect(() => {\n const container = containerRef.current;\n if (container === null) return;\n\n setDistanceToBottom(\n container.scrollHeight - container.clientHeight - container.scrollTop\n );\n }, [messages]);\n\n useEffect(() => {\n const container = containerRef.current;\n if (container === null) return;\n\n const distanceToBottom =\n container.scrollHeight - container.clientHeight - container.scrollTop;\n\n if (messages === undefined) return;\n const lastMessage = messages[messages.length - 1];\n if (lastMessage !== undefined && lastMessage.role === \"user\") {\n container.scrollTo({\n top: container.scrollHeight,\n behavior: \"smooth\",\n });\n } else if (distanceToBottom <= MIN_DISTANCE_TO_BOTTOM) {\n container.scrollTo({\n top: container.scrollHeight,\n behavior: \"smooth\",\n });\n }\n }, [messages]);\n\n useEffect(() => {\n const container = containerRef.current;\n if (container === null) return;\n\n const observer = new ResizeObserver(() => {\n const container = containerRef.current;\n if (container === null) return;\n setDistanceToBottom(\n container.scrollHeight - container.clientHeight - container.scrollTop\n );\n });\n observer.observe(container);\n return () => {\n observer.disconnect();\n };\n }, []);\n\n const scrollToBottomCallbackRef = useRef<() => void>(undefined);\n if (scrollToBottomCallbackRef.current === undefined) {\n scrollToBottomCallbackRef.current = function () {\n const container = containerRef.current;\n if (container === null) return;\n\n container.scrollTo({\n top: container.scrollHeight,\n behavior: \"instant\",\n });\n };\n }\n\n return (\n <div\n ref={containerRef}\n {...props}\n className={classNames(\"lb-root lb-ai-chat\", className)}\n >\n {isLoading ? (\n <div className=\"lb-ai-chat-loading lb-loading\">\n <SpinnerIcon />\n </div>\n ) : error !== undefined ? (\n <div className=\"lb-ai-chat-error lb-error\">\n {$.GET_CHAT_MESSAGES_ERROR(error)}\n </div>\n ) : (\n <div className=\"lb-ai-chat-messages\">\n <Messages\n messages={messages}\n overrides={$}\n onDistanceToBottomChange={scrollToBottomCallbackRef.current}\n />\n </div>\n )}\n\n <div className=\"lb-ai-chat-footer\">\n <div className=\"lb-ai-chat-footer-actions\">\n <button\n className=\"lb-ai-chat-scroll-button lb-button\"\n data-visible={\n distanceToBottom !== null &&\n distanceToBottom > MIN_DISTANCE_TO_BOTTOM\n ? \"\"\n : undefined\n }\n data-variant=\"secondary\"\n onClick={() => {\n const container = containerRef.current;\n if (container === null) return;\n\n container.scrollTo({\n top: container.scrollHeight,\n behavior: \"smooth\",\n });\n }}\n >\n <span className=\"lb-icon-container\">\n <ChevronDownIcon />\n </span>\n </button>\n </div>\n <AiChatComposer\n key={chatId}\n chatId={chatId}\n copilotId={copilotId as CopilotId}\n className=\"lb-ai-chat-composer\"\n overrides={$}\n />\n </div>\n </div>\n );\n});\n\nfunction Messages({\n messages,\n overrides,\n onDistanceToBottomChange,\n}: {\n messages: readonly UiChatMessage[];\n overrides: Partial<GlobalOverrides & ChatMessageOverrides>;\n onDistanceToBottomChange: () => void;\n}) {\n const $ = useOverrides(overrides);\n\n useLayoutEffect(() => {\n onDistanceToBottomChange();\n }, [onDistanceToBottomChange]);\n\n return messages.map((message) => {\n if (message.role === \"user\") {\n return (\n <AiChatUserMessage\n key={message.id}\n message={message}\n overrides={$}\n className=\"lb-ai-chat-messages-user-message\"\n />\n );\n } else if (message.role === \"assistant\") {\n return (\n <AiChatAssistantMessage\n key={message.id}\n message={message}\n overrides={$}\n className=\"lb-ai-chat-messages-assistant-message\"\n />\n );\n } else {\n return null;\n }\n });\n}\n"],"names":["forwardRef","overrides","useAiChatMessages","useOverrides","useRef","useState","useClient","useImperativeHandle","useEffect","kInternal","unregister","container","distanceToBottom","jsxs","classNames","jsx","SpinnerIcon","ChevronDownIcon","AiChatComposer","useLayoutEffect","AiChatUserMessage","AiChatAssistantMessage"],"mappings":"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"}
|