@almadar/ui 5.21.7 → 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 +970 -650
- package/dist/avl/index.js +970 -650
- 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 +675 -370
- package/dist/components/index.js +675 -370
- 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 +675 -370
- package/dist/providers/index.js +675 -370
- package/dist/runtime/index.cjs +675 -370
- package/dist/runtime/index.js +675 -370
- 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.cjs
CHANGED
|
@@ -347,7 +347,10 @@ var en_default;
|
|
|
347
347
|
var init_en = __esm({
|
|
348
348
|
"locales/en.json"() {
|
|
349
349
|
en_default = {
|
|
350
|
-
$meta: {
|
|
350
|
+
$meta: {
|
|
351
|
+
locale: "en",
|
|
352
|
+
direction: "ltr"
|
|
353
|
+
},
|
|
351
354
|
"common.save": "Save",
|
|
352
355
|
"common.cancel": "Cancel",
|
|
353
356
|
"common.delete": "Delete",
|
|
@@ -489,7 +492,6 @@ var init_en = __esm({
|
|
|
489
492
|
"error.somethingWentWrong": "Something went wrong",
|
|
490
493
|
"error.loadingItems": "Loading items...",
|
|
491
494
|
"error.noItemsFound": "No items found",
|
|
492
|
-
"error.notFound": "Not found",
|
|
493
495
|
"debug.noEntityData": "No entity data",
|
|
494
496
|
"debug.noEntities": "No entities",
|
|
495
497
|
"debug.noTicks": "No ticks registered",
|
|
@@ -521,7 +523,298 @@ var init_en = __esm({
|
|
|
521
523
|
"template.showcase": "Showcase",
|
|
522
524
|
"template.faq": "Frequently Asked Questions",
|
|
523
525
|
"template.ourTeam": "Our Team",
|
|
524
|
-
"template.caseStudies": "Case Studies"
|
|
526
|
+
"template.caseStudies": "Case Studies",
|
|
527
|
+
"richBlockEditor.toolbar.text": "Text",
|
|
528
|
+
"richBlockEditor.toolbar.h1": "H1",
|
|
529
|
+
"richBlockEditor.toolbar.h2": "H2",
|
|
530
|
+
"richBlockEditor.toolbar.h3": "H3",
|
|
531
|
+
"richBlockEditor.toolbar.bulletList": "Bullet list",
|
|
532
|
+
"richBlockEditor.toolbar.numbered": "Numbered",
|
|
533
|
+
"richBlockEditor.toolbar.quote": "Quote",
|
|
534
|
+
"richBlockEditor.toolbar.code": "Code",
|
|
535
|
+
"richBlockEditor.toolbar.divider": "Divider",
|
|
536
|
+
"richBlockEditor.toolbar.image": "Image",
|
|
537
|
+
"richBlockEditor.blockType.paragraph": "Text",
|
|
538
|
+
"richBlockEditor.blockType.heading1": "Heading 1",
|
|
539
|
+
"richBlockEditor.blockType.heading2": "Heading 2",
|
|
540
|
+
"richBlockEditor.blockType.heading3": "Heading 3",
|
|
541
|
+
"richBlockEditor.blockType.bulletList": "Bullet list",
|
|
542
|
+
"richBlockEditor.blockType.numberedList": "Numbered list",
|
|
543
|
+
"richBlockEditor.blockType.quote": "Quote",
|
|
544
|
+
"richBlockEditor.blockType.code": "Code",
|
|
545
|
+
"richBlockEditor.blockType.divider": "Divider",
|
|
546
|
+
"richBlockEditor.blockType.image": "Image",
|
|
547
|
+
"richBlockEditor.blockActions": "Block actions",
|
|
548
|
+
"richBlockEditor.duplicate": "Duplicate",
|
|
549
|
+
"richBlockEditor.turnInto": "Turn into",
|
|
550
|
+
"richBlockEditor.placeholder.heading1": "Heading 1",
|
|
551
|
+
"richBlockEditor.placeholder.heading2": "Heading 2",
|
|
552
|
+
"richBlockEditor.placeholder.heading3": "Heading 3",
|
|
553
|
+
"richBlockEditor.placeholder.quote": "Quote",
|
|
554
|
+
"richBlockEditor.placeholder.code": "Enter code",
|
|
555
|
+
"richBlockEditor.placeholder.paragraph": "Start writing...",
|
|
556
|
+
"richBlockEditor.placeholder.listItem": "List item",
|
|
557
|
+
"richBlockEditor.placeholder.caption": "Caption (optional)",
|
|
558
|
+
"richBlockEditor.aria.heading1Block": "Heading 1 block",
|
|
559
|
+
"richBlockEditor.aria.heading2Block": "Heading 2 block",
|
|
560
|
+
"richBlockEditor.aria.heading3Block": "Heading 3 block",
|
|
561
|
+
"richBlockEditor.aria.quoteBlock": "Quote block",
|
|
562
|
+
"richBlockEditor.aria.codeBlock": "Code block",
|
|
563
|
+
"richBlockEditor.aria.codeLanguage": "Code language",
|
|
564
|
+
"richBlockEditor.aria.imageUrl": "Image URL",
|
|
565
|
+
"richBlockEditor.aria.imageCaption": "Image caption",
|
|
566
|
+
"richBlockEditor.aria.listItem": "List item",
|
|
567
|
+
"richBlockEditor.aria.removeListItem": "Remove list item",
|
|
568
|
+
"richBlockEditor.aria.paragraphBlock": "Paragraph block",
|
|
569
|
+
"richBlockEditor.embeddedImage": "Embedded image",
|
|
570
|
+
"richBlockEditor.noImageUrl": "No image URL set",
|
|
571
|
+
"richBlockEditor.addItem": "Add item",
|
|
572
|
+
"richBlockEditor.insertParagraphBelow": "Insert paragraph below",
|
|
573
|
+
"richBlockEditor.editorToolbar": "Block editor toolbar",
|
|
574
|
+
"richBlockEditor.insertEntry": "Insert {{label}}",
|
|
575
|
+
"versionDiff.compare": "Compare",
|
|
576
|
+
"versionDiff.to": "to",
|
|
577
|
+
"versionDiff.beforeRevision": "Before revision",
|
|
578
|
+
"versionDiff.afterRevision": "After revision",
|
|
579
|
+
"versionDiff.switchToInline": "Switch to inline view",
|
|
580
|
+
"versionDiff.switchToSideBySide": "Switch to side-by-side view",
|
|
581
|
+
"versionDiff.revert": "Revert",
|
|
582
|
+
"versionDiff.byAuthor": " by {{author}}",
|
|
583
|
+
"violationAlert.actionType.measure": "Corrective Measure",
|
|
584
|
+
"violationAlert.actionType.admin": "Administrative Action",
|
|
585
|
+
"violationAlert.actionType.penalty": "Penalty Proceedings",
|
|
586
|
+
"violationAlert.fallbackMessage": "Violation",
|
|
587
|
+
"violationAlert.adminLabel": "Admin:",
|
|
588
|
+
"violationAlert.penaltyLabel": "Penalty:",
|
|
589
|
+
"violationAlert.goToField": "Go to field",
|
|
590
|
+
"branchingLogic.title": "Branching logic",
|
|
591
|
+
"branchingLogic.if": "If",
|
|
592
|
+
"branchingLogic.goTo": "go to",
|
|
593
|
+
"branchingLogic.rules": "Rules",
|
|
594
|
+
"branchingLogic.logicGraph": "Logic graph",
|
|
595
|
+
"branchingLogic.addRule": "Add rule",
|
|
596
|
+
"branchingLogic.deleteRule": "Delete rule",
|
|
597
|
+
"branchingLogic.endOfSurvey": "End of survey",
|
|
598
|
+
"branchingLogic.brokenReference": "Broken reference",
|
|
599
|
+
"branchingLogic.selectQuestion": "Select question",
|
|
600
|
+
"branchingLogic.selectTarget": "Select target",
|
|
601
|
+
"branchingLogic.selectValue": "Select value",
|
|
602
|
+
"branchingLogic.addValue": "Add value",
|
|
603
|
+
"branchingLogic.value": "Value",
|
|
604
|
+
"branchingLogic.typeValuePressEnter": "Type value, press Enter",
|
|
605
|
+
"branchingLogic.operatorEquals": "equals",
|
|
606
|
+
"branchingLogic.operatorNotEquals": "does not equal",
|
|
607
|
+
"branchingLogic.operatorContains": "contains",
|
|
608
|
+
"branchingLogic.operatorIn": "is one of",
|
|
609
|
+
"branchingLogic.graphAriaLabel": "Branching logic graph",
|
|
610
|
+
"branchingLogic.ruleCountOne": "{{count}} rule",
|
|
611
|
+
"branchingLogic.ruleCountOther": "{{count}} rules",
|
|
612
|
+
"branchingLogic.brokenCount": "{{count}} broken",
|
|
613
|
+
"branchingLogic.emptyNoQuestions": "Add questions before building branching rules.",
|
|
614
|
+
"branchingLogic.emptyNoRules": "No rules yet. Add a rule to define branching logic.",
|
|
615
|
+
"filterGroup.filters": "Filters",
|
|
616
|
+
"filterGroup.all": "All",
|
|
617
|
+
"filterGroup.clear": "Clear",
|
|
618
|
+
"filterGroup.clearAll": "Clear all",
|
|
619
|
+
"filterGroup.from": "From",
|
|
620
|
+
"filterGroup.to": "To",
|
|
621
|
+
"filterGroup.allOf": "All {{label}}",
|
|
622
|
+
"filterGroup.activeCount": "{{count}} active",
|
|
623
|
+
"debug.guardEvaluationsHint": "Guard evaluations will appear when transitions or ticks with guards execute",
|
|
624
|
+
"debug.expression": "Expression",
|
|
625
|
+
"debug.inputs": "Inputs",
|
|
626
|
+
"debug.trait": "Trait",
|
|
627
|
+
"debug.filterAll": "All",
|
|
628
|
+
"debug.filterPassed": "Passed",
|
|
629
|
+
"debug.filterFailed": "Failed",
|
|
630
|
+
"debug.traitsInitHint": "Traits will appear when the state machine initializes",
|
|
631
|
+
"debug.traitsMountHint": "Traits will appear when components using them are mounted",
|
|
632
|
+
"debug.activeStates": "Active States",
|
|
633
|
+
"debug.availableEvents": "Available Events",
|
|
634
|
+
"debug.noTransitionsFromState": "No transitions from current state",
|
|
635
|
+
"debug.guarded": "guarded",
|
|
636
|
+
"debug.otherEvents": "Other Events (not available from current state)",
|
|
637
|
+
"debug.recentTransitions": "Recent Transitions",
|
|
638
|
+
"debug.transitionsCount": "{{count}} transitions",
|
|
639
|
+
"debug.states": "States",
|
|
640
|
+
"debug.transitions": "Transitions",
|
|
641
|
+
"debug.guards": "Guards",
|
|
642
|
+
"debug.debugModeHint": "Debug mode may not be enabled",
|
|
643
|
+
"debug.entitiesSpawnHint": "Entities will appear when spawned",
|
|
644
|
+
"debug.singleton": "Singleton",
|
|
645
|
+
"debug.singletonsCount": "Singletons ({{count}})",
|
|
646
|
+
"debug.runtimeCount": "Runtime ({{count}})",
|
|
647
|
+
"debug.moreEntities": "+{{count}} more entities",
|
|
648
|
+
"debug.persistent": "Persistent",
|
|
649
|
+
"debug.loadedCount": "{{count}} loaded",
|
|
650
|
+
"debug.notLoaded": "not loaded",
|
|
651
|
+
"debug.eventsExecuteHint": "Events will appear as traits, ticks, and other systems execute",
|
|
652
|
+
"debug.allCount": "All ({{count}})",
|
|
653
|
+
"debug.autoScroll": "Auto-scroll",
|
|
654
|
+
"debug.transitionsProcessHint": "Transitions will appear as the state machine processes events",
|
|
655
|
+
"debug.transitionsRecorded": "{{count}} transitions recorded",
|
|
656
|
+
"debug.guardLabel": "guard:",
|
|
657
|
+
"debug.effectsCount": "{{count}} effects",
|
|
658
|
+
"debug.bridgeInitHint": "The ServerBridge has not been initialized. Bridge health will appear once the runtime connects to the server.",
|
|
659
|
+
"debug.never": "Never",
|
|
660
|
+
"debug.connected": "Connected",
|
|
661
|
+
"debug.disconnected": "Disconnected",
|
|
662
|
+
"debug.lastError": "Last Error",
|
|
663
|
+
"debug.totalEventsProcessed": "{{count}} total events processed",
|
|
664
|
+
"debug.server": "server",
|
|
665
|
+
"debug.clientEffectsCount": "{{count}} clientEffects",
|
|
666
|
+
"debug.emitLabel": "emit:",
|
|
667
|
+
"debug.rowsCount": "{{count}} rows",
|
|
668
|
+
"debug.serverResponse": "server response",
|
|
669
|
+
"debug.collapseVerificationTimeline": "Collapse verification timeline",
|
|
670
|
+
"debug.expandVerificationTimeline": "Expand verification timeline",
|
|
671
|
+
"debug.failCount": "{{count}} fail",
|
|
672
|
+
"debug.ok": "OK",
|
|
673
|
+
"debug.localCount": "{{count}} local",
|
|
674
|
+
"debug.serverCount": "{{count}} server",
|
|
675
|
+
"debug.waitingForTransitions": "Waiting for transitions...",
|
|
676
|
+
"debug.tabDispatch": "Dispatch",
|
|
677
|
+
"debug.tabVerify": "Verify",
|
|
678
|
+
"debug.tabVerifyAlert": "Verify (!)",
|
|
679
|
+
"debug.tabTimeline": "Timeline",
|
|
680
|
+
"debug.tabBridge": "Bridge",
|
|
681
|
+
"debug.tabTraits": "Traits",
|
|
682
|
+
"debug.tabTicks": "Ticks",
|
|
683
|
+
"debug.tabEntities": "Entities",
|
|
684
|
+
"debug.tabEvents": "Events",
|
|
685
|
+
"debug.tabGuards": "Guards",
|
|
686
|
+
"debug.debugger": "Debugger",
|
|
687
|
+
"debug.failedCount": "{{count}} failed",
|
|
688
|
+
"debug.traitsCount": "{{count}} traits",
|
|
689
|
+
"debug.idle": "Idle",
|
|
690
|
+
"debug.openDebugger": "Open Debugger (`)",
|
|
691
|
+
"debug.kflowVerifier": "KFlow Verifier",
|
|
692
|
+
"debug.allPassing": "All passing",
|
|
693
|
+
"debug.runtime": "Runtime",
|
|
694
|
+
"debug.close": "Close (`)",
|
|
695
|
+
"debug.toggleHint": "Press ` to toggle | window.__orbitalVerification for automation",
|
|
696
|
+
"replyTree.expandReplies": "Expand replies",
|
|
697
|
+
"replyTree.collapseReplies": "Collapse replies",
|
|
698
|
+
"replyTree.voteOnReplyBy": "Vote on reply by {{author}}",
|
|
699
|
+
"replyTree.replyTo": "Reply to {{author}}",
|
|
700
|
+
"replyTree.replyToPlaceholder": "Reply to {{author}}\u2026",
|
|
701
|
+
"replyTree.reply": "Reply",
|
|
702
|
+
"replyTree.flagReplyBy": "Flag reply by {{author}}",
|
|
703
|
+
"replyTree.flag": "Flag",
|
|
704
|
+
"replyTree.send": "Send",
|
|
705
|
+
"replyTree.continueThread": "Continue thread",
|
|
706
|
+
"replyTree.noRepliesYet": "No replies yet.",
|
|
707
|
+
"signaturePad.label": "Signature",
|
|
708
|
+
"signaturePad.helperText": "Draw your signature above",
|
|
709
|
+
"signaturePad.clear": "Clear",
|
|
710
|
+
"signaturePad.confirm": "Confirm",
|
|
711
|
+
"qrScanner.cameraUnavailable": "Camera unavailable",
|
|
712
|
+
"qrScanner.paused": "Paused",
|
|
713
|
+
"qrScanner.resumeScanning": "Resume scanning",
|
|
714
|
+
"qrScanner.pauseScanning": "Pause scanning",
|
|
715
|
+
"qrScanner.switchToFrontCamera": "Switch to front camera",
|
|
716
|
+
"qrScanner.switchToRearCamera": "Switch to rear camera",
|
|
717
|
+
"qrScanner.mockScan": "Mock Scan",
|
|
718
|
+
"docSearch.placeholder": "Search documentation...",
|
|
719
|
+
"stateMachine.loading": "Loading state machine\u2026",
|
|
720
|
+
"stateMachine.noStateMachine": "No state machine to visualize",
|
|
721
|
+
"avl.trigger": "Trigger",
|
|
722
|
+
"avl.guard": "Guard",
|
|
723
|
+
"avl.effects": "Effects",
|
|
724
|
+
"avl.props": "Props",
|
|
725
|
+
"avl.entity": "Entity",
|
|
726
|
+
"avl.traits": "Traits",
|
|
727
|
+
"avl.transition": "Transition",
|
|
728
|
+
"avl.onEntity": "on {{entity}}",
|
|
729
|
+
"avl.linkedTo": "linked to {{entity}}",
|
|
730
|
+
"avl.pressEscToZoomOut": "Press Esc to zoom out",
|
|
731
|
+
"avl.zoomIn": "Zoom in",
|
|
732
|
+
"avl.zoomOut": "Zoom out",
|
|
733
|
+
"avl.orbitalLabel": "Orbital: {{name}}",
|
|
734
|
+
"avl.orbitalLabelHighlighted": "Orbital: {{name}} (highlighted)",
|
|
735
|
+
"avl.noTraitData": "No trait data",
|
|
736
|
+
"avl.computingLayout": "Computing layout...",
|
|
737
|
+
"avl.noStateMachine": "No state machine",
|
|
738
|
+
"avl.listensFor": "listens for {{event}}",
|
|
739
|
+
"avl.emits": "emits {{event}}",
|
|
740
|
+
"avl.pageLayout": "Page Layout",
|
|
741
|
+
"avl.overlaySuffix": "(overlay)",
|
|
742
|
+
"orbPreview.previewBadge": "Preview",
|
|
743
|
+
"orbPreview.doubleClickToOpen": "Double-click to open",
|
|
744
|
+
"orbPreview.dropToAddAndOpen": "Drop to add and open",
|
|
745
|
+
"orbPreview.dispatching": "Coordinator is dispatching to this orbital",
|
|
746
|
+
"orbPreview.noPreview": "No preview available",
|
|
747
|
+
"orbPreview.screensCount": "{{count}} screens",
|
|
748
|
+
"detailView.noTransitionData": "No transition data",
|
|
749
|
+
"orbInspector.required": "req",
|
|
750
|
+
"orbInspector.addField": "Add Field",
|
|
751
|
+
"orbInspector.serviceMode": "Service Mode",
|
|
752
|
+
"orbInspector.standalone": "Standalone",
|
|
753
|
+
"orbInspector.embedded": "Embedded",
|
|
754
|
+
"orbInspector.rendersOwnUi": "Renders its own UI",
|
|
755
|
+
"orbInspector.headless": "Headless, wired to other behaviors",
|
|
756
|
+
"orbInspector.addEffect": "Add Effect",
|
|
757
|
+
"orbInspector.guardExpression": "Guard expression",
|
|
758
|
+
"orbInspector.selectPatternForStyles": "Select a pattern to view its style tokens.",
|
|
759
|
+
"orbInspector.tokens": "Tokens",
|
|
760
|
+
"orbInspector.noTokenContract": "No token contract declared for this pattern.",
|
|
761
|
+
"orbInspector.variant": "Variant",
|
|
762
|
+
"orbInspector.size": "Size",
|
|
763
|
+
"orbInspector.statesCount": "{{count}} states",
|
|
764
|
+
"orbInspector.onEntity": " on {{entity}}",
|
|
765
|
+
"orbInspector.projectThemeTokens": "Project theme tokens",
|
|
766
|
+
"orbInspector.tokenGroup.colors": "Colors",
|
|
767
|
+
"orbInspector.tokenGroup.radii": "Radii",
|
|
768
|
+
"orbInspector.tokenGroup.spacing": "Spacing",
|
|
769
|
+
"orbInspector.tokenGroup.shadows": "Shadows",
|
|
770
|
+
"orbInspector.tab.inspector": "Inspector",
|
|
771
|
+
"orbInspector.tab.styles": "Styles",
|
|
772
|
+
"orbInspector.tab.code": "Code",
|
|
773
|
+
"canvas.goBackToOverview": "Go back to overview",
|
|
774
|
+
"canvas.overview": "Overview",
|
|
775
|
+
"canvas.expanded": "Expanded",
|
|
776
|
+
"canvas.modulesCount": "{{count}} modules",
|
|
777
|
+
"canvas.screensCount": "{{count}} screens",
|
|
778
|
+
"canvas.switchToView": "Switch to {{label}} view",
|
|
779
|
+
"lawReference.viewFullText": "View full law text",
|
|
780
|
+
"statCard.defaultLabel": "Stat",
|
|
781
|
+
"statCard.vsLastPeriod": "vs last period",
|
|
782
|
+
"mediaGallery.upload": "Upload",
|
|
783
|
+
"mediaGallery.noMediaDescription": "No media items to display.",
|
|
784
|
+
"pagination.jumpPlaceholder": "Page",
|
|
785
|
+
"table.selectRow": "Select row {{id}}",
|
|
786
|
+
"card.selectItem": "Select {{item}}",
|
|
787
|
+
"card.itemFallback": "item",
|
|
788
|
+
"fileTree.noFiles": "No files",
|
|
789
|
+
"masterDetail.selectItem": "Select an item to view details",
|
|
790
|
+
"empty.createFirst": "Create your first item to get started.",
|
|
791
|
+
"upload.dropOrBrowse": "Drop files here or click to browse",
|
|
792
|
+
"upload.dropFilesHere": "Drop files here",
|
|
793
|
+
"upload.accepted": "Accepted: {{accept}}",
|
|
794
|
+
"upload.maxSize": "Max size: {{size}}",
|
|
795
|
+
"upload.maxFiles": "Up to {{count}} files",
|
|
796
|
+
"upload.error.maxFiles": "Maximum {{count}} files allowed",
|
|
797
|
+
"upload.error.invalidType": "Invalid file type: {{name}}",
|
|
798
|
+
"upload.error.tooLarge": "File too large: {{name}} (max {{size}})",
|
|
799
|
+
"optionConstraint.requiredOne": "Required, pick 1",
|
|
800
|
+
"optionConstraint.optionalOne": "Optional, pick up to 1",
|
|
801
|
+
"optionConstraint.pickExactly": "Pick exactly {{count}}",
|
|
802
|
+
"optionConstraint.pickRange": "Pick {{min}}-{{max}}",
|
|
803
|
+
"optionConstraint.pickAtLeast": "Pick at least {{count}}",
|
|
804
|
+
"optionConstraint.pickUpTo": "Pick up to {{count}}",
|
|
805
|
+
"optionConstraint.optional": "Optional",
|
|
806
|
+
"optionConstraint.outOfStock": "Out of stock",
|
|
807
|
+
"optionConstraint.error.pickOne": "Pick 1 option",
|
|
808
|
+
"optionConstraint.error.pickOnlyOne": "Pick only 1 option",
|
|
809
|
+
"optionConstraint.error.pickMore": "Pick at least {{count}} more",
|
|
810
|
+
"optionConstraint.error.removeOptions": "Remove {{count}} options",
|
|
811
|
+
"stateMachine.pinned": "Pinned",
|
|
812
|
+
"stateMachine.eventCount": "{{count}} events",
|
|
813
|
+
"stateMachine.externalEffects": "External Effects",
|
|
814
|
+
"stateMachine.legend.initial": "Initial",
|
|
815
|
+
"stateMachine.legend.final": "Final",
|
|
816
|
+
"stateMachine.legend.state": "State",
|
|
817
|
+
"stateMachine.legend.multiEvent": "Multi-event"
|
|
525
818
|
};
|
|
526
819
|
}
|
|
527
820
|
});
|
|
@@ -5504,6 +5797,7 @@ var init_LawReferenceTooltip = __esm({
|
|
|
5504
5797
|
init_Typography();
|
|
5505
5798
|
init_Divider();
|
|
5506
5799
|
init_cn();
|
|
5800
|
+
init_useTranslate();
|
|
5507
5801
|
positionStyles2 = {
|
|
5508
5802
|
top: "bottom-full left-1/2 -translate-x-1/2 mb-2",
|
|
5509
5803
|
bottom: "top-full left-1/2 -translate-x-1/2 mt-2",
|
|
@@ -5522,6 +5816,7 @@ var init_LawReferenceTooltip = __esm({
|
|
|
5522
5816
|
position = "top",
|
|
5523
5817
|
className
|
|
5524
5818
|
}) => {
|
|
5819
|
+
const { t } = useTranslate();
|
|
5525
5820
|
const [isVisible, setIsVisible] = React84__namespace.default.useState(false);
|
|
5526
5821
|
const timeoutRef = React84__namespace.default.useRef(null);
|
|
5527
5822
|
const handleMouseEnter = () => {
|
|
@@ -5605,7 +5900,7 @@ var init_LawReferenceTooltip = __esm({
|
|
|
5605
5900
|
target: "_blank",
|
|
5606
5901
|
rel: "noopener noreferrer",
|
|
5607
5902
|
onClick: (e) => e.stopPropagation(),
|
|
5608
|
-
children: "
|
|
5903
|
+
children: t("lawReference.viewFullText")
|
|
5609
5904
|
}
|
|
5610
5905
|
)
|
|
5611
5906
|
] }),
|
|
@@ -13507,6 +13802,7 @@ var log6, SWIM_GUTTER, CENTER_W, BehaviorView;
|
|
|
13507
13802
|
var init_BehaviorView = __esm({
|
|
13508
13803
|
"components/avl/molecules/BehaviorView.tsx"() {
|
|
13509
13804
|
"use client";
|
|
13805
|
+
init_useTranslate();
|
|
13510
13806
|
init_AvlState();
|
|
13511
13807
|
init_AvlTransitionLane();
|
|
13512
13808
|
init_AvlSwimLane();
|
|
@@ -13516,6 +13812,7 @@ var init_BehaviorView = __esm({
|
|
|
13516
13812
|
SWIM_GUTTER = 120;
|
|
13517
13813
|
CENTER_W = 360;
|
|
13518
13814
|
BehaviorView = ({ data }) => {
|
|
13815
|
+
const { t } = useTranslate();
|
|
13519
13816
|
const [layout, setLayout] = React84.useState(null);
|
|
13520
13817
|
const traitName = data.traits[0]?.name;
|
|
13521
13818
|
const traitData = traitName ? data.traitDetails[traitName] : void 0;
|
|
@@ -13525,10 +13822,10 @@ var init_BehaviorView = __esm({
|
|
|
13525
13822
|
computeTraitLayout(traitData).then(setLayout).catch((err) => log6.error("compute-trait-layout-failed", { error: err instanceof Error ? err : String(err) }));
|
|
13526
13823
|
}, [dataKey]);
|
|
13527
13824
|
if (!traitData) {
|
|
13528
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-lg border border-[var(--color-border)] bg-[var(--color-card)] p-4 text-center text-[var(--color-muted-foreground)] text-sm", children: "
|
|
13825
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-lg border border-[var(--color-border)] bg-[var(--color-card)] p-4 text-center text-[var(--color-muted-foreground)] text-sm", children: t("avl.noTraitData") });
|
|
13529
13826
|
}
|
|
13530
13827
|
if (!layout) {
|
|
13531
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-lg border border-[var(--color-border)] bg-[var(--color-card)] p-4 text-center text-[var(--color-muted-foreground)] text-sm", children: "
|
|
13828
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-lg border border-[var(--color-border)] bg-[var(--color-card)] p-4 text-center text-[var(--color-muted-foreground)] text-sm", children: t("avl.computingLayout") });
|
|
13532
13829
|
}
|
|
13533
13830
|
const hasExternal = traitData.listenedEvents.length > 0 || traitData.emittedEvents.length > 0;
|
|
13534
13831
|
const viewW = hasExternal ? SWIM_GUTTER + CENTER_W + SWIM_GUTTER : CENTER_W + 60;
|
|
@@ -13544,10 +13841,7 @@ var init_BehaviorView = __esm({
|
|
|
13544
13841
|
const machineHeight = scaledH + 100;
|
|
13545
13842
|
const renderMachine = /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
|
|
13546
13843
|
/* @__PURE__ */ jsxRuntime.jsx("text", { x: CENTER_W / 2, y: 20, textAnchor: "middle", fill: "var(--color-foreground)", fontSize: 18, fontWeight: "700", fontFamily: "inherit", children: traitData.name }),
|
|
13547
|
-
/* @__PURE__ */ jsxRuntime.
|
|
13548
|
-
"on ",
|
|
13549
|
-
traitData.linkedEntity
|
|
13550
|
-
] }),
|
|
13844
|
+
/* @__PURE__ */ jsxRuntime.jsx("text", { x: CENTER_W / 2, y: 36, textAnchor: "middle", fill: "var(--color-muted-foreground)", fontSize: 11, opacity: 0.5, fontFamily: "inherit", children: t("avl.onEntity", { entity: traitData.linkedEntity }) }),
|
|
13551
13845
|
/* @__PURE__ */ jsxRuntime.jsxs("defs", { children: [
|
|
13552
13846
|
/* @__PURE__ */ jsxRuntime.jsx("marker", { id: "bvArrow", viewBox: "0 0 10 10", refX: "9", refY: "5", markerWidth: "6", markerHeight: "6", orient: "auto-start-reverse", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M 0 0 L 10 5 L 0 10 z", fill: CONNECTION_COLORS.forward.color, opacity: 0.7 }) }),
|
|
13553
13847
|
/* @__PURE__ */ jsxRuntime.jsx("marker", { id: "bvArrowBack", viewBox: "0 0 10 10", refX: "9", refY: "5", markerWidth: "6", markerHeight: "6", orient: "auto-start-reverse", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M 0 0 L 10 5 L 0 10 z", fill: CONNECTION_COLORS.backward.color, opacity: 0.5 }) })
|
|
@@ -13855,7 +14149,7 @@ var init_CodeBlock = __esm({
|
|
|
13855
14149
|
const isLolo = language === "lolo";
|
|
13856
14150
|
const activeStyle = isOrb ? orbStyle : isLolo ? loloStyle : dark__default.default;
|
|
13857
14151
|
const eventBus = useEventBus();
|
|
13858
|
-
const { t
|
|
14152
|
+
const { t } = useTranslate();
|
|
13859
14153
|
const scrollRef = React84.useRef(null);
|
|
13860
14154
|
const codeRef = React84.useRef(null);
|
|
13861
14155
|
const savedScrollLeftRef = React84.useRef(0);
|
|
@@ -14110,7 +14404,7 @@ var init_CodeBlock = __esm({
|
|
|
14110
14404
|
size: "sm",
|
|
14111
14405
|
onClick: handleCopy,
|
|
14112
14406
|
className: "opacity-0 group-hover:opacity-100 focus:opacity-100 transition-opacity text-muted-foreground hover:text-white",
|
|
14113
|
-
"aria-label": "
|
|
14407
|
+
"aria-label": t("common.copy"),
|
|
14114
14408
|
children: copied ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "check", className: "w-4 h-4 text-green-400" }) : /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "copy", className: "w-4 h-4" })
|
|
14115
14409
|
}
|
|
14116
14410
|
)
|
|
@@ -14331,9 +14625,18 @@ var init_MarkdownContent = __esm({
|
|
|
14331
14625
|
);
|
|
14332
14626
|
}
|
|
14333
14627
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
14334
|
-
"
|
|
14628
|
+
"code",
|
|
14335
14629
|
{
|
|
14630
|
+
...props,
|
|
14631
|
+
className: codeClassName,
|
|
14336
14632
|
style: {
|
|
14633
|
+
backgroundColor: "var(--color-muted)",
|
|
14634
|
+
color: "var(--color-foreground)",
|
|
14635
|
+
border: "1px solid var(--color-border)",
|
|
14636
|
+
padding: "0.125rem 0.375rem",
|
|
14637
|
+
borderRadius: "0.25rem",
|
|
14638
|
+
fontSize: "0.875em",
|
|
14639
|
+
fontFamily: "ui-monospace, monospace",
|
|
14337
14640
|
whiteSpace: "pre-wrap",
|
|
14338
14641
|
wordBreak: "break-word"
|
|
14339
14642
|
},
|
|
@@ -14706,7 +15009,7 @@ var init_StateMachineView = __esm({
|
|
|
14706
15009
|
const endX2 = fromState.x + Math.cos(Math.PI / 2 * loopDirection + endAngle) * fromState.radius;
|
|
14707
15010
|
const endY2 = fromState.y + Math.sin(Math.PI / 2 * loopDirection + endAngle) * fromState.radius;
|
|
14708
15011
|
const isSingle2 = bundle.labels.length === 1;
|
|
14709
|
-
const labelText2 = isSingle2 ? bundle.labels[0].event :
|
|
15012
|
+
const labelText2 = isSingle2 ? bundle.labels[0].event : t("stateMachine.eventCount", { count: bundle.labels.length });
|
|
14710
15013
|
const bundleColor2 = isSingle2 ? config.colors.arrow : "var(--color-accent)";
|
|
14711
15014
|
const labelWidth2 = labelText2.length * 9 + (isSingle2 ? 24 : 40);
|
|
14712
15015
|
const cx = fromState.x;
|
|
@@ -14832,7 +15135,7 @@ var init_StateMachineView = __esm({
|
|
|
14832
15135
|
const controlX = midX + perpX;
|
|
14833
15136
|
const controlY = midY + perpY;
|
|
14834
15137
|
const isSingle = bundle.labels.length === 1;
|
|
14835
|
-
const labelText = isSingle ? bundle.labels[0].event :
|
|
15138
|
+
const labelText = isSingle ? bundle.labels[0].event : t("stateMachine.eventCount", { count: bundle.labels.length });
|
|
14836
15139
|
const labelWidth = labelText.length * 9 + (isSingle ? 24 : 40);
|
|
14837
15140
|
const bundleColor = isSingle ? config.colors.arrow : "var(--color-accent)";
|
|
14838
15141
|
const curveMidpoint = {
|
|
@@ -14987,7 +15290,7 @@ var init_StateMachineView = __esm({
|
|
|
14987
15290
|
{
|
|
14988
15291
|
className: "absolute -top-2 left-1/2 transform -translate-x-1/2 px-2 py-0.5 rounded-full",
|
|
14989
15292
|
style: { backgroundColor: "var(--color-success)" },
|
|
14990
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", weight: "semibold", style: { color: "var(--color-success-foreground)" }, children: "
|
|
15293
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", weight: "semibold", style: { color: "var(--color-success-foreground)" }, children: t("stateMachine.pinned") })
|
|
14991
15294
|
}
|
|
14992
15295
|
),
|
|
14993
15296
|
!isSingle && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -15009,10 +15312,7 @@ var init_StateMachineView = __esm({
|
|
|
15009
15312
|
{
|
|
15010
15313
|
className: "ml-2 px-2 py-0.5 rounded-full",
|
|
15011
15314
|
style: { backgroundColor: "var(--color-accent)" },
|
|
15012
|
-
children: /* @__PURE__ */ jsxRuntime.
|
|
15013
|
-
bundle.labels.length,
|
|
15014
|
-
" events"
|
|
15015
|
-
] })
|
|
15315
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", style: { color: "var(--color-accent-foreground)" }, children: t("stateMachine.eventCount", { count: bundle.labels.length }) })
|
|
15016
15316
|
}
|
|
15017
15317
|
)
|
|
15018
15318
|
]
|
|
@@ -15157,7 +15457,7 @@ var init_StateMachineView = __esm({
|
|
|
15157
15457
|
align: "center",
|
|
15158
15458
|
className: "mb-2",
|
|
15159
15459
|
style: { color: "var(--color-warning)", fontSize: "13px" },
|
|
15160
|
-
children: "
|
|
15460
|
+
children: t("stateMachine.externalEffects")
|
|
15161
15461
|
}
|
|
15162
15462
|
),
|
|
15163
15463
|
outputs.outputs.map((output, idx) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -15177,10 +15477,10 @@ var init_StateMachineView = __esm({
|
|
|
15177
15477
|
Legend = ({ config, y }) => {
|
|
15178
15478
|
const { t } = useTranslate();
|
|
15179
15479
|
const items = [
|
|
15180
|
-
{ label: "
|
|
15181
|
-
{ label: "
|
|
15182
|
-
{ label: "
|
|
15183
|
-
{ label: "
|
|
15480
|
+
{ key: "initial", label: t("stateMachine.legend.initial"), color: config.colors.initialNode, isMultiEvent: false },
|
|
15481
|
+
{ key: "final", label: t("stateMachine.legend.final"), color: config.colors.finalNode, isMultiEvent: false },
|
|
15482
|
+
{ key: "state", label: t("stateMachine.legend.state"), color: config.colors.nodeBorder, isMultiEvent: false },
|
|
15483
|
+
{ key: "multiEvent", label: t("stateMachine.legend.multiEvent"), color: "var(--color-accent)", isMultiEvent: true }
|
|
15184
15484
|
];
|
|
15185
15485
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
15186
15486
|
HStack,
|
|
@@ -15195,8 +15495,8 @@ var init_StateMachineView = __esm({
|
|
|
15195
15495
|
{
|
|
15196
15496
|
className: "w-3 h-3 rounded-full",
|
|
15197
15497
|
style: {
|
|
15198
|
-
backgroundColor: item.
|
|
15199
|
-
border: item.
|
|
15498
|
+
backgroundColor: item.isMultiEvent ? item.color : config.colors.node,
|
|
15499
|
+
border: !item.isMultiEvent ? `2px solid ${item.color}` : "none"
|
|
15200
15500
|
}
|
|
15201
15501
|
}
|
|
15202
15502
|
),
|
|
@@ -15208,7 +15508,7 @@ var init_StateMachineView = __esm({
|
|
|
15208
15508
|
children: item.label
|
|
15209
15509
|
}
|
|
15210
15510
|
)
|
|
15211
|
-
] }, item.
|
|
15511
|
+
] }, item.key))
|
|
15212
15512
|
}
|
|
15213
15513
|
);
|
|
15214
15514
|
};
|
|
@@ -16002,13 +16302,13 @@ var init_JazariStateMachine = __esm({
|
|
|
16002
16302
|
);
|
|
16003
16303
|
}, [resolvedTrait, entityFields]);
|
|
16004
16304
|
if (isLoading) {
|
|
16005
|
-
return /* @__PURE__ */ jsxRuntime.jsx(LoadingState, { message: "
|
|
16305
|
+
return /* @__PURE__ */ jsxRuntime.jsx(LoadingState, { message: t("stateMachine.loading") });
|
|
16006
16306
|
}
|
|
16007
16307
|
if (error) {
|
|
16008
16308
|
return /* @__PURE__ */ jsxRuntime.jsx(ErrorState, { message: error instanceof Error ? error.message : String(error) });
|
|
16009
16309
|
}
|
|
16010
16310
|
if (!resolvedTrait || !layoutData || layoutData.states.length === 0) {
|
|
16011
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { padding: "lg", className: cn("text-center", className), children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", className: "opacity-60", children: "
|
|
16311
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box, { padding: "lg", className: cn("text-center", className), children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", className: "opacity-60", children: t("stateMachine.noStateMachine") }) });
|
|
16012
16312
|
}
|
|
16013
16313
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
16014
16314
|
StateMachineView,
|
|
@@ -17052,13 +17352,13 @@ var init_LayoutPatterns = __esm({
|
|
|
17052
17352
|
function generateRuleId() {
|
|
17053
17353
|
return `rule-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
17054
17354
|
}
|
|
17055
|
-
function questionsToOptions(questions,
|
|
17355
|
+
function questionsToOptions(questions, endOfSurveyLabel) {
|
|
17056
17356
|
const opts = questions.map((q) => ({
|
|
17057
17357
|
value: q.id,
|
|
17058
17358
|
label: q.label
|
|
17059
17359
|
}));
|
|
17060
|
-
if (
|
|
17061
|
-
opts.push({ value: END_OF_SURVEY, label:
|
|
17360
|
+
if (endOfSurveyLabel !== null) {
|
|
17361
|
+
opts.push({ value: END_OF_SURVEY, label: endOfSurveyLabel });
|
|
17062
17362
|
}
|
|
17063
17363
|
return opts;
|
|
17064
17364
|
}
|
|
@@ -17067,7 +17367,7 @@ function isRuleBroken(rule, questions) {
|
|
|
17067
17367
|
const targetExists = rule.targetQuestionId === END_OF_SURVEY || questions.some((q) => q.id === rule.targetQuestionId);
|
|
17068
17368
|
return !sourceExists || !targetExists;
|
|
17069
17369
|
}
|
|
17070
|
-
var END_OF_SURVEY,
|
|
17370
|
+
var END_OF_SURVEY, RuleRow, NODE_WIDTH, NODE_HEIGHT, NODE_GAP_Y, PADDING, LogicGraph, BranchingLogicBuilder;
|
|
17071
17371
|
var init_BranchingLogicBuilder = __esm({
|
|
17072
17372
|
"components/core/molecules/BranchingLogicBuilder.tsx"() {
|
|
17073
17373
|
"use client";
|
|
@@ -17080,14 +17380,9 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17080
17380
|
init_FilterPill();
|
|
17081
17381
|
init_Box();
|
|
17082
17382
|
init_useEventBus();
|
|
17383
|
+
init_useTranslate();
|
|
17083
17384
|
init_cn();
|
|
17084
17385
|
END_OF_SURVEY = "end-of-survey";
|
|
17085
|
-
OPERATOR_OPTIONS = [
|
|
17086
|
-
{ value: "equals", label: "equals" },
|
|
17087
|
-
{ value: "not-equals", label: "does not equal" },
|
|
17088
|
-
{ value: "contains", label: "contains" },
|
|
17089
|
-
{ value: "in", label: "is one of" }
|
|
17090
|
-
];
|
|
17091
17386
|
RuleRow = ({
|
|
17092
17387
|
rule,
|
|
17093
17388
|
questions,
|
|
@@ -17096,8 +17391,21 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17096
17391
|
onChange,
|
|
17097
17392
|
onDelete
|
|
17098
17393
|
}) => {
|
|
17099
|
-
const
|
|
17100
|
-
const
|
|
17394
|
+
const { t } = useTranslate();
|
|
17395
|
+
const operatorOptions = React84.useMemo(
|
|
17396
|
+
() => [
|
|
17397
|
+
{ value: "equals", label: t("branchingLogic.operatorEquals") },
|
|
17398
|
+
{ value: "not-equals", label: t("branchingLogic.operatorNotEquals") },
|
|
17399
|
+
{ value: "contains", label: t("branchingLogic.operatorContains") },
|
|
17400
|
+
{ value: "in", label: t("branchingLogic.operatorIn") }
|
|
17401
|
+
],
|
|
17402
|
+
[t]
|
|
17403
|
+
);
|
|
17404
|
+
const sourceOptions = React84.useMemo(() => questionsToOptions(questions, null), [questions]);
|
|
17405
|
+
const targetOptions = React84.useMemo(
|
|
17406
|
+
() => questionsToOptions(questions, t("branchingLogic.endOfSurvey")),
|
|
17407
|
+
[questions, t]
|
|
17408
|
+
);
|
|
17101
17409
|
const sourceQuestion = questions.find((q) => q.id === rule.sourceQuestionId);
|
|
17102
17410
|
const valueOptions = React84.useMemo(() => {
|
|
17103
17411
|
if (!sourceQuestion?.optionValues) return [];
|
|
@@ -17142,22 +17450,22 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17142
17450
|
),
|
|
17143
17451
|
children: [
|
|
17144
17452
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex flex-wrap items-center gap-2", children: [
|
|
17145
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "label", weight: "semibold", className: "shrink-0", children: "
|
|
17453
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "label", weight: "semibold", className: "shrink-0", children: t("branchingLogic.if") }),
|
|
17146
17454
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "min-w-[10rem] grow basis-40", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
17147
17455
|
Select,
|
|
17148
17456
|
{
|
|
17149
17457
|
options: sourceOptions,
|
|
17150
17458
|
value: rule.sourceQuestionId,
|
|
17151
|
-
placeholder: "
|
|
17459
|
+
placeholder: t("branchingLogic.selectQuestion"),
|
|
17152
17460
|
onChange: handleSource,
|
|
17153
17461
|
disabled: readOnly,
|
|
17154
|
-
error: broken ? "
|
|
17462
|
+
error: broken ? t("branchingLogic.brokenReference") : void 0
|
|
17155
17463
|
}
|
|
17156
17464
|
) }),
|
|
17157
17465
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "min-w-[8rem] basis-32", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
17158
17466
|
Select,
|
|
17159
17467
|
{
|
|
17160
|
-
options:
|
|
17468
|
+
options: operatorOptions,
|
|
17161
17469
|
value: rule.operator,
|
|
17162
17470
|
onChange: handleOperator,
|
|
17163
17471
|
disabled: readOnly
|
|
@@ -17180,7 +17488,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17180
17488
|
{
|
|
17181
17489
|
options: valueOptions.filter((o) => !chips.includes(o.value)),
|
|
17182
17490
|
value: "",
|
|
17183
|
-
placeholder: "
|
|
17491
|
+
placeholder: t("branchingLogic.addValue"),
|
|
17184
17492
|
onChange: handleAddChip,
|
|
17185
17493
|
disabled: readOnly
|
|
17186
17494
|
}
|
|
@@ -17188,7 +17496,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17188
17496
|
Input,
|
|
17189
17497
|
{
|
|
17190
17498
|
inputType: "text",
|
|
17191
|
-
placeholder: "
|
|
17499
|
+
placeholder: t("branchingLogic.typeValuePressEnter"),
|
|
17192
17500
|
value: "",
|
|
17193
17501
|
onKeyDown: (e) => {
|
|
17194
17502
|
if (e.key !== "Enter") return;
|
|
@@ -17206,7 +17514,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17206
17514
|
{
|
|
17207
17515
|
options: valueOptions,
|
|
17208
17516
|
value: scalarValue,
|
|
17209
|
-
placeholder: "
|
|
17517
|
+
placeholder: t("branchingLogic.selectValue"),
|
|
17210
17518
|
onChange: (e) => onChange({ ...rule, value: e.target.value }),
|
|
17211
17519
|
disabled: readOnly
|
|
17212
17520
|
}
|
|
@@ -17214,7 +17522,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17214
17522
|
Input,
|
|
17215
17523
|
{
|
|
17216
17524
|
inputType: "text",
|
|
17217
|
-
placeholder: "
|
|
17525
|
+
placeholder: t("branchingLogic.value"),
|
|
17218
17526
|
value: scalarValue,
|
|
17219
17527
|
onChange: handleScalarValue,
|
|
17220
17528
|
disabled: readOnly
|
|
@@ -17222,17 +17530,17 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17222
17530
|
) }),
|
|
17223
17531
|
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "label", weight: "semibold", className: "shrink-0 inline-flex items-center gap-1", children: [
|
|
17224
17532
|
/* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.ArrowRight, { className: "h-4 w-4" }),
|
|
17225
|
-
"
|
|
17533
|
+
t("branchingLogic.goTo")
|
|
17226
17534
|
] }),
|
|
17227
17535
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "min-w-[10rem] grow basis-40", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
17228
17536
|
Select,
|
|
17229
17537
|
{
|
|
17230
17538
|
options: targetOptions,
|
|
17231
17539
|
value: rule.targetQuestionId,
|
|
17232
|
-
placeholder: "
|
|
17540
|
+
placeholder: t("branchingLogic.selectTarget"),
|
|
17233
17541
|
onChange: handleTarget,
|
|
17234
17542
|
disabled: readOnly,
|
|
17235
|
-
error: broken && rule.targetQuestionId !== END_OF_SURVEY ? "
|
|
17543
|
+
error: broken && rule.targetQuestionId !== END_OF_SURVEY ? t("branchingLogic.brokenReference") : void 0
|
|
17236
17544
|
}
|
|
17237
17545
|
) }),
|
|
17238
17546
|
!readOnly && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -17244,11 +17552,11 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17244
17552
|
action: "DELETE_RULE",
|
|
17245
17553
|
actionPayload: { ruleId: rule.id },
|
|
17246
17554
|
onClick: onDelete,
|
|
17247
|
-
"aria-label": "
|
|
17555
|
+
"aria-label": t("branchingLogic.deleteRule")
|
|
17248
17556
|
}
|
|
17249
17557
|
)
|
|
17250
17558
|
] }),
|
|
17251
|
-
broken && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "error", size: "sm", label: "
|
|
17559
|
+
broken && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "error", size: "sm", label: t("branchingLogic.brokenReference") })
|
|
17252
17560
|
]
|
|
17253
17561
|
}
|
|
17254
17562
|
);
|
|
@@ -17258,10 +17566,12 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17258
17566
|
NODE_GAP_Y = 80;
|
|
17259
17567
|
PADDING = 32;
|
|
17260
17568
|
LogicGraph = ({ questions, rules }) => {
|
|
17569
|
+
const { t } = useTranslate();
|
|
17570
|
+
const endOfSurveyLabel = t("branchingLogic.endOfSurvey");
|
|
17261
17571
|
const layout = React84.useMemo(() => {
|
|
17262
17572
|
const items = [
|
|
17263
17573
|
...questions.map((q) => ({ id: q.id, label: q.label, isEnd: false })),
|
|
17264
|
-
{ id: END_OF_SURVEY, label:
|
|
17574
|
+
{ id: END_OF_SURVEY, label: endOfSurveyLabel, isEnd: true }
|
|
17265
17575
|
];
|
|
17266
17576
|
const positions = {};
|
|
17267
17577
|
items.forEach((item, i) => {
|
|
@@ -17273,14 +17583,14 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17273
17583
|
const width = NODE_WIDTH + PADDING * 2 + 220;
|
|
17274
17584
|
const height = PADDING * 2 + items.length * (NODE_HEIGHT + NODE_GAP_Y);
|
|
17275
17585
|
return { items, positions, width, height };
|
|
17276
|
-
}, [questions]);
|
|
17586
|
+
}, [questions, endOfSurveyLabel]);
|
|
17277
17587
|
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "overflow-auto rounded-container border border-border bg-card p-2", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
17278
17588
|
"svg",
|
|
17279
17589
|
{
|
|
17280
17590
|
width: layout.width,
|
|
17281
17591
|
height: layout.height,
|
|
17282
17592
|
role: "img",
|
|
17283
|
-
"aria-label": "
|
|
17593
|
+
"aria-label": t("branchingLogic.graphAriaLabel"),
|
|
17284
17594
|
style: { display: "block" },
|
|
17285
17595
|
children: [
|
|
17286
17596
|
/* @__PURE__ */ jsxRuntime.jsx("defs", { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -17388,6 +17698,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17388
17698
|
readOnly = false,
|
|
17389
17699
|
className
|
|
17390
17700
|
}) => {
|
|
17701
|
+
const { t } = useTranslate();
|
|
17391
17702
|
const eventBus = useEventBus();
|
|
17392
17703
|
const questions = Array.isArray(questionsProp) ? questionsProp : [];
|
|
17393
17704
|
const rulesInitial = Array.isArray(rulesProp) ? rulesProp : [];
|
|
@@ -17440,16 +17751,23 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17440
17751
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex flex-wrap items-center justify-between gap-2", children: [
|
|
17441
17752
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex items-center gap-2", children: [
|
|
17442
17753
|
/* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.GitBranch, { className: "h-5 w-5 text-foreground" }),
|
|
17443
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "subheading", weight: "semibold", children: "
|
|
17754
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "subheading", weight: "semibold", children: t("branchingLogic.title") }),
|
|
17444
17755
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
17445
17756
|
Badge,
|
|
17446
17757
|
{
|
|
17447
17758
|
variant: "neutral",
|
|
17448
17759
|
size: "sm",
|
|
17449
|
-
label:
|
|
17760
|
+
label: rules.length === 1 ? t("branchingLogic.ruleCountOne", { count: rules.length }) : t("branchingLogic.ruleCountOther", { count: rules.length })
|
|
17450
17761
|
}
|
|
17451
17762
|
),
|
|
17452
|
-
brokenCount > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
17763
|
+
brokenCount > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
17764
|
+
Badge,
|
|
17765
|
+
{
|
|
17766
|
+
variant: "error",
|
|
17767
|
+
size: "sm",
|
|
17768
|
+
label: t("branchingLogic.brokenCount", { count: brokenCount })
|
|
17769
|
+
}
|
|
17770
|
+
)
|
|
17453
17771
|
] }),
|
|
17454
17772
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex items-center gap-1 rounded-sm border border-border bg-card p-0.5", children: [
|
|
17455
17773
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -17460,7 +17778,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17460
17778
|
leftIcon: LucideIcons2.Pencil,
|
|
17461
17779
|
action: "VIEW_EDIT",
|
|
17462
17780
|
onClick: () => setView("edit"),
|
|
17463
|
-
children: "
|
|
17781
|
+
children: t("branchingLogic.rules")
|
|
17464
17782
|
}
|
|
17465
17783
|
),
|
|
17466
17784
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -17471,13 +17789,13 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17471
17789
|
leftIcon: LucideIcons2.Eye,
|
|
17472
17790
|
action: "VIEW_GRAPH",
|
|
17473
17791
|
onClick: () => setView("graph"),
|
|
17474
|
-
children: "
|
|
17792
|
+
children: t("branchingLogic.logicGraph")
|
|
17475
17793
|
}
|
|
17476
17794
|
)
|
|
17477
17795
|
] })
|
|
17478
17796
|
] }),
|
|
17479
17797
|
view === "edit" ? /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex flex-col gap-2", children: [
|
|
17480
|
-
rules.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(Card, { variant: "bordered", padding: "lg", className: "text-center", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", color: "muted", children: noQuestions ? "
|
|
17798
|
+
rules.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(Card, { variant: "bordered", padding: "lg", className: "text-center", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", color: "muted", children: noQuestions ? t("branchingLogic.emptyNoQuestions") : t("branchingLogic.emptyNoRules") }) }) : rules.map((rule) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
17481
17799
|
RuleRow,
|
|
17482
17800
|
{
|
|
17483
17801
|
rule,
|
|
@@ -17498,7 +17816,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17498
17816
|
action: "ADD_RULE",
|
|
17499
17817
|
onClick: handleAddRule,
|
|
17500
17818
|
disabled: noQuestions,
|
|
17501
|
-
children: "
|
|
17819
|
+
children: t("branchingLogic.addRule")
|
|
17502
17820
|
}
|
|
17503
17821
|
) })
|
|
17504
17822
|
] }) : /* @__PURE__ */ jsxRuntime.jsx(LogicGraph, { questions, rules })
|
|
@@ -18058,7 +18376,7 @@ function CalendarGrid({
|
|
|
18058
18376
|
onClick: stepPrev,
|
|
18059
18377
|
"aria-disabled": !canPrev || void 0,
|
|
18060
18378
|
"aria-label": t("aria.previousDays"),
|
|
18061
|
-
children: "
|
|
18379
|
+
children: t("nav.previous")
|
|
18062
18380
|
}
|
|
18063
18381
|
),
|
|
18064
18382
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground", children: formatDateRange(visibleDays[0], visibleDays[visibleDays.length - 1]) }),
|
|
@@ -18071,7 +18389,7 @@ function CalendarGrid({
|
|
|
18071
18389
|
onClick: stepNext,
|
|
18072
18390
|
"aria-disabled": !canNext || void 0,
|
|
18073
18391
|
"aria-label": t("aria.nextDays"),
|
|
18074
|
-
children: "
|
|
18392
|
+
children: t("nav.next")
|
|
18075
18393
|
}
|
|
18076
18394
|
)
|
|
18077
18395
|
] }),
|
|
@@ -19621,7 +19939,7 @@ var init_Pagination = __esm({
|
|
|
19621
19939
|
type: "number",
|
|
19622
19940
|
value: jumpToPage,
|
|
19623
19941
|
onChange: (e) => setJumpToPage(e.target.value),
|
|
19624
|
-
placeholder: "
|
|
19942
|
+
placeholder: t("pagination.jumpPlaceholder"),
|
|
19625
19943
|
className: "w-20",
|
|
19626
19944
|
onKeyDown: (e) => {
|
|
19627
19945
|
if (e.key === "Enter") {
|
|
@@ -19759,13 +20077,10 @@ var init_CardGrid = __esm({
|
|
|
19759
20077
|
return children;
|
|
19760
20078
|
}
|
|
19761
20079
|
if (isLoading) {
|
|
19762
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "col-span-full text-center py-8 text-muted-foreground", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", color: "secondary", children: "
|
|
20080
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "col-span-full text-center py-8 text-muted-foreground", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", color: "secondary", children: t("loading.items") }) });
|
|
19763
20081
|
}
|
|
19764
20082
|
if (error) {
|
|
19765
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "col-span-full text-center py-8 text-error", children: /* @__PURE__ */ jsxRuntime.
|
|
19766
|
-
"Error loading items: ",
|
|
19767
|
-
error.message
|
|
19768
|
-
] }) });
|
|
20083
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "col-span-full text-center py-8 text-error", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", color: "error", children: t("error.loadFailed", { message: error.message }) }) });
|
|
19769
20084
|
}
|
|
19770
20085
|
if (normalizedData.length === 0) {
|
|
19771
20086
|
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "col-span-full text-center py-12 text-muted-foreground", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", color: "secondary", children: t("empty.noItems") || "No items found" }) });
|
|
@@ -23617,7 +23932,7 @@ function DataGrid({
|
|
|
23617
23932
|
onChange: () => toggleSelection(id),
|
|
23618
23933
|
onClick: (e) => e.stopPropagation(),
|
|
23619
23934
|
className: "w-4 h-4 mt-1 flex-shrink-0 accent-primary",
|
|
23620
|
-
"aria-label":
|
|
23935
|
+
"aria-label": t("card.selectItem", { item: titleValue !== void 0 ? String(titleValue) : t("card.itemFallback") })
|
|
23621
23936
|
}
|
|
23622
23937
|
),
|
|
23623
23938
|
/* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "xs", className: "flex-1 min-w-0", children: [
|
|
@@ -23815,7 +24130,7 @@ function formatDate3(value) {
|
|
|
23815
24130
|
if (isNaN(d.getTime())) return String(value);
|
|
23816
24131
|
return d.toLocaleDateString(void 0, { year: "numeric", month: "short", day: "numeric" });
|
|
23817
24132
|
}
|
|
23818
|
-
function formatValue2(value, format) {
|
|
24133
|
+
function formatValue2(value, format, boolLabels) {
|
|
23819
24134
|
if (value === void 0 || value === null) return "";
|
|
23820
24135
|
switch (format) {
|
|
23821
24136
|
case "date":
|
|
@@ -23827,7 +24142,7 @@ function formatValue2(value, format) {
|
|
|
23827
24142
|
case "percent":
|
|
23828
24143
|
return typeof value === "number" ? `${Math.round(value)}%` : String(value);
|
|
23829
24144
|
case "boolean":
|
|
23830
|
-
return value ? "Yes" : "No";
|
|
24145
|
+
return value ? boolLabels?.yes ?? "Yes" : boolLabels?.no ?? "No";
|
|
23831
24146
|
default:
|
|
23832
24147
|
return String(value);
|
|
23833
24148
|
}
|
|
@@ -24123,7 +24438,7 @@ function DataList({
|
|
|
24123
24438
|
field.label ?? fieldLabel3(field.name),
|
|
24124
24439
|
":"
|
|
24125
24440
|
] }),
|
|
24126
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", children: formatValue2(value, field.format) })
|
|
24441
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", children: formatValue2(value, field.format, { yes: t("common.yes"), no: t("common.no") }) })
|
|
24127
24442
|
] }, field.name);
|
|
24128
24443
|
}) }),
|
|
24129
24444
|
progressFields.map((field) => {
|
|
@@ -24253,6 +24568,7 @@ var init_FileTree = __esm({
|
|
|
24253
24568
|
init_Box();
|
|
24254
24569
|
init_Typography();
|
|
24255
24570
|
init_Icon();
|
|
24571
|
+
init_useTranslate();
|
|
24256
24572
|
TreeNodeItem = ({
|
|
24257
24573
|
node,
|
|
24258
24574
|
depth,
|
|
@@ -24338,8 +24654,9 @@ var init_FileTree = __esm({
|
|
|
24338
24654
|
className,
|
|
24339
24655
|
indent = 16
|
|
24340
24656
|
}) => {
|
|
24657
|
+
const { t } = useTranslate();
|
|
24341
24658
|
if (tree.length === 0) {
|
|
24342
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: `p-4 ${className ?? ""}`, children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "muted", children: "
|
|
24659
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: `p-4 ${className ?? ""}`, children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "muted", children: t("fileTree.noFiles") }) });
|
|
24343
24660
|
}
|
|
24344
24661
|
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: `py-1 overflow-y-auto ${className ?? ""}`, role: "tree", children: tree.map((node) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
24345
24662
|
TreeNodeItem,
|
|
@@ -24394,6 +24711,7 @@ var init_FilterGroup = __esm({
|
|
|
24394
24711
|
init_Icon();
|
|
24395
24712
|
init_useEventBus();
|
|
24396
24713
|
init_useQuerySingleton();
|
|
24714
|
+
init_useTranslate();
|
|
24397
24715
|
resolveFilterType = (filter) => filter.filterType ?? filter.type;
|
|
24398
24716
|
lookStyles6 = {
|
|
24399
24717
|
toolbar: "",
|
|
@@ -24414,6 +24732,7 @@ var init_FilterGroup = __esm({
|
|
|
24414
24732
|
isLoading,
|
|
24415
24733
|
look = "toolbar"
|
|
24416
24734
|
}) => {
|
|
24735
|
+
const { t } = useTranslate();
|
|
24417
24736
|
const eventBus = useEventBus();
|
|
24418
24737
|
const queryState = useQuerySingleton(query);
|
|
24419
24738
|
const [selectedValues, setSelectedValues] = React84.useState(
|
|
@@ -24495,7 +24814,7 @@ var init_FilterGroup = __esm({
|
|
|
24495
24814
|
"px-3 py-1.5 text-sm font-medium transition-all duration-[var(--transition-fast)]",
|
|
24496
24815
|
!selectedValues[filter.field] ? "bg-primary text-primary-foreground" : "bg-card text-muted-foreground hover:bg-muted"
|
|
24497
24816
|
),
|
|
24498
|
-
children: "
|
|
24817
|
+
children: t("filterGroup.all")
|
|
24499
24818
|
}
|
|
24500
24819
|
),
|
|
24501
24820
|
filter.options?.map((option) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -24523,7 +24842,7 @@ var init_FilterGroup = __esm({
|
|
|
24523
24842
|
size: "sm",
|
|
24524
24843
|
onClick: handleClearAll,
|
|
24525
24844
|
leftIcon: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "x", className: "h-3.5 w-3.5" }),
|
|
24526
|
-
children: "
|
|
24845
|
+
children: t("filterGroup.clear")
|
|
24527
24846
|
}
|
|
24528
24847
|
)
|
|
24529
24848
|
]
|
|
@@ -24534,7 +24853,7 @@ var init_FilterGroup = __esm({
|
|
|
24534
24853
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col gap-4", lookStyles6[look], className), children: [
|
|
24535
24854
|
showIcon && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-muted-foreground", children: [
|
|
24536
24855
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "filter", className: "h-4 w-4" }),
|
|
24537
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: "
|
|
24856
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: t("filterGroup.filters") })
|
|
24538
24857
|
] }),
|
|
24539
24858
|
filters.map((filter) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
24540
24859
|
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-xs font-bold text-muted-foreground uppercase tracking-wide", children: filter.label }),
|
|
@@ -24557,7 +24876,7 @@ var init_FilterGroup = __esm({
|
|
|
24557
24876
|
`${filter.field}_from`,
|
|
24558
24877
|
e.target.value || null
|
|
24559
24878
|
),
|
|
24560
|
-
placeholder: "
|
|
24879
|
+
placeholder: t("filterGroup.from"),
|
|
24561
24880
|
clearable: true,
|
|
24562
24881
|
onClear: () => handleFilterSelect(`${filter.field}_from`, null)
|
|
24563
24882
|
}
|
|
@@ -24571,7 +24890,7 @@ var init_FilterGroup = __esm({
|
|
|
24571
24890
|
`${filter.field}_to`,
|
|
24572
24891
|
e.target.value || null
|
|
24573
24892
|
),
|
|
24574
|
-
placeholder: "
|
|
24893
|
+
placeholder: t("filterGroup.to"),
|
|
24575
24894
|
clearable: true,
|
|
24576
24895
|
onClear: () => handleFilterSelect(`${filter.field}_to`, null)
|
|
24577
24896
|
}
|
|
@@ -24591,7 +24910,7 @@ var init_FilterGroup = __esm({
|
|
|
24591
24910
|
value: selectedValues[filter.field] || "all",
|
|
24592
24911
|
onChange: (e) => handleFilterSelect(filter.field, e.target.value),
|
|
24593
24912
|
options: [
|
|
24594
|
-
{ value: "all", label: "
|
|
24913
|
+
{ value: "all", label: t("filterGroup.all") },
|
|
24595
24914
|
...filter.options?.map((opt) => ({
|
|
24596
24915
|
value: opt,
|
|
24597
24916
|
label: opt
|
|
@@ -24608,7 +24927,7 @@ var init_FilterGroup = __esm({
|
|
|
24608
24927
|
onClick: handleClearAll,
|
|
24609
24928
|
leftIcon: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "x", className: "h-3.5 w-3.5" }),
|
|
24610
24929
|
className: "self-start",
|
|
24611
|
-
children: "
|
|
24930
|
+
children: t("filterGroup.clearAll")
|
|
24612
24931
|
}
|
|
24613
24932
|
)
|
|
24614
24933
|
] });
|
|
@@ -24674,7 +24993,7 @@ var init_FilterGroup = __esm({
|
|
|
24674
24993
|
value: selectedValues[filter.field] || "all",
|
|
24675
24994
|
onChange: (e) => handleFilterSelect(filter.field, e.target.value),
|
|
24676
24995
|
options: [
|
|
24677
|
-
{ value: "all", label:
|
|
24996
|
+
{ value: "all", label: t("filterGroup.allOf", { label: filter.label }) },
|
|
24678
24997
|
...filter.options?.map((opt) => ({
|
|
24679
24998
|
value: opt,
|
|
24680
24999
|
label: opt
|
|
@@ -24703,7 +25022,7 @@ var init_FilterGroup = __esm({
|
|
|
24703
25022
|
field
|
|
24704
25023
|
);
|
|
24705
25024
|
}),
|
|
24706
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", onClick: handleClearAll, children: "
|
|
25025
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", onClick: handleClearAll, children: t("filterGroup.clearAll") })
|
|
24707
25026
|
] })
|
|
24708
25027
|
]
|
|
24709
25028
|
}
|
|
@@ -24728,7 +25047,7 @@ var init_FilterGroup = __esm({
|
|
|
24728
25047
|
className: "text-muted-foreground",
|
|
24729
25048
|
children: [
|
|
24730
25049
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "filter", className: "h-4 w-4" }),
|
|
24731
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: "
|
|
25050
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: t("filterGroup.filters") })
|
|
24732
25051
|
]
|
|
24733
25052
|
}
|
|
24734
25053
|
),
|
|
@@ -24754,7 +25073,7 @@ var init_FilterGroup = __esm({
|
|
|
24754
25073
|
`${filter.field}_from`,
|
|
24755
25074
|
e.target.value || null
|
|
24756
25075
|
),
|
|
24757
|
-
placeholder: "
|
|
25076
|
+
placeholder: t("filterGroup.from"),
|
|
24758
25077
|
clearable: true,
|
|
24759
25078
|
onClear: () => handleFilterSelect(`${filter.field}_from`, null),
|
|
24760
25079
|
className: "min-w-[130px]"
|
|
@@ -24770,7 +25089,7 @@ var init_FilterGroup = __esm({
|
|
|
24770
25089
|
`${filter.field}_to`,
|
|
24771
25090
|
e.target.value || null
|
|
24772
25091
|
),
|
|
24773
|
-
placeholder: "
|
|
25092
|
+
placeholder: t("filterGroup.to"),
|
|
24774
25093
|
clearable: true,
|
|
24775
25094
|
onClear: () => handleFilterSelect(`${filter.field}_to`, null),
|
|
24776
25095
|
className: "min-w-[130px]"
|
|
@@ -24792,7 +25111,7 @@ var init_FilterGroup = __esm({
|
|
|
24792
25111
|
value: selectedValues[filter.field] || "all",
|
|
24793
25112
|
onChange: (e) => handleFilterSelect(filter.field, e.target.value),
|
|
24794
25113
|
options: [
|
|
24795
|
-
{ value: "all", label: "
|
|
25114
|
+
{ value: "all", label: t("filterGroup.all") },
|
|
24796
25115
|
...filter.options?.map((opt) => ({
|
|
24797
25116
|
value: opt,
|
|
24798
25117
|
label: opt
|
|
@@ -24803,10 +25122,7 @@ var init_FilterGroup = __esm({
|
|
|
24803
25122
|
)
|
|
24804
25123
|
] }, filter.field)),
|
|
24805
25124
|
activeFilterCount > 0 && /* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", align: "center", className: "ml-auto", children: [
|
|
24806
|
-
/* @__PURE__ */ jsxRuntime.
|
|
24807
|
-
activeFilterCount,
|
|
24808
|
-
" active"
|
|
24809
|
-
] }),
|
|
25125
|
+
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "primary", size: "md", children: t("filterGroup.activeCount", { count: activeFilterCount }) }),
|
|
24810
25126
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
24811
25127
|
Button,
|
|
24812
25128
|
{
|
|
@@ -24814,7 +25130,7 @@ var init_FilterGroup = __esm({
|
|
|
24814
25130
|
size: "sm",
|
|
24815
25131
|
onClick: handleClearAll,
|
|
24816
25132
|
leftIcon: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "x", className: "h-3.5 w-3.5" }),
|
|
24817
|
-
children: "
|
|
25133
|
+
children: t("filterGroup.clearAll")
|
|
24818
25134
|
}
|
|
24819
25135
|
)
|
|
24820
25136
|
] })
|
|
@@ -25758,19 +26074,20 @@ var init_RepeatableFormSection = __esm({
|
|
|
25758
26074
|
RepeatableFormSection.displayName = "RepeatableFormSection";
|
|
25759
26075
|
}
|
|
25760
26076
|
});
|
|
25761
|
-
var
|
|
26077
|
+
var actionTypeLabelKeys, actionTypeIcons, ViolationAlert;
|
|
25762
26078
|
var init_ViolationAlert = __esm({
|
|
25763
26079
|
"components/core/molecules/ViolationAlert.tsx"() {
|
|
25764
26080
|
init_cn();
|
|
26081
|
+
init_useTranslate();
|
|
25765
26082
|
init_Box();
|
|
25766
26083
|
init_Stack();
|
|
25767
26084
|
init_Typography();
|
|
25768
26085
|
init_Button();
|
|
25769
26086
|
init_Icon();
|
|
25770
|
-
|
|
25771
|
-
measure: "
|
|
25772
|
-
admin: "
|
|
25773
|
-
penalty: "
|
|
26087
|
+
actionTypeLabelKeys = {
|
|
26088
|
+
measure: "violationAlert.actionType.measure",
|
|
26089
|
+
admin: "violationAlert.actionType.admin",
|
|
26090
|
+
penalty: "violationAlert.actionType.penalty"
|
|
25774
26091
|
};
|
|
25775
26092
|
actionTypeIcons = {
|
|
25776
26093
|
measure: "alert-triangle",
|
|
@@ -25787,10 +26104,11 @@ var init_ViolationAlert = __esm({
|
|
|
25787
26104
|
className,
|
|
25788
26105
|
...flatProps
|
|
25789
26106
|
}) => {
|
|
26107
|
+
const { t } = useTranslate();
|
|
25790
26108
|
const resolvedViolation = violation ?? {
|
|
25791
26109
|
law: "",
|
|
25792
26110
|
article: "",
|
|
25793
|
-
message: flatProps.message ?? "
|
|
26111
|
+
message: flatProps.message ?? t("violationAlert.fallbackMessage"),
|
|
25794
26112
|
actionType: "measure"
|
|
25795
26113
|
};
|
|
25796
26114
|
const effectiveSeverity = severity ?? (resolvedViolation.actionType === "measure" ? "warning" : "error");
|
|
@@ -25875,7 +26193,7 @@ var init_ViolationAlert = __esm({
|
|
|
25875
26193
|
{
|
|
25876
26194
|
variant: "caption",
|
|
25877
26195
|
className: cn(textColor, "opacity-75"),
|
|
25878
|
-
children:
|
|
26196
|
+
children: t(actionTypeLabelKeys[resolvedViolation.actionType])
|
|
25879
26197
|
}
|
|
25880
26198
|
)
|
|
25881
26199
|
] })
|
|
@@ -25906,7 +26224,7 @@ var init_ViolationAlert = __esm({
|
|
|
25906
26224
|
{
|
|
25907
26225
|
variant: "caption",
|
|
25908
26226
|
className: cn(textColor, "opacity-75"),
|
|
25909
|
-
children: "
|
|
26227
|
+
children: t("violationAlert.adminLabel")
|
|
25910
26228
|
}
|
|
25911
26229
|
),
|
|
25912
26230
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -25925,7 +26243,7 @@ var init_ViolationAlert = __esm({
|
|
|
25925
26243
|
{
|
|
25926
26244
|
variant: "caption",
|
|
25927
26245
|
className: cn(textColor, "opacity-75"),
|
|
25928
|
-
children: "
|
|
26246
|
+
children: t("violationAlert.penaltyLabel")
|
|
25929
26247
|
}
|
|
25930
26248
|
),
|
|
25931
26249
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -25950,7 +26268,7 @@ var init_ViolationAlert = __esm({
|
|
|
25950
26268
|
className: cn(textColor, "self-start"),
|
|
25951
26269
|
children: [
|
|
25952
26270
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "arrow-right", size: "sm", className: "mr-1" }),
|
|
25953
|
-
"
|
|
26271
|
+
t("violationAlert.goToField")
|
|
25954
26272
|
]
|
|
25955
26273
|
}
|
|
25956
26274
|
)
|
|
@@ -26266,6 +26584,7 @@ var init_LineChart = __esm({
|
|
|
26266
26584
|
"use client";
|
|
26267
26585
|
init_cn();
|
|
26268
26586
|
init_atoms2();
|
|
26587
|
+
init_useTranslate();
|
|
26269
26588
|
LineChart2 = ({
|
|
26270
26589
|
data,
|
|
26271
26590
|
width = 400,
|
|
@@ -26277,6 +26596,7 @@ var init_LineChart = __esm({
|
|
|
26277
26596
|
areaColor = "var(--color-primary)",
|
|
26278
26597
|
className
|
|
26279
26598
|
}) => {
|
|
26599
|
+
const { t } = useTranslate();
|
|
26280
26600
|
const gradientId = React84.useId();
|
|
26281
26601
|
const safeData = data ?? [];
|
|
26282
26602
|
const sortedData = React84.useMemo(() => {
|
|
@@ -26313,7 +26633,7 @@ var init_LineChart = __esm({
|
|
|
26313
26633
|
return `${linePath} L ${last.x} ${bottom} L ${first.x} ${bottom} Z`;
|
|
26314
26634
|
}, [linePath, points, height, showArea]);
|
|
26315
26635
|
if (safeData.length === 0) {
|
|
26316
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("flex items-center justify-center text-muted-foreground", className), style: { width, height }, children: "
|
|
26636
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("flex items-center justify-center text-muted-foreground", className), style: { width, height }, children: t("empty.noData") });
|
|
26317
26637
|
}
|
|
26318
26638
|
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn(className), children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
26319
26639
|
"svg",
|
|
@@ -28220,6 +28540,7 @@ var init_GraphView = __esm({
|
|
|
28220
28540
|
"use client";
|
|
28221
28541
|
init_cn();
|
|
28222
28542
|
init_atoms2();
|
|
28543
|
+
init_useTranslate();
|
|
28223
28544
|
GROUP_COLORS = [
|
|
28224
28545
|
"#3b82f6",
|
|
28225
28546
|
// blue-500
|
|
@@ -28252,6 +28573,7 @@ var init_GraphView = __esm({
|
|
|
28252
28573
|
showLabels = true,
|
|
28253
28574
|
zoomToFit = true
|
|
28254
28575
|
}) => {
|
|
28576
|
+
const { t } = useTranslate();
|
|
28255
28577
|
const containerRef = React84.useRef(null);
|
|
28256
28578
|
const animRef = React84.useRef(0);
|
|
28257
28579
|
const [simNodes, setSimNodes] = React84.useState([]);
|
|
@@ -28429,7 +28751,7 @@ var init_GraphView = __esm({
|
|
|
28429
28751
|
[onNodeClick]
|
|
28430
28752
|
);
|
|
28431
28753
|
if (nodes.length === 0) {
|
|
28432
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("flex items-center justify-center", className), style: { width: w, height: h }, children: /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "text-muted-foreground text-sm", children: "
|
|
28754
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("flex items-center justify-center", className), style: { width: w, height: h }, children: /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "text-muted-foreground text-sm", children: t("display.noGraphData") }) });
|
|
28433
28755
|
}
|
|
28434
28756
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
28435
28757
|
Box,
|
|
@@ -28885,11 +29207,12 @@ var init_UploadDropZone = __esm({
|
|
|
28885
29207
|
init_Icon();
|
|
28886
29208
|
init_Typography();
|
|
28887
29209
|
init_useEventBus();
|
|
29210
|
+
init_useTranslate();
|
|
28888
29211
|
UploadDropZone = ({
|
|
28889
29212
|
accept,
|
|
28890
29213
|
maxSize,
|
|
28891
29214
|
maxFiles = 1,
|
|
28892
|
-
label
|
|
29215
|
+
label,
|
|
28893
29216
|
description,
|
|
28894
29217
|
disabled = false,
|
|
28895
29218
|
action,
|
|
@@ -28897,22 +29220,24 @@ var init_UploadDropZone = __esm({
|
|
|
28897
29220
|
onFiles,
|
|
28898
29221
|
className
|
|
28899
29222
|
}) => {
|
|
29223
|
+
const { t } = useTranslate();
|
|
29224
|
+
const resolvedLabel = label ?? t("upload.dropOrBrowse");
|
|
28900
29225
|
const [isDragOver, setIsDragOver] = React84.useState(false);
|
|
28901
29226
|
const [error, setError] = React84.useState(null);
|
|
28902
29227
|
const inputRef = React84.useRef(null);
|
|
28903
29228
|
const eventBus = useSafeEventBus7();
|
|
28904
29229
|
const defaultDescription = [
|
|
28905
|
-
accept ?
|
|
28906
|
-
maxSize ?
|
|
28907
|
-
maxFiles > 1 ?
|
|
29230
|
+
accept ? t("upload.accepted", { accept }) : null,
|
|
29231
|
+
maxSize ? t("upload.maxSize", { size: formatFileSize(maxSize) }) : null,
|
|
29232
|
+
maxFiles > 1 ? t("upload.maxFiles", { count: maxFiles }) : null
|
|
28908
29233
|
].filter(Boolean).join(". ");
|
|
28909
29234
|
const validateFiles = React84.useCallback(
|
|
28910
29235
|
(files) => {
|
|
28911
29236
|
if (files.length > maxFiles) {
|
|
28912
|
-
return { valid: [], error:
|
|
29237
|
+
return { valid: [], error: t("upload.error.maxFiles", { count: maxFiles }) };
|
|
28913
29238
|
}
|
|
28914
29239
|
if (accept) {
|
|
28915
|
-
const acceptedTypes = accept.split(",").map((
|
|
29240
|
+
const acceptedTypes = accept.split(",").map((s) => s.trim());
|
|
28916
29241
|
const invalid = files.filter((file) => {
|
|
28917
29242
|
return !acceptedTypes.some((type) => {
|
|
28918
29243
|
if (type.endsWith("/*")) {
|
|
@@ -28922,7 +29247,7 @@ var init_UploadDropZone = __esm({
|
|
|
28922
29247
|
});
|
|
28923
29248
|
});
|
|
28924
29249
|
if (invalid.length > 0) {
|
|
28925
|
-
return { valid: [], error:
|
|
29250
|
+
return { valid: [], error: t("upload.error.invalidType", { name: invalid[0].name }) };
|
|
28926
29251
|
}
|
|
28927
29252
|
}
|
|
28928
29253
|
if (maxSize) {
|
|
@@ -28930,13 +29255,13 @@ var init_UploadDropZone = __esm({
|
|
|
28930
29255
|
if (tooLarge.length > 0) {
|
|
28931
29256
|
return {
|
|
28932
29257
|
valid: [],
|
|
28933
|
-
error:
|
|
29258
|
+
error: t("upload.error.tooLarge", { name: tooLarge[0].name, size: formatFileSize(maxSize) })
|
|
28934
29259
|
};
|
|
28935
29260
|
}
|
|
28936
29261
|
}
|
|
28937
29262
|
return { valid: files, error: null };
|
|
28938
29263
|
},
|
|
28939
|
-
[accept, maxSize, maxFiles]
|
|
29264
|
+
[accept, maxSize, maxFiles, t]
|
|
28940
29265
|
);
|
|
28941
29266
|
const handleFiles = React84.useCallback(
|
|
28942
29267
|
(files) => {
|
|
@@ -29007,7 +29332,7 @@ var init_UploadDropZone = __esm({
|
|
|
29007
29332
|
handleClick();
|
|
29008
29333
|
}
|
|
29009
29334
|
},
|
|
29010
|
-
"aria-label":
|
|
29335
|
+
"aria-label": resolvedLabel,
|
|
29011
29336
|
children: [
|
|
29012
29337
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
29013
29338
|
"input",
|
|
@@ -29023,7 +29348,7 @@ var init_UploadDropZone = __esm({
|
|
|
29023
29348
|
}
|
|
29024
29349
|
),
|
|
29025
29350
|
error ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "file-warning", size: "lg", className: "text-error mb-2" }) : /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "upload", size: "lg", className: "text-muted-foreground mb-2" }),
|
|
29026
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body1", className: "text-center font-medium mb-1", children: isDragOver ? "
|
|
29351
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body1", className: "text-center font-medium mb-1", children: isDragOver ? t("upload.dropFilesHere") : resolvedLabel }),
|
|
29027
29352
|
error ? /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "error", className: "text-center", children: error }) : /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "muted", className: "text-center", children: description ?? defaultDescription })
|
|
29028
29353
|
]
|
|
29029
29354
|
}
|
|
@@ -29445,7 +29770,7 @@ function TableView({
|
|
|
29445
29770
|
{
|
|
29446
29771
|
checked: selected.has(id),
|
|
29447
29772
|
onChange: () => toggleRow(id),
|
|
29448
|
-
"aria-label":
|
|
29773
|
+
"aria-label": t("table.selectRow", { id })
|
|
29449
29774
|
}
|
|
29450
29775
|
) }),
|
|
29451
29776
|
hasRenderProp ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex-1 min-w-0", children: children(row, index) }) : colDefs.map((col) => {
|
|
@@ -32154,7 +32479,7 @@ var init_QrScanner = __esm({
|
|
|
32154
32479
|
className: "inset-0 flex-col items-center justify-center gap-2 bg-black bg-opacity-80 text-center",
|
|
32155
32480
|
children: [
|
|
32156
32481
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "camera", className: "h-8 w-8 text-white", "aria-hidden": "true" }),
|
|
32157
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-white", children: "
|
|
32482
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-white", children: t("qrScanner.cameraUnavailable") }),
|
|
32158
32483
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", className: "text-white opacity-70", children: cameraError.message })
|
|
32159
32484
|
]
|
|
32160
32485
|
}
|
|
@@ -32165,7 +32490,7 @@ var init_QrScanner = __esm({
|
|
|
32165
32490
|
position: "absolute",
|
|
32166
32491
|
display: "flex",
|
|
32167
32492
|
className: "inset-0 items-center justify-center bg-black bg-opacity-60",
|
|
32168
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-white", children: "
|
|
32493
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-white", children: t("qrScanner.paused") })
|
|
32169
32494
|
}
|
|
32170
32495
|
),
|
|
32171
32496
|
showCameraControls && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -32184,7 +32509,7 @@ var init_QrScanner = __esm({
|
|
|
32184
32509
|
"rounded-full bg-black bg-opacity-60 p-2 text-white",
|
|
32185
32510
|
"hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
|
|
32186
32511
|
),
|
|
32187
|
-
"aria-label": isPaused ? "
|
|
32512
|
+
"aria-label": isPaused ? t("qrScanner.resumeScanning") : t("qrScanner.pauseScanning"),
|
|
32188
32513
|
children: isPaused ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "play", className: "h-4 w-4" }) : /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "pause", className: "h-4 w-4" })
|
|
32189
32514
|
}
|
|
32190
32515
|
),
|
|
@@ -32197,7 +32522,7 @@ var init_QrScanner = __esm({
|
|
|
32197
32522
|
"rounded-full bg-black bg-opacity-60 p-2 text-white",
|
|
32198
32523
|
"hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
|
|
32199
32524
|
),
|
|
32200
|
-
"aria-label":
|
|
32525
|
+
"aria-label": currentFacing === "environment" ? t("qrScanner.switchToFrontCamera") : t("qrScanner.switchToRearCamera"),
|
|
32201
32526
|
children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "refresh-cw", className: "h-4 w-4" })
|
|
32202
32527
|
}
|
|
32203
32528
|
),
|
|
@@ -32211,7 +32536,7 @@ var init_QrScanner = __esm({
|
|
|
32211
32536
|
"hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
|
|
32212
32537
|
),
|
|
32213
32538
|
"aria-label": t("aria.mockScanDev"),
|
|
32214
|
-
children: "
|
|
32539
|
+
children: t("qrScanner.mockScan")
|
|
32215
32540
|
}
|
|
32216
32541
|
)
|
|
32217
32542
|
]
|
|
@@ -32229,6 +32554,7 @@ var init_OptionConstraintGroup = __esm({
|
|
|
32229
32554
|
"components/core/molecules/OptionConstraintGroup.tsx"() {
|
|
32230
32555
|
init_cn();
|
|
32231
32556
|
init_useEventBus();
|
|
32557
|
+
init_useTranslate();
|
|
32232
32558
|
init_Typography();
|
|
32233
32559
|
init_Box();
|
|
32234
32560
|
init_Label();
|
|
@@ -32238,36 +32564,36 @@ var init_OptionConstraintGroup = __esm({
|
|
|
32238
32564
|
const sign = delta >= 0 ? "+" : "-";
|
|
32239
32565
|
return `${sign}$${Math.abs(delta).toFixed(2)}`;
|
|
32240
32566
|
};
|
|
32241
|
-
constraintHint = (constraint) => {
|
|
32567
|
+
constraintHint = (constraint, t) => {
|
|
32242
32568
|
if (constraint.type === "single") {
|
|
32243
|
-
return constraint.required ? "
|
|
32569
|
+
return constraint.required ? t("optionConstraint.requiredOne") : t("optionConstraint.optionalOne");
|
|
32244
32570
|
}
|
|
32245
32571
|
const { min, max } = constraint;
|
|
32246
32572
|
if (min && max) {
|
|
32247
|
-
return min === max ?
|
|
32573
|
+
return min === max ? t("optionConstraint.pickExactly", { count: min }) : t("optionConstraint.pickRange", { min, max });
|
|
32248
32574
|
}
|
|
32249
|
-
if (min) return
|
|
32250
|
-
if (max) return
|
|
32251
|
-
return "
|
|
32575
|
+
if (min) return t("optionConstraint.pickAtLeast", { count: min });
|
|
32576
|
+
if (max) return t("optionConstraint.pickUpTo", { count: max });
|
|
32577
|
+
return t("optionConstraint.optional");
|
|
32252
32578
|
};
|
|
32253
|
-
validateSelection = (selected, constraint) => {
|
|
32579
|
+
validateSelection = (selected, constraint, t) => {
|
|
32254
32580
|
if (constraint.type === "single") {
|
|
32255
32581
|
if (constraint.required && selected.length === 0) {
|
|
32256
|
-
return "
|
|
32582
|
+
return t("optionConstraint.error.pickOne");
|
|
32257
32583
|
}
|
|
32258
32584
|
if (selected.length > 1) {
|
|
32259
|
-
return "
|
|
32585
|
+
return t("optionConstraint.error.pickOnlyOne");
|
|
32260
32586
|
}
|
|
32261
32587
|
return void 0;
|
|
32262
32588
|
}
|
|
32263
32589
|
const { min, max } = constraint;
|
|
32264
32590
|
if (min !== void 0 && selected.length < min) {
|
|
32265
32591
|
const remaining = min - selected.length;
|
|
32266
|
-
return
|
|
32592
|
+
return t("optionConstraint.error.pickMore", { count: remaining });
|
|
32267
32593
|
}
|
|
32268
32594
|
if (max !== void 0 && selected.length > max) {
|
|
32269
32595
|
const excess = selected.length - max;
|
|
32270
|
-
return
|
|
32596
|
+
return t("optionConstraint.error.removeOptions", { count: excess });
|
|
32271
32597
|
}
|
|
32272
32598
|
return void 0;
|
|
32273
32599
|
};
|
|
@@ -32284,8 +32610,9 @@ var init_OptionConstraintGroup = __esm({
|
|
|
32284
32610
|
className
|
|
32285
32611
|
}) => {
|
|
32286
32612
|
const eventBus = useEventBus();
|
|
32287
|
-
const
|
|
32288
|
-
const
|
|
32613
|
+
const { t } = useTranslate();
|
|
32614
|
+
const hint = constraintHint(constraint, t);
|
|
32615
|
+
const error = validateSelection(selected, constraint, t);
|
|
32289
32616
|
const inputName = `option-${groupId}`;
|
|
32290
32617
|
const labelTextSize = size === "sm" ? "text-sm" : "text-base";
|
|
32291
32618
|
const optionGap = size === "sm" ? "gap-2" : "gap-2.5";
|
|
@@ -32385,7 +32712,7 @@ var init_OptionConstraintGroup = __esm({
|
|
|
32385
32712
|
variant: "caption",
|
|
32386
32713
|
color: "warning",
|
|
32387
32714
|
className: "rounded border border-warning/40 px-1.5 py-0.5",
|
|
32388
|
-
children: "
|
|
32715
|
+
children: t("optionConstraint.outOfStock")
|
|
32389
32716
|
}
|
|
32390
32717
|
)
|
|
32391
32718
|
]
|
|
@@ -32707,6 +33034,7 @@ function changeBlockType(block, type) {
|
|
|
32707
33034
|
return { id: block.id, type, content: seed };
|
|
32708
33035
|
}
|
|
32709
33036
|
function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
33037
|
+
const { t } = useTranslate();
|
|
32710
33038
|
const [open, setOpen] = React84.useState(false);
|
|
32711
33039
|
const ref = React84.useRef(null);
|
|
32712
33040
|
React84.useEffect(() => {
|
|
@@ -32726,7 +33054,7 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
32726
33054
|
{
|
|
32727
33055
|
type: "button",
|
|
32728
33056
|
variant: "ghost",
|
|
32729
|
-
"aria-label": "
|
|
33057
|
+
"aria-label": t("richBlockEditor.blockActions"),
|
|
32730
33058
|
className: cn(
|
|
32731
33059
|
"inline-flex items-center justify-center",
|
|
32732
33060
|
"h-6 w-6 rounded-sm p-0 gap-0",
|
|
@@ -32748,7 +33076,7 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
32748
33076
|
"py-1 text-sm"
|
|
32749
33077
|
),
|
|
32750
33078
|
children: [
|
|
32751
|
-
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground", children:
|
|
33079
|
+
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground", children: t(BLOCK_TYPE_LABEL_KEY[block.type]) }),
|
|
32752
33080
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
32753
33081
|
Button,
|
|
32754
33082
|
{
|
|
@@ -32762,7 +33090,8 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
32762
33090
|
},
|
|
32763
33091
|
children: [
|
|
32764
33092
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "plus", className: "w-3.5 h-3.5" }),
|
|
32765
|
-
"
|
|
33093
|
+
" ",
|
|
33094
|
+
t("richBlockEditor.duplicate")
|
|
32766
33095
|
]
|
|
32767
33096
|
}
|
|
32768
33097
|
),
|
|
@@ -32779,14 +33108,15 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
32779
33108
|
},
|
|
32780
33109
|
children: [
|
|
32781
33110
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "trash", className: "w-3.5 h-3.5" }),
|
|
32782
|
-
"
|
|
33111
|
+
" ",
|
|
33112
|
+
t("common.delete")
|
|
32783
33113
|
]
|
|
32784
33114
|
}
|
|
32785
33115
|
),
|
|
32786
33116
|
CHANGEABLE_TYPES.includes(block.type) && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
32787
33117
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "my-1 border-t border-border" }),
|
|
32788
|
-
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground", children: "
|
|
32789
|
-
CHANGEABLE_TYPES.filter((
|
|
33118
|
+
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground", children: t("richBlockEditor.turnInto") }),
|
|
33119
|
+
CHANGEABLE_TYPES.filter((bt) => bt !== block.type).map((bt) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
32790
33120
|
Button,
|
|
32791
33121
|
{
|
|
32792
33122
|
type: "button",
|
|
@@ -32794,12 +33124,12 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
32794
33124
|
role: "menuitem",
|
|
32795
33125
|
className: "flex w-full items-center gap-2 px-2 py-1.5 text-left justify-start rounded-none",
|
|
32796
33126
|
onClick: () => {
|
|
32797
|
-
onChangeType(
|
|
33127
|
+
onChangeType(bt);
|
|
32798
33128
|
setOpen(false);
|
|
32799
33129
|
},
|
|
32800
|
-
children:
|
|
33130
|
+
children: t(BLOCK_TYPE_LABEL_KEY[bt])
|
|
32801
33131
|
},
|
|
32802
|
-
|
|
33132
|
+
bt
|
|
32803
33133
|
))
|
|
32804
33134
|
] })
|
|
32805
33135
|
]
|
|
@@ -32861,6 +33191,7 @@ function BlockRow({
|
|
|
32861
33191
|
onInsertAfter,
|
|
32862
33192
|
onChangeType
|
|
32863
33193
|
}) {
|
|
33194
|
+
const { t } = useTranslate();
|
|
32864
33195
|
const setContent = React84.useCallback(
|
|
32865
33196
|
(next) => onUpdate((b) => ({ ...b, content: next })),
|
|
32866
33197
|
[onUpdate]
|
|
@@ -32910,8 +33241,8 @@ function BlockRow({
|
|
|
32910
33241
|
tag: "h1",
|
|
32911
33242
|
value: block.content ?? "",
|
|
32912
33243
|
readOnly,
|
|
32913
|
-
placeholder: placeholder ?? "
|
|
32914
|
-
ariaLabel: "
|
|
33244
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.heading1"),
|
|
33245
|
+
ariaLabel: t("richBlockEditor.aria.heading1Block"),
|
|
32915
33246
|
className: "text-3xl font-bold leading-tight",
|
|
32916
33247
|
onValueChange: setContent
|
|
32917
33248
|
}
|
|
@@ -32923,8 +33254,8 @@ function BlockRow({
|
|
|
32923
33254
|
tag: "h2",
|
|
32924
33255
|
value: block.content ?? "",
|
|
32925
33256
|
readOnly,
|
|
32926
|
-
placeholder: placeholder ?? "
|
|
32927
|
-
ariaLabel: "
|
|
33257
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.heading2"),
|
|
33258
|
+
ariaLabel: t("richBlockEditor.aria.heading2Block"),
|
|
32928
33259
|
className: "text-2xl font-semibold leading-tight",
|
|
32929
33260
|
onValueChange: setContent
|
|
32930
33261
|
}
|
|
@@ -32936,8 +33267,8 @@ function BlockRow({
|
|
|
32936
33267
|
tag: "h3",
|
|
32937
33268
|
value: block.content ?? "",
|
|
32938
33269
|
readOnly,
|
|
32939
|
-
placeholder: placeholder ?? "
|
|
32940
|
-
ariaLabel: "
|
|
33270
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.heading3"),
|
|
33271
|
+
ariaLabel: t("richBlockEditor.aria.heading3Block"),
|
|
32941
33272
|
className: "text-xl font-semibold leading-tight",
|
|
32942
33273
|
onValueChange: setContent
|
|
32943
33274
|
}
|
|
@@ -32949,8 +33280,8 @@ function BlockRow({
|
|
|
32949
33280
|
tag: "blockquote",
|
|
32950
33281
|
value: block.content ?? "",
|
|
32951
33282
|
readOnly,
|
|
32952
|
-
placeholder: placeholder ?? "
|
|
32953
|
-
ariaLabel: "
|
|
33283
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.quote"),
|
|
33284
|
+
ariaLabel: t("richBlockEditor.aria.quoteBlock"),
|
|
32954
33285
|
className: "border-l-4 border-primary/60 pl-4 italic text-muted-foreground",
|
|
32955
33286
|
onValueChange: setContent
|
|
32956
33287
|
}
|
|
@@ -32958,13 +33289,13 @@ function BlockRow({
|
|
|
32958
33289
|
case "code":
|
|
32959
33290
|
return /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "rounded-md border border-border bg-muted/40", children: [
|
|
32960
33291
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex items-center justify-between border-b border-border px-3 py-1 text-xs text-muted-foreground", children: [
|
|
32961
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { as: "span", variant: "caption", className: "uppercase tracking-wide", children: "
|
|
33292
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { as: "span", variant: "caption", className: "uppercase tracking-wide", children: t("richBlockEditor.blockType.code") }),
|
|
32962
33293
|
!readOnly && /* @__PURE__ */ jsxRuntime.jsx(
|
|
32963
33294
|
Input,
|
|
32964
33295
|
{
|
|
32965
33296
|
inputType: "text",
|
|
32966
33297
|
value: String(block.metadata?.language ?? "plaintext"),
|
|
32967
|
-
"aria-label": "
|
|
33298
|
+
"aria-label": t("richBlockEditor.aria.codeLanguage"),
|
|
32968
33299
|
className: cn(
|
|
32969
33300
|
"h-6 w-32 rounded-sm border border-border bg-background",
|
|
32970
33301
|
"px-2 text-xs outline-none focus:ring-1 focus:ring-ring"
|
|
@@ -32980,8 +33311,8 @@ function BlockRow({
|
|
|
32980
33311
|
tag: "pre",
|
|
32981
33312
|
value: block.content ?? "",
|
|
32982
33313
|
readOnly,
|
|
32983
|
-
placeholder: placeholder ?? "
|
|
32984
|
-
ariaLabel: "
|
|
33314
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.code"),
|
|
33315
|
+
ariaLabel: t("richBlockEditor.aria.codeBlock"),
|
|
32985
33316
|
className: "block whitespace-pre-wrap p-3 font-mono text-sm leading-relaxed",
|
|
32986
33317
|
onValueChange: setContent
|
|
32987
33318
|
}
|
|
@@ -32994,7 +33325,7 @@ function BlockRow({
|
|
|
32994
33325
|
const caption = String(block.metadata?.caption ?? "");
|
|
32995
33326
|
const imgProps = {
|
|
32996
33327
|
src: url,
|
|
32997
|
-
alt: caption || "
|
|
33328
|
+
alt: caption || t("richBlockEditor.embeddedImage"),
|
|
32998
33329
|
className: "max-h-96 w-full rounded-md border border-border object-contain"
|
|
32999
33330
|
};
|
|
33000
33331
|
return /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "space-y-2", children: [
|
|
@@ -33008,7 +33339,8 @@ function BlockRow({
|
|
|
33008
33339
|
),
|
|
33009
33340
|
children: [
|
|
33010
33341
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "image", className: "mr-2 w-4 h-4" }),
|
|
33011
|
-
"
|
|
33342
|
+
" ",
|
|
33343
|
+
t("richBlockEditor.noImageUrl")
|
|
33012
33344
|
]
|
|
33013
33345
|
}
|
|
33014
33346
|
),
|
|
@@ -33019,7 +33351,7 @@ function BlockRow({
|
|
|
33019
33351
|
inputType: "url",
|
|
33020
33352
|
value: url,
|
|
33021
33353
|
placeholder: "https://example.com/image.png",
|
|
33022
|
-
"aria-label": "
|
|
33354
|
+
"aria-label": t("richBlockEditor.aria.imageUrl"),
|
|
33023
33355
|
className: cn(
|
|
33024
33356
|
"h-8 flex-1 rounded-sm border border-border bg-background",
|
|
33025
33357
|
"px-2 text-sm outline-none focus:ring-1 focus:ring-ring"
|
|
@@ -33032,8 +33364,8 @@ function BlockRow({
|
|
|
33032
33364
|
{
|
|
33033
33365
|
inputType: "text",
|
|
33034
33366
|
value: caption,
|
|
33035
|
-
placeholder: "
|
|
33036
|
-
"aria-label": "
|
|
33367
|
+
placeholder: t("richBlockEditor.placeholder.caption"),
|
|
33368
|
+
"aria-label": t("richBlockEditor.aria.imageCaption"),
|
|
33037
33369
|
className: cn(
|
|
33038
33370
|
"h-8 flex-1 rounded-sm border border-border bg-background",
|
|
33039
33371
|
"px-2 text-sm outline-none focus:ring-1 focus:ring-ring"
|
|
@@ -33064,8 +33396,8 @@ function BlockRow({
|
|
|
33064
33396
|
tag: "span",
|
|
33065
33397
|
value: child.content ?? "",
|
|
33066
33398
|
readOnly,
|
|
33067
|
-
placeholder: "
|
|
33068
|
-
ariaLabel: "
|
|
33399
|
+
placeholder: t("richBlockEditor.placeholder.listItem"),
|
|
33400
|
+
ariaLabel: t("richBlockEditor.aria.listItem"),
|
|
33069
33401
|
className: "inline-block min-w-[1ch] flex-1",
|
|
33070
33402
|
onValueChange: (next) => setChildContent(child.id, next)
|
|
33071
33403
|
}
|
|
@@ -33075,7 +33407,7 @@ function BlockRow({
|
|
|
33075
33407
|
{
|
|
33076
33408
|
type: "button",
|
|
33077
33409
|
variant: "ghost",
|
|
33078
|
-
"aria-label": "
|
|
33410
|
+
"aria-label": t("richBlockEditor.aria.removeListItem"),
|
|
33079
33411
|
className: cn(
|
|
33080
33412
|
"h-5 w-5 shrink-0 rounded-sm text-muted-foreground p-0 gap-0",
|
|
33081
33413
|
"opacity-0 group-hover/item:opacity-100 hover:bg-muted hover:text-foreground"
|
|
@@ -33097,7 +33429,8 @@ function BlockRow({
|
|
|
33097
33429
|
onClick: addListItem,
|
|
33098
33430
|
children: [
|
|
33099
33431
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "plus", className: "w-3 h-3" }),
|
|
33100
|
-
"
|
|
33432
|
+
" ",
|
|
33433
|
+
t("richBlockEditor.addItem")
|
|
33101
33434
|
]
|
|
33102
33435
|
}
|
|
33103
33436
|
) })
|
|
@@ -33113,8 +33446,8 @@ function BlockRow({
|
|
|
33113
33446
|
tag: "p",
|
|
33114
33447
|
value: block.content ?? "",
|
|
33115
33448
|
readOnly,
|
|
33116
|
-
placeholder: placeholder ?? "
|
|
33117
|
-
ariaLabel: "
|
|
33449
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.paragraph"),
|
|
33450
|
+
ariaLabel: t("richBlockEditor.aria.paragraphBlock"),
|
|
33118
33451
|
className: "leading-7",
|
|
33119
33452
|
onValueChange: setContent
|
|
33120
33453
|
}
|
|
@@ -33137,7 +33470,7 @@ function BlockRow({
|
|
|
33137
33470
|
{
|
|
33138
33471
|
type: "button",
|
|
33139
33472
|
variant: "ghost",
|
|
33140
|
-
"aria-label": "
|
|
33473
|
+
"aria-label": t("richBlockEditor.insertParagraphBelow"),
|
|
33141
33474
|
className: cn(
|
|
33142
33475
|
"inline-flex h-6 w-6 items-center justify-center rounded-sm p-0 gap-0",
|
|
33143
33476
|
"text-muted-foreground hover:bg-muted hover:text-foreground",
|
|
@@ -33164,7 +33497,7 @@ function BlockRow({
|
|
|
33164
33497
|
}
|
|
33165
33498
|
);
|
|
33166
33499
|
}
|
|
33167
|
-
var TOOLBAR_ENTRIES,
|
|
33500
|
+
var TOOLBAR_ENTRIES, BLOCK_TYPE_LABEL_KEY, CHANGEABLE_TYPES, _idSeq, BLOCK_TYPES, RichBlockEditor;
|
|
33168
33501
|
var init_RichBlockEditor = __esm({
|
|
33169
33502
|
"components/core/molecules/RichBlockEditor.tsx"() {
|
|
33170
33503
|
"use client";
|
|
@@ -33177,29 +33510,30 @@ var init_RichBlockEditor = __esm({
|
|
|
33177
33510
|
init_Input();
|
|
33178
33511
|
init_Icon();
|
|
33179
33512
|
init_useEventBus();
|
|
33513
|
+
init_useTranslate();
|
|
33180
33514
|
TOOLBAR_ENTRIES = [
|
|
33181
|
-
{ type: "paragraph",
|
|
33182
|
-
{ type: "heading-1",
|
|
33183
|
-
{ type: "heading-2",
|
|
33184
|
-
{ type: "heading-3",
|
|
33185
|
-
{ type: "bullet-list",
|
|
33186
|
-
{ type: "numbered-list",
|
|
33187
|
-
{ type: "quote",
|
|
33188
|
-
{ type: "code",
|
|
33189
|
-
{ type: "divider",
|
|
33190
|
-
{ type: "image",
|
|
33515
|
+
{ type: "paragraph", labelKey: "richBlockEditor.toolbar.text", icon: LucideIcons2.Type },
|
|
33516
|
+
{ type: "heading-1", labelKey: "richBlockEditor.toolbar.h1", icon: LucideIcons2.Heading1 },
|
|
33517
|
+
{ type: "heading-2", labelKey: "richBlockEditor.toolbar.h2", icon: LucideIcons2.Heading2 },
|
|
33518
|
+
{ type: "heading-3", labelKey: "richBlockEditor.toolbar.h3", icon: LucideIcons2.Heading3 },
|
|
33519
|
+
{ type: "bullet-list", labelKey: "richBlockEditor.toolbar.bulletList", icon: LucideIcons2.List },
|
|
33520
|
+
{ type: "numbered-list", labelKey: "richBlockEditor.toolbar.numbered", icon: LucideIcons2.ListOrdered },
|
|
33521
|
+
{ type: "quote", labelKey: "richBlockEditor.toolbar.quote", icon: LucideIcons2.Quote },
|
|
33522
|
+
{ type: "code", labelKey: "richBlockEditor.toolbar.code", icon: LucideIcons2.Code },
|
|
33523
|
+
{ type: "divider", labelKey: "richBlockEditor.toolbar.divider", icon: LucideIcons2.Minus },
|
|
33524
|
+
{ type: "image", labelKey: "richBlockEditor.toolbar.image", icon: LucideIcons2.Image }
|
|
33191
33525
|
];
|
|
33192
|
-
|
|
33193
|
-
paragraph: "
|
|
33194
|
-
"heading-1": "
|
|
33195
|
-
"heading-2": "
|
|
33196
|
-
"heading-3": "
|
|
33197
|
-
"bullet-list": "
|
|
33198
|
-
"numbered-list": "
|
|
33199
|
-
quote: "
|
|
33200
|
-
code: "
|
|
33201
|
-
divider: "
|
|
33202
|
-
image: "
|
|
33526
|
+
BLOCK_TYPE_LABEL_KEY = {
|
|
33527
|
+
paragraph: "richBlockEditor.blockType.paragraph",
|
|
33528
|
+
"heading-1": "richBlockEditor.blockType.heading1",
|
|
33529
|
+
"heading-2": "richBlockEditor.blockType.heading2",
|
|
33530
|
+
"heading-3": "richBlockEditor.blockType.heading3",
|
|
33531
|
+
"bullet-list": "richBlockEditor.blockType.bulletList",
|
|
33532
|
+
"numbered-list": "richBlockEditor.blockType.numberedList",
|
|
33533
|
+
quote: "richBlockEditor.blockType.quote",
|
|
33534
|
+
code: "richBlockEditor.blockType.code",
|
|
33535
|
+
divider: "richBlockEditor.blockType.divider",
|
|
33536
|
+
image: "richBlockEditor.blockType.image"
|
|
33203
33537
|
};
|
|
33204
33538
|
CHANGEABLE_TYPES = [
|
|
33205
33539
|
"paragraph",
|
|
@@ -33233,6 +33567,7 @@ var init_RichBlockEditor = __esm({
|
|
|
33233
33567
|
showToolbar = true,
|
|
33234
33568
|
className
|
|
33235
33569
|
}) => {
|
|
33570
|
+
const { t } = useTranslate();
|
|
33236
33571
|
const [blocks, setBlocks] = React84.useState(
|
|
33237
33572
|
() => normalizeBlocks(initialBlocks)
|
|
33238
33573
|
);
|
|
@@ -33304,25 +33639,26 @@ var init_RichBlockEditor = __esm({
|
|
|
33304
33639
|
Box,
|
|
33305
33640
|
{
|
|
33306
33641
|
role: "toolbar",
|
|
33307
|
-
"aria-label": "
|
|
33642
|
+
"aria-label": t("richBlockEditor.editorToolbar"),
|
|
33308
33643
|
className: cn(
|
|
33309
33644
|
"flex flex-wrap items-center gap-1",
|
|
33310
33645
|
"border-b border-border bg-muted/30 px-2 py-2"
|
|
33311
33646
|
),
|
|
33312
33647
|
children: TOOLBAR_ENTRIES.map((entry) => {
|
|
33313
33648
|
const Icon3 = entry.icon;
|
|
33649
|
+
const entryLabel = t(entry.labelKey);
|
|
33314
33650
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
33315
33651
|
Button,
|
|
33316
33652
|
{
|
|
33317
33653
|
type: "button",
|
|
33318
33654
|
variant: "ghost",
|
|
33319
33655
|
size: "sm",
|
|
33320
|
-
"aria-label":
|
|
33321
|
-
title:
|
|
33656
|
+
"aria-label": t("richBlockEditor.insertEntry", { label: entryLabel }),
|
|
33657
|
+
title: entryLabel,
|
|
33322
33658
|
onClick: () => handleAppend(entry.type),
|
|
33323
33659
|
children: [
|
|
33324
33660
|
/* @__PURE__ */ jsxRuntime.jsx(Icon3, { size: 14 }),
|
|
33325
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { as: "span", variant: "caption", className: "ml-1 hidden text-xs sm:inline", children:
|
|
33661
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { as: "span", variant: "caption", className: "ml-1 hidden text-xs sm:inline", children: entryLabel })
|
|
33326
33662
|
]
|
|
33327
33663
|
},
|
|
33328
33664
|
entry.type
|
|
@@ -33365,6 +33701,7 @@ var init_ReplyTree = __esm({
|
|
|
33365
33701
|
"use client";
|
|
33366
33702
|
init_cn();
|
|
33367
33703
|
init_useEventBus();
|
|
33704
|
+
init_useTranslate();
|
|
33368
33705
|
init_atoms2();
|
|
33369
33706
|
init_VoteStack();
|
|
33370
33707
|
ReplyTreeNode = ({
|
|
@@ -33384,6 +33721,7 @@ var init_ReplyTree = __esm({
|
|
|
33384
33721
|
showActions
|
|
33385
33722
|
}) => {
|
|
33386
33723
|
const eventBus = useEventBus();
|
|
33724
|
+
const { t } = useTranslate();
|
|
33387
33725
|
const hasReplies = !!node.replies && node.replies.length > 0;
|
|
33388
33726
|
const isCollapsed = collapsedSet.has(node.id);
|
|
33389
33727
|
const atMaxDepth = depth >= maxDepth;
|
|
@@ -33430,7 +33768,7 @@ var init_ReplyTree = __esm({
|
|
|
33430
33768
|
variant: "ghost",
|
|
33431
33769
|
size: "sm",
|
|
33432
33770
|
onClick: handleToggle,
|
|
33433
|
-
"aria-label": isCollapsed ? "
|
|
33771
|
+
"aria-label": isCollapsed ? t("replyTree.expandReplies") : t("replyTree.collapseReplies"),
|
|
33434
33772
|
"aria-expanded": !isCollapsed,
|
|
33435
33773
|
leftIcon: isCollapsed ? "chevron-right" : "chevron-down",
|
|
33436
33774
|
className: cn(
|
|
@@ -33471,7 +33809,7 @@ var init_ReplyTree = __esm({
|
|
|
33471
33809
|
onVote: handleVote,
|
|
33472
33810
|
size: "sm",
|
|
33473
33811
|
variant: "horizontal",
|
|
33474
|
-
label:
|
|
33812
|
+
label: t("replyTree.voteOnReplyBy", { author: node.authorName })
|
|
33475
33813
|
}
|
|
33476
33814
|
),
|
|
33477
33815
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -33481,8 +33819,8 @@ var init_ReplyTree = __esm({
|
|
|
33481
33819
|
size: "sm",
|
|
33482
33820
|
leftIcon: "message-square",
|
|
33483
33821
|
onClick: handleReply,
|
|
33484
|
-
"aria-label":
|
|
33485
|
-
children: "
|
|
33822
|
+
"aria-label": t("replyTree.replyTo", { author: node.authorName }),
|
|
33823
|
+
children: t("replyTree.reply")
|
|
33486
33824
|
}
|
|
33487
33825
|
),
|
|
33488
33826
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -33492,8 +33830,8 @@ var init_ReplyTree = __esm({
|
|
|
33492
33830
|
size: "sm",
|
|
33493
33831
|
leftIcon: "flag",
|
|
33494
33832
|
onClick: handleFlag,
|
|
33495
|
-
"aria-label":
|
|
33496
|
-
children: "
|
|
33833
|
+
"aria-label": t("replyTree.flagReplyBy", { author: node.authorName }),
|
|
33834
|
+
children: t("replyTree.flag")
|
|
33497
33835
|
}
|
|
33498
33836
|
)
|
|
33499
33837
|
] }),
|
|
@@ -33504,9 +33842,9 @@ var init_ReplyTree = __esm({
|
|
|
33504
33842
|
inputType: "textarea",
|
|
33505
33843
|
rows: 2,
|
|
33506
33844
|
value: draft,
|
|
33507
|
-
placeholder:
|
|
33845
|
+
placeholder: t("replyTree.replyToPlaceholder", { author: node.authorName }),
|
|
33508
33846
|
onChange: (e) => setDraft(e.target.value),
|
|
33509
|
-
"aria-label":
|
|
33847
|
+
"aria-label": t("replyTree.replyTo", { author: node.authorName })
|
|
33510
33848
|
}
|
|
33511
33849
|
),
|
|
33512
33850
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex flex-row gap-2 items-center", children: [
|
|
@@ -33518,10 +33856,10 @@ var init_ReplyTree = __esm({
|
|
|
33518
33856
|
leftIcon: "send",
|
|
33519
33857
|
onClick: handleSubmitReply,
|
|
33520
33858
|
disabled: !draft.trim(),
|
|
33521
|
-
children: "
|
|
33859
|
+
children: t("replyTree.send")
|
|
33522
33860
|
}
|
|
33523
33861
|
),
|
|
33524
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", onClick: handleCancelReply, children: "
|
|
33862
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", onClick: handleCancelReply, children: t("common.cancel") })
|
|
33525
33863
|
] })
|
|
33526
33864
|
] }),
|
|
33527
33865
|
hasReplies && !isCollapsed && (atMaxDepth ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -33535,7 +33873,7 @@ var init_ReplyTree = __esm({
|
|
|
33535
33873
|
"self-start gap-1 px-0 h-auto",
|
|
33536
33874
|
"text-sm text-primary hover:underline hover:bg-transparent"
|
|
33537
33875
|
),
|
|
33538
|
-
children: "
|
|
33876
|
+
children: t("replyTree.continueThread")
|
|
33539
33877
|
}
|
|
33540
33878
|
) : /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex flex-col gap-2 mt-1", children: node.replies.map((child) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
33541
33879
|
ReplyTreeNode,
|
|
@@ -33574,6 +33912,7 @@ var init_ReplyTree = __esm({
|
|
|
33574
33912
|
showActions = true,
|
|
33575
33913
|
className
|
|
33576
33914
|
}) => {
|
|
33915
|
+
const { t } = useTranslate();
|
|
33577
33916
|
const nodeList = Array.isArray(nodes) ? nodes : nodes ? [nodes] : [];
|
|
33578
33917
|
const [collapsedSet, setCollapsedSet] = React84.useState(() => {
|
|
33579
33918
|
const acc = /* @__PURE__ */ new Set();
|
|
@@ -33592,7 +33931,7 @@ var init_ReplyTree = __esm({
|
|
|
33592
33931
|
});
|
|
33593
33932
|
}, []);
|
|
33594
33933
|
if (nodeList.length === 0) {
|
|
33595
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("text-sm text-muted-foreground", className), children: "
|
|
33934
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("text-sm text-muted-foreground", className), children: t("replyTree.noRepliesYet") });
|
|
33596
33935
|
}
|
|
33597
33936
|
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("flex flex-col gap-2 min-w-0", className), children: nodeList.map((node) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
33598
33937
|
ReplyTreeNode,
|
|
@@ -33670,6 +34009,7 @@ var init_VersionDiff = __esm({
|
|
|
33670
34009
|
"use client";
|
|
33671
34010
|
init_cn();
|
|
33672
34011
|
init_useEventBus();
|
|
34012
|
+
init_useTranslate();
|
|
33673
34013
|
init_atoms2();
|
|
33674
34014
|
init_Stack();
|
|
33675
34015
|
INLINE_STYLES = {
|
|
@@ -33692,6 +34032,7 @@ var init_VersionDiff = __esm({
|
|
|
33692
34032
|
language,
|
|
33693
34033
|
className
|
|
33694
34034
|
}) => {
|
|
34035
|
+
const { t } = useTranslate();
|
|
33695
34036
|
const eventBus = useEventBus();
|
|
33696
34037
|
const revisions = Array.isArray(revisionsProp) ? revisionsProp : [];
|
|
33697
34038
|
const fallbackBefore = revisions[0]?.id ?? "";
|
|
@@ -33773,24 +34114,24 @@ var init_VersionDiff = __esm({
|
|
|
33773
34114
|
children: [
|
|
33774
34115
|
/* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", align: "center", className: "flex-wrap", children: [
|
|
33775
34116
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "git-commit", size: "sm", className: "text-muted-foreground" }),
|
|
33776
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "whitespace-nowrap", children: "
|
|
34117
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "whitespace-nowrap", children: t("versionDiff.compare") }),
|
|
33777
34118
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "min-w-0 md:min-w-[160px]", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
33778
34119
|
Select,
|
|
33779
34120
|
{
|
|
33780
34121
|
options,
|
|
33781
34122
|
value: activeBeforeId,
|
|
33782
34123
|
onChange: handleBeforeChange,
|
|
33783
|
-
"aria-label": "
|
|
34124
|
+
"aria-label": t("versionDiff.beforeRevision")
|
|
33784
34125
|
}
|
|
33785
34126
|
) }),
|
|
33786
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "secondary", children: "to" }),
|
|
34127
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "secondary", children: t("versionDiff.to") }),
|
|
33787
34128
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "min-w-0 md:min-w-[160px]", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
33788
34129
|
Select,
|
|
33789
34130
|
{
|
|
33790
34131
|
options,
|
|
33791
34132
|
value: activeAfterId,
|
|
33792
34133
|
onChange: handleAfterChange,
|
|
33793
|
-
"aria-label": "
|
|
34134
|
+
"aria-label": t("versionDiff.afterRevision")
|
|
33794
34135
|
}
|
|
33795
34136
|
) }),
|
|
33796
34137
|
language && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "default", children: language }),
|
|
@@ -33811,7 +34152,7 @@ var init_VersionDiff = __esm({
|
|
|
33811
34152
|
size: "sm",
|
|
33812
34153
|
icon: activeView === "side-by-side" ? "align-left" : "columns",
|
|
33813
34154
|
onClick: handleViewToggle,
|
|
33814
|
-
"aria-label": activeView === "side-by-side" ? "
|
|
34155
|
+
"aria-label": activeView === "side-by-side" ? t("versionDiff.switchToInline") : t("versionDiff.switchToSideBySide")
|
|
33815
34156
|
}
|
|
33816
34157
|
),
|
|
33817
34158
|
(onRevert || revertEvent) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -33821,7 +34162,7 @@ var init_VersionDiff = __esm({
|
|
|
33821
34162
|
size: "sm",
|
|
33822
34163
|
icon: "rotate-ccw",
|
|
33823
34164
|
onClick: handleRevert,
|
|
33824
|
-
children: "
|
|
34165
|
+
children: t("versionDiff.revert")
|
|
33825
34166
|
}
|
|
33826
34167
|
)
|
|
33827
34168
|
] })
|
|
@@ -33838,12 +34179,12 @@ var init_VersionDiff = __esm({
|
|
|
33838
34179
|
children: [
|
|
33839
34180
|
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "caption", color: "secondary", className: "truncate", children: [
|
|
33840
34181
|
beforeRev?.label,
|
|
33841
|
-
beforeRev?.author ?
|
|
34182
|
+
beforeRev?.author ? t("versionDiff.byAuthor", { author: beforeRev.author }) : "",
|
|
33842
34183
|
beforeRev?.timestamp ? ` (${beforeRev.timestamp})` : ""
|
|
33843
34184
|
] }),
|
|
33844
34185
|
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "caption", color: "secondary", className: "truncate", children: [
|
|
33845
34186
|
afterRev?.label,
|
|
33846
|
-
afterRev?.author ?
|
|
34187
|
+
afterRev?.author ? t("versionDiff.byAuthor", { author: afterRev.author }) : "",
|
|
33847
34188
|
afterRev?.timestamp ? ` (${afterRev.timestamp})` : ""
|
|
33848
34189
|
] })
|
|
33849
34190
|
]
|
|
@@ -34236,10 +34577,12 @@ var init_DocPagination = __esm({
|
|
|
34236
34577
|
}
|
|
34237
34578
|
});
|
|
34238
34579
|
function DocSearch({
|
|
34239
|
-
placeholder
|
|
34580
|
+
placeholder,
|
|
34240
34581
|
onSearch,
|
|
34241
34582
|
className
|
|
34242
34583
|
}) {
|
|
34584
|
+
const { t } = useTranslate();
|
|
34585
|
+
const resolvedPlaceholder = placeholder ?? t("docSearch.placeholder");
|
|
34243
34586
|
const [query, setQuery] = React84.useState("");
|
|
34244
34587
|
const [results, setResults] = React84.useState([]);
|
|
34245
34588
|
const [isOpen, setIsOpen] = React84.useState(false);
|
|
@@ -34346,7 +34689,7 @@ function DocSearch({
|
|
|
34346
34689
|
Input,
|
|
34347
34690
|
{
|
|
34348
34691
|
inputType: "search",
|
|
34349
|
-
placeholder,
|
|
34692
|
+
placeholder: resolvedPlaceholder,
|
|
34350
34693
|
value: query,
|
|
34351
34694
|
onChange: handleChange,
|
|
34352
34695
|
onFocus: handleFocus,
|
|
@@ -34411,6 +34754,7 @@ var init_DocSearch = __esm({
|
|
|
34411
34754
|
init_Typography();
|
|
34412
34755
|
init_Icon();
|
|
34413
34756
|
init_Input();
|
|
34757
|
+
init_useTranslate();
|
|
34414
34758
|
}
|
|
34415
34759
|
});
|
|
34416
34760
|
var DocSidebarCategory, DocSidebar;
|
|
@@ -36415,8 +36759,8 @@ var init_SignaturePad = __esm({
|
|
|
36415
36759
|
init_useEventBus();
|
|
36416
36760
|
init_useTranslate();
|
|
36417
36761
|
SignaturePad = ({
|
|
36418
|
-
label
|
|
36419
|
-
helperText
|
|
36762
|
+
label,
|
|
36763
|
+
helperText,
|
|
36420
36764
|
strokeColor,
|
|
36421
36765
|
strokeWidth = 2,
|
|
36422
36766
|
height = 200,
|
|
@@ -36432,6 +36776,8 @@ var init_SignaturePad = __esm({
|
|
|
36432
36776
|
}) => {
|
|
36433
36777
|
const eventBus = useEventBus();
|
|
36434
36778
|
const { t } = useTranslate();
|
|
36779
|
+
const resolvedLabel = label ?? t("signaturePad.label");
|
|
36780
|
+
const resolvedHelperText = helperText ?? t("signaturePad.helperText");
|
|
36435
36781
|
const canvasRef = React84.useRef(null);
|
|
36436
36782
|
const [isDrawing, setIsDrawing] = React84.useState(false);
|
|
36437
36783
|
const [hasSignature, setHasSignature] = React84.useState(!!value);
|
|
@@ -36534,7 +36880,7 @@ var init_SignaturePad = __esm({
|
|
|
36534
36880
|
);
|
|
36535
36881
|
}
|
|
36536
36882
|
return /* @__PURE__ */ jsxRuntime.jsx(Card, { className: cn("p-4", className), children: /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "sm", children: [
|
|
36537
|
-
|
|
36883
|
+
resolvedLabel && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "label", weight: "medium", children: resolvedLabel }),
|
|
36538
36884
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
36539
36885
|
Box,
|
|
36540
36886
|
{
|
|
@@ -36563,7 +36909,7 @@ var init_SignaturePad = __esm({
|
|
|
36563
36909
|
)
|
|
36564
36910
|
}
|
|
36565
36911
|
),
|
|
36566
|
-
|
|
36912
|
+
resolvedHelperText && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "secondary", children: resolvedHelperText }),
|
|
36567
36913
|
!readOnly && /* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", justify: "end", children: [
|
|
36568
36914
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
36569
36915
|
Button,
|
|
@@ -36573,7 +36919,7 @@ var init_SignaturePad = __esm({
|
|
|
36573
36919
|
icon: LucideIcons2.Eraser,
|
|
36574
36920
|
onClick: clearSignature,
|
|
36575
36921
|
disabled: !hasSignature,
|
|
36576
|
-
children: "
|
|
36922
|
+
children: t("signaturePad.clear")
|
|
36577
36923
|
}
|
|
36578
36924
|
),
|
|
36579
36925
|
signEvent && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -36584,7 +36930,7 @@ var init_SignaturePad = __esm({
|
|
|
36584
36930
|
icon: LucideIcons2.Check,
|
|
36585
36931
|
onClick: confirmSignature,
|
|
36586
36932
|
disabled: !hasSignature,
|
|
36587
|
-
children: "
|
|
36933
|
+
children: t("signaturePad.confirm")
|
|
36588
36934
|
}
|
|
36589
36935
|
)
|
|
36590
36936
|
] })
|
|
@@ -41029,6 +41375,7 @@ function MasterDetail({
|
|
|
41029
41375
|
className,
|
|
41030
41376
|
...rest
|
|
41031
41377
|
}) {
|
|
41378
|
+
const { t } = useTranslate();
|
|
41032
41379
|
const loading = externalLoading ?? false;
|
|
41033
41380
|
const isLoading = externalIsLoading ?? false;
|
|
41034
41381
|
const error = externalError ?? null;
|
|
@@ -41041,8 +41388,8 @@ function MasterDetail({
|
|
|
41041
41388
|
isLoading: loading || isLoading,
|
|
41042
41389
|
error,
|
|
41043
41390
|
className,
|
|
41044
|
-
emptyTitle: "
|
|
41045
|
-
emptyDescription: "
|
|
41391
|
+
emptyTitle: t("table.empty.title"),
|
|
41392
|
+
emptyDescription: t("empty.createFirst"),
|
|
41046
41393
|
...rest
|
|
41047
41394
|
}
|
|
41048
41395
|
);
|
|
@@ -41051,6 +41398,7 @@ var init_MasterDetail = __esm({
|
|
|
41051
41398
|
"components/core/organisms/MasterDetail.tsx"() {
|
|
41052
41399
|
"use client";
|
|
41053
41400
|
init_DataTable();
|
|
41401
|
+
init_useTranslate();
|
|
41054
41402
|
MasterDetail.displayName = "MasterDetail";
|
|
41055
41403
|
}
|
|
41056
41404
|
});
|
|
@@ -41059,14 +41407,18 @@ var init_MasterDetailLayout = __esm({
|
|
|
41059
41407
|
"components/core/organisms/layout/MasterDetailLayout.tsx"() {
|
|
41060
41408
|
init_cn();
|
|
41061
41409
|
init_Typography();
|
|
41062
|
-
|
|
41063
|
-
|
|
41064
|
-
{
|
|
41065
|
-
|
|
41066
|
-
|
|
41067
|
-
|
|
41068
|
-
|
|
41069
|
-
|
|
41410
|
+
init_useTranslate();
|
|
41411
|
+
DefaultEmptyDetail = () => {
|
|
41412
|
+
const { t } = useTranslate();
|
|
41413
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center h-full border-2 border-dashed border-border", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
41414
|
+
Typography,
|
|
41415
|
+
{
|
|
41416
|
+
variant: "body2",
|
|
41417
|
+
className: "text-muted-foreground",
|
|
41418
|
+
children: t("masterDetail.selectItem")
|
|
41419
|
+
}
|
|
41420
|
+
) });
|
|
41421
|
+
};
|
|
41070
41422
|
MasterDetailLayout = ({
|
|
41071
41423
|
master,
|
|
41072
41424
|
detail,
|
|
@@ -41193,7 +41545,7 @@ var init_MediaGallery = __esm({
|
|
|
41193
41545
|
{
|
|
41194
41546
|
icon: LucideIcons2.Image,
|
|
41195
41547
|
title: t("display.noMedia"),
|
|
41196
|
-
description: "
|
|
41548
|
+
description: t("mediaGallery.noMediaDescription"),
|
|
41197
41549
|
className
|
|
41198
41550
|
}
|
|
41199
41551
|
);
|
|
@@ -41210,7 +41562,7 @@ var init_MediaGallery = __esm({
|
|
|
41210
41562
|
size: "sm",
|
|
41211
41563
|
icon: LucideIcons2.Upload,
|
|
41212
41564
|
action: "MEDIA_UPLOAD",
|
|
41213
|
-
children: "
|
|
41565
|
+
children: t("mediaGallery.upload")
|
|
41214
41566
|
}
|
|
41215
41567
|
),
|
|
41216
41568
|
actions?.map((action, idx) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -41224,10 +41576,7 @@ var init_MediaGallery = __esm({
|
|
|
41224
41576
|
))
|
|
41225
41577
|
] })
|
|
41226
41578
|
] }),
|
|
41227
|
-
selectable && selectedItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(HStack, { gap: "sm", align: "center", children: /* @__PURE__ */ jsxRuntime.
|
|
41228
|
-
selectedItems.length,
|
|
41229
|
-
" selected"
|
|
41230
|
-
] }) }),
|
|
41579
|
+
selectable && selectedItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(HStack, { gap: "sm", align: "center", children: /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "info", children: t("table.bulk.selected", { count: selectedItems.length }) }) }),
|
|
41231
41580
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
41232
41581
|
Box,
|
|
41233
41582
|
{
|
|
@@ -42101,7 +42450,7 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
42101
42450
|
EmptyState,
|
|
42102
42451
|
{
|
|
42103
42452
|
title: t("debug.noActiveTraits"),
|
|
42104
|
-
description: "
|
|
42453
|
+
description: t("debug.traitsMountHint"),
|
|
42105
42454
|
className: "py-8"
|
|
42106
42455
|
}
|
|
42107
42456
|
);
|
|
@@ -42111,14 +42460,11 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
42111
42460
|
header: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 w-full", children: [
|
|
42112
42461
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", weight: "semibold", className: "text-purple-600 dark:text-purple-400", children: trait.name }),
|
|
42113
42462
|
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "success", size: "sm", children: trait.currentState }),
|
|
42114
|
-
/* @__PURE__ */ jsxRuntime.
|
|
42115
|
-
trait.transitionCount,
|
|
42116
|
-
" transitions"
|
|
42117
|
-
] })
|
|
42463
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-500 ml-auto", children: t("debug.transitionsCount", { count: trait.transitionCount }) })
|
|
42118
42464
|
] }),
|
|
42119
42465
|
content: /* @__PURE__ */ jsxRuntime.jsxs(Stack, { gap: "sm", children: [
|
|
42120
42466
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42121
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: "
|
|
42467
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.states") }),
|
|
42122
42468
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1", children: trait.states.map((state) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
42123
42469
|
Badge,
|
|
42124
42470
|
{
|
|
@@ -42130,7 +42476,7 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
42130
42476
|
)) })
|
|
42131
42477
|
] }),
|
|
42132
42478
|
trait.transitions.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42133
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: "
|
|
42479
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.transitions") }),
|
|
42134
42480
|
/* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: trait.transitions.map((t2, i) => /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "font-mono", children: [
|
|
42135
42481
|
t2.from,
|
|
42136
42482
|
" \u2192 ",
|
|
@@ -42149,7 +42495,7 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
42149
42495
|
] }, i)) })
|
|
42150
42496
|
] }),
|
|
42151
42497
|
trait.guards.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42152
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: "
|
|
42498
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.guards") }),
|
|
42153
42499
|
/* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: trait.guards.map((g, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
42154
42500
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", children: g.name }),
|
|
42155
42501
|
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: g.lastResult === true ? "success" : g.lastResult === false ? "danger" : "default", size: "sm", children: g.lastResult === void 0 ? "?" : g.lastResult ? "\u2713" : "\u2717" })
|
|
@@ -42255,7 +42601,7 @@ function EntitiesTab({ snapshot }) {
|
|
|
42255
42601
|
EmptyState,
|
|
42256
42602
|
{
|
|
42257
42603
|
title: t("debug.noEntityData"),
|
|
42258
|
-
description: "
|
|
42604
|
+
description: t("debug.debugModeHint"),
|
|
42259
42605
|
className: "py-8"
|
|
42260
42606
|
}
|
|
42261
42607
|
);
|
|
@@ -42268,7 +42614,7 @@ function EntitiesTab({ snapshot }) {
|
|
|
42268
42614
|
EmptyState,
|
|
42269
42615
|
{
|
|
42270
42616
|
title: t("debug.noEntities"),
|
|
42271
|
-
description: "
|
|
42617
|
+
description: t("debug.entitiesSpawnHint"),
|
|
42272
42618
|
className: "py-8"
|
|
42273
42619
|
}
|
|
42274
42620
|
);
|
|
@@ -42276,7 +42622,7 @@ function EntitiesTab({ snapshot }) {
|
|
|
42276
42622
|
const singletonItems = singletonEntries.map(([name, data]) => ({
|
|
42277
42623
|
id: `singleton-${name}`,
|
|
42278
42624
|
header: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
42279
|
-
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "primary", size: "sm", children: "
|
|
42625
|
+
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "primary", size: "sm", children: t("debug.singleton") }),
|
|
42280
42626
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", weight: "semibold", className: "text-sky-600 dark:text-sky-400", children: name })
|
|
42281
42627
|
] }),
|
|
42282
42628
|
content: /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "text-xs text-gray-600 dark:text-gray-400 bg-gray-50 dark:bg-gray-800 p-2 rounded overflow-auto max-h-40", children: JSON.stringify(data, null, 2) })
|
|
@@ -42294,31 +42640,19 @@ function EntitiesTab({ snapshot }) {
|
|
|
42294
42640
|
}));
|
|
42295
42641
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--entities", children: [
|
|
42296
42642
|
singletonItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4", children: [
|
|
42297
|
-
/* @__PURE__ */ jsxRuntime.
|
|
42298
|
-
"Singletons (",
|
|
42299
|
-
singletonItems.length,
|
|
42300
|
-
")"
|
|
42301
|
-
] }),
|
|
42643
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.singletonsCount", { count: singletonItems.length }) }),
|
|
42302
42644
|
/* @__PURE__ */ jsxRuntime.jsx(Accordion, { items: singletonItems, multiple: true })
|
|
42303
42645
|
] }),
|
|
42304
42646
|
runtimeItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4", children: [
|
|
42305
|
-
/* @__PURE__ */ jsxRuntime.
|
|
42306
|
-
"Runtime (",
|
|
42307
|
-
runtimeEntities.length,
|
|
42308
|
-
")"
|
|
42309
|
-
] }),
|
|
42647
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.runtimeCount", { count: runtimeEntities.length }) }),
|
|
42310
42648
|
/* @__PURE__ */ jsxRuntime.jsx(Accordion, { items: runtimeItems, multiple: true }),
|
|
42311
|
-
runtimeEntities.length > 20 && /* @__PURE__ */ jsxRuntime.
|
|
42312
|
-
"+",
|
|
42313
|
-
runtimeEntities.length - 20,
|
|
42314
|
-
" more entities"
|
|
42315
|
-
] })
|
|
42649
|
+
runtimeEntities.length > 20 && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-400 text-center mt-2", children: t("debug.moreEntities", { count: runtimeEntities.length - 20 }) })
|
|
42316
42650
|
] }),
|
|
42317
42651
|
persistentEntries.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42318
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: "
|
|
42652
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.persistent") }),
|
|
42319
42653
|
/* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: persistentEntries.map(([type, info]) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between py-1", children: [
|
|
42320
42654
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", children: type }),
|
|
42321
|
-
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: info.loaded ? "success" : "default", size: "sm", children: info.loaded ?
|
|
42655
|
+
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: info.loaded ? "success" : "default", size: "sm", children: info.loaded ? t("debug.loadedCount", { count: info.count }) : t("debug.notLoaded") })
|
|
42322
42656
|
] }, type)) })
|
|
42323
42657
|
] })
|
|
42324
42658
|
] });
|
|
@@ -42362,7 +42696,7 @@ function EventFlowTab({ events: events2 }) {
|
|
|
42362
42696
|
EmptyState,
|
|
42363
42697
|
{
|
|
42364
42698
|
title: t("debug.noEventsYet"),
|
|
42365
|
-
description: "
|
|
42699
|
+
description: t("debug.eventsExecuteHint"),
|
|
42366
42700
|
className: "py-8"
|
|
42367
42701
|
}
|
|
42368
42702
|
);
|
|
@@ -42373,17 +42707,13 @@ function EventFlowTab({ events: events2 }) {
|
|
|
42373
42707
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--events", children: [
|
|
42374
42708
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 mb-3 flex-wrap", children: [
|
|
42375
42709
|
/* @__PURE__ */ jsxRuntime.jsxs(ButtonGroup, { children: [
|
|
42376
|
-
/* @__PURE__ */ jsxRuntime.
|
|
42710
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
42377
42711
|
Button,
|
|
42378
42712
|
{
|
|
42379
42713
|
size: "sm",
|
|
42380
42714
|
variant: filter === "all" ? "primary" : "secondary",
|
|
42381
42715
|
onClick: () => setFilter("all"),
|
|
42382
|
-
children:
|
|
42383
|
-
"All (",
|
|
42384
|
-
events2.length,
|
|
42385
|
-
")"
|
|
42386
|
-
]
|
|
42716
|
+
children: t("debug.allCount", { count: events2.length })
|
|
42387
42717
|
}
|
|
42388
42718
|
),
|
|
42389
42719
|
eventTypes.map((type) => {
|
|
@@ -42413,7 +42743,7 @@ function EventFlowTab({ events: events2 }) {
|
|
|
42413
42743
|
onChange: (e) => setAutoScroll(e.target.checked)
|
|
42414
42744
|
}
|
|
42415
42745
|
),
|
|
42416
|
-
"
|
|
42746
|
+
t("debug.autoScroll")
|
|
42417
42747
|
] })
|
|
42418
42748
|
] }),
|
|
42419
42749
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -42471,7 +42801,7 @@ function GuardsPanel({ guards }) {
|
|
|
42471
42801
|
EmptyState,
|
|
42472
42802
|
{
|
|
42473
42803
|
title: t("debug.noGuardEvaluations"),
|
|
42474
|
-
description: "
|
|
42804
|
+
description: t("debug.guardEvaluationsHint"),
|
|
42475
42805
|
className: "py-8"
|
|
42476
42806
|
}
|
|
42477
42807
|
);
|
|
@@ -42502,15 +42832,15 @@ function GuardsPanel({ guards }) {
|
|
|
42502
42832
|
] }),
|
|
42503
42833
|
content: /* @__PURE__ */ jsxRuntime.jsxs(Stack, { gap: "sm", children: [
|
|
42504
42834
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42505
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: "
|
|
42835
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: t("debug.expression") }),
|
|
42506
42836
|
/* @__PURE__ */ jsxRuntime.jsx("code", { className: "block mt-1 text-xs text-amber-600 dark:text-amber-400 bg-amber-50 dark:bg-amber-900/20 px-2 py-1 rounded", children: guard.expression })
|
|
42507
42837
|
] }),
|
|
42508
42838
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42509
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: "
|
|
42839
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: t("debug.inputs") }),
|
|
42510
42840
|
/* @__PURE__ */ jsxRuntime.jsx("pre", { className: "mt-1 text-xs text-gray-600 dark:text-gray-400 bg-gray-50 dark:bg-gray-800 p-2 rounded overflow-auto max-h-24", children: JSON.stringify(guard.inputs, null, 2) })
|
|
42511
42841
|
] }),
|
|
42512
42842
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42513
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: "
|
|
42843
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: t("debug.trait") }),
|
|
42514
42844
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", children: guard.context.traitName })
|
|
42515
42845
|
] })
|
|
42516
42846
|
] })
|
|
@@ -42528,9 +42858,9 @@ function GuardsPanel({ guards }) {
|
|
|
42528
42858
|
] })
|
|
42529
42859
|
] }),
|
|
42530
42860
|
/* @__PURE__ */ jsxRuntime.jsxs(ButtonGroup, { children: [
|
|
42531
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", variant: filter === "all" ? "primary" : "secondary", onClick: () => setFilter("all"), children: "
|
|
42532
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", variant: filter === "passed" ? "primary" : "secondary", onClick: () => setFilter("passed"), children: "
|
|
42533
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", variant: filter === "failed" ? "primary" : "secondary", onClick: () => setFilter("failed"), children: "
|
|
42861
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", variant: filter === "all" ? "primary" : "secondary", onClick: () => setFilter("all"), children: t("debug.filterAll") }),
|
|
42862
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", variant: filter === "passed" ? "primary" : "secondary", onClick: () => setFilter("passed"), children: t("debug.filterPassed") }),
|
|
42863
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", variant: filter === "failed" ? "primary" : "secondary", onClick: () => setFilter("failed"), children: t("debug.filterFailed") })
|
|
42534
42864
|
] })
|
|
42535
42865
|
] }),
|
|
42536
42866
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-80 overflow-y-auto", children: /* @__PURE__ */ jsxRuntime.jsx(Accordion, { items: accordionItems }) })
|
|
@@ -42656,7 +42986,7 @@ function TransitionTimeline({ transitions }) {
|
|
|
42656
42986
|
EmptyState,
|
|
42657
42987
|
{
|
|
42658
42988
|
title: t("debug.noTransitionsRecorded"),
|
|
42659
|
-
description: "
|
|
42989
|
+
description: t("debug.transitionsProcessHint"),
|
|
42660
42990
|
className: "py-8"
|
|
42661
42991
|
}
|
|
42662
42992
|
);
|
|
@@ -42673,10 +43003,7 @@ function TransitionTimeline({ transitions }) {
|
|
|
42673
43003
|
const sorted = [...transitions].reverse();
|
|
42674
43004
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--timeline", children: [
|
|
42675
43005
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between mb-2", children: [
|
|
42676
|
-
/* @__PURE__ */ jsxRuntime.
|
|
42677
|
-
transitions.length,
|
|
42678
|
-
" transitions recorded"
|
|
42679
|
-
] }),
|
|
43006
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-500", children: t("debug.transitionsRecorded", { count: transitions.length }) }),
|
|
42680
43007
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-1 text-xs text-gray-500 cursor-pointer", children: [
|
|
42681
43008
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
42682
43009
|
Checkbox,
|
|
@@ -42685,7 +43012,7 @@ function TransitionTimeline({ transitions }) {
|
|
|
42685
43012
|
onChange: (e) => setAutoScroll(e.target.checked)
|
|
42686
43013
|
}
|
|
42687
43014
|
),
|
|
42688
|
-
"
|
|
43015
|
+
t("debug.autoScroll")
|
|
42689
43016
|
] })
|
|
42690
43017
|
] }),
|
|
42691
43018
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -42728,15 +43055,13 @@ function TransitionTimeline({ transitions }) {
|
|
|
42728
43055
|
variant: trace.guardResult ? "success" : "danger",
|
|
42729
43056
|
size: "sm",
|
|
42730
43057
|
children: [
|
|
42731
|
-
"
|
|
43058
|
+
t("debug.guardLabel"),
|
|
43059
|
+
" ",
|
|
42732
43060
|
trace.guardResult ? "\u2713" : "\u2717"
|
|
42733
43061
|
]
|
|
42734
43062
|
}
|
|
42735
43063
|
),
|
|
42736
|
-
/* @__PURE__ */ jsxRuntime.
|
|
42737
|
-
trace.effects.length,
|
|
42738
|
-
" effects"
|
|
42739
|
-
] })
|
|
43064
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-400 ml-auto", children: t("debug.effectsCount", { count: trace.effects.length }) })
|
|
42740
43065
|
] }),
|
|
42741
43066
|
isExpanded && trace.effects.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ml-2 mt-1 mb-2 pl-2 border-l border-gray-200 dark:border-gray-700 space-y-1", children: trace.effects.map((effect, eIdx) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1", children: [
|
|
42742
43067
|
/* @__PURE__ */ jsxRuntime.jsx(EffectBadge, { effect }),
|
|
@@ -42785,13 +43110,13 @@ function ServerBridgeTab({ bridge }) {
|
|
|
42785
43110
|
EmptyState,
|
|
42786
43111
|
{
|
|
42787
43112
|
title: t("debug.noBridgeData"),
|
|
42788
|
-
description: "
|
|
43113
|
+
description: t("debug.bridgeInitHint"),
|
|
42789
43114
|
className: "py-8"
|
|
42790
43115
|
}
|
|
42791
43116
|
);
|
|
42792
43117
|
}
|
|
42793
43118
|
const formatTime4 = (ts) => {
|
|
42794
|
-
if (ts === 0) return "
|
|
43119
|
+
if (ts === 0) return t("debug.never");
|
|
42795
43120
|
const d = new Date(ts);
|
|
42796
43121
|
return d.toLocaleTimeString("en-US", {
|
|
42797
43122
|
hour12: false,
|
|
@@ -42804,14 +43129,14 @@ function ServerBridgeTab({ bridge }) {
|
|
|
42804
43129
|
/* @__PURE__ */ jsxRuntime.jsxs(Card, { className: "p-3", children: [
|
|
42805
43130
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 mb-3", children: [
|
|
42806
43131
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: `w-3 h-3 rounded-full ${bridge.connected ? "bg-green-500 animate-pulse" : "bg-red-500"}` }),
|
|
42807
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h6", children: bridge.connected ? "
|
|
43132
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h6", children: bridge.connected ? t("debug.connected") : t("debug.disconnected") })
|
|
42808
43133
|
] }),
|
|
42809
43134
|
/* @__PURE__ */ jsxRuntime.jsxs(Stack, { gap: "xs", children: [
|
|
42810
43135
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
42811
43136
|
StatRow,
|
|
42812
43137
|
{
|
|
42813
43138
|
label: t("debug.status"),
|
|
42814
|
-
value: bridge.connected ? "
|
|
43139
|
+
value: bridge.connected ? t("debug.connected") : t("debug.disconnected"),
|
|
42815
43140
|
variant: bridge.connected ? "success" : "danger"
|
|
42816
43141
|
}
|
|
42817
43142
|
),
|
|
@@ -42839,13 +43164,10 @@ function ServerBridgeTab({ bridge }) {
|
|
|
42839
43164
|
] })
|
|
42840
43165
|
] }),
|
|
42841
43166
|
bridge.lastError && /* @__PURE__ */ jsxRuntime.jsxs(Card, { className: "p-3 border-red-200 dark:border-red-800 bg-red-50 dark:bg-red-950", children: [
|
|
42842
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "semibold", className: "text-red-600 dark:text-red-400 mb-1", children: "
|
|
43167
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "semibold", className: "text-red-600 dark:text-red-400 mb-1", children: t("debug.lastError") }),
|
|
42843
43168
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-red-500 font-mono break-all", children: bridge.lastError })
|
|
42844
43169
|
] }),
|
|
42845
|
-
bridge.connected && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-center py-2", children: /* @__PURE__ */ jsxRuntime.
|
|
42846
|
-
bridge.eventsForwarded + bridge.eventsReceived,
|
|
42847
|
-
" total events processed"
|
|
42848
|
-
] }) })
|
|
43170
|
+
bridge.connected && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-center py-2", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-400", children: t("debug.totalEventsProcessed", { count: bridge.eventsForwarded + bridge.eventsReceived }) }) })
|
|
42849
43171
|
] }) });
|
|
42850
43172
|
}
|
|
42851
43173
|
var init_ServerBridgeTab = __esm({
|
|
@@ -42955,7 +43277,7 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
42955
43277
|
EmptyState,
|
|
42956
43278
|
{
|
|
42957
43279
|
title: t("debug.noActiveTraits"),
|
|
42958
|
-
description: "
|
|
43280
|
+
description: t("debug.traitsInitHint"),
|
|
42959
43281
|
className: "py-8"
|
|
42960
43282
|
}
|
|
42961
43283
|
);
|
|
@@ -42972,7 +43294,7 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
42972
43294
|
};
|
|
42973
43295
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--dispatch", children: [
|
|
42974
43296
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3", children: [
|
|
42975
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
43297
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.activeStates") }),
|
|
42976
43298
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1", children: traits2.map((trait) => /* @__PURE__ */ jsxRuntime.jsxs(Badge, { variant: "success", size: "sm", children: [
|
|
42977
43299
|
trait.name,
|
|
42978
43300
|
": ",
|
|
@@ -42980,8 +43302,8 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
42980
43302
|
] }, trait.id)) })
|
|
42981
43303
|
] }),
|
|
42982
43304
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3", children: [
|
|
42983
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
42984
|
-
availableEvents.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-400 italic", children: "
|
|
43305
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.availableEvents") }),
|
|
43306
|
+
availableEvents.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-400 italic", children: t("debug.noTransitionsFromState") }) : /* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: availableEvents.map(({ event, transitions }) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
42985
43307
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
42986
43308
|
Button,
|
|
42987
43309
|
{
|
|
@@ -42993,15 +43315,15 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
42993
43315
|
}
|
|
42994
43316
|
),
|
|
42995
43317
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-500", children: transitions.map((t2) => `${t2.from} -> ${t2.to}`).join(", ") }),
|
|
42996
|
-
transitions.some((
|
|
43318
|
+
transitions.some((tr) => tr.guard) && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "warning", size: "sm", children: t("debug.guarded") })
|
|
42997
43319
|
] }, event)) })
|
|
42998
43320
|
] }),
|
|
42999
43321
|
unavailableEvents.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3", children: [
|
|
43000
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
43322
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.otherEvents") }),
|
|
43001
43323
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1", children: unavailableEvents.map((event) => /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "default", size: "sm", className: "opacity-50", children: event }, event)) })
|
|
43002
43324
|
] }),
|
|
43003
43325
|
log12.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
43004
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
43326
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.recentTransitions") }),
|
|
43005
43327
|
/* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: log12.map((entry, i) => /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "font-mono text-xs", children: [
|
|
43006
43328
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-400", children: entry.traitName }),
|
|
43007
43329
|
" ",
|
|
@@ -43032,21 +43354,20 @@ var init_RuntimeDebugger = __esm({
|
|
|
43032
43354
|
}
|
|
43033
43355
|
});
|
|
43034
43356
|
function ServerResponseRow({ sr }) {
|
|
43357
|
+
const { t } = useTranslate();
|
|
43035
43358
|
const entityEntries = Object.entries(sr.dataEntities);
|
|
43036
43359
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ml-4 pl-2 border-l border-purple-500/30 py-0.5 text-xs font-mono", children: [
|
|
43037
43360
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
43038
43361
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: sr.success ? "text-green-600 dark:text-green-400" : "text-red-600 dark:text-red-400", children: [
|
|
43039
43362
|
sr.success ? "\u2713" : "\u2717",
|
|
43040
|
-
"
|
|
43363
|
+
" ",
|
|
43364
|
+
t("debug.server")
|
|
43041
43365
|
] }),
|
|
43042
43366
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-600 dark:text-purple-300", children: sr.orbitalName }),
|
|
43043
|
-
sr.clientEffects > 0 && /* @__PURE__ */ jsxRuntime.
|
|
43044
|
-
sr.clientEffects,
|
|
43045
|
-
" clientEffect",
|
|
43046
|
-
sr.clientEffects !== 1 ? "s" : ""
|
|
43047
|
-
] }),
|
|
43367
|
+
sr.clientEffects > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "px-1 rounded bg-purple-500/15 text-purple-600 dark:text-purple-300", children: t("debug.clientEffectsCount", { count: sr.clientEffects }) }),
|
|
43048
43368
|
sr.emittedEvents.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "px-1 rounded bg-blue-500/15 text-blue-300", children: [
|
|
43049
|
-
"
|
|
43369
|
+
t("debug.emitLabel"),
|
|
43370
|
+
" ",
|
|
43050
43371
|
sr.emittedEvents.join(", ")
|
|
43051
43372
|
] }),
|
|
43052
43373
|
sr.error && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "px-1 rounded bg-red-500/15 text-red-600 dark:text-red-400 truncate max-w-[300px]", children: sr.error })
|
|
@@ -43054,13 +43375,12 @@ function ServerResponseRow({ sr }) {
|
|
|
43054
43375
|
entityEntries.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1 mt-0.5", children: entityEntries.map(([name, count]) => /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "px-1 rounded bg-[var(--color-card)] text-foreground", children: [
|
|
43055
43376
|
name,
|
|
43056
43377
|
": ",
|
|
43057
|
-
count
|
|
43058
|
-
" row",
|
|
43059
|
-
count !== 1 ? "s" : ""
|
|
43378
|
+
t("debug.rowsCount", { count })
|
|
43060
43379
|
] }, name)) })
|
|
43061
43380
|
] });
|
|
43062
43381
|
}
|
|
43063
43382
|
function TransitionRow({ trace }) {
|
|
43383
|
+
const { t } = useTranslate();
|
|
43064
43384
|
const isServerEntry = !!trace.serverResponse && trace.traitName.startsWith("server:");
|
|
43065
43385
|
const hasFailedEffects = trace.effects.some((e) => e.status === "failed");
|
|
43066
43386
|
if (isServerEntry && trace.serverResponse) {
|
|
@@ -43068,7 +43388,7 @@ function TransitionRow({ trace }) {
|
|
|
43068
43388
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-2 text-xs font-mono", children: [
|
|
43069
43389
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "mt-1.5 w-1.5 h-1.5 rounded-full flex-shrink-0 bg-purple-500" }),
|
|
43070
43390
|
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "warning", size: "sm", className: "flex-shrink-0", children: trace.event }),
|
|
43071
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-600 dark:text-purple-400 flex-shrink-0", children: "
|
|
43391
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-600 dark:text-purple-400 flex-shrink-0", children: t("debug.serverResponse") })
|
|
43072
43392
|
] }),
|
|
43073
43393
|
/* @__PURE__ */ jsxRuntime.jsx(ServerResponseRow, { sr: trace.serverResponse })
|
|
43074
43394
|
] });
|
|
@@ -43109,6 +43429,7 @@ function VerifyModePanel({
|
|
|
43109
43429
|
serverCount,
|
|
43110
43430
|
localCount
|
|
43111
43431
|
}) {
|
|
43432
|
+
const { t } = useTranslate();
|
|
43112
43433
|
const [expanded, setExpanded] = React84__namespace.useState(true);
|
|
43113
43434
|
const scrollRef = React84__namespace.useRef(null);
|
|
43114
43435
|
const prevCountRef = React84__namespace.useRef(0);
|
|
@@ -43139,30 +43460,20 @@ function VerifyModePanel({
|
|
|
43139
43460
|
onClick: () => setExpanded((v) => !v),
|
|
43140
43461
|
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",
|
|
43141
43462
|
"aria-expanded": expanded,
|
|
43142
|
-
"aria-label": expanded ? "
|
|
43463
|
+
"aria-label": expanded ? t("debug.collapseVerificationTimeline") : t("debug.expandVerificationTimeline"),
|
|
43143
43464
|
"data-testid": "debugger-verify-toggle",
|
|
43144
43465
|
children: [
|
|
43145
43466
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground/50 w-3", "aria-hidden": true, children: expanded ? "\u25BE" : "\u25B8" }),
|
|
43146
|
-
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: failedChecks > 0 ? "danger" : "success", size: "sm", children: failedChecks > 0 ?
|
|
43147
|
-
/* @__PURE__ */ jsxRuntime.
|
|
43148
|
-
|
|
43149
|
-
" local"
|
|
43150
|
-
] }),
|
|
43151
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-purple-600 dark:text-purple-400", children: [
|
|
43152
|
-
serverCount,
|
|
43153
|
-
" server"
|
|
43154
|
-
] }),
|
|
43467
|
+
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: failedChecks > 0 ? "danger" : "success", size: "sm", children: failedChecks > 0 ? t("debug.failCount", { count: failedChecks }) : t("debug.ok") }),
|
|
43468
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground/70", children: t("debug.localCount", { count: localCount }) }),
|
|
43469
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-600 dark:text-purple-400", children: t("debug.serverCount", { count: serverCount }) }),
|
|
43155
43470
|
traitStates && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-cyan-600 dark:text-cyan-400 truncate max-w-[400px]", children: traitStates }),
|
|
43156
|
-
!expanded && transitions.length > 0 && /* @__PURE__ */ jsxRuntime.
|
|
43157
|
-
transitions.length,
|
|
43158
|
-
" transition",
|
|
43159
|
-
transitions.length !== 1 ? "s" : ""
|
|
43160
|
-
] })
|
|
43471
|
+
!expanded && transitions.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-auto text-foreground/50", children: t("debug.transitionsCount", { count: transitions.length }) })
|
|
43161
43472
|
]
|
|
43162
43473
|
}
|
|
43163
43474
|
),
|
|
43164
43475
|
expanded && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 flex overflow-hidden", children: [
|
|
43165
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { ref: scrollRef, className: "flex-1 overflow-y-auto", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-2 py-1", children: transitions.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-foreground/50 text-xs font-mono py-2 text-center", children: "
|
|
43476
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { ref: scrollRef, className: "flex-1 overflow-y-auto", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-2 py-1", children: transitions.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-foreground/50 text-xs font-mono py-2 text-center", children: t("debug.waitingForTransitions") }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-0.5", children: transitions.map((trace) => /* @__PURE__ */ jsxRuntime.jsx(TransitionRow, { trace }, trace.id)) }) }) }),
|
|
43166
43477
|
/* @__PURE__ */ jsxRuntime.jsx(WalkMinimap, {})
|
|
43167
43478
|
] })
|
|
43168
43479
|
]
|
|
@@ -43178,6 +43489,7 @@ function RuntimeDebugger({
|
|
|
43178
43489
|
defaultTab,
|
|
43179
43490
|
schema
|
|
43180
43491
|
}) {
|
|
43492
|
+
const { t } = useTranslate();
|
|
43181
43493
|
const [isCollapsed, setIsCollapsed] = React84__namespace.useState(mode === "verify" ? true : defaultCollapsed);
|
|
43182
43494
|
const [isVisible, setIsVisible] = React84__namespace.useState(mode === "inline" || mode === "verify" || isDebugEnabled2());
|
|
43183
43495
|
const debugData = useDebugData();
|
|
@@ -43216,55 +43528,55 @@ function RuntimeDebugger({
|
|
|
43216
43528
|
const tabItems = [
|
|
43217
43529
|
{
|
|
43218
43530
|
id: "dispatch",
|
|
43219
|
-
label: "
|
|
43531
|
+
label: t("debug.tabDispatch"),
|
|
43220
43532
|
badge: debugData.traits.length || void 0,
|
|
43221
43533
|
content: /* @__PURE__ */ jsxRuntime.jsx(EventDispatcherTab, { traits: debugData.traits, schema })
|
|
43222
43534
|
},
|
|
43223
43535
|
{
|
|
43224
43536
|
id: "verify",
|
|
43225
|
-
label: failedChecks > 0 ? "
|
|
43537
|
+
label: failedChecks > 0 ? t("debug.tabVerifyAlert") : t("debug.tabVerify"),
|
|
43226
43538
|
badge: verification.summary.totalChecks || void 0,
|
|
43227
43539
|
content: /* @__PURE__ */ jsxRuntime.jsx(VerificationTab, { checks: verification.checks, summary: verification.summary })
|
|
43228
43540
|
},
|
|
43229
43541
|
{
|
|
43230
43542
|
id: "timeline",
|
|
43231
|
-
label: "
|
|
43543
|
+
label: t("debug.tabTimeline"),
|
|
43232
43544
|
badge: verification.transitions.length || void 0,
|
|
43233
43545
|
content: /* @__PURE__ */ jsxRuntime.jsx(TransitionTimeline, { transitions: verification.transitions })
|
|
43234
43546
|
},
|
|
43235
43547
|
{
|
|
43236
43548
|
id: "bridge",
|
|
43237
|
-
label: "
|
|
43549
|
+
label: t("debug.tabBridge"),
|
|
43238
43550
|
badge: verification.bridge?.connected ? void 0 : 1,
|
|
43239
43551
|
content: /* @__PURE__ */ jsxRuntime.jsx(ServerBridgeTab, { bridge: verification.bridge })
|
|
43240
43552
|
},
|
|
43241
43553
|
{
|
|
43242
43554
|
id: "traits",
|
|
43243
|
-
label: "
|
|
43555
|
+
label: t("debug.tabTraits"),
|
|
43244
43556
|
badge: debugData.traits.length || void 0,
|
|
43245
43557
|
content: /* @__PURE__ */ jsxRuntime.jsx(TraitsTab, { traits: debugData.traits })
|
|
43246
43558
|
},
|
|
43247
43559
|
{
|
|
43248
43560
|
id: "ticks",
|
|
43249
|
-
label: "
|
|
43250
|
-
badge: debugData.ticks.filter((
|
|
43561
|
+
label: t("debug.tabTicks"),
|
|
43562
|
+
badge: debugData.ticks.filter((tick) => tick.active).length || void 0,
|
|
43251
43563
|
content: /* @__PURE__ */ jsxRuntime.jsx(TicksTab, { ticks: debugData.ticks })
|
|
43252
43564
|
},
|
|
43253
43565
|
{
|
|
43254
43566
|
id: "entities",
|
|
43255
|
-
label: "
|
|
43567
|
+
label: t("debug.tabEntities"),
|
|
43256
43568
|
badge: debugData.entitySnapshot?.runtime.length || void 0,
|
|
43257
43569
|
content: /* @__PURE__ */ jsxRuntime.jsx(EntitiesTab, { snapshot: debugData.entitySnapshot })
|
|
43258
43570
|
},
|
|
43259
43571
|
{
|
|
43260
43572
|
id: "events",
|
|
43261
|
-
label: "
|
|
43573
|
+
label: t("debug.tabEvents"),
|
|
43262
43574
|
badge: debugData.events.length > 0 ? debugData.events.length : void 0,
|
|
43263
43575
|
content: /* @__PURE__ */ jsxRuntime.jsx(EventFlowTab, { events: debugData.events })
|
|
43264
43576
|
},
|
|
43265
43577
|
{
|
|
43266
43578
|
id: "guards",
|
|
43267
|
-
label: "
|
|
43579
|
+
label: t("debug.tabGuards"),
|
|
43268
43580
|
badge: debugData.guards.filter((g) => !g.result).length || void 0,
|
|
43269
43581
|
content: /* @__PURE__ */ jsxRuntime.jsx(GuardsPanel, { guards: debugData.guards })
|
|
43270
43582
|
}
|
|
@@ -43292,15 +43604,10 @@ function RuntimeDebugger({
|
|
|
43292
43604
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
43293
43605
|
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "h6", style: { fontSize: "0.75rem" }, children: [
|
|
43294
43606
|
isCollapsed ? "\u25B6" : "\u25BC",
|
|
43295
|
-
"
|
|
43607
|
+
" ",
|
|
43608
|
+
t("debug.debugger")
|
|
43296
43609
|
] }),
|
|
43297
|
-
failedChecks > 0 ? /* @__PURE__ */ jsxRuntime.
|
|
43298
|
-
failedChecks,
|
|
43299
|
-
" failed"
|
|
43300
|
-
] }) : debugData.traits.length > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(Badge, { variant: "success", size: "sm", children: [
|
|
43301
|
-
debugData.traits.length,
|
|
43302
|
-
" traits"
|
|
43303
|
-
] }) : /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "info", size: "sm", children: "Idle" })
|
|
43610
|
+
failedChecks > 0 ? /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "danger", size: "sm", children: t("debug.failedCount", { count: failedChecks }) }) : debugData.traits.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "success", size: "sm", children: t("debug.traitsCount", { count: debugData.traits.length }) }) : /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "info", size: "sm", children: t("debug.idle") })
|
|
43304
43611
|
] })
|
|
43305
43612
|
}
|
|
43306
43613
|
),
|
|
@@ -43318,9 +43625,9 @@ function RuntimeDebugger({
|
|
|
43318
43625
|
);
|
|
43319
43626
|
}
|
|
43320
43627
|
if (mode === "verify") {
|
|
43321
|
-
const traitStates = debugData.traits.map((
|
|
43322
|
-
const serverEntries = verification.transitions.filter((
|
|
43323
|
-
const localEntries = verification.transitions.filter((
|
|
43628
|
+
const traitStates = debugData.traits.map((t2) => `${t2.name}:${t2.currentState}`).join(" | ");
|
|
43629
|
+
const serverEntries = verification.transitions.filter((t2) => t2.serverResponse);
|
|
43630
|
+
const localEntries = verification.transitions.filter((t2) => !t2.serverResponse);
|
|
43324
43631
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
43325
43632
|
VerifyModePanel,
|
|
43326
43633
|
{
|
|
@@ -43352,7 +43659,7 @@ function RuntimeDebugger({
|
|
|
43352
43659
|
variant: "secondary",
|
|
43353
43660
|
size: "sm",
|
|
43354
43661
|
className: "runtime-debugger__toggle",
|
|
43355
|
-
title: "
|
|
43662
|
+
title: t("debug.openDebugger"),
|
|
43356
43663
|
children: failedChecks > 0 ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "relative", children: [
|
|
43357
43664
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "V" }),
|
|
43358
43665
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute -top-1 -right-2 w-2 h-2 bg-red-500 rounded-full" })
|
|
@@ -43362,11 +43669,8 @@ function RuntimeDebugger({
|
|
|
43362
43669
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "runtime-debugger__header", children: [
|
|
43363
43670
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
43364
43671
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-lg", children: "V" }),
|
|
43365
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h6", children: "
|
|
43366
|
-
failedChecks > 0 ? /* @__PURE__ */ jsxRuntime.
|
|
43367
|
-
failedChecks,
|
|
43368
|
-
" failed"
|
|
43369
|
-
] }) : verification.summary.totalChecks > 0 ? /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "success", size: "sm", children: "All passing" }) : /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "info", size: "sm", children: "Runtime" })
|
|
43672
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h6", children: t("debug.kflowVerifier") }),
|
|
43673
|
+
failedChecks > 0 ? /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "danger", size: "sm", children: t("debug.failedCount", { count: failedChecks }) }) : verification.summary.totalChecks > 0 ? /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "success", size: "sm", children: t("debug.allPassing") }) : /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "info", size: "sm", children: t("debug.runtime") })
|
|
43370
43674
|
] }),
|
|
43371
43675
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
43372
43676
|
Button,
|
|
@@ -43374,7 +43678,7 @@ function RuntimeDebugger({
|
|
|
43374
43678
|
onClick: () => setIsCollapsed(true),
|
|
43375
43679
|
variant: "ghost",
|
|
43376
43680
|
size: "sm",
|
|
43377
|
-
title: "
|
|
43681
|
+
title: t("debug.close"),
|
|
43378
43682
|
children: "x"
|
|
43379
43683
|
}
|
|
43380
43684
|
)
|
|
@@ -43388,7 +43692,7 @@ function RuntimeDebugger({
|
|
|
43388
43692
|
className: "runtime-debugger__tabs"
|
|
43389
43693
|
}
|
|
43390
43694
|
) }),
|
|
43391
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "runtime-debugger__footer", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-foreground/50", children: "
|
|
43695
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "runtime-debugger__footer", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-foreground/50", children: t("debug.toggleHint") }) })
|
|
43392
43696
|
] })
|
|
43393
43697
|
}
|
|
43394
43698
|
);
|
|
@@ -43414,6 +43718,7 @@ var init_RuntimeDebugger2 = __esm({
|
|
|
43414
43718
|
init_TransitionTimeline();
|
|
43415
43719
|
init_ServerBridgeTab();
|
|
43416
43720
|
init_EventDispatcherTab();
|
|
43721
|
+
init_useTranslate();
|
|
43417
43722
|
init_RuntimeDebugger();
|
|
43418
43723
|
RuntimeDebugger.displayName = "RuntimeDebugger";
|
|
43419
43724
|
}
|
|
@@ -44702,7 +45007,7 @@ var init_StatCard = __esm({
|
|
|
44702
45007
|
}
|
|
44703
45008
|
);
|
|
44704
45009
|
}
|
|
44705
|
-
const label = schemaStats?.[0]?.label || labelToUse || "
|
|
45010
|
+
const label = schemaStats?.[0]?.label || labelToUse || t("statCard.defaultLabel");
|
|
44706
45011
|
const normalizedPropValue = Array.isArray(propValue) ? propValue[0] ?? propValue.length : propValue;
|
|
44707
45012
|
const value = schemaStats?.[0]?.value ?? normalizedPropValue ?? 0;
|
|
44708
45013
|
const trendDirection = manualDirection || (calculatedTrend === void 0 || calculatedTrend === 0 ? "neutral" : calculatedTrend > 0 ? "up" : "down");
|
|
@@ -44745,7 +45050,7 @@ var init_StatCard = __esm({
|
|
|
44745
45050
|
]
|
|
44746
45051
|
}
|
|
44747
45052
|
),
|
|
44748
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", color: "secondary", as: "span", children: "
|
|
45053
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", color: "secondary", as: "span", children: t("statCard.vsLastPeriod") })
|
|
44749
45054
|
] }),
|
|
44750
45055
|
subtitle && !calculatedTrend && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", color: "secondary", children: subtitle })
|
|
44751
45056
|
] }),
|