@devalok/shilp-sutra 0.34.1 → 0.36.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 (439) hide show
  1. package/LICENSE +21 -21
  2. package/dist/_chunks/badge-group.js +95 -95
  3. package/dist/_chunks/badge-group.js.map +1 -0
  4. package/dist/_chunks/chat.js +7 -2
  5. package/dist/_chunks/chat.js.map +1 -0
  6. package/dist/_chunks/date-picker.js.map +1 -0
  7. package/dist/_chunks/document-preview.js.map +1 -0
  8. package/dist/_chunks/file-preview.js.map +1 -0
  9. package/dist/_chunks/framer.js +62 -62
  10. package/dist/_chunks/framer.js.map +1 -0
  11. package/dist/_chunks/image-preview.js +1 -1
  12. package/dist/_chunks/image-preview.js.map +1 -0
  13. package/dist/_chunks/keybinding.js.map +1 -0
  14. package/dist/_chunks/link-context.js.map +1 -0
  15. package/dist/_chunks/mention-suggestion.js.map +1 -0
  16. package/dist/_chunks/motion-provider.js.map +1 -0
  17. package/dist/_chunks/popover.js +32 -36
  18. package/dist/_chunks/popover.js.map +1 -0
  19. package/dist/_chunks/primitives.js +686 -686
  20. package/dist/_chunks/primitives.js.map +1 -0
  21. package/dist/_chunks/rich-chat-input.js +650 -649
  22. package/dist/_chunks/rich-chat-input.js.map +1 -0
  23. package/dist/_chunks/shared.js.map +1 -0
  24. package/dist/_chunks/sonner.js.map +1 -0
  25. package/dist/_chunks/stat-row.js +158 -158
  26. package/dist/_chunks/stat-row.js.map +1 -0
  27. package/dist/_chunks/tiptap.js +11 -11
  28. package/dist/_chunks/tiptap.js.map +1 -0
  29. package/dist/_chunks/tree-view.js +1 -1
  30. package/dist/_chunks/tree-view.js.map +1 -0
  31. package/dist/_chunks/use-calendar.js.map +1 -0
  32. package/dist/_chunks/vendor-client.js +1 -1
  33. package/dist/_chunks/vendor-client.js.map +1 -0
  34. package/dist/_chunks/vendor-utils.js.map +1 -0
  35. package/dist/ai/ai-command-provider.js.map +1 -0
  36. package/dist/ai/block-renderer.js.map +1 -0
  37. package/dist/ai/blocks/loading.d.ts.map +1 -1
  38. package/dist/ai/command-bar.js.map +1 -0
  39. package/dist/ai/conversation.js +76 -76
  40. package/dist/ai/conversation.js.map +1 -0
  41. package/dist/ai/devadoot-icon.d.ts.map +1 -1
  42. package/dist/ai/index.js.map +1 -0
  43. package/dist/composed/activity-feed.js.map +1 -0
  44. package/dist/composed/avatar-group.js +1 -1
  45. package/dist/composed/avatar-group.js.map +1 -0
  46. package/dist/composed/bulk-action-bar.js +13 -21
  47. package/dist/composed/bulk-action-bar.js.map +1 -0
  48. package/dist/composed/command-palette.js.map +1 -0
  49. package/dist/composed/confirm-dialog.js.map +1 -0
  50. package/dist/composed/content-card.js.map +1 -0
  51. package/dist/composed/deadline-indicator.js.map +1 -0
  52. package/dist/composed/emoji-picker.js.map +1 -0
  53. package/dist/composed/empty-state.d.ts.map +1 -1
  54. package/dist/composed/empty-state.js +30 -30
  55. package/dist/composed/empty-state.js.map +1 -0
  56. package/dist/composed/error-boundary.js.map +1 -0
  57. package/dist/composed/filter-bar.js.map +1 -0
  58. package/dist/composed/form-section.js.map +1 -0
  59. package/dist/composed/global-loading.js.map +1 -0
  60. package/dist/composed/inline-edit.js.map +1 -0
  61. package/dist/composed/lib/string-utils.js.map +1 -0
  62. package/dist/composed/loading-skeleton.js.map +1 -0
  63. package/dist/composed/markdown-viewer.js.map +1 -0
  64. package/dist/composed/master-detail.js.map +1 -0
  65. package/dist/composed/member-picker.js.map +1 -0
  66. package/dist/composed/multi-select-popover.d.ts.map +1 -1
  67. package/dist/composed/multi-select-popover.js +4 -0
  68. package/dist/composed/multi-select-popover.js.map +1 -0
  69. package/dist/composed/page-header.js.map +1 -0
  70. package/dist/composed/page-skeletons.js.map +1 -0
  71. package/dist/composed/priority-indicator.js.map +1 -0
  72. package/dist/composed/responsive-overlay.js.map +1 -0
  73. package/dist/composed/rich-chat-input/attachment-strip.d.ts.map +1 -1
  74. package/dist/composed/rich-chat-input/reply-banner.d.ts.map +1 -1
  75. package/dist/composed/rich-chat-input/schedule-send.d.ts.map +1 -1
  76. package/dist/composed/rich-chat-input.d.ts.map +1 -1
  77. package/dist/composed/rich-text-editor.js.map +1 -0
  78. package/dist/composed/schedule-view.js.map +1 -0
  79. package/dist/composed/simple-tooltip.js.map +1 -0
  80. package/dist/composed/status-badge.d.ts.map +1 -1
  81. package/dist/composed/status-badge.js.map +1 -0
  82. package/dist/hooks/use-color-mode.js.map +1 -0
  83. package/dist/hooks/use-mobile.js.map +1 -0
  84. package/dist/hooks/use-touch-device.js.map +1 -0
  85. package/dist/hooks/use-viewport-height.js.map +1 -0
  86. package/dist/motion/check-motion-provider.d.ts +3 -0
  87. package/dist/motion/check-motion-provider.d.ts.map +1 -0
  88. package/dist/motion/index.js +14 -0
  89. package/dist/motion/index.js.map +1 -0
  90. package/dist/motion/primitives-index.js.map +1 -0
  91. package/dist/primitives/react-accordion.d.ts +114 -114
  92. package/dist/primitives/react-alert-dialog.d.ts +51 -51
  93. package/dist/primitives/react-aspect-ratio.d.ts +11 -11
  94. package/dist/primitives/react-avatar.d.ts +24 -24
  95. package/dist/primitives/react-checkbox.d.ts +50 -50
  96. package/dist/primitives/react-collapsible.d.ts +33 -33
  97. package/dist/primitives/react-context-menu.d.ts +96 -96
  98. package/dist/primitives/react-dialog.d.ts +103 -103
  99. package/dist/primitives/react-dropdown-menu.d.ts +97 -97
  100. package/dist/primitives/react-hover-card.d.ts +79 -79
  101. package/dist/primitives/react-label.d.ts +10 -10
  102. package/dist/primitives/react-menu.d.ts +169 -169
  103. package/dist/primitives/react-menubar.d.ts +115 -115
  104. package/dist/primitives/react-navigation-menu.d.ts +126 -126
  105. package/dist/primitives/react-popover.d.ts +85 -85
  106. package/dist/primitives/react-progress.d.ts +19 -19
  107. package/dist/primitives/react-radio-group.d.ts +58 -58
  108. package/dist/primitives/react-roving-focus.d.ts +49 -49
  109. package/dist/primitives/react-select.d.ts +137 -137
  110. package/dist/primitives/react-separator.d.ts +21 -21
  111. package/dist/primitives/react-slider.d.ts +75 -75
  112. package/dist/primitives/react-switch.d.ts +21 -21
  113. package/dist/primitives/react-tabs.d.ts +56 -56
  114. package/dist/primitives/react-toast.d.ts +120 -120
  115. package/dist/primitives/react-toggle-group.d.ts +75 -75
  116. package/dist/primitives/react-toggle.d.ts +24 -24
  117. package/dist/primitives/react-tooltip.d.ts +101 -101
  118. package/dist/primitives/react-visually-hidden.d.ts +22 -22
  119. package/dist/shell/app-command-palette.d.ts +2 -0
  120. package/dist/shell/app-command-palette.d.ts.map +1 -1
  121. package/dist/shell/app-command-palette.js +42 -155
  122. package/dist/shell/app-command-palette.js.map +1 -0
  123. package/dist/shell/bottom-navbar.js +1 -1
  124. package/dist/shell/bottom-navbar.js.map +1 -0
  125. package/dist/shell/command-registry.js.map +1 -0
  126. package/dist/shell/notification-center.d.ts.map +1 -1
  127. package/dist/shell/notification-center.js +194 -169
  128. package/dist/shell/notification-center.js.map +1 -0
  129. package/dist/shell/notification-preferences.js.map +1 -0
  130. package/dist/shell/sidebar.js.map +1 -0
  131. package/dist/shell/top-bar.js +1 -1
  132. package/dist/shell/top-bar.js.map +1 -0
  133. package/dist/tailwind/index.cjs +48 -1
  134. package/dist/tailwind/preset.d.ts.map +1 -1
  135. package/dist/tailwind/preset.js +48 -1
  136. package/dist/tailwind/preset.js.map +1 -0
  137. package/dist/tokens/index.css +4 -4
  138. package/dist/tokens/primitives.css +442 -442
  139. package/dist/tokens/semantic.css +742 -547
  140. package/dist/tokens/typography-semantic.css +123 -100
  141. package/dist/tokens/typography.css +422 -422
  142. package/dist/ui/accordion.js +13 -13
  143. package/dist/ui/accordion.js.map +1 -0
  144. package/dist/ui/alert-dialog.d.ts +6 -2
  145. package/dist/ui/alert-dialog.d.ts.map +1 -1
  146. package/dist/ui/alert-dialog.js +43 -42
  147. package/dist/ui/alert-dialog.js.map +1 -0
  148. package/dist/ui/alert.d.ts +3 -2
  149. package/dist/ui/alert.d.ts.map +1 -1
  150. package/dist/ui/alert.js +31 -5
  151. package/dist/ui/alert.js.map +1 -0
  152. package/dist/ui/aspect-ratio.js +1 -1
  153. package/dist/ui/aspect-ratio.js.map +1 -0
  154. package/dist/ui/autocomplete.d.ts.map +1 -1
  155. package/dist/ui/autocomplete.js +92 -67
  156. package/dist/ui/autocomplete.js.map +1 -0
  157. package/dist/ui/avatar.js +9 -9
  158. package/dist/ui/avatar.js.map +1 -0
  159. package/dist/ui/badge-indicator.js.map +1 -0
  160. package/dist/ui/banner.js.map +1 -0
  161. package/dist/ui/breadcrumb.js +1 -1
  162. package/dist/ui/breadcrumb.js.map +1 -0
  163. package/dist/ui/button-group.js.map +1 -0
  164. package/dist/ui/button-processing.d.ts.map +1 -1
  165. package/dist/ui/button-processing.js +61 -40
  166. package/dist/ui/button-processing.js.map +1 -0
  167. package/dist/ui/button.js +8 -8
  168. package/dist/ui/button.js.map +1 -0
  169. package/dist/ui/card.js.map +1 -0
  170. package/dist/ui/charts/bar-chart.d.ts.map +1 -1
  171. package/dist/ui/charts/chart-container.d.ts +2 -0
  172. package/dist/ui/charts/chart-container.d.ts.map +1 -1
  173. package/dist/ui/charts/index.js +88 -65
  174. package/dist/ui/charts/index.js.map +1 -0
  175. package/dist/ui/charts/line-chart.d.ts.map +1 -1
  176. package/dist/ui/chat/message-input.d.ts.map +1 -1
  177. package/dist/ui/chat/message-list.d.ts +1 -1
  178. package/dist/ui/chat/message-list.d.ts.map +1 -1
  179. package/dist/ui/chat/message.d.ts.map +1 -1
  180. package/dist/ui/chat/system-message.d.ts.map +1 -1
  181. package/dist/ui/checkbox.d.ts.map +1 -1
  182. package/dist/ui/checkbox.js +33 -28
  183. package/dist/ui/checkbox.js.map +1 -0
  184. package/dist/ui/code.js.map +1 -0
  185. package/dist/ui/collapsible.js +1 -1
  186. package/dist/ui/collapsible.js.map +1 -0
  187. package/dist/ui/color-input.d.ts.map +1 -1
  188. package/dist/ui/color-input.js +165 -163
  189. package/dist/ui/color-input.js.map +1 -0
  190. package/dist/ui/color-swatch.js.map +1 -0
  191. package/dist/ui/combobox.d.ts +7 -0
  192. package/dist/ui/combobox.d.ts.map +1 -1
  193. package/dist/ui/combobox.js +147 -113
  194. package/dist/ui/combobox.js.map +1 -0
  195. package/dist/ui/container.js +1 -1
  196. package/dist/ui/container.js.map +1 -0
  197. package/dist/ui/context-menu.js.map +1 -0
  198. package/dist/ui/data-table-body.js.map +1 -0
  199. package/dist/ui/data-table-bulk-actions.js +1 -1
  200. package/dist/ui/data-table-bulk-actions.js.map +1 -0
  201. package/dist/ui/data-table-card.js.map +1 -0
  202. package/dist/ui/data-table-context.js.map +1 -0
  203. package/dist/ui/data-table-header.js.map +1 -0
  204. package/dist/ui/data-table-pagination.js.map +1 -0
  205. package/dist/ui/data-table-toolbar.js.map +1 -0
  206. package/dist/ui/data-table.js +34 -31
  207. package/dist/ui/data-table.js.map +1 -0
  208. package/dist/ui/devalok-grain.js.map +1 -0
  209. package/dist/ui/dialog.js +31 -35
  210. package/dist/ui/dialog.js.map +1 -0
  211. package/dist/ui/dropdown-menu.js.map +1 -0
  212. package/dist/ui/file-upload.js +120 -120
  213. package/dist/ui/file-upload.js.map +1 -0
  214. package/dist/ui/form.d.ts +8 -0
  215. package/dist/ui/form.d.ts.map +1 -1
  216. package/dist/ui/form.js +14 -12
  217. package/dist/ui/form.js.map +1 -0
  218. package/dist/ui/hover-card.js.map +1 -0
  219. package/dist/ui/icon-button.js.map +1 -0
  220. package/dist/ui/icon-context.js.map +1 -0
  221. package/dist/ui/icon-group.js.map +1 -0
  222. package/dist/ui/icon.js.map +1 -0
  223. package/dist/ui/index.d.ts +4 -4
  224. package/dist/ui/index.d.ts.map +1 -1
  225. package/dist/ui/index.js +82 -66
  226. package/dist/ui/index.js.map +1 -0
  227. package/dist/ui/input-otp.d.ts +12 -3
  228. package/dist/ui/input-otp.d.ts.map +1 -1
  229. package/dist/ui/input-otp.js +41 -27
  230. package/dist/ui/input-otp.js.map +1 -0
  231. package/dist/ui/input.d.ts.map +1 -1
  232. package/dist/ui/input.js +16 -15
  233. package/dist/ui/input.js.map +1 -0
  234. package/dist/ui/label.d.ts.map +1 -1
  235. package/dist/ui/label.js +19 -14
  236. package/dist/ui/label.js.map +1 -0
  237. package/dist/ui/lib/check-tokens.d.ts +3 -0
  238. package/dist/ui/lib/check-tokens.d.ts.map +1 -0
  239. package/dist/ui/lib/date-utils.js.map +1 -0
  240. package/dist/ui/lib/motion.d.ts +15 -4
  241. package/dist/ui/lib/motion.d.ts.map +1 -1
  242. package/dist/ui/lib/motion.js +18 -9
  243. package/dist/ui/lib/motion.js.map +1 -0
  244. package/dist/ui/lib/utils.js.map +1 -0
  245. package/dist/ui/link.js +2 -2
  246. package/dist/ui/link.js.map +1 -0
  247. package/dist/ui/menubar.js.map +1 -0
  248. package/dist/ui/navigation-menu.js.map +1 -0
  249. package/dist/ui/number-input.d.ts +16 -1
  250. package/dist/ui/number-input.d.ts.map +1 -1
  251. package/dist/ui/number-input.js +79 -49
  252. package/dist/ui/number-input.js.map +1 -0
  253. package/dist/ui/pagination.js +1 -1
  254. package/dist/ui/pagination.js.map +1 -0
  255. package/dist/ui/progress-ring.d.ts.map +1 -1
  256. package/dist/ui/progress-ring.js.map +1 -0
  257. package/dist/ui/progress.js.map +1 -0
  258. package/dist/ui/radio.d.ts.map +1 -1
  259. package/dist/ui/radio.js +27 -20
  260. package/dist/ui/radio.js.map +1 -0
  261. package/dist/ui/search-input.js.map +1 -0
  262. package/dist/ui/segmented-control.d.ts +1 -1
  263. package/dist/ui/segmented-control.d.ts.map +1 -1
  264. package/dist/ui/segmented-control.js +2 -0
  265. package/dist/ui/segmented-control.js.map +1 -0
  266. package/dist/ui/select.d.ts.map +1 -1
  267. package/dist/ui/select.js +54 -48
  268. package/dist/ui/select.js.map +1 -0
  269. package/dist/ui/separator.d.ts.map +1 -1
  270. package/dist/ui/separator.js +10 -7
  271. package/dist/ui/separator.js.map +1 -0
  272. package/dist/ui/sheet.js +29 -29
  273. package/dist/ui/sheet.js.map +1 -0
  274. package/dist/ui/sidebar.js +7 -7
  275. package/dist/ui/sidebar.js.map +1 -0
  276. package/dist/ui/skeleton.js.map +1 -0
  277. package/dist/ui/slider.d.ts +22 -3
  278. package/dist/ui/slider.d.ts.map +1 -1
  279. package/dist/ui/slider.js +57 -19
  280. package/dist/ui/slider.js.map +1 -0
  281. package/dist/ui/spinner.js.map +1 -0
  282. package/dist/ui/split-button.d.ts.map +1 -1
  283. package/dist/ui/split-button.js +77 -76
  284. package/dist/ui/split-button.js.map +1 -0
  285. package/dist/ui/stack.js.map +1 -0
  286. package/dist/ui/stat-card.js.map +1 -0
  287. package/dist/ui/status-dot.js.map +1 -0
  288. package/dist/ui/stepper.d.ts +10 -0
  289. package/dist/ui/stepper.d.ts.map +1 -1
  290. package/dist/ui/stepper.js +80 -75
  291. package/dist/ui/stepper.js.map +1 -0
  292. package/dist/ui/switch.d.ts.map +1 -1
  293. package/dist/ui/switch.js +26 -22
  294. package/dist/ui/switch.js.map +1 -0
  295. package/dist/ui/table.js.map +1 -0
  296. package/dist/ui/tabs.d.ts +3 -1
  297. package/dist/ui/tabs.d.ts.map +1 -1
  298. package/dist/ui/tabs.js +68 -48
  299. package/dist/ui/tabs.js.map +1 -0
  300. package/dist/ui/text.d.ts +1 -1
  301. package/dist/ui/text.d.ts.map +1 -1
  302. package/dist/ui/text.js +10 -2
  303. package/dist/ui/text.js.map +1 -0
  304. package/dist/ui/textarea.js +1 -1
  305. package/dist/ui/textarea.js.map +1 -0
  306. package/dist/ui/toast-registry.d.ts +8 -0
  307. package/dist/ui/toast-registry.d.ts.map +1 -0
  308. package/dist/ui/toast-registry.js +13 -0
  309. package/dist/ui/toast-registry.js.map +1 -0
  310. package/dist/ui/toast.d.ts.map +1 -1
  311. package/dist/ui/toast.js +141 -136
  312. package/dist/ui/toast.js.map +1 -0
  313. package/dist/ui/toaster.d.ts.map +1 -1
  314. package/dist/ui/toaster.js +15 -14
  315. package/dist/ui/toaster.js.map +1 -0
  316. package/dist/ui/toggle-group.d.ts +2 -0
  317. package/dist/ui/toggle-group.d.ts.map +1 -1
  318. package/dist/ui/toggle-group.js +23 -16
  319. package/dist/ui/toggle-group.js.map +1 -0
  320. package/dist/ui/toggle.d.ts +2 -0
  321. package/dist/ui/toggle.d.ts.map +1 -1
  322. package/dist/ui/toggle.js +14 -6
  323. package/dist/ui/toggle.js.map +1 -0
  324. package/dist/ui/tooltip.js.map +1 -0
  325. package/dist/ui/visually-hidden.js.map +1 -0
  326. package/docs/components/_header.md +85 -85
  327. package/docs/components/composed/activity-feed.md +62 -62
  328. package/docs/components/composed/avatar-group.md +65 -65
  329. package/docs/components/composed/bulk-action-bar.md +40 -40
  330. package/docs/components/composed/command-palette.md +40 -40
  331. package/docs/components/composed/confirm-dialog.md +46 -46
  332. package/docs/components/composed/content-card.md +36 -36
  333. package/docs/components/composed/date-picker.md +130 -130
  334. package/docs/components/composed/deadline-indicator.md +27 -27
  335. package/docs/components/composed/emoji-picker.md +52 -52
  336. package/docs/components/composed/empty-state.md +53 -53
  337. package/docs/components/composed/error-boundary.md +29 -29
  338. package/docs/components/composed/file-preview.md +40 -40
  339. package/docs/components/composed/filter-bar.md +57 -57
  340. package/docs/components/composed/form-section.md +31 -31
  341. package/docs/components/composed/global-loading.md +27 -27
  342. package/docs/components/composed/inline-edit.md +35 -35
  343. package/docs/components/composed/loading-skeleton.md +51 -51
  344. package/docs/components/composed/markdown-viewer.md +27 -27
  345. package/docs/components/composed/master-detail.md +48 -48
  346. package/docs/components/composed/member-picker.md +35 -35
  347. package/docs/components/composed/multi-select-popover.md +62 -62
  348. package/docs/components/composed/page-header.md +41 -41
  349. package/docs/components/composed/page-skeletons.md +32 -32
  350. package/docs/components/composed/priority-indicator.md +32 -32
  351. package/docs/components/composed/responsive-overlay.md +34 -34
  352. package/docs/components/composed/rich-text-editor.md +82 -82
  353. package/docs/components/composed/schedule-view.md +39 -39
  354. package/docs/components/composed/simple-tooltip.md +33 -33
  355. package/docs/components/composed/status-badge.md +55 -55
  356. package/docs/components/shell/app-command-palette.md +44 -44
  357. package/docs/components/shell/bottom-navbar.md +52 -52
  358. package/docs/components/shell/command-registry.md +48 -48
  359. package/docs/components/shell/link-context.md +41 -41
  360. package/docs/components/shell/notification-center.md +63 -63
  361. package/docs/components/shell/notification-preferences.md +42 -42
  362. package/docs/components/shell/sidebar.md +92 -92
  363. package/docs/components/shell/top-bar.md +143 -143
  364. package/docs/components/ui/accordion.md +51 -51
  365. package/docs/components/ui/alert-dialog.md +61 -61
  366. package/docs/components/ui/alert.md +46 -46
  367. package/docs/components/ui/aspect-ratio.md +25 -25
  368. package/docs/components/ui/autocomplete.md +48 -48
  369. package/docs/components/ui/avatar.md +56 -56
  370. package/docs/components/ui/badge.md +83 -82
  371. package/docs/components/ui/banner.md +42 -42
  372. package/docs/components/ui/breadcrumb.md +37 -37
  373. package/docs/components/ui/button-group.md +41 -41
  374. package/docs/components/ui/button.md +94 -93
  375. package/docs/components/ui/card.md +52 -52
  376. package/docs/components/ui/charts.md +43 -43
  377. package/docs/components/ui/checkbox.md +36 -36
  378. package/docs/components/ui/chip.md +47 -47
  379. package/docs/components/ui/code.md +28 -28
  380. package/docs/components/ui/collapsible.md +40 -40
  381. package/docs/components/ui/color-input.md +91 -91
  382. package/docs/components/ui/color-swatch.md +25 -25
  383. package/docs/components/ui/combobox.md +54 -54
  384. package/docs/components/ui/container.md +26 -26
  385. package/docs/components/ui/context-menu.md +43 -43
  386. package/docs/components/ui/data-table-body.md +1 -1
  387. package/docs/components/ui/data-table-bulk-actions.md +1 -1
  388. package/docs/components/ui/data-table-card.md +1 -1
  389. package/docs/components/ui/data-table-context.md +1 -1
  390. package/docs/components/ui/data-table-header.md +1 -1
  391. package/docs/components/ui/data-table-pagination.md +1 -1
  392. package/docs/components/ui/data-table-toolbar.md +44 -44
  393. package/docs/components/ui/data-table.md +94 -94
  394. package/docs/components/ui/dialog.md +54 -54
  395. package/docs/components/ui/dropdown-menu.md +48 -48
  396. package/docs/components/ui/file-upload.md +41 -41
  397. package/docs/components/ui/form.md +51 -51
  398. package/docs/components/ui/hover-card.md +32 -32
  399. package/docs/components/ui/icon-button.md +40 -40
  400. package/docs/components/ui/input-otp.md +44 -44
  401. package/docs/components/ui/input.md +74 -74
  402. package/docs/components/ui/label.md +25 -25
  403. package/docs/components/ui/link.md +29 -29
  404. package/docs/components/ui/menubar.md +44 -44
  405. package/docs/components/ui/navigation-menu.md +46 -46
  406. package/docs/components/ui/number-input.md +44 -44
  407. package/docs/components/ui/pagination.md +48 -48
  408. package/docs/components/ui/popover.md +30 -30
  409. package/docs/components/ui/progress-ring.md +41 -41
  410. package/docs/components/ui/progress.md +34 -34
  411. package/docs/components/ui/radio.md +34 -34
  412. package/docs/components/ui/search-input.md +43 -43
  413. package/docs/components/ui/segmented-control.md +50 -50
  414. package/docs/components/ui/select.md +53 -53
  415. package/docs/components/ui/separator.md +32 -32
  416. package/docs/components/ui/sheet.md +47 -47
  417. package/docs/components/ui/sidebar.md +72 -72
  418. package/docs/components/ui/skeleton.md +77 -77
  419. package/docs/components/ui/slider.md +29 -29
  420. package/docs/components/ui/spinner.md +54 -54
  421. package/docs/components/ui/stack.md +39 -39
  422. package/docs/components/ui/stat-card.md +61 -61
  423. package/docs/components/ui/status-dot.md +26 -26
  424. package/docs/components/ui/stepper.md +49 -49
  425. package/docs/components/ui/switch.md +47 -47
  426. package/docs/components/ui/table.md +47 -47
  427. package/docs/components/ui/tabs.md +60 -60
  428. package/docs/components/ui/text.md +37 -37
  429. package/docs/components/ui/textarea.md +39 -39
  430. package/docs/components/ui/toast.md +65 -65
  431. package/docs/components/ui/toaster.md +47 -47
  432. package/docs/components/ui/toggle-group.md +43 -43
  433. package/docs/components/ui/toggle.md +37 -37
  434. package/docs/components/ui/tooltip.md +38 -38
  435. package/docs/components/ui/tree-view.md +65 -65
  436. package/docs/components/ui/visually-hidden.md +21 -21
  437. package/llms-full.txt +5266 -5264
  438. package/llms.txt +624 -580
  439. package/package.json +7 -8
@@ -1,62 +1,62 @@
1
- # ActivityFeed
2
-
3
- - Import: @devalok/shilp-sutra/composed/activity-feed
4
- - Server-safe: No
5
- - Category: composed
6
-
7
- ## Props
8
- items: ActivityItem[] (REQUIRED) — { id, actor?: { name, image? }, action: string|ReactNode, timestamp: Date|string, icon?, color?: 'default'|'success'|'warning'|'error'|'info', detail?: ReactNode }
9
- onLoadMore?: () => void — "Load more" button callback
10
- loading: boolean — skeleton shimmer
11
- hasMore?: boolean — shows "Load more" button
12
- emptyState?: ReactNode — empty state content
13
- compact: boolean — tighter spacing, no avatars, smaller text
14
- maxInitialItems: number — truncate with "Show all (N)" toggle
15
- groupBy?: 'time' | 'none' — group items by time buckets (today, yesterday, this week, older)
16
- groupLabels?: GroupLabels — custom labels for time groups: { today?, yesterday?, thisWeek?, older? }
17
- renderItem?: (item: ActivityItem, index: number) => ReactNode | undefined — custom renderer per item; return undefined to fall back to default ActivityEntry
18
-
19
- ## Defaults
20
- loading=false, compact=false, hasMore=false, groupBy='none'
21
-
22
- ## Example
23
- ```jsx
24
- <ActivityFeed
25
- items={[
26
- { id: '1', actor: { name: 'Alice' }, action: 'completed task', timestamp: new Date(), color: 'success' },
27
- { id: '2', action: 'System backup completed', timestamp: new Date(), detail: <pre>Details...</pre> },
28
- ]}
29
- hasMore
30
- onLoadMore={() => fetchMore()}
31
- compact
32
- />
33
- ```
34
-
35
- ## Exported Utilities
36
- groupItemsByTime(items: ActivityItem[], labels?: GroupLabels) — pure function that buckets items into time groups; returns { label: string, items: ActivityItem[] }[]
37
-
38
- ## Gotchas
39
- - `items` is required — passing an empty array renders the `emptyState` content
40
- - `color` on each item controls the timeline dot color
41
- - `actor.image` is optional — falls back to initials from `actor.name`
42
- - `maxInitialItems` truncates with a "Show all (N)" toggle button
43
- - `maxInitialItems` applies to the flat list BEFORE grouping — items are sliced first, then grouped
44
- - Empty time groups are automatically skipped
45
- - `renderItem` receives the item and index; return `undefined` to use the default ActivityEntry rendering
46
- - Custom `renderItem` content is wrapped in the same dot + layout container as default entries for consistent vertical rhythm
47
-
48
- ## Changes
49
- ### v0.29.0
50
- - **Added** `renderItem` prop — custom render function per item; return ReactNode for custom rendering, return `undefined` to fall back to default ActivityEntry
51
- - **Added** Internal `CustomEntry` wrapper that keeps dot + layout consistent with default entries
52
-
53
- ### v0.20.0
54
- - **Added** `groupBy="time"` prop — groups items into Today, Yesterday, This Week, Older with section headers
55
- - **Added** `groupLabels` prop for custom group label text
56
- - **Added** `groupItemsByTime()` exported pure utility function
57
-
58
- ### v0.18.0
59
- - **Fixed** `bg-accent-9` changed to `bg-info-9` (info color, not accent)
60
-
61
- ### v0.16.0
62
- - **Added** Initial release — vertical timeline with colored dots, actor avatars, expandable detail, compact mode, load more, maxInitialItems truncation
1
+ # ActivityFeed
2
+
3
+ - Import: @devalok/shilp-sutra/composed/activity-feed
4
+ - Server-safe: No
5
+ - Category: composed
6
+
7
+ ## Props
8
+ items: ActivityItem[] (REQUIRED) — { id, actor?: { name, image? }, action: string|ReactNode, timestamp: Date|string, icon?, color?: 'default'|'success'|'warning'|'error'|'info', detail?: ReactNode }
9
+ onLoadMore?: () => void — "Load more" button callback
10
+ loading: boolean — skeleton shimmer
11
+ hasMore?: boolean — shows "Load more" button
12
+ emptyState?: ReactNode — empty state content
13
+ compact: boolean — tighter spacing, no avatars, smaller text
14
+ maxInitialItems: number — truncate with "Show all (N)" toggle
15
+ groupBy?: 'time' | 'none' — group items by time buckets (today, yesterday, this week, older)
16
+ groupLabels?: GroupLabels — custom labels for time groups: { today?, yesterday?, thisWeek?, older? }
17
+ renderItem?: (item: ActivityItem, index: number) => ReactNode | undefined — custom renderer per item; return undefined to fall back to default ActivityEntry
18
+
19
+ ## Defaults
20
+ loading=false, compact=false, hasMore=false, groupBy='none'
21
+
22
+ ## Example
23
+ ```jsx
24
+ <ActivityFeed
25
+ items={[
26
+ { id: '1', actor: { name: 'Alice' }, action: 'completed task', timestamp: new Date(), color: 'success' },
27
+ { id: '2', action: 'System backup completed', timestamp: new Date(), detail: <pre>Details...</pre> },
28
+ ]}
29
+ hasMore
30
+ onLoadMore={() => fetchMore()}
31
+ compact
32
+ />
33
+ ```
34
+
35
+ ## Exported Utilities
36
+ groupItemsByTime(items: ActivityItem[], labels?: GroupLabels) — pure function that buckets items into time groups; returns { label: string, items: ActivityItem[] }[]
37
+
38
+ ## Gotchas
39
+ - `items` is required — passing an empty array renders the `emptyState` content
40
+ - `color` on each item controls the timeline dot color
41
+ - `actor.image` is optional — falls back to initials from `actor.name`
42
+ - `maxInitialItems` truncates with a "Show all (N)" toggle button
43
+ - `maxInitialItems` applies to the flat list BEFORE grouping — items are sliced first, then grouped
44
+ - Empty time groups are automatically skipped
45
+ - `renderItem` receives the item and index; return `undefined` to use the default ActivityEntry rendering
46
+ - Custom `renderItem` content is wrapped in the same dot + layout container as default entries for consistent vertical rhythm
47
+
48
+ ## Changes
49
+ ### v0.29.0
50
+ - **Added** `renderItem` prop — custom render function per item; return ReactNode for custom rendering, return `undefined` to fall back to default ActivityEntry
51
+ - **Added** Internal `CustomEntry` wrapper that keeps dot + layout consistent with default entries
52
+
53
+ ### v0.20.0
54
+ - **Added** `groupBy="time"` prop — groups items into Today, Yesterday, This Week, Older with section headers
55
+ - **Added** `groupLabels` prop for custom group label text
56
+ - **Added** `groupItemsByTime()` exported pure utility function
57
+
58
+ ### v0.18.0
59
+ - **Fixed** `bg-accent-9` changed to `bg-info-9` (info color, not accent)
60
+
61
+ ### v0.16.0
62
+ - **Added** Initial release — vertical timeline with colored dots, actor avatars, expandable detail, compact mode, load more, maxInitialItems truncation
@@ -1,65 +1,65 @@
1
- # AvatarGroup
2
-
3
- - Import: @devalok/shilp-sutra/composed/avatar-group
4
- - Server-safe: No
5
- - Category: composed
6
-
7
- ## Props
8
- users: AvatarUser[] (REQUIRED) — { name: string, image?: string | null, ring?: AvatarRing }
9
- max: number (default: 4, overflow shows "+N" badge)
10
- size: "xs" | "sm" | "md" | "lg" | "xl"
11
- showTooltip: boolean (default: true)
12
- borderColor: "surface-base" | "surface-raised" (default: "surface-raised") — overlap border color
13
- onOverflowClick: () => void — makes the "+N" badge interactive (button)
14
- renderAvatar: (user: AvatarUser, index: number) => ReactNode — custom avatar render
15
- expandDirection: "left" | "right" (default: "right") — direction group expands on hover
16
- expandAmount: "compact" | "default" | "wide" (default: "default") — how far group spreads
17
-
18
- ## AvatarUser Type
19
- name: string (REQUIRED)
20
- image?: string | null
21
- ring?: "none" | "lead" | "admin" | "client" — role ring per user in group
22
- indicator?: "lead" | "admin" | ReactNode — small dot indicator at top-right of avatar
23
-
24
- ## Defaults
25
- size="md", max=4, showTooltip=true, borderColor="surface-raised", expandDirection="right", expandAmount="default"
26
-
27
- ## Example
28
- ```jsx
29
- <AvatarGroup
30
- users={[
31
- { name: 'Alice', image: '/alice.jpg', ring: 'lead' },
32
- { name: 'Bob', ring: 'admin' },
33
- ]}
34
- max={3}
35
- size="md"
36
- borderColor="surface-base"
37
- onOverflowClick={() => setShowAll(true)}
38
- />
39
- ```
40
-
41
- ## Gotchas
42
- - Wraps TooltipProvider internally — no need to add one yourself
43
- - Users beyond `max` are collapsed into a "+N" overflow badge
44
- - Missing `image` falls back to initials derived from `name`
45
- - Hover expand animation uses CSS `group-hover` — parent must not clip overflow
46
- - `borderColor` should match the surface the group sits on (`surface-base` on page bg, `surface-raised` on cards)
47
- - `renderAvatar` wrapper is positioning-only — pass `size` directly to your Avatar (do NOT use `className="h-full w-full"`)
48
-
49
- ## Changes
50
- ### v0.29.0
51
- - **Added** `indicator` prop on AvatarUser: `"lead"` (warning dot) | `"admin"` (accent dot) | ReactNode (custom indicator) — animated dot at the top-right corner of each avatar
52
-
53
- ### v0.22.3
54
- - **Fixed** `renderAvatar` wrapper no longer clips consumer Avatar content (removed overflow-hidden, border, and size classes from wrapper)
55
- - **Fixed** Removed redundant text-size classes from wrapper — Avatar handles font scaling internally
56
-
57
- ### v0.21.0
58
- - **Added** `xs` and `xl` size variants
59
- - **Added** `borderColor` prop for overlap border matching surface context
60
- - **Added** `onOverflowClick` prop making the overflow badge an interactive button
61
- - **Added** `renderAvatar` prop for custom per-avatar rendering
62
- - **Added** `AvatarUser.ring` field for per-user role rings in groups
63
-
64
- ### v0.1.0
65
- - **Added** Initial release
1
+ # AvatarGroup
2
+
3
+ - Import: @devalok/shilp-sutra/composed/avatar-group
4
+ - Server-safe: No
5
+ - Category: composed
6
+
7
+ ## Props
8
+ users: AvatarUser[] (REQUIRED) — { name: string, image?: string | null, ring?: AvatarRing }
9
+ max: number (default: 4, overflow shows "+N" badge)
10
+ size: "xs" | "sm" | "md" | "lg" | "xl"
11
+ showTooltip: boolean (default: true)
12
+ borderColor: "surface-base" | "surface-raised" (default: "surface-raised") — overlap border color
13
+ onOverflowClick: () => void — makes the "+N" badge interactive (button)
14
+ renderAvatar: (user: AvatarUser, index: number) => ReactNode — custom avatar render
15
+ expandDirection: "left" | "right" (default: "right") — direction group expands on hover
16
+ expandAmount: "compact" | "default" | "wide" (default: "default") — how far group spreads
17
+
18
+ ## AvatarUser Type
19
+ name: string (REQUIRED)
20
+ image?: string | null
21
+ ring?: "none" | "lead" | "admin" | "client" — role ring per user in group
22
+ indicator?: "lead" | "admin" | ReactNode — small dot indicator at top-right of avatar
23
+
24
+ ## Defaults
25
+ size="md", max=4, showTooltip=true, borderColor="surface-raised", expandDirection="right", expandAmount="default"
26
+
27
+ ## Example
28
+ ```jsx
29
+ <AvatarGroup
30
+ users={[
31
+ { name: 'Alice', image: '/alice.jpg', ring: 'lead' },
32
+ { name: 'Bob', ring: 'admin' },
33
+ ]}
34
+ max={3}
35
+ size="md"
36
+ borderColor="surface-base"
37
+ onOverflowClick={() => setShowAll(true)}
38
+ />
39
+ ```
40
+
41
+ ## Gotchas
42
+ - Wraps TooltipProvider internally — no need to add one yourself
43
+ - Users beyond `max` are collapsed into a "+N" overflow badge
44
+ - Missing `image` falls back to initials derived from `name`
45
+ - Hover expand animation uses CSS `group-hover` — parent must not clip overflow
46
+ - `borderColor` should match the surface the group sits on (`surface-base` on page bg, `surface-raised` on cards)
47
+ - `renderAvatar` wrapper is positioning-only — pass `size` directly to your Avatar (do NOT use `className="h-full w-full"`)
48
+
49
+ ## Changes
50
+ ### v0.29.0
51
+ - **Added** `indicator` prop on AvatarUser: `"lead"` (warning dot) | `"admin"` (accent dot) | ReactNode (custom indicator) — animated dot at the top-right corner of each avatar
52
+
53
+ ### v0.22.3
54
+ - **Fixed** `renderAvatar` wrapper no longer clips consumer Avatar content (removed overflow-hidden, border, and size classes from wrapper)
55
+ - **Fixed** Removed redundant text-size classes from wrapper — Avatar handles font scaling internally
56
+
57
+ ### v0.21.0
58
+ - **Added** `xs` and `xl` size variants
59
+ - **Added** `borderColor` prop for overlap border matching surface context
60
+ - **Added** `onOverflowClick` prop making the overflow badge an interactive button
61
+ - **Added** `renderAvatar` prop for custom per-avatar rendering
62
+ - **Added** `AvatarUser.ring` field for per-user role rings in groups
63
+
64
+ ### v0.1.0
65
+ - **Added** Initial release
@@ -1,40 +1,40 @@
1
- # BulkActionBar
2
-
3
- - Import: @devalok/shilp-sutra/composed/bulk-action-bar
4
- - Server-safe: No
5
- - Category: composed
6
-
7
- ## Props
8
- show: boolean (controls visibility)
9
- count: number (number of selected items — displayed in badge)
10
- onClearSelection: () => void
11
- actions: BulkActionBarAction[]
12
- className: string
13
-
14
- ### BulkActionBarAction
15
- label: string
16
- icon: ComponentType<{ className?: string }> (optional icon component)
17
- onClick: () => void
18
- color: "default" | "error"
19
- disabled: boolean
20
-
21
- ## Defaults
22
- (no optional props with defaults)
23
-
24
- ## Example
25
- ```jsx
26
- <BulkActionBar
27
- show={selected.length > 0}
28
- count={selected.length}
29
- onClearSelection={() => setSelected([])}
30
- actions={[
31
- { label: 'Archive', icon: IconArchive, onClick: archiveSelected },
32
- { label: 'Delete', icon: IconTrash, onClick: deleteSelected, color: 'error' },
33
- ]}
34
- />
35
- ```
36
-
37
- ## Gotchas
38
- - Renders via `createPortal` into `document.body` — will not appear during SSR (mounts only client-side)
39
- - Positioned fixed at bottom-center with `z-50`; ensure no other fixed elements conflict
40
- - Uses Framer Motion AnimatePresence for slide-in/out animation
1
+ # BulkActionBar
2
+
3
+ - Import: @devalok/shilp-sutra/composed/bulk-action-bar
4
+ - Server-safe: No
5
+ - Category: composed
6
+
7
+ ## Props
8
+ show: boolean (controls visibility)
9
+ count: number (number of selected items — displayed in badge)
10
+ onClearSelection: () => void
11
+ actions: BulkActionBarAction[]
12
+ className: string
13
+
14
+ ### BulkActionBarAction
15
+ label: string
16
+ icon: ComponentType<{ className?: string }> (optional icon component)
17
+ onClick: () => void
18
+ color: "default" | "error"
19
+ disabled: boolean
20
+
21
+ ## Defaults
22
+ (no optional props with defaults)
23
+
24
+ ## Example
25
+ ```jsx
26
+ <BulkActionBar
27
+ show={selected.length > 0}
28
+ count={selected.length}
29
+ onClearSelection={() => setSelected([])}
30
+ actions={[
31
+ { label: 'Archive', icon: IconArchive, onClick: archiveSelected },
32
+ { label: 'Delete', icon: IconTrash, onClick: deleteSelected, color: 'error' },
33
+ ]}
34
+ />
35
+ ```
36
+
37
+ ## Gotchas
38
+ - Renders via `createPortal` into `document.body` — will not appear during SSR (mounts only client-side)
39
+ - Positioned fixed at bottom-center with `z-50`; ensure no other fixed elements conflict
40
+ - Uses Framer Motion AnimatePresence for slide-in/out animation
@@ -1,40 +1,40 @@
1
- # CommandPalette
2
-
3
- - Import: @devalok/shilp-sutra/composed/command-palette
4
- - Server-safe: No
5
- - Category: composed
6
-
7
- ## Props
8
- groups?: CommandGroup[] (default: []) — { label: string, items: CommandItem[] }
9
- placeholder: string (default: "Search or jump to...")
10
- onSearch: (query: string) => void
11
- emptyMessage: string (default: "No results found.")
12
-
13
- CommandItem shape: { id, label, description?, icon?, shortcut?, onSelect: () => void }
14
-
15
- ## Defaults
16
- placeholder="Search or jump to...", emptyMessage="No results found.", groups=[]
17
-
18
- ## Example
19
- ```jsx
20
- <CommandPalette
21
- groups={[{
22
- label: 'Navigation',
23
- items: [{ id: 'dash', label: 'Dashboard', onSelect: () => navigate('/') }],
24
- }]}
25
- />
26
- ```
27
-
28
- ## Gotchas
29
- - Opens with Ctrl+K / Cmd+K by default
30
- - Items animate in with staggered slide-up (30ms delay cascade); groups fade in; active item icon/shortcut highlight in interactive color (v0.15.0)
31
-
32
- ## Changes
33
- ### v0.15.0
34
- - **Added** Staggered slide-up entrance animations for items, fade-in for groups/empty state/footer, scale-in for search icon, active item icon/shortcut color transitions
35
-
36
- ### v0.8.0
37
- - **Added** Full ARIA combobox pattern (`role="combobox"`, `aria-expanded`, `aria-activedescendant`)
38
-
39
- ### v0.1.0
40
- - **Added** Initial release
1
+ # CommandPalette
2
+
3
+ - Import: @devalok/shilp-sutra/composed/command-palette
4
+ - Server-safe: No
5
+ - Category: composed
6
+
7
+ ## Props
8
+ groups?: CommandGroup[] (default: []) — { label: string, items: CommandItem[] }
9
+ placeholder: string (default: "Search or jump to...")
10
+ onSearch: (query: string) => void
11
+ emptyMessage: string (default: "No results found.")
12
+
13
+ CommandItem shape: { id, label, description?, icon?, shortcut?, onSelect: () => void }
14
+
15
+ ## Defaults
16
+ placeholder="Search or jump to...", emptyMessage="No results found.", groups=[]
17
+
18
+ ## Example
19
+ ```jsx
20
+ <CommandPalette
21
+ groups={[{
22
+ label: 'Navigation',
23
+ items: [{ id: 'dash', label: 'Dashboard', onSelect: () => navigate('/') }],
24
+ }]}
25
+ />
26
+ ```
27
+
28
+ ## Gotchas
29
+ - Opens with Ctrl+K / Cmd+K by default
30
+ - Items animate in with staggered slide-up (30ms delay cascade); groups fade in; active item icon/shortcut highlight in interactive color (v0.15.0)
31
+
32
+ ## Changes
33
+ ### v0.15.0
34
+ - **Added** Staggered slide-up entrance animations for items, fade-in for groups/empty state/footer, scale-in for search icon, active item icon/shortcut color transitions
35
+
36
+ ### v0.8.0
37
+ - **Added** Full ARIA combobox pattern (`role="combobox"`, `aria-expanded`, `aria-activedescendant`)
38
+
39
+ ### v0.1.0
40
+ - **Added** Initial release
@@ -1,46 +1,46 @@
1
- # ConfirmDialog
2
-
3
- - Import: @devalok/shilp-sutra/composed/confirm-dialog
4
- - Server-safe: No
5
- - Category: composed
6
-
7
- ## Props
8
- open: boolean (REQUIRED, controlled)
9
- onOpenChange: (open: boolean) => void (REQUIRED)
10
- title: string (REQUIRED)
11
- description: string (REQUIRED)
12
- confirmText: string (default: "Confirm")
13
- cancelText: string (default: "Cancel")
14
- color: "default" | "error" (controls confirm button color)
15
- loading: boolean (default: false, disables buttons and replaces confirm button text with 'Processing...')
16
- onConfirm: () => void | Promise<void> (REQUIRED)
17
-
18
- ## Defaults
19
- confirmText="Confirm", cancelText="Cancel", color="default", loading=false
20
-
21
- ## Example
22
- ```jsx
23
- const [open, setOpen] = useState(false)
24
- <ConfirmDialog
25
- open={open}
26
- onOpenChange={setOpen}
27
- title="Delete project?"
28
- description="This action cannot be undone."
29
- color="error"
30
- confirmText="Delete"
31
- loading={isDeleting}
32
- onConfirm={async () => { await deleteProject(); setOpen(false) }}
33
- />
34
- ```
35
-
36
- ## Gotchas
37
- - Dialog stays open after confirm — consumer must close it via `onOpenChange`
38
- - Built on AlertDialog internally
39
- - Fully controlled — `open` and `onOpenChange` are required
40
-
41
- ## Changes
42
- ### v0.18.0
43
- - **Fixed** Converted to `forwardRef` pattern
44
-
45
- ### v0.1.0
46
- - **Added** Initial release
1
+ # ConfirmDialog
2
+
3
+ - Import: @devalok/shilp-sutra/composed/confirm-dialog
4
+ - Server-safe: No
5
+ - Category: composed
6
+
7
+ ## Props
8
+ open: boolean (REQUIRED, controlled)
9
+ onOpenChange: (open: boolean) => void (REQUIRED)
10
+ title: string (REQUIRED)
11
+ description: string (REQUIRED)
12
+ confirmText: string (default: "Confirm")
13
+ cancelText: string (default: "Cancel")
14
+ color: "default" | "error" (controls confirm button color)
15
+ loading: boolean (default: false, disables buttons and replaces confirm button text with 'Processing...')
16
+ onConfirm: () => void | Promise<void> (REQUIRED)
17
+
18
+ ## Defaults
19
+ confirmText="Confirm", cancelText="Cancel", color="default", loading=false
20
+
21
+ ## Example
22
+ ```jsx
23
+ const [open, setOpen] = useState(false)
24
+ <ConfirmDialog
25
+ open={open}
26
+ onOpenChange={setOpen}
27
+ title="Delete project?"
28
+ description="This action cannot be undone."
29
+ color="error"
30
+ confirmText="Delete"
31
+ loading={isDeleting}
32
+ onConfirm={async () => { await deleteProject(); setOpen(false) }}
33
+ />
34
+ ```
35
+
36
+ ## Gotchas
37
+ - Dialog stays open after confirm — consumer must close it via `onOpenChange`
38
+ - Built on AlertDialog internally
39
+ - Fully controlled — `open` and `onOpenChange` are required
40
+
41
+ ## Changes
42
+ ### v0.18.0
43
+ - **Fixed** Converted to `forwardRef` pattern
44
+
45
+ ### v0.1.0
46
+ - **Added** Initial release
@@ -1,36 +1,36 @@
1
- # ContentCard
2
-
3
- - Import: @devalok/shilp-sutra/composed/content-card
4
- - Server-safe: Yes
5
- - Category: composed
6
-
7
- ## Props
8
- variant: "default" | "outline" | "ghost"
9
- padding: "default" | "compact" | "spacious" | "none"
10
- header: ReactNode (custom header content)
11
- headerTitle: string (simple text header)
12
- headerActions: ReactNode (actions in header area)
13
- footer: ReactNode
14
- children: ReactNode (body)
15
-
16
- ## Defaults
17
- variant="default", padding="default"
18
-
19
- ## Example
20
- ```jsx
21
- <ContentCard headerTitle="Team Members" headerActions={<Button size="sm">Add</Button>}>
22
- <p>Member list here</p>
23
- </ContentCard>
24
- ```
25
-
26
- ## Gotchas
27
- - Server-safe: can be imported directly in Next.js Server Components
28
- - Use `headerTitle` for simple text headers; use `header` for custom header content
29
- - `header` takes precedence over `headerTitle` if both are provided
30
-
31
- ## Changes
32
- ### v0.2.0
33
- - **Added** Identified as server-safe component
34
-
35
- ### v0.1.0
36
- - **Added** Initial release
1
+ # ContentCard
2
+
3
+ - Import: @devalok/shilp-sutra/composed/content-card
4
+ - Server-safe: Yes
5
+ - Category: composed
6
+
7
+ ## Props
8
+ variant: "default" | "outline" | "ghost"
9
+ padding: "default" | "compact" | "spacious" | "none"
10
+ header: ReactNode (custom header content)
11
+ headerTitle: string (simple text header)
12
+ headerActions: ReactNode (actions in header area)
13
+ footer: ReactNode
14
+ children: ReactNode (body)
15
+
16
+ ## Defaults
17
+ variant="default", padding="default"
18
+
19
+ ## Example
20
+ ```jsx
21
+ <ContentCard headerTitle="Team Members" headerActions={<Button size="sm">Add</Button>}>
22
+ <p>Member list here</p>
23
+ </ContentCard>
24
+ ```
25
+
26
+ ## Gotchas
27
+ - Server-safe: can be imported directly in Next.js Server Components
28
+ - Use `headerTitle` for simple text headers; use `header` for custom header content
29
+ - `header` takes precedence over `headerTitle` if both are provided
30
+
31
+ ## Changes
32
+ ### v0.2.0
33
+ - **Added** Identified as server-safe component
34
+
35
+ ### v0.1.0
36
+ - **Added** Initial release