diff --git a/design/baseline/# UI для онлайн звонка/_ds/edevs-hub-design-system-e4c9df12-82c8-42b3-b819-63d92dfb8702/_adherence.oxlintrc.json b/design/baseline/# UI для онлайн звонка/_ds/design-system/_adherence.oxlintrc.json similarity index 100% rename from design/baseline/# UI для онлайн звонка/_ds/edevs-hub-design-system-e4c9df12-82c8-42b3-b819-63d92dfb8702/_adherence.oxlintrc.json rename to design/baseline/# UI для онлайн звонка/_ds/design-system/_adherence.oxlintrc.json diff --git a/design/baseline/# UI для онлайн звонка/_ds/edevs-hub-design-system-e4c9df12-82c8-42b3-b819-63d92dfb8702/_ds_bundle.js b/design/baseline/# UI для онлайн звонка/_ds/design-system/_ds_bundle.js similarity index 96% rename from design/baseline/# UI для онлайн звонка/_ds/edevs-hub-design-system-e4c9df12-82c8-42b3-b819-63d92dfb8702/_ds_bundle.js rename to design/baseline/# UI для онлайн звонка/_ds/design-system/_ds_bundle.js index c815d2b..bfa5042 100644 --- a/design/baseline/# UI для онлайн звонка/_ds/edevs-hub-design-system-e4c9df12-82c8-42b3-b819-63d92dfb8702/_ds_bundle.js +++ b/design/baseline/# UI для онлайн звонка/_ds/design-system/_ds_bundle.js @@ -1,8 +1,8 @@ -/* @ds-bundle: {"format":4,"namespace":"EdevsHubDesignSystem_e4c9df","components":[{"name":"CommerceStatusTimeline","sourcePath":"components/cards/CommerceStatusTimeline.jsx"},{"name":"DepartmentCard","sourcePath":"components/cards/DepartmentCard.jsx"},{"name":"IntegrationHealthCard","sourcePath":"components/cards/IntegrationHealthCard.jsx"},{"name":"MetricCard","sourcePath":"components/cards/MetricCard.jsx"},{"name":"ProductAIReleaseCard","sourcePath":"components/cards/ProductAIReleaseCard.jsx"},{"name":"Avatar","sourcePath":"components/core/Avatar.jsx"},{"name":"Button","sourcePath":"components/core/Button.jsx"},{"name":"Checkbox","sourcePath":"components/core/Checkbox.jsx"},{"name":"Icon","sourcePath":"components/core/Icon.jsx"},{"name":"ICON_NAMES","sourcePath":"components/core/Icon.jsx"},{"name":"IconButton","sourcePath":"components/core/IconButton.jsx"},{"name":"Input","sourcePath":"components/core/Input.jsx"},{"name":"Tag","sourcePath":"components/core/Tag.jsx"},{"name":"ConversationInbox","sourcePath":"components/inbox/ConversationInbox.jsx"},{"name":"KnowledgeDocumentEditor","sourcePath":"components/inbox/KnowledgeDocumentEditor.jsx"},{"name":"ActorBadge","sourcePath":"components/status/ActorBadge.jsx"},{"name":"AttentionStatus","sourcePath":"components/status/AttentionStatus.jsx"},{"name":"ChannelBadge","sourcePath":"components/status/ChannelBadge.jsx"}],"sourceHashes":{"components/cards/CommerceStatusTimeline.jsx":"a71f119a6bcb","components/cards/DepartmentCard.jsx":"743b4f9632ec","components/cards/IntegrationHealthCard.jsx":"4888c60e9532","components/cards/MetricCard.jsx":"4edb7590ee04","components/cards/ProductAIReleaseCard.jsx":"53de80d598b8","components/core/Avatar.jsx":"e963633b7162","components/core/Button.jsx":"52b57248ad92","components/core/Checkbox.jsx":"412f119cdbb2","components/core/Icon.jsx":"f6c5a199fcf5","components/core/IconButton.jsx":"e8c066b43714","components/core/Input.jsx":"4561efdc9997","components/core/Tag.jsx":"48a8a3543145","components/inbox/ConversationInbox.jsx":"ea2ad8f6a755","components/inbox/KnowledgeDocumentEditor.jsx":"f97e9057fb25","components/status/ActorBadge.jsx":"11e6274f6875","components/status/AttentionStatus.jsx":"a22cbb5b37d2","components/status/ChannelBadge.jsx":"e15a0c45d45f","ui_kits/checkout/CheckoutWidget.jsx":"6d563825a7e0","ui_kits/internal-hub/AuthLoginPage.jsx":"b3ee3d8ea9ab","ui_kits/internal-hub/ClientsPage.jsx":"0a9fb9f5b11d","ui_kits/internal-hub/CommandCenterPage.jsx":"870dd4cd0c22","ui_kits/internal-hub/HubShell.jsx":"ce0eb4d2dc70","ui_kits/web-chat/WebChatWidget.jsx":"e4099f49f9c0"},"inlinedExternals":[],"unexposedExports":[]} */ +/* @ds-bundle: {"format":4,"namespace":"ChatballsDesignSystem_e4c9df","components":[{"name":"CommerceStatusTimeline","sourcePath":"components/cards/CommerceStatusTimeline.jsx"},{"name":"DepartmentCard","sourcePath":"components/cards/DepartmentCard.jsx"},{"name":"IntegrationHealthCard","sourcePath":"components/cards/IntegrationHealthCard.jsx"},{"name":"MetricCard","sourcePath":"components/cards/MetricCard.jsx"},{"name":"ProductAIReleaseCard","sourcePath":"components/cards/ProductAIReleaseCard.jsx"},{"name":"Avatar","sourcePath":"components/core/Avatar.jsx"},{"name":"Button","sourcePath":"components/core/Button.jsx"},{"name":"Checkbox","sourcePath":"components/core/Checkbox.jsx"},{"name":"Icon","sourcePath":"components/core/Icon.jsx"},{"name":"ICON_NAMES","sourcePath":"components/core/Icon.jsx"},{"name":"IconButton","sourcePath":"components/core/IconButton.jsx"},{"name":"Input","sourcePath":"components/core/Input.jsx"},{"name":"Tag","sourcePath":"components/core/Tag.jsx"},{"name":"ConversationInbox","sourcePath":"components/inbox/ConversationInbox.jsx"},{"name":"KnowledgeDocumentEditor","sourcePath":"components/inbox/KnowledgeDocumentEditor.jsx"},{"name":"ActorBadge","sourcePath":"components/status/ActorBadge.jsx"},{"name":"AttentionStatus","sourcePath":"components/status/AttentionStatus.jsx"},{"name":"ChannelBadge","sourcePath":"components/status/ChannelBadge.jsx"}],"sourceHashes":{"components/cards/CommerceStatusTimeline.jsx":"a71f119a6bcb","components/cards/DepartmentCard.jsx":"743b4f9632ec","components/cards/IntegrationHealthCard.jsx":"4888c60e9532","components/cards/MetricCard.jsx":"4edb7590ee04","components/cards/ProductAIReleaseCard.jsx":"53de80d598b8","components/core/Avatar.jsx":"e963633b7162","components/core/Button.jsx":"52b57248ad92","components/core/Checkbox.jsx":"412f119cdbb2","components/core/Icon.jsx":"f6c5a199fcf5","components/core/IconButton.jsx":"e8c066b43714","components/core/Input.jsx":"4561efdc9997","components/core/Tag.jsx":"48a8a3543145","components/inbox/ConversationInbox.jsx":"ea2ad8f6a755","components/inbox/KnowledgeDocumentEditor.jsx":"f97e9057fb25","components/status/ActorBadge.jsx":"11e6274f6875","components/status/AttentionStatus.jsx":"a22cbb5b37d2","components/status/ChannelBadge.jsx":"e15a0c45d45f","ui_kits/checkout/CheckoutWidget.jsx":"6d563825a7e0","ui_kits/internal-hub/AuthLoginPage.jsx":"b3ee3d8ea9ab","ui_kits/internal-hub/ClientsPage.jsx":"0a9fb9f5b11d","ui_kits/internal-hub/CommandCenterPage.jsx":"870dd4cd0c22","ui_kits/internal-hub/HubShell.jsx":"ce0eb4d2dc70","ui_kits/web-chat/WebChatWidget.jsx":"e4099f49f9c0"},"inlinedExternals":[],"unexposedExports":[]} */ (() => { -const __ds_ns = (window.EdevsHubDesignSystem_e4c9df = window.EdevsHubDesignSystem_e4c9df || {}); +const __ds_ns = (window.ChatballsDesignSystem_e4c9df = window.ChatballsDesignSystem_e4c9df || {}); const __ds_scope = {}; @@ -1094,10 +1094,10 @@ const { CommerceStatusTimeline, Icon, Checkbox -} = window.EdevsHubDesignSystem_e4c9df; +} = window.ChatballsDesignSystem_e4c9df; /* Recreation of design/baseline/CheckoutPanel.dc.html — the public - pay.hub.edevs.tech checkout flow (SPEC-HUB-0007). Mobile-first, no Hub chrome. */ + pay.chatballs checkout flow (SPEC-HUB-0007). Mobile-first, no Hub chrome. */ function CheckoutWidget() { const [st, setSt] = React.useState("checkout"); const [buyer, setBuyer] = React.useState("person"); @@ -1823,7 +1823,7 @@ const { Input, Button, Icon -} = window.EdevsHubDesignSystem_e4c9df; +} = window.ChatballsDesignSystem_e4c9df; /* Recreation of design/baseline/AUTH · Вход.dc.html */ function AuthLoginPage({ @@ -1872,7 +1872,7 @@ function AuthLoginPage({ fontWeight: 700, letterSpacing: "-0.01em" } - }, "Edevs Hub"), /*#__PURE__*/React.createElement("p", { + }, "Chatballs"), /*#__PURE__*/React.createElement("p", { style: { margin: "5px 0 0", fontSize: 13, @@ -1919,7 +1919,7 @@ function AuthLoginPage({ }), value: email, onChange: e => setEmail(e.target.value), - placeholder: "you@edevs.tech" + placeholder: "you@chatballs" })), /*#__PURE__*/React.createElement("div", { style: { marginBottom: 22 @@ -1962,7 +1962,7 @@ function AuthLoginPage({ fontSize: 12, color: "var(--n-5)" } - }, "\u0414\u043E\u0441\u0442\u0443\u043F \u0442\u043E\u043B\u044C\u043A\u043E \u0434\u043B\u044F \u0441\u043E\u0442\u0440\u0443\u0434\u043D\u0438\u043A\u043E\u0432 Edevs \xB7 \u0437\u0430\u0449\u0438\u0449\u0451\u043D\u043D\u043E\u0435 \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435"))); + }, "\u0414\u043E\u0441\u0442\u0443\u043F \u0442\u043E\u043B\u044C\u043A\u043E \u0434\u043B\u044F \u0441\u043E\u0442\u0440\u0443\u0434\u043D\u0438\u043A\u043E\u0432 Chatballs \xB7 \u0437\u0430\u0449\u0438\u0449\u0451\u043D\u043D\u043E\u0435 \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435"))); } })(); } catch (e) { __ds_ns.__errors.push({ path: "ui_kits/internal-hub/AuthLoginPage.jsx", error: String((e && e.message) || e) }); } @@ -1972,7 +1972,7 @@ const { Avatar, Tag, Icon -} = window.EdevsHubDesignSystem_e4c9df; +} = window.ChatballsDesignSystem_e4c9df; const DATA = [{ name: "Мария Соколова", initials: "МС", @@ -2265,7 +2265,7 @@ const { MetricCard, IntegrationHealthCard, AttentionStatus -} = window.EdevsHubDesignSystem_e4c9df; +} = window.ChatballsDesignSystem_e4c9df; /* Recreation of design/baseline/Командный центр.dc.html */ function CommandCenterPage({ @@ -2508,7 +2508,7 @@ try { (() => { const { Icon, Avatar -} = window.EdevsHubDesignSystem_e4c9df; +} = window.ChatballsDesignSystem_e4c9df; const NAV = [{ key: "command", label: "Командный центр", @@ -2597,7 +2597,7 @@ function HubShell({ color: "var(--text-heading)", letterSpacing: "-0.01em" } - }, "Edevs Hub"), /*#__PURE__*/React.createElement("span", { + }, "Chatballs"), /*#__PURE__*/React.createElement("span", { style: { fontSize: 11, color: "var(--text-tertiary)" @@ -2715,7 +2715,7 @@ function HubShell({ fontWeight: 500, color: "var(--text-secondary)" } - }, "Edevs"), /*#__PURE__*/React.createElement("span", { + }, "Chatballs"), /*#__PURE__*/React.createElement("span", { style: { color: "var(--n-6)" } @@ -2787,7 +2787,7 @@ try { (() => { const { ActorBadge, Icon -} = window.EdevsHubDesignSystem_e4c9df; +} = window.ChatballsDesignSystem_e4c9df; /* Recreation of design/baseline/ChatPanel.dc.html — Foxray's embedded web-chat widget. States: welcome (consent) / ai / operator handoff / checkout card / unavailable. */ diff --git a/design/baseline/# UI для онлайн звонка/_ds/design-system/_ds_manifest.json b/design/baseline/# UI для онлайн звонка/_ds/design-system/_ds_manifest.json new file mode 100644 index 0000000..5aee145 --- /dev/null +++ b/design/baseline/# UI для онлайн звонка/_ds/design-system/_ds_manifest.json @@ -0,0 +1 @@ +{"namespace":"ChatballsDesignSystem_e4c9df","components":[{"name":"CommerceStatusTimeline","sourcePath":"components/cards/CommerceStatusTimeline.jsx"},{"name":"DepartmentCard","sourcePath":"components/cards/DepartmentCard.jsx"},{"name":"IntegrationHealthCard","sourcePath":"components/cards/IntegrationHealthCard.jsx"},{"name":"MetricCard","sourcePath":"components/cards/MetricCard.jsx"},{"name":"ProductAIReleaseCard","sourcePath":"components/cards/ProductAIReleaseCard.jsx"},{"name":"Avatar","sourcePath":"components/core/Avatar.jsx"},{"name":"Button","sourcePath":"components/core/Button.jsx"},{"name":"Checkbox","sourcePath":"components/core/Checkbox.jsx"},{"name":"Icon","sourcePath":"components/core/Icon.jsx"},{"name":"ICON_NAMES","sourcePath":"components/core/Icon.jsx"},{"name":"IconButton","sourcePath":"components/core/IconButton.jsx"},{"name":"Input","sourcePath":"components/core/Input.jsx"},{"name":"Tag","sourcePath":"components/core/Tag.jsx"},{"name":"ConversationInbox","sourcePath":"components/inbox/ConversationInbox.jsx"},{"name":"KnowledgeDocumentEditor","sourcePath":"components/inbox/KnowledgeDocumentEditor.jsx"},{"name":"ActorBadge","sourcePath":"components/status/ActorBadge.jsx"},{"name":"AttentionStatus","sourcePath":"components/status/AttentionStatus.jsx"},{"name":"ChannelBadge","sourcePath":"components/status/ChannelBadge.jsx"}],"startingPoints":[{"name":"CommerceStatusTimeline","path":"components/cards/CommerceStatusTimeline.jsx","previewPath":"components/cards/cards.card.html","kind":"component","section":"Cards","subtitle":"Payment vs delivery step timeline for checkout/orders","viewport":"700x160"},{"name":"DepartmentCard","path":"components/cards/DepartmentCard.jsx","previewPath":"components/cards/cards.card.html","kind":"component","section":"Cards","subtitle":"Command Center department summary card","viewport":"900x360"},{"name":"IntegrationHealthCard","path":"components/cards/IntegrationHealthCard.jsx","previewPath":"components/cards/cards.card.html","kind":"component","section":"Cards","subtitle":"Single integration row (connected/degraded/error)","viewport":"700x90"},{"name":"MetricCard","path":"components/cards/MetricCard.jsx","previewPath":"components/cards/cards.card.html","kind":"component","section":"Cards","subtitle":"Single KPI cell for metric grids","viewport":"700x120"},{"name":"ProductAIReleaseCard","path":"components/cards/ProductAIReleaseCard.jsx","previewPath":"components/cards/cards.card.html","kind":"component","section":"Cards","subtitle":"AI knowledge/prompt release snapshot for one product","viewport":"700x180"},{"name":"Button","path":"components/core/Button.jsx","previewPath":"components/core/core.card.html","kind":"component","section":"Core","subtitle":"Primary/secondary/ghost/danger button","viewport":"700x220"},{"name":"IconButton","path":"components/core/IconButton.jsx","previewPath":"components/core/core.card.html","kind":"component","section":"Core","subtitle":"Square icon-only button with optional badge","viewport":"700x150"},{"name":"Input","path":"components/core/Input.jsx","previewPath":"components/core/core.card.html","kind":"component","section":"Core","subtitle":"Text field with label, icon and error state","viewport":"700x260"},{"name":"Tag","path":"components/core/Tag.jsx","previewPath":"components/core/core.card.html","kind":"component","section":"Core","subtitle":"Status pill and rectangular label tag","viewport":"700x150"},{"name":"KnowledgeDocumentEditor","path":"components/inbox/KnowledgeDocumentEditor.jsx","previewPath":"components/inbox/inbox.card.html","kind":"component","section":"Inbox","subtitle":"Plain-text knowledge base document editor","viewport":"700x380"},{"name":"ActorBadge","path":"components/status/ActorBadge.jsx","previewPath":"components/status/status.card.html","kind":"component","section":"Status","subtitle":"AI vs human avatar for conversation timelines","viewport":"700x110"},{"name":"AttentionStatus","path":"components/status/AttentionStatus.jsx","previewPath":"components/status/status.card.html","kind":"component","section":"Status","subtitle":"Company/department health chip (ok/attention/critical)","viewport":"700x120"},{"name":"ChannelBadge","path":"components/status/ChannelBadge.jsx","previewPath":"components/status/status.card.html","kind":"component","section":"Status","subtitle":"MAX / Telegram / Web Chat channel chip","viewport":"700x100"}],"cards":[{"path":"guidelines/logo-mark.card.html","group":"Brand","viewport":"700x160","subtitle":"Only mark found in the codebase — a blue rounded square with a bar-chart glyph","name":"Logo Mark"},{"path":"guidelines/radii-shadows.card.html","group":"Brand","viewport":"700x180","subtitle":"Soft, low-opacity shadows only — no glassmorphism","name":"Radii & Shadows"},{"path":"ui_kits/checkout/index.html","group":"Checkout","viewport":"440x760"},{"path":"guidelines/colors-ai-channels.card.html","group":"Colors","viewport":"700x160","subtitle":"AI/human split, MAX/Telegram/Web Chat, FirePage/Foxray","name":"AI, Channels & Products"},{"path":"guidelines/colors-neutrals.card.html","group":"Colors","viewport":"700x200","subtitle":"Text/border/surface neutral scale","name":"Neutrals"},{"path":"guidelines/colors-primary.card.html","group":"Colors","viewport":"700x160","subtitle":"Single accent — blue-6/blue-7, per ADR-HUB-0013","name":"Primary"},{"path":"guidelines/colors-semantic.card.html","group":"Colors","viewport":"700x160","subtitle":"success / warning / error / info","name":"Semantic"},{"path":"components/cards/cards.card.html","group":"Components","viewport":"900x520","subtitle":"MetricCard, DepartmentCard, IntegrationHealthCard, ProductAIReleaseCard, CommerceStatusTimeline","name":"Composite Cards"},{"path":"components/core/core.card.html","group":"Components","viewport":"700x560","subtitle":"Button, IconButton, Input, Checkbox, Tag, Avatar, Icon","name":"Core Primitives"},{"path":"components/inbox/inbox.card.html","group":"Components","viewport":"700x480","subtitle":"ConversationInbox, KnowledgeDocumentEditor","name":"Inbox & Knowledge"},{"path":"components/status/status.card.html","group":"Components","viewport":"700x420","subtitle":"AttentionStatus, ActorBadge, ChannelBadge","name":"Status & Badges"},{"path":"ui_kits/internal-hub/index.html","group":"Internal Hub","viewport":"1440x900"},{"path":"guidelines/spacing-metric-grid.card.html","group":"Spacing","viewport":"700x220","subtitle":"1px hairline-divided grid pattern","name":"Metric Grid In Use"},{"path":"guidelines/spacing-scale.card.html","group":"Spacing","viewport":"700x180","subtitle":"Compact-enterprise density — exact px, not a 4/8 grid","name":"Spacing Scale"},{"path":"guidelines/type-mono.card.html","group":"Type","viewport":"700x140","subtitle":"Order, release, event IDs and masked data","name":"Monospace / Technical IDs"},{"path":"guidelines/type-scale.card.html","group":"Type","viewport":"700x300","subtitle":"System font stack — no bespoke webfont","name":"Display & Body Scale"},{"path":"ui_kits/web-chat/index.html","group":"Web Chat","viewport":"420x680"}],"templates":[],"hasThumbnailHtml":false,"globalCssPaths":["tokens/colors.css","tokens/typography.css","tokens/spacing.css","tokens/effects.css","styles.css"],"tokens":[{"name":"--n-1","value":"#1f1f1f","kind":"color","definedIn":"tokens/colors.css"},{"name":"--n-2","value":"#262626","kind":"color","definedIn":"tokens/colors.css"},{"name":"--n-3","value":"#595959","kind":"color","definedIn":"tokens/colors.css"},{"name":"--n-4","value":"#8c8c8c","kind":"color","definedIn":"tokens/colors.css"},{"name":"--n-5","value":"#bfbfbf","kind":"color","definedIn":"tokens/colors.css"},{"name":"--n-6","value":"#d9d9d9","kind":"color","definedIn":"tokens/colors.css"},{"name":"--n-7","value":"#e8e8e8","kind":"color","definedIn":"tokens/colors.css"},{"name":"--n-8","value":"#f0f0f0","kind":"color","definedIn":"tokens/colors.css"},{"name":"--n-9","value":"#f5f5f5","kind":"color","definedIn":"tokens/colors.css"},{"name":"--n-10","value":"#fafafa","kind":"color","definedIn":"tokens/colors.css"},{"name":"--n-11","value":"#f0f2f5","kind":"color","definedIn":"tokens/colors.css"},{"name":"--n-white","value":"#ffffff","kind":"color","definedIn":"tokens/colors.css"},{"name":"--primary","value":"#1677ff","kind":"color","definedIn":"tokens/colors.css"},{"name":"--primary-hover","value":"#0958d9","kind":"color","definedIn":"tokens/colors.css"},{"name":"--primary-bg","value":"#e6f4ff","kind":"color","definedIn":"tokens/colors.css"},{"name":"--primary-border","value":"#91caff","kind":"color","definedIn":"tokens/colors.css"},{"name":"--primary-shadow","value":"rgba(22, 119, 255, 0.3)","kind":"shadow","definedIn":"tokens/colors.css"},{"name":"--success","value":"#52c41a","kind":"color","definedIn":"tokens/colors.css"},{"name":"--success-text","value":"#389e0d","kind":"font","definedIn":"tokens/colors.css"},{"name":"--success-bg","value":"#f6ffed","kind":"color","definedIn":"tokens/colors.css"},{"name":"--success-bg-strong","value":"#f1f9ec","kind":"color","definedIn":"tokens/colors.css"},{"name":"--success-border","value":"#b7eb8f","kind":"color","definedIn":"tokens/colors.css"},{"name":"--warning","value":"#faad14","kind":"color","definedIn":"tokens/colors.css"},{"name":"--warning-text","value":"#d48806","kind":"font","definedIn":"tokens/colors.css"},{"name":"--warning-bg","value":"#fffbe6","kind":"color","definedIn":"tokens/colors.css"},{"name":"--warning-bg-strong","value":"#fff7e6","kind":"color","definedIn":"tokens/colors.css"},{"name":"--warning-border","value":"#ffe58f","kind":"color","definedIn":"tokens/colors.css"},{"name":"--error","value":"#ff4d4f","kind":"color","definedIn":"tokens/colors.css"},{"name":"--error-text","value":"#cf1322","kind":"font","definedIn":"tokens/colors.css"},{"name":"--error-bg","value":"#fff2f0","kind":"color","definedIn":"tokens/colors.css"},{"name":"--error-border","value":"#ffccc7","kind":"color","definedIn":"tokens/colors.css"},{"name":"--info","value":"#1677ff","kind":"color","definedIn":"tokens/colors.css"},{"name":"--ai","value":"#722ed1","kind":"color","definedIn":"tokens/colors.css"},{"name":"--ai-light","value":"#9254de","kind":"color","definedIn":"tokens/colors.css"},{"name":"--ai-lighter","value":"#b37feb","kind":"color","definedIn":"tokens/colors.css"},{"name":"--ai-bg","value":"#f9f0ff","kind":"color","definedIn":"tokens/colors.css"},{"name":"--human","value":"#1677ff","kind":"color","definedIn":"tokens/colors.css"},{"name":"--channel-max","value":"#6b5be0","kind":"color","definedIn":"tokens/colors.css"},{"name":"--channel-max-bg","value":"#f2f0ff","kind":"color","definedIn":"tokens/colors.css"},{"name":"--channel-telegram","value":"#2f8fd0","kind":"color","definedIn":"tokens/colors.css"},{"name":"--channel-telegram-bg","value":"#eaf6fd","kind":"color","definedIn":"tokens/colors.css"},{"name":"--channel-webchat","value":"#0f9b8e","kind":"color","definedIn":"tokens/colors.css"},{"name":"--channel-webchat-bg","value":"#e8f7f4","kind":"color","definedIn":"tokens/colors.css"},{"name":"--product-firepage","value":"#0958d9","kind":"color","definedIn":"tokens/colors.css"},{"name":"--product-firepage-bg","value":"#e6f4ff","kind":"color","definedIn":"tokens/colors.css"},{"name":"--product-foxray","value":"#722ed1","kind":"color","definedIn":"tokens/colors.css"},{"name":"--product-foxray-bg","value":"#f9f0ff","kind":"color","definedIn":"tokens/colors.css"},{"name":"--surface-page","value":"var(--n-11)","kind":"color","definedIn":"tokens/colors.css"},{"name":"--surface-card","value":"var(--n-white)","kind":"color","definedIn":"tokens/colors.css"},{"name":"--surface-sunken","value":"#fafafa","kind":"color","definedIn":"tokens/colors.css"},{"name":"--surface-chip","value":"#f7f8fa","kind":"color","definedIn":"tokens/colors.css"},{"name":"--text-heading","value":"var(--n-1)","kind":"font","definedIn":"tokens/colors.css"},{"name":"--text-body","value":"var(--n-2)","kind":"font","definedIn":"tokens/colors.css"},{"name":"--text-secondary","value":"var(--n-3)","kind":"font","definedIn":"tokens/colors.css"},{"name":"--text-tertiary","value":"var(--n-4)","kind":"font","definedIn":"tokens/colors.css"},{"name":"--text-disabled","value":"var(--n-5)","kind":"font","definedIn":"tokens/colors.css"},{"name":"--text-inverse","value":"var(--n-white)","kind":"font","definedIn":"tokens/colors.css"},{"name":"--text-link","value":"var(--primary)","kind":"font","definedIn":"tokens/colors.css"},{"name":"--border-default","value":"var(--n-8)","kind":"color","definedIn":"tokens/colors.css"},{"name":"--border-input","value":"var(--n-7)","kind":"color","definedIn":"tokens/colors.css"},{"name":"--border-strong","value":"var(--n-6)","kind":"color","definedIn":"tokens/colors.css"},{"name":"--font-sans","value":"-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif","kind":"font","definedIn":"tokens/typography.css"},{"name":"--font-mono","value":"\"SF Mono\", ui-monospace, Menlo, Consolas, monospace","kind":"font","definedIn":"tokens/typography.css"},{"name":"--text-2xl","value":"26px","kind":"font","definedIn":"tokens/typography.css"},{"name":"--text-xl","value":"24px","kind":"font","definedIn":"tokens/typography.css"},{"name":"--text-lg","value":"20px","kind":"font","definedIn":"tokens/typography.css"},{"name":"--text-md","value":"18px","kind":"font","definedIn":"tokens/typography.css"},{"name":"--text-base-lg","value":"16px","kind":"font","definedIn":"tokens/typography.css"},{"name":"--text-base","value":"14.5px","kind":"font","definedIn":"tokens/typography.css"},{"name":"--text-sm-lg","value":"13.5px","kind":"font","definedIn":"tokens/typography.css"},{"name":"--text-sm","value":"13px","kind":"font","definedIn":"tokens/typography.css"},{"name":"--text-sm-tight","value":"12.5px","kind":"font","definedIn":"tokens/typography.css"},{"name":"--text-xs","value":"12px","kind":"font","definedIn":"tokens/typography.css"},{"name":"--text-xs-tight","value":"11.5px","kind":"font","definedIn":"tokens/typography.css"},{"name":"--text-2xs","value":"11px","kind":"font","definedIn":"tokens/typography.css"},{"name":"--text-2xs-tight","value":"10.5px","kind":"font","definedIn":"tokens/typography.css"},{"name":"--weight-regular","value":"400","kind":"font","definedIn":"tokens/typography.css"},{"name":"--weight-medium","value":"500","kind":"font","definedIn":"tokens/typography.css"},{"name":"--weight-semibold","value":"600","kind":"font","definedIn":"tokens/typography.css"},{"name":"--weight-bold","value":"700","kind":"font","definedIn":"tokens/typography.css"},{"name":"--weight-black","value":"800","kind":"font","definedIn":"tokens/typography.css"},{"name":"--tracking-tight","value":"-0.02em","kind":"font","definedIn":"tokens/typography.css"},{"name":"--tracking-tight-sm","value":"-0.01em","kind":"font","definedIn":"tokens/typography.css"},{"name":"--tracking-wide","value":"0.03em","kind":"font","definedIn":"tokens/typography.css"},{"name":"--tracking-wider","value":"0.06em","kind":"font","definedIn":"tokens/typography.css"},{"name":"--leading-tight","value":"1.15","kind":"font","definedIn":"tokens/typography.css"},{"name":"--leading-snug","value":"1.2","kind":"font","definedIn":"tokens/typography.css"},{"name":"--leading-normal","value":"1.4","kind":"font","definedIn":"tokens/typography.css"},{"name":"--leading-relaxed","value":"1.5","kind":"font","definedIn":"tokens/typography.css"},{"name":"--leading-loose","value":"1.55","kind":"font","definedIn":"tokens/typography.css"},{"name":"--space-1","value":"2px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--space-2","value":"4px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--space-3","value":"6px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--space-4","value":"8px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--space-5","value":"9px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--space-6","value":"10px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--space-7","value":"11px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--space-8","value":"12px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--space-9","value":"14px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--space-10","value":"16px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--space-11","value":"18px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--space-12","value":"20px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--space-13","value":"22px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--space-14","value":"24px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--space-15","value":"28px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--space-16","value":"32px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--space-17","value":"36px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--h-control-sm","value":"30px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--h-control-md","value":"34px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--h-control","value":"36px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--h-control-lg","value":"42px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--h-control-xl","value":"44px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--h-control-2xl","value":"48px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--h-topbar","value":"56px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--sidebar-width","value":"248px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--content-max","value":"1340px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--radius-xs","value":"5px","kind":"radius","definedIn":"tokens/effects.css"},{"name":"--radius-sm","value":"7px","kind":"radius","definedIn":"tokens/effects.css"},{"name":"--radius-md","value":"8px","kind":"radius","definedIn":"tokens/effects.css"},{"name":"--radius-lg","value":"9px","kind":"radius","definedIn":"tokens/effects.css"},{"name":"--radius-xl","value":"10px","kind":"radius","definedIn":"tokens/effects.css"},{"name":"--radius-2xl","value":"12px","kind":"radius","definedIn":"tokens/effects.css"},{"name":"--radius-3xl","value":"13px","kind":"radius","definedIn":"tokens/effects.css"},{"name":"--radius-4xl","value":"14px","kind":"radius","definedIn":"tokens/effects.css"},{"name":"--radius-pill","value":"999px","kind":"radius","definedIn":"tokens/effects.css"},{"name":"--radius-circle","value":"50%","kind":"radius","definedIn":"tokens/effects.css"},{"name":"--shadow-xs","value":"0 1px 2px rgba(0, 0, 0, 0.03)","kind":"shadow","definedIn":"tokens/effects.css"},{"name":"--shadow-sm","value":"0 1px 3px rgba(0, 0, 0, 0.04)","kind":"shadow","definedIn":"tokens/effects.css"},{"name":"--shadow-md","value":"0 2px 12px rgba(0, 0, 0, 0.05)","kind":"shadow","definedIn":"tokens/effects.css"},{"name":"--shadow-lg","value":"0 6px 20px rgba(0, 0, 0, 0.12)","kind":"shadow","definedIn":"tokens/effects.css"},{"name":"--shadow-sticky","value":"0 -4px 16px rgba(0, 0, 0, 0.04)","kind":"shadow","definedIn":"tokens/effects.css"},{"name":"--shadow-primary","value":"0 1px 2px rgba(22, 119, 255, 0.3)","kind":"shadow","definedIn":"tokens/effects.css"},{"name":"--ease-standard","value":"cubic-bezier(0.4, 0, 0.2, 1)","kind":"other","definedIn":"tokens/effects.css","annotation":"other"},{"name":"--duration-fast","value":"0.15s","kind":"other","definedIn":"tokens/effects.css","annotation":"other"},{"name":"--duration-base","value":"0.2s","kind":"other","definedIn":"tokens/effects.css","annotation":"other"}],"themes":[],"fonts":[],"brandFonts":[],"source":"spa"} \ No newline at end of file diff --git a/design/baseline/# UI для онлайн звонка/_ds/edevs-hub-design-system-e4c9df12-82c8-42b3-b819-63d92dfb8702/styles.css b/design/baseline/# UI для онлайн звонка/_ds/design-system/styles.css similarity index 100% rename from design/baseline/# UI для онлайн звонка/_ds/edevs-hub-design-system-e4c9df12-82c8-42b3-b819-63d92dfb8702/styles.css rename to design/baseline/# UI для онлайн звонка/_ds/design-system/styles.css diff --git a/design/baseline/Каналы обработки/_ds/edevs-hub-design-system-e4c9df12-82c8-42b3-b819-63d92dfb8702/tokens/colors.css b/design/baseline/# UI для онлайн звонка/_ds/design-system/tokens/colors.css similarity index 98% rename from design/baseline/Каналы обработки/_ds/edevs-hub-design-system-e4c9df12-82c8-42b3-b819-63d92dfb8702/tokens/colors.css rename to design/baseline/# UI для онлайн звонка/_ds/design-system/tokens/colors.css index e20679d..9044d34 100644 --- a/design/baseline/Каналы обработки/_ds/edevs-hub-design-system-e4c9df12-82c8-42b3-b819-63d92dfb8702/tokens/colors.css +++ b/design/baseline/# UI для онлайн звонка/_ds/design-system/tokens/colors.css @@ -1,4 +1,4 @@ -/* Edevs Hub — color tokens +/* Chatballs — color tokens Source: packages/ui/src/theme.ts (Ant Design ThemeConfig), apps/internal-ui/src/styles/base.css, and design/baseline/*.dc.html (approved HTML baseline). Ant Design's default light palette, customized with a single accent (#1677ff) per ADR-HUB-0013. */ diff --git a/design/baseline/# UI для онлайн звонка/_ds/edevs-hub-design-system-e4c9df12-82c8-42b3-b819-63d92dfb8702/tokens/effects.css b/design/baseline/# UI для онлайн звонка/_ds/design-system/tokens/effects.css similarity index 94% rename from design/baseline/# UI для онлайн звонка/_ds/edevs-hub-design-system-e4c9df12-82c8-42b3-b819-63d92dfb8702/tokens/effects.css rename to design/baseline/# UI для онлайн звонка/_ds/design-system/tokens/effects.css index 4fa2bb5..cd157ec 100644 --- a/design/baseline/# UI для онлайн звонка/_ds/edevs-hub-design-system-e4c9df12-82c8-42b3-b819-63d92dfb8702/tokens/effects.css +++ b/design/baseline/# UI для онлайн звонка/_ds/design-system/tokens/effects.css @@ -1,4 +1,4 @@ -/* Edevs Hub — radii, shadows, motion. "Премиальный минимализм": no gradients, +/* Chatballs — radii, shadows, motion. "Премиальный минимализм": no gradients, no glassmorphism/blur, no neon — shadows stay soft and near-black at low opacity. */ :root { diff --git a/design/baseline/Каналы обработки/_ds/edevs-hub-design-system-e4c9df12-82c8-42b3-b819-63d92dfb8702/tokens/spacing.css b/design/baseline/# UI для онлайн звонка/_ds/design-system/tokens/spacing.css similarity index 92% rename from design/baseline/Каналы обработки/_ds/edevs-hub-design-system-e4c9df12-82c8-42b3-b819-63d92dfb8702/tokens/spacing.css rename to design/baseline/# UI для онлайн звонка/_ds/design-system/tokens/spacing.css index 5c15ebc..ba5ca9f 100644 --- a/design/baseline/Каналы обработки/_ds/edevs-hub-design-system-e4c9df12-82c8-42b3-b819-63d92dfb8702/tokens/spacing.css +++ b/design/baseline/# UI для онлайн звонка/_ds/design-system/tokens/spacing.css @@ -1,4 +1,4 @@ -/* Edevs Hub — spacing tokens. Compact-enterprise density (ADR-HUB-0013): +/* Chatballs — spacing tokens. Compact-enterprise density (ADR-HUB-0013): "большие пустые поля и oversized-карточки запрещены". Values are the exact paddings/gaps observed in the baseline, not snapped to a rounder grid. */ diff --git a/design/baseline/Каналы обработки/_ds/edevs-hub-design-system-e4c9df12-82c8-42b3-b819-63d92dfb8702/tokens/typography.css b/design/baseline/# UI для онлайн звонка/_ds/design-system/tokens/typography.css similarity index 97% rename from design/baseline/Каналы обработки/_ds/edevs-hub-design-system-e4c9df12-82c8-42b3-b819-63d92dfb8702/tokens/typography.css rename to design/baseline/# UI для онлайн звонка/_ds/design-system/tokens/typography.css index 0d43222..119e53e 100644 --- a/design/baseline/Каналы обработки/_ds/edevs-hub-design-system-e4c9df12-82c8-42b3-b819-63d92dfb8702/tokens/typography.css +++ b/design/baseline/# UI для онлайн звонка/_ds/design-system/tokens/typography.css @@ -1,4 +1,4 @@ -/* Edevs Hub — typography tokens +/* Chatballs — typography tokens The internal Hub uses the Ant Design default system font stack — no bespoke webfont is loaded (see ADR-HUB-0013: "используется системный font stack Ant Design без обязательной внешней зависимости от загружаемого шрифта"). Technical identifiers diff --git a/design/baseline/# UI для онлайн звонка/_ds/edevs-hub-design-system-e4c9df12-82c8-42b3-b819-63d92dfb8702/_ds_manifest.json b/design/baseline/# UI для онлайн звонка/_ds/edevs-hub-design-system-e4c9df12-82c8-42b3-b819-63d92dfb8702/_ds_manifest.json deleted file mode 100644 index 6611105..0000000 --- a/design/baseline/# UI для онлайн звонка/_ds/edevs-hub-design-system-e4c9df12-82c8-42b3-b819-63d92dfb8702/_ds_manifest.json +++ /dev/null @@ -1 +0,0 @@ -{"namespace":"EdevsHubDesignSystem_e4c9df","components":[{"name":"CommerceStatusTimeline","sourcePath":"components/cards/CommerceStatusTimeline.jsx"},{"name":"DepartmentCard","sourcePath":"components/cards/DepartmentCard.jsx"},{"name":"IntegrationHealthCard","sourcePath":"components/cards/IntegrationHealthCard.jsx"},{"name":"MetricCard","sourcePath":"components/cards/MetricCard.jsx"},{"name":"ProductAIReleaseCard","sourcePath":"components/cards/ProductAIReleaseCard.jsx"},{"name":"Avatar","sourcePath":"components/core/Avatar.jsx"},{"name":"Button","sourcePath":"components/core/Button.jsx"},{"name":"Checkbox","sourcePath":"components/core/Checkbox.jsx"},{"name":"Icon","sourcePath":"components/core/Icon.jsx"},{"name":"ICON_NAMES","sourcePath":"components/core/Icon.jsx"},{"name":"IconButton","sourcePath":"components/core/IconButton.jsx"},{"name":"Input","sourcePath":"components/core/Input.jsx"},{"name":"Tag","sourcePath":"components/core/Tag.jsx"},{"name":"ConversationInbox","sourcePath":"components/inbox/ConversationInbox.jsx"},{"name":"KnowledgeDocumentEditor","sourcePath":"components/inbox/KnowledgeDocumentEditor.jsx"},{"name":"ActorBadge","sourcePath":"components/status/ActorBadge.jsx"},{"name":"AttentionStatus","sourcePath":"components/status/AttentionStatus.jsx"},{"name":"ChannelBadge","sourcePath":"components/status/ChannelBadge.jsx"}],"startingPoints":[{"name":"CommerceStatusTimeline","path":"components/cards/CommerceStatusTimeline.jsx","previewPath":"components/cards/cards.card.html","kind":"component","section":"Cards","subtitle":"Payment vs delivery step timeline for checkout/orders","viewport":"700x160"},{"name":"DepartmentCard","path":"components/cards/DepartmentCard.jsx","previewPath":"components/cards/cards.card.html","kind":"component","section":"Cards","subtitle":"Command Center department summary card","viewport":"900x360"},{"name":"IntegrationHealthCard","path":"components/cards/IntegrationHealthCard.jsx","previewPath":"components/cards/cards.card.html","kind":"component","section":"Cards","subtitle":"Single integration row (connected/degraded/error)","viewport":"700x90"},{"name":"MetricCard","path":"components/cards/MetricCard.jsx","previewPath":"components/cards/cards.card.html","kind":"component","section":"Cards","subtitle":"Single KPI cell for metric grids","viewport":"700x120"},{"name":"ProductAIReleaseCard","path":"components/cards/ProductAIReleaseCard.jsx","previewPath":"components/cards/cards.card.html","kind":"component","section":"Cards","subtitle":"AI knowledge/prompt release snapshot for one product","viewport":"700x180"},{"name":"Button","path":"components/core/Button.jsx","previewPath":"components/core/core.card.html","kind":"component","section":"Core","subtitle":"Primary/secondary/ghost/danger button","viewport":"700x220"},{"name":"IconButton","path":"components/core/IconButton.jsx","previewPath":"components/core/core.card.html","kind":"component","section":"Core","subtitle":"Square icon-only button with optional badge","viewport":"700x150"},{"name":"Input","path":"components/core/Input.jsx","previewPath":"components/core/core.card.html","kind":"component","section":"Core","subtitle":"Text field with label, icon and error state","viewport":"700x260"},{"name":"Tag","path":"components/core/Tag.jsx","previewPath":"components/core/core.card.html","kind":"component","section":"Core","subtitle":"Status pill and rectangular label tag","viewport":"700x150"},{"name":"KnowledgeDocumentEditor","path":"components/inbox/KnowledgeDocumentEditor.jsx","previewPath":"components/inbox/inbox.card.html","kind":"component","section":"Inbox","subtitle":"Plain-text knowledge base document editor","viewport":"700x380"},{"name":"ActorBadge","path":"components/status/ActorBadge.jsx","previewPath":"components/status/status.card.html","kind":"component","section":"Status","subtitle":"AI vs human avatar for conversation timelines","viewport":"700x110"},{"name":"AttentionStatus","path":"components/status/AttentionStatus.jsx","previewPath":"components/status/status.card.html","kind":"component","section":"Status","subtitle":"Company/department health chip (ok/attention/critical)","viewport":"700x120"},{"name":"ChannelBadge","path":"components/status/ChannelBadge.jsx","previewPath":"components/status/status.card.html","kind":"component","section":"Status","subtitle":"MAX / Telegram / Web Chat channel chip","viewport":"700x100"}],"cards":[{"path":"guidelines/logo-mark.card.html","group":"Brand","viewport":"700x160","subtitle":"Only mark found in the codebase — a blue rounded square with a bar-chart glyph","name":"Logo Mark"},{"path":"guidelines/radii-shadows.card.html","group":"Brand","viewport":"700x180","subtitle":"Soft, low-opacity shadows only — no glassmorphism","name":"Radii & Shadows"},{"path":"ui_kits/checkout/index.html","group":"Checkout","viewport":"440x760"},{"path":"guidelines/colors-ai-channels.card.html","group":"Colors","viewport":"700x160","subtitle":"AI/human split, MAX/Telegram/Web Chat, FirePage/Foxray","name":"AI, Channels & Products"},{"path":"guidelines/colors-neutrals.card.html","group":"Colors","viewport":"700x200","subtitle":"Text/border/surface neutral scale","name":"Neutrals"},{"path":"guidelines/colors-primary.card.html","group":"Colors","viewport":"700x160","subtitle":"Single accent — blue-6/blue-7, per ADR-HUB-0013","name":"Primary"},{"path":"guidelines/colors-semantic.card.html","group":"Colors","viewport":"700x160","subtitle":"success / warning / error / info","name":"Semantic"},{"path":"components/cards/cards.card.html","group":"Components","viewport":"900x520","subtitle":"MetricCard, DepartmentCard, IntegrationHealthCard, ProductAIReleaseCard, CommerceStatusTimeline","name":"Composite Cards"},{"path":"components/core/core.card.html","group":"Components","viewport":"700x560","subtitle":"Button, IconButton, Input, Checkbox, Tag, Avatar, Icon","name":"Core Primitives"},{"path":"components/inbox/inbox.card.html","group":"Components","viewport":"700x480","subtitle":"ConversationInbox, KnowledgeDocumentEditor","name":"Inbox & Knowledge"},{"path":"components/status/status.card.html","group":"Components","viewport":"700x420","subtitle":"AttentionStatus, ActorBadge, ChannelBadge","name":"Status & Badges"},{"path":"ui_kits/internal-hub/index.html","group":"Internal Hub","viewport":"1440x900"},{"path":"guidelines/spacing-metric-grid.card.html","group":"Spacing","viewport":"700x220","subtitle":"1px hairline-divided grid pattern","name":"Metric Grid In Use"},{"path":"guidelines/spacing-scale.card.html","group":"Spacing","viewport":"700x180","subtitle":"Compact-enterprise density — exact px, not a 4/8 grid","name":"Spacing Scale"},{"path":"guidelines/type-mono.card.html","group":"Type","viewport":"700x140","subtitle":"Order, release, event IDs and masked data","name":"Monospace / Technical IDs"},{"path":"guidelines/type-scale.card.html","group":"Type","viewport":"700x300","subtitle":"System font stack — no bespoke webfont","name":"Display & Body Scale"},{"path":"ui_kits/web-chat/index.html","group":"Web Chat","viewport":"420x680"}],"templates":[],"hasThumbnailHtml":false,"globalCssPaths":["tokens/colors.css","tokens/typography.css","tokens/spacing.css","tokens/effects.css","styles.css"],"tokens":[{"name":"--n-1","value":"#1f1f1f","kind":"color","definedIn":"tokens/colors.css"},{"name":"--n-2","value":"#262626","kind":"color","definedIn":"tokens/colors.css"},{"name":"--n-3","value":"#595959","kind":"color","definedIn":"tokens/colors.css"},{"name":"--n-4","value":"#8c8c8c","kind":"color","definedIn":"tokens/colors.css"},{"name":"--n-5","value":"#bfbfbf","kind":"color","definedIn":"tokens/colors.css"},{"name":"--n-6","value":"#d9d9d9","kind":"color","definedIn":"tokens/colors.css"},{"name":"--n-7","value":"#e8e8e8","kind":"color","definedIn":"tokens/colors.css"},{"name":"--n-8","value":"#f0f0f0","kind":"color","definedIn":"tokens/colors.css"},{"name":"--n-9","value":"#f5f5f5","kind":"color","definedIn":"tokens/colors.css"},{"name":"--n-10","value":"#fafafa","kind":"color","definedIn":"tokens/colors.css"},{"name":"--n-11","value":"#f0f2f5","kind":"color","definedIn":"tokens/colors.css"},{"name":"--n-white","value":"#ffffff","kind":"color","definedIn":"tokens/colors.css"},{"name":"--primary","value":"#1677ff","kind":"color","definedIn":"tokens/colors.css"},{"name":"--primary-hover","value":"#0958d9","kind":"color","definedIn":"tokens/colors.css"},{"name":"--primary-bg","value":"#e6f4ff","kind":"color","definedIn":"tokens/colors.css"},{"name":"--primary-border","value":"#91caff","kind":"color","definedIn":"tokens/colors.css"},{"name":"--primary-shadow","value":"rgba(22, 119, 255, 0.3)","kind":"shadow","definedIn":"tokens/colors.css"},{"name":"--success","value":"#52c41a","kind":"color","definedIn":"tokens/colors.css"},{"name":"--success-text","value":"#389e0d","kind":"font","definedIn":"tokens/colors.css"},{"name":"--success-bg","value":"#f6ffed","kind":"color","definedIn":"tokens/colors.css"},{"name":"--success-bg-strong","value":"#f1f9ec","kind":"color","definedIn":"tokens/colors.css"},{"name":"--success-border","value":"#b7eb8f","kind":"color","definedIn":"tokens/colors.css"},{"name":"--warning","value":"#faad14","kind":"color","definedIn":"tokens/colors.css"},{"name":"--warning-text","value":"#d48806","kind":"font","definedIn":"tokens/colors.css"},{"name":"--warning-bg","value":"#fffbe6","kind":"color","definedIn":"tokens/colors.css"},{"name":"--warning-bg-strong","value":"#fff7e6","kind":"color","definedIn":"tokens/colors.css"},{"name":"--warning-border","value":"#ffe58f","kind":"color","definedIn":"tokens/colors.css"},{"name":"--error","value":"#ff4d4f","kind":"color","definedIn":"tokens/colors.css"},{"name":"--error-text","value":"#cf1322","kind":"font","definedIn":"tokens/colors.css"},{"name":"--error-bg","value":"#fff2f0","kind":"color","definedIn":"tokens/colors.css"},{"name":"--error-border","value":"#ffccc7","kind":"color","definedIn":"tokens/colors.css"},{"name":"--info","value":"#1677ff","kind":"color","definedIn":"tokens/colors.css"},{"name":"--ai","value":"#722ed1","kind":"color","definedIn":"tokens/colors.css"},{"name":"--ai-light","value":"#9254de","kind":"color","definedIn":"tokens/colors.css"},{"name":"--ai-lighter","value":"#b37feb","kind":"color","definedIn":"tokens/colors.css"},{"name":"--ai-bg","value":"#f9f0ff","kind":"color","definedIn":"tokens/colors.css"},{"name":"--human","value":"#1677ff","kind":"color","definedIn":"tokens/colors.css"},{"name":"--channel-max","value":"#6b5be0","kind":"color","definedIn":"tokens/colors.css"},{"name":"--channel-max-bg","value":"#f2f0ff","kind":"color","definedIn":"tokens/colors.css"},{"name":"--channel-telegram","value":"#2f8fd0","kind":"color","definedIn":"tokens/colors.css"},{"name":"--channel-telegram-bg","value":"#eaf6fd","kind":"color","definedIn":"tokens/colors.css"},{"name":"--channel-webchat","value":"#0f9b8e","kind":"color","definedIn":"tokens/colors.css"},{"name":"--channel-webchat-bg","value":"#e8f7f4","kind":"color","definedIn":"tokens/colors.css"},{"name":"--product-firepage","value":"#0958d9","kind":"color","definedIn":"tokens/colors.css"},{"name":"--product-firepage-bg","value":"#e6f4ff","kind":"color","definedIn":"tokens/colors.css"},{"name":"--product-foxray","value":"#722ed1","kind":"color","definedIn":"tokens/colors.css"},{"name":"--product-foxray-bg","value":"#f9f0ff","kind":"color","definedIn":"tokens/colors.css"},{"name":"--surface-page","value":"var(--n-11)","kind":"color","definedIn":"tokens/colors.css"},{"name":"--surface-card","value":"var(--n-white)","kind":"color","definedIn":"tokens/colors.css"},{"name":"--surface-sunken","value":"#fafafa","kind":"color","definedIn":"tokens/colors.css"},{"name":"--surface-chip","value":"#f7f8fa","kind":"color","definedIn":"tokens/colors.css"},{"name":"--text-heading","value":"var(--n-1)","kind":"font","definedIn":"tokens/colors.css"},{"name":"--text-body","value":"var(--n-2)","kind":"font","definedIn":"tokens/colors.css"},{"name":"--text-secondary","value":"var(--n-3)","kind":"font","definedIn":"tokens/colors.css"},{"name":"--text-tertiary","value":"var(--n-4)","kind":"font","definedIn":"tokens/colors.css"},{"name":"--text-disabled","value":"var(--n-5)","kind":"font","definedIn":"tokens/colors.css"},{"name":"--text-inverse","value":"var(--n-white)","kind":"font","definedIn":"tokens/colors.css"},{"name":"--text-link","value":"var(--primary)","kind":"font","definedIn":"tokens/colors.css"},{"name":"--border-default","value":"var(--n-8)","kind":"color","definedIn":"tokens/colors.css"},{"name":"--border-input","value":"var(--n-7)","kind":"color","definedIn":"tokens/colors.css"},{"name":"--border-strong","value":"var(--n-6)","kind":"color","definedIn":"tokens/colors.css"},{"name":"--font-sans","value":"-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif","kind":"font","definedIn":"tokens/typography.css"},{"name":"--font-mono","value":"\"SF Mono\", ui-monospace, Menlo, Consolas, monospace","kind":"font","definedIn":"tokens/typography.css"},{"name":"--text-2xl","value":"26px","kind":"font","definedIn":"tokens/typography.css"},{"name":"--text-xl","value":"24px","kind":"font","definedIn":"tokens/typography.css"},{"name":"--text-lg","value":"20px","kind":"font","definedIn":"tokens/typography.css"},{"name":"--text-md","value":"18px","kind":"font","definedIn":"tokens/typography.css"},{"name":"--text-base-lg","value":"16px","kind":"font","definedIn":"tokens/typography.css"},{"name":"--text-base","value":"14.5px","kind":"font","definedIn":"tokens/typography.css"},{"name":"--text-sm-lg","value":"13.5px","kind":"font","definedIn":"tokens/typography.css"},{"name":"--text-sm","value":"13px","kind":"font","definedIn":"tokens/typography.css"},{"name":"--text-sm-tight","value":"12.5px","kind":"font","definedIn":"tokens/typography.css"},{"name":"--text-xs","value":"12px","kind":"font","definedIn":"tokens/typography.css"},{"name":"--text-xs-tight","value":"11.5px","kind":"font","definedIn":"tokens/typography.css"},{"name":"--text-2xs","value":"11px","kind":"font","definedIn":"tokens/typography.css"},{"name":"--text-2xs-tight","value":"10.5px","kind":"font","definedIn":"tokens/typography.css"},{"name":"--weight-regular","value":"400","kind":"font","definedIn":"tokens/typography.css"},{"name":"--weight-medium","value":"500","kind":"font","definedIn":"tokens/typography.css"},{"name":"--weight-semibold","value":"600","kind":"font","definedIn":"tokens/typography.css"},{"name":"--weight-bold","value":"700","kind":"font","definedIn":"tokens/typography.css"},{"name":"--weight-black","value":"800","kind":"font","definedIn":"tokens/typography.css"},{"name":"--tracking-tight","value":"-0.02em","kind":"font","definedIn":"tokens/typography.css"},{"name":"--tracking-tight-sm","value":"-0.01em","kind":"font","definedIn":"tokens/typography.css"},{"name":"--tracking-wide","value":"0.03em","kind":"font","definedIn":"tokens/typography.css"},{"name":"--tracking-wider","value":"0.06em","kind":"font","definedIn":"tokens/typography.css"},{"name":"--leading-tight","value":"1.15","kind":"font","definedIn":"tokens/typography.css"},{"name":"--leading-snug","value":"1.2","kind":"font","definedIn":"tokens/typography.css"},{"name":"--leading-normal","value":"1.4","kind":"font","definedIn":"tokens/typography.css"},{"name":"--leading-relaxed","value":"1.5","kind":"font","definedIn":"tokens/typography.css"},{"name":"--leading-loose","value":"1.55","kind":"font","definedIn":"tokens/typography.css"},{"name":"--space-1","value":"2px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--space-2","value":"4px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--space-3","value":"6px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--space-4","value":"8px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--space-5","value":"9px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--space-6","value":"10px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--space-7","value":"11px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--space-8","value":"12px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--space-9","value":"14px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--space-10","value":"16px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--space-11","value":"18px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--space-12","value":"20px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--space-13","value":"22px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--space-14","value":"24px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--space-15","value":"28px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--space-16","value":"32px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--space-17","value":"36px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--h-control-sm","value":"30px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--h-control-md","value":"34px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--h-control","value":"36px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--h-control-lg","value":"42px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--h-control-xl","value":"44px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--h-control-2xl","value":"48px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--h-topbar","value":"56px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--sidebar-width","value":"248px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--content-max","value":"1340px","kind":"spacing","definedIn":"tokens/spacing.css"},{"name":"--radius-xs","value":"5px","kind":"radius","definedIn":"tokens/effects.css"},{"name":"--radius-sm","value":"7px","kind":"radius","definedIn":"tokens/effects.css"},{"name":"--radius-md","value":"8px","kind":"radius","definedIn":"tokens/effects.css"},{"name":"--radius-lg","value":"9px","kind":"radius","definedIn":"tokens/effects.css"},{"name":"--radius-xl","value":"10px","kind":"radius","definedIn":"tokens/effects.css"},{"name":"--radius-2xl","value":"12px","kind":"radius","definedIn":"tokens/effects.css"},{"name":"--radius-3xl","value":"13px","kind":"radius","definedIn":"tokens/effects.css"},{"name":"--radius-4xl","value":"14px","kind":"radius","definedIn":"tokens/effects.css"},{"name":"--radius-pill","value":"999px","kind":"radius","definedIn":"tokens/effects.css"},{"name":"--radius-circle","value":"50%","kind":"radius","definedIn":"tokens/effects.css"},{"name":"--shadow-xs","value":"0 1px 2px rgba(0, 0, 0, 0.03)","kind":"shadow","definedIn":"tokens/effects.css"},{"name":"--shadow-sm","value":"0 1px 3px rgba(0, 0, 0, 0.04)","kind":"shadow","definedIn":"tokens/effects.css"},{"name":"--shadow-md","value":"0 2px 12px rgba(0, 0, 0, 0.05)","kind":"shadow","definedIn":"tokens/effects.css"},{"name":"--shadow-lg","value":"0 6px 20px rgba(0, 0, 0, 0.12)","kind":"shadow","definedIn":"tokens/effects.css"},{"name":"--shadow-sticky","value":"0 -4px 16px rgba(0, 0, 0, 0.04)","kind":"shadow","definedIn":"tokens/effects.css"},{"name":"--shadow-primary","value":"0 1px 2px rgba(22, 119, 255, 0.3)","kind":"shadow","definedIn":"tokens/effects.css"},{"name":"--ease-standard","value":"cubic-bezier(0.4, 0, 0.2, 1)","kind":"other","definedIn":"tokens/effects.css","annotation":"other"},{"name":"--duration-fast","value":"0.15s","kind":"other","definedIn":"tokens/effects.css","annotation":"other"},{"name":"--duration-base","value":"0.2s","kind":"other","definedIn":"tokens/effects.css","annotation":"other"}],"themes":[],"fonts":[],"brandFonts":[],"source":"spa"} \ No newline at end of file diff --git a/design/baseline/# UI для онлайн звонка/_ds/edevs-hub-design-system-e4c9df12-82c8-42b3-b819-63d92dfb8702/readme.md b/design/baseline/# UI для онлайн звонка/_ds/edevs-hub-design-system-e4c9df12-82c8-42b3-b819-63d92dfb8702/readme.md deleted file mode 100644 index 6a6b2a3..0000000 --- a/design/baseline/# UI для онлайн звонка/_ds/edevs-hub-design-system-e4c9df12-82c8-42b3-b819-63d92dfb8702/readme.md +++ /dev/null @@ -1,216 +0,0 @@ -# Edevs Hub — Design System - -Design system for **Edevs**, a Russian product IT company (`edevs.tech`) that builds applied -digital products for narrow professional niches — currently **FoxRay** (cephalometric/TRG -analysis for orthodontists) and **FirePage** (ready-made niche websites on a proprietary CMS, -sold as a one-time license). This design system, however, documents **Edevs Hub** -(`hub.edevs.tech`) — the internal company platform that runs sales, support, AI agents, and -commerce for those products, plus the two small public-facing surfaces it exposes (Web Chat -widget and Checkout). - -## Sources - -Everything here was extracted from the attached codebase, mounted read-only at -`hub.edevs.tech/`: - -- `hub.edevs.tech/design/baseline/*.dc.html` — the team's own **approved HTML visual baseline** - (explicitly the canonical design source per `SPEC-HUB-0007`, section 3: *"Утверждённые - дизайн-файлы размещаются только в едином каноническом каталоге: - `code/hub.edevs.tech/design/baseline/`"*). ~35 screens covering Command Center, Sales - (overview/clients/dialogs/orders), Departments, Employees, Products, AI agents (list/create/ - detail/knowledge), Integrations, Settings, Auth, the Web Chat widget, and the Checkout flow. -- `hub.edevs.tech/design/baseline/uploads/ADR-HUB-0013-Internal-UI-Design-System.md` — the - Internal Hub UI design-system decision record (Ant Design + Ant Design X + "Edevs Hub Theme"). -- `hub.edevs.tech/design/baseline/uploads/SPEC-HUB-0007-Checkout-UI.md` — the public checkout - interface spec (`pay.hub.edevs.tech`). -- `hub.edevs.tech/design/baseline/uploads/SPEC-HUB-0003-Web-Chat.md`, - `SPEC-HUB-0004-Internal-Hub-UI.md`, `SPEC-HUB-0005-Implemented-Internal-UI-Baseline.md`, - `SPEC-HUB-0001-First-Iteration.md`, `ADR-HUB-0017-AI-Agent-Configuration-UX.md` — supporting - specs referenced but not individually quoted below. -- `hub.edevs.tech/packages/ui/src/theme.ts` — the actual Ant Design `ThemeConfig` ("Edevs Hub - Theme") used by the Internal UI: primary color, radii, per-component overrides. - `hub.edevs.tech/apps/internal-ui/src/styles/base.css` — global resets. -- `hub.edevs.tech/apps/internal-ui/public/favicon.svg` — the one brand mark present in the repo. -- `hub.edevs.tech/content/ai-content-company-filled.md` — the AI agent's system/persona prompts - for the main company site, used for the Content Fundamentals section below. -- `hub.edevs.tech/apps/checkout` and `hub.edevs.tech/apps/web-chat` — app shells for the public - surfaces (the checkout app has no implementation yet; the design baseline is ground truth for - both). - -No Figma file or link was provided for this project — the HTML baseline above is the sole -design source, and per the team's own spec it *is* the canonical one. - -## Products in scope - -1. **Internal Hub** (`hub.edevs.tech`, `apps/internal-ui`) — the OWNER/OPERATOR back office: - Command Center, Departments, Employees, Products, Sales workspace (overview, clients, - dialogs, orders), AI agents & knowledge, Integrations, Settings, Auth. Built on Ant Design + - Ant Design X, desktop-first (1024px+, designed for 1440px). -2. **Web Chat** (`apps/web-chat`) — the embeddable public support/sales chat widget for - products like FoxRay, handling AI, human handoff, and inline checkout cards. -3. **Checkout** (`apps/checkout`, `pay.hub.edevs.tech`) — the public, mobile-first purchase flow - that hands off to Bank Tochka for payment and separately tracks payment vs. product delivery. - -## Index - -- `styles.css` — root stylesheet, imports everything under `tokens/`. -- `tokens/colors.css`, `typography.css`, `spacing.css`, `effects.css` — design tokens. -- `assets/logo-mark.svg`, `favicon.svg` — the one brand mark found in the codebase. -- `components/core/` — Button, IconButton, Input, Checkbox, Tag, Avatar, Icon (intentional - additions — see below). -- `components/status/` — AttentionStatus, ActorBadge, ChannelBadge. -- `components/cards/` — MetricCard, DepartmentCard, IntegrationHealthCard, - ProductAIReleaseCard, CommerceStatusTimeline. -- `components/inbox/` — ConversationInbox, KnowledgeDocumentEditor. -- `guidelines/` — foundation specimen cards (Colors, Type, Spacing, Brand). -- `ui_kits/internal-hub/` — Auth → Command Center → Sales · Clients, clickable. -- `ui_kits/web-chat/` — the embeddable chat widget, all 5 states. -- `ui_kits/checkout/` — the public checkout flow, all 8 states. - -## Components - -Full list (16), grouped by directory: - -- **Core** (intentional additions, see below): `Button`, `IconButton`, `Input`, `Checkbox`, - `Tag`, `Avatar`, `Icon`. -- **Status** (from ADR-HUB-0013's local-component list): `AttentionStatus`, `ActorBadge`, - `ChannelBadge`. -- **Cards** (from ADR-HUB-0013): `MetricCard`, `DepartmentCard`, `IntegrationHealthCard`, - `ProductAIReleaseCard`, `CommerceStatusTimeline`. -- **Inbox** (from ADR-HUB-0013): `ConversationInbox`, `KnowledgeDocumentEditor`. - -### Intentional additions - -ADR-HUB-0013 states the Internal Hub is built on **Ant Design + Ant Design X**, with only ten -named local composite components on top (listed under "Status/Cards/Inbox" above — built -exactly as named). Ant Design itself isn't installable in this static-HTML environment, so to -make the UI kits and composite components actually renderable, this system also includes a -small set of Ant-Design-styled primitives that the ADR assumes but doesn't name: -`Button`, `IconButton`, `Input`, `Checkbox`, `Tag`, `Avatar`, `Icon`. Their visuals (radii, -heights, colors) are copied exactly from the approved HTML baseline, not invented — treat them -as a faithful stand-in for the real Ant Design instance, not a design decision of their own. - -## Content fundamentals - -Drawn from the AI agent system prompts (`content/ai-content-company-filled.md`) and the copy -throughout the baseline screens (Russian-language product, primary audience is Russian). - -- **Language & register:** Russian, informal-but-respectful "вы" register — direct, calm, - no hard-sell. The agent prompt is explicit: "Пиши как нормальный человек в мессенджере. Не как объявление, не как пресс-релиз и не как робот, который сразу вываливает всю информацию." -- **Tone:** short, human paragraphs, answer the actual question first, then suggest a next - step: "Отвечай по сути вопроса, короткими живыми абзацами." and "Не дави на покупку. Главная задача общего агента — правильно понять потребность и направить человека туда, где он быстрее получит пользу." -- **Formatting discipline:** no markdown inside chat replies — "Не используй markdown-разметку внутри ответа: не ставь заголовки, списки с маркерами, жирный текст, таблицы и разделители." UI copy elsewhere (Hub, checkout) mirrors this: plain sentences, no bullet-heavy microcopy. -- **Emoji:** rare and situational, never decorative — "Уместные смайлики допустимы, но редко и по ситуации." No emoji appear anywhere in the Hub, Web Chat or Checkout baseline screens. -- **Cultural register:** "Учитывай российский контекст общения: уважительно, прямо, без давления и без чрезмерной рекламности." -- **Honesty/scope discipline:** never invent facts, prices, or promises outside the knowledge - base — "Если данных не хватает, не выдумывай. Скажи, что этот момент лучше уточнить у специалиста, и передай оператору." and pricing/legal specifics always come from the server, never the client: see Checkout spec §16 ("не доверять цене и составу из состояния браузера"). -- **Handoff phrasing:** warm, not robotic, when passing to a human — "При передаче не отвечай сухо. Напиши по-человечески: понял задачу, здесь лучше подключить специалиста, передаю вопрос." -- **UI microcopy style (from the baseline):** short declarative status lines ("Готовим оплату", - "Оплата получена", "Требует внимания"), technical IDs always in monospace, money always as - `₽95 040` (₽ prefix, space thousands separator, no decimals for round sums). -- **Domains:** only `edevs.tech` is the confirmed public site; `edevs.ru` is explicitly - forbidden in agent replies. - -## Visual foundations - -- **Overall direction (ADR-HUB-0013):** *"светлая тема; премиальный минимализм; высокая, но - контролируемая информационная плотность; спокойная нейтральная основа; один основной - акцентный цвет; цвет используется прежде всего для статусов и действий; минимум декоративных - элементов; отсутствие градиентов, стекломорфизма, неоновых эффектов и визуального шума; - desktop-first."* (light theme, premium minimalism, one accent color, color reserved for - status/action, no gradients/glassmorphism/neon, desktop-first for the internal Hub). -- **Color:** one accent, `#1677ff` (Ant Design blue-6) with a `#0958d9` hover/active shade. - Semantic tokens are mandatory and separate from the accent: success/warning/error/info, plus - two Hub-specific roles — `ai` (purple, `#722ed1`) vs `human` (blue, same as primary) — and a - `channel-*` family (MAX purple, Telegram blue, Web Chat teal) used sparingly so multi-channel - screens don't turn into "a colorful mosaic" (ADR wording). Status color is never the sole - signal — always paired with text and, in tables, an icon or label. -- **Type:** system font stack only — no bespoke webfont is loaded - (`-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif`). - Technical identifiers (order/release/event IDs, emails, obscured phone numbers) switch to a - monospace stack. Headings use tight letter-spacing (−0.01 to −0.02em); table headers use wide - spacing (+0.03 to +0.06em) with all-caps and a muted gray. - Sizes are exact pixel values pulled from the baseline (26/24/20/18/16/14.5/13.5/13/12.5/12/ - 11/10.5px) — not snapped to a 4/8 grid. -- **Spacing / density:** "compact enterprise" density is an explicit rule — *"большие пустые - поля и oversized-карточки запрещены"*. Padding values are odd/precise (9px, 11px, 13px, 14px, - 18px…), not rounded. Control heights: 30/34/36/42/44/48px; topbar is a fixed 56px. -- **Backgrounds:** flat solid colors only. Page background `#f0f2f5`, card surfaces pure white. - No photography, no illustrations, no repeating patterns/textures, no gradients anywhere - (buttons, cards, banners are all flat fills). The one "textured" pattern in the system is the - 1px-gap metric grid (white cells on a `#f0f0f0` background, forming hairline dividers) — see - the Spacing → "Metric Grid In Use" card. -- **Corners:** 7–9px on controls/inputs, 8–9px on buttons, 10–14px on cards/modals, full pill - on chips/segmented controls, circle on avatars. -- **Cards:** white surface, 1px `#f0f0f0` border, soft shadow (`0 1px 3px rgba(0,0,0,.04)`), - 12px radius as the default; no colored left-border accent except the Command Center's status - banner (a deliberate, singular exception tied to company health, not a general card pattern). -- **Shadows:** shallow and near-neutral throughout — hairline (`0 1px 2px rgba(0,0,0,.03)`), - card (`0 1px 3px rgba(0,0,0,.04)`), modal (`0 2px 12px rgba(0,0,0,.05)`), dropdown - (`0 6px 20px rgba(0,0,0,.12)`). The one colored shadow is the primary button's blue-tinted - `0 1px 2px rgba(22,119,255,.3)`, used to make the single CTA per screen pop slightly. -- **Animation:** minimal and functional only — a 3-dot typing indicator (`hub-typing`, opacity/ - translateY loop), a spinner (`hub-spin`, rotate) for loading states, and a slow opacity pulse - (`hub-pulse`) for "in progress" states (e.g. delivering a purchased product). No entrance - animations, bounces, or parallax anywhere in the baseline. -- **Hover states:** buttons/links darken (primary `#1677ff → #0958d9`); neutral surfaces get a - light gray fill (`transparent → #f5f5f5`) on hover; secondary buttons swap border+text to the - accent color on hover. No lightening-on-hover pattern is used. - **Press/active states:** not distinctly styled in the baseline (no scale/shrink pattern - observed) — treat hover as the primary interactive affordance; focus-visible gets a solid - 2px accent outline (see `apps/internal-ui/src/styles/base.css`). - **Disabled:** 55% opacity + `cursor: not-allowed`. - **Focus:** border-color changes to the accent (inputs) or a visible 2px outline (buttons) — - never a glow/box-shadow ring. -- **Borders:** hairline `#f0f0f0` almost everywhere (card edges, table row dividers, header - separators); slightly stronger `#d9d9d9`/`#e8e8e8` on interactive control outlines - (buttons, inputs) so they read as tappable against the flat background. -- **Transparency & blur:** no blur/glassmorphism anywhere. The only translucent surfaces are - the Web Chat header's icon buttons (`rgba(255,255,255,0.14–0.26)` over the solid blue header) - and a full-viewport `position:fixed` transparent scrim used to close open dropdowns/menus. -- **Imagery:** none — the product is data/status-dense enterprise software and transactional - flows, not marketing pages. No photography, no hand-drawn illustrations, no generic stock - imagery anywhere in the baseline; nothing to copy in for that reason. -- **Layout rules:** Internal Hub is a fixed sidebar (≈248px) + topbar (56px) + scrollable - content shell, min-width 1024–1180px depending on screen, content capped at 1200–1340px and - centered. Web Chat and Checkout are separate, chrome-free, mobile-first single-column flows - with no sidebar/topbar — explicitly not governed by the Internal Hub's layout rules - (SPEC-HUB-0007 §4). - -## Iconography - -- **System:** hand-authored inline SVG, Feather/Lucide-style stroke icons (round caps/joins, - 1.7–2.2px stroke, 24×24 viewBox) — every baseline screen inlines its own `` rather than - referencing a shared font or sprite sheet, so there is no icon font or `.svg` sprite file in - the repo to copy wholesale. This design system's `Icon` component (`components/core/Icon.jsx`) - collects the ~35 recurring glyphs actually used across the baseline (nav icons, status icons, - form icons, payment icons) into one reusable primitive with the *exact* path data copied from - the source screens — nothing was redrawn from imagination. -- **Emoji:** never used anywhere in the product UI (only "rarely, situationally" in AI chat - replies per the content guidelines above). - **Unicode-as-icon:** limited to pagination chevrons (`‹ › …`) in table footers. -- **Color:** icons are almost always `currentColor`/neutral gray (`#8c8c8c`/`#595959`), tinted - to the semantic/accent color only when they sit inside a status chip or colored icon tile - (e.g. a purple AI bolt icon on a light-purple tile). - -## Caveats & where I need your help - -1. **No Figma was attached** — everything above comes from the approved HTML baseline in - `design/baseline/`, which the team's own spec names as canonical. If a Figma file exists, - attach it and I can cross-check/tighten values. -2. **No FoxRay/FirePage brand assets** — this system only covers Edevs Hub (the internal - platform + its two public surfaces). FoxRay/Foxray and FirePage are referenced only as - *product tags* inside Hub (colored labels, no logos). If you want their actual product UI - or marks in this system, please attach their codebases/design files. -3. **No logo beyond the one favicon mark** — I did not draw one. If Edevs has a real wordmark - or icon set beyond `favicon.svg`, please attach it and I'll swap it in everywhere. -4. **Ant Design isn't literally bundled** — see "Intentional additions" above; I built - faithful lightweight stand-ins instead of pulling in the real library, since only static - HTML/JS/CSS work in this environment. -5. **Internal Hub UI kit covers 2 of many screens** (Command Center + Sales · Clients, behind a - working Auth gate) rather than all ~35 baseline screens — tell me which screens matter most - (Departments, AI agents, Orders, Settings…) and I'll extend the kit. - -**Ask:** tell me which of the ~35 baseline screens to turn into additional UI-kit pages next, -and whether the Ant-Design-styled primitives above should stay as lightweight stand-ins or be -swapped for real `antd` components if this ever moves into a real build environment. diff --git a/design/baseline/# UI для онлайн звонка/_ds/edevs-hub-design-system-e4c9df12-82c8-42b3-b819-63d92dfb8702/tokens/colors.css b/design/baseline/# UI для онлайн звонка/_ds/edevs-hub-design-system-e4c9df12-82c8-42b3-b819-63d92dfb8702/tokens/colors.css deleted file mode 100644 index e20679d..0000000 --- a/design/baseline/# UI для онлайн звонка/_ds/edevs-hub-design-system-e4c9df12-82c8-42b3-b819-63d92dfb8702/tokens/colors.css +++ /dev/null @@ -1,88 +0,0 @@ -/* Edevs Hub — color tokens - Source: packages/ui/src/theme.ts (Ant Design ThemeConfig), apps/internal-ui/src/styles/base.css, - and design/baseline/*.dc.html (approved HTML baseline). Ant Design's default light palette, - customized with a single accent (#1677ff) per ADR-HUB-0013. */ - -:root { - /* ---- base neutrals (Ant Design neutral scale as used in the baseline) ---- */ - --n-1: #1f1f1f; /* page/heading titles */ - --n-2: #262626; /* primary body text */ - --n-3: #595959; /* secondary text */ - --n-4: #8c8c8c; /* tertiary text / captions */ - --n-5: #bfbfbf; /* disabled / placeholder / faint */ - --n-6: #d9d9d9; /* strong border, control border */ - --n-7: #e8e8e8; /* input border */ - --n-8: #f0f0f0; /* hairline border */ - --n-9: #f5f5f5; /* hover surface */ - --n-10: #fafafa; /* table header surface */ - --n-11: #f0f2f5; /* app/page background */ - --n-white: #ffffff; - - /* ---- primary (blue-6 / blue-7) ---- */ - --primary: #1677ff; - --primary-hover: #0958d9; - --primary-bg: #e6f4ff; - --primary-border: #91caff; - --primary-shadow: rgba(22, 119, 255, 0.3); - - /* ---- semantic: success / warning / error / info ---- */ - --success: #52c41a; - --success-text: #389e0d; - --success-bg: #f6ffed; - --success-bg-strong: #f1f9ec; - --success-border: #b7eb8f; - - --warning: #faad14; - --warning-text: #d48806; - --warning-bg: #fffbe6; - --warning-bg-strong: #fff7e6; - --warning-border: #ffe58f; - - --error: #ff4d4f; - --error-text: #cf1322; - --error-bg: #fff2f0; - --error-border: #ffccc7; - - --info: #1677ff; - - /* ---- role accents: AI vs human ---- */ - --ai: #722ed1; - --ai-light: #9254de; - --ai-lighter: #b37feb; - --ai-bg: #f9f0ff; - --human: #1677ff; - - /* ---- channel accents (MAX / Telegram / Web Chat) ---- */ - --channel-max: #6b5be0; - --channel-max-bg: #f2f0ff; - --channel-telegram: #2f8fd0; - --channel-telegram-bg: #eaf6fd; - --channel-webchat: #0f9b8e; - --channel-webchat-bg: #e8f7f4; - - /* ---- product accents (as tagged in tables/lists) ---- */ - --product-firepage: #0958d9; - --product-firepage-bg: #e6f4ff; - --product-foxray: #722ed1; - --product-foxray-bg: #f9f0ff; - - /* ---- surfaces ---- */ - --surface-page: var(--n-11); - --surface-card: var(--n-white); - --surface-sunken: #fafafa; - --surface-chip: #f7f8fa; - - /* ---- text aliases ---- */ - --text-heading: var(--n-1); - --text-body: var(--n-2); - --text-secondary: var(--n-3); - --text-tertiary: var(--n-4); - --text-disabled: var(--n-5); - --text-inverse: var(--n-white); - --text-link: var(--primary); - - /* ---- borders ---- */ - --border-default: var(--n-8); - --border-input: var(--n-7); - --border-strong: var(--n-6); -} diff --git a/design/baseline/# UI для онлайн звонка/_ds/edevs-hub-design-system-e4c9df12-82c8-42b3-b819-63d92dfb8702/tokens/typography.css b/design/baseline/# UI для онлайн звонка/_ds/edevs-hub-design-system-e4c9df12-82c8-42b3-b819-63d92dfb8702/tokens/typography.css deleted file mode 100644 index 0d43222..0000000 --- a/design/baseline/# UI для онлайн звонка/_ds/edevs-hub-design-system-e4c9df12-82c8-42b3-b819-63d92dfb8702/tokens/typography.css +++ /dev/null @@ -1,42 +0,0 @@ -/* Edevs Hub — typography tokens - The internal Hub uses the Ant Design default system font stack — no bespoke webfont - is loaded (see ADR-HUB-0013: "используется системный font stack Ant Design без - обязательной внешней зависимости от загружаемого шрифта"). Technical identifiers - (order/release/event IDs, emails) use a monospace stack. */ - -:root { - --font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; - --font-mono: "SF Mono", ui-monospace, Menlo, Consolas, monospace; - - /* type scale, taken verbatim from the baseline (px, not snapped to a 4/8 grid) */ - --text-2xl: 26px; /* page hero title (Command Center) */ - --text-xl: 24px; /* page title */ - --text-lg: 20px; /* auth title */ - --text-md: 18px; /* card title */ - --text-base-lg: 16px; - --text-base: 14.5px; /* buttons, primary body */ - --text-sm-lg: 13.5px; - --text-sm: 13px; /* table body */ - --text-sm-tight: 12.5px; - --text-xs: 12px; /* meta */ - --text-xs-tight: 11.5px; - --text-2xs: 11px; /* table header / eyebrow */ - --text-2xs-tight: 10.5px; - - --weight-regular: 400; - --weight-medium: 500; - --weight-semibold: 600; - --weight-bold: 700; - --weight-black: 800; - - --tracking-tight: -0.02em; /* large headings */ - --tracking-tight-sm: -0.01em; - --tracking-wide: 0.03em; /* table header eyebrows */ - --tracking-wider: 0.06em; /* nav section labels */ - - --leading-tight: 1.15; - --leading-snug: 1.2; - --leading-normal: 1.4; - --leading-relaxed: 1.5; - --leading-loose: 1.55; -} diff --git a/design/baseline/# UI для онлайн звонка/Аудиозвонок.dc.html b/design/baseline/# UI для онлайн звонка/Аудиозвонок.dc.html index 54021e3..837ce78 100644 --- a/design/baseline/# UI для онлайн звонка/Аудиозвонок.dc.html +++ b/design/baseline/# UI для онлайн звонка/Аудиозвонок.dc.html @@ -8,12 +8,12 @@ - - - - - - + + + + + + - - -
- - -
-
- - DG-02 · DESIGN BASELINE -
-

Каналы обработки — канал как объект управления

-

Утверждаемый макет раздела Компания → Каналы по SPEC-HUB-0027 / ADR-HUB-0037: список с фильтрами и меню строки, карточка канала одной страницей (без вкладок), секции «Политика» и «Подключения», мастер создания из трёх шагов, служебные состояния. Настройка агента и знания остаются в разделе AI и в этот baseline не входят. Терминология: MAX / TG / Web — это подключения; «канал» — сущность маршрутизации. Все данные — примеры.

-
- A · Список - B · Карточка - C · Политика - D · Подключения - E · Мастер - S · Состояния -
-
- - -
-
- A -

Список каналов — основной вид

- фильтры по отделу · поиск и архивные · плотная таблица · меню строки -
- -
- - - - -
-
-
- ООО «Эдевс»/ - Компания/ - Каналы -
-
-
3
-
-
- -
- -
-
-

Каналы

-

Точка маршрутизации диалогов: связывает отдел, продукт, подключения и — необязательно — AI-агента

-
-
- -
-
- - -
-
- - - - -
-
-
- - Поиск по имени и коду -
- -
-
- - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
КАНАЛПРОДУКТПОДКЛЮЧЕНИЯAI-АГЕНТДИАЛОГИ
FoxRay — продажи
foxray-sales · Продажи
FoxRayTGWeb
FoxRay SalesАктивен
12 - - -
- Открыть - Привязать подключение -
-
Деактивировать
-
- - Удалить
Нельзя: 12 диалогов, агент
-
-
-
FoxRay — поддержка
foxray-support · Поддержка
FoxRayWeb
FoxRay SupportАктивен
7
FirePage — продажи
firepage-sales · Продажи
FirePageMAX
FirePage SalesАктивен
5
Партнёрская линия
partners · Без отдела
— непродуктовыйTGНет агента
операторский канал
3
FoxRay — вебинары
foxray-webinars · Продажи
FoxRay—Архивный0
-
- 5 каналов · 1 архивный - Счётчик «Диалоги» — открытые диалоги по Conversation.channel -
-
-
-
-
-
- - -
-
- B -

Карточка канала — одна страница

- без вкладок · секции сверху вниз: Назначение · Политика · Подключения · AI-агент · Счётчики -
- -
- -
- Каналы/FoxRay — продажи -
- -
-
-

FoxRay — продажи

-
foxray-sales·Продажи·FoxRay
-
-
- Активен - - - -
-
- - -
- - -
-

Назначение

Отдел и продукт редактируются здесь
-
-
ОтделПродажи
-
ПродуктFoxRay
-
Кодfoxray-sales
-
Создан02 июл 2026
-
-
- - -
-

Политика

Пресет: Продажи
-
-
Обязательная продуктовая идентичность
Диалог требует авторизации как владелец продукта.
- -
-
-
Анонимные сессии
Разрешает диалоги без идентификации пользователя.
- -
-
-
Самозаявленный контакт
Позволяет пользователю указать контакт вручную.
- -
-
-
Attribution продаж
Связывает продажу с диалогом канала.
- -
-
-
Коммерческие действия (checkout)
Разрешает оформление заказа в диалоге.
- -
-
- - -
-

Подключения

-
-
- TG -
FoxRay Sales Bot
Telegram · @foxray_sales_bot
- OK - -
-
- Web -
Виджет на foxray.ru
Web Chat · embed foxray-sales
- OK - -
-
-
- - -
-
AI-АГЕНТ
-
- -
- FoxRay Sales - · - Активен - · - claude-sonnet-4.6 -
- Открыть агента -
-
- - -
- -
-
ОТКРЫТЫЕ ДИАЛОГИ
12
-
ПОДКЛЮЧЕНИЯ
2
-
-
- -
-
-
- - -
-
- C -

Секция «Политика» — запрещённый инвариантом флаг

- пять флагов с пояснением следствия · флаг, запрещённый инвариантом, объясняет причину -
- -
-
- Каналы/Партнёрская линия -
-
-
-

Партнёрская линия

-
partners·Без отдела·— непродуктовый
-
- Активен -
- -
- -
-
СЕКЦИЯ «ПОЛИТИКА» · 5 ФЛАГОВ
- -
- -
-
Обязательная продуктовая идентичностьНедоступно
-
Требует продукта (инвариант P3). Пользователь должен быть авторизован как владелец продукта. Назначьте продукт каналу, чтобы включить.
-
-
- -
- -
-
Анонимные сессии
-
Разрешает диалоги без идентификации пользователя — партнёр может написать без входа.
-
-
- -
- -
-
Самозаявленный контакт
-
Позволяет пользователю указать email или телефон вручную для обратной связи.
-
-
- -
- -
-
Attribution продажНедоступно
-
Attribution недоступна непродуктовому каналу (инвариант P2). Свяжите канал с продуктом, чтобы включить.
-
-
- -
- -
-
Коммерческие действия (checkout)Запрещено инвариантом
-
Коммерческие действия недоступны непродуктовому каналу (инвариант P1). Флаг не будет сохранён включённым, пока каналу не назначен продукт — причина показана, а не игнорируется молча.
- Назначить продукт -
-
-
- -
-
-

Контекст политики

-
-
Продукт— непродуктовый
-
ОтделБез отдела
-
ПресетСвой (CUSTOM)
-
-
-
-
Инварианты проверяются по итоговому состоянию: частичное сохранение запрещено. Чтобы включить коммерческие флаги, сначала назначьте продукт в секции «Назначение».
-
-
-
-
-
- - -
-
- D -

Секция «Подключения» — привязка и перенос

- список подключений канала · привязка · перенос между каналами с явным подтверждением (force) -
- -
-
- Каналы/FoxRay — продажи -
-
-

FoxRay — продажи

-
-
-

Подключения

- - - - - - - - - - - - - - - - - - - - - - - -
ПОДКЛЮЧЕНИЕПРОВАЙДЕРСТАТУС
FoxRay Sales Bot
@foxray_sales_bot
TGOK
Виджет на foxray.ru
embed foxray-sales
WebOK
-
- - -
-
-
- -
-

Перенести подключение в этот канал?

-

Подключение «FirePage MAX Bot» уже привязано к каналу «FirePage — продажи». Подключение принадлежит ровно одному каналу — перенос отвяжет его от прежнего.

-
-
-
-
- MAX -
FirePage — продажиFoxRay — продажи
-
-

Существующие диалоги остаются в прежнем канале (Conversation.connection — PROTECT). Действие пишется в аудит как перенос.

-
-
- - - -
-
-
-
- - -
-
- E -

Мастер создания канала — три шага

- Канал · Назначение · Подключения · финальный экран операторского канала -
- -
-

Создание канала

-

Три шага. Настройка агента и знаний в мастер не входит — агент создаётся отдельным действием в разделе AI. Канал создаётся по завершении шага 2.

- - -
-
Канал
-
-
Назначение
-
-
Подключения
-
- - -
-
-
-

Канал создан

-

Партнёрская линия — операторский канал: AI-агента нет, диалоги ведут операторы. Канал принимает подключения, диалоги, заказы и attribution.

- -
-
-
-

Сводка канала

-
-
НазваниеПартнёрская линия
-
Кодpartners
-
ОтделБез отдела
-
Продукт— непродуктовый
-
ПодключенияTG · 1
-
-
-
-
Нужен AI-агент? Создайте его отдельным действием в разделе AI — он подключится к этому каналу.
- Перейти в раздел AI -
-
-
-
-
- - -
-
- S -

Служебные состояния

- пустой список · канал без агента · архивный канал · ограниченный доступ · конфликт удаления -
-
- -
-
-
Создайте первый канал
-

Канал маршрутизирует диалоги от подключений к отделу, продукту и — при необходимости — к AI-агенту.

- -
- -
-
СЕКЦИЯ «AI-АГЕНТ» · КАНАЛ БЕЗ АГЕНТА
-
-
-
Агента нет, канал ведут операторы
-

Валидное состояние канала. Агент создаётся отдельным действием в разделе AI.

- Создать агента в разделе AI -
-
- -
-
АРХИВНЫЙ КАНАЛ
-
-
FoxRay — вебинары
foxray-webinars
- Архивный -
-

Не принимает новые диалоги и не выбирается при привязке подключения. История диалогов сохранена и доступна.

- -
- -
-
-
Доступ ограничен отделом
-

Ваш scope channels.view охватывает отдел «Поддержка». Каналы других отделов и канал без отдела не показываются; счётчики фильтров считаются по видимому подмножеству.

-
- -
-
- -

Канал нельзя удалить

Есть связанные записи. Вместо удаления используйте деактивацию — история сохранится.

-
-
-
БЛОКИРУЮЩИЕ СВЯЗИ
-
-
Диалоги143
-
Подключения1
-
Агент1
-
-
-
- - - -
-
-
-
- -
-
- - diff --git a/design/baseline/Сотрудники/Сотрудники (новая модель).dc.html b/design/baseline/Сотрудники/Сотрудники (новая модель).dc.html index a6a4099..71a8aad 100644 --- a/design/baseline/Сотрудники/Сотрудники (новая модель).dc.html +++ b/design/baseline/Сотрудники/Сотрудники (новая модель).dc.html @@ -8,12 +8,12 @@ - - - - - - + + + + + +