@alpic-ai/ui 0.0.0-dev.f8c735b → 0.0.0-dev.f8dc346
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.
- package/dist/components/accordion-card.d.mts +1 -1
- package/dist/components/accordion.d.mts +1 -1
- package/dist/components/alert.d.mts +2 -2
- package/dist/components/attachment-tile.mjs +1 -1
- package/dist/components/avatar.d.mts +2 -2
- package/dist/components/badge.d.mts +1 -1
- package/dist/components/breadcrumb.d.mts +1 -1
- package/dist/components/button.d.mts +4 -2
- package/dist/components/button.mjs +20 -6
- package/dist/components/card.d.mts +1 -1
- package/dist/components/checkbox.d.mts +1 -1
- package/dist/components/collapsible.d.mts +1 -1
- package/dist/components/combobox.d.mts +1 -1
- package/dist/components/combobox.mjs +1 -1
- package/dist/components/command.d.mts +1 -1
- package/dist/components/copyable.d.mts +1 -1
- package/dist/components/copyable.mjs +1 -1
- package/dist/components/description-list.d.mts +1 -1
- package/dist/components/dialog.d.mts +1 -1
- package/dist/components/dropdown-menu.d.mts +1 -1
- package/dist/components/form.d.mts +1 -1
- package/dist/components/form.mjs +1 -1
- package/dist/components/github-button.d.mts +13 -0
- package/dist/components/github-button.mjs +24 -0
- package/dist/components/input-group.d.mts +1 -1
- package/dist/components/input.d.mts +1 -1
- package/dist/components/input.mjs +1 -1
- package/dist/components/label.d.mts +1 -1
- package/dist/components/pagination.d.mts +1 -1
- package/dist/components/popover.d.mts +1 -1
- package/dist/components/radio-group.d.mts +1 -1
- package/dist/components/scroll-area.d.mts +1 -1
- package/dist/components/select.d.mts +1 -1
- package/dist/components/separator.d.mts +1 -1
- package/dist/components/sheet.d.mts +1 -1
- package/dist/components/sidebar.d.mts +1 -1
- package/dist/components/sidebar.mjs +63 -19
- package/dist/components/sonner.d.mts +1 -1
- package/dist/components/spinner.d.mts +2 -2
- package/dist/components/status-dot.d.mts +1 -1
- package/dist/components/switch.d.mts +1 -1
- package/dist/components/table.d.mts +1 -1
- package/dist/components/tabs.d.mts +1 -1
- package/dist/components/tabs.mjs +1 -1
- package/dist/components/textarea.d.mts +1 -1
- package/dist/components/textarea.mjs +1 -1
- package/dist/components/toggle-group.d.mts +1 -1
- package/dist/components/toggle-group.mjs +1 -1
- package/dist/components/tooltip-icon-button.mjs +1 -1
- package/dist/components/tooltip.d.mts +1 -1
- package/dist/components/typography.d.mts +1 -1
- package/package.json +8 -8
- package/src/components/button.tsx +13 -9
- package/src/components/github-button.tsx +34 -0
- package/src/components/sidebar.tsx +59 -20
- package/src/stories/button.stories.tsx +23 -1
- package/src/stories/sidebar.stories.tsx +6 -3
- package/src/styles/tokens.css +201 -0
package/src/styles/tokens.css
CHANGED
|
@@ -39,6 +39,9 @@
|
|
|
39
39
|
|
|
40
40
|
--color-ring: #f22b79; /* Figma: focus-ring */
|
|
41
41
|
|
|
42
|
+
/* cta — decorative gradient accent, used with --color-primary in the CTA button ring */
|
|
43
|
+
--color-cta-accent: #6eece7; /* Figma: CTA border accent (cyan) */
|
|
44
|
+
|
|
42
45
|
/* sidebar */
|
|
43
46
|
--color-sidebar: #f8fafa; /* Figma: bg-secondary-subtle */
|
|
44
47
|
--color-sidebar-foreground: #3a4848; /* Figma: fg-secondary */
|
|
@@ -106,6 +109,8 @@
|
|
|
106
109
|
/* animations */
|
|
107
110
|
--animate-accordion-down: accordion-down 200ms ease-out;
|
|
108
111
|
--animate-accordion-up: accordion-up 200ms ease-out;
|
|
112
|
+
--animate-beacon-ring-core: beacon-ring-core 2.2s ease-in-out infinite;
|
|
113
|
+
--animate-beacon-ring-pulse: beacon-ring-pulse 2.2s ease-in-out infinite;
|
|
109
114
|
}
|
|
110
115
|
|
|
111
116
|
@keyframes accordion-down {
|
|
@@ -126,6 +131,186 @@
|
|
|
126
131
|
}
|
|
127
132
|
}
|
|
128
133
|
|
|
134
|
+
@keyframes beacon-ring-core {
|
|
135
|
+
0%,
|
|
136
|
+
100% {
|
|
137
|
+
opacity: 0.55;
|
|
138
|
+
transform: scale(0.98);
|
|
139
|
+
}
|
|
140
|
+
50% {
|
|
141
|
+
opacity: 0.85;
|
|
142
|
+
transform: scale(1.02);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
@keyframes beacon-ring-pulse {
|
|
147
|
+
0%,
|
|
148
|
+
100% {
|
|
149
|
+
opacity: 0.88;
|
|
150
|
+
transform: scale(1);
|
|
151
|
+
filter: drop-shadow(0 0 0 rgba(59, 130, 246, 0));
|
|
152
|
+
}
|
|
153
|
+
50% {
|
|
154
|
+
opacity: 1;
|
|
155
|
+
transform: scale(1.02);
|
|
156
|
+
filter: drop-shadow(0 0 8px rgba(59, 130, 246, 0.24));
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/* ─── CTA button — animated conic gradient ring ───────────────────────────── */
|
|
161
|
+
|
|
162
|
+
@property --cta-angle {
|
|
163
|
+
syntax: "<angle>";
|
|
164
|
+
inherits: false;
|
|
165
|
+
initial-value: 135deg;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
@keyframes cta-rotate {
|
|
169
|
+
to {
|
|
170
|
+
--cta-angle: 495deg;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
.button-cta {
|
|
175
|
+
position: relative;
|
|
176
|
+
isolation: isolate;
|
|
177
|
+
/* light mode: whisper-of-gradient surface tint + soft rose drop-shadow */
|
|
178
|
+
background-image: linear-gradient(
|
|
179
|
+
135deg,
|
|
180
|
+
color-mix(in oklab, var(--color-primary) 5%, transparent) 0%,
|
|
181
|
+
color-mix(in oklab, var(--color-cta-accent) 5%, transparent) 100%
|
|
182
|
+
);
|
|
183
|
+
box-shadow:
|
|
184
|
+
0 6px 24px -10px color-mix(in oklab, var(--color-primary) 38%, transparent),
|
|
185
|
+
0 2px 6px -4px color-mix(in oklab, var(--color-cta-accent) 30%, transparent);
|
|
186
|
+
transition:
|
|
187
|
+
box-shadow 400ms ease,
|
|
188
|
+
transform 300ms ease,
|
|
189
|
+
filter 300ms ease;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
@media (hover: hover) {
|
|
193
|
+
.button-cta:hover {
|
|
194
|
+
box-shadow:
|
|
195
|
+
0 10px 30px -8px color-mix(in oklab, var(--color-primary) 52%, transparent),
|
|
196
|
+
0 3px 10px -3px color-mix(in oklab, var(--color-cta-accent) 40%, transparent);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/* dark mode: solid inverted surface, no tint or shadow — let the halo do the work */
|
|
201
|
+
.dark .button-cta {
|
|
202
|
+
background-image: none;
|
|
203
|
+
box-shadow: none;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
.button-cta::before,
|
|
207
|
+
.button-cta::after {
|
|
208
|
+
content: "";
|
|
209
|
+
position: absolute;
|
|
210
|
+
inset: 0;
|
|
211
|
+
border-radius: inherit;
|
|
212
|
+
pointer-events: none;
|
|
213
|
+
/* Always "running" in browser terms, but paused at rest — freezes at current
|
|
214
|
+
angle on unhover instead of snapping back. */
|
|
215
|
+
animation: cta-rotate 3.2s linear infinite;
|
|
216
|
+
animation-play-state: paused;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/* Gradient ring (masked so only the border shows) */
|
|
220
|
+
.button-cta::before {
|
|
221
|
+
padding: 1.5px;
|
|
222
|
+
background: conic-gradient(
|
|
223
|
+
from var(--cta-angle),
|
|
224
|
+
var(--color-cta-accent) 0deg,
|
|
225
|
+
var(--color-primary) 150deg,
|
|
226
|
+
var(--color-cta-accent) 300deg,
|
|
227
|
+
var(--color-cta-accent) 360deg
|
|
228
|
+
);
|
|
229
|
+
-webkit-mask:
|
|
230
|
+
linear-gradient(#000 0 0) content-box,
|
|
231
|
+
linear-gradient(#000 0 0);
|
|
232
|
+
-webkit-mask-composite: xor;
|
|
233
|
+
mask-composite: exclude;
|
|
234
|
+
transition: filter 400ms ease;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
/* Blurred glow halo behind the button — subtle in light, bolder in dark */
|
|
238
|
+
.button-cta::after {
|
|
239
|
+
z-index: -1;
|
|
240
|
+
background: conic-gradient(
|
|
241
|
+
from var(--cta-angle),
|
|
242
|
+
var(--color-cta-accent) 0deg,
|
|
243
|
+
var(--color-primary) 150deg,
|
|
244
|
+
var(--color-cta-accent) 300deg,
|
|
245
|
+
var(--color-cta-accent) 360deg
|
|
246
|
+
);
|
|
247
|
+
filter: blur(12px);
|
|
248
|
+
opacity: 0.05;
|
|
249
|
+
transition: opacity 400ms ease;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
.dark .button-cta::after {
|
|
253
|
+
opacity: 0.14;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
@media (hover: hover) {
|
|
257
|
+
.button-cta:hover::before,
|
|
258
|
+
.button-cta:hover::after {
|
|
259
|
+
animation-play-state: running;
|
|
260
|
+
}
|
|
261
|
+
.button-cta:hover::before {
|
|
262
|
+
filter: saturate(1.15) brightness(1.05);
|
|
263
|
+
}
|
|
264
|
+
.button-cta:hover::after {
|
|
265
|
+
opacity: 0.18;
|
|
266
|
+
}
|
|
267
|
+
.dark .button-cta:hover::after {
|
|
268
|
+
opacity: 0.32;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
.button-cta:focus-visible::before,
|
|
273
|
+
.button-cta:focus-visible::after {
|
|
274
|
+
animation-play-state: running;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
.button-cta:disabled::before,
|
|
278
|
+
.button-cta:disabled::after,
|
|
279
|
+
[aria-busy="true"].button-cta::before,
|
|
280
|
+
[aria-busy="true"].button-cta::after {
|
|
281
|
+
animation-play-state: paused;
|
|
282
|
+
}
|
|
283
|
+
.button-cta:disabled::after {
|
|
284
|
+
opacity: 0;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
@media (prefers-reduced-motion: reduce) {
|
|
288
|
+
.button-cta::before,
|
|
289
|
+
.button-cta::after {
|
|
290
|
+
animation: none;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
/* Icon slide on hover (applied to [data-cta-icon-trailing]) */
|
|
295
|
+
.button-cta [data-cta-icon-trailing] {
|
|
296
|
+
transition: transform 300ms cubic-bezier(0.2, 0.8, 0.2, 1);
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
@media (hover: hover) {
|
|
300
|
+
.button-cta:hover [data-cta-icon-trailing] {
|
|
301
|
+
transform: translateX(2px);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
@media (prefers-reduced-motion: reduce) {
|
|
306
|
+
.button-cta [data-cta-icon-trailing] {
|
|
307
|
+
transition: none;
|
|
308
|
+
}
|
|
309
|
+
.button-cta:hover [data-cta-icon-trailing] {
|
|
310
|
+
transform: none;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
|
|
129
314
|
/* ─── Dark mode ───────────────────────────────────────────────────────────── */
|
|
130
315
|
|
|
131
316
|
.dark {
|
|
@@ -163,6 +348,9 @@
|
|
|
163
348
|
|
|
164
349
|
--color-ring: #f22b79; /* Figma: focus-ring */
|
|
165
350
|
|
|
351
|
+
/* cta — decorative gradient accent, used with --color-primary in the CTA button ring */
|
|
352
|
+
--color-cta-accent: #6eece7; /* Figma: CTA border accent (cyan) */
|
|
353
|
+
|
|
166
354
|
/* sidebar */
|
|
167
355
|
--color-sidebar: #0c1c1c; /* Figma: bg-secondary */
|
|
168
356
|
--color-sidebar-foreground: #90a4a4; /* Figma: fg-secondary */
|
|
@@ -221,6 +409,14 @@
|
|
|
221
409
|
|
|
222
410
|
@custom-variant dark (&:where(.dark, .dark *));
|
|
223
411
|
|
|
412
|
+
:root {
|
|
413
|
+
--gradient-sidebar: linear-gradient(0deg, #c9e2e280 0%, #ffffff 70%); /* Figma: bg-nav-gradiant-light */
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
.dark {
|
|
417
|
+
--gradient-sidebar: linear-gradient(0deg, #213535 0%, #121e1e 70%); /* Figma: bg-nav-gradiant-dark */
|
|
418
|
+
}
|
|
419
|
+
|
|
224
420
|
@layer base {
|
|
225
421
|
* {
|
|
226
422
|
@apply border-border shadow-shadow;
|
|
@@ -274,6 +470,11 @@
|
|
|
274
470
|
|
|
275
471
|
/* ─── Type preset utilities ───────────────────────────────────────────────── */
|
|
276
472
|
|
|
473
|
+
@utility bg-sidebar-surface {
|
|
474
|
+
background-color: var(--color-background);
|
|
475
|
+
background-image: var(--gradient-sidebar);
|
|
476
|
+
}
|
|
477
|
+
|
|
277
478
|
@utility type-display-2xl {
|
|
278
479
|
font-family: var(--font-display);
|
|
279
480
|
font-size: var(--font-size-display-2xl);
|