tembro 1.0.2 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (370) hide show
  1. package/README.md +2 -2
  2. package/dist/components/calendar/calendar.cjs +1 -1
  3. package/dist/components/calendar/calendar.js +3 -3
  4. package/dist/components/calendar/date-picker.cjs +1 -1
  5. package/dist/components/calendar/date-picker.js +2 -2
  6. package/dist/components/calendar/date-range-picker.cjs +1 -1
  7. package/dist/components/calendar/date-range-picker.js +2 -4
  8. package/dist/components/data-table/data-table-toolbar.cjs +1 -1
  9. package/dist/components/data-table/data-table-toolbar.js +2 -2
  10. package/dist/components/data-table/data-table.cjs +1 -1
  11. package/dist/components/data-table/data-table.js +3 -3
  12. package/dist/components/display/smart-card.d.ts +8 -8
  13. package/dist/components/inputs/combobox.cjs +1 -1
  14. package/dist/components/inputs/combobox.d.ts +5 -1
  15. package/dist/components/inputs/combobox.js +69 -59
  16. package/dist/components/inputs/simple-select.cjs +1 -1
  17. package/dist/components/inputs/simple-select.d.ts +1 -1
  18. package/dist/components/inputs/simple-select.js +5 -5
  19. package/dist/components/patterns/index.cjs +1 -1
  20. package/dist/components/patterns/index.js +4 -4
  21. package/dist/components/patterns/public.cjs +1 -1
  22. package/dist/components/patterns/public.js +4 -4
  23. package/dist/components/ui/button.cjs +1 -0
  24. package/dist/components/ui/button.d.ts +1 -0
  25. package/dist/components/ui/button.js +2 -0
  26. package/dist/components/ui/input.cjs +1 -0
  27. package/dist/components/ui/input.d.ts +1 -0
  28. package/dist/components/ui/input.js +3 -0
  29. package/dist/index.cjs +1 -1
  30. package/dist/index.d.ts +0 -1
  31. package/dist/index.js +19 -38
  32. package/dist/showcase/index.cjs +1 -1
  33. package/dist/showcase/index.d.ts +0 -1
  34. package/dist/showcase/index.js +36 -38
  35. package/dist/showcase/package-meta.cjs +1 -1
  36. package/dist/showcase/package-meta.d.ts +2 -2
  37. package/dist/showcase/package-meta.js +1 -1
  38. package/dist/showcase/premium/accordion/mock.cjs +4 -4
  39. package/dist/showcase/premium/accordion/mock.js +1 -1
  40. package/dist/showcase/{families/data-table/types.d.ts → premium/data-table-parts/data.d.ts} +4 -0
  41. package/dist/showcase/{families/data-table → premium/data-table-parts}/data.js +1 -1
  42. package/dist/showcase/premium/data-table-parts/showcase.cjs +1 -1
  43. package/dist/showcase/premium/data-table-parts/showcase.js +1 -1
  44. package/dist/showcase/site-data.cjs +1 -1
  45. package/dist/showcase/site-data.d.ts +6 -6
  46. package/dist/showcase/site-data.js +414 -451
  47. package/dist/showcase/tembro-registry.json.cjs +1 -1
  48. package/dist/showcase/tembro-registry.json.js +1 -1
  49. package/package.json +3 -14
  50. package/packages/cli/dist/index.cjs +17 -17
  51. package/packages/cli/vendor/src/components/calendar/calendar.tsx +3 -3
  52. package/packages/cli/vendor/src/components/calendar/date-picker.tsx +2 -2
  53. package/packages/cli/vendor/src/components/calendar/date-range-picker.tsx +4 -5
  54. package/packages/cli/vendor/src/components/data-table/data-table-toolbar.tsx +2 -2
  55. package/packages/cli/vendor/src/components/data-table/data-table.tsx +3 -3
  56. package/packages/cli/vendor/src/components/display/smart-card.tsx +8 -8
  57. package/packages/cli/vendor/src/components/inputs/combobox.tsx +71 -41
  58. package/packages/cli/vendor/src/components/inputs/simple-select.tsx +6 -6
  59. package/packages/cli/vendor/src/components/ui/button.tsx +2 -0
  60. package/packages/cli/vendor/src/components/ui/input.tsx +2 -0
  61. package/packages/cli/vendor/src/index.ts +3 -4
  62. package/packages/cli/vendor/src/showcase/index.ts +5 -6
  63. package/packages/cli/vendor/src/showcase/package-meta.ts +1 -1
  64. package/packages/cli/vendor/src/showcase/premium/accordion/mock.ts +4 -4
  65. package/packages/cli/vendor/src/showcase/{families/data-table → premium/data-table-parts}/data.ts +25 -1
  66. package/packages/cli/vendor/src/showcase/premium/data-table-parts/showcase.tsx +1 -2
  67. package/packages/cli/vendor/src/showcase/site-data.tsx +151 -216
  68. package/packages/cli/vendor/src/showcase/tembro-registry.json +1 -1
  69. package/registry.json +1 -1
  70. package/dist/families/badge-family.cjs +0 -1
  71. package/dist/families/badge-family.d.ts +0 -5
  72. package/dist/families/badge-family.js +0 -5
  73. package/dist/families/card-family.cjs +0 -1
  74. package/dist/families/card-family.d.ts +0 -16
  75. package/dist/families/card-family.js +0 -21
  76. package/dist/families/catalog.cjs +0 -1
  77. package/dist/families/catalog.d.ts +0 -11
  78. package/dist/families/catalog.js +0 -140
  79. package/dist/families/data-table-family.cjs +0 -1
  80. package/dist/families/data-table-family.d.ts +0 -18
  81. package/dist/families/data-table-family.js +0 -29
  82. package/dist/families/docs-adoption.cjs +0 -1
  83. package/dist/families/docs-adoption.d.ts +0 -16
  84. package/dist/families/docs-adoption.js +0 -53
  85. package/dist/families/docs-groups.cjs +0 -1
  86. package/dist/families/docs-groups.d.ts +0 -18
  87. package/dist/families/docs-groups.js +0 -262
  88. package/dist/families/docs-queries.cjs +0 -1
  89. package/dist/families/docs-queries.d.ts +0 -37
  90. package/dist/families/docs-queries.js +0 -50
  91. package/dist/families/docs-routing.cjs +0 -1
  92. package/dist/families/docs-routing.d.ts +0 -17
  93. package/dist/families/docs-routing.js +0 -49
  94. package/dist/families/form-family.cjs +0 -1
  95. package/dist/families/form-family.d.ts +0 -20
  96. package/dist/families/form-family.js +0 -35
  97. package/dist/families/index.cjs +0 -1
  98. package/dist/families/index.d.ts +0 -19
  99. package/dist/families/index.js +0 -20
  100. package/dist/families/input-family.cjs +0 -1
  101. package/dist/families/input-family.d.ts +0 -32
  102. package/dist/families/input-family.js +0 -56
  103. package/dist/families/member-metadata.cjs +0 -1
  104. package/dist/families/member-metadata.d.ts +0 -11
  105. package/dist/families/member-metadata.js +0 -1013
  106. package/dist/families/member-queries.cjs +0 -1
  107. package/dist/families/member-queries.d.ts +0 -6
  108. package/dist/families/member-queries.js +0 -14
  109. package/dist/families/member-snippet-queries.cjs +0 -1
  110. package/dist/families/member-snippet-queries.d.ts +0 -8
  111. package/dist/families/member-snippet-queries.js +0 -30
  112. package/dist/families/member-snippets.cjs +0 -484
  113. package/dist/families/member-snippets.d.ts +0 -11
  114. package/dist/families/member-snippets.js +0 -1061
  115. package/dist/families/migration-map.cjs +0 -1
  116. package/dist/families/migration-map.d.ts +0 -10
  117. package/dist/families/migration-map.js +0 -787
  118. package/dist/families/overlay-family.cjs +0 -1
  119. package/dist/families/overlay-family.d.ts +0 -22
  120. package/dist/families/overlay-family.js +0 -29
  121. package/dist/families/public-surface-rationalization.cjs +0 -1
  122. package/dist/families/public-surface-rationalization.d.ts +0 -169
  123. package/dist/families/public-surface-rationalization.js +0 -296
  124. package/dist/families/queries.cjs +0 -1
  125. package/dist/families/queries.d.ts +0 -12
  126. package/dist/families/queries.js +0 -162
  127. package/dist/families/select-family.cjs +0 -1
  128. package/dist/families/select-family.d.ts +0 -22
  129. package/dist/families/select-family.js +0 -27
  130. package/dist/families/views.cjs +0 -1
  131. package/dist/families/views.d.ts +0 -26
  132. package/dist/families/views.js +0 -45
  133. package/dist/showcase/families/actions/index.cjs +0 -1
  134. package/dist/showcase/families/actions/index.d.ts +0 -2
  135. package/dist/showcase/families/actions/index.js +0 -3
  136. package/dist/showcase/families/actions/mock.cjs +0 -5
  137. package/dist/showcase/families/actions/mock.d.ts +0 -2
  138. package/dist/showcase/families/actions/mock.js +0 -40
  139. package/dist/showcase/families/actions/showcase.cjs +0 -1
  140. package/dist/showcase/families/actions/showcase.d.ts +0 -2
  141. package/dist/showcase/families/actions/showcase.js +0 -53
  142. package/dist/showcase/families/calendar/index.cjs +0 -1
  143. package/dist/showcase/families/calendar/index.d.ts +0 -2
  144. package/dist/showcase/families/calendar/index.js +0 -3
  145. package/dist/showcase/families/calendar/mock.cjs +0 -5
  146. package/dist/showcase/families/calendar/mock.d.ts +0 -2
  147. package/dist/showcase/families/calendar/mock.js +0 -40
  148. package/dist/showcase/families/calendar/showcase.cjs +0 -1
  149. package/dist/showcase/families/calendar/showcase.d.ts +0 -2
  150. package/dist/showcase/families/calendar/showcase.js +0 -60
  151. package/dist/showcase/families/command/index.cjs +0 -1
  152. package/dist/showcase/families/command/index.d.ts +0 -2
  153. package/dist/showcase/families/command/index.js +0 -3
  154. package/dist/showcase/families/command/mock.cjs +0 -5
  155. package/dist/showcase/families/command/mock.d.ts +0 -2
  156. package/dist/showcase/families/command/mock.js +0 -40
  157. package/dist/showcase/families/command/showcase.cjs +0 -1
  158. package/dist/showcase/families/command/showcase.d.ts +0 -2
  159. package/dist/showcase/families/command/showcase.js +0 -40
  160. package/dist/showcase/families/data-table/data.d.ts +0 -5
  161. package/dist/showcase/families/data-table/index.cjs +0 -1
  162. package/dist/showcase/families/data-table/index.d.ts +0 -4
  163. package/dist/showcase/families/data-table/index.js +0 -4
  164. package/dist/showcase/families/data-table/mock.cjs +0 -24
  165. package/dist/showcase/families/data-table/mock.d.ts +0 -2
  166. package/dist/showcase/families/data-table/mock.js +0 -48
  167. package/dist/showcase/families/data-table/showcase.cjs +0 -1
  168. package/dist/showcase/families/data-table/showcase.d.ts +0 -3
  169. package/dist/showcase/families/data-table/showcase.js +0 -751
  170. package/dist/showcase/families/data-table/types.cjs +0 -1
  171. package/dist/showcase/families/data-table/types.js +0 -0
  172. package/dist/showcase/families/display/data.cjs +0 -1
  173. package/dist/showcase/families/display/data.d.ts +0 -6
  174. package/dist/showcase/families/display/data.js +0 -24
  175. package/dist/showcase/families/display/index.cjs +0 -1
  176. package/dist/showcase/families/display/index.d.ts +0 -2
  177. package/dist/showcase/families/display/index.js +0 -3
  178. package/dist/showcase/families/display/mock.cjs +0 -5
  179. package/dist/showcase/families/display/mock.d.ts +0 -2
  180. package/dist/showcase/families/display/mock.js +0 -40
  181. package/dist/showcase/families/display/showcase.cjs +0 -1
  182. package/dist/showcase/families/display/showcase.d.ts +0 -2
  183. package/dist/showcase/families/display/showcase.js +0 -201
  184. package/dist/showcase/families/filters/data.cjs +0 -1
  185. package/dist/showcase/families/filters/data.d.ts +0 -31
  186. package/dist/showcase/families/filters/data.js +0 -61
  187. package/dist/showcase/families/filters/index.cjs +0 -1
  188. package/dist/showcase/families/filters/index.d.ts +0 -2
  189. package/dist/showcase/families/filters/index.js +0 -3
  190. package/dist/showcase/families/filters/mock.cjs +0 -5
  191. package/dist/showcase/families/filters/mock.d.ts +0 -2
  192. package/dist/showcase/families/filters/mock.js +0 -40
  193. package/dist/showcase/families/filters/showcase.cjs +0 -1
  194. package/dist/showcase/families/filters/showcase.d.ts +0 -3
  195. package/dist/showcase/families/filters/showcase.js +0 -213
  196. package/dist/showcase/families/form/data.cjs +0 -1
  197. package/dist/showcase/families/form/data.d.ts +0 -22
  198. package/dist/showcase/families/form/data.js +0 -53
  199. package/dist/showcase/families/form/index.cjs +0 -1
  200. package/dist/showcase/families/form/index.d.ts +0 -4
  201. package/dist/showcase/families/form/index.js +0 -4
  202. package/dist/showcase/families/form/mock.cjs +0 -12
  203. package/dist/showcase/families/form/mock.d.ts +0 -2
  204. package/dist/showcase/families/form/mock.js +0 -40
  205. package/dist/showcase/families/form/showcase.cjs +0 -1
  206. package/dist/showcase/families/form/showcase.d.ts +0 -3
  207. package/dist/showcase/families/form/showcase.js +0 -318
  208. package/dist/showcase/families/form/types.cjs +0 -1
  209. package/dist/showcase/families/form/types.d.ts +0 -9
  210. package/dist/showcase/families/form/types.js +0 -0
  211. package/dist/showcase/families/index.cjs +0 -1
  212. package/dist/showcase/families/index.d.ts +0 -3
  213. package/dist/showcase/families/index.js +0 -96
  214. package/dist/showcase/families/inputs/data.cjs +0 -1
  215. package/dist/showcase/families/inputs/data.d.ts +0 -24
  216. package/dist/showcase/families/inputs/data.js +0 -90
  217. package/dist/showcase/families/inputs/index.cjs +0 -1
  218. package/dist/showcase/families/inputs/index.d.ts +0 -2
  219. package/dist/showcase/families/inputs/index.js +0 -3
  220. package/dist/showcase/families/inputs/mock.cjs +0 -5
  221. package/dist/showcase/families/inputs/mock.d.ts +0 -2
  222. package/dist/showcase/families/inputs/mock.js +0 -40
  223. package/dist/showcase/families/inputs/showcase.cjs +0 -1
  224. package/dist/showcase/families/inputs/showcase.d.ts +0 -3
  225. package/dist/showcase/families/inputs/showcase.js +0 -404
  226. package/dist/showcase/families/layout/index.cjs +0 -1
  227. package/dist/showcase/families/layout/index.d.ts +0 -2
  228. package/dist/showcase/families/layout/index.js +0 -3
  229. package/dist/showcase/families/layout/mock.cjs +0 -5
  230. package/dist/showcase/families/layout/mock.d.ts +0 -2
  231. package/dist/showcase/families/layout/mock.js +0 -40
  232. package/dist/showcase/families/layout/showcase.cjs +0 -1
  233. package/dist/showcase/families/layout/showcase.d.ts +0 -2
  234. package/dist/showcase/families/layout/showcase.js +0 -88
  235. package/dist/showcase/families/navigation/index.cjs +0 -1
  236. package/dist/showcase/families/navigation/index.d.ts +0 -2
  237. package/dist/showcase/families/navigation/index.js +0 -3
  238. package/dist/showcase/families/navigation/mock.cjs +0 -5
  239. package/dist/showcase/families/navigation/mock.d.ts +0 -2
  240. package/dist/showcase/families/navigation/mock.js +0 -40
  241. package/dist/showcase/families/navigation/showcase.cjs +0 -1
  242. package/dist/showcase/families/navigation/showcase.d.ts +0 -2
  243. package/dist/showcase/families/navigation/showcase.js +0 -49
  244. package/dist/showcase/families/notifications/index.cjs +0 -1
  245. package/dist/showcase/families/notifications/index.d.ts +0 -2
  246. package/dist/showcase/families/notifications/index.js +0 -3
  247. package/dist/showcase/families/notifications/mock.cjs +0 -5
  248. package/dist/showcase/families/notifications/mock.d.ts +0 -2
  249. package/dist/showcase/families/notifications/mock.js +0 -40
  250. package/dist/showcase/families/notifications/showcase.cjs +0 -1
  251. package/dist/showcase/families/notifications/showcase.d.ts +0 -1
  252. package/dist/showcase/families/notifications/showcase.js +0 -50
  253. package/dist/showcase/families/overlay/index.cjs +0 -1
  254. package/dist/showcase/families/overlay/index.d.ts +0 -2
  255. package/dist/showcase/families/overlay/index.js +0 -3
  256. package/dist/showcase/families/overlay/mock.cjs +0 -5
  257. package/dist/showcase/families/overlay/mock.d.ts +0 -2
  258. package/dist/showcase/families/overlay/mock.js +0 -40
  259. package/dist/showcase/families/overlay/showcase.cjs +0 -1
  260. package/dist/showcase/families/overlay/showcase.d.ts +0 -1
  261. package/dist/showcase/families/overlay/showcase.js +0 -38
  262. package/dist/showcase/families/patterns/index.cjs +0 -1
  263. package/dist/showcase/families/patterns/index.d.ts +0 -2
  264. package/dist/showcase/families/patterns/index.js +0 -3
  265. package/dist/showcase/families/patterns/mock.cjs +0 -5
  266. package/dist/showcase/families/patterns/mock.d.ts +0 -2
  267. package/dist/showcase/families/patterns/mock.js +0 -40
  268. package/dist/showcase/families/patterns/showcase.cjs +0 -1
  269. package/dist/showcase/families/patterns/showcase.d.ts +0 -1
  270. package/dist/showcase/families/patterns/showcase.js +0 -38
  271. package/dist/showcase/families/types.cjs +0 -1
  272. package/dist/showcase/families/types.d.ts +0 -29
  273. package/dist/showcase/families/types.js +0 -10
  274. package/dist/showcase/families/upload/data.cjs +0 -1
  275. package/dist/showcase/families/upload/data.d.ts +0 -1
  276. package/dist/showcase/families/upload/data.js +0 -10
  277. package/dist/showcase/families/upload/index.cjs +0 -1
  278. package/dist/showcase/families/upload/index.d.ts +0 -2
  279. package/dist/showcase/families/upload/index.js +0 -3
  280. package/dist/showcase/families/upload/mock.cjs +0 -5
  281. package/dist/showcase/families/upload/mock.d.ts +0 -2
  282. package/dist/showcase/families/upload/mock.js +0 -40
  283. package/dist/showcase/families/upload/showcase.cjs +0 -1
  284. package/dist/showcase/families/upload/showcase.d.ts +0 -3
  285. package/dist/showcase/families/upload/showcase.js +0 -133
  286. package/dist/showcase/families/wizard/index.cjs +0 -1
  287. package/dist/showcase/families/wizard/index.d.ts +0 -2
  288. package/dist/showcase/families/wizard/index.js +0 -3
  289. package/dist/showcase/families/wizard/mock.cjs +0 -5
  290. package/dist/showcase/families/wizard/mock.d.ts +0 -2
  291. package/dist/showcase/families/wizard/mock.js +0 -40
  292. package/dist/showcase/families/wizard/showcase.cjs +0 -1
  293. package/dist/showcase/families/wizard/showcase.d.ts +0 -2
  294. package/dist/showcase/families/wizard/showcase.js +0 -56
  295. package/packages/cli/vendor/src/families/badge-family.ts +0 -7
  296. package/packages/cli/vendor/src/families/card-family.ts +0 -26
  297. package/packages/cli/vendor/src/families/catalog.ts +0 -125
  298. package/packages/cli/vendor/src/families/data-table-family.ts +0 -31
  299. package/packages/cli/vendor/src/families/docs-adoption.ts +0 -103
  300. package/packages/cli/vendor/src/families/docs-groups.ts +0 -248
  301. package/packages/cli/vendor/src/families/docs-queries.ts +0 -84
  302. package/packages/cli/vendor/src/families/docs-routing.ts +0 -89
  303. package/packages/cli/vendor/src/families/form-family.ts +0 -37
  304. package/packages/cli/vendor/src/families/index.ts +0 -19
  305. package/packages/cli/vendor/src/families/input-family.ts +0 -61
  306. package/packages/cli/vendor/src/families/member-metadata.ts +0 -1033
  307. package/packages/cli/vendor/src/families/member-queries.ts +0 -28
  308. package/packages/cli/vendor/src/families/member-snippet-queries.ts +0 -54
  309. package/packages/cli/vendor/src/families/member-snippets.ts +0 -1563
  310. package/packages/cli/vendor/src/families/migration-map.ts +0 -161
  311. package/packages/cli/vendor/src/families/overlay-family.ts +0 -31
  312. package/packages/cli/vendor/src/families/public-surface-rationalization.ts +0 -206
  313. package/packages/cli/vendor/src/families/queries.ts +0 -131
  314. package/packages/cli/vendor/src/families/select-family.ts +0 -33
  315. package/packages/cli/vendor/src/families/views.ts +0 -85
  316. package/packages/cli/vendor/src/showcase/families/actions/index.ts +0 -2
  317. package/packages/cli/vendor/src/showcase/families/actions/mock.ts +0 -18
  318. package/packages/cli/vendor/src/showcase/families/actions/showcase.tsx +0 -36
  319. package/packages/cli/vendor/src/showcase/families/calendar/index.ts +0 -2
  320. package/packages/cli/vendor/src/showcase/families/calendar/mock.ts +0 -18
  321. package/packages/cli/vendor/src/showcase/families/calendar/showcase.tsx +0 -33
  322. package/packages/cli/vendor/src/showcase/families/command/index.ts +0 -2
  323. package/packages/cli/vendor/src/showcase/families/command/mock.ts +0 -18
  324. package/packages/cli/vendor/src/showcase/families/command/showcase.tsx +0 -33
  325. package/packages/cli/vendor/src/showcase/families/data-table/index.ts +0 -4
  326. package/packages/cli/vendor/src/showcase/families/data-table/mock.ts +0 -42
  327. package/packages/cli/vendor/src/showcase/families/data-table/showcase.tsx +0 -507
  328. package/packages/cli/vendor/src/showcase/families/data-table/types.ts +0 -25
  329. package/packages/cli/vendor/src/showcase/families/display/data.ts +0 -11
  330. package/packages/cli/vendor/src/showcase/families/display/index.ts +0 -2
  331. package/packages/cli/vendor/src/showcase/families/display/mock.ts +0 -18
  332. package/packages/cli/vendor/src/showcase/families/display/showcase.tsx +0 -113
  333. package/packages/cli/vendor/src/showcase/families/filters/data.ts +0 -18
  334. package/packages/cli/vendor/src/showcase/families/filters/index.ts +0 -2
  335. package/packages/cli/vendor/src/showcase/families/filters/mock.ts +0 -18
  336. package/packages/cli/vendor/src/showcase/families/filters/showcase.tsx +0 -137
  337. package/packages/cli/vendor/src/showcase/families/form/data.ts +0 -37
  338. package/packages/cli/vendor/src/showcase/families/form/index.ts +0 -4
  339. package/packages/cli/vendor/src/showcase/families/form/mock.ts +0 -18
  340. package/packages/cli/vendor/src/showcase/families/form/showcase.tsx +0 -230
  341. package/packages/cli/vendor/src/showcase/families/form/types.ts +0 -10
  342. package/packages/cli/vendor/src/showcase/families/index.ts +0 -37
  343. package/packages/cli/vendor/src/showcase/families/inputs/data.ts +0 -40
  344. package/packages/cli/vendor/src/showcase/families/inputs/index.ts +0 -2
  345. package/packages/cli/vendor/src/showcase/families/inputs/mock.ts +0 -18
  346. package/packages/cli/vendor/src/showcase/families/inputs/showcase.tsx +0 -294
  347. package/packages/cli/vendor/src/showcase/families/layout/index.ts +0 -2
  348. package/packages/cli/vendor/src/showcase/families/layout/mock.ts +0 -18
  349. package/packages/cli/vendor/src/showcase/families/layout/showcase.tsx +0 -57
  350. package/packages/cli/vendor/src/showcase/families/navigation/index.ts +0 -2
  351. package/packages/cli/vendor/src/showcase/families/navigation/mock.ts +0 -18
  352. package/packages/cli/vendor/src/showcase/families/navigation/showcase.tsx +0 -31
  353. package/packages/cli/vendor/src/showcase/families/notifications/index.ts +0 -2
  354. package/packages/cli/vendor/src/showcase/families/notifications/mock.ts +0 -18
  355. package/packages/cli/vendor/src/showcase/families/notifications/showcase.tsx +0 -24
  356. package/packages/cli/vendor/src/showcase/families/overlay/index.ts +0 -2
  357. package/packages/cli/vendor/src/showcase/families/overlay/mock.ts +0 -18
  358. package/packages/cli/vendor/src/showcase/families/overlay/showcase.tsx +0 -23
  359. package/packages/cli/vendor/src/showcase/families/patterns/index.ts +0 -2
  360. package/packages/cli/vendor/src/showcase/families/patterns/mock.ts +0 -18
  361. package/packages/cli/vendor/src/showcase/families/patterns/showcase.tsx +0 -23
  362. package/packages/cli/vendor/src/showcase/families/types.ts +0 -40
  363. package/packages/cli/vendor/src/showcase/families/upload/data.ts +0 -7
  364. package/packages/cli/vendor/src/showcase/families/upload/index.ts +0 -2
  365. package/packages/cli/vendor/src/showcase/families/upload/mock.ts +0 -18
  366. package/packages/cli/vendor/src/showcase/families/upload/showcase.tsx +0 -86
  367. package/packages/cli/vendor/src/showcase/families/wizard/index.ts +0 -2
  368. package/packages/cli/vendor/src/showcase/families/wizard/mock.ts +0 -18
  369. package/packages/cli/vendor/src/showcase/families/wizard/showcase.tsx +0 -39
  370. /package/dist/showcase/{families/data-table → premium/data-table-parts}/data.cjs +0 -0
@@ -1,507 +0,0 @@
1
- import * as React from "react"
2
- import type { ColumnDef, RowSelectionState, SortingState, Table, VisibilityState } from "@tanstack/react-table"
3
-
4
- import {
5
- Badge,
6
- Button,
7
- DataTable,
8
- DataTableBulkActions,
9
- DataTableColumnVisibilityMenu,
10
- DataTableSortableHeader,
11
- DataTableViewPresets,
12
- SheetShell,
13
- SearchInput,
14
- createDataTableActionsColumn,
15
- createDataTableSelectColumn,
16
- } from "@/index"
17
-
18
- import type { FamilyDemoProps } from "../types"
19
-
20
- import { dataTableDemoPresets, dataTableDemoRows, dataTableToolbarActions } from "./data"
21
- import type { DataTableDemoRow } from "./types"
22
-
23
- export function DataTableFamilyShowcase({ state, setState }: FamilyDemoProps) {
24
- const [rowSelection, setRowSelection] = React.useState<RowSelectionState>({})
25
- const [sorting, setSorting] = React.useState<SortingState>([])
26
- const [columnVisibility, setColumnVisibility] = React.useState<VisibilityState>({})
27
- const [activeInvoice, setActiveInvoice] = React.useState<string>(dataTableDemoRows[0]?.invoice ?? "")
28
- const [detailOpen, setDetailOpen] = React.useState(false)
29
- const [loading, setLoading] = React.useState(false)
30
- const [empty, setEmpty] = React.useState(false)
31
- const [error, setError] = React.useState(false)
32
- const [view, setView] = React.useState<"all" | "finance" | "at-risk">("all")
33
- const [loadingVariant, setLoadingVariant] = React.useState<"skeleton" | "state">("skeleton")
34
- const [serverMode, setServerMode] = React.useState<"client" | "server">("client")
35
- const [pageSize, setPageSize] = React.useState(3)
36
- const [pageIndex, setPageIndex] = React.useState(0)
37
-
38
- const queryRows = React.useMemo(() => {
39
- const search = state.search.trim().toLowerCase()
40
- let rows = dataTableDemoRows
41
-
42
- if (view === "finance") rows = rows.filter((row) => row.status === "Paid" || row.status === "Review")
43
- if (view === "at-risk") rows = rows.filter((row) => row.status === "Draft" || row.status === "Overdue")
44
-
45
- if (empty) return []
46
- if (!search) return rows
47
-
48
- return rows.filter((row) =>
49
- [row.invoice, row.order, row.customer, row.owner, row.channel, row.status, row.amount, row.items].join(" ").toLowerCase().includes(search)
50
- )
51
- }, [empty, state.search, view])
52
-
53
- const visibleRows = queryRows
54
- const pageCount = Math.max(Math.ceil(visibleRows.length / pageSize), 1)
55
- const safePageIndex = Math.min(pageIndex, Math.max(pageCount - 1, 0))
56
- const pagedRows = React.useMemo(
57
- () => visibleRows.slice(safePageIndex * pageSize, safePageIndex * pageSize + pageSize),
58
- [pageSize, safePageIndex, visibleRows]
59
- )
60
-
61
- const selectedRows = React.useMemo(() => dataTableDemoRows.filter((_, index) => rowSelection[index]), [rowSelection])
62
- const activeRow = dataTableDemoRows.find((row) => row.invoice === activeInvoice) ?? pagedRows[0]
63
- const paidAmount = visibleRows.filter((row) => row.status === "Paid").reduce((total, row) => total + row.amountValue, 0)
64
- const isBusy = loading
65
-
66
- const columns = React.useMemo<ColumnDef<DataTableDemoRow>[]>(
67
- () => [
68
- createDataTableSelectColumn<DataTableDemoRow>(),
69
- {
70
- accessorKey: "invoice",
71
- header: ({ column }) => <DataTableSortableHeader column={column}>Invoice</DataTableSortableHeader>,
72
- cell: ({ row }) => (
73
- <div className="min-w-[132px]">
74
- <p className="aui-text-strong font-medium">{row.original.invoice}</p>
75
- <p className="aui-text-muted mt-1 text-xs">{row.original.order}</p>
76
- </div>
77
- ),
78
- },
79
- {
80
- accessorKey: "customer",
81
- header: ({ column }) => <DataTableSortableHeader column={column}>Customer</DataTableSortableHeader>,
82
- cell: ({ row }) => (
83
- <div className="min-w-[180px]">
84
- <p className="aui-text-strong font-medium">{row.original.customer}</p>
85
- <p className="aui-text-muted mt-1 text-xs">{row.original.owner} • {row.original.channel}</p>
86
- </div>
87
- ),
88
- },
89
- {
90
- accessorKey: "status",
91
- header: "Status",
92
- cell: ({ row }) => (
93
- <Badge
94
- variant={
95
- row.original.status === "Paid"
96
- ? "secondary"
97
- : row.original.status === "Review"
98
- ? "outline"
99
- : "destructive"
100
- }
101
- >
102
- {row.original.status}
103
- </Badge>
104
- ),
105
- },
106
- {
107
- accessorKey: "items",
108
- header: ({ column }) => <DataTableSortableHeader column={column}>Items</DataTableSortableHeader>,
109
- cell: ({ row }) => <span className="aui-text-strong font-medium">{row.original.items}</span>,
110
- },
111
- {
112
- accessorKey: "stock",
113
- header: ({ column }) => <DataTableSortableHeader column={column}>Stock</DataTableSortableHeader>,
114
- },
115
- {
116
- accessorKey: "amount",
117
- header: ({ column }) => <DataTableSortableHeader column={column}>Amount</DataTableSortableHeader>,
118
- cell: ({ row }) => (
119
- <div className="min-w-[116px]">
120
- <p className="aui-text-strong font-medium">{row.original.amount}</p>
121
- <p className={`mt-1 text-xs ${row.original.trend === "up" ? "text-emerald-600" : row.original.trend === "down" ? "text-rose-600" : "aui-text-muted"}`}>
122
- {row.original.trend === "up" ? "Trending up" : row.original.trend === "down" ? "Needs attention" : "Stable"}
123
- </p>
124
- </div>
125
- ),
126
- },
127
- {
128
- accessorKey: "updatedAt",
129
- header: "Updated",
130
- cell: ({ row }) => (
131
- <div>
132
- <p className="aui-text-strong font-medium">{row.original.updatedAt}</p>
133
- <p className="aui-text-muted mt-1 text-xs">{row.original.status === "Draft" ? "Editing locked" : "Live sync"}</p>
134
- </div>
135
- ),
136
- },
137
- createDataTableActionsColumn<DataTableDemoRow>({
138
- getActions: (_row, original) => [
139
- {
140
- key: "view",
141
- label: "Open detail",
142
- onSelect: () => {
143
- setActiveInvoice(original.invoice)
144
- setDetailOpen(true)
145
- },
146
- },
147
- { key: "follow-up", label: "Create follow-up", onSelect: () => setState({ notes: `Follow-up prepared for ${original.customer}` }) },
148
- { key: "archive", label: "Archive", destructive: true, onSelect: () => setState({ notes: `${original.invoice} marked for archive review` }) },
149
- ],
150
- }),
151
- ],
152
- [setState]
153
- )
154
-
155
- return (
156
- <div className="space-y-4">
157
- <div className="rounded-[22px] border border-[color:var(--aui-surface-border)] bg-[color:var(--aui-surface)] p-4">
158
- <div className="flex flex-col gap-4 xl:flex-row xl:items-start xl:justify-between">
159
- <div className="space-y-3">
160
- <div className="flex flex-wrap items-center gap-2">
161
- <Badge variant="outline">{selectedRows.length} selected</Badge>
162
- <Badge variant="outline">{view === "all" ? "All invoices" : view === "finance" ? "Finance review" : "At risk"}</Badge>
163
- <Badge variant="outline">{visibleRows.length} rows</Badge>
164
- <Badge variant="outline">{loadingVariant}</Badge>
165
- <Badge variant="outline">{serverMode === "server" ? "Manual server-state" : "Client state"}</Badge>
166
- </div>
167
- <div>
168
- <p className="aui-text-strong text-sm font-medium">Reusable DataTable flow</p>
169
- <p className="aui-text-muted mt-1 text-sm leading-6">Selection, column visibility, mobile cards, manual server-state, detail sheet, disabled rows and pagination in one compact surface.</p>
170
- </div>
171
- </div>
172
-
173
- <div className="flex flex-wrap items-center gap-2">
174
- <Button variant={serverMode === "client" ? "default" : "outline"} size="sm" onClick={() => { setServerMode("client"); setLoading(false); }}>Client</Button>
175
- <Button variant={serverMode === "server" ? "default" : "outline"} size="sm" onClick={() => { setServerMode("server"); setLoading(false); }}>Server</Button>
176
- <Button variant={state.density === "compact" ? "default" : "outline"} size="sm" onClick={() => setState({ density: "compact" })}>Compact</Button>
177
- <Button variant={state.density === "comfortable" ? "default" : "outline"} size="sm" onClick={() => setState({ density: "comfortable" })}>Comfortable</Button>
178
- <Button variant={loadingVariant === "skeleton" ? "default" : "outline"} size="sm" onClick={() => setLoadingVariant((current) => current === "skeleton" ? "state" : "skeleton")}>
179
- {loadingVariant === "skeleton" ? "Skeleton" : "State"}
180
- </Button>
181
- <Button variant={loading ? "default" : "outline"} size="sm" onClick={() => setLoading((current) => !current)}>Loading</Button>
182
- <Button variant={error ? "default" : "outline"} size="sm" onClick={() => setError((current) => !current)}>Error</Button>
183
- <Button variant={empty ? "default" : "outline"} size="sm" onClick={() => setEmpty((current) => !current)}>Empty</Button>
184
- <Button
185
- variant="outline"
186
- size="sm"
187
- onClick={() => {
188
- setState({ search: "" })
189
- setView("all")
190
- setLoading(false)
191
- setError(false)
192
- setEmpty(false)
193
- setLoadingVariant("skeleton")
194
- setServerMode("client")
195
- setPageIndex(0)
196
- setRowSelection({})
197
- setColumnVisibility({})
198
- setDetailOpen(false)
199
- }}
200
- >
201
- Reset
202
- </Button>
203
- </div>
204
- </div>
205
-
206
- <div className="mt-4 flex flex-col gap-3 xl:flex-row xl:items-center xl:justify-between">
207
- <DataTableViewPresets
208
- value={view}
209
- onValueChange={(value) => {
210
- setView((value as typeof view | undefined) ?? "all")
211
- setPageIndex(0)
212
- }}
213
- presets={dataTableDemoPresets}
214
- size="sm"
215
- />
216
- <div className="w-full max-w-[320px]">
217
- <SearchInput value={state.search} onValueChange={(value: string) => setState({ search: value })} placeholder="Search invoice, customer, owner..." />
218
- </div>
219
- </div>
220
- </div>
221
-
222
- <div className="rounded-[22px] border border-[color:var(--aui-surface-border)] bg-[color:var(--aui-surface)] p-4">
223
- <DataTable
224
- columns={columns}
225
- data={pagedRows}
226
- getRowId={(row) => row.invoice}
227
- rowSelection={rowSelection}
228
- onRowSelectionChange={setRowSelection}
229
- sorting={sorting}
230
- onSortingChange={setSorting}
231
- columnVisibility={columnVisibility}
232
- onColumnVisibilityChange={setColumnVisibility}
233
- enableRowSelection
234
- density={state.density === "comfortable" ? "comfortable" : "compact"}
235
- striped
236
- bordered
237
- stickyHeader
238
- isLoading={isBusy}
239
- isError={error}
240
- loadingVariant={loadingVariant}
241
- loadingState={{
242
- label: serverMode === "server" ? "Fetching invoices" : "Loading invoices",
243
- description: serverMode === "server" ? "Manual mode simulates server-side filtering, sorting and pagination." : "Reusable DataTable loading state.",
244
- }}
245
- errorState={{ title: "Invoice table failed", description: "Force error state to inspect resilient UI." }}
246
- emptyState={{ title: "No rows found", description: "Current view or search does not match any invoice." }}
247
- getRowDisabled={(row) => row.original.status === "Draft"}
248
- onRowClick={(row) => setActiveInvoice(row.original.invoice)}
249
- onRowDoubleClick={(row) => {
250
- setActiveInvoice(row.original.invoice)
251
- setDetailOpen(true)
252
- setState({ notes: `${row.original.invoice} opened from double click` })
253
- }}
254
- renderMobileCard={(row) => (
255
- <button
256
- key={row.id}
257
- type="button"
258
- onClick={() => {
259
- setActiveInvoice(row.original.invoice)
260
- setDetailOpen(true)
261
- }}
262
- className={activeInvoice === row.original.invoice ? "rounded-[20px] aui-surface-strong border-[color:var(--aui-surface-strong)] p-4 text-left" : "rounded-[20px] border border-[color:var(--aui-surface-border)] bg-[color:var(--aui-surface)] p-4 text-left"}
263
- >
264
- <div className="flex items-center justify-between gap-3">
265
- <div>
266
- <p className="font-medium">{row.original.invoice}</p>
267
- <p className={activeInvoice === row.original.invoice ? "mt-1 text-sm text-[color:color-mix(in_oklch,var(--aui-surface-strong-foreground)_72%,transparent)]" : "aui-text-muted mt-1 text-sm"}>{row.original.customer} • {row.original.owner}</p>
268
- </div>
269
- <Badge variant={row.original.status === "Paid" ? "secondary" : row.original.status === "Review" ? "outline" : "destructive"}>{row.original.status}</Badge>
270
- </div>
271
- <div className="mt-4 grid grid-cols-2 gap-3 text-sm">
272
- <div>
273
- <p className={activeInvoice === row.original.invoice ? "text-[color:color-mix(in_oklch,var(--aui-surface-strong-foreground)_60%,transparent)]" : "aui-text-muted"}>Amount</p>
274
- <p className="mt-1 font-semibold">{row.original.amount}</p>
275
- </div>
276
- <div>
277
- <p className={activeInvoice === row.original.invoice ? "text-[color:color-mix(in_oklch,var(--aui-surface-strong-foreground)_60%,transparent)]" : "aui-text-muted"}>Updated</p>
278
- <p className="mt-1 font-semibold">{row.original.updatedAt}</p>
279
- </div>
280
- <div>
281
- <p className={activeInvoice === row.original.invoice ? "text-[color:color-mix(in_oklch,var(--aui-surface-strong-foreground)_60%,transparent)]" : "aui-text-muted"}>Items</p>
282
- <p className="mt-1 font-semibold">{row.original.items}</p>
283
- </div>
284
- <div>
285
- <p className={activeInvoice === row.original.invoice ? "text-[color:color-mix(in_oklch,var(--aui-surface-strong-foreground)_60%,transparent)]" : "aui-text-muted"}>Channel</p>
286
- <p className="mt-1 font-semibold">{row.original.channel}</p>
287
- </div>
288
- </div>
289
- </button>
290
- )}
291
- toolbarProps={(table: Table<DataTableDemoRow>) => ({
292
- title: "Invoices",
293
- description: "Primary reusable data-table API for finance, ops and admin surfaces.",
294
- search: (
295
- <div className="flex flex-wrap items-center gap-2">
296
- <Badge variant="outline">{view === "all" ? "All" : view === "finance" ? "Finance" : "At risk"}</Badge>
297
- {(state.search || view !== "all") ? (
298
- <Button
299
- variant="ghost"
300
- size="sm"
301
- onClick={() => {
302
- setState({ search: "" })
303
- setView("all")
304
- setPageIndex(0)
305
- }}
306
- >
307
- Clear filters
308
- </Button>
309
- ) : null}
310
- </div>
311
- ),
312
- actions: (
313
- <div className="flex items-center gap-2">
314
- <DataTableColumnVisibilityMenu table={table} />
315
- {dataTableToolbarActions.map((action) => (
316
- <Button
317
- key={action.label}
318
- variant={action.variant}
319
- size="sm"
320
- onClick={() => setState({ notes: `${action.label} prepared for ${visibleRows.length} visible rows` })}
321
- >
322
- {action.label}
323
- </Button>
324
- ))}
325
- </div>
326
- ),
327
- selectionActions: (
328
- <div className="flex flex-wrap items-center gap-2">
329
- <DataTableBulkActions
330
- rows={table.getSelectedRowModel().rows.map((row) => row.original)}
331
- actions={[
332
- {
333
- key: "export",
334
- label: "Export selected",
335
- onSelect: (rows) => setState({ notes: `${rows.length} rows prepared for export` }),
336
- },
337
- {
338
- key: "archive",
339
- label: "Archive selected",
340
- destructive: true,
341
- onSelect: (rows) => setState({ notes: `${rows.length} rows sent to archive flow` }),
342
- },
343
- ]}
344
- onClearSelection={() => setRowSelection({})}
345
- />
346
- </div>
347
- ),
348
- })}
349
- pagination={{
350
- manual: true,
351
- pageIndex: safePageIndex,
352
- pageSize,
353
- rowCount: visibleRows.length,
354
- pageCount,
355
- pageSizeOptions: [3, 5, 10],
356
- showPageSize: true,
357
- labels: {
358
- rowsPerPage: "Rows per page",
359
- pageInfo: (page: number, pageCount: number, rowCount?: number) => `${page + 1} / ${pageCount}${rowCount ? ` • ${rowCount} rows` : ""}`,
360
- first: "First",
361
- previous: "Previous",
362
- next: "Next",
363
- last: "Last",
364
- page: (page: number) => `Page ${page}`,
365
- },
366
- onPageChange: setPageIndex,
367
- onPageSizeChange: (nextPageSize) => {
368
- setPageSize(nextPageSize)
369
- setPageIndex(0)
370
- },
371
- }}
372
- />
373
- </div>
374
-
375
- <div className="grid gap-4 lg:grid-cols-[1.3fr_0.7fr]">
376
- <div className="rounded-[22px] border border-[color:var(--aui-surface-border)] bg-[color:var(--aui-surface)] p-4">
377
- <div className="flex flex-wrap items-center gap-2">
378
- <Badge variant="outline">Row click focuses detail</Badge>
379
- <Badge variant="outline">Checkbox stays isolated</Badge>
380
- <Badge variant="outline">Action menu stays isolated</Badge>
381
- <Badge variant="outline">Bulk actions use real selection</Badge>
382
- </div>
383
- <div className="mt-4 grid gap-3 md:grid-cols-3">
384
- <div className="rounded-[18px] border border-[color:var(--aui-surface-border)] bg-[color:var(--aui-page-bg)] px-4 py-3">
385
- <p className="aui-text-muted text-xs uppercase tracking-[0.18em]">Step 1</p>
386
- <p className="aui-text-strong mt-2 text-sm font-medium">Click row body</p>
387
- <p className="aui-text-subtle mt-2 text-sm leading-6">Focus shifts to the invoice summary card below without opening unrelated controls.</p>
388
- </div>
389
- <div className="rounded-[18px] border border-[color:var(--aui-surface-border)] bg-[color:var(--aui-page-bg)] px-4 py-3">
390
- <p className="aui-text-muted text-xs uppercase tracking-[0.18em]">Step 2</p>
391
- <p className="aui-text-strong mt-2 text-sm font-medium">Use select checkbox</p>
392
- <p className="aui-text-subtle mt-2 text-sm leading-6">Selection updates bulk actions only. It does not trigger row focus or open detail.</p>
393
- </div>
394
- <div className="rounded-[18px] border border-[color:var(--aui-surface-border)] bg-[color:var(--aui-page-bg)] px-4 py-3">
395
- <p className="aui-text-muted text-xs uppercase tracking-[0.18em]">Step 3</p>
396
- <p className="aui-text-strong mt-2 text-sm font-medium">Open row actions</p>
397
- <p className="aui-text-subtle mt-2 text-sm leading-6">Action menu dispatches row-specific commands and keeps parent row click untouched.</p>
398
- </div>
399
- </div>
400
- </div>
401
-
402
- <div className="rounded-[22px] border border-[color:var(--aui-surface-border)] bg-[color:var(--aui-surface)] p-4">
403
- <p className="aui-text-muted text-sm">Interaction proof</p>
404
- <div className="mt-3 space-y-3">
405
- <div className="rounded-[18px] border border-[color:var(--aui-surface-border)] bg-[color:var(--aui-page-bg)] px-4 py-3">
406
- <p className="aui-text-strong text-sm font-medium">{activeRow?.invoice ?? "No active invoice"}</p>
407
- <p className="aui-text-subtle mt-1 text-sm">Active focus row</p>
408
- </div>
409
- <div className="rounded-[18px] border border-[color:var(--aui-surface-border)] bg-[color:var(--aui-page-bg)] px-4 py-3">
410
- <p className="aui-text-strong text-sm font-medium">{selectedRows.length} selected</p>
411
- <p className="aui-text-subtle mt-1 text-sm">Selection state stays independent from row detail state.</p>
412
- </div>
413
- <div className="rounded-[18px] border border-[color:var(--aui-surface-border)] bg-[color:var(--aui-page-bg)] px-4 py-3">
414
- <p className="aui-text-strong text-sm font-medium">{detailOpen ? "Detail sheet open" : "Detail sheet closed"}</p>
415
- <p className="aui-text-subtle mt-1 text-sm">Double click and menu actions can open the same reusable detail surface.</p>
416
- </div>
417
- </div>
418
- </div>
419
- </div>
420
-
421
- <div className="grid gap-4 md:grid-cols-4">
422
- <div className="rounded-[22px] border border-[color:var(--aui-surface-border)] bg-[color:var(--aui-surface)] p-4">
423
- <p className="aui-text-muted text-sm">Focused row</p>
424
- <p className="aui-text-strong mt-2 text-lg font-semibold">{activeRow?.invoice ?? "No row"}</p>
425
- <p className="aui-text-subtle mt-2 text-sm">{activeRow ? `${activeRow.customer} • ${activeRow.owner} • ${activeRow.channel}` : "Select a row to inspect actions."}</p>
426
- </div>
427
- <div className="rounded-[22px] border border-[color:var(--aui-surface-border)] bg-[color:var(--aui-surface)] p-4">
428
- <p className="aui-text-muted text-sm">Selection</p>
429
- <p className="aui-text-strong mt-2 text-lg font-semibold">{selectedRows.length} rows active</p>
430
- <p className="aui-text-subtle mt-2 text-sm">Bulk export and archive stay attached to the real selected rows.</p>
431
- </div>
432
- <div className="rounded-[22px] border border-[color:var(--aui-surface-border)] bg-[color:var(--aui-surface)] p-4">
433
- <p className="aui-text-muted text-sm">Finance signal</p>
434
- <p className="aui-text-strong mt-2 text-lg font-semibold">${paidAmount.toLocaleString()}</p>
435
- <p className="aui-text-subtle mt-2 text-sm">Paid invoices total in the current filtered view.</p>
436
- </div>
437
- <div className="rounded-[22px] border border-[color:var(--aui-surface-border)] bg-[color:var(--aui-surface)] p-4">
438
- <p className="aui-text-muted text-sm">Data mode</p>
439
- <p className="aui-text-strong mt-2 text-lg font-semibold">{serverMode === "server" ? "Manual server" : "Client only"}</p>
440
- <p className="aui-text-subtle mt-2 text-sm">{serverMode === "server" ? "Query changes pass through simulated fetch state." : "Filters resolve immediately in memory."}</p>
441
- </div>
442
- </div>
443
-
444
- <SheetShell
445
- open={detailOpen}
446
- onOpenChange={setDetailOpen}
447
- side="right"
448
- title={activeRow ? `${activeRow.invoice} detail` : "Invoice detail"}
449
- description="Row click, double click and action menu all converge into one reusable detail surface."
450
- contentClassName="sm:max-w-xl"
451
- bodyClassName="space-y-6"
452
- footer={
453
- <>
454
- <Button variant="outline" onClick={() => setDetailOpen(false)}>Close</Button>
455
- <Button onClick={() => setState({ notes: `${activeRow?.invoice ?? "Invoice"} sent to finance review` })}>Send to review</Button>
456
- </>
457
- }
458
- >
459
- {activeRow ? (
460
- <>
461
- <div className="grid gap-4 sm:grid-cols-2">
462
- <div className="rounded-[20px] border border-[color:var(--aui-surface-border)] bg-[color:var(--aui-surface)] p-4">
463
- <p className="aui-text-muted text-sm">Customer</p>
464
- <p className="aui-text-strong mt-2 text-lg font-semibold">{activeRow.customer}</p>
465
- <p className="aui-text-subtle mt-1 text-sm">{activeRow.owner} • {activeRow.channel}</p>
466
- </div>
467
- <div className="rounded-[20px] border border-[color:var(--aui-surface-border)] bg-[color:var(--aui-surface)] p-4">
468
- <p className="aui-text-muted text-sm">Order value</p>
469
- <p className="aui-text-strong mt-2 text-lg font-semibold">{activeRow.amount}</p>
470
- <p className={`mt-1 text-sm ${activeRow.trend === "up" ? "text-emerald-600" : activeRow.trend === "down" ? "text-rose-600" : "aui-text-muted"}`}>
471
- {activeRow.trend === "up" ? "Revenue is climbing" : activeRow.trend === "down" ? "Revenue trend needs attention" : "Revenue is stable"}
472
- </p>
473
- </div>
474
- </div>
475
-
476
- <div className="grid gap-3">
477
- {[
478
- ["Status", activeRow.status],
479
- ["Items", String(activeRow.items)],
480
- ["Stock", String(activeRow.stock)],
481
- ["Updated", activeRow.updatedAt],
482
- ].map(([label, value]) => (
483
- <div key={label} className="flex items-center justify-between rounded-[18px] border border-[color:var(--aui-surface-border)] bg-[color:var(--aui-surface)] px-4 py-3">
484
- <span className="aui-text-muted text-sm">{label}</span>
485
- <span className="aui-text-strong text-sm font-medium">{value}</span>
486
- </div>
487
- ))}
488
- </div>
489
-
490
- <div className="rounded-[20px] border border-[color:var(--aui-surface-border)] bg-[color:var(--aui-surface)] p-4">
491
- <p className="aui-text-muted text-sm">Interaction coverage</p>
492
- <div className="mt-3 flex flex-wrap gap-2">
493
- <Badge variant="outline">Row click</Badge>
494
- <Badge variant="outline">Double click</Badge>
495
- <Badge variant="outline">Action menu</Badge>
496
- <Badge variant="outline">Mobile card</Badge>
497
- </div>
498
- <p className="aui-text-subtle mt-3 text-sm leading-6">
499
- This sheet shows a reusable row-detail pattern. The DataTable stays generic while the surrounding flow remains app-owned.
500
- </p>
501
- </div>
502
- </>
503
- ) : null}
504
- </SheetShell>
505
- </div>
506
- )
507
- }
@@ -1,25 +0,0 @@
1
- export type DataTableDemoRow = {
2
- invoice: string
3
- order: string
4
- customer: string
5
- owner: string
6
- channel: string
7
- status: "Paid" | "Review" | "Draft" | "Overdue"
8
- stock: number
9
- items: number
10
- amount: string
11
- amountValue: number
12
- trend: "up" | "down" | "steady"
13
- updatedAt: string
14
- }
15
-
16
- export type DataTableDemoToolbarAction = {
17
- label: string
18
- variant: "default" | "outline"
19
- }
20
-
21
- export type DataTableDemoPreset = {
22
- value: "all" | "finance" | "at-risk"
23
- label: string
24
- description: string
25
- }
@@ -1,11 +0,0 @@
1
- export const metricCards = [
2
- { label: "Revenue", value: "$24,780", note: "+12.8% from last week" },
3
- { label: "Customers", value: "1,429", note: "84 new this cycle" },
4
- { label: "Growth", value: "+12.8%", note: "Healthy activation curve" },
5
- ]
6
-
7
- export const activityItems = [
8
- "Design system tokens updated",
9
- "Table presets synchronized",
10
- "Release note draft created",
11
- ]
@@ -1,2 +0,0 @@
1
- export { DisplayFamilyShowcase } from "./showcase"
2
- export { displayFamilyMock } from "./mock"
@@ -1,18 +0,0 @@
1
- import type { FamilyDemoMock } from "../types"
2
-
3
- export const displayFamilyMock: FamilyDemoMock = {
4
- code: `import { MetricGrid, Timeline, ActivityFeed, Avatar } from "tembro"\n\nexport function Example() {\n return <MetricGrid />\n}`,
5
- highlights: ["Metric grids", "Timelines", "Activity feeds", "Status legends"],
6
- scenarios: [
7
- { title: "KPI dashboards", description: "Present summary metrics with clear information hierarchy." },
8
- { title: "Audit trails", description: "Track updates and system events in timeline form." },
9
- { title: "Context cards", description: "Pair avatar, status and description surfaces together." },
10
- ],
11
- metrics: [
12
- { label: "Exports", value: "10" },
13
- { label: "Display types", value: "5+" },
14
- { label: "Status", value: "Stable" },
15
- ],
16
- }
17
-
18
-