ikanban-web 0.2.0 → 0.2.2

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 (100) hide show
  1. package/dist/assets/{ghostty-web-BkTBr6Qp.js → ghostty-web-DC9h7yp6.js} +1 -1
  2. package/dist/assets/{home-CbMdbws_.js → home-B2bEEt-Q.js} +1 -1
  3. package/dist/assets/{index-DvCClLZk.js → index-BM0fG0_S.js} +1 -1
  4. package/dist/assets/{session-mSsgwdFK.js → session-CFBQK6ra.js} +3 -3
  5. package/dist/index.html +1 -1
  6. package/package.json +3 -3
  7. package/src/app.tsx +7 -7
  8. package/src/components/dialog-connect-provider.tsx +10 -10
  9. package/src/components/dialog-custom-provider.tsx +7 -7
  10. package/src/components/dialog-edit-project.tsx +7 -7
  11. package/src/components/dialog-fork.tsx +5 -5
  12. package/src/components/dialog-manage-models.tsx +6 -6
  13. package/src/components/dialog-release-notes.tsx +3 -3
  14. package/src/components/dialog-select-directory.tsx +6 -6
  15. package/src/components/dialog-select-file.tsx +8 -8
  16. package/src/components/dialog-select-mcp.tsx +3 -3
  17. package/src/components/dialog-select-model-unpaid.tsx +7 -7
  18. package/src/components/dialog-select-model.tsx +7 -7
  19. package/src/components/dialog-select-provider.tsx +5 -5
  20. package/src/components/dialog-select-server.tsx +9 -9
  21. package/src/components/dialog-settings.tsx +3 -3
  22. package/src/components/file-tree.test.ts +4 -4
  23. package/src/components/file-tree.tsx +3 -3
  24. package/src/components/prompt-input/attachments.ts +1 -1
  25. package/src/components/prompt-input/build-request-parts.ts +1 -1
  26. package/src/components/prompt-input/context-items.tsx +4 -4
  27. package/src/components/prompt-input/drag-overlay.tsx +1 -1
  28. package/src/components/prompt-input/image-attachments.tsx +1 -1
  29. package/src/components/prompt-input/slash-popover.tsx +3 -3
  30. package/src/components/prompt-input/submit.test.ts +2 -2
  31. package/src/components/prompt-input/submit.ts +2 -2
  32. package/src/components/prompt-input.tsx +12 -12
  33. package/src/components/server/server-row.tsx +1 -1
  34. package/src/components/session/session-context-tab.tsx +8 -8
  35. package/src/components/session/session-header.tsx +12 -12
  36. package/src/components/session/session-new-view.tsx +2 -2
  37. package/src/components/session/session-sortable-tab.tsx +5 -5
  38. package/src/components/session/session-sortable-terminal-tab.tsx +4 -4
  39. package/src/components/session-context-usage.tsx +3 -3
  40. package/src/components/settings-general.tsx +7 -7
  41. package/src/components/settings-keybinds.tsx +5 -5
  42. package/src/components/settings-models.tsx +6 -6
  43. package/src/components/settings-permissions.tsx +2 -2
  44. package/src/components/settings-providers.tsx +5 -5
  45. package/src/components/status-popover.tsx +7 -7
  46. package/src/components/terminal.tsx +2 -2
  47. package/src/components/titlebar.tsx +5 -5
  48. package/src/context/command.tsx +2 -2
  49. package/src/context/comments.test.ts +1 -1
  50. package/src/context/comments.tsx +1 -1
  51. package/src/context/file.tsx +3 -3
  52. package/src/context/global-sdk.tsx +1 -1
  53. package/src/context/global-sync/bootstrap.ts +3 -3
  54. package/src/context/global-sync/event-reducer.ts +1 -1
  55. package/src/context/global-sync.tsx +2 -2
  56. package/src/context/highlights.tsx +2 -2
  57. package/src/context/language.tsx +18 -18
  58. package/src/context/layout.tsx +1 -1
  59. package/src/context/local.tsx +2 -2
  60. package/src/context/models.tsx +1 -1
  61. package/src/context/notification.tsx +3 -3
  62. package/src/context/permission-auto-respond.test.ts +1 -1
  63. package/src/context/permission-auto-respond.ts +1 -1
  64. package/src/context/permission.tsx +1 -1
  65. package/src/context/platform.tsx +1 -1
  66. package/src/context/prompt.tsx +2 -2
  67. package/src/context/sdk.tsx +1 -1
  68. package/src/context/server.tsx +1 -1
  69. package/src/context/settings.tsx +1 -1
  70. package/src/context/sync.tsx +3 -3
  71. package/src/context/terminal.test.ts +1 -1
  72. package/src/context/terminal.tsx +1 -1
  73. package/src/entry.tsx +1 -1
  74. package/src/index.css +1 -1
  75. package/src/pages/directory-layout.tsx +2 -2
  76. package/src/pages/error.tsx +4 -4
  77. package/src/pages/home.tsx +5 -5
  78. package/src/pages/layout/helpers.ts +1 -1
  79. package/src/pages/layout/inline-editor.tsx +1 -1
  80. package/src/pages/layout/sidebar-items.tsx +10 -10
  81. package/src/pages/layout/sidebar-project.tsx +7 -7
  82. package/src/pages/layout/sidebar-shell.tsx +2 -2
  83. package/src/pages/layout/sidebar-workspace.tsx +9 -9
  84. package/src/pages/layout.tsx +14 -14
  85. package/src/pages/session/composer/session-composer-region.tsx +1 -1
  86. package/src/pages/session/composer/session-composer-state.ts +1 -1
  87. package/src/pages/session/composer/session-permission-dock.tsx +3 -3
  88. package/src/pages/session/composer/session-question-dock.tsx +4 -4
  89. package/src/pages/session/composer/session-todo-dock.tsx +7 -7
  90. package/src/pages/session/file-tabs.tsx +10 -10
  91. package/src/pages/session/message-timeline.tsx +13 -13
  92. package/src/pages/session/review-tab.tsx +2 -2
  93. package/src/pages/session/session-mobile-tabs.tsx +1 -1
  94. package/src/pages/session/session-side-panel.tsx +6 -6
  95. package/src/pages/session/terminal-panel.tsx +4 -4
  96. package/src/pages/session/use-session-commands.tsx +3 -3
  97. package/src/pages/session.tsx +6 -6
  98. package/src/utils/base64.ts +1 -1
  99. package/src/utils/persist.ts +1 -1
  100. package/src/utils/sound.ts +45 -45
package/dist/index.html CHANGED
@@ -14,7 +14,7 @@
14
14
  <meta property="og:image" content="/social-share.png" />
15
15
  <meta property="twitter:image" content="/social-share.png" />
16
16
  <script id="oc-theme-preload-script" src="/oc-theme-preload.js"></script>
17
- <script type="module" crossorigin src="/assets/index-DvCClLZk.js"></script>
17
+ <script type="module" crossorigin src="/assets/index-BM0fG0_S.js"></script>
18
18
  <link rel="stylesheet" crossorigin href="/assets/index-CLdyKsqF.css">
19
19
  </head>
20
20
  <body class="antialiased overscroll-none text-12-regular overflow-hidden">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ikanban-web",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "iKanban web app",
5
5
  "private": false,
6
6
  "type": "module",
@@ -35,8 +35,6 @@
35
35
  "dependencies": {
36
36
  "@kobalte/core": "0.13.11",
37
37
  "@opencode-ai/sdk": "^1.2.16",
38
- "@opencode-ai/ui": "workspace:*",
39
- "@opencode-ai/util": "workspace:*",
40
38
  "@shikijs/transformers": "4.0.1",
41
39
  "@solid-primitives/active-element": "2.1.5",
42
40
  "@solid-primitives/audio": "1.4.4",
@@ -73,6 +71,8 @@
73
71
  "@types/luxon": "3.7.1",
74
72
  "@types/node": "25.3.3",
75
73
  "@typescript/native-preview": "7.0.0-dev.20260304.1",
74
+ "ikanban-ui": "workspace:*",
75
+ "ikanban-utils": "workspace:*",
76
76
  "typescript": "5.9.3",
77
77
  "vite": "7.3.1",
78
78
  "vite-plugin-icons-spritesheet": "3.0.1",
package/src/app.tsx CHANGED
@@ -1,11 +1,11 @@
1
1
  import "@/index.css"
2
- import { File } from "@opencode-ai/ui/file"
3
- import { I18nProvider } from "@opencode-ai/ui/context"
4
- import { DialogProvider } from "@opencode-ai/ui/context/dialog"
5
- import { FileComponentProvider } from "@opencode-ai/ui/context/file"
6
- import { MarkedProvider } from "@opencode-ai/ui/context/marked"
7
- import { Font } from "@opencode-ai/ui/font"
8
- import { ThemeProvider } from "@opencode-ai/ui/theme"
2
+ import { File } from "ikanban-ui/file"
3
+ import { I18nProvider } from "ikanban-ui/context"
4
+ import { DialogProvider } from "ikanban-ui/context/dialog"
5
+ import { FileComponentProvider } from "ikanban-ui/context/file"
6
+ import { MarkedProvider } from "ikanban-ui/context/marked"
7
+ import { Font } from "ikanban-ui/font"
8
+ import { ThemeProvider } from "ikanban-ui/theme"
9
9
  import { MetaProvider } from "@solidjs/meta"
10
10
  import { Navigate, Route, Router } from "@solidjs/router"
11
11
  import { ErrorBoundary, type JSX, lazy, type ParentProps, Show, Suspense } from "solid-js"
@@ -1,14 +1,14 @@
1
1
  import type { ProviderAuthAuthorization } from "@opencode-ai/sdk/v2/client"
2
- import { Button } from "@opencode-ai/ui/button"
3
- import { useDialog } from "@opencode-ai/ui/context/dialog"
4
- import { Dialog } from "@opencode-ai/ui/dialog"
5
- import { Icon } from "@opencode-ai/ui/icon"
6
- import { IconButton } from "@opencode-ai/ui/icon-button"
7
- import { List, type ListRef } from "@opencode-ai/ui/list"
8
- import { ProviderIcon } from "@opencode-ai/ui/provider-icon"
9
- import { Spinner } from "@opencode-ai/ui/spinner"
10
- import { TextField } from "@opencode-ai/ui/text-field"
11
- import { showToast } from "@opencode-ai/ui/toast"
2
+ import { Button } from "ikanban-ui/button"
3
+ import { useDialog } from "ikanban-ui/context/dialog"
4
+ import { Dialog } from "ikanban-ui/dialog"
5
+ import { Icon } from "ikanban-ui/icon"
6
+ import { IconButton } from "ikanban-ui/icon-button"
7
+ import { List, type ListRef } from "ikanban-ui/list"
8
+ import { ProviderIcon } from "ikanban-ui/provider-icon"
9
+ import { Spinner } from "ikanban-ui/spinner"
10
+ import { TextField } from "ikanban-ui/text-field"
11
+ import { showToast } from "ikanban-ui/toast"
12
12
  import { createMemo, Match, onCleanup, onMount, Switch } from "solid-js"
13
13
  import { createStore, produce } from "solid-js/store"
14
14
  import { Link } from "@/components/link"
@@ -1,10 +1,10 @@
1
- import { Button } from "@opencode-ai/ui/button"
2
- import { useDialog } from "@opencode-ai/ui/context/dialog"
3
- import { Dialog } from "@opencode-ai/ui/dialog"
4
- import { IconButton } from "@opencode-ai/ui/icon-button"
5
- import { ProviderIcon } from "@opencode-ai/ui/provider-icon"
6
- import { TextField } from "@opencode-ai/ui/text-field"
7
- import { showToast } from "@opencode-ai/ui/toast"
1
+ import { Button } from "ikanban-ui/button"
2
+ import { useDialog } from "ikanban-ui/context/dialog"
3
+ import { Dialog } from "ikanban-ui/dialog"
4
+ import { IconButton } from "ikanban-ui/icon-button"
5
+ import { ProviderIcon } from "ikanban-ui/provider-icon"
6
+ import { TextField } from "ikanban-ui/text-field"
7
+ import { showToast } from "ikanban-ui/toast"
8
8
  import { For } from "solid-js"
9
9
  import { createStore } from "solid-js/store"
10
10
  import { Link } from "@/components/link"
@@ -1,15 +1,15 @@
1
- import { Button } from "@opencode-ai/ui/button"
2
- import { useDialog } from "@opencode-ai/ui/context/dialog"
3
- import { Dialog } from "@opencode-ai/ui/dialog"
4
- import { TextField } from "@opencode-ai/ui/text-field"
5
- import { Icon } from "@opencode-ai/ui/icon"
1
+ import { Button } from "ikanban-ui/button"
2
+ import { useDialog } from "ikanban-ui/context/dialog"
3
+ import { Dialog } from "ikanban-ui/dialog"
4
+ import { TextField } from "ikanban-ui/text-field"
5
+ import { Icon } from "ikanban-ui/icon"
6
6
  import { createMemo, For, Show } from "solid-js"
7
7
  import { createStore } from "solid-js/store"
8
8
  import { useGlobalSDK } from "@/context/global-sdk"
9
9
  import { useGlobalSync } from "@/context/global-sync"
10
10
  import { type LocalProject, getAvatarColors } from "@/context/layout"
11
- import { getFilename } from "@opencode-ai/util/path"
12
- import { Avatar } from "@opencode-ai/ui/avatar"
11
+ import { getFilename } from "ikanban-utils/path"
12
+ import { Avatar } from "ikanban-ui/avatar"
13
13
  import { useLanguage } from "@/context/language"
14
14
 
15
15
  const AVATAR_COLOR_KEYS = ["pink", "mint", "orange", "purple", "cyan", "lime"] as const
@@ -3,13 +3,13 @@ import { useNavigate, useParams } from "@solidjs/router"
3
3
  import { useSync } from "@/context/sync"
4
4
  import { useSDK } from "@/context/sdk"
5
5
  import { usePrompt } from "@/context/prompt"
6
- import { useDialog } from "@opencode-ai/ui/context/dialog"
7
- import { Dialog } from "@opencode-ai/ui/dialog"
8
- import { List } from "@opencode-ai/ui/list"
9
- import { showToast } from "@opencode-ai/ui/toast"
6
+ import { useDialog } from "ikanban-ui/context/dialog"
7
+ import { Dialog } from "ikanban-ui/dialog"
8
+ import { List } from "ikanban-ui/list"
9
+ import { showToast } from "ikanban-ui/toast"
10
10
  import { extractPromptFromParts } from "@/utils/prompt"
11
11
  import type { TextPart as SDKTextPart } from "@opencode-ai/sdk/v2/client"
12
- import { base64Encode } from "@opencode-ai/util/encode"
12
+ import { base64Encode } from "ikanban-utils/encode"
13
13
  import { useLanguage } from "@/context/language"
14
14
 
15
15
  interface ForkableMessage {
@@ -1,13 +1,13 @@
1
- import { Dialog } from "@opencode-ai/ui/dialog"
2
- import { List } from "@opencode-ai/ui/list"
3
- import { Switch } from "@opencode-ai/ui/switch"
4
- import { Tooltip } from "@opencode-ai/ui/tooltip"
5
- import { Button } from "@opencode-ai/ui/button"
1
+ import { Dialog } from "ikanban-ui/dialog"
2
+ import { List } from "ikanban-ui/list"
3
+ import { Switch } from "ikanban-ui/switch"
4
+ import { Tooltip } from "ikanban-ui/tooltip"
5
+ import { Button } from "ikanban-ui/button"
6
6
  import type { Component } from "solid-js"
7
7
  import { useLocal } from "@/context/local"
8
8
  import { popularProviders } from "@/hooks/use-providers"
9
9
  import { useLanguage } from "@/context/language"
10
- import { useDialog } from "@opencode-ai/ui/context/dialog"
10
+ import { useDialog } from "ikanban-ui/context/dialog"
11
11
  import { DialogSelectProvider } from "./dialog-select-provider"
12
12
 
13
13
  export const DialogManageModels: Component = () => {
@@ -1,7 +1,7 @@
1
1
  import { createSignal } from "solid-js"
2
- import { Dialog } from "@opencode-ai/ui/dialog"
3
- import { Button } from "@opencode-ai/ui/button"
4
- import { useDialog } from "@opencode-ai/ui/context/dialog"
2
+ import { Dialog } from "ikanban-ui/dialog"
3
+ import { Button } from "ikanban-ui/button"
4
+ import { useDialog } from "ikanban-ui/context/dialog"
5
5
  import { useLanguage } from "@/context/language"
6
6
  import { useSettings } from "@/context/settings"
7
7
 
@@ -1,9 +1,9 @@
1
- import { useDialog } from "@opencode-ai/ui/context/dialog"
2
- import { Dialog } from "@opencode-ai/ui/dialog"
3
- import { FileIcon } from "@opencode-ai/ui/file-icon"
4
- import { List } from "@opencode-ai/ui/list"
5
- import type { ListRef } from "@opencode-ai/ui/list"
6
- import { getDirectory, getFilename } from "@opencode-ai/util/path"
1
+ import { useDialog } from "ikanban-ui/context/dialog"
2
+ import { Dialog } from "ikanban-ui/dialog"
3
+ import { FileIcon } from "ikanban-ui/file-icon"
4
+ import { List } from "ikanban-ui/list"
5
+ import type { ListRef } from "ikanban-ui/list"
6
+ import { getDirectory, getFilename } from "ikanban-utils/path"
7
7
  import fuzzysort from "fuzzysort"
8
8
  import { createMemo, createResource, createSignal } from "solid-js"
9
9
  import { useGlobalSDK } from "@/context/global-sdk"
@@ -1,11 +1,11 @@
1
- import { useDialog } from "@opencode-ai/ui/context/dialog"
2
- import { Dialog } from "@opencode-ai/ui/dialog"
3
- import { FileIcon } from "@opencode-ai/ui/file-icon"
4
- import { Icon } from "@opencode-ai/ui/icon"
5
- import { Keybind } from "@opencode-ai/ui/keybind"
6
- import { List } from "@opencode-ai/ui/list"
7
- import { base64Encode } from "@opencode-ai/util/encode"
8
- import { getDirectory, getFilename } from "@opencode-ai/util/path"
1
+ import { useDialog } from "ikanban-ui/context/dialog"
2
+ import { Dialog } from "ikanban-ui/dialog"
3
+ import { FileIcon } from "ikanban-ui/file-icon"
4
+ import { Icon } from "ikanban-ui/icon"
5
+ import { Keybind } from "ikanban-ui/keybind"
6
+ import { List } from "ikanban-ui/list"
7
+ import { base64Encode } from "ikanban-utils/encode"
8
+ import { getDirectory, getFilename } from "ikanban-utils/path"
9
9
  import { useNavigate, useParams } from "@solidjs/router"
10
10
  import { createMemo, createSignal, Match, onCleanup, Show, Switch } from "solid-js"
11
11
  import { formatKeybind, useCommand, type CommandOption } from "@/context/command"
@@ -1,9 +1,9 @@
1
1
  import { Component, createMemo, createSignal, Show } from "solid-js"
2
2
  import { useSync } from "@/context/sync"
3
3
  import { useSDK } from "@/context/sdk"
4
- import { Dialog } from "@opencode-ai/ui/dialog"
5
- import { List } from "@opencode-ai/ui/list"
6
- import { Switch } from "@opencode-ai/ui/switch"
4
+ import { Dialog } from "ikanban-ui/dialog"
5
+ import { List } from "ikanban-ui/list"
6
+ import { Switch } from "ikanban-ui/switch"
7
7
  import { useLanguage } from "@/context/language"
8
8
 
9
9
  const statusLabels = {
@@ -1,10 +1,10 @@
1
- import { Button } from "@opencode-ai/ui/button"
2
- import { useDialog } from "@opencode-ai/ui/context/dialog"
3
- import { Dialog } from "@opencode-ai/ui/dialog"
4
- import { List, type ListRef } from "@opencode-ai/ui/list"
5
- import { ProviderIcon } from "@opencode-ai/ui/provider-icon"
6
- import { Tag } from "@opencode-ai/ui/tag"
7
- import { Tooltip } from "@opencode-ai/ui/tooltip"
1
+ import { Button } from "ikanban-ui/button"
2
+ import { useDialog } from "ikanban-ui/context/dialog"
3
+ import { Dialog } from "ikanban-ui/dialog"
4
+ import { List, type ListRef } from "ikanban-ui/list"
5
+ import { ProviderIcon } from "ikanban-ui/provider-icon"
6
+ import { Tag } from "ikanban-ui/tag"
7
+ import { Tooltip } from "ikanban-ui/tooltip"
8
8
  import { type Component, Show } from "solid-js"
9
9
  import { useLocal } from "@/context/local"
10
10
  import { popularProviders, useProviders } from "@/hooks/use-providers"
@@ -2,14 +2,14 @@ import { Popover as Kobalte } from "@kobalte/core/popover"
2
2
  import { Component, ComponentProps, createMemo, JSX, Show, ValidComponent } from "solid-js"
3
3
  import { createStore } from "solid-js/store"
4
4
  import { useLocal } from "@/context/local"
5
- import { useDialog } from "@opencode-ai/ui/context/dialog"
5
+ import { useDialog } from "ikanban-ui/context/dialog"
6
6
  import { popularProviders } from "@/hooks/use-providers"
7
- import { Button } from "@opencode-ai/ui/button"
8
- import { IconButton } from "@opencode-ai/ui/icon-button"
9
- import { Tag } from "@opencode-ai/ui/tag"
10
- import { Dialog } from "@opencode-ai/ui/dialog"
11
- import { List } from "@opencode-ai/ui/list"
12
- import { Tooltip } from "@opencode-ai/ui/tooltip"
7
+ import { Button } from "ikanban-ui/button"
8
+ import { IconButton } from "ikanban-ui/icon-button"
9
+ import { Tag } from "ikanban-ui/tag"
10
+ import { Dialog } from "ikanban-ui/dialog"
11
+ import { List } from "ikanban-ui/list"
12
+ import { Tooltip } from "ikanban-ui/tooltip"
13
13
  import { DialogSelectProvider } from "./dialog-select-provider"
14
14
  import { DialogManageModels } from "./dialog-manage-models"
15
15
  import { ModelTooltip } from "./model-tooltip"
@@ -1,10 +1,10 @@
1
1
  import { Component, Show } from "solid-js"
2
- import { useDialog } from "@opencode-ai/ui/context/dialog"
2
+ import { useDialog } from "ikanban-ui/context/dialog"
3
3
  import { popularProviders, useProviders } from "@/hooks/use-providers"
4
- import { Dialog } from "@opencode-ai/ui/dialog"
5
- import { List } from "@opencode-ai/ui/list"
6
- import { Tag } from "@opencode-ai/ui/tag"
7
- import { ProviderIcon } from "@opencode-ai/ui/provider-icon"
4
+ import { Dialog } from "ikanban-ui/dialog"
5
+ import { List } from "ikanban-ui/list"
6
+ import { Tag } from "ikanban-ui/tag"
7
+ import { ProviderIcon } from "ikanban-ui/provider-icon"
8
8
  import { DialogConnectProvider } from "./dialog-connect-provider"
9
9
  import { useLanguage } from "@/context/language"
10
10
  import { DialogCustomProvider } from "./dialog-custom-provider"
@@ -1,12 +1,12 @@
1
- import { Button } from "@opencode-ai/ui/button"
2
- import { useDialog } from "@opencode-ai/ui/context/dialog"
3
- import { Dialog } from "@opencode-ai/ui/dialog"
4
- import { DropdownMenu } from "@opencode-ai/ui/dropdown-menu"
5
- import { Icon } from "@opencode-ai/ui/icon"
6
- import { IconButton } from "@opencode-ai/ui/icon-button"
7
- import { List } from "@opencode-ai/ui/list"
8
- import { TextField } from "@opencode-ai/ui/text-field"
9
- import { showToast } from "@opencode-ai/ui/toast"
1
+ import { Button } from "ikanban-ui/button"
2
+ import { useDialog } from "ikanban-ui/context/dialog"
3
+ import { Dialog } from "ikanban-ui/dialog"
4
+ import { DropdownMenu } from "ikanban-ui/dropdown-menu"
5
+ import { Icon } from "ikanban-ui/icon"
6
+ import { IconButton } from "ikanban-ui/icon-button"
7
+ import { List } from "ikanban-ui/list"
8
+ import { TextField } from "ikanban-ui/text-field"
9
+ import { showToast } from "ikanban-ui/toast"
10
10
  import { useNavigate } from "@solidjs/router"
11
11
  import { createEffect, createMemo, createResource, onCleanup, Show } from "solid-js"
12
12
  import { createStore, reconcile } from "solid-js/store"
@@ -1,7 +1,7 @@
1
1
  import { Component } from "solid-js"
2
- import { Dialog } from "@opencode-ai/ui/dialog"
3
- import { Tabs } from "@opencode-ai/ui/tabs"
4
- import { Icon } from "@opencode-ai/ui/icon"
2
+ import { Dialog } from "ikanban-ui/dialog"
3
+ import { Tabs } from "ikanban-ui/tabs"
4
+ import { Icon } from "ikanban-ui/icon"
5
5
  import { useLanguage } from "@/context/language"
6
6
  import { usePlatform } from "@/context/platform"
7
7
  import { SettingsGeneral } from "./settings-general"
@@ -20,15 +20,15 @@ beforeAll(async () => {
20
20
  },
21
21
  }),
22
22
  }))
23
- mock.module("@opencode-ai/ui/collapsible", () => ({
23
+ mock.module("ikanban-ui/collapsible", () => ({
24
24
  Collapsible: {
25
25
  Trigger: (props: { children?: unknown }) => props.children,
26
26
  Content: (props: { children?: unknown }) => props.children,
27
27
  },
28
28
  }))
29
- mock.module("@opencode-ai/ui/file-icon", () => ({ FileIcon: () => null }))
30
- mock.module("@opencode-ai/ui/icon", () => ({ Icon: () => null }))
31
- mock.module("@opencode-ai/ui/tooltip", () => ({ Tooltip: (props: { children?: unknown }) => props.children }))
29
+ mock.module("ikanban-ui/file-icon", () => ({ FileIcon: () => null }))
30
+ mock.module("ikanban-ui/icon", () => ({ Icon: () => null }))
31
+ mock.module("ikanban-ui/tooltip", () => ({ Tooltip: (props: { children?: unknown }) => props.children }))
32
32
  const mod = await import("./file-tree")
33
33
  shouldListRoot = mod.shouldListRoot
34
34
  shouldListExpanded = mod.shouldListExpanded
@@ -1,8 +1,8 @@
1
1
  import { useFile } from "@/context/file"
2
2
  import { encodeFilePath } from "@/context/file/path"
3
- import { Collapsible } from "@opencode-ai/ui/collapsible"
4
- import { FileIcon } from "@opencode-ai/ui/file-icon"
5
- import { Icon } from "@opencode-ai/ui/icon"
3
+ import { Collapsible } from "ikanban-ui/collapsible"
4
+ import { FileIcon } from "ikanban-ui/file-icon"
5
+ import { Icon } from "ikanban-ui/icon"
6
6
  import {
7
7
  createEffect,
8
8
  createMemo,
@@ -1,5 +1,5 @@
1
1
  import { onCleanup, onMount } from "solid-js"
2
- import { showToast } from "@opencode-ai/ui/toast"
2
+ import { showToast } from "ikanban-ui/toast"
3
3
  import { usePrompt, type ContentPart, type ImageAttachmentPart } from "@/context/prompt"
4
4
  import { useLanguage } from "@/context/language"
5
5
  import { uuid } from "@/utils/uuid"
@@ -1,4 +1,4 @@
1
- import { getFilename } from "@opencode-ai/util/path"
1
+ import { getFilename } from "ikanban-utils/path"
2
2
  import { type AgentPartInput, type FilePartInput, type Part, type TextPartInput } from "@opencode-ai/sdk/v2/client"
3
3
  import type { FileSelection } from "@/context/file"
4
4
  import { encodeFilePath } from "@/context/file/path"
@@ -1,8 +1,8 @@
1
1
  import { Component, For, Show } from "solid-js"
2
- import { FileIcon } from "@opencode-ai/ui/file-icon"
3
- import { IconButton } from "@opencode-ai/ui/icon-button"
4
- import { Tooltip } from "@opencode-ai/ui/tooltip"
5
- import { getDirectory, getFilename, getFilenameTruncated } from "@opencode-ai/util/path"
2
+ import { FileIcon } from "ikanban-ui/file-icon"
3
+ import { IconButton } from "ikanban-ui/icon-button"
4
+ import { Tooltip } from "ikanban-ui/tooltip"
5
+ import { getDirectory, getFilename, getFilenameTruncated } from "ikanban-utils/path"
6
6
  import type { ContextItem } from "@/context/prompt"
7
7
 
8
8
  type PromptContextItem = ContextItem & { key: string }
@@ -1,5 +1,5 @@
1
1
  import { Component, Show } from "solid-js"
2
- import { Icon } from "@opencode-ai/ui/icon"
2
+ import { Icon } from "ikanban-ui/icon"
3
3
 
4
4
  type PromptDragOverlayProps = {
5
5
  type: "image" | "@mention" | null
@@ -1,5 +1,5 @@
1
1
  import { Component, For, Show } from "solid-js"
2
- import { Icon } from "@opencode-ai/ui/icon"
2
+ import { Icon } from "ikanban-ui/icon"
3
3
  import type { ImageAttachmentPart } from "@/context/prompt"
4
4
 
5
5
  type PromptImageAttachmentsProps = {
@@ -1,7 +1,7 @@
1
1
  import { Component, For, Match, Show, Switch } from "solid-js"
2
- import { FileIcon } from "@opencode-ai/ui/file-icon"
3
- import { Icon } from "@opencode-ai/ui/icon"
4
- import { getDirectory, getFilename } from "@opencode-ai/util/path"
2
+ import { FileIcon } from "ikanban-ui/file-icon"
3
+ import { Icon } from "ikanban-ui/icon"
4
+ import { getDirectory, getFilename } from "ikanban-utils/path"
5
5
 
6
6
  export type AtOption =
7
7
  | { type: "agent"; name: string; display: string }
@@ -50,11 +50,11 @@ beforeAll(async () => {
50
50
  },
51
51
  }))
52
52
 
53
- mock.module("@opencode-ai/ui/toast", () => ({
53
+ mock.module("ikanban-ui/toast", () => ({
54
54
  showToast: () => 0,
55
55
  }))
56
56
 
57
- mock.module("@opencode-ai/util/encode", () => ({
57
+ mock.module("ikanban-utils/encode", () => ({
58
58
  base64Encode: (value: string) => value,
59
59
  }))
60
60
 
@@ -1,6 +1,6 @@
1
1
  import type { Message } from "@opencode-ai/sdk/v2/client"
2
- import { showToast } from "@opencode-ai/ui/toast"
3
- import { base64Encode } from "@opencode-ai/util/encode"
2
+ import { showToast } from "ikanban-ui/toast"
3
+ import { base64Encode } from "ikanban-utils/encode"
4
4
  import { useNavigate, useParams } from "@solidjs/router"
5
5
  import type { Accessor } from "solid-js"
6
6
  import type { FileSelection } from "@/context/file"
@@ -1,5 +1,5 @@
1
- import { useFilteredList } from "@opencode-ai/ui/hooks"
2
- import { useSpring } from "@opencode-ai/ui/motion-spring"
1
+ import { useFilteredList } from "ikanban-ui/hooks"
2
+ import { useSpring } from "ikanban-ui/motion-spring"
3
3
  import { createEffect, on, Component, Show, onCleanup, Switch, Match, createMemo, createSignal } from "solid-js"
4
4
  import { createStore } from "solid-js/store"
5
5
  import { createFocusSignal } from "@solid-primitives/active-element"
@@ -20,15 +20,15 @@ import { useSDK } from "@/context/sdk"
20
20
  import { useParams } from "@solidjs/router"
21
21
  import { useSync } from "@/context/sync"
22
22
  import { useComments } from "@/context/comments"
23
- import { Button } from "@opencode-ai/ui/button"
24
- import { DockShellForm, DockTray } from "@opencode-ai/ui/dock-surface"
25
- import { Icon } from "@opencode-ai/ui/icon"
26
- import { ProviderIcon } from "@opencode-ai/ui/provider-icon"
27
- import { Tooltip, TooltipKeybind } from "@opencode-ai/ui/tooltip"
28
- import { IconButton } from "@opencode-ai/ui/icon-button"
29
- import { Select } from "@opencode-ai/ui/select"
30
- import { RadioGroup } from "@opencode-ai/ui/radio-group"
31
- import { useDialog } from "@opencode-ai/ui/context/dialog"
23
+ import { Button } from "ikanban-ui/button"
24
+ import { DockShellForm, DockTray } from "ikanban-ui/dock-surface"
25
+ import { Icon } from "ikanban-ui/icon"
26
+ import { ProviderIcon } from "ikanban-ui/provider-icon"
27
+ import { Tooltip, TooltipKeybind } from "ikanban-ui/tooltip"
28
+ import { IconButton } from "ikanban-ui/icon-button"
29
+ import { Select } from "ikanban-ui/select"
30
+ import { RadioGroup } from "ikanban-ui/radio-group"
31
+ import { useDialog } from "ikanban-ui/context/dialog"
32
32
  import { ModelSelectorPopover } from "@/components/dialog-select-model"
33
33
  import { DialogSelectModelUnpaid } from "@/components/dialog-select-model-unpaid"
34
34
  import { useProviders } from "@/hooks/use-providers"
@@ -54,7 +54,7 @@ import { PromptContextItems } from "./prompt-input/context-items"
54
54
  import { PromptImageAttachments } from "./prompt-input/image-attachments"
55
55
  import { PromptDragOverlay } from "./prompt-input/drag-overlay"
56
56
  import { promptPlaceholder } from "./prompt-input/placeholder"
57
- import { ImagePreview } from "@opencode-ai/ui/image-preview"
57
+ import { ImagePreview } from "ikanban-ui/image-preview"
58
58
 
59
59
  interface PromptInputProps {
60
60
  class?: string
@@ -1,4 +1,4 @@
1
- import { Tooltip } from "@opencode-ai/ui/tooltip"
1
+ import { Tooltip } from "ikanban-ui/tooltip"
2
2
  import {
3
3
  children,
4
4
  createEffect,
@@ -3,15 +3,15 @@ import type { JSX } from "solid-js"
3
3
  import { useParams } from "@solidjs/router"
4
4
  import { useSync } from "@/context/sync"
5
5
  import { useLayout } from "@/context/layout"
6
- import { checksum } from "@opencode-ai/util/encode"
7
- import { findLast } from "@opencode-ai/util/array"
6
+ import { checksum } from "ikanban-utils/encode"
7
+ import { findLast } from "ikanban-utils/array"
8
8
  import { same } from "@/utils/same"
9
- import { Icon } from "@opencode-ai/ui/icon"
10
- import { Accordion } from "@opencode-ai/ui/accordion"
11
- import { StickyAccordionHeader } from "@opencode-ai/ui/sticky-accordion-header"
12
- import { File } from "@opencode-ai/ui/file"
13
- import { Markdown } from "@opencode-ai/ui/markdown"
14
- import { ScrollView } from "@opencode-ai/ui/scroll-view"
9
+ import { Icon } from "ikanban-ui/icon"
10
+ import { Accordion } from "ikanban-ui/accordion"
11
+ import { StickyAccordionHeader } from "ikanban-ui/sticky-accordion-header"
12
+ import { File } from "ikanban-ui/file"
13
+ import { Markdown } from "ikanban-ui/markdown"
14
+ import { ScrollView } from "ikanban-ui/scroll-view"
15
15
  import type { Message, Part, UserMessage } from "@opencode-ai/sdk/v2/client"
16
16
  import { useLanguage } from "@/context/language"
17
17
  import { getSessionContextMetrics } from "./session-context-metrics"
@@ -1,15 +1,15 @@
1
- import { AppIcon } from "@opencode-ai/ui/app-icon"
2
- import { Button } from "@opencode-ai/ui/button"
3
- import { DropdownMenu } from "@opencode-ai/ui/dropdown-menu"
4
- import { Icon } from "@opencode-ai/ui/icon"
5
- import { IconButton } from "@opencode-ai/ui/icon-button"
6
- import { Keybind } from "@opencode-ai/ui/keybind"
7
- import { Popover } from "@opencode-ai/ui/popover"
8
- import { Spinner } from "@opencode-ai/ui/spinner"
9
- import { TextField } from "@opencode-ai/ui/text-field"
10
- import { showToast } from "@opencode-ai/ui/toast"
11
- import { Tooltip, TooltipKeybind } from "@opencode-ai/ui/tooltip"
12
- import { getFilename } from "@opencode-ai/util/path"
1
+ import { AppIcon } from "ikanban-ui/app-icon"
2
+ import { Button } from "ikanban-ui/button"
3
+ import { DropdownMenu } from "ikanban-ui/dropdown-menu"
4
+ import { Icon } from "ikanban-ui/icon"
5
+ import { IconButton } from "ikanban-ui/icon-button"
6
+ import { Keybind } from "ikanban-ui/keybind"
7
+ import { Popover } from "ikanban-ui/popover"
8
+ import { Spinner } from "ikanban-ui/spinner"
9
+ import { TextField } from "ikanban-ui/text-field"
10
+ import { showToast } from "ikanban-ui/toast"
11
+ import { Tooltip, TooltipKeybind } from "ikanban-ui/tooltip"
12
+ import { getFilename } from "ikanban-utils/path"
13
13
  import { useParams } from "@solidjs/router"
14
14
  import { createEffect, createMemo, For, onCleanup, Show } from "solid-js"
15
15
  import { createStore } from "solid-js/store"
@@ -3,8 +3,8 @@ import { DateTime } from "luxon"
3
3
  import { useSync } from "@/context/sync"
4
4
  import { useSDK } from "@/context/sdk"
5
5
  import { useLanguage } from "@/context/language"
6
- import { Icon } from "@opencode-ai/ui/icon"
7
- import { getDirectory, getFilename } from "@opencode-ai/util/path"
6
+ import { Icon } from "ikanban-ui/icon"
7
+ import { getDirectory, getFilename } from "ikanban-utils/path"
8
8
 
9
9
  const MAIN_WORKTREE = "main"
10
10
  const CREATE_WORKTREE = "create"
@@ -1,11 +1,11 @@
1
1
  import { createMemo, Show } from "solid-js"
2
2
  import type { JSX } from "solid-js"
3
3
  import { createSortable } from "@thisbeyond/solid-dnd"
4
- import { FileIcon } from "@opencode-ai/ui/file-icon"
5
- import { IconButton } from "@opencode-ai/ui/icon-button"
6
- import { TooltipKeybind } from "@opencode-ai/ui/tooltip"
7
- import { Tabs } from "@opencode-ai/ui/tabs"
8
- import { getFilename } from "@opencode-ai/util/path"
4
+ import { FileIcon } from "ikanban-ui/file-icon"
5
+ import { IconButton } from "ikanban-ui/icon-button"
6
+ import { TooltipKeybind } from "ikanban-ui/tooltip"
7
+ import { Tabs } from "ikanban-ui/tabs"
8
+ import { getFilename } from "ikanban-utils/path"
9
9
  import { useFile } from "@/context/file"
10
10
  import { useLanguage } from "@/context/language"
11
11
  import { useCommand } from "@/context/command"
@@ -2,10 +2,10 @@ import type { JSX } from "solid-js"
2
2
  import { Show, createEffect, onCleanup } from "solid-js"
3
3
  import { createStore } from "solid-js/store"
4
4
  import { createSortable } from "@thisbeyond/solid-dnd"
5
- import { IconButton } from "@opencode-ai/ui/icon-button"
6
- import { Tabs } from "@opencode-ai/ui/tabs"
7
- import { DropdownMenu } from "@opencode-ai/ui/dropdown-menu"
8
- import { Icon } from "@opencode-ai/ui/icon"
5
+ import { IconButton } from "ikanban-ui/icon-button"
6
+ import { Tabs } from "ikanban-ui/tabs"
7
+ import { DropdownMenu } from "ikanban-ui/dropdown-menu"
8
+ import { Icon } from "ikanban-ui/icon"
9
9
  import { useTerminal, type LocalPTY } from "@/context/terminal"
10
10
  import { useLanguage } from "@/context/language"
11
11