@brainfish-ai/components 0.26.0 → 0.26.1

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 (236) hide show
  1. package/dist/chat-search.d.ts +14 -1
  2. package/dist/esm/chunks/ChatSearch.Cqo4WF3n.js +95 -0
  3. package/dist/esm/chunks/ChatSearch.Cqo4WF3n.js.map +1 -0
  4. package/dist/esm/chunks/Conversation.UZ5rx7_0.js +22 -0
  5. package/dist/esm/chunks/{Conversation.BriXFYqU.js.map → Conversation.UZ5rx7_0.js.map} +1 -1
  6. package/dist/esm/chunks/FormattedMessage.D9xA6QsH.js +23 -0
  7. package/dist/esm/chunks/FormattedMessage.D9xA6QsH.js.map +1 -0
  8. package/dist/esm/chunks/MermaidDiagram.PRgXQ5Yh.js +2 -0
  9. package/dist/esm/chunks/{MermaidDiagram.xQ0CVFOI.js.map → MermaidDiagram.PRgXQ5Yh.js.map} +1 -1
  10. package/dist/esm/chunks/_commonjsHelpers.lGe4XDVY.js +2 -0
  11. package/dist/esm/chunks/_commonjsHelpers.lGe4XDVY.js.map +1 -0
  12. package/dist/esm/chunks/button.BYc5d6AZ.js +3 -0
  13. package/dist/esm/chunks/{button.DQL6gCAt.js.map → button.BYc5d6AZ.js.map} +1 -1
  14. package/dist/esm/chunks/chart.BDL2tf-S.js +10 -0
  15. package/dist/esm/chunks/{chart.4ZbtBMmR.js.map → chart.BDL2tf-S.js.map} +1 -1
  16. package/dist/esm/chunks/chat-logo.CqPppEb9.js +3 -0
  17. package/dist/esm/chunks/chat-logo.CqPppEb9.js.map +1 -0
  18. package/dist/esm/chunks/combobox.CxaWbDm9.js +6 -0
  19. package/dist/esm/chunks/{combobox.CJKym3Z1.js.map → combobox.CxaWbDm9.js.map} +1 -1
  20. package/dist/esm/chunks/dark.DuW7JuAk.js +2 -0
  21. package/dist/esm/chunks/{dark.Cq2RCgy4.js.map → dark.DuW7JuAk.js.map} +1 -1
  22. package/dist/esm/chunks/data-table.CJOR-1Kf.js +5 -0
  23. package/dist/esm/chunks/{data-table.DbcAYxMY.js.map → data-table.CJOR-1Kf.js.map} +1 -1
  24. package/dist/esm/chunks/date-picker.Bhplnvxn.js +4 -0
  25. package/dist/esm/chunks/{date-picker._cBTpdEK.js.map → date-picker.Bhplnvxn.js.map} +1 -1
  26. package/dist/esm/chunks/extends.DPdBf6DS.js +2 -0
  27. package/dist/esm/chunks/extends.DPdBf6DS.js.map +1 -0
  28. package/dist/esm/chunks/feature-flags.DOcVlPHk.js +3 -0
  29. package/dist/esm/chunks/{feature-flags.DeDEcnd1.js.map → feature-flags.DOcVlPHk.js.map} +1 -1
  30. package/dist/esm/chunks/feedback.BXKvlNz1.js +13 -0
  31. package/dist/esm/chunks/{feedback.W2OzN-5r.js.map → feedback.BXKvlNz1.js.map} +1 -1
  32. package/dist/esm/chunks/file-upload-status.4ukNFyi2.js +8 -0
  33. package/dist/esm/chunks/{file-upload-status.DP2iuttI.js.map → file-upload-status.4ukNFyi2.js.map} +1 -1
  34. package/dist/esm/chunks/filters.ita3UAnO.js +22 -0
  35. package/dist/esm/chunks/{filters.-7vSLEQ2.js.map → filters.ita3UAnO.js.map} +1 -1
  36. package/dist/esm/chunks/font-picker.BwEWBowG.js +6 -0
  37. package/dist/esm/chunks/{font-picker.DisEoE8a.js.map → font-picker.BwEWBowG.js.map} +1 -1
  38. package/dist/esm/chunks/formatDate.D2xEZm8f.js +2 -0
  39. package/dist/esm/chunks/{formatDate.CWN6IFKq.js.map → formatDate.D2xEZm8f.js.map} +1 -1
  40. package/dist/esm/chunks/formatNumber.DhVn228t.js +2 -0
  41. package/dist/esm/chunks/{formatNumber.Bm2k8QrT.js.map → formatNumber.DhVn228t.js.map} +1 -1
  42. package/dist/esm/chunks/generating-star.BN9p_FDu.js +7 -0
  43. package/dist/esm/chunks/generating-star.BN9p_FDu.js.map +1 -0
  44. package/dist/esm/chunks/header-nav.B4IJjted.js +10 -0
  45. package/dist/esm/chunks/{header-nav.b4hvOsKc.js.map → header-nav.B4IJjted.js.map} +1 -1
  46. package/dist/esm/chunks/header-pane.C1RWesOW.js +20 -0
  47. package/dist/esm/chunks/{header-pane.BFXHXxVn.js.map → header-pane.C1RWesOW.js.map} +1 -1
  48. package/dist/esm/chunks/hooks.BQTKhHSv.js +2 -0
  49. package/dist/esm/chunks/hooks.BQTKhHSv.js.map +1 -0
  50. package/dist/esm/chunks/index.uF4ME3WQ.js +4 -0
  51. package/dist/esm/chunks/{index.BqibIWDw.js.map → index.uF4ME3WQ.js.map} +1 -1
  52. package/dist/esm/chunks/input-with-tags.DrDDPxse.js +5 -0
  53. package/dist/esm/chunks/{input-with-tags.tg2nhPFv.js.map → input-with-tags.DrDDPxse.js.map} +1 -1
  54. package/dist/esm/chunks/logo.CketsPBx.js +5 -0
  55. package/dist/esm/chunks/{logo.D5BMN6Db.js.map → logo.CketsPBx.js.map} +1 -1
  56. package/dist/esm/chunks/primary.CMQbo1GJ.js +2 -0
  57. package/dist/esm/chunks/{primary.CtiRZbqq.js.map → primary.CMQbo1GJ.js.map} +1 -1
  58. package/dist/esm/chunks/review-list.qvxeqG9l.js +6 -0
  59. package/dist/esm/chunks/{review-list.BtSnfpSc.js.map → review-list.qvxeqG9l.js.map} +1 -1
  60. package/dist/esm/chunks/sidebar.IcJADYLR.js +25 -0
  61. package/dist/esm/chunks/sidebar.IcJADYLR.js.map +1 -0
  62. package/dist/esm/chunks/simpleSelect.DK1qZSXM.js +3 -0
  63. package/dist/esm/chunks/{simpleSelect.B1rktKkt.js.map → simpleSelect.DK1qZSXM.js.map} +1 -1
  64. package/dist/esm/chunks/status-badge.C-jt7Zs2.js +3 -0
  65. package/dist/esm/chunks/{status-badge.eFJ1PYeb.js.map → status-badge.C-jt7Zs2.js.map} +1 -1
  66. package/dist/esm/chunks/trend-value.BPBDBsk2.js +3 -0
  67. package/dist/esm/chunks/{trend-value.COSukPwk.js.map → trend-value.BPBDBsk2.js.map} +1 -1
  68. package/dist/esm/chunks/two-level-combobox.Bv2OQgjh.js +8 -0
  69. package/dist/esm/chunks/{two-level-combobox.BXs2z9u5.js.map → two-level-combobox.Bv2OQgjh.js.map} +1 -1
  70. package/dist/esm/chunks/useChartDateFormatters.Dx2h5AAm.js +2 -0
  71. package/dist/esm/chunks/{useChartDateFormatters.DS9ASgFO.js.map → useChartDateFormatters.Dx2h5AAm.js.map} +1 -1
  72. package/dist/esm/chunks/utils.C6Qu-kwd.js +2 -0
  73. package/dist/esm/chunks/{utils.Cwtlq8dh.js.map → utils.C6Qu-kwd.js.map} +1 -1
  74. package/dist/esm/colors.js +1 -169
  75. package/dist/esm/colors.js.map +1 -1
  76. package/dist/esm/components/article-suggestions-banner.js +4 -53
  77. package/dist/esm/components/article-suggestions-banner.js.map +1 -1
  78. package/dist/esm/components/articles-coverage.js +4 -116
  79. package/dist/esm/components/articles-coverage.js.map +1 -1
  80. package/dist/esm/components/articles-updated.js +4 -74
  81. package/dist/esm/components/articles-updated.js.map +1 -1
  82. package/dist/esm/components/breadcrumbs.js +3 -13
  83. package/dist/esm/components/breadcrumbs.js.map +1 -1
  84. package/dist/esm/components/chart-area-linear.js +6 -66
  85. package/dist/esm/components/chart-area-linear.js.map +1 -1
  86. package/dist/esm/components/chart-radial-stacked.js +2 -48
  87. package/dist/esm/components/chart-radial-stacked.js.map +1 -1
  88. package/dist/esm/components/chat-search.js +1 -1
  89. package/dist/esm/components/combobox.js +1 -1
  90. package/dist/esm/components/confirm-dialog.js +2 -47
  91. package/dist/esm/components/confirm-dialog.js.map +1 -1
  92. package/dist/esm/components/conversation.js +1 -1
  93. package/dist/esm/components/convos.js +27 -607
  94. package/dist/esm/components/convos.js.map +1 -1
  95. package/dist/esm/components/data-table.js +1 -1
  96. package/dist/esm/components/date-picker.js +1 -1
  97. package/dist/esm/components/discoveries-created.js +4 -64
  98. package/dist/esm/components/discoveries-created.js.map +1 -1
  99. package/dist/esm/components/feedback.js +1 -1
  100. package/dist/esm/components/file-upload.js +1 -1
  101. package/dist/esm/components/filter.js +1 -1
  102. package/dist/esm/components/font-picker.js +1 -1
  103. package/dist/esm/components/generating-star.js +1 -1
  104. package/dist/esm/components/input-with-tags.js +1 -1
  105. package/dist/esm/components/logo.js +1 -1
  106. package/dist/esm/components/markdown.js +1 -2
  107. package/dist/esm/components/markdown.js.map +1 -1
  108. package/dist/esm/components/metric-card.js +3 -29
  109. package/dist/esm/components/metric-card.js.map +1 -1
  110. package/dist/esm/components/select.js +1 -1
  111. package/dist/esm/components/trend-value.js +1 -1
  112. package/dist/esm/components/two-level-combobox.js +1 -1
  113. package/dist/esm/components/ui/accordion.js +7 -46
  114. package/dist/esm/components/ui/accordion.js.map +1 -1
  115. package/dist/esm/components/ui/alert-dialog.js +3 -114
  116. package/dist/esm/components/ui/alert-dialog.js.map +1 -1
  117. package/dist/esm/components/ui/alert.js +4 -103
  118. package/dist/esm/components/ui/alert.js.map +1 -1
  119. package/dist/esm/components/ui/avatar.js +7 -89
  120. package/dist/esm/components/ui/avatar.js.map +1 -1
  121. package/dist/esm/components/ui/badge.js +2 -26
  122. package/dist/esm/components/ui/badge.js.map +1 -1
  123. package/dist/esm/components/ui/breadcrumb.js +4 -60
  124. package/dist/esm/components/ui/breadcrumb.js.map +1 -1
  125. package/dist/esm/components/ui/button-group.js +4 -88
  126. package/dist/esm/components/ui/button-group.js.map +1 -1
  127. package/dist/esm/components/ui/button.js +1 -5
  128. package/dist/esm/components/ui/button.js.map +1 -1
  129. package/dist/esm/components/ui/calendar.js +2 -20
  130. package/dist/esm/components/ui/calendar.js.map +1 -1
  131. package/dist/esm/components/ui/card.js +1 -55
  132. package/dist/esm/components/ui/card.js.map +1 -1
  133. package/dist/esm/components/ui/collapsible.js +1 -33
  134. package/dist/esm/components/ui/collapsible.js.map +1 -1
  135. package/dist/esm/components/ui/combobox.js +1 -1
  136. package/dist/esm/components/ui/command.js +2 -79
  137. package/dist/esm/components/ui/command.js.map +1 -1
  138. package/dist/esm/components/ui/dialog.js +4 -60
  139. package/dist/esm/components/ui/dialog.js.map +1 -1
  140. package/dist/esm/components/ui/div-button.js +2 -61
  141. package/dist/esm/components/ui/div-button.js.map +1 -1
  142. package/dist/esm/components/ui/dropdown-menu.js +3 -114
  143. package/dist/esm/components/ui/dropdown-menu.js.map +1 -1
  144. package/dist/esm/components/ui/icon.js +2 -25
  145. package/dist/esm/components/ui/icon.js.map +1 -1
  146. package/dist/esm/components/ui/input.js +4 -47
  147. package/dist/esm/components/ui/input.js.map +1 -1
  148. package/dist/esm/components/ui/item.js +11 -140
  149. package/dist/esm/components/ui/item.js.map +1 -1
  150. package/dist/esm/components/ui/label.js +1 -19
  151. package/dist/esm/components/ui/label.js.map +1 -1
  152. package/dist/esm/components/ui/popover.js +1 -31
  153. package/dist/esm/components/ui/popover.js.map +1 -1
  154. package/dist/esm/components/ui/progress.js +2 -22
  155. package/dist/esm/components/ui/progress.js.map +1 -1
  156. package/dist/esm/components/ui/scroll-area.js +2 -32
  157. package/dist/esm/components/ui/scroll-area.js.map +1 -1
  158. package/dist/esm/components/ui/select.js +5 -66
  159. package/dist/esm/components/ui/select.js.map +1 -1
  160. package/dist/esm/components/ui/separator.js +1 -23
  161. package/dist/esm/components/ui/separator.js.map +1 -1
  162. package/dist/esm/components/ui/sheet.js +3 -62
  163. package/dist/esm/components/ui/sheet.js.map +1 -1
  164. package/dist/esm/components/ui/spinner.js +2 -17
  165. package/dist/esm/components/ui/spinner.js.map +1 -1
  166. package/dist/esm/components/ui/switch.js +2 -26
  167. package/dist/esm/components/ui/switch.js.map +1 -1
  168. package/dist/esm/components/ui/table.js +1 -82
  169. package/dist/esm/components/ui/table.js.map +1 -1
  170. package/dist/esm/components/ui/textarea.js +1 -33
  171. package/dist/esm/components/ui/textarea.js.map +1 -1
  172. package/dist/esm/components/ui/tooltip.js +3 -31
  173. package/dist/esm/components/ui/tooltip.js.map +1 -1
  174. package/dist/esm/global.css +1 -1
  175. package/dist/esm/index.js +1 -53
  176. package/dist/esm/index.js.map +1 -1
  177. package/dist/esm/layouts/full-layout.js +1 -1
  178. package/dist/esm/layouts/header-nav.js +1 -1
  179. package/dist/esm/layouts/sidebar.js +1 -1
  180. package/dist/esm/logos/microsoft-logo.js +6 -66
  181. package/dist/esm/logos/microsoft-logo.js.map +1 -1
  182. package/dist/esm/logos/microsoft-teams-logo.js +12 -112
  183. package/dist/esm/logos/microsoft-teams-logo.js.map +1 -1
  184. package/dist/esm/logos/slack-logo.js +3 -39
  185. package/dist/esm/logos/slack-logo.js.map +1 -1
  186. package/dist/esm/scenes/knowledge-review.js +17 -380
  187. package/dist/esm/scenes/knowledge-review.js.map +1 -1
  188. package/dist/esm/tailwind.preset.js +1 -1526
  189. package/dist/esm/tailwind.preset.js.map +1 -1
  190. package/dist/index.d.ts +22 -1
  191. package/dist/logo.d.ts +9 -0
  192. package/dist/stats.html +47 -46
  193. package/package.json +17 -18
  194. package/tailwind.preset.ts +1 -0
  195. package/dist/esm/chunks/ChatSearch.CeQrTOVx.js +0 -6825
  196. package/dist/esm/chunks/ChatSearch.CeQrTOVx.js.map +0 -1
  197. package/dist/esm/chunks/Conversation.BriXFYqU.js +0 -831
  198. package/dist/esm/chunks/FormattedMessage.CRbM-hF6.js +0 -39715
  199. package/dist/esm/chunks/FormattedMessage.CRbM-hF6.js.map +0 -1
  200. package/dist/esm/chunks/MermaidDiagram.xQ0CVFOI.js +0 -50
  201. package/dist/esm/chunks/_commonjsHelpers.BFTU3MAI.js +0 -8
  202. package/dist/esm/chunks/_commonjsHelpers.BFTU3MAI.js.map +0 -1
  203. package/dist/esm/chunks/button.DQL6gCAt.js +0 -48
  204. package/dist/esm/chunks/chart.4ZbtBMmR.js +0 -199
  205. package/dist/esm/chunks/combobox.CJKym3Z1.js +0 -95
  206. package/dist/esm/chunks/dark.Cq2RCgy4.js +0 -18
  207. package/dist/esm/chunks/data-table.DbcAYxMY.js +0 -102
  208. package/dist/esm/chunks/date-picker._cBTpdEK.js +0 -26
  209. package/dist/esm/chunks/extends.mO86zOh3.js +0 -12
  210. package/dist/esm/chunks/extends.mO86zOh3.js.map +0 -1
  211. package/dist/esm/chunks/feature-flags.DeDEcnd1.js +0 -22
  212. package/dist/esm/chunks/feedback.W2OzN-5r.js +0 -214
  213. package/dist/esm/chunks/file-upload-status.DP2iuttI.js +0 -141
  214. package/dist/esm/chunks/filters.-7vSLEQ2.js +0 -565
  215. package/dist/esm/chunks/font-picker.DisEoE8a.js +0 -181
  216. package/dist/esm/chunks/formatDate.CWN6IFKq.js +0 -952
  217. package/dist/esm/chunks/formatNumber.Bm2k8QrT.js +0 -10
  218. package/dist/esm/chunks/generating-star.DMDPNTaM.js +0 -1501
  219. package/dist/esm/chunks/generating-star.DMDPNTaM.js.map +0 -1
  220. package/dist/esm/chunks/header-nav.b4hvOsKc.js +0 -197
  221. package/dist/esm/chunks/header-pane.BFXHXxVn.js +0 -559
  222. package/dist/esm/chunks/hooks.BWVaVAT-.js +0 -343
  223. package/dist/esm/chunks/hooks.BWVaVAT-.js.map +0 -1
  224. package/dist/esm/chunks/index.BqibIWDw.js +0 -137
  225. package/dist/esm/chunks/input-with-tags.tg2nhPFv.js +0 -110
  226. package/dist/esm/chunks/logo.D5BMN6Db.js +0 -191
  227. package/dist/esm/chunks/primary.CtiRZbqq.js +0 -18
  228. package/dist/esm/chunks/review-list.BtSnfpSc.js +0 -117
  229. package/dist/esm/chunks/sidebar.BamKohb5.js +0 -803
  230. package/dist/esm/chunks/sidebar.BamKohb5.js.map +0 -1
  231. package/dist/esm/chunks/simpleSelect.B1rktKkt.js +0 -23
  232. package/dist/esm/chunks/status-badge.eFJ1PYeb.js +0 -18
  233. package/dist/esm/chunks/trend-value.COSukPwk.js +0 -51
  234. package/dist/esm/chunks/two-level-combobox.BXs2z9u5.js +0 -132
  235. package/dist/esm/chunks/useChartDateFormatters.DS9ASgFO.js +0 -11
  236. package/dist/esm/chunks/utils.Cwtlq8dh.js +0 -45
@@ -1,559 +0,0 @@
1
- import React__default, { useContext, useState, useMemo, useRef, useEffect, useCallback, isValidElement } from 'react';
2
- import { useMediaQuery } from 'usehooks-ts';
3
- import { a as HeaderNav, H as HEADER_NAV_HEIGHT } from './header-nav.b4hvOsKc.js';
4
- import { cva } from 'class-variance-authority';
5
- import { c as cn } from './utils.Cwtlq8dh.js';
6
- import { ScrollArea } from '../components/ui/scroll-area.js';
7
- import { F as FeatureFlagProvider } from './feature-flags.DeDEcnd1.js';
8
- import { Item } from '../components/ui/item.js';
9
- import { S as Sidebar } from './sidebar.BamKohb5.js';
10
-
11
- const FullLayoutNavStateContext = React__default.createContext(null);
12
- const FullLayoutContext = React__default.createContext(null);
13
- function FullLayoutProvider({ value, children }) {
14
- return /* @__PURE__ */ React__default.createElement(FullLayoutContext.Provider, { value }, children);
15
- }
16
- function useFullLayoutContext() {
17
- return React__default.useContext(FullLayoutContext);
18
- }
19
- function useRightSidebar() {
20
- const ctx = React__default.useContext(FullLayoutContext);
21
- if (!ctx) {
22
- throw new Error("useRightSidebar must be used within a <FullLayout> component.");
23
- }
24
- return {
25
- isOpen: ctx.isRightSidebarOpen,
26
- open: ctx.openRightSidebar,
27
- close: ctx.closeRightSidebar,
28
- toggle: ctx.toggleRightSidebar
29
- };
30
- }
31
-
32
- function MainArea({ children }) {
33
- return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, children);
34
- }
35
- MainArea.displayName = "FullLayout.MainArea";
36
-
37
- function Body({ children }) {
38
- return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, children);
39
- }
40
- Body.displayName = "FullLayout.Body";
41
-
42
- function Header(props) {
43
- const { onBrainfishNativeClick, ...rest } = props;
44
- const ctx = useFullLayoutContext();
45
- if (!ctx) return null;
46
- const handleNativeClick = () => {
47
- ctx.toggleRightSidebar();
48
- onBrainfishNativeClick?.();
49
- };
50
- return /* @__PURE__ */ React__default.createElement(
51
- HeaderNav,
52
- {
53
- ...rest,
54
- showSidebarToggle: !ctx.disableLeftSideNav,
55
- isSideNavOpen: ctx.isSideNavOpen,
56
- onSideNavigationToggle: ctx.toggleSidebar,
57
- onBrainfishNativeClick: handleNativeClick,
58
- sidebarToggleRef: ctx.sidebarToggleRef
59
- }
60
- );
61
- }
62
- Header.displayName = "FullLayout.Header";
63
-
64
- const FullLayoutLeftSidebar = React__default.forwardRef(
65
- ({
66
- open,
67
- widthPx,
68
- onResizeStart,
69
- onResizeKeyDown,
70
- ariaValuenow,
71
- ariaValuemin,
72
- ariaValuemax,
73
- sidebarProps,
74
- className,
75
- ...props
76
- }, ref) => {
77
- return /* @__PURE__ */ React__default.createElement(
78
- "div",
79
- {
80
- ref,
81
- id: "left-sidebar-pane",
82
- "data-slot": "full-layout-left-sidebar",
83
- tabIndex: -1,
84
- "data-state": open ? "open" : "closed",
85
- className: cn(
86
- "min-w-0 overflow-hidden flex flex-col relative transition-[width] data-[state=closed]:w-0 data-[state=closed]:pointer-events-none data-[state=open]:w-full md:data-[state=open]:w-[var(--left-nav-width)]",
87
- className
88
- ),
89
- style: {
90
- ["--left-nav-width"]: `${widthPx}px`
91
- },
92
- ...props
93
- },
94
- /* @__PURE__ */ React__default.createElement(
95
- Sidebar,
96
- {
97
- ...sidebarProps,
98
- collapsed: !open,
99
- className: "transition-[width] w-[var(--left-nav-width)] h-[calc(100dvh-var(--header-nav-height,0))]"
100
- }
101
- ),
102
- /* @__PURE__ */ React__default.createElement(
103
- "div",
104
- {
105
- role: "separator",
106
- "aria-orientation": "vertical",
107
- "aria-valuenow": ariaValuenow,
108
- "aria-valuemin": ariaValuemin,
109
- "aria-valuemax": ariaValuemax,
110
- "aria-label": "Resize left sidebar",
111
- "aria-controls": "left-sidebar-pane",
112
- "data-slot": "full-layout-left-sidebar-resize-handle",
113
- tabIndex: 0,
114
- onMouseDown: onResizeStart,
115
- onKeyDown: onResizeKeyDown,
116
- className: "hidden lg:block absolute top-0 right-0 bottom-0 w-1 bg-transparent hover:bg-blue-500 cursor-ew-resize shrink-0 [&>div]:pointer-events-none"
117
- },
118
- /* @__PURE__ */ React__default.createElement("div", { className: "absolute inset-y-0 -right-1 w-3" })
119
- )
120
- );
121
- }
122
- );
123
- FullLayoutLeftSidebar.displayName = "FullLayoutLeftSidebar";
124
-
125
- function LeftSidebar(props) {
126
- const ctx = useFullLayoutContext();
127
- const navState = useContext(FullLayoutNavStateContext);
128
- if (!ctx) return null;
129
- if (ctx.disableLeftSideNav) return null;
130
- const sidebarProps = navState != null ? {
131
- ...props,
132
- appNavActiveId: navState.appNavActiveId ?? props.appNavActiveId,
133
- sectionNavActiveId: navState.sectionNavActiveId ?? props.sectionNavActiveId,
134
- activeArticleId: navState.activeArticleId ?? props.activeArticleId
135
- } : props;
136
- return /* @__PURE__ */ React__default.createElement(
137
- FullLayoutLeftSidebar,
138
- {
139
- ref: ctx.sideNavRef,
140
- open: ctx.isSideNavOpen,
141
- widthPx: ctx.leftNavWidth,
142
- onResizeStart: ctx.handleResizeStart,
143
- onResizeKeyDown: ctx.handleResizeKeyDown,
144
- ariaValuenow: ctx.ariaValuenow,
145
- ariaValuemin: ctx.ariaValuemin,
146
- ariaValuemax: ctx.ariaValuemax,
147
- sidebarProps
148
- }
149
- );
150
- }
151
- LeftSidebar.displayName = "FullLayout.LeftSidebar";
152
-
153
- function Main({ children, className }) {
154
- const ctx = useFullLayoutContext();
155
- const mainIsScrollContainer = ctx?.disableMainScrollArea ?? false;
156
- return /* @__PURE__ */ React__default.createElement(
157
- Item,
158
- {
159
- className: cn(
160
- "p-0",
161
- mainIsScrollContainer && "h-[calc(100dvh-var(--header-nav-height))] md:h-[calc(100dvh-var(--header-nav-height)-1rem)] min-h-0 overflow-y-auto p-4 md:p-8",
162
- className
163
- )
164
- },
165
- children
166
- );
167
- }
168
- Main.displayName = "FullLayout.Main";
169
-
170
- const FullLayoutRightSidebar = React__default.forwardRef(
171
- ({ open, scrollable = true, className, children, ...props }, ref) => {
172
- return /* @__PURE__ */ React__default.createElement(
173
- "aside",
174
- {
175
- ref,
176
- "data-slot": "full-layout-right-sidebar",
177
- "data-state": open ? "open" : "closed",
178
- className: cn(
179
- "bg-background shadow-lg flex flex-col",
180
- "fixed h-[calc(100dvh-var(--header-nav-height))] z-10 w-screen transition-transform duration-300 ease-in-out data-[state=closed]:translate-x-full data-[state=open]:translate-x-0",
181
- "md:relative md:h-dvh md:w-96 md:top-0",
182
- className
183
- ),
184
- ...props
185
- },
186
- /* @__PURE__ */ React__default.createElement("div", { className: "flex flex-col flex-1 min-h-0 overflow-hidden", "data-slot": "full-layout-right-sidebar-content" }, scrollable ? /* @__PURE__ */ React__default.createElement(ScrollArea, { className: "h-[calc(100dvh-var(--header-nav-height))] md:h-dvh" }, children) : children)
187
- );
188
- }
189
- );
190
- FullLayoutRightSidebar.displayName = "FullLayoutRightSidebar";
191
-
192
- function RightSidebar({ children, scrollable }) {
193
- const ctx = useFullLayoutContext();
194
- if (!ctx) return null;
195
- return /* @__PURE__ */ React__default.createElement(
196
- FullLayoutRightSidebar,
197
- {
198
- ref: ctx.rightSidebarRef,
199
- open: ctx.isRightSidebarOpen,
200
- scrollable,
201
- className: "top-[var(--header-nav-height)]"
202
- },
203
- children
204
- );
205
- }
206
- RightSidebar.displayName = "FullLayout.RightSidebar";
207
-
208
- const blurryBlob = cva("blurry-blob", {
209
- variants: {
210
- variant: {
211
- topLeft: "",
212
- bottomRight: "!top-auto !left-auto !-bottom-[10%] !right-0 rotate-180"
213
- }
214
- },
215
- defaultVariants: {
216
- variant: "topLeft"
217
- }
218
- });
219
- const GooFilter = () => /* @__PURE__ */ React__default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", className: "fixed top-0 left-0 w-0 h-0" }, /* @__PURE__ */ React__default.createElement("defs", null, /* @__PURE__ */ React__default.createElement("filter", { id: "goo" }, /* @__PURE__ */ React__default.createElement("feGaussianBlur", { in: "SourceGraphic", stdDeviation: "10", result: "blur" }), /* @__PURE__ */ React__default.createElement("feColorMatrix", { in: "blur", mode: "matrix", values: "1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 18 -8", result: "goo" }), /* @__PURE__ */ React__default.createElement("feBlend", { in: "SourceGraphic", in2: "goo" }))));
220
- const BlurryBlob = ({ className, variant }) => {
221
- return /* @__PURE__ */ React__default.createElement("div", { className: cn(blurryBlob({ variant }), className) }, /* @__PURE__ */ React__default.createElement("div", { className: "gradients-container" }, /* @__PURE__ */ React__default.createElement("div", { className: "g1" }), /* @__PURE__ */ React__default.createElement("div", { className: "g2" }), /* @__PURE__ */ React__default.createElement("div", { className: "g3" }), /* @__PURE__ */ React__default.createElement("div", { className: "g4" })));
222
- };
223
-
224
- const MIN_SIDENAV_WIDTH = 260;
225
- const CLOSE_SIDENAV_THRESHOLD = MIN_SIDENAV_WIDTH - 32;
226
- const MAX_SIDENAV_WIDTH = 600;
227
- const RIGHT_SIDEBAR_WIDTH = 384;
228
- function extractSlots(children, refs) {
229
- const out = {};
230
- const arr = React__default.Children.toArray(children);
231
- for (const key of Object.keys(refs)) {
232
- const match = arr.find((c) => isValidElement(c) && c.type === refs[key]);
233
- out[key] = match ?? null;
234
- }
235
- return out;
236
- }
237
- function FullLayoutRoot({
238
- children,
239
- disableLeftSideNav = false,
240
- disableMainScrollArea = false,
241
- className,
242
- forceRightSidebarOpen = false
243
- }) {
244
- const [isSideNavOpen, setIsSideNavOpen] = useState(() => typeof window !== "undefined" && window.innerWidth > 767);
245
- const [isRightSidebarOpen, setIsRightSidebarOpen] = useState(forceRightSidebarOpen);
246
- const [isResizing, setIsResizing] = useState(false);
247
- const [gridWidth, setGridWidth] = useState(() => typeof window !== "undefined" ? window.innerWidth : 0);
248
- const newMinNavWidth = useMemo(
249
- () => gridWidth > 0 ? Math.max(MIN_SIDENAV_WIDTH, Math.min(MAX_SIDENAV_WIDTH, Math.round(gridWidth * 0.18))) : MIN_SIDENAV_WIDTH,
250
- [gridWidth]
251
- );
252
- const [leftNavWidth, setLeftNavWidth] = useState(newMinNavWidth);
253
- const sideNavRef = useRef(null);
254
- const rightSidebarRef = useRef(null);
255
- const sidebarToggleRef = useRef(null);
256
- const gridRef = useRef(null);
257
- const prevSideNavOpenRef = useRef(isSideNavOpen);
258
- const resizeAcRef = useRef(null);
259
- const isMobile = useMediaQuery("(max-width: 767px)");
260
- const isWideDesktop = useMediaQuery("(min-width: 1280px)");
261
- useEffect(() => {
262
- if (!document.body.querySelector(".sbdocs")) {
263
- document.body.style.overflow = "hidden";
264
- }
265
- return () => {
266
- document.body.style.overflow = "";
267
- };
268
- }, []);
269
- useEffect(() => {
270
- const el = gridRef.current;
271
- if (!el) return;
272
- const ro = new ResizeObserver(([entry]) => {
273
- setGridWidth(entry.contentRect.width);
274
- });
275
- ro.observe(el);
276
- return () => ro.disconnect();
277
- }, []);
278
- const closeOtherSidebar = useCallback(
279
- (opening) => {
280
- if (isWideDesktop) return;
281
- if (opening === "left") setIsRightSidebarOpen(false);
282
- else setIsSideNavOpen(false);
283
- },
284
- [isWideDesktop]
285
- );
286
- const showSidenav = useCallback(() => {
287
- closeOtherSidebar("left");
288
- setIsSideNavOpen(true);
289
- setLeftNavWidth(newMinNavWidth);
290
- sideNavRef.current?.focus();
291
- }, [closeOtherSidebar, newMinNavWidth]);
292
- const toggleSidebar = useCallback(() => {
293
- closeOtherSidebar("left");
294
- setIsSideNavOpen((prev) => !prev);
295
- }, [closeOtherSidebar]);
296
- const openRightSidebar = useCallback(() => {
297
- closeOtherSidebar("right");
298
- setIsRightSidebarOpen(true);
299
- }, [closeOtherSidebar]);
300
- const closeRightSidebar = useCallback(() => {
301
- setIsRightSidebarOpen(false);
302
- }, []);
303
- const toggleRightSidebar = useCallback(() => {
304
- if (forceRightSidebarOpen) return;
305
- closeOtherSidebar("right");
306
- setIsRightSidebarOpen((prev) => !prev);
307
- }, [closeOtherSidebar, forceRightSidebarOpen]);
308
- const applyLeftNavWidth = useCallback(
309
- (newWidth) => {
310
- if (newWidth < CLOSE_SIDENAV_THRESHOLD) {
311
- setLeftNavWidth(newMinNavWidth);
312
- setIsSideNavOpen(false);
313
- return true;
314
- } else {
315
- setLeftNavWidth(Math.min(MAX_SIDENAV_WIDTH, newWidth));
316
- return false;
317
- }
318
- },
319
- [newMinNavWidth]
320
- );
321
- const handleResizeStart = useCallback((e) => {
322
- e.preventDefault();
323
- resizeAcRef.current = new AbortController();
324
- setIsResizing(true);
325
- }, []);
326
- const endResize = useCallback(() => {
327
- setIsResizing(false);
328
- document.body.style.cursor = "";
329
- document.body.style.userSelect = "";
330
- }, []);
331
- const handleMouseMove = useCallback(
332
- (e) => {
333
- if (!isResizing) return;
334
- if (applyLeftNavWidth(e.clientX)) {
335
- endResize();
336
- }
337
- },
338
- [isResizing, applyLeftNavWidth, endResize]
339
- );
340
- const handleMouseUp = useCallback(() => endResize(), [endResize]);
341
- const setInert = useCallback((el, open) => {
342
- if (!el) return;
343
- if (open) el.removeAttribute("inert");
344
- else el.setAttribute("inert", "");
345
- }, []);
346
- useEffect(() => {
347
- setInert(sideNavRef.current, isSideNavOpen);
348
- setInert(rightSidebarRef.current, isRightSidebarOpen);
349
- }, [isSideNavOpen, isRightSidebarOpen]);
350
- useEffect(() => {
351
- if (!isResizing || !resizeAcRef.current) return;
352
- const { signal } = resizeAcRef.current;
353
- document.body.style.cursor = "ew-resize";
354
- document.body.style.userSelect = "none";
355
- document.addEventListener("mousemove", handleMouseMove, { signal });
356
- document.addEventListener("mouseup", handleMouseUp, { signal });
357
- window.addEventListener("mouseup", handleMouseUp, { signal });
358
- setInert(sideNavRef.current, false);
359
- return () => {
360
- resizeAcRef.current?.abort();
361
- resizeAcRef.current = null;
362
- document.body.style.cursor = "";
363
- document.body.style.userSelect = "";
364
- setInert(sideNavRef.current, true);
365
- };
366
- }, [isResizing]);
367
- const handleResizeKeyDown = useCallback(
368
- (e) => {
369
- const step = 16;
370
- if (e.key === "ArrowLeft") {
371
- e.preventDefault();
372
- applyLeftNavWidth(leftNavWidth - step);
373
- } else if (e.key === "ArrowRight") {
374
- e.preventDefault();
375
- applyLeftNavWidth(Math.min(MAX_SIDENAV_WIDTH, leftNavWidth + step));
376
- }
377
- },
378
- [leftNavWidth, applyLeftNavWidth]
379
- );
380
- const leftCol = disableLeftSideNav ? 0 : isSideNavOpen ? isMobile ? gridWidth : leftNavWidth : 0;
381
- const rightCol = isMobile ? 0 : isRightSidebarOpen ? RIGHT_SIDEBAR_WIDTH : 0;
382
- useEffect(() => {
383
- setIsSideNavOpen(isMobile ? false : true);
384
- }, [isMobile]);
385
- useEffect(() => {
386
- if (prevSideNavOpenRef.current && !isSideNavOpen) {
387
- sidebarToggleRef.current?.focus();
388
- }
389
- prevSideNavOpenRef.current = isSideNavOpen;
390
- }, [isSideNavOpen]);
391
- const ariaRange = MAX_SIDENAV_WIDTH - newMinNavWidth;
392
- const ariaValuenow = ariaRange === 0 ? 100 : Math.round((leftNavWidth - newMinNavWidth) / ariaRange * 100);
393
- const layoutContextValue = useMemo(
394
- () => ({
395
- isSideNavOpen,
396
- isRightSidebarOpen,
397
- toggleSidebar,
398
- openRightSidebar,
399
- closeRightSidebar,
400
- toggleRightSidebar,
401
- showSidenav,
402
- disableLeftSideNav: disableLeftSideNav ?? false,
403
- leftNavWidth,
404
- isMobile,
405
- sideNavRef,
406
- rightSidebarRef,
407
- sidebarToggleRef,
408
- handleResizeStart,
409
- handleResizeKeyDown,
410
- ariaValuenow,
411
- ariaValuemin: 0,
412
- ariaValuemax: 100,
413
- disableMainScrollArea
414
- }),
415
- [
416
- isSideNavOpen,
417
- isRightSidebarOpen,
418
- toggleSidebar,
419
- openRightSidebar,
420
- closeRightSidebar,
421
- toggleRightSidebar,
422
- showSidenav,
423
- leftNavWidth,
424
- isMobile,
425
- disableLeftSideNav,
426
- disableMainScrollArea,
427
- handleResizeStart,
428
- handleResizeKeyDown,
429
- ariaValuenow
430
- ]
431
- );
432
- const { MainArea: mainArea, RightSidebar: rightSidebar } = extractSlots(children, {
433
- MainArea: MainArea,
434
- RightSidebar: RightSidebar
435
- });
436
- const mainAreaChildren = isValidElement(mainArea) ? mainArea.props.children : null;
437
- const { Header: header, Body: body } = extractSlots(mainAreaChildren ?? null, {
438
- Header: Header,
439
- Body: Body
440
- });
441
- const bodyChildren = isValidElement(body) ? body.props.children : null;
442
- const { LeftSidebar: leftSidebar, Main: main } = extractSlots(bodyChildren ?? null, {
443
- LeftSidebar: LeftSidebar,
444
- Main: Main
445
- });
446
- const hasRightSidebar = rightSidebar != null;
447
- const mainPanelClasses = "md:shadow-[2px_4px_12px_0_rgba(0,0,0,0.14)] md:dark:shadow-[2px_4px_12px_0_rgba(255,255,255,0.14)] md:rounded-lg";
448
- return /* @__PURE__ */ React__default.createElement(FullLayoutProvider, { value: layoutContextValue }, /* @__PURE__ */ React__default.createElement(GooFilter, null), /* @__PURE__ */ React__default.createElement(BlurryBlob, { variant: "topLeft" }), /* @__PURE__ */ React__default.createElement(BlurryBlob, { variant: "bottomRight" }), /* @__PURE__ */ React__default.createElement(
449
- "div",
450
- {
451
- className: cn(
452
- "min-h-screen w-screen bg-background grid transition-[grid-template-columns] duration-300 ease-in-out",
453
- className
454
- ),
455
- style: {
456
- gridTemplateColumns: hasRightSidebar ? "minmax(0, 1fr) var(--right-col)" : "minmax(0, 1fr)",
457
- ["--right-col"]: hasRightSidebar ? `${rightCol}px` : "0px",
458
- ["--header-nav-height"]: `${HEADER_NAV_HEIGHT}px`
459
- }
460
- },
461
- /* @__PURE__ */ React__default.createElement("div", { className: "min-w-0 grid grid-rows-[auto_1fr]" }, header, /* @__PURE__ */ React__default.createElement(
462
- "div",
463
- {
464
- ref: gridRef,
465
- "data-sidenav-state": isSideNavOpen ? "open" : "closed",
466
- "data-right-sidebar-state": isRightSidebarOpen ? "open" : "closed",
467
- className: cn(
468
- "group/sidenav group/rightsidebar min-h-0 min-w-0 grid transition-[grid-template-columns] ease-linear"
469
- ),
470
- style: {
471
- gridTemplateColumns: `var(--left-col) minmax(0, 1fr)`,
472
- ["--left-col"]: `${leftCol}px`
473
- }
474
- },
475
- disableLeftSideNav ? /* @__PURE__ */ React__default.createElement("div", { className: "w-0" }) : leftSidebar,
476
- /* @__PURE__ */ React__default.createElement("div", { className: cn("relative md:mr-4", { "md:mx-4": !isSideNavOpen || disableLeftSideNav }) }, disableMainScrollArea ? /* @__PURE__ */ React__default.createElement("div", { className: cn("bg-surface", mainPanelClasses) }, /* @__PURE__ */ React__default.createElement("main", { className: "min-w-0 relative" }, main)) : /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(
477
- ScrollArea,
478
- {
479
- className: cn(
480
- "bg-surface h-[calc(100dvh-var(--header-nav-height))] md:h-[calc(100dvh-var(--header-nav-height)-1rem)]",
481
- mainPanelClasses
482
- )
483
- },
484
- /* @__PURE__ */ React__default.createElement("div", { className: "min-h-full" }, /* @__PURE__ */ React__default.createElement("main", { className: cn("min-w-0 overflow-visible relative p-4 md:p-8") }, main))
485
- ), /* @__PURE__ */ React__default.createElement(
486
- "div",
487
- {
488
- "aria-hidden": true,
489
- className: "main-scroll-fade pointer-events-none sticky bottom-4 left-0 right-0 h-16 bg-gradient-to-t from-surface to-transparent md:rounded-b-lg"
490
- }
491
- )))
492
- )),
493
- hasRightSidebar ? rightSidebar : null
494
- ));
495
- }
496
- function fullLayoutRootPropsAreEqual(prev, next) {
497
- return prev.children === next.children && prev.className === next.className && prev.disableLeftSideNav === next.disableLeftSideNav && prev.disableMainScrollArea === next.disableMainScrollArea;
498
- }
499
- const FullLayoutRootMemo = React__default.memo(FullLayoutRoot, fullLayoutRootPropsAreEqual);
500
- function FullLayoutWithFlags(props) {
501
- const { featureFlags, ...layoutProps } = props;
502
- return /* @__PURE__ */ React__default.createElement(FeatureFlagProvider, { flags: featureFlags }, /* @__PURE__ */ React__default.createElement(FullLayoutRootMemo, { ...layoutProps }));
503
- }
504
- const FullLayout = Object.assign(FullLayoutWithFlags, {
505
- MainArea: MainArea,
506
- Body: Body,
507
- Header: Header,
508
- LeftSidebar: LeftSidebar,
509
- Main: Main,
510
- RightSidebar: RightSidebar
511
- });
512
-
513
- const FullLayoutHeader = React__default.forwardRef(
514
- ({ onOpenLeft, onOpenRight, className, children, ...props }, ref) => {
515
- return /* @__PURE__ */ React__default.createElement(
516
- "header",
517
- {
518
- ref,
519
- "data-slot": "full-layout-header",
520
- className: cn("h-16 bg-white shadow-md flex items-center px-4 shrink-0 sticky top-0 z-20", className),
521
- ...props
522
- },
523
- onOpenLeft != null && /* @__PURE__ */ React__default.createElement(
524
- "button",
525
- {
526
- "data-slot": "full-layout-header-trigger-left",
527
- type: "button",
528
- onClick: onOpenLeft,
529
- className: "p-2 hover:bg-gray-100 rounded-lg transition-colors mr-4 lg:hidden",
530
- "aria-label": "Toggle menu"
531
- },
532
- /* @__PURE__ */ React__default.createElement("svg", { className: "size-6", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React__default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 6h16M4 12h16M4 18h16" }))
533
- ),
534
- /* @__PURE__ */ React__default.createElement("div", { "data-slot": "full-layout-header-center", className: "flex-1 min-w-0" }, children),
535
- onOpenRight != null && /* @__PURE__ */ React__default.createElement("div", { "data-slot": "full-layout-header-trigger-right", className: "ml-auto" }, /* @__PURE__ */ React__default.createElement(
536
- "button",
537
- {
538
- type: "button",
539
- onClick: onOpenRight,
540
- className: "p-2 hover:bg-gray-100 rounded-lg transition-colors",
541
- "aria-label": "Toggle chat"
542
- },
543
- /* @__PURE__ */ React__default.createElement("svg", { className: "size-6", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React__default.createElement(
544
- "path",
545
- {
546
- strokeLinecap: "round",
547
- strokeLinejoin: "round",
548
- strokeWidth: 2,
549
- d: "M8 10h.01M12 10h.01M16 10h.01M9 16H5a2 2 0 01-2-2V6a2 2 0 012-2h14a2 2 0 012 2v8a2 2 0 01-2 2h-5l-5 5v-5z"
550
- }
551
- ))
552
- ))
553
- );
554
- }
555
- );
556
- FullLayoutHeader.displayName = "FullLayoutHeader";
557
-
558
- export { FullLayout as F, FullLayoutHeader as a, FullLayoutLeftSidebar as b, FullLayoutNavStateContext as c, FullLayoutProvider as d, FullLayoutRightSidebar as e, useRightSidebar as f, useFullLayoutContext as u };
559
- //# sourceMappingURL=header-pane.BFXHXxVn.js.map