Skip to content

Commit 04a4b08

Browse files
committed
feat(webapp): AI agent storybook experiments and ask-ai button variant
Admin-only storybook page exploring an animated agent identity: a resting dot logo that animates while the agent thinks. Native canvas, no dependencies. Adds a reserved ask-ai Button variant.
1 parent be45cf9 commit 04a4b08

6 files changed

Lines changed: 1900 additions & 0 deletions

File tree

apps/webapp/app/components/primitives/Buttons.tsx

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,16 @@ const theme = {
9797
"border-text-dimmed/40 text-text-dimmed group-hover/button:text-text-bright group-hover/button:border-text-dimmed",
9898
icon: "text-blue-500",
9999
},
100+
// Reserved for the AI agent's "Ask AI" affordance: secondary styling with a
101+
// softened trigger-green border.
102+
"ask-ai": {
103+
textColor: "text-text-bright transition group-disabled/button:text-text-dimmed/80",
104+
button:
105+
"bg-secondary border border-[#41FF54]/25 group-hover/button:bg-surface-control group-hover/button:border-[#41FF54]/40 group-disabled/button:bg-secondary group-disabled/button:opacity-60 group-disabled/button:pointer-events-none",
106+
shortcut:
107+
"border-text-dimmed/40 text-text-dimmed group-hover/button:text-text-bright group-hover/button:border-text-dimmed",
108+
icon: "text-text-bright",
109+
},
100110
};
101111

102112
type Theme = keyof typeof theme;
@@ -112,6 +122,14 @@ function createVariant(sizeName: Size, themeName: Theme) {
112122
};
113123
}
114124

125+
// The ask-ai button always leads with the square agent logo, so its padding is
126+
// tuned per size around it: small = 16px logo, 4px left / 6px right; medium
127+
// 32/16 -> 8px; large 40/20 -> 10px.
128+
function createAskAiVariant(sizeName: Size, opticalPadding: string) {
129+
const base = createVariant(sizeName, "ask-ai");
130+
return { ...base, button: cn(base.button, opticalPadding) };
131+
}
132+
115133
const variant = {
116134
"primary/small": createVariant("small", "primary"),
117135
"primary/medium": createVariant("medium", "primary"),
@@ -137,6 +155,9 @@ const variant = {
137155
"docs/medium": createVariant("medium", "docs"),
138156
"docs/large": createVariant("large", "docs"),
139157
"docs/extra-large": createVariant("extra-large", "docs"),
158+
"ask-ai/small": createAskAiVariant("small", "px-1 pr-1.5"),
159+
"ask-ai/medium": createAskAiVariant("medium", "px-2"),
160+
"ask-ai/large": createAskAiVariant("large", "px-2.5"),
140161
"menu-item": {
141162
textColor: "text-text-bright px-1",
142163
button:

0 commit comments

Comments
 (0)