@agentaily/design-system 0.2.0 → 0.4.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 (79) hide show
  1. package/DESIGN.md +56 -7
  2. package/README.md +5 -5
  3. package/dist/components/ai/Confirmation.js +58 -22
  4. package/dist/components/ai/Confirmation.js.map +1 -1
  5. package/dist/components/ai/Queue.d.ts +23 -0
  6. package/dist/components/ai/Queue.js +52 -1
  7. package/dist/components/ai/Queue.js.map +1 -1
  8. package/dist/components/ai/ToolCall.js +69 -30
  9. package/dist/components/ai/ToolCall.js.map +1 -1
  10. package/dist/components/auth/AccountControl.d.ts +23 -0
  11. package/dist/components/auth/AccountControl.js +47 -0
  12. package/dist/components/auth/AccountControl.js.map +1 -0
  13. package/dist/components/auth/AuthDialog.d.ts +39 -0
  14. package/dist/components/auth/AuthDialog.js +327 -0
  15. package/dist/components/auth/AuthDialog.js.map +1 -0
  16. package/dist/components/auth/SignInPage.d.ts +69 -0
  17. package/dist/components/auth/SignInPage.js +239 -0
  18. package/dist/components/auth/SignInPage.js.map +1 -0
  19. package/dist/components/chat/CodeBlock.js +3 -2
  20. package/dist/components/chat/CodeBlock.js.map +1 -1
  21. package/dist/components/chat/ConversationThread.d.ts +67 -0
  22. package/dist/components/chat/ConversationThread.js +129 -0
  23. package/dist/components/chat/ConversationThread.js.map +1 -0
  24. package/dist/components/code/Artifact.js +44 -9
  25. package/dist/components/code/Artifact.js.map +1 -1
  26. package/dist/components/code/JSXPreview.js +19 -12
  27. package/dist/components/code/JSXPreview.js.map +1 -1
  28. package/dist/components/code/Snippet.js +2 -2
  29. package/dist/components/code/Snippet.js.map +1 -1
  30. package/dist/components/code/Terminal.js +24 -10
  31. package/dist/components/code/Terminal.js.map +1 -1
  32. package/dist/components/code/WebPreview.js +44 -10
  33. package/dist/components/code/WebPreview.js.map +1 -1
  34. package/dist/components/display/Skeleton.js +17 -4
  35. package/dist/components/display/Skeleton.js.map +1 -1
  36. package/dist/components/display/StatusPill.d.ts +12 -0
  37. package/dist/components/display/StatusPill.js +17 -0
  38. package/dist/components/display/StatusPill.js.map +1 -0
  39. package/dist/components/inputs/SecretField.d.ts +21 -0
  40. package/dist/components/inputs/SecretField.js +70 -0
  41. package/dist/components/inputs/SecretField.js.map +1 -0
  42. package/dist/components/layout/AppShell.d.ts +30 -0
  43. package/dist/components/layout/AppShell.js +117 -0
  44. package/dist/components/layout/AppShell.js.map +1 -0
  45. package/dist/components/layout/DesignerShell.d.ts +39 -0
  46. package/dist/components/layout/DesignerShell.js +146 -0
  47. package/dist/components/layout/DesignerShell.js.map +1 -0
  48. package/dist/components/layout/DocsLayout.d.ts +24 -0
  49. package/dist/components/layout/DocsLayout.js +113 -0
  50. package/dist/components/layout/DocsLayout.js.map +1 -0
  51. package/dist/components/layout/SettingsPage.d.ts +31 -0
  52. package/dist/components/layout/SettingsPage.js +92 -0
  53. package/dist/components/layout/SettingsPage.js.map +1 -0
  54. package/dist/components/review/MarkupLayer.d.ts +20 -0
  55. package/dist/components/review/MarkupLayer.js +237 -0
  56. package/dist/components/review/MarkupLayer.js.map +1 -0
  57. package/dist/components/settings/HelpSteps.d.ts +20 -0
  58. package/dist/components/settings/HelpSteps.js +40 -0
  59. package/dist/components/settings/HelpSteps.js.map +1 -0
  60. package/dist/components/settings/IntegrationSettings.d.ts +15 -0
  61. package/dist/components/settings/IntegrationSettings.js +630 -0
  62. package/dist/components/settings/IntegrationSettings.js.map +1 -0
  63. package/dist/components/settings/TestRow.d.ts +21 -0
  64. package/dist/components/settings/TestRow.js +66 -0
  65. package/dist/components/settings/TestRow.js.map +1 -0
  66. package/dist/components/utilities/BrandMark.d.ts +17 -0
  67. package/dist/components/utilities/BrandMark.js +43 -0
  68. package/dist/components/utilities/BrandMark.js.map +1 -0
  69. package/dist/components/utilities/Icon.d.ts +28 -0
  70. package/dist/components/utilities/Icon.js +196 -0
  71. package/dist/components/utilities/Icon.js.map +1 -0
  72. package/dist/components/utilities/RotatingTagline.d.ts +30 -0
  73. package/dist/components/utilities/RotatingTagline.js +90 -0
  74. package/dist/components/utilities/RotatingTagline.js.map +1 -0
  75. package/dist/index.d.ts +23 -0
  76. package/dist/index.js +34 -0
  77. package/dist/index.js.map +1 -1
  78. package/dist/styles.css +67 -64
  79. package/package.json +2 -2
@@ -0,0 +1,90 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { useState, useEffect } from "react";
3
+ const AX_RTAG_CSS = `
4
+ .ax-rtag { display: inline; color: var(--text-body); }
5
+ .ax-rtag__prefix { color: var(--text-body); }
6
+ .ax-rtag__verb { color: var(--text-body); }
7
+ .ax-rtag__grad {
8
+ background: linear-gradient(95deg, #F2806B 0%, #E9B24F 18%, #6FB66A 36%, #4DB6AE 54%, #5B8DEF 72%, #9B7BEA 86%, #F2806B 100%);
9
+ background-size: 220% 100%;
10
+ -webkit-background-clip: text; background-clip: text;
11
+ -webkit-text-fill-color: transparent; color: transparent;
12
+ animation: ax-rtag-flow var(--ax-rtag-flow, 1.2s) linear infinite;
13
+ }
14
+ .ax-rtag__cursor {
15
+ display: inline-block; width: 0.5em; height: 0.84em; background: var(--text-body);
16
+ vertical-align: -0.02em; margin-left: 0.04em;
17
+ }
18
+ .ax-rtag__cursor.is-blink { animation: ax-rtag-blink 1.1s steps(1) infinite; }
19
+ @keyframes ax-rtag-flow { to { background-position: 220% 0; } }
20
+ @keyframes ax-rtag-blink { 50% { opacity: 0; } }
21
+ @media (prefers-reduced-motion: reduce) { .ax-rtag__grad { animation: none; } }
22
+ `;
23
+ if (typeof document !== "undefined" && !document.getElementById("ax-rtag-css")) {
24
+ const s = document.createElement("style");
25
+ s.id = "ax-rtag-css";
26
+ s.textContent = AX_RTAG_CSS;
27
+ document.head.appendChild(s);
28
+ }
29
+ function RotatingTagline({
30
+ prefix = "聊天,",
31
+ phrases = ["构建万物", "生成万物", "设计万物", "学习万物"],
32
+ gradient = true,
33
+ cursor = true,
34
+ breakAfterPrefix = false,
35
+ typeSpeed = 140,
36
+ deleteSpeed = 70,
37
+ hold = 1700,
38
+ flowDuration = "1.2s",
39
+ className = "",
40
+ ...rest
41
+ }) {
42
+ const list = phrases && phrases.length ? phrases : [""];
43
+ const reduced = typeof window !== "undefined" && window.matchMedia && window.matchMedia("(prefers-reduced-motion: reduce)").matches;
44
+ const [wi, setWi] = useState(0);
45
+ const [txt, setTxt] = useState(list[0]);
46
+ const [deleting, setDeleting] = useState(false);
47
+ useEffect(() => {
48
+ if (reduced) {
49
+ const t2 = setTimeout(() => setWi((w) => (w + 1) % list.length), hold + 700);
50
+ return () => clearTimeout(t2);
51
+ }
52
+ const word = list[wi % list.length];
53
+ let t;
54
+ if (!deleting && txt === word) {
55
+ t = setTimeout(() => setDeleting(true), hold);
56
+ } else if (deleting && txt === "") {
57
+ setDeleting(false);
58
+ setWi((w) => (w + 1) % list.length);
59
+ } else {
60
+ const next = deleting ? word.slice(0, txt.length - 1) : word.slice(0, txt.length + 1);
61
+ t = setTimeout(() => setTxt(next), deleting ? deleteSpeed : typeSpeed);
62
+ }
63
+ return () => clearTimeout(t);
64
+ }, [txt, deleting, wi, reduced, hold, typeSpeed, deleteSpeed]);
65
+ useEffect(() => {
66
+ if (reduced) setTxt(list[wi % list.length]);
67
+ }, [wi, reduced]);
68
+ const atRest = reduced || !deleting && txt === list[wi % list.length];
69
+ const verbCls = ["ax-rtag__verb", gradient ? "ax-rtag__grad" : ""].filter(Boolean).join(" ");
70
+ return /* @__PURE__ */ jsxs(
71
+ "span",
72
+ {
73
+ className: ["ax-rtag", className].filter(Boolean).join(" "),
74
+ style: { "--ax-rtag-flow": flowDuration },
75
+ ...rest,
76
+ children: [
77
+ prefix ? /* @__PURE__ */ jsxs("span", { className: "ax-rtag__prefix", children: [
78
+ prefix,
79
+ breakAfterPrefix ? /* @__PURE__ */ jsx("br", {}) : null
80
+ ] }) : null,
81
+ /* @__PURE__ */ jsx("span", { className: verbCls, children: txt }),
82
+ cursor ? /* @__PURE__ */ jsx("i", { className: "ax-rtag__cursor" + (atRest ? " is-blink" : ""), "aria-hidden": "true" }) : null
83
+ ]
84
+ }
85
+ );
86
+ }
87
+ export {
88
+ RotatingTagline
89
+ };
90
+ //# sourceMappingURL=RotatingTagline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RotatingTagline.js","sources":["../../../src/components/utilities/RotatingTagline.jsx"],"sourcesContent":["import React, { useState, useEffect } from \"react\";\n\n// RotatingTagline — the brand's signature animated headline: a fixed prefix\n// followed by a phrase that types in, holds, deletes, and advances to the next.\n// The rotating phrase wears the flowing geek-rainbow gradient; a block cursor\n// trails the text and blinks only while at rest. Used in the auth brand panel\n// and the marketing hero. Respects prefers-reduced-motion (whole-phrase swap,\n// no gradient flow). Font size / weight are inherited from the parent — size it\n// by styling the container, not this component.\nconst AX_RTAG_CSS = `\n.ax-rtag { display: inline; color: var(--text-body); }\n.ax-rtag__prefix { color: var(--text-body); }\n.ax-rtag__verb { color: var(--text-body); }\n.ax-rtag__grad {\n background: linear-gradient(95deg, #F2806B 0%, #E9B24F 18%, #6FB66A 36%, #4DB6AE 54%, #5B8DEF 72%, #9B7BEA 86%, #F2806B 100%);\n background-size: 220% 100%;\n -webkit-background-clip: text; background-clip: text;\n -webkit-text-fill-color: transparent; color: transparent;\n animation: ax-rtag-flow var(--ax-rtag-flow, 1.2s) linear infinite;\n}\n.ax-rtag__cursor {\n display: inline-block; width: 0.5em; height: 0.84em; background: var(--text-body);\n vertical-align: -0.02em; margin-left: 0.04em;\n}\n.ax-rtag__cursor.is-blink { animation: ax-rtag-blink 1.1s steps(1) infinite; }\n@keyframes ax-rtag-flow { to { background-position: 220% 0; } }\n@keyframes ax-rtag-blink { 50% { opacity: 0; } }\n@media (prefers-reduced-motion: reduce) { .ax-rtag__grad { animation: none; } }\n`;\n\nif (typeof document !== \"undefined\" && !document.getElementById(\"ax-rtag-css\")) {\n const s = document.createElement(\"style\");\n s.id = \"ax-rtag-css\";\n s.textContent = AX_RTAG_CSS;\n document.head.appendChild(s);\n}\n\nexport function RotatingTagline({\n prefix = \"聊天,\",\n phrases = [\"构建万物\", \"生成万物\", \"设计万物\", \"学习万物\"],\n gradient = true,\n cursor = true,\n breakAfterPrefix = false,\n typeSpeed = 140,\n deleteSpeed = 70,\n hold = 1700,\n flowDuration = \"1.2s\",\n className = \"\",\n ...rest\n}) {\n const list = phrases && phrases.length ? phrases : [\"\"];\n const reduced =\n typeof window !== \"undefined\" &&\n window.matchMedia &&\n window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n const [wi, setWi] = useState(0);\n const [txt, setTxt] = useState(list[0]);\n const [deleting, setDeleting] = useState(false);\n\n useEffect(() => {\n if (reduced) {\n const t = setTimeout(() => setWi((w) => (w + 1) % list.length), hold + 700);\n return () => clearTimeout(t);\n }\n const word = list[wi % list.length];\n let t;\n if (!deleting && txt === word) {\n t = setTimeout(() => setDeleting(true), hold);\n } else if (deleting && txt === \"\") {\n setDeleting(false);\n setWi((w) => (w + 1) % list.length);\n } else {\n const next = deleting ? word.slice(0, txt.length - 1) : word.slice(0, txt.length + 1);\n t = setTimeout(() => setTxt(next), deleting ? deleteSpeed : typeSpeed);\n }\n return () => clearTimeout(t);\n }, [txt, deleting, wi, reduced, hold, typeSpeed, deleteSpeed]);\n\n useEffect(() => {\n if (reduced) setTxt(list[wi % list.length]);\n }, [wi, reduced]);\n\n const atRest = reduced || (!deleting && txt === list[wi % list.length]);\n const verbCls = [\"ax-rtag__verb\", gradient ? \"ax-rtag__grad\" : \"\"].filter(Boolean).join(\" \");\n\n return (\n <span\n className={[\"ax-rtag\", className].filter(Boolean).join(\" \")}\n style={{ \"--ax-rtag-flow\": flowDuration }}\n {...rest}\n >\n {prefix ? (\n <span className=\"ax-rtag__prefix\">\n {prefix}\n {breakAfterPrefix ? <br /> : null}\n </span>\n ) : null}\n <span className={verbCls}>{txt}</span>\n {cursor ? (\n <i className={\"ax-rtag__cursor\" + (atRest ? \" is-blink\" : \"\")} aria-hidden=\"true\"></i>\n ) : null}\n </span>\n );\n}\n"],"names":["t"],"mappings":";;AASA,MAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAqBpB,IAAI,OAAO,aAAa,eAAe,CAAC,SAAS,eAAe,aAAa,GAAG;AAC9E,QAAM,IAAI,SAAS,cAAc,OAAO;AACxC,IAAE,KAAK;AACP,IAAE,cAAc;AAChB,WAAS,KAAK,YAAY,CAAC;AAC7B;AAEO,SAAS,gBAAgB;AAAA,EAC9B,SAAS;AAAA,EACT,UAAU,CAAC,QAAQ,QAAQ,QAAQ,MAAM;AAAA,EACzC,WAAW;AAAA,EACX,SAAS;AAAA,EACT,mBAAmB;AAAA,EACnB,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,OAAO;AAAA,EACP,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,GAAG;AACL,GAAG;AACD,QAAM,OAAO,WAAW,QAAQ,SAAS,UAAU,CAAC,EAAE;AACtD,QAAM,UACJ,OAAO,WAAW,eAClB,OAAO,cACP,OAAO,WAAW,kCAAkC,EAAE;AACxD,QAAM,CAAC,IAAI,KAAK,IAAI,SAAS,CAAC;AAC9B,QAAM,CAAC,KAAK,MAAM,IAAI,SAAS,KAAK,CAAC,CAAC;AACtC,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,KAAK;AAE9C,YAAU,MAAM;AACd,QAAI,SAAS;AACX,YAAMA,KAAI,WAAW,MAAM,MAAM,CAAC,OAAO,IAAI,KAAK,KAAK,MAAM,GAAG,OAAO,GAAG;AAC1E,aAAO,MAAM,aAAaA,EAAC;AAAA,IAC7B;AACA,UAAM,OAAO,KAAK,KAAK,KAAK,MAAM;AAClC,QAAI;AACJ,QAAI,CAAC,YAAY,QAAQ,MAAM;AAC7B,UAAI,WAAW,MAAM,YAAY,IAAI,GAAG,IAAI;AAAA,IAC9C,WAAW,YAAY,QAAQ,IAAI;AACjC,kBAAY,KAAK;AACjB,YAAM,CAAC,OAAO,IAAI,KAAK,KAAK,MAAM;AAAA,IACpC,OAAO;AACL,YAAM,OAAO,WAAW,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC;AACpF,UAAI,WAAW,MAAM,OAAO,IAAI,GAAG,WAAW,cAAc,SAAS;AAAA,IACvE;AACA,WAAO,MAAM,aAAa,CAAC;AAAA,EAC7B,GAAG,CAAC,KAAK,UAAU,IAAI,SAAS,MAAM,WAAW,WAAW,CAAC;AAE7D,YAAU,MAAM;AACd,QAAI,QAAS,QAAO,KAAK,KAAK,KAAK,MAAM,CAAC;AAAA,EAC5C,GAAG,CAAC,IAAI,OAAO,CAAC;AAEhB,QAAM,SAAS,WAAY,CAAC,YAAY,QAAQ,KAAK,KAAK,KAAK,MAAM;AACrE,QAAM,UAAU,CAAC,iBAAiB,WAAW,kBAAkB,EAAE,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAE3F,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,CAAC,WAAW,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,MAC1D,OAAO,EAAE,kBAAkB,aAAA;AAAA,MAC1B,GAAG;AAAA,MAEH,UAAA;AAAA,QAAA,SACC,qBAAC,QAAA,EAAK,WAAU,mBACb,UAAA;AAAA,UAAA;AAAA,UACA,mBAAmB,oBAAC,MAAA,CAAA,CAAG,IAAK;AAAA,QAAA,EAAA,CAC/B,IACE;AAAA,QACJ,oBAAC,QAAA,EAAK,WAAW,SAAU,UAAA,KAAI;AAAA,QAC9B,SACC,oBAAC,KAAA,EAAE,WAAW,qBAAqB,SAAS,cAAc,KAAK,eAAY,OAAA,CAAO,IAChF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGV;"}
package/dist/index.d.ts CHANGED
@@ -16,6 +16,11 @@ export * from "./components/ai/Suggestion";
16
16
  export * from "./components/ai/Task";
17
17
  export * from "./components/ai/ToolCall";
18
18
 
19
+ // auth
20
+ export * from "./components/auth/AccountControl";
21
+ export * from "./components/auth/AuthDialog";
22
+ export * from "./components/auth/SignInPage";
23
+
19
24
  // buttons
20
25
  export * from "./components/buttons/Button";
21
26
  export * from "./components/buttons/ButtonGroup";
@@ -24,6 +29,7 @@ export * from "./components/buttons/IconButton";
24
29
  // chat
25
30
  export * from "./components/chat/CodeBlock";
26
31
  export * from "./components/chat/Composer";
32
+ export * from "./components/chat/ConversationThread";
27
33
  export * from "./components/chat/Message";
28
34
 
29
35
  // code
@@ -59,6 +65,7 @@ export * from "./components/display/Pagination";
59
65
  export * from "./components/display/Progress";
60
66
  export * from "./components/display/Separator";
61
67
  export * from "./components/display/Skeleton";
68
+ export * from "./components/display/StatusPill";
62
69
  export * from "./components/display/Table";
63
70
  export * from "./components/display/Tabs";
64
71
  export * from "./components/display/Typography";
@@ -82,6 +89,7 @@ export * from "./components/inputs/InputGroup";
82
89
  export * from "./components/inputs/InputOTP";
83
90
  export * from "./components/inputs/Label";
84
91
  export * from "./components/inputs/RadioGroup";
92
+ export * from "./components/inputs/SecretField";
85
93
  export * from "./components/inputs/Select";
86
94
  export * from "./components/inputs/Slider";
87
95
  export * from "./components/inputs/Switch";
@@ -89,9 +97,13 @@ export * from "./components/inputs/Textarea";
89
97
  export * from "./components/inputs/Toggle";
90
98
 
91
99
  // layout
100
+ export * from "./components/layout/AppShell";
92
101
  export * from "./components/layout/AspectRatio";
102
+ export * from "./components/layout/DesignerShell";
103
+ export * from "./components/layout/DocsLayout";
93
104
  export * from "./components/layout/Resizable";
94
105
  export * from "./components/layout/ScrollArea";
106
+ export * from "./components/layout/SettingsPage";
95
107
  export * from "./components/layout/Sidebar";
96
108
 
97
109
  // overlay
@@ -105,9 +117,20 @@ export * from "./components/overlay/NavigationMenu";
105
117
  export * from "./components/overlay/Popover";
106
118
  export * from "./components/overlay/Sheet";
107
119
 
120
+ // review
121
+ export * from "./components/review/MarkupLayer";
122
+
123
+ // settings
124
+ export * from "./components/settings/HelpSteps";
125
+ export * from "./components/settings/IntegrationSettings";
126
+ export * from "./components/settings/TestRow";
127
+
108
128
  // utilities
129
+ export * from "./components/utilities/BrandMark";
130
+ export * from "./components/utilities/Icon";
109
131
  export * from "./components/utilities/Image";
110
132
  export * from "./components/utilities/OpenInChat";
133
+ export * from "./components/utilities/RotatingTagline";
111
134
 
112
135
  // voice
113
136
  export * from "./components/voice/AudioPlayer";
package/dist/index.js CHANGED
@@ -12,11 +12,15 @@ import { Citation, Sources } from "./components/ai/Sources.js";
12
12
  import { Suggestion, Suggestions } from "./components/ai/Suggestion.js";
13
13
  import { Task } from "./components/ai/Task.js";
14
14
  import { ToolCall } from "./components/ai/ToolCall.js";
15
+ import { AccountControl } from "./components/auth/AccountControl.js";
16
+ import { AuthDialog } from "./components/auth/AuthDialog.js";
17
+ import { SignInPage } from "./components/auth/SignInPage.js";
15
18
  import { Button } from "./components/buttons/Button.js";
16
19
  import { ButtonGroup } from "./components/buttons/ButtonGroup.js";
17
20
  import { IconButton } from "./components/buttons/IconButton.js";
18
21
  import { CodeBlock } from "./components/chat/CodeBlock.js";
19
22
  import { Composer } from "./components/chat/Composer.js";
23
+ import { ConversationThread } from "./components/chat/ConversationThread.js";
20
24
  import { Message } from "./components/chat/Message.js";
21
25
  import { Agent } from "./components/code/Agent.js";
22
26
  import { Artifact } from "./components/code/Artifact.js";
@@ -48,6 +52,7 @@ import { Pagination } from "./components/display/Pagination.js";
48
52
  import { Progress } from "./components/display/Progress.js";
49
53
  import { Separator } from "./components/display/Separator.js";
50
54
  import { Skeleton } from "./components/display/Skeleton.js";
55
+ import { StatusPill } from "./components/display/StatusPill.js";
51
56
  import { Table } from "./components/display/Table.js";
52
57
  import { Tabs } from "./components/display/Tabs.js";
53
58
  import { Prose, Text, Typography } from "./components/display/Typography.js";
@@ -67,14 +72,19 @@ import { InputGroup } from "./components/inputs/InputGroup.js";
67
72
  import { InputOTP } from "./components/inputs/InputOTP.js";
68
73
  import { Label } from "./components/inputs/Label.js";
69
74
  import { RadioGroup } from "./components/inputs/RadioGroup.js";
75
+ import { SecretField } from "./components/inputs/SecretField.js";
70
76
  import { Select } from "./components/inputs/Select.js";
71
77
  import { Slider } from "./components/inputs/Slider.js";
72
78
  import { Switch } from "./components/inputs/Switch.js";
73
79
  import { Textarea } from "./components/inputs/Textarea.js";
74
80
  import { Toggle, ToggleGroup } from "./components/inputs/Toggle.js";
81
+ import { AppShell } from "./components/layout/AppShell.js";
75
82
  import { AspectRatio } from "./components/layout/AspectRatio.js";
83
+ import { DesignerShell } from "./components/layout/DesignerShell.js";
84
+ import { DocsLayout } from "./components/layout/DocsLayout.js";
76
85
  import { Resizable } from "./components/layout/Resizable.js";
77
86
  import { ScrollArea } from "./components/layout/ScrollArea.js";
87
+ import { SettingsPage } from "./components/layout/SettingsPage.js";
78
88
  import { Sidebar } from "./components/layout/Sidebar.js";
79
89
  import { AlertDialog } from "./components/overlay/AlertDialog.js";
80
90
  import { Command } from "./components/overlay/Command.js";
@@ -85,8 +95,15 @@ import { Menubar } from "./components/overlay/Menubar.js";
85
95
  import { NavigationMenu } from "./components/overlay/NavigationMenu.js";
86
96
  import { Popover } from "./components/overlay/Popover.js";
87
97
  import { Sheet } from "./components/overlay/Sheet.js";
98
+ import { MarkupLayer } from "./components/review/MarkupLayer.js";
99
+ import { HelpSteps } from "./components/settings/HelpSteps.js";
100
+ import { IntegrationSettings } from "./components/settings/IntegrationSettings.js";
101
+ import { TestRow } from "./components/settings/TestRow.js";
102
+ import { BrandMark } from "./components/utilities/BrandMark.js";
103
+ import { Icon } from "./components/utilities/Icon.js";
88
104
  import { Image } from "./components/utilities/Image.js";
89
105
  import { OpenInChat } from "./components/utilities/OpenInChat.js";
106
+ import { RotatingTagline } from "./components/utilities/RotatingTagline.js";
90
107
  import { AudioPlayer } from "./components/voice/AudioPlayer.js";
91
108
  import { MicSelector } from "./components/voice/MicSelector.js";
92
109
  import { Persona } from "./components/voice/Persona.js";
@@ -96,16 +113,20 @@ import { VoiceSelector } from "./components/voice/VoiceSelector.js";
96
113
  import { Canvas, Connection, Controls, Edge, Flow, Node, Panel, Toolbar } from "./components/workflow/Flow.js";
97
114
  export {
98
115
  Accordion,
116
+ AccountControl,
99
117
  Agent,
100
118
  Alert,
101
119
  AlertDialog,
120
+ AppShell,
102
121
  Artifact,
103
122
  AspectRatio,
104
123
  Attachments,
105
124
  AudioPlayer,
125
+ AuthDialog,
106
126
  Avatar,
107
127
  Badge,
108
128
  BarChart,
129
+ BrandMark,
109
130
  Breadcrumb,
110
131
  Button,
111
132
  ButtonGroup,
@@ -129,9 +150,12 @@ export {
129
150
  ContextMenu,
130
151
  Controls,
131
152
  Conversation,
153
+ ConversationThread,
132
154
  DataTable,
133
155
  DatePicker,
156
+ DesignerShell,
134
157
  Dialog,
158
+ DocsLayout,
135
159
  DropdownMenu,
136
160
  Edge,
137
161
  Empty,
@@ -142,17 +166,21 @@ export {
142
166
  Flow,
143
167
  Form,
144
168
  FormActions,
169
+ HelpSteps,
145
170
  HoverCard,
171
+ Icon,
146
172
  IconButton,
147
173
  Image,
148
174
  Input,
149
175
  InputGroup,
150
176
  InputOTP,
177
+ IntegrationSettings,
151
178
  Item,
152
179
  JSXPreview,
153
180
  Kbd,
154
181
  Label,
155
182
  LineChart,
183
+ MarkupLayer,
156
184
  Menubar,
157
185
  Message,
158
186
  MicSelector,
@@ -172,14 +200,18 @@ export {
172
200
  RadioGroup,
173
201
  Reasoning,
174
202
  Resizable,
203
+ RotatingTagline,
175
204
  Sandbox,
176
205
  SchemaDisplay,
177
206
  ScrollArea,
207
+ SecretField,
178
208
  Select,
179
209
  Separator,
210
+ SettingsPage,
180
211
  Sheet,
181
212
  Shimmer,
182
213
  Sidebar,
214
+ SignInPage,
183
215
  Skeleton,
184
216
  Slider,
185
217
  Snippet,
@@ -187,6 +219,7 @@ export {
187
219
  SpeechInput,
188
220
  Spinner,
189
221
  StackTrace,
222
+ StatusPill,
190
223
  Suggestion,
191
224
  Suggestions,
192
225
  Switch,
@@ -195,6 +228,7 @@ export {
195
228
  Task,
196
229
  Terminal,
197
230
  TestResults,
231
+ TestRow,
198
232
  Text,
199
233
  Textarea,
200
234
  Toast,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/dist/styles.css CHANGED
@@ -9,33 +9,33 @@
9
9
  /* src/tokens/colors.css */
10
10
  /* ============================================================
11
11
  Agentaily — color system
12
- Monochrome-first. Dark is the default theme (:root);
13
- light theme is scoped under [data-theme="light"].
12
+ Monochrome-first. Light is the default theme (:root);
13
+ dark theme is scoped under [data-theme="dark"].
14
14
  The "accent" is the inverted foreground — no hue, all contrast.
15
15
  ============================================================ */
16
16
  :root {
17
- /* ---- base scale: ink (dark theme) ---- */
18
- --bg-0: #0A0A0B; /* page canvas */
19
- --bg-1: #111113; /* raised panels, sidebar */
20
- --bg-2: #18181B; /* cards, composer */
21
- --bg-3: #212124; /* hover fills, code blocks */
22
- --bg-overlay: rgba(10, 10, 11, 0.72);
23
- --fg-1: #F4F4F5; /* primary text */
24
- --fg-2: #A1A1AA; /* secondary text */
25
- --fg-3: #63636B; /* faint text, placeholders */
26
- --line-1: rgba(255, 255, 255, 0.08); /* hairline borders */
27
- --line-2: rgba(255, 255, 255, 0.14); /* strong borders */
17
+ /* ---- base scale: paper (light theme) ---- */
18
+ --bg-0: #ffffff; /* page canvas */
19
+ --bg-1: #fafafa; /* raised panels, sidebar */
20
+ --bg-2: #f4f4f5; /* cards, composer */
21
+ --bg-3: #e9e9eb; /* hover fills, code blocks */
22
+ --bg-overlay: rgba(250, 250, 250, 0.72);
23
+ --fg-1: #111113; /* primary text */
24
+ --fg-2: #5d5d66; /* secondary text */
25
+ --fg-3: #9c9ca3; /* faint text, placeholders */
26
+ --line-1: rgba(17, 17, 19, 0.09); /* hairline borders */
27
+ --line-2: rgba(17, 17, 19, 0.16); /* strong borders */
28
28
  /* ---- accent: pure mono inversion ---- */
29
- --accent: #FAFAFA; /* filled buttons, active states */
30
- --accent-fg: #0A0A0B; /* text on accent */
31
- --accent-hover: #E4E4E7;
29
+ --accent: #111113; /* filled buttons, active states */
30
+ --accent-fg: #fafafa; /* text on accent */
31
+ --accent-hover: #2a2a2e;
32
32
  /* ---- semantic (kept desaturated, used sparingly) ---- */
33
- --ok: #3ECF8E;
34
- --warn: #E8B339;
35
- --danger: #E5484D;
36
- --ok-dim: rgba(62, 207, 142, 0.12);
37
- --warn-dim: rgba(232, 179, 57, 0.12);
38
- --danger-dim: rgba(229, 72, 77, 0.12);
33
+ --ok: #1c9e68;
34
+ --warn: #b07d14;
35
+ --danger: #d33338;
36
+ --ok-dim: rgba(28, 158, 104, 0.1);
37
+ --warn-dim: rgba(176, 125, 20, 0.12);
38
+ --danger-dim: rgba(211, 51, 56, 0.08);
39
39
  /* ---- semantic aliases ---- */
40
40
  --surface-page: var(--bg-0);
41
41
  --surface-panel: var(--bg-1);
@@ -46,37 +46,37 @@
46
46
  --text-faint: var(--fg-3);
47
47
  --border-default: var(--line-1);
48
48
  --border-strong: var(--line-2);
49
- --focus-ring: rgba(250, 250, 250, 0.55);
50
- --focus-soft: rgba(250, 250, 250, 0.13); /* @kind other */ /* glow ring on field focus */
51
- /* dot-grid motif background */
52
- --dot-grid: radial-gradient(rgba(255, 255, 255, 0.07) 1px, transparent 1px); /* @kind other */
53
- color-scheme: dark;
54
- }
55
- [data-theme="light"] {
56
- --bg-0: #FFFFFF;
57
- --bg-1: #FAFAFA;
58
- --bg-2: #F4F4F5;
59
- --bg-3: #E9E9EB;
60
- --bg-overlay: rgba(250, 250, 250, 0.72);
61
- --fg-1: #111113;
62
- --fg-2: #5D5D66;
63
- --fg-3: #9C9CA3;
64
- --line-1: rgba(17, 17, 19, 0.09);
65
- --line-2: rgba(17, 17, 19, 0.16);
66
- --accent: #111113;
67
- --accent-fg: #FAFAFA;
68
- --accent-hover: #2A2A2E;
69
- --ok: #1C9E68;
70
- --warn: #B07D14;
71
- --danger: #D33338;
72
- --ok-dim: rgba(28, 158, 104, 0.1);
73
- --warn-dim: rgba(176, 125, 20, 0.12);
74
- --danger-dim: rgba(211, 51, 56, 0.08);
75
49
  --focus-ring: rgba(17, 17, 19, 0.45);
76
- --focus-soft: rgba(17, 17, 19, 0.10); /* @kind other */
50
+ --focus-soft: rgba(17, 17, 19, 0.1); /* @kind other */ /* glow ring on field focus */
51
+ /* dot-grid motif background */
77
52
  --dot-grid: radial-gradient(rgba(17, 17, 19, 0.1) 1px, transparent 1px); /* @kind other */
78
53
  color-scheme: light;
79
54
  }
55
+ [data-theme="dark"] {
56
+ --bg-0: #0a0a0b;
57
+ --bg-1: #111113;
58
+ --bg-2: #18181b;
59
+ --bg-3: #212124;
60
+ --bg-overlay: rgba(10, 10, 11, 0.72);
61
+ --fg-1: #f4f4f5;
62
+ --fg-2: #a1a1aa;
63
+ --fg-3: #63636b;
64
+ --line-1: rgba(255, 255, 255, 0.08);
65
+ --line-2: rgba(255, 255, 255, 0.14);
66
+ --accent: #fafafa;
67
+ --accent-fg: #0a0a0b;
68
+ --accent-hover: #e4e4e7;
69
+ --ok: #3ecf8e;
70
+ --warn: #e8b339;
71
+ --danger: #e5484d;
72
+ --ok-dim: rgba(62, 207, 142, 0.12);
73
+ --warn-dim: rgba(232, 179, 57, 0.12);
74
+ --danger-dim: rgba(229, 72, 77, 0.12);
75
+ --focus-ring: rgba(250, 250, 250, 0.55);
76
+ --focus-soft: rgba(250, 250, 250, 0.13); /* @kind other */
77
+ --dot-grid: radial-gradient(rgba(255, 255, 255, 0.07) 1px, transparent 1px); /* @kind other */
78
+ color-scheme: dark;
79
+ }
80
80
  /* src/tokens/typography.css */
81
81
  /* ============================================================
82
82
  Agentaily — typography
@@ -131,7 +131,9 @@
131
131
  /* layout */
132
132
  --container-max: 1120px;
133
133
  --sidebar-w: 272px;
134
- --thread-max: 760px; /* chat reading column */
134
+ --thread-max: 760px; /* chat reading column */
135
+ --topbar-h: 52px; /* app top bar (brand / crumb / actions) */
136
+ --bar-h: 48px; /* pane sub-bar (chat header, preview header, toolbars) — keep panes aligned */
135
137
  }
136
138
  /* src/tokens/effects.css */
137
139
  /* ============================================================
@@ -141,28 +143,29 @@
141
143
  ============================================================ */
142
144
  :root {
143
145
  /* radii — kept deliberately small */
144
- --radius-1: 2px; /* chips, kbd, code tags */
145
- --radius-2: 4px; /* buttons, inputs */
146
- --radius-3: 8px; /* cards, message bubbles, dialogs */
146
+ --radius-1: 2px; /* chips, kbd, code tags */
147
+ --radius-2: 4px; /* buttons, inputs */
148
+ --radius-3: 8px; /* cards, message bubbles, dialogs */
147
149
  --radius-full: 999px;
148
- /* shadows — dark theme leans on borders, not shadows */
149
- --shadow-1: 0 1px 2px rgba(0, 0, 0, 0.25);
150
- --shadow-2: 0 4px 16px rgba(0, 0, 0, 0.35);
151
- --shadow-3: 0 16px 48px rgba(0, 0, 0, 0.5);
150
+ /* shadows — light theme uses soft ambient shadows */
151
+ --shadow-1: 0 1px 2px rgba(17, 17, 19, 0.06);
152
+ --shadow-2: 0 4px 16px rgba(17, 17, 19, 0.08);
153
+ --shadow-3: 0 16px 48px rgba(17, 17, 19, 0.14);
152
154
  /* motion */
153
155
  --ease-out: cubic-bezier(0.2, 0, 0, 1); /* @kind other */
154
- --dur-1: 120ms; /* @kind other */ /* hovers, presses */
155
- --dur-2: 200ms; /* @kind other */ /* reveals, toggles */
156
- --dur-3: 320ms; /* @kind other */ /* dialogs, page-level */
156
+ --dur-1: 120ms; /* @kind other */ /* hovers, presses */
157
+ --dur-2: 200ms; /* @kind other */ /* reveals, toggles */
158
+ --dur-3: 320ms; /* @kind other */ /* dialogs, page-level */
157
159
  /* focus */
158
160
  --ring: 0 0 0 2px var(--surface-page), 0 0 0 4px var(--focus-ring);
159
161
  /* blur */
160
162
  --blur-overlay: 12px;
161
163
  }
162
- [data-theme="light"] {
163
- --shadow-1: 0 1px 2px rgba(17, 17, 19, 0.06);
164
- --shadow-2: 0 4px 16px rgba(17, 17, 19, 0.08);
165
- --shadow-3: 0 16px 48px rgba(17, 17, 19, 0.14);
164
+ [data-theme="dark"] {
165
+ /* dark theme leans on borders, not shadows */
166
+ --shadow-1: 0 1px 2px rgba(0, 0, 0, 0.25);
167
+ --shadow-2: 0 4px 16px rgba(0, 0, 0, 0.35);
168
+ --shadow-3: 0 16px 48px rgba(0, 0, 0, 0.5);
166
169
  }
167
170
  /* src/tokens/base.css */
168
171
  /* ============================================================
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@agentaily/design-system",
3
- "version": "0.2.0",
4
- "description": "Agentaily design system — dark-first monochrome React component library (116 components) + Storybook.",
3
+ "version": "0.4.0",
4
+ "description": "Agentaily design system — light-first monochrome React component library (113 components) + Storybook.",
5
5
  "type": "module",
6
6
  "license": "UNLICENSED",
7
7
  "author": "Agentaily",