@devalok/shilp-sutra 0.53.0 → 0.55.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 (429) hide show
  1. package/AGENTS.md +7 -1
  2. package/BREAKING.json +29 -0
  3. package/MIGRATION.md +83 -0
  4. package/dist/_chunks/badge-group.js +1 -1
  5. package/dist/_chunks/popover.js +38 -37
  6. package/dist/_chunks/popover.js.map +1 -1
  7. package/dist/_chunks/primitives/react-accordion.js +270 -0
  8. package/dist/_chunks/primitives/react-accordion.js.map +1 -0
  9. package/dist/_chunks/primitives/react-alert-dialog.js +857 -0
  10. package/dist/_chunks/primitives/react-alert-dialog.js.map +1 -0
  11. package/dist/_chunks/primitives/react-aspect-ratio.js +32 -0
  12. package/dist/_chunks/primitives/react-aspect-ratio.js.map +1 -0
  13. package/dist/_chunks/primitives/react-avatar.js +69 -0
  14. package/dist/_chunks/primitives/react-avatar.js.map +1 -0
  15. package/dist/_chunks/primitives/react-checkbox.js +151 -0
  16. package/dist/_chunks/primitives/react-checkbox.js.map +1 -0
  17. package/dist/_chunks/primitives/react-context-menu.js +905 -0
  18. package/dist/_chunks/primitives/react-context-menu.js.map +1 -0
  19. package/dist/_chunks/primitives/react-dropdown-menu.js +220 -0
  20. package/dist/_chunks/primitives/react-dropdown-menu.js.map +1 -0
  21. package/dist/_chunks/primitives/react-hover-card.js +153 -0
  22. package/dist/_chunks/primitives/react-hover-card.js.map +1 -0
  23. package/dist/_chunks/primitives/react-label.js +16 -0
  24. package/dist/_chunks/primitives/react-label.js.map +1 -0
  25. package/dist/_chunks/primitives/react-menubar.js +304 -0
  26. package/dist/_chunks/primitives/react-menubar.js.map +1 -0
  27. package/dist/_chunks/primitives/react-navigation-menu.js +560 -0
  28. package/dist/_chunks/primitives/react-navigation-menu.js.map +1 -0
  29. package/dist/_chunks/primitives/react-popover.js +186 -0
  30. package/dist/_chunks/primitives/react-popover.js.map +1 -0
  31. package/dist/_chunks/primitives/react-progress.js +70 -0
  32. package/dist/_chunks/primitives/react-progress.js.map +1 -0
  33. package/dist/_chunks/primitives/react-radio-group.js +170 -0
  34. package/dist/_chunks/primitives/react-radio-group.js.map +1 -0
  35. package/dist/_chunks/primitives/react-select.js +671 -0
  36. package/dist/_chunks/primitives/react-select.js.map +1 -0
  37. package/dist/_chunks/primitives/react-separator.js +24 -0
  38. package/dist/_chunks/primitives/react-separator.js.map +1 -0
  39. package/dist/_chunks/primitives/react-slider.js +349 -0
  40. package/dist/_chunks/primitives/react-slider.js.map +1 -0
  41. package/dist/_chunks/primitives/react-switch.js +92 -0
  42. package/dist/_chunks/primitives/react-switch.js.map +1 -0
  43. package/dist/_chunks/primitives/react-tabs.js +114 -0
  44. package/dist/_chunks/primitives/react-tabs.js.map +1 -0
  45. package/dist/_chunks/primitives/react-toggle-group.js +122 -0
  46. package/dist/_chunks/primitives/react-toggle-group.js.map +1 -0
  47. package/dist/_chunks/primitives/react-toggle.js +28 -0
  48. package/dist/_chunks/primitives/react-toggle.js.map +1 -0
  49. package/dist/_chunks/primitives/react-tooltip.js +341 -0
  50. package/dist/_chunks/primitives/react-tooltip.js.map +1 -0
  51. package/dist/_chunks/primitives-internal.js +2071 -0
  52. package/dist/_chunks/primitives-internal.js.map +1 -0
  53. package/dist/_chunks/shared.js +32 -32
  54. package/dist/_chunks/tiptap.js +1 -1
  55. package/dist/ai/ai-command-provider.d.ts +2 -3
  56. package/dist/ai/block-renderer.d.ts +1 -2
  57. package/dist/ai/blocks/block-shell.d.ts +0 -1
  58. package/dist/ai/blocks/block-table.d.ts +1 -2
  59. package/dist/ai/blocks/confirm.d.ts +1 -2
  60. package/dist/ai/blocks/divider.d.ts +1 -2
  61. package/dist/ai/blocks/error.d.ts +1 -2
  62. package/dist/ai/blocks/index.d.ts +7 -8
  63. package/dist/ai/blocks/info.d.ts +1 -2
  64. package/dist/ai/blocks/loading.d.ts +1 -2
  65. package/dist/ai/blocks/stat-row.d.ts +1 -2
  66. package/dist/ai/blocks/success.d.ts +1 -2
  67. package/dist/ai/blocks/text.d.ts +1 -2
  68. package/dist/ai/command-bar.d.ts +1 -2
  69. package/dist/ai/conversation.d.ts +2 -3
  70. package/dist/ai/devadoot-icon.d.ts +0 -1
  71. package/dist/ai/index.d.ts +16 -17
  72. package/dist/ai/types.js +1 -0
  73. package/dist/composed/activity-feed.d.ts +1 -2
  74. package/dist/composed/avatar-group.d.ts +11 -10
  75. package/dist/composed/avatar-group.d.ts.map +1 -1
  76. package/dist/composed/avatar-group.js +108 -140
  77. package/dist/composed/avatar-group.js.map +1 -1
  78. package/dist/composed/bulk-action-bar.d.ts +20 -13
  79. package/dist/composed/bulk-action-bar.d.ts.map +1 -1
  80. package/dist/composed/bulk-action-bar.js +81 -110
  81. package/dist/composed/bulk-action-bar.js.map +1 -1
  82. package/dist/composed/command-palette.d.ts +1 -2
  83. package/dist/composed/confirm-dialog.d.ts +0 -1
  84. package/dist/composed/date-picker/calendar-grid.d.ts +0 -1
  85. package/dist/composed/date-picker/date-picker.d.ts +0 -1
  86. package/dist/composed/date-picker/date-range-picker.d.ts +1 -2
  87. package/dist/composed/date-picker/date-time-picker.d.ts +0 -1
  88. package/dist/composed/date-picker/index.d.ts +17 -18
  89. package/dist/composed/date-picker/month-picker.d.ts +0 -1
  90. package/dist/composed/date-picker/presets.d.ts +0 -1
  91. package/dist/composed/date-picker/time-picker.d.ts +0 -1
  92. package/dist/composed/date-picker/use-calendar.d.ts +0 -1
  93. package/dist/composed/date-picker/year-picker.d.ts +0 -1
  94. package/dist/composed/deadline-indicator.d.ts +0 -1
  95. package/dist/composed/diff.d.ts +0 -1
  96. package/dist/composed/emoji-picker.d.ts +0 -1
  97. package/dist/composed/empty-state.d.ts +1 -2
  98. package/dist/composed/error-boundary.d.ts +15 -4
  99. package/dist/composed/error-boundary.d.ts.map +1 -1
  100. package/dist/composed/error-boundary.js +43 -26
  101. package/dist/composed/error-boundary.js.map +1 -1
  102. package/dist/composed/extensions/emoji-data.d.ts +0 -1
  103. package/dist/composed/extensions/emoji-node.d.ts +0 -1
  104. package/dist/composed/extensions/emoji-suggestion.d.ts +1 -2
  105. package/dist/composed/extensions/file-attachment.d.ts +0 -1
  106. package/dist/composed/extensions/mention-suggestion.d.ts +1 -2
  107. package/dist/composed/extensions/slash-command.d.ts +0 -1
  108. package/dist/composed/file-preview/audio-preview.d.ts +0 -1
  109. package/dist/composed/file-preview/document-preview.d.ts +0 -1
  110. package/dist/composed/file-preview/embed-preview.d.ts +0 -1
  111. package/dist/composed/file-preview/image-preview.d.ts +0 -1
  112. package/dist/composed/file-preview/shared.d.ts +0 -1
  113. package/dist/composed/file-preview/video-preview.d.ts +0 -1
  114. package/dist/composed/file-preview.d.ts +0 -1
  115. package/dist/composed/filter-bar.d.ts +0 -1
  116. package/dist/composed/form-section.d.ts +0 -1
  117. package/dist/composed/global-loading.d.ts +0 -1
  118. package/dist/composed/index.d.ts +49 -50
  119. package/dist/composed/inline-edit.d.ts +0 -1
  120. package/dist/composed/loading-skeleton.d.ts +2 -0
  121. package/dist/composed/loading-skeleton.d.ts.map +1 -1
  122. package/dist/composed/loading-skeleton.js +79 -56
  123. package/dist/composed/loading-skeleton.js.map +1 -1
  124. package/dist/composed/markdown-viewer.d.ts +0 -1
  125. package/dist/composed/master-detail.d.ts +21 -9
  126. package/dist/composed/master-detail.d.ts.map +1 -1
  127. package/dist/composed/master-detail.js +91 -77
  128. package/dist/composed/master-detail.js.map +1 -1
  129. package/dist/composed/member-picker.d.ts +0 -1
  130. package/dist/composed/multi-select-popover.d.ts +0 -1
  131. package/dist/composed/page-skeletons.d.ts +6 -0
  132. package/dist/composed/page-skeletons.d.ts.map +1 -1
  133. package/dist/composed/page-skeletons.js +93 -71
  134. package/dist/composed/page-skeletons.js.map +1 -1
  135. package/dist/composed/priority-indicator.d.ts +0 -1
  136. package/dist/composed/responsive-modal.d.ts +1 -2
  137. package/dist/composed/responsive-modal.js +47 -47
  138. package/dist/composed/rich-chat-input/attachment-strip.d.ts +0 -1
  139. package/dist/composed/rich-chat-input/audio-player.d.ts +0 -1
  140. package/dist/composed/rich-chat-input/audio-waveform.d.ts +0 -1
  141. package/dist/composed/rich-chat-input/chat-toolbar.d.ts +0 -1
  142. package/dist/composed/rich-chat-input/recording-overlay.d.ts +0 -1
  143. package/dist/composed/rich-chat-input/reply-banner.d.ts +0 -1
  144. package/dist/composed/rich-chat-input/schedule-send.d.ts +0 -1
  145. package/dist/composed/rich-chat-input/use-voice-recorder.d.ts +0 -1
  146. package/dist/composed/rich-chat-input.d.ts +9 -10
  147. package/dist/composed/rich-chat-input.js +1 -1
  148. package/dist/composed/rich-text-editor.d.ts +1 -2
  149. package/dist/composed/schedule-view.d.ts +0 -1
  150. package/dist/composed/simple-tooltip.d.ts +0 -1
  151. package/dist/composed/status-badge.d.ts +1 -2
  152. package/dist/hooks/index.d.ts +6 -7
  153. package/dist/hooks/use-color-mode.d.ts +0 -1
  154. package/dist/hooks/use-mobile.d.ts +0 -1
  155. package/dist/hooks/use-touch-device.d.ts +0 -1
  156. package/dist/hooks/use-viewport-height.d.ts +0 -1
  157. package/dist/motion/check-motion-provider.d.ts +0 -1
  158. package/dist/motion/index.d.ts +2 -3
  159. package/dist/motion/motion-provider.d.ts +1 -2
  160. package/dist/motion/primitives-index.d.ts +1 -2
  161. package/dist/motion/primitives.d.ts +1 -2
  162. package/dist/primitives/_internal/react-arrow.d.ts +1 -1
  163. package/dist/primitives/_internal/react-collection.d.ts +2 -2
  164. package/dist/primitives/_internal/react-dismissable-layer.d.ts +1 -1
  165. package/dist/primitives/_internal/react-focus-scope.d.ts +1 -1
  166. package/dist/primitives/_internal/react-popper.d.ts +4 -4
  167. package/dist/primitives/_internal/react-portal.d.ts +1 -1
  168. package/dist/primitives/_internal/react-use-rect.d.ts +1 -1
  169. package/dist/primitives/react-accordion.d.ts +3 -3
  170. package/dist/primitives/react-alert-dialog.d.ts +2 -2
  171. package/dist/primitives/react-aspect-ratio.d.ts +1 -1
  172. package/dist/primitives/react-avatar.d.ts +2 -2
  173. package/dist/primitives/react-checkbox.d.ts +3 -3
  174. package/dist/primitives/react-collapsible.d.ts +2 -2
  175. package/dist/primitives/react-context-menu.d.ts +3 -3
  176. package/dist/primitives/react-dialog.d.ts +5 -5
  177. package/dist/primitives/react-dropdown-menu.d.ts +3 -3
  178. package/dist/primitives/react-hover-card.d.ts +5 -5
  179. package/dist/primitives/react-label.d.ts +1 -1
  180. package/dist/primitives/react-menu.d.ts +7 -7
  181. package/dist/primitives/react-menubar.d.ts +5 -5
  182. package/dist/primitives/react-navigation-menu.d.ts +5 -5
  183. package/dist/primitives/react-popover.d.ts +6 -6
  184. package/dist/primitives/react-progress.d.ts +2 -2
  185. package/dist/primitives/react-radio-group.d.ts +3 -3
  186. package/dist/primitives/react-roving-focus.d.ts +2 -2
  187. package/dist/primitives/react-select.d.ts +6 -6
  188. package/dist/primitives/react-separator.d.ts +1 -1
  189. package/dist/primitives/react-slider.d.ts +2 -2
  190. package/dist/primitives/react-switch.d.ts +2 -2
  191. package/dist/primitives/react-tabs.d.ts +3 -3
  192. package/dist/primitives/react-toast.d.ts +3 -3
  193. package/dist/primitives/react-toggle-group.d.ts +4 -4
  194. package/dist/primitives/react-toggle.d.ts +1 -1
  195. package/dist/primitives/react-tooltip.d.ts +5 -5
  196. package/dist/primitives/react-visually-hidden.d.ts +1 -1
  197. package/dist/shell/app-command-palette.d.ts +2 -3
  198. package/dist/shell/bottom-navbar.d.ts +1 -2
  199. package/dist/shell/command-registry.d.ts +1 -2
  200. package/dist/shell/index.d.ts +12 -11
  201. package/dist/shell/index.d.ts.map +1 -1
  202. package/dist/shell/index.js +2 -3
  203. package/dist/shell/link-context.d.ts +2 -3
  204. package/dist/shell/notification-center.d.ts +0 -1
  205. package/dist/shell/notification-preferences.d.ts +0 -1
  206. package/dist/shell/notification-preferences.d.ts.map +1 -1
  207. package/dist/shell/notification-preferences.js +2 -0
  208. package/dist/shell/notification-preferences.js.map +1 -1
  209. package/dist/shell/top-bar.d.ts +1 -2
  210. package/dist/test-utils/conformance.d.ts +0 -1
  211. package/dist/ui/accordion.d.ts +1 -2
  212. package/dist/ui/accordion.js +1 -1
  213. package/dist/ui/alert-dialog.d.ts +1 -2
  214. package/dist/ui/alert-dialog.js +52 -52
  215. package/dist/ui/alert.d.ts +0 -1
  216. package/dist/ui/aspect-ratio.d.ts +1 -2
  217. package/dist/ui/aspect-ratio.js +4 -4
  218. package/dist/ui/autocomplete.d.ts +1 -2
  219. package/dist/ui/autocomplete.js +1 -1
  220. package/dist/ui/avatar.d.ts +1 -2
  221. package/dist/ui/avatar.js +33 -33
  222. package/dist/ui/badge-group.d.ts +1 -2
  223. package/dist/ui/badge-indicator.d.ts +0 -1
  224. package/dist/ui/badge.d.ts +3 -4
  225. package/dist/ui/banner.d.ts +0 -1
  226. package/dist/ui/breadcrumb.js +1 -1
  227. package/dist/ui/button-group.d.ts +1 -2
  228. package/dist/ui/button-processing.d.ts +0 -1
  229. package/dist/ui/button.d.ts +1 -2
  230. package/dist/ui/button.js +1 -1
  231. package/dist/ui/card.d.ts +0 -1
  232. package/dist/ui/charts/_internal/animation.d.ts +0 -1
  233. package/dist/ui/charts/_internal/axes.d.ts +0 -1
  234. package/dist/ui/charts/_internal/colors.d.ts +1 -2
  235. package/dist/ui/charts/_internal/grid-lines.d.ts +0 -1
  236. package/dist/ui/charts/_internal/legend.d.ts +0 -1
  237. package/dist/ui/charts/_internal/scales.d.ts +0 -1
  238. package/dist/ui/charts/_internal/tooltip.d.ts +0 -1
  239. package/dist/ui/charts/_internal/types.d.ts +0 -1
  240. package/dist/ui/charts/area-chart.d.ts +1 -2
  241. package/dist/ui/charts/bar-chart.d.ts +1 -2
  242. package/dist/ui/charts/chart-container.d.ts +1 -2
  243. package/dist/ui/charts/gauge-chart.d.ts +0 -1
  244. package/dist/ui/charts/index.d.ts +9 -10
  245. package/dist/ui/charts/line-chart.d.ts +1 -2
  246. package/dist/ui/charts/pie-chart.d.ts +0 -1
  247. package/dist/ui/charts/radar-chart.d.ts +0 -1
  248. package/dist/ui/charts/sparkline.d.ts +0 -1
  249. package/dist/ui/chat/date-separator.d.ts +0 -1
  250. package/dist/ui/chat/index.d.ts +7 -8
  251. package/dist/ui/chat/message-input.d.ts +0 -1
  252. package/dist/ui/chat/message-list.d.ts +0 -1
  253. package/dist/ui/chat/message.d.ts +1 -2
  254. package/dist/ui/chat/system-message.d.ts +1 -2
  255. package/dist/ui/chat/typing-indicator.d.ts +0 -1
  256. package/dist/ui/chat/unread-separator.d.ts +0 -1
  257. package/dist/ui/checkbox.d.ts +2 -3
  258. package/dist/ui/checkbox.js +13 -13
  259. package/dist/ui/collapsible.d.ts +1 -2
  260. package/dist/ui/collapsible.js +1 -1
  261. package/dist/ui/color-input.d.ts +0 -1
  262. package/dist/ui/color-swatch.d.ts +0 -1
  263. package/dist/ui/combobox.d.ts +3 -4
  264. package/dist/ui/combobox.d.ts.map +1 -1
  265. package/dist/ui/combobox.js +146 -141
  266. package/dist/ui/combobox.js.map +1 -1
  267. package/dist/ui/context-menu.d.ts +1 -2
  268. package/dist/ui/context-menu.js +58 -58
  269. package/dist/ui/data-table-body.d.ts +0 -1
  270. package/dist/ui/data-table-bulk-actions.d.ts +0 -1
  271. package/dist/ui/data-table-card.d.ts +0 -1
  272. package/dist/ui/data-table-context.d.ts +0 -1
  273. package/dist/ui/data-table-header.d.ts +0 -1
  274. package/dist/ui/data-table-pagination.d.ts +0 -1
  275. package/dist/ui/data-table-toolbar.d.ts +0 -1
  276. package/dist/ui/data-table.d.ts +3 -4
  277. package/dist/ui/devalok-grain.d.ts +0 -1
  278. package/dist/ui/dialog.d.ts +1 -2
  279. package/dist/ui/dialog.js +43 -43
  280. package/dist/ui/dot.d.ts +0 -1
  281. package/dist/ui/dropdown-menu.d.ts +1 -2
  282. package/dist/ui/dropdown-menu.js +69 -69
  283. package/dist/ui/file-upload.d.ts +0 -1
  284. package/dist/ui/file-upload.d.ts.map +1 -1
  285. package/dist/ui/file-upload.js +124 -138
  286. package/dist/ui/file-upload.js.map +1 -1
  287. package/dist/ui/form.d.ts +7 -1
  288. package/dist/ui/form.d.ts.map +1 -1
  289. package/dist/ui/form.js +4 -2
  290. package/dist/ui/form.js.map +1 -1
  291. package/dist/ui/hover-card.d.ts +1 -2
  292. package/dist/ui/hover-card.js +16 -16
  293. package/dist/ui/icon-button.d.ts +4 -4
  294. package/dist/ui/icon-button.d.ts.map +1 -1
  295. package/dist/ui/icon-button.js +1 -1
  296. package/dist/ui/icon-button.js.map +1 -1
  297. package/dist/ui/icon-context.d.ts +0 -1
  298. package/dist/ui/icon-group.d.ts +1 -2
  299. package/dist/ui/icon.d.ts +1 -2
  300. package/dist/ui/index.d.ts +78 -79
  301. package/dist/ui/index.d.ts.map +1 -1
  302. package/dist/ui/index.js.map +1 -1
  303. package/dist/ui/input-otp.d.ts +0 -1
  304. package/dist/ui/input.d.ts +1 -2
  305. package/dist/ui/label.d.ts +1 -2
  306. package/dist/ui/label.d.ts.map +1 -1
  307. package/dist/ui/label.js +13 -12
  308. package/dist/ui/label.js.map +1 -1
  309. package/dist/ui/lib/bottom-sheet.d.ts +0 -1
  310. package/dist/ui/lib/check-tokens.d.ts +0 -1
  311. package/dist/ui/lib/field-state.d.ts +0 -1
  312. package/dist/ui/lib/icon-input.d.ts +0 -1
  313. package/dist/ui/lib/index.d.ts +6 -7
  314. package/dist/ui/lib/keybinding.d.ts +0 -1
  315. package/dist/ui/lib/link-context.d.ts +0 -1
  316. package/dist/ui/lib/mention.d.ts +0 -1
  317. package/dist/ui/lib/normalize-icon.d.ts +2 -2
  318. package/dist/ui/lib/slot.d.ts +2 -3
  319. package/dist/ui/lib/use-controllable-open.d.ts +0 -1
  320. package/dist/ui/link.d.ts +0 -1
  321. package/dist/ui/link.js +1 -1
  322. package/dist/ui/menubar.d.ts +1 -2
  323. package/dist/ui/menubar.js +64 -64
  324. package/dist/ui/navigation-menu.d.ts +1 -2
  325. package/dist/ui/navigation-menu.js +67 -67
  326. package/dist/ui/number-input.d.ts +1 -2
  327. package/dist/ui/oauth-button/index.d.ts +1 -2
  328. package/dist/ui/oauth-button/oauth-button.d.ts +2 -3
  329. package/dist/ui/pagination.d.ts +0 -1
  330. package/dist/ui/pagination.js +1 -1
  331. package/dist/ui/popover.d.ts +1 -2
  332. package/dist/ui/progress-ring.d.ts +0 -1
  333. package/dist/ui/progress.d.ts +1 -2
  334. package/dist/ui/progress.js +30 -30
  335. package/dist/ui/radio.d.ts +2 -3
  336. package/dist/ui/radio.js +18 -18
  337. package/dist/ui/search-input.d.ts +0 -1
  338. package/dist/ui/segmented-control.d.ts +1 -2
  339. package/dist/ui/select.d.ts +1 -2
  340. package/dist/ui/select.js +55 -55
  341. package/dist/ui/separator.d.ts +1 -2
  342. package/dist/ui/separator.js +5 -5
  343. package/dist/ui/sheet.d.ts +1 -2
  344. package/dist/ui/sheet.js +45 -45
  345. package/dist/ui/sidebar.d.ts +4 -5
  346. package/dist/ui/sidebar.js +1 -1
  347. package/dist/ui/slider.d.ts +1 -2
  348. package/dist/ui/slider.js +14 -14
  349. package/dist/ui/spinner.d.ts +0 -1
  350. package/dist/ui/spinner.d.ts.map +1 -1
  351. package/dist/ui/spinner.js +50 -44
  352. package/dist/ui/spinner.js.map +1 -1
  353. package/dist/ui/split-button.d.ts +14 -4
  354. package/dist/ui/split-button.d.ts.map +1 -1
  355. package/dist/ui/split-button.js.map +1 -1
  356. package/dist/ui/stat-card.d.ts +3 -4
  357. package/dist/ui/stat-flash.d.ts +1 -2
  358. package/dist/ui/stepper.d.ts +1 -2
  359. package/dist/ui/surface.js +1 -1
  360. package/dist/ui/switch.d.ts +2 -3
  361. package/dist/ui/switch.d.ts.map +1 -1
  362. package/dist/ui/switch.js +31 -31
  363. package/dist/ui/switch.js.map +1 -1
  364. package/dist/ui/table-row-link.d.ts +0 -1
  365. package/dist/ui/table.js +1 -1
  366. package/dist/ui/table.js.map +1 -1
  367. package/dist/ui/tabs.d.ts +1 -2
  368. package/dist/ui/tabs.js +35 -35
  369. package/dist/ui/textarea.d.ts +1 -2
  370. package/dist/ui/toast-registry.d.ts +0 -1
  371. package/dist/ui/toast-types.js +1 -0
  372. package/dist/ui/toast.d.ts +2 -3
  373. package/dist/ui/toaster.d.ts +0 -1
  374. package/dist/ui/toggle-group.d.ts +2 -3
  375. package/dist/ui/toggle-group.js +14 -14
  376. package/dist/ui/toggle.d.ts +1 -2
  377. package/dist/ui/toggle.js +12 -12
  378. package/dist/ui/tooltip.d.ts +1 -2
  379. package/dist/ui/tooltip.js +21 -21
  380. package/dist/ui/tree-view/index.d.ts +3 -4
  381. package/dist/ui/tree-view/tree-item.d.ts +1 -2
  382. package/dist/ui/tree-view/tree-view.d.ts +1 -2
  383. package/dist/ui/tree-view/use-tree.d.ts +1 -2
  384. package/dist/ui/truncated-text.d.ts +0 -1
  385. package/docs/components/composed/bulk-action-bar.md +9 -3
  386. package/docs/components/composed/error-boundary.md +18 -2
  387. package/docs/components/composed/master-detail.md +12 -2
  388. package/docs/components/composed/page-skeletons.md +2 -2
  389. package/docs/components/composed/rich-chat-input.md +18 -6
  390. package/docs/components/composed/simple-tooltip.md +1 -1
  391. package/docs/components/shell/app-command-palette.md +2 -1
  392. package/docs/components/shell/bottom-navbar.md +4 -4
  393. package/docs/components/shell/command-registry.md +2 -2
  394. package/docs/components/shell/link-context.md +2 -2
  395. package/docs/components/shell/top-bar.md +1 -1
  396. package/docs/components/ui/search-input.md +2 -2
  397. package/docs/components/ui/slider.md +2 -2
  398. package/docs/components/ui/split-button.md +3 -3
  399. package/docs/recipes/install-astro.md +2 -0
  400. package/docs/recipes/install-next-app-router.md +2 -0
  401. package/docs/recipes/install-remix.md +2 -0
  402. package/docs/recipes/install-tanstack-start.md +2 -0
  403. package/docs/recipes/install-vite.md +2 -0
  404. package/docs/recipes/troubleshoot.md +80 -0
  405. package/llms.txt +2 -2
  406. package/make-kit/Guidelines.md +1 -1
  407. package/make-kit/components/overview.md +2 -2
  408. package/make-kit/foundations/surfaces.md +1 -1
  409. package/mcp-manifest.json +411 -147
  410. package/package.json +30 -10
  411. package/skill/SKILL.md +1 -1
  412. package/skill/chat-skill/README.md +18 -0
  413. package/skill/chat-skill/SKILL.md +78 -0
  414. package/skill/chat-skill/chatgpt-instructions.md +26 -0
  415. package/skill/chat-skill/gemini-instructions.md +25 -0
  416. package/skill/references/components.md +2 -2
  417. package/skill/references/setup-astro.md +2 -0
  418. package/skill/references/setup-next-app-router.md +2 -0
  419. package/skill/references/setup-remix.md +2 -0
  420. package/skill/references/setup-tanstack-start.md +2 -0
  421. package/skill/references/setup-vite.md +2 -0
  422. package/skill/references/troubleshoot.md +80 -0
  423. package/dist/_chunks/primitives.js +0 -7596
  424. package/dist/_chunks/primitives.js.map +0 -1
  425. package/dist/shell/sidebar.d.ts +0 -113
  426. package/dist/shell/sidebar.d.ts.map +0 -1
  427. package/dist/shell/sidebar.js +0 -293
  428. package/dist/shell/sidebar.js.map +0 -1
  429. package/docs/components/shell/sidebar.md +0 -103
@@ -1,6 +1,6 @@
1
- import * as _radix_ui_react_context from './_internal/react-context';
1
+ import * as _radix_ui_react_context from './_internal/react-context.js';
2
2
  import * as React from 'react';
3
- import { Primitive } from './_internal/react-primitive';
3
+ import { Primitive } from './_internal/react-primitive.js';
4
4
 
5
5
  declare const createCollapsibleScope: _radix_ui_react_context.CreateScope;
6
6
  type PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;
@@ -1,7 +1,7 @@
1
- import * as _radix_ui_react_context from './_internal/react-context';
1
+ import * as _radix_ui_react_context from './_internal/react-context.js';
2
2
  import * as React from 'react';
3
- import { Primitive } from './_internal/react-primitive';
4
- import * as MenuPrimitive from './react-menu';
3
+ import { Primitive } from './_internal/react-primitive.js';
4
+ import * as MenuPrimitive from './react-menu.js';
5
5
 
6
6
  type Direction = 'ltr' | 'rtl';
7
7
  declare const createContextMenuScope: _radix_ui_react_context.CreateScope;
@@ -1,9 +1,9 @@
1
- import * as _radix_ui_react_context from './_internal/react-context';
1
+ import * as _radix_ui_react_context from './_internal/react-context.js';
2
2
  import * as React from 'react';
3
- import { DismissableLayer } from './_internal/react-dismissable-layer';
4
- import { FocusScope } from './_internal/react-focus-scope';
5
- import { Portal as Portal$1 } from './_internal/react-portal';
6
- import { Primitive } from './_internal/react-primitive';
3
+ import { DismissableLayer } from './_internal/react-dismissable-layer.js';
4
+ import { FocusScope } from './_internal/react-focus-scope.js';
5
+ import { Portal as Portal$1 } from './_internal/react-portal.js';
6
+ import { Primitive } from './_internal/react-primitive.js';
7
7
 
8
8
  declare const createDialogScope: _radix_ui_react_context.CreateScope;
9
9
  interface DialogProps {
@@ -1,7 +1,7 @@
1
- import * as _radix_ui_react_context from './_internal/react-context';
1
+ import * as _radix_ui_react_context from './_internal/react-context.js';
2
2
  import * as React from 'react';
3
- import { Primitive } from './_internal/react-primitive';
4
- import * as MenuPrimitive from './react-menu';
3
+ import { Primitive } from './_internal/react-primitive.js';
4
+ import * as MenuPrimitive from './react-menu.js';
5
5
 
6
6
  type Direction = 'ltr' | 'rtl';
7
7
  declare const createDropdownMenuScope: _radix_ui_react_context.CreateScope;
@@ -1,9 +1,9 @@
1
- import * as _radix_ui_react_context from './_internal/react-context';
1
+ import * as _radix_ui_react_context from './_internal/react-context.js';
2
2
  import * as React from 'react';
3
- import * as PopperPrimitive from './_internal/react-popper';
4
- import { Portal as Portal$1 } from './_internal/react-portal';
5
- import { Primitive } from './_internal/react-primitive';
6
- import { DismissableLayer } from './_internal/react-dismissable-layer';
3
+ import * as PopperPrimitive from './_internal/react-popper.js';
4
+ import { Portal as Portal$1 } from './_internal/react-portal.js';
5
+ import { Primitive } from './_internal/react-primitive.js';
6
+ import { DismissableLayer } from './_internal/react-dismissable-layer.js';
7
7
 
8
8
  declare const createHoverCardScope: _radix_ui_react_context.CreateScope;
9
9
  interface HoverCardProps {
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { Primitive } from './_internal/react-primitive';
2
+ import { Primitive } from './_internal/react-primitive.js';
3
3
 
4
4
  type PrimitiveLabelProps = React.ComponentPropsWithoutRef<typeof Primitive.label>;
5
5
  interface LabelProps extends PrimitiveLabelProps {
@@ -1,11 +1,11 @@
1
- import * as _radix_ui_react_context from './_internal/react-context';
1
+ import * as _radix_ui_react_context from './_internal/react-context.js';
2
2
  import * as React from 'react';
3
- import { DismissableLayer } from './_internal/react-dismissable-layer';
4
- import { FocusScope } from './_internal/react-focus-scope';
5
- import * as PopperPrimitive from './_internal/react-popper';
6
- import { Portal as Portal$1 } from './_internal/react-portal';
7
- import { Primitive } from './_internal/react-primitive';
8
- import * as RovingFocusGroup from './react-roving-focus';
3
+ import { DismissableLayer } from './_internal/react-dismissable-layer.js';
4
+ import { FocusScope } from './_internal/react-focus-scope.js';
5
+ import * as PopperPrimitive from './_internal/react-popper.js';
6
+ import { Portal as Portal$1 } from './_internal/react-portal.js';
7
+ import { Primitive } from './_internal/react-primitive.js';
8
+ import * as RovingFocusGroup from './react-roving-focus.js';
9
9
 
10
10
  type Direction = 'ltr' | 'rtl';
11
11
  declare const createMenuScope: _radix_ui_react_context.CreateScope;
@@ -1,10 +1,10 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import * as _radix_ui_react_context from './_internal/react-context';
3
- import { Scope } from './_internal/react-context';
2
+ import * as _radix_ui_react_context from './_internal/react-context.js';
3
+ import { Scope } from './_internal/react-context.js';
4
4
  import * as React from 'react';
5
- import * as MenuPrimitive from './react-menu';
6
- import * as RovingFocusGroup from './react-roving-focus';
7
- import { Primitive } from './_internal/react-primitive';
5
+ import * as MenuPrimitive from './react-menu.js';
6
+ import * as RovingFocusGroup from './react-roving-focus.js';
7
+ import { Primitive } from './_internal/react-primitive.js';
8
8
 
9
9
  type ScopedProps<P> = P & {
10
10
  __scopeMenubar?: Scope;
@@ -1,9 +1,9 @@
1
- import * as _radix_ui_react_context from './_internal/react-context';
2
- import { Scope } from './_internal/react-context';
1
+ import * as _radix_ui_react_context from './_internal/react-context.js';
2
+ import { Scope } from './_internal/react-context.js';
3
3
  import * as React from 'react';
4
- import { Primitive } from './_internal/react-primitive';
5
- import { DismissableLayer } from './_internal/react-dismissable-layer';
6
- import * as VisuallyHiddenPrimitive from './react-visually-hidden';
4
+ import { Primitive } from './_internal/react-primitive.js';
5
+ import { DismissableLayer } from './_internal/react-dismissable-layer.js';
6
+ import * as VisuallyHiddenPrimitive from './react-visually-hidden.js';
7
7
 
8
8
  type Orientation = 'vertical' | 'horizontal';
9
9
  type Direction = 'ltr' | 'rtl';
@@ -1,10 +1,10 @@
1
- import * as _radix_ui_react_context from './_internal/react-context';
1
+ import * as _radix_ui_react_context from './_internal/react-context.js';
2
2
  import * as React from 'react';
3
- import { DismissableLayer } from './_internal/react-dismissable-layer';
4
- import { FocusScope } from './_internal/react-focus-scope';
5
- import * as PopperPrimitive from './_internal/react-popper';
6
- import { Portal as Portal$1 } from './_internal/react-portal';
7
- import { Primitive } from './_internal/react-primitive';
3
+ import { DismissableLayer } from './_internal/react-dismissable-layer.js';
4
+ import { FocusScope } from './_internal/react-focus-scope.js';
5
+ import * as PopperPrimitive from './_internal/react-popper.js';
6
+ import { Portal as Portal$1 } from './_internal/react-portal.js';
7
+ import { Primitive } from './_internal/react-primitive.js';
8
8
 
9
9
  declare const createPopoverScope: _radix_ui_react_context.CreateScope;
10
10
  interface PopoverProps {
@@ -1,6 +1,6 @@
1
- import * as _radix_ui_react_context from './_internal/react-context';
1
+ import * as _radix_ui_react_context from './_internal/react-context.js';
2
2
  import * as React from 'react';
3
- import { Primitive } from './_internal/react-primitive';
3
+ import { Primitive } from './_internal/react-primitive.js';
4
4
 
5
5
  declare const createProgressScope: _radix_ui_react_context.CreateScope;
6
6
  type PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;
@@ -1,7 +1,7 @@
1
- import * as _radix_ui_react_context from './_internal/react-context';
1
+ import * as _radix_ui_react_context from './_internal/react-context.js';
2
2
  import * as React from 'react';
3
- import { Primitive } from './_internal/react-primitive';
4
- import * as RovingFocusGroup from './react-roving-focus';
3
+ import { Primitive } from './_internal/react-primitive.js';
4
+ import * as RovingFocusGroup from './react-roving-focus.js';
5
5
 
6
6
  type PrimitiveButtonProps = React.ComponentPropsWithoutRef<typeof Primitive.button>;
7
7
  interface RadioProps$1 extends PrimitiveButtonProps {
@@ -1,6 +1,6 @@
1
- import * as _radix_ui_react_context from './_internal/react-context';
1
+ import * as _radix_ui_react_context from './_internal/react-context.js';
2
2
  import * as React from 'react';
3
- import { Primitive } from './_internal/react-primitive';
3
+ import { Primitive } from './_internal/react-primitive.js';
4
4
 
5
5
  declare const createRovingFocusGroupScope: _radix_ui_react_context.CreateScope;
6
6
  type Orientation = React.AriaAttributes['aria-orientation'];
@@ -1,10 +1,10 @@
1
- import * as _radix_ui_react_context from './_internal/react-context';
1
+ import * as _radix_ui_react_context from './_internal/react-context.js';
2
2
  import * as React from 'react';
3
- import { DismissableLayer } from './_internal/react-dismissable-layer';
4
- import { FocusScope } from './_internal/react-focus-scope';
5
- import * as PopperPrimitive from './_internal/react-popper';
6
- import { Portal as Portal$1 } from './_internal/react-portal';
7
- import { Primitive } from './_internal/react-primitive';
3
+ import { DismissableLayer } from './_internal/react-dismissable-layer.js';
4
+ import { FocusScope } from './_internal/react-focus-scope.js';
5
+ import * as PopperPrimitive from './_internal/react-popper.js';
6
+ import { Portal as Portal$1 } from './_internal/react-portal.js';
7
+ import { Primitive } from './_internal/react-primitive.js';
8
8
 
9
9
  type Direction = 'ltr' | 'rtl';
10
10
  declare const createSelectScope: _radix_ui_react_context.CreateScope;
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { Primitive } from './_internal/react-primitive';
2
+ import { Primitive } from './_internal/react-primitive.js';
3
3
 
4
4
  declare const ORIENTATIONS: readonly ["horizontal", "vertical"];
5
5
  type Orientation = (typeof ORIENTATIONS)[number];
@@ -1,6 +1,6 @@
1
- import * as _radix_ui_react_context from './_internal/react-context';
1
+ import * as _radix_ui_react_context from './_internal/react-context.js';
2
2
  import * as React from 'react';
3
- import { Primitive } from './_internal/react-primitive';
3
+ import { Primitive } from './_internal/react-primitive.js';
4
4
 
5
5
  type Direction = 'ltr' | 'rtl';
6
6
  declare const createSliderScope: _radix_ui_react_context.CreateScope;
@@ -1,6 +1,6 @@
1
- import * as _radix_ui_react_context from './_internal/react-context';
1
+ import * as _radix_ui_react_context from './_internal/react-context.js';
2
2
  import * as React from 'react';
3
- import { Primitive } from './_internal/react-primitive';
3
+ import { Primitive } from './_internal/react-primitive.js';
4
4
 
5
5
  declare const createSwitchScope: _radix_ui_react_context.CreateScope;
6
6
  type PrimitiveButtonProps = React.ComponentPropsWithoutRef<typeof Primitive.button>;
@@ -1,7 +1,7 @@
1
- import * as _radix_ui_react_context from './_internal/react-context';
1
+ import * as _radix_ui_react_context from './_internal/react-context.js';
2
2
  import * as React from 'react';
3
- import { Primitive } from './_internal/react-primitive';
4
- import * as RovingFocusGroup from './react-roving-focus';
3
+ import { Primitive } from './_internal/react-primitive.js';
4
+ import * as RovingFocusGroup from './react-roving-focus.js';
5
5
 
6
6
  declare const createTabsScope: _radix_ui_react_context.CreateScope;
7
7
  type RovingFocusGroupProps = React.ComponentPropsWithoutRef<typeof RovingFocusGroup.Root>;
@@ -1,7 +1,7 @@
1
- import * as _radix_ui_react_context from './_internal/react-context';
1
+ import * as _radix_ui_react_context from './_internal/react-context.js';
2
2
  import * as React from 'react';
3
- import * as DismissableLayer from './_internal/react-dismissable-layer';
4
- import { Primitive } from './_internal/react-primitive';
3
+ import * as DismissableLayer from './_internal/react-dismissable-layer.js';
4
+ import { Primitive } from './_internal/react-primitive.js';
5
5
 
6
6
  type SwipeDirection = 'up' | 'down' | 'left' | 'right';
7
7
  declare const createToastScope: _radix_ui_react_context.CreateScope;
@@ -1,8 +1,8 @@
1
- import * as _radix_ui_react_context from './_internal/react-context';
1
+ import * as _radix_ui_react_context from './_internal/react-context.js';
2
2
  import React from 'react';
3
- import { Primitive } from './_internal/react-primitive';
4
- import * as RovingFocusGroup from './react-roving-focus';
5
- import { Toggle } from './react-toggle';
3
+ import { Primitive } from './_internal/react-primitive.js';
4
+ import * as RovingFocusGroup from './react-roving-focus.js';
5
+ import { Toggle } from './react-toggle.js';
6
6
 
7
7
  declare const createToggleGroupScope: _radix_ui_react_context.CreateScope;
8
8
  interface ToggleGroupSingleProps extends ToggleGroupImplSingleProps {
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { Primitive } from './_internal/react-primitive';
2
+ import { Primitive } from './_internal/react-primitive.js';
3
3
 
4
4
  type PrimitiveButtonProps = React.ComponentPropsWithoutRef<typeof Primitive.button>;
5
5
  interface ToggleProps extends PrimitiveButtonProps {
@@ -1,9 +1,9 @@
1
- import * as _radix_ui_react_context from './_internal/react-context';
1
+ import * as _radix_ui_react_context from './_internal/react-context.js';
2
2
  import * as React from 'react';
3
- import { DismissableLayer } from './_internal/react-dismissable-layer';
4
- import * as PopperPrimitive from './_internal/react-popper';
5
- import { Portal as Portal$1 } from './_internal/react-portal';
6
- import { Primitive } from './_internal/react-primitive';
3
+ import { DismissableLayer } from './_internal/react-dismissable-layer.js';
4
+ import * as PopperPrimitive from './_internal/react-popper.js';
5
+ import { Portal as Portal$1 } from './_internal/react-portal.js';
6
+ import { Primitive } from './_internal/react-primitive.js';
7
7
 
8
8
  declare const createTooltipScope: _radix_ui_react_context.CreateScope;
9
9
  interface TooltipProviderProps {
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { Primitive } from './_internal/react-primitive';
2
+ import { Primitive } from './_internal/react-primitive.js';
3
3
 
4
4
  declare const VISUALLY_HIDDEN_STYLES: Readonly<{
5
5
  position: "absolute";
@@ -1,6 +1,5 @@
1
- "use client";
2
- import { CommandGroup, CommandPaletteProps, FooterHint } from '../composed/command-palette';
3
- import { IconInput } from '../ui/lib/icon-input';
1
+ import { CommandGroup, CommandPaletteProps, FooterHint } from '../composed/command-palette.js';
2
+ import { IconInput } from '../ui/lib/icon-input.js';
4
3
  import * as React from 'react';
5
4
  export interface SearchResult {
6
5
  id: string;
@@ -1,5 +1,4 @@
1
- "use client";
2
- import { IconInput } from '../ui/lib/icon-input';
1
+ import { IconInput } from '../ui/lib/icon-input.js';
3
2
  import * as React from 'react';
4
3
  export interface BottomNavbarUser {
5
4
  name: string;
@@ -1,5 +1,4 @@
1
- "use client";
2
- import { IconInput } from '../ui/lib/icon-input';
1
+ import { IconInput } from '../ui/lib/icon-input.js';
3
2
  import * as React from 'react';
4
3
  export interface CommandPageItem {
5
4
  id: string;
@@ -1,20 +1,21 @@
1
- "use client";
2
1
  /**
3
2
  * @module @devalok/shilp-sutra/shell
4
3
  *
5
- * Application shell components: sidebar, top bar, bottom nav, notifications, and command palette.
4
+ * Application shell components: top bar, bottom nav, notifications, and command palette.
6
5
  * All shell components require client-side React ("use client").
7
6
  *
7
+ * For sidebars, compose the `Sidebar` primitives from `@devalok/shilp-sutra/ui/sidebar`,
8
+ * or start from a ready-made preset (e.g. `sidebar-app`) at
9
+ * https://shilp-sutra.devalok.in/presets.
10
+ *
8
11
  * @example
9
- * import { AppSidebar } from '@devalok/shilp-sutra/shell/sidebar'
10
12
  * import { TopBar } from '@devalok/shilp-sutra/shell/top-bar'
11
13
  */
12
- export { AppCommandPalette, type AppCommandPaletteProps, type AppCommandPaletteUser, type SearchResult, type SearchResultGroup, } from './app-command-palette';
13
- export { BottomNavbar, type BottomNavbarProps, type BottomNavbarUser, type BottomNavItem, } from './bottom-navbar';
14
- export { type CommandPageItem, type CommandRegistry, CommandRegistryProvider, type CommandRegistryProviderProps, useCommandRegistry, } from './command-registry';
15
- export { LinkProvider, type LinkProviderProps, useLink } from './link-context';
16
- export { type Notification, NotificationCenter, type NotificationCenterProps, } from './notification-center';
17
- export { type NotificationPreference, NotificationPreferences, type NotificationPreferencesProps, type NotificationProject, } from './notification-preferences';
18
- export { AppSidebar, type AppSidebarProps, type NavGroup, type NavItem, type SidebarUser, } from './sidebar';
19
- export { TopBar, type TopBarProps, type TopBarUser, type UserMenuItem, } from './top-bar';
14
+ export { AppCommandPalette, type AppCommandPaletteProps, type AppCommandPaletteUser, type SearchResult, type SearchResultGroup, } from './app-command-palette.js';
15
+ export { BottomNavbar, type BottomNavbarProps, type BottomNavbarUser, type BottomNavItem, } from './bottom-navbar.js';
16
+ export { type CommandPageItem, type CommandRegistry, CommandRegistryProvider, type CommandRegistryProviderProps, useCommandRegistry, } from './command-registry.js';
17
+ export { LinkProvider, type LinkProviderProps, useLink } from './link-context.js';
18
+ export { type Notification, NotificationCenter, type NotificationCenterProps, } from './notification-center.js';
19
+ export { type NotificationPreference, NotificationPreferences, type NotificationPreferencesProps, type NotificationProject, } from './notification-preferences.js';
20
+ export { TopBar, type TopBarProps, type TopBarUser, type UserMenuItem, } from './top-bar.js';
20
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/shell/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EACL,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,YAAY,EACjB,KAAK,iBAAiB,GACvB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,aAAa,GACnB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,uBAAuB,EACvB,KAAK,4BAA4B,EACjC,kBAAkB,GACnB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAC,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAC7E,OAAO,EACL,KAAK,YAAY,EACjB,kBAAkB,EAClB,KAAK,uBAAuB,GAC7B,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,KAAK,sBAAsB,EAC3B,uBAAuB,EACvB,KAAK,4BAA4B,EACjC,KAAK,mBAAmB,GACzB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,UAAU,EACV,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,KAAK,OAAO,EACZ,KAAK,WAAW,GACjB,MAAM,WAAW,CAAA;AAClB,OAAO,EACL,MAAM,EACN,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,YAAY,GAClB,MAAM,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/shell/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EACL,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,YAAY,EACjB,KAAK,iBAAiB,GACvB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,aAAa,GACnB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,uBAAuB,EACvB,KAAK,4BAA4B,EACjC,kBAAkB,GACnB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAC,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAC7E,OAAO,EACL,KAAK,YAAY,EACjB,kBAAkB,EAClB,KAAK,uBAAuB,GAC7B,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,KAAK,sBAAsB,EAC3B,uBAAuB,EACvB,KAAK,4BAA4B,EACjC,KAAK,mBAAmB,GACzB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,MAAM,EACN,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,YAAY,GAClB,MAAM,WAAW,CAAA"}
@@ -6,6 +6,5 @@ import "./link-context.js";
6
6
  import { BottomNavbar as a } from "./bottom-navbar.js";
7
7
  import { NotificationCenter as o } from "./notification-center.js";
8
8
  import { NotificationPreferences as s } from "./notification-preferences.js";
9
- import { AppSidebar as c } from "./sidebar.js";
10
- import { TopBar as l } from "./top-bar.js";
11
- export { i as AppCommandPalette, c as AppSidebar, a as BottomNavbar, n as CommandRegistryProvider, e as LinkProvider, o as NotificationCenter, s as NotificationPreferences, l as TopBar, r as useCommandRegistry, t as useLink };
9
+ import { TopBar as c } from "./top-bar.js";
10
+ export { i as AppCommandPalette, a as BottomNavbar, n as CommandRegistryProvider, e as LinkProvider, o as NotificationCenter, s as NotificationPreferences, c as TopBar, r as useCommandRegistry, t as useLink };
@@ -1,8 +1,7 @@
1
- "use client";
2
1
  /**
3
2
  * Re-export from canonical location in ui/lib so both ui/ and shell/ can use it
4
3
  * without violating module boundary rules (ui/ must not import from shell/).
5
4
  */
6
- export type { LinkProviderProps } from '../ui/lib/link-context';
7
- export { LinkProvider, useLink } from '../ui/lib/link-context';
5
+ export type { LinkProviderProps } from '../ui/lib/link-context.js';
6
+ export { LinkProvider, useLink } from '../ui/lib/link-context.js';
8
7
  //# sourceMappingURL=link-context.d.ts.map
@@ -1,4 +1,3 @@
1
- "use client";
2
1
  import * as React from 'react';
3
2
  export interface NotificationAction {
4
3
  /** Button label */
@@ -1,4 +1,3 @@
1
- "use client";
2
1
  import * as React from 'react';
3
2
  export interface NotificationPreference {
4
3
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"notification-preferences.d.ts","sourceRoot":"","sources":["../../src/shell/notification-preferences.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AA6B9B,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,OAAO,CAAA;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,4BACf,SAAQ,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;IAC1D,+BAA+B;IAC/B,WAAW,CAAC,EAAE,sBAAsB,EAAE,CAAA;IACtC,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,mBAAmB,EAAE,CAAA;IAChC,8BAA8B;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,2CAA2C;IAC3C,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE;QACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;QACxB,OAAO,EAAE,MAAM,CAAA;QACf,OAAO,EAAE,MAAM,CAAA;QACf,KAAK,EAAE,OAAO,CAAA;KACf,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1B,4CAA4C;IAC5C,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,sBAAsB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3E,gDAAgD;IAChD,YAAY,CAAC,EAAE,CACb,UAAU,EAAE,sBAAsB,EAClC,OAAO,EAAE,MAAM,KACZ,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACzB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACzD,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAqBD,QAAA,MAAM,uBAAuB,kHA4P5B,CAAA;AAID,OAAO,EAAE,uBAAuB,EAAE,CAAA"}
1
+ {"version":3,"file":"notification-preferences.d.ts","sourceRoot":"","sources":["../../src/shell/notification-preferences.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AA6B9B,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,OAAO,CAAA;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,4BACf,SAAQ,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;IAC1D,+BAA+B;IAC/B,WAAW,CAAC,EAAE,sBAAsB,EAAE,CAAA;IACtC,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,mBAAmB,EAAE,CAAA;IAChC,8BAA8B;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,2CAA2C;IAC3C,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE;QACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;QACxB,OAAO,EAAE,MAAM,CAAA;QACf,OAAO,EAAE,MAAM,CAAA;QACf,KAAK,EAAE,OAAO,CAAA;KACf,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1B,4CAA4C;IAC5C,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,sBAAsB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3E,gDAAgD;IAChD,YAAY,CAAC,EAAE,CACb,UAAU,EAAE,sBAAsB,EAClC,OAAO,EAAE,MAAM,KACZ,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACzB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACzD,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAqBD,QAAA,MAAM,uBAAuB,kHAgQ5B,CAAA;AAID,OAAO,EAAE,uBAAuB,EAAE,CAAA"}
@@ -109,6 +109,7 @@ var k = {
109
109
  value: t.minTier,
110
110
  onValueChange: (e) => N?.(t, e),
111
111
  children: [/* @__PURE__ */ C(_, {
112
+ "aria-label": `Minimum notification tier for ${i.label} on ${Q(t.projectId)}`,
112
113
  className: "h-ds-xs-plus w-[130px] text-body-sm",
113
114
  children: /* @__PURE__ */ C(v, {})
114
115
  }), /* @__PURE__ */ C(h, { children: Object.entries(A).map(([e, t]) => /* @__PURE__ */ C(g, {
@@ -122,6 +123,7 @@ var k = {
122
123
  className: "text-body-sm text-surface-fg-subtle",
123
124
  children: t.muted ? "Muted" : "Active"
124
125
  }), /* @__PURE__ */ C(y, {
126
+ "aria-label": `${t.muted ? "Unmute" : "Mute"} ${i.label} for ${Q(t.projectId)}`,
125
127
  checked: !t.muted,
126
128
  onCheckedChange: () => M?.(t)
127
129
  })]
@@ -1 +1 @@
1
- {"version":3,"file":"notification-preferences.js","names":[],"sources":["../../src/shell/notification-preferences.tsx"],"sourcesContent":["'use client'\n\n/**\n * NotificationPreferences -- Manage notification rules per channel/project.\n *\n * Props-driven: accepts preferences array, projects, and callbacks.\n * No internal fetching -- the consumer is responsible for data loading.\n */\nimport { IconBell, IconMessage,IconPlus, IconTrash } from '@tabler/icons-react'\nimport * as React from 'react'\nimport { useState } from 'react'\n\nimport { Button } from '../ui/button'\nimport { Card, CardContent,CardHeader, CardTitle } from '../ui/card'\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from '../ui/dialog'\nimport { Icon } from '../ui/icon'\nimport { IconButton } from '../ui/icon-button'\nimport { cn } from '../ui/lib/utils'\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '../ui/select'\nimport { Spinner } from '../ui/spinner'\nimport { Switch } from '../ui/switch'\n\n// -----------------------------------------------------------------------\n// Types\n// -----------------------------------------------------------------------\n\nexport interface NotificationPreference {\n id: string\n userId?: string\n projectId: string | null\n channel: string\n minTier: string\n muted: boolean\n}\n\nexport interface NotificationProject {\n id: string\n title: string\n}\n\nexport interface NotificationPreferencesProps\n extends Omit<React.ComponentPropsWithRef<'div'>, 'onSave'> {\n /** Current preference rules */\n preferences?: NotificationPreference[]\n /** Available projects for scoping rules */\n projects?: NotificationProject[]\n /** Whether data is loading */\n isLoading?: boolean\n /** Called to add or update a preference */\n onSave?: (preference: {\n projectId: string | null\n channel: string\n minTier: string\n muted: boolean\n }) => void | Promise<void>\n /** Called to toggle mute on a preference */\n onToggleMute?: (preference: NotificationPreference) => void | Promise<void>\n /** Called to update the tier on a preference */\n onUpdateTier?: (\n preference: NotificationPreference,\n newTier: string,\n ) => void | Promise<void>\n /** Called to delete a preference */\n onDelete?: (preferenceId: string) => void | Promise<void>\n /** Additional className */\n className?: string\n}\n\n// -----------------------------------------------------------------------\n// Constants\n// -----------------------------------------------------------------------\n\nconst CHANNEL_LABELS: Record<string, { label: string; icon: React.ReactNode }> = {\n IN_APP: { label: 'In-App', icon: <Icon icon={IconBell} size=\"sm\" /> },\n GOOGLE_CHAT: { label: 'Google Chat', icon: <Icon icon={IconMessage} size=\"sm\" /> },\n}\n\nconst TIER_LABELS: Record<string, string> = {\n INFO: 'All (Info+)',\n IMPORTANT: 'Important+',\n CRITICAL: 'Critical only',\n}\n\n// -----------------------------------------------------------------------\n// NotificationPreferences\n// -----------------------------------------------------------------------\n\nconst NotificationPreferences = React.forwardRef<HTMLDivElement, NotificationPreferencesProps>(\n function NotificationPreferences(\n {\n preferences = [],\n projects = [],\n isLoading = false,\n onSave,\n onToggleMute,\n onUpdateTier,\n onDelete,\n className,\n ...props\n },\n ref,\n ) {\n const [showAddDialog, setShowAddDialog] = useState(false)\n const [newProjectId, setNewProjectId] = useState<string>('global')\n const [newChannel, setNewChannel] = useState<string>('IN_APP')\n const [newMinTier, setNewMinTier] = useState<string>('INFO')\n const [newMuted, setNewMuted] = useState(false)\n const [isSaving, setIsSaving] = useState(false)\n\n const handleAdd = async () => {\n if (!onSave) return\n setIsSaving(true)\n try {\n await onSave({\n projectId: newProjectId === 'global' ? null : newProjectId,\n channel: newChannel,\n minTier: newMinTier,\n muted: newMuted,\n })\n setShowAddDialog(false)\n resetForm()\n } catch (error) {\n console.error('[Preferences] Failed to save:', error)\n } finally {\n setIsSaving(false)\n }\n }\n\n const resetForm = () => {\n setNewProjectId('global')\n setNewChannel('IN_APP')\n setNewMinTier('INFO')\n setNewMuted(false)\n }\n\n const getProjectName = (projectId: string | null) => {\n if (!projectId) return 'Global (all projects)'\n const project = projects.find((p) => p.id === projectId)\n return project?.title || 'Unknown project'\n }\n\n return (\n <>\n <Card ref={ref} className={className} {...(props as Omit<typeof props, 'color'>)}>\n <CardHeader className=\"flex flex-row items-center justify-between\">\n <CardTitle className=\"text-body-md font-semibold\">\n Notification Preferences\n </CardTitle>\n <Button\n size=\"sm\"\n variant=\"outline\"\n onClick={() => setShowAddDialog(true)}\n >\n <Icon icon={IconPlus} size=\"sm\" className=\"mr-ds-02b\" />\n Add Rule\n </Button>\n </CardHeader>\n <CardContent>\n {isLoading ? (\n <div className=\"flex items-center justify-center py-ds-07\">\n <Spinner />\n </div>\n ) : preferences.length === 0 ? (\n <div className=\"py-ds-07 text-center\">\n <p className=\"text-body-md text-surface-fg-subtle\">\n No custom preferences set. All notifications are delivered by\n default.\n </p>\n </div>\n ) : (\n <div className=\"flex flex-col\">\n {preferences.map((pref, i) => {\n const channelInfo =\n CHANNEL_LABELS[pref.channel] || CHANNEL_LABELS.IN_APP\n return (\n <div\n key={pref.id}\n className={cn(\n 'flex items-center gap-ds-05 py-ds-04',\n i < preferences.length - 1 &&\n 'border-b border-surface-border-strong',\n )}\n >\n {/* Channel icon */}\n <div className=\"flex h-ds-sm w-ds-sm shrink-0 items-center justify-center rounded-surface bg-surface-raised\">\n <span className=\"[&>svg]:h-ico-sm [&>svg]:w-ico-sm text-surface-fg-muted\" aria-hidden=\"true\">{channelInfo.icon}</span>\n </div>\n\n {/* Info */}\n <div className=\"min-w-0 flex-1\">\n <p className=\"text-body-md font-medium text-surface-fg\">\n {channelInfo.label}\n </p>\n <p className=\"text-body-sm text-surface-fg-subtle\">\n {getProjectName(pref.projectId)}\n </p>\n </div>\n\n {/* Min tier */}\n <Select\n value={pref.minTier}\n onValueChange={(v) => onUpdateTier?.(pref, v)}\n >\n <SelectTrigger className=\"h-ds-xs-plus w-[130px] text-body-sm\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {Object.entries(TIER_LABELS).map(([key, label]) => (\n <SelectItem key={key} value={key}>\n {label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n\n {/* Muted toggle */}\n <div className=\"flex items-center gap-ds-02b\">\n <span className=\"text-body-sm text-surface-fg-subtle\">\n {pref.muted ? 'Muted' : 'Active'}\n </span>\n <Switch\n checked={!pref.muted}\n onCheckedChange={() => onToggleMute?.(pref)}\n />\n </div>\n\n {/* Delete */}\n <IconButton\n aria-label={`Delete ${channelInfo.label} notification rule`}\n icon={<Icon icon={IconTrash} />}\n variant=\"ghost\"\n color=\"error\"\n size=\"sm\"\n onClick={() => onDelete?.(pref.id)}\n className=\"shrink-0\"\n />\n </div>\n )\n })}\n </div>\n )}\n </CardContent>\n </Card>\n\n {/* Add Preference Dialog */}\n <Dialog open={showAddDialog} onOpenChange={setShowAddDialog}>\n <DialogContent className=\"sm:max-w-md\">\n <DialogHeader>\n <DialogTitle>Add Notification Rule</DialogTitle>\n <DialogDescription>\n Customize how you receive notifications for a specific channel\n and project.\n </DialogDescription>\n </DialogHeader>\n <div className=\"flex flex-col gap-ds-05 pt-ds-03\">\n <div className=\"flex flex-col gap-ds-02b\">\n <label htmlFor=\"pref-scope\" className=\"text-body-sm font-medium text-surface-fg-muted\">\n Scope\n </label>\n <Select value={newProjectId} onValueChange={setNewProjectId}>\n <SelectTrigger id=\"pref-scope\">\n <SelectValue placeholder=\"Select scope\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"global\">\n Global (all projects)\n </SelectItem>\n {projects.map((p) => (\n <SelectItem key={p.id} value={p.id}>\n {p.title}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n\n <div className=\"flex flex-col gap-ds-02b\">\n <label htmlFor=\"pref-channel\" className=\"text-body-sm font-medium text-surface-fg-muted\">\n Channel\n </label>\n <Select value={newChannel} onValueChange={setNewChannel}>\n <SelectTrigger id=\"pref-channel\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"IN_APP\">In-App</SelectItem>\n <SelectItem value=\"GOOGLE_CHAT\">Google Chat</SelectItem>\n </SelectContent>\n </Select>\n </div>\n\n <div className=\"flex flex-col gap-ds-02b\">\n <label htmlFor=\"pref-min-tier\" className=\"text-body-sm font-medium text-surface-fg-muted\">\n Minimum Tier\n </label>\n <Select value={newMinTier} onValueChange={setNewMinTier}>\n <SelectTrigger id=\"pref-min-tier\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {Object.entries(TIER_LABELS).map(([key, label]) => (\n <SelectItem key={key} value={key}>\n {label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n\n <div className=\"flex items-center justify-between\">\n <label htmlFor=\"pref-muted\" className=\"text-body-md text-surface-fg\">\n Mute this channel\n </label>\n <Switch id=\"pref-muted\" checked={newMuted} onCheckedChange={setNewMuted} />\n </div>\n\n <div className=\"flex justify-end gap-ds-03 pt-ds-03\">\n <Button\n variant=\"ghost\"\n onClick={() => {\n setShowAddDialog(false)\n resetForm()\n }}\n >\n Cancel\n </Button>\n <Button\n onClick={handleAdd}\n disabled={isSaving}\n >\n {isSaving ? 'Saving...' : 'Save Rule'}\n </Button>\n </div>\n </div>\n </DialogContent>\n </Dialog>\n </>\n )\n },\n)\n\nNotificationPreferences.displayName = 'NotificationPreferences'\n\nexport { NotificationPreferences }\n"],"mappings":"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"}
1
+ {"version":3,"file":"notification-preferences.js","names":[],"sources":["../../src/shell/notification-preferences.tsx"],"sourcesContent":["'use client'\n\n/**\n * NotificationPreferences -- Manage notification rules per channel/project.\n *\n * Props-driven: accepts preferences array, projects, and callbacks.\n * No internal fetching -- the consumer is responsible for data loading.\n */\nimport { IconBell, IconMessage,IconPlus, IconTrash } from '@tabler/icons-react'\nimport * as React from 'react'\nimport { useState } from 'react'\n\nimport { Button } from '../ui/button'\nimport { Card, CardContent,CardHeader, CardTitle } from '../ui/card'\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from '../ui/dialog'\nimport { Icon } from '../ui/icon'\nimport { IconButton } from '../ui/icon-button'\nimport { cn } from '../ui/lib/utils'\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '../ui/select'\nimport { Spinner } from '../ui/spinner'\nimport { Switch } from '../ui/switch'\n\n// -----------------------------------------------------------------------\n// Types\n// -----------------------------------------------------------------------\n\nexport interface NotificationPreference {\n id: string\n userId?: string\n projectId: string | null\n channel: string\n minTier: string\n muted: boolean\n}\n\nexport interface NotificationProject {\n id: string\n title: string\n}\n\nexport interface NotificationPreferencesProps\n extends Omit<React.ComponentPropsWithRef<'div'>, 'onSave'> {\n /** Current preference rules */\n preferences?: NotificationPreference[]\n /** Available projects for scoping rules */\n projects?: NotificationProject[]\n /** Whether data is loading */\n isLoading?: boolean\n /** Called to add or update a preference */\n onSave?: (preference: {\n projectId: string | null\n channel: string\n minTier: string\n muted: boolean\n }) => void | Promise<void>\n /** Called to toggle mute on a preference */\n onToggleMute?: (preference: NotificationPreference) => void | Promise<void>\n /** Called to update the tier on a preference */\n onUpdateTier?: (\n preference: NotificationPreference,\n newTier: string,\n ) => void | Promise<void>\n /** Called to delete a preference */\n onDelete?: (preferenceId: string) => void | Promise<void>\n /** Additional className */\n className?: string\n}\n\n// -----------------------------------------------------------------------\n// Constants\n// -----------------------------------------------------------------------\n\nconst CHANNEL_LABELS: Record<string, { label: string; icon: React.ReactNode }> = {\n IN_APP: { label: 'In-App', icon: <Icon icon={IconBell} size=\"sm\" /> },\n GOOGLE_CHAT: { label: 'Google Chat', icon: <Icon icon={IconMessage} size=\"sm\" /> },\n}\n\nconst TIER_LABELS: Record<string, string> = {\n INFO: 'All (Info+)',\n IMPORTANT: 'Important+',\n CRITICAL: 'Critical only',\n}\n\n// -----------------------------------------------------------------------\n// NotificationPreferences\n// -----------------------------------------------------------------------\n\nconst NotificationPreferences = React.forwardRef<HTMLDivElement, NotificationPreferencesProps>(\n function NotificationPreferences(\n {\n preferences = [],\n projects = [],\n isLoading = false,\n onSave,\n onToggleMute,\n onUpdateTier,\n onDelete,\n className,\n ...props\n },\n ref,\n ) {\n const [showAddDialog, setShowAddDialog] = useState(false)\n const [newProjectId, setNewProjectId] = useState<string>('global')\n const [newChannel, setNewChannel] = useState<string>('IN_APP')\n const [newMinTier, setNewMinTier] = useState<string>('INFO')\n const [newMuted, setNewMuted] = useState(false)\n const [isSaving, setIsSaving] = useState(false)\n\n const handleAdd = async () => {\n if (!onSave) return\n setIsSaving(true)\n try {\n await onSave({\n projectId: newProjectId === 'global' ? null : newProjectId,\n channel: newChannel,\n minTier: newMinTier,\n muted: newMuted,\n })\n setShowAddDialog(false)\n resetForm()\n } catch (error) {\n console.error('[Preferences] Failed to save:', error)\n } finally {\n setIsSaving(false)\n }\n }\n\n const resetForm = () => {\n setNewProjectId('global')\n setNewChannel('IN_APP')\n setNewMinTier('INFO')\n setNewMuted(false)\n }\n\n const getProjectName = (projectId: string | null) => {\n if (!projectId) return 'Global (all projects)'\n const project = projects.find((p) => p.id === projectId)\n return project?.title || 'Unknown project'\n }\n\n return (\n <>\n <Card ref={ref} className={className} {...(props as Omit<typeof props, 'color'>)}>\n <CardHeader className=\"flex flex-row items-center justify-between\">\n <CardTitle className=\"text-body-md font-semibold\">\n Notification Preferences\n </CardTitle>\n <Button\n size=\"sm\"\n variant=\"outline\"\n onClick={() => setShowAddDialog(true)}\n >\n <Icon icon={IconPlus} size=\"sm\" className=\"mr-ds-02b\" />\n Add Rule\n </Button>\n </CardHeader>\n <CardContent>\n {isLoading ? (\n <div className=\"flex items-center justify-center py-ds-07\">\n <Spinner />\n </div>\n ) : preferences.length === 0 ? (\n <div className=\"py-ds-07 text-center\">\n <p className=\"text-body-md text-surface-fg-subtle\">\n No custom preferences set. All notifications are delivered by\n default.\n </p>\n </div>\n ) : (\n <div className=\"flex flex-col\">\n {preferences.map((pref, i) => {\n const channelInfo =\n CHANNEL_LABELS[pref.channel] || CHANNEL_LABELS.IN_APP\n return (\n <div\n key={pref.id}\n className={cn(\n 'flex items-center gap-ds-05 py-ds-04',\n i < preferences.length - 1 &&\n 'border-b border-surface-border-strong',\n )}\n >\n {/* Channel icon */}\n <div className=\"flex h-ds-sm w-ds-sm shrink-0 items-center justify-center rounded-surface bg-surface-raised\">\n <span className=\"[&>svg]:h-ico-sm [&>svg]:w-ico-sm text-surface-fg-muted\" aria-hidden=\"true\">{channelInfo.icon}</span>\n </div>\n\n {/* Info */}\n <div className=\"min-w-0 flex-1\">\n <p className=\"text-body-md font-medium text-surface-fg\">\n {channelInfo.label}\n </p>\n <p className=\"text-body-sm text-surface-fg-subtle\">\n {getProjectName(pref.projectId)}\n </p>\n </div>\n\n {/* Min tier */}\n <Select\n value={pref.minTier}\n onValueChange={(v) => onUpdateTier?.(pref, v)}\n >\n <SelectTrigger\n aria-label={`Minimum notification tier for ${channelInfo.label} on ${getProjectName(pref.projectId)}`}\n className=\"h-ds-xs-plus w-[130px] text-body-sm\"\n >\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {Object.entries(TIER_LABELS).map(([key, label]) => (\n <SelectItem key={key} value={key}>\n {label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n\n {/* Muted toggle */}\n <div className=\"flex items-center gap-ds-02b\">\n <span className=\"text-body-sm text-surface-fg-subtle\">\n {pref.muted ? 'Muted' : 'Active'}\n </span>\n <Switch\n aria-label={`${pref.muted ? 'Unmute' : 'Mute'} ${channelInfo.label} for ${getProjectName(pref.projectId)}`}\n checked={!pref.muted}\n onCheckedChange={() => onToggleMute?.(pref)}\n />\n </div>\n\n {/* Delete */}\n <IconButton\n aria-label={`Delete ${channelInfo.label} notification rule`}\n icon={<Icon icon={IconTrash} />}\n variant=\"ghost\"\n color=\"error\"\n size=\"sm\"\n onClick={() => onDelete?.(pref.id)}\n className=\"shrink-0\"\n />\n </div>\n )\n })}\n </div>\n )}\n </CardContent>\n </Card>\n\n {/* Add Preference Dialog */}\n <Dialog open={showAddDialog} onOpenChange={setShowAddDialog}>\n <DialogContent className=\"sm:max-w-md\">\n <DialogHeader>\n <DialogTitle>Add Notification Rule</DialogTitle>\n <DialogDescription>\n Customize how you receive notifications for a specific channel\n and project.\n </DialogDescription>\n </DialogHeader>\n <div className=\"flex flex-col gap-ds-05 pt-ds-03\">\n <div className=\"flex flex-col gap-ds-02b\">\n <label htmlFor=\"pref-scope\" className=\"text-body-sm font-medium text-surface-fg-muted\">\n Scope\n </label>\n <Select value={newProjectId} onValueChange={setNewProjectId}>\n <SelectTrigger id=\"pref-scope\">\n <SelectValue placeholder=\"Select scope\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"global\">\n Global (all projects)\n </SelectItem>\n {projects.map((p) => (\n <SelectItem key={p.id} value={p.id}>\n {p.title}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n\n <div className=\"flex flex-col gap-ds-02b\">\n <label htmlFor=\"pref-channel\" className=\"text-body-sm font-medium text-surface-fg-muted\">\n Channel\n </label>\n <Select value={newChannel} onValueChange={setNewChannel}>\n <SelectTrigger id=\"pref-channel\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"IN_APP\">In-App</SelectItem>\n <SelectItem value=\"GOOGLE_CHAT\">Google Chat</SelectItem>\n </SelectContent>\n </Select>\n </div>\n\n <div className=\"flex flex-col gap-ds-02b\">\n <label htmlFor=\"pref-min-tier\" className=\"text-body-sm font-medium text-surface-fg-muted\">\n Minimum Tier\n </label>\n <Select value={newMinTier} onValueChange={setNewMinTier}>\n <SelectTrigger id=\"pref-min-tier\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {Object.entries(TIER_LABELS).map(([key, label]) => (\n <SelectItem key={key} value={key}>\n {label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n\n <div className=\"flex items-center justify-between\">\n <label htmlFor=\"pref-muted\" className=\"text-body-md text-surface-fg\">\n Mute this channel\n </label>\n <Switch id=\"pref-muted\" checked={newMuted} onCheckedChange={setNewMuted} />\n </div>\n\n <div className=\"flex justify-end gap-ds-03 pt-ds-03\">\n <Button\n variant=\"ghost\"\n onClick={() => {\n setShowAddDialog(false)\n resetForm()\n }}\n >\n Cancel\n </Button>\n <Button\n onClick={handleAdd}\n disabled={isSaving}\n >\n {isSaving ? 'Saving...' : 'Save Rule'}\n </Button>\n </div>\n </div>\n </DialogContent>\n </Dialog>\n </>\n )\n },\n)\n\nNotificationPreferences.displayName = 'NotificationPreferences'\n\nexport { NotificationPreferences }\n"],"mappings":";;;;;;;;;;;;;;;AAoFA,IAAM,IAA2E;CAC/E,QAAQ;EAAE,OAAO;EAAU,MAAM,kBAAC,GAAD;GAAM,MAAM;GAAU,MAAK;EAAM,CAAA;CAAE;CACpE,aAAa;EAAE,OAAO;EAAe,MAAM,kBAAC,GAAD;GAAM,MAAM;GAAa,MAAK;EAAM,CAAA;CAAE;AACnF,GAEM,IAAsC;CAC1C,MAAM;CACN,WAAW;CACX,UAAU;AACZ,GAMM,IAA0B,EAAM,WACpC,SACE,EACE,iBAAc,CAAC,GACf,cAAW,CAAC,GACZ,eAAY,IACZ,WACA,iBACA,iBACA,aACA,cACA,GAAG,KAEL,GACA;CACF,IAAM,CAAC,GAAe,KAAoB,EAAS,EAAK,GAClD,CAAC,GAAc,KAAmB,EAAiB,QAAQ,GAC3D,CAAC,GAAY,KAAiB,EAAiB,QAAQ,GACvD,CAAC,GAAY,KAAiB,EAAiB,MAAM,GACrD,CAAC,GAAU,KAAe,EAAS,EAAK,GACxC,CAAC,GAAU,KAAe,EAAS,EAAK,GAExC,IAAY,YAAY;EACvB,OACL;KAAY,EAAI;GAChB,IAAI;IAQF,AAPA,MAAM,EAAO;KACX,WAAW,MAAiB,WAAW,OAAO;KAC9C,SAAS;KACT,SAAS;KACT,OAAO;IACT,CAAC,GACD,EAAiB,EAAK,GACtB,EAAU;GACZ,SAAS,GAAO;IACd,QAAQ,MAAM,iCAAiC,CAAK;GACtD,UAAU;IACR,EAAY,EAAK;GACnB;EAdgB;CAelB,GAEM,UAAkB;EAItB,AAHA,EAAgB,QAAQ,GACxB,EAAc,QAAQ,GACtB,EAAc,MAAM,GACpB,EAAY,EAAK;CACnB,GAEM,KAAkB,MACjB,IACW,EAAS,MAAM,MAAM,EAAE,OAAO,CACvC,CAAA,EAAS,SAAS,oBAFF;CAKzB,OACE,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;EAAW;EAAgB;EAAW,GAAK;YAA3C,CACE,kBAAC,GAAD;GAAY,WAAU;aAAtB,CACE,kBAAC,GAAD;IAAW,WAAU;cAA6B;GAEvC,CAAA,GACX,kBAAC,GAAD;IACE,MAAK;IACL,SAAQ;IACR,eAAe,EAAiB,EAAI;cAHtC,CAKE,kBAAC,GAAD;KAAM,MAAM;KAAU,MAAK;KAAK,WAAU;IAAa,CAAA,GAAC,UAElD;KACE;MACZ,kBAAC,GAAD,EAAA,UACG,IACC,kBAAC,OAAD;GAAK,WAAU;aACb,kBAAC,GAAD,CAAU,CAAA;EACP,CAAA,IACH,EAAY,WAAW,IACzB,kBAAC,OAAD;GAAK,WAAU;aACb,kBAAC,KAAD;IAAG,WAAU;cAAsC;GAGhD,CAAA;EACA,CAAA,IAEL,kBAAC,OAAD;GAAK,WAAU;aACZ,EAAY,KAAK,GAAM,MAAM;IAC5B,IAAM,IACJ,EAAe,EAAK,YAAY,EAAe;IACjD,OACE,kBAAC,OAAD;KAEE,WAAW,EACT,wCACA,IAAI,EAAY,SAAS,KACvB,uCACJ;eANF;MASE,kBAAC,OAAD;OAAK,WAAU;iBACb,kBAAC,QAAD;QAAM,WAAU;QAA0D,eAAY;kBAAQ,EAAY;OAAW,CAAA;MAClH,CAAA;MAGL,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,kBAAC,KAAD;QAAG,WAAU;kBACV,EAAY;OACZ,CAAA,GACH,kBAAC,KAAD;QAAG,WAAU;kBACV,EAAe,EAAK,SAAS;OAC7B,CAAA,CACA;;MAGL,kBAAC,GAAD;OACE,OAAO,EAAK;OACZ,gBAAgB,MAAM,IAAe,GAAM,CAAC;iBAF9C,CAIE,kBAAC,GAAD;QACE,cAAY,iCAAiC,EAAY,MAAM,MAAM,EAAe,EAAK,SAAS;QAClG,WAAU;kBAEV,kBAAC,GAAD,CAAc,CAAA;OACD,CAAA,GACf,kBAAC,GAAD,EAAA,UACG,OAAO,QAAQ,CAAW,CAAC,CAAC,KAAK,CAAC,GAAK,OACtC,kBAAC,GAAD;QAAsB,OAAO;kBAC1B;OACS,GAFK,CAEL,CACb,EACY,CAAA,CACT;;MAGR,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,kBAAC,QAAD;QAAM,WAAU;kBACb,EAAK,QAAQ,UAAU;OACpB,CAAA,GACN,kBAAC,GAAD;QACE,cAAY,GAAG,EAAK,QAAQ,WAAW,OAAO,GAAG,EAAY,MAAM,OAAO,EAAe,EAAK,SAAS;QACvG,SAAS,CAAC,EAAK;QACf,uBAAuB,IAAe,CAAI;OAC3C,CAAA,CACE;;MAGL,kBAAC,GAAD;OACE,cAAY,UAAU,EAAY,MAAM;OACxC,MAAM,kBAAC,GAAD,EAAM,MAAM,EAAY,CAAA;OAC9B,SAAQ;OACR,OAAM;OACN,MAAK;OACL,eAAe,IAAW,EAAK,EAAE;OACjC,WAAU;MACX,CAAA;KACE;OAhEE,EAAK,EAgEP;GAET,CAAC;EACE,CAAA,EAEI,CAAA,CACT;KAGN,kBAAC,GAAD;EAAQ,MAAM;EAAe,cAAc;YACzC,kBAAC,GAAD;GAAe,WAAU;aAAzB,CACE,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UAAa,wBAAkC,CAAA,GAC/C,kBAAC,GAAD,EAAA,UAAmB,8EAGA,CAAA,CACP,EAAA,CAAA,GACd,kBAAC,OAAD;IAAK,WAAU;cAAf;KACE,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,SAAD;OAAO,SAAQ;OAAa,WAAU;iBAAiD;MAEhF,CAAA,GACP,kBAAC,GAAD;OAAQ,OAAO;OAAc,eAAe;iBAA5C,CACE,kBAAC,GAAD;QAAe,IAAG;kBAChB,kBAAC,GAAD,EAAa,aAAY,eAAgB,CAAA;OAC5B,CAAA,GACf,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD;QAAY,OAAM;kBAAS;OAEf,CAAA,GACX,EAAS,KAAK,MACb,kBAAC,GAAD;QAAuB,OAAO,EAAE;kBAC7B,EAAE;OACO,GAFK,EAAE,EAEP,CACb,CACY,EAAA,CAAA,CACT;QACL;;KAEL,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,SAAD;OAAO,SAAQ;OAAe,WAAU;iBAAiD;MAElF,CAAA,GACP,kBAAC,GAAD;OAAQ,OAAO;OAAY,eAAe;iBAA1C,CACE,kBAAC,GAAD;QAAe,IAAG;kBAChB,kBAAC,GAAD,CAAc,CAAA;OACD,CAAA,GACf,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD;QAAY,OAAM;kBAAS;OAAkB,CAAA,GAC7C,kBAAC,GAAD;QAAY,OAAM;kBAAc;OAAuB,CAAA,CAC1C,EAAA,CAAA,CACT;QACL;;KAEL,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,SAAD;OAAO,SAAQ;OAAgB,WAAU;iBAAiD;MAEnF,CAAA,GACP,kBAAC,GAAD;OAAQ,OAAO;OAAY,eAAe;iBAA1C,CACE,kBAAC,GAAD;QAAe,IAAG;kBAChB,kBAAC,GAAD,CAAc,CAAA;OACD,CAAA,GACf,kBAAC,GAAD,EAAA,UACG,OAAO,QAAQ,CAAW,CAAC,CAAC,KAAK,CAAC,GAAK,OACtC,kBAAC,GAAD;QAAsB,OAAO;kBAC1B;OACS,GAFK,CAEL,CACb,EACY,CAAA,CACT;QACL;;KAEL,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,SAAD;OAAO,SAAQ;OAAa,WAAU;iBAA+B;MAE9D,CAAA,GACP,kBAAC,GAAD;OAAQ,IAAG;OAAa,SAAS;OAAU,iBAAiB;MAAc,CAAA,CACvE;;KAEL,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,GAAD;OACE,SAAQ;OACR,eAAe;QAEb,AADA,EAAiB,EAAK,GACtB,EAAU;OACZ;iBACD;MAEO,CAAA,GACR,kBAAC,GAAD;OACE,SAAS;OACT,UAAU;iBAET,IAAW,cAAc;MACpB,CAAA,CACL;;IACF;KACQ;;CACT,CAAA,CACR,EAAA,CAAA;AAEJ,CACF;AAEA,EAAwB,cAAc"}
@@ -1,5 +1,4 @@
1
- "use client";
2
- import { IconInput } from '../ui/lib/icon-input';
1
+ import { IconInput } from '../ui/lib/icon-input.js';
3
2
  import * as React from 'react';
4
3
  export interface TopBarUser {
5
4
  name: string;
@@ -1,4 +1,3 @@
1
- "use client";
2
1
  import * as React from 'react';
3
2
  /**
4
3
  * Shared conformance test suite for design-system components.
@@ -1,5 +1,4 @@
1
- "use client";
2
- import * as AccordionPrimitive from '../primitives/react-accordion';
1
+ import * as AccordionPrimitive from '../primitives/react-accordion.js';
3
2
  import * as React from 'react';
4
3
  /**
5
4
  * Accordion compound component — vertically stacked, collapsible content sections.
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { Content2$8 as e, Header as t, Item$2 as n, Root2$10 as r, Trigger2$1 as i } from "../_chunks/primitives.js";
2
+ import { Content2 as e, Header as t, Item as n, Root2 as r, Trigger2 as i } from "../_chunks/primitives/react-accordion.js";
3
3
  import { tweens as a } from "./lib/motion.js";
4
4
  import { cn as o } from "./lib/utils.js";
5
5
  import { Icon as s } from "./icon.js";
@@ -1,5 +1,4 @@
1
- "use client";
2
- import * as AlertDialogPrimitive from '../primitives/react-alert-dialog';
1
+ import * as AlertDialogPrimitive from '../primitives/react-alert-dialog.js';
3
2
  import * as React from 'react';
4
3
  declare const AlertDialog: React.FC<React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Root>>;
5
4
  declare const AlertDialogTrigger: React.ForwardRefExoticComponent<AlertDialogPrimitive.AlertDialogTriggerProps & React.RefAttributes<HTMLButtonElement>>;