@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/providers/index.js
CHANGED
|
@@ -1914,7 +1914,10 @@ var en_default;
|
|
|
1914
1914
|
var init_en = __esm({
|
|
1915
1915
|
"locales/en.json"() {
|
|
1916
1916
|
en_default = {
|
|
1917
|
-
$meta: {
|
|
1917
|
+
$meta: {
|
|
1918
|
+
locale: "en",
|
|
1919
|
+
direction: "ltr"
|
|
1920
|
+
},
|
|
1918
1921
|
"common.save": "Save",
|
|
1919
1922
|
"common.cancel": "Cancel",
|
|
1920
1923
|
"common.delete": "Delete",
|
|
@@ -2056,7 +2059,6 @@ var init_en = __esm({
|
|
|
2056
2059
|
"error.somethingWentWrong": "Something went wrong",
|
|
2057
2060
|
"error.loadingItems": "Loading items...",
|
|
2058
2061
|
"error.noItemsFound": "No items found",
|
|
2059
|
-
"error.notFound": "Not found",
|
|
2060
2062
|
"debug.noEntityData": "No entity data",
|
|
2061
2063
|
"debug.noEntities": "No entities",
|
|
2062
2064
|
"debug.noTicks": "No ticks registered",
|
|
@@ -2088,7 +2090,299 @@ var init_en = __esm({
|
|
|
2088
2090
|
"template.showcase": "Showcase",
|
|
2089
2091
|
"template.faq": "Frequently Asked Questions",
|
|
2090
2092
|
"template.ourTeam": "Our Team",
|
|
2091
|
-
"template.caseStudies": "Case Studies"
|
|
2093
|
+
"template.caseStudies": "Case Studies",
|
|
2094
|
+
"richBlockEditor.toolbar.text": "Text",
|
|
2095
|
+
"richBlockEditor.toolbar.h1": "H1",
|
|
2096
|
+
"richBlockEditor.toolbar.h2": "H2",
|
|
2097
|
+
"richBlockEditor.toolbar.h3": "H3",
|
|
2098
|
+
"richBlockEditor.toolbar.bulletList": "Bullet list",
|
|
2099
|
+
"richBlockEditor.toolbar.numbered": "Numbered",
|
|
2100
|
+
"richBlockEditor.toolbar.quote": "Quote",
|
|
2101
|
+
"richBlockEditor.toolbar.code": "Code",
|
|
2102
|
+
"richBlockEditor.toolbar.divider": "Divider",
|
|
2103
|
+
"richBlockEditor.toolbar.image": "Image",
|
|
2104
|
+
"richBlockEditor.blockType.paragraph": "Text",
|
|
2105
|
+
"richBlockEditor.blockType.heading1": "Heading 1",
|
|
2106
|
+
"richBlockEditor.blockType.heading2": "Heading 2",
|
|
2107
|
+
"richBlockEditor.blockType.heading3": "Heading 3",
|
|
2108
|
+
"richBlockEditor.blockType.bulletList": "Bullet list",
|
|
2109
|
+
"richBlockEditor.blockType.numberedList": "Numbered list",
|
|
2110
|
+
"richBlockEditor.blockType.quote": "Quote",
|
|
2111
|
+
"richBlockEditor.blockType.code": "Code",
|
|
2112
|
+
"richBlockEditor.blockType.divider": "Divider",
|
|
2113
|
+
"richBlockEditor.blockType.image": "Image",
|
|
2114
|
+
"richBlockEditor.blockActions": "Block actions",
|
|
2115
|
+
"richBlockEditor.duplicate": "Duplicate",
|
|
2116
|
+
"richBlockEditor.turnInto": "Turn into",
|
|
2117
|
+
"richBlockEditor.placeholder.heading1": "Heading 1",
|
|
2118
|
+
"richBlockEditor.placeholder.heading2": "Heading 2",
|
|
2119
|
+
"richBlockEditor.placeholder.heading3": "Heading 3",
|
|
2120
|
+
"richBlockEditor.placeholder.quote": "Quote",
|
|
2121
|
+
"richBlockEditor.placeholder.code": "Enter code",
|
|
2122
|
+
"richBlockEditor.placeholder.paragraph": "Start writing...",
|
|
2123
|
+
"richBlockEditor.placeholder.listItem": "List item",
|
|
2124
|
+
"richBlockEditor.placeholder.caption": "Caption (optional)",
|
|
2125
|
+
"richBlockEditor.aria.heading1Block": "Heading 1 block",
|
|
2126
|
+
"richBlockEditor.aria.heading2Block": "Heading 2 block",
|
|
2127
|
+
"richBlockEditor.aria.heading3Block": "Heading 3 block",
|
|
2128
|
+
"richBlockEditor.aria.quoteBlock": "Quote block",
|
|
2129
|
+
"richBlockEditor.aria.codeBlock": "Code block",
|
|
2130
|
+
"richBlockEditor.aria.codeLanguage": "Code language",
|
|
2131
|
+
"richBlockEditor.aria.imageUrl": "Image URL",
|
|
2132
|
+
"richBlockEditor.aria.imageCaption": "Image caption",
|
|
2133
|
+
"richBlockEditor.aria.listItem": "List item",
|
|
2134
|
+
"richBlockEditor.aria.removeListItem": "Remove list item",
|
|
2135
|
+
"richBlockEditor.aria.paragraphBlock": "Paragraph block",
|
|
2136
|
+
"richBlockEditor.embeddedImage": "Embedded image",
|
|
2137
|
+
"richBlockEditor.noImageUrl": "No image URL set",
|
|
2138
|
+
"richBlockEditor.addItem": "Add item",
|
|
2139
|
+
"richBlockEditor.insertParagraphBelow": "Insert paragraph below",
|
|
2140
|
+
"richBlockEditor.editorToolbar": "Block editor toolbar",
|
|
2141
|
+
"richBlockEditor.insertEntry": "Insert {{label}}",
|
|
2142
|
+
"versionDiff.compare": "Compare",
|
|
2143
|
+
"versionDiff.to": "to",
|
|
2144
|
+
"versionDiff.beforeRevision": "Before revision",
|
|
2145
|
+
"versionDiff.afterRevision": "After revision",
|
|
2146
|
+
"versionDiff.switchToInline": "Switch to inline view",
|
|
2147
|
+
"versionDiff.switchToSideBySide": "Switch to side-by-side view",
|
|
2148
|
+
"versionDiff.revert": "Revert",
|
|
2149
|
+
"versionDiff.byAuthor": " by {{author}}",
|
|
2150
|
+
"violationAlert.actionType.measure": "Corrective Measure",
|
|
2151
|
+
"violationAlert.actionType.admin": "Administrative Action",
|
|
2152
|
+
"violationAlert.actionType.penalty": "Penalty Proceedings",
|
|
2153
|
+
"violationAlert.fallbackMessage": "Violation",
|
|
2154
|
+
"violationAlert.adminLabel": "Admin:",
|
|
2155
|
+
"violationAlert.penaltyLabel": "Penalty:",
|
|
2156
|
+
"violationAlert.goToField": "Go to field",
|
|
2157
|
+
"branchingLogic.title": "Branching logic",
|
|
2158
|
+
"branchingLogic.if": "If",
|
|
2159
|
+
"branchingLogic.goTo": "go to",
|
|
2160
|
+
"branchingLogic.rules": "Rules",
|
|
2161
|
+
"branchingLogic.logicGraph": "Logic graph",
|
|
2162
|
+
"branchingLogic.addRule": "Add rule",
|
|
2163
|
+
"branchingLogic.deleteRule": "Delete rule",
|
|
2164
|
+
"branchingLogic.endOfSurvey": "End of survey",
|
|
2165
|
+
"branchingLogic.brokenReference": "Broken reference",
|
|
2166
|
+
"branchingLogic.selectQuestion": "Select question",
|
|
2167
|
+
"branchingLogic.selectTarget": "Select target",
|
|
2168
|
+
"branchingLogic.selectValue": "Select value",
|
|
2169
|
+
"branchingLogic.addValue": "Add value",
|
|
2170
|
+
"branchingLogic.value": "Value",
|
|
2171
|
+
"branchingLogic.typeValuePressEnter": "Type value, press Enter",
|
|
2172
|
+
"branchingLogic.operatorEquals": "equals",
|
|
2173
|
+
"branchingLogic.operatorNotEquals": "does not equal",
|
|
2174
|
+
"branchingLogic.operatorContains": "contains",
|
|
2175
|
+
"branchingLogic.operatorIn": "is one of",
|
|
2176
|
+
"branchingLogic.graphAriaLabel": "Branching logic graph",
|
|
2177
|
+
"branchingLogic.ruleCountOne": "{{count}} rule",
|
|
2178
|
+
"branchingLogic.ruleCountOther": "{{count}} rules",
|
|
2179
|
+
"branchingLogic.brokenCount": "{{count}} broken",
|
|
2180
|
+
"branchingLogic.emptyNoQuestions": "Add questions before building branching rules.",
|
|
2181
|
+
"branchingLogic.emptyNoRules": "No rules yet. Add a rule to define branching logic.",
|
|
2182
|
+
"filterGroup.filters": "Filters",
|
|
2183
|
+
"filterGroup.all": "All",
|
|
2184
|
+
"filterGroup.clear": "Clear",
|
|
2185
|
+
"filterGroup.clearAll": "Clear all",
|
|
2186
|
+
"filterGroup.from": "From",
|
|
2187
|
+
"filterGroup.to": "To",
|
|
2188
|
+
"filterGroup.allOf": "All {{label}}",
|
|
2189
|
+
"filterGroup.activeCount": "{{count}} active",
|
|
2190
|
+
"debug.guardEvaluationsHint": "Guard evaluations will appear when transitions or ticks with guards execute",
|
|
2191
|
+
"debug.expression": "Expression",
|
|
2192
|
+
"debug.inputs": "Inputs",
|
|
2193
|
+
"debug.trait": "Trait",
|
|
2194
|
+
"debug.filterAll": "All",
|
|
2195
|
+
"debug.filterPassed": "Passed",
|
|
2196
|
+
"debug.filterFailed": "Failed",
|
|
2197
|
+
"debug.traitsInitHint": "Traits will appear when the state machine initializes",
|
|
2198
|
+
"debug.traitsMountHint": "Traits will appear when components using them are mounted",
|
|
2199
|
+
"debug.activeStates": "Active States",
|
|
2200
|
+
"debug.availableEvents": "Available Events",
|
|
2201
|
+
"debug.noTransitionsFromState": "No transitions from current state",
|
|
2202
|
+
"debug.guarded": "guarded",
|
|
2203
|
+
"debug.otherEvents": "Other Events (not available from current state)",
|
|
2204
|
+
"debug.recentTransitions": "Recent Transitions",
|
|
2205
|
+
"debug.transitionsCount": "{{count}} transitions",
|
|
2206
|
+
"debug.states": "States",
|
|
2207
|
+
"debug.transitions": "Transitions",
|
|
2208
|
+
"debug.guards": "Guards",
|
|
2209
|
+
"debug.debugModeHint": "Debug mode may not be enabled",
|
|
2210
|
+
"debug.entitiesSpawnHint": "Entities will appear when spawned",
|
|
2211
|
+
"debug.singleton": "Singleton",
|
|
2212
|
+
"debug.singletonsCount": "Singletons ({{count}})",
|
|
2213
|
+
"debug.runtimeCount": "Runtime ({{count}})",
|
|
2214
|
+
"debug.moreEntities": "+{{count}} more entities",
|
|
2215
|
+
"debug.persistent": "Persistent",
|
|
2216
|
+
"debug.loadedCount": "{{count}} loaded",
|
|
2217
|
+
"debug.notLoaded": "not loaded",
|
|
2218
|
+
"debug.eventsExecuteHint": "Events will appear as traits, ticks, and other systems execute",
|
|
2219
|
+
"debug.allCount": "All ({{count}})",
|
|
2220
|
+
"debug.autoScroll": "Auto-scroll",
|
|
2221
|
+
"debug.transitionsProcessHint": "Transitions will appear as the state machine processes events",
|
|
2222
|
+
"debug.transitionsRecorded": "{{count}} transitions recorded",
|
|
2223
|
+
"debug.guardLabel": "guard:",
|
|
2224
|
+
"debug.effectsCount": "{{count}} effects",
|
|
2225
|
+
"debug.bridgeInitHint": "The ServerBridge has not been initialized. Bridge health will appear once the runtime connects to the server.",
|
|
2226
|
+
"debug.never": "Never",
|
|
2227
|
+
"debug.connected": "Connected",
|
|
2228
|
+
"debug.disconnected": "Disconnected",
|
|
2229
|
+
"debug.lastError": "Last Error",
|
|
2230
|
+
"debug.totalEventsProcessed": "{{count}} total events processed",
|
|
2231
|
+
"debug.server": "server",
|
|
2232
|
+
"debug.clientEffectsCount": "{{count}} clientEffects",
|
|
2233
|
+
"debug.emitLabel": "emit:",
|
|
2234
|
+
"debug.rowsCount": "{{count}} rows",
|
|
2235
|
+
"debug.serverResponse": "server response",
|
|
2236
|
+
"debug.collapseVerificationTimeline": "Collapse verification timeline",
|
|
2237
|
+
"debug.expandVerificationTimeline": "Expand verification timeline",
|
|
2238
|
+
"debug.failCount": "{{count}} fail",
|
|
2239
|
+
"debug.ok": "OK",
|
|
2240
|
+
"debug.localCount": "{{count}} local",
|
|
2241
|
+
"debug.serverCount": "{{count}} server",
|
|
2242
|
+
"debug.waitingForTransitions": "Waiting for transitions...",
|
|
2243
|
+
"debug.tabDispatch": "Dispatch",
|
|
2244
|
+
"debug.tabVerify": "Verify",
|
|
2245
|
+
"debug.tabVerifyAlert": "Verify (!)",
|
|
2246
|
+
"debug.tabTimeline": "Timeline",
|
|
2247
|
+
"debug.tabBridge": "Bridge",
|
|
2248
|
+
"debug.tabTraits": "Traits",
|
|
2249
|
+
"debug.tabTicks": "Ticks",
|
|
2250
|
+
"debug.tabEntities": "Entities",
|
|
2251
|
+
"debug.tabEvents": "Events",
|
|
2252
|
+
"debug.tabGuards": "Guards",
|
|
2253
|
+
"debug.debugger": "Debugger",
|
|
2254
|
+
"debug.failedCount": "{{count}} failed",
|
|
2255
|
+
"debug.traitsCount": "{{count}} traits",
|
|
2256
|
+
"debug.idle": "Idle",
|
|
2257
|
+
"debug.openDebugger": "Open Debugger (`)",
|
|
2258
|
+
"debug.kflowVerifier": "KFlow Verifier",
|
|
2259
|
+
"debug.allPassing": "All passing",
|
|
2260
|
+
"debug.runtime": "Runtime",
|
|
2261
|
+
"debug.close": "Close (`)",
|
|
2262
|
+
"debug.toggleHint": "Press ` to toggle | window.__orbitalVerification for automation",
|
|
2263
|
+
"replyTree.expandReplies": "Expand replies",
|
|
2264
|
+
"replyTree.collapseReplies": "Collapse replies",
|
|
2265
|
+
"replyTree.voteOnReplyBy": "Vote on reply by {{author}}",
|
|
2266
|
+
"replyTree.replyTo": "Reply to {{author}}",
|
|
2267
|
+
"replyTree.replyToPlaceholder": "Reply to {{author}}\u2026",
|
|
2268
|
+
"replyTree.reply": "Reply",
|
|
2269
|
+
"replyTree.flagReplyBy": "Flag reply by {{author}}",
|
|
2270
|
+
"replyTree.flag": "Flag",
|
|
2271
|
+
"replyTree.send": "Send",
|
|
2272
|
+
"replyTree.continueThread": "Continue thread",
|
|
2273
|
+
"replyTree.noRepliesYet": "No replies yet.",
|
|
2274
|
+
"signaturePad.label": "Signature",
|
|
2275
|
+
"signaturePad.helperText": "Draw your signature above",
|
|
2276
|
+
"signaturePad.clear": "Clear",
|
|
2277
|
+
"signaturePad.confirm": "Confirm",
|
|
2278
|
+
"qrScanner.cameraUnavailable": "Camera unavailable",
|
|
2279
|
+
"qrScanner.paused": "Paused",
|
|
2280
|
+
"qrScanner.resumeScanning": "Resume scanning",
|
|
2281
|
+
"qrScanner.pauseScanning": "Pause scanning",
|
|
2282
|
+
"qrScanner.switchToFrontCamera": "Switch to front camera",
|
|
2283
|
+
"qrScanner.switchToRearCamera": "Switch to rear camera",
|
|
2284
|
+
"qrScanner.mockScan": "Mock Scan",
|
|
2285
|
+
"docSearch.placeholder": "Search documentation...",
|
|
2286
|
+
"stateMachine.loading": "Loading state machine\u2026",
|
|
2287
|
+
"stateMachine.noStateMachine": "No state machine to visualize",
|
|
2288
|
+
"avl.trigger": "Trigger",
|
|
2289
|
+
"avl.guard": "Guard",
|
|
2290
|
+
"avl.effects": "Effects",
|
|
2291
|
+
"avl.props": "Props",
|
|
2292
|
+
"avl.entity": "Entity",
|
|
2293
|
+
"avl.traits": "Traits",
|
|
2294
|
+
"avl.transition": "Transition",
|
|
2295
|
+
"avl.onEntity": "on {{entity}}",
|
|
2296
|
+
"avl.linkedTo": "linked to {{entity}}",
|
|
2297
|
+
"avl.pressEscToZoomOut": "Press Esc to zoom out",
|
|
2298
|
+
"avl.zoomIn": "Zoom in",
|
|
2299
|
+
"avl.zoomOut": "Zoom out",
|
|
2300
|
+
"avl.orbitalLabel": "Orbital: {{name}}",
|
|
2301
|
+
"avl.orbitalLabelHighlighted": "Orbital: {{name}} (highlighted)",
|
|
2302
|
+
"avl.noTraitData": "No trait data",
|
|
2303
|
+
"avl.computingLayout": "Computing layout...",
|
|
2304
|
+
"avl.noStateMachine": "No state machine",
|
|
2305
|
+
"avl.listensFor": "listens for {{event}}",
|
|
2306
|
+
"avl.emits": "emits {{event}}",
|
|
2307
|
+
"avl.pageLayout": "Page Layout",
|
|
2308
|
+
"avl.overlaySuffix": "(overlay)",
|
|
2309
|
+
"orbPreview.previewBadge": "Preview",
|
|
2310
|
+
"orbPreview.doubleClickToOpen": "Double-click to open",
|
|
2311
|
+
"orbPreview.dropToAddAndOpen": "Drop to add and open",
|
|
2312
|
+
"orbPreview.dispatching": "Coordinator is dispatching to this orbital",
|
|
2313
|
+
"orbPreview.noPreview": "No preview available",
|
|
2314
|
+
"orbPreview.screensCount": "{{count}} screens",
|
|
2315
|
+
"detailView.noTransitionData": "No transition data",
|
|
2316
|
+
"orbInspector.required": "req",
|
|
2317
|
+
"orbInspector.addField": "Add Field",
|
|
2318
|
+
"orbInspector.serviceMode": "Service Mode",
|
|
2319
|
+
"orbInspector.standalone": "Standalone",
|
|
2320
|
+
"orbInspector.embedded": "Embedded",
|
|
2321
|
+
"orbInspector.rendersOwnUi": "Renders its own UI",
|
|
2322
|
+
"orbInspector.headless": "Headless, wired to other behaviors",
|
|
2323
|
+
"orbInspector.addEffect": "Add Effect",
|
|
2324
|
+
"orbInspector.guardExpression": "Guard expression",
|
|
2325
|
+
"orbInspector.selectPatternForStyles": "Select a pattern to view its style tokens.",
|
|
2326
|
+
"orbInspector.tokens": "Tokens",
|
|
2327
|
+
"orbInspector.noTokenContract": "No token contract declared for this pattern.",
|
|
2328
|
+
"orbInspector.variant": "Variant",
|
|
2329
|
+
"orbInspector.size": "Size",
|
|
2330
|
+
"orbInspector.statesCount": "{{count}} states",
|
|
2331
|
+
"orbInspector.onEntity": " on {{entity}}",
|
|
2332
|
+
"orbInspector.projectThemeTokens": "Project theme tokens",
|
|
2333
|
+
"orbInspector.tokenGroup.colors": "Colors",
|
|
2334
|
+
"orbInspector.tokenGroup.radii": "Radii",
|
|
2335
|
+
"orbInspector.tokenGroup.spacing": "Spacing",
|
|
2336
|
+
"orbInspector.tokenGroup.shadows": "Shadows",
|
|
2337
|
+
"orbInspector.tab.inspector": "Inspector",
|
|
2338
|
+
"orbInspector.tab.styles": "Styles",
|
|
2339
|
+
"orbInspector.tab.code": "Code",
|
|
2340
|
+
"canvas.goBackToOverview": "Go back to overview",
|
|
2341
|
+
"canvas.overview": "Overview",
|
|
2342
|
+
"canvas.expanded": "Expanded",
|
|
2343
|
+
"canvas.modulesCount": "{{count}} modules",
|
|
2344
|
+
"canvas.screensCount": "{{count}} screens",
|
|
2345
|
+
"canvas.switchToView": "Switch to {{label}} view",
|
|
2346
|
+
"lawReference.viewFullText": "View full law text",
|
|
2347
|
+
"statCard.defaultLabel": "Stat",
|
|
2348
|
+
"statCard.vsLastPeriod": "vs last period",
|
|
2349
|
+
"mediaGallery.upload": "Upload",
|
|
2350
|
+
"mediaGallery.noMediaDescription": "No media items to display.",
|
|
2351
|
+
"pagination.jumpPlaceholder": "Page",
|
|
2352
|
+
"table.selectRow": "Select row {{id}}",
|
|
2353
|
+
"card.selectItem": "Select {{item}}",
|
|
2354
|
+
"card.itemFallback": "item",
|
|
2355
|
+
"fileTree.noFiles": "No files",
|
|
2356
|
+
"masterDetail.selectItem": "Select an item to view details",
|
|
2357
|
+
"empty.createFirst": "Create your first item to get started.",
|
|
2358
|
+
"upload.dropOrBrowse": "Drop files here or click to browse",
|
|
2359
|
+
"upload.dropFilesHere": "Drop files here",
|
|
2360
|
+
"upload.accepted": "Accepted: {{accept}}",
|
|
2361
|
+
"upload.maxSize": "Max size: {{size}}",
|
|
2362
|
+
"upload.maxFiles": "Up to {{count}} files",
|
|
2363
|
+
"upload.error.maxFiles": "Maximum {{count}} files allowed",
|
|
2364
|
+
"upload.error.invalidType": "Invalid file type: {{name}}",
|
|
2365
|
+
"upload.error.tooLarge": "File too large: {{name}} (max {{size}})",
|
|
2366
|
+
"optionConstraint.requiredOne": "Required, pick 1",
|
|
2367
|
+
"optionConstraint.optionalOne": "Optional, pick up to 1",
|
|
2368
|
+
"optionConstraint.pickExactly": "Pick exactly {{count}}",
|
|
2369
|
+
"optionConstraint.pickRange": "Pick {{min}}-{{max}}",
|
|
2370
|
+
"optionConstraint.pickAtLeast": "Pick at least {{count}}",
|
|
2371
|
+
"optionConstraint.pickUpTo": "Pick up to {{count}}",
|
|
2372
|
+
"optionConstraint.optional": "Optional",
|
|
2373
|
+
"optionConstraint.outOfStock": "Out of stock",
|
|
2374
|
+
"optionConstraint.error.pickOne": "Pick 1 option",
|
|
2375
|
+
"optionConstraint.error.pickOnlyOne": "Pick only 1 option",
|
|
2376
|
+
"optionConstraint.error.pickMore": "Pick at least {{count}} more",
|
|
2377
|
+
"optionConstraint.error.removeOptions": "Remove {{count}} options",
|
|
2378
|
+
"stateMachine.pinned": "Pinned",
|
|
2379
|
+
"stateMachine.eventCount": "{{count}} events",
|
|
2380
|
+
"stateMachine.externalEffects": "External Effects",
|
|
2381
|
+
"stateMachine.legend.initial": "Initial",
|
|
2382
|
+
"stateMachine.legend.final": "Final",
|
|
2383
|
+
"stateMachine.legend.state": "State",
|
|
2384
|
+
"stateMachine.legend.multiEvent": "Multi-event",
|
|
2385
|
+
"relationSelect.selectPlaceholder": "Select..."
|
|
2092
2386
|
};
|
|
2093
2387
|
}
|
|
2094
2388
|
});
|
|
@@ -5176,6 +5470,7 @@ var init_LawReferenceTooltip = __esm({
|
|
|
5176
5470
|
init_Typography();
|
|
5177
5471
|
init_Divider();
|
|
5178
5472
|
init_cn();
|
|
5473
|
+
init_useTranslate();
|
|
5179
5474
|
positionStyles2 = {
|
|
5180
5475
|
top: "bottom-full left-1/2 -translate-x-1/2 mb-2",
|
|
5181
5476
|
bottom: "top-full left-1/2 -translate-x-1/2 mt-2",
|
|
@@ -5194,6 +5489,7 @@ var init_LawReferenceTooltip = __esm({
|
|
|
5194
5489
|
position = "top",
|
|
5195
5490
|
className
|
|
5196
5491
|
}) => {
|
|
5492
|
+
const { t } = useTranslate();
|
|
5197
5493
|
const [isVisible, setIsVisible] = React85__default.useState(false);
|
|
5198
5494
|
const timeoutRef = React85__default.useRef(null);
|
|
5199
5495
|
const handleMouseEnter = () => {
|
|
@@ -5277,7 +5573,7 @@ var init_LawReferenceTooltip = __esm({
|
|
|
5277
5573
|
target: "_blank",
|
|
5278
5574
|
rel: "noopener noreferrer",
|
|
5279
5575
|
onClick: (e) => e.stopPropagation(),
|
|
5280
|
-
children: "
|
|
5576
|
+
children: t("lawReference.viewFullText")
|
|
5281
5577
|
}
|
|
5282
5578
|
)
|
|
5283
5579
|
] }),
|
|
@@ -13558,6 +13854,7 @@ var log7, SWIM_GUTTER, CENTER_W, BehaviorView;
|
|
|
13558
13854
|
var init_BehaviorView = __esm({
|
|
13559
13855
|
"components/avl/molecules/BehaviorView.tsx"() {
|
|
13560
13856
|
"use client";
|
|
13857
|
+
init_useTranslate();
|
|
13561
13858
|
init_AvlState();
|
|
13562
13859
|
init_AvlTransitionLane();
|
|
13563
13860
|
init_AvlSwimLane();
|
|
@@ -13567,6 +13864,7 @@ var init_BehaviorView = __esm({
|
|
|
13567
13864
|
SWIM_GUTTER = 120;
|
|
13568
13865
|
CENTER_W = 360;
|
|
13569
13866
|
BehaviorView = ({ data }) => {
|
|
13867
|
+
const { t } = useTranslate();
|
|
13570
13868
|
const [layout, setLayout] = useState(null);
|
|
13571
13869
|
const traitName = data.traits[0]?.name;
|
|
13572
13870
|
const traitData = traitName ? data.traitDetails[traitName] : void 0;
|
|
@@ -13576,10 +13874,10 @@ var init_BehaviorView = __esm({
|
|
|
13576
13874
|
computeTraitLayout(traitData).then(setLayout).catch((err) => log7.error("compute-trait-layout-failed", { error: err instanceof Error ? err : String(err) }));
|
|
13577
13875
|
}, [dataKey]);
|
|
13578
13876
|
if (!traitData) {
|
|
13579
|
-
return /* @__PURE__ */ 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: "
|
|
13877
|
+
return /* @__PURE__ */ 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") });
|
|
13580
13878
|
}
|
|
13581
13879
|
if (!layout) {
|
|
13582
|
-
return /* @__PURE__ */ 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: "
|
|
13880
|
+
return /* @__PURE__ */ 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") });
|
|
13583
13881
|
}
|
|
13584
13882
|
const hasExternal = traitData.listenedEvents.length > 0 || traitData.emittedEvents.length > 0;
|
|
13585
13883
|
const viewW = hasExternal ? SWIM_GUTTER + CENTER_W + SWIM_GUTTER : CENTER_W + 60;
|
|
@@ -13595,10 +13893,7 @@ var init_BehaviorView = __esm({
|
|
|
13595
13893
|
const machineHeight = scaledH + 100;
|
|
13596
13894
|
const renderMachine = /* @__PURE__ */ jsxs("g", { children: [
|
|
13597
13895
|
/* @__PURE__ */ jsx("text", { x: CENTER_W / 2, y: 20, textAnchor: "middle", fill: "var(--color-foreground)", fontSize: 18, fontWeight: "700", fontFamily: "inherit", children: traitData.name }),
|
|
13598
|
-
/* @__PURE__ */
|
|
13599
|
-
"on ",
|
|
13600
|
-
traitData.linkedEntity
|
|
13601
|
-
] }),
|
|
13896
|
+
/* @__PURE__ */ 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 }) }),
|
|
13602
13897
|
/* @__PURE__ */ jsxs("defs", { children: [
|
|
13603
13898
|
/* @__PURE__ */ jsx("marker", { id: "bvArrow", viewBox: "0 0 10 10", refX: "9", refY: "5", markerWidth: "6", markerHeight: "6", orient: "auto-start-reverse", children: /* @__PURE__ */ jsx("path", { d: "M 0 0 L 10 5 L 0 10 z", fill: CONNECTION_COLORS.forward.color, opacity: 0.7 }) }),
|
|
13604
13899
|
/* @__PURE__ */ jsx("marker", { id: "bvArrowBack", viewBox: "0 0 10 10", refX: "9", refY: "5", markerWidth: "6", markerHeight: "6", orient: "auto-start-reverse", children: /* @__PURE__ */ jsx("path", { d: "M 0 0 L 10 5 L 0 10 z", fill: CONNECTION_COLORS.backward.color, opacity: 0.5 }) })
|
|
@@ -13906,7 +14201,7 @@ var init_CodeBlock = __esm({
|
|
|
13906
14201
|
const isLolo = language === "lolo";
|
|
13907
14202
|
const activeStyle = isOrb ? orbStyle : isLolo ? loloStyle : dark;
|
|
13908
14203
|
const eventBus = useEventBus();
|
|
13909
|
-
const { t
|
|
14204
|
+
const { t } = useTranslate();
|
|
13910
14205
|
const scrollRef = useRef(null);
|
|
13911
14206
|
const codeRef = useRef(null);
|
|
13912
14207
|
const savedScrollLeftRef = useRef(0);
|
|
@@ -14161,7 +14456,7 @@ var init_CodeBlock = __esm({
|
|
|
14161
14456
|
size: "sm",
|
|
14162
14457
|
onClick: handleCopy,
|
|
14163
14458
|
className: "opacity-0 group-hover:opacity-100 focus:opacity-100 transition-opacity text-muted-foreground hover:text-white",
|
|
14164
|
-
"aria-label": "
|
|
14459
|
+
"aria-label": t("common.copy"),
|
|
14165
14460
|
children: copied ? /* @__PURE__ */ jsx(Icon, { name: "check", className: "w-4 h-4 text-green-400" }) : /* @__PURE__ */ jsx(Icon, { name: "copy", className: "w-4 h-4" })
|
|
14166
14461
|
}
|
|
14167
14462
|
)
|
|
@@ -14816,7 +15111,7 @@ var init_StateMachineView = __esm({
|
|
|
14816
15111
|
const endX2 = fromState.x + Math.cos(Math.PI / 2 * loopDirection + endAngle) * fromState.radius;
|
|
14817
15112
|
const endY2 = fromState.y + Math.sin(Math.PI / 2 * loopDirection + endAngle) * fromState.radius;
|
|
14818
15113
|
const isSingle2 = bundle.labels.length === 1;
|
|
14819
|
-
const labelText2 = isSingle2 ? bundle.labels[0].event :
|
|
15114
|
+
const labelText2 = isSingle2 ? bundle.labels[0].event : t("stateMachine.eventCount", { count: bundle.labels.length });
|
|
14820
15115
|
const bundleColor2 = isSingle2 ? config.colors.arrow : "var(--color-accent)";
|
|
14821
15116
|
const labelWidth2 = labelText2.length * 9 + (isSingle2 ? 24 : 40);
|
|
14822
15117
|
const cx = fromState.x;
|
|
@@ -14942,7 +15237,7 @@ var init_StateMachineView = __esm({
|
|
|
14942
15237
|
const controlX = midX + perpX;
|
|
14943
15238
|
const controlY = midY + perpY;
|
|
14944
15239
|
const isSingle = bundle.labels.length === 1;
|
|
14945
|
-
const labelText = isSingle ? bundle.labels[0].event :
|
|
15240
|
+
const labelText = isSingle ? bundle.labels[0].event : t("stateMachine.eventCount", { count: bundle.labels.length });
|
|
14946
15241
|
const labelWidth = labelText.length * 9 + (isSingle ? 24 : 40);
|
|
14947
15242
|
const bundleColor = isSingle ? config.colors.arrow : "var(--color-accent)";
|
|
14948
15243
|
const curveMidpoint = {
|
|
@@ -15097,7 +15392,7 @@ var init_StateMachineView = __esm({
|
|
|
15097
15392
|
{
|
|
15098
15393
|
className: "absolute -top-2 left-1/2 transform -translate-x-1/2 px-2 py-0.5 rounded-full",
|
|
15099
15394
|
style: { backgroundColor: "var(--color-success)" },
|
|
15100
|
-
children: /* @__PURE__ */ jsx(Typography, { variant: "caption", weight: "semibold", style: { color: "var(--color-success-foreground)" }, children: "
|
|
15395
|
+
children: /* @__PURE__ */ jsx(Typography, { variant: "caption", weight: "semibold", style: { color: "var(--color-success-foreground)" }, children: t("stateMachine.pinned") })
|
|
15101
15396
|
}
|
|
15102
15397
|
),
|
|
15103
15398
|
!isSingle && /* @__PURE__ */ jsxs(
|
|
@@ -15119,10 +15414,7 @@ var init_StateMachineView = __esm({
|
|
|
15119
15414
|
{
|
|
15120
15415
|
className: "ml-2 px-2 py-0.5 rounded-full",
|
|
15121
15416
|
style: { backgroundColor: "var(--color-accent)" },
|
|
15122
|
-
children: /* @__PURE__ */
|
|
15123
|
-
bundle.labels.length,
|
|
15124
|
-
" events"
|
|
15125
|
-
] })
|
|
15417
|
+
children: /* @__PURE__ */ jsx(Typography, { variant: "caption", style: { color: "var(--color-accent-foreground)" }, children: t("stateMachine.eventCount", { count: bundle.labels.length }) })
|
|
15126
15418
|
}
|
|
15127
15419
|
)
|
|
15128
15420
|
]
|
|
@@ -15267,7 +15559,7 @@ var init_StateMachineView = __esm({
|
|
|
15267
15559
|
align: "center",
|
|
15268
15560
|
className: "mb-2",
|
|
15269
15561
|
style: { color: "var(--color-warning)", fontSize: "13px" },
|
|
15270
|
-
children: "
|
|
15562
|
+
children: t("stateMachine.externalEffects")
|
|
15271
15563
|
}
|
|
15272
15564
|
),
|
|
15273
15565
|
outputs.outputs.map((output, idx) => /* @__PURE__ */ jsx(
|
|
@@ -15287,10 +15579,10 @@ var init_StateMachineView = __esm({
|
|
|
15287
15579
|
Legend = ({ config, y }) => {
|
|
15288
15580
|
const { t } = useTranslate();
|
|
15289
15581
|
const items = [
|
|
15290
|
-
{ label: "
|
|
15291
|
-
{ label: "
|
|
15292
|
-
{ label: "
|
|
15293
|
-
{ label: "
|
|
15582
|
+
{ key: "initial", label: t("stateMachine.legend.initial"), color: config.colors.initialNode, isMultiEvent: false },
|
|
15583
|
+
{ key: "final", label: t("stateMachine.legend.final"), color: config.colors.finalNode, isMultiEvent: false },
|
|
15584
|
+
{ key: "state", label: t("stateMachine.legend.state"), color: config.colors.nodeBorder, isMultiEvent: false },
|
|
15585
|
+
{ key: "multiEvent", label: t("stateMachine.legend.multiEvent"), color: "var(--color-accent)", isMultiEvent: true }
|
|
15294
15586
|
];
|
|
15295
15587
|
return /* @__PURE__ */ jsx(
|
|
15296
15588
|
HStack,
|
|
@@ -15305,8 +15597,8 @@ var init_StateMachineView = __esm({
|
|
|
15305
15597
|
{
|
|
15306
15598
|
className: "w-3 h-3 rounded-full",
|
|
15307
15599
|
style: {
|
|
15308
|
-
backgroundColor: item.
|
|
15309
|
-
border: item.
|
|
15600
|
+
backgroundColor: item.isMultiEvent ? item.color : config.colors.node,
|
|
15601
|
+
border: !item.isMultiEvent ? `2px solid ${item.color}` : "none"
|
|
15310
15602
|
}
|
|
15311
15603
|
}
|
|
15312
15604
|
),
|
|
@@ -15318,7 +15610,7 @@ var init_StateMachineView = __esm({
|
|
|
15318
15610
|
children: item.label
|
|
15319
15611
|
}
|
|
15320
15612
|
)
|
|
15321
|
-
] }, item.
|
|
15613
|
+
] }, item.key))
|
|
15322
15614
|
}
|
|
15323
15615
|
);
|
|
15324
15616
|
};
|
|
@@ -16112,13 +16404,13 @@ var init_JazariStateMachine = __esm({
|
|
|
16112
16404
|
);
|
|
16113
16405
|
}, [resolvedTrait, entityFields]);
|
|
16114
16406
|
if (isLoading) {
|
|
16115
|
-
return /* @__PURE__ */ jsx(LoadingState, { message: "
|
|
16407
|
+
return /* @__PURE__ */ jsx(LoadingState, { message: t("stateMachine.loading") });
|
|
16116
16408
|
}
|
|
16117
16409
|
if (error) {
|
|
16118
16410
|
return /* @__PURE__ */ jsx(ErrorState, { message: error instanceof Error ? error.message : String(error) });
|
|
16119
16411
|
}
|
|
16120
16412
|
if (!resolvedTrait || !layoutData || layoutData.states.length === 0) {
|
|
16121
|
-
return /* @__PURE__ */ jsx(Box, { padding: "lg", className: cn("text-center", className), children: /* @__PURE__ */ jsx(Typography, { variant: "body", className: "opacity-60", children: "
|
|
16413
|
+
return /* @__PURE__ */ jsx(Box, { padding: "lg", className: cn("text-center", className), children: /* @__PURE__ */ jsx(Typography, { variant: "body", className: "opacity-60", children: t("stateMachine.noStateMachine") }) });
|
|
16122
16414
|
}
|
|
16123
16415
|
return /* @__PURE__ */ jsx(
|
|
16124
16416
|
StateMachineView,
|
|
@@ -17162,13 +17454,13 @@ var init_LayoutPatterns = __esm({
|
|
|
17162
17454
|
function generateRuleId() {
|
|
17163
17455
|
return `rule-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
17164
17456
|
}
|
|
17165
|
-
function questionsToOptions(questions,
|
|
17457
|
+
function questionsToOptions(questions, endOfSurveyLabel) {
|
|
17166
17458
|
const opts = questions.map((q) => ({
|
|
17167
17459
|
value: q.id,
|
|
17168
17460
|
label: q.label
|
|
17169
17461
|
}));
|
|
17170
|
-
if (
|
|
17171
|
-
opts.push({ value: END_OF_SURVEY, label:
|
|
17462
|
+
if (endOfSurveyLabel !== null) {
|
|
17463
|
+
opts.push({ value: END_OF_SURVEY, label: endOfSurveyLabel });
|
|
17172
17464
|
}
|
|
17173
17465
|
return opts;
|
|
17174
17466
|
}
|
|
@@ -17177,7 +17469,7 @@ function isRuleBroken(rule, questions) {
|
|
|
17177
17469
|
const targetExists = rule.targetQuestionId === END_OF_SURVEY || questions.some((q) => q.id === rule.targetQuestionId);
|
|
17178
17470
|
return !sourceExists || !targetExists;
|
|
17179
17471
|
}
|
|
17180
|
-
var END_OF_SURVEY,
|
|
17472
|
+
var END_OF_SURVEY, RuleRow, NODE_WIDTH, NODE_HEIGHT, NODE_GAP_Y, PADDING, LogicGraph, BranchingLogicBuilder;
|
|
17181
17473
|
var init_BranchingLogicBuilder = __esm({
|
|
17182
17474
|
"components/core/molecules/BranchingLogicBuilder.tsx"() {
|
|
17183
17475
|
"use client";
|
|
@@ -17190,14 +17482,9 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17190
17482
|
init_FilterPill();
|
|
17191
17483
|
init_Box();
|
|
17192
17484
|
init_useEventBus();
|
|
17485
|
+
init_useTranslate();
|
|
17193
17486
|
init_cn();
|
|
17194
17487
|
END_OF_SURVEY = "end-of-survey";
|
|
17195
|
-
OPERATOR_OPTIONS = [
|
|
17196
|
-
{ value: "equals", label: "equals" },
|
|
17197
|
-
{ value: "not-equals", label: "does not equal" },
|
|
17198
|
-
{ value: "contains", label: "contains" },
|
|
17199
|
-
{ value: "in", label: "is one of" }
|
|
17200
|
-
];
|
|
17201
17488
|
RuleRow = ({
|
|
17202
17489
|
rule,
|
|
17203
17490
|
questions,
|
|
@@ -17206,8 +17493,21 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17206
17493
|
onChange,
|
|
17207
17494
|
onDelete
|
|
17208
17495
|
}) => {
|
|
17209
|
-
const
|
|
17210
|
-
const
|
|
17496
|
+
const { t } = useTranslate();
|
|
17497
|
+
const operatorOptions = useMemo(
|
|
17498
|
+
() => [
|
|
17499
|
+
{ value: "equals", label: t("branchingLogic.operatorEquals") },
|
|
17500
|
+
{ value: "not-equals", label: t("branchingLogic.operatorNotEquals") },
|
|
17501
|
+
{ value: "contains", label: t("branchingLogic.operatorContains") },
|
|
17502
|
+
{ value: "in", label: t("branchingLogic.operatorIn") }
|
|
17503
|
+
],
|
|
17504
|
+
[t]
|
|
17505
|
+
);
|
|
17506
|
+
const sourceOptions = useMemo(() => questionsToOptions(questions, null), [questions]);
|
|
17507
|
+
const targetOptions = useMemo(
|
|
17508
|
+
() => questionsToOptions(questions, t("branchingLogic.endOfSurvey")),
|
|
17509
|
+
[questions, t]
|
|
17510
|
+
);
|
|
17211
17511
|
const sourceQuestion = questions.find((q) => q.id === rule.sourceQuestionId);
|
|
17212
17512
|
const valueOptions = useMemo(() => {
|
|
17213
17513
|
if (!sourceQuestion?.optionValues) return [];
|
|
@@ -17252,22 +17552,22 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17252
17552
|
),
|
|
17253
17553
|
children: [
|
|
17254
17554
|
/* @__PURE__ */ jsxs(Box, { className: "flex flex-wrap items-center gap-2", children: [
|
|
17255
|
-
/* @__PURE__ */ jsx(Typography, { variant: "label", weight: "semibold", className: "shrink-0", children: "
|
|
17555
|
+
/* @__PURE__ */ jsx(Typography, { variant: "label", weight: "semibold", className: "shrink-0", children: t("branchingLogic.if") }),
|
|
17256
17556
|
/* @__PURE__ */ jsx(Box, { className: "min-w-[10rem] grow basis-40", children: /* @__PURE__ */ jsx(
|
|
17257
17557
|
Select,
|
|
17258
17558
|
{
|
|
17259
17559
|
options: sourceOptions,
|
|
17260
17560
|
value: rule.sourceQuestionId,
|
|
17261
|
-
placeholder: "
|
|
17561
|
+
placeholder: t("branchingLogic.selectQuestion"),
|
|
17262
17562
|
onChange: handleSource,
|
|
17263
17563
|
disabled: readOnly,
|
|
17264
|
-
error: broken ? "
|
|
17564
|
+
error: broken ? t("branchingLogic.brokenReference") : void 0
|
|
17265
17565
|
}
|
|
17266
17566
|
) }),
|
|
17267
17567
|
/* @__PURE__ */ jsx(Box, { className: "min-w-[8rem] basis-32", children: /* @__PURE__ */ jsx(
|
|
17268
17568
|
Select,
|
|
17269
17569
|
{
|
|
17270
|
-
options:
|
|
17570
|
+
options: operatorOptions,
|
|
17271
17571
|
value: rule.operator,
|
|
17272
17572
|
onChange: handleOperator,
|
|
17273
17573
|
disabled: readOnly
|
|
@@ -17290,7 +17590,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17290
17590
|
{
|
|
17291
17591
|
options: valueOptions.filter((o) => !chips.includes(o.value)),
|
|
17292
17592
|
value: "",
|
|
17293
|
-
placeholder: "
|
|
17593
|
+
placeholder: t("branchingLogic.addValue"),
|
|
17294
17594
|
onChange: handleAddChip,
|
|
17295
17595
|
disabled: readOnly
|
|
17296
17596
|
}
|
|
@@ -17298,7 +17598,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17298
17598
|
Input,
|
|
17299
17599
|
{
|
|
17300
17600
|
inputType: "text",
|
|
17301
|
-
placeholder: "
|
|
17601
|
+
placeholder: t("branchingLogic.typeValuePressEnter"),
|
|
17302
17602
|
value: "",
|
|
17303
17603
|
onKeyDown: (e) => {
|
|
17304
17604
|
if (e.key !== "Enter") return;
|
|
@@ -17316,7 +17616,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17316
17616
|
{
|
|
17317
17617
|
options: valueOptions,
|
|
17318
17618
|
value: scalarValue,
|
|
17319
|
-
placeholder: "
|
|
17619
|
+
placeholder: t("branchingLogic.selectValue"),
|
|
17320
17620
|
onChange: (e) => onChange({ ...rule, value: e.target.value }),
|
|
17321
17621
|
disabled: readOnly
|
|
17322
17622
|
}
|
|
@@ -17324,7 +17624,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17324
17624
|
Input,
|
|
17325
17625
|
{
|
|
17326
17626
|
inputType: "text",
|
|
17327
|
-
placeholder: "
|
|
17627
|
+
placeholder: t("branchingLogic.value"),
|
|
17328
17628
|
value: scalarValue,
|
|
17329
17629
|
onChange: handleScalarValue,
|
|
17330
17630
|
disabled: readOnly
|
|
@@ -17332,17 +17632,17 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17332
17632
|
) }),
|
|
17333
17633
|
/* @__PURE__ */ jsxs(Typography, { variant: "label", weight: "semibold", className: "shrink-0 inline-flex items-center gap-1", children: [
|
|
17334
17634
|
/* @__PURE__ */ jsx(ArrowRight, { className: "h-4 w-4" }),
|
|
17335
|
-
"
|
|
17635
|
+
t("branchingLogic.goTo")
|
|
17336
17636
|
] }),
|
|
17337
17637
|
/* @__PURE__ */ jsx(Box, { className: "min-w-[10rem] grow basis-40", children: /* @__PURE__ */ jsx(
|
|
17338
17638
|
Select,
|
|
17339
17639
|
{
|
|
17340
17640
|
options: targetOptions,
|
|
17341
17641
|
value: rule.targetQuestionId,
|
|
17342
|
-
placeholder: "
|
|
17642
|
+
placeholder: t("branchingLogic.selectTarget"),
|
|
17343
17643
|
onChange: handleTarget,
|
|
17344
17644
|
disabled: readOnly,
|
|
17345
|
-
error: broken && rule.targetQuestionId !== END_OF_SURVEY ? "
|
|
17645
|
+
error: broken && rule.targetQuestionId !== END_OF_SURVEY ? t("branchingLogic.brokenReference") : void 0
|
|
17346
17646
|
}
|
|
17347
17647
|
) }),
|
|
17348
17648
|
!readOnly && /* @__PURE__ */ jsx(
|
|
@@ -17354,11 +17654,11 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17354
17654
|
action: "DELETE_RULE",
|
|
17355
17655
|
actionPayload: { ruleId: rule.id },
|
|
17356
17656
|
onClick: onDelete,
|
|
17357
|
-
"aria-label": "
|
|
17657
|
+
"aria-label": t("branchingLogic.deleteRule")
|
|
17358
17658
|
}
|
|
17359
17659
|
)
|
|
17360
17660
|
] }),
|
|
17361
|
-
broken && /* @__PURE__ */ jsx(Badge, { variant: "error", size: "sm", label: "
|
|
17661
|
+
broken && /* @__PURE__ */ jsx(Badge, { variant: "error", size: "sm", label: t("branchingLogic.brokenReference") })
|
|
17362
17662
|
]
|
|
17363
17663
|
}
|
|
17364
17664
|
);
|
|
@@ -17368,10 +17668,12 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17368
17668
|
NODE_GAP_Y = 80;
|
|
17369
17669
|
PADDING = 32;
|
|
17370
17670
|
LogicGraph = ({ questions, rules }) => {
|
|
17671
|
+
const { t } = useTranslate();
|
|
17672
|
+
const endOfSurveyLabel = t("branchingLogic.endOfSurvey");
|
|
17371
17673
|
const layout = useMemo(() => {
|
|
17372
17674
|
const items = [
|
|
17373
17675
|
...questions.map((q) => ({ id: q.id, label: q.label, isEnd: false })),
|
|
17374
|
-
{ id: END_OF_SURVEY, label:
|
|
17676
|
+
{ id: END_OF_SURVEY, label: endOfSurveyLabel, isEnd: true }
|
|
17375
17677
|
];
|
|
17376
17678
|
const positions = {};
|
|
17377
17679
|
items.forEach((item, i) => {
|
|
@@ -17383,14 +17685,14 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17383
17685
|
const width = NODE_WIDTH + PADDING * 2 + 220;
|
|
17384
17686
|
const height = PADDING * 2 + items.length * (NODE_HEIGHT + NODE_GAP_Y);
|
|
17385
17687
|
return { items, positions, width, height };
|
|
17386
|
-
}, [questions]);
|
|
17688
|
+
}, [questions, endOfSurveyLabel]);
|
|
17387
17689
|
return /* @__PURE__ */ jsx(Box, { className: "overflow-auto rounded-container border border-border bg-card p-2", children: /* @__PURE__ */ jsxs(
|
|
17388
17690
|
"svg",
|
|
17389
17691
|
{
|
|
17390
17692
|
width: layout.width,
|
|
17391
17693
|
height: layout.height,
|
|
17392
17694
|
role: "img",
|
|
17393
|
-
"aria-label": "
|
|
17695
|
+
"aria-label": t("branchingLogic.graphAriaLabel"),
|
|
17394
17696
|
style: { display: "block" },
|
|
17395
17697
|
children: [
|
|
17396
17698
|
/* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsx(
|
|
@@ -17498,6 +17800,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17498
17800
|
readOnly = false,
|
|
17499
17801
|
className
|
|
17500
17802
|
}) => {
|
|
17803
|
+
const { t } = useTranslate();
|
|
17501
17804
|
const eventBus = useEventBus();
|
|
17502
17805
|
const questions = Array.isArray(questionsProp) ? questionsProp : [];
|
|
17503
17806
|
const rulesInitial = Array.isArray(rulesProp) ? rulesProp : [];
|
|
@@ -17550,16 +17853,23 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17550
17853
|
/* @__PURE__ */ jsxs(Box, { className: "flex flex-wrap items-center justify-between gap-2", children: [
|
|
17551
17854
|
/* @__PURE__ */ jsxs(Box, { className: "flex items-center gap-2", children: [
|
|
17552
17855
|
/* @__PURE__ */ jsx(GitBranch, { className: "h-5 w-5 text-foreground" }),
|
|
17553
|
-
/* @__PURE__ */ jsx(Typography, { variant: "subheading", weight: "semibold", children: "
|
|
17856
|
+
/* @__PURE__ */ jsx(Typography, { variant: "subheading", weight: "semibold", children: t("branchingLogic.title") }),
|
|
17554
17857
|
/* @__PURE__ */ jsx(
|
|
17555
17858
|
Badge,
|
|
17556
17859
|
{
|
|
17557
17860
|
variant: "neutral",
|
|
17558
17861
|
size: "sm",
|
|
17559
|
-
label:
|
|
17862
|
+
label: rules.length === 1 ? t("branchingLogic.ruleCountOne", { count: rules.length }) : t("branchingLogic.ruleCountOther", { count: rules.length })
|
|
17560
17863
|
}
|
|
17561
17864
|
),
|
|
17562
|
-
brokenCount > 0 && /* @__PURE__ */ jsx(
|
|
17865
|
+
brokenCount > 0 && /* @__PURE__ */ jsx(
|
|
17866
|
+
Badge,
|
|
17867
|
+
{
|
|
17868
|
+
variant: "error",
|
|
17869
|
+
size: "sm",
|
|
17870
|
+
label: t("branchingLogic.brokenCount", { count: brokenCount })
|
|
17871
|
+
}
|
|
17872
|
+
)
|
|
17563
17873
|
] }),
|
|
17564
17874
|
/* @__PURE__ */ jsxs(Box, { className: "flex items-center gap-1 rounded-sm border border-border bg-card p-0.5", children: [
|
|
17565
17875
|
/* @__PURE__ */ jsx(
|
|
@@ -17570,7 +17880,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17570
17880
|
leftIcon: Pencil,
|
|
17571
17881
|
action: "VIEW_EDIT",
|
|
17572
17882
|
onClick: () => setView("edit"),
|
|
17573
|
-
children: "
|
|
17883
|
+
children: t("branchingLogic.rules")
|
|
17574
17884
|
}
|
|
17575
17885
|
),
|
|
17576
17886
|
/* @__PURE__ */ jsx(
|
|
@@ -17581,13 +17891,13 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17581
17891
|
leftIcon: Eye,
|
|
17582
17892
|
action: "VIEW_GRAPH",
|
|
17583
17893
|
onClick: () => setView("graph"),
|
|
17584
|
-
children: "
|
|
17894
|
+
children: t("branchingLogic.logicGraph")
|
|
17585
17895
|
}
|
|
17586
17896
|
)
|
|
17587
17897
|
] })
|
|
17588
17898
|
] }),
|
|
17589
17899
|
view === "edit" ? /* @__PURE__ */ jsxs(Box, { className: "flex flex-col gap-2", children: [
|
|
17590
|
-
rules.length === 0 ? /* @__PURE__ */ jsx(Card, { variant: "bordered", padding: "lg", className: "text-center", children: /* @__PURE__ */ jsx(Typography, { variant: "body", color: "muted", children: noQuestions ? "
|
|
17900
|
+
rules.length === 0 ? /* @__PURE__ */ jsx(Card, { variant: "bordered", padding: "lg", className: "text-center", children: /* @__PURE__ */ jsx(Typography, { variant: "body", color: "muted", children: noQuestions ? t("branchingLogic.emptyNoQuestions") : t("branchingLogic.emptyNoRules") }) }) : rules.map((rule) => /* @__PURE__ */ jsx(
|
|
17591
17901
|
RuleRow,
|
|
17592
17902
|
{
|
|
17593
17903
|
rule,
|
|
@@ -17608,7 +17918,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17608
17918
|
action: "ADD_RULE",
|
|
17609
17919
|
onClick: handleAddRule,
|
|
17610
17920
|
disabled: noQuestions,
|
|
17611
|
-
children: "
|
|
17921
|
+
children: t("branchingLogic.addRule")
|
|
17612
17922
|
}
|
|
17613
17923
|
) })
|
|
17614
17924
|
] }) : /* @__PURE__ */ jsx(LogicGraph, { questions, rules })
|
|
@@ -18235,7 +18545,7 @@ function CalendarGrid({
|
|
|
18235
18545
|
onClick: stepPrev,
|
|
18236
18546
|
"aria-disabled": !canPrev || void 0,
|
|
18237
18547
|
"aria-label": t("aria.previousDays"),
|
|
18238
|
-
children: "
|
|
18548
|
+
children: t("nav.previous")
|
|
18239
18549
|
}
|
|
18240
18550
|
),
|
|
18241
18551
|
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-muted-foreground", children: formatDateRange(visibleDays[0], visibleDays[visibleDays.length - 1]) }),
|
|
@@ -18248,7 +18558,7 @@ function CalendarGrid({
|
|
|
18248
18558
|
onClick: stepNext,
|
|
18249
18559
|
"aria-disabled": !canNext || void 0,
|
|
18250
18560
|
"aria-label": t("aria.nextDays"),
|
|
18251
|
-
children: "
|
|
18561
|
+
children: t("nav.next")
|
|
18252
18562
|
}
|
|
18253
18563
|
)
|
|
18254
18564
|
] }),
|
|
@@ -19798,7 +20108,7 @@ var init_Pagination = __esm({
|
|
|
19798
20108
|
type: "number",
|
|
19799
20109
|
value: jumpToPage,
|
|
19800
20110
|
onChange: (e) => setJumpToPage(e.target.value),
|
|
19801
|
-
placeholder: "
|
|
20111
|
+
placeholder: t("pagination.jumpPlaceholder"),
|
|
19802
20112
|
className: "w-20",
|
|
19803
20113
|
onKeyDown: (e) => {
|
|
19804
20114
|
if (e.key === "Enter") {
|
|
@@ -19936,13 +20246,10 @@ var init_CardGrid = __esm({
|
|
|
19936
20246
|
return children;
|
|
19937
20247
|
}
|
|
19938
20248
|
if (isLoading) {
|
|
19939
|
-
return /* @__PURE__ */ jsx(Box, { className: "col-span-full text-center py-8 text-muted-foreground", children: /* @__PURE__ */ jsx(Typography, { variant: "body", color: "secondary", children: "
|
|
20249
|
+
return /* @__PURE__ */ jsx(Box, { className: "col-span-full text-center py-8 text-muted-foreground", children: /* @__PURE__ */ jsx(Typography, { variant: "body", color: "secondary", children: t("loading.items") }) });
|
|
19940
20250
|
}
|
|
19941
20251
|
if (error) {
|
|
19942
|
-
return /* @__PURE__ */ jsx(Box, { className: "col-span-full text-center py-8 text-error", children: /* @__PURE__ */
|
|
19943
|
-
"Error loading items: ",
|
|
19944
|
-
error.message
|
|
19945
|
-
] }) });
|
|
20252
|
+
return /* @__PURE__ */ jsx(Box, { className: "col-span-full text-center py-8 text-error", children: /* @__PURE__ */ jsx(Typography, { variant: "body", color: "error", children: t("error.loadFailed", { message: error.message }) }) });
|
|
19946
20253
|
}
|
|
19947
20254
|
if (normalizedData.length === 0) {
|
|
19948
20255
|
return /* @__PURE__ */ jsx(Box, { className: "col-span-full text-center py-12 text-muted-foreground", children: /* @__PURE__ */ jsx(Typography, { variant: "body", color: "secondary", children: t("empty.noItems") || "No items found" }) });
|
|
@@ -23808,7 +24115,7 @@ function DataGrid({
|
|
|
23808
24115
|
onChange: () => toggleSelection(id),
|
|
23809
24116
|
onClick: (e) => e.stopPropagation(),
|
|
23810
24117
|
className: "w-4 h-4 mt-1 flex-shrink-0 accent-primary",
|
|
23811
|
-
"aria-label":
|
|
24118
|
+
"aria-label": t("card.selectItem", { item: titleValue !== void 0 ? String(titleValue) : t("card.itemFallback") })
|
|
23812
24119
|
}
|
|
23813
24120
|
),
|
|
23814
24121
|
/* @__PURE__ */ jsxs(VStack, { gap: "xs", className: "flex-1 min-w-0", children: [
|
|
@@ -24006,7 +24313,7 @@ function formatDate3(value) {
|
|
|
24006
24313
|
if (isNaN(d.getTime())) return String(value);
|
|
24007
24314
|
return d.toLocaleDateString(void 0, { year: "numeric", month: "short", day: "numeric" });
|
|
24008
24315
|
}
|
|
24009
|
-
function formatValue2(value, format) {
|
|
24316
|
+
function formatValue2(value, format, boolLabels) {
|
|
24010
24317
|
if (value === void 0 || value === null) return "";
|
|
24011
24318
|
switch (format) {
|
|
24012
24319
|
case "date":
|
|
@@ -24018,7 +24325,7 @@ function formatValue2(value, format) {
|
|
|
24018
24325
|
case "percent":
|
|
24019
24326
|
return typeof value === "number" ? `${Math.round(value)}%` : String(value);
|
|
24020
24327
|
case "boolean":
|
|
24021
|
-
return value ? "Yes" : "No";
|
|
24328
|
+
return value ? boolLabels?.yes ?? "Yes" : boolLabels?.no ?? "No";
|
|
24022
24329
|
default:
|
|
24023
24330
|
return String(value);
|
|
24024
24331
|
}
|
|
@@ -24314,7 +24621,7 @@ function DataList({
|
|
|
24314
24621
|
field.label ?? fieldLabel3(field.name),
|
|
24315
24622
|
":"
|
|
24316
24623
|
] }),
|
|
24317
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", children: formatValue2(value, field.format) })
|
|
24624
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", children: formatValue2(value, field.format, { yes: t("common.yes"), no: t("common.no") }) })
|
|
24318
24625
|
] }, field.name);
|
|
24319
24626
|
}) }),
|
|
24320
24627
|
progressFields.map((field) => {
|
|
@@ -24444,6 +24751,7 @@ var init_FileTree = __esm({
|
|
|
24444
24751
|
init_Box();
|
|
24445
24752
|
init_Typography();
|
|
24446
24753
|
init_Icon();
|
|
24754
|
+
init_useTranslate();
|
|
24447
24755
|
TreeNodeItem = ({
|
|
24448
24756
|
node,
|
|
24449
24757
|
depth,
|
|
@@ -24529,8 +24837,9 @@ var init_FileTree = __esm({
|
|
|
24529
24837
|
className,
|
|
24530
24838
|
indent = 16
|
|
24531
24839
|
}) => {
|
|
24840
|
+
const { t } = useTranslate();
|
|
24532
24841
|
if (tree.length === 0) {
|
|
24533
|
-
return /* @__PURE__ */ jsx(Box, { className: `p-4 ${className ?? ""}`, children: /* @__PURE__ */ jsx(Typography, { variant: "caption", color: "muted", children: "
|
|
24842
|
+
return /* @__PURE__ */ jsx(Box, { className: `p-4 ${className ?? ""}`, children: /* @__PURE__ */ jsx(Typography, { variant: "caption", color: "muted", children: t("fileTree.noFiles") }) });
|
|
24534
24843
|
}
|
|
24535
24844
|
return /* @__PURE__ */ jsx(Box, { className: `py-1 overflow-y-auto ${className ?? ""}`, role: "tree", children: tree.map((node) => /* @__PURE__ */ jsx(
|
|
24536
24845
|
TreeNodeItem,
|
|
@@ -24649,6 +24958,7 @@ var init_FilterGroup = __esm({
|
|
|
24649
24958
|
init_Icon();
|
|
24650
24959
|
init_useEventBus();
|
|
24651
24960
|
init_useQuerySingleton();
|
|
24961
|
+
init_useTranslate();
|
|
24652
24962
|
resolveFilterType = (filter) => filter.filterType ?? filter.type;
|
|
24653
24963
|
lookStyles6 = {
|
|
24654
24964
|
toolbar: "",
|
|
@@ -24669,6 +24979,7 @@ var init_FilterGroup = __esm({
|
|
|
24669
24979
|
isLoading,
|
|
24670
24980
|
look = "toolbar"
|
|
24671
24981
|
}) => {
|
|
24982
|
+
const { t } = useTranslate();
|
|
24672
24983
|
const eventBus = useEventBus();
|
|
24673
24984
|
const queryState = useQuerySingleton(query);
|
|
24674
24985
|
const [selectedValues, setSelectedValues] = useState(
|
|
@@ -24750,7 +25061,7 @@ var init_FilterGroup = __esm({
|
|
|
24750
25061
|
"px-3 py-1.5 text-sm font-medium transition-all duration-[var(--transition-fast)]",
|
|
24751
25062
|
!selectedValues[filter.field] ? "bg-primary text-primary-foreground" : "bg-card text-muted-foreground hover:bg-muted"
|
|
24752
25063
|
),
|
|
24753
|
-
children: "
|
|
25064
|
+
children: t("filterGroup.all")
|
|
24754
25065
|
}
|
|
24755
25066
|
),
|
|
24756
25067
|
filter.options?.map((option) => /* @__PURE__ */ jsx(
|
|
@@ -24778,7 +25089,7 @@ var init_FilterGroup = __esm({
|
|
|
24778
25089
|
size: "sm",
|
|
24779
25090
|
onClick: handleClearAll,
|
|
24780
25091
|
leftIcon: /* @__PURE__ */ jsx(Icon, { name: "x", className: "h-3.5 w-3.5" }),
|
|
24781
|
-
children: "
|
|
25092
|
+
children: t("filterGroup.clear")
|
|
24782
25093
|
}
|
|
24783
25094
|
)
|
|
24784
25095
|
]
|
|
@@ -24789,7 +25100,7 @@ var init_FilterGroup = __esm({
|
|
|
24789
25100
|
return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-4", lookStyles6[look], className), children: [
|
|
24790
25101
|
showIcon && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-muted-foreground", children: [
|
|
24791
25102
|
/* @__PURE__ */ jsx(Icon, { name: "filter", className: "h-4 w-4" }),
|
|
24792
|
-
/* @__PURE__ */ jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: "
|
|
25103
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: t("filterGroup.filters") })
|
|
24793
25104
|
] }),
|
|
24794
25105
|
filters.map((filter) => /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
24795
25106
|
/* @__PURE__ */ jsx("label", { className: "text-xs font-bold text-muted-foreground uppercase tracking-wide", children: filter.label }),
|
|
@@ -24812,7 +25123,7 @@ var init_FilterGroup = __esm({
|
|
|
24812
25123
|
`${filter.field}_from`,
|
|
24813
25124
|
e.target.value || null
|
|
24814
25125
|
),
|
|
24815
|
-
placeholder: "
|
|
25126
|
+
placeholder: t("filterGroup.from"),
|
|
24816
25127
|
clearable: true,
|
|
24817
25128
|
onClear: () => handleFilterSelect(`${filter.field}_from`, null)
|
|
24818
25129
|
}
|
|
@@ -24826,7 +25137,7 @@ var init_FilterGroup = __esm({
|
|
|
24826
25137
|
`${filter.field}_to`,
|
|
24827
25138
|
e.target.value || null
|
|
24828
25139
|
),
|
|
24829
|
-
placeholder: "
|
|
25140
|
+
placeholder: t("filterGroup.to"),
|
|
24830
25141
|
clearable: true,
|
|
24831
25142
|
onClear: () => handleFilterSelect(`${filter.field}_to`, null)
|
|
24832
25143
|
}
|
|
@@ -24846,7 +25157,7 @@ var init_FilterGroup = __esm({
|
|
|
24846
25157
|
value: selectedValues[filter.field] || "all",
|
|
24847
25158
|
onChange: (e) => handleFilterSelect(filter.field, e.target.value),
|
|
24848
25159
|
options: [
|
|
24849
|
-
{ value: "all", label: "
|
|
25160
|
+
{ value: "all", label: t("filterGroup.all") },
|
|
24850
25161
|
...filter.options?.map((opt) => ({
|
|
24851
25162
|
value: opt,
|
|
24852
25163
|
label: opt
|
|
@@ -24863,7 +25174,7 @@ var init_FilterGroup = __esm({
|
|
|
24863
25174
|
onClick: handleClearAll,
|
|
24864
25175
|
leftIcon: /* @__PURE__ */ jsx(Icon, { name: "x", className: "h-3.5 w-3.5" }),
|
|
24865
25176
|
className: "self-start",
|
|
24866
|
-
children: "
|
|
25177
|
+
children: t("filterGroup.clearAll")
|
|
24867
25178
|
}
|
|
24868
25179
|
)
|
|
24869
25180
|
] });
|
|
@@ -24929,7 +25240,7 @@ var init_FilterGroup = __esm({
|
|
|
24929
25240
|
value: selectedValues[filter.field] || "all",
|
|
24930
25241
|
onChange: (e) => handleFilterSelect(filter.field, e.target.value),
|
|
24931
25242
|
options: [
|
|
24932
|
-
{ value: "all", label:
|
|
25243
|
+
{ value: "all", label: t("filterGroup.allOf", { label: filter.label }) },
|
|
24933
25244
|
...filter.options?.map((opt) => ({
|
|
24934
25245
|
value: opt,
|
|
24935
25246
|
label: opt
|
|
@@ -24958,7 +25269,7 @@ var init_FilterGroup = __esm({
|
|
|
24958
25269
|
field
|
|
24959
25270
|
);
|
|
24960
25271
|
}),
|
|
24961
|
-
/* @__PURE__ */ jsx(Button, { variant: "ghost", size: "sm", onClick: handleClearAll, children: "
|
|
25272
|
+
/* @__PURE__ */ jsx(Button, { variant: "ghost", size: "sm", onClick: handleClearAll, children: t("filterGroup.clearAll") })
|
|
24962
25273
|
] })
|
|
24963
25274
|
]
|
|
24964
25275
|
}
|
|
@@ -24983,7 +25294,7 @@ var init_FilterGroup = __esm({
|
|
|
24983
25294
|
className: "text-muted-foreground",
|
|
24984
25295
|
children: [
|
|
24985
25296
|
/* @__PURE__ */ jsx(Icon, { name: "filter", className: "h-4 w-4" }),
|
|
24986
|
-
/* @__PURE__ */ jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: "
|
|
25297
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: t("filterGroup.filters") })
|
|
24987
25298
|
]
|
|
24988
25299
|
}
|
|
24989
25300
|
),
|
|
@@ -25009,7 +25320,7 @@ var init_FilterGroup = __esm({
|
|
|
25009
25320
|
`${filter.field}_from`,
|
|
25010
25321
|
e.target.value || null
|
|
25011
25322
|
),
|
|
25012
|
-
placeholder: "
|
|
25323
|
+
placeholder: t("filterGroup.from"),
|
|
25013
25324
|
clearable: true,
|
|
25014
25325
|
onClear: () => handleFilterSelect(`${filter.field}_from`, null),
|
|
25015
25326
|
className: "min-w-[130px]"
|
|
@@ -25025,7 +25336,7 @@ var init_FilterGroup = __esm({
|
|
|
25025
25336
|
`${filter.field}_to`,
|
|
25026
25337
|
e.target.value || null
|
|
25027
25338
|
),
|
|
25028
|
-
placeholder: "
|
|
25339
|
+
placeholder: t("filterGroup.to"),
|
|
25029
25340
|
clearable: true,
|
|
25030
25341
|
onClear: () => handleFilterSelect(`${filter.field}_to`, null),
|
|
25031
25342
|
className: "min-w-[130px]"
|
|
@@ -25047,7 +25358,7 @@ var init_FilterGroup = __esm({
|
|
|
25047
25358
|
value: selectedValues[filter.field] || "all",
|
|
25048
25359
|
onChange: (e) => handleFilterSelect(filter.field, e.target.value),
|
|
25049
25360
|
options: [
|
|
25050
|
-
{ value: "all", label: "
|
|
25361
|
+
{ value: "all", label: t("filterGroup.all") },
|
|
25051
25362
|
...filter.options?.map((opt) => ({
|
|
25052
25363
|
value: opt,
|
|
25053
25364
|
label: opt
|
|
@@ -25058,10 +25369,7 @@ var init_FilterGroup = __esm({
|
|
|
25058
25369
|
)
|
|
25059
25370
|
] }, filter.field)),
|
|
25060
25371
|
activeFilterCount > 0 && /* @__PURE__ */ jsxs(HStack, { gap: "sm", align: "center", className: "ml-auto", children: [
|
|
25061
|
-
/* @__PURE__ */
|
|
25062
|
-
activeFilterCount,
|
|
25063
|
-
" active"
|
|
25064
|
-
] }),
|
|
25372
|
+
/* @__PURE__ */ jsx(Badge, { variant: "primary", size: "md", children: t("filterGroup.activeCount", { count: activeFilterCount }) }),
|
|
25065
25373
|
/* @__PURE__ */ jsx(
|
|
25066
25374
|
Button,
|
|
25067
25375
|
{
|
|
@@ -25069,7 +25377,7 @@ var init_FilterGroup = __esm({
|
|
|
25069
25377
|
size: "sm",
|
|
25070
25378
|
onClick: handleClearAll,
|
|
25071
25379
|
leftIcon: /* @__PURE__ */ jsx(Icon, { name: "x", className: "h-3.5 w-3.5" }),
|
|
25072
|
-
children: "
|
|
25380
|
+
children: t("filterGroup.clearAll")
|
|
25073
25381
|
}
|
|
25074
25382
|
)
|
|
25075
25383
|
] })
|
|
@@ -25298,7 +25606,7 @@ var init_RelationSelect = __esm({
|
|
|
25298
25606
|
value,
|
|
25299
25607
|
onChange,
|
|
25300
25608
|
options = [],
|
|
25301
|
-
placeholder
|
|
25609
|
+
placeholder,
|
|
25302
25610
|
required = false,
|
|
25303
25611
|
disabled = false,
|
|
25304
25612
|
isLoading = false,
|
|
@@ -25310,6 +25618,7 @@ var init_RelationSelect = __esm({
|
|
|
25310
25618
|
emptyMessage
|
|
25311
25619
|
}) => {
|
|
25312
25620
|
const { t } = useTranslate();
|
|
25621
|
+
const resolvedPlaceholder = placeholder ?? t("relationSelect.selectPlaceholder");
|
|
25313
25622
|
const resolvedSearchPlaceholder = searchPlaceholder ?? t("common.search");
|
|
25314
25623
|
const resolvedEmptyMessage = emptyMessage ?? t("empty.noOptionsFound");
|
|
25315
25624
|
const [isOpen, setIsOpen] = useState(false);
|
|
@@ -25419,7 +25728,7 @@ var init_RelationSelect = __esm({
|
|
|
25419
25728
|
children: isLoading ? /* @__PURE__ */ jsxs(HStack, { gap: "xs", align: "center", children: [
|
|
25420
25729
|
/* @__PURE__ */ jsx(Spinner, { size: "sm" }),
|
|
25421
25730
|
/* @__PURE__ */ jsx(Typography, { as: "span", children: t("common.loading") })
|
|
25422
|
-
] }) : selectedOption ? selectedOption.label :
|
|
25731
|
+
] }) : selectedOption ? selectedOption.label : resolvedPlaceholder
|
|
25423
25732
|
}
|
|
25424
25733
|
),
|
|
25425
25734
|
/* @__PURE__ */ jsxs(HStack, { gap: "xs", align: "center", children: [
|
|
@@ -26013,19 +26322,20 @@ var init_RepeatableFormSection = __esm({
|
|
|
26013
26322
|
RepeatableFormSection.displayName = "RepeatableFormSection";
|
|
26014
26323
|
}
|
|
26015
26324
|
});
|
|
26016
|
-
var
|
|
26325
|
+
var actionTypeLabelKeys, actionTypeIcons, ViolationAlert;
|
|
26017
26326
|
var init_ViolationAlert = __esm({
|
|
26018
26327
|
"components/core/molecules/ViolationAlert.tsx"() {
|
|
26019
26328
|
init_cn();
|
|
26329
|
+
init_useTranslate();
|
|
26020
26330
|
init_Box();
|
|
26021
26331
|
init_Stack();
|
|
26022
26332
|
init_Typography();
|
|
26023
26333
|
init_Button();
|
|
26024
26334
|
init_Icon();
|
|
26025
|
-
|
|
26026
|
-
measure: "
|
|
26027
|
-
admin: "
|
|
26028
|
-
penalty: "
|
|
26335
|
+
actionTypeLabelKeys = {
|
|
26336
|
+
measure: "violationAlert.actionType.measure",
|
|
26337
|
+
admin: "violationAlert.actionType.admin",
|
|
26338
|
+
penalty: "violationAlert.actionType.penalty"
|
|
26029
26339
|
};
|
|
26030
26340
|
actionTypeIcons = {
|
|
26031
26341
|
measure: "alert-triangle",
|
|
@@ -26042,10 +26352,11 @@ var init_ViolationAlert = __esm({
|
|
|
26042
26352
|
className,
|
|
26043
26353
|
...flatProps
|
|
26044
26354
|
}) => {
|
|
26355
|
+
const { t } = useTranslate();
|
|
26045
26356
|
const resolvedViolation = violation ?? {
|
|
26046
26357
|
law: "",
|
|
26047
26358
|
article: "",
|
|
26048
|
-
message: flatProps.message ?? "
|
|
26359
|
+
message: flatProps.message ?? t("violationAlert.fallbackMessage"),
|
|
26049
26360
|
actionType: "measure"
|
|
26050
26361
|
};
|
|
26051
26362
|
const effectiveSeverity = severity ?? (resolvedViolation.actionType === "measure" ? "warning" : "error");
|
|
@@ -26130,7 +26441,7 @@ var init_ViolationAlert = __esm({
|
|
|
26130
26441
|
{
|
|
26131
26442
|
variant: "caption",
|
|
26132
26443
|
className: cn(textColor, "opacity-75"),
|
|
26133
|
-
children:
|
|
26444
|
+
children: t(actionTypeLabelKeys[resolvedViolation.actionType])
|
|
26134
26445
|
}
|
|
26135
26446
|
)
|
|
26136
26447
|
] })
|
|
@@ -26161,7 +26472,7 @@ var init_ViolationAlert = __esm({
|
|
|
26161
26472
|
{
|
|
26162
26473
|
variant: "caption",
|
|
26163
26474
|
className: cn(textColor, "opacity-75"),
|
|
26164
|
-
children: "
|
|
26475
|
+
children: t("violationAlert.adminLabel")
|
|
26165
26476
|
}
|
|
26166
26477
|
),
|
|
26167
26478
|
/* @__PURE__ */ jsx(
|
|
@@ -26180,7 +26491,7 @@ var init_ViolationAlert = __esm({
|
|
|
26180
26491
|
{
|
|
26181
26492
|
variant: "caption",
|
|
26182
26493
|
className: cn(textColor, "opacity-75"),
|
|
26183
|
-
children: "
|
|
26494
|
+
children: t("violationAlert.penaltyLabel")
|
|
26184
26495
|
}
|
|
26185
26496
|
),
|
|
26186
26497
|
/* @__PURE__ */ jsx(
|
|
@@ -26205,7 +26516,7 @@ var init_ViolationAlert = __esm({
|
|
|
26205
26516
|
className: cn(textColor, "self-start"),
|
|
26206
26517
|
children: [
|
|
26207
26518
|
/* @__PURE__ */ jsx(Icon, { name: "arrow-right", size: "sm", className: "mr-1" }),
|
|
26208
|
-
"
|
|
26519
|
+
t("violationAlert.goToField")
|
|
26209
26520
|
]
|
|
26210
26521
|
}
|
|
26211
26522
|
)
|
|
@@ -26521,6 +26832,7 @@ var init_LineChart = __esm({
|
|
|
26521
26832
|
"use client";
|
|
26522
26833
|
init_cn();
|
|
26523
26834
|
init_atoms2();
|
|
26835
|
+
init_useTranslate();
|
|
26524
26836
|
LineChart2 = ({
|
|
26525
26837
|
data,
|
|
26526
26838
|
width = 400,
|
|
@@ -26532,6 +26844,7 @@ var init_LineChart = __esm({
|
|
|
26532
26844
|
areaColor = "var(--color-primary)",
|
|
26533
26845
|
className
|
|
26534
26846
|
}) => {
|
|
26847
|
+
const { t } = useTranslate();
|
|
26535
26848
|
const gradientId = useId();
|
|
26536
26849
|
const safeData = data ?? [];
|
|
26537
26850
|
const sortedData = useMemo(() => {
|
|
@@ -26568,7 +26881,7 @@ var init_LineChart = __esm({
|
|
|
26568
26881
|
return `${linePath} L ${last.x} ${bottom} L ${first.x} ${bottom} Z`;
|
|
26569
26882
|
}, [linePath, points, height, showArea]);
|
|
26570
26883
|
if (safeData.length === 0) {
|
|
26571
|
-
return /* @__PURE__ */ jsx(Box, { className: cn("flex items-center justify-center text-muted-foreground", className), style: { width, height }, children: "
|
|
26884
|
+
return /* @__PURE__ */ jsx(Box, { className: cn("flex items-center justify-center text-muted-foreground", className), style: { width, height }, children: t("empty.noData") });
|
|
26572
26885
|
}
|
|
26573
26886
|
return /* @__PURE__ */ jsx(Box, { className: cn(className), children: /* @__PURE__ */ jsxs(
|
|
26574
26887
|
"svg",
|
|
@@ -28475,6 +28788,7 @@ var init_GraphView = __esm({
|
|
|
28475
28788
|
"use client";
|
|
28476
28789
|
init_cn();
|
|
28477
28790
|
init_atoms2();
|
|
28791
|
+
init_useTranslate();
|
|
28478
28792
|
GROUP_COLORS = [
|
|
28479
28793
|
"#3b82f6",
|
|
28480
28794
|
// blue-500
|
|
@@ -28507,6 +28821,7 @@ var init_GraphView = __esm({
|
|
|
28507
28821
|
showLabels = true,
|
|
28508
28822
|
zoomToFit = true
|
|
28509
28823
|
}) => {
|
|
28824
|
+
const { t } = useTranslate();
|
|
28510
28825
|
const containerRef = useRef(null);
|
|
28511
28826
|
const animRef = useRef(0);
|
|
28512
28827
|
const [simNodes, setSimNodes] = useState([]);
|
|
@@ -28684,7 +28999,7 @@ var init_GraphView = __esm({
|
|
|
28684
28999
|
[onNodeClick]
|
|
28685
29000
|
);
|
|
28686
29001
|
if (nodes.length === 0) {
|
|
28687
|
-
return /* @__PURE__ */ jsx(Box, { className: cn("flex items-center justify-center", className), style: { width: w, height: h }, children: /* @__PURE__ */ jsx(Box, { className: "text-muted-foreground text-sm", children: "
|
|
29002
|
+
return /* @__PURE__ */ jsx(Box, { className: cn("flex items-center justify-center", className), style: { width: w, height: h }, children: /* @__PURE__ */ jsx(Box, { className: "text-muted-foreground text-sm", children: t("display.noGraphData") }) });
|
|
28688
29003
|
}
|
|
28689
29004
|
return /* @__PURE__ */ jsx(
|
|
28690
29005
|
Box,
|
|
@@ -29140,11 +29455,12 @@ var init_UploadDropZone = __esm({
|
|
|
29140
29455
|
init_Icon();
|
|
29141
29456
|
init_Typography();
|
|
29142
29457
|
init_useEventBus();
|
|
29458
|
+
init_useTranslate();
|
|
29143
29459
|
UploadDropZone = ({
|
|
29144
29460
|
accept,
|
|
29145
29461
|
maxSize,
|
|
29146
29462
|
maxFiles = 1,
|
|
29147
|
-
label
|
|
29463
|
+
label,
|
|
29148
29464
|
description,
|
|
29149
29465
|
disabled = false,
|
|
29150
29466
|
action,
|
|
@@ -29152,22 +29468,24 @@ var init_UploadDropZone = __esm({
|
|
|
29152
29468
|
onFiles,
|
|
29153
29469
|
className
|
|
29154
29470
|
}) => {
|
|
29471
|
+
const { t } = useTranslate();
|
|
29472
|
+
const resolvedLabel = label ?? t("upload.dropOrBrowse");
|
|
29155
29473
|
const [isDragOver, setIsDragOver] = useState(false);
|
|
29156
29474
|
const [error, setError] = useState(null);
|
|
29157
29475
|
const inputRef = useRef(null);
|
|
29158
29476
|
const eventBus = useSafeEventBus7();
|
|
29159
29477
|
const defaultDescription = [
|
|
29160
|
-
accept ?
|
|
29161
|
-
maxSize ?
|
|
29162
|
-
maxFiles > 1 ?
|
|
29478
|
+
accept ? t("upload.accepted", { accept }) : null,
|
|
29479
|
+
maxSize ? t("upload.maxSize", { size: formatFileSize(maxSize) }) : null,
|
|
29480
|
+
maxFiles > 1 ? t("upload.maxFiles", { count: maxFiles }) : null
|
|
29163
29481
|
].filter(Boolean).join(". ");
|
|
29164
29482
|
const validateFiles = useCallback(
|
|
29165
29483
|
(files) => {
|
|
29166
29484
|
if (files.length > maxFiles) {
|
|
29167
|
-
return { valid: [], error:
|
|
29485
|
+
return { valid: [], error: t("upload.error.maxFiles", { count: maxFiles }) };
|
|
29168
29486
|
}
|
|
29169
29487
|
if (accept) {
|
|
29170
|
-
const acceptedTypes = accept.split(",").map((
|
|
29488
|
+
const acceptedTypes = accept.split(",").map((s) => s.trim());
|
|
29171
29489
|
const invalid = files.filter((file) => {
|
|
29172
29490
|
return !acceptedTypes.some((type) => {
|
|
29173
29491
|
if (type.endsWith("/*")) {
|
|
@@ -29177,7 +29495,7 @@ var init_UploadDropZone = __esm({
|
|
|
29177
29495
|
});
|
|
29178
29496
|
});
|
|
29179
29497
|
if (invalid.length > 0) {
|
|
29180
|
-
return { valid: [], error:
|
|
29498
|
+
return { valid: [], error: t("upload.error.invalidType", { name: invalid[0].name }) };
|
|
29181
29499
|
}
|
|
29182
29500
|
}
|
|
29183
29501
|
if (maxSize) {
|
|
@@ -29185,13 +29503,13 @@ var init_UploadDropZone = __esm({
|
|
|
29185
29503
|
if (tooLarge.length > 0) {
|
|
29186
29504
|
return {
|
|
29187
29505
|
valid: [],
|
|
29188
|
-
error:
|
|
29506
|
+
error: t("upload.error.tooLarge", { name: tooLarge[0].name, size: formatFileSize(maxSize) })
|
|
29189
29507
|
};
|
|
29190
29508
|
}
|
|
29191
29509
|
}
|
|
29192
29510
|
return { valid: files, error: null };
|
|
29193
29511
|
},
|
|
29194
|
-
[accept, maxSize, maxFiles]
|
|
29512
|
+
[accept, maxSize, maxFiles, t]
|
|
29195
29513
|
);
|
|
29196
29514
|
const handleFiles = useCallback(
|
|
29197
29515
|
(files) => {
|
|
@@ -29262,7 +29580,7 @@ var init_UploadDropZone = __esm({
|
|
|
29262
29580
|
handleClick();
|
|
29263
29581
|
}
|
|
29264
29582
|
},
|
|
29265
|
-
"aria-label":
|
|
29583
|
+
"aria-label": resolvedLabel,
|
|
29266
29584
|
children: [
|
|
29267
29585
|
/* @__PURE__ */ jsx(
|
|
29268
29586
|
"input",
|
|
@@ -29278,7 +29596,7 @@ var init_UploadDropZone = __esm({
|
|
|
29278
29596
|
}
|
|
29279
29597
|
),
|
|
29280
29598
|
error ? /* @__PURE__ */ jsx(Icon, { name: "file-warning", size: "lg", className: "text-error mb-2" }) : /* @__PURE__ */ jsx(Icon, { name: "upload", size: "lg", className: "text-muted-foreground mb-2" }),
|
|
29281
|
-
/* @__PURE__ */ jsx(Typography, { variant: "body1", className: "text-center font-medium mb-1", children: isDragOver ? "
|
|
29599
|
+
/* @__PURE__ */ jsx(Typography, { variant: "body1", className: "text-center font-medium mb-1", children: isDragOver ? t("upload.dropFilesHere") : resolvedLabel }),
|
|
29282
29600
|
error ? /* @__PURE__ */ jsx(Typography, { variant: "caption", color: "error", className: "text-center", children: error }) : /* @__PURE__ */ jsx(Typography, { variant: "caption", color: "muted", className: "text-center", children: description ?? defaultDescription })
|
|
29283
29601
|
]
|
|
29284
29602
|
}
|
|
@@ -29700,7 +30018,7 @@ function TableView({
|
|
|
29700
30018
|
{
|
|
29701
30019
|
checked: selected.has(id),
|
|
29702
30020
|
onChange: () => toggleRow(id),
|
|
29703
|
-
"aria-label":
|
|
30021
|
+
"aria-label": t("table.selectRow", { id })
|
|
29704
30022
|
}
|
|
29705
30023
|
) }),
|
|
29706
30024
|
hasRenderProp ? /* @__PURE__ */ jsx(Box, { className: "flex-1 min-w-0", children: children(row, index) }) : colDefs.map((col) => {
|
|
@@ -32547,7 +32865,7 @@ var init_QrScanner = __esm({
|
|
|
32547
32865
|
className: "inset-0 flex-col items-center justify-center gap-2 bg-black bg-opacity-80 text-center",
|
|
32548
32866
|
children: [
|
|
32549
32867
|
/* @__PURE__ */ jsx(Icon, { name: "camera", className: "h-8 w-8 text-white", "aria-hidden": "true" }),
|
|
32550
|
-
/* @__PURE__ */ jsx(Typography, { variant: "body2", className: "text-white", children: "
|
|
32868
|
+
/* @__PURE__ */ jsx(Typography, { variant: "body2", className: "text-white", children: t("qrScanner.cameraUnavailable") }),
|
|
32551
32869
|
/* @__PURE__ */ jsx(Typography, { variant: "caption", className: "text-white opacity-70", children: cameraError.message })
|
|
32552
32870
|
]
|
|
32553
32871
|
}
|
|
@@ -32558,7 +32876,7 @@ var init_QrScanner = __esm({
|
|
|
32558
32876
|
position: "absolute",
|
|
32559
32877
|
display: "flex",
|
|
32560
32878
|
className: "inset-0 items-center justify-center bg-black bg-opacity-60",
|
|
32561
|
-
children: /* @__PURE__ */ jsx(Typography, { variant: "body2", className: "text-white", children: "
|
|
32879
|
+
children: /* @__PURE__ */ jsx(Typography, { variant: "body2", className: "text-white", children: t("qrScanner.paused") })
|
|
32562
32880
|
}
|
|
32563
32881
|
),
|
|
32564
32882
|
showCameraControls && /* @__PURE__ */ jsxs(
|
|
@@ -32577,7 +32895,7 @@ var init_QrScanner = __esm({
|
|
|
32577
32895
|
"rounded-full bg-black bg-opacity-60 p-2 text-white",
|
|
32578
32896
|
"hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
|
|
32579
32897
|
),
|
|
32580
|
-
"aria-label": isPaused ? "
|
|
32898
|
+
"aria-label": isPaused ? t("qrScanner.resumeScanning") : t("qrScanner.pauseScanning"),
|
|
32581
32899
|
children: isPaused ? /* @__PURE__ */ jsx(Icon, { name: "play", className: "h-4 w-4" }) : /* @__PURE__ */ jsx(Icon, { name: "pause", className: "h-4 w-4" })
|
|
32582
32900
|
}
|
|
32583
32901
|
),
|
|
@@ -32590,7 +32908,7 @@ var init_QrScanner = __esm({
|
|
|
32590
32908
|
"rounded-full bg-black bg-opacity-60 p-2 text-white",
|
|
32591
32909
|
"hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
|
|
32592
32910
|
),
|
|
32593
|
-
"aria-label":
|
|
32911
|
+
"aria-label": currentFacing === "environment" ? t("qrScanner.switchToFrontCamera") : t("qrScanner.switchToRearCamera"),
|
|
32594
32912
|
children: /* @__PURE__ */ jsx(Icon, { name: "refresh-cw", className: "h-4 w-4" })
|
|
32595
32913
|
}
|
|
32596
32914
|
),
|
|
@@ -32604,7 +32922,7 @@ var init_QrScanner = __esm({
|
|
|
32604
32922
|
"hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
|
|
32605
32923
|
),
|
|
32606
32924
|
"aria-label": t("aria.mockScanDev"),
|
|
32607
|
-
children: "
|
|
32925
|
+
children: t("qrScanner.mockScan")
|
|
32608
32926
|
}
|
|
32609
32927
|
)
|
|
32610
32928
|
]
|
|
@@ -32622,6 +32940,7 @@ var init_OptionConstraintGroup = __esm({
|
|
|
32622
32940
|
"components/core/molecules/OptionConstraintGroup.tsx"() {
|
|
32623
32941
|
init_cn();
|
|
32624
32942
|
init_useEventBus();
|
|
32943
|
+
init_useTranslate();
|
|
32625
32944
|
init_Typography();
|
|
32626
32945
|
init_Box();
|
|
32627
32946
|
init_Label();
|
|
@@ -32631,36 +32950,36 @@ var init_OptionConstraintGroup = __esm({
|
|
|
32631
32950
|
const sign = delta >= 0 ? "+" : "-";
|
|
32632
32951
|
return `${sign}$${Math.abs(delta).toFixed(2)}`;
|
|
32633
32952
|
};
|
|
32634
|
-
constraintHint = (constraint) => {
|
|
32953
|
+
constraintHint = (constraint, t) => {
|
|
32635
32954
|
if (constraint.type === "single") {
|
|
32636
|
-
return constraint.required ? "
|
|
32955
|
+
return constraint.required ? t("optionConstraint.requiredOne") : t("optionConstraint.optionalOne");
|
|
32637
32956
|
}
|
|
32638
32957
|
const { min, max } = constraint;
|
|
32639
32958
|
if (min && max) {
|
|
32640
|
-
return min === max ?
|
|
32959
|
+
return min === max ? t("optionConstraint.pickExactly", { count: min }) : t("optionConstraint.pickRange", { min, max });
|
|
32641
32960
|
}
|
|
32642
|
-
if (min) return
|
|
32643
|
-
if (max) return
|
|
32644
|
-
return "
|
|
32961
|
+
if (min) return t("optionConstraint.pickAtLeast", { count: min });
|
|
32962
|
+
if (max) return t("optionConstraint.pickUpTo", { count: max });
|
|
32963
|
+
return t("optionConstraint.optional");
|
|
32645
32964
|
};
|
|
32646
|
-
validateSelection = (selected, constraint) => {
|
|
32965
|
+
validateSelection = (selected, constraint, t) => {
|
|
32647
32966
|
if (constraint.type === "single") {
|
|
32648
32967
|
if (constraint.required && selected.length === 0) {
|
|
32649
|
-
return "
|
|
32968
|
+
return t("optionConstraint.error.pickOne");
|
|
32650
32969
|
}
|
|
32651
32970
|
if (selected.length > 1) {
|
|
32652
|
-
return "
|
|
32971
|
+
return t("optionConstraint.error.pickOnlyOne");
|
|
32653
32972
|
}
|
|
32654
32973
|
return void 0;
|
|
32655
32974
|
}
|
|
32656
32975
|
const { min, max } = constraint;
|
|
32657
32976
|
if (min !== void 0 && selected.length < min) {
|
|
32658
32977
|
const remaining = min - selected.length;
|
|
32659
|
-
return
|
|
32978
|
+
return t("optionConstraint.error.pickMore", { count: remaining });
|
|
32660
32979
|
}
|
|
32661
32980
|
if (max !== void 0 && selected.length > max) {
|
|
32662
32981
|
const excess = selected.length - max;
|
|
32663
|
-
return
|
|
32982
|
+
return t("optionConstraint.error.removeOptions", { count: excess });
|
|
32664
32983
|
}
|
|
32665
32984
|
return void 0;
|
|
32666
32985
|
};
|
|
@@ -32677,8 +32996,9 @@ var init_OptionConstraintGroup = __esm({
|
|
|
32677
32996
|
className
|
|
32678
32997
|
}) => {
|
|
32679
32998
|
const eventBus = useEventBus();
|
|
32680
|
-
const
|
|
32681
|
-
const
|
|
32999
|
+
const { t } = useTranslate();
|
|
33000
|
+
const hint = constraintHint(constraint, t);
|
|
33001
|
+
const error = validateSelection(selected, constraint, t);
|
|
32682
33002
|
const inputName = `option-${groupId}`;
|
|
32683
33003
|
const labelTextSize = size === "sm" ? "text-sm" : "text-base";
|
|
32684
33004
|
const optionGap = size === "sm" ? "gap-2" : "gap-2.5";
|
|
@@ -32778,7 +33098,7 @@ var init_OptionConstraintGroup = __esm({
|
|
|
32778
33098
|
variant: "caption",
|
|
32779
33099
|
color: "warning",
|
|
32780
33100
|
className: "rounded border border-warning/40 px-1.5 py-0.5",
|
|
32781
|
-
children: "
|
|
33101
|
+
children: t("optionConstraint.outOfStock")
|
|
32782
33102
|
}
|
|
32783
33103
|
)
|
|
32784
33104
|
]
|
|
@@ -33100,6 +33420,7 @@ function changeBlockType(block, type) {
|
|
|
33100
33420
|
return { id: block.id, type, content: seed };
|
|
33101
33421
|
}
|
|
33102
33422
|
function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
33423
|
+
const { t } = useTranslate();
|
|
33103
33424
|
const [open, setOpen] = useState(false);
|
|
33104
33425
|
const ref = useRef(null);
|
|
33105
33426
|
useEffect(() => {
|
|
@@ -33119,7 +33440,7 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
33119
33440
|
{
|
|
33120
33441
|
type: "button",
|
|
33121
33442
|
variant: "ghost",
|
|
33122
|
-
"aria-label": "
|
|
33443
|
+
"aria-label": t("richBlockEditor.blockActions"),
|
|
33123
33444
|
className: cn(
|
|
33124
33445
|
"inline-flex items-center justify-center",
|
|
33125
33446
|
"h-6 w-6 rounded-sm p-0 gap-0",
|
|
@@ -33141,7 +33462,7 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
33141
33462
|
"py-1 text-sm"
|
|
33142
33463
|
),
|
|
33143
33464
|
children: [
|
|
33144
|
-
/* @__PURE__ */ jsx(Box, { className: "px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground", children:
|
|
33465
|
+
/* @__PURE__ */ jsx(Box, { className: "px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground", children: t(BLOCK_TYPE_LABEL_KEY[block.type]) }),
|
|
33145
33466
|
/* @__PURE__ */ jsxs(
|
|
33146
33467
|
Button,
|
|
33147
33468
|
{
|
|
@@ -33155,7 +33476,8 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
33155
33476
|
},
|
|
33156
33477
|
children: [
|
|
33157
33478
|
/* @__PURE__ */ jsx(Icon, { name: "plus", className: "w-3.5 h-3.5" }),
|
|
33158
|
-
"
|
|
33479
|
+
" ",
|
|
33480
|
+
t("richBlockEditor.duplicate")
|
|
33159
33481
|
]
|
|
33160
33482
|
}
|
|
33161
33483
|
),
|
|
@@ -33172,14 +33494,15 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
33172
33494
|
},
|
|
33173
33495
|
children: [
|
|
33174
33496
|
/* @__PURE__ */ jsx(Icon, { name: "trash", className: "w-3.5 h-3.5" }),
|
|
33175
|
-
"
|
|
33497
|
+
" ",
|
|
33498
|
+
t("common.delete")
|
|
33176
33499
|
]
|
|
33177
33500
|
}
|
|
33178
33501
|
),
|
|
33179
33502
|
CHANGEABLE_TYPES.includes(block.type) && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
33180
33503
|
/* @__PURE__ */ jsx(Box, { className: "my-1 border-t border-border" }),
|
|
33181
|
-
/* @__PURE__ */ jsx(Box, { className: "px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground", children: "
|
|
33182
|
-
CHANGEABLE_TYPES.filter((
|
|
33504
|
+
/* @__PURE__ */ jsx(Box, { className: "px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground", children: t("richBlockEditor.turnInto") }),
|
|
33505
|
+
CHANGEABLE_TYPES.filter((bt) => bt !== block.type).map((bt) => /* @__PURE__ */ jsx(
|
|
33183
33506
|
Button,
|
|
33184
33507
|
{
|
|
33185
33508
|
type: "button",
|
|
@@ -33187,12 +33510,12 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
33187
33510
|
role: "menuitem",
|
|
33188
33511
|
className: "flex w-full items-center gap-2 px-2 py-1.5 text-left justify-start rounded-none",
|
|
33189
33512
|
onClick: () => {
|
|
33190
|
-
onChangeType(
|
|
33513
|
+
onChangeType(bt);
|
|
33191
33514
|
setOpen(false);
|
|
33192
33515
|
},
|
|
33193
|
-
children:
|
|
33516
|
+
children: t(BLOCK_TYPE_LABEL_KEY[bt])
|
|
33194
33517
|
},
|
|
33195
|
-
|
|
33518
|
+
bt
|
|
33196
33519
|
))
|
|
33197
33520
|
] })
|
|
33198
33521
|
]
|
|
@@ -33254,6 +33577,7 @@ function BlockRow({
|
|
|
33254
33577
|
onInsertAfter,
|
|
33255
33578
|
onChangeType
|
|
33256
33579
|
}) {
|
|
33580
|
+
const { t } = useTranslate();
|
|
33257
33581
|
const setContent = useCallback(
|
|
33258
33582
|
(next) => onUpdate((b) => ({ ...b, content: next })),
|
|
33259
33583
|
[onUpdate]
|
|
@@ -33303,8 +33627,8 @@ function BlockRow({
|
|
|
33303
33627
|
tag: "h1",
|
|
33304
33628
|
value: block.content ?? "",
|
|
33305
33629
|
readOnly,
|
|
33306
|
-
placeholder: placeholder ?? "
|
|
33307
|
-
ariaLabel: "
|
|
33630
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.heading1"),
|
|
33631
|
+
ariaLabel: t("richBlockEditor.aria.heading1Block"),
|
|
33308
33632
|
className: "text-3xl font-bold leading-tight",
|
|
33309
33633
|
onValueChange: setContent
|
|
33310
33634
|
}
|
|
@@ -33316,8 +33640,8 @@ function BlockRow({
|
|
|
33316
33640
|
tag: "h2",
|
|
33317
33641
|
value: block.content ?? "",
|
|
33318
33642
|
readOnly,
|
|
33319
|
-
placeholder: placeholder ?? "
|
|
33320
|
-
ariaLabel: "
|
|
33643
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.heading2"),
|
|
33644
|
+
ariaLabel: t("richBlockEditor.aria.heading2Block"),
|
|
33321
33645
|
className: "text-2xl font-semibold leading-tight",
|
|
33322
33646
|
onValueChange: setContent
|
|
33323
33647
|
}
|
|
@@ -33329,8 +33653,8 @@ function BlockRow({
|
|
|
33329
33653
|
tag: "h3",
|
|
33330
33654
|
value: block.content ?? "",
|
|
33331
33655
|
readOnly,
|
|
33332
|
-
placeholder: placeholder ?? "
|
|
33333
|
-
ariaLabel: "
|
|
33656
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.heading3"),
|
|
33657
|
+
ariaLabel: t("richBlockEditor.aria.heading3Block"),
|
|
33334
33658
|
className: "text-xl font-semibold leading-tight",
|
|
33335
33659
|
onValueChange: setContent
|
|
33336
33660
|
}
|
|
@@ -33342,8 +33666,8 @@ function BlockRow({
|
|
|
33342
33666
|
tag: "blockquote",
|
|
33343
33667
|
value: block.content ?? "",
|
|
33344
33668
|
readOnly,
|
|
33345
|
-
placeholder: placeholder ?? "
|
|
33346
|
-
ariaLabel: "
|
|
33669
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.quote"),
|
|
33670
|
+
ariaLabel: t("richBlockEditor.aria.quoteBlock"),
|
|
33347
33671
|
className: "border-l-4 border-primary/60 pl-4 italic text-muted-foreground",
|
|
33348
33672
|
onValueChange: setContent
|
|
33349
33673
|
}
|
|
@@ -33351,13 +33675,13 @@ function BlockRow({
|
|
|
33351
33675
|
case "code":
|
|
33352
33676
|
return /* @__PURE__ */ jsxs(Box, { className: "rounded-md border border-border bg-muted/40", children: [
|
|
33353
33677
|
/* @__PURE__ */ jsxs(Box, { className: "flex items-center justify-between border-b border-border px-3 py-1 text-xs text-muted-foreground", children: [
|
|
33354
|
-
/* @__PURE__ */ jsx(Typography, { as: "span", variant: "caption", className: "uppercase tracking-wide", children: "
|
|
33678
|
+
/* @__PURE__ */ jsx(Typography, { as: "span", variant: "caption", className: "uppercase tracking-wide", children: t("richBlockEditor.blockType.code") }),
|
|
33355
33679
|
!readOnly && /* @__PURE__ */ jsx(
|
|
33356
33680
|
Input,
|
|
33357
33681
|
{
|
|
33358
33682
|
inputType: "text",
|
|
33359
33683
|
value: String(block.metadata?.language ?? "plaintext"),
|
|
33360
|
-
"aria-label": "
|
|
33684
|
+
"aria-label": t("richBlockEditor.aria.codeLanguage"),
|
|
33361
33685
|
className: cn(
|
|
33362
33686
|
"h-6 w-32 rounded-sm border border-border bg-background",
|
|
33363
33687
|
"px-2 text-xs outline-none focus:ring-1 focus:ring-ring"
|
|
@@ -33373,8 +33697,8 @@ function BlockRow({
|
|
|
33373
33697
|
tag: "pre",
|
|
33374
33698
|
value: block.content ?? "",
|
|
33375
33699
|
readOnly,
|
|
33376
|
-
placeholder: placeholder ?? "
|
|
33377
|
-
ariaLabel: "
|
|
33700
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.code"),
|
|
33701
|
+
ariaLabel: t("richBlockEditor.aria.codeBlock"),
|
|
33378
33702
|
className: "block whitespace-pre-wrap p-3 font-mono text-sm leading-relaxed",
|
|
33379
33703
|
onValueChange: setContent
|
|
33380
33704
|
}
|
|
@@ -33387,7 +33711,7 @@ function BlockRow({
|
|
|
33387
33711
|
const caption = String(block.metadata?.caption ?? "");
|
|
33388
33712
|
const imgProps = {
|
|
33389
33713
|
src: url,
|
|
33390
|
-
alt: caption || "
|
|
33714
|
+
alt: caption || t("richBlockEditor.embeddedImage"),
|
|
33391
33715
|
className: "max-h-96 w-full rounded-md border border-border object-contain"
|
|
33392
33716
|
};
|
|
33393
33717
|
return /* @__PURE__ */ jsxs(Box, { className: "space-y-2", children: [
|
|
@@ -33401,7 +33725,8 @@ function BlockRow({
|
|
|
33401
33725
|
),
|
|
33402
33726
|
children: [
|
|
33403
33727
|
/* @__PURE__ */ jsx(Icon, { name: "image", className: "mr-2 w-4 h-4" }),
|
|
33404
|
-
"
|
|
33728
|
+
" ",
|
|
33729
|
+
t("richBlockEditor.noImageUrl")
|
|
33405
33730
|
]
|
|
33406
33731
|
}
|
|
33407
33732
|
),
|
|
@@ -33412,7 +33737,7 @@ function BlockRow({
|
|
|
33412
33737
|
inputType: "url",
|
|
33413
33738
|
value: url,
|
|
33414
33739
|
placeholder: "https://example.com/image.png",
|
|
33415
|
-
"aria-label": "
|
|
33740
|
+
"aria-label": t("richBlockEditor.aria.imageUrl"),
|
|
33416
33741
|
className: cn(
|
|
33417
33742
|
"h-8 flex-1 rounded-sm border border-border bg-background",
|
|
33418
33743
|
"px-2 text-sm outline-none focus:ring-1 focus:ring-ring"
|
|
@@ -33425,8 +33750,8 @@ function BlockRow({
|
|
|
33425
33750
|
{
|
|
33426
33751
|
inputType: "text",
|
|
33427
33752
|
value: caption,
|
|
33428
|
-
placeholder: "
|
|
33429
|
-
"aria-label": "
|
|
33753
|
+
placeholder: t("richBlockEditor.placeholder.caption"),
|
|
33754
|
+
"aria-label": t("richBlockEditor.aria.imageCaption"),
|
|
33430
33755
|
className: cn(
|
|
33431
33756
|
"h-8 flex-1 rounded-sm border border-border bg-background",
|
|
33432
33757
|
"px-2 text-sm outline-none focus:ring-1 focus:ring-ring"
|
|
@@ -33457,8 +33782,8 @@ function BlockRow({
|
|
|
33457
33782
|
tag: "span",
|
|
33458
33783
|
value: child.content ?? "",
|
|
33459
33784
|
readOnly,
|
|
33460
|
-
placeholder: "
|
|
33461
|
-
ariaLabel: "
|
|
33785
|
+
placeholder: t("richBlockEditor.placeholder.listItem"),
|
|
33786
|
+
ariaLabel: t("richBlockEditor.aria.listItem"),
|
|
33462
33787
|
className: "inline-block min-w-[1ch] flex-1",
|
|
33463
33788
|
onValueChange: (next) => setChildContent(child.id, next)
|
|
33464
33789
|
}
|
|
@@ -33468,7 +33793,7 @@ function BlockRow({
|
|
|
33468
33793
|
{
|
|
33469
33794
|
type: "button",
|
|
33470
33795
|
variant: "ghost",
|
|
33471
|
-
"aria-label": "
|
|
33796
|
+
"aria-label": t("richBlockEditor.aria.removeListItem"),
|
|
33472
33797
|
className: cn(
|
|
33473
33798
|
"h-5 w-5 shrink-0 rounded-sm text-muted-foreground p-0 gap-0",
|
|
33474
33799
|
"opacity-0 group-hover/item:opacity-100 hover:bg-muted hover:text-foreground"
|
|
@@ -33490,7 +33815,8 @@ function BlockRow({
|
|
|
33490
33815
|
onClick: addListItem,
|
|
33491
33816
|
children: [
|
|
33492
33817
|
/* @__PURE__ */ jsx(Icon, { name: "plus", className: "w-3 h-3" }),
|
|
33493
|
-
"
|
|
33818
|
+
" ",
|
|
33819
|
+
t("richBlockEditor.addItem")
|
|
33494
33820
|
]
|
|
33495
33821
|
}
|
|
33496
33822
|
) })
|
|
@@ -33506,8 +33832,8 @@ function BlockRow({
|
|
|
33506
33832
|
tag: "p",
|
|
33507
33833
|
value: block.content ?? "",
|
|
33508
33834
|
readOnly,
|
|
33509
|
-
placeholder: placeholder ?? "
|
|
33510
|
-
ariaLabel: "
|
|
33835
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.paragraph"),
|
|
33836
|
+
ariaLabel: t("richBlockEditor.aria.paragraphBlock"),
|
|
33511
33837
|
className: "leading-7",
|
|
33512
33838
|
onValueChange: setContent
|
|
33513
33839
|
}
|
|
@@ -33530,7 +33856,7 @@ function BlockRow({
|
|
|
33530
33856
|
{
|
|
33531
33857
|
type: "button",
|
|
33532
33858
|
variant: "ghost",
|
|
33533
|
-
"aria-label": "
|
|
33859
|
+
"aria-label": t("richBlockEditor.insertParagraphBelow"),
|
|
33534
33860
|
className: cn(
|
|
33535
33861
|
"inline-flex h-6 w-6 items-center justify-center rounded-sm p-0 gap-0",
|
|
33536
33862
|
"text-muted-foreground hover:bg-muted hover:text-foreground",
|
|
@@ -33557,7 +33883,7 @@ function BlockRow({
|
|
|
33557
33883
|
}
|
|
33558
33884
|
);
|
|
33559
33885
|
}
|
|
33560
|
-
var TOOLBAR_ENTRIES,
|
|
33886
|
+
var TOOLBAR_ENTRIES, BLOCK_TYPE_LABEL_KEY, CHANGEABLE_TYPES, _idSeq, BLOCK_TYPES, RichBlockEditor;
|
|
33561
33887
|
var init_RichBlockEditor = __esm({
|
|
33562
33888
|
"components/core/molecules/RichBlockEditor.tsx"() {
|
|
33563
33889
|
"use client";
|
|
@@ -33570,29 +33896,30 @@ var init_RichBlockEditor = __esm({
|
|
|
33570
33896
|
init_Input();
|
|
33571
33897
|
init_Icon();
|
|
33572
33898
|
init_useEventBus();
|
|
33899
|
+
init_useTranslate();
|
|
33573
33900
|
TOOLBAR_ENTRIES = [
|
|
33574
|
-
{ type: "paragraph",
|
|
33575
|
-
{ type: "heading-1",
|
|
33576
|
-
{ type: "heading-2",
|
|
33577
|
-
{ type: "heading-3",
|
|
33578
|
-
{ type: "bullet-list",
|
|
33579
|
-
{ type: "numbered-list",
|
|
33580
|
-
{ type: "quote",
|
|
33581
|
-
{ type: "code",
|
|
33582
|
-
{ type: "divider",
|
|
33583
|
-
{ type: "image",
|
|
33901
|
+
{ type: "paragraph", labelKey: "richBlockEditor.toolbar.text", icon: Type },
|
|
33902
|
+
{ type: "heading-1", labelKey: "richBlockEditor.toolbar.h1", icon: Heading1 },
|
|
33903
|
+
{ type: "heading-2", labelKey: "richBlockEditor.toolbar.h2", icon: Heading2 },
|
|
33904
|
+
{ type: "heading-3", labelKey: "richBlockEditor.toolbar.h3", icon: Heading3 },
|
|
33905
|
+
{ type: "bullet-list", labelKey: "richBlockEditor.toolbar.bulletList", icon: List },
|
|
33906
|
+
{ type: "numbered-list", labelKey: "richBlockEditor.toolbar.numbered", icon: ListOrdered },
|
|
33907
|
+
{ type: "quote", labelKey: "richBlockEditor.toolbar.quote", icon: Quote },
|
|
33908
|
+
{ type: "code", labelKey: "richBlockEditor.toolbar.code", icon: Code },
|
|
33909
|
+
{ type: "divider", labelKey: "richBlockEditor.toolbar.divider", icon: Minus },
|
|
33910
|
+
{ type: "image", labelKey: "richBlockEditor.toolbar.image", icon: Image$1 }
|
|
33584
33911
|
];
|
|
33585
|
-
|
|
33586
|
-
paragraph: "
|
|
33587
|
-
"heading-1": "
|
|
33588
|
-
"heading-2": "
|
|
33589
|
-
"heading-3": "
|
|
33590
|
-
"bullet-list": "
|
|
33591
|
-
"numbered-list": "
|
|
33592
|
-
quote: "
|
|
33593
|
-
code: "
|
|
33594
|
-
divider: "
|
|
33595
|
-
image: "
|
|
33912
|
+
BLOCK_TYPE_LABEL_KEY = {
|
|
33913
|
+
paragraph: "richBlockEditor.blockType.paragraph",
|
|
33914
|
+
"heading-1": "richBlockEditor.blockType.heading1",
|
|
33915
|
+
"heading-2": "richBlockEditor.blockType.heading2",
|
|
33916
|
+
"heading-3": "richBlockEditor.blockType.heading3",
|
|
33917
|
+
"bullet-list": "richBlockEditor.blockType.bulletList",
|
|
33918
|
+
"numbered-list": "richBlockEditor.blockType.numberedList",
|
|
33919
|
+
quote: "richBlockEditor.blockType.quote",
|
|
33920
|
+
code: "richBlockEditor.blockType.code",
|
|
33921
|
+
divider: "richBlockEditor.blockType.divider",
|
|
33922
|
+
image: "richBlockEditor.blockType.image"
|
|
33596
33923
|
};
|
|
33597
33924
|
CHANGEABLE_TYPES = [
|
|
33598
33925
|
"paragraph",
|
|
@@ -33626,6 +33953,7 @@ var init_RichBlockEditor = __esm({
|
|
|
33626
33953
|
showToolbar = true,
|
|
33627
33954
|
className
|
|
33628
33955
|
}) => {
|
|
33956
|
+
const { t } = useTranslate();
|
|
33629
33957
|
const [blocks, setBlocks] = useState(
|
|
33630
33958
|
() => normalizeBlocks(initialBlocks)
|
|
33631
33959
|
);
|
|
@@ -33697,25 +34025,26 @@ var init_RichBlockEditor = __esm({
|
|
|
33697
34025
|
Box,
|
|
33698
34026
|
{
|
|
33699
34027
|
role: "toolbar",
|
|
33700
|
-
"aria-label": "
|
|
34028
|
+
"aria-label": t("richBlockEditor.editorToolbar"),
|
|
33701
34029
|
className: cn(
|
|
33702
34030
|
"flex flex-wrap items-center gap-1",
|
|
33703
34031
|
"border-b border-border bg-muted/30 px-2 py-2"
|
|
33704
34032
|
),
|
|
33705
34033
|
children: TOOLBAR_ENTRIES.map((entry) => {
|
|
33706
34034
|
const Icon3 = entry.icon;
|
|
34035
|
+
const entryLabel = t(entry.labelKey);
|
|
33707
34036
|
return /* @__PURE__ */ jsxs(
|
|
33708
34037
|
Button,
|
|
33709
34038
|
{
|
|
33710
34039
|
type: "button",
|
|
33711
34040
|
variant: "ghost",
|
|
33712
34041
|
size: "sm",
|
|
33713
|
-
"aria-label":
|
|
33714
|
-
title:
|
|
34042
|
+
"aria-label": t("richBlockEditor.insertEntry", { label: entryLabel }),
|
|
34043
|
+
title: entryLabel,
|
|
33715
34044
|
onClick: () => handleAppend(entry.type),
|
|
33716
34045
|
children: [
|
|
33717
34046
|
/* @__PURE__ */ jsx(Icon3, { size: 14 }),
|
|
33718
|
-
/* @__PURE__ */ jsx(Typography, { as: "span", variant: "caption", className: "ml-1 hidden text-xs sm:inline", children:
|
|
34047
|
+
/* @__PURE__ */ jsx(Typography, { as: "span", variant: "caption", className: "ml-1 hidden text-xs sm:inline", children: entryLabel })
|
|
33719
34048
|
]
|
|
33720
34049
|
},
|
|
33721
34050
|
entry.type
|
|
@@ -33758,6 +34087,7 @@ var init_ReplyTree = __esm({
|
|
|
33758
34087
|
"use client";
|
|
33759
34088
|
init_cn();
|
|
33760
34089
|
init_useEventBus();
|
|
34090
|
+
init_useTranslate();
|
|
33761
34091
|
init_atoms2();
|
|
33762
34092
|
init_VoteStack();
|
|
33763
34093
|
ReplyTreeNode = ({
|
|
@@ -33777,6 +34107,7 @@ var init_ReplyTree = __esm({
|
|
|
33777
34107
|
showActions
|
|
33778
34108
|
}) => {
|
|
33779
34109
|
const eventBus = useEventBus();
|
|
34110
|
+
const { t } = useTranslate();
|
|
33780
34111
|
const hasReplies = !!node.replies && node.replies.length > 0;
|
|
33781
34112
|
const isCollapsed = collapsedSet.has(node.id);
|
|
33782
34113
|
const atMaxDepth = depth >= maxDepth;
|
|
@@ -33823,7 +34154,7 @@ var init_ReplyTree = __esm({
|
|
|
33823
34154
|
variant: "ghost",
|
|
33824
34155
|
size: "sm",
|
|
33825
34156
|
onClick: handleToggle,
|
|
33826
|
-
"aria-label": isCollapsed ? "
|
|
34157
|
+
"aria-label": isCollapsed ? t("replyTree.expandReplies") : t("replyTree.collapseReplies"),
|
|
33827
34158
|
"aria-expanded": !isCollapsed,
|
|
33828
34159
|
leftIcon: isCollapsed ? "chevron-right" : "chevron-down",
|
|
33829
34160
|
className: cn(
|
|
@@ -33864,7 +34195,7 @@ var init_ReplyTree = __esm({
|
|
|
33864
34195
|
onVote: handleVote,
|
|
33865
34196
|
size: "sm",
|
|
33866
34197
|
variant: "horizontal",
|
|
33867
|
-
label:
|
|
34198
|
+
label: t("replyTree.voteOnReplyBy", { author: node.authorName })
|
|
33868
34199
|
}
|
|
33869
34200
|
),
|
|
33870
34201
|
/* @__PURE__ */ jsx(
|
|
@@ -33874,8 +34205,8 @@ var init_ReplyTree = __esm({
|
|
|
33874
34205
|
size: "sm",
|
|
33875
34206
|
leftIcon: "message-square",
|
|
33876
34207
|
onClick: handleReply,
|
|
33877
|
-
"aria-label":
|
|
33878
|
-
children: "
|
|
34208
|
+
"aria-label": t("replyTree.replyTo", { author: node.authorName }),
|
|
34209
|
+
children: t("replyTree.reply")
|
|
33879
34210
|
}
|
|
33880
34211
|
),
|
|
33881
34212
|
/* @__PURE__ */ jsx(
|
|
@@ -33885,8 +34216,8 @@ var init_ReplyTree = __esm({
|
|
|
33885
34216
|
size: "sm",
|
|
33886
34217
|
leftIcon: "flag",
|
|
33887
34218
|
onClick: handleFlag,
|
|
33888
|
-
"aria-label":
|
|
33889
|
-
children: "
|
|
34219
|
+
"aria-label": t("replyTree.flagReplyBy", { author: node.authorName }),
|
|
34220
|
+
children: t("replyTree.flag")
|
|
33890
34221
|
}
|
|
33891
34222
|
)
|
|
33892
34223
|
] }),
|
|
@@ -33897,9 +34228,9 @@ var init_ReplyTree = __esm({
|
|
|
33897
34228
|
inputType: "textarea",
|
|
33898
34229
|
rows: 2,
|
|
33899
34230
|
value: draft,
|
|
33900
|
-
placeholder:
|
|
34231
|
+
placeholder: t("replyTree.replyToPlaceholder", { author: node.authorName }),
|
|
33901
34232
|
onChange: (e) => setDraft(e.target.value),
|
|
33902
|
-
"aria-label":
|
|
34233
|
+
"aria-label": t("replyTree.replyTo", { author: node.authorName })
|
|
33903
34234
|
}
|
|
33904
34235
|
),
|
|
33905
34236
|
/* @__PURE__ */ jsxs(Box, { className: "flex flex-row gap-2 items-center", children: [
|
|
@@ -33911,10 +34242,10 @@ var init_ReplyTree = __esm({
|
|
|
33911
34242
|
leftIcon: "send",
|
|
33912
34243
|
onClick: handleSubmitReply,
|
|
33913
34244
|
disabled: !draft.trim(),
|
|
33914
|
-
children: "
|
|
34245
|
+
children: t("replyTree.send")
|
|
33915
34246
|
}
|
|
33916
34247
|
),
|
|
33917
|
-
/* @__PURE__ */ jsx(Button, { variant: "ghost", size: "sm", onClick: handleCancelReply, children: "
|
|
34248
|
+
/* @__PURE__ */ jsx(Button, { variant: "ghost", size: "sm", onClick: handleCancelReply, children: t("common.cancel") })
|
|
33918
34249
|
] })
|
|
33919
34250
|
] }),
|
|
33920
34251
|
hasReplies && !isCollapsed && (atMaxDepth ? /* @__PURE__ */ jsx(
|
|
@@ -33928,7 +34259,7 @@ var init_ReplyTree = __esm({
|
|
|
33928
34259
|
"self-start gap-1 px-0 h-auto",
|
|
33929
34260
|
"text-sm text-primary hover:underline hover:bg-transparent"
|
|
33930
34261
|
),
|
|
33931
|
-
children: "
|
|
34262
|
+
children: t("replyTree.continueThread")
|
|
33932
34263
|
}
|
|
33933
34264
|
) : /* @__PURE__ */ jsx(Box, { className: "flex flex-col gap-2 mt-1", children: node.replies.map((child) => /* @__PURE__ */ jsx(
|
|
33934
34265
|
ReplyTreeNode,
|
|
@@ -33967,6 +34298,7 @@ var init_ReplyTree = __esm({
|
|
|
33967
34298
|
showActions = true,
|
|
33968
34299
|
className
|
|
33969
34300
|
}) => {
|
|
34301
|
+
const { t } = useTranslate();
|
|
33970
34302
|
const nodeList = Array.isArray(nodes) ? nodes : nodes ? [nodes] : [];
|
|
33971
34303
|
const [collapsedSet, setCollapsedSet] = useState(() => {
|
|
33972
34304
|
const acc = /* @__PURE__ */ new Set();
|
|
@@ -33985,7 +34317,7 @@ var init_ReplyTree = __esm({
|
|
|
33985
34317
|
});
|
|
33986
34318
|
}, []);
|
|
33987
34319
|
if (nodeList.length === 0) {
|
|
33988
|
-
return /* @__PURE__ */ jsx(Box, { className: cn("text-sm text-muted-foreground", className), children: "
|
|
34320
|
+
return /* @__PURE__ */ jsx(Box, { className: cn("text-sm text-muted-foreground", className), children: t("replyTree.noRepliesYet") });
|
|
33989
34321
|
}
|
|
33990
34322
|
return /* @__PURE__ */ jsx(Box, { className: cn("flex flex-col gap-2 min-w-0", className), children: nodeList.map((node) => /* @__PURE__ */ jsx(
|
|
33991
34323
|
ReplyTreeNode,
|
|
@@ -34063,6 +34395,7 @@ var init_VersionDiff = __esm({
|
|
|
34063
34395
|
"use client";
|
|
34064
34396
|
init_cn();
|
|
34065
34397
|
init_useEventBus();
|
|
34398
|
+
init_useTranslate();
|
|
34066
34399
|
init_atoms2();
|
|
34067
34400
|
init_Stack();
|
|
34068
34401
|
INLINE_STYLES = {
|
|
@@ -34085,6 +34418,7 @@ var init_VersionDiff = __esm({
|
|
|
34085
34418
|
language,
|
|
34086
34419
|
className
|
|
34087
34420
|
}) => {
|
|
34421
|
+
const { t } = useTranslate();
|
|
34088
34422
|
const eventBus = useEventBus();
|
|
34089
34423
|
const revisions = Array.isArray(revisionsProp) ? revisionsProp : [];
|
|
34090
34424
|
const fallbackBefore = revisions[0]?.id ?? "";
|
|
@@ -34166,24 +34500,24 @@ var init_VersionDiff = __esm({
|
|
|
34166
34500
|
children: [
|
|
34167
34501
|
/* @__PURE__ */ jsxs(HStack, { gap: "sm", align: "center", className: "flex-wrap", children: [
|
|
34168
34502
|
/* @__PURE__ */ jsx(Icon, { name: "git-commit", size: "sm", className: "text-muted-foreground" }),
|
|
34169
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "whitespace-nowrap", children: "
|
|
34503
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "whitespace-nowrap", children: t("versionDiff.compare") }),
|
|
34170
34504
|
/* @__PURE__ */ jsx(Box, { className: "min-w-0 md:min-w-[160px]", children: /* @__PURE__ */ jsx(
|
|
34171
34505
|
Select,
|
|
34172
34506
|
{
|
|
34173
34507
|
options,
|
|
34174
34508
|
value: activeBeforeId,
|
|
34175
34509
|
onChange: handleBeforeChange,
|
|
34176
|
-
"aria-label": "
|
|
34510
|
+
"aria-label": t("versionDiff.beforeRevision")
|
|
34177
34511
|
}
|
|
34178
34512
|
) }),
|
|
34179
|
-
/* @__PURE__ */ jsx(Typography, { variant: "caption", color: "secondary", children: "to" }),
|
|
34513
|
+
/* @__PURE__ */ jsx(Typography, { variant: "caption", color: "secondary", children: t("versionDiff.to") }),
|
|
34180
34514
|
/* @__PURE__ */ jsx(Box, { className: "min-w-0 md:min-w-[160px]", children: /* @__PURE__ */ jsx(
|
|
34181
34515
|
Select,
|
|
34182
34516
|
{
|
|
34183
34517
|
options,
|
|
34184
34518
|
value: activeAfterId,
|
|
34185
34519
|
onChange: handleAfterChange,
|
|
34186
|
-
"aria-label": "
|
|
34520
|
+
"aria-label": t("versionDiff.afterRevision")
|
|
34187
34521
|
}
|
|
34188
34522
|
) }),
|
|
34189
34523
|
language && /* @__PURE__ */ jsx(Badge, { variant: "default", children: language }),
|
|
@@ -34204,7 +34538,7 @@ var init_VersionDiff = __esm({
|
|
|
34204
34538
|
size: "sm",
|
|
34205
34539
|
icon: activeView === "side-by-side" ? "align-left" : "columns",
|
|
34206
34540
|
onClick: handleViewToggle,
|
|
34207
|
-
"aria-label": activeView === "side-by-side" ? "
|
|
34541
|
+
"aria-label": activeView === "side-by-side" ? t("versionDiff.switchToInline") : t("versionDiff.switchToSideBySide")
|
|
34208
34542
|
}
|
|
34209
34543
|
),
|
|
34210
34544
|
(onRevert || revertEvent) && /* @__PURE__ */ jsx(
|
|
@@ -34214,7 +34548,7 @@ var init_VersionDiff = __esm({
|
|
|
34214
34548
|
size: "sm",
|
|
34215
34549
|
icon: "rotate-ccw",
|
|
34216
34550
|
onClick: handleRevert,
|
|
34217
|
-
children: "
|
|
34551
|
+
children: t("versionDiff.revert")
|
|
34218
34552
|
}
|
|
34219
34553
|
)
|
|
34220
34554
|
] })
|
|
@@ -34231,12 +34565,12 @@ var init_VersionDiff = __esm({
|
|
|
34231
34565
|
children: [
|
|
34232
34566
|
/* @__PURE__ */ jsxs(Typography, { variant: "caption", color: "secondary", className: "truncate", children: [
|
|
34233
34567
|
beforeRev?.label,
|
|
34234
|
-
beforeRev?.author ?
|
|
34568
|
+
beforeRev?.author ? t("versionDiff.byAuthor", { author: beforeRev.author }) : "",
|
|
34235
34569
|
beforeRev?.timestamp ? ` (${beforeRev.timestamp})` : ""
|
|
34236
34570
|
] }),
|
|
34237
34571
|
/* @__PURE__ */ jsxs(Typography, { variant: "caption", color: "secondary", className: "truncate", children: [
|
|
34238
34572
|
afterRev?.label,
|
|
34239
|
-
afterRev?.author ?
|
|
34573
|
+
afterRev?.author ? t("versionDiff.byAuthor", { author: afterRev.author }) : "",
|
|
34240
34574
|
afterRev?.timestamp ? ` (${afterRev.timestamp})` : ""
|
|
34241
34575
|
] })
|
|
34242
34576
|
]
|
|
@@ -34629,10 +34963,12 @@ var init_DocPagination = __esm({
|
|
|
34629
34963
|
}
|
|
34630
34964
|
});
|
|
34631
34965
|
function DocSearch({
|
|
34632
|
-
placeholder
|
|
34966
|
+
placeholder,
|
|
34633
34967
|
onSearch,
|
|
34634
34968
|
className
|
|
34635
34969
|
}) {
|
|
34970
|
+
const { t } = useTranslate();
|
|
34971
|
+
const resolvedPlaceholder = placeholder ?? t("docSearch.placeholder");
|
|
34636
34972
|
const [query, setQuery] = useState("");
|
|
34637
34973
|
const [results, setResults] = useState([]);
|
|
34638
34974
|
const [isOpen, setIsOpen] = useState(false);
|
|
@@ -34739,7 +35075,7 @@ function DocSearch({
|
|
|
34739
35075
|
Input,
|
|
34740
35076
|
{
|
|
34741
35077
|
inputType: "search",
|
|
34742
|
-
placeholder,
|
|
35078
|
+
placeholder: resolvedPlaceholder,
|
|
34743
35079
|
value: query,
|
|
34744
35080
|
onChange: handleChange,
|
|
34745
35081
|
onFocus: handleFocus,
|
|
@@ -34804,6 +35140,7 @@ var init_DocSearch = __esm({
|
|
|
34804
35140
|
init_Typography();
|
|
34805
35141
|
init_Icon();
|
|
34806
35142
|
init_Input();
|
|
35143
|
+
init_useTranslate();
|
|
34807
35144
|
}
|
|
34808
35145
|
});
|
|
34809
35146
|
var DocSidebarCategory, DocSidebar;
|
|
@@ -36808,8 +37145,8 @@ var init_SignaturePad = __esm({
|
|
|
36808
37145
|
init_useEventBus();
|
|
36809
37146
|
init_useTranslate();
|
|
36810
37147
|
SignaturePad = ({
|
|
36811
|
-
label
|
|
36812
|
-
helperText
|
|
37148
|
+
label,
|
|
37149
|
+
helperText,
|
|
36813
37150
|
strokeColor,
|
|
36814
37151
|
strokeWidth = 2,
|
|
36815
37152
|
height = 200,
|
|
@@ -36825,6 +37162,8 @@ var init_SignaturePad = __esm({
|
|
|
36825
37162
|
}) => {
|
|
36826
37163
|
const eventBus = useEventBus();
|
|
36827
37164
|
const { t } = useTranslate();
|
|
37165
|
+
const resolvedLabel = label ?? t("signaturePad.label");
|
|
37166
|
+
const resolvedHelperText = helperText ?? t("signaturePad.helperText");
|
|
36828
37167
|
const canvasRef = useRef(null);
|
|
36829
37168
|
const [isDrawing, setIsDrawing] = useState(false);
|
|
36830
37169
|
const [hasSignature, setHasSignature] = useState(!!value);
|
|
@@ -36927,7 +37266,7 @@ var init_SignaturePad = __esm({
|
|
|
36927
37266
|
);
|
|
36928
37267
|
}
|
|
36929
37268
|
return /* @__PURE__ */ jsx(Card, { className: cn("p-4", className), children: /* @__PURE__ */ jsxs(VStack, { gap: "sm", children: [
|
|
36930
|
-
|
|
37269
|
+
resolvedLabel && /* @__PURE__ */ jsx(Typography, { variant: "label", weight: "medium", children: resolvedLabel }),
|
|
36931
37270
|
/* @__PURE__ */ jsx(
|
|
36932
37271
|
Box,
|
|
36933
37272
|
{
|
|
@@ -36956,7 +37295,7 @@ var init_SignaturePad = __esm({
|
|
|
36956
37295
|
)
|
|
36957
37296
|
}
|
|
36958
37297
|
),
|
|
36959
|
-
|
|
37298
|
+
resolvedHelperText && /* @__PURE__ */ jsx(Typography, { variant: "caption", color: "secondary", children: resolvedHelperText }),
|
|
36960
37299
|
!readOnly && /* @__PURE__ */ jsxs(HStack, { gap: "sm", justify: "end", children: [
|
|
36961
37300
|
/* @__PURE__ */ jsx(
|
|
36962
37301
|
Button,
|
|
@@ -36966,7 +37305,7 @@ var init_SignaturePad = __esm({
|
|
|
36966
37305
|
icon: Eraser,
|
|
36967
37306
|
onClick: clearSignature,
|
|
36968
37307
|
disabled: !hasSignature,
|
|
36969
|
-
children: "
|
|
37308
|
+
children: t("signaturePad.clear")
|
|
36970
37309
|
}
|
|
36971
37310
|
),
|
|
36972
37311
|
signEvent && /* @__PURE__ */ jsx(
|
|
@@ -36977,7 +37316,7 @@ var init_SignaturePad = __esm({
|
|
|
36977
37316
|
icon: Check,
|
|
36978
37317
|
onClick: confirmSignature,
|
|
36979
37318
|
disabled: !hasSignature,
|
|
36980
|
-
children: "
|
|
37319
|
+
children: t("signaturePad.confirm")
|
|
36981
37320
|
}
|
|
36982
37321
|
)
|
|
36983
37322
|
] })
|
|
@@ -41422,6 +41761,7 @@ function MasterDetail({
|
|
|
41422
41761
|
className,
|
|
41423
41762
|
...rest
|
|
41424
41763
|
}) {
|
|
41764
|
+
const { t } = useTranslate();
|
|
41425
41765
|
const loading = externalLoading ?? false;
|
|
41426
41766
|
const isLoading = externalIsLoading ?? false;
|
|
41427
41767
|
const error = externalError ?? null;
|
|
@@ -41434,8 +41774,8 @@ function MasterDetail({
|
|
|
41434
41774
|
isLoading: loading || isLoading,
|
|
41435
41775
|
error,
|
|
41436
41776
|
className,
|
|
41437
|
-
emptyTitle: "
|
|
41438
|
-
emptyDescription: "
|
|
41777
|
+
emptyTitle: t("table.empty.title"),
|
|
41778
|
+
emptyDescription: t("empty.createFirst"),
|
|
41439
41779
|
...rest
|
|
41440
41780
|
}
|
|
41441
41781
|
);
|
|
@@ -41444,6 +41784,7 @@ var init_MasterDetail = __esm({
|
|
|
41444
41784
|
"components/core/organisms/MasterDetail.tsx"() {
|
|
41445
41785
|
"use client";
|
|
41446
41786
|
init_DataTable();
|
|
41787
|
+
init_useTranslate();
|
|
41447
41788
|
MasterDetail.displayName = "MasterDetail";
|
|
41448
41789
|
}
|
|
41449
41790
|
});
|
|
@@ -41452,14 +41793,18 @@ var init_MasterDetailLayout = __esm({
|
|
|
41452
41793
|
"components/core/organisms/layout/MasterDetailLayout.tsx"() {
|
|
41453
41794
|
init_cn();
|
|
41454
41795
|
init_Typography();
|
|
41455
|
-
|
|
41456
|
-
|
|
41457
|
-
{
|
|
41458
|
-
|
|
41459
|
-
|
|
41460
|
-
|
|
41461
|
-
|
|
41462
|
-
|
|
41796
|
+
init_useTranslate();
|
|
41797
|
+
DefaultEmptyDetail = () => {
|
|
41798
|
+
const { t } = useTranslate();
|
|
41799
|
+
return /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center h-full border-2 border-dashed border-border", children: /* @__PURE__ */ jsx(
|
|
41800
|
+
Typography,
|
|
41801
|
+
{
|
|
41802
|
+
variant: "body2",
|
|
41803
|
+
className: "text-muted-foreground",
|
|
41804
|
+
children: t("masterDetail.selectItem")
|
|
41805
|
+
}
|
|
41806
|
+
) });
|
|
41807
|
+
};
|
|
41463
41808
|
MasterDetailLayout = ({
|
|
41464
41809
|
master,
|
|
41465
41810
|
detail,
|
|
@@ -41586,7 +41931,7 @@ var init_MediaGallery = __esm({
|
|
|
41586
41931
|
{
|
|
41587
41932
|
icon: Image$1,
|
|
41588
41933
|
title: t("display.noMedia"),
|
|
41589
|
-
description: "
|
|
41934
|
+
description: t("mediaGallery.noMediaDescription"),
|
|
41590
41935
|
className
|
|
41591
41936
|
}
|
|
41592
41937
|
);
|
|
@@ -41603,7 +41948,7 @@ var init_MediaGallery = __esm({
|
|
|
41603
41948
|
size: "sm",
|
|
41604
41949
|
icon: Upload,
|
|
41605
41950
|
action: "MEDIA_UPLOAD",
|
|
41606
|
-
children: "
|
|
41951
|
+
children: t("mediaGallery.upload")
|
|
41607
41952
|
}
|
|
41608
41953
|
),
|
|
41609
41954
|
actions?.map((action, idx) => /* @__PURE__ */ jsx(
|
|
@@ -41617,10 +41962,7 @@ var init_MediaGallery = __esm({
|
|
|
41617
41962
|
))
|
|
41618
41963
|
] })
|
|
41619
41964
|
] }),
|
|
41620
|
-
selectable && selectedItems.length > 0 && /* @__PURE__ */ jsx(HStack, { gap: "sm", align: "center", children: /* @__PURE__ */
|
|
41621
|
-
selectedItems.length,
|
|
41622
|
-
" selected"
|
|
41623
|
-
] }) }),
|
|
41965
|
+
selectable && selectedItems.length > 0 && /* @__PURE__ */ jsx(HStack, { gap: "sm", align: "center", children: /* @__PURE__ */ jsx(Badge, { variant: "info", children: t("table.bulk.selected", { count: selectedItems.length }) }) }),
|
|
41624
41966
|
/* @__PURE__ */ jsx(
|
|
41625
41967
|
Box,
|
|
41626
41968
|
{
|
|
@@ -42475,7 +42817,7 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
42475
42817
|
EmptyState,
|
|
42476
42818
|
{
|
|
42477
42819
|
title: t("debug.noActiveTraits"),
|
|
42478
|
-
description: "
|
|
42820
|
+
description: t("debug.traitsMountHint"),
|
|
42479
42821
|
className: "py-8"
|
|
42480
42822
|
}
|
|
42481
42823
|
);
|
|
@@ -42485,14 +42827,11 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
42485
42827
|
header: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 w-full", children: [
|
|
42486
42828
|
/* @__PURE__ */ jsx(Typography, { variant: "body", weight: "semibold", className: "text-purple-600 dark:text-purple-400", children: trait.name }),
|
|
42487
42829
|
/* @__PURE__ */ jsx(Badge, { variant: "success", size: "sm", children: trait.currentState }),
|
|
42488
|
-
/* @__PURE__ */
|
|
42489
|
-
trait.transitionCount,
|
|
42490
|
-
" transitions"
|
|
42491
|
-
] })
|
|
42830
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-500 ml-auto", children: t("debug.transitionsCount", { count: trait.transitionCount }) })
|
|
42492
42831
|
] }),
|
|
42493
42832
|
content: /* @__PURE__ */ jsxs(Stack, { gap: "sm", children: [
|
|
42494
42833
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
42495
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: "
|
|
42834
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.states") }),
|
|
42496
42835
|
/* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1", children: trait.states.map((state) => /* @__PURE__ */ jsx(
|
|
42497
42836
|
Badge,
|
|
42498
42837
|
{
|
|
@@ -42504,7 +42843,7 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
42504
42843
|
)) })
|
|
42505
42844
|
] }),
|
|
42506
42845
|
trait.transitions.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
|
|
42507
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: "
|
|
42846
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.transitions") }),
|
|
42508
42847
|
/* @__PURE__ */ jsx(Stack, { gap: "xs", children: trait.transitions.map((t2, i) => /* @__PURE__ */ jsxs(Typography, { variant: "small", className: "font-mono", children: [
|
|
42509
42848
|
t2.from,
|
|
42510
42849
|
" \u2192 ",
|
|
@@ -42523,7 +42862,7 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
42523
42862
|
] }, i)) })
|
|
42524
42863
|
] }),
|
|
42525
42864
|
trait.guards.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
|
|
42526
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: "
|
|
42865
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.guards") }),
|
|
42527
42866
|
/* @__PURE__ */ jsx(Stack, { gap: "xs", children: trait.guards.map((g, i) => /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
|
|
42528
42867
|
/* @__PURE__ */ jsx(Typography, { variant: "small", children: g.name }),
|
|
42529
42868
|
/* @__PURE__ */ jsx(Badge, { variant: g.lastResult === true ? "success" : g.lastResult === false ? "danger" : "default", size: "sm", children: g.lastResult === void 0 ? "?" : g.lastResult ? "\u2713" : "\u2717" })
|
|
@@ -42629,7 +42968,7 @@ function EntitiesTab({ snapshot }) {
|
|
|
42629
42968
|
EmptyState,
|
|
42630
42969
|
{
|
|
42631
42970
|
title: t("debug.noEntityData"),
|
|
42632
|
-
description: "
|
|
42971
|
+
description: t("debug.debugModeHint"),
|
|
42633
42972
|
className: "py-8"
|
|
42634
42973
|
}
|
|
42635
42974
|
);
|
|
@@ -42642,7 +42981,7 @@ function EntitiesTab({ snapshot }) {
|
|
|
42642
42981
|
EmptyState,
|
|
42643
42982
|
{
|
|
42644
42983
|
title: t("debug.noEntities"),
|
|
42645
|
-
description: "
|
|
42984
|
+
description: t("debug.entitiesSpawnHint"),
|
|
42646
42985
|
className: "py-8"
|
|
42647
42986
|
}
|
|
42648
42987
|
);
|
|
@@ -42650,7 +42989,7 @@ function EntitiesTab({ snapshot }) {
|
|
|
42650
42989
|
const singletonItems = singletonEntries.map(([name, data]) => ({
|
|
42651
42990
|
id: `singleton-${name}`,
|
|
42652
42991
|
header: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
42653
|
-
/* @__PURE__ */ jsx(Badge, { variant: "primary", size: "sm", children: "
|
|
42992
|
+
/* @__PURE__ */ jsx(Badge, { variant: "primary", size: "sm", children: t("debug.singleton") }),
|
|
42654
42993
|
/* @__PURE__ */ jsx(Typography, { variant: "body", weight: "semibold", className: "text-sky-600 dark:text-sky-400", children: name })
|
|
42655
42994
|
] }),
|
|
42656
42995
|
content: /* @__PURE__ */ 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) })
|
|
@@ -42668,31 +43007,19 @@ function EntitiesTab({ snapshot }) {
|
|
|
42668
43007
|
}));
|
|
42669
43008
|
return /* @__PURE__ */ jsxs("div", { className: "debug-tab debug-tab--entities", children: [
|
|
42670
43009
|
singletonItems.length > 0 && /* @__PURE__ */ jsxs("div", { className: "mb-4", children: [
|
|
42671
|
-
/* @__PURE__ */
|
|
42672
|
-
"Singletons (",
|
|
42673
|
-
singletonItems.length,
|
|
42674
|
-
")"
|
|
42675
|
-
] }),
|
|
43010
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.singletonsCount", { count: singletonItems.length }) }),
|
|
42676
43011
|
/* @__PURE__ */ jsx(Accordion, { items: singletonItems, multiple: true })
|
|
42677
43012
|
] }),
|
|
42678
43013
|
runtimeItems.length > 0 && /* @__PURE__ */ jsxs("div", { className: "mb-4", children: [
|
|
42679
|
-
/* @__PURE__ */
|
|
42680
|
-
"Runtime (",
|
|
42681
|
-
runtimeEntities.length,
|
|
42682
|
-
")"
|
|
42683
|
-
] }),
|
|
43014
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.runtimeCount", { count: runtimeEntities.length }) }),
|
|
42684
43015
|
/* @__PURE__ */ jsx(Accordion, { items: runtimeItems, multiple: true }),
|
|
42685
|
-
runtimeEntities.length > 20 && /* @__PURE__ */
|
|
42686
|
-
"+",
|
|
42687
|
-
runtimeEntities.length - 20,
|
|
42688
|
-
" more entities"
|
|
42689
|
-
] })
|
|
43016
|
+
runtimeEntities.length > 20 && /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-400 text-center mt-2", children: t("debug.moreEntities", { count: runtimeEntities.length - 20 }) })
|
|
42690
43017
|
] }),
|
|
42691
43018
|
persistentEntries.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
|
|
42692
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: "
|
|
43019
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.persistent") }),
|
|
42693
43020
|
/* @__PURE__ */ jsx(Stack, { gap: "xs", children: persistentEntries.map(([type, info]) => /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between py-1", children: [
|
|
42694
43021
|
/* @__PURE__ */ jsx(Typography, { variant: "small", children: type }),
|
|
42695
|
-
/* @__PURE__ */ jsx(Badge, { variant: info.loaded ? "success" : "default", size: "sm", children: info.loaded ?
|
|
43022
|
+
/* @__PURE__ */ jsx(Badge, { variant: info.loaded ? "success" : "default", size: "sm", children: info.loaded ? t("debug.loadedCount", { count: info.count }) : t("debug.notLoaded") })
|
|
42696
43023
|
] }, type)) })
|
|
42697
43024
|
] })
|
|
42698
43025
|
] });
|
|
@@ -42736,7 +43063,7 @@ function EventFlowTab({ events: events2 }) {
|
|
|
42736
43063
|
EmptyState,
|
|
42737
43064
|
{
|
|
42738
43065
|
title: t("debug.noEventsYet"),
|
|
42739
|
-
description: "
|
|
43066
|
+
description: t("debug.eventsExecuteHint"),
|
|
42740
43067
|
className: "py-8"
|
|
42741
43068
|
}
|
|
42742
43069
|
);
|
|
@@ -42747,17 +43074,13 @@ function EventFlowTab({ events: events2 }) {
|
|
|
42747
43074
|
return /* @__PURE__ */ jsxs("div", { className: "debug-tab debug-tab--events", children: [
|
|
42748
43075
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 mb-3 flex-wrap", children: [
|
|
42749
43076
|
/* @__PURE__ */ jsxs(ButtonGroup, { children: [
|
|
42750
|
-
/* @__PURE__ */
|
|
43077
|
+
/* @__PURE__ */ jsx(
|
|
42751
43078
|
Button,
|
|
42752
43079
|
{
|
|
42753
43080
|
size: "sm",
|
|
42754
43081
|
variant: filter === "all" ? "primary" : "secondary",
|
|
42755
43082
|
onClick: () => setFilter("all"),
|
|
42756
|
-
children:
|
|
42757
|
-
"All (",
|
|
42758
|
-
events2.length,
|
|
42759
|
-
")"
|
|
42760
|
-
]
|
|
43083
|
+
children: t("debug.allCount", { count: events2.length })
|
|
42761
43084
|
}
|
|
42762
43085
|
),
|
|
42763
43086
|
eventTypes.map((type) => {
|
|
@@ -42787,7 +43110,7 @@ function EventFlowTab({ events: events2 }) {
|
|
|
42787
43110
|
onChange: (e) => setAutoScroll(e.target.checked)
|
|
42788
43111
|
}
|
|
42789
43112
|
),
|
|
42790
|
-
"
|
|
43113
|
+
t("debug.autoScroll")
|
|
42791
43114
|
] })
|
|
42792
43115
|
] }),
|
|
42793
43116
|
/* @__PURE__ */ jsx(
|
|
@@ -42845,7 +43168,7 @@ function GuardsPanel({ guards }) {
|
|
|
42845
43168
|
EmptyState,
|
|
42846
43169
|
{
|
|
42847
43170
|
title: t("debug.noGuardEvaluations"),
|
|
42848
|
-
description: "
|
|
43171
|
+
description: t("debug.guardEvaluationsHint"),
|
|
42849
43172
|
className: "py-8"
|
|
42850
43173
|
}
|
|
42851
43174
|
);
|
|
@@ -42876,15 +43199,15 @@ function GuardsPanel({ guards }) {
|
|
|
42876
43199
|
] }),
|
|
42877
43200
|
content: /* @__PURE__ */ jsxs(Stack, { gap: "sm", children: [
|
|
42878
43201
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
42879
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: "
|
|
43202
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: t("debug.expression") }),
|
|
42880
43203
|
/* @__PURE__ */ 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 })
|
|
42881
43204
|
] }),
|
|
42882
43205
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
42883
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: "
|
|
43206
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: t("debug.inputs") }),
|
|
42884
43207
|
/* @__PURE__ */ 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) })
|
|
42885
43208
|
] }),
|
|
42886
43209
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
42887
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: "
|
|
43210
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: t("debug.trait") }),
|
|
42888
43211
|
/* @__PURE__ */ jsx(Typography, { variant: "small", children: guard.context.traitName })
|
|
42889
43212
|
] })
|
|
42890
43213
|
] })
|
|
@@ -42902,9 +43225,9 @@ function GuardsPanel({ guards }) {
|
|
|
42902
43225
|
] })
|
|
42903
43226
|
] }),
|
|
42904
43227
|
/* @__PURE__ */ jsxs(ButtonGroup, { children: [
|
|
42905
|
-
/* @__PURE__ */ jsx(Button, { size: "sm", variant: filter === "all" ? "primary" : "secondary", onClick: () => setFilter("all"), children: "
|
|
42906
|
-
/* @__PURE__ */ jsx(Button, { size: "sm", variant: filter === "passed" ? "primary" : "secondary", onClick: () => setFilter("passed"), children: "
|
|
42907
|
-
/* @__PURE__ */ jsx(Button, { size: "sm", variant: filter === "failed" ? "primary" : "secondary", onClick: () => setFilter("failed"), children: "
|
|
43228
|
+
/* @__PURE__ */ jsx(Button, { size: "sm", variant: filter === "all" ? "primary" : "secondary", onClick: () => setFilter("all"), children: t("debug.filterAll") }),
|
|
43229
|
+
/* @__PURE__ */ jsx(Button, { size: "sm", variant: filter === "passed" ? "primary" : "secondary", onClick: () => setFilter("passed"), children: t("debug.filterPassed") }),
|
|
43230
|
+
/* @__PURE__ */ jsx(Button, { size: "sm", variant: filter === "failed" ? "primary" : "secondary", onClick: () => setFilter("failed"), children: t("debug.filterFailed") })
|
|
42908
43231
|
] })
|
|
42909
43232
|
] }),
|
|
42910
43233
|
/* @__PURE__ */ jsx("div", { className: "max-h-80 overflow-y-auto", children: /* @__PURE__ */ jsx(Accordion, { items: accordionItems }) })
|
|
@@ -43030,7 +43353,7 @@ function TransitionTimeline({ transitions }) {
|
|
|
43030
43353
|
EmptyState,
|
|
43031
43354
|
{
|
|
43032
43355
|
title: t("debug.noTransitionsRecorded"),
|
|
43033
|
-
description: "
|
|
43356
|
+
description: t("debug.transitionsProcessHint"),
|
|
43034
43357
|
className: "py-8"
|
|
43035
43358
|
}
|
|
43036
43359
|
);
|
|
@@ -43047,10 +43370,7 @@ function TransitionTimeline({ transitions }) {
|
|
|
43047
43370
|
const sorted = [...transitions].reverse();
|
|
43048
43371
|
return /* @__PURE__ */ jsxs("div", { className: "debug-tab debug-tab--timeline", children: [
|
|
43049
43372
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between mb-2", children: [
|
|
43050
|
-
/* @__PURE__ */
|
|
43051
|
-
transitions.length,
|
|
43052
|
-
" transitions recorded"
|
|
43053
|
-
] }),
|
|
43373
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-500", children: t("debug.transitionsRecorded", { count: transitions.length }) }),
|
|
43054
43374
|
/* @__PURE__ */ jsxs("label", { className: "flex items-center gap-1 text-xs text-gray-500 cursor-pointer", children: [
|
|
43055
43375
|
/* @__PURE__ */ jsx(
|
|
43056
43376
|
Checkbox,
|
|
@@ -43059,7 +43379,7 @@ function TransitionTimeline({ transitions }) {
|
|
|
43059
43379
|
onChange: (e) => setAutoScroll(e.target.checked)
|
|
43060
43380
|
}
|
|
43061
43381
|
),
|
|
43062
|
-
"
|
|
43382
|
+
t("debug.autoScroll")
|
|
43063
43383
|
] })
|
|
43064
43384
|
] }),
|
|
43065
43385
|
/* @__PURE__ */ jsx(
|
|
@@ -43102,15 +43422,13 @@ function TransitionTimeline({ transitions }) {
|
|
|
43102
43422
|
variant: trace.guardResult ? "success" : "danger",
|
|
43103
43423
|
size: "sm",
|
|
43104
43424
|
children: [
|
|
43105
|
-
"
|
|
43425
|
+
t("debug.guardLabel"),
|
|
43426
|
+
" ",
|
|
43106
43427
|
trace.guardResult ? "\u2713" : "\u2717"
|
|
43107
43428
|
]
|
|
43108
43429
|
}
|
|
43109
43430
|
),
|
|
43110
|
-
/* @__PURE__ */
|
|
43111
|
-
trace.effects.length,
|
|
43112
|
-
" effects"
|
|
43113
|
-
] })
|
|
43431
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-400 ml-auto", children: t("debug.effectsCount", { count: trace.effects.length }) })
|
|
43114
43432
|
] }),
|
|
43115
43433
|
isExpanded && trace.effects.length > 0 && /* @__PURE__ */ 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__ */ jsxs("div", { className: "flex items-center gap-1", children: [
|
|
43116
43434
|
/* @__PURE__ */ jsx(EffectBadge, { effect }),
|
|
@@ -43159,13 +43477,13 @@ function ServerBridgeTab({ bridge }) {
|
|
|
43159
43477
|
EmptyState,
|
|
43160
43478
|
{
|
|
43161
43479
|
title: t("debug.noBridgeData"),
|
|
43162
|
-
description: "
|
|
43480
|
+
description: t("debug.bridgeInitHint"),
|
|
43163
43481
|
className: "py-8"
|
|
43164
43482
|
}
|
|
43165
43483
|
);
|
|
43166
43484
|
}
|
|
43167
43485
|
const formatTime4 = (ts) => {
|
|
43168
|
-
if (ts === 0) return "
|
|
43486
|
+
if (ts === 0) return t("debug.never");
|
|
43169
43487
|
const d = new Date(ts);
|
|
43170
43488
|
return d.toLocaleTimeString("en-US", {
|
|
43171
43489
|
hour12: false,
|
|
@@ -43178,14 +43496,14 @@ function ServerBridgeTab({ bridge }) {
|
|
|
43178
43496
|
/* @__PURE__ */ jsxs(Card, { className: "p-3", children: [
|
|
43179
43497
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 mb-3", children: [
|
|
43180
43498
|
/* @__PURE__ */ jsx("div", { className: `w-3 h-3 rounded-full ${bridge.connected ? "bg-green-500 animate-pulse" : "bg-red-500"}` }),
|
|
43181
|
-
/* @__PURE__ */ jsx(Typography, { variant: "h6", children: bridge.connected ? "
|
|
43499
|
+
/* @__PURE__ */ jsx(Typography, { variant: "h6", children: bridge.connected ? t("debug.connected") : t("debug.disconnected") })
|
|
43182
43500
|
] }),
|
|
43183
43501
|
/* @__PURE__ */ jsxs(Stack, { gap: "xs", children: [
|
|
43184
43502
|
/* @__PURE__ */ jsx(
|
|
43185
43503
|
StatRow,
|
|
43186
43504
|
{
|
|
43187
43505
|
label: t("debug.status"),
|
|
43188
|
-
value: bridge.connected ? "
|
|
43506
|
+
value: bridge.connected ? t("debug.connected") : t("debug.disconnected"),
|
|
43189
43507
|
variant: bridge.connected ? "success" : "danger"
|
|
43190
43508
|
}
|
|
43191
43509
|
),
|
|
@@ -43213,13 +43531,10 @@ function ServerBridgeTab({ bridge }) {
|
|
|
43213
43531
|
] })
|
|
43214
43532
|
] }),
|
|
43215
43533
|
bridge.lastError && /* @__PURE__ */ jsxs(Card, { className: "p-3 border-red-200 dark:border-red-800 bg-red-50 dark:bg-red-950", children: [
|
|
43216
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "semibold", className: "text-red-600 dark:text-red-400 mb-1", children: "
|
|
43534
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "semibold", className: "text-red-600 dark:text-red-400 mb-1", children: t("debug.lastError") }),
|
|
43217
43535
|
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-red-500 font-mono break-all", children: bridge.lastError })
|
|
43218
43536
|
] }),
|
|
43219
|
-
bridge.connected && /* @__PURE__ */ jsx("div", { className: "text-center py-2", children: /* @__PURE__ */
|
|
43220
|
-
bridge.eventsForwarded + bridge.eventsReceived,
|
|
43221
|
-
" total events processed"
|
|
43222
|
-
] }) })
|
|
43537
|
+
bridge.connected && /* @__PURE__ */ jsx("div", { className: "text-center py-2", children: /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-400", children: t("debug.totalEventsProcessed", { count: bridge.eventsForwarded + bridge.eventsReceived }) }) })
|
|
43223
43538
|
] }) });
|
|
43224
43539
|
}
|
|
43225
43540
|
var init_ServerBridgeTab = __esm({
|
|
@@ -43329,7 +43644,7 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
43329
43644
|
EmptyState,
|
|
43330
43645
|
{
|
|
43331
43646
|
title: t("debug.noActiveTraits"),
|
|
43332
|
-
description: "
|
|
43647
|
+
description: t("debug.traitsInitHint"),
|
|
43333
43648
|
className: "py-8"
|
|
43334
43649
|
}
|
|
43335
43650
|
);
|
|
@@ -43346,7 +43661,7 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
43346
43661
|
};
|
|
43347
43662
|
return /* @__PURE__ */ jsxs("div", { className: "debug-tab debug-tab--dispatch", children: [
|
|
43348
43663
|
/* @__PURE__ */ jsxs("div", { className: "mb-3", children: [
|
|
43349
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
43664
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.activeStates") }),
|
|
43350
43665
|
/* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1", children: traits2.map((trait) => /* @__PURE__ */ jsxs(Badge, { variant: "success", size: "sm", children: [
|
|
43351
43666
|
trait.name,
|
|
43352
43667
|
": ",
|
|
@@ -43354,8 +43669,8 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
43354
43669
|
] }, trait.id)) })
|
|
43355
43670
|
] }),
|
|
43356
43671
|
/* @__PURE__ */ jsxs("div", { className: "mb-3", children: [
|
|
43357
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
43358
|
-
availableEvents.length === 0 ? /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-400 italic", children: "
|
|
43672
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.availableEvents") }),
|
|
43673
|
+
availableEvents.length === 0 ? /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-400 italic", children: t("debug.noTransitionsFromState") }) : /* @__PURE__ */ jsx(Stack, { gap: "xs", children: availableEvents.map(({ event, transitions }) => /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
43359
43674
|
/* @__PURE__ */ jsx(
|
|
43360
43675
|
Button,
|
|
43361
43676
|
{
|
|
@@ -43367,15 +43682,15 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
43367
43682
|
}
|
|
43368
43683
|
),
|
|
43369
43684
|
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-500", children: transitions.map((t2) => `${t2.from} -> ${t2.to}`).join(", ") }),
|
|
43370
|
-
transitions.some((
|
|
43685
|
+
transitions.some((tr) => tr.guard) && /* @__PURE__ */ jsx(Badge, { variant: "warning", size: "sm", children: t("debug.guarded") })
|
|
43371
43686
|
] }, event)) })
|
|
43372
43687
|
] }),
|
|
43373
43688
|
unavailableEvents.length > 0 && /* @__PURE__ */ jsxs("div", { className: "mb-3", children: [
|
|
43374
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
43689
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.otherEvents") }),
|
|
43375
43690
|
/* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1", children: unavailableEvents.map((event) => /* @__PURE__ */ jsx(Badge, { variant: "default", size: "sm", className: "opacity-50", children: event }, event)) })
|
|
43376
43691
|
] }),
|
|
43377
43692
|
log12.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
|
|
43378
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
43693
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.recentTransitions") }),
|
|
43379
43694
|
/* @__PURE__ */ jsx(Stack, { gap: "xs", children: log12.map((entry, i) => /* @__PURE__ */ jsxs(Typography, { variant: "small", className: "font-mono text-xs", children: [
|
|
43380
43695
|
/* @__PURE__ */ jsx("span", { className: "text-purple-400", children: entry.traitName }),
|
|
43381
43696
|
" ",
|
|
@@ -43406,21 +43721,20 @@ var init_RuntimeDebugger = __esm({
|
|
|
43406
43721
|
}
|
|
43407
43722
|
});
|
|
43408
43723
|
function ServerResponseRow({ sr }) {
|
|
43724
|
+
const { t } = useTranslate();
|
|
43409
43725
|
const entityEntries = Object.entries(sr.dataEntities);
|
|
43410
43726
|
return /* @__PURE__ */ jsxs("div", { className: "ml-4 pl-2 border-l border-purple-500/30 py-0.5 text-xs font-mono", children: [
|
|
43411
43727
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
43412
43728
|
/* @__PURE__ */ jsxs("span", { className: sr.success ? "text-green-600 dark:text-green-400" : "text-red-600 dark:text-red-400", children: [
|
|
43413
43729
|
sr.success ? "\u2713" : "\u2717",
|
|
43414
|
-
"
|
|
43730
|
+
" ",
|
|
43731
|
+
t("debug.server")
|
|
43415
43732
|
] }),
|
|
43416
43733
|
/* @__PURE__ */ jsx("span", { className: "text-purple-600 dark:text-purple-300", children: sr.orbitalName }),
|
|
43417
|
-
sr.clientEffects > 0 && /* @__PURE__ */
|
|
43418
|
-
sr.clientEffects,
|
|
43419
|
-
" clientEffect",
|
|
43420
|
-
sr.clientEffects !== 1 ? "s" : ""
|
|
43421
|
-
] }),
|
|
43734
|
+
sr.clientEffects > 0 && /* @__PURE__ */ jsx("span", { className: "px-1 rounded bg-purple-500/15 text-purple-600 dark:text-purple-300", children: t("debug.clientEffectsCount", { count: sr.clientEffects }) }),
|
|
43422
43735
|
sr.emittedEvents.length > 0 && /* @__PURE__ */ jsxs("span", { className: "px-1 rounded bg-blue-500/15 text-blue-300", children: [
|
|
43423
|
-
"
|
|
43736
|
+
t("debug.emitLabel"),
|
|
43737
|
+
" ",
|
|
43424
43738
|
sr.emittedEvents.join(", ")
|
|
43425
43739
|
] }),
|
|
43426
43740
|
sr.error && /* @__PURE__ */ jsx("span", { className: "px-1 rounded bg-red-500/15 text-red-600 dark:text-red-400 truncate max-w-[300px]", children: sr.error })
|
|
@@ -43428,13 +43742,12 @@ function ServerResponseRow({ sr }) {
|
|
|
43428
43742
|
entityEntries.length > 0 && /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1 mt-0.5", children: entityEntries.map(([name, count]) => /* @__PURE__ */ jsxs("span", { className: "px-1 rounded bg-[var(--color-card)] text-foreground", children: [
|
|
43429
43743
|
name,
|
|
43430
43744
|
": ",
|
|
43431
|
-
count
|
|
43432
|
-
" row",
|
|
43433
|
-
count !== 1 ? "s" : ""
|
|
43745
|
+
t("debug.rowsCount", { count })
|
|
43434
43746
|
] }, name)) })
|
|
43435
43747
|
] });
|
|
43436
43748
|
}
|
|
43437
43749
|
function TransitionRow({ trace }) {
|
|
43750
|
+
const { t } = useTranslate();
|
|
43438
43751
|
const isServerEntry = !!trace.serverResponse && trace.traitName.startsWith("server:");
|
|
43439
43752
|
const hasFailedEffects = trace.effects.some((e) => e.status === "failed");
|
|
43440
43753
|
if (isServerEntry && trace.serverResponse) {
|
|
@@ -43442,7 +43755,7 @@ function TransitionRow({ trace }) {
|
|
|
43442
43755
|
/* @__PURE__ */ jsxs("div", { className: "flex items-start gap-2 text-xs font-mono", children: [
|
|
43443
43756
|
/* @__PURE__ */ jsx("span", { className: "mt-1.5 w-1.5 h-1.5 rounded-full flex-shrink-0 bg-purple-500" }),
|
|
43444
43757
|
/* @__PURE__ */ jsx(Badge, { variant: "warning", size: "sm", className: "flex-shrink-0", children: trace.event }),
|
|
43445
|
-
/* @__PURE__ */ jsx("span", { className: "text-purple-600 dark:text-purple-400 flex-shrink-0", children: "
|
|
43758
|
+
/* @__PURE__ */ jsx("span", { className: "text-purple-600 dark:text-purple-400 flex-shrink-0", children: t("debug.serverResponse") })
|
|
43446
43759
|
] }),
|
|
43447
43760
|
/* @__PURE__ */ jsx(ServerResponseRow, { sr: trace.serverResponse })
|
|
43448
43761
|
] });
|
|
@@ -43483,6 +43796,7 @@ function VerifyModePanel({
|
|
|
43483
43796
|
serverCount,
|
|
43484
43797
|
localCount
|
|
43485
43798
|
}) {
|
|
43799
|
+
const { t } = useTranslate();
|
|
43486
43800
|
const [expanded, setExpanded] = React85.useState(true);
|
|
43487
43801
|
const scrollRef = React85.useRef(null);
|
|
43488
43802
|
const prevCountRef = React85.useRef(0);
|
|
@@ -43513,30 +43827,20 @@ function VerifyModePanel({
|
|
|
43513
43827
|
onClick: () => setExpanded((v) => !v),
|
|
43514
43828
|
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",
|
|
43515
43829
|
"aria-expanded": expanded,
|
|
43516
|
-
"aria-label": expanded ? "
|
|
43830
|
+
"aria-label": expanded ? t("debug.collapseVerificationTimeline") : t("debug.expandVerificationTimeline"),
|
|
43517
43831
|
"data-testid": "debugger-verify-toggle",
|
|
43518
43832
|
children: [
|
|
43519
43833
|
/* @__PURE__ */ jsx("span", { className: "text-foreground/50 w-3", "aria-hidden": true, children: expanded ? "\u25BE" : "\u25B8" }),
|
|
43520
|
-
/* @__PURE__ */ jsx(Badge, { variant: failedChecks > 0 ? "danger" : "success", size: "sm", children: failedChecks > 0 ?
|
|
43521
|
-
/* @__PURE__ */
|
|
43522
|
-
|
|
43523
|
-
" local"
|
|
43524
|
-
] }),
|
|
43525
|
-
/* @__PURE__ */ jsxs("span", { className: "text-purple-600 dark:text-purple-400", children: [
|
|
43526
|
-
serverCount,
|
|
43527
|
-
" server"
|
|
43528
|
-
] }),
|
|
43834
|
+
/* @__PURE__ */ jsx(Badge, { variant: failedChecks > 0 ? "danger" : "success", size: "sm", children: failedChecks > 0 ? t("debug.failCount", { count: failedChecks }) : t("debug.ok") }),
|
|
43835
|
+
/* @__PURE__ */ jsx("span", { className: "text-foreground/70", children: t("debug.localCount", { count: localCount }) }),
|
|
43836
|
+
/* @__PURE__ */ jsx("span", { className: "text-purple-600 dark:text-purple-400", children: t("debug.serverCount", { count: serverCount }) }),
|
|
43529
43837
|
traitStates && /* @__PURE__ */ jsx("span", { className: "text-cyan-600 dark:text-cyan-400 truncate max-w-[400px]", children: traitStates }),
|
|
43530
|
-
!expanded && transitions.length > 0 && /* @__PURE__ */
|
|
43531
|
-
transitions.length,
|
|
43532
|
-
" transition",
|
|
43533
|
-
transitions.length !== 1 ? "s" : ""
|
|
43534
|
-
] })
|
|
43838
|
+
!expanded && transitions.length > 0 && /* @__PURE__ */ jsx("span", { className: "ml-auto text-foreground/50", children: t("debug.transitionsCount", { count: transitions.length }) })
|
|
43535
43839
|
]
|
|
43536
43840
|
}
|
|
43537
43841
|
),
|
|
43538
43842
|
expanded && /* @__PURE__ */ jsxs("div", { className: "flex-1 flex overflow-hidden", children: [
|
|
43539
|
-
/* @__PURE__ */ jsx("div", { ref: scrollRef, className: "flex-1 overflow-y-auto", children: /* @__PURE__ */ jsx("div", { className: "px-2 py-1", children: transitions.length === 0 ? /* @__PURE__ */ jsx("div", { className: "text-foreground/50 text-xs font-mono py-2 text-center", children: "
|
|
43843
|
+
/* @__PURE__ */ jsx("div", { ref: scrollRef, className: "flex-1 overflow-y-auto", children: /* @__PURE__ */ jsx("div", { className: "px-2 py-1", children: transitions.length === 0 ? /* @__PURE__ */ jsx("div", { className: "text-foreground/50 text-xs font-mono py-2 text-center", children: t("debug.waitingForTransitions") }) : /* @__PURE__ */ jsx("div", { className: "space-y-0.5", children: transitions.map((trace) => /* @__PURE__ */ jsx(TransitionRow, { trace }, trace.id)) }) }) }),
|
|
43540
43844
|
/* @__PURE__ */ jsx(WalkMinimap, {})
|
|
43541
43845
|
] })
|
|
43542
43846
|
]
|
|
@@ -43552,6 +43856,7 @@ function RuntimeDebugger({
|
|
|
43552
43856
|
defaultTab,
|
|
43553
43857
|
schema
|
|
43554
43858
|
}) {
|
|
43859
|
+
const { t } = useTranslate();
|
|
43555
43860
|
const [isCollapsed, setIsCollapsed] = React85.useState(mode === "verify" ? true : defaultCollapsed);
|
|
43556
43861
|
const [isVisible, setIsVisible] = React85.useState(mode === "inline" || mode === "verify" || isDebugEnabled2());
|
|
43557
43862
|
const debugData = useDebugData();
|
|
@@ -43590,55 +43895,55 @@ function RuntimeDebugger({
|
|
|
43590
43895
|
const tabItems = [
|
|
43591
43896
|
{
|
|
43592
43897
|
id: "dispatch",
|
|
43593
|
-
label: "
|
|
43898
|
+
label: t("debug.tabDispatch"),
|
|
43594
43899
|
badge: debugData.traits.length || void 0,
|
|
43595
43900
|
content: /* @__PURE__ */ jsx(EventDispatcherTab, { traits: debugData.traits, schema })
|
|
43596
43901
|
},
|
|
43597
43902
|
{
|
|
43598
43903
|
id: "verify",
|
|
43599
|
-
label: failedChecks > 0 ? "
|
|
43904
|
+
label: failedChecks > 0 ? t("debug.tabVerifyAlert") : t("debug.tabVerify"),
|
|
43600
43905
|
badge: verification.summary.totalChecks || void 0,
|
|
43601
43906
|
content: /* @__PURE__ */ jsx(VerificationTab, { checks: verification.checks, summary: verification.summary })
|
|
43602
43907
|
},
|
|
43603
43908
|
{
|
|
43604
43909
|
id: "timeline",
|
|
43605
|
-
label: "
|
|
43910
|
+
label: t("debug.tabTimeline"),
|
|
43606
43911
|
badge: verification.transitions.length || void 0,
|
|
43607
43912
|
content: /* @__PURE__ */ jsx(TransitionTimeline, { transitions: verification.transitions })
|
|
43608
43913
|
},
|
|
43609
43914
|
{
|
|
43610
43915
|
id: "bridge",
|
|
43611
|
-
label: "
|
|
43916
|
+
label: t("debug.tabBridge"),
|
|
43612
43917
|
badge: verification.bridge?.connected ? void 0 : 1,
|
|
43613
43918
|
content: /* @__PURE__ */ jsx(ServerBridgeTab, { bridge: verification.bridge })
|
|
43614
43919
|
},
|
|
43615
43920
|
{
|
|
43616
43921
|
id: "traits",
|
|
43617
|
-
label: "
|
|
43922
|
+
label: t("debug.tabTraits"),
|
|
43618
43923
|
badge: debugData.traits.length || void 0,
|
|
43619
43924
|
content: /* @__PURE__ */ jsx(TraitsTab, { traits: debugData.traits })
|
|
43620
43925
|
},
|
|
43621
43926
|
{
|
|
43622
43927
|
id: "ticks",
|
|
43623
|
-
label: "
|
|
43624
|
-
badge: debugData.ticks.filter((
|
|
43928
|
+
label: t("debug.tabTicks"),
|
|
43929
|
+
badge: debugData.ticks.filter((tick) => tick.active).length || void 0,
|
|
43625
43930
|
content: /* @__PURE__ */ jsx(TicksTab, { ticks: debugData.ticks })
|
|
43626
43931
|
},
|
|
43627
43932
|
{
|
|
43628
43933
|
id: "entities",
|
|
43629
|
-
label: "
|
|
43934
|
+
label: t("debug.tabEntities"),
|
|
43630
43935
|
badge: debugData.entitySnapshot?.runtime.length || void 0,
|
|
43631
43936
|
content: /* @__PURE__ */ jsx(EntitiesTab, { snapshot: debugData.entitySnapshot })
|
|
43632
43937
|
},
|
|
43633
43938
|
{
|
|
43634
43939
|
id: "events",
|
|
43635
|
-
label: "
|
|
43940
|
+
label: t("debug.tabEvents"),
|
|
43636
43941
|
badge: debugData.events.length > 0 ? debugData.events.length : void 0,
|
|
43637
43942
|
content: /* @__PURE__ */ jsx(EventFlowTab, { events: debugData.events })
|
|
43638
43943
|
},
|
|
43639
43944
|
{
|
|
43640
43945
|
id: "guards",
|
|
43641
|
-
label: "
|
|
43946
|
+
label: t("debug.tabGuards"),
|
|
43642
43947
|
badge: debugData.guards.filter((g) => !g.result).length || void 0,
|
|
43643
43948
|
content: /* @__PURE__ */ jsx(GuardsPanel, { guards: debugData.guards })
|
|
43644
43949
|
}
|
|
@@ -43666,15 +43971,10 @@ function RuntimeDebugger({
|
|
|
43666
43971
|
children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
43667
43972
|
/* @__PURE__ */ jsxs(Typography, { variant: "h6", style: { fontSize: "0.75rem" }, children: [
|
|
43668
43973
|
isCollapsed ? "\u25B6" : "\u25BC",
|
|
43669
|
-
"
|
|
43974
|
+
" ",
|
|
43975
|
+
t("debug.debugger")
|
|
43670
43976
|
] }),
|
|
43671
|
-
failedChecks > 0 ? /* @__PURE__ */
|
|
43672
|
-
failedChecks,
|
|
43673
|
-
" failed"
|
|
43674
|
-
] }) : debugData.traits.length > 0 ? /* @__PURE__ */ jsxs(Badge, { variant: "success", size: "sm", children: [
|
|
43675
|
-
debugData.traits.length,
|
|
43676
|
-
" traits"
|
|
43677
|
-
] }) : /* @__PURE__ */ jsx(Badge, { variant: "info", size: "sm", children: "Idle" })
|
|
43977
|
+
failedChecks > 0 ? /* @__PURE__ */ jsx(Badge, { variant: "danger", size: "sm", children: t("debug.failedCount", { count: failedChecks }) }) : debugData.traits.length > 0 ? /* @__PURE__ */ jsx(Badge, { variant: "success", size: "sm", children: t("debug.traitsCount", { count: debugData.traits.length }) }) : /* @__PURE__ */ jsx(Badge, { variant: "info", size: "sm", children: t("debug.idle") })
|
|
43678
43978
|
] })
|
|
43679
43979
|
}
|
|
43680
43980
|
),
|
|
@@ -43692,9 +43992,9 @@ function RuntimeDebugger({
|
|
|
43692
43992
|
);
|
|
43693
43993
|
}
|
|
43694
43994
|
if (mode === "verify") {
|
|
43695
|
-
const traitStates = debugData.traits.map((
|
|
43696
|
-
const serverEntries = verification.transitions.filter((
|
|
43697
|
-
const localEntries = verification.transitions.filter((
|
|
43995
|
+
const traitStates = debugData.traits.map((t2) => `${t2.name}:${t2.currentState}`).join(" | ");
|
|
43996
|
+
const serverEntries = verification.transitions.filter((t2) => t2.serverResponse);
|
|
43997
|
+
const localEntries = verification.transitions.filter((t2) => !t2.serverResponse);
|
|
43698
43998
|
return /* @__PURE__ */ jsx(
|
|
43699
43999
|
VerifyModePanel,
|
|
43700
44000
|
{
|
|
@@ -43726,7 +44026,7 @@ function RuntimeDebugger({
|
|
|
43726
44026
|
variant: "secondary",
|
|
43727
44027
|
size: "sm",
|
|
43728
44028
|
className: "runtime-debugger__toggle",
|
|
43729
|
-
title: "
|
|
44029
|
+
title: t("debug.openDebugger"),
|
|
43730
44030
|
children: failedChecks > 0 ? /* @__PURE__ */ jsxs("span", { className: "relative", children: [
|
|
43731
44031
|
/* @__PURE__ */ jsx("span", { children: "V" }),
|
|
43732
44032
|
/* @__PURE__ */ jsx("span", { className: "absolute -top-1 -right-2 w-2 h-2 bg-red-500 rounded-full" })
|
|
@@ -43736,11 +44036,8 @@ function RuntimeDebugger({
|
|
|
43736
44036
|
/* @__PURE__ */ jsxs("div", { className: "runtime-debugger__header", children: [
|
|
43737
44037
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
43738
44038
|
/* @__PURE__ */ jsx("span", { className: "text-lg", children: "V" }),
|
|
43739
|
-
/* @__PURE__ */ jsx(Typography, { variant: "h6", children: "
|
|
43740
|
-
failedChecks > 0 ? /* @__PURE__ */
|
|
43741
|
-
failedChecks,
|
|
43742
|
-
" failed"
|
|
43743
|
-
] }) : verification.summary.totalChecks > 0 ? /* @__PURE__ */ jsx(Badge, { variant: "success", size: "sm", children: "All passing" }) : /* @__PURE__ */ jsx(Badge, { variant: "info", size: "sm", children: "Runtime" })
|
|
44039
|
+
/* @__PURE__ */ jsx(Typography, { variant: "h6", children: t("debug.kflowVerifier") }),
|
|
44040
|
+
failedChecks > 0 ? /* @__PURE__ */ jsx(Badge, { variant: "danger", size: "sm", children: t("debug.failedCount", { count: failedChecks }) }) : verification.summary.totalChecks > 0 ? /* @__PURE__ */ jsx(Badge, { variant: "success", size: "sm", children: t("debug.allPassing") }) : /* @__PURE__ */ jsx(Badge, { variant: "info", size: "sm", children: t("debug.runtime") })
|
|
43744
44041
|
] }),
|
|
43745
44042
|
/* @__PURE__ */ jsx(
|
|
43746
44043
|
Button,
|
|
@@ -43748,7 +44045,7 @@ function RuntimeDebugger({
|
|
|
43748
44045
|
onClick: () => setIsCollapsed(true),
|
|
43749
44046
|
variant: "ghost",
|
|
43750
44047
|
size: "sm",
|
|
43751
|
-
title: "
|
|
44048
|
+
title: t("debug.close"),
|
|
43752
44049
|
children: "x"
|
|
43753
44050
|
}
|
|
43754
44051
|
)
|
|
@@ -43762,7 +44059,7 @@ function RuntimeDebugger({
|
|
|
43762
44059
|
className: "runtime-debugger__tabs"
|
|
43763
44060
|
}
|
|
43764
44061
|
) }),
|
|
43765
|
-
/* @__PURE__ */ jsx("div", { className: "runtime-debugger__footer", children: /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-foreground/50", children: "
|
|
44062
|
+
/* @__PURE__ */ jsx("div", { className: "runtime-debugger__footer", children: /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-foreground/50", children: t("debug.toggleHint") }) })
|
|
43766
44063
|
] })
|
|
43767
44064
|
}
|
|
43768
44065
|
);
|
|
@@ -43788,6 +44085,7 @@ var init_RuntimeDebugger2 = __esm({
|
|
|
43788
44085
|
init_TransitionTimeline();
|
|
43789
44086
|
init_ServerBridgeTab();
|
|
43790
44087
|
init_EventDispatcherTab();
|
|
44088
|
+
init_useTranslate();
|
|
43791
44089
|
init_RuntimeDebugger();
|
|
43792
44090
|
RuntimeDebugger.displayName = "RuntimeDebugger";
|
|
43793
44091
|
}
|
|
@@ -45076,7 +45374,7 @@ var init_StatCard = __esm({
|
|
|
45076
45374
|
}
|
|
45077
45375
|
);
|
|
45078
45376
|
}
|
|
45079
|
-
const label = schemaStats?.[0]?.label || labelToUse || "
|
|
45377
|
+
const label = schemaStats?.[0]?.label || labelToUse || t("statCard.defaultLabel");
|
|
45080
45378
|
const normalizedPropValue = Array.isArray(propValue) ? propValue[0] ?? propValue.length : propValue;
|
|
45081
45379
|
const value = schemaStats?.[0]?.value ?? normalizedPropValue ?? 0;
|
|
45082
45380
|
const trendDirection = manualDirection || (calculatedTrend === void 0 || calculatedTrend === 0 ? "neutral" : calculatedTrend > 0 ? "up" : "down");
|
|
@@ -45119,7 +45417,7 @@ var init_StatCard = __esm({
|
|
|
45119
45417
|
]
|
|
45120
45418
|
}
|
|
45121
45419
|
),
|
|
45122
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", color: "secondary", as: "span", children: "
|
|
45420
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", color: "secondary", as: "span", children: t("statCard.vsLastPeriod") })
|
|
45123
45421
|
] }),
|
|
45124
45422
|
subtitle && !calculatedTrend && /* @__PURE__ */ jsx(Typography, { variant: "small", color: "secondary", children: subtitle })
|
|
45125
45423
|
] }),
|