@almadar/ui 5.21.8 → 5.21.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/avl/index.cjs +960 -649
- package/dist/avl/index.js +960 -649
- package/dist/components/game/organisms/three/index.cjs +489 -1
- package/dist/components/game/organisms/three/index.js +489 -1
- package/dist/components/index.cjs +665 -369
- package/dist/components/index.js +665 -369
- package/dist/docs/index.cjs +300 -5
- package/dist/docs/index.js +300 -5
- package/dist/hooks/index.cjs +296 -3
- package/dist/hooks/index.js +296 -3
- package/dist/locales/index.cjs +896 -9
- package/dist/locales/index.js +896 -9
- package/dist/providers/index.cjs +665 -369
- package/dist/providers/index.js +665 -369
- package/dist/runtime/index.cjs +665 -369
- package/dist/runtime/index.js +665 -369
- package/locales/ar.json +300 -31
- package/locales/en.json +296 -31
- package/locales/sl.json +300 -31
- package/package.json +1 -1
package/dist/avl/index.cjs
CHANGED
|
@@ -3900,6 +3900,503 @@ var init_Stack = __esm({
|
|
|
3900
3900
|
HStack = (props) => /* @__PURE__ */ jsxRuntime.jsx(Stack, { direction: "horizontal", ...props });
|
|
3901
3901
|
}
|
|
3902
3902
|
});
|
|
3903
|
+
|
|
3904
|
+
// locales/en.json
|
|
3905
|
+
var en_default;
|
|
3906
|
+
var init_en = __esm({
|
|
3907
|
+
"locales/en.json"() {
|
|
3908
|
+
en_default = {
|
|
3909
|
+
$meta: {
|
|
3910
|
+
locale: "en",
|
|
3911
|
+
direction: "ltr"
|
|
3912
|
+
},
|
|
3913
|
+
"common.save": "Save",
|
|
3914
|
+
"common.cancel": "Cancel",
|
|
3915
|
+
"common.delete": "Delete",
|
|
3916
|
+
"common.close": "Close",
|
|
3917
|
+
"common.confirm": "Are you sure?",
|
|
3918
|
+
"common.create": "Create",
|
|
3919
|
+
"common.edit": "Edit",
|
|
3920
|
+
"common.view": "View",
|
|
3921
|
+
"common.add": "Add",
|
|
3922
|
+
"common.remove": "Remove",
|
|
3923
|
+
"common.search": "Search...",
|
|
3924
|
+
"common.filter": "Filter",
|
|
3925
|
+
"common.actions": "Actions",
|
|
3926
|
+
"common.yes": "Yes",
|
|
3927
|
+
"common.no": "No",
|
|
3928
|
+
"common.selected": "selected",
|
|
3929
|
+
"common.ok": "OK",
|
|
3930
|
+
"common.done": "Done",
|
|
3931
|
+
"common.apply": "Apply",
|
|
3932
|
+
"common.reset": "Reset",
|
|
3933
|
+
"common.refresh": "Refresh",
|
|
3934
|
+
"common.export": "Export",
|
|
3935
|
+
"common.import": "Import",
|
|
3936
|
+
"common.copy": "Copy",
|
|
3937
|
+
"common.settings": "Settings",
|
|
3938
|
+
"nav.previous": "Previous",
|
|
3939
|
+
"nav.next": "Next",
|
|
3940
|
+
"nav.back": "Back",
|
|
3941
|
+
"nav.home": "Home",
|
|
3942
|
+
"form.submit": "Submit",
|
|
3943
|
+
"form.saving": "Saving...",
|
|
3944
|
+
"form.required": "This field is required",
|
|
3945
|
+
"form.invalidEmail": "Enter a valid email address",
|
|
3946
|
+
"form.selectPlaceholder": "Select {{label}}...",
|
|
3947
|
+
"form.searchPlaceholder": "Search {{entity}}...",
|
|
3948
|
+
"table.empty.title": "No items found",
|
|
3949
|
+
"table.empty.description": "No items to display.",
|
|
3950
|
+
"table.search.placeholder": "Search...",
|
|
3951
|
+
"table.pagination.showing": "Showing {{start}} to {{end}} of {{total}} results",
|
|
3952
|
+
"table.pagination.page": "Page {{page}} of {{totalPages}}",
|
|
3953
|
+
"table.bulk.selected": "{{count}} selected",
|
|
3954
|
+
"table.loading": "Loading...",
|
|
3955
|
+
"status.loading": "Loading...",
|
|
3956
|
+
"status.scheduled": "Scheduled",
|
|
3957
|
+
"status.inProgress": "In Progress",
|
|
3958
|
+
"status.completed": "Completed",
|
|
3959
|
+
"status.cancelled": "Cancelled",
|
|
3960
|
+
"status.pending": "Pending",
|
|
3961
|
+
"status.active": "Active",
|
|
3962
|
+
"status.inactive": "Inactive",
|
|
3963
|
+
"status.draft": "Draft",
|
|
3964
|
+
"status.archived": "Archived",
|
|
3965
|
+
"error.generic": "Something went wrong",
|
|
3966
|
+
"error.retry": "Try again",
|
|
3967
|
+
"error.notFound": "Not found",
|
|
3968
|
+
"error.loadFailed": "Failed to load: {{message}}",
|
|
3969
|
+
"error.configMissing": "Configuration not found for: {{id}}",
|
|
3970
|
+
"common.loading": "Loading...",
|
|
3971
|
+
"common.showMore": "Show More",
|
|
3972
|
+
"common.showLess": "Show Less",
|
|
3973
|
+
"common.noResults": "No results found",
|
|
3974
|
+
"common.saveChanges": "Save Changes",
|
|
3975
|
+
"common.retry": "Retry",
|
|
3976
|
+
"common.open": "Open",
|
|
3977
|
+
"common.back": "Back",
|
|
3978
|
+
"empty.noItems": "No items",
|
|
3979
|
+
"empty.noData": "No data available",
|
|
3980
|
+
"empty.noItemsYet": "No items yet",
|
|
3981
|
+
"empty.noItemsAdded": "No items added yet",
|
|
3982
|
+
"empty.noOptionsFound": "No options found",
|
|
3983
|
+
"list.addItemPlaceholder": "Add new item...",
|
|
3984
|
+
"error.occurred": "An error occurred",
|
|
3985
|
+
"error.failedToLoad": "Failed to load data",
|
|
3986
|
+
"wizard.back": "Back",
|
|
3987
|
+
"wizard.next": "Next",
|
|
3988
|
+
"wizard.complete": "Complete",
|
|
3989
|
+
"wizard.stepOf": "Step {{current}} of {{total}}",
|
|
3990
|
+
"pagination.previous": "Previous",
|
|
3991
|
+
"pagination.next": "Next",
|
|
3992
|
+
"pagination.total": "Total:",
|
|
3993
|
+
"pagination.show": "Show:",
|
|
3994
|
+
"pagination.goTo": "Go to:",
|
|
3995
|
+
"pagination.go": "Go",
|
|
3996
|
+
"auth.signIn": "Sign in",
|
|
3997
|
+
"auth.signOut": "Sign out",
|
|
3998
|
+
"dialog.confirm": "Confirm",
|
|
3999
|
+
"dialog.cancel": "Cancel",
|
|
4000
|
+
"dialog.loading": "Loading...",
|
|
4001
|
+
"dialog.delete.title": "Delete {{item}}?",
|
|
4002
|
+
"dialog.delete.message": "This action cannot be undone.",
|
|
4003
|
+
"trait.availableActions": "Available Actions",
|
|
4004
|
+
"trait.transitions": "Transitions",
|
|
4005
|
+
"trait.availableNow": "Available now",
|
|
4006
|
+
"book.startReading": "Start Reading",
|
|
4007
|
+
"book.tableOfContents": "Table of Contents",
|
|
4008
|
+
"book.partNumber": "Part {{number}}",
|
|
4009
|
+
"book.print": "Print",
|
|
4010
|
+
"book.previousPage": "Previous page",
|
|
4011
|
+
"book.nextPage": "Next page",
|
|
4012
|
+
"quiz.showAnswer": "Show answer",
|
|
4013
|
+
"quiz.hideAnswer": "Hide answer",
|
|
4014
|
+
"aria.closeModal": "Close modal",
|
|
4015
|
+
"aria.closeToast": "Dismiss toast",
|
|
4016
|
+
"aria.closeAlert": "Dismiss alert",
|
|
4017
|
+
"aria.removeFilter": "Remove filter",
|
|
4018
|
+
"aria.closeDrawer": "Close drawer",
|
|
4019
|
+
"aria.closePanel": "Close panel",
|
|
4020
|
+
"aria.previousImage": "Previous image",
|
|
4021
|
+
"aria.nextImage": "Next image",
|
|
4022
|
+
"aria.dismiss": "Dismiss",
|
|
4023
|
+
"aria.previousSlide": "Previous slide",
|
|
4024
|
+
"aria.nextSlide": "Next slide",
|
|
4025
|
+
"aria.previousDays": "Previous days",
|
|
4026
|
+
"aria.nextDays": "Next days",
|
|
4027
|
+
"aria.decrease": "Decrease",
|
|
4028
|
+
"aria.increase": "Increase",
|
|
4029
|
+
"aria.breadcrumb": "Breadcrumb",
|
|
4030
|
+
"aria.tableOfContents": "Table of contents",
|
|
4031
|
+
"aria.docsSidebar": "Documentation sidebar",
|
|
4032
|
+
"aria.selectAllRows": "Select all rows",
|
|
4033
|
+
"aria.selectAll": "Select all",
|
|
4034
|
+
"aria.upvote": "Upvote",
|
|
4035
|
+
"aria.downvote": "Downvote",
|
|
4036
|
+
"aria.qrScanner": "QR scanner",
|
|
4037
|
+
"aria.mockScanDev": "Mock scan (dev)",
|
|
4038
|
+
"aria.openMenu": "Open menu",
|
|
4039
|
+
"aria.closeMenu": "Close menu",
|
|
4040
|
+
"aria.openSidebar": "Open sidebar",
|
|
4041
|
+
"sidebar.expand": "Expand sidebar",
|
|
4042
|
+
"sidebar.collapse": "Collapse sidebar",
|
|
4043
|
+
"sidebar.close": "Close sidebar",
|
|
4044
|
+
"loading.items": "Loading items...",
|
|
4045
|
+
"card.imageAlt": "Image",
|
|
4046
|
+
"canvas.emptyMessage": "No content",
|
|
4047
|
+
"canvas.errorTitle": "Canvas error",
|
|
4048
|
+
"book.noData": "No data",
|
|
4049
|
+
"common.notifications": "Notifications",
|
|
4050
|
+
"common.remaining": "{{count}} remaining",
|
|
4051
|
+
"error.somethingWentWrong": "Something went wrong",
|
|
4052
|
+
"error.loadingItems": "Loading items...",
|
|
4053
|
+
"error.noItemsFound": "No items found",
|
|
4054
|
+
"debug.noEntityData": "No entity data",
|
|
4055
|
+
"debug.noEntities": "No entities",
|
|
4056
|
+
"debug.noTicks": "No ticks registered",
|
|
4057
|
+
"debug.noActiveTraits": "No active traits",
|
|
4058
|
+
"debug.noGuardEvaluations": "No guard evaluations",
|
|
4059
|
+
"debug.noBridgeData": "No bridge data",
|
|
4060
|
+
"debug.status": "Status",
|
|
4061
|
+
"debug.eventsForwarded": "Events Forwarded (Client \u2192 Server)",
|
|
4062
|
+
"debug.eventsReceived": "Events Received (Server \u2192 Client)",
|
|
4063
|
+
"debug.lastHeartbeat": "Last Heartbeat",
|
|
4064
|
+
"debug.noEventsYet": "No events yet",
|
|
4065
|
+
"debug.noTransitionsRecorded": "No transitions recorded",
|
|
4066
|
+
"debug.noVerificationChecks": "No verification checks yet",
|
|
4067
|
+
"display.chartError": "Chart error",
|
|
4068
|
+
"display.codeViewerError": "Code viewer error",
|
|
4069
|
+
"display.noCode": "No code",
|
|
4070
|
+
"display.documentError": "Document error",
|
|
4071
|
+
"display.noDocument": "No document",
|
|
4072
|
+
"display.graphError": "Graph error",
|
|
4073
|
+
"display.noGraphData": "No graph data",
|
|
4074
|
+
"display.galleryError": "Gallery error",
|
|
4075
|
+
"display.noMedia": "No media",
|
|
4076
|
+
"display.meterError": "Meter error",
|
|
4077
|
+
"display.signaturePadError": "Signature pad error",
|
|
4078
|
+
"display.timelineError": "Timeline error",
|
|
4079
|
+
"display.noEvents": "No events",
|
|
4080
|
+
"template.features": "Features",
|
|
4081
|
+
"template.howItWorks": "How It Works",
|
|
4082
|
+
"template.showcase": "Showcase",
|
|
4083
|
+
"template.faq": "Frequently Asked Questions",
|
|
4084
|
+
"template.ourTeam": "Our Team",
|
|
4085
|
+
"template.caseStudies": "Case Studies",
|
|
4086
|
+
"richBlockEditor.toolbar.text": "Text",
|
|
4087
|
+
"richBlockEditor.toolbar.h1": "H1",
|
|
4088
|
+
"richBlockEditor.toolbar.h2": "H2",
|
|
4089
|
+
"richBlockEditor.toolbar.h3": "H3",
|
|
4090
|
+
"richBlockEditor.toolbar.bulletList": "Bullet list",
|
|
4091
|
+
"richBlockEditor.toolbar.numbered": "Numbered",
|
|
4092
|
+
"richBlockEditor.toolbar.quote": "Quote",
|
|
4093
|
+
"richBlockEditor.toolbar.code": "Code",
|
|
4094
|
+
"richBlockEditor.toolbar.divider": "Divider",
|
|
4095
|
+
"richBlockEditor.toolbar.image": "Image",
|
|
4096
|
+
"richBlockEditor.blockType.paragraph": "Text",
|
|
4097
|
+
"richBlockEditor.blockType.heading1": "Heading 1",
|
|
4098
|
+
"richBlockEditor.blockType.heading2": "Heading 2",
|
|
4099
|
+
"richBlockEditor.blockType.heading3": "Heading 3",
|
|
4100
|
+
"richBlockEditor.blockType.bulletList": "Bullet list",
|
|
4101
|
+
"richBlockEditor.blockType.numberedList": "Numbered list",
|
|
4102
|
+
"richBlockEditor.blockType.quote": "Quote",
|
|
4103
|
+
"richBlockEditor.blockType.code": "Code",
|
|
4104
|
+
"richBlockEditor.blockType.divider": "Divider",
|
|
4105
|
+
"richBlockEditor.blockType.image": "Image",
|
|
4106
|
+
"richBlockEditor.blockActions": "Block actions",
|
|
4107
|
+
"richBlockEditor.duplicate": "Duplicate",
|
|
4108
|
+
"richBlockEditor.turnInto": "Turn into",
|
|
4109
|
+
"richBlockEditor.placeholder.heading1": "Heading 1",
|
|
4110
|
+
"richBlockEditor.placeholder.heading2": "Heading 2",
|
|
4111
|
+
"richBlockEditor.placeholder.heading3": "Heading 3",
|
|
4112
|
+
"richBlockEditor.placeholder.quote": "Quote",
|
|
4113
|
+
"richBlockEditor.placeholder.code": "Enter code",
|
|
4114
|
+
"richBlockEditor.placeholder.paragraph": "Start writing...",
|
|
4115
|
+
"richBlockEditor.placeholder.listItem": "List item",
|
|
4116
|
+
"richBlockEditor.placeholder.caption": "Caption (optional)",
|
|
4117
|
+
"richBlockEditor.aria.heading1Block": "Heading 1 block",
|
|
4118
|
+
"richBlockEditor.aria.heading2Block": "Heading 2 block",
|
|
4119
|
+
"richBlockEditor.aria.heading3Block": "Heading 3 block",
|
|
4120
|
+
"richBlockEditor.aria.quoteBlock": "Quote block",
|
|
4121
|
+
"richBlockEditor.aria.codeBlock": "Code block",
|
|
4122
|
+
"richBlockEditor.aria.codeLanguage": "Code language",
|
|
4123
|
+
"richBlockEditor.aria.imageUrl": "Image URL",
|
|
4124
|
+
"richBlockEditor.aria.imageCaption": "Image caption",
|
|
4125
|
+
"richBlockEditor.aria.listItem": "List item",
|
|
4126
|
+
"richBlockEditor.aria.removeListItem": "Remove list item",
|
|
4127
|
+
"richBlockEditor.aria.paragraphBlock": "Paragraph block",
|
|
4128
|
+
"richBlockEditor.embeddedImage": "Embedded image",
|
|
4129
|
+
"richBlockEditor.noImageUrl": "No image URL set",
|
|
4130
|
+
"richBlockEditor.addItem": "Add item",
|
|
4131
|
+
"richBlockEditor.insertParagraphBelow": "Insert paragraph below",
|
|
4132
|
+
"richBlockEditor.editorToolbar": "Block editor toolbar",
|
|
4133
|
+
"richBlockEditor.insertEntry": "Insert {{label}}",
|
|
4134
|
+
"versionDiff.compare": "Compare",
|
|
4135
|
+
"versionDiff.to": "to",
|
|
4136
|
+
"versionDiff.beforeRevision": "Before revision",
|
|
4137
|
+
"versionDiff.afterRevision": "After revision",
|
|
4138
|
+
"versionDiff.switchToInline": "Switch to inline view",
|
|
4139
|
+
"versionDiff.switchToSideBySide": "Switch to side-by-side view",
|
|
4140
|
+
"versionDiff.revert": "Revert",
|
|
4141
|
+
"versionDiff.byAuthor": " by {{author}}",
|
|
4142
|
+
"violationAlert.actionType.measure": "Corrective Measure",
|
|
4143
|
+
"violationAlert.actionType.admin": "Administrative Action",
|
|
4144
|
+
"violationAlert.actionType.penalty": "Penalty Proceedings",
|
|
4145
|
+
"violationAlert.fallbackMessage": "Violation",
|
|
4146
|
+
"violationAlert.adminLabel": "Admin:",
|
|
4147
|
+
"violationAlert.penaltyLabel": "Penalty:",
|
|
4148
|
+
"violationAlert.goToField": "Go to field",
|
|
4149
|
+
"branchingLogic.title": "Branching logic",
|
|
4150
|
+
"branchingLogic.if": "If",
|
|
4151
|
+
"branchingLogic.goTo": "go to",
|
|
4152
|
+
"branchingLogic.rules": "Rules",
|
|
4153
|
+
"branchingLogic.logicGraph": "Logic graph",
|
|
4154
|
+
"branchingLogic.addRule": "Add rule",
|
|
4155
|
+
"branchingLogic.deleteRule": "Delete rule",
|
|
4156
|
+
"branchingLogic.endOfSurvey": "End of survey",
|
|
4157
|
+
"branchingLogic.brokenReference": "Broken reference",
|
|
4158
|
+
"branchingLogic.selectQuestion": "Select question",
|
|
4159
|
+
"branchingLogic.selectTarget": "Select target",
|
|
4160
|
+
"branchingLogic.selectValue": "Select value",
|
|
4161
|
+
"branchingLogic.addValue": "Add value",
|
|
4162
|
+
"branchingLogic.value": "Value",
|
|
4163
|
+
"branchingLogic.typeValuePressEnter": "Type value, press Enter",
|
|
4164
|
+
"branchingLogic.operatorEquals": "equals",
|
|
4165
|
+
"branchingLogic.operatorNotEquals": "does not equal",
|
|
4166
|
+
"branchingLogic.operatorContains": "contains",
|
|
4167
|
+
"branchingLogic.operatorIn": "is one of",
|
|
4168
|
+
"branchingLogic.graphAriaLabel": "Branching logic graph",
|
|
4169
|
+
"branchingLogic.ruleCountOne": "{{count}} rule",
|
|
4170
|
+
"branchingLogic.ruleCountOther": "{{count}} rules",
|
|
4171
|
+
"branchingLogic.brokenCount": "{{count}} broken",
|
|
4172
|
+
"branchingLogic.emptyNoQuestions": "Add questions before building branching rules.",
|
|
4173
|
+
"branchingLogic.emptyNoRules": "No rules yet. Add a rule to define branching logic.",
|
|
4174
|
+
"filterGroup.filters": "Filters",
|
|
4175
|
+
"filterGroup.all": "All",
|
|
4176
|
+
"filterGroup.clear": "Clear",
|
|
4177
|
+
"filterGroup.clearAll": "Clear all",
|
|
4178
|
+
"filterGroup.from": "From",
|
|
4179
|
+
"filterGroup.to": "To",
|
|
4180
|
+
"filterGroup.allOf": "All {{label}}",
|
|
4181
|
+
"filterGroup.activeCount": "{{count}} active",
|
|
4182
|
+
"debug.guardEvaluationsHint": "Guard evaluations will appear when transitions or ticks with guards execute",
|
|
4183
|
+
"debug.expression": "Expression",
|
|
4184
|
+
"debug.inputs": "Inputs",
|
|
4185
|
+
"debug.trait": "Trait",
|
|
4186
|
+
"debug.filterAll": "All",
|
|
4187
|
+
"debug.filterPassed": "Passed",
|
|
4188
|
+
"debug.filterFailed": "Failed",
|
|
4189
|
+
"debug.traitsInitHint": "Traits will appear when the state machine initializes",
|
|
4190
|
+
"debug.traitsMountHint": "Traits will appear when components using them are mounted",
|
|
4191
|
+
"debug.activeStates": "Active States",
|
|
4192
|
+
"debug.availableEvents": "Available Events",
|
|
4193
|
+
"debug.noTransitionsFromState": "No transitions from current state",
|
|
4194
|
+
"debug.guarded": "guarded",
|
|
4195
|
+
"debug.otherEvents": "Other Events (not available from current state)",
|
|
4196
|
+
"debug.recentTransitions": "Recent Transitions",
|
|
4197
|
+
"debug.transitionsCount": "{{count}} transitions",
|
|
4198
|
+
"debug.states": "States",
|
|
4199
|
+
"debug.transitions": "Transitions",
|
|
4200
|
+
"debug.guards": "Guards",
|
|
4201
|
+
"debug.debugModeHint": "Debug mode may not be enabled",
|
|
4202
|
+
"debug.entitiesSpawnHint": "Entities will appear when spawned",
|
|
4203
|
+
"debug.singleton": "Singleton",
|
|
4204
|
+
"debug.singletonsCount": "Singletons ({{count}})",
|
|
4205
|
+
"debug.runtimeCount": "Runtime ({{count}})",
|
|
4206
|
+
"debug.moreEntities": "+{{count}} more entities",
|
|
4207
|
+
"debug.persistent": "Persistent",
|
|
4208
|
+
"debug.loadedCount": "{{count}} loaded",
|
|
4209
|
+
"debug.notLoaded": "not loaded",
|
|
4210
|
+
"debug.eventsExecuteHint": "Events will appear as traits, ticks, and other systems execute",
|
|
4211
|
+
"debug.allCount": "All ({{count}})",
|
|
4212
|
+
"debug.autoScroll": "Auto-scroll",
|
|
4213
|
+
"debug.transitionsProcessHint": "Transitions will appear as the state machine processes events",
|
|
4214
|
+
"debug.transitionsRecorded": "{{count}} transitions recorded",
|
|
4215
|
+
"debug.guardLabel": "guard:",
|
|
4216
|
+
"debug.effectsCount": "{{count}} effects",
|
|
4217
|
+
"debug.bridgeInitHint": "The ServerBridge has not been initialized. Bridge health will appear once the runtime connects to the server.",
|
|
4218
|
+
"debug.never": "Never",
|
|
4219
|
+
"debug.connected": "Connected",
|
|
4220
|
+
"debug.disconnected": "Disconnected",
|
|
4221
|
+
"debug.lastError": "Last Error",
|
|
4222
|
+
"debug.totalEventsProcessed": "{{count}} total events processed",
|
|
4223
|
+
"debug.server": "server",
|
|
4224
|
+
"debug.clientEffectsCount": "{{count}} clientEffects",
|
|
4225
|
+
"debug.emitLabel": "emit:",
|
|
4226
|
+
"debug.rowsCount": "{{count}} rows",
|
|
4227
|
+
"debug.serverResponse": "server response",
|
|
4228
|
+
"debug.collapseVerificationTimeline": "Collapse verification timeline",
|
|
4229
|
+
"debug.expandVerificationTimeline": "Expand verification timeline",
|
|
4230
|
+
"debug.failCount": "{{count}} fail",
|
|
4231
|
+
"debug.ok": "OK",
|
|
4232
|
+
"debug.localCount": "{{count}} local",
|
|
4233
|
+
"debug.serverCount": "{{count}} server",
|
|
4234
|
+
"debug.waitingForTransitions": "Waiting for transitions...",
|
|
4235
|
+
"debug.tabDispatch": "Dispatch",
|
|
4236
|
+
"debug.tabVerify": "Verify",
|
|
4237
|
+
"debug.tabVerifyAlert": "Verify (!)",
|
|
4238
|
+
"debug.tabTimeline": "Timeline",
|
|
4239
|
+
"debug.tabBridge": "Bridge",
|
|
4240
|
+
"debug.tabTraits": "Traits",
|
|
4241
|
+
"debug.tabTicks": "Ticks",
|
|
4242
|
+
"debug.tabEntities": "Entities",
|
|
4243
|
+
"debug.tabEvents": "Events",
|
|
4244
|
+
"debug.tabGuards": "Guards",
|
|
4245
|
+
"debug.debugger": "Debugger",
|
|
4246
|
+
"debug.failedCount": "{{count}} failed",
|
|
4247
|
+
"debug.traitsCount": "{{count}} traits",
|
|
4248
|
+
"debug.idle": "Idle",
|
|
4249
|
+
"debug.openDebugger": "Open Debugger (`)",
|
|
4250
|
+
"debug.kflowVerifier": "KFlow Verifier",
|
|
4251
|
+
"debug.allPassing": "All passing",
|
|
4252
|
+
"debug.runtime": "Runtime",
|
|
4253
|
+
"debug.close": "Close (`)",
|
|
4254
|
+
"debug.toggleHint": "Press ` to toggle | window.__orbitalVerification for automation",
|
|
4255
|
+
"replyTree.expandReplies": "Expand replies",
|
|
4256
|
+
"replyTree.collapseReplies": "Collapse replies",
|
|
4257
|
+
"replyTree.voteOnReplyBy": "Vote on reply by {{author}}",
|
|
4258
|
+
"replyTree.replyTo": "Reply to {{author}}",
|
|
4259
|
+
"replyTree.replyToPlaceholder": "Reply to {{author}}\u2026",
|
|
4260
|
+
"replyTree.reply": "Reply",
|
|
4261
|
+
"replyTree.flagReplyBy": "Flag reply by {{author}}",
|
|
4262
|
+
"replyTree.flag": "Flag",
|
|
4263
|
+
"replyTree.send": "Send",
|
|
4264
|
+
"replyTree.continueThread": "Continue thread",
|
|
4265
|
+
"replyTree.noRepliesYet": "No replies yet.",
|
|
4266
|
+
"signaturePad.label": "Signature",
|
|
4267
|
+
"signaturePad.helperText": "Draw your signature above",
|
|
4268
|
+
"signaturePad.clear": "Clear",
|
|
4269
|
+
"signaturePad.confirm": "Confirm",
|
|
4270
|
+
"qrScanner.cameraUnavailable": "Camera unavailable",
|
|
4271
|
+
"qrScanner.paused": "Paused",
|
|
4272
|
+
"qrScanner.resumeScanning": "Resume scanning",
|
|
4273
|
+
"qrScanner.pauseScanning": "Pause scanning",
|
|
4274
|
+
"qrScanner.switchToFrontCamera": "Switch to front camera",
|
|
4275
|
+
"qrScanner.switchToRearCamera": "Switch to rear camera",
|
|
4276
|
+
"qrScanner.mockScan": "Mock Scan",
|
|
4277
|
+
"docSearch.placeholder": "Search documentation...",
|
|
4278
|
+
"stateMachine.loading": "Loading state machine\u2026",
|
|
4279
|
+
"stateMachine.noStateMachine": "No state machine to visualize",
|
|
4280
|
+
"avl.trigger": "Trigger",
|
|
4281
|
+
"avl.guard": "Guard",
|
|
4282
|
+
"avl.effects": "Effects",
|
|
4283
|
+
"avl.props": "Props",
|
|
4284
|
+
"avl.entity": "Entity",
|
|
4285
|
+
"avl.traits": "Traits",
|
|
4286
|
+
"avl.transition": "Transition",
|
|
4287
|
+
"avl.onEntity": "on {{entity}}",
|
|
4288
|
+
"avl.linkedTo": "linked to {{entity}}",
|
|
4289
|
+
"avl.pressEscToZoomOut": "Press Esc to zoom out",
|
|
4290
|
+
"avl.zoomIn": "Zoom in",
|
|
4291
|
+
"avl.zoomOut": "Zoom out",
|
|
4292
|
+
"avl.orbitalLabel": "Orbital: {{name}}",
|
|
4293
|
+
"avl.orbitalLabelHighlighted": "Orbital: {{name}} (highlighted)",
|
|
4294
|
+
"avl.noTraitData": "No trait data",
|
|
4295
|
+
"avl.computingLayout": "Computing layout...",
|
|
4296
|
+
"avl.noStateMachine": "No state machine",
|
|
4297
|
+
"avl.listensFor": "listens for {{event}}",
|
|
4298
|
+
"avl.emits": "emits {{event}}",
|
|
4299
|
+
"avl.pageLayout": "Page Layout",
|
|
4300
|
+
"avl.overlaySuffix": "(overlay)",
|
|
4301
|
+
"orbPreview.previewBadge": "Preview",
|
|
4302
|
+
"orbPreview.doubleClickToOpen": "Double-click to open",
|
|
4303
|
+
"orbPreview.dropToAddAndOpen": "Drop to add and open",
|
|
4304
|
+
"orbPreview.dispatching": "Coordinator is dispatching to this orbital",
|
|
4305
|
+
"orbPreview.noPreview": "No preview available",
|
|
4306
|
+
"orbPreview.screensCount": "{{count}} screens",
|
|
4307
|
+
"detailView.noTransitionData": "No transition data",
|
|
4308
|
+
"orbInspector.required": "req",
|
|
4309
|
+
"orbInspector.addField": "Add Field",
|
|
4310
|
+
"orbInspector.serviceMode": "Service Mode",
|
|
4311
|
+
"orbInspector.standalone": "Standalone",
|
|
4312
|
+
"orbInspector.embedded": "Embedded",
|
|
4313
|
+
"orbInspector.rendersOwnUi": "Renders its own UI",
|
|
4314
|
+
"orbInspector.headless": "Headless, wired to other behaviors",
|
|
4315
|
+
"orbInspector.addEffect": "Add Effect",
|
|
4316
|
+
"orbInspector.guardExpression": "Guard expression",
|
|
4317
|
+
"orbInspector.selectPatternForStyles": "Select a pattern to view its style tokens.",
|
|
4318
|
+
"orbInspector.tokens": "Tokens",
|
|
4319
|
+
"orbInspector.noTokenContract": "No token contract declared for this pattern.",
|
|
4320
|
+
"orbInspector.variant": "Variant",
|
|
4321
|
+
"orbInspector.size": "Size",
|
|
4322
|
+
"orbInspector.statesCount": "{{count}} states",
|
|
4323
|
+
"orbInspector.onEntity": " on {{entity}}",
|
|
4324
|
+
"orbInspector.projectThemeTokens": "Project theme tokens",
|
|
4325
|
+
"orbInspector.tokenGroup.colors": "Colors",
|
|
4326
|
+
"orbInspector.tokenGroup.radii": "Radii",
|
|
4327
|
+
"orbInspector.tokenGroup.spacing": "Spacing",
|
|
4328
|
+
"orbInspector.tokenGroup.shadows": "Shadows",
|
|
4329
|
+
"orbInspector.tab.inspector": "Inspector",
|
|
4330
|
+
"orbInspector.tab.styles": "Styles",
|
|
4331
|
+
"orbInspector.tab.code": "Code",
|
|
4332
|
+
"canvas.goBackToOverview": "Go back to overview",
|
|
4333
|
+
"canvas.overview": "Overview",
|
|
4334
|
+
"canvas.expanded": "Expanded",
|
|
4335
|
+
"canvas.modulesCount": "{{count}} modules",
|
|
4336
|
+
"canvas.screensCount": "{{count}} screens",
|
|
4337
|
+
"canvas.switchToView": "Switch to {{label}} view",
|
|
4338
|
+
"lawReference.viewFullText": "View full law text",
|
|
4339
|
+
"statCard.defaultLabel": "Stat",
|
|
4340
|
+
"statCard.vsLastPeriod": "vs last period",
|
|
4341
|
+
"mediaGallery.upload": "Upload",
|
|
4342
|
+
"mediaGallery.noMediaDescription": "No media items to display.",
|
|
4343
|
+
"pagination.jumpPlaceholder": "Page",
|
|
4344
|
+
"table.selectRow": "Select row {{id}}",
|
|
4345
|
+
"card.selectItem": "Select {{item}}",
|
|
4346
|
+
"card.itemFallback": "item",
|
|
4347
|
+
"fileTree.noFiles": "No files",
|
|
4348
|
+
"masterDetail.selectItem": "Select an item to view details",
|
|
4349
|
+
"empty.createFirst": "Create your first item to get started.",
|
|
4350
|
+
"upload.dropOrBrowse": "Drop files here or click to browse",
|
|
4351
|
+
"upload.dropFilesHere": "Drop files here",
|
|
4352
|
+
"upload.accepted": "Accepted: {{accept}}",
|
|
4353
|
+
"upload.maxSize": "Max size: {{size}}",
|
|
4354
|
+
"upload.maxFiles": "Up to {{count}} files",
|
|
4355
|
+
"upload.error.maxFiles": "Maximum {{count}} files allowed",
|
|
4356
|
+
"upload.error.invalidType": "Invalid file type: {{name}}",
|
|
4357
|
+
"upload.error.tooLarge": "File too large: {{name}} (max {{size}})",
|
|
4358
|
+
"optionConstraint.requiredOne": "Required, pick 1",
|
|
4359
|
+
"optionConstraint.optionalOne": "Optional, pick up to 1",
|
|
4360
|
+
"optionConstraint.pickExactly": "Pick exactly {{count}}",
|
|
4361
|
+
"optionConstraint.pickRange": "Pick {{min}}-{{max}}",
|
|
4362
|
+
"optionConstraint.pickAtLeast": "Pick at least {{count}}",
|
|
4363
|
+
"optionConstraint.pickUpTo": "Pick up to {{count}}",
|
|
4364
|
+
"optionConstraint.optional": "Optional",
|
|
4365
|
+
"optionConstraint.outOfStock": "Out of stock",
|
|
4366
|
+
"optionConstraint.error.pickOne": "Pick 1 option",
|
|
4367
|
+
"optionConstraint.error.pickOnlyOne": "Pick only 1 option",
|
|
4368
|
+
"optionConstraint.error.pickMore": "Pick at least {{count}} more",
|
|
4369
|
+
"optionConstraint.error.removeOptions": "Remove {{count}} options",
|
|
4370
|
+
"stateMachine.pinned": "Pinned",
|
|
4371
|
+
"stateMachine.eventCount": "{{count}} events",
|
|
4372
|
+
"stateMachine.externalEffects": "External Effects",
|
|
4373
|
+
"stateMachine.legend.initial": "Initial",
|
|
4374
|
+
"stateMachine.legend.final": "Final",
|
|
4375
|
+
"stateMachine.legend.state": "State",
|
|
4376
|
+
"stateMachine.legend.multiEvent": "Multi-event"
|
|
4377
|
+
};
|
|
4378
|
+
}
|
|
4379
|
+
});
|
|
4380
|
+
function useTranslate() {
|
|
4381
|
+
return React97.useContext(I18nContext);
|
|
4382
|
+
}
|
|
4383
|
+
var _meta, coreMessages, coreLocale, I18nContext;
|
|
4384
|
+
var init_useTranslate = __esm({
|
|
4385
|
+
"hooks/useTranslate.ts"() {
|
|
4386
|
+
"use client";
|
|
4387
|
+
init_en();
|
|
4388
|
+
({ $meta: _meta, ...coreMessages } = en_default);
|
|
4389
|
+
coreLocale = coreMessages;
|
|
4390
|
+
I18nContext = React97.createContext({
|
|
4391
|
+
locale: "en",
|
|
4392
|
+
direction: "ltr",
|
|
4393
|
+
t: (key) => coreLocale[key] ?? key
|
|
4394
|
+
// core locale fallback
|
|
4395
|
+
});
|
|
4396
|
+
I18nContext.displayName = "I18nContext";
|
|
4397
|
+
I18nContext.Provider;
|
|
4398
|
+
}
|
|
4399
|
+
});
|
|
3903
4400
|
var MAX_VISIBLE_EFFECTS; exports.AvlTransitionLane = void 0;
|
|
3904
4401
|
var init_AvlTransitionLane = __esm({
|
|
3905
4402
|
"components/avl/molecules/AvlTransitionLane.tsx"() {
|
|
@@ -4529,6 +5026,7 @@ var log2, SWIM_GUTTER, CENTER_W; exports.BehaviorView = void 0;
|
|
|
4529
5026
|
var init_BehaviorView = __esm({
|
|
4530
5027
|
"components/avl/molecules/BehaviorView.tsx"() {
|
|
4531
5028
|
"use client";
|
|
5029
|
+
init_useTranslate();
|
|
4532
5030
|
init_AvlState();
|
|
4533
5031
|
init_AvlTransitionLane();
|
|
4534
5032
|
init_AvlSwimLane();
|
|
@@ -4538,6 +5036,7 @@ var init_BehaviorView = __esm({
|
|
|
4538
5036
|
SWIM_GUTTER = 120;
|
|
4539
5037
|
CENTER_W = 360;
|
|
4540
5038
|
exports.BehaviorView = ({ data }) => {
|
|
5039
|
+
const { t } = useTranslate();
|
|
4541
5040
|
const [layout, setLayout] = React97.useState(null);
|
|
4542
5041
|
const traitName = data.traits[0]?.name;
|
|
4543
5042
|
const traitData = traitName ? data.traitDetails[traitName] : void 0;
|
|
@@ -4547,10 +5046,10 @@ var init_BehaviorView = __esm({
|
|
|
4547
5046
|
computeTraitLayout(traitData).then(setLayout).catch((err) => log2.error("compute-trait-layout-failed", { error: err instanceof Error ? err : String(err) }));
|
|
4548
5047
|
}, [dataKey]);
|
|
4549
5048
|
if (!traitData) {
|
|
4550
|
-
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: "
|
|
5049
|
+
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") });
|
|
4551
5050
|
}
|
|
4552
5051
|
if (!layout) {
|
|
4553
|
-
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: "
|
|
5052
|
+
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") });
|
|
4554
5053
|
}
|
|
4555
5054
|
const hasExternal = traitData.listenedEvents.length > 0 || traitData.emittedEvents.length > 0;
|
|
4556
5055
|
const viewW = hasExternal ? SWIM_GUTTER + CENTER_W + SWIM_GUTTER : CENTER_W + 60;
|
|
@@ -4566,10 +5065,7 @@ var init_BehaviorView = __esm({
|
|
|
4566
5065
|
const machineHeight = scaledH + 100;
|
|
4567
5066
|
const renderMachine = /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
|
|
4568
5067
|
/* @__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 }),
|
|
4569
|
-
/* @__PURE__ */ jsxRuntime.
|
|
4570
|
-
"on ",
|
|
4571
|
-
traitData.linkedEntity
|
|
4572
|
-
] }),
|
|
5068
|
+
/* @__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 }) }),
|
|
4573
5069
|
/* @__PURE__ */ jsxRuntime.jsxs("defs", { children: [
|
|
4574
5070
|
/* @__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: exports.CONNECTION_COLORS.forward.color, opacity: 0.7 }) }),
|
|
4575
5071
|
/* @__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: exports.CONNECTION_COLORS.backward.color, opacity: 0.5 }) })
|
|
@@ -6371,210 +6867,6 @@ var init_Overlay = __esm({
|
|
|
6371
6867
|
};
|
|
6372
6868
|
}
|
|
6373
6869
|
});
|
|
6374
|
-
|
|
6375
|
-
// locales/en.json
|
|
6376
|
-
var en_default;
|
|
6377
|
-
var init_en = __esm({
|
|
6378
|
-
"locales/en.json"() {
|
|
6379
|
-
en_default = {
|
|
6380
|
-
$meta: { locale: "en", direction: "ltr" },
|
|
6381
|
-
"common.save": "Save",
|
|
6382
|
-
"common.cancel": "Cancel",
|
|
6383
|
-
"common.delete": "Delete",
|
|
6384
|
-
"common.close": "Close",
|
|
6385
|
-
"common.confirm": "Are you sure?",
|
|
6386
|
-
"common.create": "Create",
|
|
6387
|
-
"common.edit": "Edit",
|
|
6388
|
-
"common.view": "View",
|
|
6389
|
-
"common.add": "Add",
|
|
6390
|
-
"common.remove": "Remove",
|
|
6391
|
-
"common.search": "Search...",
|
|
6392
|
-
"common.filter": "Filter",
|
|
6393
|
-
"common.actions": "Actions",
|
|
6394
|
-
"common.yes": "Yes",
|
|
6395
|
-
"common.no": "No",
|
|
6396
|
-
"common.selected": "selected",
|
|
6397
|
-
"common.ok": "OK",
|
|
6398
|
-
"common.done": "Done",
|
|
6399
|
-
"common.apply": "Apply",
|
|
6400
|
-
"common.reset": "Reset",
|
|
6401
|
-
"common.refresh": "Refresh",
|
|
6402
|
-
"common.export": "Export",
|
|
6403
|
-
"common.import": "Import",
|
|
6404
|
-
"common.copy": "Copy",
|
|
6405
|
-
"common.settings": "Settings",
|
|
6406
|
-
"nav.previous": "Previous",
|
|
6407
|
-
"nav.next": "Next",
|
|
6408
|
-
"nav.back": "Back",
|
|
6409
|
-
"nav.home": "Home",
|
|
6410
|
-
"form.submit": "Submit",
|
|
6411
|
-
"form.saving": "Saving...",
|
|
6412
|
-
"form.required": "This field is required",
|
|
6413
|
-
"form.invalidEmail": "Enter a valid email address",
|
|
6414
|
-
"form.selectPlaceholder": "Select {{label}}...",
|
|
6415
|
-
"form.searchPlaceholder": "Search {{entity}}...",
|
|
6416
|
-
"table.empty.title": "No items found",
|
|
6417
|
-
"table.empty.description": "No items to display.",
|
|
6418
|
-
"table.search.placeholder": "Search...",
|
|
6419
|
-
"table.pagination.showing": "Showing {{start}} to {{end}} of {{total}} results",
|
|
6420
|
-
"table.pagination.page": "Page {{page}} of {{totalPages}}",
|
|
6421
|
-
"table.bulk.selected": "{{count}} selected",
|
|
6422
|
-
"table.loading": "Loading...",
|
|
6423
|
-
"status.loading": "Loading...",
|
|
6424
|
-
"status.scheduled": "Scheduled",
|
|
6425
|
-
"status.inProgress": "In Progress",
|
|
6426
|
-
"status.completed": "Completed",
|
|
6427
|
-
"status.cancelled": "Cancelled",
|
|
6428
|
-
"status.pending": "Pending",
|
|
6429
|
-
"status.active": "Active",
|
|
6430
|
-
"status.inactive": "Inactive",
|
|
6431
|
-
"status.draft": "Draft",
|
|
6432
|
-
"status.archived": "Archived",
|
|
6433
|
-
"error.generic": "Something went wrong",
|
|
6434
|
-
"error.retry": "Try again",
|
|
6435
|
-
"error.notFound": "Not found",
|
|
6436
|
-
"error.loadFailed": "Failed to load: {{message}}",
|
|
6437
|
-
"error.configMissing": "Configuration not found for: {{id}}",
|
|
6438
|
-
"common.loading": "Loading...",
|
|
6439
|
-
"common.showMore": "Show More",
|
|
6440
|
-
"common.showLess": "Show Less",
|
|
6441
|
-
"common.noResults": "No results found",
|
|
6442
|
-
"common.saveChanges": "Save Changes",
|
|
6443
|
-
"common.retry": "Retry",
|
|
6444
|
-
"common.open": "Open",
|
|
6445
|
-
"common.back": "Back",
|
|
6446
|
-
"empty.noItems": "No items",
|
|
6447
|
-
"empty.noData": "No data available",
|
|
6448
|
-
"empty.noItemsYet": "No items yet",
|
|
6449
|
-
"empty.noItemsAdded": "No items added yet",
|
|
6450
|
-
"empty.noOptionsFound": "No options found",
|
|
6451
|
-
"list.addItemPlaceholder": "Add new item...",
|
|
6452
|
-
"error.occurred": "An error occurred",
|
|
6453
|
-
"error.failedToLoad": "Failed to load data",
|
|
6454
|
-
"wizard.back": "Back",
|
|
6455
|
-
"wizard.next": "Next",
|
|
6456
|
-
"wizard.complete": "Complete",
|
|
6457
|
-
"wizard.stepOf": "Step {{current}} of {{total}}",
|
|
6458
|
-
"pagination.previous": "Previous",
|
|
6459
|
-
"pagination.next": "Next",
|
|
6460
|
-
"pagination.total": "Total:",
|
|
6461
|
-
"pagination.show": "Show:",
|
|
6462
|
-
"pagination.goTo": "Go to:",
|
|
6463
|
-
"pagination.go": "Go",
|
|
6464
|
-
"auth.signIn": "Sign in",
|
|
6465
|
-
"auth.signOut": "Sign out",
|
|
6466
|
-
"dialog.confirm": "Confirm",
|
|
6467
|
-
"dialog.cancel": "Cancel",
|
|
6468
|
-
"dialog.loading": "Loading...",
|
|
6469
|
-
"dialog.delete.title": "Delete {{item}}?",
|
|
6470
|
-
"dialog.delete.message": "This action cannot be undone.",
|
|
6471
|
-
"trait.availableActions": "Available Actions",
|
|
6472
|
-
"trait.transitions": "Transitions",
|
|
6473
|
-
"trait.availableNow": "Available now",
|
|
6474
|
-
"book.startReading": "Start Reading",
|
|
6475
|
-
"book.tableOfContents": "Table of Contents",
|
|
6476
|
-
"book.partNumber": "Part {{number}}",
|
|
6477
|
-
"book.print": "Print",
|
|
6478
|
-
"book.previousPage": "Previous page",
|
|
6479
|
-
"book.nextPage": "Next page",
|
|
6480
|
-
"quiz.showAnswer": "Show answer",
|
|
6481
|
-
"quiz.hideAnswer": "Hide answer",
|
|
6482
|
-
"aria.closeModal": "Close modal",
|
|
6483
|
-
"aria.closeToast": "Dismiss toast",
|
|
6484
|
-
"aria.closeAlert": "Dismiss alert",
|
|
6485
|
-
"aria.removeFilter": "Remove filter",
|
|
6486
|
-
"aria.closeDrawer": "Close drawer",
|
|
6487
|
-
"aria.closePanel": "Close panel",
|
|
6488
|
-
"aria.previousImage": "Previous image",
|
|
6489
|
-
"aria.nextImage": "Next image",
|
|
6490
|
-
"aria.dismiss": "Dismiss",
|
|
6491
|
-
"aria.previousSlide": "Previous slide",
|
|
6492
|
-
"aria.nextSlide": "Next slide",
|
|
6493
|
-
"aria.previousDays": "Previous days",
|
|
6494
|
-
"aria.nextDays": "Next days",
|
|
6495
|
-
"aria.decrease": "Decrease",
|
|
6496
|
-
"aria.increase": "Increase",
|
|
6497
|
-
"aria.breadcrumb": "Breadcrumb",
|
|
6498
|
-
"aria.tableOfContents": "Table of contents",
|
|
6499
|
-
"aria.docsSidebar": "Documentation sidebar",
|
|
6500
|
-
"aria.selectAllRows": "Select all rows",
|
|
6501
|
-
"aria.selectAll": "Select all",
|
|
6502
|
-
"aria.upvote": "Upvote",
|
|
6503
|
-
"aria.downvote": "Downvote",
|
|
6504
|
-
"aria.qrScanner": "QR scanner",
|
|
6505
|
-
"aria.mockScanDev": "Mock scan (dev)",
|
|
6506
|
-
"aria.openMenu": "Open menu",
|
|
6507
|
-
"aria.closeMenu": "Close menu",
|
|
6508
|
-
"aria.openSidebar": "Open sidebar",
|
|
6509
|
-
"sidebar.expand": "Expand sidebar",
|
|
6510
|
-
"sidebar.collapse": "Collapse sidebar",
|
|
6511
|
-
"sidebar.close": "Close sidebar",
|
|
6512
|
-
"loading.items": "Loading items...",
|
|
6513
|
-
"card.imageAlt": "Image",
|
|
6514
|
-
"canvas.emptyMessage": "No content",
|
|
6515
|
-
"canvas.errorTitle": "Canvas error",
|
|
6516
|
-
"book.noData": "No data",
|
|
6517
|
-
"common.notifications": "Notifications",
|
|
6518
|
-
"common.remaining": "{{count}} remaining",
|
|
6519
|
-
"error.somethingWentWrong": "Something went wrong",
|
|
6520
|
-
"error.loadingItems": "Loading items...",
|
|
6521
|
-
"error.noItemsFound": "No items found",
|
|
6522
|
-
"error.notFound": "Not found",
|
|
6523
|
-
"debug.noEntityData": "No entity data",
|
|
6524
|
-
"debug.noEntities": "No entities",
|
|
6525
|
-
"debug.noTicks": "No ticks registered",
|
|
6526
|
-
"debug.noActiveTraits": "No active traits",
|
|
6527
|
-
"debug.noGuardEvaluations": "No guard evaluations",
|
|
6528
|
-
"debug.noBridgeData": "No bridge data",
|
|
6529
|
-
"debug.status": "Status",
|
|
6530
|
-
"debug.eventsForwarded": "Events Forwarded (Client \u2192 Server)",
|
|
6531
|
-
"debug.eventsReceived": "Events Received (Server \u2192 Client)",
|
|
6532
|
-
"debug.lastHeartbeat": "Last Heartbeat",
|
|
6533
|
-
"debug.noEventsYet": "No events yet",
|
|
6534
|
-
"debug.noTransitionsRecorded": "No transitions recorded",
|
|
6535
|
-
"debug.noVerificationChecks": "No verification checks yet",
|
|
6536
|
-
"display.chartError": "Chart error",
|
|
6537
|
-
"display.codeViewerError": "Code viewer error",
|
|
6538
|
-
"display.noCode": "No code",
|
|
6539
|
-
"display.documentError": "Document error",
|
|
6540
|
-
"display.noDocument": "No document",
|
|
6541
|
-
"display.graphError": "Graph error",
|
|
6542
|
-
"display.noGraphData": "No graph data",
|
|
6543
|
-
"display.galleryError": "Gallery error",
|
|
6544
|
-
"display.noMedia": "No media",
|
|
6545
|
-
"display.meterError": "Meter error",
|
|
6546
|
-
"display.signaturePadError": "Signature pad error",
|
|
6547
|
-
"display.timelineError": "Timeline error",
|
|
6548
|
-
"display.noEvents": "No events",
|
|
6549
|
-
"template.features": "Features",
|
|
6550
|
-
"template.howItWorks": "How It Works",
|
|
6551
|
-
"template.showcase": "Showcase",
|
|
6552
|
-
"template.faq": "Frequently Asked Questions",
|
|
6553
|
-
"template.ourTeam": "Our Team",
|
|
6554
|
-
"template.caseStudies": "Case Studies"
|
|
6555
|
-
};
|
|
6556
|
-
}
|
|
6557
|
-
});
|
|
6558
|
-
function useTranslate() {
|
|
6559
|
-
return React97.useContext(I18nContext);
|
|
6560
|
-
}
|
|
6561
|
-
var _meta, coreMessages, coreLocale, I18nContext;
|
|
6562
|
-
var init_useTranslate = __esm({
|
|
6563
|
-
"hooks/useTranslate.ts"() {
|
|
6564
|
-
"use client";
|
|
6565
|
-
init_en();
|
|
6566
|
-
({ $meta: _meta, ...coreMessages } = en_default);
|
|
6567
|
-
coreLocale = coreMessages;
|
|
6568
|
-
I18nContext = React97.createContext({
|
|
6569
|
-
locale: "en",
|
|
6570
|
-
direction: "ltr",
|
|
6571
|
-
t: (key) => coreLocale[key] ?? key
|
|
6572
|
-
// core locale fallback
|
|
6573
|
-
});
|
|
6574
|
-
I18nContext.displayName = "I18nContext";
|
|
6575
|
-
I18nContext.Provider;
|
|
6576
|
-
}
|
|
6577
|
-
});
|
|
6578
6870
|
var sizeClasses2, minWidthClasses, lookStyles, Modal;
|
|
6579
6871
|
var init_Modal = __esm({
|
|
6580
6872
|
"components/core/molecules/Modal.tsx"() {
|
|
@@ -9553,6 +9845,7 @@ var init_LawReferenceTooltip = __esm({
|
|
|
9553
9845
|
init_Typography();
|
|
9554
9846
|
init_Divider();
|
|
9555
9847
|
init_cn();
|
|
9848
|
+
init_useTranslate();
|
|
9556
9849
|
positionStyles2 = {
|
|
9557
9850
|
top: "bottom-full left-1/2 -translate-x-1/2 mb-2",
|
|
9558
9851
|
bottom: "top-full left-1/2 -translate-x-1/2 mt-2",
|
|
@@ -9571,6 +9864,7 @@ var init_LawReferenceTooltip = __esm({
|
|
|
9571
9864
|
position = "top",
|
|
9572
9865
|
className
|
|
9573
9866
|
}) => {
|
|
9867
|
+
const { t } = useTranslate();
|
|
9574
9868
|
const [isVisible, setIsVisible] = React97__namespace.default.useState(false);
|
|
9575
9869
|
const timeoutRef = React97__namespace.default.useRef(null);
|
|
9576
9870
|
const handleMouseEnter = () => {
|
|
@@ -9654,7 +9948,7 @@ var init_LawReferenceTooltip = __esm({
|
|
|
9654
9948
|
target: "_blank",
|
|
9655
9949
|
rel: "noopener noreferrer",
|
|
9656
9950
|
onClick: (e) => e.stopPropagation(),
|
|
9657
|
-
children: "
|
|
9951
|
+
children: t("lawReference.viewFullText")
|
|
9658
9952
|
}
|
|
9659
9953
|
)
|
|
9660
9954
|
] }),
|
|
@@ -17142,7 +17436,7 @@ var init_CodeBlock = __esm({
|
|
|
17142
17436
|
const isLolo = language === "lolo";
|
|
17143
17437
|
const activeStyle = isOrb ? orbStyle : isLolo ? loloStyle : dark__default.default;
|
|
17144
17438
|
const eventBus = useEventBus();
|
|
17145
|
-
const { t
|
|
17439
|
+
const { t } = useTranslate();
|
|
17146
17440
|
const scrollRef = React97.useRef(null);
|
|
17147
17441
|
const codeRef = React97.useRef(null);
|
|
17148
17442
|
const savedScrollLeftRef = React97.useRef(0);
|
|
@@ -17397,7 +17691,7 @@ var init_CodeBlock = __esm({
|
|
|
17397
17691
|
size: "sm",
|
|
17398
17692
|
onClick: handleCopy,
|
|
17399
17693
|
className: "opacity-0 group-hover:opacity-100 focus:opacity-100 transition-opacity text-muted-foreground hover:text-white",
|
|
17400
|
-
"aria-label": "
|
|
17694
|
+
"aria-label": t("common.copy"),
|
|
17401
17695
|
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" })
|
|
17402
17696
|
}
|
|
17403
17697
|
)
|
|
@@ -18052,7 +18346,7 @@ var init_StateMachineView = __esm({
|
|
|
18052
18346
|
const endX2 = fromState.x + Math.cos(Math.PI / 2 * loopDirection + endAngle) * fromState.radius;
|
|
18053
18347
|
const endY2 = fromState.y + Math.sin(Math.PI / 2 * loopDirection + endAngle) * fromState.radius;
|
|
18054
18348
|
const isSingle2 = bundle.labels.length === 1;
|
|
18055
|
-
const labelText2 = isSingle2 ? bundle.labels[0].event :
|
|
18349
|
+
const labelText2 = isSingle2 ? bundle.labels[0].event : t("stateMachine.eventCount", { count: bundle.labels.length });
|
|
18056
18350
|
const bundleColor2 = isSingle2 ? config.colors.arrow : "var(--color-accent)";
|
|
18057
18351
|
const labelWidth2 = labelText2.length * 9 + (isSingle2 ? 24 : 40);
|
|
18058
18352
|
const cx = fromState.x;
|
|
@@ -18178,7 +18472,7 @@ var init_StateMachineView = __esm({
|
|
|
18178
18472
|
const controlX = midX + perpX;
|
|
18179
18473
|
const controlY = midY + perpY;
|
|
18180
18474
|
const isSingle = bundle.labels.length === 1;
|
|
18181
|
-
const labelText = isSingle ? bundle.labels[0].event :
|
|
18475
|
+
const labelText = isSingle ? bundle.labels[0].event : t("stateMachine.eventCount", { count: bundle.labels.length });
|
|
18182
18476
|
const labelWidth = labelText.length * 9 + (isSingle ? 24 : 40);
|
|
18183
18477
|
const bundleColor = isSingle ? config.colors.arrow : "var(--color-accent)";
|
|
18184
18478
|
const curveMidpoint = {
|
|
@@ -18333,7 +18627,7 @@ var init_StateMachineView = __esm({
|
|
|
18333
18627
|
{
|
|
18334
18628
|
className: "absolute -top-2 left-1/2 transform -translate-x-1/2 px-2 py-0.5 rounded-full",
|
|
18335
18629
|
style: { backgroundColor: "var(--color-success)" },
|
|
18336
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", weight: "semibold", style: { color: "var(--color-success-foreground)" }, children: "
|
|
18630
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", weight: "semibold", style: { color: "var(--color-success-foreground)" }, children: t("stateMachine.pinned") })
|
|
18337
18631
|
}
|
|
18338
18632
|
),
|
|
18339
18633
|
!isSingle && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -18355,10 +18649,7 @@ var init_StateMachineView = __esm({
|
|
|
18355
18649
|
{
|
|
18356
18650
|
className: "ml-2 px-2 py-0.5 rounded-full",
|
|
18357
18651
|
style: { backgroundColor: "var(--color-accent)" },
|
|
18358
|
-
children: /* @__PURE__ */ jsxRuntime.
|
|
18359
|
-
bundle.labels.length,
|
|
18360
|
-
" events"
|
|
18361
|
-
] })
|
|
18652
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", style: { color: "var(--color-accent-foreground)" }, children: t("stateMachine.eventCount", { count: bundle.labels.length }) })
|
|
18362
18653
|
}
|
|
18363
18654
|
)
|
|
18364
18655
|
]
|
|
@@ -18503,7 +18794,7 @@ var init_StateMachineView = __esm({
|
|
|
18503
18794
|
align: "center",
|
|
18504
18795
|
className: "mb-2",
|
|
18505
18796
|
style: { color: "var(--color-warning)", fontSize: "13px" },
|
|
18506
|
-
children: "
|
|
18797
|
+
children: t("stateMachine.externalEffects")
|
|
18507
18798
|
}
|
|
18508
18799
|
),
|
|
18509
18800
|
outputs.outputs.map((output, idx) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -18523,10 +18814,10 @@ var init_StateMachineView = __esm({
|
|
|
18523
18814
|
Legend = ({ config, y }) => {
|
|
18524
18815
|
const { t } = useTranslate();
|
|
18525
18816
|
const items = [
|
|
18526
|
-
{ label: "
|
|
18527
|
-
{ label: "
|
|
18528
|
-
{ label: "
|
|
18529
|
-
{ label: "
|
|
18817
|
+
{ key: "initial", label: t("stateMachine.legend.initial"), color: config.colors.initialNode, isMultiEvent: false },
|
|
18818
|
+
{ key: "final", label: t("stateMachine.legend.final"), color: config.colors.finalNode, isMultiEvent: false },
|
|
18819
|
+
{ key: "state", label: t("stateMachine.legend.state"), color: config.colors.nodeBorder, isMultiEvent: false },
|
|
18820
|
+
{ key: "multiEvent", label: t("stateMachine.legend.multiEvent"), color: "var(--color-accent)", isMultiEvent: true }
|
|
18530
18821
|
];
|
|
18531
18822
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
18532
18823
|
HStack,
|
|
@@ -18541,8 +18832,8 @@ var init_StateMachineView = __esm({
|
|
|
18541
18832
|
{
|
|
18542
18833
|
className: "w-3 h-3 rounded-full",
|
|
18543
18834
|
style: {
|
|
18544
|
-
backgroundColor: item.
|
|
18545
|
-
border: item.
|
|
18835
|
+
backgroundColor: item.isMultiEvent ? item.color : config.colors.node,
|
|
18836
|
+
border: !item.isMultiEvent ? `2px solid ${item.color}` : "none"
|
|
18546
18837
|
}
|
|
18547
18838
|
}
|
|
18548
18839
|
),
|
|
@@ -18554,7 +18845,7 @@ var init_StateMachineView = __esm({
|
|
|
18554
18845
|
children: item.label
|
|
18555
18846
|
}
|
|
18556
18847
|
)
|
|
18557
|
-
] }, item.
|
|
18848
|
+
] }, item.key))
|
|
18558
18849
|
}
|
|
18559
18850
|
);
|
|
18560
18851
|
};
|
|
@@ -19348,13 +19639,13 @@ var init_JazariStateMachine = __esm({
|
|
|
19348
19639
|
);
|
|
19349
19640
|
}, [resolvedTrait, entityFields]);
|
|
19350
19641
|
if (isLoading) {
|
|
19351
|
-
return /* @__PURE__ */ jsxRuntime.jsx(LoadingState, { message: "
|
|
19642
|
+
return /* @__PURE__ */ jsxRuntime.jsx(LoadingState, { message: t("stateMachine.loading") });
|
|
19352
19643
|
}
|
|
19353
19644
|
if (error) {
|
|
19354
19645
|
return /* @__PURE__ */ jsxRuntime.jsx(ErrorState, { message: error instanceof Error ? error.message : String(error) });
|
|
19355
19646
|
}
|
|
19356
19647
|
if (!resolvedTrait || !layoutData || layoutData.states.length === 0) {
|
|
19357
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { padding: "lg", className: cn("text-center", className), children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", className: "opacity-60", children: "
|
|
19648
|
+
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") }) });
|
|
19358
19649
|
}
|
|
19359
19650
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
19360
19651
|
StateMachineView,
|
|
@@ -20398,13 +20689,13 @@ var init_LayoutPatterns = __esm({
|
|
|
20398
20689
|
function generateRuleId() {
|
|
20399
20690
|
return `rule-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
20400
20691
|
}
|
|
20401
|
-
function questionsToOptions(questions,
|
|
20692
|
+
function questionsToOptions(questions, endOfSurveyLabel) {
|
|
20402
20693
|
const opts = questions.map((q) => ({
|
|
20403
20694
|
value: q.id,
|
|
20404
20695
|
label: q.label
|
|
20405
20696
|
}));
|
|
20406
|
-
if (
|
|
20407
|
-
opts.push({ value: END_OF_SURVEY, label:
|
|
20697
|
+
if (endOfSurveyLabel !== null) {
|
|
20698
|
+
opts.push({ value: END_OF_SURVEY, label: endOfSurveyLabel });
|
|
20408
20699
|
}
|
|
20409
20700
|
return opts;
|
|
20410
20701
|
}
|
|
@@ -20413,7 +20704,7 @@ function isRuleBroken(rule, questions) {
|
|
|
20413
20704
|
const targetExists = rule.targetQuestionId === END_OF_SURVEY || questions.some((q) => q.id === rule.targetQuestionId);
|
|
20414
20705
|
return !sourceExists || !targetExists;
|
|
20415
20706
|
}
|
|
20416
|
-
var END_OF_SURVEY,
|
|
20707
|
+
var END_OF_SURVEY, RuleRow, NODE_WIDTH, NODE_HEIGHT, NODE_GAP_Y, PADDING, LogicGraph, BranchingLogicBuilder;
|
|
20417
20708
|
var init_BranchingLogicBuilder = __esm({
|
|
20418
20709
|
"components/core/molecules/BranchingLogicBuilder.tsx"() {
|
|
20419
20710
|
"use client";
|
|
@@ -20426,14 +20717,9 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20426
20717
|
init_FilterPill();
|
|
20427
20718
|
init_Box();
|
|
20428
20719
|
init_useEventBus();
|
|
20720
|
+
init_useTranslate();
|
|
20429
20721
|
init_cn();
|
|
20430
20722
|
END_OF_SURVEY = "end-of-survey";
|
|
20431
|
-
OPERATOR_OPTIONS = [
|
|
20432
|
-
{ value: "equals", label: "equals" },
|
|
20433
|
-
{ value: "not-equals", label: "does not equal" },
|
|
20434
|
-
{ value: "contains", label: "contains" },
|
|
20435
|
-
{ value: "in", label: "is one of" }
|
|
20436
|
-
];
|
|
20437
20723
|
RuleRow = ({
|
|
20438
20724
|
rule,
|
|
20439
20725
|
questions,
|
|
@@ -20442,8 +20728,21 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20442
20728
|
onChange,
|
|
20443
20729
|
onDelete
|
|
20444
20730
|
}) => {
|
|
20445
|
-
const
|
|
20446
|
-
const
|
|
20731
|
+
const { t } = useTranslate();
|
|
20732
|
+
const operatorOptions = React97.useMemo(
|
|
20733
|
+
() => [
|
|
20734
|
+
{ value: "equals", label: t("branchingLogic.operatorEquals") },
|
|
20735
|
+
{ value: "not-equals", label: t("branchingLogic.operatorNotEquals") },
|
|
20736
|
+
{ value: "contains", label: t("branchingLogic.operatorContains") },
|
|
20737
|
+
{ value: "in", label: t("branchingLogic.operatorIn") }
|
|
20738
|
+
],
|
|
20739
|
+
[t]
|
|
20740
|
+
);
|
|
20741
|
+
const sourceOptions = React97.useMemo(() => questionsToOptions(questions, null), [questions]);
|
|
20742
|
+
const targetOptions = React97.useMemo(
|
|
20743
|
+
() => questionsToOptions(questions, t("branchingLogic.endOfSurvey")),
|
|
20744
|
+
[questions, t]
|
|
20745
|
+
);
|
|
20447
20746
|
const sourceQuestion = questions.find((q) => q.id === rule.sourceQuestionId);
|
|
20448
20747
|
const valueOptions = React97.useMemo(() => {
|
|
20449
20748
|
if (!sourceQuestion?.optionValues) return [];
|
|
@@ -20488,22 +20787,22 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20488
20787
|
),
|
|
20489
20788
|
children: [
|
|
20490
20789
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex flex-wrap items-center gap-2", children: [
|
|
20491
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "label", weight: "semibold", className: "shrink-0", children: "
|
|
20790
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "label", weight: "semibold", className: "shrink-0", children: t("branchingLogic.if") }),
|
|
20492
20791
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "min-w-[10rem] grow basis-40", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
20493
20792
|
Select,
|
|
20494
20793
|
{
|
|
20495
20794
|
options: sourceOptions,
|
|
20496
20795
|
value: rule.sourceQuestionId,
|
|
20497
|
-
placeholder: "
|
|
20796
|
+
placeholder: t("branchingLogic.selectQuestion"),
|
|
20498
20797
|
onChange: handleSource,
|
|
20499
20798
|
disabled: readOnly,
|
|
20500
|
-
error: broken ? "
|
|
20799
|
+
error: broken ? t("branchingLogic.brokenReference") : void 0
|
|
20501
20800
|
}
|
|
20502
20801
|
) }),
|
|
20503
20802
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "min-w-[8rem] basis-32", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
20504
20803
|
Select,
|
|
20505
20804
|
{
|
|
20506
|
-
options:
|
|
20805
|
+
options: operatorOptions,
|
|
20507
20806
|
value: rule.operator,
|
|
20508
20807
|
onChange: handleOperator,
|
|
20509
20808
|
disabled: readOnly
|
|
@@ -20526,7 +20825,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20526
20825
|
{
|
|
20527
20826
|
options: valueOptions.filter((o) => !chips.includes(o.value)),
|
|
20528
20827
|
value: "",
|
|
20529
|
-
placeholder: "
|
|
20828
|
+
placeholder: t("branchingLogic.addValue"),
|
|
20530
20829
|
onChange: handleAddChip,
|
|
20531
20830
|
disabled: readOnly
|
|
20532
20831
|
}
|
|
@@ -20534,7 +20833,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20534
20833
|
Input,
|
|
20535
20834
|
{
|
|
20536
20835
|
inputType: "text",
|
|
20537
|
-
placeholder: "
|
|
20836
|
+
placeholder: t("branchingLogic.typeValuePressEnter"),
|
|
20538
20837
|
value: "",
|
|
20539
20838
|
onKeyDown: (e) => {
|
|
20540
20839
|
if (e.key !== "Enter") return;
|
|
@@ -20552,7 +20851,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20552
20851
|
{
|
|
20553
20852
|
options: valueOptions,
|
|
20554
20853
|
value: scalarValue,
|
|
20555
|
-
placeholder: "
|
|
20854
|
+
placeholder: t("branchingLogic.selectValue"),
|
|
20556
20855
|
onChange: (e) => onChange({ ...rule, value: e.target.value }),
|
|
20557
20856
|
disabled: readOnly
|
|
20558
20857
|
}
|
|
@@ -20560,7 +20859,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20560
20859
|
Input,
|
|
20561
20860
|
{
|
|
20562
20861
|
inputType: "text",
|
|
20563
|
-
placeholder: "
|
|
20862
|
+
placeholder: t("branchingLogic.value"),
|
|
20564
20863
|
value: scalarValue,
|
|
20565
20864
|
onChange: handleScalarValue,
|
|
20566
20865
|
disabled: readOnly
|
|
@@ -20568,17 +20867,17 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20568
20867
|
) }),
|
|
20569
20868
|
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "label", weight: "semibold", className: "shrink-0 inline-flex items-center gap-1", children: [
|
|
20570
20869
|
/* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.ArrowRight, { className: "h-4 w-4" }),
|
|
20571
|
-
"
|
|
20870
|
+
t("branchingLogic.goTo")
|
|
20572
20871
|
] }),
|
|
20573
20872
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "min-w-[10rem] grow basis-40", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
20574
20873
|
Select,
|
|
20575
20874
|
{
|
|
20576
20875
|
options: targetOptions,
|
|
20577
20876
|
value: rule.targetQuestionId,
|
|
20578
|
-
placeholder: "
|
|
20877
|
+
placeholder: t("branchingLogic.selectTarget"),
|
|
20579
20878
|
onChange: handleTarget,
|
|
20580
20879
|
disabled: readOnly,
|
|
20581
|
-
error: broken && rule.targetQuestionId !== END_OF_SURVEY ? "
|
|
20880
|
+
error: broken && rule.targetQuestionId !== END_OF_SURVEY ? t("branchingLogic.brokenReference") : void 0
|
|
20582
20881
|
}
|
|
20583
20882
|
) }),
|
|
20584
20883
|
!readOnly && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -20590,11 +20889,11 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20590
20889
|
action: "DELETE_RULE",
|
|
20591
20890
|
actionPayload: { ruleId: rule.id },
|
|
20592
20891
|
onClick: onDelete,
|
|
20593
|
-
"aria-label": "
|
|
20892
|
+
"aria-label": t("branchingLogic.deleteRule")
|
|
20594
20893
|
}
|
|
20595
20894
|
)
|
|
20596
20895
|
] }),
|
|
20597
|
-
broken && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "error", size: "sm", label: "
|
|
20896
|
+
broken && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "error", size: "sm", label: t("branchingLogic.brokenReference") })
|
|
20598
20897
|
]
|
|
20599
20898
|
}
|
|
20600
20899
|
);
|
|
@@ -20604,10 +20903,12 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20604
20903
|
NODE_GAP_Y = 80;
|
|
20605
20904
|
PADDING = 32;
|
|
20606
20905
|
LogicGraph = ({ questions, rules }) => {
|
|
20906
|
+
const { t } = useTranslate();
|
|
20907
|
+
const endOfSurveyLabel = t("branchingLogic.endOfSurvey");
|
|
20607
20908
|
const layout = React97.useMemo(() => {
|
|
20608
20909
|
const items = [
|
|
20609
20910
|
...questions.map((q) => ({ id: q.id, label: q.label, isEnd: false })),
|
|
20610
|
-
{ id: END_OF_SURVEY, label:
|
|
20911
|
+
{ id: END_OF_SURVEY, label: endOfSurveyLabel, isEnd: true }
|
|
20611
20912
|
];
|
|
20612
20913
|
const positions = {};
|
|
20613
20914
|
items.forEach((item, i) => {
|
|
@@ -20619,14 +20920,14 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20619
20920
|
const width = NODE_WIDTH + PADDING * 2 + 220;
|
|
20620
20921
|
const height = PADDING * 2 + items.length * (NODE_HEIGHT + NODE_GAP_Y);
|
|
20621
20922
|
return { items, positions, width, height };
|
|
20622
|
-
}, [questions]);
|
|
20923
|
+
}, [questions, endOfSurveyLabel]);
|
|
20623
20924
|
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "overflow-auto rounded-container border border-border bg-card p-2", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20624
20925
|
"svg",
|
|
20625
20926
|
{
|
|
20626
20927
|
width: layout.width,
|
|
20627
20928
|
height: layout.height,
|
|
20628
20929
|
role: "img",
|
|
20629
|
-
"aria-label": "
|
|
20930
|
+
"aria-label": t("branchingLogic.graphAriaLabel"),
|
|
20630
20931
|
style: { display: "block" },
|
|
20631
20932
|
children: [
|
|
20632
20933
|
/* @__PURE__ */ jsxRuntime.jsx("defs", { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -20734,6 +21035,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20734
21035
|
readOnly = false,
|
|
20735
21036
|
className
|
|
20736
21037
|
}) => {
|
|
21038
|
+
const { t } = useTranslate();
|
|
20737
21039
|
const eventBus = useEventBus();
|
|
20738
21040
|
const questions = Array.isArray(questionsProp) ? questionsProp : [];
|
|
20739
21041
|
const rulesInitial = Array.isArray(rulesProp) ? rulesProp : [];
|
|
@@ -20786,16 +21088,23 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20786
21088
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex flex-wrap items-center justify-between gap-2", children: [
|
|
20787
21089
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex items-center gap-2", children: [
|
|
20788
21090
|
/* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.GitBranch, { className: "h-5 w-5 text-foreground" }),
|
|
20789
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "subheading", weight: "semibold", children: "
|
|
21091
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "subheading", weight: "semibold", children: t("branchingLogic.title") }),
|
|
20790
21092
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
20791
21093
|
Badge,
|
|
20792
21094
|
{
|
|
20793
21095
|
variant: "neutral",
|
|
20794
21096
|
size: "sm",
|
|
20795
|
-
label:
|
|
21097
|
+
label: rules.length === 1 ? t("branchingLogic.ruleCountOne", { count: rules.length }) : t("branchingLogic.ruleCountOther", { count: rules.length })
|
|
20796
21098
|
}
|
|
20797
21099
|
),
|
|
20798
|
-
brokenCount > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
21100
|
+
brokenCount > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
21101
|
+
Badge,
|
|
21102
|
+
{
|
|
21103
|
+
variant: "error",
|
|
21104
|
+
size: "sm",
|
|
21105
|
+
label: t("branchingLogic.brokenCount", { count: brokenCount })
|
|
21106
|
+
}
|
|
21107
|
+
)
|
|
20799
21108
|
] }),
|
|
20800
21109
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex items-center gap-1 rounded-sm border border-border bg-card p-0.5", children: [
|
|
20801
21110
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -20806,7 +21115,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20806
21115
|
leftIcon: LucideIcons2.Pencil,
|
|
20807
21116
|
action: "VIEW_EDIT",
|
|
20808
21117
|
onClick: () => setView("edit"),
|
|
20809
|
-
children: "
|
|
21118
|
+
children: t("branchingLogic.rules")
|
|
20810
21119
|
}
|
|
20811
21120
|
),
|
|
20812
21121
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -20817,13 +21126,13 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20817
21126
|
leftIcon: LucideIcons2.Eye,
|
|
20818
21127
|
action: "VIEW_GRAPH",
|
|
20819
21128
|
onClick: () => setView("graph"),
|
|
20820
|
-
children: "
|
|
21129
|
+
children: t("branchingLogic.logicGraph")
|
|
20821
21130
|
}
|
|
20822
21131
|
)
|
|
20823
21132
|
] })
|
|
20824
21133
|
] }),
|
|
20825
21134
|
view === "edit" ? /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex flex-col gap-2", children: [
|
|
20826
|
-
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 ? "
|
|
21135
|
+
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(
|
|
20827
21136
|
RuleRow,
|
|
20828
21137
|
{
|
|
20829
21138
|
rule,
|
|
@@ -20844,7 +21153,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20844
21153
|
action: "ADD_RULE",
|
|
20845
21154
|
onClick: handleAddRule,
|
|
20846
21155
|
disabled: noQuestions,
|
|
20847
|
-
children: "
|
|
21156
|
+
children: t("branchingLogic.addRule")
|
|
20848
21157
|
}
|
|
20849
21158
|
) })
|
|
20850
21159
|
] }) : /* @__PURE__ */ jsxRuntime.jsx(LogicGraph, { questions, rules })
|
|
@@ -21471,7 +21780,7 @@ function CalendarGrid({
|
|
|
21471
21780
|
onClick: stepPrev,
|
|
21472
21781
|
"aria-disabled": !canPrev || void 0,
|
|
21473
21782
|
"aria-label": t("aria.previousDays"),
|
|
21474
|
-
children: "
|
|
21783
|
+
children: t("nav.previous")
|
|
21475
21784
|
}
|
|
21476
21785
|
),
|
|
21477
21786
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground", children: formatDateRange(visibleDays[0], visibleDays[visibleDays.length - 1]) }),
|
|
@@ -21484,7 +21793,7 @@ function CalendarGrid({
|
|
|
21484
21793
|
onClick: stepNext,
|
|
21485
21794
|
"aria-disabled": !canNext || void 0,
|
|
21486
21795
|
"aria-label": t("aria.nextDays"),
|
|
21487
|
-
children: "
|
|
21796
|
+
children: t("nav.next")
|
|
21488
21797
|
}
|
|
21489
21798
|
)
|
|
21490
21799
|
] }),
|
|
@@ -23034,7 +23343,7 @@ var init_Pagination = __esm({
|
|
|
23034
23343
|
type: "number",
|
|
23035
23344
|
value: jumpToPage,
|
|
23036
23345
|
onChange: (e) => setJumpToPage(e.target.value),
|
|
23037
|
-
placeholder: "
|
|
23346
|
+
placeholder: t("pagination.jumpPlaceholder"),
|
|
23038
23347
|
className: "w-20",
|
|
23039
23348
|
onKeyDown: (e) => {
|
|
23040
23349
|
if (e.key === "Enter") {
|
|
@@ -23172,13 +23481,10 @@ var init_CardGrid = __esm({
|
|
|
23172
23481
|
return children;
|
|
23173
23482
|
}
|
|
23174
23483
|
if (isLoading) {
|
|
23175
|
-
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: "
|
|
23484
|
+
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") }) });
|
|
23176
23485
|
}
|
|
23177
23486
|
if (error) {
|
|
23178
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "col-span-full text-center py-8 text-error", children: /* @__PURE__ */ jsxRuntime.
|
|
23179
|
-
"Error loading items: ",
|
|
23180
|
-
error.message
|
|
23181
|
-
] }) });
|
|
23487
|
+
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 }) }) });
|
|
23182
23488
|
}
|
|
23183
23489
|
if (normalizedData.length === 0) {
|
|
23184
23490
|
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" }) });
|
|
@@ -27044,7 +27350,7 @@ function DataGrid({
|
|
|
27044
27350
|
onChange: () => toggleSelection(id),
|
|
27045
27351
|
onClick: (e) => e.stopPropagation(),
|
|
27046
27352
|
className: "w-4 h-4 mt-1 flex-shrink-0 accent-primary",
|
|
27047
|
-
"aria-label":
|
|
27353
|
+
"aria-label": t("card.selectItem", { item: titleValue !== void 0 ? String(titleValue) : t("card.itemFallback") })
|
|
27048
27354
|
}
|
|
27049
27355
|
),
|
|
27050
27356
|
/* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "xs", className: "flex-1 min-w-0", children: [
|
|
@@ -27242,7 +27548,7 @@ function formatDate3(value) {
|
|
|
27242
27548
|
if (isNaN(d.getTime())) return String(value);
|
|
27243
27549
|
return d.toLocaleDateString(void 0, { year: "numeric", month: "short", day: "numeric" });
|
|
27244
27550
|
}
|
|
27245
|
-
function formatValue2(value, format) {
|
|
27551
|
+
function formatValue2(value, format, boolLabels) {
|
|
27246
27552
|
if (value === void 0 || value === null) return "";
|
|
27247
27553
|
switch (format) {
|
|
27248
27554
|
case "date":
|
|
@@ -27254,7 +27560,7 @@ function formatValue2(value, format) {
|
|
|
27254
27560
|
case "percent":
|
|
27255
27561
|
return typeof value === "number" ? `${Math.round(value)}%` : String(value);
|
|
27256
27562
|
case "boolean":
|
|
27257
|
-
return value ? "Yes" : "No";
|
|
27563
|
+
return value ? boolLabels?.yes ?? "Yes" : boolLabels?.no ?? "No";
|
|
27258
27564
|
default:
|
|
27259
27565
|
return String(value);
|
|
27260
27566
|
}
|
|
@@ -27550,7 +27856,7 @@ function DataList({
|
|
|
27550
27856
|
field.label ?? fieldLabel3(field.name),
|
|
27551
27857
|
":"
|
|
27552
27858
|
] }),
|
|
27553
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", children: formatValue2(value, field.format) })
|
|
27859
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", children: formatValue2(value, field.format, { yes: t("common.yes"), no: t("common.no") }) })
|
|
27554
27860
|
] }, field.name);
|
|
27555
27861
|
}) }),
|
|
27556
27862
|
progressFields.map((field) => {
|
|
@@ -27680,6 +27986,7 @@ var init_FileTree = __esm({
|
|
|
27680
27986
|
init_Box();
|
|
27681
27987
|
init_Typography();
|
|
27682
27988
|
init_Icon();
|
|
27989
|
+
init_useTranslate();
|
|
27683
27990
|
TreeNodeItem = ({
|
|
27684
27991
|
node,
|
|
27685
27992
|
depth,
|
|
@@ -27765,8 +28072,9 @@ var init_FileTree = __esm({
|
|
|
27765
28072
|
className,
|
|
27766
28073
|
indent = 16
|
|
27767
28074
|
}) => {
|
|
28075
|
+
const { t } = useTranslate();
|
|
27768
28076
|
if (tree.length === 0) {
|
|
27769
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: `p-4 ${className ?? ""}`, children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "muted", children: "
|
|
28077
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: `p-4 ${className ?? ""}`, children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "muted", children: t("fileTree.noFiles") }) });
|
|
27770
28078
|
}
|
|
27771
28079
|
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: `py-1 overflow-y-auto ${className ?? ""}`, role: "tree", children: tree.map((node) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
27772
28080
|
TreeNodeItem,
|
|
@@ -27885,6 +28193,7 @@ var init_FilterGroup = __esm({
|
|
|
27885
28193
|
init_Icon();
|
|
27886
28194
|
init_useEventBus();
|
|
27887
28195
|
init_useQuerySingleton();
|
|
28196
|
+
init_useTranslate();
|
|
27888
28197
|
resolveFilterType = (filter) => filter.filterType ?? filter.type;
|
|
27889
28198
|
lookStyles6 = {
|
|
27890
28199
|
toolbar: "",
|
|
@@ -27905,6 +28214,7 @@ var init_FilterGroup = __esm({
|
|
|
27905
28214
|
isLoading,
|
|
27906
28215
|
look = "toolbar"
|
|
27907
28216
|
}) => {
|
|
28217
|
+
const { t } = useTranslate();
|
|
27908
28218
|
const eventBus = useEventBus();
|
|
27909
28219
|
const queryState = useQuerySingleton(query);
|
|
27910
28220
|
const [selectedValues, setSelectedValues] = React97.useState(
|
|
@@ -27986,7 +28296,7 @@ var init_FilterGroup = __esm({
|
|
|
27986
28296
|
"px-3 py-1.5 text-sm font-medium transition-all duration-[var(--transition-fast)]",
|
|
27987
28297
|
!selectedValues[filter.field] ? "bg-primary text-primary-foreground" : "bg-card text-muted-foreground hover:bg-muted"
|
|
27988
28298
|
),
|
|
27989
|
-
children: "
|
|
28299
|
+
children: t("filterGroup.all")
|
|
27990
28300
|
}
|
|
27991
28301
|
),
|
|
27992
28302
|
filter.options?.map((option) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -28014,7 +28324,7 @@ var init_FilterGroup = __esm({
|
|
|
28014
28324
|
size: "sm",
|
|
28015
28325
|
onClick: handleClearAll,
|
|
28016
28326
|
leftIcon: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "x", className: "h-3.5 w-3.5" }),
|
|
28017
|
-
children: "
|
|
28327
|
+
children: t("filterGroup.clear")
|
|
28018
28328
|
}
|
|
28019
28329
|
)
|
|
28020
28330
|
]
|
|
@@ -28025,7 +28335,7 @@ var init_FilterGroup = __esm({
|
|
|
28025
28335
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col gap-4", lookStyles6[look], className), children: [
|
|
28026
28336
|
showIcon && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-muted-foreground", children: [
|
|
28027
28337
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "filter", className: "h-4 w-4" }),
|
|
28028
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: "
|
|
28338
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: t("filterGroup.filters") })
|
|
28029
28339
|
] }),
|
|
28030
28340
|
filters.map((filter) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
28031
28341
|
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-xs font-bold text-muted-foreground uppercase tracking-wide", children: filter.label }),
|
|
@@ -28048,7 +28358,7 @@ var init_FilterGroup = __esm({
|
|
|
28048
28358
|
`${filter.field}_from`,
|
|
28049
28359
|
e.target.value || null
|
|
28050
28360
|
),
|
|
28051
|
-
placeholder: "
|
|
28361
|
+
placeholder: t("filterGroup.from"),
|
|
28052
28362
|
clearable: true,
|
|
28053
28363
|
onClear: () => handleFilterSelect(`${filter.field}_from`, null)
|
|
28054
28364
|
}
|
|
@@ -28062,7 +28372,7 @@ var init_FilterGroup = __esm({
|
|
|
28062
28372
|
`${filter.field}_to`,
|
|
28063
28373
|
e.target.value || null
|
|
28064
28374
|
),
|
|
28065
|
-
placeholder: "
|
|
28375
|
+
placeholder: t("filterGroup.to"),
|
|
28066
28376
|
clearable: true,
|
|
28067
28377
|
onClear: () => handleFilterSelect(`${filter.field}_to`, null)
|
|
28068
28378
|
}
|
|
@@ -28082,7 +28392,7 @@ var init_FilterGroup = __esm({
|
|
|
28082
28392
|
value: selectedValues[filter.field] || "all",
|
|
28083
28393
|
onChange: (e) => handleFilterSelect(filter.field, e.target.value),
|
|
28084
28394
|
options: [
|
|
28085
|
-
{ value: "all", label: "
|
|
28395
|
+
{ value: "all", label: t("filterGroup.all") },
|
|
28086
28396
|
...filter.options?.map((opt) => ({
|
|
28087
28397
|
value: opt,
|
|
28088
28398
|
label: opt
|
|
@@ -28099,7 +28409,7 @@ var init_FilterGroup = __esm({
|
|
|
28099
28409
|
onClick: handleClearAll,
|
|
28100
28410
|
leftIcon: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "x", className: "h-3.5 w-3.5" }),
|
|
28101
28411
|
className: "self-start",
|
|
28102
|
-
children: "
|
|
28412
|
+
children: t("filterGroup.clearAll")
|
|
28103
28413
|
}
|
|
28104
28414
|
)
|
|
28105
28415
|
] });
|
|
@@ -28165,7 +28475,7 @@ var init_FilterGroup = __esm({
|
|
|
28165
28475
|
value: selectedValues[filter.field] || "all",
|
|
28166
28476
|
onChange: (e) => handleFilterSelect(filter.field, e.target.value),
|
|
28167
28477
|
options: [
|
|
28168
|
-
{ value: "all", label:
|
|
28478
|
+
{ value: "all", label: t("filterGroup.allOf", { label: filter.label }) },
|
|
28169
28479
|
...filter.options?.map((opt) => ({
|
|
28170
28480
|
value: opt,
|
|
28171
28481
|
label: opt
|
|
@@ -28194,7 +28504,7 @@ var init_FilterGroup = __esm({
|
|
|
28194
28504
|
field
|
|
28195
28505
|
);
|
|
28196
28506
|
}),
|
|
28197
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", onClick: handleClearAll, children: "
|
|
28507
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", onClick: handleClearAll, children: t("filterGroup.clearAll") })
|
|
28198
28508
|
] })
|
|
28199
28509
|
]
|
|
28200
28510
|
}
|
|
@@ -28219,7 +28529,7 @@ var init_FilterGroup = __esm({
|
|
|
28219
28529
|
className: "text-muted-foreground",
|
|
28220
28530
|
children: [
|
|
28221
28531
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "filter", className: "h-4 w-4" }),
|
|
28222
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: "
|
|
28532
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: t("filterGroup.filters") })
|
|
28223
28533
|
]
|
|
28224
28534
|
}
|
|
28225
28535
|
),
|
|
@@ -28245,7 +28555,7 @@ var init_FilterGroup = __esm({
|
|
|
28245
28555
|
`${filter.field}_from`,
|
|
28246
28556
|
e.target.value || null
|
|
28247
28557
|
),
|
|
28248
|
-
placeholder: "
|
|
28558
|
+
placeholder: t("filterGroup.from"),
|
|
28249
28559
|
clearable: true,
|
|
28250
28560
|
onClear: () => handleFilterSelect(`${filter.field}_from`, null),
|
|
28251
28561
|
className: "min-w-[130px]"
|
|
@@ -28261,7 +28571,7 @@ var init_FilterGroup = __esm({
|
|
|
28261
28571
|
`${filter.field}_to`,
|
|
28262
28572
|
e.target.value || null
|
|
28263
28573
|
),
|
|
28264
|
-
placeholder: "
|
|
28574
|
+
placeholder: t("filterGroup.to"),
|
|
28265
28575
|
clearable: true,
|
|
28266
28576
|
onClear: () => handleFilterSelect(`${filter.field}_to`, null),
|
|
28267
28577
|
className: "min-w-[130px]"
|
|
@@ -28283,7 +28593,7 @@ var init_FilterGroup = __esm({
|
|
|
28283
28593
|
value: selectedValues[filter.field] || "all",
|
|
28284
28594
|
onChange: (e) => handleFilterSelect(filter.field, e.target.value),
|
|
28285
28595
|
options: [
|
|
28286
|
-
{ value: "all", label: "
|
|
28596
|
+
{ value: "all", label: t("filterGroup.all") },
|
|
28287
28597
|
...filter.options?.map((opt) => ({
|
|
28288
28598
|
value: opt,
|
|
28289
28599
|
label: opt
|
|
@@ -28294,10 +28604,7 @@ var init_FilterGroup = __esm({
|
|
|
28294
28604
|
)
|
|
28295
28605
|
] }, filter.field)),
|
|
28296
28606
|
activeFilterCount > 0 && /* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", align: "center", className: "ml-auto", children: [
|
|
28297
|
-
/* @__PURE__ */ jsxRuntime.
|
|
28298
|
-
activeFilterCount,
|
|
28299
|
-
" active"
|
|
28300
|
-
] }),
|
|
28607
|
+
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "primary", size: "md", children: t("filterGroup.activeCount", { count: activeFilterCount }) }),
|
|
28301
28608
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
28302
28609
|
Button,
|
|
28303
28610
|
{
|
|
@@ -28305,7 +28612,7 @@ var init_FilterGroup = __esm({
|
|
|
28305
28612
|
size: "sm",
|
|
28306
28613
|
onClick: handleClearAll,
|
|
28307
28614
|
leftIcon: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "x", className: "h-3.5 w-3.5" }),
|
|
28308
|
-
children: "
|
|
28615
|
+
children: t("filterGroup.clearAll")
|
|
28309
28616
|
}
|
|
28310
28617
|
)
|
|
28311
28618
|
] })
|
|
@@ -29249,19 +29556,20 @@ var init_RepeatableFormSection = __esm({
|
|
|
29249
29556
|
RepeatableFormSection.displayName = "RepeatableFormSection";
|
|
29250
29557
|
}
|
|
29251
29558
|
});
|
|
29252
|
-
var
|
|
29559
|
+
var actionTypeLabelKeys, actionTypeIcons, ViolationAlert;
|
|
29253
29560
|
var init_ViolationAlert = __esm({
|
|
29254
29561
|
"components/core/molecules/ViolationAlert.tsx"() {
|
|
29255
29562
|
init_cn();
|
|
29563
|
+
init_useTranslate();
|
|
29256
29564
|
init_Box();
|
|
29257
29565
|
init_Stack();
|
|
29258
29566
|
init_Typography();
|
|
29259
29567
|
init_Button();
|
|
29260
29568
|
init_Icon();
|
|
29261
|
-
|
|
29262
|
-
measure: "
|
|
29263
|
-
admin: "
|
|
29264
|
-
penalty: "
|
|
29569
|
+
actionTypeLabelKeys = {
|
|
29570
|
+
measure: "violationAlert.actionType.measure",
|
|
29571
|
+
admin: "violationAlert.actionType.admin",
|
|
29572
|
+
penalty: "violationAlert.actionType.penalty"
|
|
29265
29573
|
};
|
|
29266
29574
|
actionTypeIcons = {
|
|
29267
29575
|
measure: "alert-triangle",
|
|
@@ -29278,10 +29586,11 @@ var init_ViolationAlert = __esm({
|
|
|
29278
29586
|
className,
|
|
29279
29587
|
...flatProps
|
|
29280
29588
|
}) => {
|
|
29589
|
+
const { t } = useTranslate();
|
|
29281
29590
|
const resolvedViolation = violation ?? {
|
|
29282
29591
|
law: "",
|
|
29283
29592
|
article: "",
|
|
29284
|
-
message: flatProps.message ?? "
|
|
29593
|
+
message: flatProps.message ?? t("violationAlert.fallbackMessage"),
|
|
29285
29594
|
actionType: "measure"
|
|
29286
29595
|
};
|
|
29287
29596
|
const effectiveSeverity = severity ?? (resolvedViolation.actionType === "measure" ? "warning" : "error");
|
|
@@ -29366,7 +29675,7 @@ var init_ViolationAlert = __esm({
|
|
|
29366
29675
|
{
|
|
29367
29676
|
variant: "caption",
|
|
29368
29677
|
className: cn(textColor, "opacity-75"),
|
|
29369
|
-
children:
|
|
29678
|
+
children: t(actionTypeLabelKeys[resolvedViolation.actionType])
|
|
29370
29679
|
}
|
|
29371
29680
|
)
|
|
29372
29681
|
] })
|
|
@@ -29397,7 +29706,7 @@ var init_ViolationAlert = __esm({
|
|
|
29397
29706
|
{
|
|
29398
29707
|
variant: "caption",
|
|
29399
29708
|
className: cn(textColor, "opacity-75"),
|
|
29400
|
-
children: "
|
|
29709
|
+
children: t("violationAlert.adminLabel")
|
|
29401
29710
|
}
|
|
29402
29711
|
),
|
|
29403
29712
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -29416,7 +29725,7 @@ var init_ViolationAlert = __esm({
|
|
|
29416
29725
|
{
|
|
29417
29726
|
variant: "caption",
|
|
29418
29727
|
className: cn(textColor, "opacity-75"),
|
|
29419
|
-
children: "
|
|
29728
|
+
children: t("violationAlert.penaltyLabel")
|
|
29420
29729
|
}
|
|
29421
29730
|
),
|
|
29422
29731
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -29441,7 +29750,7 @@ var init_ViolationAlert = __esm({
|
|
|
29441
29750
|
className: cn(textColor, "self-start"),
|
|
29442
29751
|
children: [
|
|
29443
29752
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "arrow-right", size: "sm", className: "mr-1" }),
|
|
29444
|
-
"
|
|
29753
|
+
t("violationAlert.goToField")
|
|
29445
29754
|
]
|
|
29446
29755
|
}
|
|
29447
29756
|
)
|
|
@@ -29757,6 +30066,7 @@ var init_LineChart = __esm({
|
|
|
29757
30066
|
"use client";
|
|
29758
30067
|
init_cn();
|
|
29759
30068
|
init_atoms2();
|
|
30069
|
+
init_useTranslate();
|
|
29760
30070
|
LineChart2 = ({
|
|
29761
30071
|
data,
|
|
29762
30072
|
width = 400,
|
|
@@ -29768,6 +30078,7 @@ var init_LineChart = __esm({
|
|
|
29768
30078
|
areaColor = "var(--color-primary)",
|
|
29769
30079
|
className
|
|
29770
30080
|
}) => {
|
|
30081
|
+
const { t } = useTranslate();
|
|
29771
30082
|
const gradientId = React97.useId();
|
|
29772
30083
|
const safeData = data ?? [];
|
|
29773
30084
|
const sortedData = React97.useMemo(() => {
|
|
@@ -29804,7 +30115,7 @@ var init_LineChart = __esm({
|
|
|
29804
30115
|
return `${linePath} L ${last.x} ${bottom} L ${first.x} ${bottom} Z`;
|
|
29805
30116
|
}, [linePath, points, height, showArea]);
|
|
29806
30117
|
if (safeData.length === 0) {
|
|
29807
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("flex items-center justify-center text-muted-foreground", className), style: { width, height }, children: "
|
|
30118
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("flex items-center justify-center text-muted-foreground", className), style: { width, height }, children: t("empty.noData") });
|
|
29808
30119
|
}
|
|
29809
30120
|
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn(className), children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
29810
30121
|
"svg",
|
|
@@ -31711,6 +32022,7 @@ var init_GraphView = __esm({
|
|
|
31711
32022
|
"use client";
|
|
31712
32023
|
init_cn();
|
|
31713
32024
|
init_atoms2();
|
|
32025
|
+
init_useTranslate();
|
|
31714
32026
|
GROUP_COLORS = [
|
|
31715
32027
|
"#3b82f6",
|
|
31716
32028
|
// blue-500
|
|
@@ -31743,6 +32055,7 @@ var init_GraphView = __esm({
|
|
|
31743
32055
|
showLabels = true,
|
|
31744
32056
|
zoomToFit = true
|
|
31745
32057
|
}) => {
|
|
32058
|
+
const { t } = useTranslate();
|
|
31746
32059
|
const containerRef = React97.useRef(null);
|
|
31747
32060
|
const animRef = React97.useRef(0);
|
|
31748
32061
|
const [simNodes, setSimNodes] = React97.useState([]);
|
|
@@ -31920,7 +32233,7 @@ var init_GraphView = __esm({
|
|
|
31920
32233
|
[onNodeClick]
|
|
31921
32234
|
);
|
|
31922
32235
|
if (nodes.length === 0) {
|
|
31923
|
-
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: "
|
|
32236
|
+
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") }) });
|
|
31924
32237
|
}
|
|
31925
32238
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
31926
32239
|
Box,
|
|
@@ -32376,11 +32689,12 @@ var init_UploadDropZone = __esm({
|
|
|
32376
32689
|
init_Icon();
|
|
32377
32690
|
init_Typography();
|
|
32378
32691
|
init_useEventBus();
|
|
32692
|
+
init_useTranslate();
|
|
32379
32693
|
UploadDropZone = ({
|
|
32380
32694
|
accept,
|
|
32381
32695
|
maxSize,
|
|
32382
32696
|
maxFiles = 1,
|
|
32383
|
-
label
|
|
32697
|
+
label,
|
|
32384
32698
|
description,
|
|
32385
32699
|
disabled = false,
|
|
32386
32700
|
action,
|
|
@@ -32388,22 +32702,24 @@ var init_UploadDropZone = __esm({
|
|
|
32388
32702
|
onFiles,
|
|
32389
32703
|
className
|
|
32390
32704
|
}) => {
|
|
32705
|
+
const { t } = useTranslate();
|
|
32706
|
+
const resolvedLabel = label ?? t("upload.dropOrBrowse");
|
|
32391
32707
|
const [isDragOver, setIsDragOver] = React97.useState(false);
|
|
32392
32708
|
const [error, setError] = React97.useState(null);
|
|
32393
32709
|
const inputRef = React97.useRef(null);
|
|
32394
32710
|
const eventBus = useSafeEventBus7();
|
|
32395
32711
|
const defaultDescription = [
|
|
32396
|
-
accept ?
|
|
32397
|
-
maxSize ?
|
|
32398
|
-
maxFiles > 1 ?
|
|
32712
|
+
accept ? t("upload.accepted", { accept }) : null,
|
|
32713
|
+
maxSize ? t("upload.maxSize", { size: formatFileSize(maxSize) }) : null,
|
|
32714
|
+
maxFiles > 1 ? t("upload.maxFiles", { count: maxFiles }) : null
|
|
32399
32715
|
].filter(Boolean).join(". ");
|
|
32400
32716
|
const validateFiles = React97.useCallback(
|
|
32401
32717
|
(files) => {
|
|
32402
32718
|
if (files.length > maxFiles) {
|
|
32403
|
-
return { valid: [], error:
|
|
32719
|
+
return { valid: [], error: t("upload.error.maxFiles", { count: maxFiles }) };
|
|
32404
32720
|
}
|
|
32405
32721
|
if (accept) {
|
|
32406
|
-
const acceptedTypes = accept.split(",").map((
|
|
32722
|
+
const acceptedTypes = accept.split(",").map((s) => s.trim());
|
|
32407
32723
|
const invalid = files.filter((file) => {
|
|
32408
32724
|
return !acceptedTypes.some((type) => {
|
|
32409
32725
|
if (type.endsWith("/*")) {
|
|
@@ -32413,7 +32729,7 @@ var init_UploadDropZone = __esm({
|
|
|
32413
32729
|
});
|
|
32414
32730
|
});
|
|
32415
32731
|
if (invalid.length > 0) {
|
|
32416
|
-
return { valid: [], error:
|
|
32732
|
+
return { valid: [], error: t("upload.error.invalidType", { name: invalid[0].name }) };
|
|
32417
32733
|
}
|
|
32418
32734
|
}
|
|
32419
32735
|
if (maxSize) {
|
|
@@ -32421,13 +32737,13 @@ var init_UploadDropZone = __esm({
|
|
|
32421
32737
|
if (tooLarge.length > 0) {
|
|
32422
32738
|
return {
|
|
32423
32739
|
valid: [],
|
|
32424
|
-
error:
|
|
32740
|
+
error: t("upload.error.tooLarge", { name: tooLarge[0].name, size: formatFileSize(maxSize) })
|
|
32425
32741
|
};
|
|
32426
32742
|
}
|
|
32427
32743
|
}
|
|
32428
32744
|
return { valid: files, error: null };
|
|
32429
32745
|
},
|
|
32430
|
-
[accept, maxSize, maxFiles]
|
|
32746
|
+
[accept, maxSize, maxFiles, t]
|
|
32431
32747
|
);
|
|
32432
32748
|
const handleFiles = React97.useCallback(
|
|
32433
32749
|
(files) => {
|
|
@@ -32498,7 +32814,7 @@ var init_UploadDropZone = __esm({
|
|
|
32498
32814
|
handleClick();
|
|
32499
32815
|
}
|
|
32500
32816
|
},
|
|
32501
|
-
"aria-label":
|
|
32817
|
+
"aria-label": resolvedLabel,
|
|
32502
32818
|
children: [
|
|
32503
32819
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
32504
32820
|
"input",
|
|
@@ -32514,7 +32830,7 @@ var init_UploadDropZone = __esm({
|
|
|
32514
32830
|
}
|
|
32515
32831
|
),
|
|
32516
32832
|
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" }),
|
|
32517
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body1", className: "text-center font-medium mb-1", children: isDragOver ? "
|
|
32833
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body1", className: "text-center font-medium mb-1", children: isDragOver ? t("upload.dropFilesHere") : resolvedLabel }),
|
|
32518
32834
|
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 })
|
|
32519
32835
|
]
|
|
32520
32836
|
}
|
|
@@ -32936,7 +33252,7 @@ function TableView({
|
|
|
32936
33252
|
{
|
|
32937
33253
|
checked: selected.has(id),
|
|
32938
33254
|
onChange: () => toggleRow(id),
|
|
32939
|
-
"aria-label":
|
|
33255
|
+
"aria-label": t("table.selectRow", { id })
|
|
32940
33256
|
}
|
|
32941
33257
|
) }),
|
|
32942
33258
|
hasRenderProp ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex-1 min-w-0", children: children(row, index) }) : colDefs.map((col) => {
|
|
@@ -35783,7 +36099,7 @@ var init_QrScanner = __esm({
|
|
|
35783
36099
|
className: "inset-0 flex-col items-center justify-center gap-2 bg-black bg-opacity-80 text-center",
|
|
35784
36100
|
children: [
|
|
35785
36101
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "camera", className: "h-8 w-8 text-white", "aria-hidden": "true" }),
|
|
35786
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-white", children: "
|
|
36102
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-white", children: t("qrScanner.cameraUnavailable") }),
|
|
35787
36103
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", className: "text-white opacity-70", children: cameraError.message })
|
|
35788
36104
|
]
|
|
35789
36105
|
}
|
|
@@ -35794,7 +36110,7 @@ var init_QrScanner = __esm({
|
|
|
35794
36110
|
position: "absolute",
|
|
35795
36111
|
display: "flex",
|
|
35796
36112
|
className: "inset-0 items-center justify-center bg-black bg-opacity-60",
|
|
35797
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-white", children: "
|
|
36113
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-white", children: t("qrScanner.paused") })
|
|
35798
36114
|
}
|
|
35799
36115
|
),
|
|
35800
36116
|
showCameraControls && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -35813,7 +36129,7 @@ var init_QrScanner = __esm({
|
|
|
35813
36129
|
"rounded-full bg-black bg-opacity-60 p-2 text-white",
|
|
35814
36130
|
"hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
|
|
35815
36131
|
),
|
|
35816
|
-
"aria-label": isPaused ? "
|
|
36132
|
+
"aria-label": isPaused ? t("qrScanner.resumeScanning") : t("qrScanner.pauseScanning"),
|
|
35817
36133
|
children: isPaused ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "play", className: "h-4 w-4" }) : /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "pause", className: "h-4 w-4" })
|
|
35818
36134
|
}
|
|
35819
36135
|
),
|
|
@@ -35826,7 +36142,7 @@ var init_QrScanner = __esm({
|
|
|
35826
36142
|
"rounded-full bg-black bg-opacity-60 p-2 text-white",
|
|
35827
36143
|
"hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
|
|
35828
36144
|
),
|
|
35829
|
-
"aria-label":
|
|
36145
|
+
"aria-label": currentFacing === "environment" ? t("qrScanner.switchToFrontCamera") : t("qrScanner.switchToRearCamera"),
|
|
35830
36146
|
children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "refresh-cw", className: "h-4 w-4" })
|
|
35831
36147
|
}
|
|
35832
36148
|
),
|
|
@@ -35840,7 +36156,7 @@ var init_QrScanner = __esm({
|
|
|
35840
36156
|
"hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
|
|
35841
36157
|
),
|
|
35842
36158
|
"aria-label": t("aria.mockScanDev"),
|
|
35843
|
-
children: "
|
|
36159
|
+
children: t("qrScanner.mockScan")
|
|
35844
36160
|
}
|
|
35845
36161
|
)
|
|
35846
36162
|
]
|
|
@@ -35858,6 +36174,7 @@ var init_OptionConstraintGroup = __esm({
|
|
|
35858
36174
|
"components/core/molecules/OptionConstraintGroup.tsx"() {
|
|
35859
36175
|
init_cn();
|
|
35860
36176
|
init_useEventBus();
|
|
36177
|
+
init_useTranslate();
|
|
35861
36178
|
init_Typography();
|
|
35862
36179
|
init_Box();
|
|
35863
36180
|
init_Label();
|
|
@@ -35867,36 +36184,36 @@ var init_OptionConstraintGroup = __esm({
|
|
|
35867
36184
|
const sign = delta >= 0 ? "+" : "-";
|
|
35868
36185
|
return `${sign}$${Math.abs(delta).toFixed(2)}`;
|
|
35869
36186
|
};
|
|
35870
|
-
constraintHint = (constraint) => {
|
|
36187
|
+
constraintHint = (constraint, t) => {
|
|
35871
36188
|
if (constraint.type === "single") {
|
|
35872
|
-
return constraint.required ? "
|
|
36189
|
+
return constraint.required ? t("optionConstraint.requiredOne") : t("optionConstraint.optionalOne");
|
|
35873
36190
|
}
|
|
35874
36191
|
const { min, max } = constraint;
|
|
35875
36192
|
if (min && max) {
|
|
35876
|
-
return min === max ?
|
|
36193
|
+
return min === max ? t("optionConstraint.pickExactly", { count: min }) : t("optionConstraint.pickRange", { min, max });
|
|
35877
36194
|
}
|
|
35878
|
-
if (min) return
|
|
35879
|
-
if (max) return
|
|
35880
|
-
return "
|
|
36195
|
+
if (min) return t("optionConstraint.pickAtLeast", { count: min });
|
|
36196
|
+
if (max) return t("optionConstraint.pickUpTo", { count: max });
|
|
36197
|
+
return t("optionConstraint.optional");
|
|
35881
36198
|
};
|
|
35882
|
-
validateSelection = (selected, constraint) => {
|
|
36199
|
+
validateSelection = (selected, constraint, t) => {
|
|
35883
36200
|
if (constraint.type === "single") {
|
|
35884
36201
|
if (constraint.required && selected.length === 0) {
|
|
35885
|
-
return "
|
|
36202
|
+
return t("optionConstraint.error.pickOne");
|
|
35886
36203
|
}
|
|
35887
36204
|
if (selected.length > 1) {
|
|
35888
|
-
return "
|
|
36205
|
+
return t("optionConstraint.error.pickOnlyOne");
|
|
35889
36206
|
}
|
|
35890
36207
|
return void 0;
|
|
35891
36208
|
}
|
|
35892
36209
|
const { min, max } = constraint;
|
|
35893
36210
|
if (min !== void 0 && selected.length < min) {
|
|
35894
36211
|
const remaining = min - selected.length;
|
|
35895
|
-
return
|
|
36212
|
+
return t("optionConstraint.error.pickMore", { count: remaining });
|
|
35896
36213
|
}
|
|
35897
36214
|
if (max !== void 0 && selected.length > max) {
|
|
35898
36215
|
const excess = selected.length - max;
|
|
35899
|
-
return
|
|
36216
|
+
return t("optionConstraint.error.removeOptions", { count: excess });
|
|
35900
36217
|
}
|
|
35901
36218
|
return void 0;
|
|
35902
36219
|
};
|
|
@@ -35913,8 +36230,9 @@ var init_OptionConstraintGroup = __esm({
|
|
|
35913
36230
|
className
|
|
35914
36231
|
}) => {
|
|
35915
36232
|
const eventBus = useEventBus();
|
|
35916
|
-
const
|
|
35917
|
-
const
|
|
36233
|
+
const { t } = useTranslate();
|
|
36234
|
+
const hint = constraintHint(constraint, t);
|
|
36235
|
+
const error = validateSelection(selected, constraint, t);
|
|
35918
36236
|
const inputName = `option-${groupId}`;
|
|
35919
36237
|
const labelTextSize = size === "sm" ? "text-sm" : "text-base";
|
|
35920
36238
|
const optionGap = size === "sm" ? "gap-2" : "gap-2.5";
|
|
@@ -36014,7 +36332,7 @@ var init_OptionConstraintGroup = __esm({
|
|
|
36014
36332
|
variant: "caption",
|
|
36015
36333
|
color: "warning",
|
|
36016
36334
|
className: "rounded border border-warning/40 px-1.5 py-0.5",
|
|
36017
|
-
children: "
|
|
36335
|
+
children: t("optionConstraint.outOfStock")
|
|
36018
36336
|
}
|
|
36019
36337
|
)
|
|
36020
36338
|
]
|
|
@@ -36336,6 +36654,7 @@ function changeBlockType(block, type) {
|
|
|
36336
36654
|
return { id: block.id, type, content: seed };
|
|
36337
36655
|
}
|
|
36338
36656
|
function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
36657
|
+
const { t } = useTranslate();
|
|
36339
36658
|
const [open, setOpen] = React97.useState(false);
|
|
36340
36659
|
const ref = React97.useRef(null);
|
|
36341
36660
|
React97.useEffect(() => {
|
|
@@ -36355,7 +36674,7 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
36355
36674
|
{
|
|
36356
36675
|
type: "button",
|
|
36357
36676
|
variant: "ghost",
|
|
36358
|
-
"aria-label": "
|
|
36677
|
+
"aria-label": t("richBlockEditor.blockActions"),
|
|
36359
36678
|
className: cn(
|
|
36360
36679
|
"inline-flex items-center justify-center",
|
|
36361
36680
|
"h-6 w-6 rounded-sm p-0 gap-0",
|
|
@@ -36377,7 +36696,7 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
36377
36696
|
"py-1 text-sm"
|
|
36378
36697
|
),
|
|
36379
36698
|
children: [
|
|
36380
|
-
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground", children:
|
|
36699
|
+
/* @__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]) }),
|
|
36381
36700
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
36382
36701
|
Button,
|
|
36383
36702
|
{
|
|
@@ -36391,7 +36710,8 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
36391
36710
|
},
|
|
36392
36711
|
children: [
|
|
36393
36712
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "plus", className: "w-3.5 h-3.5" }),
|
|
36394
|
-
"
|
|
36713
|
+
" ",
|
|
36714
|
+
t("richBlockEditor.duplicate")
|
|
36395
36715
|
]
|
|
36396
36716
|
}
|
|
36397
36717
|
),
|
|
@@ -36408,14 +36728,15 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
36408
36728
|
},
|
|
36409
36729
|
children: [
|
|
36410
36730
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "trash", className: "w-3.5 h-3.5" }),
|
|
36411
|
-
"
|
|
36731
|
+
" ",
|
|
36732
|
+
t("common.delete")
|
|
36412
36733
|
]
|
|
36413
36734
|
}
|
|
36414
36735
|
),
|
|
36415
36736
|
CHANGEABLE_TYPES.includes(block.type) && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
36416
36737
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "my-1 border-t border-border" }),
|
|
36417
|
-
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground", children: "
|
|
36418
|
-
CHANGEABLE_TYPES.filter((
|
|
36738
|
+
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground", children: t("richBlockEditor.turnInto") }),
|
|
36739
|
+
CHANGEABLE_TYPES.filter((bt) => bt !== block.type).map((bt) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
36419
36740
|
Button,
|
|
36420
36741
|
{
|
|
36421
36742
|
type: "button",
|
|
@@ -36423,12 +36744,12 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
36423
36744
|
role: "menuitem",
|
|
36424
36745
|
className: "flex w-full items-center gap-2 px-2 py-1.5 text-left justify-start rounded-none",
|
|
36425
36746
|
onClick: () => {
|
|
36426
|
-
onChangeType(
|
|
36747
|
+
onChangeType(bt);
|
|
36427
36748
|
setOpen(false);
|
|
36428
36749
|
},
|
|
36429
|
-
children:
|
|
36750
|
+
children: t(BLOCK_TYPE_LABEL_KEY[bt])
|
|
36430
36751
|
},
|
|
36431
|
-
|
|
36752
|
+
bt
|
|
36432
36753
|
))
|
|
36433
36754
|
] })
|
|
36434
36755
|
]
|
|
@@ -36490,6 +36811,7 @@ function BlockRow({
|
|
|
36490
36811
|
onInsertAfter,
|
|
36491
36812
|
onChangeType
|
|
36492
36813
|
}) {
|
|
36814
|
+
const { t } = useTranslate();
|
|
36493
36815
|
const setContent = React97.useCallback(
|
|
36494
36816
|
(next) => onUpdate((b) => ({ ...b, content: next })),
|
|
36495
36817
|
[onUpdate]
|
|
@@ -36539,8 +36861,8 @@ function BlockRow({
|
|
|
36539
36861
|
tag: "h1",
|
|
36540
36862
|
value: block.content ?? "",
|
|
36541
36863
|
readOnly,
|
|
36542
|
-
placeholder: placeholder ?? "
|
|
36543
|
-
ariaLabel: "
|
|
36864
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.heading1"),
|
|
36865
|
+
ariaLabel: t("richBlockEditor.aria.heading1Block"),
|
|
36544
36866
|
className: "text-3xl font-bold leading-tight",
|
|
36545
36867
|
onValueChange: setContent
|
|
36546
36868
|
}
|
|
@@ -36552,8 +36874,8 @@ function BlockRow({
|
|
|
36552
36874
|
tag: "h2",
|
|
36553
36875
|
value: block.content ?? "",
|
|
36554
36876
|
readOnly,
|
|
36555
|
-
placeholder: placeholder ?? "
|
|
36556
|
-
ariaLabel: "
|
|
36877
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.heading2"),
|
|
36878
|
+
ariaLabel: t("richBlockEditor.aria.heading2Block"),
|
|
36557
36879
|
className: "text-2xl font-semibold leading-tight",
|
|
36558
36880
|
onValueChange: setContent
|
|
36559
36881
|
}
|
|
@@ -36565,8 +36887,8 @@ function BlockRow({
|
|
|
36565
36887
|
tag: "h3",
|
|
36566
36888
|
value: block.content ?? "",
|
|
36567
36889
|
readOnly,
|
|
36568
|
-
placeholder: placeholder ?? "
|
|
36569
|
-
ariaLabel: "
|
|
36890
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.heading3"),
|
|
36891
|
+
ariaLabel: t("richBlockEditor.aria.heading3Block"),
|
|
36570
36892
|
className: "text-xl font-semibold leading-tight",
|
|
36571
36893
|
onValueChange: setContent
|
|
36572
36894
|
}
|
|
@@ -36578,8 +36900,8 @@ function BlockRow({
|
|
|
36578
36900
|
tag: "blockquote",
|
|
36579
36901
|
value: block.content ?? "",
|
|
36580
36902
|
readOnly,
|
|
36581
|
-
placeholder: placeholder ?? "
|
|
36582
|
-
ariaLabel: "
|
|
36903
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.quote"),
|
|
36904
|
+
ariaLabel: t("richBlockEditor.aria.quoteBlock"),
|
|
36583
36905
|
className: "border-l-4 border-primary/60 pl-4 italic text-muted-foreground",
|
|
36584
36906
|
onValueChange: setContent
|
|
36585
36907
|
}
|
|
@@ -36587,13 +36909,13 @@ function BlockRow({
|
|
|
36587
36909
|
case "code":
|
|
36588
36910
|
return /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "rounded-md border border-border bg-muted/40", children: [
|
|
36589
36911
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex items-center justify-between border-b border-border px-3 py-1 text-xs text-muted-foreground", children: [
|
|
36590
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { as: "span", variant: "caption", className: "uppercase tracking-wide", children: "
|
|
36912
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { as: "span", variant: "caption", className: "uppercase tracking-wide", children: t("richBlockEditor.blockType.code") }),
|
|
36591
36913
|
!readOnly && /* @__PURE__ */ jsxRuntime.jsx(
|
|
36592
36914
|
Input,
|
|
36593
36915
|
{
|
|
36594
36916
|
inputType: "text",
|
|
36595
36917
|
value: String(block.metadata?.language ?? "plaintext"),
|
|
36596
|
-
"aria-label": "
|
|
36918
|
+
"aria-label": t("richBlockEditor.aria.codeLanguage"),
|
|
36597
36919
|
className: cn(
|
|
36598
36920
|
"h-6 w-32 rounded-sm border border-border bg-background",
|
|
36599
36921
|
"px-2 text-xs outline-none focus:ring-1 focus:ring-ring"
|
|
@@ -36609,8 +36931,8 @@ function BlockRow({
|
|
|
36609
36931
|
tag: "pre",
|
|
36610
36932
|
value: block.content ?? "",
|
|
36611
36933
|
readOnly,
|
|
36612
|
-
placeholder: placeholder ?? "
|
|
36613
|
-
ariaLabel: "
|
|
36934
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.code"),
|
|
36935
|
+
ariaLabel: t("richBlockEditor.aria.codeBlock"),
|
|
36614
36936
|
className: "block whitespace-pre-wrap p-3 font-mono text-sm leading-relaxed",
|
|
36615
36937
|
onValueChange: setContent
|
|
36616
36938
|
}
|
|
@@ -36623,7 +36945,7 @@ function BlockRow({
|
|
|
36623
36945
|
const caption = String(block.metadata?.caption ?? "");
|
|
36624
36946
|
const imgProps = {
|
|
36625
36947
|
src: url,
|
|
36626
|
-
alt: caption || "
|
|
36948
|
+
alt: caption || t("richBlockEditor.embeddedImage"),
|
|
36627
36949
|
className: "max-h-96 w-full rounded-md border border-border object-contain"
|
|
36628
36950
|
};
|
|
36629
36951
|
return /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "space-y-2", children: [
|
|
@@ -36637,7 +36959,8 @@ function BlockRow({
|
|
|
36637
36959
|
),
|
|
36638
36960
|
children: [
|
|
36639
36961
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "image", className: "mr-2 w-4 h-4" }),
|
|
36640
|
-
"
|
|
36962
|
+
" ",
|
|
36963
|
+
t("richBlockEditor.noImageUrl")
|
|
36641
36964
|
]
|
|
36642
36965
|
}
|
|
36643
36966
|
),
|
|
@@ -36648,7 +36971,7 @@ function BlockRow({
|
|
|
36648
36971
|
inputType: "url",
|
|
36649
36972
|
value: url,
|
|
36650
36973
|
placeholder: "https://example.com/image.png",
|
|
36651
|
-
"aria-label": "
|
|
36974
|
+
"aria-label": t("richBlockEditor.aria.imageUrl"),
|
|
36652
36975
|
className: cn(
|
|
36653
36976
|
"h-8 flex-1 rounded-sm border border-border bg-background",
|
|
36654
36977
|
"px-2 text-sm outline-none focus:ring-1 focus:ring-ring"
|
|
@@ -36661,8 +36984,8 @@ function BlockRow({
|
|
|
36661
36984
|
{
|
|
36662
36985
|
inputType: "text",
|
|
36663
36986
|
value: caption,
|
|
36664
|
-
placeholder: "
|
|
36665
|
-
"aria-label": "
|
|
36987
|
+
placeholder: t("richBlockEditor.placeholder.caption"),
|
|
36988
|
+
"aria-label": t("richBlockEditor.aria.imageCaption"),
|
|
36666
36989
|
className: cn(
|
|
36667
36990
|
"h-8 flex-1 rounded-sm border border-border bg-background",
|
|
36668
36991
|
"px-2 text-sm outline-none focus:ring-1 focus:ring-ring"
|
|
@@ -36693,8 +37016,8 @@ function BlockRow({
|
|
|
36693
37016
|
tag: "span",
|
|
36694
37017
|
value: child.content ?? "",
|
|
36695
37018
|
readOnly,
|
|
36696
|
-
placeholder: "
|
|
36697
|
-
ariaLabel: "
|
|
37019
|
+
placeholder: t("richBlockEditor.placeholder.listItem"),
|
|
37020
|
+
ariaLabel: t("richBlockEditor.aria.listItem"),
|
|
36698
37021
|
className: "inline-block min-w-[1ch] flex-1",
|
|
36699
37022
|
onValueChange: (next) => setChildContent(child.id, next)
|
|
36700
37023
|
}
|
|
@@ -36704,7 +37027,7 @@ function BlockRow({
|
|
|
36704
37027
|
{
|
|
36705
37028
|
type: "button",
|
|
36706
37029
|
variant: "ghost",
|
|
36707
|
-
"aria-label": "
|
|
37030
|
+
"aria-label": t("richBlockEditor.aria.removeListItem"),
|
|
36708
37031
|
className: cn(
|
|
36709
37032
|
"h-5 w-5 shrink-0 rounded-sm text-muted-foreground p-0 gap-0",
|
|
36710
37033
|
"opacity-0 group-hover/item:opacity-100 hover:bg-muted hover:text-foreground"
|
|
@@ -36726,7 +37049,8 @@ function BlockRow({
|
|
|
36726
37049
|
onClick: addListItem,
|
|
36727
37050
|
children: [
|
|
36728
37051
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "plus", className: "w-3 h-3" }),
|
|
36729
|
-
"
|
|
37052
|
+
" ",
|
|
37053
|
+
t("richBlockEditor.addItem")
|
|
36730
37054
|
]
|
|
36731
37055
|
}
|
|
36732
37056
|
) })
|
|
@@ -36742,8 +37066,8 @@ function BlockRow({
|
|
|
36742
37066
|
tag: "p",
|
|
36743
37067
|
value: block.content ?? "",
|
|
36744
37068
|
readOnly,
|
|
36745
|
-
placeholder: placeholder ?? "
|
|
36746
|
-
ariaLabel: "
|
|
37069
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.paragraph"),
|
|
37070
|
+
ariaLabel: t("richBlockEditor.aria.paragraphBlock"),
|
|
36747
37071
|
className: "leading-7",
|
|
36748
37072
|
onValueChange: setContent
|
|
36749
37073
|
}
|
|
@@ -36766,7 +37090,7 @@ function BlockRow({
|
|
|
36766
37090
|
{
|
|
36767
37091
|
type: "button",
|
|
36768
37092
|
variant: "ghost",
|
|
36769
|
-
"aria-label": "
|
|
37093
|
+
"aria-label": t("richBlockEditor.insertParagraphBelow"),
|
|
36770
37094
|
className: cn(
|
|
36771
37095
|
"inline-flex h-6 w-6 items-center justify-center rounded-sm p-0 gap-0",
|
|
36772
37096
|
"text-muted-foreground hover:bg-muted hover:text-foreground",
|
|
@@ -36793,7 +37117,7 @@ function BlockRow({
|
|
|
36793
37117
|
}
|
|
36794
37118
|
);
|
|
36795
37119
|
}
|
|
36796
|
-
var TOOLBAR_ENTRIES,
|
|
37120
|
+
var TOOLBAR_ENTRIES, BLOCK_TYPE_LABEL_KEY, CHANGEABLE_TYPES, _idSeq, BLOCK_TYPES, RichBlockEditor;
|
|
36797
37121
|
var init_RichBlockEditor = __esm({
|
|
36798
37122
|
"components/core/molecules/RichBlockEditor.tsx"() {
|
|
36799
37123
|
"use client";
|
|
@@ -36806,29 +37130,30 @@ var init_RichBlockEditor = __esm({
|
|
|
36806
37130
|
init_Input();
|
|
36807
37131
|
init_Icon();
|
|
36808
37132
|
init_useEventBus();
|
|
37133
|
+
init_useTranslate();
|
|
36809
37134
|
TOOLBAR_ENTRIES = [
|
|
36810
|
-
{ type: "paragraph",
|
|
36811
|
-
{ type: "heading-1",
|
|
36812
|
-
{ type: "heading-2",
|
|
36813
|
-
{ type: "heading-3",
|
|
36814
|
-
{ type: "bullet-list",
|
|
36815
|
-
{ type: "numbered-list",
|
|
36816
|
-
{ type: "quote",
|
|
36817
|
-
{ type: "code",
|
|
36818
|
-
{ type: "divider",
|
|
36819
|
-
{ type: "image",
|
|
37135
|
+
{ type: "paragraph", labelKey: "richBlockEditor.toolbar.text", icon: LucideIcons2.Type },
|
|
37136
|
+
{ type: "heading-1", labelKey: "richBlockEditor.toolbar.h1", icon: LucideIcons2.Heading1 },
|
|
37137
|
+
{ type: "heading-2", labelKey: "richBlockEditor.toolbar.h2", icon: LucideIcons2.Heading2 },
|
|
37138
|
+
{ type: "heading-3", labelKey: "richBlockEditor.toolbar.h3", icon: LucideIcons2.Heading3 },
|
|
37139
|
+
{ type: "bullet-list", labelKey: "richBlockEditor.toolbar.bulletList", icon: LucideIcons2.List },
|
|
37140
|
+
{ type: "numbered-list", labelKey: "richBlockEditor.toolbar.numbered", icon: LucideIcons2.ListOrdered },
|
|
37141
|
+
{ type: "quote", labelKey: "richBlockEditor.toolbar.quote", icon: LucideIcons2.Quote },
|
|
37142
|
+
{ type: "code", labelKey: "richBlockEditor.toolbar.code", icon: LucideIcons2.Code },
|
|
37143
|
+
{ type: "divider", labelKey: "richBlockEditor.toolbar.divider", icon: LucideIcons2.Minus },
|
|
37144
|
+
{ type: "image", labelKey: "richBlockEditor.toolbar.image", icon: LucideIcons2.Image }
|
|
36820
37145
|
];
|
|
36821
|
-
|
|
36822
|
-
paragraph: "
|
|
36823
|
-
"heading-1": "
|
|
36824
|
-
"heading-2": "
|
|
36825
|
-
"heading-3": "
|
|
36826
|
-
"bullet-list": "
|
|
36827
|
-
"numbered-list": "
|
|
36828
|
-
quote: "
|
|
36829
|
-
code: "
|
|
36830
|
-
divider: "
|
|
36831
|
-
image: "
|
|
37146
|
+
BLOCK_TYPE_LABEL_KEY = {
|
|
37147
|
+
paragraph: "richBlockEditor.blockType.paragraph",
|
|
37148
|
+
"heading-1": "richBlockEditor.blockType.heading1",
|
|
37149
|
+
"heading-2": "richBlockEditor.blockType.heading2",
|
|
37150
|
+
"heading-3": "richBlockEditor.blockType.heading3",
|
|
37151
|
+
"bullet-list": "richBlockEditor.blockType.bulletList",
|
|
37152
|
+
"numbered-list": "richBlockEditor.blockType.numberedList",
|
|
37153
|
+
quote: "richBlockEditor.blockType.quote",
|
|
37154
|
+
code: "richBlockEditor.blockType.code",
|
|
37155
|
+
divider: "richBlockEditor.blockType.divider",
|
|
37156
|
+
image: "richBlockEditor.blockType.image"
|
|
36832
37157
|
};
|
|
36833
37158
|
CHANGEABLE_TYPES = [
|
|
36834
37159
|
"paragraph",
|
|
@@ -36862,6 +37187,7 @@ var init_RichBlockEditor = __esm({
|
|
|
36862
37187
|
showToolbar = true,
|
|
36863
37188
|
className
|
|
36864
37189
|
}) => {
|
|
37190
|
+
const { t } = useTranslate();
|
|
36865
37191
|
const [blocks, setBlocks] = React97.useState(
|
|
36866
37192
|
() => normalizeBlocks(initialBlocks)
|
|
36867
37193
|
);
|
|
@@ -36933,25 +37259,26 @@ var init_RichBlockEditor = __esm({
|
|
|
36933
37259
|
Box,
|
|
36934
37260
|
{
|
|
36935
37261
|
role: "toolbar",
|
|
36936
|
-
"aria-label": "
|
|
37262
|
+
"aria-label": t("richBlockEditor.editorToolbar"),
|
|
36937
37263
|
className: cn(
|
|
36938
37264
|
"flex flex-wrap items-center gap-1",
|
|
36939
37265
|
"border-b border-border bg-muted/30 px-2 py-2"
|
|
36940
37266
|
),
|
|
36941
37267
|
children: TOOLBAR_ENTRIES.map((entry) => {
|
|
36942
37268
|
const Icon3 = entry.icon;
|
|
37269
|
+
const entryLabel = t(entry.labelKey);
|
|
36943
37270
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
36944
37271
|
Button,
|
|
36945
37272
|
{
|
|
36946
37273
|
type: "button",
|
|
36947
37274
|
variant: "ghost",
|
|
36948
37275
|
size: "sm",
|
|
36949
|
-
"aria-label":
|
|
36950
|
-
title:
|
|
37276
|
+
"aria-label": t("richBlockEditor.insertEntry", { label: entryLabel }),
|
|
37277
|
+
title: entryLabel,
|
|
36951
37278
|
onClick: () => handleAppend(entry.type),
|
|
36952
37279
|
children: [
|
|
36953
37280
|
/* @__PURE__ */ jsxRuntime.jsx(Icon3, { size: 14 }),
|
|
36954
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { as: "span", variant: "caption", className: "ml-1 hidden text-xs sm:inline", children:
|
|
37281
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { as: "span", variant: "caption", className: "ml-1 hidden text-xs sm:inline", children: entryLabel })
|
|
36955
37282
|
]
|
|
36956
37283
|
},
|
|
36957
37284
|
entry.type
|
|
@@ -36994,6 +37321,7 @@ var init_ReplyTree = __esm({
|
|
|
36994
37321
|
"use client";
|
|
36995
37322
|
init_cn();
|
|
36996
37323
|
init_useEventBus();
|
|
37324
|
+
init_useTranslate();
|
|
36997
37325
|
init_atoms2();
|
|
36998
37326
|
init_VoteStack();
|
|
36999
37327
|
ReplyTreeNode = ({
|
|
@@ -37013,6 +37341,7 @@ var init_ReplyTree = __esm({
|
|
|
37013
37341
|
showActions
|
|
37014
37342
|
}) => {
|
|
37015
37343
|
const eventBus = useEventBus();
|
|
37344
|
+
const { t } = useTranslate();
|
|
37016
37345
|
const hasReplies = !!node.replies && node.replies.length > 0;
|
|
37017
37346
|
const isCollapsed = collapsedSet.has(node.id);
|
|
37018
37347
|
const atMaxDepth = depth >= maxDepth;
|
|
@@ -37059,7 +37388,7 @@ var init_ReplyTree = __esm({
|
|
|
37059
37388
|
variant: "ghost",
|
|
37060
37389
|
size: "sm",
|
|
37061
37390
|
onClick: handleToggle,
|
|
37062
|
-
"aria-label": isCollapsed ? "
|
|
37391
|
+
"aria-label": isCollapsed ? t("replyTree.expandReplies") : t("replyTree.collapseReplies"),
|
|
37063
37392
|
"aria-expanded": !isCollapsed,
|
|
37064
37393
|
leftIcon: isCollapsed ? "chevron-right" : "chevron-down",
|
|
37065
37394
|
className: cn(
|
|
@@ -37100,7 +37429,7 @@ var init_ReplyTree = __esm({
|
|
|
37100
37429
|
onVote: handleVote,
|
|
37101
37430
|
size: "sm",
|
|
37102
37431
|
variant: "horizontal",
|
|
37103
|
-
label:
|
|
37432
|
+
label: t("replyTree.voteOnReplyBy", { author: node.authorName })
|
|
37104
37433
|
}
|
|
37105
37434
|
),
|
|
37106
37435
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -37110,8 +37439,8 @@ var init_ReplyTree = __esm({
|
|
|
37110
37439
|
size: "sm",
|
|
37111
37440
|
leftIcon: "message-square",
|
|
37112
37441
|
onClick: handleReply,
|
|
37113
|
-
"aria-label":
|
|
37114
|
-
children: "
|
|
37442
|
+
"aria-label": t("replyTree.replyTo", { author: node.authorName }),
|
|
37443
|
+
children: t("replyTree.reply")
|
|
37115
37444
|
}
|
|
37116
37445
|
),
|
|
37117
37446
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -37121,8 +37450,8 @@ var init_ReplyTree = __esm({
|
|
|
37121
37450
|
size: "sm",
|
|
37122
37451
|
leftIcon: "flag",
|
|
37123
37452
|
onClick: handleFlag,
|
|
37124
|
-
"aria-label":
|
|
37125
|
-
children: "
|
|
37453
|
+
"aria-label": t("replyTree.flagReplyBy", { author: node.authorName }),
|
|
37454
|
+
children: t("replyTree.flag")
|
|
37126
37455
|
}
|
|
37127
37456
|
)
|
|
37128
37457
|
] }),
|
|
@@ -37133,9 +37462,9 @@ var init_ReplyTree = __esm({
|
|
|
37133
37462
|
inputType: "textarea",
|
|
37134
37463
|
rows: 2,
|
|
37135
37464
|
value: draft,
|
|
37136
|
-
placeholder:
|
|
37465
|
+
placeholder: t("replyTree.replyToPlaceholder", { author: node.authorName }),
|
|
37137
37466
|
onChange: (e) => setDraft(e.target.value),
|
|
37138
|
-
"aria-label":
|
|
37467
|
+
"aria-label": t("replyTree.replyTo", { author: node.authorName })
|
|
37139
37468
|
}
|
|
37140
37469
|
),
|
|
37141
37470
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex flex-row gap-2 items-center", children: [
|
|
@@ -37147,10 +37476,10 @@ var init_ReplyTree = __esm({
|
|
|
37147
37476
|
leftIcon: "send",
|
|
37148
37477
|
onClick: handleSubmitReply,
|
|
37149
37478
|
disabled: !draft.trim(),
|
|
37150
|
-
children: "
|
|
37479
|
+
children: t("replyTree.send")
|
|
37151
37480
|
}
|
|
37152
37481
|
),
|
|
37153
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", onClick: handleCancelReply, children: "
|
|
37482
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", onClick: handleCancelReply, children: t("common.cancel") })
|
|
37154
37483
|
] })
|
|
37155
37484
|
] }),
|
|
37156
37485
|
hasReplies && !isCollapsed && (atMaxDepth ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -37164,7 +37493,7 @@ var init_ReplyTree = __esm({
|
|
|
37164
37493
|
"self-start gap-1 px-0 h-auto",
|
|
37165
37494
|
"text-sm text-primary hover:underline hover:bg-transparent"
|
|
37166
37495
|
),
|
|
37167
|
-
children: "
|
|
37496
|
+
children: t("replyTree.continueThread")
|
|
37168
37497
|
}
|
|
37169
37498
|
) : /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex flex-col gap-2 mt-1", children: node.replies.map((child) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
37170
37499
|
ReplyTreeNode,
|
|
@@ -37203,6 +37532,7 @@ var init_ReplyTree = __esm({
|
|
|
37203
37532
|
showActions = true,
|
|
37204
37533
|
className
|
|
37205
37534
|
}) => {
|
|
37535
|
+
const { t } = useTranslate();
|
|
37206
37536
|
const nodeList = Array.isArray(nodes) ? nodes : nodes ? [nodes] : [];
|
|
37207
37537
|
const [collapsedSet, setCollapsedSet] = React97.useState(() => {
|
|
37208
37538
|
const acc = /* @__PURE__ */ new Set();
|
|
@@ -37221,7 +37551,7 @@ var init_ReplyTree = __esm({
|
|
|
37221
37551
|
});
|
|
37222
37552
|
}, []);
|
|
37223
37553
|
if (nodeList.length === 0) {
|
|
37224
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("text-sm text-muted-foreground", className), children: "
|
|
37554
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("text-sm text-muted-foreground", className), children: t("replyTree.noRepliesYet") });
|
|
37225
37555
|
}
|
|
37226
37556
|
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("flex flex-col gap-2 min-w-0", className), children: nodeList.map((node) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
37227
37557
|
ReplyTreeNode,
|
|
@@ -37299,6 +37629,7 @@ var init_VersionDiff = __esm({
|
|
|
37299
37629
|
"use client";
|
|
37300
37630
|
init_cn();
|
|
37301
37631
|
init_useEventBus();
|
|
37632
|
+
init_useTranslate();
|
|
37302
37633
|
init_atoms2();
|
|
37303
37634
|
init_Stack();
|
|
37304
37635
|
INLINE_STYLES = {
|
|
@@ -37321,6 +37652,7 @@ var init_VersionDiff = __esm({
|
|
|
37321
37652
|
language,
|
|
37322
37653
|
className
|
|
37323
37654
|
}) => {
|
|
37655
|
+
const { t } = useTranslate();
|
|
37324
37656
|
const eventBus = useEventBus();
|
|
37325
37657
|
const revisions = Array.isArray(revisionsProp) ? revisionsProp : [];
|
|
37326
37658
|
const fallbackBefore = revisions[0]?.id ?? "";
|
|
@@ -37402,24 +37734,24 @@ var init_VersionDiff = __esm({
|
|
|
37402
37734
|
children: [
|
|
37403
37735
|
/* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", align: "center", className: "flex-wrap", children: [
|
|
37404
37736
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "git-commit", size: "sm", className: "text-muted-foreground" }),
|
|
37405
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "whitespace-nowrap", children: "
|
|
37737
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "whitespace-nowrap", children: t("versionDiff.compare") }),
|
|
37406
37738
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "min-w-0 md:min-w-[160px]", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
37407
37739
|
Select,
|
|
37408
37740
|
{
|
|
37409
37741
|
options,
|
|
37410
37742
|
value: activeBeforeId,
|
|
37411
37743
|
onChange: handleBeforeChange,
|
|
37412
|
-
"aria-label": "
|
|
37744
|
+
"aria-label": t("versionDiff.beforeRevision")
|
|
37413
37745
|
}
|
|
37414
37746
|
) }),
|
|
37415
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "secondary", children: "to" }),
|
|
37747
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "secondary", children: t("versionDiff.to") }),
|
|
37416
37748
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "min-w-0 md:min-w-[160px]", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
37417
37749
|
Select,
|
|
37418
37750
|
{
|
|
37419
37751
|
options,
|
|
37420
37752
|
value: activeAfterId,
|
|
37421
37753
|
onChange: handleAfterChange,
|
|
37422
|
-
"aria-label": "
|
|
37754
|
+
"aria-label": t("versionDiff.afterRevision")
|
|
37423
37755
|
}
|
|
37424
37756
|
) }),
|
|
37425
37757
|
language && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "default", children: language }),
|
|
@@ -37440,7 +37772,7 @@ var init_VersionDiff = __esm({
|
|
|
37440
37772
|
size: "sm",
|
|
37441
37773
|
icon: activeView === "side-by-side" ? "align-left" : "columns",
|
|
37442
37774
|
onClick: handleViewToggle,
|
|
37443
|
-
"aria-label": activeView === "side-by-side" ? "
|
|
37775
|
+
"aria-label": activeView === "side-by-side" ? t("versionDiff.switchToInline") : t("versionDiff.switchToSideBySide")
|
|
37444
37776
|
}
|
|
37445
37777
|
),
|
|
37446
37778
|
(onRevert || revertEvent) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -37450,7 +37782,7 @@ var init_VersionDiff = __esm({
|
|
|
37450
37782
|
size: "sm",
|
|
37451
37783
|
icon: "rotate-ccw",
|
|
37452
37784
|
onClick: handleRevert,
|
|
37453
|
-
children: "
|
|
37785
|
+
children: t("versionDiff.revert")
|
|
37454
37786
|
}
|
|
37455
37787
|
)
|
|
37456
37788
|
] })
|
|
@@ -37467,12 +37799,12 @@ var init_VersionDiff = __esm({
|
|
|
37467
37799
|
children: [
|
|
37468
37800
|
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "caption", color: "secondary", className: "truncate", children: [
|
|
37469
37801
|
beforeRev?.label,
|
|
37470
|
-
beforeRev?.author ?
|
|
37802
|
+
beforeRev?.author ? t("versionDiff.byAuthor", { author: beforeRev.author }) : "",
|
|
37471
37803
|
beforeRev?.timestamp ? ` (${beforeRev.timestamp})` : ""
|
|
37472
37804
|
] }),
|
|
37473
37805
|
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "caption", color: "secondary", className: "truncate", children: [
|
|
37474
37806
|
afterRev?.label,
|
|
37475
|
-
afterRev?.author ?
|
|
37807
|
+
afterRev?.author ? t("versionDiff.byAuthor", { author: afterRev.author }) : "",
|
|
37476
37808
|
afterRev?.timestamp ? ` (${afterRev.timestamp})` : ""
|
|
37477
37809
|
] })
|
|
37478
37810
|
]
|
|
@@ -37865,10 +38197,12 @@ var init_DocPagination = __esm({
|
|
|
37865
38197
|
}
|
|
37866
38198
|
});
|
|
37867
38199
|
function DocSearch({
|
|
37868
|
-
placeholder
|
|
38200
|
+
placeholder,
|
|
37869
38201
|
onSearch,
|
|
37870
38202
|
className
|
|
37871
38203
|
}) {
|
|
38204
|
+
const { t } = useTranslate();
|
|
38205
|
+
const resolvedPlaceholder = placeholder ?? t("docSearch.placeholder");
|
|
37872
38206
|
const [query, setQuery] = React97.useState("");
|
|
37873
38207
|
const [results, setResults] = React97.useState([]);
|
|
37874
38208
|
const [isOpen, setIsOpen] = React97.useState(false);
|
|
@@ -37975,7 +38309,7 @@ function DocSearch({
|
|
|
37975
38309
|
Input,
|
|
37976
38310
|
{
|
|
37977
38311
|
inputType: "search",
|
|
37978
|
-
placeholder,
|
|
38312
|
+
placeholder: resolvedPlaceholder,
|
|
37979
38313
|
value: query,
|
|
37980
38314
|
onChange: handleChange,
|
|
37981
38315
|
onFocus: handleFocus,
|
|
@@ -38040,6 +38374,7 @@ var init_DocSearch = __esm({
|
|
|
38040
38374
|
init_Typography();
|
|
38041
38375
|
init_Icon();
|
|
38042
38376
|
init_Input();
|
|
38377
|
+
init_useTranslate();
|
|
38043
38378
|
}
|
|
38044
38379
|
});
|
|
38045
38380
|
var DocSidebarCategory, DocSidebar;
|
|
@@ -39635,8 +39970,8 @@ var init_SignaturePad = __esm({
|
|
|
39635
39970
|
init_useEventBus();
|
|
39636
39971
|
init_useTranslate();
|
|
39637
39972
|
SignaturePad = ({
|
|
39638
|
-
label
|
|
39639
|
-
helperText
|
|
39973
|
+
label,
|
|
39974
|
+
helperText,
|
|
39640
39975
|
strokeColor,
|
|
39641
39976
|
strokeWidth = 2,
|
|
39642
39977
|
height = 200,
|
|
@@ -39652,6 +39987,8 @@ var init_SignaturePad = __esm({
|
|
|
39652
39987
|
}) => {
|
|
39653
39988
|
const eventBus = useEventBus();
|
|
39654
39989
|
const { t } = useTranslate();
|
|
39990
|
+
const resolvedLabel = label ?? t("signaturePad.label");
|
|
39991
|
+
const resolvedHelperText = helperText ?? t("signaturePad.helperText");
|
|
39655
39992
|
const canvasRef = React97.useRef(null);
|
|
39656
39993
|
const [isDrawing, setIsDrawing] = React97.useState(false);
|
|
39657
39994
|
const [hasSignature, setHasSignature] = React97.useState(!!value);
|
|
@@ -39754,7 +40091,7 @@ var init_SignaturePad = __esm({
|
|
|
39754
40091
|
);
|
|
39755
40092
|
}
|
|
39756
40093
|
return /* @__PURE__ */ jsxRuntime.jsx(Card, { className: cn("p-4", className), children: /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "sm", children: [
|
|
39757
|
-
|
|
40094
|
+
resolvedLabel && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "label", weight: "medium", children: resolvedLabel }),
|
|
39758
40095
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
39759
40096
|
Box,
|
|
39760
40097
|
{
|
|
@@ -39783,7 +40120,7 @@ var init_SignaturePad = __esm({
|
|
|
39783
40120
|
)
|
|
39784
40121
|
}
|
|
39785
40122
|
),
|
|
39786
|
-
|
|
40123
|
+
resolvedHelperText && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "secondary", children: resolvedHelperText }),
|
|
39787
40124
|
!readOnly && /* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", justify: "end", children: [
|
|
39788
40125
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
39789
40126
|
Button,
|
|
@@ -39793,7 +40130,7 @@ var init_SignaturePad = __esm({
|
|
|
39793
40130
|
icon: LucideIcons2.Eraser,
|
|
39794
40131
|
onClick: clearSignature,
|
|
39795
40132
|
disabled: !hasSignature,
|
|
39796
|
-
children: "
|
|
40133
|
+
children: t("signaturePad.clear")
|
|
39797
40134
|
}
|
|
39798
40135
|
),
|
|
39799
40136
|
signEvent && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -39804,7 +40141,7 @@ var init_SignaturePad = __esm({
|
|
|
39804
40141
|
icon: LucideIcons2.Check,
|
|
39805
40142
|
onClick: confirmSignature,
|
|
39806
40143
|
disabled: !hasSignature,
|
|
39807
|
-
children: "
|
|
40144
|
+
children: t("signaturePad.confirm")
|
|
39808
40145
|
}
|
|
39809
40146
|
)
|
|
39810
40147
|
] })
|
|
@@ -44249,6 +44586,7 @@ function MasterDetail({
|
|
|
44249
44586
|
className,
|
|
44250
44587
|
...rest
|
|
44251
44588
|
}) {
|
|
44589
|
+
const { t } = useTranslate();
|
|
44252
44590
|
const loading = externalLoading ?? false;
|
|
44253
44591
|
const isLoading = externalIsLoading ?? false;
|
|
44254
44592
|
const error = externalError ?? null;
|
|
@@ -44261,8 +44599,8 @@ function MasterDetail({
|
|
|
44261
44599
|
isLoading: loading || isLoading,
|
|
44262
44600
|
error,
|
|
44263
44601
|
className,
|
|
44264
|
-
emptyTitle: "
|
|
44265
|
-
emptyDescription: "
|
|
44602
|
+
emptyTitle: t("table.empty.title"),
|
|
44603
|
+
emptyDescription: t("empty.createFirst"),
|
|
44266
44604
|
...rest
|
|
44267
44605
|
}
|
|
44268
44606
|
);
|
|
@@ -44271,6 +44609,7 @@ var init_MasterDetail = __esm({
|
|
|
44271
44609
|
"components/core/organisms/MasterDetail.tsx"() {
|
|
44272
44610
|
"use client";
|
|
44273
44611
|
init_DataTable();
|
|
44612
|
+
init_useTranslate();
|
|
44274
44613
|
MasterDetail.displayName = "MasterDetail";
|
|
44275
44614
|
}
|
|
44276
44615
|
});
|
|
@@ -44279,14 +44618,18 @@ var init_MasterDetailLayout = __esm({
|
|
|
44279
44618
|
"components/core/organisms/layout/MasterDetailLayout.tsx"() {
|
|
44280
44619
|
init_cn();
|
|
44281
44620
|
init_Typography();
|
|
44282
|
-
|
|
44283
|
-
|
|
44284
|
-
{
|
|
44285
|
-
|
|
44286
|
-
|
|
44287
|
-
|
|
44288
|
-
|
|
44289
|
-
|
|
44621
|
+
init_useTranslate();
|
|
44622
|
+
DefaultEmptyDetail = () => {
|
|
44623
|
+
const { t } = useTranslate();
|
|
44624
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center h-full border-2 border-dashed border-border", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
44625
|
+
Typography,
|
|
44626
|
+
{
|
|
44627
|
+
variant: "body2",
|
|
44628
|
+
className: "text-muted-foreground",
|
|
44629
|
+
children: t("masterDetail.selectItem")
|
|
44630
|
+
}
|
|
44631
|
+
) });
|
|
44632
|
+
};
|
|
44290
44633
|
MasterDetailLayout = ({
|
|
44291
44634
|
master,
|
|
44292
44635
|
detail,
|
|
@@ -44413,7 +44756,7 @@ var init_MediaGallery = __esm({
|
|
|
44413
44756
|
{
|
|
44414
44757
|
icon: LucideIcons2.Image,
|
|
44415
44758
|
title: t("display.noMedia"),
|
|
44416
|
-
description: "
|
|
44759
|
+
description: t("mediaGallery.noMediaDescription"),
|
|
44417
44760
|
className
|
|
44418
44761
|
}
|
|
44419
44762
|
);
|
|
@@ -44430,7 +44773,7 @@ var init_MediaGallery = __esm({
|
|
|
44430
44773
|
size: "sm",
|
|
44431
44774
|
icon: LucideIcons2.Upload,
|
|
44432
44775
|
action: "MEDIA_UPLOAD",
|
|
44433
|
-
children: "
|
|
44776
|
+
children: t("mediaGallery.upload")
|
|
44434
44777
|
}
|
|
44435
44778
|
),
|
|
44436
44779
|
actions?.map((action, idx) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -44444,10 +44787,7 @@ var init_MediaGallery = __esm({
|
|
|
44444
44787
|
))
|
|
44445
44788
|
] })
|
|
44446
44789
|
] }),
|
|
44447
|
-
selectable && selectedItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(HStack, { gap: "sm", align: "center", children: /* @__PURE__ */ jsxRuntime.
|
|
44448
|
-
selectedItems.length,
|
|
44449
|
-
" selected"
|
|
44450
|
-
] }) }),
|
|
44790
|
+
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 }) }) }),
|
|
44451
44791
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
44452
44792
|
Box,
|
|
44453
44793
|
{
|
|
@@ -45321,7 +45661,7 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
45321
45661
|
EmptyState,
|
|
45322
45662
|
{
|
|
45323
45663
|
title: t("debug.noActiveTraits"),
|
|
45324
|
-
description: "
|
|
45664
|
+
description: t("debug.traitsMountHint"),
|
|
45325
45665
|
className: "py-8"
|
|
45326
45666
|
}
|
|
45327
45667
|
);
|
|
@@ -45331,14 +45671,11 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
45331
45671
|
header: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 w-full", children: [
|
|
45332
45672
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", weight: "semibold", className: "text-purple-600 dark:text-purple-400", children: trait.name }),
|
|
45333
45673
|
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "success", size: "sm", children: trait.currentState }),
|
|
45334
|
-
/* @__PURE__ */ jsxRuntime.
|
|
45335
|
-
trait.transitionCount,
|
|
45336
|
-
" transitions"
|
|
45337
|
-
] })
|
|
45674
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-500 ml-auto", children: t("debug.transitionsCount", { count: trait.transitionCount }) })
|
|
45338
45675
|
] }),
|
|
45339
45676
|
content: /* @__PURE__ */ jsxRuntime.jsxs(Stack, { gap: "sm", children: [
|
|
45340
45677
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
45341
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: "
|
|
45678
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.states") }),
|
|
45342
45679
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1", children: trait.states.map((state) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
45343
45680
|
Badge,
|
|
45344
45681
|
{
|
|
@@ -45350,7 +45687,7 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
45350
45687
|
)) })
|
|
45351
45688
|
] }),
|
|
45352
45689
|
trait.transitions.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
45353
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: "
|
|
45690
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.transitions") }),
|
|
45354
45691
|
/* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: trait.transitions.map((t2, i) => /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "font-mono", children: [
|
|
45355
45692
|
t2.from,
|
|
45356
45693
|
" \u2192 ",
|
|
@@ -45369,7 +45706,7 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
45369
45706
|
] }, i)) })
|
|
45370
45707
|
] }),
|
|
45371
45708
|
trait.guards.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
45372
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: "
|
|
45709
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.guards") }),
|
|
45373
45710
|
/* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: trait.guards.map((g, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
45374
45711
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", children: g.name }),
|
|
45375
45712
|
/* @__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" })
|
|
@@ -45475,7 +45812,7 @@ function EntitiesTab({ snapshot }) {
|
|
|
45475
45812
|
EmptyState,
|
|
45476
45813
|
{
|
|
45477
45814
|
title: t("debug.noEntityData"),
|
|
45478
|
-
description: "
|
|
45815
|
+
description: t("debug.debugModeHint"),
|
|
45479
45816
|
className: "py-8"
|
|
45480
45817
|
}
|
|
45481
45818
|
);
|
|
@@ -45488,7 +45825,7 @@ function EntitiesTab({ snapshot }) {
|
|
|
45488
45825
|
EmptyState,
|
|
45489
45826
|
{
|
|
45490
45827
|
title: t("debug.noEntities"),
|
|
45491
|
-
description: "
|
|
45828
|
+
description: t("debug.entitiesSpawnHint"),
|
|
45492
45829
|
className: "py-8"
|
|
45493
45830
|
}
|
|
45494
45831
|
);
|
|
@@ -45496,7 +45833,7 @@ function EntitiesTab({ snapshot }) {
|
|
|
45496
45833
|
const singletonItems = singletonEntries.map(([name, data]) => ({
|
|
45497
45834
|
id: `singleton-${name}`,
|
|
45498
45835
|
header: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
45499
|
-
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "primary", size: "sm", children: "
|
|
45836
|
+
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "primary", size: "sm", children: t("debug.singleton") }),
|
|
45500
45837
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", weight: "semibold", className: "text-sky-600 dark:text-sky-400", children: name })
|
|
45501
45838
|
] }),
|
|
45502
45839
|
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) })
|
|
@@ -45514,31 +45851,19 @@ function EntitiesTab({ snapshot }) {
|
|
|
45514
45851
|
}));
|
|
45515
45852
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--entities", children: [
|
|
45516
45853
|
singletonItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4", children: [
|
|
45517
|
-
/* @__PURE__ */ jsxRuntime.
|
|
45518
|
-
"Singletons (",
|
|
45519
|
-
singletonItems.length,
|
|
45520
|
-
")"
|
|
45521
|
-
] }),
|
|
45854
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.singletonsCount", { count: singletonItems.length }) }),
|
|
45522
45855
|
/* @__PURE__ */ jsxRuntime.jsx(Accordion, { items: singletonItems, multiple: true })
|
|
45523
45856
|
] }),
|
|
45524
45857
|
runtimeItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4", children: [
|
|
45525
|
-
/* @__PURE__ */ jsxRuntime.
|
|
45526
|
-
"Runtime (",
|
|
45527
|
-
runtimeEntities.length,
|
|
45528
|
-
")"
|
|
45529
|
-
] }),
|
|
45858
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.runtimeCount", { count: runtimeEntities.length }) }),
|
|
45530
45859
|
/* @__PURE__ */ jsxRuntime.jsx(Accordion, { items: runtimeItems, multiple: true }),
|
|
45531
|
-
runtimeEntities.length > 20 && /* @__PURE__ */ jsxRuntime.
|
|
45532
|
-
"+",
|
|
45533
|
-
runtimeEntities.length - 20,
|
|
45534
|
-
" more entities"
|
|
45535
|
-
] })
|
|
45860
|
+
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 }) })
|
|
45536
45861
|
] }),
|
|
45537
45862
|
persistentEntries.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
45538
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: "
|
|
45863
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.persistent") }),
|
|
45539
45864
|
/* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: persistentEntries.map(([type, info]) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between py-1", children: [
|
|
45540
45865
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", children: type }),
|
|
45541
|
-
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: info.loaded ? "success" : "default", size: "sm", children: info.loaded ?
|
|
45866
|
+
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: info.loaded ? "success" : "default", size: "sm", children: info.loaded ? t("debug.loadedCount", { count: info.count }) : t("debug.notLoaded") })
|
|
45542
45867
|
] }, type)) })
|
|
45543
45868
|
] })
|
|
45544
45869
|
] });
|
|
@@ -45582,7 +45907,7 @@ function EventFlowTab({ events: events2 }) {
|
|
|
45582
45907
|
EmptyState,
|
|
45583
45908
|
{
|
|
45584
45909
|
title: t("debug.noEventsYet"),
|
|
45585
|
-
description: "
|
|
45910
|
+
description: t("debug.eventsExecuteHint"),
|
|
45586
45911
|
className: "py-8"
|
|
45587
45912
|
}
|
|
45588
45913
|
);
|
|
@@ -45593,17 +45918,13 @@ function EventFlowTab({ events: events2 }) {
|
|
|
45593
45918
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--events", children: [
|
|
45594
45919
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 mb-3 flex-wrap", children: [
|
|
45595
45920
|
/* @__PURE__ */ jsxRuntime.jsxs(ButtonGroup, { children: [
|
|
45596
|
-
/* @__PURE__ */ jsxRuntime.
|
|
45921
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
45597
45922
|
Button,
|
|
45598
45923
|
{
|
|
45599
45924
|
size: "sm",
|
|
45600
45925
|
variant: filter === "all" ? "primary" : "secondary",
|
|
45601
45926
|
onClick: () => setFilter("all"),
|
|
45602
|
-
children:
|
|
45603
|
-
"All (",
|
|
45604
|
-
events2.length,
|
|
45605
|
-
")"
|
|
45606
|
-
]
|
|
45927
|
+
children: t("debug.allCount", { count: events2.length })
|
|
45607
45928
|
}
|
|
45608
45929
|
),
|
|
45609
45930
|
eventTypes.map((type) => {
|
|
@@ -45633,7 +45954,7 @@ function EventFlowTab({ events: events2 }) {
|
|
|
45633
45954
|
onChange: (e) => setAutoScroll(e.target.checked)
|
|
45634
45955
|
}
|
|
45635
45956
|
),
|
|
45636
|
-
"
|
|
45957
|
+
t("debug.autoScroll")
|
|
45637
45958
|
] })
|
|
45638
45959
|
] }),
|
|
45639
45960
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -45691,7 +46012,7 @@ function GuardsPanel({ guards }) {
|
|
|
45691
46012
|
EmptyState,
|
|
45692
46013
|
{
|
|
45693
46014
|
title: t("debug.noGuardEvaluations"),
|
|
45694
|
-
description: "
|
|
46015
|
+
description: t("debug.guardEvaluationsHint"),
|
|
45695
46016
|
className: "py-8"
|
|
45696
46017
|
}
|
|
45697
46018
|
);
|
|
@@ -45722,15 +46043,15 @@ function GuardsPanel({ guards }) {
|
|
|
45722
46043
|
] }),
|
|
45723
46044
|
content: /* @__PURE__ */ jsxRuntime.jsxs(Stack, { gap: "sm", children: [
|
|
45724
46045
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
45725
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: "
|
|
46046
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: t("debug.expression") }),
|
|
45726
46047
|
/* @__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 })
|
|
45727
46048
|
] }),
|
|
45728
46049
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
45729
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: "
|
|
46050
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: t("debug.inputs") }),
|
|
45730
46051
|
/* @__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) })
|
|
45731
46052
|
] }),
|
|
45732
46053
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
45733
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: "
|
|
46054
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: t("debug.trait") }),
|
|
45734
46055
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", children: guard.context.traitName })
|
|
45735
46056
|
] })
|
|
45736
46057
|
] })
|
|
@@ -45748,9 +46069,9 @@ function GuardsPanel({ guards }) {
|
|
|
45748
46069
|
] })
|
|
45749
46070
|
] }),
|
|
45750
46071
|
/* @__PURE__ */ jsxRuntime.jsxs(ButtonGroup, { children: [
|
|
45751
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", variant: filter === "all" ? "primary" : "secondary", onClick: () => setFilter("all"), children: "
|
|
45752
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", variant: filter === "passed" ? "primary" : "secondary", onClick: () => setFilter("passed"), children: "
|
|
45753
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", variant: filter === "failed" ? "primary" : "secondary", onClick: () => setFilter("failed"), children: "
|
|
46072
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", variant: filter === "all" ? "primary" : "secondary", onClick: () => setFilter("all"), children: t("debug.filterAll") }),
|
|
46073
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", variant: filter === "passed" ? "primary" : "secondary", onClick: () => setFilter("passed"), children: t("debug.filterPassed") }),
|
|
46074
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", variant: filter === "failed" ? "primary" : "secondary", onClick: () => setFilter("failed"), children: t("debug.filterFailed") })
|
|
45754
46075
|
] })
|
|
45755
46076
|
] }),
|
|
45756
46077
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-80 overflow-y-auto", children: /* @__PURE__ */ jsxRuntime.jsx(Accordion, { items: accordionItems }) })
|
|
@@ -45876,7 +46197,7 @@ function TransitionTimeline({ transitions }) {
|
|
|
45876
46197
|
EmptyState,
|
|
45877
46198
|
{
|
|
45878
46199
|
title: t("debug.noTransitionsRecorded"),
|
|
45879
|
-
description: "
|
|
46200
|
+
description: t("debug.transitionsProcessHint"),
|
|
45880
46201
|
className: "py-8"
|
|
45881
46202
|
}
|
|
45882
46203
|
);
|
|
@@ -45893,10 +46214,7 @@ function TransitionTimeline({ transitions }) {
|
|
|
45893
46214
|
const sorted = [...transitions].reverse();
|
|
45894
46215
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--timeline", children: [
|
|
45895
46216
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between mb-2", children: [
|
|
45896
|
-
/* @__PURE__ */ jsxRuntime.
|
|
45897
|
-
transitions.length,
|
|
45898
|
-
" transitions recorded"
|
|
45899
|
-
] }),
|
|
46217
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-500", children: t("debug.transitionsRecorded", { count: transitions.length }) }),
|
|
45900
46218
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-1 text-xs text-gray-500 cursor-pointer", children: [
|
|
45901
46219
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
45902
46220
|
Checkbox,
|
|
@@ -45905,7 +46223,7 @@ function TransitionTimeline({ transitions }) {
|
|
|
45905
46223
|
onChange: (e) => setAutoScroll(e.target.checked)
|
|
45906
46224
|
}
|
|
45907
46225
|
),
|
|
45908
|
-
"
|
|
46226
|
+
t("debug.autoScroll")
|
|
45909
46227
|
] })
|
|
45910
46228
|
] }),
|
|
45911
46229
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -45948,15 +46266,13 @@ function TransitionTimeline({ transitions }) {
|
|
|
45948
46266
|
variant: trace.guardResult ? "success" : "danger",
|
|
45949
46267
|
size: "sm",
|
|
45950
46268
|
children: [
|
|
45951
|
-
"
|
|
46269
|
+
t("debug.guardLabel"),
|
|
46270
|
+
" ",
|
|
45952
46271
|
trace.guardResult ? "\u2713" : "\u2717"
|
|
45953
46272
|
]
|
|
45954
46273
|
}
|
|
45955
46274
|
),
|
|
45956
|
-
/* @__PURE__ */ jsxRuntime.
|
|
45957
|
-
trace.effects.length,
|
|
45958
|
-
" effects"
|
|
45959
|
-
] })
|
|
46275
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-400 ml-auto", children: t("debug.effectsCount", { count: trace.effects.length }) })
|
|
45960
46276
|
] }),
|
|
45961
46277
|
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: [
|
|
45962
46278
|
/* @__PURE__ */ jsxRuntime.jsx(EffectBadge, { effect }),
|
|
@@ -46005,13 +46321,13 @@ function ServerBridgeTab({ bridge }) {
|
|
|
46005
46321
|
EmptyState,
|
|
46006
46322
|
{
|
|
46007
46323
|
title: t("debug.noBridgeData"),
|
|
46008
|
-
description: "
|
|
46324
|
+
description: t("debug.bridgeInitHint"),
|
|
46009
46325
|
className: "py-8"
|
|
46010
46326
|
}
|
|
46011
46327
|
);
|
|
46012
46328
|
}
|
|
46013
46329
|
const formatTime4 = (ts) => {
|
|
46014
|
-
if (ts === 0) return "
|
|
46330
|
+
if (ts === 0) return t("debug.never");
|
|
46015
46331
|
const d = new Date(ts);
|
|
46016
46332
|
return d.toLocaleTimeString("en-US", {
|
|
46017
46333
|
hour12: false,
|
|
@@ -46024,14 +46340,14 @@ function ServerBridgeTab({ bridge }) {
|
|
|
46024
46340
|
/* @__PURE__ */ jsxRuntime.jsxs(Card, { className: "p-3", children: [
|
|
46025
46341
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 mb-3", children: [
|
|
46026
46342
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: `w-3 h-3 rounded-full ${bridge.connected ? "bg-green-500 animate-pulse" : "bg-red-500"}` }),
|
|
46027
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h6", children: bridge.connected ? "
|
|
46343
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h6", children: bridge.connected ? t("debug.connected") : t("debug.disconnected") })
|
|
46028
46344
|
] }),
|
|
46029
46345
|
/* @__PURE__ */ jsxRuntime.jsxs(Stack, { gap: "xs", children: [
|
|
46030
46346
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
46031
46347
|
StatRow,
|
|
46032
46348
|
{
|
|
46033
46349
|
label: t("debug.status"),
|
|
46034
|
-
value: bridge.connected ? "
|
|
46350
|
+
value: bridge.connected ? t("debug.connected") : t("debug.disconnected"),
|
|
46035
46351
|
variant: bridge.connected ? "success" : "danger"
|
|
46036
46352
|
}
|
|
46037
46353
|
),
|
|
@@ -46059,13 +46375,10 @@ function ServerBridgeTab({ bridge }) {
|
|
|
46059
46375
|
] })
|
|
46060
46376
|
] }),
|
|
46061
46377
|
bridge.lastError && /* @__PURE__ */ jsxRuntime.jsxs(Card, { className: "p-3 border-red-200 dark:border-red-800 bg-red-50 dark:bg-red-950", children: [
|
|
46062
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "semibold", className: "text-red-600 dark:text-red-400 mb-1", children: "
|
|
46378
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "semibold", className: "text-red-600 dark:text-red-400 mb-1", children: t("debug.lastError") }),
|
|
46063
46379
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-red-500 font-mono break-all", children: bridge.lastError })
|
|
46064
46380
|
] }),
|
|
46065
|
-
bridge.connected && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-center py-2", children: /* @__PURE__ */ jsxRuntime.
|
|
46066
|
-
bridge.eventsForwarded + bridge.eventsReceived,
|
|
46067
|
-
" total events processed"
|
|
46068
|
-
] }) })
|
|
46381
|
+
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 }) }) })
|
|
46069
46382
|
] }) });
|
|
46070
46383
|
}
|
|
46071
46384
|
var init_ServerBridgeTab = __esm({
|
|
@@ -46175,7 +46488,7 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
46175
46488
|
EmptyState,
|
|
46176
46489
|
{
|
|
46177
46490
|
title: t("debug.noActiveTraits"),
|
|
46178
|
-
description: "
|
|
46491
|
+
description: t("debug.traitsInitHint"),
|
|
46179
46492
|
className: "py-8"
|
|
46180
46493
|
}
|
|
46181
46494
|
);
|
|
@@ -46192,7 +46505,7 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
46192
46505
|
};
|
|
46193
46506
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--dispatch", children: [
|
|
46194
46507
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3", children: [
|
|
46195
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
46508
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.activeStates") }),
|
|
46196
46509
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1", children: traits2.map((trait) => /* @__PURE__ */ jsxRuntime.jsxs(Badge, { variant: "success", size: "sm", children: [
|
|
46197
46510
|
trait.name,
|
|
46198
46511
|
": ",
|
|
@@ -46200,8 +46513,8 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
46200
46513
|
] }, trait.id)) })
|
|
46201
46514
|
] }),
|
|
46202
46515
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3", children: [
|
|
46203
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
46204
|
-
availableEvents.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-400 italic", children: "
|
|
46516
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.availableEvents") }),
|
|
46517
|
+
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: [
|
|
46205
46518
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
46206
46519
|
Button,
|
|
46207
46520
|
{
|
|
@@ -46213,15 +46526,15 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
46213
46526
|
}
|
|
46214
46527
|
),
|
|
46215
46528
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-500", children: transitions.map((t2) => `${t2.from} -> ${t2.to}`).join(", ") }),
|
|
46216
|
-
transitions.some((
|
|
46529
|
+
transitions.some((tr) => tr.guard) && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "warning", size: "sm", children: t("debug.guarded") })
|
|
46217
46530
|
] }, event)) })
|
|
46218
46531
|
] }),
|
|
46219
46532
|
unavailableEvents.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3", children: [
|
|
46220
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
46533
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.otherEvents") }),
|
|
46221
46534
|
/* @__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)) })
|
|
46222
46535
|
] }),
|
|
46223
46536
|
log16.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
46224
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
46537
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.recentTransitions") }),
|
|
46225
46538
|
/* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: log16.map((entry, i) => /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "font-mono text-xs", children: [
|
|
46226
46539
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-400", children: entry.traitName }),
|
|
46227
46540
|
" ",
|
|
@@ -46252,21 +46565,20 @@ var init_RuntimeDebugger = __esm({
|
|
|
46252
46565
|
}
|
|
46253
46566
|
});
|
|
46254
46567
|
function ServerResponseRow({ sr }) {
|
|
46568
|
+
const { t } = useTranslate();
|
|
46255
46569
|
const entityEntries = Object.entries(sr.dataEntities);
|
|
46256
46570
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ml-4 pl-2 border-l border-purple-500/30 py-0.5 text-xs font-mono", children: [
|
|
46257
46571
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
46258
46572
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: sr.success ? "text-green-600 dark:text-green-400" : "text-red-600 dark:text-red-400", children: [
|
|
46259
46573
|
sr.success ? "\u2713" : "\u2717",
|
|
46260
|
-
"
|
|
46574
|
+
" ",
|
|
46575
|
+
t("debug.server")
|
|
46261
46576
|
] }),
|
|
46262
46577
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-600 dark:text-purple-300", children: sr.orbitalName }),
|
|
46263
|
-
sr.clientEffects > 0 && /* @__PURE__ */ jsxRuntime.
|
|
46264
|
-
sr.clientEffects,
|
|
46265
|
-
" clientEffect",
|
|
46266
|
-
sr.clientEffects !== 1 ? "s" : ""
|
|
46267
|
-
] }),
|
|
46578
|
+
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 }) }),
|
|
46268
46579
|
sr.emittedEvents.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "px-1 rounded bg-blue-500/15 text-blue-300", children: [
|
|
46269
|
-
"
|
|
46580
|
+
t("debug.emitLabel"),
|
|
46581
|
+
" ",
|
|
46270
46582
|
sr.emittedEvents.join(", ")
|
|
46271
46583
|
] }),
|
|
46272
46584
|
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 })
|
|
@@ -46274,13 +46586,12 @@ function ServerResponseRow({ sr }) {
|
|
|
46274
46586
|
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: [
|
|
46275
46587
|
name,
|
|
46276
46588
|
": ",
|
|
46277
|
-
count
|
|
46278
|
-
" row",
|
|
46279
|
-
count !== 1 ? "s" : ""
|
|
46589
|
+
t("debug.rowsCount", { count })
|
|
46280
46590
|
] }, name)) })
|
|
46281
46591
|
] });
|
|
46282
46592
|
}
|
|
46283
46593
|
function TransitionRow({ trace }) {
|
|
46594
|
+
const { t } = useTranslate();
|
|
46284
46595
|
const isServerEntry = !!trace.serverResponse && trace.traitName.startsWith("server:");
|
|
46285
46596
|
const hasFailedEffects = trace.effects.some((e) => e.status === "failed");
|
|
46286
46597
|
if (isServerEntry && trace.serverResponse) {
|
|
@@ -46288,7 +46599,7 @@ function TransitionRow({ trace }) {
|
|
|
46288
46599
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-2 text-xs font-mono", children: [
|
|
46289
46600
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "mt-1.5 w-1.5 h-1.5 rounded-full flex-shrink-0 bg-purple-500" }),
|
|
46290
46601
|
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "warning", size: "sm", className: "flex-shrink-0", children: trace.event }),
|
|
46291
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-600 dark:text-purple-400 flex-shrink-0", children: "
|
|
46602
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-600 dark:text-purple-400 flex-shrink-0", children: t("debug.serverResponse") })
|
|
46292
46603
|
] }),
|
|
46293
46604
|
/* @__PURE__ */ jsxRuntime.jsx(ServerResponseRow, { sr: trace.serverResponse })
|
|
46294
46605
|
] });
|
|
@@ -46329,6 +46640,7 @@ function VerifyModePanel({
|
|
|
46329
46640
|
serverCount,
|
|
46330
46641
|
localCount
|
|
46331
46642
|
}) {
|
|
46643
|
+
const { t } = useTranslate();
|
|
46332
46644
|
const [expanded, setExpanded] = React97__namespace.useState(true);
|
|
46333
46645
|
const scrollRef = React97__namespace.useRef(null);
|
|
46334
46646
|
const prevCountRef = React97__namespace.useRef(0);
|
|
@@ -46359,30 +46671,20 @@ function VerifyModePanel({
|
|
|
46359
46671
|
onClick: () => setExpanded((v) => !v),
|
|
46360
46672
|
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",
|
|
46361
46673
|
"aria-expanded": expanded,
|
|
46362
|
-
"aria-label": expanded ? "
|
|
46674
|
+
"aria-label": expanded ? t("debug.collapseVerificationTimeline") : t("debug.expandVerificationTimeline"),
|
|
46363
46675
|
"data-testid": "debugger-verify-toggle",
|
|
46364
46676
|
children: [
|
|
46365
46677
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground/50 w-3", "aria-hidden": true, children: expanded ? "\u25BE" : "\u25B8" }),
|
|
46366
|
-
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: failedChecks > 0 ? "danger" : "success", size: "sm", children: failedChecks > 0 ?
|
|
46367
|
-
/* @__PURE__ */ jsxRuntime.
|
|
46368
|
-
|
|
46369
|
-
" local"
|
|
46370
|
-
] }),
|
|
46371
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-purple-600 dark:text-purple-400", children: [
|
|
46372
|
-
serverCount,
|
|
46373
|
-
" server"
|
|
46374
|
-
] }),
|
|
46678
|
+
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: failedChecks > 0 ? "danger" : "success", size: "sm", children: failedChecks > 0 ? t("debug.failCount", { count: failedChecks }) : t("debug.ok") }),
|
|
46679
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground/70", children: t("debug.localCount", { count: localCount }) }),
|
|
46680
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-600 dark:text-purple-400", children: t("debug.serverCount", { count: serverCount }) }),
|
|
46375
46681
|
traitStates && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-cyan-600 dark:text-cyan-400 truncate max-w-[400px]", children: traitStates }),
|
|
46376
|
-
!expanded && transitions.length > 0 && /* @__PURE__ */ jsxRuntime.
|
|
46377
|
-
transitions.length,
|
|
46378
|
-
" transition",
|
|
46379
|
-
transitions.length !== 1 ? "s" : ""
|
|
46380
|
-
] })
|
|
46682
|
+
!expanded && transitions.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-auto text-foreground/50", children: t("debug.transitionsCount", { count: transitions.length }) })
|
|
46381
46683
|
]
|
|
46382
46684
|
}
|
|
46383
46685
|
),
|
|
46384
46686
|
expanded && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 flex overflow-hidden", children: [
|
|
46385
|
-
/* @__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: "
|
|
46687
|
+
/* @__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)) }) }) }),
|
|
46386
46688
|
/* @__PURE__ */ jsxRuntime.jsx(WalkMinimap, {})
|
|
46387
46689
|
] })
|
|
46388
46690
|
]
|
|
@@ -46398,6 +46700,7 @@ function RuntimeDebugger({
|
|
|
46398
46700
|
defaultTab,
|
|
46399
46701
|
schema
|
|
46400
46702
|
}) {
|
|
46703
|
+
const { t } = useTranslate();
|
|
46401
46704
|
const [isCollapsed, setIsCollapsed] = React97__namespace.useState(mode === "verify" ? true : defaultCollapsed);
|
|
46402
46705
|
const [isVisible, setIsVisible] = React97__namespace.useState(mode === "inline" || mode === "verify" || isDebugEnabled2());
|
|
46403
46706
|
const debugData = useDebugData();
|
|
@@ -46436,55 +46739,55 @@ function RuntimeDebugger({
|
|
|
46436
46739
|
const tabItems = [
|
|
46437
46740
|
{
|
|
46438
46741
|
id: "dispatch",
|
|
46439
|
-
label: "
|
|
46742
|
+
label: t("debug.tabDispatch"),
|
|
46440
46743
|
badge: debugData.traits.length || void 0,
|
|
46441
46744
|
content: /* @__PURE__ */ jsxRuntime.jsx(EventDispatcherTab, { traits: debugData.traits, schema })
|
|
46442
46745
|
},
|
|
46443
46746
|
{
|
|
46444
46747
|
id: "verify",
|
|
46445
|
-
label: failedChecks > 0 ? "
|
|
46748
|
+
label: failedChecks > 0 ? t("debug.tabVerifyAlert") : t("debug.tabVerify"),
|
|
46446
46749
|
badge: verification.summary.totalChecks || void 0,
|
|
46447
46750
|
content: /* @__PURE__ */ jsxRuntime.jsx(VerificationTab, { checks: verification.checks, summary: verification.summary })
|
|
46448
46751
|
},
|
|
46449
46752
|
{
|
|
46450
46753
|
id: "timeline",
|
|
46451
|
-
label: "
|
|
46754
|
+
label: t("debug.tabTimeline"),
|
|
46452
46755
|
badge: verification.transitions.length || void 0,
|
|
46453
46756
|
content: /* @__PURE__ */ jsxRuntime.jsx(TransitionTimeline, { transitions: verification.transitions })
|
|
46454
46757
|
},
|
|
46455
46758
|
{
|
|
46456
46759
|
id: "bridge",
|
|
46457
|
-
label: "
|
|
46760
|
+
label: t("debug.tabBridge"),
|
|
46458
46761
|
badge: verification.bridge?.connected ? void 0 : 1,
|
|
46459
46762
|
content: /* @__PURE__ */ jsxRuntime.jsx(ServerBridgeTab, { bridge: verification.bridge })
|
|
46460
46763
|
},
|
|
46461
46764
|
{
|
|
46462
46765
|
id: "traits",
|
|
46463
|
-
label: "
|
|
46766
|
+
label: t("debug.tabTraits"),
|
|
46464
46767
|
badge: debugData.traits.length || void 0,
|
|
46465
46768
|
content: /* @__PURE__ */ jsxRuntime.jsx(TraitsTab, { traits: debugData.traits })
|
|
46466
46769
|
},
|
|
46467
46770
|
{
|
|
46468
46771
|
id: "ticks",
|
|
46469
|
-
label: "
|
|
46470
|
-
badge: debugData.ticks.filter((
|
|
46772
|
+
label: t("debug.tabTicks"),
|
|
46773
|
+
badge: debugData.ticks.filter((tick) => tick.active).length || void 0,
|
|
46471
46774
|
content: /* @__PURE__ */ jsxRuntime.jsx(TicksTab, { ticks: debugData.ticks })
|
|
46472
46775
|
},
|
|
46473
46776
|
{
|
|
46474
46777
|
id: "entities",
|
|
46475
|
-
label: "
|
|
46778
|
+
label: t("debug.tabEntities"),
|
|
46476
46779
|
badge: debugData.entitySnapshot?.runtime.length || void 0,
|
|
46477
46780
|
content: /* @__PURE__ */ jsxRuntime.jsx(EntitiesTab, { snapshot: debugData.entitySnapshot })
|
|
46478
46781
|
},
|
|
46479
46782
|
{
|
|
46480
46783
|
id: "events",
|
|
46481
|
-
label: "
|
|
46784
|
+
label: t("debug.tabEvents"),
|
|
46482
46785
|
badge: debugData.events.length > 0 ? debugData.events.length : void 0,
|
|
46483
46786
|
content: /* @__PURE__ */ jsxRuntime.jsx(EventFlowTab, { events: debugData.events })
|
|
46484
46787
|
},
|
|
46485
46788
|
{
|
|
46486
46789
|
id: "guards",
|
|
46487
|
-
label: "
|
|
46790
|
+
label: t("debug.tabGuards"),
|
|
46488
46791
|
badge: debugData.guards.filter((g) => !g.result).length || void 0,
|
|
46489
46792
|
content: /* @__PURE__ */ jsxRuntime.jsx(GuardsPanel, { guards: debugData.guards })
|
|
46490
46793
|
}
|
|
@@ -46512,15 +46815,10 @@ function RuntimeDebugger({
|
|
|
46512
46815
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
46513
46816
|
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "h6", style: { fontSize: "0.75rem" }, children: [
|
|
46514
46817
|
isCollapsed ? "\u25B6" : "\u25BC",
|
|
46515
|
-
"
|
|
46818
|
+
" ",
|
|
46819
|
+
t("debug.debugger")
|
|
46516
46820
|
] }),
|
|
46517
|
-
failedChecks > 0 ? /* @__PURE__ */ jsxRuntime.
|
|
46518
|
-
failedChecks,
|
|
46519
|
-
" failed"
|
|
46520
|
-
] }) : debugData.traits.length > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(Badge, { variant: "success", size: "sm", children: [
|
|
46521
|
-
debugData.traits.length,
|
|
46522
|
-
" traits"
|
|
46523
|
-
] }) : /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "info", size: "sm", children: "Idle" })
|
|
46821
|
+
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") })
|
|
46524
46822
|
] })
|
|
46525
46823
|
}
|
|
46526
46824
|
),
|
|
@@ -46538,9 +46836,9 @@ function RuntimeDebugger({
|
|
|
46538
46836
|
);
|
|
46539
46837
|
}
|
|
46540
46838
|
if (mode === "verify") {
|
|
46541
|
-
const traitStates = debugData.traits.map((
|
|
46542
|
-
const serverEntries = verification.transitions.filter((
|
|
46543
|
-
const localEntries = verification.transitions.filter((
|
|
46839
|
+
const traitStates = debugData.traits.map((t2) => `${t2.name}:${t2.currentState}`).join(" | ");
|
|
46840
|
+
const serverEntries = verification.transitions.filter((t2) => t2.serverResponse);
|
|
46841
|
+
const localEntries = verification.transitions.filter((t2) => !t2.serverResponse);
|
|
46544
46842
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
46545
46843
|
VerifyModePanel,
|
|
46546
46844
|
{
|
|
@@ -46572,7 +46870,7 @@ function RuntimeDebugger({
|
|
|
46572
46870
|
variant: "secondary",
|
|
46573
46871
|
size: "sm",
|
|
46574
46872
|
className: "runtime-debugger__toggle",
|
|
46575
|
-
title: "
|
|
46873
|
+
title: t("debug.openDebugger"),
|
|
46576
46874
|
children: failedChecks > 0 ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "relative", children: [
|
|
46577
46875
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "V" }),
|
|
46578
46876
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute -top-1 -right-2 w-2 h-2 bg-red-500 rounded-full" })
|
|
@@ -46582,11 +46880,8 @@ function RuntimeDebugger({
|
|
|
46582
46880
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "runtime-debugger__header", children: [
|
|
46583
46881
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
46584
46882
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-lg", children: "V" }),
|
|
46585
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h6", children: "
|
|
46586
|
-
failedChecks > 0 ? /* @__PURE__ */ jsxRuntime.
|
|
46587
|
-
failedChecks,
|
|
46588
|
-
" failed"
|
|
46589
|
-
] }) : 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" })
|
|
46883
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h6", children: t("debug.kflowVerifier") }),
|
|
46884
|
+
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") })
|
|
46590
46885
|
] }),
|
|
46591
46886
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
46592
46887
|
Button,
|
|
@@ -46594,7 +46889,7 @@ function RuntimeDebugger({
|
|
|
46594
46889
|
onClick: () => setIsCollapsed(true),
|
|
46595
46890
|
variant: "ghost",
|
|
46596
46891
|
size: "sm",
|
|
46597
|
-
title: "
|
|
46892
|
+
title: t("debug.close"),
|
|
46598
46893
|
children: "x"
|
|
46599
46894
|
}
|
|
46600
46895
|
)
|
|
@@ -46608,7 +46903,7 @@ function RuntimeDebugger({
|
|
|
46608
46903
|
className: "runtime-debugger__tabs"
|
|
46609
46904
|
}
|
|
46610
46905
|
) }),
|
|
46611
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "runtime-debugger__footer", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-foreground/50", children: "
|
|
46906
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "runtime-debugger__footer", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-foreground/50", children: t("debug.toggleHint") }) })
|
|
46612
46907
|
] })
|
|
46613
46908
|
}
|
|
46614
46909
|
);
|
|
@@ -46634,6 +46929,7 @@ var init_RuntimeDebugger2 = __esm({
|
|
|
46634
46929
|
init_TransitionTimeline();
|
|
46635
46930
|
init_ServerBridgeTab();
|
|
46636
46931
|
init_EventDispatcherTab();
|
|
46932
|
+
init_useTranslate();
|
|
46637
46933
|
init_RuntimeDebugger();
|
|
46638
46934
|
RuntimeDebugger.displayName = "RuntimeDebugger";
|
|
46639
46935
|
}
|
|
@@ -47922,7 +48218,7 @@ var init_StatCard = __esm({
|
|
|
47922
48218
|
}
|
|
47923
48219
|
);
|
|
47924
48220
|
}
|
|
47925
|
-
const label = schemaStats?.[0]?.label || labelToUse || "
|
|
48221
|
+
const label = schemaStats?.[0]?.label || labelToUse || t("statCard.defaultLabel");
|
|
47926
48222
|
const normalizedPropValue = Array.isArray(propValue) ? propValue[0] ?? propValue.length : propValue;
|
|
47927
48223
|
const value = schemaStats?.[0]?.value ?? normalizedPropValue ?? 0;
|
|
47928
48224
|
const trendDirection = manualDirection || (calculatedTrend === void 0 || calculatedTrend === 0 ? "neutral" : calculatedTrend > 0 ? "up" : "down");
|
|
@@ -47965,7 +48261,7 @@ var init_StatCard = __esm({
|
|
|
47965
48261
|
]
|
|
47966
48262
|
}
|
|
47967
48263
|
),
|
|
47968
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", color: "secondary", as: "span", children: "
|
|
48264
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", color: "secondary", as: "span", children: t("statCard.vsLastPeriod") })
|
|
47969
48265
|
] }),
|
|
47970
48266
|
subtitle && !calculatedTrend && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", color: "secondary", children: subtitle })
|
|
47971
48267
|
] }),
|
|
@@ -52170,6 +52466,9 @@ var AvlEmitListen = ({
|
|
|
52170
52466
|
] });
|
|
52171
52467
|
};
|
|
52172
52468
|
AvlEmitListen.displayName = "AvlEmitListen";
|
|
52469
|
+
|
|
52470
|
+
// components/avl/molecules/AvlSlotMap.tsx
|
|
52471
|
+
init_useTranslate();
|
|
52173
52472
|
var SLOT_PRESETS = {
|
|
52174
52473
|
header: { x: 10, y: 5, width: 340, height: 35 },
|
|
52175
52474
|
main: { x: 120, y: 50, width: 230, height: 195 },
|
|
@@ -52214,6 +52513,7 @@ var AvlSlotMap = ({
|
|
|
52214
52513
|
color = "var(--color-primary)",
|
|
52215
52514
|
animated = false
|
|
52216
52515
|
}) => {
|
|
52516
|
+
const { t } = useTranslate();
|
|
52217
52517
|
const ox = (600 - pageWidth) / 2;
|
|
52218
52518
|
const oy = (400 - pageHeight) / 2;
|
|
52219
52519
|
let unknownIdx = 0;
|
|
@@ -52264,7 +52564,7 @@ var AvlSlotMap = ({
|
|
|
52264
52564
|
fontSize: 10,
|
|
52265
52565
|
fontFamily: "inherit",
|
|
52266
52566
|
fontWeight: "bold",
|
|
52267
|
-
children: "
|
|
52567
|
+
children: t("avl.pageLayout")
|
|
52268
52568
|
}
|
|
52269
52569
|
),
|
|
52270
52570
|
resolvedSlots.map((slot) => {
|
|
@@ -52313,7 +52613,7 @@ var AvlSlotMap = ({
|
|
|
52313
52613
|
opacity: 0.6,
|
|
52314
52614
|
children: [
|
|
52315
52615
|
slot.name,
|
|
52316
|
-
isOverlay ?
|
|
52616
|
+
isOverlay ? ` ${t("avl.overlaySuffix")}` : ""
|
|
52317
52617
|
]
|
|
52318
52618
|
}
|
|
52319
52619
|
)
|
|
@@ -53245,23 +53545,25 @@ var SystemNode = ({ data }) => {
|
|
|
53245
53545
|
SystemNode.displayName = "SystemNode";
|
|
53246
53546
|
|
|
53247
53547
|
// components/avl/molecules/DetailView.tsx
|
|
53548
|
+
init_useTranslate();
|
|
53248
53549
|
init_AvlState();
|
|
53249
53550
|
init_AvlEffect();
|
|
53250
53551
|
init_types();
|
|
53251
53552
|
var DetailView = ({ data }) => {
|
|
53553
|
+
const { t } = useTranslate();
|
|
53252
53554
|
const traitName = data.traits[0]?.name;
|
|
53253
53555
|
const traitData = traitName ? data.traitDetails[traitName] : void 0;
|
|
53254
53556
|
if (!traitData || traitData.transitions.length === 0) {
|
|
53255
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-lg border-2 border-[var(--color-border)] bg-[var(--color-card)] p-4 text-center text-[var(--color-muted-foreground)] text-sm", children: "
|
|
53557
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-lg border-2 border-[var(--color-border)] bg-[var(--color-card)] p-4 text-center text-[var(--color-muted-foreground)] text-sm", children: t("detailView.noTransitionData") });
|
|
53256
53558
|
}
|
|
53257
53559
|
const transition = traitData.transitions[0];
|
|
53258
53560
|
const fromState = traitData.states.find((s) => s.name === transition.from);
|
|
53259
53561
|
const toState = traitData.states.find((s) => s.name === transition.to);
|
|
53260
53562
|
const transitionCounts = {};
|
|
53261
53563
|
for (const s of traitData.states) transitionCounts[s.name] = 0;
|
|
53262
|
-
for (const
|
|
53263
|
-
transitionCounts[
|
|
53264
|
-
transitionCounts[
|
|
53564
|
+
for (const t2 of traitData.transitions) {
|
|
53565
|
+
transitionCounts[t2.from] = (transitionCounts[t2.from] ?? 0) + 1;
|
|
53566
|
+
transitionCounts[t2.to] = (transitionCounts[t2.to] ?? 0) + 1;
|
|
53265
53567
|
}
|
|
53266
53568
|
const maxTC = Math.max(...Object.values(transitionCounts), 0);
|
|
53267
53569
|
const fromRole = getStateRole(transition.from, fromState?.isInitial, fromState?.isTerminal, transitionCounts[transition.from] ?? 0, maxTC);
|
|
@@ -53278,21 +53580,21 @@ var DetailView = ({ data }) => {
|
|
|
53278
53580
|
] }) }),
|
|
53279
53581
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "px-4 py-3 space-y-3", children: [
|
|
53280
53582
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
53281
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs uppercase tracking-wider text-[var(--color-muted-foreground)] mb-1", children: "
|
|
53583
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs uppercase tracking-wider text-[var(--color-muted-foreground)] mb-1", children: t("avl.trigger") }),
|
|
53282
53584
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5", children: [
|
|
53283
53585
|
/* @__PURE__ */ jsxRuntime.jsx("svg", { width: 16, height: 16, viewBox: "0 0 16 16", children: /* @__PURE__ */ jsxRuntime.jsx(AvlEvent, { x: 8, y: 8, size: 7 }) }),
|
|
53284
53586
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-semibold text-[var(--color-foreground)]", children: transition.event })
|
|
53285
53587
|
] })
|
|
53286
53588
|
] }),
|
|
53287
53589
|
hasGuard && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
53288
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs uppercase tracking-wider text-[var(--color-muted-foreground)] mb-1", children: "
|
|
53590
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs uppercase tracking-wider text-[var(--color-muted-foreground)] mb-1", children: t("avl.guard") }),
|
|
53289
53591
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5", children: [
|
|
53290
53592
|
/* @__PURE__ */ jsxRuntime.jsx("svg", { width: 14, height: 14, viewBox: "0 0 14 14", children: /* @__PURE__ */ jsxRuntime.jsx(AvlGuard, { x: 7, y: 7, size: 6 }) }),
|
|
53291
53593
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-mono text-[var(--color-muted-foreground)] opacity-60", children: typeof transition.guard === "string" ? transition.guard : JSON.stringify(transition.guard) })
|
|
53292
53594
|
] })
|
|
53293
53595
|
] }),
|
|
53294
53596
|
transition.effects.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
53295
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs uppercase tracking-wider text-[var(--color-muted-foreground)] mb-1", children: "
|
|
53597
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs uppercase tracking-wider text-[var(--color-muted-foreground)] mb-1", children: t("avl.effects") }),
|
|
53296
53598
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-1.5", children: transition.effects.map((effect, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-1.5", children: [
|
|
53297
53599
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-xs text-[var(--color-muted-foreground)] w-3 text-right mt-0.5", children: [
|
|
53298
53600
|
i + 1,
|
|
@@ -53328,6 +53630,7 @@ AvlOrbitalNode.displayName = "AvlOrbitalNode";
|
|
|
53328
53630
|
|
|
53329
53631
|
// components/avl/molecules/AvlTransitionEdge.tsx
|
|
53330
53632
|
init_types();
|
|
53633
|
+
init_useTranslate();
|
|
53331
53634
|
var AvlTransitionEdge = ({
|
|
53332
53635
|
id,
|
|
53333
53636
|
sourceX,
|
|
@@ -53340,6 +53643,7 @@ var AvlTransitionEdge = ({
|
|
|
53340
53643
|
markerEnd,
|
|
53341
53644
|
style
|
|
53342
53645
|
}) => {
|
|
53646
|
+
const { t } = useTranslate();
|
|
53343
53647
|
const [path, labelX, labelY] = react.getBezierPath({
|
|
53344
53648
|
sourceX,
|
|
53345
53649
|
sourceY,
|
|
@@ -53371,9 +53675,9 @@ var AvlTransitionEdge = ({
|
|
|
53371
53675
|
className: "absolute pointer-events-all nodrag nopan flex items-center gap-1",
|
|
53372
53676
|
style: { transform: `translate(-50%, -50%) translate(${labelX}px, ${labelY}px)` },
|
|
53373
53677
|
children: [
|
|
53374
|
-
data?.hasGuard && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-3 h-3 rotate-45 border border-amber-500 bg-amber-500/10 shrink-0", title: "
|
|
53678
|
+
data?.hasGuard && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-3 h-3 rotate-45 border border-amber-500 bg-amber-500/10 shrink-0", title: t("avl.guard") }),
|
|
53375
53679
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-2 py-0.5 text-xs font-medium rounded-full bg-[var(--color-card)] border border-[var(--color-border)] text-[var(--color-foreground)] truncate max-w-[160px]", children: data?.event ?? "" }),
|
|
53376
|
-
data?.hasEffects && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-2.5 h-2.5 rounded-full bg-violet-500/80 shrink-0", title: "
|
|
53680
|
+
data?.hasEffects && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-2.5 h-2.5 rounded-full bg-violet-500/80 shrink-0", title: t("avl.effects") })
|
|
53377
53681
|
]
|
|
53378
53682
|
}
|
|
53379
53683
|
) })
|
|
@@ -56694,6 +56998,7 @@ function BrowserPlayground({
|
|
|
56694
56998
|
|
|
56695
56999
|
// components/avl/molecules/OrbPreviewNode.tsx
|
|
56696
57000
|
init_useEventBus();
|
|
57001
|
+
init_useTranslate();
|
|
56697
57002
|
|
|
56698
57003
|
// components/avl/molecules/useCanvasDnd.tsx
|
|
56699
57004
|
init_useEventBus();
|
|
@@ -57181,6 +57486,7 @@ var OrbPreviewNodeInner = (props) => {
|
|
|
57181
57486
|
const screenSize = React97.useContext(ScreenSizeContext);
|
|
57182
57487
|
const preset = SCREEN_SIZE_PRESETS[screenSize];
|
|
57183
57488
|
const { select } = React97.useContext(PatternSelectionContext);
|
|
57489
|
+
const { t } = useTranslate();
|
|
57184
57490
|
const eventBus = useEventBus();
|
|
57185
57491
|
const reactFlow = react.useReactFlow();
|
|
57186
57492
|
const contentRef = React97.useRef(null);
|
|
@@ -57201,7 +57507,7 @@ var OrbPreviewNodeInner = (props) => {
|
|
|
57201
57507
|
const isSuccess = status === "success";
|
|
57202
57508
|
const isError = status === "error";
|
|
57203
57509
|
const label = isImportedGroup ? data.behaviorAlias ?? "" : isExpanded ? `${data.transitionEvent ?? ""}` : data.orbitalName;
|
|
57204
|
-
const sublabel = isImportedGroup ? `${data.behaviorName ?? ""}${typeof data.transitionCount === "number" && data.transitionCount > 1 ? ` \xB7 ${data.transitionCount}
|
|
57510
|
+
const sublabel = isImportedGroup ? `${data.behaviorName ?? ""}${typeof data.transitionCount === "number" && data.transitionCount > 1 ? ` \xB7 ${t("orbPreview.screensCount", { count: data.transitionCount })}` : ""}` : isExpanded ? `${data.fromState ?? ""} \u2192 ${data.toState ?? ""}` : data.entityName ?? "";
|
|
57205
57511
|
const orbitalSchema = React97.useMemo(() => {
|
|
57206
57512
|
const fullSchema = data._fullSchema;
|
|
57207
57513
|
if (!fullSchema) return void 0;
|
|
@@ -57369,7 +57675,7 @@ var OrbPreviewNodeInner = (props) => {
|
|
|
57369
57675
|
color: "var(--color-muted-foreground)",
|
|
57370
57676
|
zIndex: 3
|
|
57371
57677
|
},
|
|
57372
|
-
children: "
|
|
57678
|
+
children: t("orbPreview.previewBadge")
|
|
57373
57679
|
}
|
|
57374
57680
|
),
|
|
57375
57681
|
hovered && !dragActive && !l1IsOver && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -57391,7 +57697,7 @@ var OrbPreviewNodeInner = (props) => {
|
|
|
57391
57697
|
},
|
|
57392
57698
|
children: [
|
|
57393
57699
|
/* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontSize: 12 }, children: "\u279E" }),
|
|
57394
|
-
"
|
|
57700
|
+
t("orbPreview.doubleClickToOpen")
|
|
57395
57701
|
]
|
|
57396
57702
|
}
|
|
57397
57703
|
)
|
|
@@ -57414,7 +57720,7 @@ var OrbPreviewNodeInner = (props) => {
|
|
|
57414
57720
|
color: "var(--color-primary-foreground)",
|
|
57415
57721
|
boxShadow: "var(--shadow-lg)"
|
|
57416
57722
|
},
|
|
57417
|
-
children: "
|
|
57723
|
+
children: t("orbPreview.dropToAddAndOpen")
|
|
57418
57724
|
}
|
|
57419
57725
|
)
|
|
57420
57726
|
}
|
|
@@ -57448,7 +57754,7 @@ var OrbPreviewNodeInner = (props) => {
|
|
|
57448
57754
|
borderTopColor: "transparent",
|
|
57449
57755
|
zIndex: 2
|
|
57450
57756
|
},
|
|
57451
|
-
title: "
|
|
57757
|
+
title: t("orbPreview.dispatching")
|
|
57452
57758
|
}
|
|
57453
57759
|
)
|
|
57454
57760
|
] }),
|
|
@@ -57544,7 +57850,7 @@ var OrbPreviewNodeInner = (props) => {
|
|
|
57544
57850
|
height: "auto"
|
|
57545
57851
|
}
|
|
57546
57852
|
) })
|
|
57547
|
-
) : /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex items-center justify-center", style: { minHeight: preset.minHeight }, children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground", children: "
|
|
57853
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex items-center justify-center", style: { minHeight: preset.minHeight }, children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground", children: t("orbPreview.noPreview") }) })
|
|
57548
57854
|
]
|
|
57549
57855
|
}
|
|
57550
57856
|
),
|
|
@@ -58135,7 +58441,7 @@ function OrbInspector({ node, schema, editable = false, userType = "builder", th
|
|
|
58135
58441
|
const handleRemoveEffect = React97.useCallback((effectIndex) => {
|
|
58136
58442
|
eventBus.emit("UI:REMOVE_EFFECT", { effectIndex });
|
|
58137
58443
|
}, [eventBus]);
|
|
58138
|
-
const headerTitle = selectedPattern ? selectedPattern.patternType : isExpanded ? transitionEvent || "
|
|
58444
|
+
const headerTitle = selectedPattern ? selectedPattern.patternType : isExpanded ? transitionEvent || t("avl.transition") : orbitalName;
|
|
58139
58445
|
return /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex flex-col bg-card border-l border-border h-full w-full sm:w-[340px]", children: [
|
|
58140
58446
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "shrink-0 border-b border-border", children: [
|
|
58141
58447
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex items-center justify-between px-4 py-2", children: [
|
|
@@ -58152,7 +58458,7 @@ function OrbInspector({ node, schema, editable = false, userType = "builder", th
|
|
|
58152
58458
|
{
|
|
58153
58459
|
onClick: onClose,
|
|
58154
58460
|
className: "text-muted-foreground hover:text-foreground text-sm cursor-pointer bg-transparent border-none p-1",
|
|
58155
|
-
"aria-label": "
|
|
58461
|
+
"aria-label": t("common.close"),
|
|
58156
58462
|
children: "\xD7"
|
|
58157
58463
|
}
|
|
58158
58464
|
)
|
|
@@ -58162,7 +58468,7 @@ function OrbInspector({ node, schema, editable = false, userType = "builder", th
|
|
|
58162
58468
|
{
|
|
58163
58469
|
onClick: () => setActiveTab(tab),
|
|
58164
58470
|
className: `pb-2 text-xs font-medium border-b-2 cursor-pointer bg-transparent border-x-0 border-t-0 px-0 capitalize ${activeTab === tab ? "border-[var(--color-primary)] text-foreground" : "border-transparent text-muted-foreground hover:text-foreground"}`,
|
|
58165
|
-
children: tab
|
|
58471
|
+
children: t(`orbInspector.tab.${tab}`)
|
|
58166
58472
|
},
|
|
58167
58473
|
tab
|
|
58168
58474
|
)) })
|
|
@@ -58208,7 +58514,7 @@ function OrbInspector({ node, schema, editable = false, userType = "builder", th
|
|
|
58208
58514
|
/* ── Inspector Tab ── */
|
|
58209
58515
|
/* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
58210
58516
|
selectedPattern && patternDef?.propsSchema && /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "px-4 py-3 border-b border-border/40", children: [
|
|
58211
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs uppercase tracking-wider mb-2", children: t("
|
|
58517
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs uppercase tracking-wider mb-2", children: t("avl.props") }),
|
|
58212
58518
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex flex-col gap-1.5", children: Object.entries(patternDef.propsSchema).slice(0, 12).map(([propName, propSchema]) => {
|
|
58213
58519
|
const ps = propSchema;
|
|
58214
58520
|
const explicitValue = patternConfig ? patternConfig[propName] : void 0;
|
|
@@ -58242,7 +58548,7 @@ function OrbInspector({ node, schema, editable = false, userType = "builder", th
|
|
|
58242
58548
|
}) })
|
|
58243
58549
|
] }),
|
|
58244
58550
|
userType === "architect" && (selectedPattern && isEntityPattern || !selectedPattern && !isExpanded) && entity && /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "px-4 py-3 border-b border-border/40", children: [
|
|
58245
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs uppercase tracking-wider mb-2", children: t("
|
|
58551
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs uppercase tracking-wider mb-2", children: t("avl.entity") }),
|
|
58246
58552
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex items-center gap-2 mb-2", children: [
|
|
58247
58553
|
/* @__PURE__ */ jsxRuntime.jsx("svg", { width: 14, height: 14, children: /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: 7, cy: 7, r: 5, fill: "var(--color-primary)" }) }),
|
|
58248
58554
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "font-semibold text-xs", children: entity.name }),
|
|
@@ -58285,7 +58591,7 @@ function OrbInspector({ node, schema, editable = false, userType = "builder", th
|
|
|
58285
58591
|
] }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
58286
58592
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-xs font-mono flex-1", children: f3.name }),
|
|
58287
58593
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs", children: f3.type }),
|
|
58288
|
-
f3.required && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-primary text-[9px]", children: t("
|
|
58594
|
+
f3.required && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-primary text-[9px]", children: t("orbInspector.required") })
|
|
58289
58595
|
] })
|
|
58290
58596
|
] }, f3.name)) }),
|
|
58291
58597
|
editable && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -58297,13 +58603,13 @@ function OrbInspector({ node, schema, editable = false, userType = "builder", th
|
|
|
58297
58603
|
className: "mt-2 text-xs w-full",
|
|
58298
58604
|
children: [
|
|
58299
58605
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "plus", size: "xs", className: "mr-1" }),
|
|
58300
|
-
t("
|
|
58606
|
+
t("orbInspector.addField")
|
|
58301
58607
|
]
|
|
58302
58608
|
}
|
|
58303
58609
|
)
|
|
58304
58610
|
] }),
|
|
58305
58611
|
editable && !selectedPattern && !isExpanded && node.layer === "Services" && /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "px-4 py-3 border-b border-border/40", children: [
|
|
58306
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs uppercase tracking-wider mb-2", children: t("
|
|
58612
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs uppercase tracking-wider mb-2", children: t("orbInspector.serviceMode") }),
|
|
58307
58613
|
/* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", className: "items-center", children: [
|
|
58308
58614
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
58309
58615
|
Button,
|
|
@@ -58316,7 +58622,7 @@ function OrbInspector({ node, schema, editable = false, userType = "builder", th
|
|
|
58316
58622
|
},
|
|
58317
58623
|
children: [
|
|
58318
58624
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "monitor", size: "xs", className: "mr-1" }),
|
|
58319
|
-
t("
|
|
58625
|
+
t("orbInspector.standalone")
|
|
58320
58626
|
]
|
|
58321
58627
|
}
|
|
58322
58628
|
),
|
|
@@ -58331,25 +58637,22 @@ function OrbInspector({ node, schema, editable = false, userType = "builder", th
|
|
|
58331
58637
|
},
|
|
58332
58638
|
children: [
|
|
58333
58639
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "cpu", size: "xs", className: "mr-1" }),
|
|
58334
|
-
t("
|
|
58640
|
+
t("orbInspector.embedded")
|
|
58335
58641
|
]
|
|
58336
58642
|
}
|
|
58337
58643
|
)
|
|
58338
58644
|
] }),
|
|
58339
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs mt-1", children: hasRenderUi ? t("
|
|
58645
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs mt-1", children: hasRenderUi ? t("orbInspector.rendersOwnUi") : t("orbInspector.headless") })
|
|
58340
58646
|
] }),
|
|
58341
58647
|
!selectedPattern && !isExpanded && traits2.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "px-4 py-3 border-b border-border/40", children: [
|
|
58342
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs uppercase tracking-wider mb-2", children: "
|
|
58343
|
-
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex flex-col gap-1", children: traits2.map((
|
|
58344
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-xs font-semibold", children:
|
|
58345
|
-
/* @__PURE__ */ jsxRuntime.
|
|
58346
|
-
|
|
58347
|
-
" states"
|
|
58348
|
-
] })
|
|
58349
|
-
] }, t2.name)) })
|
|
58648
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs uppercase tracking-wider mb-2", children: t("avl.traits") }),
|
|
58649
|
+
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex flex-col gap-1", children: traits2.map((tr) => /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex items-center gap-2", children: [
|
|
58650
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-xs font-semibold", children: tr.name }),
|
|
58651
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs", children: t("orbInspector.statesCount", { count: tr.stateCount }) })
|
|
58652
|
+
] }, tr.name)) })
|
|
58350
58653
|
] }),
|
|
58351
58654
|
isExpanded && fromState && toState && /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "px-4 py-3 border-b border-border/40", children: [
|
|
58352
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs uppercase tracking-wider mb-2", children: "
|
|
58655
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs uppercase tracking-wider mb-2", children: t("avl.transition") }),
|
|
58353
58656
|
/* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "100%", height: 44, viewBox: "0 0 280 44", children: [
|
|
58354
58657
|
/* @__PURE__ */ jsxRuntime.jsx(exports.AvlState, { x: 8, y: 8, name: fromState, role: getStateRole(fromState), width: 90, height: 26 }),
|
|
58355
58658
|
/* @__PURE__ */ jsxRuntime.jsx("line", { x1: 104, y1: 21, x2: 158, y2: 21, stroke: "#1E293B", strokeWidth: 2, markerEnd: "url(#orb-arrow)" }),
|
|
@@ -58358,7 +58661,7 @@ function OrbInspector({ node, schema, editable = false, userType = "builder", th
|
|
|
58358
58661
|
] }),
|
|
58359
58662
|
traitName && /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "text-muted-foreground text-xs", children: [
|
|
58360
58663
|
traitName,
|
|
58361
|
-
entityName ?
|
|
58664
|
+
entityName ? t("orbInspector.onEntity", { entity: entityName }) : ""
|
|
58362
58665
|
] })
|
|
58363
58666
|
] }),
|
|
58364
58667
|
isExpanded && transitionEvent && /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "px-4 py-2 border-b border-border/40", children: /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex items-center gap-2", children: [
|
|
@@ -58371,7 +58674,7 @@ function OrbInspector({ node, schema, editable = false, userType = "builder", th
|
|
|
58371
58674
|
Input,
|
|
58372
58675
|
{
|
|
58373
58676
|
defaultValue: formatExpression(transition?.guard ?? guard),
|
|
58374
|
-
placeholder: t("
|
|
58677
|
+
placeholder: t("orbInspector.guardExpression"),
|
|
58375
58678
|
className: "flex-1 text-xs font-mono h-6",
|
|
58376
58679
|
onBlur: (e) => handleGuardChange(e.target.value)
|
|
58377
58680
|
}
|
|
@@ -58379,7 +58682,7 @@ function OrbInspector({ node, schema, editable = false, userType = "builder", th
|
|
|
58379
58682
|
] }) }),
|
|
58380
58683
|
userType === "architect" && (effectTypes.length > 0 || editable) && isExpanded && /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "px-4 py-3 border-b border-border/40", children: [
|
|
58381
58684
|
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "text-muted-foreground text-xs uppercase tracking-wider mb-2", children: [
|
|
58382
|
-
t("
|
|
58685
|
+
t("avl.effects"),
|
|
58383
58686
|
" (",
|
|
58384
58687
|
effectTypes.length,
|
|
58385
58688
|
")"
|
|
@@ -58436,7 +58739,7 @@ function AddEffectButton({ onAdd }) {
|
|
|
58436
58739
|
className: "text-xs w-full",
|
|
58437
58740
|
children: [
|
|
58438
58741
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "plus", size: "xs", className: "mr-1" }),
|
|
58439
|
-
t("
|
|
58742
|
+
t("orbInspector.addEffect")
|
|
58440
58743
|
]
|
|
58441
58744
|
}
|
|
58442
58745
|
),
|
|
@@ -58497,7 +58800,7 @@ var PHASE_2_TOKEN_FALLBACK = {
|
|
|
58497
58800
|
function StylesTab({ patternType, patternDef, patternConfig, editable, onPropChange, themeManifest, isDesignSystem }) {
|
|
58498
58801
|
const { t } = useTranslate();
|
|
58499
58802
|
if (!patternType) {
|
|
58500
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "p-4", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs", children: t("
|
|
58803
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "p-4", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs", children: t("orbInspector.selectPatternForStyles") }) });
|
|
58501
58804
|
}
|
|
58502
58805
|
const tier = patternDef?.category ?? "Pattern";
|
|
58503
58806
|
const tokens = PHASE_2_TOKEN_FALLBACK[patternType] ?? [];
|
|
@@ -58518,11 +58821,11 @@ function StylesTab({ patternType, patternDef, patternConfig, editable, onPropCha
|
|
|
58518
58821
|
)
|
|
58519
58822
|
] }),
|
|
58520
58823
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { children: [
|
|
58521
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs uppercase tracking-wider mb-2", children: t("
|
|
58522
|
-
tokens.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs italic", children: t("
|
|
58824
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs uppercase tracking-wider mb-2", children: t("orbInspector.tokens") }),
|
|
58825
|
+
tokens.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs italic", children: t("orbInspector.noTokenContract") }) : /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex flex-col gap-1", children: tokens.map((token) => /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex items-center gap-2", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "font-mono text-xs", children: token }) }, token)) })
|
|
58523
58826
|
] }),
|
|
58524
58827
|
variantEnum && variantEnum.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(Box, { children: [
|
|
58525
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs uppercase tracking-wider mb-2", children: t("
|
|
58828
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs uppercase tracking-wider mb-2", children: t("orbInspector.variant") }),
|
|
58526
58829
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex flex-wrap gap-1", children: variantEnum.map((variant) => {
|
|
58527
58830
|
const isActive = variant === currentVariant || !currentVariant && variant === "default";
|
|
58528
58831
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -58542,7 +58845,7 @@ function StylesTab({ patternType, patternDef, patternConfig, editable, onPropCha
|
|
|
58542
58845
|
}) })
|
|
58543
58846
|
] }),
|
|
58544
58847
|
sizeEnum && sizeEnum.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(Box, { children: [
|
|
58545
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs uppercase tracking-wider mb-2", children: t("
|
|
58848
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs uppercase tracking-wider mb-2", children: t("orbInspector.size") }),
|
|
58546
58849
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex flex-wrap gap-1", children: sizeEnum.map((size) => {
|
|
58547
58850
|
const isActive = size === currentSize || !currentSize && size === "md";
|
|
58548
58851
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -58565,20 +58868,21 @@ function StylesTab({ patternType, patternDef, patternConfig, editable, onPropCha
|
|
|
58565
58868
|
] });
|
|
58566
58869
|
}
|
|
58567
58870
|
var TOKEN_GROUPS = [
|
|
58568
|
-
{ group: "colors",
|
|
58569
|
-
{ group: "radii",
|
|
58570
|
-
{ group: "spacing",
|
|
58571
|
-
{ group: "shadows",
|
|
58871
|
+
{ group: "colors", labelKey: "orbInspector.tokenGroup.colors" },
|
|
58872
|
+
{ group: "radii", labelKey: "orbInspector.tokenGroup.radii" },
|
|
58873
|
+
{ group: "spacing", labelKey: "orbInspector.tokenGroup.spacing" },
|
|
58874
|
+
{ group: "shadows", labelKey: "orbInspector.tokenGroup.shadows" }
|
|
58572
58875
|
];
|
|
58573
58876
|
function TokenEditorSection({ themeManifest, onPropChange }) {
|
|
58877
|
+
const { t } = useTranslate();
|
|
58574
58878
|
const tokens = themeManifest.tokens ?? {};
|
|
58575
58879
|
return /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex flex-col gap-3 pt-2 border-t border-border/40", children: [
|
|
58576
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-xs uppercase tracking-wider text-muted-foreground", children: "
|
|
58577
|
-
TOKEN_GROUPS.map(({ group,
|
|
58880
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-xs uppercase tracking-wider text-muted-foreground", children: t("orbInspector.projectThemeTokens") }),
|
|
58881
|
+
TOKEN_GROUPS.map(({ group, labelKey }) => {
|
|
58578
58882
|
const entries = Object.entries(tokens[group] ?? {});
|
|
58579
58883
|
if (entries.length === 0) return null;
|
|
58580
58884
|
return /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex flex-col gap-1.5", children: [
|
|
58581
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-xs font-mono text-muted-foreground", children:
|
|
58885
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-xs font-mono text-muted-foreground", children: t(labelKey) }),
|
|
58582
58886
|
entries.map(([key, value]) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
58583
58887
|
TokenRow,
|
|
58584
58888
|
{
|
|
@@ -58626,6 +58930,7 @@ init_Typography();
|
|
|
58626
58930
|
init_Badge();
|
|
58627
58931
|
|
|
58628
58932
|
// components/avl/organisms/AvlTraitScene.tsx
|
|
58933
|
+
init_useTranslate();
|
|
58629
58934
|
init_AvlState();
|
|
58630
58935
|
init_AvlTransitionLane();
|
|
58631
58936
|
init_AvlSwimLane();
|
|
@@ -58639,6 +58944,7 @@ var AvlTraitScene = ({
|
|
|
58639
58944
|
color = "var(--color-primary)",
|
|
58640
58945
|
onTransitionClick
|
|
58641
58946
|
}) => {
|
|
58947
|
+
const { t } = useTranslate();
|
|
58642
58948
|
const [layout, setLayout] = React97.useState(null);
|
|
58643
58949
|
const dataKey = React97.useMemo(() => JSON.stringify(data), [data]);
|
|
58644
58950
|
React97.useEffect(() => {
|
|
@@ -58647,7 +58953,7 @@ var AvlTraitScene = ({
|
|
|
58647
58953
|
});
|
|
58648
58954
|
}, [dataKey]);
|
|
58649
58955
|
if (!layout) {
|
|
58650
|
-
return /* @__PURE__ */ jsxRuntime.jsx("g", { children: /* @__PURE__ */ jsxRuntime.jsx("text", { x: 300, y: 200, textAnchor: "middle", fill: color, fontSize: 12, opacity: 0.5, children: "
|
|
58956
|
+
return /* @__PURE__ */ jsxRuntime.jsx("g", { children: /* @__PURE__ */ jsxRuntime.jsx("text", { x: 300, y: 200, textAnchor: "middle", fill: color, fontSize: 12, opacity: 0.5, children: t("avl.computingLayout") }) });
|
|
58651
58957
|
}
|
|
58652
58958
|
const hasExternal = data.listenedEvents.length > 0 || data.emittedEvents.length > 0;
|
|
58653
58959
|
const machineOffsetX = hasExternal ? 0 : 30;
|
|
@@ -58662,10 +58968,7 @@ var AvlTraitScene = ({
|
|
|
58662
58968
|
const machineHeight = scaledH + 100;
|
|
58663
58969
|
const renderMachine = /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
|
|
58664
58970
|
/* @__PURE__ */ jsxRuntime.jsx("text", { x: CENTER_W2 / 2, y: 20, textAnchor: "middle", fill: color, fontSize: 20, fontWeight: "700", fontFamily: "inherit", children: data.name }),
|
|
58665
|
-
/* @__PURE__ */ jsxRuntime.
|
|
58666
|
-
"linked to ",
|
|
58667
|
-
data.linkedEntity
|
|
58668
|
-
] }),
|
|
58971
|
+
/* @__PURE__ */ jsxRuntime.jsx("text", { x: CENTER_W2 / 2, y: 38, textAnchor: "middle", fill: color, fontSize: 11, opacity: 0.5, fontFamily: "inherit", children: t("avl.linkedTo", { entity: data.linkedEntity }) }),
|
|
58669
58972
|
/* @__PURE__ */ jsxRuntime.jsxs("defs", { children: [
|
|
58670
58973
|
/* @__PURE__ */ jsxRuntime.jsx("marker", { id: "traitArrowV2", 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: exports.CONNECTION_COLORS.forward.color, opacity: 0.7 }) }),
|
|
58671
58974
|
/* @__PURE__ */ jsxRuntime.jsx("marker", { id: "traitArrowBack", 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: exports.CONNECTION_COLORS.backward.color, opacity: 0.5 }) })
|
|
@@ -58740,6 +59043,9 @@ var AvlTraitScene = ({
|
|
|
58740
59043
|
);
|
|
58741
59044
|
};
|
|
58742
59045
|
AvlTraitScene.displayName = "AvlTraitScene";
|
|
59046
|
+
|
|
59047
|
+
// components/avl/molecules/TraitCardNode.tsx
|
|
59048
|
+
init_useTranslate();
|
|
58743
59049
|
var TraitCardSelectionContext = React97.createContext({
|
|
58744
59050
|
selectTransition: () => {
|
|
58745
59051
|
}
|
|
@@ -58749,6 +59055,7 @@ var SCENE_WIDTH = 600;
|
|
|
58749
59055
|
var SCENE_HEIGHT = 400;
|
|
58750
59056
|
var TraitCardNodeInner = (props) => {
|
|
58751
59057
|
const data = props.data;
|
|
59058
|
+
const { t } = useTranslate();
|
|
58752
59059
|
const { selectTransition } = React97.useContext(TraitCardSelectionContext);
|
|
58753
59060
|
const orbitalName = data.orbitalName;
|
|
58754
59061
|
const traitName = data.traitName ?? "";
|
|
@@ -58774,7 +59081,7 @@ var TraitCardNodeInner = (props) => {
|
|
|
58774
59081
|
position: react.Position.Left,
|
|
58775
59082
|
id: `listen-${event}`,
|
|
58776
59083
|
style: { top: `${(i + 1) / (listens.length + 1) * 100}%` },
|
|
58777
|
-
"aria-label":
|
|
59084
|
+
"aria-label": t("avl.listensFor", { event })
|
|
58778
59085
|
},
|
|
58779
59086
|
`listen-${event}`
|
|
58780
59087
|
)),
|
|
@@ -58785,7 +59092,7 @@ var TraitCardNodeInner = (props) => {
|
|
|
58785
59092
|
position: react.Position.Right,
|
|
58786
59093
|
id: `emit-${event}`,
|
|
58787
59094
|
style: { top: `${(i + 1) / (emits.length + 1) * 100}%` },
|
|
58788
|
-
"aria-label":
|
|
59095
|
+
"aria-label": t("avl.emits", { event })
|
|
58789
59096
|
},
|
|
58790
59097
|
`emit-${event}`
|
|
58791
59098
|
)),
|
|
@@ -58812,14 +59119,14 @@ var TraitCardNodeInner = (props) => {
|
|
|
58812
59119
|
{
|
|
58813
59120
|
data: traitLevelData,
|
|
58814
59121
|
onTransitionClick: (idx) => {
|
|
58815
|
-
const
|
|
58816
|
-
if (!
|
|
59122
|
+
const t2 = transitions[idx];
|
|
59123
|
+
if (!t2) return;
|
|
58817
59124
|
selectTransition({
|
|
58818
59125
|
orbitalName,
|
|
58819
59126
|
traitName,
|
|
58820
|
-
transitionEvent:
|
|
58821
|
-
fromState:
|
|
58822
|
-
toState:
|
|
59127
|
+
transitionEvent: t2.event,
|
|
59128
|
+
fromState: t2.fromState,
|
|
59129
|
+
toState: t2.toState,
|
|
58823
59130
|
index: idx
|
|
58824
59131
|
});
|
|
58825
59132
|
}
|
|
@@ -58827,7 +59134,7 @@ var TraitCardNodeInner = (props) => {
|
|
|
58827
59134
|
)
|
|
58828
59135
|
}
|
|
58829
59136
|
)
|
|
58830
|
-
) : /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", color: "muted", children: "
|
|
59137
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", color: "muted", children: t("avl.noStateMachine") })
|
|
58831
59138
|
] })
|
|
58832
59139
|
]
|
|
58833
59140
|
}
|
|
@@ -58838,6 +59145,7 @@ TraitCardNode.displayName = "TraitCardNode";
|
|
|
58838
59145
|
|
|
58839
59146
|
// components/avl/organisms/FlowCanvas.tsx
|
|
58840
59147
|
init_useEventBus();
|
|
59148
|
+
init_useTranslate();
|
|
58841
59149
|
var flowCanvasLog = logger.createLogger("almadar:ui:flow-canvas");
|
|
58842
59150
|
var NODE_TYPES = {
|
|
58843
59151
|
preview: OrbPreviewNode,
|
|
@@ -58881,6 +59189,7 @@ function FlowCanvasInner({
|
|
|
58881
59189
|
userType = "builder",
|
|
58882
59190
|
themeManifest
|
|
58883
59191
|
}) {
|
|
59192
|
+
const { t } = useTranslate();
|
|
58884
59193
|
const NODE_TYPES2 = React97.useMemo(() => ({
|
|
58885
59194
|
preview: OrbPreviewNode,
|
|
58886
59195
|
behaviorCompose: BehaviorComposeNode,
|
|
@@ -58933,13 +59242,13 @@ function FlowCanvasInner({
|
|
|
58933
59242
|
}), [selectedPattern]);
|
|
58934
59243
|
const [atBehaviorLevel, setAtBehaviorLevel] = React97.useState(composeLevel === "behavior");
|
|
58935
59244
|
const { composeNodes, composeEdges, overviewNodes, overviewEdges, expandedNodes, expandedEdges, behaviorExpandedNodes, behaviorExpandedEdges, traitExpandedNodes, traitExpandedEdges } = React97.useMemo(() => {
|
|
58936
|
-
const
|
|
59245
|
+
const t2 = perfStart("compose-graph");
|
|
58937
59246
|
const compose = composeLevel === "behavior" && behaviorEntries?.length ? behaviorsToComposeGraph(behaviorEntries, behaviorWires ?? [], layoutHint) : { nodes: [], edges: [] };
|
|
58938
59247
|
const overview = schemaToOverviewGraph(parsedSchema, mockData, behaviorMeta, layoutHint, orbitalStatus, screenSize);
|
|
58939
59248
|
const expanded = expandedOrbital ? orbitalToExpandedGraph(parsedSchema, expandedOrbital, mockData, screenSize) : { nodes: [], edges: [] };
|
|
58940
59249
|
const behaviorExpanded = expandedOrbital && expandedBehaviorAlias ? orbitalAliasToExpandedGraph(parsedSchema, expandedOrbital, expandedBehaviorAlias, mockData, screenSize) : { nodes: [], edges: [] };
|
|
58941
59250
|
const traitExpanded = expandedOrbital ? orbitalToTraitGraph(parsedSchema, expandedOrbital) : { nodes: [], edges: [] };
|
|
58942
|
-
perfEnd("compose-graph",
|
|
59251
|
+
perfEnd("compose-graph", t2, {
|
|
58943
59252
|
composeNodes: compose.nodes.length,
|
|
58944
59253
|
overviewNodes: overview.nodes.length,
|
|
58945
59254
|
expandedNodes: expanded.nodes.length,
|
|
@@ -59192,12 +59501,12 @@ function FlowCanvasInner({
|
|
|
59192
59501
|
{
|
|
59193
59502
|
onClick: handleGoBack,
|
|
59194
59503
|
className: "text-muted-foreground hover:text-foreground text-sm cursor-pointer bg-transparent border-none p-0",
|
|
59195
|
-
"aria-label": "
|
|
59504
|
+
"aria-label": t("canvas.goBackToOverview"),
|
|
59196
59505
|
children: "\u2190"
|
|
59197
59506
|
}
|
|
59198
59507
|
),
|
|
59199
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "font-medium", children: level === "overview" ? "
|
|
59200
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground", children: level === "overview" ?
|
|
59508
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "font-medium", children: level === "overview" ? t("canvas.overview") : expandedOrbital ?? t("canvas.expanded") }),
|
|
59509
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground", children: level === "overview" ? t("canvas.modulesCount", { count: nodes.length }) : t("canvas.screensCount", { count: nodes.length }) })
|
|
59201
59510
|
] }),
|
|
59202
59511
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex items-center gap-1 px-2 py-1 rounded-md bg-card/80 border border-border/40 backdrop-blur-sm", children: screenSizeKeys.map((size) => {
|
|
59203
59512
|
const p2 = SCREEN_SIZE_PRESETS[size];
|
|
@@ -59213,7 +59522,7 @@ function FlowCanvasInner({
|
|
|
59213
59522
|
},
|
|
59214
59523
|
className: `px-2 py-1 text-xs font-medium rounded cursor-pointer border-none transition-colors ${active ? "bg-primary text-primary-foreground" : "bg-transparent text-muted-foreground hover:text-foreground hover:bg-muted/50"}`,
|
|
59215
59524
|
title: `${p2.label} (${p2.width}px)`,
|
|
59216
|
-
"aria-label":
|
|
59525
|
+
"aria-label": t("canvas.switchToView", { label: p2.label }),
|
|
59217
59526
|
children: p2.label
|
|
59218
59527
|
},
|
|
59219
59528
|
size
|
|
@@ -59595,6 +59904,7 @@ init_Stack();
|
|
|
59595
59904
|
init_Typography();
|
|
59596
59905
|
init_Button();
|
|
59597
59906
|
init_Icon();
|
|
59907
|
+
init_useTranslate();
|
|
59598
59908
|
var UNIT_DISPLAY_W = 240;
|
|
59599
59909
|
var UNIT_DISPLAY_H = 160;
|
|
59600
59910
|
function layoutOrbitals(count, containerW, containerH) {
|
|
@@ -59785,6 +60095,7 @@ var AvlOrbitalsCosmicZoom = ({
|
|
|
59785
60095
|
minZoom = 0.4,
|
|
59786
60096
|
maxZoom = 3
|
|
59787
60097
|
}) => {
|
|
60098
|
+
const { t } = useTranslate();
|
|
59788
60099
|
const parsedSchema = React97.useMemo(() => {
|
|
59789
60100
|
if (typeof schemaProp === "string") return JSON.parse(schemaProp);
|
|
59790
60101
|
return schemaProp;
|
|
@@ -59852,9 +60163,9 @@ var AvlOrbitalsCosmicZoom = ({
|
|
|
59852
60163
|
(ctx) => {
|
|
59853
60164
|
if (ctx.level !== "transition" || !ctx.trait || !ctx.transition) return;
|
|
59854
60165
|
const orbital = parsedSchema.orbitals?.find((o) => o.name === ctx.orbital);
|
|
59855
|
-
const traitRef = orbital?.traits?.find((
|
|
60166
|
+
const traitRef = orbital?.traits?.find((t2) => core.isInlineTrait(t2) && t2.name === ctx.trait);
|
|
59856
60167
|
if (!traitRef || !core.isInlineTrait(traitRef)) return;
|
|
59857
|
-
const idx = traitRef.stateMachine?.transitions?.findIndex((
|
|
60168
|
+
const idx = traitRef.stateMachine?.transitions?.findIndex((t2) => t2.event === ctx.transition) ?? -1;
|
|
59858
60169
|
if (idx < 0) return;
|
|
59859
60170
|
dispatch({ type: "SELECT_TRAIT", trait: ctx.trait });
|
|
59860
60171
|
dispatch({ type: "ZOOM_INTO_TRANSITION", transitionIndex: idx, targetPosition: { x: 0, y: 0 } });
|
|
@@ -60030,7 +60341,7 @@ var AvlOrbitalsCosmicZoom = ({
|
|
|
60030
60341
|
borderRadius: 4,
|
|
60031
60342
|
opacity: 0.8
|
|
60032
60343
|
},
|
|
60033
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", style: { color }, children: "
|
|
60344
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", style: { color }, children: t("avl.pressEscToZoomOut") })
|
|
60034
60345
|
}
|
|
60035
60346
|
),
|
|
60036
60347
|
state.level === "application" && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
@@ -60082,7 +60393,7 @@ var AvlOrbitalsCosmicZoom = ({
|
|
|
60082
60393
|
onKeyDown: (e) => {
|
|
60083
60394
|
if (e.key === "Enter" || e.key === " ") handleSelect(view.name);
|
|
60084
60395
|
},
|
|
60085
|
-
"aria-label":
|
|
60396
|
+
"aria-label": isHighlighted ? t("avl.orbitalLabelHighlighted", { name: view.name }) : t("avl.orbitalLabel", { name: view.name }),
|
|
60086
60397
|
position: "absolute",
|
|
60087
60398
|
style: {
|
|
60088
60399
|
left: view.cx - UNIT_DISPLAY_W / 2,
|
|
@@ -60130,9 +60441,9 @@ var AvlOrbitalsCosmicZoom = ({
|
|
|
60130
60441
|
zIndex: 30
|
|
60131
60442
|
},
|
|
60132
60443
|
children: [
|
|
60133
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "secondary", size: "sm", onClick: zoomIn, title: "
|
|
60134
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "secondary", size: "sm", onClick: zoomOut, title: "
|
|
60135
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "secondary", size: "sm", onClick: resetZoom, title: "
|
|
60444
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "secondary", size: "sm", onClick: zoomIn, title: t("avl.zoomIn"), action: "COSMIC_ZOOM_IN", children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "plus", size: "sm" }) }),
|
|
60445
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "secondary", size: "sm", onClick: zoomOut, title: t("avl.zoomOut"), action: "COSMIC_ZOOM_OUT", children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "minus", size: "sm" }) }),
|
|
60446
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "secondary", size: "sm", onClick: resetZoom, title: t("common.reset"), action: "COSMIC_ZOOM_RESET", children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "maximize", size: "sm" }) })
|
|
60136
60447
|
]
|
|
60137
60448
|
}
|
|
60138
60449
|
)
|