@almadar/ui 5.21.8 → 5.21.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/avl/index.cjs +964 -651
- package/dist/avl/index.js +964 -651
- package/dist/components/game/organisms/three/index.cjs +490 -1
- package/dist/components/game/organisms/three/index.js +490 -1
- package/dist/components/index.cjs +669 -371
- package/dist/components/index.js +669 -371
- package/dist/docs/index.cjs +301 -5
- package/dist/docs/index.js +301 -5
- package/dist/hooks/index.cjs +297 -3
- package/dist/hooks/index.js +297 -3
- package/dist/locales/index.cjs +899 -9
- package/dist/locales/index.js +899 -9
- package/dist/providers/index.cjs +669 -371
- package/dist/providers/index.js +669 -371
- package/dist/runtime/index.cjs +669 -371
- package/dist/runtime/index.js +669 -371
- package/locales/ar.json +301 -31
- package/locales/en.json +297 -31
- package/locales/sl.json +301 -31
- package/package.json +1 -1
package/dist/avl/index.cjs
CHANGED
|
@@ -3900,6 +3900,504 @@ 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
|
+
"relationSelect.selectPlaceholder": "Select..."
|
|
4378
|
+
};
|
|
4379
|
+
}
|
|
4380
|
+
});
|
|
4381
|
+
function useTranslate() {
|
|
4382
|
+
return React97.useContext(I18nContext);
|
|
4383
|
+
}
|
|
4384
|
+
var _meta, coreMessages, coreLocale, I18nContext;
|
|
4385
|
+
var init_useTranslate = __esm({
|
|
4386
|
+
"hooks/useTranslate.ts"() {
|
|
4387
|
+
"use client";
|
|
4388
|
+
init_en();
|
|
4389
|
+
({ $meta: _meta, ...coreMessages } = en_default);
|
|
4390
|
+
coreLocale = coreMessages;
|
|
4391
|
+
I18nContext = React97.createContext({
|
|
4392
|
+
locale: "en",
|
|
4393
|
+
direction: "ltr",
|
|
4394
|
+
t: (key) => coreLocale[key] ?? key
|
|
4395
|
+
// core locale fallback
|
|
4396
|
+
});
|
|
4397
|
+
I18nContext.displayName = "I18nContext";
|
|
4398
|
+
I18nContext.Provider;
|
|
4399
|
+
}
|
|
4400
|
+
});
|
|
3903
4401
|
var MAX_VISIBLE_EFFECTS; exports.AvlTransitionLane = void 0;
|
|
3904
4402
|
var init_AvlTransitionLane = __esm({
|
|
3905
4403
|
"components/avl/molecules/AvlTransitionLane.tsx"() {
|
|
@@ -4529,6 +5027,7 @@ var log2, SWIM_GUTTER, CENTER_W; exports.BehaviorView = void 0;
|
|
|
4529
5027
|
var init_BehaviorView = __esm({
|
|
4530
5028
|
"components/avl/molecules/BehaviorView.tsx"() {
|
|
4531
5029
|
"use client";
|
|
5030
|
+
init_useTranslate();
|
|
4532
5031
|
init_AvlState();
|
|
4533
5032
|
init_AvlTransitionLane();
|
|
4534
5033
|
init_AvlSwimLane();
|
|
@@ -4538,6 +5037,7 @@ var init_BehaviorView = __esm({
|
|
|
4538
5037
|
SWIM_GUTTER = 120;
|
|
4539
5038
|
CENTER_W = 360;
|
|
4540
5039
|
exports.BehaviorView = ({ data }) => {
|
|
5040
|
+
const { t } = useTranslate();
|
|
4541
5041
|
const [layout, setLayout] = React97.useState(null);
|
|
4542
5042
|
const traitName = data.traits[0]?.name;
|
|
4543
5043
|
const traitData = traitName ? data.traitDetails[traitName] : void 0;
|
|
@@ -4547,10 +5047,10 @@ var init_BehaviorView = __esm({
|
|
|
4547
5047
|
computeTraitLayout(traitData).then(setLayout).catch((err) => log2.error("compute-trait-layout-failed", { error: err instanceof Error ? err : String(err) }));
|
|
4548
5048
|
}, [dataKey]);
|
|
4549
5049
|
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: "
|
|
5050
|
+
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
5051
|
}
|
|
4552
5052
|
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: "
|
|
5053
|
+
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
5054
|
}
|
|
4555
5055
|
const hasExternal = traitData.listenedEvents.length > 0 || traitData.emittedEvents.length > 0;
|
|
4556
5056
|
const viewW = hasExternal ? SWIM_GUTTER + CENTER_W + SWIM_GUTTER : CENTER_W + 60;
|
|
@@ -4566,10 +5066,7 @@ var init_BehaviorView = __esm({
|
|
|
4566
5066
|
const machineHeight = scaledH + 100;
|
|
4567
5067
|
const renderMachine = /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
|
|
4568
5068
|
/* @__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
|
-
] }),
|
|
5069
|
+
/* @__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
5070
|
/* @__PURE__ */ jsxRuntime.jsxs("defs", { children: [
|
|
4574
5071
|
/* @__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
5072
|
/* @__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 +6868,6 @@ var init_Overlay = __esm({
|
|
|
6371
6868
|
};
|
|
6372
6869
|
}
|
|
6373
6870
|
});
|
|
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
6871
|
var sizeClasses2, minWidthClasses, lookStyles, Modal;
|
|
6579
6872
|
var init_Modal = __esm({
|
|
6580
6873
|
"components/core/molecules/Modal.tsx"() {
|
|
@@ -9553,6 +9846,7 @@ var init_LawReferenceTooltip = __esm({
|
|
|
9553
9846
|
init_Typography();
|
|
9554
9847
|
init_Divider();
|
|
9555
9848
|
init_cn();
|
|
9849
|
+
init_useTranslate();
|
|
9556
9850
|
positionStyles2 = {
|
|
9557
9851
|
top: "bottom-full left-1/2 -translate-x-1/2 mb-2",
|
|
9558
9852
|
bottom: "top-full left-1/2 -translate-x-1/2 mt-2",
|
|
@@ -9571,6 +9865,7 @@ var init_LawReferenceTooltip = __esm({
|
|
|
9571
9865
|
position = "top",
|
|
9572
9866
|
className
|
|
9573
9867
|
}) => {
|
|
9868
|
+
const { t } = useTranslate();
|
|
9574
9869
|
const [isVisible, setIsVisible] = React97__namespace.default.useState(false);
|
|
9575
9870
|
const timeoutRef = React97__namespace.default.useRef(null);
|
|
9576
9871
|
const handleMouseEnter = () => {
|
|
@@ -9654,7 +9949,7 @@ var init_LawReferenceTooltip = __esm({
|
|
|
9654
9949
|
target: "_blank",
|
|
9655
9950
|
rel: "noopener noreferrer",
|
|
9656
9951
|
onClick: (e) => e.stopPropagation(),
|
|
9657
|
-
children: "
|
|
9952
|
+
children: t("lawReference.viewFullText")
|
|
9658
9953
|
}
|
|
9659
9954
|
)
|
|
9660
9955
|
] }),
|
|
@@ -17142,7 +17437,7 @@ var init_CodeBlock = __esm({
|
|
|
17142
17437
|
const isLolo = language === "lolo";
|
|
17143
17438
|
const activeStyle = isOrb ? orbStyle : isLolo ? loloStyle : dark__default.default;
|
|
17144
17439
|
const eventBus = useEventBus();
|
|
17145
|
-
const { t
|
|
17440
|
+
const { t } = useTranslate();
|
|
17146
17441
|
const scrollRef = React97.useRef(null);
|
|
17147
17442
|
const codeRef = React97.useRef(null);
|
|
17148
17443
|
const savedScrollLeftRef = React97.useRef(0);
|
|
@@ -17397,7 +17692,7 @@ var init_CodeBlock = __esm({
|
|
|
17397
17692
|
size: "sm",
|
|
17398
17693
|
onClick: handleCopy,
|
|
17399
17694
|
className: "opacity-0 group-hover:opacity-100 focus:opacity-100 transition-opacity text-muted-foreground hover:text-white",
|
|
17400
|
-
"aria-label": "
|
|
17695
|
+
"aria-label": t("common.copy"),
|
|
17401
17696
|
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
17697
|
}
|
|
17403
17698
|
)
|
|
@@ -18052,7 +18347,7 @@ var init_StateMachineView = __esm({
|
|
|
18052
18347
|
const endX2 = fromState.x + Math.cos(Math.PI / 2 * loopDirection + endAngle) * fromState.radius;
|
|
18053
18348
|
const endY2 = fromState.y + Math.sin(Math.PI / 2 * loopDirection + endAngle) * fromState.radius;
|
|
18054
18349
|
const isSingle2 = bundle.labels.length === 1;
|
|
18055
|
-
const labelText2 = isSingle2 ? bundle.labels[0].event :
|
|
18350
|
+
const labelText2 = isSingle2 ? bundle.labels[0].event : t("stateMachine.eventCount", { count: bundle.labels.length });
|
|
18056
18351
|
const bundleColor2 = isSingle2 ? config.colors.arrow : "var(--color-accent)";
|
|
18057
18352
|
const labelWidth2 = labelText2.length * 9 + (isSingle2 ? 24 : 40);
|
|
18058
18353
|
const cx = fromState.x;
|
|
@@ -18178,7 +18473,7 @@ var init_StateMachineView = __esm({
|
|
|
18178
18473
|
const controlX = midX + perpX;
|
|
18179
18474
|
const controlY = midY + perpY;
|
|
18180
18475
|
const isSingle = bundle.labels.length === 1;
|
|
18181
|
-
const labelText = isSingle ? bundle.labels[0].event :
|
|
18476
|
+
const labelText = isSingle ? bundle.labels[0].event : t("stateMachine.eventCount", { count: bundle.labels.length });
|
|
18182
18477
|
const labelWidth = labelText.length * 9 + (isSingle ? 24 : 40);
|
|
18183
18478
|
const bundleColor = isSingle ? config.colors.arrow : "var(--color-accent)";
|
|
18184
18479
|
const curveMidpoint = {
|
|
@@ -18333,7 +18628,7 @@ var init_StateMachineView = __esm({
|
|
|
18333
18628
|
{
|
|
18334
18629
|
className: "absolute -top-2 left-1/2 transform -translate-x-1/2 px-2 py-0.5 rounded-full",
|
|
18335
18630
|
style: { backgroundColor: "var(--color-success)" },
|
|
18336
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", weight: "semibold", style: { color: "var(--color-success-foreground)" }, children: "
|
|
18631
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", weight: "semibold", style: { color: "var(--color-success-foreground)" }, children: t("stateMachine.pinned") })
|
|
18337
18632
|
}
|
|
18338
18633
|
),
|
|
18339
18634
|
!isSingle && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -18355,10 +18650,7 @@ var init_StateMachineView = __esm({
|
|
|
18355
18650
|
{
|
|
18356
18651
|
className: "ml-2 px-2 py-0.5 rounded-full",
|
|
18357
18652
|
style: { backgroundColor: "var(--color-accent)" },
|
|
18358
|
-
children: /* @__PURE__ */ jsxRuntime.
|
|
18359
|
-
bundle.labels.length,
|
|
18360
|
-
" events"
|
|
18361
|
-
] })
|
|
18653
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", style: { color: "var(--color-accent-foreground)" }, children: t("stateMachine.eventCount", { count: bundle.labels.length }) })
|
|
18362
18654
|
}
|
|
18363
18655
|
)
|
|
18364
18656
|
]
|
|
@@ -18503,7 +18795,7 @@ var init_StateMachineView = __esm({
|
|
|
18503
18795
|
align: "center",
|
|
18504
18796
|
className: "mb-2",
|
|
18505
18797
|
style: { color: "var(--color-warning)", fontSize: "13px" },
|
|
18506
|
-
children: "
|
|
18798
|
+
children: t("stateMachine.externalEffects")
|
|
18507
18799
|
}
|
|
18508
18800
|
),
|
|
18509
18801
|
outputs.outputs.map((output, idx) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -18523,10 +18815,10 @@ var init_StateMachineView = __esm({
|
|
|
18523
18815
|
Legend = ({ config, y }) => {
|
|
18524
18816
|
const { t } = useTranslate();
|
|
18525
18817
|
const items = [
|
|
18526
|
-
{ label: "
|
|
18527
|
-
{ label: "
|
|
18528
|
-
{ label: "
|
|
18529
|
-
{ label: "
|
|
18818
|
+
{ key: "initial", label: t("stateMachine.legend.initial"), color: config.colors.initialNode, isMultiEvent: false },
|
|
18819
|
+
{ key: "final", label: t("stateMachine.legend.final"), color: config.colors.finalNode, isMultiEvent: false },
|
|
18820
|
+
{ key: "state", label: t("stateMachine.legend.state"), color: config.colors.nodeBorder, isMultiEvent: false },
|
|
18821
|
+
{ key: "multiEvent", label: t("stateMachine.legend.multiEvent"), color: "var(--color-accent)", isMultiEvent: true }
|
|
18530
18822
|
];
|
|
18531
18823
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
18532
18824
|
HStack,
|
|
@@ -18541,8 +18833,8 @@ var init_StateMachineView = __esm({
|
|
|
18541
18833
|
{
|
|
18542
18834
|
className: "w-3 h-3 rounded-full",
|
|
18543
18835
|
style: {
|
|
18544
|
-
backgroundColor: item.
|
|
18545
|
-
border: item.
|
|
18836
|
+
backgroundColor: item.isMultiEvent ? item.color : config.colors.node,
|
|
18837
|
+
border: !item.isMultiEvent ? `2px solid ${item.color}` : "none"
|
|
18546
18838
|
}
|
|
18547
18839
|
}
|
|
18548
18840
|
),
|
|
@@ -18554,7 +18846,7 @@ var init_StateMachineView = __esm({
|
|
|
18554
18846
|
children: item.label
|
|
18555
18847
|
}
|
|
18556
18848
|
)
|
|
18557
|
-
] }, item.
|
|
18849
|
+
] }, item.key))
|
|
18558
18850
|
}
|
|
18559
18851
|
);
|
|
18560
18852
|
};
|
|
@@ -19348,13 +19640,13 @@ var init_JazariStateMachine = __esm({
|
|
|
19348
19640
|
);
|
|
19349
19641
|
}, [resolvedTrait, entityFields]);
|
|
19350
19642
|
if (isLoading) {
|
|
19351
|
-
return /* @__PURE__ */ jsxRuntime.jsx(LoadingState, { message: "
|
|
19643
|
+
return /* @__PURE__ */ jsxRuntime.jsx(LoadingState, { message: t("stateMachine.loading") });
|
|
19352
19644
|
}
|
|
19353
19645
|
if (error) {
|
|
19354
19646
|
return /* @__PURE__ */ jsxRuntime.jsx(ErrorState, { message: error instanceof Error ? error.message : String(error) });
|
|
19355
19647
|
}
|
|
19356
19648
|
if (!resolvedTrait || !layoutData || layoutData.states.length === 0) {
|
|
19357
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { padding: "lg", className: cn("text-center", className), children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", className: "opacity-60", children: "
|
|
19649
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box, { padding: "lg", className: cn("text-center", className), children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", className: "opacity-60", children: t("stateMachine.noStateMachine") }) });
|
|
19358
19650
|
}
|
|
19359
19651
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
19360
19652
|
StateMachineView,
|
|
@@ -20398,13 +20690,13 @@ var init_LayoutPatterns = __esm({
|
|
|
20398
20690
|
function generateRuleId() {
|
|
20399
20691
|
return `rule-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
20400
20692
|
}
|
|
20401
|
-
function questionsToOptions(questions,
|
|
20693
|
+
function questionsToOptions(questions, endOfSurveyLabel) {
|
|
20402
20694
|
const opts = questions.map((q) => ({
|
|
20403
20695
|
value: q.id,
|
|
20404
20696
|
label: q.label
|
|
20405
20697
|
}));
|
|
20406
|
-
if (
|
|
20407
|
-
opts.push({ value: END_OF_SURVEY, label:
|
|
20698
|
+
if (endOfSurveyLabel !== null) {
|
|
20699
|
+
opts.push({ value: END_OF_SURVEY, label: endOfSurveyLabel });
|
|
20408
20700
|
}
|
|
20409
20701
|
return opts;
|
|
20410
20702
|
}
|
|
@@ -20413,7 +20705,7 @@ function isRuleBroken(rule, questions) {
|
|
|
20413
20705
|
const targetExists = rule.targetQuestionId === END_OF_SURVEY || questions.some((q) => q.id === rule.targetQuestionId);
|
|
20414
20706
|
return !sourceExists || !targetExists;
|
|
20415
20707
|
}
|
|
20416
|
-
var END_OF_SURVEY,
|
|
20708
|
+
var END_OF_SURVEY, RuleRow, NODE_WIDTH, NODE_HEIGHT, NODE_GAP_Y, PADDING, LogicGraph, BranchingLogicBuilder;
|
|
20417
20709
|
var init_BranchingLogicBuilder = __esm({
|
|
20418
20710
|
"components/core/molecules/BranchingLogicBuilder.tsx"() {
|
|
20419
20711
|
"use client";
|
|
@@ -20426,14 +20718,9 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20426
20718
|
init_FilterPill();
|
|
20427
20719
|
init_Box();
|
|
20428
20720
|
init_useEventBus();
|
|
20721
|
+
init_useTranslate();
|
|
20429
20722
|
init_cn();
|
|
20430
20723
|
END_OF_SURVEY = "end-of-survey";
|
|
20431
|
-
OPERATOR_OPTIONS = [
|
|
20432
|
-
{ value: "equals", label: "equals" },
|
|
20433
|
-
{ value: "not-equals", label: "does not equal" },
|
|
20434
|
-
{ value: "contains", label: "contains" },
|
|
20435
|
-
{ value: "in", label: "is one of" }
|
|
20436
|
-
];
|
|
20437
20724
|
RuleRow = ({
|
|
20438
20725
|
rule,
|
|
20439
20726
|
questions,
|
|
@@ -20442,8 +20729,21 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20442
20729
|
onChange,
|
|
20443
20730
|
onDelete
|
|
20444
20731
|
}) => {
|
|
20445
|
-
const
|
|
20446
|
-
const
|
|
20732
|
+
const { t } = useTranslate();
|
|
20733
|
+
const operatorOptions = React97.useMemo(
|
|
20734
|
+
() => [
|
|
20735
|
+
{ value: "equals", label: t("branchingLogic.operatorEquals") },
|
|
20736
|
+
{ value: "not-equals", label: t("branchingLogic.operatorNotEquals") },
|
|
20737
|
+
{ value: "contains", label: t("branchingLogic.operatorContains") },
|
|
20738
|
+
{ value: "in", label: t("branchingLogic.operatorIn") }
|
|
20739
|
+
],
|
|
20740
|
+
[t]
|
|
20741
|
+
);
|
|
20742
|
+
const sourceOptions = React97.useMemo(() => questionsToOptions(questions, null), [questions]);
|
|
20743
|
+
const targetOptions = React97.useMemo(
|
|
20744
|
+
() => questionsToOptions(questions, t("branchingLogic.endOfSurvey")),
|
|
20745
|
+
[questions, t]
|
|
20746
|
+
);
|
|
20447
20747
|
const sourceQuestion = questions.find((q) => q.id === rule.sourceQuestionId);
|
|
20448
20748
|
const valueOptions = React97.useMemo(() => {
|
|
20449
20749
|
if (!sourceQuestion?.optionValues) return [];
|
|
@@ -20488,22 +20788,22 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20488
20788
|
),
|
|
20489
20789
|
children: [
|
|
20490
20790
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex flex-wrap items-center gap-2", children: [
|
|
20491
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "label", weight: "semibold", className: "shrink-0", children: "
|
|
20791
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "label", weight: "semibold", className: "shrink-0", children: t("branchingLogic.if") }),
|
|
20492
20792
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "min-w-[10rem] grow basis-40", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
20493
20793
|
Select,
|
|
20494
20794
|
{
|
|
20495
20795
|
options: sourceOptions,
|
|
20496
20796
|
value: rule.sourceQuestionId,
|
|
20497
|
-
placeholder: "
|
|
20797
|
+
placeholder: t("branchingLogic.selectQuestion"),
|
|
20498
20798
|
onChange: handleSource,
|
|
20499
20799
|
disabled: readOnly,
|
|
20500
|
-
error: broken ? "
|
|
20800
|
+
error: broken ? t("branchingLogic.brokenReference") : void 0
|
|
20501
20801
|
}
|
|
20502
20802
|
) }),
|
|
20503
20803
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "min-w-[8rem] basis-32", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
20504
20804
|
Select,
|
|
20505
20805
|
{
|
|
20506
|
-
options:
|
|
20806
|
+
options: operatorOptions,
|
|
20507
20807
|
value: rule.operator,
|
|
20508
20808
|
onChange: handleOperator,
|
|
20509
20809
|
disabled: readOnly
|
|
@@ -20526,7 +20826,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20526
20826
|
{
|
|
20527
20827
|
options: valueOptions.filter((o) => !chips.includes(o.value)),
|
|
20528
20828
|
value: "",
|
|
20529
|
-
placeholder: "
|
|
20829
|
+
placeholder: t("branchingLogic.addValue"),
|
|
20530
20830
|
onChange: handleAddChip,
|
|
20531
20831
|
disabled: readOnly
|
|
20532
20832
|
}
|
|
@@ -20534,7 +20834,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20534
20834
|
Input,
|
|
20535
20835
|
{
|
|
20536
20836
|
inputType: "text",
|
|
20537
|
-
placeholder: "
|
|
20837
|
+
placeholder: t("branchingLogic.typeValuePressEnter"),
|
|
20538
20838
|
value: "",
|
|
20539
20839
|
onKeyDown: (e) => {
|
|
20540
20840
|
if (e.key !== "Enter") return;
|
|
@@ -20552,7 +20852,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20552
20852
|
{
|
|
20553
20853
|
options: valueOptions,
|
|
20554
20854
|
value: scalarValue,
|
|
20555
|
-
placeholder: "
|
|
20855
|
+
placeholder: t("branchingLogic.selectValue"),
|
|
20556
20856
|
onChange: (e) => onChange({ ...rule, value: e.target.value }),
|
|
20557
20857
|
disabled: readOnly
|
|
20558
20858
|
}
|
|
@@ -20560,7 +20860,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20560
20860
|
Input,
|
|
20561
20861
|
{
|
|
20562
20862
|
inputType: "text",
|
|
20563
|
-
placeholder: "
|
|
20863
|
+
placeholder: t("branchingLogic.value"),
|
|
20564
20864
|
value: scalarValue,
|
|
20565
20865
|
onChange: handleScalarValue,
|
|
20566
20866
|
disabled: readOnly
|
|
@@ -20568,17 +20868,17 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20568
20868
|
) }),
|
|
20569
20869
|
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "label", weight: "semibold", className: "shrink-0 inline-flex items-center gap-1", children: [
|
|
20570
20870
|
/* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.ArrowRight, { className: "h-4 w-4" }),
|
|
20571
|
-
"
|
|
20871
|
+
t("branchingLogic.goTo")
|
|
20572
20872
|
] }),
|
|
20573
20873
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "min-w-[10rem] grow basis-40", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
20574
20874
|
Select,
|
|
20575
20875
|
{
|
|
20576
20876
|
options: targetOptions,
|
|
20577
20877
|
value: rule.targetQuestionId,
|
|
20578
|
-
placeholder: "
|
|
20878
|
+
placeholder: t("branchingLogic.selectTarget"),
|
|
20579
20879
|
onChange: handleTarget,
|
|
20580
20880
|
disabled: readOnly,
|
|
20581
|
-
error: broken && rule.targetQuestionId !== END_OF_SURVEY ? "
|
|
20881
|
+
error: broken && rule.targetQuestionId !== END_OF_SURVEY ? t("branchingLogic.brokenReference") : void 0
|
|
20582
20882
|
}
|
|
20583
20883
|
) }),
|
|
20584
20884
|
!readOnly && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -20590,11 +20890,11 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20590
20890
|
action: "DELETE_RULE",
|
|
20591
20891
|
actionPayload: { ruleId: rule.id },
|
|
20592
20892
|
onClick: onDelete,
|
|
20593
|
-
"aria-label": "
|
|
20893
|
+
"aria-label": t("branchingLogic.deleteRule")
|
|
20594
20894
|
}
|
|
20595
20895
|
)
|
|
20596
20896
|
] }),
|
|
20597
|
-
broken && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "error", size: "sm", label: "
|
|
20897
|
+
broken && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "error", size: "sm", label: t("branchingLogic.brokenReference") })
|
|
20598
20898
|
]
|
|
20599
20899
|
}
|
|
20600
20900
|
);
|
|
@@ -20604,10 +20904,12 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20604
20904
|
NODE_GAP_Y = 80;
|
|
20605
20905
|
PADDING = 32;
|
|
20606
20906
|
LogicGraph = ({ questions, rules }) => {
|
|
20907
|
+
const { t } = useTranslate();
|
|
20908
|
+
const endOfSurveyLabel = t("branchingLogic.endOfSurvey");
|
|
20607
20909
|
const layout = React97.useMemo(() => {
|
|
20608
20910
|
const items = [
|
|
20609
20911
|
...questions.map((q) => ({ id: q.id, label: q.label, isEnd: false })),
|
|
20610
|
-
{ id: END_OF_SURVEY, label:
|
|
20912
|
+
{ id: END_OF_SURVEY, label: endOfSurveyLabel, isEnd: true }
|
|
20611
20913
|
];
|
|
20612
20914
|
const positions = {};
|
|
20613
20915
|
items.forEach((item, i) => {
|
|
@@ -20619,14 +20921,14 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20619
20921
|
const width = NODE_WIDTH + PADDING * 2 + 220;
|
|
20620
20922
|
const height = PADDING * 2 + items.length * (NODE_HEIGHT + NODE_GAP_Y);
|
|
20621
20923
|
return { items, positions, width, height };
|
|
20622
|
-
}, [questions]);
|
|
20924
|
+
}, [questions, endOfSurveyLabel]);
|
|
20623
20925
|
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "overflow-auto rounded-container border border-border bg-card p-2", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20624
20926
|
"svg",
|
|
20625
20927
|
{
|
|
20626
20928
|
width: layout.width,
|
|
20627
20929
|
height: layout.height,
|
|
20628
20930
|
role: "img",
|
|
20629
|
-
"aria-label": "
|
|
20931
|
+
"aria-label": t("branchingLogic.graphAriaLabel"),
|
|
20630
20932
|
style: { display: "block" },
|
|
20631
20933
|
children: [
|
|
20632
20934
|
/* @__PURE__ */ jsxRuntime.jsx("defs", { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -20734,6 +21036,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20734
21036
|
readOnly = false,
|
|
20735
21037
|
className
|
|
20736
21038
|
}) => {
|
|
21039
|
+
const { t } = useTranslate();
|
|
20737
21040
|
const eventBus = useEventBus();
|
|
20738
21041
|
const questions = Array.isArray(questionsProp) ? questionsProp : [];
|
|
20739
21042
|
const rulesInitial = Array.isArray(rulesProp) ? rulesProp : [];
|
|
@@ -20786,16 +21089,23 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20786
21089
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex flex-wrap items-center justify-between gap-2", children: [
|
|
20787
21090
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex items-center gap-2", children: [
|
|
20788
21091
|
/* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.GitBranch, { className: "h-5 w-5 text-foreground" }),
|
|
20789
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "subheading", weight: "semibold", children: "
|
|
21092
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "subheading", weight: "semibold", children: t("branchingLogic.title") }),
|
|
20790
21093
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
20791
21094
|
Badge,
|
|
20792
21095
|
{
|
|
20793
21096
|
variant: "neutral",
|
|
20794
21097
|
size: "sm",
|
|
20795
|
-
label:
|
|
21098
|
+
label: rules.length === 1 ? t("branchingLogic.ruleCountOne", { count: rules.length }) : t("branchingLogic.ruleCountOther", { count: rules.length })
|
|
20796
21099
|
}
|
|
20797
21100
|
),
|
|
20798
|
-
brokenCount > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
21101
|
+
brokenCount > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
21102
|
+
Badge,
|
|
21103
|
+
{
|
|
21104
|
+
variant: "error",
|
|
21105
|
+
size: "sm",
|
|
21106
|
+
label: t("branchingLogic.brokenCount", { count: brokenCount })
|
|
21107
|
+
}
|
|
21108
|
+
)
|
|
20799
21109
|
] }),
|
|
20800
21110
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex items-center gap-1 rounded-sm border border-border bg-card p-0.5", children: [
|
|
20801
21111
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -20806,7 +21116,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20806
21116
|
leftIcon: LucideIcons2.Pencil,
|
|
20807
21117
|
action: "VIEW_EDIT",
|
|
20808
21118
|
onClick: () => setView("edit"),
|
|
20809
|
-
children: "
|
|
21119
|
+
children: t("branchingLogic.rules")
|
|
20810
21120
|
}
|
|
20811
21121
|
),
|
|
20812
21122
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -20817,13 +21127,13 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20817
21127
|
leftIcon: LucideIcons2.Eye,
|
|
20818
21128
|
action: "VIEW_GRAPH",
|
|
20819
21129
|
onClick: () => setView("graph"),
|
|
20820
|
-
children: "
|
|
21130
|
+
children: t("branchingLogic.logicGraph")
|
|
20821
21131
|
}
|
|
20822
21132
|
)
|
|
20823
21133
|
] })
|
|
20824
21134
|
] }),
|
|
20825
21135
|
view === "edit" ? /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex flex-col gap-2", children: [
|
|
20826
|
-
rules.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(Card, { variant: "bordered", padding: "lg", className: "text-center", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", color: "muted", children: noQuestions ? "
|
|
21136
|
+
rules.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(Card, { variant: "bordered", padding: "lg", className: "text-center", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", color: "muted", children: noQuestions ? t("branchingLogic.emptyNoQuestions") : t("branchingLogic.emptyNoRules") }) }) : rules.map((rule) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
20827
21137
|
RuleRow,
|
|
20828
21138
|
{
|
|
20829
21139
|
rule,
|
|
@@ -20844,7 +21154,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
20844
21154
|
action: "ADD_RULE",
|
|
20845
21155
|
onClick: handleAddRule,
|
|
20846
21156
|
disabled: noQuestions,
|
|
20847
|
-
children: "
|
|
21157
|
+
children: t("branchingLogic.addRule")
|
|
20848
21158
|
}
|
|
20849
21159
|
) })
|
|
20850
21160
|
] }) : /* @__PURE__ */ jsxRuntime.jsx(LogicGraph, { questions, rules })
|
|
@@ -21471,7 +21781,7 @@ function CalendarGrid({
|
|
|
21471
21781
|
onClick: stepPrev,
|
|
21472
21782
|
"aria-disabled": !canPrev || void 0,
|
|
21473
21783
|
"aria-label": t("aria.previousDays"),
|
|
21474
|
-
children: "
|
|
21784
|
+
children: t("nav.previous")
|
|
21475
21785
|
}
|
|
21476
21786
|
),
|
|
21477
21787
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground", children: formatDateRange(visibleDays[0], visibleDays[visibleDays.length - 1]) }),
|
|
@@ -21484,7 +21794,7 @@ function CalendarGrid({
|
|
|
21484
21794
|
onClick: stepNext,
|
|
21485
21795
|
"aria-disabled": !canNext || void 0,
|
|
21486
21796
|
"aria-label": t("aria.nextDays"),
|
|
21487
|
-
children: "
|
|
21797
|
+
children: t("nav.next")
|
|
21488
21798
|
}
|
|
21489
21799
|
)
|
|
21490
21800
|
] }),
|
|
@@ -23034,7 +23344,7 @@ var init_Pagination = __esm({
|
|
|
23034
23344
|
type: "number",
|
|
23035
23345
|
value: jumpToPage,
|
|
23036
23346
|
onChange: (e) => setJumpToPage(e.target.value),
|
|
23037
|
-
placeholder: "
|
|
23347
|
+
placeholder: t("pagination.jumpPlaceholder"),
|
|
23038
23348
|
className: "w-20",
|
|
23039
23349
|
onKeyDown: (e) => {
|
|
23040
23350
|
if (e.key === "Enter") {
|
|
@@ -23172,13 +23482,10 @@ var init_CardGrid = __esm({
|
|
|
23172
23482
|
return children;
|
|
23173
23483
|
}
|
|
23174
23484
|
if (isLoading) {
|
|
23175
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "col-span-full text-center py-8 text-muted-foreground", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", color: "secondary", children: "
|
|
23485
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "col-span-full text-center py-8 text-muted-foreground", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", color: "secondary", children: t("loading.items") }) });
|
|
23176
23486
|
}
|
|
23177
23487
|
if (error) {
|
|
23178
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "col-span-full text-center py-8 text-error", children: /* @__PURE__ */ jsxRuntime.
|
|
23179
|
-
"Error loading items: ",
|
|
23180
|
-
error.message
|
|
23181
|
-
] }) });
|
|
23488
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "col-span-full text-center py-8 text-error", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", color: "error", children: t("error.loadFailed", { message: error.message }) }) });
|
|
23182
23489
|
}
|
|
23183
23490
|
if (normalizedData.length === 0) {
|
|
23184
23491
|
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "col-span-full text-center py-12 text-muted-foreground", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", color: "secondary", children: t("empty.noItems") || "No items found" }) });
|
|
@@ -27044,7 +27351,7 @@ function DataGrid({
|
|
|
27044
27351
|
onChange: () => toggleSelection(id),
|
|
27045
27352
|
onClick: (e) => e.stopPropagation(),
|
|
27046
27353
|
className: "w-4 h-4 mt-1 flex-shrink-0 accent-primary",
|
|
27047
|
-
"aria-label":
|
|
27354
|
+
"aria-label": t("card.selectItem", { item: titleValue !== void 0 ? String(titleValue) : t("card.itemFallback") })
|
|
27048
27355
|
}
|
|
27049
27356
|
),
|
|
27050
27357
|
/* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "xs", className: "flex-1 min-w-0", children: [
|
|
@@ -27242,7 +27549,7 @@ function formatDate3(value) {
|
|
|
27242
27549
|
if (isNaN(d.getTime())) return String(value);
|
|
27243
27550
|
return d.toLocaleDateString(void 0, { year: "numeric", month: "short", day: "numeric" });
|
|
27244
27551
|
}
|
|
27245
|
-
function formatValue2(value, format) {
|
|
27552
|
+
function formatValue2(value, format, boolLabels) {
|
|
27246
27553
|
if (value === void 0 || value === null) return "";
|
|
27247
27554
|
switch (format) {
|
|
27248
27555
|
case "date":
|
|
@@ -27254,7 +27561,7 @@ function formatValue2(value, format) {
|
|
|
27254
27561
|
case "percent":
|
|
27255
27562
|
return typeof value === "number" ? `${Math.round(value)}%` : String(value);
|
|
27256
27563
|
case "boolean":
|
|
27257
|
-
return value ? "Yes" : "No";
|
|
27564
|
+
return value ? boolLabels?.yes ?? "Yes" : boolLabels?.no ?? "No";
|
|
27258
27565
|
default:
|
|
27259
27566
|
return String(value);
|
|
27260
27567
|
}
|
|
@@ -27550,7 +27857,7 @@ function DataList({
|
|
|
27550
27857
|
field.label ?? fieldLabel3(field.name),
|
|
27551
27858
|
":"
|
|
27552
27859
|
] }),
|
|
27553
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", children: formatValue2(value, field.format) })
|
|
27860
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", children: formatValue2(value, field.format, { yes: t("common.yes"), no: t("common.no") }) })
|
|
27554
27861
|
] }, field.name);
|
|
27555
27862
|
}) }),
|
|
27556
27863
|
progressFields.map((field) => {
|
|
@@ -27680,6 +27987,7 @@ var init_FileTree = __esm({
|
|
|
27680
27987
|
init_Box();
|
|
27681
27988
|
init_Typography();
|
|
27682
27989
|
init_Icon();
|
|
27990
|
+
init_useTranslate();
|
|
27683
27991
|
TreeNodeItem = ({
|
|
27684
27992
|
node,
|
|
27685
27993
|
depth,
|
|
@@ -27765,8 +28073,9 @@ var init_FileTree = __esm({
|
|
|
27765
28073
|
className,
|
|
27766
28074
|
indent = 16
|
|
27767
28075
|
}) => {
|
|
28076
|
+
const { t } = useTranslate();
|
|
27768
28077
|
if (tree.length === 0) {
|
|
27769
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: `p-4 ${className ?? ""}`, children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "muted", children: "
|
|
28078
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: `p-4 ${className ?? ""}`, children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "muted", children: t("fileTree.noFiles") }) });
|
|
27770
28079
|
}
|
|
27771
28080
|
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: `py-1 overflow-y-auto ${className ?? ""}`, role: "tree", children: tree.map((node) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
27772
28081
|
TreeNodeItem,
|
|
@@ -27885,6 +28194,7 @@ var init_FilterGroup = __esm({
|
|
|
27885
28194
|
init_Icon();
|
|
27886
28195
|
init_useEventBus();
|
|
27887
28196
|
init_useQuerySingleton();
|
|
28197
|
+
init_useTranslate();
|
|
27888
28198
|
resolveFilterType = (filter) => filter.filterType ?? filter.type;
|
|
27889
28199
|
lookStyles6 = {
|
|
27890
28200
|
toolbar: "",
|
|
@@ -27905,6 +28215,7 @@ var init_FilterGroup = __esm({
|
|
|
27905
28215
|
isLoading,
|
|
27906
28216
|
look = "toolbar"
|
|
27907
28217
|
}) => {
|
|
28218
|
+
const { t } = useTranslate();
|
|
27908
28219
|
const eventBus = useEventBus();
|
|
27909
28220
|
const queryState = useQuerySingleton(query);
|
|
27910
28221
|
const [selectedValues, setSelectedValues] = React97.useState(
|
|
@@ -27986,7 +28297,7 @@ var init_FilterGroup = __esm({
|
|
|
27986
28297
|
"px-3 py-1.5 text-sm font-medium transition-all duration-[var(--transition-fast)]",
|
|
27987
28298
|
!selectedValues[filter.field] ? "bg-primary text-primary-foreground" : "bg-card text-muted-foreground hover:bg-muted"
|
|
27988
28299
|
),
|
|
27989
|
-
children: "
|
|
28300
|
+
children: t("filterGroup.all")
|
|
27990
28301
|
}
|
|
27991
28302
|
),
|
|
27992
28303
|
filter.options?.map((option) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -28014,7 +28325,7 @@ var init_FilterGroup = __esm({
|
|
|
28014
28325
|
size: "sm",
|
|
28015
28326
|
onClick: handleClearAll,
|
|
28016
28327
|
leftIcon: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "x", className: "h-3.5 w-3.5" }),
|
|
28017
|
-
children: "
|
|
28328
|
+
children: t("filterGroup.clear")
|
|
28018
28329
|
}
|
|
28019
28330
|
)
|
|
28020
28331
|
]
|
|
@@ -28025,7 +28336,7 @@ var init_FilterGroup = __esm({
|
|
|
28025
28336
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col gap-4", lookStyles6[look], className), children: [
|
|
28026
28337
|
showIcon && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-muted-foreground", children: [
|
|
28027
28338
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "filter", className: "h-4 w-4" }),
|
|
28028
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: "
|
|
28339
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: t("filterGroup.filters") })
|
|
28029
28340
|
] }),
|
|
28030
28341
|
filters.map((filter) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
28031
28342
|
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-xs font-bold text-muted-foreground uppercase tracking-wide", children: filter.label }),
|
|
@@ -28048,7 +28359,7 @@ var init_FilterGroup = __esm({
|
|
|
28048
28359
|
`${filter.field}_from`,
|
|
28049
28360
|
e.target.value || null
|
|
28050
28361
|
),
|
|
28051
|
-
placeholder: "
|
|
28362
|
+
placeholder: t("filterGroup.from"),
|
|
28052
28363
|
clearable: true,
|
|
28053
28364
|
onClear: () => handleFilterSelect(`${filter.field}_from`, null)
|
|
28054
28365
|
}
|
|
@@ -28062,7 +28373,7 @@ var init_FilterGroup = __esm({
|
|
|
28062
28373
|
`${filter.field}_to`,
|
|
28063
28374
|
e.target.value || null
|
|
28064
28375
|
),
|
|
28065
|
-
placeholder: "
|
|
28376
|
+
placeholder: t("filterGroup.to"),
|
|
28066
28377
|
clearable: true,
|
|
28067
28378
|
onClear: () => handleFilterSelect(`${filter.field}_to`, null)
|
|
28068
28379
|
}
|
|
@@ -28082,7 +28393,7 @@ var init_FilterGroup = __esm({
|
|
|
28082
28393
|
value: selectedValues[filter.field] || "all",
|
|
28083
28394
|
onChange: (e) => handleFilterSelect(filter.field, e.target.value),
|
|
28084
28395
|
options: [
|
|
28085
|
-
{ value: "all", label: "
|
|
28396
|
+
{ value: "all", label: t("filterGroup.all") },
|
|
28086
28397
|
...filter.options?.map((opt) => ({
|
|
28087
28398
|
value: opt,
|
|
28088
28399
|
label: opt
|
|
@@ -28099,7 +28410,7 @@ var init_FilterGroup = __esm({
|
|
|
28099
28410
|
onClick: handleClearAll,
|
|
28100
28411
|
leftIcon: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "x", className: "h-3.5 w-3.5" }),
|
|
28101
28412
|
className: "self-start",
|
|
28102
|
-
children: "
|
|
28413
|
+
children: t("filterGroup.clearAll")
|
|
28103
28414
|
}
|
|
28104
28415
|
)
|
|
28105
28416
|
] });
|
|
@@ -28165,7 +28476,7 @@ var init_FilterGroup = __esm({
|
|
|
28165
28476
|
value: selectedValues[filter.field] || "all",
|
|
28166
28477
|
onChange: (e) => handleFilterSelect(filter.field, e.target.value),
|
|
28167
28478
|
options: [
|
|
28168
|
-
{ value: "all", label:
|
|
28479
|
+
{ value: "all", label: t("filterGroup.allOf", { label: filter.label }) },
|
|
28169
28480
|
...filter.options?.map((opt) => ({
|
|
28170
28481
|
value: opt,
|
|
28171
28482
|
label: opt
|
|
@@ -28194,7 +28505,7 @@ var init_FilterGroup = __esm({
|
|
|
28194
28505
|
field
|
|
28195
28506
|
);
|
|
28196
28507
|
}),
|
|
28197
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", onClick: handleClearAll, children: "
|
|
28508
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", onClick: handleClearAll, children: t("filterGroup.clearAll") })
|
|
28198
28509
|
] })
|
|
28199
28510
|
]
|
|
28200
28511
|
}
|
|
@@ -28219,7 +28530,7 @@ var init_FilterGroup = __esm({
|
|
|
28219
28530
|
className: "text-muted-foreground",
|
|
28220
28531
|
children: [
|
|
28221
28532
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "filter", className: "h-4 w-4" }),
|
|
28222
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: "
|
|
28533
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: t("filterGroup.filters") })
|
|
28223
28534
|
]
|
|
28224
28535
|
}
|
|
28225
28536
|
),
|
|
@@ -28245,7 +28556,7 @@ var init_FilterGroup = __esm({
|
|
|
28245
28556
|
`${filter.field}_from`,
|
|
28246
28557
|
e.target.value || null
|
|
28247
28558
|
),
|
|
28248
|
-
placeholder: "
|
|
28559
|
+
placeholder: t("filterGroup.from"),
|
|
28249
28560
|
clearable: true,
|
|
28250
28561
|
onClear: () => handleFilterSelect(`${filter.field}_from`, null),
|
|
28251
28562
|
className: "min-w-[130px]"
|
|
@@ -28261,7 +28572,7 @@ var init_FilterGroup = __esm({
|
|
|
28261
28572
|
`${filter.field}_to`,
|
|
28262
28573
|
e.target.value || null
|
|
28263
28574
|
),
|
|
28264
|
-
placeholder: "
|
|
28575
|
+
placeholder: t("filterGroup.to"),
|
|
28265
28576
|
clearable: true,
|
|
28266
28577
|
onClear: () => handleFilterSelect(`${filter.field}_to`, null),
|
|
28267
28578
|
className: "min-w-[130px]"
|
|
@@ -28283,7 +28594,7 @@ var init_FilterGroup = __esm({
|
|
|
28283
28594
|
value: selectedValues[filter.field] || "all",
|
|
28284
28595
|
onChange: (e) => handleFilterSelect(filter.field, e.target.value),
|
|
28285
28596
|
options: [
|
|
28286
|
-
{ value: "all", label: "
|
|
28597
|
+
{ value: "all", label: t("filterGroup.all") },
|
|
28287
28598
|
...filter.options?.map((opt) => ({
|
|
28288
28599
|
value: opt,
|
|
28289
28600
|
label: opt
|
|
@@ -28294,10 +28605,7 @@ var init_FilterGroup = __esm({
|
|
|
28294
28605
|
)
|
|
28295
28606
|
] }, filter.field)),
|
|
28296
28607
|
activeFilterCount > 0 && /* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", align: "center", className: "ml-auto", children: [
|
|
28297
|
-
/* @__PURE__ */ jsxRuntime.
|
|
28298
|
-
activeFilterCount,
|
|
28299
|
-
" active"
|
|
28300
|
-
] }),
|
|
28608
|
+
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "primary", size: "md", children: t("filterGroup.activeCount", { count: activeFilterCount }) }),
|
|
28301
28609
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
28302
28610
|
Button,
|
|
28303
28611
|
{
|
|
@@ -28305,7 +28613,7 @@ var init_FilterGroup = __esm({
|
|
|
28305
28613
|
size: "sm",
|
|
28306
28614
|
onClick: handleClearAll,
|
|
28307
28615
|
leftIcon: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "x", className: "h-3.5 w-3.5" }),
|
|
28308
|
-
children: "
|
|
28616
|
+
children: t("filterGroup.clearAll")
|
|
28309
28617
|
}
|
|
28310
28618
|
)
|
|
28311
28619
|
] })
|
|
@@ -28534,7 +28842,7 @@ var init_RelationSelect = __esm({
|
|
|
28534
28842
|
value,
|
|
28535
28843
|
onChange,
|
|
28536
28844
|
options = [],
|
|
28537
|
-
placeholder
|
|
28845
|
+
placeholder,
|
|
28538
28846
|
required = false,
|
|
28539
28847
|
disabled = false,
|
|
28540
28848
|
isLoading = false,
|
|
@@ -28546,6 +28854,7 @@ var init_RelationSelect = __esm({
|
|
|
28546
28854
|
emptyMessage
|
|
28547
28855
|
}) => {
|
|
28548
28856
|
const { t } = useTranslate();
|
|
28857
|
+
const resolvedPlaceholder = placeholder ?? t("relationSelect.selectPlaceholder");
|
|
28549
28858
|
const resolvedSearchPlaceholder = searchPlaceholder ?? t("common.search");
|
|
28550
28859
|
const resolvedEmptyMessage = emptyMessage ?? t("empty.noOptionsFound");
|
|
28551
28860
|
const [isOpen, setIsOpen] = React97.useState(false);
|
|
@@ -28655,7 +28964,7 @@ var init_RelationSelect = __esm({
|
|
|
28655
28964
|
children: isLoading ? /* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "xs", align: "center", children: [
|
|
28656
28965
|
/* @__PURE__ */ jsxRuntime.jsx(Spinner, { size: "sm" }),
|
|
28657
28966
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { as: "span", children: t("common.loading") })
|
|
28658
|
-
] }) : selectedOption ? selectedOption.label :
|
|
28967
|
+
] }) : selectedOption ? selectedOption.label : resolvedPlaceholder
|
|
28659
28968
|
}
|
|
28660
28969
|
),
|
|
28661
28970
|
/* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "xs", align: "center", children: [
|
|
@@ -29249,19 +29558,20 @@ var init_RepeatableFormSection = __esm({
|
|
|
29249
29558
|
RepeatableFormSection.displayName = "RepeatableFormSection";
|
|
29250
29559
|
}
|
|
29251
29560
|
});
|
|
29252
|
-
var
|
|
29561
|
+
var actionTypeLabelKeys, actionTypeIcons, ViolationAlert;
|
|
29253
29562
|
var init_ViolationAlert = __esm({
|
|
29254
29563
|
"components/core/molecules/ViolationAlert.tsx"() {
|
|
29255
29564
|
init_cn();
|
|
29565
|
+
init_useTranslate();
|
|
29256
29566
|
init_Box();
|
|
29257
29567
|
init_Stack();
|
|
29258
29568
|
init_Typography();
|
|
29259
29569
|
init_Button();
|
|
29260
29570
|
init_Icon();
|
|
29261
|
-
|
|
29262
|
-
measure: "
|
|
29263
|
-
admin: "
|
|
29264
|
-
penalty: "
|
|
29571
|
+
actionTypeLabelKeys = {
|
|
29572
|
+
measure: "violationAlert.actionType.measure",
|
|
29573
|
+
admin: "violationAlert.actionType.admin",
|
|
29574
|
+
penalty: "violationAlert.actionType.penalty"
|
|
29265
29575
|
};
|
|
29266
29576
|
actionTypeIcons = {
|
|
29267
29577
|
measure: "alert-triangle",
|
|
@@ -29278,10 +29588,11 @@ var init_ViolationAlert = __esm({
|
|
|
29278
29588
|
className,
|
|
29279
29589
|
...flatProps
|
|
29280
29590
|
}) => {
|
|
29591
|
+
const { t } = useTranslate();
|
|
29281
29592
|
const resolvedViolation = violation ?? {
|
|
29282
29593
|
law: "",
|
|
29283
29594
|
article: "",
|
|
29284
|
-
message: flatProps.message ?? "
|
|
29595
|
+
message: flatProps.message ?? t("violationAlert.fallbackMessage"),
|
|
29285
29596
|
actionType: "measure"
|
|
29286
29597
|
};
|
|
29287
29598
|
const effectiveSeverity = severity ?? (resolvedViolation.actionType === "measure" ? "warning" : "error");
|
|
@@ -29366,7 +29677,7 @@ var init_ViolationAlert = __esm({
|
|
|
29366
29677
|
{
|
|
29367
29678
|
variant: "caption",
|
|
29368
29679
|
className: cn(textColor, "opacity-75"),
|
|
29369
|
-
children:
|
|
29680
|
+
children: t(actionTypeLabelKeys[resolvedViolation.actionType])
|
|
29370
29681
|
}
|
|
29371
29682
|
)
|
|
29372
29683
|
] })
|
|
@@ -29397,7 +29708,7 @@ var init_ViolationAlert = __esm({
|
|
|
29397
29708
|
{
|
|
29398
29709
|
variant: "caption",
|
|
29399
29710
|
className: cn(textColor, "opacity-75"),
|
|
29400
|
-
children: "
|
|
29711
|
+
children: t("violationAlert.adminLabel")
|
|
29401
29712
|
}
|
|
29402
29713
|
),
|
|
29403
29714
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -29416,7 +29727,7 @@ var init_ViolationAlert = __esm({
|
|
|
29416
29727
|
{
|
|
29417
29728
|
variant: "caption",
|
|
29418
29729
|
className: cn(textColor, "opacity-75"),
|
|
29419
|
-
children: "
|
|
29730
|
+
children: t("violationAlert.penaltyLabel")
|
|
29420
29731
|
}
|
|
29421
29732
|
),
|
|
29422
29733
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -29441,7 +29752,7 @@ var init_ViolationAlert = __esm({
|
|
|
29441
29752
|
className: cn(textColor, "self-start"),
|
|
29442
29753
|
children: [
|
|
29443
29754
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "arrow-right", size: "sm", className: "mr-1" }),
|
|
29444
|
-
"
|
|
29755
|
+
t("violationAlert.goToField")
|
|
29445
29756
|
]
|
|
29446
29757
|
}
|
|
29447
29758
|
)
|
|
@@ -29757,6 +30068,7 @@ var init_LineChart = __esm({
|
|
|
29757
30068
|
"use client";
|
|
29758
30069
|
init_cn();
|
|
29759
30070
|
init_atoms2();
|
|
30071
|
+
init_useTranslate();
|
|
29760
30072
|
LineChart2 = ({
|
|
29761
30073
|
data,
|
|
29762
30074
|
width = 400,
|
|
@@ -29768,6 +30080,7 @@ var init_LineChart = __esm({
|
|
|
29768
30080
|
areaColor = "var(--color-primary)",
|
|
29769
30081
|
className
|
|
29770
30082
|
}) => {
|
|
30083
|
+
const { t } = useTranslate();
|
|
29771
30084
|
const gradientId = React97.useId();
|
|
29772
30085
|
const safeData = data ?? [];
|
|
29773
30086
|
const sortedData = React97.useMemo(() => {
|
|
@@ -29804,7 +30117,7 @@ var init_LineChart = __esm({
|
|
|
29804
30117
|
return `${linePath} L ${last.x} ${bottom} L ${first.x} ${bottom} Z`;
|
|
29805
30118
|
}, [linePath, points, height, showArea]);
|
|
29806
30119
|
if (safeData.length === 0) {
|
|
29807
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("flex items-center justify-center text-muted-foreground", className), style: { width, height }, children: "
|
|
30120
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("flex items-center justify-center text-muted-foreground", className), style: { width, height }, children: t("empty.noData") });
|
|
29808
30121
|
}
|
|
29809
30122
|
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn(className), children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
29810
30123
|
"svg",
|
|
@@ -31711,6 +32024,7 @@ var init_GraphView = __esm({
|
|
|
31711
32024
|
"use client";
|
|
31712
32025
|
init_cn();
|
|
31713
32026
|
init_atoms2();
|
|
32027
|
+
init_useTranslate();
|
|
31714
32028
|
GROUP_COLORS = [
|
|
31715
32029
|
"#3b82f6",
|
|
31716
32030
|
// blue-500
|
|
@@ -31743,6 +32057,7 @@ var init_GraphView = __esm({
|
|
|
31743
32057
|
showLabels = true,
|
|
31744
32058
|
zoomToFit = true
|
|
31745
32059
|
}) => {
|
|
32060
|
+
const { t } = useTranslate();
|
|
31746
32061
|
const containerRef = React97.useRef(null);
|
|
31747
32062
|
const animRef = React97.useRef(0);
|
|
31748
32063
|
const [simNodes, setSimNodes] = React97.useState([]);
|
|
@@ -31920,7 +32235,7 @@ var init_GraphView = __esm({
|
|
|
31920
32235
|
[onNodeClick]
|
|
31921
32236
|
);
|
|
31922
32237
|
if (nodes.length === 0) {
|
|
31923
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("flex items-center justify-center", className), style: { width: w, height: h }, children: /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "text-muted-foreground text-sm", children: "
|
|
32238
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("flex items-center justify-center", className), style: { width: w, height: h }, children: /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "text-muted-foreground text-sm", children: t("display.noGraphData") }) });
|
|
31924
32239
|
}
|
|
31925
32240
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
31926
32241
|
Box,
|
|
@@ -32376,11 +32691,12 @@ var init_UploadDropZone = __esm({
|
|
|
32376
32691
|
init_Icon();
|
|
32377
32692
|
init_Typography();
|
|
32378
32693
|
init_useEventBus();
|
|
32694
|
+
init_useTranslate();
|
|
32379
32695
|
UploadDropZone = ({
|
|
32380
32696
|
accept,
|
|
32381
32697
|
maxSize,
|
|
32382
32698
|
maxFiles = 1,
|
|
32383
|
-
label
|
|
32699
|
+
label,
|
|
32384
32700
|
description,
|
|
32385
32701
|
disabled = false,
|
|
32386
32702
|
action,
|
|
@@ -32388,22 +32704,24 @@ var init_UploadDropZone = __esm({
|
|
|
32388
32704
|
onFiles,
|
|
32389
32705
|
className
|
|
32390
32706
|
}) => {
|
|
32707
|
+
const { t } = useTranslate();
|
|
32708
|
+
const resolvedLabel = label ?? t("upload.dropOrBrowse");
|
|
32391
32709
|
const [isDragOver, setIsDragOver] = React97.useState(false);
|
|
32392
32710
|
const [error, setError] = React97.useState(null);
|
|
32393
32711
|
const inputRef = React97.useRef(null);
|
|
32394
32712
|
const eventBus = useSafeEventBus7();
|
|
32395
32713
|
const defaultDescription = [
|
|
32396
|
-
accept ?
|
|
32397
|
-
maxSize ?
|
|
32398
|
-
maxFiles > 1 ?
|
|
32714
|
+
accept ? t("upload.accepted", { accept }) : null,
|
|
32715
|
+
maxSize ? t("upload.maxSize", { size: formatFileSize(maxSize) }) : null,
|
|
32716
|
+
maxFiles > 1 ? t("upload.maxFiles", { count: maxFiles }) : null
|
|
32399
32717
|
].filter(Boolean).join(". ");
|
|
32400
32718
|
const validateFiles = React97.useCallback(
|
|
32401
32719
|
(files) => {
|
|
32402
32720
|
if (files.length > maxFiles) {
|
|
32403
|
-
return { valid: [], error:
|
|
32721
|
+
return { valid: [], error: t("upload.error.maxFiles", { count: maxFiles }) };
|
|
32404
32722
|
}
|
|
32405
32723
|
if (accept) {
|
|
32406
|
-
const acceptedTypes = accept.split(",").map((
|
|
32724
|
+
const acceptedTypes = accept.split(",").map((s) => s.trim());
|
|
32407
32725
|
const invalid = files.filter((file) => {
|
|
32408
32726
|
return !acceptedTypes.some((type) => {
|
|
32409
32727
|
if (type.endsWith("/*")) {
|
|
@@ -32413,7 +32731,7 @@ var init_UploadDropZone = __esm({
|
|
|
32413
32731
|
});
|
|
32414
32732
|
});
|
|
32415
32733
|
if (invalid.length > 0) {
|
|
32416
|
-
return { valid: [], error:
|
|
32734
|
+
return { valid: [], error: t("upload.error.invalidType", { name: invalid[0].name }) };
|
|
32417
32735
|
}
|
|
32418
32736
|
}
|
|
32419
32737
|
if (maxSize) {
|
|
@@ -32421,13 +32739,13 @@ var init_UploadDropZone = __esm({
|
|
|
32421
32739
|
if (tooLarge.length > 0) {
|
|
32422
32740
|
return {
|
|
32423
32741
|
valid: [],
|
|
32424
|
-
error:
|
|
32742
|
+
error: t("upload.error.tooLarge", { name: tooLarge[0].name, size: formatFileSize(maxSize) })
|
|
32425
32743
|
};
|
|
32426
32744
|
}
|
|
32427
32745
|
}
|
|
32428
32746
|
return { valid: files, error: null };
|
|
32429
32747
|
},
|
|
32430
|
-
[accept, maxSize, maxFiles]
|
|
32748
|
+
[accept, maxSize, maxFiles, t]
|
|
32431
32749
|
);
|
|
32432
32750
|
const handleFiles = React97.useCallback(
|
|
32433
32751
|
(files) => {
|
|
@@ -32498,7 +32816,7 @@ var init_UploadDropZone = __esm({
|
|
|
32498
32816
|
handleClick();
|
|
32499
32817
|
}
|
|
32500
32818
|
},
|
|
32501
|
-
"aria-label":
|
|
32819
|
+
"aria-label": resolvedLabel,
|
|
32502
32820
|
children: [
|
|
32503
32821
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
32504
32822
|
"input",
|
|
@@ -32514,7 +32832,7 @@ var init_UploadDropZone = __esm({
|
|
|
32514
32832
|
}
|
|
32515
32833
|
),
|
|
32516
32834
|
error ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "file-warning", size: "lg", className: "text-error mb-2" }) : /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "upload", size: "lg", className: "text-muted-foreground mb-2" }),
|
|
32517
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body1", className: "text-center font-medium mb-1", children: isDragOver ? "
|
|
32835
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body1", className: "text-center font-medium mb-1", children: isDragOver ? t("upload.dropFilesHere") : resolvedLabel }),
|
|
32518
32836
|
error ? /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "error", className: "text-center", children: error }) : /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "muted", className: "text-center", children: description ?? defaultDescription })
|
|
32519
32837
|
]
|
|
32520
32838
|
}
|
|
@@ -32936,7 +33254,7 @@ function TableView({
|
|
|
32936
33254
|
{
|
|
32937
33255
|
checked: selected.has(id),
|
|
32938
33256
|
onChange: () => toggleRow(id),
|
|
32939
|
-
"aria-label":
|
|
33257
|
+
"aria-label": t("table.selectRow", { id })
|
|
32940
33258
|
}
|
|
32941
33259
|
) }),
|
|
32942
33260
|
hasRenderProp ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex-1 min-w-0", children: children(row, index) }) : colDefs.map((col) => {
|
|
@@ -35783,7 +36101,7 @@ var init_QrScanner = __esm({
|
|
|
35783
36101
|
className: "inset-0 flex-col items-center justify-center gap-2 bg-black bg-opacity-80 text-center",
|
|
35784
36102
|
children: [
|
|
35785
36103
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "camera", className: "h-8 w-8 text-white", "aria-hidden": "true" }),
|
|
35786
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-white", children: "
|
|
36104
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-white", children: t("qrScanner.cameraUnavailable") }),
|
|
35787
36105
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", className: "text-white opacity-70", children: cameraError.message })
|
|
35788
36106
|
]
|
|
35789
36107
|
}
|
|
@@ -35794,7 +36112,7 @@ var init_QrScanner = __esm({
|
|
|
35794
36112
|
position: "absolute",
|
|
35795
36113
|
display: "flex",
|
|
35796
36114
|
className: "inset-0 items-center justify-center bg-black bg-opacity-60",
|
|
35797
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-white", children: "
|
|
36115
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-white", children: t("qrScanner.paused") })
|
|
35798
36116
|
}
|
|
35799
36117
|
),
|
|
35800
36118
|
showCameraControls && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -35813,7 +36131,7 @@ var init_QrScanner = __esm({
|
|
|
35813
36131
|
"rounded-full bg-black bg-opacity-60 p-2 text-white",
|
|
35814
36132
|
"hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
|
|
35815
36133
|
),
|
|
35816
|
-
"aria-label": isPaused ? "
|
|
36134
|
+
"aria-label": isPaused ? t("qrScanner.resumeScanning") : t("qrScanner.pauseScanning"),
|
|
35817
36135
|
children: isPaused ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "play", className: "h-4 w-4" }) : /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "pause", className: "h-4 w-4" })
|
|
35818
36136
|
}
|
|
35819
36137
|
),
|
|
@@ -35826,7 +36144,7 @@ var init_QrScanner = __esm({
|
|
|
35826
36144
|
"rounded-full bg-black bg-opacity-60 p-2 text-white",
|
|
35827
36145
|
"hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
|
|
35828
36146
|
),
|
|
35829
|
-
"aria-label":
|
|
36147
|
+
"aria-label": currentFacing === "environment" ? t("qrScanner.switchToFrontCamera") : t("qrScanner.switchToRearCamera"),
|
|
35830
36148
|
children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "refresh-cw", className: "h-4 w-4" })
|
|
35831
36149
|
}
|
|
35832
36150
|
),
|
|
@@ -35840,7 +36158,7 @@ var init_QrScanner = __esm({
|
|
|
35840
36158
|
"hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
|
|
35841
36159
|
),
|
|
35842
36160
|
"aria-label": t("aria.mockScanDev"),
|
|
35843
|
-
children: "
|
|
36161
|
+
children: t("qrScanner.mockScan")
|
|
35844
36162
|
}
|
|
35845
36163
|
)
|
|
35846
36164
|
]
|
|
@@ -35858,6 +36176,7 @@ var init_OptionConstraintGroup = __esm({
|
|
|
35858
36176
|
"components/core/molecules/OptionConstraintGroup.tsx"() {
|
|
35859
36177
|
init_cn();
|
|
35860
36178
|
init_useEventBus();
|
|
36179
|
+
init_useTranslate();
|
|
35861
36180
|
init_Typography();
|
|
35862
36181
|
init_Box();
|
|
35863
36182
|
init_Label();
|
|
@@ -35867,36 +36186,36 @@ var init_OptionConstraintGroup = __esm({
|
|
|
35867
36186
|
const sign = delta >= 0 ? "+" : "-";
|
|
35868
36187
|
return `${sign}$${Math.abs(delta).toFixed(2)}`;
|
|
35869
36188
|
};
|
|
35870
|
-
constraintHint = (constraint) => {
|
|
36189
|
+
constraintHint = (constraint, t) => {
|
|
35871
36190
|
if (constraint.type === "single") {
|
|
35872
|
-
return constraint.required ? "
|
|
36191
|
+
return constraint.required ? t("optionConstraint.requiredOne") : t("optionConstraint.optionalOne");
|
|
35873
36192
|
}
|
|
35874
36193
|
const { min, max } = constraint;
|
|
35875
36194
|
if (min && max) {
|
|
35876
|
-
return min === max ?
|
|
36195
|
+
return min === max ? t("optionConstraint.pickExactly", { count: min }) : t("optionConstraint.pickRange", { min, max });
|
|
35877
36196
|
}
|
|
35878
|
-
if (min) return
|
|
35879
|
-
if (max) return
|
|
35880
|
-
return "
|
|
36197
|
+
if (min) return t("optionConstraint.pickAtLeast", { count: min });
|
|
36198
|
+
if (max) return t("optionConstraint.pickUpTo", { count: max });
|
|
36199
|
+
return t("optionConstraint.optional");
|
|
35881
36200
|
};
|
|
35882
|
-
validateSelection = (selected, constraint) => {
|
|
36201
|
+
validateSelection = (selected, constraint, t) => {
|
|
35883
36202
|
if (constraint.type === "single") {
|
|
35884
36203
|
if (constraint.required && selected.length === 0) {
|
|
35885
|
-
return "
|
|
36204
|
+
return t("optionConstraint.error.pickOne");
|
|
35886
36205
|
}
|
|
35887
36206
|
if (selected.length > 1) {
|
|
35888
|
-
return "
|
|
36207
|
+
return t("optionConstraint.error.pickOnlyOne");
|
|
35889
36208
|
}
|
|
35890
36209
|
return void 0;
|
|
35891
36210
|
}
|
|
35892
36211
|
const { min, max } = constraint;
|
|
35893
36212
|
if (min !== void 0 && selected.length < min) {
|
|
35894
36213
|
const remaining = min - selected.length;
|
|
35895
|
-
return
|
|
36214
|
+
return t("optionConstraint.error.pickMore", { count: remaining });
|
|
35896
36215
|
}
|
|
35897
36216
|
if (max !== void 0 && selected.length > max) {
|
|
35898
36217
|
const excess = selected.length - max;
|
|
35899
|
-
return
|
|
36218
|
+
return t("optionConstraint.error.removeOptions", { count: excess });
|
|
35900
36219
|
}
|
|
35901
36220
|
return void 0;
|
|
35902
36221
|
};
|
|
@@ -35913,8 +36232,9 @@ var init_OptionConstraintGroup = __esm({
|
|
|
35913
36232
|
className
|
|
35914
36233
|
}) => {
|
|
35915
36234
|
const eventBus = useEventBus();
|
|
35916
|
-
const
|
|
35917
|
-
const
|
|
36235
|
+
const { t } = useTranslate();
|
|
36236
|
+
const hint = constraintHint(constraint, t);
|
|
36237
|
+
const error = validateSelection(selected, constraint, t);
|
|
35918
36238
|
const inputName = `option-${groupId}`;
|
|
35919
36239
|
const labelTextSize = size === "sm" ? "text-sm" : "text-base";
|
|
35920
36240
|
const optionGap = size === "sm" ? "gap-2" : "gap-2.5";
|
|
@@ -36014,7 +36334,7 @@ var init_OptionConstraintGroup = __esm({
|
|
|
36014
36334
|
variant: "caption",
|
|
36015
36335
|
color: "warning",
|
|
36016
36336
|
className: "rounded border border-warning/40 px-1.5 py-0.5",
|
|
36017
|
-
children: "
|
|
36337
|
+
children: t("optionConstraint.outOfStock")
|
|
36018
36338
|
}
|
|
36019
36339
|
)
|
|
36020
36340
|
]
|
|
@@ -36336,6 +36656,7 @@ function changeBlockType(block, type) {
|
|
|
36336
36656
|
return { id: block.id, type, content: seed };
|
|
36337
36657
|
}
|
|
36338
36658
|
function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
36659
|
+
const { t } = useTranslate();
|
|
36339
36660
|
const [open, setOpen] = React97.useState(false);
|
|
36340
36661
|
const ref = React97.useRef(null);
|
|
36341
36662
|
React97.useEffect(() => {
|
|
@@ -36355,7 +36676,7 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
36355
36676
|
{
|
|
36356
36677
|
type: "button",
|
|
36357
36678
|
variant: "ghost",
|
|
36358
|
-
"aria-label": "
|
|
36679
|
+
"aria-label": t("richBlockEditor.blockActions"),
|
|
36359
36680
|
className: cn(
|
|
36360
36681
|
"inline-flex items-center justify-center",
|
|
36361
36682
|
"h-6 w-6 rounded-sm p-0 gap-0",
|
|
@@ -36377,7 +36698,7 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
36377
36698
|
"py-1 text-sm"
|
|
36378
36699
|
),
|
|
36379
36700
|
children: [
|
|
36380
|
-
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground", children:
|
|
36701
|
+
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground", children: t(BLOCK_TYPE_LABEL_KEY[block.type]) }),
|
|
36381
36702
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
36382
36703
|
Button,
|
|
36383
36704
|
{
|
|
@@ -36391,7 +36712,8 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
36391
36712
|
},
|
|
36392
36713
|
children: [
|
|
36393
36714
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "plus", className: "w-3.5 h-3.5" }),
|
|
36394
|
-
"
|
|
36715
|
+
" ",
|
|
36716
|
+
t("richBlockEditor.duplicate")
|
|
36395
36717
|
]
|
|
36396
36718
|
}
|
|
36397
36719
|
),
|
|
@@ -36408,14 +36730,15 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
36408
36730
|
},
|
|
36409
36731
|
children: [
|
|
36410
36732
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "trash", className: "w-3.5 h-3.5" }),
|
|
36411
|
-
"
|
|
36733
|
+
" ",
|
|
36734
|
+
t("common.delete")
|
|
36412
36735
|
]
|
|
36413
36736
|
}
|
|
36414
36737
|
),
|
|
36415
36738
|
CHANGEABLE_TYPES.includes(block.type) && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
36416
36739
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "my-1 border-t border-border" }),
|
|
36417
|
-
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground", children: "
|
|
36418
|
-
CHANGEABLE_TYPES.filter((
|
|
36740
|
+
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground", children: t("richBlockEditor.turnInto") }),
|
|
36741
|
+
CHANGEABLE_TYPES.filter((bt) => bt !== block.type).map((bt) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
36419
36742
|
Button,
|
|
36420
36743
|
{
|
|
36421
36744
|
type: "button",
|
|
@@ -36423,12 +36746,12 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
36423
36746
|
role: "menuitem",
|
|
36424
36747
|
className: "flex w-full items-center gap-2 px-2 py-1.5 text-left justify-start rounded-none",
|
|
36425
36748
|
onClick: () => {
|
|
36426
|
-
onChangeType(
|
|
36749
|
+
onChangeType(bt);
|
|
36427
36750
|
setOpen(false);
|
|
36428
36751
|
},
|
|
36429
|
-
children:
|
|
36752
|
+
children: t(BLOCK_TYPE_LABEL_KEY[bt])
|
|
36430
36753
|
},
|
|
36431
|
-
|
|
36754
|
+
bt
|
|
36432
36755
|
))
|
|
36433
36756
|
] })
|
|
36434
36757
|
]
|
|
@@ -36490,6 +36813,7 @@ function BlockRow({
|
|
|
36490
36813
|
onInsertAfter,
|
|
36491
36814
|
onChangeType
|
|
36492
36815
|
}) {
|
|
36816
|
+
const { t } = useTranslate();
|
|
36493
36817
|
const setContent = React97.useCallback(
|
|
36494
36818
|
(next) => onUpdate((b) => ({ ...b, content: next })),
|
|
36495
36819
|
[onUpdate]
|
|
@@ -36539,8 +36863,8 @@ function BlockRow({
|
|
|
36539
36863
|
tag: "h1",
|
|
36540
36864
|
value: block.content ?? "",
|
|
36541
36865
|
readOnly,
|
|
36542
|
-
placeholder: placeholder ?? "
|
|
36543
|
-
ariaLabel: "
|
|
36866
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.heading1"),
|
|
36867
|
+
ariaLabel: t("richBlockEditor.aria.heading1Block"),
|
|
36544
36868
|
className: "text-3xl font-bold leading-tight",
|
|
36545
36869
|
onValueChange: setContent
|
|
36546
36870
|
}
|
|
@@ -36552,8 +36876,8 @@ function BlockRow({
|
|
|
36552
36876
|
tag: "h2",
|
|
36553
36877
|
value: block.content ?? "",
|
|
36554
36878
|
readOnly,
|
|
36555
|
-
placeholder: placeholder ?? "
|
|
36556
|
-
ariaLabel: "
|
|
36879
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.heading2"),
|
|
36880
|
+
ariaLabel: t("richBlockEditor.aria.heading2Block"),
|
|
36557
36881
|
className: "text-2xl font-semibold leading-tight",
|
|
36558
36882
|
onValueChange: setContent
|
|
36559
36883
|
}
|
|
@@ -36565,8 +36889,8 @@ function BlockRow({
|
|
|
36565
36889
|
tag: "h3",
|
|
36566
36890
|
value: block.content ?? "",
|
|
36567
36891
|
readOnly,
|
|
36568
|
-
placeholder: placeholder ?? "
|
|
36569
|
-
ariaLabel: "
|
|
36892
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.heading3"),
|
|
36893
|
+
ariaLabel: t("richBlockEditor.aria.heading3Block"),
|
|
36570
36894
|
className: "text-xl font-semibold leading-tight",
|
|
36571
36895
|
onValueChange: setContent
|
|
36572
36896
|
}
|
|
@@ -36578,8 +36902,8 @@ function BlockRow({
|
|
|
36578
36902
|
tag: "blockquote",
|
|
36579
36903
|
value: block.content ?? "",
|
|
36580
36904
|
readOnly,
|
|
36581
|
-
placeholder: placeholder ?? "
|
|
36582
|
-
ariaLabel: "
|
|
36905
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.quote"),
|
|
36906
|
+
ariaLabel: t("richBlockEditor.aria.quoteBlock"),
|
|
36583
36907
|
className: "border-l-4 border-primary/60 pl-4 italic text-muted-foreground",
|
|
36584
36908
|
onValueChange: setContent
|
|
36585
36909
|
}
|
|
@@ -36587,13 +36911,13 @@ function BlockRow({
|
|
|
36587
36911
|
case "code":
|
|
36588
36912
|
return /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "rounded-md border border-border bg-muted/40", children: [
|
|
36589
36913
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex items-center justify-between border-b border-border px-3 py-1 text-xs text-muted-foreground", children: [
|
|
36590
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { as: "span", variant: "caption", className: "uppercase tracking-wide", children: "
|
|
36914
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { as: "span", variant: "caption", className: "uppercase tracking-wide", children: t("richBlockEditor.blockType.code") }),
|
|
36591
36915
|
!readOnly && /* @__PURE__ */ jsxRuntime.jsx(
|
|
36592
36916
|
Input,
|
|
36593
36917
|
{
|
|
36594
36918
|
inputType: "text",
|
|
36595
36919
|
value: String(block.metadata?.language ?? "plaintext"),
|
|
36596
|
-
"aria-label": "
|
|
36920
|
+
"aria-label": t("richBlockEditor.aria.codeLanguage"),
|
|
36597
36921
|
className: cn(
|
|
36598
36922
|
"h-6 w-32 rounded-sm border border-border bg-background",
|
|
36599
36923
|
"px-2 text-xs outline-none focus:ring-1 focus:ring-ring"
|
|
@@ -36609,8 +36933,8 @@ function BlockRow({
|
|
|
36609
36933
|
tag: "pre",
|
|
36610
36934
|
value: block.content ?? "",
|
|
36611
36935
|
readOnly,
|
|
36612
|
-
placeholder: placeholder ?? "
|
|
36613
|
-
ariaLabel: "
|
|
36936
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.code"),
|
|
36937
|
+
ariaLabel: t("richBlockEditor.aria.codeBlock"),
|
|
36614
36938
|
className: "block whitespace-pre-wrap p-3 font-mono text-sm leading-relaxed",
|
|
36615
36939
|
onValueChange: setContent
|
|
36616
36940
|
}
|
|
@@ -36623,7 +36947,7 @@ function BlockRow({
|
|
|
36623
36947
|
const caption = String(block.metadata?.caption ?? "");
|
|
36624
36948
|
const imgProps = {
|
|
36625
36949
|
src: url,
|
|
36626
|
-
alt: caption || "
|
|
36950
|
+
alt: caption || t("richBlockEditor.embeddedImage"),
|
|
36627
36951
|
className: "max-h-96 w-full rounded-md border border-border object-contain"
|
|
36628
36952
|
};
|
|
36629
36953
|
return /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "space-y-2", children: [
|
|
@@ -36637,7 +36961,8 @@ function BlockRow({
|
|
|
36637
36961
|
),
|
|
36638
36962
|
children: [
|
|
36639
36963
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "image", className: "mr-2 w-4 h-4" }),
|
|
36640
|
-
"
|
|
36964
|
+
" ",
|
|
36965
|
+
t("richBlockEditor.noImageUrl")
|
|
36641
36966
|
]
|
|
36642
36967
|
}
|
|
36643
36968
|
),
|
|
@@ -36648,7 +36973,7 @@ function BlockRow({
|
|
|
36648
36973
|
inputType: "url",
|
|
36649
36974
|
value: url,
|
|
36650
36975
|
placeholder: "https://example.com/image.png",
|
|
36651
|
-
"aria-label": "
|
|
36976
|
+
"aria-label": t("richBlockEditor.aria.imageUrl"),
|
|
36652
36977
|
className: cn(
|
|
36653
36978
|
"h-8 flex-1 rounded-sm border border-border bg-background",
|
|
36654
36979
|
"px-2 text-sm outline-none focus:ring-1 focus:ring-ring"
|
|
@@ -36661,8 +36986,8 @@ function BlockRow({
|
|
|
36661
36986
|
{
|
|
36662
36987
|
inputType: "text",
|
|
36663
36988
|
value: caption,
|
|
36664
|
-
placeholder: "
|
|
36665
|
-
"aria-label": "
|
|
36989
|
+
placeholder: t("richBlockEditor.placeholder.caption"),
|
|
36990
|
+
"aria-label": t("richBlockEditor.aria.imageCaption"),
|
|
36666
36991
|
className: cn(
|
|
36667
36992
|
"h-8 flex-1 rounded-sm border border-border bg-background",
|
|
36668
36993
|
"px-2 text-sm outline-none focus:ring-1 focus:ring-ring"
|
|
@@ -36693,8 +37018,8 @@ function BlockRow({
|
|
|
36693
37018
|
tag: "span",
|
|
36694
37019
|
value: child.content ?? "",
|
|
36695
37020
|
readOnly,
|
|
36696
|
-
placeholder: "
|
|
36697
|
-
ariaLabel: "
|
|
37021
|
+
placeholder: t("richBlockEditor.placeholder.listItem"),
|
|
37022
|
+
ariaLabel: t("richBlockEditor.aria.listItem"),
|
|
36698
37023
|
className: "inline-block min-w-[1ch] flex-1",
|
|
36699
37024
|
onValueChange: (next) => setChildContent(child.id, next)
|
|
36700
37025
|
}
|
|
@@ -36704,7 +37029,7 @@ function BlockRow({
|
|
|
36704
37029
|
{
|
|
36705
37030
|
type: "button",
|
|
36706
37031
|
variant: "ghost",
|
|
36707
|
-
"aria-label": "
|
|
37032
|
+
"aria-label": t("richBlockEditor.aria.removeListItem"),
|
|
36708
37033
|
className: cn(
|
|
36709
37034
|
"h-5 w-5 shrink-0 rounded-sm text-muted-foreground p-0 gap-0",
|
|
36710
37035
|
"opacity-0 group-hover/item:opacity-100 hover:bg-muted hover:text-foreground"
|
|
@@ -36726,7 +37051,8 @@ function BlockRow({
|
|
|
36726
37051
|
onClick: addListItem,
|
|
36727
37052
|
children: [
|
|
36728
37053
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "plus", className: "w-3 h-3" }),
|
|
36729
|
-
"
|
|
37054
|
+
" ",
|
|
37055
|
+
t("richBlockEditor.addItem")
|
|
36730
37056
|
]
|
|
36731
37057
|
}
|
|
36732
37058
|
) })
|
|
@@ -36742,8 +37068,8 @@ function BlockRow({
|
|
|
36742
37068
|
tag: "p",
|
|
36743
37069
|
value: block.content ?? "",
|
|
36744
37070
|
readOnly,
|
|
36745
|
-
placeholder: placeholder ?? "
|
|
36746
|
-
ariaLabel: "
|
|
37071
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.paragraph"),
|
|
37072
|
+
ariaLabel: t("richBlockEditor.aria.paragraphBlock"),
|
|
36747
37073
|
className: "leading-7",
|
|
36748
37074
|
onValueChange: setContent
|
|
36749
37075
|
}
|
|
@@ -36766,7 +37092,7 @@ function BlockRow({
|
|
|
36766
37092
|
{
|
|
36767
37093
|
type: "button",
|
|
36768
37094
|
variant: "ghost",
|
|
36769
|
-
"aria-label": "
|
|
37095
|
+
"aria-label": t("richBlockEditor.insertParagraphBelow"),
|
|
36770
37096
|
className: cn(
|
|
36771
37097
|
"inline-flex h-6 w-6 items-center justify-center rounded-sm p-0 gap-0",
|
|
36772
37098
|
"text-muted-foreground hover:bg-muted hover:text-foreground",
|
|
@@ -36793,7 +37119,7 @@ function BlockRow({
|
|
|
36793
37119
|
}
|
|
36794
37120
|
);
|
|
36795
37121
|
}
|
|
36796
|
-
var TOOLBAR_ENTRIES,
|
|
37122
|
+
var TOOLBAR_ENTRIES, BLOCK_TYPE_LABEL_KEY, CHANGEABLE_TYPES, _idSeq, BLOCK_TYPES, RichBlockEditor;
|
|
36797
37123
|
var init_RichBlockEditor = __esm({
|
|
36798
37124
|
"components/core/molecules/RichBlockEditor.tsx"() {
|
|
36799
37125
|
"use client";
|
|
@@ -36806,29 +37132,30 @@ var init_RichBlockEditor = __esm({
|
|
|
36806
37132
|
init_Input();
|
|
36807
37133
|
init_Icon();
|
|
36808
37134
|
init_useEventBus();
|
|
37135
|
+
init_useTranslate();
|
|
36809
37136
|
TOOLBAR_ENTRIES = [
|
|
36810
|
-
{ type: "paragraph",
|
|
36811
|
-
{ type: "heading-1",
|
|
36812
|
-
{ type: "heading-2",
|
|
36813
|
-
{ type: "heading-3",
|
|
36814
|
-
{ type: "bullet-list",
|
|
36815
|
-
{ type: "numbered-list",
|
|
36816
|
-
{ type: "quote",
|
|
36817
|
-
{ type: "code",
|
|
36818
|
-
{ type: "divider",
|
|
36819
|
-
{ type: "image",
|
|
37137
|
+
{ type: "paragraph", labelKey: "richBlockEditor.toolbar.text", icon: LucideIcons2.Type },
|
|
37138
|
+
{ type: "heading-1", labelKey: "richBlockEditor.toolbar.h1", icon: LucideIcons2.Heading1 },
|
|
37139
|
+
{ type: "heading-2", labelKey: "richBlockEditor.toolbar.h2", icon: LucideIcons2.Heading2 },
|
|
37140
|
+
{ type: "heading-3", labelKey: "richBlockEditor.toolbar.h3", icon: LucideIcons2.Heading3 },
|
|
37141
|
+
{ type: "bullet-list", labelKey: "richBlockEditor.toolbar.bulletList", icon: LucideIcons2.List },
|
|
37142
|
+
{ type: "numbered-list", labelKey: "richBlockEditor.toolbar.numbered", icon: LucideIcons2.ListOrdered },
|
|
37143
|
+
{ type: "quote", labelKey: "richBlockEditor.toolbar.quote", icon: LucideIcons2.Quote },
|
|
37144
|
+
{ type: "code", labelKey: "richBlockEditor.toolbar.code", icon: LucideIcons2.Code },
|
|
37145
|
+
{ type: "divider", labelKey: "richBlockEditor.toolbar.divider", icon: LucideIcons2.Minus },
|
|
37146
|
+
{ type: "image", labelKey: "richBlockEditor.toolbar.image", icon: LucideIcons2.Image }
|
|
36820
37147
|
];
|
|
36821
|
-
|
|
36822
|
-
paragraph: "
|
|
36823
|
-
"heading-1": "
|
|
36824
|
-
"heading-2": "
|
|
36825
|
-
"heading-3": "
|
|
36826
|
-
"bullet-list": "
|
|
36827
|
-
"numbered-list": "
|
|
36828
|
-
quote: "
|
|
36829
|
-
code: "
|
|
36830
|
-
divider: "
|
|
36831
|
-
image: "
|
|
37148
|
+
BLOCK_TYPE_LABEL_KEY = {
|
|
37149
|
+
paragraph: "richBlockEditor.blockType.paragraph",
|
|
37150
|
+
"heading-1": "richBlockEditor.blockType.heading1",
|
|
37151
|
+
"heading-2": "richBlockEditor.blockType.heading2",
|
|
37152
|
+
"heading-3": "richBlockEditor.blockType.heading3",
|
|
37153
|
+
"bullet-list": "richBlockEditor.blockType.bulletList",
|
|
37154
|
+
"numbered-list": "richBlockEditor.blockType.numberedList",
|
|
37155
|
+
quote: "richBlockEditor.blockType.quote",
|
|
37156
|
+
code: "richBlockEditor.blockType.code",
|
|
37157
|
+
divider: "richBlockEditor.blockType.divider",
|
|
37158
|
+
image: "richBlockEditor.blockType.image"
|
|
36832
37159
|
};
|
|
36833
37160
|
CHANGEABLE_TYPES = [
|
|
36834
37161
|
"paragraph",
|
|
@@ -36862,6 +37189,7 @@ var init_RichBlockEditor = __esm({
|
|
|
36862
37189
|
showToolbar = true,
|
|
36863
37190
|
className
|
|
36864
37191
|
}) => {
|
|
37192
|
+
const { t } = useTranslate();
|
|
36865
37193
|
const [blocks, setBlocks] = React97.useState(
|
|
36866
37194
|
() => normalizeBlocks(initialBlocks)
|
|
36867
37195
|
);
|
|
@@ -36933,25 +37261,26 @@ var init_RichBlockEditor = __esm({
|
|
|
36933
37261
|
Box,
|
|
36934
37262
|
{
|
|
36935
37263
|
role: "toolbar",
|
|
36936
|
-
"aria-label": "
|
|
37264
|
+
"aria-label": t("richBlockEditor.editorToolbar"),
|
|
36937
37265
|
className: cn(
|
|
36938
37266
|
"flex flex-wrap items-center gap-1",
|
|
36939
37267
|
"border-b border-border bg-muted/30 px-2 py-2"
|
|
36940
37268
|
),
|
|
36941
37269
|
children: TOOLBAR_ENTRIES.map((entry) => {
|
|
36942
37270
|
const Icon3 = entry.icon;
|
|
37271
|
+
const entryLabel = t(entry.labelKey);
|
|
36943
37272
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
36944
37273
|
Button,
|
|
36945
37274
|
{
|
|
36946
37275
|
type: "button",
|
|
36947
37276
|
variant: "ghost",
|
|
36948
37277
|
size: "sm",
|
|
36949
|
-
"aria-label":
|
|
36950
|
-
title:
|
|
37278
|
+
"aria-label": t("richBlockEditor.insertEntry", { label: entryLabel }),
|
|
37279
|
+
title: entryLabel,
|
|
36951
37280
|
onClick: () => handleAppend(entry.type),
|
|
36952
37281
|
children: [
|
|
36953
37282
|
/* @__PURE__ */ jsxRuntime.jsx(Icon3, { size: 14 }),
|
|
36954
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { as: "span", variant: "caption", className: "ml-1 hidden text-xs sm:inline", children:
|
|
37283
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { as: "span", variant: "caption", className: "ml-1 hidden text-xs sm:inline", children: entryLabel })
|
|
36955
37284
|
]
|
|
36956
37285
|
},
|
|
36957
37286
|
entry.type
|
|
@@ -36994,6 +37323,7 @@ var init_ReplyTree = __esm({
|
|
|
36994
37323
|
"use client";
|
|
36995
37324
|
init_cn();
|
|
36996
37325
|
init_useEventBus();
|
|
37326
|
+
init_useTranslate();
|
|
36997
37327
|
init_atoms2();
|
|
36998
37328
|
init_VoteStack();
|
|
36999
37329
|
ReplyTreeNode = ({
|
|
@@ -37013,6 +37343,7 @@ var init_ReplyTree = __esm({
|
|
|
37013
37343
|
showActions
|
|
37014
37344
|
}) => {
|
|
37015
37345
|
const eventBus = useEventBus();
|
|
37346
|
+
const { t } = useTranslate();
|
|
37016
37347
|
const hasReplies = !!node.replies && node.replies.length > 0;
|
|
37017
37348
|
const isCollapsed = collapsedSet.has(node.id);
|
|
37018
37349
|
const atMaxDepth = depth >= maxDepth;
|
|
@@ -37059,7 +37390,7 @@ var init_ReplyTree = __esm({
|
|
|
37059
37390
|
variant: "ghost",
|
|
37060
37391
|
size: "sm",
|
|
37061
37392
|
onClick: handleToggle,
|
|
37062
|
-
"aria-label": isCollapsed ? "
|
|
37393
|
+
"aria-label": isCollapsed ? t("replyTree.expandReplies") : t("replyTree.collapseReplies"),
|
|
37063
37394
|
"aria-expanded": !isCollapsed,
|
|
37064
37395
|
leftIcon: isCollapsed ? "chevron-right" : "chevron-down",
|
|
37065
37396
|
className: cn(
|
|
@@ -37100,7 +37431,7 @@ var init_ReplyTree = __esm({
|
|
|
37100
37431
|
onVote: handleVote,
|
|
37101
37432
|
size: "sm",
|
|
37102
37433
|
variant: "horizontal",
|
|
37103
|
-
label:
|
|
37434
|
+
label: t("replyTree.voteOnReplyBy", { author: node.authorName })
|
|
37104
37435
|
}
|
|
37105
37436
|
),
|
|
37106
37437
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -37110,8 +37441,8 @@ var init_ReplyTree = __esm({
|
|
|
37110
37441
|
size: "sm",
|
|
37111
37442
|
leftIcon: "message-square",
|
|
37112
37443
|
onClick: handleReply,
|
|
37113
|
-
"aria-label":
|
|
37114
|
-
children: "
|
|
37444
|
+
"aria-label": t("replyTree.replyTo", { author: node.authorName }),
|
|
37445
|
+
children: t("replyTree.reply")
|
|
37115
37446
|
}
|
|
37116
37447
|
),
|
|
37117
37448
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -37121,8 +37452,8 @@ var init_ReplyTree = __esm({
|
|
|
37121
37452
|
size: "sm",
|
|
37122
37453
|
leftIcon: "flag",
|
|
37123
37454
|
onClick: handleFlag,
|
|
37124
|
-
"aria-label":
|
|
37125
|
-
children: "
|
|
37455
|
+
"aria-label": t("replyTree.flagReplyBy", { author: node.authorName }),
|
|
37456
|
+
children: t("replyTree.flag")
|
|
37126
37457
|
}
|
|
37127
37458
|
)
|
|
37128
37459
|
] }),
|
|
@@ -37133,9 +37464,9 @@ var init_ReplyTree = __esm({
|
|
|
37133
37464
|
inputType: "textarea",
|
|
37134
37465
|
rows: 2,
|
|
37135
37466
|
value: draft,
|
|
37136
|
-
placeholder:
|
|
37467
|
+
placeholder: t("replyTree.replyToPlaceholder", { author: node.authorName }),
|
|
37137
37468
|
onChange: (e) => setDraft(e.target.value),
|
|
37138
|
-
"aria-label":
|
|
37469
|
+
"aria-label": t("replyTree.replyTo", { author: node.authorName })
|
|
37139
37470
|
}
|
|
37140
37471
|
),
|
|
37141
37472
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex flex-row gap-2 items-center", children: [
|
|
@@ -37147,10 +37478,10 @@ var init_ReplyTree = __esm({
|
|
|
37147
37478
|
leftIcon: "send",
|
|
37148
37479
|
onClick: handleSubmitReply,
|
|
37149
37480
|
disabled: !draft.trim(),
|
|
37150
|
-
children: "
|
|
37481
|
+
children: t("replyTree.send")
|
|
37151
37482
|
}
|
|
37152
37483
|
),
|
|
37153
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", onClick: handleCancelReply, children: "
|
|
37484
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", onClick: handleCancelReply, children: t("common.cancel") })
|
|
37154
37485
|
] })
|
|
37155
37486
|
] }),
|
|
37156
37487
|
hasReplies && !isCollapsed && (atMaxDepth ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -37164,7 +37495,7 @@ var init_ReplyTree = __esm({
|
|
|
37164
37495
|
"self-start gap-1 px-0 h-auto",
|
|
37165
37496
|
"text-sm text-primary hover:underline hover:bg-transparent"
|
|
37166
37497
|
),
|
|
37167
|
-
children: "
|
|
37498
|
+
children: t("replyTree.continueThread")
|
|
37168
37499
|
}
|
|
37169
37500
|
) : /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex flex-col gap-2 mt-1", children: node.replies.map((child) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
37170
37501
|
ReplyTreeNode,
|
|
@@ -37203,6 +37534,7 @@ var init_ReplyTree = __esm({
|
|
|
37203
37534
|
showActions = true,
|
|
37204
37535
|
className
|
|
37205
37536
|
}) => {
|
|
37537
|
+
const { t } = useTranslate();
|
|
37206
37538
|
const nodeList = Array.isArray(nodes) ? nodes : nodes ? [nodes] : [];
|
|
37207
37539
|
const [collapsedSet, setCollapsedSet] = React97.useState(() => {
|
|
37208
37540
|
const acc = /* @__PURE__ */ new Set();
|
|
@@ -37221,7 +37553,7 @@ var init_ReplyTree = __esm({
|
|
|
37221
37553
|
});
|
|
37222
37554
|
}, []);
|
|
37223
37555
|
if (nodeList.length === 0) {
|
|
37224
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("text-sm text-muted-foreground", className), children: "
|
|
37556
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("text-sm text-muted-foreground", className), children: t("replyTree.noRepliesYet") });
|
|
37225
37557
|
}
|
|
37226
37558
|
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("flex flex-col gap-2 min-w-0", className), children: nodeList.map((node) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
37227
37559
|
ReplyTreeNode,
|
|
@@ -37299,6 +37631,7 @@ var init_VersionDiff = __esm({
|
|
|
37299
37631
|
"use client";
|
|
37300
37632
|
init_cn();
|
|
37301
37633
|
init_useEventBus();
|
|
37634
|
+
init_useTranslate();
|
|
37302
37635
|
init_atoms2();
|
|
37303
37636
|
init_Stack();
|
|
37304
37637
|
INLINE_STYLES = {
|
|
@@ -37321,6 +37654,7 @@ var init_VersionDiff = __esm({
|
|
|
37321
37654
|
language,
|
|
37322
37655
|
className
|
|
37323
37656
|
}) => {
|
|
37657
|
+
const { t } = useTranslate();
|
|
37324
37658
|
const eventBus = useEventBus();
|
|
37325
37659
|
const revisions = Array.isArray(revisionsProp) ? revisionsProp : [];
|
|
37326
37660
|
const fallbackBefore = revisions[0]?.id ?? "";
|
|
@@ -37402,24 +37736,24 @@ var init_VersionDiff = __esm({
|
|
|
37402
37736
|
children: [
|
|
37403
37737
|
/* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", align: "center", className: "flex-wrap", children: [
|
|
37404
37738
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "git-commit", size: "sm", className: "text-muted-foreground" }),
|
|
37405
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "whitespace-nowrap", children: "
|
|
37739
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "whitespace-nowrap", children: t("versionDiff.compare") }),
|
|
37406
37740
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "min-w-0 md:min-w-[160px]", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
37407
37741
|
Select,
|
|
37408
37742
|
{
|
|
37409
37743
|
options,
|
|
37410
37744
|
value: activeBeforeId,
|
|
37411
37745
|
onChange: handleBeforeChange,
|
|
37412
|
-
"aria-label": "
|
|
37746
|
+
"aria-label": t("versionDiff.beforeRevision")
|
|
37413
37747
|
}
|
|
37414
37748
|
) }),
|
|
37415
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "secondary", children: "to" }),
|
|
37749
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "secondary", children: t("versionDiff.to") }),
|
|
37416
37750
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "min-w-0 md:min-w-[160px]", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
37417
37751
|
Select,
|
|
37418
37752
|
{
|
|
37419
37753
|
options,
|
|
37420
37754
|
value: activeAfterId,
|
|
37421
37755
|
onChange: handleAfterChange,
|
|
37422
|
-
"aria-label": "
|
|
37756
|
+
"aria-label": t("versionDiff.afterRevision")
|
|
37423
37757
|
}
|
|
37424
37758
|
) }),
|
|
37425
37759
|
language && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "default", children: language }),
|
|
@@ -37440,7 +37774,7 @@ var init_VersionDiff = __esm({
|
|
|
37440
37774
|
size: "sm",
|
|
37441
37775
|
icon: activeView === "side-by-side" ? "align-left" : "columns",
|
|
37442
37776
|
onClick: handleViewToggle,
|
|
37443
|
-
"aria-label": activeView === "side-by-side" ? "
|
|
37777
|
+
"aria-label": activeView === "side-by-side" ? t("versionDiff.switchToInline") : t("versionDiff.switchToSideBySide")
|
|
37444
37778
|
}
|
|
37445
37779
|
),
|
|
37446
37780
|
(onRevert || revertEvent) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -37450,7 +37784,7 @@ var init_VersionDiff = __esm({
|
|
|
37450
37784
|
size: "sm",
|
|
37451
37785
|
icon: "rotate-ccw",
|
|
37452
37786
|
onClick: handleRevert,
|
|
37453
|
-
children: "
|
|
37787
|
+
children: t("versionDiff.revert")
|
|
37454
37788
|
}
|
|
37455
37789
|
)
|
|
37456
37790
|
] })
|
|
@@ -37467,12 +37801,12 @@ var init_VersionDiff = __esm({
|
|
|
37467
37801
|
children: [
|
|
37468
37802
|
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "caption", color: "secondary", className: "truncate", children: [
|
|
37469
37803
|
beforeRev?.label,
|
|
37470
|
-
beforeRev?.author ?
|
|
37804
|
+
beforeRev?.author ? t("versionDiff.byAuthor", { author: beforeRev.author }) : "",
|
|
37471
37805
|
beforeRev?.timestamp ? ` (${beforeRev.timestamp})` : ""
|
|
37472
37806
|
] }),
|
|
37473
37807
|
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "caption", color: "secondary", className: "truncate", children: [
|
|
37474
37808
|
afterRev?.label,
|
|
37475
|
-
afterRev?.author ?
|
|
37809
|
+
afterRev?.author ? t("versionDiff.byAuthor", { author: afterRev.author }) : "",
|
|
37476
37810
|
afterRev?.timestamp ? ` (${afterRev.timestamp})` : ""
|
|
37477
37811
|
] })
|
|
37478
37812
|
]
|
|
@@ -37865,10 +38199,12 @@ var init_DocPagination = __esm({
|
|
|
37865
38199
|
}
|
|
37866
38200
|
});
|
|
37867
38201
|
function DocSearch({
|
|
37868
|
-
placeholder
|
|
38202
|
+
placeholder,
|
|
37869
38203
|
onSearch,
|
|
37870
38204
|
className
|
|
37871
38205
|
}) {
|
|
38206
|
+
const { t } = useTranslate();
|
|
38207
|
+
const resolvedPlaceholder = placeholder ?? t("docSearch.placeholder");
|
|
37872
38208
|
const [query, setQuery] = React97.useState("");
|
|
37873
38209
|
const [results, setResults] = React97.useState([]);
|
|
37874
38210
|
const [isOpen, setIsOpen] = React97.useState(false);
|
|
@@ -37975,7 +38311,7 @@ function DocSearch({
|
|
|
37975
38311
|
Input,
|
|
37976
38312
|
{
|
|
37977
38313
|
inputType: "search",
|
|
37978
|
-
placeholder,
|
|
38314
|
+
placeholder: resolvedPlaceholder,
|
|
37979
38315
|
value: query,
|
|
37980
38316
|
onChange: handleChange,
|
|
37981
38317
|
onFocus: handleFocus,
|
|
@@ -38040,6 +38376,7 @@ var init_DocSearch = __esm({
|
|
|
38040
38376
|
init_Typography();
|
|
38041
38377
|
init_Icon();
|
|
38042
38378
|
init_Input();
|
|
38379
|
+
init_useTranslate();
|
|
38043
38380
|
}
|
|
38044
38381
|
});
|
|
38045
38382
|
var DocSidebarCategory, DocSidebar;
|
|
@@ -39635,8 +39972,8 @@ var init_SignaturePad = __esm({
|
|
|
39635
39972
|
init_useEventBus();
|
|
39636
39973
|
init_useTranslate();
|
|
39637
39974
|
SignaturePad = ({
|
|
39638
|
-
label
|
|
39639
|
-
helperText
|
|
39975
|
+
label,
|
|
39976
|
+
helperText,
|
|
39640
39977
|
strokeColor,
|
|
39641
39978
|
strokeWidth = 2,
|
|
39642
39979
|
height = 200,
|
|
@@ -39652,6 +39989,8 @@ var init_SignaturePad = __esm({
|
|
|
39652
39989
|
}) => {
|
|
39653
39990
|
const eventBus = useEventBus();
|
|
39654
39991
|
const { t } = useTranslate();
|
|
39992
|
+
const resolvedLabel = label ?? t("signaturePad.label");
|
|
39993
|
+
const resolvedHelperText = helperText ?? t("signaturePad.helperText");
|
|
39655
39994
|
const canvasRef = React97.useRef(null);
|
|
39656
39995
|
const [isDrawing, setIsDrawing] = React97.useState(false);
|
|
39657
39996
|
const [hasSignature, setHasSignature] = React97.useState(!!value);
|
|
@@ -39754,7 +40093,7 @@ var init_SignaturePad = __esm({
|
|
|
39754
40093
|
);
|
|
39755
40094
|
}
|
|
39756
40095
|
return /* @__PURE__ */ jsxRuntime.jsx(Card, { className: cn("p-4", className), children: /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "sm", children: [
|
|
39757
|
-
|
|
40096
|
+
resolvedLabel && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "label", weight: "medium", children: resolvedLabel }),
|
|
39758
40097
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
39759
40098
|
Box,
|
|
39760
40099
|
{
|
|
@@ -39783,7 +40122,7 @@ var init_SignaturePad = __esm({
|
|
|
39783
40122
|
)
|
|
39784
40123
|
}
|
|
39785
40124
|
),
|
|
39786
|
-
|
|
40125
|
+
resolvedHelperText && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "secondary", children: resolvedHelperText }),
|
|
39787
40126
|
!readOnly && /* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", justify: "end", children: [
|
|
39788
40127
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
39789
40128
|
Button,
|
|
@@ -39793,7 +40132,7 @@ var init_SignaturePad = __esm({
|
|
|
39793
40132
|
icon: LucideIcons2.Eraser,
|
|
39794
40133
|
onClick: clearSignature,
|
|
39795
40134
|
disabled: !hasSignature,
|
|
39796
|
-
children: "
|
|
40135
|
+
children: t("signaturePad.clear")
|
|
39797
40136
|
}
|
|
39798
40137
|
),
|
|
39799
40138
|
signEvent && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -39804,7 +40143,7 @@ var init_SignaturePad = __esm({
|
|
|
39804
40143
|
icon: LucideIcons2.Check,
|
|
39805
40144
|
onClick: confirmSignature,
|
|
39806
40145
|
disabled: !hasSignature,
|
|
39807
|
-
children: "
|
|
40146
|
+
children: t("signaturePad.confirm")
|
|
39808
40147
|
}
|
|
39809
40148
|
)
|
|
39810
40149
|
] })
|
|
@@ -44249,6 +44588,7 @@ function MasterDetail({
|
|
|
44249
44588
|
className,
|
|
44250
44589
|
...rest
|
|
44251
44590
|
}) {
|
|
44591
|
+
const { t } = useTranslate();
|
|
44252
44592
|
const loading = externalLoading ?? false;
|
|
44253
44593
|
const isLoading = externalIsLoading ?? false;
|
|
44254
44594
|
const error = externalError ?? null;
|
|
@@ -44261,8 +44601,8 @@ function MasterDetail({
|
|
|
44261
44601
|
isLoading: loading || isLoading,
|
|
44262
44602
|
error,
|
|
44263
44603
|
className,
|
|
44264
|
-
emptyTitle: "
|
|
44265
|
-
emptyDescription: "
|
|
44604
|
+
emptyTitle: t("table.empty.title"),
|
|
44605
|
+
emptyDescription: t("empty.createFirst"),
|
|
44266
44606
|
...rest
|
|
44267
44607
|
}
|
|
44268
44608
|
);
|
|
@@ -44271,6 +44611,7 @@ var init_MasterDetail = __esm({
|
|
|
44271
44611
|
"components/core/organisms/MasterDetail.tsx"() {
|
|
44272
44612
|
"use client";
|
|
44273
44613
|
init_DataTable();
|
|
44614
|
+
init_useTranslate();
|
|
44274
44615
|
MasterDetail.displayName = "MasterDetail";
|
|
44275
44616
|
}
|
|
44276
44617
|
});
|
|
@@ -44279,14 +44620,18 @@ var init_MasterDetailLayout = __esm({
|
|
|
44279
44620
|
"components/core/organisms/layout/MasterDetailLayout.tsx"() {
|
|
44280
44621
|
init_cn();
|
|
44281
44622
|
init_Typography();
|
|
44282
|
-
|
|
44283
|
-
|
|
44284
|
-
{
|
|
44285
|
-
|
|
44286
|
-
|
|
44287
|
-
|
|
44288
|
-
|
|
44289
|
-
|
|
44623
|
+
init_useTranslate();
|
|
44624
|
+
DefaultEmptyDetail = () => {
|
|
44625
|
+
const { t } = useTranslate();
|
|
44626
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center h-full border-2 border-dashed border-border", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
44627
|
+
Typography,
|
|
44628
|
+
{
|
|
44629
|
+
variant: "body2",
|
|
44630
|
+
className: "text-muted-foreground",
|
|
44631
|
+
children: t("masterDetail.selectItem")
|
|
44632
|
+
}
|
|
44633
|
+
) });
|
|
44634
|
+
};
|
|
44290
44635
|
MasterDetailLayout = ({
|
|
44291
44636
|
master,
|
|
44292
44637
|
detail,
|
|
@@ -44413,7 +44758,7 @@ var init_MediaGallery = __esm({
|
|
|
44413
44758
|
{
|
|
44414
44759
|
icon: LucideIcons2.Image,
|
|
44415
44760
|
title: t("display.noMedia"),
|
|
44416
|
-
description: "
|
|
44761
|
+
description: t("mediaGallery.noMediaDescription"),
|
|
44417
44762
|
className
|
|
44418
44763
|
}
|
|
44419
44764
|
);
|
|
@@ -44430,7 +44775,7 @@ var init_MediaGallery = __esm({
|
|
|
44430
44775
|
size: "sm",
|
|
44431
44776
|
icon: LucideIcons2.Upload,
|
|
44432
44777
|
action: "MEDIA_UPLOAD",
|
|
44433
|
-
children: "
|
|
44778
|
+
children: t("mediaGallery.upload")
|
|
44434
44779
|
}
|
|
44435
44780
|
),
|
|
44436
44781
|
actions?.map((action, idx) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -44444,10 +44789,7 @@ var init_MediaGallery = __esm({
|
|
|
44444
44789
|
))
|
|
44445
44790
|
] })
|
|
44446
44791
|
] }),
|
|
44447
|
-
selectable && selectedItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(HStack, { gap: "sm", align: "center", children: /* @__PURE__ */ jsxRuntime.
|
|
44448
|
-
selectedItems.length,
|
|
44449
|
-
" selected"
|
|
44450
|
-
] }) }),
|
|
44792
|
+
selectable && selectedItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(HStack, { gap: "sm", align: "center", children: /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "info", children: t("table.bulk.selected", { count: selectedItems.length }) }) }),
|
|
44451
44793
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
44452
44794
|
Box,
|
|
44453
44795
|
{
|
|
@@ -45321,7 +45663,7 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
45321
45663
|
EmptyState,
|
|
45322
45664
|
{
|
|
45323
45665
|
title: t("debug.noActiveTraits"),
|
|
45324
|
-
description: "
|
|
45666
|
+
description: t("debug.traitsMountHint"),
|
|
45325
45667
|
className: "py-8"
|
|
45326
45668
|
}
|
|
45327
45669
|
);
|
|
@@ -45331,14 +45673,11 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
45331
45673
|
header: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 w-full", children: [
|
|
45332
45674
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", weight: "semibold", className: "text-purple-600 dark:text-purple-400", children: trait.name }),
|
|
45333
45675
|
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "success", size: "sm", children: trait.currentState }),
|
|
45334
|
-
/* @__PURE__ */ jsxRuntime.
|
|
45335
|
-
trait.transitionCount,
|
|
45336
|
-
" transitions"
|
|
45337
|
-
] })
|
|
45676
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-500 ml-auto", children: t("debug.transitionsCount", { count: trait.transitionCount }) })
|
|
45338
45677
|
] }),
|
|
45339
45678
|
content: /* @__PURE__ */ jsxRuntime.jsxs(Stack, { gap: "sm", children: [
|
|
45340
45679
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
45341
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: "
|
|
45680
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.states") }),
|
|
45342
45681
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1", children: trait.states.map((state) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
45343
45682
|
Badge,
|
|
45344
45683
|
{
|
|
@@ -45350,7 +45689,7 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
45350
45689
|
)) })
|
|
45351
45690
|
] }),
|
|
45352
45691
|
trait.transitions.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
45353
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: "
|
|
45692
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.transitions") }),
|
|
45354
45693
|
/* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: trait.transitions.map((t2, i) => /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "font-mono", children: [
|
|
45355
45694
|
t2.from,
|
|
45356
45695
|
" \u2192 ",
|
|
@@ -45369,7 +45708,7 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
45369
45708
|
] }, i)) })
|
|
45370
45709
|
] }),
|
|
45371
45710
|
trait.guards.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
45372
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: "
|
|
45711
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.guards") }),
|
|
45373
45712
|
/* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: trait.guards.map((g, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
45374
45713
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", children: g.name }),
|
|
45375
45714
|
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: g.lastResult === true ? "success" : g.lastResult === false ? "danger" : "default", size: "sm", children: g.lastResult === void 0 ? "?" : g.lastResult ? "\u2713" : "\u2717" })
|
|
@@ -45475,7 +45814,7 @@ function EntitiesTab({ snapshot }) {
|
|
|
45475
45814
|
EmptyState,
|
|
45476
45815
|
{
|
|
45477
45816
|
title: t("debug.noEntityData"),
|
|
45478
|
-
description: "
|
|
45817
|
+
description: t("debug.debugModeHint"),
|
|
45479
45818
|
className: "py-8"
|
|
45480
45819
|
}
|
|
45481
45820
|
);
|
|
@@ -45488,7 +45827,7 @@ function EntitiesTab({ snapshot }) {
|
|
|
45488
45827
|
EmptyState,
|
|
45489
45828
|
{
|
|
45490
45829
|
title: t("debug.noEntities"),
|
|
45491
|
-
description: "
|
|
45830
|
+
description: t("debug.entitiesSpawnHint"),
|
|
45492
45831
|
className: "py-8"
|
|
45493
45832
|
}
|
|
45494
45833
|
);
|
|
@@ -45496,7 +45835,7 @@ function EntitiesTab({ snapshot }) {
|
|
|
45496
45835
|
const singletonItems = singletonEntries.map(([name, data]) => ({
|
|
45497
45836
|
id: `singleton-${name}`,
|
|
45498
45837
|
header: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
45499
|
-
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "primary", size: "sm", children: "
|
|
45838
|
+
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "primary", size: "sm", children: t("debug.singleton") }),
|
|
45500
45839
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", weight: "semibold", className: "text-sky-600 dark:text-sky-400", children: name })
|
|
45501
45840
|
] }),
|
|
45502
45841
|
content: /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "text-xs text-gray-600 dark:text-gray-400 bg-gray-50 dark:bg-gray-800 p-2 rounded overflow-auto max-h-40", children: JSON.stringify(data, null, 2) })
|
|
@@ -45514,31 +45853,19 @@ function EntitiesTab({ snapshot }) {
|
|
|
45514
45853
|
}));
|
|
45515
45854
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--entities", children: [
|
|
45516
45855
|
singletonItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4", children: [
|
|
45517
|
-
/* @__PURE__ */ jsxRuntime.
|
|
45518
|
-
"Singletons (",
|
|
45519
|
-
singletonItems.length,
|
|
45520
|
-
")"
|
|
45521
|
-
] }),
|
|
45856
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.singletonsCount", { count: singletonItems.length }) }),
|
|
45522
45857
|
/* @__PURE__ */ jsxRuntime.jsx(Accordion, { items: singletonItems, multiple: true })
|
|
45523
45858
|
] }),
|
|
45524
45859
|
runtimeItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4", children: [
|
|
45525
|
-
/* @__PURE__ */ jsxRuntime.
|
|
45526
|
-
"Runtime (",
|
|
45527
|
-
runtimeEntities.length,
|
|
45528
|
-
")"
|
|
45529
|
-
] }),
|
|
45860
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.runtimeCount", { count: runtimeEntities.length }) }),
|
|
45530
45861
|
/* @__PURE__ */ jsxRuntime.jsx(Accordion, { items: runtimeItems, multiple: true }),
|
|
45531
|
-
runtimeEntities.length > 20 && /* @__PURE__ */ jsxRuntime.
|
|
45532
|
-
"+",
|
|
45533
|
-
runtimeEntities.length - 20,
|
|
45534
|
-
" more entities"
|
|
45535
|
-
] })
|
|
45862
|
+
runtimeEntities.length > 20 && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-400 text-center mt-2", children: t("debug.moreEntities", { count: runtimeEntities.length - 20 }) })
|
|
45536
45863
|
] }),
|
|
45537
45864
|
persistentEntries.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
45538
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: "
|
|
45865
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.persistent") }),
|
|
45539
45866
|
/* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: persistentEntries.map(([type, info]) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between py-1", children: [
|
|
45540
45867
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", children: type }),
|
|
45541
|
-
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: info.loaded ? "success" : "default", size: "sm", children: info.loaded ?
|
|
45868
|
+
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: info.loaded ? "success" : "default", size: "sm", children: info.loaded ? t("debug.loadedCount", { count: info.count }) : t("debug.notLoaded") })
|
|
45542
45869
|
] }, type)) })
|
|
45543
45870
|
] })
|
|
45544
45871
|
] });
|
|
@@ -45582,7 +45909,7 @@ function EventFlowTab({ events: events2 }) {
|
|
|
45582
45909
|
EmptyState,
|
|
45583
45910
|
{
|
|
45584
45911
|
title: t("debug.noEventsYet"),
|
|
45585
|
-
description: "
|
|
45912
|
+
description: t("debug.eventsExecuteHint"),
|
|
45586
45913
|
className: "py-8"
|
|
45587
45914
|
}
|
|
45588
45915
|
);
|
|
@@ -45593,17 +45920,13 @@ function EventFlowTab({ events: events2 }) {
|
|
|
45593
45920
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--events", children: [
|
|
45594
45921
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 mb-3 flex-wrap", children: [
|
|
45595
45922
|
/* @__PURE__ */ jsxRuntime.jsxs(ButtonGroup, { children: [
|
|
45596
|
-
/* @__PURE__ */ jsxRuntime.
|
|
45923
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
45597
45924
|
Button,
|
|
45598
45925
|
{
|
|
45599
45926
|
size: "sm",
|
|
45600
45927
|
variant: filter === "all" ? "primary" : "secondary",
|
|
45601
45928
|
onClick: () => setFilter("all"),
|
|
45602
|
-
children:
|
|
45603
|
-
"All (",
|
|
45604
|
-
events2.length,
|
|
45605
|
-
")"
|
|
45606
|
-
]
|
|
45929
|
+
children: t("debug.allCount", { count: events2.length })
|
|
45607
45930
|
}
|
|
45608
45931
|
),
|
|
45609
45932
|
eventTypes.map((type) => {
|
|
@@ -45633,7 +45956,7 @@ function EventFlowTab({ events: events2 }) {
|
|
|
45633
45956
|
onChange: (e) => setAutoScroll(e.target.checked)
|
|
45634
45957
|
}
|
|
45635
45958
|
),
|
|
45636
|
-
"
|
|
45959
|
+
t("debug.autoScroll")
|
|
45637
45960
|
] })
|
|
45638
45961
|
] }),
|
|
45639
45962
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -45691,7 +46014,7 @@ function GuardsPanel({ guards }) {
|
|
|
45691
46014
|
EmptyState,
|
|
45692
46015
|
{
|
|
45693
46016
|
title: t("debug.noGuardEvaluations"),
|
|
45694
|
-
description: "
|
|
46017
|
+
description: t("debug.guardEvaluationsHint"),
|
|
45695
46018
|
className: "py-8"
|
|
45696
46019
|
}
|
|
45697
46020
|
);
|
|
@@ -45722,15 +46045,15 @@ function GuardsPanel({ guards }) {
|
|
|
45722
46045
|
] }),
|
|
45723
46046
|
content: /* @__PURE__ */ jsxRuntime.jsxs(Stack, { gap: "sm", children: [
|
|
45724
46047
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
45725
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: "
|
|
46048
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: t("debug.expression") }),
|
|
45726
46049
|
/* @__PURE__ */ jsxRuntime.jsx("code", { className: "block mt-1 text-xs text-amber-600 dark:text-amber-400 bg-amber-50 dark:bg-amber-900/20 px-2 py-1 rounded", children: guard.expression })
|
|
45727
46050
|
] }),
|
|
45728
46051
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
45729
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: "
|
|
46052
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: t("debug.inputs") }),
|
|
45730
46053
|
/* @__PURE__ */ jsxRuntime.jsx("pre", { className: "mt-1 text-xs text-gray-600 dark:text-gray-400 bg-gray-50 dark:bg-gray-800 p-2 rounded overflow-auto max-h-24", children: JSON.stringify(guard.inputs, null, 2) })
|
|
45731
46054
|
] }),
|
|
45732
46055
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
45733
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: "
|
|
46056
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: t("debug.trait") }),
|
|
45734
46057
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", children: guard.context.traitName })
|
|
45735
46058
|
] })
|
|
45736
46059
|
] })
|
|
@@ -45748,9 +46071,9 @@ function GuardsPanel({ guards }) {
|
|
|
45748
46071
|
] })
|
|
45749
46072
|
] }),
|
|
45750
46073
|
/* @__PURE__ */ jsxRuntime.jsxs(ButtonGroup, { children: [
|
|
45751
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", variant: filter === "all" ? "primary" : "secondary", onClick: () => setFilter("all"), children: "
|
|
45752
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", variant: filter === "passed" ? "primary" : "secondary", onClick: () => setFilter("passed"), children: "
|
|
45753
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", variant: filter === "failed" ? "primary" : "secondary", onClick: () => setFilter("failed"), children: "
|
|
46074
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", variant: filter === "all" ? "primary" : "secondary", onClick: () => setFilter("all"), children: t("debug.filterAll") }),
|
|
46075
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", variant: filter === "passed" ? "primary" : "secondary", onClick: () => setFilter("passed"), children: t("debug.filterPassed") }),
|
|
46076
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", variant: filter === "failed" ? "primary" : "secondary", onClick: () => setFilter("failed"), children: t("debug.filterFailed") })
|
|
45754
46077
|
] })
|
|
45755
46078
|
] }),
|
|
45756
46079
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-80 overflow-y-auto", children: /* @__PURE__ */ jsxRuntime.jsx(Accordion, { items: accordionItems }) })
|
|
@@ -45876,7 +46199,7 @@ function TransitionTimeline({ transitions }) {
|
|
|
45876
46199
|
EmptyState,
|
|
45877
46200
|
{
|
|
45878
46201
|
title: t("debug.noTransitionsRecorded"),
|
|
45879
|
-
description: "
|
|
46202
|
+
description: t("debug.transitionsProcessHint"),
|
|
45880
46203
|
className: "py-8"
|
|
45881
46204
|
}
|
|
45882
46205
|
);
|
|
@@ -45893,10 +46216,7 @@ function TransitionTimeline({ transitions }) {
|
|
|
45893
46216
|
const sorted = [...transitions].reverse();
|
|
45894
46217
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--timeline", children: [
|
|
45895
46218
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between mb-2", children: [
|
|
45896
|
-
/* @__PURE__ */ jsxRuntime.
|
|
45897
|
-
transitions.length,
|
|
45898
|
-
" transitions recorded"
|
|
45899
|
-
] }),
|
|
46219
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-500", children: t("debug.transitionsRecorded", { count: transitions.length }) }),
|
|
45900
46220
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-1 text-xs text-gray-500 cursor-pointer", children: [
|
|
45901
46221
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
45902
46222
|
Checkbox,
|
|
@@ -45905,7 +46225,7 @@ function TransitionTimeline({ transitions }) {
|
|
|
45905
46225
|
onChange: (e) => setAutoScroll(e.target.checked)
|
|
45906
46226
|
}
|
|
45907
46227
|
),
|
|
45908
|
-
"
|
|
46228
|
+
t("debug.autoScroll")
|
|
45909
46229
|
] })
|
|
45910
46230
|
] }),
|
|
45911
46231
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -45948,15 +46268,13 @@ function TransitionTimeline({ transitions }) {
|
|
|
45948
46268
|
variant: trace.guardResult ? "success" : "danger",
|
|
45949
46269
|
size: "sm",
|
|
45950
46270
|
children: [
|
|
45951
|
-
"
|
|
46271
|
+
t("debug.guardLabel"),
|
|
46272
|
+
" ",
|
|
45952
46273
|
trace.guardResult ? "\u2713" : "\u2717"
|
|
45953
46274
|
]
|
|
45954
46275
|
}
|
|
45955
46276
|
),
|
|
45956
|
-
/* @__PURE__ */ jsxRuntime.
|
|
45957
|
-
trace.effects.length,
|
|
45958
|
-
" effects"
|
|
45959
|
-
] })
|
|
46277
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-400 ml-auto", children: t("debug.effectsCount", { count: trace.effects.length }) })
|
|
45960
46278
|
] }),
|
|
45961
46279
|
isExpanded && trace.effects.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ml-2 mt-1 mb-2 pl-2 border-l border-gray-200 dark:border-gray-700 space-y-1", children: trace.effects.map((effect, eIdx) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1", children: [
|
|
45962
46280
|
/* @__PURE__ */ jsxRuntime.jsx(EffectBadge, { effect }),
|
|
@@ -46005,13 +46323,13 @@ function ServerBridgeTab({ bridge }) {
|
|
|
46005
46323
|
EmptyState,
|
|
46006
46324
|
{
|
|
46007
46325
|
title: t("debug.noBridgeData"),
|
|
46008
|
-
description: "
|
|
46326
|
+
description: t("debug.bridgeInitHint"),
|
|
46009
46327
|
className: "py-8"
|
|
46010
46328
|
}
|
|
46011
46329
|
);
|
|
46012
46330
|
}
|
|
46013
46331
|
const formatTime4 = (ts) => {
|
|
46014
|
-
if (ts === 0) return "
|
|
46332
|
+
if (ts === 0) return t("debug.never");
|
|
46015
46333
|
const d = new Date(ts);
|
|
46016
46334
|
return d.toLocaleTimeString("en-US", {
|
|
46017
46335
|
hour12: false,
|
|
@@ -46024,14 +46342,14 @@ function ServerBridgeTab({ bridge }) {
|
|
|
46024
46342
|
/* @__PURE__ */ jsxRuntime.jsxs(Card, { className: "p-3", children: [
|
|
46025
46343
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 mb-3", children: [
|
|
46026
46344
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: `w-3 h-3 rounded-full ${bridge.connected ? "bg-green-500 animate-pulse" : "bg-red-500"}` }),
|
|
46027
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h6", children: bridge.connected ? "
|
|
46345
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h6", children: bridge.connected ? t("debug.connected") : t("debug.disconnected") })
|
|
46028
46346
|
] }),
|
|
46029
46347
|
/* @__PURE__ */ jsxRuntime.jsxs(Stack, { gap: "xs", children: [
|
|
46030
46348
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
46031
46349
|
StatRow,
|
|
46032
46350
|
{
|
|
46033
46351
|
label: t("debug.status"),
|
|
46034
|
-
value: bridge.connected ? "
|
|
46352
|
+
value: bridge.connected ? t("debug.connected") : t("debug.disconnected"),
|
|
46035
46353
|
variant: bridge.connected ? "success" : "danger"
|
|
46036
46354
|
}
|
|
46037
46355
|
),
|
|
@@ -46059,13 +46377,10 @@ function ServerBridgeTab({ bridge }) {
|
|
|
46059
46377
|
] })
|
|
46060
46378
|
] }),
|
|
46061
46379
|
bridge.lastError && /* @__PURE__ */ jsxRuntime.jsxs(Card, { className: "p-3 border-red-200 dark:border-red-800 bg-red-50 dark:bg-red-950", children: [
|
|
46062
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "semibold", className: "text-red-600 dark:text-red-400 mb-1", children: "
|
|
46380
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "semibold", className: "text-red-600 dark:text-red-400 mb-1", children: t("debug.lastError") }),
|
|
46063
46381
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-red-500 font-mono break-all", children: bridge.lastError })
|
|
46064
46382
|
] }),
|
|
46065
|
-
bridge.connected && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-center py-2", children: /* @__PURE__ */ jsxRuntime.
|
|
46066
|
-
bridge.eventsForwarded + bridge.eventsReceived,
|
|
46067
|
-
" total events processed"
|
|
46068
|
-
] }) })
|
|
46383
|
+
bridge.connected && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-center py-2", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-400", children: t("debug.totalEventsProcessed", { count: bridge.eventsForwarded + bridge.eventsReceived }) }) })
|
|
46069
46384
|
] }) });
|
|
46070
46385
|
}
|
|
46071
46386
|
var init_ServerBridgeTab = __esm({
|
|
@@ -46175,7 +46490,7 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
46175
46490
|
EmptyState,
|
|
46176
46491
|
{
|
|
46177
46492
|
title: t("debug.noActiveTraits"),
|
|
46178
|
-
description: "
|
|
46493
|
+
description: t("debug.traitsInitHint"),
|
|
46179
46494
|
className: "py-8"
|
|
46180
46495
|
}
|
|
46181
46496
|
);
|
|
@@ -46192,7 +46507,7 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
46192
46507
|
};
|
|
46193
46508
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--dispatch", children: [
|
|
46194
46509
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3", children: [
|
|
46195
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
46510
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.activeStates") }),
|
|
46196
46511
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1", children: traits2.map((trait) => /* @__PURE__ */ jsxRuntime.jsxs(Badge, { variant: "success", size: "sm", children: [
|
|
46197
46512
|
trait.name,
|
|
46198
46513
|
": ",
|
|
@@ -46200,8 +46515,8 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
46200
46515
|
] }, trait.id)) })
|
|
46201
46516
|
] }),
|
|
46202
46517
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3", children: [
|
|
46203
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
46204
|
-
availableEvents.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-400 italic", children: "
|
|
46518
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.availableEvents") }),
|
|
46519
|
+
availableEvents.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-400 italic", children: t("debug.noTransitionsFromState") }) : /* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: availableEvents.map(({ event, transitions }) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
46205
46520
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
46206
46521
|
Button,
|
|
46207
46522
|
{
|
|
@@ -46213,15 +46528,15 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
46213
46528
|
}
|
|
46214
46529
|
),
|
|
46215
46530
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-500", children: transitions.map((t2) => `${t2.from} -> ${t2.to}`).join(", ") }),
|
|
46216
|
-
transitions.some((
|
|
46531
|
+
transitions.some((tr) => tr.guard) && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "warning", size: "sm", children: t("debug.guarded") })
|
|
46217
46532
|
] }, event)) })
|
|
46218
46533
|
] }),
|
|
46219
46534
|
unavailableEvents.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3", children: [
|
|
46220
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
46535
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.otherEvents") }),
|
|
46221
46536
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1", children: unavailableEvents.map((event) => /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "default", size: "sm", className: "opacity-50", children: event }, event)) })
|
|
46222
46537
|
] }),
|
|
46223
46538
|
log16.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
46224
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
46539
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.recentTransitions") }),
|
|
46225
46540
|
/* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: log16.map((entry, i) => /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "font-mono text-xs", children: [
|
|
46226
46541
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-400", children: entry.traitName }),
|
|
46227
46542
|
" ",
|
|
@@ -46252,21 +46567,20 @@ var init_RuntimeDebugger = __esm({
|
|
|
46252
46567
|
}
|
|
46253
46568
|
});
|
|
46254
46569
|
function ServerResponseRow({ sr }) {
|
|
46570
|
+
const { t } = useTranslate();
|
|
46255
46571
|
const entityEntries = Object.entries(sr.dataEntities);
|
|
46256
46572
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ml-4 pl-2 border-l border-purple-500/30 py-0.5 text-xs font-mono", children: [
|
|
46257
46573
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
46258
46574
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: sr.success ? "text-green-600 dark:text-green-400" : "text-red-600 dark:text-red-400", children: [
|
|
46259
46575
|
sr.success ? "\u2713" : "\u2717",
|
|
46260
|
-
"
|
|
46576
|
+
" ",
|
|
46577
|
+
t("debug.server")
|
|
46261
46578
|
] }),
|
|
46262
46579
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-600 dark:text-purple-300", children: sr.orbitalName }),
|
|
46263
|
-
sr.clientEffects > 0 && /* @__PURE__ */ jsxRuntime.
|
|
46264
|
-
sr.clientEffects,
|
|
46265
|
-
" clientEffect",
|
|
46266
|
-
sr.clientEffects !== 1 ? "s" : ""
|
|
46267
|
-
] }),
|
|
46580
|
+
sr.clientEffects > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "px-1 rounded bg-purple-500/15 text-purple-600 dark:text-purple-300", children: t("debug.clientEffectsCount", { count: sr.clientEffects }) }),
|
|
46268
46581
|
sr.emittedEvents.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "px-1 rounded bg-blue-500/15 text-blue-300", children: [
|
|
46269
|
-
"
|
|
46582
|
+
t("debug.emitLabel"),
|
|
46583
|
+
" ",
|
|
46270
46584
|
sr.emittedEvents.join(", ")
|
|
46271
46585
|
] }),
|
|
46272
46586
|
sr.error && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "px-1 rounded bg-red-500/15 text-red-600 dark:text-red-400 truncate max-w-[300px]", children: sr.error })
|
|
@@ -46274,13 +46588,12 @@ function ServerResponseRow({ sr }) {
|
|
|
46274
46588
|
entityEntries.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1 mt-0.5", children: entityEntries.map(([name, count]) => /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "px-1 rounded bg-[var(--color-card)] text-foreground", children: [
|
|
46275
46589
|
name,
|
|
46276
46590
|
": ",
|
|
46277
|
-
count
|
|
46278
|
-
" row",
|
|
46279
|
-
count !== 1 ? "s" : ""
|
|
46591
|
+
t("debug.rowsCount", { count })
|
|
46280
46592
|
] }, name)) })
|
|
46281
46593
|
] });
|
|
46282
46594
|
}
|
|
46283
46595
|
function TransitionRow({ trace }) {
|
|
46596
|
+
const { t } = useTranslate();
|
|
46284
46597
|
const isServerEntry = !!trace.serverResponse && trace.traitName.startsWith("server:");
|
|
46285
46598
|
const hasFailedEffects = trace.effects.some((e) => e.status === "failed");
|
|
46286
46599
|
if (isServerEntry && trace.serverResponse) {
|
|
@@ -46288,7 +46601,7 @@ function TransitionRow({ trace }) {
|
|
|
46288
46601
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-2 text-xs font-mono", children: [
|
|
46289
46602
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "mt-1.5 w-1.5 h-1.5 rounded-full flex-shrink-0 bg-purple-500" }),
|
|
46290
46603
|
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "warning", size: "sm", className: "flex-shrink-0", children: trace.event }),
|
|
46291
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-600 dark:text-purple-400 flex-shrink-0", children: "
|
|
46604
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-600 dark:text-purple-400 flex-shrink-0", children: t("debug.serverResponse") })
|
|
46292
46605
|
] }),
|
|
46293
46606
|
/* @__PURE__ */ jsxRuntime.jsx(ServerResponseRow, { sr: trace.serverResponse })
|
|
46294
46607
|
] });
|
|
@@ -46329,6 +46642,7 @@ function VerifyModePanel({
|
|
|
46329
46642
|
serverCount,
|
|
46330
46643
|
localCount
|
|
46331
46644
|
}) {
|
|
46645
|
+
const { t } = useTranslate();
|
|
46332
46646
|
const [expanded, setExpanded] = React97__namespace.useState(true);
|
|
46333
46647
|
const scrollRef = React97__namespace.useRef(null);
|
|
46334
46648
|
const prevCountRef = React97__namespace.useRef(0);
|
|
@@ -46359,30 +46673,20 @@ function VerifyModePanel({
|
|
|
46359
46673
|
onClick: () => setExpanded((v) => !v),
|
|
46360
46674
|
className: "px-3 py-1.5 flex items-center gap-3 text-xs font-mono border-b border-border flex-shrink-0 w-full text-left hover:bg-[var(--color-card-hover,transparent)] cursor-pointer",
|
|
46361
46675
|
"aria-expanded": expanded,
|
|
46362
|
-
"aria-label": expanded ? "
|
|
46676
|
+
"aria-label": expanded ? t("debug.collapseVerificationTimeline") : t("debug.expandVerificationTimeline"),
|
|
46363
46677
|
"data-testid": "debugger-verify-toggle",
|
|
46364
46678
|
children: [
|
|
46365
46679
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground/50 w-3", "aria-hidden": true, children: expanded ? "\u25BE" : "\u25B8" }),
|
|
46366
|
-
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: failedChecks > 0 ? "danger" : "success", size: "sm", children: failedChecks > 0 ?
|
|
46367
|
-
/* @__PURE__ */ jsxRuntime.
|
|
46368
|
-
|
|
46369
|
-
" local"
|
|
46370
|
-
] }),
|
|
46371
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-purple-600 dark:text-purple-400", children: [
|
|
46372
|
-
serverCount,
|
|
46373
|
-
" server"
|
|
46374
|
-
] }),
|
|
46680
|
+
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: failedChecks > 0 ? "danger" : "success", size: "sm", children: failedChecks > 0 ? t("debug.failCount", { count: failedChecks }) : t("debug.ok") }),
|
|
46681
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground/70", children: t("debug.localCount", { count: localCount }) }),
|
|
46682
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-600 dark:text-purple-400", children: t("debug.serverCount", { count: serverCount }) }),
|
|
46375
46683
|
traitStates && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-cyan-600 dark:text-cyan-400 truncate max-w-[400px]", children: traitStates }),
|
|
46376
|
-
!expanded && transitions.length > 0 && /* @__PURE__ */ jsxRuntime.
|
|
46377
|
-
transitions.length,
|
|
46378
|
-
" transition",
|
|
46379
|
-
transitions.length !== 1 ? "s" : ""
|
|
46380
|
-
] })
|
|
46684
|
+
!expanded && transitions.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-auto text-foreground/50", children: t("debug.transitionsCount", { count: transitions.length }) })
|
|
46381
46685
|
]
|
|
46382
46686
|
}
|
|
46383
46687
|
),
|
|
46384
46688
|
expanded && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 flex overflow-hidden", children: [
|
|
46385
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { ref: scrollRef, className: "flex-1 overflow-y-auto", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-2 py-1", children: transitions.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-foreground/50 text-xs font-mono py-2 text-center", children: "
|
|
46689
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { ref: scrollRef, className: "flex-1 overflow-y-auto", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-2 py-1", children: transitions.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-foreground/50 text-xs font-mono py-2 text-center", children: t("debug.waitingForTransitions") }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-0.5", children: transitions.map((trace) => /* @__PURE__ */ jsxRuntime.jsx(TransitionRow, { trace }, trace.id)) }) }) }),
|
|
46386
46690
|
/* @__PURE__ */ jsxRuntime.jsx(WalkMinimap, {})
|
|
46387
46691
|
] })
|
|
46388
46692
|
]
|
|
@@ -46398,6 +46702,7 @@ function RuntimeDebugger({
|
|
|
46398
46702
|
defaultTab,
|
|
46399
46703
|
schema
|
|
46400
46704
|
}) {
|
|
46705
|
+
const { t } = useTranslate();
|
|
46401
46706
|
const [isCollapsed, setIsCollapsed] = React97__namespace.useState(mode === "verify" ? true : defaultCollapsed);
|
|
46402
46707
|
const [isVisible, setIsVisible] = React97__namespace.useState(mode === "inline" || mode === "verify" || isDebugEnabled2());
|
|
46403
46708
|
const debugData = useDebugData();
|
|
@@ -46436,55 +46741,55 @@ function RuntimeDebugger({
|
|
|
46436
46741
|
const tabItems = [
|
|
46437
46742
|
{
|
|
46438
46743
|
id: "dispatch",
|
|
46439
|
-
label: "
|
|
46744
|
+
label: t("debug.tabDispatch"),
|
|
46440
46745
|
badge: debugData.traits.length || void 0,
|
|
46441
46746
|
content: /* @__PURE__ */ jsxRuntime.jsx(EventDispatcherTab, { traits: debugData.traits, schema })
|
|
46442
46747
|
},
|
|
46443
46748
|
{
|
|
46444
46749
|
id: "verify",
|
|
46445
|
-
label: failedChecks > 0 ? "
|
|
46750
|
+
label: failedChecks > 0 ? t("debug.tabVerifyAlert") : t("debug.tabVerify"),
|
|
46446
46751
|
badge: verification.summary.totalChecks || void 0,
|
|
46447
46752
|
content: /* @__PURE__ */ jsxRuntime.jsx(VerificationTab, { checks: verification.checks, summary: verification.summary })
|
|
46448
46753
|
},
|
|
46449
46754
|
{
|
|
46450
46755
|
id: "timeline",
|
|
46451
|
-
label: "
|
|
46756
|
+
label: t("debug.tabTimeline"),
|
|
46452
46757
|
badge: verification.transitions.length || void 0,
|
|
46453
46758
|
content: /* @__PURE__ */ jsxRuntime.jsx(TransitionTimeline, { transitions: verification.transitions })
|
|
46454
46759
|
},
|
|
46455
46760
|
{
|
|
46456
46761
|
id: "bridge",
|
|
46457
|
-
label: "
|
|
46762
|
+
label: t("debug.tabBridge"),
|
|
46458
46763
|
badge: verification.bridge?.connected ? void 0 : 1,
|
|
46459
46764
|
content: /* @__PURE__ */ jsxRuntime.jsx(ServerBridgeTab, { bridge: verification.bridge })
|
|
46460
46765
|
},
|
|
46461
46766
|
{
|
|
46462
46767
|
id: "traits",
|
|
46463
|
-
label: "
|
|
46768
|
+
label: t("debug.tabTraits"),
|
|
46464
46769
|
badge: debugData.traits.length || void 0,
|
|
46465
46770
|
content: /* @__PURE__ */ jsxRuntime.jsx(TraitsTab, { traits: debugData.traits })
|
|
46466
46771
|
},
|
|
46467
46772
|
{
|
|
46468
46773
|
id: "ticks",
|
|
46469
|
-
label: "
|
|
46470
|
-
badge: debugData.ticks.filter((
|
|
46774
|
+
label: t("debug.tabTicks"),
|
|
46775
|
+
badge: debugData.ticks.filter((tick) => tick.active).length || void 0,
|
|
46471
46776
|
content: /* @__PURE__ */ jsxRuntime.jsx(TicksTab, { ticks: debugData.ticks })
|
|
46472
46777
|
},
|
|
46473
46778
|
{
|
|
46474
46779
|
id: "entities",
|
|
46475
|
-
label: "
|
|
46780
|
+
label: t("debug.tabEntities"),
|
|
46476
46781
|
badge: debugData.entitySnapshot?.runtime.length || void 0,
|
|
46477
46782
|
content: /* @__PURE__ */ jsxRuntime.jsx(EntitiesTab, { snapshot: debugData.entitySnapshot })
|
|
46478
46783
|
},
|
|
46479
46784
|
{
|
|
46480
46785
|
id: "events",
|
|
46481
|
-
label: "
|
|
46786
|
+
label: t("debug.tabEvents"),
|
|
46482
46787
|
badge: debugData.events.length > 0 ? debugData.events.length : void 0,
|
|
46483
46788
|
content: /* @__PURE__ */ jsxRuntime.jsx(EventFlowTab, { events: debugData.events })
|
|
46484
46789
|
},
|
|
46485
46790
|
{
|
|
46486
46791
|
id: "guards",
|
|
46487
|
-
label: "
|
|
46792
|
+
label: t("debug.tabGuards"),
|
|
46488
46793
|
badge: debugData.guards.filter((g) => !g.result).length || void 0,
|
|
46489
46794
|
content: /* @__PURE__ */ jsxRuntime.jsx(GuardsPanel, { guards: debugData.guards })
|
|
46490
46795
|
}
|
|
@@ -46512,15 +46817,10 @@ function RuntimeDebugger({
|
|
|
46512
46817
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
46513
46818
|
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "h6", style: { fontSize: "0.75rem" }, children: [
|
|
46514
46819
|
isCollapsed ? "\u25B6" : "\u25BC",
|
|
46515
|
-
"
|
|
46820
|
+
" ",
|
|
46821
|
+
t("debug.debugger")
|
|
46516
46822
|
] }),
|
|
46517
|
-
failedChecks > 0 ? /* @__PURE__ */ jsxRuntime.
|
|
46518
|
-
failedChecks,
|
|
46519
|
-
" failed"
|
|
46520
|
-
] }) : debugData.traits.length > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(Badge, { variant: "success", size: "sm", children: [
|
|
46521
|
-
debugData.traits.length,
|
|
46522
|
-
" traits"
|
|
46523
|
-
] }) : /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "info", size: "sm", children: "Idle" })
|
|
46823
|
+
failedChecks > 0 ? /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "danger", size: "sm", children: t("debug.failedCount", { count: failedChecks }) }) : debugData.traits.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "success", size: "sm", children: t("debug.traitsCount", { count: debugData.traits.length }) }) : /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "info", size: "sm", children: t("debug.idle") })
|
|
46524
46824
|
] })
|
|
46525
46825
|
}
|
|
46526
46826
|
),
|
|
@@ -46538,9 +46838,9 @@ function RuntimeDebugger({
|
|
|
46538
46838
|
);
|
|
46539
46839
|
}
|
|
46540
46840
|
if (mode === "verify") {
|
|
46541
|
-
const traitStates = debugData.traits.map((
|
|
46542
|
-
const serverEntries = verification.transitions.filter((
|
|
46543
|
-
const localEntries = verification.transitions.filter((
|
|
46841
|
+
const traitStates = debugData.traits.map((t2) => `${t2.name}:${t2.currentState}`).join(" | ");
|
|
46842
|
+
const serverEntries = verification.transitions.filter((t2) => t2.serverResponse);
|
|
46843
|
+
const localEntries = verification.transitions.filter((t2) => !t2.serverResponse);
|
|
46544
46844
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
46545
46845
|
VerifyModePanel,
|
|
46546
46846
|
{
|
|
@@ -46572,7 +46872,7 @@ function RuntimeDebugger({
|
|
|
46572
46872
|
variant: "secondary",
|
|
46573
46873
|
size: "sm",
|
|
46574
46874
|
className: "runtime-debugger__toggle",
|
|
46575
|
-
title: "
|
|
46875
|
+
title: t("debug.openDebugger"),
|
|
46576
46876
|
children: failedChecks > 0 ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "relative", children: [
|
|
46577
46877
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "V" }),
|
|
46578
46878
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute -top-1 -right-2 w-2 h-2 bg-red-500 rounded-full" })
|
|
@@ -46582,11 +46882,8 @@ function RuntimeDebugger({
|
|
|
46582
46882
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "runtime-debugger__header", children: [
|
|
46583
46883
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
46584
46884
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-lg", children: "V" }),
|
|
46585
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h6", children: "
|
|
46586
|
-
failedChecks > 0 ? /* @__PURE__ */ jsxRuntime.
|
|
46587
|
-
failedChecks,
|
|
46588
|
-
" failed"
|
|
46589
|
-
] }) : verification.summary.totalChecks > 0 ? /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "success", size: "sm", children: "All passing" }) : /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "info", size: "sm", children: "Runtime" })
|
|
46885
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h6", children: t("debug.kflowVerifier") }),
|
|
46886
|
+
failedChecks > 0 ? /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "danger", size: "sm", children: t("debug.failedCount", { count: failedChecks }) }) : verification.summary.totalChecks > 0 ? /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "success", size: "sm", children: t("debug.allPassing") }) : /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "info", size: "sm", children: t("debug.runtime") })
|
|
46590
46887
|
] }),
|
|
46591
46888
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
46592
46889
|
Button,
|
|
@@ -46594,7 +46891,7 @@ function RuntimeDebugger({
|
|
|
46594
46891
|
onClick: () => setIsCollapsed(true),
|
|
46595
46892
|
variant: "ghost",
|
|
46596
46893
|
size: "sm",
|
|
46597
|
-
title: "
|
|
46894
|
+
title: t("debug.close"),
|
|
46598
46895
|
children: "x"
|
|
46599
46896
|
}
|
|
46600
46897
|
)
|
|
@@ -46608,7 +46905,7 @@ function RuntimeDebugger({
|
|
|
46608
46905
|
className: "runtime-debugger__tabs"
|
|
46609
46906
|
}
|
|
46610
46907
|
) }),
|
|
46611
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "runtime-debugger__footer", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-foreground/50", children: "
|
|
46908
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "runtime-debugger__footer", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-foreground/50", children: t("debug.toggleHint") }) })
|
|
46612
46909
|
] })
|
|
46613
46910
|
}
|
|
46614
46911
|
);
|
|
@@ -46634,6 +46931,7 @@ var init_RuntimeDebugger2 = __esm({
|
|
|
46634
46931
|
init_TransitionTimeline();
|
|
46635
46932
|
init_ServerBridgeTab();
|
|
46636
46933
|
init_EventDispatcherTab();
|
|
46934
|
+
init_useTranslate();
|
|
46637
46935
|
init_RuntimeDebugger();
|
|
46638
46936
|
RuntimeDebugger.displayName = "RuntimeDebugger";
|
|
46639
46937
|
}
|
|
@@ -47922,7 +48220,7 @@ var init_StatCard = __esm({
|
|
|
47922
48220
|
}
|
|
47923
48221
|
);
|
|
47924
48222
|
}
|
|
47925
|
-
const label = schemaStats?.[0]?.label || labelToUse || "
|
|
48223
|
+
const label = schemaStats?.[0]?.label || labelToUse || t("statCard.defaultLabel");
|
|
47926
48224
|
const normalizedPropValue = Array.isArray(propValue) ? propValue[0] ?? propValue.length : propValue;
|
|
47927
48225
|
const value = schemaStats?.[0]?.value ?? normalizedPropValue ?? 0;
|
|
47928
48226
|
const trendDirection = manualDirection || (calculatedTrend === void 0 || calculatedTrend === 0 ? "neutral" : calculatedTrend > 0 ? "up" : "down");
|
|
@@ -47965,7 +48263,7 @@ var init_StatCard = __esm({
|
|
|
47965
48263
|
]
|
|
47966
48264
|
}
|
|
47967
48265
|
),
|
|
47968
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", color: "secondary", as: "span", children: "
|
|
48266
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", color: "secondary", as: "span", children: t("statCard.vsLastPeriod") })
|
|
47969
48267
|
] }),
|
|
47970
48268
|
subtitle && !calculatedTrend && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", color: "secondary", children: subtitle })
|
|
47971
48269
|
] }),
|
|
@@ -52170,6 +52468,9 @@ var AvlEmitListen = ({
|
|
|
52170
52468
|
] });
|
|
52171
52469
|
};
|
|
52172
52470
|
AvlEmitListen.displayName = "AvlEmitListen";
|
|
52471
|
+
|
|
52472
|
+
// components/avl/molecules/AvlSlotMap.tsx
|
|
52473
|
+
init_useTranslate();
|
|
52173
52474
|
var SLOT_PRESETS = {
|
|
52174
52475
|
header: { x: 10, y: 5, width: 340, height: 35 },
|
|
52175
52476
|
main: { x: 120, y: 50, width: 230, height: 195 },
|
|
@@ -52214,6 +52515,7 @@ var AvlSlotMap = ({
|
|
|
52214
52515
|
color = "var(--color-primary)",
|
|
52215
52516
|
animated = false
|
|
52216
52517
|
}) => {
|
|
52518
|
+
const { t } = useTranslate();
|
|
52217
52519
|
const ox = (600 - pageWidth) / 2;
|
|
52218
52520
|
const oy = (400 - pageHeight) / 2;
|
|
52219
52521
|
let unknownIdx = 0;
|
|
@@ -52264,7 +52566,7 @@ var AvlSlotMap = ({
|
|
|
52264
52566
|
fontSize: 10,
|
|
52265
52567
|
fontFamily: "inherit",
|
|
52266
52568
|
fontWeight: "bold",
|
|
52267
|
-
children: "
|
|
52569
|
+
children: t("avl.pageLayout")
|
|
52268
52570
|
}
|
|
52269
52571
|
),
|
|
52270
52572
|
resolvedSlots.map((slot) => {
|
|
@@ -52313,7 +52615,7 @@ var AvlSlotMap = ({
|
|
|
52313
52615
|
opacity: 0.6,
|
|
52314
52616
|
children: [
|
|
52315
52617
|
slot.name,
|
|
52316
|
-
isOverlay ?
|
|
52618
|
+
isOverlay ? ` ${t("avl.overlaySuffix")}` : ""
|
|
52317
52619
|
]
|
|
52318
52620
|
}
|
|
52319
52621
|
)
|
|
@@ -53245,23 +53547,25 @@ var SystemNode = ({ data }) => {
|
|
|
53245
53547
|
SystemNode.displayName = "SystemNode";
|
|
53246
53548
|
|
|
53247
53549
|
// components/avl/molecules/DetailView.tsx
|
|
53550
|
+
init_useTranslate();
|
|
53248
53551
|
init_AvlState();
|
|
53249
53552
|
init_AvlEffect();
|
|
53250
53553
|
init_types();
|
|
53251
53554
|
var DetailView = ({ data }) => {
|
|
53555
|
+
const { t } = useTranslate();
|
|
53252
53556
|
const traitName = data.traits[0]?.name;
|
|
53253
53557
|
const traitData = traitName ? data.traitDetails[traitName] : void 0;
|
|
53254
53558
|
if (!traitData || traitData.transitions.length === 0) {
|
|
53255
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-lg border-2 border-[var(--color-border)] bg-[var(--color-card)] p-4 text-center text-[var(--color-muted-foreground)] text-sm", children: "
|
|
53559
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-lg border-2 border-[var(--color-border)] bg-[var(--color-card)] p-4 text-center text-[var(--color-muted-foreground)] text-sm", children: t("detailView.noTransitionData") });
|
|
53256
53560
|
}
|
|
53257
53561
|
const transition = traitData.transitions[0];
|
|
53258
53562
|
const fromState = traitData.states.find((s) => s.name === transition.from);
|
|
53259
53563
|
const toState = traitData.states.find((s) => s.name === transition.to);
|
|
53260
53564
|
const transitionCounts = {};
|
|
53261
53565
|
for (const s of traitData.states) transitionCounts[s.name] = 0;
|
|
53262
|
-
for (const
|
|
53263
|
-
transitionCounts[
|
|
53264
|
-
transitionCounts[
|
|
53566
|
+
for (const t2 of traitData.transitions) {
|
|
53567
|
+
transitionCounts[t2.from] = (transitionCounts[t2.from] ?? 0) + 1;
|
|
53568
|
+
transitionCounts[t2.to] = (transitionCounts[t2.to] ?? 0) + 1;
|
|
53265
53569
|
}
|
|
53266
53570
|
const maxTC = Math.max(...Object.values(transitionCounts), 0);
|
|
53267
53571
|
const fromRole = getStateRole(transition.from, fromState?.isInitial, fromState?.isTerminal, transitionCounts[transition.from] ?? 0, maxTC);
|
|
@@ -53278,21 +53582,21 @@ var DetailView = ({ data }) => {
|
|
|
53278
53582
|
] }) }),
|
|
53279
53583
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "px-4 py-3 space-y-3", children: [
|
|
53280
53584
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
53281
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs uppercase tracking-wider text-[var(--color-muted-foreground)] mb-1", children: "
|
|
53585
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs uppercase tracking-wider text-[var(--color-muted-foreground)] mb-1", children: t("avl.trigger") }),
|
|
53282
53586
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5", children: [
|
|
53283
53587
|
/* @__PURE__ */ jsxRuntime.jsx("svg", { width: 16, height: 16, viewBox: "0 0 16 16", children: /* @__PURE__ */ jsxRuntime.jsx(AvlEvent, { x: 8, y: 8, size: 7 }) }),
|
|
53284
53588
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-semibold text-[var(--color-foreground)]", children: transition.event })
|
|
53285
53589
|
] })
|
|
53286
53590
|
] }),
|
|
53287
53591
|
hasGuard && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
53288
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs uppercase tracking-wider text-[var(--color-muted-foreground)] mb-1", children: "
|
|
53592
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs uppercase tracking-wider text-[var(--color-muted-foreground)] mb-1", children: t("avl.guard") }),
|
|
53289
53593
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5", children: [
|
|
53290
53594
|
/* @__PURE__ */ jsxRuntime.jsx("svg", { width: 14, height: 14, viewBox: "0 0 14 14", children: /* @__PURE__ */ jsxRuntime.jsx(AvlGuard, { x: 7, y: 7, size: 6 }) }),
|
|
53291
53595
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-mono text-[var(--color-muted-foreground)] opacity-60", children: typeof transition.guard === "string" ? transition.guard : JSON.stringify(transition.guard) })
|
|
53292
53596
|
] })
|
|
53293
53597
|
] }),
|
|
53294
53598
|
transition.effects.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
53295
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs uppercase tracking-wider text-[var(--color-muted-foreground)] mb-1", children: "
|
|
53599
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs uppercase tracking-wider text-[var(--color-muted-foreground)] mb-1", children: t("avl.effects") }),
|
|
53296
53600
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-1.5", children: transition.effects.map((effect, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-1.5", children: [
|
|
53297
53601
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-xs text-[var(--color-muted-foreground)] w-3 text-right mt-0.5", children: [
|
|
53298
53602
|
i + 1,
|
|
@@ -53328,6 +53632,7 @@ AvlOrbitalNode.displayName = "AvlOrbitalNode";
|
|
|
53328
53632
|
|
|
53329
53633
|
// components/avl/molecules/AvlTransitionEdge.tsx
|
|
53330
53634
|
init_types();
|
|
53635
|
+
init_useTranslate();
|
|
53331
53636
|
var AvlTransitionEdge = ({
|
|
53332
53637
|
id,
|
|
53333
53638
|
sourceX,
|
|
@@ -53340,6 +53645,7 @@ var AvlTransitionEdge = ({
|
|
|
53340
53645
|
markerEnd,
|
|
53341
53646
|
style
|
|
53342
53647
|
}) => {
|
|
53648
|
+
const { t } = useTranslate();
|
|
53343
53649
|
const [path, labelX, labelY] = react.getBezierPath({
|
|
53344
53650
|
sourceX,
|
|
53345
53651
|
sourceY,
|
|
@@ -53371,9 +53677,9 @@ var AvlTransitionEdge = ({
|
|
|
53371
53677
|
className: "absolute pointer-events-all nodrag nopan flex items-center gap-1",
|
|
53372
53678
|
style: { transform: `translate(-50%, -50%) translate(${labelX}px, ${labelY}px)` },
|
|
53373
53679
|
children: [
|
|
53374
|
-
data?.hasGuard && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-3 h-3 rotate-45 border border-amber-500 bg-amber-500/10 shrink-0", title: "
|
|
53680
|
+
data?.hasGuard && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-3 h-3 rotate-45 border border-amber-500 bg-amber-500/10 shrink-0", title: t("avl.guard") }),
|
|
53375
53681
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-2 py-0.5 text-xs font-medium rounded-full bg-[var(--color-card)] border border-[var(--color-border)] text-[var(--color-foreground)] truncate max-w-[160px]", children: data?.event ?? "" }),
|
|
53376
|
-
data?.hasEffects && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-2.5 h-2.5 rounded-full bg-violet-500/80 shrink-0", title: "
|
|
53682
|
+
data?.hasEffects && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-2.5 h-2.5 rounded-full bg-violet-500/80 shrink-0", title: t("avl.effects") })
|
|
53377
53683
|
]
|
|
53378
53684
|
}
|
|
53379
53685
|
) })
|
|
@@ -56694,6 +57000,7 @@ function BrowserPlayground({
|
|
|
56694
57000
|
|
|
56695
57001
|
// components/avl/molecules/OrbPreviewNode.tsx
|
|
56696
57002
|
init_useEventBus();
|
|
57003
|
+
init_useTranslate();
|
|
56697
57004
|
|
|
56698
57005
|
// components/avl/molecules/useCanvasDnd.tsx
|
|
56699
57006
|
init_useEventBus();
|
|
@@ -57181,6 +57488,7 @@ var OrbPreviewNodeInner = (props) => {
|
|
|
57181
57488
|
const screenSize = React97.useContext(ScreenSizeContext);
|
|
57182
57489
|
const preset = SCREEN_SIZE_PRESETS[screenSize];
|
|
57183
57490
|
const { select } = React97.useContext(PatternSelectionContext);
|
|
57491
|
+
const { t } = useTranslate();
|
|
57184
57492
|
const eventBus = useEventBus();
|
|
57185
57493
|
const reactFlow = react.useReactFlow();
|
|
57186
57494
|
const contentRef = React97.useRef(null);
|
|
@@ -57201,7 +57509,7 @@ var OrbPreviewNodeInner = (props) => {
|
|
|
57201
57509
|
const isSuccess = status === "success";
|
|
57202
57510
|
const isError = status === "error";
|
|
57203
57511
|
const label = isImportedGroup ? data.behaviorAlias ?? "" : isExpanded ? `${data.transitionEvent ?? ""}` : data.orbitalName;
|
|
57204
|
-
const sublabel = isImportedGroup ? `${data.behaviorName ?? ""}${typeof data.transitionCount === "number" && data.transitionCount > 1 ? ` \xB7 ${data.transitionCount}
|
|
57512
|
+
const sublabel = isImportedGroup ? `${data.behaviorName ?? ""}${typeof data.transitionCount === "number" && data.transitionCount > 1 ? ` \xB7 ${t("orbPreview.screensCount", { count: data.transitionCount })}` : ""}` : isExpanded ? `${data.fromState ?? ""} \u2192 ${data.toState ?? ""}` : data.entityName ?? "";
|
|
57205
57513
|
const orbitalSchema = React97.useMemo(() => {
|
|
57206
57514
|
const fullSchema = data._fullSchema;
|
|
57207
57515
|
if (!fullSchema) return void 0;
|
|
@@ -57369,7 +57677,7 @@ var OrbPreviewNodeInner = (props) => {
|
|
|
57369
57677
|
color: "var(--color-muted-foreground)",
|
|
57370
57678
|
zIndex: 3
|
|
57371
57679
|
},
|
|
57372
|
-
children: "
|
|
57680
|
+
children: t("orbPreview.previewBadge")
|
|
57373
57681
|
}
|
|
57374
57682
|
),
|
|
57375
57683
|
hovered && !dragActive && !l1IsOver && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -57391,7 +57699,7 @@ var OrbPreviewNodeInner = (props) => {
|
|
|
57391
57699
|
},
|
|
57392
57700
|
children: [
|
|
57393
57701
|
/* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontSize: 12 }, children: "\u279E" }),
|
|
57394
|
-
"
|
|
57702
|
+
t("orbPreview.doubleClickToOpen")
|
|
57395
57703
|
]
|
|
57396
57704
|
}
|
|
57397
57705
|
)
|
|
@@ -57414,7 +57722,7 @@ var OrbPreviewNodeInner = (props) => {
|
|
|
57414
57722
|
color: "var(--color-primary-foreground)",
|
|
57415
57723
|
boxShadow: "var(--shadow-lg)"
|
|
57416
57724
|
},
|
|
57417
|
-
children: "
|
|
57725
|
+
children: t("orbPreview.dropToAddAndOpen")
|
|
57418
57726
|
}
|
|
57419
57727
|
)
|
|
57420
57728
|
}
|
|
@@ -57448,7 +57756,7 @@ var OrbPreviewNodeInner = (props) => {
|
|
|
57448
57756
|
borderTopColor: "transparent",
|
|
57449
57757
|
zIndex: 2
|
|
57450
57758
|
},
|
|
57451
|
-
title: "
|
|
57759
|
+
title: t("orbPreview.dispatching")
|
|
57452
57760
|
}
|
|
57453
57761
|
)
|
|
57454
57762
|
] }),
|
|
@@ -57544,7 +57852,7 @@ var OrbPreviewNodeInner = (props) => {
|
|
|
57544
57852
|
height: "auto"
|
|
57545
57853
|
}
|
|
57546
57854
|
) })
|
|
57547
|
-
) : /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex items-center justify-center", style: { minHeight: preset.minHeight }, children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground", children: "
|
|
57855
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex items-center justify-center", style: { minHeight: preset.minHeight }, children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground", children: t("orbPreview.noPreview") }) })
|
|
57548
57856
|
]
|
|
57549
57857
|
}
|
|
57550
57858
|
),
|
|
@@ -58135,7 +58443,7 @@ function OrbInspector({ node, schema, editable = false, userType = "builder", th
|
|
|
58135
58443
|
const handleRemoveEffect = React97.useCallback((effectIndex) => {
|
|
58136
58444
|
eventBus.emit("UI:REMOVE_EFFECT", { effectIndex });
|
|
58137
58445
|
}, [eventBus]);
|
|
58138
|
-
const headerTitle = selectedPattern ? selectedPattern.patternType : isExpanded ? transitionEvent || "
|
|
58446
|
+
const headerTitle = selectedPattern ? selectedPattern.patternType : isExpanded ? transitionEvent || t("avl.transition") : orbitalName;
|
|
58139
58447
|
return /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex flex-col bg-card border-l border-border h-full w-full sm:w-[340px]", children: [
|
|
58140
58448
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "shrink-0 border-b border-border", children: [
|
|
58141
58449
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex items-center justify-between px-4 py-2", children: [
|
|
@@ -58152,7 +58460,7 @@ function OrbInspector({ node, schema, editable = false, userType = "builder", th
|
|
|
58152
58460
|
{
|
|
58153
58461
|
onClick: onClose,
|
|
58154
58462
|
className: "text-muted-foreground hover:text-foreground text-sm cursor-pointer bg-transparent border-none p-1",
|
|
58155
|
-
"aria-label": "
|
|
58463
|
+
"aria-label": t("common.close"),
|
|
58156
58464
|
children: "\xD7"
|
|
58157
58465
|
}
|
|
58158
58466
|
)
|
|
@@ -58162,7 +58470,7 @@ function OrbInspector({ node, schema, editable = false, userType = "builder", th
|
|
|
58162
58470
|
{
|
|
58163
58471
|
onClick: () => setActiveTab(tab),
|
|
58164
58472
|
className: `pb-2 text-xs font-medium border-b-2 cursor-pointer bg-transparent border-x-0 border-t-0 px-0 capitalize ${activeTab === tab ? "border-[var(--color-primary)] text-foreground" : "border-transparent text-muted-foreground hover:text-foreground"}`,
|
|
58165
|
-
children: tab
|
|
58473
|
+
children: t(`orbInspector.tab.${tab}`)
|
|
58166
58474
|
},
|
|
58167
58475
|
tab
|
|
58168
58476
|
)) })
|
|
@@ -58208,7 +58516,7 @@ function OrbInspector({ node, schema, editable = false, userType = "builder", th
|
|
|
58208
58516
|
/* ── Inspector Tab ── */
|
|
58209
58517
|
/* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
58210
58518
|
selectedPattern && patternDef?.propsSchema && /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "px-4 py-3 border-b border-border/40", children: [
|
|
58211
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs uppercase tracking-wider mb-2", children: t("
|
|
58519
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs uppercase tracking-wider mb-2", children: t("avl.props") }),
|
|
58212
58520
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex flex-col gap-1.5", children: Object.entries(patternDef.propsSchema).slice(0, 12).map(([propName, propSchema]) => {
|
|
58213
58521
|
const ps = propSchema;
|
|
58214
58522
|
const explicitValue = patternConfig ? patternConfig[propName] : void 0;
|
|
@@ -58242,7 +58550,7 @@ function OrbInspector({ node, schema, editable = false, userType = "builder", th
|
|
|
58242
58550
|
}) })
|
|
58243
58551
|
] }),
|
|
58244
58552
|
userType === "architect" && (selectedPattern && isEntityPattern || !selectedPattern && !isExpanded) && entity && /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "px-4 py-3 border-b border-border/40", children: [
|
|
58245
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs uppercase tracking-wider mb-2", children: t("
|
|
58553
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs uppercase tracking-wider mb-2", children: t("avl.entity") }),
|
|
58246
58554
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex items-center gap-2 mb-2", children: [
|
|
58247
58555
|
/* @__PURE__ */ jsxRuntime.jsx("svg", { width: 14, height: 14, children: /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: 7, cy: 7, r: 5, fill: "var(--color-primary)" }) }),
|
|
58248
58556
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "font-semibold text-xs", children: entity.name }),
|
|
@@ -58285,7 +58593,7 @@ function OrbInspector({ node, schema, editable = false, userType = "builder", th
|
|
|
58285
58593
|
] }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
58286
58594
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-xs font-mono flex-1", children: f3.name }),
|
|
58287
58595
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs", children: f3.type }),
|
|
58288
|
-
f3.required && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-primary text-[9px]", children: t("
|
|
58596
|
+
f3.required && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-primary text-[9px]", children: t("orbInspector.required") })
|
|
58289
58597
|
] })
|
|
58290
58598
|
] }, f3.name)) }),
|
|
58291
58599
|
editable && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -58297,13 +58605,13 @@ function OrbInspector({ node, schema, editable = false, userType = "builder", th
|
|
|
58297
58605
|
className: "mt-2 text-xs w-full",
|
|
58298
58606
|
children: [
|
|
58299
58607
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "plus", size: "xs", className: "mr-1" }),
|
|
58300
|
-
t("
|
|
58608
|
+
t("orbInspector.addField")
|
|
58301
58609
|
]
|
|
58302
58610
|
}
|
|
58303
58611
|
)
|
|
58304
58612
|
] }),
|
|
58305
58613
|
editable && !selectedPattern && !isExpanded && node.layer === "Services" && /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "px-4 py-3 border-b border-border/40", children: [
|
|
58306
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs uppercase tracking-wider mb-2", children: t("
|
|
58614
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs uppercase tracking-wider mb-2", children: t("orbInspector.serviceMode") }),
|
|
58307
58615
|
/* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", className: "items-center", children: [
|
|
58308
58616
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
58309
58617
|
Button,
|
|
@@ -58316,7 +58624,7 @@ function OrbInspector({ node, schema, editable = false, userType = "builder", th
|
|
|
58316
58624
|
},
|
|
58317
58625
|
children: [
|
|
58318
58626
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "monitor", size: "xs", className: "mr-1" }),
|
|
58319
|
-
t("
|
|
58627
|
+
t("orbInspector.standalone")
|
|
58320
58628
|
]
|
|
58321
58629
|
}
|
|
58322
58630
|
),
|
|
@@ -58331,25 +58639,22 @@ function OrbInspector({ node, schema, editable = false, userType = "builder", th
|
|
|
58331
58639
|
},
|
|
58332
58640
|
children: [
|
|
58333
58641
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "cpu", size: "xs", className: "mr-1" }),
|
|
58334
|
-
t("
|
|
58642
|
+
t("orbInspector.embedded")
|
|
58335
58643
|
]
|
|
58336
58644
|
}
|
|
58337
58645
|
)
|
|
58338
58646
|
] }),
|
|
58339
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs mt-1", children: hasRenderUi ? t("
|
|
58647
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs mt-1", children: hasRenderUi ? t("orbInspector.rendersOwnUi") : t("orbInspector.headless") })
|
|
58340
58648
|
] }),
|
|
58341
58649
|
!selectedPattern && !isExpanded && traits2.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "px-4 py-3 border-b border-border/40", children: [
|
|
58342
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs uppercase tracking-wider mb-2", children: "
|
|
58343
|
-
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex flex-col gap-1", children: traits2.map((
|
|
58344
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-xs font-semibold", children:
|
|
58345
|
-
/* @__PURE__ */ jsxRuntime.
|
|
58346
|
-
|
|
58347
|
-
" states"
|
|
58348
|
-
] })
|
|
58349
|
-
] }, t2.name)) })
|
|
58650
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs uppercase tracking-wider mb-2", children: t("avl.traits") }),
|
|
58651
|
+
/* @__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: [
|
|
58652
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-xs font-semibold", children: tr.name }),
|
|
58653
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs", children: t("orbInspector.statesCount", { count: tr.stateCount }) })
|
|
58654
|
+
] }, tr.name)) })
|
|
58350
58655
|
] }),
|
|
58351
58656
|
isExpanded && fromState && toState && /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "px-4 py-3 border-b border-border/40", children: [
|
|
58352
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs uppercase tracking-wider mb-2", children: "
|
|
58657
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs uppercase tracking-wider mb-2", children: t("avl.transition") }),
|
|
58353
58658
|
/* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "100%", height: 44, viewBox: "0 0 280 44", children: [
|
|
58354
58659
|
/* @__PURE__ */ jsxRuntime.jsx(exports.AvlState, { x: 8, y: 8, name: fromState, role: getStateRole(fromState), width: 90, height: 26 }),
|
|
58355
58660
|
/* @__PURE__ */ jsxRuntime.jsx("line", { x1: 104, y1: 21, x2: 158, y2: 21, stroke: "#1E293B", strokeWidth: 2, markerEnd: "url(#orb-arrow)" }),
|
|
@@ -58358,7 +58663,7 @@ function OrbInspector({ node, schema, editable = false, userType = "builder", th
|
|
|
58358
58663
|
] }),
|
|
58359
58664
|
traitName && /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "text-muted-foreground text-xs", children: [
|
|
58360
58665
|
traitName,
|
|
58361
|
-
entityName ?
|
|
58666
|
+
entityName ? t("orbInspector.onEntity", { entity: entityName }) : ""
|
|
58362
58667
|
] })
|
|
58363
58668
|
] }),
|
|
58364
58669
|
isExpanded && transitionEvent && /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "px-4 py-2 border-b border-border/40", children: /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex items-center gap-2", children: [
|
|
@@ -58371,7 +58676,7 @@ function OrbInspector({ node, schema, editable = false, userType = "builder", th
|
|
|
58371
58676
|
Input,
|
|
58372
58677
|
{
|
|
58373
58678
|
defaultValue: formatExpression(transition?.guard ?? guard),
|
|
58374
|
-
placeholder: t("
|
|
58679
|
+
placeholder: t("orbInspector.guardExpression"),
|
|
58375
58680
|
className: "flex-1 text-xs font-mono h-6",
|
|
58376
58681
|
onBlur: (e) => handleGuardChange(e.target.value)
|
|
58377
58682
|
}
|
|
@@ -58379,7 +58684,7 @@ function OrbInspector({ node, schema, editable = false, userType = "builder", th
|
|
|
58379
58684
|
] }) }),
|
|
58380
58685
|
userType === "architect" && (effectTypes.length > 0 || editable) && isExpanded && /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "px-4 py-3 border-b border-border/40", children: [
|
|
58381
58686
|
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "text-muted-foreground text-xs uppercase tracking-wider mb-2", children: [
|
|
58382
|
-
t("
|
|
58687
|
+
t("avl.effects"),
|
|
58383
58688
|
" (",
|
|
58384
58689
|
effectTypes.length,
|
|
58385
58690
|
")"
|
|
@@ -58436,7 +58741,7 @@ function AddEffectButton({ onAdd }) {
|
|
|
58436
58741
|
className: "text-xs w-full",
|
|
58437
58742
|
children: [
|
|
58438
58743
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "plus", size: "xs", className: "mr-1" }),
|
|
58439
|
-
t("
|
|
58744
|
+
t("orbInspector.addEffect")
|
|
58440
58745
|
]
|
|
58441
58746
|
}
|
|
58442
58747
|
),
|
|
@@ -58497,7 +58802,7 @@ var PHASE_2_TOKEN_FALLBACK = {
|
|
|
58497
58802
|
function StylesTab({ patternType, patternDef, patternConfig, editable, onPropChange, themeManifest, isDesignSystem }) {
|
|
58498
58803
|
const { t } = useTranslate();
|
|
58499
58804
|
if (!patternType) {
|
|
58500
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "p-4", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs", children: t("
|
|
58805
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "p-4", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs", children: t("orbInspector.selectPatternForStyles") }) });
|
|
58501
58806
|
}
|
|
58502
58807
|
const tier = patternDef?.category ?? "Pattern";
|
|
58503
58808
|
const tokens = PHASE_2_TOKEN_FALLBACK[patternType] ?? [];
|
|
@@ -58518,11 +58823,11 @@ function StylesTab({ patternType, patternDef, patternConfig, editable, onPropCha
|
|
|
58518
58823
|
)
|
|
58519
58824
|
] }),
|
|
58520
58825
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { children: [
|
|
58521
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs uppercase tracking-wider mb-2", children: t("
|
|
58522
|
-
tokens.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs italic", children: t("
|
|
58826
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs uppercase tracking-wider mb-2", children: t("orbInspector.tokens") }),
|
|
58827
|
+
tokens.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs italic", children: t("orbInspector.noTokenContract") }) : /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex flex-col gap-1", children: tokens.map((token) => /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex items-center gap-2", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "font-mono text-xs", children: token }) }, token)) })
|
|
58523
58828
|
] }),
|
|
58524
58829
|
variantEnum && variantEnum.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(Box, { children: [
|
|
58525
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs uppercase tracking-wider mb-2", children: t("
|
|
58830
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs uppercase tracking-wider mb-2", children: t("orbInspector.variant") }),
|
|
58526
58831
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex flex-wrap gap-1", children: variantEnum.map((variant) => {
|
|
58527
58832
|
const isActive = variant === currentVariant || !currentVariant && variant === "default";
|
|
58528
58833
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -58542,7 +58847,7 @@ function StylesTab({ patternType, patternDef, patternConfig, editable, onPropCha
|
|
|
58542
58847
|
}) })
|
|
58543
58848
|
] }),
|
|
58544
58849
|
sizeEnum && sizeEnum.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(Box, { children: [
|
|
58545
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs uppercase tracking-wider mb-2", children: t("
|
|
58850
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs uppercase tracking-wider mb-2", children: t("orbInspector.size") }),
|
|
58546
58851
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex flex-wrap gap-1", children: sizeEnum.map((size) => {
|
|
58547
58852
|
const isActive = size === currentSize || !currentSize && size === "md";
|
|
58548
58853
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -58565,20 +58870,21 @@ function StylesTab({ patternType, patternDef, patternConfig, editable, onPropCha
|
|
|
58565
58870
|
] });
|
|
58566
58871
|
}
|
|
58567
58872
|
var TOKEN_GROUPS = [
|
|
58568
|
-
{ group: "colors",
|
|
58569
|
-
{ group: "radii",
|
|
58570
|
-
{ group: "spacing",
|
|
58571
|
-
{ group: "shadows",
|
|
58873
|
+
{ group: "colors", labelKey: "orbInspector.tokenGroup.colors" },
|
|
58874
|
+
{ group: "radii", labelKey: "orbInspector.tokenGroup.radii" },
|
|
58875
|
+
{ group: "spacing", labelKey: "orbInspector.tokenGroup.spacing" },
|
|
58876
|
+
{ group: "shadows", labelKey: "orbInspector.tokenGroup.shadows" }
|
|
58572
58877
|
];
|
|
58573
58878
|
function TokenEditorSection({ themeManifest, onPropChange }) {
|
|
58879
|
+
const { t } = useTranslate();
|
|
58574
58880
|
const tokens = themeManifest.tokens ?? {};
|
|
58575
58881
|
return /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex flex-col gap-3 pt-2 border-t border-border/40", children: [
|
|
58576
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-xs uppercase tracking-wider text-muted-foreground", children: "
|
|
58577
|
-
TOKEN_GROUPS.map(({ group,
|
|
58882
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-xs uppercase tracking-wider text-muted-foreground", children: t("orbInspector.projectThemeTokens") }),
|
|
58883
|
+
TOKEN_GROUPS.map(({ group, labelKey }) => {
|
|
58578
58884
|
const entries = Object.entries(tokens[group] ?? {});
|
|
58579
58885
|
if (entries.length === 0) return null;
|
|
58580
58886
|
return /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex flex-col gap-1.5", children: [
|
|
58581
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-xs font-mono text-muted-foreground", children:
|
|
58887
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-xs font-mono text-muted-foreground", children: t(labelKey) }),
|
|
58582
58888
|
entries.map(([key, value]) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
58583
58889
|
TokenRow,
|
|
58584
58890
|
{
|
|
@@ -58626,6 +58932,7 @@ init_Typography();
|
|
|
58626
58932
|
init_Badge();
|
|
58627
58933
|
|
|
58628
58934
|
// components/avl/organisms/AvlTraitScene.tsx
|
|
58935
|
+
init_useTranslate();
|
|
58629
58936
|
init_AvlState();
|
|
58630
58937
|
init_AvlTransitionLane();
|
|
58631
58938
|
init_AvlSwimLane();
|
|
@@ -58639,6 +58946,7 @@ var AvlTraitScene = ({
|
|
|
58639
58946
|
color = "var(--color-primary)",
|
|
58640
58947
|
onTransitionClick
|
|
58641
58948
|
}) => {
|
|
58949
|
+
const { t } = useTranslate();
|
|
58642
58950
|
const [layout, setLayout] = React97.useState(null);
|
|
58643
58951
|
const dataKey = React97.useMemo(() => JSON.stringify(data), [data]);
|
|
58644
58952
|
React97.useEffect(() => {
|
|
@@ -58647,7 +58955,7 @@ var AvlTraitScene = ({
|
|
|
58647
58955
|
});
|
|
58648
58956
|
}, [dataKey]);
|
|
58649
58957
|
if (!layout) {
|
|
58650
|
-
return /* @__PURE__ */ jsxRuntime.jsx("g", { children: /* @__PURE__ */ jsxRuntime.jsx("text", { x: 300, y: 200, textAnchor: "middle", fill: color, fontSize: 12, opacity: 0.5, children: "
|
|
58958
|
+
return /* @__PURE__ */ jsxRuntime.jsx("g", { children: /* @__PURE__ */ jsxRuntime.jsx("text", { x: 300, y: 200, textAnchor: "middle", fill: color, fontSize: 12, opacity: 0.5, children: t("avl.computingLayout") }) });
|
|
58651
58959
|
}
|
|
58652
58960
|
const hasExternal = data.listenedEvents.length > 0 || data.emittedEvents.length > 0;
|
|
58653
58961
|
const machineOffsetX = hasExternal ? 0 : 30;
|
|
@@ -58662,10 +58970,7 @@ var AvlTraitScene = ({
|
|
|
58662
58970
|
const machineHeight = scaledH + 100;
|
|
58663
58971
|
const renderMachine = /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
|
|
58664
58972
|
/* @__PURE__ */ jsxRuntime.jsx("text", { x: CENTER_W2 / 2, y: 20, textAnchor: "middle", fill: color, fontSize: 20, fontWeight: "700", fontFamily: "inherit", children: data.name }),
|
|
58665
|
-
/* @__PURE__ */ jsxRuntime.
|
|
58666
|
-
"linked to ",
|
|
58667
|
-
data.linkedEntity
|
|
58668
|
-
] }),
|
|
58973
|
+
/* @__PURE__ */ jsxRuntime.jsx("text", { x: CENTER_W2 / 2, y: 38, textAnchor: "middle", fill: color, fontSize: 11, opacity: 0.5, fontFamily: "inherit", children: t("avl.linkedTo", { entity: data.linkedEntity }) }),
|
|
58669
58974
|
/* @__PURE__ */ jsxRuntime.jsxs("defs", { children: [
|
|
58670
58975
|
/* @__PURE__ */ jsxRuntime.jsx("marker", { id: "traitArrowV2", viewBox: "0 0 10 10", refX: "9", refY: "5", markerWidth: "6", markerHeight: "6", orient: "auto-start-reverse", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M 0 0 L 10 5 L 0 10 z", fill: exports.CONNECTION_COLORS.forward.color, opacity: 0.7 }) }),
|
|
58671
58976
|
/* @__PURE__ */ jsxRuntime.jsx("marker", { id: "traitArrowBack", viewBox: "0 0 10 10", refX: "9", refY: "5", markerWidth: "6", markerHeight: "6", orient: "auto-start-reverse", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M 0 0 L 10 5 L 0 10 z", fill: exports.CONNECTION_COLORS.backward.color, opacity: 0.5 }) })
|
|
@@ -58740,6 +59045,9 @@ var AvlTraitScene = ({
|
|
|
58740
59045
|
);
|
|
58741
59046
|
};
|
|
58742
59047
|
AvlTraitScene.displayName = "AvlTraitScene";
|
|
59048
|
+
|
|
59049
|
+
// components/avl/molecules/TraitCardNode.tsx
|
|
59050
|
+
init_useTranslate();
|
|
58743
59051
|
var TraitCardSelectionContext = React97.createContext({
|
|
58744
59052
|
selectTransition: () => {
|
|
58745
59053
|
}
|
|
@@ -58749,6 +59057,7 @@ var SCENE_WIDTH = 600;
|
|
|
58749
59057
|
var SCENE_HEIGHT = 400;
|
|
58750
59058
|
var TraitCardNodeInner = (props) => {
|
|
58751
59059
|
const data = props.data;
|
|
59060
|
+
const { t } = useTranslate();
|
|
58752
59061
|
const { selectTransition } = React97.useContext(TraitCardSelectionContext);
|
|
58753
59062
|
const orbitalName = data.orbitalName;
|
|
58754
59063
|
const traitName = data.traitName ?? "";
|
|
@@ -58774,7 +59083,7 @@ var TraitCardNodeInner = (props) => {
|
|
|
58774
59083
|
position: react.Position.Left,
|
|
58775
59084
|
id: `listen-${event}`,
|
|
58776
59085
|
style: { top: `${(i + 1) / (listens.length + 1) * 100}%` },
|
|
58777
|
-
"aria-label":
|
|
59086
|
+
"aria-label": t("avl.listensFor", { event })
|
|
58778
59087
|
},
|
|
58779
59088
|
`listen-${event}`
|
|
58780
59089
|
)),
|
|
@@ -58785,7 +59094,7 @@ var TraitCardNodeInner = (props) => {
|
|
|
58785
59094
|
position: react.Position.Right,
|
|
58786
59095
|
id: `emit-${event}`,
|
|
58787
59096
|
style: { top: `${(i + 1) / (emits.length + 1) * 100}%` },
|
|
58788
|
-
"aria-label":
|
|
59097
|
+
"aria-label": t("avl.emits", { event })
|
|
58789
59098
|
},
|
|
58790
59099
|
`emit-${event}`
|
|
58791
59100
|
)),
|
|
@@ -58812,14 +59121,14 @@ var TraitCardNodeInner = (props) => {
|
|
|
58812
59121
|
{
|
|
58813
59122
|
data: traitLevelData,
|
|
58814
59123
|
onTransitionClick: (idx) => {
|
|
58815
|
-
const
|
|
58816
|
-
if (!
|
|
59124
|
+
const t2 = transitions[idx];
|
|
59125
|
+
if (!t2) return;
|
|
58817
59126
|
selectTransition({
|
|
58818
59127
|
orbitalName,
|
|
58819
59128
|
traitName,
|
|
58820
|
-
transitionEvent:
|
|
58821
|
-
fromState:
|
|
58822
|
-
toState:
|
|
59129
|
+
transitionEvent: t2.event,
|
|
59130
|
+
fromState: t2.fromState,
|
|
59131
|
+
toState: t2.toState,
|
|
58823
59132
|
index: idx
|
|
58824
59133
|
});
|
|
58825
59134
|
}
|
|
@@ -58827,7 +59136,7 @@ var TraitCardNodeInner = (props) => {
|
|
|
58827
59136
|
)
|
|
58828
59137
|
}
|
|
58829
59138
|
)
|
|
58830
|
-
) : /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", color: "muted", children: "
|
|
59139
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", color: "muted", children: t("avl.noStateMachine") })
|
|
58831
59140
|
] })
|
|
58832
59141
|
]
|
|
58833
59142
|
}
|
|
@@ -58838,6 +59147,7 @@ TraitCardNode.displayName = "TraitCardNode";
|
|
|
58838
59147
|
|
|
58839
59148
|
// components/avl/organisms/FlowCanvas.tsx
|
|
58840
59149
|
init_useEventBus();
|
|
59150
|
+
init_useTranslate();
|
|
58841
59151
|
var flowCanvasLog = logger.createLogger("almadar:ui:flow-canvas");
|
|
58842
59152
|
var NODE_TYPES = {
|
|
58843
59153
|
preview: OrbPreviewNode,
|
|
@@ -58881,6 +59191,7 @@ function FlowCanvasInner({
|
|
|
58881
59191
|
userType = "builder",
|
|
58882
59192
|
themeManifest
|
|
58883
59193
|
}) {
|
|
59194
|
+
const { t } = useTranslate();
|
|
58884
59195
|
const NODE_TYPES2 = React97.useMemo(() => ({
|
|
58885
59196
|
preview: OrbPreviewNode,
|
|
58886
59197
|
behaviorCompose: BehaviorComposeNode,
|
|
@@ -58933,13 +59244,13 @@ function FlowCanvasInner({
|
|
|
58933
59244
|
}), [selectedPattern]);
|
|
58934
59245
|
const [atBehaviorLevel, setAtBehaviorLevel] = React97.useState(composeLevel === "behavior");
|
|
58935
59246
|
const { composeNodes, composeEdges, overviewNodes, overviewEdges, expandedNodes, expandedEdges, behaviorExpandedNodes, behaviorExpandedEdges, traitExpandedNodes, traitExpandedEdges } = React97.useMemo(() => {
|
|
58936
|
-
const
|
|
59247
|
+
const t2 = perfStart("compose-graph");
|
|
58937
59248
|
const compose = composeLevel === "behavior" && behaviorEntries?.length ? behaviorsToComposeGraph(behaviorEntries, behaviorWires ?? [], layoutHint) : { nodes: [], edges: [] };
|
|
58938
59249
|
const overview = schemaToOverviewGraph(parsedSchema, mockData, behaviorMeta, layoutHint, orbitalStatus, screenSize);
|
|
58939
59250
|
const expanded = expandedOrbital ? orbitalToExpandedGraph(parsedSchema, expandedOrbital, mockData, screenSize) : { nodes: [], edges: [] };
|
|
58940
59251
|
const behaviorExpanded = expandedOrbital && expandedBehaviorAlias ? orbitalAliasToExpandedGraph(parsedSchema, expandedOrbital, expandedBehaviorAlias, mockData, screenSize) : { nodes: [], edges: [] };
|
|
58941
59252
|
const traitExpanded = expandedOrbital ? orbitalToTraitGraph(parsedSchema, expandedOrbital) : { nodes: [], edges: [] };
|
|
58942
|
-
perfEnd("compose-graph",
|
|
59253
|
+
perfEnd("compose-graph", t2, {
|
|
58943
59254
|
composeNodes: compose.nodes.length,
|
|
58944
59255
|
overviewNodes: overview.nodes.length,
|
|
58945
59256
|
expandedNodes: expanded.nodes.length,
|
|
@@ -59192,12 +59503,12 @@ function FlowCanvasInner({
|
|
|
59192
59503
|
{
|
|
59193
59504
|
onClick: handleGoBack,
|
|
59194
59505
|
className: "text-muted-foreground hover:text-foreground text-sm cursor-pointer bg-transparent border-none p-0",
|
|
59195
|
-
"aria-label": "
|
|
59506
|
+
"aria-label": t("canvas.goBackToOverview"),
|
|
59196
59507
|
children: "\u2190"
|
|
59197
59508
|
}
|
|
59198
59509
|
),
|
|
59199
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "font-medium", children: level === "overview" ? "
|
|
59200
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground", children: level === "overview" ?
|
|
59510
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "font-medium", children: level === "overview" ? t("canvas.overview") : expandedOrbital ?? t("canvas.expanded") }),
|
|
59511
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground", children: level === "overview" ? t("canvas.modulesCount", { count: nodes.length }) : t("canvas.screensCount", { count: nodes.length }) })
|
|
59201
59512
|
] }),
|
|
59202
59513
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex items-center gap-1 px-2 py-1 rounded-md bg-card/80 border border-border/40 backdrop-blur-sm", children: screenSizeKeys.map((size) => {
|
|
59203
59514
|
const p2 = SCREEN_SIZE_PRESETS[size];
|
|
@@ -59213,7 +59524,7 @@ function FlowCanvasInner({
|
|
|
59213
59524
|
},
|
|
59214
59525
|
className: `px-2 py-1 text-xs font-medium rounded cursor-pointer border-none transition-colors ${active ? "bg-primary text-primary-foreground" : "bg-transparent text-muted-foreground hover:text-foreground hover:bg-muted/50"}`,
|
|
59215
59526
|
title: `${p2.label} (${p2.width}px)`,
|
|
59216
|
-
"aria-label":
|
|
59527
|
+
"aria-label": t("canvas.switchToView", { label: p2.label }),
|
|
59217
59528
|
children: p2.label
|
|
59218
59529
|
},
|
|
59219
59530
|
size
|
|
@@ -59595,6 +59906,7 @@ init_Stack();
|
|
|
59595
59906
|
init_Typography();
|
|
59596
59907
|
init_Button();
|
|
59597
59908
|
init_Icon();
|
|
59909
|
+
init_useTranslate();
|
|
59598
59910
|
var UNIT_DISPLAY_W = 240;
|
|
59599
59911
|
var UNIT_DISPLAY_H = 160;
|
|
59600
59912
|
function layoutOrbitals(count, containerW, containerH) {
|
|
@@ -59785,6 +60097,7 @@ var AvlOrbitalsCosmicZoom = ({
|
|
|
59785
60097
|
minZoom = 0.4,
|
|
59786
60098
|
maxZoom = 3
|
|
59787
60099
|
}) => {
|
|
60100
|
+
const { t } = useTranslate();
|
|
59788
60101
|
const parsedSchema = React97.useMemo(() => {
|
|
59789
60102
|
if (typeof schemaProp === "string") return JSON.parse(schemaProp);
|
|
59790
60103
|
return schemaProp;
|
|
@@ -59852,9 +60165,9 @@ var AvlOrbitalsCosmicZoom = ({
|
|
|
59852
60165
|
(ctx) => {
|
|
59853
60166
|
if (ctx.level !== "transition" || !ctx.trait || !ctx.transition) return;
|
|
59854
60167
|
const orbital = parsedSchema.orbitals?.find((o) => o.name === ctx.orbital);
|
|
59855
|
-
const traitRef = orbital?.traits?.find((
|
|
60168
|
+
const traitRef = orbital?.traits?.find((t2) => core.isInlineTrait(t2) && t2.name === ctx.trait);
|
|
59856
60169
|
if (!traitRef || !core.isInlineTrait(traitRef)) return;
|
|
59857
|
-
const idx = traitRef.stateMachine?.transitions?.findIndex((
|
|
60170
|
+
const idx = traitRef.stateMachine?.transitions?.findIndex((t2) => t2.event === ctx.transition) ?? -1;
|
|
59858
60171
|
if (idx < 0) return;
|
|
59859
60172
|
dispatch({ type: "SELECT_TRAIT", trait: ctx.trait });
|
|
59860
60173
|
dispatch({ type: "ZOOM_INTO_TRANSITION", transitionIndex: idx, targetPosition: { x: 0, y: 0 } });
|
|
@@ -60030,7 +60343,7 @@ var AvlOrbitalsCosmicZoom = ({
|
|
|
60030
60343
|
borderRadius: 4,
|
|
60031
60344
|
opacity: 0.8
|
|
60032
60345
|
},
|
|
60033
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", style: { color }, children: "
|
|
60346
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", style: { color }, children: t("avl.pressEscToZoomOut") })
|
|
60034
60347
|
}
|
|
60035
60348
|
),
|
|
60036
60349
|
state.level === "application" && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
@@ -60082,7 +60395,7 @@ var AvlOrbitalsCosmicZoom = ({
|
|
|
60082
60395
|
onKeyDown: (e) => {
|
|
60083
60396
|
if (e.key === "Enter" || e.key === " ") handleSelect(view.name);
|
|
60084
60397
|
},
|
|
60085
|
-
"aria-label":
|
|
60398
|
+
"aria-label": isHighlighted ? t("avl.orbitalLabelHighlighted", { name: view.name }) : t("avl.orbitalLabel", { name: view.name }),
|
|
60086
60399
|
position: "absolute",
|
|
60087
60400
|
style: {
|
|
60088
60401
|
left: view.cx - UNIT_DISPLAY_W / 2,
|
|
@@ -60130,9 +60443,9 @@ var AvlOrbitalsCosmicZoom = ({
|
|
|
60130
60443
|
zIndex: 30
|
|
60131
60444
|
},
|
|
60132
60445
|
children: [
|
|
60133
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "secondary", size: "sm", onClick: zoomIn, title: "
|
|
60134
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "secondary", size: "sm", onClick: zoomOut, title: "
|
|
60135
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "secondary", size: "sm", onClick: resetZoom, title: "
|
|
60446
|
+
/* @__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" }) }),
|
|
60447
|
+
/* @__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" }) }),
|
|
60448
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "secondary", size: "sm", onClick: resetZoom, title: t("common.reset"), action: "COSMIC_ZOOM_RESET", children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "maximize", size: "sm" }) })
|
|
60136
60449
|
]
|
|
60137
60450
|
}
|
|
60138
60451
|
)
|