@shahadpichen/docpush 1.0.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 (168) hide show
  1. package/README.md +129 -0
  2. package/dist/cli/commands/init.d.ts +2 -0
  3. package/dist/cli/commands/init.d.ts.map +1 -0
  4. package/dist/cli/commands/init.js +116 -0
  5. package/dist/cli/commands/init.js.map +1 -0
  6. package/dist/cli/commands/start.d.ts +4 -0
  7. package/dist/cli/commands/start.d.ts.map +1 -0
  8. package/dist/cli/commands/start.js +58 -0
  9. package/dist/cli/commands/start.js.map +1 -0
  10. package/dist/cli/index.d.ts +3 -0
  11. package/dist/cli/index.d.ts.map +1 -0
  12. package/dist/cli/index.js +22 -0
  13. package/dist/cli/index.js.map +1 -0
  14. package/dist/core/config/index.d.ts +3 -0
  15. package/dist/core/config/index.d.ts.map +1 -0
  16. package/dist/core/config/index.js +9 -0
  17. package/dist/core/config/index.js.map +1 -0
  18. package/dist/core/config/loader.d.ts +6 -0
  19. package/dist/core/config/loader.d.ts.map +1 -0
  20. package/dist/core/config/loader.js +50 -0
  21. package/dist/core/config/loader.js.map +1 -0
  22. package/dist/core/config/schema.d.ts +134 -0
  23. package/dist/core/config/schema.d.ts.map +1 -0
  24. package/dist/core/config/schema.js +106 -0
  25. package/dist/core/config/schema.js.map +1 -0
  26. package/dist/core/errors.d.ts +45 -0
  27. package/dist/core/errors.d.ts.map +1 -0
  28. package/dist/core/errors.js +76 -0
  29. package/dist/core/errors.js.map +1 -0
  30. package/dist/core/github/client.d.ts +47 -0
  31. package/dist/core/github/client.d.ts.map +1 -0
  32. package/dist/core/github/client.js +159 -0
  33. package/dist/core/github/client.js.map +1 -0
  34. package/dist/core/github/index.d.ts +4 -0
  35. package/dist/core/github/index.d.ts.map +1 -0
  36. package/dist/core/github/index.js +9 -0
  37. package/dist/core/github/index.js.map +1 -0
  38. package/dist/core/github/retry.d.ts +15 -0
  39. package/dist/core/github/retry.d.ts.map +1 -0
  40. package/dist/core/github/retry.js +61 -0
  41. package/dist/core/github/retry.js.map +1 -0
  42. package/dist/index.d.ts +9 -0
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +40 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/react/components/comments-panel.d.ts +14 -0
  47. package/dist/react/components/comments-panel.d.ts.map +1 -0
  48. package/dist/react/components/comments-panel.js +62 -0
  49. package/dist/react/components/comments-panel.js.map +1 -0
  50. package/dist/react/components/docs-sidebar.d.ts +13 -0
  51. package/dist/react/components/docs-sidebar.d.ts.map +1 -0
  52. package/dist/react/components/docs-sidebar.js +70 -0
  53. package/dist/react/components/docs-sidebar.js.map +1 -0
  54. package/dist/react/components/drafts-list.d.ts +18 -0
  55. package/dist/react/components/drafts-list.d.ts.map +1 -0
  56. package/dist/react/components/drafts-list.js +38 -0
  57. package/dist/react/components/drafts-list.js.map +1 -0
  58. package/dist/react/components/markdown-editor.d.ts +8 -0
  59. package/dist/react/components/markdown-editor.d.ts.map +1 -0
  60. package/dist/react/components/markdown-editor.js +59 -0
  61. package/dist/react/components/markdown-editor.js.map +1 -0
  62. package/dist/react/components/markdown-viewer.d.ts +7 -0
  63. package/dist/react/components/markdown-viewer.d.ts.map +1 -0
  64. package/dist/react/components/markdown-viewer.js +58 -0
  65. package/dist/react/components/markdown-viewer.js.map +1 -0
  66. package/dist/react/components/search-bar.d.ts +14 -0
  67. package/dist/react/components/search-bar.d.ts.map +1 -0
  68. package/dist/react/components/search-bar.js +80 -0
  69. package/dist/react/components/search-bar.js.map +1 -0
  70. package/dist/react/components/ui/badge.d.ts +10 -0
  71. package/dist/react/components/ui/badge.d.ts.map +1 -0
  72. package/dist/react/components/ui/badge.js +27 -0
  73. package/dist/react/components/ui/badge.js.map +1 -0
  74. package/dist/react/components/ui/button.d.ts +12 -0
  75. package/dist/react/components/ui/button.d.ts.map +1 -0
  76. package/dist/react/components/ui/button.js +71 -0
  77. package/dist/react/components/ui/button.js.map +1 -0
  78. package/dist/react/components/ui/card.d.ts +7 -0
  79. package/dist/react/components/ui/card.d.ts.map +1 -0
  80. package/dist/react/components/ui/card.js +52 -0
  81. package/dist/react/components/ui/card.js.map +1 -0
  82. package/dist/react/components/ui/input.d.ts +6 -0
  83. package/dist/react/components/ui/input.d.ts.map +1 -0
  84. package/dist/react/components/ui/input.js +45 -0
  85. package/dist/react/components/ui/input.js.map +1 -0
  86. package/dist/react/components/ui/scroll-area.d.ts +6 -0
  87. package/dist/react/components/ui/scroll-area.d.ts.map +1 -0
  88. package/dist/react/components/ui/scroll-area.js +48 -0
  89. package/dist/react/components/ui/scroll-area.js.map +1 -0
  90. package/dist/react/components/ui/textarea.d.ts +6 -0
  91. package/dist/react/components/ui/textarea.d.ts.map +1 -0
  92. package/dist/react/components/ui/textarea.js +45 -0
  93. package/dist/react/components/ui/textarea.js.map +1 -0
  94. package/dist/react/context/docpush-provider.d.ts +17 -0
  95. package/dist/react/context/docpush-provider.d.ts.map +1 -0
  96. package/dist/react/context/docpush-provider.js +72 -0
  97. package/dist/react/context/docpush-provider.js.map +1 -0
  98. package/dist/react/hooks/use-auth.d.ts +16 -0
  99. package/dist/react/hooks/use-auth.d.ts.map +1 -0
  100. package/dist/react/hooks/use-auth.js +72 -0
  101. package/dist/react/hooks/use-auth.js.map +1 -0
  102. package/dist/react/hooks/use-comments.d.ts +15 -0
  103. package/dist/react/hooks/use-comments.d.ts.map +1 -0
  104. package/dist/react/hooks/use-comments.js +67 -0
  105. package/dist/react/hooks/use-comments.js.map +1 -0
  106. package/dist/react/hooks/use-docs.d.ts +13 -0
  107. package/dist/react/hooks/use-docs.d.ts.map +1 -0
  108. package/dist/react/hooks/use-docs.js +69 -0
  109. package/dist/react/hooks/use-docs.js.map +1 -0
  110. package/dist/react/hooks/use-drafts.d.ts +25 -0
  111. package/dist/react/hooks/use-drafts.d.ts.map +1 -0
  112. package/dist/react/hooks/use-drafts.js +99 -0
  113. package/dist/react/hooks/use-drafts.js.map +1 -0
  114. package/dist/react/index.d.ts +19 -0
  115. package/dist/react/index.d.ts.map +1 -0
  116. package/dist/react/index.js +52 -0
  117. package/dist/react/index.js.map +1 -0
  118. package/dist/react/lib/utils.d.ts +3 -0
  119. package/dist/react/lib/utils.d.ts.map +1 -0
  120. package/dist/react/lib/utils.js +9 -0
  121. package/dist/react/lib/utils.js.map +1 -0
  122. package/dist/server/auth/index.d.ts +18 -0
  123. package/dist/server/auth/index.d.ts.map +1 -0
  124. package/dist/server/auth/index.js +50 -0
  125. package/dist/server/auth/index.js.map +1 -0
  126. package/dist/server/auth/magic-link.d.ts +10 -0
  127. package/dist/server/auth/magic-link.d.ts.map +1 -0
  128. package/dist/server/auth/magic-link.js +94 -0
  129. package/dist/server/auth/magic-link.js.map +1 -0
  130. package/dist/server/auth/oauth.d.ts +6 -0
  131. package/dist/server/auth/oauth.d.ts.map +1 -0
  132. package/dist/server/auth/oauth.js +90 -0
  133. package/dist/server/auth/oauth.js.map +1 -0
  134. package/dist/server/auth/public.d.ts +7 -0
  135. package/dist/server/auth/public.d.ts.map +1 -0
  136. package/dist/server/auth/public.js +43 -0
  137. package/dist/server/auth/public.js.map +1 -0
  138. package/dist/server/index.d.ts +12 -0
  139. package/dist/server/index.d.ts.map +1 -0
  140. package/dist/server/index.js +107 -0
  141. package/dist/server/index.js.map +1 -0
  142. package/dist/server/middleware/auth.d.ts +20 -0
  143. package/dist/server/middleware/auth.d.ts.map +1 -0
  144. package/dist/server/middleware/auth.js +49 -0
  145. package/dist/server/middleware/auth.js.map +1 -0
  146. package/dist/server/routes/auth.d.ts +3 -0
  147. package/dist/server/routes/auth.d.ts.map +1 -0
  148. package/dist/server/routes/auth.js +105 -0
  149. package/dist/server/routes/auth.js.map +1 -0
  150. package/dist/server/routes/docs.d.ts +3 -0
  151. package/dist/server/routes/docs.d.ts.map +1 -0
  152. package/dist/server/routes/docs.js +58 -0
  153. package/dist/server/routes/docs.js.map +1 -0
  154. package/dist/server/routes/drafts.d.ts +3 -0
  155. package/dist/server/routes/drafts.d.ts.map +1 -0
  156. package/dist/server/routes/drafts.js +264 -0
  157. package/dist/server/routes/drafts.js.map +1 -0
  158. package/dist/server/routes/index.d.ts +4 -0
  159. package/dist/server/routes/index.d.ts.map +1 -0
  160. package/dist/server/routes/index.js +13 -0
  161. package/dist/server/routes/index.js.map +1 -0
  162. package/dist/server/storage/index.d.ts +40 -0
  163. package/dist/server/storage/index.d.ts.map +1 -0
  164. package/dist/server/storage/index.js +199 -0
  165. package/dist/server/storage/index.js.map +1 -0
  166. package/package.json +109 -0
  167. package/templates/.env.example +20 -0
  168. package/templates/docs.config.js +21 -0
@@ -0,0 +1,14 @@
1
+ interface Comment {
2
+ id: string;
3
+ userName: string | null;
4
+ content: string;
5
+ createdAt: number;
6
+ }
7
+ interface CommentsPanelProps {
8
+ comments: Comment[];
9
+ onAddComment?: (content: string) => void;
10
+ className?: string;
11
+ }
12
+ export declare function CommentsPanel({ comments, onAddComment, className }: CommentsPanelProps): import("react/jsx-runtime").JSX.Element;
13
+ export {};
14
+ //# sourceMappingURL=comments-panel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comments-panel.d.ts","sourceRoot":"","sources":["../../../src/react/components/comments-panel.tsx"],"names":[],"mappings":"AASA,UAAU,OAAO;IACf,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,kBAAkB,2CAsDtF"}
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ 'use client';
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.CommentsPanel = CommentsPanel;
38
+ const jsx_runtime_1 = require("react/jsx-runtime");
39
+ const React = __importStar(require("react"));
40
+ const utils_1 = require("../lib/utils");
41
+ const button_1 = require("./ui/button");
42
+ const card_1 = require("./ui/card");
43
+ const scroll_area_1 = require("./ui/scroll-area");
44
+ const textarea_1 = require("./ui/textarea");
45
+ function CommentsPanel({ comments, onAddComment, className }) {
46
+ const [newComment, setNewComment] = React.useState('');
47
+ const handleSubmit = (e) => {
48
+ e.preventDefault();
49
+ if (newComment.trim() && onAddComment) {
50
+ onAddComment(newComment);
51
+ setNewComment('');
52
+ }
53
+ };
54
+ return ((0, jsx_runtime_1.jsxs)(card_1.Card, { className: (0, utils_1.cn)('flex h-full flex-col', className), children: [(0, jsx_runtime_1.jsx)(card_1.CardHeader, { className: "border-b py-3", children: (0, jsx_runtime_1.jsxs)(card_1.CardTitle, { className: "flex items-center gap-2 text-base", children: [(0, jsx_runtime_1.jsx)(MessageIcon, { className: "h-4 w-4" }), "Comments (", comments.length, ")"] }) }), (0, jsx_runtime_1.jsx)(scroll_area_1.ScrollArea, { className: "flex-1", children: (0, jsx_runtime_1.jsx)(card_1.CardContent, { className: "space-y-4 p-4", children: comments.length === 0 ? ((0, jsx_runtime_1.jsx)("p", { className: "text-center text-sm text-muted-foreground py-8", children: "No comments yet" })) : (comments.map((comment) => ((0, jsx_runtime_1.jsxs)("div", { className: "rounded-lg border bg-muted/50 p-3", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between text-xs text-muted-foreground", children: [(0, jsx_runtime_1.jsx)("span", { className: "font-medium text-foreground", children: comment.userName || 'Anonymous' }), (0, jsx_runtime_1.jsx)("span", { children: new Date(comment.createdAt * 1000).toLocaleDateString() })] }), (0, jsx_runtime_1.jsx)("p", { className: "mt-2 text-sm", children: comment.content })] }, comment.id)))) }) }), onAddComment && ((0, jsx_runtime_1.jsxs)("form", { onSubmit: handleSubmit, className: "border-t p-4", children: [(0, jsx_runtime_1.jsx)(textarea_1.Textarea, { value: newComment, onChange: (e) => setNewComment(e.target.value), placeholder: "Add a comment...", className: "mb-2 min-h-[80px]" }), (0, jsx_runtime_1.jsxs)(button_1.Button, { type: "submit", size: "sm", disabled: !newComment.trim(), children: [(0, jsx_runtime_1.jsx)(SendIcon, { className: "mr-2 h-4 w-4" }), "Send"] })] }))] }));
55
+ }
56
+ function MessageIcon({ className }) {
57
+ return ((0, jsx_runtime_1.jsx)("svg", { className: className, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: (0, jsx_runtime_1.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z" }) }));
58
+ }
59
+ function SendIcon({ className }) {
60
+ return ((0, jsx_runtime_1.jsx)("svg", { className: className, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: (0, jsx_runtime_1.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 19l9 2-9-18-9 18 9-2zm0 0v-8" }) }));
61
+ }
62
+ //# sourceMappingURL=comments-panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comments-panel.js","sourceRoot":"","sources":["../../../src/react/components/comments-panel.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ interface DocTreeItem {
2
+ path: string;
3
+ type: 'file' | 'dir';
4
+ }
5
+ interface DocsSidebarProps {
6
+ tree: DocTreeItem[];
7
+ activePath?: string;
8
+ onSelect?: (path: string) => void;
9
+ className?: string;
10
+ }
11
+ export declare function DocsSidebar({ tree, activePath, onSelect, className }: DocsSidebarProps): import("react/jsx-runtime").JSX.Element;
12
+ export {};
13
+ //# sourceMappingURL=docs-sidebar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs-sidebar.d.ts","sourceRoot":"","sources":["../../../src/react/components/docs-sidebar.tsx"],"names":[],"mappings":"AAOA,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;CACtB;AAED,UAAU,gBAAgB;IACxB,IAAI,EAAE,WAAW,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,gBAAgB,2CAuDtF"}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ 'use client';
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.DocsSidebar = DocsSidebar;
38
+ const jsx_runtime_1 = require("react/jsx-runtime");
39
+ const React = __importStar(require("react"));
40
+ const utils_1 = require("../lib/utils");
41
+ const button_1 = require("./ui/button");
42
+ const scroll_area_1 = require("./ui/scroll-area");
43
+ function DocsSidebar({ tree, activePath, onSelect, className }) {
44
+ // Group by directory
45
+ const grouped = React.useMemo(() => {
46
+ return tree.reduce((acc, item) => {
47
+ const parts = item.path.split('/');
48
+ const dir = parts.length > 1 ? parts[0] : '';
49
+ if (!acc[dir])
50
+ acc[dir] = [];
51
+ acc[dir].push(item);
52
+ return acc;
53
+ }, {});
54
+ }, [tree]);
55
+ return ((0, jsx_runtime_1.jsx)(scroll_area_1.ScrollArea, { className: (0, utils_1.cn)('h-full w-64 border-r', className), children: (0, jsx_runtime_1.jsx)("div", { className: "space-y-4 py-4", children: Object.entries(grouped).map(([dir, items]) => ((0, jsx_runtime_1.jsxs)("div", { className: "px-3 py-2", children: [dir && ((0, jsx_runtime_1.jsxs)("h4", { className: "mb-2 flex items-center gap-2 px-2 text-sm font-semibold tracking-tight", children: [(0, jsx_runtime_1.jsx)(FolderIcon, { className: "h-4 w-4" }), dir] })), (0, jsx_runtime_1.jsx)("div", { className: "space-y-1", children: items
56
+ .filter((item) => item.type === 'file')
57
+ .map((item) => {
58
+ const isActive = item.path === activePath;
59
+ const fileName = item.path.split('/').pop()?.replace('.md', '') || item.path;
60
+ return ((0, jsx_runtime_1.jsxs)(button_1.Button, { variant: isActive ? 'secondary' : 'ghost', size: "sm", className: (0, utils_1.cn)('w-full justify-start gap-2', isActive && 'bg-muted font-medium'), onClick: () => onSelect?.(item.path), children: [(0, jsx_runtime_1.jsx)(FileIcon, { className: "h-4 w-4" }), fileName] }, item.path));
61
+ }) })] }, dir || 'root'))) }) }));
62
+ }
63
+ // Simple icons to avoid lucide-react dependency in core
64
+ function FolderIcon({ className }) {
65
+ return ((0, jsx_runtime_1.jsx)("svg", { className: className, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: (0, jsx_runtime_1.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z" }) }));
66
+ }
67
+ function FileIcon({ className }) {
68
+ return ((0, jsx_runtime_1.jsx)("svg", { className: className, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: (0, jsx_runtime_1.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" }) }));
69
+ }
70
+ //# sourceMappingURL=docs-sidebar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs-sidebar.js","sourceRoot":"","sources":["../../../src/react/components/docs-sidebar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ interface Draft {
2
+ id: string;
3
+ docPath: string;
4
+ title: string;
5
+ status: 'pending' | 'approved' | 'rejected';
6
+ createdAt: number;
7
+ }
8
+ interface DraftsListProps {
9
+ drafts: Draft[];
10
+ onSelect?: (draft: Draft) => void;
11
+ onApprove?: (id: string) => void;
12
+ onReject?: (id: string) => void;
13
+ showActions?: boolean;
14
+ className?: string;
15
+ }
16
+ export declare function DraftsList({ drafts, onSelect, onApprove, onReject, showActions, className, }: DraftsListProps): import("react/jsx-runtime").JSX.Element;
17
+ export {};
18
+ //# sourceMappingURL=drafts-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drafts-list.d.ts","sourceRoot":"","sources":["../../../src/react/components/drafts-list.tsx"],"names":[],"mappings":"AAQA,UAAU,KAAK;IACb,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;IAC5C,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,eAAe;IACvB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAClC,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAQD,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,WAAmB,EACnB,SAAS,GACV,EAAE,eAAe,2CAuEjB"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ 'use client';
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.DraftsList = DraftsList;
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const utils_1 = require("../lib/utils");
7
+ const badge_1 = require("./ui/badge");
8
+ const button_1 = require("./ui/button");
9
+ const card_1 = require("./ui/card");
10
+ const statusVariants = {
11
+ pending: 'warning',
12
+ approved: 'success',
13
+ rejected: 'destructive',
14
+ };
15
+ function DraftsList({ drafts, onSelect, onApprove, onReject, showActions = false, className, }) {
16
+ return ((0, jsx_runtime_1.jsxs)(card_1.Card, { className: (0, utils_1.cn)('', className), children: [(0, jsx_runtime_1.jsx)(card_1.CardHeader, { children: (0, jsx_runtime_1.jsxs)(card_1.CardTitle, { className: "flex items-center gap-2", children: [(0, jsx_runtime_1.jsx)(FileIcon, { className: "h-5 w-5" }), "Drafts"] }) }), (0, jsx_runtime_1.jsx)(card_1.CardContent, { children: drafts.length === 0 ? ((0, jsx_runtime_1.jsx)("p", { className: "text-center text-muted-foreground py-8", children: "No drafts found" })) : ((0, jsx_runtime_1.jsx)("div", { className: "space-y-2", children: drafts.map((draft) => ((0, jsx_runtime_1.jsxs)("div", { role: onSelect ? 'button' : undefined, tabIndex: onSelect ? 0 : undefined, className: (0, utils_1.cn)('flex items-center justify-between rounded-lg border p-3 transition-colors', onSelect && 'cursor-pointer hover:bg-muted/50'), onClick: () => onSelect?.(draft), onKeyDown: (e) => {
17
+ if (e.key === 'Enter' || e.key === ' ') {
18
+ e.preventDefault();
19
+ onSelect?.(draft);
20
+ }
21
+ }, children: [(0, jsx_runtime_1.jsxs)("div", { className: "space-y-1", children: [(0, jsx_runtime_1.jsx)("p", { className: "font-medium", children: draft.title }), (0, jsx_runtime_1.jsx)("p", { className: "text-xs text-muted-foreground", children: draft.docPath })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2", children: [(0, jsx_runtime_1.jsx)(badge_1.Badge, { variant: statusVariants[draft.status], children: draft.status }), showActions && draft.status === 'pending' && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(button_1.Button, { size: "icon", variant: "ghost", className: "h-8 w-8 text-green-600 hover:text-green-700 hover:bg-green-100", onClick: (e) => {
22
+ e.stopPropagation();
23
+ onApprove?.(draft.id);
24
+ }, children: (0, jsx_runtime_1.jsx)(CheckIcon, { className: "h-4 w-4" }) }), (0, jsx_runtime_1.jsx)(button_1.Button, { size: "icon", variant: "ghost", className: "h-8 w-8 text-red-600 hover:text-red-700 hover:bg-red-100", onClick: (e) => {
25
+ e.stopPropagation();
26
+ onReject?.(draft.id);
27
+ }, children: (0, jsx_runtime_1.jsx)(XIcon, { className: "h-4 w-4" }) })] }))] })] }, draft.id))) })) })] }));
28
+ }
29
+ function FileIcon({ className }) {
30
+ return ((0, jsx_runtime_1.jsx)("svg", { className: className, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: (0, jsx_runtime_1.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" }) }));
31
+ }
32
+ function CheckIcon({ className }) {
33
+ return ((0, jsx_runtime_1.jsx)("svg", { className: className, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: (0, jsx_runtime_1.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M5 13l4 4L19 7" }) }));
34
+ }
35
+ function XIcon({ className }) {
36
+ return ((0, jsx_runtime_1.jsx)("svg", { className: className, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: (0, jsx_runtime_1.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) }));
37
+ }
38
+ //# sourceMappingURL=drafts-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drafts-list.js","sourceRoot":"","sources":["../../../src/react/components/drafts-list.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ interface MarkdownEditorProps {
2
+ initialContent?: string;
3
+ onSave?: (content: string) => void;
4
+ className?: string;
5
+ }
6
+ export declare function MarkdownEditor({ initialContent, onSave, className }: MarkdownEditorProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=markdown-editor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-editor.d.ts","sourceRoot":"","sources":["../../../src/react/components/markdown-editor.tsx"],"names":[],"mappings":"AAQA,UAAU,mBAAmB;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,cAAc,CAAC,EAAE,cAAmB,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,mBAAmB,2CA4C7F"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ 'use client';
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.MarkdownEditor = MarkdownEditor;
38
+ const jsx_runtime_1 = require("react/jsx-runtime");
39
+ const React = __importStar(require("react"));
40
+ const utils_1 = require("../lib/utils");
41
+ const markdown_viewer_1 = require("./markdown-viewer");
42
+ const button_1 = require("./ui/button");
43
+ const textarea_1 = require("./ui/textarea");
44
+ function MarkdownEditor({ initialContent = '', onSave, className }) {
45
+ const [content, setContent] = React.useState(initialContent);
46
+ const [showPreview, setShowPreview] = React.useState(false);
47
+ return ((0, jsx_runtime_1.jsxs)("div", { className: (0, utils_1.cn)('flex h-full flex-col', className), children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2 border-b p-2", children: [(0, jsx_runtime_1.jsxs)(button_1.Button, { variant: showPreview ? 'ghost' : 'secondary', size: "sm", onClick: () => setShowPreview(false), children: [(0, jsx_runtime_1.jsx)(PencilIcon, { className: "mr-2 h-4 w-4" }), "Edit"] }), (0, jsx_runtime_1.jsxs)(button_1.Button, { variant: showPreview ? 'secondary' : 'ghost', size: "sm", onClick: () => setShowPreview(true), children: [(0, jsx_runtime_1.jsx)(EyeIcon, { className: "mr-2 h-4 w-4" }), "Preview"] }), onSave && ((0, jsx_runtime_1.jsxs)(button_1.Button, { size: "sm", className: "ml-auto", onClick: () => onSave(content), children: [(0, jsx_runtime_1.jsx)(SaveIcon, { className: "mr-2 h-4 w-4" }), "Save"] }))] }), (0, jsx_runtime_1.jsx)("div", { className: "flex-1 overflow-auto", children: showPreview ? ((0, jsx_runtime_1.jsx)(markdown_viewer_1.MarkdownViewer, { content: content, className: "h-full" })) : ((0, jsx_runtime_1.jsx)(textarea_1.Textarea, { value: content, onChange: (e) => setContent(e.target.value), className: "h-full min-h-[400px] resize-none rounded-none border-0 font-mono focus-visible:ring-0", placeholder: "Write your markdown here..." })) })] }));
48
+ }
49
+ // Simple icons
50
+ function PencilIcon({ className }) {
51
+ return ((0, jsx_runtime_1.jsx)("svg", { className: className, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: (0, jsx_runtime_1.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15.232 5.232l3.536 3.536m-2.036-5.036a2.5 2.5 0 113.536 3.536L6.5 21.036H3v-3.572L16.732 3.732z" }) }));
52
+ }
53
+ function EyeIcon({ className }) {
54
+ return ((0, jsx_runtime_1.jsxs)("svg", { className: className, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: [(0, jsx_runtime_1.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 12a3 3 0 11-6 0 3 3 0 016 0z" }), (0, jsx_runtime_1.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z" })] }));
55
+ }
56
+ function SaveIcon({ className }) {
57
+ return ((0, jsx_runtime_1.jsx)("svg", { className: className, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: (0, jsx_runtime_1.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M8 7H5a2 2 0 00-2 2v9a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-3m-1 4l-3 3m0 0l-3-3m3 3V4" }) }));
58
+ }
59
+ //# sourceMappingURL=markdown-editor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-editor.js","sourceRoot":"","sources":["../../../src/react/components/markdown-editor.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ interface MarkdownViewerProps {
2
+ content: string;
3
+ className?: string;
4
+ }
5
+ export declare function MarkdownViewer({ content, className }: MarkdownViewerProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=markdown-viewer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-viewer.d.ts","sourceRoot":"","sources":["../../../src/react/components/markdown-viewer.tsx"],"names":[],"mappings":"AAKA,UAAU,mBAAmB;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,cAAc,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,mBAAmB,2CAyBzE"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ 'use client';
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.MarkdownViewer = MarkdownViewer;
38
+ const jsx_runtime_1 = require("react/jsx-runtime");
39
+ const React = __importStar(require("react"));
40
+ const utils_1 = require("../lib/utils");
41
+ function MarkdownViewer({ content, className }) {
42
+ // Basic markdown rendering - users can override with react-markdown
43
+ const html = React.useMemo(() => {
44
+ return content
45
+ .replace(/^### (.*$)/gim, '<h3 class="text-lg font-semibold mt-6 mb-2">$1</h3>')
46
+ .replace(/^## (.*$)/gim, '<h2 class="text-xl font-semibold mt-8 mb-3">$1</h2>')
47
+ .replace(/^# (.*$)/gim, '<h1 class="text-2xl font-bold mt-10 mb-4">$1</h1>')
48
+ .replace(/\*\*(.*?)\*\*/gim, '<strong>$1</strong>')
49
+ .replace(/\*(.*?)\*/gim, '<em>$1</em>')
50
+ .replace(/```(\w+)?\n([\s\S]*?)```/gim, '<pre class="bg-muted p-4 rounded-lg overflow-x-auto my-4"><code>$2</code></pre>')
51
+ .replace(/`([^`]+)`/gim, '<code class="bg-muted px-1.5 py-0.5 rounded text-sm">$1</code>')
52
+ .replace(/^\- (.*$)/gim, '<li class="ml-4">$1</li>')
53
+ .replace(/\n\n/gim, '</p><p class="my-4">')
54
+ .replace(/\n/gim, '<br>');
55
+ }, [content]);
56
+ return ((0, jsx_runtime_1.jsx)("article", { className: (0, utils_1.cn)('prose prose-neutral dark:prose-invert max-w-none p-6', className), dangerouslySetInnerHTML: { __html: `<p>${html}</p>` } }));
57
+ }
58
+ //# sourceMappingURL=markdown-viewer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-viewer.js","sourceRoot":"","sources":["../../../src/react/components/markdown-viewer.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUb,wCAyBC;;AAjCD,6CAA+B;AAC/B,wCAAkC;AAOlC,SAAgB,cAAc,CAAC,EAAE,OAAO,EAAE,SAAS,EAAuB;IACxE,oEAAoE;IACpE,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QAC9B,OAAO,OAAO;aACX,OAAO,CAAC,eAAe,EAAE,qDAAqD,CAAC;aAC/E,OAAO,CAAC,cAAc,EAAE,qDAAqD,CAAC;aAC9E,OAAO,CAAC,aAAa,EAAE,mDAAmD,CAAC;aAC3E,OAAO,CAAC,kBAAkB,EAAE,qBAAqB,CAAC;aAClD,OAAO,CAAC,cAAc,EAAE,aAAa,CAAC;aACtC,OAAO,CACN,6BAA6B,EAC7B,iFAAiF,CAClF;aACA,OAAO,CAAC,cAAc,EAAE,gEAAgE,CAAC;aACzF,OAAO,CAAC,cAAc,EAAE,0BAA0B,CAAC;aACnD,OAAO,CAAC,SAAS,EAAE,sBAAsB,CAAC;aAC1C,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC9B,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO,CACL,oCACE,SAAS,EAAE,IAAA,UAAE,EAAC,sDAAsD,EAAE,SAAS,CAAC,EAChF,uBAAuB,EAAE,EAAE,MAAM,EAAE,MAAM,IAAI,MAAM,EAAE,GACrD,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,14 @@
1
+ interface SearchResult {
2
+ path: string;
3
+ title: string;
4
+ excerpt: string;
5
+ }
6
+ interface SearchBarProps {
7
+ onSearch?: (query: string) => Promise<SearchResult[]>;
8
+ onSelect?: (path: string) => void;
9
+ placeholder?: string;
10
+ className?: string;
11
+ }
12
+ export declare function SearchBar({ onSearch, onSelect, placeholder, className, }: SearchBarProps): import("react/jsx-runtime").JSX.Element;
13
+ export {};
14
+ //# sourceMappingURL=search-bar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-bar.d.ts","sourceRoot":"","sources":["../../../src/react/components/search-bar.tsx"],"names":[],"mappings":"AAMA,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,cAAc;IACtB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IACtD,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,SAAS,CAAC,EACxB,QAAQ,EACR,QAAQ,EACR,WAA8B,EAC9B,SAAS,GACV,EAAE,cAAc,2CAmEhB"}
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ 'use client';
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.SearchBar = SearchBar;
38
+ const jsx_runtime_1 = require("react/jsx-runtime");
39
+ const React = __importStar(require("react"));
40
+ const utils_1 = require("../lib/utils");
41
+ const input_1 = require("./ui/input");
42
+ function SearchBar({ onSearch, onSelect, placeholder = 'Search docs...', className, }) {
43
+ const [query, setQuery] = React.useState('');
44
+ const [results, setResults] = React.useState([]);
45
+ const [loading, setLoading] = React.useState(false);
46
+ const [open, setOpen] = React.useState(false);
47
+ const handleSearch = async (value) => {
48
+ setQuery(value);
49
+ if (value.length < 2 || !onSearch) {
50
+ setResults([]);
51
+ setOpen(false);
52
+ return;
53
+ }
54
+ setLoading(true);
55
+ setOpen(true);
56
+ try {
57
+ const res = await onSearch(value);
58
+ setResults(res);
59
+ }
60
+ catch {
61
+ setResults([]);
62
+ }
63
+ finally {
64
+ setLoading(false);
65
+ }
66
+ };
67
+ return ((0, jsx_runtime_1.jsxs)("div", { className: (0, utils_1.cn)('relative', className), children: [(0, jsx_runtime_1.jsx)(SearchIcon, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground" }), (0, jsx_runtime_1.jsx)(input_1.Input, { value: query, onChange: (e) => handleSearch(e.target.value), placeholder: placeholder, className: "pl-10" }), open && (results.length > 0 || loading) && ((0, jsx_runtime_1.jsx)("div", { className: "absolute top-full left-0 right-0 z-50 mt-1 rounded-md border bg-popover shadow-lg", children: loading ? ((0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-center gap-2 p-4 text-sm text-muted-foreground", children: [(0, jsx_runtime_1.jsx)(LoaderIcon, { className: "h-4 w-4 animate-spin" }), "Searching..."] })) : ((0, jsx_runtime_1.jsx)("div", { className: "max-h-[300px] overflow-auto", children: results.map((result) => ((0, jsx_runtime_1.jsxs)("button", { type: "button", onClick: () => {
68
+ onSelect?.(result.path);
69
+ setQuery('');
70
+ setResults([]);
71
+ setOpen(false);
72
+ }, className: "flex w-full flex-col items-start gap-1 border-b p-3 text-left transition-colors last:border-0 hover:bg-muted", children: [(0, jsx_runtime_1.jsx)("span", { className: "font-medium", children: result.title }), (0, jsx_runtime_1.jsx)("span", { className: "text-xs text-muted-foreground line-clamp-1", children: result.excerpt })] }, result.path))) })) }))] }));
73
+ }
74
+ function SearchIcon({ className }) {
75
+ return ((0, jsx_runtime_1.jsx)("svg", { className: className, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: (0, jsx_runtime_1.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z" }) }));
76
+ }
77
+ function LoaderIcon({ className }) {
78
+ return ((0, jsx_runtime_1.jsx)("svg", { className: className, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: (0, jsx_runtime_1.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15" }) }));
79
+ }
80
+ //# sourceMappingURL=search-bar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-bar.js","sourceRoot":"","sources":["../../../src/react/components/search-bar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { type VariantProps } from 'class-variance-authority';
2
+ import type * as React from 'react';
3
+ declare const badgeVariants: (props?: ({
4
+ variant?: "default" | "destructive" | "outline" | "secondary" | "success" | "warning" | null | undefined;
5
+ } & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
6
+ export interface BadgeProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof badgeVariants> {
7
+ }
8
+ declare function Badge({ className, variant, ...props }: BadgeProps): import("react/jsx-runtime").JSX.Element;
9
+ export { Badge, badgeVariants };
10
+ //# sourceMappingURL=badge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../../../src/react/components/ui/badge.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAO,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAGpC,QAAA,MAAM,aAAa;;mFAmBlB,CAAC;AAEF,MAAM,WAAW,UACf,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAC1C,YAAY,CAAC,OAAO,aAAa,CAAC;CAAG;AAEzC,iBAAS,KAAK,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,UAAU,2CAE1D;AAED,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.badgeVariants = void 0;
4
+ exports.Badge = Badge;
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const class_variance_authority_1 = require("class-variance-authority");
7
+ const utils_1 = require("../../lib/utils");
8
+ const badgeVariants = (0, class_variance_authority_1.cva)('inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2', {
9
+ variants: {
10
+ variant: {
11
+ default: 'border-transparent bg-primary text-primary-foreground hover:bg-primary/80',
12
+ secondary: 'border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80',
13
+ destructive: 'border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80',
14
+ outline: 'text-foreground',
15
+ success: 'border-transparent bg-green-500 text-white',
16
+ warning: 'border-transparent bg-yellow-500 text-white',
17
+ },
18
+ },
19
+ defaultVariants: {
20
+ variant: 'default',
21
+ },
22
+ });
23
+ exports.badgeVariants = badgeVariants;
24
+ function Badge({ className, variant, ...props }) {
25
+ return (0, jsx_runtime_1.jsx)("div", { className: (0, utils_1.cn)(badgeVariants({ variant }), className), ...props });
26
+ }
27
+ //# sourceMappingURL=badge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.js","sourceRoot":"","sources":["../../../../src/react/components/ui/badge.tsx"],"names":[],"mappings":";;;AAiCS,sBAAK;;AAjCd,uEAAkE;AAElE,2CAAqC;AAErC,MAAM,aAAa,GAAG,IAAA,8BAAG,EACvB,wKAAwK,EACxK;IACE,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EAAE,2EAA2E;YACpF,SAAS,EACP,iFAAiF;YACnF,WAAW,EACT,uFAAuF;YACzF,OAAO,EAAE,iBAAiB;YAC1B,OAAO,EAAE,4CAA4C;YACrD,OAAO,EAAE,6CAA6C;SACvD;KACF;IACD,eAAe,EAAE;QACf,OAAO,EAAE,SAAS;KACnB;CACF,CACF,CAAC;AAUc,sCAAa;AAJ7B,SAAS,KAAK,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,EAAc;IACzD,OAAO,gCAAK,SAAS,EAAE,IAAA,UAAE,EAAC,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CAAC;AAClF,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { type VariantProps } from 'class-variance-authority';
2
+ import * as React from 'react';
3
+ declare const buttonVariants: (props?: ({
4
+ variant?: "default" | "destructive" | "outline" | "secondary" | "ghost" | "link" | null | undefined;
5
+ size?: "default" | "sm" | "lg" | "icon" | null | undefined;
6
+ } & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
7
+ export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
8
+ asChild?: boolean;
9
+ }
10
+ declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
11
+ export { Button, buttonVariants };
12
+ //# sourceMappingURL=button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../../src/react/components/ui/button.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,YAAY,EAAO,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,QAAA,MAAM,cAAc;;;mFAwBnB,CAAC;AAEF,MAAM,WAAW,WACf,SAAQ,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EACnD,YAAY,CAAC,OAAO,cAAc,CAAC;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,QAAA,MAAM,MAAM,uFAOX,CAAC;AAGF,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC"}