@arbidocs/blocks 0.4.153 → 0.4.154

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 (221) hide show
  1. package/dist/{ConnectedNativeDocxComparison-OFPIXNJB.js → ConnectedNativeDocxComparison-OLWRQSRS.js} +11 -11
  2. package/dist/{ConnectedNativeDocxComparison-OFPIXNJB.js.map → ConnectedNativeDocxComparison-OLWRQSRS.js.map} +1 -1
  3. package/dist/{ConnectedNativeDocxComparison-Y5BNLNH6.cjs → ConnectedNativeDocxComparison-YORMOPPN.cjs} +12 -12
  4. package/dist/{ConnectedNativeDocxComparison-Y5BNLNH6.cjs.map → ConnectedNativeDocxComparison-YORMOPPN.cjs.map} +1 -1
  5. package/dist/{ConnectedNativeDocxEditor-LRYU5HPA.js → ConnectedNativeDocxEditor-34EBIIFS.js} +10 -10
  6. package/dist/{ConnectedNativeDocxEditor-LRYU5HPA.js.map → ConnectedNativeDocxEditor-34EBIIFS.js.map} +1 -1
  7. package/dist/{ConnectedNativeDocxEditor-HTEW5JAH.cjs → ConnectedNativeDocxEditor-EHTWGGX3.cjs} +12 -12
  8. package/dist/{ConnectedNativeDocxEditor-HTEW5JAH.cjs.map → ConnectedNativeDocxEditor-EHTWGGX3.cjs.map} +1 -1
  9. package/dist/{ConnectedStreamedWordArtifact-QW74LKHN.cjs → ConnectedStreamedWordArtifact-5DK6QGYN.cjs} +12 -12
  10. package/dist/ConnectedStreamedWordArtifact-5DK6QGYN.cjs.map +1 -0
  11. package/dist/{ConnectedStreamedWordArtifact-QAUVUCSX.js → ConnectedStreamedWordArtifact-GLIDLSAS.js} +11 -11
  12. package/dist/{ConnectedStreamedWordArtifact-QAUVUCSX.js.map → ConnectedStreamedWordArtifact-GLIDLSAS.js.map} +1 -1
  13. package/dist/WorkspaceTableView-5OWX53R5.js +376 -0
  14. package/dist/WorkspaceTableView-5OWX53R5.js.map +1 -0
  15. package/dist/WorkspaceTableView-ZFMAYHUD.cjs +378 -0
  16. package/dist/WorkspaceTableView-ZFMAYHUD.cjs.map +1 -0
  17. package/dist/agents/index.cjs +282 -282
  18. package/dist/agents/index.js +7 -7
  19. package/dist/{chunk-RQ2Y7USX.cjs → chunk-2VHYOTWW.cjs} +3 -3
  20. package/dist/chunk-2VHYOTWW.cjs.map +1 -0
  21. package/dist/{chunk-DTROMMDX.cjs → chunk-3VULDTNL.cjs} +4 -4
  22. package/dist/{chunk-DTROMMDX.cjs.map → chunk-3VULDTNL.cjs.map} +1 -1
  23. package/dist/{chunk-UTTTJSQU.cjs → chunk-4RPBUMHB.cjs} +4 -4
  24. package/dist/{chunk-UTTTJSQU.cjs.map → chunk-4RPBUMHB.cjs.map} +1 -1
  25. package/dist/chunk-53RCZPMR.cjs +496 -0
  26. package/dist/chunk-53RCZPMR.cjs.map +1 -0
  27. package/dist/chunk-5TDGVOR5.js +142 -0
  28. package/dist/chunk-5TDGVOR5.js.map +1 -0
  29. package/dist/{chunk-CU2O32Z4.cjs → chunk-6QAAIDQQ.cjs} +62 -99
  30. package/dist/chunk-6QAAIDQQ.cjs.map +1 -0
  31. package/dist/chunk-7HHYMDPE.js +431 -0
  32. package/dist/chunk-7HHYMDPE.js.map +1 -0
  33. package/dist/{chunk-SMN32BQ3.cjs → chunk-7NL6WJER.cjs} +3 -160
  34. package/dist/chunk-7NL6WJER.cjs.map +1 -0
  35. package/dist/{chunk-T74Q3MCZ.cjs → chunk-BDA3RHYD.cjs} +4 -4
  36. package/dist/{chunk-T74Q3MCZ.cjs.map → chunk-BDA3RHYD.cjs.map} +1 -1
  37. package/dist/{chunk-IXWJGOM2.js → chunk-BQ77KSXU.js} +3 -3
  38. package/dist/{chunk-IXWJGOM2.js.map → chunk-BQ77KSXU.js.map} +1 -1
  39. package/dist/chunk-BTF4AZMG.js +148 -0
  40. package/dist/chunk-BTF4AZMG.js.map +1 -0
  41. package/dist/{chunk-HALD6ZB5.cjs → chunk-C3SMTA3C.cjs} +4 -4
  42. package/dist/{chunk-HALD6ZB5.cjs.map → chunk-C3SMTA3C.cjs.map} +1 -1
  43. package/dist/{chunk-GAYMJWTC.cjs → chunk-CB4TIDEX.cjs} +6 -6
  44. package/dist/{chunk-GAYMJWTC.cjs.map → chunk-CB4TIDEX.cjs.map} +1 -1
  45. package/dist/{chunk-KPZZ5FHE.cjs → chunk-CNHUJRQ4.cjs} +10 -6
  46. package/dist/chunk-CNHUJRQ4.cjs.map +1 -0
  47. package/dist/{chunk-Q4BY2CQQ.cjs → chunk-CQCNU5KT.cjs} +28 -28
  48. package/dist/{chunk-Q4BY2CQQ.cjs.map → chunk-CQCNU5KT.cjs.map} +1 -1
  49. package/dist/{chunk-GRGS5M6O.cjs → chunk-CROGFB46.cjs} +160 -3
  50. package/dist/chunk-CROGFB46.cjs.map +1 -0
  51. package/dist/{chunk-QN47Q4N7.js → chunk-CU6LDQ57.js} +3 -3
  52. package/dist/{chunk-QN47Q4N7.js.map → chunk-CU6LDQ57.js.map} +1 -1
  53. package/dist/{chunk-EF4ZLKRM.js → chunk-DEPF5LQI.js} +3 -3
  54. package/dist/{chunk-EF4ZLKRM.js.map → chunk-DEPF5LQI.js.map} +1 -1
  55. package/dist/{chunk-JAANWQGB.js → chunk-ETZ5A3GU.js} +3 -3
  56. package/dist/{chunk-JAANWQGB.js.map → chunk-ETZ5A3GU.js.map} +1 -1
  57. package/dist/{chunk-TBEVGWY3.js → chunk-F57LNUSZ.js} +10 -6
  58. package/dist/chunk-F57LNUSZ.js.map +1 -0
  59. package/dist/{chunk-GFNELPDP.cjs → chunk-FM3IRQJW.cjs} +10 -5
  60. package/dist/chunk-FM3IRQJW.cjs.map +1 -0
  61. package/dist/chunk-FPHTSNOE.js +465 -0
  62. package/dist/chunk-FPHTSNOE.js.map +1 -0
  63. package/dist/{chunk-OVR3XMYL.js → chunk-FYZXDZM7.js} +3 -3
  64. package/dist/{chunk-OVR3XMYL.js.map → chunk-FYZXDZM7.js.map} +1 -1
  65. package/dist/{chunk-2FLWPM3B.cjs → chunk-GC2FSPSQ.cjs} +7 -7
  66. package/dist/{chunk-2FLWPM3B.cjs.map → chunk-GC2FSPSQ.cjs.map} +1 -1
  67. package/dist/{chunk-DB2OXRQC.js → chunk-GO3BN76C.js} +7 -7
  68. package/dist/{chunk-DB2OXRQC.js.map → chunk-GO3BN76C.js.map} +1 -1
  69. package/dist/{chunk-XZIYRKLW.cjs → chunk-H32DV7XS.cjs} +5 -139
  70. package/dist/chunk-H32DV7XS.cjs.map +1 -0
  71. package/dist/{chunk-4236BRZK.js → chunk-HP2C4MD3.js} +29 -3
  72. package/dist/chunk-HP2C4MD3.js.map +1 -0
  73. package/dist/{chunk-ZP6Q3KXU.cjs → chunk-HUATKA3M.cjs} +4 -4
  74. package/dist/{chunk-ZP6Q3KXU.cjs.map → chunk-HUATKA3M.cjs.map} +1 -1
  75. package/dist/chunk-ISHFVKVU.js +304 -0
  76. package/dist/chunk-ISHFVKVU.js.map +1 -0
  77. package/dist/chunk-JUUOJP7I.cjs +164 -0
  78. package/dist/chunk-JUUOJP7I.cjs.map +1 -0
  79. package/dist/{chunk-4KMLM3GY.cjs → chunk-KBO75NLM.cjs} +7 -7
  80. package/dist/{chunk-4KMLM3GY.cjs.map → chunk-KBO75NLM.cjs.map} +1 -1
  81. package/dist/{chunk-Z4NQ3TED.js → chunk-KCSIX7CY.js} +3 -3
  82. package/dist/{chunk-Z4NQ3TED.js.map → chunk-KCSIX7CY.js.map} +1 -1
  83. package/dist/{chunk-DN2KI4BU.js → chunk-KDLX5AA7.js} +3 -3
  84. package/dist/{chunk-DN2KI4BU.js.map → chunk-KDLX5AA7.js.map} +1 -1
  85. package/dist/{chunk-WFA2GVZJ.js → chunk-MF5KQ4PS.js} +3 -3
  86. package/dist/{chunk-WFA2GVZJ.js.map → chunk-MF5KQ4PS.js.map} +1 -1
  87. package/dist/{chunk-YXNNNP57.js → chunk-MNG7N6M2.js} +4 -4
  88. package/dist/{chunk-YXNNNP57.js.map → chunk-MNG7N6M2.js.map} +1 -1
  89. package/dist/chunk-MSFQDELO.cjs +482 -0
  90. package/dist/chunk-MSFQDELO.cjs.map +1 -0
  91. package/dist/{chunk-KSHKTOY2.js → chunk-NUSBINUM.js} +3 -3
  92. package/dist/chunk-NUSBINUM.js.map +1 -0
  93. package/dist/{chunk-EYKISBDO.cjs → chunk-OALEDG67.cjs} +5 -5
  94. package/dist/{chunk-EYKISBDO.cjs.map → chunk-OALEDG67.cjs.map} +1 -1
  95. package/dist/{chunk-COCGRJLA.cjs → chunk-OFV3PRF2.cjs} +7 -7
  96. package/dist/{chunk-COCGRJLA.cjs.map → chunk-OFV3PRF2.cjs.map} +1 -1
  97. package/dist/chunk-OOU4QLRK.cjs +319 -0
  98. package/dist/chunk-OOU4QLRK.cjs.map +1 -0
  99. package/dist/chunk-OU3RGQFX.cjs +136 -0
  100. package/dist/chunk-OU3RGQFX.cjs.map +1 -0
  101. package/dist/{chunk-3PCBYOIZ.js → chunk-P6RIBIVN.js} +38 -7
  102. package/dist/chunk-P6RIBIVN.js.map +1 -0
  103. package/dist/{chunk-LXTOOUEN.cjs → chunk-Q7CQYYZW.cjs} +5 -5
  104. package/dist/{chunk-LXTOOUEN.cjs.map → chunk-Q7CQYYZW.cjs.map} +1 -1
  105. package/dist/{chunk-CROTH2BS.js → chunk-QKR5LWDO.js} +9 -40
  106. package/dist/{chunk-CROTH2BS.js.map → chunk-QKR5LWDO.js.map} +1 -1
  107. package/dist/{chunk-HUJF2XM2.js → chunk-RE7NULEY.js} +3 -3
  108. package/dist/{chunk-HUJF2XM2.js.map → chunk-RE7NULEY.js.map} +1 -1
  109. package/dist/chunk-REH7PX3N.cjs +145 -0
  110. package/dist/chunk-REH7PX3N.cjs.map +1 -0
  111. package/dist/chunk-RQKWYKZY.js +127 -0
  112. package/dist/chunk-RQKWYKZY.js.map +1 -0
  113. package/dist/{chunk-U6JQ4KMX.cjs → chunk-SN2GZ4ZM.cjs} +29 -2
  114. package/dist/chunk-SN2GZ4ZM.cjs.map +1 -0
  115. package/dist/{chunk-R6VCPDPF.js → chunk-SZSJGZSO.js} +156 -6
  116. package/dist/chunk-SZSJGZSO.js.map +1 -0
  117. package/dist/{chunk-US3S4DCB.js → chunk-TF7HN5EU.js} +10 -5
  118. package/dist/chunk-TF7HN5EU.js.map +1 -0
  119. package/dist/{chunk-YKQ2DPIP.js → chunk-VF5EUAIV.js} +3 -3
  120. package/dist/{chunk-YKQ2DPIP.js.map → chunk-VF5EUAIV.js.map} +1 -1
  121. package/dist/{chunk-KMZWKSKO.cjs → chunk-VZPFYZZU.cjs} +4 -4
  122. package/dist/{chunk-KMZWKSKO.cjs.map → chunk-VZPFYZZU.cjs.map} +1 -1
  123. package/dist/{chunk-ZLEYLCE4.js → chunk-WK6FVIF7.js} +6 -156
  124. package/dist/chunk-WK6FVIF7.js.map +1 -0
  125. package/dist/{chunk-COA3S3CZ.js → chunk-XI37A7HH.js} +4 -4
  126. package/dist/{chunk-COA3S3CZ.js.map → chunk-XI37A7HH.js.map} +1 -1
  127. package/dist/{chunk-LGBAZD37.js → chunk-XRL4R2TT.js} +7 -139
  128. package/dist/chunk-XRL4R2TT.js.map +1 -0
  129. package/dist/{chunk-4JNKXOFZ.cjs → chunk-YBJ4QGNH.cjs} +11 -11
  130. package/dist/{chunk-4JNKXOFZ.cjs.map → chunk-YBJ4QGNH.cjs.map} +1 -1
  131. package/dist/{chunk-GFOEWPAP.cjs → chunk-YF3QUHKN.cjs} +49 -12
  132. package/dist/chunk-YF3QUHKN.cjs.map +1 -0
  133. package/dist/{chunk-H4D7WKDY.js → chunk-YNMO3DSR.js} +3 -3
  134. package/dist/{chunk-H4D7WKDY.js.map → chunk-YNMO3DSR.js.map} +1 -1
  135. package/dist/citations/index.cjs +10 -10
  136. package/dist/citations/index.js +2 -2
  137. package/dist/collaboration/index.cjs +77 -77
  138. package/dist/collaboration/index.js +2 -2
  139. package/dist/connect/docx.cjs +14 -14
  140. package/dist/connect/docx.js +10 -10
  141. package/dist/connect/index.cjs +1577 -962
  142. package/dist/connect/index.cjs.map +1 -1
  143. package/dist/connect/index.d.ts +3 -0
  144. package/dist/connect/index.js +1014 -450
  145. package/dist/connect/index.js.map +1 -1
  146. package/dist/connect/viewer.cjs +66 -66
  147. package/dist/connect/viewer.js +10 -10
  148. package/dist/connection/ConnectionProvider.d.ts +7 -0
  149. package/dist/connection/projects/ConnectedProjectsPanel.d.ts +34 -0
  150. package/dist/connection/projects/index.d.ts +1 -0
  151. package/dist/connection/workspace-dashboard/ConnectedWorkspaceDashboard.d.ts +37 -0
  152. package/dist/connection/workspace-dashboard/dashboard-rows.d.ts +42 -0
  153. package/dist/connection/workspace-dashboard/index.d.ts +1 -0
  154. package/dist/connection/workspace-list/ConnectedWorkspaceList.d.ts +37 -0
  155. package/dist/connection/workspace-list/WorkspaceCardsView.d.ts +15 -0
  156. package/dist/connection/workspace-list/WorkspaceFilterMenu.d.ts +4 -0
  157. package/dist/connection/workspace-list/WorkspaceTableView.d.ts +13 -0
  158. package/dist/connection/workspace-list/index.d.ts +5 -0
  159. package/dist/connection/workspace-list/projectBilling.d.ts +21 -0
  160. package/dist/connection/workspace-list/useConnectedWorkspaceList.d.ts +251 -0
  161. package/dist/connection/workspace-list/workspaceTable.d.ts +58 -0
  162. package/dist/connection/workspace-settings/ConnectedWorkspaceMembers.d.ts +26 -0
  163. package/dist/connection/workspace-settings/ConnectedWorkspaceSettings.d.ts +7 -9
  164. package/dist/connection/workspace-settings/index.d.ts +2 -1
  165. package/dist/connection/workspace-settings/useConnectedWorkspaceSettings.d.ts +0 -1
  166. package/dist/facts/index.cjs +3 -3
  167. package/dist/facts/index.js +2 -2
  168. package/dist/files/index.cjs +169 -169
  169. package/dist/files/index.js +3 -3
  170. package/dist/home/index.cjs +119 -459
  171. package/dist/home/index.cjs.map +1 -1
  172. package/dist/home/index.js +13 -419
  173. package/dist/home/index.js.map +1 -1
  174. package/dist/index.cjs +510 -510
  175. package/dist/index.js +18 -18
  176. package/dist/provider/BlocksProvider.d.ts +9 -1
  177. package/dist/retrieval/index.cjs +4 -4
  178. package/dist/retrieval/index.js +2 -2
  179. package/dist/settings/index.cjs +169 -165
  180. package/dist/settings/index.d.ts +1 -0
  181. package/dist/settings/index.js +2 -2
  182. package/dist/settings/tri-state-filters.d.ts +13 -0
  183. package/dist/shell/index.cjs +44 -44
  184. package/dist/shell/index.js +3 -3
  185. package/dist/site/index.cjs +5 -5
  186. package/dist/site/index.js +1 -1
  187. package/dist/studio/index.cjs +14 -14
  188. package/dist/studio/index.js +6 -6
  189. package/dist/workflow-canvas/index.cjs +27 -27
  190. package/dist/workflow-canvas/index.js +9 -9
  191. package/dist/workspaces/index.cjs +110 -369
  192. package/dist/workspaces/index.cjs.map +1 -1
  193. package/dist/workspaces/index.d.ts +2 -0
  194. package/dist/workspaces/index.js +12 -350
  195. package/dist/workspaces/index.js.map +1 -1
  196. package/dist/workspaces/workspace-groups.d.ts +90 -0
  197. package/dist/workspaces/workspace-roles.d.ts +11 -0
  198. package/node_modules/@arbidocs/coedit/package.json +1 -1
  199. package/package.json +5 -5
  200. package/dist/ConnectedStreamedWordArtifact-QW74LKHN.cjs.map +0 -1
  201. package/dist/chunk-3PCBYOIZ.js.map +0 -1
  202. package/dist/chunk-4236BRZK.js.map +0 -1
  203. package/dist/chunk-CU2O32Z4.cjs.map +0 -1
  204. package/dist/chunk-EV7W64B6.js +0 -134
  205. package/dist/chunk-EV7W64B6.js.map +0 -1
  206. package/dist/chunk-GFNELPDP.cjs.map +0 -1
  207. package/dist/chunk-GFOEWPAP.cjs.map +0 -1
  208. package/dist/chunk-GRGS5M6O.cjs.map +0 -1
  209. package/dist/chunk-KPZZ5FHE.cjs.map +0 -1
  210. package/dist/chunk-KSHKTOY2.js.map +0 -1
  211. package/dist/chunk-LGBAZD37.js.map +0 -1
  212. package/dist/chunk-R6VCPDPF.js.map +0 -1
  213. package/dist/chunk-RQ2Y7USX.cjs.map +0 -1
  214. package/dist/chunk-RXK3XP62.cjs +0 -144
  215. package/dist/chunk-RXK3XP62.cjs.map +0 -1
  216. package/dist/chunk-SMN32BQ3.cjs.map +0 -1
  217. package/dist/chunk-TBEVGWY3.js.map +0 -1
  218. package/dist/chunk-U6JQ4KMX.cjs.map +0 -1
  219. package/dist/chunk-US3S4DCB.js.map +0 -1
  220. package/dist/chunk-XZIYRKLW.cjs.map +0 -1
  221. package/dist/chunk-ZLEYLCE4.js.map +0 -1
@@ -0,0 +1,142 @@
1
+ "use client";
2
+ import { ChevronRight } from 'lucide-react';
3
+ import { cn } from '@arbidocs/react/ui';
4
+ import { jsx, jsxs } from 'react/jsx-runtime';
5
+
6
+ // src/home/CollapsibleSection.tsx
7
+ var DEFAULT_COLLAPSIBLE_SECTION_LABELS = {
8
+ collapseSection: "Collapse section",
9
+ expandSection: "Expand section"
10
+ };
11
+ function CollapsibleSection({
12
+ title,
13
+ icon,
14
+ isExpanded,
15
+ onToggle,
16
+ children,
17
+ count,
18
+ hasActiveFilters = false,
19
+ expandWhenEmpty = false,
20
+ childrenClassName,
21
+ headerClassName,
22
+ className,
23
+ rightContent,
24
+ collapsible = true,
25
+ onHeaderClick,
26
+ labels
27
+ }) {
28
+ const l = { ...DEFAULT_COLLAPSIBLE_SECTION_LABELS, ...labels };
29
+ const hasCount = count !== void 0;
30
+ const shouldBeExpanded = !collapsible ? true : hasCount ? count > 0 ? isExpanded : expandWhenEmpty && isExpanded : isExpanded;
31
+ const hasContent = hasCount ? count > 0 || expandWhenEmpty : true;
32
+ const chevron = /* @__PURE__ */ jsx(
33
+ ChevronRight,
34
+ {
35
+ className: cn("size-4 shrink-0 transition-transform", shouldBeExpanded && "rotate-90")
36
+ }
37
+ );
38
+ const titleBlock = /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [
39
+ icon,
40
+ typeof title === "string" ? title && /* @__PURE__ */ jsx("span", { className: "whitespace-nowrap", children: title }) : title,
41
+ hasCount && /* @__PURE__ */ jsx(
42
+ "span",
43
+ {
44
+ className: cn(
45
+ "ml-1 text-xs tabular-nums",
46
+ hasActiveFilters ? "rounded-full bg-primary px-1.5 font-medium text-primary-foreground" : "font-normal text-muted-foreground"
47
+ ),
48
+ children: count
49
+ }
50
+ )
51
+ ] });
52
+ return /* @__PURE__ */ jsxs("div", { className: cn("w-full", className), "data-slot": "collapsible-section", children: [
53
+ onHeaderClick ? /* @__PURE__ */ jsxs(
54
+ "div",
55
+ {
56
+ role: "button",
57
+ tabIndex: 0,
58
+ onClick: onHeaderClick,
59
+ onKeyDown: (e) => {
60
+ if (e.key === "Enter" || e.key === " ") {
61
+ e.preventDefault();
62
+ onHeaderClick();
63
+ }
64
+ },
65
+ className: cn(
66
+ "mb-4 flex cursor-pointer items-center justify-between gap-2 font-semibold pointer-coarse:min-h-11 transition-colors hover:bg-muted/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
67
+ headerClassName
68
+ ),
69
+ "data-slot": "collapsible-section-header",
70
+ children: [
71
+ /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 items-center gap-2 text-left", children: [
72
+ /* @__PURE__ */ jsx(
73
+ "button",
74
+ {
75
+ type: "button",
76
+ "aria-expanded": shouldBeExpanded,
77
+ "aria-label": shouldBeExpanded ? l.collapseSection : l.expandSection,
78
+ disabled: !hasContent,
79
+ onClick: (e) => {
80
+ e.stopPropagation();
81
+ if (hasContent) onToggle();
82
+ },
83
+ className: "-ml-0.5 shrink-0 rounded-md p-0.5 text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:opacity-40 pointer-coarse:p-3.5",
84
+ children: chevron
85
+ }
86
+ ),
87
+ titleBlock
88
+ ] }),
89
+ rightContent && /* @__PURE__ */ jsx("div", { className: "flex shrink-0 items-center", children: rightContent })
90
+ ]
91
+ }
92
+ ) : !collapsible ? /* @__PURE__ */ jsxs(
93
+ "div",
94
+ {
95
+ className: cn("mb-4 flex items-center justify-between", headerClassName),
96
+ "data-slot": "collapsible-section-header",
97
+ children: [
98
+ /* @__PURE__ */ jsx("div", { className: "flex min-w-0 items-center gap-2 text-left font-medium", children: titleBlock }),
99
+ rightContent && /* @__PURE__ */ jsx("div", { className: "flex shrink-0 items-center", children: rightContent })
100
+ ]
101
+ }
102
+ ) : /* @__PURE__ */ jsxs(
103
+ "div",
104
+ {
105
+ className: cn("mb-4 flex items-center justify-between", headerClassName),
106
+ "data-slot": "collapsible-section-header",
107
+ children: [
108
+ /* @__PURE__ */ jsxs(
109
+ "div",
110
+ {
111
+ role: "button",
112
+ tabIndex: hasContent ? 0 : -1,
113
+ "aria-expanded": shouldBeExpanded,
114
+ "aria-disabled": !hasContent,
115
+ onClick: hasContent ? onToggle : void 0,
116
+ onKeyDown: hasContent ? (e) => {
117
+ if (e.key === "Enter" || e.key === " ") {
118
+ e.preventDefault();
119
+ onToggle();
120
+ }
121
+ } : void 0,
122
+ className: cn(
123
+ "touch-hit flex min-w-0 items-center gap-2 rounded-md text-left font-semibold transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
124
+ hasContent ? "cursor-pointer hover:text-muted-foreground" : "cursor-default opacity-60"
125
+ ),
126
+ children: [
127
+ chevron,
128
+ titleBlock
129
+ ]
130
+ }
131
+ ),
132
+ rightContent && /* @__PURE__ */ jsx("div", { className: "flex shrink-0 items-center", children: rightContent })
133
+ ]
134
+ }
135
+ ),
136
+ shouldBeExpanded && /* @__PURE__ */ jsx("div", { className: childrenClassName ?? "mb-8 flex flex-wrap justify-start gap-6", children })
137
+ ] });
138
+ }
139
+
140
+ export { CollapsibleSection, DEFAULT_COLLAPSIBLE_SECTION_LABELS };
141
+ //# sourceMappingURL=chunk-5TDGVOR5.js.map
142
+ //# sourceMappingURL=chunk-5TDGVOR5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/home/CollapsibleSection.tsx"],"names":[],"mappings":"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","file":"chunk-5TDGVOR5.js","sourcesContent":["import type { ReactNode } from 'react'\nimport { ChevronRight } from 'lucide-react'\nimport { cn } from '@arbidocs/react/ui'\n\n/** Fixed strings of the section header. */\nexport interface CollapsibleSectionLabels {\n /** The chevron button's name (only with `onHeaderClick`). */\n collapseSection: string\n expandSection: string\n}\n\nexport const DEFAULT_COLLAPSIBLE_SECTION_LABELS: CollapsibleSectionLabels = {\n collapseSection: 'Collapse section',\n expandSection: 'Expand section',\n}\n\nexport interface CollapsibleSectionProps {\n /** The section's heading. A node, so callers can add badges or tooltips. */\n title: ReactNode\n /** Leading glyph before the title. */\n icon?: ReactNode\n isExpanded: boolean\n onToggle: () => void\n children: ReactNode\n /** Count badge beside the title. When 0 the section cannot expand (unless `expandWhenEmpty`). */\n count?: number\n /** The count badge is filled (a filter is active). */\n hasActiveFilters?: boolean\n expandWhenEmpty?: boolean\n /** Class for the body wrapper. */\n childrenClassName?: string\n headerClassName?: string\n className?: string\n /** Trailing header content. */\n rightContent?: ReactNode\n /** When false the section is always open: no chevron, a plain header. */\n collapsible?: boolean\n /**\n * When set, the whole header is one click target firing this (e.g. open a\n * detail panel) and the chevron becomes its own separate toggle.\n */\n onHeaderClick?: () => void\n labels?: Partial<CollapsibleSectionLabels>\n}\n\n/**\n * A section with a chevron toggle, title, optional count and body. The header\n * is a `role=\"button\"` div (not a native button) because `title`/`rightContent`\n * may hold interactive nodes such as tooltip triggers; a button inside a button\n * is invalid HTML.\n */\nexport function CollapsibleSection({\n title,\n icon,\n isExpanded,\n onToggle,\n children,\n count,\n hasActiveFilters = false,\n expandWhenEmpty = false,\n childrenClassName,\n headerClassName,\n className,\n rightContent,\n collapsible = true,\n onHeaderClick,\n labels,\n}: CollapsibleSectionProps) {\n const l = { ...DEFAULT_COLLAPSIBLE_SECTION_LABELS, ...labels }\n const hasCount = count !== undefined\n const shouldBeExpanded = !collapsible\n ? true\n : hasCount\n ? count > 0\n ? isExpanded\n : expandWhenEmpty && isExpanded\n : isExpanded\n const hasContent = hasCount ? count > 0 || expandWhenEmpty : true\n\n const chevron = (\n <ChevronRight\n className={cn('size-4 shrink-0 transition-transform', shouldBeExpanded && 'rotate-90')}\n />\n )\n const titleBlock = (\n <div className=\"flex min-w-0 items-center gap-2\">\n {icon}\n {typeof title === 'string'\n ? title && <span className=\"whitespace-nowrap\">{title}</span>\n : title}\n {hasCount && (\n <span\n className={cn(\n 'ml-1 text-xs tabular-nums',\n hasActiveFilters\n ? 'rounded-full bg-primary px-1.5 font-medium text-primary-foreground'\n : 'font-normal text-muted-foreground'\n )}\n >\n {count}\n </span>\n )}\n </div>\n )\n\n return (\n <div className={cn('w-full', className)} data-slot=\"collapsible-section\">\n {onHeaderClick ? (\n <div\n role=\"button\"\n tabIndex={0}\n onClick={onHeaderClick}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n onHeaderClick()\n }\n }}\n className={cn(\n 'mb-4 flex cursor-pointer items-center justify-between gap-2 font-semibold pointer-coarse:min-h-11 transition-colors hover:bg-muted/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n headerClassName\n )}\n data-slot=\"collapsible-section-header\"\n >\n <div className=\"flex min-w-0 items-center gap-2 text-left\">\n <button\n type=\"button\"\n aria-expanded={shouldBeExpanded}\n aria-label={shouldBeExpanded ? l.collapseSection : l.expandSection}\n disabled={!hasContent}\n onClick={(e) => {\n e.stopPropagation()\n if (hasContent) onToggle()\n }}\n className=\"-ml-0.5 shrink-0 rounded-md p-0.5 text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:opacity-40 pointer-coarse:p-3.5\"\n >\n {chevron}\n </button>\n {titleBlock}\n </div>\n {rightContent && <div className=\"flex shrink-0 items-center\">{rightContent}</div>}\n </div>\n ) : !collapsible ? (\n <div\n className={cn('mb-4 flex items-center justify-between', headerClassName)}\n data-slot=\"collapsible-section-header\"\n >\n <div className=\"flex min-w-0 items-center gap-2 text-left font-medium\">{titleBlock}</div>\n {rightContent && <div className=\"flex shrink-0 items-center\">{rightContent}</div>}\n </div>\n ) : (\n <div\n className={cn('mb-4 flex items-center justify-between', headerClassName)}\n data-slot=\"collapsible-section-header\"\n >\n <div\n role=\"button\"\n tabIndex={hasContent ? 0 : -1}\n aria-expanded={shouldBeExpanded}\n aria-disabled={!hasContent}\n onClick={hasContent ? onToggle : undefined}\n onKeyDown={\n hasContent\n ? (e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n onToggle()\n }\n }\n : undefined\n }\n className={cn(\n 'touch-hit flex min-w-0 items-center gap-2 rounded-md text-left font-semibold transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n hasContent\n ? 'cursor-pointer hover:text-muted-foreground'\n : 'cursor-default opacity-60'\n )}\n >\n {chevron}\n {titleBlock}\n </div>\n {rightContent && <div className=\"flex shrink-0 items-center\">{rightContent}</div>}\n </div>\n )}\n {shouldBeExpanded && (\n <div className={childrenClassName ?? 'mb-8 flex flex-wrap justify-start gap-6'}>\n {children}\n </div>\n )}\n </div>\n )\n}\n"]}