@almadar/ui 5.21.8 → 5.21.10
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 +964 -651
- package/dist/avl/index.js +964 -651
- package/dist/components/game/organisms/three/index.cjs +490 -1
- package/dist/components/game/organisms/three/index.js +490 -1
- package/dist/components/index.cjs +669 -371
- package/dist/components/index.js +669 -371
- package/dist/docs/index.cjs +301 -5
- package/dist/docs/index.js +301 -5
- package/dist/hooks/index.cjs +297 -3
- package/dist/hooks/index.js +297 -3
- package/dist/locales/index.cjs +899 -9
- package/dist/locales/index.js +899 -9
- package/dist/providers/index.cjs +669 -371
- package/dist/providers/index.js +669 -371
- package/dist/runtime/index.cjs +669 -371
- package/dist/runtime/index.js +669 -371
- package/locales/ar.json +301 -31
- package/locales/en.json +297 -31
- package/locales/sl.json +301 -31
- package/package.json +1 -1
package/dist/components/index.js
CHANGED
|
@@ -2036,7 +2036,10 @@ var en_default;
|
|
|
2036
2036
|
var init_en = __esm({
|
|
2037
2037
|
"locales/en.json"() {
|
|
2038
2038
|
en_default = {
|
|
2039
|
-
$meta: {
|
|
2039
|
+
$meta: {
|
|
2040
|
+
locale: "en",
|
|
2041
|
+
direction: "ltr"
|
|
2042
|
+
},
|
|
2040
2043
|
"common.save": "Save",
|
|
2041
2044
|
"common.cancel": "Cancel",
|
|
2042
2045
|
"common.delete": "Delete",
|
|
@@ -2178,7 +2181,6 @@ var init_en = __esm({
|
|
|
2178
2181
|
"error.somethingWentWrong": "Something went wrong",
|
|
2179
2182
|
"error.loadingItems": "Loading items...",
|
|
2180
2183
|
"error.noItemsFound": "No items found",
|
|
2181
|
-
"error.notFound": "Not found",
|
|
2182
2184
|
"debug.noEntityData": "No entity data",
|
|
2183
2185
|
"debug.noEntities": "No entities",
|
|
2184
2186
|
"debug.noTicks": "No ticks registered",
|
|
@@ -2210,7 +2212,299 @@ var init_en = __esm({
|
|
|
2210
2212
|
"template.showcase": "Showcase",
|
|
2211
2213
|
"template.faq": "Frequently Asked Questions",
|
|
2212
2214
|
"template.ourTeam": "Our Team",
|
|
2213
|
-
"template.caseStudies": "Case Studies"
|
|
2215
|
+
"template.caseStudies": "Case Studies",
|
|
2216
|
+
"richBlockEditor.toolbar.text": "Text",
|
|
2217
|
+
"richBlockEditor.toolbar.h1": "H1",
|
|
2218
|
+
"richBlockEditor.toolbar.h2": "H2",
|
|
2219
|
+
"richBlockEditor.toolbar.h3": "H3",
|
|
2220
|
+
"richBlockEditor.toolbar.bulletList": "Bullet list",
|
|
2221
|
+
"richBlockEditor.toolbar.numbered": "Numbered",
|
|
2222
|
+
"richBlockEditor.toolbar.quote": "Quote",
|
|
2223
|
+
"richBlockEditor.toolbar.code": "Code",
|
|
2224
|
+
"richBlockEditor.toolbar.divider": "Divider",
|
|
2225
|
+
"richBlockEditor.toolbar.image": "Image",
|
|
2226
|
+
"richBlockEditor.blockType.paragraph": "Text",
|
|
2227
|
+
"richBlockEditor.blockType.heading1": "Heading 1",
|
|
2228
|
+
"richBlockEditor.blockType.heading2": "Heading 2",
|
|
2229
|
+
"richBlockEditor.blockType.heading3": "Heading 3",
|
|
2230
|
+
"richBlockEditor.blockType.bulletList": "Bullet list",
|
|
2231
|
+
"richBlockEditor.blockType.numberedList": "Numbered list",
|
|
2232
|
+
"richBlockEditor.blockType.quote": "Quote",
|
|
2233
|
+
"richBlockEditor.blockType.code": "Code",
|
|
2234
|
+
"richBlockEditor.blockType.divider": "Divider",
|
|
2235
|
+
"richBlockEditor.blockType.image": "Image",
|
|
2236
|
+
"richBlockEditor.blockActions": "Block actions",
|
|
2237
|
+
"richBlockEditor.duplicate": "Duplicate",
|
|
2238
|
+
"richBlockEditor.turnInto": "Turn into",
|
|
2239
|
+
"richBlockEditor.placeholder.heading1": "Heading 1",
|
|
2240
|
+
"richBlockEditor.placeholder.heading2": "Heading 2",
|
|
2241
|
+
"richBlockEditor.placeholder.heading3": "Heading 3",
|
|
2242
|
+
"richBlockEditor.placeholder.quote": "Quote",
|
|
2243
|
+
"richBlockEditor.placeholder.code": "Enter code",
|
|
2244
|
+
"richBlockEditor.placeholder.paragraph": "Start writing...",
|
|
2245
|
+
"richBlockEditor.placeholder.listItem": "List item",
|
|
2246
|
+
"richBlockEditor.placeholder.caption": "Caption (optional)",
|
|
2247
|
+
"richBlockEditor.aria.heading1Block": "Heading 1 block",
|
|
2248
|
+
"richBlockEditor.aria.heading2Block": "Heading 2 block",
|
|
2249
|
+
"richBlockEditor.aria.heading3Block": "Heading 3 block",
|
|
2250
|
+
"richBlockEditor.aria.quoteBlock": "Quote block",
|
|
2251
|
+
"richBlockEditor.aria.codeBlock": "Code block",
|
|
2252
|
+
"richBlockEditor.aria.codeLanguage": "Code language",
|
|
2253
|
+
"richBlockEditor.aria.imageUrl": "Image URL",
|
|
2254
|
+
"richBlockEditor.aria.imageCaption": "Image caption",
|
|
2255
|
+
"richBlockEditor.aria.listItem": "List item",
|
|
2256
|
+
"richBlockEditor.aria.removeListItem": "Remove list item",
|
|
2257
|
+
"richBlockEditor.aria.paragraphBlock": "Paragraph block",
|
|
2258
|
+
"richBlockEditor.embeddedImage": "Embedded image",
|
|
2259
|
+
"richBlockEditor.noImageUrl": "No image URL set",
|
|
2260
|
+
"richBlockEditor.addItem": "Add item",
|
|
2261
|
+
"richBlockEditor.insertParagraphBelow": "Insert paragraph below",
|
|
2262
|
+
"richBlockEditor.editorToolbar": "Block editor toolbar",
|
|
2263
|
+
"richBlockEditor.insertEntry": "Insert {{label}}",
|
|
2264
|
+
"versionDiff.compare": "Compare",
|
|
2265
|
+
"versionDiff.to": "to",
|
|
2266
|
+
"versionDiff.beforeRevision": "Before revision",
|
|
2267
|
+
"versionDiff.afterRevision": "After revision",
|
|
2268
|
+
"versionDiff.switchToInline": "Switch to inline view",
|
|
2269
|
+
"versionDiff.switchToSideBySide": "Switch to side-by-side view",
|
|
2270
|
+
"versionDiff.revert": "Revert",
|
|
2271
|
+
"versionDiff.byAuthor": " by {{author}}",
|
|
2272
|
+
"violationAlert.actionType.measure": "Corrective Measure",
|
|
2273
|
+
"violationAlert.actionType.admin": "Administrative Action",
|
|
2274
|
+
"violationAlert.actionType.penalty": "Penalty Proceedings",
|
|
2275
|
+
"violationAlert.fallbackMessage": "Violation",
|
|
2276
|
+
"violationAlert.adminLabel": "Admin:",
|
|
2277
|
+
"violationAlert.penaltyLabel": "Penalty:",
|
|
2278
|
+
"violationAlert.goToField": "Go to field",
|
|
2279
|
+
"branchingLogic.title": "Branching logic",
|
|
2280
|
+
"branchingLogic.if": "If",
|
|
2281
|
+
"branchingLogic.goTo": "go to",
|
|
2282
|
+
"branchingLogic.rules": "Rules",
|
|
2283
|
+
"branchingLogic.logicGraph": "Logic graph",
|
|
2284
|
+
"branchingLogic.addRule": "Add rule",
|
|
2285
|
+
"branchingLogic.deleteRule": "Delete rule",
|
|
2286
|
+
"branchingLogic.endOfSurvey": "End of survey",
|
|
2287
|
+
"branchingLogic.brokenReference": "Broken reference",
|
|
2288
|
+
"branchingLogic.selectQuestion": "Select question",
|
|
2289
|
+
"branchingLogic.selectTarget": "Select target",
|
|
2290
|
+
"branchingLogic.selectValue": "Select value",
|
|
2291
|
+
"branchingLogic.addValue": "Add value",
|
|
2292
|
+
"branchingLogic.value": "Value",
|
|
2293
|
+
"branchingLogic.typeValuePressEnter": "Type value, press Enter",
|
|
2294
|
+
"branchingLogic.operatorEquals": "equals",
|
|
2295
|
+
"branchingLogic.operatorNotEquals": "does not equal",
|
|
2296
|
+
"branchingLogic.operatorContains": "contains",
|
|
2297
|
+
"branchingLogic.operatorIn": "is one of",
|
|
2298
|
+
"branchingLogic.graphAriaLabel": "Branching logic graph",
|
|
2299
|
+
"branchingLogic.ruleCountOne": "{{count}} rule",
|
|
2300
|
+
"branchingLogic.ruleCountOther": "{{count}} rules",
|
|
2301
|
+
"branchingLogic.brokenCount": "{{count}} broken",
|
|
2302
|
+
"branchingLogic.emptyNoQuestions": "Add questions before building branching rules.",
|
|
2303
|
+
"branchingLogic.emptyNoRules": "No rules yet. Add a rule to define branching logic.",
|
|
2304
|
+
"filterGroup.filters": "Filters",
|
|
2305
|
+
"filterGroup.all": "All",
|
|
2306
|
+
"filterGroup.clear": "Clear",
|
|
2307
|
+
"filterGroup.clearAll": "Clear all",
|
|
2308
|
+
"filterGroup.from": "From",
|
|
2309
|
+
"filterGroup.to": "To",
|
|
2310
|
+
"filterGroup.allOf": "All {{label}}",
|
|
2311
|
+
"filterGroup.activeCount": "{{count}} active",
|
|
2312
|
+
"debug.guardEvaluationsHint": "Guard evaluations will appear when transitions or ticks with guards execute",
|
|
2313
|
+
"debug.expression": "Expression",
|
|
2314
|
+
"debug.inputs": "Inputs",
|
|
2315
|
+
"debug.trait": "Trait",
|
|
2316
|
+
"debug.filterAll": "All",
|
|
2317
|
+
"debug.filterPassed": "Passed",
|
|
2318
|
+
"debug.filterFailed": "Failed",
|
|
2319
|
+
"debug.traitsInitHint": "Traits will appear when the state machine initializes",
|
|
2320
|
+
"debug.traitsMountHint": "Traits will appear when components using them are mounted",
|
|
2321
|
+
"debug.activeStates": "Active States",
|
|
2322
|
+
"debug.availableEvents": "Available Events",
|
|
2323
|
+
"debug.noTransitionsFromState": "No transitions from current state",
|
|
2324
|
+
"debug.guarded": "guarded",
|
|
2325
|
+
"debug.otherEvents": "Other Events (not available from current state)",
|
|
2326
|
+
"debug.recentTransitions": "Recent Transitions",
|
|
2327
|
+
"debug.transitionsCount": "{{count}} transitions",
|
|
2328
|
+
"debug.states": "States",
|
|
2329
|
+
"debug.transitions": "Transitions",
|
|
2330
|
+
"debug.guards": "Guards",
|
|
2331
|
+
"debug.debugModeHint": "Debug mode may not be enabled",
|
|
2332
|
+
"debug.entitiesSpawnHint": "Entities will appear when spawned",
|
|
2333
|
+
"debug.singleton": "Singleton",
|
|
2334
|
+
"debug.singletonsCount": "Singletons ({{count}})",
|
|
2335
|
+
"debug.runtimeCount": "Runtime ({{count}})",
|
|
2336
|
+
"debug.moreEntities": "+{{count}} more entities",
|
|
2337
|
+
"debug.persistent": "Persistent",
|
|
2338
|
+
"debug.loadedCount": "{{count}} loaded",
|
|
2339
|
+
"debug.notLoaded": "not loaded",
|
|
2340
|
+
"debug.eventsExecuteHint": "Events will appear as traits, ticks, and other systems execute",
|
|
2341
|
+
"debug.allCount": "All ({{count}})",
|
|
2342
|
+
"debug.autoScroll": "Auto-scroll",
|
|
2343
|
+
"debug.transitionsProcessHint": "Transitions will appear as the state machine processes events",
|
|
2344
|
+
"debug.transitionsRecorded": "{{count}} transitions recorded",
|
|
2345
|
+
"debug.guardLabel": "guard:",
|
|
2346
|
+
"debug.effectsCount": "{{count}} effects",
|
|
2347
|
+
"debug.bridgeInitHint": "The ServerBridge has not been initialized. Bridge health will appear once the runtime connects to the server.",
|
|
2348
|
+
"debug.never": "Never",
|
|
2349
|
+
"debug.connected": "Connected",
|
|
2350
|
+
"debug.disconnected": "Disconnected",
|
|
2351
|
+
"debug.lastError": "Last Error",
|
|
2352
|
+
"debug.totalEventsProcessed": "{{count}} total events processed",
|
|
2353
|
+
"debug.server": "server",
|
|
2354
|
+
"debug.clientEffectsCount": "{{count}} clientEffects",
|
|
2355
|
+
"debug.emitLabel": "emit:",
|
|
2356
|
+
"debug.rowsCount": "{{count}} rows",
|
|
2357
|
+
"debug.serverResponse": "server response",
|
|
2358
|
+
"debug.collapseVerificationTimeline": "Collapse verification timeline",
|
|
2359
|
+
"debug.expandVerificationTimeline": "Expand verification timeline",
|
|
2360
|
+
"debug.failCount": "{{count}} fail",
|
|
2361
|
+
"debug.ok": "OK",
|
|
2362
|
+
"debug.localCount": "{{count}} local",
|
|
2363
|
+
"debug.serverCount": "{{count}} server",
|
|
2364
|
+
"debug.waitingForTransitions": "Waiting for transitions...",
|
|
2365
|
+
"debug.tabDispatch": "Dispatch",
|
|
2366
|
+
"debug.tabVerify": "Verify",
|
|
2367
|
+
"debug.tabVerifyAlert": "Verify (!)",
|
|
2368
|
+
"debug.tabTimeline": "Timeline",
|
|
2369
|
+
"debug.tabBridge": "Bridge",
|
|
2370
|
+
"debug.tabTraits": "Traits",
|
|
2371
|
+
"debug.tabTicks": "Ticks",
|
|
2372
|
+
"debug.tabEntities": "Entities",
|
|
2373
|
+
"debug.tabEvents": "Events",
|
|
2374
|
+
"debug.tabGuards": "Guards",
|
|
2375
|
+
"debug.debugger": "Debugger",
|
|
2376
|
+
"debug.failedCount": "{{count}} failed",
|
|
2377
|
+
"debug.traitsCount": "{{count}} traits",
|
|
2378
|
+
"debug.idle": "Idle",
|
|
2379
|
+
"debug.openDebugger": "Open Debugger (`)",
|
|
2380
|
+
"debug.kflowVerifier": "KFlow Verifier",
|
|
2381
|
+
"debug.allPassing": "All passing",
|
|
2382
|
+
"debug.runtime": "Runtime",
|
|
2383
|
+
"debug.close": "Close (`)",
|
|
2384
|
+
"debug.toggleHint": "Press ` to toggle | window.__orbitalVerification for automation",
|
|
2385
|
+
"replyTree.expandReplies": "Expand replies",
|
|
2386
|
+
"replyTree.collapseReplies": "Collapse replies",
|
|
2387
|
+
"replyTree.voteOnReplyBy": "Vote on reply by {{author}}",
|
|
2388
|
+
"replyTree.replyTo": "Reply to {{author}}",
|
|
2389
|
+
"replyTree.replyToPlaceholder": "Reply to {{author}}\u2026",
|
|
2390
|
+
"replyTree.reply": "Reply",
|
|
2391
|
+
"replyTree.flagReplyBy": "Flag reply by {{author}}",
|
|
2392
|
+
"replyTree.flag": "Flag",
|
|
2393
|
+
"replyTree.send": "Send",
|
|
2394
|
+
"replyTree.continueThread": "Continue thread",
|
|
2395
|
+
"replyTree.noRepliesYet": "No replies yet.",
|
|
2396
|
+
"signaturePad.label": "Signature",
|
|
2397
|
+
"signaturePad.helperText": "Draw your signature above",
|
|
2398
|
+
"signaturePad.clear": "Clear",
|
|
2399
|
+
"signaturePad.confirm": "Confirm",
|
|
2400
|
+
"qrScanner.cameraUnavailable": "Camera unavailable",
|
|
2401
|
+
"qrScanner.paused": "Paused",
|
|
2402
|
+
"qrScanner.resumeScanning": "Resume scanning",
|
|
2403
|
+
"qrScanner.pauseScanning": "Pause scanning",
|
|
2404
|
+
"qrScanner.switchToFrontCamera": "Switch to front camera",
|
|
2405
|
+
"qrScanner.switchToRearCamera": "Switch to rear camera",
|
|
2406
|
+
"qrScanner.mockScan": "Mock Scan",
|
|
2407
|
+
"docSearch.placeholder": "Search documentation...",
|
|
2408
|
+
"stateMachine.loading": "Loading state machine\u2026",
|
|
2409
|
+
"stateMachine.noStateMachine": "No state machine to visualize",
|
|
2410
|
+
"avl.trigger": "Trigger",
|
|
2411
|
+
"avl.guard": "Guard",
|
|
2412
|
+
"avl.effects": "Effects",
|
|
2413
|
+
"avl.props": "Props",
|
|
2414
|
+
"avl.entity": "Entity",
|
|
2415
|
+
"avl.traits": "Traits",
|
|
2416
|
+
"avl.transition": "Transition",
|
|
2417
|
+
"avl.onEntity": "on {{entity}}",
|
|
2418
|
+
"avl.linkedTo": "linked to {{entity}}",
|
|
2419
|
+
"avl.pressEscToZoomOut": "Press Esc to zoom out",
|
|
2420
|
+
"avl.zoomIn": "Zoom in",
|
|
2421
|
+
"avl.zoomOut": "Zoom out",
|
|
2422
|
+
"avl.orbitalLabel": "Orbital: {{name}}",
|
|
2423
|
+
"avl.orbitalLabelHighlighted": "Orbital: {{name}} (highlighted)",
|
|
2424
|
+
"avl.noTraitData": "No trait data",
|
|
2425
|
+
"avl.computingLayout": "Computing layout...",
|
|
2426
|
+
"avl.noStateMachine": "No state machine",
|
|
2427
|
+
"avl.listensFor": "listens for {{event}}",
|
|
2428
|
+
"avl.emits": "emits {{event}}",
|
|
2429
|
+
"avl.pageLayout": "Page Layout",
|
|
2430
|
+
"avl.overlaySuffix": "(overlay)",
|
|
2431
|
+
"orbPreview.previewBadge": "Preview",
|
|
2432
|
+
"orbPreview.doubleClickToOpen": "Double-click to open",
|
|
2433
|
+
"orbPreview.dropToAddAndOpen": "Drop to add and open",
|
|
2434
|
+
"orbPreview.dispatching": "Coordinator is dispatching to this orbital",
|
|
2435
|
+
"orbPreview.noPreview": "No preview available",
|
|
2436
|
+
"orbPreview.screensCount": "{{count}} screens",
|
|
2437
|
+
"detailView.noTransitionData": "No transition data",
|
|
2438
|
+
"orbInspector.required": "req",
|
|
2439
|
+
"orbInspector.addField": "Add Field",
|
|
2440
|
+
"orbInspector.serviceMode": "Service Mode",
|
|
2441
|
+
"orbInspector.standalone": "Standalone",
|
|
2442
|
+
"orbInspector.embedded": "Embedded",
|
|
2443
|
+
"orbInspector.rendersOwnUi": "Renders its own UI",
|
|
2444
|
+
"orbInspector.headless": "Headless, wired to other behaviors",
|
|
2445
|
+
"orbInspector.addEffect": "Add Effect",
|
|
2446
|
+
"orbInspector.guardExpression": "Guard expression",
|
|
2447
|
+
"orbInspector.selectPatternForStyles": "Select a pattern to view its style tokens.",
|
|
2448
|
+
"orbInspector.tokens": "Tokens",
|
|
2449
|
+
"orbInspector.noTokenContract": "No token contract declared for this pattern.",
|
|
2450
|
+
"orbInspector.variant": "Variant",
|
|
2451
|
+
"orbInspector.size": "Size",
|
|
2452
|
+
"orbInspector.statesCount": "{{count}} states",
|
|
2453
|
+
"orbInspector.onEntity": " on {{entity}}",
|
|
2454
|
+
"orbInspector.projectThemeTokens": "Project theme tokens",
|
|
2455
|
+
"orbInspector.tokenGroup.colors": "Colors",
|
|
2456
|
+
"orbInspector.tokenGroup.radii": "Radii",
|
|
2457
|
+
"orbInspector.tokenGroup.spacing": "Spacing",
|
|
2458
|
+
"orbInspector.tokenGroup.shadows": "Shadows",
|
|
2459
|
+
"orbInspector.tab.inspector": "Inspector",
|
|
2460
|
+
"orbInspector.tab.styles": "Styles",
|
|
2461
|
+
"orbInspector.tab.code": "Code",
|
|
2462
|
+
"canvas.goBackToOverview": "Go back to overview",
|
|
2463
|
+
"canvas.overview": "Overview",
|
|
2464
|
+
"canvas.expanded": "Expanded",
|
|
2465
|
+
"canvas.modulesCount": "{{count}} modules",
|
|
2466
|
+
"canvas.screensCount": "{{count}} screens",
|
|
2467
|
+
"canvas.switchToView": "Switch to {{label}} view",
|
|
2468
|
+
"lawReference.viewFullText": "View full law text",
|
|
2469
|
+
"statCard.defaultLabel": "Stat",
|
|
2470
|
+
"statCard.vsLastPeriod": "vs last period",
|
|
2471
|
+
"mediaGallery.upload": "Upload",
|
|
2472
|
+
"mediaGallery.noMediaDescription": "No media items to display.",
|
|
2473
|
+
"pagination.jumpPlaceholder": "Page",
|
|
2474
|
+
"table.selectRow": "Select row {{id}}",
|
|
2475
|
+
"card.selectItem": "Select {{item}}",
|
|
2476
|
+
"card.itemFallback": "item",
|
|
2477
|
+
"fileTree.noFiles": "No files",
|
|
2478
|
+
"masterDetail.selectItem": "Select an item to view details",
|
|
2479
|
+
"empty.createFirst": "Create your first item to get started.",
|
|
2480
|
+
"upload.dropOrBrowse": "Drop files here or click to browse",
|
|
2481
|
+
"upload.dropFilesHere": "Drop files here",
|
|
2482
|
+
"upload.accepted": "Accepted: {{accept}}",
|
|
2483
|
+
"upload.maxSize": "Max size: {{size}}",
|
|
2484
|
+
"upload.maxFiles": "Up to {{count}} files",
|
|
2485
|
+
"upload.error.maxFiles": "Maximum {{count}} files allowed",
|
|
2486
|
+
"upload.error.invalidType": "Invalid file type: {{name}}",
|
|
2487
|
+
"upload.error.tooLarge": "File too large: {{name}} (max {{size}})",
|
|
2488
|
+
"optionConstraint.requiredOne": "Required, pick 1",
|
|
2489
|
+
"optionConstraint.optionalOne": "Optional, pick up to 1",
|
|
2490
|
+
"optionConstraint.pickExactly": "Pick exactly {{count}}",
|
|
2491
|
+
"optionConstraint.pickRange": "Pick {{min}}-{{max}}",
|
|
2492
|
+
"optionConstraint.pickAtLeast": "Pick at least {{count}}",
|
|
2493
|
+
"optionConstraint.pickUpTo": "Pick up to {{count}}",
|
|
2494
|
+
"optionConstraint.optional": "Optional",
|
|
2495
|
+
"optionConstraint.outOfStock": "Out of stock",
|
|
2496
|
+
"optionConstraint.error.pickOne": "Pick 1 option",
|
|
2497
|
+
"optionConstraint.error.pickOnlyOne": "Pick only 1 option",
|
|
2498
|
+
"optionConstraint.error.pickMore": "Pick at least {{count}} more",
|
|
2499
|
+
"optionConstraint.error.removeOptions": "Remove {{count}} options",
|
|
2500
|
+
"stateMachine.pinned": "Pinned",
|
|
2501
|
+
"stateMachine.eventCount": "{{count}} events",
|
|
2502
|
+
"stateMachine.externalEffects": "External Effects",
|
|
2503
|
+
"stateMachine.legend.initial": "Initial",
|
|
2504
|
+
"stateMachine.legend.final": "Final",
|
|
2505
|
+
"stateMachine.legend.state": "State",
|
|
2506
|
+
"stateMachine.legend.multiEvent": "Multi-event",
|
|
2507
|
+
"relationSelect.selectPlaceholder": "Select..."
|
|
2214
2508
|
};
|
|
2215
2509
|
}
|
|
2216
2510
|
});
|
|
@@ -4672,6 +4966,7 @@ var init_LawReferenceTooltip = __esm({
|
|
|
4672
4966
|
init_Typography();
|
|
4673
4967
|
init_Divider();
|
|
4674
4968
|
init_cn();
|
|
4969
|
+
init_useTranslate();
|
|
4675
4970
|
positionStyles2 = {
|
|
4676
4971
|
top: "bottom-full left-1/2 -translate-x-1/2 mb-2",
|
|
4677
4972
|
bottom: "top-full left-1/2 -translate-x-1/2 mt-2",
|
|
@@ -4690,6 +4985,7 @@ var init_LawReferenceTooltip = __esm({
|
|
|
4690
4985
|
position = "top",
|
|
4691
4986
|
className
|
|
4692
4987
|
}) => {
|
|
4988
|
+
const { t } = useTranslate();
|
|
4693
4989
|
const [isVisible, setIsVisible] = React79__default.useState(false);
|
|
4694
4990
|
const timeoutRef = React79__default.useRef(null);
|
|
4695
4991
|
const handleMouseEnter = () => {
|
|
@@ -4773,7 +5069,7 @@ var init_LawReferenceTooltip = __esm({
|
|
|
4773
5069
|
target: "_blank",
|
|
4774
5070
|
rel: "noopener noreferrer",
|
|
4775
5071
|
onClick: (e) => e.stopPropagation(),
|
|
4776
|
-
children: "
|
|
5072
|
+
children: t("lawReference.viewFullText")
|
|
4777
5073
|
}
|
|
4778
5074
|
)
|
|
4779
5075
|
] }),
|
|
@@ -12083,6 +12379,7 @@ var log4, SWIM_GUTTER, CENTER_W, BehaviorView;
|
|
|
12083
12379
|
var init_BehaviorView = __esm({
|
|
12084
12380
|
"components/avl/molecules/BehaviorView.tsx"() {
|
|
12085
12381
|
"use client";
|
|
12382
|
+
init_useTranslate();
|
|
12086
12383
|
init_AvlState();
|
|
12087
12384
|
init_AvlTransitionLane();
|
|
12088
12385
|
init_AvlSwimLane();
|
|
@@ -12092,6 +12389,7 @@ var init_BehaviorView = __esm({
|
|
|
12092
12389
|
SWIM_GUTTER = 120;
|
|
12093
12390
|
CENTER_W = 360;
|
|
12094
12391
|
BehaviorView = ({ data }) => {
|
|
12392
|
+
const { t } = useTranslate();
|
|
12095
12393
|
const [layout, setLayout] = useState(null);
|
|
12096
12394
|
const traitName = data.traits[0]?.name;
|
|
12097
12395
|
const traitData = traitName ? data.traitDetails[traitName] : void 0;
|
|
@@ -12101,10 +12399,10 @@ var init_BehaviorView = __esm({
|
|
|
12101
12399
|
computeTraitLayout(traitData).then(setLayout).catch((err) => log4.error("compute-trait-layout-failed", { error: err instanceof Error ? err : String(err) }));
|
|
12102
12400
|
}, [dataKey]);
|
|
12103
12401
|
if (!traitData) {
|
|
12104
|
-
return /* @__PURE__ */ 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: "
|
|
12402
|
+
return /* @__PURE__ */ 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") });
|
|
12105
12403
|
}
|
|
12106
12404
|
if (!layout) {
|
|
12107
|
-
return /* @__PURE__ */ 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: "
|
|
12405
|
+
return /* @__PURE__ */ 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") });
|
|
12108
12406
|
}
|
|
12109
12407
|
const hasExternal = traitData.listenedEvents.length > 0 || traitData.emittedEvents.length > 0;
|
|
12110
12408
|
const viewW = hasExternal ? SWIM_GUTTER + CENTER_W + SWIM_GUTTER : CENTER_W + 60;
|
|
@@ -12120,10 +12418,7 @@ var init_BehaviorView = __esm({
|
|
|
12120
12418
|
const machineHeight = scaledH + 100;
|
|
12121
12419
|
const renderMachine = /* @__PURE__ */ jsxs("g", { children: [
|
|
12122
12420
|
/* @__PURE__ */ jsx("text", { x: CENTER_W / 2, y: 20, textAnchor: "middle", fill: "var(--color-foreground)", fontSize: 18, fontWeight: "700", fontFamily: "inherit", children: traitData.name }),
|
|
12123
|
-
/* @__PURE__ */
|
|
12124
|
-
"on ",
|
|
12125
|
-
traitData.linkedEntity
|
|
12126
|
-
] }),
|
|
12421
|
+
/* @__PURE__ */ 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 }) }),
|
|
12127
12422
|
/* @__PURE__ */ jsxs("defs", { children: [
|
|
12128
12423
|
/* @__PURE__ */ jsx("marker", { id: "bvArrow", viewBox: "0 0 10 10", refX: "9", refY: "5", markerWidth: "6", markerHeight: "6", orient: "auto-start-reverse", children: /* @__PURE__ */ jsx("path", { d: "M 0 0 L 10 5 L 0 10 z", fill: CONNECTION_COLORS.forward.color, opacity: 0.7 }) }),
|
|
12129
12424
|
/* @__PURE__ */ jsx("marker", { id: "bvArrowBack", viewBox: "0 0 10 10", refX: "9", refY: "5", markerWidth: "6", markerHeight: "6", orient: "auto-start-reverse", children: /* @__PURE__ */ jsx("path", { d: "M 0 0 L 10 5 L 0 10 z", fill: CONNECTION_COLORS.backward.color, opacity: 0.5 }) })
|
|
@@ -12431,7 +12726,7 @@ var init_CodeBlock = __esm({
|
|
|
12431
12726
|
const isLolo = language === "lolo";
|
|
12432
12727
|
const activeStyle = isOrb ? orbStyle : isLolo ? loloStyle : dark;
|
|
12433
12728
|
const eventBus = useEventBus();
|
|
12434
|
-
const { t
|
|
12729
|
+
const { t } = useTranslate();
|
|
12435
12730
|
const scrollRef = useRef(null);
|
|
12436
12731
|
const codeRef = useRef(null);
|
|
12437
12732
|
const savedScrollLeftRef = useRef(0);
|
|
@@ -12686,7 +12981,7 @@ var init_CodeBlock = __esm({
|
|
|
12686
12981
|
size: "sm",
|
|
12687
12982
|
onClick: handleCopy,
|
|
12688
12983
|
className: "opacity-0 group-hover:opacity-100 focus:opacity-100 transition-opacity text-muted-foreground hover:text-white",
|
|
12689
|
-
"aria-label": "
|
|
12984
|
+
"aria-label": t("common.copy"),
|
|
12690
12985
|
children: copied ? /* @__PURE__ */ jsx(Icon, { name: "check", className: "w-4 h-4 text-green-400" }) : /* @__PURE__ */ jsx(Icon, { name: "copy", className: "w-4 h-4" })
|
|
12691
12986
|
}
|
|
12692
12987
|
)
|
|
@@ -13341,7 +13636,7 @@ var init_StateMachineView = __esm({
|
|
|
13341
13636
|
const endX2 = fromState.x + Math.cos(Math.PI / 2 * loopDirection + endAngle) * fromState.radius;
|
|
13342
13637
|
const endY2 = fromState.y + Math.sin(Math.PI / 2 * loopDirection + endAngle) * fromState.radius;
|
|
13343
13638
|
const isSingle2 = bundle.labels.length === 1;
|
|
13344
|
-
const labelText2 = isSingle2 ? bundle.labels[0].event :
|
|
13639
|
+
const labelText2 = isSingle2 ? bundle.labels[0].event : t("stateMachine.eventCount", { count: bundle.labels.length });
|
|
13345
13640
|
const bundleColor2 = isSingle2 ? config.colors.arrow : "var(--color-accent)";
|
|
13346
13641
|
const labelWidth2 = labelText2.length * 9 + (isSingle2 ? 24 : 40);
|
|
13347
13642
|
const cx = fromState.x;
|
|
@@ -13467,7 +13762,7 @@ var init_StateMachineView = __esm({
|
|
|
13467
13762
|
const controlX = midX + perpX;
|
|
13468
13763
|
const controlY = midY + perpY;
|
|
13469
13764
|
const isSingle = bundle.labels.length === 1;
|
|
13470
|
-
const labelText = isSingle ? bundle.labels[0].event :
|
|
13765
|
+
const labelText = isSingle ? bundle.labels[0].event : t("stateMachine.eventCount", { count: bundle.labels.length });
|
|
13471
13766
|
const labelWidth = labelText.length * 9 + (isSingle ? 24 : 40);
|
|
13472
13767
|
const bundleColor = isSingle ? config.colors.arrow : "var(--color-accent)";
|
|
13473
13768
|
const curveMidpoint = {
|
|
@@ -13622,7 +13917,7 @@ var init_StateMachineView = __esm({
|
|
|
13622
13917
|
{
|
|
13623
13918
|
className: "absolute -top-2 left-1/2 transform -translate-x-1/2 px-2 py-0.5 rounded-full",
|
|
13624
13919
|
style: { backgroundColor: "var(--color-success)" },
|
|
13625
|
-
children: /* @__PURE__ */ jsx(Typography, { variant: "caption", weight: "semibold", style: { color: "var(--color-success-foreground)" }, children: "
|
|
13920
|
+
children: /* @__PURE__ */ jsx(Typography, { variant: "caption", weight: "semibold", style: { color: "var(--color-success-foreground)" }, children: t("stateMachine.pinned") })
|
|
13626
13921
|
}
|
|
13627
13922
|
),
|
|
13628
13923
|
!isSingle && /* @__PURE__ */ jsxs(
|
|
@@ -13644,10 +13939,7 @@ var init_StateMachineView = __esm({
|
|
|
13644
13939
|
{
|
|
13645
13940
|
className: "ml-2 px-2 py-0.5 rounded-full",
|
|
13646
13941
|
style: { backgroundColor: "var(--color-accent)" },
|
|
13647
|
-
children: /* @__PURE__ */
|
|
13648
|
-
bundle.labels.length,
|
|
13649
|
-
" events"
|
|
13650
|
-
] })
|
|
13942
|
+
children: /* @__PURE__ */ jsx(Typography, { variant: "caption", style: { color: "var(--color-accent-foreground)" }, children: t("stateMachine.eventCount", { count: bundle.labels.length }) })
|
|
13651
13943
|
}
|
|
13652
13944
|
)
|
|
13653
13945
|
]
|
|
@@ -13792,7 +14084,7 @@ var init_StateMachineView = __esm({
|
|
|
13792
14084
|
align: "center",
|
|
13793
14085
|
className: "mb-2",
|
|
13794
14086
|
style: { color: "var(--color-warning)", fontSize: "13px" },
|
|
13795
|
-
children: "
|
|
14087
|
+
children: t("stateMachine.externalEffects")
|
|
13796
14088
|
}
|
|
13797
14089
|
),
|
|
13798
14090
|
outputs.outputs.map((output, idx) => /* @__PURE__ */ jsx(
|
|
@@ -13812,10 +14104,10 @@ var init_StateMachineView = __esm({
|
|
|
13812
14104
|
Legend = ({ config, y }) => {
|
|
13813
14105
|
const { t } = useTranslate();
|
|
13814
14106
|
const items = [
|
|
13815
|
-
{ label: "
|
|
13816
|
-
{ label: "
|
|
13817
|
-
{ label: "
|
|
13818
|
-
{ label: "
|
|
14107
|
+
{ key: "initial", label: t("stateMachine.legend.initial"), color: config.colors.initialNode, isMultiEvent: false },
|
|
14108
|
+
{ key: "final", label: t("stateMachine.legend.final"), color: config.colors.finalNode, isMultiEvent: false },
|
|
14109
|
+
{ key: "state", label: t("stateMachine.legend.state"), color: config.colors.nodeBorder, isMultiEvent: false },
|
|
14110
|
+
{ key: "multiEvent", label: t("stateMachine.legend.multiEvent"), color: "var(--color-accent)", isMultiEvent: true }
|
|
13819
14111
|
];
|
|
13820
14112
|
return /* @__PURE__ */ jsx(
|
|
13821
14113
|
HStack,
|
|
@@ -13830,8 +14122,8 @@ var init_StateMachineView = __esm({
|
|
|
13830
14122
|
{
|
|
13831
14123
|
className: "w-3 h-3 rounded-full",
|
|
13832
14124
|
style: {
|
|
13833
|
-
backgroundColor: item.
|
|
13834
|
-
border: item.
|
|
14125
|
+
backgroundColor: item.isMultiEvent ? item.color : config.colors.node,
|
|
14126
|
+
border: !item.isMultiEvent ? `2px solid ${item.color}` : "none"
|
|
13835
14127
|
}
|
|
13836
14128
|
}
|
|
13837
14129
|
),
|
|
@@ -13843,7 +14135,7 @@ var init_StateMachineView = __esm({
|
|
|
13843
14135
|
children: item.label
|
|
13844
14136
|
}
|
|
13845
14137
|
)
|
|
13846
|
-
] }, item.
|
|
14138
|
+
] }, item.key))
|
|
13847
14139
|
}
|
|
13848
14140
|
);
|
|
13849
14141
|
};
|
|
@@ -14637,13 +14929,13 @@ var init_JazariStateMachine = __esm({
|
|
|
14637
14929
|
);
|
|
14638
14930
|
}, [resolvedTrait, entityFields]);
|
|
14639
14931
|
if (isLoading) {
|
|
14640
|
-
return /* @__PURE__ */ jsx(LoadingState, { message: "
|
|
14932
|
+
return /* @__PURE__ */ jsx(LoadingState, { message: t("stateMachine.loading") });
|
|
14641
14933
|
}
|
|
14642
14934
|
if (error) {
|
|
14643
14935
|
return /* @__PURE__ */ jsx(ErrorState, { message: error instanceof Error ? error.message : String(error) });
|
|
14644
14936
|
}
|
|
14645
14937
|
if (!resolvedTrait || !layoutData || layoutData.states.length === 0) {
|
|
14646
|
-
return /* @__PURE__ */ jsx(Box, { padding: "lg", className: cn("text-center", className), children: /* @__PURE__ */ jsx(Typography, { variant: "body", className: "opacity-60", children: "
|
|
14938
|
+
return /* @__PURE__ */ jsx(Box, { padding: "lg", className: cn("text-center", className), children: /* @__PURE__ */ jsx(Typography, { variant: "body", className: "opacity-60", children: t("stateMachine.noStateMachine") }) });
|
|
14647
14939
|
}
|
|
14648
14940
|
return /* @__PURE__ */ jsx(
|
|
14649
14941
|
StateMachineView,
|
|
@@ -15687,13 +15979,13 @@ var init_LayoutPatterns = __esm({
|
|
|
15687
15979
|
function generateRuleId() {
|
|
15688
15980
|
return `rule-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
15689
15981
|
}
|
|
15690
|
-
function questionsToOptions(questions,
|
|
15982
|
+
function questionsToOptions(questions, endOfSurveyLabel) {
|
|
15691
15983
|
const opts = questions.map((q) => ({
|
|
15692
15984
|
value: q.id,
|
|
15693
15985
|
label: q.label
|
|
15694
15986
|
}));
|
|
15695
|
-
if (
|
|
15696
|
-
opts.push({ value: END_OF_SURVEY, label:
|
|
15987
|
+
if (endOfSurveyLabel !== null) {
|
|
15988
|
+
opts.push({ value: END_OF_SURVEY, label: endOfSurveyLabel });
|
|
15697
15989
|
}
|
|
15698
15990
|
return opts;
|
|
15699
15991
|
}
|
|
@@ -15702,7 +15994,7 @@ function isRuleBroken(rule, questions) {
|
|
|
15702
15994
|
const targetExists = rule.targetQuestionId === END_OF_SURVEY || questions.some((q) => q.id === rule.targetQuestionId);
|
|
15703
15995
|
return !sourceExists || !targetExists;
|
|
15704
15996
|
}
|
|
15705
|
-
var END_OF_SURVEY,
|
|
15997
|
+
var END_OF_SURVEY, RuleRow, NODE_WIDTH, NODE_HEIGHT, NODE_GAP_Y, PADDING, LogicGraph, BranchingLogicBuilder;
|
|
15706
15998
|
var init_BranchingLogicBuilder = __esm({
|
|
15707
15999
|
"components/core/molecules/BranchingLogicBuilder.tsx"() {
|
|
15708
16000
|
"use client";
|
|
@@ -15715,14 +16007,9 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
15715
16007
|
init_FilterPill();
|
|
15716
16008
|
init_Box();
|
|
15717
16009
|
init_useEventBus();
|
|
16010
|
+
init_useTranslate();
|
|
15718
16011
|
init_cn();
|
|
15719
16012
|
END_OF_SURVEY = "end-of-survey";
|
|
15720
|
-
OPERATOR_OPTIONS = [
|
|
15721
|
-
{ value: "equals", label: "equals" },
|
|
15722
|
-
{ value: "not-equals", label: "does not equal" },
|
|
15723
|
-
{ value: "contains", label: "contains" },
|
|
15724
|
-
{ value: "in", label: "is one of" }
|
|
15725
|
-
];
|
|
15726
16013
|
RuleRow = ({
|
|
15727
16014
|
rule,
|
|
15728
16015
|
questions,
|
|
@@ -15731,8 +16018,21 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
15731
16018
|
onChange,
|
|
15732
16019
|
onDelete
|
|
15733
16020
|
}) => {
|
|
15734
|
-
const
|
|
15735
|
-
const
|
|
16021
|
+
const { t } = useTranslate();
|
|
16022
|
+
const operatorOptions = useMemo(
|
|
16023
|
+
() => [
|
|
16024
|
+
{ value: "equals", label: t("branchingLogic.operatorEquals") },
|
|
16025
|
+
{ value: "not-equals", label: t("branchingLogic.operatorNotEquals") },
|
|
16026
|
+
{ value: "contains", label: t("branchingLogic.operatorContains") },
|
|
16027
|
+
{ value: "in", label: t("branchingLogic.operatorIn") }
|
|
16028
|
+
],
|
|
16029
|
+
[t]
|
|
16030
|
+
);
|
|
16031
|
+
const sourceOptions = useMemo(() => questionsToOptions(questions, null), [questions]);
|
|
16032
|
+
const targetOptions = useMemo(
|
|
16033
|
+
() => questionsToOptions(questions, t("branchingLogic.endOfSurvey")),
|
|
16034
|
+
[questions, t]
|
|
16035
|
+
);
|
|
15736
16036
|
const sourceQuestion = questions.find((q) => q.id === rule.sourceQuestionId);
|
|
15737
16037
|
const valueOptions = useMemo(() => {
|
|
15738
16038
|
if (!sourceQuestion?.optionValues) return [];
|
|
@@ -15777,22 +16077,22 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
15777
16077
|
),
|
|
15778
16078
|
children: [
|
|
15779
16079
|
/* @__PURE__ */ jsxs(Box, { className: "flex flex-wrap items-center gap-2", children: [
|
|
15780
|
-
/* @__PURE__ */ jsx(Typography, { variant: "label", weight: "semibold", className: "shrink-0", children: "
|
|
16080
|
+
/* @__PURE__ */ jsx(Typography, { variant: "label", weight: "semibold", className: "shrink-0", children: t("branchingLogic.if") }),
|
|
15781
16081
|
/* @__PURE__ */ jsx(Box, { className: "min-w-[10rem] grow basis-40", children: /* @__PURE__ */ jsx(
|
|
15782
16082
|
Select,
|
|
15783
16083
|
{
|
|
15784
16084
|
options: sourceOptions,
|
|
15785
16085
|
value: rule.sourceQuestionId,
|
|
15786
|
-
placeholder: "
|
|
16086
|
+
placeholder: t("branchingLogic.selectQuestion"),
|
|
15787
16087
|
onChange: handleSource,
|
|
15788
16088
|
disabled: readOnly,
|
|
15789
|
-
error: broken ? "
|
|
16089
|
+
error: broken ? t("branchingLogic.brokenReference") : void 0
|
|
15790
16090
|
}
|
|
15791
16091
|
) }),
|
|
15792
16092
|
/* @__PURE__ */ jsx(Box, { className: "min-w-[8rem] basis-32", children: /* @__PURE__ */ jsx(
|
|
15793
16093
|
Select,
|
|
15794
16094
|
{
|
|
15795
|
-
options:
|
|
16095
|
+
options: operatorOptions,
|
|
15796
16096
|
value: rule.operator,
|
|
15797
16097
|
onChange: handleOperator,
|
|
15798
16098
|
disabled: readOnly
|
|
@@ -15815,7 +16115,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
15815
16115
|
{
|
|
15816
16116
|
options: valueOptions.filter((o) => !chips.includes(o.value)),
|
|
15817
16117
|
value: "",
|
|
15818
|
-
placeholder: "
|
|
16118
|
+
placeholder: t("branchingLogic.addValue"),
|
|
15819
16119
|
onChange: handleAddChip,
|
|
15820
16120
|
disabled: readOnly
|
|
15821
16121
|
}
|
|
@@ -15823,7 +16123,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
15823
16123
|
Input,
|
|
15824
16124
|
{
|
|
15825
16125
|
inputType: "text",
|
|
15826
|
-
placeholder: "
|
|
16126
|
+
placeholder: t("branchingLogic.typeValuePressEnter"),
|
|
15827
16127
|
value: "",
|
|
15828
16128
|
onKeyDown: (e) => {
|
|
15829
16129
|
if (e.key !== "Enter") return;
|
|
@@ -15841,7 +16141,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
15841
16141
|
{
|
|
15842
16142
|
options: valueOptions,
|
|
15843
16143
|
value: scalarValue,
|
|
15844
|
-
placeholder: "
|
|
16144
|
+
placeholder: t("branchingLogic.selectValue"),
|
|
15845
16145
|
onChange: (e) => onChange({ ...rule, value: e.target.value }),
|
|
15846
16146
|
disabled: readOnly
|
|
15847
16147
|
}
|
|
@@ -15849,7 +16149,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
15849
16149
|
Input,
|
|
15850
16150
|
{
|
|
15851
16151
|
inputType: "text",
|
|
15852
|
-
placeholder: "
|
|
16152
|
+
placeholder: t("branchingLogic.value"),
|
|
15853
16153
|
value: scalarValue,
|
|
15854
16154
|
onChange: handleScalarValue,
|
|
15855
16155
|
disabled: readOnly
|
|
@@ -15857,17 +16157,17 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
15857
16157
|
) }),
|
|
15858
16158
|
/* @__PURE__ */ jsxs(Typography, { variant: "label", weight: "semibold", className: "shrink-0 inline-flex items-center gap-1", children: [
|
|
15859
16159
|
/* @__PURE__ */ jsx(ArrowRight, { className: "h-4 w-4" }),
|
|
15860
|
-
"
|
|
16160
|
+
t("branchingLogic.goTo")
|
|
15861
16161
|
] }),
|
|
15862
16162
|
/* @__PURE__ */ jsx(Box, { className: "min-w-[10rem] grow basis-40", children: /* @__PURE__ */ jsx(
|
|
15863
16163
|
Select,
|
|
15864
16164
|
{
|
|
15865
16165
|
options: targetOptions,
|
|
15866
16166
|
value: rule.targetQuestionId,
|
|
15867
|
-
placeholder: "
|
|
16167
|
+
placeholder: t("branchingLogic.selectTarget"),
|
|
15868
16168
|
onChange: handleTarget,
|
|
15869
16169
|
disabled: readOnly,
|
|
15870
|
-
error: broken && rule.targetQuestionId !== END_OF_SURVEY ? "
|
|
16170
|
+
error: broken && rule.targetQuestionId !== END_OF_SURVEY ? t("branchingLogic.brokenReference") : void 0
|
|
15871
16171
|
}
|
|
15872
16172
|
) }),
|
|
15873
16173
|
!readOnly && /* @__PURE__ */ jsx(
|
|
@@ -15879,11 +16179,11 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
15879
16179
|
action: "DELETE_RULE",
|
|
15880
16180
|
actionPayload: { ruleId: rule.id },
|
|
15881
16181
|
onClick: onDelete,
|
|
15882
|
-
"aria-label": "
|
|
16182
|
+
"aria-label": t("branchingLogic.deleteRule")
|
|
15883
16183
|
}
|
|
15884
16184
|
)
|
|
15885
16185
|
] }),
|
|
15886
|
-
broken && /* @__PURE__ */ jsx(Badge, { variant: "error", size: "sm", label: "
|
|
16186
|
+
broken && /* @__PURE__ */ jsx(Badge, { variant: "error", size: "sm", label: t("branchingLogic.brokenReference") })
|
|
15887
16187
|
]
|
|
15888
16188
|
}
|
|
15889
16189
|
);
|
|
@@ -15893,10 +16193,12 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
15893
16193
|
NODE_GAP_Y = 80;
|
|
15894
16194
|
PADDING = 32;
|
|
15895
16195
|
LogicGraph = ({ questions, rules }) => {
|
|
16196
|
+
const { t } = useTranslate();
|
|
16197
|
+
const endOfSurveyLabel = t("branchingLogic.endOfSurvey");
|
|
15896
16198
|
const layout = useMemo(() => {
|
|
15897
16199
|
const items = [
|
|
15898
16200
|
...questions.map((q) => ({ id: q.id, label: q.label, isEnd: false })),
|
|
15899
|
-
{ id: END_OF_SURVEY, label:
|
|
16201
|
+
{ id: END_OF_SURVEY, label: endOfSurveyLabel, isEnd: true }
|
|
15900
16202
|
];
|
|
15901
16203
|
const positions = {};
|
|
15902
16204
|
items.forEach((item, i) => {
|
|
@@ -15908,14 +16210,14 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
15908
16210
|
const width = NODE_WIDTH + PADDING * 2 + 220;
|
|
15909
16211
|
const height = PADDING * 2 + items.length * (NODE_HEIGHT + NODE_GAP_Y);
|
|
15910
16212
|
return { items, positions, width, height };
|
|
15911
|
-
}, [questions]);
|
|
16213
|
+
}, [questions, endOfSurveyLabel]);
|
|
15912
16214
|
return /* @__PURE__ */ jsx(Box, { className: "overflow-auto rounded-container border border-border bg-card p-2", children: /* @__PURE__ */ jsxs(
|
|
15913
16215
|
"svg",
|
|
15914
16216
|
{
|
|
15915
16217
|
width: layout.width,
|
|
15916
16218
|
height: layout.height,
|
|
15917
16219
|
role: "img",
|
|
15918
|
-
"aria-label": "
|
|
16220
|
+
"aria-label": t("branchingLogic.graphAriaLabel"),
|
|
15919
16221
|
style: { display: "block" },
|
|
15920
16222
|
children: [
|
|
15921
16223
|
/* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsx(
|
|
@@ -16023,6 +16325,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
16023
16325
|
readOnly = false,
|
|
16024
16326
|
className
|
|
16025
16327
|
}) => {
|
|
16328
|
+
const { t } = useTranslate();
|
|
16026
16329
|
const eventBus = useEventBus();
|
|
16027
16330
|
const questions = Array.isArray(questionsProp) ? questionsProp : [];
|
|
16028
16331
|
const rulesInitial = Array.isArray(rulesProp) ? rulesProp : [];
|
|
@@ -16075,16 +16378,23 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
16075
16378
|
/* @__PURE__ */ jsxs(Box, { className: "flex flex-wrap items-center justify-between gap-2", children: [
|
|
16076
16379
|
/* @__PURE__ */ jsxs(Box, { className: "flex items-center gap-2", children: [
|
|
16077
16380
|
/* @__PURE__ */ jsx(GitBranch, { className: "h-5 w-5 text-foreground" }),
|
|
16078
|
-
/* @__PURE__ */ jsx(Typography, { variant: "subheading", weight: "semibold", children: "
|
|
16381
|
+
/* @__PURE__ */ jsx(Typography, { variant: "subheading", weight: "semibold", children: t("branchingLogic.title") }),
|
|
16079
16382
|
/* @__PURE__ */ jsx(
|
|
16080
16383
|
Badge,
|
|
16081
16384
|
{
|
|
16082
16385
|
variant: "neutral",
|
|
16083
16386
|
size: "sm",
|
|
16084
|
-
label:
|
|
16387
|
+
label: rules.length === 1 ? t("branchingLogic.ruleCountOne", { count: rules.length }) : t("branchingLogic.ruleCountOther", { count: rules.length })
|
|
16085
16388
|
}
|
|
16086
16389
|
),
|
|
16087
|
-
brokenCount > 0 && /* @__PURE__ */ jsx(
|
|
16390
|
+
brokenCount > 0 && /* @__PURE__ */ jsx(
|
|
16391
|
+
Badge,
|
|
16392
|
+
{
|
|
16393
|
+
variant: "error",
|
|
16394
|
+
size: "sm",
|
|
16395
|
+
label: t("branchingLogic.brokenCount", { count: brokenCount })
|
|
16396
|
+
}
|
|
16397
|
+
)
|
|
16088
16398
|
] }),
|
|
16089
16399
|
/* @__PURE__ */ jsxs(Box, { className: "flex items-center gap-1 rounded-sm border border-border bg-card p-0.5", children: [
|
|
16090
16400
|
/* @__PURE__ */ jsx(
|
|
@@ -16095,7 +16405,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
16095
16405
|
leftIcon: Pencil,
|
|
16096
16406
|
action: "VIEW_EDIT",
|
|
16097
16407
|
onClick: () => setView("edit"),
|
|
16098
|
-
children: "
|
|
16408
|
+
children: t("branchingLogic.rules")
|
|
16099
16409
|
}
|
|
16100
16410
|
),
|
|
16101
16411
|
/* @__PURE__ */ jsx(
|
|
@@ -16106,13 +16416,13 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
16106
16416
|
leftIcon: Eye,
|
|
16107
16417
|
action: "VIEW_GRAPH",
|
|
16108
16418
|
onClick: () => setView("graph"),
|
|
16109
|
-
children: "
|
|
16419
|
+
children: t("branchingLogic.logicGraph")
|
|
16110
16420
|
}
|
|
16111
16421
|
)
|
|
16112
16422
|
] })
|
|
16113
16423
|
] }),
|
|
16114
16424
|
view === "edit" ? /* @__PURE__ */ jsxs(Box, { className: "flex flex-col gap-2", children: [
|
|
16115
|
-
rules.length === 0 ? /* @__PURE__ */ jsx(Card, { variant: "bordered", padding: "lg", className: "text-center", children: /* @__PURE__ */ jsx(Typography, { variant: "body", color: "muted", children: noQuestions ? "
|
|
16425
|
+
rules.length === 0 ? /* @__PURE__ */ jsx(Card, { variant: "bordered", padding: "lg", className: "text-center", children: /* @__PURE__ */ jsx(Typography, { variant: "body", color: "muted", children: noQuestions ? t("branchingLogic.emptyNoQuestions") : t("branchingLogic.emptyNoRules") }) }) : rules.map((rule) => /* @__PURE__ */ jsx(
|
|
16116
16426
|
RuleRow,
|
|
16117
16427
|
{
|
|
16118
16428
|
rule,
|
|
@@ -16133,7 +16443,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
16133
16443
|
action: "ADD_RULE",
|
|
16134
16444
|
onClick: handleAddRule,
|
|
16135
16445
|
disabled: noQuestions,
|
|
16136
|
-
children: "
|
|
16446
|
+
children: t("branchingLogic.addRule")
|
|
16137
16447
|
}
|
|
16138
16448
|
) })
|
|
16139
16449
|
] }) : /* @__PURE__ */ jsx(LogicGraph, { questions, rules })
|
|
@@ -16760,7 +17070,7 @@ function CalendarGrid({
|
|
|
16760
17070
|
onClick: stepPrev,
|
|
16761
17071
|
"aria-disabled": !canPrev || void 0,
|
|
16762
17072
|
"aria-label": t("aria.previousDays"),
|
|
16763
|
-
children: "
|
|
17073
|
+
children: t("nav.previous")
|
|
16764
17074
|
}
|
|
16765
17075
|
),
|
|
16766
17076
|
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-muted-foreground", children: formatDateRange(visibleDays[0], visibleDays[visibleDays.length - 1]) }),
|
|
@@ -16773,7 +17083,7 @@ function CalendarGrid({
|
|
|
16773
17083
|
onClick: stepNext,
|
|
16774
17084
|
"aria-disabled": !canNext || void 0,
|
|
16775
17085
|
"aria-label": t("aria.nextDays"),
|
|
16776
|
-
children: "
|
|
17086
|
+
children: t("nav.next")
|
|
16777
17087
|
}
|
|
16778
17088
|
)
|
|
16779
17089
|
] }),
|
|
@@ -18323,7 +18633,7 @@ var init_Pagination = __esm({
|
|
|
18323
18633
|
type: "number",
|
|
18324
18634
|
value: jumpToPage,
|
|
18325
18635
|
onChange: (e) => setJumpToPage(e.target.value),
|
|
18326
|
-
placeholder: "
|
|
18636
|
+
placeholder: t("pagination.jumpPlaceholder"),
|
|
18327
18637
|
className: "w-20",
|
|
18328
18638
|
onKeyDown: (e) => {
|
|
18329
18639
|
if (e.key === "Enter") {
|
|
@@ -18461,13 +18771,10 @@ var init_CardGrid = __esm({
|
|
|
18461
18771
|
return children;
|
|
18462
18772
|
}
|
|
18463
18773
|
if (isLoading) {
|
|
18464
|
-
return /* @__PURE__ */ jsx(Box, { className: "col-span-full text-center py-8 text-muted-foreground", children: /* @__PURE__ */ jsx(Typography, { variant: "body", color: "secondary", children: "
|
|
18774
|
+
return /* @__PURE__ */ jsx(Box, { className: "col-span-full text-center py-8 text-muted-foreground", children: /* @__PURE__ */ jsx(Typography, { variant: "body", color: "secondary", children: t("loading.items") }) });
|
|
18465
18775
|
}
|
|
18466
18776
|
if (error) {
|
|
18467
|
-
return /* @__PURE__ */ jsx(Box, { className: "col-span-full text-center py-8 text-error", children: /* @__PURE__ */
|
|
18468
|
-
"Error loading items: ",
|
|
18469
|
-
error.message
|
|
18470
|
-
] }) });
|
|
18777
|
+
return /* @__PURE__ */ jsx(Box, { className: "col-span-full text-center py-8 text-error", children: /* @__PURE__ */ jsx(Typography, { variant: "body", color: "error", children: t("error.loadFailed", { message: error.message }) }) });
|
|
18471
18778
|
}
|
|
18472
18779
|
if (normalizedData.length === 0) {
|
|
18473
18780
|
return /* @__PURE__ */ jsx(Box, { className: "col-span-full text-center py-12 text-muted-foreground", children: /* @__PURE__ */ jsx(Typography, { variant: "body", color: "secondary", children: t("empty.noItems") || "No items found" }) });
|
|
@@ -22564,7 +22871,7 @@ function DataGrid({
|
|
|
22564
22871
|
onChange: () => toggleSelection(id),
|
|
22565
22872
|
onClick: (e) => e.stopPropagation(),
|
|
22566
22873
|
className: "w-4 h-4 mt-1 flex-shrink-0 accent-primary",
|
|
22567
|
-
"aria-label":
|
|
22874
|
+
"aria-label": t("card.selectItem", { item: titleValue !== void 0 ? String(titleValue) : t("card.itemFallback") })
|
|
22568
22875
|
}
|
|
22569
22876
|
),
|
|
22570
22877
|
/* @__PURE__ */ jsxs(VStack, { gap: "xs", className: "flex-1 min-w-0", children: [
|
|
@@ -22762,7 +23069,7 @@ function formatDate3(value) {
|
|
|
22762
23069
|
if (isNaN(d.getTime())) return String(value);
|
|
22763
23070
|
return d.toLocaleDateString(void 0, { year: "numeric", month: "short", day: "numeric" });
|
|
22764
23071
|
}
|
|
22765
|
-
function formatValue2(value, format) {
|
|
23072
|
+
function formatValue2(value, format, boolLabels) {
|
|
22766
23073
|
if (value === void 0 || value === null) return "";
|
|
22767
23074
|
switch (format) {
|
|
22768
23075
|
case "date":
|
|
@@ -22774,7 +23081,7 @@ function formatValue2(value, format) {
|
|
|
22774
23081
|
case "percent":
|
|
22775
23082
|
return typeof value === "number" ? `${Math.round(value)}%` : String(value);
|
|
22776
23083
|
case "boolean":
|
|
22777
|
-
return value ? "Yes" : "No";
|
|
23084
|
+
return value ? boolLabels?.yes ?? "Yes" : boolLabels?.no ?? "No";
|
|
22778
23085
|
default:
|
|
22779
23086
|
return String(value);
|
|
22780
23087
|
}
|
|
@@ -23070,7 +23377,7 @@ function DataList({
|
|
|
23070
23377
|
field.label ?? fieldLabel3(field.name),
|
|
23071
23378
|
":"
|
|
23072
23379
|
] }),
|
|
23073
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", children: formatValue2(value, field.format) })
|
|
23380
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", children: formatValue2(value, field.format, { yes: t("common.yes"), no: t("common.no") }) })
|
|
23074
23381
|
] }, field.name);
|
|
23075
23382
|
}) }),
|
|
23076
23383
|
progressFields.map((field) => {
|
|
@@ -23200,6 +23507,7 @@ var init_FileTree = __esm({
|
|
|
23200
23507
|
init_Box();
|
|
23201
23508
|
init_Typography();
|
|
23202
23509
|
init_Icon();
|
|
23510
|
+
init_useTranslate();
|
|
23203
23511
|
TreeNodeItem = ({
|
|
23204
23512
|
node,
|
|
23205
23513
|
depth,
|
|
@@ -23285,8 +23593,9 @@ var init_FileTree = __esm({
|
|
|
23285
23593
|
className,
|
|
23286
23594
|
indent = 16
|
|
23287
23595
|
}) => {
|
|
23596
|
+
const { t } = useTranslate();
|
|
23288
23597
|
if (tree.length === 0) {
|
|
23289
|
-
return /* @__PURE__ */ jsx(Box, { className: `p-4 ${className ?? ""}`, children: /* @__PURE__ */ jsx(Typography, { variant: "caption", color: "muted", children: "
|
|
23598
|
+
return /* @__PURE__ */ jsx(Box, { className: `p-4 ${className ?? ""}`, children: /* @__PURE__ */ jsx(Typography, { variant: "caption", color: "muted", children: t("fileTree.noFiles") }) });
|
|
23290
23599
|
}
|
|
23291
23600
|
return /* @__PURE__ */ jsx(Box, { className: `py-1 overflow-y-auto ${className ?? ""}`, role: "tree", children: tree.map((node) => /* @__PURE__ */ jsx(
|
|
23292
23601
|
TreeNodeItem,
|
|
@@ -23413,6 +23722,7 @@ var init_FilterGroup = __esm({
|
|
|
23413
23722
|
init_Icon();
|
|
23414
23723
|
init_useEventBus();
|
|
23415
23724
|
init_useQuerySingleton();
|
|
23725
|
+
init_useTranslate();
|
|
23416
23726
|
resolveFilterType = (filter) => filter.filterType ?? filter.type;
|
|
23417
23727
|
lookStyles6 = {
|
|
23418
23728
|
toolbar: "",
|
|
@@ -23433,6 +23743,7 @@ var init_FilterGroup = __esm({
|
|
|
23433
23743
|
isLoading,
|
|
23434
23744
|
look = "toolbar"
|
|
23435
23745
|
}) => {
|
|
23746
|
+
const { t } = useTranslate();
|
|
23436
23747
|
const eventBus = useEventBus();
|
|
23437
23748
|
const queryState = useQuerySingleton(query);
|
|
23438
23749
|
const [selectedValues, setSelectedValues] = useState(
|
|
@@ -23514,7 +23825,7 @@ var init_FilterGroup = __esm({
|
|
|
23514
23825
|
"px-3 py-1.5 text-sm font-medium transition-all duration-[var(--transition-fast)]",
|
|
23515
23826
|
!selectedValues[filter.field] ? "bg-primary text-primary-foreground" : "bg-card text-muted-foreground hover:bg-muted"
|
|
23516
23827
|
),
|
|
23517
|
-
children: "
|
|
23828
|
+
children: t("filterGroup.all")
|
|
23518
23829
|
}
|
|
23519
23830
|
),
|
|
23520
23831
|
filter.options?.map((option) => /* @__PURE__ */ jsx(
|
|
@@ -23542,7 +23853,7 @@ var init_FilterGroup = __esm({
|
|
|
23542
23853
|
size: "sm",
|
|
23543
23854
|
onClick: handleClearAll,
|
|
23544
23855
|
leftIcon: /* @__PURE__ */ jsx(Icon, { name: "x", className: "h-3.5 w-3.5" }),
|
|
23545
|
-
children: "
|
|
23856
|
+
children: t("filterGroup.clear")
|
|
23546
23857
|
}
|
|
23547
23858
|
)
|
|
23548
23859
|
]
|
|
@@ -23553,7 +23864,7 @@ var init_FilterGroup = __esm({
|
|
|
23553
23864
|
return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-4", lookStyles6[look], className), children: [
|
|
23554
23865
|
showIcon && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-muted-foreground", children: [
|
|
23555
23866
|
/* @__PURE__ */ jsx(Icon, { name: "filter", className: "h-4 w-4" }),
|
|
23556
|
-
/* @__PURE__ */ jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: "
|
|
23867
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: t("filterGroup.filters") })
|
|
23557
23868
|
] }),
|
|
23558
23869
|
filters.map((filter) => /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
23559
23870
|
/* @__PURE__ */ jsx("label", { className: "text-xs font-bold text-muted-foreground uppercase tracking-wide", children: filter.label }),
|
|
@@ -23576,7 +23887,7 @@ var init_FilterGroup = __esm({
|
|
|
23576
23887
|
`${filter.field}_from`,
|
|
23577
23888
|
e.target.value || null
|
|
23578
23889
|
),
|
|
23579
|
-
placeholder: "
|
|
23890
|
+
placeholder: t("filterGroup.from"),
|
|
23580
23891
|
clearable: true,
|
|
23581
23892
|
onClear: () => handleFilterSelect(`${filter.field}_from`, null)
|
|
23582
23893
|
}
|
|
@@ -23590,7 +23901,7 @@ var init_FilterGroup = __esm({
|
|
|
23590
23901
|
`${filter.field}_to`,
|
|
23591
23902
|
e.target.value || null
|
|
23592
23903
|
),
|
|
23593
|
-
placeholder: "
|
|
23904
|
+
placeholder: t("filterGroup.to"),
|
|
23594
23905
|
clearable: true,
|
|
23595
23906
|
onClear: () => handleFilterSelect(`${filter.field}_to`, null)
|
|
23596
23907
|
}
|
|
@@ -23610,7 +23921,7 @@ var init_FilterGroup = __esm({
|
|
|
23610
23921
|
value: selectedValues[filter.field] || "all",
|
|
23611
23922
|
onChange: (e) => handleFilterSelect(filter.field, e.target.value),
|
|
23612
23923
|
options: [
|
|
23613
|
-
{ value: "all", label: "
|
|
23924
|
+
{ value: "all", label: t("filterGroup.all") },
|
|
23614
23925
|
...filter.options?.map((opt) => ({
|
|
23615
23926
|
value: opt,
|
|
23616
23927
|
label: opt
|
|
@@ -23627,7 +23938,7 @@ var init_FilterGroup = __esm({
|
|
|
23627
23938
|
onClick: handleClearAll,
|
|
23628
23939
|
leftIcon: /* @__PURE__ */ jsx(Icon, { name: "x", className: "h-3.5 w-3.5" }),
|
|
23629
23940
|
className: "self-start",
|
|
23630
|
-
children: "
|
|
23941
|
+
children: t("filterGroup.clearAll")
|
|
23631
23942
|
}
|
|
23632
23943
|
)
|
|
23633
23944
|
] });
|
|
@@ -23693,7 +24004,7 @@ var init_FilterGroup = __esm({
|
|
|
23693
24004
|
value: selectedValues[filter.field] || "all",
|
|
23694
24005
|
onChange: (e) => handleFilterSelect(filter.field, e.target.value),
|
|
23695
24006
|
options: [
|
|
23696
|
-
{ value: "all", label:
|
|
24007
|
+
{ value: "all", label: t("filterGroup.allOf", { label: filter.label }) },
|
|
23697
24008
|
...filter.options?.map((opt) => ({
|
|
23698
24009
|
value: opt,
|
|
23699
24010
|
label: opt
|
|
@@ -23722,7 +24033,7 @@ var init_FilterGroup = __esm({
|
|
|
23722
24033
|
field
|
|
23723
24034
|
);
|
|
23724
24035
|
}),
|
|
23725
|
-
/* @__PURE__ */ jsx(Button, { variant: "ghost", size: "sm", onClick: handleClearAll, children: "
|
|
24036
|
+
/* @__PURE__ */ jsx(Button, { variant: "ghost", size: "sm", onClick: handleClearAll, children: t("filterGroup.clearAll") })
|
|
23726
24037
|
] })
|
|
23727
24038
|
]
|
|
23728
24039
|
}
|
|
@@ -23747,7 +24058,7 @@ var init_FilterGroup = __esm({
|
|
|
23747
24058
|
className: "text-muted-foreground",
|
|
23748
24059
|
children: [
|
|
23749
24060
|
/* @__PURE__ */ jsx(Icon, { name: "filter", className: "h-4 w-4" }),
|
|
23750
|
-
/* @__PURE__ */ jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: "
|
|
24061
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: t("filterGroup.filters") })
|
|
23751
24062
|
]
|
|
23752
24063
|
}
|
|
23753
24064
|
),
|
|
@@ -23773,7 +24084,7 @@ var init_FilterGroup = __esm({
|
|
|
23773
24084
|
`${filter.field}_from`,
|
|
23774
24085
|
e.target.value || null
|
|
23775
24086
|
),
|
|
23776
|
-
placeholder: "
|
|
24087
|
+
placeholder: t("filterGroup.from"),
|
|
23777
24088
|
clearable: true,
|
|
23778
24089
|
onClear: () => handleFilterSelect(`${filter.field}_from`, null),
|
|
23779
24090
|
className: "min-w-[130px]"
|
|
@@ -23789,7 +24100,7 @@ var init_FilterGroup = __esm({
|
|
|
23789
24100
|
`${filter.field}_to`,
|
|
23790
24101
|
e.target.value || null
|
|
23791
24102
|
),
|
|
23792
|
-
placeholder: "
|
|
24103
|
+
placeholder: t("filterGroup.to"),
|
|
23793
24104
|
clearable: true,
|
|
23794
24105
|
onClear: () => handleFilterSelect(`${filter.field}_to`, null),
|
|
23795
24106
|
className: "min-w-[130px]"
|
|
@@ -23811,7 +24122,7 @@ var init_FilterGroup = __esm({
|
|
|
23811
24122
|
value: selectedValues[filter.field] || "all",
|
|
23812
24123
|
onChange: (e) => handleFilterSelect(filter.field, e.target.value),
|
|
23813
24124
|
options: [
|
|
23814
|
-
{ value: "all", label: "
|
|
24125
|
+
{ value: "all", label: t("filterGroup.all") },
|
|
23815
24126
|
...filter.options?.map((opt) => ({
|
|
23816
24127
|
value: opt,
|
|
23817
24128
|
label: opt
|
|
@@ -23822,10 +24133,7 @@ var init_FilterGroup = __esm({
|
|
|
23822
24133
|
)
|
|
23823
24134
|
] }, filter.field)),
|
|
23824
24135
|
activeFilterCount > 0 && /* @__PURE__ */ jsxs(HStack, { gap: "sm", align: "center", className: "ml-auto", children: [
|
|
23825
|
-
/* @__PURE__ */
|
|
23826
|
-
activeFilterCount,
|
|
23827
|
-
" active"
|
|
23828
|
-
] }),
|
|
24136
|
+
/* @__PURE__ */ jsx(Badge, { variant: "primary", size: "md", children: t("filterGroup.activeCount", { count: activeFilterCount }) }),
|
|
23829
24137
|
/* @__PURE__ */ jsx(
|
|
23830
24138
|
Button,
|
|
23831
24139
|
{
|
|
@@ -23833,7 +24141,7 @@ var init_FilterGroup = __esm({
|
|
|
23833
24141
|
size: "sm",
|
|
23834
24142
|
onClick: handleClearAll,
|
|
23835
24143
|
leftIcon: /* @__PURE__ */ jsx(Icon, { name: "x", className: "h-3.5 w-3.5" }),
|
|
23836
|
-
children: "
|
|
24144
|
+
children: t("filterGroup.clearAll")
|
|
23837
24145
|
}
|
|
23838
24146
|
)
|
|
23839
24147
|
] })
|
|
@@ -24313,7 +24621,7 @@ var init_RelationSelect = __esm({
|
|
|
24313
24621
|
value,
|
|
24314
24622
|
onChange,
|
|
24315
24623
|
options = [],
|
|
24316
|
-
placeholder
|
|
24624
|
+
placeholder,
|
|
24317
24625
|
required = false,
|
|
24318
24626
|
disabled = false,
|
|
24319
24627
|
isLoading = false,
|
|
@@ -24325,6 +24633,7 @@ var init_RelationSelect = __esm({
|
|
|
24325
24633
|
emptyMessage
|
|
24326
24634
|
}) => {
|
|
24327
24635
|
const { t } = useTranslate();
|
|
24636
|
+
const resolvedPlaceholder = placeholder ?? t("relationSelect.selectPlaceholder");
|
|
24328
24637
|
const resolvedSearchPlaceholder = searchPlaceholder ?? t("common.search");
|
|
24329
24638
|
const resolvedEmptyMessage = emptyMessage ?? t("empty.noOptionsFound");
|
|
24330
24639
|
const [isOpen, setIsOpen] = useState(false);
|
|
@@ -24434,7 +24743,7 @@ var init_RelationSelect = __esm({
|
|
|
24434
24743
|
children: isLoading ? /* @__PURE__ */ jsxs(HStack, { gap: "xs", align: "center", children: [
|
|
24435
24744
|
/* @__PURE__ */ jsx(Spinner, { size: "sm" }),
|
|
24436
24745
|
/* @__PURE__ */ jsx(Typography, { as: "span", children: t("common.loading") })
|
|
24437
|
-
] }) : selectedOption ? selectedOption.label :
|
|
24746
|
+
] }) : selectedOption ? selectedOption.label : resolvedPlaceholder
|
|
24438
24747
|
}
|
|
24439
24748
|
),
|
|
24440
24749
|
/* @__PURE__ */ jsxs(HStack, { gap: "xs", align: "center", children: [
|
|
@@ -25028,19 +25337,20 @@ var init_RepeatableFormSection = __esm({
|
|
|
25028
25337
|
RepeatableFormSection.displayName = "RepeatableFormSection";
|
|
25029
25338
|
}
|
|
25030
25339
|
});
|
|
25031
|
-
var
|
|
25340
|
+
var actionTypeLabelKeys, actionTypeIcons, ViolationAlert;
|
|
25032
25341
|
var init_ViolationAlert = __esm({
|
|
25033
25342
|
"components/core/molecules/ViolationAlert.tsx"() {
|
|
25034
25343
|
init_cn();
|
|
25344
|
+
init_useTranslate();
|
|
25035
25345
|
init_Box();
|
|
25036
25346
|
init_Stack();
|
|
25037
25347
|
init_Typography();
|
|
25038
25348
|
init_Button();
|
|
25039
25349
|
init_Icon();
|
|
25040
|
-
|
|
25041
|
-
measure: "
|
|
25042
|
-
admin: "
|
|
25043
|
-
penalty: "
|
|
25350
|
+
actionTypeLabelKeys = {
|
|
25351
|
+
measure: "violationAlert.actionType.measure",
|
|
25352
|
+
admin: "violationAlert.actionType.admin",
|
|
25353
|
+
penalty: "violationAlert.actionType.penalty"
|
|
25044
25354
|
};
|
|
25045
25355
|
actionTypeIcons = {
|
|
25046
25356
|
measure: "alert-triangle",
|
|
@@ -25057,10 +25367,11 @@ var init_ViolationAlert = __esm({
|
|
|
25057
25367
|
className,
|
|
25058
25368
|
...flatProps
|
|
25059
25369
|
}) => {
|
|
25370
|
+
const { t } = useTranslate();
|
|
25060
25371
|
const resolvedViolation = violation ?? {
|
|
25061
25372
|
law: "",
|
|
25062
25373
|
article: "",
|
|
25063
|
-
message: flatProps.message ?? "
|
|
25374
|
+
message: flatProps.message ?? t("violationAlert.fallbackMessage"),
|
|
25064
25375
|
actionType: "measure"
|
|
25065
25376
|
};
|
|
25066
25377
|
const effectiveSeverity = severity ?? (resolvedViolation.actionType === "measure" ? "warning" : "error");
|
|
@@ -25145,7 +25456,7 @@ var init_ViolationAlert = __esm({
|
|
|
25145
25456
|
{
|
|
25146
25457
|
variant: "caption",
|
|
25147
25458
|
className: cn(textColor, "opacity-75"),
|
|
25148
|
-
children:
|
|
25459
|
+
children: t(actionTypeLabelKeys[resolvedViolation.actionType])
|
|
25149
25460
|
}
|
|
25150
25461
|
)
|
|
25151
25462
|
] })
|
|
@@ -25176,7 +25487,7 @@ var init_ViolationAlert = __esm({
|
|
|
25176
25487
|
{
|
|
25177
25488
|
variant: "caption",
|
|
25178
25489
|
className: cn(textColor, "opacity-75"),
|
|
25179
|
-
children: "
|
|
25490
|
+
children: t("violationAlert.adminLabel")
|
|
25180
25491
|
}
|
|
25181
25492
|
),
|
|
25182
25493
|
/* @__PURE__ */ jsx(
|
|
@@ -25195,7 +25506,7 @@ var init_ViolationAlert = __esm({
|
|
|
25195
25506
|
{
|
|
25196
25507
|
variant: "caption",
|
|
25197
25508
|
className: cn(textColor, "opacity-75"),
|
|
25198
|
-
children: "
|
|
25509
|
+
children: t("violationAlert.penaltyLabel")
|
|
25199
25510
|
}
|
|
25200
25511
|
),
|
|
25201
25512
|
/* @__PURE__ */ jsx(
|
|
@@ -25220,7 +25531,7 @@ var init_ViolationAlert = __esm({
|
|
|
25220
25531
|
className: cn(textColor, "self-start"),
|
|
25221
25532
|
children: [
|
|
25222
25533
|
/* @__PURE__ */ jsx(Icon, { name: "arrow-right", size: "sm", className: "mr-1" }),
|
|
25223
|
-
"
|
|
25534
|
+
t("violationAlert.goToField")
|
|
25224
25535
|
]
|
|
25225
25536
|
}
|
|
25226
25537
|
)
|
|
@@ -25536,6 +25847,7 @@ var init_LineChart = __esm({
|
|
|
25536
25847
|
"use client";
|
|
25537
25848
|
init_cn();
|
|
25538
25849
|
init_atoms2();
|
|
25850
|
+
init_useTranslate();
|
|
25539
25851
|
LineChart2 = ({
|
|
25540
25852
|
data,
|
|
25541
25853
|
width = 400,
|
|
@@ -25547,6 +25859,7 @@ var init_LineChart = __esm({
|
|
|
25547
25859
|
areaColor = "var(--color-primary)",
|
|
25548
25860
|
className
|
|
25549
25861
|
}) => {
|
|
25862
|
+
const { t } = useTranslate();
|
|
25550
25863
|
const gradientId = useId();
|
|
25551
25864
|
const safeData = data ?? [];
|
|
25552
25865
|
const sortedData = useMemo(() => {
|
|
@@ -25583,7 +25896,7 @@ var init_LineChart = __esm({
|
|
|
25583
25896
|
return `${linePath} L ${last.x} ${bottom} L ${first.x} ${bottom} Z`;
|
|
25584
25897
|
}, [linePath, points, height, showArea]);
|
|
25585
25898
|
if (safeData.length === 0) {
|
|
25586
|
-
return /* @__PURE__ */ jsx(Box, { className: cn("flex items-center justify-center text-muted-foreground", className), style: { width, height }, children: "
|
|
25899
|
+
return /* @__PURE__ */ jsx(Box, { className: cn("flex items-center justify-center text-muted-foreground", className), style: { width, height }, children: t("empty.noData") });
|
|
25587
25900
|
}
|
|
25588
25901
|
return /* @__PURE__ */ jsx(Box, { className: cn(className), children: /* @__PURE__ */ jsxs(
|
|
25589
25902
|
"svg",
|
|
@@ -27774,6 +28087,7 @@ var init_GraphView = __esm({
|
|
|
27774
28087
|
"use client";
|
|
27775
28088
|
init_cn();
|
|
27776
28089
|
init_atoms2();
|
|
28090
|
+
init_useTranslate();
|
|
27777
28091
|
GROUP_COLORS = [
|
|
27778
28092
|
"#3b82f6",
|
|
27779
28093
|
// blue-500
|
|
@@ -27806,6 +28120,7 @@ var init_GraphView = __esm({
|
|
|
27806
28120
|
showLabels = true,
|
|
27807
28121
|
zoomToFit = true
|
|
27808
28122
|
}) => {
|
|
28123
|
+
const { t } = useTranslate();
|
|
27809
28124
|
const containerRef = useRef(null);
|
|
27810
28125
|
const animRef = useRef(0);
|
|
27811
28126
|
const [simNodes, setSimNodes] = useState([]);
|
|
@@ -27983,7 +28298,7 @@ var init_GraphView = __esm({
|
|
|
27983
28298
|
[onNodeClick]
|
|
27984
28299
|
);
|
|
27985
28300
|
if (nodes.length === 0) {
|
|
27986
|
-
return /* @__PURE__ */ jsx(Box, { className: cn("flex items-center justify-center", className), style: { width: w, height: h }, children: /* @__PURE__ */ jsx(Box, { className: "text-muted-foreground text-sm", children: "
|
|
28301
|
+
return /* @__PURE__ */ jsx(Box, { className: cn("flex items-center justify-center", className), style: { width: w, height: h }, children: /* @__PURE__ */ jsx(Box, { className: "text-muted-foreground text-sm", children: t("display.noGraphData") }) });
|
|
27987
28302
|
}
|
|
27988
28303
|
return /* @__PURE__ */ jsx(
|
|
27989
28304
|
Box,
|
|
@@ -28439,11 +28754,12 @@ var init_UploadDropZone = __esm({
|
|
|
28439
28754
|
init_Icon();
|
|
28440
28755
|
init_Typography();
|
|
28441
28756
|
init_useEventBus();
|
|
28757
|
+
init_useTranslate();
|
|
28442
28758
|
UploadDropZone = ({
|
|
28443
28759
|
accept,
|
|
28444
28760
|
maxSize,
|
|
28445
28761
|
maxFiles = 1,
|
|
28446
|
-
label
|
|
28762
|
+
label,
|
|
28447
28763
|
description,
|
|
28448
28764
|
disabled = false,
|
|
28449
28765
|
action,
|
|
@@ -28451,22 +28767,24 @@ var init_UploadDropZone = __esm({
|
|
|
28451
28767
|
onFiles,
|
|
28452
28768
|
className
|
|
28453
28769
|
}) => {
|
|
28770
|
+
const { t } = useTranslate();
|
|
28771
|
+
const resolvedLabel = label ?? t("upload.dropOrBrowse");
|
|
28454
28772
|
const [isDragOver, setIsDragOver] = useState(false);
|
|
28455
28773
|
const [error, setError] = useState(null);
|
|
28456
28774
|
const inputRef = useRef(null);
|
|
28457
28775
|
const eventBus = useSafeEventBus7();
|
|
28458
28776
|
const defaultDescription = [
|
|
28459
|
-
accept ?
|
|
28460
|
-
maxSize ?
|
|
28461
|
-
maxFiles > 1 ?
|
|
28777
|
+
accept ? t("upload.accepted", { accept }) : null,
|
|
28778
|
+
maxSize ? t("upload.maxSize", { size: formatFileSize(maxSize) }) : null,
|
|
28779
|
+
maxFiles > 1 ? t("upload.maxFiles", { count: maxFiles }) : null
|
|
28462
28780
|
].filter(Boolean).join(". ");
|
|
28463
28781
|
const validateFiles = useCallback(
|
|
28464
28782
|
(files) => {
|
|
28465
28783
|
if (files.length > maxFiles) {
|
|
28466
|
-
return { valid: [], error:
|
|
28784
|
+
return { valid: [], error: t("upload.error.maxFiles", { count: maxFiles }) };
|
|
28467
28785
|
}
|
|
28468
28786
|
if (accept) {
|
|
28469
|
-
const acceptedTypes = accept.split(",").map((
|
|
28787
|
+
const acceptedTypes = accept.split(",").map((s) => s.trim());
|
|
28470
28788
|
const invalid = files.filter((file) => {
|
|
28471
28789
|
return !acceptedTypes.some((type) => {
|
|
28472
28790
|
if (type.endsWith("/*")) {
|
|
@@ -28476,7 +28794,7 @@ var init_UploadDropZone = __esm({
|
|
|
28476
28794
|
});
|
|
28477
28795
|
});
|
|
28478
28796
|
if (invalid.length > 0) {
|
|
28479
|
-
return { valid: [], error:
|
|
28797
|
+
return { valid: [], error: t("upload.error.invalidType", { name: invalid[0].name }) };
|
|
28480
28798
|
}
|
|
28481
28799
|
}
|
|
28482
28800
|
if (maxSize) {
|
|
@@ -28484,13 +28802,13 @@ var init_UploadDropZone = __esm({
|
|
|
28484
28802
|
if (tooLarge.length > 0) {
|
|
28485
28803
|
return {
|
|
28486
28804
|
valid: [],
|
|
28487
|
-
error:
|
|
28805
|
+
error: t("upload.error.tooLarge", { name: tooLarge[0].name, size: formatFileSize(maxSize) })
|
|
28488
28806
|
};
|
|
28489
28807
|
}
|
|
28490
28808
|
}
|
|
28491
28809
|
return { valid: files, error: null };
|
|
28492
28810
|
},
|
|
28493
|
-
[accept, maxSize, maxFiles]
|
|
28811
|
+
[accept, maxSize, maxFiles, t]
|
|
28494
28812
|
);
|
|
28495
28813
|
const handleFiles = useCallback(
|
|
28496
28814
|
(files) => {
|
|
@@ -28561,7 +28879,7 @@ var init_UploadDropZone = __esm({
|
|
|
28561
28879
|
handleClick();
|
|
28562
28880
|
}
|
|
28563
28881
|
},
|
|
28564
|
-
"aria-label":
|
|
28882
|
+
"aria-label": resolvedLabel,
|
|
28565
28883
|
children: [
|
|
28566
28884
|
/* @__PURE__ */ jsx(
|
|
28567
28885
|
"input",
|
|
@@ -28577,7 +28895,7 @@ var init_UploadDropZone = __esm({
|
|
|
28577
28895
|
}
|
|
28578
28896
|
),
|
|
28579
28897
|
error ? /* @__PURE__ */ jsx(Icon, { name: "file-warning", size: "lg", className: "text-error mb-2" }) : /* @__PURE__ */ jsx(Icon, { name: "upload", size: "lg", className: "text-muted-foreground mb-2" }),
|
|
28580
|
-
/* @__PURE__ */ jsx(Typography, { variant: "body1", className: "text-center font-medium mb-1", children: isDragOver ? "
|
|
28898
|
+
/* @__PURE__ */ jsx(Typography, { variant: "body1", className: "text-center font-medium mb-1", children: isDragOver ? t("upload.dropFilesHere") : resolvedLabel }),
|
|
28581
28899
|
error ? /* @__PURE__ */ jsx(Typography, { variant: "caption", color: "error", className: "text-center", children: error }) : /* @__PURE__ */ jsx(Typography, { variant: "caption", color: "muted", className: "text-center", children: description ?? defaultDescription })
|
|
28582
28900
|
]
|
|
28583
28901
|
}
|
|
@@ -28999,7 +29317,7 @@ function TableView({
|
|
|
28999
29317
|
{
|
|
29000
29318
|
checked: selected.has(id),
|
|
29001
29319
|
onChange: () => toggleRow(id),
|
|
29002
|
-
"aria-label":
|
|
29320
|
+
"aria-label": t("table.selectRow", { id })
|
|
29003
29321
|
}
|
|
29004
29322
|
) }),
|
|
29005
29323
|
hasRenderProp ? /* @__PURE__ */ jsx(Box, { className: "flex-1 min-w-0", children: children(row, index) }) : colDefs.map((col) => {
|
|
@@ -31846,7 +32164,7 @@ var init_QrScanner = __esm({
|
|
|
31846
32164
|
className: "inset-0 flex-col items-center justify-center gap-2 bg-black bg-opacity-80 text-center",
|
|
31847
32165
|
children: [
|
|
31848
32166
|
/* @__PURE__ */ jsx(Icon, { name: "camera", className: "h-8 w-8 text-white", "aria-hidden": "true" }),
|
|
31849
|
-
/* @__PURE__ */ jsx(Typography, { variant: "body2", className: "text-white", children: "
|
|
32167
|
+
/* @__PURE__ */ jsx(Typography, { variant: "body2", className: "text-white", children: t("qrScanner.cameraUnavailable") }),
|
|
31850
32168
|
/* @__PURE__ */ jsx(Typography, { variant: "caption", className: "text-white opacity-70", children: cameraError.message })
|
|
31851
32169
|
]
|
|
31852
32170
|
}
|
|
@@ -31857,7 +32175,7 @@ var init_QrScanner = __esm({
|
|
|
31857
32175
|
position: "absolute",
|
|
31858
32176
|
display: "flex",
|
|
31859
32177
|
className: "inset-0 items-center justify-center bg-black bg-opacity-60",
|
|
31860
|
-
children: /* @__PURE__ */ jsx(Typography, { variant: "body2", className: "text-white", children: "
|
|
32178
|
+
children: /* @__PURE__ */ jsx(Typography, { variant: "body2", className: "text-white", children: t("qrScanner.paused") })
|
|
31861
32179
|
}
|
|
31862
32180
|
),
|
|
31863
32181
|
showCameraControls && /* @__PURE__ */ jsxs(
|
|
@@ -31876,7 +32194,7 @@ var init_QrScanner = __esm({
|
|
|
31876
32194
|
"rounded-full bg-black bg-opacity-60 p-2 text-white",
|
|
31877
32195
|
"hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
|
|
31878
32196
|
),
|
|
31879
|
-
"aria-label": isPaused ? "
|
|
32197
|
+
"aria-label": isPaused ? t("qrScanner.resumeScanning") : t("qrScanner.pauseScanning"),
|
|
31880
32198
|
children: isPaused ? /* @__PURE__ */ jsx(Icon, { name: "play", className: "h-4 w-4" }) : /* @__PURE__ */ jsx(Icon, { name: "pause", className: "h-4 w-4" })
|
|
31881
32199
|
}
|
|
31882
32200
|
),
|
|
@@ -31889,7 +32207,7 @@ var init_QrScanner = __esm({
|
|
|
31889
32207
|
"rounded-full bg-black bg-opacity-60 p-2 text-white",
|
|
31890
32208
|
"hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
|
|
31891
32209
|
),
|
|
31892
|
-
"aria-label":
|
|
32210
|
+
"aria-label": currentFacing === "environment" ? t("qrScanner.switchToFrontCamera") : t("qrScanner.switchToRearCamera"),
|
|
31893
32211
|
children: /* @__PURE__ */ jsx(Icon, { name: "refresh-cw", className: "h-4 w-4" })
|
|
31894
32212
|
}
|
|
31895
32213
|
),
|
|
@@ -31903,7 +32221,7 @@ var init_QrScanner = __esm({
|
|
|
31903
32221
|
"hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
|
|
31904
32222
|
),
|
|
31905
32223
|
"aria-label": t("aria.mockScanDev"),
|
|
31906
|
-
children: "
|
|
32224
|
+
children: t("qrScanner.mockScan")
|
|
31907
32225
|
}
|
|
31908
32226
|
)
|
|
31909
32227
|
]
|
|
@@ -31921,6 +32239,7 @@ var init_OptionConstraintGroup = __esm({
|
|
|
31921
32239
|
"components/core/molecules/OptionConstraintGroup.tsx"() {
|
|
31922
32240
|
init_cn();
|
|
31923
32241
|
init_useEventBus();
|
|
32242
|
+
init_useTranslate();
|
|
31924
32243
|
init_Typography();
|
|
31925
32244
|
init_Box();
|
|
31926
32245
|
init_Label();
|
|
@@ -31930,36 +32249,36 @@ var init_OptionConstraintGroup = __esm({
|
|
|
31930
32249
|
const sign = delta >= 0 ? "+" : "-";
|
|
31931
32250
|
return `${sign}$${Math.abs(delta).toFixed(2)}`;
|
|
31932
32251
|
};
|
|
31933
|
-
constraintHint = (constraint) => {
|
|
32252
|
+
constraintHint = (constraint, t) => {
|
|
31934
32253
|
if (constraint.type === "single") {
|
|
31935
|
-
return constraint.required ? "
|
|
32254
|
+
return constraint.required ? t("optionConstraint.requiredOne") : t("optionConstraint.optionalOne");
|
|
31936
32255
|
}
|
|
31937
32256
|
const { min, max } = constraint;
|
|
31938
32257
|
if (min && max) {
|
|
31939
|
-
return min === max ?
|
|
32258
|
+
return min === max ? t("optionConstraint.pickExactly", { count: min }) : t("optionConstraint.pickRange", { min, max });
|
|
31940
32259
|
}
|
|
31941
|
-
if (min) return
|
|
31942
|
-
if (max) return
|
|
31943
|
-
return "
|
|
32260
|
+
if (min) return t("optionConstraint.pickAtLeast", { count: min });
|
|
32261
|
+
if (max) return t("optionConstraint.pickUpTo", { count: max });
|
|
32262
|
+
return t("optionConstraint.optional");
|
|
31944
32263
|
};
|
|
31945
|
-
validateSelection = (selected, constraint) => {
|
|
32264
|
+
validateSelection = (selected, constraint, t) => {
|
|
31946
32265
|
if (constraint.type === "single") {
|
|
31947
32266
|
if (constraint.required && selected.length === 0) {
|
|
31948
|
-
return "
|
|
32267
|
+
return t("optionConstraint.error.pickOne");
|
|
31949
32268
|
}
|
|
31950
32269
|
if (selected.length > 1) {
|
|
31951
|
-
return "
|
|
32270
|
+
return t("optionConstraint.error.pickOnlyOne");
|
|
31952
32271
|
}
|
|
31953
32272
|
return void 0;
|
|
31954
32273
|
}
|
|
31955
32274
|
const { min, max } = constraint;
|
|
31956
32275
|
if (min !== void 0 && selected.length < min) {
|
|
31957
32276
|
const remaining = min - selected.length;
|
|
31958
|
-
return
|
|
32277
|
+
return t("optionConstraint.error.pickMore", { count: remaining });
|
|
31959
32278
|
}
|
|
31960
32279
|
if (max !== void 0 && selected.length > max) {
|
|
31961
32280
|
const excess = selected.length - max;
|
|
31962
|
-
return
|
|
32281
|
+
return t("optionConstraint.error.removeOptions", { count: excess });
|
|
31963
32282
|
}
|
|
31964
32283
|
return void 0;
|
|
31965
32284
|
};
|
|
@@ -31976,8 +32295,9 @@ var init_OptionConstraintGroup = __esm({
|
|
|
31976
32295
|
className
|
|
31977
32296
|
}) => {
|
|
31978
32297
|
const eventBus = useEventBus();
|
|
31979
|
-
const
|
|
31980
|
-
const
|
|
32298
|
+
const { t } = useTranslate();
|
|
32299
|
+
const hint = constraintHint(constraint, t);
|
|
32300
|
+
const error = validateSelection(selected, constraint, t);
|
|
31981
32301
|
const inputName = `option-${groupId}`;
|
|
31982
32302
|
const labelTextSize = size === "sm" ? "text-sm" : "text-base";
|
|
31983
32303
|
const optionGap = size === "sm" ? "gap-2" : "gap-2.5";
|
|
@@ -32077,7 +32397,7 @@ var init_OptionConstraintGroup = __esm({
|
|
|
32077
32397
|
variant: "caption",
|
|
32078
32398
|
color: "warning",
|
|
32079
32399
|
className: "rounded border border-warning/40 px-1.5 py-0.5",
|
|
32080
|
-
children: "
|
|
32400
|
+
children: t("optionConstraint.outOfStock")
|
|
32081
32401
|
}
|
|
32082
32402
|
)
|
|
32083
32403
|
]
|
|
@@ -32399,6 +32719,7 @@ function changeBlockType(block, type) {
|
|
|
32399
32719
|
return { id: block.id, type, content: seed };
|
|
32400
32720
|
}
|
|
32401
32721
|
function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
32722
|
+
const { t } = useTranslate();
|
|
32402
32723
|
const [open, setOpen] = useState(false);
|
|
32403
32724
|
const ref = useRef(null);
|
|
32404
32725
|
useEffect(() => {
|
|
@@ -32418,7 +32739,7 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
32418
32739
|
{
|
|
32419
32740
|
type: "button",
|
|
32420
32741
|
variant: "ghost",
|
|
32421
|
-
"aria-label": "
|
|
32742
|
+
"aria-label": t("richBlockEditor.blockActions"),
|
|
32422
32743
|
className: cn(
|
|
32423
32744
|
"inline-flex items-center justify-center",
|
|
32424
32745
|
"h-6 w-6 rounded-sm p-0 gap-0",
|
|
@@ -32440,7 +32761,7 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
32440
32761
|
"py-1 text-sm"
|
|
32441
32762
|
),
|
|
32442
32763
|
children: [
|
|
32443
|
-
/* @__PURE__ */ jsx(Box, { className: "px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground", children:
|
|
32764
|
+
/* @__PURE__ */ jsx(Box, { className: "px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground", children: t(BLOCK_TYPE_LABEL_KEY[block.type]) }),
|
|
32444
32765
|
/* @__PURE__ */ jsxs(
|
|
32445
32766
|
Button,
|
|
32446
32767
|
{
|
|
@@ -32454,7 +32775,8 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
32454
32775
|
},
|
|
32455
32776
|
children: [
|
|
32456
32777
|
/* @__PURE__ */ jsx(Icon, { name: "plus", className: "w-3.5 h-3.5" }),
|
|
32457
|
-
"
|
|
32778
|
+
" ",
|
|
32779
|
+
t("richBlockEditor.duplicate")
|
|
32458
32780
|
]
|
|
32459
32781
|
}
|
|
32460
32782
|
),
|
|
@@ -32471,14 +32793,15 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
32471
32793
|
},
|
|
32472
32794
|
children: [
|
|
32473
32795
|
/* @__PURE__ */ jsx(Icon, { name: "trash", className: "w-3.5 h-3.5" }),
|
|
32474
|
-
"
|
|
32796
|
+
" ",
|
|
32797
|
+
t("common.delete")
|
|
32475
32798
|
]
|
|
32476
32799
|
}
|
|
32477
32800
|
),
|
|
32478
32801
|
CHANGEABLE_TYPES.includes(block.type) && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
32479
32802
|
/* @__PURE__ */ jsx(Box, { className: "my-1 border-t border-border" }),
|
|
32480
|
-
/* @__PURE__ */ jsx(Box, { className: "px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground", children: "
|
|
32481
|
-
CHANGEABLE_TYPES.filter((
|
|
32803
|
+
/* @__PURE__ */ jsx(Box, { className: "px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground", children: t("richBlockEditor.turnInto") }),
|
|
32804
|
+
CHANGEABLE_TYPES.filter((bt) => bt !== block.type).map((bt) => /* @__PURE__ */ jsx(
|
|
32482
32805
|
Button,
|
|
32483
32806
|
{
|
|
32484
32807
|
type: "button",
|
|
@@ -32486,12 +32809,12 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
32486
32809
|
role: "menuitem",
|
|
32487
32810
|
className: "flex w-full items-center gap-2 px-2 py-1.5 text-left justify-start rounded-none",
|
|
32488
32811
|
onClick: () => {
|
|
32489
|
-
onChangeType(
|
|
32812
|
+
onChangeType(bt);
|
|
32490
32813
|
setOpen(false);
|
|
32491
32814
|
},
|
|
32492
|
-
children:
|
|
32815
|
+
children: t(BLOCK_TYPE_LABEL_KEY[bt])
|
|
32493
32816
|
},
|
|
32494
|
-
|
|
32817
|
+
bt
|
|
32495
32818
|
))
|
|
32496
32819
|
] })
|
|
32497
32820
|
]
|
|
@@ -32553,6 +32876,7 @@ function BlockRow({
|
|
|
32553
32876
|
onInsertAfter,
|
|
32554
32877
|
onChangeType
|
|
32555
32878
|
}) {
|
|
32879
|
+
const { t } = useTranslate();
|
|
32556
32880
|
const setContent = useCallback(
|
|
32557
32881
|
(next) => onUpdate((b) => ({ ...b, content: next })),
|
|
32558
32882
|
[onUpdate]
|
|
@@ -32602,8 +32926,8 @@ function BlockRow({
|
|
|
32602
32926
|
tag: "h1",
|
|
32603
32927
|
value: block.content ?? "",
|
|
32604
32928
|
readOnly,
|
|
32605
|
-
placeholder: placeholder ?? "
|
|
32606
|
-
ariaLabel: "
|
|
32929
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.heading1"),
|
|
32930
|
+
ariaLabel: t("richBlockEditor.aria.heading1Block"),
|
|
32607
32931
|
className: "text-3xl font-bold leading-tight",
|
|
32608
32932
|
onValueChange: setContent
|
|
32609
32933
|
}
|
|
@@ -32615,8 +32939,8 @@ function BlockRow({
|
|
|
32615
32939
|
tag: "h2",
|
|
32616
32940
|
value: block.content ?? "",
|
|
32617
32941
|
readOnly,
|
|
32618
|
-
placeholder: placeholder ?? "
|
|
32619
|
-
ariaLabel: "
|
|
32942
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.heading2"),
|
|
32943
|
+
ariaLabel: t("richBlockEditor.aria.heading2Block"),
|
|
32620
32944
|
className: "text-2xl font-semibold leading-tight",
|
|
32621
32945
|
onValueChange: setContent
|
|
32622
32946
|
}
|
|
@@ -32628,8 +32952,8 @@ function BlockRow({
|
|
|
32628
32952
|
tag: "h3",
|
|
32629
32953
|
value: block.content ?? "",
|
|
32630
32954
|
readOnly,
|
|
32631
|
-
placeholder: placeholder ?? "
|
|
32632
|
-
ariaLabel: "
|
|
32955
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.heading3"),
|
|
32956
|
+
ariaLabel: t("richBlockEditor.aria.heading3Block"),
|
|
32633
32957
|
className: "text-xl font-semibold leading-tight",
|
|
32634
32958
|
onValueChange: setContent
|
|
32635
32959
|
}
|
|
@@ -32641,8 +32965,8 @@ function BlockRow({
|
|
|
32641
32965
|
tag: "blockquote",
|
|
32642
32966
|
value: block.content ?? "",
|
|
32643
32967
|
readOnly,
|
|
32644
|
-
placeholder: placeholder ?? "
|
|
32645
|
-
ariaLabel: "
|
|
32968
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.quote"),
|
|
32969
|
+
ariaLabel: t("richBlockEditor.aria.quoteBlock"),
|
|
32646
32970
|
className: "border-l-4 border-primary/60 pl-4 italic text-muted-foreground",
|
|
32647
32971
|
onValueChange: setContent
|
|
32648
32972
|
}
|
|
@@ -32650,13 +32974,13 @@ function BlockRow({
|
|
|
32650
32974
|
case "code":
|
|
32651
32975
|
return /* @__PURE__ */ jsxs(Box, { className: "rounded-md border border-border bg-muted/40", children: [
|
|
32652
32976
|
/* @__PURE__ */ jsxs(Box, { className: "flex items-center justify-between border-b border-border px-3 py-1 text-xs text-muted-foreground", children: [
|
|
32653
|
-
/* @__PURE__ */ jsx(Typography, { as: "span", variant: "caption", className: "uppercase tracking-wide", children: "
|
|
32977
|
+
/* @__PURE__ */ jsx(Typography, { as: "span", variant: "caption", className: "uppercase tracking-wide", children: t("richBlockEditor.blockType.code") }),
|
|
32654
32978
|
!readOnly && /* @__PURE__ */ jsx(
|
|
32655
32979
|
Input,
|
|
32656
32980
|
{
|
|
32657
32981
|
inputType: "text",
|
|
32658
32982
|
value: String(block.metadata?.language ?? "plaintext"),
|
|
32659
|
-
"aria-label": "
|
|
32983
|
+
"aria-label": t("richBlockEditor.aria.codeLanguage"),
|
|
32660
32984
|
className: cn(
|
|
32661
32985
|
"h-6 w-32 rounded-sm border border-border bg-background",
|
|
32662
32986
|
"px-2 text-xs outline-none focus:ring-1 focus:ring-ring"
|
|
@@ -32672,8 +32996,8 @@ function BlockRow({
|
|
|
32672
32996
|
tag: "pre",
|
|
32673
32997
|
value: block.content ?? "",
|
|
32674
32998
|
readOnly,
|
|
32675
|
-
placeholder: placeholder ?? "
|
|
32676
|
-
ariaLabel: "
|
|
32999
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.code"),
|
|
33000
|
+
ariaLabel: t("richBlockEditor.aria.codeBlock"),
|
|
32677
33001
|
className: "block whitespace-pre-wrap p-3 font-mono text-sm leading-relaxed",
|
|
32678
33002
|
onValueChange: setContent
|
|
32679
33003
|
}
|
|
@@ -32686,7 +33010,7 @@ function BlockRow({
|
|
|
32686
33010
|
const caption = String(block.metadata?.caption ?? "");
|
|
32687
33011
|
const imgProps = {
|
|
32688
33012
|
src: url,
|
|
32689
|
-
alt: caption || "
|
|
33013
|
+
alt: caption || t("richBlockEditor.embeddedImage"),
|
|
32690
33014
|
className: "max-h-96 w-full rounded-md border border-border object-contain"
|
|
32691
33015
|
};
|
|
32692
33016
|
return /* @__PURE__ */ jsxs(Box, { className: "space-y-2", children: [
|
|
@@ -32700,7 +33024,8 @@ function BlockRow({
|
|
|
32700
33024
|
),
|
|
32701
33025
|
children: [
|
|
32702
33026
|
/* @__PURE__ */ jsx(Icon, { name: "image", className: "mr-2 w-4 h-4" }),
|
|
32703
|
-
"
|
|
33027
|
+
" ",
|
|
33028
|
+
t("richBlockEditor.noImageUrl")
|
|
32704
33029
|
]
|
|
32705
33030
|
}
|
|
32706
33031
|
),
|
|
@@ -32711,7 +33036,7 @@ function BlockRow({
|
|
|
32711
33036
|
inputType: "url",
|
|
32712
33037
|
value: url,
|
|
32713
33038
|
placeholder: "https://example.com/image.png",
|
|
32714
|
-
"aria-label": "
|
|
33039
|
+
"aria-label": t("richBlockEditor.aria.imageUrl"),
|
|
32715
33040
|
className: cn(
|
|
32716
33041
|
"h-8 flex-1 rounded-sm border border-border bg-background",
|
|
32717
33042
|
"px-2 text-sm outline-none focus:ring-1 focus:ring-ring"
|
|
@@ -32724,8 +33049,8 @@ function BlockRow({
|
|
|
32724
33049
|
{
|
|
32725
33050
|
inputType: "text",
|
|
32726
33051
|
value: caption,
|
|
32727
|
-
placeholder: "
|
|
32728
|
-
"aria-label": "
|
|
33052
|
+
placeholder: t("richBlockEditor.placeholder.caption"),
|
|
33053
|
+
"aria-label": t("richBlockEditor.aria.imageCaption"),
|
|
32729
33054
|
className: cn(
|
|
32730
33055
|
"h-8 flex-1 rounded-sm border border-border bg-background",
|
|
32731
33056
|
"px-2 text-sm outline-none focus:ring-1 focus:ring-ring"
|
|
@@ -32756,8 +33081,8 @@ function BlockRow({
|
|
|
32756
33081
|
tag: "span",
|
|
32757
33082
|
value: child.content ?? "",
|
|
32758
33083
|
readOnly,
|
|
32759
|
-
placeholder: "
|
|
32760
|
-
ariaLabel: "
|
|
33084
|
+
placeholder: t("richBlockEditor.placeholder.listItem"),
|
|
33085
|
+
ariaLabel: t("richBlockEditor.aria.listItem"),
|
|
32761
33086
|
className: "inline-block min-w-[1ch] flex-1",
|
|
32762
33087
|
onValueChange: (next) => setChildContent(child.id, next)
|
|
32763
33088
|
}
|
|
@@ -32767,7 +33092,7 @@ function BlockRow({
|
|
|
32767
33092
|
{
|
|
32768
33093
|
type: "button",
|
|
32769
33094
|
variant: "ghost",
|
|
32770
|
-
"aria-label": "
|
|
33095
|
+
"aria-label": t("richBlockEditor.aria.removeListItem"),
|
|
32771
33096
|
className: cn(
|
|
32772
33097
|
"h-5 w-5 shrink-0 rounded-sm text-muted-foreground p-0 gap-0",
|
|
32773
33098
|
"opacity-0 group-hover/item:opacity-100 hover:bg-muted hover:text-foreground"
|
|
@@ -32789,7 +33114,8 @@ function BlockRow({
|
|
|
32789
33114
|
onClick: addListItem,
|
|
32790
33115
|
children: [
|
|
32791
33116
|
/* @__PURE__ */ jsx(Icon, { name: "plus", className: "w-3 h-3" }),
|
|
32792
|
-
"
|
|
33117
|
+
" ",
|
|
33118
|
+
t("richBlockEditor.addItem")
|
|
32793
33119
|
]
|
|
32794
33120
|
}
|
|
32795
33121
|
) })
|
|
@@ -32805,8 +33131,8 @@ function BlockRow({
|
|
|
32805
33131
|
tag: "p",
|
|
32806
33132
|
value: block.content ?? "",
|
|
32807
33133
|
readOnly,
|
|
32808
|
-
placeholder: placeholder ?? "
|
|
32809
|
-
ariaLabel: "
|
|
33134
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.paragraph"),
|
|
33135
|
+
ariaLabel: t("richBlockEditor.aria.paragraphBlock"),
|
|
32810
33136
|
className: "leading-7",
|
|
32811
33137
|
onValueChange: setContent
|
|
32812
33138
|
}
|
|
@@ -32829,7 +33155,7 @@ function BlockRow({
|
|
|
32829
33155
|
{
|
|
32830
33156
|
type: "button",
|
|
32831
33157
|
variant: "ghost",
|
|
32832
|
-
"aria-label": "
|
|
33158
|
+
"aria-label": t("richBlockEditor.insertParagraphBelow"),
|
|
32833
33159
|
className: cn(
|
|
32834
33160
|
"inline-flex h-6 w-6 items-center justify-center rounded-sm p-0 gap-0",
|
|
32835
33161
|
"text-muted-foreground hover:bg-muted hover:text-foreground",
|
|
@@ -32856,7 +33182,7 @@ function BlockRow({
|
|
|
32856
33182
|
}
|
|
32857
33183
|
);
|
|
32858
33184
|
}
|
|
32859
|
-
var TOOLBAR_ENTRIES,
|
|
33185
|
+
var TOOLBAR_ENTRIES, BLOCK_TYPE_LABEL_KEY, CHANGEABLE_TYPES, _idSeq, BLOCK_TYPES, RichBlockEditor;
|
|
32860
33186
|
var init_RichBlockEditor = __esm({
|
|
32861
33187
|
"components/core/molecules/RichBlockEditor.tsx"() {
|
|
32862
33188
|
"use client";
|
|
@@ -32869,29 +33195,30 @@ var init_RichBlockEditor = __esm({
|
|
|
32869
33195
|
init_Input();
|
|
32870
33196
|
init_Icon();
|
|
32871
33197
|
init_useEventBus();
|
|
33198
|
+
init_useTranslate();
|
|
32872
33199
|
TOOLBAR_ENTRIES = [
|
|
32873
|
-
{ type: "paragraph",
|
|
32874
|
-
{ type: "heading-1",
|
|
32875
|
-
{ type: "heading-2",
|
|
32876
|
-
{ type: "heading-3",
|
|
32877
|
-
{ type: "bullet-list",
|
|
32878
|
-
{ type: "numbered-list",
|
|
32879
|
-
{ type: "quote",
|
|
32880
|
-
{ type: "code",
|
|
32881
|
-
{ type: "divider",
|
|
32882
|
-
{ type: "image",
|
|
33200
|
+
{ type: "paragraph", labelKey: "richBlockEditor.toolbar.text", icon: Type },
|
|
33201
|
+
{ type: "heading-1", labelKey: "richBlockEditor.toolbar.h1", icon: Heading1 },
|
|
33202
|
+
{ type: "heading-2", labelKey: "richBlockEditor.toolbar.h2", icon: Heading2 },
|
|
33203
|
+
{ type: "heading-3", labelKey: "richBlockEditor.toolbar.h3", icon: Heading3 },
|
|
33204
|
+
{ type: "bullet-list", labelKey: "richBlockEditor.toolbar.bulletList", icon: List },
|
|
33205
|
+
{ type: "numbered-list", labelKey: "richBlockEditor.toolbar.numbered", icon: ListOrdered },
|
|
33206
|
+
{ type: "quote", labelKey: "richBlockEditor.toolbar.quote", icon: Quote },
|
|
33207
|
+
{ type: "code", labelKey: "richBlockEditor.toolbar.code", icon: Code },
|
|
33208
|
+
{ type: "divider", labelKey: "richBlockEditor.toolbar.divider", icon: Minus },
|
|
33209
|
+
{ type: "image", labelKey: "richBlockEditor.toolbar.image", icon: Image$1 }
|
|
32883
33210
|
];
|
|
32884
|
-
|
|
32885
|
-
paragraph: "
|
|
32886
|
-
"heading-1": "
|
|
32887
|
-
"heading-2": "
|
|
32888
|
-
"heading-3": "
|
|
32889
|
-
"bullet-list": "
|
|
32890
|
-
"numbered-list": "
|
|
32891
|
-
quote: "
|
|
32892
|
-
code: "
|
|
32893
|
-
divider: "
|
|
32894
|
-
image: "
|
|
33211
|
+
BLOCK_TYPE_LABEL_KEY = {
|
|
33212
|
+
paragraph: "richBlockEditor.blockType.paragraph",
|
|
33213
|
+
"heading-1": "richBlockEditor.blockType.heading1",
|
|
33214
|
+
"heading-2": "richBlockEditor.blockType.heading2",
|
|
33215
|
+
"heading-3": "richBlockEditor.blockType.heading3",
|
|
33216
|
+
"bullet-list": "richBlockEditor.blockType.bulletList",
|
|
33217
|
+
"numbered-list": "richBlockEditor.blockType.numberedList",
|
|
33218
|
+
quote: "richBlockEditor.blockType.quote",
|
|
33219
|
+
code: "richBlockEditor.blockType.code",
|
|
33220
|
+
divider: "richBlockEditor.blockType.divider",
|
|
33221
|
+
image: "richBlockEditor.blockType.image"
|
|
32895
33222
|
};
|
|
32896
33223
|
CHANGEABLE_TYPES = [
|
|
32897
33224
|
"paragraph",
|
|
@@ -32925,6 +33252,7 @@ var init_RichBlockEditor = __esm({
|
|
|
32925
33252
|
showToolbar = true,
|
|
32926
33253
|
className
|
|
32927
33254
|
}) => {
|
|
33255
|
+
const { t } = useTranslate();
|
|
32928
33256
|
const [blocks, setBlocks] = useState(
|
|
32929
33257
|
() => normalizeBlocks(initialBlocks)
|
|
32930
33258
|
);
|
|
@@ -32996,25 +33324,26 @@ var init_RichBlockEditor = __esm({
|
|
|
32996
33324
|
Box,
|
|
32997
33325
|
{
|
|
32998
33326
|
role: "toolbar",
|
|
32999
|
-
"aria-label": "
|
|
33327
|
+
"aria-label": t("richBlockEditor.editorToolbar"),
|
|
33000
33328
|
className: cn(
|
|
33001
33329
|
"flex flex-wrap items-center gap-1",
|
|
33002
33330
|
"border-b border-border bg-muted/30 px-2 py-2"
|
|
33003
33331
|
),
|
|
33004
33332
|
children: TOOLBAR_ENTRIES.map((entry) => {
|
|
33005
33333
|
const Icon3 = entry.icon;
|
|
33334
|
+
const entryLabel = t(entry.labelKey);
|
|
33006
33335
|
return /* @__PURE__ */ jsxs(
|
|
33007
33336
|
Button,
|
|
33008
33337
|
{
|
|
33009
33338
|
type: "button",
|
|
33010
33339
|
variant: "ghost",
|
|
33011
33340
|
size: "sm",
|
|
33012
|
-
"aria-label":
|
|
33013
|
-
title:
|
|
33341
|
+
"aria-label": t("richBlockEditor.insertEntry", { label: entryLabel }),
|
|
33342
|
+
title: entryLabel,
|
|
33014
33343
|
onClick: () => handleAppend(entry.type),
|
|
33015
33344
|
children: [
|
|
33016
33345
|
/* @__PURE__ */ jsx(Icon3, { size: 14 }),
|
|
33017
|
-
/* @__PURE__ */ jsx(Typography, { as: "span", variant: "caption", className: "ml-1 hidden text-xs sm:inline", children:
|
|
33346
|
+
/* @__PURE__ */ jsx(Typography, { as: "span", variant: "caption", className: "ml-1 hidden text-xs sm:inline", children: entryLabel })
|
|
33018
33347
|
]
|
|
33019
33348
|
},
|
|
33020
33349
|
entry.type
|
|
@@ -33057,6 +33386,7 @@ var init_ReplyTree = __esm({
|
|
|
33057
33386
|
"use client";
|
|
33058
33387
|
init_cn();
|
|
33059
33388
|
init_useEventBus();
|
|
33389
|
+
init_useTranslate();
|
|
33060
33390
|
init_atoms2();
|
|
33061
33391
|
init_VoteStack();
|
|
33062
33392
|
ReplyTreeNode = ({
|
|
@@ -33076,6 +33406,7 @@ var init_ReplyTree = __esm({
|
|
|
33076
33406
|
showActions
|
|
33077
33407
|
}) => {
|
|
33078
33408
|
const eventBus = useEventBus();
|
|
33409
|
+
const { t } = useTranslate();
|
|
33079
33410
|
const hasReplies = !!node.replies && node.replies.length > 0;
|
|
33080
33411
|
const isCollapsed = collapsedSet.has(node.id);
|
|
33081
33412
|
const atMaxDepth = depth >= maxDepth;
|
|
@@ -33122,7 +33453,7 @@ var init_ReplyTree = __esm({
|
|
|
33122
33453
|
variant: "ghost",
|
|
33123
33454
|
size: "sm",
|
|
33124
33455
|
onClick: handleToggle,
|
|
33125
|
-
"aria-label": isCollapsed ? "
|
|
33456
|
+
"aria-label": isCollapsed ? t("replyTree.expandReplies") : t("replyTree.collapseReplies"),
|
|
33126
33457
|
"aria-expanded": !isCollapsed,
|
|
33127
33458
|
leftIcon: isCollapsed ? "chevron-right" : "chevron-down",
|
|
33128
33459
|
className: cn(
|
|
@@ -33163,7 +33494,7 @@ var init_ReplyTree = __esm({
|
|
|
33163
33494
|
onVote: handleVote,
|
|
33164
33495
|
size: "sm",
|
|
33165
33496
|
variant: "horizontal",
|
|
33166
|
-
label:
|
|
33497
|
+
label: t("replyTree.voteOnReplyBy", { author: node.authorName })
|
|
33167
33498
|
}
|
|
33168
33499
|
),
|
|
33169
33500
|
/* @__PURE__ */ jsx(
|
|
@@ -33173,8 +33504,8 @@ var init_ReplyTree = __esm({
|
|
|
33173
33504
|
size: "sm",
|
|
33174
33505
|
leftIcon: "message-square",
|
|
33175
33506
|
onClick: handleReply,
|
|
33176
|
-
"aria-label":
|
|
33177
|
-
children: "
|
|
33507
|
+
"aria-label": t("replyTree.replyTo", { author: node.authorName }),
|
|
33508
|
+
children: t("replyTree.reply")
|
|
33178
33509
|
}
|
|
33179
33510
|
),
|
|
33180
33511
|
/* @__PURE__ */ jsx(
|
|
@@ -33184,8 +33515,8 @@ var init_ReplyTree = __esm({
|
|
|
33184
33515
|
size: "sm",
|
|
33185
33516
|
leftIcon: "flag",
|
|
33186
33517
|
onClick: handleFlag,
|
|
33187
|
-
"aria-label":
|
|
33188
|
-
children: "
|
|
33518
|
+
"aria-label": t("replyTree.flagReplyBy", { author: node.authorName }),
|
|
33519
|
+
children: t("replyTree.flag")
|
|
33189
33520
|
}
|
|
33190
33521
|
)
|
|
33191
33522
|
] }),
|
|
@@ -33196,9 +33527,9 @@ var init_ReplyTree = __esm({
|
|
|
33196
33527
|
inputType: "textarea",
|
|
33197
33528
|
rows: 2,
|
|
33198
33529
|
value: draft,
|
|
33199
|
-
placeholder:
|
|
33530
|
+
placeholder: t("replyTree.replyToPlaceholder", { author: node.authorName }),
|
|
33200
33531
|
onChange: (e) => setDraft(e.target.value),
|
|
33201
|
-
"aria-label":
|
|
33532
|
+
"aria-label": t("replyTree.replyTo", { author: node.authorName })
|
|
33202
33533
|
}
|
|
33203
33534
|
),
|
|
33204
33535
|
/* @__PURE__ */ jsxs(Box, { className: "flex flex-row gap-2 items-center", children: [
|
|
@@ -33210,10 +33541,10 @@ var init_ReplyTree = __esm({
|
|
|
33210
33541
|
leftIcon: "send",
|
|
33211
33542
|
onClick: handleSubmitReply,
|
|
33212
33543
|
disabled: !draft.trim(),
|
|
33213
|
-
children: "
|
|
33544
|
+
children: t("replyTree.send")
|
|
33214
33545
|
}
|
|
33215
33546
|
),
|
|
33216
|
-
/* @__PURE__ */ jsx(Button, { variant: "ghost", size: "sm", onClick: handleCancelReply, children: "
|
|
33547
|
+
/* @__PURE__ */ jsx(Button, { variant: "ghost", size: "sm", onClick: handleCancelReply, children: t("common.cancel") })
|
|
33217
33548
|
] })
|
|
33218
33549
|
] }),
|
|
33219
33550
|
hasReplies && !isCollapsed && (atMaxDepth ? /* @__PURE__ */ jsx(
|
|
@@ -33227,7 +33558,7 @@ var init_ReplyTree = __esm({
|
|
|
33227
33558
|
"self-start gap-1 px-0 h-auto",
|
|
33228
33559
|
"text-sm text-primary hover:underline hover:bg-transparent"
|
|
33229
33560
|
),
|
|
33230
|
-
children: "
|
|
33561
|
+
children: t("replyTree.continueThread")
|
|
33231
33562
|
}
|
|
33232
33563
|
) : /* @__PURE__ */ jsx(Box, { className: "flex flex-col gap-2 mt-1", children: node.replies.map((child) => /* @__PURE__ */ jsx(
|
|
33233
33564
|
ReplyTreeNode,
|
|
@@ -33266,6 +33597,7 @@ var init_ReplyTree = __esm({
|
|
|
33266
33597
|
showActions = true,
|
|
33267
33598
|
className
|
|
33268
33599
|
}) => {
|
|
33600
|
+
const { t } = useTranslate();
|
|
33269
33601
|
const nodeList = Array.isArray(nodes) ? nodes : nodes ? [nodes] : [];
|
|
33270
33602
|
const [collapsedSet, setCollapsedSet] = useState(() => {
|
|
33271
33603
|
const acc = /* @__PURE__ */ new Set();
|
|
@@ -33284,7 +33616,7 @@ var init_ReplyTree = __esm({
|
|
|
33284
33616
|
});
|
|
33285
33617
|
}, []);
|
|
33286
33618
|
if (nodeList.length === 0) {
|
|
33287
|
-
return /* @__PURE__ */ jsx(Box, { className: cn("text-sm text-muted-foreground", className), children: "
|
|
33619
|
+
return /* @__PURE__ */ jsx(Box, { className: cn("text-sm text-muted-foreground", className), children: t("replyTree.noRepliesYet") });
|
|
33288
33620
|
}
|
|
33289
33621
|
return /* @__PURE__ */ jsx(Box, { className: cn("flex flex-col gap-2 min-w-0", className), children: nodeList.map((node) => /* @__PURE__ */ jsx(
|
|
33290
33622
|
ReplyTreeNode,
|
|
@@ -33362,6 +33694,7 @@ var init_VersionDiff = __esm({
|
|
|
33362
33694
|
"use client";
|
|
33363
33695
|
init_cn();
|
|
33364
33696
|
init_useEventBus();
|
|
33697
|
+
init_useTranslate();
|
|
33365
33698
|
init_atoms2();
|
|
33366
33699
|
init_Stack();
|
|
33367
33700
|
INLINE_STYLES = {
|
|
@@ -33384,6 +33717,7 @@ var init_VersionDiff = __esm({
|
|
|
33384
33717
|
language,
|
|
33385
33718
|
className
|
|
33386
33719
|
}) => {
|
|
33720
|
+
const { t } = useTranslate();
|
|
33387
33721
|
const eventBus = useEventBus();
|
|
33388
33722
|
const revisions = Array.isArray(revisionsProp) ? revisionsProp : [];
|
|
33389
33723
|
const fallbackBefore = revisions[0]?.id ?? "";
|
|
@@ -33465,24 +33799,24 @@ var init_VersionDiff = __esm({
|
|
|
33465
33799
|
children: [
|
|
33466
33800
|
/* @__PURE__ */ jsxs(HStack, { gap: "sm", align: "center", className: "flex-wrap", children: [
|
|
33467
33801
|
/* @__PURE__ */ jsx(Icon, { name: "git-commit", size: "sm", className: "text-muted-foreground" }),
|
|
33468
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "whitespace-nowrap", children: "
|
|
33802
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "whitespace-nowrap", children: t("versionDiff.compare") }),
|
|
33469
33803
|
/* @__PURE__ */ jsx(Box, { className: "min-w-0 md:min-w-[160px]", children: /* @__PURE__ */ jsx(
|
|
33470
33804
|
Select,
|
|
33471
33805
|
{
|
|
33472
33806
|
options,
|
|
33473
33807
|
value: activeBeforeId,
|
|
33474
33808
|
onChange: handleBeforeChange,
|
|
33475
|
-
"aria-label": "
|
|
33809
|
+
"aria-label": t("versionDiff.beforeRevision")
|
|
33476
33810
|
}
|
|
33477
33811
|
) }),
|
|
33478
|
-
/* @__PURE__ */ jsx(Typography, { variant: "caption", color: "secondary", children: "to" }),
|
|
33812
|
+
/* @__PURE__ */ jsx(Typography, { variant: "caption", color: "secondary", children: t("versionDiff.to") }),
|
|
33479
33813
|
/* @__PURE__ */ jsx(Box, { className: "min-w-0 md:min-w-[160px]", children: /* @__PURE__ */ jsx(
|
|
33480
33814
|
Select,
|
|
33481
33815
|
{
|
|
33482
33816
|
options,
|
|
33483
33817
|
value: activeAfterId,
|
|
33484
33818
|
onChange: handleAfterChange,
|
|
33485
|
-
"aria-label": "
|
|
33819
|
+
"aria-label": t("versionDiff.afterRevision")
|
|
33486
33820
|
}
|
|
33487
33821
|
) }),
|
|
33488
33822
|
language && /* @__PURE__ */ jsx(Badge, { variant: "default", children: language }),
|
|
@@ -33503,7 +33837,7 @@ var init_VersionDiff = __esm({
|
|
|
33503
33837
|
size: "sm",
|
|
33504
33838
|
icon: activeView === "side-by-side" ? "align-left" : "columns",
|
|
33505
33839
|
onClick: handleViewToggle,
|
|
33506
|
-
"aria-label": activeView === "side-by-side" ? "
|
|
33840
|
+
"aria-label": activeView === "side-by-side" ? t("versionDiff.switchToInline") : t("versionDiff.switchToSideBySide")
|
|
33507
33841
|
}
|
|
33508
33842
|
),
|
|
33509
33843
|
(onRevert || revertEvent) && /* @__PURE__ */ jsx(
|
|
@@ -33513,7 +33847,7 @@ var init_VersionDiff = __esm({
|
|
|
33513
33847
|
size: "sm",
|
|
33514
33848
|
icon: "rotate-ccw",
|
|
33515
33849
|
onClick: handleRevert,
|
|
33516
|
-
children: "
|
|
33850
|
+
children: t("versionDiff.revert")
|
|
33517
33851
|
}
|
|
33518
33852
|
)
|
|
33519
33853
|
] })
|
|
@@ -33530,12 +33864,12 @@ var init_VersionDiff = __esm({
|
|
|
33530
33864
|
children: [
|
|
33531
33865
|
/* @__PURE__ */ jsxs(Typography, { variant: "caption", color: "secondary", className: "truncate", children: [
|
|
33532
33866
|
beforeRev?.label,
|
|
33533
|
-
beforeRev?.author ?
|
|
33867
|
+
beforeRev?.author ? t("versionDiff.byAuthor", { author: beforeRev.author }) : "",
|
|
33534
33868
|
beforeRev?.timestamp ? ` (${beforeRev.timestamp})` : ""
|
|
33535
33869
|
] }),
|
|
33536
33870
|
/* @__PURE__ */ jsxs(Typography, { variant: "caption", color: "secondary", className: "truncate", children: [
|
|
33537
33871
|
afterRev?.label,
|
|
33538
|
-
afterRev?.author ?
|
|
33872
|
+
afterRev?.author ? t("versionDiff.byAuthor", { author: afterRev.author }) : "",
|
|
33539
33873
|
afterRev?.timestamp ? ` (${afterRev.timestamp})` : ""
|
|
33540
33874
|
] })
|
|
33541
33875
|
]
|
|
@@ -33928,10 +34262,12 @@ var init_DocPagination = __esm({
|
|
|
33928
34262
|
}
|
|
33929
34263
|
});
|
|
33930
34264
|
function DocSearch({
|
|
33931
|
-
placeholder
|
|
34265
|
+
placeholder,
|
|
33932
34266
|
onSearch,
|
|
33933
34267
|
className
|
|
33934
34268
|
}) {
|
|
34269
|
+
const { t } = useTranslate();
|
|
34270
|
+
const resolvedPlaceholder = placeholder ?? t("docSearch.placeholder");
|
|
33935
34271
|
const [query, setQuery] = useState("");
|
|
33936
34272
|
const [results, setResults] = useState([]);
|
|
33937
34273
|
const [isOpen, setIsOpen] = useState(false);
|
|
@@ -34038,7 +34374,7 @@ function DocSearch({
|
|
|
34038
34374
|
Input,
|
|
34039
34375
|
{
|
|
34040
34376
|
inputType: "search",
|
|
34041
|
-
placeholder,
|
|
34377
|
+
placeholder: resolvedPlaceholder,
|
|
34042
34378
|
value: query,
|
|
34043
34379
|
onChange: handleChange,
|
|
34044
34380
|
onFocus: handleFocus,
|
|
@@ -34103,6 +34439,7 @@ var init_DocSearch = __esm({
|
|
|
34103
34439
|
init_Typography();
|
|
34104
34440
|
init_Icon();
|
|
34105
34441
|
init_Input();
|
|
34442
|
+
init_useTranslate();
|
|
34106
34443
|
}
|
|
34107
34444
|
});
|
|
34108
34445
|
var DocSidebarCategory, DocSidebar;
|
|
@@ -36235,8 +36572,8 @@ var init_SignaturePad = __esm({
|
|
|
36235
36572
|
init_useEventBus();
|
|
36236
36573
|
init_useTranslate();
|
|
36237
36574
|
SignaturePad = ({
|
|
36238
|
-
label
|
|
36239
|
-
helperText
|
|
36575
|
+
label,
|
|
36576
|
+
helperText,
|
|
36240
36577
|
strokeColor,
|
|
36241
36578
|
strokeWidth = 2,
|
|
36242
36579
|
height = 200,
|
|
@@ -36252,6 +36589,8 @@ var init_SignaturePad = __esm({
|
|
|
36252
36589
|
}) => {
|
|
36253
36590
|
const eventBus = useEventBus();
|
|
36254
36591
|
const { t } = useTranslate();
|
|
36592
|
+
const resolvedLabel = label ?? t("signaturePad.label");
|
|
36593
|
+
const resolvedHelperText = helperText ?? t("signaturePad.helperText");
|
|
36255
36594
|
const canvasRef = useRef(null);
|
|
36256
36595
|
const [isDrawing, setIsDrawing] = useState(false);
|
|
36257
36596
|
const [hasSignature, setHasSignature] = useState(!!value);
|
|
@@ -36354,7 +36693,7 @@ var init_SignaturePad = __esm({
|
|
|
36354
36693
|
);
|
|
36355
36694
|
}
|
|
36356
36695
|
return /* @__PURE__ */ jsx(Card, { className: cn("p-4", className), children: /* @__PURE__ */ jsxs(VStack, { gap: "sm", children: [
|
|
36357
|
-
|
|
36696
|
+
resolvedLabel && /* @__PURE__ */ jsx(Typography, { variant: "label", weight: "medium", children: resolvedLabel }),
|
|
36358
36697
|
/* @__PURE__ */ jsx(
|
|
36359
36698
|
Box,
|
|
36360
36699
|
{
|
|
@@ -36383,7 +36722,7 @@ var init_SignaturePad = __esm({
|
|
|
36383
36722
|
)
|
|
36384
36723
|
}
|
|
36385
36724
|
),
|
|
36386
|
-
|
|
36725
|
+
resolvedHelperText && /* @__PURE__ */ jsx(Typography, { variant: "caption", color: "secondary", children: resolvedHelperText }),
|
|
36387
36726
|
!readOnly && /* @__PURE__ */ jsxs(HStack, { gap: "sm", justify: "end", children: [
|
|
36388
36727
|
/* @__PURE__ */ jsx(
|
|
36389
36728
|
Button,
|
|
@@ -36393,7 +36732,7 @@ var init_SignaturePad = __esm({
|
|
|
36393
36732
|
icon: Eraser,
|
|
36394
36733
|
onClick: clearSignature,
|
|
36395
36734
|
disabled: !hasSignature,
|
|
36396
|
-
children: "
|
|
36735
|
+
children: t("signaturePad.clear")
|
|
36397
36736
|
}
|
|
36398
36737
|
),
|
|
36399
36738
|
signEvent && /* @__PURE__ */ jsx(
|
|
@@ -36404,7 +36743,7 @@ var init_SignaturePad = __esm({
|
|
|
36404
36743
|
icon: Check,
|
|
36405
36744
|
onClick: confirmSignature,
|
|
36406
36745
|
disabled: !hasSignature,
|
|
36407
|
-
children: "
|
|
36746
|
+
children: t("signaturePad.confirm")
|
|
36408
36747
|
}
|
|
36409
36748
|
)
|
|
36410
36749
|
] })
|
|
@@ -41071,6 +41410,7 @@ function MasterDetail({
|
|
|
41071
41410
|
className,
|
|
41072
41411
|
...rest
|
|
41073
41412
|
}) {
|
|
41413
|
+
const { t } = useTranslate();
|
|
41074
41414
|
const loading = externalLoading ?? false;
|
|
41075
41415
|
const isLoading = externalIsLoading ?? false;
|
|
41076
41416
|
const error = externalError ?? null;
|
|
@@ -41083,8 +41423,8 @@ function MasterDetail({
|
|
|
41083
41423
|
isLoading: loading || isLoading,
|
|
41084
41424
|
error,
|
|
41085
41425
|
className,
|
|
41086
|
-
emptyTitle: "
|
|
41087
|
-
emptyDescription: "
|
|
41426
|
+
emptyTitle: t("table.empty.title"),
|
|
41427
|
+
emptyDescription: t("empty.createFirst"),
|
|
41088
41428
|
...rest
|
|
41089
41429
|
}
|
|
41090
41430
|
);
|
|
@@ -41093,6 +41433,7 @@ var init_MasterDetail = __esm({
|
|
|
41093
41433
|
"components/core/organisms/MasterDetail.tsx"() {
|
|
41094
41434
|
"use client";
|
|
41095
41435
|
init_DataTable();
|
|
41436
|
+
init_useTranslate();
|
|
41096
41437
|
MasterDetail.displayName = "MasterDetail";
|
|
41097
41438
|
}
|
|
41098
41439
|
});
|
|
@@ -41101,14 +41442,18 @@ var init_MasterDetailLayout = __esm({
|
|
|
41101
41442
|
"components/core/organisms/layout/MasterDetailLayout.tsx"() {
|
|
41102
41443
|
init_cn();
|
|
41103
41444
|
init_Typography();
|
|
41104
|
-
|
|
41105
|
-
|
|
41106
|
-
{
|
|
41107
|
-
|
|
41108
|
-
|
|
41109
|
-
|
|
41110
|
-
|
|
41111
|
-
|
|
41445
|
+
init_useTranslate();
|
|
41446
|
+
DefaultEmptyDetail = () => {
|
|
41447
|
+
const { t } = useTranslate();
|
|
41448
|
+
return /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center h-full border-2 border-dashed border-border", children: /* @__PURE__ */ jsx(
|
|
41449
|
+
Typography,
|
|
41450
|
+
{
|
|
41451
|
+
variant: "body2",
|
|
41452
|
+
className: "text-muted-foreground",
|
|
41453
|
+
children: t("masterDetail.selectItem")
|
|
41454
|
+
}
|
|
41455
|
+
) });
|
|
41456
|
+
};
|
|
41112
41457
|
MasterDetailLayout = ({
|
|
41113
41458
|
master,
|
|
41114
41459
|
detail,
|
|
@@ -41235,7 +41580,7 @@ var init_MediaGallery = __esm({
|
|
|
41235
41580
|
{
|
|
41236
41581
|
icon: Image$1,
|
|
41237
41582
|
title: t("display.noMedia"),
|
|
41238
|
-
description: "
|
|
41583
|
+
description: t("mediaGallery.noMediaDescription"),
|
|
41239
41584
|
className
|
|
41240
41585
|
}
|
|
41241
41586
|
);
|
|
@@ -41252,7 +41597,7 @@ var init_MediaGallery = __esm({
|
|
|
41252
41597
|
size: "sm",
|
|
41253
41598
|
icon: Upload,
|
|
41254
41599
|
action: "MEDIA_UPLOAD",
|
|
41255
|
-
children: "
|
|
41600
|
+
children: t("mediaGallery.upload")
|
|
41256
41601
|
}
|
|
41257
41602
|
),
|
|
41258
41603
|
actions?.map((action, idx) => /* @__PURE__ */ jsx(
|
|
@@ -41266,10 +41611,7 @@ var init_MediaGallery = __esm({
|
|
|
41266
41611
|
))
|
|
41267
41612
|
] })
|
|
41268
41613
|
] }),
|
|
41269
|
-
selectable && selectedItems.length > 0 && /* @__PURE__ */ jsx(HStack, { gap: "sm", align: "center", children: /* @__PURE__ */
|
|
41270
|
-
selectedItems.length,
|
|
41271
|
-
" selected"
|
|
41272
|
-
] }) }),
|
|
41614
|
+
selectable && selectedItems.length > 0 && /* @__PURE__ */ jsx(HStack, { gap: "sm", align: "center", children: /* @__PURE__ */ jsx(Badge, { variant: "info", children: t("table.bulk.selected", { count: selectedItems.length }) }) }),
|
|
41273
41615
|
/* @__PURE__ */ jsx(
|
|
41274
41616
|
Box,
|
|
41275
41617
|
{
|
|
@@ -42262,7 +42604,7 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
42262
42604
|
EmptyState,
|
|
42263
42605
|
{
|
|
42264
42606
|
title: t("debug.noActiveTraits"),
|
|
42265
|
-
description: "
|
|
42607
|
+
description: t("debug.traitsMountHint"),
|
|
42266
42608
|
className: "py-8"
|
|
42267
42609
|
}
|
|
42268
42610
|
);
|
|
@@ -42272,14 +42614,11 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
42272
42614
|
header: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 w-full", children: [
|
|
42273
42615
|
/* @__PURE__ */ jsx(Typography, { variant: "body", weight: "semibold", className: "text-purple-600 dark:text-purple-400", children: trait.name }),
|
|
42274
42616
|
/* @__PURE__ */ jsx(Badge, { variant: "success", size: "sm", children: trait.currentState }),
|
|
42275
|
-
/* @__PURE__ */
|
|
42276
|
-
trait.transitionCount,
|
|
42277
|
-
" transitions"
|
|
42278
|
-
] })
|
|
42617
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-500 ml-auto", children: t("debug.transitionsCount", { count: trait.transitionCount }) })
|
|
42279
42618
|
] }),
|
|
42280
42619
|
content: /* @__PURE__ */ jsxs(Stack, { gap: "sm", children: [
|
|
42281
42620
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
42282
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: "
|
|
42621
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.states") }),
|
|
42283
42622
|
/* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1", children: trait.states.map((state) => /* @__PURE__ */ jsx(
|
|
42284
42623
|
Badge,
|
|
42285
42624
|
{
|
|
@@ -42291,7 +42630,7 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
42291
42630
|
)) })
|
|
42292
42631
|
] }),
|
|
42293
42632
|
trait.transitions.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
|
|
42294
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: "
|
|
42633
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.transitions") }),
|
|
42295
42634
|
/* @__PURE__ */ jsx(Stack, { gap: "xs", children: trait.transitions.map((t2, i) => /* @__PURE__ */ jsxs(Typography, { variant: "small", className: "font-mono", children: [
|
|
42296
42635
|
t2.from,
|
|
42297
42636
|
" \u2192 ",
|
|
@@ -42310,7 +42649,7 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
42310
42649
|
] }, i)) })
|
|
42311
42650
|
] }),
|
|
42312
42651
|
trait.guards.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
|
|
42313
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: "
|
|
42652
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.guards") }),
|
|
42314
42653
|
/* @__PURE__ */ jsx(Stack, { gap: "xs", children: trait.guards.map((g, i) => /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
|
|
42315
42654
|
/* @__PURE__ */ jsx(Typography, { variant: "small", children: g.name }),
|
|
42316
42655
|
/* @__PURE__ */ jsx(Badge, { variant: g.lastResult === true ? "success" : g.lastResult === false ? "danger" : "default", size: "sm", children: g.lastResult === void 0 ? "?" : g.lastResult ? "\u2713" : "\u2717" })
|
|
@@ -42416,7 +42755,7 @@ function EntitiesTab({ snapshot }) {
|
|
|
42416
42755
|
EmptyState,
|
|
42417
42756
|
{
|
|
42418
42757
|
title: t("debug.noEntityData"),
|
|
42419
|
-
description: "
|
|
42758
|
+
description: t("debug.debugModeHint"),
|
|
42420
42759
|
className: "py-8"
|
|
42421
42760
|
}
|
|
42422
42761
|
);
|
|
@@ -42429,7 +42768,7 @@ function EntitiesTab({ snapshot }) {
|
|
|
42429
42768
|
EmptyState,
|
|
42430
42769
|
{
|
|
42431
42770
|
title: t("debug.noEntities"),
|
|
42432
|
-
description: "
|
|
42771
|
+
description: t("debug.entitiesSpawnHint"),
|
|
42433
42772
|
className: "py-8"
|
|
42434
42773
|
}
|
|
42435
42774
|
);
|
|
@@ -42437,7 +42776,7 @@ function EntitiesTab({ snapshot }) {
|
|
|
42437
42776
|
const singletonItems = singletonEntries.map(([name, data]) => ({
|
|
42438
42777
|
id: `singleton-${name}`,
|
|
42439
42778
|
header: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
42440
|
-
/* @__PURE__ */ jsx(Badge, { variant: "primary", size: "sm", children: "
|
|
42779
|
+
/* @__PURE__ */ jsx(Badge, { variant: "primary", size: "sm", children: t("debug.singleton") }),
|
|
42441
42780
|
/* @__PURE__ */ jsx(Typography, { variant: "body", weight: "semibold", className: "text-sky-600 dark:text-sky-400", children: name })
|
|
42442
42781
|
] }),
|
|
42443
42782
|
content: /* @__PURE__ */ 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) })
|
|
@@ -42455,31 +42794,19 @@ function EntitiesTab({ snapshot }) {
|
|
|
42455
42794
|
}));
|
|
42456
42795
|
return /* @__PURE__ */ jsxs("div", { className: "debug-tab debug-tab--entities", children: [
|
|
42457
42796
|
singletonItems.length > 0 && /* @__PURE__ */ jsxs("div", { className: "mb-4", children: [
|
|
42458
|
-
/* @__PURE__ */
|
|
42459
|
-
"Singletons (",
|
|
42460
|
-
singletonItems.length,
|
|
42461
|
-
")"
|
|
42462
|
-
] }),
|
|
42797
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.singletonsCount", { count: singletonItems.length }) }),
|
|
42463
42798
|
/* @__PURE__ */ jsx(Accordion, { items: singletonItems, multiple: true })
|
|
42464
42799
|
] }),
|
|
42465
42800
|
runtimeItems.length > 0 && /* @__PURE__ */ jsxs("div", { className: "mb-4", children: [
|
|
42466
|
-
/* @__PURE__ */
|
|
42467
|
-
"Runtime (",
|
|
42468
|
-
runtimeEntities.length,
|
|
42469
|
-
")"
|
|
42470
|
-
] }),
|
|
42801
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.runtimeCount", { count: runtimeEntities.length }) }),
|
|
42471
42802
|
/* @__PURE__ */ jsx(Accordion, { items: runtimeItems, multiple: true }),
|
|
42472
|
-
runtimeEntities.length > 20 && /* @__PURE__ */
|
|
42473
|
-
"+",
|
|
42474
|
-
runtimeEntities.length - 20,
|
|
42475
|
-
" more entities"
|
|
42476
|
-
] })
|
|
42803
|
+
runtimeEntities.length > 20 && /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-400 text-center mt-2", children: t("debug.moreEntities", { count: runtimeEntities.length - 20 }) })
|
|
42477
42804
|
] }),
|
|
42478
42805
|
persistentEntries.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
|
|
42479
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: "
|
|
42806
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.persistent") }),
|
|
42480
42807
|
/* @__PURE__ */ jsx(Stack, { gap: "xs", children: persistentEntries.map(([type, info]) => /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between py-1", children: [
|
|
42481
42808
|
/* @__PURE__ */ jsx(Typography, { variant: "small", children: type }),
|
|
42482
|
-
/* @__PURE__ */ jsx(Badge, { variant: info.loaded ? "success" : "default", size: "sm", children: info.loaded ?
|
|
42809
|
+
/* @__PURE__ */ jsx(Badge, { variant: info.loaded ? "success" : "default", size: "sm", children: info.loaded ? t("debug.loadedCount", { count: info.count }) : t("debug.notLoaded") })
|
|
42483
42810
|
] }, type)) })
|
|
42484
42811
|
] })
|
|
42485
42812
|
] });
|
|
@@ -42523,7 +42850,7 @@ function EventFlowTab({ events: events2 }) {
|
|
|
42523
42850
|
EmptyState,
|
|
42524
42851
|
{
|
|
42525
42852
|
title: t("debug.noEventsYet"),
|
|
42526
|
-
description: "
|
|
42853
|
+
description: t("debug.eventsExecuteHint"),
|
|
42527
42854
|
className: "py-8"
|
|
42528
42855
|
}
|
|
42529
42856
|
);
|
|
@@ -42534,17 +42861,13 @@ function EventFlowTab({ events: events2 }) {
|
|
|
42534
42861
|
return /* @__PURE__ */ jsxs("div", { className: "debug-tab debug-tab--events", children: [
|
|
42535
42862
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 mb-3 flex-wrap", children: [
|
|
42536
42863
|
/* @__PURE__ */ jsxs(ButtonGroup, { children: [
|
|
42537
|
-
/* @__PURE__ */
|
|
42864
|
+
/* @__PURE__ */ jsx(
|
|
42538
42865
|
Button,
|
|
42539
42866
|
{
|
|
42540
42867
|
size: "sm",
|
|
42541
42868
|
variant: filter === "all" ? "primary" : "secondary",
|
|
42542
42869
|
onClick: () => setFilter("all"),
|
|
42543
|
-
children:
|
|
42544
|
-
"All (",
|
|
42545
|
-
events2.length,
|
|
42546
|
-
")"
|
|
42547
|
-
]
|
|
42870
|
+
children: t("debug.allCount", { count: events2.length })
|
|
42548
42871
|
}
|
|
42549
42872
|
),
|
|
42550
42873
|
eventTypes.map((type) => {
|
|
@@ -42574,7 +42897,7 @@ function EventFlowTab({ events: events2 }) {
|
|
|
42574
42897
|
onChange: (e) => setAutoScroll(e.target.checked)
|
|
42575
42898
|
}
|
|
42576
42899
|
),
|
|
42577
|
-
"
|
|
42900
|
+
t("debug.autoScroll")
|
|
42578
42901
|
] })
|
|
42579
42902
|
] }),
|
|
42580
42903
|
/* @__PURE__ */ jsx(
|
|
@@ -42632,7 +42955,7 @@ function GuardsPanel({ guards }) {
|
|
|
42632
42955
|
EmptyState,
|
|
42633
42956
|
{
|
|
42634
42957
|
title: t("debug.noGuardEvaluations"),
|
|
42635
|
-
description: "
|
|
42958
|
+
description: t("debug.guardEvaluationsHint"),
|
|
42636
42959
|
className: "py-8"
|
|
42637
42960
|
}
|
|
42638
42961
|
);
|
|
@@ -42663,15 +42986,15 @@ function GuardsPanel({ guards }) {
|
|
|
42663
42986
|
] }),
|
|
42664
42987
|
content: /* @__PURE__ */ jsxs(Stack, { gap: "sm", children: [
|
|
42665
42988
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
42666
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: "
|
|
42989
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: t("debug.expression") }),
|
|
42667
42990
|
/* @__PURE__ */ 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 })
|
|
42668
42991
|
] }),
|
|
42669
42992
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
42670
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: "
|
|
42993
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: t("debug.inputs") }),
|
|
42671
42994
|
/* @__PURE__ */ 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) })
|
|
42672
42995
|
] }),
|
|
42673
42996
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
42674
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: "
|
|
42997
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: t("debug.trait") }),
|
|
42675
42998
|
/* @__PURE__ */ jsx(Typography, { variant: "small", children: guard.context.traitName })
|
|
42676
42999
|
] })
|
|
42677
43000
|
] })
|
|
@@ -42689,9 +43012,9 @@ function GuardsPanel({ guards }) {
|
|
|
42689
43012
|
] })
|
|
42690
43013
|
] }),
|
|
42691
43014
|
/* @__PURE__ */ jsxs(ButtonGroup, { children: [
|
|
42692
|
-
/* @__PURE__ */ jsx(Button, { size: "sm", variant: filter === "all" ? "primary" : "secondary", onClick: () => setFilter("all"), children: "
|
|
42693
|
-
/* @__PURE__ */ jsx(Button, { size: "sm", variant: filter === "passed" ? "primary" : "secondary", onClick: () => setFilter("passed"), children: "
|
|
42694
|
-
/* @__PURE__ */ jsx(Button, { size: "sm", variant: filter === "failed" ? "primary" : "secondary", onClick: () => setFilter("failed"), children: "
|
|
43015
|
+
/* @__PURE__ */ jsx(Button, { size: "sm", variant: filter === "all" ? "primary" : "secondary", onClick: () => setFilter("all"), children: t("debug.filterAll") }),
|
|
43016
|
+
/* @__PURE__ */ jsx(Button, { size: "sm", variant: filter === "passed" ? "primary" : "secondary", onClick: () => setFilter("passed"), children: t("debug.filterPassed") }),
|
|
43017
|
+
/* @__PURE__ */ jsx(Button, { size: "sm", variant: filter === "failed" ? "primary" : "secondary", onClick: () => setFilter("failed"), children: t("debug.filterFailed") })
|
|
42695
43018
|
] })
|
|
42696
43019
|
] }),
|
|
42697
43020
|
/* @__PURE__ */ jsx("div", { className: "max-h-80 overflow-y-auto", children: /* @__PURE__ */ jsx(Accordion, { items: accordionItems }) })
|
|
@@ -42817,7 +43140,7 @@ function TransitionTimeline({ transitions }) {
|
|
|
42817
43140
|
EmptyState,
|
|
42818
43141
|
{
|
|
42819
43142
|
title: t("debug.noTransitionsRecorded"),
|
|
42820
|
-
description: "
|
|
43143
|
+
description: t("debug.transitionsProcessHint"),
|
|
42821
43144
|
className: "py-8"
|
|
42822
43145
|
}
|
|
42823
43146
|
);
|
|
@@ -42834,10 +43157,7 @@ function TransitionTimeline({ transitions }) {
|
|
|
42834
43157
|
const sorted = [...transitions].reverse();
|
|
42835
43158
|
return /* @__PURE__ */ jsxs("div", { className: "debug-tab debug-tab--timeline", children: [
|
|
42836
43159
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between mb-2", children: [
|
|
42837
|
-
/* @__PURE__ */
|
|
42838
|
-
transitions.length,
|
|
42839
|
-
" transitions recorded"
|
|
42840
|
-
] }),
|
|
43160
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-500", children: t("debug.transitionsRecorded", { count: transitions.length }) }),
|
|
42841
43161
|
/* @__PURE__ */ jsxs("label", { className: "flex items-center gap-1 text-xs text-gray-500 cursor-pointer", children: [
|
|
42842
43162
|
/* @__PURE__ */ jsx(
|
|
42843
43163
|
Checkbox,
|
|
@@ -42846,7 +43166,7 @@ function TransitionTimeline({ transitions }) {
|
|
|
42846
43166
|
onChange: (e) => setAutoScroll(e.target.checked)
|
|
42847
43167
|
}
|
|
42848
43168
|
),
|
|
42849
|
-
"
|
|
43169
|
+
t("debug.autoScroll")
|
|
42850
43170
|
] })
|
|
42851
43171
|
] }),
|
|
42852
43172
|
/* @__PURE__ */ jsx(
|
|
@@ -42889,15 +43209,13 @@ function TransitionTimeline({ transitions }) {
|
|
|
42889
43209
|
variant: trace.guardResult ? "success" : "danger",
|
|
42890
43210
|
size: "sm",
|
|
42891
43211
|
children: [
|
|
42892
|
-
"
|
|
43212
|
+
t("debug.guardLabel"),
|
|
43213
|
+
" ",
|
|
42893
43214
|
trace.guardResult ? "\u2713" : "\u2717"
|
|
42894
43215
|
]
|
|
42895
43216
|
}
|
|
42896
43217
|
),
|
|
42897
|
-
/* @__PURE__ */
|
|
42898
|
-
trace.effects.length,
|
|
42899
|
-
" effects"
|
|
42900
|
-
] })
|
|
43218
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-400 ml-auto", children: t("debug.effectsCount", { count: trace.effects.length }) })
|
|
42901
43219
|
] }),
|
|
42902
43220
|
isExpanded && trace.effects.length > 0 && /* @__PURE__ */ 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__ */ jsxs("div", { className: "flex items-center gap-1", children: [
|
|
42903
43221
|
/* @__PURE__ */ jsx(EffectBadge, { effect }),
|
|
@@ -42946,13 +43264,13 @@ function ServerBridgeTab({ bridge }) {
|
|
|
42946
43264
|
EmptyState,
|
|
42947
43265
|
{
|
|
42948
43266
|
title: t("debug.noBridgeData"),
|
|
42949
|
-
description: "
|
|
43267
|
+
description: t("debug.bridgeInitHint"),
|
|
42950
43268
|
className: "py-8"
|
|
42951
43269
|
}
|
|
42952
43270
|
);
|
|
42953
43271
|
}
|
|
42954
43272
|
const formatTime4 = (ts) => {
|
|
42955
|
-
if (ts === 0) return "
|
|
43273
|
+
if (ts === 0) return t("debug.never");
|
|
42956
43274
|
const d = new Date(ts);
|
|
42957
43275
|
return d.toLocaleTimeString("en-US", {
|
|
42958
43276
|
hour12: false,
|
|
@@ -42965,14 +43283,14 @@ function ServerBridgeTab({ bridge }) {
|
|
|
42965
43283
|
/* @__PURE__ */ jsxs(Card, { className: "p-3", children: [
|
|
42966
43284
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 mb-3", children: [
|
|
42967
43285
|
/* @__PURE__ */ jsx("div", { className: `w-3 h-3 rounded-full ${bridge.connected ? "bg-green-500 animate-pulse" : "bg-red-500"}` }),
|
|
42968
|
-
/* @__PURE__ */ jsx(Typography, { variant: "h6", children: bridge.connected ? "
|
|
43286
|
+
/* @__PURE__ */ jsx(Typography, { variant: "h6", children: bridge.connected ? t("debug.connected") : t("debug.disconnected") })
|
|
42969
43287
|
] }),
|
|
42970
43288
|
/* @__PURE__ */ jsxs(Stack, { gap: "xs", children: [
|
|
42971
43289
|
/* @__PURE__ */ jsx(
|
|
42972
43290
|
StatRow,
|
|
42973
43291
|
{
|
|
42974
43292
|
label: t("debug.status"),
|
|
42975
|
-
value: bridge.connected ? "
|
|
43293
|
+
value: bridge.connected ? t("debug.connected") : t("debug.disconnected"),
|
|
42976
43294
|
variant: bridge.connected ? "success" : "danger"
|
|
42977
43295
|
}
|
|
42978
43296
|
),
|
|
@@ -43000,13 +43318,10 @@ function ServerBridgeTab({ bridge }) {
|
|
|
43000
43318
|
] })
|
|
43001
43319
|
] }),
|
|
43002
43320
|
bridge.lastError && /* @__PURE__ */ jsxs(Card, { className: "p-3 border-red-200 dark:border-red-800 bg-red-50 dark:bg-red-950", children: [
|
|
43003
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "semibold", className: "text-red-600 dark:text-red-400 mb-1", children: "
|
|
43321
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "semibold", className: "text-red-600 dark:text-red-400 mb-1", children: t("debug.lastError") }),
|
|
43004
43322
|
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-red-500 font-mono break-all", children: bridge.lastError })
|
|
43005
43323
|
] }),
|
|
43006
|
-
bridge.connected && /* @__PURE__ */ jsx("div", { className: "text-center py-2", children: /* @__PURE__ */
|
|
43007
|
-
bridge.eventsForwarded + bridge.eventsReceived,
|
|
43008
|
-
" total events processed"
|
|
43009
|
-
] }) })
|
|
43324
|
+
bridge.connected && /* @__PURE__ */ jsx("div", { className: "text-center py-2", children: /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-400", children: t("debug.totalEventsProcessed", { count: bridge.eventsForwarded + bridge.eventsReceived }) }) })
|
|
43010
43325
|
] }) });
|
|
43011
43326
|
}
|
|
43012
43327
|
var init_ServerBridgeTab = __esm({
|
|
@@ -43116,7 +43431,7 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
43116
43431
|
EmptyState,
|
|
43117
43432
|
{
|
|
43118
43433
|
title: t("debug.noActiveTraits"),
|
|
43119
|
-
description: "
|
|
43434
|
+
description: t("debug.traitsInitHint"),
|
|
43120
43435
|
className: "py-8"
|
|
43121
43436
|
}
|
|
43122
43437
|
);
|
|
@@ -43133,7 +43448,7 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
43133
43448
|
};
|
|
43134
43449
|
return /* @__PURE__ */ jsxs("div", { className: "debug-tab debug-tab--dispatch", children: [
|
|
43135
43450
|
/* @__PURE__ */ jsxs("div", { className: "mb-3", children: [
|
|
43136
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
43451
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.activeStates") }),
|
|
43137
43452
|
/* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1", children: traits2.map((trait) => /* @__PURE__ */ jsxs(Badge, { variant: "success", size: "sm", children: [
|
|
43138
43453
|
trait.name,
|
|
43139
43454
|
": ",
|
|
@@ -43141,8 +43456,8 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
43141
43456
|
] }, trait.id)) })
|
|
43142
43457
|
] }),
|
|
43143
43458
|
/* @__PURE__ */ jsxs("div", { className: "mb-3", children: [
|
|
43144
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
43145
|
-
availableEvents.length === 0 ? /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-400 italic", children: "
|
|
43459
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.availableEvents") }),
|
|
43460
|
+
availableEvents.length === 0 ? /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-400 italic", children: t("debug.noTransitionsFromState") }) : /* @__PURE__ */ jsx(Stack, { gap: "xs", children: availableEvents.map(({ event, transitions }) => /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
43146
43461
|
/* @__PURE__ */ jsx(
|
|
43147
43462
|
Button,
|
|
43148
43463
|
{
|
|
@@ -43154,15 +43469,15 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
43154
43469
|
}
|
|
43155
43470
|
),
|
|
43156
43471
|
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-500", children: transitions.map((t2) => `${t2.from} -> ${t2.to}`).join(", ") }),
|
|
43157
|
-
transitions.some((
|
|
43472
|
+
transitions.some((tr) => tr.guard) && /* @__PURE__ */ jsx(Badge, { variant: "warning", size: "sm", children: t("debug.guarded") })
|
|
43158
43473
|
] }, event)) })
|
|
43159
43474
|
] }),
|
|
43160
43475
|
unavailableEvents.length > 0 && /* @__PURE__ */ jsxs("div", { className: "mb-3", children: [
|
|
43161
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
43476
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.otherEvents") }),
|
|
43162
43477
|
/* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1", children: unavailableEvents.map((event) => /* @__PURE__ */ jsx(Badge, { variant: "default", size: "sm", className: "opacity-50", children: event }, event)) })
|
|
43163
43478
|
] }),
|
|
43164
43479
|
log18.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
|
|
43165
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
43480
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.recentTransitions") }),
|
|
43166
43481
|
/* @__PURE__ */ jsx(Stack, { gap: "xs", children: log18.map((entry, i) => /* @__PURE__ */ jsxs(Typography, { variant: "small", className: "font-mono text-xs", children: [
|
|
43167
43482
|
/* @__PURE__ */ jsx("span", { className: "text-purple-400", children: entry.traitName }),
|
|
43168
43483
|
" ",
|
|
@@ -43193,21 +43508,20 @@ var init_RuntimeDebugger = __esm({
|
|
|
43193
43508
|
}
|
|
43194
43509
|
});
|
|
43195
43510
|
function ServerResponseRow({ sr }) {
|
|
43511
|
+
const { t } = useTranslate();
|
|
43196
43512
|
const entityEntries = Object.entries(sr.dataEntities);
|
|
43197
43513
|
return /* @__PURE__ */ jsxs("div", { className: "ml-4 pl-2 border-l border-purple-500/30 py-0.5 text-xs font-mono", children: [
|
|
43198
43514
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
43199
43515
|
/* @__PURE__ */ jsxs("span", { className: sr.success ? "text-green-600 dark:text-green-400" : "text-red-600 dark:text-red-400", children: [
|
|
43200
43516
|
sr.success ? "\u2713" : "\u2717",
|
|
43201
|
-
"
|
|
43517
|
+
" ",
|
|
43518
|
+
t("debug.server")
|
|
43202
43519
|
] }),
|
|
43203
43520
|
/* @__PURE__ */ jsx("span", { className: "text-purple-600 dark:text-purple-300", children: sr.orbitalName }),
|
|
43204
|
-
sr.clientEffects > 0 && /* @__PURE__ */
|
|
43205
|
-
sr.clientEffects,
|
|
43206
|
-
" clientEffect",
|
|
43207
|
-
sr.clientEffects !== 1 ? "s" : ""
|
|
43208
|
-
] }),
|
|
43521
|
+
sr.clientEffects > 0 && /* @__PURE__ */ jsx("span", { className: "px-1 rounded bg-purple-500/15 text-purple-600 dark:text-purple-300", children: t("debug.clientEffectsCount", { count: sr.clientEffects }) }),
|
|
43209
43522
|
sr.emittedEvents.length > 0 && /* @__PURE__ */ jsxs("span", { className: "px-1 rounded bg-blue-500/15 text-blue-300", children: [
|
|
43210
|
-
"
|
|
43523
|
+
t("debug.emitLabel"),
|
|
43524
|
+
" ",
|
|
43211
43525
|
sr.emittedEvents.join(", ")
|
|
43212
43526
|
] }),
|
|
43213
43527
|
sr.error && /* @__PURE__ */ jsx("span", { className: "px-1 rounded bg-red-500/15 text-red-600 dark:text-red-400 truncate max-w-[300px]", children: sr.error })
|
|
@@ -43215,13 +43529,12 @@ function ServerResponseRow({ sr }) {
|
|
|
43215
43529
|
entityEntries.length > 0 && /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1 mt-0.5", children: entityEntries.map(([name, count]) => /* @__PURE__ */ jsxs("span", { className: "px-1 rounded bg-[var(--color-card)] text-foreground", children: [
|
|
43216
43530
|
name,
|
|
43217
43531
|
": ",
|
|
43218
|
-
count
|
|
43219
|
-
" row",
|
|
43220
|
-
count !== 1 ? "s" : ""
|
|
43532
|
+
t("debug.rowsCount", { count })
|
|
43221
43533
|
] }, name)) })
|
|
43222
43534
|
] });
|
|
43223
43535
|
}
|
|
43224
43536
|
function TransitionRow({ trace }) {
|
|
43537
|
+
const { t } = useTranslate();
|
|
43225
43538
|
const isServerEntry = !!trace.serverResponse && trace.traitName.startsWith("server:");
|
|
43226
43539
|
const hasFailedEffects = trace.effects.some((e) => e.status === "failed");
|
|
43227
43540
|
if (isServerEntry && trace.serverResponse) {
|
|
@@ -43229,7 +43542,7 @@ function TransitionRow({ trace }) {
|
|
|
43229
43542
|
/* @__PURE__ */ jsxs("div", { className: "flex items-start gap-2 text-xs font-mono", children: [
|
|
43230
43543
|
/* @__PURE__ */ jsx("span", { className: "mt-1.5 w-1.5 h-1.5 rounded-full flex-shrink-0 bg-purple-500" }),
|
|
43231
43544
|
/* @__PURE__ */ jsx(Badge, { variant: "warning", size: "sm", className: "flex-shrink-0", children: trace.event }),
|
|
43232
|
-
/* @__PURE__ */ jsx("span", { className: "text-purple-600 dark:text-purple-400 flex-shrink-0", children: "
|
|
43545
|
+
/* @__PURE__ */ jsx("span", { className: "text-purple-600 dark:text-purple-400 flex-shrink-0", children: t("debug.serverResponse") })
|
|
43233
43546
|
] }),
|
|
43234
43547
|
/* @__PURE__ */ jsx(ServerResponseRow, { sr: trace.serverResponse })
|
|
43235
43548
|
] });
|
|
@@ -43270,6 +43583,7 @@ function VerifyModePanel({
|
|
|
43270
43583
|
serverCount,
|
|
43271
43584
|
localCount
|
|
43272
43585
|
}) {
|
|
43586
|
+
const { t } = useTranslate();
|
|
43273
43587
|
const [expanded, setExpanded] = React79.useState(true);
|
|
43274
43588
|
const scrollRef = React79.useRef(null);
|
|
43275
43589
|
const prevCountRef = React79.useRef(0);
|
|
@@ -43300,30 +43614,20 @@ function VerifyModePanel({
|
|
|
43300
43614
|
onClick: () => setExpanded((v) => !v),
|
|
43301
43615
|
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",
|
|
43302
43616
|
"aria-expanded": expanded,
|
|
43303
|
-
"aria-label": expanded ? "
|
|
43617
|
+
"aria-label": expanded ? t("debug.collapseVerificationTimeline") : t("debug.expandVerificationTimeline"),
|
|
43304
43618
|
"data-testid": "debugger-verify-toggle",
|
|
43305
43619
|
children: [
|
|
43306
43620
|
/* @__PURE__ */ jsx("span", { className: "text-foreground/50 w-3", "aria-hidden": true, children: expanded ? "\u25BE" : "\u25B8" }),
|
|
43307
|
-
/* @__PURE__ */ jsx(Badge, { variant: failedChecks > 0 ? "danger" : "success", size: "sm", children: failedChecks > 0 ?
|
|
43308
|
-
/* @__PURE__ */
|
|
43309
|
-
|
|
43310
|
-
" local"
|
|
43311
|
-
] }),
|
|
43312
|
-
/* @__PURE__ */ jsxs("span", { className: "text-purple-600 dark:text-purple-400", children: [
|
|
43313
|
-
serverCount,
|
|
43314
|
-
" server"
|
|
43315
|
-
] }),
|
|
43621
|
+
/* @__PURE__ */ jsx(Badge, { variant: failedChecks > 0 ? "danger" : "success", size: "sm", children: failedChecks > 0 ? t("debug.failCount", { count: failedChecks }) : t("debug.ok") }),
|
|
43622
|
+
/* @__PURE__ */ jsx("span", { className: "text-foreground/70", children: t("debug.localCount", { count: localCount }) }),
|
|
43623
|
+
/* @__PURE__ */ jsx("span", { className: "text-purple-600 dark:text-purple-400", children: t("debug.serverCount", { count: serverCount }) }),
|
|
43316
43624
|
traitStates && /* @__PURE__ */ jsx("span", { className: "text-cyan-600 dark:text-cyan-400 truncate max-w-[400px]", children: traitStates }),
|
|
43317
|
-
!expanded && transitions.length > 0 && /* @__PURE__ */
|
|
43318
|
-
transitions.length,
|
|
43319
|
-
" transition",
|
|
43320
|
-
transitions.length !== 1 ? "s" : ""
|
|
43321
|
-
] })
|
|
43625
|
+
!expanded && transitions.length > 0 && /* @__PURE__ */ jsx("span", { className: "ml-auto text-foreground/50", children: t("debug.transitionsCount", { count: transitions.length }) })
|
|
43322
43626
|
]
|
|
43323
43627
|
}
|
|
43324
43628
|
),
|
|
43325
43629
|
expanded && /* @__PURE__ */ jsxs("div", { className: "flex-1 flex overflow-hidden", children: [
|
|
43326
|
-
/* @__PURE__ */ jsx("div", { ref: scrollRef, className: "flex-1 overflow-y-auto", children: /* @__PURE__ */ jsx("div", { className: "px-2 py-1", children: transitions.length === 0 ? /* @__PURE__ */ jsx("div", { className: "text-foreground/50 text-xs font-mono py-2 text-center", children: "
|
|
43630
|
+
/* @__PURE__ */ jsx("div", { ref: scrollRef, className: "flex-1 overflow-y-auto", children: /* @__PURE__ */ jsx("div", { className: "px-2 py-1", children: transitions.length === 0 ? /* @__PURE__ */ jsx("div", { className: "text-foreground/50 text-xs font-mono py-2 text-center", children: t("debug.waitingForTransitions") }) : /* @__PURE__ */ jsx("div", { className: "space-y-0.5", children: transitions.map((trace) => /* @__PURE__ */ jsx(TransitionRow, { trace }, trace.id)) }) }) }),
|
|
43327
43631
|
/* @__PURE__ */ jsx(WalkMinimap, {})
|
|
43328
43632
|
] })
|
|
43329
43633
|
]
|
|
@@ -43339,6 +43643,7 @@ function RuntimeDebugger({
|
|
|
43339
43643
|
defaultTab,
|
|
43340
43644
|
schema
|
|
43341
43645
|
}) {
|
|
43646
|
+
const { t } = useTranslate();
|
|
43342
43647
|
const [isCollapsed, setIsCollapsed] = React79.useState(mode === "verify" ? true : defaultCollapsed);
|
|
43343
43648
|
const [isVisible, setIsVisible] = React79.useState(mode === "inline" || mode === "verify" || isDebugEnabled2());
|
|
43344
43649
|
const debugData = useDebugData();
|
|
@@ -43377,55 +43682,55 @@ function RuntimeDebugger({
|
|
|
43377
43682
|
const tabItems = [
|
|
43378
43683
|
{
|
|
43379
43684
|
id: "dispatch",
|
|
43380
|
-
label: "
|
|
43685
|
+
label: t("debug.tabDispatch"),
|
|
43381
43686
|
badge: debugData.traits.length || void 0,
|
|
43382
43687
|
content: /* @__PURE__ */ jsx(EventDispatcherTab, { traits: debugData.traits, schema })
|
|
43383
43688
|
},
|
|
43384
43689
|
{
|
|
43385
43690
|
id: "verify",
|
|
43386
|
-
label: failedChecks > 0 ? "
|
|
43691
|
+
label: failedChecks > 0 ? t("debug.tabVerifyAlert") : t("debug.tabVerify"),
|
|
43387
43692
|
badge: verification.summary.totalChecks || void 0,
|
|
43388
43693
|
content: /* @__PURE__ */ jsx(VerificationTab, { checks: verification.checks, summary: verification.summary })
|
|
43389
43694
|
},
|
|
43390
43695
|
{
|
|
43391
43696
|
id: "timeline",
|
|
43392
|
-
label: "
|
|
43697
|
+
label: t("debug.tabTimeline"),
|
|
43393
43698
|
badge: verification.transitions.length || void 0,
|
|
43394
43699
|
content: /* @__PURE__ */ jsx(TransitionTimeline, { transitions: verification.transitions })
|
|
43395
43700
|
},
|
|
43396
43701
|
{
|
|
43397
43702
|
id: "bridge",
|
|
43398
|
-
label: "
|
|
43703
|
+
label: t("debug.tabBridge"),
|
|
43399
43704
|
badge: verification.bridge?.connected ? void 0 : 1,
|
|
43400
43705
|
content: /* @__PURE__ */ jsx(ServerBridgeTab, { bridge: verification.bridge })
|
|
43401
43706
|
},
|
|
43402
43707
|
{
|
|
43403
43708
|
id: "traits",
|
|
43404
|
-
label: "
|
|
43709
|
+
label: t("debug.tabTraits"),
|
|
43405
43710
|
badge: debugData.traits.length || void 0,
|
|
43406
43711
|
content: /* @__PURE__ */ jsx(TraitsTab, { traits: debugData.traits })
|
|
43407
43712
|
},
|
|
43408
43713
|
{
|
|
43409
43714
|
id: "ticks",
|
|
43410
|
-
label: "
|
|
43411
|
-
badge: debugData.ticks.filter((
|
|
43715
|
+
label: t("debug.tabTicks"),
|
|
43716
|
+
badge: debugData.ticks.filter((tick) => tick.active).length || void 0,
|
|
43412
43717
|
content: /* @__PURE__ */ jsx(TicksTab, { ticks: debugData.ticks })
|
|
43413
43718
|
},
|
|
43414
43719
|
{
|
|
43415
43720
|
id: "entities",
|
|
43416
|
-
label: "
|
|
43721
|
+
label: t("debug.tabEntities"),
|
|
43417
43722
|
badge: debugData.entitySnapshot?.runtime.length || void 0,
|
|
43418
43723
|
content: /* @__PURE__ */ jsx(EntitiesTab, { snapshot: debugData.entitySnapshot })
|
|
43419
43724
|
},
|
|
43420
43725
|
{
|
|
43421
43726
|
id: "events",
|
|
43422
|
-
label: "
|
|
43727
|
+
label: t("debug.tabEvents"),
|
|
43423
43728
|
badge: debugData.events.length > 0 ? debugData.events.length : void 0,
|
|
43424
43729
|
content: /* @__PURE__ */ jsx(EventFlowTab, { events: debugData.events })
|
|
43425
43730
|
},
|
|
43426
43731
|
{
|
|
43427
43732
|
id: "guards",
|
|
43428
|
-
label: "
|
|
43733
|
+
label: t("debug.tabGuards"),
|
|
43429
43734
|
badge: debugData.guards.filter((g) => !g.result).length || void 0,
|
|
43430
43735
|
content: /* @__PURE__ */ jsx(GuardsPanel, { guards: debugData.guards })
|
|
43431
43736
|
}
|
|
@@ -43453,15 +43758,10 @@ function RuntimeDebugger({
|
|
|
43453
43758
|
children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
43454
43759
|
/* @__PURE__ */ jsxs(Typography, { variant: "h6", style: { fontSize: "0.75rem" }, children: [
|
|
43455
43760
|
isCollapsed ? "\u25B6" : "\u25BC",
|
|
43456
|
-
"
|
|
43761
|
+
" ",
|
|
43762
|
+
t("debug.debugger")
|
|
43457
43763
|
] }),
|
|
43458
|
-
failedChecks > 0 ? /* @__PURE__ */
|
|
43459
|
-
failedChecks,
|
|
43460
|
-
" failed"
|
|
43461
|
-
] }) : debugData.traits.length > 0 ? /* @__PURE__ */ jsxs(Badge, { variant: "success", size: "sm", children: [
|
|
43462
|
-
debugData.traits.length,
|
|
43463
|
-
" traits"
|
|
43464
|
-
] }) : /* @__PURE__ */ jsx(Badge, { variant: "info", size: "sm", children: "Idle" })
|
|
43764
|
+
failedChecks > 0 ? /* @__PURE__ */ jsx(Badge, { variant: "danger", size: "sm", children: t("debug.failedCount", { count: failedChecks }) }) : debugData.traits.length > 0 ? /* @__PURE__ */ jsx(Badge, { variant: "success", size: "sm", children: t("debug.traitsCount", { count: debugData.traits.length }) }) : /* @__PURE__ */ jsx(Badge, { variant: "info", size: "sm", children: t("debug.idle") })
|
|
43465
43765
|
] })
|
|
43466
43766
|
}
|
|
43467
43767
|
),
|
|
@@ -43479,9 +43779,9 @@ function RuntimeDebugger({
|
|
|
43479
43779
|
);
|
|
43480
43780
|
}
|
|
43481
43781
|
if (mode === "verify") {
|
|
43482
|
-
const traitStates = debugData.traits.map((
|
|
43483
|
-
const serverEntries = verification.transitions.filter((
|
|
43484
|
-
const localEntries = verification.transitions.filter((
|
|
43782
|
+
const traitStates = debugData.traits.map((t2) => `${t2.name}:${t2.currentState}`).join(" | ");
|
|
43783
|
+
const serverEntries = verification.transitions.filter((t2) => t2.serverResponse);
|
|
43784
|
+
const localEntries = verification.transitions.filter((t2) => !t2.serverResponse);
|
|
43485
43785
|
return /* @__PURE__ */ jsx(
|
|
43486
43786
|
VerifyModePanel,
|
|
43487
43787
|
{
|
|
@@ -43513,7 +43813,7 @@ function RuntimeDebugger({
|
|
|
43513
43813
|
variant: "secondary",
|
|
43514
43814
|
size: "sm",
|
|
43515
43815
|
className: "runtime-debugger__toggle",
|
|
43516
|
-
title: "
|
|
43816
|
+
title: t("debug.openDebugger"),
|
|
43517
43817
|
children: failedChecks > 0 ? /* @__PURE__ */ jsxs("span", { className: "relative", children: [
|
|
43518
43818
|
/* @__PURE__ */ jsx("span", { children: "V" }),
|
|
43519
43819
|
/* @__PURE__ */ jsx("span", { className: "absolute -top-1 -right-2 w-2 h-2 bg-red-500 rounded-full" })
|
|
@@ -43523,11 +43823,8 @@ function RuntimeDebugger({
|
|
|
43523
43823
|
/* @__PURE__ */ jsxs("div", { className: "runtime-debugger__header", children: [
|
|
43524
43824
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
43525
43825
|
/* @__PURE__ */ jsx("span", { className: "text-lg", children: "V" }),
|
|
43526
|
-
/* @__PURE__ */ jsx(Typography, { variant: "h6", children: "
|
|
43527
|
-
failedChecks > 0 ? /* @__PURE__ */
|
|
43528
|
-
failedChecks,
|
|
43529
|
-
" failed"
|
|
43530
|
-
] }) : verification.summary.totalChecks > 0 ? /* @__PURE__ */ jsx(Badge, { variant: "success", size: "sm", children: "All passing" }) : /* @__PURE__ */ jsx(Badge, { variant: "info", size: "sm", children: "Runtime" })
|
|
43826
|
+
/* @__PURE__ */ jsx(Typography, { variant: "h6", children: t("debug.kflowVerifier") }),
|
|
43827
|
+
failedChecks > 0 ? /* @__PURE__ */ jsx(Badge, { variant: "danger", size: "sm", children: t("debug.failedCount", { count: failedChecks }) }) : verification.summary.totalChecks > 0 ? /* @__PURE__ */ jsx(Badge, { variant: "success", size: "sm", children: t("debug.allPassing") }) : /* @__PURE__ */ jsx(Badge, { variant: "info", size: "sm", children: t("debug.runtime") })
|
|
43531
43828
|
] }),
|
|
43532
43829
|
/* @__PURE__ */ jsx(
|
|
43533
43830
|
Button,
|
|
@@ -43535,7 +43832,7 @@ function RuntimeDebugger({
|
|
|
43535
43832
|
onClick: () => setIsCollapsed(true),
|
|
43536
43833
|
variant: "ghost",
|
|
43537
43834
|
size: "sm",
|
|
43538
|
-
title: "
|
|
43835
|
+
title: t("debug.close"),
|
|
43539
43836
|
children: "x"
|
|
43540
43837
|
}
|
|
43541
43838
|
)
|
|
@@ -43549,7 +43846,7 @@ function RuntimeDebugger({
|
|
|
43549
43846
|
className: "runtime-debugger__tabs"
|
|
43550
43847
|
}
|
|
43551
43848
|
) }),
|
|
43552
|
-
/* @__PURE__ */ jsx("div", { className: "runtime-debugger__footer", children: /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-foreground/50", children: "
|
|
43849
|
+
/* @__PURE__ */ jsx("div", { className: "runtime-debugger__footer", children: /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-foreground/50", children: t("debug.toggleHint") }) })
|
|
43553
43850
|
] })
|
|
43554
43851
|
}
|
|
43555
43852
|
);
|
|
@@ -43575,6 +43872,7 @@ var init_RuntimeDebugger2 = __esm({
|
|
|
43575
43872
|
init_TransitionTimeline();
|
|
43576
43873
|
init_ServerBridgeTab();
|
|
43577
43874
|
init_EventDispatcherTab();
|
|
43875
|
+
init_useTranslate();
|
|
43578
43876
|
init_RuntimeDebugger();
|
|
43579
43877
|
RuntimeDebugger.displayName = "RuntimeDebugger";
|
|
43580
43878
|
}
|
|
@@ -44974,7 +45272,7 @@ var init_StatCard = __esm({
|
|
|
44974
45272
|
}
|
|
44975
45273
|
);
|
|
44976
45274
|
}
|
|
44977
|
-
const label = schemaStats?.[0]?.label || labelToUse || "
|
|
45275
|
+
const label = schemaStats?.[0]?.label || labelToUse || t("statCard.defaultLabel");
|
|
44978
45276
|
const normalizedPropValue = Array.isArray(propValue) ? propValue[0] ?? propValue.length : propValue;
|
|
44979
45277
|
const value = schemaStats?.[0]?.value ?? normalizedPropValue ?? 0;
|
|
44980
45278
|
const trendDirection = manualDirection || (calculatedTrend === void 0 || calculatedTrend === 0 ? "neutral" : calculatedTrend > 0 ? "up" : "down");
|
|
@@ -45017,7 +45315,7 @@ var init_StatCard = __esm({
|
|
|
45017
45315
|
]
|
|
45018
45316
|
}
|
|
45019
45317
|
),
|
|
45020
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", color: "secondary", as: "span", children: "
|
|
45318
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", color: "secondary", as: "span", children: t("statCard.vsLastPeriod") })
|
|
45021
45319
|
] }),
|
|
45022
45320
|
subtitle && !calculatedTrend && /* @__PURE__ */ jsx(Typography, { variant: "small", color: "secondary", children: subtitle })
|
|
45023
45321
|
] }),
|