@alpic-ai/ui 0.0.0-dev.d4f6edf → 0.0.0-dev.d783e71

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 (61) hide show
  1. package/dist/components/accordion-card.d.mts +1 -1
  2. package/dist/components/accordion.d.mts +1 -1
  3. package/dist/components/alert.d.mts +2 -2
  4. package/dist/components/attachment-tile.mjs +1 -1
  5. package/dist/components/avatar.d.mts +2 -2
  6. package/dist/components/badge.d.mts +1 -1
  7. package/dist/components/breadcrumb.d.mts +1 -1
  8. package/dist/components/button.d.mts +5 -3
  9. package/dist/components/button.mjs +20 -6
  10. package/dist/components/card.d.mts +1 -1
  11. package/dist/components/checkbox.d.mts +1 -1
  12. package/dist/components/collapsible.d.mts +1 -1
  13. package/dist/components/combobox.d.mts +1 -1
  14. package/dist/components/combobox.mjs +1 -1
  15. package/dist/components/command.d.mts +1 -1
  16. package/dist/components/copyable.d.mts +1 -1
  17. package/dist/components/copyable.mjs +1 -1
  18. package/dist/components/description-list.d.mts +1 -1
  19. package/dist/components/dialog.d.mts +1 -1
  20. package/dist/components/dropdown-menu.d.mts +2 -2
  21. package/dist/components/form.d.mts +1 -1
  22. package/dist/components/form.mjs +1 -1
  23. package/dist/components/github-button.d.mts +13 -0
  24. package/dist/components/github-button.mjs +24 -0
  25. package/dist/components/input-group.d.mts +1 -1
  26. package/dist/components/input.d.mts +1 -1
  27. package/dist/components/input.mjs +1 -1
  28. package/dist/components/label.d.mts +1 -1
  29. package/dist/components/pagination.d.mts +1 -1
  30. package/dist/components/popover.d.mts +1 -1
  31. package/dist/components/radio-group.d.mts +1 -1
  32. package/dist/components/scroll-area.d.mts +1 -1
  33. package/dist/components/select.d.mts +1 -1
  34. package/dist/components/separator.d.mts +1 -1
  35. package/dist/components/sheet.d.mts +1 -1
  36. package/dist/components/sidebar.d.mts +1 -1
  37. package/dist/components/sidebar.mjs +41 -12
  38. package/dist/components/skeleton.d.mts +1 -1
  39. package/dist/components/sonner.d.mts +1 -1
  40. package/dist/components/spinner.d.mts +1 -1
  41. package/dist/components/status-dot.d.mts +1 -1
  42. package/dist/components/switch.d.mts +1 -1
  43. package/dist/components/table.d.mts +1 -1
  44. package/dist/components/tabs.d.mts +2 -2
  45. package/dist/components/tabs.mjs +1 -1
  46. package/dist/components/textarea.d.mts +1 -1
  47. package/dist/components/textarea.mjs +1 -1
  48. package/dist/components/toggle-group.d.mts +1 -1
  49. package/dist/components/toggle-group.mjs +1 -1
  50. package/dist/components/tooltip-icon-button.mjs +1 -1
  51. package/dist/components/tooltip.d.mts +1 -1
  52. package/dist/components/typography.d.mts +1 -1
  53. package/package.json +6 -6
  54. package/src/components/button.tsx +13 -9
  55. package/src/components/combobox.tsx +18 -6
  56. package/src/components/github-button.tsx +34 -0
  57. package/src/components/sidebar.tsx +48 -10
  58. package/src/hooks/use-copy-to-clipboard.ts +6 -2
  59. package/src/stories/button.stories.tsx +23 -1
  60. package/src/stories/sidebar.stories.tsx +6 -3
  61. package/src/styles/tokens.css +173 -0
@@ -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 */
@@ -154,6 +157,160 @@
154
157
  }
155
158
  }
156
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
+
157
314
  /* ─── Dark mode ───────────────────────────────────────────────────────────── */
158
315
 
159
316
  .dark {
@@ -191,6 +348,9 @@
191
348
 
192
349
  --color-ring: #f22b79; /* Figma: focus-ring */
193
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
+
194
354
  /* sidebar */
195
355
  --color-sidebar: #0c1c1c; /* Figma: bg-secondary */
196
356
  --color-sidebar-foreground: #90a4a4; /* Figma: fg-secondary */
@@ -249,6 +409,14 @@
249
409
 
250
410
  @custom-variant dark (&:where(.dark, .dark *));
251
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
+
252
420
  @layer base {
253
421
  * {
254
422
  @apply border-border shadow-shadow;
@@ -302,6 +470,11 @@
302
470
 
303
471
  /* ─── Type preset utilities ───────────────────────────────────────────────── */
304
472
 
473
+ @utility bg-sidebar-surface {
474
+ background-color: var(--color-background);
475
+ background-image: var(--gradient-sidebar);
476
+ }
477
+
305
478
  @utility type-display-2xl {
306
479
  font-family: var(--font-display);
307
480
  font-size: var(--font-size-display-2xl);