@epicbagel/saas-kit 1.32.0 → 1.34.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (228) hide show
  1. package/README.md +67 -0
  2. package/THIRD_PARTY_NOTICES.md +6 -5
  3. package/dist/chunk-2BNEE3U6.cjs +36 -0
  4. package/dist/chunk-2DCJ2SFU.js +20 -0
  5. package/dist/chunk-5GFMSK27.js +489 -0
  6. package/dist/chunk-5PHOKJCT.cjs +42 -0
  7. package/dist/chunk-B54ZEKBG.cjs +63 -0
  8. package/dist/chunk-BB7PO2BW.js +67 -0
  9. package/dist/chunk-BOMVE7QO.cjs +47 -0
  10. package/dist/{chunk-FPOJ2NGG.js → chunk-C3VZMTVB.js} +1 -1
  11. package/dist/chunk-CXAFTEEP.cjs +20 -0
  12. package/dist/chunk-EXHF3QUY.js +36 -0
  13. package/dist/chunk-FYNHRHVY.cjs +47 -0
  14. package/dist/chunk-HTTRUJQU.cjs +60 -0
  15. package/dist/chunk-I3GBXIFL.cjs +67 -0
  16. package/dist/chunk-O3G3TVPU.js +27 -0
  17. package/dist/{chunk-JS6BLIWL.js → chunk-ROUWBWEQ.js} +7 -7
  18. package/dist/chunk-TDCVZKMX.cjs +27 -0
  19. package/dist/{chunk-E2UVQXBO.cjs → chunk-TP74SBRH.cjs} +6 -6
  20. package/dist/chunk-TUQVHPSI.js +60 -0
  21. package/dist/chunk-UKYUWSF2.cjs +489 -0
  22. package/dist/{chunk-MOJHETNO.cjs → chunk-VUMLLKWY.cjs} +5 -5
  23. package/dist/chunk-VWOWPNKT.js +73 -0
  24. package/dist/chunk-W5L6LQI3.js +42 -0
  25. package/dist/chunk-WMTCL463.js +47 -0
  26. package/dist/chunk-WTVL2FK7.js +47 -0
  27. package/dist/chunk-XH2I3YJ6.js +63 -0
  28. package/dist/chunk-Y6X6XDHE.cjs +73 -0
  29. package/dist/primitives/accent-theme.cjs +7 -0
  30. package/dist/primitives/accent-theme.d.cts +32 -0
  31. package/dist/primitives/accent-theme.d.ts +32 -0
  32. package/dist/primitives/accent-theme.js +7 -0
  33. package/dist/primitives/activity-feed.cjs +3 -3
  34. package/dist/primitives/activity-feed.js +4 -4
  35. package/dist/primitives/anchor.cjs +3 -30
  36. package/dist/primitives/anchor.js +3 -30
  37. package/dist/primitives/app-layout.cjs +114 -0
  38. package/dist/primitives/app-layout.d.cts +47 -0
  39. package/dist/primitives/app-layout.d.ts +47 -0
  40. package/dist/primitives/app-layout.js +114 -0
  41. package/dist/primitives/app-sidebar.cjs +52 -0
  42. package/dist/primitives/app-sidebar.d.cts +105 -0
  43. package/dist/primitives/app-sidebar.d.ts +105 -0
  44. package/dist/primitives/app-sidebar.js +52 -0
  45. package/dist/primitives/back-bar.cjs +37 -0
  46. package/dist/primitives/back-bar.d.cts +31 -0
  47. package/dist/primitives/back-bar.d.ts +31 -0
  48. package/dist/primitives/back-bar.js +37 -0
  49. package/dist/primitives/batch-action-bar.cjs +134 -0
  50. package/dist/primitives/batch-action-bar.d.cts +27 -0
  51. package/dist/primitives/batch-action-bar.d.ts +27 -0
  52. package/dist/primitives/batch-action-bar.js +134 -0
  53. package/dist/primitives/board-view.cjs +7 -7
  54. package/dist/primitives/board-view.js +6 -6
  55. package/dist/primitives/brand-mark.cjs +8 -0
  56. package/dist/primitives/brand-mark.d.cts +10 -0
  57. package/dist/primitives/brand-mark.d.ts +10 -0
  58. package/dist/primitives/brand-mark.js +8 -0
  59. package/dist/primitives/branded-page.cjs +201 -0
  60. package/dist/primitives/branded-page.d.cts +118 -0
  61. package/dist/primitives/branded-page.d.ts +118 -0
  62. package/dist/primitives/branded-page.js +201 -0
  63. package/dist/primitives/call-card.cjs +2 -2
  64. package/dist/primitives/call-card.js +3 -3
  65. package/dist/primitives/chat.cjs +21 -21
  66. package/dist/primitives/chat.js +17 -17
  67. package/dist/primitives/command.cjs +129 -0
  68. package/dist/primitives/command.d.cts +60 -0
  69. package/dist/primitives/command.d.ts +60 -0
  70. package/dist/primitives/command.js +129 -0
  71. package/dist/primitives/compact-list.cjs +24 -0
  72. package/dist/primitives/compact-list.d.cts +18 -0
  73. package/dist/primitives/compact-list.d.ts +18 -0
  74. package/dist/primitives/compact-list.js +24 -0
  75. package/dist/primitives/connection.cjs +2 -2
  76. package/dist/primitives/connection.js +2 -2
  77. package/dist/primitives/context-bar.cjs +57 -0
  78. package/dist/primitives/context-bar.d.cts +50 -0
  79. package/dist/primitives/context-bar.d.ts +50 -0
  80. package/dist/primitives/context-bar.js +57 -0
  81. package/dist/primitives/cycling-prompt.cjs +102 -0
  82. package/dist/primitives/cycling-prompt.d.cts +24 -0
  83. package/dist/primitives/cycling-prompt.d.ts +24 -0
  84. package/dist/primitives/cycling-prompt.js +102 -0
  85. package/dist/primitives/dialog.d.cts +9 -9
  86. package/dist/primitives/dialog.d.ts +9 -9
  87. package/dist/primitives/document-preview.cjs +5 -5
  88. package/dist/primitives/document-preview.js +3 -3
  89. package/dist/primitives/dotted-list.cjs +41 -0
  90. package/dist/primitives/dotted-list.d.cts +28 -0
  91. package/dist/primitives/dotted-list.d.ts +28 -0
  92. package/dist/primitives/dotted-list.js +41 -0
  93. package/dist/primitives/drawer.d.cts +6 -6
  94. package/dist/primitives/drawer.d.ts +6 -6
  95. package/dist/primitives/field.cjs +3 -3
  96. package/dist/primitives/field.js +2 -2
  97. package/dist/primitives/file-dropzone.cjs +3 -3
  98. package/dist/primitives/file-dropzone.js +2 -2
  99. package/dist/primitives/file-preview-internals.cjs +4 -4
  100. package/dist/primitives/file-preview-internals.js +3 -3
  101. package/dist/primitives/file-preview.cjs +12 -12
  102. package/dist/primitives/file-preview.js +3 -3
  103. package/dist/primitives/filter-bar.cjs +4 -4
  104. package/dist/primitives/filter-bar.js +3 -3
  105. package/dist/primitives/fixed-action-bar.cjs +9 -0
  106. package/dist/primitives/fixed-action-bar.d.cts +15 -0
  107. package/dist/primitives/fixed-action-bar.d.ts +15 -0
  108. package/dist/primitives/fixed-action-bar.js +9 -0
  109. package/dist/primitives/floating-action-button.cjs +65 -0
  110. package/dist/primitives/floating-action-button.d.cts +52 -0
  111. package/dist/primitives/floating-action-button.d.ts +52 -0
  112. package/dist/primitives/floating-action-button.js +65 -0
  113. package/dist/primitives/form-section.cjs +38 -0
  114. package/dist/primitives/form-section.d.cts +43 -0
  115. package/dist/primitives/form-section.d.ts +43 -0
  116. package/dist/primitives/form-section.js +38 -0
  117. package/dist/primitives/key-value-grid.cjs +52 -0
  118. package/dist/primitives/key-value-grid.d.cts +20 -0
  119. package/dist/primitives/key-value-grid.d.ts +20 -0
  120. package/dist/primitives/key-value-grid.js +52 -0
  121. package/dist/primitives/marketing-footer.cjs +34 -0
  122. package/dist/primitives/marketing-footer.d.cts +29 -0
  123. package/dist/primitives/marketing-footer.d.ts +29 -0
  124. package/dist/primitives/marketing-footer.js +34 -0
  125. package/dist/primitives/marketing-header.cjs +8 -0
  126. package/dist/primitives/marketing-header.d.cts +31 -0
  127. package/dist/primitives/marketing-header.d.ts +31 -0
  128. package/dist/primitives/marketing-header.js +8 -0
  129. package/dist/primitives/marketing-section.cjs +8 -0
  130. package/dist/primitives/marketing-section.d.cts +35 -0
  131. package/dist/primitives/marketing-section.d.ts +35 -0
  132. package/dist/primitives/marketing-section.js +8 -0
  133. package/dist/primitives/marketing-shell.cjs +28 -0
  134. package/dist/primitives/marketing-shell.d.cts +14 -0
  135. package/dist/primitives/marketing-shell.d.ts +14 -0
  136. package/dist/primitives/marketing-shell.js +28 -0
  137. package/dist/primitives/notes.cjs +3 -3
  138. package/dist/primitives/notes.js +3 -3
  139. package/dist/primitives/page-header.cjs +3 -67
  140. package/dist/primitives/page-header.js +3 -67
  141. package/dist/primitives/page-shell.cjs +3 -41
  142. package/dist/primitives/page-shell.js +3 -41
  143. package/dist/primitives/page-tabs.cjs +4 -57
  144. package/dist/primitives/page-tabs.js +4 -57
  145. package/dist/primitives/pager.cjs +85 -0
  146. package/dist/primitives/pager.d.cts +39 -0
  147. package/dist/primitives/pager.d.ts +39 -0
  148. package/dist/primitives/pager.js +85 -0
  149. package/dist/primitives/pagination.cjs +119 -0
  150. package/dist/primitives/pagination.d.cts +41 -0
  151. package/dist/primitives/pagination.d.ts +41 -0
  152. package/dist/primitives/pagination.js +119 -0
  153. package/dist/primitives/poster.cjs +11 -1
  154. package/dist/primitives/poster.d.cts +12 -1
  155. package/dist/primitives/poster.d.ts +12 -1
  156. package/dist/primitives/poster.js +10 -0
  157. package/dist/primitives/resource-list.cjs +7 -7
  158. package/dist/primitives/resource-list.js +6 -6
  159. package/dist/primitives/responsive-dialog.cjs +3 -3
  160. package/dist/primitives/responsive-dialog.js +2 -2
  161. package/dist/primitives/responsive-embed.cjs +29 -0
  162. package/dist/primitives/responsive-embed.d.cts +14 -0
  163. package/dist/primitives/responsive-embed.d.ts +14 -0
  164. package/dist/primitives/responsive-embed.js +29 -0
  165. package/dist/primitives/save-bar.cjs +91 -0
  166. package/dist/primitives/save-bar.d.cts +55 -0
  167. package/dist/primitives/save-bar.d.ts +55 -0
  168. package/dist/primitives/save-bar.js +91 -0
  169. package/dist/primitives/section.cjs +2 -2
  170. package/dist/primitives/section.js +3 -3
  171. package/dist/primitives/settings-list.cjs +10 -0
  172. package/dist/primitives/settings-list.d.cts +31 -0
  173. package/dist/primitives/settings-list.d.ts +31 -0
  174. package/dist/primitives/settings-list.js +10 -0
  175. package/dist/primitives/settings-section.cjs +34 -0
  176. package/dist/primitives/settings-section.d.cts +44 -0
  177. package/dist/primitives/settings-section.d.ts +44 -0
  178. package/dist/primitives/settings-section.js +34 -0
  179. package/dist/primitives/sheet.d.cts +9 -9
  180. package/dist/primitives/sheet.d.ts +9 -9
  181. package/dist/primitives/short-video.cjs +110 -0
  182. package/dist/primitives/short-video.d.cts +30 -0
  183. package/dist/primitives/short-video.d.ts +30 -0
  184. package/dist/primitives/short-video.js +110 -0
  185. package/dist/primitives/stats-card.cjs +46 -0
  186. package/dist/primitives/stats-card.d.cts +19 -0
  187. package/dist/primitives/stats-card.d.ts +19 -0
  188. package/dist/primitives/stats-card.js +46 -0
  189. package/dist/primitives/stats-strip.cjs +38 -0
  190. package/dist/primitives/stats-strip.d.cts +24 -0
  191. package/dist/primitives/stats-strip.d.ts +24 -0
  192. package/dist/primitives/stats-strip.js +38 -0
  193. package/dist/primitives/step-list.cjs +32 -0
  194. package/dist/primitives/step-list.d.cts +19 -0
  195. package/dist/primitives/step-list.d.ts +19 -0
  196. package/dist/primitives/step-list.js +32 -0
  197. package/dist/primitives/steps.cjs +77 -0
  198. package/dist/primitives/steps.d.cts +35 -0
  199. package/dist/primitives/steps.d.ts +35 -0
  200. package/dist/primitives/steps.js +77 -0
  201. package/dist/primitives/switch-field.cjs +3 -3
  202. package/dist/primitives/switch-field.js +3 -3
  203. package/dist/primitives/tabbed-page-header.cjs +53 -0
  204. package/dist/primitives/tabbed-page-header.d.cts +26 -0
  205. package/dist/primitives/tabbed-page-header.d.ts +26 -0
  206. package/dist/primitives/tabbed-page-header.js +53 -0
  207. package/dist/primitives/theme-selector.cjs +15 -15
  208. package/dist/primitives/theme-selector.js +2 -2
  209. package/dist/primitives/voice-dictation-button.cjs +3 -3
  210. package/dist/primitives/voice-dictation-button.js +2 -2
  211. package/dist/primitives/voice-session-controls.cjs +3 -3
  212. package/dist/primitives/voice-session-controls.js +2 -2
  213. package/dist/primitives/workflow-assistant.cjs +4 -4
  214. package/dist/primitives/workflow-assistant.js +2 -2
  215. package/package.json +322 -1
  216. package/src/styles/components/poster.css +42 -1
  217. package/dist/{chunk-PH2TV7XI.cjs → chunk-2YW5VA2V.cjs} +2 -2
  218. package/dist/{chunk-UFFHGKI7.js → chunk-6LB37JWO.js} +8 -8
  219. package/dist/{chunk-AO56ET4F.cjs → chunk-BTHYGHOH.cjs} +2 -2
  220. package/dist/{chunk-WHDHUYS6.js → chunk-HBRVOGLA.js} +3 -3
  221. package/dist/{chunk-6O3DUMF7.js → chunk-HTUYUMAH.js} +3 -3
  222. package/dist/{chunk-PNI354BY.cjs → chunk-JMNDFISN.cjs} +2 -2
  223. package/dist/{chunk-CRZ4INEJ.js → chunk-JTI4244T.js} +10 -10
  224. package/dist/{chunk-ZGTPNSR7.js → chunk-NNEV5RHQ.js} +3 -3
  225. package/dist/{chunk-TWCJMFST.js → chunk-O42YC6ZQ.js} +3 -3
  226. package/dist/{chunk-MW67PHAQ.cjs → chunk-S2IMM37Q.cjs} +6 -6
  227. package/dist/{chunk-ZJFYOXSM.cjs → chunk-SRVRNHCX.cjs} +2 -2
  228. package/dist/{chunk-ZLEM2SAU.cjs → chunk-Z3JJSNR5.cjs} +2 -2
@@ -0,0 +1,489 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }"use client";
2
+
3
+
4
+ var _chunkNQK5ZWC7cjs = require('./chunk-NQK5ZWC7.cjs');
5
+
6
+
7
+
8
+
9
+
10
+ var _chunkPPX2VPGIcjs = require('./chunk-PPX2VPGI.cjs');
11
+
12
+
13
+
14
+
15
+
16
+ var _chunkU2NES7VRcjs = require('./chunk-U2NES7VR.cjs');
17
+
18
+
19
+ var _chunkVGTINL5Qcjs = require('./chunk-VGTINL5Q.cjs');
20
+
21
+
22
+ var _chunkJDEXZGIYcjs = require('./chunk-JDEXZGIY.cjs');
23
+
24
+
25
+ var _chunkKWLSBTB2cjs = require('./chunk-KWLSBTB2.cjs');
26
+
27
+
28
+ var _chunkR35FT53Gcjs = require('./chunk-R35FT53G.cjs');
29
+
30
+ // src/primitives/app-sidebar.tsx
31
+ var _reactslot = require('@radix-ui/react-slot');
32
+ var _lucidereact = require('lucide-react');
33
+ var _react = require('react'); var React = _interopRequireWildcard(_react);
34
+ var _jsxruntime = require('react/jsx-runtime');
35
+ var SIDEBAR_WIDTHS = {
36
+ default: "16rem",
37
+ wide: "20rem"
38
+ };
39
+ var SIDEBAR_WIDTH_ICON = "4.5rem";
40
+ var SidebarContext = React.createContext(null);
41
+ function useSidebar() {
42
+ const context = React.useContext(SidebarContext);
43
+ if (!context) {
44
+ throw new Error("useSidebar must be used within a SidebarProvider.");
45
+ }
46
+ return context;
47
+ }
48
+ var SidebarProvider = React.forwardRef(function SidebarProvider2({
49
+ defaultOpen = true,
50
+ open: openProp,
51
+ onOpenChange,
52
+ storageKey,
53
+ width = "default",
54
+ surface = "background",
55
+ className,
56
+ style,
57
+ children,
58
+ ...props
59
+ }, ref) {
60
+ const isMobile = _chunkR35FT53Gcjs.useIsMobile.call(void 0, );
61
+ const [openMobile, setOpenMobile] = React.useState(false);
62
+ const [internalOpen, setInternalOpen] = React.useState(defaultOpen);
63
+ const open = _nullishCoalesce(openProp, () => ( internalOpen));
64
+ React.useEffect(() => {
65
+ if (!storageKey || openProp !== void 0) return;
66
+ try {
67
+ const saved = window.localStorage.getItem(storageKey);
68
+ if (saved === "true" || saved === "false") {
69
+ setInternalOpen(saved === "true");
70
+ }
71
+ } catch (e) {
72
+ }
73
+ }, [openProp, storageKey]);
74
+ const setOpen = React.useCallback(
75
+ (nextOpen) => {
76
+ if (openProp === void 0) setInternalOpen(nextOpen);
77
+ _optionalChain([onOpenChange, 'optionalCall', _ => _(nextOpen)]);
78
+ if (storageKey) {
79
+ try {
80
+ window.localStorage.setItem(storageKey, String(nextOpen));
81
+ } catch (e2) {
82
+ }
83
+ }
84
+ },
85
+ [onOpenChange, openProp, storageKey]
86
+ );
87
+ const toggleSidebar = React.useCallback(() => {
88
+ if (isMobile) setOpenMobile((current) => !current);
89
+ else setOpen(!open);
90
+ }, [isMobile, open, setOpen]);
91
+ React.useEffect(() => {
92
+ const handleKeyDown = (event) => {
93
+ if (event.key.toLowerCase() === "b" && (event.metaKey || event.ctrlKey)) {
94
+ event.preventDefault();
95
+ toggleSidebar();
96
+ }
97
+ };
98
+ window.addEventListener("keydown", handleKeyDown);
99
+ return () => window.removeEventListener("keydown", handleKeyDown);
100
+ }, [toggleSidebar]);
101
+ const value = React.useMemo(
102
+ () => ({
103
+ state: open ? "expanded" : "collapsed",
104
+ open,
105
+ setOpen,
106
+ openMobile,
107
+ setOpenMobile,
108
+ isMobile,
109
+ surface,
110
+ toggleSidebar
111
+ }),
112
+ [isMobile, open, openMobile, setOpen, surface, toggleSidebar]
113
+ );
114
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SidebarContext.Provider, { value, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkU2NES7VRcjs.TooltipProvider, { delayDuration: 150, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
115
+ "div",
116
+ {
117
+ ref,
118
+ "data-slot": "sidebar-wrapper",
119
+ style: {
120
+ "--sidebar-width": SIDEBAR_WIDTHS[width],
121
+ "--sidebar-width-icon": SIDEBAR_WIDTH_ICON,
122
+ ...style
123
+ },
124
+ className: _chunkKWLSBTB2cjs.cn.call(void 0,
125
+ "group/sidebar-wrapper flex min-h-svh w-full bg-background",
126
+ className
127
+ ),
128
+ ...props,
129
+ children
130
+ }
131
+ ) }) });
132
+ });
133
+ var Sidebar = React.forwardRef(
134
+ function Sidebar2({
135
+ side = "left",
136
+ collapsible = "icon",
137
+ mobileLabel = "Navigation",
138
+ onEscapeKeyDown,
139
+ className,
140
+ children,
141
+ ...props
142
+ }, ref) {
143
+ const { isMobile, open, openMobile, setOpenMobile, surface } = useSidebar();
144
+ if (isMobile) {
145
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPPX2VPGIcjs.Sheet, { open: openMobile, onOpenChange: setOpenMobile, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
146
+ _chunkPPX2VPGIcjs.SheetContent,
147
+ {
148
+ side,
149
+ width: "full",
150
+ padding: "none",
151
+ onEscapeKeyDown,
152
+ className: _chunkKWLSBTB2cjs.cn.call(void 0,
153
+ "gap-0 text-sidebar-foreground",
154
+ surface === "card" ? "bg-card" : "bg-background"
155
+ ),
156
+ children: [
157
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPPX2VPGIcjs.SheetTitle, { className: "sr-only", children: mobileLabel }),
158
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPPX2VPGIcjs.SheetDescription, { className: "sr-only", children: "Primary application navigation." }),
159
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
160
+ "div",
161
+ {
162
+ "data-slot": "sidebar",
163
+ "data-mobile": "true",
164
+ "data-surface": surface,
165
+ className: _chunkKWLSBTB2cjs.cn.call(void 0,
166
+ "flex h-full min-h-0 w-full flex-col",
167
+ surface === "card" ? "bg-card" : "bg-background",
168
+ className
169
+ ),
170
+ children
171
+ }
172
+ )
173
+ ]
174
+ }
175
+ ) });
176
+ }
177
+ const visible = collapsible !== "offcanvas" || open;
178
+ const width = collapsible === "none" ? "var(--sidebar-width)" : open ? "var(--sidebar-width)" : collapsible === "icon" ? "var(--sidebar-width-icon)" : "0px";
179
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
180
+ "aside",
181
+ {
182
+ ref,
183
+ "data-slot": "sidebar",
184
+ "data-state": open ? "expanded" : "collapsed",
185
+ "data-collapsible": open ? "" : collapsible,
186
+ "data-side": side,
187
+ "data-surface": surface,
188
+ "aria-hidden": !visible,
189
+ style: { width },
190
+ className: _chunkKWLSBTB2cjs.cn.call(void 0,
191
+ "group/sidebar sticky top-0 hidden h-svh shrink-0 flex-col border-sidebar-border text-sidebar-foreground transition-[width] duration-200 ease-linear md:flex",
192
+ surface === "card" ? "bg-card" : "bg-background",
193
+ side === "left" ? "border-r" : "border-l",
194
+ !visible && "overflow-hidden border-transparent",
195
+ className
196
+ ),
197
+ ...props,
198
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-full min-h-0 w-full flex-col overflow-hidden", children })
199
+ }
200
+ );
201
+ }
202
+ );
203
+ var SidebarInset = React.forwardRef(
204
+ function SidebarInset2({ className, ...props }, ref) {
205
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
206
+ "main",
207
+ {
208
+ ref,
209
+ "data-slot": "sidebar-inset",
210
+ className: _chunkKWLSBTB2cjs.cn.call(void 0,
211
+ "relative flex min-h-svh min-w-0 flex-1 flex-col bg-background",
212
+ className
213
+ ),
214
+ ...props
215
+ }
216
+ );
217
+ }
218
+ );
219
+ var SidebarTrigger = React.forwardRef(function SidebarTrigger2({ className, onClick, visibility = "always", ...props }, ref) {
220
+ const { toggleSidebar } = useSidebar();
221
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
222
+ _chunkJDEXZGIYcjs.Button,
223
+ {
224
+ ref,
225
+ type: "button",
226
+ variant: "ghost",
227
+ size: "icon",
228
+ className: _chunkKWLSBTB2cjs.cn.call(void 0,
229
+ "shrink-0",
230
+ visibility === "mobile" && "md:hidden",
231
+ visibility === "desktop" && "hidden md:inline-flex",
232
+ className
233
+ ),
234
+ onClick: (event) => {
235
+ _optionalChain([onClick, 'optionalCall', _2 => _2(event)]);
236
+ if (!event.defaultPrevented) toggleSidebar();
237
+ },
238
+ "aria-label": "Toggle navigation",
239
+ ...props,
240
+ children: [
241
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.PanelLeft, { className: "h-5 w-5" }),
242
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "sr-only", children: "Toggle navigation" })
243
+ ]
244
+ }
245
+ );
246
+ });
247
+ var SidebarRail = React.forwardRef(
248
+ function SidebarRail2({ className, ...props }, ref) {
249
+ const { toggleSidebar } = useSidebar();
250
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
251
+ "button",
252
+ {
253
+ ref,
254
+ type: "button",
255
+ "aria-label": "Toggle navigation",
256
+ title: "Toggle navigation",
257
+ tabIndex: -1,
258
+ onClick: toggleSidebar,
259
+ className: _chunkKWLSBTB2cjs.cn.call(void 0,
260
+ "absolute inset-y-0 right-0 z-20 hidden w-3 translate-x-1/2 transition-colors after:absolute after:inset-y-0 after:left-1/2 after:w-px hover:after:bg-sidebar-border md:block",
261
+ className
262
+ ),
263
+ ...props
264
+ }
265
+ );
266
+ }
267
+ );
268
+ function SidebarHeader({
269
+ border = "none",
270
+ minHeight = "none",
271
+ padding = "default",
272
+ justify = "start",
273
+ className,
274
+ ...props
275
+ }) {
276
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
277
+ "div",
278
+ {
279
+ "data-slot": "sidebar-header",
280
+ className: _chunkKWLSBTB2cjs.cn.call(void 0,
281
+ "flex shrink-0 flex-col gap-2",
282
+ padding === "default" ? minHeight === "header" ? "px-3 py-2" : "p-3" : minHeight === "header" ? "px-4 py-2" : "px-4 py-3",
283
+ border === "bottom" && "border-b border-sidebar-border",
284
+ minHeight === "header" && "h-16 min-h-16",
285
+ justify === "center" && "justify-center",
286
+ className
287
+ ),
288
+ ...props
289
+ }
290
+ );
291
+ }
292
+ function SidebarBrand({
293
+ expanded,
294
+ collapsed,
295
+ className,
296
+ ...props
297
+ }) {
298
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
299
+ "div",
300
+ {
301
+ "data-slot": "sidebar-brand",
302
+ className: _chunkKWLSBTB2cjs.cn.call(void 0, "min-w-0", className),
303
+ ...props,
304
+ children: [
305
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "group-data-[state=collapsed]/sidebar:hidden", children: expanded }),
306
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "hidden justify-center group-data-[state=collapsed]/sidebar:flex", children: collapsed })
307
+ ]
308
+ }
309
+ );
310
+ }
311
+ function SidebarFooter({ className, ...props }) {
312
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
313
+ "div",
314
+ {
315
+ "data-slot": "sidebar-footer",
316
+ className: _chunkKWLSBTB2cjs.cn.call(void 0, "flex shrink-0 flex-col gap-2 p-3", className),
317
+ ...props
318
+ }
319
+ );
320
+ }
321
+ function SidebarFooterActions({ className, ...props }) {
322
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
323
+ "div",
324
+ {
325
+ "data-slot": "sidebar-footer-actions",
326
+ className: _chunkKWLSBTB2cjs.cn.call(void 0,
327
+ "grid grid-cols-[minmax(0,1fr)_auto] items-center gap-1 group-data-[state=collapsed]/sidebar:grid-cols-1",
328
+ className
329
+ ),
330
+ ...props
331
+ }
332
+ );
333
+ }
334
+ function SidebarContent({ className, ...props }) {
335
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
336
+ "div",
337
+ {
338
+ "data-slot": "sidebar-content",
339
+ className: _chunkKWLSBTB2cjs.cn.call(void 0,
340
+ "flex min-h-0 flex-1 flex-col gap-2 overflow-y-auto",
341
+ className
342
+ ),
343
+ ...props
344
+ }
345
+ );
346
+ }
347
+ function SidebarGroup({
348
+ separated = false,
349
+ padding = "default",
350
+ className,
351
+ ...props
352
+ }) {
353
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
354
+ "div",
355
+ {
356
+ "data-slot": "sidebar-group",
357
+ "data-separated": separated ? "true" : void 0,
358
+ "data-padding": padding,
359
+ className: _chunkKWLSBTB2cjs.cn.call(void 0,
360
+ "relative flex w-full min-w-0 flex-col",
361
+ padding === "compact" ? "p-[12px]" : "p-3",
362
+ separated && "border-t border-sidebar-border",
363
+ className
364
+ ),
365
+ ...props
366
+ }
367
+ );
368
+ }
369
+ function SidebarGroupLabel({ className, ...props }) {
370
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
371
+ "div",
372
+ {
373
+ "data-slot": "sidebar-group-label",
374
+ className: _chunkKWLSBTB2cjs.cn.call(void 0,
375
+ "mb-1 flex h-8 items-center px-2 text-xs font-medium text-sidebar-foreground/60 transition-[height,margin,opacity] group-data-[state=collapsed]/sidebar:mb-0 group-data-[state=collapsed]/sidebar:h-0 group-data-[state=collapsed]/sidebar:overflow-hidden group-data-[state=collapsed]/sidebar:opacity-0",
376
+ className
377
+ ),
378
+ ...props
379
+ }
380
+ );
381
+ }
382
+ function SidebarGroupContent({ className, ...props }) {
383
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
384
+ "div",
385
+ {
386
+ "data-slot": "sidebar-group-content",
387
+ className: _chunkKWLSBTB2cjs.cn.call(void 0, "w-full text-sm", className),
388
+ ...props
389
+ }
390
+ );
391
+ }
392
+ function SidebarSeparator({ className, ...props }) {
393
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
394
+ _chunkNQK5ZWC7cjs.Separator,
395
+ {
396
+ "data-slot": "sidebar-separator",
397
+ className: _chunkKWLSBTB2cjs.cn.call(void 0, "mx-3 w-auto bg-sidebar-border", className),
398
+ ...props
399
+ }
400
+ );
401
+ }
402
+ function SidebarMenu({ className, ...props }) {
403
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
404
+ "ul",
405
+ {
406
+ "data-slot": "sidebar-menu",
407
+ className: _chunkKWLSBTB2cjs.cn.call(void 0, "flex w-full min-w-0 flex-col gap-1", className),
408
+ ...props
409
+ }
410
+ );
411
+ }
412
+ function SidebarMenuItem({ className, ...props }) {
413
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
414
+ "li",
415
+ {
416
+ "data-slot": "sidebar-menu-item",
417
+ className: _chunkKWLSBTB2cjs.cn.call(void 0, "group/menu-item relative", className),
418
+ ...props
419
+ }
420
+ );
421
+ }
422
+ var SidebarMenuButton = React.forwardRef(function SidebarMenuButton2({ asChild = false, isActive = false, tooltip, className, onClick, ...props }, ref) {
423
+ const { isMobile, open, setOpenMobile } = useSidebar();
424
+ const Comp = asChild ? _reactslot.Slot : "button";
425
+ const control = /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
426
+ Comp,
427
+ {
428
+ ref,
429
+ "data-slot": "sidebar-menu-button",
430
+ "data-active": isActive,
431
+ className: _chunkKWLSBTB2cjs.cn.call(void 0,
432
+ "peer/menu-button flex min-h-11 w-full min-w-0 items-center gap-3 overflow-hidden rounded-md px-3 py-2 text-left text-sm font-medium outline-hidden transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 focus-visible:ring-sidebar-ring disabled:pointer-events-none disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground [&>svg]:size-5 [&>svg]:shrink-0 group-data-[state=collapsed]/sidebar:justify-center group-data-[state=collapsed]/sidebar:px-2 group-data-[state=collapsed]/sidebar:[&>span]:hidden",
433
+ className
434
+ ),
435
+ onClick: (event) => {
436
+ _optionalChain([onClick, 'optionalCall', _3 => _3(event)]);
437
+ if (!event.defaultPrevented && isMobile) setOpenMobile(false);
438
+ },
439
+ ...props
440
+ }
441
+ );
442
+ if (!tooltip || open || isMobile) return control;
443
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkU2NES7VRcjs.Tooltip, { children: [
444
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkU2NES7VRcjs.TooltipTrigger, { asChild: true, children: control }),
445
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkU2NES7VRcjs.TooltipContent, { side: "right", align: "center", children: tooltip })
446
+ ] });
447
+ });
448
+ function SidebarMenuBadge({
449
+ children,
450
+ className,
451
+ placement = "overlay",
452
+ ...props
453
+ }) {
454
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
455
+ _chunkVGTINL5Qcjs.CountBadge,
456
+ {
457
+ "data-slot": "sidebar-menu-badge",
458
+ value: children,
459
+ className: _chunkKWLSBTB2cjs.cn.call(void 0,
460
+ "pointer-events-none group-data-[state=collapsed]/sidebar:hidden",
461
+ placement === "overlay" && "absolute right-2 top-1/2 -translate-y-1/2",
462
+ className
463
+ ),
464
+ ...props
465
+ }
466
+ );
467
+ }
468
+
469
+
470
+
471
+
472
+
473
+
474
+
475
+
476
+
477
+
478
+
479
+
480
+
481
+
482
+
483
+
484
+
485
+
486
+
487
+
488
+
489
+ exports.useSidebar = useSidebar; exports.SidebarProvider = SidebarProvider; exports.Sidebar = Sidebar; exports.SidebarInset = SidebarInset; exports.SidebarTrigger = SidebarTrigger; exports.SidebarRail = SidebarRail; exports.SidebarHeader = SidebarHeader; exports.SidebarBrand = SidebarBrand; exports.SidebarFooter = SidebarFooter; exports.SidebarFooterActions = SidebarFooterActions; exports.SidebarContent = SidebarContent; exports.SidebarGroup = SidebarGroup; exports.SidebarGroupLabel = SidebarGroupLabel; exports.SidebarGroupContent = SidebarGroupContent; exports.SidebarSeparator = SidebarSeparator; exports.SidebarMenu = SidebarMenu; exports.SidebarMenuItem = SidebarMenuItem; exports.SidebarMenuButton = SidebarMenuButton; exports.SidebarMenuBadge = SidebarMenuBadge;
@@ -7,23 +7,23 @@ var _chunkEUFV25KLcjs = require('./chunk-EUFV25KL.cjs');
7
7
  var _chunk7YCKII7Gcjs = require('./chunk-7YCKII7G.cjs');
8
8
 
9
9
 
10
- var _chunkMW67PHAQcjs = require('./chunk-MW67PHAQ.cjs');
10
+ var _chunkS2IMM37Qcjs = require('./chunk-S2IMM37Q.cjs');
11
11
 
12
12
 
13
13
  var _chunkLELBCBDTcjs = require('./chunk-LELBCBDT.cjs');
14
14
 
15
15
 
16
16
 
17
+ var _chunkYYFVG5A6cjs = require('./chunk-YYFVG5A6.cjs');
17
18
 
18
19
 
19
- var _chunkU2NES7VRcjs = require('./chunk-U2NES7VR.cjs');
20
+ var _chunkXLIAY56Vcjs = require('./chunk-XLIAY56V.cjs');
20
21
 
21
22
 
22
23
 
23
- var _chunkYYFVG5A6cjs = require('./chunk-YYFVG5A6.cjs');
24
24
 
25
25
 
26
- var _chunkXLIAY56Vcjs = require('./chunk-XLIAY56V.cjs');
26
+ var _chunkU2NES7VRcjs = require('./chunk-U2NES7VR.cjs');
27
27
 
28
28
 
29
29
  var _chunkPQUSJEXLcjs = require('./chunk-PQUSJEXL.cjs');
@@ -268,7 +268,7 @@ function ResourceList({
268
268
  const controlsVisible = !(hideControlsWhenEmpty && !loading && !error && _optionalChain([data, 'optionalAccess', _5 => _5.length]) === 0);
269
269
  const filterOnQuickRow = filterBarVisible && !toolbarHasOtherControls && hasQuickFilters;
270
270
  const filterBarNode = filterBarVisible ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
271
- _chunkMW67PHAQcjs.FilterBar,
271
+ _chunkS2IMM37Qcjs.FilterBar,
272
272
  {
273
273
  filters: filterSchema,
274
274
  onFiltersChange,
@@ -0,0 +1,73 @@
1
+ "use client";
2
+ import {
3
+ cn
4
+ } from "./chunk-G6SRSWXB.js";
5
+
6
+ // src/primitives/page-header.tsx
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ function PageHeader({
9
+ eyebrow,
10
+ title,
11
+ description,
12
+ children,
13
+ size = "default",
14
+ actionsLayout = "inline",
15
+ spacing = "default",
16
+ responsiveVisibility = "always",
17
+ className
18
+ }) {
19
+ const display = size === "display";
20
+ return /* @__PURE__ */ jsxs(
21
+ "div",
22
+ {
23
+ className: cn(
24
+ "flex items-start justify-between gap-4",
25
+ spacing === "default" && (display ? "mb-8 md:mb-10" : "mb-6"),
26
+ spacing === "compact" && "mb-4",
27
+ display && "flex-col gap-6 sm:flex-row sm:gap-4",
28
+ actionsLayout === "responsive" && "flex-wrap gap-y-3 [&>div:last-child]:w-full [&>div:last-child]:justify-end sm:[&>div:last-child]:w-auto",
29
+ responsiveVisibility === "desktop" && "hidden md:flex",
30
+ className
31
+ ),
32
+ children: [
33
+ /* @__PURE__ */ jsxs("div", { className: cn("min-w-0 flex-1", display ? "space-y-2" : "space-y-1.5"), children: [
34
+ eyebrow && /* @__PURE__ */ jsx("p", { className: "font-mono text-xs uppercase tracking-widest text-muted-foreground", children: eyebrow }),
35
+ /* @__PURE__ */ jsx(
36
+ "h1",
37
+ {
38
+ className: cn(
39
+ "font-semibold tracking-tight",
40
+ size === "display" ? "text-4xl leading-none md:text-6xl md:leading-none" : "text-2xl md:text-3xl"
41
+ ),
42
+ children: title
43
+ }
44
+ ),
45
+ description && /* @__PURE__ */ jsx(
46
+ "p",
47
+ {
48
+ className: cn(
49
+ "max-w-[72ch] text-muted-foreground",
50
+ size === "display" ? "text-base md:text-lg" : "text-sm"
51
+ ),
52
+ children: description
53
+ }
54
+ )
55
+ ] }),
56
+ children && /* @__PURE__ */ jsx(
57
+ "div",
58
+ {
59
+ className: cn(
60
+ "flex shrink-0 items-center gap-2",
61
+ size === "display" ? "w-full flex-wrap sm:mt-0.5 sm:w-auto sm:flex-nowrap md:mt-1" : "mt-1"
62
+ ),
63
+ children
64
+ }
65
+ )
66
+ ]
67
+ }
68
+ );
69
+ }
70
+
71
+ export {
72
+ PageHeader
73
+ };
@@ -0,0 +1,42 @@
1
+ "use client";
2
+ import {
3
+ cn
4
+ } from "./chunk-G6SRSWXB.js";
5
+
6
+ // src/primitives/marketing-header.tsx
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ function MarketingHeader({
9
+ brand,
10
+ links = [],
11
+ trailing,
12
+ renderLink,
13
+ variant = "default",
14
+ className
15
+ }) {
16
+ const link = (l) => {
17
+ const cls = variant === "mono" ? "font-mono text-xs uppercase tracking-[0.18em] text-muted-foreground transition-colors hover:text-foreground" : "text-sm text-muted-foreground transition-colors hover:text-foreground";
18
+ if (renderLink)
19
+ return /* @__PURE__ */ jsx("span", { children: renderLink({ href: l.href, children: l.label, className: cls }) }, l.href);
20
+ return /* @__PURE__ */ jsx("a", { href: l.href, className: cls, children: l.label }, l.href);
21
+ };
22
+ return /* @__PURE__ */ jsx(
23
+ "header",
24
+ {
25
+ className: cn(
26
+ "sticky top-0 z-50 border-b border-border bg-background/80 backdrop-blur-sm supports-[backdrop-filter]:bg-background/70",
27
+ className
28
+ ),
29
+ children: /* @__PURE__ */ jsxs("div", { className: "mx-auto flex w-full max-w-5xl items-center justify-between px-4 py-4 md:px-6", children: [
30
+ /* @__PURE__ */ jsx("div", { className: "flex items-center", children: brand }),
31
+ /* @__PURE__ */ jsxs("nav", { className: "flex items-center gap-3 md:gap-5", children: [
32
+ links.length > 0 && /* @__PURE__ */ jsx("div", { className: "hidden items-center gap-5 sm:flex", children: links.map(link) }),
33
+ trailing && /* @__PURE__ */ jsx("div", { className: "flex items-center gap-2 md:gap-3", children: trailing })
34
+ ] })
35
+ ] })
36
+ }
37
+ );
38
+ }
39
+
40
+ export {
41
+ MarketingHeader
42
+ };
@@ -0,0 +1,47 @@
1
+ "use client";
2
+ import {
3
+ Text
4
+ } from "./chunk-EIY5LLSP.js";
5
+ import {
6
+ cn
7
+ } from "./chunk-G6SRSWXB.js";
8
+
9
+ // src/primitives/fixed-action-bar.tsx
10
+ import { jsx, jsxs } from "react/jsx-runtime";
11
+ var widthStyles = {
12
+ compact: "max-w-2xl",
13
+ narrow: "max-w-3xl",
14
+ wide: "max-w-5xl",
15
+ full: "max-w-none"
16
+ };
17
+ function FixedActionBar({
18
+ title,
19
+ description,
20
+ children,
21
+ width = "narrow",
22
+ actionsWidth = "auto",
23
+ className
24
+ }) {
25
+ return /* @__PURE__ */ jsx(
26
+ "aside",
27
+ {
28
+ "aria-label": "Page action",
29
+ className: cn(
30
+ "fixed inset-x-0 bottom-0 z-40 border-t border-border bg-background/95 backdrop-blur-sm",
31
+ "pb-[env(safe-area-inset-bottom)] supports-backdrop-filter:bg-background/80",
32
+ className
33
+ ),
34
+ children: /* @__PURE__ */ jsxs("div", { className: cn("mx-auto flex items-center gap-4 px-4 py-3 md:px-6", title ? "justify-between" : "justify-end", widthStyles[width]), children: [
35
+ title && /* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
36
+ /* @__PURE__ */ jsx(Text, { className: "truncate font-medium", children: title }),
37
+ description && /* @__PURE__ */ jsx(Text, { variant: "muted", className: "text-sm", children: description })
38
+ ] }),
39
+ /* @__PURE__ */ jsx("div", { className: cn("shrink-0", actionsWidth === "full" && "w-full"), children })
40
+ ] })
41
+ }
42
+ );
43
+ }
44
+
45
+ export {
46
+ FixedActionBar
47
+ };