@allbluecn/shared 0.2.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 (95) hide show
  1. package/package.json +117 -0
  2. package/src/constants/perf.ts +21 -0
  3. package/src/i18n/client.ts +32 -0
  4. package/src/i18n/config.ts +104 -0
  5. package/src/i18n/detect.ts +43 -0
  6. package/src/i18n/locales/en/agents.json +134 -0
  7. package/src/i18n/locales/en/apps.json +6 -0
  8. package/src/i18n/locales/en/auth.json +88 -0
  9. package/src/i18n/locales/en/billing.json +78 -0
  10. package/src/i18n/locales/en/chat.json +194 -0
  11. package/src/i18n/locales/en/common.json +203 -0
  12. package/src/i18n/locales/en/dashboard.json +38 -0
  13. package/src/i18n/locales/en/design.json +70 -0
  14. package/src/i18n/locales/en/desktop.json +35 -0
  15. package/src/i18n/locales/en/display.json +37 -0
  16. package/src/i18n/locales/en/editor.json +304 -0
  17. package/src/i18n/locales/en/enterprise.json +1 -0
  18. package/src/i18n/locales/en/invite.json +11 -0
  19. package/src/i18n/locales/en/knowledge.json +451 -0
  20. package/src/i18n/locales/en/mindmap.json +28 -0
  21. package/src/i18n/locales/en/prd.json +43 -0
  22. package/src/i18n/locales/en/projects.json +133 -0
  23. package/src/i18n/locales/en/settings.json +375 -0
  24. package/src/i18n/locales/en/share.json +20 -0
  25. package/src/i18n/locales/en/story.json +785 -0
  26. package/src/i18n/locales/en/tags.json +42 -0
  27. package/src/i18n/locales/en/workspace.json +90 -0
  28. package/src/i18n/locales/zh/agents.json +134 -0
  29. package/src/i18n/locales/zh/apps.json +6 -0
  30. package/src/i18n/locales/zh/auth.json +88 -0
  31. package/src/i18n/locales/zh/billing.json +78 -0
  32. package/src/i18n/locales/zh/chat.json +194 -0
  33. package/src/i18n/locales/zh/common.json +203 -0
  34. package/src/i18n/locales/zh/dashboard.json +38 -0
  35. package/src/i18n/locales/zh/design.json +70 -0
  36. package/src/i18n/locales/zh/desktop.json +35 -0
  37. package/src/i18n/locales/zh/display.json +37 -0
  38. package/src/i18n/locales/zh/editor.json +304 -0
  39. package/src/i18n/locales/zh/enterprise.json +1 -0
  40. package/src/i18n/locales/zh/invite.json +11 -0
  41. package/src/i18n/locales/zh/knowledge.json +451 -0
  42. package/src/i18n/locales/zh/mindmap.json +28 -0
  43. package/src/i18n/locales/zh/prd.json +43 -0
  44. package/src/i18n/locales/zh/projects.json +133 -0
  45. package/src/i18n/locales/zh/settings.json +375 -0
  46. package/src/i18n/locales/zh/share.json +20 -0
  47. package/src/i18n/locales/zh/story.json +785 -0
  48. package/src/i18n/locales/zh/tags.json +42 -0
  49. package/src/i18n/locales/zh/workspace.json +90 -0
  50. package/src/i18n/server.ts +18 -0
  51. package/src/i18n/types.ts +5 -0
  52. package/src/index.ts +90 -0
  53. package/src/infrastructure/ai/adapter.ts +59 -0
  54. package/src/infrastructure/ai/cli-detector.ts +64 -0
  55. package/src/infrastructure/ip-location.ts +76 -0
  56. package/src/infrastructure/references/engine.ts +104 -0
  57. package/src/infrastructure/ua-parser.ts +107 -0
  58. package/src/interfaces/ai.ts +38 -0
  59. package/src/interfaces/avatar.ts +22 -0
  60. package/src/interfaces/module.ts +60 -0
  61. package/src/interfaces/references.ts +44 -0
  62. package/src/interfaces/transport.ts +26 -0
  63. package/src/lib/annotation-template.ts +33 -0
  64. package/src/lib/comment-utils.ts +47 -0
  65. package/src/lib/datetime.ts +115 -0
  66. package/src/lib/desktop-detect.ts +27 -0
  67. package/src/lib/outline-utils.ts +57 -0
  68. package/src/lib/pacer.ts +96 -0
  69. package/src/lib/prd/stack-layout.ts +53 -0
  70. package/src/lib/prd-tree-utils.ts +94 -0
  71. package/src/lib/prototype-registry.ts +24 -0
  72. package/src/lib/query-client-seam.ts +14 -0
  73. package/src/lib/share-events.ts +78 -0
  74. package/src/lib/sidebar-utils.ts +21 -0
  75. package/src/lib/stores/prd-canvas-store.ts +69 -0
  76. package/src/lib/tag-colors.ts +35 -0
  77. package/src/lib/time-format.ts +50 -0
  78. package/src/modules/ai-providers/constants.ts +79 -0
  79. package/src/modules/ai-providers/index.ts +21 -0
  80. package/src/modules/ai-providers/seed-data.ts +222 -0
  81. package/src/modules/ai-providers/types.ts +95 -0
  82. package/src/modules/billing/feature-registry.ts +63 -0
  83. package/src/modules/billing/plan-features-schema.ts +11 -0
  84. package/src/modules/billing/resource-registry.ts +80 -0
  85. package/src/modules/definitions/plugin.module.ts +38 -0
  86. package/src/modules/definitions/prd.module.ts +45 -0
  87. package/src/modules/definitions/prototype.module.ts +38 -0
  88. package/src/modules/dependencies/index.ts +186 -0
  89. package/src/modules/register-defaults.ts +27 -0
  90. package/src/modules/registry.ts +53 -0
  91. package/src/server-seam.ts +51 -0
  92. package/src/types/outline.ts +26 -0
  93. package/src/types/prd.ts +90 -0
  94. package/src/types/prototype.ts +12 -0
  95. package/src/virtual.d.ts +4 -0
@@ -0,0 +1,194 @@
1
+ {
2
+ "title": "Chat",
3
+ "systemPrompt": "You are the AI assistant for the AllBlue product workbench. You help product managers with requirements analysis, document writing, product design, and more. Please respond in Chinese.",
4
+ "newConversation": "New conversation",
5
+ "aiKeyRequired": "Please configure your AI API key first",
6
+ "goToSettings": "Go to settings",
7
+ "history": {
8
+ "title": "Chat history",
9
+ "conversationCount": "{{count}} conversations",
10
+ "messageCount": "{{count}} messages",
11
+ "searchPlaceholder": "Search conversations...",
12
+ "searchAriaLabel": "Search conversations",
13
+ "selectConversation": "Select conversation {{title}}",
14
+ "editTitle": "Edit conversation title",
15
+ "moreActions": "More actions - {{title}}",
16
+ "rename": "Rename",
17
+ "archive": "Archive",
18
+ "unarchive": "Unarchive",
19
+ "deleteTitle": "Delete conversation?",
20
+ "deleteDescription": "Are you sure you want to delete \"{{title}}\"? This action cannot be undone."
21
+ },
22
+ "groups": {
23
+ "today": "Today",
24
+ "yesterday": "Yesterday",
25
+ "thisWeek": "This week",
26
+ "earlier": "Earlier"
27
+ },
28
+ "empty": {
29
+ "notFound": "No conversations found",
30
+ "noConversations": "No conversations yet",
31
+ "tryOtherSearch": "Try a different search term",
32
+ "createNew": "Create a new conversation to get started"
33
+ },
34
+ "citations": {
35
+ "title": "Sources & citations",
36
+ "source": "Source · {{sourceName}}",
37
+ "sourceCount": "Source · {{sourceName}} +{{count}}",
38
+ "empty": "No citations yet",
39
+ "emptyDesc": "Citations will appear here when sources are referenced in the conversation.",
40
+ "viewCitation": "View citation {{number}}",
41
+ "citation": "Citation {{number}}",
42
+ "sourceMetadata": "Source metadata",
43
+ "sourceExcerpt": "Source excerpt",
44
+ "hideSnippet": "Hide snippet",
45
+ "showSnippet": "Show snippet",
46
+ "openInNewTab": "Open {{title}} in new tab",
47
+ "domains": {
48
+ "baidu.com": "Baidu",
49
+ "zhihu.com": "Zhihu",
50
+ "sohu.com": "Sohu",
51
+ "douyin.com": "Douyin",
52
+ "xiaohongshu.com": "Xiaohongshu",
53
+ "bilibili.com": "Bilibili",
54
+ "weibo.com": "Weibo",
55
+ "163.com": "NetEase",
56
+ "qq.com": "Tencent",
57
+ "sina.com.cn": "Sina",
58
+ "jianshu.com": "Jianshu",
59
+ "wikipedia.org": "Wikipedia",
60
+ "bing.com": "Bing"
61
+ }
62
+ },
63
+ "emptyState": {
64
+ "title": "Start a conversation",
65
+ "description": "Type a message below to start chatting with the AI assistant",
66
+ "newMessage": "New message"
67
+ },
68
+ "error": {
69
+ "translate": "Translate",
70
+ "translating": "Translating..."
71
+ },
72
+ "actions": {
73
+ "menu": "Message actions",
74
+ "menuLabel": "Message actions menu",
75
+ "openMenu": "Open message actions menu",
76
+ "copy": "Copy",
77
+ "copied": "Copied",
78
+ "copyFailed": "Failed to copy message to clipboard",
79
+ "regenerate": "Regenerate",
80
+ "attach": "Attach file",
81
+ "enableThinking": "Enable deep thinking",
82
+ "disableThinking": "Disable deep thinking",
83
+ "thinking": "Deep thinking",
84
+ "enableWebSearch": "Enable web search",
85
+ "disableWebSearch": "Disable web search",
86
+ "webSearch": "Web search",
87
+ "moreOptions": "More options",
88
+ "sendMessage": "Send message",
89
+ "voiceInput": "Voice input",
90
+ "cancel": "Cancel"
91
+ },
92
+ "agentMode": {
93
+ "label": "Agent mode",
94
+ "placeholder": "Agent",
95
+ "auto": "Auto",
96
+ "agent": "Agent",
97
+ "plan": "Plan"
98
+ },
99
+ "context": {
100
+ "add": "Add context",
101
+ "knowledgeBase": "Knowledge base",
102
+ "users": "Users",
103
+ "selected": "Selected context",
104
+ "selectedMobile": "Selected context (mobile)",
105
+ "remove": "Remove {{label}}"
106
+ },
107
+ "model": {
108
+ "loading": "Loading models...",
109
+ "none": "No models available",
110
+ "select": "Select model",
111
+ "local": "(Local)",
112
+ "capabilities": {
113
+ "text": "Text",
114
+ "vision": "Vision",
115
+ "tools": "Tools",
116
+ "reasoning": "Reasoning",
117
+ "audio": "Audio"
118
+ }
119
+ },
120
+ "prompt": {
121
+ "inputLabel": "AI Chat Input",
122
+ "placeholder": "Type any question...",
123
+ "enterHint": "Enter newline · ⌘+Enter send",
124
+ "submitLabel": "Submit:"
125
+ },
126
+ "promptActions": {
127
+ "cloneScreenshot": "Clone screenshot",
128
+ "importFigma": "Import from Figma",
129
+ "uploadProject": "Upload project",
130
+ "landingPage": "Landing page"
131
+ },
132
+ "thinking": {
133
+ "title": "Thinking...",
134
+ "elapsed": "Elapsed {{seconds}}s",
135
+ "seconds": "{{count}}s",
136
+ "process": "AI thinking process",
137
+ "placeholder": "Let me analyze the user's question. I need to understand the user's needs, then search the relevant knowledge base, and finally provide a complete answer.\n\nFirst, I will analyze the key elements of the question to determine what information is needed to provide an accurate answer.\n\nNext, I will search the knowledge base for relevant information and see if there are similar cases or documents to reference.\n\nThen, I will synthesize all the information and structure the answer to ensure clear logic and complete content.\n\nFinally, I will check the accuracy and completeness of the answer to make sure no important information is missed."
138
+ },
139
+ "interrupt": {
140
+ "title": "AI requests to perform an action",
141
+ "descriptionStart": "The model wants to call the",
142
+ "descriptionEnd": "tool.",
143
+ "approve": "Approve",
144
+ "reject": "Reject"
145
+ },
146
+ "streaming": {
147
+ "label": "Streaming output"
148
+ },
149
+ "aria": {
150
+ "aiConversation": "AI conversation",
151
+ "aiMessage": "AI message",
152
+ "messageLog": "Conversation messages"
153
+ },
154
+ "slashCommands": {
155
+ "placeholder": "Type slash commands...",
156
+ "noSkills": "No slash commands yet. Go to Agents to create one.",
157
+ "loading": "Loading...",
158
+ "apply": "Apply"
159
+ },
160
+ "agentSelector": {
161
+ "placeholder": "Select agent",
162
+ "default": "Default assistant",
163
+ "switchConfirmTitle": "Switch agent",
164
+ "switchConfirmDesc": "Current conversation has unsent content. Switching agent will clear the content and start a new session.",
165
+ "switchConfirm": "Switch"
166
+ },
167
+ "aiPrompt": {
168
+ "describe": "Describe your needs,",
169
+ "generate": "generate instantly",
170
+ "build": "build instantly",
171
+ "launch": "launch instantly",
172
+ "subtitle": "Just describe your ideas and AI will build real, working software for you",
173
+ "notConfigured": "AI feature not configured",
174
+ "configHint": "Please configure your API Key in settings to enable the AI assistant",
175
+ "goToConfig": "Go to Settings",
176
+ "requestFailed": "Request failed, please try again later",
177
+ "thinking": "AI is thinking...",
178
+ "enterFullChat": "Enter full chat",
179
+ "placeholder": "Type your question...",
180
+ "placeholderNotConfigured": "Please configure your AI Key first..."
181
+ },
182
+ "globalChat": {
183
+ "title": "AI Assistant",
184
+ "placeholder": "Type a message...",
185
+ "placeholderNotConfigured": "Please configure your AI Key first...",
186
+ "sending": "Sending...",
187
+ "send": "Send",
188
+ "close": "Close",
189
+ "notConfigured": "AI feature not configured",
190
+ "configHint": "Please configure your API Key",
191
+ "requestFailed": "Request failed",
192
+ "thinking": "AI is thinking..."
193
+ }
194
+ }
@@ -0,0 +1,203 @@
1
+ {
2
+ "errorPage": {
3
+ "notFound": "Page not found",
4
+ "notFoundDesc": "The page you are looking for does not exist or has been removed.",
5
+ "goDashboard": "Back to Dashboard",
6
+ "error": "Something went wrong",
7
+ "goHome": "Back to Home"
8
+ },
9
+ "nav": {
10
+ "workspace": "Workspace",
11
+ "chat": "Chat",
12
+ "agents": "Agents",
13
+ "inspiration": "Inspiration",
14
+ "story": "Stories",
15
+ "prd": "PRD",
16
+ "prototypeBoard": "Prototype Board",
17
+ "design": "Design",
18
+ "testcase": "Test Cases",
19
+ "bug": "BUG",
20
+ "acceptance": "Acceptance",
21
+ "debrief": "Debrief",
22
+ "law": "Laws & Regulations",
23
+ "compliance": "Compliance",
24
+ "dictionary": "Dictionary",
25
+ "bookmarks": "Bookmarks",
26
+ "summary": "Reports",
27
+ "summaryBadge": "AI Generated"
28
+ },
29
+ "button": {
30
+ "save": "Save",
31
+ "cancel": "Cancel",
32
+ "delete": "Delete",
33
+ "confirm": "Confirm",
34
+ "close": "Close",
35
+ "back": "Back",
36
+ "next": "Next",
37
+ "submit": "Submit",
38
+ "reset": "Reset",
39
+ "edit": "Edit",
40
+ "create": "Create",
41
+ "search": "Search"
42
+ },
43
+ "form": {
44
+ "add": "Add",
45
+ "empty": "No content",
46
+ "search": "Search...",
47
+ "selectDate": "Select date",
48
+ "submit": "Submit",
49
+ "cancel": "Cancel",
50
+ "select": "Please select",
51
+ "operationFailed": "Operation failed",
52
+ "invalidEmail": "Please enter a valid email",
53
+ "passwordMin": "Password must be at least 6 characters",
54
+ "passwordMin8": "Password must be at least 8 characters",
55
+ "passwordNotEmpty": "Password cannot be empty",
56
+ "usernameMin3": "Username must be at least 3 characters",
57
+ "invitationCodeRequired": "Invitation code is required",
58
+ "passwordMismatch": "Passwords do not match",
59
+ "projectNameRequired": "Project name is required",
60
+ "workspaceRequired": "Please select a workspace",
61
+ "storyTitleRequired": "Story title is required",
62
+ "projectRequired": "Please select a project",
63
+ "required": "This field is required"
64
+ },
65
+ "status": {
66
+ "loading": "Loading…",
67
+ "saving": "Saving…",
68
+ "deleting": "Deleting...",
69
+ "success": "Success",
70
+ "error": "Error",
71
+ "empty": "No data"
72
+ },
73
+ "hotkey": {
74
+ "title": "Shortcuts"
75
+ },
76
+ "command": {
77
+ "searchPlaceholder": "Search commands or pages...",
78
+ "groupNavigation": "Navigation",
79
+ "groupAction": "Actions",
80
+ "empty": "No matching commands",
81
+ "gotoDashboard": "Go to Dashboard",
82
+ "gotoChat": "Go to Chat",
83
+ "gotoAgents": "Go to Agents",
84
+ "gotoInspiration": "Go to Inspiration",
85
+ "gotoStories": "Go to Stories",
86
+ "gotoPrd": "Go to PRD",
87
+ "gotoDesign": "Go to Design",
88
+ "gotoTestCases": "Go to Test Cases",
89
+ "gotoBugs": "Go to Bugs",
90
+ "gotoAcceptance": "Go to Acceptance Criteria",
91
+ "gotoDebrief": "Go to Debrief",
92
+ "gotoKnowledge": "Go to Knowledge",
93
+ "gotoAnyhub": "Go to AnyHub",
94
+ "gotoTags": "Go to Tags",
95
+ "gotoWorkspaces": "Go to Workspaces",
96
+ "gotoSettings": "Go to Settings",
97
+ "createPrd": "New PRD",
98
+ "createConversation": "New Conversation",
99
+ "createStory": "New Story",
100
+ "toggleTheme": "Toggle Theme",
101
+ "signOut": "Sign Out"
102
+ },
103
+ "settings": {
104
+ "language": "Language",
105
+ "languageDescription": "Select the interface display language. Changes take effect immediately.",
106
+ "languageChanged": "Language changed",
107
+ "languageChangeFailed": "Failed to change language"
108
+ },
109
+ "share": {
110
+ "notFoundTitle": "Share Not Found",
111
+ "notFoundDescription": "This share link is invalid or has expired.",
112
+ "expired": "Share not found or expired",
113
+ "loadError": "Failed to load share content: {{message}}",
114
+ "retry": "Retry",
115
+ "loadFailed": "Load failed",
116
+ "favoriteAdded": "Added to favorites",
117
+ "favoriteRemoved": "Removed from favorites",
118
+ "loginRequired": "Please log in first",
119
+ "linkCopied": "Link copied",
120
+ "copyLink": "Copy Link",
121
+ "favorite": "Favorite",
122
+ "favorited": "Favorited"
123
+ },
124
+ "nameConfirm": {
125
+ "invalidName": "Invalid name",
126
+ "operationFailed": "Operation failed",
127
+ "inputInstruction": "Please enter",
128
+ "copied": "Copied",
129
+ "clickToCopy": "Click to copy",
130
+ "confirmDelete": "to confirm delete",
131
+ "inputPlaceholder": "Type \"{{expectedName}}\" to confirm",
132
+ "cancel": "Cancel",
133
+ "deleting": "Deleting..."
134
+ },
135
+ "timezone": {
136
+ "placeholder": "Select timezone",
137
+ "searchPlaceholder": "Search timezones...",
138
+ "notFound": "No timezone found",
139
+ "common": "Common timezones",
140
+ "all": "All timezones"
141
+ },
142
+ "iconPicker": {
143
+ "select": "Select an icon"
144
+ },
145
+ "languageSwitcher": {
146
+ "switch": "Switch language",
147
+ "zh": "中文",
148
+ "en": "English"
149
+ },
150
+ "loading": "Loading…",
151
+ "pr": {
152
+ "create": "Create PRD"
153
+ },
154
+ "auth": {
155
+ "loginSuccess": "Login successful, entitlements synced",
156
+ "loginFailed": "Login failed: {{message}}",
157
+ "unknownError": "Unknown error"
158
+ },
159
+ "translator": {
160
+ "translating": "Translating..."
161
+ },
162
+ "placeholder": {
163
+ "developing": "Under development, stay tuned"
164
+ },
165
+ "navFloat": {
166
+ "exitFullscreen": "Exit fullscreen\nDrag to other corners",
167
+ "showHeader": "Show header\nDrag to other corners"
168
+ },
169
+ "contributionGraph": {
170
+ "monthSuffix": "",
171
+ "totalCount": "Last {{count}} contributions",
172
+ "legendLess": "Less",
173
+ "legendMore": "More",
174
+ "operations": "operations"
175
+ },
176
+ "sidebar": {
177
+ "workspace": {
178
+ "title": "Workspace",
179
+ "home": "Home",
180
+ "create": "Create Workspace"
181
+ },
182
+ "knowledge": {
183
+ "title": "Knowledge Base",
184
+ "general": "General",
185
+ "create": "Create Knowledge"
186
+ },
187
+ "anyHub": {
188
+ "title": "AnyHub"
189
+ },
190
+ "userMenu": {
191
+ "title": "User Menu",
192
+ "profile": "Profile",
193
+ "settings": "Settings",
194
+ "admin": "Admin Panel",
195
+ "logout": "Logout",
196
+ "logoutToGuest": "Exit Guest Mode",
197
+ "loginSaaS": "Login to SaaS",
198
+ "upgradePro": "Upgrade to Pro"
199
+ },
200
+ "collapseSubMenu": "Collapse Submenu",
201
+ "expandSubMenu": "Expand Submenu"
202
+ }
203
+ }
@@ -0,0 +1,38 @@
1
+ {
2
+ "activityFeed": {
3
+ "title": "Recent Activity",
4
+ "empty": "No activity"
5
+ },
6
+ "quickActions": {
7
+ "newPRD": "New PRD",
8
+ "viewComments": "View Comments"
9
+ },
10
+ "stats": {
11
+ "prdTotal": "Total PRD",
12
+ "completedToday": "Completed Today",
13
+ "unreadComments": "Unread Comments",
14
+ "anyHubInstalled": "AnyHub Installed"
15
+ },
16
+ "dashboard": {
17
+ "activity": "Activity",
18
+ "quickEntry": "Quick Entry",
19
+ "teamFeatureComing": "Team features coming soon",
20
+ "subtitle": "Product Requirements Document Management",
21
+ "newPrd": "New PRD",
22
+ "totalCount": "Total Documents",
23
+ "weekNew": "Added This Week",
24
+ "updated24h": "Updated in 24h",
25
+ "noPrd": "No PRD Yet",
26
+ "noMatch": "No matching PRD found",
27
+ "noPrdHint": "Click the button above to create your first PRD document",
28
+ "noDescription": "No description",
29
+ "deletePrd": "Delete PRD",
30
+ "updatedAt": "Updated",
31
+ "justNow": "Just now",
32
+ "minutesAgo": "{{count}} min ago",
33
+ "hoursAgo": "{{count}} hours ago",
34
+ "daysAgo": "{{count}} days ago",
35
+ "confirmDeleteTitle": "Confirm Delete",
36
+ "confirmDeleteDesc": "Are you sure you want to delete this PRD? This cannot be undone."
37
+ }
38
+ }
@@ -0,0 +1,70 @@
1
+ {
2
+ "title": "Design",
3
+ "subtitle": "UI design, graphic design, AI design — AllBlue makes collaboration between designers and developers more efficient.",
4
+ "searchPlaceholder": "Search...",
5
+ "createDesign": "New Design",
6
+ "downloadSketchPlugin": "Download AllBlue Sketch Plugin",
7
+ "loading": "Loading...",
8
+ "justNow": "Just now",
9
+ "minutesAgo": "{{count}} min ago",
10
+ "hoursAgo": "{{count}} hr ago",
11
+ "daysAgo": "{{count}} d ago",
12
+ "stats": {
13
+ "totalTitle": "Total Designs",
14
+ "weeklyNew": "New This Week",
15
+ "updated24h": "Updated in 24h"
16
+ },
17
+ "emptyTitle": "No Designs Yet",
18
+ "emptyNoResults": "No matching designs found",
19
+ "emptyDescription": "Install the Sketch plugin to push designs to AllBlue in one click",
20
+ "deleteDesign": "Delete Design",
21
+ "sketchFile": "Sketch file: {{name}}",
22
+ "artboardVersionInfo": "{{count}} artboards · version v{{version}}",
23
+ "updatedAt": "Updated {{date}}",
24
+ "deleteConfirmTitle": "Confirm Delete",
25
+ "deleteConfirmDescription": "After deletion, this design will no longer appear in the dashboard. It can be restored from the database.",
26
+ "deleteLoading": "Deleting...",
27
+ "deleteConfirm": "Confirm Delete",
28
+ "cancel": "Cancel",
29
+ "projectNotFound": "Project not found",
30
+ "project": {
31
+ "artboardVersionInfo": "{{count}} artboards · version {{version}}"
32
+ },
33
+ "detail": {
34
+ "notFound": "Artboard not found",
35
+ "layers": "Layers",
36
+ "layerCount": "{{count}} layers",
37
+ "preview": "Artboard Preview",
38
+ "export": "Export",
39
+ "code": "Code"
40
+ },
41
+ "propertyPanel": {
42
+ "clickLayer": "Click a layer on the artboard to view properties",
43
+ "dimensions": "Dimensions & Position",
44
+ "spacing": "Spacing",
45
+ "top": "Top",
46
+ "bottom": "Bottom",
47
+ "left": "Left",
48
+ "right": "Right",
49
+ "fill": "Fill",
50
+ "border": "Border",
51
+ "shadow": "Shadow",
52
+ "text": "Text",
53
+ "fontFamily": "Font",
54
+ "fontSize": "Size",
55
+ "textColor": "Color",
56
+ "cornerRadius": "Corner Radius"
57
+ },
58
+ "codePreview": {
59
+ "selectLayer": "Select a layer to view generated code",
60
+ "copied": "Copied",
61
+ "copy": "Copy"
62
+ },
63
+ "exportPanel": {
64
+ "title": "Export Assets",
65
+ "empty": "No exportable assets"
66
+ },
67
+ "projectCard": {
68
+ "artboardCount": "{{count}} artboards · v{{version}}"
69
+ }
70
+ }
@@ -0,0 +1,35 @@
1
+ {
2
+ "onboarding": {
3
+ "title": "Welcome to AllBlue Desktop",
4
+ "subtitle": "Choose your connection mode to get started",
5
+ "saas": {
6
+ "title": "Connect to AllBlue Cloud",
7
+ "desc": "Officially hosted, zero maintenance, subscription benefits",
8
+ "button": "Connect to Cloud"
9
+ },
10
+ "selfHosted": {
11
+ "title": "Connect to Self-hosted Instance",
12
+ "desc": "Open-source version deployed by your company",
13
+ "button": "Configure Connection",
14
+ "dialogTitle": "Connect to Self-hosted Instance",
15
+ "urlLabel": "Instance URL",
16
+ "labelField": "Label (optional)",
17
+ "labelPlaceholder": "Company PRD instance",
18
+ "cancel": "Cancel",
19
+ "connect": "Test and Connect",
20
+ "connecting": "Testing..."
21
+ },
22
+ "local": {
23
+ "title": "Use Local Mode",
24
+ "desc": "Data stays local, BYOK AI",
25
+ "button": "Enter Local Mode"
26
+ },
27
+ "errors": {
28
+ "switchFailed": "Switch failed: {{message}}",
29
+ "localFailed": "Failed to enter local mode: {{message}}",
30
+ "connectFailed": "Cannot connect: {{message}}",
31
+ "unknownError": "Unknown error",
32
+ "timeout": "Timeout"
33
+ }
34
+ }
35
+ }
@@ -0,0 +1,37 @@
1
+ {
2
+ "displayOptions": "Display",
3
+ "viewGrouping": "View Grouping",
4
+ "group": "Group",
5
+ "subGroup": "Sub-group",
6
+ "order": "Sort",
7
+ "showProperties": "Show Properties",
8
+ "extraOptions": "Extra Options",
9
+ "showEmptyGroups": "Show Empty Groups",
10
+ "showSubItems": "Show Sub-items",
11
+ "pageSize": "Page Size",
12
+ "asc": "Ascending",
13
+ "desc": "Descending",
14
+ "group.state": "State",
15
+ "group.priority": "Priority",
16
+ "group.assignee": "Assignee",
17
+ "group.labels": "Labels",
18
+ "group.createdBy": "Created By",
19
+ "group.project": "Project",
20
+ "group.none": "No Group",
21
+ "order.manual": "Manual",
22
+ "order.created": "Created",
23
+ "order.updated": "Updated",
24
+ "order.startDate": "Start Date",
25
+ "order.dueDate": "Due Date",
26
+ "order.priority": "Priority",
27
+ "property.id": "ID",
28
+ "property.project": "Project",
29
+ "property.assignee": "Assignee",
30
+ "property.startDate": "Start Date",
31
+ "property.dueDate": "Due Date",
32
+ "property.labels": "Labels",
33
+ "property.priority": "Priority",
34
+ "property.state": "State",
35
+ "property.subCount": "Sub-count",
36
+ "property.attachmentCount": "Attachments"
37
+ }