@flamingo-stack/openframe-frontend-core 0.0.213 → 0.0.214-snapshot.20260528192313

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 (746) hide show
  1. package/dist/{chunk-35XIT2CF.cjs → chunk-2G3NXF6J.cjs} +17 -17
  2. package/dist/{chunk-35XIT2CF.cjs.map → chunk-2G3NXF6J.cjs.map} +1 -1
  3. package/dist/{chunk-IK2X5YJU.js → chunk-7PCP7YQR.js} +2 -2
  4. package/dist/{chunk-ZDF6F7ED.cjs → chunk-D4MNFY67.cjs} +4 -3
  5. package/dist/chunk-D4MNFY67.cjs.map +1 -0
  6. package/dist/{chunk-OTKJASSX.cjs → chunk-NGFP4RVL.cjs} +24 -24
  7. package/dist/{chunk-OTKJASSX.cjs.map → chunk-NGFP4RVL.cjs.map} +1 -1
  8. package/dist/{chunk-3JWIJJ44.js → chunk-R6MLPU4A.js} +2 -2
  9. package/dist/{chunk-ZTJVRSN5.js → chunk-WQZP3JIZ.js} +4 -3
  10. package/dist/chunk-WQZP3JIZ.js.map +1 -0
  11. package/dist/components/chat/index.cjs +2 -2
  12. package/dist/components/chat/index.js +1 -1
  13. package/dist/components/contact/index.cjs +3 -3
  14. package/dist/components/contact/index.js +2 -2
  15. package/dist/components/features/index.cjs +2 -2
  16. package/dist/components/features/index.js +1 -1
  17. package/dist/components/index.cjs +49 -49
  18. package/dist/components/index.js +2 -2
  19. package/dist/components/navigation/index.cjs +2 -2
  20. package/dist/components/navigation/index.js +1 -1
  21. package/dist/components/tickets/index.cjs +61 -61
  22. package/dist/components/tickets/index.js +3 -3
  23. package/dist/components/ui/index.cjs +2 -2
  24. package/dist/components/ui/index.js +1 -1
  25. package/dist/index.cjs +2 -2
  26. package/dist/index.js +1 -1
  27. package/package.json +1 -1
  28. package/src/.index.md +36 -34
  29. package/src/components/.alert-dialog.md +27 -23
  30. package/src/components/.announcement-bar.md +26 -21
  31. package/src/components/.breadcrumb.md +19 -15
  32. package/src/components/.calendar.md +24 -19
  33. package/src/components/.categories-cart.md +29 -24
  34. package/src/components/.checkbox.md +23 -25
  35. package/src/components/.chevron-button.md +37 -32
  36. package/src/components/.comment-card.md +32 -62
  37. package/src/components/.dialog.md +26 -26
  38. package/src/components/.dynamic-skeleton.md +54 -57
  39. package/src/components/.empty-state.md +42 -51
  40. package/src/components/.faq-accordion.md +27 -21
  41. package/src/components/.filter-chip.md +41 -24
  42. package/src/components/.flamingo-logo.md +20 -23
  43. package/src/components/.footer-waitlist-button.md +29 -22
  44. package/src/components/.footer.md +32 -32
  45. package/src/components/.icons-block.md +27 -17
  46. package/src/components/.image-cropper.md +41 -32
  47. package/src/components/.index.md +33 -39
  48. package/src/components/.input.md +31 -35
  49. package/src/components/.logs-list.md +31 -20
  50. package/src/components/.media-carousel.md +35 -36
  51. package/src/components/.open-source-features.md +33 -16
  52. package/src/components/.pagination.md +52 -51
  53. package/src/components/.provider-button.md +21 -23
  54. package/src/components/.select.md +31 -20
  55. package/src/components/.sidebar.md +34 -24
  56. package/src/components/.smooth-accordion.md +29 -24
  57. package/src/components/.social-icon-row.md +36 -32
  58. package/src/components/.textarea.md +25 -31
  59. package/src/components/.tool-icon.md +24 -26
  60. package/src/components/.unified-filter-logic.md +37 -30
  61. package/src/components/.unified-pagination.md +23 -22
  62. package/src/components/.user-summary-stub.md +38 -22
  63. package/src/components/.vendor-display-button.md +25 -25
  64. package/src/components/.vendor-icon.md +33 -25
  65. package/src/components/.why-it-matters.md +28 -25
  66. package/src/components/chat/.approval-batch-message.md +51 -0
  67. package/src/components/chat/.approval-request-message.md +35 -34
  68. package/src/components/chat/.chat-attachment-bar.md +64 -0
  69. package/src/components/chat/.chat-container.md +36 -18
  70. package/src/components/chat/.chat-input.md +37 -20
  71. package/src/components/chat/.chat-message-enhanced.md +30 -49
  72. package/src/components/chat/.chat-message-list.md +45 -32
  73. package/src/components/chat/.chat-message-skeleton.md +26 -22
  74. package/src/components/chat/.chat-panel-context.md +52 -0
  75. package/src/components/chat/.chat-ref.types.md +42 -0
  76. package/src/components/chat/.chat-sidebar-skeleton.md +34 -25
  77. package/src/components/chat/.chat-sidebar.md +31 -26
  78. package/src/components/chat/.chat-ticket-list.md +39 -0
  79. package/src/components/chat/.context-compaction-display.md +36 -0
  80. package/src/components/chat/.cycling-phrase.md +52 -0
  81. package/src/components/chat/.embeddable-chat.md +48 -0
  82. package/src/components/chat/.expand-chevron.md +24 -0
  83. package/src/components/chat/.index.md +31 -35
  84. package/src/components/chat/.mingo-onboarding-card-skeleton.md +44 -0
  85. package/src/components/chat/.mingo-onboarding-card.md +62 -0
  86. package/src/components/chat/.model-display.md +32 -30
  87. package/src/components/chat/.nav-link-anchor-via-runtime.md +40 -0
  88. package/src/components/chat/.remark-card-links.md +38 -0
  89. package/src/components/chat/.slash-command-suggestions.md +47 -0
  90. package/src/components/chat/.source-action-button.md +48 -0
  91. package/src/components/chat/.thinking-display.md +42 -0
  92. package/src/components/chat/.tool-call-blocks.md +45 -0
  93. package/src/components/chat/.tool-execution-display.md +44 -36
  94. package/src/components/chat/chat-container.tsx +1 -1
  95. package/src/components/chat/entity-cards/.admin-content-card.md +43 -0
  96. package/src/components/chat/entity-cards/.block-card.md +47 -0
  97. package/src/components/chat/entity-cards/.blog-card.md +52 -0
  98. package/src/components/chat/entity-cards/.blog-image-placeholder.md +39 -0
  99. package/src/components/chat/entity-cards/.campaign-card-admin.md +47 -0
  100. package/src/components/chat/entity-cards/.case-study-card.md +58 -0
  101. package/src/components/chat/entity-cards/.chat-ticket-item.md +40 -0
  102. package/src/components/chat/entity-cards/.chat-video-entity-card.md +43 -0
  103. package/src/components/chat/entity-cards/.customer-interview-card.md +53 -0
  104. package/src/components/chat/entity-cards/.data-room-doc-card.md +47 -0
  105. package/src/components/chat/entity-cards/.dispatch.md +39 -0
  106. package/src/components/chat/entity-cards/.entity-author-card.md +51 -0
  107. package/src/components/chat/entity-cards/.generic-entity-card.md +62 -0
  108. package/src/components/chat/entity-cards/.github-activity-card.md +61 -0
  109. package/src/components/chat/entity-cards/.hubspot-ticket-card.md +53 -0
  110. package/src/components/chat/entity-cards/.index.md +66 -0
  111. package/src/components/chat/entity-cards/.investor-update-card.md +47 -0
  112. package/src/components/chat/entity-cards/.onboarding-guide-card.md +58 -0
  113. package/src/components/chat/entity-cards/.product-release-card-defaults.md +31 -0
  114. package/src/components/chat/entity-cards/.product-release-card.md +29 -0
  115. package/src/components/chat/entity-cards/.program-card-defaults.md +41 -0
  116. package/src/components/chat/entity-cards/.program-card.md +59 -0
  117. package/src/components/chat/entity-cards/.roadmap-card.md +46 -0
  118. package/src/components/chat/entity-cards/.roadmap-vote-button.md +52 -0
  119. package/src/components/chat/entity-cards/.slack-message-card.md +48 -0
  120. package/src/components/chat/entity-cards/.task-type-icon.md +47 -0
  121. package/src/components/chat/hooks/.index.md +36 -21
  122. package/src/components/chat/hooks/.use-chat-attachment-image-gallery.md +51 -0
  123. package/src/components/chat/hooks/.use-chat-attachments.md +48 -0
  124. package/src/components/chat/hooks/.use-chat-card-item.md +39 -0
  125. package/src/components/chat/hooks/.use-chat-identity.md +45 -0
  126. package/src/components/chat/hooks/.use-chat.md +58 -0
  127. package/src/components/chat/hooks/.use-chunk-catchup.md +46 -48
  128. package/src/components/chat/hooks/.use-close-on-navigation.md +44 -0
  129. package/src/components/chat/hooks/.use-collapsible.md +48 -0
  130. package/src/components/chat/hooks/.use-embedded-chat.md +32 -0
  131. package/src/components/chat/hooks/.use-jetstream-dialog-subscription.md +40 -0
  132. package/src/components/chat/hooks/.use-nats-chat-adapter.md +52 -0
  133. package/src/components/chat/hooks/.use-nats-dialog-subscription.md +49 -30
  134. package/src/components/chat/hooks/.use-proxied-image-url.md +40 -0
  135. package/src/components/chat/hooks/.use-realtime-chunk-processor.md +43 -40
  136. package/src/components/chat/hooks/.use-slash-commands.md +46 -0
  137. package/src/components/chat/hooks/.use-sse-chat-adapter.md +34 -0
  138. package/src/components/chat/hooks/.use-sse.md +60 -0
  139. package/src/components/chat/hooks/.use-unified-chat.md +57 -0
  140. package/src/components/chat/types/.api.types.md +52 -38
  141. package/src/components/chat/types/.chat.types.md +43 -34
  142. package/src/components/chat/types/.component.types.md +47 -48
  143. package/src/components/chat/types/.index.md +20 -27
  144. package/src/components/chat/types/.message.types.md +58 -48
  145. package/src/components/chat/types/.network.types.md +57 -31
  146. package/src/components/chat/types/.processing.types.md +49 -31
  147. package/src/components/chat/types/.unified-chat-state.types.md +41 -0
  148. package/src/components/chat/types/entities/.blog.md +43 -0
  149. package/src/components/chat/types/entities/.case-study.md +26 -0
  150. package/src/components/chat/types/entities/.content-ref.md +41 -0
  151. package/src/components/chat/types/entities/.customer-interview.md +28 -0
  152. package/src/components/chat/types/entities/.data-room-doc.md +36 -0
  153. package/src/components/chat/types/entities/.github-activity.md +43 -0
  154. package/src/components/chat/types/entities/.hubspot-ticket.md +53 -0
  155. package/src/components/chat/types/entities/.index.md +42 -0
  156. package/src/components/chat/types/entities/.investor-update.md +45 -0
  157. package/src/components/chat/types/entities/.onboarding-guide.md +50 -0
  158. package/src/components/chat/types/entities/.program-types.md +57 -0
  159. package/src/components/chat/types/entities/.roadmap-item.md +58 -0
  160. package/src/components/chat/types/entities/.slack-message.md +35 -0
  161. package/src/components/chat/utils/.agent-status-message.md +45 -0
  162. package/src/components/chat/utils/.auto-continuation-directive.md +58 -0
  163. package/src/components/chat/utils/.chat-attachment-markdown.md +54 -0
  164. package/src/components/chat/utils/.chat-authed-fetch.md +25 -0
  165. package/src/components/chat/utils/.chat-nav-resolution.md +46 -0
  166. package/src/components/chat/utils/.chat-proxy-auth-storage.md +38 -0
  167. package/src/components/chat/utils/.chip-action-class.md +34 -0
  168. package/src/components/chat/utils/.chip-styles.md +46 -0
  169. package/src/components/chat/utils/.chunk-parser.md +38 -28
  170. package/src/components/chat/utils/.clickup-task-type-utils.md +48 -0
  171. package/src/components/chat/utils/.compact-card-classes.md +62 -0
  172. package/src/components/chat/utils/.decide-new-tab.md +51 -0
  173. package/src/components/chat/utils/.external-app-urls.md +29 -0
  174. package/src/components/chat/utils/.extract-incomplete-message-state.md +25 -29
  175. package/src/components/chat/utils/.flatten-assistant-content.md +34 -0
  176. package/src/components/chat/utils/.icon-registry.md +46 -0
  177. package/src/components/chat/utils/.index.md +37 -32
  178. package/src/components/chat/utils/.is-cross-origin-url.md +35 -0
  179. package/src/components/chat/utils/.message-segment-accumulator.md +25 -34
  180. package/src/components/chat/utils/.nav-anchor-props.md +44 -0
  181. package/src/components/chat/utils/.nav-click-handler.md +47 -0
  182. package/src/components/chat/utils/.onboarding-icons.md +28 -0
  183. package/src/components/chat/utils/.process-historical-messages.md +46 -35
  184. package/src/components/chat/utils/.scroll-anchor.md +40 -0
  185. package/src/components/chat/utils/.slash-dispatch-utils.md +44 -0
  186. package/src/components/chat/utils/.source-icons.md +35 -0
  187. package/src/components/chat/utils/.source-row-cta.md +54 -0
  188. package/src/components/chat/utils/.tool-call-helpers.md +42 -0
  189. package/src/components/contact/.contact-form.md +43 -0
  190. package/src/components/contact/.index.md +27 -0
  191. package/src/components/features/.array-entry-manager.md +36 -45
  192. package/src/components/features/.changelog-manager.md +47 -21
  193. package/src/components/features/.changelog-sections-manager.md +21 -26
  194. package/src/components/features/.command-box.md +31 -28
  195. package/src/components/features/.entity-summary-editor.md +46 -0
  196. package/src/components/features/.entity-video-section.md +51 -0
  197. package/src/components/features/.figma-prototype-viewer.md +48 -29
  198. package/src/components/features/.filters-dropdown.md +33 -46
  199. package/src/components/features/.highlight-config-section.md +42 -0
  200. package/src/components/features/.highlight-generation-section.md +46 -0
  201. package/src/components/features/.highlight-video-combined-section.md +47 -0
  202. package/src/components/features/.highlight-video-preview.md +44 -0
  203. package/src/components/features/.highlight-video-section.md +47 -0
  204. package/src/components/features/.index.md +40 -66
  205. package/src/components/features/.media-gallery-manager.md +48 -38
  206. package/src/components/features/.more-about-button.md +22 -19
  207. package/src/components/features/.og-editor-preview.md +40 -36
  208. package/src/components/features/.parallax-image-showcase.md +33 -26
  209. package/src/components/features/.paths-display.md +42 -43
  210. package/src/components/features/.platform-badge.md +37 -36
  211. package/src/components/features/.platform-filter.md +23 -16
  212. package/src/components/features/.policy-configuration-panel.md +48 -56
  213. package/src/components/features/.provider-button.md +33 -36
  214. package/src/components/features/.push-button-selector.md +40 -29
  215. package/src/components/features/.release-media-manager.md +46 -31
  216. package/src/components/features/.section-selector.md +26 -31
  217. package/src/components/features/.select-button.md +35 -25
  218. package/src/components/features/.seo-editor-preview.md +41 -44
  219. package/src/components/features/.social-links-manager.md +25 -19
  220. package/src/components/features/.start-with-openframe-button.md +37 -29
  221. package/src/components/features/.status-filter-component.md +36 -20
  222. package/src/components/features/.tags-selector.md +40 -24
  223. package/src/components/features/.transcribe-and-summarize-combined-section.md +45 -0
  224. package/src/components/features/.transcribe-summarize-section.md +48 -0
  225. package/src/components/features/.transcript-summary-editor.md +53 -0
  226. package/src/components/features/.video-bites-display.md +46 -0
  227. package/src/components/features/.video-clips-section.md +41 -0
  228. package/src/components/features/.video-ratio-tabs.md +56 -0
  229. package/src/components/features/.video-source-selector.md +60 -0
  230. package/src/components/features/.video.md +44 -0
  231. package/src/components/features/.waitlist-form.md +60 -0
  232. package/src/components/features/ai-enrich/.AIEnrichButton.md +30 -27
  233. package/src/components/features/ai-enrich/.AIEnrichSection.md +46 -42
  234. package/src/components/features/board/.board-column-header.md +38 -0
  235. package/src/components/features/board/.board-column.md +43 -0
  236. package/src/components/features/board/.board.md +51 -0
  237. package/src/components/features/board/.color-utils.md +26 -0
  238. package/src/components/features/board/.index.md +56 -0
  239. package/src/components/features/board/.ticket-card-skeleton.md +38 -0
  240. package/src/components/features/board/.ticket-card.md +47 -0
  241. package/src/components/features/board/.types.md +45 -0
  242. package/src/components/features/board/.use-board-collapse.md +34 -0
  243. package/src/components/features/notifications/.index.md +57 -0
  244. package/src/components/features/notifications/.notification-drawer.md +34 -0
  245. package/src/components/features/notifications/.notification-tile.md +39 -0
  246. package/src/components/features/notifications/.notifications-context.md +73 -0
  247. package/src/components/features/notifications/.types.md +45 -0
  248. package/src/components/icons/.about-icon.md +20 -28
  249. package/src/components/icons/.ai-robot-icon.md +15 -17
  250. package/src/components/icons/.bash-icon.md +16 -23
  251. package/src/components/icons/.buildings-icon.md +10 -24
  252. package/src/components/icons/.capterra-icon.md +30 -26
  253. package/src/components/icons/.carta-icon.md +29 -0
  254. package/src/components/icons/.clickup-icon.md +26 -0
  255. package/src/components/icons/.cmd-icon.md +15 -22
  256. package/src/components/icons/.coins-icon.md +17 -25
  257. package/src/components/icons/.community-hub-icon.md +19 -25
  258. package/src/components/icons/.community-icon.md +24 -21
  259. package/src/components/icons/.compare-icon.md +32 -19
  260. package/src/components/icons/.copy-icon.md +29 -15
  261. package/src/components/icons/.custom-external-link-icon.md +19 -17
  262. package/src/components/icons/.custom-fork-icon.md +32 -21
  263. package/src/components/icons/.custom-license-icon.md +29 -25
  264. package/src/components/icons/.custom-star-icon.md +20 -28
  265. package/src/components/icons/.custom-time-icon.md +21 -22
  266. package/src/components/icons/.cut-vendor-costs-icon.md +6 -19
  267. package/src/components/icons/.dashboard-icon.md +13 -18
  268. package/src/components/icons/.deno-icon.md +16 -23
  269. package/src/components/icons/.donut-icon.md +12 -23
  270. package/src/components/icons/.double-chevron-icon.md +28 -36
  271. package/src/components/icons/.elestio-logo.md +13 -23
  272. package/src/components/icons/.empty-vendor-icon.md +16 -18
  273. package/src/components/icons/.explore-categories-icon.md +18 -29
  274. package/src/components/icons/.eye-icon.md +16 -26
  275. package/src/components/icons/.facebook-icon.md +9 -20
  276. package/src/components/icons/.figma-icon.md +8 -17
  277. package/src/components/icons/.filter-icon.md +15 -17
  278. package/src/components/icons/.flamingo-logo.md +28 -27
  279. package/src/components/icons/.folder-shield-icon.md +28 -19
  280. package/src/components/icons/.g2-icon.md +22 -21
  281. package/src/components/icons/.getapp-icon.md +25 -21
  282. package/src/components/icons/.github-icon.md +13 -25
  283. package/src/components/icons/.globe-icon.md +14 -19
  284. package/src/components/icons/.google-gemini-icon.md +16 -19
  285. package/src/components/icons/.google-logo.md +15 -21
  286. package/src/components/icons/.grid-view-icon.md +30 -19
  287. package/src/components/icons/.hamburger-icon.md +22 -20
  288. package/src/components/icons/.hand-dollar-icon.md +24 -34
  289. package/src/components/icons/.hotel-icon.md +27 -21
  290. package/src/components/icons/.icon-utils.md +28 -29
  291. package/src/components/icons/.image-icon.md +15 -22
  292. package/src/components/icons/.index.md +25 -28
  293. package/src/components/icons/.info-circle-icon.md +29 -30
  294. package/src/components/icons/.instagram-icon.md +10 -24
  295. package/src/components/icons/.jump-in-icon.md +18 -18
  296. package/src/components/icons/.linux-icon.md +18 -18
  297. package/src/components/icons/.log-out-icon.md +15 -23
  298. package/src/components/icons/.logs-icon.md +14 -23
  299. package/src/components/icons/.margin-crisis-icon.md +21 -20
  300. package/src/components/icons/.menu-icon.md +18 -19
  301. package/src/components/icons/.miami-cyber-gang-logo-face-only.md +18 -21
  302. package/src/components/icons/.miami-cyber-gang-logo.md +22 -14
  303. package/src/components/icons/.mlg-logo.md +18 -16
  304. package/src/components/icons/.moon-icon.md +32 -22
  305. package/src/components/icons/.ms-icon.md +30 -19
  306. package/src/components/icons/.nushell-icon.md +7 -21
  307. package/src/components/icons/.open-source-icon.md +19 -23
  308. package/src/components/icons/.openai-icon.md +9 -24
  309. package/src/components/icons/.openframe-ai-icons.md +25 -26
  310. package/src/components/icons/.openframe-logo.md +28 -22
  311. package/src/components/icons/.openframe-text.md +24 -27
  312. package/src/components/icons/.openmsp-logo.md +26 -23
  313. package/src/components/icons/.pilot-icon.md +23 -0
  314. package/src/components/icons/.powershell-icon.md +17 -22
  315. package/src/components/icons/.python-icon.md +16 -23
  316. package/src/components/icons/.queries-icon.md +13 -21
  317. package/src/components/icons/.reddit-icon.md +28 -24
  318. package/src/components/icons/.remote-control-icon.md +13 -17
  319. package/src/components/icons/.script-icon.md +27 -19
  320. package/src/components/icons/.search-icon.md +21 -21
  321. package/src/components/icons/.send-icon.md +14 -16
  322. package/src/components/icons/.settings-icon.md +30 -19
  323. package/src/components/icons/.shape-circle-dash-icon.md +16 -21
  324. package/src/components/icons/.shell-icon.md +15 -19
  325. package/src/components/icons/.shield-check-icon.md +18 -31
  326. package/src/components/icons/.shield-key-icon.md +25 -25
  327. package/src/components/icons/.shield-lock-icon.md +8 -18
  328. package/src/components/icons/.slack-icon.md +28 -32
  329. package/src/components/icons/.sparkles-icon.md +18 -23
  330. package/src/components/icons/.sso-configuration-icon.md +29 -16
  331. package/src/components/icons/.sun-icon.md +20 -18
  332. package/src/components/icons/.table-view-icon.md +17 -19
  333. package/src/components/icons/.telegram-icon.md +8 -22
  334. package/src/components/icons/.thumbs-down-icon.md +10 -19
  335. package/src/components/icons/.thumbs-up-icon.md +8 -17
  336. package/src/components/icons/.tool-directory-icons.md +24 -28
  337. package/src/components/icons/.trustpilot-icon.md +25 -22
  338. package/src/components/icons/.user-icon.md +26 -28
  339. package/src/components/icons/.users-group-icon.md +28 -24
  340. package/src/components/icons/.vendor-showcase-icons.md +21 -29
  341. package/src/components/icons/.vendors-icon.md +18 -22
  342. package/src/components/icons/.whatsapp-icon.md +30 -14
  343. package/src/components/icons/.x-icon.md +18 -23
  344. package/src/components/icons/.x-logo.md +13 -38
  345. package/src/components/icons/.youtube-icon.md +8 -19
  346. package/src/components/icons/device-type-icons/.get-device-type-icon.md +26 -34
  347. package/src/components/icons-v2-generated/.index.md +52 -0
  348. package/src/components/icons-v2-generated/alphabet/.index.md +33 -0
  349. package/src/components/icons-v2-generated/arrows/.index.md +39 -0
  350. package/src/components/icons-v2-generated/audio-and-visual/.index.md +40 -0
  351. package/src/components/icons-v2-generated/brand-logos/.elestio-logo-icon.md +40 -0
  352. package/src/components/icons-v2-generated/brand-logos/.gemini-logo-icon.md +37 -0
  353. package/src/components/icons-v2-generated/brand-logos/.google-gemini-logo-icon.md +33 -0
  354. package/src/components/icons-v2-generated/brand-logos/.index.md +38 -0
  355. package/src/components/icons-v2-generated/brand-logos/.meshcentral-logo-grey-icon.md +35 -0
  356. package/src/components/icons-v2-generated/brand-logos/.meshcentral-logo-icon.md +36 -0
  357. package/src/components/icons-v2-generated/buildings/.index.md +48 -0
  358. package/src/components/icons-v2-generated/charts/.index.md +40 -0
  359. package/src/components/icons-v2-generated/clothes/.index.md +48 -0
  360. package/src/components/icons-v2-generated/coding/.index.md +42 -0
  361. package/src/components/icons-v2-generated/communication/.index.md +39 -0
  362. package/src/components/icons-v2-generated/date-and-time/.index.md +29 -0
  363. package/src/components/icons-v2-generated/design/.index.md +39 -0
  364. package/src/components/icons-v2-generated/devices/.index.md +38 -0
  365. package/src/components/icons-v2-generated/documents/.index.md +38 -0
  366. package/src/components/icons-v2-generated/finance/.index.md +34 -0
  367. package/src/components/icons-v2-generated/food-and-drinks/.index.md +34 -0
  368. package/src/components/icons-v2-generated/food-and-drinks/.leafy-green-icon.md +36 -0
  369. package/src/components/icons-v2-generated/food-and-drinks/.strawberry-icon.md +39 -0
  370. package/src/components/icons-v2-generated/health/.index.md +40 -0
  371. package/src/components/icons-v2-generated/household/.index.md +45 -0
  372. package/src/components/icons-v2-generated/interface/.index.md +36 -0
  373. package/src/components/icons-v2-generated/map-and-travel/.index.md +41 -0
  374. package/src/components/icons-v2-generated/media-playback/.index.md +51 -0
  375. package/src/components/icons-v2-generated/number/.index.md +41 -0
  376. package/src/components/icons-v2-generated/school/.index.md +37 -0
  377. package/src/components/icons-v2-generated/security/.fingerprint-icon.md +38 -0
  378. package/src/components/icons-v2-generated/security/.index.md +39 -0
  379. package/src/components/icons-v2-generated/shopping/.index.md +42 -0
  380. package/src/components/icons-v2-generated/signs-and-symbols/.index.md +32 -0
  381. package/src/components/icons-v2-generated/sort-and-filter/.index.md +35 -0
  382. package/src/components/icons-v2-generated/sport/.index.md +41 -0
  383. package/src/components/icons-v2-generated/text-editor/.index.md +44 -0
  384. package/src/components/icons-v2-generated/users/.index.md +45 -0
  385. package/src/components/icons-v2-generated/vehicles-and-delivery/.index.md +36 -0
  386. package/src/components/icons-v2-generated/weather-and-nature/.flower-sakura-icon.md +36 -0
  387. package/src/components/icons-v2-generated/weather-and-nature/.index.md +34 -0
  388. package/src/components/layout/.article-detail-layout.md +43 -0
  389. package/src/components/layout/.back-button.md +40 -0
  390. package/src/components/layout/.list-page-layout.md +35 -26
  391. package/src/components/layout/.page-container.md +27 -38
  392. package/src/components/layout/.page-layout.md +50 -0
  393. package/src/components/layout/.title-block.md +42 -0
  394. package/src/components/loading/.card-skeleton.md +38 -29
  395. package/src/components/loading/.device-card-skeleton.md +29 -25
  396. package/src/components/loading/.index.md +39 -46
  397. package/src/components/loading/.margin-report-skeleton.md +45 -34
  398. package/src/components/loading/.organization-card-skeleton.md +39 -44
  399. package/src/components/loading/.page-layout-skeleton.md +34 -45
  400. package/src/components/loading/.unified-skeleton.md +62 -36
  401. package/src/components/navigation/.app-header.md +40 -29
  402. package/src/components/navigation/.app-layout.md +25 -26
  403. package/src/components/navigation/.header-global-search.md +34 -37
  404. package/src/components/navigation/.header-organization-filter.md +23 -22
  405. package/src/components/navigation/.header.md +31 -35
  406. package/src/components/navigation/.mobile-burger-menu.md +39 -47
  407. package/src/components/navigation/.mobile-nav-panel.md +51 -32
  408. package/src/components/navigation/.navigation-sidebar-header.md +36 -0
  409. package/src/components/navigation/.navigation-sidebar-item.md +45 -0
  410. package/src/components/navigation/.navigation-sidebar-toggle.md +38 -0
  411. package/src/components/navigation/.navigation-sidebar.md +33 -34
  412. package/src/components/navigation/.sliding-sidebar.md +52 -41
  413. package/src/components/navigation/.sticky-section-nav.md +56 -48
  414. package/src/components/platform/.ScriptArguments.md +39 -25
  415. package/src/components/platform/.ScriptInfoSection.md +30 -26
  416. package/src/components/platform/.ShellTypeBadge.md +18 -13
  417. package/src/components/platform/.SoftwareInfo.md +23 -27
  418. package/src/components/platform/.SoftwareSourceBadge.md +28 -19
  419. package/src/components/platform/.ToolBadge.md +25 -26
  420. package/src/components/platform/ShellTypeBadge.tsx +2 -2
  421. package/src/components/providers/.theme-provider.md +52 -0
  422. package/src/components/shared/delivery/.delivery-lists.md +39 -0
  423. package/src/components/shared/delivery/.delivery-row.md +41 -0
  424. package/src/components/shared/delivery/.delivery-table.md +41 -0
  425. package/src/components/shared/delivery/.index.md +38 -0
  426. package/src/components/shared/dev-section/.dev-card-row.md +60 -0
  427. package/src/components/shared/dev-section/.dev-section-page.md +48 -0
  428. package/src/components/shared/dev-section/.dev-section-view.md +43 -0
  429. package/src/components/shared/dev-section/.index.md +38 -0
  430. package/src/components/shared/legal-document/.index.md +40 -0
  431. package/src/components/shared/legal-document/.legal-document-page.md +50 -0
  432. package/src/components/shared/legal-document/.use-legal-docs.md +42 -0
  433. package/src/components/shared/onboarding/.onboarding-step-card.md +32 -31
  434. package/src/components/shared/onboarding/.onboarding-walkthrough.md +39 -43
  435. package/src/components/shared/product-release/.index.md +28 -30
  436. package/src/components/shared/product-release/.product-release-card-skeleton.md +28 -28
  437. package/src/components/shared/product-release/.product-release-card.md +45 -27
  438. package/src/components/shared/product-release/.release-detail-page.md +23 -24
  439. package/src/components/shared/roadmap/.index.md +37 -0
  440. package/src/components/shared/roadmap/.roadmap-grid-skeleton.md +39 -0
  441. package/src/components/shared/roadmap/.roadmap-grid.md +66 -0
  442. package/src/components/shared/roadmap/.use-roadmap-voting.md +68 -0
  443. package/src/components/tickets/.help-center-card.md +51 -0
  444. package/src/components/tickets/.help-center-create-form.md +38 -0
  445. package/src/components/tickets/.help-center-list.md +40 -0
  446. package/src/components/tickets/.index.md +65 -0
  447. package/src/components/tickets/.ticket-center.md +51 -0
  448. package/src/components/tickets/.ticket-detail-drawer.md +48 -0
  449. package/src/components/tickets/.ticket-linked-delivery-card.md +36 -0
  450. package/src/components/tickets/.ticket-open-form.md +50 -0
  451. package/src/components/tickets/.ticket-row.md +30 -0
  452. package/src/components/tickets/.types.md +57 -0
  453. package/src/components/tickets/hooks/.use-ticket-actions.md +77 -0
  454. package/src/components/tickets/hooks/.use-ticket-engagements.md +42 -0
  455. package/src/components/tickets/hooks/.use-tickets-list.md +54 -0
  456. package/src/components/ui/.actions-menu.md +66 -41
  457. package/src/components/ui/.alert-dialog.md +29 -26
  458. package/src/components/ui/.allowed-domains-input.md +29 -21
  459. package/src/components/ui/.assignee-dropdown.md +45 -0
  460. package/src/components/ui/.autocomplete.md +47 -41
  461. package/src/components/ui/.benefit-card.md +51 -36
  462. package/src/components/ui/.brand-association-card.md +30 -27
  463. package/src/components/ui/.breadcrumb.md +17 -15
  464. package/src/components/ui/.checkbox-block.md +39 -35
  465. package/src/components/ui/.checkbox-with-description.md +23 -16
  466. package/src/components/ui/.checkbox.md +31 -23
  467. package/src/components/ui/.circular-progress.md +49 -19
  468. package/src/components/ui/.content-loader.md +32 -20
  469. package/src/components/ui/.cursor-pagination.md +41 -52
  470. package/src/components/ui/.dashboard-info-card.md +33 -26
  471. package/src/components/ui/.date-picker.md +27 -25
  472. package/src/components/ui/.device-card-compact.md +28 -29
  473. package/src/components/ui/.device-card.md +27 -27
  474. package/src/components/ui/.dialog.md +25 -16
  475. package/src/components/ui/.drawer.md +86 -0
  476. package/src/components/ui/.dropdown-button.md +45 -0
  477. package/src/components/ui/.entity-image.md +46 -0
  478. package/src/components/ui/.error-state.md +41 -28
  479. package/src/components/ui/.feature-card.md +35 -31
  480. package/src/components/ui/.feature-list.md +48 -0
  481. package/src/components/ui/.field-wrapper.md +47 -0
  482. package/src/components/ui/.file-upload.md +42 -0
  483. package/src/components/ui/.filter-checkbox-item.md +43 -0
  484. package/src/components/ui/.filter-list.md +57 -0
  485. package/src/components/ui/.filter-modal.md +59 -0
  486. package/src/components/ui/.floating-tooltip.md +43 -26
  487. package/src/components/ui/.hidden-tags-popup.md +49 -0
  488. package/src/components/ui/.hover-dropdown.md +54 -0
  489. package/src/components/ui/.image-gallery-modal.md +41 -34
  490. package/src/components/ui/.image-uploader.md +53 -0
  491. package/src/components/ui/.index.md +40 -34
  492. package/src/components/ui/.info-card.md +31 -31
  493. package/src/components/ui/.info-row.md +31 -27
  494. package/src/components/ui/.input-trigger.md +44 -0
  495. package/src/components/ui/.input.md +37 -31
  496. package/src/components/ui/.markdown-editor.md +57 -0
  497. package/src/components/ui/.modal-v2.md +51 -0
  498. package/src/components/ui/.modal.md +32 -31
  499. package/src/components/ui/.more-actions-menu.md +45 -38
  500. package/src/components/ui/.organization-card.md +31 -37
  501. package/src/components/ui/.page-actions.md +44 -54
  502. package/src/components/ui/.phone-input.md +54 -0
  503. package/src/components/ui/.progress-bar.md +35 -27
  504. package/src/components/ui/.radio-group.md +39 -27
  505. package/src/components/ui/.release-changelog-section.md +34 -34
  506. package/src/components/ui/.search-input.md +48 -0
  507. package/src/components/ui/.select.md +54 -34
  508. package/src/components/ui/.service-card.md +42 -40
  509. package/src/components/ui/.sheet.md +27 -18
  510. package/src/components/ui/.simple-markdown-renderer.md +29 -31
  511. package/src/components/ui/.sort-column-item.md +42 -0
  512. package/src/components/ui/.square-avatar.md +34 -24
  513. package/src/components/ui/.status-badge.md +26 -38
  514. package/src/components/ui/.switch.md +22 -35
  515. package/src/components/ui/.tab-navigation.md +56 -53
  516. package/src/components/ui/.tab-selector.md +40 -0
  517. package/src/components/ui/.tag-key-value-filter.md +56 -0
  518. package/src/components/ui/.tag-search-input.md +53 -0
  519. package/src/components/ui/.tag.md +49 -31
  520. package/src/components/ui/.tags-manager.md +60 -0
  521. package/src/components/ui/.textarea.md +44 -34
  522. package/src/components/ui/.ticket-attachments-list.md +45 -0
  523. package/src/components/ui/.ticket-detail-section.md +29 -0
  524. package/src/components/ui/.ticket-info-section.md +56 -0
  525. package/src/components/ui/.ticket-note-card.md +53 -0
  526. package/src/components/ui/.ticket-notes-section.md +54 -0
  527. package/src/components/ui/.ticket-status-tag.md +49 -0
  528. package/src/components/ui/.title-content-block.md +25 -26
  529. package/src/components/ui/.toaster.md +40 -28
  530. package/src/components/ui/.tooltip.md +22 -11
  531. package/src/components/ui/.truncate-text.md +39 -0
  532. package/src/components/ui/button/.button-styles.md +35 -0
  533. package/src/components/ui/button/.button.md +53 -0
  534. package/src/components/ui/button/.split-button.md +48 -0
  535. package/src/components/ui/data-table/.data-table-body.md +48 -0
  536. package/src/components/ui/data-table/.data-table-column-filter.md +45 -0
  537. package/src/components/ui/data-table/.data-table-cursor-footer.md +45 -0
  538. package/src/components/ui/data-table/.data-table-empty.md +43 -0
  539. package/src/components/ui/data-table/.data-table-header.md +55 -0
  540. package/src/components/ui/data-table/.data-table-infinite-footer.md +44 -0
  541. package/src/components/ui/data-table/.data-table-row-count.md +43 -0
  542. package/src/components/ui/data-table/.data-table-row.md +47 -0
  543. package/src/components/ui/data-table/.data-table-skeleton.md +42 -0
  544. package/src/components/ui/data-table/.data-table.md +47 -0
  545. package/src/components/ui/data-table/.index.md +55 -0
  546. package/src/components/ui/data-table/.types.md +54 -0
  547. package/src/components/ui/data-table/.use-data-table.md +45 -0
  548. package/src/components/ui/data-table/.utils.md +38 -0
  549. package/src/components/ui/file-manager/.file-manager-action-bar.md +39 -30
  550. package/src/components/ui/file-manager/.file-manager-breadcrumb.md +29 -27
  551. package/src/components/ui/file-manager/.file-manager-context-menu.md +38 -42
  552. package/src/components/ui/file-manager/.file-manager-empty.md +26 -39
  553. package/src/components/ui/file-manager/.file-manager-table-row.md +33 -41
  554. package/src/components/ui/file-manager/.file-manager.md +35 -31
  555. package/src/components/ui/query-report-table/.index.md +43 -0
  556. package/src/components/ui/query-report-table/.query-report-table-header.md +36 -0
  557. package/src/components/ui/query-report-table/.query-report-table-row.md +40 -0
  558. package/src/components/ui/query-report-table/.query-report-table-skeleton.md +44 -0
  559. package/src/components/ui/query-report-table/.query-report-table.md +47 -0
  560. package/src/components/ui/query-report-table/.types.md +41 -0
  561. package/src/components/ui/query-report-table/.utils.md +35 -0
  562. package/src/components/ui/table/.index.md +27 -48
  563. package/src/components/ui/table/.table-cell.md +18 -27
  564. package/src/components/ui/table/.table-column-filter-dropdown.md +40 -0
  565. package/src/components/ui/table/.table-description-cell.md +24 -14
  566. package/src/components/ui/table/.table-empty-state.md +21 -22
  567. package/src/components/ui/table/.table-header.md +25 -40
  568. package/src/components/ui/table/.table-row.md +22 -40
  569. package/src/components/ui/table/.table-skeleton.md +33 -26
  570. package/src/components/ui/table/.table-timestamp-cell.md +26 -16
  571. package/src/components/ui/table/.table.md +39 -59
  572. package/src/components/ui/table/.types.md +44 -36
  573. package/src/components/ui/table/.utils.md +18 -20
  574. package/src/contexts/.chat-runtime-context.md +54 -0
  575. package/src/contexts/.endpoints-runtime-context.md +58 -0
  576. package/src/contexts/.index.md +53 -0
  577. package/src/contexts/.use-outer-or-default.md +36 -0
  578. package/src/embed-shims/.index.md +45 -0
  579. package/src/embed-shims/.next-dynamic.md +43 -0
  580. package/src/embed-shims/.next-image.md +45 -0
  581. package/src/embed-shims/.next-link.md +59 -0
  582. package/src/embed-shims/.next-navigation.md +59 -0
  583. package/src/hooks/.index.md +34 -29
  584. package/src/hooks/.use-access-code-integration.md +49 -0
  585. package/src/hooks/.use-contact-submission.md +37 -26
  586. package/src/hooks/.use-copy-to-clipboard.md +42 -0
  587. package/src/hooks/.use-near-viewport.md +44 -0
  588. package/src/hooks/.use-og-placeholder.md +51 -0
  589. package/src/hooks/.use-toast.md +36 -35
  590. package/src/hooks/state/.use-api-params.md +29 -46
  591. package/src/hooks/state/.use-query-params.md +37 -33
  592. package/src/hooks/ui/.index.md +33 -32
  593. package/src/hooks/ui/.use-auto-limit-tags.md +54 -0
  594. package/src/hooks/ui/.use-horizontal-scrollbar.md +74 -0
  595. package/src/hooks/ui/.use-image-edge-color.md +42 -0
  596. package/src/hooks/ui/.use-media-query.md +33 -25
  597. package/src/hooks/ui/.use-search.md +51 -0
  598. package/src/nats/.nats.md +49 -28
  599. package/src/schemas/.contact-schema.md +45 -0
  600. package/src/stories/.AnnouncementBar.stories.md +45 -0
  601. package/src/stories/.AppLayout.stories.md +20 -21
  602. package/src/stories/.Autocomplete.stories.md +48 -34
  603. package/src/stories/.Board.stories.md +35 -0
  604. package/src/stories/.Button.stories.md +36 -33
  605. package/src/stories/.ChatTicketList.stories.md +33 -0
  606. package/src/stories/.CheckboxBlock.stories.md +40 -28
  607. package/src/stories/.ContentLoader.stories.md +47 -0
  608. package/src/stories/.DashboardInfoCard.stories.md +57 -0
  609. package/src/stories/.DataTable.stories.md +41 -0
  610. package/src/stories/.DatePicker.stories.md +66 -52
  611. package/src/stories/.DeviceCard.stories.md +41 -40
  612. package/src/stories/.DeviceCardCompact.stories.md +41 -0
  613. package/src/stories/.DotsLoaderIcon.stories.md +36 -0
  614. package/src/stories/.Drawer.stories.md +58 -0
  615. package/src/stories/.EmbeddableChat.stories.md +41 -0
  616. package/src/stories/.FileManager.stories.md +41 -0
  617. package/src/stories/.FileManagerActionBar.stories.md +38 -0
  618. package/src/stories/.FileUpload.stories.md +53 -0
  619. package/src/stories/.FilterList.stories.md +54 -0
  620. package/src/stories/.FilterModal.stories.md +72 -0
  621. package/src/stories/.FiltersDropdown.stories.md +57 -0
  622. package/src/stories/.Header.stories.md +48 -0
  623. package/src/stories/.ImageUploader.stories.md +49 -0
  624. package/src/stories/.InfoCard.stories.md +54 -0
  625. package/src/stories/.Input.stories.md +48 -30
  626. package/src/stories/.ListPageLayout.stories.md +56 -43
  627. package/src/stories/.MingoOnboardingCard.stories.md +42 -0
  628. package/src/stories/.MingoOnboardingCardSkeleton.stories.md +35 -0
  629. package/src/stories/.Modal.stories.md +40 -31
  630. package/src/stories/.NotificationDrawer.stories.md +55 -0
  631. package/src/stories/.OnboardingStepCard.stories.md +41 -0
  632. package/src/stories/.OrganizationCard.stories.md +61 -0
  633. package/src/stories/.PageActions.stories.md +52 -49
  634. package/src/stories/.PageContainer.stories.md +41 -35
  635. package/src/stories/.PageLayout.stories.md +60 -0
  636. package/src/stories/.ParallaxImageShowcase.stories.md +49 -0
  637. package/src/stories/.PhoneInput.stories.md +53 -0
  638. package/src/stories/.QueryReportTable.stories.md +44 -0
  639. package/src/stories/.RadioGroup.stories.md +46 -0
  640. package/src/stories/.RadioGroupBlock.stories.md +45 -0
  641. package/src/stories/.Select.stories.md +29 -15
  642. package/src/stories/.SlashCommandSuggestions.stories.md +41 -0
  643. package/src/stories/.SplitButton.stories.md +62 -0
  644. package/src/stories/.TabNavigation.stories.md +47 -38
  645. package/src/stories/.TabSelector.stories.md +65 -0
  646. package/src/stories/.Table.stories.md +38 -46
  647. package/src/stories/.TableColumnFilterDropdown.stories.md +46 -0
  648. package/src/stories/.Tag.stories.md +43 -32
  649. package/src/stories/.TagKeyValueFilter.stories.md +44 -0
  650. package/src/stories/.TagSearchInput.stories.md +61 -0
  651. package/src/stories/.Textarea.stories.md +49 -26
  652. package/src/stories/.Theme.stories.md +41 -0
  653. package/src/stories/.TicketAttachmentsList.stories.md +39 -0
  654. package/src/stories/.TicketDescriptionViewer.stories.md +39 -0
  655. package/src/stories/.TicketInfoSection.stories.md +40 -0
  656. package/src/stories/.TicketKnowledgeBaseList.stories.md +36 -0
  657. package/src/stories/.TicketNotesSection.stories.md +50 -0
  658. package/src/stories/.Toaster.stories.md +40 -0
  659. package/src/stories/.ToolExecutionDisplay.stories.md +41 -0
  660. package/src/stories/.Tooltip.stories.md +41 -0
  661. package/src/stories/.UserSummary.stories.md +41 -0
  662. package/src/stories/.WaitlistForm.stories.md +42 -0
  663. package/src/stories/BlogCard.stories.tsx +61 -0
  664. package/src/stories/CampaignCardAdmin.stories.tsx +52 -0
  665. package/src/stories/CaseStudyCard.stories.tsx +42 -0
  666. package/src/stories/ChatContainer.stories.tsx +186 -0
  667. package/src/stories/ChatInlineVideoPill.stories.tsx +63 -0
  668. package/src/stories/CustomerInterviewCard.stories.tsx +42 -0
  669. package/src/stories/DataRoomDocCard.stories.tsx +52 -0
  670. package/src/stories/GenericEntityCard.stories.tsx +66 -0
  671. package/src/stories/GitHubActivityCard.stories.tsx +61 -0
  672. package/src/stories/HubspotTicketCard.stories.tsx +98 -0
  673. package/src/stories/InvestorUpdateCard.stories.tsx +42 -0
  674. package/src/stories/OnboardingGuideCard.stories.tsx +52 -0
  675. package/src/stories/ProductReleaseCard.stories.tsx +61 -0
  676. package/src/stories/ProgramCard.stories.tsx +79 -0
  677. package/src/stories/RoadmapCard.stories.tsx +75 -0
  678. package/src/stories/SlackMessageCard.stories.tsx +41 -0
  679. package/src/stories/__fixtures__/chat-cards.ts +604 -0
  680. package/src/types/.blog.md +53 -29
  681. package/src/types/.case-study.md +44 -27
  682. package/src/types/.customer-interview.md +66 -44
  683. package/src/types/.delivery.md +40 -0
  684. package/src/types/.employee.md +24 -30
  685. package/src/types/.index.md +33 -47
  686. package/src/types/.marketing.md +49 -44
  687. package/src/types/.navigation.md +33 -25
  688. package/src/types/.os.types.md +32 -27
  689. package/src/types/.platform.md +31 -28
  690. package/src/types/.product-release.md +65 -38
  691. package/src/types/.supabase.md +37 -29
  692. package/src/types/.team.md +41 -33
  693. package/src/types/.video-processing.md +54 -0
  694. package/src/types/.waitlist.md +40 -36
  695. package/src/utils/.access-code-client.md +37 -36
  696. package/src/utils/.cn.md +31 -23
  697. package/src/utils/.color-analysis.md +35 -0
  698. package/src/utils/.country-phone-utils.md +39 -0
  699. package/src/utils/.date-formatters.md +19 -18
  700. package/src/utils/.embed-authed-fetch.md +39 -0
  701. package/src/utils/.embed-proxy-auth-storage.md +38 -0
  702. package/src/utils/.fetch-priority.md +41 -0
  703. package/src/utils/.format.md +74 -25
  704. package/src/utils/.generic-domain-utils.md +42 -0
  705. package/src/utils/.image-proxy.md +59 -23
  706. package/src/utils/.index.md +42 -49
  707. package/src/utils/.local-storage-adapter.md +50 -0
  708. package/src/utils/.ods-color-utils.md +55 -38
  709. package/src/utils/.platform-config.md +45 -25
  710. package/src/utils/.scroll-into-view.md +40 -0
  711. package/src/utils/.source-icons.md +53 -0
  712. package/src/utils/.sse-decision-frame.md +46 -0
  713. package/src/utils/dev-sections/.index.md +34 -0
  714. package/src/utils/dev-sections/.openframe-dev-sections.md +49 -0
  715. package/dist/chunk-ZDF6F7ED.cjs.map +0 -1
  716. package/dist/chunk-ZTJVRSN5.js.map +0 -1
  717. package/src/components/.card.md +0 -42
  718. package/src/components/.contact-button.md +0 -30
  719. package/src/components/.drawer.md +0 -46
  720. package/src/components/.fixed-layout-container.md +0 -47
  721. package/src/components/.footer-waitlist-card.md +0 -29
  722. package/src/components/.join-waitlist-cta.md +0 -29
  723. package/src/components/.sheet.md +0 -47
  724. package/src/components/.sliding-panel.md +0 -48
  725. package/src/components/.tooltip.md +0 -48
  726. package/src/components/.use-mobile.md +0 -42
  727. package/src/components/.vendor-compact-card.md +0 -66
  728. package/src/components/.x-button.md +0 -42
  729. package/src/components/features/.github-repo-button.md +0 -40
  730. package/src/components/features/.organization-icon.md +0 -47
  731. package/src/components/features/.organization-selector.md +0 -45
  732. package/src/components/icons/.fleet-icon.md +0 -39
  733. package/src/components/icons/.meshcentral-icon.md +0 -35
  734. package/src/components/icons/.refresh-icon.md +0 -34
  735. package/src/components/icons/.tactical-icon.md +0 -35
  736. package/src/components/ui/.button.md +0 -69
  737. package/src/components/ui/.log-table-row.md +0 -47
  738. package/src/components/ui/.selectable-device-card.md +0 -46
  739. package/src/hooks/.api-hooks-stub.md +0 -45
  740. package/src/hooks/api/.use-product-releases.md +0 -53
  741. package/src/stories/.OrganizationSelector.stories.md +0 -42
  742. package/src/stories/.SelectableDeviceCard.stories.md +0 -30
  743. package/src/utils/.lite-youtube-embed-stub.md +0 -37
  744. package/src/utils/.lite-youtube-embed.md +0 -33
  745. /package/dist/{chunk-IK2X5YJU.js.map → chunk-7PCP7YQR.js.map} +0 -0
  746. /package/dist/{chunk-3JWIJJ44.js.map → chunk-R6MLPU4A.js.map} +0 -0
@@ -0,0 +1,35 @@
1
+ <!-- source-hash: de008cac6e8735331504b8c3add5fdc8 -->
2
+ Shared Tailwind class constants for button surface colors, outline borders, and split-divider colors — consumed by both `Button` and `SplitButton` components as a single source of truth.
3
+
4
+ ## Key Components
5
+
6
+ - **`buttonSurfaceClasses`** — Object map of Tailwind classes per visual variant (`accent`, `outline`, `transparent`, `destructive`), covering base, hover, active, `disabled:`, and `aria-disabled:` states.
7
+ - **`outlineBorderClasses`** — Shared border string applied to `outline` variant buttons across all states.
8
+ - **`splitDividerColorClasses`** — Per-variant border color for the vertical seam dividing main and icon halves in split-button layouts.
9
+ - **`ButtonSurfaceVariant`** — Derived union type (`"accent" | "outline" | "transparent" | "destructive"`) inferred from `buttonSurfaceClasses` keys.
10
+
11
+ ## Usage Example
12
+
13
+ ```typescript
14
+ import {
15
+ buttonSurfaceClasses,
16
+ outlineBorderClasses,
17
+ splitDividerColorClasses,
18
+ type ButtonSurfaceVariant,
19
+ } from "./button-styles"
20
+
21
+ const variant: ButtonSurfaceVariant = "accent"
22
+
23
+ // Apply surface classes to a button element
24
+ const surfaceClass = buttonSurfaceClasses[variant]
25
+ // → "bg-ods-accent text-ods-text-on-accent hover:bg-ods-accent-hover ..."
26
+
27
+ // Combine with border classes for the outline variant
28
+ const outlineButtonClass = `${buttonSurfaceClasses.outline} ${outlineBorderClasses}`
29
+
30
+ // Resolve divider color for a SplitButton
31
+ const dividerClass = splitDividerColorClasses[variant]
32
+ // → "border-ods-accent-active"
33
+ ```
34
+
35
+ > **Note:** Both `disabled:` and `aria-disabled:` states are included in every variant because `<a>` elements don't support the native `:disabled` pseudo-class — use `aria-disabled` on anchor-based buttons.
@@ -0,0 +1,53 @@
1
+ <!-- source-hash: e6cbc38937ee7e5569d78f2d7f50de6f -->
2
+ A polymorphic, variant-aware button component built on `class-variance-authority` and Radix UI's `Slot`, supporting standard buttons, link navigation, split-icon layouts, and loading states.
3
+
4
+ ## Key Components
5
+
6
+ - **`Button`** — Primary export; a `forwardRef` component that renders as `<button>`, `<Link>`, or a custom element (`asChild`).
7
+ - **`buttonVariants`** — CVA config for the standard single-content layout; drives `variant`, `size`, `fullWidth`, and `noPaddingX` props.
8
+ - **`splitShellVariants` / `splitSlotVariants`** — CVA configs for the split layout (triggered by `splitIcon`), where a vertical divider separates content from a trailing icon area.
9
+ - **`Spinner`** — Internal animated SVG displayed during the `loading` state; absolutely positioned to avoid layout shift.
10
+ - **`ButtonProps`** — Full interface including `href`, `linkProps`, `leftIcon`, `rightIcon`, `splitIcon`, `loading`, and deprecated `size="small-legacy"`.
11
+
12
+ ## Usage Example
13
+
14
+ ```typescript
15
+ // Standard accent button
16
+ <Button variant="accent" size="default" onClick={handleClick}>
17
+ Save
18
+ </Button>
19
+
20
+ // Link button with new-tab navigation
21
+ <Button href="https://flamingo.run" openInNewTab>
22
+ Learn More
23
+ </Button>
24
+
25
+ // Loading state (preserves button width)
26
+ <Button loading disabled>
27
+ Submitting...
28
+ </Button>
29
+
30
+ // Split layout with trailing icon
31
+ <Button splitIcon={<ChevronDownIcon />} variant="outline">
32
+ Actions
33
+ </Button>
34
+
35
+ // Pre-resolved nav link (from useNavLink)
36
+ <Button linkProps={{ href: "/dashboard", target: "_blank", rel: "noopener noreferrer" }}>
37
+ Dashboard
38
+ </Button>
39
+
40
+ // Render as child (asChild pattern)
41
+ <Button asChild variant="destructive">
42
+ <a href="/delete">Delete Account</a>
43
+ </Button>
44
+ ```
45
+
46
+ ### Variants
47
+
48
+ | Prop | Options |
49
+ |---|---|
50
+ | `variant` | `accent` · `outline` · `transparent` · `destructive` |
51
+ | `size` | `default` · `small` · `icon` · `small-legacy` *(deprecated)* |
52
+ | `fullWidth` | `true` / `false` |
53
+ | `noPaddingX` | `true` / `false` |
@@ -0,0 +1,48 @@
1
+ <!-- source-hash: ae09312a4100bb1a98fd84f799794547 -->
2
+ A compound button component with two independently interactive halves — a main action area and a trailing icon action area — separated by a 1px variant-colored divider seam.
3
+
4
+ ## Key Components
5
+
6
+ - **`SplitButton`** — Primary exported component (`React.forwardRef<HTMLDivElement, SplitButtonProps>`). Renders a `role="group"` div containing two `Half` instances sharing the same variant and size.
7
+ - **`Half`** — Internal helper that renders either a `<button>` or a Next.js `<Link>` depending on whether an `href` is provided, applying `splitHalfVariants` classes.
8
+ - **`splitHalfVariants`** — `cva`-powered class builder with `variant` (`accent` | `outline` | `transparent` | `destructive`), `size` (`default` | `small`), and `side` (`main` | `icon`) axes. Compound variants handle rounded corners, divider borders, and icon-half width overrides.
9
+ - **`SplitButtonIconAction`** — Interface describing the icon half: requires `icon` and `aria-label`; optionally accepts `onClick`, `href`, `openInNewTab`, `prefetch`, and `disabled`.
10
+ - **`SplitButtonProps`** — Full prop surface for `SplitButton`, including `fullWidth`, `mainDisabled` (disables only the main half), `groupAriaLabel`, and the required `iconAction`.
11
+
12
+ ## Usage Example
13
+
14
+ ```typescript
15
+ import { SplitButton } from "./split-button"
16
+ import { ChevronDownIcon, PlusIcon } from "lucide-react"
17
+
18
+ // Accent split button: main action navigates, icon half opens a dropdown
19
+ <SplitButton
20
+ variant="accent"
21
+ size="default"
22
+ href="/tickets/new"
23
+ leftIcon={<PlusIcon />}
24
+ groupAriaLabel="Create ticket actions"
25
+ iconAction={{
26
+ icon: <ChevronDownIcon />,
27
+ "aria-label": "More create options",
28
+ onClick: () => setDropdownOpen(true),
29
+ }}
30
+ >
31
+ New Ticket
32
+ </SplitButton>
33
+
34
+ // Destructive split with main disabled independently
35
+ <SplitButton
36
+ variant="destructive"
37
+ mainDisabled
38
+ iconAction={{
39
+ icon: <ChevronDownIcon />,
40
+ "aria-label": "Delete options",
41
+ onClick: handleIconClick,
42
+ }}
43
+ >
44
+ Delete
45
+ </SplitButton>
46
+ ```
47
+
48
+ > **Accessibility note:** The icon half has no visible text, so `iconAction["aria-label"]` is required. Use `groupAriaLabel` to label the wrapping `role="group"` when both halves share a semantic context.
@@ -0,0 +1,48 @@
1
+ <!-- source-hash: 3ff43cdc4cea745588c40e71214b7483 -->
2
+ Renders the body of a `DataTable` component, handling three states: loading skeleton, empty state, and populated rows with optional padding placeholders.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Type | Description |
7
+ |--------|------|-------------|
8
+ | `DataTableBody` | Component | Main body renderer consuming `DataTableContext` |
9
+ | `DataTableBodyProps` | Interface | Props interface with generic row type `T` |
10
+
11
+ ### Key Props
12
+
13
+ | Prop | Type | Description |
14
+ |------|------|-------------|
15
+ | `loading` | `boolean` | Shows skeleton rows when `true` and data is empty |
16
+ | `skeletonRows` | `number` | Number of skeleton rows to render (default: `10`) |
17
+ | `emptyMessage` | `string` | Message shown when data is empty (default: `'No data available'`) |
18
+ | `minRows` | `number` | Pads with invisible rows to maintain stable table height |
19
+ | `onRowClick` | `(item: T) => void` | Click handler for entire row (skips `data-no-row-click` elements) |
20
+ | `rowHref` | `(item: T) => string` | Converts rows to `next/link` anchors; ignored if `onRowClick` is set |
21
+ | `rowClassName` | `string \| ((item, index) => string)` | Per-row class; use `useCallback` to preserve `React.memo` |
22
+ | `compact` | `boolean` | Enables dense row height |
23
+
24
+ ## Usage Example
25
+
26
+ ```typescript
27
+ import { DataTable } from './data-table'
28
+ import { DataTableBody } from './data-table-body'
29
+
30
+ const handleRowClick = useCallback((item: MyItem) => {
31
+ router.push(`/items/${item.id}`)
32
+ }, [])
33
+
34
+ const getRowHref = useCallback((item: MyItem) => `/items/${item.id}`, [])
35
+
36
+ <DataTable columns={columns} data={data}>
37
+ <DataTableBody<MyItem>
38
+ loading={isLoading}
39
+ skeletonRows={10}
40
+ minRows={10}
41
+ emptyMessage="No items found"
42
+ onRowClick={handleRowClick}
43
+ compact={false}
44
+ />
45
+ </DataTable>
46
+ ```
47
+
48
+ > **Performance tip:** Always memoize `onRowClick`, `rowHref`, and function-form `rowClassName` with `useCallback` to preserve `React.memo` optimization on `DataTableRow`.
@@ -0,0 +1,45 @@
1
+ <!-- source-hash: 7328c0a6f65fd12c32856a3433715721 -->
2
+ A React component that wraps `FiltersDropdown` to provide column-level filter UI for TanStack Table, reading and writing filter state directly on a `Column` instance.
3
+
4
+ ## Key Components
5
+
6
+ ### `DataTableColumnFilter`
7
+ The primary export — a client-side dropdown filter trigger rendered inside a table column header.
8
+
9
+ | Prop | Type | Default | Description |
10
+ |------|------|---------|-------------|
11
+ | `column` | `Column<unknown, unknown>` | — | TanStack column instance (source of filter state) |
12
+ | `options` | `DataTableFilterOption[]` | — | Checkbox options shown in the dropdown |
13
+ | `placement` | `'bottom-start' \| 'bottom-end' \| 'bottom'` | `'bottom-start'` | Dropdown placement |
14
+ | `label` | `string` | — | Column label shown in the trigger and dropdown header |
15
+ | `align` | `'left' \| 'center' \| 'right'` | `'left'` | Horizontal alignment of the trigger content |
16
+
17
+ ### `DataTableColumnFilterProps`
18
+ TypeScript interface describing all accepted props.
19
+
20
+ ### `EMPTY_ARRAY`
21
+ Module-level stable reference used to prevent unnecessary `useMemo` invalidations when no filter is active.
22
+
23
+ ## Usage Example
24
+
25
+ ```typescript
26
+ import { DataTableColumnFilter } from './data-table-column-filter'
27
+
28
+ // Inside a TanStack Table column header definition:
29
+ {
30
+ header: ({ column }) => (
31
+ <DataTableColumnFilter
32
+ column={column}
33
+ label="Status"
34
+ options={[
35
+ { label: 'Active', value: 'active' },
36
+ { label: 'Inactive', value: 'inactive' },
37
+ ]}
38
+ placement="bottom-start"
39
+ align="left"
40
+ />
41
+ ),
42
+ }
43
+ ```
44
+
45
+ > **Note:** `column.setFilterValue(undefined)` is used instead of `[]` on reset/clear, keeping TanStack Table's `getIsFiltered()` accurate. The `activeCount > 0` check on the `Filter02Icon` highlights the icon in the accent color when a filter is applied.
@@ -0,0 +1,45 @@
1
+ <!-- source-hash: baf395d8adb0995e4c693186e2740b56 -->
2
+ Cursor-based pagination footer component for `DataTable`, wrapping `CursorPagination` with a top-border separator styled to match the legacy `Table` appearance.
3
+
4
+ ## Key Components
5
+
6
+ ### `DataTableCursorFooter`
7
+ A thin wrapper around `<CursorPagination>` that automatically reads the current row count from the `DataTable` context via `useDataTableContext()`.
8
+
9
+ **Props (`DataTableCursorFooterProps`):**
10
+
11
+ | Prop | Type | Description |
12
+ |------|------|-------------|
13
+ | `currentCount` | `number` (optional) | Overrides the auto-detected row count from the table instance |
14
+ | `showInfo` | inherited | Defaults to `true` if not provided |
15
+ | `...rest` | `CursorPaginationProps` | All `CursorPagination` props except `currentCount` |
16
+
17
+ **Automatic behavior:**
18
+ - Reads `table.getRowModel().rows.length` as the default `currentCount`
19
+ - Applies `border-t`, spacing tokens, and supports `className` override
20
+
21
+ ## Usage Example
22
+
23
+ ```typescript
24
+ <DataTable data={rows} columns={columns}>
25
+ <DataTable.Body />
26
+ <DataTableCursorFooter
27
+ hasNextPage={pageInfo.hasNextPage}
28
+ hasPreviousPage={pageInfo.hasPreviousPage}
29
+ onNextPage={() => fetchNextPage()}
30
+ onPreviousPage={() => fetchPreviousPage()}
31
+ />
32
+ </DataTable>
33
+ ```
34
+
35
+ Override the displayed count manually:
36
+
37
+ ```typescript
38
+ <DataTableCursorFooter
39
+ hasNextPage={true}
40
+ onNextPage={handleNext}
41
+ currentCount={filteredCount}
42
+ />
43
+ ```
44
+
45
+ > **Note:** Must be placed after `<DataTable.Body>` and rendered inside a `DataTable` context. Uses `useDataTableContext()` internally — rendering outside a `DataTable` will throw.
@@ -0,0 +1,43 @@
1
+ <!-- source-hash: f96e91397f5dd889c77eca76b3638ae9 -->
2
+ Empty state component for data tables, displaying a message, optional icon, and optional action button when no data is available.
3
+
4
+ ## Key Components
5
+
6
+ ### `DataTableEmptyProps`
7
+ | Prop | Type | Default | Description |
8
+ |------|------|---------|-------------|
9
+ | `message` | `string` | `'No data available'` | Text shown below the icon |
10
+ | `icon` | `ReactNode` | `<FileX2 />` | Custom icon; falls back to `FileX2` from lucide-react |
11
+ | `action` | `{ label: string; onClick: () => void }` | — | Optional CTA button rendered below the message |
12
+ | `className` | `string` | — | Additional CSS classes for the wrapper |
13
+
14
+ ### `DataTableEmpty`
15
+ A client component that renders a centered empty state card using ODS design tokens for spacing, colors, and borders.
16
+
17
+ ## Usage Example
18
+
19
+ ```typescript
20
+ // Basic usage
21
+ <DataTableEmpty />
22
+
23
+ // With custom message
24
+ <DataTableEmpty message="No tickets found" />
25
+
26
+ // With custom icon and action
27
+ <DataTableEmpty
28
+ message="No devices registered"
29
+ icon={<ServerOff className="w-12 h-12" />}
30
+ action={{
31
+ label: "Add Device",
32
+ onClick: () => router.push("/devices/new"),
33
+ }}
34
+ />
35
+
36
+ // Inside a table when rows are empty
37
+ {rows.length === 0 && (
38
+ <DataTableEmpty
39
+ message="No results match your filters"
40
+ action={{ label: "Clear Filters", onClick: resetFilters }}
41
+ />
42
+ )}
43
+ ```
@@ -0,0 +1,55 @@
1
+ <!-- source-hash: 7af4501b2005cad2efd91858dbef4eba -->
2
+ Renders the sticky-capable column header row for a data table, including sort indicators, column filters, and an optional right-side slot.
3
+
4
+ ## Key Components
5
+
6
+ ### `DataTableHeader`
7
+ Main exported component. Reads the table instance from context, renders a single header group row, and handles:
8
+ - **Sticky positioning** via `stickyHeader` / `stickyHeaderOffset` props
9
+ - **Responsive visibility** — hidden on mobile, shown from `md` breakpoint up
10
+ - **Right slot** — absolutely positioned when visible header cells exist, inline otherwise
11
+
12
+ ### `DataTableSortState`
13
+ ```typescript
14
+ interface DataTableSortState {
15
+ id: string // column ID being sorted
16
+ desc: boolean // true = descending
17
+ }
18
+ ```
19
+ Stateless descriptor — the consumer owns the sort cycle and passes the current state down.
20
+
21
+ ### Internal Components
22
+
23
+ | Component | Purpose |
24
+ |-----------|---------|
25
+ | `HeaderCell` | Renders one column header — either a `DataTableColumnFilter` or a sortable/plain label |
26
+ | `HeaderLabel` | Renders string headers with ODS typography; delegates render-function headers to `flexRender` |
27
+ | `SortIcon` | Displays `↑`, `↓`, or a neutral swap icon based on current sort direction |
28
+
29
+ ## Usage Example
30
+
31
+ ```typescript
32
+ // Consumer owns the sort state and toggle cycle
33
+ const [sort, setSort] = useState<DataTableSortState | null>(null)
34
+
35
+ function handleSortChange(columnId: string) {
36
+ setSort(prev =>
37
+ prev?.id === columnId
38
+ ? prev.desc ? null : { id: columnId, desc: true }
39
+ : { id: columnId, desc: false }
40
+ )
41
+ }
42
+
43
+ <DataTable table={table}>
44
+ <DataTable.Header
45
+ stickyHeader
46
+ stickyHeaderOffset="top-[56px]"
47
+ sort={sort}
48
+ onSortChange={handleSortChange}
49
+ rightSlot={<DataTable.RowCount itemName="device" />}
50
+ />
51
+ <DataTable.Body />
52
+ </DataTable>
53
+ ```
54
+
55
+ > **Note:** Sorting is opt-in per column via `meta.sortable = true` in the column definition. The component never calls TanStack's built-in sort APIs — all sort logic lives in the consumer.
@@ -0,0 +1,44 @@
1
+ <!-- source-hash: 718cfa113d039df6d7ab2e0e2bb64de9 -->
2
+ Infinite-scroll footer component for `DataTable` that uses an `IntersectionObserver` sentinel to automatically trigger data loading when the user scrolls near the bottom of the table.
3
+
4
+ ## Key Components
5
+
6
+ - **`DataTableInfiniteFooter`** — Main component that renders a 1px sentinel `<div>` and optional skeleton rows
7
+ - **`DataTableInfiniteFooterProps`** — Interface defining control props for pagination state and load behavior
8
+ - **Sentinel element** — A hidden `h-1` div observed by `IntersectionObserver`; fires `onLoadMore` when it enters the viewport
9
+ - **`DataTableSkeleton`** — Rendered during active fetch to provide loading feedback
10
+
11
+ ## Usage Example
12
+
13
+ ```typescript
14
+ import { DataTableInfiniteFooter } from './data-table-infinite-footer'
15
+
16
+ function MyTable() {
17
+ const { data, hasNextPage, isFetchingNextPage, fetchNextPage } = useInfiniteQuery(...)
18
+
19
+ return (
20
+ <table>
21
+ <tbody>
22
+ {data.map(row => <tr key={row.id}>...</tr>)}
23
+ </tbody>
24
+ <DataTableInfiniteFooter
25
+ hasNextPage={hasNextPage}
26
+ isFetchingNextPage={isFetchingNextPage}
27
+ onLoadMore={fetchNextPage}
28
+ skeletonRows={5}
29
+ rootMargin="300px"
30
+ />
31
+ </table>
32
+ )
33
+ }
34
+ ```
35
+
36
+ ## Notes
37
+
38
+ | Prop | Default | Description |
39
+ |------|---------|-------------|
40
+ | `skeletonRows` | `3` | Number of skeleton rows shown while fetching |
41
+ | `rootMargin` | `'200px'` | `IntersectionObserver` margin, controls how early loading triggers |
42
+
43
+ - `onLoadMore` is stored in a ref to avoid stale closure issues in the observer callback
44
+ - The observer disconnects and re-attaches whenever `hasNextPage`, `isFetchingNextPage`, or `rootMargin` changes
@@ -0,0 +1,43 @@
1
+ <!-- source-hash: 95233cb5edc63b60b1c188abbbdfc1dc -->
2
+ Renders a row count label (e.g., "8 devices") for a data table, pulling the count from the table context or an explicit override.
3
+
4
+ ## Key Components
5
+
6
+ - **`DataTableRowCount`** — Functional component that displays a formatted count with a singular/plural item label
7
+ - **`DataTableRowCountProps`** — Interface defining configuration options for the count display
8
+ - **`useDataTableContext`** — Hook consumed internally to read the current row model length
9
+
10
+ ## Props
11
+
12
+ | Prop | Type | Default | Description |
13
+ |------|------|---------|-------------|
14
+ | `itemName` | `string` | `'result'` | Singular noun; auto-pluralized by appending `"s"` |
15
+ | `totalCount` | `number` | row model length | Override for server-paginated tables |
16
+ | `pluralize` | `(count, itemName) => string` | — | Custom pluralizer for irregular nouns |
17
+ | `hideWhenEmpty` | `boolean` | `true` | Hides the element when count is zero |
18
+ | `className` | `string` | — | Additional CSS classes |
19
+
20
+ ## Usage Example
21
+
22
+ ```typescript
23
+ // Basic usage — count from table context
24
+ <DataTable.RowCount itemName="device" />
25
+
26
+ // Server-paginated — pass total explicitly
27
+ <DataTable.Header
28
+ rightSlot={
29
+ <DataTable.RowCount
30
+ itemName="device"
31
+ totalCount={pageInfo.total}
32
+ />
33
+ }
34
+ />
35
+
36
+ // Irregular pluralization
37
+ <DataTable.RowCount
38
+ itemName="person"
39
+ pluralize={(count, name) => count === 1 ? name : 'people'}
40
+ />
41
+ ```
42
+
43
+ > For server-paginated tables, always pass `totalCount` — the table context only tracks loaded rows, not the full dataset total.
@@ -0,0 +1,47 @@
1
+ <!-- source-hash: bcf36c7fa76e89e4c5f5a36b1b5b7494 -->
2
+ Renders a single data table row as either a navigable `<Link>` or a clickable `<div>`, with built-in click-bubbling control for nested interactive elements.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Type | Description |
7
+ |--------|------|-------------|
8
+ | `DataTableRow` | `React.memo` component | Memoized row renderer wrapping `DataTableRowImpl` |
9
+ | `DataTableRowProps<T>` | Interface | Typed props for row data, click handler, href, compact mode, and className |
10
+ | `CellContent` | Internal component | Wraps primitive string/number values in default truncated text styling |
11
+
12
+ ## Click-Bubbling Protocol
13
+
14
+ The row implements a `data-no-row-click` attribute contract. Any cell element that should **not** trigger row navigation or `onClick` must carry this attribute:
15
+
16
+ ```tsx
17
+ // Column definition with opt-out buttons
18
+ {
19
+ id: 'actions',
20
+ cell: ({ row }) => (
21
+ <div data-no-row-click className="flex gap-2 justify-end">
22
+ <Button onClick={() => edit(row.original)}>Edit</Button>
23
+ </div>
24
+ ),
25
+ }
26
+ ```
27
+
28
+ Portaled descendants (tooltips, dropdowns via `FloatingPortal`) are also safely ignored — clicks whose DOM target falls outside the row's `containerRef` are suppressed without needing `stopPropagation` at the source.
29
+
30
+ ## Usage Example
31
+
32
+ ```typescript
33
+ // Clickable row (div mode)
34
+ <DataTableRow
35
+ row={row}
36
+ onClick={(item) => console.log('Selected:', item)}
37
+ compact={false}
38
+ />
39
+
40
+ // Link mode — enables browser-native behaviours (right-click, Cmd+click, :visited)
41
+ <DataTableRow
42
+ row={row}
43
+ href={`/tickets/${row.original.id}`}
44
+ />
45
+ ```
46
+
47
+ > **Performance note:** Pass stable references for `onClick` and `className` via `useCallback` / `useMemo` in the parent to avoid unnecessary re-renders in long lists. `href` and string `className` are compared by value automatically.
@@ -0,0 +1,42 @@
1
+ <!-- source-hash: c772b3ac402db602bd1473a8927ce650 -->
2
+ Renders animated skeleton placeholder rows for a `DataTable` during loading states, matching the visual structure of real rows (desktop multi-column and mobile single-column layouts).
3
+
4
+ ## Key Components
5
+
6
+ | Export | Type | Description |
7
+ |--------|------|-------------|
8
+ | `DataTableSkeleton` | Component | Animated pulse skeleton rows mirroring visible table columns |
9
+ | `DataTableSkeletonProps` | Interface | Props: `rows` (count), `className`, `rowClassName` |
10
+ | `ROW_HEIGHT_DESKTOP` | Constant | Shared row height class for desktop (`h-[68px] md:h-[80px]`) |
11
+ | `ROW_HEIGHT_MOBILE` | Constant | Shared row height class for mobile (`h-[68px]`) |
12
+
13
+ ## Usage Example
14
+
15
+ ```typescript
16
+ import {
17
+ DataTableSkeleton,
18
+ DataTableSkeletonProps,
19
+ } from './data-table-skeleton'
20
+
21
+ // Inside a DataTable context, shown while data is loading
22
+ function MyTableContent({ isLoading }: { isLoading: boolean }) {
23
+ if (isLoading) {
24
+ return (
25
+ <DataTableSkeleton
26
+ rows={5}
27
+ className="my-2"
28
+ rowClassName="opacity-80"
29
+ />
30
+ )
31
+ }
32
+ return <DataTableRows />
33
+ }
34
+ ```
35
+
36
+ ## Behavior Notes
37
+
38
+ - Reads visible columns via `useDataTableContext()` to match real column widths and layout
39
+ - **Desktop**: renders one placeholder block per column, respecting `meta.width` or `flex-1`
40
+ - **Mobile**: renders a simplified two-line placeholder (title + subtitle)
41
+ - Every other row (`index % 2 === 0`) adds a secondary line on the first column, mimicking subtitle density variation
42
+ - Uses `animate-pulse` for the loading animation and ODS design tokens for consistent theming
@@ -0,0 +1,47 @@
1
+ <!-- source-hash: 6a7ddf5f10f15bad8596c7908f4f597c -->
2
+ Provides the root context and container for a composable `DataTable` component, supplying a TanStack Table instance via React context to all child components.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Type | Description |
7
+ |--------|------|-------------|
8
+ | `DataTableRoot` | Component | Root wrapper that provides the table instance via context |
9
+ | `useDataTableContext` | Hook | Consumes the table context; throws if used outside `DataTableRoot` |
10
+ | `DataTableContext` | Context | Internal React context holding the `Table<any>` instance |
11
+ | `DataTableProps` | Interface | Props for `DataTableRoot`: `table`, `children`, `className` |
12
+
13
+ ## Usage Example
14
+
15
+ ```typescript
16
+ import { useReactTable } from '@tanstack/react-table'
17
+ import { DataTableRoot, useDataTableContext } from './data-table'
18
+
19
+ // Compose child components that consume the context
20
+ function MyTableBody<T>() {
21
+ const table = useDataTableContext<T>()
22
+ return (
23
+ <tbody>
24
+ {table.getRowModel().rows.map(row => (
25
+ <tr key={row.id}>...</tr>
26
+ ))}
27
+ </tbody>
28
+ )
29
+ }
30
+
31
+ // Wrap with DataTableRoot to provide context
32
+ function MyTable() {
33
+ const table = useReactTable({ data, columns, getCoreRowModel })
34
+
35
+ return (
36
+ <DataTableRoot table={table} className="rounded-lg border">
37
+ <MyTableBody />
38
+ </DataTableRoot>
39
+ )
40
+ }
41
+ ```
42
+
43
+ ## Notes
44
+
45
+ - `DataTableRoot` renders a full-width `flex flex-col` container; additional layout classes can be passed via `className`.
46
+ - `useDataTableContext` is generic — pass the row type `T` for full type safety on the returned `Table<T>` instance.
47
+ - All sub-components (`Header`, `Body`, etc.) **must** be rendered inside `DataTableRoot`; otherwise `useDataTableContext` will throw a descriptive error.
@@ -0,0 +1,55 @@
1
+ <!-- source-hash: fda76a4590fc216e2e89f36db86ddeba -->
2
+ Public API barrel for the `DataTable` compound component. Assembles all sub-components into a single composable primitive, re-exports named pieces, utility hooks, constants, and proxied TanStack Table primitives so consumers need only one import path.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Description |
7
+ |---|---|
8
+ | `DataTable` | Compound component (`DataTableRoot` + `Header`, `Body`, `Row`, `Skeleton`, `Empty`, `InfiniteFooter`, `CursorFooter`, `RowCount`) |
9
+ | `useDataTable` | Hook to build the TanStack `Table` instance passed to `<DataTable>` |
10
+ | `useDataTableContext` | React context accessor for nested sub-components |
11
+ | `alignJustify` / `getHideClasses` / `multiSelectFilterFn` | Column layout and filtering utilities |
12
+ | `ROW_HEIGHT_DESKTOP` / `ROW_HEIGHT_MOBILE` | Skeleton row height constants |
13
+ | TanStack re-exports | `flexRender`, `createColumnHelper`, `getCoreRowModel`, and all standard row model getters |
14
+
15
+ ## Usage Example
16
+
17
+ ```typescript
18
+ import {
19
+ DataTable,
20
+ useDataTable,
21
+ createColumnHelper,
22
+ getCoreRowModel,
23
+ } from '@/components/data-table'
24
+
25
+ const col = createColumnHelper<Device>()
26
+ const columns = [
27
+ col.accessor('name', { header: 'Name' }),
28
+ col.accessor('status', { header: 'Status' }),
29
+ ]
30
+
31
+ function DeviceTable({ data, hasNext, loadNext, isLoading }) {
32
+ const table = useDataTable({
33
+ data,
34
+ columns,
35
+ getCoreRowModel: getCoreRowModel(),
36
+ })
37
+
38
+ return (
39
+ <DataTable table={table}>
40
+ <DataTable.Header stickyHeader stickyHeaderOffset="top-[56px]" />
41
+ <DataTable.Body
42
+ loading={isLoading}
43
+ rowHref={d => `/devices/${d.id}`}
44
+ />
45
+ <DataTable.InfiniteFooter
46
+ hasNextPage={hasNext}
47
+ isFetchingNextPage={isLoading}
48
+ onLoadMore={() => loadNext(50)}
49
+ />
50
+ </DataTable>
51
+ )
52
+ }
53
+ ```
54
+
55
+ > Both compound (`DataTable.Header`) and named (`DataTableHeader`) import styles are supported — use whichever fits your codebase conventions.