tembro 4.0.0 → 4.1.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 (68) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/components/charts/charts.d.ts +16 -5
  3. package/dist/components/display/chat.cjs +1 -0
  4. package/dist/components/display/chat.d.ts +94 -0
  5. package/dist/components/display/chat.js +1 -0
  6. package/dist/components/display/index.d.ts +1 -0
  7. package/dist/components/display/kanban.d.ts +33 -1
  8. package/dist/components/layout/sidebar.d.ts +24 -2
  9. package/dist/components/modern/rich-text-editor.d.ts +13 -1
  10. package/dist/components/theme-provider.d.ts +19 -6
  11. package/dist/components/ui/badge/index.d.ts +8 -2
  12. package/dist/src/components/charts/charts.cjs +1 -1
  13. package/dist/src/components/charts/charts.js +343 -252
  14. package/dist/src/components/display/activity-feed.cjs +1 -1
  15. package/dist/src/components/display/activity-feed.js +4 -1
  16. package/dist/src/components/display/chat.cjs +1 -0
  17. package/dist/src/components/display/chat.js +372 -0
  18. package/dist/src/components/display/index.cjs +1 -1
  19. package/dist/src/components/display/index.js +17 -16
  20. package/dist/src/components/display/kanban.cjs +1 -1
  21. package/dist/src/components/display/kanban.js +321 -176
  22. package/dist/src/components/display/timeline.cjs +1 -1
  23. package/dist/src/components/display/timeline.js +5 -5
  24. package/dist/src/components/inputs/tag-input.cjs +1 -1
  25. package/dist/src/components/inputs/tag-input.js +6 -2
  26. package/dist/src/components/layout/index.cjs +1 -1
  27. package/dist/src/components/layout/index.js +4 -4
  28. package/dist/src/components/layout/public.cjs +1 -1
  29. package/dist/src/components/layout/public.js +4 -4
  30. package/dist/src/components/layout/sidebar.cjs +1 -1
  31. package/dist/src/components/layout/sidebar.js +326 -228
  32. package/dist/src/components/layout/workspace-layout.cjs +1 -1
  33. package/dist/src/components/layout/workspace-layout.js +3 -3
  34. package/dist/src/components/modern/rich-text-editor.cjs +1 -1
  35. package/dist/src/components/modern/rich-text-editor.js +216 -89
  36. package/dist/src/components/theme-provider.cjs +1 -1
  37. package/dist/src/components/theme-provider.js +58 -36
  38. package/dist/src/components/ui/badge/index.cjs +1 -1
  39. package/dist/src/components/ui/badge/index.js +59 -47
  40. package/dist/src/components/ui/input/clearable.cjs +1 -1
  41. package/dist/src/components/ui/input/clearable.js +5 -2
  42. package/dist/src/components/ui/input/primitive.cjs +1 -1
  43. package/dist/src/components/ui/input/primitive.js +1 -1
  44. package/dist/src/index.cjs +1 -1
  45. package/dist/src/index.js +87 -86
  46. package/dist/src/public-component-surface.cjs +1 -1
  47. package/dist/src/public-component-surface.js +5 -0
  48. package/package.json +1 -1
  49. package/packages/cli/dist/index.cjs +3 -3
  50. package/packages/cli/vendor/src/components/charts/charts.tsx +55 -15
  51. package/packages/cli/vendor/src/components/display/activity-feed.tsx +1 -1
  52. package/packages/cli/vendor/src/components/display/chat.tsx +237 -0
  53. package/packages/cli/vendor/src/components/display/index.ts +1 -0
  54. package/packages/cli/vendor/src/components/display/kanban.tsx +219 -72
  55. package/packages/cli/vendor/src/components/display/timeline.tsx +10 -10
  56. package/packages/cli/vendor/src/components/inputs/tag-input.tsx +3 -2
  57. package/packages/cli/vendor/src/components/layout/sidebar.tsx +212 -51
  58. package/packages/cli/vendor/src/components/layout/workspace-layout.tsx +3 -3
  59. package/packages/cli/vendor/src/components/modern/rich-text-editor.tsx +115 -32
  60. package/packages/cli/vendor/src/components/theme-provider.tsx +82 -36
  61. package/packages/cli/vendor/src/components/ui/badge/index.tsx +29 -8
  62. package/packages/cli/vendor/src/components/ui/input/clearable.tsx +2 -2
  63. package/packages/cli/vendor/src/components/ui/input/primitive.tsx +1 -1
  64. package/packages/cli/vendor/src/public-component-surface.ts +1 -0
  65. package/packages/cli/vendor/templates/showcase/src/showcase/layout/HeroSection.tsx +2 -2
  66. package/packages/cli/vendor/templates/showcase/src/showcase/layout/WorkbenchSidebar.tsx +1 -1
  67. package/packages/cli/vendor/templates/styles/globals.css +136 -33
  68. package/registry.json +3 -1
@@ -52,7 +52,8 @@
52
52
  }
53
53
 
54
54
  :root,
55
- .light {
55
+ .light,
56
+ [data-theme="light"] {
56
57
  /* Edit these first to reshape the whole library. */
57
58
  --background: oklch(0.988 0.004 95);
58
59
  --foreground: oklch(0.238 0.02 255);
@@ -128,17 +129,17 @@
128
129
  --aui-ease-standard: cubic-bezier(0.2, 0, 0, 1);
129
130
  --aui-disabled-opacity: 0.52;
130
131
  --aui-shadow-xs: 0 1px 2px oklch(0.24 0.02 255 / 5%);
131
- --aui-shadow-sm: 0 1px 3px oklch(0.24 0.02 255 / 7%);
132
- --aui-shadow-md: 0 8px 24px oklch(0.24 0.02 255 / 8%);
133
- --aui-shadow-lg: 0 16px 36px oklch(0.24 0.02 255 / 10%);
132
+ --aui-shadow-sm: 0 1px 2px oklch(0.24 0.02 255 / 6%), 0 1px 6px oklch(0.24 0.02 255 / 4%);
133
+ --aui-shadow-md: 0 10px 28px -12px oklch(0.24 0.02 255 / 18%), 0 2px 8px oklch(0.24 0.02 255 / 5%);
134
+ --aui-shadow-lg: 0 24px 56px -20px oklch(0.24 0.02 255 / 26%), 0 8px 18px oklch(0.24 0.02 255 / 6%);
134
135
  --aui-surface-base: var(--background);
135
136
  --aui-surface-raised: color-mix(in oklch, var(--background), white 42%);
136
137
  --aui-surface-muted: color-mix(in oklch, var(--muted), var(--background) 52%);
137
138
  --aui-border-strong: color-mix(in oklch, var(--border), var(--foreground) 7%);
138
139
 
139
140
  --aui-control-radius: var(--aui-radius-control);
140
- --aui-focus-ring: color-mix(in oklch, var(--ring), transparent 44%);
141
- --aui-focus-ring-soft: color-mix(in oklch, var(--ring), transparent 82%);
141
+ --aui-focus-ring: color-mix(in oklch, var(--ring), transparent 22%);
142
+ --aui-focus-ring-soft: color-mix(in oklch, var(--ring), transparent 78%);
142
143
  --aui-danger-ring: color-mix(in oklch, var(--destructive), transparent 48%);
143
144
  --aui-danger-ring-soft: color-mix(in oklch, var(--destructive), transparent 86%);
144
145
  --aui-warning-ring: color-mix(in oklch, var(--aui-warning), transparent 48%);
@@ -150,13 +151,13 @@
150
151
  --aui-control-surface-readonly: color-mix(in oklch, var(--muted), var(--background) 78%);
151
152
  --aui-control-shadow: var(--aui-shadow-sm);
152
153
  --aui-control-border-strong: var(--aui-border-strong);
153
- --aui-control-hover-border: color-mix(in oklch, var(--ring), transparent 68%);
154
+ --aui-control-hover-border: color-mix(in oklch, var(--ring), transparent 42%);
154
155
  --aui-control-panel-bg: var(--aui-surface-raised);
155
156
  --aui-control-panel-shadow: var(--aui-shadow-md);
156
157
  --aui-card-radius: var(--aui-radius-surface);
157
158
  --aui-card-border: var(--border);
158
159
  --aui-card-shadow: var(--aui-shadow-xs);
159
- --aui-card-shadow-hover: var(--aui-shadow-md);
160
+ --aui-card-shadow-hover: 0 18px 42px -18px oklch(0.24 0.02 255 / 24%), 0 3px 10px oklch(0.24 0.02 255 / 6%);
160
161
  --aui-card-soft-bg: color-mix(in oklch, var(--muted), var(--background) 34%);
161
162
  --aui-card-outline-bg: var(--aui-surface-raised);
162
163
  --aui-popover-shadow: var(--aui-shadow-lg);
@@ -193,7 +194,8 @@
193
194
  --aui-table-footer-bg: linear-gradient(180deg, oklch(0.994 0.002 95), oklch(0.974 0.006 250));
194
195
  }
195
196
 
196
- .dark {
197
+ .dark,
198
+ [data-theme="dark"] {
197
199
  --background: oklch(0.19 0.01 255);
198
200
  --foreground: oklch(0.965 0.004 95);
199
201
  --card: oklch(0.235 0.012 255);
@@ -234,8 +236,8 @@
234
236
  --aui-danger: var(--destructive);
235
237
  --aui-danger-foreground: oklch(0.19 0.012 255);
236
238
 
237
- --aui-focus-ring: color-mix(in oklch, var(--ring), transparent 40%);
238
- --aui-focus-ring-soft: color-mix(in oklch, var(--ring), transparent 80%);
239
+ --aui-focus-ring: color-mix(in oklch, var(--ring), transparent 18%);
240
+ --aui-focus-ring-soft: color-mix(in oklch, var(--ring), transparent 72%);
239
241
  --aui-danger-ring: color-mix(in oklch, var(--destructive), transparent 46%);
240
242
  --aui-danger-ring-soft: color-mix(in oklch, var(--destructive), transparent 84%);
241
243
  --aui-warning-ring: color-mix(in oklch, var(--aui-warning), transparent 46%);
@@ -243,9 +245,9 @@
243
245
  --aui-radius-control: var(--radius-lg);
244
246
  --aui-radius-surface: var(--radius-xl);
245
247
  --aui-shadow-xs: 0 1px 2px oklch(0 0 0 / 12%);
246
- --aui-shadow-sm: 0 1px 3px oklch(0 0 0 / 16%);
247
- --aui-shadow-md: 0 12px 30px oklch(0 0 0 / 26%);
248
- --aui-shadow-lg: 0 22px 54px oklch(0 0 0 / 36%);
248
+ --aui-shadow-sm: 0 1px 2px oklch(0 0 0 / 20%), 0 2px 8px oklch(0 0 0 / 12%);
249
+ --aui-shadow-md: 0 16px 36px -16px oklch(0 0 0 / 62%), 0 3px 12px oklch(0 0 0 / 20%);
250
+ --aui-shadow-lg: 0 28px 64px -20px oklch(0 0 0 / 72%), 0 10px 24px oklch(0 0 0 / 24%);
249
251
  --aui-surface-base: var(--background);
250
252
  --aui-surface-raised: oklch(1 0 0 / 4%);
251
253
  --aui-surface-muted: oklch(1 0 0 / 6%);
@@ -286,7 +288,7 @@
286
288
  --aui-table-border: oklch(1 0 0 / 8%);
287
289
  --aui-table-selection-surface: oklch(1 0 0 / 4%);
288
290
  --aui-control-border-strong: var(--aui-border-strong);
289
- --aui-control-hover-border: color-mix(in oklch, var(--ring), transparent 72%);
291
+ --aui-control-hover-border: color-mix(in oklch, var(--ring), transparent 44%);
290
292
  --aui-control-panel-bg: var(--aui-surface-raised);
291
293
  --aui-control-panel-shadow: var(--aui-shadow-md);
292
294
  --aui-button-primary-shadow: 0 1px 0 color-mix(in oklch, white, transparent 82%), 0 18px 40px color-mix(in oklch, var(--primary), transparent 82%);
@@ -300,6 +302,57 @@
300
302
  --aui-table-footer-bg: linear-gradient(180deg, oklch(0.245 0.012 255), oklch(0.215 0.012 255));
301
303
  }
302
304
 
305
+ /* Optional third preset. Add any custom [data-theme="name"] block with the same semantic tokens. */
306
+ [data-theme="dim"] {
307
+ --background: oklch(0.245 0.014 250);
308
+ --foreground: oklch(0.94 0.006 95);
309
+ --card: oklch(0.285 0.016 250);
310
+ --card-foreground: var(--foreground);
311
+ --popover: oklch(0.285 0.016 250);
312
+ --popover-foreground: var(--foreground);
313
+ --primary: oklch(0.78 0.1 195);
314
+ --primary-foreground: oklch(0.2 0.018 250);
315
+ --muted: oklch(0.33 0.014 250);
316
+ --muted-foreground: oklch(0.76 0.012 245);
317
+ --accent: oklch(0.35 0.025 205);
318
+ --accent-foreground: var(--foreground);
319
+ --border: oklch(1 0 0 / 15%);
320
+ --input: oklch(1 0 0 / 18%);
321
+ --ring: oklch(0.72 0.08 195);
322
+ --sidebar: oklch(0.265 0.016 250);
323
+ --sidebar-foreground: var(--foreground);
324
+ --sidebar-primary: var(--primary);
325
+ --sidebar-primary-foreground: var(--primary-foreground);
326
+ --sidebar-accent: var(--accent);
327
+ --sidebar-accent-foreground: var(--accent-foreground);
328
+ --sidebar-border: var(--border);
329
+ --sidebar-ring: var(--ring);
330
+ }
331
+
332
+ :root[data-density="compact"] {
333
+ --aui-control-height-sm: 1.75rem;
334
+ --aui-control-height-md: 2.25rem;
335
+ --aui-control-height-lg: 2.5rem;
336
+ }
337
+
338
+ :root[data-density="spacious"] {
339
+ --aui-control-height-sm: 2.25rem;
340
+ --aui-control-height-md: 2.75rem;
341
+ --aui-control-height-lg: 3.125rem;
342
+ }
343
+
344
+ :root[data-contrast="high"] {
345
+ --border: color-mix(in oklch, var(--foreground), transparent 45%);
346
+ --input: color-mix(in oklch, var(--foreground), transparent 38%);
347
+ --ring: var(--foreground);
348
+ --aui-disabled-opacity: 0.68;
349
+ }
350
+
351
+ :root[data-motion="reduced"] {
352
+ --aui-motion-fast: 0ms;
353
+ --aui-motion-normal: 0ms;
354
+ }
355
+
303
356
  :root[data-radius="none"] { --radius: 0rem; }
304
357
  :root[data-radius="sm"] { --radius: 0.375rem; }
305
358
  :root[data-radius="md"] { --radius: 0.5rem; }
@@ -317,6 +370,20 @@
317
370
 
318
371
  body {
319
372
  @apply bg-background text-foreground antialiased;
373
+ margin: 0;
374
+ }
375
+
376
+ html:has([data-slot="workspace-layout"][data-viewport="true"]),
377
+ body:has([data-slot="workspace-layout"][data-viewport="true"]) {
378
+ height: 100%;
379
+ overflow: hidden;
380
+ overscroll-behavior: none;
381
+ }
382
+
383
+ body:has([data-slot="workspace-layout"][data-viewport="true"]) > #root {
384
+ height: 100%;
385
+ min-height: 0;
386
+ overflow: hidden;
320
387
  }
321
388
  }
322
389
 
@@ -325,6 +392,13 @@
325
392
  }
326
393
 
327
394
  @layer components {
395
+ [data-slot="input"][type="search"]::-webkit-search-cancel-button,
396
+ [data-slot="input"][type="search"]::-webkit-search-decoration {
397
+ display: none;
398
+ appearance: none;
399
+ -webkit-appearance: none;
400
+ }
401
+
328
402
  [data-slot="text"][data-size="sm"] {
329
403
  font-size: 0.875rem;
330
404
  line-height: 1.45;
@@ -552,7 +626,9 @@
552
626
  }
553
627
 
554
628
  [data-slot="button"][data-slot="button"]:focus-visible {
555
- box-shadow: var(--aui-control-shadow), 0 0 0 1px var(--aui-focus-ring), 0 0 0 5px var(--aui-focus-ring-soft);
629
+ position: relative;
630
+ z-index: 1;
631
+ box-shadow: var(--aui-control-shadow), 0 0 0 2px var(--background), 0 0 0 4px var(--aui-focus-ring);
556
632
  }
557
633
 
558
634
  [data-slot="button"][data-slot="button"]:not(:disabled):not([aria-disabled="true"]):hover {
@@ -568,8 +644,9 @@
568
644
  }
569
645
 
570
646
  [data-slot="button"][data-variant="default"]:not(:disabled):not([aria-disabled="true"]):hover {
571
- background: color-mix(in oklch, var(--primary), white 10%);
572
- box-shadow: 0 1px 0 color-mix(in oklch, white, transparent 18%), 0 20px 42px color-mix(in oklch, var(--primary), transparent 74%);
647
+ border-color: color-mix(in oklch, var(--primary), black 16%);
648
+ background: color-mix(in oklch, var(--primary), white 7%);
649
+ box-shadow: 0 8px 20px -10px color-mix(in oklch, var(--primary), transparent 35%);
573
650
  }
574
651
 
575
652
  [data-slot="button"][data-variant="secondary"] {
@@ -585,7 +662,9 @@
585
662
  }
586
663
 
587
664
  [data-slot="button"][data-variant="outline"]:not(:disabled):not([aria-disabled="true"]):hover {
588
- background: color-mix(in oklch, var(--background), transparent 14%);
665
+ border-color: var(--aui-control-hover-border);
666
+ background: var(--accent);
667
+ color: var(--accent-foreground);
589
668
  }
590
669
 
591
670
  [data-slot="button"][data-variant="ghost"] {
@@ -596,8 +675,9 @@
596
675
  }
597
676
 
598
677
  [data-slot="button"][data-variant="ghost"]:not(:disabled):not([aria-disabled="true"]):hover {
599
- border-color: color-mix(in oklch, var(--border), var(--foreground) 8%);
600
- background: color-mix(in oklch, var(--accent), transparent 22%);
678
+ border-color: transparent;
679
+ background: var(--accent);
680
+ color: var(--accent-foreground);
601
681
  }
602
682
 
603
683
  [data-slot="button"][data-variant="destructive"] {
@@ -688,7 +768,8 @@
688
768
  [data-slot="input"][data-slot="input"]:focus-visible,
689
769
  [data-slot="textarea"][data-slot="textarea"]:focus-visible,
690
770
  [data-slot="select-trigger"][data-slot="select-trigger"]:focus-visible {
691
- box-shadow: var(--aui-control-shadow), 0 0 0 1px var(--aui-focus-ring), 0 0 0 5px var(--aui-focus-ring-soft);
771
+ border-color: var(--ring);
772
+ box-shadow: var(--aui-control-shadow), 0 0 0 1px var(--background), 0 0 0 3px var(--aui-focus-ring);
692
773
  }
693
774
 
694
775
  [data-slot="input"][data-slot="input"]:disabled,
@@ -745,10 +826,18 @@
745
826
  }
746
827
 
747
828
  [data-slot="badge"][data-slot="badge"] {
829
+ position: relative;
830
+ border-width: 1px;
831
+ border-style: solid;
832
+ border-radius: var(--aui-radius-pill);
748
833
  border-color: color-mix(in oklch, var(--border), var(--foreground) 5%);
749
834
  background: color-mix(in oklch, var(--muted), var(--background) 42%);
750
835
  color: var(--foreground);
751
836
  box-shadow: inset 0 1px 0 color-mix(in oklch, white, transparent 38%);
837
+ font-weight: 600;
838
+ line-height: 1;
839
+ letter-spacing: 0;
840
+ transition: color var(--aui-motion-fast) var(--aui-ease-standard), background-color var(--aui-motion-fast) var(--aui-ease-standard), border-color var(--aui-motion-fast) var(--aui-ease-standard), box-shadow var(--aui-motion-fast) var(--aui-ease-standard), transform var(--aui-motion-fast) var(--aui-ease-standard);
752
841
  }
753
842
 
754
843
  [data-slot="badge"][data-variant="soft"] {
@@ -758,18 +847,31 @@
758
847
  box-shadow: none;
759
848
  }
760
849
 
761
- [data-slot="badge"][data-size="sm"] { min-height: 1.25rem; gap: 0.3rem; padding: 0.125rem 0.625rem; font-size: 0.64rem; }
762
- [data-slot="badge"][data-size="default"] { min-height: 1.5rem; gap: 0.375rem; padding: 0.25rem 0.75rem; font-size: 0.7rem; }
763
- [data-slot="badge"][data-size="lg"] { min-height: 1.75rem; gap: 0.375rem; padding: 0.25rem 0.875rem; font-size: 0.78rem; }
850
+ [data-slot="badge"][data-size="sm"] { min-height: 1.375rem; gap: 0.3rem; padding: 0.1875rem 0.5rem; font-size: 0.6875rem; }
851
+ [data-slot="badge"][data-size="default"] { min-height: 1.625rem; gap: 0.375rem; padding: 0.25rem 0.625rem; font-size: 0.75rem; }
852
+ [data-slot="badge"][data-size="lg"] { min-height: 2rem; gap: 0.4375rem; padding: 0.375rem 0.75rem; font-size: 0.8125rem; }
764
853
 
765
- [data-slot="badge-dot"] { width: 0.375rem; height: 0.375rem; flex-shrink: 0; border-radius: var(--aui-radius-pill); background: currentColor; opacity: 0.75; }
766
- [data-slot="badge-icon"] { display: inline-flex; flex-shrink: 0; align-items: center; }
767
- [data-slot="badge-icon"] svg { width: 0.75rem; height: 0.75rem; }
854
+ [data-slot="badge-dot"] { position: relative; display: grid; width: 0.5rem; height: 0.5rem; flex-shrink: 0; place-items: center; border-radius: var(--aui-radius-pill); background: currentColor; opacity: 0.78; }
855
+ [data-slot="badge-dot"] > * { width: 100%; height: 100%; border-radius: inherit; }
856
+ [data-slot="badge-dot"][data-pulse="true"]::after { position: absolute; inset: -0.1875rem; border: 1px solid currentColor; border-radius: inherit; content: ""; animation: aui-badge-pulse 1.8s var(--aui-ease-standard) infinite; }
857
+ [data-slot="badge-avatar"] { width: 1rem; height: 1rem; margin-inline-start: -0.1875rem; }
858
+ [data-slot="badge-avatar"] img { width: 100%; height: 100%; object-fit: cover; }
859
+ [data-slot="badge"][data-size="sm"] [data-slot="badge-avatar"] { width: 0.875rem; height: 0.875rem; }
860
+ [data-slot="badge"][data-size="lg"] [data-slot="badge-avatar"] { width: 1.25rem; height: 1.25rem; }
861
+ [data-slot="badge-icon"] { display: grid; flex-shrink: 0; place-items: center; }
862
+ [data-slot="badge-icon"] svg { width: 0.875rem; height: 0.875rem; }
768
863
  [data-slot="badge-count"] { display: inline-flex; min-width: 1.25rem; align-items: center; justify-content: center; border-radius: var(--aui-radius-pill); background: color-mix(in oklch, currentColor, transparent 88%); padding: 0.125rem 0.375rem; font-size: 0.72em; font-weight: 650; }
769
- [data-slot="badge-remove"] { display: inline-flex; width: 1rem; height: 1rem; flex-shrink: 0; align-items: center; justify-content: center; border-radius: var(--aui-radius-pill); background: color-mix(in oklch, currentColor, transparent 90%); opacity: 0.8; transition: opacity var(--aui-motion-fast) var(--aui-ease-standard), box-shadow var(--aui-motion-fast) var(--aui-ease-standard); }
770
- [data-slot="badge-remove"]:hover { opacity: 1; }
864
+ [data-slot="badge-remove"] { display: grid; width: 1.125rem; height: 1.125rem; flex-shrink: 0; margin-inline-end: -0.25rem; padding: 0; place-items: center; border: 0; border-radius: var(--aui-radius-pill); background: color-mix(in oklch, currentColor, transparent 90%); color: inherit; line-height: 1; opacity: 0.76; transition: opacity var(--aui-motion-fast) var(--aui-ease-standard), background-color var(--aui-motion-fast) var(--aui-ease-standard), box-shadow var(--aui-motion-fast) var(--aui-ease-standard); }
865
+ [data-slot="badge-remove"]:hover { background: color-mix(in oklch, currentColor, transparent 82%); opacity: 1; }
771
866
  [data-slot="badge-remove"]:focus-visible { outline: none; box-shadow: 0 0 0 2px color-mix(in oklch, currentColor, transparent 65%); }
772
867
  [data-slot="badge-remove"] svg { width: 0.75rem; height: 0.75rem; }
868
+ [data-slot="badge"][data-interactive="true"]:hover { border-color: color-mix(in oklch, var(--ring), transparent 55%); background: color-mix(in oklch, var(--muted), var(--background) 20%); transform: translateY(-1px); }
869
+ [data-slot="badge"][data-interactive="true"]:focus-visible { box-shadow: 0 0 0 3px color-mix(in oklch, var(--ring), transparent 74%); }
870
+
871
+ @keyframes aui-badge-pulse {
872
+ 0% { opacity: 0.55; transform: scale(0.7); }
873
+ 70%, 100% { opacity: 0; transform: scale(1.35); }
874
+ }
773
875
 
774
876
  [data-slot="badge"][data-variant="default"] {
775
877
  border-color: color-mix(in oklch, var(--primary), transparent 64%);
@@ -867,7 +969,7 @@
867
969
 
868
970
  [data-slot="tabs-trigger"][data-slot="tabs-trigger"]:hover {
869
971
  color: var(--foreground);
870
- background: color-mix(in oklch, var(--background), transparent 18%);
972
+ background: var(--accent);
871
973
  }
872
974
 
873
975
  [data-slot="tabs-trigger"][data-slot="tabs-trigger"][data-selected] {
@@ -878,13 +980,13 @@
878
980
  }
879
981
 
880
982
  [data-slot="tabs-trigger"][data-slot="tabs-trigger"]:focus-visible {
881
- box-shadow: var(--aui-control-shadow), 0 0 0 1px var(--aui-focus-ring), 0 0 0 5px var(--aui-focus-ring-soft);
983
+ box-shadow: 0 0 0 2px var(--background), 0 0 0 4px var(--aui-focus-ring);
882
984
  }
883
985
 
884
986
  :is([data-slot="card"], [data-card]) {
885
987
  border: 1px solid var(--aui-card-border);
886
988
  border-radius: var(--aui-card-radius);
887
- background: linear-gradient(180deg, color-mix(in oklch, var(--card), white 8%), var(--card));
989
+ background: var(--card);
888
990
  box-shadow: var(--aui-card-shadow);
889
991
  }
890
992
 
@@ -945,6 +1047,7 @@
945
1047
  :is([data-slot="card"], [data-card])[data-interactive="true"]:hover {
946
1048
  border-color: var(--aui-control-hover-border);
947
1049
  box-shadow: var(--aui-card-shadow-hover);
1050
+ transform: translateY(-1px);
948
1051
  }
949
1052
 
950
1053
  :is([data-slot="card"], [data-card])[data-interactive="true"]:focus-visible {
package/registry.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://tembro.dev/registry.schema.json",
3
3
  "name": "tembro",
4
- "version": "4.0.0",
4
+ "version": "4.1.0",
5
5
  "description": "Reusable React + TypeScript UI kit registry",
6
6
  "groups": {
7
7
  "ui": [
@@ -71,6 +71,7 @@
71
71
  "activity-feed",
72
72
  "avatar",
73
73
  "code-block",
74
+ "chat",
74
75
  "description-list",
75
76
  "data-state",
76
77
  "info-card",
@@ -285,6 +286,7 @@
285
286
  "code-block",
286
287
  "data-state",
287
288
  "kanban",
289
+ "chat",
288
290
  "list",
289
291
  "description-list",
290
292
  "statistic",