@almadar/ui 5.21.7 → 5.21.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/avl/index.cjs +970 -650
- package/dist/avl/index.js +970 -650
- package/dist/components/game/organisms/three/index.cjs +489 -1
- package/dist/components/game/organisms/three/index.js +489 -1
- package/dist/components/index.cjs +675 -370
- package/dist/components/index.js +675 -370
- package/dist/docs/index.cjs +300 -5
- package/dist/docs/index.js +300 -5
- package/dist/hooks/index.cjs +296 -3
- package/dist/hooks/index.js +296 -3
- package/dist/locales/index.cjs +896 -9
- package/dist/locales/index.js +896 -9
- package/dist/providers/index.cjs +675 -370
- package/dist/providers/index.js +675 -370
- package/dist/runtime/index.cjs +675 -370
- package/dist/runtime/index.js +675 -370
- package/locales/ar.json +300 -31
- package/locales/en.json +296 -31
- package/locales/sl.json +300 -31
- package/package.json +1 -1
package/dist/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
|
)
|
|
@@ -17618,9 +17912,18 @@ var init_MarkdownContent = __esm({
|
|
|
17618
17912
|
);
|
|
17619
17913
|
}
|
|
17620
17914
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
17621
|
-
"
|
|
17915
|
+
"code",
|
|
17622
17916
|
{
|
|
17917
|
+
...props,
|
|
17918
|
+
className: codeClassName,
|
|
17623
17919
|
style: {
|
|
17920
|
+
backgroundColor: "var(--color-muted)",
|
|
17921
|
+
color: "var(--color-foreground)",
|
|
17922
|
+
border: "1px solid var(--color-border)",
|
|
17923
|
+
padding: "0.125rem 0.375rem",
|
|
17924
|
+
borderRadius: "0.25rem",
|
|
17925
|
+
fontSize: "0.875em",
|
|
17926
|
+
fontFamily: "ui-monospace, monospace",
|
|
17624
17927
|
whiteSpace: "pre-wrap",
|
|
17625
17928
|
wordBreak: "break-word"
|
|
17626
17929
|
},
|
|
@@ -18043,7 +18346,7 @@ var init_StateMachineView = __esm({
|
|
|
18043
18346
|
const endX2 = fromState.x + Math.cos(Math.PI / 2 * loopDirection + endAngle) * fromState.radius;
|
|
18044
18347
|
const endY2 = fromState.y + Math.sin(Math.PI / 2 * loopDirection + endAngle) * fromState.radius;
|
|
18045
18348
|
const isSingle2 = bundle.labels.length === 1;
|
|
18046
|
-
const labelText2 = isSingle2 ? bundle.labels[0].event :
|
|
18349
|
+
const labelText2 = isSingle2 ? bundle.labels[0].event : t("stateMachine.eventCount", { count: bundle.labels.length });
|
|
18047
18350
|
const bundleColor2 = isSingle2 ? config.colors.arrow : "var(--color-accent)";
|
|
18048
18351
|
const labelWidth2 = labelText2.length * 9 + (isSingle2 ? 24 : 40);
|
|
18049
18352
|
const cx = fromState.x;
|
|
@@ -18169,7 +18472,7 @@ var init_StateMachineView = __esm({
|
|
|
18169
18472
|
const controlX = midX + perpX;
|
|
18170
18473
|
const controlY = midY + perpY;
|
|
18171
18474
|
const isSingle = bundle.labels.length === 1;
|
|
18172
|
-
const labelText = isSingle ? bundle.labels[0].event :
|
|
18475
|
+
const labelText = isSingle ? bundle.labels[0].event : t("stateMachine.eventCount", { count: bundle.labels.length });
|
|
18173
18476
|
const labelWidth = labelText.length * 9 + (isSingle ? 24 : 40);
|
|
18174
18477
|
const bundleColor = isSingle ? config.colors.arrow : "var(--color-accent)";
|
|
18175
18478
|
const curveMidpoint = {
|
|
@@ -18324,7 +18627,7 @@ var init_StateMachineView = __esm({
|
|
|
18324
18627
|
{
|
|
18325
18628
|
className: "absolute -top-2 left-1/2 transform -translate-x-1/2 px-2 py-0.5 rounded-full",
|
|
18326
18629
|
style: { backgroundColor: "var(--color-success)" },
|
|
18327
|
-
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") })
|
|
18328
18631
|
}
|
|
18329
18632
|
),
|
|
18330
18633
|
!isSingle && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -18346,10 +18649,7 @@ var init_StateMachineView = __esm({
|
|
|
18346
18649
|
{
|
|
18347
18650
|
className: "ml-2 px-2 py-0.5 rounded-full",
|
|
18348
18651
|
style: { backgroundColor: "var(--color-accent)" },
|
|
18349
|
-
children: /* @__PURE__ */ jsxRuntime.
|
|
18350
|
-
bundle.labels.length,
|
|
18351
|
-
" events"
|
|
18352
|
-
] })
|
|
18652
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", style: { color: "var(--color-accent-foreground)" }, children: t("stateMachine.eventCount", { count: bundle.labels.length }) })
|
|
18353
18653
|
}
|
|
18354
18654
|
)
|
|
18355
18655
|
]
|
|
@@ -18494,7 +18794,7 @@ var init_StateMachineView = __esm({
|
|
|
18494
18794
|
align: "center",
|
|
18495
18795
|
className: "mb-2",
|
|
18496
18796
|
style: { color: "var(--color-warning)", fontSize: "13px" },
|
|
18497
|
-
children: "
|
|
18797
|
+
children: t("stateMachine.externalEffects")
|
|
18498
18798
|
}
|
|
18499
18799
|
),
|
|
18500
18800
|
outputs.outputs.map((output, idx) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -18514,10 +18814,10 @@ var init_StateMachineView = __esm({
|
|
|
18514
18814
|
Legend = ({ config, y }) => {
|
|
18515
18815
|
const { t } = useTranslate();
|
|
18516
18816
|
const items = [
|
|
18517
|
-
{ label: "
|
|
18518
|
-
{ label: "
|
|
18519
|
-
{ label: "
|
|
18520
|
-
{ 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 }
|
|
18521
18821
|
];
|
|
18522
18822
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
18523
18823
|
HStack,
|
|
@@ -18532,8 +18832,8 @@ var init_StateMachineView = __esm({
|
|
|
18532
18832
|
{
|
|
18533
18833
|
className: "w-3 h-3 rounded-full",
|
|
18534
18834
|
style: {
|
|
18535
|
-
backgroundColor: item.
|
|
18536
|
-
border: item.
|
|
18835
|
+
backgroundColor: item.isMultiEvent ? item.color : config.colors.node,
|
|
18836
|
+
border: !item.isMultiEvent ? `2px solid ${item.color}` : "none"
|
|
18537
18837
|
}
|
|
18538
18838
|
}
|
|
18539
18839
|
),
|
|
@@ -18545,7 +18845,7 @@ var init_StateMachineView = __esm({
|
|
|
18545
18845
|
children: item.label
|
|
18546
18846
|
}
|
|
18547
18847
|
)
|
|
18548
|
-
] }, item.
|
|
18848
|
+
] }, item.key))
|
|
18549
18849
|
}
|
|
18550
18850
|
);
|
|
18551
18851
|
};
|
|
@@ -19339,13 +19639,13 @@ var init_JazariStateMachine = __esm({
|
|
|
19339
19639
|
);
|
|
19340
19640
|
}, [resolvedTrait, entityFields]);
|
|
19341
19641
|
if (isLoading) {
|
|
19342
|
-
return /* @__PURE__ */ jsxRuntime.jsx(LoadingState, { message: "
|
|
19642
|
+
return /* @__PURE__ */ jsxRuntime.jsx(LoadingState, { message: t("stateMachine.loading") });
|
|
19343
19643
|
}
|
|
19344
19644
|
if (error) {
|
|
19345
19645
|
return /* @__PURE__ */ jsxRuntime.jsx(ErrorState, { message: error instanceof Error ? error.message : String(error) });
|
|
19346
19646
|
}
|
|
19347
19647
|
if (!resolvedTrait || !layoutData || layoutData.states.length === 0) {
|
|
19348
|
-
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") }) });
|
|
19349
19649
|
}
|
|
19350
19650
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
19351
19651
|
StateMachineView,
|
|
@@ -20389,13 +20689,13 @@ var init_LayoutPatterns = __esm({
|
|
|
20389
20689
|
function generateRuleId() {
|
|
20390
20690
|
return `rule-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
20391
20691
|
}
|
|
20392
|
-
function questionsToOptions(questions,
|
|
20692
|
+
function questionsToOptions(questions, endOfSurveyLabel) {
|
|
20393
20693
|
const opts = questions.map((q) => ({
|
|
20394
20694
|
value: q.id,
|
|
20395
20695
|
label: q.label
|
|
20396
20696
|
}));
|
|
20397
|
-
if (
|
|
20398
|
-
opts.push({ value: END_OF_SURVEY, label:
|
|
20697
|
+
if (endOfSurveyLabel !== null) {
|
|
20698
|
+
opts.push({ value: END_OF_SURVEY, label: endOfSurveyLabel });
|
|
20399
20699
|
}
|
|
20400
20700
|
return opts;
|
|
20401
20701
|
}
|
|
@@ -20404,7 +20704,7 @@ function isRuleBroken(rule, questions) {
|
|
|
20404
20704
|
const targetExists = rule.targetQuestionId === END_OF_SURVEY || questions.some((q) => q.id === rule.targetQuestionId);
|
|
20405
20705
|
return !sourceExists || !targetExists;
|
|
20406
20706
|
}
|
|
20407
|
-
var END_OF_SURVEY,
|
|
20707
|
+
var END_OF_SURVEY, RuleRow, NODE_WIDTH, NODE_HEIGHT, NODE_GAP_Y, PADDING, LogicGraph, BranchingLogicBuilder;
|
|
20408
20708
|
var init_BranchingLogicBuilder = __esm({
|
|
20409
20709
|
"components/core/molecules/BranchingLogicBuilder.tsx"() {
|
|
20410
20710
|
"use client";
|
|
@@ -20417,14 +20717,9 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20417
20717
|
init_FilterPill();
|
|
20418
20718
|
init_Box();
|
|
20419
20719
|
init_useEventBus();
|
|
20720
|
+
init_useTranslate();
|
|
20420
20721
|
init_cn();
|
|
20421
20722
|
END_OF_SURVEY = "end-of-survey";
|
|
20422
|
-
OPERATOR_OPTIONS = [
|
|
20423
|
-
{ value: "equals", label: "equals" },
|
|
20424
|
-
{ value: "not-equals", label: "does not equal" },
|
|
20425
|
-
{ value: "contains", label: "contains" },
|
|
20426
|
-
{ value: "in", label: "is one of" }
|
|
20427
|
-
];
|
|
20428
20723
|
RuleRow = ({
|
|
20429
20724
|
rule,
|
|
20430
20725
|
questions,
|
|
@@ -20433,8 +20728,21 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20433
20728
|
onChange,
|
|
20434
20729
|
onDelete
|
|
20435
20730
|
}) => {
|
|
20436
|
-
const
|
|
20437
|
-
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
|
+
);
|
|
20438
20746
|
const sourceQuestion = questions.find((q) => q.id === rule.sourceQuestionId);
|
|
20439
20747
|
const valueOptions = React97.useMemo(() => {
|
|
20440
20748
|
if (!sourceQuestion?.optionValues) return [];
|
|
@@ -20479,22 +20787,22 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20479
20787
|
),
|
|
20480
20788
|
children: [
|
|
20481
20789
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex flex-wrap items-center gap-2", children: [
|
|
20482
|
-
/* @__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") }),
|
|
20483
20791
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "min-w-[10rem] grow basis-40", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
20484
20792
|
Select,
|
|
20485
20793
|
{
|
|
20486
20794
|
options: sourceOptions,
|
|
20487
20795
|
value: rule.sourceQuestionId,
|
|
20488
|
-
placeholder: "
|
|
20796
|
+
placeholder: t("branchingLogic.selectQuestion"),
|
|
20489
20797
|
onChange: handleSource,
|
|
20490
20798
|
disabled: readOnly,
|
|
20491
|
-
error: broken ? "
|
|
20799
|
+
error: broken ? t("branchingLogic.brokenReference") : void 0
|
|
20492
20800
|
}
|
|
20493
20801
|
) }),
|
|
20494
20802
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "min-w-[8rem] basis-32", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
20495
20803
|
Select,
|
|
20496
20804
|
{
|
|
20497
|
-
options:
|
|
20805
|
+
options: operatorOptions,
|
|
20498
20806
|
value: rule.operator,
|
|
20499
20807
|
onChange: handleOperator,
|
|
20500
20808
|
disabled: readOnly
|
|
@@ -20517,7 +20825,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20517
20825
|
{
|
|
20518
20826
|
options: valueOptions.filter((o) => !chips.includes(o.value)),
|
|
20519
20827
|
value: "",
|
|
20520
|
-
placeholder: "
|
|
20828
|
+
placeholder: t("branchingLogic.addValue"),
|
|
20521
20829
|
onChange: handleAddChip,
|
|
20522
20830
|
disabled: readOnly
|
|
20523
20831
|
}
|
|
@@ -20525,7 +20833,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20525
20833
|
Input,
|
|
20526
20834
|
{
|
|
20527
20835
|
inputType: "text",
|
|
20528
|
-
placeholder: "
|
|
20836
|
+
placeholder: t("branchingLogic.typeValuePressEnter"),
|
|
20529
20837
|
value: "",
|
|
20530
20838
|
onKeyDown: (e) => {
|
|
20531
20839
|
if (e.key !== "Enter") return;
|
|
@@ -20543,7 +20851,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20543
20851
|
{
|
|
20544
20852
|
options: valueOptions,
|
|
20545
20853
|
value: scalarValue,
|
|
20546
|
-
placeholder: "
|
|
20854
|
+
placeholder: t("branchingLogic.selectValue"),
|
|
20547
20855
|
onChange: (e) => onChange({ ...rule, value: e.target.value }),
|
|
20548
20856
|
disabled: readOnly
|
|
20549
20857
|
}
|
|
@@ -20551,7 +20859,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20551
20859
|
Input,
|
|
20552
20860
|
{
|
|
20553
20861
|
inputType: "text",
|
|
20554
|
-
placeholder: "
|
|
20862
|
+
placeholder: t("branchingLogic.value"),
|
|
20555
20863
|
value: scalarValue,
|
|
20556
20864
|
onChange: handleScalarValue,
|
|
20557
20865
|
disabled: readOnly
|
|
@@ -20559,17 +20867,17 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20559
20867
|
) }),
|
|
20560
20868
|
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "label", weight: "semibold", className: "shrink-0 inline-flex items-center gap-1", children: [
|
|
20561
20869
|
/* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.ArrowRight, { className: "h-4 w-4" }),
|
|
20562
|
-
"
|
|
20870
|
+
t("branchingLogic.goTo")
|
|
20563
20871
|
] }),
|
|
20564
20872
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "min-w-[10rem] grow basis-40", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
20565
20873
|
Select,
|
|
20566
20874
|
{
|
|
20567
20875
|
options: targetOptions,
|
|
20568
20876
|
value: rule.targetQuestionId,
|
|
20569
|
-
placeholder: "
|
|
20877
|
+
placeholder: t("branchingLogic.selectTarget"),
|
|
20570
20878
|
onChange: handleTarget,
|
|
20571
20879
|
disabled: readOnly,
|
|
20572
|
-
error: broken && rule.targetQuestionId !== END_OF_SURVEY ? "
|
|
20880
|
+
error: broken && rule.targetQuestionId !== END_OF_SURVEY ? t("branchingLogic.brokenReference") : void 0
|
|
20573
20881
|
}
|
|
20574
20882
|
) }),
|
|
20575
20883
|
!readOnly && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -20581,11 +20889,11 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20581
20889
|
action: "DELETE_RULE",
|
|
20582
20890
|
actionPayload: { ruleId: rule.id },
|
|
20583
20891
|
onClick: onDelete,
|
|
20584
|
-
"aria-label": "
|
|
20892
|
+
"aria-label": t("branchingLogic.deleteRule")
|
|
20585
20893
|
}
|
|
20586
20894
|
)
|
|
20587
20895
|
] }),
|
|
20588
|
-
broken && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "error", size: "sm", label: "
|
|
20896
|
+
broken && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "error", size: "sm", label: t("branchingLogic.brokenReference") })
|
|
20589
20897
|
]
|
|
20590
20898
|
}
|
|
20591
20899
|
);
|
|
@@ -20595,10 +20903,12 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20595
20903
|
NODE_GAP_Y = 80;
|
|
20596
20904
|
PADDING = 32;
|
|
20597
20905
|
LogicGraph = ({ questions, rules }) => {
|
|
20906
|
+
const { t } = useTranslate();
|
|
20907
|
+
const endOfSurveyLabel = t("branchingLogic.endOfSurvey");
|
|
20598
20908
|
const layout = React97.useMemo(() => {
|
|
20599
20909
|
const items = [
|
|
20600
20910
|
...questions.map((q) => ({ id: q.id, label: q.label, isEnd: false })),
|
|
20601
|
-
{ id: END_OF_SURVEY, label:
|
|
20911
|
+
{ id: END_OF_SURVEY, label: endOfSurveyLabel, isEnd: true }
|
|
20602
20912
|
];
|
|
20603
20913
|
const positions = {};
|
|
20604
20914
|
items.forEach((item, i) => {
|
|
@@ -20610,14 +20920,14 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20610
20920
|
const width = NODE_WIDTH + PADDING * 2 + 220;
|
|
20611
20921
|
const height = PADDING * 2 + items.length * (NODE_HEIGHT + NODE_GAP_Y);
|
|
20612
20922
|
return { items, positions, width, height };
|
|
20613
|
-
}, [questions]);
|
|
20923
|
+
}, [questions, endOfSurveyLabel]);
|
|
20614
20924
|
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "overflow-auto rounded-container border border-border bg-card p-2", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20615
20925
|
"svg",
|
|
20616
20926
|
{
|
|
20617
20927
|
width: layout.width,
|
|
20618
20928
|
height: layout.height,
|
|
20619
20929
|
role: "img",
|
|
20620
|
-
"aria-label": "
|
|
20930
|
+
"aria-label": t("branchingLogic.graphAriaLabel"),
|
|
20621
20931
|
style: { display: "block" },
|
|
20622
20932
|
children: [
|
|
20623
20933
|
/* @__PURE__ */ jsxRuntime.jsx("defs", { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -20725,6 +21035,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20725
21035
|
readOnly = false,
|
|
20726
21036
|
className
|
|
20727
21037
|
}) => {
|
|
21038
|
+
const { t } = useTranslate();
|
|
20728
21039
|
const eventBus = useEventBus();
|
|
20729
21040
|
const questions = Array.isArray(questionsProp) ? questionsProp : [];
|
|
20730
21041
|
const rulesInitial = Array.isArray(rulesProp) ? rulesProp : [];
|
|
@@ -20777,16 +21088,23 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20777
21088
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex flex-wrap items-center justify-between gap-2", children: [
|
|
20778
21089
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex items-center gap-2", children: [
|
|
20779
21090
|
/* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.GitBranch, { className: "h-5 w-5 text-foreground" }),
|
|
20780
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "subheading", weight: "semibold", children: "
|
|
21091
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "subheading", weight: "semibold", children: t("branchingLogic.title") }),
|
|
20781
21092
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
20782
21093
|
Badge,
|
|
20783
21094
|
{
|
|
20784
21095
|
variant: "neutral",
|
|
20785
21096
|
size: "sm",
|
|
20786
|
-
label:
|
|
21097
|
+
label: rules.length === 1 ? t("branchingLogic.ruleCountOne", { count: rules.length }) : t("branchingLogic.ruleCountOther", { count: rules.length })
|
|
20787
21098
|
}
|
|
20788
21099
|
),
|
|
20789
|
-
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
|
+
)
|
|
20790
21108
|
] }),
|
|
20791
21109
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex items-center gap-1 rounded-sm border border-border bg-card p-0.5", children: [
|
|
20792
21110
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -20797,7 +21115,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20797
21115
|
leftIcon: LucideIcons2.Pencil,
|
|
20798
21116
|
action: "VIEW_EDIT",
|
|
20799
21117
|
onClick: () => setView("edit"),
|
|
20800
|
-
children: "
|
|
21118
|
+
children: t("branchingLogic.rules")
|
|
20801
21119
|
}
|
|
20802
21120
|
),
|
|
20803
21121
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -20808,13 +21126,13 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20808
21126
|
leftIcon: LucideIcons2.Eye,
|
|
20809
21127
|
action: "VIEW_GRAPH",
|
|
20810
21128
|
onClick: () => setView("graph"),
|
|
20811
|
-
children: "
|
|
21129
|
+
children: t("branchingLogic.logicGraph")
|
|
20812
21130
|
}
|
|
20813
21131
|
)
|
|
20814
21132
|
] })
|
|
20815
21133
|
] }),
|
|
20816
21134
|
view === "edit" ? /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex flex-col gap-2", children: [
|
|
20817
|
-
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(
|
|
20818
21136
|
RuleRow,
|
|
20819
21137
|
{
|
|
20820
21138
|
rule,
|
|
@@ -20835,7 +21153,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20835
21153
|
action: "ADD_RULE",
|
|
20836
21154
|
onClick: handleAddRule,
|
|
20837
21155
|
disabled: noQuestions,
|
|
20838
|
-
children: "
|
|
21156
|
+
children: t("branchingLogic.addRule")
|
|
20839
21157
|
}
|
|
20840
21158
|
) })
|
|
20841
21159
|
] }) : /* @__PURE__ */ jsxRuntime.jsx(LogicGraph, { questions, rules })
|
|
@@ -21462,7 +21780,7 @@ function CalendarGrid({
|
|
|
21462
21780
|
onClick: stepPrev,
|
|
21463
21781
|
"aria-disabled": !canPrev || void 0,
|
|
21464
21782
|
"aria-label": t("aria.previousDays"),
|
|
21465
|
-
children: "
|
|
21783
|
+
children: t("nav.previous")
|
|
21466
21784
|
}
|
|
21467
21785
|
),
|
|
21468
21786
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground", children: formatDateRange(visibleDays[0], visibleDays[visibleDays.length - 1]) }),
|
|
@@ -21475,7 +21793,7 @@ function CalendarGrid({
|
|
|
21475
21793
|
onClick: stepNext,
|
|
21476
21794
|
"aria-disabled": !canNext || void 0,
|
|
21477
21795
|
"aria-label": t("aria.nextDays"),
|
|
21478
|
-
children: "
|
|
21796
|
+
children: t("nav.next")
|
|
21479
21797
|
}
|
|
21480
21798
|
)
|
|
21481
21799
|
] }),
|
|
@@ -23025,7 +23343,7 @@ var init_Pagination = __esm({
|
|
|
23025
23343
|
type: "number",
|
|
23026
23344
|
value: jumpToPage,
|
|
23027
23345
|
onChange: (e) => setJumpToPage(e.target.value),
|
|
23028
|
-
placeholder: "
|
|
23346
|
+
placeholder: t("pagination.jumpPlaceholder"),
|
|
23029
23347
|
className: "w-20",
|
|
23030
23348
|
onKeyDown: (e) => {
|
|
23031
23349
|
if (e.key === "Enter") {
|
|
@@ -23163,13 +23481,10 @@ var init_CardGrid = __esm({
|
|
|
23163
23481
|
return children;
|
|
23164
23482
|
}
|
|
23165
23483
|
if (isLoading) {
|
|
23166
|
-
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") }) });
|
|
23167
23485
|
}
|
|
23168
23486
|
if (error) {
|
|
23169
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "col-span-full text-center py-8 text-error", children: /* @__PURE__ */ jsxRuntime.
|
|
23170
|
-
"Error loading items: ",
|
|
23171
|
-
error.message
|
|
23172
|
-
] }) });
|
|
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 }) }) });
|
|
23173
23488
|
}
|
|
23174
23489
|
if (normalizedData.length === 0) {
|
|
23175
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" }) });
|
|
@@ -27035,7 +27350,7 @@ function DataGrid({
|
|
|
27035
27350
|
onChange: () => toggleSelection(id),
|
|
27036
27351
|
onClick: (e) => e.stopPropagation(),
|
|
27037
27352
|
className: "w-4 h-4 mt-1 flex-shrink-0 accent-primary",
|
|
27038
|
-
"aria-label":
|
|
27353
|
+
"aria-label": t("card.selectItem", { item: titleValue !== void 0 ? String(titleValue) : t("card.itemFallback") })
|
|
27039
27354
|
}
|
|
27040
27355
|
),
|
|
27041
27356
|
/* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "xs", className: "flex-1 min-w-0", children: [
|
|
@@ -27233,7 +27548,7 @@ function formatDate3(value) {
|
|
|
27233
27548
|
if (isNaN(d.getTime())) return String(value);
|
|
27234
27549
|
return d.toLocaleDateString(void 0, { year: "numeric", month: "short", day: "numeric" });
|
|
27235
27550
|
}
|
|
27236
|
-
function formatValue2(value, format) {
|
|
27551
|
+
function formatValue2(value, format, boolLabels) {
|
|
27237
27552
|
if (value === void 0 || value === null) return "";
|
|
27238
27553
|
switch (format) {
|
|
27239
27554
|
case "date":
|
|
@@ -27245,7 +27560,7 @@ function formatValue2(value, format) {
|
|
|
27245
27560
|
case "percent":
|
|
27246
27561
|
return typeof value === "number" ? `${Math.round(value)}%` : String(value);
|
|
27247
27562
|
case "boolean":
|
|
27248
|
-
return value ? "Yes" : "No";
|
|
27563
|
+
return value ? boolLabels?.yes ?? "Yes" : boolLabels?.no ?? "No";
|
|
27249
27564
|
default:
|
|
27250
27565
|
return String(value);
|
|
27251
27566
|
}
|
|
@@ -27541,7 +27856,7 @@ function DataList({
|
|
|
27541
27856
|
field.label ?? fieldLabel3(field.name),
|
|
27542
27857
|
":"
|
|
27543
27858
|
] }),
|
|
27544
|
-
/* @__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") }) })
|
|
27545
27860
|
] }, field.name);
|
|
27546
27861
|
}) }),
|
|
27547
27862
|
progressFields.map((field) => {
|
|
@@ -27671,6 +27986,7 @@ var init_FileTree = __esm({
|
|
|
27671
27986
|
init_Box();
|
|
27672
27987
|
init_Typography();
|
|
27673
27988
|
init_Icon();
|
|
27989
|
+
init_useTranslate();
|
|
27674
27990
|
TreeNodeItem = ({
|
|
27675
27991
|
node,
|
|
27676
27992
|
depth,
|
|
@@ -27756,8 +28072,9 @@ var init_FileTree = __esm({
|
|
|
27756
28072
|
className,
|
|
27757
28073
|
indent = 16
|
|
27758
28074
|
}) => {
|
|
28075
|
+
const { t } = useTranslate();
|
|
27759
28076
|
if (tree.length === 0) {
|
|
27760
|
-
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") }) });
|
|
27761
28078
|
}
|
|
27762
28079
|
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: `py-1 overflow-y-auto ${className ?? ""}`, role: "tree", children: tree.map((node) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
27763
28080
|
TreeNodeItem,
|
|
@@ -27876,6 +28193,7 @@ var init_FilterGroup = __esm({
|
|
|
27876
28193
|
init_Icon();
|
|
27877
28194
|
init_useEventBus();
|
|
27878
28195
|
init_useQuerySingleton();
|
|
28196
|
+
init_useTranslate();
|
|
27879
28197
|
resolveFilterType = (filter) => filter.filterType ?? filter.type;
|
|
27880
28198
|
lookStyles6 = {
|
|
27881
28199
|
toolbar: "",
|
|
@@ -27896,6 +28214,7 @@ var init_FilterGroup = __esm({
|
|
|
27896
28214
|
isLoading,
|
|
27897
28215
|
look = "toolbar"
|
|
27898
28216
|
}) => {
|
|
28217
|
+
const { t } = useTranslate();
|
|
27899
28218
|
const eventBus = useEventBus();
|
|
27900
28219
|
const queryState = useQuerySingleton(query);
|
|
27901
28220
|
const [selectedValues, setSelectedValues] = React97.useState(
|
|
@@ -27977,7 +28296,7 @@ var init_FilterGroup = __esm({
|
|
|
27977
28296
|
"px-3 py-1.5 text-sm font-medium transition-all duration-[var(--transition-fast)]",
|
|
27978
28297
|
!selectedValues[filter.field] ? "bg-primary text-primary-foreground" : "bg-card text-muted-foreground hover:bg-muted"
|
|
27979
28298
|
),
|
|
27980
|
-
children: "
|
|
28299
|
+
children: t("filterGroup.all")
|
|
27981
28300
|
}
|
|
27982
28301
|
),
|
|
27983
28302
|
filter.options?.map((option) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -28005,7 +28324,7 @@ var init_FilterGroup = __esm({
|
|
|
28005
28324
|
size: "sm",
|
|
28006
28325
|
onClick: handleClearAll,
|
|
28007
28326
|
leftIcon: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "x", className: "h-3.5 w-3.5" }),
|
|
28008
|
-
children: "
|
|
28327
|
+
children: t("filterGroup.clear")
|
|
28009
28328
|
}
|
|
28010
28329
|
)
|
|
28011
28330
|
]
|
|
@@ -28016,7 +28335,7 @@ var init_FilterGroup = __esm({
|
|
|
28016
28335
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col gap-4", lookStyles6[look], className), children: [
|
|
28017
28336
|
showIcon && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-muted-foreground", children: [
|
|
28018
28337
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "filter", className: "h-4 w-4" }),
|
|
28019
|
-
/* @__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") })
|
|
28020
28339
|
] }),
|
|
28021
28340
|
filters.map((filter) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
28022
28341
|
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-xs font-bold text-muted-foreground uppercase tracking-wide", children: filter.label }),
|
|
@@ -28039,7 +28358,7 @@ var init_FilterGroup = __esm({
|
|
|
28039
28358
|
`${filter.field}_from`,
|
|
28040
28359
|
e.target.value || null
|
|
28041
28360
|
),
|
|
28042
|
-
placeholder: "
|
|
28361
|
+
placeholder: t("filterGroup.from"),
|
|
28043
28362
|
clearable: true,
|
|
28044
28363
|
onClear: () => handleFilterSelect(`${filter.field}_from`, null)
|
|
28045
28364
|
}
|
|
@@ -28053,7 +28372,7 @@ var init_FilterGroup = __esm({
|
|
|
28053
28372
|
`${filter.field}_to`,
|
|
28054
28373
|
e.target.value || null
|
|
28055
28374
|
),
|
|
28056
|
-
placeholder: "
|
|
28375
|
+
placeholder: t("filterGroup.to"),
|
|
28057
28376
|
clearable: true,
|
|
28058
28377
|
onClear: () => handleFilterSelect(`${filter.field}_to`, null)
|
|
28059
28378
|
}
|
|
@@ -28073,7 +28392,7 @@ var init_FilterGroup = __esm({
|
|
|
28073
28392
|
value: selectedValues[filter.field] || "all",
|
|
28074
28393
|
onChange: (e) => handleFilterSelect(filter.field, e.target.value),
|
|
28075
28394
|
options: [
|
|
28076
|
-
{ value: "all", label: "
|
|
28395
|
+
{ value: "all", label: t("filterGroup.all") },
|
|
28077
28396
|
...filter.options?.map((opt) => ({
|
|
28078
28397
|
value: opt,
|
|
28079
28398
|
label: opt
|
|
@@ -28090,7 +28409,7 @@ var init_FilterGroup = __esm({
|
|
|
28090
28409
|
onClick: handleClearAll,
|
|
28091
28410
|
leftIcon: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "x", className: "h-3.5 w-3.5" }),
|
|
28092
28411
|
className: "self-start",
|
|
28093
|
-
children: "
|
|
28412
|
+
children: t("filterGroup.clearAll")
|
|
28094
28413
|
}
|
|
28095
28414
|
)
|
|
28096
28415
|
] });
|
|
@@ -28156,7 +28475,7 @@ var init_FilterGroup = __esm({
|
|
|
28156
28475
|
value: selectedValues[filter.field] || "all",
|
|
28157
28476
|
onChange: (e) => handleFilterSelect(filter.field, e.target.value),
|
|
28158
28477
|
options: [
|
|
28159
|
-
{ value: "all", label:
|
|
28478
|
+
{ value: "all", label: t("filterGroup.allOf", { label: filter.label }) },
|
|
28160
28479
|
...filter.options?.map((opt) => ({
|
|
28161
28480
|
value: opt,
|
|
28162
28481
|
label: opt
|
|
@@ -28185,7 +28504,7 @@ var init_FilterGroup = __esm({
|
|
|
28185
28504
|
field
|
|
28186
28505
|
);
|
|
28187
28506
|
}),
|
|
28188
|
-
/* @__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") })
|
|
28189
28508
|
] })
|
|
28190
28509
|
]
|
|
28191
28510
|
}
|
|
@@ -28210,7 +28529,7 @@ var init_FilterGroup = __esm({
|
|
|
28210
28529
|
className: "text-muted-foreground",
|
|
28211
28530
|
children: [
|
|
28212
28531
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "filter", className: "h-4 w-4" }),
|
|
28213
|
-
/* @__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") })
|
|
28214
28533
|
]
|
|
28215
28534
|
}
|
|
28216
28535
|
),
|
|
@@ -28236,7 +28555,7 @@ var init_FilterGroup = __esm({
|
|
|
28236
28555
|
`${filter.field}_from`,
|
|
28237
28556
|
e.target.value || null
|
|
28238
28557
|
),
|
|
28239
|
-
placeholder: "
|
|
28558
|
+
placeholder: t("filterGroup.from"),
|
|
28240
28559
|
clearable: true,
|
|
28241
28560
|
onClear: () => handleFilterSelect(`${filter.field}_from`, null),
|
|
28242
28561
|
className: "min-w-[130px]"
|
|
@@ -28252,7 +28571,7 @@ var init_FilterGroup = __esm({
|
|
|
28252
28571
|
`${filter.field}_to`,
|
|
28253
28572
|
e.target.value || null
|
|
28254
28573
|
),
|
|
28255
|
-
placeholder: "
|
|
28574
|
+
placeholder: t("filterGroup.to"),
|
|
28256
28575
|
clearable: true,
|
|
28257
28576
|
onClear: () => handleFilterSelect(`${filter.field}_to`, null),
|
|
28258
28577
|
className: "min-w-[130px]"
|
|
@@ -28274,7 +28593,7 @@ var init_FilterGroup = __esm({
|
|
|
28274
28593
|
value: selectedValues[filter.field] || "all",
|
|
28275
28594
|
onChange: (e) => handleFilterSelect(filter.field, e.target.value),
|
|
28276
28595
|
options: [
|
|
28277
|
-
{ value: "all", label: "
|
|
28596
|
+
{ value: "all", label: t("filterGroup.all") },
|
|
28278
28597
|
...filter.options?.map((opt) => ({
|
|
28279
28598
|
value: opt,
|
|
28280
28599
|
label: opt
|
|
@@ -28285,10 +28604,7 @@ var init_FilterGroup = __esm({
|
|
|
28285
28604
|
)
|
|
28286
28605
|
] }, filter.field)),
|
|
28287
28606
|
activeFilterCount > 0 && /* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", align: "center", className: "ml-auto", children: [
|
|
28288
|
-
/* @__PURE__ */ jsxRuntime.
|
|
28289
|
-
activeFilterCount,
|
|
28290
|
-
" active"
|
|
28291
|
-
] }),
|
|
28607
|
+
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "primary", size: "md", children: t("filterGroup.activeCount", { count: activeFilterCount }) }),
|
|
28292
28608
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
28293
28609
|
Button,
|
|
28294
28610
|
{
|
|
@@ -28296,7 +28612,7 @@ var init_FilterGroup = __esm({
|
|
|
28296
28612
|
size: "sm",
|
|
28297
28613
|
onClick: handleClearAll,
|
|
28298
28614
|
leftIcon: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "x", className: "h-3.5 w-3.5" }),
|
|
28299
|
-
children: "
|
|
28615
|
+
children: t("filterGroup.clearAll")
|
|
28300
28616
|
}
|
|
28301
28617
|
)
|
|
28302
28618
|
] })
|
|
@@ -29240,19 +29556,20 @@ var init_RepeatableFormSection = __esm({
|
|
|
29240
29556
|
RepeatableFormSection.displayName = "RepeatableFormSection";
|
|
29241
29557
|
}
|
|
29242
29558
|
});
|
|
29243
|
-
var
|
|
29559
|
+
var actionTypeLabelKeys, actionTypeIcons, ViolationAlert;
|
|
29244
29560
|
var init_ViolationAlert = __esm({
|
|
29245
29561
|
"components/core/molecules/ViolationAlert.tsx"() {
|
|
29246
29562
|
init_cn();
|
|
29563
|
+
init_useTranslate();
|
|
29247
29564
|
init_Box();
|
|
29248
29565
|
init_Stack();
|
|
29249
29566
|
init_Typography();
|
|
29250
29567
|
init_Button();
|
|
29251
29568
|
init_Icon();
|
|
29252
|
-
|
|
29253
|
-
measure: "
|
|
29254
|
-
admin: "
|
|
29255
|
-
penalty: "
|
|
29569
|
+
actionTypeLabelKeys = {
|
|
29570
|
+
measure: "violationAlert.actionType.measure",
|
|
29571
|
+
admin: "violationAlert.actionType.admin",
|
|
29572
|
+
penalty: "violationAlert.actionType.penalty"
|
|
29256
29573
|
};
|
|
29257
29574
|
actionTypeIcons = {
|
|
29258
29575
|
measure: "alert-triangle",
|
|
@@ -29269,10 +29586,11 @@ var init_ViolationAlert = __esm({
|
|
|
29269
29586
|
className,
|
|
29270
29587
|
...flatProps
|
|
29271
29588
|
}) => {
|
|
29589
|
+
const { t } = useTranslate();
|
|
29272
29590
|
const resolvedViolation = violation ?? {
|
|
29273
29591
|
law: "",
|
|
29274
29592
|
article: "",
|
|
29275
|
-
message: flatProps.message ?? "
|
|
29593
|
+
message: flatProps.message ?? t("violationAlert.fallbackMessage"),
|
|
29276
29594
|
actionType: "measure"
|
|
29277
29595
|
};
|
|
29278
29596
|
const effectiveSeverity = severity ?? (resolvedViolation.actionType === "measure" ? "warning" : "error");
|
|
@@ -29357,7 +29675,7 @@ var init_ViolationAlert = __esm({
|
|
|
29357
29675
|
{
|
|
29358
29676
|
variant: "caption",
|
|
29359
29677
|
className: cn(textColor, "opacity-75"),
|
|
29360
|
-
children:
|
|
29678
|
+
children: t(actionTypeLabelKeys[resolvedViolation.actionType])
|
|
29361
29679
|
}
|
|
29362
29680
|
)
|
|
29363
29681
|
] })
|
|
@@ -29388,7 +29706,7 @@ var init_ViolationAlert = __esm({
|
|
|
29388
29706
|
{
|
|
29389
29707
|
variant: "caption",
|
|
29390
29708
|
className: cn(textColor, "opacity-75"),
|
|
29391
|
-
children: "
|
|
29709
|
+
children: t("violationAlert.adminLabel")
|
|
29392
29710
|
}
|
|
29393
29711
|
),
|
|
29394
29712
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -29407,7 +29725,7 @@ var init_ViolationAlert = __esm({
|
|
|
29407
29725
|
{
|
|
29408
29726
|
variant: "caption",
|
|
29409
29727
|
className: cn(textColor, "opacity-75"),
|
|
29410
|
-
children: "
|
|
29728
|
+
children: t("violationAlert.penaltyLabel")
|
|
29411
29729
|
}
|
|
29412
29730
|
),
|
|
29413
29731
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -29432,7 +29750,7 @@ var init_ViolationAlert = __esm({
|
|
|
29432
29750
|
className: cn(textColor, "self-start"),
|
|
29433
29751
|
children: [
|
|
29434
29752
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "arrow-right", size: "sm", className: "mr-1" }),
|
|
29435
|
-
"
|
|
29753
|
+
t("violationAlert.goToField")
|
|
29436
29754
|
]
|
|
29437
29755
|
}
|
|
29438
29756
|
)
|
|
@@ -29748,6 +30066,7 @@ var init_LineChart = __esm({
|
|
|
29748
30066
|
"use client";
|
|
29749
30067
|
init_cn();
|
|
29750
30068
|
init_atoms2();
|
|
30069
|
+
init_useTranslate();
|
|
29751
30070
|
LineChart2 = ({
|
|
29752
30071
|
data,
|
|
29753
30072
|
width = 400,
|
|
@@ -29759,6 +30078,7 @@ var init_LineChart = __esm({
|
|
|
29759
30078
|
areaColor = "var(--color-primary)",
|
|
29760
30079
|
className
|
|
29761
30080
|
}) => {
|
|
30081
|
+
const { t } = useTranslate();
|
|
29762
30082
|
const gradientId = React97.useId();
|
|
29763
30083
|
const safeData = data ?? [];
|
|
29764
30084
|
const sortedData = React97.useMemo(() => {
|
|
@@ -29795,7 +30115,7 @@ var init_LineChart = __esm({
|
|
|
29795
30115
|
return `${linePath} L ${last.x} ${bottom} L ${first.x} ${bottom} Z`;
|
|
29796
30116
|
}, [linePath, points, height, showArea]);
|
|
29797
30117
|
if (safeData.length === 0) {
|
|
29798
|
-
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") });
|
|
29799
30119
|
}
|
|
29800
30120
|
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn(className), children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
29801
30121
|
"svg",
|
|
@@ -31702,6 +32022,7 @@ var init_GraphView = __esm({
|
|
|
31702
32022
|
"use client";
|
|
31703
32023
|
init_cn();
|
|
31704
32024
|
init_atoms2();
|
|
32025
|
+
init_useTranslate();
|
|
31705
32026
|
GROUP_COLORS = [
|
|
31706
32027
|
"#3b82f6",
|
|
31707
32028
|
// blue-500
|
|
@@ -31734,6 +32055,7 @@ var init_GraphView = __esm({
|
|
|
31734
32055
|
showLabels = true,
|
|
31735
32056
|
zoomToFit = true
|
|
31736
32057
|
}) => {
|
|
32058
|
+
const { t } = useTranslate();
|
|
31737
32059
|
const containerRef = React97.useRef(null);
|
|
31738
32060
|
const animRef = React97.useRef(0);
|
|
31739
32061
|
const [simNodes, setSimNodes] = React97.useState([]);
|
|
@@ -31911,7 +32233,7 @@ var init_GraphView = __esm({
|
|
|
31911
32233
|
[onNodeClick]
|
|
31912
32234
|
);
|
|
31913
32235
|
if (nodes.length === 0) {
|
|
31914
|
-
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") }) });
|
|
31915
32237
|
}
|
|
31916
32238
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
31917
32239
|
Box,
|
|
@@ -32367,11 +32689,12 @@ var init_UploadDropZone = __esm({
|
|
|
32367
32689
|
init_Icon();
|
|
32368
32690
|
init_Typography();
|
|
32369
32691
|
init_useEventBus();
|
|
32692
|
+
init_useTranslate();
|
|
32370
32693
|
UploadDropZone = ({
|
|
32371
32694
|
accept,
|
|
32372
32695
|
maxSize,
|
|
32373
32696
|
maxFiles = 1,
|
|
32374
|
-
label
|
|
32697
|
+
label,
|
|
32375
32698
|
description,
|
|
32376
32699
|
disabled = false,
|
|
32377
32700
|
action,
|
|
@@ -32379,22 +32702,24 @@ var init_UploadDropZone = __esm({
|
|
|
32379
32702
|
onFiles,
|
|
32380
32703
|
className
|
|
32381
32704
|
}) => {
|
|
32705
|
+
const { t } = useTranslate();
|
|
32706
|
+
const resolvedLabel = label ?? t("upload.dropOrBrowse");
|
|
32382
32707
|
const [isDragOver, setIsDragOver] = React97.useState(false);
|
|
32383
32708
|
const [error, setError] = React97.useState(null);
|
|
32384
32709
|
const inputRef = React97.useRef(null);
|
|
32385
32710
|
const eventBus = useSafeEventBus7();
|
|
32386
32711
|
const defaultDescription = [
|
|
32387
|
-
accept ?
|
|
32388
|
-
maxSize ?
|
|
32389
|
-
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
|
|
32390
32715
|
].filter(Boolean).join(". ");
|
|
32391
32716
|
const validateFiles = React97.useCallback(
|
|
32392
32717
|
(files) => {
|
|
32393
32718
|
if (files.length > maxFiles) {
|
|
32394
|
-
return { valid: [], error:
|
|
32719
|
+
return { valid: [], error: t("upload.error.maxFiles", { count: maxFiles }) };
|
|
32395
32720
|
}
|
|
32396
32721
|
if (accept) {
|
|
32397
|
-
const acceptedTypes = accept.split(",").map((
|
|
32722
|
+
const acceptedTypes = accept.split(",").map((s) => s.trim());
|
|
32398
32723
|
const invalid = files.filter((file) => {
|
|
32399
32724
|
return !acceptedTypes.some((type) => {
|
|
32400
32725
|
if (type.endsWith("/*")) {
|
|
@@ -32404,7 +32729,7 @@ var init_UploadDropZone = __esm({
|
|
|
32404
32729
|
});
|
|
32405
32730
|
});
|
|
32406
32731
|
if (invalid.length > 0) {
|
|
32407
|
-
return { valid: [], error:
|
|
32732
|
+
return { valid: [], error: t("upload.error.invalidType", { name: invalid[0].name }) };
|
|
32408
32733
|
}
|
|
32409
32734
|
}
|
|
32410
32735
|
if (maxSize) {
|
|
@@ -32412,13 +32737,13 @@ var init_UploadDropZone = __esm({
|
|
|
32412
32737
|
if (tooLarge.length > 0) {
|
|
32413
32738
|
return {
|
|
32414
32739
|
valid: [],
|
|
32415
|
-
error:
|
|
32740
|
+
error: t("upload.error.tooLarge", { name: tooLarge[0].name, size: formatFileSize(maxSize) })
|
|
32416
32741
|
};
|
|
32417
32742
|
}
|
|
32418
32743
|
}
|
|
32419
32744
|
return { valid: files, error: null };
|
|
32420
32745
|
},
|
|
32421
|
-
[accept, maxSize, maxFiles]
|
|
32746
|
+
[accept, maxSize, maxFiles, t]
|
|
32422
32747
|
);
|
|
32423
32748
|
const handleFiles = React97.useCallback(
|
|
32424
32749
|
(files) => {
|
|
@@ -32489,7 +32814,7 @@ var init_UploadDropZone = __esm({
|
|
|
32489
32814
|
handleClick();
|
|
32490
32815
|
}
|
|
32491
32816
|
},
|
|
32492
|
-
"aria-label":
|
|
32817
|
+
"aria-label": resolvedLabel,
|
|
32493
32818
|
children: [
|
|
32494
32819
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
32495
32820
|
"input",
|
|
@@ -32505,7 +32830,7 @@ var init_UploadDropZone = __esm({
|
|
|
32505
32830
|
}
|
|
32506
32831
|
),
|
|
32507
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" }),
|
|
32508
|
-
/* @__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 }),
|
|
32509
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 })
|
|
32510
32835
|
]
|
|
32511
32836
|
}
|
|
@@ -32927,7 +33252,7 @@ function TableView({
|
|
|
32927
33252
|
{
|
|
32928
33253
|
checked: selected.has(id),
|
|
32929
33254
|
onChange: () => toggleRow(id),
|
|
32930
|
-
"aria-label":
|
|
33255
|
+
"aria-label": t("table.selectRow", { id })
|
|
32931
33256
|
}
|
|
32932
33257
|
) }),
|
|
32933
33258
|
hasRenderProp ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex-1 min-w-0", children: children(row, index) }) : colDefs.map((col) => {
|
|
@@ -35774,7 +36099,7 @@ var init_QrScanner = __esm({
|
|
|
35774
36099
|
className: "inset-0 flex-col items-center justify-center gap-2 bg-black bg-opacity-80 text-center",
|
|
35775
36100
|
children: [
|
|
35776
36101
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "camera", className: "h-8 w-8 text-white", "aria-hidden": "true" }),
|
|
35777
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-white", children: "
|
|
36102
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-white", children: t("qrScanner.cameraUnavailable") }),
|
|
35778
36103
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", className: "text-white opacity-70", children: cameraError.message })
|
|
35779
36104
|
]
|
|
35780
36105
|
}
|
|
@@ -35785,7 +36110,7 @@ var init_QrScanner = __esm({
|
|
|
35785
36110
|
position: "absolute",
|
|
35786
36111
|
display: "flex",
|
|
35787
36112
|
className: "inset-0 items-center justify-center bg-black bg-opacity-60",
|
|
35788
|
-
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") })
|
|
35789
36114
|
}
|
|
35790
36115
|
),
|
|
35791
36116
|
showCameraControls && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -35804,7 +36129,7 @@ var init_QrScanner = __esm({
|
|
|
35804
36129
|
"rounded-full bg-black bg-opacity-60 p-2 text-white",
|
|
35805
36130
|
"hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
|
|
35806
36131
|
),
|
|
35807
|
-
"aria-label": isPaused ? "
|
|
36132
|
+
"aria-label": isPaused ? t("qrScanner.resumeScanning") : t("qrScanner.pauseScanning"),
|
|
35808
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" })
|
|
35809
36134
|
}
|
|
35810
36135
|
),
|
|
@@ -35817,7 +36142,7 @@ var init_QrScanner = __esm({
|
|
|
35817
36142
|
"rounded-full bg-black bg-opacity-60 p-2 text-white",
|
|
35818
36143
|
"hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
|
|
35819
36144
|
),
|
|
35820
|
-
"aria-label":
|
|
36145
|
+
"aria-label": currentFacing === "environment" ? t("qrScanner.switchToFrontCamera") : t("qrScanner.switchToRearCamera"),
|
|
35821
36146
|
children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "refresh-cw", className: "h-4 w-4" })
|
|
35822
36147
|
}
|
|
35823
36148
|
),
|
|
@@ -35831,7 +36156,7 @@ var init_QrScanner = __esm({
|
|
|
35831
36156
|
"hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
|
|
35832
36157
|
),
|
|
35833
36158
|
"aria-label": t("aria.mockScanDev"),
|
|
35834
|
-
children: "
|
|
36159
|
+
children: t("qrScanner.mockScan")
|
|
35835
36160
|
}
|
|
35836
36161
|
)
|
|
35837
36162
|
]
|
|
@@ -35849,6 +36174,7 @@ var init_OptionConstraintGroup = __esm({
|
|
|
35849
36174
|
"components/core/molecules/OptionConstraintGroup.tsx"() {
|
|
35850
36175
|
init_cn();
|
|
35851
36176
|
init_useEventBus();
|
|
36177
|
+
init_useTranslate();
|
|
35852
36178
|
init_Typography();
|
|
35853
36179
|
init_Box();
|
|
35854
36180
|
init_Label();
|
|
@@ -35858,36 +36184,36 @@ var init_OptionConstraintGroup = __esm({
|
|
|
35858
36184
|
const sign = delta >= 0 ? "+" : "-";
|
|
35859
36185
|
return `${sign}$${Math.abs(delta).toFixed(2)}`;
|
|
35860
36186
|
};
|
|
35861
|
-
constraintHint = (constraint) => {
|
|
36187
|
+
constraintHint = (constraint, t) => {
|
|
35862
36188
|
if (constraint.type === "single") {
|
|
35863
|
-
return constraint.required ? "
|
|
36189
|
+
return constraint.required ? t("optionConstraint.requiredOne") : t("optionConstraint.optionalOne");
|
|
35864
36190
|
}
|
|
35865
36191
|
const { min, max } = constraint;
|
|
35866
36192
|
if (min && max) {
|
|
35867
|
-
return min === max ?
|
|
36193
|
+
return min === max ? t("optionConstraint.pickExactly", { count: min }) : t("optionConstraint.pickRange", { min, max });
|
|
35868
36194
|
}
|
|
35869
|
-
if (min) return
|
|
35870
|
-
if (max) return
|
|
35871
|
-
return "
|
|
36195
|
+
if (min) return t("optionConstraint.pickAtLeast", { count: min });
|
|
36196
|
+
if (max) return t("optionConstraint.pickUpTo", { count: max });
|
|
36197
|
+
return t("optionConstraint.optional");
|
|
35872
36198
|
};
|
|
35873
|
-
validateSelection = (selected, constraint) => {
|
|
36199
|
+
validateSelection = (selected, constraint, t) => {
|
|
35874
36200
|
if (constraint.type === "single") {
|
|
35875
36201
|
if (constraint.required && selected.length === 0) {
|
|
35876
|
-
return "
|
|
36202
|
+
return t("optionConstraint.error.pickOne");
|
|
35877
36203
|
}
|
|
35878
36204
|
if (selected.length > 1) {
|
|
35879
|
-
return "
|
|
36205
|
+
return t("optionConstraint.error.pickOnlyOne");
|
|
35880
36206
|
}
|
|
35881
36207
|
return void 0;
|
|
35882
36208
|
}
|
|
35883
36209
|
const { min, max } = constraint;
|
|
35884
36210
|
if (min !== void 0 && selected.length < min) {
|
|
35885
36211
|
const remaining = min - selected.length;
|
|
35886
|
-
return
|
|
36212
|
+
return t("optionConstraint.error.pickMore", { count: remaining });
|
|
35887
36213
|
}
|
|
35888
36214
|
if (max !== void 0 && selected.length > max) {
|
|
35889
36215
|
const excess = selected.length - max;
|
|
35890
|
-
return
|
|
36216
|
+
return t("optionConstraint.error.removeOptions", { count: excess });
|
|
35891
36217
|
}
|
|
35892
36218
|
return void 0;
|
|
35893
36219
|
};
|
|
@@ -35904,8 +36230,9 @@ var init_OptionConstraintGroup = __esm({
|
|
|
35904
36230
|
className
|
|
35905
36231
|
}) => {
|
|
35906
36232
|
const eventBus = useEventBus();
|
|
35907
|
-
const
|
|
35908
|
-
const
|
|
36233
|
+
const { t } = useTranslate();
|
|
36234
|
+
const hint = constraintHint(constraint, t);
|
|
36235
|
+
const error = validateSelection(selected, constraint, t);
|
|
35909
36236
|
const inputName = `option-${groupId}`;
|
|
35910
36237
|
const labelTextSize = size === "sm" ? "text-sm" : "text-base";
|
|
35911
36238
|
const optionGap = size === "sm" ? "gap-2" : "gap-2.5";
|
|
@@ -36005,7 +36332,7 @@ var init_OptionConstraintGroup = __esm({
|
|
|
36005
36332
|
variant: "caption",
|
|
36006
36333
|
color: "warning",
|
|
36007
36334
|
className: "rounded border border-warning/40 px-1.5 py-0.5",
|
|
36008
|
-
children: "
|
|
36335
|
+
children: t("optionConstraint.outOfStock")
|
|
36009
36336
|
}
|
|
36010
36337
|
)
|
|
36011
36338
|
]
|
|
@@ -36327,6 +36654,7 @@ function changeBlockType(block, type) {
|
|
|
36327
36654
|
return { id: block.id, type, content: seed };
|
|
36328
36655
|
}
|
|
36329
36656
|
function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
36657
|
+
const { t } = useTranslate();
|
|
36330
36658
|
const [open, setOpen] = React97.useState(false);
|
|
36331
36659
|
const ref = React97.useRef(null);
|
|
36332
36660
|
React97.useEffect(() => {
|
|
@@ -36346,7 +36674,7 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
36346
36674
|
{
|
|
36347
36675
|
type: "button",
|
|
36348
36676
|
variant: "ghost",
|
|
36349
|
-
"aria-label": "
|
|
36677
|
+
"aria-label": t("richBlockEditor.blockActions"),
|
|
36350
36678
|
className: cn(
|
|
36351
36679
|
"inline-flex items-center justify-center",
|
|
36352
36680
|
"h-6 w-6 rounded-sm p-0 gap-0",
|
|
@@ -36368,7 +36696,7 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
36368
36696
|
"py-1 text-sm"
|
|
36369
36697
|
),
|
|
36370
36698
|
children: [
|
|
36371
|
-
/* @__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]) }),
|
|
36372
36700
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
36373
36701
|
Button,
|
|
36374
36702
|
{
|
|
@@ -36382,7 +36710,8 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
36382
36710
|
},
|
|
36383
36711
|
children: [
|
|
36384
36712
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "plus", className: "w-3.5 h-3.5" }),
|
|
36385
|
-
"
|
|
36713
|
+
" ",
|
|
36714
|
+
t("richBlockEditor.duplicate")
|
|
36386
36715
|
]
|
|
36387
36716
|
}
|
|
36388
36717
|
),
|
|
@@ -36399,14 +36728,15 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
36399
36728
|
},
|
|
36400
36729
|
children: [
|
|
36401
36730
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "trash", className: "w-3.5 h-3.5" }),
|
|
36402
|
-
"
|
|
36731
|
+
" ",
|
|
36732
|
+
t("common.delete")
|
|
36403
36733
|
]
|
|
36404
36734
|
}
|
|
36405
36735
|
),
|
|
36406
36736
|
CHANGEABLE_TYPES.includes(block.type) && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
36407
36737
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "my-1 border-t border-border" }),
|
|
36408
|
-
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground", children: "
|
|
36409
|
-
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(
|
|
36410
36740
|
Button,
|
|
36411
36741
|
{
|
|
36412
36742
|
type: "button",
|
|
@@ -36414,12 +36744,12 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
36414
36744
|
role: "menuitem",
|
|
36415
36745
|
className: "flex w-full items-center gap-2 px-2 py-1.5 text-left justify-start rounded-none",
|
|
36416
36746
|
onClick: () => {
|
|
36417
|
-
onChangeType(
|
|
36747
|
+
onChangeType(bt);
|
|
36418
36748
|
setOpen(false);
|
|
36419
36749
|
},
|
|
36420
|
-
children:
|
|
36750
|
+
children: t(BLOCK_TYPE_LABEL_KEY[bt])
|
|
36421
36751
|
},
|
|
36422
|
-
|
|
36752
|
+
bt
|
|
36423
36753
|
))
|
|
36424
36754
|
] })
|
|
36425
36755
|
]
|
|
@@ -36481,6 +36811,7 @@ function BlockRow({
|
|
|
36481
36811
|
onInsertAfter,
|
|
36482
36812
|
onChangeType
|
|
36483
36813
|
}) {
|
|
36814
|
+
const { t } = useTranslate();
|
|
36484
36815
|
const setContent = React97.useCallback(
|
|
36485
36816
|
(next) => onUpdate((b) => ({ ...b, content: next })),
|
|
36486
36817
|
[onUpdate]
|
|
@@ -36530,8 +36861,8 @@ function BlockRow({
|
|
|
36530
36861
|
tag: "h1",
|
|
36531
36862
|
value: block.content ?? "",
|
|
36532
36863
|
readOnly,
|
|
36533
|
-
placeholder: placeholder ?? "
|
|
36534
|
-
ariaLabel: "
|
|
36864
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.heading1"),
|
|
36865
|
+
ariaLabel: t("richBlockEditor.aria.heading1Block"),
|
|
36535
36866
|
className: "text-3xl font-bold leading-tight",
|
|
36536
36867
|
onValueChange: setContent
|
|
36537
36868
|
}
|
|
@@ -36543,8 +36874,8 @@ function BlockRow({
|
|
|
36543
36874
|
tag: "h2",
|
|
36544
36875
|
value: block.content ?? "",
|
|
36545
36876
|
readOnly,
|
|
36546
|
-
placeholder: placeholder ?? "
|
|
36547
|
-
ariaLabel: "
|
|
36877
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.heading2"),
|
|
36878
|
+
ariaLabel: t("richBlockEditor.aria.heading2Block"),
|
|
36548
36879
|
className: "text-2xl font-semibold leading-tight",
|
|
36549
36880
|
onValueChange: setContent
|
|
36550
36881
|
}
|
|
@@ -36556,8 +36887,8 @@ function BlockRow({
|
|
|
36556
36887
|
tag: "h3",
|
|
36557
36888
|
value: block.content ?? "",
|
|
36558
36889
|
readOnly,
|
|
36559
|
-
placeholder: placeholder ?? "
|
|
36560
|
-
ariaLabel: "
|
|
36890
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.heading3"),
|
|
36891
|
+
ariaLabel: t("richBlockEditor.aria.heading3Block"),
|
|
36561
36892
|
className: "text-xl font-semibold leading-tight",
|
|
36562
36893
|
onValueChange: setContent
|
|
36563
36894
|
}
|
|
@@ -36569,8 +36900,8 @@ function BlockRow({
|
|
|
36569
36900
|
tag: "blockquote",
|
|
36570
36901
|
value: block.content ?? "",
|
|
36571
36902
|
readOnly,
|
|
36572
|
-
placeholder: placeholder ?? "
|
|
36573
|
-
ariaLabel: "
|
|
36903
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.quote"),
|
|
36904
|
+
ariaLabel: t("richBlockEditor.aria.quoteBlock"),
|
|
36574
36905
|
className: "border-l-4 border-primary/60 pl-4 italic text-muted-foreground",
|
|
36575
36906
|
onValueChange: setContent
|
|
36576
36907
|
}
|
|
@@ -36578,13 +36909,13 @@ function BlockRow({
|
|
|
36578
36909
|
case "code":
|
|
36579
36910
|
return /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "rounded-md border border-border bg-muted/40", children: [
|
|
36580
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: [
|
|
36581
|
-
/* @__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") }),
|
|
36582
36913
|
!readOnly && /* @__PURE__ */ jsxRuntime.jsx(
|
|
36583
36914
|
Input,
|
|
36584
36915
|
{
|
|
36585
36916
|
inputType: "text",
|
|
36586
36917
|
value: String(block.metadata?.language ?? "plaintext"),
|
|
36587
|
-
"aria-label": "
|
|
36918
|
+
"aria-label": t("richBlockEditor.aria.codeLanguage"),
|
|
36588
36919
|
className: cn(
|
|
36589
36920
|
"h-6 w-32 rounded-sm border border-border bg-background",
|
|
36590
36921
|
"px-2 text-xs outline-none focus:ring-1 focus:ring-ring"
|
|
@@ -36600,8 +36931,8 @@ function BlockRow({
|
|
|
36600
36931
|
tag: "pre",
|
|
36601
36932
|
value: block.content ?? "",
|
|
36602
36933
|
readOnly,
|
|
36603
|
-
placeholder: placeholder ?? "
|
|
36604
|
-
ariaLabel: "
|
|
36934
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.code"),
|
|
36935
|
+
ariaLabel: t("richBlockEditor.aria.codeBlock"),
|
|
36605
36936
|
className: "block whitespace-pre-wrap p-3 font-mono text-sm leading-relaxed",
|
|
36606
36937
|
onValueChange: setContent
|
|
36607
36938
|
}
|
|
@@ -36614,7 +36945,7 @@ function BlockRow({
|
|
|
36614
36945
|
const caption = String(block.metadata?.caption ?? "");
|
|
36615
36946
|
const imgProps = {
|
|
36616
36947
|
src: url,
|
|
36617
|
-
alt: caption || "
|
|
36948
|
+
alt: caption || t("richBlockEditor.embeddedImage"),
|
|
36618
36949
|
className: "max-h-96 w-full rounded-md border border-border object-contain"
|
|
36619
36950
|
};
|
|
36620
36951
|
return /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "space-y-2", children: [
|
|
@@ -36628,7 +36959,8 @@ function BlockRow({
|
|
|
36628
36959
|
),
|
|
36629
36960
|
children: [
|
|
36630
36961
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "image", className: "mr-2 w-4 h-4" }),
|
|
36631
|
-
"
|
|
36962
|
+
" ",
|
|
36963
|
+
t("richBlockEditor.noImageUrl")
|
|
36632
36964
|
]
|
|
36633
36965
|
}
|
|
36634
36966
|
),
|
|
@@ -36639,7 +36971,7 @@ function BlockRow({
|
|
|
36639
36971
|
inputType: "url",
|
|
36640
36972
|
value: url,
|
|
36641
36973
|
placeholder: "https://example.com/image.png",
|
|
36642
|
-
"aria-label": "
|
|
36974
|
+
"aria-label": t("richBlockEditor.aria.imageUrl"),
|
|
36643
36975
|
className: cn(
|
|
36644
36976
|
"h-8 flex-1 rounded-sm border border-border bg-background",
|
|
36645
36977
|
"px-2 text-sm outline-none focus:ring-1 focus:ring-ring"
|
|
@@ -36652,8 +36984,8 @@ function BlockRow({
|
|
|
36652
36984
|
{
|
|
36653
36985
|
inputType: "text",
|
|
36654
36986
|
value: caption,
|
|
36655
|
-
placeholder: "
|
|
36656
|
-
"aria-label": "
|
|
36987
|
+
placeholder: t("richBlockEditor.placeholder.caption"),
|
|
36988
|
+
"aria-label": t("richBlockEditor.aria.imageCaption"),
|
|
36657
36989
|
className: cn(
|
|
36658
36990
|
"h-8 flex-1 rounded-sm border border-border bg-background",
|
|
36659
36991
|
"px-2 text-sm outline-none focus:ring-1 focus:ring-ring"
|
|
@@ -36684,8 +37016,8 @@ function BlockRow({
|
|
|
36684
37016
|
tag: "span",
|
|
36685
37017
|
value: child.content ?? "",
|
|
36686
37018
|
readOnly,
|
|
36687
|
-
placeholder: "
|
|
36688
|
-
ariaLabel: "
|
|
37019
|
+
placeholder: t("richBlockEditor.placeholder.listItem"),
|
|
37020
|
+
ariaLabel: t("richBlockEditor.aria.listItem"),
|
|
36689
37021
|
className: "inline-block min-w-[1ch] flex-1",
|
|
36690
37022
|
onValueChange: (next) => setChildContent(child.id, next)
|
|
36691
37023
|
}
|
|
@@ -36695,7 +37027,7 @@ function BlockRow({
|
|
|
36695
37027
|
{
|
|
36696
37028
|
type: "button",
|
|
36697
37029
|
variant: "ghost",
|
|
36698
|
-
"aria-label": "
|
|
37030
|
+
"aria-label": t("richBlockEditor.aria.removeListItem"),
|
|
36699
37031
|
className: cn(
|
|
36700
37032
|
"h-5 w-5 shrink-0 rounded-sm text-muted-foreground p-0 gap-0",
|
|
36701
37033
|
"opacity-0 group-hover/item:opacity-100 hover:bg-muted hover:text-foreground"
|
|
@@ -36717,7 +37049,8 @@ function BlockRow({
|
|
|
36717
37049
|
onClick: addListItem,
|
|
36718
37050
|
children: [
|
|
36719
37051
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "plus", className: "w-3 h-3" }),
|
|
36720
|
-
"
|
|
37052
|
+
" ",
|
|
37053
|
+
t("richBlockEditor.addItem")
|
|
36721
37054
|
]
|
|
36722
37055
|
}
|
|
36723
37056
|
) })
|
|
@@ -36733,8 +37066,8 @@ function BlockRow({
|
|
|
36733
37066
|
tag: "p",
|
|
36734
37067
|
value: block.content ?? "",
|
|
36735
37068
|
readOnly,
|
|
36736
|
-
placeholder: placeholder ?? "
|
|
36737
|
-
ariaLabel: "
|
|
37069
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.paragraph"),
|
|
37070
|
+
ariaLabel: t("richBlockEditor.aria.paragraphBlock"),
|
|
36738
37071
|
className: "leading-7",
|
|
36739
37072
|
onValueChange: setContent
|
|
36740
37073
|
}
|
|
@@ -36757,7 +37090,7 @@ function BlockRow({
|
|
|
36757
37090
|
{
|
|
36758
37091
|
type: "button",
|
|
36759
37092
|
variant: "ghost",
|
|
36760
|
-
"aria-label": "
|
|
37093
|
+
"aria-label": t("richBlockEditor.insertParagraphBelow"),
|
|
36761
37094
|
className: cn(
|
|
36762
37095
|
"inline-flex h-6 w-6 items-center justify-center rounded-sm p-0 gap-0",
|
|
36763
37096
|
"text-muted-foreground hover:bg-muted hover:text-foreground",
|
|
@@ -36784,7 +37117,7 @@ function BlockRow({
|
|
|
36784
37117
|
}
|
|
36785
37118
|
);
|
|
36786
37119
|
}
|
|
36787
|
-
var TOOLBAR_ENTRIES,
|
|
37120
|
+
var TOOLBAR_ENTRIES, BLOCK_TYPE_LABEL_KEY, CHANGEABLE_TYPES, _idSeq, BLOCK_TYPES, RichBlockEditor;
|
|
36788
37121
|
var init_RichBlockEditor = __esm({
|
|
36789
37122
|
"components/core/molecules/RichBlockEditor.tsx"() {
|
|
36790
37123
|
"use client";
|
|
@@ -36797,29 +37130,30 @@ var init_RichBlockEditor = __esm({
|
|
|
36797
37130
|
init_Input();
|
|
36798
37131
|
init_Icon();
|
|
36799
37132
|
init_useEventBus();
|
|
37133
|
+
init_useTranslate();
|
|
36800
37134
|
TOOLBAR_ENTRIES = [
|
|
36801
|
-
{ type: "paragraph",
|
|
36802
|
-
{ type: "heading-1",
|
|
36803
|
-
{ type: "heading-2",
|
|
36804
|
-
{ type: "heading-3",
|
|
36805
|
-
{ type: "bullet-list",
|
|
36806
|
-
{ type: "numbered-list",
|
|
36807
|
-
{ type: "quote",
|
|
36808
|
-
{ type: "code",
|
|
36809
|
-
{ type: "divider",
|
|
36810
|
-
{ 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 }
|
|
36811
37145
|
];
|
|
36812
|
-
|
|
36813
|
-
paragraph: "
|
|
36814
|
-
"heading-1": "
|
|
36815
|
-
"heading-2": "
|
|
36816
|
-
"heading-3": "
|
|
36817
|
-
"bullet-list": "
|
|
36818
|
-
"numbered-list": "
|
|
36819
|
-
quote: "
|
|
36820
|
-
code: "
|
|
36821
|
-
divider: "
|
|
36822
|
-
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"
|
|
36823
37157
|
};
|
|
36824
37158
|
CHANGEABLE_TYPES = [
|
|
36825
37159
|
"paragraph",
|
|
@@ -36853,6 +37187,7 @@ var init_RichBlockEditor = __esm({
|
|
|
36853
37187
|
showToolbar = true,
|
|
36854
37188
|
className
|
|
36855
37189
|
}) => {
|
|
37190
|
+
const { t } = useTranslate();
|
|
36856
37191
|
const [blocks, setBlocks] = React97.useState(
|
|
36857
37192
|
() => normalizeBlocks(initialBlocks)
|
|
36858
37193
|
);
|
|
@@ -36924,25 +37259,26 @@ var init_RichBlockEditor = __esm({
|
|
|
36924
37259
|
Box,
|
|
36925
37260
|
{
|
|
36926
37261
|
role: "toolbar",
|
|
36927
|
-
"aria-label": "
|
|
37262
|
+
"aria-label": t("richBlockEditor.editorToolbar"),
|
|
36928
37263
|
className: cn(
|
|
36929
37264
|
"flex flex-wrap items-center gap-1",
|
|
36930
37265
|
"border-b border-border bg-muted/30 px-2 py-2"
|
|
36931
37266
|
),
|
|
36932
37267
|
children: TOOLBAR_ENTRIES.map((entry) => {
|
|
36933
37268
|
const Icon3 = entry.icon;
|
|
37269
|
+
const entryLabel = t(entry.labelKey);
|
|
36934
37270
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
36935
37271
|
Button,
|
|
36936
37272
|
{
|
|
36937
37273
|
type: "button",
|
|
36938
37274
|
variant: "ghost",
|
|
36939
37275
|
size: "sm",
|
|
36940
|
-
"aria-label":
|
|
36941
|
-
title:
|
|
37276
|
+
"aria-label": t("richBlockEditor.insertEntry", { label: entryLabel }),
|
|
37277
|
+
title: entryLabel,
|
|
36942
37278
|
onClick: () => handleAppend(entry.type),
|
|
36943
37279
|
children: [
|
|
36944
37280
|
/* @__PURE__ */ jsxRuntime.jsx(Icon3, { size: 14 }),
|
|
36945
|
-
/* @__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 })
|
|
36946
37282
|
]
|
|
36947
37283
|
},
|
|
36948
37284
|
entry.type
|
|
@@ -36985,6 +37321,7 @@ var init_ReplyTree = __esm({
|
|
|
36985
37321
|
"use client";
|
|
36986
37322
|
init_cn();
|
|
36987
37323
|
init_useEventBus();
|
|
37324
|
+
init_useTranslate();
|
|
36988
37325
|
init_atoms2();
|
|
36989
37326
|
init_VoteStack();
|
|
36990
37327
|
ReplyTreeNode = ({
|
|
@@ -37004,6 +37341,7 @@ var init_ReplyTree = __esm({
|
|
|
37004
37341
|
showActions
|
|
37005
37342
|
}) => {
|
|
37006
37343
|
const eventBus = useEventBus();
|
|
37344
|
+
const { t } = useTranslate();
|
|
37007
37345
|
const hasReplies = !!node.replies && node.replies.length > 0;
|
|
37008
37346
|
const isCollapsed = collapsedSet.has(node.id);
|
|
37009
37347
|
const atMaxDepth = depth >= maxDepth;
|
|
@@ -37050,7 +37388,7 @@ var init_ReplyTree = __esm({
|
|
|
37050
37388
|
variant: "ghost",
|
|
37051
37389
|
size: "sm",
|
|
37052
37390
|
onClick: handleToggle,
|
|
37053
|
-
"aria-label": isCollapsed ? "
|
|
37391
|
+
"aria-label": isCollapsed ? t("replyTree.expandReplies") : t("replyTree.collapseReplies"),
|
|
37054
37392
|
"aria-expanded": !isCollapsed,
|
|
37055
37393
|
leftIcon: isCollapsed ? "chevron-right" : "chevron-down",
|
|
37056
37394
|
className: cn(
|
|
@@ -37091,7 +37429,7 @@ var init_ReplyTree = __esm({
|
|
|
37091
37429
|
onVote: handleVote,
|
|
37092
37430
|
size: "sm",
|
|
37093
37431
|
variant: "horizontal",
|
|
37094
|
-
label:
|
|
37432
|
+
label: t("replyTree.voteOnReplyBy", { author: node.authorName })
|
|
37095
37433
|
}
|
|
37096
37434
|
),
|
|
37097
37435
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -37101,8 +37439,8 @@ var init_ReplyTree = __esm({
|
|
|
37101
37439
|
size: "sm",
|
|
37102
37440
|
leftIcon: "message-square",
|
|
37103
37441
|
onClick: handleReply,
|
|
37104
|
-
"aria-label":
|
|
37105
|
-
children: "
|
|
37442
|
+
"aria-label": t("replyTree.replyTo", { author: node.authorName }),
|
|
37443
|
+
children: t("replyTree.reply")
|
|
37106
37444
|
}
|
|
37107
37445
|
),
|
|
37108
37446
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -37112,8 +37450,8 @@ var init_ReplyTree = __esm({
|
|
|
37112
37450
|
size: "sm",
|
|
37113
37451
|
leftIcon: "flag",
|
|
37114
37452
|
onClick: handleFlag,
|
|
37115
|
-
"aria-label":
|
|
37116
|
-
children: "
|
|
37453
|
+
"aria-label": t("replyTree.flagReplyBy", { author: node.authorName }),
|
|
37454
|
+
children: t("replyTree.flag")
|
|
37117
37455
|
}
|
|
37118
37456
|
)
|
|
37119
37457
|
] }),
|
|
@@ -37124,9 +37462,9 @@ var init_ReplyTree = __esm({
|
|
|
37124
37462
|
inputType: "textarea",
|
|
37125
37463
|
rows: 2,
|
|
37126
37464
|
value: draft,
|
|
37127
|
-
placeholder:
|
|
37465
|
+
placeholder: t("replyTree.replyToPlaceholder", { author: node.authorName }),
|
|
37128
37466
|
onChange: (e) => setDraft(e.target.value),
|
|
37129
|
-
"aria-label":
|
|
37467
|
+
"aria-label": t("replyTree.replyTo", { author: node.authorName })
|
|
37130
37468
|
}
|
|
37131
37469
|
),
|
|
37132
37470
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex flex-row gap-2 items-center", children: [
|
|
@@ -37138,10 +37476,10 @@ var init_ReplyTree = __esm({
|
|
|
37138
37476
|
leftIcon: "send",
|
|
37139
37477
|
onClick: handleSubmitReply,
|
|
37140
37478
|
disabled: !draft.trim(),
|
|
37141
|
-
children: "
|
|
37479
|
+
children: t("replyTree.send")
|
|
37142
37480
|
}
|
|
37143
37481
|
),
|
|
37144
|
-
/* @__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") })
|
|
37145
37483
|
] })
|
|
37146
37484
|
] }),
|
|
37147
37485
|
hasReplies && !isCollapsed && (atMaxDepth ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -37155,7 +37493,7 @@ var init_ReplyTree = __esm({
|
|
|
37155
37493
|
"self-start gap-1 px-0 h-auto",
|
|
37156
37494
|
"text-sm text-primary hover:underline hover:bg-transparent"
|
|
37157
37495
|
),
|
|
37158
|
-
children: "
|
|
37496
|
+
children: t("replyTree.continueThread")
|
|
37159
37497
|
}
|
|
37160
37498
|
) : /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex flex-col gap-2 mt-1", children: node.replies.map((child) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
37161
37499
|
ReplyTreeNode,
|
|
@@ -37194,6 +37532,7 @@ var init_ReplyTree = __esm({
|
|
|
37194
37532
|
showActions = true,
|
|
37195
37533
|
className
|
|
37196
37534
|
}) => {
|
|
37535
|
+
const { t } = useTranslate();
|
|
37197
37536
|
const nodeList = Array.isArray(nodes) ? nodes : nodes ? [nodes] : [];
|
|
37198
37537
|
const [collapsedSet, setCollapsedSet] = React97.useState(() => {
|
|
37199
37538
|
const acc = /* @__PURE__ */ new Set();
|
|
@@ -37212,7 +37551,7 @@ var init_ReplyTree = __esm({
|
|
|
37212
37551
|
});
|
|
37213
37552
|
}, []);
|
|
37214
37553
|
if (nodeList.length === 0) {
|
|
37215
|
-
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") });
|
|
37216
37555
|
}
|
|
37217
37556
|
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("flex flex-col gap-2 min-w-0", className), children: nodeList.map((node) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
37218
37557
|
ReplyTreeNode,
|
|
@@ -37290,6 +37629,7 @@ var init_VersionDiff = __esm({
|
|
|
37290
37629
|
"use client";
|
|
37291
37630
|
init_cn();
|
|
37292
37631
|
init_useEventBus();
|
|
37632
|
+
init_useTranslate();
|
|
37293
37633
|
init_atoms2();
|
|
37294
37634
|
init_Stack();
|
|
37295
37635
|
INLINE_STYLES = {
|
|
@@ -37312,6 +37652,7 @@ var init_VersionDiff = __esm({
|
|
|
37312
37652
|
language,
|
|
37313
37653
|
className
|
|
37314
37654
|
}) => {
|
|
37655
|
+
const { t } = useTranslate();
|
|
37315
37656
|
const eventBus = useEventBus();
|
|
37316
37657
|
const revisions = Array.isArray(revisionsProp) ? revisionsProp : [];
|
|
37317
37658
|
const fallbackBefore = revisions[0]?.id ?? "";
|
|
@@ -37393,24 +37734,24 @@ var init_VersionDiff = __esm({
|
|
|
37393
37734
|
children: [
|
|
37394
37735
|
/* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", align: "center", className: "flex-wrap", children: [
|
|
37395
37736
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "git-commit", size: "sm", className: "text-muted-foreground" }),
|
|
37396
|
-
/* @__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") }),
|
|
37397
37738
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "min-w-0 md:min-w-[160px]", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
37398
37739
|
Select,
|
|
37399
37740
|
{
|
|
37400
37741
|
options,
|
|
37401
37742
|
value: activeBeforeId,
|
|
37402
37743
|
onChange: handleBeforeChange,
|
|
37403
|
-
"aria-label": "
|
|
37744
|
+
"aria-label": t("versionDiff.beforeRevision")
|
|
37404
37745
|
}
|
|
37405
37746
|
) }),
|
|
37406
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "secondary", children: "to" }),
|
|
37747
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "secondary", children: t("versionDiff.to") }),
|
|
37407
37748
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "min-w-0 md:min-w-[160px]", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
37408
37749
|
Select,
|
|
37409
37750
|
{
|
|
37410
37751
|
options,
|
|
37411
37752
|
value: activeAfterId,
|
|
37412
37753
|
onChange: handleAfterChange,
|
|
37413
|
-
"aria-label": "
|
|
37754
|
+
"aria-label": t("versionDiff.afterRevision")
|
|
37414
37755
|
}
|
|
37415
37756
|
) }),
|
|
37416
37757
|
language && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "default", children: language }),
|
|
@@ -37431,7 +37772,7 @@ var init_VersionDiff = __esm({
|
|
|
37431
37772
|
size: "sm",
|
|
37432
37773
|
icon: activeView === "side-by-side" ? "align-left" : "columns",
|
|
37433
37774
|
onClick: handleViewToggle,
|
|
37434
|
-
"aria-label": activeView === "side-by-side" ? "
|
|
37775
|
+
"aria-label": activeView === "side-by-side" ? t("versionDiff.switchToInline") : t("versionDiff.switchToSideBySide")
|
|
37435
37776
|
}
|
|
37436
37777
|
),
|
|
37437
37778
|
(onRevert || revertEvent) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -37441,7 +37782,7 @@ var init_VersionDiff = __esm({
|
|
|
37441
37782
|
size: "sm",
|
|
37442
37783
|
icon: "rotate-ccw",
|
|
37443
37784
|
onClick: handleRevert,
|
|
37444
|
-
children: "
|
|
37785
|
+
children: t("versionDiff.revert")
|
|
37445
37786
|
}
|
|
37446
37787
|
)
|
|
37447
37788
|
] })
|
|
@@ -37458,12 +37799,12 @@ var init_VersionDiff = __esm({
|
|
|
37458
37799
|
children: [
|
|
37459
37800
|
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "caption", color: "secondary", className: "truncate", children: [
|
|
37460
37801
|
beforeRev?.label,
|
|
37461
|
-
beforeRev?.author ?
|
|
37802
|
+
beforeRev?.author ? t("versionDiff.byAuthor", { author: beforeRev.author }) : "",
|
|
37462
37803
|
beforeRev?.timestamp ? ` (${beforeRev.timestamp})` : ""
|
|
37463
37804
|
] }),
|
|
37464
37805
|
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "caption", color: "secondary", className: "truncate", children: [
|
|
37465
37806
|
afterRev?.label,
|
|
37466
|
-
afterRev?.author ?
|
|
37807
|
+
afterRev?.author ? t("versionDiff.byAuthor", { author: afterRev.author }) : "",
|
|
37467
37808
|
afterRev?.timestamp ? ` (${afterRev.timestamp})` : ""
|
|
37468
37809
|
] })
|
|
37469
37810
|
]
|
|
@@ -37856,10 +38197,12 @@ var init_DocPagination = __esm({
|
|
|
37856
38197
|
}
|
|
37857
38198
|
});
|
|
37858
38199
|
function DocSearch({
|
|
37859
|
-
placeholder
|
|
38200
|
+
placeholder,
|
|
37860
38201
|
onSearch,
|
|
37861
38202
|
className
|
|
37862
38203
|
}) {
|
|
38204
|
+
const { t } = useTranslate();
|
|
38205
|
+
const resolvedPlaceholder = placeholder ?? t("docSearch.placeholder");
|
|
37863
38206
|
const [query, setQuery] = React97.useState("");
|
|
37864
38207
|
const [results, setResults] = React97.useState([]);
|
|
37865
38208
|
const [isOpen, setIsOpen] = React97.useState(false);
|
|
@@ -37966,7 +38309,7 @@ function DocSearch({
|
|
|
37966
38309
|
Input,
|
|
37967
38310
|
{
|
|
37968
38311
|
inputType: "search",
|
|
37969
|
-
placeholder,
|
|
38312
|
+
placeholder: resolvedPlaceholder,
|
|
37970
38313
|
value: query,
|
|
37971
38314
|
onChange: handleChange,
|
|
37972
38315
|
onFocus: handleFocus,
|
|
@@ -38031,6 +38374,7 @@ var init_DocSearch = __esm({
|
|
|
38031
38374
|
init_Typography();
|
|
38032
38375
|
init_Icon();
|
|
38033
38376
|
init_Input();
|
|
38377
|
+
init_useTranslate();
|
|
38034
38378
|
}
|
|
38035
38379
|
});
|
|
38036
38380
|
var DocSidebarCategory, DocSidebar;
|
|
@@ -39626,8 +39970,8 @@ var init_SignaturePad = __esm({
|
|
|
39626
39970
|
init_useEventBus();
|
|
39627
39971
|
init_useTranslate();
|
|
39628
39972
|
SignaturePad = ({
|
|
39629
|
-
label
|
|
39630
|
-
helperText
|
|
39973
|
+
label,
|
|
39974
|
+
helperText,
|
|
39631
39975
|
strokeColor,
|
|
39632
39976
|
strokeWidth = 2,
|
|
39633
39977
|
height = 200,
|
|
@@ -39643,6 +39987,8 @@ var init_SignaturePad = __esm({
|
|
|
39643
39987
|
}) => {
|
|
39644
39988
|
const eventBus = useEventBus();
|
|
39645
39989
|
const { t } = useTranslate();
|
|
39990
|
+
const resolvedLabel = label ?? t("signaturePad.label");
|
|
39991
|
+
const resolvedHelperText = helperText ?? t("signaturePad.helperText");
|
|
39646
39992
|
const canvasRef = React97.useRef(null);
|
|
39647
39993
|
const [isDrawing, setIsDrawing] = React97.useState(false);
|
|
39648
39994
|
const [hasSignature, setHasSignature] = React97.useState(!!value);
|
|
@@ -39745,7 +40091,7 @@ var init_SignaturePad = __esm({
|
|
|
39745
40091
|
);
|
|
39746
40092
|
}
|
|
39747
40093
|
return /* @__PURE__ */ jsxRuntime.jsx(Card, { className: cn("p-4", className), children: /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "sm", children: [
|
|
39748
|
-
|
|
40094
|
+
resolvedLabel && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "label", weight: "medium", children: resolvedLabel }),
|
|
39749
40095
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
39750
40096
|
Box,
|
|
39751
40097
|
{
|
|
@@ -39774,7 +40120,7 @@ var init_SignaturePad = __esm({
|
|
|
39774
40120
|
)
|
|
39775
40121
|
}
|
|
39776
40122
|
),
|
|
39777
|
-
|
|
40123
|
+
resolvedHelperText && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "secondary", children: resolvedHelperText }),
|
|
39778
40124
|
!readOnly && /* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", justify: "end", children: [
|
|
39779
40125
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
39780
40126
|
Button,
|
|
@@ -39784,7 +40130,7 @@ var init_SignaturePad = __esm({
|
|
|
39784
40130
|
icon: LucideIcons2.Eraser,
|
|
39785
40131
|
onClick: clearSignature,
|
|
39786
40132
|
disabled: !hasSignature,
|
|
39787
|
-
children: "
|
|
40133
|
+
children: t("signaturePad.clear")
|
|
39788
40134
|
}
|
|
39789
40135
|
),
|
|
39790
40136
|
signEvent && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -39795,7 +40141,7 @@ var init_SignaturePad = __esm({
|
|
|
39795
40141
|
icon: LucideIcons2.Check,
|
|
39796
40142
|
onClick: confirmSignature,
|
|
39797
40143
|
disabled: !hasSignature,
|
|
39798
|
-
children: "
|
|
40144
|
+
children: t("signaturePad.confirm")
|
|
39799
40145
|
}
|
|
39800
40146
|
)
|
|
39801
40147
|
] })
|
|
@@ -44240,6 +44586,7 @@ function MasterDetail({
|
|
|
44240
44586
|
className,
|
|
44241
44587
|
...rest
|
|
44242
44588
|
}) {
|
|
44589
|
+
const { t } = useTranslate();
|
|
44243
44590
|
const loading = externalLoading ?? false;
|
|
44244
44591
|
const isLoading = externalIsLoading ?? false;
|
|
44245
44592
|
const error = externalError ?? null;
|
|
@@ -44252,8 +44599,8 @@ function MasterDetail({
|
|
|
44252
44599
|
isLoading: loading || isLoading,
|
|
44253
44600
|
error,
|
|
44254
44601
|
className,
|
|
44255
|
-
emptyTitle: "
|
|
44256
|
-
emptyDescription: "
|
|
44602
|
+
emptyTitle: t("table.empty.title"),
|
|
44603
|
+
emptyDescription: t("empty.createFirst"),
|
|
44257
44604
|
...rest
|
|
44258
44605
|
}
|
|
44259
44606
|
);
|
|
@@ -44262,6 +44609,7 @@ var init_MasterDetail = __esm({
|
|
|
44262
44609
|
"components/core/organisms/MasterDetail.tsx"() {
|
|
44263
44610
|
"use client";
|
|
44264
44611
|
init_DataTable();
|
|
44612
|
+
init_useTranslate();
|
|
44265
44613
|
MasterDetail.displayName = "MasterDetail";
|
|
44266
44614
|
}
|
|
44267
44615
|
});
|
|
@@ -44270,14 +44618,18 @@ var init_MasterDetailLayout = __esm({
|
|
|
44270
44618
|
"components/core/organisms/layout/MasterDetailLayout.tsx"() {
|
|
44271
44619
|
init_cn();
|
|
44272
44620
|
init_Typography();
|
|
44273
|
-
|
|
44274
|
-
|
|
44275
|
-
{
|
|
44276
|
-
|
|
44277
|
-
|
|
44278
|
-
|
|
44279
|
-
|
|
44280
|
-
|
|
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
|
+
};
|
|
44281
44633
|
MasterDetailLayout = ({
|
|
44282
44634
|
master,
|
|
44283
44635
|
detail,
|
|
@@ -44404,7 +44756,7 @@ var init_MediaGallery = __esm({
|
|
|
44404
44756
|
{
|
|
44405
44757
|
icon: LucideIcons2.Image,
|
|
44406
44758
|
title: t("display.noMedia"),
|
|
44407
|
-
description: "
|
|
44759
|
+
description: t("mediaGallery.noMediaDescription"),
|
|
44408
44760
|
className
|
|
44409
44761
|
}
|
|
44410
44762
|
);
|
|
@@ -44421,7 +44773,7 @@ var init_MediaGallery = __esm({
|
|
|
44421
44773
|
size: "sm",
|
|
44422
44774
|
icon: LucideIcons2.Upload,
|
|
44423
44775
|
action: "MEDIA_UPLOAD",
|
|
44424
|
-
children: "
|
|
44776
|
+
children: t("mediaGallery.upload")
|
|
44425
44777
|
}
|
|
44426
44778
|
),
|
|
44427
44779
|
actions?.map((action, idx) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -44435,10 +44787,7 @@ var init_MediaGallery = __esm({
|
|
|
44435
44787
|
))
|
|
44436
44788
|
] })
|
|
44437
44789
|
] }),
|
|
44438
|
-
selectable && selectedItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(HStack, { gap: "sm", align: "center", children: /* @__PURE__ */ jsxRuntime.
|
|
44439
|
-
selectedItems.length,
|
|
44440
|
-
" selected"
|
|
44441
|
-
] }) }),
|
|
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 }) }) }),
|
|
44442
44791
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
44443
44792
|
Box,
|
|
44444
44793
|
{
|
|
@@ -45312,7 +45661,7 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
45312
45661
|
EmptyState,
|
|
45313
45662
|
{
|
|
45314
45663
|
title: t("debug.noActiveTraits"),
|
|
45315
|
-
description: "
|
|
45664
|
+
description: t("debug.traitsMountHint"),
|
|
45316
45665
|
className: "py-8"
|
|
45317
45666
|
}
|
|
45318
45667
|
);
|
|
@@ -45322,14 +45671,11 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
45322
45671
|
header: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 w-full", children: [
|
|
45323
45672
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", weight: "semibold", className: "text-purple-600 dark:text-purple-400", children: trait.name }),
|
|
45324
45673
|
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "success", size: "sm", children: trait.currentState }),
|
|
45325
|
-
/* @__PURE__ */ jsxRuntime.
|
|
45326
|
-
trait.transitionCount,
|
|
45327
|
-
" transitions"
|
|
45328
|
-
] })
|
|
45674
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-500 ml-auto", children: t("debug.transitionsCount", { count: trait.transitionCount }) })
|
|
45329
45675
|
] }),
|
|
45330
45676
|
content: /* @__PURE__ */ jsxRuntime.jsxs(Stack, { gap: "sm", children: [
|
|
45331
45677
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
45332
|
-
/* @__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") }),
|
|
45333
45679
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1", children: trait.states.map((state) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
45334
45680
|
Badge,
|
|
45335
45681
|
{
|
|
@@ -45341,7 +45687,7 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
45341
45687
|
)) })
|
|
45342
45688
|
] }),
|
|
45343
45689
|
trait.transitions.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
45344
|
-
/* @__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") }),
|
|
45345
45691
|
/* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: trait.transitions.map((t2, i) => /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "font-mono", children: [
|
|
45346
45692
|
t2.from,
|
|
45347
45693
|
" \u2192 ",
|
|
@@ -45360,7 +45706,7 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
45360
45706
|
] }, i)) })
|
|
45361
45707
|
] }),
|
|
45362
45708
|
trait.guards.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
45363
|
-
/* @__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") }),
|
|
45364
45710
|
/* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: trait.guards.map((g, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
45365
45711
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", children: g.name }),
|
|
45366
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" })
|
|
@@ -45466,7 +45812,7 @@ function EntitiesTab({ snapshot }) {
|
|
|
45466
45812
|
EmptyState,
|
|
45467
45813
|
{
|
|
45468
45814
|
title: t("debug.noEntityData"),
|
|
45469
|
-
description: "
|
|
45815
|
+
description: t("debug.debugModeHint"),
|
|
45470
45816
|
className: "py-8"
|
|
45471
45817
|
}
|
|
45472
45818
|
);
|
|
@@ -45479,7 +45825,7 @@ function EntitiesTab({ snapshot }) {
|
|
|
45479
45825
|
EmptyState,
|
|
45480
45826
|
{
|
|
45481
45827
|
title: t("debug.noEntities"),
|
|
45482
|
-
description: "
|
|
45828
|
+
description: t("debug.entitiesSpawnHint"),
|
|
45483
45829
|
className: "py-8"
|
|
45484
45830
|
}
|
|
45485
45831
|
);
|
|
@@ -45487,7 +45833,7 @@ function EntitiesTab({ snapshot }) {
|
|
|
45487
45833
|
const singletonItems = singletonEntries.map(([name, data]) => ({
|
|
45488
45834
|
id: `singleton-${name}`,
|
|
45489
45835
|
header: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
45490
|
-
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "primary", size: "sm", children: "
|
|
45836
|
+
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "primary", size: "sm", children: t("debug.singleton") }),
|
|
45491
45837
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", weight: "semibold", className: "text-sky-600 dark:text-sky-400", children: name })
|
|
45492
45838
|
] }),
|
|
45493
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) })
|
|
@@ -45505,31 +45851,19 @@ function EntitiesTab({ snapshot }) {
|
|
|
45505
45851
|
}));
|
|
45506
45852
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--entities", children: [
|
|
45507
45853
|
singletonItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4", children: [
|
|
45508
|
-
/* @__PURE__ */ jsxRuntime.
|
|
45509
|
-
"Singletons (",
|
|
45510
|
-
singletonItems.length,
|
|
45511
|
-
")"
|
|
45512
|
-
] }),
|
|
45854
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.singletonsCount", { count: singletonItems.length }) }),
|
|
45513
45855
|
/* @__PURE__ */ jsxRuntime.jsx(Accordion, { items: singletonItems, multiple: true })
|
|
45514
45856
|
] }),
|
|
45515
45857
|
runtimeItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4", children: [
|
|
45516
|
-
/* @__PURE__ */ jsxRuntime.
|
|
45517
|
-
"Runtime (",
|
|
45518
|
-
runtimeEntities.length,
|
|
45519
|
-
")"
|
|
45520
|
-
] }),
|
|
45858
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.runtimeCount", { count: runtimeEntities.length }) }),
|
|
45521
45859
|
/* @__PURE__ */ jsxRuntime.jsx(Accordion, { items: runtimeItems, multiple: true }),
|
|
45522
|
-
runtimeEntities.length > 20 && /* @__PURE__ */ jsxRuntime.
|
|
45523
|
-
"+",
|
|
45524
|
-
runtimeEntities.length - 20,
|
|
45525
|
-
" more entities"
|
|
45526
|
-
] })
|
|
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 }) })
|
|
45527
45861
|
] }),
|
|
45528
45862
|
persistentEntries.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
45529
|
-
/* @__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") }),
|
|
45530
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: [
|
|
45531
45865
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", children: type }),
|
|
45532
|
-
/* @__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") })
|
|
45533
45867
|
] }, type)) })
|
|
45534
45868
|
] })
|
|
45535
45869
|
] });
|
|
@@ -45573,7 +45907,7 @@ function EventFlowTab({ events: events2 }) {
|
|
|
45573
45907
|
EmptyState,
|
|
45574
45908
|
{
|
|
45575
45909
|
title: t("debug.noEventsYet"),
|
|
45576
|
-
description: "
|
|
45910
|
+
description: t("debug.eventsExecuteHint"),
|
|
45577
45911
|
className: "py-8"
|
|
45578
45912
|
}
|
|
45579
45913
|
);
|
|
@@ -45584,17 +45918,13 @@ function EventFlowTab({ events: events2 }) {
|
|
|
45584
45918
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--events", children: [
|
|
45585
45919
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 mb-3 flex-wrap", children: [
|
|
45586
45920
|
/* @__PURE__ */ jsxRuntime.jsxs(ButtonGroup, { children: [
|
|
45587
|
-
/* @__PURE__ */ jsxRuntime.
|
|
45921
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
45588
45922
|
Button,
|
|
45589
45923
|
{
|
|
45590
45924
|
size: "sm",
|
|
45591
45925
|
variant: filter === "all" ? "primary" : "secondary",
|
|
45592
45926
|
onClick: () => setFilter("all"),
|
|
45593
|
-
children:
|
|
45594
|
-
"All (",
|
|
45595
|
-
events2.length,
|
|
45596
|
-
")"
|
|
45597
|
-
]
|
|
45927
|
+
children: t("debug.allCount", { count: events2.length })
|
|
45598
45928
|
}
|
|
45599
45929
|
),
|
|
45600
45930
|
eventTypes.map((type) => {
|
|
@@ -45624,7 +45954,7 @@ function EventFlowTab({ events: events2 }) {
|
|
|
45624
45954
|
onChange: (e) => setAutoScroll(e.target.checked)
|
|
45625
45955
|
}
|
|
45626
45956
|
),
|
|
45627
|
-
"
|
|
45957
|
+
t("debug.autoScroll")
|
|
45628
45958
|
] })
|
|
45629
45959
|
] }),
|
|
45630
45960
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -45682,7 +46012,7 @@ function GuardsPanel({ guards }) {
|
|
|
45682
46012
|
EmptyState,
|
|
45683
46013
|
{
|
|
45684
46014
|
title: t("debug.noGuardEvaluations"),
|
|
45685
|
-
description: "
|
|
46015
|
+
description: t("debug.guardEvaluationsHint"),
|
|
45686
46016
|
className: "py-8"
|
|
45687
46017
|
}
|
|
45688
46018
|
);
|
|
@@ -45713,15 +46043,15 @@ function GuardsPanel({ guards }) {
|
|
|
45713
46043
|
] }),
|
|
45714
46044
|
content: /* @__PURE__ */ jsxRuntime.jsxs(Stack, { gap: "sm", children: [
|
|
45715
46045
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
45716
|
-
/* @__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") }),
|
|
45717
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 })
|
|
45718
46048
|
] }),
|
|
45719
46049
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
45720
|
-
/* @__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") }),
|
|
45721
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) })
|
|
45722
46052
|
] }),
|
|
45723
46053
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
45724
|
-
/* @__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") }),
|
|
45725
46055
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", children: guard.context.traitName })
|
|
45726
46056
|
] })
|
|
45727
46057
|
] })
|
|
@@ -45739,9 +46069,9 @@ function GuardsPanel({ guards }) {
|
|
|
45739
46069
|
] })
|
|
45740
46070
|
] }),
|
|
45741
46071
|
/* @__PURE__ */ jsxRuntime.jsxs(ButtonGroup, { children: [
|
|
45742
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", variant: filter === "all" ? "primary" : "secondary", onClick: () => setFilter("all"), children: "
|
|
45743
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", variant: filter === "passed" ? "primary" : "secondary", onClick: () => setFilter("passed"), children: "
|
|
45744
|
-
/* @__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") })
|
|
45745
46075
|
] })
|
|
45746
46076
|
] }),
|
|
45747
46077
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-80 overflow-y-auto", children: /* @__PURE__ */ jsxRuntime.jsx(Accordion, { items: accordionItems }) })
|
|
@@ -45867,7 +46197,7 @@ function TransitionTimeline({ transitions }) {
|
|
|
45867
46197
|
EmptyState,
|
|
45868
46198
|
{
|
|
45869
46199
|
title: t("debug.noTransitionsRecorded"),
|
|
45870
|
-
description: "
|
|
46200
|
+
description: t("debug.transitionsProcessHint"),
|
|
45871
46201
|
className: "py-8"
|
|
45872
46202
|
}
|
|
45873
46203
|
);
|
|
@@ -45884,10 +46214,7 @@ function TransitionTimeline({ transitions }) {
|
|
|
45884
46214
|
const sorted = [...transitions].reverse();
|
|
45885
46215
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--timeline", children: [
|
|
45886
46216
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between mb-2", children: [
|
|
45887
|
-
/* @__PURE__ */ jsxRuntime.
|
|
45888
|
-
transitions.length,
|
|
45889
|
-
" transitions recorded"
|
|
45890
|
-
] }),
|
|
46217
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-500", children: t("debug.transitionsRecorded", { count: transitions.length }) }),
|
|
45891
46218
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-1 text-xs text-gray-500 cursor-pointer", children: [
|
|
45892
46219
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
45893
46220
|
Checkbox,
|
|
@@ -45896,7 +46223,7 @@ function TransitionTimeline({ transitions }) {
|
|
|
45896
46223
|
onChange: (e) => setAutoScroll(e.target.checked)
|
|
45897
46224
|
}
|
|
45898
46225
|
),
|
|
45899
|
-
"
|
|
46226
|
+
t("debug.autoScroll")
|
|
45900
46227
|
] })
|
|
45901
46228
|
] }),
|
|
45902
46229
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -45939,15 +46266,13 @@ function TransitionTimeline({ transitions }) {
|
|
|
45939
46266
|
variant: trace.guardResult ? "success" : "danger",
|
|
45940
46267
|
size: "sm",
|
|
45941
46268
|
children: [
|
|
45942
|
-
"
|
|
46269
|
+
t("debug.guardLabel"),
|
|
46270
|
+
" ",
|
|
45943
46271
|
trace.guardResult ? "\u2713" : "\u2717"
|
|
45944
46272
|
]
|
|
45945
46273
|
}
|
|
45946
46274
|
),
|
|
45947
|
-
/* @__PURE__ */ jsxRuntime.
|
|
45948
|
-
trace.effects.length,
|
|
45949
|
-
" effects"
|
|
45950
|
-
] })
|
|
46275
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-400 ml-auto", children: t("debug.effectsCount", { count: trace.effects.length }) })
|
|
45951
46276
|
] }),
|
|
45952
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: [
|
|
45953
46278
|
/* @__PURE__ */ jsxRuntime.jsx(EffectBadge, { effect }),
|
|
@@ -45996,13 +46321,13 @@ function ServerBridgeTab({ bridge }) {
|
|
|
45996
46321
|
EmptyState,
|
|
45997
46322
|
{
|
|
45998
46323
|
title: t("debug.noBridgeData"),
|
|
45999
|
-
description: "
|
|
46324
|
+
description: t("debug.bridgeInitHint"),
|
|
46000
46325
|
className: "py-8"
|
|
46001
46326
|
}
|
|
46002
46327
|
);
|
|
46003
46328
|
}
|
|
46004
46329
|
const formatTime4 = (ts) => {
|
|
46005
|
-
if (ts === 0) return "
|
|
46330
|
+
if (ts === 0) return t("debug.never");
|
|
46006
46331
|
const d = new Date(ts);
|
|
46007
46332
|
return d.toLocaleTimeString("en-US", {
|
|
46008
46333
|
hour12: false,
|
|
@@ -46015,14 +46340,14 @@ function ServerBridgeTab({ bridge }) {
|
|
|
46015
46340
|
/* @__PURE__ */ jsxRuntime.jsxs(Card, { className: "p-3", children: [
|
|
46016
46341
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 mb-3", children: [
|
|
46017
46342
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: `w-3 h-3 rounded-full ${bridge.connected ? "bg-green-500 animate-pulse" : "bg-red-500"}` }),
|
|
46018
|
-
/* @__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") })
|
|
46019
46344
|
] }),
|
|
46020
46345
|
/* @__PURE__ */ jsxRuntime.jsxs(Stack, { gap: "xs", children: [
|
|
46021
46346
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
46022
46347
|
StatRow,
|
|
46023
46348
|
{
|
|
46024
46349
|
label: t("debug.status"),
|
|
46025
|
-
value: bridge.connected ? "
|
|
46350
|
+
value: bridge.connected ? t("debug.connected") : t("debug.disconnected"),
|
|
46026
46351
|
variant: bridge.connected ? "success" : "danger"
|
|
46027
46352
|
}
|
|
46028
46353
|
),
|
|
@@ -46050,13 +46375,10 @@ function ServerBridgeTab({ bridge }) {
|
|
|
46050
46375
|
] })
|
|
46051
46376
|
] }),
|
|
46052
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: [
|
|
46053
|
-
/* @__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") }),
|
|
46054
46379
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-red-500 font-mono break-all", children: bridge.lastError })
|
|
46055
46380
|
] }),
|
|
46056
|
-
bridge.connected && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-center py-2", children: /* @__PURE__ */ jsxRuntime.
|
|
46057
|
-
bridge.eventsForwarded + bridge.eventsReceived,
|
|
46058
|
-
" total events processed"
|
|
46059
|
-
] }) })
|
|
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 }) }) })
|
|
46060
46382
|
] }) });
|
|
46061
46383
|
}
|
|
46062
46384
|
var init_ServerBridgeTab = __esm({
|
|
@@ -46166,7 +46488,7 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
46166
46488
|
EmptyState,
|
|
46167
46489
|
{
|
|
46168
46490
|
title: t("debug.noActiveTraits"),
|
|
46169
|
-
description: "
|
|
46491
|
+
description: t("debug.traitsInitHint"),
|
|
46170
46492
|
className: "py-8"
|
|
46171
46493
|
}
|
|
46172
46494
|
);
|
|
@@ -46183,7 +46505,7 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
46183
46505
|
};
|
|
46184
46506
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--dispatch", children: [
|
|
46185
46507
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3", children: [
|
|
46186
|
-
/* @__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") }),
|
|
46187
46509
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1", children: traits2.map((trait) => /* @__PURE__ */ jsxRuntime.jsxs(Badge, { variant: "success", size: "sm", children: [
|
|
46188
46510
|
trait.name,
|
|
46189
46511
|
": ",
|
|
@@ -46191,8 +46513,8 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
46191
46513
|
] }, trait.id)) })
|
|
46192
46514
|
] }),
|
|
46193
46515
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3", children: [
|
|
46194
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
46195
|
-
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: [
|
|
46196
46518
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
46197
46519
|
Button,
|
|
46198
46520
|
{
|
|
@@ -46204,15 +46526,15 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
46204
46526
|
}
|
|
46205
46527
|
),
|
|
46206
46528
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-500", children: transitions.map((t2) => `${t2.from} -> ${t2.to}`).join(", ") }),
|
|
46207
|
-
transitions.some((
|
|
46529
|
+
transitions.some((tr) => tr.guard) && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "warning", size: "sm", children: t("debug.guarded") })
|
|
46208
46530
|
] }, event)) })
|
|
46209
46531
|
] }),
|
|
46210
46532
|
unavailableEvents.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3", children: [
|
|
46211
|
-
/* @__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") }),
|
|
46212
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)) })
|
|
46213
46535
|
] }),
|
|
46214
46536
|
log16.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
46215
|
-
/* @__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") }),
|
|
46216
46538
|
/* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: log16.map((entry, i) => /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "font-mono text-xs", children: [
|
|
46217
46539
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-400", children: entry.traitName }),
|
|
46218
46540
|
" ",
|
|
@@ -46243,21 +46565,20 @@ var init_RuntimeDebugger = __esm({
|
|
|
46243
46565
|
}
|
|
46244
46566
|
});
|
|
46245
46567
|
function ServerResponseRow({ sr }) {
|
|
46568
|
+
const { t } = useTranslate();
|
|
46246
46569
|
const entityEntries = Object.entries(sr.dataEntities);
|
|
46247
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: [
|
|
46248
46571
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
46249
46572
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: sr.success ? "text-green-600 dark:text-green-400" : "text-red-600 dark:text-red-400", children: [
|
|
46250
46573
|
sr.success ? "\u2713" : "\u2717",
|
|
46251
|
-
"
|
|
46574
|
+
" ",
|
|
46575
|
+
t("debug.server")
|
|
46252
46576
|
] }),
|
|
46253
46577
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-600 dark:text-purple-300", children: sr.orbitalName }),
|
|
46254
|
-
sr.clientEffects > 0 && /* @__PURE__ */ jsxRuntime.
|
|
46255
|
-
sr.clientEffects,
|
|
46256
|
-
" clientEffect",
|
|
46257
|
-
sr.clientEffects !== 1 ? "s" : ""
|
|
46258
|
-
] }),
|
|
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 }) }),
|
|
46259
46579
|
sr.emittedEvents.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "px-1 rounded bg-blue-500/15 text-blue-300", children: [
|
|
46260
|
-
"
|
|
46580
|
+
t("debug.emitLabel"),
|
|
46581
|
+
" ",
|
|
46261
46582
|
sr.emittedEvents.join(", ")
|
|
46262
46583
|
] }),
|
|
46263
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 })
|
|
@@ -46265,13 +46586,12 @@ function ServerResponseRow({ sr }) {
|
|
|
46265
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: [
|
|
46266
46587
|
name,
|
|
46267
46588
|
": ",
|
|
46268
|
-
count
|
|
46269
|
-
" row",
|
|
46270
|
-
count !== 1 ? "s" : ""
|
|
46589
|
+
t("debug.rowsCount", { count })
|
|
46271
46590
|
] }, name)) })
|
|
46272
46591
|
] });
|
|
46273
46592
|
}
|
|
46274
46593
|
function TransitionRow({ trace }) {
|
|
46594
|
+
const { t } = useTranslate();
|
|
46275
46595
|
const isServerEntry = !!trace.serverResponse && trace.traitName.startsWith("server:");
|
|
46276
46596
|
const hasFailedEffects = trace.effects.some((e) => e.status === "failed");
|
|
46277
46597
|
if (isServerEntry && trace.serverResponse) {
|
|
@@ -46279,7 +46599,7 @@ function TransitionRow({ trace }) {
|
|
|
46279
46599
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-2 text-xs font-mono", children: [
|
|
46280
46600
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "mt-1.5 w-1.5 h-1.5 rounded-full flex-shrink-0 bg-purple-500" }),
|
|
46281
46601
|
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "warning", size: "sm", className: "flex-shrink-0", children: trace.event }),
|
|
46282
|
-
/* @__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") })
|
|
46283
46603
|
] }),
|
|
46284
46604
|
/* @__PURE__ */ jsxRuntime.jsx(ServerResponseRow, { sr: trace.serverResponse })
|
|
46285
46605
|
] });
|
|
@@ -46320,6 +46640,7 @@ function VerifyModePanel({
|
|
|
46320
46640
|
serverCount,
|
|
46321
46641
|
localCount
|
|
46322
46642
|
}) {
|
|
46643
|
+
const { t } = useTranslate();
|
|
46323
46644
|
const [expanded, setExpanded] = React97__namespace.useState(true);
|
|
46324
46645
|
const scrollRef = React97__namespace.useRef(null);
|
|
46325
46646
|
const prevCountRef = React97__namespace.useRef(0);
|
|
@@ -46350,30 +46671,20 @@ function VerifyModePanel({
|
|
|
46350
46671
|
onClick: () => setExpanded((v) => !v),
|
|
46351
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",
|
|
46352
46673
|
"aria-expanded": expanded,
|
|
46353
|
-
"aria-label": expanded ? "
|
|
46674
|
+
"aria-label": expanded ? t("debug.collapseVerificationTimeline") : t("debug.expandVerificationTimeline"),
|
|
46354
46675
|
"data-testid": "debugger-verify-toggle",
|
|
46355
46676
|
children: [
|
|
46356
46677
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground/50 w-3", "aria-hidden": true, children: expanded ? "\u25BE" : "\u25B8" }),
|
|
46357
|
-
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: failedChecks > 0 ? "danger" : "success", size: "sm", children: failedChecks > 0 ?
|
|
46358
|
-
/* @__PURE__ */ jsxRuntime.
|
|
46359
|
-
|
|
46360
|
-
" local"
|
|
46361
|
-
] }),
|
|
46362
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-purple-600 dark:text-purple-400", children: [
|
|
46363
|
-
serverCount,
|
|
46364
|
-
" server"
|
|
46365
|
-
] }),
|
|
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 }) }),
|
|
46366
46681
|
traitStates && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-cyan-600 dark:text-cyan-400 truncate max-w-[400px]", children: traitStates }),
|
|
46367
|
-
!expanded && transitions.length > 0 && /* @__PURE__ */ jsxRuntime.
|
|
46368
|
-
transitions.length,
|
|
46369
|
-
" transition",
|
|
46370
|
-
transitions.length !== 1 ? "s" : ""
|
|
46371
|
-
] })
|
|
46682
|
+
!expanded && transitions.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-auto text-foreground/50", children: t("debug.transitionsCount", { count: transitions.length }) })
|
|
46372
46683
|
]
|
|
46373
46684
|
}
|
|
46374
46685
|
),
|
|
46375
46686
|
expanded && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 flex overflow-hidden", children: [
|
|
46376
|
-
/* @__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)) }) }) }),
|
|
46377
46688
|
/* @__PURE__ */ jsxRuntime.jsx(WalkMinimap, {})
|
|
46378
46689
|
] })
|
|
46379
46690
|
]
|
|
@@ -46389,6 +46700,7 @@ function RuntimeDebugger({
|
|
|
46389
46700
|
defaultTab,
|
|
46390
46701
|
schema
|
|
46391
46702
|
}) {
|
|
46703
|
+
const { t } = useTranslate();
|
|
46392
46704
|
const [isCollapsed, setIsCollapsed] = React97__namespace.useState(mode === "verify" ? true : defaultCollapsed);
|
|
46393
46705
|
const [isVisible, setIsVisible] = React97__namespace.useState(mode === "inline" || mode === "verify" || isDebugEnabled2());
|
|
46394
46706
|
const debugData = useDebugData();
|
|
@@ -46427,55 +46739,55 @@ function RuntimeDebugger({
|
|
|
46427
46739
|
const tabItems = [
|
|
46428
46740
|
{
|
|
46429
46741
|
id: "dispatch",
|
|
46430
|
-
label: "
|
|
46742
|
+
label: t("debug.tabDispatch"),
|
|
46431
46743
|
badge: debugData.traits.length || void 0,
|
|
46432
46744
|
content: /* @__PURE__ */ jsxRuntime.jsx(EventDispatcherTab, { traits: debugData.traits, schema })
|
|
46433
46745
|
},
|
|
46434
46746
|
{
|
|
46435
46747
|
id: "verify",
|
|
46436
|
-
label: failedChecks > 0 ? "
|
|
46748
|
+
label: failedChecks > 0 ? t("debug.tabVerifyAlert") : t("debug.tabVerify"),
|
|
46437
46749
|
badge: verification.summary.totalChecks || void 0,
|
|
46438
46750
|
content: /* @__PURE__ */ jsxRuntime.jsx(VerificationTab, { checks: verification.checks, summary: verification.summary })
|
|
46439
46751
|
},
|
|
46440
46752
|
{
|
|
46441
46753
|
id: "timeline",
|
|
46442
|
-
label: "
|
|
46754
|
+
label: t("debug.tabTimeline"),
|
|
46443
46755
|
badge: verification.transitions.length || void 0,
|
|
46444
46756
|
content: /* @__PURE__ */ jsxRuntime.jsx(TransitionTimeline, { transitions: verification.transitions })
|
|
46445
46757
|
},
|
|
46446
46758
|
{
|
|
46447
46759
|
id: "bridge",
|
|
46448
|
-
label: "
|
|
46760
|
+
label: t("debug.tabBridge"),
|
|
46449
46761
|
badge: verification.bridge?.connected ? void 0 : 1,
|
|
46450
46762
|
content: /* @__PURE__ */ jsxRuntime.jsx(ServerBridgeTab, { bridge: verification.bridge })
|
|
46451
46763
|
},
|
|
46452
46764
|
{
|
|
46453
46765
|
id: "traits",
|
|
46454
|
-
label: "
|
|
46766
|
+
label: t("debug.tabTraits"),
|
|
46455
46767
|
badge: debugData.traits.length || void 0,
|
|
46456
46768
|
content: /* @__PURE__ */ jsxRuntime.jsx(TraitsTab, { traits: debugData.traits })
|
|
46457
46769
|
},
|
|
46458
46770
|
{
|
|
46459
46771
|
id: "ticks",
|
|
46460
|
-
label: "
|
|
46461
|
-
badge: debugData.ticks.filter((
|
|
46772
|
+
label: t("debug.tabTicks"),
|
|
46773
|
+
badge: debugData.ticks.filter((tick) => tick.active).length || void 0,
|
|
46462
46774
|
content: /* @__PURE__ */ jsxRuntime.jsx(TicksTab, { ticks: debugData.ticks })
|
|
46463
46775
|
},
|
|
46464
46776
|
{
|
|
46465
46777
|
id: "entities",
|
|
46466
|
-
label: "
|
|
46778
|
+
label: t("debug.tabEntities"),
|
|
46467
46779
|
badge: debugData.entitySnapshot?.runtime.length || void 0,
|
|
46468
46780
|
content: /* @__PURE__ */ jsxRuntime.jsx(EntitiesTab, { snapshot: debugData.entitySnapshot })
|
|
46469
46781
|
},
|
|
46470
46782
|
{
|
|
46471
46783
|
id: "events",
|
|
46472
|
-
label: "
|
|
46784
|
+
label: t("debug.tabEvents"),
|
|
46473
46785
|
badge: debugData.events.length > 0 ? debugData.events.length : void 0,
|
|
46474
46786
|
content: /* @__PURE__ */ jsxRuntime.jsx(EventFlowTab, { events: debugData.events })
|
|
46475
46787
|
},
|
|
46476
46788
|
{
|
|
46477
46789
|
id: "guards",
|
|
46478
|
-
label: "
|
|
46790
|
+
label: t("debug.tabGuards"),
|
|
46479
46791
|
badge: debugData.guards.filter((g) => !g.result).length || void 0,
|
|
46480
46792
|
content: /* @__PURE__ */ jsxRuntime.jsx(GuardsPanel, { guards: debugData.guards })
|
|
46481
46793
|
}
|
|
@@ -46503,15 +46815,10 @@ function RuntimeDebugger({
|
|
|
46503
46815
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
46504
46816
|
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "h6", style: { fontSize: "0.75rem" }, children: [
|
|
46505
46817
|
isCollapsed ? "\u25B6" : "\u25BC",
|
|
46506
|
-
"
|
|
46818
|
+
" ",
|
|
46819
|
+
t("debug.debugger")
|
|
46507
46820
|
] }),
|
|
46508
|
-
failedChecks > 0 ? /* @__PURE__ */ jsxRuntime.
|
|
46509
|
-
failedChecks,
|
|
46510
|
-
" failed"
|
|
46511
|
-
] }) : debugData.traits.length > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(Badge, { variant: "success", size: "sm", children: [
|
|
46512
|
-
debugData.traits.length,
|
|
46513
|
-
" traits"
|
|
46514
|
-
] }) : /* @__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") })
|
|
46515
46822
|
] })
|
|
46516
46823
|
}
|
|
46517
46824
|
),
|
|
@@ -46529,9 +46836,9 @@ function RuntimeDebugger({
|
|
|
46529
46836
|
);
|
|
46530
46837
|
}
|
|
46531
46838
|
if (mode === "verify") {
|
|
46532
|
-
const traitStates = debugData.traits.map((
|
|
46533
|
-
const serverEntries = verification.transitions.filter((
|
|
46534
|
-
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);
|
|
46535
46842
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
46536
46843
|
VerifyModePanel,
|
|
46537
46844
|
{
|
|
@@ -46563,7 +46870,7 @@ function RuntimeDebugger({
|
|
|
46563
46870
|
variant: "secondary",
|
|
46564
46871
|
size: "sm",
|
|
46565
46872
|
className: "runtime-debugger__toggle",
|
|
46566
|
-
title: "
|
|
46873
|
+
title: t("debug.openDebugger"),
|
|
46567
46874
|
children: failedChecks > 0 ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "relative", children: [
|
|
46568
46875
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "V" }),
|
|
46569
46876
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute -top-1 -right-2 w-2 h-2 bg-red-500 rounded-full" })
|
|
@@ -46573,11 +46880,8 @@ function RuntimeDebugger({
|
|
|
46573
46880
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "runtime-debugger__header", children: [
|
|
46574
46881
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
46575
46882
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-lg", children: "V" }),
|
|
46576
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h6", children: "
|
|
46577
|
-
failedChecks > 0 ? /* @__PURE__ */ jsxRuntime.
|
|
46578
|
-
failedChecks,
|
|
46579
|
-
" failed"
|
|
46580
|
-
] }) : 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") })
|
|
46581
46885
|
] }),
|
|
46582
46886
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
46583
46887
|
Button,
|
|
@@ -46585,7 +46889,7 @@ function RuntimeDebugger({
|
|
|
46585
46889
|
onClick: () => setIsCollapsed(true),
|
|
46586
46890
|
variant: "ghost",
|
|
46587
46891
|
size: "sm",
|
|
46588
|
-
title: "
|
|
46892
|
+
title: t("debug.close"),
|
|
46589
46893
|
children: "x"
|
|
46590
46894
|
}
|
|
46591
46895
|
)
|
|
@@ -46599,7 +46903,7 @@ function RuntimeDebugger({
|
|
|
46599
46903
|
className: "runtime-debugger__tabs"
|
|
46600
46904
|
}
|
|
46601
46905
|
) }),
|
|
46602
|
-
/* @__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") }) })
|
|
46603
46907
|
] })
|
|
46604
46908
|
}
|
|
46605
46909
|
);
|
|
@@ -46625,6 +46929,7 @@ var init_RuntimeDebugger2 = __esm({
|
|
|
46625
46929
|
init_TransitionTimeline();
|
|
46626
46930
|
init_ServerBridgeTab();
|
|
46627
46931
|
init_EventDispatcherTab();
|
|
46932
|
+
init_useTranslate();
|
|
46628
46933
|
init_RuntimeDebugger();
|
|
46629
46934
|
RuntimeDebugger.displayName = "RuntimeDebugger";
|
|
46630
46935
|
}
|
|
@@ -47913,7 +48218,7 @@ var init_StatCard = __esm({
|
|
|
47913
48218
|
}
|
|
47914
48219
|
);
|
|
47915
48220
|
}
|
|
47916
|
-
const label = schemaStats?.[0]?.label || labelToUse || "
|
|
48221
|
+
const label = schemaStats?.[0]?.label || labelToUse || t("statCard.defaultLabel");
|
|
47917
48222
|
const normalizedPropValue = Array.isArray(propValue) ? propValue[0] ?? propValue.length : propValue;
|
|
47918
48223
|
const value = schemaStats?.[0]?.value ?? normalizedPropValue ?? 0;
|
|
47919
48224
|
const trendDirection = manualDirection || (calculatedTrend === void 0 || calculatedTrend === 0 ? "neutral" : calculatedTrend > 0 ? "up" : "down");
|
|
@@ -47956,7 +48261,7 @@ var init_StatCard = __esm({
|
|
|
47956
48261
|
]
|
|
47957
48262
|
}
|
|
47958
48263
|
),
|
|
47959
|
-
/* @__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") })
|
|
47960
48265
|
] }),
|
|
47961
48266
|
subtitle && !calculatedTrend && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", color: "secondary", children: subtitle })
|
|
47962
48267
|
] }),
|
|
@@ -52161,6 +52466,9 @@ var AvlEmitListen = ({
|
|
|
52161
52466
|
] });
|
|
52162
52467
|
};
|
|
52163
52468
|
AvlEmitListen.displayName = "AvlEmitListen";
|
|
52469
|
+
|
|
52470
|
+
// components/avl/molecules/AvlSlotMap.tsx
|
|
52471
|
+
init_useTranslate();
|
|
52164
52472
|
var SLOT_PRESETS = {
|
|
52165
52473
|
header: { x: 10, y: 5, width: 340, height: 35 },
|
|
52166
52474
|
main: { x: 120, y: 50, width: 230, height: 195 },
|
|
@@ -52205,6 +52513,7 @@ var AvlSlotMap = ({
|
|
|
52205
52513
|
color = "var(--color-primary)",
|
|
52206
52514
|
animated = false
|
|
52207
52515
|
}) => {
|
|
52516
|
+
const { t } = useTranslate();
|
|
52208
52517
|
const ox = (600 - pageWidth) / 2;
|
|
52209
52518
|
const oy = (400 - pageHeight) / 2;
|
|
52210
52519
|
let unknownIdx = 0;
|
|
@@ -52255,7 +52564,7 @@ var AvlSlotMap = ({
|
|
|
52255
52564
|
fontSize: 10,
|
|
52256
52565
|
fontFamily: "inherit",
|
|
52257
52566
|
fontWeight: "bold",
|
|
52258
|
-
children: "
|
|
52567
|
+
children: t("avl.pageLayout")
|
|
52259
52568
|
}
|
|
52260
52569
|
),
|
|
52261
52570
|
resolvedSlots.map((slot) => {
|
|
@@ -52304,7 +52613,7 @@ var AvlSlotMap = ({
|
|
|
52304
52613
|
opacity: 0.6,
|
|
52305
52614
|
children: [
|
|
52306
52615
|
slot.name,
|
|
52307
|
-
isOverlay ?
|
|
52616
|
+
isOverlay ? ` ${t("avl.overlaySuffix")}` : ""
|
|
52308
52617
|
]
|
|
52309
52618
|
}
|
|
52310
52619
|
)
|
|
@@ -53236,23 +53545,25 @@ var SystemNode = ({ data }) => {
|
|
|
53236
53545
|
SystemNode.displayName = "SystemNode";
|
|
53237
53546
|
|
|
53238
53547
|
// components/avl/molecules/DetailView.tsx
|
|
53548
|
+
init_useTranslate();
|
|
53239
53549
|
init_AvlState();
|
|
53240
53550
|
init_AvlEffect();
|
|
53241
53551
|
init_types();
|
|
53242
53552
|
var DetailView = ({ data }) => {
|
|
53553
|
+
const { t } = useTranslate();
|
|
53243
53554
|
const traitName = data.traits[0]?.name;
|
|
53244
53555
|
const traitData = traitName ? data.traitDetails[traitName] : void 0;
|
|
53245
53556
|
if (!traitData || traitData.transitions.length === 0) {
|
|
53246
|
-
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") });
|
|
53247
53558
|
}
|
|
53248
53559
|
const transition = traitData.transitions[0];
|
|
53249
53560
|
const fromState = traitData.states.find((s) => s.name === transition.from);
|
|
53250
53561
|
const toState = traitData.states.find((s) => s.name === transition.to);
|
|
53251
53562
|
const transitionCounts = {};
|
|
53252
53563
|
for (const s of traitData.states) transitionCounts[s.name] = 0;
|
|
53253
|
-
for (const
|
|
53254
|
-
transitionCounts[
|
|
53255
|
-
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;
|
|
53256
53567
|
}
|
|
53257
53568
|
const maxTC = Math.max(...Object.values(transitionCounts), 0);
|
|
53258
53569
|
const fromRole = getStateRole(transition.from, fromState?.isInitial, fromState?.isTerminal, transitionCounts[transition.from] ?? 0, maxTC);
|
|
@@ -53269,21 +53580,21 @@ var DetailView = ({ data }) => {
|
|
|
53269
53580
|
] }) }),
|
|
53270
53581
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "px-4 py-3 space-y-3", children: [
|
|
53271
53582
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
53272
|
-
/* @__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") }),
|
|
53273
53584
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5", children: [
|
|
53274
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 }) }),
|
|
53275
53586
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-semibold text-[var(--color-foreground)]", children: transition.event })
|
|
53276
53587
|
] })
|
|
53277
53588
|
] }),
|
|
53278
53589
|
hasGuard && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
53279
|
-
/* @__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") }),
|
|
53280
53591
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5", children: [
|
|
53281
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 }) }),
|
|
53282
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) })
|
|
53283
53594
|
] })
|
|
53284
53595
|
] }),
|
|
53285
53596
|
transition.effects.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
53286
|
-
/* @__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") }),
|
|
53287
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: [
|
|
53288
53599
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-xs text-[var(--color-muted-foreground)] w-3 text-right mt-0.5", children: [
|
|
53289
53600
|
i + 1,
|
|
@@ -53319,6 +53630,7 @@ AvlOrbitalNode.displayName = "AvlOrbitalNode";
|
|
|
53319
53630
|
|
|
53320
53631
|
// components/avl/molecules/AvlTransitionEdge.tsx
|
|
53321
53632
|
init_types();
|
|
53633
|
+
init_useTranslate();
|
|
53322
53634
|
var AvlTransitionEdge = ({
|
|
53323
53635
|
id,
|
|
53324
53636
|
sourceX,
|
|
@@ -53331,6 +53643,7 @@ var AvlTransitionEdge = ({
|
|
|
53331
53643
|
markerEnd,
|
|
53332
53644
|
style
|
|
53333
53645
|
}) => {
|
|
53646
|
+
const { t } = useTranslate();
|
|
53334
53647
|
const [path, labelX, labelY] = react.getBezierPath({
|
|
53335
53648
|
sourceX,
|
|
53336
53649
|
sourceY,
|
|
@@ -53362,9 +53675,9 @@ var AvlTransitionEdge = ({
|
|
|
53362
53675
|
className: "absolute pointer-events-all nodrag nopan flex items-center gap-1",
|
|
53363
53676
|
style: { transform: `translate(-50%, -50%) translate(${labelX}px, ${labelY}px)` },
|
|
53364
53677
|
children: [
|
|
53365
|
-
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") }),
|
|
53366
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 ?? "" }),
|
|
53367
|
-
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") })
|
|
53368
53681
|
]
|
|
53369
53682
|
}
|
|
53370
53683
|
) })
|
|
@@ -56685,6 +56998,7 @@ function BrowserPlayground({
|
|
|
56685
56998
|
|
|
56686
56999
|
// components/avl/molecules/OrbPreviewNode.tsx
|
|
56687
57000
|
init_useEventBus();
|
|
57001
|
+
init_useTranslate();
|
|
56688
57002
|
|
|
56689
57003
|
// components/avl/molecules/useCanvasDnd.tsx
|
|
56690
57004
|
init_useEventBus();
|
|
@@ -57172,6 +57486,7 @@ var OrbPreviewNodeInner = (props) => {
|
|
|
57172
57486
|
const screenSize = React97.useContext(ScreenSizeContext);
|
|
57173
57487
|
const preset = SCREEN_SIZE_PRESETS[screenSize];
|
|
57174
57488
|
const { select } = React97.useContext(PatternSelectionContext);
|
|
57489
|
+
const { t } = useTranslate();
|
|
57175
57490
|
const eventBus = useEventBus();
|
|
57176
57491
|
const reactFlow = react.useReactFlow();
|
|
57177
57492
|
const contentRef = React97.useRef(null);
|
|
@@ -57192,7 +57507,7 @@ var OrbPreviewNodeInner = (props) => {
|
|
|
57192
57507
|
const isSuccess = status === "success";
|
|
57193
57508
|
const isError = status === "error";
|
|
57194
57509
|
const label = isImportedGroup ? data.behaviorAlias ?? "" : isExpanded ? `${data.transitionEvent ?? ""}` : data.orbitalName;
|
|
57195
|
-
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 ?? "";
|
|
57196
57511
|
const orbitalSchema = React97.useMemo(() => {
|
|
57197
57512
|
const fullSchema = data._fullSchema;
|
|
57198
57513
|
if (!fullSchema) return void 0;
|
|
@@ -57360,7 +57675,7 @@ var OrbPreviewNodeInner = (props) => {
|
|
|
57360
57675
|
color: "var(--color-muted-foreground)",
|
|
57361
57676
|
zIndex: 3
|
|
57362
57677
|
},
|
|
57363
|
-
children: "
|
|
57678
|
+
children: t("orbPreview.previewBadge")
|
|
57364
57679
|
}
|
|
57365
57680
|
),
|
|
57366
57681
|
hovered && !dragActive && !l1IsOver && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -57382,7 +57697,7 @@ var OrbPreviewNodeInner = (props) => {
|
|
|
57382
57697
|
},
|
|
57383
57698
|
children: [
|
|
57384
57699
|
/* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontSize: 12 }, children: "\u279E" }),
|
|
57385
|
-
"
|
|
57700
|
+
t("orbPreview.doubleClickToOpen")
|
|
57386
57701
|
]
|
|
57387
57702
|
}
|
|
57388
57703
|
)
|
|
@@ -57405,7 +57720,7 @@ var OrbPreviewNodeInner = (props) => {
|
|
|
57405
57720
|
color: "var(--color-primary-foreground)",
|
|
57406
57721
|
boxShadow: "var(--shadow-lg)"
|
|
57407
57722
|
},
|
|
57408
|
-
children: "
|
|
57723
|
+
children: t("orbPreview.dropToAddAndOpen")
|
|
57409
57724
|
}
|
|
57410
57725
|
)
|
|
57411
57726
|
}
|
|
@@ -57439,7 +57754,7 @@ var OrbPreviewNodeInner = (props) => {
|
|
|
57439
57754
|
borderTopColor: "transparent",
|
|
57440
57755
|
zIndex: 2
|
|
57441
57756
|
},
|
|
57442
|
-
title: "
|
|
57757
|
+
title: t("orbPreview.dispatching")
|
|
57443
57758
|
}
|
|
57444
57759
|
)
|
|
57445
57760
|
] }),
|
|
@@ -57535,7 +57850,7 @@ var OrbPreviewNodeInner = (props) => {
|
|
|
57535
57850
|
height: "auto"
|
|
57536
57851
|
}
|
|
57537
57852
|
) })
|
|
57538
|
-
) : /* @__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") }) })
|
|
57539
57854
|
]
|
|
57540
57855
|
}
|
|
57541
57856
|
),
|
|
@@ -58126,7 +58441,7 @@ function OrbInspector({ node, schema, editable = false, userType = "builder", th
|
|
|
58126
58441
|
const handleRemoveEffect = React97.useCallback((effectIndex) => {
|
|
58127
58442
|
eventBus.emit("UI:REMOVE_EFFECT", { effectIndex });
|
|
58128
58443
|
}, [eventBus]);
|
|
58129
|
-
const headerTitle = selectedPattern ? selectedPattern.patternType : isExpanded ? transitionEvent || "
|
|
58444
|
+
const headerTitle = selectedPattern ? selectedPattern.patternType : isExpanded ? transitionEvent || t("avl.transition") : orbitalName;
|
|
58130
58445
|
return /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex flex-col bg-card border-l border-border h-full w-full sm:w-[340px]", children: [
|
|
58131
58446
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "shrink-0 border-b border-border", children: [
|
|
58132
58447
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex items-center justify-between px-4 py-2", children: [
|
|
@@ -58143,7 +58458,7 @@ function OrbInspector({ node, schema, editable = false, userType = "builder", th
|
|
|
58143
58458
|
{
|
|
58144
58459
|
onClick: onClose,
|
|
58145
58460
|
className: "text-muted-foreground hover:text-foreground text-sm cursor-pointer bg-transparent border-none p-1",
|
|
58146
|
-
"aria-label": "
|
|
58461
|
+
"aria-label": t("common.close"),
|
|
58147
58462
|
children: "\xD7"
|
|
58148
58463
|
}
|
|
58149
58464
|
)
|
|
@@ -58153,7 +58468,7 @@ function OrbInspector({ node, schema, editable = false, userType = "builder", th
|
|
|
58153
58468
|
{
|
|
58154
58469
|
onClick: () => setActiveTab(tab),
|
|
58155
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"}`,
|
|
58156
|
-
children: tab
|
|
58471
|
+
children: t(`orbInspector.tab.${tab}`)
|
|
58157
58472
|
},
|
|
58158
58473
|
tab
|
|
58159
58474
|
)) })
|
|
@@ -58199,7 +58514,7 @@ function OrbInspector({ node, schema, editable = false, userType = "builder", th
|
|
|
58199
58514
|
/* ── Inspector Tab ── */
|
|
58200
58515
|
/* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
58201
58516
|
selectedPattern && patternDef?.propsSchema && /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "px-4 py-3 border-b border-border/40", children: [
|
|
58202
|
-
/* @__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") }),
|
|
58203
58518
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex flex-col gap-1.5", children: Object.entries(patternDef.propsSchema).slice(0, 12).map(([propName, propSchema]) => {
|
|
58204
58519
|
const ps = propSchema;
|
|
58205
58520
|
const explicitValue = patternConfig ? patternConfig[propName] : void 0;
|
|
@@ -58233,7 +58548,7 @@ function OrbInspector({ node, schema, editable = false, userType = "builder", th
|
|
|
58233
58548
|
}) })
|
|
58234
58549
|
] }),
|
|
58235
58550
|
userType === "architect" && (selectedPattern && isEntityPattern || !selectedPattern && !isExpanded) && entity && /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "px-4 py-3 border-b border-border/40", children: [
|
|
58236
|
-
/* @__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") }),
|
|
58237
58552
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex items-center gap-2 mb-2", children: [
|
|
58238
58553
|
/* @__PURE__ */ jsxRuntime.jsx("svg", { width: 14, height: 14, children: /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: 7, cy: 7, r: 5, fill: "var(--color-primary)" }) }),
|
|
58239
58554
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "font-semibold text-xs", children: entity.name }),
|
|
@@ -58276,7 +58591,7 @@ function OrbInspector({ node, schema, editable = false, userType = "builder", th
|
|
|
58276
58591
|
] }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
58277
58592
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-xs font-mono flex-1", children: f3.name }),
|
|
58278
58593
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs", children: f3.type }),
|
|
58279
|
-
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") })
|
|
58280
58595
|
] })
|
|
58281
58596
|
] }, f3.name)) }),
|
|
58282
58597
|
editable && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -58288,13 +58603,13 @@ function OrbInspector({ node, schema, editable = false, userType = "builder", th
|
|
|
58288
58603
|
className: "mt-2 text-xs w-full",
|
|
58289
58604
|
children: [
|
|
58290
58605
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "plus", size: "xs", className: "mr-1" }),
|
|
58291
|
-
t("
|
|
58606
|
+
t("orbInspector.addField")
|
|
58292
58607
|
]
|
|
58293
58608
|
}
|
|
58294
58609
|
)
|
|
58295
58610
|
] }),
|
|
58296
58611
|
editable && !selectedPattern && !isExpanded && node.layer === "Services" && /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "px-4 py-3 border-b border-border/40", children: [
|
|
58297
|
-
/* @__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") }),
|
|
58298
58613
|
/* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", className: "items-center", children: [
|
|
58299
58614
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
58300
58615
|
Button,
|
|
@@ -58307,7 +58622,7 @@ function OrbInspector({ node, schema, editable = false, userType = "builder", th
|
|
|
58307
58622
|
},
|
|
58308
58623
|
children: [
|
|
58309
58624
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "monitor", size: "xs", className: "mr-1" }),
|
|
58310
|
-
t("
|
|
58625
|
+
t("orbInspector.standalone")
|
|
58311
58626
|
]
|
|
58312
58627
|
}
|
|
58313
58628
|
),
|
|
@@ -58322,25 +58637,22 @@ function OrbInspector({ node, schema, editable = false, userType = "builder", th
|
|
|
58322
58637
|
},
|
|
58323
58638
|
children: [
|
|
58324
58639
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "cpu", size: "xs", className: "mr-1" }),
|
|
58325
|
-
t("
|
|
58640
|
+
t("orbInspector.embedded")
|
|
58326
58641
|
]
|
|
58327
58642
|
}
|
|
58328
58643
|
)
|
|
58329
58644
|
] }),
|
|
58330
|
-
/* @__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") })
|
|
58331
58646
|
] }),
|
|
58332
58647
|
!selectedPattern && !isExpanded && traits2.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "px-4 py-3 border-b border-border/40", children: [
|
|
58333
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs uppercase tracking-wider mb-2", children: "
|
|
58334
|
-
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex flex-col gap-1", children: traits2.map((
|
|
58335
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-xs font-semibold", children:
|
|
58336
|
-
/* @__PURE__ */ jsxRuntime.
|
|
58337
|
-
|
|
58338
|
-
" states"
|
|
58339
|
-
] })
|
|
58340
|
-
] }, 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)) })
|
|
58341
58653
|
] }),
|
|
58342
58654
|
isExpanded && fromState && toState && /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "px-4 py-3 border-b border-border/40", children: [
|
|
58343
|
-
/* @__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") }),
|
|
58344
58656
|
/* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "100%", height: 44, viewBox: "0 0 280 44", children: [
|
|
58345
58657
|
/* @__PURE__ */ jsxRuntime.jsx(exports.AvlState, { x: 8, y: 8, name: fromState, role: getStateRole(fromState), width: 90, height: 26 }),
|
|
58346
58658
|
/* @__PURE__ */ jsxRuntime.jsx("line", { x1: 104, y1: 21, x2: 158, y2: 21, stroke: "#1E293B", strokeWidth: 2, markerEnd: "url(#orb-arrow)" }),
|
|
@@ -58349,7 +58661,7 @@ function OrbInspector({ node, schema, editable = false, userType = "builder", th
|
|
|
58349
58661
|
] }),
|
|
58350
58662
|
traitName && /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "text-muted-foreground text-xs", children: [
|
|
58351
58663
|
traitName,
|
|
58352
|
-
entityName ?
|
|
58664
|
+
entityName ? t("orbInspector.onEntity", { entity: entityName }) : ""
|
|
58353
58665
|
] })
|
|
58354
58666
|
] }),
|
|
58355
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: [
|
|
@@ -58362,7 +58674,7 @@ function OrbInspector({ node, schema, editable = false, userType = "builder", th
|
|
|
58362
58674
|
Input,
|
|
58363
58675
|
{
|
|
58364
58676
|
defaultValue: formatExpression(transition?.guard ?? guard),
|
|
58365
|
-
placeholder: t("
|
|
58677
|
+
placeholder: t("orbInspector.guardExpression"),
|
|
58366
58678
|
className: "flex-1 text-xs font-mono h-6",
|
|
58367
58679
|
onBlur: (e) => handleGuardChange(e.target.value)
|
|
58368
58680
|
}
|
|
@@ -58370,7 +58682,7 @@ function OrbInspector({ node, schema, editable = false, userType = "builder", th
|
|
|
58370
58682
|
] }) }),
|
|
58371
58683
|
userType === "architect" && (effectTypes.length > 0 || editable) && isExpanded && /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "px-4 py-3 border-b border-border/40", children: [
|
|
58372
58684
|
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "text-muted-foreground text-xs uppercase tracking-wider mb-2", children: [
|
|
58373
|
-
t("
|
|
58685
|
+
t("avl.effects"),
|
|
58374
58686
|
" (",
|
|
58375
58687
|
effectTypes.length,
|
|
58376
58688
|
")"
|
|
@@ -58427,7 +58739,7 @@ function AddEffectButton({ onAdd }) {
|
|
|
58427
58739
|
className: "text-xs w-full",
|
|
58428
58740
|
children: [
|
|
58429
58741
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "plus", size: "xs", className: "mr-1" }),
|
|
58430
|
-
t("
|
|
58742
|
+
t("orbInspector.addEffect")
|
|
58431
58743
|
]
|
|
58432
58744
|
}
|
|
58433
58745
|
),
|
|
@@ -58488,7 +58800,7 @@ var PHASE_2_TOKEN_FALLBACK = {
|
|
|
58488
58800
|
function StylesTab({ patternType, patternDef, patternConfig, editable, onPropChange, themeManifest, isDesignSystem }) {
|
|
58489
58801
|
const { t } = useTranslate();
|
|
58490
58802
|
if (!patternType) {
|
|
58491
|
-
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") }) });
|
|
58492
58804
|
}
|
|
58493
58805
|
const tier = patternDef?.category ?? "Pattern";
|
|
58494
58806
|
const tokens = PHASE_2_TOKEN_FALLBACK[patternType] ?? [];
|
|
@@ -58509,11 +58821,11 @@ function StylesTab({ patternType, patternDef, patternConfig, editable, onPropCha
|
|
|
58509
58821
|
)
|
|
58510
58822
|
] }),
|
|
58511
58823
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { children: [
|
|
58512
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs uppercase tracking-wider mb-2", children: t("
|
|
58513
|
-
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)) })
|
|
58514
58826
|
] }),
|
|
58515
58827
|
variantEnum && variantEnum.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(Box, { children: [
|
|
58516
|
-
/* @__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") }),
|
|
58517
58829
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex flex-wrap gap-1", children: variantEnum.map((variant) => {
|
|
58518
58830
|
const isActive = variant === currentVariant || !currentVariant && variant === "default";
|
|
58519
58831
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -58533,7 +58845,7 @@ function StylesTab({ patternType, patternDef, patternConfig, editable, onPropCha
|
|
|
58533
58845
|
}) })
|
|
58534
58846
|
] }),
|
|
58535
58847
|
sizeEnum && sizeEnum.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(Box, { children: [
|
|
58536
|
-
/* @__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") }),
|
|
58537
58849
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex flex-wrap gap-1", children: sizeEnum.map((size) => {
|
|
58538
58850
|
const isActive = size === currentSize || !currentSize && size === "md";
|
|
58539
58851
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -58556,20 +58868,21 @@ function StylesTab({ patternType, patternDef, patternConfig, editable, onPropCha
|
|
|
58556
58868
|
] });
|
|
58557
58869
|
}
|
|
58558
58870
|
var TOKEN_GROUPS = [
|
|
58559
|
-
{ group: "colors",
|
|
58560
|
-
{ group: "radii",
|
|
58561
|
-
{ group: "spacing",
|
|
58562
|
-
{ 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" }
|
|
58563
58875
|
];
|
|
58564
58876
|
function TokenEditorSection({ themeManifest, onPropChange }) {
|
|
58877
|
+
const { t } = useTranslate();
|
|
58565
58878
|
const tokens = themeManifest.tokens ?? {};
|
|
58566
58879
|
return /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex flex-col gap-3 pt-2 border-t border-border/40", children: [
|
|
58567
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-xs uppercase tracking-wider text-muted-foreground", children: "
|
|
58568
|
-
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 }) => {
|
|
58569
58882
|
const entries = Object.entries(tokens[group] ?? {});
|
|
58570
58883
|
if (entries.length === 0) return null;
|
|
58571
58884
|
return /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex flex-col gap-1.5", children: [
|
|
58572
|
-
/* @__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) }),
|
|
58573
58886
|
entries.map(([key, value]) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
58574
58887
|
TokenRow,
|
|
58575
58888
|
{
|
|
@@ -58617,6 +58930,7 @@ init_Typography();
|
|
|
58617
58930
|
init_Badge();
|
|
58618
58931
|
|
|
58619
58932
|
// components/avl/organisms/AvlTraitScene.tsx
|
|
58933
|
+
init_useTranslate();
|
|
58620
58934
|
init_AvlState();
|
|
58621
58935
|
init_AvlTransitionLane();
|
|
58622
58936
|
init_AvlSwimLane();
|
|
@@ -58630,6 +58944,7 @@ var AvlTraitScene = ({
|
|
|
58630
58944
|
color = "var(--color-primary)",
|
|
58631
58945
|
onTransitionClick
|
|
58632
58946
|
}) => {
|
|
58947
|
+
const { t } = useTranslate();
|
|
58633
58948
|
const [layout, setLayout] = React97.useState(null);
|
|
58634
58949
|
const dataKey = React97.useMemo(() => JSON.stringify(data), [data]);
|
|
58635
58950
|
React97.useEffect(() => {
|
|
@@ -58638,7 +58953,7 @@ var AvlTraitScene = ({
|
|
|
58638
58953
|
});
|
|
58639
58954
|
}, [dataKey]);
|
|
58640
58955
|
if (!layout) {
|
|
58641
|
-
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") }) });
|
|
58642
58957
|
}
|
|
58643
58958
|
const hasExternal = data.listenedEvents.length > 0 || data.emittedEvents.length > 0;
|
|
58644
58959
|
const machineOffsetX = hasExternal ? 0 : 30;
|
|
@@ -58653,10 +58968,7 @@ var AvlTraitScene = ({
|
|
|
58653
58968
|
const machineHeight = scaledH + 100;
|
|
58654
58969
|
const renderMachine = /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
|
|
58655
58970
|
/* @__PURE__ */ jsxRuntime.jsx("text", { x: CENTER_W2 / 2, y: 20, textAnchor: "middle", fill: color, fontSize: 20, fontWeight: "700", fontFamily: "inherit", children: data.name }),
|
|
58656
|
-
/* @__PURE__ */ jsxRuntime.
|
|
58657
|
-
"linked to ",
|
|
58658
|
-
data.linkedEntity
|
|
58659
|
-
] }),
|
|
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 }) }),
|
|
58660
58972
|
/* @__PURE__ */ jsxRuntime.jsxs("defs", { children: [
|
|
58661
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 }) }),
|
|
58662
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 }) })
|
|
@@ -58731,6 +59043,9 @@ var AvlTraitScene = ({
|
|
|
58731
59043
|
);
|
|
58732
59044
|
};
|
|
58733
59045
|
AvlTraitScene.displayName = "AvlTraitScene";
|
|
59046
|
+
|
|
59047
|
+
// components/avl/molecules/TraitCardNode.tsx
|
|
59048
|
+
init_useTranslate();
|
|
58734
59049
|
var TraitCardSelectionContext = React97.createContext({
|
|
58735
59050
|
selectTransition: () => {
|
|
58736
59051
|
}
|
|
@@ -58740,6 +59055,7 @@ var SCENE_WIDTH = 600;
|
|
|
58740
59055
|
var SCENE_HEIGHT = 400;
|
|
58741
59056
|
var TraitCardNodeInner = (props) => {
|
|
58742
59057
|
const data = props.data;
|
|
59058
|
+
const { t } = useTranslate();
|
|
58743
59059
|
const { selectTransition } = React97.useContext(TraitCardSelectionContext);
|
|
58744
59060
|
const orbitalName = data.orbitalName;
|
|
58745
59061
|
const traitName = data.traitName ?? "";
|
|
@@ -58765,7 +59081,7 @@ var TraitCardNodeInner = (props) => {
|
|
|
58765
59081
|
position: react.Position.Left,
|
|
58766
59082
|
id: `listen-${event}`,
|
|
58767
59083
|
style: { top: `${(i + 1) / (listens.length + 1) * 100}%` },
|
|
58768
|
-
"aria-label":
|
|
59084
|
+
"aria-label": t("avl.listensFor", { event })
|
|
58769
59085
|
},
|
|
58770
59086
|
`listen-${event}`
|
|
58771
59087
|
)),
|
|
@@ -58776,7 +59092,7 @@ var TraitCardNodeInner = (props) => {
|
|
|
58776
59092
|
position: react.Position.Right,
|
|
58777
59093
|
id: `emit-${event}`,
|
|
58778
59094
|
style: { top: `${(i + 1) / (emits.length + 1) * 100}%` },
|
|
58779
|
-
"aria-label":
|
|
59095
|
+
"aria-label": t("avl.emits", { event })
|
|
58780
59096
|
},
|
|
58781
59097
|
`emit-${event}`
|
|
58782
59098
|
)),
|
|
@@ -58803,14 +59119,14 @@ var TraitCardNodeInner = (props) => {
|
|
|
58803
59119
|
{
|
|
58804
59120
|
data: traitLevelData,
|
|
58805
59121
|
onTransitionClick: (idx) => {
|
|
58806
|
-
const
|
|
58807
|
-
if (!
|
|
59122
|
+
const t2 = transitions[idx];
|
|
59123
|
+
if (!t2) return;
|
|
58808
59124
|
selectTransition({
|
|
58809
59125
|
orbitalName,
|
|
58810
59126
|
traitName,
|
|
58811
|
-
transitionEvent:
|
|
58812
|
-
fromState:
|
|
58813
|
-
toState:
|
|
59127
|
+
transitionEvent: t2.event,
|
|
59128
|
+
fromState: t2.fromState,
|
|
59129
|
+
toState: t2.toState,
|
|
58814
59130
|
index: idx
|
|
58815
59131
|
});
|
|
58816
59132
|
}
|
|
@@ -58818,7 +59134,7 @@ var TraitCardNodeInner = (props) => {
|
|
|
58818
59134
|
)
|
|
58819
59135
|
}
|
|
58820
59136
|
)
|
|
58821
|
-
) : /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", color: "muted", children: "
|
|
59137
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", color: "muted", children: t("avl.noStateMachine") })
|
|
58822
59138
|
] })
|
|
58823
59139
|
]
|
|
58824
59140
|
}
|
|
@@ -58829,6 +59145,7 @@ TraitCardNode.displayName = "TraitCardNode";
|
|
|
58829
59145
|
|
|
58830
59146
|
// components/avl/organisms/FlowCanvas.tsx
|
|
58831
59147
|
init_useEventBus();
|
|
59148
|
+
init_useTranslate();
|
|
58832
59149
|
var flowCanvasLog = logger.createLogger("almadar:ui:flow-canvas");
|
|
58833
59150
|
var NODE_TYPES = {
|
|
58834
59151
|
preview: OrbPreviewNode,
|
|
@@ -58872,6 +59189,7 @@ function FlowCanvasInner({
|
|
|
58872
59189
|
userType = "builder",
|
|
58873
59190
|
themeManifest
|
|
58874
59191
|
}) {
|
|
59192
|
+
const { t } = useTranslate();
|
|
58875
59193
|
const NODE_TYPES2 = React97.useMemo(() => ({
|
|
58876
59194
|
preview: OrbPreviewNode,
|
|
58877
59195
|
behaviorCompose: BehaviorComposeNode,
|
|
@@ -58924,13 +59242,13 @@ function FlowCanvasInner({
|
|
|
58924
59242
|
}), [selectedPattern]);
|
|
58925
59243
|
const [atBehaviorLevel, setAtBehaviorLevel] = React97.useState(composeLevel === "behavior");
|
|
58926
59244
|
const { composeNodes, composeEdges, overviewNodes, overviewEdges, expandedNodes, expandedEdges, behaviorExpandedNodes, behaviorExpandedEdges, traitExpandedNodes, traitExpandedEdges } = React97.useMemo(() => {
|
|
58927
|
-
const
|
|
59245
|
+
const t2 = perfStart("compose-graph");
|
|
58928
59246
|
const compose = composeLevel === "behavior" && behaviorEntries?.length ? behaviorsToComposeGraph(behaviorEntries, behaviorWires ?? [], layoutHint) : { nodes: [], edges: [] };
|
|
58929
59247
|
const overview = schemaToOverviewGraph(parsedSchema, mockData, behaviorMeta, layoutHint, orbitalStatus, screenSize);
|
|
58930
59248
|
const expanded = expandedOrbital ? orbitalToExpandedGraph(parsedSchema, expandedOrbital, mockData, screenSize) : { nodes: [], edges: [] };
|
|
58931
59249
|
const behaviorExpanded = expandedOrbital && expandedBehaviorAlias ? orbitalAliasToExpandedGraph(parsedSchema, expandedOrbital, expandedBehaviorAlias, mockData, screenSize) : { nodes: [], edges: [] };
|
|
58932
59250
|
const traitExpanded = expandedOrbital ? orbitalToTraitGraph(parsedSchema, expandedOrbital) : { nodes: [], edges: [] };
|
|
58933
|
-
perfEnd("compose-graph",
|
|
59251
|
+
perfEnd("compose-graph", t2, {
|
|
58934
59252
|
composeNodes: compose.nodes.length,
|
|
58935
59253
|
overviewNodes: overview.nodes.length,
|
|
58936
59254
|
expandedNodes: expanded.nodes.length,
|
|
@@ -59183,12 +59501,12 @@ function FlowCanvasInner({
|
|
|
59183
59501
|
{
|
|
59184
59502
|
onClick: handleGoBack,
|
|
59185
59503
|
className: "text-muted-foreground hover:text-foreground text-sm cursor-pointer bg-transparent border-none p-0",
|
|
59186
|
-
"aria-label": "
|
|
59504
|
+
"aria-label": t("canvas.goBackToOverview"),
|
|
59187
59505
|
children: "\u2190"
|
|
59188
59506
|
}
|
|
59189
59507
|
),
|
|
59190
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "font-medium", children: level === "overview" ? "
|
|
59191
|
-
/* @__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 }) })
|
|
59192
59510
|
] }),
|
|
59193
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) => {
|
|
59194
59512
|
const p2 = SCREEN_SIZE_PRESETS[size];
|
|
@@ -59204,7 +59522,7 @@ function FlowCanvasInner({
|
|
|
59204
59522
|
},
|
|
59205
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"}`,
|
|
59206
59524
|
title: `${p2.label} (${p2.width}px)`,
|
|
59207
|
-
"aria-label":
|
|
59525
|
+
"aria-label": t("canvas.switchToView", { label: p2.label }),
|
|
59208
59526
|
children: p2.label
|
|
59209
59527
|
},
|
|
59210
59528
|
size
|
|
@@ -59586,6 +59904,7 @@ init_Stack();
|
|
|
59586
59904
|
init_Typography();
|
|
59587
59905
|
init_Button();
|
|
59588
59906
|
init_Icon();
|
|
59907
|
+
init_useTranslate();
|
|
59589
59908
|
var UNIT_DISPLAY_W = 240;
|
|
59590
59909
|
var UNIT_DISPLAY_H = 160;
|
|
59591
59910
|
function layoutOrbitals(count, containerW, containerH) {
|
|
@@ -59776,6 +60095,7 @@ var AvlOrbitalsCosmicZoom = ({
|
|
|
59776
60095
|
minZoom = 0.4,
|
|
59777
60096
|
maxZoom = 3
|
|
59778
60097
|
}) => {
|
|
60098
|
+
const { t } = useTranslate();
|
|
59779
60099
|
const parsedSchema = React97.useMemo(() => {
|
|
59780
60100
|
if (typeof schemaProp === "string") return JSON.parse(schemaProp);
|
|
59781
60101
|
return schemaProp;
|
|
@@ -59843,9 +60163,9 @@ var AvlOrbitalsCosmicZoom = ({
|
|
|
59843
60163
|
(ctx) => {
|
|
59844
60164
|
if (ctx.level !== "transition" || !ctx.trait || !ctx.transition) return;
|
|
59845
60165
|
const orbital = parsedSchema.orbitals?.find((o) => o.name === ctx.orbital);
|
|
59846
|
-
const traitRef = orbital?.traits?.find((
|
|
60166
|
+
const traitRef = orbital?.traits?.find((t2) => core.isInlineTrait(t2) && t2.name === ctx.trait);
|
|
59847
60167
|
if (!traitRef || !core.isInlineTrait(traitRef)) return;
|
|
59848
|
-
const idx = traitRef.stateMachine?.transitions?.findIndex((
|
|
60168
|
+
const idx = traitRef.stateMachine?.transitions?.findIndex((t2) => t2.event === ctx.transition) ?? -1;
|
|
59849
60169
|
if (idx < 0) return;
|
|
59850
60170
|
dispatch({ type: "SELECT_TRAIT", trait: ctx.trait });
|
|
59851
60171
|
dispatch({ type: "ZOOM_INTO_TRANSITION", transitionIndex: idx, targetPosition: { x: 0, y: 0 } });
|
|
@@ -60021,7 +60341,7 @@ var AvlOrbitalsCosmicZoom = ({
|
|
|
60021
60341
|
borderRadius: 4,
|
|
60022
60342
|
opacity: 0.8
|
|
60023
60343
|
},
|
|
60024
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", style: { color }, children: "
|
|
60344
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", style: { color }, children: t("avl.pressEscToZoomOut") })
|
|
60025
60345
|
}
|
|
60026
60346
|
),
|
|
60027
60347
|
state.level === "application" && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
@@ -60073,7 +60393,7 @@ var AvlOrbitalsCosmicZoom = ({
|
|
|
60073
60393
|
onKeyDown: (e) => {
|
|
60074
60394
|
if (e.key === "Enter" || e.key === " ") handleSelect(view.name);
|
|
60075
60395
|
},
|
|
60076
|
-
"aria-label":
|
|
60396
|
+
"aria-label": isHighlighted ? t("avl.orbitalLabelHighlighted", { name: view.name }) : t("avl.orbitalLabel", { name: view.name }),
|
|
60077
60397
|
position: "absolute",
|
|
60078
60398
|
style: {
|
|
60079
60399
|
left: view.cx - UNIT_DISPLAY_W / 2,
|
|
@@ -60121,9 +60441,9 @@ var AvlOrbitalsCosmicZoom = ({
|
|
|
60121
60441
|
zIndex: 30
|
|
60122
60442
|
},
|
|
60123
60443
|
children: [
|
|
60124
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "secondary", size: "sm", onClick: zoomIn, title: "
|
|
60125
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "secondary", size: "sm", onClick: zoomOut, title: "
|
|
60126
|
-
/* @__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" }) })
|
|
60127
60447
|
]
|
|
60128
60448
|
}
|
|
60129
60449
|
)
|