entangle-ui 0.6.2 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/README.md +5 -3
  3. package/dist/esm/_virtual/_commonjsHelpers.js +6 -0
  4. package/dist/esm/_virtual/_commonjsHelpers.js.map +1 -0
  5. package/dist/esm/_virtual/cssesc.js +5 -1
  6. package/dist/esm/_virtual/cssesc.js.map +1 -1
  7. package/dist/esm/_virtual/picocolors.js +8 -0
  8. package/dist/esm/_virtual/picocolors.js.map +1 -0
  9. package/dist/esm/_virtual/picocolors2.js +4 -0
  10. package/dist/esm/_virtual/picocolors2.js.map +1 -0
  11. package/dist/esm/assets/src/components/editor/ChatPanel/{ChatPanel.css.ts.vanilla-DPIGnZ4A.css → ChatPanel.css.ts.vanilla-BI5569ZO.css} +81 -1
  12. package/dist/esm/assets/src/components/feedback/EmptyState/EmptyState.css.ts.vanilla-B_TWsTOW.css +58 -0
  13. package/dist/esm/assets/src/components/feedback/Spinner/Spinner.css.ts.vanilla-DEUewqdK.css +80 -0
  14. package/dist/esm/assets/src/components/layout/Divider/Divider.css.ts.vanilla-CPvd_RW9.css +72 -0
  15. package/dist/esm/assets/src/components/layout/ListItem/ListItem.css.ts.vanilla-BwAZrX2f.css +68 -0
  16. package/dist/esm/assets/src/components/layout/PageHeader/PageHeader.css.ts.vanilla-DdbyyWAN.css +70 -0
  17. package/dist/esm/assets/src/components/layout/SplitPane/{SplitPane.css.ts.vanilla-BFxdvwyI.css → SplitPane.css.ts.vanilla-BGFZ7zDa.css} +5 -0
  18. package/dist/esm/assets/src/components/primitives/Badge/Badge.css.ts.vanilla-DxCUcxYW.css +95 -0
  19. package/dist/esm/assets/src/components/primitives/Code/Code.css.ts.vanilla-mayBqLDM.css +19 -0
  20. package/dist/esm/assets/src/components/primitives/TextArea/TextArea.css.ts.vanilla-DTOMjGkp.css +85 -0
  21. package/dist/esm/assets/src/theme/{darkTheme.css.ts.vanilla-DCe89yCJ.css → darkTheme.css.ts.vanilla-ab1WD4dr.css} +3 -0
  22. package/dist/esm/assets/src/theme/globalScrollbars.css.ts.vanilla-BAJwnUEJ.css +21 -0
  23. package/dist/esm/assets/src/utils/animations.css.ts.vanilla-DOVlpljP.css +58 -0
  24. package/dist/esm/components/editor/ChatPanel/ChatInput.js +18 -7
  25. package/dist/esm/components/editor/ChatPanel/ChatInput.js.map +1 -1
  26. package/dist/esm/components/editor/ChatPanel/ChatMarkdownRenderer.js +268 -0
  27. package/dist/esm/components/editor/ChatPanel/ChatMarkdownRenderer.js.map +1 -0
  28. package/dist/esm/components/editor/ChatPanel/ChatMessage.js +15 -3
  29. package/dist/esm/components/editor/ChatPanel/ChatMessage.js.map +1 -1
  30. package/dist/esm/components/editor/ChatPanel/ChatMessageList.js +19 -5
  31. package/dist/esm/components/editor/ChatPanel/ChatMessageList.js.map +1 -1
  32. package/dist/esm/components/editor/ChatPanel/ChatPanel.css.js +14 -2
  33. package/dist/esm/components/editor/ChatPanel/ChatPanel.css.js.map +1 -1
  34. package/dist/esm/components/editor/ChatPanel/ChatPanel.js +15 -3
  35. package/dist/esm/components/editor/ChatPanel/ChatPanel.js.map +1 -1
  36. package/dist/esm/components/editor/ChatPanel/useChatInput.js +3 -3
  37. package/dist/esm/components/editor/ChatPanel/useChatInput.js.map +1 -1
  38. package/dist/esm/components/editor/ChatPanel/useChatScroll.js +59 -2
  39. package/dist/esm/components/editor/ChatPanel/useChatScroll.js.map +1 -1
  40. package/dist/esm/components/feedback/EmptyState/EmptyState.css.js +13 -0
  41. package/dist/esm/components/feedback/EmptyState/EmptyState.css.js.map +1 -0
  42. package/dist/esm/components/feedback/EmptyState/EmptyState.js +43 -0
  43. package/dist/esm/components/feedback/EmptyState/EmptyState.js.map +1 -0
  44. package/dist/esm/components/feedback/Spinner/Spinner.css.js +16 -0
  45. package/dist/esm/components/feedback/Spinner/Spinner.css.js.map +1 -0
  46. package/dist/esm/components/feedback/Spinner/Spinner.js +50 -0
  47. package/dist/esm/components/feedback/Spinner/Spinner.js.map +1 -0
  48. package/dist/esm/components/layout/Divider/Divider.css.js +9 -0
  49. package/dist/esm/components/layout/Divider/Divider.css.js.map +1 -0
  50. package/dist/esm/components/layout/Divider/Divider.js +51 -0
  51. package/dist/esm/components/layout/Divider/Divider.js.map +1 -0
  52. package/dist/esm/components/layout/ListItem/ListItem.css.js +10 -0
  53. package/dist/esm/components/layout/ListItem/ListItem.css.js.map +1 -0
  54. package/dist/esm/components/layout/ListItem/ListItem.js +45 -0
  55. package/dist/esm/components/layout/ListItem/ListItem.js.map +1 -0
  56. package/dist/esm/components/layout/PageHeader/PageHeader.css.js +13 -0
  57. package/dist/esm/components/layout/PageHeader/PageHeader.css.js.map +1 -0
  58. package/dist/esm/components/layout/PageHeader/PageHeader.js +29 -0
  59. package/dist/esm/components/layout/PageHeader/PageHeader.js.map +1 -0
  60. package/dist/esm/components/layout/SplitPane/SplitPane.css.js +1 -1
  61. package/dist/esm/components/navigation/Tabs/TabPanel.js +6 -3
  62. package/dist/esm/components/navigation/Tabs/TabPanel.js.map +1 -1
  63. package/dist/esm/components/navigation/Tabs/Tabs.js +3 -1
  64. package/dist/esm/components/navigation/Tabs/Tabs.js.map +1 -1
  65. package/dist/esm/components/primitives/Badge/Badge.css.js +12 -0
  66. package/dist/esm/components/primitives/Badge/Badge.css.js.map +1 -0
  67. package/dist/esm/components/primitives/Badge/Badge.js +67 -0
  68. package/dist/esm/components/primitives/Badge/Badge.js.map +1 -0
  69. package/dist/esm/components/primitives/Code/Code.css.js +7 -0
  70. package/dist/esm/components/primitives/Code/Code.css.js.map +1 -0
  71. package/dist/esm/components/primitives/Code/Code.js +24 -0
  72. package/dist/esm/components/primitives/Code/Code.js.map +1 -0
  73. package/dist/esm/components/primitives/TextArea/TextArea.css.js +10 -0
  74. package/dist/esm/components/primitives/TextArea/TextArea.css.js.map +1 -0
  75. package/dist/esm/components/primitives/TextArea/TextArea.js +97 -0
  76. package/dist/esm/components/primitives/TextArea/TextArea.js.map +1 -0
  77. package/dist/esm/index.js +12 -1
  78. package/dist/esm/index.js.map +1 -1
  79. package/dist/esm/node_modules/@emotion/hash/dist/emotion-hash.esm.js +56 -0
  80. package/dist/esm/node_modules/@emotion/hash/dist/emotion-hash.esm.js.map +1 -0
  81. package/dist/esm/node_modules/@vanilla-extract/css/adapter/dist/vanilla-extract-css-adapter.esm.js +32 -1
  82. package/dist/esm/node_modules/@vanilla-extract/css/adapter/dist/vanilla-extract-css-adapter.esm.js.map +1 -1
  83. package/dist/esm/node_modules/@vanilla-extract/css/dist/taggedTemplateLiteral-10998315.esm.js +13 -0
  84. package/dist/esm/node_modules/@vanilla-extract/css/dist/taggedTemplateLiteral-10998315.esm.js.map +1 -0
  85. package/dist/esm/node_modules/@vanilla-extract/css/dist/transformCss-fd0786e1.esm.js +837 -3
  86. package/dist/esm/node_modules/@vanilla-extract/css/dist/transformCss-fd0786e1.esm.js.map +1 -1
  87. package/dist/esm/node_modules/@vanilla-extract/css/dist/vanilla-extract-css.esm.js +244 -5
  88. package/dist/esm/node_modules/@vanilla-extract/css/dist/vanilla-extract-css.esm.js.map +1 -1
  89. package/dist/esm/node_modules/@vanilla-extract/css/fileScope/dist/vanilla-extract-css-fileScope.esm.js +18 -0
  90. package/dist/esm/node_modules/@vanilla-extract/css/fileScope/dist/vanilla-extract-css-fileScope.esm.js.map +1 -0
  91. package/dist/esm/node_modules/@vanilla-extract/css/injectStyles/dist/vanilla-extract-css-injectStyles.esm.js +23 -0
  92. package/dist/esm/node_modules/@vanilla-extract/css/injectStyles/dist/vanilla-extract-css-injectStyles.esm.js.map +1 -0
  93. package/dist/esm/node_modules/@vanilla-extract/private/dist/vanilla-extract-private.esm.js +38 -0
  94. package/dist/esm/node_modules/@vanilla-extract/private/dist/vanilla-extract-private.esm.js.map +1 -0
  95. package/dist/esm/node_modules/css-what/lib/es/parse.js +424 -0
  96. package/dist/esm/node_modules/css-what/lib/es/parse.js.map +1 -0
  97. package/dist/esm/node_modules/css-what/lib/es/types.js +29 -0
  98. package/dist/esm/node_modules/css-what/lib/es/types.js.map +1 -0
  99. package/dist/esm/node_modules/dedent/dist/dedent.js +3 -1
  100. package/dist/esm/node_modules/dedent/dist/dedent.js.map +1 -1
  101. package/dist/esm/node_modules/deep-object-diff/mjs/diff.js +40 -0
  102. package/dist/esm/node_modules/deep-object-diff/mjs/diff.js.map +1 -0
  103. package/dist/esm/node_modules/deep-object-diff/mjs/utils.js +9 -0
  104. package/dist/esm/node_modules/deep-object-diff/mjs/utils.js.map +1 -0
  105. package/dist/esm/node_modules/media-query-parser/dist/media-query-parser.esm.js +1386 -0
  106. package/dist/esm/node_modules/media-query-parser/dist/media-query-parser.esm.js.map +1 -0
  107. package/dist/esm/node_modules/modern-ahocorasick/dist/index.js +102 -0
  108. package/dist/esm/node_modules/modern-ahocorasick/dist/index.js.map +1 -0
  109. package/dist/esm/node_modules/picocolors/picocolors.js +87 -0
  110. package/dist/esm/node_modules/picocolors/picocolors.js.map +1 -0
  111. package/dist/esm/theme/ThemeProvider.js +17 -3
  112. package/dist/esm/theme/ThemeProvider.js.map +1 -1
  113. package/dist/esm/theme/contract.css.js +1 -1
  114. package/dist/esm/theme/createCustomTheme.js +33 -0
  115. package/dist/esm/theme/createCustomTheme.js.map +1 -0
  116. package/dist/esm/theme/darkTheme.css.js +2 -2
  117. package/dist/esm/theme/globalScrollbars.css.js +6 -0
  118. package/dist/esm/theme/globalScrollbars.css.js.map +1 -0
  119. package/dist/esm/utils/animations.css.js +13 -0
  120. package/dist/esm/utils/animations.css.js.map +1 -0
  121. package/dist/esm/utils/objects.js +22 -0
  122. package/dist/esm/utils/objects.js.map +1 -0
  123. package/dist/types/components/editor/ChatPanel/ChatMarkdownRenderer.d.ts +323 -0
  124. package/dist/types/components/editor/ChatPanel/ChatMarkdownRenderer.types.d.ts +46 -0
  125. package/dist/types/components/editor/ChatPanel/ChatMessage.d.ts +1 -0
  126. package/dist/types/components/editor/ChatPanel/ChatMessageList.d.ts +2 -1
  127. package/dist/types/components/editor/ChatPanel/ChatPanel.d.ts +1 -0
  128. package/dist/types/components/editor/ChatPanel/ChatPanel.types.d.ts +82 -1
  129. package/dist/types/components/feedback/EmptyState/EmptyState.d.ts +313 -0
  130. package/dist/types/components/feedback/EmptyState/EmptyState.types.d.ts +31 -0
  131. package/dist/types/components/feedback/Spinner/Spinner.d.ts +306 -0
  132. package/dist/types/components/feedback/Spinner/Spinner.types.d.ts +41 -0
  133. package/dist/types/components/layout/Divider/Divider.d.ts +307 -0
  134. package/dist/types/components/layout/Divider/Divider.types.d.ts +50 -0
  135. package/dist/types/components/layout/ListItem/ListItem.d.ts +312 -0
  136. package/dist/types/components/layout/ListItem/ListItem.types.d.ts +35 -0
  137. package/dist/types/components/layout/PageHeader/PageHeader.d.ts +311 -0
  138. package/dist/types/components/layout/PageHeader/PageHeader.types.d.ts +30 -0
  139. package/dist/types/components/navigation/Tabs/Tabs.types.d.ts +10 -0
  140. package/dist/types/components/primitives/Badge/Badge.d.ts +310 -0
  141. package/dist/types/components/primitives/Badge/Badge.types.d.ts +67 -0
  142. package/dist/types/components/primitives/Code/Code.d.ts +301 -0
  143. package/dist/types/components/primitives/Code/Code.types.d.ts +17 -0
  144. package/dist/types/components/primitives/TextArea/TextArea.d.ts +26 -0
  145. package/dist/types/components/primitives/TextArea/TextArea.types.d.ts +76 -0
  146. package/dist/types/index.d.ts +22 -2
  147. package/dist/types/theme/ThemeProvider.d.ts +14 -2
  148. package/dist/types/theme/contract.css.d.ts +3 -0
  149. package/dist/types/theme/createCustomTheme.d.ts +29 -0
  150. package/dist/types/theme/darkTheme.css.d.ts +3 -0
  151. package/dist/types/utils/animations.css.d.ts +18 -0
  152. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,50 @@
1
1
  # entangle-ui
2
2
 
3
+ ## 0.7.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#44](https://github.com/SebastianWebdev/entangle-ui/pull/44) [`5529de0`](https://github.com/SebastianWebdev/entangle-ui/commit/5529de0c0eebb780e117f361997c52733ff8b66a) Thanks [@SebastianWebdev](https://github.com/SebastianWebdev)! - **v0.7.0 release — addresses the agent-ui audit findings.**
8
+
9
+ ### New components
10
+ - **Badge** (primitives): inline status indicator with `subtle`, `solid`, `outline`, and `dot` variants; named or raw colors; optional icon and remove button.
11
+ - **TextArea** (primitives): multi-line input with label / helper text / auto-resize (`minRows`/`maxRows`), char counter, and monospace mode. Visual parity with `Input`.
12
+ - **Divider** (layout): horizontal/vertical rule with `solid` / `dashed` / `dotted` variants and an optional centered label.
13
+ - **Spinner** (feedback): `ring` / `dots` / `pulse` variants; `xs`–`lg` sizes; honors `prefers-reduced-motion`.
14
+ - **EmptyState** (feedback): title + description + icon + action slots, `default`/`compact` variants, and a `loading` swap that renders a `Spinner`.
15
+ - **PageHeader** (layout): semantic `<header>` with icon, title, subtitle, breadcrumbs, and right-aligned actions.
16
+ - **Code** (primitives): small inline `<code>` primitive backed by the new `background.inset` token.
17
+ - **ListItem** (layout): list row with leading/trailing slots, selected/active/disabled states, keyboard-activatable when `onClick` is provided.
18
+ - **ChatMarkdownRenderer**: opt-in markdown renderer for `ChatMessage.renderContent` (bold/italic/code, lists, blockquotes, fenced code, GFM tables, safe links).
19
+
20
+ ### Bug fixes
21
+ - `ChatInput` now allows attachments-only submit — both controlled and uncontrolled paths check `attachments.length` in addition to the trimmed value; the send button stays enabled when attachments are queued.
22
+ - `ChatMessageList` auto-scroll is now streaming-aware: `useChatScroll` observes the content element's height via `ResizeObserver`, so the list stays pinned to the bottom when the last message grows token-by-token.
23
+ - `SplitPanePanel` now fills its wrapper (`width: 100%; height: 100%; minWidth: 0; minHeight: 0; box-sizing: border-box`) so nested `PanelSurface` / `ScrollArea` children with `height: 100%` lay out correctly.
24
+
25
+ ### New props & APIs
26
+ - `ChatMessage.maxWidth` and `ChatPanel.messageMaxWidth` — per-message and panel-level bubble width control via the new public `--etui-chat-message-max-width` CSS variable.
27
+ - `ChatMessageList.scrollApiRef` — imperative handle exposing `scrollToBottom`, `scrollTo`, `scrollToElement`, and `isAtBottom` for driving scroll from outside (search results, "jump to top" actions, etc.).
28
+ - `useChatScroll` now returns `scrollContentRef`, `scrollTo`, and `scrollToElement` alongside the existing API.
29
+ - `useChatInput` accepts `attachmentsCount` for attachments-only submit support.
30
+ - `Tabs.keepMounted` — parent-level cascade so every `TabPanel` stays mounted unless a child explicitly sets `keepMounted={false}`.
31
+
32
+ ### New theme tokens
33
+ - `colors.background.inset` — sunken surface for inline code, textarea backgrounds, and recessed preview areas.
34
+ - `colors.surface.row` / `colors.surface.rowHover` — list-row backgrounds that are lighter than `surface.hover` (which is reserved for interactive controls like buttons).
35
+
36
+ ### Developer experience
37
+ - `ThemeProvider` now accepts `globalScrollbars` (opt-in) which toggles consistent dark-theme scrollbar styling on `document.body`.
38
+ - Shared animation utilities (`animSpin`, `animPulse`, `animBlink`, `animFadeIn`) and keyframes (`spinKeyframe`, `pulseKeyframe`, `blinkKeyframe`, `fadeInKeyframe`) exported from the root. Each utility honors `prefers-reduced-motion`.
39
+
40
+ No breaking changes.
41
+
42
+ ## 0.6.3
43
+
44
+ ### Patch Changes
45
+
46
+ - [#42](https://github.com/SebastianWebdev/entangle-ui/pull/42) [`e728388`](https://github.com/SebastianWebdev/entangle-ui/commit/e7283883d5323ff9eba8764991dd6b6af393b09a) Thanks [@SebastianWebdev](https://github.com/SebastianWebdev)! - Update README: remove alpha tag, add missing peer dependencies, export createCustomTheme from main entry point
47
+
3
48
  ## 0.6.2
4
49
 
5
50
  ### Patch Changes
package/README.md CHANGED
@@ -11,15 +11,15 @@ React + TypeScript component library for building editor-style interfaces.
11
11
 
12
12
  ## Status
13
13
 
14
- This package is in alpha and still evolving.
14
+ This package is still evolving.
15
15
 
16
- - API can change between alpha releases.
16
+ - API can change between minor releases.
17
17
  - Use in production only if you are comfortable with rapid iteration.
18
18
 
19
19
  ## Installation
20
20
 
21
21
  ```bash
22
- npm install entangle-ui@alpha
22
+ npm install entangle-ui
23
23
  ```
24
24
 
25
25
  Peer dependencies:
@@ -28,6 +28,8 @@ Peer dependencies:
28
28
  - `react-dom >= 19.1.0`
29
29
  - `@base-ui/react ^1.1.0`
30
30
  - `@floating-ui/react ^0.27.17`
31
+ - `@vanilla-extract/dynamic ^2.1.5`
32
+ - `@vanilla-extract/recipes ^0.5.7`
31
33
 
32
34
  ## Quick Start
33
35
 
@@ -0,0 +1,6 @@
1
+ function getDefaultExportFromCjs (x) {
2
+ return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
3
+ }
4
+
5
+ export { getDefaultExportFromCjs };
6
+ //# sourceMappingURL=_commonjsHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_commonjsHelpers.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -1,4 +1,8 @@
1
+ import { getDefaultExportFromCjs } from './_commonjsHelpers.js';
1
2
  import { __require as requireCssesc } from '../node_modules/cssesc/cssesc.js';
2
3
 
3
- requireCssesc();
4
+ var cssescExports = requireCssesc();
5
+ var cssesc = /*@__PURE__*/getDefaultExportFromCjs(cssescExports);
6
+
7
+ export { cssesc as default };
4
8
  //# sourceMappingURL=cssesc.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cssesc.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
1
+ {"version":3,"file":"cssesc.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
@@ -0,0 +1,8 @@
1
+ import { getDefaultExportFromCjs } from './_commonjsHelpers.js';
2
+ import { __require as requirePicocolors } from '../node_modules/picocolors/picocolors.js';
3
+
4
+ var picocolorsExports = /*@__PURE__*/ requirePicocolors();
5
+ var pc = /*@__PURE__*/getDefaultExportFromCjs(picocolorsExports);
6
+
7
+ export { pc as default };
8
+ //# sourceMappingURL=picocolors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"picocolors.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
@@ -0,0 +1,4 @@
1
+ var picocolors = {exports: {}};
2
+
3
+ export { picocolors as __module };
4
+ //# sourceMappingURL=picocolors2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"picocolors2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -78,7 +78,7 @@
78
78
  flex-direction: column;
79
79
  gap: var(--etui-spacing-xs);
80
80
  min-width: 0;
81
- max-width: 85%;
81
+ max-width: var(--etui-chat-message-max-width, 85%);
82
82
  }
83
83
  .ChatPanel_messageAvatarStyle__1c3e77rb {
84
84
  width: 24px;
@@ -686,6 +686,86 @@
686
686
  gap: var(--etui-spacing-sm);
687
687
  padding-top: var(--etui-spacing-xs);
688
688
  }
689
+ .ChatPanel_markdownRootStyle__1c3e77r2c {
690
+ font-family: var(--etui-font-family-sans);
691
+ color: var(--etui-color-text-primary);
692
+ line-height: var(--etui-line-height-normal);
693
+ font-size: inherit;
694
+ word-break: break-word;
695
+ }
696
+ .ChatPanel_markdownParagraphStyle__1c3e77r2d {
697
+ margin: 0 0 var(--etui-spacing-sm) 0;
698
+ }
699
+ .ChatPanel_markdownParagraphStyle__1c3e77r2d:last-child {
700
+ margin-bottom: 0;
701
+ }
702
+ .ChatPanel_markdownHeadingStyle__1c3e77r2e {
703
+ margin: var(--etui-spacing-md) 0 var(--etui-spacing-sm) 0;
704
+ font-weight: var(--etui-font-weight-semibold);
705
+ line-height: var(--etui-line-height-tight);
706
+ }
707
+ .ChatPanel_markdownHeadingStyle__1c3e77r2e:first-child {
708
+ margin-top: 0;
709
+ }
710
+ .ChatPanel_markdownListStyle__1c3e77r2f {
711
+ margin: 0 0 var(--etui-spacing-sm) 0;
712
+ padding-left: var(--etui-spacing-xl);
713
+ }
714
+ .ChatPanel_markdownListStyle__1c3e77r2f:last-child {
715
+ margin-bottom: 0;
716
+ }
717
+ .ChatPanel_markdownListItemStyle__1c3e77r2g {
718
+ margin: 0;
719
+ padding: 0;
720
+ }
721
+ .ChatPanel_markdownLinkStyle__1c3e77r2h {
722
+ color: var(--etui-color-accent-primary);
723
+ text-decoration: none;
724
+ }
725
+ .ChatPanel_markdownLinkStyle__1c3e77r2h:hover {
726
+ text-decoration: underline;
727
+ }
728
+ .ChatPanel_markdownLinkStyle__1c3e77r2h:focus-visible {
729
+ outline: 1px solid var(--etui-color-border-focus);
730
+ }
731
+ .ChatPanel_markdownBlockquoteStyle__1c3e77r2i {
732
+ margin: 0 0 var(--etui-spacing-sm) 0;
733
+ padding: var(--etui-spacing-xs) var(--etui-spacing-md);
734
+ border-left: 3px solid var(--etui-color-border-default);
735
+ color: var(--etui-color-text-secondary);
736
+ background: var(--etui-color-bg-inset);
737
+ border-radius: var(--etui-radius-sm);
738
+ }
739
+ .ChatPanel_markdownBlockquoteStyle__1c3e77r2i:last-child {
740
+ margin-bottom: 0;
741
+ }
742
+ .ChatPanel_markdownHrStyle__1c3e77r2j {
743
+ border: 0;
744
+ height: 1px;
745
+ background: var(--etui-color-border-default);
746
+ margin: var(--etui-spacing-md) 0;
747
+ }
748
+ .ChatPanel_markdownTableStyle__1c3e77r2k {
749
+ border-collapse: collapse;
750
+ width: 100%;
751
+ font-size: var(--etui-font-size-sm);
752
+ margin: 0 0 var(--etui-spacing-sm) 0;
753
+ }
754
+ .ChatPanel_markdownTableStyle__1c3e77r2k:last-child {
755
+ margin-bottom: 0;
756
+ }
757
+ .ChatPanel_markdownThStyle__1c3e77r2l {
758
+ background: var(--etui-color-bg-secondary);
759
+ color: var(--etui-color-text-primary);
760
+ text-align: left;
761
+ font-weight: var(--etui-font-weight-semibold);
762
+ padding: var(--etui-spacing-xs) var(--etui-spacing-md);
763
+ border-bottom: 1px solid var(--etui-color-border-default);
764
+ }
765
+ .ChatPanel_markdownTdStyle__1c3e77r2m {
766
+ padding: var(--etui-spacing-xs) var(--etui-spacing-md);
767
+ border-bottom: 1px solid var(--etui-color-border-default);
768
+ }
689
769
  @media (prefers-reduced-motion: reduce) {
690
770
  .ChatPanel_typingIndicatorStyle__1c3e77rz {
691
771
  animation-duration: 0s;
@@ -0,0 +1,58 @@
1
+ .EmptyState_emptyStateRecipe__1ihe8h10 {
2
+ display: flex;
3
+ font-family: var(--etui-font-family-sans);
4
+ color: var(--etui-color-text-primary);
5
+ }
6
+ .EmptyState_emptyStateRecipe_variant_default__1ihe8h11 {
7
+ flex-direction: column;
8
+ align-items: center;
9
+ justify-content: center;
10
+ gap: var(--etui-spacing-md);
11
+ padding: var(--etui-spacing-xxl);
12
+ text-align: center;
13
+ }
14
+ .EmptyState_emptyStateRecipe_variant_compact__1ihe8h12 {
15
+ flex-direction: row;
16
+ align-items: center;
17
+ gap: var(--etui-spacing-md);
18
+ padding: var(--etui-spacing-sm) var(--etui-spacing-md);
19
+ text-align: left;
20
+ }
21
+ .EmptyState_emptyStateIconStyle__1ihe8h13 {
22
+ display: flex;
23
+ align-items: center;
24
+ justify-content: center;
25
+ color: var(--etui-color-text-muted);
26
+ }
27
+ .EmptyState_emptyStateTitleStyle__1ihe8h14 {
28
+ margin: 0;
29
+ font-size: var(--etui-font-size-lg);
30
+ font-weight: var(--etui-font-weight-semibold);
31
+ line-height: var(--etui-line-height-tight);
32
+ color: var(--etui-color-text-primary);
33
+ }
34
+ .EmptyState_emptyStateDescriptionStyle__1ihe8h15 {
35
+ margin: 0;
36
+ font-size: var(--etui-font-size-sm);
37
+ line-height: var(--etui-line-height-normal);
38
+ color: var(--etui-color-text-muted);
39
+ max-width: 48ch;
40
+ }
41
+ .EmptyState_emptyStateTextColumnStyle__1ihe8h16 {
42
+ display: flex;
43
+ flex-direction: column;
44
+ gap: var(--etui-spacing-xs);
45
+ align-items: center;
46
+ }
47
+ .EmptyState_emptyStateTextColumnCompactStyle__1ihe8h17 {
48
+ display: flex;
49
+ flex-direction: column;
50
+ gap: var(--etui-spacing-xs);
51
+ align-items: flex-start;
52
+ flex: 1;
53
+ }
54
+ .EmptyState_emptyStateActionStyle__1ihe8h18 {
55
+ margin-top: var(--etui-spacing-md);
56
+ display: inline-flex;
57
+ gap: var(--etui-spacing-sm);
58
+ }
@@ -0,0 +1,80 @@
1
+ .Spinner_spinnerRootStyle__670vre2 {
2
+ display: inline-flex;
3
+ align-items: center;
4
+ gap: var(--etui-spacing-sm);
5
+ color: var(--spinnerColorVar__670vre0);
6
+ }
7
+ .Spinner_spinnerRingStyle__670vre3 {
8
+ width: var(--spinnerSizeVar__670vre1);
9
+ height: var(--spinnerSizeVar__670vre1);
10
+ border: 2px solid currentColor;
11
+ border-top-color: transparent;
12
+ border-radius: 50%;
13
+ animation: animations_spinKeyframe__1boy3ak0 1s linear infinite;
14
+ }
15
+ .Spinner_spinnerDotsWrapperStyle__670vre4 {
16
+ display: inline-flex;
17
+ align-items: center;
18
+ gap: 2px;
19
+ }
20
+ .Spinner_spinnerDotRecipe__670vre5 {
21
+ width: 25%;
22
+ height: 25%;
23
+ min-width: 3px;
24
+ min-height: 3px;
25
+ border-radius: 50%;
26
+ background: currentColor;
27
+ animation: animations_pulseKeyframe__1boy3ak1 1.2s ease-in-out infinite;
28
+ }
29
+ .Spinner_spinnerDotRecipe_delay_0__670vre6 {
30
+ animation-delay: 0ms;
31
+ }
32
+ .Spinner_spinnerDotRecipe_delay_1__670vre7 {
33
+ animation-delay: 160ms;
34
+ }
35
+ .Spinner_spinnerDotRecipe_delay_2__670vre8 {
36
+ animation-delay: 320ms;
37
+ }
38
+ .Spinner_spinnerDotsSizerStyle__670vre9 {
39
+ display: inline-flex;
40
+ align-items: center;
41
+ gap: 15%;
42
+ width: var(--spinnerSizeVar__670vre1);
43
+ height: var(--spinnerSizeVar__670vre1);
44
+ }
45
+ .Spinner_spinnerPulseStyle__670vrea {
46
+ width: var(--spinnerSizeVar__670vre1);
47
+ height: var(--spinnerSizeVar__670vre1);
48
+ border-radius: 50%;
49
+ background: currentColor;
50
+ animation: animations_pulseKeyframe__1boy3ak1 1.2s ease-in-out infinite;
51
+ }
52
+ .Spinner_spinnerLabelStyle__670vreb {
53
+ font-size: var(--etui-font-size-sm);
54
+ color: var(--etui-color-text-secondary);
55
+ }
56
+ .Spinner_visuallyHiddenStyle__670vrec {
57
+ position: absolute;
58
+ width: 1px;
59
+ height: 1px;
60
+ padding: 0;
61
+ margin: -1px;
62
+ overflow: hidden;
63
+ clip: rect(0, 0, 0, 0);
64
+ white-space: nowrap;
65
+ border: 0;
66
+ }
67
+ @media (prefers-reduced-motion: reduce) {
68
+ .Spinner_spinnerRingStyle__670vre3 {
69
+ animation: none;
70
+ opacity: 0.6;
71
+ }
72
+ .Spinner_spinnerDotRecipe__670vre5 {
73
+ animation: none;
74
+ opacity: 0.6;
75
+ }
76
+ .Spinner_spinnerPulseStyle__670vrea {
77
+ animation: none;
78
+ opacity: 0.6;
79
+ }
80
+ }
@@ -0,0 +1,72 @@
1
+ .Divider_dividerRecipe__1desuf10 {
2
+ border: 0;
3
+ box-sizing: border-box;
4
+ flex-shrink: 0;
5
+ }
6
+ .Divider_dividerRecipe_orientation_horizontal__1desuf11 {
7
+ width: 100%;
8
+ height: 1px;
9
+ }
10
+ .Divider_dividerRecipe_orientation_vertical__1desuf12 {
11
+ width: 1px;
12
+ height: auto;
13
+ align-self: stretch;
14
+ }
15
+ .Divider_dividerRecipe_variant_solid__1desuf13 {
16
+ background: var(--etui-color-border-default);
17
+ }
18
+ .Divider_dividerRecipe_variant_dashed__1desuf14 {
19
+ background: transparent;
20
+ border-top-width: 1px;
21
+ border-top-style: dashed;
22
+ border-top-color: var(--etui-color-border-default);
23
+ }
24
+ .Divider_dividerRecipe_variant_dotted__1desuf15 {
25
+ background: transparent;
26
+ border-top-width: 1px;
27
+ border-top-style: dotted;
28
+ border-top-color: var(--etui-color-border-default);
29
+ }
30
+ .Divider_dividerRecipe_compound_0__1desuf16 {
31
+ background: transparent;
32
+ border-top: 0;
33
+ border-left-width: 1px;
34
+ border-left-style: dashed;
35
+ border-left-color: var(--etui-color-border-default);
36
+ }
37
+ .Divider_dividerRecipe_compound_1__1desuf17 {
38
+ background: transparent;
39
+ border-top: 0;
40
+ border-left-width: 1px;
41
+ border-left-style: dotted;
42
+ border-left-color: var(--etui-color-border-default);
43
+ }
44
+ .Divider_dividerWithLabelRecipe__1desuf18 {
45
+ display: flex;
46
+ align-items: center;
47
+ gap: var(--etui-spacing-md);
48
+ width: 100%;
49
+ color: var(--etui-color-text-muted);
50
+ font-family: var(--etui-font-family-sans);
51
+ font-size: var(--etui-font-size-xxs);
52
+ text-transform: uppercase;
53
+ letter-spacing: 0.06em;
54
+ font-weight: var(--etui-font-weight-semibold);
55
+ }
56
+ .Divider_dividerWithLabelRecipe__1desuf18::before, .Divider_dividerWithLabelRecipe__1desuf18::after {
57
+ content: "";
58
+ flex: 1;
59
+ height: 1px;
60
+ background: var(--etui-color-border-default);
61
+ }
62
+ .Divider_dividerWithLabelRecipe_variant_dashed__1desuf1a::before, .Divider_dividerWithLabelRecipe_variant_dashed__1desuf1a::after {
63
+ background: transparent;
64
+ border-top: 1px dashed var(--etui-color-border-default);
65
+ }
66
+ .Divider_dividerWithLabelRecipe_variant_dotted__1desuf1b::before, .Divider_dividerWithLabelRecipe_variant_dotted__1desuf1b::after {
67
+ background: transparent;
68
+ border-top: 1px dotted var(--etui-color-border-default);
69
+ }
70
+ .Divider_dividerLabelTextStyle__1desuf1c {
71
+ flex-shrink: 0;
72
+ }
@@ -0,0 +1,68 @@
1
+ .ListItem_listItemRecipe__9m667i0 {
2
+ display: flex;
3
+ align-items: center;
4
+ gap: var(--etui-spacing-md);
5
+ padding: 0 var(--etui-spacing-md);
6
+ background: var(--etui-color-surface-row);
7
+ color: var(--etui-color-text-primary);
8
+ font-family: var(--etui-font-family-sans);
9
+ font-size: var(--etui-font-size-md);
10
+ line-height: var(--etui-line-height-tight);
11
+ border-radius: var(--etui-radius-sm);
12
+ box-sizing: border-box;
13
+ width: 100%;
14
+ transition: background-color var(--etui-transition-fast);
15
+ outline: none;
16
+ }
17
+ .ListItem_listItemRecipe__9m667i0:hover:not([data-disabled="true"]) {
18
+ background: var(--etui-color-surface-row-hover);
19
+ }
20
+ .ListItem_listItemRecipe__9m667i0:focus-visible {
21
+ box-shadow: var(--etui-shadow-focus);
22
+ }
23
+ .ListItem_listItemRecipe_density_compact__9m667i1 {
24
+ height: 24px;
25
+ font-size: var(--etui-font-size-sm);
26
+ }
27
+ .ListItem_listItemRecipe_density_comfortable__9m667i2 {
28
+ height: 32px;
29
+ }
30
+ .ListItem_listItemRecipe_clickable_true__9m667i3 {
31
+ cursor: pointer;
32
+ user-select: none;
33
+ }
34
+ .ListItem_listItemRecipe_selected_true__9m667i5 {
35
+ background: color-mix(in srgb, var(--etui-color-accent-primary) 12%, transparent);
36
+ }
37
+ .ListItem_listItemRecipe_selected_true__9m667i5:hover:not([data-disabled="true"]) {
38
+ background: color-mix(in srgb, var(--etui-color-accent-primary) 16%, transparent);
39
+ }
40
+ .ListItem_listItemRecipe_active_true__9m667i7 {
41
+ background: color-mix(in srgb, var(--etui-color-accent-primary) 20%, transparent);
42
+ }
43
+ .ListItem_listItemRecipe_disabled_true__9m667i9 {
44
+ opacity: 0.5;
45
+ pointer-events: none;
46
+ cursor: not-allowed;
47
+ }
48
+ .ListItem_listItemLeadingStyle__9m667ib {
49
+ display: inline-flex;
50
+ align-items: center;
51
+ justify-content: center;
52
+ color: var(--etui-color-text-secondary);
53
+ flex-shrink: 0;
54
+ }
55
+ .ListItem_listItemContentStyle__9m667ic {
56
+ flex: 1;
57
+ min-width: 0;
58
+ overflow: hidden;
59
+ white-space: nowrap;
60
+ text-overflow: ellipsis;
61
+ }
62
+ .ListItem_listItemTrailingStyle__9m667id {
63
+ display: inline-flex;
64
+ align-items: center;
65
+ gap: var(--etui-spacing-sm);
66
+ color: var(--etui-color-text-muted);
67
+ flex-shrink: 0;
68
+ }
@@ -0,0 +1,70 @@
1
+ .PageHeader_pageHeaderRecipe__1uiranp0 {
2
+ display: flex;
3
+ align-items: center;
4
+ font-family: var(--etui-font-family-sans);
5
+ color: var(--etui-color-text-primary);
6
+ gap: var(--etui-spacing-md);
7
+ box-sizing: border-box;
8
+ width: 100%;
9
+ }
10
+ .PageHeader_pageHeaderRecipe_size_sm__1uiranp1 {
11
+ padding: var(--etui-spacing-sm) var(--etui-spacing-md);
12
+ }
13
+ .PageHeader_pageHeaderRecipe_size_md__1uiranp2 {
14
+ padding: var(--etui-spacing-md) var(--etui-spacing-lg);
15
+ }
16
+ .PageHeader_pageHeaderRecipe_size_lg__1uiranp3 {
17
+ padding: var(--etui-spacing-lg) var(--etui-spacing-xl);
18
+ }
19
+ .PageHeader_pageHeaderRecipe_bordered_true__1uiranp4 {
20
+ border-bottom: 1px solid var(--etui-color-border-default);
21
+ }
22
+ .PageHeader_pageHeaderIconStyle__1uiranp6 {
23
+ display: flex;
24
+ align-items: center;
25
+ justify-content: center;
26
+ color: var(--etui-color-text-secondary);
27
+ flex-shrink: 0;
28
+ }
29
+ .PageHeader_pageHeaderTitleColumnStyle__1uiranp7 {
30
+ display: flex;
31
+ flex-direction: column;
32
+ gap: var(--etui-spacing-xs);
33
+ min-width: 0;
34
+ flex: 1;
35
+ }
36
+ .PageHeader_pageHeaderTitleRecipe__1uiranp8 {
37
+ margin: 0;
38
+ line-height: var(--etui-line-height-tight);
39
+ font-weight: var(--etui-font-weight-semibold);
40
+ color: var(--etui-color-text-primary);
41
+ }
42
+ .PageHeader_pageHeaderTitleRecipe_size_sm__1uiranp9 {
43
+ font-size: var(--etui-font-size-md);
44
+ }
45
+ .PageHeader_pageHeaderTitleRecipe_size_md__1uiranpa {
46
+ font-size: var(--etui-font-size-lg);
47
+ }
48
+ .PageHeader_pageHeaderTitleRecipe_size_lg__1uiranpb {
49
+ font-size: var(--etui-font-size-xl);
50
+ }
51
+ .PageHeader_pageHeaderSubtitleStyle__1uiranpc {
52
+ margin: 0;
53
+ font-size: var(--etui-font-size-sm);
54
+ color: var(--etui-color-text-muted);
55
+ line-height: var(--etui-line-height-normal);
56
+ }
57
+ .PageHeader_pageHeaderBreadcrumbsStyle__1uiranpd {
58
+ display: flex;
59
+ align-items: center;
60
+ gap: var(--etui-spacing-xs);
61
+ font-size: var(--etui-font-size-xs);
62
+ color: var(--etui-color-text-muted);
63
+ }
64
+ .PageHeader_pageHeaderActionsStyle__1uiranpe {
65
+ margin-left: auto;
66
+ display: inline-flex;
67
+ align-items: center;
68
+ gap: var(--etui-spacing-sm);
69
+ flex-shrink: 0;
70
+ }
@@ -41,4 +41,9 @@
41
41
  }
42
42
  .SplitPane_panelStyle__13xgg0i8 {
43
43
  overflow: auto;
44
+ width: 100%;
45
+ height: 100%;
46
+ box-sizing: border-box;
47
+ min-width: 0;
48
+ min-height: 0;
44
49
  }
@@ -0,0 +1,95 @@
1
+ .Badge_badgeRecipe__6943by2 {
2
+ display: inline-flex;
3
+ align-items: center;
4
+ gap: var(--etui-spacing-sm);
5
+ font-family: var(--etui-font-family-sans);
6
+ font-weight: var(--etui-font-weight-semibold);
7
+ border-radius: var(--etui-radius-sm);
8
+ white-space: nowrap;
9
+ line-height: 1;
10
+ vertical-align: middle;
11
+ border: 1px solid transparent;
12
+ box-sizing: border-box;
13
+ }
14
+ .Badge_badgeRecipe_size_xs__6943by3 {
15
+ height: 14px;
16
+ padding: 0 var(--etui-spacing-sm);
17
+ font-size: var(--etui-font-size-xxs);
18
+ }
19
+ .Badge_badgeRecipe_size_sm__6943by4 {
20
+ height: 16px;
21
+ padding: 0 var(--etui-spacing-sm);
22
+ font-size: var(--etui-font-size-xxs);
23
+ }
24
+ .Badge_badgeRecipe_size_md__6943by5 {
25
+ height: 20px;
26
+ padding: 0 var(--etui-spacing-md);
27
+ font-size: var(--etui-font-size-xs);
28
+ }
29
+ .Badge_badgeRecipe_size_lg__6943by6 {
30
+ height: 24px;
31
+ padding: 0 var(--etui-spacing-md);
32
+ font-size: var(--etui-font-size-sm);
33
+ }
34
+ .Badge_badgeRecipe_variant_subtle__6943by7 {
35
+ background: color-mix(in srgb, var(--badgeColorVar__6943by0) 15%, transparent);
36
+ color: var(--badgeColorVar__6943by0);
37
+ border-color: transparent;
38
+ }
39
+ .Badge_badgeRecipe_variant_solid__6943by8 {
40
+ background: var(--badgeColorVar__6943by0);
41
+ color: var(--badgeContrastVar__6943by1);
42
+ border-color: var(--badgeColorVar__6943by0);
43
+ }
44
+ .Badge_badgeRecipe_variant_outline__6943by9 {
45
+ background: transparent;
46
+ color: var(--badgeColorVar__6943by0);
47
+ border-color: var(--badgeColorVar__6943by0);
48
+ }
49
+ .Badge_badgeRecipe_variant_dot__6943bya {
50
+ background: transparent;
51
+ color: var(--etui-color-text-primary);
52
+ border-color: transparent;
53
+ padding: 0;
54
+ }
55
+ .Badge_badgeRecipe_uppercase_true__6943byb {
56
+ text-transform: uppercase;
57
+ letter-spacing: 0.03em;
58
+ }
59
+ .Badge_badgeIconStyle__6943byc {
60
+ display: inline-flex;
61
+ align-items: center;
62
+ justify-content: center;
63
+ flex-shrink: 0;
64
+ }
65
+ .Badge_badgeDotStyle__6943byd {
66
+ display: inline-block;
67
+ width: 6px;
68
+ height: 6px;
69
+ border-radius: 50%;
70
+ background: var(--badgeColorVar__6943by0);
71
+ flex-shrink: 0;
72
+ }
73
+ .Badge_badgeRemoveButtonStyle__6943bye {
74
+ appearance: none;
75
+ background: transparent;
76
+ border: none;
77
+ color: inherit;
78
+ padding: 0;
79
+ margin-left: var(--etui-spacing-xs);
80
+ cursor: pointer;
81
+ display: inline-flex;
82
+ align-items: center;
83
+ justify-content: center;
84
+ border-radius: var(--etui-radius-sm);
85
+ opacity: 0.7;
86
+ transition: opacity var(--etui-transition-fast);
87
+ }
88
+ .Badge_badgeRemoveButtonStyle__6943bye:hover {
89
+ opacity: 1;
90
+ }
91
+ .Badge_badgeRemoveButtonStyle__6943bye:focus-visible {
92
+ outline: 1px solid var(--etui-color-border-focus);
93
+ outline-offset: 1px;
94
+ opacity: 1;
95
+ }