@almadar/ui 5.21.8 → 5.21.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/avl/index.cjs +964 -651
- package/dist/avl/index.js +964 -651
- package/dist/components/game/organisms/three/index.cjs +490 -1
- package/dist/components/game/organisms/three/index.js +490 -1
- package/dist/components/index.cjs +669 -371
- package/dist/components/index.js +669 -371
- package/dist/docs/index.cjs +301 -5
- package/dist/docs/index.js +301 -5
- package/dist/hooks/index.cjs +297 -3
- package/dist/hooks/index.js +297 -3
- package/dist/locales/index.cjs +899 -9
- package/dist/locales/index.js +899 -9
- package/dist/providers/index.cjs +669 -371
- package/dist/providers/index.js +669 -371
- package/dist/runtime/index.cjs +669 -371
- package/dist/runtime/index.js +669 -371
- package/locales/ar.json +301 -31
- package/locales/en.json +297 -31
- package/locales/sl.json +301 -31
- package/package.json +1 -1
package/dist/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,299 @@ 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",
|
|
818
|
+
"relationSelect.selectPlaceholder": "Select..."
|
|
525
819
|
};
|
|
526
820
|
}
|
|
527
821
|
});
|
|
@@ -5504,6 +5798,7 @@ var init_LawReferenceTooltip = __esm({
|
|
|
5504
5798
|
init_Typography();
|
|
5505
5799
|
init_Divider();
|
|
5506
5800
|
init_cn();
|
|
5801
|
+
init_useTranslate();
|
|
5507
5802
|
positionStyles2 = {
|
|
5508
5803
|
top: "bottom-full left-1/2 -translate-x-1/2 mb-2",
|
|
5509
5804
|
bottom: "top-full left-1/2 -translate-x-1/2 mt-2",
|
|
@@ -5522,6 +5817,7 @@ var init_LawReferenceTooltip = __esm({
|
|
|
5522
5817
|
position = "top",
|
|
5523
5818
|
className
|
|
5524
5819
|
}) => {
|
|
5820
|
+
const { t } = useTranslate();
|
|
5525
5821
|
const [isVisible, setIsVisible] = React84__namespace.default.useState(false);
|
|
5526
5822
|
const timeoutRef = React84__namespace.default.useRef(null);
|
|
5527
5823
|
const handleMouseEnter = () => {
|
|
@@ -5605,7 +5901,7 @@ var init_LawReferenceTooltip = __esm({
|
|
|
5605
5901
|
target: "_blank",
|
|
5606
5902
|
rel: "noopener noreferrer",
|
|
5607
5903
|
onClick: (e) => e.stopPropagation(),
|
|
5608
|
-
children: "
|
|
5904
|
+
children: t("lawReference.viewFullText")
|
|
5609
5905
|
}
|
|
5610
5906
|
)
|
|
5611
5907
|
] }),
|
|
@@ -13507,6 +13803,7 @@ var log6, SWIM_GUTTER, CENTER_W, BehaviorView;
|
|
|
13507
13803
|
var init_BehaviorView = __esm({
|
|
13508
13804
|
"components/avl/molecules/BehaviorView.tsx"() {
|
|
13509
13805
|
"use client";
|
|
13806
|
+
init_useTranslate();
|
|
13510
13807
|
init_AvlState();
|
|
13511
13808
|
init_AvlTransitionLane();
|
|
13512
13809
|
init_AvlSwimLane();
|
|
@@ -13516,6 +13813,7 @@ var init_BehaviorView = __esm({
|
|
|
13516
13813
|
SWIM_GUTTER = 120;
|
|
13517
13814
|
CENTER_W = 360;
|
|
13518
13815
|
BehaviorView = ({ data }) => {
|
|
13816
|
+
const { t } = useTranslate();
|
|
13519
13817
|
const [layout, setLayout] = React84.useState(null);
|
|
13520
13818
|
const traitName = data.traits[0]?.name;
|
|
13521
13819
|
const traitData = traitName ? data.traitDetails[traitName] : void 0;
|
|
@@ -13525,10 +13823,10 @@ var init_BehaviorView = __esm({
|
|
|
13525
13823
|
computeTraitLayout(traitData).then(setLayout).catch((err) => log6.error("compute-trait-layout-failed", { error: err instanceof Error ? err : String(err) }));
|
|
13526
13824
|
}, [dataKey]);
|
|
13527
13825
|
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: "
|
|
13826
|
+
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
13827
|
}
|
|
13530
13828
|
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: "
|
|
13829
|
+
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
13830
|
}
|
|
13533
13831
|
const hasExternal = traitData.listenedEvents.length > 0 || traitData.emittedEvents.length > 0;
|
|
13534
13832
|
const viewW = hasExternal ? SWIM_GUTTER + CENTER_W + SWIM_GUTTER : CENTER_W + 60;
|
|
@@ -13544,10 +13842,7 @@ var init_BehaviorView = __esm({
|
|
|
13544
13842
|
const machineHeight = scaledH + 100;
|
|
13545
13843
|
const renderMachine = /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
|
|
13546
13844
|
/* @__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
|
-
] }),
|
|
13845
|
+
/* @__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
13846
|
/* @__PURE__ */ jsxRuntime.jsxs("defs", { children: [
|
|
13552
13847
|
/* @__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
13848
|
/* @__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 +14150,7 @@ var init_CodeBlock = __esm({
|
|
|
13855
14150
|
const isLolo = language === "lolo";
|
|
13856
14151
|
const activeStyle = isOrb ? orbStyle : isLolo ? loloStyle : dark__default.default;
|
|
13857
14152
|
const eventBus = useEventBus();
|
|
13858
|
-
const { t
|
|
14153
|
+
const { t } = useTranslate();
|
|
13859
14154
|
const scrollRef = React84.useRef(null);
|
|
13860
14155
|
const codeRef = React84.useRef(null);
|
|
13861
14156
|
const savedScrollLeftRef = React84.useRef(0);
|
|
@@ -14110,7 +14405,7 @@ var init_CodeBlock = __esm({
|
|
|
14110
14405
|
size: "sm",
|
|
14111
14406
|
onClick: handleCopy,
|
|
14112
14407
|
className: "opacity-0 group-hover:opacity-100 focus:opacity-100 transition-opacity text-muted-foreground hover:text-white",
|
|
14113
|
-
"aria-label": "
|
|
14408
|
+
"aria-label": t("common.copy"),
|
|
14114
14409
|
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
14410
|
}
|
|
14116
14411
|
)
|
|
@@ -14715,7 +15010,7 @@ var init_StateMachineView = __esm({
|
|
|
14715
15010
|
const endX2 = fromState.x + Math.cos(Math.PI / 2 * loopDirection + endAngle) * fromState.radius;
|
|
14716
15011
|
const endY2 = fromState.y + Math.sin(Math.PI / 2 * loopDirection + endAngle) * fromState.radius;
|
|
14717
15012
|
const isSingle2 = bundle.labels.length === 1;
|
|
14718
|
-
const labelText2 = isSingle2 ? bundle.labels[0].event :
|
|
15013
|
+
const labelText2 = isSingle2 ? bundle.labels[0].event : t("stateMachine.eventCount", { count: bundle.labels.length });
|
|
14719
15014
|
const bundleColor2 = isSingle2 ? config.colors.arrow : "var(--color-accent)";
|
|
14720
15015
|
const labelWidth2 = labelText2.length * 9 + (isSingle2 ? 24 : 40);
|
|
14721
15016
|
const cx = fromState.x;
|
|
@@ -14841,7 +15136,7 @@ var init_StateMachineView = __esm({
|
|
|
14841
15136
|
const controlX = midX + perpX;
|
|
14842
15137
|
const controlY = midY + perpY;
|
|
14843
15138
|
const isSingle = bundle.labels.length === 1;
|
|
14844
|
-
const labelText = isSingle ? bundle.labels[0].event :
|
|
15139
|
+
const labelText = isSingle ? bundle.labels[0].event : t("stateMachine.eventCount", { count: bundle.labels.length });
|
|
14845
15140
|
const labelWidth = labelText.length * 9 + (isSingle ? 24 : 40);
|
|
14846
15141
|
const bundleColor = isSingle ? config.colors.arrow : "var(--color-accent)";
|
|
14847
15142
|
const curveMidpoint = {
|
|
@@ -14996,7 +15291,7 @@ var init_StateMachineView = __esm({
|
|
|
14996
15291
|
{
|
|
14997
15292
|
className: "absolute -top-2 left-1/2 transform -translate-x-1/2 px-2 py-0.5 rounded-full",
|
|
14998
15293
|
style: { backgroundColor: "var(--color-success)" },
|
|
14999
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", weight: "semibold", style: { color: "var(--color-success-foreground)" }, children: "
|
|
15294
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", weight: "semibold", style: { color: "var(--color-success-foreground)" }, children: t("stateMachine.pinned") })
|
|
15000
15295
|
}
|
|
15001
15296
|
),
|
|
15002
15297
|
!isSingle && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -15018,10 +15313,7 @@ var init_StateMachineView = __esm({
|
|
|
15018
15313
|
{
|
|
15019
15314
|
className: "ml-2 px-2 py-0.5 rounded-full",
|
|
15020
15315
|
style: { backgroundColor: "var(--color-accent)" },
|
|
15021
|
-
children: /* @__PURE__ */ jsxRuntime.
|
|
15022
|
-
bundle.labels.length,
|
|
15023
|
-
" events"
|
|
15024
|
-
] })
|
|
15316
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", style: { color: "var(--color-accent-foreground)" }, children: t("stateMachine.eventCount", { count: bundle.labels.length }) })
|
|
15025
15317
|
}
|
|
15026
15318
|
)
|
|
15027
15319
|
]
|
|
@@ -15166,7 +15458,7 @@ var init_StateMachineView = __esm({
|
|
|
15166
15458
|
align: "center",
|
|
15167
15459
|
className: "mb-2",
|
|
15168
15460
|
style: { color: "var(--color-warning)", fontSize: "13px" },
|
|
15169
|
-
children: "
|
|
15461
|
+
children: t("stateMachine.externalEffects")
|
|
15170
15462
|
}
|
|
15171
15463
|
),
|
|
15172
15464
|
outputs.outputs.map((output, idx) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -15186,10 +15478,10 @@ var init_StateMachineView = __esm({
|
|
|
15186
15478
|
Legend = ({ config, y }) => {
|
|
15187
15479
|
const { t } = useTranslate();
|
|
15188
15480
|
const items = [
|
|
15189
|
-
{ label: "
|
|
15190
|
-
{ label: "
|
|
15191
|
-
{ label: "
|
|
15192
|
-
{ label: "
|
|
15481
|
+
{ key: "initial", label: t("stateMachine.legend.initial"), color: config.colors.initialNode, isMultiEvent: false },
|
|
15482
|
+
{ key: "final", label: t("stateMachine.legend.final"), color: config.colors.finalNode, isMultiEvent: false },
|
|
15483
|
+
{ key: "state", label: t("stateMachine.legend.state"), color: config.colors.nodeBorder, isMultiEvent: false },
|
|
15484
|
+
{ key: "multiEvent", label: t("stateMachine.legend.multiEvent"), color: "var(--color-accent)", isMultiEvent: true }
|
|
15193
15485
|
];
|
|
15194
15486
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
15195
15487
|
HStack,
|
|
@@ -15204,8 +15496,8 @@ var init_StateMachineView = __esm({
|
|
|
15204
15496
|
{
|
|
15205
15497
|
className: "w-3 h-3 rounded-full",
|
|
15206
15498
|
style: {
|
|
15207
|
-
backgroundColor: item.
|
|
15208
|
-
border: item.
|
|
15499
|
+
backgroundColor: item.isMultiEvent ? item.color : config.colors.node,
|
|
15500
|
+
border: !item.isMultiEvent ? `2px solid ${item.color}` : "none"
|
|
15209
15501
|
}
|
|
15210
15502
|
}
|
|
15211
15503
|
),
|
|
@@ -15217,7 +15509,7 @@ var init_StateMachineView = __esm({
|
|
|
15217
15509
|
children: item.label
|
|
15218
15510
|
}
|
|
15219
15511
|
)
|
|
15220
|
-
] }, item.
|
|
15512
|
+
] }, item.key))
|
|
15221
15513
|
}
|
|
15222
15514
|
);
|
|
15223
15515
|
};
|
|
@@ -16011,13 +16303,13 @@ var init_JazariStateMachine = __esm({
|
|
|
16011
16303
|
);
|
|
16012
16304
|
}, [resolvedTrait, entityFields]);
|
|
16013
16305
|
if (isLoading) {
|
|
16014
|
-
return /* @__PURE__ */ jsxRuntime.jsx(LoadingState, { message: "
|
|
16306
|
+
return /* @__PURE__ */ jsxRuntime.jsx(LoadingState, { message: t("stateMachine.loading") });
|
|
16015
16307
|
}
|
|
16016
16308
|
if (error) {
|
|
16017
16309
|
return /* @__PURE__ */ jsxRuntime.jsx(ErrorState, { message: error instanceof Error ? error.message : String(error) });
|
|
16018
16310
|
}
|
|
16019
16311
|
if (!resolvedTrait || !layoutData || layoutData.states.length === 0) {
|
|
16020
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { padding: "lg", className: cn("text-center", className), children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", className: "opacity-60", children: "
|
|
16312
|
+
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") }) });
|
|
16021
16313
|
}
|
|
16022
16314
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
16023
16315
|
StateMachineView,
|
|
@@ -17061,13 +17353,13 @@ var init_LayoutPatterns = __esm({
|
|
|
17061
17353
|
function generateRuleId() {
|
|
17062
17354
|
return `rule-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
17063
17355
|
}
|
|
17064
|
-
function questionsToOptions(questions,
|
|
17356
|
+
function questionsToOptions(questions, endOfSurveyLabel) {
|
|
17065
17357
|
const opts = questions.map((q) => ({
|
|
17066
17358
|
value: q.id,
|
|
17067
17359
|
label: q.label
|
|
17068
17360
|
}));
|
|
17069
|
-
if (
|
|
17070
|
-
opts.push({ value: END_OF_SURVEY, label:
|
|
17361
|
+
if (endOfSurveyLabel !== null) {
|
|
17362
|
+
opts.push({ value: END_OF_SURVEY, label: endOfSurveyLabel });
|
|
17071
17363
|
}
|
|
17072
17364
|
return opts;
|
|
17073
17365
|
}
|
|
@@ -17076,7 +17368,7 @@ function isRuleBroken(rule, questions) {
|
|
|
17076
17368
|
const targetExists = rule.targetQuestionId === END_OF_SURVEY || questions.some((q) => q.id === rule.targetQuestionId);
|
|
17077
17369
|
return !sourceExists || !targetExists;
|
|
17078
17370
|
}
|
|
17079
|
-
var END_OF_SURVEY,
|
|
17371
|
+
var END_OF_SURVEY, RuleRow, NODE_WIDTH, NODE_HEIGHT, NODE_GAP_Y, PADDING, LogicGraph, BranchingLogicBuilder;
|
|
17080
17372
|
var init_BranchingLogicBuilder = __esm({
|
|
17081
17373
|
"components/core/molecules/BranchingLogicBuilder.tsx"() {
|
|
17082
17374
|
"use client";
|
|
@@ -17089,14 +17381,9 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17089
17381
|
init_FilterPill();
|
|
17090
17382
|
init_Box();
|
|
17091
17383
|
init_useEventBus();
|
|
17384
|
+
init_useTranslate();
|
|
17092
17385
|
init_cn();
|
|
17093
17386
|
END_OF_SURVEY = "end-of-survey";
|
|
17094
|
-
OPERATOR_OPTIONS = [
|
|
17095
|
-
{ value: "equals", label: "equals" },
|
|
17096
|
-
{ value: "not-equals", label: "does not equal" },
|
|
17097
|
-
{ value: "contains", label: "contains" },
|
|
17098
|
-
{ value: "in", label: "is one of" }
|
|
17099
|
-
];
|
|
17100
17387
|
RuleRow = ({
|
|
17101
17388
|
rule,
|
|
17102
17389
|
questions,
|
|
@@ -17105,8 +17392,21 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17105
17392
|
onChange,
|
|
17106
17393
|
onDelete
|
|
17107
17394
|
}) => {
|
|
17108
|
-
const
|
|
17109
|
-
const
|
|
17395
|
+
const { t } = useTranslate();
|
|
17396
|
+
const operatorOptions = React84.useMemo(
|
|
17397
|
+
() => [
|
|
17398
|
+
{ value: "equals", label: t("branchingLogic.operatorEquals") },
|
|
17399
|
+
{ value: "not-equals", label: t("branchingLogic.operatorNotEquals") },
|
|
17400
|
+
{ value: "contains", label: t("branchingLogic.operatorContains") },
|
|
17401
|
+
{ value: "in", label: t("branchingLogic.operatorIn") }
|
|
17402
|
+
],
|
|
17403
|
+
[t]
|
|
17404
|
+
);
|
|
17405
|
+
const sourceOptions = React84.useMemo(() => questionsToOptions(questions, null), [questions]);
|
|
17406
|
+
const targetOptions = React84.useMemo(
|
|
17407
|
+
() => questionsToOptions(questions, t("branchingLogic.endOfSurvey")),
|
|
17408
|
+
[questions, t]
|
|
17409
|
+
);
|
|
17110
17410
|
const sourceQuestion = questions.find((q) => q.id === rule.sourceQuestionId);
|
|
17111
17411
|
const valueOptions = React84.useMemo(() => {
|
|
17112
17412
|
if (!sourceQuestion?.optionValues) return [];
|
|
@@ -17151,22 +17451,22 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17151
17451
|
),
|
|
17152
17452
|
children: [
|
|
17153
17453
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex flex-wrap items-center gap-2", children: [
|
|
17154
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "label", weight: "semibold", className: "shrink-0", children: "
|
|
17454
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "label", weight: "semibold", className: "shrink-0", children: t("branchingLogic.if") }),
|
|
17155
17455
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "min-w-[10rem] grow basis-40", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
17156
17456
|
Select,
|
|
17157
17457
|
{
|
|
17158
17458
|
options: sourceOptions,
|
|
17159
17459
|
value: rule.sourceQuestionId,
|
|
17160
|
-
placeholder: "
|
|
17460
|
+
placeholder: t("branchingLogic.selectQuestion"),
|
|
17161
17461
|
onChange: handleSource,
|
|
17162
17462
|
disabled: readOnly,
|
|
17163
|
-
error: broken ? "
|
|
17463
|
+
error: broken ? t("branchingLogic.brokenReference") : void 0
|
|
17164
17464
|
}
|
|
17165
17465
|
) }),
|
|
17166
17466
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "min-w-[8rem] basis-32", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
17167
17467
|
Select,
|
|
17168
17468
|
{
|
|
17169
|
-
options:
|
|
17469
|
+
options: operatorOptions,
|
|
17170
17470
|
value: rule.operator,
|
|
17171
17471
|
onChange: handleOperator,
|
|
17172
17472
|
disabled: readOnly
|
|
@@ -17189,7 +17489,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17189
17489
|
{
|
|
17190
17490
|
options: valueOptions.filter((o) => !chips.includes(o.value)),
|
|
17191
17491
|
value: "",
|
|
17192
|
-
placeholder: "
|
|
17492
|
+
placeholder: t("branchingLogic.addValue"),
|
|
17193
17493
|
onChange: handleAddChip,
|
|
17194
17494
|
disabled: readOnly
|
|
17195
17495
|
}
|
|
@@ -17197,7 +17497,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17197
17497
|
Input,
|
|
17198
17498
|
{
|
|
17199
17499
|
inputType: "text",
|
|
17200
|
-
placeholder: "
|
|
17500
|
+
placeholder: t("branchingLogic.typeValuePressEnter"),
|
|
17201
17501
|
value: "",
|
|
17202
17502
|
onKeyDown: (e) => {
|
|
17203
17503
|
if (e.key !== "Enter") return;
|
|
@@ -17215,7 +17515,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17215
17515
|
{
|
|
17216
17516
|
options: valueOptions,
|
|
17217
17517
|
value: scalarValue,
|
|
17218
|
-
placeholder: "
|
|
17518
|
+
placeholder: t("branchingLogic.selectValue"),
|
|
17219
17519
|
onChange: (e) => onChange({ ...rule, value: e.target.value }),
|
|
17220
17520
|
disabled: readOnly
|
|
17221
17521
|
}
|
|
@@ -17223,7 +17523,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17223
17523
|
Input,
|
|
17224
17524
|
{
|
|
17225
17525
|
inputType: "text",
|
|
17226
|
-
placeholder: "
|
|
17526
|
+
placeholder: t("branchingLogic.value"),
|
|
17227
17527
|
value: scalarValue,
|
|
17228
17528
|
onChange: handleScalarValue,
|
|
17229
17529
|
disabled: readOnly
|
|
@@ -17231,17 +17531,17 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17231
17531
|
) }),
|
|
17232
17532
|
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "label", weight: "semibold", className: "shrink-0 inline-flex items-center gap-1", children: [
|
|
17233
17533
|
/* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.ArrowRight, { className: "h-4 w-4" }),
|
|
17234
|
-
"
|
|
17534
|
+
t("branchingLogic.goTo")
|
|
17235
17535
|
] }),
|
|
17236
17536
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "min-w-[10rem] grow basis-40", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
17237
17537
|
Select,
|
|
17238
17538
|
{
|
|
17239
17539
|
options: targetOptions,
|
|
17240
17540
|
value: rule.targetQuestionId,
|
|
17241
|
-
placeholder: "
|
|
17541
|
+
placeholder: t("branchingLogic.selectTarget"),
|
|
17242
17542
|
onChange: handleTarget,
|
|
17243
17543
|
disabled: readOnly,
|
|
17244
|
-
error: broken && rule.targetQuestionId !== END_OF_SURVEY ? "
|
|
17544
|
+
error: broken && rule.targetQuestionId !== END_OF_SURVEY ? t("branchingLogic.brokenReference") : void 0
|
|
17245
17545
|
}
|
|
17246
17546
|
) }),
|
|
17247
17547
|
!readOnly && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -17253,11 +17553,11 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17253
17553
|
action: "DELETE_RULE",
|
|
17254
17554
|
actionPayload: { ruleId: rule.id },
|
|
17255
17555
|
onClick: onDelete,
|
|
17256
|
-
"aria-label": "
|
|
17556
|
+
"aria-label": t("branchingLogic.deleteRule")
|
|
17257
17557
|
}
|
|
17258
17558
|
)
|
|
17259
17559
|
] }),
|
|
17260
|
-
broken && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "error", size: "sm", label: "
|
|
17560
|
+
broken && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "error", size: "sm", label: t("branchingLogic.brokenReference") })
|
|
17261
17561
|
]
|
|
17262
17562
|
}
|
|
17263
17563
|
);
|
|
@@ -17267,10 +17567,12 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17267
17567
|
NODE_GAP_Y = 80;
|
|
17268
17568
|
PADDING = 32;
|
|
17269
17569
|
LogicGraph = ({ questions, rules }) => {
|
|
17570
|
+
const { t } = useTranslate();
|
|
17571
|
+
const endOfSurveyLabel = t("branchingLogic.endOfSurvey");
|
|
17270
17572
|
const layout = React84.useMemo(() => {
|
|
17271
17573
|
const items = [
|
|
17272
17574
|
...questions.map((q) => ({ id: q.id, label: q.label, isEnd: false })),
|
|
17273
|
-
{ id: END_OF_SURVEY, label:
|
|
17575
|
+
{ id: END_OF_SURVEY, label: endOfSurveyLabel, isEnd: true }
|
|
17274
17576
|
];
|
|
17275
17577
|
const positions = {};
|
|
17276
17578
|
items.forEach((item, i) => {
|
|
@@ -17282,14 +17584,14 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17282
17584
|
const width = NODE_WIDTH + PADDING * 2 + 220;
|
|
17283
17585
|
const height = PADDING * 2 + items.length * (NODE_HEIGHT + NODE_GAP_Y);
|
|
17284
17586
|
return { items, positions, width, height };
|
|
17285
|
-
}, [questions]);
|
|
17587
|
+
}, [questions, endOfSurveyLabel]);
|
|
17286
17588
|
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "overflow-auto rounded-container border border-border bg-card p-2", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
17287
17589
|
"svg",
|
|
17288
17590
|
{
|
|
17289
17591
|
width: layout.width,
|
|
17290
17592
|
height: layout.height,
|
|
17291
17593
|
role: "img",
|
|
17292
|
-
"aria-label": "
|
|
17594
|
+
"aria-label": t("branchingLogic.graphAriaLabel"),
|
|
17293
17595
|
style: { display: "block" },
|
|
17294
17596
|
children: [
|
|
17295
17597
|
/* @__PURE__ */ jsxRuntime.jsx("defs", { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -17397,6 +17699,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17397
17699
|
readOnly = false,
|
|
17398
17700
|
className
|
|
17399
17701
|
}) => {
|
|
17702
|
+
const { t } = useTranslate();
|
|
17400
17703
|
const eventBus = useEventBus();
|
|
17401
17704
|
const questions = Array.isArray(questionsProp) ? questionsProp : [];
|
|
17402
17705
|
const rulesInitial = Array.isArray(rulesProp) ? rulesProp : [];
|
|
@@ -17449,16 +17752,23 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17449
17752
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex flex-wrap items-center justify-between gap-2", children: [
|
|
17450
17753
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex items-center gap-2", children: [
|
|
17451
17754
|
/* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.GitBranch, { className: "h-5 w-5 text-foreground" }),
|
|
17452
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "subheading", weight: "semibold", children: "
|
|
17755
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "subheading", weight: "semibold", children: t("branchingLogic.title") }),
|
|
17453
17756
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
17454
17757
|
Badge,
|
|
17455
17758
|
{
|
|
17456
17759
|
variant: "neutral",
|
|
17457
17760
|
size: "sm",
|
|
17458
|
-
label:
|
|
17761
|
+
label: rules.length === 1 ? t("branchingLogic.ruleCountOne", { count: rules.length }) : t("branchingLogic.ruleCountOther", { count: rules.length })
|
|
17459
17762
|
}
|
|
17460
17763
|
),
|
|
17461
|
-
brokenCount > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
17764
|
+
brokenCount > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
17765
|
+
Badge,
|
|
17766
|
+
{
|
|
17767
|
+
variant: "error",
|
|
17768
|
+
size: "sm",
|
|
17769
|
+
label: t("branchingLogic.brokenCount", { count: brokenCount })
|
|
17770
|
+
}
|
|
17771
|
+
)
|
|
17462
17772
|
] }),
|
|
17463
17773
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex items-center gap-1 rounded-sm border border-border bg-card p-0.5", children: [
|
|
17464
17774
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -17469,7 +17779,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17469
17779
|
leftIcon: LucideIcons2.Pencil,
|
|
17470
17780
|
action: "VIEW_EDIT",
|
|
17471
17781
|
onClick: () => setView("edit"),
|
|
17472
|
-
children: "
|
|
17782
|
+
children: t("branchingLogic.rules")
|
|
17473
17783
|
}
|
|
17474
17784
|
),
|
|
17475
17785
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -17480,13 +17790,13 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17480
17790
|
leftIcon: LucideIcons2.Eye,
|
|
17481
17791
|
action: "VIEW_GRAPH",
|
|
17482
17792
|
onClick: () => setView("graph"),
|
|
17483
|
-
children: "
|
|
17793
|
+
children: t("branchingLogic.logicGraph")
|
|
17484
17794
|
}
|
|
17485
17795
|
)
|
|
17486
17796
|
] })
|
|
17487
17797
|
] }),
|
|
17488
17798
|
view === "edit" ? /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex flex-col gap-2", children: [
|
|
17489
|
-
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 ? "
|
|
17799
|
+
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(
|
|
17490
17800
|
RuleRow,
|
|
17491
17801
|
{
|
|
17492
17802
|
rule,
|
|
@@ -17507,7 +17817,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17507
17817
|
action: "ADD_RULE",
|
|
17508
17818
|
onClick: handleAddRule,
|
|
17509
17819
|
disabled: noQuestions,
|
|
17510
|
-
children: "
|
|
17820
|
+
children: t("branchingLogic.addRule")
|
|
17511
17821
|
}
|
|
17512
17822
|
) })
|
|
17513
17823
|
] }) : /* @__PURE__ */ jsxRuntime.jsx(LogicGraph, { questions, rules })
|
|
@@ -18067,7 +18377,7 @@ function CalendarGrid({
|
|
|
18067
18377
|
onClick: stepPrev,
|
|
18068
18378
|
"aria-disabled": !canPrev || void 0,
|
|
18069
18379
|
"aria-label": t("aria.previousDays"),
|
|
18070
|
-
children: "
|
|
18380
|
+
children: t("nav.previous")
|
|
18071
18381
|
}
|
|
18072
18382
|
),
|
|
18073
18383
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground", children: formatDateRange(visibleDays[0], visibleDays[visibleDays.length - 1]) }),
|
|
@@ -18080,7 +18390,7 @@ function CalendarGrid({
|
|
|
18080
18390
|
onClick: stepNext,
|
|
18081
18391
|
"aria-disabled": !canNext || void 0,
|
|
18082
18392
|
"aria-label": t("aria.nextDays"),
|
|
18083
|
-
children: "
|
|
18393
|
+
children: t("nav.next")
|
|
18084
18394
|
}
|
|
18085
18395
|
)
|
|
18086
18396
|
] }),
|
|
@@ -19630,7 +19940,7 @@ var init_Pagination = __esm({
|
|
|
19630
19940
|
type: "number",
|
|
19631
19941
|
value: jumpToPage,
|
|
19632
19942
|
onChange: (e) => setJumpToPage(e.target.value),
|
|
19633
|
-
placeholder: "
|
|
19943
|
+
placeholder: t("pagination.jumpPlaceholder"),
|
|
19634
19944
|
className: "w-20",
|
|
19635
19945
|
onKeyDown: (e) => {
|
|
19636
19946
|
if (e.key === "Enter") {
|
|
@@ -19768,13 +20078,10 @@ var init_CardGrid = __esm({
|
|
|
19768
20078
|
return children;
|
|
19769
20079
|
}
|
|
19770
20080
|
if (isLoading) {
|
|
19771
|
-
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: "
|
|
20081
|
+
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") }) });
|
|
19772
20082
|
}
|
|
19773
20083
|
if (error) {
|
|
19774
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "col-span-full text-center py-8 text-error", children: /* @__PURE__ */ jsxRuntime.
|
|
19775
|
-
"Error loading items: ",
|
|
19776
|
-
error.message
|
|
19777
|
-
] }) });
|
|
20084
|
+
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 }) }) });
|
|
19778
20085
|
}
|
|
19779
20086
|
if (normalizedData.length === 0) {
|
|
19780
20087
|
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" }) });
|
|
@@ -23626,7 +23933,7 @@ function DataGrid({
|
|
|
23626
23933
|
onChange: () => toggleSelection(id),
|
|
23627
23934
|
onClick: (e) => e.stopPropagation(),
|
|
23628
23935
|
className: "w-4 h-4 mt-1 flex-shrink-0 accent-primary",
|
|
23629
|
-
"aria-label":
|
|
23936
|
+
"aria-label": t("card.selectItem", { item: titleValue !== void 0 ? String(titleValue) : t("card.itemFallback") })
|
|
23630
23937
|
}
|
|
23631
23938
|
),
|
|
23632
23939
|
/* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "xs", className: "flex-1 min-w-0", children: [
|
|
@@ -23824,7 +24131,7 @@ function formatDate3(value) {
|
|
|
23824
24131
|
if (isNaN(d.getTime())) return String(value);
|
|
23825
24132
|
return d.toLocaleDateString(void 0, { year: "numeric", month: "short", day: "numeric" });
|
|
23826
24133
|
}
|
|
23827
|
-
function formatValue2(value, format) {
|
|
24134
|
+
function formatValue2(value, format, boolLabels) {
|
|
23828
24135
|
if (value === void 0 || value === null) return "";
|
|
23829
24136
|
switch (format) {
|
|
23830
24137
|
case "date":
|
|
@@ -23836,7 +24143,7 @@ function formatValue2(value, format) {
|
|
|
23836
24143
|
case "percent":
|
|
23837
24144
|
return typeof value === "number" ? `${Math.round(value)}%` : String(value);
|
|
23838
24145
|
case "boolean":
|
|
23839
|
-
return value ? "Yes" : "No";
|
|
24146
|
+
return value ? boolLabels?.yes ?? "Yes" : boolLabels?.no ?? "No";
|
|
23840
24147
|
default:
|
|
23841
24148
|
return String(value);
|
|
23842
24149
|
}
|
|
@@ -24132,7 +24439,7 @@ function DataList({
|
|
|
24132
24439
|
field.label ?? fieldLabel3(field.name),
|
|
24133
24440
|
":"
|
|
24134
24441
|
] }),
|
|
24135
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", children: formatValue2(value, field.format) })
|
|
24442
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", children: formatValue2(value, field.format, { yes: t("common.yes"), no: t("common.no") }) })
|
|
24136
24443
|
] }, field.name);
|
|
24137
24444
|
}) }),
|
|
24138
24445
|
progressFields.map((field) => {
|
|
@@ -24262,6 +24569,7 @@ var init_FileTree = __esm({
|
|
|
24262
24569
|
init_Box();
|
|
24263
24570
|
init_Typography();
|
|
24264
24571
|
init_Icon();
|
|
24572
|
+
init_useTranslate();
|
|
24265
24573
|
TreeNodeItem = ({
|
|
24266
24574
|
node,
|
|
24267
24575
|
depth,
|
|
@@ -24347,8 +24655,9 @@ var init_FileTree = __esm({
|
|
|
24347
24655
|
className,
|
|
24348
24656
|
indent = 16
|
|
24349
24657
|
}) => {
|
|
24658
|
+
const { t } = useTranslate();
|
|
24350
24659
|
if (tree.length === 0) {
|
|
24351
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: `p-4 ${className ?? ""}`, children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "muted", children: "
|
|
24660
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: `p-4 ${className ?? ""}`, children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "muted", children: t("fileTree.noFiles") }) });
|
|
24352
24661
|
}
|
|
24353
24662
|
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: `py-1 overflow-y-auto ${className ?? ""}`, role: "tree", children: tree.map((node) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
24354
24663
|
TreeNodeItem,
|
|
@@ -24403,6 +24712,7 @@ var init_FilterGroup = __esm({
|
|
|
24403
24712
|
init_Icon();
|
|
24404
24713
|
init_useEventBus();
|
|
24405
24714
|
init_useQuerySingleton();
|
|
24715
|
+
init_useTranslate();
|
|
24406
24716
|
resolveFilterType = (filter) => filter.filterType ?? filter.type;
|
|
24407
24717
|
lookStyles6 = {
|
|
24408
24718
|
toolbar: "",
|
|
@@ -24423,6 +24733,7 @@ var init_FilterGroup = __esm({
|
|
|
24423
24733
|
isLoading,
|
|
24424
24734
|
look = "toolbar"
|
|
24425
24735
|
}) => {
|
|
24736
|
+
const { t } = useTranslate();
|
|
24426
24737
|
const eventBus = useEventBus();
|
|
24427
24738
|
const queryState = useQuerySingleton(query);
|
|
24428
24739
|
const [selectedValues, setSelectedValues] = React84.useState(
|
|
@@ -24504,7 +24815,7 @@ var init_FilterGroup = __esm({
|
|
|
24504
24815
|
"px-3 py-1.5 text-sm font-medium transition-all duration-[var(--transition-fast)]",
|
|
24505
24816
|
!selectedValues[filter.field] ? "bg-primary text-primary-foreground" : "bg-card text-muted-foreground hover:bg-muted"
|
|
24506
24817
|
),
|
|
24507
|
-
children: "
|
|
24818
|
+
children: t("filterGroup.all")
|
|
24508
24819
|
}
|
|
24509
24820
|
),
|
|
24510
24821
|
filter.options?.map((option) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -24532,7 +24843,7 @@ var init_FilterGroup = __esm({
|
|
|
24532
24843
|
size: "sm",
|
|
24533
24844
|
onClick: handleClearAll,
|
|
24534
24845
|
leftIcon: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "x", className: "h-3.5 w-3.5" }),
|
|
24535
|
-
children: "
|
|
24846
|
+
children: t("filterGroup.clear")
|
|
24536
24847
|
}
|
|
24537
24848
|
)
|
|
24538
24849
|
]
|
|
@@ -24543,7 +24854,7 @@ var init_FilterGroup = __esm({
|
|
|
24543
24854
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col gap-4", lookStyles6[look], className), children: [
|
|
24544
24855
|
showIcon && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-muted-foreground", children: [
|
|
24545
24856
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "filter", className: "h-4 w-4" }),
|
|
24546
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: "
|
|
24857
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: t("filterGroup.filters") })
|
|
24547
24858
|
] }),
|
|
24548
24859
|
filters.map((filter) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
24549
24860
|
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-xs font-bold text-muted-foreground uppercase tracking-wide", children: filter.label }),
|
|
@@ -24566,7 +24877,7 @@ var init_FilterGroup = __esm({
|
|
|
24566
24877
|
`${filter.field}_from`,
|
|
24567
24878
|
e.target.value || null
|
|
24568
24879
|
),
|
|
24569
|
-
placeholder: "
|
|
24880
|
+
placeholder: t("filterGroup.from"),
|
|
24570
24881
|
clearable: true,
|
|
24571
24882
|
onClear: () => handleFilterSelect(`${filter.field}_from`, null)
|
|
24572
24883
|
}
|
|
@@ -24580,7 +24891,7 @@ var init_FilterGroup = __esm({
|
|
|
24580
24891
|
`${filter.field}_to`,
|
|
24581
24892
|
e.target.value || null
|
|
24582
24893
|
),
|
|
24583
|
-
placeholder: "
|
|
24894
|
+
placeholder: t("filterGroup.to"),
|
|
24584
24895
|
clearable: true,
|
|
24585
24896
|
onClear: () => handleFilterSelect(`${filter.field}_to`, null)
|
|
24586
24897
|
}
|
|
@@ -24600,7 +24911,7 @@ var init_FilterGroup = __esm({
|
|
|
24600
24911
|
value: selectedValues[filter.field] || "all",
|
|
24601
24912
|
onChange: (e) => handleFilterSelect(filter.field, e.target.value),
|
|
24602
24913
|
options: [
|
|
24603
|
-
{ value: "all", label: "
|
|
24914
|
+
{ value: "all", label: t("filterGroup.all") },
|
|
24604
24915
|
...filter.options?.map((opt) => ({
|
|
24605
24916
|
value: opt,
|
|
24606
24917
|
label: opt
|
|
@@ -24617,7 +24928,7 @@ var init_FilterGroup = __esm({
|
|
|
24617
24928
|
onClick: handleClearAll,
|
|
24618
24929
|
leftIcon: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "x", className: "h-3.5 w-3.5" }),
|
|
24619
24930
|
className: "self-start",
|
|
24620
|
-
children: "
|
|
24931
|
+
children: t("filterGroup.clearAll")
|
|
24621
24932
|
}
|
|
24622
24933
|
)
|
|
24623
24934
|
] });
|
|
@@ -24683,7 +24994,7 @@ var init_FilterGroup = __esm({
|
|
|
24683
24994
|
value: selectedValues[filter.field] || "all",
|
|
24684
24995
|
onChange: (e) => handleFilterSelect(filter.field, e.target.value),
|
|
24685
24996
|
options: [
|
|
24686
|
-
{ value: "all", label:
|
|
24997
|
+
{ value: "all", label: t("filterGroup.allOf", { label: filter.label }) },
|
|
24687
24998
|
...filter.options?.map((opt) => ({
|
|
24688
24999
|
value: opt,
|
|
24689
25000
|
label: opt
|
|
@@ -24712,7 +25023,7 @@ var init_FilterGroup = __esm({
|
|
|
24712
25023
|
field
|
|
24713
25024
|
);
|
|
24714
25025
|
}),
|
|
24715
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", onClick: handleClearAll, children: "
|
|
25026
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", onClick: handleClearAll, children: t("filterGroup.clearAll") })
|
|
24716
25027
|
] })
|
|
24717
25028
|
]
|
|
24718
25029
|
}
|
|
@@ -24737,7 +25048,7 @@ var init_FilterGroup = __esm({
|
|
|
24737
25048
|
className: "text-muted-foreground",
|
|
24738
25049
|
children: [
|
|
24739
25050
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "filter", className: "h-4 w-4" }),
|
|
24740
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: "
|
|
25051
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: t("filterGroup.filters") })
|
|
24741
25052
|
]
|
|
24742
25053
|
}
|
|
24743
25054
|
),
|
|
@@ -24763,7 +25074,7 @@ var init_FilterGroup = __esm({
|
|
|
24763
25074
|
`${filter.field}_from`,
|
|
24764
25075
|
e.target.value || null
|
|
24765
25076
|
),
|
|
24766
|
-
placeholder: "
|
|
25077
|
+
placeholder: t("filterGroup.from"),
|
|
24767
25078
|
clearable: true,
|
|
24768
25079
|
onClear: () => handleFilterSelect(`${filter.field}_from`, null),
|
|
24769
25080
|
className: "min-w-[130px]"
|
|
@@ -24779,7 +25090,7 @@ var init_FilterGroup = __esm({
|
|
|
24779
25090
|
`${filter.field}_to`,
|
|
24780
25091
|
e.target.value || null
|
|
24781
25092
|
),
|
|
24782
|
-
placeholder: "
|
|
25093
|
+
placeholder: t("filterGroup.to"),
|
|
24783
25094
|
clearable: true,
|
|
24784
25095
|
onClear: () => handleFilterSelect(`${filter.field}_to`, null),
|
|
24785
25096
|
className: "min-w-[130px]"
|
|
@@ -24801,7 +25112,7 @@ var init_FilterGroup = __esm({
|
|
|
24801
25112
|
value: selectedValues[filter.field] || "all",
|
|
24802
25113
|
onChange: (e) => handleFilterSelect(filter.field, e.target.value),
|
|
24803
25114
|
options: [
|
|
24804
|
-
{ value: "all", label: "
|
|
25115
|
+
{ value: "all", label: t("filterGroup.all") },
|
|
24805
25116
|
...filter.options?.map((opt) => ({
|
|
24806
25117
|
value: opt,
|
|
24807
25118
|
label: opt
|
|
@@ -24812,10 +25123,7 @@ var init_FilterGroup = __esm({
|
|
|
24812
25123
|
)
|
|
24813
25124
|
] }, filter.field)),
|
|
24814
25125
|
activeFilterCount > 0 && /* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", align: "center", className: "ml-auto", children: [
|
|
24815
|
-
/* @__PURE__ */ jsxRuntime.
|
|
24816
|
-
activeFilterCount,
|
|
24817
|
-
" active"
|
|
24818
|
-
] }),
|
|
25126
|
+
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "primary", size: "md", children: t("filterGroup.activeCount", { count: activeFilterCount }) }),
|
|
24819
25127
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
24820
25128
|
Button,
|
|
24821
25129
|
{
|
|
@@ -24823,7 +25131,7 @@ var init_FilterGroup = __esm({
|
|
|
24823
25131
|
size: "sm",
|
|
24824
25132
|
onClick: handleClearAll,
|
|
24825
25133
|
leftIcon: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "x", className: "h-3.5 w-3.5" }),
|
|
24826
|
-
children: "
|
|
25134
|
+
children: t("filterGroup.clearAll")
|
|
24827
25135
|
}
|
|
24828
25136
|
)
|
|
24829
25137
|
] })
|
|
@@ -25052,7 +25360,7 @@ var init_RelationSelect = __esm({
|
|
|
25052
25360
|
value,
|
|
25053
25361
|
onChange,
|
|
25054
25362
|
options = [],
|
|
25055
|
-
placeholder
|
|
25363
|
+
placeholder,
|
|
25056
25364
|
required = false,
|
|
25057
25365
|
disabled = false,
|
|
25058
25366
|
isLoading = false,
|
|
@@ -25064,6 +25372,7 @@ var init_RelationSelect = __esm({
|
|
|
25064
25372
|
emptyMessage
|
|
25065
25373
|
}) => {
|
|
25066
25374
|
const { t } = useTranslate();
|
|
25375
|
+
const resolvedPlaceholder = placeholder ?? t("relationSelect.selectPlaceholder");
|
|
25067
25376
|
const resolvedSearchPlaceholder = searchPlaceholder ?? t("common.search");
|
|
25068
25377
|
const resolvedEmptyMessage = emptyMessage ?? t("empty.noOptionsFound");
|
|
25069
25378
|
const [isOpen, setIsOpen] = React84.useState(false);
|
|
@@ -25173,7 +25482,7 @@ var init_RelationSelect = __esm({
|
|
|
25173
25482
|
children: isLoading ? /* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "xs", align: "center", children: [
|
|
25174
25483
|
/* @__PURE__ */ jsxRuntime.jsx(Spinner, { size: "sm" }),
|
|
25175
25484
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { as: "span", children: t("common.loading") })
|
|
25176
|
-
] }) : selectedOption ? selectedOption.label :
|
|
25485
|
+
] }) : selectedOption ? selectedOption.label : resolvedPlaceholder
|
|
25177
25486
|
}
|
|
25178
25487
|
),
|
|
25179
25488
|
/* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "xs", align: "center", children: [
|
|
@@ -25767,19 +26076,20 @@ var init_RepeatableFormSection = __esm({
|
|
|
25767
26076
|
RepeatableFormSection.displayName = "RepeatableFormSection";
|
|
25768
26077
|
}
|
|
25769
26078
|
});
|
|
25770
|
-
var
|
|
26079
|
+
var actionTypeLabelKeys, actionTypeIcons, ViolationAlert;
|
|
25771
26080
|
var init_ViolationAlert = __esm({
|
|
25772
26081
|
"components/core/molecules/ViolationAlert.tsx"() {
|
|
25773
26082
|
init_cn();
|
|
26083
|
+
init_useTranslate();
|
|
25774
26084
|
init_Box();
|
|
25775
26085
|
init_Stack();
|
|
25776
26086
|
init_Typography();
|
|
25777
26087
|
init_Button();
|
|
25778
26088
|
init_Icon();
|
|
25779
|
-
|
|
25780
|
-
measure: "
|
|
25781
|
-
admin: "
|
|
25782
|
-
penalty: "
|
|
26089
|
+
actionTypeLabelKeys = {
|
|
26090
|
+
measure: "violationAlert.actionType.measure",
|
|
26091
|
+
admin: "violationAlert.actionType.admin",
|
|
26092
|
+
penalty: "violationAlert.actionType.penalty"
|
|
25783
26093
|
};
|
|
25784
26094
|
actionTypeIcons = {
|
|
25785
26095
|
measure: "alert-triangle",
|
|
@@ -25796,10 +26106,11 @@ var init_ViolationAlert = __esm({
|
|
|
25796
26106
|
className,
|
|
25797
26107
|
...flatProps
|
|
25798
26108
|
}) => {
|
|
26109
|
+
const { t } = useTranslate();
|
|
25799
26110
|
const resolvedViolation = violation ?? {
|
|
25800
26111
|
law: "",
|
|
25801
26112
|
article: "",
|
|
25802
|
-
message: flatProps.message ?? "
|
|
26113
|
+
message: flatProps.message ?? t("violationAlert.fallbackMessage"),
|
|
25803
26114
|
actionType: "measure"
|
|
25804
26115
|
};
|
|
25805
26116
|
const effectiveSeverity = severity ?? (resolvedViolation.actionType === "measure" ? "warning" : "error");
|
|
@@ -25884,7 +26195,7 @@ var init_ViolationAlert = __esm({
|
|
|
25884
26195
|
{
|
|
25885
26196
|
variant: "caption",
|
|
25886
26197
|
className: cn(textColor, "opacity-75"),
|
|
25887
|
-
children:
|
|
26198
|
+
children: t(actionTypeLabelKeys[resolvedViolation.actionType])
|
|
25888
26199
|
}
|
|
25889
26200
|
)
|
|
25890
26201
|
] })
|
|
@@ -25915,7 +26226,7 @@ var init_ViolationAlert = __esm({
|
|
|
25915
26226
|
{
|
|
25916
26227
|
variant: "caption",
|
|
25917
26228
|
className: cn(textColor, "opacity-75"),
|
|
25918
|
-
children: "
|
|
26229
|
+
children: t("violationAlert.adminLabel")
|
|
25919
26230
|
}
|
|
25920
26231
|
),
|
|
25921
26232
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -25934,7 +26245,7 @@ var init_ViolationAlert = __esm({
|
|
|
25934
26245
|
{
|
|
25935
26246
|
variant: "caption",
|
|
25936
26247
|
className: cn(textColor, "opacity-75"),
|
|
25937
|
-
children: "
|
|
26248
|
+
children: t("violationAlert.penaltyLabel")
|
|
25938
26249
|
}
|
|
25939
26250
|
),
|
|
25940
26251
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -25959,7 +26270,7 @@ var init_ViolationAlert = __esm({
|
|
|
25959
26270
|
className: cn(textColor, "self-start"),
|
|
25960
26271
|
children: [
|
|
25961
26272
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "arrow-right", size: "sm", className: "mr-1" }),
|
|
25962
|
-
"
|
|
26273
|
+
t("violationAlert.goToField")
|
|
25963
26274
|
]
|
|
25964
26275
|
}
|
|
25965
26276
|
)
|
|
@@ -26275,6 +26586,7 @@ var init_LineChart = __esm({
|
|
|
26275
26586
|
"use client";
|
|
26276
26587
|
init_cn();
|
|
26277
26588
|
init_atoms2();
|
|
26589
|
+
init_useTranslate();
|
|
26278
26590
|
LineChart2 = ({
|
|
26279
26591
|
data,
|
|
26280
26592
|
width = 400,
|
|
@@ -26286,6 +26598,7 @@ var init_LineChart = __esm({
|
|
|
26286
26598
|
areaColor = "var(--color-primary)",
|
|
26287
26599
|
className
|
|
26288
26600
|
}) => {
|
|
26601
|
+
const { t } = useTranslate();
|
|
26289
26602
|
const gradientId = React84.useId();
|
|
26290
26603
|
const safeData = data ?? [];
|
|
26291
26604
|
const sortedData = React84.useMemo(() => {
|
|
@@ -26322,7 +26635,7 @@ var init_LineChart = __esm({
|
|
|
26322
26635
|
return `${linePath} L ${last.x} ${bottom} L ${first.x} ${bottom} Z`;
|
|
26323
26636
|
}, [linePath, points, height, showArea]);
|
|
26324
26637
|
if (safeData.length === 0) {
|
|
26325
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("flex items-center justify-center text-muted-foreground", className), style: { width, height }, children: "
|
|
26638
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("flex items-center justify-center text-muted-foreground", className), style: { width, height }, children: t("empty.noData") });
|
|
26326
26639
|
}
|
|
26327
26640
|
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn(className), children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
26328
26641
|
"svg",
|
|
@@ -28229,6 +28542,7 @@ var init_GraphView = __esm({
|
|
|
28229
28542
|
"use client";
|
|
28230
28543
|
init_cn();
|
|
28231
28544
|
init_atoms2();
|
|
28545
|
+
init_useTranslate();
|
|
28232
28546
|
GROUP_COLORS = [
|
|
28233
28547
|
"#3b82f6",
|
|
28234
28548
|
// blue-500
|
|
@@ -28261,6 +28575,7 @@ var init_GraphView = __esm({
|
|
|
28261
28575
|
showLabels = true,
|
|
28262
28576
|
zoomToFit = true
|
|
28263
28577
|
}) => {
|
|
28578
|
+
const { t } = useTranslate();
|
|
28264
28579
|
const containerRef = React84.useRef(null);
|
|
28265
28580
|
const animRef = React84.useRef(0);
|
|
28266
28581
|
const [simNodes, setSimNodes] = React84.useState([]);
|
|
@@ -28438,7 +28753,7 @@ var init_GraphView = __esm({
|
|
|
28438
28753
|
[onNodeClick]
|
|
28439
28754
|
);
|
|
28440
28755
|
if (nodes.length === 0) {
|
|
28441
|
-
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: "
|
|
28756
|
+
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") }) });
|
|
28442
28757
|
}
|
|
28443
28758
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
28444
28759
|
Box,
|
|
@@ -28894,11 +29209,12 @@ var init_UploadDropZone = __esm({
|
|
|
28894
29209
|
init_Icon();
|
|
28895
29210
|
init_Typography();
|
|
28896
29211
|
init_useEventBus();
|
|
29212
|
+
init_useTranslate();
|
|
28897
29213
|
UploadDropZone = ({
|
|
28898
29214
|
accept,
|
|
28899
29215
|
maxSize,
|
|
28900
29216
|
maxFiles = 1,
|
|
28901
|
-
label
|
|
29217
|
+
label,
|
|
28902
29218
|
description,
|
|
28903
29219
|
disabled = false,
|
|
28904
29220
|
action,
|
|
@@ -28906,22 +29222,24 @@ var init_UploadDropZone = __esm({
|
|
|
28906
29222
|
onFiles,
|
|
28907
29223
|
className
|
|
28908
29224
|
}) => {
|
|
29225
|
+
const { t } = useTranslate();
|
|
29226
|
+
const resolvedLabel = label ?? t("upload.dropOrBrowse");
|
|
28909
29227
|
const [isDragOver, setIsDragOver] = React84.useState(false);
|
|
28910
29228
|
const [error, setError] = React84.useState(null);
|
|
28911
29229
|
const inputRef = React84.useRef(null);
|
|
28912
29230
|
const eventBus = useSafeEventBus7();
|
|
28913
29231
|
const defaultDescription = [
|
|
28914
|
-
accept ?
|
|
28915
|
-
maxSize ?
|
|
28916
|
-
maxFiles > 1 ?
|
|
29232
|
+
accept ? t("upload.accepted", { accept }) : null,
|
|
29233
|
+
maxSize ? t("upload.maxSize", { size: formatFileSize(maxSize) }) : null,
|
|
29234
|
+
maxFiles > 1 ? t("upload.maxFiles", { count: maxFiles }) : null
|
|
28917
29235
|
].filter(Boolean).join(". ");
|
|
28918
29236
|
const validateFiles = React84.useCallback(
|
|
28919
29237
|
(files) => {
|
|
28920
29238
|
if (files.length > maxFiles) {
|
|
28921
|
-
return { valid: [], error:
|
|
29239
|
+
return { valid: [], error: t("upload.error.maxFiles", { count: maxFiles }) };
|
|
28922
29240
|
}
|
|
28923
29241
|
if (accept) {
|
|
28924
|
-
const acceptedTypes = accept.split(",").map((
|
|
29242
|
+
const acceptedTypes = accept.split(",").map((s) => s.trim());
|
|
28925
29243
|
const invalid = files.filter((file) => {
|
|
28926
29244
|
return !acceptedTypes.some((type) => {
|
|
28927
29245
|
if (type.endsWith("/*")) {
|
|
@@ -28931,7 +29249,7 @@ var init_UploadDropZone = __esm({
|
|
|
28931
29249
|
});
|
|
28932
29250
|
});
|
|
28933
29251
|
if (invalid.length > 0) {
|
|
28934
|
-
return { valid: [], error:
|
|
29252
|
+
return { valid: [], error: t("upload.error.invalidType", { name: invalid[0].name }) };
|
|
28935
29253
|
}
|
|
28936
29254
|
}
|
|
28937
29255
|
if (maxSize) {
|
|
@@ -28939,13 +29257,13 @@ var init_UploadDropZone = __esm({
|
|
|
28939
29257
|
if (tooLarge.length > 0) {
|
|
28940
29258
|
return {
|
|
28941
29259
|
valid: [],
|
|
28942
|
-
error:
|
|
29260
|
+
error: t("upload.error.tooLarge", { name: tooLarge[0].name, size: formatFileSize(maxSize) })
|
|
28943
29261
|
};
|
|
28944
29262
|
}
|
|
28945
29263
|
}
|
|
28946
29264
|
return { valid: files, error: null };
|
|
28947
29265
|
},
|
|
28948
|
-
[accept, maxSize, maxFiles]
|
|
29266
|
+
[accept, maxSize, maxFiles, t]
|
|
28949
29267
|
);
|
|
28950
29268
|
const handleFiles = React84.useCallback(
|
|
28951
29269
|
(files) => {
|
|
@@ -29016,7 +29334,7 @@ var init_UploadDropZone = __esm({
|
|
|
29016
29334
|
handleClick();
|
|
29017
29335
|
}
|
|
29018
29336
|
},
|
|
29019
|
-
"aria-label":
|
|
29337
|
+
"aria-label": resolvedLabel,
|
|
29020
29338
|
children: [
|
|
29021
29339
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
29022
29340
|
"input",
|
|
@@ -29032,7 +29350,7 @@ var init_UploadDropZone = __esm({
|
|
|
29032
29350
|
}
|
|
29033
29351
|
),
|
|
29034
29352
|
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" }),
|
|
29035
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body1", className: "text-center font-medium mb-1", children: isDragOver ? "
|
|
29353
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body1", className: "text-center font-medium mb-1", children: isDragOver ? t("upload.dropFilesHere") : resolvedLabel }),
|
|
29036
29354
|
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 })
|
|
29037
29355
|
]
|
|
29038
29356
|
}
|
|
@@ -29454,7 +29772,7 @@ function TableView({
|
|
|
29454
29772
|
{
|
|
29455
29773
|
checked: selected.has(id),
|
|
29456
29774
|
onChange: () => toggleRow(id),
|
|
29457
|
-
"aria-label":
|
|
29775
|
+
"aria-label": t("table.selectRow", { id })
|
|
29458
29776
|
}
|
|
29459
29777
|
) }),
|
|
29460
29778
|
hasRenderProp ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex-1 min-w-0", children: children(row, index) }) : colDefs.map((col) => {
|
|
@@ -32163,7 +32481,7 @@ var init_QrScanner = __esm({
|
|
|
32163
32481
|
className: "inset-0 flex-col items-center justify-center gap-2 bg-black bg-opacity-80 text-center",
|
|
32164
32482
|
children: [
|
|
32165
32483
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "camera", className: "h-8 w-8 text-white", "aria-hidden": "true" }),
|
|
32166
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-white", children: "
|
|
32484
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-white", children: t("qrScanner.cameraUnavailable") }),
|
|
32167
32485
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", className: "text-white opacity-70", children: cameraError.message })
|
|
32168
32486
|
]
|
|
32169
32487
|
}
|
|
@@ -32174,7 +32492,7 @@ var init_QrScanner = __esm({
|
|
|
32174
32492
|
position: "absolute",
|
|
32175
32493
|
display: "flex",
|
|
32176
32494
|
className: "inset-0 items-center justify-center bg-black bg-opacity-60",
|
|
32177
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-white", children: "
|
|
32495
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-white", children: t("qrScanner.paused") })
|
|
32178
32496
|
}
|
|
32179
32497
|
),
|
|
32180
32498
|
showCameraControls && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -32193,7 +32511,7 @@ var init_QrScanner = __esm({
|
|
|
32193
32511
|
"rounded-full bg-black bg-opacity-60 p-2 text-white",
|
|
32194
32512
|
"hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
|
|
32195
32513
|
),
|
|
32196
|
-
"aria-label": isPaused ? "
|
|
32514
|
+
"aria-label": isPaused ? t("qrScanner.resumeScanning") : t("qrScanner.pauseScanning"),
|
|
32197
32515
|
children: isPaused ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "play", className: "h-4 w-4" }) : /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "pause", className: "h-4 w-4" })
|
|
32198
32516
|
}
|
|
32199
32517
|
),
|
|
@@ -32206,7 +32524,7 @@ var init_QrScanner = __esm({
|
|
|
32206
32524
|
"rounded-full bg-black bg-opacity-60 p-2 text-white",
|
|
32207
32525
|
"hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
|
|
32208
32526
|
),
|
|
32209
|
-
"aria-label":
|
|
32527
|
+
"aria-label": currentFacing === "environment" ? t("qrScanner.switchToFrontCamera") : t("qrScanner.switchToRearCamera"),
|
|
32210
32528
|
children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "refresh-cw", className: "h-4 w-4" })
|
|
32211
32529
|
}
|
|
32212
32530
|
),
|
|
@@ -32220,7 +32538,7 @@ var init_QrScanner = __esm({
|
|
|
32220
32538
|
"hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
|
|
32221
32539
|
),
|
|
32222
32540
|
"aria-label": t("aria.mockScanDev"),
|
|
32223
|
-
children: "
|
|
32541
|
+
children: t("qrScanner.mockScan")
|
|
32224
32542
|
}
|
|
32225
32543
|
)
|
|
32226
32544
|
]
|
|
@@ -32238,6 +32556,7 @@ var init_OptionConstraintGroup = __esm({
|
|
|
32238
32556
|
"components/core/molecules/OptionConstraintGroup.tsx"() {
|
|
32239
32557
|
init_cn();
|
|
32240
32558
|
init_useEventBus();
|
|
32559
|
+
init_useTranslate();
|
|
32241
32560
|
init_Typography();
|
|
32242
32561
|
init_Box();
|
|
32243
32562
|
init_Label();
|
|
@@ -32247,36 +32566,36 @@ var init_OptionConstraintGroup = __esm({
|
|
|
32247
32566
|
const sign = delta >= 0 ? "+" : "-";
|
|
32248
32567
|
return `${sign}$${Math.abs(delta).toFixed(2)}`;
|
|
32249
32568
|
};
|
|
32250
|
-
constraintHint = (constraint) => {
|
|
32569
|
+
constraintHint = (constraint, t) => {
|
|
32251
32570
|
if (constraint.type === "single") {
|
|
32252
|
-
return constraint.required ? "
|
|
32571
|
+
return constraint.required ? t("optionConstraint.requiredOne") : t("optionConstraint.optionalOne");
|
|
32253
32572
|
}
|
|
32254
32573
|
const { min, max } = constraint;
|
|
32255
32574
|
if (min && max) {
|
|
32256
|
-
return min === max ?
|
|
32575
|
+
return min === max ? t("optionConstraint.pickExactly", { count: min }) : t("optionConstraint.pickRange", { min, max });
|
|
32257
32576
|
}
|
|
32258
|
-
if (min) return
|
|
32259
|
-
if (max) return
|
|
32260
|
-
return "
|
|
32577
|
+
if (min) return t("optionConstraint.pickAtLeast", { count: min });
|
|
32578
|
+
if (max) return t("optionConstraint.pickUpTo", { count: max });
|
|
32579
|
+
return t("optionConstraint.optional");
|
|
32261
32580
|
};
|
|
32262
|
-
validateSelection = (selected, constraint) => {
|
|
32581
|
+
validateSelection = (selected, constraint, t) => {
|
|
32263
32582
|
if (constraint.type === "single") {
|
|
32264
32583
|
if (constraint.required && selected.length === 0) {
|
|
32265
|
-
return "
|
|
32584
|
+
return t("optionConstraint.error.pickOne");
|
|
32266
32585
|
}
|
|
32267
32586
|
if (selected.length > 1) {
|
|
32268
|
-
return "
|
|
32587
|
+
return t("optionConstraint.error.pickOnlyOne");
|
|
32269
32588
|
}
|
|
32270
32589
|
return void 0;
|
|
32271
32590
|
}
|
|
32272
32591
|
const { min, max } = constraint;
|
|
32273
32592
|
if (min !== void 0 && selected.length < min) {
|
|
32274
32593
|
const remaining = min - selected.length;
|
|
32275
|
-
return
|
|
32594
|
+
return t("optionConstraint.error.pickMore", { count: remaining });
|
|
32276
32595
|
}
|
|
32277
32596
|
if (max !== void 0 && selected.length > max) {
|
|
32278
32597
|
const excess = selected.length - max;
|
|
32279
|
-
return
|
|
32598
|
+
return t("optionConstraint.error.removeOptions", { count: excess });
|
|
32280
32599
|
}
|
|
32281
32600
|
return void 0;
|
|
32282
32601
|
};
|
|
@@ -32293,8 +32612,9 @@ var init_OptionConstraintGroup = __esm({
|
|
|
32293
32612
|
className
|
|
32294
32613
|
}) => {
|
|
32295
32614
|
const eventBus = useEventBus();
|
|
32296
|
-
const
|
|
32297
|
-
const
|
|
32615
|
+
const { t } = useTranslate();
|
|
32616
|
+
const hint = constraintHint(constraint, t);
|
|
32617
|
+
const error = validateSelection(selected, constraint, t);
|
|
32298
32618
|
const inputName = `option-${groupId}`;
|
|
32299
32619
|
const labelTextSize = size === "sm" ? "text-sm" : "text-base";
|
|
32300
32620
|
const optionGap = size === "sm" ? "gap-2" : "gap-2.5";
|
|
@@ -32394,7 +32714,7 @@ var init_OptionConstraintGroup = __esm({
|
|
|
32394
32714
|
variant: "caption",
|
|
32395
32715
|
color: "warning",
|
|
32396
32716
|
className: "rounded border border-warning/40 px-1.5 py-0.5",
|
|
32397
|
-
children: "
|
|
32717
|
+
children: t("optionConstraint.outOfStock")
|
|
32398
32718
|
}
|
|
32399
32719
|
)
|
|
32400
32720
|
]
|
|
@@ -32716,6 +33036,7 @@ function changeBlockType(block, type) {
|
|
|
32716
33036
|
return { id: block.id, type, content: seed };
|
|
32717
33037
|
}
|
|
32718
33038
|
function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
33039
|
+
const { t } = useTranslate();
|
|
32719
33040
|
const [open, setOpen] = React84.useState(false);
|
|
32720
33041
|
const ref = React84.useRef(null);
|
|
32721
33042
|
React84.useEffect(() => {
|
|
@@ -32735,7 +33056,7 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
32735
33056
|
{
|
|
32736
33057
|
type: "button",
|
|
32737
33058
|
variant: "ghost",
|
|
32738
|
-
"aria-label": "
|
|
33059
|
+
"aria-label": t("richBlockEditor.blockActions"),
|
|
32739
33060
|
className: cn(
|
|
32740
33061
|
"inline-flex items-center justify-center",
|
|
32741
33062
|
"h-6 w-6 rounded-sm p-0 gap-0",
|
|
@@ -32757,7 +33078,7 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
32757
33078
|
"py-1 text-sm"
|
|
32758
33079
|
),
|
|
32759
33080
|
children: [
|
|
32760
|
-
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground", children:
|
|
33081
|
+
/* @__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]) }),
|
|
32761
33082
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
32762
33083
|
Button,
|
|
32763
33084
|
{
|
|
@@ -32771,7 +33092,8 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
32771
33092
|
},
|
|
32772
33093
|
children: [
|
|
32773
33094
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "plus", className: "w-3.5 h-3.5" }),
|
|
32774
|
-
"
|
|
33095
|
+
" ",
|
|
33096
|
+
t("richBlockEditor.duplicate")
|
|
32775
33097
|
]
|
|
32776
33098
|
}
|
|
32777
33099
|
),
|
|
@@ -32788,14 +33110,15 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
32788
33110
|
},
|
|
32789
33111
|
children: [
|
|
32790
33112
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "trash", className: "w-3.5 h-3.5" }),
|
|
32791
|
-
"
|
|
33113
|
+
" ",
|
|
33114
|
+
t("common.delete")
|
|
32792
33115
|
]
|
|
32793
33116
|
}
|
|
32794
33117
|
),
|
|
32795
33118
|
CHANGEABLE_TYPES.includes(block.type) && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
32796
33119
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "my-1 border-t border-border" }),
|
|
32797
|
-
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground", children: "
|
|
32798
|
-
CHANGEABLE_TYPES.filter((
|
|
33120
|
+
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground", children: t("richBlockEditor.turnInto") }),
|
|
33121
|
+
CHANGEABLE_TYPES.filter((bt) => bt !== block.type).map((bt) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
32799
33122
|
Button,
|
|
32800
33123
|
{
|
|
32801
33124
|
type: "button",
|
|
@@ -32803,12 +33126,12 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
32803
33126
|
role: "menuitem",
|
|
32804
33127
|
className: "flex w-full items-center gap-2 px-2 py-1.5 text-left justify-start rounded-none",
|
|
32805
33128
|
onClick: () => {
|
|
32806
|
-
onChangeType(
|
|
33129
|
+
onChangeType(bt);
|
|
32807
33130
|
setOpen(false);
|
|
32808
33131
|
},
|
|
32809
|
-
children:
|
|
33132
|
+
children: t(BLOCK_TYPE_LABEL_KEY[bt])
|
|
32810
33133
|
},
|
|
32811
|
-
|
|
33134
|
+
bt
|
|
32812
33135
|
))
|
|
32813
33136
|
] })
|
|
32814
33137
|
]
|
|
@@ -32870,6 +33193,7 @@ function BlockRow({
|
|
|
32870
33193
|
onInsertAfter,
|
|
32871
33194
|
onChangeType
|
|
32872
33195
|
}) {
|
|
33196
|
+
const { t } = useTranslate();
|
|
32873
33197
|
const setContent = React84.useCallback(
|
|
32874
33198
|
(next) => onUpdate((b) => ({ ...b, content: next })),
|
|
32875
33199
|
[onUpdate]
|
|
@@ -32919,8 +33243,8 @@ function BlockRow({
|
|
|
32919
33243
|
tag: "h1",
|
|
32920
33244
|
value: block.content ?? "",
|
|
32921
33245
|
readOnly,
|
|
32922
|
-
placeholder: placeholder ?? "
|
|
32923
|
-
ariaLabel: "
|
|
33246
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.heading1"),
|
|
33247
|
+
ariaLabel: t("richBlockEditor.aria.heading1Block"),
|
|
32924
33248
|
className: "text-3xl font-bold leading-tight",
|
|
32925
33249
|
onValueChange: setContent
|
|
32926
33250
|
}
|
|
@@ -32932,8 +33256,8 @@ function BlockRow({
|
|
|
32932
33256
|
tag: "h2",
|
|
32933
33257
|
value: block.content ?? "",
|
|
32934
33258
|
readOnly,
|
|
32935
|
-
placeholder: placeholder ?? "
|
|
32936
|
-
ariaLabel: "
|
|
33259
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.heading2"),
|
|
33260
|
+
ariaLabel: t("richBlockEditor.aria.heading2Block"),
|
|
32937
33261
|
className: "text-2xl font-semibold leading-tight",
|
|
32938
33262
|
onValueChange: setContent
|
|
32939
33263
|
}
|
|
@@ -32945,8 +33269,8 @@ function BlockRow({
|
|
|
32945
33269
|
tag: "h3",
|
|
32946
33270
|
value: block.content ?? "",
|
|
32947
33271
|
readOnly,
|
|
32948
|
-
placeholder: placeholder ?? "
|
|
32949
|
-
ariaLabel: "
|
|
33272
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.heading3"),
|
|
33273
|
+
ariaLabel: t("richBlockEditor.aria.heading3Block"),
|
|
32950
33274
|
className: "text-xl font-semibold leading-tight",
|
|
32951
33275
|
onValueChange: setContent
|
|
32952
33276
|
}
|
|
@@ -32958,8 +33282,8 @@ function BlockRow({
|
|
|
32958
33282
|
tag: "blockquote",
|
|
32959
33283
|
value: block.content ?? "",
|
|
32960
33284
|
readOnly,
|
|
32961
|
-
placeholder: placeholder ?? "
|
|
32962
|
-
ariaLabel: "
|
|
33285
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.quote"),
|
|
33286
|
+
ariaLabel: t("richBlockEditor.aria.quoteBlock"),
|
|
32963
33287
|
className: "border-l-4 border-primary/60 pl-4 italic text-muted-foreground",
|
|
32964
33288
|
onValueChange: setContent
|
|
32965
33289
|
}
|
|
@@ -32967,13 +33291,13 @@ function BlockRow({
|
|
|
32967
33291
|
case "code":
|
|
32968
33292
|
return /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "rounded-md border border-border bg-muted/40", children: [
|
|
32969
33293
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex items-center justify-between border-b border-border px-3 py-1 text-xs text-muted-foreground", children: [
|
|
32970
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { as: "span", variant: "caption", className: "uppercase tracking-wide", children: "
|
|
33294
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { as: "span", variant: "caption", className: "uppercase tracking-wide", children: t("richBlockEditor.blockType.code") }),
|
|
32971
33295
|
!readOnly && /* @__PURE__ */ jsxRuntime.jsx(
|
|
32972
33296
|
Input,
|
|
32973
33297
|
{
|
|
32974
33298
|
inputType: "text",
|
|
32975
33299
|
value: String(block.metadata?.language ?? "plaintext"),
|
|
32976
|
-
"aria-label": "
|
|
33300
|
+
"aria-label": t("richBlockEditor.aria.codeLanguage"),
|
|
32977
33301
|
className: cn(
|
|
32978
33302
|
"h-6 w-32 rounded-sm border border-border bg-background",
|
|
32979
33303
|
"px-2 text-xs outline-none focus:ring-1 focus:ring-ring"
|
|
@@ -32989,8 +33313,8 @@ function BlockRow({
|
|
|
32989
33313
|
tag: "pre",
|
|
32990
33314
|
value: block.content ?? "",
|
|
32991
33315
|
readOnly,
|
|
32992
|
-
placeholder: placeholder ?? "
|
|
32993
|
-
ariaLabel: "
|
|
33316
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.code"),
|
|
33317
|
+
ariaLabel: t("richBlockEditor.aria.codeBlock"),
|
|
32994
33318
|
className: "block whitespace-pre-wrap p-3 font-mono text-sm leading-relaxed",
|
|
32995
33319
|
onValueChange: setContent
|
|
32996
33320
|
}
|
|
@@ -33003,7 +33327,7 @@ function BlockRow({
|
|
|
33003
33327
|
const caption = String(block.metadata?.caption ?? "");
|
|
33004
33328
|
const imgProps = {
|
|
33005
33329
|
src: url,
|
|
33006
|
-
alt: caption || "
|
|
33330
|
+
alt: caption || t("richBlockEditor.embeddedImage"),
|
|
33007
33331
|
className: "max-h-96 w-full rounded-md border border-border object-contain"
|
|
33008
33332
|
};
|
|
33009
33333
|
return /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "space-y-2", children: [
|
|
@@ -33017,7 +33341,8 @@ function BlockRow({
|
|
|
33017
33341
|
),
|
|
33018
33342
|
children: [
|
|
33019
33343
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "image", className: "mr-2 w-4 h-4" }),
|
|
33020
|
-
"
|
|
33344
|
+
" ",
|
|
33345
|
+
t("richBlockEditor.noImageUrl")
|
|
33021
33346
|
]
|
|
33022
33347
|
}
|
|
33023
33348
|
),
|
|
@@ -33028,7 +33353,7 @@ function BlockRow({
|
|
|
33028
33353
|
inputType: "url",
|
|
33029
33354
|
value: url,
|
|
33030
33355
|
placeholder: "https://example.com/image.png",
|
|
33031
|
-
"aria-label": "
|
|
33356
|
+
"aria-label": t("richBlockEditor.aria.imageUrl"),
|
|
33032
33357
|
className: cn(
|
|
33033
33358
|
"h-8 flex-1 rounded-sm border border-border bg-background",
|
|
33034
33359
|
"px-2 text-sm outline-none focus:ring-1 focus:ring-ring"
|
|
@@ -33041,8 +33366,8 @@ function BlockRow({
|
|
|
33041
33366
|
{
|
|
33042
33367
|
inputType: "text",
|
|
33043
33368
|
value: caption,
|
|
33044
|
-
placeholder: "
|
|
33045
|
-
"aria-label": "
|
|
33369
|
+
placeholder: t("richBlockEditor.placeholder.caption"),
|
|
33370
|
+
"aria-label": t("richBlockEditor.aria.imageCaption"),
|
|
33046
33371
|
className: cn(
|
|
33047
33372
|
"h-8 flex-1 rounded-sm border border-border bg-background",
|
|
33048
33373
|
"px-2 text-sm outline-none focus:ring-1 focus:ring-ring"
|
|
@@ -33073,8 +33398,8 @@ function BlockRow({
|
|
|
33073
33398
|
tag: "span",
|
|
33074
33399
|
value: child.content ?? "",
|
|
33075
33400
|
readOnly,
|
|
33076
|
-
placeholder: "
|
|
33077
|
-
ariaLabel: "
|
|
33401
|
+
placeholder: t("richBlockEditor.placeholder.listItem"),
|
|
33402
|
+
ariaLabel: t("richBlockEditor.aria.listItem"),
|
|
33078
33403
|
className: "inline-block min-w-[1ch] flex-1",
|
|
33079
33404
|
onValueChange: (next) => setChildContent(child.id, next)
|
|
33080
33405
|
}
|
|
@@ -33084,7 +33409,7 @@ function BlockRow({
|
|
|
33084
33409
|
{
|
|
33085
33410
|
type: "button",
|
|
33086
33411
|
variant: "ghost",
|
|
33087
|
-
"aria-label": "
|
|
33412
|
+
"aria-label": t("richBlockEditor.aria.removeListItem"),
|
|
33088
33413
|
className: cn(
|
|
33089
33414
|
"h-5 w-5 shrink-0 rounded-sm text-muted-foreground p-0 gap-0",
|
|
33090
33415
|
"opacity-0 group-hover/item:opacity-100 hover:bg-muted hover:text-foreground"
|
|
@@ -33106,7 +33431,8 @@ function BlockRow({
|
|
|
33106
33431
|
onClick: addListItem,
|
|
33107
33432
|
children: [
|
|
33108
33433
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "plus", className: "w-3 h-3" }),
|
|
33109
|
-
"
|
|
33434
|
+
" ",
|
|
33435
|
+
t("richBlockEditor.addItem")
|
|
33110
33436
|
]
|
|
33111
33437
|
}
|
|
33112
33438
|
) })
|
|
@@ -33122,8 +33448,8 @@ function BlockRow({
|
|
|
33122
33448
|
tag: "p",
|
|
33123
33449
|
value: block.content ?? "",
|
|
33124
33450
|
readOnly,
|
|
33125
|
-
placeholder: placeholder ?? "
|
|
33126
|
-
ariaLabel: "
|
|
33451
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.paragraph"),
|
|
33452
|
+
ariaLabel: t("richBlockEditor.aria.paragraphBlock"),
|
|
33127
33453
|
className: "leading-7",
|
|
33128
33454
|
onValueChange: setContent
|
|
33129
33455
|
}
|
|
@@ -33146,7 +33472,7 @@ function BlockRow({
|
|
|
33146
33472
|
{
|
|
33147
33473
|
type: "button",
|
|
33148
33474
|
variant: "ghost",
|
|
33149
|
-
"aria-label": "
|
|
33475
|
+
"aria-label": t("richBlockEditor.insertParagraphBelow"),
|
|
33150
33476
|
className: cn(
|
|
33151
33477
|
"inline-flex h-6 w-6 items-center justify-center rounded-sm p-0 gap-0",
|
|
33152
33478
|
"text-muted-foreground hover:bg-muted hover:text-foreground",
|
|
@@ -33173,7 +33499,7 @@ function BlockRow({
|
|
|
33173
33499
|
}
|
|
33174
33500
|
);
|
|
33175
33501
|
}
|
|
33176
|
-
var TOOLBAR_ENTRIES,
|
|
33502
|
+
var TOOLBAR_ENTRIES, BLOCK_TYPE_LABEL_KEY, CHANGEABLE_TYPES, _idSeq, BLOCK_TYPES, RichBlockEditor;
|
|
33177
33503
|
var init_RichBlockEditor = __esm({
|
|
33178
33504
|
"components/core/molecules/RichBlockEditor.tsx"() {
|
|
33179
33505
|
"use client";
|
|
@@ -33186,29 +33512,30 @@ var init_RichBlockEditor = __esm({
|
|
|
33186
33512
|
init_Input();
|
|
33187
33513
|
init_Icon();
|
|
33188
33514
|
init_useEventBus();
|
|
33515
|
+
init_useTranslate();
|
|
33189
33516
|
TOOLBAR_ENTRIES = [
|
|
33190
|
-
{ type: "paragraph",
|
|
33191
|
-
{ type: "heading-1",
|
|
33192
|
-
{ type: "heading-2",
|
|
33193
|
-
{ type: "heading-3",
|
|
33194
|
-
{ type: "bullet-list",
|
|
33195
|
-
{ type: "numbered-list",
|
|
33196
|
-
{ type: "quote",
|
|
33197
|
-
{ type: "code",
|
|
33198
|
-
{ type: "divider",
|
|
33199
|
-
{ type: "image",
|
|
33517
|
+
{ type: "paragraph", labelKey: "richBlockEditor.toolbar.text", icon: LucideIcons2.Type },
|
|
33518
|
+
{ type: "heading-1", labelKey: "richBlockEditor.toolbar.h1", icon: LucideIcons2.Heading1 },
|
|
33519
|
+
{ type: "heading-2", labelKey: "richBlockEditor.toolbar.h2", icon: LucideIcons2.Heading2 },
|
|
33520
|
+
{ type: "heading-3", labelKey: "richBlockEditor.toolbar.h3", icon: LucideIcons2.Heading3 },
|
|
33521
|
+
{ type: "bullet-list", labelKey: "richBlockEditor.toolbar.bulletList", icon: LucideIcons2.List },
|
|
33522
|
+
{ type: "numbered-list", labelKey: "richBlockEditor.toolbar.numbered", icon: LucideIcons2.ListOrdered },
|
|
33523
|
+
{ type: "quote", labelKey: "richBlockEditor.toolbar.quote", icon: LucideIcons2.Quote },
|
|
33524
|
+
{ type: "code", labelKey: "richBlockEditor.toolbar.code", icon: LucideIcons2.Code },
|
|
33525
|
+
{ type: "divider", labelKey: "richBlockEditor.toolbar.divider", icon: LucideIcons2.Minus },
|
|
33526
|
+
{ type: "image", labelKey: "richBlockEditor.toolbar.image", icon: LucideIcons2.Image }
|
|
33200
33527
|
];
|
|
33201
|
-
|
|
33202
|
-
paragraph: "
|
|
33203
|
-
"heading-1": "
|
|
33204
|
-
"heading-2": "
|
|
33205
|
-
"heading-3": "
|
|
33206
|
-
"bullet-list": "
|
|
33207
|
-
"numbered-list": "
|
|
33208
|
-
quote: "
|
|
33209
|
-
code: "
|
|
33210
|
-
divider: "
|
|
33211
|
-
image: "
|
|
33528
|
+
BLOCK_TYPE_LABEL_KEY = {
|
|
33529
|
+
paragraph: "richBlockEditor.blockType.paragraph",
|
|
33530
|
+
"heading-1": "richBlockEditor.blockType.heading1",
|
|
33531
|
+
"heading-2": "richBlockEditor.blockType.heading2",
|
|
33532
|
+
"heading-3": "richBlockEditor.blockType.heading3",
|
|
33533
|
+
"bullet-list": "richBlockEditor.blockType.bulletList",
|
|
33534
|
+
"numbered-list": "richBlockEditor.blockType.numberedList",
|
|
33535
|
+
quote: "richBlockEditor.blockType.quote",
|
|
33536
|
+
code: "richBlockEditor.blockType.code",
|
|
33537
|
+
divider: "richBlockEditor.blockType.divider",
|
|
33538
|
+
image: "richBlockEditor.blockType.image"
|
|
33212
33539
|
};
|
|
33213
33540
|
CHANGEABLE_TYPES = [
|
|
33214
33541
|
"paragraph",
|
|
@@ -33242,6 +33569,7 @@ var init_RichBlockEditor = __esm({
|
|
|
33242
33569
|
showToolbar = true,
|
|
33243
33570
|
className
|
|
33244
33571
|
}) => {
|
|
33572
|
+
const { t } = useTranslate();
|
|
33245
33573
|
const [blocks, setBlocks] = React84.useState(
|
|
33246
33574
|
() => normalizeBlocks(initialBlocks)
|
|
33247
33575
|
);
|
|
@@ -33313,25 +33641,26 @@ var init_RichBlockEditor = __esm({
|
|
|
33313
33641
|
Box,
|
|
33314
33642
|
{
|
|
33315
33643
|
role: "toolbar",
|
|
33316
|
-
"aria-label": "
|
|
33644
|
+
"aria-label": t("richBlockEditor.editorToolbar"),
|
|
33317
33645
|
className: cn(
|
|
33318
33646
|
"flex flex-wrap items-center gap-1",
|
|
33319
33647
|
"border-b border-border bg-muted/30 px-2 py-2"
|
|
33320
33648
|
),
|
|
33321
33649
|
children: TOOLBAR_ENTRIES.map((entry) => {
|
|
33322
33650
|
const Icon3 = entry.icon;
|
|
33651
|
+
const entryLabel = t(entry.labelKey);
|
|
33323
33652
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
33324
33653
|
Button,
|
|
33325
33654
|
{
|
|
33326
33655
|
type: "button",
|
|
33327
33656
|
variant: "ghost",
|
|
33328
33657
|
size: "sm",
|
|
33329
|
-
"aria-label":
|
|
33330
|
-
title:
|
|
33658
|
+
"aria-label": t("richBlockEditor.insertEntry", { label: entryLabel }),
|
|
33659
|
+
title: entryLabel,
|
|
33331
33660
|
onClick: () => handleAppend(entry.type),
|
|
33332
33661
|
children: [
|
|
33333
33662
|
/* @__PURE__ */ jsxRuntime.jsx(Icon3, { size: 14 }),
|
|
33334
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { as: "span", variant: "caption", className: "ml-1 hidden text-xs sm:inline", children:
|
|
33663
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { as: "span", variant: "caption", className: "ml-1 hidden text-xs sm:inline", children: entryLabel })
|
|
33335
33664
|
]
|
|
33336
33665
|
},
|
|
33337
33666
|
entry.type
|
|
@@ -33374,6 +33703,7 @@ var init_ReplyTree = __esm({
|
|
|
33374
33703
|
"use client";
|
|
33375
33704
|
init_cn();
|
|
33376
33705
|
init_useEventBus();
|
|
33706
|
+
init_useTranslate();
|
|
33377
33707
|
init_atoms2();
|
|
33378
33708
|
init_VoteStack();
|
|
33379
33709
|
ReplyTreeNode = ({
|
|
@@ -33393,6 +33723,7 @@ var init_ReplyTree = __esm({
|
|
|
33393
33723
|
showActions
|
|
33394
33724
|
}) => {
|
|
33395
33725
|
const eventBus = useEventBus();
|
|
33726
|
+
const { t } = useTranslate();
|
|
33396
33727
|
const hasReplies = !!node.replies && node.replies.length > 0;
|
|
33397
33728
|
const isCollapsed = collapsedSet.has(node.id);
|
|
33398
33729
|
const atMaxDepth = depth >= maxDepth;
|
|
@@ -33439,7 +33770,7 @@ var init_ReplyTree = __esm({
|
|
|
33439
33770
|
variant: "ghost",
|
|
33440
33771
|
size: "sm",
|
|
33441
33772
|
onClick: handleToggle,
|
|
33442
|
-
"aria-label": isCollapsed ? "
|
|
33773
|
+
"aria-label": isCollapsed ? t("replyTree.expandReplies") : t("replyTree.collapseReplies"),
|
|
33443
33774
|
"aria-expanded": !isCollapsed,
|
|
33444
33775
|
leftIcon: isCollapsed ? "chevron-right" : "chevron-down",
|
|
33445
33776
|
className: cn(
|
|
@@ -33480,7 +33811,7 @@ var init_ReplyTree = __esm({
|
|
|
33480
33811
|
onVote: handleVote,
|
|
33481
33812
|
size: "sm",
|
|
33482
33813
|
variant: "horizontal",
|
|
33483
|
-
label:
|
|
33814
|
+
label: t("replyTree.voteOnReplyBy", { author: node.authorName })
|
|
33484
33815
|
}
|
|
33485
33816
|
),
|
|
33486
33817
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -33490,8 +33821,8 @@ var init_ReplyTree = __esm({
|
|
|
33490
33821
|
size: "sm",
|
|
33491
33822
|
leftIcon: "message-square",
|
|
33492
33823
|
onClick: handleReply,
|
|
33493
|
-
"aria-label":
|
|
33494
|
-
children: "
|
|
33824
|
+
"aria-label": t("replyTree.replyTo", { author: node.authorName }),
|
|
33825
|
+
children: t("replyTree.reply")
|
|
33495
33826
|
}
|
|
33496
33827
|
),
|
|
33497
33828
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -33501,8 +33832,8 @@ var init_ReplyTree = __esm({
|
|
|
33501
33832
|
size: "sm",
|
|
33502
33833
|
leftIcon: "flag",
|
|
33503
33834
|
onClick: handleFlag,
|
|
33504
|
-
"aria-label":
|
|
33505
|
-
children: "
|
|
33835
|
+
"aria-label": t("replyTree.flagReplyBy", { author: node.authorName }),
|
|
33836
|
+
children: t("replyTree.flag")
|
|
33506
33837
|
}
|
|
33507
33838
|
)
|
|
33508
33839
|
] }),
|
|
@@ -33513,9 +33844,9 @@ var init_ReplyTree = __esm({
|
|
|
33513
33844
|
inputType: "textarea",
|
|
33514
33845
|
rows: 2,
|
|
33515
33846
|
value: draft,
|
|
33516
|
-
placeholder:
|
|
33847
|
+
placeholder: t("replyTree.replyToPlaceholder", { author: node.authorName }),
|
|
33517
33848
|
onChange: (e) => setDraft(e.target.value),
|
|
33518
|
-
"aria-label":
|
|
33849
|
+
"aria-label": t("replyTree.replyTo", { author: node.authorName })
|
|
33519
33850
|
}
|
|
33520
33851
|
),
|
|
33521
33852
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex flex-row gap-2 items-center", children: [
|
|
@@ -33527,10 +33858,10 @@ var init_ReplyTree = __esm({
|
|
|
33527
33858
|
leftIcon: "send",
|
|
33528
33859
|
onClick: handleSubmitReply,
|
|
33529
33860
|
disabled: !draft.trim(),
|
|
33530
|
-
children: "
|
|
33861
|
+
children: t("replyTree.send")
|
|
33531
33862
|
}
|
|
33532
33863
|
),
|
|
33533
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", onClick: handleCancelReply, children: "
|
|
33864
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", onClick: handleCancelReply, children: t("common.cancel") })
|
|
33534
33865
|
] })
|
|
33535
33866
|
] }),
|
|
33536
33867
|
hasReplies && !isCollapsed && (atMaxDepth ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -33544,7 +33875,7 @@ var init_ReplyTree = __esm({
|
|
|
33544
33875
|
"self-start gap-1 px-0 h-auto",
|
|
33545
33876
|
"text-sm text-primary hover:underline hover:bg-transparent"
|
|
33546
33877
|
),
|
|
33547
|
-
children: "
|
|
33878
|
+
children: t("replyTree.continueThread")
|
|
33548
33879
|
}
|
|
33549
33880
|
) : /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex flex-col gap-2 mt-1", children: node.replies.map((child) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
33550
33881
|
ReplyTreeNode,
|
|
@@ -33583,6 +33914,7 @@ var init_ReplyTree = __esm({
|
|
|
33583
33914
|
showActions = true,
|
|
33584
33915
|
className
|
|
33585
33916
|
}) => {
|
|
33917
|
+
const { t } = useTranslate();
|
|
33586
33918
|
const nodeList = Array.isArray(nodes) ? nodes : nodes ? [nodes] : [];
|
|
33587
33919
|
const [collapsedSet, setCollapsedSet] = React84.useState(() => {
|
|
33588
33920
|
const acc = /* @__PURE__ */ new Set();
|
|
@@ -33601,7 +33933,7 @@ var init_ReplyTree = __esm({
|
|
|
33601
33933
|
});
|
|
33602
33934
|
}, []);
|
|
33603
33935
|
if (nodeList.length === 0) {
|
|
33604
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("text-sm text-muted-foreground", className), children: "
|
|
33936
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("text-sm text-muted-foreground", className), children: t("replyTree.noRepliesYet") });
|
|
33605
33937
|
}
|
|
33606
33938
|
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("flex flex-col gap-2 min-w-0", className), children: nodeList.map((node) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
33607
33939
|
ReplyTreeNode,
|
|
@@ -33679,6 +34011,7 @@ var init_VersionDiff = __esm({
|
|
|
33679
34011
|
"use client";
|
|
33680
34012
|
init_cn();
|
|
33681
34013
|
init_useEventBus();
|
|
34014
|
+
init_useTranslate();
|
|
33682
34015
|
init_atoms2();
|
|
33683
34016
|
init_Stack();
|
|
33684
34017
|
INLINE_STYLES = {
|
|
@@ -33701,6 +34034,7 @@ var init_VersionDiff = __esm({
|
|
|
33701
34034
|
language,
|
|
33702
34035
|
className
|
|
33703
34036
|
}) => {
|
|
34037
|
+
const { t } = useTranslate();
|
|
33704
34038
|
const eventBus = useEventBus();
|
|
33705
34039
|
const revisions = Array.isArray(revisionsProp) ? revisionsProp : [];
|
|
33706
34040
|
const fallbackBefore = revisions[0]?.id ?? "";
|
|
@@ -33782,24 +34116,24 @@ var init_VersionDiff = __esm({
|
|
|
33782
34116
|
children: [
|
|
33783
34117
|
/* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", align: "center", className: "flex-wrap", children: [
|
|
33784
34118
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "git-commit", size: "sm", className: "text-muted-foreground" }),
|
|
33785
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "whitespace-nowrap", children: "
|
|
34119
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "whitespace-nowrap", children: t("versionDiff.compare") }),
|
|
33786
34120
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "min-w-0 md:min-w-[160px]", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
33787
34121
|
Select,
|
|
33788
34122
|
{
|
|
33789
34123
|
options,
|
|
33790
34124
|
value: activeBeforeId,
|
|
33791
34125
|
onChange: handleBeforeChange,
|
|
33792
|
-
"aria-label": "
|
|
34126
|
+
"aria-label": t("versionDiff.beforeRevision")
|
|
33793
34127
|
}
|
|
33794
34128
|
) }),
|
|
33795
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "secondary", children: "to" }),
|
|
34129
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "secondary", children: t("versionDiff.to") }),
|
|
33796
34130
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "min-w-0 md:min-w-[160px]", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
33797
34131
|
Select,
|
|
33798
34132
|
{
|
|
33799
34133
|
options,
|
|
33800
34134
|
value: activeAfterId,
|
|
33801
34135
|
onChange: handleAfterChange,
|
|
33802
|
-
"aria-label": "
|
|
34136
|
+
"aria-label": t("versionDiff.afterRevision")
|
|
33803
34137
|
}
|
|
33804
34138
|
) }),
|
|
33805
34139
|
language && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "default", children: language }),
|
|
@@ -33820,7 +34154,7 @@ var init_VersionDiff = __esm({
|
|
|
33820
34154
|
size: "sm",
|
|
33821
34155
|
icon: activeView === "side-by-side" ? "align-left" : "columns",
|
|
33822
34156
|
onClick: handleViewToggle,
|
|
33823
|
-
"aria-label": activeView === "side-by-side" ? "
|
|
34157
|
+
"aria-label": activeView === "side-by-side" ? t("versionDiff.switchToInline") : t("versionDiff.switchToSideBySide")
|
|
33824
34158
|
}
|
|
33825
34159
|
),
|
|
33826
34160
|
(onRevert || revertEvent) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -33830,7 +34164,7 @@ var init_VersionDiff = __esm({
|
|
|
33830
34164
|
size: "sm",
|
|
33831
34165
|
icon: "rotate-ccw",
|
|
33832
34166
|
onClick: handleRevert,
|
|
33833
|
-
children: "
|
|
34167
|
+
children: t("versionDiff.revert")
|
|
33834
34168
|
}
|
|
33835
34169
|
)
|
|
33836
34170
|
] })
|
|
@@ -33847,12 +34181,12 @@ var init_VersionDiff = __esm({
|
|
|
33847
34181
|
children: [
|
|
33848
34182
|
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "caption", color: "secondary", className: "truncate", children: [
|
|
33849
34183
|
beforeRev?.label,
|
|
33850
|
-
beforeRev?.author ?
|
|
34184
|
+
beforeRev?.author ? t("versionDiff.byAuthor", { author: beforeRev.author }) : "",
|
|
33851
34185
|
beforeRev?.timestamp ? ` (${beforeRev.timestamp})` : ""
|
|
33852
34186
|
] }),
|
|
33853
34187
|
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "caption", color: "secondary", className: "truncate", children: [
|
|
33854
34188
|
afterRev?.label,
|
|
33855
|
-
afterRev?.author ?
|
|
34189
|
+
afterRev?.author ? t("versionDiff.byAuthor", { author: afterRev.author }) : "",
|
|
33856
34190
|
afterRev?.timestamp ? ` (${afterRev.timestamp})` : ""
|
|
33857
34191
|
] })
|
|
33858
34192
|
]
|
|
@@ -34245,10 +34579,12 @@ var init_DocPagination = __esm({
|
|
|
34245
34579
|
}
|
|
34246
34580
|
});
|
|
34247
34581
|
function DocSearch({
|
|
34248
|
-
placeholder
|
|
34582
|
+
placeholder,
|
|
34249
34583
|
onSearch,
|
|
34250
34584
|
className
|
|
34251
34585
|
}) {
|
|
34586
|
+
const { t } = useTranslate();
|
|
34587
|
+
const resolvedPlaceholder = placeholder ?? t("docSearch.placeholder");
|
|
34252
34588
|
const [query, setQuery] = React84.useState("");
|
|
34253
34589
|
const [results, setResults] = React84.useState([]);
|
|
34254
34590
|
const [isOpen, setIsOpen] = React84.useState(false);
|
|
@@ -34355,7 +34691,7 @@ function DocSearch({
|
|
|
34355
34691
|
Input,
|
|
34356
34692
|
{
|
|
34357
34693
|
inputType: "search",
|
|
34358
|
-
placeholder,
|
|
34694
|
+
placeholder: resolvedPlaceholder,
|
|
34359
34695
|
value: query,
|
|
34360
34696
|
onChange: handleChange,
|
|
34361
34697
|
onFocus: handleFocus,
|
|
@@ -34420,6 +34756,7 @@ var init_DocSearch = __esm({
|
|
|
34420
34756
|
init_Typography();
|
|
34421
34757
|
init_Icon();
|
|
34422
34758
|
init_Input();
|
|
34759
|
+
init_useTranslate();
|
|
34423
34760
|
}
|
|
34424
34761
|
});
|
|
34425
34762
|
var DocSidebarCategory, DocSidebar;
|
|
@@ -36424,8 +36761,8 @@ var init_SignaturePad = __esm({
|
|
|
36424
36761
|
init_useEventBus();
|
|
36425
36762
|
init_useTranslate();
|
|
36426
36763
|
SignaturePad = ({
|
|
36427
|
-
label
|
|
36428
|
-
helperText
|
|
36764
|
+
label,
|
|
36765
|
+
helperText,
|
|
36429
36766
|
strokeColor,
|
|
36430
36767
|
strokeWidth = 2,
|
|
36431
36768
|
height = 200,
|
|
@@ -36441,6 +36778,8 @@ var init_SignaturePad = __esm({
|
|
|
36441
36778
|
}) => {
|
|
36442
36779
|
const eventBus = useEventBus();
|
|
36443
36780
|
const { t } = useTranslate();
|
|
36781
|
+
const resolvedLabel = label ?? t("signaturePad.label");
|
|
36782
|
+
const resolvedHelperText = helperText ?? t("signaturePad.helperText");
|
|
36444
36783
|
const canvasRef = React84.useRef(null);
|
|
36445
36784
|
const [isDrawing, setIsDrawing] = React84.useState(false);
|
|
36446
36785
|
const [hasSignature, setHasSignature] = React84.useState(!!value);
|
|
@@ -36543,7 +36882,7 @@ var init_SignaturePad = __esm({
|
|
|
36543
36882
|
);
|
|
36544
36883
|
}
|
|
36545
36884
|
return /* @__PURE__ */ jsxRuntime.jsx(Card, { className: cn("p-4", className), children: /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "sm", children: [
|
|
36546
|
-
|
|
36885
|
+
resolvedLabel && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "label", weight: "medium", children: resolvedLabel }),
|
|
36547
36886
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
36548
36887
|
Box,
|
|
36549
36888
|
{
|
|
@@ -36572,7 +36911,7 @@ var init_SignaturePad = __esm({
|
|
|
36572
36911
|
)
|
|
36573
36912
|
}
|
|
36574
36913
|
),
|
|
36575
|
-
|
|
36914
|
+
resolvedHelperText && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "secondary", children: resolvedHelperText }),
|
|
36576
36915
|
!readOnly && /* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", justify: "end", children: [
|
|
36577
36916
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
36578
36917
|
Button,
|
|
@@ -36582,7 +36921,7 @@ var init_SignaturePad = __esm({
|
|
|
36582
36921
|
icon: LucideIcons2.Eraser,
|
|
36583
36922
|
onClick: clearSignature,
|
|
36584
36923
|
disabled: !hasSignature,
|
|
36585
|
-
children: "
|
|
36924
|
+
children: t("signaturePad.clear")
|
|
36586
36925
|
}
|
|
36587
36926
|
),
|
|
36588
36927
|
signEvent && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -36593,7 +36932,7 @@ var init_SignaturePad = __esm({
|
|
|
36593
36932
|
icon: LucideIcons2.Check,
|
|
36594
36933
|
onClick: confirmSignature,
|
|
36595
36934
|
disabled: !hasSignature,
|
|
36596
|
-
children: "
|
|
36935
|
+
children: t("signaturePad.confirm")
|
|
36597
36936
|
}
|
|
36598
36937
|
)
|
|
36599
36938
|
] })
|
|
@@ -41038,6 +41377,7 @@ function MasterDetail({
|
|
|
41038
41377
|
className,
|
|
41039
41378
|
...rest
|
|
41040
41379
|
}) {
|
|
41380
|
+
const { t } = useTranslate();
|
|
41041
41381
|
const loading = externalLoading ?? false;
|
|
41042
41382
|
const isLoading = externalIsLoading ?? false;
|
|
41043
41383
|
const error = externalError ?? null;
|
|
@@ -41050,8 +41390,8 @@ function MasterDetail({
|
|
|
41050
41390
|
isLoading: loading || isLoading,
|
|
41051
41391
|
error,
|
|
41052
41392
|
className,
|
|
41053
|
-
emptyTitle: "
|
|
41054
|
-
emptyDescription: "
|
|
41393
|
+
emptyTitle: t("table.empty.title"),
|
|
41394
|
+
emptyDescription: t("empty.createFirst"),
|
|
41055
41395
|
...rest
|
|
41056
41396
|
}
|
|
41057
41397
|
);
|
|
@@ -41060,6 +41400,7 @@ var init_MasterDetail = __esm({
|
|
|
41060
41400
|
"components/core/organisms/MasterDetail.tsx"() {
|
|
41061
41401
|
"use client";
|
|
41062
41402
|
init_DataTable();
|
|
41403
|
+
init_useTranslate();
|
|
41063
41404
|
MasterDetail.displayName = "MasterDetail";
|
|
41064
41405
|
}
|
|
41065
41406
|
});
|
|
@@ -41068,14 +41409,18 @@ var init_MasterDetailLayout = __esm({
|
|
|
41068
41409
|
"components/core/organisms/layout/MasterDetailLayout.tsx"() {
|
|
41069
41410
|
init_cn();
|
|
41070
41411
|
init_Typography();
|
|
41071
|
-
|
|
41072
|
-
|
|
41073
|
-
{
|
|
41074
|
-
|
|
41075
|
-
|
|
41076
|
-
|
|
41077
|
-
|
|
41078
|
-
|
|
41412
|
+
init_useTranslate();
|
|
41413
|
+
DefaultEmptyDetail = () => {
|
|
41414
|
+
const { t } = useTranslate();
|
|
41415
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center h-full border-2 border-dashed border-border", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
41416
|
+
Typography,
|
|
41417
|
+
{
|
|
41418
|
+
variant: "body2",
|
|
41419
|
+
className: "text-muted-foreground",
|
|
41420
|
+
children: t("masterDetail.selectItem")
|
|
41421
|
+
}
|
|
41422
|
+
) });
|
|
41423
|
+
};
|
|
41079
41424
|
MasterDetailLayout = ({
|
|
41080
41425
|
master,
|
|
41081
41426
|
detail,
|
|
@@ -41202,7 +41547,7 @@ var init_MediaGallery = __esm({
|
|
|
41202
41547
|
{
|
|
41203
41548
|
icon: LucideIcons2.Image,
|
|
41204
41549
|
title: t("display.noMedia"),
|
|
41205
|
-
description: "
|
|
41550
|
+
description: t("mediaGallery.noMediaDescription"),
|
|
41206
41551
|
className
|
|
41207
41552
|
}
|
|
41208
41553
|
);
|
|
@@ -41219,7 +41564,7 @@ var init_MediaGallery = __esm({
|
|
|
41219
41564
|
size: "sm",
|
|
41220
41565
|
icon: LucideIcons2.Upload,
|
|
41221
41566
|
action: "MEDIA_UPLOAD",
|
|
41222
|
-
children: "
|
|
41567
|
+
children: t("mediaGallery.upload")
|
|
41223
41568
|
}
|
|
41224
41569
|
),
|
|
41225
41570
|
actions?.map((action, idx) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -41233,10 +41578,7 @@ var init_MediaGallery = __esm({
|
|
|
41233
41578
|
))
|
|
41234
41579
|
] })
|
|
41235
41580
|
] }),
|
|
41236
|
-
selectable && selectedItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(HStack, { gap: "sm", align: "center", children: /* @__PURE__ */ jsxRuntime.
|
|
41237
|
-
selectedItems.length,
|
|
41238
|
-
" selected"
|
|
41239
|
-
] }) }),
|
|
41581
|
+
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 }) }) }),
|
|
41240
41582
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
41241
41583
|
Box,
|
|
41242
41584
|
{
|
|
@@ -42110,7 +42452,7 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
42110
42452
|
EmptyState,
|
|
42111
42453
|
{
|
|
42112
42454
|
title: t("debug.noActiveTraits"),
|
|
42113
|
-
description: "
|
|
42455
|
+
description: t("debug.traitsMountHint"),
|
|
42114
42456
|
className: "py-8"
|
|
42115
42457
|
}
|
|
42116
42458
|
);
|
|
@@ -42120,14 +42462,11 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
42120
42462
|
header: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 w-full", children: [
|
|
42121
42463
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", weight: "semibold", className: "text-purple-600 dark:text-purple-400", children: trait.name }),
|
|
42122
42464
|
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "success", size: "sm", children: trait.currentState }),
|
|
42123
|
-
/* @__PURE__ */ jsxRuntime.
|
|
42124
|
-
trait.transitionCount,
|
|
42125
|
-
" transitions"
|
|
42126
|
-
] })
|
|
42465
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-500 ml-auto", children: t("debug.transitionsCount", { count: trait.transitionCount }) })
|
|
42127
42466
|
] }),
|
|
42128
42467
|
content: /* @__PURE__ */ jsxRuntime.jsxs(Stack, { gap: "sm", children: [
|
|
42129
42468
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42130
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: "
|
|
42469
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.states") }),
|
|
42131
42470
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1", children: trait.states.map((state) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
42132
42471
|
Badge,
|
|
42133
42472
|
{
|
|
@@ -42139,7 +42478,7 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
42139
42478
|
)) })
|
|
42140
42479
|
] }),
|
|
42141
42480
|
trait.transitions.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42142
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: "
|
|
42481
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.transitions") }),
|
|
42143
42482
|
/* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: trait.transitions.map((t2, i) => /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "font-mono", children: [
|
|
42144
42483
|
t2.from,
|
|
42145
42484
|
" \u2192 ",
|
|
@@ -42158,7 +42497,7 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
42158
42497
|
] }, i)) })
|
|
42159
42498
|
] }),
|
|
42160
42499
|
trait.guards.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42161
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: "
|
|
42500
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.guards") }),
|
|
42162
42501
|
/* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: trait.guards.map((g, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
42163
42502
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", children: g.name }),
|
|
42164
42503
|
/* @__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" })
|
|
@@ -42264,7 +42603,7 @@ function EntitiesTab({ snapshot }) {
|
|
|
42264
42603
|
EmptyState,
|
|
42265
42604
|
{
|
|
42266
42605
|
title: t("debug.noEntityData"),
|
|
42267
|
-
description: "
|
|
42606
|
+
description: t("debug.debugModeHint"),
|
|
42268
42607
|
className: "py-8"
|
|
42269
42608
|
}
|
|
42270
42609
|
);
|
|
@@ -42277,7 +42616,7 @@ function EntitiesTab({ snapshot }) {
|
|
|
42277
42616
|
EmptyState,
|
|
42278
42617
|
{
|
|
42279
42618
|
title: t("debug.noEntities"),
|
|
42280
|
-
description: "
|
|
42619
|
+
description: t("debug.entitiesSpawnHint"),
|
|
42281
42620
|
className: "py-8"
|
|
42282
42621
|
}
|
|
42283
42622
|
);
|
|
@@ -42285,7 +42624,7 @@ function EntitiesTab({ snapshot }) {
|
|
|
42285
42624
|
const singletonItems = singletonEntries.map(([name, data]) => ({
|
|
42286
42625
|
id: `singleton-${name}`,
|
|
42287
42626
|
header: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
42288
|
-
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "primary", size: "sm", children: "
|
|
42627
|
+
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "primary", size: "sm", children: t("debug.singleton") }),
|
|
42289
42628
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", weight: "semibold", className: "text-sky-600 dark:text-sky-400", children: name })
|
|
42290
42629
|
] }),
|
|
42291
42630
|
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) })
|
|
@@ -42303,31 +42642,19 @@ function EntitiesTab({ snapshot }) {
|
|
|
42303
42642
|
}));
|
|
42304
42643
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--entities", children: [
|
|
42305
42644
|
singletonItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4", children: [
|
|
42306
|
-
/* @__PURE__ */ jsxRuntime.
|
|
42307
|
-
"Singletons (",
|
|
42308
|
-
singletonItems.length,
|
|
42309
|
-
")"
|
|
42310
|
-
] }),
|
|
42645
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.singletonsCount", { count: singletonItems.length }) }),
|
|
42311
42646
|
/* @__PURE__ */ jsxRuntime.jsx(Accordion, { items: singletonItems, multiple: true })
|
|
42312
42647
|
] }),
|
|
42313
42648
|
runtimeItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4", children: [
|
|
42314
|
-
/* @__PURE__ */ jsxRuntime.
|
|
42315
|
-
"Runtime (",
|
|
42316
|
-
runtimeEntities.length,
|
|
42317
|
-
")"
|
|
42318
|
-
] }),
|
|
42649
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.runtimeCount", { count: runtimeEntities.length }) }),
|
|
42319
42650
|
/* @__PURE__ */ jsxRuntime.jsx(Accordion, { items: runtimeItems, multiple: true }),
|
|
42320
|
-
runtimeEntities.length > 20 && /* @__PURE__ */ jsxRuntime.
|
|
42321
|
-
"+",
|
|
42322
|
-
runtimeEntities.length - 20,
|
|
42323
|
-
" more entities"
|
|
42324
|
-
] })
|
|
42651
|
+
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 }) })
|
|
42325
42652
|
] }),
|
|
42326
42653
|
persistentEntries.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42327
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: "
|
|
42654
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.persistent") }),
|
|
42328
42655
|
/* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: persistentEntries.map(([type, info]) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between py-1", children: [
|
|
42329
42656
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", children: type }),
|
|
42330
|
-
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: info.loaded ? "success" : "default", size: "sm", children: info.loaded ?
|
|
42657
|
+
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: info.loaded ? "success" : "default", size: "sm", children: info.loaded ? t("debug.loadedCount", { count: info.count }) : t("debug.notLoaded") })
|
|
42331
42658
|
] }, type)) })
|
|
42332
42659
|
] })
|
|
42333
42660
|
] });
|
|
@@ -42371,7 +42698,7 @@ function EventFlowTab({ events: events2 }) {
|
|
|
42371
42698
|
EmptyState,
|
|
42372
42699
|
{
|
|
42373
42700
|
title: t("debug.noEventsYet"),
|
|
42374
|
-
description: "
|
|
42701
|
+
description: t("debug.eventsExecuteHint"),
|
|
42375
42702
|
className: "py-8"
|
|
42376
42703
|
}
|
|
42377
42704
|
);
|
|
@@ -42382,17 +42709,13 @@ function EventFlowTab({ events: events2 }) {
|
|
|
42382
42709
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--events", children: [
|
|
42383
42710
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 mb-3 flex-wrap", children: [
|
|
42384
42711
|
/* @__PURE__ */ jsxRuntime.jsxs(ButtonGroup, { children: [
|
|
42385
|
-
/* @__PURE__ */ jsxRuntime.
|
|
42712
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
42386
42713
|
Button,
|
|
42387
42714
|
{
|
|
42388
42715
|
size: "sm",
|
|
42389
42716
|
variant: filter === "all" ? "primary" : "secondary",
|
|
42390
42717
|
onClick: () => setFilter("all"),
|
|
42391
|
-
children:
|
|
42392
|
-
"All (",
|
|
42393
|
-
events2.length,
|
|
42394
|
-
")"
|
|
42395
|
-
]
|
|
42718
|
+
children: t("debug.allCount", { count: events2.length })
|
|
42396
42719
|
}
|
|
42397
42720
|
),
|
|
42398
42721
|
eventTypes.map((type) => {
|
|
@@ -42422,7 +42745,7 @@ function EventFlowTab({ events: events2 }) {
|
|
|
42422
42745
|
onChange: (e) => setAutoScroll(e.target.checked)
|
|
42423
42746
|
}
|
|
42424
42747
|
),
|
|
42425
|
-
"
|
|
42748
|
+
t("debug.autoScroll")
|
|
42426
42749
|
] })
|
|
42427
42750
|
] }),
|
|
42428
42751
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -42480,7 +42803,7 @@ function GuardsPanel({ guards }) {
|
|
|
42480
42803
|
EmptyState,
|
|
42481
42804
|
{
|
|
42482
42805
|
title: t("debug.noGuardEvaluations"),
|
|
42483
|
-
description: "
|
|
42806
|
+
description: t("debug.guardEvaluationsHint"),
|
|
42484
42807
|
className: "py-8"
|
|
42485
42808
|
}
|
|
42486
42809
|
);
|
|
@@ -42511,15 +42834,15 @@ function GuardsPanel({ guards }) {
|
|
|
42511
42834
|
] }),
|
|
42512
42835
|
content: /* @__PURE__ */ jsxRuntime.jsxs(Stack, { gap: "sm", children: [
|
|
42513
42836
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42514
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: "
|
|
42837
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: t("debug.expression") }),
|
|
42515
42838
|
/* @__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 })
|
|
42516
42839
|
] }),
|
|
42517
42840
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42518
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: "
|
|
42841
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: t("debug.inputs") }),
|
|
42519
42842
|
/* @__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) })
|
|
42520
42843
|
] }),
|
|
42521
42844
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42522
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: "
|
|
42845
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: t("debug.trait") }),
|
|
42523
42846
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", children: guard.context.traitName })
|
|
42524
42847
|
] })
|
|
42525
42848
|
] })
|
|
@@ -42537,9 +42860,9 @@ function GuardsPanel({ guards }) {
|
|
|
42537
42860
|
] })
|
|
42538
42861
|
] }),
|
|
42539
42862
|
/* @__PURE__ */ jsxRuntime.jsxs(ButtonGroup, { children: [
|
|
42540
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", variant: filter === "all" ? "primary" : "secondary", onClick: () => setFilter("all"), children: "
|
|
42541
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", variant: filter === "passed" ? "primary" : "secondary", onClick: () => setFilter("passed"), children: "
|
|
42542
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", variant: filter === "failed" ? "primary" : "secondary", onClick: () => setFilter("failed"), children: "
|
|
42863
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", variant: filter === "all" ? "primary" : "secondary", onClick: () => setFilter("all"), children: t("debug.filterAll") }),
|
|
42864
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", variant: filter === "passed" ? "primary" : "secondary", onClick: () => setFilter("passed"), children: t("debug.filterPassed") }),
|
|
42865
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", variant: filter === "failed" ? "primary" : "secondary", onClick: () => setFilter("failed"), children: t("debug.filterFailed") })
|
|
42543
42866
|
] })
|
|
42544
42867
|
] }),
|
|
42545
42868
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-80 overflow-y-auto", children: /* @__PURE__ */ jsxRuntime.jsx(Accordion, { items: accordionItems }) })
|
|
@@ -42665,7 +42988,7 @@ function TransitionTimeline({ transitions }) {
|
|
|
42665
42988
|
EmptyState,
|
|
42666
42989
|
{
|
|
42667
42990
|
title: t("debug.noTransitionsRecorded"),
|
|
42668
|
-
description: "
|
|
42991
|
+
description: t("debug.transitionsProcessHint"),
|
|
42669
42992
|
className: "py-8"
|
|
42670
42993
|
}
|
|
42671
42994
|
);
|
|
@@ -42682,10 +43005,7 @@ function TransitionTimeline({ transitions }) {
|
|
|
42682
43005
|
const sorted = [...transitions].reverse();
|
|
42683
43006
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--timeline", children: [
|
|
42684
43007
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between mb-2", children: [
|
|
42685
|
-
/* @__PURE__ */ jsxRuntime.
|
|
42686
|
-
transitions.length,
|
|
42687
|
-
" transitions recorded"
|
|
42688
|
-
] }),
|
|
43008
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-500", children: t("debug.transitionsRecorded", { count: transitions.length }) }),
|
|
42689
43009
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-1 text-xs text-gray-500 cursor-pointer", children: [
|
|
42690
43010
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
42691
43011
|
Checkbox,
|
|
@@ -42694,7 +43014,7 @@ function TransitionTimeline({ transitions }) {
|
|
|
42694
43014
|
onChange: (e) => setAutoScroll(e.target.checked)
|
|
42695
43015
|
}
|
|
42696
43016
|
),
|
|
42697
|
-
"
|
|
43017
|
+
t("debug.autoScroll")
|
|
42698
43018
|
] })
|
|
42699
43019
|
] }),
|
|
42700
43020
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -42737,15 +43057,13 @@ function TransitionTimeline({ transitions }) {
|
|
|
42737
43057
|
variant: trace.guardResult ? "success" : "danger",
|
|
42738
43058
|
size: "sm",
|
|
42739
43059
|
children: [
|
|
42740
|
-
"
|
|
43060
|
+
t("debug.guardLabel"),
|
|
43061
|
+
" ",
|
|
42741
43062
|
trace.guardResult ? "\u2713" : "\u2717"
|
|
42742
43063
|
]
|
|
42743
43064
|
}
|
|
42744
43065
|
),
|
|
42745
|
-
/* @__PURE__ */ jsxRuntime.
|
|
42746
|
-
trace.effects.length,
|
|
42747
|
-
" effects"
|
|
42748
|
-
] })
|
|
43066
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-400 ml-auto", children: t("debug.effectsCount", { count: trace.effects.length }) })
|
|
42749
43067
|
] }),
|
|
42750
43068
|
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: [
|
|
42751
43069
|
/* @__PURE__ */ jsxRuntime.jsx(EffectBadge, { effect }),
|
|
@@ -42794,13 +43112,13 @@ function ServerBridgeTab({ bridge }) {
|
|
|
42794
43112
|
EmptyState,
|
|
42795
43113
|
{
|
|
42796
43114
|
title: t("debug.noBridgeData"),
|
|
42797
|
-
description: "
|
|
43115
|
+
description: t("debug.bridgeInitHint"),
|
|
42798
43116
|
className: "py-8"
|
|
42799
43117
|
}
|
|
42800
43118
|
);
|
|
42801
43119
|
}
|
|
42802
43120
|
const formatTime4 = (ts) => {
|
|
42803
|
-
if (ts === 0) return "
|
|
43121
|
+
if (ts === 0) return t("debug.never");
|
|
42804
43122
|
const d = new Date(ts);
|
|
42805
43123
|
return d.toLocaleTimeString("en-US", {
|
|
42806
43124
|
hour12: false,
|
|
@@ -42813,14 +43131,14 @@ function ServerBridgeTab({ bridge }) {
|
|
|
42813
43131
|
/* @__PURE__ */ jsxRuntime.jsxs(Card, { className: "p-3", children: [
|
|
42814
43132
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 mb-3", children: [
|
|
42815
43133
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: `w-3 h-3 rounded-full ${bridge.connected ? "bg-green-500 animate-pulse" : "bg-red-500"}` }),
|
|
42816
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h6", children: bridge.connected ? "
|
|
43134
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h6", children: bridge.connected ? t("debug.connected") : t("debug.disconnected") })
|
|
42817
43135
|
] }),
|
|
42818
43136
|
/* @__PURE__ */ jsxRuntime.jsxs(Stack, { gap: "xs", children: [
|
|
42819
43137
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
42820
43138
|
StatRow,
|
|
42821
43139
|
{
|
|
42822
43140
|
label: t("debug.status"),
|
|
42823
|
-
value: bridge.connected ? "
|
|
43141
|
+
value: bridge.connected ? t("debug.connected") : t("debug.disconnected"),
|
|
42824
43142
|
variant: bridge.connected ? "success" : "danger"
|
|
42825
43143
|
}
|
|
42826
43144
|
),
|
|
@@ -42848,13 +43166,10 @@ function ServerBridgeTab({ bridge }) {
|
|
|
42848
43166
|
] })
|
|
42849
43167
|
] }),
|
|
42850
43168
|
bridge.lastError && /* @__PURE__ */ jsxRuntime.jsxs(Card, { className: "p-3 border-red-200 dark:border-red-800 bg-red-50 dark:bg-red-950", children: [
|
|
42851
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "semibold", className: "text-red-600 dark:text-red-400 mb-1", children: "
|
|
43169
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "semibold", className: "text-red-600 dark:text-red-400 mb-1", children: t("debug.lastError") }),
|
|
42852
43170
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-red-500 font-mono break-all", children: bridge.lastError })
|
|
42853
43171
|
] }),
|
|
42854
|
-
bridge.connected && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-center py-2", children: /* @__PURE__ */ jsxRuntime.
|
|
42855
|
-
bridge.eventsForwarded + bridge.eventsReceived,
|
|
42856
|
-
" total events processed"
|
|
42857
|
-
] }) })
|
|
43172
|
+
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 }) }) })
|
|
42858
43173
|
] }) });
|
|
42859
43174
|
}
|
|
42860
43175
|
var init_ServerBridgeTab = __esm({
|
|
@@ -42964,7 +43279,7 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
42964
43279
|
EmptyState,
|
|
42965
43280
|
{
|
|
42966
43281
|
title: t("debug.noActiveTraits"),
|
|
42967
|
-
description: "
|
|
43282
|
+
description: t("debug.traitsInitHint"),
|
|
42968
43283
|
className: "py-8"
|
|
42969
43284
|
}
|
|
42970
43285
|
);
|
|
@@ -42981,7 +43296,7 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
42981
43296
|
};
|
|
42982
43297
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--dispatch", children: [
|
|
42983
43298
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3", children: [
|
|
42984
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
43299
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.activeStates") }),
|
|
42985
43300
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1", children: traits2.map((trait) => /* @__PURE__ */ jsxRuntime.jsxs(Badge, { variant: "success", size: "sm", children: [
|
|
42986
43301
|
trait.name,
|
|
42987
43302
|
": ",
|
|
@@ -42989,8 +43304,8 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
42989
43304
|
] }, trait.id)) })
|
|
42990
43305
|
] }),
|
|
42991
43306
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3", children: [
|
|
42992
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
42993
|
-
availableEvents.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-400 italic", children: "
|
|
43307
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.availableEvents") }),
|
|
43308
|
+
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: [
|
|
42994
43309
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
42995
43310
|
Button,
|
|
42996
43311
|
{
|
|
@@ -43002,15 +43317,15 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
43002
43317
|
}
|
|
43003
43318
|
),
|
|
43004
43319
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-500", children: transitions.map((t2) => `${t2.from} -> ${t2.to}`).join(", ") }),
|
|
43005
|
-
transitions.some((
|
|
43320
|
+
transitions.some((tr) => tr.guard) && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "warning", size: "sm", children: t("debug.guarded") })
|
|
43006
43321
|
] }, event)) })
|
|
43007
43322
|
] }),
|
|
43008
43323
|
unavailableEvents.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3", children: [
|
|
43009
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
43324
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.otherEvents") }),
|
|
43010
43325
|
/* @__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)) })
|
|
43011
43326
|
] }),
|
|
43012
43327
|
log12.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
43013
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
43328
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.recentTransitions") }),
|
|
43014
43329
|
/* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: log12.map((entry, i) => /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "font-mono text-xs", children: [
|
|
43015
43330
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-400", children: entry.traitName }),
|
|
43016
43331
|
" ",
|
|
@@ -43041,21 +43356,20 @@ var init_RuntimeDebugger = __esm({
|
|
|
43041
43356
|
}
|
|
43042
43357
|
});
|
|
43043
43358
|
function ServerResponseRow({ sr }) {
|
|
43359
|
+
const { t } = useTranslate();
|
|
43044
43360
|
const entityEntries = Object.entries(sr.dataEntities);
|
|
43045
43361
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ml-4 pl-2 border-l border-purple-500/30 py-0.5 text-xs font-mono", children: [
|
|
43046
43362
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
43047
43363
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: sr.success ? "text-green-600 dark:text-green-400" : "text-red-600 dark:text-red-400", children: [
|
|
43048
43364
|
sr.success ? "\u2713" : "\u2717",
|
|
43049
|
-
"
|
|
43365
|
+
" ",
|
|
43366
|
+
t("debug.server")
|
|
43050
43367
|
] }),
|
|
43051
43368
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-600 dark:text-purple-300", children: sr.orbitalName }),
|
|
43052
|
-
sr.clientEffects > 0 && /* @__PURE__ */ jsxRuntime.
|
|
43053
|
-
sr.clientEffects,
|
|
43054
|
-
" clientEffect",
|
|
43055
|
-
sr.clientEffects !== 1 ? "s" : ""
|
|
43056
|
-
] }),
|
|
43369
|
+
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 }) }),
|
|
43057
43370
|
sr.emittedEvents.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "px-1 rounded bg-blue-500/15 text-blue-300", children: [
|
|
43058
|
-
"
|
|
43371
|
+
t("debug.emitLabel"),
|
|
43372
|
+
" ",
|
|
43059
43373
|
sr.emittedEvents.join(", ")
|
|
43060
43374
|
] }),
|
|
43061
43375
|
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 })
|
|
@@ -43063,13 +43377,12 @@ function ServerResponseRow({ sr }) {
|
|
|
43063
43377
|
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: [
|
|
43064
43378
|
name,
|
|
43065
43379
|
": ",
|
|
43066
|
-
count
|
|
43067
|
-
" row",
|
|
43068
|
-
count !== 1 ? "s" : ""
|
|
43380
|
+
t("debug.rowsCount", { count })
|
|
43069
43381
|
] }, name)) })
|
|
43070
43382
|
] });
|
|
43071
43383
|
}
|
|
43072
43384
|
function TransitionRow({ trace }) {
|
|
43385
|
+
const { t } = useTranslate();
|
|
43073
43386
|
const isServerEntry = !!trace.serverResponse && trace.traitName.startsWith("server:");
|
|
43074
43387
|
const hasFailedEffects = trace.effects.some((e) => e.status === "failed");
|
|
43075
43388
|
if (isServerEntry && trace.serverResponse) {
|
|
@@ -43077,7 +43390,7 @@ function TransitionRow({ trace }) {
|
|
|
43077
43390
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-2 text-xs font-mono", children: [
|
|
43078
43391
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "mt-1.5 w-1.5 h-1.5 rounded-full flex-shrink-0 bg-purple-500" }),
|
|
43079
43392
|
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "warning", size: "sm", className: "flex-shrink-0", children: trace.event }),
|
|
43080
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-600 dark:text-purple-400 flex-shrink-0", children: "
|
|
43393
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-600 dark:text-purple-400 flex-shrink-0", children: t("debug.serverResponse") })
|
|
43081
43394
|
] }),
|
|
43082
43395
|
/* @__PURE__ */ jsxRuntime.jsx(ServerResponseRow, { sr: trace.serverResponse })
|
|
43083
43396
|
] });
|
|
@@ -43118,6 +43431,7 @@ function VerifyModePanel({
|
|
|
43118
43431
|
serverCount,
|
|
43119
43432
|
localCount
|
|
43120
43433
|
}) {
|
|
43434
|
+
const { t } = useTranslate();
|
|
43121
43435
|
const [expanded, setExpanded] = React84__namespace.useState(true);
|
|
43122
43436
|
const scrollRef = React84__namespace.useRef(null);
|
|
43123
43437
|
const prevCountRef = React84__namespace.useRef(0);
|
|
@@ -43148,30 +43462,20 @@ function VerifyModePanel({
|
|
|
43148
43462
|
onClick: () => setExpanded((v) => !v),
|
|
43149
43463
|
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",
|
|
43150
43464
|
"aria-expanded": expanded,
|
|
43151
|
-
"aria-label": expanded ? "
|
|
43465
|
+
"aria-label": expanded ? t("debug.collapseVerificationTimeline") : t("debug.expandVerificationTimeline"),
|
|
43152
43466
|
"data-testid": "debugger-verify-toggle",
|
|
43153
43467
|
children: [
|
|
43154
43468
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground/50 w-3", "aria-hidden": true, children: expanded ? "\u25BE" : "\u25B8" }),
|
|
43155
|
-
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: failedChecks > 0 ? "danger" : "success", size: "sm", children: failedChecks > 0 ?
|
|
43156
|
-
/* @__PURE__ */ jsxRuntime.
|
|
43157
|
-
|
|
43158
|
-
" local"
|
|
43159
|
-
] }),
|
|
43160
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-purple-600 dark:text-purple-400", children: [
|
|
43161
|
-
serverCount,
|
|
43162
|
-
" server"
|
|
43163
|
-
] }),
|
|
43469
|
+
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: failedChecks > 0 ? "danger" : "success", size: "sm", children: failedChecks > 0 ? t("debug.failCount", { count: failedChecks }) : t("debug.ok") }),
|
|
43470
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground/70", children: t("debug.localCount", { count: localCount }) }),
|
|
43471
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-600 dark:text-purple-400", children: t("debug.serverCount", { count: serverCount }) }),
|
|
43164
43472
|
traitStates && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-cyan-600 dark:text-cyan-400 truncate max-w-[400px]", children: traitStates }),
|
|
43165
|
-
!expanded && transitions.length > 0 && /* @__PURE__ */ jsxRuntime.
|
|
43166
|
-
transitions.length,
|
|
43167
|
-
" transition",
|
|
43168
|
-
transitions.length !== 1 ? "s" : ""
|
|
43169
|
-
] })
|
|
43473
|
+
!expanded && transitions.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-auto text-foreground/50", children: t("debug.transitionsCount", { count: transitions.length }) })
|
|
43170
43474
|
]
|
|
43171
43475
|
}
|
|
43172
43476
|
),
|
|
43173
43477
|
expanded && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 flex overflow-hidden", children: [
|
|
43174
|
-
/* @__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: "
|
|
43478
|
+
/* @__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)) }) }) }),
|
|
43175
43479
|
/* @__PURE__ */ jsxRuntime.jsx(WalkMinimap, {})
|
|
43176
43480
|
] })
|
|
43177
43481
|
]
|
|
@@ -43187,6 +43491,7 @@ function RuntimeDebugger({
|
|
|
43187
43491
|
defaultTab,
|
|
43188
43492
|
schema
|
|
43189
43493
|
}) {
|
|
43494
|
+
const { t } = useTranslate();
|
|
43190
43495
|
const [isCollapsed, setIsCollapsed] = React84__namespace.useState(mode === "verify" ? true : defaultCollapsed);
|
|
43191
43496
|
const [isVisible, setIsVisible] = React84__namespace.useState(mode === "inline" || mode === "verify" || isDebugEnabled2());
|
|
43192
43497
|
const debugData = useDebugData();
|
|
@@ -43225,55 +43530,55 @@ function RuntimeDebugger({
|
|
|
43225
43530
|
const tabItems = [
|
|
43226
43531
|
{
|
|
43227
43532
|
id: "dispatch",
|
|
43228
|
-
label: "
|
|
43533
|
+
label: t("debug.tabDispatch"),
|
|
43229
43534
|
badge: debugData.traits.length || void 0,
|
|
43230
43535
|
content: /* @__PURE__ */ jsxRuntime.jsx(EventDispatcherTab, { traits: debugData.traits, schema })
|
|
43231
43536
|
},
|
|
43232
43537
|
{
|
|
43233
43538
|
id: "verify",
|
|
43234
|
-
label: failedChecks > 0 ? "
|
|
43539
|
+
label: failedChecks > 0 ? t("debug.tabVerifyAlert") : t("debug.tabVerify"),
|
|
43235
43540
|
badge: verification.summary.totalChecks || void 0,
|
|
43236
43541
|
content: /* @__PURE__ */ jsxRuntime.jsx(VerificationTab, { checks: verification.checks, summary: verification.summary })
|
|
43237
43542
|
},
|
|
43238
43543
|
{
|
|
43239
43544
|
id: "timeline",
|
|
43240
|
-
label: "
|
|
43545
|
+
label: t("debug.tabTimeline"),
|
|
43241
43546
|
badge: verification.transitions.length || void 0,
|
|
43242
43547
|
content: /* @__PURE__ */ jsxRuntime.jsx(TransitionTimeline, { transitions: verification.transitions })
|
|
43243
43548
|
},
|
|
43244
43549
|
{
|
|
43245
43550
|
id: "bridge",
|
|
43246
|
-
label: "
|
|
43551
|
+
label: t("debug.tabBridge"),
|
|
43247
43552
|
badge: verification.bridge?.connected ? void 0 : 1,
|
|
43248
43553
|
content: /* @__PURE__ */ jsxRuntime.jsx(ServerBridgeTab, { bridge: verification.bridge })
|
|
43249
43554
|
},
|
|
43250
43555
|
{
|
|
43251
43556
|
id: "traits",
|
|
43252
|
-
label: "
|
|
43557
|
+
label: t("debug.tabTraits"),
|
|
43253
43558
|
badge: debugData.traits.length || void 0,
|
|
43254
43559
|
content: /* @__PURE__ */ jsxRuntime.jsx(TraitsTab, { traits: debugData.traits })
|
|
43255
43560
|
},
|
|
43256
43561
|
{
|
|
43257
43562
|
id: "ticks",
|
|
43258
|
-
label: "
|
|
43259
|
-
badge: debugData.ticks.filter((
|
|
43563
|
+
label: t("debug.tabTicks"),
|
|
43564
|
+
badge: debugData.ticks.filter((tick) => tick.active).length || void 0,
|
|
43260
43565
|
content: /* @__PURE__ */ jsxRuntime.jsx(TicksTab, { ticks: debugData.ticks })
|
|
43261
43566
|
},
|
|
43262
43567
|
{
|
|
43263
43568
|
id: "entities",
|
|
43264
|
-
label: "
|
|
43569
|
+
label: t("debug.tabEntities"),
|
|
43265
43570
|
badge: debugData.entitySnapshot?.runtime.length || void 0,
|
|
43266
43571
|
content: /* @__PURE__ */ jsxRuntime.jsx(EntitiesTab, { snapshot: debugData.entitySnapshot })
|
|
43267
43572
|
},
|
|
43268
43573
|
{
|
|
43269
43574
|
id: "events",
|
|
43270
|
-
label: "
|
|
43575
|
+
label: t("debug.tabEvents"),
|
|
43271
43576
|
badge: debugData.events.length > 0 ? debugData.events.length : void 0,
|
|
43272
43577
|
content: /* @__PURE__ */ jsxRuntime.jsx(EventFlowTab, { events: debugData.events })
|
|
43273
43578
|
},
|
|
43274
43579
|
{
|
|
43275
43580
|
id: "guards",
|
|
43276
|
-
label: "
|
|
43581
|
+
label: t("debug.tabGuards"),
|
|
43277
43582
|
badge: debugData.guards.filter((g) => !g.result).length || void 0,
|
|
43278
43583
|
content: /* @__PURE__ */ jsxRuntime.jsx(GuardsPanel, { guards: debugData.guards })
|
|
43279
43584
|
}
|
|
@@ -43301,15 +43606,10 @@ function RuntimeDebugger({
|
|
|
43301
43606
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
43302
43607
|
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "h6", style: { fontSize: "0.75rem" }, children: [
|
|
43303
43608
|
isCollapsed ? "\u25B6" : "\u25BC",
|
|
43304
|
-
"
|
|
43609
|
+
" ",
|
|
43610
|
+
t("debug.debugger")
|
|
43305
43611
|
] }),
|
|
43306
|
-
failedChecks > 0 ? /* @__PURE__ */ jsxRuntime.
|
|
43307
|
-
failedChecks,
|
|
43308
|
-
" failed"
|
|
43309
|
-
] }) : debugData.traits.length > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(Badge, { variant: "success", size: "sm", children: [
|
|
43310
|
-
debugData.traits.length,
|
|
43311
|
-
" traits"
|
|
43312
|
-
] }) : /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "info", size: "sm", children: "Idle" })
|
|
43612
|
+
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") })
|
|
43313
43613
|
] })
|
|
43314
43614
|
}
|
|
43315
43615
|
),
|
|
@@ -43327,9 +43627,9 @@ function RuntimeDebugger({
|
|
|
43327
43627
|
);
|
|
43328
43628
|
}
|
|
43329
43629
|
if (mode === "verify") {
|
|
43330
|
-
const traitStates = debugData.traits.map((
|
|
43331
|
-
const serverEntries = verification.transitions.filter((
|
|
43332
|
-
const localEntries = verification.transitions.filter((
|
|
43630
|
+
const traitStates = debugData.traits.map((t2) => `${t2.name}:${t2.currentState}`).join(" | ");
|
|
43631
|
+
const serverEntries = verification.transitions.filter((t2) => t2.serverResponse);
|
|
43632
|
+
const localEntries = verification.transitions.filter((t2) => !t2.serverResponse);
|
|
43333
43633
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
43334
43634
|
VerifyModePanel,
|
|
43335
43635
|
{
|
|
@@ -43361,7 +43661,7 @@ function RuntimeDebugger({
|
|
|
43361
43661
|
variant: "secondary",
|
|
43362
43662
|
size: "sm",
|
|
43363
43663
|
className: "runtime-debugger__toggle",
|
|
43364
|
-
title: "
|
|
43664
|
+
title: t("debug.openDebugger"),
|
|
43365
43665
|
children: failedChecks > 0 ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "relative", children: [
|
|
43366
43666
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "V" }),
|
|
43367
43667
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute -top-1 -right-2 w-2 h-2 bg-red-500 rounded-full" })
|
|
@@ -43371,11 +43671,8 @@ function RuntimeDebugger({
|
|
|
43371
43671
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "runtime-debugger__header", children: [
|
|
43372
43672
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
43373
43673
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-lg", children: "V" }),
|
|
43374
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h6", children: "
|
|
43375
|
-
failedChecks > 0 ? /* @__PURE__ */ jsxRuntime.
|
|
43376
|
-
failedChecks,
|
|
43377
|
-
" failed"
|
|
43378
|
-
] }) : 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" })
|
|
43674
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h6", children: t("debug.kflowVerifier") }),
|
|
43675
|
+
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") })
|
|
43379
43676
|
] }),
|
|
43380
43677
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
43381
43678
|
Button,
|
|
@@ -43383,7 +43680,7 @@ function RuntimeDebugger({
|
|
|
43383
43680
|
onClick: () => setIsCollapsed(true),
|
|
43384
43681
|
variant: "ghost",
|
|
43385
43682
|
size: "sm",
|
|
43386
|
-
title: "
|
|
43683
|
+
title: t("debug.close"),
|
|
43387
43684
|
children: "x"
|
|
43388
43685
|
}
|
|
43389
43686
|
)
|
|
@@ -43397,7 +43694,7 @@ function RuntimeDebugger({
|
|
|
43397
43694
|
className: "runtime-debugger__tabs"
|
|
43398
43695
|
}
|
|
43399
43696
|
) }),
|
|
43400
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "runtime-debugger__footer", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-foreground/50", children: "
|
|
43697
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "runtime-debugger__footer", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-foreground/50", children: t("debug.toggleHint") }) })
|
|
43401
43698
|
] })
|
|
43402
43699
|
}
|
|
43403
43700
|
);
|
|
@@ -43423,6 +43720,7 @@ var init_RuntimeDebugger2 = __esm({
|
|
|
43423
43720
|
init_TransitionTimeline();
|
|
43424
43721
|
init_ServerBridgeTab();
|
|
43425
43722
|
init_EventDispatcherTab();
|
|
43723
|
+
init_useTranslate();
|
|
43426
43724
|
init_RuntimeDebugger();
|
|
43427
43725
|
RuntimeDebugger.displayName = "RuntimeDebugger";
|
|
43428
43726
|
}
|
|
@@ -44711,7 +45009,7 @@ var init_StatCard = __esm({
|
|
|
44711
45009
|
}
|
|
44712
45010
|
);
|
|
44713
45011
|
}
|
|
44714
|
-
const label = schemaStats?.[0]?.label || labelToUse || "
|
|
45012
|
+
const label = schemaStats?.[0]?.label || labelToUse || t("statCard.defaultLabel");
|
|
44715
45013
|
const normalizedPropValue = Array.isArray(propValue) ? propValue[0] ?? propValue.length : propValue;
|
|
44716
45014
|
const value = schemaStats?.[0]?.value ?? normalizedPropValue ?? 0;
|
|
44717
45015
|
const trendDirection = manualDirection || (calculatedTrend === void 0 || calculatedTrend === 0 ? "neutral" : calculatedTrend > 0 ? "up" : "down");
|
|
@@ -44754,7 +45052,7 @@ var init_StatCard = __esm({
|
|
|
44754
45052
|
]
|
|
44755
45053
|
}
|
|
44756
45054
|
),
|
|
44757
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", color: "secondary", as: "span", children: "
|
|
45055
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", color: "secondary", as: "span", children: t("statCard.vsLastPeriod") })
|
|
44758
45056
|
] }),
|
|
44759
45057
|
subtitle && !calculatedTrend && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", color: "secondary", children: subtitle })
|
|
44760
45058
|
] }),
|