tembro 2.0.4 → 2.0.6

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 (401) hide show
  1. package/dist/components/actions/action-menu.cjs +1 -1
  2. package/dist/components/actions/action-menu.d.ts +13 -1
  3. package/dist/components/actions/action-menu.js +87 -61
  4. package/dist/components/actions/button-group.cjs +1 -1
  5. package/dist/components/actions/button-group.d.ts +9 -1
  6. package/dist/components/actions/button-group.js +58 -14
  7. package/dist/components/actions/copy-button.cjs +1 -1
  8. package/dist/components/actions/copy-button.d.ts +2 -1
  9. package/dist/components/actions/copy-button.js +13 -11
  10. package/dist/components/calendar/calendar.cjs +1 -1
  11. package/dist/components/calendar/calendar.d.ts +14 -1
  12. package/dist/components/calendar/calendar.js +207 -128
  13. package/dist/components/calendar/date-picker.cjs +1 -1
  14. package/dist/components/calendar/date-picker.d.ts +3 -1
  15. package/dist/components/calendar/date-picker.js +57 -27
  16. package/dist/components/calendar/date-range-picker.cjs +1 -1
  17. package/dist/components/calendar/date-range-picker.d.ts +10 -1
  18. package/dist/components/calendar/date-range-picker.js +149 -64
  19. package/dist/components/data-table/data-table-pagination.cjs +1 -1
  20. package/dist/components/data-table/data-table-pagination.js +4 -4
  21. package/dist/components/data-table/data-table-toolbar.cjs +1 -1
  22. package/dist/components/data-table/data-table-toolbar.d.ts +5 -1
  23. package/dist/components/data-table/data-table-toolbar.js +36 -23
  24. package/dist/components/data-table/data-table.cjs +1 -1
  25. package/dist/components/data-table/data-table.d.ts +8 -6
  26. package/dist/components/data-table/data-table.js +89 -80
  27. package/dist/components/data-table/demo.cjs +1 -1
  28. package/dist/components/data-table/demo.js +3 -13
  29. package/dist/components/data-table/index.cjs +1 -1
  30. package/dist/components/data-table/index.js +5 -5
  31. package/dist/components/data-table/public.cjs +1 -1
  32. package/dist/components/data-table/public.d.ts +1 -6
  33. package/dist/components/data-table/public.js +7 -12
  34. package/dist/components/display/activity-feed.cjs +1 -1
  35. package/dist/components/display/activity-feed.d.ts +12 -1
  36. package/dist/components/display/activity-feed.js +69 -47
  37. package/dist/components/display/carousel.cjs +1 -1
  38. package/dist/components/display/carousel.d.ts +16 -1
  39. package/dist/components/display/carousel.js +71 -26
  40. package/dist/components/display/code-block.cjs +2 -1
  41. package/dist/components/display/code-block.d.ts +3 -1
  42. package/dist/components/display/code-block.js +33 -19
  43. package/dist/components/display/comparison-card.cjs +1 -1
  44. package/dist/components/display/comparison-card.d.ts +3 -3
  45. package/dist/components/display/comparison-card.js +14 -38
  46. package/dist/components/display/data-state.cjs +1 -1
  47. package/dist/components/display/data-state.d.ts +12 -2
  48. package/dist/components/display/data-state.js +80 -42
  49. package/dist/components/display/demo.cjs +1 -1
  50. package/dist/components/display/demo.js +1 -5
  51. package/dist/components/display/index.cjs +1 -1
  52. package/dist/components/display/index.d.ts +0 -3
  53. package/dist/components/display/index.js +21 -24
  54. package/dist/components/display/smart-card.d.ts +1 -1
  55. package/dist/components/display/status-legend.d.ts +1 -1
  56. package/dist/components/feedback/alert.cjs +1 -1
  57. package/dist/components/feedback/alert.d.ts +6 -1
  58. package/dist/components/feedback/alert.js +49 -19
  59. package/dist/components/feedback/index.cjs +1 -1
  60. package/dist/components/feedback/index.d.ts +0 -2
  61. package/dist/components/feedback/index.js +3 -5
  62. package/dist/components/filters/demo.cjs +1 -1
  63. package/dist/components/filters/demo.js +1 -5
  64. package/dist/components/filters/filter-bar.cjs +1 -1
  65. package/dist/components/filters/filter-bar.d.ts +15 -1
  66. package/dist/components/filters/filter-bar.js +94 -50
  67. package/dist/components/filters/index.cjs +1 -1
  68. package/dist/components/filters/index.d.ts +0 -1
  69. package/dist/components/filters/index.js +3 -4
  70. package/dist/components/form/form-field-shell.cjs +1 -1
  71. package/dist/components/form/form-field-shell.d.ts +17 -3
  72. package/dist/components/form/form-field-shell.js +54 -40
  73. package/dist/components/form/form-input.cjs +1 -1
  74. package/dist/components/form/form-input.d.ts +3 -4
  75. package/dist/components/form/form-input.js +285 -224
  76. package/dist/components/form/form-select.cjs +1 -1
  77. package/dist/components/form/form-select.d.ts +2 -2
  78. package/dist/components/form/form-select.js +49 -35
  79. package/dist/components/form/form-switch.cjs +1 -1
  80. package/dist/components/form/form-switch.js +79 -66
  81. package/dist/components/form/form-textarea.cjs +1 -1
  82. package/dist/components/form/form-textarea.js +59 -48
  83. package/dist/components/form/index.cjs +1 -1
  84. package/dist/components/form/index.js +14 -14
  85. package/dist/components/form/public.cjs +1 -1
  86. package/dist/components/form/public.d.ts +0 -8
  87. package/dist/components/form/public.js +7 -15
  88. package/dist/components/inputs/async-select.cjs +1 -1
  89. package/dist/components/inputs/async-select.d.ts +14 -2
  90. package/dist/components/inputs/async-select.js +278 -270
  91. package/dist/components/inputs/combobox.cjs +1 -1
  92. package/dist/components/inputs/combobox.d.ts +5 -1
  93. package/dist/components/inputs/combobox.js +52 -19
  94. package/dist/components/inputs/search-input.d.ts +3 -0
  95. package/dist/components/inputs/simple-select.cjs +1 -1
  96. package/dist/components/inputs/simple-select.d.ts +10 -31
  97. package/dist/components/inputs/simple-select.js +5 -85
  98. package/dist/components/layout/app-sidebar.cjs +1 -1
  99. package/dist/components/layout/app-sidebar.d.ts +4 -1
  100. package/dist/components/layout/app-sidebar.js +152 -132
  101. package/dist/components/layout/breadcrumbs.cjs +1 -1
  102. package/dist/components/layout/breadcrumbs.d.ts +2 -1
  103. package/dist/components/layout/breadcrumbs.js +10 -10
  104. package/dist/components/layout/index.cjs +1 -1
  105. package/dist/components/layout/index.js +3 -3
  106. package/dist/components/layout/stat-card.cjs +1 -1
  107. package/dist/components/layout/stat-card.d.ts +8 -1
  108. package/dist/components/layout/stat-card.js +33 -11
  109. package/dist/components/modern/calendar-scheduler.cjs +1 -1
  110. package/dist/components/modern/calendar-scheduler.d.ts +2 -1
  111. package/dist/components/modern/calendar-scheduler.js +21 -12
  112. package/dist/components/overlay/alert-dialog.cjs +1 -1
  113. package/dist/components/overlay/alert-dialog.d.ts +15 -1
  114. package/dist/components/overlay/alert-dialog.js +102 -27
  115. package/dist/components/overlay/drawer.cjs +1 -1
  116. package/dist/components/overlay/drawer.d.ts +4 -1
  117. package/dist/components/overlay/drawer.js +20 -17
  118. package/dist/components/patterns/index.cjs +1 -1
  119. package/dist/components/patterns/index.d.ts +0 -1
  120. package/dist/components/patterns/index.js +1 -2
  121. package/dist/components/patterns/public.cjs +1 -1
  122. package/dist/components/patterns/public.d.ts +0 -1
  123. package/dist/components/patterns/public.js +1 -2
  124. package/dist/components/ui/button/index.cjs +1 -1
  125. package/dist/components/ui/button/index.d.ts +3 -1
  126. package/dist/components/ui/button/index.js +7 -5
  127. package/dist/components/ui/card/index.cjs +1 -1
  128. package/dist/components/ui/card/index.d.ts +13 -2
  129. package/dist/components/ui/card/index.js +74 -49
  130. package/dist/components/ui/checkbox/index.cjs +1 -1
  131. package/dist/components/ui/checkbox/index.d.ts +8 -0
  132. package/dist/components/ui/checkbox/index.js +16 -14
  133. package/dist/components/ui/collapse/index.cjs +1 -1
  134. package/dist/components/ui/collapse/index.d.ts +17 -3
  135. package/dist/components/ui/collapse/index.js +88 -33
  136. package/dist/components/ui/dialog/index.cjs +1 -1
  137. package/dist/components/ui/dialog/index.d.ts +2 -1
  138. package/dist/components/ui/dialog/index.js +6 -4
  139. package/dist/components/ui/dropdown-menu/index.cjs +1 -1
  140. package/dist/components/ui/dropdown-menu/index.d.ts +9 -4
  141. package/dist/components/ui/dropdown-menu/index.js +87 -62
  142. package/dist/components/ui/input/index.cjs +1 -1
  143. package/dist/components/ui/input/index.d.ts +8 -0
  144. package/dist/components/ui/input/index.js +63 -30
  145. package/dist/components/ui/select/index.cjs +1 -1
  146. package/dist/components/ui/select/index.d.ts +33 -1
  147. package/dist/components/ui/select/index.js +154 -48
  148. package/dist/index.cjs +1 -1
  149. package/dist/index.js +137 -156
  150. package/dist/public-component-surface.cjs +1 -1
  151. package/dist/public-component-surface.js +0 -15
  152. package/dist/showcase/component-api-schema.cjs +1 -1
  153. package/dist/showcase/component-api-schema.js +2 -2
  154. package/dist/showcase/create-demo.cjs +23 -36
  155. package/dist/showcase/create-demo.js +15 -16
  156. package/dist/showcase/fallback.cjs +3 -3
  157. package/dist/showcase/fallback.js +275 -265
  158. package/dist/showcase/premium/accordion/showcase.cjs +1 -1
  159. package/dist/showcase/premium/accordion/showcase.js +36 -5
  160. package/dist/showcase/premium/action-menu/showcase.cjs +1 -1
  161. package/dist/showcase/premium/action-menu/showcase.js +26 -8
  162. package/dist/showcase/premium/activity-feed/showcase.cjs +1 -1
  163. package/dist/showcase/premium/activity-feed/showcase.js +60 -36
  164. package/dist/showcase/premium/alert/showcase.cjs +1 -1
  165. package/dist/showcase/premium/alert/showcase.js +41 -18
  166. package/dist/showcase/premium/alert-dialog/showcase.cjs +1 -1
  167. package/dist/showcase/premium/alert-dialog/showcase.js +35 -7
  168. package/dist/showcase/premium/async-multi-select/mock.cjs +4 -3
  169. package/dist/showcase/premium/async-multi-select/mock.js +5 -5
  170. package/dist/showcase/premium/async-multi-select/showcase.cjs +1 -1
  171. package/dist/showcase/premium/async-multi-select/showcase.js +4 -3
  172. package/dist/showcase/premium/async-select/mock.cjs +1 -1
  173. package/dist/showcase/premium/async-select/mock.js +1 -1
  174. package/dist/showcase/premium/async-select/showcase.cjs +1 -1
  175. package/dist/showcase/premium/async-select/showcase.js +69 -22
  176. package/dist/showcase/premium/button/showcase.cjs +1 -1
  177. package/dist/showcase/premium/button/showcase.js +49 -3
  178. package/dist/showcase/premium/button-group/showcase.cjs +1 -1
  179. package/dist/showcase/premium/button-group/showcase.js +53 -29
  180. package/dist/showcase/premium/calendar/showcase.cjs +1 -1
  181. package/dist/showcase/premium/calendar/showcase.js +7 -2
  182. package/dist/showcase/premium/carousel/showcase.cjs +1 -1
  183. package/dist/showcase/premium/carousel/showcase.js +95 -47
  184. package/dist/showcase/premium/checkbox/showcase.cjs +1 -1
  185. package/dist/showcase/premium/checkbox/showcase.js +143 -67
  186. package/dist/showcase/premium/clearable-input/mock.cjs +4 -3
  187. package/dist/showcase/premium/clearable-input/mock.js +3 -2
  188. package/dist/showcase/premium/clearable-input/showcase.cjs +1 -1
  189. package/dist/showcase/premium/clearable-input/showcase.js +8 -2
  190. package/dist/showcase/premium/collapse/showcase.cjs +1 -1
  191. package/dist/showcase/premium/collapse/showcase.js +7 -0
  192. package/dist/showcase/premium/combobox/showcase.cjs +1 -1
  193. package/dist/showcase/premium/combobox/showcase.d.ts +2 -1
  194. package/dist/showcase/premium/combobox/showcase.js +56 -47
  195. package/dist/showcase/premium/data-table/showcase.cjs +1 -1
  196. package/dist/showcase/premium/data-table/showcase.js +138 -46
  197. package/dist/showcase/premium/data-table-parts/showcase.cjs +1 -1
  198. package/dist/showcase/premium/data-table-parts/showcase.js +16 -14
  199. package/dist/showcase/premium/date-input/mock.cjs +1 -1
  200. package/dist/showcase/premium/date-input/mock.js +1 -1
  201. package/dist/showcase/premium/date-range-picker/showcase.cjs +1 -1
  202. package/dist/showcase/premium/date-range-picker/showcase.js +32 -1
  203. package/dist/showcase/premium/dropdown-menu/showcase.cjs +1 -1
  204. package/dist/showcase/premium/dropdown-menu/showcase.js +88 -54
  205. package/dist/showcase/premium/form-wrapper/mock.cjs +41 -15
  206. package/dist/showcase/premium/form-wrapper/mock.js +4 -4
  207. package/dist/showcase/premium/form-wrapper/showcase.cjs +1 -1
  208. package/dist/showcase/premium/form-wrapper/showcase.js +77 -28
  209. package/dist/showcase/premium/index.cjs +1 -1
  210. package/dist/showcase/premium/index.js +426 -467
  211. package/dist/showcase/premium/input/mock.cjs +4 -1
  212. package/dist/showcase/premium/input/mock.js +1 -1
  213. package/dist/showcase/premium/masked-input/mock.cjs +1 -1
  214. package/dist/showcase/premium/masked-input/mock.js +1 -1
  215. package/dist/showcase/premium/money-input/mock.cjs +1 -1
  216. package/dist/showcase/premium/money-input/mock.js +1 -1
  217. package/dist/showcase/premium/number-input/mock.cjs +1 -1
  218. package/dist/showcase/premium/number-input/mock.js +1 -1
  219. package/dist/showcase/premium/phone-input/mock.cjs +1 -1
  220. package/dist/showcase/premium/phone-input/mock.js +1 -1
  221. package/dist/showcase/premium/quantity-input/mock.cjs +1 -1
  222. package/dist/showcase/premium/quantity-input/mock.js +1 -1
  223. package/dist/showcase/premium/select/mock.cjs +8 -9
  224. package/dist/showcase/premium/select/mock.js +1 -1
  225. package/dist/showcase/premium/select/showcase.cjs +1 -1
  226. package/dist/showcase/premium/select/showcase.js +76 -86
  227. package/dist/showcase/premium/simple-select/mock.cjs +1 -1
  228. package/dist/showcase/premium/simple-select/mock.js +1 -1
  229. package/dist/showcase/premium/simple-select/showcase.cjs +1 -1
  230. package/dist/showcase/premium/simple-select/showcase.js +4 -2
  231. package/dist/showcase/preview-catalog.cjs +7 -10
  232. package/dist/showcase/preview-catalog.js +7 -7
  233. package/dist/showcase/registry-quality.cjs +1 -1
  234. package/dist/showcase/registry-quality.js +0 -23
  235. package/dist/showcase/registry-specific.cjs +1 -1
  236. package/dist/showcase/registry-specific.js +153 -383
  237. package/dist/showcase/render-registry-preview.cjs +1 -1
  238. package/dist/showcase/render-registry-preview.js +169 -197
  239. package/dist/showcase/site-data.cjs +1 -1
  240. package/dist/showcase/site-data.js +197 -941
  241. package/dist/showcase/supplemental.cjs +1 -1
  242. package/dist/showcase/supplemental.js +1 -1
  243. package/dist/showcase/tembro-registry.json.cjs +1 -1
  244. package/dist/showcase/tembro-registry.json.js +33 -51
  245. package/package.json +1 -1
  246. package/packages/cli/dist/index.cjs +2 -2
  247. package/packages/cli/vendor/src/components/actions/action-menu.tsx +149 -83
  248. package/packages/cli/vendor/src/components/actions/button-group.tsx +141 -33
  249. package/packages/cli/vendor/src/components/actions/copy-button.tsx +21 -16
  250. package/packages/cli/vendor/src/components/calendar/calendar.tsx +223 -88
  251. package/packages/cli/vendor/src/components/calendar/date-picker.tsx +73 -29
  252. package/packages/cli/vendor/src/components/calendar/date-range-picker.tsx +154 -49
  253. package/packages/cli/vendor/src/components/data-table/data-table-pagination.tsx +7 -7
  254. package/packages/cli/vendor/src/components/data-table/data-table-toolbar.tsx +71 -50
  255. package/packages/cli/vendor/src/components/data-table/data-table.tsx +86 -73
  256. package/packages/cli/vendor/src/components/data-table/demo.tsx +2 -12
  257. package/packages/cli/vendor/src/components/data-table/public.ts +1 -6
  258. package/packages/cli/vendor/src/components/display/activity-feed.tsx +98 -40
  259. package/packages/cli/vendor/src/components/display/carousel.tsx +104 -6
  260. package/packages/cli/vendor/src/components/display/code-block.tsx +58 -26
  261. package/packages/cli/vendor/src/components/display/comparison-card.tsx +15 -41
  262. package/packages/cli/vendor/src/components/display/data-state.tsx +119 -50
  263. package/packages/cli/vendor/src/components/display/demo.tsx +0 -4
  264. package/packages/cli/vendor/src/components/display/index.ts +0 -3
  265. package/packages/cli/vendor/src/components/display/smart-card.tsx +1 -1
  266. package/packages/cli/vendor/src/components/display/status-legend.tsx +1 -1
  267. package/packages/cli/vendor/src/components/feedback/alert.tsx +86 -28
  268. package/packages/cli/vendor/src/components/feedback/index.ts +0 -2
  269. package/packages/cli/vendor/src/components/filters/demo.tsx +0 -1
  270. package/packages/cli/vendor/src/components/filters/filter-bar.tsx +126 -54
  271. package/packages/cli/vendor/src/components/filters/index.ts +0 -1
  272. package/packages/cli/vendor/src/components/form/form-field-shell.tsx +72 -34
  273. package/packages/cli/vendor/src/components/form/form-input.tsx +127 -23
  274. package/packages/cli/vendor/src/components/form/form-select.tsx +30 -7
  275. package/packages/cli/vendor/src/components/form/form-switch.tsx +77 -58
  276. package/packages/cli/vendor/src/components/form/form-textarea.tsx +65 -51
  277. package/packages/cli/vendor/src/components/form/public.ts +0 -9
  278. package/packages/cli/vendor/src/components/inputs/async-select.tsx +138 -91
  279. package/packages/cli/vendor/src/components/inputs/combobox.tsx +66 -9
  280. package/packages/cli/vendor/src/components/inputs/search-input.tsx +5 -2
  281. package/packages/cli/vendor/src/components/inputs/simple-select.tsx +20 -162
  282. package/packages/cli/vendor/src/components/layout/app-sidebar.tsx +42 -1
  283. package/packages/cli/vendor/src/components/layout/breadcrumbs.tsx +17 -8
  284. package/packages/cli/vendor/src/components/layout/stat-card.tsx +63 -23
  285. package/packages/cli/vendor/src/components/modern/calendar-scheduler.tsx +32 -22
  286. package/packages/cli/vendor/src/components/overlay/alert-dialog.tsx +148 -24
  287. package/packages/cli/vendor/src/components/overlay/drawer.tsx +42 -30
  288. package/packages/cli/vendor/src/components/patterns/index.ts +0 -1
  289. package/packages/cli/vendor/src/components/patterns/public.ts +0 -1
  290. package/packages/cli/vendor/src/components/ui/button/index.tsx +27 -17
  291. package/packages/cli/vendor/src/components/ui/card/index.tsx +95 -25
  292. package/packages/cli/vendor/src/components/ui/checkbox/index.tsx +22 -5
  293. package/packages/cli/vendor/src/components/ui/collapse/index.tsx +97 -16
  294. package/packages/cli/vendor/src/components/ui/dialog/index.tsx +12 -8
  295. package/packages/cli/vendor/src/components/ui/dropdown-menu/index.tsx +82 -28
  296. package/packages/cli/vendor/src/components/ui/input/index.tsx +98 -0
  297. package/packages/cli/vendor/src/components/ui/select/index.tsx +227 -34
  298. package/packages/cli/vendor/src/public-component-surface.ts +0 -3
  299. package/packages/cli/vendor/src/showcase/component-api-schema.ts +2 -2
  300. package/packages/cli/vendor/src/showcase/create-demo.tsx +44 -58
  301. package/packages/cli/vendor/src/showcase/fallback.tsx +80 -99
  302. package/packages/cli/vendor/src/showcase/premium/accordion/showcase.tsx +32 -2
  303. package/packages/cli/vendor/src/showcase/premium/action-menu/showcase.tsx +12 -3
  304. package/packages/cli/vendor/src/showcase/premium/activity-feed/showcase.tsx +15 -2
  305. package/packages/cli/vendor/src/showcase/premium/alert/showcase.tsx +32 -17
  306. package/packages/cli/vendor/src/showcase/premium/alert-dialog/showcase.tsx +28 -3
  307. package/packages/cli/vendor/src/showcase/premium/async-multi-select/mock.ts +6 -5
  308. package/packages/cli/vendor/src/showcase/premium/async-multi-select/showcase.tsx +5 -4
  309. package/packages/cli/vendor/src/showcase/premium/async-select/mock.ts +1 -1
  310. package/packages/cli/vendor/src/showcase/premium/async-select/showcase.tsx +36 -0
  311. package/packages/cli/vendor/src/showcase/premium/button/showcase.tsx +26 -5
  312. package/packages/cli/vendor/src/showcase/premium/button-group/showcase.tsx +20 -3
  313. package/packages/cli/vendor/src/showcase/premium/calendar/showcase.tsx +5 -0
  314. package/packages/cli/vendor/src/showcase/premium/carousel/showcase.tsx +33 -5
  315. package/packages/cli/vendor/src/showcase/premium/checkbox/showcase.tsx +46 -3
  316. package/packages/cli/vendor/src/showcase/premium/clearable-input/mock.ts +5 -3
  317. package/packages/cli/vendor/src/showcase/premium/clearable-input/showcase.tsx +5 -2
  318. package/packages/cli/vendor/src/showcase/premium/collapse/showcase.tsx +4 -0
  319. package/packages/cli/vendor/src/showcase/premium/combobox/showcase.tsx +8 -0
  320. package/packages/cli/vendor/src/showcase/premium/data-table/showcase.tsx +77 -27
  321. package/packages/cli/vendor/src/showcase/premium/data-table-parts/showcase.tsx +14 -14
  322. package/packages/cli/vendor/src/showcase/premium/date-input/mock.ts +1 -1
  323. package/packages/cli/vendor/src/showcase/premium/date-range-picker/showcase.tsx +7 -0
  324. package/packages/cli/vendor/src/showcase/premium/dropdown-menu/showcase.tsx +46 -3
  325. package/packages/cli/vendor/src/showcase/premium/form-wrapper/mock.ts +70 -44
  326. package/packages/cli/vendor/src/showcase/premium/form-wrapper/showcase.tsx +129 -12
  327. package/packages/cli/vendor/src/showcase/premium/index.ts +7 -24
  328. package/packages/cli/vendor/src/showcase/premium/input/mock.ts +2 -2
  329. package/packages/cli/vendor/src/showcase/premium/masked-input/mock.ts +1 -1
  330. package/packages/cli/vendor/src/showcase/premium/money-input/mock.ts +1 -1
  331. package/packages/cli/vendor/src/showcase/premium/number-input/mock.ts +1 -1
  332. package/packages/cli/vendor/src/showcase/premium/phone-input/mock.ts +1 -1
  333. package/packages/cli/vendor/src/showcase/premium/quantity-input/mock.ts +1 -1
  334. package/packages/cli/vendor/src/showcase/premium/select/mock.ts +1 -1
  335. package/packages/cli/vendor/src/showcase/premium/select/showcase.tsx +13 -21
  336. package/packages/cli/vendor/src/showcase/premium/simple-select/mock.ts +1 -1
  337. package/packages/cli/vendor/src/showcase/premium/simple-select/showcase.tsx +2 -1
  338. package/packages/cli/vendor/src/showcase/preview-catalog.tsx +7 -7
  339. package/packages/cli/vendor/src/showcase/registry-quality.ts +4 -28
  340. package/packages/cli/vendor/src/showcase/registry-specific.tsx +10 -186
  341. package/packages/cli/vendor/src/showcase/render-registry-preview.tsx +23 -57
  342. package/packages/cli/vendor/src/showcase/site-data.tsx +2443 -2761
  343. package/packages/cli/vendor/src/showcase/supplemental.tsx +2 -42
  344. package/packages/cli/vendor/src/showcase/tembro-registry.json +11 -58
  345. package/registry.json +11 -61
  346. package/dist/components/display/entity-card.cjs +0 -1
  347. package/dist/components/display/entity-card.d.ts +0 -18
  348. package/dist/components/display/entity-card.js +0 -61
  349. package/dist/components/display/entity-header.cjs +0 -1
  350. package/dist/components/display/entity-header.d.ts +0 -13
  351. package/dist/components/display/entity-header.js +0 -52
  352. package/dist/components/display/file-card.cjs +0 -1
  353. package/dist/components/display/file-card.d.ts +0 -14
  354. package/dist/components/display/file-card.js +0 -59
  355. package/dist/components/feedback/empty-search-state.cjs +0 -1
  356. package/dist/components/feedback/empty-search-state.d.ts +0 -11
  357. package/dist/components/feedback/empty-search-state.js +0 -45
  358. package/dist/components/feedback/empty-state.cjs +0 -1
  359. package/dist/components/feedback/empty-state.d.ts +0 -11
  360. package/dist/components/feedback/empty-state.js +0 -38
  361. package/dist/components/filters/filter-chips.cjs +0 -1
  362. package/dist/components/filters/filter-chips.d.ts +0 -18
  363. package/dist/components/filters/filter-chips.js +0 -61
  364. package/dist/components/patterns/form-builder-presets.cjs +0 -1
  365. package/dist/components/patterns/form-builder-presets.d.ts +0 -1
  366. package/dist/components/patterns/form-builder-presets.js +0 -2
  367. package/dist/components/patterns/form-builder.cjs +0 -1
  368. package/dist/components/patterns/form-builder.d.ts +0 -109
  369. package/dist/components/patterns/form-builder.js +0 -263
  370. package/dist/showcase/premium/empty-state/index.cjs +0 -1
  371. package/dist/showcase/premium/empty-state/index.d.ts +0 -2
  372. package/dist/showcase/premium/empty-state/index.js +0 -3
  373. package/dist/showcase/premium/empty-state/mock.cjs +0 -14
  374. package/dist/showcase/premium/empty-state/mock.d.ts +0 -2
  375. package/dist/showcase/premium/empty-state/mock.js +0 -31
  376. package/dist/showcase/premium/empty-state/showcase.cjs +0 -1
  377. package/dist/showcase/premium/empty-state/showcase.d.ts +0 -3
  378. package/dist/showcase/premium/empty-state/showcase.js +0 -99
  379. package/dist/showcase/premium/form-builder/index.cjs +0 -1
  380. package/dist/showcase/premium/form-builder/index.d.ts +0 -2
  381. package/dist/showcase/premium/form-builder/index.js +0 -3
  382. package/dist/showcase/premium/form-builder/mock.cjs +0 -57
  383. package/dist/showcase/premium/form-builder/mock.d.ts +0 -2
  384. package/dist/showcase/premium/form-builder/mock.js +0 -40
  385. package/dist/showcase/premium/form-builder/showcase.cjs +0 -1
  386. package/dist/showcase/premium/form-builder/showcase.d.ts +0 -3
  387. package/dist/showcase/premium/form-builder/showcase.js +0 -69
  388. package/packages/cli/vendor/src/components/display/entity-card.tsx +0 -80
  389. package/packages/cli/vendor/src/components/display/entity-header.tsx +0 -80
  390. package/packages/cli/vendor/src/components/display/file-card.tsx +0 -61
  391. package/packages/cli/vendor/src/components/feedback/empty-search-state.tsx +0 -65
  392. package/packages/cli/vendor/src/components/feedback/empty-state.tsx +0 -56
  393. package/packages/cli/vendor/src/components/filters/filter-chips.tsx +0 -89
  394. package/packages/cli/vendor/src/components/patterns/form-builder-presets.ts +0 -13
  395. package/packages/cli/vendor/src/components/patterns/form-builder.tsx +0 -443
  396. package/packages/cli/vendor/src/showcase/premium/empty-state/index.ts +0 -2
  397. package/packages/cli/vendor/src/showcase/premium/empty-state/mock.ts +0 -30
  398. package/packages/cli/vendor/src/showcase/premium/empty-state/showcase.tsx +0 -65
  399. package/packages/cli/vendor/src/showcase/premium/form-builder/index.ts +0 -2
  400. package/packages/cli/vendor/src/showcase/premium/form-builder/mock.ts +0 -79
  401. package/packages/cli/vendor/src/showcase/premium/form-builder/showcase.tsx +0 -55
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../public-component-surface.cjs"),t=require("./tembro-registry.json.cjs"),n=require("./package-meta.cjs");let r=require("lucide-react");var i=[[`control`,`Control<TFieldValues>`,`-`,"RHF control instance from `useForm()`."],[`name`,`FieldPath<TFieldValues>`,`-`,`Field path used for registration and value lookup.`],[`rules`,`Omit<UseControllerProps['rules'], 'value' | 'name'>`,`-`,`Validation rules and constraints for the field.`],[`required`,`boolean | "*" | FieldError`,`false`,`Marks field required in shell and optional validation path.`],[`disabled`,`boolean`,`false`,`Disables input and blocks interaction.`],[`readOnly`,`boolean`,`false`,`Allows viewing without edit; value remains controlled.`],[`error`,`string | FieldError | null`,`-`,`Optional error override instead of default form state message.`]],a=[`RHF control wiring`,`name-based field registration`,`error and required visual states`,`validation contract`,`label/description consistency`,`disabled/readOnly handling`],o=`tembro`,s=`tembro`,c=`tembro`,ee=`azamat-ui`,l=`npx ${s} init --template next --defaults`,te=`npx ${s} init --template vite --defaults`,u=`npx ${s} add button form-input`,d=`${l}\n${u}`,ne=`npx ${s} --help`,re=`npx ${s} theme`,ie=`https://www.npmjs.com/package/tembro`,f=`https://github.com/AzamatJurayev-dev/tembro`,p=`${f}/releases`,m=`https://github.com/AzamatJurayev-dev/azamat-ui`,h=p,ae=`${m}/releases`,g=`/docs`,_=[{version:n.PACKAGE_LATEST_VERSION,date:n.PACKAGE_LATEST_RELEASE_DATE,status:`Published`,summary:`Expanded the registry with newer dashboard, input, badge, sidebar, and notification primitives.`,notes:["Registry truth now includes `accordion`, `sidebar`, `trend-card`, `delta-badge`, `entity-header`, `notification-center`, and `command-bar`.",`Component metadata was refreshed so docs can keep canonical surfaces and related helpers accurate.`,`CLI-first local component setup remains the default path for Next.js and Vite users.`]},{version:`0.3.18`,date:`June 30, 2026`,status:`Published`,summary:`Refined grouped docs and related-surface mapping.`,notes:[`Input, Select, Card, Badge, Overlay, Form, and Data Table components were aligned with the latest public exports.`,`Deprecated route-level names stayed aliased for compatibility while primary docs move toward simpler canonical surfaces.`,`Docs app metadata now prefers current package registry vocabulary over older showcase-only names.`]}],oe=_[0]?.version??`2.0.3`,se=_[0]?.date??`July 8, 2026`,v=e=>`/components/${e}`,y=e=>`/playground/${e}`,b=e=>`/components/${e}`,x=e=>e.replace(/([a-z])([A-Z])/g,`$1-$2`).replace(/\s+/g,`-`).toLowerCase(),S=(e,t)=>`/components/${e}/${x(t)}`,C=e=>`/templates/${e}`,w=e=>`/blocks/${e}`,T=[`Primitives`,`Form Controls`,`Overlay`,`Data Display`,`Layout`,`Feedback`,`Patterns`],E={Primitives:{title:`Primitives`,description:`Foundation components for actions, text entry, compact layout and small state changes.`,whenToUse:`Use when you need a small reusable UI unit with minimal product opinion.`,whenNotToUse:`Do not start here when the page needs full form orchestration, route structure, or async flows.`},"Form Controls":{title:`Form Controls`,description:`Fields, wrappers and input flows for validation, selection, formatting and data entry.`,whenToUse:`Use for user input, validation, RHF wiring and constrained value contracts.`,whenNotToUse:`Do not use for read-only summaries or large page layout composition.`},Overlay:{title:`Overlay`,description:`Dialog, popover, menu and confirmation surfaces that appear above the current screen.`,whenToUse:`Use for contextual actions, confirmations and short focused tasks.`,whenNotToUse:`Do not hide long multi-step flows inside overlays when a full page works better.`},"Data Display":{title:`Data Display`,description:`Metrics, tables, empty states and read-oriented surfaces for operational screens.`,whenToUse:`Use when the main job is reading, comparing or scanning product data.`,whenNotToUse:`Do not use these as the first layer for input-heavy forms or route-level navigation.`},Layout:{title:`Layout`,description:`Shell, breadcrumbs, side navigation and page framing for structured application routes.`,whenToUse:`Use when the route needs hierarchy, section framing and navigation continuity.`,whenNotToUse:`Do not pull layout components into tiny isolated widgets or inline forms.`},Feedback:{title:`Feedback`,description:`Loading, result and toast patterns for status communication and short response loops.`,whenToUse:`Use when the UI needs clear success, error, pending or completion feedback.`,whenNotToUse:`Do not use feedback components as a substitute for missing page structure or field validation.`},Patterns:{title:`Patterns`,description:`Composed flows and builders that connect multiple primitives.`,whenToUse:`Use when the screen needs a repeatable workflow instead of one atomic control.`,whenNotToUse:`Do not start here when a primitive or one wrapper solves the need cleanly.`}},ce=new Set([`button`,`input`,`textarea`,`checkbox`,`switch`,`badge`,`card`,`tabs`,`collapse`,`kbd`]),le=new Set(`select.simple-select.async-select.async-multi-select.combobox.radio-group.number-input.date-input.date-range-input.date-picker.date-range-picker.form-field-shell.form-input.form-select.form-async-select.form-textarea.form-switch.form-search-input.form-password-input.form-number-input.form-phone-input.form-date-input.form-date-range-input.form-date-picker.form-date-range-picker.phone-input.masked-input.money-input.quantity-input`.split(`.`)),ue=new Set([`dialog`,`popover`,`dropdown-menu`,`tooltip`,`right-click-menu`,`confirm-dialog`,`modal-shell`,`sheet-shell`,`alert-dialog`,`drawer`]),de=new Set([`sidebar`,`app-sidebar`,`app-shell`,`sidebar-nav`,`breadcrumbs`,`page-header`,`page-container`,`app-header`,`section-header`,`sticky-footer-bar`]),fe=new Set([`toast`,`loading-state`,`empty-state`,`result`]),pe=new Set([`form-builder`]),D=new Map([[`app-sidebar`,`sidebar`],[`confirm-action`,`confirm-dialog`],[`file-dropzone`,`upload`],[`hover-card`,`tooltip`],[`metric-card`,`metric-grid`],[`nav-tabs`,`tabs`],[`section-header`,`page-header`],[`side-panel`,`sidebar`],[`status-dot`,`status-legend`]]);function O(e){return D.get(e)??e}function k(e){return ce.has(e)?`Primitives`:le.has(e)?`Form Controls`:ue.has(e)?`Overlay`:de.has(e)?`Layout`:fe.has(e)?`Feedback`:pe.has(e)?`Patterns`:`Data Display`}function me(e){return E[k(e)]}function A(e,t){return V.filter(t=>k(t.slug)===e).map(e=>({label:e.title,href:t(e.slug),icon:e.icon,badge:e.status}))}var j=[{slug:`button`,title:`Button`,description:`Trigger actions with multiple variants, sizes, icon positions and loading states.`,icon:r.MousePointerClickIcon,category:`Components`,status:`Stable`,installCommand:d,propsRows:[[`variant`,`'default' | 'secondary' | ...`,`'default'`,`The visual style of the button.`],[`size`,`'xs' | 'sm' | 'md' | 'lg' | 'xl'`,`'md'`,`The size of the button.`],[`asChild`,`boolean`,`false`,`Render as a child element using Slot.`],[`disabled`,`boolean`,`false`,`Disables the button.`],[`className`,`string`,`-`,`Additional CSS classes.`],[`onClick`,`(e: MouseEvent) => void`,`-`,`Click event handler.`]],features:[`Variants`,`Sizes`,`Icon support`,`Loading state`]},{slug:`input`,title:`Input`,description:`Primary text-entry surface for forms, filters, and compact editor layouts before moving into presets.`,icon:r.FormInputIcon,category:`Forms`,status:`Stable`,installCommand:d,propsRows:[[`value`,`string`,`-`,`Controlled value.`],[`onValueChange`,`(value) => void`,`-`,`Direct text callback for controlled string flows.`],[`type`,`'text' | 'email' | 'password' | ...`,`'text'`,`Input HTML type before moving to a preset.`],[`clearable`,`boolean`,`false`,`Adds a built-in clear action when value exists.`],[`trailingAction`,`ReactNode`,`-`,`Interactive trailing slot for counters, shortcuts, or actions.`],[`replaceTrailingWhenClear`,`boolean`,`true`,`Keep or replace trailing content when clear is visible.`],[`disabled`,`boolean`,`false`,`Disables the field.`]],features:[`Primary text field`,`Built-in clear action`,`Trailing action slot`,`Preset-friendly API`]},{slug:`textarea`,title:`Textarea`,description:`Multi-line input with autosizing-friendly layout for notes, messages and long-form data.`,icon:r.FileTextIcon,category:`Forms`,status:`Stable`,installCommand:d,propsRows:[[`placeholder`,`string`,`-`,`Placeholder text.`],[`disabled`,`boolean`,`false`,`Disables the textarea.`],[`rows`,`number`,`-`,`Preferred visible rows.`],[`value`,`string`,`-`,`Controlled value.`],[`onChange`,`(event) => void`,`-`,`Change handler.`]],features:[`Long-form input`,`Disabled state`,`Resizable content`,`Controlled value`]},{slug:`select`,title:`Select`,description:`Primary selection surface for lists, status filters, and compact forms before moving into members.`,icon:r.ComponentIcon,category:`Forms`,status:`Stable`,installCommand:d,propsRows:[[`value`,`string`,`-`,`Controlled selected value.`],[`defaultValue`,`string`,`-`,`Initial selected value.`],[`onValueChange`,`(value) => void`,`-`,`Selection change callback.`],[`searchable`,`boolean`,`false`,`Enables local filtering on the main surface.`],[`multiple`,`boolean`,`false`,`Allows multiple values when the active member supports it.`],[`size`,`'sm' | 'default'`,`'default'`,`Trigger size.`],[`disabled`,`boolean`,`false`,`Disables the trigger.`]],features:[`Primary choice input`,`Local filtering`,`Compact trigger`,`Preset-friendly API`]},{slug:`simple-select`,title:`Simple Select`,description:`Static-option select surface for compact forms, filter rows, and settings screens that do not need remote loading.`,icon:r.ComponentIcon,category:`Forms`,status:`Stable`,installCommand:d,propsRows:[[`options`,`SimpleSelectOption[]`,`-`,`Static options for display and selection.`],[`value`,`string`,`-`,`Controlled selected value.`],[`onValueChange`,`(value) => void`,`-`,`Selection callback.`],[`defaultValue`,`string`,`-`,`Uncontrolled initial selected value.`],[`placeholder`,`string`,`-`,`Prompt text for empty state.`],[`size`,`'sm' | 'default'`,`'default'`,`Trigger visual density.`],[`disabled`,`boolean`,`false`,`Disables select interaction.`],[`triggerClassName`,`string`,`-`,`Trigger custom class.`]],features:[`Static options API`,`Controlled and uncontrolled usage`,`Shared select styling`,`Compact filter and form flows`]},{slug:`async-select`,title:`Async Select`,description:`Remote-aware select for search-driven datasets, edit hydration, and production loading or empty states.`,icon:r.ComponentIcon,category:`Forms`,status:`Stable`,installCommand:d,propsRows:[[`value`,`string`,`-`,`Controlled selected value.`],[`selectedOption`,`AsyncSelectOption`,`-`,`Hydrated selected option for controlled edit modes.`],[`onValueChange`,`(value, option?) => void`,`-`,`Selection callback with optional option payload.`],[`loadOptions`,`(search) => Promise<AsyncSelectOption[]>`,`-`,`Async option fetcher.`],[`loadSelectedOption`,`(value) => Promise<AsyncSelectOption | null>`,`-`,`Fetch selected option for controlled edit.`],[`defaultOptions`,`AsyncSelectOption[]`,`-`,`Initial static options.`],[`clearable`,`boolean`,`true`,`Allows clearing the selected value.`],[`cacheOptions`,`boolean`,`false`,`Reuse options cache across repeated queries.`],[`minSearchLength`,`number`,`1`,`Minimum query length for request.`],[`debounceMs`,`number`,`250`,`Delay before calling remote search.`],[`labels`,`AsyncSelectLabels`,`-`,`Copy and state copy labels.`],[`renderLoading`,`AsyncSelectStateRenderer`,`-`,`Custom loading content renderer.`]],features:[`Remote option loading`,`Debounced search`,`Hydrated edit state`,`Clearable controlled output`]},{slug:`async-multi-select`,title:`Async Multi Select`,description:`Remote-aware multi-select member with visible tags, limits, and create/select-all helpers.`,icon:r.ComponentIcon,category:`Forms`,status:`Stable`,installCommand:d,propsRows:[[`selectedOptions`,`string[]`,`-`,`Controlled selected values.`],[`value`,`string[]`,`-`,`Controlled selected values alias.`],[`loadSelectedOptions`,`(values) => Promise<AsyncSelectOption[]>`,`-`,`Resolve selected values for controlled chips.`],[`onValueChange`,`(values, options) => void`,`-`,`Bulk selection callback.`],[`loadOptions`,`(search) => Promise<AsyncSelectOption[]>`,`-`,`Async loader by search query.`],[`maxSelected`,`number`,`-`,`Upper cap for total selected items.`],[`showSelectAll`,`boolean`,`false`,`Allow select-all shortcut.`],[`closeOnSelect`,`boolean`,`true`,`Close list after choosing an option.`],[`renderTag`,`(value, option) => ReactNode`,`-`,`Custom tag rendering.`],[`showCreateOption`,`(search, options) => boolean`,`-`,`Enable inline create option path.`]],features:[`Remote multi-select`,`Visible tags`,`Maximum selected`,`Create/select-all helpers`]},{slug:`combobox`,title:`Combobox`,description:`Keyboard-first local filtering member for assignment flows and command-style lists.`,icon:r.ComponentIcon,category:`Forms`,status:`Stable`,installCommand:d,propsRows:[[`options`,`ComboboxOption[]`,`-`,`Local options with label, description and disabled state.`],[`value`,`string`,`-`,`Controlled selected value.`],[`onValueChange`,`(value, option?) => void`,`-`,`Selection callback with option payload.`],[`placeholder`,`ReactNode`,`"Select option"`,`Trigger content when no value is selected.`],[`searchPlaceholder`,`string`,`"Search..."`,`Search input placeholder.`],[`emptyLabel`,`ReactNode`,`"No option found"`,`Empty state content.`],[`disabled`,`boolean`,`false`,`Disables trigger and dropdown interaction.`]],features:[`Keyboard-first member`,`Local option filtering`,`Description rows`,`Controlled assignment flows`]},{slug:`number-input`,title:`Number Input`,description:`Numeric entry with parsing, constraints, and precise change semantics.`,icon:r.ToggleLeftIcon,category:`Forms`,status:`Stable`,installCommand:d,propsRows:[[`value`,`number | string`,`-`,`Controlled value.`],[`defaultValue`,`number | string`,`-`,`Initial uncontrolled value.`],[`onChange`,`React.ChangeEventHandler<HTMLInputElement>`,`-`,`Native change event.`],[`onNumberChange`,`(value) => void`,`-`,`Parsed numeric callback.`],[`onValueChange`,`(value) => void`,`-`,`String-based callback for raw typed value.`],[`min`,`number`,`-`,`Lower bound.`],[`max`,`number`,`-`,`Upper bound.`],[`step`,`number`,`1`,`Step size for changes.`],[`allowEmpty`,`boolean`,`false`,`Allows clearing the input without forcing zero.`]],features:[`Parsing`,`min/max`,`Step semantics`,`Invalid number handling`]},{slug:`date-input`,title:`Date Input`,description:`Native-like date input with ISO-style string contract, min/max constraints and clear disabled state.`,icon:r.CalendarClockIcon,category:`Forms`,status:`Preview`,installCommand:d,propsRows:[[`value`,`string`,`-`,"Controlled date value (for example `2026-06-19`)."],[`defaultValue`,`string`,`-`,`Initial uncontrolled date value.`],[`onValueChange`,`(value) => void`,`-`,`Callback with string date value.`],[`min`,`string`,`-`,`Minimum selectable date string.`],[`max`,`string`,`-`,`Maximum selectable date string.`],[`disabled`,`boolean`,`false`,`Disables input interactions.`],[`placeholder`,`string`,`-`,`Optional input placeholder.`]],features:[`Date format contract`,`min/max`,`Controlled input`,`Disabled state`]},{slug:`date-range-input`,title:`Date Range Input`,description:"Date range value with `from` / `to` boundaries for filters and reporting windows.",icon:r.CalendarClockIcon,category:`Forms`,status:`Preview`,installCommand:d,propsRows:[[`value`,`{ from: string; to: string }`,`-`,`Controlled range value.`],[`defaultValue`,`{ from: string; to: string }`,`-`,`Initial uncontrolled range value.`],[`onValueChange`,`(value) => void`,`-`,`Callback with normalized range value.`],[`min`,`string`,`-`,`Minimum selectable date for range start.`],[`max`,`string`,`-`,`Maximum selectable date for range end.`],[`disabled`,`boolean`,`false`,`Disables all range controls.`],[`required`,`boolean`,`false`,`Requires both bounds to be selected.`]],features:[`Range semantics`,`String range contract`,`Boundary constraints`,`Filtering windows`]},{slug:`date-picker`,title:`Date Picker`,description:`Popover-based date picker optimized for form fields and action buttons.`,icon:r.CalendarClockIcon,category:`Forms`,status:`Preview`,installCommand:d,propsRows:[[`value`,`string`,`-`,`Controlled picker value.`],[`defaultValue`,`string`,`-`,`Initial uncontrolled value.`],[`onValueChange`,`(value) => void`,`-`,`Picker change callback.`],[`disabled`,`boolean`,`false`,`Disables the popover trigger.`],[`min`,`string`,`-`,`Minimum selectable date string.`],[`max`,`string`,`-`,`Maximum selectable date string.`],[`disabledDates`,`string[]`,`-`,`Date literals that are blocked.`],[`className`,`string`,`-`,`Wrapper style class.`]],features:[`Popover selection`,`Date formatting`,`min/max`,`disabledDates`]},{slug:`date-range-picker`,title:`Date Range Picker`,description:`Popover date-range picker for period selection with constrained windows.`,icon:r.CalendarClockIcon,category:`Forms`,status:`Preview`,installCommand:d,propsRows:[[`value`,`{ from: string; to: string }`,`-`,`Controlled range value.`],[`defaultValue`,`{ from: string; to: string }`,`-`,`Initial uncontrolled range value.`],[`onValueChange`,`(value) => void`,`-`,`Range callback with from/to.`],[`disabled`,`boolean`,`false`,`Disables all picker interactions.`],[`min`,`string`,`-`,`Earliest allowed date.`],[`max`,`string`,`-`,`Latest allowed date.`],[`disabledDates`,`string[]`,`-`,`Date literals blocked from selection.`],[`className`,`string`,`-`,`Wrapper style class.`]],features:[`Range picker`,`Range windows`,`disabledDates`,`Boundary guards`]},{slug:`form-field-shell`,title:`Form Field Shell`,description:`Composable field shell that standardizes label, description, layout, errors and required markers.`,icon:r.FileTextIcon,category:`Forms`,status:`Stable`,installCommand:d,propsRows:[[`label`,`string`,`-`,`Field shell label text.`],[`description`,`string`,`-`,`Supporting helper text.`],[`descriptionPosition`,`'top' | 'bottom'`,`'bottom'`,`Description location relative to control.`],[`layout`,`'vertical' | 'horizontal' | 'inline'`,`'vertical'`,`Visual layout mode of label and field.`],[`required`,`boolean`,`false`,`Renders required marker and forwards required metadata.`],[`error`,`string | FieldError`,`-`,`Explicit error message shown in helper area.`],[`labelAction`,`ReactNode`,`-`,`Optional action in label area.`],[`readOnly`,`boolean`,`false`,`Read-only shell state.`],[`disabled`,`boolean`,`false`,`Disables shell state visuals.`],[`className`,`string`,`-`,`Custom wrapper class.`]],features:[`Label contract`,`Inline description`,`Horizontal/inline layout`,`ReadOnly + disabled states`,`Required indicator`]},{slug:`form-input`,title:`Form Input`,description:"Primary RHF field wrapper for text-like inputs. Use `kind` to cover search, password, number, phone, and date flows from one surface.",icon:r.FormInputIcon,category:`Forms`,status:`Preview`,installCommand:d,propsRows:[...i,[`kind`,`'text' | 'search' | 'password' | 'number' | 'phone' | 'date'`,`'text'`,`Selects the field variant without changing wrapper-level API.`],[`type`,`'text' | 'email' | 'search' | ...`,`'text'`,`Rendered input type for base behavior when using the text variant.`],[`placeholder`,`string`,`-`,`Input placeholder.`],[`onValueChange`,`(value: string) => void`,`-`,`Change callback with parsed display value.`],[`defaultValue`,`string`,`-`,`Uncontrolled initial value in hybrid modes.`]],features:[...a,"Universal `kind` variants",`Error text and message flow`,`Single wrapper migration path`]},{slug:`form-select`,title:`Form Select`,description:'Primary RHF select wrapper. Start with the default simple mode and switch to `kind="async"` when option loading or hydration is remote.',icon:r.ComponentIcon,category:`Forms`,status:`Stable`,installCommand:d,propsRows:[...i,[`kind`,`'simple' | 'async'`,`'simple'`,`Chooses the select surface while keeping the same form wrapper contract.`],[`options`,`SimpleSelectOption[]`,`-`,`Flat option set for select rendering.`],[`placeholder`,`string`,`-`,`Default label when empty.`],[`onValueChange`,`(value: string) => void`,`-`,`Selection change callback.`]],features:[...a,`Simple + async under one API`,`Form-driven value control`,`Clear/empty handling`]},{slug:`form-async-select`,title:`Form Async Select`,description:'Compatibility alias for the async `FormSelect` variant. Keep it for migration, but prefer `FormSelect kind="async"` in new code.',icon:r.ComponentIcon,category:`Forms`,status:`Stable`,installCommand:d,propsRows:[...i,[`loadOptions`,`(search: string) => Promise<AsyncSelectOption[]>`,`-`,`Search-driven option loader.`],[`loadSelectedOption`,`(value: string) => Promise<AsyncSelectOption | null>`,`-`,`Hydrates selected option for controlled edit mode.`],[`selectedOption`,`AsyncSelectOption`,`-`,`Hydrated selected option.`],[`defaultOptions`,`AsyncSelectOption[]`,`-`,`Initial loaded options.`]],features:[...a,`Compatibility alias`,`Remote options`,`Hydration support`]},{slug:`form-textarea`,title:`Form Textarea`,description:`RHF textarea wrapper with shell-level validation messages and descriptions.`,icon:r.FileTextIcon,category:`Forms`,status:`Stable`,installCommand:d,propsRows:[...i,[`rows`,`number`,`-`,`Visible row count.`],[`minHeight`,`number`,`-`,`Optional minimum height in rem/px.`],[`maxLength`,`number`,`-`,`Input length safety guard.`],[`onValueChange`,`(value: string) => void`,`-`,`Raw text callback from field.`]],features:[...a,`Long text support`,`Error placement`,`Description + helper states`]},{slug:`form-switch`,title:`Form Switch`,description:`RHF switch wrapper with binary payload and shell-level feedback.`,icon:r.ToggleLeftIcon,category:`Forms`,status:`Stable`,installCommand:d,propsRows:[...i,[`checked`,`boolean`,`-`,`Controlled checked value when controlled by wrapper.`],[`defaultChecked`,`boolean`,`false`,`Uncontrolled initial value in mixed modes.`],[`onCheckedChange`,`(value: boolean) => void`,`-`,`Boolean callback from switch state change.`]],features:[...a,`Boolean value contract`,`Readable shell errors`,`Disabled states`]},{slug:`form-search-input`,title:`Form Search Input`,description:'Compatibility alias for `FormInput kind="search"`. Keep existing routes stable while new work adopts the universal wrapper.',icon:r.ComponentIcon,category:`Forms`,status:`Preview`,installCommand:d,propsRows:[...i,[`clearLabel`,`string`,`"Clear"`,`Clear action label for search mode.`],[`showClearButton`,`boolean`,`true`,`Whether clear action is visible.`],[`searchMode`,`boolean`,`true`,`Enables search UX conventions.`],[`onValueChange`,`(value: string) => void`,`-`,`Normalized value callback for external query sync.`]],features:[...a,`Compatibility alias`,`Clear action`,`Query-driven usage`]},{slug:`form-password-input`,title:`Form Password Input`,description:'Compatibility alias for `FormInput kind="password"` so migration does not break existing imports.',icon:r.FormInputIcon,category:`Forms`,status:`Stable`,installCommand:d,propsRows:[...i,[`showToggle`,`boolean`,`true`,`Show/hide toggle for masked text.`],[`minLength`,`number`,`-`,`Client validation hint for minimum length.`],[`onValueChange`,`(value: string) => void`,`-`,`Password value callback.`]],features:[...a,`Compatibility alias`,`Password masking`,`Validation-first UX`]},{slug:`form-number-input`,title:`Form Number Input`,description:'Compatibility alias for `FormInput kind="number"`. Prefer the universal wrapper for new numeric fields.',icon:r.ToggleLeftIcon,category:`Forms`,status:`Stable`,installCommand:d,propsRows:[...i,[`min`,`number`,`-`,`Minimum allowed number.`],[`max`,`number`,`-`,`Maximum allowed number.`],[`step`,`number`,`1`,`Increment/decrement step.`],[`allowEmpty`,`boolean`,`false`,`Allows empty input state while editing.`],[`onValueChange`,`(value: number | null) => void`,`-`,`Parsed numeric callback.`]],features:[...a,`Compatibility alias`,`Numeric parser contract`,`Boundary states`]},{slug:`form-phone-input`,title:`Form Phone Input`,description:'Compatibility alias for `FormInput kind="phone"` with the same shell contract and phone formatting behavior.',icon:r.SmartphoneIcon,category:`Forms`,status:`Stable`,installCommand:d,propsRows:[...i,[`defaultCountry`,`string`,`"UZ"`,`Country context for formatting fallback.`],[`placeholder`,`string`,`"+998 (__) ___-__-__"`,`Input placeholder and hint.`],[`separator`,`string`,`" "`,`Separator used in grouped display.`],[`onValueChange`,`(value: string) => void`,`-`,`Emitted canonical phone value.`]],features:[...a,`Compatibility alias`,`Phone formatting`,`Validation integration`]},{slug:`form-date-input`,title:`Form Date Input`,description:'Compatibility alias for `FormInput kind="date"`. Use it only while older forms migrate to the universal wrapper.',icon:r.CalendarClockIcon,category:`Forms`,status:`Preview`,installCommand:d,propsRows:[...i,[`value`,`string`,`-`,`Controlled date value in date string format.`],[`defaultValue`,`string`,`-`,`Uncontrolled initial date.`],[`min`,`string`,`-`,`Minimum date constraint.`],[`max`,`string`,`-`,`Maximum date constraint.`],[`onValueChange`,`(value: string | null) => void`,`-`,`Normalized date callback.`]],features:[...a,`Compatibility alias`,`Date contract clarity`,`Submit-safe string values`]},{slug:`form-date-range-input`,title:`Form Date Range Input`,description:`RHF range input wrapper supporting from/to bounds and required range validation.`,icon:r.CalendarClockIcon,category:`Forms`,status:`Preview`,installCommand:d,propsRows:[...i,[`value`,`{ from: string; to: string }`,`-`,`RHF controlled date range value.`],[`min`,`string`,`-`,`Earliest valid date for start boundary.`],[`max`,`string`,`-`,`Latest valid date for end boundary.`],[`required`,`boolean | { from: boolean; to: boolean }`,`false`,`Require one or both bounds.`],[`onValueChange`,`(value: { from: string; to: string }) => void`,`-`,`Range update callback.`]],features:[...a,`Range required validation`,`from/to coordination`,`Filter-ready contract`]},{slug:`form-date-picker`,title:`Form Date Picker`,description:`RHF popover date picker wrapper with shared validation and controlled submit flow.`,icon:r.CalendarClockIcon,category:`Forms`,status:`Preview`,installCommand:d,propsRows:[...i,[`value`,`string`,`-`,`Controlled popover date value.`],[`disabledDates`,`string[]`,`-`,`Calendar date blacklist.`],[`min`,`string`,`-`,`Earliest selectable date string.`],[`max`,`string`,`-`,`Latest selectable date string.`],[`onValueChange`,`(value: string | null) => void`,`-`,`Normalized picker value callback.`]],features:[...a,`Popover interaction`,`Range of disabled dates`,`Controlled popover state`]},{slug:`form-date-range-picker`,title:`Form Date Range Picker`,description:`RHF wrapper over popover date-range picker with required range and block-out support.`,icon:r.CalendarClockIcon,category:`Forms`,status:`Preview`,installCommand:d,propsRows:[...i,[`value`,`{ from: string; to: string }`,`-`,`Controlled range value object.`],[`fromLabel`,`string`,`"From"`,`Label text for start field.`],[`toLabel`,`string`,`"To"`,`Label text for end field.`],[`disabledDates`,`string[]`,`-`,`Date literals blocked from selection.`],[`onValueChange`,`(value: { from: string; to: string }) => void`,`-`,`Range callback for form state updates.`]],features:[...a,`Range-specific validation`,`Date range constraints`,`Accessible error mapping`]},{slug:`form-builder`,title:`Form Builder`,description:`RHF section builder for schema-driven forms with submit/reset and disabled/read-only modes.`,icon:r.FileTextIcon,category:`Forms`,status:`Stable`,installCommand:d,propsRows:[[`control`,`Control<TFieldValues>`,`-`,`RHF control passed to all generated sections.`],[`fields`,`FormBuilderField<TFieldValues, string>[]`,`-`,`Explicit field descriptors for full control.`],[`sections`,`FormBuilderSection<TFieldValues>[]`,`-`,`Form section descriptors with grouped presets.`],[`submitLabel`,`string`,`"Save"`,`Submit button text.`],[`resetLabel`,`string`,`"Reset"`,`Reset button text.`],[`disabled`,`boolean`,`false`,`Disables all controls and actions in builder.`],[`readOnly`,`boolean`,`false`,`Read-only state for generated field controls.`],[`columns`,`1 | 2 | 3`,`1`,`Grid column count for generated sections.`],[`onSubmit`,`(values) => Promise<void> | void`,`-`,"Submit handler for generated `<form>` events."]],features:[`Field schema`,`Section composition`,`Custom render hooks`,`Submit and reset control`,`Disabled/readOnly pass-through`,`Preset factories (inputField, phoneField, ...)`]},{slug:`radio-group`,title:`Radio Group`,description:`Single-choice grouped control for plans, density modes, and mutually exclusive settings.`,icon:r.ToggleLeftIcon,category:`Forms`,status:`Stable`,installCommand:d,propsRows:[[`options`,`RadioGroupOption[]`,`-`,`Options with label, value and optional description.`],[`value`,`string`,`-`,`Controlled selected value.`],[`defaultValue`,`string`,`-`,`Initial uncontrolled value.`],[`onValueChange`,`(value) => void`,`-`,`Selection callback.`],[`orientation`,`'vertical' | 'horizontal'`,`'vertical'`,`Layout direction.`],[`size`,`'sm' | 'default' | 'lg'`,`'default'`,`Control density.`]],features:[`Single selection`,`Descriptions`,`Horizontal or vertical layout`,`Controlled plans`]},{slug:`phone-input`,title:`Phone Input`,description:`Localized phone number input with formatted display and consistent editing assumptions.`,icon:r.SmartphoneIcon,category:`Forms`,status:`Preview`,installCommand:d,propsRows:[[`value`,`string`,`-`,`Controlled phone value used as canonical form (usually raw digits or formatted string).`],[`defaultValue`,`string`,`-`,`Uncontrolled initial phone value.`],[`onValueChange`,`(value) => void`,`-`,`Emitted value after formatting transformations.`],[`defaultCountry`,`string`,`"UZ" | "US" | ...`,`Country context used by masking layer.`],[`placeholder`,`string`,`"+998 (__) ___-__-__"`,`Field placeholder.`],[`disabled`,`boolean`,`false`,`Disable interaction.`],[`separator`,`string`,`" "`,`Custom separator for grouping digits.`]],features:[`Phone parsing`,`Masking assumptions`,`Localized formatting`,`Controlled usage`]},{slug:`masked-input`,title:`Masked Input`,description:`Pattern-driven text input for IDs, codes and fixed-format strings.`,icon:r.SmartphoneIcon,category:`Forms`,status:`Preview`,installCommand:d,propsRows:[[`value`,`string`,`-`,`Controlled masked value.`],[`defaultValue`,`string`,`-`,`Uncontrolled initial masked value.`],[`onValueChange`,`(value) => void`,`-`,`Raw value callback after mask is applied.`],[`mask`,`((value: string) => string) | ((value: string, pattern: string) => string)`,`-`,`Formatting function for live masking.`],[`placeholder`,`string`,`-`,`Placeholder and pattern hint for users.`],[`stripMask`,`boolean`,`true`,`Whether callback should return raw digits.`],[`disabled`,`boolean`,`false`,`Disables user edits.`]],features:[`Mask function`,`Pattern assumptions`,`Controlled editing`,`Fixed-format workflows`]},{slug:`money-input`,title:`Money Input`,description:`Currency-aware input with prefix/suffix and parsing helper for numeric payload.`,icon:r.WalletIcon,category:`Forms`,status:`Stable`,installCommand:d,propsRows:[[`value`,`number`,`-`,`Controlled money value.`],[`defaultValue`,`number`,`-`,`Initial uncontrolled value.`],[`onValueChange`,`(value, rawValue) => void`,`-`,`Parsed numeric value and raw text callback.`],[`prefix`,`string`,`"$"`,`Money prefix text.`],[`suffix`,`string`,`-`,`Money suffix text.`],[`inputMode`,`'text' | 'decimal' | 'numeric'`,`'decimal'`,`Mobile keyboard hint.`],[`className`,`string`,`-`,`Wrapper custom styles.`]],features:[`Currency formatting assumptions`,`Parsing flow`,`Prefix/suffix`,`Read/write numeric value`]},{slug:`quantity-input`,title:`Quantity Input`,description:`Stepper-like numeric input for compact quantity and count constraints.`,icon:r.ToggleLeftIcon,category:`Forms`,status:`Stable`,installCommand:d,propsRows:[[`value`,`number`,`-`,`Controlled quantity.`],[`defaultValue`,`number`,`-`,`Initial quantity.`],[`onValueChange`,`(value) => void`,`-`,`Change callback with parsed quantity.`],[`min`,`number`,`0`,`Minimum value.`],[`max`,`number`,`-`,`Maximum value.`],[`step`,`number`,`1`,`Increment size.`],[`showControls`,`boolean`,`true`,`Display increment/decrement controls.`]],features:[`Count editing`,`Clamp behavior`,`Controls`,`Min/max guardrails`]},{slug:`checkbox`,title:`Checkbox`,description:`Binary selection control for permissions, tasks and grouped form actions.`,icon:r.BoxIcon,category:`Forms`,status:`Stable`,installCommand:d,propsRows:[[`checked`,`boolean | 'indeterminate'`,`false`,`Controlled checked state.`],[`defaultChecked`,`boolean | 'indeterminate'`,`false`,`Initial state.`],[`disabled`,`boolean`,`false`,`Disables the control.`],[`onCheckedChange`,`(checked) => void`,`-`,`Checked state callback.`]],features:[`Checked state`,`Indeterminate state`,`Disabled state`,`Task lists`]},{slug:`switch`,title:`Switch`,description:`On/off control for preferences, settings and lightweight toggles.`,icon:r.ToggleLeftIcon,category:`Forms`,status:`Stable`,installCommand:d,propsRows:[[`checked`,`boolean`,`false`,`Controlled on/off state.`],[`defaultChecked`,`boolean`,`false`,`Initial state.`],[`disabled`,`boolean`,`false`,`Disables the switch.`],[`onCheckedChange`,`(checked) => void`,`-`,`State change callback.`]],features:[`Checked state`,`Settings toggles`,`Disabled state`,`Compact interaction`]},{slug:`badge`,title:`Badge`,description:`Small status surface for counts, labels, intents and inline metadata.`,icon:r.BadgeIcon,category:`Components`,status:`Stable`,installCommand:d,propsRows:[[`variant`,`'default' | 'secondary' | 'destructive' | 'outline' | 'ghost' | 'link'`,`'default'`,`Visual style.`],[`render`,`ReactNode`,`-`,`Optional custom render target.`],[`className`,`string`,`-`,`Additional CSS classes.`]],features:[`Status labels`,`Variants`,`Inline metadata`,`Compact counters`]},{slug:`card`,title:`Card`,description:`Structured content container with header, content and footer slots.`,icon:r.LayoutDashboardIcon,category:`Components`,status:`Stable`,installCommand:d,propsRows:[[`size`,`'default' | 'sm'`,`'default'`,`Card density.`],[`className`,`string`,`-`,`Additional CSS classes.`],[`children`,`ReactNode`,`-`,`Composed card content.`]],features:[`Header/footer slots`,`Compact size`,`Dashboard modules`,`Composed content`]},{slug:`tabs`,title:`Tabs`,description:`Segmented navigation for switching views without leaving the current route.`,icon:r.Layers3Icon,category:`Components`,status:`Stable`,installCommand:d,propsRows:[[`value`,`string`,`-`,`Controlled active tab.`],[`defaultValue`,`string`,`-`,`Initial tab.`],[`orientation`,`'horizontal' | 'vertical'`,`'horizontal'`,`Tab list direction.`],[`disabled`,`boolean`,`false`,`Disables a trigger.`]],features:[`Segmented nav`,`Panel switching`,`Controlled state`,`Settings sections`]},{slug:`collapse`,title:`Collapse`,description:`Expandable disclosure surface for FAQs, dense settings, and progressive detail blocks.`,icon:r.WorkflowIcon,category:`Components`,status:`Stable`,installCommand:d,propsRows:[[`open`,`boolean`,`-`,`Controlled open state for a single collapse item.`],[`defaultOpen`,`boolean`,`false`,`Initial uncontrolled open state.`],[`onOpenChange`,`(open) => void`,`-`,`Open state callback.`],[`items`,`CollapseItem[]`,`-`,"Grouped disclosure items for `CollapseGroup`."],[`type`,`'single' | 'multiple'`,`'multiple'`,`Whether one or many group items can stay open.`]],features:[`Disclosure sections`,`Controlled state`,`Grouped items`,`Dense content reveal`]},{slug:`dialog`,title:`Dialog`,description:`Focused modal surface for confirmation flows, forms and destructive actions.`,icon:r.AlertCircleIcon,category:`Overlay`,status:`Stable`,installCommand:d,propsRows:[[`open`,`boolean`,`-`,`Controlled open state.`],[`defaultOpen`,`boolean`,`false`,`Initial open state.`],[`onOpenChange`,`(open) => void`,`-`,`Open state callback.`],[`showCloseButton`,`boolean`,`true`,`Toggles the close affordance.`]],features:[`Modal trigger`,`Overlay`,`Header/footer slots`,`Close actions`]},{slug:`popover`,title:`Popover`,description:`Lightweight anchored overlay for context actions and compact helper content.`,icon:r.SparklesIcon,category:`Overlay`,status:`Stable`,installCommand:d,propsRows:[[`side`,`'top' | 'right' | 'bottom' | 'left'`,`'bottom'`,`Popup side.`],[`align`,`'start' | 'center' | 'end'`,`'center'`,`Popup alignment.`],[`sideOffset`,`number`,`4`,`Distance from trigger.`],[`children`,`ReactNode`,`-`,`Trigger and content composition.`]],features:[`Anchored overlay`,`Title/description`,`Action menus`,`Compact help content`]},{slug:`dropdown-menu`,title:`Dropdown Menu`,description:`Menu overlays with action, checkbox and radio items for dense navigation.`,icon:r.ComponentIcon,category:`Overlay`,status:`Stable`,installCommand:d,propsRows:[[`open`,`boolean`,`-`,`Controlled open state.`],[`onOpenChange`,`(open) => void`,`-`,`Open state callback.`],[`children`,`ReactNode`,`-`,`Trigger and content composition.`],[`side`,`'top' | 'right' | 'bottom' | 'left'`,`'bottom'`,`Popup side.`],[`align`,`'start' | 'center' | 'end'`,`'start'`,`Popup alignment.`],[`sideOffset`,`number`,`4`,`Distance from trigger.`],[`disabled`,`boolean`,`false`,`Disable menu interaction.`]],features:[`Dropdown patterns`,`Checkbox items`,`Radio groups`,`Shortcut labels`]},{slug:`tooltip`,title:`Tooltip`,description:`Compact hover and focus hint for controls that need one short piece of guidance.`,icon:r.SparklesIcon,category:`Overlay`,status:`Stable`,installCommand:d,propsRows:[[`content`,`ReactNode`,`-`,`Tooltip label or helper content.`],[`side`,`'top' | 'bottom' | 'left' | 'right'`,`'top'`,`Placement around the trigger.`],[`disabled`,`boolean`,`false`,`Disables tooltip rendering.`],[`children`,`ReactNode`,`-`,`Trigger content wrapped by the tooltip.`]],features:[`Short helper copy`,`Hover + focus`,`Side placement`,`Low-noise guidance`]},{slug:`hover-card`,title:`Hover Card`,description:`Hover-revealed detail card for compact entity previews and secondary context.`,icon:r.SparklesIcon,category:`Overlay`,status:`Stable`,installCommand:d,propsRows:[[`trigger`,`ReactNode`,`-`,`Inline trigger element that reveals the card.`],[`content`,`ReactNode`,`-`,`Card body content shown on hover/focus.`],[`side`,`'top' | 'right' | 'bottom' | 'left'`,`'bottom'`,`Preferred card placement.`],[`contentClassName`,`string`,`-`,`Extra classes for the revealed card surface.`]],features:[`Entity preview`,`Hover + focus`,`Secondary context`,`Compact detail card`]},{slug:`right-click-menu`,title:`Right Click Menu`,description:`Context menu surface for dense workspaces that need pointer-driven secondary actions.`,icon:r.MousePointerClickIcon,category:`Overlay`,status:`Stable`,installCommand:d,propsRows:[[`items`,`RightClickMenuItem[]`,`-`,`Context actions shown after right click.`],[`children`,`ReactNode`,`-`,`Target area that owns the right-click interaction.`],[`className`,`string`,`-`,`Wrapper classes for the interaction zone.`]],features:[`Context actions`,`Pointer workflow`,`Compact menus`,`Workspace interactions`]},{slug:`confirm-dialog`,title:`Confirm Dialog`,description:`Clear confirm overlays for safe destructive and irreversible actions.`,icon:r.AlertCircleIcon,category:`Overlay`,status:`Stable`,installCommand:d,propsRows:[[`open`,`boolean`,`-`,`Controlled open state.`],[`onOpenChange`,`(open) => void`,`-`,`Open state callback for parent-driven flow.`],[`title`,`string`,`-`,`Dialog title text.`],[`description`,`string`,`-`,`Secondary context and scope text.`],[`confirmText`,`string`,`'Confirm'`,`Primary action label.`],[`confirmVariant`,`'default' | 'destructive'`,`'default'`,`Primary button emphasis.`],[`isLoading`,`boolean`,`false`,`Disables actions while async action runs.`],[`onConfirm`,`() => void | Promise<void>`,`-`,`Required confirm handler.`]],features:[`Destructive confirmations`,`Controlled usage`,`Async confirm`,`Clear copy guidance`]},{slug:`modal-shell`,title:`Modal Shell`,description:`Composable shell for short focused forms, approvals, and information dialogs.`,icon:r.PanelTopIcon,category:`Overlay`,status:`Stable`,installCommand:d,propsRows:[[`open`,`boolean`,`-`,`Controlled open state.`],[`onOpenChange`,`(open) => void`,`-`,`Open state callback.`],[`title`,`string`,`-`,`Header title for shell context.`],[`description`,`string`,`-`,`Header description or guidance text.`],[`footer`,`ReactNode`,`-`,`Optional footer action area.`],[`size`,`'sm' | 'md' | 'lg' | 'xl'`,`'md'`,`Shell width/spacing profile.`],[`showCloseButton`,`boolean`,`true`,`Show default close icon.`]],features:[`Reusable overlay shell`,`Controlled modal`,`Slot composition`,`Action footers`]},{slug:`sheet-shell`,title:`Sheet Shell`,description:`Side anchored shell for contextual editing and mobile drawer flows.`,icon:r.PanelTopIcon,category:`Overlay`,status:`Stable`,installCommand:d,propsRows:[[`open`,`boolean`,`-`,`Controlled open state.`],[`onOpenChange`,`(open) => void`,`-`,`Open state callback.`],[`side`,`'right' | 'left' | 'top' | 'bottom'`,`'right'`,`Drawer anchor side.`],[`title`,`string`,`-`,`Sheet title.`],[`description`,`string`,`-`,`Optional supporting text.`],[`footer`,`ReactNode`,`-`,`Optional footer action area.`],[`size`,`'sm' | 'md' | 'lg' | 'xl'`,`'md'`,`Shell width/spacing profile.`]],features:[`Side drawer`,`Mobile sheet`,`Slot composition`,`Context workflows`]},{slug:`app-shell`,title:`App Shell`,description:`Compose dashboards and pages with header, sidebar, content, aside and mobile controls.`,icon:r.LayoutDashboardIcon,category:`Components`,status:`Stable`,installCommand:d,propsRows:[[`header`,`ReactNode`,`-`,`Optional top header region.`],[`sidebar`,`ReactNode`,`-`,`Optional sidebar region for global navigation.`],[`aside`,`ReactNode`,`-`,`Optional side content region.`],[`footer`,`ReactNode`,`-`,`Optional footer region.`],[`sidebarCollapsed`,`boolean`,`-`,`Controlled sidebar collapse state.`],[`onSidebarCollapsedChange`,`(collapsed) => void`,`-`,`Callback for controlled collapse toggles.`],[`mobileSidebarOpen`,`boolean`,`-`,`Controlled mobile sidebar visibility.`],[`sidebarMode`,`'fixed' | 'static'`,`'fixed'`,`Desktop sidebar placement strategy.`],[`showMobileMenuButton`,`boolean`,`true`,`Shows mobile menu trigger button.`]],features:[`Shell composition`,`Responsive layout`,`Aside slot`,`Controlled sidebar`]},{slug:`sidebar`,title:`Sidebar`,description:`Reusable application sidebar with header, footer, active states, collapsed mode and custom link rendering.`,icon:r.LayoutDashboardIcon,category:`Components`,status:`Stable`,installCommand:d,propsRows:[[`items`,`AppSidebarNavItem[]`,`[]`,`Sidebar entries with active, disabled, badge and callback state.`],[`header`,`ReactNode`,`-`,`Optional content rendered above navigation items.`],[`footer`,`ReactNode`,`-`,`Optional footer actions or account area.`],[`collapsed`,`boolean`,`false`,`Compact sidebar mode for dense layouts.`],[`onItemSelect`,`(item) => void`,`-`,`Called when a sidebar item is selected.`],[`renderItem`,`(item, state) => ReactNode`,`-`,`Override full item rendering.`],[`renderLink`,`(props) => ReactNode`,`-`,`Override anchor rendering for router integration.`]],features:[`Navigation sidebar`,`Collapsed state`,`Header and footer slots`,`Router-friendly rendering`]},{slug:`sidebar-nav`,title:`Sidebar Nav`,description:`Structured nav list with active/disabled states, route metadata and custom render hooks.`,icon:r.LayoutDashboardIcon,category:`Components`,status:`Stable`,installCommand:d,propsRows:[[`items`,`SidebarNavItem[]`,`-`,`Navigation entries, including active, disabled and custom render payloads.`],[`collapsed`,`boolean`,`false`,`Compact nav mode with item labels hidden.`],[`itemClassName`,`string`,`-`,`Class for all nav items.`],[`activeItemClassName`,`string`,`-`,`Class added to the active item.`],[`renderItem`,`(item, element) => ReactNode`,`-`,`Custom item rendering hook.`],[`renderLink`,`(props) => ReactNode`,`-`,`Custom link rendering hook.`]],features:[`Navigation lists`,`Active states`,`Custom render`,`Collapsed mode`]},{slug:`breadcrumbs`,title:`Breadcrumbs`,description:`Navigation breadcrumbs with current context and optional custom link rendering.`,icon:r.ChevronRightIcon,category:`Components`,status:`Stable`,installCommand:d,propsRows:[[`items`,`BreadcrumbItem[]`,`-`,`Breadcrumb sequence for navigation context.`],[`separator`,`ReactNode`,`-`,`Custom separator between items.`],[`renderLink`,`(props) => ReactNode`,`-`,`Custom link renderer for each item.`],[`current`,`boolean`,`-`,`Marks current step and disables navigation for it.`]],features:[`Navigation context`,`Custom separators`,`Custom links`,`Current state support`]},{slug:`page-header`,title:`Page Header`,description:`Top-level page heading block with breadcrumbs, actions and optional meta area.`,icon:r.CreditCardIcon,category:`Components`,status:`Stable`,installCommand:d,propsRows:[[`title`,`ReactNode`,`-`,`Primary heading text.`],[`description`,`ReactNode`,`-`,`Subtext explanation for current page.`],[`eyebrow`,`ReactNode`,`-`,`Small uppercase lead text.`],[`breadcrumbs`,`ReactNode`,`-`,`Optional breadcrumb trail.`],[`actions`,`ReactNode`,`-`,`Actions rendered on the right side.`],[`meta`,`ReactNode`,`-`,`Secondary metadata block.`],[`sticky`,`boolean`,`false`,`Enable sticky positioning in scroll containers.`]],features:[`Page context`,`Action areas`,`Breadcrumb composition`,`Sticky header option`]},{slug:`page-container`,title:`Page Container`,description:`Consistent width and spacing wrapper for page contents and responsive content density.`,icon:r.PanelTopIcon,category:`Components`,status:`Stable`,installCommand:d,propsRows:[[`size`,`'default' | 'sm' | 'md' | 'lg' | 'xl' | 'full'`,`'default'`,`Container width preset.`],[`className`,`string`,`-`,`Additional wrapper class names.`],[`children`,`ReactNode`,`-`,`Page content.`]],features:[`Consistent content width`,`Responsive max-width`,`Spacing control`,`Dashboard wrappers`]},{slug:`metric-grid`,title:`Metric Grid`,description:`Compact KPI cards for dashboards with trend, icon and tone options.`,icon:r.DatabaseIcon,category:`Data Display`,status:`Stable`,installCommand:d,propsRows:[[`items`,`MetricItem[]`,`-`,`Metric tiles and optional descriptions.`],[`columns`,`1 | 2 | 3 | 4`,`3`,`Number of columns for layout.`],[`compact`,`boolean`,`false`,`Shrinks paddings and typography for dense layouts.`],[`itemClassName`,`string`,`-`,`Shared class override for each metric card.`]],features:[`KPI display`,`Compact and dense layout`,`Trend labels`,`Dashboard summaries`]},{slug:`info-card`,title:`Info Card`,description:`Flexible context card for summaries, metadata, quick actions, and supporting media inside real product surfaces.`,icon:r.FileTextIcon,category:`Data Display`,status:`Stable`,installCommand:d,propsRows:[[`eyebrow`,`ReactNode`,`-`,`Small label above card title.`],[`title`,`ReactNode`,`-`,`Main card title.`],[`description`,`ReactNode`,`-`,`Supporting description text.`],[`icon`,`ReactNode`,`-`,`Optional leading icon.`],[`actions`,`ReactNode`,`-`,`Card action area.`],[`media`,`ReactNode`,`-`,`Optional media block.`],[`compact`,`boolean`,`false`,`Compact card density.`],[`orientation`,`'vertical' | 'horizontal'`,`'vertical'`,`Content layout direction.`]],features:[`Metadata summaries`,`Action regions`,`Media slots`,`Vertical or horizontal layout`]},{slug:`activity-feed`,title:`Activity Feed`,description:`Timeline-like feed list for events, audits and recent activity surfaces.`,icon:r.BadgeIcon,category:`Data Display`,status:`Stable`,installCommand:d,propsRows:[[`items`,`ActivityFeedItem[]`,`-`,`List of timeline-like activity rows.`],[`title`,`ReactNode`,`-`,`Feed title.`],[`description`,`ReactNode`,`-`,`Supporting card description.`],[`actions`,`ReactNode`,`-`,`Optional header actions.`],[`empty`,`ReactNode`,`-`,`Fallback when there are no items.`],[`compact`,`boolean`,`false`,`Compact feed density.`],[`itemClassName`,`string`,`-`,`Class for each feed item.`]],features:[`Audit timeline`,`Empty state handling`,`Compact mode`,`Action rows`]},{slug:`empty-state`,title:`Empty State`,description:`Empty data state block with optional action affordance.`,icon:r.AlertCircleIcon,category:`Data Display`,status:`Stable`,installCommand:d,propsRows:[[`title`,`ReactNode`,`-`,`Primary empty-state title.`],[`description`,`ReactNode`,`-`,`Short explanation for no-content state.`],[`icon`,`ReactNode`,`-`,`Optional empty-state illustration icon.`],[`action`,`ReactNode`,`-`,`Action element to show as CTA.`],[`actionLabel`,`ReactNode`,`-`,`Legacy action label shortcut.`],[`onAction`,`() => void`,`-`,`Action callback.`]],features:[`No-content messaging`,`Optional CTA`,`Reusable copy`,`Data placeholders`]},{slug:`loading-state`,title:`Loading State`,description:`Simple loading placeholder block with label and description.`,icon:r.SparklesIcon,category:`Data Display`,status:`Stable`,installCommand:d,propsRows:[[`label`,`ReactNode`,`-`,`Loading heading.`],[`description`,`ReactNode`,`-`,`Loading explanation text.`],[`icon`,`ReactNode`,`-`,`Optional loading icon.`],[`className`,`string`,`-`,`Container class override.`]],features:[`Skeleton alternative`,`Section loading labels`,`Minimal setup`,`Custom icon`]},{slug:`result`,title:`Result`,description:`Status result surface for success, warning, error and blocked/empty outcomes.`,icon:r.ShieldCheckIcon,category:`Data Display`,status:`Stable`,installCommand:d,propsRows:[[`status`,`'success' | 'error' | 'warning' | 'info' | 'not-found' | 'forbidden' | 'server-error'`,`'info'`,`Result semantic status.`],[`title`,`ReactNode`,`-`,`Result title.`],[`description`,`ReactNode`,`-`,`Result detail text.`],[`icon`,`ReactNode`,`-`,`Optional custom icon.`],[`actions`,`ReactNode`,`-`,`Primary action area.`],[`extra`,`ReactNode`,`-`,`Secondary/auxiliary action area.`],[`compact`,`boolean`,`false`,`Compact status surface.`]],features:[`Outcome states`,`Action block`,`Error/result screens`,`No-page-needed fallback`]},{slug:`scroll-box`,title:`Scroll Box`,description:`Scoped scrolling surface for dense lists, side panels, and bounded data regions.`,icon:r.PanelTopIcon,category:`Data Display`,status:`Stable`,installCommand:d,propsRows:[[`maxHeight`,`string | number`,`-`,`Maximum rendered height before scroll starts.`],[`axis`,`'y' | 'x' | 'both'`,`'y'`,`Allowed scroll direction.`],[`children`,`ReactNode`,`-`,`Scrollable content.`],[`className`,`string`,`-`,`Container classes.`]],features:[`Bounded scroll`,`Axis control`,`Dense lists`,`Panel content`]},{slug:`toast`,title:`Toast`,description:`Global transient messaging system with provider, placement and dismiss behavior.`,icon:r.ShieldCheckIcon,category:`Components`,status:`Stable`,installCommand:d,propsRows:[[`children`,`ReactNode`,`-`,`Application children wrapped by provider.`],[`position`,`'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top-center' | 'bottom-center'`,`'top-right'`,`Toast container placement.`],[`defaultDuration`,`number`,`3000`,`Default auto-dismiss duration in ms.`],[`maxToasts`,`number`,`5`,`Maximum number of visible toasts.`],[`pauseOnHover`,`boolean`,`true`,`Pause dismiss timer when hovered.`],[`addToast`,`(input) => string`,`-`,`API to push a toast from context.`],[`success/info/warning/error`,`(input) => string`,`-`,`Tone helpers for common outcomes.`]],features:[`Provider setup`,`Controlled duration`,`Action buttons`,`Placement options`]},{slug:`table`,title:`Table primitive`,description:`Low-level semantic table pieces for internal composition, not the primary public data-grid showcase.`,icon:r.Table2Icon,category:`Data Display`,status:`Preview`,installCommand:d,propsRows:[[`className`,`string`,`-`,`Additional table styling.`],[`children`,`ReactNode`,`-`,`Header, body and row markup.`],[`caption`,`ReactNode`,`-`,`Optional table caption.`]],features:[`Semantic rows`,`Header/body slots`,`Internal composition`,`Primitive markup`]},{slug:`kbd`,title:`Kbd`,description:`Keyboard hint token for shortcuts, command palettes, and focused action labels.`,icon:r.TerminalSquareIcon,category:`Components`,status:`Stable`,installCommand:d,propsRows:[[`size`,`'sm' | 'default' | 'lg'`,`'default'`,`Visual size for the key token.`],[`variant`,`'default' | 'outline' | 'ghost'`,`'default'`,`Surface treatment.`],[`children`,`ReactNode`,`-`,`Rendered key label.`],[`className`,`string`,`-`,`Extra classes for the token.`]],features:[`Shortcut tokens`,`Size variants`,`Outline or ghost style`,`Command labels`]},{slug:`data-table`,title:`Data Table`,description:`Primary reusable admin data grid with sorting, row selection, bulk actions, saved views, mobile cards, and server-aware pagination.`,icon:r.Table2Icon,category:`Data Display`,status:`Preview`,installCommand:d,propsRows:[[`columns`,`ColumnDef<RowData>[]`,`-`,`Table column definitions.`],[`data`,`Array<RowData>`,`-`,`Row data at current page in server mode.`],[`getRowId`,`(row) => string`,`-`,`Stable row identifier function.`],[`sorting`,`SortingState`,`[]`,`Controlled sort state.`],[`rowSelection`,`RowSelectionState`,`{}`,`Controlled row selection state.`],[`enableRowSelection`,`boolean`,`false`,`Turns row selection on.`],[`pagination`,`PaginationStateProps`,`-`,`Page controls, counts and page size.`],[`toolbarProps`,`ToolbarProps`,`-`,`Header actions, search and contextual controls.`],[`onRowClick`,`(row) => void`,`-`,`Row click callback.`],[`isLoading`,`boolean`,`false`,`Loading indicator state.`],[`isError`,`boolean`,`false`,`Error state flag for fallback.`],[`loadingState`,`LoadingState`,`-`,"Loading UI when `isLoading` is true."],[`emptyState`,`EmptyState`,`-`,`State shown when no rows are present.`],[`errorState`,`ErrorState`,`-`,"State shown when `isError` is true."]],features:[`Column-based API`,`Sorting and pagination`,`Row selection and bulk actions`,`Toolbar, visibility and saved views`,`Mobile cards and server mode`,`Empty/loading/error states`]}],he={button:{groupSlugs:[`actions`,`navigation`,`layout`],componentSlugs:[`badge`,`card`,`tabs`]},input:{groupSlugs:[`inputs`,`form`,`filters`],componentSlugs:[`textarea`,`select`,`switch`]},textarea:{groupSlugs:[`inputs`,`form`,`layout`],componentSlugs:[`input`,`card`,`badge`]},select:{groupSlugs:[`inputs`,`filters`,`overlay`],componentSlugs:[`simple-select`,`async-select`,`async-multi-select`,`combobox`]},"simple-select":{groupSlugs:[`inputs`,`form`,`filters`],componentSlugs:[`select`,`async-select`,`async-multi-select`,`combobox`]},combobox:{groupSlugs:[`inputs`,`form`,`filters`],componentSlugs:[`select`,`simple-select`,`async-select`,`async-multi-select`]},"radio-group":{groupSlugs:[`inputs`,`form`],componentSlugs:[`checkbox`,`switch`,`select`]},"async-select":{groupSlugs:[`inputs`,`form`,`filters`],componentSlugs:[`select`,`simple-select`,`async-multi-select`,`combobox`]},"async-multi-select":{groupSlugs:[`inputs`,`form`],componentSlugs:[`select`,`async-select`,`simple-select`,`combobox`]},"number-input":{groupSlugs:[`inputs`,`form`],componentSlugs:[`money-input`,`quantity-input`,`input`]},"date-input":{groupSlugs:[`inputs`,`form`,`filters`],componentSlugs:[`date-range-input`,`date-picker`,`date-range-picker`,`table`,`select`]},"date-range-input":{groupSlugs:[`inputs`,`filters`,`form`],componentSlugs:[`date-input`,`date-picker`,`date-range-picker`,`data-table`]},"date-picker":{groupSlugs:[`inputs`,`form`,`display`],componentSlugs:[`calendar`,`date-input`,`date-range-picker`]},"date-range-picker":{groupSlugs:[`inputs`,`form`,`filters`],componentSlugs:[`date-picker`,`date-range-input`,`calendar`,`data-table`]},"form-field-shell":{groupSlugs:[`form`],componentSlugs:[`form-input`,`form-select`,`form-textarea`,`form-switch`,`input`,`textarea`,`switch`]},"form-input":{groupSlugs:[`form`,`inputs`],componentSlugs:[`form-field-shell`,`form-textarea`,`form-number-input`,`form-password-input`,`input`,`password`,`phone-input`]},"form-select":{groupSlugs:[`form`,`inputs`],componentSlugs:[`form-async-select`,`select`,`simple-select`,`form-field-shell`]},"form-async-select":{groupSlugs:[`form`,`inputs`],componentSlugs:[`form-select`,`async-select`,`form-field-shell`,`input`]},"form-textarea":{groupSlugs:[`form`,`inputs`],componentSlugs:[`form-input`,`textarea`,`form-field-shell`,`quantity-input`]},"form-switch":{groupSlugs:[`form`,`inputs`],componentSlugs:[`form-field-shell`,`switch`,`checkbox`,`form-builder`]},"form-search-input":{groupSlugs:[`form`,`inputs`],componentSlugs:[`form-input`,`input`,`form-field-shell`]},"form-password-input":{groupSlugs:[`form`,`inputs`],componentSlugs:[`form-input`,`input`,`form-field-shell`]},"form-number-input":{groupSlugs:[`form`,`inputs`],componentSlugs:[`number-input`,`money-input`,`quantity-input`,`form-field-shell`,`form-input`]},"form-phone-input":{groupSlugs:[`form`,`inputs`],componentSlugs:[`phone-input`,`form-input`,`masked-input`,`form-field-shell`]},"form-date-input":{groupSlugs:[`form`,`inputs`],componentSlugs:[`date-input`,`date-picker`,`form-field-shell`,`form-date-picker`]},"form-date-range-input":{groupSlugs:[`form`,`filters`],componentSlugs:[`date-range-input`,`date-range-picker`,`form-date-range-picker`,`form-field-shell`]},"form-date-picker":{groupSlugs:[`form`,`inputs`],componentSlugs:[`date-picker`,`form-date-input`,`calendar`,`form-field-shell`]},"form-date-range-picker":{groupSlugs:[`form`,`filters`],componentSlugs:[`date-range-picker`,`form-date-range-input`,`calendar`,`form-field-shell`]},"form-builder":{groupSlugs:[`patterns`,`form`],componentSlugs:[`form-field-shell`,`form-input`,`form-switch`,`form-textarea`,`form-async-select`]},"phone-input":{groupSlugs:[`inputs`,`form`],componentSlugs:[`input`,`textarea`,`simple-select`]},"masked-input":{groupSlugs:[`inputs`,`form`],componentSlugs:[`input`,`number-input`,`phone-input`]},"money-input":{groupSlugs:[`inputs`,`display`],componentSlugs:[`number-input`,`quantity-input`,`input`]},"quantity-input":{groupSlugs:[`inputs`,`form`],componentSlugs:[`number-input`,`money-input`,`input`]},checkbox:{groupSlugs:[`inputs`,`form`],componentSlugs:[`switch`,`button`,`card`]},switch:{groupSlugs:[`inputs`,`layout`],componentSlugs:[`checkbox`,`tabs`,`badge`]},badge:{groupSlugs:[`actions`,`display`],componentSlugs:[`button`,`card`,`tabs`]},card:{groupSlugs:[`layout`,`display`,`actions`],componentSlugs:[`tabs`,`badge`,`button`]},tabs:{groupSlugs:[`navigation`,`layout`],componentSlugs:[`dialog`,`card`,`button`]},collapse:{groupSlugs:[`layout`,`display`,`form`],componentSlugs:[`tabs`,`card`,`sidebar-nav`]},dialog:{groupSlugs:[`overlay`,`notifications`],componentSlugs:[`popover`,`confirm-dialog`,`sheet-shell`]},popover:{groupSlugs:[`overlay`,`navigation`],componentSlugs:[`dropdown-menu`,`dialog`,`confirm-dialog`]},"dropdown-menu":{groupSlugs:[`overlay`,`navigation`,`actions`],componentSlugs:[`popover`,`dialog`,`confirm-dialog`]},tooltip:{groupSlugs:[`overlay`,`actions`,`form`],componentSlugs:[`popover`,`button`,`input`]},"hover-card":{groupSlugs:[`overlay`,`display`],componentSlugs:[`tooltip`,`card`,`info-card`]},"right-click-menu":{groupSlugs:[`overlay`,`actions`,`navigation`],componentSlugs:[`dropdown-menu`,`popover`,`data-table`]},"confirm-dialog":{groupSlugs:[`overlay`,`notifications`],componentSlugs:[`dialog`,`modal-shell`,`sheet-shell`]},"modal-shell":{groupSlugs:[`overlay`,`layout`],componentSlugs:[`sheet-shell`,`dialog`,`confirm-dialog`]},"sheet-shell":{groupSlugs:[`overlay`,`layout`,`navigation`],componentSlugs:[`modal-shell`,`dialog`,`dropdown-menu`]},table:{groupSlugs:[`data-table`,`display`,`filters`],componentSlugs:[`card`,`tabs`,`badge`]},"data-table":{groupSlugs:[`data-table`,`layout`,`filters`],componentSlugs:[`table`,`card`,`tabs`]},sidebar:{groupSlugs:[`layout`,`navigation`],componentSlugs:[`sidebar-nav`,`breadcrumbs`,`app-shell`,`page-container`]},"app-shell":{groupSlugs:[`layout`],componentSlugs:[`sidebar`,`sidebar-nav`,`page-header`,`page-container`]},"sidebar-nav":{groupSlugs:[`layout`,`navigation`],componentSlugs:[`sidebar`,`breadcrumbs`,`app-shell`]},breadcrumbs:{groupSlugs:[`layout`,`navigation`],componentSlugs:[`page-header`,`sidebar`,`sidebar-nav`]},"page-header":{groupSlugs:[`layout`],componentSlugs:[`breadcrumbs`,`sidebar`,`metric-grid`,`info-card`]},"page-container":{groupSlugs:[`layout`],componentSlugs:[`page-header`,`app-shell`,`info-card`]},"metric-grid":{groupSlugs:[`display`],componentSlugs:[`info-card`,`activity-feed`,`empty-state`]},"info-card":{groupSlugs:[`display`,`layout`],componentSlugs:[`metric-grid`,`activity-feed`,`result`,`card`]},"activity-feed":{groupSlugs:[`display`],componentSlugs:[`info-card`,`metric-grid`,`result`]},"empty-state":{groupSlugs:[`display`],componentSlugs:[`loading-state`,`result`,`data-table`]},"loading-state":{groupSlugs:[`display`],componentSlugs:[`empty-state`,`result`,`data-table`]},result:{groupSlugs:[`display`],componentSlugs:[`empty-state`,`loading-state`,`page-header`]},"scroll-box":{groupSlugs:[`display`,`layout`],componentSlugs:[`table`,`data-table`,`page-container`]},toast:{groupSlugs:[`notifications`,`overlay`],componentSlugs:[`confirm-dialog`,`sheet-shell`,`modal-shell`]},kbd:{groupSlugs:[`command`,`actions`],componentSlugs:[`button`,`tooltip`,`input`]}},ge=new Set(`button.input.select.date-picker.checkbox.switch.badge.card.tabs.dialog.popover.dropdown-menu.sidebar.breadcrumbs.data-table.metric-grid.info-card.activity-feed.empty-state.loading-state.result.toast.trend-card.delta-badge.entity-header.notification-center.command-bar.progress.progress-circle`.split(`.`)),_e={textarea:`input`,"search-input":`input`,"password-input":`input`,"number-input":`input`,"phone-input":`input`,"masked-input":`input`,"money-input":`input`,"quantity-input":`input`,"tag-input":`input`,"otp-input":`input`,"color-input":`input`,"form-input":`input`,"form-textarea":`input`,"form-password-input":`input`,"form-number-input":`input`,"form-phone-input":`input`,"simple-select":`select`,"async-select":`select`,"async-multi-select":`select`,combobox:`select`,"form-select":`select`,"form-async-select":`select`,calendar:`date-picker`,"date-input":`date-picker`,"date-range-input":`date-picker`,"date-range-picker":`date-picker`,"form-date-input":`date-picker`,"form-date-range-input":`date-picker`,"form-date-picker":`date-picker`,"form-date-range-picker":`date-picker`,"confirm-dialog":`dialog`,"modal-shell":`dialog`,"sheet-shell":`dialog`,"app-shell":`sidebar`,"app-header":`sidebar`,"sidebar-nav":`sidebar`,"page-container":`sidebar`,section:`sidebar`,toolbar:`sidebar`,"split-layout":`sidebar`,"sticky-footer-bar":`sidebar`,"page-header":`breadcrumbs`,"stat-card":`metric-grid`,"form-builder":`form-field-shell`,"data-table-saved-filters":`data-table`,"data-table-pagination":`data-table`,"data-table-toolbar":`data-table`,"data-table-column-visibility-menu":`data-table`,"data-table-select-column":`data-table`,"data-table-sortable-header":`data-table`,"data-table-row-actions":`data-table`,"data-table-actions-column":`data-table`,"data-table-bulk-actions":`data-table`,"data-table-view-presets":`data-table`,table:`data-table`,"progress-circle":`progress`},M={input:[{key:`core`,title:`Core input surfaces`,description:`Start with the default text field and move outward only when the workflow demands specialization.`,slugs:[`input`,`textarea`]},{key:`related`,title:`Related input patterns`,description:`Specialized input types for search, masking, numeric entry, and compact structured values.`,slugs:[`search-input`,`password-input`,`number-input`,`phone-input`,`masked-input`,`money-input`,`quantity-input`,`tag-input`,`otp-input`,`color-input`]},{key:`integrations`,title:`Form integrations`,description:`Use these wrappers when the field needs to plug directly into shared form shells or React Hook Form.`,slugs:[`form-input`,`form-textarea`,`form-password-input`,`form-number-input`,`form-phone-input`]}],select:[{key:`core`,title:`Core select surfaces`,description:`Use the base selection control first, then expand only when the interaction model truly changes.`,slugs:[`select`]},{key:`related`,title:`Related select members`,description:`These members add real behavior such as remote loading or keyboard-first local filtering.`,slugs:[`async-select`,`combobox`,`async-multi-select`]},{key:`integrations`,title:`Form integrations`,description:`Use wrapped selects when you need consistent form-level validation, labels, and shell behavior.`,slugs:[`form-select`]},{key:`compatibility`,title:`Compatibility aliases`,description:`Keep older helper routes available for migration, but do not lead with them in new work.`,slugs:[`simple-select`,`form-async-select`]}],"date-picker":[{key:`core`,title:`Core date surfaces`,description:`Choose the popover picker or range picker when visual selection matters more than raw text entry.`,slugs:[`date-picker`,`date-range-picker`,`calendar`]},{key:`related`,title:`Input-level patterns`,description:`These patterns keep the date contract explicit when your product prefers inline text/date fields.`,slugs:[`date-input`,`date-range-input`]},{key:`integrations`,title:`Form integrations`,description:`Use wrapped date fields when validation, labels, and form shell behavior should stay standardized.`,slugs:[`form-date-input`,`form-date-range-input`,`form-date-picker`,`form-date-range-picker`]}],dialog:[{key:`core`,title:`Core overlay surfaces`,description:`Use the lightest overlay that still matches the interaction. Do not default every action to a full modal.`,slugs:[`dialog`,`popover`,`dropdown-menu`]},{key:`advanced`,title:`Confirmation and shell patterns`,description:`These composed overlays handle destructive confirmation, reusable modal shells, and side-drawer editing flows.`,slugs:[`confirm-dialog`,`modal-shell`,`sheet-shell`]}],sidebar:[{key:`core`,title:`Sidebar surfaces`,description:`These pieces define the reusable sidebar surface first, then layer shell framing around it only when the route really needs it.`,slugs:[`sidebar`,`sidebar-nav`,`breadcrumbs`]},{key:`related`,title:`Route-level patterns`,description:`Use these patterns only after the sidebar and navigation contract are already clear.`,slugs:[`app-shell`,`app-header`,`page-container`,`section`,`toolbar`,`split-layout`,`sticky-footer-bar`]}],"page-header":[{key:`core`,title:`Page context surfaces`,description:`Use these pieces to establish page identity, breadcrumbs, meta, and supporting stats.`,slugs:[`page-header`,`breadcrumbs`]},{key:`related`,title:`Supporting page patterns`,description:`These supporting pieces sit around the page header when you need compact summary or stat context.`,slugs:[`stat-card`]}],"data-table":[{key:`core`,title:`Primary data table surface`,description:`Start with the full DataTable route first. It demonstrates the reusable grid the way product teams actually consume it.`,slugs:[`data-table`]},{key:`related`,title:`Core companions`,description:`These are the most common helpers teams install next to the main grid.`,slugs:[`data-table-toolbar`,`data-table-pagination`,`data-table-row-actions`]},{key:`advanced`,title:`Composable helpers`,description:`Factories and low-level pieces belong after the main grid contract is already clear.`,slugs:[`data-table-saved-filters`,`data-table-select-column`,`data-table-actions-column`,`data-table-column-visibility-menu`,`data-table-sortable-header`]},{key:`related`,title:`Low-level primitive`,description:`Use the semantic table primitive only for lightweight markup. It is not the main reusable data-grid surface.`,slugs:[`table`]}],toast:[{key:`core`,title:`Global feedback surface`,description:`Use toast messaging for transient global feedback, not for critical form validation or persistent page states.`,slugs:[`toast`]}],"form-builder":[{key:`core`,title:`Form-building surfaces`,description:`Use the builder when you need a repeatable form system instead of wiring every field wrapper manually.`,slugs:[`form-builder`,`form-field-shell`]}]},N=t.default,P=N?.groups??{},F=new Set((N?.recommended??[]).map(e=>e)),I=N?.migrationAliases??{},L=new Set(Object.values(I)),ve=new Set([`kits`]),R=new Set([`all`,`dashboard`,`calendar-kit`,`wizard-kit`]),ye=new Set([`hooks`]),be={ui:`Components`,actions:`Components`,layout:`Components`,feedback:`Data Display`,display:`Data Display`,overlay:`Overlay`,inputs:`Forms`,form:`Forms`,dataTable:`Data Display`,data_table:`Data Display`,navigation:`Data Display`,filters:`Data Display`,calendar:`Data Display`,upload:`Data Display`,wizard:`Data Display`,notifications:`Data Display`,command:`Data Display`,patterns:`Patterns`},xe={ui:r.ComponentIcon,actions:r.SparklesIcon,feedback:r.WalletIcon,display:r.DatabaseIcon,overlay:r.PanelTopIcon,inputs:r.FormInputIcon,form:r.FormInputIcon,dataTable:r.Table2Icon,data_table:r.Table2Icon,layout:r.LayoutDashboardIcon,navigation:r.BoxIcon,filters:r.SlidersHorizontalIcon,calendar:r.CalendarClockIcon,upload:r.FileTextIcon,wizard:r.WorkflowIcon,notifications:r.BellIcon,command:r.TerminalSquareIcon,patterns:r.BlocksIcon,hooks:r.SmartphoneIcon};function z(e){return e.split(`-`).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `)}var Se=new Set(j.map(e=>e.slug)),B=new Map;for(let[e,t]of Object.entries(P))if(!(ve.has(e)||ye.has(e)))for(let n of t){let t=I[n],i=t??n;if(!n||R.has(n)||R.has(i)||L.has(i)||L.has(n)||Se.has(i)||B.has(i))continue;let a=be[e]??`Data Display`,o=xe[e]??r.SparklesIcon;B.set(i,{slug:i,title:z(t||i),description:`${z(i)} surfaced from package registry group "${e}".`,icon:o,category:a,status:F.has(i)?`Stable`:`Preview`,installCommand:d,propsRows:[[`className`,`string`,`-`,`Additional classes for wrapper element.`]],features:[e]})}var Ce=[...B.values()],V=[...j,...Ce],H=[],U=new Map(H.map(e=>[e.slug,e])),W=new Set([`app-sidebar`,`app-shell`,`app-header`,`page-header`,`page-container`,`stat-card`,`form-builder`,`resource-page`,`resource-detail-page`,`data-table-toolbar`,`data-table-pagination`,`data-table-column-visibility-menu`,`data-table-select-column`,`data-table-sortable-header`,`data-table-row-actions`,`data-table-actions-column`,`data-table-bulk-actions`,`data-table-view-presets`,`data-table-saved-filters`]),we=new Set([...W,...D.keys()]);function G(e){if(!e)return;let t=O(e),n=q(t);return t===n?U.get(t)??V.find(e=>e.slug===t):U.get(n)??V.find(e=>e.slug===n)}function K(e){return U.has(O(e))||ge.has(O(e))}function q(e){let t=O(e);return K(t)?t:_e[t]??t}function J(e){return G(q(e))?.title??e}function Y(){let t=V.filter(e=>q(e.slug)===e.slug),n=new Map;for(let e of t)n.set(e.slug,e);for(let e of H)n.set(e.slug,e);return Array.from(n.values()).filter(e=>!W.has(e.slug)).filter(t=>e.isPublicComponentSurfaceSlug(t.slug)).sort((t,n)=>{let r=e.comparePublicComponentSurfaceOrder(t.slug,n.slug);return r===0?t.title.localeCompare(n.title):r})}function Te(){let e=new Map;for(let t of V)e.set(t.slug,t);for(let t of H)e.set(t.slug,t);return Array.from(e.values()).filter(e=>!we.has(e.slug)).sort((e,t)=>e.title.localeCompare(t.title))}function X(e){let t=e?q(e):void 0;return Y().map(e=>({slug:e.slug,title:e.title,href:v(e.slug),status:e.status,group:k(e.slug),active:t?q(e.slug)===t:!1})).sort((e,t)=>e.title.localeCompare(t.title))}function Ee(e){let t=new Map;for(let n of X(e)){let e=n.title[0]?.toUpperCase()??`#`,r=`${e} - ${n.group}`;t.has(r)||t.set(r,{key:r,label:`${e} • ${n.group}`,items:[]}),t.get(r)?.items.push(n)}return Array.from(t.values())}function De(e){return M[q(e)]??[]}function Z(e){return(e?[q(e)]:Object.keys(M)).flatMap(e=>{let t=G(e);return(M[e]??[]).flatMap(n=>{let r=[];for(let i of n.slugs){let a=V.find(e=>e.slug===i);a&&r.push({component:a.title,slug:a.slug,title:a.title,surfaceSlug:e,surfaceTitle:t?.title??e,sectionId:n.key,sectionLabel:n.title,sectionKey:n.key,summary:a.description,useWhen:n.description,maturity:n.key===`core`?`core`:`helper`,status:a.status,href:v(a.slug)})}return r})})}function Oe(e){return Z().find(t=>t.component===e)}function ke(e){let t=new Set(e);return Z().filter(e=>t.has(e.component))}var Q=[{slug:`actions`,title:`Actions`,description:`Context actions, copy controls and quick grids for dense product surfaces.`,icon:r.MousePointerClickIcon,category:`Actions`,exports:[`ActionMenu`,`CopyButton`,`QuickActionGrid`],href:b(`actions`),status:`Stable`,features:[`Quick actions`,`Copy affordances`,`Dense command blocks`]},{slug:`layout`,title:`Application layout`,description:`Route-level shells, sidebars and headers that support real components instead of replacing them.`,icon:r.LayoutDashboardIcon,category:`Layout`,exports:[`Sidebar`,`SidebarNav`,`Breadcrumbs`,`PageContainer`,`Section`,`SectionHeader`,`StickyFooterBar`],href:b(`layout`),status:`Stable`,features:[`Sidebar navigation`,`Page framing`,`Section structure`,`Sticky actions`]},{slug:`filters`,title:`Filters`,description:`Filter bars and chip patterns for narrowing data without leaving the current view.`,icon:r.SlidersHorizontalIcon,category:`Data`,exports:[`FilterBar`,`FilterChips`],href:b(`filters`),status:`Stable`,features:[`Filter bars`,`Chips`,`Search + filter pairing`]},{slug:`overlay`,title:`Overlay patterns`,description:`Confirm flows, modal shells, sheet layouts and dialog actions.`,icon:r.AlertCircleIcon,category:`Overlay`,exports:[`DialogActions`,`ModalShell`,`ConfirmDialog`,`SheetShell`,`Tooltip`,`HoverCard`,`RightClickMenu`],href:b(`overlay`),status:`Stable`,features:[`Confirm flows`,`Sheet layouts`,`Modal actions`,`Lightweight helper hints`]},{slug:`navigation`,title:`Navigation`,description:`Pagination and tabbed navigation patterns for sectioned or paginated interfaces.`,icon:r.ChevronRightIcon,category:`Layout`,exports:[`Pagination`,`PageTabs`,`StepperTabs`],href:b(`navigation`),status:`Stable`,features:[`Pagination`,`Page tabs`,`Stepper tabs`]},{slug:`inputs`,title:`Inputs`,description:`Input-first family with typed presets and select/date members introduced only when behavior changes.`,icon:r.FormInputIcon,category:`Forms`,exports:[`Input`,`Textarea`,`Select`,`DatePicker`,`NumberInput`,`MoneyInput`,`PhoneInput`,`TagInput`],href:b(`inputs`),status:`Stable`,features:[`Text entry`,`Select flows`,`Date controls`,`Money input`,`Tag input`]},{slug:`form`,title:`Form`,description:`Form shell and wrapper layer for labels, validation, and repeatable field composition.`,icon:r.FileTextIcon,category:`Forms`,exports:[`FormFieldShell`,`FormInput`,`FormSelect`,`FormTextarea`,`FormSwitch`,`FormDatePicker`],href:b(`form`),status:`Stable`,features:[`Field shell`,`Wrapped controls`,`Date helpers`,`Consistent validation`]},{slug:`display`,title:`Display`,description:`Metrics, activity, avatars, timelines and descriptive content surfaces.`,icon:r.DatabaseIcon,category:`Data`,exports:[`DescriptionList`,`Progress`,`Result`,`Timeline`,`MetricGrid`,`InfoCard`,`ActivityFeed`,`StatusLegend`,`Avatar`,`DataState`,`ScrollBox`],href:b(`display`),status:`Stable`,features:[`Metric grids`,`Timelines`,`Activity feeds`,`Status legends`]},{slug:`data-table`,title:`DataTable`,description:`Primary reusable data-grid system. Helper pieces stay secondary to the main table route.`,icon:r.Table2Icon,category:`Data`,exports:[`DataTable`],href:b(`data-table`),status:`Stable`,features:[`Toolbar`,`Selection`,`Row actions`,`Saved views`,`Pagination`]},{slug:`notifications`,title:`Notifications`,description:`Toast-based feedback surfaces for success, warnings and async completion states.`,icon:r.BadgeIcon,category:`Overlay`,exports:[`Toast`],href:b(`notifications`),status:`Preview`,features:[`Toasts`,`Transient feedback`,`Status messaging`]},{slug:`command`,title:`Command`,description:`Command palette patterns for keyboard-driven discovery and navigation.`,icon:r.TerminalSquareIcon,category:`Workflow`,exports:[`CommandPalette`],href:b(`command`),status:`Preview`,features:[`Command palette`,`Keyboard discovery`,`Quick navigation`]},{slug:`calendar`,title:`Calendar`,description:`Calendar, date picker and range picker flows for scheduling and reporting.`,icon:r.Grid2x2Icon,category:`Workflow`,exports:[`DateUtils`,`Calendar`,`DatePicker`,`DateRangePicker`],href:b(`calendar`),status:`Stable`,features:[`Date picker`,`Range picker`,`Scheduling flows`]},{slug:`upload`,title:`Upload`,description:`File and image upload surfaces with preview-friendly interaction patterns.`,icon:r.BlocksIcon,category:`Workflow`,exports:[`FileUpload`,`ImageUpload`],href:b(`upload`),status:`Preview`,features:[`File upload`,`Image upload`,`Attachment flows`]},{slug:`wizard`,title:`Wizard`,description:`Stepper and multi-step workflow patterns for onboarding and guided flows.`,icon:r.WorkflowIcon,category:`Workflow`,exports:[`Stepper`,`Wizard`],href:b(`wizard`),status:`Stable`,features:[`Step flow`,`Guided forms`,`Progress state`]}],Ae=[{label:`Docs`,href:g},{label:`Installation`,href:`/docs/installation`},{label:`Components`,href:`/components`},{label:`Search`,href:`/search`},{label:`Changelog`,href:`/changelog`}],je=[{title:`Getting Started`,items:[{label:`Overview`,href:g,icon:r.BookOpenIcon},{label:`Installation`,href:`/docs/installation`,icon:r.ChevronRightIcon},{label:`Components catalog`,href:`/components`,icon:r.ComponentIcon},{label:`Changelog`,href:`/changelog`,icon:r.FileTextIcon}]},...T.map(e=>({title:e,items:A(e,v)})).filter(e=>e.items.length>0)],Me=[{title:`Getting Started`,items:[{label:`Introduction`,href:`/playground/button`,icon:r.BookOpenIcon},{label:`Installation`,href:y(`button`),icon:r.ChevronRightIcon},{label:`Theming`,href:y(`button`),icon:r.SparklesIcon},{label:`Tokens`,href:y(`badge`),icon:r.Layers3Icon},{label:`Icon Library`,href:y(`popover`),icon:r.Grid2x2Icon}]},...T.map(e=>({title:e,items:A(e,y)})).filter(e=>e.items.length>0)],Ne=[`All blocks`,`Dashboard`,`Auth`,`Table`,`Settings`,`Pricing`,`Product`,`Marketing`],Pe=[`All layouts`,`Application`,`Marketing`],$=[`All themes`,`Light`,`Soft`],Fe=[`Popular`,`A-Z`],Ie=[{title:`Application blocks`,text:`Dashboard, table and settings blocks should show route structure, visible actions and realistic operational density.`,items:[`Sidebar shell`,`Toolbar actions`,`Table states`,`Settings surfaces`]},{title:`Entry and conversion blocks`,text:`Auth, pricing, product and marketing blocks should explain trust, conversion hierarchy and where the section fits in a larger page flow.`,items:[`Form blocks`,`CTA hierarchy`,`Proof points`,`Responsive sections`]},{title:`Reusable block library`,text:`Every block card should show its category, where it fits, and which route opens the richer preview or template detail view.`,items:[`Category label`,`Usage notes`,`Preview action`,`Install path`]}],Le={slug:`dashboard-starter`,title:`Modern Dashboard`,description:`Clean dashboard with analytics, charts, and activity tables.`,bestFor:`Dashboard entry sections, KPI headers, recent activity, and operational overview surfaces.`,category:`Dashboard`,tags:[`Dashboard`,`Analytics`,`Charts`,`Overview`],uses:[`AppShell`,`PageHeader`,`MetricGrid`,`DataTable`],tone:`from-emerald-50 via-white to-sky-50`,href:w(`dashboard-starter`),previewHref:`/preview/blocks/dashboard-01`,previewTone:`dashboard`,layout:`Application`,theme:`Soft`,relatedTemplateSlug:`dashboard-starter`,installSteps:["Run `npx tembro init` and make sure the dashboard route already has theme tokens loaded.",`Copy the shell section into an authenticated page and connect it to live KPI and activity data.`,`Keep the block focused on one overview slice instead of turning it into a full page shell.`],dependencyGroups:[`Layout shell`,`Metric cards`,`Table primitives`,`Action buttons`],copyTargets:[`components/blocks/dashboard/overview-shell.tsx`,`components/blocks/dashboard/metric-row.tsx`,`components/blocks/dashboard/activity-table.tsx`],notes:[`Use this block when one dashboard section is enough; move to the template when navigation and multiple zones are required.`,`Primary actions should stay tied to one operational area, not a full application workflow.`]},Re=[{slug:`sidebar-layout`,title:`Sidebar Layout`,description:`Application shell with responsive sidebar.`,bestFor:`Route-level shells that need stable navigation, app header actions, and one main content zone.`,category:`Dashboard`,tags:[`Navigation`,`Shell`,`Analytics`],uses:[`AppShell`,`SidebarNav`,`PageHeader`,`Button`],tone:`from-[color:var(--aui-page-bg-alt)] to-[color:var(--aui-page-bg)]`,href:w(`sidebar-layout`),previewHref:`/preview/blocks/dashboard-01`,previewTone:`dashboard`,layout:`Application`,theme:`Light`,relatedTemplateSlug:`dashboard-starter`,installSteps:["Run `npx tembro init` and mount the shell inside an authenticated route group.",`Wire navigation items and header actions before copying child content zones into the shell.`,`Keep the shell generic enough to reuse across more than one application page.`],dependencyGroups:[`App shell`,`Sidebar navigation`,`Page header`,`Action controls`],copyTargets:[`components/blocks/layout/sidebar-layout.tsx`,`components/navigation/app-sidebar.tsx`],notes:[`Do not use this block for a whole admin app export; it is one shell slice, not the full template.`,`Navigation depth and section order should come from the app route model, not from hardcoded demo labels.`]},{slug:`crm-dashboard`,title:`CRM Dashboard`,description:`Sales pipeline and deals management.`,bestFor:`Pipeline snapshots, team handoff sections, and account-focused operational dashboards.`,category:`Product`,tags:[`CRM`,`Pipeline`,`Kanban`],uses:[`PageHeader`,`Badge`,`Tabs`,`ActivityFeed`],tone:`from-[color:color-mix(in_oklch,var(--aui-accent)_10%,var(--aui-page-bg-alt))] to-[color:var(--aui-page-bg)]`,href:w(`crm-dashboard`),previewTone:`crm`,layout:`Application`,theme:`Soft`,relatedTemplateSlug:`crm-dashboard`,installSteps:["Run `npx tembro init` and reuse the CRM block inside an existing workspace route.",`Connect stage counts, owners, and next actions to live CRM entities before release.`,`Escalate to the CRM template only when the page needs reports, settings, and multiple sections together.`],dependencyGroups:[`Stage summaries`,`Owner badges`,`Activity feed`,`Tabs and headers`],copyTargets:[`components/blocks/crm/pipeline-summary.tsx`,`components/blocks/crm/account-activity.tsx`],notes:[`CRM sections lose clarity when actions are hidden; keep stage, owner, and next-step signals visible.`,`This block should stay narrower than the full CRM workspace template.`]},{slug:`users-table`,title:`Users Table`,description:`Advanced table with filters and actions.`,bestFor:`Management tables with filters, row actions, bulk actions, and compact result scanning.`,category:`Table`,tags:[`Data`,`Filters`,`Bulk actions`],uses:[`DataTable`,`DataTableToolbar`,`Button`,`Badge`],tone:`from-[color:var(--aui-page-bg-alt)] to-[color:var(--aui-page-bg)]`,href:w(`users-table`),previewHref:`/preview/blocks/table-01`,previewTone:`table`,layout:`Application`,theme:`Light`,relatedTemplateSlug:`dashboard-starter`,installSteps:["Run `npx tembro init` and move the table block into the target resource page.",`Map columns, row identifiers, and action callbacks to your real API contract.`,`Keep pagination, filters, and bulk actions aligned with backend capabilities.`],dependencyGroups:[`Data table`,`Toolbar filters`,`Bulk actions`,`Status badges`],copyTargets:[`components/blocks/tables/users-table.tsx`,`components/blocks/tables/table-toolbar.tsx`],notes:[`Prefer this block for one resource section; use a template when the whole page needs navigation and surrounding analytics.`,`Do not treat demo filters as final product logic; they are only structural placeholders.`]},{slug:`auth-sign-in`,title:`Auth Sign In`,description:`Minimal sign in form with social login.`,bestFor:`Entry flows that need one focused sign-in surface, trust copy, and a compact auth action stack.`,category:`Auth`,tags:[`Sign in`,`Form`,`Trust`],uses:[`Card`,`Input`,`Button`,`Badge`],tone:`from-[color:color-mix(in_oklch,var(--aui-warning)_12%,var(--aui-page-bg-alt))] to-[color:var(--aui-page-bg)]`,href:w(`auth-sign-in`),previewHref:`/preview/blocks/auth-01`,previewTone:`auth`,layout:`Marketing`,theme:`Light`,relatedTemplateSlug:`dashboard-starter`,installSteps:["Run `npx tembro init` and mount the auth block on a public or gated entry route.",`Replace demo trust copy, OAuth providers, and field labels with your real auth contract.`,`Use the wider auth or app template only when onboarding needs multiple steps or side content.`],dependencyGroups:[`Form fields`,`Card shell`,`Primary CTA`,`Trust badges`],copyTargets:[`components/blocks/auth/sign-in-card.tsx`,`components/blocks/auth/social-auth-row.tsx`],notes:[`Keep this block conversion-focused; avoid adding unrelated settings or dashboard content to the same surface.`,`Auth blocks should show trust and hierarchy clearly on mobile before they are shipped.`]},{slug:`settings-form`,title:`Settings Form`,description:`Profile and preferences settings form.`,bestFor:`One bounded settings section with fields, toggles, save actions, and light explanatory copy.`,category:`Settings`,tags:[`Profile`,`Preferences`,`Form`],uses:[`FormFieldShell`,`Input`,`Switch`,`Button`],tone:`from-[color:color-mix(in_oklch,var(--aui-surface-muted)_70%,var(--aui-page-bg-alt))] to-[color:var(--aui-page-bg)]`,href:w(`settings-form`),previewTone:`settings`,layout:`Application`,theme:`Light`,relatedTemplateSlug:`dashboard-starter`,installSteps:["Run `npx tembro init` and place the settings block inside an existing account or workspace page.",`Wire field state, validation, and save feedback to your app settings contract.`,`Only move to a larger settings template when multiple settings areas need shared navigation.`],dependencyGroups:[`Form wrappers`,`Inputs and switches`,`Save actions`,`Inline helper text`],copyTargets:[`components/blocks/settings/profile-form.tsx`,`components/blocks/settings/preferences-section.tsx`],notes:[`This block is for one settings slice, not an entire account management surface.`,`Keep destructive account actions separate from routine preference editing.`]},{slug:`invoices-page`,title:`Invoices Page`,description:`Invoices list with status and actions.`,bestFor:`Billing or finance tables that need status columns, invoice actions, and readable operational totals.`,category:`Table`,tags:[`Finance`,`Invoices`,`Status`],uses:[`DataTable`,`Badge`,`Button`,`PageHeader`],tone:`from-[color:color-mix(in_oklch,var(--aui-accent)_12%,var(--aui-page-bg-alt))] to-[color:var(--aui-page-bg)]`,href:w(`invoices-page`),previewHref:`/preview/blocks/table-01`,previewTone:`table`,layout:`Application`,theme:`Soft`,relatedTemplateSlug:`dashboard-starter`,installSteps:["Run `npx tembro init` and copy the invoice block into the billing route.",`Connect payment status, row actions, and export flows to real finance data.`,`Keep summaries close to the table instead of turning the block into a full finance dashboard.`],dependencyGroups:[`Table rows`,`Invoice status badges`,`Header actions`,`Finance filters`],copyTargets:[`components/blocks/finance/invoices-table.tsx`,`components/blocks/finance/invoice-actions.tsx`],notes:[`Finance blocks need explicit status language; avoid vague marketing labels in invoice rows.`,`When the page needs broader reporting and settings, step up to a template-level surface.`]}],ze=d,Be=[[`variant`,`'default' | 'secondary' | ...`,`'default'`,`The visual style of the button.`],[`size`,`'xs' | 'sm' | 'md' | 'lg' | 'xl'`,`'md'`,`The size of the button.`],[`asChild`,`boolean`,`false`,`Render as a child element using Slot.`],[`disabled`,`boolean`,`false`,`Disables the button.`],[`className`,`string`,`-`,`Additional CSS classes.`],[`onClick`,`(e: MouseEvent) => void`,`-`,`Click event handler.`]],Ve=[`Installation`,`Variations`,`Sizes`,`States`,`Icon buttons`,`Block button`,`Examples`,`API Reference`,`Accessibility`],He=[{title:`Action buttons`,cta:`Save changes`},{title:`Icon with text`,cta:`Send message`},{title:`Loading state`,cta:`Processing...`},{title:`Destructive action`,cta:`Delete item`}],Ue=[`Tab to focus`,`Visible focus ring`,`Enter / Space to activate`],We=[`Role: button`,`Name is programmatically determinable`,`Minimum touch target (44x44px)`,`Sufficient color contrast`],Ge=[{title:`Home`,description:`Open the landing page with the product overview.`,href:`/`,group:`Docs`,shortcut:`H`,keywords:[`home`,`landing`,`overview`,`introduction`]},{title:`Blocks`,description:`Browse reusable blocks and layout sections.`,href:`/blocks`,group:`Blocks`,shortcut:`B`,featured:!0,keywords:[`blocks`,`catalog`,`templates`,`dashboards`,`marketing`,`layout patterns`]},{title:`Components`,description:`Browse component docs and related modules.`,href:`/components`,group:`Docs`,shortcut:`C`,keywords:[`components`,`catalog`,`docs`,`family`,`category`]},{title:`Developer inventory`,description:`Open the export inventory with primary components, groups, and member routes.`,href:`/components/registry`,group:`Docs`,shortcut:`R`,keywords:[`developer inventory`,`registry`,`inventory`,`exports`,`component list`,`source of truth`]},{title:`Changelog`,description:`Read release notes and track API and docs changes.`,href:`/changelog`,group:`Docs`,shortcut:`L`,keywords:[`changelog`,`release`,`history`,`changes`,`version`]},{title:`Command page`,description:`Open the full route index and quick command page.`,href:`/command`,group:`Docs`,shortcut:`K`,keywords:[`command`,`search`,`palette`,`route index`,`jump`]},{title:`Installation`,description:`Initialize the project, write theme tokens, and copy working CLI commands.`,href:`/docs/installation`,group:`Docs`,shortcut:`I`,featured:!0,keywords:[`installation`,`setup`,`npm`,`theme`,`tembro`,`cli`]},{title:`Next.js installation`,description:`Initialize tembro in a Next.js app and write local component files.`,href:`/docs/installation/next`,group:`Docs`,shortcut:`I`,keywords:[`installation`,`next`,`nextjs`,`setup`,`init`,`tailwind`,`cli`]},{title:`Vite installation`,description:`Initialize tembro in a Vite app and write local component files.`,href:`/docs/installation/vite`,group:`Docs`,shortcut:`I`,keywords:[`installation`,`vite`,`setup`,`init`,`tailwind`,`cli`]},...Y().flatMap(e=>[{title:e.title,description:e.description,href:`/components/${e.slug}`,group:`Components`,shortcut:`C`,featured:e.slug===`button`||e.slug===`input`||e.slug===`dialog`||e.slug===`select`||e.slug===`card`,keywords:[e.slug,e.title,e.category,k(e.slug),J(e.slug),...e.features,`component`,`detail`,`usage`,`installation`]}]),...Z().map(e=>({title:`${e.title} in ${e.surfaceTitle}`,description:`${e.summary} Documented inside the ${e.surfaceTitle} surface under ${e.sectionLabel.toLowerCase()}.`,href:e.href,group:`Components`,shortcut:`M`,keywords:[e.title,e.slug,e.component,e.surfaceTitle,e.surfaceSlug,e.sectionLabel,e.maturity,`member`,`surface`,`variant`,`wrapper`]})),...Q.map(e=>({title:`${e.title} group`,description:`${e.description} Open the grouped docs surface for related exports and usage boundaries.`,href:e.href,group:`Components`,shortcut:`F`,featured:e.slug===`data-table`||e.slug===`form`||e.slug===`layout`,keywords:[e.slug,e.title,e.category,...e.features,...e.exports,`component group`,`catalog`,`system`]})),...Q.flatMap(e=>e.exports.map(t=>({title:`${t} API`,description:`${e.title} export detail with import path, related docs and usage context.`,href:S(e.slug,t),group:`Components`,shortcut:`E`,keywords:[t,e.title,e.slug,...e.features,`export`,`api`,`component`]})))];exports.CLI_ADD_COMMAND=u,exports.CLI_INIT_NEXT_COMMAND=l,exports.CLI_INIT_VITE_COMMAND=te,exports.CLI_INSTALL_COMMAND=ne,exports.CLI_PACKAGE_NAME=s,exports.CLI_THEME_COMMAND=re,exports.DOCS_APP_NAME=ee,exports.DOCS_RELEASES_URL=ae,exports.DOCS_REPO_URL=m,exports.DOCS_ROOT_PATH=g,exports.PACKAGE_GITHUB_RELEASES_URL=p,exports.PACKAGE_GITHUB_URL=f,exports.PACKAGE_IMPORT=c,exports.PACKAGE_INSTALL_COMMAND=d,exports.PACKAGE_NAME=o,exports.PACKAGE_NPM_URL=ie,exports.PACKAGE_RELEASES_URL=h,exports.PACKAGE_RELEASE_DATE=se,exports.PACKAGE_VERSION=oe,exports.accessibilityChecks=We,exports.blockCards=Re,exports.blockCoverageSections=Ie,exports.blockLayoutFilters=Pe,exports.blockPath=w,exports.blockSortOptions=Fe,exports.blockTabs=Ne,exports.blockThemeFilters=$,exports.componentCatalog=V,exports.componentDocsPath=v,exports.componentExportPath=S,exports.componentExportSlug=x,exports.componentGroupMeta=E,exports.componentGroupOrder=T,exports.componentModuleCatalog=Q,exports.componentModulePath=b,exports.componentPlaygroundPath=y,exports.componentRelations=he,exports.docsSidebar=je,exports.exampleCards=He,exports.featuredBlock=Le,exports.getComponentDetailSidebarItems=X,exports.getComponentDetailSidebarSections=Ee,exports.getComponentGroup=k,exports.getComponentGroupDetails=me,exports.getComponentSurfaceCatalogItem=G,exports.getComponentSurfaceSections=De,exports.getDocumentedMemberByComponent=Oe,exports.getDocumentedMembersByComponents=ke,exports.getPrimaryComponentCatalog=Y,exports.getPrimaryComponentMemberInventory=Z,exports.getPrimaryComponentSurfaceSlug=q,exports.getPrimaryComponentSurfaceTitle=J,exports.getVisibleComponentCatalog=Te,exports.globalSearchItems=Ge,exports.inspectorChecks=Ue,exports.installCommand=ze,exports.isPrimaryComponentSurface=K,exports.playgroundSidebar=Me,exports.primaryNav=Ae,exports.propRows=Be,exports.releaseHistory=_,exports.templatePath=C,exports.tocItems=Ve;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../public-component-surface.cjs"),t=require("./tembro-registry.json.cjs"),n=require("./package-meta.cjs");let r=require("lucide-react");var i=[[`control`,`Control<TFieldValues>`,`-`,"RHF control instance from `useForm()`."],[`name`,`FieldPath<TFieldValues>`,`-`,`Field path used for registration and value lookup.`],[`rules`,`Omit<UseControllerProps['rules'], 'value' | 'name'>`,`-`,`Validation rules and constraints for the field.`],[`required`,`boolean | "*" | FieldError`,`false`,`Marks field required in shell and optional validation path.`],[`disabled`,`boolean`,`false`,`Disables input and blocks interaction.`],[`readOnly`,`boolean`,`false`,`Allows viewing without edit; value remains controlled.`],[`error`,`string | FieldError | null`,`-`,`Optional error override instead of default form state message.`]],a=[`RHF control wiring`,`name-based field registration`,`error and required visual states`,`validation contract`,`label/description consistency`,`disabled/readOnly handling`],o=`tembro`,s=`tembro`,c=`tembro`,ee=`azamat-ui`,l=`npx ${s} init --template next --defaults`,te=`npx ${s} init --template vite --defaults`,u=`npx ${s} add button form-input`,d=`${l}\n${u}`,ne=`npx ${s} --help`,re=`npx ${s} theme`,ie=`https://www.npmjs.com/package/tembro`,f=`https://github.com/AzamatJurayev-dev/tembro`,p=`${f}/releases`,m=`https://github.com/AzamatJurayev-dev/azamat-ui`,h=p,ae=`${m}/releases`,g=`/docs`,_=[{version:n.PACKAGE_LATEST_VERSION,date:n.PACKAGE_LATEST_RELEASE_DATE,status:`Published`,summary:`Expanded the registry with newer dashboard, input, badge, sidebar, and notification primitives.`,notes:["Registry truth now includes `accordion`, `sidebar`, `trend-card`, `delta-badge`, `notification-center`, and `command-bar`.",`Component metadata was refreshed so docs can keep canonical surfaces and related helpers accurate.`,`CLI-first local component setup remains the default path for Next.js and Vite users.`]},{version:`0.3.18`,date:`June 30, 2026`,status:`Published`,summary:`Refined grouped docs and related-surface mapping.`,notes:[`Input, Select, Card, Badge, Overlay, Form, and Data Table components were aligned with the latest public exports.`,`Deprecated route-level names stayed aliased for compatibility while primary docs move toward simpler canonical surfaces.`,`Docs app metadata now prefers current package registry vocabulary over older showcase-only names.`]}],oe=_[0]?.version??`2.0.3`,se=_[0]?.date??`July 8, 2026`,v=e=>`/components/${e}`,y=e=>`/playground/${e}`,b=e=>`/components/${e}`,x=e=>e.replace(/([a-z])([A-Z])/g,`$1-$2`).replace(/\s+/g,`-`).toLowerCase(),S=(e,t)=>`/components/${e}/${x(t)}`,C=e=>`/templates/${e}`,w=e=>`/blocks/${e}`,T=[`Primitives`,`Form Controls`,`Overlay`,`Data Display`,`Layout`,`Feedback`,`Patterns`],E={Primitives:{title:`Primitives`,description:`Foundation components for actions, text entry, compact layout and small state changes.`,whenToUse:`Use when you need a small reusable UI unit with minimal product opinion.`,whenNotToUse:`Do not start here when the page needs full form orchestration, route structure, or async flows.`},"Form Controls":{title:`Form Controls`,description:`Fields, wrappers and input flows for validation, selection, formatting and data entry.`,whenToUse:`Use for user input, validation, RHF wiring and constrained value contracts.`,whenNotToUse:`Do not use for read-only summaries or large page layout composition.`},Overlay:{title:`Overlay`,description:`Dialog, popover, menu and confirmation surfaces that appear above the current screen.`,whenToUse:`Use for contextual actions, confirmations and short focused tasks.`,whenNotToUse:`Do not hide long multi-step flows inside overlays when a full page works better.`},"Data Display":{title:`Data Display`,description:`Metrics, tables, empty states and read-oriented surfaces for operational screens.`,whenToUse:`Use when the main job is reading, comparing or scanning product data.`,whenNotToUse:`Do not use these as the first layer for input-heavy forms or route-level navigation.`},Layout:{title:`Layout`,description:`Shell, breadcrumbs, side navigation and page framing for structured application routes.`,whenToUse:`Use when the route needs hierarchy, section framing and navigation continuity.`,whenNotToUse:`Do not pull layout components into tiny isolated widgets or inline forms.`},Feedback:{title:`Feedback`,description:`Loading, result and toast patterns for status communication and short response loops.`,whenToUse:`Use when the UI needs clear success, error, pending or completion feedback.`,whenNotToUse:`Do not use feedback components as a substitute for missing page structure or field validation.`},Patterns:{title:`Patterns`,description:`Composed flows and builders that connect multiple primitives.`,whenToUse:`Use when the screen needs a repeatable workflow instead of one atomic control.`,whenNotToUse:`Do not start here when a primitive or one wrapper solves the need cleanly.`}},ce=new Set([`button`,`input`,`textarea`,`checkbox`,`switch`,`badge`,`card`,`tabs`,`collapse`,`kbd`]),le=new Set([`select`,`simple-select`,`async-select`,`async-multi-select`,`combobox`,`radio-group`,`number-input`,`date-picker`,`date-range-picker`,`form-field-shell`,`form-input`,`form-select`,`form-async-select`,`form-textarea`,`form-switch`,`phone-input`,`masked-input`,`money-input`,`quantity-input`]),ue=new Set([`dialog`,`popover`,`dropdown-menu`,`tooltip`,`right-click-menu`,`confirm-dialog`,`modal-shell`,`sheet-shell`,`alert-dialog`,`drawer`]),de=new Set([`sidebar`,`app-sidebar`,`app-shell`,`sidebar-nav`,`breadcrumbs`,`page-header`,`page-container`,`app-header`,`section-header`,`sticky-footer-bar`]),fe=new Set([`toast`,`loading-state`,`data-state`,`result`]),pe=new Set([]),D=new Map([[`app-sidebar`,`sidebar`],[`confirm-action`,`confirm-dialog`],[`file-dropzone`,`upload`],[`hover-card`,`tooltip`],[`metric-card`,`metric-grid`],[`nav-tabs`,`tabs`],[`section-header`,`page-header`],[`side-panel`,`sidebar`],[`status-dot`,`status-legend`]]);function O(e){return D.get(e)??e}function k(e){return ce.has(e)?`Primitives`:le.has(e)?`Form Controls`:ue.has(e)?`Overlay`:de.has(e)?`Layout`:fe.has(e)?`Feedback`:pe.has(e)?`Patterns`:`Data Display`}function me(e){return E[k(e)]}function A(e,t){return V.filter(t=>k(t.slug)===e).map(e=>({label:e.title,href:t(e.slug),icon:e.icon,badge:e.status}))}var j=[{slug:`button`,title:`Button`,description:`Trigger actions with multiple variants, sizes, icon positions and loading states.`,icon:r.MousePointerClickIcon,category:`Components`,status:`Stable`,installCommand:d,propsRows:[[`variant`,`'default' | 'secondary' | ...`,`'default'`,`The visual style of the button.`],[`size`,`'xs' | 'sm' | 'md' | 'lg' | 'xl'`,`'md'`,`The size of the button.`],[`asChild`,`boolean`,`false`,`Render as a child element using Slot.`],[`disabled`,`boolean`,`false`,`Disables the button.`],[`className`,`string`,`-`,`Additional CSS classes.`],[`onClick`,`(e: MouseEvent) => void`,`-`,`Click event handler.`]],features:[`Variants`,`Sizes`,`Icon support`,`Loading state`]},{slug:`input`,title:`Input`,description:`Primary text-entry surface for forms, filters, and compact editor layouts before moving into presets.`,icon:r.FormInputIcon,category:`Forms`,status:`Stable`,installCommand:d,propsRows:[[`value`,`string`,`-`,`Controlled value.`],[`onValueChange`,`(value) => void`,`-`,`Direct text callback for controlled string flows.`],[`type`,`'text' | 'email' | 'password' | ...`,`'text'`,`Input HTML type before moving to a preset.`],[`clearable`,`boolean`,`false`,`Adds a built-in clear action when value exists.`],[`trailingAction`,`ReactNode`,`-`,`Interactive trailing slot for counters, shortcuts, or actions.`],[`replaceTrailingWhenClear`,`boolean`,`true`,`Keep or replace trailing content when clear is visible.`],[`disabled`,`boolean`,`false`,`Disables the field.`]],features:[`Primary text field`,`Built-in clear action`,`Trailing action slot`,`Preset-friendly API`]},{slug:`textarea`,title:`Textarea`,description:`Multi-line input with autosizing-friendly layout for notes, messages and long-form data.`,icon:r.FileTextIcon,category:`Forms`,status:`Stable`,installCommand:d,propsRows:[[`placeholder`,`string`,`-`,`Placeholder text.`],[`disabled`,`boolean`,`false`,`Disables the textarea.`],[`rows`,`number`,`-`,`Preferred visible rows.`],[`value`,`string`,`-`,`Controlled value.`],[`onChange`,`(event) => void`,`-`,`Change handler.`]],features:[`Long-form input`,`Disabled state`,`Resizable content`,`Controlled value`]},{slug:`select`,title:`Select`,description:`Primary selection surface for lists, status filters, and compact forms before moving into members.`,icon:r.ComponentIcon,category:`Forms`,status:`Stable`,installCommand:d,propsRows:[[`value`,`string`,`-`,`Controlled selected value.`],[`defaultValue`,`string`,`-`,`Initial selected value.`],[`onValueChange`,`(value) => void`,`-`,`Selection change callback.`],[`searchable`,`boolean`,`false`,`Enables local filtering on the main surface.`],[`multiple`,`boolean`,`false`,`Allows multiple values when the active member supports it.`],[`size`,`'sm' | 'default'`,`'default'`,`Trigger size.`],[`disabled`,`boolean`,`false`,`Disables the trigger.`]],features:[`Primary choice input`,`Local filtering`,`Compact trigger`,`Preset-friendly API`]},{slug:`simple-select`,title:`Simple Select`,description:`Static-option select surface for compact forms, filter rows, and settings screens that do not need remote loading.`,icon:r.ComponentIcon,category:`Forms`,status:`Stable`,installCommand:d,propsRows:[[`options`,`SimpleSelectOption[]`,`-`,`Static options for display and selection.`],[`value`,`string`,`-`,`Controlled selected value.`],[`onValueChange`,`(value) => void`,`-`,`Selection callback.`],[`defaultValue`,`string`,`-`,`Uncontrolled initial selected value.`],[`placeholder`,`string`,`-`,`Prompt text for empty state.`],[`size`,`'sm' | 'default'`,`'default'`,`Trigger visual density.`],[`disabled`,`boolean`,`false`,`Disables select interaction.`],[`triggerClassName`,`string`,`-`,`Trigger custom class.`]],features:[`Static options API`,`Controlled and uncontrolled usage`,`Shared select styling`,`Compact filter and form flows`]},{slug:`async-select`,title:`Async Select`,description:`Remote-aware select for search-driven datasets, edit hydration, and production loading or empty states.`,icon:r.ComponentIcon,category:`Forms`,status:`Stable`,installCommand:d,propsRows:[[`value`,`string`,`-`,`Controlled selected value.`],[`selectedOption`,`AsyncSelectOption`,`-`,`Hydrated selected option for controlled edit modes.`],[`onValueChange`,`(value, option?) => void`,`-`,`Selection callback with optional option payload.`],[`loadOptions`,`(search) => Promise<AsyncSelectOption[]>`,`-`,`Async option fetcher.`],[`loadSelectedOption`,`(value) => Promise<AsyncSelectOption | null>`,`-`,`Fetch selected option for controlled edit.`],[`defaultOptions`,`AsyncSelectOption[]`,`-`,`Initial static options.`],[`clearable`,`boolean`,`true`,`Allows clearing the selected value.`],[`cacheOptions`,`boolean`,`false`,`Reuse options cache across repeated queries.`],[`minSearchLength`,`number`,`1`,`Minimum query length for request.`],[`debounceMs`,`number`,`250`,`Delay before calling remote search.`],[`labels`,`AsyncSelectLabels`,`-`,`Copy and state copy labels.`],[`renderLoading`,`AsyncSelectStateRenderer`,`-`,`Custom loading content renderer.`]],features:[`Remote option loading`,`Debounced search`,`Hydrated edit state`,`Clearable controlled output`]},{slug:`async-multi-select`,title:`Async Select`,description:"Legacy alias for Async Select multi mode. Use `isMulti` on AsyncSelect instead of installing a separate component.",icon:r.ComponentIcon,category:`Forms`,status:`Preview`,installCommand:d,propsRows:[[`isMulti`,`boolean`,`true`,`Turns AsyncSelect into multi mode with tag selection.`],[`value`,`string[]`,`-`,`Controlled selected values in multi mode.`],[`onValueChange`,`(values, options) => void`,`-`,`Bulk selection callback in multi mode.`],[`maxSelected`,`number`,`-`,`Upper cap for total selected items.`],[`showSelectAll`,`boolean`,`false`,`Allow select-all shortcut.`]],features:[`Legacy alias`,`Multi selection`,`Select-all helpers`,`Use AsyncSelect as the canonical API`]},{slug:`combobox`,title:`Combobox`,description:`Keyboard-first local filtering member for assignment flows and command-style lists.`,icon:r.ComponentIcon,category:`Forms`,status:`Stable`,installCommand:d,propsRows:[[`options`,`ComboboxOption[]`,`-`,`Local options with label, description and disabled state.`],[`value`,`string`,`-`,`Controlled selected value.`],[`onValueChange`,`(value, option?) => void`,`-`,`Selection callback with option payload.`],[`placeholder`,`ReactNode`,`"Select option"`,`Trigger content when no value is selected.`],[`searchPlaceholder`,`string`,`"Search..."`,`Search input placeholder.`],[`emptyLabel`,`ReactNode`,`"No option found"`,`Empty state content.`],[`disabled`,`boolean`,`false`,`Disables trigger and dropdown interaction.`]],features:[`Keyboard-first member`,`Local option filtering`,`Description rows`,`Controlled assignment flows`]},{slug:`number-input`,title:`Number Input`,description:`Numeric entry with parsing, constraints, and precise change semantics.`,icon:r.ToggleLeftIcon,category:`Forms`,status:`Stable`,installCommand:d,propsRows:[[`value`,`number | string`,`-`,`Controlled value.`],[`defaultValue`,`number | string`,`-`,`Initial uncontrolled value.`],[`onChange`,`React.ChangeEventHandler<HTMLInputElement>`,`-`,`Native change event.`],[`onNumberChange`,`(value) => void`,`-`,`Parsed numeric callback.`],[`onValueChange`,`(value) => void`,`-`,`String-based callback for raw typed value.`],[`min`,`number`,`-`,`Lower bound.`],[`max`,`number`,`-`,`Upper bound.`],[`step`,`number`,`1`,`Step size for changes.`],[`allowEmpty`,`boolean`,`false`,`Allows clearing the input without forcing zero.`]],features:[`Parsing`,`min/max`,`Step semantics`,`Invalid number handling`]},{slug:`date-picker`,title:`Date Picker`,description:`Popover-based date picker optimized for form fields and action buttons.`,icon:r.CalendarClockIcon,category:`Forms`,status:`Preview`,installCommand:d,propsRows:[[`value`,`string`,`-`,`Controlled picker value.`],[`defaultValue`,`string`,`-`,`Initial uncontrolled value.`],[`onValueChange`,`(value) => void`,`-`,`Picker change callback.`],[`disabled`,`boolean`,`false`,`Disables the popover trigger.`],[`min`,`string`,`-`,`Minimum selectable date string.`],[`max`,`string`,`-`,`Maximum selectable date string.`],[`disabledDates`,`string[]`,`-`,`Date literals that are blocked.`],[`className`,`string`,`-`,`Wrapper style class.`]],features:[`Popover selection`,`Date formatting`,`min/max`,`disabledDates`]},{slug:`date-range-picker`,title:`Date Range Picker`,description:`Popover date-range picker for period selection with constrained windows.`,icon:r.CalendarClockIcon,category:`Forms`,status:`Preview`,installCommand:d,propsRows:[[`value`,`{ from: string; to: string }`,`-`,`Controlled range value.`],[`defaultValue`,`{ from: string; to: string }`,`-`,`Initial uncontrolled range value.`],[`onValueChange`,`(value) => void`,`-`,`Range callback with from/to.`],[`disabled`,`boolean`,`false`,`Disables all picker interactions.`],[`min`,`string`,`-`,`Earliest allowed date.`],[`max`,`string`,`-`,`Latest allowed date.`],[`disabledDates`,`string[]`,`-`,`Date literals blocked from selection.`],[`className`,`string`,`-`,`Wrapper style class.`]],features:[`Range picker`,`Range windows`,`disabledDates`,`Boundary guards`]},{slug:`form-field-shell`,title:`Form Field Shell`,description:`Composable field shell that standardizes label, description, layout, errors and required markers.`,icon:r.FileTextIcon,category:`Forms`,status:`Stable`,installCommand:d,propsRows:[[`label`,`string`,`-`,`Field shell label text.`],[`description`,`string`,`-`,`Supporting helper text.`],[`descriptionPosition`,`'top' | 'bottom'`,`'bottom'`,`Description location relative to control.`],[`layout`,`'vertical' | 'horizontal' | 'inline'`,`'vertical'`,`Visual layout mode of label and field.`],[`required`,`boolean`,`false`,`Renders required marker and forwards required metadata.`],[`error`,`string | FieldError`,`-`,`Explicit error message shown in helper area.`],[`labelAction`,`ReactNode`,`-`,`Optional action in label area.`],[`readOnly`,`boolean`,`false`,`Read-only shell state.`],[`disabled`,`boolean`,`false`,`Disables shell state visuals.`],[`className`,`string`,`-`,`Custom wrapper class.`]],features:[`Label contract`,`Inline description`,`Horizontal/inline layout`,`ReadOnly + disabled states`,`Required indicator`]},{slug:`form-input`,title:`Form Input`,description:"Primary RHF field wrapper for text-like inputs. Use `kind` to cover search, password, number, phone, and date flows from one surface.",icon:r.FormInputIcon,category:`Forms`,status:`Preview`,installCommand:d,propsRows:[...i,[`kind`,`'text' | 'search' | 'password' | 'number' | 'phone' | 'date'`,`'text'`,`Selects the field variant without changing wrapper-level API.`],[`type`,`'text' | 'email' | 'search' | ...`,`'text'`,`Rendered input type for base behavior when using the text variant.`],[`placeholder`,`string`,`-`,`Input placeholder.`],[`onValueChange`,`(value: string) => void`,`-`,`Change callback with parsed display value.`],[`defaultValue`,`string`,`-`,`Uncontrolled initial value in hybrid modes.`]],features:[...a,"Universal `kind` variants",`Error text and message flow`,`Single wrapper migration path`]},{slug:`form-select`,title:`Form Select`,description:'Primary RHF select wrapper. Start with the default simple mode and switch to `kind="async"` when option loading or hydration is remote.',icon:r.ComponentIcon,category:`Forms`,status:`Stable`,installCommand:d,propsRows:[...i,[`kind`,`'simple' | 'async'`,`'simple'`,`Chooses the select surface while keeping the same form wrapper contract.`],[`options`,`SimpleSelectOption[]`,`-`,`Flat option set for select rendering.`],[`placeholder`,`string`,`-`,`Default label when empty.`],[`onValueChange`,`(value: string) => void`,`-`,`Selection change callback.`]],features:[...a,`Simple + async under one API`,`Form-driven value control`,`Clear/empty handling`]},{slug:`form-async-select`,title:`Form Async Select`,description:'Compatibility alias for the async `FormSelect` variant. Keep it for migration, but prefer `FormSelect kind="async"` in new code.',icon:r.ComponentIcon,category:`Forms`,status:`Stable`,installCommand:d,propsRows:[...i,[`loadOptions`,`(search: string) => Promise<AsyncSelectOption[]>`,`-`,`Search-driven option loader.`],[`loadSelectedOption`,`(value: string) => Promise<AsyncSelectOption | null>`,`-`,`Hydrates selected option for controlled edit mode.`],[`selectedOption`,`AsyncSelectOption`,`-`,`Hydrated selected option.`],[`defaultOptions`,`AsyncSelectOption[]`,`-`,`Initial loaded options.`]],features:[...a,`Compatibility alias`,`Remote options`,`Hydration support`]},{slug:`form-textarea`,title:`Form Textarea`,description:`RHF textarea wrapper with shell-level validation messages and descriptions.`,icon:r.FileTextIcon,category:`Forms`,status:`Stable`,installCommand:d,propsRows:[...i,[`rows`,`number`,`-`,`Visible row count.`],[`minHeight`,`number`,`-`,`Optional minimum height in rem/px.`],[`maxLength`,`number`,`-`,`Input length safety guard.`],[`onValueChange`,`(value: string) => void`,`-`,`Raw text callback from field.`]],features:[...a,`Long text support`,`Error placement`,`Description + helper states`]},{slug:`form-switch`,title:`Form Switch`,description:`RHF switch wrapper with binary payload and shell-level feedback.`,icon:r.ToggleLeftIcon,category:`Forms`,status:`Stable`,installCommand:d,propsRows:[...i,[`checked`,`boolean`,`-`,`Controlled checked value when controlled by wrapper.`],[`defaultChecked`,`boolean`,`false`,`Uncontrolled initial value in mixed modes.`],[`onCheckedChange`,`(value: boolean) => void`,`-`,`Boolean callback from switch state change.`]],features:[...a,`Boolean value contract`,`Readable shell errors`,`Disabled states`]},{slug:`radio-group`,title:`Radio Group`,description:`Single-choice grouped control for plans, density modes, and mutually exclusive settings.`,icon:r.ToggleLeftIcon,category:`Forms`,status:`Stable`,installCommand:d,propsRows:[[`options`,`RadioGroupOption[]`,`-`,`Options with label, value and optional description.`],[`value`,`string`,`-`,`Controlled selected value.`],[`defaultValue`,`string`,`-`,`Initial uncontrolled value.`],[`onValueChange`,`(value) => void`,`-`,`Selection callback.`],[`orientation`,`'vertical' | 'horizontal'`,`'vertical'`,`Layout direction.`],[`size`,`'sm' | 'default' | 'lg'`,`'default'`,`Control density.`]],features:[`Single selection`,`Descriptions`,`Horizontal or vertical layout`,`Controlled plans`]},{slug:`phone-input`,title:`Phone Input`,description:`Localized phone number input with formatted display and consistent editing assumptions.`,icon:r.SmartphoneIcon,category:`Forms`,status:`Preview`,installCommand:d,propsRows:[[`value`,`string`,`-`,`Controlled phone value used as canonical form (usually raw digits or formatted string).`],[`defaultValue`,`string`,`-`,`Uncontrolled initial phone value.`],[`onValueChange`,`(value) => void`,`-`,`Emitted value after formatting transformations.`],[`defaultCountry`,`string`,`"UZ" | "US" | ...`,`Country context used by masking layer.`],[`placeholder`,`string`,`"+998 (__) ___-__-__"`,`Field placeholder.`],[`disabled`,`boolean`,`false`,`Disable interaction.`],[`separator`,`string`,`" "`,`Custom separator for grouping digits.`]],features:[`Phone parsing`,`Masking assumptions`,`Localized formatting`,`Controlled usage`]},{slug:`masked-input`,title:`Masked Input`,description:`Pattern-driven text input for IDs, codes and fixed-format strings.`,icon:r.SmartphoneIcon,category:`Forms`,status:`Preview`,installCommand:d,propsRows:[[`value`,`string`,`-`,`Controlled masked value.`],[`defaultValue`,`string`,`-`,`Uncontrolled initial masked value.`],[`onValueChange`,`(value) => void`,`-`,`Raw value callback after mask is applied.`],[`mask`,`((value: string) => string) | ((value: string, pattern: string) => string)`,`-`,`Formatting function for live masking.`],[`placeholder`,`string`,`-`,`Placeholder and pattern hint for users.`],[`stripMask`,`boolean`,`true`,`Whether callback should return raw digits.`],[`disabled`,`boolean`,`false`,`Disables user edits.`]],features:[`Mask function`,`Pattern assumptions`,`Controlled editing`,`Fixed-format workflows`]},{slug:`money-input`,title:`Money Input`,description:`Currency-aware input with prefix/suffix and parsing helper for numeric payload.`,icon:r.WalletIcon,category:`Forms`,status:`Stable`,installCommand:d,propsRows:[[`value`,`number`,`-`,`Controlled money value.`],[`defaultValue`,`number`,`-`,`Initial uncontrolled value.`],[`onValueChange`,`(value, rawValue) => void`,`-`,`Parsed numeric value and raw text callback.`],[`prefix`,`string`,`"$"`,`Money prefix text.`],[`suffix`,`string`,`-`,`Money suffix text.`],[`inputMode`,`'text' | 'decimal' | 'numeric'`,`'decimal'`,`Mobile keyboard hint.`],[`className`,`string`,`-`,`Wrapper custom styles.`]],features:[`Currency formatting assumptions`,`Parsing flow`,`Prefix/suffix`,`Read/write numeric value`]},{slug:`quantity-input`,title:`Quantity Input`,description:`Stepper-like numeric input for compact quantity and count constraints.`,icon:r.ToggleLeftIcon,category:`Forms`,status:`Stable`,installCommand:d,propsRows:[[`value`,`number`,`-`,`Controlled quantity.`],[`defaultValue`,`number`,`-`,`Initial quantity.`],[`onValueChange`,`(value) => void`,`-`,`Change callback with parsed quantity.`],[`min`,`number`,`0`,`Minimum value.`],[`max`,`number`,`-`,`Maximum value.`],[`step`,`number`,`1`,`Increment size.`],[`showControls`,`boolean`,`true`,`Display increment/decrement controls.`]],features:[`Count editing`,`Clamp behavior`,`Controls`,`Min/max guardrails`]},{slug:`checkbox`,title:`Checkbox`,description:`Binary selection control for permissions, tasks and grouped form actions.`,icon:r.BoxIcon,category:`Forms`,status:`Stable`,installCommand:d,propsRows:[[`checked`,`boolean | 'indeterminate'`,`false`,`Controlled checked state.`],[`defaultChecked`,`boolean | 'indeterminate'`,`false`,`Initial state.`],[`disabled`,`boolean`,`false`,`Disables the control.`],[`onCheckedChange`,`(checked) => void`,`-`,`Checked state callback.`]],features:[`Checked state`,`Indeterminate state`,`Disabled state`,`Task lists`]},{slug:`switch`,title:`Switch`,description:`On/off control for preferences, settings and lightweight toggles.`,icon:r.ToggleLeftIcon,category:`Forms`,status:`Stable`,installCommand:d,propsRows:[[`checked`,`boolean`,`false`,`Controlled on/off state.`],[`defaultChecked`,`boolean`,`false`,`Initial state.`],[`disabled`,`boolean`,`false`,`Disables the switch.`],[`onCheckedChange`,`(checked) => void`,`-`,`State change callback.`]],features:[`Checked state`,`Settings toggles`,`Disabled state`,`Compact interaction`]},{slug:`badge`,title:`Badge`,description:`Small status surface for counts, labels, intents and inline metadata.`,icon:r.BadgeIcon,category:`Components`,status:`Stable`,installCommand:d,propsRows:[[`variant`,`'default' | 'secondary' | 'destructive' | 'outline' | 'ghost' | 'link'`,`'default'`,`Visual style.`],[`render`,`ReactNode`,`-`,`Optional custom render target.`],[`className`,`string`,`-`,`Additional CSS classes.`]],features:[`Status labels`,`Variants`,`Inline metadata`,`Compact counters`]},{slug:`card`,title:`Card`,description:`Structured content container with header, content and footer slots.`,icon:r.LayoutDashboardIcon,category:`Components`,status:`Stable`,installCommand:d,propsRows:[[`size`,`'default' | 'sm'`,`'default'`,`Card density.`],[`className`,`string`,`-`,`Additional CSS classes.`],[`children`,`ReactNode`,`-`,`Composed card content.`]],features:[`Header/footer slots`,`Compact size`,`Dashboard modules`,`Composed content`]},{slug:`tabs`,title:`Tabs`,description:`Segmented navigation for switching views without leaving the current route.`,icon:r.Layers3Icon,category:`Components`,status:`Stable`,installCommand:d,propsRows:[[`value`,`string`,`-`,`Controlled active tab.`],[`defaultValue`,`string`,`-`,`Initial tab.`],[`orientation`,`'horizontal' | 'vertical'`,`'horizontal'`,`Tab list direction.`],[`disabled`,`boolean`,`false`,`Disables a trigger.`]],features:[`Segmented nav`,`Panel switching`,`Controlled state`,`Settings sections`]},{slug:`collapse`,title:`Collapse`,description:`Expandable disclosure surface for FAQs, dense settings, and progressive detail blocks.`,icon:r.WorkflowIcon,category:`Components`,status:`Stable`,installCommand:d,propsRows:[[`open`,`boolean`,`-`,`Controlled open state for a single collapse item.`],[`defaultOpen`,`boolean`,`false`,`Initial uncontrolled open state.`],[`onOpenChange`,`(open) => void`,`-`,`Open state callback.`],[`items`,`CollapseItem[]`,`-`,"Grouped disclosure items for `CollapseGroup`."],[`type`,`'single' | 'multiple'`,`'multiple'`,`Whether one or many group items can stay open.`]],features:[`Disclosure sections`,`Controlled state`,`Grouped items`,`Dense content reveal`]},{slug:`dialog`,title:`Dialog`,description:`Focused modal surface for confirmation flows, forms and destructive actions.`,icon:r.AlertCircleIcon,category:`Overlay`,status:`Stable`,installCommand:d,propsRows:[[`open`,`boolean`,`-`,`Controlled open state.`],[`defaultOpen`,`boolean`,`false`,`Initial open state.`],[`onOpenChange`,`(open) => void`,`-`,`Open state callback.`],[`showCloseButton`,`boolean`,`true`,`Toggles the close affordance.`]],features:[`Modal trigger`,`Overlay`,`Header/footer slots`,`Close actions`]},{slug:`popover`,title:`Popover`,description:`Lightweight anchored overlay for context actions and compact helper content.`,icon:r.SparklesIcon,category:`Overlay`,status:`Stable`,installCommand:d,propsRows:[[`side`,`'top' | 'right' | 'bottom' | 'left'`,`'bottom'`,`Popup side.`],[`align`,`'start' | 'center' | 'end'`,`'center'`,`Popup alignment.`],[`sideOffset`,`number`,`4`,`Distance from trigger.`],[`children`,`ReactNode`,`-`,`Trigger and content composition.`]],features:[`Anchored overlay`,`Title/description`,`Action menus`,`Compact help content`]},{slug:`dropdown-menu`,title:`Dropdown Menu`,description:`Menu overlays with action, checkbox and radio items for dense navigation.`,icon:r.ComponentIcon,category:`Overlay`,status:`Stable`,installCommand:d,propsRows:[[`open`,`boolean`,`-`,`Controlled open state.`],[`onOpenChange`,`(open) => void`,`-`,`Open state callback.`],[`children`,`ReactNode`,`-`,`Trigger and content composition.`],[`side`,`'top' | 'right' | 'bottom' | 'left'`,`'bottom'`,`Popup side.`],[`align`,`'start' | 'center' | 'end'`,`'start'`,`Popup alignment.`],[`sideOffset`,`number`,`4`,`Distance from trigger.`],[`disabled`,`boolean`,`false`,`Disable menu interaction.`]],features:[`Dropdown patterns`,`Checkbox items`,`Radio groups`,`Shortcut labels`]},{slug:`tooltip`,title:`Tooltip`,description:`Compact hover and focus hint for controls that need one short piece of guidance.`,icon:r.SparklesIcon,category:`Overlay`,status:`Stable`,installCommand:d,propsRows:[[`content`,`ReactNode`,`-`,`Tooltip label or helper content.`],[`side`,`'top' | 'bottom' | 'left' | 'right'`,`'top'`,`Placement around the trigger.`],[`disabled`,`boolean`,`false`,`Disables tooltip rendering.`],[`children`,`ReactNode`,`-`,`Trigger content wrapped by the tooltip.`]],features:[`Short helper copy`,`Hover + focus`,`Side placement`,`Low-noise guidance`]},{slug:`hover-card`,title:`Hover Card`,description:`Hover-revealed detail card for compact entity previews and secondary context.`,icon:r.SparklesIcon,category:`Overlay`,status:`Stable`,installCommand:d,propsRows:[[`trigger`,`ReactNode`,`-`,`Inline trigger element that reveals the card.`],[`content`,`ReactNode`,`-`,`Card body content shown on hover/focus.`],[`side`,`'top' | 'right' | 'bottom' | 'left'`,`'bottom'`,`Preferred card placement.`],[`contentClassName`,`string`,`-`,`Extra classes for the revealed card surface.`]],features:[`Entity preview`,`Hover + focus`,`Secondary context`,`Compact detail card`]},{slug:`right-click-menu`,title:`Right Click Menu`,description:`Context menu surface for dense workspaces that need pointer-driven secondary actions.`,icon:r.MousePointerClickIcon,category:`Overlay`,status:`Stable`,installCommand:d,propsRows:[[`items`,`RightClickMenuItem[]`,`-`,`Context actions shown after right click.`],[`children`,`ReactNode`,`-`,`Target area that owns the right-click interaction.`],[`className`,`string`,`-`,`Wrapper classes for the interaction zone.`]],features:[`Context actions`,`Pointer workflow`,`Compact menus`,`Workspace interactions`]},{slug:`confirm-dialog`,title:`Confirm Dialog`,description:`Clear confirm overlays for safe destructive and irreversible actions.`,icon:r.AlertCircleIcon,category:`Overlay`,status:`Stable`,installCommand:d,propsRows:[[`open`,`boolean`,`-`,`Controlled open state.`],[`onOpenChange`,`(open) => void`,`-`,`Open state callback for parent-driven flow.`],[`title`,`string`,`-`,`Dialog title text.`],[`description`,`string`,`-`,`Secondary context and scope text.`],[`confirmText`,`string`,`'Confirm'`,`Primary action label.`],[`confirmVariant`,`'default' | 'destructive'`,`'default'`,`Primary button emphasis.`],[`isLoading`,`boolean`,`false`,`Disables actions while async action runs.`],[`onConfirm`,`() => void | Promise<void>`,`-`,`Required confirm handler.`]],features:[`Destructive confirmations`,`Controlled usage`,`Async confirm`,`Clear copy guidance`]},{slug:`modal-shell`,title:`Modal Shell`,description:`Composable shell for short focused forms, approvals, and information dialogs.`,icon:r.PanelTopIcon,category:`Overlay`,status:`Stable`,installCommand:d,propsRows:[[`open`,`boolean`,`-`,`Controlled open state.`],[`onOpenChange`,`(open) => void`,`-`,`Open state callback.`],[`title`,`string`,`-`,`Header title for shell context.`],[`description`,`string`,`-`,`Header description or guidance text.`],[`footer`,`ReactNode`,`-`,`Optional footer action area.`],[`size`,`'sm' | 'md' | 'lg' | 'xl'`,`'md'`,`Shell width/spacing profile.`],[`showCloseButton`,`boolean`,`true`,`Show default close icon.`]],features:[`Reusable overlay shell`,`Controlled modal`,`Slot composition`,`Action footers`]},{slug:`sheet-shell`,title:`Sheet Shell`,description:`Side anchored shell for contextual editing and mobile drawer flows.`,icon:r.PanelTopIcon,category:`Overlay`,status:`Stable`,installCommand:d,propsRows:[[`open`,`boolean`,`-`,`Controlled open state.`],[`onOpenChange`,`(open) => void`,`-`,`Open state callback.`],[`side`,`'right' | 'left' | 'top' | 'bottom'`,`'right'`,`Drawer anchor side.`],[`title`,`string`,`-`,`Sheet title.`],[`description`,`string`,`-`,`Optional supporting text.`],[`footer`,`ReactNode`,`-`,`Optional footer action area.`],[`size`,`'sm' | 'md' | 'lg' | 'xl'`,`'md'`,`Shell width/spacing profile.`]],features:[`Side drawer`,`Mobile sheet`,`Slot composition`,`Context workflows`]},{slug:`app-shell`,title:`App Shell`,description:`Compose dashboards and pages with header, sidebar, content, aside and mobile controls.`,icon:r.LayoutDashboardIcon,category:`Components`,status:`Stable`,installCommand:d,propsRows:[[`header`,`ReactNode`,`-`,`Optional top header region.`],[`sidebar`,`ReactNode`,`-`,`Optional sidebar region for global navigation.`],[`aside`,`ReactNode`,`-`,`Optional side content region.`],[`footer`,`ReactNode`,`-`,`Optional footer region.`],[`sidebarCollapsed`,`boolean`,`-`,`Controlled sidebar collapse state.`],[`onSidebarCollapsedChange`,`(collapsed) => void`,`-`,`Callback for controlled collapse toggles.`],[`mobileSidebarOpen`,`boolean`,`-`,`Controlled mobile sidebar visibility.`],[`sidebarMode`,`'fixed' | 'static'`,`'fixed'`,`Desktop sidebar placement strategy.`],[`showMobileMenuButton`,`boolean`,`true`,`Shows mobile menu trigger button.`]],features:[`Shell composition`,`Responsive layout`,`Aside slot`,`Controlled sidebar`]},{slug:`sidebar`,title:`Sidebar`,description:`Reusable application sidebar with header, footer, active states, collapsed mode and custom link rendering.`,icon:r.LayoutDashboardIcon,category:`Components`,status:`Stable`,installCommand:d,propsRows:[[`items`,`AppSidebarNavItem[]`,`[]`,`Sidebar entries with active, disabled, badge and callback state.`],[`header`,`ReactNode`,`-`,`Optional content rendered above navigation items.`],[`footer`,`ReactNode`,`-`,`Optional footer actions or account area.`],[`collapsed`,`boolean`,`false`,`Compact sidebar mode for dense layouts.`],[`onItemSelect`,`(item) => void`,`-`,`Called when a sidebar item is selected.`],[`renderItem`,`(item, state) => ReactNode`,`-`,`Override full item rendering.`],[`renderLink`,`(props) => ReactNode`,`-`,`Override anchor rendering for router integration.`]],features:[`Navigation sidebar`,`Collapsed state`,`Header and footer slots`,`Router-friendly rendering`]},{slug:`sidebar-nav`,title:`Sidebar Nav`,description:`Structured nav list with active/disabled states, route metadata and custom render hooks.`,icon:r.LayoutDashboardIcon,category:`Components`,status:`Stable`,installCommand:d,propsRows:[[`items`,`SidebarNavItem[]`,`-`,`Navigation entries, including active, disabled and custom render payloads.`],[`collapsed`,`boolean`,`false`,`Compact nav mode with item labels hidden.`],[`itemClassName`,`string`,`-`,`Class for all nav items.`],[`activeItemClassName`,`string`,`-`,`Class added to the active item.`],[`renderItem`,`(item, element) => ReactNode`,`-`,`Custom item rendering hook.`],[`renderLink`,`(props) => ReactNode`,`-`,`Custom link rendering hook.`]],features:[`Navigation lists`,`Active states`,`Custom render`,`Collapsed mode`]},{slug:`breadcrumbs`,title:`Breadcrumbs`,description:`Navigation breadcrumbs with current context and optional custom link rendering.`,icon:r.ChevronRightIcon,category:`Components`,status:`Stable`,installCommand:d,propsRows:[[`items`,`BreadcrumbItem[]`,`-`,`Breadcrumb sequence for navigation context.`],[`separator`,`ReactNode`,`-`,`Custom separator between items.`],[`renderLink`,`(props) => ReactNode`,`-`,`Custom link renderer for each item.`],[`current`,`boolean`,`-`,`Marks current step and disables navigation for it.`]],features:[`Navigation context`,`Custom separators`,`Custom links`,`Current state support`]},{slug:`page-header`,title:`Page Header`,description:`Top-level page heading block with breadcrumbs, actions and optional meta area.`,icon:r.CreditCardIcon,category:`Components`,status:`Stable`,installCommand:d,propsRows:[[`title`,`ReactNode`,`-`,`Primary heading text.`],[`description`,`ReactNode`,`-`,`Subtext explanation for current page.`],[`eyebrow`,`ReactNode`,`-`,`Small uppercase lead text.`],[`breadcrumbs`,`ReactNode`,`-`,`Optional breadcrumb trail.`],[`actions`,`ReactNode`,`-`,`Actions rendered on the right side.`],[`meta`,`ReactNode`,`-`,`Secondary metadata block.`],[`sticky`,`boolean`,`false`,`Enable sticky positioning in scroll containers.`]],features:[`Page context`,`Action areas`,`Breadcrumb composition`,`Sticky header option`]},{slug:`page-container`,title:`Page Container`,description:`Consistent width and spacing wrapper for page contents and responsive content density.`,icon:r.PanelTopIcon,category:`Components`,status:`Stable`,installCommand:d,propsRows:[[`size`,`'default' | 'sm' | 'md' | 'lg' | 'xl' | 'full'`,`'default'`,`Container width preset.`],[`className`,`string`,`-`,`Additional wrapper class names.`],[`children`,`ReactNode`,`-`,`Page content.`]],features:[`Consistent content width`,`Responsive max-width`,`Spacing control`,`Dashboard wrappers`]},{slug:`metric-grid`,title:`Metric Grid`,description:`Compact KPI cards for dashboards with trend, icon and tone options.`,icon:r.DatabaseIcon,category:`Data Display`,status:`Stable`,installCommand:d,propsRows:[[`items`,`MetricItem[]`,`-`,`Metric tiles and optional descriptions.`],[`columns`,`1 | 2 | 3 | 4`,`3`,`Number of columns for layout.`],[`compact`,`boolean`,`false`,`Shrinks paddings and typography for dense layouts.`],[`itemClassName`,`string`,`-`,`Shared class override for each metric card.`]],features:[`KPI display`,`Compact and dense layout`,`Trend labels`,`Dashboard summaries`]},{slug:`info-card`,title:`Info Card`,description:`Flexible context card for summaries, metadata, quick actions, and supporting media inside real product surfaces.`,icon:r.FileTextIcon,category:`Data Display`,status:`Stable`,installCommand:d,propsRows:[[`eyebrow`,`ReactNode`,`-`,`Small label above card title.`],[`title`,`ReactNode`,`-`,`Main card title.`],[`description`,`ReactNode`,`-`,`Supporting description text.`],[`icon`,`ReactNode`,`-`,`Optional leading icon.`],[`actions`,`ReactNode`,`-`,`Card action area.`],[`media`,`ReactNode`,`-`,`Optional media block.`],[`compact`,`boolean`,`false`,`Compact card density.`],[`orientation`,`'vertical' | 'horizontal'`,`'vertical'`,`Content layout direction.`]],features:[`Metadata summaries`,`Action regions`,`Media slots`,`Vertical or horizontal layout`]},{slug:`activity-feed`,title:`Activity Feed`,description:`Timeline-like feed list for events, audits and recent activity surfaces.`,icon:r.BadgeIcon,category:`Data Display`,status:`Stable`,installCommand:d,propsRows:[[`items`,`ActivityFeedItem[]`,`-`,`List of timeline-like activity rows.`],[`title`,`ReactNode`,`-`,`Feed title.`],[`description`,`ReactNode`,`-`,`Supporting card description.`],[`actions`,`ReactNode`,`-`,`Optional header actions.`],[`empty`,`ReactNode`,`-`,`Fallback when there are no items.`],[`compact`,`boolean`,`false`,`Compact feed density.`],[`itemClassName`,`string`,`-`,`Class for each feed item.`]],features:[`Audit timeline`,`Empty state handling`,`Compact mode`,`Action rows`]},{slug:`data-state`,title:`Data State`,description:`Unified data state block for empty, search-empty, loading, error and success surfaces.`,icon:r.AlertCircleIcon,category:`Data Display`,status:`Stable`,installCommand:d,propsRows:[[`status`,`"idle" | "loading" | "empty" | "error" | "success"`,`-`,`State preset that controls default copy and icon.`],[`title`,`ReactNode`,`-`,`Primary state title.`],[`description`,`ReactNode`,`-`,`Short explanation for the current state.`],[`variant`,`"card" | "plain" | "inline"`,`"card"`,`Container style for page, table and inline usage.`],[`query`,`ReactNode`,`-`,`Optional searched value for empty search results.`],[`actions`,`ReactNode`,`-`,`Custom action elements.`],[`onRetry`,`() => void`,`-`,`Retry callback for error/loading recovery.`],[`onClear`,`() => void`,`-`,`Clear callback for search-empty states.`]],features:[`Empty/search-empty states`,`Error retry`,`Plain table fallback`,`Inline state rows`]},{slug:`loading-state`,title:`Loading State`,description:`Simple loading placeholder block with label and description.`,icon:r.SparklesIcon,category:`Data Display`,status:`Stable`,installCommand:d,propsRows:[[`label`,`ReactNode`,`-`,`Loading heading.`],[`description`,`ReactNode`,`-`,`Loading explanation text.`],[`icon`,`ReactNode`,`-`,`Optional loading icon.`],[`className`,`string`,`-`,`Container class override.`]],features:[`Skeleton alternative`,`Section loading labels`,`Minimal setup`,`Custom icon`]},{slug:`result`,title:`Result`,description:`Status result surface for success, warning, error and blocked/empty outcomes.`,icon:r.ShieldCheckIcon,category:`Data Display`,status:`Stable`,installCommand:d,propsRows:[[`status`,`'success' | 'error' | 'warning' | 'info' | 'not-found' | 'forbidden' | 'server-error'`,`'info'`,`Result semantic status.`],[`title`,`ReactNode`,`-`,`Result title.`],[`description`,`ReactNode`,`-`,`Result detail text.`],[`icon`,`ReactNode`,`-`,`Optional custom icon.`],[`actions`,`ReactNode`,`-`,`Primary action area.`],[`extra`,`ReactNode`,`-`,`Secondary/auxiliary action area.`],[`compact`,`boolean`,`false`,`Compact status surface.`]],features:[`Outcome states`,`Action block`,`Error/result screens`,`No-page-needed fallback`]},{slug:`scroll-box`,title:`Scroll Box`,description:`Scoped scrolling surface for dense lists, side panels, and bounded data regions.`,icon:r.PanelTopIcon,category:`Data Display`,status:`Stable`,installCommand:d,propsRows:[[`maxHeight`,`string | number`,`-`,`Maximum rendered height before scroll starts.`],[`axis`,`'y' | 'x' | 'both'`,`'y'`,`Allowed scroll direction.`],[`children`,`ReactNode`,`-`,`Scrollable content.`],[`className`,`string`,`-`,`Container classes.`]],features:[`Bounded scroll`,`Axis control`,`Dense lists`,`Panel content`]},{slug:`toast`,title:`Toast`,description:`Global transient messaging system with provider, placement and dismiss behavior.`,icon:r.ShieldCheckIcon,category:`Components`,status:`Stable`,installCommand:d,propsRows:[[`children`,`ReactNode`,`-`,`Application children wrapped by provider.`],[`position`,`'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top-center' | 'bottom-center'`,`'top-right'`,`Toast container placement.`],[`defaultDuration`,`number`,`3000`,`Default auto-dismiss duration in ms.`],[`maxToasts`,`number`,`5`,`Maximum number of visible toasts.`],[`pauseOnHover`,`boolean`,`true`,`Pause dismiss timer when hovered.`],[`addToast`,`(input) => string`,`-`,`API to push a toast from context.`],[`success/info/warning/error`,`(input) => string`,`-`,`Tone helpers for common outcomes.`]],features:[`Provider setup`,`Controlled duration`,`Action buttons`,`Placement options`]},{slug:`table`,title:`Table primitive`,description:`Low-level semantic table pieces for internal composition, not the primary public data-grid showcase.`,icon:r.Table2Icon,category:`Data Display`,status:`Preview`,installCommand:d,propsRows:[[`className`,`string`,`-`,`Additional table styling.`],[`children`,`ReactNode`,`-`,`Header, body and row markup.`],[`caption`,`ReactNode`,`-`,`Optional table caption.`]],features:[`Semantic rows`,`Header/body slots`,`Internal composition`,`Primitive markup`]},{slug:`kbd`,title:`Kbd`,description:`Keyboard hint token for shortcuts, command palettes, and focused action labels.`,icon:r.TerminalSquareIcon,category:`Components`,status:`Stable`,installCommand:d,propsRows:[[`size`,`'sm' | 'default' | 'lg'`,`'default'`,`Visual size for the key token.`],[`variant`,`'default' | 'outline' | 'ghost'`,`'default'`,`Surface treatment.`],[`children`,`ReactNode`,`-`,`Rendered key label.`],[`className`,`string`,`-`,`Extra classes for the token.`]],features:[`Shortcut tokens`,`Size variants`,`Outline or ghost style`,`Command labels`]},{slug:`data-table`,title:`Data Table`,description:`Primary reusable admin data grid with sorting, row selection, bulk actions, saved views, mobile cards, and server-aware pagination.`,icon:r.Table2Icon,category:`Data Display`,status:`Preview`,installCommand:d,propsRows:[[`columns`,`ColumnDef<RowData>[]`,`-`,`Table column definitions.`],[`data`,`Array<RowData>`,`-`,`Row data at current page in server mode.`],[`getRowId`,`(row) => string`,`-`,`Stable row identifier function.`],[`sorting`,`SortingState`,`[]`,`Controlled sort state.`],[`rowSelection`,`RowSelectionState`,`{}`,`Controlled row selection state.`],[`enableRowSelection`,`boolean`,`false`,`Turns row selection on.`],[`pagination`,`PaginationStateProps`,`-`,`Page controls, counts and page size.`],[`toolbarProps`,`ToolbarProps`,`-`,`Header actions, search and contextual controls.`],[`onRowClick`,`(row) => void`,`-`,`Row click callback.`],[`isLoading`,`boolean`,`false`,`Loading indicator state.`],[`isError`,`boolean`,`false`,`Error state flag for fallback.`],[`loadingState`,`LoadingState`,`-`,"Loading UI when `isLoading` is true."],[`emptyState`,`Omit<DataStateProps, "status">`,`-`,`State shown when no rows are present.`],[`errorState`,`ErrorState`,`-`,"State shown when `isError` is true."]],features:[`Column-based API`,`Sorting and pagination`,`Row selection and bulk actions`,`Toolbar, visibility and saved views`,`Mobile cards and server mode`,`Empty/loading/error states`]}],he={button:{groupSlugs:[`actions`,`navigation`,`layout`],componentSlugs:[`badge`,`card`,`tabs`]},input:{groupSlugs:[`inputs`,`form`,`filters`],componentSlugs:[`textarea`,`select`,`switch`]},textarea:{groupSlugs:[`inputs`,`form`,`layout`],componentSlugs:[`input`,`card`,`badge`]},select:{groupSlugs:[`inputs`,`filters`,`overlay`],componentSlugs:[`simple-select`,`async-select`,`form-select`]},"simple-select":{groupSlugs:[`inputs`,`form`,`filters`],componentSlugs:[`select`,`async-select`,`form-select`]},combobox:{groupSlugs:[`inputs`,`form`,`filters`],componentSlugs:[`select`,`async-select`,`form-select`]},"radio-group":{groupSlugs:[`inputs`,`form`],componentSlugs:[`checkbox`,`switch`,`select`]},"async-select":{groupSlugs:[`inputs`,`form`,`filters`],componentSlugs:[`select`,`combobox`,`form-select`]},"async-multi-select":{groupSlugs:[`inputs`,`form`],componentSlugs:[`select`,`async-select`,`form-select`]},"number-input":{groupSlugs:[`inputs`,`form`],componentSlugs:[`money-input`,`quantity-input`,`input`]},"date-picker":{groupSlugs:[`inputs`,`form`,`display`],componentSlugs:[`calendar`,`date-range-picker`]},"date-range-picker":{groupSlugs:[`inputs`,`form`,`filters`],componentSlugs:[`date-picker`,`calendar`,`data-table`]},"form-field-shell":{groupSlugs:[`form`],componentSlugs:[`form-input`,`form-select`,`form-textarea`,`form-switch`,`input`,`textarea`,`switch`]},"form-input":{groupSlugs:[`form`,`inputs`],componentSlugs:[`form-field-shell`,`input`,`search-input`,`number-input`,`phone-input`,`date-picker`]},"form-select":{groupSlugs:[`form`,`inputs`],componentSlugs:[`select`,`async-select`,`simple-select`,`form-field-shell`]},"form-async-select":{groupSlugs:[`form`,`inputs`],componentSlugs:[`form-select`,`async-select`,`select`,`form-field-shell`]},"form-textarea":{groupSlugs:[`form`,`inputs`],componentSlugs:[`form-input`,`textarea`,`form-field-shell`,`quantity-input`]},"form-switch":{groupSlugs:[`form`,`inputs`],componentSlugs:[`form-field-shell`,`switch`,`checkbox`,`form-input`]},"phone-input":{groupSlugs:[`inputs`,`form`],componentSlugs:[`input`,`textarea`,`simple-select`]},"masked-input":{groupSlugs:[`inputs`,`form`],componentSlugs:[`input`,`number-input`,`phone-input`]},"money-input":{groupSlugs:[`inputs`,`display`],componentSlugs:[`number-input`,`quantity-input`,`input`]},"quantity-input":{groupSlugs:[`inputs`,`form`],componentSlugs:[`number-input`,`money-input`,`input`]},checkbox:{groupSlugs:[`inputs`,`form`],componentSlugs:[`switch`,`button`,`card`]},switch:{groupSlugs:[`inputs`,`layout`],componentSlugs:[`checkbox`,`tabs`,`badge`]},badge:{groupSlugs:[`actions`,`display`],componentSlugs:[`button`,`card`,`tabs`]},card:{groupSlugs:[`layout`,`display`,`actions`],componentSlugs:[`tabs`,`badge`,`button`]},tabs:{groupSlugs:[`navigation`,`layout`],componentSlugs:[`dialog`,`card`,`button`]},collapse:{groupSlugs:[`layout`,`display`,`form`],componentSlugs:[`tabs`,`card`,`sidebar-nav`]},dialog:{groupSlugs:[`overlay`,`notifications`],componentSlugs:[`popover`,`confirm-dialog`,`sheet-shell`]},popover:{groupSlugs:[`overlay`,`navigation`],componentSlugs:[`dropdown-menu`,`dialog`,`confirm-dialog`]},"dropdown-menu":{groupSlugs:[`overlay`,`navigation`,`actions`],componentSlugs:[`popover`,`dialog`,`confirm-dialog`]},tooltip:{groupSlugs:[`overlay`,`actions`,`form`],componentSlugs:[`popover`,`button`,`input`]},"hover-card":{groupSlugs:[`overlay`,`display`],componentSlugs:[`tooltip`,`card`,`info-card`]},"right-click-menu":{groupSlugs:[`overlay`,`actions`,`navigation`],componentSlugs:[`dropdown-menu`,`popover`,`data-table`]},"confirm-dialog":{groupSlugs:[`overlay`,`notifications`],componentSlugs:[`dialog`,`modal-shell`,`sheet-shell`]},"modal-shell":{groupSlugs:[`overlay`,`layout`],componentSlugs:[`sheet-shell`,`dialog`,`confirm-dialog`]},"sheet-shell":{groupSlugs:[`overlay`,`layout`,`navigation`],componentSlugs:[`modal-shell`,`dialog`,`dropdown-menu`]},table:{groupSlugs:[`data-table`,`display`,`filters`],componentSlugs:[`card`,`tabs`,`badge`]},"data-table":{groupSlugs:[`data-table`,`layout`,`filters`],componentSlugs:[`table`,`card`,`tabs`]},sidebar:{groupSlugs:[`layout`,`navigation`],componentSlugs:[`sidebar-nav`,`breadcrumbs`,`app-shell`,`page-container`]},"app-shell":{groupSlugs:[`layout`],componentSlugs:[`sidebar`,`sidebar-nav`,`page-header`,`page-container`]},"sidebar-nav":{groupSlugs:[`layout`,`navigation`],componentSlugs:[`sidebar`,`breadcrumbs`,`app-shell`]},breadcrumbs:{groupSlugs:[`layout`,`navigation`],componentSlugs:[`page-header`,`sidebar`,`sidebar-nav`]},"page-header":{groupSlugs:[`layout`],componentSlugs:[`breadcrumbs`,`sidebar`,`metric-grid`,`info-card`]},"page-container":{groupSlugs:[`layout`],componentSlugs:[`page-header`,`app-shell`,`info-card`]},"metric-grid":{groupSlugs:[`display`],componentSlugs:[`info-card`,`activity-feed`,`data-state`]},"info-card":{groupSlugs:[`display`,`layout`],componentSlugs:[`metric-grid`,`activity-feed`,`result`,`card`]},"activity-feed":{groupSlugs:[`display`],componentSlugs:[`info-card`,`metric-grid`,`result`]},"data-state":{groupSlugs:[`display`],componentSlugs:[`loading-state`,`result`,`data-table`]},"loading-state":{groupSlugs:[`display`],componentSlugs:[`data-state`,`result`,`data-table`]},result:{groupSlugs:[`display`],componentSlugs:[`data-state`,`loading-state`,`page-header`]},"scroll-box":{groupSlugs:[`display`,`layout`],componentSlugs:[`table`,`data-table`,`page-container`]},toast:{groupSlugs:[`notifications`,`overlay`],componentSlugs:[`confirm-dialog`,`sheet-shell`,`modal-shell`]},kbd:{groupSlugs:[`command`,`actions`],componentSlugs:[`button`,`tooltip`,`input`]}},ge=new Set(`button.input.select.date-picker.checkbox.switch.badge.card.tabs.dialog.popover.dropdown-menu.sidebar.breadcrumbs.data-table.metric-grid.info-card.activity-feed.loading-state.result.toast.trend-card.notification-center.command-bar.progress.progress-circle`.split(`.`)),_e={textarea:`input`,"search-input":`input`,"password-input":`input`,"number-input":`input`,"phone-input":`input`,"masked-input":`input`,"money-input":`input`,"quantity-input":`input`,"tag-input":`input`,"otp-input":`input`,"form-input":`input`,"form-textarea":`input`,"simple-select":`select`,"async-select":`select`,"async-multi-select":`select`,combobox:`select`,"form-select":`select`,"form-async-select":`select`,calendar:`date-picker`,"date-range-picker":`date-picker`,"confirm-dialog":`dialog`,"modal-shell":`dialog`,"sheet-shell":`dialog`,"app-shell":`sidebar`,"app-header":`sidebar`,"sidebar-nav":`sidebar`,"page-container":`sidebar`,section:`sidebar`,toolbar:`sidebar`,"split-layout":`sidebar`,"sticky-footer-bar":`sidebar`,"page-header":`breadcrumbs`,"stat-card":`metric-grid`,"data-table-column-visibility-menu":`data-table`,"data-table-sortable-header":`data-table`,"data-table-bulk-actions":`data-table`,"data-table-view-presets":`data-table`,table:`data-table`,"progress-circle":`progress`},M={input:[{key:`core`,title:`Core input surfaces`,description:`Start with the default text field and move outward only when the workflow demands specialization.`,slugs:[`input`,`textarea`]},{key:`related`,title:`Related input patterns`,description:`Specialized input types for search, masking, numeric entry, and compact structured values.`,slugs:[`search-input`,`password-input`,`number-input`,`phone-input`,`masked-input`,`money-input`,`quantity-input`,`tag-input`,`otp-input`]},{key:`integrations`,title:`Form integrations`,description:`Use these wrappers when the field needs to plug directly into shared form shells or React Hook Form.`,slugs:[`form-input`,`form-textarea`]}],select:[{key:`core`,title:`Core select surfaces`,description:`Use the base selection control first, then expand only when the interaction model truly changes.`,slugs:[`select`]},{key:`related`,title:`Related select members`,description:`These members add real behavior such as remote loading or keyboard-first local filtering.`,slugs:[`simple-select`,`async-select`,`combobox`]},{key:`integrations`,title:`Form integrations`,description:`Use wrapped selects when you need consistent form-level validation, labels, and shell behavior.`,slugs:[`form-select`]},{key:`compatibility`,title:`Compatibility aliases`,description:`Keep older helper routes available for migration, but do not lead with them in new work.`,slugs:[`async-multi-select`,`form-async-select`]}],"date-picker":[{key:`core`,title:`Core date surfaces`,description:`Choose the popover picker or range picker when visual selection matters more than raw text entry.`,slugs:[`date-picker`,`date-range-picker`,`calendar`]},{key:`integrations`,title:`Form integrations`,description:`Use wrapped date fields when validation, labels, and form shell behavior should stay standardized.`,slugs:[`form-input`]}],dialog:[{key:`core`,title:`Core overlay surfaces`,description:`Use the lightest overlay that still matches the interaction. Do not default every action to a full modal.`,slugs:[`dialog`,`popover`,`dropdown-menu`]},{key:`advanced`,title:`Confirmation and shell patterns`,description:`These composed overlays handle destructive confirmation, reusable modal shells, and side-drawer editing flows.`,slugs:[`confirm-dialog`,`modal-shell`,`sheet-shell`]}],sidebar:[{key:`core`,title:`Sidebar surfaces`,description:`These pieces define the reusable sidebar surface first, then layer shell framing around it only when the route really needs it.`,slugs:[`sidebar`,`sidebar-nav`,`breadcrumbs`]},{key:`related`,title:`Route-level patterns`,description:`Use these patterns only after the sidebar and navigation contract are already clear.`,slugs:[`app-shell`,`app-header`,`page-container`,`section`,`toolbar`,`split-layout`,`sticky-footer-bar`]}],"page-header":[{key:`core`,title:`Page context surfaces`,description:`Use these pieces to establish page identity, breadcrumbs, meta, and supporting stats.`,slugs:[`page-header`,`breadcrumbs`]},{key:`related`,title:`Supporting page patterns`,description:`These supporting pieces sit around the page header when you need compact summary or stat context.`,slugs:[`stat-card`]}],"data-table":[{key:`core`,title:`Primary data table surface`,description:`Start with the full DataTable route first. It demonstrates the reusable grid the way product teams actually consume it.`,slugs:[`data-table`]},{key:`related`,title:`Supporting primitive`,description:`Drop down to the semantic table primitive only when you do not need the full DataTable workflow.`,slugs:[`table`]}],toast:[{key:`core`,title:`Global feedback surface`,description:`Use toast messaging for transient global feedback, not for critical form validation or persistent page states.`,slugs:[`toast`]}]},N=t.default,P=N?.groups??{},F=new Set((N?.recommended??[]).map(e=>e)),I=N?.migrationAliases??{},L=new Set(Object.values(I)),ve=new Set([`kits`]),R=new Set([`all`,`dashboard`,`calendar-kit`,`wizard-kit`]),ye=new Set([`hooks`]),be={ui:`Components`,actions:`Components`,layout:`Components`,feedback:`Data Display`,display:`Data Display`,overlay:`Overlay`,inputs:`Forms`,form:`Forms`,dataTable:`Data Display`,data_table:`Data Display`,navigation:`Data Display`,filters:`Data Display`,calendar:`Data Display`,upload:`Data Display`,wizard:`Data Display`,notifications:`Data Display`,command:`Data Display`,patterns:`Patterns`},xe={ui:r.ComponentIcon,actions:r.SparklesIcon,feedback:r.WalletIcon,display:r.DatabaseIcon,overlay:r.PanelTopIcon,inputs:r.FormInputIcon,form:r.FormInputIcon,dataTable:r.Table2Icon,data_table:r.Table2Icon,layout:r.LayoutDashboardIcon,navigation:r.BoxIcon,filters:r.SlidersHorizontalIcon,calendar:r.CalendarClockIcon,upload:r.FileTextIcon,wizard:r.WorkflowIcon,notifications:r.BellIcon,command:r.TerminalSquareIcon,patterns:r.BlocksIcon,hooks:r.SmartphoneIcon};function z(e){return e.split(`-`).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `)}var Se=new Set(j.map(e=>e.slug)),B=new Map;for(let[e,t]of Object.entries(P))if(!(ve.has(e)||ye.has(e)))for(let n of t){let t=I[n],i=t??n;if(!n||R.has(n)||R.has(i)||L.has(i)||L.has(n)||Se.has(i)||B.has(i))continue;let a=be[e]??`Data Display`,o=xe[e]??r.SparklesIcon;B.set(i,{slug:i,title:z(t||i),description:`${z(i)} surfaced from package registry group "${e}".`,icon:o,category:a,status:F.has(i)?`Stable`:`Preview`,installCommand:d,propsRows:[[`className`,`string`,`-`,`Additional classes for wrapper element.`]],features:[e]})}var Ce=[...B.values()],V=[...j,...Ce],H=[],U=new Map(H.map(e=>[e.slug,e])),W=new Set([`app-sidebar`,`app-shell`,`app-header`,`page-header`,`page-container`,`stat-card`,`resource-page`,`resource-detail-page`,`data-table-column-visibility-menu`,`data-table-sortable-header`,`data-table-bulk-actions`,`data-table-view-presets`]),we=new Set([...W,...D.keys()]);function G(e){if(!e)return;let t=O(e),n=q(t);return t===n?U.get(t)??V.find(e=>e.slug===t):U.get(n)??V.find(e=>e.slug===n)}function K(e){return U.has(O(e))||ge.has(O(e))}function q(e){let t=O(e);return K(t)?t:_e[t]??t}function J(e){return G(q(e))?.title??e}function Y(){let t=V.filter(e=>q(e.slug)===e.slug),n=new Map;for(let e of t)n.set(e.slug,e);for(let e of H)n.set(e.slug,e);return Array.from(n.values()).filter(e=>!W.has(e.slug)).filter(t=>e.isPublicComponentSurfaceSlug(t.slug)).sort((t,n)=>{let r=e.comparePublicComponentSurfaceOrder(t.slug,n.slug);return r===0?t.title.localeCompare(n.title):r})}function Te(){let e=new Map;for(let t of V)e.set(t.slug,t);for(let t of H)e.set(t.slug,t);return Array.from(e.values()).filter(e=>!we.has(e.slug)).sort((e,t)=>e.title.localeCompare(t.title))}function X(e){let t=e?q(e):void 0;return Y().map(e=>({slug:e.slug,title:e.title,href:v(e.slug),status:e.status,group:k(e.slug),active:t?q(e.slug)===t:!1})).sort((e,t)=>e.title.localeCompare(t.title))}function Ee(e){let t=new Map;for(let n of X(e)){let e=n.title[0]?.toUpperCase()??`#`,r=`${e} - ${n.group}`;t.has(r)||t.set(r,{key:r,label:`${e} • ${n.group}`,items:[]}),t.get(r)?.items.push(n)}return Array.from(t.values())}function De(e){return M[q(e)]??[]}function Z(e){return(e?[q(e)]:Object.keys(M)).flatMap(e=>{let t=G(e);return(M[e]??[]).flatMap(n=>{let r=[];for(let i of n.slugs){let a=V.find(e=>e.slug===i);a&&r.push({component:a.title,slug:a.slug,title:a.title,surfaceSlug:e,surfaceTitle:t?.title??e,sectionId:n.key,sectionLabel:n.title,sectionKey:n.key,summary:a.description,useWhen:n.description,maturity:n.key===`core`?`core`:n.key===`compatibility`?`compatibility`:`helper`,status:a.status,href:v(a.slug)})}return r})})}function Oe(e){return Z().find(t=>t.component===e)}function ke(e){let t=new Set(e);return Z().filter(e=>t.has(e.component))}var Q=[{slug:`actions`,title:`Actions`,description:`Context actions, copy controls and quick grids for dense product surfaces.`,icon:r.MousePointerClickIcon,category:`Actions`,exports:[`ActionMenu`,`CopyButton`,`QuickActionGrid`],href:b(`actions`),status:`Stable`,features:[`Quick actions`,`Copy affordances`,`Dense command blocks`]},{slug:`layout`,title:`Application layout`,description:`Route-level shells, sidebars and headers that support real components instead of replacing them.`,icon:r.LayoutDashboardIcon,category:`Layout`,exports:[`Sidebar`,`SidebarNav`,`Breadcrumbs`,`PageContainer`,`Section`,`SectionHeader`,`StickyFooterBar`],href:b(`layout`),status:`Stable`,features:[`Sidebar navigation`,`Page framing`,`Section structure`,`Sticky actions`]},{slug:`filters`,title:`Filters`,description:`Filter bars and chip patterns for narrowing data without leaving the current view.`,icon:r.SlidersHorizontalIcon,category:`Data`,exports:[`FilterBar`,`SavedFilterSelect`],href:b(`filters`),status:`Stable`,features:[`Filter bars`,`Chips`,`Search + filter pairing`]},{slug:`overlay`,title:`Overlay patterns`,description:`Confirm flows, modal shells, sheet layouts and dialog actions.`,icon:r.AlertCircleIcon,category:`Overlay`,exports:[`DialogActions`,`ModalShell`,`ConfirmDialog`,`SheetShell`,`Tooltip`,`HoverCard`,`RightClickMenu`],href:b(`overlay`),status:`Stable`,features:[`Confirm flows`,`Sheet layouts`,`Modal actions`,`Lightweight helper hints`]},{slug:`navigation`,title:`Navigation`,description:`Pagination and tabbed navigation patterns for sectioned or paginated interfaces.`,icon:r.ChevronRightIcon,category:`Layout`,exports:[`Pagination`,`PageTabs`,`StepperTabs`],href:b(`navigation`),status:`Stable`,features:[`Pagination`,`Page tabs`,`Stepper tabs`]},{slug:`inputs`,title:`Inputs`,description:`Input-first family with typed presets and select/date members introduced only when behavior changes.`,icon:r.FormInputIcon,category:`Forms`,exports:[`Input`,`Textarea`,`Select`,`DatePicker`,`NumberInput`,`MoneyInput`,`PhoneInput`,`TagInput`],href:b(`inputs`),status:`Stable`,features:[`Text entry`,`Select flows`,`Date controls`,`Money input`,`Tag input`]},{slug:`form`,title:`Form`,description:`Form shell and wrapper layer for labels, validation, and repeatable field composition.`,icon:r.FileTextIcon,category:`Forms`,exports:[`FormFieldShell`,`FormInput`,`FormSelect`,`FormTextarea`,`FormSwitch`,`FormDatePicker`],href:b(`form`),status:`Stable`,features:[`Field shell`,`Wrapped controls`,`Date helpers`,`Consistent validation`]},{slug:`display`,title:`Display`,description:`Metrics, activity, avatars, timelines and descriptive content surfaces.`,icon:r.DatabaseIcon,category:`Data`,exports:[`DescriptionList`,`Progress`,`Result`,`Timeline`,`MetricGrid`,`InfoCard`,`ActivityFeed`,`StatusLegend`,`Avatar`,`DataState`,`ScrollBox`],href:b(`display`),status:`Stable`,features:[`Metric grids`,`Timelines`,`Activity feeds`,`Status legends`]},{slug:`data-table`,title:`DataTable`,description:`Primary reusable data-grid system. Helper pieces stay secondary to the main table route.`,icon:r.Table2Icon,category:`Data`,exports:[`DataTable`],href:b(`data-table`),status:`Stable`,features:[`Toolbar`,`Selection`,`Row actions`,`Saved views`,`Pagination`]},{slug:`notifications`,title:`Notifications`,description:`Toast-based feedback surfaces for success, warnings and async completion states.`,icon:r.BadgeIcon,category:`Overlay`,exports:[`Toast`],href:b(`notifications`),status:`Preview`,features:[`Toasts`,`Transient feedback`,`Status messaging`]},{slug:`command`,title:`Command`,description:`Command palette patterns for keyboard-driven discovery and navigation.`,icon:r.TerminalSquareIcon,category:`Workflow`,exports:[`CommandPalette`],href:b(`command`),status:`Preview`,features:[`Command palette`,`Keyboard discovery`,`Quick navigation`]},{slug:`calendar`,title:`Calendar`,description:`Calendar, date picker and range picker flows for scheduling and reporting.`,icon:r.Grid2x2Icon,category:`Workflow`,exports:[`DateUtils`,`Calendar`,`DatePicker`,`DateRangePicker`],href:b(`calendar`),status:`Stable`,features:[`Date picker`,`Range picker`,`Scheduling flows`]},{slug:`upload`,title:`Upload`,description:`File and image upload surfaces with preview-friendly interaction patterns.`,icon:r.BlocksIcon,category:`Workflow`,exports:[`FileUpload`,`ImageUpload`],href:b(`upload`),status:`Preview`,features:[`File upload`,`Image upload`,`Attachment flows`]},{slug:`wizard`,title:`Wizard`,description:`Stepper and multi-step workflow patterns for onboarding and guided flows.`,icon:r.WorkflowIcon,category:`Workflow`,exports:[`Stepper`,`Wizard`],href:b(`wizard`),status:`Stable`,features:[`Step flow`,`Guided forms`,`Progress state`]}],Ae=[{label:`Docs`,href:g},{label:`Installation`,href:`/docs/installation`},{label:`Components`,href:`/components`},{label:`Search`,href:`/search`},{label:`Changelog`,href:`/changelog`}],je=[{title:`Getting Started`,items:[{label:`Overview`,href:g,icon:r.BookOpenIcon},{label:`Installation`,href:`/docs/installation`,icon:r.ChevronRightIcon},{label:`Components catalog`,href:`/components`,icon:r.ComponentIcon},{label:`Changelog`,href:`/changelog`,icon:r.FileTextIcon}]},...T.map(e=>({title:e,items:A(e,v)})).filter(e=>e.items.length>0)],Me=[{title:`Getting Started`,items:[{label:`Introduction`,href:`/playground/button`,icon:r.BookOpenIcon},{label:`Installation`,href:y(`button`),icon:r.ChevronRightIcon},{label:`Theming`,href:y(`button`),icon:r.SparklesIcon},{label:`Tokens`,href:y(`badge`),icon:r.Layers3Icon},{label:`Icon Library`,href:y(`popover`),icon:r.Grid2x2Icon}]},...T.map(e=>({title:e,items:A(e,y)})).filter(e=>e.items.length>0)],Ne=[`All blocks`,`Dashboard`,`Auth`,`Table`,`Settings`,`Pricing`,`Product`,`Marketing`],Pe=[`All layouts`,`Application`,`Marketing`],$=[`All themes`,`Light`,`Soft`],Fe=[`Popular`,`A-Z`],Ie=[{title:`Application blocks`,text:`Dashboard, table and settings blocks should show route structure, visible actions and realistic operational density.`,items:[`Sidebar shell`,`Toolbar actions`,`Table states`,`Settings surfaces`]},{title:`Entry and conversion blocks`,text:`Auth, pricing, product and marketing blocks should explain trust, conversion hierarchy and where the section fits in a larger page flow.`,items:[`Form blocks`,`CTA hierarchy`,`Proof points`,`Responsive sections`]},{title:`Reusable block library`,text:`Every block card should show its category, where it fits, and which route opens the richer preview or template detail view.`,items:[`Category label`,`Usage notes`,`Preview action`,`Install path`]}],Le={slug:`dashboard-starter`,title:`Modern Dashboard`,description:`Clean dashboard with analytics, charts, and activity tables.`,bestFor:`Dashboard entry sections, KPI headers, recent activity, and operational overview surfaces.`,category:`Dashboard`,tags:[`Dashboard`,`Analytics`,`Charts`,`Overview`],uses:[`AppShell`,`PageHeader`,`MetricGrid`,`DataTable`],tone:`from-emerald-50 via-white to-sky-50`,href:w(`dashboard-starter`),previewHref:`/preview/blocks/dashboard-01`,previewTone:`dashboard`,layout:`Application`,theme:`Soft`,relatedTemplateSlug:`dashboard-starter`,installSteps:["Run `npx tembro init` and make sure the dashboard route already has theme tokens loaded.",`Copy the shell section into an authenticated page and connect it to live KPI and activity data.`,`Keep the block focused on one overview slice instead of turning it into a full page shell.`],dependencyGroups:[`Layout shell`,`Metric cards`,`Table primitives`,`Action buttons`],copyTargets:[`components/blocks/dashboard/overview-shell.tsx`,`components/blocks/dashboard/metric-row.tsx`,`components/blocks/dashboard/activity-table.tsx`],notes:[`Use this block when one dashboard section is enough; move to the template when navigation and multiple zones are required.`,`Primary actions should stay tied to one operational area, not a full application workflow.`]},Re=[{slug:`sidebar-layout`,title:`Sidebar Layout`,description:`Application shell with responsive sidebar.`,bestFor:`Route-level shells that need stable navigation, app header actions, and one main content zone.`,category:`Dashboard`,tags:[`Navigation`,`Shell`,`Analytics`],uses:[`AppShell`,`SidebarNav`,`PageHeader`,`Button`],tone:`from-[color:var(--aui-page-bg-alt)] to-[color:var(--aui-page-bg)]`,href:w(`sidebar-layout`),previewHref:`/preview/blocks/dashboard-01`,previewTone:`dashboard`,layout:`Application`,theme:`Light`,relatedTemplateSlug:`dashboard-starter`,installSteps:["Run `npx tembro init` and mount the shell inside an authenticated route group.",`Wire navigation items and header actions before copying child content zones into the shell.`,`Keep the shell generic enough to reuse across more than one application page.`],dependencyGroups:[`App shell`,`Sidebar navigation`,`Page header`,`Action controls`],copyTargets:[`components/blocks/layout/sidebar-layout.tsx`,`components/navigation/app-sidebar.tsx`],notes:[`Do not use this block for a whole admin app export; it is one shell slice, not the full template.`,`Navigation depth and section order should come from the app route model, not from hardcoded demo labels.`]},{slug:`crm-dashboard`,title:`CRM Dashboard`,description:`Sales pipeline and deals management.`,bestFor:`Pipeline snapshots, team handoff sections, and account-focused operational dashboards.`,category:`Product`,tags:[`CRM`,`Pipeline`,`Kanban`],uses:[`PageHeader`,`Badge`,`Tabs`,`ActivityFeed`],tone:`from-[color:color-mix(in_oklch,var(--aui-accent)_10%,var(--aui-page-bg-alt))] to-[color:var(--aui-page-bg)]`,href:w(`crm-dashboard`),previewTone:`crm`,layout:`Application`,theme:`Soft`,relatedTemplateSlug:`crm-dashboard`,installSteps:["Run `npx tembro init` and reuse the CRM block inside an existing workspace route.",`Connect stage counts, owners, and next actions to live CRM entities before release.`,`Escalate to the CRM template only when the page needs reports, settings, and multiple sections together.`],dependencyGroups:[`Stage summaries`,`Owner badges`,`Activity feed`,`Tabs and headers`],copyTargets:[`components/blocks/crm/pipeline-summary.tsx`,`components/blocks/crm/account-activity.tsx`],notes:[`CRM sections lose clarity when actions are hidden; keep stage, owner, and next-step signals visible.`,`This block should stay narrower than the full CRM workspace template.`]},{slug:`users-table`,title:`Users Table`,description:`Advanced table with filters and actions.`,bestFor:`Management tables with filters, row actions, bulk actions, and compact result scanning.`,category:`Table`,tags:[`Data`,`Filters`,`Bulk actions`],uses:[`DataTable`,`DataTableToolbar`,`Button`,`Badge`],tone:`from-[color:var(--aui-page-bg-alt)] to-[color:var(--aui-page-bg)]`,href:w(`users-table`),previewHref:`/preview/blocks/table-01`,previewTone:`table`,layout:`Application`,theme:`Light`,relatedTemplateSlug:`dashboard-starter`,installSteps:["Run `npx tembro init` and move the table block into the target resource page.",`Map columns, row identifiers, and action callbacks to your real API contract.`,`Keep pagination, filters, and bulk actions aligned with backend capabilities.`],dependencyGroups:[`Data table`,`Toolbar filters`,`Bulk actions`,`Status badges`],copyTargets:[`components/blocks/tables/users-table.tsx`,`components/blocks/tables/table-toolbar.tsx`],notes:[`Prefer this block for one resource section; use a template when the whole page needs navigation and surrounding analytics.`,`Do not treat demo filters as final product logic; they are only structural placeholders.`]},{slug:`auth-sign-in`,title:`Auth Sign In`,description:`Minimal sign in form with social login.`,bestFor:`Entry flows that need one focused sign-in surface, trust copy, and a compact auth action stack.`,category:`Auth`,tags:[`Sign in`,`Form`,`Trust`],uses:[`Card`,`Input`,`Button`,`Badge`],tone:`from-[color:color-mix(in_oklch,var(--aui-warning)_12%,var(--aui-page-bg-alt))] to-[color:var(--aui-page-bg)]`,href:w(`auth-sign-in`),previewHref:`/preview/blocks/auth-01`,previewTone:`auth`,layout:`Marketing`,theme:`Light`,relatedTemplateSlug:`dashboard-starter`,installSteps:["Run `npx tembro init` and mount the auth block on a public or gated entry route.",`Replace demo trust copy, OAuth providers, and field labels with your real auth contract.`,`Use the wider auth or app template only when onboarding needs multiple steps or side content.`],dependencyGroups:[`Form fields`,`Card shell`,`Primary CTA`,`Trust badges`],copyTargets:[`components/blocks/auth/sign-in-card.tsx`,`components/blocks/auth/social-auth-row.tsx`],notes:[`Keep this block conversion-focused; avoid adding unrelated settings or dashboard content to the same surface.`,`Auth blocks should show trust and hierarchy clearly on mobile before they are shipped.`]},{slug:`settings-form`,title:`Settings Form`,description:`Profile and preferences settings form.`,bestFor:`One bounded settings section with fields, toggles, save actions, and light explanatory copy.`,category:`Settings`,tags:[`Profile`,`Preferences`,`Form`],uses:[`FormFieldShell`,`Input`,`Switch`,`Button`],tone:`from-[color:color-mix(in_oklch,var(--aui-surface-muted)_70%,var(--aui-page-bg-alt))] to-[color:var(--aui-page-bg)]`,href:w(`settings-form`),previewTone:`settings`,layout:`Application`,theme:`Light`,relatedTemplateSlug:`dashboard-starter`,installSteps:["Run `npx tembro init` and place the settings block inside an existing account or workspace page.",`Wire field state, validation, and save feedback to your app settings contract.`,`Only move to a larger settings template when multiple settings areas need shared navigation.`],dependencyGroups:[`Form wrappers`,`Inputs and switches`,`Save actions`,`Inline helper text`],copyTargets:[`components/blocks/settings/profile-form.tsx`,`components/blocks/settings/preferences-section.tsx`],notes:[`This block is for one settings slice, not an entire account management surface.`,`Keep destructive account actions separate from routine preference editing.`]},{slug:`invoices-page`,title:`Invoices Page`,description:`Invoices list with status and actions.`,bestFor:`Billing or finance tables that need status columns, invoice actions, and readable operational totals.`,category:`Table`,tags:[`Finance`,`Invoices`,`Status`],uses:[`DataTable`,`Badge`,`Button`,`PageHeader`],tone:`from-[color:color-mix(in_oklch,var(--aui-accent)_12%,var(--aui-page-bg-alt))] to-[color:var(--aui-page-bg)]`,href:w(`invoices-page`),previewHref:`/preview/blocks/table-01`,previewTone:`table`,layout:`Application`,theme:`Soft`,relatedTemplateSlug:`dashboard-starter`,installSteps:["Run `npx tembro init` and copy the invoice block into the billing route.",`Connect payment status, row actions, and export flows to real finance data.`,`Keep summaries close to the table instead of turning the block into a full finance dashboard.`],dependencyGroups:[`Table rows`,`Invoice status badges`,`Header actions`,`Finance filters`],copyTargets:[`components/blocks/finance/invoices-table.tsx`,`components/blocks/finance/invoice-actions.tsx`],notes:[`Finance blocks need explicit status language; avoid vague marketing labels in invoice rows.`,`When the page needs broader reporting and settings, step up to a template-level surface.`]}],ze=d,Be=[[`variant`,`'default' | 'secondary' | ...`,`'default'`,`The visual style of the button.`],[`size`,`'xs' | 'sm' | 'md' | 'lg' | 'xl'`,`'md'`,`The size of the button.`],[`asChild`,`boolean`,`false`,`Render as a child element using Slot.`],[`disabled`,`boolean`,`false`,`Disables the button.`],[`className`,`string`,`-`,`Additional CSS classes.`],[`onClick`,`(e: MouseEvent) => void`,`-`,`Click event handler.`]],Ve=[`Installation`,`Variations`,`Sizes`,`States`,`Icon buttons`,`Block button`,`Examples`,`API Reference`,`Accessibility`],He=[{title:`Action buttons`,cta:`Save changes`},{title:`Icon with text`,cta:`Send message`},{title:`Loading state`,cta:`Processing...`},{title:`Destructive action`,cta:`Delete item`}],Ue=[`Tab to focus`,`Visible focus ring`,`Enter / Space to activate`],We=[`Role: button`,`Name is programmatically determinable`,`Minimum touch target (44x44px)`,`Sufficient color contrast`],Ge=[{title:`Home`,description:`Open the landing page with the product overview.`,href:`/`,group:`Docs`,shortcut:`H`,keywords:[`home`,`landing`,`overview`,`introduction`]},{title:`Blocks`,description:`Browse reusable blocks and layout sections.`,href:`/blocks`,group:`Blocks`,shortcut:`B`,featured:!0,keywords:[`blocks`,`catalog`,`templates`,`dashboards`,`marketing`,`layout patterns`]},{title:`Components`,description:`Browse component docs and related modules.`,href:`/components`,group:`Docs`,shortcut:`C`,keywords:[`components`,`catalog`,`docs`,`family`,`category`]},{title:`Developer inventory`,description:`Open the export inventory with primary components, groups, and member routes.`,href:`/components/registry`,group:`Docs`,shortcut:`R`,keywords:[`developer inventory`,`registry`,`inventory`,`exports`,`component list`,`source of truth`]},{title:`Changelog`,description:`Read release notes and track API and docs changes.`,href:`/changelog`,group:`Docs`,shortcut:`L`,keywords:[`changelog`,`release`,`history`,`changes`,`version`]},{title:`Command page`,description:`Open the full route index and quick command page.`,href:`/command`,group:`Docs`,shortcut:`K`,keywords:[`command`,`search`,`palette`,`route index`,`jump`]},{title:`Installation`,description:`Initialize the project, write theme tokens, and copy working CLI commands.`,href:`/docs/installation`,group:`Docs`,shortcut:`I`,featured:!0,keywords:[`installation`,`setup`,`npm`,`theme`,`tembro`,`cli`]},{title:`Next.js installation`,description:`Initialize tembro in a Next.js app and write local component files.`,href:`/docs/installation/next`,group:`Docs`,shortcut:`I`,keywords:[`installation`,`next`,`nextjs`,`setup`,`init`,`tailwind`,`cli`]},{title:`Vite installation`,description:`Initialize tembro in a Vite app and write local component files.`,href:`/docs/installation/vite`,group:`Docs`,shortcut:`I`,keywords:[`installation`,`vite`,`setup`,`init`,`tailwind`,`cli`]},...Y().flatMap(e=>[{title:e.title,description:e.description,href:`/components/${e.slug}`,group:`Components`,shortcut:`C`,featured:e.slug===`button`||e.slug===`input`||e.slug===`dialog`||e.slug===`select`||e.slug===`card`,keywords:[e.slug,e.title,e.category,k(e.slug),J(e.slug),...e.features,`component`,`detail`,`usage`,`installation`]}]),...Z().map(e=>({title:`${e.title} in ${e.surfaceTitle}`,description:`${e.summary} Documented inside the ${e.surfaceTitle} surface under ${e.sectionLabel.toLowerCase()}.`,href:e.href,group:`Components`,shortcut:`M`,keywords:[e.title,e.slug,e.component,e.surfaceTitle,e.surfaceSlug,e.sectionLabel,e.maturity,`member`,`surface`,`variant`,`wrapper`]})),...Q.map(e=>({title:`${e.title} group`,description:`${e.description} Open the grouped docs surface for related exports and usage boundaries.`,href:e.href,group:`Components`,shortcut:`F`,featured:e.slug===`data-table`||e.slug===`form`||e.slug===`layout`,keywords:[e.slug,e.title,e.category,...e.features,...e.exports,`component group`,`catalog`,`system`]})),...Q.flatMap(e=>e.exports.map(t=>({title:`${t} API`,description:`${e.title} export detail with import path, related docs and usage context.`,href:S(e.slug,t),group:`Components`,shortcut:`E`,keywords:[t,e.title,e.slug,...e.features,`export`,`api`,`component`]})))];exports.CLI_ADD_COMMAND=u,exports.CLI_INIT_NEXT_COMMAND=l,exports.CLI_INIT_VITE_COMMAND=te,exports.CLI_INSTALL_COMMAND=ne,exports.CLI_PACKAGE_NAME=s,exports.CLI_THEME_COMMAND=re,exports.DOCS_APP_NAME=ee,exports.DOCS_RELEASES_URL=ae,exports.DOCS_REPO_URL=m,exports.DOCS_ROOT_PATH=g,exports.PACKAGE_GITHUB_RELEASES_URL=p,exports.PACKAGE_GITHUB_URL=f,exports.PACKAGE_IMPORT=c,exports.PACKAGE_INSTALL_COMMAND=d,exports.PACKAGE_NAME=o,exports.PACKAGE_NPM_URL=ie,exports.PACKAGE_RELEASES_URL=h,exports.PACKAGE_RELEASE_DATE=se,exports.PACKAGE_VERSION=oe,exports.accessibilityChecks=We,exports.blockCards=Re,exports.blockCoverageSections=Ie,exports.blockLayoutFilters=Pe,exports.blockPath=w,exports.blockSortOptions=Fe,exports.blockTabs=Ne,exports.blockThemeFilters=$,exports.componentCatalog=V,exports.componentDocsPath=v,exports.componentExportPath=S,exports.componentExportSlug=x,exports.componentGroupMeta=E,exports.componentGroupOrder=T,exports.componentModuleCatalog=Q,exports.componentModulePath=b,exports.componentPlaygroundPath=y,exports.componentRelations=he,exports.docsSidebar=je,exports.exampleCards=He,exports.featuredBlock=Le,exports.getComponentDetailSidebarItems=X,exports.getComponentDetailSidebarSections=Ee,exports.getComponentGroup=k,exports.getComponentGroupDetails=me,exports.getComponentSurfaceCatalogItem=G,exports.getComponentSurfaceSections=De,exports.getDocumentedMemberByComponent=Oe,exports.getDocumentedMembersByComponents=ke,exports.getPrimaryComponentCatalog=Y,exports.getPrimaryComponentMemberInventory=Z,exports.getPrimaryComponentSurfaceSlug=q,exports.getPrimaryComponentSurfaceTitle=J,exports.getVisibleComponentCatalog=Te,exports.globalSearchItems=Ge,exports.inspectorChecks=Ue,exports.installCommand=ze,exports.isPrimaryComponentSurface=K,exports.playgroundSidebar=Me,exports.primaryNav=Ae,exports.propRows=Be,exports.releaseHistory=_,exports.templatePath=C,exports.tocItems=Ve;