@almadar/ui 5.21.8 → 5.21.9
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.
- package/dist/avl/index.cjs +960 -649
- package/dist/avl/index.js +960 -649
- package/dist/components/game/organisms/three/index.cjs +489 -1
- package/dist/components/game/organisms/three/index.js +489 -1
- package/dist/components/index.cjs +665 -369
- package/dist/components/index.js +665 -369
- package/dist/docs/index.cjs +300 -5
- package/dist/docs/index.js +300 -5
- package/dist/hooks/index.cjs +296 -3
- package/dist/hooks/index.js +296 -3
- package/dist/locales/index.cjs +896 -9
- package/dist/locales/index.js +896 -9
- package/dist/providers/index.cjs +665 -369
- package/dist/providers/index.js +665 -369
- package/dist/runtime/index.cjs +665 -369
- package/dist/runtime/index.js +665 -369
- package/locales/ar.json +300 -31
- package/locales/en.json +296 -31
- package/locales/sl.json +300 -31
- package/package.json +1 -1
package/dist/providers/index.cjs
CHANGED
|
@@ -1963,7 +1963,10 @@ var en_default;
|
|
|
1963
1963
|
var init_en = __esm({
|
|
1964
1964
|
"locales/en.json"() {
|
|
1965
1965
|
en_default = {
|
|
1966
|
-
$meta: {
|
|
1966
|
+
$meta: {
|
|
1967
|
+
locale: "en",
|
|
1968
|
+
direction: "ltr"
|
|
1969
|
+
},
|
|
1967
1970
|
"common.save": "Save",
|
|
1968
1971
|
"common.cancel": "Cancel",
|
|
1969
1972
|
"common.delete": "Delete",
|
|
@@ -2105,7 +2108,6 @@ var init_en = __esm({
|
|
|
2105
2108
|
"error.somethingWentWrong": "Something went wrong",
|
|
2106
2109
|
"error.loadingItems": "Loading items...",
|
|
2107
2110
|
"error.noItemsFound": "No items found",
|
|
2108
|
-
"error.notFound": "Not found",
|
|
2109
2111
|
"debug.noEntityData": "No entity data",
|
|
2110
2112
|
"debug.noEntities": "No entities",
|
|
2111
2113
|
"debug.noTicks": "No ticks registered",
|
|
@@ -2137,7 +2139,298 @@ var init_en = __esm({
|
|
|
2137
2139
|
"template.showcase": "Showcase",
|
|
2138
2140
|
"template.faq": "Frequently Asked Questions",
|
|
2139
2141
|
"template.ourTeam": "Our Team",
|
|
2140
|
-
"template.caseStudies": "Case Studies"
|
|
2142
|
+
"template.caseStudies": "Case Studies",
|
|
2143
|
+
"richBlockEditor.toolbar.text": "Text",
|
|
2144
|
+
"richBlockEditor.toolbar.h1": "H1",
|
|
2145
|
+
"richBlockEditor.toolbar.h2": "H2",
|
|
2146
|
+
"richBlockEditor.toolbar.h3": "H3",
|
|
2147
|
+
"richBlockEditor.toolbar.bulletList": "Bullet list",
|
|
2148
|
+
"richBlockEditor.toolbar.numbered": "Numbered",
|
|
2149
|
+
"richBlockEditor.toolbar.quote": "Quote",
|
|
2150
|
+
"richBlockEditor.toolbar.code": "Code",
|
|
2151
|
+
"richBlockEditor.toolbar.divider": "Divider",
|
|
2152
|
+
"richBlockEditor.toolbar.image": "Image",
|
|
2153
|
+
"richBlockEditor.blockType.paragraph": "Text",
|
|
2154
|
+
"richBlockEditor.blockType.heading1": "Heading 1",
|
|
2155
|
+
"richBlockEditor.blockType.heading2": "Heading 2",
|
|
2156
|
+
"richBlockEditor.blockType.heading3": "Heading 3",
|
|
2157
|
+
"richBlockEditor.blockType.bulletList": "Bullet list",
|
|
2158
|
+
"richBlockEditor.blockType.numberedList": "Numbered list",
|
|
2159
|
+
"richBlockEditor.blockType.quote": "Quote",
|
|
2160
|
+
"richBlockEditor.blockType.code": "Code",
|
|
2161
|
+
"richBlockEditor.blockType.divider": "Divider",
|
|
2162
|
+
"richBlockEditor.blockType.image": "Image",
|
|
2163
|
+
"richBlockEditor.blockActions": "Block actions",
|
|
2164
|
+
"richBlockEditor.duplicate": "Duplicate",
|
|
2165
|
+
"richBlockEditor.turnInto": "Turn into",
|
|
2166
|
+
"richBlockEditor.placeholder.heading1": "Heading 1",
|
|
2167
|
+
"richBlockEditor.placeholder.heading2": "Heading 2",
|
|
2168
|
+
"richBlockEditor.placeholder.heading3": "Heading 3",
|
|
2169
|
+
"richBlockEditor.placeholder.quote": "Quote",
|
|
2170
|
+
"richBlockEditor.placeholder.code": "Enter code",
|
|
2171
|
+
"richBlockEditor.placeholder.paragraph": "Start writing...",
|
|
2172
|
+
"richBlockEditor.placeholder.listItem": "List item",
|
|
2173
|
+
"richBlockEditor.placeholder.caption": "Caption (optional)",
|
|
2174
|
+
"richBlockEditor.aria.heading1Block": "Heading 1 block",
|
|
2175
|
+
"richBlockEditor.aria.heading2Block": "Heading 2 block",
|
|
2176
|
+
"richBlockEditor.aria.heading3Block": "Heading 3 block",
|
|
2177
|
+
"richBlockEditor.aria.quoteBlock": "Quote block",
|
|
2178
|
+
"richBlockEditor.aria.codeBlock": "Code block",
|
|
2179
|
+
"richBlockEditor.aria.codeLanguage": "Code language",
|
|
2180
|
+
"richBlockEditor.aria.imageUrl": "Image URL",
|
|
2181
|
+
"richBlockEditor.aria.imageCaption": "Image caption",
|
|
2182
|
+
"richBlockEditor.aria.listItem": "List item",
|
|
2183
|
+
"richBlockEditor.aria.removeListItem": "Remove list item",
|
|
2184
|
+
"richBlockEditor.aria.paragraphBlock": "Paragraph block",
|
|
2185
|
+
"richBlockEditor.embeddedImage": "Embedded image",
|
|
2186
|
+
"richBlockEditor.noImageUrl": "No image URL set",
|
|
2187
|
+
"richBlockEditor.addItem": "Add item",
|
|
2188
|
+
"richBlockEditor.insertParagraphBelow": "Insert paragraph below",
|
|
2189
|
+
"richBlockEditor.editorToolbar": "Block editor toolbar",
|
|
2190
|
+
"richBlockEditor.insertEntry": "Insert {{label}}",
|
|
2191
|
+
"versionDiff.compare": "Compare",
|
|
2192
|
+
"versionDiff.to": "to",
|
|
2193
|
+
"versionDiff.beforeRevision": "Before revision",
|
|
2194
|
+
"versionDiff.afterRevision": "After revision",
|
|
2195
|
+
"versionDiff.switchToInline": "Switch to inline view",
|
|
2196
|
+
"versionDiff.switchToSideBySide": "Switch to side-by-side view",
|
|
2197
|
+
"versionDiff.revert": "Revert",
|
|
2198
|
+
"versionDiff.byAuthor": " by {{author}}",
|
|
2199
|
+
"violationAlert.actionType.measure": "Corrective Measure",
|
|
2200
|
+
"violationAlert.actionType.admin": "Administrative Action",
|
|
2201
|
+
"violationAlert.actionType.penalty": "Penalty Proceedings",
|
|
2202
|
+
"violationAlert.fallbackMessage": "Violation",
|
|
2203
|
+
"violationAlert.adminLabel": "Admin:",
|
|
2204
|
+
"violationAlert.penaltyLabel": "Penalty:",
|
|
2205
|
+
"violationAlert.goToField": "Go to field",
|
|
2206
|
+
"branchingLogic.title": "Branching logic",
|
|
2207
|
+
"branchingLogic.if": "If",
|
|
2208
|
+
"branchingLogic.goTo": "go to",
|
|
2209
|
+
"branchingLogic.rules": "Rules",
|
|
2210
|
+
"branchingLogic.logicGraph": "Logic graph",
|
|
2211
|
+
"branchingLogic.addRule": "Add rule",
|
|
2212
|
+
"branchingLogic.deleteRule": "Delete rule",
|
|
2213
|
+
"branchingLogic.endOfSurvey": "End of survey",
|
|
2214
|
+
"branchingLogic.brokenReference": "Broken reference",
|
|
2215
|
+
"branchingLogic.selectQuestion": "Select question",
|
|
2216
|
+
"branchingLogic.selectTarget": "Select target",
|
|
2217
|
+
"branchingLogic.selectValue": "Select value",
|
|
2218
|
+
"branchingLogic.addValue": "Add value",
|
|
2219
|
+
"branchingLogic.value": "Value",
|
|
2220
|
+
"branchingLogic.typeValuePressEnter": "Type value, press Enter",
|
|
2221
|
+
"branchingLogic.operatorEquals": "equals",
|
|
2222
|
+
"branchingLogic.operatorNotEquals": "does not equal",
|
|
2223
|
+
"branchingLogic.operatorContains": "contains",
|
|
2224
|
+
"branchingLogic.operatorIn": "is one of",
|
|
2225
|
+
"branchingLogic.graphAriaLabel": "Branching logic graph",
|
|
2226
|
+
"branchingLogic.ruleCountOne": "{{count}} rule",
|
|
2227
|
+
"branchingLogic.ruleCountOther": "{{count}} rules",
|
|
2228
|
+
"branchingLogic.brokenCount": "{{count}} broken",
|
|
2229
|
+
"branchingLogic.emptyNoQuestions": "Add questions before building branching rules.",
|
|
2230
|
+
"branchingLogic.emptyNoRules": "No rules yet. Add a rule to define branching logic.",
|
|
2231
|
+
"filterGroup.filters": "Filters",
|
|
2232
|
+
"filterGroup.all": "All",
|
|
2233
|
+
"filterGroup.clear": "Clear",
|
|
2234
|
+
"filterGroup.clearAll": "Clear all",
|
|
2235
|
+
"filterGroup.from": "From",
|
|
2236
|
+
"filterGroup.to": "To",
|
|
2237
|
+
"filterGroup.allOf": "All {{label}}",
|
|
2238
|
+
"filterGroup.activeCount": "{{count}} active",
|
|
2239
|
+
"debug.guardEvaluationsHint": "Guard evaluations will appear when transitions or ticks with guards execute",
|
|
2240
|
+
"debug.expression": "Expression",
|
|
2241
|
+
"debug.inputs": "Inputs",
|
|
2242
|
+
"debug.trait": "Trait",
|
|
2243
|
+
"debug.filterAll": "All",
|
|
2244
|
+
"debug.filterPassed": "Passed",
|
|
2245
|
+
"debug.filterFailed": "Failed",
|
|
2246
|
+
"debug.traitsInitHint": "Traits will appear when the state machine initializes",
|
|
2247
|
+
"debug.traitsMountHint": "Traits will appear when components using them are mounted",
|
|
2248
|
+
"debug.activeStates": "Active States",
|
|
2249
|
+
"debug.availableEvents": "Available Events",
|
|
2250
|
+
"debug.noTransitionsFromState": "No transitions from current state",
|
|
2251
|
+
"debug.guarded": "guarded",
|
|
2252
|
+
"debug.otherEvents": "Other Events (not available from current state)",
|
|
2253
|
+
"debug.recentTransitions": "Recent Transitions",
|
|
2254
|
+
"debug.transitionsCount": "{{count}} transitions",
|
|
2255
|
+
"debug.states": "States",
|
|
2256
|
+
"debug.transitions": "Transitions",
|
|
2257
|
+
"debug.guards": "Guards",
|
|
2258
|
+
"debug.debugModeHint": "Debug mode may not be enabled",
|
|
2259
|
+
"debug.entitiesSpawnHint": "Entities will appear when spawned",
|
|
2260
|
+
"debug.singleton": "Singleton",
|
|
2261
|
+
"debug.singletonsCount": "Singletons ({{count}})",
|
|
2262
|
+
"debug.runtimeCount": "Runtime ({{count}})",
|
|
2263
|
+
"debug.moreEntities": "+{{count}} more entities",
|
|
2264
|
+
"debug.persistent": "Persistent",
|
|
2265
|
+
"debug.loadedCount": "{{count}} loaded",
|
|
2266
|
+
"debug.notLoaded": "not loaded",
|
|
2267
|
+
"debug.eventsExecuteHint": "Events will appear as traits, ticks, and other systems execute",
|
|
2268
|
+
"debug.allCount": "All ({{count}})",
|
|
2269
|
+
"debug.autoScroll": "Auto-scroll",
|
|
2270
|
+
"debug.transitionsProcessHint": "Transitions will appear as the state machine processes events",
|
|
2271
|
+
"debug.transitionsRecorded": "{{count}} transitions recorded",
|
|
2272
|
+
"debug.guardLabel": "guard:",
|
|
2273
|
+
"debug.effectsCount": "{{count}} effects",
|
|
2274
|
+
"debug.bridgeInitHint": "The ServerBridge has not been initialized. Bridge health will appear once the runtime connects to the server.",
|
|
2275
|
+
"debug.never": "Never",
|
|
2276
|
+
"debug.connected": "Connected",
|
|
2277
|
+
"debug.disconnected": "Disconnected",
|
|
2278
|
+
"debug.lastError": "Last Error",
|
|
2279
|
+
"debug.totalEventsProcessed": "{{count}} total events processed",
|
|
2280
|
+
"debug.server": "server",
|
|
2281
|
+
"debug.clientEffectsCount": "{{count}} clientEffects",
|
|
2282
|
+
"debug.emitLabel": "emit:",
|
|
2283
|
+
"debug.rowsCount": "{{count}} rows",
|
|
2284
|
+
"debug.serverResponse": "server response",
|
|
2285
|
+
"debug.collapseVerificationTimeline": "Collapse verification timeline",
|
|
2286
|
+
"debug.expandVerificationTimeline": "Expand verification timeline",
|
|
2287
|
+
"debug.failCount": "{{count}} fail",
|
|
2288
|
+
"debug.ok": "OK",
|
|
2289
|
+
"debug.localCount": "{{count}} local",
|
|
2290
|
+
"debug.serverCount": "{{count}} server",
|
|
2291
|
+
"debug.waitingForTransitions": "Waiting for transitions...",
|
|
2292
|
+
"debug.tabDispatch": "Dispatch",
|
|
2293
|
+
"debug.tabVerify": "Verify",
|
|
2294
|
+
"debug.tabVerifyAlert": "Verify (!)",
|
|
2295
|
+
"debug.tabTimeline": "Timeline",
|
|
2296
|
+
"debug.tabBridge": "Bridge",
|
|
2297
|
+
"debug.tabTraits": "Traits",
|
|
2298
|
+
"debug.tabTicks": "Ticks",
|
|
2299
|
+
"debug.tabEntities": "Entities",
|
|
2300
|
+
"debug.tabEvents": "Events",
|
|
2301
|
+
"debug.tabGuards": "Guards",
|
|
2302
|
+
"debug.debugger": "Debugger",
|
|
2303
|
+
"debug.failedCount": "{{count}} failed",
|
|
2304
|
+
"debug.traitsCount": "{{count}} traits",
|
|
2305
|
+
"debug.idle": "Idle",
|
|
2306
|
+
"debug.openDebugger": "Open Debugger (`)",
|
|
2307
|
+
"debug.kflowVerifier": "KFlow Verifier",
|
|
2308
|
+
"debug.allPassing": "All passing",
|
|
2309
|
+
"debug.runtime": "Runtime",
|
|
2310
|
+
"debug.close": "Close (`)",
|
|
2311
|
+
"debug.toggleHint": "Press ` to toggle | window.__orbitalVerification for automation",
|
|
2312
|
+
"replyTree.expandReplies": "Expand replies",
|
|
2313
|
+
"replyTree.collapseReplies": "Collapse replies",
|
|
2314
|
+
"replyTree.voteOnReplyBy": "Vote on reply by {{author}}",
|
|
2315
|
+
"replyTree.replyTo": "Reply to {{author}}",
|
|
2316
|
+
"replyTree.replyToPlaceholder": "Reply to {{author}}\u2026",
|
|
2317
|
+
"replyTree.reply": "Reply",
|
|
2318
|
+
"replyTree.flagReplyBy": "Flag reply by {{author}}",
|
|
2319
|
+
"replyTree.flag": "Flag",
|
|
2320
|
+
"replyTree.send": "Send",
|
|
2321
|
+
"replyTree.continueThread": "Continue thread",
|
|
2322
|
+
"replyTree.noRepliesYet": "No replies yet.",
|
|
2323
|
+
"signaturePad.label": "Signature",
|
|
2324
|
+
"signaturePad.helperText": "Draw your signature above",
|
|
2325
|
+
"signaturePad.clear": "Clear",
|
|
2326
|
+
"signaturePad.confirm": "Confirm",
|
|
2327
|
+
"qrScanner.cameraUnavailable": "Camera unavailable",
|
|
2328
|
+
"qrScanner.paused": "Paused",
|
|
2329
|
+
"qrScanner.resumeScanning": "Resume scanning",
|
|
2330
|
+
"qrScanner.pauseScanning": "Pause scanning",
|
|
2331
|
+
"qrScanner.switchToFrontCamera": "Switch to front camera",
|
|
2332
|
+
"qrScanner.switchToRearCamera": "Switch to rear camera",
|
|
2333
|
+
"qrScanner.mockScan": "Mock Scan",
|
|
2334
|
+
"docSearch.placeholder": "Search documentation...",
|
|
2335
|
+
"stateMachine.loading": "Loading state machine\u2026",
|
|
2336
|
+
"stateMachine.noStateMachine": "No state machine to visualize",
|
|
2337
|
+
"avl.trigger": "Trigger",
|
|
2338
|
+
"avl.guard": "Guard",
|
|
2339
|
+
"avl.effects": "Effects",
|
|
2340
|
+
"avl.props": "Props",
|
|
2341
|
+
"avl.entity": "Entity",
|
|
2342
|
+
"avl.traits": "Traits",
|
|
2343
|
+
"avl.transition": "Transition",
|
|
2344
|
+
"avl.onEntity": "on {{entity}}",
|
|
2345
|
+
"avl.linkedTo": "linked to {{entity}}",
|
|
2346
|
+
"avl.pressEscToZoomOut": "Press Esc to zoom out",
|
|
2347
|
+
"avl.zoomIn": "Zoom in",
|
|
2348
|
+
"avl.zoomOut": "Zoom out",
|
|
2349
|
+
"avl.orbitalLabel": "Orbital: {{name}}",
|
|
2350
|
+
"avl.orbitalLabelHighlighted": "Orbital: {{name}} (highlighted)",
|
|
2351
|
+
"avl.noTraitData": "No trait data",
|
|
2352
|
+
"avl.computingLayout": "Computing layout...",
|
|
2353
|
+
"avl.noStateMachine": "No state machine",
|
|
2354
|
+
"avl.listensFor": "listens for {{event}}",
|
|
2355
|
+
"avl.emits": "emits {{event}}",
|
|
2356
|
+
"avl.pageLayout": "Page Layout",
|
|
2357
|
+
"avl.overlaySuffix": "(overlay)",
|
|
2358
|
+
"orbPreview.previewBadge": "Preview",
|
|
2359
|
+
"orbPreview.doubleClickToOpen": "Double-click to open",
|
|
2360
|
+
"orbPreview.dropToAddAndOpen": "Drop to add and open",
|
|
2361
|
+
"orbPreview.dispatching": "Coordinator is dispatching to this orbital",
|
|
2362
|
+
"orbPreview.noPreview": "No preview available",
|
|
2363
|
+
"orbPreview.screensCount": "{{count}} screens",
|
|
2364
|
+
"detailView.noTransitionData": "No transition data",
|
|
2365
|
+
"orbInspector.required": "req",
|
|
2366
|
+
"orbInspector.addField": "Add Field",
|
|
2367
|
+
"orbInspector.serviceMode": "Service Mode",
|
|
2368
|
+
"orbInspector.standalone": "Standalone",
|
|
2369
|
+
"orbInspector.embedded": "Embedded",
|
|
2370
|
+
"orbInspector.rendersOwnUi": "Renders its own UI",
|
|
2371
|
+
"orbInspector.headless": "Headless, wired to other behaviors",
|
|
2372
|
+
"orbInspector.addEffect": "Add Effect",
|
|
2373
|
+
"orbInspector.guardExpression": "Guard expression",
|
|
2374
|
+
"orbInspector.selectPatternForStyles": "Select a pattern to view its style tokens.",
|
|
2375
|
+
"orbInspector.tokens": "Tokens",
|
|
2376
|
+
"orbInspector.noTokenContract": "No token contract declared for this pattern.",
|
|
2377
|
+
"orbInspector.variant": "Variant",
|
|
2378
|
+
"orbInspector.size": "Size",
|
|
2379
|
+
"orbInspector.statesCount": "{{count}} states",
|
|
2380
|
+
"orbInspector.onEntity": " on {{entity}}",
|
|
2381
|
+
"orbInspector.projectThemeTokens": "Project theme tokens",
|
|
2382
|
+
"orbInspector.tokenGroup.colors": "Colors",
|
|
2383
|
+
"orbInspector.tokenGroup.radii": "Radii",
|
|
2384
|
+
"orbInspector.tokenGroup.spacing": "Spacing",
|
|
2385
|
+
"orbInspector.tokenGroup.shadows": "Shadows",
|
|
2386
|
+
"orbInspector.tab.inspector": "Inspector",
|
|
2387
|
+
"orbInspector.tab.styles": "Styles",
|
|
2388
|
+
"orbInspector.tab.code": "Code",
|
|
2389
|
+
"canvas.goBackToOverview": "Go back to overview",
|
|
2390
|
+
"canvas.overview": "Overview",
|
|
2391
|
+
"canvas.expanded": "Expanded",
|
|
2392
|
+
"canvas.modulesCount": "{{count}} modules",
|
|
2393
|
+
"canvas.screensCount": "{{count}} screens",
|
|
2394
|
+
"canvas.switchToView": "Switch to {{label}} view",
|
|
2395
|
+
"lawReference.viewFullText": "View full law text",
|
|
2396
|
+
"statCard.defaultLabel": "Stat",
|
|
2397
|
+
"statCard.vsLastPeriod": "vs last period",
|
|
2398
|
+
"mediaGallery.upload": "Upload",
|
|
2399
|
+
"mediaGallery.noMediaDescription": "No media items to display.",
|
|
2400
|
+
"pagination.jumpPlaceholder": "Page",
|
|
2401
|
+
"table.selectRow": "Select row {{id}}",
|
|
2402
|
+
"card.selectItem": "Select {{item}}",
|
|
2403
|
+
"card.itemFallback": "item",
|
|
2404
|
+
"fileTree.noFiles": "No files",
|
|
2405
|
+
"masterDetail.selectItem": "Select an item to view details",
|
|
2406
|
+
"empty.createFirst": "Create your first item to get started.",
|
|
2407
|
+
"upload.dropOrBrowse": "Drop files here or click to browse",
|
|
2408
|
+
"upload.dropFilesHere": "Drop files here",
|
|
2409
|
+
"upload.accepted": "Accepted: {{accept}}",
|
|
2410
|
+
"upload.maxSize": "Max size: {{size}}",
|
|
2411
|
+
"upload.maxFiles": "Up to {{count}} files",
|
|
2412
|
+
"upload.error.maxFiles": "Maximum {{count}} files allowed",
|
|
2413
|
+
"upload.error.invalidType": "Invalid file type: {{name}}",
|
|
2414
|
+
"upload.error.tooLarge": "File too large: {{name}} (max {{size}})",
|
|
2415
|
+
"optionConstraint.requiredOne": "Required, pick 1",
|
|
2416
|
+
"optionConstraint.optionalOne": "Optional, pick up to 1",
|
|
2417
|
+
"optionConstraint.pickExactly": "Pick exactly {{count}}",
|
|
2418
|
+
"optionConstraint.pickRange": "Pick {{min}}-{{max}}",
|
|
2419
|
+
"optionConstraint.pickAtLeast": "Pick at least {{count}}",
|
|
2420
|
+
"optionConstraint.pickUpTo": "Pick up to {{count}}",
|
|
2421
|
+
"optionConstraint.optional": "Optional",
|
|
2422
|
+
"optionConstraint.outOfStock": "Out of stock",
|
|
2423
|
+
"optionConstraint.error.pickOne": "Pick 1 option",
|
|
2424
|
+
"optionConstraint.error.pickOnlyOne": "Pick only 1 option",
|
|
2425
|
+
"optionConstraint.error.pickMore": "Pick at least {{count}} more",
|
|
2426
|
+
"optionConstraint.error.removeOptions": "Remove {{count}} options",
|
|
2427
|
+
"stateMachine.pinned": "Pinned",
|
|
2428
|
+
"stateMachine.eventCount": "{{count}} events",
|
|
2429
|
+
"stateMachine.externalEffects": "External Effects",
|
|
2430
|
+
"stateMachine.legend.initial": "Initial",
|
|
2431
|
+
"stateMachine.legend.final": "Final",
|
|
2432
|
+
"stateMachine.legend.state": "State",
|
|
2433
|
+
"stateMachine.legend.multiEvent": "Multi-event"
|
|
2141
2434
|
};
|
|
2142
2435
|
}
|
|
2143
2436
|
});
|
|
@@ -5225,6 +5518,7 @@ var init_LawReferenceTooltip = __esm({
|
|
|
5225
5518
|
init_Typography();
|
|
5226
5519
|
init_Divider();
|
|
5227
5520
|
init_cn();
|
|
5521
|
+
init_useTranslate();
|
|
5228
5522
|
positionStyles2 = {
|
|
5229
5523
|
top: "bottom-full left-1/2 -translate-x-1/2 mb-2",
|
|
5230
5524
|
bottom: "top-full left-1/2 -translate-x-1/2 mt-2",
|
|
@@ -5243,6 +5537,7 @@ var init_LawReferenceTooltip = __esm({
|
|
|
5243
5537
|
position = "top",
|
|
5244
5538
|
className
|
|
5245
5539
|
}) => {
|
|
5540
|
+
const { t } = useTranslate();
|
|
5246
5541
|
const [isVisible, setIsVisible] = React85__namespace.default.useState(false);
|
|
5247
5542
|
const timeoutRef = React85__namespace.default.useRef(null);
|
|
5248
5543
|
const handleMouseEnter = () => {
|
|
@@ -5326,7 +5621,7 @@ var init_LawReferenceTooltip = __esm({
|
|
|
5326
5621
|
target: "_blank",
|
|
5327
5622
|
rel: "noopener noreferrer",
|
|
5328
5623
|
onClick: (e) => e.stopPropagation(),
|
|
5329
|
-
children: "
|
|
5624
|
+
children: t("lawReference.viewFullText")
|
|
5330
5625
|
}
|
|
5331
5626
|
)
|
|
5332
5627
|
] }),
|
|
@@ -13607,6 +13902,7 @@ var log7, SWIM_GUTTER, CENTER_W, BehaviorView;
|
|
|
13607
13902
|
var init_BehaviorView = __esm({
|
|
13608
13903
|
"components/avl/molecules/BehaviorView.tsx"() {
|
|
13609
13904
|
"use client";
|
|
13905
|
+
init_useTranslate();
|
|
13610
13906
|
init_AvlState();
|
|
13611
13907
|
init_AvlTransitionLane();
|
|
13612
13908
|
init_AvlSwimLane();
|
|
@@ -13616,6 +13912,7 @@ var init_BehaviorView = __esm({
|
|
|
13616
13912
|
SWIM_GUTTER = 120;
|
|
13617
13913
|
CENTER_W = 360;
|
|
13618
13914
|
BehaviorView = ({ data }) => {
|
|
13915
|
+
const { t } = useTranslate();
|
|
13619
13916
|
const [layout, setLayout] = React85.useState(null);
|
|
13620
13917
|
const traitName = data.traits[0]?.name;
|
|
13621
13918
|
const traitData = traitName ? data.traitDetails[traitName] : void 0;
|
|
@@ -13625,10 +13922,10 @@ var init_BehaviorView = __esm({
|
|
|
13625
13922
|
computeTraitLayout(traitData).then(setLayout).catch((err) => log7.error("compute-trait-layout-failed", { error: err instanceof Error ? err : String(err) }));
|
|
13626
13923
|
}, [dataKey]);
|
|
13627
13924
|
if (!traitData) {
|
|
13628
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-lg border border-[var(--color-border)] bg-[var(--color-card)] p-4 text-center text-[var(--color-muted-foreground)] text-sm", children: "
|
|
13925
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-lg border border-[var(--color-border)] bg-[var(--color-card)] p-4 text-center text-[var(--color-muted-foreground)] text-sm", children: t("avl.noTraitData") });
|
|
13629
13926
|
}
|
|
13630
13927
|
if (!layout) {
|
|
13631
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-lg border border-[var(--color-border)] bg-[var(--color-card)] p-4 text-center text-[var(--color-muted-foreground)] text-sm", children: "
|
|
13928
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-lg border border-[var(--color-border)] bg-[var(--color-card)] p-4 text-center text-[var(--color-muted-foreground)] text-sm", children: t("avl.computingLayout") });
|
|
13632
13929
|
}
|
|
13633
13930
|
const hasExternal = traitData.listenedEvents.length > 0 || traitData.emittedEvents.length > 0;
|
|
13634
13931
|
const viewW = hasExternal ? SWIM_GUTTER + CENTER_W + SWIM_GUTTER : CENTER_W + 60;
|
|
@@ -13644,10 +13941,7 @@ var init_BehaviorView = __esm({
|
|
|
13644
13941
|
const machineHeight = scaledH + 100;
|
|
13645
13942
|
const renderMachine = /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
|
|
13646
13943
|
/* @__PURE__ */ jsxRuntime.jsx("text", { x: CENTER_W / 2, y: 20, textAnchor: "middle", fill: "var(--color-foreground)", fontSize: 18, fontWeight: "700", fontFamily: "inherit", children: traitData.name }),
|
|
13647
|
-
/* @__PURE__ */ jsxRuntime.
|
|
13648
|
-
"on ",
|
|
13649
|
-
traitData.linkedEntity
|
|
13650
|
-
] }),
|
|
13944
|
+
/* @__PURE__ */ jsxRuntime.jsx("text", { x: CENTER_W / 2, y: 36, textAnchor: "middle", fill: "var(--color-muted-foreground)", fontSize: 11, opacity: 0.5, fontFamily: "inherit", children: t("avl.onEntity", { entity: traitData.linkedEntity }) }),
|
|
13651
13945
|
/* @__PURE__ */ jsxRuntime.jsxs("defs", { children: [
|
|
13652
13946
|
/* @__PURE__ */ jsxRuntime.jsx("marker", { id: "bvArrow", viewBox: "0 0 10 10", refX: "9", refY: "5", markerWidth: "6", markerHeight: "6", orient: "auto-start-reverse", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M 0 0 L 10 5 L 0 10 z", fill: CONNECTION_COLORS.forward.color, opacity: 0.7 }) }),
|
|
13653
13947
|
/* @__PURE__ */ jsxRuntime.jsx("marker", { id: "bvArrowBack", viewBox: "0 0 10 10", refX: "9", refY: "5", markerWidth: "6", markerHeight: "6", orient: "auto-start-reverse", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M 0 0 L 10 5 L 0 10 z", fill: CONNECTION_COLORS.backward.color, opacity: 0.5 }) })
|
|
@@ -13955,7 +14249,7 @@ var init_CodeBlock = __esm({
|
|
|
13955
14249
|
const isLolo = language === "lolo";
|
|
13956
14250
|
const activeStyle = isOrb ? orbStyle : isLolo ? loloStyle : dark__default.default;
|
|
13957
14251
|
const eventBus = useEventBus();
|
|
13958
|
-
const { t
|
|
14252
|
+
const { t } = useTranslate();
|
|
13959
14253
|
const scrollRef = React85.useRef(null);
|
|
13960
14254
|
const codeRef = React85.useRef(null);
|
|
13961
14255
|
const savedScrollLeftRef = React85.useRef(0);
|
|
@@ -14210,7 +14504,7 @@ var init_CodeBlock = __esm({
|
|
|
14210
14504
|
size: "sm",
|
|
14211
14505
|
onClick: handleCopy,
|
|
14212
14506
|
className: "opacity-0 group-hover:opacity-100 focus:opacity-100 transition-opacity text-muted-foreground hover:text-white",
|
|
14213
|
-
"aria-label": "
|
|
14507
|
+
"aria-label": t("common.copy"),
|
|
14214
14508
|
children: copied ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "check", className: "w-4 h-4 text-green-400" }) : /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "copy", className: "w-4 h-4" })
|
|
14215
14509
|
}
|
|
14216
14510
|
)
|
|
@@ -14865,7 +15159,7 @@ var init_StateMachineView = __esm({
|
|
|
14865
15159
|
const endX2 = fromState.x + Math.cos(Math.PI / 2 * loopDirection + endAngle) * fromState.radius;
|
|
14866
15160
|
const endY2 = fromState.y + Math.sin(Math.PI / 2 * loopDirection + endAngle) * fromState.radius;
|
|
14867
15161
|
const isSingle2 = bundle.labels.length === 1;
|
|
14868
|
-
const labelText2 = isSingle2 ? bundle.labels[0].event :
|
|
15162
|
+
const labelText2 = isSingle2 ? bundle.labels[0].event : t("stateMachine.eventCount", { count: bundle.labels.length });
|
|
14869
15163
|
const bundleColor2 = isSingle2 ? config.colors.arrow : "var(--color-accent)";
|
|
14870
15164
|
const labelWidth2 = labelText2.length * 9 + (isSingle2 ? 24 : 40);
|
|
14871
15165
|
const cx = fromState.x;
|
|
@@ -14991,7 +15285,7 @@ var init_StateMachineView = __esm({
|
|
|
14991
15285
|
const controlX = midX + perpX;
|
|
14992
15286
|
const controlY = midY + perpY;
|
|
14993
15287
|
const isSingle = bundle.labels.length === 1;
|
|
14994
|
-
const labelText = isSingle ? bundle.labels[0].event :
|
|
15288
|
+
const labelText = isSingle ? bundle.labels[0].event : t("stateMachine.eventCount", { count: bundle.labels.length });
|
|
14995
15289
|
const labelWidth = labelText.length * 9 + (isSingle ? 24 : 40);
|
|
14996
15290
|
const bundleColor = isSingle ? config.colors.arrow : "var(--color-accent)";
|
|
14997
15291
|
const curveMidpoint = {
|
|
@@ -15146,7 +15440,7 @@ var init_StateMachineView = __esm({
|
|
|
15146
15440
|
{
|
|
15147
15441
|
className: "absolute -top-2 left-1/2 transform -translate-x-1/2 px-2 py-0.5 rounded-full",
|
|
15148
15442
|
style: { backgroundColor: "var(--color-success)" },
|
|
15149
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", weight: "semibold", style: { color: "var(--color-success-foreground)" }, children: "
|
|
15443
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", weight: "semibold", style: { color: "var(--color-success-foreground)" }, children: t("stateMachine.pinned") })
|
|
15150
15444
|
}
|
|
15151
15445
|
),
|
|
15152
15446
|
!isSingle && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -15168,10 +15462,7 @@ var init_StateMachineView = __esm({
|
|
|
15168
15462
|
{
|
|
15169
15463
|
className: "ml-2 px-2 py-0.5 rounded-full",
|
|
15170
15464
|
style: { backgroundColor: "var(--color-accent)" },
|
|
15171
|
-
children: /* @__PURE__ */ jsxRuntime.
|
|
15172
|
-
bundle.labels.length,
|
|
15173
|
-
" events"
|
|
15174
|
-
] })
|
|
15465
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", style: { color: "var(--color-accent-foreground)" }, children: t("stateMachine.eventCount", { count: bundle.labels.length }) })
|
|
15175
15466
|
}
|
|
15176
15467
|
)
|
|
15177
15468
|
]
|
|
@@ -15316,7 +15607,7 @@ var init_StateMachineView = __esm({
|
|
|
15316
15607
|
align: "center",
|
|
15317
15608
|
className: "mb-2",
|
|
15318
15609
|
style: { color: "var(--color-warning)", fontSize: "13px" },
|
|
15319
|
-
children: "
|
|
15610
|
+
children: t("stateMachine.externalEffects")
|
|
15320
15611
|
}
|
|
15321
15612
|
),
|
|
15322
15613
|
outputs.outputs.map((output, idx) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -15336,10 +15627,10 @@ var init_StateMachineView = __esm({
|
|
|
15336
15627
|
Legend = ({ config, y }) => {
|
|
15337
15628
|
const { t } = useTranslate();
|
|
15338
15629
|
const items = [
|
|
15339
|
-
{ label: "
|
|
15340
|
-
{ label: "
|
|
15341
|
-
{ label: "
|
|
15342
|
-
{ label: "
|
|
15630
|
+
{ key: "initial", label: t("stateMachine.legend.initial"), color: config.colors.initialNode, isMultiEvent: false },
|
|
15631
|
+
{ key: "final", label: t("stateMachine.legend.final"), color: config.colors.finalNode, isMultiEvent: false },
|
|
15632
|
+
{ key: "state", label: t("stateMachine.legend.state"), color: config.colors.nodeBorder, isMultiEvent: false },
|
|
15633
|
+
{ key: "multiEvent", label: t("stateMachine.legend.multiEvent"), color: "var(--color-accent)", isMultiEvent: true }
|
|
15343
15634
|
];
|
|
15344
15635
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
15345
15636
|
HStack,
|
|
@@ -15354,8 +15645,8 @@ var init_StateMachineView = __esm({
|
|
|
15354
15645
|
{
|
|
15355
15646
|
className: "w-3 h-3 rounded-full",
|
|
15356
15647
|
style: {
|
|
15357
|
-
backgroundColor: item.
|
|
15358
|
-
border: item.
|
|
15648
|
+
backgroundColor: item.isMultiEvent ? item.color : config.colors.node,
|
|
15649
|
+
border: !item.isMultiEvent ? `2px solid ${item.color}` : "none"
|
|
15359
15650
|
}
|
|
15360
15651
|
}
|
|
15361
15652
|
),
|
|
@@ -15367,7 +15658,7 @@ var init_StateMachineView = __esm({
|
|
|
15367
15658
|
children: item.label
|
|
15368
15659
|
}
|
|
15369
15660
|
)
|
|
15370
|
-
] }, item.
|
|
15661
|
+
] }, item.key))
|
|
15371
15662
|
}
|
|
15372
15663
|
);
|
|
15373
15664
|
};
|
|
@@ -16161,13 +16452,13 @@ var init_JazariStateMachine = __esm({
|
|
|
16161
16452
|
);
|
|
16162
16453
|
}, [resolvedTrait, entityFields]);
|
|
16163
16454
|
if (isLoading) {
|
|
16164
|
-
return /* @__PURE__ */ jsxRuntime.jsx(LoadingState, { message: "
|
|
16455
|
+
return /* @__PURE__ */ jsxRuntime.jsx(LoadingState, { message: t("stateMachine.loading") });
|
|
16165
16456
|
}
|
|
16166
16457
|
if (error) {
|
|
16167
16458
|
return /* @__PURE__ */ jsxRuntime.jsx(ErrorState, { message: error instanceof Error ? error.message : String(error) });
|
|
16168
16459
|
}
|
|
16169
16460
|
if (!resolvedTrait || !layoutData || layoutData.states.length === 0) {
|
|
16170
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { padding: "lg", className: cn("text-center", className), children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", className: "opacity-60", children: "
|
|
16461
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box, { padding: "lg", className: cn("text-center", className), children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", className: "opacity-60", children: t("stateMachine.noStateMachine") }) });
|
|
16171
16462
|
}
|
|
16172
16463
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
16173
16464
|
StateMachineView,
|
|
@@ -17211,13 +17502,13 @@ var init_LayoutPatterns = __esm({
|
|
|
17211
17502
|
function generateRuleId() {
|
|
17212
17503
|
return `rule-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
17213
17504
|
}
|
|
17214
|
-
function questionsToOptions(questions,
|
|
17505
|
+
function questionsToOptions(questions, endOfSurveyLabel) {
|
|
17215
17506
|
const opts = questions.map((q) => ({
|
|
17216
17507
|
value: q.id,
|
|
17217
17508
|
label: q.label
|
|
17218
17509
|
}));
|
|
17219
|
-
if (
|
|
17220
|
-
opts.push({ value: END_OF_SURVEY, label:
|
|
17510
|
+
if (endOfSurveyLabel !== null) {
|
|
17511
|
+
opts.push({ value: END_OF_SURVEY, label: endOfSurveyLabel });
|
|
17221
17512
|
}
|
|
17222
17513
|
return opts;
|
|
17223
17514
|
}
|
|
@@ -17226,7 +17517,7 @@ function isRuleBroken(rule, questions) {
|
|
|
17226
17517
|
const targetExists = rule.targetQuestionId === END_OF_SURVEY || questions.some((q) => q.id === rule.targetQuestionId);
|
|
17227
17518
|
return !sourceExists || !targetExists;
|
|
17228
17519
|
}
|
|
17229
|
-
var END_OF_SURVEY,
|
|
17520
|
+
var END_OF_SURVEY, RuleRow, NODE_WIDTH, NODE_HEIGHT, NODE_GAP_Y, PADDING, LogicGraph, BranchingLogicBuilder;
|
|
17230
17521
|
var init_BranchingLogicBuilder = __esm({
|
|
17231
17522
|
"components/core/molecules/BranchingLogicBuilder.tsx"() {
|
|
17232
17523
|
"use client";
|
|
@@ -17239,14 +17530,9 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17239
17530
|
init_FilterPill();
|
|
17240
17531
|
init_Box();
|
|
17241
17532
|
init_useEventBus();
|
|
17533
|
+
init_useTranslate();
|
|
17242
17534
|
init_cn();
|
|
17243
17535
|
END_OF_SURVEY = "end-of-survey";
|
|
17244
|
-
OPERATOR_OPTIONS = [
|
|
17245
|
-
{ value: "equals", label: "equals" },
|
|
17246
|
-
{ value: "not-equals", label: "does not equal" },
|
|
17247
|
-
{ value: "contains", label: "contains" },
|
|
17248
|
-
{ value: "in", label: "is one of" }
|
|
17249
|
-
];
|
|
17250
17536
|
RuleRow = ({
|
|
17251
17537
|
rule,
|
|
17252
17538
|
questions,
|
|
@@ -17255,8 +17541,21 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17255
17541
|
onChange,
|
|
17256
17542
|
onDelete
|
|
17257
17543
|
}) => {
|
|
17258
|
-
const
|
|
17259
|
-
const
|
|
17544
|
+
const { t } = useTranslate();
|
|
17545
|
+
const operatorOptions = React85.useMemo(
|
|
17546
|
+
() => [
|
|
17547
|
+
{ value: "equals", label: t("branchingLogic.operatorEquals") },
|
|
17548
|
+
{ value: "not-equals", label: t("branchingLogic.operatorNotEquals") },
|
|
17549
|
+
{ value: "contains", label: t("branchingLogic.operatorContains") },
|
|
17550
|
+
{ value: "in", label: t("branchingLogic.operatorIn") }
|
|
17551
|
+
],
|
|
17552
|
+
[t]
|
|
17553
|
+
);
|
|
17554
|
+
const sourceOptions = React85.useMemo(() => questionsToOptions(questions, null), [questions]);
|
|
17555
|
+
const targetOptions = React85.useMemo(
|
|
17556
|
+
() => questionsToOptions(questions, t("branchingLogic.endOfSurvey")),
|
|
17557
|
+
[questions, t]
|
|
17558
|
+
);
|
|
17260
17559
|
const sourceQuestion = questions.find((q) => q.id === rule.sourceQuestionId);
|
|
17261
17560
|
const valueOptions = React85.useMemo(() => {
|
|
17262
17561
|
if (!sourceQuestion?.optionValues) return [];
|
|
@@ -17301,22 +17600,22 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17301
17600
|
),
|
|
17302
17601
|
children: [
|
|
17303
17602
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex flex-wrap items-center gap-2", children: [
|
|
17304
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "label", weight: "semibold", className: "shrink-0", children: "
|
|
17603
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "label", weight: "semibold", className: "shrink-0", children: t("branchingLogic.if") }),
|
|
17305
17604
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "min-w-[10rem] grow basis-40", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
17306
17605
|
Select,
|
|
17307
17606
|
{
|
|
17308
17607
|
options: sourceOptions,
|
|
17309
17608
|
value: rule.sourceQuestionId,
|
|
17310
|
-
placeholder: "
|
|
17609
|
+
placeholder: t("branchingLogic.selectQuestion"),
|
|
17311
17610
|
onChange: handleSource,
|
|
17312
17611
|
disabled: readOnly,
|
|
17313
|
-
error: broken ? "
|
|
17612
|
+
error: broken ? t("branchingLogic.brokenReference") : void 0
|
|
17314
17613
|
}
|
|
17315
17614
|
) }),
|
|
17316
17615
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "min-w-[8rem] basis-32", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
17317
17616
|
Select,
|
|
17318
17617
|
{
|
|
17319
|
-
options:
|
|
17618
|
+
options: operatorOptions,
|
|
17320
17619
|
value: rule.operator,
|
|
17321
17620
|
onChange: handleOperator,
|
|
17322
17621
|
disabled: readOnly
|
|
@@ -17339,7 +17638,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17339
17638
|
{
|
|
17340
17639
|
options: valueOptions.filter((o) => !chips.includes(o.value)),
|
|
17341
17640
|
value: "",
|
|
17342
|
-
placeholder: "
|
|
17641
|
+
placeholder: t("branchingLogic.addValue"),
|
|
17343
17642
|
onChange: handleAddChip,
|
|
17344
17643
|
disabled: readOnly
|
|
17345
17644
|
}
|
|
@@ -17347,7 +17646,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17347
17646
|
Input,
|
|
17348
17647
|
{
|
|
17349
17648
|
inputType: "text",
|
|
17350
|
-
placeholder: "
|
|
17649
|
+
placeholder: t("branchingLogic.typeValuePressEnter"),
|
|
17351
17650
|
value: "",
|
|
17352
17651
|
onKeyDown: (e) => {
|
|
17353
17652
|
if (e.key !== "Enter") return;
|
|
@@ -17365,7 +17664,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17365
17664
|
{
|
|
17366
17665
|
options: valueOptions,
|
|
17367
17666
|
value: scalarValue,
|
|
17368
|
-
placeholder: "
|
|
17667
|
+
placeholder: t("branchingLogic.selectValue"),
|
|
17369
17668
|
onChange: (e) => onChange({ ...rule, value: e.target.value }),
|
|
17370
17669
|
disabled: readOnly
|
|
17371
17670
|
}
|
|
@@ -17373,7 +17672,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17373
17672
|
Input,
|
|
17374
17673
|
{
|
|
17375
17674
|
inputType: "text",
|
|
17376
|
-
placeholder: "
|
|
17675
|
+
placeholder: t("branchingLogic.value"),
|
|
17377
17676
|
value: scalarValue,
|
|
17378
17677
|
onChange: handleScalarValue,
|
|
17379
17678
|
disabled: readOnly
|
|
@@ -17381,17 +17680,17 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17381
17680
|
) }),
|
|
17382
17681
|
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "label", weight: "semibold", className: "shrink-0 inline-flex items-center gap-1", children: [
|
|
17383
17682
|
/* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.ArrowRight, { className: "h-4 w-4" }),
|
|
17384
|
-
"
|
|
17683
|
+
t("branchingLogic.goTo")
|
|
17385
17684
|
] }),
|
|
17386
17685
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "min-w-[10rem] grow basis-40", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
17387
17686
|
Select,
|
|
17388
17687
|
{
|
|
17389
17688
|
options: targetOptions,
|
|
17390
17689
|
value: rule.targetQuestionId,
|
|
17391
|
-
placeholder: "
|
|
17690
|
+
placeholder: t("branchingLogic.selectTarget"),
|
|
17392
17691
|
onChange: handleTarget,
|
|
17393
17692
|
disabled: readOnly,
|
|
17394
|
-
error: broken && rule.targetQuestionId !== END_OF_SURVEY ? "
|
|
17693
|
+
error: broken && rule.targetQuestionId !== END_OF_SURVEY ? t("branchingLogic.brokenReference") : void 0
|
|
17395
17694
|
}
|
|
17396
17695
|
) }),
|
|
17397
17696
|
!readOnly && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -17403,11 +17702,11 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17403
17702
|
action: "DELETE_RULE",
|
|
17404
17703
|
actionPayload: { ruleId: rule.id },
|
|
17405
17704
|
onClick: onDelete,
|
|
17406
|
-
"aria-label": "
|
|
17705
|
+
"aria-label": t("branchingLogic.deleteRule")
|
|
17407
17706
|
}
|
|
17408
17707
|
)
|
|
17409
17708
|
] }),
|
|
17410
|
-
broken && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "error", size: "sm", label: "
|
|
17709
|
+
broken && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "error", size: "sm", label: t("branchingLogic.brokenReference") })
|
|
17411
17710
|
]
|
|
17412
17711
|
}
|
|
17413
17712
|
);
|
|
@@ -17417,10 +17716,12 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17417
17716
|
NODE_GAP_Y = 80;
|
|
17418
17717
|
PADDING = 32;
|
|
17419
17718
|
LogicGraph = ({ questions, rules }) => {
|
|
17719
|
+
const { t } = useTranslate();
|
|
17720
|
+
const endOfSurveyLabel = t("branchingLogic.endOfSurvey");
|
|
17420
17721
|
const layout = React85.useMemo(() => {
|
|
17421
17722
|
const items = [
|
|
17422
17723
|
...questions.map((q) => ({ id: q.id, label: q.label, isEnd: false })),
|
|
17423
|
-
{ id: END_OF_SURVEY, label:
|
|
17724
|
+
{ id: END_OF_SURVEY, label: endOfSurveyLabel, isEnd: true }
|
|
17424
17725
|
];
|
|
17425
17726
|
const positions = {};
|
|
17426
17727
|
items.forEach((item, i) => {
|
|
@@ -17432,14 +17733,14 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17432
17733
|
const width = NODE_WIDTH + PADDING * 2 + 220;
|
|
17433
17734
|
const height = PADDING * 2 + items.length * (NODE_HEIGHT + NODE_GAP_Y);
|
|
17434
17735
|
return { items, positions, width, height };
|
|
17435
|
-
}, [questions]);
|
|
17736
|
+
}, [questions, endOfSurveyLabel]);
|
|
17436
17737
|
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "overflow-auto rounded-container border border-border bg-card p-2", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
17437
17738
|
"svg",
|
|
17438
17739
|
{
|
|
17439
17740
|
width: layout.width,
|
|
17440
17741
|
height: layout.height,
|
|
17441
17742
|
role: "img",
|
|
17442
|
-
"aria-label": "
|
|
17743
|
+
"aria-label": t("branchingLogic.graphAriaLabel"),
|
|
17443
17744
|
style: { display: "block" },
|
|
17444
17745
|
children: [
|
|
17445
17746
|
/* @__PURE__ */ jsxRuntime.jsx("defs", { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -17547,6 +17848,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17547
17848
|
readOnly = false,
|
|
17548
17849
|
className
|
|
17549
17850
|
}) => {
|
|
17851
|
+
const { t } = useTranslate();
|
|
17550
17852
|
const eventBus = useEventBus();
|
|
17551
17853
|
const questions = Array.isArray(questionsProp) ? questionsProp : [];
|
|
17552
17854
|
const rulesInitial = Array.isArray(rulesProp) ? rulesProp : [];
|
|
@@ -17599,16 +17901,23 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17599
17901
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex flex-wrap items-center justify-between gap-2", children: [
|
|
17600
17902
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex items-center gap-2", children: [
|
|
17601
17903
|
/* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.GitBranch, { className: "h-5 w-5 text-foreground" }),
|
|
17602
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "subheading", weight: "semibold", children: "
|
|
17904
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "subheading", weight: "semibold", children: t("branchingLogic.title") }),
|
|
17603
17905
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
17604
17906
|
Badge,
|
|
17605
17907
|
{
|
|
17606
17908
|
variant: "neutral",
|
|
17607
17909
|
size: "sm",
|
|
17608
|
-
label:
|
|
17910
|
+
label: rules.length === 1 ? t("branchingLogic.ruleCountOne", { count: rules.length }) : t("branchingLogic.ruleCountOther", { count: rules.length })
|
|
17609
17911
|
}
|
|
17610
17912
|
),
|
|
17611
|
-
brokenCount > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
17913
|
+
brokenCount > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
17914
|
+
Badge,
|
|
17915
|
+
{
|
|
17916
|
+
variant: "error",
|
|
17917
|
+
size: "sm",
|
|
17918
|
+
label: t("branchingLogic.brokenCount", { count: brokenCount })
|
|
17919
|
+
}
|
|
17920
|
+
)
|
|
17612
17921
|
] }),
|
|
17613
17922
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex items-center gap-1 rounded-sm border border-border bg-card p-0.5", children: [
|
|
17614
17923
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -17619,7 +17928,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17619
17928
|
leftIcon: LucideIcons2.Pencil,
|
|
17620
17929
|
action: "VIEW_EDIT",
|
|
17621
17930
|
onClick: () => setView("edit"),
|
|
17622
|
-
children: "
|
|
17931
|
+
children: t("branchingLogic.rules")
|
|
17623
17932
|
}
|
|
17624
17933
|
),
|
|
17625
17934
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -17630,13 +17939,13 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17630
17939
|
leftIcon: LucideIcons2.Eye,
|
|
17631
17940
|
action: "VIEW_GRAPH",
|
|
17632
17941
|
onClick: () => setView("graph"),
|
|
17633
|
-
children: "
|
|
17942
|
+
children: t("branchingLogic.logicGraph")
|
|
17634
17943
|
}
|
|
17635
17944
|
)
|
|
17636
17945
|
] })
|
|
17637
17946
|
] }),
|
|
17638
17947
|
view === "edit" ? /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex flex-col gap-2", children: [
|
|
17639
|
-
rules.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(Card, { variant: "bordered", padding: "lg", className: "text-center", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", color: "muted", children: noQuestions ? "
|
|
17948
|
+
rules.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(Card, { variant: "bordered", padding: "lg", className: "text-center", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", color: "muted", children: noQuestions ? t("branchingLogic.emptyNoQuestions") : t("branchingLogic.emptyNoRules") }) }) : rules.map((rule) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
17640
17949
|
RuleRow,
|
|
17641
17950
|
{
|
|
17642
17951
|
rule,
|
|
@@ -17657,7 +17966,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17657
17966
|
action: "ADD_RULE",
|
|
17658
17967
|
onClick: handleAddRule,
|
|
17659
17968
|
disabled: noQuestions,
|
|
17660
|
-
children: "
|
|
17969
|
+
children: t("branchingLogic.addRule")
|
|
17661
17970
|
}
|
|
17662
17971
|
) })
|
|
17663
17972
|
] }) : /* @__PURE__ */ jsxRuntime.jsx(LogicGraph, { questions, rules })
|
|
@@ -18284,7 +18593,7 @@ function CalendarGrid({
|
|
|
18284
18593
|
onClick: stepPrev,
|
|
18285
18594
|
"aria-disabled": !canPrev || void 0,
|
|
18286
18595
|
"aria-label": t("aria.previousDays"),
|
|
18287
|
-
children: "
|
|
18596
|
+
children: t("nav.previous")
|
|
18288
18597
|
}
|
|
18289
18598
|
),
|
|
18290
18599
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground", children: formatDateRange(visibleDays[0], visibleDays[visibleDays.length - 1]) }),
|
|
@@ -18297,7 +18606,7 @@ function CalendarGrid({
|
|
|
18297
18606
|
onClick: stepNext,
|
|
18298
18607
|
"aria-disabled": !canNext || void 0,
|
|
18299
18608
|
"aria-label": t("aria.nextDays"),
|
|
18300
|
-
children: "
|
|
18609
|
+
children: t("nav.next")
|
|
18301
18610
|
}
|
|
18302
18611
|
)
|
|
18303
18612
|
] }),
|
|
@@ -19847,7 +20156,7 @@ var init_Pagination = __esm({
|
|
|
19847
20156
|
type: "number",
|
|
19848
20157
|
value: jumpToPage,
|
|
19849
20158
|
onChange: (e) => setJumpToPage(e.target.value),
|
|
19850
|
-
placeholder: "
|
|
20159
|
+
placeholder: t("pagination.jumpPlaceholder"),
|
|
19851
20160
|
className: "w-20",
|
|
19852
20161
|
onKeyDown: (e) => {
|
|
19853
20162
|
if (e.key === "Enter") {
|
|
@@ -19985,13 +20294,10 @@ var init_CardGrid = __esm({
|
|
|
19985
20294
|
return children;
|
|
19986
20295
|
}
|
|
19987
20296
|
if (isLoading) {
|
|
19988
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "col-span-full text-center py-8 text-muted-foreground", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", color: "secondary", children: "
|
|
20297
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "col-span-full text-center py-8 text-muted-foreground", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", color: "secondary", children: t("loading.items") }) });
|
|
19989
20298
|
}
|
|
19990
20299
|
if (error) {
|
|
19991
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "col-span-full text-center py-8 text-error", children: /* @__PURE__ */ jsxRuntime.
|
|
19992
|
-
"Error loading items: ",
|
|
19993
|
-
error.message
|
|
19994
|
-
] }) });
|
|
20300
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "col-span-full text-center py-8 text-error", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", color: "error", children: t("error.loadFailed", { message: error.message }) }) });
|
|
19995
20301
|
}
|
|
19996
20302
|
if (normalizedData.length === 0) {
|
|
19997
20303
|
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "col-span-full text-center py-12 text-muted-foreground", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", color: "secondary", children: t("empty.noItems") || "No items found" }) });
|
|
@@ -23857,7 +24163,7 @@ function DataGrid({
|
|
|
23857
24163
|
onChange: () => toggleSelection(id),
|
|
23858
24164
|
onClick: (e) => e.stopPropagation(),
|
|
23859
24165
|
className: "w-4 h-4 mt-1 flex-shrink-0 accent-primary",
|
|
23860
|
-
"aria-label":
|
|
24166
|
+
"aria-label": t("card.selectItem", { item: titleValue !== void 0 ? String(titleValue) : t("card.itemFallback") })
|
|
23861
24167
|
}
|
|
23862
24168
|
),
|
|
23863
24169
|
/* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "xs", className: "flex-1 min-w-0", children: [
|
|
@@ -24055,7 +24361,7 @@ function formatDate3(value) {
|
|
|
24055
24361
|
if (isNaN(d.getTime())) return String(value);
|
|
24056
24362
|
return d.toLocaleDateString(void 0, { year: "numeric", month: "short", day: "numeric" });
|
|
24057
24363
|
}
|
|
24058
|
-
function formatValue2(value, format) {
|
|
24364
|
+
function formatValue2(value, format, boolLabels) {
|
|
24059
24365
|
if (value === void 0 || value === null) return "";
|
|
24060
24366
|
switch (format) {
|
|
24061
24367
|
case "date":
|
|
@@ -24067,7 +24373,7 @@ function formatValue2(value, format) {
|
|
|
24067
24373
|
case "percent":
|
|
24068
24374
|
return typeof value === "number" ? `${Math.round(value)}%` : String(value);
|
|
24069
24375
|
case "boolean":
|
|
24070
|
-
return value ? "Yes" : "No";
|
|
24376
|
+
return value ? boolLabels?.yes ?? "Yes" : boolLabels?.no ?? "No";
|
|
24071
24377
|
default:
|
|
24072
24378
|
return String(value);
|
|
24073
24379
|
}
|
|
@@ -24363,7 +24669,7 @@ function DataList({
|
|
|
24363
24669
|
field.label ?? fieldLabel3(field.name),
|
|
24364
24670
|
":"
|
|
24365
24671
|
] }),
|
|
24366
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", children: formatValue2(value, field.format) })
|
|
24672
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", children: formatValue2(value, field.format, { yes: t("common.yes"), no: t("common.no") }) })
|
|
24367
24673
|
] }, field.name);
|
|
24368
24674
|
}) }),
|
|
24369
24675
|
progressFields.map((field) => {
|
|
@@ -24493,6 +24799,7 @@ var init_FileTree = __esm({
|
|
|
24493
24799
|
init_Box();
|
|
24494
24800
|
init_Typography();
|
|
24495
24801
|
init_Icon();
|
|
24802
|
+
init_useTranslate();
|
|
24496
24803
|
TreeNodeItem = ({
|
|
24497
24804
|
node,
|
|
24498
24805
|
depth,
|
|
@@ -24578,8 +24885,9 @@ var init_FileTree = __esm({
|
|
|
24578
24885
|
className,
|
|
24579
24886
|
indent = 16
|
|
24580
24887
|
}) => {
|
|
24888
|
+
const { t } = useTranslate();
|
|
24581
24889
|
if (tree.length === 0) {
|
|
24582
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: `p-4 ${className ?? ""}`, children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "muted", children: "
|
|
24890
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: `p-4 ${className ?? ""}`, children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "muted", children: t("fileTree.noFiles") }) });
|
|
24583
24891
|
}
|
|
24584
24892
|
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: `py-1 overflow-y-auto ${className ?? ""}`, role: "tree", children: tree.map((node) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
24585
24893
|
TreeNodeItem,
|
|
@@ -24698,6 +25006,7 @@ var init_FilterGroup = __esm({
|
|
|
24698
25006
|
init_Icon();
|
|
24699
25007
|
init_useEventBus();
|
|
24700
25008
|
init_useQuerySingleton();
|
|
25009
|
+
init_useTranslate();
|
|
24701
25010
|
resolveFilterType = (filter) => filter.filterType ?? filter.type;
|
|
24702
25011
|
lookStyles6 = {
|
|
24703
25012
|
toolbar: "",
|
|
@@ -24718,6 +25027,7 @@ var init_FilterGroup = __esm({
|
|
|
24718
25027
|
isLoading,
|
|
24719
25028
|
look = "toolbar"
|
|
24720
25029
|
}) => {
|
|
25030
|
+
const { t } = useTranslate();
|
|
24721
25031
|
const eventBus = useEventBus();
|
|
24722
25032
|
const queryState = useQuerySingleton(query);
|
|
24723
25033
|
const [selectedValues, setSelectedValues] = React85.useState(
|
|
@@ -24799,7 +25109,7 @@ var init_FilterGroup = __esm({
|
|
|
24799
25109
|
"px-3 py-1.5 text-sm font-medium transition-all duration-[var(--transition-fast)]",
|
|
24800
25110
|
!selectedValues[filter.field] ? "bg-primary text-primary-foreground" : "bg-card text-muted-foreground hover:bg-muted"
|
|
24801
25111
|
),
|
|
24802
|
-
children: "
|
|
25112
|
+
children: t("filterGroup.all")
|
|
24803
25113
|
}
|
|
24804
25114
|
),
|
|
24805
25115
|
filter.options?.map((option) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -24827,7 +25137,7 @@ var init_FilterGroup = __esm({
|
|
|
24827
25137
|
size: "sm",
|
|
24828
25138
|
onClick: handleClearAll,
|
|
24829
25139
|
leftIcon: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "x", className: "h-3.5 w-3.5" }),
|
|
24830
|
-
children: "
|
|
25140
|
+
children: t("filterGroup.clear")
|
|
24831
25141
|
}
|
|
24832
25142
|
)
|
|
24833
25143
|
]
|
|
@@ -24838,7 +25148,7 @@ var init_FilterGroup = __esm({
|
|
|
24838
25148
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col gap-4", lookStyles6[look], className), children: [
|
|
24839
25149
|
showIcon && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-muted-foreground", children: [
|
|
24840
25150
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "filter", className: "h-4 w-4" }),
|
|
24841
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: "
|
|
25151
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: t("filterGroup.filters") })
|
|
24842
25152
|
] }),
|
|
24843
25153
|
filters.map((filter) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
24844
25154
|
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-xs font-bold text-muted-foreground uppercase tracking-wide", children: filter.label }),
|
|
@@ -24861,7 +25171,7 @@ var init_FilterGroup = __esm({
|
|
|
24861
25171
|
`${filter.field}_from`,
|
|
24862
25172
|
e.target.value || null
|
|
24863
25173
|
),
|
|
24864
|
-
placeholder: "
|
|
25174
|
+
placeholder: t("filterGroup.from"),
|
|
24865
25175
|
clearable: true,
|
|
24866
25176
|
onClear: () => handleFilterSelect(`${filter.field}_from`, null)
|
|
24867
25177
|
}
|
|
@@ -24875,7 +25185,7 @@ var init_FilterGroup = __esm({
|
|
|
24875
25185
|
`${filter.field}_to`,
|
|
24876
25186
|
e.target.value || null
|
|
24877
25187
|
),
|
|
24878
|
-
placeholder: "
|
|
25188
|
+
placeholder: t("filterGroup.to"),
|
|
24879
25189
|
clearable: true,
|
|
24880
25190
|
onClear: () => handleFilterSelect(`${filter.field}_to`, null)
|
|
24881
25191
|
}
|
|
@@ -24895,7 +25205,7 @@ var init_FilterGroup = __esm({
|
|
|
24895
25205
|
value: selectedValues[filter.field] || "all",
|
|
24896
25206
|
onChange: (e) => handleFilterSelect(filter.field, e.target.value),
|
|
24897
25207
|
options: [
|
|
24898
|
-
{ value: "all", label: "
|
|
25208
|
+
{ value: "all", label: t("filterGroup.all") },
|
|
24899
25209
|
...filter.options?.map((opt) => ({
|
|
24900
25210
|
value: opt,
|
|
24901
25211
|
label: opt
|
|
@@ -24912,7 +25222,7 @@ var init_FilterGroup = __esm({
|
|
|
24912
25222
|
onClick: handleClearAll,
|
|
24913
25223
|
leftIcon: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "x", className: "h-3.5 w-3.5" }),
|
|
24914
25224
|
className: "self-start",
|
|
24915
|
-
children: "
|
|
25225
|
+
children: t("filterGroup.clearAll")
|
|
24916
25226
|
}
|
|
24917
25227
|
)
|
|
24918
25228
|
] });
|
|
@@ -24978,7 +25288,7 @@ var init_FilterGroup = __esm({
|
|
|
24978
25288
|
value: selectedValues[filter.field] || "all",
|
|
24979
25289
|
onChange: (e) => handleFilterSelect(filter.field, e.target.value),
|
|
24980
25290
|
options: [
|
|
24981
|
-
{ value: "all", label:
|
|
25291
|
+
{ value: "all", label: t("filterGroup.allOf", { label: filter.label }) },
|
|
24982
25292
|
...filter.options?.map((opt) => ({
|
|
24983
25293
|
value: opt,
|
|
24984
25294
|
label: opt
|
|
@@ -25007,7 +25317,7 @@ var init_FilterGroup = __esm({
|
|
|
25007
25317
|
field
|
|
25008
25318
|
);
|
|
25009
25319
|
}),
|
|
25010
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", onClick: handleClearAll, children: "
|
|
25320
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", onClick: handleClearAll, children: t("filterGroup.clearAll") })
|
|
25011
25321
|
] })
|
|
25012
25322
|
]
|
|
25013
25323
|
}
|
|
@@ -25032,7 +25342,7 @@ var init_FilterGroup = __esm({
|
|
|
25032
25342
|
className: "text-muted-foreground",
|
|
25033
25343
|
children: [
|
|
25034
25344
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "filter", className: "h-4 w-4" }),
|
|
25035
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: "
|
|
25345
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: t("filterGroup.filters") })
|
|
25036
25346
|
]
|
|
25037
25347
|
}
|
|
25038
25348
|
),
|
|
@@ -25058,7 +25368,7 @@ var init_FilterGroup = __esm({
|
|
|
25058
25368
|
`${filter.field}_from`,
|
|
25059
25369
|
e.target.value || null
|
|
25060
25370
|
),
|
|
25061
|
-
placeholder: "
|
|
25371
|
+
placeholder: t("filterGroup.from"),
|
|
25062
25372
|
clearable: true,
|
|
25063
25373
|
onClear: () => handleFilterSelect(`${filter.field}_from`, null),
|
|
25064
25374
|
className: "min-w-[130px]"
|
|
@@ -25074,7 +25384,7 @@ var init_FilterGroup = __esm({
|
|
|
25074
25384
|
`${filter.field}_to`,
|
|
25075
25385
|
e.target.value || null
|
|
25076
25386
|
),
|
|
25077
|
-
placeholder: "
|
|
25387
|
+
placeholder: t("filterGroup.to"),
|
|
25078
25388
|
clearable: true,
|
|
25079
25389
|
onClear: () => handleFilterSelect(`${filter.field}_to`, null),
|
|
25080
25390
|
className: "min-w-[130px]"
|
|
@@ -25096,7 +25406,7 @@ var init_FilterGroup = __esm({
|
|
|
25096
25406
|
value: selectedValues[filter.field] || "all",
|
|
25097
25407
|
onChange: (e) => handleFilterSelect(filter.field, e.target.value),
|
|
25098
25408
|
options: [
|
|
25099
|
-
{ value: "all", label: "
|
|
25409
|
+
{ value: "all", label: t("filterGroup.all") },
|
|
25100
25410
|
...filter.options?.map((opt) => ({
|
|
25101
25411
|
value: opt,
|
|
25102
25412
|
label: opt
|
|
@@ -25107,10 +25417,7 @@ var init_FilterGroup = __esm({
|
|
|
25107
25417
|
)
|
|
25108
25418
|
] }, filter.field)),
|
|
25109
25419
|
activeFilterCount > 0 && /* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", align: "center", className: "ml-auto", children: [
|
|
25110
|
-
/* @__PURE__ */ jsxRuntime.
|
|
25111
|
-
activeFilterCount,
|
|
25112
|
-
" active"
|
|
25113
|
-
] }),
|
|
25420
|
+
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "primary", size: "md", children: t("filterGroup.activeCount", { count: activeFilterCount }) }),
|
|
25114
25421
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
25115
25422
|
Button,
|
|
25116
25423
|
{
|
|
@@ -25118,7 +25425,7 @@ var init_FilterGroup = __esm({
|
|
|
25118
25425
|
size: "sm",
|
|
25119
25426
|
onClick: handleClearAll,
|
|
25120
25427
|
leftIcon: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "x", className: "h-3.5 w-3.5" }),
|
|
25121
|
-
children: "
|
|
25428
|
+
children: t("filterGroup.clearAll")
|
|
25122
25429
|
}
|
|
25123
25430
|
)
|
|
25124
25431
|
] })
|
|
@@ -26062,19 +26369,20 @@ var init_RepeatableFormSection = __esm({
|
|
|
26062
26369
|
RepeatableFormSection.displayName = "RepeatableFormSection";
|
|
26063
26370
|
}
|
|
26064
26371
|
});
|
|
26065
|
-
var
|
|
26372
|
+
var actionTypeLabelKeys, actionTypeIcons, ViolationAlert;
|
|
26066
26373
|
var init_ViolationAlert = __esm({
|
|
26067
26374
|
"components/core/molecules/ViolationAlert.tsx"() {
|
|
26068
26375
|
init_cn();
|
|
26376
|
+
init_useTranslate();
|
|
26069
26377
|
init_Box();
|
|
26070
26378
|
init_Stack();
|
|
26071
26379
|
init_Typography();
|
|
26072
26380
|
init_Button();
|
|
26073
26381
|
init_Icon();
|
|
26074
|
-
|
|
26075
|
-
measure: "
|
|
26076
|
-
admin: "
|
|
26077
|
-
penalty: "
|
|
26382
|
+
actionTypeLabelKeys = {
|
|
26383
|
+
measure: "violationAlert.actionType.measure",
|
|
26384
|
+
admin: "violationAlert.actionType.admin",
|
|
26385
|
+
penalty: "violationAlert.actionType.penalty"
|
|
26078
26386
|
};
|
|
26079
26387
|
actionTypeIcons = {
|
|
26080
26388
|
measure: "alert-triangle",
|
|
@@ -26091,10 +26399,11 @@ var init_ViolationAlert = __esm({
|
|
|
26091
26399
|
className,
|
|
26092
26400
|
...flatProps
|
|
26093
26401
|
}) => {
|
|
26402
|
+
const { t } = useTranslate();
|
|
26094
26403
|
const resolvedViolation = violation ?? {
|
|
26095
26404
|
law: "",
|
|
26096
26405
|
article: "",
|
|
26097
|
-
message: flatProps.message ?? "
|
|
26406
|
+
message: flatProps.message ?? t("violationAlert.fallbackMessage"),
|
|
26098
26407
|
actionType: "measure"
|
|
26099
26408
|
};
|
|
26100
26409
|
const effectiveSeverity = severity ?? (resolvedViolation.actionType === "measure" ? "warning" : "error");
|
|
@@ -26179,7 +26488,7 @@ var init_ViolationAlert = __esm({
|
|
|
26179
26488
|
{
|
|
26180
26489
|
variant: "caption",
|
|
26181
26490
|
className: cn(textColor, "opacity-75"),
|
|
26182
|
-
children:
|
|
26491
|
+
children: t(actionTypeLabelKeys[resolvedViolation.actionType])
|
|
26183
26492
|
}
|
|
26184
26493
|
)
|
|
26185
26494
|
] })
|
|
@@ -26210,7 +26519,7 @@ var init_ViolationAlert = __esm({
|
|
|
26210
26519
|
{
|
|
26211
26520
|
variant: "caption",
|
|
26212
26521
|
className: cn(textColor, "opacity-75"),
|
|
26213
|
-
children: "
|
|
26522
|
+
children: t("violationAlert.adminLabel")
|
|
26214
26523
|
}
|
|
26215
26524
|
),
|
|
26216
26525
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -26229,7 +26538,7 @@ var init_ViolationAlert = __esm({
|
|
|
26229
26538
|
{
|
|
26230
26539
|
variant: "caption",
|
|
26231
26540
|
className: cn(textColor, "opacity-75"),
|
|
26232
|
-
children: "
|
|
26541
|
+
children: t("violationAlert.penaltyLabel")
|
|
26233
26542
|
}
|
|
26234
26543
|
),
|
|
26235
26544
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -26254,7 +26563,7 @@ var init_ViolationAlert = __esm({
|
|
|
26254
26563
|
className: cn(textColor, "self-start"),
|
|
26255
26564
|
children: [
|
|
26256
26565
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "arrow-right", size: "sm", className: "mr-1" }),
|
|
26257
|
-
"
|
|
26566
|
+
t("violationAlert.goToField")
|
|
26258
26567
|
]
|
|
26259
26568
|
}
|
|
26260
26569
|
)
|
|
@@ -26570,6 +26879,7 @@ var init_LineChart = __esm({
|
|
|
26570
26879
|
"use client";
|
|
26571
26880
|
init_cn();
|
|
26572
26881
|
init_atoms2();
|
|
26882
|
+
init_useTranslate();
|
|
26573
26883
|
LineChart2 = ({
|
|
26574
26884
|
data,
|
|
26575
26885
|
width = 400,
|
|
@@ -26581,6 +26891,7 @@ var init_LineChart = __esm({
|
|
|
26581
26891
|
areaColor = "var(--color-primary)",
|
|
26582
26892
|
className
|
|
26583
26893
|
}) => {
|
|
26894
|
+
const { t } = useTranslate();
|
|
26584
26895
|
const gradientId = React85.useId();
|
|
26585
26896
|
const safeData = data ?? [];
|
|
26586
26897
|
const sortedData = React85.useMemo(() => {
|
|
@@ -26617,7 +26928,7 @@ var init_LineChart = __esm({
|
|
|
26617
26928
|
return `${linePath} L ${last.x} ${bottom} L ${first.x} ${bottom} Z`;
|
|
26618
26929
|
}, [linePath, points, height, showArea]);
|
|
26619
26930
|
if (safeData.length === 0) {
|
|
26620
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("flex items-center justify-center text-muted-foreground", className), style: { width, height }, children: "
|
|
26931
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("flex items-center justify-center text-muted-foreground", className), style: { width, height }, children: t("empty.noData") });
|
|
26621
26932
|
}
|
|
26622
26933
|
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn(className), children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
26623
26934
|
"svg",
|
|
@@ -28524,6 +28835,7 @@ var init_GraphView = __esm({
|
|
|
28524
28835
|
"use client";
|
|
28525
28836
|
init_cn();
|
|
28526
28837
|
init_atoms2();
|
|
28838
|
+
init_useTranslate();
|
|
28527
28839
|
GROUP_COLORS = [
|
|
28528
28840
|
"#3b82f6",
|
|
28529
28841
|
// blue-500
|
|
@@ -28556,6 +28868,7 @@ var init_GraphView = __esm({
|
|
|
28556
28868
|
showLabels = true,
|
|
28557
28869
|
zoomToFit = true
|
|
28558
28870
|
}) => {
|
|
28871
|
+
const { t } = useTranslate();
|
|
28559
28872
|
const containerRef = React85.useRef(null);
|
|
28560
28873
|
const animRef = React85.useRef(0);
|
|
28561
28874
|
const [simNodes, setSimNodes] = React85.useState([]);
|
|
@@ -28733,7 +29046,7 @@ var init_GraphView = __esm({
|
|
|
28733
29046
|
[onNodeClick]
|
|
28734
29047
|
);
|
|
28735
29048
|
if (nodes.length === 0) {
|
|
28736
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("flex items-center justify-center", className), style: { width: w, height: h }, children: /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "text-muted-foreground text-sm", children: "
|
|
29049
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("flex items-center justify-center", className), style: { width: w, height: h }, children: /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "text-muted-foreground text-sm", children: t("display.noGraphData") }) });
|
|
28737
29050
|
}
|
|
28738
29051
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
28739
29052
|
Box,
|
|
@@ -29189,11 +29502,12 @@ var init_UploadDropZone = __esm({
|
|
|
29189
29502
|
init_Icon();
|
|
29190
29503
|
init_Typography();
|
|
29191
29504
|
init_useEventBus();
|
|
29505
|
+
init_useTranslate();
|
|
29192
29506
|
UploadDropZone = ({
|
|
29193
29507
|
accept,
|
|
29194
29508
|
maxSize,
|
|
29195
29509
|
maxFiles = 1,
|
|
29196
|
-
label
|
|
29510
|
+
label,
|
|
29197
29511
|
description,
|
|
29198
29512
|
disabled = false,
|
|
29199
29513
|
action,
|
|
@@ -29201,22 +29515,24 @@ var init_UploadDropZone = __esm({
|
|
|
29201
29515
|
onFiles,
|
|
29202
29516
|
className
|
|
29203
29517
|
}) => {
|
|
29518
|
+
const { t } = useTranslate();
|
|
29519
|
+
const resolvedLabel = label ?? t("upload.dropOrBrowse");
|
|
29204
29520
|
const [isDragOver, setIsDragOver] = React85.useState(false);
|
|
29205
29521
|
const [error, setError] = React85.useState(null);
|
|
29206
29522
|
const inputRef = React85.useRef(null);
|
|
29207
29523
|
const eventBus = useSafeEventBus7();
|
|
29208
29524
|
const defaultDescription = [
|
|
29209
|
-
accept ?
|
|
29210
|
-
maxSize ?
|
|
29211
|
-
maxFiles > 1 ?
|
|
29525
|
+
accept ? t("upload.accepted", { accept }) : null,
|
|
29526
|
+
maxSize ? t("upload.maxSize", { size: formatFileSize(maxSize) }) : null,
|
|
29527
|
+
maxFiles > 1 ? t("upload.maxFiles", { count: maxFiles }) : null
|
|
29212
29528
|
].filter(Boolean).join(". ");
|
|
29213
29529
|
const validateFiles = React85.useCallback(
|
|
29214
29530
|
(files) => {
|
|
29215
29531
|
if (files.length > maxFiles) {
|
|
29216
|
-
return { valid: [], error:
|
|
29532
|
+
return { valid: [], error: t("upload.error.maxFiles", { count: maxFiles }) };
|
|
29217
29533
|
}
|
|
29218
29534
|
if (accept) {
|
|
29219
|
-
const acceptedTypes = accept.split(",").map((
|
|
29535
|
+
const acceptedTypes = accept.split(",").map((s) => s.trim());
|
|
29220
29536
|
const invalid = files.filter((file) => {
|
|
29221
29537
|
return !acceptedTypes.some((type) => {
|
|
29222
29538
|
if (type.endsWith("/*")) {
|
|
@@ -29226,7 +29542,7 @@ var init_UploadDropZone = __esm({
|
|
|
29226
29542
|
});
|
|
29227
29543
|
});
|
|
29228
29544
|
if (invalid.length > 0) {
|
|
29229
|
-
return { valid: [], error:
|
|
29545
|
+
return { valid: [], error: t("upload.error.invalidType", { name: invalid[0].name }) };
|
|
29230
29546
|
}
|
|
29231
29547
|
}
|
|
29232
29548
|
if (maxSize) {
|
|
@@ -29234,13 +29550,13 @@ var init_UploadDropZone = __esm({
|
|
|
29234
29550
|
if (tooLarge.length > 0) {
|
|
29235
29551
|
return {
|
|
29236
29552
|
valid: [],
|
|
29237
|
-
error:
|
|
29553
|
+
error: t("upload.error.tooLarge", { name: tooLarge[0].name, size: formatFileSize(maxSize) })
|
|
29238
29554
|
};
|
|
29239
29555
|
}
|
|
29240
29556
|
}
|
|
29241
29557
|
return { valid: files, error: null };
|
|
29242
29558
|
},
|
|
29243
|
-
[accept, maxSize, maxFiles]
|
|
29559
|
+
[accept, maxSize, maxFiles, t]
|
|
29244
29560
|
);
|
|
29245
29561
|
const handleFiles = React85.useCallback(
|
|
29246
29562
|
(files) => {
|
|
@@ -29311,7 +29627,7 @@ var init_UploadDropZone = __esm({
|
|
|
29311
29627
|
handleClick();
|
|
29312
29628
|
}
|
|
29313
29629
|
},
|
|
29314
|
-
"aria-label":
|
|
29630
|
+
"aria-label": resolvedLabel,
|
|
29315
29631
|
children: [
|
|
29316
29632
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
29317
29633
|
"input",
|
|
@@ -29327,7 +29643,7 @@ var init_UploadDropZone = __esm({
|
|
|
29327
29643
|
}
|
|
29328
29644
|
),
|
|
29329
29645
|
error ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "file-warning", size: "lg", className: "text-error mb-2" }) : /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "upload", size: "lg", className: "text-muted-foreground mb-2" }),
|
|
29330
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body1", className: "text-center font-medium mb-1", children: isDragOver ? "
|
|
29646
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body1", className: "text-center font-medium mb-1", children: isDragOver ? t("upload.dropFilesHere") : resolvedLabel }),
|
|
29331
29647
|
error ? /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "error", className: "text-center", children: error }) : /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "muted", className: "text-center", children: description ?? defaultDescription })
|
|
29332
29648
|
]
|
|
29333
29649
|
}
|
|
@@ -29749,7 +30065,7 @@ function TableView({
|
|
|
29749
30065
|
{
|
|
29750
30066
|
checked: selected.has(id),
|
|
29751
30067
|
onChange: () => toggleRow(id),
|
|
29752
|
-
"aria-label":
|
|
30068
|
+
"aria-label": t("table.selectRow", { id })
|
|
29753
30069
|
}
|
|
29754
30070
|
) }),
|
|
29755
30071
|
hasRenderProp ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex-1 min-w-0", children: children(row, index) }) : colDefs.map((col) => {
|
|
@@ -32596,7 +32912,7 @@ var init_QrScanner = __esm({
|
|
|
32596
32912
|
className: "inset-0 flex-col items-center justify-center gap-2 bg-black bg-opacity-80 text-center",
|
|
32597
32913
|
children: [
|
|
32598
32914
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "camera", className: "h-8 w-8 text-white", "aria-hidden": "true" }),
|
|
32599
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-white", children: "
|
|
32915
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-white", children: t("qrScanner.cameraUnavailable") }),
|
|
32600
32916
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", className: "text-white opacity-70", children: cameraError.message })
|
|
32601
32917
|
]
|
|
32602
32918
|
}
|
|
@@ -32607,7 +32923,7 @@ var init_QrScanner = __esm({
|
|
|
32607
32923
|
position: "absolute",
|
|
32608
32924
|
display: "flex",
|
|
32609
32925
|
className: "inset-0 items-center justify-center bg-black bg-opacity-60",
|
|
32610
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-white", children: "
|
|
32926
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-white", children: t("qrScanner.paused") })
|
|
32611
32927
|
}
|
|
32612
32928
|
),
|
|
32613
32929
|
showCameraControls && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -32626,7 +32942,7 @@ var init_QrScanner = __esm({
|
|
|
32626
32942
|
"rounded-full bg-black bg-opacity-60 p-2 text-white",
|
|
32627
32943
|
"hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
|
|
32628
32944
|
),
|
|
32629
|
-
"aria-label": isPaused ? "
|
|
32945
|
+
"aria-label": isPaused ? t("qrScanner.resumeScanning") : t("qrScanner.pauseScanning"),
|
|
32630
32946
|
children: isPaused ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "play", className: "h-4 w-4" }) : /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "pause", className: "h-4 w-4" })
|
|
32631
32947
|
}
|
|
32632
32948
|
),
|
|
@@ -32639,7 +32955,7 @@ var init_QrScanner = __esm({
|
|
|
32639
32955
|
"rounded-full bg-black bg-opacity-60 p-2 text-white",
|
|
32640
32956
|
"hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
|
|
32641
32957
|
),
|
|
32642
|
-
"aria-label":
|
|
32958
|
+
"aria-label": currentFacing === "environment" ? t("qrScanner.switchToFrontCamera") : t("qrScanner.switchToRearCamera"),
|
|
32643
32959
|
children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "refresh-cw", className: "h-4 w-4" })
|
|
32644
32960
|
}
|
|
32645
32961
|
),
|
|
@@ -32653,7 +32969,7 @@ var init_QrScanner = __esm({
|
|
|
32653
32969
|
"hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
|
|
32654
32970
|
),
|
|
32655
32971
|
"aria-label": t("aria.mockScanDev"),
|
|
32656
|
-
children: "
|
|
32972
|
+
children: t("qrScanner.mockScan")
|
|
32657
32973
|
}
|
|
32658
32974
|
)
|
|
32659
32975
|
]
|
|
@@ -32671,6 +32987,7 @@ var init_OptionConstraintGroup = __esm({
|
|
|
32671
32987
|
"components/core/molecules/OptionConstraintGroup.tsx"() {
|
|
32672
32988
|
init_cn();
|
|
32673
32989
|
init_useEventBus();
|
|
32990
|
+
init_useTranslate();
|
|
32674
32991
|
init_Typography();
|
|
32675
32992
|
init_Box();
|
|
32676
32993
|
init_Label();
|
|
@@ -32680,36 +32997,36 @@ var init_OptionConstraintGroup = __esm({
|
|
|
32680
32997
|
const sign = delta >= 0 ? "+" : "-";
|
|
32681
32998
|
return `${sign}$${Math.abs(delta).toFixed(2)}`;
|
|
32682
32999
|
};
|
|
32683
|
-
constraintHint = (constraint) => {
|
|
33000
|
+
constraintHint = (constraint, t) => {
|
|
32684
33001
|
if (constraint.type === "single") {
|
|
32685
|
-
return constraint.required ? "
|
|
33002
|
+
return constraint.required ? t("optionConstraint.requiredOne") : t("optionConstraint.optionalOne");
|
|
32686
33003
|
}
|
|
32687
33004
|
const { min, max } = constraint;
|
|
32688
33005
|
if (min && max) {
|
|
32689
|
-
return min === max ?
|
|
33006
|
+
return min === max ? t("optionConstraint.pickExactly", { count: min }) : t("optionConstraint.pickRange", { min, max });
|
|
32690
33007
|
}
|
|
32691
|
-
if (min) return
|
|
32692
|
-
if (max) return
|
|
32693
|
-
return "
|
|
33008
|
+
if (min) return t("optionConstraint.pickAtLeast", { count: min });
|
|
33009
|
+
if (max) return t("optionConstraint.pickUpTo", { count: max });
|
|
33010
|
+
return t("optionConstraint.optional");
|
|
32694
33011
|
};
|
|
32695
|
-
validateSelection = (selected, constraint) => {
|
|
33012
|
+
validateSelection = (selected, constraint, t) => {
|
|
32696
33013
|
if (constraint.type === "single") {
|
|
32697
33014
|
if (constraint.required && selected.length === 0) {
|
|
32698
|
-
return "
|
|
33015
|
+
return t("optionConstraint.error.pickOne");
|
|
32699
33016
|
}
|
|
32700
33017
|
if (selected.length > 1) {
|
|
32701
|
-
return "
|
|
33018
|
+
return t("optionConstraint.error.pickOnlyOne");
|
|
32702
33019
|
}
|
|
32703
33020
|
return void 0;
|
|
32704
33021
|
}
|
|
32705
33022
|
const { min, max } = constraint;
|
|
32706
33023
|
if (min !== void 0 && selected.length < min) {
|
|
32707
33024
|
const remaining = min - selected.length;
|
|
32708
|
-
return
|
|
33025
|
+
return t("optionConstraint.error.pickMore", { count: remaining });
|
|
32709
33026
|
}
|
|
32710
33027
|
if (max !== void 0 && selected.length > max) {
|
|
32711
33028
|
const excess = selected.length - max;
|
|
32712
|
-
return
|
|
33029
|
+
return t("optionConstraint.error.removeOptions", { count: excess });
|
|
32713
33030
|
}
|
|
32714
33031
|
return void 0;
|
|
32715
33032
|
};
|
|
@@ -32726,8 +33043,9 @@ var init_OptionConstraintGroup = __esm({
|
|
|
32726
33043
|
className
|
|
32727
33044
|
}) => {
|
|
32728
33045
|
const eventBus = useEventBus();
|
|
32729
|
-
const
|
|
32730
|
-
const
|
|
33046
|
+
const { t } = useTranslate();
|
|
33047
|
+
const hint = constraintHint(constraint, t);
|
|
33048
|
+
const error = validateSelection(selected, constraint, t);
|
|
32731
33049
|
const inputName = `option-${groupId}`;
|
|
32732
33050
|
const labelTextSize = size === "sm" ? "text-sm" : "text-base";
|
|
32733
33051
|
const optionGap = size === "sm" ? "gap-2" : "gap-2.5";
|
|
@@ -32827,7 +33145,7 @@ var init_OptionConstraintGroup = __esm({
|
|
|
32827
33145
|
variant: "caption",
|
|
32828
33146
|
color: "warning",
|
|
32829
33147
|
className: "rounded border border-warning/40 px-1.5 py-0.5",
|
|
32830
|
-
children: "
|
|
33148
|
+
children: t("optionConstraint.outOfStock")
|
|
32831
33149
|
}
|
|
32832
33150
|
)
|
|
32833
33151
|
]
|
|
@@ -33149,6 +33467,7 @@ function changeBlockType(block, type) {
|
|
|
33149
33467
|
return { id: block.id, type, content: seed };
|
|
33150
33468
|
}
|
|
33151
33469
|
function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
33470
|
+
const { t } = useTranslate();
|
|
33152
33471
|
const [open, setOpen] = React85.useState(false);
|
|
33153
33472
|
const ref = React85.useRef(null);
|
|
33154
33473
|
React85.useEffect(() => {
|
|
@@ -33168,7 +33487,7 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
33168
33487
|
{
|
|
33169
33488
|
type: "button",
|
|
33170
33489
|
variant: "ghost",
|
|
33171
|
-
"aria-label": "
|
|
33490
|
+
"aria-label": t("richBlockEditor.blockActions"),
|
|
33172
33491
|
className: cn(
|
|
33173
33492
|
"inline-flex items-center justify-center",
|
|
33174
33493
|
"h-6 w-6 rounded-sm p-0 gap-0",
|
|
@@ -33190,7 +33509,7 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
33190
33509
|
"py-1 text-sm"
|
|
33191
33510
|
),
|
|
33192
33511
|
children: [
|
|
33193
|
-
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground", children:
|
|
33512
|
+
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground", children: t(BLOCK_TYPE_LABEL_KEY[block.type]) }),
|
|
33194
33513
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
33195
33514
|
Button,
|
|
33196
33515
|
{
|
|
@@ -33204,7 +33523,8 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
33204
33523
|
},
|
|
33205
33524
|
children: [
|
|
33206
33525
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "plus", className: "w-3.5 h-3.5" }),
|
|
33207
|
-
"
|
|
33526
|
+
" ",
|
|
33527
|
+
t("richBlockEditor.duplicate")
|
|
33208
33528
|
]
|
|
33209
33529
|
}
|
|
33210
33530
|
),
|
|
@@ -33221,14 +33541,15 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
33221
33541
|
},
|
|
33222
33542
|
children: [
|
|
33223
33543
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "trash", className: "w-3.5 h-3.5" }),
|
|
33224
|
-
"
|
|
33544
|
+
" ",
|
|
33545
|
+
t("common.delete")
|
|
33225
33546
|
]
|
|
33226
33547
|
}
|
|
33227
33548
|
),
|
|
33228
33549
|
CHANGEABLE_TYPES.includes(block.type) && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
33229
33550
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "my-1 border-t border-border" }),
|
|
33230
|
-
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground", children: "
|
|
33231
|
-
CHANGEABLE_TYPES.filter((
|
|
33551
|
+
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground", children: t("richBlockEditor.turnInto") }),
|
|
33552
|
+
CHANGEABLE_TYPES.filter((bt) => bt !== block.type).map((bt) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
33232
33553
|
Button,
|
|
33233
33554
|
{
|
|
33234
33555
|
type: "button",
|
|
@@ -33236,12 +33557,12 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
33236
33557
|
role: "menuitem",
|
|
33237
33558
|
className: "flex w-full items-center gap-2 px-2 py-1.5 text-left justify-start rounded-none",
|
|
33238
33559
|
onClick: () => {
|
|
33239
|
-
onChangeType(
|
|
33560
|
+
onChangeType(bt);
|
|
33240
33561
|
setOpen(false);
|
|
33241
33562
|
},
|
|
33242
|
-
children:
|
|
33563
|
+
children: t(BLOCK_TYPE_LABEL_KEY[bt])
|
|
33243
33564
|
},
|
|
33244
|
-
|
|
33565
|
+
bt
|
|
33245
33566
|
))
|
|
33246
33567
|
] })
|
|
33247
33568
|
]
|
|
@@ -33303,6 +33624,7 @@ function BlockRow({
|
|
|
33303
33624
|
onInsertAfter,
|
|
33304
33625
|
onChangeType
|
|
33305
33626
|
}) {
|
|
33627
|
+
const { t } = useTranslate();
|
|
33306
33628
|
const setContent = React85.useCallback(
|
|
33307
33629
|
(next) => onUpdate((b) => ({ ...b, content: next })),
|
|
33308
33630
|
[onUpdate]
|
|
@@ -33352,8 +33674,8 @@ function BlockRow({
|
|
|
33352
33674
|
tag: "h1",
|
|
33353
33675
|
value: block.content ?? "",
|
|
33354
33676
|
readOnly,
|
|
33355
|
-
placeholder: placeholder ?? "
|
|
33356
|
-
ariaLabel: "
|
|
33677
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.heading1"),
|
|
33678
|
+
ariaLabel: t("richBlockEditor.aria.heading1Block"),
|
|
33357
33679
|
className: "text-3xl font-bold leading-tight",
|
|
33358
33680
|
onValueChange: setContent
|
|
33359
33681
|
}
|
|
@@ -33365,8 +33687,8 @@ function BlockRow({
|
|
|
33365
33687
|
tag: "h2",
|
|
33366
33688
|
value: block.content ?? "",
|
|
33367
33689
|
readOnly,
|
|
33368
|
-
placeholder: placeholder ?? "
|
|
33369
|
-
ariaLabel: "
|
|
33690
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.heading2"),
|
|
33691
|
+
ariaLabel: t("richBlockEditor.aria.heading2Block"),
|
|
33370
33692
|
className: "text-2xl font-semibold leading-tight",
|
|
33371
33693
|
onValueChange: setContent
|
|
33372
33694
|
}
|
|
@@ -33378,8 +33700,8 @@ function BlockRow({
|
|
|
33378
33700
|
tag: "h3",
|
|
33379
33701
|
value: block.content ?? "",
|
|
33380
33702
|
readOnly,
|
|
33381
|
-
placeholder: placeholder ?? "
|
|
33382
|
-
ariaLabel: "
|
|
33703
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.heading3"),
|
|
33704
|
+
ariaLabel: t("richBlockEditor.aria.heading3Block"),
|
|
33383
33705
|
className: "text-xl font-semibold leading-tight",
|
|
33384
33706
|
onValueChange: setContent
|
|
33385
33707
|
}
|
|
@@ -33391,8 +33713,8 @@ function BlockRow({
|
|
|
33391
33713
|
tag: "blockquote",
|
|
33392
33714
|
value: block.content ?? "",
|
|
33393
33715
|
readOnly,
|
|
33394
|
-
placeholder: placeholder ?? "
|
|
33395
|
-
ariaLabel: "
|
|
33716
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.quote"),
|
|
33717
|
+
ariaLabel: t("richBlockEditor.aria.quoteBlock"),
|
|
33396
33718
|
className: "border-l-4 border-primary/60 pl-4 italic text-muted-foreground",
|
|
33397
33719
|
onValueChange: setContent
|
|
33398
33720
|
}
|
|
@@ -33400,13 +33722,13 @@ function BlockRow({
|
|
|
33400
33722
|
case "code":
|
|
33401
33723
|
return /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "rounded-md border border-border bg-muted/40", children: [
|
|
33402
33724
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex items-center justify-between border-b border-border px-3 py-1 text-xs text-muted-foreground", children: [
|
|
33403
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { as: "span", variant: "caption", className: "uppercase tracking-wide", children: "
|
|
33725
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { as: "span", variant: "caption", className: "uppercase tracking-wide", children: t("richBlockEditor.blockType.code") }),
|
|
33404
33726
|
!readOnly && /* @__PURE__ */ jsxRuntime.jsx(
|
|
33405
33727
|
Input,
|
|
33406
33728
|
{
|
|
33407
33729
|
inputType: "text",
|
|
33408
33730
|
value: String(block.metadata?.language ?? "plaintext"),
|
|
33409
|
-
"aria-label": "
|
|
33731
|
+
"aria-label": t("richBlockEditor.aria.codeLanguage"),
|
|
33410
33732
|
className: cn(
|
|
33411
33733
|
"h-6 w-32 rounded-sm border border-border bg-background",
|
|
33412
33734
|
"px-2 text-xs outline-none focus:ring-1 focus:ring-ring"
|
|
@@ -33422,8 +33744,8 @@ function BlockRow({
|
|
|
33422
33744
|
tag: "pre",
|
|
33423
33745
|
value: block.content ?? "",
|
|
33424
33746
|
readOnly,
|
|
33425
|
-
placeholder: placeholder ?? "
|
|
33426
|
-
ariaLabel: "
|
|
33747
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.code"),
|
|
33748
|
+
ariaLabel: t("richBlockEditor.aria.codeBlock"),
|
|
33427
33749
|
className: "block whitespace-pre-wrap p-3 font-mono text-sm leading-relaxed",
|
|
33428
33750
|
onValueChange: setContent
|
|
33429
33751
|
}
|
|
@@ -33436,7 +33758,7 @@ function BlockRow({
|
|
|
33436
33758
|
const caption = String(block.metadata?.caption ?? "");
|
|
33437
33759
|
const imgProps = {
|
|
33438
33760
|
src: url,
|
|
33439
|
-
alt: caption || "
|
|
33761
|
+
alt: caption || t("richBlockEditor.embeddedImage"),
|
|
33440
33762
|
className: "max-h-96 w-full rounded-md border border-border object-contain"
|
|
33441
33763
|
};
|
|
33442
33764
|
return /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "space-y-2", children: [
|
|
@@ -33450,7 +33772,8 @@ function BlockRow({
|
|
|
33450
33772
|
),
|
|
33451
33773
|
children: [
|
|
33452
33774
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "image", className: "mr-2 w-4 h-4" }),
|
|
33453
|
-
"
|
|
33775
|
+
" ",
|
|
33776
|
+
t("richBlockEditor.noImageUrl")
|
|
33454
33777
|
]
|
|
33455
33778
|
}
|
|
33456
33779
|
),
|
|
@@ -33461,7 +33784,7 @@ function BlockRow({
|
|
|
33461
33784
|
inputType: "url",
|
|
33462
33785
|
value: url,
|
|
33463
33786
|
placeholder: "https://example.com/image.png",
|
|
33464
|
-
"aria-label": "
|
|
33787
|
+
"aria-label": t("richBlockEditor.aria.imageUrl"),
|
|
33465
33788
|
className: cn(
|
|
33466
33789
|
"h-8 flex-1 rounded-sm border border-border bg-background",
|
|
33467
33790
|
"px-2 text-sm outline-none focus:ring-1 focus:ring-ring"
|
|
@@ -33474,8 +33797,8 @@ function BlockRow({
|
|
|
33474
33797
|
{
|
|
33475
33798
|
inputType: "text",
|
|
33476
33799
|
value: caption,
|
|
33477
|
-
placeholder: "
|
|
33478
|
-
"aria-label": "
|
|
33800
|
+
placeholder: t("richBlockEditor.placeholder.caption"),
|
|
33801
|
+
"aria-label": t("richBlockEditor.aria.imageCaption"),
|
|
33479
33802
|
className: cn(
|
|
33480
33803
|
"h-8 flex-1 rounded-sm border border-border bg-background",
|
|
33481
33804
|
"px-2 text-sm outline-none focus:ring-1 focus:ring-ring"
|
|
@@ -33506,8 +33829,8 @@ function BlockRow({
|
|
|
33506
33829
|
tag: "span",
|
|
33507
33830
|
value: child.content ?? "",
|
|
33508
33831
|
readOnly,
|
|
33509
|
-
placeholder: "
|
|
33510
|
-
ariaLabel: "
|
|
33832
|
+
placeholder: t("richBlockEditor.placeholder.listItem"),
|
|
33833
|
+
ariaLabel: t("richBlockEditor.aria.listItem"),
|
|
33511
33834
|
className: "inline-block min-w-[1ch] flex-1",
|
|
33512
33835
|
onValueChange: (next) => setChildContent(child.id, next)
|
|
33513
33836
|
}
|
|
@@ -33517,7 +33840,7 @@ function BlockRow({
|
|
|
33517
33840
|
{
|
|
33518
33841
|
type: "button",
|
|
33519
33842
|
variant: "ghost",
|
|
33520
|
-
"aria-label": "
|
|
33843
|
+
"aria-label": t("richBlockEditor.aria.removeListItem"),
|
|
33521
33844
|
className: cn(
|
|
33522
33845
|
"h-5 w-5 shrink-0 rounded-sm text-muted-foreground p-0 gap-0",
|
|
33523
33846
|
"opacity-0 group-hover/item:opacity-100 hover:bg-muted hover:text-foreground"
|
|
@@ -33539,7 +33862,8 @@ function BlockRow({
|
|
|
33539
33862
|
onClick: addListItem,
|
|
33540
33863
|
children: [
|
|
33541
33864
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "plus", className: "w-3 h-3" }),
|
|
33542
|
-
"
|
|
33865
|
+
" ",
|
|
33866
|
+
t("richBlockEditor.addItem")
|
|
33543
33867
|
]
|
|
33544
33868
|
}
|
|
33545
33869
|
) })
|
|
@@ -33555,8 +33879,8 @@ function BlockRow({
|
|
|
33555
33879
|
tag: "p",
|
|
33556
33880
|
value: block.content ?? "",
|
|
33557
33881
|
readOnly,
|
|
33558
|
-
placeholder: placeholder ?? "
|
|
33559
|
-
ariaLabel: "
|
|
33882
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.paragraph"),
|
|
33883
|
+
ariaLabel: t("richBlockEditor.aria.paragraphBlock"),
|
|
33560
33884
|
className: "leading-7",
|
|
33561
33885
|
onValueChange: setContent
|
|
33562
33886
|
}
|
|
@@ -33579,7 +33903,7 @@ function BlockRow({
|
|
|
33579
33903
|
{
|
|
33580
33904
|
type: "button",
|
|
33581
33905
|
variant: "ghost",
|
|
33582
|
-
"aria-label": "
|
|
33906
|
+
"aria-label": t("richBlockEditor.insertParagraphBelow"),
|
|
33583
33907
|
className: cn(
|
|
33584
33908
|
"inline-flex h-6 w-6 items-center justify-center rounded-sm p-0 gap-0",
|
|
33585
33909
|
"text-muted-foreground hover:bg-muted hover:text-foreground",
|
|
@@ -33606,7 +33930,7 @@ function BlockRow({
|
|
|
33606
33930
|
}
|
|
33607
33931
|
);
|
|
33608
33932
|
}
|
|
33609
|
-
var TOOLBAR_ENTRIES,
|
|
33933
|
+
var TOOLBAR_ENTRIES, BLOCK_TYPE_LABEL_KEY, CHANGEABLE_TYPES, _idSeq, BLOCK_TYPES, RichBlockEditor;
|
|
33610
33934
|
var init_RichBlockEditor = __esm({
|
|
33611
33935
|
"components/core/molecules/RichBlockEditor.tsx"() {
|
|
33612
33936
|
"use client";
|
|
@@ -33619,29 +33943,30 @@ var init_RichBlockEditor = __esm({
|
|
|
33619
33943
|
init_Input();
|
|
33620
33944
|
init_Icon();
|
|
33621
33945
|
init_useEventBus();
|
|
33946
|
+
init_useTranslate();
|
|
33622
33947
|
TOOLBAR_ENTRIES = [
|
|
33623
|
-
{ type: "paragraph",
|
|
33624
|
-
{ type: "heading-1",
|
|
33625
|
-
{ type: "heading-2",
|
|
33626
|
-
{ type: "heading-3",
|
|
33627
|
-
{ type: "bullet-list",
|
|
33628
|
-
{ type: "numbered-list",
|
|
33629
|
-
{ type: "quote",
|
|
33630
|
-
{ type: "code",
|
|
33631
|
-
{ type: "divider",
|
|
33632
|
-
{ type: "image",
|
|
33948
|
+
{ type: "paragraph", labelKey: "richBlockEditor.toolbar.text", icon: LucideIcons2.Type },
|
|
33949
|
+
{ type: "heading-1", labelKey: "richBlockEditor.toolbar.h1", icon: LucideIcons2.Heading1 },
|
|
33950
|
+
{ type: "heading-2", labelKey: "richBlockEditor.toolbar.h2", icon: LucideIcons2.Heading2 },
|
|
33951
|
+
{ type: "heading-3", labelKey: "richBlockEditor.toolbar.h3", icon: LucideIcons2.Heading3 },
|
|
33952
|
+
{ type: "bullet-list", labelKey: "richBlockEditor.toolbar.bulletList", icon: LucideIcons2.List },
|
|
33953
|
+
{ type: "numbered-list", labelKey: "richBlockEditor.toolbar.numbered", icon: LucideIcons2.ListOrdered },
|
|
33954
|
+
{ type: "quote", labelKey: "richBlockEditor.toolbar.quote", icon: LucideIcons2.Quote },
|
|
33955
|
+
{ type: "code", labelKey: "richBlockEditor.toolbar.code", icon: LucideIcons2.Code },
|
|
33956
|
+
{ type: "divider", labelKey: "richBlockEditor.toolbar.divider", icon: LucideIcons2.Minus },
|
|
33957
|
+
{ type: "image", labelKey: "richBlockEditor.toolbar.image", icon: LucideIcons2.Image }
|
|
33633
33958
|
];
|
|
33634
|
-
|
|
33635
|
-
paragraph: "
|
|
33636
|
-
"heading-1": "
|
|
33637
|
-
"heading-2": "
|
|
33638
|
-
"heading-3": "
|
|
33639
|
-
"bullet-list": "
|
|
33640
|
-
"numbered-list": "
|
|
33641
|
-
quote: "
|
|
33642
|
-
code: "
|
|
33643
|
-
divider: "
|
|
33644
|
-
image: "
|
|
33959
|
+
BLOCK_TYPE_LABEL_KEY = {
|
|
33960
|
+
paragraph: "richBlockEditor.blockType.paragraph",
|
|
33961
|
+
"heading-1": "richBlockEditor.blockType.heading1",
|
|
33962
|
+
"heading-2": "richBlockEditor.blockType.heading2",
|
|
33963
|
+
"heading-3": "richBlockEditor.blockType.heading3",
|
|
33964
|
+
"bullet-list": "richBlockEditor.blockType.bulletList",
|
|
33965
|
+
"numbered-list": "richBlockEditor.blockType.numberedList",
|
|
33966
|
+
quote: "richBlockEditor.blockType.quote",
|
|
33967
|
+
code: "richBlockEditor.blockType.code",
|
|
33968
|
+
divider: "richBlockEditor.blockType.divider",
|
|
33969
|
+
image: "richBlockEditor.blockType.image"
|
|
33645
33970
|
};
|
|
33646
33971
|
CHANGEABLE_TYPES = [
|
|
33647
33972
|
"paragraph",
|
|
@@ -33675,6 +34000,7 @@ var init_RichBlockEditor = __esm({
|
|
|
33675
34000
|
showToolbar = true,
|
|
33676
34001
|
className
|
|
33677
34002
|
}) => {
|
|
34003
|
+
const { t } = useTranslate();
|
|
33678
34004
|
const [blocks, setBlocks] = React85.useState(
|
|
33679
34005
|
() => normalizeBlocks(initialBlocks)
|
|
33680
34006
|
);
|
|
@@ -33746,25 +34072,26 @@ var init_RichBlockEditor = __esm({
|
|
|
33746
34072
|
Box,
|
|
33747
34073
|
{
|
|
33748
34074
|
role: "toolbar",
|
|
33749
|
-
"aria-label": "
|
|
34075
|
+
"aria-label": t("richBlockEditor.editorToolbar"),
|
|
33750
34076
|
className: cn(
|
|
33751
34077
|
"flex flex-wrap items-center gap-1",
|
|
33752
34078
|
"border-b border-border bg-muted/30 px-2 py-2"
|
|
33753
34079
|
),
|
|
33754
34080
|
children: TOOLBAR_ENTRIES.map((entry) => {
|
|
33755
34081
|
const Icon3 = entry.icon;
|
|
34082
|
+
const entryLabel = t(entry.labelKey);
|
|
33756
34083
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
33757
34084
|
Button,
|
|
33758
34085
|
{
|
|
33759
34086
|
type: "button",
|
|
33760
34087
|
variant: "ghost",
|
|
33761
34088
|
size: "sm",
|
|
33762
|
-
"aria-label":
|
|
33763
|
-
title:
|
|
34089
|
+
"aria-label": t("richBlockEditor.insertEntry", { label: entryLabel }),
|
|
34090
|
+
title: entryLabel,
|
|
33764
34091
|
onClick: () => handleAppend(entry.type),
|
|
33765
34092
|
children: [
|
|
33766
34093
|
/* @__PURE__ */ jsxRuntime.jsx(Icon3, { size: 14 }),
|
|
33767
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { as: "span", variant: "caption", className: "ml-1 hidden text-xs sm:inline", children:
|
|
34094
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { as: "span", variant: "caption", className: "ml-1 hidden text-xs sm:inline", children: entryLabel })
|
|
33768
34095
|
]
|
|
33769
34096
|
},
|
|
33770
34097
|
entry.type
|
|
@@ -33807,6 +34134,7 @@ var init_ReplyTree = __esm({
|
|
|
33807
34134
|
"use client";
|
|
33808
34135
|
init_cn();
|
|
33809
34136
|
init_useEventBus();
|
|
34137
|
+
init_useTranslate();
|
|
33810
34138
|
init_atoms2();
|
|
33811
34139
|
init_VoteStack();
|
|
33812
34140
|
ReplyTreeNode = ({
|
|
@@ -33826,6 +34154,7 @@ var init_ReplyTree = __esm({
|
|
|
33826
34154
|
showActions
|
|
33827
34155
|
}) => {
|
|
33828
34156
|
const eventBus = useEventBus();
|
|
34157
|
+
const { t } = useTranslate();
|
|
33829
34158
|
const hasReplies = !!node.replies && node.replies.length > 0;
|
|
33830
34159
|
const isCollapsed = collapsedSet.has(node.id);
|
|
33831
34160
|
const atMaxDepth = depth >= maxDepth;
|
|
@@ -33872,7 +34201,7 @@ var init_ReplyTree = __esm({
|
|
|
33872
34201
|
variant: "ghost",
|
|
33873
34202
|
size: "sm",
|
|
33874
34203
|
onClick: handleToggle,
|
|
33875
|
-
"aria-label": isCollapsed ? "
|
|
34204
|
+
"aria-label": isCollapsed ? t("replyTree.expandReplies") : t("replyTree.collapseReplies"),
|
|
33876
34205
|
"aria-expanded": !isCollapsed,
|
|
33877
34206
|
leftIcon: isCollapsed ? "chevron-right" : "chevron-down",
|
|
33878
34207
|
className: cn(
|
|
@@ -33913,7 +34242,7 @@ var init_ReplyTree = __esm({
|
|
|
33913
34242
|
onVote: handleVote,
|
|
33914
34243
|
size: "sm",
|
|
33915
34244
|
variant: "horizontal",
|
|
33916
|
-
label:
|
|
34245
|
+
label: t("replyTree.voteOnReplyBy", { author: node.authorName })
|
|
33917
34246
|
}
|
|
33918
34247
|
),
|
|
33919
34248
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -33923,8 +34252,8 @@ var init_ReplyTree = __esm({
|
|
|
33923
34252
|
size: "sm",
|
|
33924
34253
|
leftIcon: "message-square",
|
|
33925
34254
|
onClick: handleReply,
|
|
33926
|
-
"aria-label":
|
|
33927
|
-
children: "
|
|
34255
|
+
"aria-label": t("replyTree.replyTo", { author: node.authorName }),
|
|
34256
|
+
children: t("replyTree.reply")
|
|
33928
34257
|
}
|
|
33929
34258
|
),
|
|
33930
34259
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -33934,8 +34263,8 @@ var init_ReplyTree = __esm({
|
|
|
33934
34263
|
size: "sm",
|
|
33935
34264
|
leftIcon: "flag",
|
|
33936
34265
|
onClick: handleFlag,
|
|
33937
|
-
"aria-label":
|
|
33938
|
-
children: "
|
|
34266
|
+
"aria-label": t("replyTree.flagReplyBy", { author: node.authorName }),
|
|
34267
|
+
children: t("replyTree.flag")
|
|
33939
34268
|
}
|
|
33940
34269
|
)
|
|
33941
34270
|
] }),
|
|
@@ -33946,9 +34275,9 @@ var init_ReplyTree = __esm({
|
|
|
33946
34275
|
inputType: "textarea",
|
|
33947
34276
|
rows: 2,
|
|
33948
34277
|
value: draft,
|
|
33949
|
-
placeholder:
|
|
34278
|
+
placeholder: t("replyTree.replyToPlaceholder", { author: node.authorName }),
|
|
33950
34279
|
onChange: (e) => setDraft(e.target.value),
|
|
33951
|
-
"aria-label":
|
|
34280
|
+
"aria-label": t("replyTree.replyTo", { author: node.authorName })
|
|
33952
34281
|
}
|
|
33953
34282
|
),
|
|
33954
34283
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex flex-row gap-2 items-center", children: [
|
|
@@ -33960,10 +34289,10 @@ var init_ReplyTree = __esm({
|
|
|
33960
34289
|
leftIcon: "send",
|
|
33961
34290
|
onClick: handleSubmitReply,
|
|
33962
34291
|
disabled: !draft.trim(),
|
|
33963
|
-
children: "
|
|
34292
|
+
children: t("replyTree.send")
|
|
33964
34293
|
}
|
|
33965
34294
|
),
|
|
33966
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", onClick: handleCancelReply, children: "
|
|
34295
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", onClick: handleCancelReply, children: t("common.cancel") })
|
|
33967
34296
|
] })
|
|
33968
34297
|
] }),
|
|
33969
34298
|
hasReplies && !isCollapsed && (atMaxDepth ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -33977,7 +34306,7 @@ var init_ReplyTree = __esm({
|
|
|
33977
34306
|
"self-start gap-1 px-0 h-auto",
|
|
33978
34307
|
"text-sm text-primary hover:underline hover:bg-transparent"
|
|
33979
34308
|
),
|
|
33980
|
-
children: "
|
|
34309
|
+
children: t("replyTree.continueThread")
|
|
33981
34310
|
}
|
|
33982
34311
|
) : /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex flex-col gap-2 mt-1", children: node.replies.map((child) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
33983
34312
|
ReplyTreeNode,
|
|
@@ -34016,6 +34345,7 @@ var init_ReplyTree = __esm({
|
|
|
34016
34345
|
showActions = true,
|
|
34017
34346
|
className
|
|
34018
34347
|
}) => {
|
|
34348
|
+
const { t } = useTranslate();
|
|
34019
34349
|
const nodeList = Array.isArray(nodes) ? nodes : nodes ? [nodes] : [];
|
|
34020
34350
|
const [collapsedSet, setCollapsedSet] = React85.useState(() => {
|
|
34021
34351
|
const acc = /* @__PURE__ */ new Set();
|
|
@@ -34034,7 +34364,7 @@ var init_ReplyTree = __esm({
|
|
|
34034
34364
|
});
|
|
34035
34365
|
}, []);
|
|
34036
34366
|
if (nodeList.length === 0) {
|
|
34037
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("text-sm text-muted-foreground", className), children: "
|
|
34367
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("text-sm text-muted-foreground", className), children: t("replyTree.noRepliesYet") });
|
|
34038
34368
|
}
|
|
34039
34369
|
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("flex flex-col gap-2 min-w-0", className), children: nodeList.map((node) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
34040
34370
|
ReplyTreeNode,
|
|
@@ -34112,6 +34442,7 @@ var init_VersionDiff = __esm({
|
|
|
34112
34442
|
"use client";
|
|
34113
34443
|
init_cn();
|
|
34114
34444
|
init_useEventBus();
|
|
34445
|
+
init_useTranslate();
|
|
34115
34446
|
init_atoms2();
|
|
34116
34447
|
init_Stack();
|
|
34117
34448
|
INLINE_STYLES = {
|
|
@@ -34134,6 +34465,7 @@ var init_VersionDiff = __esm({
|
|
|
34134
34465
|
language,
|
|
34135
34466
|
className
|
|
34136
34467
|
}) => {
|
|
34468
|
+
const { t } = useTranslate();
|
|
34137
34469
|
const eventBus = useEventBus();
|
|
34138
34470
|
const revisions = Array.isArray(revisionsProp) ? revisionsProp : [];
|
|
34139
34471
|
const fallbackBefore = revisions[0]?.id ?? "";
|
|
@@ -34215,24 +34547,24 @@ var init_VersionDiff = __esm({
|
|
|
34215
34547
|
children: [
|
|
34216
34548
|
/* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", align: "center", className: "flex-wrap", children: [
|
|
34217
34549
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "git-commit", size: "sm", className: "text-muted-foreground" }),
|
|
34218
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "whitespace-nowrap", children: "
|
|
34550
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "whitespace-nowrap", children: t("versionDiff.compare") }),
|
|
34219
34551
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "min-w-0 md:min-w-[160px]", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
34220
34552
|
Select,
|
|
34221
34553
|
{
|
|
34222
34554
|
options,
|
|
34223
34555
|
value: activeBeforeId,
|
|
34224
34556
|
onChange: handleBeforeChange,
|
|
34225
|
-
"aria-label": "
|
|
34557
|
+
"aria-label": t("versionDiff.beforeRevision")
|
|
34226
34558
|
}
|
|
34227
34559
|
) }),
|
|
34228
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "secondary", children: "to" }),
|
|
34560
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "secondary", children: t("versionDiff.to") }),
|
|
34229
34561
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "min-w-0 md:min-w-[160px]", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
34230
34562
|
Select,
|
|
34231
34563
|
{
|
|
34232
34564
|
options,
|
|
34233
34565
|
value: activeAfterId,
|
|
34234
34566
|
onChange: handleAfterChange,
|
|
34235
|
-
"aria-label": "
|
|
34567
|
+
"aria-label": t("versionDiff.afterRevision")
|
|
34236
34568
|
}
|
|
34237
34569
|
) }),
|
|
34238
34570
|
language && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "default", children: language }),
|
|
@@ -34253,7 +34585,7 @@ var init_VersionDiff = __esm({
|
|
|
34253
34585
|
size: "sm",
|
|
34254
34586
|
icon: activeView === "side-by-side" ? "align-left" : "columns",
|
|
34255
34587
|
onClick: handleViewToggle,
|
|
34256
|
-
"aria-label": activeView === "side-by-side" ? "
|
|
34588
|
+
"aria-label": activeView === "side-by-side" ? t("versionDiff.switchToInline") : t("versionDiff.switchToSideBySide")
|
|
34257
34589
|
}
|
|
34258
34590
|
),
|
|
34259
34591
|
(onRevert || revertEvent) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -34263,7 +34595,7 @@ var init_VersionDiff = __esm({
|
|
|
34263
34595
|
size: "sm",
|
|
34264
34596
|
icon: "rotate-ccw",
|
|
34265
34597
|
onClick: handleRevert,
|
|
34266
|
-
children: "
|
|
34598
|
+
children: t("versionDiff.revert")
|
|
34267
34599
|
}
|
|
34268
34600
|
)
|
|
34269
34601
|
] })
|
|
@@ -34280,12 +34612,12 @@ var init_VersionDiff = __esm({
|
|
|
34280
34612
|
children: [
|
|
34281
34613
|
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "caption", color: "secondary", className: "truncate", children: [
|
|
34282
34614
|
beforeRev?.label,
|
|
34283
|
-
beforeRev?.author ?
|
|
34615
|
+
beforeRev?.author ? t("versionDiff.byAuthor", { author: beforeRev.author }) : "",
|
|
34284
34616
|
beforeRev?.timestamp ? ` (${beforeRev.timestamp})` : ""
|
|
34285
34617
|
] }),
|
|
34286
34618
|
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "caption", color: "secondary", className: "truncate", children: [
|
|
34287
34619
|
afterRev?.label,
|
|
34288
|
-
afterRev?.author ?
|
|
34620
|
+
afterRev?.author ? t("versionDiff.byAuthor", { author: afterRev.author }) : "",
|
|
34289
34621
|
afterRev?.timestamp ? ` (${afterRev.timestamp})` : ""
|
|
34290
34622
|
] })
|
|
34291
34623
|
]
|
|
@@ -34678,10 +35010,12 @@ var init_DocPagination = __esm({
|
|
|
34678
35010
|
}
|
|
34679
35011
|
});
|
|
34680
35012
|
function DocSearch({
|
|
34681
|
-
placeholder
|
|
35013
|
+
placeholder,
|
|
34682
35014
|
onSearch,
|
|
34683
35015
|
className
|
|
34684
35016
|
}) {
|
|
35017
|
+
const { t } = useTranslate();
|
|
35018
|
+
const resolvedPlaceholder = placeholder ?? t("docSearch.placeholder");
|
|
34685
35019
|
const [query, setQuery] = React85.useState("");
|
|
34686
35020
|
const [results, setResults] = React85.useState([]);
|
|
34687
35021
|
const [isOpen, setIsOpen] = React85.useState(false);
|
|
@@ -34788,7 +35122,7 @@ function DocSearch({
|
|
|
34788
35122
|
Input,
|
|
34789
35123
|
{
|
|
34790
35124
|
inputType: "search",
|
|
34791
|
-
placeholder,
|
|
35125
|
+
placeholder: resolvedPlaceholder,
|
|
34792
35126
|
value: query,
|
|
34793
35127
|
onChange: handleChange,
|
|
34794
35128
|
onFocus: handleFocus,
|
|
@@ -34853,6 +35187,7 @@ var init_DocSearch = __esm({
|
|
|
34853
35187
|
init_Typography();
|
|
34854
35188
|
init_Icon();
|
|
34855
35189
|
init_Input();
|
|
35190
|
+
init_useTranslate();
|
|
34856
35191
|
}
|
|
34857
35192
|
});
|
|
34858
35193
|
var DocSidebarCategory, DocSidebar;
|
|
@@ -36857,8 +37192,8 @@ var init_SignaturePad = __esm({
|
|
|
36857
37192
|
init_useEventBus();
|
|
36858
37193
|
init_useTranslate();
|
|
36859
37194
|
SignaturePad = ({
|
|
36860
|
-
label
|
|
36861
|
-
helperText
|
|
37195
|
+
label,
|
|
37196
|
+
helperText,
|
|
36862
37197
|
strokeColor,
|
|
36863
37198
|
strokeWidth = 2,
|
|
36864
37199
|
height = 200,
|
|
@@ -36874,6 +37209,8 @@ var init_SignaturePad = __esm({
|
|
|
36874
37209
|
}) => {
|
|
36875
37210
|
const eventBus = useEventBus();
|
|
36876
37211
|
const { t } = useTranslate();
|
|
37212
|
+
const resolvedLabel = label ?? t("signaturePad.label");
|
|
37213
|
+
const resolvedHelperText = helperText ?? t("signaturePad.helperText");
|
|
36877
37214
|
const canvasRef = React85.useRef(null);
|
|
36878
37215
|
const [isDrawing, setIsDrawing] = React85.useState(false);
|
|
36879
37216
|
const [hasSignature, setHasSignature] = React85.useState(!!value);
|
|
@@ -36976,7 +37313,7 @@ var init_SignaturePad = __esm({
|
|
|
36976
37313
|
);
|
|
36977
37314
|
}
|
|
36978
37315
|
return /* @__PURE__ */ jsxRuntime.jsx(Card, { className: cn("p-4", className), children: /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "sm", children: [
|
|
36979
|
-
|
|
37316
|
+
resolvedLabel && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "label", weight: "medium", children: resolvedLabel }),
|
|
36980
37317
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
36981
37318
|
Box,
|
|
36982
37319
|
{
|
|
@@ -37005,7 +37342,7 @@ var init_SignaturePad = __esm({
|
|
|
37005
37342
|
)
|
|
37006
37343
|
}
|
|
37007
37344
|
),
|
|
37008
|
-
|
|
37345
|
+
resolvedHelperText && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "secondary", children: resolvedHelperText }),
|
|
37009
37346
|
!readOnly && /* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", justify: "end", children: [
|
|
37010
37347
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
37011
37348
|
Button,
|
|
@@ -37015,7 +37352,7 @@ var init_SignaturePad = __esm({
|
|
|
37015
37352
|
icon: LucideIcons2.Eraser,
|
|
37016
37353
|
onClick: clearSignature,
|
|
37017
37354
|
disabled: !hasSignature,
|
|
37018
|
-
children: "
|
|
37355
|
+
children: t("signaturePad.clear")
|
|
37019
37356
|
}
|
|
37020
37357
|
),
|
|
37021
37358
|
signEvent && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -37026,7 +37363,7 @@ var init_SignaturePad = __esm({
|
|
|
37026
37363
|
icon: LucideIcons2.Check,
|
|
37027
37364
|
onClick: confirmSignature,
|
|
37028
37365
|
disabled: !hasSignature,
|
|
37029
|
-
children: "
|
|
37366
|
+
children: t("signaturePad.confirm")
|
|
37030
37367
|
}
|
|
37031
37368
|
)
|
|
37032
37369
|
] })
|
|
@@ -41471,6 +41808,7 @@ function MasterDetail({
|
|
|
41471
41808
|
className,
|
|
41472
41809
|
...rest
|
|
41473
41810
|
}) {
|
|
41811
|
+
const { t } = useTranslate();
|
|
41474
41812
|
const loading = externalLoading ?? false;
|
|
41475
41813
|
const isLoading = externalIsLoading ?? false;
|
|
41476
41814
|
const error = externalError ?? null;
|
|
@@ -41483,8 +41821,8 @@ function MasterDetail({
|
|
|
41483
41821
|
isLoading: loading || isLoading,
|
|
41484
41822
|
error,
|
|
41485
41823
|
className,
|
|
41486
|
-
emptyTitle: "
|
|
41487
|
-
emptyDescription: "
|
|
41824
|
+
emptyTitle: t("table.empty.title"),
|
|
41825
|
+
emptyDescription: t("empty.createFirst"),
|
|
41488
41826
|
...rest
|
|
41489
41827
|
}
|
|
41490
41828
|
);
|
|
@@ -41493,6 +41831,7 @@ var init_MasterDetail = __esm({
|
|
|
41493
41831
|
"components/core/organisms/MasterDetail.tsx"() {
|
|
41494
41832
|
"use client";
|
|
41495
41833
|
init_DataTable();
|
|
41834
|
+
init_useTranslate();
|
|
41496
41835
|
MasterDetail.displayName = "MasterDetail";
|
|
41497
41836
|
}
|
|
41498
41837
|
});
|
|
@@ -41501,14 +41840,18 @@ var init_MasterDetailLayout = __esm({
|
|
|
41501
41840
|
"components/core/organisms/layout/MasterDetailLayout.tsx"() {
|
|
41502
41841
|
init_cn();
|
|
41503
41842
|
init_Typography();
|
|
41504
|
-
|
|
41505
|
-
|
|
41506
|
-
{
|
|
41507
|
-
|
|
41508
|
-
|
|
41509
|
-
|
|
41510
|
-
|
|
41511
|
-
|
|
41843
|
+
init_useTranslate();
|
|
41844
|
+
DefaultEmptyDetail = () => {
|
|
41845
|
+
const { t } = useTranslate();
|
|
41846
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center h-full border-2 border-dashed border-border", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
41847
|
+
Typography,
|
|
41848
|
+
{
|
|
41849
|
+
variant: "body2",
|
|
41850
|
+
className: "text-muted-foreground",
|
|
41851
|
+
children: t("masterDetail.selectItem")
|
|
41852
|
+
}
|
|
41853
|
+
) });
|
|
41854
|
+
};
|
|
41512
41855
|
MasterDetailLayout = ({
|
|
41513
41856
|
master,
|
|
41514
41857
|
detail,
|
|
@@ -41635,7 +41978,7 @@ var init_MediaGallery = __esm({
|
|
|
41635
41978
|
{
|
|
41636
41979
|
icon: LucideIcons2.Image,
|
|
41637
41980
|
title: t("display.noMedia"),
|
|
41638
|
-
description: "
|
|
41981
|
+
description: t("mediaGallery.noMediaDescription"),
|
|
41639
41982
|
className
|
|
41640
41983
|
}
|
|
41641
41984
|
);
|
|
@@ -41652,7 +41995,7 @@ var init_MediaGallery = __esm({
|
|
|
41652
41995
|
size: "sm",
|
|
41653
41996
|
icon: LucideIcons2.Upload,
|
|
41654
41997
|
action: "MEDIA_UPLOAD",
|
|
41655
|
-
children: "
|
|
41998
|
+
children: t("mediaGallery.upload")
|
|
41656
41999
|
}
|
|
41657
42000
|
),
|
|
41658
42001
|
actions?.map((action, idx) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -41666,10 +42009,7 @@ var init_MediaGallery = __esm({
|
|
|
41666
42009
|
))
|
|
41667
42010
|
] })
|
|
41668
42011
|
] }),
|
|
41669
|
-
selectable && selectedItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(HStack, { gap: "sm", align: "center", children: /* @__PURE__ */ jsxRuntime.
|
|
41670
|
-
selectedItems.length,
|
|
41671
|
-
" selected"
|
|
41672
|
-
] }) }),
|
|
42012
|
+
selectable && selectedItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(HStack, { gap: "sm", align: "center", children: /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "info", children: t("table.bulk.selected", { count: selectedItems.length }) }) }),
|
|
41673
42013
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
41674
42014
|
Box,
|
|
41675
42015
|
{
|
|
@@ -42524,7 +42864,7 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
42524
42864
|
EmptyState,
|
|
42525
42865
|
{
|
|
42526
42866
|
title: t("debug.noActiveTraits"),
|
|
42527
|
-
description: "
|
|
42867
|
+
description: t("debug.traitsMountHint"),
|
|
42528
42868
|
className: "py-8"
|
|
42529
42869
|
}
|
|
42530
42870
|
);
|
|
@@ -42534,14 +42874,11 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
42534
42874
|
header: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 w-full", children: [
|
|
42535
42875
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", weight: "semibold", className: "text-purple-600 dark:text-purple-400", children: trait.name }),
|
|
42536
42876
|
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "success", size: "sm", children: trait.currentState }),
|
|
42537
|
-
/* @__PURE__ */ jsxRuntime.
|
|
42538
|
-
trait.transitionCount,
|
|
42539
|
-
" transitions"
|
|
42540
|
-
] })
|
|
42877
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-500 ml-auto", children: t("debug.transitionsCount", { count: trait.transitionCount }) })
|
|
42541
42878
|
] }),
|
|
42542
42879
|
content: /* @__PURE__ */ jsxRuntime.jsxs(Stack, { gap: "sm", children: [
|
|
42543
42880
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42544
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: "
|
|
42881
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.states") }),
|
|
42545
42882
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1", children: trait.states.map((state) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
42546
42883
|
Badge,
|
|
42547
42884
|
{
|
|
@@ -42553,7 +42890,7 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
42553
42890
|
)) })
|
|
42554
42891
|
] }),
|
|
42555
42892
|
trait.transitions.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42556
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: "
|
|
42893
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.transitions") }),
|
|
42557
42894
|
/* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: trait.transitions.map((t2, i) => /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "font-mono", children: [
|
|
42558
42895
|
t2.from,
|
|
42559
42896
|
" \u2192 ",
|
|
@@ -42572,7 +42909,7 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
42572
42909
|
] }, i)) })
|
|
42573
42910
|
] }),
|
|
42574
42911
|
trait.guards.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42575
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: "
|
|
42912
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.guards") }),
|
|
42576
42913
|
/* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: trait.guards.map((g, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
42577
42914
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", children: g.name }),
|
|
42578
42915
|
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: g.lastResult === true ? "success" : g.lastResult === false ? "danger" : "default", size: "sm", children: g.lastResult === void 0 ? "?" : g.lastResult ? "\u2713" : "\u2717" })
|
|
@@ -42678,7 +43015,7 @@ function EntitiesTab({ snapshot }) {
|
|
|
42678
43015
|
EmptyState,
|
|
42679
43016
|
{
|
|
42680
43017
|
title: t("debug.noEntityData"),
|
|
42681
|
-
description: "
|
|
43018
|
+
description: t("debug.debugModeHint"),
|
|
42682
43019
|
className: "py-8"
|
|
42683
43020
|
}
|
|
42684
43021
|
);
|
|
@@ -42691,7 +43028,7 @@ function EntitiesTab({ snapshot }) {
|
|
|
42691
43028
|
EmptyState,
|
|
42692
43029
|
{
|
|
42693
43030
|
title: t("debug.noEntities"),
|
|
42694
|
-
description: "
|
|
43031
|
+
description: t("debug.entitiesSpawnHint"),
|
|
42695
43032
|
className: "py-8"
|
|
42696
43033
|
}
|
|
42697
43034
|
);
|
|
@@ -42699,7 +43036,7 @@ function EntitiesTab({ snapshot }) {
|
|
|
42699
43036
|
const singletonItems = singletonEntries.map(([name, data]) => ({
|
|
42700
43037
|
id: `singleton-${name}`,
|
|
42701
43038
|
header: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
42702
|
-
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "primary", size: "sm", children: "
|
|
43039
|
+
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "primary", size: "sm", children: t("debug.singleton") }),
|
|
42703
43040
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", weight: "semibold", className: "text-sky-600 dark:text-sky-400", children: name })
|
|
42704
43041
|
] }),
|
|
42705
43042
|
content: /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "text-xs text-gray-600 dark:text-gray-400 bg-gray-50 dark:bg-gray-800 p-2 rounded overflow-auto max-h-40", children: JSON.stringify(data, null, 2) })
|
|
@@ -42717,31 +43054,19 @@ function EntitiesTab({ snapshot }) {
|
|
|
42717
43054
|
}));
|
|
42718
43055
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--entities", children: [
|
|
42719
43056
|
singletonItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4", children: [
|
|
42720
|
-
/* @__PURE__ */ jsxRuntime.
|
|
42721
|
-
"Singletons (",
|
|
42722
|
-
singletonItems.length,
|
|
42723
|
-
")"
|
|
42724
|
-
] }),
|
|
43057
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.singletonsCount", { count: singletonItems.length }) }),
|
|
42725
43058
|
/* @__PURE__ */ jsxRuntime.jsx(Accordion, { items: singletonItems, multiple: true })
|
|
42726
43059
|
] }),
|
|
42727
43060
|
runtimeItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4", children: [
|
|
42728
|
-
/* @__PURE__ */ jsxRuntime.
|
|
42729
|
-
"Runtime (",
|
|
42730
|
-
runtimeEntities.length,
|
|
42731
|
-
")"
|
|
42732
|
-
] }),
|
|
43061
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.runtimeCount", { count: runtimeEntities.length }) }),
|
|
42733
43062
|
/* @__PURE__ */ jsxRuntime.jsx(Accordion, { items: runtimeItems, multiple: true }),
|
|
42734
|
-
runtimeEntities.length > 20 && /* @__PURE__ */ jsxRuntime.
|
|
42735
|
-
"+",
|
|
42736
|
-
runtimeEntities.length - 20,
|
|
42737
|
-
" more entities"
|
|
42738
|
-
] })
|
|
43063
|
+
runtimeEntities.length > 20 && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-400 text-center mt-2", children: t("debug.moreEntities", { count: runtimeEntities.length - 20 }) })
|
|
42739
43064
|
] }),
|
|
42740
43065
|
persistentEntries.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42741
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: "
|
|
43066
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.persistent") }),
|
|
42742
43067
|
/* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: persistentEntries.map(([type, info]) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between py-1", children: [
|
|
42743
43068
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", children: type }),
|
|
42744
|
-
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: info.loaded ? "success" : "default", size: "sm", children: info.loaded ?
|
|
43069
|
+
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: info.loaded ? "success" : "default", size: "sm", children: info.loaded ? t("debug.loadedCount", { count: info.count }) : t("debug.notLoaded") })
|
|
42745
43070
|
] }, type)) })
|
|
42746
43071
|
] })
|
|
42747
43072
|
] });
|
|
@@ -42785,7 +43110,7 @@ function EventFlowTab({ events: events2 }) {
|
|
|
42785
43110
|
EmptyState,
|
|
42786
43111
|
{
|
|
42787
43112
|
title: t("debug.noEventsYet"),
|
|
42788
|
-
description: "
|
|
43113
|
+
description: t("debug.eventsExecuteHint"),
|
|
42789
43114
|
className: "py-8"
|
|
42790
43115
|
}
|
|
42791
43116
|
);
|
|
@@ -42796,17 +43121,13 @@ function EventFlowTab({ events: events2 }) {
|
|
|
42796
43121
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--events", children: [
|
|
42797
43122
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 mb-3 flex-wrap", children: [
|
|
42798
43123
|
/* @__PURE__ */ jsxRuntime.jsxs(ButtonGroup, { children: [
|
|
42799
|
-
/* @__PURE__ */ jsxRuntime.
|
|
43124
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
42800
43125
|
Button,
|
|
42801
43126
|
{
|
|
42802
43127
|
size: "sm",
|
|
42803
43128
|
variant: filter === "all" ? "primary" : "secondary",
|
|
42804
43129
|
onClick: () => setFilter("all"),
|
|
42805
|
-
children:
|
|
42806
|
-
"All (",
|
|
42807
|
-
events2.length,
|
|
42808
|
-
")"
|
|
42809
|
-
]
|
|
43130
|
+
children: t("debug.allCount", { count: events2.length })
|
|
42810
43131
|
}
|
|
42811
43132
|
),
|
|
42812
43133
|
eventTypes.map((type) => {
|
|
@@ -42836,7 +43157,7 @@ function EventFlowTab({ events: events2 }) {
|
|
|
42836
43157
|
onChange: (e) => setAutoScroll(e.target.checked)
|
|
42837
43158
|
}
|
|
42838
43159
|
),
|
|
42839
|
-
"
|
|
43160
|
+
t("debug.autoScroll")
|
|
42840
43161
|
] })
|
|
42841
43162
|
] }),
|
|
42842
43163
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -42894,7 +43215,7 @@ function GuardsPanel({ guards }) {
|
|
|
42894
43215
|
EmptyState,
|
|
42895
43216
|
{
|
|
42896
43217
|
title: t("debug.noGuardEvaluations"),
|
|
42897
|
-
description: "
|
|
43218
|
+
description: t("debug.guardEvaluationsHint"),
|
|
42898
43219
|
className: "py-8"
|
|
42899
43220
|
}
|
|
42900
43221
|
);
|
|
@@ -42925,15 +43246,15 @@ function GuardsPanel({ guards }) {
|
|
|
42925
43246
|
] }),
|
|
42926
43247
|
content: /* @__PURE__ */ jsxRuntime.jsxs(Stack, { gap: "sm", children: [
|
|
42927
43248
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42928
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: "
|
|
43249
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: t("debug.expression") }),
|
|
42929
43250
|
/* @__PURE__ */ jsxRuntime.jsx("code", { className: "block mt-1 text-xs text-amber-600 dark:text-amber-400 bg-amber-50 dark:bg-amber-900/20 px-2 py-1 rounded", children: guard.expression })
|
|
42930
43251
|
] }),
|
|
42931
43252
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42932
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: "
|
|
43253
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: t("debug.inputs") }),
|
|
42933
43254
|
/* @__PURE__ */ jsxRuntime.jsx("pre", { className: "mt-1 text-xs text-gray-600 dark:text-gray-400 bg-gray-50 dark:bg-gray-800 p-2 rounded overflow-auto max-h-24", children: JSON.stringify(guard.inputs, null, 2) })
|
|
42934
43255
|
] }),
|
|
42935
43256
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42936
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: "
|
|
43257
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: t("debug.trait") }),
|
|
42937
43258
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", children: guard.context.traitName })
|
|
42938
43259
|
] })
|
|
42939
43260
|
] })
|
|
@@ -42951,9 +43272,9 @@ function GuardsPanel({ guards }) {
|
|
|
42951
43272
|
] })
|
|
42952
43273
|
] }),
|
|
42953
43274
|
/* @__PURE__ */ jsxRuntime.jsxs(ButtonGroup, { children: [
|
|
42954
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", variant: filter === "all" ? "primary" : "secondary", onClick: () => setFilter("all"), children: "
|
|
42955
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", variant: filter === "passed" ? "primary" : "secondary", onClick: () => setFilter("passed"), children: "
|
|
42956
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", variant: filter === "failed" ? "primary" : "secondary", onClick: () => setFilter("failed"), children: "
|
|
43275
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", variant: filter === "all" ? "primary" : "secondary", onClick: () => setFilter("all"), children: t("debug.filterAll") }),
|
|
43276
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", variant: filter === "passed" ? "primary" : "secondary", onClick: () => setFilter("passed"), children: t("debug.filterPassed") }),
|
|
43277
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", variant: filter === "failed" ? "primary" : "secondary", onClick: () => setFilter("failed"), children: t("debug.filterFailed") })
|
|
42957
43278
|
] })
|
|
42958
43279
|
] }),
|
|
42959
43280
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-80 overflow-y-auto", children: /* @__PURE__ */ jsxRuntime.jsx(Accordion, { items: accordionItems }) })
|
|
@@ -43079,7 +43400,7 @@ function TransitionTimeline({ transitions }) {
|
|
|
43079
43400
|
EmptyState,
|
|
43080
43401
|
{
|
|
43081
43402
|
title: t("debug.noTransitionsRecorded"),
|
|
43082
|
-
description: "
|
|
43403
|
+
description: t("debug.transitionsProcessHint"),
|
|
43083
43404
|
className: "py-8"
|
|
43084
43405
|
}
|
|
43085
43406
|
);
|
|
@@ -43096,10 +43417,7 @@ function TransitionTimeline({ transitions }) {
|
|
|
43096
43417
|
const sorted = [...transitions].reverse();
|
|
43097
43418
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--timeline", children: [
|
|
43098
43419
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between mb-2", children: [
|
|
43099
|
-
/* @__PURE__ */ jsxRuntime.
|
|
43100
|
-
transitions.length,
|
|
43101
|
-
" transitions recorded"
|
|
43102
|
-
] }),
|
|
43420
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-500", children: t("debug.transitionsRecorded", { count: transitions.length }) }),
|
|
43103
43421
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-1 text-xs text-gray-500 cursor-pointer", children: [
|
|
43104
43422
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
43105
43423
|
Checkbox,
|
|
@@ -43108,7 +43426,7 @@ function TransitionTimeline({ transitions }) {
|
|
|
43108
43426
|
onChange: (e) => setAutoScroll(e.target.checked)
|
|
43109
43427
|
}
|
|
43110
43428
|
),
|
|
43111
|
-
"
|
|
43429
|
+
t("debug.autoScroll")
|
|
43112
43430
|
] })
|
|
43113
43431
|
] }),
|
|
43114
43432
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -43151,15 +43469,13 @@ function TransitionTimeline({ transitions }) {
|
|
|
43151
43469
|
variant: trace.guardResult ? "success" : "danger",
|
|
43152
43470
|
size: "sm",
|
|
43153
43471
|
children: [
|
|
43154
|
-
"
|
|
43472
|
+
t("debug.guardLabel"),
|
|
43473
|
+
" ",
|
|
43155
43474
|
trace.guardResult ? "\u2713" : "\u2717"
|
|
43156
43475
|
]
|
|
43157
43476
|
}
|
|
43158
43477
|
),
|
|
43159
|
-
/* @__PURE__ */ jsxRuntime.
|
|
43160
|
-
trace.effects.length,
|
|
43161
|
-
" effects"
|
|
43162
|
-
] })
|
|
43478
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-400 ml-auto", children: t("debug.effectsCount", { count: trace.effects.length }) })
|
|
43163
43479
|
] }),
|
|
43164
43480
|
isExpanded && trace.effects.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ml-2 mt-1 mb-2 pl-2 border-l border-gray-200 dark:border-gray-700 space-y-1", children: trace.effects.map((effect, eIdx) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1", children: [
|
|
43165
43481
|
/* @__PURE__ */ jsxRuntime.jsx(EffectBadge, { effect }),
|
|
@@ -43208,13 +43524,13 @@ function ServerBridgeTab({ bridge }) {
|
|
|
43208
43524
|
EmptyState,
|
|
43209
43525
|
{
|
|
43210
43526
|
title: t("debug.noBridgeData"),
|
|
43211
|
-
description: "
|
|
43527
|
+
description: t("debug.bridgeInitHint"),
|
|
43212
43528
|
className: "py-8"
|
|
43213
43529
|
}
|
|
43214
43530
|
);
|
|
43215
43531
|
}
|
|
43216
43532
|
const formatTime4 = (ts) => {
|
|
43217
|
-
if (ts === 0) return "
|
|
43533
|
+
if (ts === 0) return t("debug.never");
|
|
43218
43534
|
const d = new Date(ts);
|
|
43219
43535
|
return d.toLocaleTimeString("en-US", {
|
|
43220
43536
|
hour12: false,
|
|
@@ -43227,14 +43543,14 @@ function ServerBridgeTab({ bridge }) {
|
|
|
43227
43543
|
/* @__PURE__ */ jsxRuntime.jsxs(Card, { className: "p-3", children: [
|
|
43228
43544
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 mb-3", children: [
|
|
43229
43545
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: `w-3 h-3 rounded-full ${bridge.connected ? "bg-green-500 animate-pulse" : "bg-red-500"}` }),
|
|
43230
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h6", children: bridge.connected ? "
|
|
43546
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h6", children: bridge.connected ? t("debug.connected") : t("debug.disconnected") })
|
|
43231
43547
|
] }),
|
|
43232
43548
|
/* @__PURE__ */ jsxRuntime.jsxs(Stack, { gap: "xs", children: [
|
|
43233
43549
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
43234
43550
|
StatRow,
|
|
43235
43551
|
{
|
|
43236
43552
|
label: t("debug.status"),
|
|
43237
|
-
value: bridge.connected ? "
|
|
43553
|
+
value: bridge.connected ? t("debug.connected") : t("debug.disconnected"),
|
|
43238
43554
|
variant: bridge.connected ? "success" : "danger"
|
|
43239
43555
|
}
|
|
43240
43556
|
),
|
|
@@ -43262,13 +43578,10 @@ function ServerBridgeTab({ bridge }) {
|
|
|
43262
43578
|
] })
|
|
43263
43579
|
] }),
|
|
43264
43580
|
bridge.lastError && /* @__PURE__ */ jsxRuntime.jsxs(Card, { className: "p-3 border-red-200 dark:border-red-800 bg-red-50 dark:bg-red-950", children: [
|
|
43265
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "semibold", className: "text-red-600 dark:text-red-400 mb-1", children: "
|
|
43581
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "semibold", className: "text-red-600 dark:text-red-400 mb-1", children: t("debug.lastError") }),
|
|
43266
43582
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-red-500 font-mono break-all", children: bridge.lastError })
|
|
43267
43583
|
] }),
|
|
43268
|
-
bridge.connected && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-center py-2", children: /* @__PURE__ */ jsxRuntime.
|
|
43269
|
-
bridge.eventsForwarded + bridge.eventsReceived,
|
|
43270
|
-
" total events processed"
|
|
43271
|
-
] }) })
|
|
43584
|
+
bridge.connected && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-center py-2", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-400", children: t("debug.totalEventsProcessed", { count: bridge.eventsForwarded + bridge.eventsReceived }) }) })
|
|
43272
43585
|
] }) });
|
|
43273
43586
|
}
|
|
43274
43587
|
var init_ServerBridgeTab = __esm({
|
|
@@ -43378,7 +43691,7 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
43378
43691
|
EmptyState,
|
|
43379
43692
|
{
|
|
43380
43693
|
title: t("debug.noActiveTraits"),
|
|
43381
|
-
description: "
|
|
43694
|
+
description: t("debug.traitsInitHint"),
|
|
43382
43695
|
className: "py-8"
|
|
43383
43696
|
}
|
|
43384
43697
|
);
|
|
@@ -43395,7 +43708,7 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
43395
43708
|
};
|
|
43396
43709
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--dispatch", children: [
|
|
43397
43710
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3", children: [
|
|
43398
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
43711
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.activeStates") }),
|
|
43399
43712
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1", children: traits2.map((trait) => /* @__PURE__ */ jsxRuntime.jsxs(Badge, { variant: "success", size: "sm", children: [
|
|
43400
43713
|
trait.name,
|
|
43401
43714
|
": ",
|
|
@@ -43403,8 +43716,8 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
43403
43716
|
] }, trait.id)) })
|
|
43404
43717
|
] }),
|
|
43405
43718
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3", children: [
|
|
43406
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
43407
|
-
availableEvents.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-400 italic", children: "
|
|
43719
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.availableEvents") }),
|
|
43720
|
+
availableEvents.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-400 italic", children: t("debug.noTransitionsFromState") }) : /* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: availableEvents.map(({ event, transitions }) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
43408
43721
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
43409
43722
|
Button,
|
|
43410
43723
|
{
|
|
@@ -43416,15 +43729,15 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
43416
43729
|
}
|
|
43417
43730
|
),
|
|
43418
43731
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-500", children: transitions.map((t2) => `${t2.from} -> ${t2.to}`).join(", ") }),
|
|
43419
|
-
transitions.some((
|
|
43732
|
+
transitions.some((tr) => tr.guard) && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "warning", size: "sm", children: t("debug.guarded") })
|
|
43420
43733
|
] }, event)) })
|
|
43421
43734
|
] }),
|
|
43422
43735
|
unavailableEvents.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3", children: [
|
|
43423
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
43736
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.otherEvents") }),
|
|
43424
43737
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1", children: unavailableEvents.map((event) => /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "default", size: "sm", className: "opacity-50", children: event }, event)) })
|
|
43425
43738
|
] }),
|
|
43426
43739
|
log12.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
43427
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
43740
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.recentTransitions") }),
|
|
43428
43741
|
/* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: log12.map((entry, i) => /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "font-mono text-xs", children: [
|
|
43429
43742
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-400", children: entry.traitName }),
|
|
43430
43743
|
" ",
|
|
@@ -43455,21 +43768,20 @@ var init_RuntimeDebugger = __esm({
|
|
|
43455
43768
|
}
|
|
43456
43769
|
});
|
|
43457
43770
|
function ServerResponseRow({ sr }) {
|
|
43771
|
+
const { t } = useTranslate();
|
|
43458
43772
|
const entityEntries = Object.entries(sr.dataEntities);
|
|
43459
43773
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ml-4 pl-2 border-l border-purple-500/30 py-0.5 text-xs font-mono", children: [
|
|
43460
43774
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
43461
43775
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: sr.success ? "text-green-600 dark:text-green-400" : "text-red-600 dark:text-red-400", children: [
|
|
43462
43776
|
sr.success ? "\u2713" : "\u2717",
|
|
43463
|
-
"
|
|
43777
|
+
" ",
|
|
43778
|
+
t("debug.server")
|
|
43464
43779
|
] }),
|
|
43465
43780
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-600 dark:text-purple-300", children: sr.orbitalName }),
|
|
43466
|
-
sr.clientEffects > 0 && /* @__PURE__ */ jsxRuntime.
|
|
43467
|
-
sr.clientEffects,
|
|
43468
|
-
" clientEffect",
|
|
43469
|
-
sr.clientEffects !== 1 ? "s" : ""
|
|
43470
|
-
] }),
|
|
43781
|
+
sr.clientEffects > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "px-1 rounded bg-purple-500/15 text-purple-600 dark:text-purple-300", children: t("debug.clientEffectsCount", { count: sr.clientEffects }) }),
|
|
43471
43782
|
sr.emittedEvents.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "px-1 rounded bg-blue-500/15 text-blue-300", children: [
|
|
43472
|
-
"
|
|
43783
|
+
t("debug.emitLabel"),
|
|
43784
|
+
" ",
|
|
43473
43785
|
sr.emittedEvents.join(", ")
|
|
43474
43786
|
] }),
|
|
43475
43787
|
sr.error && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "px-1 rounded bg-red-500/15 text-red-600 dark:text-red-400 truncate max-w-[300px]", children: sr.error })
|
|
@@ -43477,13 +43789,12 @@ function ServerResponseRow({ sr }) {
|
|
|
43477
43789
|
entityEntries.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1 mt-0.5", children: entityEntries.map(([name, count]) => /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "px-1 rounded bg-[var(--color-card)] text-foreground", children: [
|
|
43478
43790
|
name,
|
|
43479
43791
|
": ",
|
|
43480
|
-
count
|
|
43481
|
-
" row",
|
|
43482
|
-
count !== 1 ? "s" : ""
|
|
43792
|
+
t("debug.rowsCount", { count })
|
|
43483
43793
|
] }, name)) })
|
|
43484
43794
|
] });
|
|
43485
43795
|
}
|
|
43486
43796
|
function TransitionRow({ trace }) {
|
|
43797
|
+
const { t } = useTranslate();
|
|
43487
43798
|
const isServerEntry = !!trace.serverResponse && trace.traitName.startsWith("server:");
|
|
43488
43799
|
const hasFailedEffects = trace.effects.some((e) => e.status === "failed");
|
|
43489
43800
|
if (isServerEntry && trace.serverResponse) {
|
|
@@ -43491,7 +43802,7 @@ function TransitionRow({ trace }) {
|
|
|
43491
43802
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-2 text-xs font-mono", children: [
|
|
43492
43803
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "mt-1.5 w-1.5 h-1.5 rounded-full flex-shrink-0 bg-purple-500" }),
|
|
43493
43804
|
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "warning", size: "sm", className: "flex-shrink-0", children: trace.event }),
|
|
43494
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-600 dark:text-purple-400 flex-shrink-0", children: "
|
|
43805
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-600 dark:text-purple-400 flex-shrink-0", children: t("debug.serverResponse") })
|
|
43495
43806
|
] }),
|
|
43496
43807
|
/* @__PURE__ */ jsxRuntime.jsx(ServerResponseRow, { sr: trace.serverResponse })
|
|
43497
43808
|
] });
|
|
@@ -43532,6 +43843,7 @@ function VerifyModePanel({
|
|
|
43532
43843
|
serverCount,
|
|
43533
43844
|
localCount
|
|
43534
43845
|
}) {
|
|
43846
|
+
const { t } = useTranslate();
|
|
43535
43847
|
const [expanded, setExpanded] = React85__namespace.useState(true);
|
|
43536
43848
|
const scrollRef = React85__namespace.useRef(null);
|
|
43537
43849
|
const prevCountRef = React85__namespace.useRef(0);
|
|
@@ -43562,30 +43874,20 @@ function VerifyModePanel({
|
|
|
43562
43874
|
onClick: () => setExpanded((v) => !v),
|
|
43563
43875
|
className: "px-3 py-1.5 flex items-center gap-3 text-xs font-mono border-b border-border flex-shrink-0 w-full text-left hover:bg-[var(--color-card-hover,transparent)] cursor-pointer",
|
|
43564
43876
|
"aria-expanded": expanded,
|
|
43565
|
-
"aria-label": expanded ? "
|
|
43877
|
+
"aria-label": expanded ? t("debug.collapseVerificationTimeline") : t("debug.expandVerificationTimeline"),
|
|
43566
43878
|
"data-testid": "debugger-verify-toggle",
|
|
43567
43879
|
children: [
|
|
43568
43880
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground/50 w-3", "aria-hidden": true, children: expanded ? "\u25BE" : "\u25B8" }),
|
|
43569
|
-
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: failedChecks > 0 ? "danger" : "success", size: "sm", children: failedChecks > 0 ?
|
|
43570
|
-
/* @__PURE__ */ jsxRuntime.
|
|
43571
|
-
|
|
43572
|
-
" local"
|
|
43573
|
-
] }),
|
|
43574
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-purple-600 dark:text-purple-400", children: [
|
|
43575
|
-
serverCount,
|
|
43576
|
-
" server"
|
|
43577
|
-
] }),
|
|
43881
|
+
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: failedChecks > 0 ? "danger" : "success", size: "sm", children: failedChecks > 0 ? t("debug.failCount", { count: failedChecks }) : t("debug.ok") }),
|
|
43882
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground/70", children: t("debug.localCount", { count: localCount }) }),
|
|
43883
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-600 dark:text-purple-400", children: t("debug.serverCount", { count: serverCount }) }),
|
|
43578
43884
|
traitStates && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-cyan-600 dark:text-cyan-400 truncate max-w-[400px]", children: traitStates }),
|
|
43579
|
-
!expanded && transitions.length > 0 && /* @__PURE__ */ jsxRuntime.
|
|
43580
|
-
transitions.length,
|
|
43581
|
-
" transition",
|
|
43582
|
-
transitions.length !== 1 ? "s" : ""
|
|
43583
|
-
] })
|
|
43885
|
+
!expanded && transitions.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-auto text-foreground/50", children: t("debug.transitionsCount", { count: transitions.length }) })
|
|
43584
43886
|
]
|
|
43585
43887
|
}
|
|
43586
43888
|
),
|
|
43587
43889
|
expanded && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 flex overflow-hidden", children: [
|
|
43588
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { ref: scrollRef, className: "flex-1 overflow-y-auto", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-2 py-1", children: transitions.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-foreground/50 text-xs font-mono py-2 text-center", children: "
|
|
43890
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { ref: scrollRef, className: "flex-1 overflow-y-auto", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-2 py-1", children: transitions.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-foreground/50 text-xs font-mono py-2 text-center", children: t("debug.waitingForTransitions") }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-0.5", children: transitions.map((trace) => /* @__PURE__ */ jsxRuntime.jsx(TransitionRow, { trace }, trace.id)) }) }) }),
|
|
43589
43891
|
/* @__PURE__ */ jsxRuntime.jsx(WalkMinimap, {})
|
|
43590
43892
|
] })
|
|
43591
43893
|
]
|
|
@@ -43601,6 +43903,7 @@ function RuntimeDebugger({
|
|
|
43601
43903
|
defaultTab,
|
|
43602
43904
|
schema
|
|
43603
43905
|
}) {
|
|
43906
|
+
const { t } = useTranslate();
|
|
43604
43907
|
const [isCollapsed, setIsCollapsed] = React85__namespace.useState(mode === "verify" ? true : defaultCollapsed);
|
|
43605
43908
|
const [isVisible, setIsVisible] = React85__namespace.useState(mode === "inline" || mode === "verify" || isDebugEnabled2());
|
|
43606
43909
|
const debugData = useDebugData();
|
|
@@ -43639,55 +43942,55 @@ function RuntimeDebugger({
|
|
|
43639
43942
|
const tabItems = [
|
|
43640
43943
|
{
|
|
43641
43944
|
id: "dispatch",
|
|
43642
|
-
label: "
|
|
43945
|
+
label: t("debug.tabDispatch"),
|
|
43643
43946
|
badge: debugData.traits.length || void 0,
|
|
43644
43947
|
content: /* @__PURE__ */ jsxRuntime.jsx(EventDispatcherTab, { traits: debugData.traits, schema })
|
|
43645
43948
|
},
|
|
43646
43949
|
{
|
|
43647
43950
|
id: "verify",
|
|
43648
|
-
label: failedChecks > 0 ? "
|
|
43951
|
+
label: failedChecks > 0 ? t("debug.tabVerifyAlert") : t("debug.tabVerify"),
|
|
43649
43952
|
badge: verification.summary.totalChecks || void 0,
|
|
43650
43953
|
content: /* @__PURE__ */ jsxRuntime.jsx(VerificationTab, { checks: verification.checks, summary: verification.summary })
|
|
43651
43954
|
},
|
|
43652
43955
|
{
|
|
43653
43956
|
id: "timeline",
|
|
43654
|
-
label: "
|
|
43957
|
+
label: t("debug.tabTimeline"),
|
|
43655
43958
|
badge: verification.transitions.length || void 0,
|
|
43656
43959
|
content: /* @__PURE__ */ jsxRuntime.jsx(TransitionTimeline, { transitions: verification.transitions })
|
|
43657
43960
|
},
|
|
43658
43961
|
{
|
|
43659
43962
|
id: "bridge",
|
|
43660
|
-
label: "
|
|
43963
|
+
label: t("debug.tabBridge"),
|
|
43661
43964
|
badge: verification.bridge?.connected ? void 0 : 1,
|
|
43662
43965
|
content: /* @__PURE__ */ jsxRuntime.jsx(ServerBridgeTab, { bridge: verification.bridge })
|
|
43663
43966
|
},
|
|
43664
43967
|
{
|
|
43665
43968
|
id: "traits",
|
|
43666
|
-
label: "
|
|
43969
|
+
label: t("debug.tabTraits"),
|
|
43667
43970
|
badge: debugData.traits.length || void 0,
|
|
43668
43971
|
content: /* @__PURE__ */ jsxRuntime.jsx(TraitsTab, { traits: debugData.traits })
|
|
43669
43972
|
},
|
|
43670
43973
|
{
|
|
43671
43974
|
id: "ticks",
|
|
43672
|
-
label: "
|
|
43673
|
-
badge: debugData.ticks.filter((
|
|
43975
|
+
label: t("debug.tabTicks"),
|
|
43976
|
+
badge: debugData.ticks.filter((tick) => tick.active).length || void 0,
|
|
43674
43977
|
content: /* @__PURE__ */ jsxRuntime.jsx(TicksTab, { ticks: debugData.ticks })
|
|
43675
43978
|
},
|
|
43676
43979
|
{
|
|
43677
43980
|
id: "entities",
|
|
43678
|
-
label: "
|
|
43981
|
+
label: t("debug.tabEntities"),
|
|
43679
43982
|
badge: debugData.entitySnapshot?.runtime.length || void 0,
|
|
43680
43983
|
content: /* @__PURE__ */ jsxRuntime.jsx(EntitiesTab, { snapshot: debugData.entitySnapshot })
|
|
43681
43984
|
},
|
|
43682
43985
|
{
|
|
43683
43986
|
id: "events",
|
|
43684
|
-
label: "
|
|
43987
|
+
label: t("debug.tabEvents"),
|
|
43685
43988
|
badge: debugData.events.length > 0 ? debugData.events.length : void 0,
|
|
43686
43989
|
content: /* @__PURE__ */ jsxRuntime.jsx(EventFlowTab, { events: debugData.events })
|
|
43687
43990
|
},
|
|
43688
43991
|
{
|
|
43689
43992
|
id: "guards",
|
|
43690
|
-
label: "
|
|
43993
|
+
label: t("debug.tabGuards"),
|
|
43691
43994
|
badge: debugData.guards.filter((g) => !g.result).length || void 0,
|
|
43692
43995
|
content: /* @__PURE__ */ jsxRuntime.jsx(GuardsPanel, { guards: debugData.guards })
|
|
43693
43996
|
}
|
|
@@ -43715,15 +44018,10 @@ function RuntimeDebugger({
|
|
|
43715
44018
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
43716
44019
|
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "h6", style: { fontSize: "0.75rem" }, children: [
|
|
43717
44020
|
isCollapsed ? "\u25B6" : "\u25BC",
|
|
43718
|
-
"
|
|
44021
|
+
" ",
|
|
44022
|
+
t("debug.debugger")
|
|
43719
44023
|
] }),
|
|
43720
|
-
failedChecks > 0 ? /* @__PURE__ */ jsxRuntime.
|
|
43721
|
-
failedChecks,
|
|
43722
|
-
" failed"
|
|
43723
|
-
] }) : debugData.traits.length > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(Badge, { variant: "success", size: "sm", children: [
|
|
43724
|
-
debugData.traits.length,
|
|
43725
|
-
" traits"
|
|
43726
|
-
] }) : /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "info", size: "sm", children: "Idle" })
|
|
44024
|
+
failedChecks > 0 ? /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "danger", size: "sm", children: t("debug.failedCount", { count: failedChecks }) }) : debugData.traits.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "success", size: "sm", children: t("debug.traitsCount", { count: debugData.traits.length }) }) : /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "info", size: "sm", children: t("debug.idle") })
|
|
43727
44025
|
] })
|
|
43728
44026
|
}
|
|
43729
44027
|
),
|
|
@@ -43741,9 +44039,9 @@ function RuntimeDebugger({
|
|
|
43741
44039
|
);
|
|
43742
44040
|
}
|
|
43743
44041
|
if (mode === "verify") {
|
|
43744
|
-
const traitStates = debugData.traits.map((
|
|
43745
|
-
const serverEntries = verification.transitions.filter((
|
|
43746
|
-
const localEntries = verification.transitions.filter((
|
|
44042
|
+
const traitStates = debugData.traits.map((t2) => `${t2.name}:${t2.currentState}`).join(" | ");
|
|
44043
|
+
const serverEntries = verification.transitions.filter((t2) => t2.serverResponse);
|
|
44044
|
+
const localEntries = verification.transitions.filter((t2) => !t2.serverResponse);
|
|
43747
44045
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
43748
44046
|
VerifyModePanel,
|
|
43749
44047
|
{
|
|
@@ -43775,7 +44073,7 @@ function RuntimeDebugger({
|
|
|
43775
44073
|
variant: "secondary",
|
|
43776
44074
|
size: "sm",
|
|
43777
44075
|
className: "runtime-debugger__toggle",
|
|
43778
|
-
title: "
|
|
44076
|
+
title: t("debug.openDebugger"),
|
|
43779
44077
|
children: failedChecks > 0 ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "relative", children: [
|
|
43780
44078
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "V" }),
|
|
43781
44079
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute -top-1 -right-2 w-2 h-2 bg-red-500 rounded-full" })
|
|
@@ -43785,11 +44083,8 @@ function RuntimeDebugger({
|
|
|
43785
44083
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "runtime-debugger__header", children: [
|
|
43786
44084
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
43787
44085
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-lg", children: "V" }),
|
|
43788
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h6", children: "
|
|
43789
|
-
failedChecks > 0 ? /* @__PURE__ */ jsxRuntime.
|
|
43790
|
-
failedChecks,
|
|
43791
|
-
" failed"
|
|
43792
|
-
] }) : verification.summary.totalChecks > 0 ? /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "success", size: "sm", children: "All passing" }) : /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "info", size: "sm", children: "Runtime" })
|
|
44086
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h6", children: t("debug.kflowVerifier") }),
|
|
44087
|
+
failedChecks > 0 ? /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "danger", size: "sm", children: t("debug.failedCount", { count: failedChecks }) }) : verification.summary.totalChecks > 0 ? /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "success", size: "sm", children: t("debug.allPassing") }) : /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "info", size: "sm", children: t("debug.runtime") })
|
|
43793
44088
|
] }),
|
|
43794
44089
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
43795
44090
|
Button,
|
|
@@ -43797,7 +44092,7 @@ function RuntimeDebugger({
|
|
|
43797
44092
|
onClick: () => setIsCollapsed(true),
|
|
43798
44093
|
variant: "ghost",
|
|
43799
44094
|
size: "sm",
|
|
43800
|
-
title: "
|
|
44095
|
+
title: t("debug.close"),
|
|
43801
44096
|
children: "x"
|
|
43802
44097
|
}
|
|
43803
44098
|
)
|
|
@@ -43811,7 +44106,7 @@ function RuntimeDebugger({
|
|
|
43811
44106
|
className: "runtime-debugger__tabs"
|
|
43812
44107
|
}
|
|
43813
44108
|
) }),
|
|
43814
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "runtime-debugger__footer", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-foreground/50", children: "
|
|
44109
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "runtime-debugger__footer", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-foreground/50", children: t("debug.toggleHint") }) })
|
|
43815
44110
|
] })
|
|
43816
44111
|
}
|
|
43817
44112
|
);
|
|
@@ -43837,6 +44132,7 @@ var init_RuntimeDebugger2 = __esm({
|
|
|
43837
44132
|
init_TransitionTimeline();
|
|
43838
44133
|
init_ServerBridgeTab();
|
|
43839
44134
|
init_EventDispatcherTab();
|
|
44135
|
+
init_useTranslate();
|
|
43840
44136
|
init_RuntimeDebugger();
|
|
43841
44137
|
RuntimeDebugger.displayName = "RuntimeDebugger";
|
|
43842
44138
|
}
|
|
@@ -45125,7 +45421,7 @@ var init_StatCard = __esm({
|
|
|
45125
45421
|
}
|
|
45126
45422
|
);
|
|
45127
45423
|
}
|
|
45128
|
-
const label = schemaStats?.[0]?.label || labelToUse || "
|
|
45424
|
+
const label = schemaStats?.[0]?.label || labelToUse || t("statCard.defaultLabel");
|
|
45129
45425
|
const normalizedPropValue = Array.isArray(propValue) ? propValue[0] ?? propValue.length : propValue;
|
|
45130
45426
|
const value = schemaStats?.[0]?.value ?? normalizedPropValue ?? 0;
|
|
45131
45427
|
const trendDirection = manualDirection || (calculatedTrend === void 0 || calculatedTrend === 0 ? "neutral" : calculatedTrend > 0 ? "up" : "down");
|
|
@@ -45168,7 +45464,7 @@ var init_StatCard = __esm({
|
|
|
45168
45464
|
]
|
|
45169
45465
|
}
|
|
45170
45466
|
),
|
|
45171
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", color: "secondary", as: "span", children: "
|
|
45467
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", color: "secondary", as: "span", children: t("statCard.vsLastPeriod") })
|
|
45172
45468
|
] }),
|
|
45173
45469
|
subtitle && !calculatedTrend && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", color: "secondary", children: subtitle })
|
|
45174
45470
|
] }),
|