tembro 4.0.1 → 4.2.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 (75) 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/inputs/combobox.cjs +1 -0
  8. package/dist/components/inputs/combobox.d.ts +46 -0
  9. package/dist/components/inputs/combobox.js +1 -0
  10. package/dist/components/inputs/index.d.ts +1 -0
  11. package/dist/components/inputs/public.d.ts +1 -0
  12. package/dist/components/layout/sidebar.d.ts +24 -2
  13. package/dist/components/modern/rich-text-editor.d.ts +13 -1
  14. package/dist/components/theme-provider.d.ts +19 -6
  15. package/dist/components/ui/badge/index.d.ts +8 -2
  16. package/dist/src/components/display/activity-feed.cjs +1 -1
  17. package/dist/src/components/display/activity-feed.js +4 -1
  18. package/dist/src/components/display/chat.cjs +1 -0
  19. package/dist/src/components/display/chat.js +372 -0
  20. package/dist/src/components/display/index.cjs +1 -1
  21. package/dist/src/components/display/index.js +17 -16
  22. package/dist/src/components/display/kanban.cjs +1 -1
  23. package/dist/src/components/display/kanban.js +321 -176
  24. package/dist/src/components/display/timeline.cjs +1 -1
  25. package/dist/src/components/display/timeline.js +5 -5
  26. package/dist/src/components/inputs/combobox.cjs +1 -0
  27. package/dist/src/components/inputs/combobox.js +162 -0
  28. package/dist/src/components/inputs/index.cjs +1 -1
  29. package/dist/src/components/inputs/index.js +10 -9
  30. package/dist/src/components/inputs/public.cjs +1 -1
  31. package/dist/src/components/inputs/public.js +10 -9
  32. package/dist/src/components/inputs/tag-input.cjs +1 -1
  33. package/dist/src/components/inputs/tag-input.js +6 -2
  34. package/dist/src/components/layout/index.cjs +1 -1
  35. package/dist/src/components/layout/index.js +4 -4
  36. package/dist/src/components/layout/public.cjs +1 -1
  37. package/dist/src/components/layout/public.js +4 -4
  38. package/dist/src/components/layout/sidebar.cjs +1 -1
  39. package/dist/src/components/layout/sidebar.js +326 -228
  40. package/dist/src/components/modern/rich-text-editor.cjs +1 -1
  41. package/dist/src/components/modern/rich-text-editor.js +216 -89
  42. package/dist/src/components/theme-provider.cjs +1 -1
  43. package/dist/src/components/theme-provider.js +58 -36
  44. package/dist/src/components/ui/badge/index.cjs +1 -1
  45. package/dist/src/components/ui/badge/index.js +59 -47
  46. package/dist/src/components/ui/input/clearable.cjs +1 -1
  47. package/dist/src/components/ui/input/clearable.js +5 -2
  48. package/dist/src/components/ui/input/primitive.cjs +1 -1
  49. package/dist/src/components/ui/input/primitive.js +1 -1
  50. package/dist/src/index.cjs +1 -1
  51. package/dist/src/index.js +88 -86
  52. package/dist/src/public-component-surface.cjs +1 -1
  53. package/dist/src/public-component-surface.js +107 -41
  54. package/package.json +1 -1
  55. package/packages/cli/dist/index.cjs +37 -37
  56. package/packages/cli/vendor/src/components/display/activity-feed.tsx +1 -1
  57. package/packages/cli/vendor/src/components/display/chat.tsx +237 -0
  58. package/packages/cli/vendor/src/components/display/index.ts +1 -0
  59. package/packages/cli/vendor/src/components/display/kanban.tsx +219 -72
  60. package/packages/cli/vendor/src/components/display/timeline.tsx +10 -10
  61. package/packages/cli/vendor/src/components/inputs/combobox.tsx +303 -0
  62. package/packages/cli/vendor/src/components/inputs/index.ts +1 -0
  63. package/packages/cli/vendor/src/components/inputs/public.ts +1 -0
  64. package/packages/cli/vendor/src/components/inputs/tag-input.tsx +3 -2
  65. package/packages/cli/vendor/src/components/layout/sidebar.tsx +212 -51
  66. package/packages/cli/vendor/src/components/modern/rich-text-editor.tsx +115 -32
  67. package/packages/cli/vendor/src/components/theme-provider.tsx +82 -36
  68. package/packages/cli/vendor/src/components/ui/badge/index.tsx +29 -8
  69. package/packages/cli/vendor/src/components/ui/input/clearable.tsx +2 -2
  70. package/packages/cli/vendor/src/components/ui/input/primitive.tsx +1 -1
  71. package/packages/cli/vendor/src/public-component-surface.ts +36 -22
  72. package/packages/cli/vendor/templates/showcase/src/showcase/layout/HeroSection.tsx +2 -2
  73. package/packages/cli/vendor/templates/showcase/src/showcase/layout/WorkbenchSidebar.tsx +1 -1
  74. package/packages/cli/vendor/templates/styles/globals.css +91 -10
  75. package/registry.json +28 -11
@@ -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.2.0",
5
5
  "description": "Reusable React + TypeScript UI kit registry",
6
6
  "groups": {
7
7
  "ui": [
@@ -39,6 +39,7 @@
39
39
  "pagination"
40
40
  ],
41
41
  "inputs": [
42
+ "combobox",
42
43
  "async-select",
43
44
  "otp-input",
44
45
  "rating",
@@ -71,6 +72,7 @@
71
72
  "activity-feed",
72
73
  "avatar",
73
74
  "code-block",
75
+ "chat",
74
76
  "description-list",
75
77
  "data-state",
76
78
  "info-card",
@@ -179,6 +181,7 @@
179
181
  "dialog",
180
182
  "popover",
181
183
  "select",
184
+ "combobox",
182
185
  "table",
183
186
  "badge",
184
187
  "card",
@@ -215,6 +218,7 @@
215
218
  "dialog",
216
219
  "popover",
217
220
  "select",
221
+ "combobox",
218
222
  "table",
219
223
  "badge",
220
224
  "card",
@@ -258,18 +262,30 @@
258
262
  "documented": [
259
263
  "button",
260
264
  "input",
265
+ "textarea",
261
266
  "select",
267
+ "combobox",
268
+ "async-select",
262
269
  "card",
263
270
  "badge",
264
271
  "checkbox",
272
+ "switch",
273
+ "radio-group",
265
274
  "dialog",
275
+ "dropdown-menu",
276
+ "popover",
277
+ "tooltip",
266
278
  "data-table",
279
+ "pagination",
267
280
  "calendar",
268
281
  "date-picker",
269
282
  "date-range-picker",
270
283
  "alert",
284
+ "toast",
285
+ "notification-center",
271
286
  "charts",
272
287
  "sidebar",
288
+ "breadcrumbs",
273
289
  "workspace-layout",
274
290
  "state-view",
275
291
  "file-upload",
@@ -285,21 +301,14 @@
285
301
  "code-block",
286
302
  "data-state",
287
303
  "kanban",
304
+ "chat",
288
305
  "list",
289
306
  "description-list",
290
307
  "statistic",
291
308
  "tree-view",
292
309
  "copy-button",
293
310
  "section",
294
- "form-builder",
295
311
  "empty-state",
296
- "page-toolbar",
297
- "bulk-action-bar",
298
- "detail-layout",
299
- "settings-page",
300
- "data-view",
301
- "resource-page",
302
- "resource-detail-page",
303
312
  "calendar-scheduler",
304
313
  "dual-list-picker",
305
314
  "resizable-panel",
@@ -316,7 +325,16 @@
316
325
  "rich-text-editor",
317
326
  "image-cropper"
318
327
  ],
319
- "standalone": []
328
+ "standalone": [
329
+ "form-builder",
330
+ "page-toolbar",
331
+ "bulk-action-bar",
332
+ "detail-layout",
333
+ "settings-page",
334
+ "data-view",
335
+ "resource-page",
336
+ "resource-detail-page"
337
+ ]
320
338
  },
321
339
  "migrationAliases": {
322
340
  "clearable-input": "input",
@@ -330,7 +348,6 @@
330
348
  "date-input": "input",
331
349
  "date-range-input": "input",
332
350
  "simple-select": "select",
333
- "combobox": "select",
334
351
  "hover-card": "popover",
335
352
  "copy-field": "copy-button",
336
353
  "comparison-card": "card",