tembro 2.1.8 → 2.1.10

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 (192) hide show
  1. package/dist/components/actions/button-group.cjs +1 -1
  2. package/dist/components/actions/button-group.js +0 -1
  3. package/dist/components/form/form-date-range-input.cjs +1 -1
  4. package/dist/components/form/form-date-range-input.d.ts +1 -1
  5. package/dist/components/form/form-date-range-input.js +1 -1
  6. package/dist/components/form/form-input.cjs +1 -1
  7. package/dist/components/form/form-input.d.ts +7 -7
  8. package/dist/components/form/form-input.js +11 -11
  9. package/dist/components/inputs/index.cjs +1 -1
  10. package/dist/components/inputs/index.d.ts +0 -14
  11. package/dist/components/inputs/index.js +9 -23
  12. package/dist/components/inputs/public.cjs +1 -1
  13. package/dist/components/inputs/public.d.ts +0 -14
  14. package/dist/components/inputs/public.js +9 -23
  15. package/dist/components/ui/input/chrome.cjs +1 -0
  16. package/dist/components/{inputs/input-chrome.js → ui/input/chrome.js} +2 -2
  17. package/dist/components/ui/input/clearable.cjs +1 -0
  18. package/dist/components/{inputs/clearable-input.d.ts → ui/input/clearable.d.ts} +1 -1
  19. package/dist/components/{inputs/clearable-input.js → ui/input/clearable.js} +4 -4
  20. package/dist/components/{inputs/date-range-input.cjs → ui/input/date-range.cjs} +1 -1
  21. package/dist/components/{inputs/date-range-input.d.ts → ui/input/date-range.d.ts} +1 -1
  22. package/dist/components/{inputs/date-range-input.js → ui/input/date-range.js} +3 -3
  23. package/dist/components/ui/input/date.cjs +1 -0
  24. package/dist/components/{inputs/date-input.d.ts → ui/input/date.d.ts} +1 -1
  25. package/dist/components/{inputs/date-input.js → ui/input/date.js} +3 -3
  26. package/dist/components/ui/input/decorator.cjs +1 -0
  27. package/dist/components/{inputs/input-decorator.js → ui/input/decorator.js} +3 -3
  28. package/dist/components/ui/input/index.cjs +1 -1
  29. package/dist/components/ui/input/index.d.ts +10 -10
  30. package/dist/components/ui/input/index.js +13 -13
  31. package/dist/components/ui/input/masked.cjs +1 -0
  32. package/dist/components/{inputs/masked-input.d.ts → ui/input/masked.d.ts} +1 -1
  33. package/dist/components/{inputs/masked-input.js → ui/input/masked.js} +3 -3
  34. package/dist/components/ui/input/money.cjs +1 -0
  35. package/dist/components/{inputs/money-input.js → ui/input/money.js} +5 -5
  36. package/dist/components/ui/input/number.cjs +1 -0
  37. package/dist/components/{inputs/number-input.d.ts → ui/input/number.d.ts} +1 -1
  38. package/dist/components/{inputs/number-input.js → ui/input/number.js} +3 -3
  39. package/dist/components/{inputs → ui/input}/numeric-value.js +1 -1
  40. package/dist/components/ui/input/password.cjs +1 -0
  41. package/dist/components/{inputs/password-input.d.ts → ui/input/password.d.ts} +1 -1
  42. package/dist/components/{inputs/password-input.js → ui/input/password.js} +2 -2
  43. package/dist/components/ui/input/phone.cjs +1 -0
  44. package/dist/components/{inputs/phone-input.d.ts → ui/input/phone.d.ts} +1 -1
  45. package/dist/components/{inputs/phone-input.js → ui/input/phone.js} +2 -2
  46. package/dist/components/ui/input/quantity.cjs +1 -0
  47. package/dist/components/{inputs/quantity-input.js → ui/input/quantity.js} +6 -6
  48. package/dist/components/ui/input/search.cjs +1 -0
  49. package/dist/components/{inputs/search-input.d.ts → ui/input/search.d.ts} +1 -1
  50. package/dist/components/{inputs/search-input.js → ui/input/search.js} +2 -2
  51. package/dist/components/{inputs/input-value.js → ui/input/value.js} +1 -1
  52. package/dist/index.cjs +1 -1
  53. package/dist/index.js +124 -138
  54. package/dist/public-component-surface.cjs +1 -1
  55. package/dist/public-component-surface.js +0 -5
  56. package/dist/showcase/fallback.cjs +3 -3
  57. package/dist/showcase/fallback.js +119 -118
  58. package/dist/showcase/premium/combobox/mock.cjs +4 -3
  59. package/dist/showcase/premium/combobox/mock.js +2 -2
  60. package/dist/showcase/premium/combobox/showcase.cjs +1 -1
  61. package/dist/showcase/premium/combobox/showcase.js +2 -2
  62. package/dist/showcase/premium/date-input/mock.cjs +4 -3
  63. package/dist/showcase/premium/date-input/mock.js +2 -2
  64. package/dist/showcase/premium/date-input/showcase.cjs +1 -1
  65. package/dist/showcase/premium/date-input/showcase.js +2 -1
  66. package/dist/showcase/premium/date-range-input/mock.cjs +4 -3
  67. package/dist/showcase/premium/date-range-input/mock.js +2 -2
  68. package/dist/showcase/premium/date-range-input/showcase.cjs +1 -1
  69. package/dist/showcase/premium/date-range-input/showcase.js +2 -1
  70. package/dist/showcase/premium/masked-input/mock.cjs +4 -3
  71. package/dist/showcase/premium/masked-input/mock.js +2 -2
  72. package/dist/showcase/premium/masked-input/showcase.cjs +1 -1
  73. package/dist/showcase/premium/masked-input/showcase.js +2 -1
  74. package/dist/showcase/premium/money-input/mock.cjs +4 -3
  75. package/dist/showcase/premium/money-input/mock.js +2 -2
  76. package/dist/showcase/premium/money-input/showcase.cjs +1 -1
  77. package/dist/showcase/premium/money-input/showcase.js +2 -1
  78. package/dist/showcase/premium/number-input/mock.cjs +5 -7
  79. package/dist/showcase/premium/number-input/mock.js +2 -2
  80. package/dist/showcase/premium/number-input/showcase.cjs +1 -1
  81. package/dist/showcase/premium/number-input/showcase.js +2 -1
  82. package/dist/showcase/premium/password-input/mock.cjs +3 -2
  83. package/dist/showcase/premium/password-input/mock.js +1 -1
  84. package/dist/showcase/premium/password-input/showcase.cjs +1 -1
  85. package/dist/showcase/premium/password-input/showcase.js +2 -1
  86. package/dist/showcase/premium/phone-input/mock.cjs +5 -4
  87. package/dist/showcase/premium/phone-input/mock.js +2 -2
  88. package/dist/showcase/premium/phone-input/showcase.cjs +1 -1
  89. package/dist/showcase/premium/phone-input/showcase.js +2 -1
  90. package/dist/showcase/premium/quantity-input/mock.cjs +4 -3
  91. package/dist/showcase/premium/quantity-input/mock.js +2 -2
  92. package/dist/showcase/premium/quantity-input/showcase.cjs +1 -1
  93. package/dist/showcase/premium/quantity-input/showcase.js +2 -1
  94. package/dist/showcase/premium/search-input/mock.cjs +3 -2
  95. package/dist/showcase/premium/search-input/mock.js +1 -1
  96. package/dist/showcase/premium/search-input/showcase.cjs +1 -1
  97. package/dist/showcase/premium/search-input/showcase.js +2 -1
  98. package/dist/showcase/premium/simple-select/mock.cjs +3 -3
  99. package/dist/showcase/premium/simple-select/mock.js +2 -2
  100. package/dist/showcase/premium/simple-select/showcase.cjs +1 -1
  101. package/dist/showcase/premium/simple-select/showcase.js +1 -1
  102. package/dist/showcase/registry-specific.cjs +1 -1
  103. package/dist/showcase/registry-specific.js +92 -92
  104. package/dist/showcase/render-registry-preview.cjs +1 -1
  105. package/dist/showcase/render-registry-preview.js +214 -215
  106. package/dist/showcase/tembro-registry.json.cjs +1 -1
  107. package/dist/showcase/tembro-registry.json.js +2 -3
  108. package/package.json +1 -1
  109. package/packages/cli/dist/index.cjs +18 -18
  110. package/packages/cli/vendor/src/components/actions/button-group.tsx +0 -1
  111. package/packages/cli/vendor/src/components/form/form-date-range-input.tsx +5 -5
  112. package/packages/cli/vendor/src/components/form/form-input.tsx +7 -7
  113. package/packages/cli/vendor/src/components/inputs/index.ts +0 -14
  114. package/packages/cli/vendor/src/components/inputs/public.ts +0 -19
  115. package/packages/cli/vendor/src/components/{inputs/clearable-input.tsx → ui/input/clearable.tsx} +2 -2
  116. package/packages/cli/vendor/src/components/{inputs/date-range-input.tsx → ui/input/date-range.tsx} +1 -1
  117. package/packages/cli/vendor/src/components/{inputs/date-input.tsx → ui/input/date.tsx} +2 -2
  118. package/packages/cli/vendor/src/components/ui/input/index.tsx +11 -11
  119. package/packages/cli/vendor/src/components/{inputs/masked-input.tsx → ui/input/masked.tsx} +2 -2
  120. package/packages/cli/vendor/src/components/{inputs/money-input.tsx → ui/input/money.tsx} +3 -3
  121. package/packages/cli/vendor/src/components/{inputs/number-input.tsx → ui/input/number.tsx} +3 -3
  122. package/packages/cli/vendor/src/components/{inputs/password-input.tsx → ui/input/password.tsx} +1 -1
  123. package/packages/cli/vendor/src/components/{inputs/phone-input.tsx → ui/input/phone.tsx} +1 -1
  124. package/packages/cli/vendor/src/components/{inputs/quantity-input.tsx → ui/input/quantity.tsx} +3 -3
  125. package/packages/cli/vendor/src/components/{inputs/search-input.tsx → ui/input/search.tsx} +1 -1
  126. package/packages/cli/vendor/src/public-component-surface.ts +0 -1
  127. package/packages/cli/vendor/src/showcase/fallback.tsx +4 -6
  128. package/packages/cli/vendor/src/showcase/premium/combobox/mock.ts +4 -3
  129. package/packages/cli/vendor/src/showcase/premium/combobox/showcase.tsx +3 -3
  130. package/packages/cli/vendor/src/showcase/premium/date-input/mock.ts +4 -3
  131. package/packages/cli/vendor/src/showcase/premium/date-input/showcase.tsx +3 -2
  132. package/packages/cli/vendor/src/showcase/premium/date-range-input/mock.ts +4 -3
  133. package/packages/cli/vendor/src/showcase/premium/date-range-input/showcase.tsx +3 -2
  134. package/packages/cli/vendor/src/showcase/premium/masked-input/mock.ts +4 -3
  135. package/packages/cli/vendor/src/showcase/premium/masked-input/showcase.tsx +3 -2
  136. package/packages/cli/vendor/src/showcase/premium/money-input/mock.ts +4 -3
  137. package/packages/cli/vendor/src/showcase/premium/money-input/showcase.tsx +3 -2
  138. package/packages/cli/vendor/src/showcase/premium/number-input/mock.ts +5 -7
  139. package/packages/cli/vendor/src/showcase/premium/number-input/showcase.tsx +2 -2
  140. package/packages/cli/vendor/src/showcase/premium/password-input/mock.ts +3 -2
  141. package/packages/cli/vendor/src/showcase/premium/password-input/showcase.tsx +3 -2
  142. package/packages/cli/vendor/src/showcase/premium/phone-input/mock.ts +5 -4
  143. package/packages/cli/vendor/src/showcase/premium/phone-input/showcase.tsx +4 -3
  144. package/packages/cli/vendor/src/showcase/premium/quantity-input/mock.ts +4 -3
  145. package/packages/cli/vendor/src/showcase/premium/quantity-input/showcase.tsx +3 -2
  146. package/packages/cli/vendor/src/showcase/premium/search-input/mock.ts +3 -2
  147. package/packages/cli/vendor/src/showcase/premium/search-input/showcase.tsx +3 -2
  148. package/packages/cli/vendor/src/showcase/premium/simple-select/mock.ts +3 -3
  149. package/packages/cli/vendor/src/showcase/premium/simple-select/showcase.tsx +3 -3
  150. package/packages/cli/vendor/src/showcase/registry-specific.tsx +1 -2
  151. package/packages/cli/vendor/src/showcase/render-registry-preview.tsx +2 -4
  152. package/packages/cli/vendor/src/showcase/tembro-registry.json +1 -3
  153. package/registry.json +1 -3
  154. package/dist/components/inputs/clearable-input.cjs +0 -1
  155. package/dist/components/inputs/color-input.cjs +0 -1
  156. package/dist/components/inputs/color-input.d.ts +0 -11
  157. package/dist/components/inputs/color-input.js +0 -42
  158. package/dist/components/inputs/combobox.cjs +0 -1
  159. package/dist/components/inputs/combobox.d.ts +0 -29
  160. package/dist/components/inputs/combobox.js +0 -113
  161. package/dist/components/inputs/date-input.cjs +0 -1
  162. package/dist/components/inputs/input-chrome.cjs +0 -1
  163. package/dist/components/inputs/input-decorator.cjs +0 -1
  164. package/dist/components/inputs/masked-input.cjs +0 -1
  165. package/dist/components/inputs/money-input.cjs +0 -1
  166. package/dist/components/inputs/number-input.cjs +0 -1
  167. package/dist/components/inputs/password-input.cjs +0 -1
  168. package/dist/components/inputs/phone-input.cjs +0 -1
  169. package/dist/components/inputs/quantity-input.cjs +0 -1
  170. package/dist/components/inputs/quantity-stepper.cjs +0 -1
  171. package/dist/components/inputs/quantity-stepper.d.ts +0 -12
  172. package/dist/components/inputs/quantity-stepper.js +0 -52
  173. package/dist/components/inputs/search-input.cjs +0 -1
  174. package/dist/components/inputs/simple-select.cjs +0 -1
  175. package/dist/components/inputs/simple-select.d.ts +0 -13
  176. package/dist/components/inputs/simple-select.js +0 -8
  177. package/packages/cli/vendor/src/components/inputs/color-input.tsx +0 -49
  178. package/packages/cli/vendor/src/components/inputs/combobox.tsx +0 -180
  179. package/packages/cli/vendor/src/components/inputs/quantity-stepper.tsx +0 -51
  180. package/packages/cli/vendor/src/components/inputs/simple-select.tsx +0 -23
  181. /package/dist/components/{inputs/input-chrome.d.ts → ui/input/chrome.d.ts} +0 -0
  182. /package/dist/components/{inputs/input-decorator.d.ts → ui/input/decorator.d.ts} +0 -0
  183. /package/dist/components/{inputs/money-input.d.ts → ui/input/money.d.ts} +0 -0
  184. /package/dist/components/{inputs → ui/input}/numeric-value.cjs +0 -0
  185. /package/dist/components/{inputs → ui/input}/numeric-value.d.ts +0 -0
  186. /package/dist/components/{inputs/quantity-input.d.ts → ui/input/quantity.d.ts} +0 -0
  187. /package/dist/components/{inputs/input-value.cjs → ui/input/value.cjs} +0 -0
  188. /package/dist/components/{inputs/input-value.d.ts → ui/input/value.d.ts} +0 -0
  189. /package/packages/cli/vendor/src/components/{inputs/input-chrome.tsx → ui/input/chrome.tsx} +0 -0
  190. /package/packages/cli/vendor/src/components/{inputs/input-decorator.tsx → ui/input/decorator.tsx} +0 -0
  191. /package/packages/cli/vendor/src/components/{inputs → ui/input}/numeric-value.ts +0 -0
  192. /package/packages/cli/vendor/src/components/{inputs/input-value.ts → ui/input/value.ts} +0 -0
@@ -5,54 +5,52 @@ import { CopyField as r } from "../components/actions/copy-field.js";
5
5
  import { Input as i } from "../components/ui/input/index.js";
6
6
  import { Card as a, CardContent as o } from "../components/ui/card/index.js";
7
7
  import { Badge as s } from "../components/ui/badge/index.js";
8
- import { Accordion as ee } from "../components/ui/accordion/index.js";
9
- import { Skeleton as c, SkeletonCard as l, SkeletonText as u } from "../components/ui/skeleton/index.js";
10
- import { Divider as d } from "../components/ui/divider/index.js";
11
- import { SegmentedControl as f } from "../components/ui/segmented-control/index.js";
12
- import { Spinner as p } from "../components/ui/spinner/index.js";
13
- import { QuickActionGrid as m } from "../components/actions/quick-action-grid.js";
8
+ import { Accordion as c } from "../components/ui/accordion/index.js";
9
+ import { Skeleton as l, SkeletonCard as u, SkeletonText as d } from "../components/ui/skeleton/index.js";
10
+ import { Divider as f } from "../components/ui/divider/index.js";
11
+ import { SegmentedControl as p } from "../components/ui/segmented-control/index.js";
12
+ import { Spinner as m } from "../components/ui/spinner/index.js";
13
+ import { QuickActionGrid as ee } from "../components/actions/quick-action-grid.js";
14
14
  import { Section as te } from "../components/layout/section.js";
15
15
  import { StickyFooterBar as ne } from "../components/layout/sticky-footer-bar.js";
16
16
  import { PageTabs as re } from "../components/navigation/page-tabs.js";
17
17
  import { StepperTabs as ie } from "../components/navigation/stepper-tabs.js";
18
18
  import { FilterBar as ae } from "../components/filters/filter-bar.js";
19
19
  import { SavedFilterSelect as oe } from "../components/filters/saved-filter-select.js";
20
- import { ColorInput as se } from "../components/inputs/color-input.js";
21
- import { OtpInput as ce } from "../components/inputs/otp-input.js";
22
- import { QuantityStepper as le } from "../components/inputs/quantity-stepper.js";
23
- import { Rating as ue } from "../components/inputs/rating.js";
24
- import { RangeSlider as de, Slider as fe } from "../components/inputs/slider.js";
25
- import { TagInput as h } from "../components/inputs/tag-input.js";
26
- import { JsonInput as g } from "../components/inputs/json-input.js";
27
- import { TimePicker as _, TimeRangePicker as v } from "../components/inputs/time-picker.js";
28
- import { Alert as y } from "../components/feedback/alert.js";
29
- import { PageState as b } from "../components/feedback/page-state.js";
30
- import { Avatar as x, AvatarGroup as S } from "../components/display/avatar.js";
31
- import { Descriptions as C } from "../components/display/descriptions.js";
32
- import { KanbanBoard as w } from "../components/display/kanban.js";
33
- import { CodeBlock as T } from "../components/display/code-block.js";
34
- import { DataState as E } from "../components/display/data-state.js";
35
- import { List as D } from "../components/display/list.js";
36
- import { PropertyGrid as O } from "../components/display/property-grid.js";
37
- import { Statistic as k, StatisticCard as A, StatisticGrid as j } from "../components/display/statistic.js";
38
- import { StatusLegend as M } from "../components/display/status-legend.js";
39
- import { TreeView as N } from "../components/display/tree-view.js";
40
- import { StatCard as P } from "../components/layout/stat-card.js";
41
- import { Carousel as F, CarouselItem as I } from "../components/display/carousel.js";
42
- import { QRCode as L } from "../components/display/qr-code.js";
43
- import { Tag as R, TagGroup as z } from "../components/display/tag.js";
44
- import { Heading as B, Mark as V, Text as H } from "../components/display/typography.js";
45
- import { CalendarScheduler as pe } from "../components/modern/calendar-scheduler.js";
46
- import { DualListPicker as me } from "../components/modern/dual-list-picker.js";
47
- import { Menubar as he, MenubarContent as ge, MenubarItem as U, MenubarMenu as W, MenubarTrigger as G } from "../components/modern/menubar.js";
48
- import { NavigationMenu as _e, NavigationMenuItem as K, NavigationMenuLink as q, NavigationMenuList as ve } from "../components/modern/navigation-menu.js";
49
- import { ResizableHandle as ye, ResizablePanel as J, ResizablePanelGroup as be } from "../components/modern/resizable-panel.js";
50
- import { RichTextEditor as xe } from "../components/modern/rich-text-editor.js";
51
- import { Tour as Se } from "../components/modern/tour.js";
52
- import { Fragment as Ce, jsx as Y, jsxs as X } from "react/jsx-runtime";
20
+ import { OtpInput as se } from "../components/inputs/otp-input.js";
21
+ import { Rating as ce } from "../components/inputs/rating.js";
22
+ import { RangeSlider as le, Slider as ue } from "../components/inputs/slider.js";
23
+ import { TagInput as de } from "../components/inputs/tag-input.js";
24
+ import { JsonInput as h } from "../components/inputs/json-input.js";
25
+ import { TimePicker as g, TimeRangePicker as _ } from "../components/inputs/time-picker.js";
26
+ import { Alert as v } from "../components/feedback/alert.js";
27
+ import { PageState as y } from "../components/feedback/page-state.js";
28
+ import { Avatar as b, AvatarGroup as x } from "../components/display/avatar.js";
29
+ import { Descriptions as S } from "../components/display/descriptions.js";
30
+ import { KanbanBoard as C } from "../components/display/kanban.js";
31
+ import { CodeBlock as w } from "../components/display/code-block.js";
32
+ import { DataState as T } from "../components/display/data-state.js";
33
+ import { List as E } from "../components/display/list.js";
34
+ import { PropertyGrid as D } from "../components/display/property-grid.js";
35
+ import { Statistic as O, StatisticCard as k, StatisticGrid as A } from "../components/display/statistic.js";
36
+ import { StatusLegend as j } from "../components/display/status-legend.js";
37
+ import { TreeView as M } from "../components/display/tree-view.js";
38
+ import { StatCard as N } from "../components/layout/stat-card.js";
39
+ import { Carousel as P, CarouselItem as F } from "../components/display/carousel.js";
40
+ import { QRCode as I } from "../components/display/qr-code.js";
41
+ import { Tag as L, TagGroup as R } from "../components/display/tag.js";
42
+ import { Heading as fe, Mark as z, Text as B } from "../components/display/typography.js";
43
+ import { CalendarScheduler as V } from "../components/modern/calendar-scheduler.js";
44
+ import { DualListPicker as pe } from "../components/modern/dual-list-picker.js";
45
+ import { Menubar as me, MenubarContent as he, MenubarItem as H, MenubarMenu as U, MenubarTrigger as W } from "../components/modern/menubar.js";
46
+ import { NavigationMenu as ge, NavigationMenuItem as G, NavigationMenuLink as K, NavigationMenuList as _e } from "../components/modern/navigation-menu.js";
47
+ import { ResizableHandle as ve, ResizablePanel as q, ResizablePanelGroup as ye } from "../components/modern/resizable-panel.js";
48
+ import { RichTextEditor as be } from "../components/modern/rich-text-editor.js";
49
+ import { Tour as xe } from "../components/modern/tour.js";
50
+ import { Fragment as J, jsx as Y, jsxs as X } from "react/jsx-runtime";
53
51
  //#region src/showcase/fallback.tsx
54
52
  function Z({ item: e, groupLabel: t, importSnippet: n }) {
55
- let r = we(e.slug);
53
+ let r = Se(e.slug);
56
54
  return {
57
55
  Showcase: (n) => /* @__PURE__ */ Y(Q, {
58
56
  ...n,
@@ -71,7 +69,7 @@ function Z({ item: e, groupLabel: t, importSnippet: n }) {
71
69
  }
72
70
  };
73
71
  }
74
- function we(e) {
72
+ function Se(e) {
75
73
  return e.split("-").map((e) => e.charAt(0).toUpperCase() + e.slice(1)).join("");
76
74
  }
77
75
  function Q({ item: e, groupLabel: t, state: n, setState: r, mode: i }) {
@@ -133,8 +131,8 @@ function Q({ item: e, groupLabel: t, state: n, setState: r, mode: i }) {
133
131
  ]
134
132
  });
135
133
  }
136
- function $(Z, we, Q, $, Te) {
137
- return Z.slug === "accordion" ? /* @__PURE__ */ Y(ee, {
134
+ function $(Z, Se, Q, $, Ce) {
135
+ return Z.slug === "accordion" ? /* @__PURE__ */ Y(c, {
138
136
  type: "single",
139
137
  defaultValue: "api",
140
138
  items: [{
@@ -151,12 +149,12 @@ function $(Z, we, Q, $, Te) {
151
149
  }) : Z.slug === "avatar" ? /* @__PURE__ */ X("div", {
152
150
  className: "flex flex-wrap items-center gap-4",
153
151
  children: [
154
- /* @__PURE__ */ Y(x, { name: "Azamat UI" }),
155
- /* @__PURE__ */ Y(x, {
152
+ /* @__PURE__ */ Y(b, { name: "Azamat UI" }),
153
+ /* @__PURE__ */ Y(b, {
156
154
  fallback: "AJ",
157
155
  shape: "rounded"
158
156
  }),
159
- /* @__PURE__ */ Y(S, { items: [
157
+ /* @__PURE__ */ Y(x, { items: [
160
158
  {
161
159
  key: "1",
162
160
  name: "Azamat"
@@ -175,7 +173,7 @@ function $(Z, we, Q, $, Te) {
175
173
  }
176
174
  ] })
177
175
  ]
178
- }) : Z.slug === "calendar-scheduler" ? /* @__PURE__ */ Y(pe, { events: [
176
+ }) : Z.slug === "calendar-scheduler" ? /* @__PURE__ */ Y(V, { events: [
179
177
  {
180
178
  id: "1",
181
179
  title: "Design review",
@@ -197,9 +195,9 @@ function $(Z, we, Q, $, Te) {
197
195
  time: "09:30",
198
196
  tone: "success"
199
197
  }
200
- ] }) : Z.slug === "carousel" ? /* @__PURE__ */ X(F, {
198
+ ] }) : Z.slug === "carousel" ? /* @__PURE__ */ X(P, {
201
199
  index: 0,
202
- children: [/* @__PURE__ */ Y(I, { children: /* @__PURE__ */ Y(a, { children: /* @__PURE__ */ X(o, {
200
+ children: [/* @__PURE__ */ Y(F, { children: /* @__PURE__ */ Y(a, { children: /* @__PURE__ */ X(o, {
203
201
  className: "p-5",
204
202
  children: [/* @__PURE__ */ Y("p", {
205
203
  className: "text-lg font-semibold",
@@ -208,7 +206,7 @@ function $(Z, we, Q, $, Te) {
208
206
  className: "mt-2 text-sm text-muted-foreground",
209
207
  children: "Compact KPI slide for weekly review."
210
208
  })]
211
- }) }) }), /* @__PURE__ */ Y(I, { children: /* @__PURE__ */ Y(a, { children: /* @__PURE__ */ X(o, {
209
+ }) }) }), /* @__PURE__ */ Y(F, { children: /* @__PURE__ */ Y(a, { children: /* @__PURE__ */ X(o, {
212
210
  className: "p-5",
213
211
  children: [/* @__PURE__ */ Y("p", {
214
212
  className: "text-lg font-semibold",
@@ -218,7 +216,7 @@ function $(Z, we, Q, $, Te) {
218
216
  children: "Second slide with account risk summary."
219
217
  })]
220
218
  }) }) })]
221
- }) : Z.slug === "code-block" ? /* @__PURE__ */ Y(T, {
219
+ }) : Z.slug === "code-block" ? /* @__PURE__ */ Y(w, {
222
220
  title: "Install",
223
221
  language: "bash",
224
222
  code: "npx tembro init --template next\nnpx tembro add button"
@@ -229,7 +227,7 @@ function $(Z, we, Q, $, Te) {
229
227
  label: "CLI command",
230
228
  description: "Quick source-copy command",
231
229
  value: "npx tembro add input"
232
- }) : Z.slug === "data-state" ? /* @__PURE__ */ Y(E, {
230
+ }) : Z.slug === "data-state" ? /* @__PURE__ */ Y(T, {
233
231
  status: "empty",
234
232
  title: "No matching rows",
235
233
  description: "Try another filter or import the first record.",
@@ -237,7 +235,7 @@ function $(Z, we, Q, $, Te) {
237
235
  size: "sm",
238
236
  children: "Import CSV"
239
237
  })
240
- }) : Z.slug === "descriptions" ? /* @__PURE__ */ Y(C, {
238
+ }) : Z.slug === "descriptions" ? /* @__PURE__ */ Y(S, {
241
239
  title: "Workspace details",
242
240
  columns: 3,
243
241
  items: [
@@ -264,13 +262,13 @@ function $(Z, we, Q, $, Te) {
264
262
  className: "text-sm font-medium",
265
263
  children: "Section above"
266
264
  }),
267
- /* @__PURE__ */ Y(d, { label: "Summary" }),
265
+ /* @__PURE__ */ Y(f, { label: "Summary" }),
268
266
  /* @__PURE__ */ Y("div", {
269
267
  className: "text-sm text-muted-foreground",
270
268
  children: "Section below"
271
269
  })
272
270
  ]
273
- }) : Z.slug === "dual-list-picker" ? /* @__PURE__ */ Y(me, {
271
+ }) : Z.slug === "dual-list-picker" ? /* @__PURE__ */ Y(pe, {
274
272
  picked: ["billing", "support"],
275
273
  items: [
276
274
  {
@@ -290,7 +288,7 @@ function $(Z, we, Q, $, Te) {
290
288
  label: "Security"
291
289
  }
292
290
  ]
293
- }) : Z.slug === "segmented-control" ? /* @__PURE__ */ Y(f, {
291
+ }) : Z.slug === "segmented-control" ? /* @__PURE__ */ Y(p, {
294
292
  options: [
295
293
  {
296
294
  value: "overview",
@@ -309,41 +307,41 @@ function $(Z, we, Q, $, Te) {
309
307
  }) : Z.slug === "spinner" ? /* @__PURE__ */ X("div", {
310
308
  className: "flex items-center gap-5",
311
309
  children: [
312
- /* @__PURE__ */ Y(p, { size: "xs" }),
313
- /* @__PURE__ */ Y(p, { size: "sm" }),
314
- /* @__PURE__ */ Y(p, { size: "md" }),
315
- /* @__PURE__ */ Y(p, { size: "lg" })
310
+ /* @__PURE__ */ Y(m, { size: "xs" }),
311
+ /* @__PURE__ */ Y(m, { size: "sm" }),
312
+ /* @__PURE__ */ Y(m, { size: "md" }),
313
+ /* @__PURE__ */ Y(m, { size: "lg" })
316
314
  ]
317
315
  }) : Z.slug === "skeleton" ? /* @__PURE__ */ X("div", {
318
316
  className: "grid gap-3",
319
317
  children: [
320
- /* @__PURE__ */ Y(c, { className: "h-10 w-full" }),
321
- /* @__PURE__ */ Y(u, { rows: 3 }),
322
- /* @__PURE__ */ Y(l, { avatar: !0 })
318
+ /* @__PURE__ */ Y(l, { className: "h-10 w-full" }),
319
+ /* @__PURE__ */ Y(d, { rows: 3 }),
320
+ /* @__PURE__ */ Y(u, { avatar: !0 })
323
321
  ]
324
- }) : Z.slug === "slider" ? /* @__PURE__ */ Y(fe, {
322
+ }) : Z.slug === "slider" ? /* @__PURE__ */ Y(ue, {
325
323
  label: "Spacing scale",
326
324
  description: "Adjust dashboard density.",
327
325
  defaultValue: 64,
328
326
  showValue: !0
329
- }) : Z.slug === "statistic" ? /* @__PURE__ */ X(j, {
327
+ }) : Z.slug === "statistic" ? /* @__PURE__ */ X(A, {
330
328
  columns: 3,
331
329
  children: [
332
- /* @__PURE__ */ Y(A, {
330
+ /* @__PURE__ */ Y(k, {
333
331
  label: "ARR",
334
332
  value: "$84.2k",
335
333
  change: "+12.4%",
336
334
  trend: "up",
337
335
  description: "vs previous month"
338
336
  }),
339
- /* @__PURE__ */ Y(k, {
337
+ /* @__PURE__ */ Y(O, {
340
338
  label: "MRR",
341
339
  value: "$7.0k",
342
340
  change: "+3.1%",
343
341
  trend: "up",
344
342
  description: "Live subscriptions"
345
343
  }),
346
- /* @__PURE__ */ Y(k, {
344
+ /* @__PURE__ */ Y(O, {
347
345
  label: "Churn",
348
346
  value: "1.9%",
349
347
  change: "-0.4%",
@@ -361,7 +359,7 @@ function $(Z, we, Q, $, Te) {
361
359
  className: "text-sm font-medium",
362
360
  children: "2 unsaved changes"
363
361
  }),
364
- end: /* @__PURE__ */ X(Ce, { children: [/* @__PURE__ */ Y(e, {
362
+ end: /* @__PURE__ */ X(J, { children: [/* @__PURE__ */ Y(e, {
365
363
  size: "sm",
366
364
  variant: "outline",
367
365
  children: "Discard"
@@ -370,30 +368,30 @@ function $(Z, we, Q, $, Te) {
370
368
  children: "Save"
371
369
  })] })
372
370
  })]
373
- }) : Z.slug === "tag" ? /* @__PURE__ */ X(z, { children: [
374
- /* @__PURE__ */ Y(R, { children: "Default" }),
375
- /* @__PURE__ */ Y(R, {
371
+ }) : Z.slug === "tag" ? /* @__PURE__ */ X(R, { children: [
372
+ /* @__PURE__ */ Y(L, { children: "Default" }),
373
+ /* @__PURE__ */ Y(L, {
376
374
  tone: "success",
377
375
  children: "Live"
378
376
  }),
379
- /* @__PURE__ */ Y(R, {
377
+ /* @__PURE__ */ Y(L, {
380
378
  tone: "warning",
381
379
  children: "Review"
382
380
  }),
383
- /* @__PURE__ */ Y(R, {
381
+ /* @__PURE__ */ Y(L, {
384
382
  tone: "danger",
385
383
  children: "Blocked"
386
384
  })
387
385
  ] }) : Z.slug === "time-picker" ? /* @__PURE__ */ X("div", {
388
386
  className: "grid gap-3",
389
- children: [/* @__PURE__ */ Y(_, {
387
+ children: [/* @__PURE__ */ Y(g, {
390
388
  label: "Start time",
391
389
  defaultValue: "09:30"
392
- }), /* @__PURE__ */ Y(v, {
390
+ }), /* @__PURE__ */ Y(_, {
393
391
  from: "09:30",
394
392
  to: "17:30"
395
393
  })]
396
- }) : Z.slug === "tour" ? /* @__PURE__ */ Y(Se, {
394
+ }) : Z.slug === "tour" ? /* @__PURE__ */ Y(xe, {
397
395
  index: 1,
398
396
  steps: [
399
397
  {
@@ -409,7 +407,7 @@ function $(Z, we, Q, $, Te) {
409
407
  description: "Open docs, API and preview together."
410
408
  }
411
409
  ]
412
- }) : Z.slug === "tree-view" ? /* @__PURE__ */ Y(N, {
410
+ }) : Z.slug === "tree-view" ? /* @__PURE__ */ Y(M, {
413
411
  defaultExpandedKeys: ["components", "inputs"],
414
412
  selectedKey: "button",
415
413
  items: [{
@@ -430,41 +428,41 @@ function $(Z, we, Q, $, Te) {
430
428
  }) : Z.slug === "typography" ? /* @__PURE__ */ X("div", {
431
429
  className: "grid gap-3",
432
430
  children: [
433
- /* @__PURE__ */ Y(B, {
431
+ /* @__PURE__ */ Y(fe, {
434
432
  level: 2,
435
433
  children: "Dashboard typography"
436
434
  }),
437
- /* @__PURE__ */ Y(H, { children: "Readable defaults for product copy and operational labels." }),
435
+ /* @__PURE__ */ Y(B, { children: "Readable defaults for product copy and operational labels." }),
438
436
  /* @__PURE__ */ Y("blockquote", {
439
437
  className: "border-l-4 pl-4 italic text-muted-foreground",
440
438
  children: "Ship simple text hierarchy before adding decorative layout layers."
441
439
  }),
442
- /* @__PURE__ */ X(H, {
440
+ /* @__PURE__ */ X(B, {
443
441
  muted: !0,
444
442
  size: "sm",
445
443
  children: [
446
444
  "Use ",
447
- /* @__PURE__ */ Y(V, { children: "Mark" }),
445
+ /* @__PURE__ */ Y(z, { children: "Mark" }),
448
446
  " only for emphasis that matters."
449
447
  ]
450
448
  })
451
449
  ]
452
- }) : Z.slug === "range-slider" ? /* @__PURE__ */ Y(de, {
450
+ }) : Z.slug === "range-slider" ? /* @__PURE__ */ Y(le, {
453
451
  label: "Revenue band",
454
452
  description: "Filter a metric window.",
455
453
  defaultValue: [20, 80],
456
454
  showValue: !0
457
- }) : Z.slug === "rating" ? /* @__PURE__ */ Y(ue, {
455
+ }) : Z.slug === "rating" ? /* @__PURE__ */ Y(ce, {
458
456
  defaultValue: 4,
459
457
  labels: { clear: "Reset" }
460
- }) : Z.slug === "otp-input" ? /* @__PURE__ */ Y(ce, {
458
+ }) : Z.slug === "otp-input" ? /* @__PURE__ */ Y(se, {
461
459
  value: Q.textValue.replace(/\D/g, "").slice(0, 6),
462
460
  onValueChange: (e) => $({ textValue: e })
463
- }) : Z.slug === "color-input" ? /* @__PURE__ */ Y(se, {
461
+ }) : Z.slug === "color-input" ? /* @__PURE__ */ Y(i, {
462
+ type: "color",
464
463
  defaultValue: "#22c55e",
465
- label: "Accent color",
466
- description: "Theme token preview."
467
- }) : Z.slug === "tag-input" ? /* @__PURE__ */ Y(h, {
464
+ "aria-label": "Accent color"
465
+ }) : Z.slug === "tag-input" ? /* @__PURE__ */ Y(de, {
468
466
  defaultValue: [
469
467
  "dashboard",
470
468
  "beta",
@@ -484,7 +482,7 @@ function $(Z, we, Q, $, Te) {
484
482
  key: "month",
485
483
  label: "Month"
486
484
  }
487
- ] }) : Z.slug === "quick-action-grid" || Z.slug === "command-bar" ? /* @__PURE__ */ Y(m, {
485
+ ] }) : Z.slug === "quick-action-grid" || Z.slug === "command-bar" ? /* @__PURE__ */ Y(ee, {
488
486
  columns: Z.slug === "command-bar" ? 4 : 3,
489
487
  compact: Z.slug === "command-bar",
490
488
  items: [
@@ -588,7 +586,7 @@ function $(Z, we, Q, $, Te) {
588
586
  description: "Confirm release"
589
587
  }
590
588
  ]
591
- }) : Z.slug === "alert" ? /* @__PURE__ */ Y(y, {
589
+ }) : Z.slug === "alert" ? /* @__PURE__ */ Y(v, {
592
590
  tone: "warning",
593
591
  title: "Review needed",
594
592
  description: "Billing rules changed and one approval is pending.",
@@ -596,7 +594,7 @@ function $(Z, we, Q, $, Te) {
596
594
  size: "sm",
597
595
  children: "Open"
598
596
  })
599
- }) : Z.slug === "page-state" ? /* @__PURE__ */ Y(b, {
597
+ }) : Z.slug === "page-state" ? /* @__PURE__ */ Y(y, {
600
598
  title: "Workspace connected",
601
599
  description: "The route is ready to accept live data and team actions.",
602
600
  tone: "success",
@@ -604,7 +602,7 @@ function $(Z, we, Q, $, Te) {
604
602
  size: "sm",
605
603
  children: "Continue"
606
604
  })
607
- }) : Z.slug === "data-list" || Z.slug === "list" ? /* @__PURE__ */ Y(D, { items: [
605
+ }) : Z.slug === "data-list" || Z.slug === "list" ? /* @__PURE__ */ Y(E, { items: [
608
606
  {
609
607
  key: "1",
610
608
  title: "Enterprise plan",
@@ -623,7 +621,7 @@ function $(Z, we, Q, $, Te) {
623
621
  description: "Lightweight team setup",
624
622
  extra: "$49"
625
623
  }
626
- ] }) : Z.slug === "status-legend" ? /* @__PURE__ */ Y(M, {
624
+ ] }) : Z.slug === "status-legend" ? /* @__PURE__ */ Y(j, {
627
625
  title: "Delivery states",
628
626
  items: [
629
627
  {
@@ -648,7 +646,7 @@ function $(Z, we, Q, $, Te) {
648
646
  count: 1
649
647
  }
650
648
  ]
651
- }) : Z.slug === "trend-card" || Z.slug === "comparison-card" ? /* @__PURE__ */ Y(P, {
649
+ }) : Z.slug === "trend-card" || Z.slug === "comparison-card" ? /* @__PURE__ */ Y(N, {
652
650
  title: Z.slug === "trend-card" ? "Weekly revenue" : "Current vs previous",
653
651
  value: "$84.2k",
654
652
  description: "Compared with last month",
@@ -672,7 +670,7 @@ function $(Z, we, Q, $, Te) {
672
670
  children: "Risk"
673
671
  })
674
672
  ]
675
- }) : Z.slug === "notification-center" ? /* @__PURE__ */ Y(D, { items: [
673
+ }) : Z.slug === "notification-center" ? /* @__PURE__ */ Y(E, { items: [
676
674
  {
677
675
  key: "1",
678
676
  title: "Build completed",
@@ -700,11 +698,11 @@ function $(Z, we, Q, $, Te) {
700
698
  size: "sm",
701
699
  children: "Save label"
702
700
  })]
703
- }) : Z.slug === "json-input" ? /* @__PURE__ */ Y(g, {
701
+ }) : Z.slug === "json-input" ? /* @__PURE__ */ Y(h, {
704
702
  value: "{\n \"workspace\": \"azamat-ui\",\n \"theme\": \"dashboard\"\n}",
705
703
  onValueChange: () => void 0,
706
704
  rows: 7
707
- }) : Z.slug === "kanban" ? /* @__PURE__ */ Y(w, { columns: [
705
+ }) : Z.slug === "kanban" ? /* @__PURE__ */ Y(C, { columns: [
708
706
  {
709
707
  key: "todo",
710
708
  title: "Todo",
@@ -732,24 +730,24 @@ function $(Z, we, Q, $, Te) {
732
730
  description: "Release package and sync docs."
733
731
  }]
734
732
  }
735
- ] }) : Z.slug === "menubar" ? /* @__PURE__ */ X(he, { children: [
736
- /* @__PURE__ */ X(W, { children: [/* @__PURE__ */ Y(G, { children: "File" }), /* @__PURE__ */ X(ge, {
733
+ ] }) : Z.slug === "menubar" ? /* @__PURE__ */ X(me, { children: [
734
+ /* @__PURE__ */ X(U, { children: [/* @__PURE__ */ Y(W, { children: "File" }), /* @__PURE__ */ X(he, {
737
735
  className: "relative mt-2",
738
- children: [/* @__PURE__ */ Y(U, { children: "New page" }), /* @__PURE__ */ Y(U, { children: "Duplicate" })]
736
+ children: [/* @__PURE__ */ Y(H, { children: "New page" }), /* @__PURE__ */ Y(H, { children: "Duplicate" })]
739
737
  })] }),
740
- /* @__PURE__ */ Y(W, { children: /* @__PURE__ */ Y(G, { children: "Edit" }) }),
741
- /* @__PURE__ */ Y(W, { children: /* @__PURE__ */ Y(G, { children: "View" }) })
742
- ] }) : Z.slug === "navigation-menu" ? /* @__PURE__ */ Y(_e, { children: /* @__PURE__ */ X(ve, { children: [
743
- /* @__PURE__ */ Y(K, { children: /* @__PURE__ */ Y(q, {
738
+ /* @__PURE__ */ Y(U, { children: /* @__PURE__ */ Y(W, { children: "Edit" }) }),
739
+ /* @__PURE__ */ Y(U, { children: /* @__PURE__ */ Y(W, { children: "View" }) })
740
+ ] }) : Z.slug === "navigation-menu" ? /* @__PURE__ */ Y(ge, { children: /* @__PURE__ */ X(_e, { children: [
741
+ /* @__PURE__ */ Y(G, { children: /* @__PURE__ */ Y(K, {
744
742
  href: "#",
745
743
  active: !0,
746
744
  children: "Overview"
747
745
  }) }),
748
- /* @__PURE__ */ Y(K, { children: /* @__PURE__ */ Y(q, {
746
+ /* @__PURE__ */ Y(G, { children: /* @__PURE__ */ Y(K, {
749
747
  href: "#",
750
748
  children: "Components"
751
749
  }) }),
752
- /* @__PURE__ */ Y(K, { children: /* @__PURE__ */ Y(q, {
750
+ /* @__PURE__ */ Y(G, { children: /* @__PURE__ */ Y(K, {
753
751
  href: "#",
754
752
  children: "Docs"
755
753
  }) })
@@ -787,7 +785,7 @@ function $(Z, we, Q, $, Te) {
787
785
  })]
788
786
  }) })
789
787
  ]
790
- }) : Z.slug === "property-grid" ? /* @__PURE__ */ Y(O, {
788
+ }) : Z.slug === "property-grid" ? /* @__PURE__ */ Y(D, {
791
789
  columns: 3,
792
790
  items: [
793
791
  {
@@ -809,15 +807,18 @@ function $(Z, we, Q, $, Te) {
809
807
  description: "Editable local files"
810
808
  }
811
809
  ]
812
- }) : Z.slug === "qr-code" ? /* @__PURE__ */ Y(L, {
810
+ }) : Z.slug === "qr-code" ? /* @__PURE__ */ Y(I, {
813
811
  value: "https://azamat-ui.vercel.app",
814
812
  alt: "Azamat UI"
815
- }) : Z.slug === "quantity-stepper" ? /* @__PURE__ */ Y(le, {
816
- defaultValue: 3,
813
+ }) : Z.slug === "quantity-stepper" ? /* @__PURE__ */ Y(i, {
814
+ kind: "quantity",
815
+ value: 3,
817
816
  min: 1,
818
- max: 10
819
- }) : Z.slug === "resizable-panel" ? /* @__PURE__ */ X(be, { children: [
820
- /* @__PURE__ */ X(J, {
817
+ max: 10,
818
+ showControls: !0,
819
+ "aria-label": "Quantity"
820
+ }) : Z.slug === "resizable-panel" ? /* @__PURE__ */ X(ye, { children: [
821
+ /* @__PURE__ */ X(q, {
821
822
  defaultSize: "45%",
822
823
  children: [/* @__PURE__ */ Y("p", {
823
824
  className: "text-sm font-medium",
@@ -827,8 +828,8 @@ function $(Z, we, Q, $, Te) {
827
828
  children: "Resize this surface in product screens with long content."
828
829
  })]
829
830
  }),
830
- /* @__PURE__ */ Y(ye, {}),
831
- /* @__PURE__ */ X(J, {
831
+ /* @__PURE__ */ Y(ve, {}),
832
+ /* @__PURE__ */ X(q, {
832
833
  defaultSize: "55%",
833
834
  children: [/* @__PURE__ */ Y("p", {
834
835
  className: "text-sm font-medium",
@@ -838,7 +839,7 @@ function $(Z, we, Q, $, Te) {
838
839
  children: "Use for side-by-side data and editing tools."
839
840
  })]
840
841
  })
841
- ] }) : Z.slug === "rich-text-editor" ? /* @__PURE__ */ Y(xe, {
842
+ ] }) : Z.slug === "rich-text-editor" ? /* @__PURE__ */ Y(be, {
842
843
  value: "<p><strong>Release note</strong> with product details.</p>",
843
844
  onValueChange: () => void 0
844
845
  }) : Z.slug === "saved-filter-select" ? /* @__PURE__ */ Y(oe, {
@@ -928,7 +929,7 @@ function $(Z, we, Q, $, Te) {
928
929
  children: "Display surfaces should prioritize readable values, compact metadata, and clear scanning order."
929
930
  })] }), /* @__PURE__ */ Y(s, {
930
931
  variant: "outline",
931
- children: Te
932
+ children: Ce
932
933
  })]
933
934
  }), /* @__PURE__ */ Y("div", {
934
935
  className: "grid gap-3 md:grid-cols-3",
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e={code:`import { useState } from "react"
2
- import { Button, Combobox } from "@/index"
2
+ import { Button, Select } from "tembro"
3
3
 
4
4
  const teammateOptions = [
5
5
  { value: "azamat", label: "Azamat", description: "Design system owner" },
@@ -12,12 +12,13 @@ export function Example() {
12
12
 
13
13
  return (
14
14
  <div className="space-y-3">
15
- <Combobox
15
+ <Select
16
16
  value={value}
17
17
  onValueChange={(nextValue) => setValue(nextValue ?? "azamat")}
18
18
  options={teammateOptions}
19
19
  placeholder="Assign owner"
20
20
  searchPlaceholder="Search teammate..."
21
+ searchable
21
22
  />
22
23
  <div className="rounded-2xl border border-[color:var(--aui-surface-border)] bg-[color:var(--aui-surface-muted)] px-4 py-3 text-sm aui-text-muted">
23
24
  Current owner: <strong>{value}</strong>
@@ -25,4 +26,4 @@ export function Example() {
25
26
  <Button variant="outline" onClick={() => setValue("nodira")}>Pick Nodira</Button>
26
27
  </div>
27
28
  )
28
- }`,htmlCode:`<button data-slot="combobox-trigger">Open combobox</button>`,cliCommand:`npx tembro add combobox`,highlights:[`Search-led selection`,`Controlled value`,`Description rows`,`Fast reassignment flow`],relatedBlockSlugs:[`settings-form`,`users-table`,`crm-dashboard`],scenarios:[{title:`Owner assignment`,description:`Use combobox when the list is local but still benefits from search.`},{title:`Dense admin forms`,description:`Keep reassignment fast without opening a full modal.`},{title:`Command-like search`,description:`Useful when discoverability matters more than plain select semantics.`}],capabilityNotes:[`Use Combobox when users need type-to-find behavior on a local option set.`,`Keep option labels and descriptions short to avoid noisy dropdown rows.`,`Prefer controlled value in admin workflows so state stays explicit.`,`If options come from the server, move to AsyncSelect instead of overloading Combobox.`]};exports.comboboxMock=e;
29
+ }`,htmlCode:`<button data-slot="combobox-trigger">Open combobox</button>`,cliCommand:`npx tembro add select`,highlights:[`Search-led selection`,`Controlled value`,`Description rows`,`Fast reassignment flow`],relatedBlockSlugs:[`settings-form`,`users-table`,`crm-dashboard`],scenarios:[{title:`Owner assignment`,description:`Use combobox when the list is local but still benefits from search.`},{title:`Dense admin forms`,description:`Keep reassignment fast without opening a full modal.`},{title:`Command-like search`,description:`Useful when discoverability matters more than plain select semantics.`}],capabilityNotes:[`Use Combobox when users need type-to-find behavior on a local option set.`,`Keep option labels and descriptions short to avoid noisy dropdown rows.`,`Prefer controlled value in admin workflows so state stays explicit.`,`If options come from the server, move to AsyncSelect instead of overloading Combobox.`]};exports.comboboxMock=e;
@@ -1,8 +1,8 @@
1
1
  //#region src/showcase/premium/combobox/mock.ts
2
2
  var e = {
3
- code: "import { useState } from \"react\"\nimport { Button, Combobox } from \"@/index\"\n\nconst teammateOptions = [\n { value: \"azamat\", label: \"Azamat\", description: \"Design system owner\" },\n { value: \"nodira\", label: \"Nodira\", description: \"Operations lead\" },\n { value: \"sardor\", label: \"Sardor\", description: \"Frontend engineer\" },\n]\n\nexport function Example() {\n const [value, setValue] = useState(\"azamat\")\n\n return (\n <div className=\"space-y-3\">\n <Combobox\n value={value}\n onValueChange={(nextValue) => setValue(nextValue ?? \"azamat\")}\n options={teammateOptions}\n placeholder=\"Assign owner\"\n searchPlaceholder=\"Search teammate...\"\n />\n <div className=\"rounded-2xl border border-[color:var(--aui-surface-border)] bg-[color:var(--aui-surface-muted)] px-4 py-3 text-sm aui-text-muted\">\n Current owner: <strong>{value}</strong>\n </div>\n <Button variant=\"outline\" onClick={() => setValue(\"nodira\")}>Pick Nodira</Button>\n </div>\n )\n}",
3
+ code: "import { useState } from \"react\"\nimport { Button, Select } from \"tembro\"\n\nconst teammateOptions = [\n { value: \"azamat\", label: \"Azamat\", description: \"Design system owner\" },\n { value: \"nodira\", label: \"Nodira\", description: \"Operations lead\" },\n { value: \"sardor\", label: \"Sardor\", description: \"Frontend engineer\" },\n]\n\nexport function Example() {\n const [value, setValue] = useState(\"azamat\")\n\n return (\n <div className=\"space-y-3\">\n <Select\n value={value}\n onValueChange={(nextValue) => setValue(nextValue ?? \"azamat\")}\n options={teammateOptions}\n placeholder=\"Assign owner\"\n searchPlaceholder=\"Search teammate...\"\n searchable\n />\n <div className=\"rounded-2xl border border-[color:var(--aui-surface-border)] bg-[color:var(--aui-surface-muted)] px-4 py-3 text-sm aui-text-muted\">\n Current owner: <strong>{value}</strong>\n </div>\n <Button variant=\"outline\" onClick={() => setValue(\"nodira\")}>Pick Nodira</Button>\n </div>\n )\n}",
4
4
  htmlCode: "<button data-slot=\"combobox-trigger\">Open combobox</button>",
5
- cliCommand: "npx tembro add combobox",
5
+ cliCommand: "npx tembro add select",
6
6
  highlights: [
7
7
  "Search-led selection",
8
8
  "Controlled value",
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../components/ui/button/index.cjs"),n=require("../../../components/ui/badge/index.cjs"),r=require("../../../components/inputs/combobox.cjs");let i=require("react");i=e.__toESM(i,1);let a=require("react/jsx-runtime");var o=`rounded-[22px] border border-[color:var(--aui-divider)] bg-[color:var(--aui-page-bg)] p-5`,s=[{value:`azamat`,label:`Azamat`,description:`Design system owner`},{value:`nodira`,label:`Nodira`,description:`Operations lead`},{value:`sardor`,label:`Sardor`,description:`Frontend engineer`},{value:`kamola`,label:`Kamola`,description:`Product manager`}];function c({state:e,setState:c}){let l=s.some(t=>t.value===e.selectValue)?e.selectValue:`azamat`,u=s.find(e=>e.value===l)??s[0],[d,f]=i.useState(``);return(0,a.jsxs)(`div`,{className:`space-y-5`,children:[(0,a.jsxs)(`section`,{className:`rounded-[24px] border border-[color:var(--aui-divider)] bg-[color:var(--aui-page-bg)] p-5 sm:p-6`,children:[(0,a.jsxs)(`div`,{className:`flex flex-col gap-6 xl:flex-row xl:items-start xl:justify-between`,children:[(0,a.jsxs)(`div`,{className:`max-w-xl`,children:[(0,a.jsx)(`p`,{className:`text-xs font-semibold uppercase tracking-[0.26em] aui-text-muted`,children:`Search selection`}),(0,a.jsx)(`h3`,{className:`mt-3 text-2xl font-semibold tracking-tight aui-text-strong`,children:`Combobox is the keyboard-first local member`}),(0,a.jsx)(`p`,{className:`mt-3 max-w-lg text-sm leading-6 aui-text-muted`,children:`Use it when users know part of the option name and need to jump directly through local filtering instead of scanning a longer static Select list.`})]}),(0,a.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,a.jsx)(n.Badge,{variant:`outline`,className:`rounded-full`,children:`Searchable`}),(0,a.jsx)(n.Badge,{variant:`outline`,className:`rounded-full`,children:`Controlled`}),(0,a.jsx)(n.Badge,{variant:`outline`,className:`rounded-full`,children:`Local options`})]})]}),(0,a.jsxs)(`div`,{className:`mt-6 grid gap-4 xl:grid-cols-[1.1fr_0.9fr]`,children:[(0,a.jsxs)(`div`,{className:o,children:[(0,a.jsx)(`p`,{className:`text-sm font-medium aui-text-muted`,children:`Assign component owner`}),(0,a.jsx)(`div`,{className:`mt-3`,children:(0,a.jsx)(r.Combobox,{value:l,options:s.map(e=>({...e})),onValueChange:e=>c({selectValue:e??`azamat`}),placeholder:`Choose teammate`,searchPlaceholder:`Search teammate...`,clearable:!0,allowDeselect:!0,showSelectedDescription:!0,onSearchChange:f})})]}),(0,a.jsxs)(`div`,{className:o,children:[(0,a.jsx)(`p`,{className:`text-sm font-medium aui-text-muted`,children:`Selection summary`}),(0,a.jsx)(`p`,{className:`mt-3 text-lg font-semibold aui-text-strong`,children:u.label}),(0,a.jsx)(`p`,{className:`mt-2 text-sm leading-6 aui-text-muted`,children:u.description}),(0,a.jsx)(`p`,{className:`mt-3 text-sm leading-6 aui-text-muted`,children:`Keep Combobox for local search-heavy reassignment flows. If options are remote, move back to the Select family and choose AsyncSelect instead.`})]})]})]}),(0,a.jsx)(`section`,{className:o,children:(0,a.jsxs)(`div`,{className:`flex flex-col gap-5 lg:flex-row lg:items-center lg:justify-between`,children:[(0,a.jsxs)(`div`,{children:[(0,a.jsx)(`p`,{className:`text-xs font-semibold uppercase tracking-[0.24em] aui-text-muted`,children:`Live state`}),(0,a.jsxs)(`h4`,{className:`mt-2 text-lg font-semibold aui-text-strong`,children:[`Current owner: `,u.label]}),(0,a.jsx)(`p`,{className:`mt-2 text-sm leading-6 aui-text-muted`,children:`Use quick actions below to verify that the value stays controlled outside the dropdown itself.`}),(0,a.jsxs)(`p`,{className:`mt-2 text-sm leading-6 aui-text-muted`,children:[`Search query: `,d||`empty`]})]}),(0,a.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,a.jsx)(t.Button,{type:`button`,size:`sm`,onClick:()=>c({selectValue:`nodira`}),children:`Pick Nodira`}),(0,a.jsx)(t.Button,{type:`button`,size:`sm`,variant:`secondary`,onClick:()=>c({selectValue:`azamat`}),children:`Reset`})]})]})})]})}exports.ComboboxShowcase=c;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../components/ui/button/index.cjs"),n=require("../../../components/ui/badge/index.cjs"),r=require("../../../components/ui/select/index.cjs");let i=require("react");i=e.__toESM(i,1);let a=require("react/jsx-runtime");var o=`rounded-[22px] border border-[color:var(--aui-divider)] bg-[color:var(--aui-page-bg)] p-5`,s=[{value:`azamat`,label:`Azamat`,description:`Design system owner`},{value:`nodira`,label:`Nodira`,description:`Operations lead`},{value:`sardor`,label:`Sardor`,description:`Frontend engineer`},{value:`kamola`,label:`Kamola`,description:`Product manager`}];function c({state:e,setState:c}){let l=s.some(t=>t.value===e.selectValue)?e.selectValue:`azamat`,u=s.find(e=>e.value===l)??s[0],[d,f]=i.useState(``);return(0,a.jsxs)(`div`,{className:`space-y-5`,children:[(0,a.jsxs)(`section`,{className:`rounded-[24px] border border-[color:var(--aui-divider)] bg-[color:var(--aui-page-bg)] p-5 sm:p-6`,children:[(0,a.jsxs)(`div`,{className:`flex flex-col gap-6 xl:flex-row xl:items-start xl:justify-between`,children:[(0,a.jsxs)(`div`,{className:`max-w-xl`,children:[(0,a.jsx)(`p`,{className:`text-xs font-semibold uppercase tracking-[0.26em] aui-text-muted`,children:`Search selection`}),(0,a.jsx)(`h3`,{className:`mt-3 text-2xl font-semibold tracking-tight aui-text-strong`,children:`Combobox is the keyboard-first local member`}),(0,a.jsx)(`p`,{className:`mt-3 max-w-lg text-sm leading-6 aui-text-muted`,children:`Use it when users know part of the option name and need to jump directly through local filtering instead of scanning a longer static Select list.`})]}),(0,a.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,a.jsx)(n.Badge,{variant:`outline`,className:`rounded-full`,children:`Searchable`}),(0,a.jsx)(n.Badge,{variant:`outline`,className:`rounded-full`,children:`Controlled`}),(0,a.jsx)(n.Badge,{variant:`outline`,className:`rounded-full`,children:`Local options`})]})]}),(0,a.jsxs)(`div`,{className:`mt-6 grid gap-4 xl:grid-cols-[1.1fr_0.9fr]`,children:[(0,a.jsxs)(`div`,{className:o,children:[(0,a.jsx)(`p`,{className:`text-sm font-medium aui-text-muted`,children:`Assign component owner`}),(0,a.jsx)(`div`,{className:`mt-3`,children:(0,a.jsx)(r.Select,{value:l,options:s.map(e=>({...e})),onValueChange:e=>c({selectValue:e??`azamat`}),placeholder:`Choose teammate`,searchPlaceholder:`Search teammate...`,searchable:!0,clearable:!0,showSelectedDescription:!0,onSearchChange:f})})]}),(0,a.jsxs)(`div`,{className:o,children:[(0,a.jsx)(`p`,{className:`text-sm font-medium aui-text-muted`,children:`Selection summary`}),(0,a.jsx)(`p`,{className:`mt-3 text-lg font-semibold aui-text-strong`,children:u.label}),(0,a.jsx)(`p`,{className:`mt-2 text-sm leading-6 aui-text-muted`,children:u.description}),(0,a.jsx)(`p`,{className:`mt-3 text-sm leading-6 aui-text-muted`,children:`Keep Combobox for local search-heavy reassignment flows. If options are remote, move back to the Select family and choose AsyncSelect instead.`})]})]})]}),(0,a.jsx)(`section`,{className:o,children:(0,a.jsxs)(`div`,{className:`flex flex-col gap-5 lg:flex-row lg:items-center lg:justify-between`,children:[(0,a.jsxs)(`div`,{children:[(0,a.jsx)(`p`,{className:`text-xs font-semibold uppercase tracking-[0.24em] aui-text-muted`,children:`Live state`}),(0,a.jsxs)(`h4`,{className:`mt-2 text-lg font-semibold aui-text-strong`,children:[`Current owner: `,u.label]}),(0,a.jsx)(`p`,{className:`mt-2 text-sm leading-6 aui-text-muted`,children:`Use quick actions below to verify that the value stays controlled outside the dropdown itself.`}),(0,a.jsxs)(`p`,{className:`mt-2 text-sm leading-6 aui-text-muted`,children:[`Search query: `,d||`empty`]})]}),(0,a.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,a.jsx)(t.Button,{type:`button`,size:`sm`,onClick:()=>c({selectValue:`nodira`}),children:`Pick Nodira`}),(0,a.jsx)(t.Button,{type:`button`,size:`sm`,variant:`secondary`,onClick:()=>c({selectValue:`azamat`}),children:`Reset`})]})]})})]})}exports.ComboboxShowcase=c;
@@ -1,6 +1,6 @@
1
1
  import { Button as e } from "../../../components/ui/button/index.js";
2
2
  import { Badge as t } from "../../../components/ui/badge/index.js";
3
- import { Combobox as n } from "../../../components/inputs/combobox.js";
3
+ import { Select as n } from "../../../components/ui/select/index.js";
4
4
  import * as r from "react";
5
5
  import { jsx as i, jsxs as a } from "react/jsx-runtime";
6
6
  //#region src/showcase/premium/combobox/showcase.tsx
@@ -85,8 +85,8 @@ function c({ state: c, setState: l }) {
85
85
  onValueChange: (e) => l({ selectValue: e ?? "azamat" }),
86
86
  placeholder: "Choose teammate",
87
87
  searchPlaceholder: "Search teammate...",
88
+ searchable: !0,
88
89
  clearable: !0,
89
- allowDeselect: !0,
90
90
  showSelectedDescription: !0,
91
91
  onSearchChange: p
92
92
  })