@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
|
@@ -2085,7 +2085,10 @@ var en_default;
|
|
|
2085
2085
|
var init_en = __esm({
|
|
2086
2086
|
"locales/en.json"() {
|
|
2087
2087
|
en_default = {
|
|
2088
|
-
$meta: {
|
|
2088
|
+
$meta: {
|
|
2089
|
+
locale: "en",
|
|
2090
|
+
direction: "ltr"
|
|
2091
|
+
},
|
|
2089
2092
|
"common.save": "Save",
|
|
2090
2093
|
"common.cancel": "Cancel",
|
|
2091
2094
|
"common.delete": "Delete",
|
|
@@ -2227,7 +2230,6 @@ var init_en = __esm({
|
|
|
2227
2230
|
"error.somethingWentWrong": "Something went wrong",
|
|
2228
2231
|
"error.loadingItems": "Loading items...",
|
|
2229
2232
|
"error.noItemsFound": "No items found",
|
|
2230
|
-
"error.notFound": "Not found",
|
|
2231
2233
|
"debug.noEntityData": "No entity data",
|
|
2232
2234
|
"debug.noEntities": "No entities",
|
|
2233
2235
|
"debug.noTicks": "No ticks registered",
|
|
@@ -2259,7 +2261,299 @@ var init_en = __esm({
|
|
|
2259
2261
|
"template.showcase": "Showcase",
|
|
2260
2262
|
"template.faq": "Frequently Asked Questions",
|
|
2261
2263
|
"template.ourTeam": "Our Team",
|
|
2262
|
-
"template.caseStudies": "Case Studies"
|
|
2264
|
+
"template.caseStudies": "Case Studies",
|
|
2265
|
+
"richBlockEditor.toolbar.text": "Text",
|
|
2266
|
+
"richBlockEditor.toolbar.h1": "H1",
|
|
2267
|
+
"richBlockEditor.toolbar.h2": "H2",
|
|
2268
|
+
"richBlockEditor.toolbar.h3": "H3",
|
|
2269
|
+
"richBlockEditor.toolbar.bulletList": "Bullet list",
|
|
2270
|
+
"richBlockEditor.toolbar.numbered": "Numbered",
|
|
2271
|
+
"richBlockEditor.toolbar.quote": "Quote",
|
|
2272
|
+
"richBlockEditor.toolbar.code": "Code",
|
|
2273
|
+
"richBlockEditor.toolbar.divider": "Divider",
|
|
2274
|
+
"richBlockEditor.toolbar.image": "Image",
|
|
2275
|
+
"richBlockEditor.blockType.paragraph": "Text",
|
|
2276
|
+
"richBlockEditor.blockType.heading1": "Heading 1",
|
|
2277
|
+
"richBlockEditor.blockType.heading2": "Heading 2",
|
|
2278
|
+
"richBlockEditor.blockType.heading3": "Heading 3",
|
|
2279
|
+
"richBlockEditor.blockType.bulletList": "Bullet list",
|
|
2280
|
+
"richBlockEditor.blockType.numberedList": "Numbered list",
|
|
2281
|
+
"richBlockEditor.blockType.quote": "Quote",
|
|
2282
|
+
"richBlockEditor.blockType.code": "Code",
|
|
2283
|
+
"richBlockEditor.blockType.divider": "Divider",
|
|
2284
|
+
"richBlockEditor.blockType.image": "Image",
|
|
2285
|
+
"richBlockEditor.blockActions": "Block actions",
|
|
2286
|
+
"richBlockEditor.duplicate": "Duplicate",
|
|
2287
|
+
"richBlockEditor.turnInto": "Turn into",
|
|
2288
|
+
"richBlockEditor.placeholder.heading1": "Heading 1",
|
|
2289
|
+
"richBlockEditor.placeholder.heading2": "Heading 2",
|
|
2290
|
+
"richBlockEditor.placeholder.heading3": "Heading 3",
|
|
2291
|
+
"richBlockEditor.placeholder.quote": "Quote",
|
|
2292
|
+
"richBlockEditor.placeholder.code": "Enter code",
|
|
2293
|
+
"richBlockEditor.placeholder.paragraph": "Start writing...",
|
|
2294
|
+
"richBlockEditor.placeholder.listItem": "List item",
|
|
2295
|
+
"richBlockEditor.placeholder.caption": "Caption (optional)",
|
|
2296
|
+
"richBlockEditor.aria.heading1Block": "Heading 1 block",
|
|
2297
|
+
"richBlockEditor.aria.heading2Block": "Heading 2 block",
|
|
2298
|
+
"richBlockEditor.aria.heading3Block": "Heading 3 block",
|
|
2299
|
+
"richBlockEditor.aria.quoteBlock": "Quote block",
|
|
2300
|
+
"richBlockEditor.aria.codeBlock": "Code block",
|
|
2301
|
+
"richBlockEditor.aria.codeLanguage": "Code language",
|
|
2302
|
+
"richBlockEditor.aria.imageUrl": "Image URL",
|
|
2303
|
+
"richBlockEditor.aria.imageCaption": "Image caption",
|
|
2304
|
+
"richBlockEditor.aria.listItem": "List item",
|
|
2305
|
+
"richBlockEditor.aria.removeListItem": "Remove list item",
|
|
2306
|
+
"richBlockEditor.aria.paragraphBlock": "Paragraph block",
|
|
2307
|
+
"richBlockEditor.embeddedImage": "Embedded image",
|
|
2308
|
+
"richBlockEditor.noImageUrl": "No image URL set",
|
|
2309
|
+
"richBlockEditor.addItem": "Add item",
|
|
2310
|
+
"richBlockEditor.insertParagraphBelow": "Insert paragraph below",
|
|
2311
|
+
"richBlockEditor.editorToolbar": "Block editor toolbar",
|
|
2312
|
+
"richBlockEditor.insertEntry": "Insert {{label}}",
|
|
2313
|
+
"versionDiff.compare": "Compare",
|
|
2314
|
+
"versionDiff.to": "to",
|
|
2315
|
+
"versionDiff.beforeRevision": "Before revision",
|
|
2316
|
+
"versionDiff.afterRevision": "After revision",
|
|
2317
|
+
"versionDiff.switchToInline": "Switch to inline view",
|
|
2318
|
+
"versionDiff.switchToSideBySide": "Switch to side-by-side view",
|
|
2319
|
+
"versionDiff.revert": "Revert",
|
|
2320
|
+
"versionDiff.byAuthor": " by {{author}}",
|
|
2321
|
+
"violationAlert.actionType.measure": "Corrective Measure",
|
|
2322
|
+
"violationAlert.actionType.admin": "Administrative Action",
|
|
2323
|
+
"violationAlert.actionType.penalty": "Penalty Proceedings",
|
|
2324
|
+
"violationAlert.fallbackMessage": "Violation",
|
|
2325
|
+
"violationAlert.adminLabel": "Admin:",
|
|
2326
|
+
"violationAlert.penaltyLabel": "Penalty:",
|
|
2327
|
+
"violationAlert.goToField": "Go to field",
|
|
2328
|
+
"branchingLogic.title": "Branching logic",
|
|
2329
|
+
"branchingLogic.if": "If",
|
|
2330
|
+
"branchingLogic.goTo": "go to",
|
|
2331
|
+
"branchingLogic.rules": "Rules",
|
|
2332
|
+
"branchingLogic.logicGraph": "Logic graph",
|
|
2333
|
+
"branchingLogic.addRule": "Add rule",
|
|
2334
|
+
"branchingLogic.deleteRule": "Delete rule",
|
|
2335
|
+
"branchingLogic.endOfSurvey": "End of survey",
|
|
2336
|
+
"branchingLogic.brokenReference": "Broken reference",
|
|
2337
|
+
"branchingLogic.selectQuestion": "Select question",
|
|
2338
|
+
"branchingLogic.selectTarget": "Select target",
|
|
2339
|
+
"branchingLogic.selectValue": "Select value",
|
|
2340
|
+
"branchingLogic.addValue": "Add value",
|
|
2341
|
+
"branchingLogic.value": "Value",
|
|
2342
|
+
"branchingLogic.typeValuePressEnter": "Type value, press Enter",
|
|
2343
|
+
"branchingLogic.operatorEquals": "equals",
|
|
2344
|
+
"branchingLogic.operatorNotEquals": "does not equal",
|
|
2345
|
+
"branchingLogic.operatorContains": "contains",
|
|
2346
|
+
"branchingLogic.operatorIn": "is one of",
|
|
2347
|
+
"branchingLogic.graphAriaLabel": "Branching logic graph",
|
|
2348
|
+
"branchingLogic.ruleCountOne": "{{count}} rule",
|
|
2349
|
+
"branchingLogic.ruleCountOther": "{{count}} rules",
|
|
2350
|
+
"branchingLogic.brokenCount": "{{count}} broken",
|
|
2351
|
+
"branchingLogic.emptyNoQuestions": "Add questions before building branching rules.",
|
|
2352
|
+
"branchingLogic.emptyNoRules": "No rules yet. Add a rule to define branching logic.",
|
|
2353
|
+
"filterGroup.filters": "Filters",
|
|
2354
|
+
"filterGroup.all": "All",
|
|
2355
|
+
"filterGroup.clear": "Clear",
|
|
2356
|
+
"filterGroup.clearAll": "Clear all",
|
|
2357
|
+
"filterGroup.from": "From",
|
|
2358
|
+
"filterGroup.to": "To",
|
|
2359
|
+
"filterGroup.allOf": "All {{label}}",
|
|
2360
|
+
"filterGroup.activeCount": "{{count}} active",
|
|
2361
|
+
"debug.guardEvaluationsHint": "Guard evaluations will appear when transitions or ticks with guards execute",
|
|
2362
|
+
"debug.expression": "Expression",
|
|
2363
|
+
"debug.inputs": "Inputs",
|
|
2364
|
+
"debug.trait": "Trait",
|
|
2365
|
+
"debug.filterAll": "All",
|
|
2366
|
+
"debug.filterPassed": "Passed",
|
|
2367
|
+
"debug.filterFailed": "Failed",
|
|
2368
|
+
"debug.traitsInitHint": "Traits will appear when the state machine initializes",
|
|
2369
|
+
"debug.traitsMountHint": "Traits will appear when components using them are mounted",
|
|
2370
|
+
"debug.activeStates": "Active States",
|
|
2371
|
+
"debug.availableEvents": "Available Events",
|
|
2372
|
+
"debug.noTransitionsFromState": "No transitions from current state",
|
|
2373
|
+
"debug.guarded": "guarded",
|
|
2374
|
+
"debug.otherEvents": "Other Events (not available from current state)",
|
|
2375
|
+
"debug.recentTransitions": "Recent Transitions",
|
|
2376
|
+
"debug.transitionsCount": "{{count}} transitions",
|
|
2377
|
+
"debug.states": "States",
|
|
2378
|
+
"debug.transitions": "Transitions",
|
|
2379
|
+
"debug.guards": "Guards",
|
|
2380
|
+
"debug.debugModeHint": "Debug mode may not be enabled",
|
|
2381
|
+
"debug.entitiesSpawnHint": "Entities will appear when spawned",
|
|
2382
|
+
"debug.singleton": "Singleton",
|
|
2383
|
+
"debug.singletonsCount": "Singletons ({{count}})",
|
|
2384
|
+
"debug.runtimeCount": "Runtime ({{count}})",
|
|
2385
|
+
"debug.moreEntities": "+{{count}} more entities",
|
|
2386
|
+
"debug.persistent": "Persistent",
|
|
2387
|
+
"debug.loadedCount": "{{count}} loaded",
|
|
2388
|
+
"debug.notLoaded": "not loaded",
|
|
2389
|
+
"debug.eventsExecuteHint": "Events will appear as traits, ticks, and other systems execute",
|
|
2390
|
+
"debug.allCount": "All ({{count}})",
|
|
2391
|
+
"debug.autoScroll": "Auto-scroll",
|
|
2392
|
+
"debug.transitionsProcessHint": "Transitions will appear as the state machine processes events",
|
|
2393
|
+
"debug.transitionsRecorded": "{{count}} transitions recorded",
|
|
2394
|
+
"debug.guardLabel": "guard:",
|
|
2395
|
+
"debug.effectsCount": "{{count}} effects",
|
|
2396
|
+
"debug.bridgeInitHint": "The ServerBridge has not been initialized. Bridge health will appear once the runtime connects to the server.",
|
|
2397
|
+
"debug.never": "Never",
|
|
2398
|
+
"debug.connected": "Connected",
|
|
2399
|
+
"debug.disconnected": "Disconnected",
|
|
2400
|
+
"debug.lastError": "Last Error",
|
|
2401
|
+
"debug.totalEventsProcessed": "{{count}} total events processed",
|
|
2402
|
+
"debug.server": "server",
|
|
2403
|
+
"debug.clientEffectsCount": "{{count}} clientEffects",
|
|
2404
|
+
"debug.emitLabel": "emit:",
|
|
2405
|
+
"debug.rowsCount": "{{count}} rows",
|
|
2406
|
+
"debug.serverResponse": "server response",
|
|
2407
|
+
"debug.collapseVerificationTimeline": "Collapse verification timeline",
|
|
2408
|
+
"debug.expandVerificationTimeline": "Expand verification timeline",
|
|
2409
|
+
"debug.failCount": "{{count}} fail",
|
|
2410
|
+
"debug.ok": "OK",
|
|
2411
|
+
"debug.localCount": "{{count}} local",
|
|
2412
|
+
"debug.serverCount": "{{count}} server",
|
|
2413
|
+
"debug.waitingForTransitions": "Waiting for transitions...",
|
|
2414
|
+
"debug.tabDispatch": "Dispatch",
|
|
2415
|
+
"debug.tabVerify": "Verify",
|
|
2416
|
+
"debug.tabVerifyAlert": "Verify (!)",
|
|
2417
|
+
"debug.tabTimeline": "Timeline",
|
|
2418
|
+
"debug.tabBridge": "Bridge",
|
|
2419
|
+
"debug.tabTraits": "Traits",
|
|
2420
|
+
"debug.tabTicks": "Ticks",
|
|
2421
|
+
"debug.tabEntities": "Entities",
|
|
2422
|
+
"debug.tabEvents": "Events",
|
|
2423
|
+
"debug.tabGuards": "Guards",
|
|
2424
|
+
"debug.debugger": "Debugger",
|
|
2425
|
+
"debug.failedCount": "{{count}} failed",
|
|
2426
|
+
"debug.traitsCount": "{{count}} traits",
|
|
2427
|
+
"debug.idle": "Idle",
|
|
2428
|
+
"debug.openDebugger": "Open Debugger (`)",
|
|
2429
|
+
"debug.kflowVerifier": "KFlow Verifier",
|
|
2430
|
+
"debug.allPassing": "All passing",
|
|
2431
|
+
"debug.runtime": "Runtime",
|
|
2432
|
+
"debug.close": "Close (`)",
|
|
2433
|
+
"debug.toggleHint": "Press ` to toggle | window.__orbitalVerification for automation",
|
|
2434
|
+
"replyTree.expandReplies": "Expand replies",
|
|
2435
|
+
"replyTree.collapseReplies": "Collapse replies",
|
|
2436
|
+
"replyTree.voteOnReplyBy": "Vote on reply by {{author}}",
|
|
2437
|
+
"replyTree.replyTo": "Reply to {{author}}",
|
|
2438
|
+
"replyTree.replyToPlaceholder": "Reply to {{author}}\u2026",
|
|
2439
|
+
"replyTree.reply": "Reply",
|
|
2440
|
+
"replyTree.flagReplyBy": "Flag reply by {{author}}",
|
|
2441
|
+
"replyTree.flag": "Flag",
|
|
2442
|
+
"replyTree.send": "Send",
|
|
2443
|
+
"replyTree.continueThread": "Continue thread",
|
|
2444
|
+
"replyTree.noRepliesYet": "No replies yet.",
|
|
2445
|
+
"signaturePad.label": "Signature",
|
|
2446
|
+
"signaturePad.helperText": "Draw your signature above",
|
|
2447
|
+
"signaturePad.clear": "Clear",
|
|
2448
|
+
"signaturePad.confirm": "Confirm",
|
|
2449
|
+
"qrScanner.cameraUnavailable": "Camera unavailable",
|
|
2450
|
+
"qrScanner.paused": "Paused",
|
|
2451
|
+
"qrScanner.resumeScanning": "Resume scanning",
|
|
2452
|
+
"qrScanner.pauseScanning": "Pause scanning",
|
|
2453
|
+
"qrScanner.switchToFrontCamera": "Switch to front camera",
|
|
2454
|
+
"qrScanner.switchToRearCamera": "Switch to rear camera",
|
|
2455
|
+
"qrScanner.mockScan": "Mock Scan",
|
|
2456
|
+
"docSearch.placeholder": "Search documentation...",
|
|
2457
|
+
"stateMachine.loading": "Loading state machine\u2026",
|
|
2458
|
+
"stateMachine.noStateMachine": "No state machine to visualize",
|
|
2459
|
+
"avl.trigger": "Trigger",
|
|
2460
|
+
"avl.guard": "Guard",
|
|
2461
|
+
"avl.effects": "Effects",
|
|
2462
|
+
"avl.props": "Props",
|
|
2463
|
+
"avl.entity": "Entity",
|
|
2464
|
+
"avl.traits": "Traits",
|
|
2465
|
+
"avl.transition": "Transition",
|
|
2466
|
+
"avl.onEntity": "on {{entity}}",
|
|
2467
|
+
"avl.linkedTo": "linked to {{entity}}",
|
|
2468
|
+
"avl.pressEscToZoomOut": "Press Esc to zoom out",
|
|
2469
|
+
"avl.zoomIn": "Zoom in",
|
|
2470
|
+
"avl.zoomOut": "Zoom out",
|
|
2471
|
+
"avl.orbitalLabel": "Orbital: {{name}}",
|
|
2472
|
+
"avl.orbitalLabelHighlighted": "Orbital: {{name}} (highlighted)",
|
|
2473
|
+
"avl.noTraitData": "No trait data",
|
|
2474
|
+
"avl.computingLayout": "Computing layout...",
|
|
2475
|
+
"avl.noStateMachine": "No state machine",
|
|
2476
|
+
"avl.listensFor": "listens for {{event}}",
|
|
2477
|
+
"avl.emits": "emits {{event}}",
|
|
2478
|
+
"avl.pageLayout": "Page Layout",
|
|
2479
|
+
"avl.overlaySuffix": "(overlay)",
|
|
2480
|
+
"orbPreview.previewBadge": "Preview",
|
|
2481
|
+
"orbPreview.doubleClickToOpen": "Double-click to open",
|
|
2482
|
+
"orbPreview.dropToAddAndOpen": "Drop to add and open",
|
|
2483
|
+
"orbPreview.dispatching": "Coordinator is dispatching to this orbital",
|
|
2484
|
+
"orbPreview.noPreview": "No preview available",
|
|
2485
|
+
"orbPreview.screensCount": "{{count}} screens",
|
|
2486
|
+
"detailView.noTransitionData": "No transition data",
|
|
2487
|
+
"orbInspector.required": "req",
|
|
2488
|
+
"orbInspector.addField": "Add Field",
|
|
2489
|
+
"orbInspector.serviceMode": "Service Mode",
|
|
2490
|
+
"orbInspector.standalone": "Standalone",
|
|
2491
|
+
"orbInspector.embedded": "Embedded",
|
|
2492
|
+
"orbInspector.rendersOwnUi": "Renders its own UI",
|
|
2493
|
+
"orbInspector.headless": "Headless, wired to other behaviors",
|
|
2494
|
+
"orbInspector.addEffect": "Add Effect",
|
|
2495
|
+
"orbInspector.guardExpression": "Guard expression",
|
|
2496
|
+
"orbInspector.selectPatternForStyles": "Select a pattern to view its style tokens.",
|
|
2497
|
+
"orbInspector.tokens": "Tokens",
|
|
2498
|
+
"orbInspector.noTokenContract": "No token contract declared for this pattern.",
|
|
2499
|
+
"orbInspector.variant": "Variant",
|
|
2500
|
+
"orbInspector.size": "Size",
|
|
2501
|
+
"orbInspector.statesCount": "{{count}} states",
|
|
2502
|
+
"orbInspector.onEntity": " on {{entity}}",
|
|
2503
|
+
"orbInspector.projectThemeTokens": "Project theme tokens",
|
|
2504
|
+
"orbInspector.tokenGroup.colors": "Colors",
|
|
2505
|
+
"orbInspector.tokenGroup.radii": "Radii",
|
|
2506
|
+
"orbInspector.tokenGroup.spacing": "Spacing",
|
|
2507
|
+
"orbInspector.tokenGroup.shadows": "Shadows",
|
|
2508
|
+
"orbInspector.tab.inspector": "Inspector",
|
|
2509
|
+
"orbInspector.tab.styles": "Styles",
|
|
2510
|
+
"orbInspector.tab.code": "Code",
|
|
2511
|
+
"canvas.goBackToOverview": "Go back to overview",
|
|
2512
|
+
"canvas.overview": "Overview",
|
|
2513
|
+
"canvas.expanded": "Expanded",
|
|
2514
|
+
"canvas.modulesCount": "{{count}} modules",
|
|
2515
|
+
"canvas.screensCount": "{{count}} screens",
|
|
2516
|
+
"canvas.switchToView": "Switch to {{label}} view",
|
|
2517
|
+
"lawReference.viewFullText": "View full law text",
|
|
2518
|
+
"statCard.defaultLabel": "Stat",
|
|
2519
|
+
"statCard.vsLastPeriod": "vs last period",
|
|
2520
|
+
"mediaGallery.upload": "Upload",
|
|
2521
|
+
"mediaGallery.noMediaDescription": "No media items to display.",
|
|
2522
|
+
"pagination.jumpPlaceholder": "Page",
|
|
2523
|
+
"table.selectRow": "Select row {{id}}",
|
|
2524
|
+
"card.selectItem": "Select {{item}}",
|
|
2525
|
+
"card.itemFallback": "item",
|
|
2526
|
+
"fileTree.noFiles": "No files",
|
|
2527
|
+
"masterDetail.selectItem": "Select an item to view details",
|
|
2528
|
+
"empty.createFirst": "Create your first item to get started.",
|
|
2529
|
+
"upload.dropOrBrowse": "Drop files here or click to browse",
|
|
2530
|
+
"upload.dropFilesHere": "Drop files here",
|
|
2531
|
+
"upload.accepted": "Accepted: {{accept}}",
|
|
2532
|
+
"upload.maxSize": "Max size: {{size}}",
|
|
2533
|
+
"upload.maxFiles": "Up to {{count}} files",
|
|
2534
|
+
"upload.error.maxFiles": "Maximum {{count}} files allowed",
|
|
2535
|
+
"upload.error.invalidType": "Invalid file type: {{name}}",
|
|
2536
|
+
"upload.error.tooLarge": "File too large: {{name}} (max {{size}})",
|
|
2537
|
+
"optionConstraint.requiredOne": "Required, pick 1",
|
|
2538
|
+
"optionConstraint.optionalOne": "Optional, pick up to 1",
|
|
2539
|
+
"optionConstraint.pickExactly": "Pick exactly {{count}}",
|
|
2540
|
+
"optionConstraint.pickRange": "Pick {{min}}-{{max}}",
|
|
2541
|
+
"optionConstraint.pickAtLeast": "Pick at least {{count}}",
|
|
2542
|
+
"optionConstraint.pickUpTo": "Pick up to {{count}}",
|
|
2543
|
+
"optionConstraint.optional": "Optional",
|
|
2544
|
+
"optionConstraint.outOfStock": "Out of stock",
|
|
2545
|
+
"optionConstraint.error.pickOne": "Pick 1 option",
|
|
2546
|
+
"optionConstraint.error.pickOnlyOne": "Pick only 1 option",
|
|
2547
|
+
"optionConstraint.error.pickMore": "Pick at least {{count}} more",
|
|
2548
|
+
"optionConstraint.error.removeOptions": "Remove {{count}} options",
|
|
2549
|
+
"stateMachine.pinned": "Pinned",
|
|
2550
|
+
"stateMachine.eventCount": "{{count}} events",
|
|
2551
|
+
"stateMachine.externalEffects": "External Effects",
|
|
2552
|
+
"stateMachine.legend.initial": "Initial",
|
|
2553
|
+
"stateMachine.legend.final": "Final",
|
|
2554
|
+
"stateMachine.legend.state": "State",
|
|
2555
|
+
"stateMachine.legend.multiEvent": "Multi-event",
|
|
2556
|
+
"relationSelect.selectPlaceholder": "Select..."
|
|
2263
2557
|
};
|
|
2264
2558
|
}
|
|
2265
2559
|
});
|
|
@@ -4721,6 +5015,7 @@ var init_LawReferenceTooltip = __esm({
|
|
|
4721
5015
|
init_Typography();
|
|
4722
5016
|
init_Divider();
|
|
4723
5017
|
init_cn();
|
|
5018
|
+
init_useTranslate();
|
|
4724
5019
|
positionStyles2 = {
|
|
4725
5020
|
top: "bottom-full left-1/2 -translate-x-1/2 mb-2",
|
|
4726
5021
|
bottom: "top-full left-1/2 -translate-x-1/2 mt-2",
|
|
@@ -4739,6 +5034,7 @@ var init_LawReferenceTooltip = __esm({
|
|
|
4739
5034
|
position = "top",
|
|
4740
5035
|
className
|
|
4741
5036
|
}) => {
|
|
5037
|
+
const { t } = useTranslate();
|
|
4742
5038
|
const [isVisible, setIsVisible] = React79__namespace.default.useState(false);
|
|
4743
5039
|
const timeoutRef = React79__namespace.default.useRef(null);
|
|
4744
5040
|
const handleMouseEnter = () => {
|
|
@@ -4822,7 +5118,7 @@ var init_LawReferenceTooltip = __esm({
|
|
|
4822
5118
|
target: "_blank",
|
|
4823
5119
|
rel: "noopener noreferrer",
|
|
4824
5120
|
onClick: (e) => e.stopPropagation(),
|
|
4825
|
-
children: "
|
|
5121
|
+
children: t("lawReference.viewFullText")
|
|
4826
5122
|
}
|
|
4827
5123
|
)
|
|
4828
5124
|
] }),
|
|
@@ -12132,6 +12428,7 @@ var log4, SWIM_GUTTER, CENTER_W; exports.BehaviorView = void 0;
|
|
|
12132
12428
|
var init_BehaviorView = __esm({
|
|
12133
12429
|
"components/avl/molecules/BehaviorView.tsx"() {
|
|
12134
12430
|
"use client";
|
|
12431
|
+
init_useTranslate();
|
|
12135
12432
|
init_AvlState();
|
|
12136
12433
|
init_AvlTransitionLane();
|
|
12137
12434
|
init_AvlSwimLane();
|
|
@@ -12141,6 +12438,7 @@ var init_BehaviorView = __esm({
|
|
|
12141
12438
|
SWIM_GUTTER = 120;
|
|
12142
12439
|
CENTER_W = 360;
|
|
12143
12440
|
exports.BehaviorView = ({ data }) => {
|
|
12441
|
+
const { t } = useTranslate();
|
|
12144
12442
|
const [layout, setLayout] = React79.useState(null);
|
|
12145
12443
|
const traitName = data.traits[0]?.name;
|
|
12146
12444
|
const traitData = traitName ? data.traitDetails[traitName] : void 0;
|
|
@@ -12150,10 +12448,10 @@ var init_BehaviorView = __esm({
|
|
|
12150
12448
|
computeTraitLayout(traitData).then(setLayout).catch((err) => log4.error("compute-trait-layout-failed", { error: err instanceof Error ? err : String(err) }));
|
|
12151
12449
|
}, [dataKey]);
|
|
12152
12450
|
if (!traitData) {
|
|
12153
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-lg border border-[var(--color-border)] bg-[var(--color-card)] p-4 text-center text-[var(--color-muted-foreground)] text-sm", children: "
|
|
12451
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-lg border border-[var(--color-border)] bg-[var(--color-card)] p-4 text-center text-[var(--color-muted-foreground)] text-sm", children: t("avl.noTraitData") });
|
|
12154
12452
|
}
|
|
12155
12453
|
if (!layout) {
|
|
12156
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-lg border border-[var(--color-border)] bg-[var(--color-card)] p-4 text-center text-[var(--color-muted-foreground)] text-sm", children: "
|
|
12454
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-lg border border-[var(--color-border)] bg-[var(--color-card)] p-4 text-center text-[var(--color-muted-foreground)] text-sm", children: t("avl.computingLayout") });
|
|
12157
12455
|
}
|
|
12158
12456
|
const hasExternal = traitData.listenedEvents.length > 0 || traitData.emittedEvents.length > 0;
|
|
12159
12457
|
const viewW = hasExternal ? SWIM_GUTTER + CENTER_W + SWIM_GUTTER : CENTER_W + 60;
|
|
@@ -12169,10 +12467,7 @@ var init_BehaviorView = __esm({
|
|
|
12169
12467
|
const machineHeight = scaledH + 100;
|
|
12170
12468
|
const renderMachine = /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
|
|
12171
12469
|
/* @__PURE__ */ jsxRuntime.jsx("text", { x: CENTER_W / 2, y: 20, textAnchor: "middle", fill: "var(--color-foreground)", fontSize: 18, fontWeight: "700", fontFamily: "inherit", children: traitData.name }),
|
|
12172
|
-
/* @__PURE__ */ jsxRuntime.
|
|
12173
|
-
"on ",
|
|
12174
|
-
traitData.linkedEntity
|
|
12175
|
-
] }),
|
|
12470
|
+
/* @__PURE__ */ jsxRuntime.jsx("text", { x: CENTER_W / 2, y: 36, textAnchor: "middle", fill: "var(--color-muted-foreground)", fontSize: 11, opacity: 0.5, fontFamily: "inherit", children: t("avl.onEntity", { entity: traitData.linkedEntity }) }),
|
|
12176
12471
|
/* @__PURE__ */ jsxRuntime.jsxs("defs", { children: [
|
|
12177
12472
|
/* @__PURE__ */ jsxRuntime.jsx("marker", { id: "bvArrow", viewBox: "0 0 10 10", refX: "9", refY: "5", markerWidth: "6", markerHeight: "6", orient: "auto-start-reverse", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M 0 0 L 10 5 L 0 10 z", fill: CONNECTION_COLORS.forward.color, opacity: 0.7 }) }),
|
|
12178
12473
|
/* @__PURE__ */ jsxRuntime.jsx("marker", { id: "bvArrowBack", viewBox: "0 0 10 10", refX: "9", refY: "5", markerWidth: "6", markerHeight: "6", orient: "auto-start-reverse", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M 0 0 L 10 5 L 0 10 z", fill: CONNECTION_COLORS.backward.color, opacity: 0.5 }) })
|
|
@@ -12480,7 +12775,7 @@ var init_CodeBlock = __esm({
|
|
|
12480
12775
|
const isLolo = language === "lolo";
|
|
12481
12776
|
const activeStyle = isOrb ? orbStyle : isLolo ? loloStyle : dark__default.default;
|
|
12482
12777
|
const eventBus = useEventBus();
|
|
12483
|
-
const { t
|
|
12778
|
+
const { t } = useTranslate();
|
|
12484
12779
|
const scrollRef = React79.useRef(null);
|
|
12485
12780
|
const codeRef = React79.useRef(null);
|
|
12486
12781
|
const savedScrollLeftRef = React79.useRef(0);
|
|
@@ -12735,7 +13030,7 @@ var init_CodeBlock = __esm({
|
|
|
12735
13030
|
size: "sm",
|
|
12736
13031
|
onClick: handleCopy,
|
|
12737
13032
|
className: "opacity-0 group-hover:opacity-100 focus:opacity-100 transition-opacity text-muted-foreground hover:text-white",
|
|
12738
|
-
"aria-label": "
|
|
13033
|
+
"aria-label": t("common.copy"),
|
|
12739
13034
|
children: copied ? /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "check", className: "w-4 h-4 text-green-400" }) : /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "copy", className: "w-4 h-4" })
|
|
12740
13035
|
}
|
|
12741
13036
|
)
|
|
@@ -13390,7 +13685,7 @@ var init_StateMachineView = __esm({
|
|
|
13390
13685
|
const endX2 = fromState.x + Math.cos(Math.PI / 2 * loopDirection + endAngle) * fromState.radius;
|
|
13391
13686
|
const endY2 = fromState.y + Math.sin(Math.PI / 2 * loopDirection + endAngle) * fromState.radius;
|
|
13392
13687
|
const isSingle2 = bundle.labels.length === 1;
|
|
13393
|
-
const labelText2 = isSingle2 ? bundle.labels[0].event :
|
|
13688
|
+
const labelText2 = isSingle2 ? bundle.labels[0].event : t("stateMachine.eventCount", { count: bundle.labels.length });
|
|
13394
13689
|
const bundleColor2 = isSingle2 ? config.colors.arrow : "var(--color-accent)";
|
|
13395
13690
|
const labelWidth2 = labelText2.length * 9 + (isSingle2 ? 24 : 40);
|
|
13396
13691
|
const cx = fromState.x;
|
|
@@ -13516,7 +13811,7 @@ var init_StateMachineView = __esm({
|
|
|
13516
13811
|
const controlX = midX + perpX;
|
|
13517
13812
|
const controlY = midY + perpY;
|
|
13518
13813
|
const isSingle = bundle.labels.length === 1;
|
|
13519
|
-
const labelText = isSingle ? bundle.labels[0].event :
|
|
13814
|
+
const labelText = isSingle ? bundle.labels[0].event : t("stateMachine.eventCount", { count: bundle.labels.length });
|
|
13520
13815
|
const labelWidth = labelText.length * 9 + (isSingle ? 24 : 40);
|
|
13521
13816
|
const bundleColor = isSingle ? config.colors.arrow : "var(--color-accent)";
|
|
13522
13817
|
const curveMidpoint = {
|
|
@@ -13671,7 +13966,7 @@ var init_StateMachineView = __esm({
|
|
|
13671
13966
|
{
|
|
13672
13967
|
className: "absolute -top-2 left-1/2 transform -translate-x-1/2 px-2 py-0.5 rounded-full",
|
|
13673
13968
|
style: { backgroundColor: "var(--color-success)" },
|
|
13674
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", weight: "semibold", style: { color: "var(--color-success-foreground)" }, children: "
|
|
13969
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", weight: "semibold", style: { color: "var(--color-success-foreground)" }, children: t("stateMachine.pinned") })
|
|
13675
13970
|
}
|
|
13676
13971
|
),
|
|
13677
13972
|
!isSingle && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -13693,10 +13988,7 @@ var init_StateMachineView = __esm({
|
|
|
13693
13988
|
{
|
|
13694
13989
|
className: "ml-2 px-2 py-0.5 rounded-full",
|
|
13695
13990
|
style: { backgroundColor: "var(--color-accent)" },
|
|
13696
|
-
children: /* @__PURE__ */ jsxRuntime.
|
|
13697
|
-
bundle.labels.length,
|
|
13698
|
-
" events"
|
|
13699
|
-
] })
|
|
13991
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", style: { color: "var(--color-accent-foreground)" }, children: t("stateMachine.eventCount", { count: bundle.labels.length }) })
|
|
13700
13992
|
}
|
|
13701
13993
|
)
|
|
13702
13994
|
]
|
|
@@ -13841,7 +14133,7 @@ var init_StateMachineView = __esm({
|
|
|
13841
14133
|
align: "center",
|
|
13842
14134
|
className: "mb-2",
|
|
13843
14135
|
style: { color: "var(--color-warning)", fontSize: "13px" },
|
|
13844
|
-
children: "
|
|
14136
|
+
children: t("stateMachine.externalEffects")
|
|
13845
14137
|
}
|
|
13846
14138
|
),
|
|
13847
14139
|
outputs.outputs.map((output, idx) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -13861,10 +14153,10 @@ var init_StateMachineView = __esm({
|
|
|
13861
14153
|
Legend = ({ config, y }) => {
|
|
13862
14154
|
const { t } = useTranslate();
|
|
13863
14155
|
const items = [
|
|
13864
|
-
{ label: "
|
|
13865
|
-
{ label: "
|
|
13866
|
-
{ label: "
|
|
13867
|
-
{ label: "
|
|
14156
|
+
{ key: "initial", label: t("stateMachine.legend.initial"), color: config.colors.initialNode, isMultiEvent: false },
|
|
14157
|
+
{ key: "final", label: t("stateMachine.legend.final"), color: config.colors.finalNode, isMultiEvent: false },
|
|
14158
|
+
{ key: "state", label: t("stateMachine.legend.state"), color: config.colors.nodeBorder, isMultiEvent: false },
|
|
14159
|
+
{ key: "multiEvent", label: t("stateMachine.legend.multiEvent"), color: "var(--color-accent)", isMultiEvent: true }
|
|
13868
14160
|
];
|
|
13869
14161
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
13870
14162
|
exports.HStack,
|
|
@@ -13879,8 +14171,8 @@ var init_StateMachineView = __esm({
|
|
|
13879
14171
|
{
|
|
13880
14172
|
className: "w-3 h-3 rounded-full",
|
|
13881
14173
|
style: {
|
|
13882
|
-
backgroundColor: item.
|
|
13883
|
-
border: item.
|
|
14174
|
+
backgroundColor: item.isMultiEvent ? item.color : config.colors.node,
|
|
14175
|
+
border: !item.isMultiEvent ? `2px solid ${item.color}` : "none"
|
|
13884
14176
|
}
|
|
13885
14177
|
}
|
|
13886
14178
|
),
|
|
@@ -13892,7 +14184,7 @@ var init_StateMachineView = __esm({
|
|
|
13892
14184
|
children: item.label
|
|
13893
14185
|
}
|
|
13894
14186
|
)
|
|
13895
|
-
] }, item.
|
|
14187
|
+
] }, item.key))
|
|
13896
14188
|
}
|
|
13897
14189
|
);
|
|
13898
14190
|
};
|
|
@@ -14686,13 +14978,13 @@ var init_JazariStateMachine = __esm({
|
|
|
14686
14978
|
);
|
|
14687
14979
|
}, [resolvedTrait, entityFields]);
|
|
14688
14980
|
if (isLoading) {
|
|
14689
|
-
return /* @__PURE__ */ jsxRuntime.jsx(exports.LoadingState, { message: "
|
|
14981
|
+
return /* @__PURE__ */ jsxRuntime.jsx(exports.LoadingState, { message: t("stateMachine.loading") });
|
|
14690
14982
|
}
|
|
14691
14983
|
if (error) {
|
|
14692
14984
|
return /* @__PURE__ */ jsxRuntime.jsx(exports.ErrorState, { message: error instanceof Error ? error.message : String(error) });
|
|
14693
14985
|
}
|
|
14694
14986
|
if (!resolvedTrait || !layoutData || layoutData.states.length === 0) {
|
|
14695
|
-
return /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { padding: "lg", className: cn("text-center", className), children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", className: "opacity-60", children: "
|
|
14987
|
+
return /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { padding: "lg", className: cn("text-center", className), children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", className: "opacity-60", children: t("stateMachine.noStateMachine") }) });
|
|
14696
14988
|
}
|
|
14697
14989
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
14698
14990
|
exports.StateMachineView,
|
|
@@ -15736,13 +16028,13 @@ var init_LayoutPatterns = __esm({
|
|
|
15736
16028
|
function generateRuleId() {
|
|
15737
16029
|
return `rule-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
15738
16030
|
}
|
|
15739
|
-
function questionsToOptions(questions,
|
|
16031
|
+
function questionsToOptions(questions, endOfSurveyLabel) {
|
|
15740
16032
|
const opts = questions.map((q) => ({
|
|
15741
16033
|
value: q.id,
|
|
15742
16034
|
label: q.label
|
|
15743
16035
|
}));
|
|
15744
|
-
if (
|
|
15745
|
-
opts.push({ value: END_OF_SURVEY, label:
|
|
16036
|
+
if (endOfSurveyLabel !== null) {
|
|
16037
|
+
opts.push({ value: END_OF_SURVEY, label: endOfSurveyLabel });
|
|
15746
16038
|
}
|
|
15747
16039
|
return opts;
|
|
15748
16040
|
}
|
|
@@ -15751,7 +16043,7 @@ function isRuleBroken(rule, questions) {
|
|
|
15751
16043
|
const targetExists = rule.targetQuestionId === END_OF_SURVEY || questions.some((q) => q.id === rule.targetQuestionId);
|
|
15752
16044
|
return !sourceExists || !targetExists;
|
|
15753
16045
|
}
|
|
15754
|
-
var END_OF_SURVEY,
|
|
16046
|
+
var END_OF_SURVEY, RuleRow, NODE_WIDTH, NODE_HEIGHT, NODE_GAP_Y, PADDING, LogicGraph; exports.BranchingLogicBuilder = void 0;
|
|
15755
16047
|
var init_BranchingLogicBuilder = __esm({
|
|
15756
16048
|
"components/core/molecules/BranchingLogicBuilder.tsx"() {
|
|
15757
16049
|
"use client";
|
|
@@ -15764,14 +16056,9 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
15764
16056
|
init_FilterPill();
|
|
15765
16057
|
init_Box();
|
|
15766
16058
|
init_useEventBus();
|
|
16059
|
+
init_useTranslate();
|
|
15767
16060
|
init_cn();
|
|
15768
16061
|
END_OF_SURVEY = "end-of-survey";
|
|
15769
|
-
OPERATOR_OPTIONS = [
|
|
15770
|
-
{ value: "equals", label: "equals" },
|
|
15771
|
-
{ value: "not-equals", label: "does not equal" },
|
|
15772
|
-
{ value: "contains", label: "contains" },
|
|
15773
|
-
{ value: "in", label: "is one of" }
|
|
15774
|
-
];
|
|
15775
16062
|
RuleRow = ({
|
|
15776
16063
|
rule,
|
|
15777
16064
|
questions,
|
|
@@ -15780,8 +16067,21 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
15780
16067
|
onChange,
|
|
15781
16068
|
onDelete
|
|
15782
16069
|
}) => {
|
|
15783
|
-
const
|
|
15784
|
-
const
|
|
16070
|
+
const { t } = useTranslate();
|
|
16071
|
+
const operatorOptions = React79.useMemo(
|
|
16072
|
+
() => [
|
|
16073
|
+
{ value: "equals", label: t("branchingLogic.operatorEquals") },
|
|
16074
|
+
{ value: "not-equals", label: t("branchingLogic.operatorNotEquals") },
|
|
16075
|
+
{ value: "contains", label: t("branchingLogic.operatorContains") },
|
|
16076
|
+
{ value: "in", label: t("branchingLogic.operatorIn") }
|
|
16077
|
+
],
|
|
16078
|
+
[t]
|
|
16079
|
+
);
|
|
16080
|
+
const sourceOptions = React79.useMemo(() => questionsToOptions(questions, null), [questions]);
|
|
16081
|
+
const targetOptions = React79.useMemo(
|
|
16082
|
+
() => questionsToOptions(questions, t("branchingLogic.endOfSurvey")),
|
|
16083
|
+
[questions, t]
|
|
16084
|
+
);
|
|
15785
16085
|
const sourceQuestion = questions.find((q) => q.id === rule.sourceQuestionId);
|
|
15786
16086
|
const valueOptions = React79.useMemo(() => {
|
|
15787
16087
|
if (!sourceQuestion?.optionValues) return [];
|
|
@@ -15826,22 +16126,22 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
15826
16126
|
),
|
|
15827
16127
|
children: [
|
|
15828
16128
|
/* @__PURE__ */ jsxRuntime.jsxs(exports.Box, { className: "flex flex-wrap items-center gap-2", children: [
|
|
15829
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "label", weight: "semibold", className: "shrink-0", children: "
|
|
16129
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "label", weight: "semibold", className: "shrink-0", children: t("branchingLogic.if") }),
|
|
15830
16130
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "min-w-[10rem] grow basis-40", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
15831
16131
|
exports.Select,
|
|
15832
16132
|
{
|
|
15833
16133
|
options: sourceOptions,
|
|
15834
16134
|
value: rule.sourceQuestionId,
|
|
15835
|
-
placeholder: "
|
|
16135
|
+
placeholder: t("branchingLogic.selectQuestion"),
|
|
15836
16136
|
onChange: handleSource,
|
|
15837
16137
|
disabled: readOnly,
|
|
15838
|
-
error: broken ? "
|
|
16138
|
+
error: broken ? t("branchingLogic.brokenReference") : void 0
|
|
15839
16139
|
}
|
|
15840
16140
|
) }),
|
|
15841
16141
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "min-w-[8rem] basis-32", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
15842
16142
|
exports.Select,
|
|
15843
16143
|
{
|
|
15844
|
-
options:
|
|
16144
|
+
options: operatorOptions,
|
|
15845
16145
|
value: rule.operator,
|
|
15846
16146
|
onChange: handleOperator,
|
|
15847
16147
|
disabled: readOnly
|
|
@@ -15864,7 +16164,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
15864
16164
|
{
|
|
15865
16165
|
options: valueOptions.filter((o) => !chips.includes(o.value)),
|
|
15866
16166
|
value: "",
|
|
15867
|
-
placeholder: "
|
|
16167
|
+
placeholder: t("branchingLogic.addValue"),
|
|
15868
16168
|
onChange: handleAddChip,
|
|
15869
16169
|
disabled: readOnly
|
|
15870
16170
|
}
|
|
@@ -15872,7 +16172,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
15872
16172
|
exports.Input,
|
|
15873
16173
|
{
|
|
15874
16174
|
inputType: "text",
|
|
15875
|
-
placeholder: "
|
|
16175
|
+
placeholder: t("branchingLogic.typeValuePressEnter"),
|
|
15876
16176
|
value: "",
|
|
15877
16177
|
onKeyDown: (e) => {
|
|
15878
16178
|
if (e.key !== "Enter") return;
|
|
@@ -15890,7 +16190,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
15890
16190
|
{
|
|
15891
16191
|
options: valueOptions,
|
|
15892
16192
|
value: scalarValue,
|
|
15893
|
-
placeholder: "
|
|
16193
|
+
placeholder: t("branchingLogic.selectValue"),
|
|
15894
16194
|
onChange: (e) => onChange({ ...rule, value: e.target.value }),
|
|
15895
16195
|
disabled: readOnly
|
|
15896
16196
|
}
|
|
@@ -15898,7 +16198,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
15898
16198
|
exports.Input,
|
|
15899
16199
|
{
|
|
15900
16200
|
inputType: "text",
|
|
15901
|
-
placeholder: "
|
|
16201
|
+
placeholder: t("branchingLogic.value"),
|
|
15902
16202
|
value: scalarValue,
|
|
15903
16203
|
onChange: handleScalarValue,
|
|
15904
16204
|
disabled: readOnly
|
|
@@ -15906,17 +16206,17 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
15906
16206
|
) }),
|
|
15907
16207
|
/* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "label", weight: "semibold", className: "shrink-0 inline-flex items-center gap-1", children: [
|
|
15908
16208
|
/* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.ArrowRight, { className: "h-4 w-4" }),
|
|
15909
|
-
"
|
|
16209
|
+
t("branchingLogic.goTo")
|
|
15910
16210
|
] }),
|
|
15911
16211
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "min-w-[10rem] grow basis-40", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
15912
16212
|
exports.Select,
|
|
15913
16213
|
{
|
|
15914
16214
|
options: targetOptions,
|
|
15915
16215
|
value: rule.targetQuestionId,
|
|
15916
|
-
placeholder: "
|
|
16216
|
+
placeholder: t("branchingLogic.selectTarget"),
|
|
15917
16217
|
onChange: handleTarget,
|
|
15918
16218
|
disabled: readOnly,
|
|
15919
|
-
error: broken && rule.targetQuestionId !== END_OF_SURVEY ? "
|
|
16219
|
+
error: broken && rule.targetQuestionId !== END_OF_SURVEY ? t("branchingLogic.brokenReference") : void 0
|
|
15920
16220
|
}
|
|
15921
16221
|
) }),
|
|
15922
16222
|
!readOnly && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -15928,11 +16228,11 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
15928
16228
|
action: "DELETE_RULE",
|
|
15929
16229
|
actionPayload: { ruleId: rule.id },
|
|
15930
16230
|
onClick: onDelete,
|
|
15931
|
-
"aria-label": "
|
|
16231
|
+
"aria-label": t("branchingLogic.deleteRule")
|
|
15932
16232
|
}
|
|
15933
16233
|
)
|
|
15934
16234
|
] }),
|
|
15935
|
-
broken && /* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant: "error", size: "sm", label: "
|
|
16235
|
+
broken && /* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant: "error", size: "sm", label: t("branchingLogic.brokenReference") })
|
|
15936
16236
|
]
|
|
15937
16237
|
}
|
|
15938
16238
|
);
|
|
@@ -15942,10 +16242,12 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
15942
16242
|
NODE_GAP_Y = 80;
|
|
15943
16243
|
PADDING = 32;
|
|
15944
16244
|
LogicGraph = ({ questions, rules }) => {
|
|
16245
|
+
const { t } = useTranslate();
|
|
16246
|
+
const endOfSurveyLabel = t("branchingLogic.endOfSurvey");
|
|
15945
16247
|
const layout = React79.useMemo(() => {
|
|
15946
16248
|
const items = [
|
|
15947
16249
|
...questions.map((q) => ({ id: q.id, label: q.label, isEnd: false })),
|
|
15948
|
-
{ id: END_OF_SURVEY, label:
|
|
16250
|
+
{ id: END_OF_SURVEY, label: endOfSurveyLabel, isEnd: true }
|
|
15949
16251
|
];
|
|
15950
16252
|
const positions = {};
|
|
15951
16253
|
items.forEach((item, i) => {
|
|
@@ -15957,14 +16259,14 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
15957
16259
|
const width = NODE_WIDTH + PADDING * 2 + 220;
|
|
15958
16260
|
const height = PADDING * 2 + items.length * (NODE_HEIGHT + NODE_GAP_Y);
|
|
15959
16261
|
return { items, positions, width, height };
|
|
15960
|
-
}, [questions]);
|
|
16262
|
+
}, [questions, endOfSurveyLabel]);
|
|
15961
16263
|
return /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "overflow-auto rounded-container border border-border bg-card p-2", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
15962
16264
|
"svg",
|
|
15963
16265
|
{
|
|
15964
16266
|
width: layout.width,
|
|
15965
16267
|
height: layout.height,
|
|
15966
16268
|
role: "img",
|
|
15967
|
-
"aria-label": "
|
|
16269
|
+
"aria-label": t("branchingLogic.graphAriaLabel"),
|
|
15968
16270
|
style: { display: "block" },
|
|
15969
16271
|
children: [
|
|
15970
16272
|
/* @__PURE__ */ jsxRuntime.jsx("defs", { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -16072,6 +16374,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
16072
16374
|
readOnly = false,
|
|
16073
16375
|
className
|
|
16074
16376
|
}) => {
|
|
16377
|
+
const { t } = useTranslate();
|
|
16075
16378
|
const eventBus = useEventBus();
|
|
16076
16379
|
const questions = Array.isArray(questionsProp) ? questionsProp : [];
|
|
16077
16380
|
const rulesInitial = Array.isArray(rulesProp) ? rulesProp : [];
|
|
@@ -16124,16 +16427,23 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
16124
16427
|
/* @__PURE__ */ jsxRuntime.jsxs(exports.Box, { className: "flex flex-wrap items-center justify-between gap-2", children: [
|
|
16125
16428
|
/* @__PURE__ */ jsxRuntime.jsxs(exports.Box, { className: "flex items-center gap-2", children: [
|
|
16126
16429
|
/* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.GitBranch, { className: "h-5 w-5 text-foreground" }),
|
|
16127
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "subheading", weight: "semibold", children: "
|
|
16430
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "subheading", weight: "semibold", children: t("branchingLogic.title") }),
|
|
16128
16431
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
16129
16432
|
exports.Badge,
|
|
16130
16433
|
{
|
|
16131
16434
|
variant: "neutral",
|
|
16132
16435
|
size: "sm",
|
|
16133
|
-
label:
|
|
16436
|
+
label: rules.length === 1 ? t("branchingLogic.ruleCountOne", { count: rules.length }) : t("branchingLogic.ruleCountOther", { count: rules.length })
|
|
16134
16437
|
}
|
|
16135
16438
|
),
|
|
16136
|
-
brokenCount > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
16439
|
+
brokenCount > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
16440
|
+
exports.Badge,
|
|
16441
|
+
{
|
|
16442
|
+
variant: "error",
|
|
16443
|
+
size: "sm",
|
|
16444
|
+
label: t("branchingLogic.brokenCount", { count: brokenCount })
|
|
16445
|
+
}
|
|
16446
|
+
)
|
|
16137
16447
|
] }),
|
|
16138
16448
|
/* @__PURE__ */ jsxRuntime.jsxs(exports.Box, { className: "flex items-center gap-1 rounded-sm border border-border bg-card p-0.5", children: [
|
|
16139
16449
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -16144,7 +16454,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
16144
16454
|
leftIcon: LucideIcons2.Pencil,
|
|
16145
16455
|
action: "VIEW_EDIT",
|
|
16146
16456
|
onClick: () => setView("edit"),
|
|
16147
|
-
children: "
|
|
16457
|
+
children: t("branchingLogic.rules")
|
|
16148
16458
|
}
|
|
16149
16459
|
),
|
|
16150
16460
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -16155,13 +16465,13 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
16155
16465
|
leftIcon: LucideIcons2.Eye,
|
|
16156
16466
|
action: "VIEW_GRAPH",
|
|
16157
16467
|
onClick: () => setView("graph"),
|
|
16158
|
-
children: "
|
|
16468
|
+
children: t("branchingLogic.logicGraph")
|
|
16159
16469
|
}
|
|
16160
16470
|
)
|
|
16161
16471
|
] })
|
|
16162
16472
|
] }),
|
|
16163
16473
|
view === "edit" ? /* @__PURE__ */ jsxRuntime.jsxs(exports.Box, { className: "flex flex-col gap-2", children: [
|
|
16164
|
-
rules.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(exports.Card, { variant: "bordered", padding: "lg", className: "text-center", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", color: "muted", children: noQuestions ? "
|
|
16474
|
+
rules.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(exports.Card, { variant: "bordered", padding: "lg", className: "text-center", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", color: "muted", children: noQuestions ? t("branchingLogic.emptyNoQuestions") : t("branchingLogic.emptyNoRules") }) }) : rules.map((rule) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
16165
16475
|
RuleRow,
|
|
16166
16476
|
{
|
|
16167
16477
|
rule,
|
|
@@ -16182,7 +16492,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
16182
16492
|
action: "ADD_RULE",
|
|
16183
16493
|
onClick: handleAddRule,
|
|
16184
16494
|
disabled: noQuestions,
|
|
16185
|
-
children: "
|
|
16495
|
+
children: t("branchingLogic.addRule")
|
|
16186
16496
|
}
|
|
16187
16497
|
) })
|
|
16188
16498
|
] }) : /* @__PURE__ */ jsxRuntime.jsx(LogicGraph, { questions, rules })
|
|
@@ -16809,7 +17119,7 @@ function CalendarGrid({
|
|
|
16809
17119
|
onClick: stepPrev,
|
|
16810
17120
|
"aria-disabled": !canPrev || void 0,
|
|
16811
17121
|
"aria-label": t("aria.previousDays"),
|
|
16812
|
-
children: "
|
|
17122
|
+
children: t("nav.previous")
|
|
16813
17123
|
}
|
|
16814
17124
|
),
|
|
16815
17125
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-muted-foreground", children: formatDateRange(visibleDays[0], visibleDays[visibleDays.length - 1]) }),
|
|
@@ -16822,7 +17132,7 @@ function CalendarGrid({
|
|
|
16822
17132
|
onClick: stepNext,
|
|
16823
17133
|
"aria-disabled": !canNext || void 0,
|
|
16824
17134
|
"aria-label": t("aria.nextDays"),
|
|
16825
|
-
children: "
|
|
17135
|
+
children: t("nav.next")
|
|
16826
17136
|
}
|
|
16827
17137
|
)
|
|
16828
17138
|
] }),
|
|
@@ -18372,7 +18682,7 @@ var init_Pagination = __esm({
|
|
|
18372
18682
|
type: "number",
|
|
18373
18683
|
value: jumpToPage,
|
|
18374
18684
|
onChange: (e) => setJumpToPage(e.target.value),
|
|
18375
|
-
placeholder: "
|
|
18685
|
+
placeholder: t("pagination.jumpPlaceholder"),
|
|
18376
18686
|
className: "w-20",
|
|
18377
18687
|
onKeyDown: (e) => {
|
|
18378
18688
|
if (e.key === "Enter") {
|
|
@@ -18510,13 +18820,10 @@ var init_CardGrid = __esm({
|
|
|
18510
18820
|
return children;
|
|
18511
18821
|
}
|
|
18512
18822
|
if (isLoading) {
|
|
18513
|
-
return /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "col-span-full text-center py-8 text-muted-foreground", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", color: "secondary", children: "
|
|
18823
|
+
return /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "col-span-full text-center py-8 text-muted-foreground", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", color: "secondary", children: t("loading.items") }) });
|
|
18514
18824
|
}
|
|
18515
18825
|
if (error) {
|
|
18516
|
-
return /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "col-span-full text-center py-8 text-error", children: /* @__PURE__ */ jsxRuntime.
|
|
18517
|
-
"Error loading items: ",
|
|
18518
|
-
error.message
|
|
18519
|
-
] }) });
|
|
18826
|
+
return /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "col-span-full text-center py-8 text-error", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", color: "error", children: t("error.loadFailed", { message: error.message }) }) });
|
|
18520
18827
|
}
|
|
18521
18828
|
if (normalizedData.length === 0) {
|
|
18522
18829
|
return /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "col-span-full text-center py-12 text-muted-foreground", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", color: "secondary", children: t("empty.noItems") || "No items found" }) });
|
|
@@ -22613,7 +22920,7 @@ function DataGrid({
|
|
|
22613
22920
|
onChange: () => toggleSelection(id),
|
|
22614
22921
|
onClick: (e) => e.stopPropagation(),
|
|
22615
22922
|
className: "w-4 h-4 mt-1 flex-shrink-0 accent-primary",
|
|
22616
|
-
"aria-label":
|
|
22923
|
+
"aria-label": t("card.selectItem", { item: titleValue !== void 0 ? String(titleValue) : t("card.itemFallback") })
|
|
22617
22924
|
}
|
|
22618
22925
|
),
|
|
22619
22926
|
/* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "xs", className: "flex-1 min-w-0", children: [
|
|
@@ -22811,7 +23118,7 @@ function formatDate3(value) {
|
|
|
22811
23118
|
if (isNaN(d.getTime())) return String(value);
|
|
22812
23119
|
return d.toLocaleDateString(void 0, { year: "numeric", month: "short", day: "numeric" });
|
|
22813
23120
|
}
|
|
22814
|
-
function formatValue2(value, format) {
|
|
23121
|
+
function formatValue2(value, format, boolLabels) {
|
|
22815
23122
|
if (value === void 0 || value === null) return "";
|
|
22816
23123
|
switch (format) {
|
|
22817
23124
|
case "date":
|
|
@@ -22823,7 +23130,7 @@ function formatValue2(value, format) {
|
|
|
22823
23130
|
case "percent":
|
|
22824
23131
|
return typeof value === "number" ? `${Math.round(value)}%` : String(value);
|
|
22825
23132
|
case "boolean":
|
|
22826
|
-
return value ? "Yes" : "No";
|
|
23133
|
+
return value ? boolLabels?.yes ?? "Yes" : boolLabels?.no ?? "No";
|
|
22827
23134
|
default:
|
|
22828
23135
|
return String(value);
|
|
22829
23136
|
}
|
|
@@ -23119,7 +23426,7 @@ function DataList({
|
|
|
23119
23426
|
field.label ?? fieldLabel3(field.name),
|
|
23120
23427
|
":"
|
|
23121
23428
|
] }),
|
|
23122
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", children: formatValue2(value, field.format) })
|
|
23429
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", children: formatValue2(value, field.format, { yes: t("common.yes"), no: t("common.no") }) })
|
|
23123
23430
|
] }, field.name);
|
|
23124
23431
|
}) }),
|
|
23125
23432
|
progressFields.map((field) => {
|
|
@@ -23249,6 +23556,7 @@ var init_FileTree = __esm({
|
|
|
23249
23556
|
init_Box();
|
|
23250
23557
|
init_Typography();
|
|
23251
23558
|
init_Icon();
|
|
23559
|
+
init_useTranslate();
|
|
23252
23560
|
TreeNodeItem = ({
|
|
23253
23561
|
node,
|
|
23254
23562
|
depth,
|
|
@@ -23334,8 +23642,9 @@ var init_FileTree = __esm({
|
|
|
23334
23642
|
className,
|
|
23335
23643
|
indent = 16
|
|
23336
23644
|
}) => {
|
|
23645
|
+
const { t } = useTranslate();
|
|
23337
23646
|
if (tree.length === 0) {
|
|
23338
|
-
return /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: `p-4 ${className ?? ""}`, children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", color: "muted", children: "
|
|
23647
|
+
return /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: `p-4 ${className ?? ""}`, children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", color: "muted", children: t("fileTree.noFiles") }) });
|
|
23339
23648
|
}
|
|
23340
23649
|
return /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: `py-1 overflow-y-auto ${className ?? ""}`, role: "tree", children: tree.map((node) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
23341
23650
|
TreeNodeItem,
|
|
@@ -23462,6 +23771,7 @@ var init_FilterGroup = __esm({
|
|
|
23462
23771
|
init_Icon();
|
|
23463
23772
|
init_useEventBus();
|
|
23464
23773
|
init_useQuerySingleton();
|
|
23774
|
+
init_useTranslate();
|
|
23465
23775
|
resolveFilterType = (filter) => filter.filterType ?? filter.type;
|
|
23466
23776
|
lookStyles6 = {
|
|
23467
23777
|
toolbar: "",
|
|
@@ -23482,6 +23792,7 @@ var init_FilterGroup = __esm({
|
|
|
23482
23792
|
isLoading,
|
|
23483
23793
|
look = "toolbar"
|
|
23484
23794
|
}) => {
|
|
23795
|
+
const { t } = useTranslate();
|
|
23485
23796
|
const eventBus = useEventBus();
|
|
23486
23797
|
const queryState = useQuerySingleton(query);
|
|
23487
23798
|
const [selectedValues, setSelectedValues] = React79.useState(
|
|
@@ -23563,7 +23874,7 @@ var init_FilterGroup = __esm({
|
|
|
23563
23874
|
"px-3 py-1.5 text-sm font-medium transition-all duration-[var(--transition-fast)]",
|
|
23564
23875
|
!selectedValues[filter.field] ? "bg-primary text-primary-foreground" : "bg-card text-muted-foreground hover:bg-muted"
|
|
23565
23876
|
),
|
|
23566
|
-
children: "
|
|
23877
|
+
children: t("filterGroup.all")
|
|
23567
23878
|
}
|
|
23568
23879
|
),
|
|
23569
23880
|
filter.options?.map((option) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -23591,7 +23902,7 @@ var init_FilterGroup = __esm({
|
|
|
23591
23902
|
size: "sm",
|
|
23592
23903
|
onClick: handleClearAll,
|
|
23593
23904
|
leftIcon: /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "x", className: "h-3.5 w-3.5" }),
|
|
23594
|
-
children: "
|
|
23905
|
+
children: t("filterGroup.clear")
|
|
23595
23906
|
}
|
|
23596
23907
|
)
|
|
23597
23908
|
]
|
|
@@ -23602,7 +23913,7 @@ var init_FilterGroup = __esm({
|
|
|
23602
23913
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col gap-4", lookStyles6[look], className), children: [
|
|
23603
23914
|
showIcon && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-muted-foreground", children: [
|
|
23604
23915
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "filter", className: "h-4 w-4" }),
|
|
23605
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: "
|
|
23916
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: t("filterGroup.filters") })
|
|
23606
23917
|
] }),
|
|
23607
23918
|
filters.map((filter) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
23608
23919
|
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-xs font-bold text-muted-foreground uppercase tracking-wide", children: filter.label }),
|
|
@@ -23625,7 +23936,7 @@ var init_FilterGroup = __esm({
|
|
|
23625
23936
|
`${filter.field}_from`,
|
|
23626
23937
|
e.target.value || null
|
|
23627
23938
|
),
|
|
23628
|
-
placeholder: "
|
|
23939
|
+
placeholder: t("filterGroup.from"),
|
|
23629
23940
|
clearable: true,
|
|
23630
23941
|
onClear: () => handleFilterSelect(`${filter.field}_from`, null)
|
|
23631
23942
|
}
|
|
@@ -23639,7 +23950,7 @@ var init_FilterGroup = __esm({
|
|
|
23639
23950
|
`${filter.field}_to`,
|
|
23640
23951
|
e.target.value || null
|
|
23641
23952
|
),
|
|
23642
|
-
placeholder: "
|
|
23953
|
+
placeholder: t("filterGroup.to"),
|
|
23643
23954
|
clearable: true,
|
|
23644
23955
|
onClear: () => handleFilterSelect(`${filter.field}_to`, null)
|
|
23645
23956
|
}
|
|
@@ -23659,7 +23970,7 @@ var init_FilterGroup = __esm({
|
|
|
23659
23970
|
value: selectedValues[filter.field] || "all",
|
|
23660
23971
|
onChange: (e) => handleFilterSelect(filter.field, e.target.value),
|
|
23661
23972
|
options: [
|
|
23662
|
-
{ value: "all", label: "
|
|
23973
|
+
{ value: "all", label: t("filterGroup.all") },
|
|
23663
23974
|
...filter.options?.map((opt) => ({
|
|
23664
23975
|
value: opt,
|
|
23665
23976
|
label: opt
|
|
@@ -23676,7 +23987,7 @@ var init_FilterGroup = __esm({
|
|
|
23676
23987
|
onClick: handleClearAll,
|
|
23677
23988
|
leftIcon: /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "x", className: "h-3.5 w-3.5" }),
|
|
23678
23989
|
className: "self-start",
|
|
23679
|
-
children: "
|
|
23990
|
+
children: t("filterGroup.clearAll")
|
|
23680
23991
|
}
|
|
23681
23992
|
)
|
|
23682
23993
|
] });
|
|
@@ -23742,7 +24053,7 @@ var init_FilterGroup = __esm({
|
|
|
23742
24053
|
value: selectedValues[filter.field] || "all",
|
|
23743
24054
|
onChange: (e) => handleFilterSelect(filter.field, e.target.value),
|
|
23744
24055
|
options: [
|
|
23745
|
-
{ value: "all", label:
|
|
24056
|
+
{ value: "all", label: t("filterGroup.allOf", { label: filter.label }) },
|
|
23746
24057
|
...filter.options?.map((opt) => ({
|
|
23747
24058
|
value: opt,
|
|
23748
24059
|
label: opt
|
|
@@ -23771,7 +24082,7 @@ var init_FilterGroup = __esm({
|
|
|
23771
24082
|
field
|
|
23772
24083
|
);
|
|
23773
24084
|
}),
|
|
23774
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Button, { variant: "ghost", size: "sm", onClick: handleClearAll, children: "
|
|
24085
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Button, { variant: "ghost", size: "sm", onClick: handleClearAll, children: t("filterGroup.clearAll") })
|
|
23775
24086
|
] })
|
|
23776
24087
|
]
|
|
23777
24088
|
}
|
|
@@ -23796,7 +24107,7 @@ var init_FilterGroup = __esm({
|
|
|
23796
24107
|
className: "text-muted-foreground",
|
|
23797
24108
|
children: [
|
|
23798
24109
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "filter", className: "h-4 w-4" }),
|
|
23799
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: "
|
|
24110
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: t("filterGroup.filters") })
|
|
23800
24111
|
]
|
|
23801
24112
|
}
|
|
23802
24113
|
),
|
|
@@ -23822,7 +24133,7 @@ var init_FilterGroup = __esm({
|
|
|
23822
24133
|
`${filter.field}_from`,
|
|
23823
24134
|
e.target.value || null
|
|
23824
24135
|
),
|
|
23825
|
-
placeholder: "
|
|
24136
|
+
placeholder: t("filterGroup.from"),
|
|
23826
24137
|
clearable: true,
|
|
23827
24138
|
onClear: () => handleFilterSelect(`${filter.field}_from`, null),
|
|
23828
24139
|
className: "min-w-[130px]"
|
|
@@ -23838,7 +24149,7 @@ var init_FilterGroup = __esm({
|
|
|
23838
24149
|
`${filter.field}_to`,
|
|
23839
24150
|
e.target.value || null
|
|
23840
24151
|
),
|
|
23841
|
-
placeholder: "
|
|
24152
|
+
placeholder: t("filterGroup.to"),
|
|
23842
24153
|
clearable: true,
|
|
23843
24154
|
onClear: () => handleFilterSelect(`${filter.field}_to`, null),
|
|
23844
24155
|
className: "min-w-[130px]"
|
|
@@ -23860,7 +24171,7 @@ var init_FilterGroup = __esm({
|
|
|
23860
24171
|
value: selectedValues[filter.field] || "all",
|
|
23861
24172
|
onChange: (e) => handleFilterSelect(filter.field, e.target.value),
|
|
23862
24173
|
options: [
|
|
23863
|
-
{ value: "all", label: "
|
|
24174
|
+
{ value: "all", label: t("filterGroup.all") },
|
|
23864
24175
|
...filter.options?.map((opt) => ({
|
|
23865
24176
|
value: opt,
|
|
23866
24177
|
label: opt
|
|
@@ -23871,10 +24182,7 @@ var init_FilterGroup = __esm({
|
|
|
23871
24182
|
)
|
|
23872
24183
|
] }, filter.field)),
|
|
23873
24184
|
activeFilterCount > 0 && /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { gap: "sm", align: "center", className: "ml-auto", children: [
|
|
23874
|
-
/* @__PURE__ */ jsxRuntime.
|
|
23875
|
-
activeFilterCount,
|
|
23876
|
-
" active"
|
|
23877
|
-
] }),
|
|
24185
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant: "primary", size: "md", children: t("filterGroup.activeCount", { count: activeFilterCount }) }),
|
|
23878
24186
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
23879
24187
|
exports.Button,
|
|
23880
24188
|
{
|
|
@@ -23882,7 +24190,7 @@ var init_FilterGroup = __esm({
|
|
|
23882
24190
|
size: "sm",
|
|
23883
24191
|
onClick: handleClearAll,
|
|
23884
24192
|
leftIcon: /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "x", className: "h-3.5 w-3.5" }),
|
|
23885
|
-
children: "
|
|
24193
|
+
children: t("filterGroup.clearAll")
|
|
23886
24194
|
}
|
|
23887
24195
|
)
|
|
23888
24196
|
] })
|
|
@@ -24362,7 +24670,7 @@ var init_RelationSelect = __esm({
|
|
|
24362
24670
|
value,
|
|
24363
24671
|
onChange,
|
|
24364
24672
|
options = [],
|
|
24365
|
-
placeholder
|
|
24673
|
+
placeholder,
|
|
24366
24674
|
required = false,
|
|
24367
24675
|
disabled = false,
|
|
24368
24676
|
isLoading = false,
|
|
@@ -24374,6 +24682,7 @@ var init_RelationSelect = __esm({
|
|
|
24374
24682
|
emptyMessage
|
|
24375
24683
|
}) => {
|
|
24376
24684
|
const { t } = useTranslate();
|
|
24685
|
+
const resolvedPlaceholder = placeholder ?? t("relationSelect.selectPlaceholder");
|
|
24377
24686
|
const resolvedSearchPlaceholder = searchPlaceholder ?? t("common.search");
|
|
24378
24687
|
const resolvedEmptyMessage = emptyMessage ?? t("empty.noOptionsFound");
|
|
24379
24688
|
const [isOpen, setIsOpen] = React79.useState(false);
|
|
@@ -24483,7 +24792,7 @@ var init_RelationSelect = __esm({
|
|
|
24483
24792
|
children: isLoading ? /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { gap: "xs", align: "center", children: [
|
|
24484
24793
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Spinner, { size: "sm" }),
|
|
24485
24794
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { as: "span", children: t("common.loading") })
|
|
24486
|
-
] }) : selectedOption ? selectedOption.label :
|
|
24795
|
+
] }) : selectedOption ? selectedOption.label : resolvedPlaceholder
|
|
24487
24796
|
}
|
|
24488
24797
|
),
|
|
24489
24798
|
/* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { gap: "xs", align: "center", children: [
|
|
@@ -25077,19 +25386,20 @@ var init_RepeatableFormSection = __esm({
|
|
|
25077
25386
|
exports.RepeatableFormSection.displayName = "RepeatableFormSection";
|
|
25078
25387
|
}
|
|
25079
25388
|
});
|
|
25080
|
-
var
|
|
25389
|
+
var actionTypeLabelKeys, actionTypeIcons; exports.ViolationAlert = void 0;
|
|
25081
25390
|
var init_ViolationAlert = __esm({
|
|
25082
25391
|
"components/core/molecules/ViolationAlert.tsx"() {
|
|
25083
25392
|
init_cn();
|
|
25393
|
+
init_useTranslate();
|
|
25084
25394
|
init_Box();
|
|
25085
25395
|
init_Stack();
|
|
25086
25396
|
init_Typography();
|
|
25087
25397
|
init_Button();
|
|
25088
25398
|
init_Icon();
|
|
25089
|
-
|
|
25090
|
-
measure: "
|
|
25091
|
-
admin: "
|
|
25092
|
-
penalty: "
|
|
25399
|
+
actionTypeLabelKeys = {
|
|
25400
|
+
measure: "violationAlert.actionType.measure",
|
|
25401
|
+
admin: "violationAlert.actionType.admin",
|
|
25402
|
+
penalty: "violationAlert.actionType.penalty"
|
|
25093
25403
|
};
|
|
25094
25404
|
actionTypeIcons = {
|
|
25095
25405
|
measure: "alert-triangle",
|
|
@@ -25106,10 +25416,11 @@ var init_ViolationAlert = __esm({
|
|
|
25106
25416
|
className,
|
|
25107
25417
|
...flatProps
|
|
25108
25418
|
}) => {
|
|
25419
|
+
const { t } = useTranslate();
|
|
25109
25420
|
const resolvedViolation = violation ?? {
|
|
25110
25421
|
law: "",
|
|
25111
25422
|
article: "",
|
|
25112
|
-
message: flatProps.message ?? "
|
|
25423
|
+
message: flatProps.message ?? t("violationAlert.fallbackMessage"),
|
|
25113
25424
|
actionType: "measure"
|
|
25114
25425
|
};
|
|
25115
25426
|
const effectiveSeverity = severity ?? (resolvedViolation.actionType === "measure" ? "warning" : "error");
|
|
@@ -25194,7 +25505,7 @@ var init_ViolationAlert = __esm({
|
|
|
25194
25505
|
{
|
|
25195
25506
|
variant: "caption",
|
|
25196
25507
|
className: cn(textColor, "opacity-75"),
|
|
25197
|
-
children:
|
|
25508
|
+
children: t(actionTypeLabelKeys[resolvedViolation.actionType])
|
|
25198
25509
|
}
|
|
25199
25510
|
)
|
|
25200
25511
|
] })
|
|
@@ -25225,7 +25536,7 @@ var init_ViolationAlert = __esm({
|
|
|
25225
25536
|
{
|
|
25226
25537
|
variant: "caption",
|
|
25227
25538
|
className: cn(textColor, "opacity-75"),
|
|
25228
|
-
children: "
|
|
25539
|
+
children: t("violationAlert.adminLabel")
|
|
25229
25540
|
}
|
|
25230
25541
|
),
|
|
25231
25542
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -25244,7 +25555,7 @@ var init_ViolationAlert = __esm({
|
|
|
25244
25555
|
{
|
|
25245
25556
|
variant: "caption",
|
|
25246
25557
|
className: cn(textColor, "opacity-75"),
|
|
25247
|
-
children: "
|
|
25558
|
+
children: t("violationAlert.penaltyLabel")
|
|
25248
25559
|
}
|
|
25249
25560
|
),
|
|
25250
25561
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -25269,7 +25580,7 @@ var init_ViolationAlert = __esm({
|
|
|
25269
25580
|
className: cn(textColor, "self-start"),
|
|
25270
25581
|
children: [
|
|
25271
25582
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "arrow-right", size: "sm", className: "mr-1" }),
|
|
25272
|
-
"
|
|
25583
|
+
t("violationAlert.goToField")
|
|
25273
25584
|
]
|
|
25274
25585
|
}
|
|
25275
25586
|
)
|
|
@@ -25585,6 +25896,7 @@ var init_LineChart = __esm({
|
|
|
25585
25896
|
"use client";
|
|
25586
25897
|
init_cn();
|
|
25587
25898
|
init_atoms2();
|
|
25899
|
+
init_useTranslate();
|
|
25588
25900
|
exports.LineChart = ({
|
|
25589
25901
|
data,
|
|
25590
25902
|
width = 400,
|
|
@@ -25596,6 +25908,7 @@ var init_LineChart = __esm({
|
|
|
25596
25908
|
areaColor = "var(--color-primary)",
|
|
25597
25909
|
className
|
|
25598
25910
|
}) => {
|
|
25911
|
+
const { t } = useTranslate();
|
|
25599
25912
|
const gradientId = React79.useId();
|
|
25600
25913
|
const safeData = data ?? [];
|
|
25601
25914
|
const sortedData = React79.useMemo(() => {
|
|
@@ -25632,7 +25945,7 @@ var init_LineChart = __esm({
|
|
|
25632
25945
|
return `${linePath} L ${last.x} ${bottom} L ${first.x} ${bottom} Z`;
|
|
25633
25946
|
}, [linePath, points, height, showArea]);
|
|
25634
25947
|
if (safeData.length === 0) {
|
|
25635
|
-
return /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: cn("flex items-center justify-center text-muted-foreground", className), style: { width, height }, children: "
|
|
25948
|
+
return /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: cn("flex items-center justify-center text-muted-foreground", className), style: { width, height }, children: t("empty.noData") });
|
|
25636
25949
|
}
|
|
25637
25950
|
return /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: cn(className), children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
25638
25951
|
"svg",
|
|
@@ -27823,6 +28136,7 @@ var init_GraphView = __esm({
|
|
|
27823
28136
|
"use client";
|
|
27824
28137
|
init_cn();
|
|
27825
28138
|
init_atoms2();
|
|
28139
|
+
init_useTranslate();
|
|
27826
28140
|
GROUP_COLORS = [
|
|
27827
28141
|
"#3b82f6",
|
|
27828
28142
|
// blue-500
|
|
@@ -27855,6 +28169,7 @@ var init_GraphView = __esm({
|
|
|
27855
28169
|
showLabels = true,
|
|
27856
28170
|
zoomToFit = true
|
|
27857
28171
|
}) => {
|
|
28172
|
+
const { t } = useTranslate();
|
|
27858
28173
|
const containerRef = React79.useRef(null);
|
|
27859
28174
|
const animRef = React79.useRef(0);
|
|
27860
28175
|
const [simNodes, setSimNodes] = React79.useState([]);
|
|
@@ -28032,7 +28347,7 @@ var init_GraphView = __esm({
|
|
|
28032
28347
|
[onNodeClick]
|
|
28033
28348
|
);
|
|
28034
28349
|
if (nodes.length === 0) {
|
|
28035
|
-
return /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: cn("flex items-center justify-center", className), style: { width: w, height: h }, children: /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "text-muted-foreground text-sm", children: "
|
|
28350
|
+
return /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: cn("flex items-center justify-center", className), style: { width: w, height: h }, children: /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "text-muted-foreground text-sm", children: t("display.noGraphData") }) });
|
|
28036
28351
|
}
|
|
28037
28352
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
28038
28353
|
exports.Box,
|
|
@@ -28488,11 +28803,12 @@ var init_UploadDropZone = __esm({
|
|
|
28488
28803
|
init_Icon();
|
|
28489
28804
|
init_Typography();
|
|
28490
28805
|
init_useEventBus();
|
|
28806
|
+
init_useTranslate();
|
|
28491
28807
|
exports.UploadDropZone = ({
|
|
28492
28808
|
accept,
|
|
28493
28809
|
maxSize,
|
|
28494
28810
|
maxFiles = 1,
|
|
28495
|
-
label
|
|
28811
|
+
label,
|
|
28496
28812
|
description,
|
|
28497
28813
|
disabled = false,
|
|
28498
28814
|
action,
|
|
@@ -28500,22 +28816,24 @@ var init_UploadDropZone = __esm({
|
|
|
28500
28816
|
onFiles,
|
|
28501
28817
|
className
|
|
28502
28818
|
}) => {
|
|
28819
|
+
const { t } = useTranslate();
|
|
28820
|
+
const resolvedLabel = label ?? t("upload.dropOrBrowse");
|
|
28503
28821
|
const [isDragOver, setIsDragOver] = React79.useState(false);
|
|
28504
28822
|
const [error, setError] = React79.useState(null);
|
|
28505
28823
|
const inputRef = React79.useRef(null);
|
|
28506
28824
|
const eventBus = useSafeEventBus7();
|
|
28507
28825
|
const defaultDescription = [
|
|
28508
|
-
accept ?
|
|
28509
|
-
maxSize ?
|
|
28510
|
-
maxFiles > 1 ?
|
|
28826
|
+
accept ? t("upload.accepted", { accept }) : null,
|
|
28827
|
+
maxSize ? t("upload.maxSize", { size: formatFileSize(maxSize) }) : null,
|
|
28828
|
+
maxFiles > 1 ? t("upload.maxFiles", { count: maxFiles }) : null
|
|
28511
28829
|
].filter(Boolean).join(". ");
|
|
28512
28830
|
const validateFiles = React79.useCallback(
|
|
28513
28831
|
(files) => {
|
|
28514
28832
|
if (files.length > maxFiles) {
|
|
28515
|
-
return { valid: [], error:
|
|
28833
|
+
return { valid: [], error: t("upload.error.maxFiles", { count: maxFiles }) };
|
|
28516
28834
|
}
|
|
28517
28835
|
if (accept) {
|
|
28518
|
-
const acceptedTypes = accept.split(",").map((
|
|
28836
|
+
const acceptedTypes = accept.split(",").map((s) => s.trim());
|
|
28519
28837
|
const invalid = files.filter((file) => {
|
|
28520
28838
|
return !acceptedTypes.some((type) => {
|
|
28521
28839
|
if (type.endsWith("/*")) {
|
|
@@ -28525,7 +28843,7 @@ var init_UploadDropZone = __esm({
|
|
|
28525
28843
|
});
|
|
28526
28844
|
});
|
|
28527
28845
|
if (invalid.length > 0) {
|
|
28528
|
-
return { valid: [], error:
|
|
28846
|
+
return { valid: [], error: t("upload.error.invalidType", { name: invalid[0].name }) };
|
|
28529
28847
|
}
|
|
28530
28848
|
}
|
|
28531
28849
|
if (maxSize) {
|
|
@@ -28533,13 +28851,13 @@ var init_UploadDropZone = __esm({
|
|
|
28533
28851
|
if (tooLarge.length > 0) {
|
|
28534
28852
|
return {
|
|
28535
28853
|
valid: [],
|
|
28536
|
-
error:
|
|
28854
|
+
error: t("upload.error.tooLarge", { name: tooLarge[0].name, size: formatFileSize(maxSize) })
|
|
28537
28855
|
};
|
|
28538
28856
|
}
|
|
28539
28857
|
}
|
|
28540
28858
|
return { valid: files, error: null };
|
|
28541
28859
|
},
|
|
28542
|
-
[accept, maxSize, maxFiles]
|
|
28860
|
+
[accept, maxSize, maxFiles, t]
|
|
28543
28861
|
);
|
|
28544
28862
|
const handleFiles = React79.useCallback(
|
|
28545
28863
|
(files) => {
|
|
@@ -28610,7 +28928,7 @@ var init_UploadDropZone = __esm({
|
|
|
28610
28928
|
handleClick();
|
|
28611
28929
|
}
|
|
28612
28930
|
},
|
|
28613
|
-
"aria-label":
|
|
28931
|
+
"aria-label": resolvedLabel,
|
|
28614
28932
|
children: [
|
|
28615
28933
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
28616
28934
|
"input",
|
|
@@ -28626,7 +28944,7 @@ var init_UploadDropZone = __esm({
|
|
|
28626
28944
|
}
|
|
28627
28945
|
),
|
|
28628
28946
|
error ? /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "file-warning", size: "lg", className: "text-error mb-2" }) : /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "upload", size: "lg", className: "text-muted-foreground mb-2" }),
|
|
28629
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body1", className: "text-center font-medium mb-1", children: isDragOver ? "
|
|
28947
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body1", className: "text-center font-medium mb-1", children: isDragOver ? t("upload.dropFilesHere") : resolvedLabel }),
|
|
28630
28948
|
error ? /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", color: "error", className: "text-center", children: error }) : /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", color: "muted", className: "text-center", children: description ?? defaultDescription })
|
|
28631
28949
|
]
|
|
28632
28950
|
}
|
|
@@ -29048,7 +29366,7 @@ function TableView({
|
|
|
29048
29366
|
{
|
|
29049
29367
|
checked: selected.has(id),
|
|
29050
29368
|
onChange: () => toggleRow(id),
|
|
29051
|
-
"aria-label":
|
|
29369
|
+
"aria-label": t("table.selectRow", { id })
|
|
29052
29370
|
}
|
|
29053
29371
|
) }),
|
|
29054
29372
|
hasRenderProp ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "flex-1 min-w-0", children: children(row, index) }) : colDefs.map((col) => {
|
|
@@ -31895,7 +32213,7 @@ var init_QrScanner = __esm({
|
|
|
31895
32213
|
className: "inset-0 flex-col items-center justify-center gap-2 bg-black bg-opacity-80 text-center",
|
|
31896
32214
|
children: [
|
|
31897
32215
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "camera", className: "h-8 w-8 text-white", "aria-hidden": "true" }),
|
|
31898
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body2", className: "text-white", children: "
|
|
32216
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body2", className: "text-white", children: t("qrScanner.cameraUnavailable") }),
|
|
31899
32217
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "text-white opacity-70", children: cameraError.message })
|
|
31900
32218
|
]
|
|
31901
32219
|
}
|
|
@@ -31906,7 +32224,7 @@ var init_QrScanner = __esm({
|
|
|
31906
32224
|
position: "absolute",
|
|
31907
32225
|
display: "flex",
|
|
31908
32226
|
className: "inset-0 items-center justify-center bg-black bg-opacity-60",
|
|
31909
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body2", className: "text-white", children: "
|
|
32227
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body2", className: "text-white", children: t("qrScanner.paused") })
|
|
31910
32228
|
}
|
|
31911
32229
|
),
|
|
31912
32230
|
showCameraControls && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -31925,7 +32243,7 @@ var init_QrScanner = __esm({
|
|
|
31925
32243
|
"rounded-full bg-black bg-opacity-60 p-2 text-white",
|
|
31926
32244
|
"hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
|
|
31927
32245
|
),
|
|
31928
|
-
"aria-label": isPaused ? "
|
|
32246
|
+
"aria-label": isPaused ? t("qrScanner.resumeScanning") : t("qrScanner.pauseScanning"),
|
|
31929
32247
|
children: isPaused ? /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "play", className: "h-4 w-4" }) : /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "pause", className: "h-4 w-4" })
|
|
31930
32248
|
}
|
|
31931
32249
|
),
|
|
@@ -31938,7 +32256,7 @@ var init_QrScanner = __esm({
|
|
|
31938
32256
|
"rounded-full bg-black bg-opacity-60 p-2 text-white",
|
|
31939
32257
|
"hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
|
|
31940
32258
|
),
|
|
31941
|
-
"aria-label":
|
|
32259
|
+
"aria-label": currentFacing === "environment" ? t("qrScanner.switchToFrontCamera") : t("qrScanner.switchToRearCamera"),
|
|
31942
32260
|
children: /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "refresh-cw", className: "h-4 w-4" })
|
|
31943
32261
|
}
|
|
31944
32262
|
),
|
|
@@ -31952,7 +32270,7 @@ var init_QrScanner = __esm({
|
|
|
31952
32270
|
"hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
|
|
31953
32271
|
),
|
|
31954
32272
|
"aria-label": t("aria.mockScanDev"),
|
|
31955
|
-
children: "
|
|
32273
|
+
children: t("qrScanner.mockScan")
|
|
31956
32274
|
}
|
|
31957
32275
|
)
|
|
31958
32276
|
]
|
|
@@ -31970,6 +32288,7 @@ var init_OptionConstraintGroup = __esm({
|
|
|
31970
32288
|
"components/core/molecules/OptionConstraintGroup.tsx"() {
|
|
31971
32289
|
init_cn();
|
|
31972
32290
|
init_useEventBus();
|
|
32291
|
+
init_useTranslate();
|
|
31973
32292
|
init_Typography();
|
|
31974
32293
|
init_Box();
|
|
31975
32294
|
init_Label();
|
|
@@ -31979,36 +32298,36 @@ var init_OptionConstraintGroup = __esm({
|
|
|
31979
32298
|
const sign = delta >= 0 ? "+" : "-";
|
|
31980
32299
|
return `${sign}$${Math.abs(delta).toFixed(2)}`;
|
|
31981
32300
|
};
|
|
31982
|
-
constraintHint = (constraint) => {
|
|
32301
|
+
constraintHint = (constraint, t) => {
|
|
31983
32302
|
if (constraint.type === "single") {
|
|
31984
|
-
return constraint.required ? "
|
|
32303
|
+
return constraint.required ? t("optionConstraint.requiredOne") : t("optionConstraint.optionalOne");
|
|
31985
32304
|
}
|
|
31986
32305
|
const { min, max } = constraint;
|
|
31987
32306
|
if (min && max) {
|
|
31988
|
-
return min === max ?
|
|
32307
|
+
return min === max ? t("optionConstraint.pickExactly", { count: min }) : t("optionConstraint.pickRange", { min, max });
|
|
31989
32308
|
}
|
|
31990
|
-
if (min) return
|
|
31991
|
-
if (max) return
|
|
31992
|
-
return "
|
|
32309
|
+
if (min) return t("optionConstraint.pickAtLeast", { count: min });
|
|
32310
|
+
if (max) return t("optionConstraint.pickUpTo", { count: max });
|
|
32311
|
+
return t("optionConstraint.optional");
|
|
31993
32312
|
};
|
|
31994
|
-
validateSelection = (selected, constraint) => {
|
|
32313
|
+
validateSelection = (selected, constraint, t) => {
|
|
31995
32314
|
if (constraint.type === "single") {
|
|
31996
32315
|
if (constraint.required && selected.length === 0) {
|
|
31997
|
-
return "
|
|
32316
|
+
return t("optionConstraint.error.pickOne");
|
|
31998
32317
|
}
|
|
31999
32318
|
if (selected.length > 1) {
|
|
32000
|
-
return "
|
|
32319
|
+
return t("optionConstraint.error.pickOnlyOne");
|
|
32001
32320
|
}
|
|
32002
32321
|
return void 0;
|
|
32003
32322
|
}
|
|
32004
32323
|
const { min, max } = constraint;
|
|
32005
32324
|
if (min !== void 0 && selected.length < min) {
|
|
32006
32325
|
const remaining = min - selected.length;
|
|
32007
|
-
return
|
|
32326
|
+
return t("optionConstraint.error.pickMore", { count: remaining });
|
|
32008
32327
|
}
|
|
32009
32328
|
if (max !== void 0 && selected.length > max) {
|
|
32010
32329
|
const excess = selected.length - max;
|
|
32011
|
-
return
|
|
32330
|
+
return t("optionConstraint.error.removeOptions", { count: excess });
|
|
32012
32331
|
}
|
|
32013
32332
|
return void 0;
|
|
32014
32333
|
};
|
|
@@ -32025,8 +32344,9 @@ var init_OptionConstraintGroup = __esm({
|
|
|
32025
32344
|
className
|
|
32026
32345
|
}) => {
|
|
32027
32346
|
const eventBus = useEventBus();
|
|
32028
|
-
const
|
|
32029
|
-
const
|
|
32347
|
+
const { t } = useTranslate();
|
|
32348
|
+
const hint = constraintHint(constraint, t);
|
|
32349
|
+
const error = validateSelection(selected, constraint, t);
|
|
32030
32350
|
const inputName = `option-${groupId}`;
|
|
32031
32351
|
const labelTextSize = size === "sm" ? "text-sm" : "text-base";
|
|
32032
32352
|
const optionGap = size === "sm" ? "gap-2" : "gap-2.5";
|
|
@@ -32126,7 +32446,7 @@ var init_OptionConstraintGroup = __esm({
|
|
|
32126
32446
|
variant: "caption",
|
|
32127
32447
|
color: "warning",
|
|
32128
32448
|
className: "rounded border border-warning/40 px-1.5 py-0.5",
|
|
32129
|
-
children: "
|
|
32449
|
+
children: t("optionConstraint.outOfStock")
|
|
32130
32450
|
}
|
|
32131
32451
|
)
|
|
32132
32452
|
]
|
|
@@ -32448,6 +32768,7 @@ function changeBlockType(block, type) {
|
|
|
32448
32768
|
return { id: block.id, type, content: seed };
|
|
32449
32769
|
}
|
|
32450
32770
|
function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
32771
|
+
const { t } = useTranslate();
|
|
32451
32772
|
const [open, setOpen] = React79.useState(false);
|
|
32452
32773
|
const ref = React79.useRef(null);
|
|
32453
32774
|
React79.useEffect(() => {
|
|
@@ -32467,7 +32788,7 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
32467
32788
|
{
|
|
32468
32789
|
type: "button",
|
|
32469
32790
|
variant: "ghost",
|
|
32470
|
-
"aria-label": "
|
|
32791
|
+
"aria-label": t("richBlockEditor.blockActions"),
|
|
32471
32792
|
className: cn(
|
|
32472
32793
|
"inline-flex items-center justify-center",
|
|
32473
32794
|
"h-6 w-6 rounded-sm p-0 gap-0",
|
|
@@ -32489,7 +32810,7 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
32489
32810
|
"py-1 text-sm"
|
|
32490
32811
|
),
|
|
32491
32812
|
children: [
|
|
32492
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground", children:
|
|
32813
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground", children: t(BLOCK_TYPE_LABEL_KEY[block.type]) }),
|
|
32493
32814
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
32494
32815
|
exports.Button,
|
|
32495
32816
|
{
|
|
@@ -32503,7 +32824,8 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
32503
32824
|
},
|
|
32504
32825
|
children: [
|
|
32505
32826
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "plus", className: "w-3.5 h-3.5" }),
|
|
32506
|
-
"
|
|
32827
|
+
" ",
|
|
32828
|
+
t("richBlockEditor.duplicate")
|
|
32507
32829
|
]
|
|
32508
32830
|
}
|
|
32509
32831
|
),
|
|
@@ -32520,14 +32842,15 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
32520
32842
|
},
|
|
32521
32843
|
children: [
|
|
32522
32844
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "trash", className: "w-3.5 h-3.5" }),
|
|
32523
|
-
"
|
|
32845
|
+
" ",
|
|
32846
|
+
t("common.delete")
|
|
32524
32847
|
]
|
|
32525
32848
|
}
|
|
32526
32849
|
),
|
|
32527
32850
|
CHANGEABLE_TYPES.includes(block.type) && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
32528
32851
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "my-1 border-t border-border" }),
|
|
32529
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground", children: "
|
|
32530
|
-
CHANGEABLE_TYPES.filter((
|
|
32852
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground", children: t("richBlockEditor.turnInto") }),
|
|
32853
|
+
CHANGEABLE_TYPES.filter((bt) => bt !== block.type).map((bt) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
32531
32854
|
exports.Button,
|
|
32532
32855
|
{
|
|
32533
32856
|
type: "button",
|
|
@@ -32535,12 +32858,12 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
32535
32858
|
role: "menuitem",
|
|
32536
32859
|
className: "flex w-full items-center gap-2 px-2 py-1.5 text-left justify-start rounded-none",
|
|
32537
32860
|
onClick: () => {
|
|
32538
|
-
onChangeType(
|
|
32861
|
+
onChangeType(bt);
|
|
32539
32862
|
setOpen(false);
|
|
32540
32863
|
},
|
|
32541
|
-
children:
|
|
32864
|
+
children: t(BLOCK_TYPE_LABEL_KEY[bt])
|
|
32542
32865
|
},
|
|
32543
|
-
|
|
32866
|
+
bt
|
|
32544
32867
|
))
|
|
32545
32868
|
] })
|
|
32546
32869
|
]
|
|
@@ -32602,6 +32925,7 @@ function BlockRow({
|
|
|
32602
32925
|
onInsertAfter,
|
|
32603
32926
|
onChangeType
|
|
32604
32927
|
}) {
|
|
32928
|
+
const { t } = useTranslate();
|
|
32605
32929
|
const setContent = React79.useCallback(
|
|
32606
32930
|
(next) => onUpdate((b) => ({ ...b, content: next })),
|
|
32607
32931
|
[onUpdate]
|
|
@@ -32651,8 +32975,8 @@ function BlockRow({
|
|
|
32651
32975
|
tag: "h1",
|
|
32652
32976
|
value: block.content ?? "",
|
|
32653
32977
|
readOnly,
|
|
32654
|
-
placeholder: placeholder ?? "
|
|
32655
|
-
ariaLabel: "
|
|
32978
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.heading1"),
|
|
32979
|
+
ariaLabel: t("richBlockEditor.aria.heading1Block"),
|
|
32656
32980
|
className: "text-3xl font-bold leading-tight",
|
|
32657
32981
|
onValueChange: setContent
|
|
32658
32982
|
}
|
|
@@ -32664,8 +32988,8 @@ function BlockRow({
|
|
|
32664
32988
|
tag: "h2",
|
|
32665
32989
|
value: block.content ?? "",
|
|
32666
32990
|
readOnly,
|
|
32667
|
-
placeholder: placeholder ?? "
|
|
32668
|
-
ariaLabel: "
|
|
32991
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.heading2"),
|
|
32992
|
+
ariaLabel: t("richBlockEditor.aria.heading2Block"),
|
|
32669
32993
|
className: "text-2xl font-semibold leading-tight",
|
|
32670
32994
|
onValueChange: setContent
|
|
32671
32995
|
}
|
|
@@ -32677,8 +33001,8 @@ function BlockRow({
|
|
|
32677
33001
|
tag: "h3",
|
|
32678
33002
|
value: block.content ?? "",
|
|
32679
33003
|
readOnly,
|
|
32680
|
-
placeholder: placeholder ?? "
|
|
32681
|
-
ariaLabel: "
|
|
33004
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.heading3"),
|
|
33005
|
+
ariaLabel: t("richBlockEditor.aria.heading3Block"),
|
|
32682
33006
|
className: "text-xl font-semibold leading-tight",
|
|
32683
33007
|
onValueChange: setContent
|
|
32684
33008
|
}
|
|
@@ -32690,8 +33014,8 @@ function BlockRow({
|
|
|
32690
33014
|
tag: "blockquote",
|
|
32691
33015
|
value: block.content ?? "",
|
|
32692
33016
|
readOnly,
|
|
32693
|
-
placeholder: placeholder ?? "
|
|
32694
|
-
ariaLabel: "
|
|
33017
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.quote"),
|
|
33018
|
+
ariaLabel: t("richBlockEditor.aria.quoteBlock"),
|
|
32695
33019
|
className: "border-l-4 border-primary/60 pl-4 italic text-muted-foreground",
|
|
32696
33020
|
onValueChange: setContent
|
|
32697
33021
|
}
|
|
@@ -32699,13 +33023,13 @@ function BlockRow({
|
|
|
32699
33023
|
case "code":
|
|
32700
33024
|
return /* @__PURE__ */ jsxRuntime.jsxs(exports.Box, { className: "rounded-md border border-border bg-muted/40", children: [
|
|
32701
33025
|
/* @__PURE__ */ jsxRuntime.jsxs(exports.Box, { className: "flex items-center justify-between border-b border-border px-3 py-1 text-xs text-muted-foreground", children: [
|
|
32702
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { as: "span", variant: "caption", className: "uppercase tracking-wide", children: "
|
|
33026
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { as: "span", variant: "caption", className: "uppercase tracking-wide", children: t("richBlockEditor.blockType.code") }),
|
|
32703
33027
|
!readOnly && /* @__PURE__ */ jsxRuntime.jsx(
|
|
32704
33028
|
exports.Input,
|
|
32705
33029
|
{
|
|
32706
33030
|
inputType: "text",
|
|
32707
33031
|
value: String(block.metadata?.language ?? "plaintext"),
|
|
32708
|
-
"aria-label": "
|
|
33032
|
+
"aria-label": t("richBlockEditor.aria.codeLanguage"),
|
|
32709
33033
|
className: cn(
|
|
32710
33034
|
"h-6 w-32 rounded-sm border border-border bg-background",
|
|
32711
33035
|
"px-2 text-xs outline-none focus:ring-1 focus:ring-ring"
|
|
@@ -32721,8 +33045,8 @@ function BlockRow({
|
|
|
32721
33045
|
tag: "pre",
|
|
32722
33046
|
value: block.content ?? "",
|
|
32723
33047
|
readOnly,
|
|
32724
|
-
placeholder: placeholder ?? "
|
|
32725
|
-
ariaLabel: "
|
|
33048
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.code"),
|
|
33049
|
+
ariaLabel: t("richBlockEditor.aria.codeBlock"),
|
|
32726
33050
|
className: "block whitespace-pre-wrap p-3 font-mono text-sm leading-relaxed",
|
|
32727
33051
|
onValueChange: setContent
|
|
32728
33052
|
}
|
|
@@ -32735,7 +33059,7 @@ function BlockRow({
|
|
|
32735
33059
|
const caption = String(block.metadata?.caption ?? "");
|
|
32736
33060
|
const imgProps = {
|
|
32737
33061
|
src: url,
|
|
32738
|
-
alt: caption || "
|
|
33062
|
+
alt: caption || t("richBlockEditor.embeddedImage"),
|
|
32739
33063
|
className: "max-h-96 w-full rounded-md border border-border object-contain"
|
|
32740
33064
|
};
|
|
32741
33065
|
return /* @__PURE__ */ jsxRuntime.jsxs(exports.Box, { className: "space-y-2", children: [
|
|
@@ -32749,7 +33073,8 @@ function BlockRow({
|
|
|
32749
33073
|
),
|
|
32750
33074
|
children: [
|
|
32751
33075
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "image", className: "mr-2 w-4 h-4" }),
|
|
32752
|
-
"
|
|
33076
|
+
" ",
|
|
33077
|
+
t("richBlockEditor.noImageUrl")
|
|
32753
33078
|
]
|
|
32754
33079
|
}
|
|
32755
33080
|
),
|
|
@@ -32760,7 +33085,7 @@ function BlockRow({
|
|
|
32760
33085
|
inputType: "url",
|
|
32761
33086
|
value: url,
|
|
32762
33087
|
placeholder: "https://example.com/image.png",
|
|
32763
|
-
"aria-label": "
|
|
33088
|
+
"aria-label": t("richBlockEditor.aria.imageUrl"),
|
|
32764
33089
|
className: cn(
|
|
32765
33090
|
"h-8 flex-1 rounded-sm border border-border bg-background",
|
|
32766
33091
|
"px-2 text-sm outline-none focus:ring-1 focus:ring-ring"
|
|
@@ -32773,8 +33098,8 @@ function BlockRow({
|
|
|
32773
33098
|
{
|
|
32774
33099
|
inputType: "text",
|
|
32775
33100
|
value: caption,
|
|
32776
|
-
placeholder: "
|
|
32777
|
-
"aria-label": "
|
|
33101
|
+
placeholder: t("richBlockEditor.placeholder.caption"),
|
|
33102
|
+
"aria-label": t("richBlockEditor.aria.imageCaption"),
|
|
32778
33103
|
className: cn(
|
|
32779
33104
|
"h-8 flex-1 rounded-sm border border-border bg-background",
|
|
32780
33105
|
"px-2 text-sm outline-none focus:ring-1 focus:ring-ring"
|
|
@@ -32805,8 +33130,8 @@ function BlockRow({
|
|
|
32805
33130
|
tag: "span",
|
|
32806
33131
|
value: child.content ?? "",
|
|
32807
33132
|
readOnly,
|
|
32808
|
-
placeholder: "
|
|
32809
|
-
ariaLabel: "
|
|
33133
|
+
placeholder: t("richBlockEditor.placeholder.listItem"),
|
|
33134
|
+
ariaLabel: t("richBlockEditor.aria.listItem"),
|
|
32810
33135
|
className: "inline-block min-w-[1ch] flex-1",
|
|
32811
33136
|
onValueChange: (next) => setChildContent(child.id, next)
|
|
32812
33137
|
}
|
|
@@ -32816,7 +33141,7 @@ function BlockRow({
|
|
|
32816
33141
|
{
|
|
32817
33142
|
type: "button",
|
|
32818
33143
|
variant: "ghost",
|
|
32819
|
-
"aria-label": "
|
|
33144
|
+
"aria-label": t("richBlockEditor.aria.removeListItem"),
|
|
32820
33145
|
className: cn(
|
|
32821
33146
|
"h-5 w-5 shrink-0 rounded-sm text-muted-foreground p-0 gap-0",
|
|
32822
33147
|
"opacity-0 group-hover/item:opacity-100 hover:bg-muted hover:text-foreground"
|
|
@@ -32838,7 +33163,8 @@ function BlockRow({
|
|
|
32838
33163
|
onClick: addListItem,
|
|
32839
33164
|
children: [
|
|
32840
33165
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "plus", className: "w-3 h-3" }),
|
|
32841
|
-
"
|
|
33166
|
+
" ",
|
|
33167
|
+
t("richBlockEditor.addItem")
|
|
32842
33168
|
]
|
|
32843
33169
|
}
|
|
32844
33170
|
) })
|
|
@@ -32854,8 +33180,8 @@ function BlockRow({
|
|
|
32854
33180
|
tag: "p",
|
|
32855
33181
|
value: block.content ?? "",
|
|
32856
33182
|
readOnly,
|
|
32857
|
-
placeholder: placeholder ?? "
|
|
32858
|
-
ariaLabel: "
|
|
33183
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.paragraph"),
|
|
33184
|
+
ariaLabel: t("richBlockEditor.aria.paragraphBlock"),
|
|
32859
33185
|
className: "leading-7",
|
|
32860
33186
|
onValueChange: setContent
|
|
32861
33187
|
}
|
|
@@ -32878,7 +33204,7 @@ function BlockRow({
|
|
|
32878
33204
|
{
|
|
32879
33205
|
type: "button",
|
|
32880
33206
|
variant: "ghost",
|
|
32881
|
-
"aria-label": "
|
|
33207
|
+
"aria-label": t("richBlockEditor.insertParagraphBelow"),
|
|
32882
33208
|
className: cn(
|
|
32883
33209
|
"inline-flex h-6 w-6 items-center justify-center rounded-sm p-0 gap-0",
|
|
32884
33210
|
"text-muted-foreground hover:bg-muted hover:text-foreground",
|
|
@@ -32905,7 +33231,7 @@ function BlockRow({
|
|
|
32905
33231
|
}
|
|
32906
33232
|
);
|
|
32907
33233
|
}
|
|
32908
|
-
var TOOLBAR_ENTRIES,
|
|
33234
|
+
var TOOLBAR_ENTRIES, BLOCK_TYPE_LABEL_KEY, CHANGEABLE_TYPES, _idSeq, BLOCK_TYPES; exports.RichBlockEditor = void 0;
|
|
32909
33235
|
var init_RichBlockEditor = __esm({
|
|
32910
33236
|
"components/core/molecules/RichBlockEditor.tsx"() {
|
|
32911
33237
|
"use client";
|
|
@@ -32918,29 +33244,30 @@ var init_RichBlockEditor = __esm({
|
|
|
32918
33244
|
init_Input();
|
|
32919
33245
|
init_Icon();
|
|
32920
33246
|
init_useEventBus();
|
|
33247
|
+
init_useTranslate();
|
|
32921
33248
|
TOOLBAR_ENTRIES = [
|
|
32922
|
-
{ type: "paragraph",
|
|
32923
|
-
{ type: "heading-1",
|
|
32924
|
-
{ type: "heading-2",
|
|
32925
|
-
{ type: "heading-3",
|
|
32926
|
-
{ type: "bullet-list",
|
|
32927
|
-
{ type: "numbered-list",
|
|
32928
|
-
{ type: "quote",
|
|
32929
|
-
{ type: "code",
|
|
32930
|
-
{ type: "divider",
|
|
32931
|
-
{ type: "image",
|
|
33249
|
+
{ type: "paragraph", labelKey: "richBlockEditor.toolbar.text", icon: LucideIcons2.Type },
|
|
33250
|
+
{ type: "heading-1", labelKey: "richBlockEditor.toolbar.h1", icon: LucideIcons2.Heading1 },
|
|
33251
|
+
{ type: "heading-2", labelKey: "richBlockEditor.toolbar.h2", icon: LucideIcons2.Heading2 },
|
|
33252
|
+
{ type: "heading-3", labelKey: "richBlockEditor.toolbar.h3", icon: LucideIcons2.Heading3 },
|
|
33253
|
+
{ type: "bullet-list", labelKey: "richBlockEditor.toolbar.bulletList", icon: LucideIcons2.List },
|
|
33254
|
+
{ type: "numbered-list", labelKey: "richBlockEditor.toolbar.numbered", icon: LucideIcons2.ListOrdered },
|
|
33255
|
+
{ type: "quote", labelKey: "richBlockEditor.toolbar.quote", icon: LucideIcons2.Quote },
|
|
33256
|
+
{ type: "code", labelKey: "richBlockEditor.toolbar.code", icon: LucideIcons2.Code },
|
|
33257
|
+
{ type: "divider", labelKey: "richBlockEditor.toolbar.divider", icon: LucideIcons2.Minus },
|
|
33258
|
+
{ type: "image", labelKey: "richBlockEditor.toolbar.image", icon: LucideIcons2.Image }
|
|
32932
33259
|
];
|
|
32933
|
-
|
|
32934
|
-
paragraph: "
|
|
32935
|
-
"heading-1": "
|
|
32936
|
-
"heading-2": "
|
|
32937
|
-
"heading-3": "
|
|
32938
|
-
"bullet-list": "
|
|
32939
|
-
"numbered-list": "
|
|
32940
|
-
quote: "
|
|
32941
|
-
code: "
|
|
32942
|
-
divider: "
|
|
32943
|
-
image: "
|
|
33260
|
+
BLOCK_TYPE_LABEL_KEY = {
|
|
33261
|
+
paragraph: "richBlockEditor.blockType.paragraph",
|
|
33262
|
+
"heading-1": "richBlockEditor.blockType.heading1",
|
|
33263
|
+
"heading-2": "richBlockEditor.blockType.heading2",
|
|
33264
|
+
"heading-3": "richBlockEditor.blockType.heading3",
|
|
33265
|
+
"bullet-list": "richBlockEditor.blockType.bulletList",
|
|
33266
|
+
"numbered-list": "richBlockEditor.blockType.numberedList",
|
|
33267
|
+
quote: "richBlockEditor.blockType.quote",
|
|
33268
|
+
code: "richBlockEditor.blockType.code",
|
|
33269
|
+
divider: "richBlockEditor.blockType.divider",
|
|
33270
|
+
image: "richBlockEditor.blockType.image"
|
|
32944
33271
|
};
|
|
32945
33272
|
CHANGEABLE_TYPES = [
|
|
32946
33273
|
"paragraph",
|
|
@@ -32974,6 +33301,7 @@ var init_RichBlockEditor = __esm({
|
|
|
32974
33301
|
showToolbar = true,
|
|
32975
33302
|
className
|
|
32976
33303
|
}) => {
|
|
33304
|
+
const { t } = useTranslate();
|
|
32977
33305
|
const [blocks, setBlocks] = React79.useState(
|
|
32978
33306
|
() => normalizeBlocks(initialBlocks)
|
|
32979
33307
|
);
|
|
@@ -33045,25 +33373,26 @@ var init_RichBlockEditor = __esm({
|
|
|
33045
33373
|
exports.Box,
|
|
33046
33374
|
{
|
|
33047
33375
|
role: "toolbar",
|
|
33048
|
-
"aria-label": "
|
|
33376
|
+
"aria-label": t("richBlockEditor.editorToolbar"),
|
|
33049
33377
|
className: cn(
|
|
33050
33378
|
"flex flex-wrap items-center gap-1",
|
|
33051
33379
|
"border-b border-border bg-muted/30 px-2 py-2"
|
|
33052
33380
|
),
|
|
33053
33381
|
children: TOOLBAR_ENTRIES.map((entry) => {
|
|
33054
33382
|
const Icon3 = entry.icon;
|
|
33383
|
+
const entryLabel = t(entry.labelKey);
|
|
33055
33384
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
33056
33385
|
exports.Button,
|
|
33057
33386
|
{
|
|
33058
33387
|
type: "button",
|
|
33059
33388
|
variant: "ghost",
|
|
33060
33389
|
size: "sm",
|
|
33061
|
-
"aria-label":
|
|
33062
|
-
title:
|
|
33390
|
+
"aria-label": t("richBlockEditor.insertEntry", { label: entryLabel }),
|
|
33391
|
+
title: entryLabel,
|
|
33063
33392
|
onClick: () => handleAppend(entry.type),
|
|
33064
33393
|
children: [
|
|
33065
33394
|
/* @__PURE__ */ jsxRuntime.jsx(Icon3, { size: 14 }),
|
|
33066
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { as: "span", variant: "caption", className: "ml-1 hidden text-xs sm:inline", children:
|
|
33395
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { as: "span", variant: "caption", className: "ml-1 hidden text-xs sm:inline", children: entryLabel })
|
|
33067
33396
|
]
|
|
33068
33397
|
},
|
|
33069
33398
|
entry.type
|
|
@@ -33106,6 +33435,7 @@ var init_ReplyTree = __esm({
|
|
|
33106
33435
|
"use client";
|
|
33107
33436
|
init_cn();
|
|
33108
33437
|
init_useEventBus();
|
|
33438
|
+
init_useTranslate();
|
|
33109
33439
|
init_atoms2();
|
|
33110
33440
|
init_VoteStack();
|
|
33111
33441
|
ReplyTreeNode = ({
|
|
@@ -33125,6 +33455,7 @@ var init_ReplyTree = __esm({
|
|
|
33125
33455
|
showActions
|
|
33126
33456
|
}) => {
|
|
33127
33457
|
const eventBus = useEventBus();
|
|
33458
|
+
const { t } = useTranslate();
|
|
33128
33459
|
const hasReplies = !!node.replies && node.replies.length > 0;
|
|
33129
33460
|
const isCollapsed = collapsedSet.has(node.id);
|
|
33130
33461
|
const atMaxDepth = depth >= maxDepth;
|
|
@@ -33171,7 +33502,7 @@ var init_ReplyTree = __esm({
|
|
|
33171
33502
|
variant: "ghost",
|
|
33172
33503
|
size: "sm",
|
|
33173
33504
|
onClick: handleToggle,
|
|
33174
|
-
"aria-label": isCollapsed ? "
|
|
33505
|
+
"aria-label": isCollapsed ? t("replyTree.expandReplies") : t("replyTree.collapseReplies"),
|
|
33175
33506
|
"aria-expanded": !isCollapsed,
|
|
33176
33507
|
leftIcon: isCollapsed ? "chevron-right" : "chevron-down",
|
|
33177
33508
|
className: cn(
|
|
@@ -33212,7 +33543,7 @@ var init_ReplyTree = __esm({
|
|
|
33212
33543
|
onVote: handleVote,
|
|
33213
33544
|
size: "sm",
|
|
33214
33545
|
variant: "horizontal",
|
|
33215
|
-
label:
|
|
33546
|
+
label: t("replyTree.voteOnReplyBy", { author: node.authorName })
|
|
33216
33547
|
}
|
|
33217
33548
|
),
|
|
33218
33549
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -33222,8 +33553,8 @@ var init_ReplyTree = __esm({
|
|
|
33222
33553
|
size: "sm",
|
|
33223
33554
|
leftIcon: "message-square",
|
|
33224
33555
|
onClick: handleReply,
|
|
33225
|
-
"aria-label":
|
|
33226
|
-
children: "
|
|
33556
|
+
"aria-label": t("replyTree.replyTo", { author: node.authorName }),
|
|
33557
|
+
children: t("replyTree.reply")
|
|
33227
33558
|
}
|
|
33228
33559
|
),
|
|
33229
33560
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -33233,8 +33564,8 @@ var init_ReplyTree = __esm({
|
|
|
33233
33564
|
size: "sm",
|
|
33234
33565
|
leftIcon: "flag",
|
|
33235
33566
|
onClick: handleFlag,
|
|
33236
|
-
"aria-label":
|
|
33237
|
-
children: "
|
|
33567
|
+
"aria-label": t("replyTree.flagReplyBy", { author: node.authorName }),
|
|
33568
|
+
children: t("replyTree.flag")
|
|
33238
33569
|
}
|
|
33239
33570
|
)
|
|
33240
33571
|
] }),
|
|
@@ -33245,9 +33576,9 @@ var init_ReplyTree = __esm({
|
|
|
33245
33576
|
inputType: "textarea",
|
|
33246
33577
|
rows: 2,
|
|
33247
33578
|
value: draft,
|
|
33248
|
-
placeholder:
|
|
33579
|
+
placeholder: t("replyTree.replyToPlaceholder", { author: node.authorName }),
|
|
33249
33580
|
onChange: (e) => setDraft(e.target.value),
|
|
33250
|
-
"aria-label":
|
|
33581
|
+
"aria-label": t("replyTree.replyTo", { author: node.authorName })
|
|
33251
33582
|
}
|
|
33252
33583
|
),
|
|
33253
33584
|
/* @__PURE__ */ jsxRuntime.jsxs(exports.Box, { className: "flex flex-row gap-2 items-center", children: [
|
|
@@ -33259,10 +33590,10 @@ var init_ReplyTree = __esm({
|
|
|
33259
33590
|
leftIcon: "send",
|
|
33260
33591
|
onClick: handleSubmitReply,
|
|
33261
33592
|
disabled: !draft.trim(),
|
|
33262
|
-
children: "
|
|
33593
|
+
children: t("replyTree.send")
|
|
33263
33594
|
}
|
|
33264
33595
|
),
|
|
33265
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Button, { variant: "ghost", size: "sm", onClick: handleCancelReply, children: "
|
|
33596
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Button, { variant: "ghost", size: "sm", onClick: handleCancelReply, children: t("common.cancel") })
|
|
33266
33597
|
] })
|
|
33267
33598
|
] }),
|
|
33268
33599
|
hasReplies && !isCollapsed && (atMaxDepth ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -33276,7 +33607,7 @@ var init_ReplyTree = __esm({
|
|
|
33276
33607
|
"self-start gap-1 px-0 h-auto",
|
|
33277
33608
|
"text-sm text-primary hover:underline hover:bg-transparent"
|
|
33278
33609
|
),
|
|
33279
|
-
children: "
|
|
33610
|
+
children: t("replyTree.continueThread")
|
|
33280
33611
|
}
|
|
33281
33612
|
) : /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "flex flex-col gap-2 mt-1", children: node.replies.map((child) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
33282
33613
|
ReplyTreeNode,
|
|
@@ -33315,6 +33646,7 @@ var init_ReplyTree = __esm({
|
|
|
33315
33646
|
showActions = true,
|
|
33316
33647
|
className
|
|
33317
33648
|
}) => {
|
|
33649
|
+
const { t } = useTranslate();
|
|
33318
33650
|
const nodeList = Array.isArray(nodes) ? nodes : nodes ? [nodes] : [];
|
|
33319
33651
|
const [collapsedSet, setCollapsedSet] = React79.useState(() => {
|
|
33320
33652
|
const acc = /* @__PURE__ */ new Set();
|
|
@@ -33333,7 +33665,7 @@ var init_ReplyTree = __esm({
|
|
|
33333
33665
|
});
|
|
33334
33666
|
}, []);
|
|
33335
33667
|
if (nodeList.length === 0) {
|
|
33336
|
-
return /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: cn("text-sm text-muted-foreground", className), children: "
|
|
33668
|
+
return /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: cn("text-sm text-muted-foreground", className), children: t("replyTree.noRepliesYet") });
|
|
33337
33669
|
}
|
|
33338
33670
|
return /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: cn("flex flex-col gap-2 min-w-0", className), children: nodeList.map((node) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
33339
33671
|
ReplyTreeNode,
|
|
@@ -33411,6 +33743,7 @@ var init_VersionDiff = __esm({
|
|
|
33411
33743
|
"use client";
|
|
33412
33744
|
init_cn();
|
|
33413
33745
|
init_useEventBus();
|
|
33746
|
+
init_useTranslate();
|
|
33414
33747
|
init_atoms2();
|
|
33415
33748
|
init_Stack();
|
|
33416
33749
|
INLINE_STYLES = {
|
|
@@ -33433,6 +33766,7 @@ var init_VersionDiff = __esm({
|
|
|
33433
33766
|
language,
|
|
33434
33767
|
className
|
|
33435
33768
|
}) => {
|
|
33769
|
+
const { t } = useTranslate();
|
|
33436
33770
|
const eventBus = useEventBus();
|
|
33437
33771
|
const revisions = Array.isArray(revisionsProp) ? revisionsProp : [];
|
|
33438
33772
|
const fallbackBefore = revisions[0]?.id ?? "";
|
|
@@ -33514,24 +33848,24 @@ var init_VersionDiff = __esm({
|
|
|
33514
33848
|
children: [
|
|
33515
33849
|
/* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { gap: "sm", align: "center", className: "flex-wrap", children: [
|
|
33516
33850
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "git-commit", size: "sm", className: "text-muted-foreground" }),
|
|
33517
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "whitespace-nowrap", children: "
|
|
33851
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "whitespace-nowrap", children: t("versionDiff.compare") }),
|
|
33518
33852
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "min-w-0 md:min-w-[160px]", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
33519
33853
|
exports.Select,
|
|
33520
33854
|
{
|
|
33521
33855
|
options,
|
|
33522
33856
|
value: activeBeforeId,
|
|
33523
33857
|
onChange: handleBeforeChange,
|
|
33524
|
-
"aria-label": "
|
|
33858
|
+
"aria-label": t("versionDiff.beforeRevision")
|
|
33525
33859
|
}
|
|
33526
33860
|
) }),
|
|
33527
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", color: "secondary", children: "to" }),
|
|
33861
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", color: "secondary", children: t("versionDiff.to") }),
|
|
33528
33862
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "min-w-0 md:min-w-[160px]", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
33529
33863
|
exports.Select,
|
|
33530
33864
|
{
|
|
33531
33865
|
options,
|
|
33532
33866
|
value: activeAfterId,
|
|
33533
33867
|
onChange: handleAfterChange,
|
|
33534
|
-
"aria-label": "
|
|
33868
|
+
"aria-label": t("versionDiff.afterRevision")
|
|
33535
33869
|
}
|
|
33536
33870
|
) }),
|
|
33537
33871
|
language && /* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant: "default", children: language }),
|
|
@@ -33552,7 +33886,7 @@ var init_VersionDiff = __esm({
|
|
|
33552
33886
|
size: "sm",
|
|
33553
33887
|
icon: activeView === "side-by-side" ? "align-left" : "columns",
|
|
33554
33888
|
onClick: handleViewToggle,
|
|
33555
|
-
"aria-label": activeView === "side-by-side" ? "
|
|
33889
|
+
"aria-label": activeView === "side-by-side" ? t("versionDiff.switchToInline") : t("versionDiff.switchToSideBySide")
|
|
33556
33890
|
}
|
|
33557
33891
|
),
|
|
33558
33892
|
(onRevert || revertEvent) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -33562,7 +33896,7 @@ var init_VersionDiff = __esm({
|
|
|
33562
33896
|
size: "sm",
|
|
33563
33897
|
icon: "rotate-ccw",
|
|
33564
33898
|
onClick: handleRevert,
|
|
33565
|
-
children: "
|
|
33899
|
+
children: t("versionDiff.revert")
|
|
33566
33900
|
}
|
|
33567
33901
|
)
|
|
33568
33902
|
] })
|
|
@@ -33579,12 +33913,12 @@ var init_VersionDiff = __esm({
|
|
|
33579
33913
|
children: [
|
|
33580
33914
|
/* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "caption", color: "secondary", className: "truncate", children: [
|
|
33581
33915
|
beforeRev?.label,
|
|
33582
|
-
beforeRev?.author ?
|
|
33916
|
+
beforeRev?.author ? t("versionDiff.byAuthor", { author: beforeRev.author }) : "",
|
|
33583
33917
|
beforeRev?.timestamp ? ` (${beforeRev.timestamp})` : ""
|
|
33584
33918
|
] }),
|
|
33585
33919
|
/* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "caption", color: "secondary", className: "truncate", children: [
|
|
33586
33920
|
afterRev?.label,
|
|
33587
|
-
afterRev?.author ?
|
|
33921
|
+
afterRev?.author ? t("versionDiff.byAuthor", { author: afterRev.author }) : "",
|
|
33588
33922
|
afterRev?.timestamp ? ` (${afterRev.timestamp})` : ""
|
|
33589
33923
|
] })
|
|
33590
33924
|
]
|
|
@@ -33977,10 +34311,12 @@ var init_DocPagination = __esm({
|
|
|
33977
34311
|
}
|
|
33978
34312
|
});
|
|
33979
34313
|
function DocSearch({
|
|
33980
|
-
placeholder
|
|
34314
|
+
placeholder,
|
|
33981
34315
|
onSearch,
|
|
33982
34316
|
className
|
|
33983
34317
|
}) {
|
|
34318
|
+
const { t } = useTranslate();
|
|
34319
|
+
const resolvedPlaceholder = placeholder ?? t("docSearch.placeholder");
|
|
33984
34320
|
const [query, setQuery] = React79.useState("");
|
|
33985
34321
|
const [results, setResults] = React79.useState([]);
|
|
33986
34322
|
const [isOpen, setIsOpen] = React79.useState(false);
|
|
@@ -34087,7 +34423,7 @@ function DocSearch({
|
|
|
34087
34423
|
exports.Input,
|
|
34088
34424
|
{
|
|
34089
34425
|
inputType: "search",
|
|
34090
|
-
placeholder,
|
|
34426
|
+
placeholder: resolvedPlaceholder,
|
|
34091
34427
|
value: query,
|
|
34092
34428
|
onChange: handleChange,
|
|
34093
34429
|
onFocus: handleFocus,
|
|
@@ -34152,6 +34488,7 @@ var init_DocSearch = __esm({
|
|
|
34152
34488
|
init_Typography();
|
|
34153
34489
|
init_Icon();
|
|
34154
34490
|
init_Input();
|
|
34491
|
+
init_useTranslate();
|
|
34155
34492
|
}
|
|
34156
34493
|
});
|
|
34157
34494
|
var DocSidebarCategory; exports.DocSidebar = void 0;
|
|
@@ -36284,8 +36621,8 @@ var init_SignaturePad = __esm({
|
|
|
36284
36621
|
init_useEventBus();
|
|
36285
36622
|
init_useTranslate();
|
|
36286
36623
|
exports.SignaturePad = ({
|
|
36287
|
-
label
|
|
36288
|
-
helperText
|
|
36624
|
+
label,
|
|
36625
|
+
helperText,
|
|
36289
36626
|
strokeColor,
|
|
36290
36627
|
strokeWidth = 2,
|
|
36291
36628
|
height = 200,
|
|
@@ -36301,6 +36638,8 @@ var init_SignaturePad = __esm({
|
|
|
36301
36638
|
}) => {
|
|
36302
36639
|
const eventBus = useEventBus();
|
|
36303
36640
|
const { t } = useTranslate();
|
|
36641
|
+
const resolvedLabel = label ?? t("signaturePad.label");
|
|
36642
|
+
const resolvedHelperText = helperText ?? t("signaturePad.helperText");
|
|
36304
36643
|
const canvasRef = React79.useRef(null);
|
|
36305
36644
|
const [isDrawing, setIsDrawing] = React79.useState(false);
|
|
36306
36645
|
const [hasSignature, setHasSignature] = React79.useState(!!value);
|
|
@@ -36403,7 +36742,7 @@ var init_SignaturePad = __esm({
|
|
|
36403
36742
|
);
|
|
36404
36743
|
}
|
|
36405
36744
|
return /* @__PURE__ */ jsxRuntime.jsx(exports.Card, { className: cn("p-4", className), children: /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "sm", children: [
|
|
36406
|
-
|
|
36745
|
+
resolvedLabel && /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "label", weight: "medium", children: resolvedLabel }),
|
|
36407
36746
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
36408
36747
|
exports.Box,
|
|
36409
36748
|
{
|
|
@@ -36432,7 +36771,7 @@ var init_SignaturePad = __esm({
|
|
|
36432
36771
|
)
|
|
36433
36772
|
}
|
|
36434
36773
|
),
|
|
36435
|
-
|
|
36774
|
+
resolvedHelperText && /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", color: "secondary", children: resolvedHelperText }),
|
|
36436
36775
|
!readOnly && /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { gap: "sm", justify: "end", children: [
|
|
36437
36776
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
36438
36777
|
exports.Button,
|
|
@@ -36442,7 +36781,7 @@ var init_SignaturePad = __esm({
|
|
|
36442
36781
|
icon: LucideIcons2.Eraser,
|
|
36443
36782
|
onClick: clearSignature,
|
|
36444
36783
|
disabled: !hasSignature,
|
|
36445
|
-
children: "
|
|
36784
|
+
children: t("signaturePad.clear")
|
|
36446
36785
|
}
|
|
36447
36786
|
),
|
|
36448
36787
|
signEvent && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -36453,7 +36792,7 @@ var init_SignaturePad = __esm({
|
|
|
36453
36792
|
icon: LucideIcons2.Check,
|
|
36454
36793
|
onClick: confirmSignature,
|
|
36455
36794
|
disabled: !hasSignature,
|
|
36456
|
-
children: "
|
|
36795
|
+
children: t("signaturePad.confirm")
|
|
36457
36796
|
}
|
|
36458
36797
|
)
|
|
36459
36798
|
] })
|
|
@@ -41120,6 +41459,7 @@ function MasterDetail({
|
|
|
41120
41459
|
className,
|
|
41121
41460
|
...rest
|
|
41122
41461
|
}) {
|
|
41462
|
+
const { t } = useTranslate();
|
|
41123
41463
|
const loading = externalLoading ?? false;
|
|
41124
41464
|
const isLoading = externalIsLoading ?? false;
|
|
41125
41465
|
const error = externalError ?? null;
|
|
@@ -41132,8 +41472,8 @@ function MasterDetail({
|
|
|
41132
41472
|
isLoading: loading || isLoading,
|
|
41133
41473
|
error,
|
|
41134
41474
|
className,
|
|
41135
|
-
emptyTitle: "
|
|
41136
|
-
emptyDescription: "
|
|
41475
|
+
emptyTitle: t("table.empty.title"),
|
|
41476
|
+
emptyDescription: t("empty.createFirst"),
|
|
41137
41477
|
...rest
|
|
41138
41478
|
}
|
|
41139
41479
|
);
|
|
@@ -41142,6 +41482,7 @@ var init_MasterDetail = __esm({
|
|
|
41142
41482
|
"components/core/organisms/MasterDetail.tsx"() {
|
|
41143
41483
|
"use client";
|
|
41144
41484
|
init_DataTable();
|
|
41485
|
+
init_useTranslate();
|
|
41145
41486
|
MasterDetail.displayName = "MasterDetail";
|
|
41146
41487
|
}
|
|
41147
41488
|
});
|
|
@@ -41150,14 +41491,18 @@ var init_MasterDetailLayout = __esm({
|
|
|
41150
41491
|
"components/core/organisms/layout/MasterDetailLayout.tsx"() {
|
|
41151
41492
|
init_cn();
|
|
41152
41493
|
init_Typography();
|
|
41153
|
-
|
|
41154
|
-
|
|
41155
|
-
{
|
|
41156
|
-
|
|
41157
|
-
|
|
41158
|
-
|
|
41159
|
-
|
|
41160
|
-
|
|
41494
|
+
init_useTranslate();
|
|
41495
|
+
DefaultEmptyDetail = () => {
|
|
41496
|
+
const { t } = useTranslate();
|
|
41497
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center h-full border-2 border-dashed border-border", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
41498
|
+
exports.Typography,
|
|
41499
|
+
{
|
|
41500
|
+
variant: "body2",
|
|
41501
|
+
className: "text-muted-foreground",
|
|
41502
|
+
children: t("masterDetail.selectItem")
|
|
41503
|
+
}
|
|
41504
|
+
) });
|
|
41505
|
+
};
|
|
41161
41506
|
exports.MasterDetailLayout = ({
|
|
41162
41507
|
master,
|
|
41163
41508
|
detail,
|
|
@@ -41284,7 +41629,7 @@ var init_MediaGallery = __esm({
|
|
|
41284
41629
|
{
|
|
41285
41630
|
icon: LucideIcons2.Image,
|
|
41286
41631
|
title: t("display.noMedia"),
|
|
41287
|
-
description: "
|
|
41632
|
+
description: t("mediaGallery.noMediaDescription"),
|
|
41288
41633
|
className
|
|
41289
41634
|
}
|
|
41290
41635
|
);
|
|
@@ -41301,7 +41646,7 @@ var init_MediaGallery = __esm({
|
|
|
41301
41646
|
size: "sm",
|
|
41302
41647
|
icon: LucideIcons2.Upload,
|
|
41303
41648
|
action: "MEDIA_UPLOAD",
|
|
41304
|
-
children: "
|
|
41649
|
+
children: t("mediaGallery.upload")
|
|
41305
41650
|
}
|
|
41306
41651
|
),
|
|
41307
41652
|
actions?.map((action, idx) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -41315,10 +41660,7 @@ var init_MediaGallery = __esm({
|
|
|
41315
41660
|
))
|
|
41316
41661
|
] })
|
|
41317
41662
|
] }),
|
|
41318
|
-
selectable && selectedItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(exports.HStack, { gap: "sm", align: "center", children: /* @__PURE__ */ jsxRuntime.
|
|
41319
|
-
selectedItems.length,
|
|
41320
|
-
" selected"
|
|
41321
|
-
] }) }),
|
|
41663
|
+
selectable && selectedItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(exports.HStack, { gap: "sm", align: "center", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant: "info", children: t("table.bulk.selected", { count: selectedItems.length }) }) }),
|
|
41322
41664
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
41323
41665
|
exports.Box,
|
|
41324
41666
|
{
|
|
@@ -42311,7 +42653,7 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
42311
42653
|
exports.EmptyState,
|
|
42312
42654
|
{
|
|
42313
42655
|
title: t("debug.noActiveTraits"),
|
|
42314
|
-
description: "
|
|
42656
|
+
description: t("debug.traitsMountHint"),
|
|
42315
42657
|
className: "py-8"
|
|
42316
42658
|
}
|
|
42317
42659
|
);
|
|
@@ -42321,14 +42663,11 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
42321
42663
|
header: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 w-full", children: [
|
|
42322
42664
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", weight: "semibold", className: "text-purple-600 dark:text-purple-400", children: trait.name }),
|
|
42323
42665
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant: "success", size: "sm", children: trait.currentState }),
|
|
42324
|
-
/* @__PURE__ */ jsxRuntime.
|
|
42325
|
-
trait.transitionCount,
|
|
42326
|
-
" transitions"
|
|
42327
|
-
] })
|
|
42666
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-gray-500 ml-auto", children: t("debug.transitionsCount", { count: trait.transitionCount }) })
|
|
42328
42667
|
] }),
|
|
42329
42668
|
content: /* @__PURE__ */ jsxRuntime.jsxs(exports.Stack, { gap: "sm", children: [
|
|
42330
42669
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42331
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: "
|
|
42670
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.states") }),
|
|
42332
42671
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1", children: trait.states.map((state) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
42333
42672
|
exports.Badge,
|
|
42334
42673
|
{
|
|
@@ -42340,7 +42679,7 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
42340
42679
|
)) })
|
|
42341
42680
|
] }),
|
|
42342
42681
|
trait.transitions.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42343
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: "
|
|
42682
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.transitions") }),
|
|
42344
42683
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Stack, { gap: "xs", children: trait.transitions.map((t2, i) => /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "small", className: "font-mono", children: [
|
|
42345
42684
|
t2.from,
|
|
42346
42685
|
" \u2192 ",
|
|
@@ -42359,7 +42698,7 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
42359
42698
|
] }, i)) })
|
|
42360
42699
|
] }),
|
|
42361
42700
|
trait.guards.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42362
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: "
|
|
42701
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.guards") }),
|
|
42363
42702
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Stack, { gap: "xs", children: trait.guards.map((g, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
42364
42703
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", children: g.name }),
|
|
42365
42704
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant: g.lastResult === true ? "success" : g.lastResult === false ? "danger" : "default", size: "sm", children: g.lastResult === void 0 ? "?" : g.lastResult ? "\u2713" : "\u2717" })
|
|
@@ -42465,7 +42804,7 @@ function EntitiesTab({ snapshot }) {
|
|
|
42465
42804
|
exports.EmptyState,
|
|
42466
42805
|
{
|
|
42467
42806
|
title: t("debug.noEntityData"),
|
|
42468
|
-
description: "
|
|
42807
|
+
description: t("debug.debugModeHint"),
|
|
42469
42808
|
className: "py-8"
|
|
42470
42809
|
}
|
|
42471
42810
|
);
|
|
@@ -42478,7 +42817,7 @@ function EntitiesTab({ snapshot }) {
|
|
|
42478
42817
|
exports.EmptyState,
|
|
42479
42818
|
{
|
|
42480
42819
|
title: t("debug.noEntities"),
|
|
42481
|
-
description: "
|
|
42820
|
+
description: t("debug.entitiesSpawnHint"),
|
|
42482
42821
|
className: "py-8"
|
|
42483
42822
|
}
|
|
42484
42823
|
);
|
|
@@ -42486,7 +42825,7 @@ function EntitiesTab({ snapshot }) {
|
|
|
42486
42825
|
const singletonItems = singletonEntries.map(([name, data]) => ({
|
|
42487
42826
|
id: `singleton-${name}`,
|
|
42488
42827
|
header: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
42489
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant: "primary", size: "sm", children: "
|
|
42828
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant: "primary", size: "sm", children: t("debug.singleton") }),
|
|
42490
42829
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", weight: "semibold", className: "text-sky-600 dark:text-sky-400", children: name })
|
|
42491
42830
|
] }),
|
|
42492
42831
|
content: /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "text-xs text-gray-600 dark:text-gray-400 bg-gray-50 dark:bg-gray-800 p-2 rounded overflow-auto max-h-40", children: JSON.stringify(data, null, 2) })
|
|
@@ -42504,31 +42843,19 @@ function EntitiesTab({ snapshot }) {
|
|
|
42504
42843
|
}));
|
|
42505
42844
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--entities", children: [
|
|
42506
42845
|
singletonItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4", children: [
|
|
42507
|
-
/* @__PURE__ */ jsxRuntime.
|
|
42508
|
-
"Singletons (",
|
|
42509
|
-
singletonItems.length,
|
|
42510
|
-
")"
|
|
42511
|
-
] }),
|
|
42846
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.singletonsCount", { count: singletonItems.length }) }),
|
|
42512
42847
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Accordion, { items: singletonItems, multiple: true })
|
|
42513
42848
|
] }),
|
|
42514
42849
|
runtimeItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4", children: [
|
|
42515
|
-
/* @__PURE__ */ jsxRuntime.
|
|
42516
|
-
"Runtime (",
|
|
42517
|
-
runtimeEntities.length,
|
|
42518
|
-
")"
|
|
42519
|
-
] }),
|
|
42850
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.runtimeCount", { count: runtimeEntities.length }) }),
|
|
42520
42851
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Accordion, { items: runtimeItems, multiple: true }),
|
|
42521
|
-
runtimeEntities.length > 20 && /* @__PURE__ */ jsxRuntime.
|
|
42522
|
-
"+",
|
|
42523
|
-
runtimeEntities.length - 20,
|
|
42524
|
-
" more entities"
|
|
42525
|
-
] })
|
|
42852
|
+
runtimeEntities.length > 20 && /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-gray-400 text-center mt-2", children: t("debug.moreEntities", { count: runtimeEntities.length - 20 }) })
|
|
42526
42853
|
] }),
|
|
42527
42854
|
persistentEntries.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42528
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: "
|
|
42855
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.persistent") }),
|
|
42529
42856
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Stack, { gap: "xs", children: persistentEntries.map(([type, info]) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between py-1", children: [
|
|
42530
42857
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", children: type }),
|
|
42531
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant: info.loaded ? "success" : "default", size: "sm", children: info.loaded ?
|
|
42858
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant: info.loaded ? "success" : "default", size: "sm", children: info.loaded ? t("debug.loadedCount", { count: info.count }) : t("debug.notLoaded") })
|
|
42532
42859
|
] }, type)) })
|
|
42533
42860
|
] })
|
|
42534
42861
|
] });
|
|
@@ -42572,7 +42899,7 @@ function EventFlowTab({ events: events2 }) {
|
|
|
42572
42899
|
exports.EmptyState,
|
|
42573
42900
|
{
|
|
42574
42901
|
title: t("debug.noEventsYet"),
|
|
42575
|
-
description: "
|
|
42902
|
+
description: t("debug.eventsExecuteHint"),
|
|
42576
42903
|
className: "py-8"
|
|
42577
42904
|
}
|
|
42578
42905
|
);
|
|
@@ -42583,17 +42910,13 @@ function EventFlowTab({ events: events2 }) {
|
|
|
42583
42910
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--events", children: [
|
|
42584
42911
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 mb-3 flex-wrap", children: [
|
|
42585
42912
|
/* @__PURE__ */ jsxRuntime.jsxs(exports.ButtonGroup, { children: [
|
|
42586
|
-
/* @__PURE__ */ jsxRuntime.
|
|
42913
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
42587
42914
|
exports.Button,
|
|
42588
42915
|
{
|
|
42589
42916
|
size: "sm",
|
|
42590
42917
|
variant: filter === "all" ? "primary" : "secondary",
|
|
42591
42918
|
onClick: () => setFilter("all"),
|
|
42592
|
-
children:
|
|
42593
|
-
"All (",
|
|
42594
|
-
events2.length,
|
|
42595
|
-
")"
|
|
42596
|
-
]
|
|
42919
|
+
children: t("debug.allCount", { count: events2.length })
|
|
42597
42920
|
}
|
|
42598
42921
|
),
|
|
42599
42922
|
eventTypes.map((type) => {
|
|
@@ -42623,7 +42946,7 @@ function EventFlowTab({ events: events2 }) {
|
|
|
42623
42946
|
onChange: (e) => setAutoScroll(e.target.checked)
|
|
42624
42947
|
}
|
|
42625
42948
|
),
|
|
42626
|
-
"
|
|
42949
|
+
t("debug.autoScroll")
|
|
42627
42950
|
] })
|
|
42628
42951
|
] }),
|
|
42629
42952
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -42681,7 +43004,7 @@ function GuardsPanel({ guards }) {
|
|
|
42681
43004
|
exports.EmptyState,
|
|
42682
43005
|
{
|
|
42683
43006
|
title: t("debug.noGuardEvaluations"),
|
|
42684
|
-
description: "
|
|
43007
|
+
description: t("debug.guardEvaluationsHint"),
|
|
42685
43008
|
className: "py-8"
|
|
42686
43009
|
}
|
|
42687
43010
|
);
|
|
@@ -42712,15 +43035,15 @@ function GuardsPanel({ guards }) {
|
|
|
42712
43035
|
] }),
|
|
42713
43036
|
content: /* @__PURE__ */ jsxRuntime.jsxs(exports.Stack, { gap: "sm", children: [
|
|
42714
43037
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42715
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: "
|
|
43038
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: t("debug.expression") }),
|
|
42716
43039
|
/* @__PURE__ */ jsxRuntime.jsx("code", { className: "block mt-1 text-xs text-amber-600 dark:text-amber-400 bg-amber-50 dark:bg-amber-900/20 px-2 py-1 rounded", children: guard.expression })
|
|
42717
43040
|
] }),
|
|
42718
43041
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42719
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: "
|
|
43042
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: t("debug.inputs") }),
|
|
42720
43043
|
/* @__PURE__ */ jsxRuntime.jsx("pre", { className: "mt-1 text-xs text-gray-600 dark:text-gray-400 bg-gray-50 dark:bg-gray-800 p-2 rounded overflow-auto max-h-24", children: JSON.stringify(guard.inputs, null, 2) })
|
|
42721
43044
|
] }),
|
|
42722
43045
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42723
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: "
|
|
43046
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: t("debug.trait") }),
|
|
42724
43047
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", children: guard.context.traitName })
|
|
42725
43048
|
] })
|
|
42726
43049
|
] })
|
|
@@ -42738,9 +43061,9 @@ function GuardsPanel({ guards }) {
|
|
|
42738
43061
|
] })
|
|
42739
43062
|
] }),
|
|
42740
43063
|
/* @__PURE__ */ jsxRuntime.jsxs(exports.ButtonGroup, { children: [
|
|
42741
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Button, { size: "sm", variant: filter === "all" ? "primary" : "secondary", onClick: () => setFilter("all"), children: "
|
|
42742
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Button, { size: "sm", variant: filter === "passed" ? "primary" : "secondary", onClick: () => setFilter("passed"), children: "
|
|
42743
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Button, { size: "sm", variant: filter === "failed" ? "primary" : "secondary", onClick: () => setFilter("failed"), children: "
|
|
43064
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Button, { size: "sm", variant: filter === "all" ? "primary" : "secondary", onClick: () => setFilter("all"), children: t("debug.filterAll") }),
|
|
43065
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Button, { size: "sm", variant: filter === "passed" ? "primary" : "secondary", onClick: () => setFilter("passed"), children: t("debug.filterPassed") }),
|
|
43066
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Button, { size: "sm", variant: filter === "failed" ? "primary" : "secondary", onClick: () => setFilter("failed"), children: t("debug.filterFailed") })
|
|
42744
43067
|
] })
|
|
42745
43068
|
] }),
|
|
42746
43069
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-80 overflow-y-auto", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Accordion, { items: accordionItems }) })
|
|
@@ -42866,7 +43189,7 @@ function TransitionTimeline({ transitions }) {
|
|
|
42866
43189
|
exports.EmptyState,
|
|
42867
43190
|
{
|
|
42868
43191
|
title: t("debug.noTransitionsRecorded"),
|
|
42869
|
-
description: "
|
|
43192
|
+
description: t("debug.transitionsProcessHint"),
|
|
42870
43193
|
className: "py-8"
|
|
42871
43194
|
}
|
|
42872
43195
|
);
|
|
@@ -42883,10 +43206,7 @@ function TransitionTimeline({ transitions }) {
|
|
|
42883
43206
|
const sorted = [...transitions].reverse();
|
|
42884
43207
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--timeline", children: [
|
|
42885
43208
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between mb-2", children: [
|
|
42886
|
-
/* @__PURE__ */ jsxRuntime.
|
|
42887
|
-
transitions.length,
|
|
42888
|
-
" transitions recorded"
|
|
42889
|
-
] }),
|
|
43209
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-gray-500", children: t("debug.transitionsRecorded", { count: transitions.length }) }),
|
|
42890
43210
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-1 text-xs text-gray-500 cursor-pointer", children: [
|
|
42891
43211
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
42892
43212
|
exports.Checkbox,
|
|
@@ -42895,7 +43215,7 @@ function TransitionTimeline({ transitions }) {
|
|
|
42895
43215
|
onChange: (e) => setAutoScroll(e.target.checked)
|
|
42896
43216
|
}
|
|
42897
43217
|
),
|
|
42898
|
-
"
|
|
43218
|
+
t("debug.autoScroll")
|
|
42899
43219
|
] })
|
|
42900
43220
|
] }),
|
|
42901
43221
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -42938,15 +43258,13 @@ function TransitionTimeline({ transitions }) {
|
|
|
42938
43258
|
variant: trace.guardResult ? "success" : "danger",
|
|
42939
43259
|
size: "sm",
|
|
42940
43260
|
children: [
|
|
42941
|
-
"
|
|
43261
|
+
t("debug.guardLabel"),
|
|
43262
|
+
" ",
|
|
42942
43263
|
trace.guardResult ? "\u2713" : "\u2717"
|
|
42943
43264
|
]
|
|
42944
43265
|
}
|
|
42945
43266
|
),
|
|
42946
|
-
/* @__PURE__ */ jsxRuntime.
|
|
42947
|
-
trace.effects.length,
|
|
42948
|
-
" effects"
|
|
42949
|
-
] })
|
|
43267
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-gray-400 ml-auto", children: t("debug.effectsCount", { count: trace.effects.length }) })
|
|
42950
43268
|
] }),
|
|
42951
43269
|
isExpanded && trace.effects.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ml-2 mt-1 mb-2 pl-2 border-l border-gray-200 dark:border-gray-700 space-y-1", children: trace.effects.map((effect, eIdx) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1", children: [
|
|
42952
43270
|
/* @__PURE__ */ jsxRuntime.jsx(EffectBadge, { effect }),
|
|
@@ -42995,13 +43313,13 @@ function ServerBridgeTab({ bridge }) {
|
|
|
42995
43313
|
exports.EmptyState,
|
|
42996
43314
|
{
|
|
42997
43315
|
title: t("debug.noBridgeData"),
|
|
42998
|
-
description: "
|
|
43316
|
+
description: t("debug.bridgeInitHint"),
|
|
42999
43317
|
className: "py-8"
|
|
43000
43318
|
}
|
|
43001
43319
|
);
|
|
43002
43320
|
}
|
|
43003
43321
|
const formatTime4 = (ts) => {
|
|
43004
|
-
if (ts === 0) return "
|
|
43322
|
+
if (ts === 0) return t("debug.never");
|
|
43005
43323
|
const d = new Date(ts);
|
|
43006
43324
|
return d.toLocaleTimeString("en-US", {
|
|
43007
43325
|
hour12: false,
|
|
@@ -43014,14 +43332,14 @@ function ServerBridgeTab({ bridge }) {
|
|
|
43014
43332
|
/* @__PURE__ */ jsxRuntime.jsxs(exports.Card, { className: "p-3", children: [
|
|
43015
43333
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 mb-3", children: [
|
|
43016
43334
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: `w-3 h-3 rounded-full ${bridge.connected ? "bg-green-500 animate-pulse" : "bg-red-500"}` }),
|
|
43017
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "h6", children: bridge.connected ? "
|
|
43335
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "h6", children: bridge.connected ? t("debug.connected") : t("debug.disconnected") })
|
|
43018
43336
|
] }),
|
|
43019
43337
|
/* @__PURE__ */ jsxRuntime.jsxs(exports.Stack, { gap: "xs", children: [
|
|
43020
43338
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
43021
43339
|
StatRow,
|
|
43022
43340
|
{
|
|
43023
43341
|
label: t("debug.status"),
|
|
43024
|
-
value: bridge.connected ? "
|
|
43342
|
+
value: bridge.connected ? t("debug.connected") : t("debug.disconnected"),
|
|
43025
43343
|
variant: bridge.connected ? "success" : "danger"
|
|
43026
43344
|
}
|
|
43027
43345
|
),
|
|
@@ -43049,13 +43367,10 @@ function ServerBridgeTab({ bridge }) {
|
|
|
43049
43367
|
] })
|
|
43050
43368
|
] }),
|
|
43051
43369
|
bridge.lastError && /* @__PURE__ */ jsxRuntime.jsxs(exports.Card, { className: "p-3 border-red-200 dark:border-red-800 bg-red-50 dark:bg-red-950", children: [
|
|
43052
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "semibold", className: "text-red-600 dark:text-red-400 mb-1", children: "
|
|
43370
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "semibold", className: "text-red-600 dark:text-red-400 mb-1", children: t("debug.lastError") }),
|
|
43053
43371
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-red-500 font-mono break-all", children: bridge.lastError })
|
|
43054
43372
|
] }),
|
|
43055
|
-
bridge.connected && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-center py-2", children: /* @__PURE__ */ jsxRuntime.
|
|
43056
|
-
bridge.eventsForwarded + bridge.eventsReceived,
|
|
43057
|
-
" total events processed"
|
|
43058
|
-
] }) })
|
|
43373
|
+
bridge.connected && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-center py-2", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-gray-400", children: t("debug.totalEventsProcessed", { count: bridge.eventsForwarded + bridge.eventsReceived }) }) })
|
|
43059
43374
|
] }) });
|
|
43060
43375
|
}
|
|
43061
43376
|
var init_ServerBridgeTab = __esm({
|
|
@@ -43165,7 +43480,7 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
43165
43480
|
exports.EmptyState,
|
|
43166
43481
|
{
|
|
43167
43482
|
title: t("debug.noActiveTraits"),
|
|
43168
|
-
description: "
|
|
43483
|
+
description: t("debug.traitsInitHint"),
|
|
43169
43484
|
className: "py-8"
|
|
43170
43485
|
}
|
|
43171
43486
|
);
|
|
@@ -43182,7 +43497,7 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
43182
43497
|
};
|
|
43183
43498
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--dispatch", children: [
|
|
43184
43499
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3", children: [
|
|
43185
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
43500
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.activeStates") }),
|
|
43186
43501
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1", children: traits2.map((trait) => /* @__PURE__ */ jsxRuntime.jsxs(exports.Badge, { variant: "success", size: "sm", children: [
|
|
43187
43502
|
trait.name,
|
|
43188
43503
|
": ",
|
|
@@ -43190,8 +43505,8 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
43190
43505
|
] }, trait.id)) })
|
|
43191
43506
|
] }),
|
|
43192
43507
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3", children: [
|
|
43193
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
43194
|
-
availableEvents.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-gray-400 italic", children: "
|
|
43508
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.availableEvents") }),
|
|
43509
|
+
availableEvents.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-gray-400 italic", children: t("debug.noTransitionsFromState") }) : /* @__PURE__ */ jsxRuntime.jsx(exports.Stack, { gap: "xs", children: availableEvents.map(({ event, transitions }) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
43195
43510
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
43196
43511
|
exports.Button,
|
|
43197
43512
|
{
|
|
@@ -43203,15 +43518,15 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
43203
43518
|
}
|
|
43204
43519
|
),
|
|
43205
43520
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-gray-500", children: transitions.map((t2) => `${t2.from} -> ${t2.to}`).join(", ") }),
|
|
43206
|
-
transitions.some((
|
|
43521
|
+
transitions.some((tr) => tr.guard) && /* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant: "warning", size: "sm", children: t("debug.guarded") })
|
|
43207
43522
|
] }, event)) })
|
|
43208
43523
|
] }),
|
|
43209
43524
|
unavailableEvents.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3", children: [
|
|
43210
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
43525
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.otherEvents") }),
|
|
43211
43526
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1", children: unavailableEvents.map((event) => /* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant: "default", size: "sm", className: "opacity-50", children: event }, event)) })
|
|
43212
43527
|
] }),
|
|
43213
43528
|
log18.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
43214
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
43529
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.recentTransitions") }),
|
|
43215
43530
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Stack, { gap: "xs", children: log18.map((entry, i) => /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "small", className: "font-mono text-xs", children: [
|
|
43216
43531
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-400", children: entry.traitName }),
|
|
43217
43532
|
" ",
|
|
@@ -43242,21 +43557,20 @@ var init_RuntimeDebugger = __esm({
|
|
|
43242
43557
|
}
|
|
43243
43558
|
});
|
|
43244
43559
|
function ServerResponseRow({ sr }) {
|
|
43560
|
+
const { t } = useTranslate();
|
|
43245
43561
|
const entityEntries = Object.entries(sr.dataEntities);
|
|
43246
43562
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ml-4 pl-2 border-l border-purple-500/30 py-0.5 text-xs font-mono", children: [
|
|
43247
43563
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
43248
43564
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: sr.success ? "text-green-600 dark:text-green-400" : "text-red-600 dark:text-red-400", children: [
|
|
43249
43565
|
sr.success ? "\u2713" : "\u2717",
|
|
43250
|
-
"
|
|
43566
|
+
" ",
|
|
43567
|
+
t("debug.server")
|
|
43251
43568
|
] }),
|
|
43252
43569
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-600 dark:text-purple-300", children: sr.orbitalName }),
|
|
43253
|
-
sr.clientEffects > 0 && /* @__PURE__ */ jsxRuntime.
|
|
43254
|
-
sr.clientEffects,
|
|
43255
|
-
" clientEffect",
|
|
43256
|
-
sr.clientEffects !== 1 ? "s" : ""
|
|
43257
|
-
] }),
|
|
43570
|
+
sr.clientEffects > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "px-1 rounded bg-purple-500/15 text-purple-600 dark:text-purple-300", children: t("debug.clientEffectsCount", { count: sr.clientEffects }) }),
|
|
43258
43571
|
sr.emittedEvents.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "px-1 rounded bg-blue-500/15 text-blue-300", children: [
|
|
43259
|
-
"
|
|
43572
|
+
t("debug.emitLabel"),
|
|
43573
|
+
" ",
|
|
43260
43574
|
sr.emittedEvents.join(", ")
|
|
43261
43575
|
] }),
|
|
43262
43576
|
sr.error && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "px-1 rounded bg-red-500/15 text-red-600 dark:text-red-400 truncate max-w-[300px]", children: sr.error })
|
|
@@ -43264,13 +43578,12 @@ function ServerResponseRow({ sr }) {
|
|
|
43264
43578
|
entityEntries.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1 mt-0.5", children: entityEntries.map(([name, count]) => /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "px-1 rounded bg-[var(--color-card)] text-foreground", children: [
|
|
43265
43579
|
name,
|
|
43266
43580
|
": ",
|
|
43267
|
-
count
|
|
43268
|
-
" row",
|
|
43269
|
-
count !== 1 ? "s" : ""
|
|
43581
|
+
t("debug.rowsCount", { count })
|
|
43270
43582
|
] }, name)) })
|
|
43271
43583
|
] });
|
|
43272
43584
|
}
|
|
43273
43585
|
function TransitionRow({ trace }) {
|
|
43586
|
+
const { t } = useTranslate();
|
|
43274
43587
|
const isServerEntry = !!trace.serverResponse && trace.traitName.startsWith("server:");
|
|
43275
43588
|
const hasFailedEffects = trace.effects.some((e) => e.status === "failed");
|
|
43276
43589
|
if (isServerEntry && trace.serverResponse) {
|
|
@@ -43278,7 +43591,7 @@ function TransitionRow({ trace }) {
|
|
|
43278
43591
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-2 text-xs font-mono", children: [
|
|
43279
43592
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "mt-1.5 w-1.5 h-1.5 rounded-full flex-shrink-0 bg-purple-500" }),
|
|
43280
43593
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant: "warning", size: "sm", className: "flex-shrink-0", children: trace.event }),
|
|
43281
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-600 dark:text-purple-400 flex-shrink-0", children: "
|
|
43594
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-600 dark:text-purple-400 flex-shrink-0", children: t("debug.serverResponse") })
|
|
43282
43595
|
] }),
|
|
43283
43596
|
/* @__PURE__ */ jsxRuntime.jsx(ServerResponseRow, { sr: trace.serverResponse })
|
|
43284
43597
|
] });
|
|
@@ -43319,6 +43632,7 @@ function VerifyModePanel({
|
|
|
43319
43632
|
serverCount,
|
|
43320
43633
|
localCount
|
|
43321
43634
|
}) {
|
|
43635
|
+
const { t } = useTranslate();
|
|
43322
43636
|
const [expanded, setExpanded] = React79__namespace.useState(true);
|
|
43323
43637
|
const scrollRef = React79__namespace.useRef(null);
|
|
43324
43638
|
const prevCountRef = React79__namespace.useRef(0);
|
|
@@ -43349,30 +43663,20 @@ function VerifyModePanel({
|
|
|
43349
43663
|
onClick: () => setExpanded((v) => !v),
|
|
43350
43664
|
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",
|
|
43351
43665
|
"aria-expanded": expanded,
|
|
43352
|
-
"aria-label": expanded ? "
|
|
43666
|
+
"aria-label": expanded ? t("debug.collapseVerificationTimeline") : t("debug.expandVerificationTimeline"),
|
|
43353
43667
|
"data-testid": "debugger-verify-toggle",
|
|
43354
43668
|
children: [
|
|
43355
43669
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground/50 w-3", "aria-hidden": true, children: expanded ? "\u25BE" : "\u25B8" }),
|
|
43356
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant: failedChecks > 0 ? "danger" : "success", size: "sm", children: failedChecks > 0 ?
|
|
43357
|
-
/* @__PURE__ */ jsxRuntime.
|
|
43358
|
-
|
|
43359
|
-
" local"
|
|
43360
|
-
] }),
|
|
43361
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-purple-600 dark:text-purple-400", children: [
|
|
43362
|
-
serverCount,
|
|
43363
|
-
" server"
|
|
43364
|
-
] }),
|
|
43670
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant: failedChecks > 0 ? "danger" : "success", size: "sm", children: failedChecks > 0 ? t("debug.failCount", { count: failedChecks }) : t("debug.ok") }),
|
|
43671
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground/70", children: t("debug.localCount", { count: localCount }) }),
|
|
43672
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-600 dark:text-purple-400", children: t("debug.serverCount", { count: serverCount }) }),
|
|
43365
43673
|
traitStates && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-cyan-600 dark:text-cyan-400 truncate max-w-[400px]", children: traitStates }),
|
|
43366
|
-
!expanded && transitions.length > 0 && /* @__PURE__ */ jsxRuntime.
|
|
43367
|
-
transitions.length,
|
|
43368
|
-
" transition",
|
|
43369
|
-
transitions.length !== 1 ? "s" : ""
|
|
43370
|
-
] })
|
|
43674
|
+
!expanded && transitions.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-auto text-foreground/50", children: t("debug.transitionsCount", { count: transitions.length }) })
|
|
43371
43675
|
]
|
|
43372
43676
|
}
|
|
43373
43677
|
),
|
|
43374
43678
|
expanded && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 flex overflow-hidden", children: [
|
|
43375
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { ref: scrollRef, className: "flex-1 overflow-y-auto", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-2 py-1", children: transitions.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-foreground/50 text-xs font-mono py-2 text-center", children: "
|
|
43679
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { ref: scrollRef, className: "flex-1 overflow-y-auto", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-2 py-1", children: transitions.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-foreground/50 text-xs font-mono py-2 text-center", children: t("debug.waitingForTransitions") }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-0.5", children: transitions.map((trace) => /* @__PURE__ */ jsxRuntime.jsx(TransitionRow, { trace }, trace.id)) }) }) }),
|
|
43376
43680
|
/* @__PURE__ */ jsxRuntime.jsx(WalkMinimap, {})
|
|
43377
43681
|
] })
|
|
43378
43682
|
]
|
|
@@ -43388,6 +43692,7 @@ function RuntimeDebugger({
|
|
|
43388
43692
|
defaultTab,
|
|
43389
43693
|
schema
|
|
43390
43694
|
}) {
|
|
43695
|
+
const { t } = useTranslate();
|
|
43391
43696
|
const [isCollapsed, setIsCollapsed] = React79__namespace.useState(mode === "verify" ? true : defaultCollapsed);
|
|
43392
43697
|
const [isVisible, setIsVisible] = React79__namespace.useState(mode === "inline" || mode === "verify" || isDebugEnabled2());
|
|
43393
43698
|
const debugData = useDebugData();
|
|
@@ -43426,55 +43731,55 @@ function RuntimeDebugger({
|
|
|
43426
43731
|
const tabItems = [
|
|
43427
43732
|
{
|
|
43428
43733
|
id: "dispatch",
|
|
43429
|
-
label: "
|
|
43734
|
+
label: t("debug.tabDispatch"),
|
|
43430
43735
|
badge: debugData.traits.length || void 0,
|
|
43431
43736
|
content: /* @__PURE__ */ jsxRuntime.jsx(EventDispatcherTab, { traits: debugData.traits, schema })
|
|
43432
43737
|
},
|
|
43433
43738
|
{
|
|
43434
43739
|
id: "verify",
|
|
43435
|
-
label: failedChecks > 0 ? "
|
|
43740
|
+
label: failedChecks > 0 ? t("debug.tabVerifyAlert") : t("debug.tabVerify"),
|
|
43436
43741
|
badge: verification.summary.totalChecks || void 0,
|
|
43437
43742
|
content: /* @__PURE__ */ jsxRuntime.jsx(VerificationTab, { checks: verification.checks, summary: verification.summary })
|
|
43438
43743
|
},
|
|
43439
43744
|
{
|
|
43440
43745
|
id: "timeline",
|
|
43441
|
-
label: "
|
|
43746
|
+
label: t("debug.tabTimeline"),
|
|
43442
43747
|
badge: verification.transitions.length || void 0,
|
|
43443
43748
|
content: /* @__PURE__ */ jsxRuntime.jsx(TransitionTimeline, { transitions: verification.transitions })
|
|
43444
43749
|
},
|
|
43445
43750
|
{
|
|
43446
43751
|
id: "bridge",
|
|
43447
|
-
label: "
|
|
43752
|
+
label: t("debug.tabBridge"),
|
|
43448
43753
|
badge: verification.bridge?.connected ? void 0 : 1,
|
|
43449
43754
|
content: /* @__PURE__ */ jsxRuntime.jsx(ServerBridgeTab, { bridge: verification.bridge })
|
|
43450
43755
|
},
|
|
43451
43756
|
{
|
|
43452
43757
|
id: "traits",
|
|
43453
|
-
label: "
|
|
43758
|
+
label: t("debug.tabTraits"),
|
|
43454
43759
|
badge: debugData.traits.length || void 0,
|
|
43455
43760
|
content: /* @__PURE__ */ jsxRuntime.jsx(TraitsTab, { traits: debugData.traits })
|
|
43456
43761
|
},
|
|
43457
43762
|
{
|
|
43458
43763
|
id: "ticks",
|
|
43459
|
-
label: "
|
|
43460
|
-
badge: debugData.ticks.filter((
|
|
43764
|
+
label: t("debug.tabTicks"),
|
|
43765
|
+
badge: debugData.ticks.filter((tick) => tick.active).length || void 0,
|
|
43461
43766
|
content: /* @__PURE__ */ jsxRuntime.jsx(TicksTab, { ticks: debugData.ticks })
|
|
43462
43767
|
},
|
|
43463
43768
|
{
|
|
43464
43769
|
id: "entities",
|
|
43465
|
-
label: "
|
|
43770
|
+
label: t("debug.tabEntities"),
|
|
43466
43771
|
badge: debugData.entitySnapshot?.runtime.length || void 0,
|
|
43467
43772
|
content: /* @__PURE__ */ jsxRuntime.jsx(EntitiesTab, { snapshot: debugData.entitySnapshot })
|
|
43468
43773
|
},
|
|
43469
43774
|
{
|
|
43470
43775
|
id: "events",
|
|
43471
|
-
label: "
|
|
43776
|
+
label: t("debug.tabEvents"),
|
|
43472
43777
|
badge: debugData.events.length > 0 ? debugData.events.length : void 0,
|
|
43473
43778
|
content: /* @__PURE__ */ jsxRuntime.jsx(EventFlowTab, { events: debugData.events })
|
|
43474
43779
|
},
|
|
43475
43780
|
{
|
|
43476
43781
|
id: "guards",
|
|
43477
|
-
label: "
|
|
43782
|
+
label: t("debug.tabGuards"),
|
|
43478
43783
|
badge: debugData.guards.filter((g) => !g.result).length || void 0,
|
|
43479
43784
|
content: /* @__PURE__ */ jsxRuntime.jsx(GuardsPanel, { guards: debugData.guards })
|
|
43480
43785
|
}
|
|
@@ -43502,15 +43807,10 @@ function RuntimeDebugger({
|
|
|
43502
43807
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
43503
43808
|
/* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "h6", style: { fontSize: "0.75rem" }, children: [
|
|
43504
43809
|
isCollapsed ? "\u25B6" : "\u25BC",
|
|
43505
|
-
"
|
|
43810
|
+
" ",
|
|
43811
|
+
t("debug.debugger")
|
|
43506
43812
|
] }),
|
|
43507
|
-
failedChecks > 0 ? /* @__PURE__ */ jsxRuntime.
|
|
43508
|
-
failedChecks,
|
|
43509
|
-
" failed"
|
|
43510
|
-
] }) : debugData.traits.length > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(exports.Badge, { variant: "success", size: "sm", children: [
|
|
43511
|
-
debugData.traits.length,
|
|
43512
|
-
" traits"
|
|
43513
|
-
] }) : /* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant: "info", size: "sm", children: "Idle" })
|
|
43813
|
+
failedChecks > 0 ? /* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant: "danger", size: "sm", children: t("debug.failedCount", { count: failedChecks }) }) : debugData.traits.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant: "success", size: "sm", children: t("debug.traitsCount", { count: debugData.traits.length }) }) : /* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant: "info", size: "sm", children: t("debug.idle") })
|
|
43514
43814
|
] })
|
|
43515
43815
|
}
|
|
43516
43816
|
),
|
|
@@ -43528,9 +43828,9 @@ function RuntimeDebugger({
|
|
|
43528
43828
|
);
|
|
43529
43829
|
}
|
|
43530
43830
|
if (mode === "verify") {
|
|
43531
|
-
const traitStates = debugData.traits.map((
|
|
43532
|
-
const serverEntries = verification.transitions.filter((
|
|
43533
|
-
const localEntries = verification.transitions.filter((
|
|
43831
|
+
const traitStates = debugData.traits.map((t2) => `${t2.name}:${t2.currentState}`).join(" | ");
|
|
43832
|
+
const serverEntries = verification.transitions.filter((t2) => t2.serverResponse);
|
|
43833
|
+
const localEntries = verification.transitions.filter((t2) => !t2.serverResponse);
|
|
43534
43834
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
43535
43835
|
VerifyModePanel,
|
|
43536
43836
|
{
|
|
@@ -43562,7 +43862,7 @@ function RuntimeDebugger({
|
|
|
43562
43862
|
variant: "secondary",
|
|
43563
43863
|
size: "sm",
|
|
43564
43864
|
className: "runtime-debugger__toggle",
|
|
43565
|
-
title: "
|
|
43865
|
+
title: t("debug.openDebugger"),
|
|
43566
43866
|
children: failedChecks > 0 ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "relative", children: [
|
|
43567
43867
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "V" }),
|
|
43568
43868
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute -top-1 -right-2 w-2 h-2 bg-red-500 rounded-full" })
|
|
@@ -43572,11 +43872,8 @@ function RuntimeDebugger({
|
|
|
43572
43872
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "runtime-debugger__header", children: [
|
|
43573
43873
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
43574
43874
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-lg", children: "V" }),
|
|
43575
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "h6", children: "
|
|
43576
|
-
failedChecks > 0 ? /* @__PURE__ */ jsxRuntime.
|
|
43577
|
-
failedChecks,
|
|
43578
|
-
" failed"
|
|
43579
|
-
] }) : verification.summary.totalChecks > 0 ? /* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant: "success", size: "sm", children: "All passing" }) : /* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant: "info", size: "sm", children: "Runtime" })
|
|
43875
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "h6", children: t("debug.kflowVerifier") }),
|
|
43876
|
+
failedChecks > 0 ? /* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant: "danger", size: "sm", children: t("debug.failedCount", { count: failedChecks }) }) : verification.summary.totalChecks > 0 ? /* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant: "success", size: "sm", children: t("debug.allPassing") }) : /* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant: "info", size: "sm", children: t("debug.runtime") })
|
|
43580
43877
|
] }),
|
|
43581
43878
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
43582
43879
|
exports.Button,
|
|
@@ -43584,7 +43881,7 @@ function RuntimeDebugger({
|
|
|
43584
43881
|
onClick: () => setIsCollapsed(true),
|
|
43585
43882
|
variant: "ghost",
|
|
43586
43883
|
size: "sm",
|
|
43587
|
-
title: "
|
|
43884
|
+
title: t("debug.close"),
|
|
43588
43885
|
children: "x"
|
|
43589
43886
|
}
|
|
43590
43887
|
)
|
|
@@ -43598,7 +43895,7 @@ function RuntimeDebugger({
|
|
|
43598
43895
|
className: "runtime-debugger__tabs"
|
|
43599
43896
|
}
|
|
43600
43897
|
) }),
|
|
43601
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "runtime-debugger__footer", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-foreground/50", children: "
|
|
43898
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "runtime-debugger__footer", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-foreground/50", children: t("debug.toggleHint") }) })
|
|
43602
43899
|
] })
|
|
43603
43900
|
}
|
|
43604
43901
|
);
|
|
@@ -43624,6 +43921,7 @@ var init_RuntimeDebugger2 = __esm({
|
|
|
43624
43921
|
init_TransitionTimeline();
|
|
43625
43922
|
init_ServerBridgeTab();
|
|
43626
43923
|
init_EventDispatcherTab();
|
|
43924
|
+
init_useTranslate();
|
|
43627
43925
|
init_RuntimeDebugger();
|
|
43628
43926
|
RuntimeDebugger.displayName = "RuntimeDebugger";
|
|
43629
43927
|
}
|
|
@@ -45023,7 +45321,7 @@ var init_StatCard = __esm({
|
|
|
45023
45321
|
}
|
|
45024
45322
|
);
|
|
45025
45323
|
}
|
|
45026
|
-
const label = schemaStats?.[0]?.label || labelToUse || "
|
|
45324
|
+
const label = schemaStats?.[0]?.label || labelToUse || t("statCard.defaultLabel");
|
|
45027
45325
|
const normalizedPropValue = Array.isArray(propValue) ? propValue[0] ?? propValue.length : propValue;
|
|
45028
45326
|
const value = schemaStats?.[0]?.value ?? normalizedPropValue ?? 0;
|
|
45029
45327
|
const trendDirection = manualDirection || (calculatedTrend === void 0 || calculatedTrend === 0 ? "neutral" : calculatedTrend > 0 ? "up" : "down");
|
|
@@ -45066,7 +45364,7 @@ var init_StatCard = __esm({
|
|
|
45066
45364
|
]
|
|
45067
45365
|
}
|
|
45068
45366
|
),
|
|
45069
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", color: "secondary", as: "span", children: "
|
|
45367
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", color: "secondary", as: "span", children: t("statCard.vsLastPeriod") })
|
|
45070
45368
|
] }),
|
|
45071
45369
|
subtitle && !calculatedTrend && /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", color: "secondary", children: subtitle })
|
|
45072
45370
|
] }),
|