pixelon 0.1.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 (66) hide show
  1. package/README.md +54 -0
  2. package/dist/App.d.ts +3 -0
  3. package/dist/App.js +6 -0
  4. package/dist/assets/output-BpGRJPjR.css +1 -0
  5. package/dist/assets/output-DGLCW84k.css +1 -0
  6. package/dist/components/atoms/AttachmentPreview/AttachmentPreview.d.ts +8 -0
  7. package/dist/components/atoms/AttachmentPreview/AttachmentPreview.js +44 -0
  8. package/dist/components/atoms/Avatar/Avatar.d.ts +10 -0
  9. package/dist/components/atoms/Avatar/Avatar.js +28 -0
  10. package/dist/components/atoms/Button/Button.d.ts +10 -0
  11. package/dist/components/atoms/Button/Button.js +137 -0
  12. package/dist/components/atoms/DateDivider/DateDivider.d.ts +7 -0
  13. package/dist/components/atoms/DateDivider/DateDivider.js +40 -0
  14. package/dist/components/atoms/DateDivider/index.d.ts +2 -0
  15. package/dist/components/atoms/DateDivider/index.js +1 -0
  16. package/dist/components/atoms/Input/Input.d.ts +10 -0
  17. package/dist/components/atoms/Input/Input.js +111 -0
  18. package/dist/components/atoms/Link/Link.d.ts +14 -0
  19. package/dist/components/atoms/Link/Link.js +16 -0
  20. package/dist/components/atoms/SelectMenu/SelectMenu.d.ts +9 -0
  21. package/dist/components/atoms/SelectMenu/SelectMenu.js +23 -0
  22. package/dist/components/atoms/Text/Text.d.ts +11 -0
  23. package/dist/components/atoms/Text/Text.js +93 -0
  24. package/dist/components/atoms/Textarea/Textarea.d.ts +6 -0
  25. package/dist/components/atoms/Textarea/Textarea.js +5 -0
  26. package/dist/components/atoms/logo/Logo.d.ts +6 -0
  27. package/dist/components/atoms/logo/Logo.js +5 -0
  28. package/dist/components/molecules/chat/AssistantMessage/AssistantMessage.d.ts +7 -0
  29. package/dist/components/molecules/chat/AssistantMessage/AssistantMessage.js +10 -0
  30. package/dist/components/molecules/chat/AssistantThinkingIndicator/AssistantThinkingIndicator.d.ts +3 -0
  31. package/dist/components/molecules/chat/AssistantThinkingIndicator/AssistantThinkingIndicator.js +36 -0
  32. package/dist/components/molecules/chat/ChatHeader/ChatHeader.d.ts +6 -0
  33. package/dist/components/molecules/chat/ChatHeader/ChatHeader.js +6 -0
  34. package/dist/components/molecules/chat/ChatInput/ChatInput.d.ts +17 -0
  35. package/dist/components/molecules/chat/ChatInput/ChatInput.js +56 -0
  36. package/dist/components/molecules/chat/FileViewer/FileViewer.d.ts +7 -0
  37. package/dist/components/molecules/chat/FileViewer/FileViewer.js +41 -0
  38. package/dist/components/molecules/chat/FullscreenViewer/FullscreenViewer.d.ts +10 -0
  39. package/dist/components/molecules/chat/FullscreenViewer/FullscreenViewer.js +65 -0
  40. package/dist/components/molecules/chat/MessageStatus/MessageStatus.d.ts +9 -0
  41. package/dist/components/molecules/chat/MessageStatus/MessageStatus.js +14 -0
  42. package/dist/components/molecules/chat/Modal/Modal.d.ts +12 -0
  43. package/dist/components/molecules/chat/Modal/Modal.js +29 -0
  44. package/dist/components/molecules/chat/UserAttachments/UserAttachments.d.ts +6 -0
  45. package/dist/components/molecules/chat/UserAttachments/UserAttachments.js +8 -0
  46. package/dist/components/molecules/chat/UserMessage/UserMessage.d.ts +11 -0
  47. package/dist/components/molecules/chat/UserMessage/UserMessage.js +8 -0
  48. package/dist/components/organisms/chat/Chat.d.ts +21 -0
  49. package/dist/components/organisms/chat/Chat.js +278 -0
  50. package/dist/components/organisms/chat/index.d.ts +1 -0
  51. package/dist/components/organisms/chat/index.js +1 -0
  52. package/dist/index.d.ts +171 -0
  53. package/dist/index.esm.js +21664 -0
  54. package/dist/index.esm.js.map +1 -0
  55. package/dist/index.js +21666 -0
  56. package/dist/index.js.map +1 -0
  57. package/dist/main.d.ts +1 -0
  58. package/dist/main.js +6 -0
  59. package/dist/styles.css +1 -0
  60. package/dist/styles.css.map +1 -0
  61. package/dist/test/setup.d.ts +1 -0
  62. package/dist/test/setup.js +20 -0
  63. package/package.json +95 -0
  64. package/src/styles/_variables.scss +84 -0
  65. package/src/styles/global.scss +58 -0
  66. package/src/styles/index.scss +30 -0
package/dist/main.d.ts ADDED
@@ -0,0 +1 @@
1
+ import './index.css';
package/dist/main.js ADDED
@@ -0,0 +1,6 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { StrictMode } from 'react';
3
+ import { createRoot } from 'react-dom/client';
4
+ import './index.css';
5
+ import App from './App';
6
+ createRoot(document.getElementById('root')).render(_jsx(StrictMode, { children: _jsx(App, {}) }));
@@ -0,0 +1 @@
1
+ :root{--color-black: #000000;--color-white: #FFFFFF;--color-primary: var(--color-black);--color-secondary: #343541;--color-background: #FFFFFF;--color-background-alt: #F7F7F8;--color-text: #2D2D2D;--color-text-secondary: #6B7280;--color-text-inverse: #FFFFFF;--color-border: #E5E7EB;--color-success: #10B981;--color-error: #EF4444;--color-warning: #F59E0B;--color-info: #3B82F6;--color-chat-user-bg: #F7F7F8;--color-chat-assistant-bg: #FFFFFF;--color-chat-border: #E5E7EB;--color-chat-input-bg: #FFFFFF;--color-chat-input-border: #E5E7EB;--color-chat-input-focus: #000000;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);--spacing-xs: 0.25rem;--spacing-sm: 0.5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--border-radius-sm: 0.25rem;--border-radius-md: 0.375rem;--border-radius-lg: 0.5rem;--border-radius-full: 9999px;--font-family-base: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;--font-size-xs: 0.75rem;--font-size-sm: 0.875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.75}[data-theme=dark]{--color-background: #343541;--color-background-alt: #444654;--color-text: #FFFFFF;--color-text-secondary: #9CA3AF;--color-border: #4B5563;--color-chat-user-bg: #444654;--color-chat-assistant-bg: #343541;--color-chat-border: #4B5563;--color-chat-input-bg: #40414F;--color-chat-input-border: #4B5563;--color-chat-input-focus: #FFFFFF}:root{--color-black: #000000;--color-white: #FFFFFF;--color-primary: var(--color-black);--color-secondary: #343541;--color-background: #FFFFFF;--color-background-alt: #F7F7F8;--color-text: #2D2D2D;--color-text-secondary: #6B7280;--color-text-inverse: #FFFFFF;--color-border: #E5E7EB;--color-success: #10B981;--color-error: #EF4444;--color-warning: #F59E0B;--color-info: #3B82F6;--color-chat-user-bg: #F7F7F8;--color-chat-assistant-bg: #FFFFFF;--color-chat-border: #E5E7EB;--color-chat-input-bg: #FFFFFF;--color-chat-input-border: #E5E7EB;--color-chat-input-focus: #000000;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);--spacing-xs: 0.25rem;--spacing-sm: 0.5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--border-radius-sm: 0.25rem;--border-radius-md: 0.375rem;--border-radius-lg: 0.5rem;--border-radius-full: 9999px;--font-family-base: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;--font-size-xs: 0.75rem;--font-size-sm: 0.875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.75}[data-theme=dark]{--color-background: #343541;--color-background-alt: #444654;--color-text: #FFFFFF;--color-text-secondary: #9CA3AF;--color-border: #4B5563;--color-chat-user-bg: #444654;--color-chat-assistant-bg: #343541;--color-chat-border: #4B5563;--color-chat-input-bg: #40414F;--color-chat-input-border: #4B5563;--color-chat-input-focus: #FFFFFF}*{margin:0;padding:0;box-sizing:border-box}body{font-family:var(--font-family-base);font-size:var(--font-size-base);line-height:var(--line-height-normal);color:var(--color-text);background-color:var(--color-background);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.text-primary{color:var(--color-primary)}.text-secondary{color:var(--color-text-secondary)}.bg-primary{background-color:var(--color-primary)}.bg-secondary{background-color:var(--color-background-alt)}.transition-all{transition:all .2s ease-in-out}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--color-background)}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:var(--border-radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--color-text-secondary)}.button{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-sm);border:none;border-radius:var(--border-radius-md);font-family:var(--font-family-base);font-weight:var(--font-weight-medium);cursor:pointer;transition:all .2s ease-in-out;position:relative}.button--primary{background-color:var(--color-primary);color:var(--color-white)}.button--primary:hover:not(:disabled){opacity:.9}.button--primary:active:not(:disabled){opacity:.8}.button--secondary{background-color:var(--color-background-alt);color:var(--color-text)}.button--secondary:hover:not(:disabled){background-color:var(--color-border)}.button--ghost{background-color:rgba(0,0,0,0);color:var(--color-text)}.button--ghost:hover:not(:disabled){background-color:var(--color-background-alt)}.button--icon{padding:var(--spacing-sm);border-radius:var(--border-radius-full);background-color:rgba(0,0,0,0);color:var(--color-text)}.button--icon:hover:not(:disabled){background-color:var(--color-background-alt)}.button--small{padding:var(--spacing-xs) var(--spacing-sm);font-size:var(--font-size-sm)}.button--medium{padding:var(--spacing-sm) var(--spacing-md);font-size:var(--font-size-base)}.button--large{padding:var(--spacing-md) var(--spacing-lg);font-size:var(--font-size-lg)}.button:disabled{opacity:.5;cursor:not-allowed}.button--full-width{width:100%}.button--loading{cursor:wait}.button--loading .button__text{visibility:hidden}.button__loader{position:absolute;width:16px;height:16px;border:2px solid var(--color-white);border-radius:50%;border-top-color:rgba(0,0,0,0);animation:button-spin .8s linear infinite}.button__icon{display:flex;align-items:center;justify-content:center}@keyframes button-spin{to{transform:rotate(360deg)}}.button--circle{background:var(--color-black) !important;color:var(--color-white);border-radius:50% !important;width:32px !important;height:32px !important;min-width:32px !important;min-height:32px !important;padding:0 !important;display:flex;align-items:center;justify-content:center;box-shadow:none;border:none;transition:background .2s}.button--circle:hover,.button--circle:focus{background:#222 !important}.button--circle .button__icon{color:var(--color-white);display:flex;align-items:center;justify-content:center}.input-wrapper{display:flex;flex-direction:column;gap:var(--spacing-xs)}.input-wrapper--full-width{width:100%}.input-wrapper--error .input{border-color:var(--color-error)}.input-wrapper--error .input:focus{border-color:var(--color-error);box-shadow:0 0 0 2px rgba(239,68,68,.1)}.input-wrapper--chat .input{background-color:var(--color-chat-input-bg);border:1px solid var(--color-chat-input-border);border-radius:var(--border-radius-lg);padding:0 var(--spacing-lg);font-size:var(--font-size-base);line-height:var(--line-height-relaxed);height:40px;min-height:40px;box-sizing:border-box;display:flex;align-items:center}.input-wrapper--chat .input:focus{border-color:var(--color-chat-input-focus);box-shadow:0 0 0 2px rgba(0,0,0,.1)}.input-wrapper__label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text)}.input-wrapper__container{position:relative;display:flex;align-items:center}.input-wrapper__icon{position:absolute;left:var(--spacing-md);display:flex;align-items:center;justify-content:center;color:var(--color-text-secondary)}.input-wrapper__error{font-size:var(--font-size-sm);color:var(--color-error)}.input{width:100%;padding:var(--spacing-sm) var(--spacing-md);font-family:var(--font-family-base);font-size:var(--font-size-base);line-height:var(--line-height-normal);color:var(--color-text);background-color:var(--color-background);border:1px solid var(--color-border);border-radius:var(--border-radius-md);transition:all .2s ease-in-out}.input--with-icon{padding-left:calc(var(--spacing-md)*2 + 16px)}.input::placeholder{color:var(--color-text-secondary)}.input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px rgba(0,0,0,.1)}.input:disabled{background-color:var(--color-background-alt);cursor:not-allowed}.text{margin:0;font-family:var(--font-family-base)}.text--h1{font-size:var(--font-size-2xl);line-height:var(--line-height-tight);font-weight:var(--font-weight-bold)}.text--h2{font-size:var(--font-size-xl);line-height:var(--line-height-tight);font-weight:var(--font-weight-semibold)}.text--h3{font-size:var(--font-size-lg);line-height:var(--line-height-tight);font-weight:var(--font-weight-semibold)}.text--h4{font-size:var(--font-size-base);line-height:var(--line-height-normal);font-weight:var(--font-weight-semibold)}.text--body{font-size:var(--font-size-base);line-height:var(--line-height-normal)}.text--small{font-size:var(--font-size-sm);line-height:var(--line-height-normal)}.text--caption{font-size:var(--font-size-xs);line-height:var(--line-height-normal)}.text--normal{font-weight:var(--font-weight-normal)}.text--medium{font-weight:var(--font-weight-medium)}.text--semibold{font-weight:var(--font-weight-semibold)}.text--bold{font-weight:var(--font-weight-bold)}.text--primary{color:var(--color-text)}.text--secondary{color:var(--color-text-secondary)}.text--inherit{color:inherit}.text--left{text-align:left}.text--center{text-align:center}.text--right{text-align:right}.textarea{width:100%;border:none;outline:none;background:rgba(0,0,0,0);font-family:var(--font-family-base);font-size:var(--font-size-base);color:var(--color-text);resize:none;min-height:32px;max-height:120px;line-height:1.5;padding:0}:root{--color-black: #000000;--color-white: #FFFFFF;--color-primary: var(--color-black);--color-secondary: #343541;--color-background: #FFFFFF;--color-background-alt: #F7F7F8;--color-text: #2D2D2D;--color-text-secondary: #6B7280;--color-text-inverse: #FFFFFF;--color-border: #E5E7EB;--color-success: #10B981;--color-error: #EF4444;--color-warning: #F59E0B;--color-info: #3B82F6;--color-chat-user-bg: #F7F7F8;--color-chat-assistant-bg: #FFFFFF;--color-chat-border: #E5E7EB;--color-chat-input-bg: #FFFFFF;--color-chat-input-border: #E5E7EB;--color-chat-input-focus: #000000;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);--spacing-xs: 0.25rem;--spacing-sm: 0.5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--border-radius-sm: 0.25rem;--border-radius-md: 0.375rem;--border-radius-lg: 0.5rem;--border-radius-full: 9999px;--font-family-base: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;--font-size-xs: 0.75rem;--font-size-sm: 0.875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.75}[data-theme=dark]{--color-background: #343541;--color-background-alt: #444654;--color-text: #FFFFFF;--color-text-secondary: #9CA3AF;--color-border: #4B5563;--color-chat-user-bg: #444654;--color-chat-assistant-bg: #343541;--color-chat-border: #4B5563;--color-chat-input-bg: #40414F;--color-chat-input-border: #4B5563;--color-chat-input-focus: #FFFFFF}.link{display:inline-flex;align-items:center;gap:.25rem;text-decoration:none;transition:all .2s ease-in-out;font-family:var(--font-family-base);cursor:pointer}.link--primary{color:var(--color-primary)}.link--primary:hover{color:var(--color-primary-dark)}.link--secondary{color:var(--color-secondary)}.link--secondary:hover{color:var(--color-secondary-dark)}.link--accent{color:var(--color-accent)}.link--accent:hover{color:var(--color-accent-dark)}.link--small{font-size:var(--font-size-sm);line-height:var(--line-height-normal)}.link--medium{font-size:var(--font-size-base);line-height:var(--line-height-normal)}.link--large{font-size:var(--font-size-lg);line-height:var(--line-height-normal)}.link--normal{font-weight:var(--font-weight-normal)}.link--medium{font-weight:var(--font-weight-medium)}.link--semibold{font-weight:var(--font-weight-semibold)}.link--bold{font-weight:var(--font-weight-bold)}.link--underline{text-decoration:underline;text-decoration-color:currentColor;text-decoration-thickness:1px;text-underline-offset:2px}.link--underline:hover{text-decoration-thickness:2px}.link--external .link__external-icon{opacity:.7;transition:opacity .2s ease-in-out}.link--external:hover .link__external-icon{opacity:1}.link:hover{transform:translateY(-1px)}.link:active{transform:translateY(0)}.link:focus{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:4px}.link__external-icon{flex-shrink:0}.avatar{position:relative;display:flex;align-items:center;justify-content:center;border-radius:var(--border-radius-full);overflow:hidden;background-color:var(--color-background-alt)}.avatar--small{width:24px;height:24px;font-size:var(--font-size-xs)}.avatar--medium{width:32px;height:32px;font-size:var(--font-size-sm)}.avatar--large{width:40px;height:40px;font-size:var(--font-size-base)}.avatar--user{background-color:var(--color-primary);color:var(--color-white)}.avatar--assistant{background-color:var(--color-background-alt);color:var(--color-text)}.avatar__image{width:100%;height:100%;object-fit:cover}.avatar__fallback{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-weight:var(--font-weight-medium)}.avatar__assistant-icon{width:60%;height:60%}.avatar__assistant-icon svg{width:100%;height:100%}.avatar--fallback .avatar__fallback{display:flex}.attachment-preview{display:flex;align-items:center;gap:.75rem;padding:.75rem;border:1px solid var(--color-border);border-radius:var(--border-radius-md);background:var(--color-background-secondary);position:relative;transition:all .2s ease;font-family:var(--font-family-base)}.attachment-preview--clickable{cursor:pointer}.attachment-preview--clickable:hover,.attachment-preview--clickable:focus{border-color:#111;outline:none}.attachment-preview__thumb{width:48px;height:48px;object-fit:cover;border-radius:var(--border-radius-sm);flex-shrink:0}.attachment-preview__icon{width:48px;height:48px;display:flex;align-items:center;justify-content:center;background:var(--color-background);border-radius:var(--border-radius-sm);flex-shrink:0}.attachment-preview__pdf-icon{width:48px;height:48px;display:flex;align-items:center;justify-content:center;background:var(--color-error);color:#fff;border-radius:var(--border-radius-sm);font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);flex-shrink:0}.attachment-preview__info{flex:1;min-width:0}.attachment-preview__name{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-primary);margin-bottom:.25rem;word-break:break-word;line-height:1.2}.attachment-preview__type{font-size:var(--font-size-xs);color:var(--color-text-secondary)}.attachment-preview__remove{position:absolute;top:-0.5rem;right:-0.5rem;width:24px;height:24px;min-width:24px;min-height:24px;border:2px solid rgba(0,0,0,0);background:#111;color:#fff;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);transition:all .2s ease;z-index:1;box-sizing:border-box;padding:0}.attachment-preview__remove svg{width:12px;height:12px;display:block}.attachment-preview__remove:hover,.attachment-preview__remove:focus{background:#111;border:2px solid #111;color:#fff;outline:none;transform:scale(1.1)}:root{--color-black: #000000;--color-white: #FFFFFF;--color-primary: var(--color-black);--color-secondary: #343541;--color-background: #FFFFFF;--color-background-alt: #F7F7F8;--color-text: #2D2D2D;--color-text-secondary: #6B7280;--color-text-inverse: #FFFFFF;--color-border: #E5E7EB;--color-success: #10B981;--color-error: #EF4444;--color-warning: #F59E0B;--color-info: #3B82F6;--color-chat-user-bg: #F7F7F8;--color-chat-assistant-bg: #FFFFFF;--color-chat-border: #E5E7EB;--color-chat-input-bg: #FFFFFF;--color-chat-input-border: #E5E7EB;--color-chat-input-focus: #000000;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);--spacing-xs: 0.25rem;--spacing-sm: 0.5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--border-radius-sm: 0.25rem;--border-radius-md: 0.375rem;--border-radius-lg: 0.5rem;--border-radius-full: 9999px;--font-family-base: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;--font-size-xs: 0.75rem;--font-size-sm: 0.875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.75}[data-theme=dark]{--color-background: #343541;--color-background-alt: #444654;--color-text: #FFFFFF;--color-text-secondary: #9CA3AF;--color-border: #4B5563;--color-chat-user-bg: #444654;--color-chat-assistant-bg: #343541;--color-chat-border: #4B5563;--color-chat-input-bg: #40414F;--color-chat-input-border: #4B5563;--color-chat-input-focus: #FFFFFF}.select-menu__backdrop{position:fixed;inset:0;z-index:999;background:rgba(0,0,0,0)}.select-menu{background:var(--color-background, #fff);border-radius:.5rem;box-shadow:0 4px 24px rgba(0,0,0,.12);padding:.5rem 0;min-width:180px;display:flex;flex-direction:column;gap:.25rem}.select-menu__item{background:none;border:none;width:100%;text-align:left;padding:.75rem 1.25rem;font-size:var(--font-size-base);color:var(--color-primary);cursor:pointer;border-radius:.25rem;transition:background .15s;font-family:var(--font-family-base);font-weight:var(--font-weight-medium)}.select-menu__item:hover,.select-menu__item:focus{background:var(--color-background-secondary, #f5f5f5);outline:none}.date-divider{display:flex;align-items:center;justify-content:center;margin:1.5rem 0;padding:0;position:relative}.date-divider::before,.date-divider::after{content:"";flex:1;height:1px;background-color:var(--color-border);max-width:100px}.date-divider::before{margin-right:1rem}.date-divider::after{margin-left:1rem}.date-divider__text{font-family:var(--font-family-base);font-size:.75rem;font-weight:700;color:#6b7280;letter-spacing:.05em;white-space:nowrap}.logo{display:inline-flex;align-items:center;justify-content:center}.logo svg{display:block}:root{--color-black: #000000;--color-white: #FFFFFF;--color-primary: var(--color-black);--color-secondary: #343541;--color-background: #FFFFFF;--color-background-alt: #F7F7F8;--color-text: #2D2D2D;--color-text-secondary: #6B7280;--color-text-inverse: #FFFFFF;--color-border: #E5E7EB;--color-success: #10B981;--color-error: #EF4444;--color-warning: #F59E0B;--color-info: #3B82F6;--color-chat-user-bg: #F7F7F8;--color-chat-assistant-bg: #FFFFFF;--color-chat-border: #E5E7EB;--color-chat-input-bg: #FFFFFF;--color-chat-input-border: #E5E7EB;--color-chat-input-focus: #000000;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);--spacing-xs: 0.25rem;--spacing-sm: 0.5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--border-radius-sm: 0.25rem;--border-radius-md: 0.375rem;--border-radius-lg: 0.5rem;--border-radius-full: 9999px;--font-family-base: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;--font-size-xs: 0.75rem;--font-size-sm: 0.875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.75}[data-theme=dark]{--color-background: #343541;--color-background-alt: #444654;--color-text: #FFFFFF;--color-text-secondary: #9CA3AF;--color-border: #4B5563;--color-chat-user-bg: #444654;--color-chat-assistant-bg: #343541;--color-chat-border: #4B5563;--color-chat-input-bg: #40414F;--color-chat-input-border: #4B5563;--color-chat-input-focus: #FFFFFF}.assistant-message{display:flex;gap:1rem;padding:1rem 0rem 1rem 0rem;width:100%;flex-direction:row;animation:fadeInAndSlideUp .4s cubic-bezier(0.25, 0.1, 0.25, 1) forwards}.assistant-message__content{display:flex;flex-direction:column;gap:.25rem;max-width:100%;min-width:0;box-sizing:border-box;align-items:flex-start}.assistant-message__bubble{padding:0;border-radius:1.25rem;background-color:rgba(0,0,0,0);display:flex;flex-direction:column;align-items:flex-start;gap:.25rem;max-width:420px;min-width:0;word-break:break-word;overflow-wrap:break-word;box-sizing:border-box}.assistant-message__role{font-weight:600;margin-bottom:.25rem;text-transform:capitalize;color:var(--color-secondary)}.assistant-message__markdown{color:var(--color-primary);line-height:var(--line-height-normal);font-family:var(--font-family-base);font-size:var(--font-size-base)}.assistant-message__markdown p{margin:0 0 1rem 0;font-size:var(--font-size-base);line-height:var(--line-height-normal);font-family:var(--font-family-base)}.assistant-message__markdown p:last-child{margin-bottom:0}.assistant-message__markdown h1,.assistant-message__markdown h2,.assistant-message__markdown h3,.assistant-message__markdown h4,.assistant-message__markdown h5,.assistant-message__markdown h6{margin:1.5rem 0 .5rem 0;font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight);font-family:var(--font-family-base)}.assistant-message__markdown h1:first-child,.assistant-message__markdown h2:first-child,.assistant-message__markdown h3:first-child,.assistant-message__markdown h4:first-child,.assistant-message__markdown h5:first-child,.assistant-message__markdown h6:first-child{margin-top:0}.assistant-message__markdown h1{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold)}.assistant-message__markdown h2{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold)}.assistant-message__markdown h3{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold)}.assistant-message__markdown ul,.assistant-message__markdown ol{margin:.5rem 0;padding-left:1.5rem;font-size:var(--font-size-base);line-height:var(--line-height-normal);font-family:var(--font-family-base)}.assistant-message__markdown li{margin:.25rem 0;font-size:var(--font-size-base);line-height:var(--line-height-normal);font-family:var(--font-family-base)}.assistant-message__markdown code{background-color:var(--color-background-secondary);padding:.125rem .25rem;border-radius:.25rem;font-family:"Monaco","Menlo","Ubuntu Mono",monospace;font-size:var(--font-size-sm)}.assistant-message__markdown pre{background-color:var(--color-background-secondary);padding:1rem;border-radius:.5rem;overflow-x:auto;margin:1rem 0}.assistant-message__markdown pre code{background:none;padding:0;border-radius:0;font-size:var(--font-size-sm)}.assistant-message__markdown strong{font-weight:var(--font-weight-semibold);font-family:var(--font-family-base)}.assistant-message__markdown em{font-style:italic;font-family:var(--font-family-base)}.assistant-message__markdown blockquote{border-left:3px solid var(--color-secondary);padding-left:1rem;margin:1rem 0;font-style:italic;color:var(--color-secondary);font-family:var(--font-family-base);font-size:var(--font-size-base);line-height:var(--line-height-normal)}.assistant-message__markdown table{border-collapse:collapse;width:100%;margin:1rem 0;font-family:var(--font-family-base);font-size:var(--font-size-base)}.assistant-message__markdown th,.assistant-message__markdown td{border:1px solid var(--color-border);padding:.5rem;text-align:left;font-family:var(--font-family-base);font-size:var(--font-size-base)}.assistant-message__markdown th{background-color:var(--color-background-secondary);font-weight:var(--font-weight-semibold)}.assistant-message__timestamp{opacity:.7;text-align:right}@keyframes fadeInAndSlideUp{from{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}}@media(max-width: 700px){.assistant-message__content{max-width:100%}.assistant-message__bubble{max-width:95vw}}:root{--color-black: #000000;--color-white: #FFFFFF;--color-primary: var(--color-black);--color-secondary: #343541;--color-background: #FFFFFF;--color-background-alt: #F7F7F8;--color-text: #2D2D2D;--color-text-secondary: #6B7280;--color-text-inverse: #FFFFFF;--color-border: #E5E7EB;--color-success: #10B981;--color-error: #EF4444;--color-warning: #F59E0B;--color-info: #3B82F6;--color-chat-user-bg: #F7F7F8;--color-chat-assistant-bg: #FFFFFF;--color-chat-border: #E5E7EB;--color-chat-input-bg: #FFFFFF;--color-chat-input-border: #E5E7EB;--color-chat-input-focus: #000000;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);--spacing-xs: 0.25rem;--spacing-sm: 0.5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--border-radius-sm: 0.25rem;--border-radius-md: 0.375rem;--border-radius-lg: 0.5rem;--border-radius-full: 9999px;--font-family-base: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;--font-size-xs: 0.75rem;--font-size-sm: 0.875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.75}[data-theme=dark]{--color-background: #343541;--color-background-alt: #444654;--color-text: #FFFFFF;--color-text-secondary: #9CA3AF;--color-border: #4B5563;--color-chat-user-bg: #444654;--color-chat-assistant-bg: #343541;--color-chat-border: #4B5563;--color-chat-input-bg: #40414F;--color-chat-input-border: #4B5563;--color-chat-input-focus: #FFFFFF}.assistant-thinking-indicator{display:flex;gap:1rem;padding:1rem 0rem 0rem 0rem;width:100%;flex-direction:row}.assistant-thinking-indicator__content{display:flex;flex-direction:column;gap:.25rem;max-width:100%;min-width:0;box-sizing:border-box;align-items:flex-start}.assistant-thinking-indicator__bubble{border-radius:1.25rem;background-color:var(--color-background-secondary);display:flex;flex-direction:column;align-items:flex-start;gap:.25rem;max-width:420px;min-width:0;overflow-wrap:break-word;box-sizing:border-box}.assistant-thinking-indicator__role{font-weight:600;margin-bottom:.25rem;text-transform:capitalize;color:var(--color-secondary)}.assistant-thinking-indicator__text-container{display:flex;align-items:center}.assistant-thinking-indicator__wave-text span{display:inline-block;animation:pulse-animation 1.8s ease-in-out infinite}@keyframes pulse-animation{0%,100%{opacity:1}50%{opacity:.4}}@media(max-width: 700px){.assistant-thinking-indicator__bubble{max-width:95vw}}:root{--color-black: #000000;--color-white: #FFFFFF;--color-primary: var(--color-black);--color-secondary: #343541;--color-background: #FFFFFF;--color-background-alt: #F7F7F8;--color-text: #2D2D2D;--color-text-secondary: #6B7280;--color-text-inverse: #FFFFFF;--color-border: #E5E7EB;--color-success: #10B981;--color-error: #EF4444;--color-warning: #F59E0B;--color-info: #3B82F6;--color-chat-user-bg: #F7F7F8;--color-chat-assistant-bg: #FFFFFF;--color-chat-border: #E5E7EB;--color-chat-input-bg: #FFFFFF;--color-chat-input-border: #E5E7EB;--color-chat-input-focus: #000000;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);--spacing-xs: 0.25rem;--spacing-sm: 0.5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--border-radius-sm: 0.25rem;--border-radius-md: 0.375rem;--border-radius-lg: 0.5rem;--border-radius-full: 9999px;--font-family-base: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;--font-size-xs: 0.75rem;--font-size-sm: 0.875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.75}[data-theme=dark]{--color-background: #343541;--color-background-alt: #444654;--color-text: #FFFFFF;--color-text-secondary: #9CA3AF;--color-border: #4B5563;--color-chat-user-bg: #444654;--color-chat-assistant-bg: #343541;--color-chat-border: #4B5563;--color-chat-input-bg: #40414F;--color-chat-input-border: #4B5563;--color-chat-input-focus: #FFFFFF}.chat-header{display:flex;align-items:center;justify-content:center;padding:.75rem;background-color:var(--color-background)}.chat-header__content{display:flex;align-items:center;gap:.3rem}.chat-header__logo{flex-shrink:0}.chat-header__title{margin:0;font-family:var(--font-family-base);font-size:1.125rem;font-weight:600;color:var(--color-text)}.chat__input{padding:1rem 1.5rem;background:none;border-top:none;box-shadow:none;width:100vw;max-width:100vw;box-sizing:border-box}.chat__input-stack{display:flex;flex-direction:column;gap:.5rem;background:var(--color-chat-input-bg);border:1px solid var(--color-chat-input-border);border-radius:var(--border-radius-lg);padding:.5rem 1rem .5rem 1rem}.chat__textarea{width:100%;border:none;outline:none;background:rgba(0,0,0,0);font-family:var(--font-family-base);font-size:var(--font-size-base);color:var(--color-text);resize:none;min-height:32px;max-height:120px;line-height:1.5;padding:0}.chat__actions{display:flex;justify-content:space-between;align-items:center;gap:.5rem}.chat__actions-left{display:flex;align-items:center;gap:.5rem}.chat__actions-right{display:flex;align-items:center;gap:.5rem}.chat__icon-btn{background:none;border:none;padding:0;margin:0 .25rem 0 0;border-radius:0;display:flex;align-items:center;justify-content:center;color:var(--color-text-secondary);cursor:pointer;transition:color .2s}.chat__icon-btn:last-child{margin-right:0}.chat__icon-btn:hover,.chat__icon-btn:focus{background:none;color:var(--color-primary)}.chat__attachments{display:flex;flex-direction:row;gap:12px;overflow-x:auto;padding:8px 0 4px 0;margin-bottom:0;scrollbar-width:none;scrollbar-color:var(--color-border) var(--color-background-secondary);width:100%;max-width:100%;white-space:nowrap}.chat__attachments::-webkit-scrollbar{display:none}.chat__attachments::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:4px}.chat__attachments::-webkit-scrollbar-track{background:var(--color-background-secondary);border-radius:4px}.chat__attachments>*{flex-shrink:0}.chat__attachments-wrapper{position:relative;padding-bottom:22px}.chat__attachments-count{position:absolute;right:0;bottom:0;color:var(--color-text-secondary, #888);font-size:var(--font-size-xs);padding:0;background:none;border-radius:0;box-shadow:none;pointer-events:none;z-index:3;font-family:var(--font-family-base);font-weight:var(--font-weight-medium)}.file-viewer__grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(120px, 1fr));gap:.75rem;margin-bottom:1rem}.file-viewer__item{cursor:pointer;border-radius:var(--border-radius-md);overflow:hidden;transition:all .2s ease;border:1px solid var(--color-border)}.file-viewer__item:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);border-color:var(--color-primary)}.file-viewer__item:focus{outline:2px solid var(--color-primary);outline-offset:2px}.file-viewer__image-container{position:relative;aspect-ratio:1;overflow:hidden}.file-viewer__image-container:hover .file-viewer__overlay{opacity:1}.file-viewer__image{width:100%;height:100%;object-fit:cover;transition:transform .2s ease}.file-viewer__item:hover .file-viewer__image{transform:scale(1.05)}.file-viewer__overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .2s ease;color:#fff}.file-viewer__file-container{padding:1rem;text-align:center;background:var(--color-background-secondary);min-height:120px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem}.file-viewer__file-icon{color:var(--color-text-secondary);display:flex;flex-direction:column;align-items:center;gap:.25rem}.file-viewer__pdf-icon{display:flex;flex-direction:column;align-items:center;gap:.25rem}.file-viewer__pdf-icon span{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--color-error)}.file-viewer__file-info{text-align:center}.file-viewer__file-name{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-primary);margin-bottom:.25rem;word-break:break-word;line-height:1.2}.file-viewer__file-type{font-size:var(--font-size-xs);color:var(--color-text-secondary)}.file-viewer__navigation{position:fixed;bottom:2rem;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:1rem;background:rgba(0,0,0,.8);padding:.75rem 1.5rem;border-radius:var(--border-radius-lg);z-index:1001}.file-viewer__nav-btn{background:rgba(0,0,0,0);border:none;color:#fff;padding:.5rem;border-radius:var(--border-radius-sm);cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.file-viewer__nav-btn:hover{background:hsla(0,0%,100%,.1)}.file-viewer__nav-btn:focus{outline:2px solid #fff;outline-offset:2px}.file-viewer__counter{color:#fff;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);min-width:60px;text-align:center}.fullscreen-viewer{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:0;width:100vw;height:100vh;background:var(--color-background);position:relative;font-family:var(--font-family-base)}.fullscreen-viewer__image-container{position:absolute;top:0;left:0;width:100vw;height:100vh;display:flex;align-items:center;justify-content:center;background:var(--color-background);z-index:1}.fullscreen-viewer__image{max-width:100vw;max-height:100vh;width:100vw;height:100vh;object-fit:contain;border-radius:0;opacity:0;transition:opacity .3s ease;background:var(--color-background)}.fullscreen-viewer__image--loaded{opacity:1}.fullscreen-viewer__loading,.fullscreen-viewer__error{position:absolute;left:0;right:0;top:0;bottom:0;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--color-text-secondary);gap:1rem;background:var(--color-background);z-index:2}.fullscreen-viewer__video-container{width:100%;height:100%;min-height:0;display:flex;align-items:center;justify-content:center;background:var(--color-background)}.fullscreen-viewer__video{max-width:100vw;max-height:100%;border-radius:0;background:var(--color-background)}.fullscreen-viewer__file-container{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:2rem;padding:2rem;width:100vw;height:100vh;background:var(--color-background)}.fullscreen-viewer__file-icon{color:var(--color-text-secondary);display:flex;flex-direction:column;align-items:center;gap:.5rem}.fullscreen-viewer__pdf-icon{display:flex;flex-direction:column;align-items:center;gap:.5rem}.fullscreen-viewer__pdf-icon span{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-error)}.fullscreen-viewer__file-info{display:flex;flex-direction:column;align-items:center;gap:1rem}.fullscreen-viewer__file-name{margin:0;font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);word-break:break-word;max-width:400px}.fullscreen-viewer__file-details{margin:0;font-size:var(--font-size-sm);color:var(--color-text-secondary)}.fullscreen-viewer__download-btn{margin-top:1rem}.fullscreen-viewer__arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:10;background:var(--color-background);box-shadow:0 2px 8px rgba(0,0,0,.1);opacity:.95;transition:background .2s,box-shadow .2s;border:none;outline:none}.fullscreen-viewer__arrow:hover,.fullscreen-viewer__arrow:focus{background:var(--color-background-hover, #f0f0f0);box-shadow:0 4px 12px rgba(0,0,0,.15)}.fullscreen-viewer__arrow--left{left:2rem}.fullscreen-viewer__arrow--right{right:2rem}.fullscreen-viewer__counter{position:absolute;bottom:3.5rem;left:50%;transform:translateX(-50%);background:rgba(0,0,0,.7);color:#fff;padding:.5rem 1rem;border-radius:1rem;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);z-index:10;pointer-events:none}.fullscreen-viewer__floating-header{position:absolute;top:0;left:0;width:100vw;display:flex;align-items:flex-start;justify-content:flex-start;padding:1.2rem 0 0 1.5rem;background:rgba(0,0,0,0);z-index:20;box-shadow:none;backdrop-filter:none}.fullscreen-viewer__floating-title{color:#fff;font-size:1.15rem;font-weight:600;text-shadow:0 1px 4px rgba(0,0,0,.25);max-width:80vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-right:3.5rem}.fullscreen-viewer__floating-close{position:absolute;top:1.2rem;right:2.5rem;background:#111;border:none;border-radius:50%;padding:.12rem;width:32px;height:32px;min-width:32px;min-height:32px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s,border .2s;box-shadow:0 2px 8px rgba(0,0,0,.1);border:2px solid rgba(0,0,0,0);z-index:30}.fullscreen-viewer__floating-close:hover,.fullscreen-viewer__floating-close:focus{background:#fff;border:2px solid #111}.fullscreen-viewer__floating-close svg{width:18px;height:18px;stroke:#fff;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;display:block}.fullscreen-viewer__floating-close:hover svg,.fullscreen-viewer__floating-close:focus svg{stroke:#111}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.message-status{display:inline-block}.message-status--failed{color:#ff3b30 !important}.message-status__retry{text-decoration:underline;cursor:pointer;color:#ff3b30;font-weight:600}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.8);display:flex;align-items:center;justify-content:center;z-index:1000;padding:0;width:100vw;height:100vh}.modal{background:var(--color-background);border-radius:0;box-shadow:var(--shadow-xl);max-width:100vw;max-height:100vh;width:100vw;height:100vh;display:flex;flex-direction:column;overflow:hidden;animation:modalFadeIn .2s ease-out;font-family:var(--font-family-base)}.modal__header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.5rem;background:var(--color-background-secondary);flex-shrink:0}.modal__title{margin:0;font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.modal__close-btn{background:rgba(0,0,0,0);border:none;color:var(--color-text-secondary);padding:.5rem;border-radius:var(--border-radius-sm);cursor:pointer;transition:all .2s ease}.modal__close-btn:hover{background:var(--color-background-hover);color:var(--color-text-primary)}.modal__content{flex:1;min-height:0;overflow:hidden;padding:0;display:flex;align-items:center;justify-content:center;height:100%;width:100%}@keyframes modalFadeIn{from{opacity:0;transform:scale(0.95)}to{opacity:1;transform:scale(1)}}.user-attachments{display:flex;flex-direction:row;gap:12px;overflow-x:auto;padding:0 0 4px 0;margin-bottom:.5rem;scrollbar-width:none;width:100%;max-width:100%;white-space:nowrap}.user-attachments::-webkit-scrollbar{display:none}.user-attachments>*{flex-shrink:0}:root{--color-black: #000000;--color-white: #FFFFFF;--color-primary: var(--color-black);--color-secondary: #343541;--color-background: #FFFFFF;--color-background-alt: #F7F7F8;--color-text: #2D2D2D;--color-text-secondary: #6B7280;--color-text-inverse: #FFFFFF;--color-border: #E5E7EB;--color-success: #10B981;--color-error: #EF4444;--color-warning: #F59E0B;--color-info: #3B82F6;--color-chat-user-bg: #F7F7F8;--color-chat-assistant-bg: #FFFFFF;--color-chat-border: #E5E7EB;--color-chat-input-bg: #FFFFFF;--color-chat-input-border: #E5E7EB;--color-chat-input-focus: #000000;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);--spacing-xs: 0.25rem;--spacing-sm: 0.5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--border-radius-sm: 0.25rem;--border-radius-md: 0.375rem;--border-radius-lg: 0.5rem;--border-radius-full: 9999px;--font-family-base: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;--font-size-xs: 0.75rem;--font-size-sm: 0.875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.75}[data-theme=dark]{--color-background: #343541;--color-background-alt: #444654;--color-text: #FFFFFF;--color-text-secondary: #9CA3AF;--color-border: #4B5563;--color-chat-user-bg: #444654;--color-chat-assistant-bg: #343541;--color-chat-border: #4B5563;--color-chat-input-bg: #40414F;--color-chat-input-border: #4B5563;--color-chat-input-focus: #FFFFFF}.user-message{display:flex;gap:1rem;padding:1rem 0rem 1rem 0rem;width:100%;flex-direction:row-reverse;font-family:var(--font-family-base)}.user-message__content{display:flex;flex-direction:column;gap:.25rem;max-width:100%;min-width:0;box-sizing:border-box;align-items:flex-end}.user-message__bubble{padding:1rem 1.5rem;border-radius:1.5rem 1.5rem .5rem 1.5rem;background:#f5f6fa;display:flex;flex-direction:column;align-items:flex-start;gap:.25rem;max-width:420px;min-width:0;word-break:break-word;overflow-wrap:break-word;box-sizing:border-box;color:#23272f;font-family:var(--font-family-base)}.user-message__role{font-weight:600;margin-bottom:.25rem;text-transform:capitalize}.user-message__meta{display:flex;align-items:center;justify-content:flex-end;gap:.5rem}.user-message__timestamp{opacity:.7;text-align:right}@media(max-width: 700px){.user-message__content{max-width:100%}.user-message__bubble{max-width:95vw}}.chat-layout{display:grid;grid-template-rows:auto 1fr auto;grid-template-areas:"header" "main" "footer";height:var(--app-height, 100vh);width:100vw;box-sizing:border-box;background-color:var(--color-background);overflow:hidden;margin:0;max-width:none;max-height:none}.chat-header{grid-area:header;height:25px}.chat-main{grid-area:main;flex-grow:1;overflow-y:auto;padding:0 2rem;display:flex;flex-direction:column;gap:.5rem;width:100%;box-sizing:border-box;position:relative;background-color:var(--color-background);-ms-overflow-style:none;scrollbar-width:none}.chat-main::-webkit-scrollbar{display:none}.chat-footer{grid-area:footer;position:relative}.chat__input{padding:1rem 1.5rem;background:none;border-top:none;box-shadow:none}.chat__input-wrapper{position:relative;width:100%;display:flex;align-items:center}.chat__input-wrapper input,.chat__input-wrapper .input{padding-right:4.5rem !important}.chat__send-btn{position:absolute !important;right:8px;top:50%;transform:translateY(-50%);height:40px;min-width:80px;border-radius:var(--border-radius-lg);z-index:2;margin:0}.chat__input-stack{display:flex;flex-direction:column;gap:.5rem;background:var(--color-chat-input-bg);border:1px solid var(--color-chat-input-border);border-radius:var(--border-radius-lg);padding:.5rem 1rem .5rem 1rem}.chat__textarea{width:100%;border:none;outline:none;background:rgba(0,0,0,0);font-family:var(--font-family-base);font-size:var(--font-size-base);color:var(--color-text);resize:none;min-height:32px;max-height:120px;line-height:1.5;padding:0}.chat__actions{display:flex;justify-content:space-between;align-items:center;gap:.5rem}.chat__actions-left{display:flex;align-items:center;gap:.5rem}.chat__actions-right{display:flex;align-items:center;gap:.5rem}.chat__icon-btn{background:none;border:none;padding:0;margin:0 .25rem 0 0;border-radius:0;display:flex;align-items:center;justify-content:center;color:var(--color-text-secondary);cursor:pointer;transition:color .2s}.chat__icon-btn:last-child{margin-right:0}.chat__icon-btn:hover,.chat__icon-btn:focus{background:none;color:var(--color-primary)}.chat__attachments{display:flex;flex-direction:row;gap:12px;overflow-x:auto;padding:8px 0 4px 0;margin-bottom:0;scrollbar-width:none;scrollbar-color:var(--color-border) var(--color-background-alt);width:100%;max-width:100%;white-space:nowrap}.chat__attachments::-webkit-scrollbar{display:none}.chat__attachments::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:4px}.chat__attachments::-webkit-scrollbar-track{background:var(--color-background-alt);border-radius:4px}.chat__attachments>*{flex-shrink:0}.chat__attachments-wrapper{position:relative;padding-bottom:22px}.chat__attachments-count{position:absolute;right:0;bottom:0;color:var(--color-text-secondary, #888);font-size:var(--font-size-xs);padding:0;background:none;border-radius:0;box-shadow:none;pointer-events:none;z-index:3;font-family:var(--font-family-base);font-weight:var(--font-weight-medium)}.chat__scroll-to-bottom{position:absolute;left:50%;transform:translateX(-50%);top:-3rem;z-index:10;box-shadow:0 2px 8px rgba(0,0,0,.1);background:var(--color-background);transition:opacity .2s,transform .2s;opacity:.95}@media(max-width: 700px){.chat-layout{max-width:100vw;width:100vw;border-radius:0}.chat-main,.chat__input{padding-left:1rem;padding-right:1rem}.chat__scroll-to-bottom{left:50%;transform:translateX(-50%);top:-2.5rem}}.chat__scroll-to-bottom .button__icon{display:flex;align-items:center;justify-content:center;transform:rotate(180deg)}/*# sourceMappingURL=styles.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sourceRoot":"","sources":["../src/styles/_variables.scss","../src/styles/global.scss","../src/components/atoms/Button/Button.scss","../src/components/atoms/Input/Input.scss","../src/components/atoms/Text/Text.scss","../src/components/atoms/Textarea/Textarea.scss","../src/components/atoms/Link/Link.scss","../src/components/atoms/Avatar/Avatar.scss","../src/components/atoms/AttachmentPreview/AttachmentPreview.scss","../src/components/atoms/SelectMenu/SelectMenu.scss","../src/components/atoms/DateDivider/DateDivider.scss","../src/components/atoms/logo/Logo.scss","../src/components/molecules/chat/AssistantMessage/AssistantMessage.scss","../src/components/molecules/chat/AssistantThinkingIndicator/AssistantThinkingIndicator.scss","../src/components/molecules/chat/ChatHeader/ChatHeader.scss","../src/components/molecules/chat/ChatInput/ChatInput.scss","../src/components/molecules/chat/FileViewer/FileViewer.scss","../src/components/molecules/chat/FullscreenViewer/FullscreenViewer.scss","../src/components/molecules/chat/MessageStatus/MessageStatus.scss","../src/components/molecules/chat/Modal/Modal.scss","../src/components/molecules/chat/UserAttachments/UserAttachments.scss","../src/components/molecules/chat/UserMessage/UserMessage.scss","../src/components/organisms/chat/Chat.scss"],"names":[],"mappings":"AACA,MAEE,uBACA,uBAGA,oCACA,2BACA,4BACA,gCACA,sBACA,gCACA,8BACA,wBAGA,yBACA,uBACA,yBACA,sBAGA,8BACA,mCACA,6BACA,+BACA,mCACA,kCAGA,2CACA,6CACA,+CAGA,sBACA,qBACA,mBACA,qBACA,mBAGA,4BACA,6BACA,2BACA,6BAGA,yJACA,wBACA,yBACA,uBACA,yBACA,wBACA,wBAGA,0BACA,0BACA,4BACA,wBAGA,0BACA,0BACA,4BAIF,kBACE,4BACA,gCACA,sBACA,gCACA,wBAEA,8BACA,mCACA,6BACA,+BACA,mCACA,kCAjFF,MAEE,uBACA,uBAGA,oCACA,2BACA,4BACA,gCACA,sBACA,gCACA,8BACA,wBAGA,yBACA,uBACA,yBACA,sBAGA,8BACA,mCACA,6BACA,+BACA,mCACA,kCAGA,2CACA,6CACA,+CAGA,sBACA,qBACA,mBACA,qBACA,mBAGA,4BACA,6BACA,2BACA,6BAGA,yJACA,wBACA,yBACA,uBACA,yBACA,wBACA,wBAGA,0BACA,0BACA,4BACA,wBAGA,0BACA,0BACA,4BAIF,kBACE,4BACA,gCACA,sBACA,gCACA,wBAEA,8BACA,mCACA,6BACA,+BACA,mCACA,kCChFF,EACE,SACA,UACA,sBAGF,KACE,oCACA,gCACA,sCACA,wBACA,yCACA,mCACA,kCAIF,cACE,2BAGF,gBACE,kCAGF,YACE,sCAGF,cACE,6CAIF,gBACE,+BAIF,oBACE,UACA,WAGF,0BACE,mCAGF,0BACE,+BACA,wCAGF,gCACE,uCCxDF,QACE,oBACA,mBACA,uBACA,sBACA,YACA,sCACA,oCACA,sCACA,eACA,+BACA,kBAGA,iBACE,sCACA,yBAEA,sCACE,WAGF,uCACE,WAIJ,mBACE,6CACA,wBAEA,wCACE,qCAIJ,eACE,+BACA,wBAEA,oCACE,6CAIJ,cACE,0BACA,wCACA,+BACA,wBAEA,mCACE,6CAKJ,eACE,4CACA,8BAGF,gBACE,4CACA,gCAGF,eACE,4CACA,8BAIF,iBACE,WACA,mBAGF,oBACE,WAGF,iBACE,YAEA,+BACE,kBAKJ,gBACE,kBACA,WACA,YACA,oCACA,kBACA,+BACA,0CAIF,cACE,aACA,mBACA,uBAIJ,uBACE,GACE,0BAIJ,gBACE,yCACA,yBACA,6BACA,sBACA,uBACA,0BACA,2BACA,qBACA,aACA,mBACA,uBACA,gBACA,YACA,0BAGF,4CAEE,2BAGF,8BACE,yBACA,aACA,mBACA,uBC7IF,eACE,aACA,sBACA,sBAEA,2BACE,WAIA,6BACE,gCAEA,mCACE,gCACA,wCAMJ,4BACE,4CACA,gDACA,sCACA,4BACA,gCACA,uCACA,YACA,gBACA,sBACA,aACA,mBAEA,kCACE,2CACA,oCAKN,sBACE,8BACA,sCACA,wBAGF,0BACE,kBACA,aACA,mBAGF,qBACE,kBACA,uBACA,aACA,mBACA,uBACA,kCAGF,sBACE,8BACA,yBAIJ,OACE,WACA,4CACA,oCACA,gCACA,sCACA,wBACA,yCACA,qCACA,sCACA,+BAEA,kBACE,8CAGF,oBACE,kCAGF,aACE,aACA,kCACA,oCAGF,gBACE,6CACA,mBChGJ,MACE,SACA,oCAGA,UACE,+BACA,qCACA,oCAGF,UACE,8BACA,qCACA,wCAGF,UACE,8BACA,qCACA,wCAGF,UACE,gCACA,sCACA,wCAGF,YACE,gCACA,sCAGF,aACE,8BACA,sCAGF,eACE,8BACA,sCAIF,cACE,sCAGF,cACE,sCAGF,gBACE,wCAGF,YACE,oCAIF,eACE,wBAGF,iBACE,kCAGF,eACE,cAIF,YACE,gBAGF,cACE,kBAGF,aACE,iBCpFJ,UACE,WACA,YACA,aACA,yBACA,oCACA,gCACA,wBACA,YACA,gBACA,iBACA,gBACA,ULXF,MAEE,uBACA,uBAGA,oCACA,2BACA,4BACA,gCACA,sBACA,gCACA,8BACA,wBAGA,yBACA,uBACA,yBACA,sBAGA,8BACA,mCACA,6BACA,+BACA,mCACA,kCAGA,2CACA,6CACA,+CAGA,sBACA,qBACA,mBACA,qBACA,mBAGA,4BACA,6BACA,2BACA,6BAGA,yJACA,wBACA,yBACA,uBACA,yBACA,wBACA,wBAGA,0BACA,0BACA,4BACA,wBAGA,0BACA,0BACA,4BAIF,kBACE,4BACA,gCACA,sBACA,gCACA,wBAEA,8BACA,mCACA,6BACA,+BACA,mCACA,kCMhFF,MACE,oBACA,mBACA,WACA,qBACA,+BACA,oCACA,eAGA,eACE,2BAEA,qBACE,gCAIJ,iBACE,6BAEA,uBACE,kCAIJ,cACE,0BAEA,oBACE,+BAKJ,aACE,8BACA,sCAGF,cACE,gCACA,sCAGF,aACE,8BACA,sCAIF,cACE,sCAGF,cACE,sCAGF,gBACE,wCAGF,YACE,oCAIF,iBACE,0BACA,mCACA,8BACA,0BAEA,uBACE,8BAMF,qCACE,WACA,mCAIA,2CACE,UAMN,YACE,2BAGF,aACE,wBAIF,YACE,uCACA,mBACA,kBAIF,qBACE,cCjHJ,QACE,kBACA,aACA,mBACA,uBACA,wCACA,gBACA,6CAEA,eACE,WACA,YACA,8BAGF,gBACE,WACA,YACA,8BAGF,eACE,WACA,YACA,gCAIF,cACE,sCACA,yBAGF,mBACE,6CACA,wBAIF,eACE,WACA,YACA,iBAIF,kBACE,WACA,YACA,aACA,mBACA,uBACA,sCAIF,wBACE,UACA,WAEA,4BACE,WACA,YAMF,oCACE,aCrEN,oBACE,aACA,mBACA,WACA,eACA,qCACA,sCACA,6CACA,kBACA,wBACA,oCAEA,+BACE,eAEA,0EAEE,kBACA,aAIJ,2BACE,WACA,YACA,iBACA,sCACA,cAGF,0BACE,WACA,YACA,aACA,mBACA,uBACA,mCACA,sCACA,cAGF,8BACE,WACA,YACA,aACA,mBACA,uBACA,8BACA,WACA,sCACA,8BACA,oCACA,cAGF,0BACE,OACA,YAGF,0BACE,8BACA,sCACA,gCACA,qBACA,sBACA,gBAGF,0BACE,8BACA,kCAGF,4BACE,kBACA,YACA,cACA,WACA,YACA,eACA,gBACA,+BACA,gBACA,WACA,kBACA,eACA,aACA,mBACA,uBACA,8BACA,oCACA,wBACA,UACA,sBACA,UAEA,gCACE,WACA,YACA,cAGF,oEAEE,gBACA,sBACA,WACA,aACA,qBR5GN,MAEE,uBACA,uBAGA,oCACA,2BACA,4BACA,gCACA,sBACA,gCACA,8BACA,wBAGA,yBACA,uBACA,yBACA,sBAGA,8BACA,mCACA,6BACA,+BACA,mCACA,kCAGA,2CACA,6CACA,+CAGA,sBACA,qBACA,mBACA,qBACA,mBAGA,4BACA,6BACA,2BACA,6BAGA,yJACA,wBACA,yBACA,uBACA,yBACA,wBACA,wBAGA,0BACA,0BACA,4BACA,wBAGA,0BACA,0BACA,4BAIF,kBACE,4BACA,gCACA,sBACA,gCACA,wBAEA,8BACA,mCACA,6BACA,+BACA,mCACA,kCShFF,uBACE,eACA,QACA,YACA,yBAGF,aACE,yCACA,oBACA,sCACA,gBACA,gBACA,aACA,sBACA,WAGF,mBACE,gBACA,YACA,WACA,gBACA,uBACA,gCACA,2BACA,eACA,qBACA,2BACA,oCACA,sCAGF,kDAEE,sDACA,aCtCF,cACE,aACA,mBACA,uBACA,gBACA,UACA,kBAEA,2CAEE,WACA,OACA,WACA,qCACA,gBAGF,sBACE,kBAGF,qBACE,iBAIJ,oBACE,oCACA,iBACA,gBACA,cACA,qBACA,mBChCF,MACE,oBACA,mBACA,uBAEA,UACE,cXLJ,MAEE,uBACA,uBAGA,oCACA,2BACA,4BACA,gCACA,sBACA,gCACA,8BACA,wBAGA,yBACA,uBACA,yBACA,sBAGA,8BACA,mCACA,6BACA,+BACA,mCACA,kCAGA,2CACA,6CACA,+CAGA,sBACA,qBACA,mBACA,qBACA,mBAGA,4BACA,6BACA,2BACA,6BAGA,yJACA,wBACA,yBACA,uBACA,yBACA,wBACA,wBAGA,0BACA,0BACA,4BACA,wBAGA,0BACA,0BACA,4BAIF,kBACE,4BACA,gCACA,sBACA,gCACA,wBAEA,8BACA,mCACA,6BACA,+BACA,mCACA,kCYhFF,mBACE,aACA,SACA,4BACA,WACA,mBACA,yEAEA,4BACE,aACA,sBACA,WACA,eACA,YACA,sBACA,uBAGF,2BACE,UACA,sBACA,+BACA,aACA,sBACA,uBACA,WACA,gBACA,YACA,sBACA,yBACA,sBAGF,yBACE,gBACA,qBACA,0BACA,6BAGF,6BACE,2BACA,sCACA,oCACA,gCAGA,+BACE,kBACA,gCACA,sCACA,oCAEA,0CACE,gBAKJ,gMACE,wBACA,wCACA,qCACA,oCAEA,wQACE,aAIJ,gCACE,+BACA,oCAEF,gCACE,8BACA,wCAEF,gCACE,8BACA,wCAIF,gEACE,eACA,oBACA,gCACA,sCACA,oCAGF,gCACE,gBACA,gCACA,sCACA,oCAIF,kCACE,mDACA,uBACA,qBACA,qDACA,8BAIF,iCACE,mDACA,aACA,oBACA,gBACA,cAEA,sCACE,gBACA,UACA,gBACA,8BAgBJ,oCACE,wCACA,oCAGF,gCACE,kBACA,oCAIF,wCACE,6CACA,kBACA,cACA,kBACA,6BACA,oCACA,gCACA,sCAIF,mCACE,yBACA,WACA,cACA,oCACA,gCAGF,gEACE,qCACA,cACA,gBACA,oCACA,gCAGF,gCACE,mDACA,wCAIJ,8BACE,WACA,iBAIJ,4BACE,KACE,UACA,2BAEF,GACE,UACA,yBAIJ,yBAEI,4BACE,eAEF,2BACE,gBZ7MN,MAEE,uBACA,uBAGA,oCACA,2BACA,4BACA,gCACA,sBACA,gCACA,8BACA,wBAGA,yBACA,uBACA,yBACA,sBAGA,8BACA,mCACA,6BACA,+BACA,mCACA,kCAGA,2CACA,6CACA,+CAGA,sBACA,qBACA,mBACA,qBACA,mBAGA,4BACA,6BACA,2BACA,6BAGA,yJACA,wBACA,yBACA,uBACA,yBACA,wBACA,wBAGA,0BACA,0BACA,4BACA,wBAGA,0BACA,0BACA,4BAIF,kBACE,4BACA,gCACA,sBACA,gCACA,wBAEA,8BACA,mCACA,6BACA,+BACA,mCACA,kCahFF,8BACE,aACA,SACA,4BACA,WACA,mBAEA,uCACE,aACA,sBACA,WACA,eACA,YACA,sBACA,uBAGF,sCACE,sBACA,mDACA,aACA,sBACA,uBACA,WACA,gBACA,YACA,yBACA,sBAGF,oCACE,gBACA,qBACA,0BACA,6BAGF,8CACE,aACA,mBAIA,8CACE,qBACA,oDAKN,2BACE,QACE,UAEF,IACE,YAIJ,yBACE,sCACE,gBb9DJ,MAEE,uBACA,uBAGA,oCACA,2BACA,4BACA,gCACA,sBACA,gCACA,8BACA,wBAGA,yBACA,uBACA,yBACA,sBAGA,8BACA,mCACA,6BACA,+BACA,mCACA,kCAGA,2CACA,6CACA,+CAGA,sBACA,qBACA,mBACA,qBACA,mBAGA,4BACA,6BACA,2BACA,6BAGA,yJACA,wBACA,yBACA,uBACA,yBACA,wBACA,wBAGA,0BACA,0BACA,4BACA,wBAGA,0BACA,0BACA,4BAIF,kBACE,4BACA,gCACA,sBACA,gCACA,wBAEA,8BACA,mCACA,6BACA,+BACA,mCACA,kCchFF,aACE,aACA,mBACA,uBACA,eACA,yCAGA,sBACE,aACA,mBACA,UAGF,mBACE,cAGF,oBACE,SACA,oCACA,mBACA,gBACA,wBCzBJ,aACE,oBACA,gBACA,gBACA,gBACA,YACA,gBACA,sBAGF,mBACE,aACA,sBACA,UACA,sCACA,gDACA,sCACA,8BAGF,gBACE,WACA,YACA,aACA,yBACA,oCACA,gCACA,wBACA,YACA,gBACA,iBACA,gBACA,UAGF,eACE,aACA,8BACA,mBACA,UAGF,oBACE,aACA,mBACA,UAGF,qBACE,aACA,mBACA,UAGF,gBACE,gBACA,YACA,UACA,oBACA,gBACA,aACA,mBACA,uBACA,kCACA,eACA,qBAEF,2BACE,eAEF,4CAEE,gBACA,2BAGF,mBACE,aACA,mBACA,SACA,gBACA,oBACA,gBACA,qBACA,sEACA,WACA,eACA,mBAGF,sCACE,aAGF,4CACE,+BACA,kBAGF,4CACE,6CACA,kBAGF,qBACE,cAGF,2BACE,kBACA,oBAGF,yBACE,kBACA,QACA,SACA,wCACA,8BACA,UACA,gBACA,gBACA,gBACA,oBACA,UACA,oCACA,sCC7HA,mBACE,aACA,4DACA,WACA,mBAGF,mBACE,eACA,sCACA,gBACA,wBACA,qCAEA,yBACE,2BACA,4BACA,kCAGF,yBACE,uCACA,mBAIJ,8BACE,kBACA,eACA,gBAEA,0DACE,UAIJ,oBACE,WACA,YACA,iBACA,8BAEA,6CACE,sBAIJ,sBACE,kBACA,MACA,OACA,QACA,SACA,0BACA,aACA,mBACA,uBACA,UACA,4BACA,WAGF,6BACE,aACA,kBACA,6CACA,iBACA,aACA,sBACA,mBACA,uBACA,UAGF,wBACE,kCACA,aACA,sBACA,mBACA,WAGF,uBACE,aACA,sBACA,mBACA,WAEA,4BACE,8BACA,wCACA,yBAIJ,wBACE,kBAGF,wBACE,8BACA,sCACA,gCACA,qBACA,sBACA,gBAGF,wBACE,8BACA,kCAGF,yBACE,eACA,YACA,SACA,2BACA,aACA,mBACA,SACA,0BACA,sBACA,sCACA,aAGF,sBACE,yBACA,YACA,WACA,cACA,sCACA,eACA,wBACA,aACA,mBACA,uBAEA,4BACE,8BAGF,4BACE,uBACA,mBAIJ,sBACE,WACA,8BACA,sCACA,eACA,kBC3JJ,mBACE,aACA,sBACA,mBACA,uBACA,aACA,YACA,aACA,mCACA,kBACA,oCAEA,oCACE,kBACA,MACA,OACA,YACA,aACA,aACA,mBACA,uBACA,mCACA,UAGF,0BACE,gBACA,iBACA,YACA,aACA,mBACA,gBACA,UACA,4BACA,mCAEA,kCACE,UAIJ,sDACE,kBACA,8BACA,aACA,sBACA,mBACA,uBACA,kCACA,SACA,mCACA,UAGF,oCACE,WACA,YACA,aACA,aACA,mBACA,uBACA,mCAGF,0BACE,gBACA,gBACA,gBACA,mCAGF,mCACE,aACA,sBACA,mBACA,uBACA,kBACA,SACA,aACA,YACA,aACA,mCAGF,8BACE,kCACA,aACA,sBACA,mBACA,UAGF,6BACE,aACA,sBACA,mBACA,UAEA,kCACE,8BACA,wCACA,yBAIJ,8BACE,aACA,sBACA,mBACA,SAGF,8BACE,SACA,8BACA,wCACA,gCACA,sBACA,gBAGF,iCACE,SACA,8BACA,kCAGF,iCACE,gBAGF,0BACE,kBACA,QACA,2BACA,WACA,mCACA,oCACA,YACA,yCACA,YACA,aACA,gEAEE,kDACA,sCAEF,gCACE,UAEF,iCACE,WAIJ,4BACE,kBACA,cACA,SACA,2BACA,0BACA,WACA,mBACA,mBACA,8BACA,sCACA,WACA,oBAGF,oCACE,kBACA,MACA,OACA,YACA,aACA,uBACA,2BACA,0BACA,yBACA,WACA,gBACA,qBAGF,mCACE,WACA,kBACA,gBACA,sCACA,eACA,gBACA,uBACA,mBACA,oBAGF,mCACE,kBACA,WACA,aACA,gBACA,YACA,kBACA,eACA,WACA,YACA,eACA,gBACA,eACA,aACA,mBACA,uBACA,qCACA,oCACA,+BACA,WAGF,kFAEE,gBACA,sBAGF,uCACE,WACA,YACA,YACA,iBACA,qBACA,sBACA,cAGF,0FAEE,YAIJ,gBACE,0BACA,+BCnPF,gBACE,qBAEA,wBACE,yBAGF,uBACE,0BACA,eACA,cACA,gBCXJ,eACE,eACA,MACA,OACA,QACA,SACA,gCACA,aACA,mBACA,uBACA,aACA,UACA,YACA,aAGF,OACE,mCACA,gBACA,4BACA,gBACA,iBACA,YACA,aACA,aACA,sBACA,gBACA,mCACA,oCAEA,eACE,aACA,mBACA,8BACA,oBACA,6CACA,cAGF,cACE,SACA,8BACA,wCACA,gCAGF,kBACE,yBACA,YACA,kCACA,cACA,sCACA,eACA,wBAEA,wBACE,yCACA,gCAIJ,gBACE,OACA,aACA,gBACA,UACA,aACA,mBACA,uBACA,YACA,WAIJ,uBACE,KACE,UACA,sBAEF,GACE,UACA,oBCjFJ,kBACE,aACA,mBACA,SACA,gBACA,kBACA,oBACA,qBACA,WACA,eACA,mBAGF,qCACE,aAGF,oBACE,cpBjBF,MAEE,uBACA,uBAGA,oCACA,2BACA,4BACA,gCACA,sBACA,gCACA,8BACA,wBAGA,yBACA,uBACA,yBACA,sBAGA,8BACA,mCACA,6BACA,+BACA,mCACA,kCAGA,2CACA,6CACA,+CAGA,sBACA,qBACA,mBACA,qBACA,mBAGA,4BACA,6BACA,2BACA,6BAGA,yJACA,wBACA,yBACA,uBACA,yBACA,wBACA,wBAGA,0BACA,0BACA,4BACA,wBAGA,0BACA,0BACA,4BAIF,kBACE,4BACA,gCACA,sBACA,gCACA,wBAEA,8BACA,mCACA,6BACA,+BACA,mCACA,kCqBhFF,cACE,aACA,SACA,4BACA,WACA,2BACA,oCAEA,uBACE,aACA,sBACA,WACA,eACA,YACA,sBACA,qBAGF,sBACE,oBACA,yCACA,mBACA,aACA,sBACA,uBACA,WACA,gBACA,YACA,sBACA,yBACA,sBACA,cACA,oCAGF,oBACE,gBACA,qBACA,0BAGF,oBACE,aACA,mBACA,yBACA,UAGF,yBACE,WACA,iBAIJ,yBAEI,uBACE,eAEF,sBACE,gBC5DN,aACE,aACA,iCACA,oBACE,yBAGF,gCACA,YACA,sBACA,yCACA,gBACA,SACA,eACA,gBAGF,aACE,iBACA,YAGF,WACE,eACA,YACA,gBACA,eACA,aACA,sBACA,UACA,WACA,sBACA,kBACA,yCAOA,wBACA,qBALA,8BACE,aAOJ,aACE,iBACA,kBAGF,aACE,oBACA,gBACA,gBACA,gBAGF,qBACE,kBACA,WACA,aACA,mBAGF,uDAEE,gCAGF,gBACE,6BACA,UACA,QACA,2BACA,YACA,eACA,sCACA,UACA,SAGF,mBACE,aACA,sBACA,UACA,sCACA,gDACA,sCACA,8BAGF,gBACE,WACA,YACA,aACA,yBACA,oCACA,gCACA,wBACA,YACA,gBACA,iBACA,gBACA,UAGF,eACE,aACA,8BACA,mBACA,UAGF,oBACE,aACA,mBACA,UAGF,qBACE,aACA,mBACA,UAGF,gBACE,gBACA,YACA,UACA,oBACA,gBACA,aACA,mBACA,uBACA,kCACA,eACA,qBAEF,2BACE,eAEF,4CAEE,gBACA,2BAGF,mBACE,aACA,mBACA,SACA,gBACA,oBACA,gBACA,qBACA,gEACA,WACA,eACA,mBAGF,sCACE,aAGF,4CACE,+BACA,kBAGF,4CACE,uCACA,kBAGF,qBACE,cAGF,2BACE,kBACA,oBAGF,yBACE,kBACA,QACA,SACA,wCACA,8BACA,UACA,gBACA,gBACA,gBACA,oBACA,UACA,oCACA,sCAGF,wBACE,kBACA,SACA,2BACA,UACA,WACA,oCACA,mCACA,qCACA,YAGF,yBACE,aACE,gBACA,YACA,gBAEF,wBAEE,kBACA,mBAEF,wBACE,SACA,2BACA,aAIJ,sCACE,aACA,mBACA,uBACA","file":"styles.css"}
@@ -0,0 +1 @@
1
+ import '@testing-library/jest-dom';
@@ -0,0 +1,20 @@
1
+ import '@testing-library/jest-dom';
2
+ import { vi } from 'vitest';
3
+ // Mock de CSS modules para evitar errores en los tests
4
+ vi.mock('*.scss', () => ({
5
+ default: {},
6
+ }));
7
+ // Configuración global para los tests
8
+ Object.defineProperty(window, 'matchMedia', {
9
+ writable: true,
10
+ value: vi.fn().mockImplementation(query => ({
11
+ matches: false,
12
+ media: query,
13
+ onchange: null,
14
+ addListener: vi.fn(), // deprecated
15
+ removeListener: vi.fn(), // deprecated
16
+ addEventListener: vi.fn(),
17
+ removeEventListener: vi.fn(),
18
+ dispatchEvent: vi.fn(),
19
+ })),
20
+ });
package/package.json ADDED
@@ -0,0 +1,95 @@
1
+ {
2
+ "name": "pixelon",
3
+ "version": "0.1.0",
4
+ "description": "Design system de la marca goluti",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "module": "dist/index.esm.js",
8
+ "types": "dist/index.d.ts",
9
+ "files": [
10
+ "dist",
11
+ "src/styles"
12
+ ],
13
+ "style": "dist/styles.css",
14
+ "scripts": {
15
+ "dev": "vite",
16
+ "build": "tsc -b && vite build",
17
+ "build:lib": "tsc --project tsconfig.json && rollup -c && npx sass src/styles/index.scss dist/styles.css --style=compressed",
18
+ "lint": "eslint .",
19
+ "preview": "vite preview",
20
+ "storybook": "storybook dev -p 6006",
21
+ "build-storybook": "storybook build",
22
+ "test": "vitest",
23
+ "test:ui": "vitest --ui",
24
+ "test:run": "vitest run",
25
+ "mobile": "npx storybook dev -p 6006 --host 0.0.0.0",
26
+ "get:ip": "ipconfig getifaddr en0",
27
+ "prepublishOnly": "npm run build:lib"
28
+ },
29
+ "keywords": [
30
+ "pixelon",
31
+ "goluti",
32
+ "react",
33
+ "typescript",
34
+ "design-system",
35
+ "components",
36
+ "atomic-design"
37
+ ],
38
+ "author": "Marlon Andrés León León <dandresleon64@gmail.com>",
39
+ "license": "MIT",
40
+ "repository": {
41
+ "type": "git",
42
+ "url": "https://github.com/dandres10/pixelon"
43
+ },
44
+ "homepage": "https://github.com/dandres10/pixelon#readme",
45
+ "bugs": {
46
+ "url": "https://github.com/dandres10/pixelon/issues"
47
+ },
48
+ "peerDependencies": {
49
+ "react": "^18.0.0 || ^19.0.0",
50
+ "react-dom": "^18.0.0 || ^19.0.0"
51
+ },
52
+ "dependencies": {
53
+ "@emotion/react": "^11.14.0",
54
+ "@fontsource/inter": "^5.2.5",
55
+ "pdfjs-dist": "^5.3.31",
56
+ "react-loading-skeleton": "^3.5.0",
57
+ "react-markdown": "^10.1.0",
58
+ "react-pdf": "^10.0.1",
59
+ "sass": "^1.89.0"
60
+ },
61
+ "devDependencies": {
62
+ "@eslint/js": "^9.25.0",
63
+ "@rollup/plugin-commonjs": "^27.0.0",
64
+ "@rollup/plugin-node-resolve": "^15.3.1",
65
+ "@rollup/plugin-typescript": "^12.1.4",
66
+ "@storybook/addon-onboarding": "^9.0.0",
67
+ "@storybook/react-vite": "^9.0.0",
68
+ "@testing-library/jest-dom": "^6.6.3",
69
+ "@testing-library/react": "^16.3.0",
70
+ "@testing-library/user-event": "^14.6.1",
71
+ "@types/react": "^19.1.2",
72
+ "@types/react-dom": "^19.1.2",
73
+ "@vitejs/plugin-react": "^4.4.1",
74
+ "@vitest/ui": "^3.2.4",
75
+ "eslint": "^9.25.0",
76
+ "eslint-plugin-react-hooks": "^5.2.0",
77
+ "eslint-plugin-react-refresh": "^0.4.19",
78
+ "eslint-plugin-storybook": "^9.0.0",
79
+ "globals": "^16.0.0",
80
+ "jsdom": "^26.1.0",
81
+ "rollup": "^4.46.2",
82
+ "rollup-plugin-dts": "^6.2.1",
83
+ "rollup-plugin-peer-deps-external": "^2.2.4",
84
+ "rollup-plugin-scss": "^4.0.1",
85
+ "sass": "^1.89.2",
86
+ "storybook": "^9.0.0",
87
+ "typescript": "~5.8.3",
88
+ "typescript-eslint": "^8.30.1",
89
+ "vite": "^6.3.5",
90
+ "vitest": "^3.2.4"
91
+ },
92
+ "publishConfig": {
93
+ "access": "public"
94
+ }
95
+ }
@@ -0,0 +1,84 @@
1
+ // Variables de color
2
+ :root {
3
+ // Colores base
4
+ --color-black: #000000;
5
+ --color-white: #FFFFFF;
6
+
7
+ // Colores del tema
8
+ --color-primary: var(--color-black);
9
+ --color-secondary: #343541;
10
+ --color-background: #FFFFFF;
11
+ --color-background-alt: #F7F7F8;
12
+ --color-text: #2D2D2D;
13
+ --color-text-secondary: #6B7280;
14
+ --color-text-inverse: #FFFFFF;
15
+ --color-border: #E5E7EB;
16
+
17
+ // Colores de estado
18
+ --color-success: #10B981;
19
+ --color-error: #EF4444;
20
+ --color-warning: #F59E0B;
21
+ --color-info: #3B82F6;
22
+
23
+ // Colores del chat
24
+ --color-chat-user-bg: #F7F7F8;
25
+ --color-chat-assistant-bg: #FFFFFF;
26
+ --color-chat-border: #E5E7EB;
27
+ --color-chat-input-bg: #FFFFFF;
28
+ --color-chat-input-border: #E5E7EB;
29
+ --color-chat-input-focus: #000000;
30
+
31
+ // Sombras
32
+ --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
33
+ --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);
34
+ --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);
35
+
36
+ // Espaciado
37
+ --spacing-xs: 0.25rem;
38
+ --spacing-sm: 0.5rem;
39
+ --spacing-md: 1rem;
40
+ --spacing-lg: 1.5rem;
41
+ --spacing-xl: 2rem;
42
+
43
+ // Bordes
44
+ --border-radius-sm: 0.25rem;
45
+ --border-radius-md: 0.375rem;
46
+ --border-radius-lg: 0.5rem;
47
+ --border-radius-full: 9999px;
48
+
49
+ // Tipografía
50
+ --font-family-base: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
51
+ --font-size-xs: 0.75rem;
52
+ --font-size-sm: 0.875rem;
53
+ --font-size-base: 1rem;
54
+ --font-size-lg: 1.125rem;
55
+ --font-size-xl: 1.25rem;
56
+ --font-size-2xl: 1.5rem;
57
+
58
+ // Pesos de fuente
59
+ --font-weight-normal: 400;
60
+ --font-weight-medium: 500;
61
+ --font-weight-semibold: 600;
62
+ --font-weight-bold: 700;
63
+
64
+ // Altura de línea
65
+ --line-height-tight: 1.25;
66
+ --line-height-normal: 1.5;
67
+ --line-height-relaxed: 1.75;
68
+ }
69
+
70
+ // Tema oscuro
71
+ [data-theme="dark"] {
72
+ --color-background: #343541;
73
+ --color-background-alt: #444654;
74
+ --color-text: #FFFFFF;
75
+ --color-text-secondary: #9CA3AF;
76
+ --color-border: #4B5563;
77
+
78
+ --color-chat-user-bg: #444654;
79
+ --color-chat-assistant-bg: #343541;
80
+ --color-chat-border: #4B5563;
81
+ --color-chat-input-bg: #40414F;
82
+ --color-chat-input-border: #4B5563;
83
+ --color-chat-input-focus: #FFFFFF;
84
+ }
@@ -0,0 +1,58 @@
1
+ @import './variables';
2
+
3
+ * {
4
+ margin: 0;
5
+ padding: 0;
6
+ box-sizing: border-box;
7
+ }
8
+
9
+ body {
10
+ font-family: var(--font-family-base);
11
+ font-size: var(--font-size-base);
12
+ line-height: var(--line-height-normal);
13
+ color: var(--color-text);
14
+ background-color: var(--color-background);
15
+ -webkit-font-smoothing: antialiased;
16
+ -moz-osx-font-smoothing: grayscale;
17
+ }
18
+
19
+ // Utilidades
20
+ .text-primary {
21
+ color: var(--color-primary);
22
+ }
23
+
24
+ .text-secondary {
25
+ color: var(--color-text-secondary);
26
+ }
27
+
28
+ .bg-primary {
29
+ background-color: var(--color-primary);
30
+ }
31
+
32
+ .bg-secondary {
33
+ background-color: var(--color-background-alt);
34
+ }
35
+
36
+ // Transiciones
37
+ .transition-all {
38
+ transition: all 0.2s ease-in-out;
39
+ }
40
+
41
+ // Scrollbar personalizado
42
+ ::-webkit-scrollbar {
43
+ width: 8px;
44
+ height: 8px;
45
+ }
46
+
47
+ ::-webkit-scrollbar-track {
48
+ background: var(--color-background);
49
+ }
50
+
51
+ ::-webkit-scrollbar-thumb {
52
+ background: var(--color-border);
53
+ border-radius: var(--border-radius-full);
54
+ }
55
+
56
+ ::-webkit-scrollbar-thumb:hover {
57
+ background: var(--color-text-secondary);
58
+ }
@@ -0,0 +1,30 @@
1
+ // Importar variables y estilos globales
2
+ @import './variables';
3
+ @import './global';
4
+
5
+ // Atoms
6
+ @import '../components/atoms/Button/Button.scss';
7
+ @import '../components/atoms/Input/Input.scss';
8
+ @import '../components/atoms/Text/Text.scss';
9
+ @import '../components/atoms/Textarea/Textarea.scss';
10
+ @import '../components/atoms/Link/Link.scss';
11
+ @import '../components/atoms/Avatar/Avatar.scss';
12
+ @import '../components/atoms/AttachmentPreview/AttachmentPreview.scss';
13
+ @import '../components/atoms/SelectMenu/SelectMenu.scss';
14
+ @import '../components/atoms/DateDivider/DateDivider.scss';
15
+ @import '../components/atoms/logo/Logo.scss';
16
+
17
+ // Molecules
18
+ @import '../components/molecules/chat/AssistantMessage/AssistantMessage.scss';
19
+ @import '../components/molecules/chat/AssistantThinkingIndicator/AssistantThinkingIndicator.scss';
20
+ @import '../components/molecules/chat/ChatHeader/ChatHeader.scss';
21
+ @import '../components/molecules/chat/ChatInput/ChatInput.scss';
22
+ @import '../components/molecules/chat/FileViewer/FileViewer.scss';
23
+ @import '../components/molecules/chat/FullscreenViewer/FullscreenViewer.scss';
24
+ @import '../components/molecules/chat/MessageStatus/MessageStatus.scss';
25
+ @import '../components/molecules/chat/Modal/Modal.scss';
26
+ @import '../components/molecules/chat/UserAttachments/UserAttachments.scss';
27
+ @import '../components/molecules/chat/UserMessage/UserMessage.scss';
28
+
29
+ // Organisms
30
+ @import '../components/organisms/chat/Chat.scss';