tembro 4.0.1 → 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 (61) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/components/display/chat.cjs +1 -0
  3. package/dist/components/display/chat.d.ts +94 -0
  4. package/dist/components/display/chat.js +1 -0
  5. package/dist/components/display/index.d.ts +1 -0
  6. package/dist/components/display/kanban.d.ts +33 -1
  7. package/dist/components/layout/sidebar.d.ts +24 -2
  8. package/dist/components/modern/rich-text-editor.d.ts +13 -1
  9. package/dist/components/theme-provider.d.ts +19 -6
  10. package/dist/components/ui/badge/index.d.ts +8 -2
  11. package/dist/src/components/display/activity-feed.cjs +1 -1
  12. package/dist/src/components/display/activity-feed.js +4 -1
  13. package/dist/src/components/display/chat.cjs +1 -0
  14. package/dist/src/components/display/chat.js +372 -0
  15. package/dist/src/components/display/index.cjs +1 -1
  16. package/dist/src/components/display/index.js +17 -16
  17. package/dist/src/components/display/kanban.cjs +1 -1
  18. package/dist/src/components/display/kanban.js +321 -176
  19. package/dist/src/components/display/timeline.cjs +1 -1
  20. package/dist/src/components/display/timeline.js +5 -5
  21. package/dist/src/components/inputs/tag-input.cjs +1 -1
  22. package/dist/src/components/inputs/tag-input.js +6 -2
  23. package/dist/src/components/layout/index.cjs +1 -1
  24. package/dist/src/components/layout/index.js +4 -4
  25. package/dist/src/components/layout/public.cjs +1 -1
  26. package/dist/src/components/layout/public.js +4 -4
  27. package/dist/src/components/layout/sidebar.cjs +1 -1
  28. package/dist/src/components/layout/sidebar.js +326 -228
  29. package/dist/src/components/modern/rich-text-editor.cjs +1 -1
  30. package/dist/src/components/modern/rich-text-editor.js +216 -89
  31. package/dist/src/components/theme-provider.cjs +1 -1
  32. package/dist/src/components/theme-provider.js +58 -36
  33. package/dist/src/components/ui/badge/index.cjs +1 -1
  34. package/dist/src/components/ui/badge/index.js +59 -47
  35. package/dist/src/components/ui/input/clearable.cjs +1 -1
  36. package/dist/src/components/ui/input/clearable.js +5 -2
  37. package/dist/src/components/ui/input/primitive.cjs +1 -1
  38. package/dist/src/components/ui/input/primitive.js +1 -1
  39. package/dist/src/index.cjs +1 -1
  40. package/dist/src/index.js +87 -86
  41. package/dist/src/public-component-surface.cjs +1 -1
  42. package/dist/src/public-component-surface.js +5 -0
  43. package/package.json +1 -1
  44. package/packages/cli/dist/index.cjs +3 -3
  45. package/packages/cli/vendor/src/components/display/activity-feed.tsx +1 -1
  46. package/packages/cli/vendor/src/components/display/chat.tsx +237 -0
  47. package/packages/cli/vendor/src/components/display/index.ts +1 -0
  48. package/packages/cli/vendor/src/components/display/kanban.tsx +219 -72
  49. package/packages/cli/vendor/src/components/display/timeline.tsx +10 -10
  50. package/packages/cli/vendor/src/components/inputs/tag-input.tsx +3 -2
  51. package/packages/cli/vendor/src/components/layout/sidebar.tsx +212 -51
  52. package/packages/cli/vendor/src/components/modern/rich-text-editor.tsx +115 -32
  53. package/packages/cli/vendor/src/components/theme-provider.tsx +82 -36
  54. package/packages/cli/vendor/src/components/ui/badge/index.tsx +29 -8
  55. package/packages/cli/vendor/src/components/ui/input/clearable.tsx +2 -2
  56. package/packages/cli/vendor/src/components/ui/input/primitive.tsx +1 -1
  57. package/packages/cli/vendor/src/public-component-surface.ts +1 -0
  58. package/packages/cli/vendor/templates/showcase/src/showcase/layout/HeroSection.tsx +2 -2
  59. package/packages/cli/vendor/templates/showcase/src/showcase/layout/WorkbenchSidebar.tsx +1 -1
  60. package/packages/cli/vendor/templates/styles/globals.css +91 -10
  61. 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);
@@ -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);
@@ -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; }
@@ -339,6 +392,13 @@
339
392
  }
340
393
 
341
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
+
342
402
  [data-slot="text"][data-size="sm"] {
343
403
  font-size: 0.875rem;
344
404
  line-height: 1.45;
@@ -766,10 +826,18 @@
766
826
  }
767
827
 
768
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);
769
833
  border-color: color-mix(in oklch, var(--border), var(--foreground) 5%);
770
834
  background: color-mix(in oklch, var(--muted), var(--background) 42%);
771
835
  color: var(--foreground);
772
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);
773
841
  }
774
842
 
775
843
  [data-slot="badge"][data-variant="soft"] {
@@ -779,18 +847,31 @@
779
847
  box-shadow: none;
780
848
  }
781
849
 
782
- [data-slot="badge"][data-size="sm"] { min-height: 1.25rem; gap: 0.3rem; padding: 0.125rem 0.625rem; font-size: 0.64rem; }
783
- [data-slot="badge"][data-size="default"] { min-height: 1.5rem; gap: 0.375rem; padding: 0.25rem 0.75rem; font-size: 0.7rem; }
784
- [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; }
785
853
 
786
- [data-slot="badge-dot"] { width: 0.375rem; height: 0.375rem; flex-shrink: 0; border-radius: var(--aui-radius-pill); background: currentColor; opacity: 0.75; }
787
- [data-slot="badge-icon"] { display: inline-flex; flex-shrink: 0; align-items: center; }
788
- [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; }
789
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; }
790
- [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); }
791
- [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; }
792
866
  [data-slot="badge-remove"]:focus-visible { outline: none; box-shadow: 0 0 0 2px color-mix(in oklch, currentColor, transparent 65%); }
793
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
+ }
794
875
 
795
876
  [data-slot="badge"][data-variant="default"] {
796
877
  border-color: color-mix(in oklch, var(--primary), transparent 64%);
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.1",
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",