@almadar/ui 5.21.8 → 5.21.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/avl/index.cjs +960 -649
- package/dist/avl/index.js +960 -649
- package/dist/components/game/organisms/three/index.cjs +489 -1
- package/dist/components/game/organisms/three/index.js +489 -1
- package/dist/components/index.cjs +665 -369
- package/dist/components/index.js +665 -369
- package/dist/docs/index.cjs +300 -5
- package/dist/docs/index.js +300 -5
- package/dist/hooks/index.cjs +296 -3
- package/dist/hooks/index.js +296 -3
- package/dist/locales/index.cjs +896 -9
- package/dist/locales/index.js +896 -9
- package/dist/providers/index.cjs +665 -369
- package/dist/providers/index.js +665 -369
- package/dist/runtime/index.cjs +665 -369
- package/dist/runtime/index.js +665 -369
- package/locales/ar.json +300 -31
- package/locales/en.json +296 -31
- package/locales/sl.json +300 -31
- package/package.json +1 -1
package/dist/runtime/index.js
CHANGED
|
@@ -298,7 +298,10 @@ var en_default;
|
|
|
298
298
|
var init_en = __esm({
|
|
299
299
|
"locales/en.json"() {
|
|
300
300
|
en_default = {
|
|
301
|
-
$meta: {
|
|
301
|
+
$meta: {
|
|
302
|
+
locale: "en",
|
|
303
|
+
direction: "ltr"
|
|
304
|
+
},
|
|
302
305
|
"common.save": "Save",
|
|
303
306
|
"common.cancel": "Cancel",
|
|
304
307
|
"common.delete": "Delete",
|
|
@@ -440,7 +443,6 @@ var init_en = __esm({
|
|
|
440
443
|
"error.somethingWentWrong": "Something went wrong",
|
|
441
444
|
"error.loadingItems": "Loading items...",
|
|
442
445
|
"error.noItemsFound": "No items found",
|
|
443
|
-
"error.notFound": "Not found",
|
|
444
446
|
"debug.noEntityData": "No entity data",
|
|
445
447
|
"debug.noEntities": "No entities",
|
|
446
448
|
"debug.noTicks": "No ticks registered",
|
|
@@ -472,7 +474,298 @@ var init_en = __esm({
|
|
|
472
474
|
"template.showcase": "Showcase",
|
|
473
475
|
"template.faq": "Frequently Asked Questions",
|
|
474
476
|
"template.ourTeam": "Our Team",
|
|
475
|
-
"template.caseStudies": "Case Studies"
|
|
477
|
+
"template.caseStudies": "Case Studies",
|
|
478
|
+
"richBlockEditor.toolbar.text": "Text",
|
|
479
|
+
"richBlockEditor.toolbar.h1": "H1",
|
|
480
|
+
"richBlockEditor.toolbar.h2": "H2",
|
|
481
|
+
"richBlockEditor.toolbar.h3": "H3",
|
|
482
|
+
"richBlockEditor.toolbar.bulletList": "Bullet list",
|
|
483
|
+
"richBlockEditor.toolbar.numbered": "Numbered",
|
|
484
|
+
"richBlockEditor.toolbar.quote": "Quote",
|
|
485
|
+
"richBlockEditor.toolbar.code": "Code",
|
|
486
|
+
"richBlockEditor.toolbar.divider": "Divider",
|
|
487
|
+
"richBlockEditor.toolbar.image": "Image",
|
|
488
|
+
"richBlockEditor.blockType.paragraph": "Text",
|
|
489
|
+
"richBlockEditor.blockType.heading1": "Heading 1",
|
|
490
|
+
"richBlockEditor.blockType.heading2": "Heading 2",
|
|
491
|
+
"richBlockEditor.blockType.heading3": "Heading 3",
|
|
492
|
+
"richBlockEditor.blockType.bulletList": "Bullet list",
|
|
493
|
+
"richBlockEditor.blockType.numberedList": "Numbered list",
|
|
494
|
+
"richBlockEditor.blockType.quote": "Quote",
|
|
495
|
+
"richBlockEditor.blockType.code": "Code",
|
|
496
|
+
"richBlockEditor.blockType.divider": "Divider",
|
|
497
|
+
"richBlockEditor.blockType.image": "Image",
|
|
498
|
+
"richBlockEditor.blockActions": "Block actions",
|
|
499
|
+
"richBlockEditor.duplicate": "Duplicate",
|
|
500
|
+
"richBlockEditor.turnInto": "Turn into",
|
|
501
|
+
"richBlockEditor.placeholder.heading1": "Heading 1",
|
|
502
|
+
"richBlockEditor.placeholder.heading2": "Heading 2",
|
|
503
|
+
"richBlockEditor.placeholder.heading3": "Heading 3",
|
|
504
|
+
"richBlockEditor.placeholder.quote": "Quote",
|
|
505
|
+
"richBlockEditor.placeholder.code": "Enter code",
|
|
506
|
+
"richBlockEditor.placeholder.paragraph": "Start writing...",
|
|
507
|
+
"richBlockEditor.placeholder.listItem": "List item",
|
|
508
|
+
"richBlockEditor.placeholder.caption": "Caption (optional)",
|
|
509
|
+
"richBlockEditor.aria.heading1Block": "Heading 1 block",
|
|
510
|
+
"richBlockEditor.aria.heading2Block": "Heading 2 block",
|
|
511
|
+
"richBlockEditor.aria.heading3Block": "Heading 3 block",
|
|
512
|
+
"richBlockEditor.aria.quoteBlock": "Quote block",
|
|
513
|
+
"richBlockEditor.aria.codeBlock": "Code block",
|
|
514
|
+
"richBlockEditor.aria.codeLanguage": "Code language",
|
|
515
|
+
"richBlockEditor.aria.imageUrl": "Image URL",
|
|
516
|
+
"richBlockEditor.aria.imageCaption": "Image caption",
|
|
517
|
+
"richBlockEditor.aria.listItem": "List item",
|
|
518
|
+
"richBlockEditor.aria.removeListItem": "Remove list item",
|
|
519
|
+
"richBlockEditor.aria.paragraphBlock": "Paragraph block",
|
|
520
|
+
"richBlockEditor.embeddedImage": "Embedded image",
|
|
521
|
+
"richBlockEditor.noImageUrl": "No image URL set",
|
|
522
|
+
"richBlockEditor.addItem": "Add item",
|
|
523
|
+
"richBlockEditor.insertParagraphBelow": "Insert paragraph below",
|
|
524
|
+
"richBlockEditor.editorToolbar": "Block editor toolbar",
|
|
525
|
+
"richBlockEditor.insertEntry": "Insert {{label}}",
|
|
526
|
+
"versionDiff.compare": "Compare",
|
|
527
|
+
"versionDiff.to": "to",
|
|
528
|
+
"versionDiff.beforeRevision": "Before revision",
|
|
529
|
+
"versionDiff.afterRevision": "After revision",
|
|
530
|
+
"versionDiff.switchToInline": "Switch to inline view",
|
|
531
|
+
"versionDiff.switchToSideBySide": "Switch to side-by-side view",
|
|
532
|
+
"versionDiff.revert": "Revert",
|
|
533
|
+
"versionDiff.byAuthor": " by {{author}}",
|
|
534
|
+
"violationAlert.actionType.measure": "Corrective Measure",
|
|
535
|
+
"violationAlert.actionType.admin": "Administrative Action",
|
|
536
|
+
"violationAlert.actionType.penalty": "Penalty Proceedings",
|
|
537
|
+
"violationAlert.fallbackMessage": "Violation",
|
|
538
|
+
"violationAlert.adminLabel": "Admin:",
|
|
539
|
+
"violationAlert.penaltyLabel": "Penalty:",
|
|
540
|
+
"violationAlert.goToField": "Go to field",
|
|
541
|
+
"branchingLogic.title": "Branching logic",
|
|
542
|
+
"branchingLogic.if": "If",
|
|
543
|
+
"branchingLogic.goTo": "go to",
|
|
544
|
+
"branchingLogic.rules": "Rules",
|
|
545
|
+
"branchingLogic.logicGraph": "Logic graph",
|
|
546
|
+
"branchingLogic.addRule": "Add rule",
|
|
547
|
+
"branchingLogic.deleteRule": "Delete rule",
|
|
548
|
+
"branchingLogic.endOfSurvey": "End of survey",
|
|
549
|
+
"branchingLogic.brokenReference": "Broken reference",
|
|
550
|
+
"branchingLogic.selectQuestion": "Select question",
|
|
551
|
+
"branchingLogic.selectTarget": "Select target",
|
|
552
|
+
"branchingLogic.selectValue": "Select value",
|
|
553
|
+
"branchingLogic.addValue": "Add value",
|
|
554
|
+
"branchingLogic.value": "Value",
|
|
555
|
+
"branchingLogic.typeValuePressEnter": "Type value, press Enter",
|
|
556
|
+
"branchingLogic.operatorEquals": "equals",
|
|
557
|
+
"branchingLogic.operatorNotEquals": "does not equal",
|
|
558
|
+
"branchingLogic.operatorContains": "contains",
|
|
559
|
+
"branchingLogic.operatorIn": "is one of",
|
|
560
|
+
"branchingLogic.graphAriaLabel": "Branching logic graph",
|
|
561
|
+
"branchingLogic.ruleCountOne": "{{count}} rule",
|
|
562
|
+
"branchingLogic.ruleCountOther": "{{count}} rules",
|
|
563
|
+
"branchingLogic.brokenCount": "{{count}} broken",
|
|
564
|
+
"branchingLogic.emptyNoQuestions": "Add questions before building branching rules.",
|
|
565
|
+
"branchingLogic.emptyNoRules": "No rules yet. Add a rule to define branching logic.",
|
|
566
|
+
"filterGroup.filters": "Filters",
|
|
567
|
+
"filterGroup.all": "All",
|
|
568
|
+
"filterGroup.clear": "Clear",
|
|
569
|
+
"filterGroup.clearAll": "Clear all",
|
|
570
|
+
"filterGroup.from": "From",
|
|
571
|
+
"filterGroup.to": "To",
|
|
572
|
+
"filterGroup.allOf": "All {{label}}",
|
|
573
|
+
"filterGroup.activeCount": "{{count}} active",
|
|
574
|
+
"debug.guardEvaluationsHint": "Guard evaluations will appear when transitions or ticks with guards execute",
|
|
575
|
+
"debug.expression": "Expression",
|
|
576
|
+
"debug.inputs": "Inputs",
|
|
577
|
+
"debug.trait": "Trait",
|
|
578
|
+
"debug.filterAll": "All",
|
|
579
|
+
"debug.filterPassed": "Passed",
|
|
580
|
+
"debug.filterFailed": "Failed",
|
|
581
|
+
"debug.traitsInitHint": "Traits will appear when the state machine initializes",
|
|
582
|
+
"debug.traitsMountHint": "Traits will appear when components using them are mounted",
|
|
583
|
+
"debug.activeStates": "Active States",
|
|
584
|
+
"debug.availableEvents": "Available Events",
|
|
585
|
+
"debug.noTransitionsFromState": "No transitions from current state",
|
|
586
|
+
"debug.guarded": "guarded",
|
|
587
|
+
"debug.otherEvents": "Other Events (not available from current state)",
|
|
588
|
+
"debug.recentTransitions": "Recent Transitions",
|
|
589
|
+
"debug.transitionsCount": "{{count}} transitions",
|
|
590
|
+
"debug.states": "States",
|
|
591
|
+
"debug.transitions": "Transitions",
|
|
592
|
+
"debug.guards": "Guards",
|
|
593
|
+
"debug.debugModeHint": "Debug mode may not be enabled",
|
|
594
|
+
"debug.entitiesSpawnHint": "Entities will appear when spawned",
|
|
595
|
+
"debug.singleton": "Singleton",
|
|
596
|
+
"debug.singletonsCount": "Singletons ({{count}})",
|
|
597
|
+
"debug.runtimeCount": "Runtime ({{count}})",
|
|
598
|
+
"debug.moreEntities": "+{{count}} more entities",
|
|
599
|
+
"debug.persistent": "Persistent",
|
|
600
|
+
"debug.loadedCount": "{{count}} loaded",
|
|
601
|
+
"debug.notLoaded": "not loaded",
|
|
602
|
+
"debug.eventsExecuteHint": "Events will appear as traits, ticks, and other systems execute",
|
|
603
|
+
"debug.allCount": "All ({{count}})",
|
|
604
|
+
"debug.autoScroll": "Auto-scroll",
|
|
605
|
+
"debug.transitionsProcessHint": "Transitions will appear as the state machine processes events",
|
|
606
|
+
"debug.transitionsRecorded": "{{count}} transitions recorded",
|
|
607
|
+
"debug.guardLabel": "guard:",
|
|
608
|
+
"debug.effectsCount": "{{count}} effects",
|
|
609
|
+
"debug.bridgeInitHint": "The ServerBridge has not been initialized. Bridge health will appear once the runtime connects to the server.",
|
|
610
|
+
"debug.never": "Never",
|
|
611
|
+
"debug.connected": "Connected",
|
|
612
|
+
"debug.disconnected": "Disconnected",
|
|
613
|
+
"debug.lastError": "Last Error",
|
|
614
|
+
"debug.totalEventsProcessed": "{{count}} total events processed",
|
|
615
|
+
"debug.server": "server",
|
|
616
|
+
"debug.clientEffectsCount": "{{count}} clientEffects",
|
|
617
|
+
"debug.emitLabel": "emit:",
|
|
618
|
+
"debug.rowsCount": "{{count}} rows",
|
|
619
|
+
"debug.serverResponse": "server response",
|
|
620
|
+
"debug.collapseVerificationTimeline": "Collapse verification timeline",
|
|
621
|
+
"debug.expandVerificationTimeline": "Expand verification timeline",
|
|
622
|
+
"debug.failCount": "{{count}} fail",
|
|
623
|
+
"debug.ok": "OK",
|
|
624
|
+
"debug.localCount": "{{count}} local",
|
|
625
|
+
"debug.serverCount": "{{count}} server",
|
|
626
|
+
"debug.waitingForTransitions": "Waiting for transitions...",
|
|
627
|
+
"debug.tabDispatch": "Dispatch",
|
|
628
|
+
"debug.tabVerify": "Verify",
|
|
629
|
+
"debug.tabVerifyAlert": "Verify (!)",
|
|
630
|
+
"debug.tabTimeline": "Timeline",
|
|
631
|
+
"debug.tabBridge": "Bridge",
|
|
632
|
+
"debug.tabTraits": "Traits",
|
|
633
|
+
"debug.tabTicks": "Ticks",
|
|
634
|
+
"debug.tabEntities": "Entities",
|
|
635
|
+
"debug.tabEvents": "Events",
|
|
636
|
+
"debug.tabGuards": "Guards",
|
|
637
|
+
"debug.debugger": "Debugger",
|
|
638
|
+
"debug.failedCount": "{{count}} failed",
|
|
639
|
+
"debug.traitsCount": "{{count}} traits",
|
|
640
|
+
"debug.idle": "Idle",
|
|
641
|
+
"debug.openDebugger": "Open Debugger (`)",
|
|
642
|
+
"debug.kflowVerifier": "KFlow Verifier",
|
|
643
|
+
"debug.allPassing": "All passing",
|
|
644
|
+
"debug.runtime": "Runtime",
|
|
645
|
+
"debug.close": "Close (`)",
|
|
646
|
+
"debug.toggleHint": "Press ` to toggle | window.__orbitalVerification for automation",
|
|
647
|
+
"replyTree.expandReplies": "Expand replies",
|
|
648
|
+
"replyTree.collapseReplies": "Collapse replies",
|
|
649
|
+
"replyTree.voteOnReplyBy": "Vote on reply by {{author}}",
|
|
650
|
+
"replyTree.replyTo": "Reply to {{author}}",
|
|
651
|
+
"replyTree.replyToPlaceholder": "Reply to {{author}}\u2026",
|
|
652
|
+
"replyTree.reply": "Reply",
|
|
653
|
+
"replyTree.flagReplyBy": "Flag reply by {{author}}",
|
|
654
|
+
"replyTree.flag": "Flag",
|
|
655
|
+
"replyTree.send": "Send",
|
|
656
|
+
"replyTree.continueThread": "Continue thread",
|
|
657
|
+
"replyTree.noRepliesYet": "No replies yet.",
|
|
658
|
+
"signaturePad.label": "Signature",
|
|
659
|
+
"signaturePad.helperText": "Draw your signature above",
|
|
660
|
+
"signaturePad.clear": "Clear",
|
|
661
|
+
"signaturePad.confirm": "Confirm",
|
|
662
|
+
"qrScanner.cameraUnavailable": "Camera unavailable",
|
|
663
|
+
"qrScanner.paused": "Paused",
|
|
664
|
+
"qrScanner.resumeScanning": "Resume scanning",
|
|
665
|
+
"qrScanner.pauseScanning": "Pause scanning",
|
|
666
|
+
"qrScanner.switchToFrontCamera": "Switch to front camera",
|
|
667
|
+
"qrScanner.switchToRearCamera": "Switch to rear camera",
|
|
668
|
+
"qrScanner.mockScan": "Mock Scan",
|
|
669
|
+
"docSearch.placeholder": "Search documentation...",
|
|
670
|
+
"stateMachine.loading": "Loading state machine\u2026",
|
|
671
|
+
"stateMachine.noStateMachine": "No state machine to visualize",
|
|
672
|
+
"avl.trigger": "Trigger",
|
|
673
|
+
"avl.guard": "Guard",
|
|
674
|
+
"avl.effects": "Effects",
|
|
675
|
+
"avl.props": "Props",
|
|
676
|
+
"avl.entity": "Entity",
|
|
677
|
+
"avl.traits": "Traits",
|
|
678
|
+
"avl.transition": "Transition",
|
|
679
|
+
"avl.onEntity": "on {{entity}}",
|
|
680
|
+
"avl.linkedTo": "linked to {{entity}}",
|
|
681
|
+
"avl.pressEscToZoomOut": "Press Esc to zoom out",
|
|
682
|
+
"avl.zoomIn": "Zoom in",
|
|
683
|
+
"avl.zoomOut": "Zoom out",
|
|
684
|
+
"avl.orbitalLabel": "Orbital: {{name}}",
|
|
685
|
+
"avl.orbitalLabelHighlighted": "Orbital: {{name}} (highlighted)",
|
|
686
|
+
"avl.noTraitData": "No trait data",
|
|
687
|
+
"avl.computingLayout": "Computing layout...",
|
|
688
|
+
"avl.noStateMachine": "No state machine",
|
|
689
|
+
"avl.listensFor": "listens for {{event}}",
|
|
690
|
+
"avl.emits": "emits {{event}}",
|
|
691
|
+
"avl.pageLayout": "Page Layout",
|
|
692
|
+
"avl.overlaySuffix": "(overlay)",
|
|
693
|
+
"orbPreview.previewBadge": "Preview",
|
|
694
|
+
"orbPreview.doubleClickToOpen": "Double-click to open",
|
|
695
|
+
"orbPreview.dropToAddAndOpen": "Drop to add and open",
|
|
696
|
+
"orbPreview.dispatching": "Coordinator is dispatching to this orbital",
|
|
697
|
+
"orbPreview.noPreview": "No preview available",
|
|
698
|
+
"orbPreview.screensCount": "{{count}} screens",
|
|
699
|
+
"detailView.noTransitionData": "No transition data",
|
|
700
|
+
"orbInspector.required": "req",
|
|
701
|
+
"orbInspector.addField": "Add Field",
|
|
702
|
+
"orbInspector.serviceMode": "Service Mode",
|
|
703
|
+
"orbInspector.standalone": "Standalone",
|
|
704
|
+
"orbInspector.embedded": "Embedded",
|
|
705
|
+
"orbInspector.rendersOwnUi": "Renders its own UI",
|
|
706
|
+
"orbInspector.headless": "Headless, wired to other behaviors",
|
|
707
|
+
"orbInspector.addEffect": "Add Effect",
|
|
708
|
+
"orbInspector.guardExpression": "Guard expression",
|
|
709
|
+
"orbInspector.selectPatternForStyles": "Select a pattern to view its style tokens.",
|
|
710
|
+
"orbInspector.tokens": "Tokens",
|
|
711
|
+
"orbInspector.noTokenContract": "No token contract declared for this pattern.",
|
|
712
|
+
"orbInspector.variant": "Variant",
|
|
713
|
+
"orbInspector.size": "Size",
|
|
714
|
+
"orbInspector.statesCount": "{{count}} states",
|
|
715
|
+
"orbInspector.onEntity": " on {{entity}}",
|
|
716
|
+
"orbInspector.projectThemeTokens": "Project theme tokens",
|
|
717
|
+
"orbInspector.tokenGroup.colors": "Colors",
|
|
718
|
+
"orbInspector.tokenGroup.radii": "Radii",
|
|
719
|
+
"orbInspector.tokenGroup.spacing": "Spacing",
|
|
720
|
+
"orbInspector.tokenGroup.shadows": "Shadows",
|
|
721
|
+
"orbInspector.tab.inspector": "Inspector",
|
|
722
|
+
"orbInspector.tab.styles": "Styles",
|
|
723
|
+
"orbInspector.tab.code": "Code",
|
|
724
|
+
"canvas.goBackToOverview": "Go back to overview",
|
|
725
|
+
"canvas.overview": "Overview",
|
|
726
|
+
"canvas.expanded": "Expanded",
|
|
727
|
+
"canvas.modulesCount": "{{count}} modules",
|
|
728
|
+
"canvas.screensCount": "{{count}} screens",
|
|
729
|
+
"canvas.switchToView": "Switch to {{label}} view",
|
|
730
|
+
"lawReference.viewFullText": "View full law text",
|
|
731
|
+
"statCard.defaultLabel": "Stat",
|
|
732
|
+
"statCard.vsLastPeriod": "vs last period",
|
|
733
|
+
"mediaGallery.upload": "Upload",
|
|
734
|
+
"mediaGallery.noMediaDescription": "No media items to display.",
|
|
735
|
+
"pagination.jumpPlaceholder": "Page",
|
|
736
|
+
"table.selectRow": "Select row {{id}}",
|
|
737
|
+
"card.selectItem": "Select {{item}}",
|
|
738
|
+
"card.itemFallback": "item",
|
|
739
|
+
"fileTree.noFiles": "No files",
|
|
740
|
+
"masterDetail.selectItem": "Select an item to view details",
|
|
741
|
+
"empty.createFirst": "Create your first item to get started.",
|
|
742
|
+
"upload.dropOrBrowse": "Drop files here or click to browse",
|
|
743
|
+
"upload.dropFilesHere": "Drop files here",
|
|
744
|
+
"upload.accepted": "Accepted: {{accept}}",
|
|
745
|
+
"upload.maxSize": "Max size: {{size}}",
|
|
746
|
+
"upload.maxFiles": "Up to {{count}} files",
|
|
747
|
+
"upload.error.maxFiles": "Maximum {{count}} files allowed",
|
|
748
|
+
"upload.error.invalidType": "Invalid file type: {{name}}",
|
|
749
|
+
"upload.error.tooLarge": "File too large: {{name}} (max {{size}})",
|
|
750
|
+
"optionConstraint.requiredOne": "Required, pick 1",
|
|
751
|
+
"optionConstraint.optionalOne": "Optional, pick up to 1",
|
|
752
|
+
"optionConstraint.pickExactly": "Pick exactly {{count}}",
|
|
753
|
+
"optionConstraint.pickRange": "Pick {{min}}-{{max}}",
|
|
754
|
+
"optionConstraint.pickAtLeast": "Pick at least {{count}}",
|
|
755
|
+
"optionConstraint.pickUpTo": "Pick up to {{count}}",
|
|
756
|
+
"optionConstraint.optional": "Optional",
|
|
757
|
+
"optionConstraint.outOfStock": "Out of stock",
|
|
758
|
+
"optionConstraint.error.pickOne": "Pick 1 option",
|
|
759
|
+
"optionConstraint.error.pickOnlyOne": "Pick only 1 option",
|
|
760
|
+
"optionConstraint.error.pickMore": "Pick at least {{count}} more",
|
|
761
|
+
"optionConstraint.error.removeOptions": "Remove {{count}} options",
|
|
762
|
+
"stateMachine.pinned": "Pinned",
|
|
763
|
+
"stateMachine.eventCount": "{{count}} events",
|
|
764
|
+
"stateMachine.externalEffects": "External Effects",
|
|
765
|
+
"stateMachine.legend.initial": "Initial",
|
|
766
|
+
"stateMachine.legend.final": "Final",
|
|
767
|
+
"stateMachine.legend.state": "State",
|
|
768
|
+
"stateMachine.legend.multiEvent": "Multi-event"
|
|
476
769
|
};
|
|
477
770
|
}
|
|
478
771
|
});
|
|
@@ -5455,6 +5748,7 @@ var init_LawReferenceTooltip = __esm({
|
|
|
5455
5748
|
init_Typography();
|
|
5456
5749
|
init_Divider();
|
|
5457
5750
|
init_cn();
|
|
5751
|
+
init_useTranslate();
|
|
5458
5752
|
positionStyles2 = {
|
|
5459
5753
|
top: "bottom-full left-1/2 -translate-x-1/2 mb-2",
|
|
5460
5754
|
bottom: "top-full left-1/2 -translate-x-1/2 mt-2",
|
|
@@ -5473,6 +5767,7 @@ var init_LawReferenceTooltip = __esm({
|
|
|
5473
5767
|
position = "top",
|
|
5474
5768
|
className
|
|
5475
5769
|
}) => {
|
|
5770
|
+
const { t } = useTranslate();
|
|
5476
5771
|
const [isVisible, setIsVisible] = React84__default.useState(false);
|
|
5477
5772
|
const timeoutRef = React84__default.useRef(null);
|
|
5478
5773
|
const handleMouseEnter = () => {
|
|
@@ -5556,7 +5851,7 @@ var init_LawReferenceTooltip = __esm({
|
|
|
5556
5851
|
target: "_blank",
|
|
5557
5852
|
rel: "noopener noreferrer",
|
|
5558
5853
|
onClick: (e) => e.stopPropagation(),
|
|
5559
|
-
children: "
|
|
5854
|
+
children: t("lawReference.viewFullText")
|
|
5560
5855
|
}
|
|
5561
5856
|
)
|
|
5562
5857
|
] }),
|
|
@@ -13458,6 +13753,7 @@ var log6, SWIM_GUTTER, CENTER_W, BehaviorView;
|
|
|
13458
13753
|
var init_BehaviorView = __esm({
|
|
13459
13754
|
"components/avl/molecules/BehaviorView.tsx"() {
|
|
13460
13755
|
"use client";
|
|
13756
|
+
init_useTranslate();
|
|
13461
13757
|
init_AvlState();
|
|
13462
13758
|
init_AvlTransitionLane();
|
|
13463
13759
|
init_AvlSwimLane();
|
|
@@ -13467,6 +13763,7 @@ var init_BehaviorView = __esm({
|
|
|
13467
13763
|
SWIM_GUTTER = 120;
|
|
13468
13764
|
CENTER_W = 360;
|
|
13469
13765
|
BehaviorView = ({ data }) => {
|
|
13766
|
+
const { t } = useTranslate();
|
|
13470
13767
|
const [layout, setLayout] = useState(null);
|
|
13471
13768
|
const traitName = data.traits[0]?.name;
|
|
13472
13769
|
const traitData = traitName ? data.traitDetails[traitName] : void 0;
|
|
@@ -13476,10 +13773,10 @@ var init_BehaviorView = __esm({
|
|
|
13476
13773
|
computeTraitLayout(traitData).then(setLayout).catch((err) => log6.error("compute-trait-layout-failed", { error: err instanceof Error ? err : String(err) }));
|
|
13477
13774
|
}, [dataKey]);
|
|
13478
13775
|
if (!traitData) {
|
|
13479
|
-
return /* @__PURE__ */ jsx("div", { className: "rounded-lg border border-[var(--color-border)] bg-[var(--color-card)] p-4 text-center text-[var(--color-muted-foreground)] text-sm", children: "
|
|
13776
|
+
return /* @__PURE__ */ jsx("div", { className: "rounded-lg border border-[var(--color-border)] bg-[var(--color-card)] p-4 text-center text-[var(--color-muted-foreground)] text-sm", children: t("avl.noTraitData") });
|
|
13480
13777
|
}
|
|
13481
13778
|
if (!layout) {
|
|
13482
|
-
return /* @__PURE__ */ jsx("div", { className: "rounded-lg border border-[var(--color-border)] bg-[var(--color-card)] p-4 text-center text-[var(--color-muted-foreground)] text-sm", children: "
|
|
13779
|
+
return /* @__PURE__ */ jsx("div", { className: "rounded-lg border border-[var(--color-border)] bg-[var(--color-card)] p-4 text-center text-[var(--color-muted-foreground)] text-sm", children: t("avl.computingLayout") });
|
|
13483
13780
|
}
|
|
13484
13781
|
const hasExternal = traitData.listenedEvents.length > 0 || traitData.emittedEvents.length > 0;
|
|
13485
13782
|
const viewW = hasExternal ? SWIM_GUTTER + CENTER_W + SWIM_GUTTER : CENTER_W + 60;
|
|
@@ -13495,10 +13792,7 @@ var init_BehaviorView = __esm({
|
|
|
13495
13792
|
const machineHeight = scaledH + 100;
|
|
13496
13793
|
const renderMachine = /* @__PURE__ */ jsxs("g", { children: [
|
|
13497
13794
|
/* @__PURE__ */ jsx("text", { x: CENTER_W / 2, y: 20, textAnchor: "middle", fill: "var(--color-foreground)", fontSize: 18, fontWeight: "700", fontFamily: "inherit", children: traitData.name }),
|
|
13498
|
-
/* @__PURE__ */
|
|
13499
|
-
"on ",
|
|
13500
|
-
traitData.linkedEntity
|
|
13501
|
-
] }),
|
|
13795
|
+
/* @__PURE__ */ jsx("text", { x: CENTER_W / 2, y: 36, textAnchor: "middle", fill: "var(--color-muted-foreground)", fontSize: 11, opacity: 0.5, fontFamily: "inherit", children: t("avl.onEntity", { entity: traitData.linkedEntity }) }),
|
|
13502
13796
|
/* @__PURE__ */ jsxs("defs", { children: [
|
|
13503
13797
|
/* @__PURE__ */ jsx("marker", { id: "bvArrow", viewBox: "0 0 10 10", refX: "9", refY: "5", markerWidth: "6", markerHeight: "6", orient: "auto-start-reverse", children: /* @__PURE__ */ jsx("path", { d: "M 0 0 L 10 5 L 0 10 z", fill: CONNECTION_COLORS.forward.color, opacity: 0.7 }) }),
|
|
13504
13798
|
/* @__PURE__ */ jsx("marker", { id: "bvArrowBack", viewBox: "0 0 10 10", refX: "9", refY: "5", markerWidth: "6", markerHeight: "6", orient: "auto-start-reverse", children: /* @__PURE__ */ jsx("path", { d: "M 0 0 L 10 5 L 0 10 z", fill: CONNECTION_COLORS.backward.color, opacity: 0.5 }) })
|
|
@@ -13806,7 +14100,7 @@ var init_CodeBlock = __esm({
|
|
|
13806
14100
|
const isLolo = language === "lolo";
|
|
13807
14101
|
const activeStyle = isOrb ? orbStyle : isLolo ? loloStyle : dark;
|
|
13808
14102
|
const eventBus = useEventBus();
|
|
13809
|
-
const { t
|
|
14103
|
+
const { t } = useTranslate();
|
|
13810
14104
|
const scrollRef = useRef(null);
|
|
13811
14105
|
const codeRef = useRef(null);
|
|
13812
14106
|
const savedScrollLeftRef = useRef(0);
|
|
@@ -14061,7 +14355,7 @@ var init_CodeBlock = __esm({
|
|
|
14061
14355
|
size: "sm",
|
|
14062
14356
|
onClick: handleCopy,
|
|
14063
14357
|
className: "opacity-0 group-hover:opacity-100 focus:opacity-100 transition-opacity text-muted-foreground hover:text-white",
|
|
14064
|
-
"aria-label": "
|
|
14358
|
+
"aria-label": t("common.copy"),
|
|
14065
14359
|
children: copied ? /* @__PURE__ */ jsx(Icon, { name: "check", className: "w-4 h-4 text-green-400" }) : /* @__PURE__ */ jsx(Icon, { name: "copy", className: "w-4 h-4" })
|
|
14066
14360
|
}
|
|
14067
14361
|
)
|
|
@@ -14666,7 +14960,7 @@ var init_StateMachineView = __esm({
|
|
|
14666
14960
|
const endX2 = fromState.x + Math.cos(Math.PI / 2 * loopDirection + endAngle) * fromState.radius;
|
|
14667
14961
|
const endY2 = fromState.y + Math.sin(Math.PI / 2 * loopDirection + endAngle) * fromState.radius;
|
|
14668
14962
|
const isSingle2 = bundle.labels.length === 1;
|
|
14669
|
-
const labelText2 = isSingle2 ? bundle.labels[0].event :
|
|
14963
|
+
const labelText2 = isSingle2 ? bundle.labels[0].event : t("stateMachine.eventCount", { count: bundle.labels.length });
|
|
14670
14964
|
const bundleColor2 = isSingle2 ? config.colors.arrow : "var(--color-accent)";
|
|
14671
14965
|
const labelWidth2 = labelText2.length * 9 + (isSingle2 ? 24 : 40);
|
|
14672
14966
|
const cx = fromState.x;
|
|
@@ -14792,7 +15086,7 @@ var init_StateMachineView = __esm({
|
|
|
14792
15086
|
const controlX = midX + perpX;
|
|
14793
15087
|
const controlY = midY + perpY;
|
|
14794
15088
|
const isSingle = bundle.labels.length === 1;
|
|
14795
|
-
const labelText = isSingle ? bundle.labels[0].event :
|
|
15089
|
+
const labelText = isSingle ? bundle.labels[0].event : t("stateMachine.eventCount", { count: bundle.labels.length });
|
|
14796
15090
|
const labelWidth = labelText.length * 9 + (isSingle ? 24 : 40);
|
|
14797
15091
|
const bundleColor = isSingle ? config.colors.arrow : "var(--color-accent)";
|
|
14798
15092
|
const curveMidpoint = {
|
|
@@ -14947,7 +15241,7 @@ var init_StateMachineView = __esm({
|
|
|
14947
15241
|
{
|
|
14948
15242
|
className: "absolute -top-2 left-1/2 transform -translate-x-1/2 px-2 py-0.5 rounded-full",
|
|
14949
15243
|
style: { backgroundColor: "var(--color-success)" },
|
|
14950
|
-
children: /* @__PURE__ */ jsx(Typography, { variant: "caption", weight: "semibold", style: { color: "var(--color-success-foreground)" }, children: "
|
|
15244
|
+
children: /* @__PURE__ */ jsx(Typography, { variant: "caption", weight: "semibold", style: { color: "var(--color-success-foreground)" }, children: t("stateMachine.pinned") })
|
|
14951
15245
|
}
|
|
14952
15246
|
),
|
|
14953
15247
|
!isSingle && /* @__PURE__ */ jsxs(
|
|
@@ -14969,10 +15263,7 @@ var init_StateMachineView = __esm({
|
|
|
14969
15263
|
{
|
|
14970
15264
|
className: "ml-2 px-2 py-0.5 rounded-full",
|
|
14971
15265
|
style: { backgroundColor: "var(--color-accent)" },
|
|
14972
|
-
children: /* @__PURE__ */
|
|
14973
|
-
bundle.labels.length,
|
|
14974
|
-
" events"
|
|
14975
|
-
] })
|
|
15266
|
+
children: /* @__PURE__ */ jsx(Typography, { variant: "caption", style: { color: "var(--color-accent-foreground)" }, children: t("stateMachine.eventCount", { count: bundle.labels.length }) })
|
|
14976
15267
|
}
|
|
14977
15268
|
)
|
|
14978
15269
|
]
|
|
@@ -15117,7 +15408,7 @@ var init_StateMachineView = __esm({
|
|
|
15117
15408
|
align: "center",
|
|
15118
15409
|
className: "mb-2",
|
|
15119
15410
|
style: { color: "var(--color-warning)", fontSize: "13px" },
|
|
15120
|
-
children: "
|
|
15411
|
+
children: t("stateMachine.externalEffects")
|
|
15121
15412
|
}
|
|
15122
15413
|
),
|
|
15123
15414
|
outputs.outputs.map((output, idx) => /* @__PURE__ */ jsx(
|
|
@@ -15137,10 +15428,10 @@ var init_StateMachineView = __esm({
|
|
|
15137
15428
|
Legend = ({ config, y }) => {
|
|
15138
15429
|
const { t } = useTranslate();
|
|
15139
15430
|
const items = [
|
|
15140
|
-
{ label: "
|
|
15141
|
-
{ label: "
|
|
15142
|
-
{ label: "
|
|
15143
|
-
{ label: "
|
|
15431
|
+
{ key: "initial", label: t("stateMachine.legend.initial"), color: config.colors.initialNode, isMultiEvent: false },
|
|
15432
|
+
{ key: "final", label: t("stateMachine.legend.final"), color: config.colors.finalNode, isMultiEvent: false },
|
|
15433
|
+
{ key: "state", label: t("stateMachine.legend.state"), color: config.colors.nodeBorder, isMultiEvent: false },
|
|
15434
|
+
{ key: "multiEvent", label: t("stateMachine.legend.multiEvent"), color: "var(--color-accent)", isMultiEvent: true }
|
|
15144
15435
|
];
|
|
15145
15436
|
return /* @__PURE__ */ jsx(
|
|
15146
15437
|
HStack,
|
|
@@ -15155,8 +15446,8 @@ var init_StateMachineView = __esm({
|
|
|
15155
15446
|
{
|
|
15156
15447
|
className: "w-3 h-3 rounded-full",
|
|
15157
15448
|
style: {
|
|
15158
|
-
backgroundColor: item.
|
|
15159
|
-
border: item.
|
|
15449
|
+
backgroundColor: item.isMultiEvent ? item.color : config.colors.node,
|
|
15450
|
+
border: !item.isMultiEvent ? `2px solid ${item.color}` : "none"
|
|
15160
15451
|
}
|
|
15161
15452
|
}
|
|
15162
15453
|
),
|
|
@@ -15168,7 +15459,7 @@ var init_StateMachineView = __esm({
|
|
|
15168
15459
|
children: item.label
|
|
15169
15460
|
}
|
|
15170
15461
|
)
|
|
15171
|
-
] }, item.
|
|
15462
|
+
] }, item.key))
|
|
15172
15463
|
}
|
|
15173
15464
|
);
|
|
15174
15465
|
};
|
|
@@ -15962,13 +16253,13 @@ var init_JazariStateMachine = __esm({
|
|
|
15962
16253
|
);
|
|
15963
16254
|
}, [resolvedTrait, entityFields]);
|
|
15964
16255
|
if (isLoading) {
|
|
15965
|
-
return /* @__PURE__ */ jsx(LoadingState, { message: "
|
|
16256
|
+
return /* @__PURE__ */ jsx(LoadingState, { message: t("stateMachine.loading") });
|
|
15966
16257
|
}
|
|
15967
16258
|
if (error) {
|
|
15968
16259
|
return /* @__PURE__ */ jsx(ErrorState, { message: error instanceof Error ? error.message : String(error) });
|
|
15969
16260
|
}
|
|
15970
16261
|
if (!resolvedTrait || !layoutData || layoutData.states.length === 0) {
|
|
15971
|
-
return /* @__PURE__ */ jsx(Box, { padding: "lg", className: cn("text-center", className), children: /* @__PURE__ */ jsx(Typography, { variant: "body", className: "opacity-60", children: "
|
|
16262
|
+
return /* @__PURE__ */ jsx(Box, { padding: "lg", className: cn("text-center", className), children: /* @__PURE__ */ jsx(Typography, { variant: "body", className: "opacity-60", children: t("stateMachine.noStateMachine") }) });
|
|
15972
16263
|
}
|
|
15973
16264
|
return /* @__PURE__ */ jsx(
|
|
15974
16265
|
StateMachineView,
|
|
@@ -17012,13 +17303,13 @@ var init_LayoutPatterns = __esm({
|
|
|
17012
17303
|
function generateRuleId() {
|
|
17013
17304
|
return `rule-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
17014
17305
|
}
|
|
17015
|
-
function questionsToOptions(questions,
|
|
17306
|
+
function questionsToOptions(questions, endOfSurveyLabel) {
|
|
17016
17307
|
const opts = questions.map((q) => ({
|
|
17017
17308
|
value: q.id,
|
|
17018
17309
|
label: q.label
|
|
17019
17310
|
}));
|
|
17020
|
-
if (
|
|
17021
|
-
opts.push({ value: END_OF_SURVEY, label:
|
|
17311
|
+
if (endOfSurveyLabel !== null) {
|
|
17312
|
+
opts.push({ value: END_OF_SURVEY, label: endOfSurveyLabel });
|
|
17022
17313
|
}
|
|
17023
17314
|
return opts;
|
|
17024
17315
|
}
|
|
@@ -17027,7 +17318,7 @@ function isRuleBroken(rule, questions) {
|
|
|
17027
17318
|
const targetExists = rule.targetQuestionId === END_OF_SURVEY || questions.some((q) => q.id === rule.targetQuestionId);
|
|
17028
17319
|
return !sourceExists || !targetExists;
|
|
17029
17320
|
}
|
|
17030
|
-
var END_OF_SURVEY,
|
|
17321
|
+
var END_OF_SURVEY, RuleRow, NODE_WIDTH, NODE_HEIGHT, NODE_GAP_Y, PADDING, LogicGraph, BranchingLogicBuilder;
|
|
17031
17322
|
var init_BranchingLogicBuilder = __esm({
|
|
17032
17323
|
"components/core/molecules/BranchingLogicBuilder.tsx"() {
|
|
17033
17324
|
"use client";
|
|
@@ -17040,14 +17331,9 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17040
17331
|
init_FilterPill();
|
|
17041
17332
|
init_Box();
|
|
17042
17333
|
init_useEventBus();
|
|
17334
|
+
init_useTranslate();
|
|
17043
17335
|
init_cn();
|
|
17044
17336
|
END_OF_SURVEY = "end-of-survey";
|
|
17045
|
-
OPERATOR_OPTIONS = [
|
|
17046
|
-
{ value: "equals", label: "equals" },
|
|
17047
|
-
{ value: "not-equals", label: "does not equal" },
|
|
17048
|
-
{ value: "contains", label: "contains" },
|
|
17049
|
-
{ value: "in", label: "is one of" }
|
|
17050
|
-
];
|
|
17051
17337
|
RuleRow = ({
|
|
17052
17338
|
rule,
|
|
17053
17339
|
questions,
|
|
@@ -17056,8 +17342,21 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17056
17342
|
onChange,
|
|
17057
17343
|
onDelete
|
|
17058
17344
|
}) => {
|
|
17059
|
-
const
|
|
17060
|
-
const
|
|
17345
|
+
const { t } = useTranslate();
|
|
17346
|
+
const operatorOptions = useMemo(
|
|
17347
|
+
() => [
|
|
17348
|
+
{ value: "equals", label: t("branchingLogic.operatorEquals") },
|
|
17349
|
+
{ value: "not-equals", label: t("branchingLogic.operatorNotEquals") },
|
|
17350
|
+
{ value: "contains", label: t("branchingLogic.operatorContains") },
|
|
17351
|
+
{ value: "in", label: t("branchingLogic.operatorIn") }
|
|
17352
|
+
],
|
|
17353
|
+
[t]
|
|
17354
|
+
);
|
|
17355
|
+
const sourceOptions = useMemo(() => questionsToOptions(questions, null), [questions]);
|
|
17356
|
+
const targetOptions = useMemo(
|
|
17357
|
+
() => questionsToOptions(questions, t("branchingLogic.endOfSurvey")),
|
|
17358
|
+
[questions, t]
|
|
17359
|
+
);
|
|
17061
17360
|
const sourceQuestion = questions.find((q) => q.id === rule.sourceQuestionId);
|
|
17062
17361
|
const valueOptions = useMemo(() => {
|
|
17063
17362
|
if (!sourceQuestion?.optionValues) return [];
|
|
@@ -17102,22 +17401,22 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17102
17401
|
),
|
|
17103
17402
|
children: [
|
|
17104
17403
|
/* @__PURE__ */ jsxs(Box, { className: "flex flex-wrap items-center gap-2", children: [
|
|
17105
|
-
/* @__PURE__ */ jsx(Typography, { variant: "label", weight: "semibold", className: "shrink-0", children: "
|
|
17404
|
+
/* @__PURE__ */ jsx(Typography, { variant: "label", weight: "semibold", className: "shrink-0", children: t("branchingLogic.if") }),
|
|
17106
17405
|
/* @__PURE__ */ jsx(Box, { className: "min-w-[10rem] grow basis-40", children: /* @__PURE__ */ jsx(
|
|
17107
17406
|
Select,
|
|
17108
17407
|
{
|
|
17109
17408
|
options: sourceOptions,
|
|
17110
17409
|
value: rule.sourceQuestionId,
|
|
17111
|
-
placeholder: "
|
|
17410
|
+
placeholder: t("branchingLogic.selectQuestion"),
|
|
17112
17411
|
onChange: handleSource,
|
|
17113
17412
|
disabled: readOnly,
|
|
17114
|
-
error: broken ? "
|
|
17413
|
+
error: broken ? t("branchingLogic.brokenReference") : void 0
|
|
17115
17414
|
}
|
|
17116
17415
|
) }),
|
|
17117
17416
|
/* @__PURE__ */ jsx(Box, { className: "min-w-[8rem] basis-32", children: /* @__PURE__ */ jsx(
|
|
17118
17417
|
Select,
|
|
17119
17418
|
{
|
|
17120
|
-
options:
|
|
17419
|
+
options: operatorOptions,
|
|
17121
17420
|
value: rule.operator,
|
|
17122
17421
|
onChange: handleOperator,
|
|
17123
17422
|
disabled: readOnly
|
|
@@ -17140,7 +17439,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17140
17439
|
{
|
|
17141
17440
|
options: valueOptions.filter((o) => !chips.includes(o.value)),
|
|
17142
17441
|
value: "",
|
|
17143
|
-
placeholder: "
|
|
17442
|
+
placeholder: t("branchingLogic.addValue"),
|
|
17144
17443
|
onChange: handleAddChip,
|
|
17145
17444
|
disabled: readOnly
|
|
17146
17445
|
}
|
|
@@ -17148,7 +17447,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17148
17447
|
Input,
|
|
17149
17448
|
{
|
|
17150
17449
|
inputType: "text",
|
|
17151
|
-
placeholder: "
|
|
17450
|
+
placeholder: t("branchingLogic.typeValuePressEnter"),
|
|
17152
17451
|
value: "",
|
|
17153
17452
|
onKeyDown: (e) => {
|
|
17154
17453
|
if (e.key !== "Enter") return;
|
|
@@ -17166,7 +17465,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17166
17465
|
{
|
|
17167
17466
|
options: valueOptions,
|
|
17168
17467
|
value: scalarValue,
|
|
17169
|
-
placeholder: "
|
|
17468
|
+
placeholder: t("branchingLogic.selectValue"),
|
|
17170
17469
|
onChange: (e) => onChange({ ...rule, value: e.target.value }),
|
|
17171
17470
|
disabled: readOnly
|
|
17172
17471
|
}
|
|
@@ -17174,7 +17473,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17174
17473
|
Input,
|
|
17175
17474
|
{
|
|
17176
17475
|
inputType: "text",
|
|
17177
|
-
placeholder: "
|
|
17476
|
+
placeholder: t("branchingLogic.value"),
|
|
17178
17477
|
value: scalarValue,
|
|
17179
17478
|
onChange: handleScalarValue,
|
|
17180
17479
|
disabled: readOnly
|
|
@@ -17182,17 +17481,17 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17182
17481
|
) }),
|
|
17183
17482
|
/* @__PURE__ */ jsxs(Typography, { variant: "label", weight: "semibold", className: "shrink-0 inline-flex items-center gap-1", children: [
|
|
17184
17483
|
/* @__PURE__ */ jsx(ArrowRight, { className: "h-4 w-4" }),
|
|
17185
|
-
"
|
|
17484
|
+
t("branchingLogic.goTo")
|
|
17186
17485
|
] }),
|
|
17187
17486
|
/* @__PURE__ */ jsx(Box, { className: "min-w-[10rem] grow basis-40", children: /* @__PURE__ */ jsx(
|
|
17188
17487
|
Select,
|
|
17189
17488
|
{
|
|
17190
17489
|
options: targetOptions,
|
|
17191
17490
|
value: rule.targetQuestionId,
|
|
17192
|
-
placeholder: "
|
|
17491
|
+
placeholder: t("branchingLogic.selectTarget"),
|
|
17193
17492
|
onChange: handleTarget,
|
|
17194
17493
|
disabled: readOnly,
|
|
17195
|
-
error: broken && rule.targetQuestionId !== END_OF_SURVEY ? "
|
|
17494
|
+
error: broken && rule.targetQuestionId !== END_OF_SURVEY ? t("branchingLogic.brokenReference") : void 0
|
|
17196
17495
|
}
|
|
17197
17496
|
) }),
|
|
17198
17497
|
!readOnly && /* @__PURE__ */ jsx(
|
|
@@ -17204,11 +17503,11 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17204
17503
|
action: "DELETE_RULE",
|
|
17205
17504
|
actionPayload: { ruleId: rule.id },
|
|
17206
17505
|
onClick: onDelete,
|
|
17207
|
-
"aria-label": "
|
|
17506
|
+
"aria-label": t("branchingLogic.deleteRule")
|
|
17208
17507
|
}
|
|
17209
17508
|
)
|
|
17210
17509
|
] }),
|
|
17211
|
-
broken && /* @__PURE__ */ jsx(Badge, { variant: "error", size: "sm", label: "
|
|
17510
|
+
broken && /* @__PURE__ */ jsx(Badge, { variant: "error", size: "sm", label: t("branchingLogic.brokenReference") })
|
|
17212
17511
|
]
|
|
17213
17512
|
}
|
|
17214
17513
|
);
|
|
@@ -17218,10 +17517,12 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17218
17517
|
NODE_GAP_Y = 80;
|
|
17219
17518
|
PADDING = 32;
|
|
17220
17519
|
LogicGraph = ({ questions, rules }) => {
|
|
17520
|
+
const { t } = useTranslate();
|
|
17521
|
+
const endOfSurveyLabel = t("branchingLogic.endOfSurvey");
|
|
17221
17522
|
const layout = useMemo(() => {
|
|
17222
17523
|
const items = [
|
|
17223
17524
|
...questions.map((q) => ({ id: q.id, label: q.label, isEnd: false })),
|
|
17224
|
-
{ id: END_OF_SURVEY, label:
|
|
17525
|
+
{ id: END_OF_SURVEY, label: endOfSurveyLabel, isEnd: true }
|
|
17225
17526
|
];
|
|
17226
17527
|
const positions = {};
|
|
17227
17528
|
items.forEach((item, i) => {
|
|
@@ -17233,14 +17534,14 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17233
17534
|
const width = NODE_WIDTH + PADDING * 2 + 220;
|
|
17234
17535
|
const height = PADDING * 2 + items.length * (NODE_HEIGHT + NODE_GAP_Y);
|
|
17235
17536
|
return { items, positions, width, height };
|
|
17236
|
-
}, [questions]);
|
|
17537
|
+
}, [questions, endOfSurveyLabel]);
|
|
17237
17538
|
return /* @__PURE__ */ jsx(Box, { className: "overflow-auto rounded-container border border-border bg-card p-2", children: /* @__PURE__ */ jsxs(
|
|
17238
17539
|
"svg",
|
|
17239
17540
|
{
|
|
17240
17541
|
width: layout.width,
|
|
17241
17542
|
height: layout.height,
|
|
17242
17543
|
role: "img",
|
|
17243
|
-
"aria-label": "
|
|
17544
|
+
"aria-label": t("branchingLogic.graphAriaLabel"),
|
|
17244
17545
|
style: { display: "block" },
|
|
17245
17546
|
children: [
|
|
17246
17547
|
/* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsx(
|
|
@@ -17348,6 +17649,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17348
17649
|
readOnly = false,
|
|
17349
17650
|
className
|
|
17350
17651
|
}) => {
|
|
17652
|
+
const { t } = useTranslate();
|
|
17351
17653
|
const eventBus = useEventBus();
|
|
17352
17654
|
const questions = Array.isArray(questionsProp) ? questionsProp : [];
|
|
17353
17655
|
const rulesInitial = Array.isArray(rulesProp) ? rulesProp : [];
|
|
@@ -17400,16 +17702,23 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17400
17702
|
/* @__PURE__ */ jsxs(Box, { className: "flex flex-wrap items-center justify-between gap-2", children: [
|
|
17401
17703
|
/* @__PURE__ */ jsxs(Box, { className: "flex items-center gap-2", children: [
|
|
17402
17704
|
/* @__PURE__ */ jsx(GitBranch, { className: "h-5 w-5 text-foreground" }),
|
|
17403
|
-
/* @__PURE__ */ jsx(Typography, { variant: "subheading", weight: "semibold", children: "
|
|
17705
|
+
/* @__PURE__ */ jsx(Typography, { variant: "subheading", weight: "semibold", children: t("branchingLogic.title") }),
|
|
17404
17706
|
/* @__PURE__ */ jsx(
|
|
17405
17707
|
Badge,
|
|
17406
17708
|
{
|
|
17407
17709
|
variant: "neutral",
|
|
17408
17710
|
size: "sm",
|
|
17409
|
-
label:
|
|
17711
|
+
label: rules.length === 1 ? t("branchingLogic.ruleCountOne", { count: rules.length }) : t("branchingLogic.ruleCountOther", { count: rules.length })
|
|
17410
17712
|
}
|
|
17411
17713
|
),
|
|
17412
|
-
brokenCount > 0 && /* @__PURE__ */ jsx(
|
|
17714
|
+
brokenCount > 0 && /* @__PURE__ */ jsx(
|
|
17715
|
+
Badge,
|
|
17716
|
+
{
|
|
17717
|
+
variant: "error",
|
|
17718
|
+
size: "sm",
|
|
17719
|
+
label: t("branchingLogic.brokenCount", { count: brokenCount })
|
|
17720
|
+
}
|
|
17721
|
+
)
|
|
17413
17722
|
] }),
|
|
17414
17723
|
/* @__PURE__ */ jsxs(Box, { className: "flex items-center gap-1 rounded-sm border border-border bg-card p-0.5", children: [
|
|
17415
17724
|
/* @__PURE__ */ jsx(
|
|
@@ -17420,7 +17729,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17420
17729
|
leftIcon: Pencil,
|
|
17421
17730
|
action: "VIEW_EDIT",
|
|
17422
17731
|
onClick: () => setView("edit"),
|
|
17423
|
-
children: "
|
|
17732
|
+
children: t("branchingLogic.rules")
|
|
17424
17733
|
}
|
|
17425
17734
|
),
|
|
17426
17735
|
/* @__PURE__ */ jsx(
|
|
@@ -17431,13 +17740,13 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17431
17740
|
leftIcon: Eye,
|
|
17432
17741
|
action: "VIEW_GRAPH",
|
|
17433
17742
|
onClick: () => setView("graph"),
|
|
17434
|
-
children: "
|
|
17743
|
+
children: t("branchingLogic.logicGraph")
|
|
17435
17744
|
}
|
|
17436
17745
|
)
|
|
17437
17746
|
] })
|
|
17438
17747
|
] }),
|
|
17439
17748
|
view === "edit" ? /* @__PURE__ */ jsxs(Box, { className: "flex flex-col gap-2", children: [
|
|
17440
|
-
rules.length === 0 ? /* @__PURE__ */ jsx(Card, { variant: "bordered", padding: "lg", className: "text-center", children: /* @__PURE__ */ jsx(Typography, { variant: "body", color: "muted", children: noQuestions ? "
|
|
17749
|
+
rules.length === 0 ? /* @__PURE__ */ jsx(Card, { variant: "bordered", padding: "lg", className: "text-center", children: /* @__PURE__ */ jsx(Typography, { variant: "body", color: "muted", children: noQuestions ? t("branchingLogic.emptyNoQuestions") : t("branchingLogic.emptyNoRules") }) }) : rules.map((rule) => /* @__PURE__ */ jsx(
|
|
17441
17750
|
RuleRow,
|
|
17442
17751
|
{
|
|
17443
17752
|
rule,
|
|
@@ -17458,7 +17767,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17458
17767
|
action: "ADD_RULE",
|
|
17459
17768
|
onClick: handleAddRule,
|
|
17460
17769
|
disabled: noQuestions,
|
|
17461
|
-
children: "
|
|
17770
|
+
children: t("branchingLogic.addRule")
|
|
17462
17771
|
}
|
|
17463
17772
|
) })
|
|
17464
17773
|
] }) : /* @__PURE__ */ jsx(LogicGraph, { questions, rules })
|
|
@@ -18018,7 +18327,7 @@ function CalendarGrid({
|
|
|
18018
18327
|
onClick: stepPrev,
|
|
18019
18328
|
"aria-disabled": !canPrev || void 0,
|
|
18020
18329
|
"aria-label": t("aria.previousDays"),
|
|
18021
|
-
children: "
|
|
18330
|
+
children: t("nav.previous")
|
|
18022
18331
|
}
|
|
18023
18332
|
),
|
|
18024
18333
|
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-muted-foreground", children: formatDateRange(visibleDays[0], visibleDays[visibleDays.length - 1]) }),
|
|
@@ -18031,7 +18340,7 @@ function CalendarGrid({
|
|
|
18031
18340
|
onClick: stepNext,
|
|
18032
18341
|
"aria-disabled": !canNext || void 0,
|
|
18033
18342
|
"aria-label": t("aria.nextDays"),
|
|
18034
|
-
children: "
|
|
18343
|
+
children: t("nav.next")
|
|
18035
18344
|
}
|
|
18036
18345
|
)
|
|
18037
18346
|
] }),
|
|
@@ -19581,7 +19890,7 @@ var init_Pagination = __esm({
|
|
|
19581
19890
|
type: "number",
|
|
19582
19891
|
value: jumpToPage,
|
|
19583
19892
|
onChange: (e) => setJumpToPage(e.target.value),
|
|
19584
|
-
placeholder: "
|
|
19893
|
+
placeholder: t("pagination.jumpPlaceholder"),
|
|
19585
19894
|
className: "w-20",
|
|
19586
19895
|
onKeyDown: (e) => {
|
|
19587
19896
|
if (e.key === "Enter") {
|
|
@@ -19719,13 +20028,10 @@ var init_CardGrid = __esm({
|
|
|
19719
20028
|
return children;
|
|
19720
20029
|
}
|
|
19721
20030
|
if (isLoading) {
|
|
19722
|
-
return /* @__PURE__ */ jsx(Box, { className: "col-span-full text-center py-8 text-muted-foreground", children: /* @__PURE__ */ jsx(Typography, { variant: "body", color: "secondary", children: "
|
|
20031
|
+
return /* @__PURE__ */ jsx(Box, { className: "col-span-full text-center py-8 text-muted-foreground", children: /* @__PURE__ */ jsx(Typography, { variant: "body", color: "secondary", children: t("loading.items") }) });
|
|
19723
20032
|
}
|
|
19724
20033
|
if (error) {
|
|
19725
|
-
return /* @__PURE__ */ jsx(Box, { className: "col-span-full text-center py-8 text-error", children: /* @__PURE__ */
|
|
19726
|
-
"Error loading items: ",
|
|
19727
|
-
error.message
|
|
19728
|
-
] }) });
|
|
20034
|
+
return /* @__PURE__ */ jsx(Box, { className: "col-span-full text-center py-8 text-error", children: /* @__PURE__ */ jsx(Typography, { variant: "body", color: "error", children: t("error.loadFailed", { message: error.message }) }) });
|
|
19729
20035
|
}
|
|
19730
20036
|
if (normalizedData.length === 0) {
|
|
19731
20037
|
return /* @__PURE__ */ jsx(Box, { className: "col-span-full text-center py-12 text-muted-foreground", children: /* @__PURE__ */ jsx(Typography, { variant: "body", color: "secondary", children: t("empty.noItems") || "No items found" }) });
|
|
@@ -23577,7 +23883,7 @@ function DataGrid({
|
|
|
23577
23883
|
onChange: () => toggleSelection(id),
|
|
23578
23884
|
onClick: (e) => e.stopPropagation(),
|
|
23579
23885
|
className: "w-4 h-4 mt-1 flex-shrink-0 accent-primary",
|
|
23580
|
-
"aria-label":
|
|
23886
|
+
"aria-label": t("card.selectItem", { item: titleValue !== void 0 ? String(titleValue) : t("card.itemFallback") })
|
|
23581
23887
|
}
|
|
23582
23888
|
),
|
|
23583
23889
|
/* @__PURE__ */ jsxs(VStack, { gap: "xs", className: "flex-1 min-w-0", children: [
|
|
@@ -23775,7 +24081,7 @@ function formatDate3(value) {
|
|
|
23775
24081
|
if (isNaN(d.getTime())) return String(value);
|
|
23776
24082
|
return d.toLocaleDateString(void 0, { year: "numeric", month: "short", day: "numeric" });
|
|
23777
24083
|
}
|
|
23778
|
-
function formatValue2(value, format) {
|
|
24084
|
+
function formatValue2(value, format, boolLabels) {
|
|
23779
24085
|
if (value === void 0 || value === null) return "";
|
|
23780
24086
|
switch (format) {
|
|
23781
24087
|
case "date":
|
|
@@ -23787,7 +24093,7 @@ function formatValue2(value, format) {
|
|
|
23787
24093
|
case "percent":
|
|
23788
24094
|
return typeof value === "number" ? `${Math.round(value)}%` : String(value);
|
|
23789
24095
|
case "boolean":
|
|
23790
|
-
return value ? "Yes" : "No";
|
|
24096
|
+
return value ? boolLabels?.yes ?? "Yes" : boolLabels?.no ?? "No";
|
|
23791
24097
|
default:
|
|
23792
24098
|
return String(value);
|
|
23793
24099
|
}
|
|
@@ -24083,7 +24389,7 @@ function DataList({
|
|
|
24083
24389
|
field.label ?? fieldLabel3(field.name),
|
|
24084
24390
|
":"
|
|
24085
24391
|
] }),
|
|
24086
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", children: formatValue2(value, field.format) })
|
|
24392
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", children: formatValue2(value, field.format, { yes: t("common.yes"), no: t("common.no") }) })
|
|
24087
24393
|
] }, field.name);
|
|
24088
24394
|
}) }),
|
|
24089
24395
|
progressFields.map((field) => {
|
|
@@ -24213,6 +24519,7 @@ var init_FileTree = __esm({
|
|
|
24213
24519
|
init_Box();
|
|
24214
24520
|
init_Typography();
|
|
24215
24521
|
init_Icon();
|
|
24522
|
+
init_useTranslate();
|
|
24216
24523
|
TreeNodeItem = ({
|
|
24217
24524
|
node,
|
|
24218
24525
|
depth,
|
|
@@ -24298,8 +24605,9 @@ var init_FileTree = __esm({
|
|
|
24298
24605
|
className,
|
|
24299
24606
|
indent = 16
|
|
24300
24607
|
}) => {
|
|
24608
|
+
const { t } = useTranslate();
|
|
24301
24609
|
if (tree.length === 0) {
|
|
24302
|
-
return /* @__PURE__ */ jsx(Box, { className: `p-4 ${className ?? ""}`, children: /* @__PURE__ */ jsx(Typography, { variant: "caption", color: "muted", children: "
|
|
24610
|
+
return /* @__PURE__ */ jsx(Box, { className: `p-4 ${className ?? ""}`, children: /* @__PURE__ */ jsx(Typography, { variant: "caption", color: "muted", children: t("fileTree.noFiles") }) });
|
|
24303
24611
|
}
|
|
24304
24612
|
return /* @__PURE__ */ jsx(Box, { className: `py-1 overflow-y-auto ${className ?? ""}`, role: "tree", children: tree.map((node) => /* @__PURE__ */ jsx(
|
|
24305
24613
|
TreeNodeItem,
|
|
@@ -24354,6 +24662,7 @@ var init_FilterGroup = __esm({
|
|
|
24354
24662
|
init_Icon();
|
|
24355
24663
|
init_useEventBus();
|
|
24356
24664
|
init_useQuerySingleton();
|
|
24665
|
+
init_useTranslate();
|
|
24357
24666
|
resolveFilterType = (filter) => filter.filterType ?? filter.type;
|
|
24358
24667
|
lookStyles6 = {
|
|
24359
24668
|
toolbar: "",
|
|
@@ -24374,6 +24683,7 @@ var init_FilterGroup = __esm({
|
|
|
24374
24683
|
isLoading,
|
|
24375
24684
|
look = "toolbar"
|
|
24376
24685
|
}) => {
|
|
24686
|
+
const { t } = useTranslate();
|
|
24377
24687
|
const eventBus = useEventBus();
|
|
24378
24688
|
const queryState = useQuerySingleton(query);
|
|
24379
24689
|
const [selectedValues, setSelectedValues] = useState(
|
|
@@ -24455,7 +24765,7 @@ var init_FilterGroup = __esm({
|
|
|
24455
24765
|
"px-3 py-1.5 text-sm font-medium transition-all duration-[var(--transition-fast)]",
|
|
24456
24766
|
!selectedValues[filter.field] ? "bg-primary text-primary-foreground" : "bg-card text-muted-foreground hover:bg-muted"
|
|
24457
24767
|
),
|
|
24458
|
-
children: "
|
|
24768
|
+
children: t("filterGroup.all")
|
|
24459
24769
|
}
|
|
24460
24770
|
),
|
|
24461
24771
|
filter.options?.map((option) => /* @__PURE__ */ jsx(
|
|
@@ -24483,7 +24793,7 @@ var init_FilterGroup = __esm({
|
|
|
24483
24793
|
size: "sm",
|
|
24484
24794
|
onClick: handleClearAll,
|
|
24485
24795
|
leftIcon: /* @__PURE__ */ jsx(Icon, { name: "x", className: "h-3.5 w-3.5" }),
|
|
24486
|
-
children: "
|
|
24796
|
+
children: t("filterGroup.clear")
|
|
24487
24797
|
}
|
|
24488
24798
|
)
|
|
24489
24799
|
]
|
|
@@ -24494,7 +24804,7 @@ var init_FilterGroup = __esm({
|
|
|
24494
24804
|
return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-4", lookStyles6[look], className), children: [
|
|
24495
24805
|
showIcon && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-muted-foreground", children: [
|
|
24496
24806
|
/* @__PURE__ */ jsx(Icon, { name: "filter", className: "h-4 w-4" }),
|
|
24497
|
-
/* @__PURE__ */ jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: "
|
|
24807
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: t("filterGroup.filters") })
|
|
24498
24808
|
] }),
|
|
24499
24809
|
filters.map((filter) => /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
24500
24810
|
/* @__PURE__ */ jsx("label", { className: "text-xs font-bold text-muted-foreground uppercase tracking-wide", children: filter.label }),
|
|
@@ -24517,7 +24827,7 @@ var init_FilterGroup = __esm({
|
|
|
24517
24827
|
`${filter.field}_from`,
|
|
24518
24828
|
e.target.value || null
|
|
24519
24829
|
),
|
|
24520
|
-
placeholder: "
|
|
24830
|
+
placeholder: t("filterGroup.from"),
|
|
24521
24831
|
clearable: true,
|
|
24522
24832
|
onClear: () => handleFilterSelect(`${filter.field}_from`, null)
|
|
24523
24833
|
}
|
|
@@ -24531,7 +24841,7 @@ var init_FilterGroup = __esm({
|
|
|
24531
24841
|
`${filter.field}_to`,
|
|
24532
24842
|
e.target.value || null
|
|
24533
24843
|
),
|
|
24534
|
-
placeholder: "
|
|
24844
|
+
placeholder: t("filterGroup.to"),
|
|
24535
24845
|
clearable: true,
|
|
24536
24846
|
onClear: () => handleFilterSelect(`${filter.field}_to`, null)
|
|
24537
24847
|
}
|
|
@@ -24551,7 +24861,7 @@ var init_FilterGroup = __esm({
|
|
|
24551
24861
|
value: selectedValues[filter.field] || "all",
|
|
24552
24862
|
onChange: (e) => handleFilterSelect(filter.field, e.target.value),
|
|
24553
24863
|
options: [
|
|
24554
|
-
{ value: "all", label: "
|
|
24864
|
+
{ value: "all", label: t("filterGroup.all") },
|
|
24555
24865
|
...filter.options?.map((opt) => ({
|
|
24556
24866
|
value: opt,
|
|
24557
24867
|
label: opt
|
|
@@ -24568,7 +24878,7 @@ var init_FilterGroup = __esm({
|
|
|
24568
24878
|
onClick: handleClearAll,
|
|
24569
24879
|
leftIcon: /* @__PURE__ */ jsx(Icon, { name: "x", className: "h-3.5 w-3.5" }),
|
|
24570
24880
|
className: "self-start",
|
|
24571
|
-
children: "
|
|
24881
|
+
children: t("filterGroup.clearAll")
|
|
24572
24882
|
}
|
|
24573
24883
|
)
|
|
24574
24884
|
] });
|
|
@@ -24634,7 +24944,7 @@ var init_FilterGroup = __esm({
|
|
|
24634
24944
|
value: selectedValues[filter.field] || "all",
|
|
24635
24945
|
onChange: (e) => handleFilterSelect(filter.field, e.target.value),
|
|
24636
24946
|
options: [
|
|
24637
|
-
{ value: "all", label:
|
|
24947
|
+
{ value: "all", label: t("filterGroup.allOf", { label: filter.label }) },
|
|
24638
24948
|
...filter.options?.map((opt) => ({
|
|
24639
24949
|
value: opt,
|
|
24640
24950
|
label: opt
|
|
@@ -24663,7 +24973,7 @@ var init_FilterGroup = __esm({
|
|
|
24663
24973
|
field
|
|
24664
24974
|
);
|
|
24665
24975
|
}),
|
|
24666
|
-
/* @__PURE__ */ jsx(Button, { variant: "ghost", size: "sm", onClick: handleClearAll, children: "
|
|
24976
|
+
/* @__PURE__ */ jsx(Button, { variant: "ghost", size: "sm", onClick: handleClearAll, children: t("filterGroup.clearAll") })
|
|
24667
24977
|
] })
|
|
24668
24978
|
]
|
|
24669
24979
|
}
|
|
@@ -24688,7 +24998,7 @@ var init_FilterGroup = __esm({
|
|
|
24688
24998
|
className: "text-muted-foreground",
|
|
24689
24999
|
children: [
|
|
24690
25000
|
/* @__PURE__ */ jsx(Icon, { name: "filter", className: "h-4 w-4" }),
|
|
24691
|
-
/* @__PURE__ */ jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: "
|
|
25001
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: t("filterGroup.filters") })
|
|
24692
25002
|
]
|
|
24693
25003
|
}
|
|
24694
25004
|
),
|
|
@@ -24714,7 +25024,7 @@ var init_FilterGroup = __esm({
|
|
|
24714
25024
|
`${filter.field}_from`,
|
|
24715
25025
|
e.target.value || null
|
|
24716
25026
|
),
|
|
24717
|
-
placeholder: "
|
|
25027
|
+
placeholder: t("filterGroup.from"),
|
|
24718
25028
|
clearable: true,
|
|
24719
25029
|
onClear: () => handleFilterSelect(`${filter.field}_from`, null),
|
|
24720
25030
|
className: "min-w-[130px]"
|
|
@@ -24730,7 +25040,7 @@ var init_FilterGroup = __esm({
|
|
|
24730
25040
|
`${filter.field}_to`,
|
|
24731
25041
|
e.target.value || null
|
|
24732
25042
|
),
|
|
24733
|
-
placeholder: "
|
|
25043
|
+
placeholder: t("filterGroup.to"),
|
|
24734
25044
|
clearable: true,
|
|
24735
25045
|
onClear: () => handleFilterSelect(`${filter.field}_to`, null),
|
|
24736
25046
|
className: "min-w-[130px]"
|
|
@@ -24752,7 +25062,7 @@ var init_FilterGroup = __esm({
|
|
|
24752
25062
|
value: selectedValues[filter.field] || "all",
|
|
24753
25063
|
onChange: (e) => handleFilterSelect(filter.field, e.target.value),
|
|
24754
25064
|
options: [
|
|
24755
|
-
{ value: "all", label: "
|
|
25065
|
+
{ value: "all", label: t("filterGroup.all") },
|
|
24756
25066
|
...filter.options?.map((opt) => ({
|
|
24757
25067
|
value: opt,
|
|
24758
25068
|
label: opt
|
|
@@ -24763,10 +25073,7 @@ var init_FilterGroup = __esm({
|
|
|
24763
25073
|
)
|
|
24764
25074
|
] }, filter.field)),
|
|
24765
25075
|
activeFilterCount > 0 && /* @__PURE__ */ jsxs(HStack, { gap: "sm", align: "center", className: "ml-auto", children: [
|
|
24766
|
-
/* @__PURE__ */
|
|
24767
|
-
activeFilterCount,
|
|
24768
|
-
" active"
|
|
24769
|
-
] }),
|
|
25076
|
+
/* @__PURE__ */ jsx(Badge, { variant: "primary", size: "md", children: t("filterGroup.activeCount", { count: activeFilterCount }) }),
|
|
24770
25077
|
/* @__PURE__ */ jsx(
|
|
24771
25078
|
Button,
|
|
24772
25079
|
{
|
|
@@ -24774,7 +25081,7 @@ var init_FilterGroup = __esm({
|
|
|
24774
25081
|
size: "sm",
|
|
24775
25082
|
onClick: handleClearAll,
|
|
24776
25083
|
leftIcon: /* @__PURE__ */ jsx(Icon, { name: "x", className: "h-3.5 w-3.5" }),
|
|
24777
|
-
children: "
|
|
25084
|
+
children: t("filterGroup.clearAll")
|
|
24778
25085
|
}
|
|
24779
25086
|
)
|
|
24780
25087
|
] })
|
|
@@ -25718,19 +26025,20 @@ var init_RepeatableFormSection = __esm({
|
|
|
25718
26025
|
RepeatableFormSection.displayName = "RepeatableFormSection";
|
|
25719
26026
|
}
|
|
25720
26027
|
});
|
|
25721
|
-
var
|
|
26028
|
+
var actionTypeLabelKeys, actionTypeIcons, ViolationAlert;
|
|
25722
26029
|
var init_ViolationAlert = __esm({
|
|
25723
26030
|
"components/core/molecules/ViolationAlert.tsx"() {
|
|
25724
26031
|
init_cn();
|
|
26032
|
+
init_useTranslate();
|
|
25725
26033
|
init_Box();
|
|
25726
26034
|
init_Stack();
|
|
25727
26035
|
init_Typography();
|
|
25728
26036
|
init_Button();
|
|
25729
26037
|
init_Icon();
|
|
25730
|
-
|
|
25731
|
-
measure: "
|
|
25732
|
-
admin: "
|
|
25733
|
-
penalty: "
|
|
26038
|
+
actionTypeLabelKeys = {
|
|
26039
|
+
measure: "violationAlert.actionType.measure",
|
|
26040
|
+
admin: "violationAlert.actionType.admin",
|
|
26041
|
+
penalty: "violationAlert.actionType.penalty"
|
|
25734
26042
|
};
|
|
25735
26043
|
actionTypeIcons = {
|
|
25736
26044
|
measure: "alert-triangle",
|
|
@@ -25747,10 +26055,11 @@ var init_ViolationAlert = __esm({
|
|
|
25747
26055
|
className,
|
|
25748
26056
|
...flatProps
|
|
25749
26057
|
}) => {
|
|
26058
|
+
const { t } = useTranslate();
|
|
25750
26059
|
const resolvedViolation = violation ?? {
|
|
25751
26060
|
law: "",
|
|
25752
26061
|
article: "",
|
|
25753
|
-
message: flatProps.message ?? "
|
|
26062
|
+
message: flatProps.message ?? t("violationAlert.fallbackMessage"),
|
|
25754
26063
|
actionType: "measure"
|
|
25755
26064
|
};
|
|
25756
26065
|
const effectiveSeverity = severity ?? (resolvedViolation.actionType === "measure" ? "warning" : "error");
|
|
@@ -25835,7 +26144,7 @@ var init_ViolationAlert = __esm({
|
|
|
25835
26144
|
{
|
|
25836
26145
|
variant: "caption",
|
|
25837
26146
|
className: cn(textColor, "opacity-75"),
|
|
25838
|
-
children:
|
|
26147
|
+
children: t(actionTypeLabelKeys[resolvedViolation.actionType])
|
|
25839
26148
|
}
|
|
25840
26149
|
)
|
|
25841
26150
|
] })
|
|
@@ -25866,7 +26175,7 @@ var init_ViolationAlert = __esm({
|
|
|
25866
26175
|
{
|
|
25867
26176
|
variant: "caption",
|
|
25868
26177
|
className: cn(textColor, "opacity-75"),
|
|
25869
|
-
children: "
|
|
26178
|
+
children: t("violationAlert.adminLabel")
|
|
25870
26179
|
}
|
|
25871
26180
|
),
|
|
25872
26181
|
/* @__PURE__ */ jsx(
|
|
@@ -25885,7 +26194,7 @@ var init_ViolationAlert = __esm({
|
|
|
25885
26194
|
{
|
|
25886
26195
|
variant: "caption",
|
|
25887
26196
|
className: cn(textColor, "opacity-75"),
|
|
25888
|
-
children: "
|
|
26197
|
+
children: t("violationAlert.penaltyLabel")
|
|
25889
26198
|
}
|
|
25890
26199
|
),
|
|
25891
26200
|
/* @__PURE__ */ jsx(
|
|
@@ -25910,7 +26219,7 @@ var init_ViolationAlert = __esm({
|
|
|
25910
26219
|
className: cn(textColor, "self-start"),
|
|
25911
26220
|
children: [
|
|
25912
26221
|
/* @__PURE__ */ jsx(Icon, { name: "arrow-right", size: "sm", className: "mr-1" }),
|
|
25913
|
-
"
|
|
26222
|
+
t("violationAlert.goToField")
|
|
25914
26223
|
]
|
|
25915
26224
|
}
|
|
25916
26225
|
)
|
|
@@ -26226,6 +26535,7 @@ var init_LineChart = __esm({
|
|
|
26226
26535
|
"use client";
|
|
26227
26536
|
init_cn();
|
|
26228
26537
|
init_atoms2();
|
|
26538
|
+
init_useTranslate();
|
|
26229
26539
|
LineChart2 = ({
|
|
26230
26540
|
data,
|
|
26231
26541
|
width = 400,
|
|
@@ -26237,6 +26547,7 @@ var init_LineChart = __esm({
|
|
|
26237
26547
|
areaColor = "var(--color-primary)",
|
|
26238
26548
|
className
|
|
26239
26549
|
}) => {
|
|
26550
|
+
const { t } = useTranslate();
|
|
26240
26551
|
const gradientId = useId();
|
|
26241
26552
|
const safeData = data ?? [];
|
|
26242
26553
|
const sortedData = useMemo(() => {
|
|
@@ -26273,7 +26584,7 @@ var init_LineChart = __esm({
|
|
|
26273
26584
|
return `${linePath} L ${last.x} ${bottom} L ${first.x} ${bottom} Z`;
|
|
26274
26585
|
}, [linePath, points, height, showArea]);
|
|
26275
26586
|
if (safeData.length === 0) {
|
|
26276
|
-
return /* @__PURE__ */ jsx(Box, { className: cn("flex items-center justify-center text-muted-foreground", className), style: { width, height }, children: "
|
|
26587
|
+
return /* @__PURE__ */ jsx(Box, { className: cn("flex items-center justify-center text-muted-foreground", className), style: { width, height }, children: t("empty.noData") });
|
|
26277
26588
|
}
|
|
26278
26589
|
return /* @__PURE__ */ jsx(Box, { className: cn(className), children: /* @__PURE__ */ jsxs(
|
|
26279
26590
|
"svg",
|
|
@@ -28180,6 +28491,7 @@ var init_GraphView = __esm({
|
|
|
28180
28491
|
"use client";
|
|
28181
28492
|
init_cn();
|
|
28182
28493
|
init_atoms2();
|
|
28494
|
+
init_useTranslate();
|
|
28183
28495
|
GROUP_COLORS = [
|
|
28184
28496
|
"#3b82f6",
|
|
28185
28497
|
// blue-500
|
|
@@ -28212,6 +28524,7 @@ var init_GraphView = __esm({
|
|
|
28212
28524
|
showLabels = true,
|
|
28213
28525
|
zoomToFit = true
|
|
28214
28526
|
}) => {
|
|
28527
|
+
const { t } = useTranslate();
|
|
28215
28528
|
const containerRef = useRef(null);
|
|
28216
28529
|
const animRef = useRef(0);
|
|
28217
28530
|
const [simNodes, setSimNodes] = useState([]);
|
|
@@ -28389,7 +28702,7 @@ var init_GraphView = __esm({
|
|
|
28389
28702
|
[onNodeClick]
|
|
28390
28703
|
);
|
|
28391
28704
|
if (nodes.length === 0) {
|
|
28392
|
-
return /* @__PURE__ */ jsx(Box, { className: cn("flex items-center justify-center", className), style: { width: w, height: h }, children: /* @__PURE__ */ jsx(Box, { className: "text-muted-foreground text-sm", children: "
|
|
28705
|
+
return /* @__PURE__ */ jsx(Box, { className: cn("flex items-center justify-center", className), style: { width: w, height: h }, children: /* @__PURE__ */ jsx(Box, { className: "text-muted-foreground text-sm", children: t("display.noGraphData") }) });
|
|
28393
28706
|
}
|
|
28394
28707
|
return /* @__PURE__ */ jsx(
|
|
28395
28708
|
Box,
|
|
@@ -28845,11 +29158,12 @@ var init_UploadDropZone = __esm({
|
|
|
28845
29158
|
init_Icon();
|
|
28846
29159
|
init_Typography();
|
|
28847
29160
|
init_useEventBus();
|
|
29161
|
+
init_useTranslate();
|
|
28848
29162
|
UploadDropZone = ({
|
|
28849
29163
|
accept,
|
|
28850
29164
|
maxSize,
|
|
28851
29165
|
maxFiles = 1,
|
|
28852
|
-
label
|
|
29166
|
+
label,
|
|
28853
29167
|
description,
|
|
28854
29168
|
disabled = false,
|
|
28855
29169
|
action,
|
|
@@ -28857,22 +29171,24 @@ var init_UploadDropZone = __esm({
|
|
|
28857
29171
|
onFiles,
|
|
28858
29172
|
className
|
|
28859
29173
|
}) => {
|
|
29174
|
+
const { t } = useTranslate();
|
|
29175
|
+
const resolvedLabel = label ?? t("upload.dropOrBrowse");
|
|
28860
29176
|
const [isDragOver, setIsDragOver] = useState(false);
|
|
28861
29177
|
const [error, setError] = useState(null);
|
|
28862
29178
|
const inputRef = useRef(null);
|
|
28863
29179
|
const eventBus = useSafeEventBus7();
|
|
28864
29180
|
const defaultDescription = [
|
|
28865
|
-
accept ?
|
|
28866
|
-
maxSize ?
|
|
28867
|
-
maxFiles > 1 ?
|
|
29181
|
+
accept ? t("upload.accepted", { accept }) : null,
|
|
29182
|
+
maxSize ? t("upload.maxSize", { size: formatFileSize(maxSize) }) : null,
|
|
29183
|
+
maxFiles > 1 ? t("upload.maxFiles", { count: maxFiles }) : null
|
|
28868
29184
|
].filter(Boolean).join(". ");
|
|
28869
29185
|
const validateFiles = useCallback(
|
|
28870
29186
|
(files) => {
|
|
28871
29187
|
if (files.length > maxFiles) {
|
|
28872
|
-
return { valid: [], error:
|
|
29188
|
+
return { valid: [], error: t("upload.error.maxFiles", { count: maxFiles }) };
|
|
28873
29189
|
}
|
|
28874
29190
|
if (accept) {
|
|
28875
|
-
const acceptedTypes = accept.split(",").map((
|
|
29191
|
+
const acceptedTypes = accept.split(",").map((s) => s.trim());
|
|
28876
29192
|
const invalid = files.filter((file) => {
|
|
28877
29193
|
return !acceptedTypes.some((type) => {
|
|
28878
29194
|
if (type.endsWith("/*")) {
|
|
@@ -28882,7 +29198,7 @@ var init_UploadDropZone = __esm({
|
|
|
28882
29198
|
});
|
|
28883
29199
|
});
|
|
28884
29200
|
if (invalid.length > 0) {
|
|
28885
|
-
return { valid: [], error:
|
|
29201
|
+
return { valid: [], error: t("upload.error.invalidType", { name: invalid[0].name }) };
|
|
28886
29202
|
}
|
|
28887
29203
|
}
|
|
28888
29204
|
if (maxSize) {
|
|
@@ -28890,13 +29206,13 @@ var init_UploadDropZone = __esm({
|
|
|
28890
29206
|
if (tooLarge.length > 0) {
|
|
28891
29207
|
return {
|
|
28892
29208
|
valid: [],
|
|
28893
|
-
error:
|
|
29209
|
+
error: t("upload.error.tooLarge", { name: tooLarge[0].name, size: formatFileSize(maxSize) })
|
|
28894
29210
|
};
|
|
28895
29211
|
}
|
|
28896
29212
|
}
|
|
28897
29213
|
return { valid: files, error: null };
|
|
28898
29214
|
},
|
|
28899
|
-
[accept, maxSize, maxFiles]
|
|
29215
|
+
[accept, maxSize, maxFiles, t]
|
|
28900
29216
|
);
|
|
28901
29217
|
const handleFiles = useCallback(
|
|
28902
29218
|
(files) => {
|
|
@@ -28967,7 +29283,7 @@ var init_UploadDropZone = __esm({
|
|
|
28967
29283
|
handleClick();
|
|
28968
29284
|
}
|
|
28969
29285
|
},
|
|
28970
|
-
"aria-label":
|
|
29286
|
+
"aria-label": resolvedLabel,
|
|
28971
29287
|
children: [
|
|
28972
29288
|
/* @__PURE__ */ jsx(
|
|
28973
29289
|
"input",
|
|
@@ -28983,7 +29299,7 @@ var init_UploadDropZone = __esm({
|
|
|
28983
29299
|
}
|
|
28984
29300
|
),
|
|
28985
29301
|
error ? /* @__PURE__ */ jsx(Icon, { name: "file-warning", size: "lg", className: "text-error mb-2" }) : /* @__PURE__ */ jsx(Icon, { name: "upload", size: "lg", className: "text-muted-foreground mb-2" }),
|
|
28986
|
-
/* @__PURE__ */ jsx(Typography, { variant: "body1", className: "text-center font-medium mb-1", children: isDragOver ? "
|
|
29302
|
+
/* @__PURE__ */ jsx(Typography, { variant: "body1", className: "text-center font-medium mb-1", children: isDragOver ? t("upload.dropFilesHere") : resolvedLabel }),
|
|
28987
29303
|
error ? /* @__PURE__ */ jsx(Typography, { variant: "caption", color: "error", className: "text-center", children: error }) : /* @__PURE__ */ jsx(Typography, { variant: "caption", color: "muted", className: "text-center", children: description ?? defaultDescription })
|
|
28988
29304
|
]
|
|
28989
29305
|
}
|
|
@@ -29405,7 +29721,7 @@ function TableView({
|
|
|
29405
29721
|
{
|
|
29406
29722
|
checked: selected.has(id),
|
|
29407
29723
|
onChange: () => toggleRow(id),
|
|
29408
|
-
"aria-label":
|
|
29724
|
+
"aria-label": t("table.selectRow", { id })
|
|
29409
29725
|
}
|
|
29410
29726
|
) }),
|
|
29411
29727
|
hasRenderProp ? /* @__PURE__ */ jsx(Box, { className: "flex-1 min-w-0", children: children(row, index) }) : colDefs.map((col) => {
|
|
@@ -32114,7 +32430,7 @@ var init_QrScanner = __esm({
|
|
|
32114
32430
|
className: "inset-0 flex-col items-center justify-center gap-2 bg-black bg-opacity-80 text-center",
|
|
32115
32431
|
children: [
|
|
32116
32432
|
/* @__PURE__ */ jsx(Icon, { name: "camera", className: "h-8 w-8 text-white", "aria-hidden": "true" }),
|
|
32117
|
-
/* @__PURE__ */ jsx(Typography, { variant: "body2", className: "text-white", children: "
|
|
32433
|
+
/* @__PURE__ */ jsx(Typography, { variant: "body2", className: "text-white", children: t("qrScanner.cameraUnavailable") }),
|
|
32118
32434
|
/* @__PURE__ */ jsx(Typography, { variant: "caption", className: "text-white opacity-70", children: cameraError.message })
|
|
32119
32435
|
]
|
|
32120
32436
|
}
|
|
@@ -32125,7 +32441,7 @@ var init_QrScanner = __esm({
|
|
|
32125
32441
|
position: "absolute",
|
|
32126
32442
|
display: "flex",
|
|
32127
32443
|
className: "inset-0 items-center justify-center bg-black bg-opacity-60",
|
|
32128
|
-
children: /* @__PURE__ */ jsx(Typography, { variant: "body2", className: "text-white", children: "
|
|
32444
|
+
children: /* @__PURE__ */ jsx(Typography, { variant: "body2", className: "text-white", children: t("qrScanner.paused") })
|
|
32129
32445
|
}
|
|
32130
32446
|
),
|
|
32131
32447
|
showCameraControls && /* @__PURE__ */ jsxs(
|
|
@@ -32144,7 +32460,7 @@ var init_QrScanner = __esm({
|
|
|
32144
32460
|
"rounded-full bg-black bg-opacity-60 p-2 text-white",
|
|
32145
32461
|
"hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
|
|
32146
32462
|
),
|
|
32147
|
-
"aria-label": isPaused ? "
|
|
32463
|
+
"aria-label": isPaused ? t("qrScanner.resumeScanning") : t("qrScanner.pauseScanning"),
|
|
32148
32464
|
children: isPaused ? /* @__PURE__ */ jsx(Icon, { name: "play", className: "h-4 w-4" }) : /* @__PURE__ */ jsx(Icon, { name: "pause", className: "h-4 w-4" })
|
|
32149
32465
|
}
|
|
32150
32466
|
),
|
|
@@ -32157,7 +32473,7 @@ var init_QrScanner = __esm({
|
|
|
32157
32473
|
"rounded-full bg-black bg-opacity-60 p-2 text-white",
|
|
32158
32474
|
"hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
|
|
32159
32475
|
),
|
|
32160
|
-
"aria-label":
|
|
32476
|
+
"aria-label": currentFacing === "environment" ? t("qrScanner.switchToFrontCamera") : t("qrScanner.switchToRearCamera"),
|
|
32161
32477
|
children: /* @__PURE__ */ jsx(Icon, { name: "refresh-cw", className: "h-4 w-4" })
|
|
32162
32478
|
}
|
|
32163
32479
|
),
|
|
@@ -32171,7 +32487,7 @@ var init_QrScanner = __esm({
|
|
|
32171
32487
|
"hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
|
|
32172
32488
|
),
|
|
32173
32489
|
"aria-label": t("aria.mockScanDev"),
|
|
32174
|
-
children: "
|
|
32490
|
+
children: t("qrScanner.mockScan")
|
|
32175
32491
|
}
|
|
32176
32492
|
)
|
|
32177
32493
|
]
|
|
@@ -32189,6 +32505,7 @@ var init_OptionConstraintGroup = __esm({
|
|
|
32189
32505
|
"components/core/molecules/OptionConstraintGroup.tsx"() {
|
|
32190
32506
|
init_cn();
|
|
32191
32507
|
init_useEventBus();
|
|
32508
|
+
init_useTranslate();
|
|
32192
32509
|
init_Typography();
|
|
32193
32510
|
init_Box();
|
|
32194
32511
|
init_Label();
|
|
@@ -32198,36 +32515,36 @@ var init_OptionConstraintGroup = __esm({
|
|
|
32198
32515
|
const sign = delta >= 0 ? "+" : "-";
|
|
32199
32516
|
return `${sign}$${Math.abs(delta).toFixed(2)}`;
|
|
32200
32517
|
};
|
|
32201
|
-
constraintHint = (constraint) => {
|
|
32518
|
+
constraintHint = (constraint, t) => {
|
|
32202
32519
|
if (constraint.type === "single") {
|
|
32203
|
-
return constraint.required ? "
|
|
32520
|
+
return constraint.required ? t("optionConstraint.requiredOne") : t("optionConstraint.optionalOne");
|
|
32204
32521
|
}
|
|
32205
32522
|
const { min, max } = constraint;
|
|
32206
32523
|
if (min && max) {
|
|
32207
|
-
return min === max ?
|
|
32524
|
+
return min === max ? t("optionConstraint.pickExactly", { count: min }) : t("optionConstraint.pickRange", { min, max });
|
|
32208
32525
|
}
|
|
32209
|
-
if (min) return
|
|
32210
|
-
if (max) return
|
|
32211
|
-
return "
|
|
32526
|
+
if (min) return t("optionConstraint.pickAtLeast", { count: min });
|
|
32527
|
+
if (max) return t("optionConstraint.pickUpTo", { count: max });
|
|
32528
|
+
return t("optionConstraint.optional");
|
|
32212
32529
|
};
|
|
32213
|
-
validateSelection = (selected, constraint) => {
|
|
32530
|
+
validateSelection = (selected, constraint, t) => {
|
|
32214
32531
|
if (constraint.type === "single") {
|
|
32215
32532
|
if (constraint.required && selected.length === 0) {
|
|
32216
|
-
return "
|
|
32533
|
+
return t("optionConstraint.error.pickOne");
|
|
32217
32534
|
}
|
|
32218
32535
|
if (selected.length > 1) {
|
|
32219
|
-
return "
|
|
32536
|
+
return t("optionConstraint.error.pickOnlyOne");
|
|
32220
32537
|
}
|
|
32221
32538
|
return void 0;
|
|
32222
32539
|
}
|
|
32223
32540
|
const { min, max } = constraint;
|
|
32224
32541
|
if (min !== void 0 && selected.length < min) {
|
|
32225
32542
|
const remaining = min - selected.length;
|
|
32226
|
-
return
|
|
32543
|
+
return t("optionConstraint.error.pickMore", { count: remaining });
|
|
32227
32544
|
}
|
|
32228
32545
|
if (max !== void 0 && selected.length > max) {
|
|
32229
32546
|
const excess = selected.length - max;
|
|
32230
|
-
return
|
|
32547
|
+
return t("optionConstraint.error.removeOptions", { count: excess });
|
|
32231
32548
|
}
|
|
32232
32549
|
return void 0;
|
|
32233
32550
|
};
|
|
@@ -32244,8 +32561,9 @@ var init_OptionConstraintGroup = __esm({
|
|
|
32244
32561
|
className
|
|
32245
32562
|
}) => {
|
|
32246
32563
|
const eventBus = useEventBus();
|
|
32247
|
-
const
|
|
32248
|
-
const
|
|
32564
|
+
const { t } = useTranslate();
|
|
32565
|
+
const hint = constraintHint(constraint, t);
|
|
32566
|
+
const error = validateSelection(selected, constraint, t);
|
|
32249
32567
|
const inputName = `option-${groupId}`;
|
|
32250
32568
|
const labelTextSize = size === "sm" ? "text-sm" : "text-base";
|
|
32251
32569
|
const optionGap = size === "sm" ? "gap-2" : "gap-2.5";
|
|
@@ -32345,7 +32663,7 @@ var init_OptionConstraintGroup = __esm({
|
|
|
32345
32663
|
variant: "caption",
|
|
32346
32664
|
color: "warning",
|
|
32347
32665
|
className: "rounded border border-warning/40 px-1.5 py-0.5",
|
|
32348
|
-
children: "
|
|
32666
|
+
children: t("optionConstraint.outOfStock")
|
|
32349
32667
|
}
|
|
32350
32668
|
)
|
|
32351
32669
|
]
|
|
@@ -32667,6 +32985,7 @@ function changeBlockType(block, type) {
|
|
|
32667
32985
|
return { id: block.id, type, content: seed };
|
|
32668
32986
|
}
|
|
32669
32987
|
function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
32988
|
+
const { t } = useTranslate();
|
|
32670
32989
|
const [open, setOpen] = useState(false);
|
|
32671
32990
|
const ref = useRef(null);
|
|
32672
32991
|
useEffect(() => {
|
|
@@ -32686,7 +33005,7 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
32686
33005
|
{
|
|
32687
33006
|
type: "button",
|
|
32688
33007
|
variant: "ghost",
|
|
32689
|
-
"aria-label": "
|
|
33008
|
+
"aria-label": t("richBlockEditor.blockActions"),
|
|
32690
33009
|
className: cn(
|
|
32691
33010
|
"inline-flex items-center justify-center",
|
|
32692
33011
|
"h-6 w-6 rounded-sm p-0 gap-0",
|
|
@@ -32708,7 +33027,7 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
32708
33027
|
"py-1 text-sm"
|
|
32709
33028
|
),
|
|
32710
33029
|
children: [
|
|
32711
|
-
/* @__PURE__ */ jsx(Box, { className: "px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground", children:
|
|
33030
|
+
/* @__PURE__ */ jsx(Box, { className: "px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground", children: t(BLOCK_TYPE_LABEL_KEY[block.type]) }),
|
|
32712
33031
|
/* @__PURE__ */ jsxs(
|
|
32713
33032
|
Button,
|
|
32714
33033
|
{
|
|
@@ -32722,7 +33041,8 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
32722
33041
|
},
|
|
32723
33042
|
children: [
|
|
32724
33043
|
/* @__PURE__ */ jsx(Icon, { name: "plus", className: "w-3.5 h-3.5" }),
|
|
32725
|
-
"
|
|
33044
|
+
" ",
|
|
33045
|
+
t("richBlockEditor.duplicate")
|
|
32726
33046
|
]
|
|
32727
33047
|
}
|
|
32728
33048
|
),
|
|
@@ -32739,14 +33059,15 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
32739
33059
|
},
|
|
32740
33060
|
children: [
|
|
32741
33061
|
/* @__PURE__ */ jsx(Icon, { name: "trash", className: "w-3.5 h-3.5" }),
|
|
32742
|
-
"
|
|
33062
|
+
" ",
|
|
33063
|
+
t("common.delete")
|
|
32743
33064
|
]
|
|
32744
33065
|
}
|
|
32745
33066
|
),
|
|
32746
33067
|
CHANGEABLE_TYPES.includes(block.type) && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
32747
33068
|
/* @__PURE__ */ jsx(Box, { className: "my-1 border-t border-border" }),
|
|
32748
|
-
/* @__PURE__ */ jsx(Box, { className: "px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground", children: "
|
|
32749
|
-
CHANGEABLE_TYPES.filter((
|
|
33069
|
+
/* @__PURE__ */ jsx(Box, { className: "px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground", children: t("richBlockEditor.turnInto") }),
|
|
33070
|
+
CHANGEABLE_TYPES.filter((bt) => bt !== block.type).map((bt) => /* @__PURE__ */ jsx(
|
|
32750
33071
|
Button,
|
|
32751
33072
|
{
|
|
32752
33073
|
type: "button",
|
|
@@ -32754,12 +33075,12 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
32754
33075
|
role: "menuitem",
|
|
32755
33076
|
className: "flex w-full items-center gap-2 px-2 py-1.5 text-left justify-start rounded-none",
|
|
32756
33077
|
onClick: () => {
|
|
32757
|
-
onChangeType(
|
|
33078
|
+
onChangeType(bt);
|
|
32758
33079
|
setOpen(false);
|
|
32759
33080
|
},
|
|
32760
|
-
children:
|
|
33081
|
+
children: t(BLOCK_TYPE_LABEL_KEY[bt])
|
|
32761
33082
|
},
|
|
32762
|
-
|
|
33083
|
+
bt
|
|
32763
33084
|
))
|
|
32764
33085
|
] })
|
|
32765
33086
|
]
|
|
@@ -32821,6 +33142,7 @@ function BlockRow({
|
|
|
32821
33142
|
onInsertAfter,
|
|
32822
33143
|
onChangeType
|
|
32823
33144
|
}) {
|
|
33145
|
+
const { t } = useTranslate();
|
|
32824
33146
|
const setContent = useCallback(
|
|
32825
33147
|
(next) => onUpdate((b) => ({ ...b, content: next })),
|
|
32826
33148
|
[onUpdate]
|
|
@@ -32870,8 +33192,8 @@ function BlockRow({
|
|
|
32870
33192
|
tag: "h1",
|
|
32871
33193
|
value: block.content ?? "",
|
|
32872
33194
|
readOnly,
|
|
32873
|
-
placeholder: placeholder ?? "
|
|
32874
|
-
ariaLabel: "
|
|
33195
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.heading1"),
|
|
33196
|
+
ariaLabel: t("richBlockEditor.aria.heading1Block"),
|
|
32875
33197
|
className: "text-3xl font-bold leading-tight",
|
|
32876
33198
|
onValueChange: setContent
|
|
32877
33199
|
}
|
|
@@ -32883,8 +33205,8 @@ function BlockRow({
|
|
|
32883
33205
|
tag: "h2",
|
|
32884
33206
|
value: block.content ?? "",
|
|
32885
33207
|
readOnly,
|
|
32886
|
-
placeholder: placeholder ?? "
|
|
32887
|
-
ariaLabel: "
|
|
33208
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.heading2"),
|
|
33209
|
+
ariaLabel: t("richBlockEditor.aria.heading2Block"),
|
|
32888
33210
|
className: "text-2xl font-semibold leading-tight",
|
|
32889
33211
|
onValueChange: setContent
|
|
32890
33212
|
}
|
|
@@ -32896,8 +33218,8 @@ function BlockRow({
|
|
|
32896
33218
|
tag: "h3",
|
|
32897
33219
|
value: block.content ?? "",
|
|
32898
33220
|
readOnly,
|
|
32899
|
-
placeholder: placeholder ?? "
|
|
32900
|
-
ariaLabel: "
|
|
33221
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.heading3"),
|
|
33222
|
+
ariaLabel: t("richBlockEditor.aria.heading3Block"),
|
|
32901
33223
|
className: "text-xl font-semibold leading-tight",
|
|
32902
33224
|
onValueChange: setContent
|
|
32903
33225
|
}
|
|
@@ -32909,8 +33231,8 @@ function BlockRow({
|
|
|
32909
33231
|
tag: "blockquote",
|
|
32910
33232
|
value: block.content ?? "",
|
|
32911
33233
|
readOnly,
|
|
32912
|
-
placeholder: placeholder ?? "
|
|
32913
|
-
ariaLabel: "
|
|
33234
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.quote"),
|
|
33235
|
+
ariaLabel: t("richBlockEditor.aria.quoteBlock"),
|
|
32914
33236
|
className: "border-l-4 border-primary/60 pl-4 italic text-muted-foreground",
|
|
32915
33237
|
onValueChange: setContent
|
|
32916
33238
|
}
|
|
@@ -32918,13 +33240,13 @@ function BlockRow({
|
|
|
32918
33240
|
case "code":
|
|
32919
33241
|
return /* @__PURE__ */ jsxs(Box, { className: "rounded-md border border-border bg-muted/40", children: [
|
|
32920
33242
|
/* @__PURE__ */ jsxs(Box, { className: "flex items-center justify-between border-b border-border px-3 py-1 text-xs text-muted-foreground", children: [
|
|
32921
|
-
/* @__PURE__ */ jsx(Typography, { as: "span", variant: "caption", className: "uppercase tracking-wide", children: "
|
|
33243
|
+
/* @__PURE__ */ jsx(Typography, { as: "span", variant: "caption", className: "uppercase tracking-wide", children: t("richBlockEditor.blockType.code") }),
|
|
32922
33244
|
!readOnly && /* @__PURE__ */ jsx(
|
|
32923
33245
|
Input,
|
|
32924
33246
|
{
|
|
32925
33247
|
inputType: "text",
|
|
32926
33248
|
value: String(block.metadata?.language ?? "plaintext"),
|
|
32927
|
-
"aria-label": "
|
|
33249
|
+
"aria-label": t("richBlockEditor.aria.codeLanguage"),
|
|
32928
33250
|
className: cn(
|
|
32929
33251
|
"h-6 w-32 rounded-sm border border-border bg-background",
|
|
32930
33252
|
"px-2 text-xs outline-none focus:ring-1 focus:ring-ring"
|
|
@@ -32940,8 +33262,8 @@ function BlockRow({
|
|
|
32940
33262
|
tag: "pre",
|
|
32941
33263
|
value: block.content ?? "",
|
|
32942
33264
|
readOnly,
|
|
32943
|
-
placeholder: placeholder ?? "
|
|
32944
|
-
ariaLabel: "
|
|
33265
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.code"),
|
|
33266
|
+
ariaLabel: t("richBlockEditor.aria.codeBlock"),
|
|
32945
33267
|
className: "block whitespace-pre-wrap p-3 font-mono text-sm leading-relaxed",
|
|
32946
33268
|
onValueChange: setContent
|
|
32947
33269
|
}
|
|
@@ -32954,7 +33276,7 @@ function BlockRow({
|
|
|
32954
33276
|
const caption = String(block.metadata?.caption ?? "");
|
|
32955
33277
|
const imgProps = {
|
|
32956
33278
|
src: url,
|
|
32957
|
-
alt: caption || "
|
|
33279
|
+
alt: caption || t("richBlockEditor.embeddedImage"),
|
|
32958
33280
|
className: "max-h-96 w-full rounded-md border border-border object-contain"
|
|
32959
33281
|
};
|
|
32960
33282
|
return /* @__PURE__ */ jsxs(Box, { className: "space-y-2", children: [
|
|
@@ -32968,7 +33290,8 @@ function BlockRow({
|
|
|
32968
33290
|
),
|
|
32969
33291
|
children: [
|
|
32970
33292
|
/* @__PURE__ */ jsx(Icon, { name: "image", className: "mr-2 w-4 h-4" }),
|
|
32971
|
-
"
|
|
33293
|
+
" ",
|
|
33294
|
+
t("richBlockEditor.noImageUrl")
|
|
32972
33295
|
]
|
|
32973
33296
|
}
|
|
32974
33297
|
),
|
|
@@ -32979,7 +33302,7 @@ function BlockRow({
|
|
|
32979
33302
|
inputType: "url",
|
|
32980
33303
|
value: url,
|
|
32981
33304
|
placeholder: "https://example.com/image.png",
|
|
32982
|
-
"aria-label": "
|
|
33305
|
+
"aria-label": t("richBlockEditor.aria.imageUrl"),
|
|
32983
33306
|
className: cn(
|
|
32984
33307
|
"h-8 flex-1 rounded-sm border border-border bg-background",
|
|
32985
33308
|
"px-2 text-sm outline-none focus:ring-1 focus:ring-ring"
|
|
@@ -32992,8 +33315,8 @@ function BlockRow({
|
|
|
32992
33315
|
{
|
|
32993
33316
|
inputType: "text",
|
|
32994
33317
|
value: caption,
|
|
32995
|
-
placeholder: "
|
|
32996
|
-
"aria-label": "
|
|
33318
|
+
placeholder: t("richBlockEditor.placeholder.caption"),
|
|
33319
|
+
"aria-label": t("richBlockEditor.aria.imageCaption"),
|
|
32997
33320
|
className: cn(
|
|
32998
33321
|
"h-8 flex-1 rounded-sm border border-border bg-background",
|
|
32999
33322
|
"px-2 text-sm outline-none focus:ring-1 focus:ring-ring"
|
|
@@ -33024,8 +33347,8 @@ function BlockRow({
|
|
|
33024
33347
|
tag: "span",
|
|
33025
33348
|
value: child.content ?? "",
|
|
33026
33349
|
readOnly,
|
|
33027
|
-
placeholder: "
|
|
33028
|
-
ariaLabel: "
|
|
33350
|
+
placeholder: t("richBlockEditor.placeholder.listItem"),
|
|
33351
|
+
ariaLabel: t("richBlockEditor.aria.listItem"),
|
|
33029
33352
|
className: "inline-block min-w-[1ch] flex-1",
|
|
33030
33353
|
onValueChange: (next) => setChildContent(child.id, next)
|
|
33031
33354
|
}
|
|
@@ -33035,7 +33358,7 @@ function BlockRow({
|
|
|
33035
33358
|
{
|
|
33036
33359
|
type: "button",
|
|
33037
33360
|
variant: "ghost",
|
|
33038
|
-
"aria-label": "
|
|
33361
|
+
"aria-label": t("richBlockEditor.aria.removeListItem"),
|
|
33039
33362
|
className: cn(
|
|
33040
33363
|
"h-5 w-5 shrink-0 rounded-sm text-muted-foreground p-0 gap-0",
|
|
33041
33364
|
"opacity-0 group-hover/item:opacity-100 hover:bg-muted hover:text-foreground"
|
|
@@ -33057,7 +33380,8 @@ function BlockRow({
|
|
|
33057
33380
|
onClick: addListItem,
|
|
33058
33381
|
children: [
|
|
33059
33382
|
/* @__PURE__ */ jsx(Icon, { name: "plus", className: "w-3 h-3" }),
|
|
33060
|
-
"
|
|
33383
|
+
" ",
|
|
33384
|
+
t("richBlockEditor.addItem")
|
|
33061
33385
|
]
|
|
33062
33386
|
}
|
|
33063
33387
|
) })
|
|
@@ -33073,8 +33397,8 @@ function BlockRow({
|
|
|
33073
33397
|
tag: "p",
|
|
33074
33398
|
value: block.content ?? "",
|
|
33075
33399
|
readOnly,
|
|
33076
|
-
placeholder: placeholder ?? "
|
|
33077
|
-
ariaLabel: "
|
|
33400
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.paragraph"),
|
|
33401
|
+
ariaLabel: t("richBlockEditor.aria.paragraphBlock"),
|
|
33078
33402
|
className: "leading-7",
|
|
33079
33403
|
onValueChange: setContent
|
|
33080
33404
|
}
|
|
@@ -33097,7 +33421,7 @@ function BlockRow({
|
|
|
33097
33421
|
{
|
|
33098
33422
|
type: "button",
|
|
33099
33423
|
variant: "ghost",
|
|
33100
|
-
"aria-label": "
|
|
33424
|
+
"aria-label": t("richBlockEditor.insertParagraphBelow"),
|
|
33101
33425
|
className: cn(
|
|
33102
33426
|
"inline-flex h-6 w-6 items-center justify-center rounded-sm p-0 gap-0",
|
|
33103
33427
|
"text-muted-foreground hover:bg-muted hover:text-foreground",
|
|
@@ -33124,7 +33448,7 @@ function BlockRow({
|
|
|
33124
33448
|
}
|
|
33125
33449
|
);
|
|
33126
33450
|
}
|
|
33127
|
-
var TOOLBAR_ENTRIES,
|
|
33451
|
+
var TOOLBAR_ENTRIES, BLOCK_TYPE_LABEL_KEY, CHANGEABLE_TYPES, _idSeq, BLOCK_TYPES, RichBlockEditor;
|
|
33128
33452
|
var init_RichBlockEditor = __esm({
|
|
33129
33453
|
"components/core/molecules/RichBlockEditor.tsx"() {
|
|
33130
33454
|
"use client";
|
|
@@ -33137,29 +33461,30 @@ var init_RichBlockEditor = __esm({
|
|
|
33137
33461
|
init_Input();
|
|
33138
33462
|
init_Icon();
|
|
33139
33463
|
init_useEventBus();
|
|
33464
|
+
init_useTranslate();
|
|
33140
33465
|
TOOLBAR_ENTRIES = [
|
|
33141
|
-
{ type: "paragraph",
|
|
33142
|
-
{ type: "heading-1",
|
|
33143
|
-
{ type: "heading-2",
|
|
33144
|
-
{ type: "heading-3",
|
|
33145
|
-
{ type: "bullet-list",
|
|
33146
|
-
{ type: "numbered-list",
|
|
33147
|
-
{ type: "quote",
|
|
33148
|
-
{ type: "code",
|
|
33149
|
-
{ type: "divider",
|
|
33150
|
-
{ type: "image",
|
|
33466
|
+
{ type: "paragraph", labelKey: "richBlockEditor.toolbar.text", icon: Type },
|
|
33467
|
+
{ type: "heading-1", labelKey: "richBlockEditor.toolbar.h1", icon: Heading1 },
|
|
33468
|
+
{ type: "heading-2", labelKey: "richBlockEditor.toolbar.h2", icon: Heading2 },
|
|
33469
|
+
{ type: "heading-3", labelKey: "richBlockEditor.toolbar.h3", icon: Heading3 },
|
|
33470
|
+
{ type: "bullet-list", labelKey: "richBlockEditor.toolbar.bulletList", icon: List },
|
|
33471
|
+
{ type: "numbered-list", labelKey: "richBlockEditor.toolbar.numbered", icon: ListOrdered },
|
|
33472
|
+
{ type: "quote", labelKey: "richBlockEditor.toolbar.quote", icon: Quote },
|
|
33473
|
+
{ type: "code", labelKey: "richBlockEditor.toolbar.code", icon: Code },
|
|
33474
|
+
{ type: "divider", labelKey: "richBlockEditor.toolbar.divider", icon: Minus },
|
|
33475
|
+
{ type: "image", labelKey: "richBlockEditor.toolbar.image", icon: Image$1 }
|
|
33151
33476
|
];
|
|
33152
|
-
|
|
33153
|
-
paragraph: "
|
|
33154
|
-
"heading-1": "
|
|
33155
|
-
"heading-2": "
|
|
33156
|
-
"heading-3": "
|
|
33157
|
-
"bullet-list": "
|
|
33158
|
-
"numbered-list": "
|
|
33159
|
-
quote: "
|
|
33160
|
-
code: "
|
|
33161
|
-
divider: "
|
|
33162
|
-
image: "
|
|
33477
|
+
BLOCK_TYPE_LABEL_KEY = {
|
|
33478
|
+
paragraph: "richBlockEditor.blockType.paragraph",
|
|
33479
|
+
"heading-1": "richBlockEditor.blockType.heading1",
|
|
33480
|
+
"heading-2": "richBlockEditor.blockType.heading2",
|
|
33481
|
+
"heading-3": "richBlockEditor.blockType.heading3",
|
|
33482
|
+
"bullet-list": "richBlockEditor.blockType.bulletList",
|
|
33483
|
+
"numbered-list": "richBlockEditor.blockType.numberedList",
|
|
33484
|
+
quote: "richBlockEditor.blockType.quote",
|
|
33485
|
+
code: "richBlockEditor.blockType.code",
|
|
33486
|
+
divider: "richBlockEditor.blockType.divider",
|
|
33487
|
+
image: "richBlockEditor.blockType.image"
|
|
33163
33488
|
};
|
|
33164
33489
|
CHANGEABLE_TYPES = [
|
|
33165
33490
|
"paragraph",
|
|
@@ -33193,6 +33518,7 @@ var init_RichBlockEditor = __esm({
|
|
|
33193
33518
|
showToolbar = true,
|
|
33194
33519
|
className
|
|
33195
33520
|
}) => {
|
|
33521
|
+
const { t } = useTranslate();
|
|
33196
33522
|
const [blocks, setBlocks] = useState(
|
|
33197
33523
|
() => normalizeBlocks(initialBlocks)
|
|
33198
33524
|
);
|
|
@@ -33264,25 +33590,26 @@ var init_RichBlockEditor = __esm({
|
|
|
33264
33590
|
Box,
|
|
33265
33591
|
{
|
|
33266
33592
|
role: "toolbar",
|
|
33267
|
-
"aria-label": "
|
|
33593
|
+
"aria-label": t("richBlockEditor.editorToolbar"),
|
|
33268
33594
|
className: cn(
|
|
33269
33595
|
"flex flex-wrap items-center gap-1",
|
|
33270
33596
|
"border-b border-border bg-muted/30 px-2 py-2"
|
|
33271
33597
|
),
|
|
33272
33598
|
children: TOOLBAR_ENTRIES.map((entry) => {
|
|
33273
33599
|
const Icon3 = entry.icon;
|
|
33600
|
+
const entryLabel = t(entry.labelKey);
|
|
33274
33601
|
return /* @__PURE__ */ jsxs(
|
|
33275
33602
|
Button,
|
|
33276
33603
|
{
|
|
33277
33604
|
type: "button",
|
|
33278
33605
|
variant: "ghost",
|
|
33279
33606
|
size: "sm",
|
|
33280
|
-
"aria-label":
|
|
33281
|
-
title:
|
|
33607
|
+
"aria-label": t("richBlockEditor.insertEntry", { label: entryLabel }),
|
|
33608
|
+
title: entryLabel,
|
|
33282
33609
|
onClick: () => handleAppend(entry.type),
|
|
33283
33610
|
children: [
|
|
33284
33611
|
/* @__PURE__ */ jsx(Icon3, { size: 14 }),
|
|
33285
|
-
/* @__PURE__ */ jsx(Typography, { as: "span", variant: "caption", className: "ml-1 hidden text-xs sm:inline", children:
|
|
33612
|
+
/* @__PURE__ */ jsx(Typography, { as: "span", variant: "caption", className: "ml-1 hidden text-xs sm:inline", children: entryLabel })
|
|
33286
33613
|
]
|
|
33287
33614
|
},
|
|
33288
33615
|
entry.type
|
|
@@ -33325,6 +33652,7 @@ var init_ReplyTree = __esm({
|
|
|
33325
33652
|
"use client";
|
|
33326
33653
|
init_cn();
|
|
33327
33654
|
init_useEventBus();
|
|
33655
|
+
init_useTranslate();
|
|
33328
33656
|
init_atoms2();
|
|
33329
33657
|
init_VoteStack();
|
|
33330
33658
|
ReplyTreeNode = ({
|
|
@@ -33344,6 +33672,7 @@ var init_ReplyTree = __esm({
|
|
|
33344
33672
|
showActions
|
|
33345
33673
|
}) => {
|
|
33346
33674
|
const eventBus = useEventBus();
|
|
33675
|
+
const { t } = useTranslate();
|
|
33347
33676
|
const hasReplies = !!node.replies && node.replies.length > 0;
|
|
33348
33677
|
const isCollapsed = collapsedSet.has(node.id);
|
|
33349
33678
|
const atMaxDepth = depth >= maxDepth;
|
|
@@ -33390,7 +33719,7 @@ var init_ReplyTree = __esm({
|
|
|
33390
33719
|
variant: "ghost",
|
|
33391
33720
|
size: "sm",
|
|
33392
33721
|
onClick: handleToggle,
|
|
33393
|
-
"aria-label": isCollapsed ? "
|
|
33722
|
+
"aria-label": isCollapsed ? t("replyTree.expandReplies") : t("replyTree.collapseReplies"),
|
|
33394
33723
|
"aria-expanded": !isCollapsed,
|
|
33395
33724
|
leftIcon: isCollapsed ? "chevron-right" : "chevron-down",
|
|
33396
33725
|
className: cn(
|
|
@@ -33431,7 +33760,7 @@ var init_ReplyTree = __esm({
|
|
|
33431
33760
|
onVote: handleVote,
|
|
33432
33761
|
size: "sm",
|
|
33433
33762
|
variant: "horizontal",
|
|
33434
|
-
label:
|
|
33763
|
+
label: t("replyTree.voteOnReplyBy", { author: node.authorName })
|
|
33435
33764
|
}
|
|
33436
33765
|
),
|
|
33437
33766
|
/* @__PURE__ */ jsx(
|
|
@@ -33441,8 +33770,8 @@ var init_ReplyTree = __esm({
|
|
|
33441
33770
|
size: "sm",
|
|
33442
33771
|
leftIcon: "message-square",
|
|
33443
33772
|
onClick: handleReply,
|
|
33444
|
-
"aria-label":
|
|
33445
|
-
children: "
|
|
33773
|
+
"aria-label": t("replyTree.replyTo", { author: node.authorName }),
|
|
33774
|
+
children: t("replyTree.reply")
|
|
33446
33775
|
}
|
|
33447
33776
|
),
|
|
33448
33777
|
/* @__PURE__ */ jsx(
|
|
@@ -33452,8 +33781,8 @@ var init_ReplyTree = __esm({
|
|
|
33452
33781
|
size: "sm",
|
|
33453
33782
|
leftIcon: "flag",
|
|
33454
33783
|
onClick: handleFlag,
|
|
33455
|
-
"aria-label":
|
|
33456
|
-
children: "
|
|
33784
|
+
"aria-label": t("replyTree.flagReplyBy", { author: node.authorName }),
|
|
33785
|
+
children: t("replyTree.flag")
|
|
33457
33786
|
}
|
|
33458
33787
|
)
|
|
33459
33788
|
] }),
|
|
@@ -33464,9 +33793,9 @@ var init_ReplyTree = __esm({
|
|
|
33464
33793
|
inputType: "textarea",
|
|
33465
33794
|
rows: 2,
|
|
33466
33795
|
value: draft,
|
|
33467
|
-
placeholder:
|
|
33796
|
+
placeholder: t("replyTree.replyToPlaceholder", { author: node.authorName }),
|
|
33468
33797
|
onChange: (e) => setDraft(e.target.value),
|
|
33469
|
-
"aria-label":
|
|
33798
|
+
"aria-label": t("replyTree.replyTo", { author: node.authorName })
|
|
33470
33799
|
}
|
|
33471
33800
|
),
|
|
33472
33801
|
/* @__PURE__ */ jsxs(Box, { className: "flex flex-row gap-2 items-center", children: [
|
|
@@ -33478,10 +33807,10 @@ var init_ReplyTree = __esm({
|
|
|
33478
33807
|
leftIcon: "send",
|
|
33479
33808
|
onClick: handleSubmitReply,
|
|
33480
33809
|
disabled: !draft.trim(),
|
|
33481
|
-
children: "
|
|
33810
|
+
children: t("replyTree.send")
|
|
33482
33811
|
}
|
|
33483
33812
|
),
|
|
33484
|
-
/* @__PURE__ */ jsx(Button, { variant: "ghost", size: "sm", onClick: handleCancelReply, children: "
|
|
33813
|
+
/* @__PURE__ */ jsx(Button, { variant: "ghost", size: "sm", onClick: handleCancelReply, children: t("common.cancel") })
|
|
33485
33814
|
] })
|
|
33486
33815
|
] }),
|
|
33487
33816
|
hasReplies && !isCollapsed && (atMaxDepth ? /* @__PURE__ */ jsx(
|
|
@@ -33495,7 +33824,7 @@ var init_ReplyTree = __esm({
|
|
|
33495
33824
|
"self-start gap-1 px-0 h-auto",
|
|
33496
33825
|
"text-sm text-primary hover:underline hover:bg-transparent"
|
|
33497
33826
|
),
|
|
33498
|
-
children: "
|
|
33827
|
+
children: t("replyTree.continueThread")
|
|
33499
33828
|
}
|
|
33500
33829
|
) : /* @__PURE__ */ jsx(Box, { className: "flex flex-col gap-2 mt-1", children: node.replies.map((child) => /* @__PURE__ */ jsx(
|
|
33501
33830
|
ReplyTreeNode,
|
|
@@ -33534,6 +33863,7 @@ var init_ReplyTree = __esm({
|
|
|
33534
33863
|
showActions = true,
|
|
33535
33864
|
className
|
|
33536
33865
|
}) => {
|
|
33866
|
+
const { t } = useTranslate();
|
|
33537
33867
|
const nodeList = Array.isArray(nodes) ? nodes : nodes ? [nodes] : [];
|
|
33538
33868
|
const [collapsedSet, setCollapsedSet] = useState(() => {
|
|
33539
33869
|
const acc = /* @__PURE__ */ new Set();
|
|
@@ -33552,7 +33882,7 @@ var init_ReplyTree = __esm({
|
|
|
33552
33882
|
});
|
|
33553
33883
|
}, []);
|
|
33554
33884
|
if (nodeList.length === 0) {
|
|
33555
|
-
return /* @__PURE__ */ jsx(Box, { className: cn("text-sm text-muted-foreground", className), children: "
|
|
33885
|
+
return /* @__PURE__ */ jsx(Box, { className: cn("text-sm text-muted-foreground", className), children: t("replyTree.noRepliesYet") });
|
|
33556
33886
|
}
|
|
33557
33887
|
return /* @__PURE__ */ jsx(Box, { className: cn("flex flex-col gap-2 min-w-0", className), children: nodeList.map((node) => /* @__PURE__ */ jsx(
|
|
33558
33888
|
ReplyTreeNode,
|
|
@@ -33630,6 +33960,7 @@ var init_VersionDiff = __esm({
|
|
|
33630
33960
|
"use client";
|
|
33631
33961
|
init_cn();
|
|
33632
33962
|
init_useEventBus();
|
|
33963
|
+
init_useTranslate();
|
|
33633
33964
|
init_atoms2();
|
|
33634
33965
|
init_Stack();
|
|
33635
33966
|
INLINE_STYLES = {
|
|
@@ -33652,6 +33983,7 @@ var init_VersionDiff = __esm({
|
|
|
33652
33983
|
language,
|
|
33653
33984
|
className
|
|
33654
33985
|
}) => {
|
|
33986
|
+
const { t } = useTranslate();
|
|
33655
33987
|
const eventBus = useEventBus();
|
|
33656
33988
|
const revisions = Array.isArray(revisionsProp) ? revisionsProp : [];
|
|
33657
33989
|
const fallbackBefore = revisions[0]?.id ?? "";
|
|
@@ -33733,24 +34065,24 @@ var init_VersionDiff = __esm({
|
|
|
33733
34065
|
children: [
|
|
33734
34066
|
/* @__PURE__ */ jsxs(HStack, { gap: "sm", align: "center", className: "flex-wrap", children: [
|
|
33735
34067
|
/* @__PURE__ */ jsx(Icon, { name: "git-commit", size: "sm", className: "text-muted-foreground" }),
|
|
33736
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "whitespace-nowrap", children: "
|
|
34068
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "whitespace-nowrap", children: t("versionDiff.compare") }),
|
|
33737
34069
|
/* @__PURE__ */ jsx(Box, { className: "min-w-0 md:min-w-[160px]", children: /* @__PURE__ */ jsx(
|
|
33738
34070
|
Select,
|
|
33739
34071
|
{
|
|
33740
34072
|
options,
|
|
33741
34073
|
value: activeBeforeId,
|
|
33742
34074
|
onChange: handleBeforeChange,
|
|
33743
|
-
"aria-label": "
|
|
34075
|
+
"aria-label": t("versionDiff.beforeRevision")
|
|
33744
34076
|
}
|
|
33745
34077
|
) }),
|
|
33746
|
-
/* @__PURE__ */ jsx(Typography, { variant: "caption", color: "secondary", children: "to" }),
|
|
34078
|
+
/* @__PURE__ */ jsx(Typography, { variant: "caption", color: "secondary", children: t("versionDiff.to") }),
|
|
33747
34079
|
/* @__PURE__ */ jsx(Box, { className: "min-w-0 md:min-w-[160px]", children: /* @__PURE__ */ jsx(
|
|
33748
34080
|
Select,
|
|
33749
34081
|
{
|
|
33750
34082
|
options,
|
|
33751
34083
|
value: activeAfterId,
|
|
33752
34084
|
onChange: handleAfterChange,
|
|
33753
|
-
"aria-label": "
|
|
34085
|
+
"aria-label": t("versionDiff.afterRevision")
|
|
33754
34086
|
}
|
|
33755
34087
|
) }),
|
|
33756
34088
|
language && /* @__PURE__ */ jsx(Badge, { variant: "default", children: language }),
|
|
@@ -33771,7 +34103,7 @@ var init_VersionDiff = __esm({
|
|
|
33771
34103
|
size: "sm",
|
|
33772
34104
|
icon: activeView === "side-by-side" ? "align-left" : "columns",
|
|
33773
34105
|
onClick: handleViewToggle,
|
|
33774
|
-
"aria-label": activeView === "side-by-side" ? "
|
|
34106
|
+
"aria-label": activeView === "side-by-side" ? t("versionDiff.switchToInline") : t("versionDiff.switchToSideBySide")
|
|
33775
34107
|
}
|
|
33776
34108
|
),
|
|
33777
34109
|
(onRevert || revertEvent) && /* @__PURE__ */ jsx(
|
|
@@ -33781,7 +34113,7 @@ var init_VersionDiff = __esm({
|
|
|
33781
34113
|
size: "sm",
|
|
33782
34114
|
icon: "rotate-ccw",
|
|
33783
34115
|
onClick: handleRevert,
|
|
33784
|
-
children: "
|
|
34116
|
+
children: t("versionDiff.revert")
|
|
33785
34117
|
}
|
|
33786
34118
|
)
|
|
33787
34119
|
] })
|
|
@@ -33798,12 +34130,12 @@ var init_VersionDiff = __esm({
|
|
|
33798
34130
|
children: [
|
|
33799
34131
|
/* @__PURE__ */ jsxs(Typography, { variant: "caption", color: "secondary", className: "truncate", children: [
|
|
33800
34132
|
beforeRev?.label,
|
|
33801
|
-
beforeRev?.author ?
|
|
34133
|
+
beforeRev?.author ? t("versionDiff.byAuthor", { author: beforeRev.author }) : "",
|
|
33802
34134
|
beforeRev?.timestamp ? ` (${beforeRev.timestamp})` : ""
|
|
33803
34135
|
] }),
|
|
33804
34136
|
/* @__PURE__ */ jsxs(Typography, { variant: "caption", color: "secondary", className: "truncate", children: [
|
|
33805
34137
|
afterRev?.label,
|
|
33806
|
-
afterRev?.author ?
|
|
34138
|
+
afterRev?.author ? t("versionDiff.byAuthor", { author: afterRev.author }) : "",
|
|
33807
34139
|
afterRev?.timestamp ? ` (${afterRev.timestamp})` : ""
|
|
33808
34140
|
] })
|
|
33809
34141
|
]
|
|
@@ -34196,10 +34528,12 @@ var init_DocPagination = __esm({
|
|
|
34196
34528
|
}
|
|
34197
34529
|
});
|
|
34198
34530
|
function DocSearch({
|
|
34199
|
-
placeholder
|
|
34531
|
+
placeholder,
|
|
34200
34532
|
onSearch,
|
|
34201
34533
|
className
|
|
34202
34534
|
}) {
|
|
34535
|
+
const { t } = useTranslate();
|
|
34536
|
+
const resolvedPlaceholder = placeholder ?? t("docSearch.placeholder");
|
|
34203
34537
|
const [query, setQuery] = useState("");
|
|
34204
34538
|
const [results, setResults] = useState([]);
|
|
34205
34539
|
const [isOpen, setIsOpen] = useState(false);
|
|
@@ -34306,7 +34640,7 @@ function DocSearch({
|
|
|
34306
34640
|
Input,
|
|
34307
34641
|
{
|
|
34308
34642
|
inputType: "search",
|
|
34309
|
-
placeholder,
|
|
34643
|
+
placeholder: resolvedPlaceholder,
|
|
34310
34644
|
value: query,
|
|
34311
34645
|
onChange: handleChange,
|
|
34312
34646
|
onFocus: handleFocus,
|
|
@@ -34371,6 +34705,7 @@ var init_DocSearch = __esm({
|
|
|
34371
34705
|
init_Typography();
|
|
34372
34706
|
init_Icon();
|
|
34373
34707
|
init_Input();
|
|
34708
|
+
init_useTranslate();
|
|
34374
34709
|
}
|
|
34375
34710
|
});
|
|
34376
34711
|
var DocSidebarCategory, DocSidebar;
|
|
@@ -36375,8 +36710,8 @@ var init_SignaturePad = __esm({
|
|
|
36375
36710
|
init_useEventBus();
|
|
36376
36711
|
init_useTranslate();
|
|
36377
36712
|
SignaturePad = ({
|
|
36378
|
-
label
|
|
36379
|
-
helperText
|
|
36713
|
+
label,
|
|
36714
|
+
helperText,
|
|
36380
36715
|
strokeColor,
|
|
36381
36716
|
strokeWidth = 2,
|
|
36382
36717
|
height = 200,
|
|
@@ -36392,6 +36727,8 @@ var init_SignaturePad = __esm({
|
|
|
36392
36727
|
}) => {
|
|
36393
36728
|
const eventBus = useEventBus();
|
|
36394
36729
|
const { t } = useTranslate();
|
|
36730
|
+
const resolvedLabel = label ?? t("signaturePad.label");
|
|
36731
|
+
const resolvedHelperText = helperText ?? t("signaturePad.helperText");
|
|
36395
36732
|
const canvasRef = useRef(null);
|
|
36396
36733
|
const [isDrawing, setIsDrawing] = useState(false);
|
|
36397
36734
|
const [hasSignature, setHasSignature] = useState(!!value);
|
|
@@ -36494,7 +36831,7 @@ var init_SignaturePad = __esm({
|
|
|
36494
36831
|
);
|
|
36495
36832
|
}
|
|
36496
36833
|
return /* @__PURE__ */ jsx(Card, { className: cn("p-4", className), children: /* @__PURE__ */ jsxs(VStack, { gap: "sm", children: [
|
|
36497
|
-
|
|
36834
|
+
resolvedLabel && /* @__PURE__ */ jsx(Typography, { variant: "label", weight: "medium", children: resolvedLabel }),
|
|
36498
36835
|
/* @__PURE__ */ jsx(
|
|
36499
36836
|
Box,
|
|
36500
36837
|
{
|
|
@@ -36523,7 +36860,7 @@ var init_SignaturePad = __esm({
|
|
|
36523
36860
|
)
|
|
36524
36861
|
}
|
|
36525
36862
|
),
|
|
36526
|
-
|
|
36863
|
+
resolvedHelperText && /* @__PURE__ */ jsx(Typography, { variant: "caption", color: "secondary", children: resolvedHelperText }),
|
|
36527
36864
|
!readOnly && /* @__PURE__ */ jsxs(HStack, { gap: "sm", justify: "end", children: [
|
|
36528
36865
|
/* @__PURE__ */ jsx(
|
|
36529
36866
|
Button,
|
|
@@ -36533,7 +36870,7 @@ var init_SignaturePad = __esm({
|
|
|
36533
36870
|
icon: Eraser,
|
|
36534
36871
|
onClick: clearSignature,
|
|
36535
36872
|
disabled: !hasSignature,
|
|
36536
|
-
children: "
|
|
36873
|
+
children: t("signaturePad.clear")
|
|
36537
36874
|
}
|
|
36538
36875
|
),
|
|
36539
36876
|
signEvent && /* @__PURE__ */ jsx(
|
|
@@ -36544,7 +36881,7 @@ var init_SignaturePad = __esm({
|
|
|
36544
36881
|
icon: Check,
|
|
36545
36882
|
onClick: confirmSignature,
|
|
36546
36883
|
disabled: !hasSignature,
|
|
36547
|
-
children: "
|
|
36884
|
+
children: t("signaturePad.confirm")
|
|
36548
36885
|
}
|
|
36549
36886
|
)
|
|
36550
36887
|
] })
|
|
@@ -40989,6 +41326,7 @@ function MasterDetail({
|
|
|
40989
41326
|
className,
|
|
40990
41327
|
...rest
|
|
40991
41328
|
}) {
|
|
41329
|
+
const { t } = useTranslate();
|
|
40992
41330
|
const loading = externalLoading ?? false;
|
|
40993
41331
|
const isLoading = externalIsLoading ?? false;
|
|
40994
41332
|
const error = externalError ?? null;
|
|
@@ -41001,8 +41339,8 @@ function MasterDetail({
|
|
|
41001
41339
|
isLoading: loading || isLoading,
|
|
41002
41340
|
error,
|
|
41003
41341
|
className,
|
|
41004
|
-
emptyTitle: "
|
|
41005
|
-
emptyDescription: "
|
|
41342
|
+
emptyTitle: t("table.empty.title"),
|
|
41343
|
+
emptyDescription: t("empty.createFirst"),
|
|
41006
41344
|
...rest
|
|
41007
41345
|
}
|
|
41008
41346
|
);
|
|
@@ -41011,6 +41349,7 @@ var init_MasterDetail = __esm({
|
|
|
41011
41349
|
"components/core/organisms/MasterDetail.tsx"() {
|
|
41012
41350
|
"use client";
|
|
41013
41351
|
init_DataTable();
|
|
41352
|
+
init_useTranslate();
|
|
41014
41353
|
MasterDetail.displayName = "MasterDetail";
|
|
41015
41354
|
}
|
|
41016
41355
|
});
|
|
@@ -41019,14 +41358,18 @@ var init_MasterDetailLayout = __esm({
|
|
|
41019
41358
|
"components/core/organisms/layout/MasterDetailLayout.tsx"() {
|
|
41020
41359
|
init_cn();
|
|
41021
41360
|
init_Typography();
|
|
41022
|
-
|
|
41023
|
-
|
|
41024
|
-
{
|
|
41025
|
-
|
|
41026
|
-
|
|
41027
|
-
|
|
41028
|
-
|
|
41029
|
-
|
|
41361
|
+
init_useTranslate();
|
|
41362
|
+
DefaultEmptyDetail = () => {
|
|
41363
|
+
const { t } = useTranslate();
|
|
41364
|
+
return /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center h-full border-2 border-dashed border-border", children: /* @__PURE__ */ jsx(
|
|
41365
|
+
Typography,
|
|
41366
|
+
{
|
|
41367
|
+
variant: "body2",
|
|
41368
|
+
className: "text-muted-foreground",
|
|
41369
|
+
children: t("masterDetail.selectItem")
|
|
41370
|
+
}
|
|
41371
|
+
) });
|
|
41372
|
+
};
|
|
41030
41373
|
MasterDetailLayout = ({
|
|
41031
41374
|
master,
|
|
41032
41375
|
detail,
|
|
@@ -41153,7 +41496,7 @@ var init_MediaGallery = __esm({
|
|
|
41153
41496
|
{
|
|
41154
41497
|
icon: Image$1,
|
|
41155
41498
|
title: t("display.noMedia"),
|
|
41156
|
-
description: "
|
|
41499
|
+
description: t("mediaGallery.noMediaDescription"),
|
|
41157
41500
|
className
|
|
41158
41501
|
}
|
|
41159
41502
|
);
|
|
@@ -41170,7 +41513,7 @@ var init_MediaGallery = __esm({
|
|
|
41170
41513
|
size: "sm",
|
|
41171
41514
|
icon: Upload,
|
|
41172
41515
|
action: "MEDIA_UPLOAD",
|
|
41173
|
-
children: "
|
|
41516
|
+
children: t("mediaGallery.upload")
|
|
41174
41517
|
}
|
|
41175
41518
|
),
|
|
41176
41519
|
actions?.map((action, idx) => /* @__PURE__ */ jsx(
|
|
@@ -41184,10 +41527,7 @@ var init_MediaGallery = __esm({
|
|
|
41184
41527
|
))
|
|
41185
41528
|
] })
|
|
41186
41529
|
] }),
|
|
41187
|
-
selectable && selectedItems.length > 0 && /* @__PURE__ */ jsx(HStack, { gap: "sm", align: "center", children: /* @__PURE__ */
|
|
41188
|
-
selectedItems.length,
|
|
41189
|
-
" selected"
|
|
41190
|
-
] }) }),
|
|
41530
|
+
selectable && selectedItems.length > 0 && /* @__PURE__ */ jsx(HStack, { gap: "sm", align: "center", children: /* @__PURE__ */ jsx(Badge, { variant: "info", children: t("table.bulk.selected", { count: selectedItems.length }) }) }),
|
|
41191
41531
|
/* @__PURE__ */ jsx(
|
|
41192
41532
|
Box,
|
|
41193
41533
|
{
|
|
@@ -42061,7 +42401,7 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
42061
42401
|
EmptyState,
|
|
42062
42402
|
{
|
|
42063
42403
|
title: t("debug.noActiveTraits"),
|
|
42064
|
-
description: "
|
|
42404
|
+
description: t("debug.traitsMountHint"),
|
|
42065
42405
|
className: "py-8"
|
|
42066
42406
|
}
|
|
42067
42407
|
);
|
|
@@ -42071,14 +42411,11 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
42071
42411
|
header: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 w-full", children: [
|
|
42072
42412
|
/* @__PURE__ */ jsx(Typography, { variant: "body", weight: "semibold", className: "text-purple-600 dark:text-purple-400", children: trait.name }),
|
|
42073
42413
|
/* @__PURE__ */ jsx(Badge, { variant: "success", size: "sm", children: trait.currentState }),
|
|
42074
|
-
/* @__PURE__ */
|
|
42075
|
-
trait.transitionCount,
|
|
42076
|
-
" transitions"
|
|
42077
|
-
] })
|
|
42414
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-500 ml-auto", children: t("debug.transitionsCount", { count: trait.transitionCount }) })
|
|
42078
42415
|
] }),
|
|
42079
42416
|
content: /* @__PURE__ */ jsxs(Stack, { gap: "sm", children: [
|
|
42080
42417
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
42081
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: "
|
|
42418
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.states") }),
|
|
42082
42419
|
/* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1", children: trait.states.map((state) => /* @__PURE__ */ jsx(
|
|
42083
42420
|
Badge,
|
|
42084
42421
|
{
|
|
@@ -42090,7 +42427,7 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
42090
42427
|
)) })
|
|
42091
42428
|
] }),
|
|
42092
42429
|
trait.transitions.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
|
|
42093
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: "
|
|
42430
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.transitions") }),
|
|
42094
42431
|
/* @__PURE__ */ jsx(Stack, { gap: "xs", children: trait.transitions.map((t2, i) => /* @__PURE__ */ jsxs(Typography, { variant: "small", className: "font-mono", children: [
|
|
42095
42432
|
t2.from,
|
|
42096
42433
|
" \u2192 ",
|
|
@@ -42109,7 +42446,7 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
42109
42446
|
] }, i)) })
|
|
42110
42447
|
] }),
|
|
42111
42448
|
trait.guards.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
|
|
42112
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: "
|
|
42449
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.guards") }),
|
|
42113
42450
|
/* @__PURE__ */ jsx(Stack, { gap: "xs", children: trait.guards.map((g, i) => /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
|
|
42114
42451
|
/* @__PURE__ */ jsx(Typography, { variant: "small", children: g.name }),
|
|
42115
42452
|
/* @__PURE__ */ jsx(Badge, { variant: g.lastResult === true ? "success" : g.lastResult === false ? "danger" : "default", size: "sm", children: g.lastResult === void 0 ? "?" : g.lastResult ? "\u2713" : "\u2717" })
|
|
@@ -42215,7 +42552,7 @@ function EntitiesTab({ snapshot }) {
|
|
|
42215
42552
|
EmptyState,
|
|
42216
42553
|
{
|
|
42217
42554
|
title: t("debug.noEntityData"),
|
|
42218
|
-
description: "
|
|
42555
|
+
description: t("debug.debugModeHint"),
|
|
42219
42556
|
className: "py-8"
|
|
42220
42557
|
}
|
|
42221
42558
|
);
|
|
@@ -42228,7 +42565,7 @@ function EntitiesTab({ snapshot }) {
|
|
|
42228
42565
|
EmptyState,
|
|
42229
42566
|
{
|
|
42230
42567
|
title: t("debug.noEntities"),
|
|
42231
|
-
description: "
|
|
42568
|
+
description: t("debug.entitiesSpawnHint"),
|
|
42232
42569
|
className: "py-8"
|
|
42233
42570
|
}
|
|
42234
42571
|
);
|
|
@@ -42236,7 +42573,7 @@ function EntitiesTab({ snapshot }) {
|
|
|
42236
42573
|
const singletonItems = singletonEntries.map(([name, data]) => ({
|
|
42237
42574
|
id: `singleton-${name}`,
|
|
42238
42575
|
header: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
42239
|
-
/* @__PURE__ */ jsx(Badge, { variant: "primary", size: "sm", children: "
|
|
42576
|
+
/* @__PURE__ */ jsx(Badge, { variant: "primary", size: "sm", children: t("debug.singleton") }),
|
|
42240
42577
|
/* @__PURE__ */ jsx(Typography, { variant: "body", weight: "semibold", className: "text-sky-600 dark:text-sky-400", children: name })
|
|
42241
42578
|
] }),
|
|
42242
42579
|
content: /* @__PURE__ */ jsx("pre", { className: "text-xs text-gray-600 dark:text-gray-400 bg-gray-50 dark:bg-gray-800 p-2 rounded overflow-auto max-h-40", children: JSON.stringify(data, null, 2) })
|
|
@@ -42254,31 +42591,19 @@ function EntitiesTab({ snapshot }) {
|
|
|
42254
42591
|
}));
|
|
42255
42592
|
return /* @__PURE__ */ jsxs("div", { className: "debug-tab debug-tab--entities", children: [
|
|
42256
42593
|
singletonItems.length > 0 && /* @__PURE__ */ jsxs("div", { className: "mb-4", children: [
|
|
42257
|
-
/* @__PURE__ */
|
|
42258
|
-
"Singletons (",
|
|
42259
|
-
singletonItems.length,
|
|
42260
|
-
")"
|
|
42261
|
-
] }),
|
|
42594
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.singletonsCount", { count: singletonItems.length }) }),
|
|
42262
42595
|
/* @__PURE__ */ jsx(Accordion, { items: singletonItems, multiple: true })
|
|
42263
42596
|
] }),
|
|
42264
42597
|
runtimeItems.length > 0 && /* @__PURE__ */ jsxs("div", { className: "mb-4", children: [
|
|
42265
|
-
/* @__PURE__ */
|
|
42266
|
-
"Runtime (",
|
|
42267
|
-
runtimeEntities.length,
|
|
42268
|
-
")"
|
|
42269
|
-
] }),
|
|
42598
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.runtimeCount", { count: runtimeEntities.length }) }),
|
|
42270
42599
|
/* @__PURE__ */ jsx(Accordion, { items: runtimeItems, multiple: true }),
|
|
42271
|
-
runtimeEntities.length > 20 && /* @__PURE__ */
|
|
42272
|
-
"+",
|
|
42273
|
-
runtimeEntities.length - 20,
|
|
42274
|
-
" more entities"
|
|
42275
|
-
] })
|
|
42600
|
+
runtimeEntities.length > 20 && /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-400 text-center mt-2", children: t("debug.moreEntities", { count: runtimeEntities.length - 20 }) })
|
|
42276
42601
|
] }),
|
|
42277
42602
|
persistentEntries.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
|
|
42278
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: "
|
|
42603
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.persistent") }),
|
|
42279
42604
|
/* @__PURE__ */ jsx(Stack, { gap: "xs", children: persistentEntries.map(([type, info]) => /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between py-1", children: [
|
|
42280
42605
|
/* @__PURE__ */ jsx(Typography, { variant: "small", children: type }),
|
|
42281
|
-
/* @__PURE__ */ jsx(Badge, { variant: info.loaded ? "success" : "default", size: "sm", children: info.loaded ?
|
|
42606
|
+
/* @__PURE__ */ jsx(Badge, { variant: info.loaded ? "success" : "default", size: "sm", children: info.loaded ? t("debug.loadedCount", { count: info.count }) : t("debug.notLoaded") })
|
|
42282
42607
|
] }, type)) })
|
|
42283
42608
|
] })
|
|
42284
42609
|
] });
|
|
@@ -42322,7 +42647,7 @@ function EventFlowTab({ events: events2 }) {
|
|
|
42322
42647
|
EmptyState,
|
|
42323
42648
|
{
|
|
42324
42649
|
title: t("debug.noEventsYet"),
|
|
42325
|
-
description: "
|
|
42650
|
+
description: t("debug.eventsExecuteHint"),
|
|
42326
42651
|
className: "py-8"
|
|
42327
42652
|
}
|
|
42328
42653
|
);
|
|
@@ -42333,17 +42658,13 @@ function EventFlowTab({ events: events2 }) {
|
|
|
42333
42658
|
return /* @__PURE__ */ jsxs("div", { className: "debug-tab debug-tab--events", children: [
|
|
42334
42659
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 mb-3 flex-wrap", children: [
|
|
42335
42660
|
/* @__PURE__ */ jsxs(ButtonGroup, { children: [
|
|
42336
|
-
/* @__PURE__ */
|
|
42661
|
+
/* @__PURE__ */ jsx(
|
|
42337
42662
|
Button,
|
|
42338
42663
|
{
|
|
42339
42664
|
size: "sm",
|
|
42340
42665
|
variant: filter === "all" ? "primary" : "secondary",
|
|
42341
42666
|
onClick: () => setFilter("all"),
|
|
42342
|
-
children:
|
|
42343
|
-
"All (",
|
|
42344
|
-
events2.length,
|
|
42345
|
-
")"
|
|
42346
|
-
]
|
|
42667
|
+
children: t("debug.allCount", { count: events2.length })
|
|
42347
42668
|
}
|
|
42348
42669
|
),
|
|
42349
42670
|
eventTypes.map((type) => {
|
|
@@ -42373,7 +42694,7 @@ function EventFlowTab({ events: events2 }) {
|
|
|
42373
42694
|
onChange: (e) => setAutoScroll(e.target.checked)
|
|
42374
42695
|
}
|
|
42375
42696
|
),
|
|
42376
|
-
"
|
|
42697
|
+
t("debug.autoScroll")
|
|
42377
42698
|
] })
|
|
42378
42699
|
] }),
|
|
42379
42700
|
/* @__PURE__ */ jsx(
|
|
@@ -42431,7 +42752,7 @@ function GuardsPanel({ guards }) {
|
|
|
42431
42752
|
EmptyState,
|
|
42432
42753
|
{
|
|
42433
42754
|
title: t("debug.noGuardEvaluations"),
|
|
42434
|
-
description: "
|
|
42755
|
+
description: t("debug.guardEvaluationsHint"),
|
|
42435
42756
|
className: "py-8"
|
|
42436
42757
|
}
|
|
42437
42758
|
);
|
|
@@ -42462,15 +42783,15 @@ function GuardsPanel({ guards }) {
|
|
|
42462
42783
|
] }),
|
|
42463
42784
|
content: /* @__PURE__ */ jsxs(Stack, { gap: "sm", children: [
|
|
42464
42785
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
42465
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: "
|
|
42786
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: t("debug.expression") }),
|
|
42466
42787
|
/* @__PURE__ */ jsx("code", { className: "block mt-1 text-xs text-amber-600 dark:text-amber-400 bg-amber-50 dark:bg-amber-900/20 px-2 py-1 rounded", children: guard.expression })
|
|
42467
42788
|
] }),
|
|
42468
42789
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
42469
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: "
|
|
42790
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: t("debug.inputs") }),
|
|
42470
42791
|
/* @__PURE__ */ jsx("pre", { className: "mt-1 text-xs text-gray-600 dark:text-gray-400 bg-gray-50 dark:bg-gray-800 p-2 rounded overflow-auto max-h-24", children: JSON.stringify(guard.inputs, null, 2) })
|
|
42471
42792
|
] }),
|
|
42472
42793
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
42473
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: "
|
|
42794
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: t("debug.trait") }),
|
|
42474
42795
|
/* @__PURE__ */ jsx(Typography, { variant: "small", children: guard.context.traitName })
|
|
42475
42796
|
] })
|
|
42476
42797
|
] })
|
|
@@ -42488,9 +42809,9 @@ function GuardsPanel({ guards }) {
|
|
|
42488
42809
|
] })
|
|
42489
42810
|
] }),
|
|
42490
42811
|
/* @__PURE__ */ jsxs(ButtonGroup, { children: [
|
|
42491
|
-
/* @__PURE__ */ jsx(Button, { size: "sm", variant: filter === "all" ? "primary" : "secondary", onClick: () => setFilter("all"), children: "
|
|
42492
|
-
/* @__PURE__ */ jsx(Button, { size: "sm", variant: filter === "passed" ? "primary" : "secondary", onClick: () => setFilter("passed"), children: "
|
|
42493
|
-
/* @__PURE__ */ jsx(Button, { size: "sm", variant: filter === "failed" ? "primary" : "secondary", onClick: () => setFilter("failed"), children: "
|
|
42812
|
+
/* @__PURE__ */ jsx(Button, { size: "sm", variant: filter === "all" ? "primary" : "secondary", onClick: () => setFilter("all"), children: t("debug.filterAll") }),
|
|
42813
|
+
/* @__PURE__ */ jsx(Button, { size: "sm", variant: filter === "passed" ? "primary" : "secondary", onClick: () => setFilter("passed"), children: t("debug.filterPassed") }),
|
|
42814
|
+
/* @__PURE__ */ jsx(Button, { size: "sm", variant: filter === "failed" ? "primary" : "secondary", onClick: () => setFilter("failed"), children: t("debug.filterFailed") })
|
|
42494
42815
|
] })
|
|
42495
42816
|
] }),
|
|
42496
42817
|
/* @__PURE__ */ jsx("div", { className: "max-h-80 overflow-y-auto", children: /* @__PURE__ */ jsx(Accordion, { items: accordionItems }) })
|
|
@@ -42616,7 +42937,7 @@ function TransitionTimeline({ transitions }) {
|
|
|
42616
42937
|
EmptyState,
|
|
42617
42938
|
{
|
|
42618
42939
|
title: t("debug.noTransitionsRecorded"),
|
|
42619
|
-
description: "
|
|
42940
|
+
description: t("debug.transitionsProcessHint"),
|
|
42620
42941
|
className: "py-8"
|
|
42621
42942
|
}
|
|
42622
42943
|
);
|
|
@@ -42633,10 +42954,7 @@ function TransitionTimeline({ transitions }) {
|
|
|
42633
42954
|
const sorted = [...transitions].reverse();
|
|
42634
42955
|
return /* @__PURE__ */ jsxs("div", { className: "debug-tab debug-tab--timeline", children: [
|
|
42635
42956
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between mb-2", children: [
|
|
42636
|
-
/* @__PURE__ */
|
|
42637
|
-
transitions.length,
|
|
42638
|
-
" transitions recorded"
|
|
42639
|
-
] }),
|
|
42957
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-500", children: t("debug.transitionsRecorded", { count: transitions.length }) }),
|
|
42640
42958
|
/* @__PURE__ */ jsxs("label", { className: "flex items-center gap-1 text-xs text-gray-500 cursor-pointer", children: [
|
|
42641
42959
|
/* @__PURE__ */ jsx(
|
|
42642
42960
|
Checkbox,
|
|
@@ -42645,7 +42963,7 @@ function TransitionTimeline({ transitions }) {
|
|
|
42645
42963
|
onChange: (e) => setAutoScroll(e.target.checked)
|
|
42646
42964
|
}
|
|
42647
42965
|
),
|
|
42648
|
-
"
|
|
42966
|
+
t("debug.autoScroll")
|
|
42649
42967
|
] })
|
|
42650
42968
|
] }),
|
|
42651
42969
|
/* @__PURE__ */ jsx(
|
|
@@ -42688,15 +43006,13 @@ function TransitionTimeline({ transitions }) {
|
|
|
42688
43006
|
variant: trace.guardResult ? "success" : "danger",
|
|
42689
43007
|
size: "sm",
|
|
42690
43008
|
children: [
|
|
42691
|
-
"
|
|
43009
|
+
t("debug.guardLabel"),
|
|
43010
|
+
" ",
|
|
42692
43011
|
trace.guardResult ? "\u2713" : "\u2717"
|
|
42693
43012
|
]
|
|
42694
43013
|
}
|
|
42695
43014
|
),
|
|
42696
|
-
/* @__PURE__ */
|
|
42697
|
-
trace.effects.length,
|
|
42698
|
-
" effects"
|
|
42699
|
-
] })
|
|
43015
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-400 ml-auto", children: t("debug.effectsCount", { count: trace.effects.length }) })
|
|
42700
43016
|
] }),
|
|
42701
43017
|
isExpanded && trace.effects.length > 0 && /* @__PURE__ */ jsx("div", { className: "ml-2 mt-1 mb-2 pl-2 border-l border-gray-200 dark:border-gray-700 space-y-1", children: trace.effects.map((effect, eIdx) => /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1", children: [
|
|
42702
43018
|
/* @__PURE__ */ jsx(EffectBadge, { effect }),
|
|
@@ -42745,13 +43061,13 @@ function ServerBridgeTab({ bridge }) {
|
|
|
42745
43061
|
EmptyState,
|
|
42746
43062
|
{
|
|
42747
43063
|
title: t("debug.noBridgeData"),
|
|
42748
|
-
description: "
|
|
43064
|
+
description: t("debug.bridgeInitHint"),
|
|
42749
43065
|
className: "py-8"
|
|
42750
43066
|
}
|
|
42751
43067
|
);
|
|
42752
43068
|
}
|
|
42753
43069
|
const formatTime4 = (ts) => {
|
|
42754
|
-
if (ts === 0) return "
|
|
43070
|
+
if (ts === 0) return t("debug.never");
|
|
42755
43071
|
const d = new Date(ts);
|
|
42756
43072
|
return d.toLocaleTimeString("en-US", {
|
|
42757
43073
|
hour12: false,
|
|
@@ -42764,14 +43080,14 @@ function ServerBridgeTab({ bridge }) {
|
|
|
42764
43080
|
/* @__PURE__ */ jsxs(Card, { className: "p-3", children: [
|
|
42765
43081
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 mb-3", children: [
|
|
42766
43082
|
/* @__PURE__ */ jsx("div", { className: `w-3 h-3 rounded-full ${bridge.connected ? "bg-green-500 animate-pulse" : "bg-red-500"}` }),
|
|
42767
|
-
/* @__PURE__ */ jsx(Typography, { variant: "h6", children: bridge.connected ? "
|
|
43083
|
+
/* @__PURE__ */ jsx(Typography, { variant: "h6", children: bridge.connected ? t("debug.connected") : t("debug.disconnected") })
|
|
42768
43084
|
] }),
|
|
42769
43085
|
/* @__PURE__ */ jsxs(Stack, { gap: "xs", children: [
|
|
42770
43086
|
/* @__PURE__ */ jsx(
|
|
42771
43087
|
StatRow,
|
|
42772
43088
|
{
|
|
42773
43089
|
label: t("debug.status"),
|
|
42774
|
-
value: bridge.connected ? "
|
|
43090
|
+
value: bridge.connected ? t("debug.connected") : t("debug.disconnected"),
|
|
42775
43091
|
variant: bridge.connected ? "success" : "danger"
|
|
42776
43092
|
}
|
|
42777
43093
|
),
|
|
@@ -42799,13 +43115,10 @@ function ServerBridgeTab({ bridge }) {
|
|
|
42799
43115
|
] })
|
|
42800
43116
|
] }),
|
|
42801
43117
|
bridge.lastError && /* @__PURE__ */ jsxs(Card, { className: "p-3 border-red-200 dark:border-red-800 bg-red-50 dark:bg-red-950", children: [
|
|
42802
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "semibold", className: "text-red-600 dark:text-red-400 mb-1", children: "
|
|
43118
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "semibold", className: "text-red-600 dark:text-red-400 mb-1", children: t("debug.lastError") }),
|
|
42803
43119
|
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-red-500 font-mono break-all", children: bridge.lastError })
|
|
42804
43120
|
] }),
|
|
42805
|
-
bridge.connected && /* @__PURE__ */ jsx("div", { className: "text-center py-2", children: /* @__PURE__ */
|
|
42806
|
-
bridge.eventsForwarded + bridge.eventsReceived,
|
|
42807
|
-
" total events processed"
|
|
42808
|
-
] }) })
|
|
43121
|
+
bridge.connected && /* @__PURE__ */ jsx("div", { className: "text-center py-2", children: /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-400", children: t("debug.totalEventsProcessed", { count: bridge.eventsForwarded + bridge.eventsReceived }) }) })
|
|
42809
43122
|
] }) });
|
|
42810
43123
|
}
|
|
42811
43124
|
var init_ServerBridgeTab = __esm({
|
|
@@ -42915,7 +43228,7 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
42915
43228
|
EmptyState,
|
|
42916
43229
|
{
|
|
42917
43230
|
title: t("debug.noActiveTraits"),
|
|
42918
|
-
description: "
|
|
43231
|
+
description: t("debug.traitsInitHint"),
|
|
42919
43232
|
className: "py-8"
|
|
42920
43233
|
}
|
|
42921
43234
|
);
|
|
@@ -42932,7 +43245,7 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
42932
43245
|
};
|
|
42933
43246
|
return /* @__PURE__ */ jsxs("div", { className: "debug-tab debug-tab--dispatch", children: [
|
|
42934
43247
|
/* @__PURE__ */ jsxs("div", { className: "mb-3", children: [
|
|
42935
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
43248
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.activeStates") }),
|
|
42936
43249
|
/* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1", children: traits2.map((trait) => /* @__PURE__ */ jsxs(Badge, { variant: "success", size: "sm", children: [
|
|
42937
43250
|
trait.name,
|
|
42938
43251
|
": ",
|
|
@@ -42940,8 +43253,8 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
42940
43253
|
] }, trait.id)) })
|
|
42941
43254
|
] }),
|
|
42942
43255
|
/* @__PURE__ */ jsxs("div", { className: "mb-3", children: [
|
|
42943
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
42944
|
-
availableEvents.length === 0 ? /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-400 italic", children: "
|
|
43256
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.availableEvents") }),
|
|
43257
|
+
availableEvents.length === 0 ? /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-400 italic", children: t("debug.noTransitionsFromState") }) : /* @__PURE__ */ jsx(Stack, { gap: "xs", children: availableEvents.map(({ event, transitions }) => /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
42945
43258
|
/* @__PURE__ */ jsx(
|
|
42946
43259
|
Button,
|
|
42947
43260
|
{
|
|
@@ -42953,15 +43266,15 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
42953
43266
|
}
|
|
42954
43267
|
),
|
|
42955
43268
|
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-500", children: transitions.map((t2) => `${t2.from} -> ${t2.to}`).join(", ") }),
|
|
42956
|
-
transitions.some((
|
|
43269
|
+
transitions.some((tr) => tr.guard) && /* @__PURE__ */ jsx(Badge, { variant: "warning", size: "sm", children: t("debug.guarded") })
|
|
42957
43270
|
] }, event)) })
|
|
42958
43271
|
] }),
|
|
42959
43272
|
unavailableEvents.length > 0 && /* @__PURE__ */ jsxs("div", { className: "mb-3", children: [
|
|
42960
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
43273
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.otherEvents") }),
|
|
42961
43274
|
/* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1", children: unavailableEvents.map((event) => /* @__PURE__ */ jsx(Badge, { variant: "default", size: "sm", className: "opacity-50", children: event }, event)) })
|
|
42962
43275
|
] }),
|
|
42963
43276
|
log12.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
|
|
42964
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
43277
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.recentTransitions") }),
|
|
42965
43278
|
/* @__PURE__ */ jsx(Stack, { gap: "xs", children: log12.map((entry, i) => /* @__PURE__ */ jsxs(Typography, { variant: "small", className: "font-mono text-xs", children: [
|
|
42966
43279
|
/* @__PURE__ */ jsx("span", { className: "text-purple-400", children: entry.traitName }),
|
|
42967
43280
|
" ",
|
|
@@ -42992,21 +43305,20 @@ var init_RuntimeDebugger = __esm({
|
|
|
42992
43305
|
}
|
|
42993
43306
|
});
|
|
42994
43307
|
function ServerResponseRow({ sr }) {
|
|
43308
|
+
const { t } = useTranslate();
|
|
42995
43309
|
const entityEntries = Object.entries(sr.dataEntities);
|
|
42996
43310
|
return /* @__PURE__ */ jsxs("div", { className: "ml-4 pl-2 border-l border-purple-500/30 py-0.5 text-xs font-mono", children: [
|
|
42997
43311
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
42998
43312
|
/* @__PURE__ */ jsxs("span", { className: sr.success ? "text-green-600 dark:text-green-400" : "text-red-600 dark:text-red-400", children: [
|
|
42999
43313
|
sr.success ? "\u2713" : "\u2717",
|
|
43000
|
-
"
|
|
43314
|
+
" ",
|
|
43315
|
+
t("debug.server")
|
|
43001
43316
|
] }),
|
|
43002
43317
|
/* @__PURE__ */ jsx("span", { className: "text-purple-600 dark:text-purple-300", children: sr.orbitalName }),
|
|
43003
|
-
sr.clientEffects > 0 && /* @__PURE__ */
|
|
43004
|
-
sr.clientEffects,
|
|
43005
|
-
" clientEffect",
|
|
43006
|
-
sr.clientEffects !== 1 ? "s" : ""
|
|
43007
|
-
] }),
|
|
43318
|
+
sr.clientEffects > 0 && /* @__PURE__ */ jsx("span", { className: "px-1 rounded bg-purple-500/15 text-purple-600 dark:text-purple-300", children: t("debug.clientEffectsCount", { count: sr.clientEffects }) }),
|
|
43008
43319
|
sr.emittedEvents.length > 0 && /* @__PURE__ */ jsxs("span", { className: "px-1 rounded bg-blue-500/15 text-blue-300", children: [
|
|
43009
|
-
"
|
|
43320
|
+
t("debug.emitLabel"),
|
|
43321
|
+
" ",
|
|
43010
43322
|
sr.emittedEvents.join(", ")
|
|
43011
43323
|
] }),
|
|
43012
43324
|
sr.error && /* @__PURE__ */ jsx("span", { className: "px-1 rounded bg-red-500/15 text-red-600 dark:text-red-400 truncate max-w-[300px]", children: sr.error })
|
|
@@ -43014,13 +43326,12 @@ function ServerResponseRow({ sr }) {
|
|
|
43014
43326
|
entityEntries.length > 0 && /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1 mt-0.5", children: entityEntries.map(([name, count]) => /* @__PURE__ */ jsxs("span", { className: "px-1 rounded bg-[var(--color-card)] text-foreground", children: [
|
|
43015
43327
|
name,
|
|
43016
43328
|
": ",
|
|
43017
|
-
count
|
|
43018
|
-
" row",
|
|
43019
|
-
count !== 1 ? "s" : ""
|
|
43329
|
+
t("debug.rowsCount", { count })
|
|
43020
43330
|
] }, name)) })
|
|
43021
43331
|
] });
|
|
43022
43332
|
}
|
|
43023
43333
|
function TransitionRow({ trace }) {
|
|
43334
|
+
const { t } = useTranslate();
|
|
43024
43335
|
const isServerEntry = !!trace.serverResponse && trace.traitName.startsWith("server:");
|
|
43025
43336
|
const hasFailedEffects = trace.effects.some((e) => e.status === "failed");
|
|
43026
43337
|
if (isServerEntry && trace.serverResponse) {
|
|
@@ -43028,7 +43339,7 @@ function TransitionRow({ trace }) {
|
|
|
43028
43339
|
/* @__PURE__ */ jsxs("div", { className: "flex items-start gap-2 text-xs font-mono", children: [
|
|
43029
43340
|
/* @__PURE__ */ jsx("span", { className: "mt-1.5 w-1.5 h-1.5 rounded-full flex-shrink-0 bg-purple-500" }),
|
|
43030
43341
|
/* @__PURE__ */ jsx(Badge, { variant: "warning", size: "sm", className: "flex-shrink-0", children: trace.event }),
|
|
43031
|
-
/* @__PURE__ */ jsx("span", { className: "text-purple-600 dark:text-purple-400 flex-shrink-0", children: "
|
|
43342
|
+
/* @__PURE__ */ jsx("span", { className: "text-purple-600 dark:text-purple-400 flex-shrink-0", children: t("debug.serverResponse") })
|
|
43032
43343
|
] }),
|
|
43033
43344
|
/* @__PURE__ */ jsx(ServerResponseRow, { sr: trace.serverResponse })
|
|
43034
43345
|
] });
|
|
@@ -43069,6 +43380,7 @@ function VerifyModePanel({
|
|
|
43069
43380
|
serverCount,
|
|
43070
43381
|
localCount
|
|
43071
43382
|
}) {
|
|
43383
|
+
const { t } = useTranslate();
|
|
43072
43384
|
const [expanded, setExpanded] = React84.useState(true);
|
|
43073
43385
|
const scrollRef = React84.useRef(null);
|
|
43074
43386
|
const prevCountRef = React84.useRef(0);
|
|
@@ -43099,30 +43411,20 @@ function VerifyModePanel({
|
|
|
43099
43411
|
onClick: () => setExpanded((v) => !v),
|
|
43100
43412
|
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",
|
|
43101
43413
|
"aria-expanded": expanded,
|
|
43102
|
-
"aria-label": expanded ? "
|
|
43414
|
+
"aria-label": expanded ? t("debug.collapseVerificationTimeline") : t("debug.expandVerificationTimeline"),
|
|
43103
43415
|
"data-testid": "debugger-verify-toggle",
|
|
43104
43416
|
children: [
|
|
43105
43417
|
/* @__PURE__ */ jsx("span", { className: "text-foreground/50 w-3", "aria-hidden": true, children: expanded ? "\u25BE" : "\u25B8" }),
|
|
43106
|
-
/* @__PURE__ */ jsx(Badge, { variant: failedChecks > 0 ? "danger" : "success", size: "sm", children: failedChecks > 0 ?
|
|
43107
|
-
/* @__PURE__ */
|
|
43108
|
-
|
|
43109
|
-
" local"
|
|
43110
|
-
] }),
|
|
43111
|
-
/* @__PURE__ */ jsxs("span", { className: "text-purple-600 dark:text-purple-400", children: [
|
|
43112
|
-
serverCount,
|
|
43113
|
-
" server"
|
|
43114
|
-
] }),
|
|
43418
|
+
/* @__PURE__ */ jsx(Badge, { variant: failedChecks > 0 ? "danger" : "success", size: "sm", children: failedChecks > 0 ? t("debug.failCount", { count: failedChecks }) : t("debug.ok") }),
|
|
43419
|
+
/* @__PURE__ */ jsx("span", { className: "text-foreground/70", children: t("debug.localCount", { count: localCount }) }),
|
|
43420
|
+
/* @__PURE__ */ jsx("span", { className: "text-purple-600 dark:text-purple-400", children: t("debug.serverCount", { count: serverCount }) }),
|
|
43115
43421
|
traitStates && /* @__PURE__ */ jsx("span", { className: "text-cyan-600 dark:text-cyan-400 truncate max-w-[400px]", children: traitStates }),
|
|
43116
|
-
!expanded && transitions.length > 0 && /* @__PURE__ */
|
|
43117
|
-
transitions.length,
|
|
43118
|
-
" transition",
|
|
43119
|
-
transitions.length !== 1 ? "s" : ""
|
|
43120
|
-
] })
|
|
43422
|
+
!expanded && transitions.length > 0 && /* @__PURE__ */ jsx("span", { className: "ml-auto text-foreground/50", children: t("debug.transitionsCount", { count: transitions.length }) })
|
|
43121
43423
|
]
|
|
43122
43424
|
}
|
|
43123
43425
|
),
|
|
43124
43426
|
expanded && /* @__PURE__ */ jsxs("div", { className: "flex-1 flex overflow-hidden", children: [
|
|
43125
|
-
/* @__PURE__ */ jsx("div", { ref: scrollRef, className: "flex-1 overflow-y-auto", children: /* @__PURE__ */ jsx("div", { className: "px-2 py-1", children: transitions.length === 0 ? /* @__PURE__ */ jsx("div", { className: "text-foreground/50 text-xs font-mono py-2 text-center", children: "
|
|
43427
|
+
/* @__PURE__ */ jsx("div", { ref: scrollRef, className: "flex-1 overflow-y-auto", children: /* @__PURE__ */ jsx("div", { className: "px-2 py-1", children: transitions.length === 0 ? /* @__PURE__ */ jsx("div", { className: "text-foreground/50 text-xs font-mono py-2 text-center", children: t("debug.waitingForTransitions") }) : /* @__PURE__ */ jsx("div", { className: "space-y-0.5", children: transitions.map((trace) => /* @__PURE__ */ jsx(TransitionRow, { trace }, trace.id)) }) }) }),
|
|
43126
43428
|
/* @__PURE__ */ jsx(WalkMinimap, {})
|
|
43127
43429
|
] })
|
|
43128
43430
|
]
|
|
@@ -43138,6 +43440,7 @@ function RuntimeDebugger({
|
|
|
43138
43440
|
defaultTab,
|
|
43139
43441
|
schema
|
|
43140
43442
|
}) {
|
|
43443
|
+
const { t } = useTranslate();
|
|
43141
43444
|
const [isCollapsed, setIsCollapsed] = React84.useState(mode === "verify" ? true : defaultCollapsed);
|
|
43142
43445
|
const [isVisible, setIsVisible] = React84.useState(mode === "inline" || mode === "verify" || isDebugEnabled2());
|
|
43143
43446
|
const debugData = useDebugData();
|
|
@@ -43176,55 +43479,55 @@ function RuntimeDebugger({
|
|
|
43176
43479
|
const tabItems = [
|
|
43177
43480
|
{
|
|
43178
43481
|
id: "dispatch",
|
|
43179
|
-
label: "
|
|
43482
|
+
label: t("debug.tabDispatch"),
|
|
43180
43483
|
badge: debugData.traits.length || void 0,
|
|
43181
43484
|
content: /* @__PURE__ */ jsx(EventDispatcherTab, { traits: debugData.traits, schema })
|
|
43182
43485
|
},
|
|
43183
43486
|
{
|
|
43184
43487
|
id: "verify",
|
|
43185
|
-
label: failedChecks > 0 ? "
|
|
43488
|
+
label: failedChecks > 0 ? t("debug.tabVerifyAlert") : t("debug.tabVerify"),
|
|
43186
43489
|
badge: verification.summary.totalChecks || void 0,
|
|
43187
43490
|
content: /* @__PURE__ */ jsx(VerificationTab, { checks: verification.checks, summary: verification.summary })
|
|
43188
43491
|
},
|
|
43189
43492
|
{
|
|
43190
43493
|
id: "timeline",
|
|
43191
|
-
label: "
|
|
43494
|
+
label: t("debug.tabTimeline"),
|
|
43192
43495
|
badge: verification.transitions.length || void 0,
|
|
43193
43496
|
content: /* @__PURE__ */ jsx(TransitionTimeline, { transitions: verification.transitions })
|
|
43194
43497
|
},
|
|
43195
43498
|
{
|
|
43196
43499
|
id: "bridge",
|
|
43197
|
-
label: "
|
|
43500
|
+
label: t("debug.tabBridge"),
|
|
43198
43501
|
badge: verification.bridge?.connected ? void 0 : 1,
|
|
43199
43502
|
content: /* @__PURE__ */ jsx(ServerBridgeTab, { bridge: verification.bridge })
|
|
43200
43503
|
},
|
|
43201
43504
|
{
|
|
43202
43505
|
id: "traits",
|
|
43203
|
-
label: "
|
|
43506
|
+
label: t("debug.tabTraits"),
|
|
43204
43507
|
badge: debugData.traits.length || void 0,
|
|
43205
43508
|
content: /* @__PURE__ */ jsx(TraitsTab, { traits: debugData.traits })
|
|
43206
43509
|
},
|
|
43207
43510
|
{
|
|
43208
43511
|
id: "ticks",
|
|
43209
|
-
label: "
|
|
43210
|
-
badge: debugData.ticks.filter((
|
|
43512
|
+
label: t("debug.tabTicks"),
|
|
43513
|
+
badge: debugData.ticks.filter((tick) => tick.active).length || void 0,
|
|
43211
43514
|
content: /* @__PURE__ */ jsx(TicksTab, { ticks: debugData.ticks })
|
|
43212
43515
|
},
|
|
43213
43516
|
{
|
|
43214
43517
|
id: "entities",
|
|
43215
|
-
label: "
|
|
43518
|
+
label: t("debug.tabEntities"),
|
|
43216
43519
|
badge: debugData.entitySnapshot?.runtime.length || void 0,
|
|
43217
43520
|
content: /* @__PURE__ */ jsx(EntitiesTab, { snapshot: debugData.entitySnapshot })
|
|
43218
43521
|
},
|
|
43219
43522
|
{
|
|
43220
43523
|
id: "events",
|
|
43221
|
-
label: "
|
|
43524
|
+
label: t("debug.tabEvents"),
|
|
43222
43525
|
badge: debugData.events.length > 0 ? debugData.events.length : void 0,
|
|
43223
43526
|
content: /* @__PURE__ */ jsx(EventFlowTab, { events: debugData.events })
|
|
43224
43527
|
},
|
|
43225
43528
|
{
|
|
43226
43529
|
id: "guards",
|
|
43227
|
-
label: "
|
|
43530
|
+
label: t("debug.tabGuards"),
|
|
43228
43531
|
badge: debugData.guards.filter((g) => !g.result).length || void 0,
|
|
43229
43532
|
content: /* @__PURE__ */ jsx(GuardsPanel, { guards: debugData.guards })
|
|
43230
43533
|
}
|
|
@@ -43252,15 +43555,10 @@ function RuntimeDebugger({
|
|
|
43252
43555
|
children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
43253
43556
|
/* @__PURE__ */ jsxs(Typography, { variant: "h6", style: { fontSize: "0.75rem" }, children: [
|
|
43254
43557
|
isCollapsed ? "\u25B6" : "\u25BC",
|
|
43255
|
-
"
|
|
43558
|
+
" ",
|
|
43559
|
+
t("debug.debugger")
|
|
43256
43560
|
] }),
|
|
43257
|
-
failedChecks > 0 ? /* @__PURE__ */
|
|
43258
|
-
failedChecks,
|
|
43259
|
-
" failed"
|
|
43260
|
-
] }) : debugData.traits.length > 0 ? /* @__PURE__ */ jsxs(Badge, { variant: "success", size: "sm", children: [
|
|
43261
|
-
debugData.traits.length,
|
|
43262
|
-
" traits"
|
|
43263
|
-
] }) : /* @__PURE__ */ jsx(Badge, { variant: "info", size: "sm", children: "Idle" })
|
|
43561
|
+
failedChecks > 0 ? /* @__PURE__ */ jsx(Badge, { variant: "danger", size: "sm", children: t("debug.failedCount", { count: failedChecks }) }) : debugData.traits.length > 0 ? /* @__PURE__ */ jsx(Badge, { variant: "success", size: "sm", children: t("debug.traitsCount", { count: debugData.traits.length }) }) : /* @__PURE__ */ jsx(Badge, { variant: "info", size: "sm", children: t("debug.idle") })
|
|
43264
43562
|
] })
|
|
43265
43563
|
}
|
|
43266
43564
|
),
|
|
@@ -43278,9 +43576,9 @@ function RuntimeDebugger({
|
|
|
43278
43576
|
);
|
|
43279
43577
|
}
|
|
43280
43578
|
if (mode === "verify") {
|
|
43281
|
-
const traitStates = debugData.traits.map((
|
|
43282
|
-
const serverEntries = verification.transitions.filter((
|
|
43283
|
-
const localEntries = verification.transitions.filter((
|
|
43579
|
+
const traitStates = debugData.traits.map((t2) => `${t2.name}:${t2.currentState}`).join(" | ");
|
|
43580
|
+
const serverEntries = verification.transitions.filter((t2) => t2.serverResponse);
|
|
43581
|
+
const localEntries = verification.transitions.filter((t2) => !t2.serverResponse);
|
|
43284
43582
|
return /* @__PURE__ */ jsx(
|
|
43285
43583
|
VerifyModePanel,
|
|
43286
43584
|
{
|
|
@@ -43312,7 +43610,7 @@ function RuntimeDebugger({
|
|
|
43312
43610
|
variant: "secondary",
|
|
43313
43611
|
size: "sm",
|
|
43314
43612
|
className: "runtime-debugger__toggle",
|
|
43315
|
-
title: "
|
|
43613
|
+
title: t("debug.openDebugger"),
|
|
43316
43614
|
children: failedChecks > 0 ? /* @__PURE__ */ jsxs("span", { className: "relative", children: [
|
|
43317
43615
|
/* @__PURE__ */ jsx("span", { children: "V" }),
|
|
43318
43616
|
/* @__PURE__ */ jsx("span", { className: "absolute -top-1 -right-2 w-2 h-2 bg-red-500 rounded-full" })
|
|
@@ -43322,11 +43620,8 @@ function RuntimeDebugger({
|
|
|
43322
43620
|
/* @__PURE__ */ jsxs("div", { className: "runtime-debugger__header", children: [
|
|
43323
43621
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
43324
43622
|
/* @__PURE__ */ jsx("span", { className: "text-lg", children: "V" }),
|
|
43325
|
-
/* @__PURE__ */ jsx(Typography, { variant: "h6", children: "
|
|
43326
|
-
failedChecks > 0 ? /* @__PURE__ */
|
|
43327
|
-
failedChecks,
|
|
43328
|
-
" failed"
|
|
43329
|
-
] }) : verification.summary.totalChecks > 0 ? /* @__PURE__ */ jsx(Badge, { variant: "success", size: "sm", children: "All passing" }) : /* @__PURE__ */ jsx(Badge, { variant: "info", size: "sm", children: "Runtime" })
|
|
43623
|
+
/* @__PURE__ */ jsx(Typography, { variant: "h6", children: t("debug.kflowVerifier") }),
|
|
43624
|
+
failedChecks > 0 ? /* @__PURE__ */ jsx(Badge, { variant: "danger", size: "sm", children: t("debug.failedCount", { count: failedChecks }) }) : verification.summary.totalChecks > 0 ? /* @__PURE__ */ jsx(Badge, { variant: "success", size: "sm", children: t("debug.allPassing") }) : /* @__PURE__ */ jsx(Badge, { variant: "info", size: "sm", children: t("debug.runtime") })
|
|
43330
43625
|
] }),
|
|
43331
43626
|
/* @__PURE__ */ jsx(
|
|
43332
43627
|
Button,
|
|
@@ -43334,7 +43629,7 @@ function RuntimeDebugger({
|
|
|
43334
43629
|
onClick: () => setIsCollapsed(true),
|
|
43335
43630
|
variant: "ghost",
|
|
43336
43631
|
size: "sm",
|
|
43337
|
-
title: "
|
|
43632
|
+
title: t("debug.close"),
|
|
43338
43633
|
children: "x"
|
|
43339
43634
|
}
|
|
43340
43635
|
)
|
|
@@ -43348,7 +43643,7 @@ function RuntimeDebugger({
|
|
|
43348
43643
|
className: "runtime-debugger__tabs"
|
|
43349
43644
|
}
|
|
43350
43645
|
) }),
|
|
43351
|
-
/* @__PURE__ */ jsx("div", { className: "runtime-debugger__footer", children: /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-foreground/50", children: "
|
|
43646
|
+
/* @__PURE__ */ jsx("div", { className: "runtime-debugger__footer", children: /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-foreground/50", children: t("debug.toggleHint") }) })
|
|
43352
43647
|
] })
|
|
43353
43648
|
}
|
|
43354
43649
|
);
|
|
@@ -43374,6 +43669,7 @@ var init_RuntimeDebugger2 = __esm({
|
|
|
43374
43669
|
init_TransitionTimeline();
|
|
43375
43670
|
init_ServerBridgeTab();
|
|
43376
43671
|
init_EventDispatcherTab();
|
|
43672
|
+
init_useTranslate();
|
|
43377
43673
|
init_RuntimeDebugger();
|
|
43378
43674
|
RuntimeDebugger.displayName = "RuntimeDebugger";
|
|
43379
43675
|
}
|
|
@@ -44662,7 +44958,7 @@ var init_StatCard = __esm({
|
|
|
44662
44958
|
}
|
|
44663
44959
|
);
|
|
44664
44960
|
}
|
|
44665
|
-
const label = schemaStats?.[0]?.label || labelToUse || "
|
|
44961
|
+
const label = schemaStats?.[0]?.label || labelToUse || t("statCard.defaultLabel");
|
|
44666
44962
|
const normalizedPropValue = Array.isArray(propValue) ? propValue[0] ?? propValue.length : propValue;
|
|
44667
44963
|
const value = schemaStats?.[0]?.value ?? normalizedPropValue ?? 0;
|
|
44668
44964
|
const trendDirection = manualDirection || (calculatedTrend === void 0 || calculatedTrend === 0 ? "neutral" : calculatedTrend > 0 ? "up" : "down");
|
|
@@ -44705,7 +45001,7 @@ var init_StatCard = __esm({
|
|
|
44705
45001
|
]
|
|
44706
45002
|
}
|
|
44707
45003
|
),
|
|
44708
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", color: "secondary", as: "span", children: "
|
|
45004
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", color: "secondary", as: "span", children: t("statCard.vsLastPeriod") })
|
|
44709
45005
|
] }),
|
|
44710
45006
|
subtitle && !calculatedTrend && /* @__PURE__ */ jsx(Typography, { variant: "small", color: "secondary", children: subtitle })
|
|
44711
45007
|
] }),
|