@multicomma/arkcn 0.1.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 (237) hide show
  1. package/README.md +78 -0
  2. package/bin/arkcn.mjs +78 -0
  3. package/cli/commands.mjs +251 -0
  4. package/cli/project.mjs +168 -0
  5. package/cli/registry.mjs +50 -0
  6. package/cli/ui.mjs +46 -0
  7. package/mcp/server.mjs +149 -0
  8. package/package.json +201 -0
  9. package/registry/base.css +680 -0
  10. package/registry/index.json +1833 -0
  11. package/registry/items/accordion.json +18 -0
  12. package/registry/items/activity-feed.json +18 -0
  13. package/registry/items/alert-dialog.json +18 -0
  14. package/registry/items/alert.json +17 -0
  15. package/registry/items/angle-slider.json +17 -0
  16. package/registry/items/app-shell.json +28 -0
  17. package/registry/items/aspect-ratio.json +13 -0
  18. package/registry/items/attachment.json +19 -0
  19. package/registry/items/avatar.json +17 -0
  20. package/registry/items/badge.json +18 -0
  21. package/registry/items/breadcrumb.json +18 -0
  22. package/registry/items/bubble.json +18 -0
  23. package/registry/items/button-group.json +19 -0
  24. package/registry/items/button.json +18 -0
  25. package/registry/items/calendar.json +19 -0
  26. package/registry/items/canvas.json +24 -0
  27. package/registry/items/card.json +15 -0
  28. package/registry/items/carousel.json +19 -0
  29. package/registry/items/cascader.json +23 -0
  30. package/registry/items/chart.json +17 -0
  31. package/registry/items/chat.json +23 -0
  32. package/registry/items/checkbox.json +18 -0
  33. package/registry/items/clipboard.json +19 -0
  34. package/registry/items/collapsible.json +15 -0
  35. package/registry/items/color-picker.json +19 -0
  36. package/registry/items/combobox.json +20 -0
  37. package/registry/items/command.json +21 -0
  38. package/registry/items/comment-thread.json +25 -0
  39. package/registry/items/context-menu.json +18 -0
  40. package/registry/items/controllable.json +14 -0
  41. package/registry/items/data-grid.json +24 -0
  42. package/registry/items/data-table-adapter.json +14 -0
  43. package/registry/items/data-table.json +32 -0
  44. package/registry/items/date-input.json +17 -0
  45. package/registry/items/dialog.json +19 -0
  46. package/registry/items/direction.json +13 -0
  47. package/registry/items/drag-preview.json +16 -0
  48. package/registry/items/drawer.json +18 -0
  49. package/registry/items/dropdown-menu.json +18 -0
  50. package/registry/items/editable.json +17 -0
  51. package/registry/items/empty.json +17 -0
  52. package/registry/items/field.json +19 -0
  53. package/registry/items/file-upload.json +19 -0
  54. package/registry/items/floating-panel.json +19 -0
  55. package/registry/items/floating-toolbar.json +16 -0
  56. package/registry/items/form.json +14 -0
  57. package/registry/items/format.json +15 -0
  58. package/registry/items/gantt.json +22 -0
  59. package/registry/items/history.json +14 -0
  60. package/registry/items/hotkeys.json +18 -0
  61. package/registry/items/hover-card.json +17 -0
  62. package/registry/items/image-cropper.json +17 -0
  63. package/registry/items/input-group.json +20 -0
  64. package/registry/items/input-otp.json +18 -0
  65. package/registry/items/input.json +15 -0
  66. package/registry/items/item.json +19 -0
  67. package/registry/items/json-tree-view.json +17 -0
  68. package/registry/items/kanban.json +26 -0
  69. package/registry/items/kbd.json +15 -0
  70. package/registry/items/label.json +15 -0
  71. package/registry/items/live-region.json +16 -0
  72. package/registry/items/marker.json +18 -0
  73. package/registry/items/marquee.json +17 -0
  74. package/registry/items/menubar.json +19 -0
  75. package/registry/items/message.json +15 -0
  76. package/registry/items/navigation-menu.json +19 -0
  77. package/registry/items/node-graph.json +22 -0
  78. package/registry/items/number-input.json +18 -0
  79. package/registry/items/pagination.json +18 -0
  80. package/registry/items/password-input.json +18 -0
  81. package/registry/items/popconfirm.json +20 -0
  82. package/registry/items/popover.json +18 -0
  83. package/registry/items/progress.json +17 -0
  84. package/registry/items/qr-code.json +17 -0
  85. package/registry/items/query-builder.json +23 -0
  86. package/registry/items/radio-group.json +17 -0
  87. package/registry/items/rating-group.json +18 -0
  88. package/registry/items/resizable.json +17 -0
  89. package/registry/items/rich-text-editor.json +37 -0
  90. package/registry/items/row-layout.json +15 -0
  91. package/registry/items/scheduler.json +23 -0
  92. package/registry/items/scroll-area.json +17 -0
  93. package/registry/items/segment-group.json +17 -0
  94. package/registry/items/select.json +19 -0
  95. package/registry/items/separator.json +15 -0
  96. package/registry/items/sheet.json +19 -0
  97. package/registry/items/sidebar.json +27 -0
  98. package/registry/items/signature-pad.json +19 -0
  99. package/registry/items/skeleton.json +15 -0
  100. package/registry/items/slider.json +17 -0
  101. package/registry/items/sonner.json +17 -0
  102. package/registry/items/spinner.json +17 -0
  103. package/registry/items/steps.json +19 -0
  104. package/registry/items/swap.json +17 -0
  105. package/registry/items/switch.json +17 -0
  106. package/registry/items/table.json +16 -0
  107. package/registry/items/tabs.json +18 -0
  108. package/registry/items/tags-input.json +18 -0
  109. package/registry/items/textarea.json +15 -0
  110. package/registry/items/time.json +14 -0
  111. package/registry/items/timer.json +18 -0
  112. package/registry/items/toc.json +17 -0
  113. package/registry/items/toggle-group.json +19 -0
  114. package/registry/items/toggle.json +18 -0
  115. package/registry/items/tooltip.json +17 -0
  116. package/registry/items/tour.json +19 -0
  117. package/registry/items/transfer-list.json +24 -0
  118. package/registry/items/tree-select.json +24 -0
  119. package/registry/items/tree-view.json +18 -0
  120. package/registry/items/use-mobile.json +13 -0
  121. package/registry/items/utils.json +17 -0
  122. package/registry/items/virtual-list.json +16 -0
  123. package/src/components/ui/accordion.tsx +111 -0
  124. package/src/components/ui/activity-feed.tsx +228 -0
  125. package/src/components/ui/alert-dialog.tsx +204 -0
  126. package/src/components/ui/alert.tsx +55 -0
  127. package/src/components/ui/angle-slider.tsx +117 -0
  128. package/src/components/ui/app-shell.tsx +985 -0
  129. package/src/components/ui/aspect-ratio.tsx +35 -0
  130. package/src/components/ui/attachment.tsx +193 -0
  131. package/src/components/ui/avatar.tsx +94 -0
  132. package/src/components/ui/badge.tsx +45 -0
  133. package/src/components/ui/breadcrumb.tsx +93 -0
  134. package/src/components/ui/bubble.tsx +119 -0
  135. package/src/components/ui/button-group.tsx +79 -0
  136. package/src/components/ui/button.tsx +65 -0
  137. package/src/components/ui/calendar.tsx +172 -0
  138. package/src/components/ui/canvas.tsx +723 -0
  139. package/src/components/ui/card.tsx +69 -0
  140. package/src/components/ui/carousel.tsx +228 -0
  141. package/src/components/ui/cascader.tsx +754 -0
  142. package/src/components/ui/chart.tsx +303 -0
  143. package/src/components/ui/chat.tsx +544 -0
  144. package/src/components/ui/checkbox.tsx +94 -0
  145. package/src/components/ui/clipboard.tsx +94 -0
  146. package/src/components/ui/collapsible.tsx +32 -0
  147. package/src/components/ui/color-picker.tsx +441 -0
  148. package/src/components/ui/combobox.tsx +400 -0
  149. package/src/components/ui/command.tsx +292 -0
  150. package/src/components/ui/comment-thread.tsx +923 -0
  151. package/src/components/ui/context-menu.tsx +331 -0
  152. package/src/components/ui/data-grid.tsx +1227 -0
  153. package/src/components/ui/data-table.tsx +993 -0
  154. package/src/components/ui/date-input.tsx +103 -0
  155. package/src/components/ui/dialog.tsx +159 -0
  156. package/src/components/ui/direction.tsx +32 -0
  157. package/src/components/ui/drawer.tsx +200 -0
  158. package/src/components/ui/dropdown-menu.tsx +329 -0
  159. package/src/components/ui/editable.tsx +90 -0
  160. package/src/components/ui/empty.tsx +86 -0
  161. package/src/components/ui/field.tsx +218 -0
  162. package/src/components/ui/file-upload.tsx +204 -0
  163. package/src/components/ui/floating-panel.tsx +199 -0
  164. package/src/components/ui/floating-toolbar.tsx +79 -0
  165. package/src/components/ui/format.tsx +22 -0
  166. package/src/components/ui/gantt.tsx +950 -0
  167. package/src/components/ui/hotkeys.tsx +340 -0
  168. package/src/components/ui/hover-card.tsx +83 -0
  169. package/src/components/ui/image-cropper.tsx +100 -0
  170. package/src/components/ui/input-group.tsx +133 -0
  171. package/src/components/ui/input-otp.tsx +82 -0
  172. package/src/components/ui/input.tsx +18 -0
  173. package/src/components/ui/item.tsx +174 -0
  174. package/src/components/ui/json-tree-view.tsx +37 -0
  175. package/src/components/ui/kanban.tsx +884 -0
  176. package/src/components/ui/kbd.tsx +20 -0
  177. package/src/components/ui/label.tsx +30 -0
  178. package/src/components/ui/live-region.tsx +54 -0
  179. package/src/components/ui/marker.tsx +66 -0
  180. package/src/components/ui/marquee.tsx +61 -0
  181. package/src/components/ui/menubar.tsx +456 -0
  182. package/src/components/ui/message.tsx +74 -0
  183. package/src/components/ui/navigation-menu.tsx +202 -0
  184. package/src/components/ui/node-graph.tsx +1723 -0
  185. package/src/components/ui/number-input.tsx +148 -0
  186. package/src/components/ui/pagination.tsx +88 -0
  187. package/src/components/ui/password-input.tsx +104 -0
  188. package/src/components/ui/popconfirm.tsx +149 -0
  189. package/src/components/ui/popover.tsx +126 -0
  190. package/src/components/ui/progress.tsx +114 -0
  191. package/src/components/ui/qr-code.tsx +51 -0
  192. package/src/components/ui/query-builder.tsx +938 -0
  193. package/src/components/ui/radio-group.tsx +108 -0
  194. package/src/components/ui/rating-group.tsx +91 -0
  195. package/src/components/ui/resizable.tsx +41 -0
  196. package/src/components/ui/rich-text-editor.tsx +845 -0
  197. package/src/components/ui/scheduler.tsx +1164 -0
  198. package/src/components/ui/scroll-area.tsx +82 -0
  199. package/src/components/ui/segment-group.tsx +95 -0
  200. package/src/components/ui/select.tsx +354 -0
  201. package/src/components/ui/separator.tsx +32 -0
  202. package/src/components/ui/sheet.tsx +130 -0
  203. package/src/components/ui/sidebar.tsx +665 -0
  204. package/src/components/ui/signature-pad.tsx +112 -0
  205. package/src/components/ui/skeleton.tsx +7 -0
  206. package/src/components/ui/slider.tsx +183 -0
  207. package/src/components/ui/sonner.tsx +37 -0
  208. package/src/components/ui/spinner.tsx +16 -0
  209. package/src/components/ui/steps.tsx +152 -0
  210. package/src/components/ui/swap.tsx +33 -0
  211. package/src/components/ui/switch.tsx +83 -0
  212. package/src/components/ui/table.tsx +72 -0
  213. package/src/components/ui/tabs.tsx +100 -0
  214. package/src/components/ui/tags-input.tsx +153 -0
  215. package/src/components/ui/textarea.tsx +17 -0
  216. package/src/components/ui/timer.tsx +67 -0
  217. package/src/components/ui/toc.tsx +64 -0
  218. package/src/components/ui/toggle-group.tsx +89 -0
  219. package/src/components/ui/toggle.tsx +46 -0
  220. package/src/components/ui/tooltip.tsx +113 -0
  221. package/src/components/ui/tour.tsx +168 -0
  222. package/src/components/ui/transfer-list.tsx +700 -0
  223. package/src/components/ui/tree-select.tsx +638 -0
  224. package/src/components/ui/tree-view.tsx +217 -0
  225. package/src/components/ui/virtual-list.tsx +343 -0
  226. package/src/hooks/use-mobile.ts +19 -0
  227. package/src/lib/controllable.ts +31 -0
  228. package/src/lib/data-table-adapter.ts +67 -0
  229. package/src/lib/drag-preview.ts +39 -0
  230. package/src/lib/form.ts +39 -0
  231. package/src/lib/history.ts +55 -0
  232. package/src/lib/row-layout.ts +81 -0
  233. package/src/lib/table.ts +483 -0
  234. package/src/lib/time.ts +37 -0
  235. package/src/lib/utils.ts +6 -0
  236. package/src/styles/arkcn.css +764 -0
  237. package/src/styles/index.css +3 -0
package/mcp/server.mjs ADDED
@@ -0,0 +1,149 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"
2
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"
3
+ import { z } from "zod"
4
+ import { add, findConflicts, missingDependencies, writeItem } from "../cli/commands.mjs"
5
+ import { createRegistry } from "../cli/registry.mjs"
6
+ import { mergeComponentCss, readConfig, readPackageJson, targetPath } from "../cli/project.mjs"
7
+
8
+ /**
9
+ * MCP server over the same registry the CLI uses. Tools let an agent browse components,
10
+ * read their source and documentation, plan an install, and copy components into a project.
11
+ */
12
+ export async function startServer({ registryBase } = {}) {
13
+ const registry = createRegistry(registryBase ?? process.env.ARKCN_REGISTRY)
14
+ const index = await registry.index()
15
+ const server = new McpServer({ name: "arkcn", version: index.version })
16
+ const text = (value) => ({
17
+ content: [{ type: "text", text: typeof value === "string" ? value : JSON.stringify(value, null, 2) }],
18
+ })
19
+
20
+ server.registerTool(
21
+ "list_components",
22
+ {
23
+ title: "List components",
24
+ description: "Every item in the arkcn registry (name, type, description, dependencies). Types: ui, lib, hook.",
25
+ inputSchema: { type: z.enum(["ui", "lib", "hook", "all"]).default("ui") },
26
+ },
27
+ async ({ type }) => text(index.items.filter((i) => type === "all" || i.type === type))
28
+ )
29
+
30
+ server.registerTool(
31
+ "search_components",
32
+ {
33
+ title: "Search components",
34
+ description: "Find registry items whose name, description, or documentation mentions the query.",
35
+ inputSchema: { query: z.string().min(1) },
36
+ },
37
+ async ({ query }) => {
38
+ const q = query.toLowerCase()
39
+ const hits = []
40
+ for (const entry of index.items) {
41
+ const item = await registry.item(entry.name)
42
+ const hay = `${item.name} ${item.description} ${item.docs ?? ""}`.toLowerCase()
43
+ if (hay.includes(q)) hits.push({ name: item.name, type: item.type, description: item.description })
44
+ }
45
+ return text(hits)
46
+ }
47
+ )
48
+
49
+ server.registerTool(
50
+ "get_component",
51
+ {
52
+ title: "Get component",
53
+ description:
54
+ "Full registry item: source files, packages, toolkit dependencies, CSS fragment, and documentation for one component, lib module, or hook.",
55
+ inputSchema: { name: z.string(), includeSource: z.boolean().default(true) },
56
+ },
57
+ async ({ name, includeSource }) => {
58
+ const item = await registry.item(name)
59
+ if (!item) return text({ error: `Unknown item: ${name}` })
60
+ return text(includeSource ? item : { ...item, files: item.files.map((f) => f.path) })
61
+ }
62
+ )
63
+
64
+ server.registerTool(
65
+ "get_docs",
66
+ {
67
+ title: "Get documentation",
68
+ description: "The documentation section for a component: anatomy, props, data attributes, keyboard, gotchas.",
69
+ inputSchema: { name: z.string() },
70
+ },
71
+ async ({ name }) => {
72
+ const item = await registry.item(name)
73
+ if (!item) return text({ error: `Unknown item: ${name}` })
74
+ return text(item.docs ?? item.description ?? "No documentation.")
75
+ }
76
+ )
77
+
78
+ server.registerTool(
79
+ "plan_install",
80
+ {
81
+ title: "Plan an install",
82
+ description:
83
+ "Without writing anything: which files `add` would write into a project, which exist and differ, and which packages it would install. `cwd` is the project root (must contain arkcn.json).",
84
+ inputSchema: { names: z.array(z.string()).min(1), cwd: z.string() },
85
+ },
86
+ async ({ names, cwd }) => {
87
+ const config = readConfig(cwd)
88
+ if (!config) return text({ error: `No arkcn.json in ${cwd}. Run \`npx @multicomma/arkcn init\` there first.` })
89
+ const { items, missing } = await registry.closure(names)
90
+ return text({
91
+ missing,
92
+ files: items.flatMap((i) => i.files.map((f) => targetPath(config, f.path))),
93
+ conflicts: findConflicts(cwd, config, items),
94
+ packages: missingDependencies(cwd, items),
95
+ css: items.filter((i) => i.css).map((i) => i.name),
96
+ })
97
+ }
98
+ )
99
+
100
+ server.registerTool(
101
+ "add_components",
102
+ {
103
+ title: "Add components",
104
+ description:
105
+ "Copy components (with everything they import) into a project, merge their CSS, and report which packages to install. Does not run the package manager. Existing files that differ are kept unless `overwrite` is true.",
106
+ inputSchema: { names: z.array(z.string()).min(1), cwd: z.string(), overwrite: z.boolean().default(false) },
107
+ },
108
+ async ({ names, cwd, overwrite }) => {
109
+ const config = readConfig(cwd)
110
+ if (!config) return text({ error: `No arkcn.json in ${cwd}. Run \`npx @multicomma/arkcn init\` there first.` })
111
+ if (!readPackageJson(cwd)) return text({ error: `No package.json in ${cwd}` })
112
+ const { items, missing } = await registry.closure(names)
113
+ if (missing.length) return text({ error: `Unknown: ${missing.join(", ")}` })
114
+ const written = []
115
+ const kept = []
116
+ const css = []
117
+ for (const item of items) {
118
+ const r = writeItem(cwd, config, item, { overwrite })
119
+ written.push(...r.written)
120
+ kept.push(...r.kept)
121
+ if (item.css && mergeComponentCss(cwd, config, item.name, item.css) !== "unchanged") css.push(item.name)
122
+ }
123
+ const packages = missingDependencies(cwd, items)
124
+ return text({
125
+ written,
126
+ kept,
127
+ css,
128
+ packages,
129
+ next: packages.length ? `Install: npm install ${packages.join(" ")}` : "No new packages needed.",
130
+ })
131
+ }
132
+ )
133
+
134
+ server.registerResource(
135
+ "registry-index",
136
+ "arkcn://registry/index",
137
+ { title: "Registry index", description: "All arkcn items", mimeType: "application/json" },
138
+ async (uri) => ({
139
+ contents: [{ uri: uri.href, mimeType: "application/json", text: JSON.stringify(index, null, 2) }],
140
+ })
141
+ )
142
+
143
+ const transport = new StdioServerTransport()
144
+ await server.connect(transport)
145
+ return server
146
+ }
147
+
148
+ // `add` is re-exported for parity checks; the CLI remains the interactive path.
149
+ void add
package/package.json ADDED
@@ -0,0 +1,201 @@
1
+ {
2
+ "name": "@multicomma/arkcn",
3
+ "version": "0.1.0",
4
+ "description": "arkcn: shadcn/ui-style components ported to Ark UI, plus data-heavy primitives (data grid, kanban, gantt, scheduler, node graph, ...). Tailwind v4. Ships a copy-into-your-project CLI and an MCP server.",
5
+ "type": "module",
6
+ "license": "MIT",
7
+ "sideEffects": [
8
+ "*.css"
9
+ ],
10
+ "files": [
11
+ "src",
12
+ "bin",
13
+ "cli",
14
+ "mcp",
15
+ "registry",
16
+ "README.md"
17
+ ],
18
+ "exports": {
19
+ "./ui/*": "./src/components/ui/*.tsx",
20
+ "./lib/*": "./src/lib/*.ts",
21
+ "./hooks/*": "./src/hooks/*.ts",
22
+ "./styles.css": "./src/styles/arkcn.css",
23
+ "./src/*": "./src/*",
24
+ "./package.json": "./package.json"
25
+ },
26
+ "scripts": {
27
+ "typecheck": "tsc -p tsconfig.json --noEmit",
28
+ "lint": "oxlint --deny-warnings && node scripts/check-quotes.mjs && node scripts/check-ark-parts.mjs && npm run -s format:check",
29
+ "format": "prettier --write \"src/**/*.{ts,tsx,css}\" \"{scripts,cli,bin,mcp}/**/*.mjs\" \"*.{json,md}\"",
30
+ "format:check": "prettier --check \"src/**/*.{ts,tsx,css}\" \"{scripts,cli,bin,mcp}/**/*.mjs\" \"*.{json,md}\"",
31
+ "check": "npm run -s build:registry && npm run -s typecheck && npm run -s lint && npm run -s test:cli",
32
+ "build:registry": "node scripts/build-registry.mjs",
33
+ "test:cli": "node scripts/test-cli.mjs",
34
+ "prepublishOnly": "npm run -s check"
35
+ },
36
+ "peerDependencies": {
37
+ "react": "^19.2.8",
38
+ "react-dom": "^19.2.8",
39
+ "@ark-ui/react": "^5.39.1",
40
+ "tailwindcss": "^4.3.3",
41
+ "lucide-react": "^1.41.0",
42
+ "clsx": "^2.1.1",
43
+ "tailwind-merge": "^3.6.0",
44
+ "class-variance-authority": "^0.7.1",
45
+ "tw-animate-css": "^1.4.0",
46
+ "@tailwindcss/typography": "^0.5.20",
47
+ "@atlaskit/pragmatic-drag-and-drop": "^3.1.0",
48
+ "@atlaskit/pragmatic-drag-and-drop-auto-scroll": "^3.2.0",
49
+ "@atlaskit/pragmatic-drag-and-drop-hitbox": "^2.2.0",
50
+ "@tiptap/extension-highlight": "^3.31.3",
51
+ "@tiptap/extension-image": "^3.31.3",
52
+ "@tiptap/extension-table": "^3.31.3",
53
+ "@tiptap/extension-table-cell": "^3.31.3",
54
+ "@tiptap/extension-table-header": "^3.31.3",
55
+ "@tiptap/extension-table-row": "^3.31.3",
56
+ "@tiptap/extension-task-item": "^3.31.3",
57
+ "@tiptap/extension-task-list": "^3.31.3",
58
+ "@tiptap/extension-text-align": "^3.31.3",
59
+ "@tiptap/extensions": "^3.31.3",
60
+ "@tiptap/pm": "^3.31.3",
61
+ "@tiptap/react": "^3.31.3",
62
+ "@tiptap/starter-kit": "^3.31.3",
63
+ "date-fns": "^4.4.0",
64
+ "embla-carousel-react": "^8.6.0",
65
+ "input-otp": "^1.5.0",
66
+ "next-themes": "^0.4.6",
67
+ "react-day-picker": "^10.0.1",
68
+ "react-resizable-panels": "^4.12.3",
69
+ "recharts": "^3.8.0",
70
+ "sonner": "^2.0.8"
71
+ },
72
+ "peerDependenciesMeta": {
73
+ "@atlaskit/pragmatic-drag-and-drop": {
74
+ "optional": true
75
+ },
76
+ "@atlaskit/pragmatic-drag-and-drop-auto-scroll": {
77
+ "optional": true
78
+ },
79
+ "@atlaskit/pragmatic-drag-and-drop-hitbox": {
80
+ "optional": true
81
+ },
82
+ "@tiptap/extension-highlight": {
83
+ "optional": true
84
+ },
85
+ "@tiptap/extension-image": {
86
+ "optional": true
87
+ },
88
+ "@tiptap/extension-table": {
89
+ "optional": true
90
+ },
91
+ "@tiptap/extension-table-cell": {
92
+ "optional": true
93
+ },
94
+ "@tiptap/extension-table-header": {
95
+ "optional": true
96
+ },
97
+ "@tiptap/extension-table-row": {
98
+ "optional": true
99
+ },
100
+ "@tiptap/extension-task-item": {
101
+ "optional": true
102
+ },
103
+ "@tiptap/extension-task-list": {
104
+ "optional": true
105
+ },
106
+ "@tiptap/extension-text-align": {
107
+ "optional": true
108
+ },
109
+ "@tiptap/extensions": {
110
+ "optional": true
111
+ },
112
+ "@tiptap/pm": {
113
+ "optional": true
114
+ },
115
+ "@tiptap/react": {
116
+ "optional": true
117
+ },
118
+ "@tiptap/starter-kit": {
119
+ "optional": true
120
+ },
121
+ "date-fns": {
122
+ "optional": true
123
+ },
124
+ "embla-carousel-react": {
125
+ "optional": true
126
+ },
127
+ "input-otp": {
128
+ "optional": true
129
+ },
130
+ "next-themes": {
131
+ "optional": true
132
+ },
133
+ "react-day-picker": {
134
+ "optional": true
135
+ },
136
+ "react-resizable-panels": {
137
+ "optional": true
138
+ },
139
+ "recharts": {
140
+ "optional": true
141
+ },
142
+ "sonner": {
143
+ "optional": true
144
+ }
145
+ },
146
+ "devDependencies": {
147
+ "react": "^19.2.8",
148
+ "react-dom": "^19.2.8",
149
+ "@ark-ui/react": "^5.39.1",
150
+ "tailwindcss": "^4.3.3",
151
+ "lucide-react": "^1.41.0",
152
+ "clsx": "^2.1.1",
153
+ "tailwind-merge": "^3.6.0",
154
+ "class-variance-authority": "^0.7.1",
155
+ "tw-animate-css": "^1.4.0",
156
+ "@tailwindcss/typography": "^0.5.20",
157
+ "@atlaskit/pragmatic-drag-and-drop": "^3.1.0",
158
+ "@atlaskit/pragmatic-drag-and-drop-auto-scroll": "^3.2.0",
159
+ "@atlaskit/pragmatic-drag-and-drop-hitbox": "^2.2.0",
160
+ "@tiptap/extension-highlight": "^3.31.3",
161
+ "@tiptap/extension-image": "^3.31.3",
162
+ "@tiptap/extension-table": "^3.31.3",
163
+ "@tiptap/extension-table-cell": "^3.31.3",
164
+ "@tiptap/extension-table-header": "^3.31.3",
165
+ "@tiptap/extension-table-row": "^3.31.3",
166
+ "@tiptap/extension-task-item": "^3.31.3",
167
+ "@tiptap/extension-task-list": "^3.31.3",
168
+ "@tiptap/extension-text-align": "^3.31.3",
169
+ "@tiptap/extensions": "^3.31.3",
170
+ "@tiptap/pm": "^3.31.3",
171
+ "@tiptap/react": "^3.31.3",
172
+ "@tiptap/starter-kit": "^3.31.3",
173
+ "date-fns": "^4.4.0",
174
+ "embla-carousel-react": "^8.6.0",
175
+ "input-otp": "^1.5.0",
176
+ "next-themes": "^0.4.6",
177
+ "react-day-picker": "^10.0.1",
178
+ "react-resizable-panels": "^4.12.3",
179
+ "recharts": "^3.8.0",
180
+ "sonner": "^2.0.8",
181
+ "@types/node": "^24.13.3",
182
+ "@types/react": "^19.2.18",
183
+ "@types/react-dom": "^19.2.4",
184
+ "eslint-plugin-better-tailwindcss": "^4.7.0",
185
+ "oxlint": "^1.79.0",
186
+ "prettier": "^3.9.6",
187
+ "prettier-plugin-tailwindcss": "^0.8.1",
188
+ "typescript": "~6.0.2"
189
+ },
190
+ "bin": {
191
+ "arkcn": "bin/arkcn.mjs"
192
+ },
193
+ "dependencies": {
194
+ "@modelcontextprotocol/sdk": "^1.30.0",
195
+ "zod": "^4.5.4"
196
+ },
197
+ "repository": {
198
+ "type": "git",
199
+ "url": "git+https://github.com/itsdanreed/arkcn.git"
200
+ }
201
+ }