@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,44 +1,44 @@
1
- # DataTableToolbar
2
-
3
- - Import: @devalok/shilp-sutra/ui/data-table-toolbar
4
- - Server-safe: No
5
- - Category: ui
6
-
7
- ## Props
8
- table: Table<TData> (TanStack table instance)
9
- globalFilter: boolean
10
- globalFilterValue: string
11
- onGlobalFilterChange: (value: string) => void
12
- density: 'compact' | 'standard' | 'comfortable'
13
- onDensityChange: (density: Density) => void
14
- enableExport: boolean
15
-
16
- ## Defaults
17
- none
18
-
19
- ## Example
20
- ```jsx
21
- import { DataTableToolbar } from '@devalok/shilp-sutra/ui/data-table-toolbar'
22
-
23
- <DataTableToolbar
24
- table={table}
25
- globalFilter
26
- globalFilterValue={filterValue}
27
- onGlobalFilterChange={setFilterValue}
28
- density={density}
29
- onDensityChange={setDensity}
30
- enableExport
31
- />
32
- ```
33
-
34
- ## Gotchas
35
- - Barrel-isolated since v0.5.0 — must use `@devalok/shilp-sutra/ui/data-table-toolbar`, NOT the `ui` barrel
36
- - Companion to DataTable — provides column visibility, density toggle, and CSV export controls
37
- - Requires @tanstack/react-table as a peer dependency
38
-
39
- ## Changes
40
- ### v0.5.0
41
- - **Changed** (BREAKING) Removed from `@devalok/shilp-sutra/ui` barrel export — must use `@devalok/shilp-sutra/ui/data-table-toolbar`
42
-
43
- ### v0.1.0
44
- - **Added** Initial release
1
+ # DataTableToolbar
2
+
3
+ - Import: @devalok/shilp-sutra/ui/data-table-toolbar
4
+ - Server-safe: No
5
+ - Category: ui
6
+
7
+ ## Props
8
+ table: Table<TData> (TanStack table instance)
9
+ globalFilter: boolean
10
+ globalFilterValue: string
11
+ onGlobalFilterChange: (value: string) => void
12
+ density: 'compact' | 'standard' | 'comfortable'
13
+ onDensityChange: (density: Density) => void
14
+ enableExport: boolean
15
+
16
+ ## Defaults
17
+ none
18
+
19
+ ## Example
20
+ ```jsx
21
+ import { DataTableToolbar } from '@devalok/shilp-sutra/ui/data-table-toolbar'
22
+
23
+ <DataTableToolbar
24
+ table={table}
25
+ globalFilter
26
+ globalFilterValue={filterValue}
27
+ onGlobalFilterChange={setFilterValue}
28
+ density={density}
29
+ onDensityChange={setDensity}
30
+ enableExport
31
+ />
32
+ ```
33
+
34
+ ## Gotchas
35
+ - Barrel-isolated since v0.5.0 — must use `@devalok/shilp-sutra/ui/data-table-toolbar`, NOT the `ui` barrel
36
+ - Companion to DataTable — provides column visibility, density toggle, and CSV export controls
37
+ - Requires @tanstack/react-table as a peer dependency
38
+
39
+ ## Changes
40
+ ### v0.5.0
41
+ - **Changed** (BREAKING) Removed from `@devalok/shilp-sutra/ui` barrel export — must use `@devalok/shilp-sutra/ui/data-table-toolbar`
42
+
43
+ ### v0.1.0
44
+ - **Added** Initial release
@@ -1,94 +1,94 @@
1
- # DataTable
2
-
3
- - Import: @devalok/shilp-sutra/ui/data-table
4
- - Server-safe: No
5
- - Category: ui
6
-
7
- ## Props
8
- columns: ColumnDef<TData>[] (TanStack column definitions)
9
- data: TData[]
10
- sortable: boolean — enable column sorting
11
- onSort: (key: string, dir: 'asc' | 'desc' | false) => void — server-side sort callback (enables manualSorting)
12
- filterable: boolean — enable per-column filters
13
- globalFilter: boolean — enable global search
14
- paginated: boolean — enable client-side pagination
15
- pagination: { page: number, pageSize: number, total: number, onPageChange: (page: number) => void } — server-side pagination (1-based page)
16
- pageSize: number (default 10)
17
- selectable: boolean — enable row selection with checkboxes
18
- selectedIds: Set<string> — controlled selection state
19
- selectableFilter: (row: TData) => boolean — disable selection on certain rows
20
- getRowId: (row: TData) => string — custom row ID accessor
21
- onSelectionChange: (selectedRows: TData[]) => void
22
- expandable: boolean — enable row expansion
23
- renderExpanded: (row: TData) => ReactNode — expanded row content
24
- singleExpand: boolean — only one row expanded at a time
25
- loading: boolean — show skeleton shimmer rows
26
- emptyState: ReactNode — custom empty state (takes precedence over noResultsText)
27
- noResultsText: string (default "No results.")
28
- stickyHeader: boolean — sticky table header
29
- onRowClick: (row: TData) => void — row click handler (excludes interactive element clicks)
30
- bulkActions: BulkAction<TData>[] — floating action bar on selection — { label, onClick, color?: 'default'|'error', disabled? }
31
- toolbar: boolean — show DataTableToolbar (column visibility, density, CSV export)
32
- editable: boolean — enable double-click cell editing
33
- virtualRows: boolean — virtualize rows for large datasets
34
- columnPinning: { left?: string[], right?: string[] }
35
- defaultDensity: 'compact' | 'standard' | 'comfortable'
36
-
37
- ## Defaults
38
- pageSize=10, noResultsText="No results."
39
-
40
- ## Example
41
- ```jsx
42
- import { DataTable } from '@devalok/shilp-sutra/ui/data-table'
43
-
44
- <DataTable
45
- columns={[
46
- { accessorKey: 'name', header: 'Name' },
47
- { accessorKey: 'email', header: 'Email' },
48
- ]}
49
- data={users}
50
- sortable
51
- onSort={(key, dir) => handleSort(key, dir)}
52
- pagination={{ page, pageSize: 20, total: totalCount, onPageChange: setPage }}
53
- loading={isLoading}
54
- emptyState={<EmptyState title="No users" />}
55
- />
56
- ```
57
-
58
- ## Gotchas
59
- - Barrel-isolated since v0.5.0 — must use `@devalok/shilp-sutra/ui/data-table`, NOT the `ui` barrel
60
- - Requires @tanstack/react-table and @tanstack/react-virtual as peer dependencies
61
- - When onSort is provided, sorting is manual (server-side) — rows stay in data order
62
- - When pagination prop is provided, pagination is manual — pass total count
63
- - selectedIds syncs via useEffect — provide getRowId for custom row IDs
64
- - onRowClick does NOT fire when clicking checkboxes, buttons, links, or inputs
65
- - Use defaultDensity="compact" for Karm-style h-9 rows
66
-
67
- ## Changes
68
- ### v0.29.0
69
- - **Fixed** Controlled selection infinite re-render loop — inline `getRowId` callback caused `onSelectionChange` effect to fire every render, creating a setState cycle with `selectedIds`. Now uses a stable ref for `getRowId`.
70
-
71
- ### v0.16.1
72
- - **Fixed** `serverPagination` object reference in `useCallback` dependency caused stale closure — now uses stable ref for `onPageChange`
73
- - **Fixed** `onSelectionChange` effect fired every render due to `table` in dependency array — now derives selected rows directly
74
- - **Fixed** `selectedRows` useMemo for bulk actions had same `table` dependency issue
75
-
76
- ### v0.16.0
77
- - **Added** `onSort` callback for server-side sorting
78
- - **Added** `emptyState` ReactNode slot
79
- - **Added** `loading` prop with shimmer skeleton rows
80
- - **Added** `selectedIds` + `selectableFilter` for controlled selection
81
- - **Added** `pagination` prop for server-side pagination
82
- - **Added** `singleExpand` prop
83
- - **Added** `stickyHeader` prop
84
- - **Added** `onRowClick` handler
85
- - **Added** `bulkActions` floating action bar
86
-
87
- ### v0.5.0
88
- - **Changed** (BREAKING) Removed from `@devalok/shilp-sutra/ui` barrel export — must use `@devalok/shilp-sutra/ui/data-table`
89
-
90
- ### v0.1.1
91
- - **Fixed** `useEffect` exhaustive-deps with proper dependency array
92
-
93
- ### v0.1.0
94
- - **Added** Initial release
1
+ # DataTable
2
+
3
+ - Import: @devalok/shilp-sutra/ui/data-table
4
+ - Server-safe: No
5
+ - Category: ui
6
+
7
+ ## Props
8
+ columns: ColumnDef<TData>[] (TanStack column definitions)
9
+ data: TData[]
10
+ sortable: boolean — enable column sorting
11
+ onSort: (key: string, dir: 'asc' | 'desc' | false) => void — server-side sort callback (enables manualSorting)
12
+ filterable: boolean — enable per-column filters
13
+ globalFilter: boolean — enable global search
14
+ paginated: boolean — enable client-side pagination
15
+ pagination: { page: number, pageSize: number, total: number, onPageChange: (page: number) => void } — server-side pagination (1-based page)
16
+ pageSize: number (default 10)
17
+ selectable: boolean — enable row selection with checkboxes
18
+ selectedIds: Set<string> — controlled selection state
19
+ selectableFilter: (row: TData) => boolean — disable selection on certain rows
20
+ getRowId: (row: TData) => string — custom row ID accessor
21
+ onSelectionChange: (selectedRows: TData[]) => void
22
+ expandable: boolean — enable row expansion
23
+ renderExpanded: (row: TData) => ReactNode — expanded row content
24
+ singleExpand: boolean — only one row expanded at a time
25
+ loading: boolean — show skeleton shimmer rows
26
+ emptyState: ReactNode — custom empty state (takes precedence over noResultsText)
27
+ noResultsText: string (default "No results.")
28
+ stickyHeader: boolean — sticky table header
29
+ onRowClick: (row: TData) => void — row click handler (excludes interactive element clicks)
30
+ bulkActions: BulkAction<TData>[] — floating action bar on selection — { label, onClick, color?: 'default'|'error', disabled? }
31
+ toolbar: boolean — show DataTableToolbar (column visibility, density, CSV export)
32
+ editable: boolean — enable double-click cell editing
33
+ virtualRows: boolean — virtualize rows for large datasets
34
+ columnPinning: { left?: string[], right?: string[] }
35
+ defaultDensity: 'compact' | 'standard' | 'comfortable'
36
+
37
+ ## Defaults
38
+ pageSize=10, noResultsText="No results."
39
+
40
+ ## Example
41
+ ```jsx
42
+ import { DataTable } from '@devalok/shilp-sutra/ui/data-table'
43
+
44
+ <DataTable
45
+ columns={[
46
+ { accessorKey: 'name', header: 'Name' },
47
+ { accessorKey: 'email', header: 'Email' },
48
+ ]}
49
+ data={users}
50
+ sortable
51
+ onSort={(key, dir) => handleSort(key, dir)}
52
+ pagination={{ page, pageSize: 20, total: totalCount, onPageChange: setPage }}
53
+ loading={isLoading}
54
+ emptyState={<EmptyState title="No users" />}
55
+ />
56
+ ```
57
+
58
+ ## Gotchas
59
+ - Barrel-isolated since v0.5.0 — must use `@devalok/shilp-sutra/ui/data-table`, NOT the `ui` barrel
60
+ - Requires @tanstack/react-table and @tanstack/react-virtual as peer dependencies
61
+ - When onSort is provided, sorting is manual (server-side) — rows stay in data order
62
+ - When pagination prop is provided, pagination is manual — pass total count
63
+ - selectedIds syncs via useEffect — provide getRowId for custom row IDs
64
+ - onRowClick does NOT fire when clicking checkboxes, buttons, links, or inputs
65
+ - Use defaultDensity="compact" for Karm-style h-9 rows
66
+
67
+ ## Changes
68
+ ### v0.29.0
69
+ - **Fixed** Controlled selection infinite re-render loop — inline `getRowId` callback caused `onSelectionChange` effect to fire every render, creating a setState cycle with `selectedIds`. Now uses a stable ref for `getRowId`.
70
+
71
+ ### v0.16.1
72
+ - **Fixed** `serverPagination` object reference in `useCallback` dependency caused stale closure — now uses stable ref for `onPageChange`
73
+ - **Fixed** `onSelectionChange` effect fired every render due to `table` in dependency array — now derives selected rows directly
74
+ - **Fixed** `selectedRows` useMemo for bulk actions had same `table` dependency issue
75
+
76
+ ### v0.16.0
77
+ - **Added** `onSort` callback for server-side sorting
78
+ - **Added** `emptyState` ReactNode slot
79
+ - **Added** `loading` prop with shimmer skeleton rows
80
+ - **Added** `selectedIds` + `selectableFilter` for controlled selection
81
+ - **Added** `pagination` prop for server-side pagination
82
+ - **Added** `singleExpand` prop
83
+ - **Added** `stickyHeader` prop
84
+ - **Added** `onRowClick` handler
85
+ - **Added** `bulkActions` floating action bar
86
+
87
+ ### v0.5.0
88
+ - **Changed** (BREAKING) Removed from `@devalok/shilp-sutra/ui` barrel export — must use `@devalok/shilp-sutra/ui/data-table`
89
+
90
+ ### v0.1.1
91
+ - **Fixed** `useEffect` exhaustive-deps with proper dependency array
92
+
93
+ ### v0.1.0
94
+ - **Added** Initial release
@@ -1,54 +1,54 @@
1
- # Dialog
2
-
3
- - Import: @devalok/shilp-sutra/ui/dialog
4
- - Server-safe: No
5
- - Category: ui
6
-
7
- ## Compound Components
8
- Dialog (root)
9
- DialogTrigger
10
- DialogContent
11
- DialogHeader
12
- DialogTitle
13
- DialogDescription
14
- [body content]
15
- DialogFooter
16
- DialogClose
17
-
18
- ## Defaults
19
- none
20
-
21
- ## Example
22
- ```jsx
23
- <Dialog>
24
- <DialogTrigger asChild><Button>Open</Button></DialogTrigger>
25
- <DialogContent>
26
- <DialogHeader>
27
- <DialogTitle>Edit Profile</DialogTitle>
28
- <DialogDescription>Make changes to your profile.</DialogDescription>
29
- </DialogHeader>
30
- <div>Form fields here</div>
31
- <DialogFooter>
32
- <Button>Save</Button>
33
- </DialogFooter>
34
- </DialogContent>
35
- </Dialog>
36
- ```
37
-
38
- ## Gotchas
39
- - DialogTitle is required for accessibility — screen readers announce it when the dialog opens
40
-
41
- ## Changes
42
- ### v0.19.1
43
- - **Fixed** Dialog not centered after Framer Motion animation completes — `transform: none` inline style overrode Tailwind `translate-x/y` classes. Centering now handled via Framer Motion `x`/`y` properties.
44
-
45
- ### v0.18.0
46
- - **Changed** Overlay animations migrated to Framer Motion (physics-based springs)
47
- - **Added** `DialogContentProps`, `DialogTitleProps` type exports
48
- - **Fixed** Context provider value wrapped in `useMemo` for performance
49
-
50
- ### v0.3.0
51
- - **Fixed** DialogHeader/Footer now support ref forwarding
52
-
53
- ### v0.1.0
54
- - **Added** Initial release
1
+ # Dialog
2
+
3
+ - Import: @devalok/shilp-sutra/ui/dialog
4
+ - Server-safe: No
5
+ - Category: ui
6
+
7
+ ## Compound Components
8
+ Dialog (root)
9
+ DialogTrigger
10
+ DialogContent
11
+ DialogHeader
12
+ DialogTitle
13
+ DialogDescription
14
+ [body content]
15
+ DialogFooter
16
+ DialogClose
17
+
18
+ ## Defaults
19
+ none
20
+
21
+ ## Example
22
+ ```jsx
23
+ <Dialog>
24
+ <DialogTrigger asChild><Button>Open</Button></DialogTrigger>
25
+ <DialogContent>
26
+ <DialogHeader>
27
+ <DialogTitle>Edit Profile</DialogTitle>
28
+ <DialogDescription>Make changes to your profile.</DialogDescription>
29
+ </DialogHeader>
30
+ <div>Form fields here</div>
31
+ <DialogFooter>
32
+ <Button>Save</Button>
33
+ </DialogFooter>
34
+ </DialogContent>
35
+ </Dialog>
36
+ ```
37
+
38
+ ## Gotchas
39
+ - DialogTitle is required for accessibility — screen readers announce it when the dialog opens
40
+
41
+ ## Changes
42
+ ### v0.19.1
43
+ - **Fixed** Dialog not centered after Framer Motion animation completes — `transform: none` inline style overrode Tailwind `translate-x/y` classes. Centering now handled via Framer Motion `x`/`y` properties.
44
+
45
+ ### v0.18.0
46
+ - **Changed** Overlay animations migrated to Framer Motion (physics-based springs)
47
+ - **Added** `DialogContentProps`, `DialogTitleProps` type exports
48
+ - **Fixed** Context provider value wrapped in `useMemo` for performance
49
+
50
+ ### v0.3.0
51
+ - **Fixed** DialogHeader/Footer now support ref forwarding
52
+
53
+ ### v0.1.0
54
+ - **Added** Initial release
@@ -1,48 +1,48 @@
1
- # DropdownMenu
2
-
3
- - Import: @devalok/shilp-sutra/ui/dropdown-menu
4
- - Server-safe: No
5
- - Category: ui
6
-
7
- ## Compound Components
8
- DropdownMenu (root)
9
- DropdownMenuTrigger
10
- DropdownMenuContent
11
- DropdownMenuLabel
12
- DropdownMenuSeparator
13
- DropdownMenuItem (+ DropdownMenuShortcut for keyboard hints)
14
- DropdownMenuCheckboxItem
15
- DropdownMenuRadioGroup > DropdownMenuRadioItem
16
- DropdownMenuGroup
17
- DropdownMenuSub > DropdownMenuSubTrigger, DropdownMenuSubContent
18
-
19
- ## Defaults
20
- none
21
-
22
- ## Example
23
- ```jsx
24
- <DropdownMenu>
25
- <DropdownMenuTrigger asChild><Button variant="ghost">Menu</Button></DropdownMenuTrigger>
26
- <DropdownMenuContent>
27
- <DropdownMenuItem>Profile</DropdownMenuItem>
28
- <DropdownMenuSeparator />
29
- <DropdownMenuItem>Logout</DropdownMenuItem>
30
- </DropdownMenuContent>
31
- </DropdownMenu>
32
- ```
33
-
34
- ## Gotchas
35
- - Use `asChild` on DropdownMenuTrigger to render your own button element
36
-
37
- ## Changes
38
- ### v0.22.0
39
- - **Added** Hover state on `DropdownMenuItem` — was completely missing. Items now show `bg-surface-3` on hover with `ease-productive-standard` transition.
40
-
41
- ### v0.18.0
42
- - **Added** `DropdownMenuContentProps`, `DropdownMenuItemProps` type exports
43
-
44
- ### v0.14.0
45
- - **Changed** z-index promoted from `z-dropdown` (1000) to `z-popover` (1400) — fixes dropdown rendering behind Sheet/Dialog overlays
46
-
47
- ### v0.1.0
48
- - **Added** Initial release
1
+ # DropdownMenu
2
+
3
+ - Import: @devalok/shilp-sutra/ui/dropdown-menu
4
+ - Server-safe: No
5
+ - Category: ui
6
+
7
+ ## Compound Components
8
+ DropdownMenu (root)
9
+ DropdownMenuTrigger
10
+ DropdownMenuContent
11
+ DropdownMenuLabel
12
+ DropdownMenuSeparator
13
+ DropdownMenuItem (+ DropdownMenuShortcut for keyboard hints)
14
+ DropdownMenuCheckboxItem
15
+ DropdownMenuRadioGroup > DropdownMenuRadioItem
16
+ DropdownMenuGroup
17
+ DropdownMenuSub > DropdownMenuSubTrigger, DropdownMenuSubContent
18
+
19
+ ## Defaults
20
+ none
21
+
22
+ ## Example
23
+ ```jsx
24
+ <DropdownMenu>
25
+ <DropdownMenuTrigger asChild><Button variant="ghost">Menu</Button></DropdownMenuTrigger>
26
+ <DropdownMenuContent>
27
+ <DropdownMenuItem>Profile</DropdownMenuItem>
28
+ <DropdownMenuSeparator />
29
+ <DropdownMenuItem>Logout</DropdownMenuItem>
30
+ </DropdownMenuContent>
31
+ </DropdownMenu>
32
+ ```
33
+
34
+ ## Gotchas
35
+ - Use `asChild` on DropdownMenuTrigger to render your own button element
36
+
37
+ ## Changes
38
+ ### v0.22.0
39
+ - **Added** Hover state on `DropdownMenuItem` — was completely missing. Items now show `bg-surface-3` on hover with `ease-productive-standard` transition.
40
+
41
+ ### v0.18.0
42
+ - **Added** `DropdownMenuContentProps`, `DropdownMenuItemProps` type exports
43
+
44
+ ### v0.14.0
45
+ - **Changed** z-index promoted from `z-dropdown` (1000) to `z-popover` (1400) — fixes dropdown rendering behind Sheet/Dialog overlays
46
+
47
+ ### v0.1.0
48
+ - **Added** Initial release
@@ -1,41 +1,41 @@
1
- # FileUpload
2
-
3
- - Import: @devalok/shilp-sutra/ui/file-upload
4
- - Server-safe: No
5
- - Category: ui
6
-
7
- ## Props
8
- onFiles: (files: File[]) => void (REQUIRED)
9
- accept: string (MIME or extension, e.g. "image/*", ".pdf,.doc")
10
- maxSize: number (bytes, default: 10MB)
11
- multiple: boolean
12
- uploading: boolean
13
- progress: number (0-100)
14
- error: string
15
- compact: boolean (inline button mode vs drop zone)
16
- disabled: boolean
17
- label: string
18
- sublabel: string
19
-
20
- ## Defaults
21
- compact: false
22
- maxSize: 10MB (10485760 bytes)
23
-
24
- ## Example
25
- ```jsx
26
- <FileUpload
27
- accept="image/*"
28
- maxSize={2 * 1024 * 1024}
29
- onFiles={(files) => uploadAvatar(files[0])}
30
- label="Upload profile photo"
31
- sublabel="PNG, JPG up to 2MB"
32
- />
33
- ```
34
-
35
- ## Gotchas
36
- - compact=true renders a small inline button; false (default) renders a large drag-and-drop zone
37
- - Client-side validation: invalid files are rejected before onFiles is called
38
-
39
- ## Changes
40
- ### v0.1.0
41
- - **Added** Initial release
1
+ # FileUpload
2
+
3
+ - Import: @devalok/shilp-sutra/ui/file-upload
4
+ - Server-safe: No
5
+ - Category: ui
6
+
7
+ ## Props
8
+ onFiles: (files: File[]) => void (REQUIRED)
9
+ accept: string (MIME or extension, e.g. "image/*", ".pdf,.doc")
10
+ maxSize: number (bytes, default: 10MB)
11
+ multiple: boolean
12
+ uploading: boolean
13
+ progress: number (0-100)
14
+ error: string
15
+ compact: boolean (inline button mode vs drop zone)
16
+ disabled: boolean
17
+ label: string
18
+ sublabel: string
19
+
20
+ ## Defaults
21
+ compact: false
22
+ maxSize: 10MB (10485760 bytes)
23
+
24
+ ## Example
25
+ ```jsx
26
+ <FileUpload
27
+ accept="image/*"
28
+ maxSize={2 * 1024 * 1024}
29
+ onFiles={(files) => uploadAvatar(files[0])}
30
+ label="Upload profile photo"
31
+ sublabel="PNG, JPG up to 2MB"
32
+ />
33
+ ```
34
+
35
+ ## Gotchas
36
+ - compact=true renders a small inline button; false (default) renders a large drag-and-drop zone
37
+ - Client-side validation: invalid files are rejected before onFiles is called
38
+
39
+ ## Changes
40
+ ### v0.1.0
41
+ - **Added** Initial release