@almadar/ui 5.21.7 → 5.21.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/avl/index.cjs +970 -650
- package/dist/avl/index.js +970 -650
- package/dist/components/game/organisms/three/index.cjs +489 -1
- package/dist/components/game/organisms/three/index.js +489 -1
- package/dist/components/index.cjs +675 -370
- package/dist/components/index.js +675 -370
- package/dist/docs/index.cjs +300 -5
- package/dist/docs/index.js +300 -5
- package/dist/hooks/index.cjs +296 -3
- package/dist/hooks/index.js +296 -3
- package/dist/locales/index.cjs +896 -9
- package/dist/locales/index.js +896 -9
- package/dist/providers/index.cjs +675 -370
- package/dist/providers/index.js +675 -370
- package/dist/runtime/index.cjs +675 -370
- package/dist/runtime/index.js +675 -370
- package/locales/ar.json +300 -31
- package/locales/en.json +296 -31
- package/locales/sl.json +300 -31
- package/package.json +1 -1
package/dist/providers/index.cjs
CHANGED
|
@@ -1963,7 +1963,10 @@ var en_default;
|
|
|
1963
1963
|
var init_en = __esm({
|
|
1964
1964
|
"locales/en.json"() {
|
|
1965
1965
|
en_default = {
|
|
1966
|
-
$meta: {
|
|
1966
|
+
$meta: {
|
|
1967
|
+
locale: "en",
|
|
1968
|
+
direction: "ltr"
|
|
1969
|
+
},
|
|
1967
1970
|
"common.save": "Save",
|
|
1968
1971
|
"common.cancel": "Cancel",
|
|
1969
1972
|
"common.delete": "Delete",
|
|
@@ -2105,7 +2108,6 @@ var init_en = __esm({
|
|
|
2105
2108
|
"error.somethingWentWrong": "Something went wrong",
|
|
2106
2109
|
"error.loadingItems": "Loading items...",
|
|
2107
2110
|
"error.noItemsFound": "No items found",
|
|
2108
|
-
"error.notFound": "Not found",
|
|
2109
2111
|
"debug.noEntityData": "No entity data",
|
|
2110
2112
|
"debug.noEntities": "No entities",
|
|
2111
2113
|
"debug.noTicks": "No ticks registered",
|
|
@@ -2137,7 +2139,298 @@ var init_en = __esm({
|
|
|
2137
2139
|
"template.showcase": "Showcase",
|
|
2138
2140
|
"template.faq": "Frequently Asked Questions",
|
|
2139
2141
|
"template.ourTeam": "Our Team",
|
|
2140
|
-
"template.caseStudies": "Case Studies"
|
|
2142
|
+
"template.caseStudies": "Case Studies",
|
|
2143
|
+
"richBlockEditor.toolbar.text": "Text",
|
|
2144
|
+
"richBlockEditor.toolbar.h1": "H1",
|
|
2145
|
+
"richBlockEditor.toolbar.h2": "H2",
|
|
2146
|
+
"richBlockEditor.toolbar.h3": "H3",
|
|
2147
|
+
"richBlockEditor.toolbar.bulletList": "Bullet list",
|
|
2148
|
+
"richBlockEditor.toolbar.numbered": "Numbered",
|
|
2149
|
+
"richBlockEditor.toolbar.quote": "Quote",
|
|
2150
|
+
"richBlockEditor.toolbar.code": "Code",
|
|
2151
|
+
"richBlockEditor.toolbar.divider": "Divider",
|
|
2152
|
+
"richBlockEditor.toolbar.image": "Image",
|
|
2153
|
+
"richBlockEditor.blockType.paragraph": "Text",
|
|
2154
|
+
"richBlockEditor.blockType.heading1": "Heading 1",
|
|
2155
|
+
"richBlockEditor.blockType.heading2": "Heading 2",
|
|
2156
|
+
"richBlockEditor.blockType.heading3": "Heading 3",
|
|
2157
|
+
"richBlockEditor.blockType.bulletList": "Bullet list",
|
|
2158
|
+
"richBlockEditor.blockType.numberedList": "Numbered list",
|
|
2159
|
+
"richBlockEditor.blockType.quote": "Quote",
|
|
2160
|
+
"richBlockEditor.blockType.code": "Code",
|
|
2161
|
+
"richBlockEditor.blockType.divider": "Divider",
|
|
2162
|
+
"richBlockEditor.blockType.image": "Image",
|
|
2163
|
+
"richBlockEditor.blockActions": "Block actions",
|
|
2164
|
+
"richBlockEditor.duplicate": "Duplicate",
|
|
2165
|
+
"richBlockEditor.turnInto": "Turn into",
|
|
2166
|
+
"richBlockEditor.placeholder.heading1": "Heading 1",
|
|
2167
|
+
"richBlockEditor.placeholder.heading2": "Heading 2",
|
|
2168
|
+
"richBlockEditor.placeholder.heading3": "Heading 3",
|
|
2169
|
+
"richBlockEditor.placeholder.quote": "Quote",
|
|
2170
|
+
"richBlockEditor.placeholder.code": "Enter code",
|
|
2171
|
+
"richBlockEditor.placeholder.paragraph": "Start writing...",
|
|
2172
|
+
"richBlockEditor.placeholder.listItem": "List item",
|
|
2173
|
+
"richBlockEditor.placeholder.caption": "Caption (optional)",
|
|
2174
|
+
"richBlockEditor.aria.heading1Block": "Heading 1 block",
|
|
2175
|
+
"richBlockEditor.aria.heading2Block": "Heading 2 block",
|
|
2176
|
+
"richBlockEditor.aria.heading3Block": "Heading 3 block",
|
|
2177
|
+
"richBlockEditor.aria.quoteBlock": "Quote block",
|
|
2178
|
+
"richBlockEditor.aria.codeBlock": "Code block",
|
|
2179
|
+
"richBlockEditor.aria.codeLanguage": "Code language",
|
|
2180
|
+
"richBlockEditor.aria.imageUrl": "Image URL",
|
|
2181
|
+
"richBlockEditor.aria.imageCaption": "Image caption",
|
|
2182
|
+
"richBlockEditor.aria.listItem": "List item",
|
|
2183
|
+
"richBlockEditor.aria.removeListItem": "Remove list item",
|
|
2184
|
+
"richBlockEditor.aria.paragraphBlock": "Paragraph block",
|
|
2185
|
+
"richBlockEditor.embeddedImage": "Embedded image",
|
|
2186
|
+
"richBlockEditor.noImageUrl": "No image URL set",
|
|
2187
|
+
"richBlockEditor.addItem": "Add item",
|
|
2188
|
+
"richBlockEditor.insertParagraphBelow": "Insert paragraph below",
|
|
2189
|
+
"richBlockEditor.editorToolbar": "Block editor toolbar",
|
|
2190
|
+
"richBlockEditor.insertEntry": "Insert {{label}}",
|
|
2191
|
+
"versionDiff.compare": "Compare",
|
|
2192
|
+
"versionDiff.to": "to",
|
|
2193
|
+
"versionDiff.beforeRevision": "Before revision",
|
|
2194
|
+
"versionDiff.afterRevision": "After revision",
|
|
2195
|
+
"versionDiff.switchToInline": "Switch to inline view",
|
|
2196
|
+
"versionDiff.switchToSideBySide": "Switch to side-by-side view",
|
|
2197
|
+
"versionDiff.revert": "Revert",
|
|
2198
|
+
"versionDiff.byAuthor": " by {{author}}",
|
|
2199
|
+
"violationAlert.actionType.measure": "Corrective Measure",
|
|
2200
|
+
"violationAlert.actionType.admin": "Administrative Action",
|
|
2201
|
+
"violationAlert.actionType.penalty": "Penalty Proceedings",
|
|
2202
|
+
"violationAlert.fallbackMessage": "Violation",
|
|
2203
|
+
"violationAlert.adminLabel": "Admin:",
|
|
2204
|
+
"violationAlert.penaltyLabel": "Penalty:",
|
|
2205
|
+
"violationAlert.goToField": "Go to field",
|
|
2206
|
+
"branchingLogic.title": "Branching logic",
|
|
2207
|
+
"branchingLogic.if": "If",
|
|
2208
|
+
"branchingLogic.goTo": "go to",
|
|
2209
|
+
"branchingLogic.rules": "Rules",
|
|
2210
|
+
"branchingLogic.logicGraph": "Logic graph",
|
|
2211
|
+
"branchingLogic.addRule": "Add rule",
|
|
2212
|
+
"branchingLogic.deleteRule": "Delete rule",
|
|
2213
|
+
"branchingLogic.endOfSurvey": "End of survey",
|
|
2214
|
+
"branchingLogic.brokenReference": "Broken reference",
|
|
2215
|
+
"branchingLogic.selectQuestion": "Select question",
|
|
2216
|
+
"branchingLogic.selectTarget": "Select target",
|
|
2217
|
+
"branchingLogic.selectValue": "Select value",
|
|
2218
|
+
"branchingLogic.addValue": "Add value",
|
|
2219
|
+
"branchingLogic.value": "Value",
|
|
2220
|
+
"branchingLogic.typeValuePressEnter": "Type value, press Enter",
|
|
2221
|
+
"branchingLogic.operatorEquals": "equals",
|
|
2222
|
+
"branchingLogic.operatorNotEquals": "does not equal",
|
|
2223
|
+
"branchingLogic.operatorContains": "contains",
|
|
2224
|
+
"branchingLogic.operatorIn": "is one of",
|
|
2225
|
+
"branchingLogic.graphAriaLabel": "Branching logic graph",
|
|
2226
|
+
"branchingLogic.ruleCountOne": "{{count}} rule",
|
|
2227
|
+
"branchingLogic.ruleCountOther": "{{count}} rules",
|
|
2228
|
+
"branchingLogic.brokenCount": "{{count}} broken",
|
|
2229
|
+
"branchingLogic.emptyNoQuestions": "Add questions before building branching rules.",
|
|
2230
|
+
"branchingLogic.emptyNoRules": "No rules yet. Add a rule to define branching logic.",
|
|
2231
|
+
"filterGroup.filters": "Filters",
|
|
2232
|
+
"filterGroup.all": "All",
|
|
2233
|
+
"filterGroup.clear": "Clear",
|
|
2234
|
+
"filterGroup.clearAll": "Clear all",
|
|
2235
|
+
"filterGroup.from": "From",
|
|
2236
|
+
"filterGroup.to": "To",
|
|
2237
|
+
"filterGroup.allOf": "All {{label}}",
|
|
2238
|
+
"filterGroup.activeCount": "{{count}} active",
|
|
2239
|
+
"debug.guardEvaluationsHint": "Guard evaluations will appear when transitions or ticks with guards execute",
|
|
2240
|
+
"debug.expression": "Expression",
|
|
2241
|
+
"debug.inputs": "Inputs",
|
|
2242
|
+
"debug.trait": "Trait",
|
|
2243
|
+
"debug.filterAll": "All",
|
|
2244
|
+
"debug.filterPassed": "Passed",
|
|
2245
|
+
"debug.filterFailed": "Failed",
|
|
2246
|
+
"debug.traitsInitHint": "Traits will appear when the state machine initializes",
|
|
2247
|
+
"debug.traitsMountHint": "Traits will appear when components using them are mounted",
|
|
2248
|
+
"debug.activeStates": "Active States",
|
|
2249
|
+
"debug.availableEvents": "Available Events",
|
|
2250
|
+
"debug.noTransitionsFromState": "No transitions from current state",
|
|
2251
|
+
"debug.guarded": "guarded",
|
|
2252
|
+
"debug.otherEvents": "Other Events (not available from current state)",
|
|
2253
|
+
"debug.recentTransitions": "Recent Transitions",
|
|
2254
|
+
"debug.transitionsCount": "{{count}} transitions",
|
|
2255
|
+
"debug.states": "States",
|
|
2256
|
+
"debug.transitions": "Transitions",
|
|
2257
|
+
"debug.guards": "Guards",
|
|
2258
|
+
"debug.debugModeHint": "Debug mode may not be enabled",
|
|
2259
|
+
"debug.entitiesSpawnHint": "Entities will appear when spawned",
|
|
2260
|
+
"debug.singleton": "Singleton",
|
|
2261
|
+
"debug.singletonsCount": "Singletons ({{count}})",
|
|
2262
|
+
"debug.runtimeCount": "Runtime ({{count}})",
|
|
2263
|
+
"debug.moreEntities": "+{{count}} more entities",
|
|
2264
|
+
"debug.persistent": "Persistent",
|
|
2265
|
+
"debug.loadedCount": "{{count}} loaded",
|
|
2266
|
+
"debug.notLoaded": "not loaded",
|
|
2267
|
+
"debug.eventsExecuteHint": "Events will appear as traits, ticks, and other systems execute",
|
|
2268
|
+
"debug.allCount": "All ({{count}})",
|
|
2269
|
+
"debug.autoScroll": "Auto-scroll",
|
|
2270
|
+
"debug.transitionsProcessHint": "Transitions will appear as the state machine processes events",
|
|
2271
|
+
"debug.transitionsRecorded": "{{count}} transitions recorded",
|
|
2272
|
+
"debug.guardLabel": "guard:",
|
|
2273
|
+
"debug.effectsCount": "{{count}} effects",
|
|
2274
|
+
"debug.bridgeInitHint": "The ServerBridge has not been initialized. Bridge health will appear once the runtime connects to the server.",
|
|
2275
|
+
"debug.never": "Never",
|
|
2276
|
+
"debug.connected": "Connected",
|
|
2277
|
+
"debug.disconnected": "Disconnected",
|
|
2278
|
+
"debug.lastError": "Last Error",
|
|
2279
|
+
"debug.totalEventsProcessed": "{{count}} total events processed",
|
|
2280
|
+
"debug.server": "server",
|
|
2281
|
+
"debug.clientEffectsCount": "{{count}} clientEffects",
|
|
2282
|
+
"debug.emitLabel": "emit:",
|
|
2283
|
+
"debug.rowsCount": "{{count}} rows",
|
|
2284
|
+
"debug.serverResponse": "server response",
|
|
2285
|
+
"debug.collapseVerificationTimeline": "Collapse verification timeline",
|
|
2286
|
+
"debug.expandVerificationTimeline": "Expand verification timeline",
|
|
2287
|
+
"debug.failCount": "{{count}} fail",
|
|
2288
|
+
"debug.ok": "OK",
|
|
2289
|
+
"debug.localCount": "{{count}} local",
|
|
2290
|
+
"debug.serverCount": "{{count}} server",
|
|
2291
|
+
"debug.waitingForTransitions": "Waiting for transitions...",
|
|
2292
|
+
"debug.tabDispatch": "Dispatch",
|
|
2293
|
+
"debug.tabVerify": "Verify",
|
|
2294
|
+
"debug.tabVerifyAlert": "Verify (!)",
|
|
2295
|
+
"debug.tabTimeline": "Timeline",
|
|
2296
|
+
"debug.tabBridge": "Bridge",
|
|
2297
|
+
"debug.tabTraits": "Traits",
|
|
2298
|
+
"debug.tabTicks": "Ticks",
|
|
2299
|
+
"debug.tabEntities": "Entities",
|
|
2300
|
+
"debug.tabEvents": "Events",
|
|
2301
|
+
"debug.tabGuards": "Guards",
|
|
2302
|
+
"debug.debugger": "Debugger",
|
|
2303
|
+
"debug.failedCount": "{{count}} failed",
|
|
2304
|
+
"debug.traitsCount": "{{count}} traits",
|
|
2305
|
+
"debug.idle": "Idle",
|
|
2306
|
+
"debug.openDebugger": "Open Debugger (`)",
|
|
2307
|
+
"debug.kflowVerifier": "KFlow Verifier",
|
|
2308
|
+
"debug.allPassing": "All passing",
|
|
2309
|
+
"debug.runtime": "Runtime",
|
|
2310
|
+
"debug.close": "Close (`)",
|
|
2311
|
+
"debug.toggleHint": "Press ` to toggle | window.__orbitalVerification for automation",
|
|
2312
|
+
"replyTree.expandReplies": "Expand replies",
|
|
2313
|
+
"replyTree.collapseReplies": "Collapse replies",
|
|
2314
|
+
"replyTree.voteOnReplyBy": "Vote on reply by {{author}}",
|
|
2315
|
+
"replyTree.replyTo": "Reply to {{author}}",
|
|
2316
|
+
"replyTree.replyToPlaceholder": "Reply to {{author}}\u2026",
|
|
2317
|
+
"replyTree.reply": "Reply",
|
|
2318
|
+
"replyTree.flagReplyBy": "Flag reply by {{author}}",
|
|
2319
|
+
"replyTree.flag": "Flag",
|
|
2320
|
+
"replyTree.send": "Send",
|
|
2321
|
+
"replyTree.continueThread": "Continue thread",
|
|
2322
|
+
"replyTree.noRepliesYet": "No replies yet.",
|
|
2323
|
+
"signaturePad.label": "Signature",
|
|
2324
|
+
"signaturePad.helperText": "Draw your signature above",
|
|
2325
|
+
"signaturePad.clear": "Clear",
|
|
2326
|
+
"signaturePad.confirm": "Confirm",
|
|
2327
|
+
"qrScanner.cameraUnavailable": "Camera unavailable",
|
|
2328
|
+
"qrScanner.paused": "Paused",
|
|
2329
|
+
"qrScanner.resumeScanning": "Resume scanning",
|
|
2330
|
+
"qrScanner.pauseScanning": "Pause scanning",
|
|
2331
|
+
"qrScanner.switchToFrontCamera": "Switch to front camera",
|
|
2332
|
+
"qrScanner.switchToRearCamera": "Switch to rear camera",
|
|
2333
|
+
"qrScanner.mockScan": "Mock Scan",
|
|
2334
|
+
"docSearch.placeholder": "Search documentation...",
|
|
2335
|
+
"stateMachine.loading": "Loading state machine\u2026",
|
|
2336
|
+
"stateMachine.noStateMachine": "No state machine to visualize",
|
|
2337
|
+
"avl.trigger": "Trigger",
|
|
2338
|
+
"avl.guard": "Guard",
|
|
2339
|
+
"avl.effects": "Effects",
|
|
2340
|
+
"avl.props": "Props",
|
|
2341
|
+
"avl.entity": "Entity",
|
|
2342
|
+
"avl.traits": "Traits",
|
|
2343
|
+
"avl.transition": "Transition",
|
|
2344
|
+
"avl.onEntity": "on {{entity}}",
|
|
2345
|
+
"avl.linkedTo": "linked to {{entity}}",
|
|
2346
|
+
"avl.pressEscToZoomOut": "Press Esc to zoom out",
|
|
2347
|
+
"avl.zoomIn": "Zoom in",
|
|
2348
|
+
"avl.zoomOut": "Zoom out",
|
|
2349
|
+
"avl.orbitalLabel": "Orbital: {{name}}",
|
|
2350
|
+
"avl.orbitalLabelHighlighted": "Orbital: {{name}} (highlighted)",
|
|
2351
|
+
"avl.noTraitData": "No trait data",
|
|
2352
|
+
"avl.computingLayout": "Computing layout...",
|
|
2353
|
+
"avl.noStateMachine": "No state machine",
|
|
2354
|
+
"avl.listensFor": "listens for {{event}}",
|
|
2355
|
+
"avl.emits": "emits {{event}}",
|
|
2356
|
+
"avl.pageLayout": "Page Layout",
|
|
2357
|
+
"avl.overlaySuffix": "(overlay)",
|
|
2358
|
+
"orbPreview.previewBadge": "Preview",
|
|
2359
|
+
"orbPreview.doubleClickToOpen": "Double-click to open",
|
|
2360
|
+
"orbPreview.dropToAddAndOpen": "Drop to add and open",
|
|
2361
|
+
"orbPreview.dispatching": "Coordinator is dispatching to this orbital",
|
|
2362
|
+
"orbPreview.noPreview": "No preview available",
|
|
2363
|
+
"orbPreview.screensCount": "{{count}} screens",
|
|
2364
|
+
"detailView.noTransitionData": "No transition data",
|
|
2365
|
+
"orbInspector.required": "req",
|
|
2366
|
+
"orbInspector.addField": "Add Field",
|
|
2367
|
+
"orbInspector.serviceMode": "Service Mode",
|
|
2368
|
+
"orbInspector.standalone": "Standalone",
|
|
2369
|
+
"orbInspector.embedded": "Embedded",
|
|
2370
|
+
"orbInspector.rendersOwnUi": "Renders its own UI",
|
|
2371
|
+
"orbInspector.headless": "Headless, wired to other behaviors",
|
|
2372
|
+
"orbInspector.addEffect": "Add Effect",
|
|
2373
|
+
"orbInspector.guardExpression": "Guard expression",
|
|
2374
|
+
"orbInspector.selectPatternForStyles": "Select a pattern to view its style tokens.",
|
|
2375
|
+
"orbInspector.tokens": "Tokens",
|
|
2376
|
+
"orbInspector.noTokenContract": "No token contract declared for this pattern.",
|
|
2377
|
+
"orbInspector.variant": "Variant",
|
|
2378
|
+
"orbInspector.size": "Size",
|
|
2379
|
+
"orbInspector.statesCount": "{{count}} states",
|
|
2380
|
+
"orbInspector.onEntity": " on {{entity}}",
|
|
2381
|
+
"orbInspector.projectThemeTokens": "Project theme tokens",
|
|
2382
|
+
"orbInspector.tokenGroup.colors": "Colors",
|
|
2383
|
+
"orbInspector.tokenGroup.radii": "Radii",
|
|
2384
|
+
"orbInspector.tokenGroup.spacing": "Spacing",
|
|
2385
|
+
"orbInspector.tokenGroup.shadows": "Shadows",
|
|
2386
|
+
"orbInspector.tab.inspector": "Inspector",
|
|
2387
|
+
"orbInspector.tab.styles": "Styles",
|
|
2388
|
+
"orbInspector.tab.code": "Code",
|
|
2389
|
+
"canvas.goBackToOverview": "Go back to overview",
|
|
2390
|
+
"canvas.overview": "Overview",
|
|
2391
|
+
"canvas.expanded": "Expanded",
|
|
2392
|
+
"canvas.modulesCount": "{{count}} modules",
|
|
2393
|
+
"canvas.screensCount": "{{count}} screens",
|
|
2394
|
+
"canvas.switchToView": "Switch to {{label}} view",
|
|
2395
|
+
"lawReference.viewFullText": "View full law text",
|
|
2396
|
+
"statCard.defaultLabel": "Stat",
|
|
2397
|
+
"statCard.vsLastPeriod": "vs last period",
|
|
2398
|
+
"mediaGallery.upload": "Upload",
|
|
2399
|
+
"mediaGallery.noMediaDescription": "No media items to display.",
|
|
2400
|
+
"pagination.jumpPlaceholder": "Page",
|
|
2401
|
+
"table.selectRow": "Select row {{id}}",
|
|
2402
|
+
"card.selectItem": "Select {{item}}",
|
|
2403
|
+
"card.itemFallback": "item",
|
|
2404
|
+
"fileTree.noFiles": "No files",
|
|
2405
|
+
"masterDetail.selectItem": "Select an item to view details",
|
|
2406
|
+
"empty.createFirst": "Create your first item to get started.",
|
|
2407
|
+
"upload.dropOrBrowse": "Drop files here or click to browse",
|
|
2408
|
+
"upload.dropFilesHere": "Drop files here",
|
|
2409
|
+
"upload.accepted": "Accepted: {{accept}}",
|
|
2410
|
+
"upload.maxSize": "Max size: {{size}}",
|
|
2411
|
+
"upload.maxFiles": "Up to {{count}} files",
|
|
2412
|
+
"upload.error.maxFiles": "Maximum {{count}} files allowed",
|
|
2413
|
+
"upload.error.invalidType": "Invalid file type: {{name}}",
|
|
2414
|
+
"upload.error.tooLarge": "File too large: {{name}} (max {{size}})",
|
|
2415
|
+
"optionConstraint.requiredOne": "Required, pick 1",
|
|
2416
|
+
"optionConstraint.optionalOne": "Optional, pick up to 1",
|
|
2417
|
+
"optionConstraint.pickExactly": "Pick exactly {{count}}",
|
|
2418
|
+
"optionConstraint.pickRange": "Pick {{min}}-{{max}}",
|
|
2419
|
+
"optionConstraint.pickAtLeast": "Pick at least {{count}}",
|
|
2420
|
+
"optionConstraint.pickUpTo": "Pick up to {{count}}",
|
|
2421
|
+
"optionConstraint.optional": "Optional",
|
|
2422
|
+
"optionConstraint.outOfStock": "Out of stock",
|
|
2423
|
+
"optionConstraint.error.pickOne": "Pick 1 option",
|
|
2424
|
+
"optionConstraint.error.pickOnlyOne": "Pick only 1 option",
|
|
2425
|
+
"optionConstraint.error.pickMore": "Pick at least {{count}} more",
|
|
2426
|
+
"optionConstraint.error.removeOptions": "Remove {{count}} options",
|
|
2427
|
+
"stateMachine.pinned": "Pinned",
|
|
2428
|
+
"stateMachine.eventCount": "{{count}} events",
|
|
2429
|
+
"stateMachine.externalEffects": "External Effects",
|
|
2430
|
+
"stateMachine.legend.initial": "Initial",
|
|
2431
|
+
"stateMachine.legend.final": "Final",
|
|
2432
|
+
"stateMachine.legend.state": "State",
|
|
2433
|
+
"stateMachine.legend.multiEvent": "Multi-event"
|
|
2141
2434
|
};
|
|
2142
2435
|
}
|
|
2143
2436
|
});
|
|
@@ -5225,6 +5518,7 @@ var init_LawReferenceTooltip = __esm({
|
|
|
5225
5518
|
init_Typography();
|
|
5226
5519
|
init_Divider();
|
|
5227
5520
|
init_cn();
|
|
5521
|
+
init_useTranslate();
|
|
5228
5522
|
positionStyles2 = {
|
|
5229
5523
|
top: "bottom-full left-1/2 -translate-x-1/2 mb-2",
|
|
5230
5524
|
bottom: "top-full left-1/2 -translate-x-1/2 mt-2",
|
|
@@ -5243,6 +5537,7 @@ var init_LawReferenceTooltip = __esm({
|
|
|
5243
5537
|
position = "top",
|
|
5244
5538
|
className
|
|
5245
5539
|
}) => {
|
|
5540
|
+
const { t } = useTranslate();
|
|
5246
5541
|
const [isVisible, setIsVisible] = React85__namespace.default.useState(false);
|
|
5247
5542
|
const timeoutRef = React85__namespace.default.useRef(null);
|
|
5248
5543
|
const handleMouseEnter = () => {
|
|
@@ -5326,7 +5621,7 @@ var init_LawReferenceTooltip = __esm({
|
|
|
5326
5621
|
target: "_blank",
|
|
5327
5622
|
rel: "noopener noreferrer",
|
|
5328
5623
|
onClick: (e) => e.stopPropagation(),
|
|
5329
|
-
children: "
|
|
5624
|
+
children: t("lawReference.viewFullText")
|
|
5330
5625
|
}
|
|
5331
5626
|
)
|
|
5332
5627
|
] }),
|
|
@@ -13607,6 +13902,7 @@ var log7, SWIM_GUTTER, CENTER_W, BehaviorView;
|
|
|
13607
13902
|
var init_BehaviorView = __esm({
|
|
13608
13903
|
"components/avl/molecules/BehaviorView.tsx"() {
|
|
13609
13904
|
"use client";
|
|
13905
|
+
init_useTranslate();
|
|
13610
13906
|
init_AvlState();
|
|
13611
13907
|
init_AvlTransitionLane();
|
|
13612
13908
|
init_AvlSwimLane();
|
|
@@ -13616,6 +13912,7 @@ var init_BehaviorView = __esm({
|
|
|
13616
13912
|
SWIM_GUTTER = 120;
|
|
13617
13913
|
CENTER_W = 360;
|
|
13618
13914
|
BehaviorView = ({ data }) => {
|
|
13915
|
+
const { t } = useTranslate();
|
|
13619
13916
|
const [layout, setLayout] = React85.useState(null);
|
|
13620
13917
|
const traitName = data.traits[0]?.name;
|
|
13621
13918
|
const traitData = traitName ? data.traitDetails[traitName] : void 0;
|
|
@@ -13625,10 +13922,10 @@ var init_BehaviorView = __esm({
|
|
|
13625
13922
|
computeTraitLayout(traitData).then(setLayout).catch((err) => log7.error("compute-trait-layout-failed", { error: err instanceof Error ? err : String(err) }));
|
|
13626
13923
|
}, [dataKey]);
|
|
13627
13924
|
if (!traitData) {
|
|
13628
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-lg border border-[var(--color-border)] bg-[var(--color-card)] p-4 text-center text-[var(--color-muted-foreground)] text-sm", children: "
|
|
13925
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-lg border border-[var(--color-border)] bg-[var(--color-card)] p-4 text-center text-[var(--color-muted-foreground)] text-sm", children: t("avl.noTraitData") });
|
|
13629
13926
|
}
|
|
13630
13927
|
if (!layout) {
|
|
13631
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-lg border border-[var(--color-border)] bg-[var(--color-card)] p-4 text-center text-[var(--color-muted-foreground)] text-sm", children: "
|
|
13928
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-lg border border-[var(--color-border)] bg-[var(--color-card)] p-4 text-center text-[var(--color-muted-foreground)] text-sm", children: t("avl.computingLayout") });
|
|
13632
13929
|
}
|
|
13633
13930
|
const hasExternal = traitData.listenedEvents.length > 0 || traitData.emittedEvents.length > 0;
|
|
13634
13931
|
const viewW = hasExternal ? SWIM_GUTTER + CENTER_W + SWIM_GUTTER : CENTER_W + 60;
|
|
@@ -13644,10 +13941,7 @@ var init_BehaviorView = __esm({
|
|
|
13644
13941
|
const machineHeight = scaledH + 100;
|
|
13645
13942
|
const renderMachine = /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
|
|
13646
13943
|
/* @__PURE__ */ jsxRuntime.jsx("text", { x: CENTER_W / 2, y: 20, textAnchor: "middle", fill: "var(--color-foreground)", fontSize: 18, fontWeight: "700", fontFamily: "inherit", children: traitData.name }),
|
|
13647
|
-
/* @__PURE__ */ jsxRuntime.
|
|
13648
|
-
"on ",
|
|
13649
|
-
traitData.linkedEntity
|
|
13650
|
-
] }),
|
|
13944
|
+
/* @__PURE__ */ jsxRuntime.jsx("text", { x: CENTER_W / 2, y: 36, textAnchor: "middle", fill: "var(--color-muted-foreground)", fontSize: 11, opacity: 0.5, fontFamily: "inherit", children: t("avl.onEntity", { entity: traitData.linkedEntity }) }),
|
|
13651
13945
|
/* @__PURE__ */ jsxRuntime.jsxs("defs", { children: [
|
|
13652
13946
|
/* @__PURE__ */ jsxRuntime.jsx("marker", { id: "bvArrow", viewBox: "0 0 10 10", refX: "9", refY: "5", markerWidth: "6", markerHeight: "6", orient: "auto-start-reverse", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M 0 0 L 10 5 L 0 10 z", fill: CONNECTION_COLORS.forward.color, opacity: 0.7 }) }),
|
|
13653
13947
|
/* @__PURE__ */ jsxRuntime.jsx("marker", { id: "bvArrowBack", viewBox: "0 0 10 10", refX: "9", refY: "5", markerWidth: "6", markerHeight: "6", orient: "auto-start-reverse", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M 0 0 L 10 5 L 0 10 z", fill: CONNECTION_COLORS.backward.color, opacity: 0.5 }) })
|
|
@@ -13955,7 +14249,7 @@ var init_CodeBlock = __esm({
|
|
|
13955
14249
|
const isLolo = language === "lolo";
|
|
13956
14250
|
const activeStyle = isOrb ? orbStyle : isLolo ? loloStyle : dark__default.default;
|
|
13957
14251
|
const eventBus = useEventBus();
|
|
13958
|
-
const { t
|
|
14252
|
+
const { t } = useTranslate();
|
|
13959
14253
|
const scrollRef = React85.useRef(null);
|
|
13960
14254
|
const codeRef = React85.useRef(null);
|
|
13961
14255
|
const savedScrollLeftRef = React85.useRef(0);
|
|
@@ -14210,7 +14504,7 @@ var init_CodeBlock = __esm({
|
|
|
14210
14504
|
size: "sm",
|
|
14211
14505
|
onClick: handleCopy,
|
|
14212
14506
|
className: "opacity-0 group-hover:opacity-100 focus:opacity-100 transition-opacity text-muted-foreground hover:text-white",
|
|
14213
|
-
"aria-label": "
|
|
14507
|
+
"aria-label": t("common.copy"),
|
|
14214
14508
|
children: copied ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "check", className: "w-4 h-4 text-green-400" }) : /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "copy", className: "w-4 h-4" })
|
|
14215
14509
|
}
|
|
14216
14510
|
)
|
|
@@ -14431,9 +14725,18 @@ var init_MarkdownContent = __esm({
|
|
|
14431
14725
|
);
|
|
14432
14726
|
}
|
|
14433
14727
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
14434
|
-
"
|
|
14728
|
+
"code",
|
|
14435
14729
|
{
|
|
14730
|
+
...props,
|
|
14731
|
+
className: codeClassName,
|
|
14436
14732
|
style: {
|
|
14733
|
+
backgroundColor: "var(--color-muted)",
|
|
14734
|
+
color: "var(--color-foreground)",
|
|
14735
|
+
border: "1px solid var(--color-border)",
|
|
14736
|
+
padding: "0.125rem 0.375rem",
|
|
14737
|
+
borderRadius: "0.25rem",
|
|
14738
|
+
fontSize: "0.875em",
|
|
14739
|
+
fontFamily: "ui-monospace, monospace",
|
|
14437
14740
|
whiteSpace: "pre-wrap",
|
|
14438
14741
|
wordBreak: "break-word"
|
|
14439
14742
|
},
|
|
@@ -14856,7 +15159,7 @@ var init_StateMachineView = __esm({
|
|
|
14856
15159
|
const endX2 = fromState.x + Math.cos(Math.PI / 2 * loopDirection + endAngle) * fromState.radius;
|
|
14857
15160
|
const endY2 = fromState.y + Math.sin(Math.PI / 2 * loopDirection + endAngle) * fromState.radius;
|
|
14858
15161
|
const isSingle2 = bundle.labels.length === 1;
|
|
14859
|
-
const labelText2 = isSingle2 ? bundle.labels[0].event :
|
|
15162
|
+
const labelText2 = isSingle2 ? bundle.labels[0].event : t("stateMachine.eventCount", { count: bundle.labels.length });
|
|
14860
15163
|
const bundleColor2 = isSingle2 ? config.colors.arrow : "var(--color-accent)";
|
|
14861
15164
|
const labelWidth2 = labelText2.length * 9 + (isSingle2 ? 24 : 40);
|
|
14862
15165
|
const cx = fromState.x;
|
|
@@ -14982,7 +15285,7 @@ var init_StateMachineView = __esm({
|
|
|
14982
15285
|
const controlX = midX + perpX;
|
|
14983
15286
|
const controlY = midY + perpY;
|
|
14984
15287
|
const isSingle = bundle.labels.length === 1;
|
|
14985
|
-
const labelText = isSingle ? bundle.labels[0].event :
|
|
15288
|
+
const labelText = isSingle ? bundle.labels[0].event : t("stateMachine.eventCount", { count: bundle.labels.length });
|
|
14986
15289
|
const labelWidth = labelText.length * 9 + (isSingle ? 24 : 40);
|
|
14987
15290
|
const bundleColor = isSingle ? config.colors.arrow : "var(--color-accent)";
|
|
14988
15291
|
const curveMidpoint = {
|
|
@@ -15137,7 +15440,7 @@ var init_StateMachineView = __esm({
|
|
|
15137
15440
|
{
|
|
15138
15441
|
className: "absolute -top-2 left-1/2 transform -translate-x-1/2 px-2 py-0.5 rounded-full",
|
|
15139
15442
|
style: { backgroundColor: "var(--color-success)" },
|
|
15140
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", weight: "semibold", style: { color: "var(--color-success-foreground)" }, children: "
|
|
15443
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", weight: "semibold", style: { color: "var(--color-success-foreground)" }, children: t("stateMachine.pinned") })
|
|
15141
15444
|
}
|
|
15142
15445
|
),
|
|
15143
15446
|
!isSingle && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -15159,10 +15462,7 @@ var init_StateMachineView = __esm({
|
|
|
15159
15462
|
{
|
|
15160
15463
|
className: "ml-2 px-2 py-0.5 rounded-full",
|
|
15161
15464
|
style: { backgroundColor: "var(--color-accent)" },
|
|
15162
|
-
children: /* @__PURE__ */ jsxRuntime.
|
|
15163
|
-
bundle.labels.length,
|
|
15164
|
-
" events"
|
|
15165
|
-
] })
|
|
15465
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", style: { color: "var(--color-accent-foreground)" }, children: t("stateMachine.eventCount", { count: bundle.labels.length }) })
|
|
15166
15466
|
}
|
|
15167
15467
|
)
|
|
15168
15468
|
]
|
|
@@ -15307,7 +15607,7 @@ var init_StateMachineView = __esm({
|
|
|
15307
15607
|
align: "center",
|
|
15308
15608
|
className: "mb-2",
|
|
15309
15609
|
style: { color: "var(--color-warning)", fontSize: "13px" },
|
|
15310
|
-
children: "
|
|
15610
|
+
children: t("stateMachine.externalEffects")
|
|
15311
15611
|
}
|
|
15312
15612
|
),
|
|
15313
15613
|
outputs.outputs.map((output, idx) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -15327,10 +15627,10 @@ var init_StateMachineView = __esm({
|
|
|
15327
15627
|
Legend = ({ config, y }) => {
|
|
15328
15628
|
const { t } = useTranslate();
|
|
15329
15629
|
const items = [
|
|
15330
|
-
{ label: "
|
|
15331
|
-
{ label: "
|
|
15332
|
-
{ label: "
|
|
15333
|
-
{ label: "
|
|
15630
|
+
{ key: "initial", label: t("stateMachine.legend.initial"), color: config.colors.initialNode, isMultiEvent: false },
|
|
15631
|
+
{ key: "final", label: t("stateMachine.legend.final"), color: config.colors.finalNode, isMultiEvent: false },
|
|
15632
|
+
{ key: "state", label: t("stateMachine.legend.state"), color: config.colors.nodeBorder, isMultiEvent: false },
|
|
15633
|
+
{ key: "multiEvent", label: t("stateMachine.legend.multiEvent"), color: "var(--color-accent)", isMultiEvent: true }
|
|
15334
15634
|
];
|
|
15335
15635
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
15336
15636
|
HStack,
|
|
@@ -15345,8 +15645,8 @@ var init_StateMachineView = __esm({
|
|
|
15345
15645
|
{
|
|
15346
15646
|
className: "w-3 h-3 rounded-full",
|
|
15347
15647
|
style: {
|
|
15348
|
-
backgroundColor: item.
|
|
15349
|
-
border: item.
|
|
15648
|
+
backgroundColor: item.isMultiEvent ? item.color : config.colors.node,
|
|
15649
|
+
border: !item.isMultiEvent ? `2px solid ${item.color}` : "none"
|
|
15350
15650
|
}
|
|
15351
15651
|
}
|
|
15352
15652
|
),
|
|
@@ -15358,7 +15658,7 @@ var init_StateMachineView = __esm({
|
|
|
15358
15658
|
children: item.label
|
|
15359
15659
|
}
|
|
15360
15660
|
)
|
|
15361
|
-
] }, item.
|
|
15661
|
+
] }, item.key))
|
|
15362
15662
|
}
|
|
15363
15663
|
);
|
|
15364
15664
|
};
|
|
@@ -16152,13 +16452,13 @@ var init_JazariStateMachine = __esm({
|
|
|
16152
16452
|
);
|
|
16153
16453
|
}, [resolvedTrait, entityFields]);
|
|
16154
16454
|
if (isLoading) {
|
|
16155
|
-
return /* @__PURE__ */ jsxRuntime.jsx(LoadingState, { message: "
|
|
16455
|
+
return /* @__PURE__ */ jsxRuntime.jsx(LoadingState, { message: t("stateMachine.loading") });
|
|
16156
16456
|
}
|
|
16157
16457
|
if (error) {
|
|
16158
16458
|
return /* @__PURE__ */ jsxRuntime.jsx(ErrorState, { message: error instanceof Error ? error.message : String(error) });
|
|
16159
16459
|
}
|
|
16160
16460
|
if (!resolvedTrait || !layoutData || layoutData.states.length === 0) {
|
|
16161
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { padding: "lg", className: cn("text-center", className), children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", className: "opacity-60", children: "
|
|
16461
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box, { padding: "lg", className: cn("text-center", className), children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", className: "opacity-60", children: t("stateMachine.noStateMachine") }) });
|
|
16162
16462
|
}
|
|
16163
16463
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
16164
16464
|
StateMachineView,
|
|
@@ -17202,13 +17502,13 @@ var init_LayoutPatterns = __esm({
|
|
|
17202
17502
|
function generateRuleId() {
|
|
17203
17503
|
return `rule-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
17204
17504
|
}
|
|
17205
|
-
function questionsToOptions(questions,
|
|
17505
|
+
function questionsToOptions(questions, endOfSurveyLabel) {
|
|
17206
17506
|
const opts = questions.map((q) => ({
|
|
17207
17507
|
value: q.id,
|
|
17208
17508
|
label: q.label
|
|
17209
17509
|
}));
|
|
17210
|
-
if (
|
|
17211
|
-
opts.push({ value: END_OF_SURVEY, label:
|
|
17510
|
+
if (endOfSurveyLabel !== null) {
|
|
17511
|
+
opts.push({ value: END_OF_SURVEY, label: endOfSurveyLabel });
|
|
17212
17512
|
}
|
|
17213
17513
|
return opts;
|
|
17214
17514
|
}
|
|
@@ -17217,7 +17517,7 @@ function isRuleBroken(rule, questions) {
|
|
|
17217
17517
|
const targetExists = rule.targetQuestionId === END_OF_SURVEY || questions.some((q) => q.id === rule.targetQuestionId);
|
|
17218
17518
|
return !sourceExists || !targetExists;
|
|
17219
17519
|
}
|
|
17220
|
-
var END_OF_SURVEY,
|
|
17520
|
+
var END_OF_SURVEY, RuleRow, NODE_WIDTH, NODE_HEIGHT, NODE_GAP_Y, PADDING, LogicGraph, BranchingLogicBuilder;
|
|
17221
17521
|
var init_BranchingLogicBuilder = __esm({
|
|
17222
17522
|
"components/core/molecules/BranchingLogicBuilder.tsx"() {
|
|
17223
17523
|
"use client";
|
|
@@ -17230,14 +17530,9 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17230
17530
|
init_FilterPill();
|
|
17231
17531
|
init_Box();
|
|
17232
17532
|
init_useEventBus();
|
|
17533
|
+
init_useTranslate();
|
|
17233
17534
|
init_cn();
|
|
17234
17535
|
END_OF_SURVEY = "end-of-survey";
|
|
17235
|
-
OPERATOR_OPTIONS = [
|
|
17236
|
-
{ value: "equals", label: "equals" },
|
|
17237
|
-
{ value: "not-equals", label: "does not equal" },
|
|
17238
|
-
{ value: "contains", label: "contains" },
|
|
17239
|
-
{ value: "in", label: "is one of" }
|
|
17240
|
-
];
|
|
17241
17536
|
RuleRow = ({
|
|
17242
17537
|
rule,
|
|
17243
17538
|
questions,
|
|
@@ -17246,8 +17541,21 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17246
17541
|
onChange,
|
|
17247
17542
|
onDelete
|
|
17248
17543
|
}) => {
|
|
17249
|
-
const
|
|
17250
|
-
const
|
|
17544
|
+
const { t } = useTranslate();
|
|
17545
|
+
const operatorOptions = React85.useMemo(
|
|
17546
|
+
() => [
|
|
17547
|
+
{ value: "equals", label: t("branchingLogic.operatorEquals") },
|
|
17548
|
+
{ value: "not-equals", label: t("branchingLogic.operatorNotEquals") },
|
|
17549
|
+
{ value: "contains", label: t("branchingLogic.operatorContains") },
|
|
17550
|
+
{ value: "in", label: t("branchingLogic.operatorIn") }
|
|
17551
|
+
],
|
|
17552
|
+
[t]
|
|
17553
|
+
);
|
|
17554
|
+
const sourceOptions = React85.useMemo(() => questionsToOptions(questions, null), [questions]);
|
|
17555
|
+
const targetOptions = React85.useMemo(
|
|
17556
|
+
() => questionsToOptions(questions, t("branchingLogic.endOfSurvey")),
|
|
17557
|
+
[questions, t]
|
|
17558
|
+
);
|
|
17251
17559
|
const sourceQuestion = questions.find((q) => q.id === rule.sourceQuestionId);
|
|
17252
17560
|
const valueOptions = React85.useMemo(() => {
|
|
17253
17561
|
if (!sourceQuestion?.optionValues) return [];
|
|
@@ -17292,22 +17600,22 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17292
17600
|
),
|
|
17293
17601
|
children: [
|
|
17294
17602
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex flex-wrap items-center gap-2", children: [
|
|
17295
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "label", weight: "semibold", className: "shrink-0", children: "
|
|
17603
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "label", weight: "semibold", className: "shrink-0", children: t("branchingLogic.if") }),
|
|
17296
17604
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "min-w-[10rem] grow basis-40", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
17297
17605
|
Select,
|
|
17298
17606
|
{
|
|
17299
17607
|
options: sourceOptions,
|
|
17300
17608
|
value: rule.sourceQuestionId,
|
|
17301
|
-
placeholder: "
|
|
17609
|
+
placeholder: t("branchingLogic.selectQuestion"),
|
|
17302
17610
|
onChange: handleSource,
|
|
17303
17611
|
disabled: readOnly,
|
|
17304
|
-
error: broken ? "
|
|
17612
|
+
error: broken ? t("branchingLogic.brokenReference") : void 0
|
|
17305
17613
|
}
|
|
17306
17614
|
) }),
|
|
17307
17615
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "min-w-[8rem] basis-32", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
17308
17616
|
Select,
|
|
17309
17617
|
{
|
|
17310
|
-
options:
|
|
17618
|
+
options: operatorOptions,
|
|
17311
17619
|
value: rule.operator,
|
|
17312
17620
|
onChange: handleOperator,
|
|
17313
17621
|
disabled: readOnly
|
|
@@ -17330,7 +17638,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17330
17638
|
{
|
|
17331
17639
|
options: valueOptions.filter((o) => !chips.includes(o.value)),
|
|
17332
17640
|
value: "",
|
|
17333
|
-
placeholder: "
|
|
17641
|
+
placeholder: t("branchingLogic.addValue"),
|
|
17334
17642
|
onChange: handleAddChip,
|
|
17335
17643
|
disabled: readOnly
|
|
17336
17644
|
}
|
|
@@ -17338,7 +17646,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17338
17646
|
Input,
|
|
17339
17647
|
{
|
|
17340
17648
|
inputType: "text",
|
|
17341
|
-
placeholder: "
|
|
17649
|
+
placeholder: t("branchingLogic.typeValuePressEnter"),
|
|
17342
17650
|
value: "",
|
|
17343
17651
|
onKeyDown: (e) => {
|
|
17344
17652
|
if (e.key !== "Enter") return;
|
|
@@ -17356,7 +17664,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17356
17664
|
{
|
|
17357
17665
|
options: valueOptions,
|
|
17358
17666
|
value: scalarValue,
|
|
17359
|
-
placeholder: "
|
|
17667
|
+
placeholder: t("branchingLogic.selectValue"),
|
|
17360
17668
|
onChange: (e) => onChange({ ...rule, value: e.target.value }),
|
|
17361
17669
|
disabled: readOnly
|
|
17362
17670
|
}
|
|
@@ -17364,7 +17672,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17364
17672
|
Input,
|
|
17365
17673
|
{
|
|
17366
17674
|
inputType: "text",
|
|
17367
|
-
placeholder: "
|
|
17675
|
+
placeholder: t("branchingLogic.value"),
|
|
17368
17676
|
value: scalarValue,
|
|
17369
17677
|
onChange: handleScalarValue,
|
|
17370
17678
|
disabled: readOnly
|
|
@@ -17372,17 +17680,17 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17372
17680
|
) }),
|
|
17373
17681
|
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "label", weight: "semibold", className: "shrink-0 inline-flex items-center gap-1", children: [
|
|
17374
17682
|
/* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.ArrowRight, { className: "h-4 w-4" }),
|
|
17375
|
-
"
|
|
17683
|
+
t("branchingLogic.goTo")
|
|
17376
17684
|
] }),
|
|
17377
17685
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "min-w-[10rem] grow basis-40", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
17378
17686
|
Select,
|
|
17379
17687
|
{
|
|
17380
17688
|
options: targetOptions,
|
|
17381
17689
|
value: rule.targetQuestionId,
|
|
17382
|
-
placeholder: "
|
|
17690
|
+
placeholder: t("branchingLogic.selectTarget"),
|
|
17383
17691
|
onChange: handleTarget,
|
|
17384
17692
|
disabled: readOnly,
|
|
17385
|
-
error: broken && rule.targetQuestionId !== END_OF_SURVEY ? "
|
|
17693
|
+
error: broken && rule.targetQuestionId !== END_OF_SURVEY ? t("branchingLogic.brokenReference") : void 0
|
|
17386
17694
|
}
|
|
17387
17695
|
) }),
|
|
17388
17696
|
!readOnly && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -17394,11 +17702,11 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17394
17702
|
action: "DELETE_RULE",
|
|
17395
17703
|
actionPayload: { ruleId: rule.id },
|
|
17396
17704
|
onClick: onDelete,
|
|
17397
|
-
"aria-label": "
|
|
17705
|
+
"aria-label": t("branchingLogic.deleteRule")
|
|
17398
17706
|
}
|
|
17399
17707
|
)
|
|
17400
17708
|
] }),
|
|
17401
|
-
broken && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "error", size: "sm", label: "
|
|
17709
|
+
broken && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "error", size: "sm", label: t("branchingLogic.brokenReference") })
|
|
17402
17710
|
]
|
|
17403
17711
|
}
|
|
17404
17712
|
);
|
|
@@ -17408,10 +17716,12 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17408
17716
|
NODE_GAP_Y = 80;
|
|
17409
17717
|
PADDING = 32;
|
|
17410
17718
|
LogicGraph = ({ questions, rules }) => {
|
|
17719
|
+
const { t } = useTranslate();
|
|
17720
|
+
const endOfSurveyLabel = t("branchingLogic.endOfSurvey");
|
|
17411
17721
|
const layout = React85.useMemo(() => {
|
|
17412
17722
|
const items = [
|
|
17413
17723
|
...questions.map((q) => ({ id: q.id, label: q.label, isEnd: false })),
|
|
17414
|
-
{ id: END_OF_SURVEY, label:
|
|
17724
|
+
{ id: END_OF_SURVEY, label: endOfSurveyLabel, isEnd: true }
|
|
17415
17725
|
];
|
|
17416
17726
|
const positions = {};
|
|
17417
17727
|
items.forEach((item, i) => {
|
|
@@ -17423,14 +17733,14 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17423
17733
|
const width = NODE_WIDTH + PADDING * 2 + 220;
|
|
17424
17734
|
const height = PADDING * 2 + items.length * (NODE_HEIGHT + NODE_GAP_Y);
|
|
17425
17735
|
return { items, positions, width, height };
|
|
17426
|
-
}, [questions]);
|
|
17736
|
+
}, [questions, endOfSurveyLabel]);
|
|
17427
17737
|
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "overflow-auto rounded-container border border-border bg-card p-2", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
17428
17738
|
"svg",
|
|
17429
17739
|
{
|
|
17430
17740
|
width: layout.width,
|
|
17431
17741
|
height: layout.height,
|
|
17432
17742
|
role: "img",
|
|
17433
|
-
"aria-label": "
|
|
17743
|
+
"aria-label": t("branchingLogic.graphAriaLabel"),
|
|
17434
17744
|
style: { display: "block" },
|
|
17435
17745
|
children: [
|
|
17436
17746
|
/* @__PURE__ */ jsxRuntime.jsx("defs", { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -17538,6 +17848,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17538
17848
|
readOnly = false,
|
|
17539
17849
|
className
|
|
17540
17850
|
}) => {
|
|
17851
|
+
const { t } = useTranslate();
|
|
17541
17852
|
const eventBus = useEventBus();
|
|
17542
17853
|
const questions = Array.isArray(questionsProp) ? questionsProp : [];
|
|
17543
17854
|
const rulesInitial = Array.isArray(rulesProp) ? rulesProp : [];
|
|
@@ -17590,16 +17901,23 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17590
17901
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex flex-wrap items-center justify-between gap-2", children: [
|
|
17591
17902
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex items-center gap-2", children: [
|
|
17592
17903
|
/* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.GitBranch, { className: "h-5 w-5 text-foreground" }),
|
|
17593
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "subheading", weight: "semibold", children: "
|
|
17904
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "subheading", weight: "semibold", children: t("branchingLogic.title") }),
|
|
17594
17905
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
17595
17906
|
Badge,
|
|
17596
17907
|
{
|
|
17597
17908
|
variant: "neutral",
|
|
17598
17909
|
size: "sm",
|
|
17599
|
-
label:
|
|
17910
|
+
label: rules.length === 1 ? t("branchingLogic.ruleCountOne", { count: rules.length }) : t("branchingLogic.ruleCountOther", { count: rules.length })
|
|
17600
17911
|
}
|
|
17601
17912
|
),
|
|
17602
|
-
brokenCount > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
17913
|
+
brokenCount > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
17914
|
+
Badge,
|
|
17915
|
+
{
|
|
17916
|
+
variant: "error",
|
|
17917
|
+
size: "sm",
|
|
17918
|
+
label: t("branchingLogic.brokenCount", { count: brokenCount })
|
|
17919
|
+
}
|
|
17920
|
+
)
|
|
17603
17921
|
] }),
|
|
17604
17922
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex items-center gap-1 rounded-sm border border-border bg-card p-0.5", children: [
|
|
17605
17923
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -17610,7 +17928,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17610
17928
|
leftIcon: LucideIcons2.Pencil,
|
|
17611
17929
|
action: "VIEW_EDIT",
|
|
17612
17930
|
onClick: () => setView("edit"),
|
|
17613
|
-
children: "
|
|
17931
|
+
children: t("branchingLogic.rules")
|
|
17614
17932
|
}
|
|
17615
17933
|
),
|
|
17616
17934
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -17621,13 +17939,13 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17621
17939
|
leftIcon: LucideIcons2.Eye,
|
|
17622
17940
|
action: "VIEW_GRAPH",
|
|
17623
17941
|
onClick: () => setView("graph"),
|
|
17624
|
-
children: "
|
|
17942
|
+
children: t("branchingLogic.logicGraph")
|
|
17625
17943
|
}
|
|
17626
17944
|
)
|
|
17627
17945
|
] })
|
|
17628
17946
|
] }),
|
|
17629
17947
|
view === "edit" ? /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex flex-col gap-2", children: [
|
|
17630
|
-
rules.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(Card, { variant: "bordered", padding: "lg", className: "text-center", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", color: "muted", children: noQuestions ? "
|
|
17948
|
+
rules.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(Card, { variant: "bordered", padding: "lg", className: "text-center", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", color: "muted", children: noQuestions ? t("branchingLogic.emptyNoQuestions") : t("branchingLogic.emptyNoRules") }) }) : rules.map((rule) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
17631
17949
|
RuleRow,
|
|
17632
17950
|
{
|
|
17633
17951
|
rule,
|
|
@@ -17648,7 +17966,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17648
17966
|
action: "ADD_RULE",
|
|
17649
17967
|
onClick: handleAddRule,
|
|
17650
17968
|
disabled: noQuestions,
|
|
17651
|
-
children: "
|
|
17969
|
+
children: t("branchingLogic.addRule")
|
|
17652
17970
|
}
|
|
17653
17971
|
) })
|
|
17654
17972
|
] }) : /* @__PURE__ */ jsxRuntime.jsx(LogicGraph, { questions, rules })
|
|
@@ -18275,7 +18593,7 @@ function CalendarGrid({
|
|
|
18275
18593
|
onClick: stepPrev,
|
|
18276
18594
|
"aria-disabled": !canPrev || void 0,
|
|
18277
18595
|
"aria-label": t("aria.previousDays"),
|
|
18278
|
-
children: "
|
|
18596
|
+
children: t("nav.previous")
|
|
18279
18597
|
}
|
|
18280
18598
|
),
|
|
18281
18599
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground", children: formatDateRange(visibleDays[0], visibleDays[visibleDays.length - 1]) }),
|
|
@@ -18288,7 +18606,7 @@ function CalendarGrid({
|
|
|
18288
18606
|
onClick: stepNext,
|
|
18289
18607
|
"aria-disabled": !canNext || void 0,
|
|
18290
18608
|
"aria-label": t("aria.nextDays"),
|
|
18291
|
-
children: "
|
|
18609
|
+
children: t("nav.next")
|
|
18292
18610
|
}
|
|
18293
18611
|
)
|
|
18294
18612
|
] }),
|
|
@@ -19838,7 +20156,7 @@ var init_Pagination = __esm({
|
|
|
19838
20156
|
type: "number",
|
|
19839
20157
|
value: jumpToPage,
|
|
19840
20158
|
onChange: (e) => setJumpToPage(e.target.value),
|
|
19841
|
-
placeholder: "
|
|
20159
|
+
placeholder: t("pagination.jumpPlaceholder"),
|
|
19842
20160
|
className: "w-20",
|
|
19843
20161
|
onKeyDown: (e) => {
|
|
19844
20162
|
if (e.key === "Enter") {
|
|
@@ -19976,13 +20294,10 @@ var init_CardGrid = __esm({
|
|
|
19976
20294
|
return children;
|
|
19977
20295
|
}
|
|
19978
20296
|
if (isLoading) {
|
|
19979
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "col-span-full text-center py-8 text-muted-foreground", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", color: "secondary", children: "
|
|
20297
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "col-span-full text-center py-8 text-muted-foreground", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", color: "secondary", children: t("loading.items") }) });
|
|
19980
20298
|
}
|
|
19981
20299
|
if (error) {
|
|
19982
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "col-span-full text-center py-8 text-error", children: /* @__PURE__ */ jsxRuntime.
|
|
19983
|
-
"Error loading items: ",
|
|
19984
|
-
error.message
|
|
19985
|
-
] }) });
|
|
20300
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "col-span-full text-center py-8 text-error", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", color: "error", children: t("error.loadFailed", { message: error.message }) }) });
|
|
19986
20301
|
}
|
|
19987
20302
|
if (normalizedData.length === 0) {
|
|
19988
20303
|
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "col-span-full text-center py-12 text-muted-foreground", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", color: "secondary", children: t("empty.noItems") || "No items found" }) });
|
|
@@ -23848,7 +24163,7 @@ function DataGrid({
|
|
|
23848
24163
|
onChange: () => toggleSelection(id),
|
|
23849
24164
|
onClick: (e) => e.stopPropagation(),
|
|
23850
24165
|
className: "w-4 h-4 mt-1 flex-shrink-0 accent-primary",
|
|
23851
|
-
"aria-label":
|
|
24166
|
+
"aria-label": t("card.selectItem", { item: titleValue !== void 0 ? String(titleValue) : t("card.itemFallback") })
|
|
23852
24167
|
}
|
|
23853
24168
|
),
|
|
23854
24169
|
/* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "xs", className: "flex-1 min-w-0", children: [
|
|
@@ -24046,7 +24361,7 @@ function formatDate3(value) {
|
|
|
24046
24361
|
if (isNaN(d.getTime())) return String(value);
|
|
24047
24362
|
return d.toLocaleDateString(void 0, { year: "numeric", month: "short", day: "numeric" });
|
|
24048
24363
|
}
|
|
24049
|
-
function formatValue2(value, format) {
|
|
24364
|
+
function formatValue2(value, format, boolLabels) {
|
|
24050
24365
|
if (value === void 0 || value === null) return "";
|
|
24051
24366
|
switch (format) {
|
|
24052
24367
|
case "date":
|
|
@@ -24058,7 +24373,7 @@ function formatValue2(value, format) {
|
|
|
24058
24373
|
case "percent":
|
|
24059
24374
|
return typeof value === "number" ? `${Math.round(value)}%` : String(value);
|
|
24060
24375
|
case "boolean":
|
|
24061
|
-
return value ? "Yes" : "No";
|
|
24376
|
+
return value ? boolLabels?.yes ?? "Yes" : boolLabels?.no ?? "No";
|
|
24062
24377
|
default:
|
|
24063
24378
|
return String(value);
|
|
24064
24379
|
}
|
|
@@ -24354,7 +24669,7 @@ function DataList({
|
|
|
24354
24669
|
field.label ?? fieldLabel3(field.name),
|
|
24355
24670
|
":"
|
|
24356
24671
|
] }),
|
|
24357
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", children: formatValue2(value, field.format) })
|
|
24672
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", children: formatValue2(value, field.format, { yes: t("common.yes"), no: t("common.no") }) })
|
|
24358
24673
|
] }, field.name);
|
|
24359
24674
|
}) }),
|
|
24360
24675
|
progressFields.map((field) => {
|
|
@@ -24484,6 +24799,7 @@ var init_FileTree = __esm({
|
|
|
24484
24799
|
init_Box();
|
|
24485
24800
|
init_Typography();
|
|
24486
24801
|
init_Icon();
|
|
24802
|
+
init_useTranslate();
|
|
24487
24803
|
TreeNodeItem = ({
|
|
24488
24804
|
node,
|
|
24489
24805
|
depth,
|
|
@@ -24569,8 +24885,9 @@ var init_FileTree = __esm({
|
|
|
24569
24885
|
className,
|
|
24570
24886
|
indent = 16
|
|
24571
24887
|
}) => {
|
|
24888
|
+
const { t } = useTranslate();
|
|
24572
24889
|
if (tree.length === 0) {
|
|
24573
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: `p-4 ${className ?? ""}`, children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "muted", children: "
|
|
24890
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: `p-4 ${className ?? ""}`, children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "muted", children: t("fileTree.noFiles") }) });
|
|
24574
24891
|
}
|
|
24575
24892
|
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: `py-1 overflow-y-auto ${className ?? ""}`, role: "tree", children: tree.map((node) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
24576
24893
|
TreeNodeItem,
|
|
@@ -24689,6 +25006,7 @@ var init_FilterGroup = __esm({
|
|
|
24689
25006
|
init_Icon();
|
|
24690
25007
|
init_useEventBus();
|
|
24691
25008
|
init_useQuerySingleton();
|
|
25009
|
+
init_useTranslate();
|
|
24692
25010
|
resolveFilterType = (filter) => filter.filterType ?? filter.type;
|
|
24693
25011
|
lookStyles6 = {
|
|
24694
25012
|
toolbar: "",
|
|
@@ -24709,6 +25027,7 @@ var init_FilterGroup = __esm({
|
|
|
24709
25027
|
isLoading,
|
|
24710
25028
|
look = "toolbar"
|
|
24711
25029
|
}) => {
|
|
25030
|
+
const { t } = useTranslate();
|
|
24712
25031
|
const eventBus = useEventBus();
|
|
24713
25032
|
const queryState = useQuerySingleton(query);
|
|
24714
25033
|
const [selectedValues, setSelectedValues] = React85.useState(
|
|
@@ -24790,7 +25109,7 @@ var init_FilterGroup = __esm({
|
|
|
24790
25109
|
"px-3 py-1.5 text-sm font-medium transition-all duration-[var(--transition-fast)]",
|
|
24791
25110
|
!selectedValues[filter.field] ? "bg-primary text-primary-foreground" : "bg-card text-muted-foreground hover:bg-muted"
|
|
24792
25111
|
),
|
|
24793
|
-
children: "
|
|
25112
|
+
children: t("filterGroup.all")
|
|
24794
25113
|
}
|
|
24795
25114
|
),
|
|
24796
25115
|
filter.options?.map((option) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -24818,7 +25137,7 @@ var init_FilterGroup = __esm({
|
|
|
24818
25137
|
size: "sm",
|
|
24819
25138
|
onClick: handleClearAll,
|
|
24820
25139
|
leftIcon: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "x", className: "h-3.5 w-3.5" }),
|
|
24821
|
-
children: "
|
|
25140
|
+
children: t("filterGroup.clear")
|
|
24822
25141
|
}
|
|
24823
25142
|
)
|
|
24824
25143
|
]
|
|
@@ -24829,7 +25148,7 @@ var init_FilterGroup = __esm({
|
|
|
24829
25148
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col gap-4", lookStyles6[look], className), children: [
|
|
24830
25149
|
showIcon && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-muted-foreground", children: [
|
|
24831
25150
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "filter", className: "h-4 w-4" }),
|
|
24832
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: "
|
|
25151
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: t("filterGroup.filters") })
|
|
24833
25152
|
] }),
|
|
24834
25153
|
filters.map((filter) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
24835
25154
|
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-xs font-bold text-muted-foreground uppercase tracking-wide", children: filter.label }),
|
|
@@ -24852,7 +25171,7 @@ var init_FilterGroup = __esm({
|
|
|
24852
25171
|
`${filter.field}_from`,
|
|
24853
25172
|
e.target.value || null
|
|
24854
25173
|
),
|
|
24855
|
-
placeholder: "
|
|
25174
|
+
placeholder: t("filterGroup.from"),
|
|
24856
25175
|
clearable: true,
|
|
24857
25176
|
onClear: () => handleFilterSelect(`${filter.field}_from`, null)
|
|
24858
25177
|
}
|
|
@@ -24866,7 +25185,7 @@ var init_FilterGroup = __esm({
|
|
|
24866
25185
|
`${filter.field}_to`,
|
|
24867
25186
|
e.target.value || null
|
|
24868
25187
|
),
|
|
24869
|
-
placeholder: "
|
|
25188
|
+
placeholder: t("filterGroup.to"),
|
|
24870
25189
|
clearable: true,
|
|
24871
25190
|
onClear: () => handleFilterSelect(`${filter.field}_to`, null)
|
|
24872
25191
|
}
|
|
@@ -24886,7 +25205,7 @@ var init_FilterGroup = __esm({
|
|
|
24886
25205
|
value: selectedValues[filter.field] || "all",
|
|
24887
25206
|
onChange: (e) => handleFilterSelect(filter.field, e.target.value),
|
|
24888
25207
|
options: [
|
|
24889
|
-
{ value: "all", label: "
|
|
25208
|
+
{ value: "all", label: t("filterGroup.all") },
|
|
24890
25209
|
...filter.options?.map((opt) => ({
|
|
24891
25210
|
value: opt,
|
|
24892
25211
|
label: opt
|
|
@@ -24903,7 +25222,7 @@ var init_FilterGroup = __esm({
|
|
|
24903
25222
|
onClick: handleClearAll,
|
|
24904
25223
|
leftIcon: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "x", className: "h-3.5 w-3.5" }),
|
|
24905
25224
|
className: "self-start",
|
|
24906
|
-
children: "
|
|
25225
|
+
children: t("filterGroup.clearAll")
|
|
24907
25226
|
}
|
|
24908
25227
|
)
|
|
24909
25228
|
] });
|
|
@@ -24969,7 +25288,7 @@ var init_FilterGroup = __esm({
|
|
|
24969
25288
|
value: selectedValues[filter.field] || "all",
|
|
24970
25289
|
onChange: (e) => handleFilterSelect(filter.field, e.target.value),
|
|
24971
25290
|
options: [
|
|
24972
|
-
{ value: "all", label:
|
|
25291
|
+
{ value: "all", label: t("filterGroup.allOf", { label: filter.label }) },
|
|
24973
25292
|
...filter.options?.map((opt) => ({
|
|
24974
25293
|
value: opt,
|
|
24975
25294
|
label: opt
|
|
@@ -24998,7 +25317,7 @@ var init_FilterGroup = __esm({
|
|
|
24998
25317
|
field
|
|
24999
25318
|
);
|
|
25000
25319
|
}),
|
|
25001
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", onClick: handleClearAll, children: "
|
|
25320
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", onClick: handleClearAll, children: t("filterGroup.clearAll") })
|
|
25002
25321
|
] })
|
|
25003
25322
|
]
|
|
25004
25323
|
}
|
|
@@ -25023,7 +25342,7 @@ var init_FilterGroup = __esm({
|
|
|
25023
25342
|
className: "text-muted-foreground",
|
|
25024
25343
|
children: [
|
|
25025
25344
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "filter", className: "h-4 w-4" }),
|
|
25026
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: "
|
|
25345
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: t("filterGroup.filters") })
|
|
25027
25346
|
]
|
|
25028
25347
|
}
|
|
25029
25348
|
),
|
|
@@ -25049,7 +25368,7 @@ var init_FilterGroup = __esm({
|
|
|
25049
25368
|
`${filter.field}_from`,
|
|
25050
25369
|
e.target.value || null
|
|
25051
25370
|
),
|
|
25052
|
-
placeholder: "
|
|
25371
|
+
placeholder: t("filterGroup.from"),
|
|
25053
25372
|
clearable: true,
|
|
25054
25373
|
onClear: () => handleFilterSelect(`${filter.field}_from`, null),
|
|
25055
25374
|
className: "min-w-[130px]"
|
|
@@ -25065,7 +25384,7 @@ var init_FilterGroup = __esm({
|
|
|
25065
25384
|
`${filter.field}_to`,
|
|
25066
25385
|
e.target.value || null
|
|
25067
25386
|
),
|
|
25068
|
-
placeholder: "
|
|
25387
|
+
placeholder: t("filterGroup.to"),
|
|
25069
25388
|
clearable: true,
|
|
25070
25389
|
onClear: () => handleFilterSelect(`${filter.field}_to`, null),
|
|
25071
25390
|
className: "min-w-[130px]"
|
|
@@ -25087,7 +25406,7 @@ var init_FilterGroup = __esm({
|
|
|
25087
25406
|
value: selectedValues[filter.field] || "all",
|
|
25088
25407
|
onChange: (e) => handleFilterSelect(filter.field, e.target.value),
|
|
25089
25408
|
options: [
|
|
25090
|
-
{ value: "all", label: "
|
|
25409
|
+
{ value: "all", label: t("filterGroup.all") },
|
|
25091
25410
|
...filter.options?.map((opt) => ({
|
|
25092
25411
|
value: opt,
|
|
25093
25412
|
label: opt
|
|
@@ -25098,10 +25417,7 @@ var init_FilterGroup = __esm({
|
|
|
25098
25417
|
)
|
|
25099
25418
|
] }, filter.field)),
|
|
25100
25419
|
activeFilterCount > 0 && /* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", align: "center", className: "ml-auto", children: [
|
|
25101
|
-
/* @__PURE__ */ jsxRuntime.
|
|
25102
|
-
activeFilterCount,
|
|
25103
|
-
" active"
|
|
25104
|
-
] }),
|
|
25420
|
+
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "primary", size: "md", children: t("filterGroup.activeCount", { count: activeFilterCount }) }),
|
|
25105
25421
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
25106
25422
|
Button,
|
|
25107
25423
|
{
|
|
@@ -25109,7 +25425,7 @@ var init_FilterGroup = __esm({
|
|
|
25109
25425
|
size: "sm",
|
|
25110
25426
|
onClick: handleClearAll,
|
|
25111
25427
|
leftIcon: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "x", className: "h-3.5 w-3.5" }),
|
|
25112
|
-
children: "
|
|
25428
|
+
children: t("filterGroup.clearAll")
|
|
25113
25429
|
}
|
|
25114
25430
|
)
|
|
25115
25431
|
] })
|
|
@@ -26053,19 +26369,20 @@ var init_RepeatableFormSection = __esm({
|
|
|
26053
26369
|
RepeatableFormSection.displayName = "RepeatableFormSection";
|
|
26054
26370
|
}
|
|
26055
26371
|
});
|
|
26056
|
-
var
|
|
26372
|
+
var actionTypeLabelKeys, actionTypeIcons, ViolationAlert;
|
|
26057
26373
|
var init_ViolationAlert = __esm({
|
|
26058
26374
|
"components/core/molecules/ViolationAlert.tsx"() {
|
|
26059
26375
|
init_cn();
|
|
26376
|
+
init_useTranslate();
|
|
26060
26377
|
init_Box();
|
|
26061
26378
|
init_Stack();
|
|
26062
26379
|
init_Typography();
|
|
26063
26380
|
init_Button();
|
|
26064
26381
|
init_Icon();
|
|
26065
|
-
|
|
26066
|
-
measure: "
|
|
26067
|
-
admin: "
|
|
26068
|
-
penalty: "
|
|
26382
|
+
actionTypeLabelKeys = {
|
|
26383
|
+
measure: "violationAlert.actionType.measure",
|
|
26384
|
+
admin: "violationAlert.actionType.admin",
|
|
26385
|
+
penalty: "violationAlert.actionType.penalty"
|
|
26069
26386
|
};
|
|
26070
26387
|
actionTypeIcons = {
|
|
26071
26388
|
measure: "alert-triangle",
|
|
@@ -26082,10 +26399,11 @@ var init_ViolationAlert = __esm({
|
|
|
26082
26399
|
className,
|
|
26083
26400
|
...flatProps
|
|
26084
26401
|
}) => {
|
|
26402
|
+
const { t } = useTranslate();
|
|
26085
26403
|
const resolvedViolation = violation ?? {
|
|
26086
26404
|
law: "",
|
|
26087
26405
|
article: "",
|
|
26088
|
-
message: flatProps.message ?? "
|
|
26406
|
+
message: flatProps.message ?? t("violationAlert.fallbackMessage"),
|
|
26089
26407
|
actionType: "measure"
|
|
26090
26408
|
};
|
|
26091
26409
|
const effectiveSeverity = severity ?? (resolvedViolation.actionType === "measure" ? "warning" : "error");
|
|
@@ -26170,7 +26488,7 @@ var init_ViolationAlert = __esm({
|
|
|
26170
26488
|
{
|
|
26171
26489
|
variant: "caption",
|
|
26172
26490
|
className: cn(textColor, "opacity-75"),
|
|
26173
|
-
children:
|
|
26491
|
+
children: t(actionTypeLabelKeys[resolvedViolation.actionType])
|
|
26174
26492
|
}
|
|
26175
26493
|
)
|
|
26176
26494
|
] })
|
|
@@ -26201,7 +26519,7 @@ var init_ViolationAlert = __esm({
|
|
|
26201
26519
|
{
|
|
26202
26520
|
variant: "caption",
|
|
26203
26521
|
className: cn(textColor, "opacity-75"),
|
|
26204
|
-
children: "
|
|
26522
|
+
children: t("violationAlert.adminLabel")
|
|
26205
26523
|
}
|
|
26206
26524
|
),
|
|
26207
26525
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -26220,7 +26538,7 @@ var init_ViolationAlert = __esm({
|
|
|
26220
26538
|
{
|
|
26221
26539
|
variant: "caption",
|
|
26222
26540
|
className: cn(textColor, "opacity-75"),
|
|
26223
|
-
children: "
|
|
26541
|
+
children: t("violationAlert.penaltyLabel")
|
|
26224
26542
|
}
|
|
26225
26543
|
),
|
|
26226
26544
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -26245,7 +26563,7 @@ var init_ViolationAlert = __esm({
|
|
|
26245
26563
|
className: cn(textColor, "self-start"),
|
|
26246
26564
|
children: [
|
|
26247
26565
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "arrow-right", size: "sm", className: "mr-1" }),
|
|
26248
|
-
"
|
|
26566
|
+
t("violationAlert.goToField")
|
|
26249
26567
|
]
|
|
26250
26568
|
}
|
|
26251
26569
|
)
|
|
@@ -26561,6 +26879,7 @@ var init_LineChart = __esm({
|
|
|
26561
26879
|
"use client";
|
|
26562
26880
|
init_cn();
|
|
26563
26881
|
init_atoms2();
|
|
26882
|
+
init_useTranslate();
|
|
26564
26883
|
LineChart2 = ({
|
|
26565
26884
|
data,
|
|
26566
26885
|
width = 400,
|
|
@@ -26572,6 +26891,7 @@ var init_LineChart = __esm({
|
|
|
26572
26891
|
areaColor = "var(--color-primary)",
|
|
26573
26892
|
className
|
|
26574
26893
|
}) => {
|
|
26894
|
+
const { t } = useTranslate();
|
|
26575
26895
|
const gradientId = React85.useId();
|
|
26576
26896
|
const safeData = data ?? [];
|
|
26577
26897
|
const sortedData = React85.useMemo(() => {
|
|
@@ -26608,7 +26928,7 @@ var init_LineChart = __esm({
|
|
|
26608
26928
|
return `${linePath} L ${last.x} ${bottom} L ${first.x} ${bottom} Z`;
|
|
26609
26929
|
}, [linePath, points, height, showArea]);
|
|
26610
26930
|
if (safeData.length === 0) {
|
|
26611
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("flex items-center justify-center text-muted-foreground", className), style: { width, height }, children: "
|
|
26931
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("flex items-center justify-center text-muted-foreground", className), style: { width, height }, children: t("empty.noData") });
|
|
26612
26932
|
}
|
|
26613
26933
|
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn(className), children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
26614
26934
|
"svg",
|
|
@@ -28515,6 +28835,7 @@ var init_GraphView = __esm({
|
|
|
28515
28835
|
"use client";
|
|
28516
28836
|
init_cn();
|
|
28517
28837
|
init_atoms2();
|
|
28838
|
+
init_useTranslate();
|
|
28518
28839
|
GROUP_COLORS = [
|
|
28519
28840
|
"#3b82f6",
|
|
28520
28841
|
// blue-500
|
|
@@ -28547,6 +28868,7 @@ var init_GraphView = __esm({
|
|
|
28547
28868
|
showLabels = true,
|
|
28548
28869
|
zoomToFit = true
|
|
28549
28870
|
}) => {
|
|
28871
|
+
const { t } = useTranslate();
|
|
28550
28872
|
const containerRef = React85.useRef(null);
|
|
28551
28873
|
const animRef = React85.useRef(0);
|
|
28552
28874
|
const [simNodes, setSimNodes] = React85.useState([]);
|
|
@@ -28724,7 +29046,7 @@ var init_GraphView = __esm({
|
|
|
28724
29046
|
[onNodeClick]
|
|
28725
29047
|
);
|
|
28726
29048
|
if (nodes.length === 0) {
|
|
28727
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("flex items-center justify-center", className), style: { width: w, height: h }, children: /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "text-muted-foreground text-sm", children: "
|
|
29049
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("flex items-center justify-center", className), style: { width: w, height: h }, children: /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "text-muted-foreground text-sm", children: t("display.noGraphData") }) });
|
|
28728
29050
|
}
|
|
28729
29051
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
28730
29052
|
Box,
|
|
@@ -29180,11 +29502,12 @@ var init_UploadDropZone = __esm({
|
|
|
29180
29502
|
init_Icon();
|
|
29181
29503
|
init_Typography();
|
|
29182
29504
|
init_useEventBus();
|
|
29505
|
+
init_useTranslate();
|
|
29183
29506
|
UploadDropZone = ({
|
|
29184
29507
|
accept,
|
|
29185
29508
|
maxSize,
|
|
29186
29509
|
maxFiles = 1,
|
|
29187
|
-
label
|
|
29510
|
+
label,
|
|
29188
29511
|
description,
|
|
29189
29512
|
disabled = false,
|
|
29190
29513
|
action,
|
|
@@ -29192,22 +29515,24 @@ var init_UploadDropZone = __esm({
|
|
|
29192
29515
|
onFiles,
|
|
29193
29516
|
className
|
|
29194
29517
|
}) => {
|
|
29518
|
+
const { t } = useTranslate();
|
|
29519
|
+
const resolvedLabel = label ?? t("upload.dropOrBrowse");
|
|
29195
29520
|
const [isDragOver, setIsDragOver] = React85.useState(false);
|
|
29196
29521
|
const [error, setError] = React85.useState(null);
|
|
29197
29522
|
const inputRef = React85.useRef(null);
|
|
29198
29523
|
const eventBus = useSafeEventBus7();
|
|
29199
29524
|
const defaultDescription = [
|
|
29200
|
-
accept ?
|
|
29201
|
-
maxSize ?
|
|
29202
|
-
maxFiles > 1 ?
|
|
29525
|
+
accept ? t("upload.accepted", { accept }) : null,
|
|
29526
|
+
maxSize ? t("upload.maxSize", { size: formatFileSize(maxSize) }) : null,
|
|
29527
|
+
maxFiles > 1 ? t("upload.maxFiles", { count: maxFiles }) : null
|
|
29203
29528
|
].filter(Boolean).join(". ");
|
|
29204
29529
|
const validateFiles = React85.useCallback(
|
|
29205
29530
|
(files) => {
|
|
29206
29531
|
if (files.length > maxFiles) {
|
|
29207
|
-
return { valid: [], error:
|
|
29532
|
+
return { valid: [], error: t("upload.error.maxFiles", { count: maxFiles }) };
|
|
29208
29533
|
}
|
|
29209
29534
|
if (accept) {
|
|
29210
|
-
const acceptedTypes = accept.split(",").map((
|
|
29535
|
+
const acceptedTypes = accept.split(",").map((s) => s.trim());
|
|
29211
29536
|
const invalid = files.filter((file) => {
|
|
29212
29537
|
return !acceptedTypes.some((type) => {
|
|
29213
29538
|
if (type.endsWith("/*")) {
|
|
@@ -29217,7 +29542,7 @@ var init_UploadDropZone = __esm({
|
|
|
29217
29542
|
});
|
|
29218
29543
|
});
|
|
29219
29544
|
if (invalid.length > 0) {
|
|
29220
|
-
return { valid: [], error:
|
|
29545
|
+
return { valid: [], error: t("upload.error.invalidType", { name: invalid[0].name }) };
|
|
29221
29546
|
}
|
|
29222
29547
|
}
|
|
29223
29548
|
if (maxSize) {
|
|
@@ -29225,13 +29550,13 @@ var init_UploadDropZone = __esm({
|
|
|
29225
29550
|
if (tooLarge.length > 0) {
|
|
29226
29551
|
return {
|
|
29227
29552
|
valid: [],
|
|
29228
|
-
error:
|
|
29553
|
+
error: t("upload.error.tooLarge", { name: tooLarge[0].name, size: formatFileSize(maxSize) })
|
|
29229
29554
|
};
|
|
29230
29555
|
}
|
|
29231
29556
|
}
|
|
29232
29557
|
return { valid: files, error: null };
|
|
29233
29558
|
},
|
|
29234
|
-
[accept, maxSize, maxFiles]
|
|
29559
|
+
[accept, maxSize, maxFiles, t]
|
|
29235
29560
|
);
|
|
29236
29561
|
const handleFiles = React85.useCallback(
|
|
29237
29562
|
(files) => {
|
|
@@ -29302,7 +29627,7 @@ var init_UploadDropZone = __esm({
|
|
|
29302
29627
|
handleClick();
|
|
29303
29628
|
}
|
|
29304
29629
|
},
|
|
29305
|
-
"aria-label":
|
|
29630
|
+
"aria-label": resolvedLabel,
|
|
29306
29631
|
children: [
|
|
29307
29632
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
29308
29633
|
"input",
|
|
@@ -29318,7 +29643,7 @@ var init_UploadDropZone = __esm({
|
|
|
29318
29643
|
}
|
|
29319
29644
|
),
|
|
29320
29645
|
error ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "file-warning", size: "lg", className: "text-error mb-2" }) : /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "upload", size: "lg", className: "text-muted-foreground mb-2" }),
|
|
29321
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body1", className: "text-center font-medium mb-1", children: isDragOver ? "
|
|
29646
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body1", className: "text-center font-medium mb-1", children: isDragOver ? t("upload.dropFilesHere") : resolvedLabel }),
|
|
29322
29647
|
error ? /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "error", className: "text-center", children: error }) : /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "muted", className: "text-center", children: description ?? defaultDescription })
|
|
29323
29648
|
]
|
|
29324
29649
|
}
|
|
@@ -29740,7 +30065,7 @@ function TableView({
|
|
|
29740
30065
|
{
|
|
29741
30066
|
checked: selected.has(id),
|
|
29742
30067
|
onChange: () => toggleRow(id),
|
|
29743
|
-
"aria-label":
|
|
30068
|
+
"aria-label": t("table.selectRow", { id })
|
|
29744
30069
|
}
|
|
29745
30070
|
) }),
|
|
29746
30071
|
hasRenderProp ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex-1 min-w-0", children: children(row, index) }) : colDefs.map((col) => {
|
|
@@ -32587,7 +32912,7 @@ var init_QrScanner = __esm({
|
|
|
32587
32912
|
className: "inset-0 flex-col items-center justify-center gap-2 bg-black bg-opacity-80 text-center",
|
|
32588
32913
|
children: [
|
|
32589
32914
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "camera", className: "h-8 w-8 text-white", "aria-hidden": "true" }),
|
|
32590
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-white", children: "
|
|
32915
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-white", children: t("qrScanner.cameraUnavailable") }),
|
|
32591
32916
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", className: "text-white opacity-70", children: cameraError.message })
|
|
32592
32917
|
]
|
|
32593
32918
|
}
|
|
@@ -32598,7 +32923,7 @@ var init_QrScanner = __esm({
|
|
|
32598
32923
|
position: "absolute",
|
|
32599
32924
|
display: "flex",
|
|
32600
32925
|
className: "inset-0 items-center justify-center bg-black bg-opacity-60",
|
|
32601
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-white", children: "
|
|
32926
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-white", children: t("qrScanner.paused") })
|
|
32602
32927
|
}
|
|
32603
32928
|
),
|
|
32604
32929
|
showCameraControls && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -32617,7 +32942,7 @@ var init_QrScanner = __esm({
|
|
|
32617
32942
|
"rounded-full bg-black bg-opacity-60 p-2 text-white",
|
|
32618
32943
|
"hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
|
|
32619
32944
|
),
|
|
32620
|
-
"aria-label": isPaused ? "
|
|
32945
|
+
"aria-label": isPaused ? t("qrScanner.resumeScanning") : t("qrScanner.pauseScanning"),
|
|
32621
32946
|
children: isPaused ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "play", className: "h-4 w-4" }) : /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "pause", className: "h-4 w-4" })
|
|
32622
32947
|
}
|
|
32623
32948
|
),
|
|
@@ -32630,7 +32955,7 @@ var init_QrScanner = __esm({
|
|
|
32630
32955
|
"rounded-full bg-black bg-opacity-60 p-2 text-white",
|
|
32631
32956
|
"hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
|
|
32632
32957
|
),
|
|
32633
|
-
"aria-label":
|
|
32958
|
+
"aria-label": currentFacing === "environment" ? t("qrScanner.switchToFrontCamera") : t("qrScanner.switchToRearCamera"),
|
|
32634
32959
|
children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "refresh-cw", className: "h-4 w-4" })
|
|
32635
32960
|
}
|
|
32636
32961
|
),
|
|
@@ -32644,7 +32969,7 @@ var init_QrScanner = __esm({
|
|
|
32644
32969
|
"hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
|
|
32645
32970
|
),
|
|
32646
32971
|
"aria-label": t("aria.mockScanDev"),
|
|
32647
|
-
children: "
|
|
32972
|
+
children: t("qrScanner.mockScan")
|
|
32648
32973
|
}
|
|
32649
32974
|
)
|
|
32650
32975
|
]
|
|
@@ -32662,6 +32987,7 @@ var init_OptionConstraintGroup = __esm({
|
|
|
32662
32987
|
"components/core/molecules/OptionConstraintGroup.tsx"() {
|
|
32663
32988
|
init_cn();
|
|
32664
32989
|
init_useEventBus();
|
|
32990
|
+
init_useTranslate();
|
|
32665
32991
|
init_Typography();
|
|
32666
32992
|
init_Box();
|
|
32667
32993
|
init_Label();
|
|
@@ -32671,36 +32997,36 @@ var init_OptionConstraintGroup = __esm({
|
|
|
32671
32997
|
const sign = delta >= 0 ? "+" : "-";
|
|
32672
32998
|
return `${sign}$${Math.abs(delta).toFixed(2)}`;
|
|
32673
32999
|
};
|
|
32674
|
-
constraintHint = (constraint) => {
|
|
33000
|
+
constraintHint = (constraint, t) => {
|
|
32675
33001
|
if (constraint.type === "single") {
|
|
32676
|
-
return constraint.required ? "
|
|
33002
|
+
return constraint.required ? t("optionConstraint.requiredOne") : t("optionConstraint.optionalOne");
|
|
32677
33003
|
}
|
|
32678
33004
|
const { min, max } = constraint;
|
|
32679
33005
|
if (min && max) {
|
|
32680
|
-
return min === max ?
|
|
33006
|
+
return min === max ? t("optionConstraint.pickExactly", { count: min }) : t("optionConstraint.pickRange", { min, max });
|
|
32681
33007
|
}
|
|
32682
|
-
if (min) return
|
|
32683
|
-
if (max) return
|
|
32684
|
-
return "
|
|
33008
|
+
if (min) return t("optionConstraint.pickAtLeast", { count: min });
|
|
33009
|
+
if (max) return t("optionConstraint.pickUpTo", { count: max });
|
|
33010
|
+
return t("optionConstraint.optional");
|
|
32685
33011
|
};
|
|
32686
|
-
validateSelection = (selected, constraint) => {
|
|
33012
|
+
validateSelection = (selected, constraint, t) => {
|
|
32687
33013
|
if (constraint.type === "single") {
|
|
32688
33014
|
if (constraint.required && selected.length === 0) {
|
|
32689
|
-
return "
|
|
33015
|
+
return t("optionConstraint.error.pickOne");
|
|
32690
33016
|
}
|
|
32691
33017
|
if (selected.length > 1) {
|
|
32692
|
-
return "
|
|
33018
|
+
return t("optionConstraint.error.pickOnlyOne");
|
|
32693
33019
|
}
|
|
32694
33020
|
return void 0;
|
|
32695
33021
|
}
|
|
32696
33022
|
const { min, max } = constraint;
|
|
32697
33023
|
if (min !== void 0 && selected.length < min) {
|
|
32698
33024
|
const remaining = min - selected.length;
|
|
32699
|
-
return
|
|
33025
|
+
return t("optionConstraint.error.pickMore", { count: remaining });
|
|
32700
33026
|
}
|
|
32701
33027
|
if (max !== void 0 && selected.length > max) {
|
|
32702
33028
|
const excess = selected.length - max;
|
|
32703
|
-
return
|
|
33029
|
+
return t("optionConstraint.error.removeOptions", { count: excess });
|
|
32704
33030
|
}
|
|
32705
33031
|
return void 0;
|
|
32706
33032
|
};
|
|
@@ -32717,8 +33043,9 @@ var init_OptionConstraintGroup = __esm({
|
|
|
32717
33043
|
className
|
|
32718
33044
|
}) => {
|
|
32719
33045
|
const eventBus = useEventBus();
|
|
32720
|
-
const
|
|
32721
|
-
const
|
|
33046
|
+
const { t } = useTranslate();
|
|
33047
|
+
const hint = constraintHint(constraint, t);
|
|
33048
|
+
const error = validateSelection(selected, constraint, t);
|
|
32722
33049
|
const inputName = `option-${groupId}`;
|
|
32723
33050
|
const labelTextSize = size === "sm" ? "text-sm" : "text-base";
|
|
32724
33051
|
const optionGap = size === "sm" ? "gap-2" : "gap-2.5";
|
|
@@ -32818,7 +33145,7 @@ var init_OptionConstraintGroup = __esm({
|
|
|
32818
33145
|
variant: "caption",
|
|
32819
33146
|
color: "warning",
|
|
32820
33147
|
className: "rounded border border-warning/40 px-1.5 py-0.5",
|
|
32821
|
-
children: "
|
|
33148
|
+
children: t("optionConstraint.outOfStock")
|
|
32822
33149
|
}
|
|
32823
33150
|
)
|
|
32824
33151
|
]
|
|
@@ -33140,6 +33467,7 @@ function changeBlockType(block, type) {
|
|
|
33140
33467
|
return { id: block.id, type, content: seed };
|
|
33141
33468
|
}
|
|
33142
33469
|
function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
33470
|
+
const { t } = useTranslate();
|
|
33143
33471
|
const [open, setOpen] = React85.useState(false);
|
|
33144
33472
|
const ref = React85.useRef(null);
|
|
33145
33473
|
React85.useEffect(() => {
|
|
@@ -33159,7 +33487,7 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
33159
33487
|
{
|
|
33160
33488
|
type: "button",
|
|
33161
33489
|
variant: "ghost",
|
|
33162
|
-
"aria-label": "
|
|
33490
|
+
"aria-label": t("richBlockEditor.blockActions"),
|
|
33163
33491
|
className: cn(
|
|
33164
33492
|
"inline-flex items-center justify-center",
|
|
33165
33493
|
"h-6 w-6 rounded-sm p-0 gap-0",
|
|
@@ -33181,7 +33509,7 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
33181
33509
|
"py-1 text-sm"
|
|
33182
33510
|
),
|
|
33183
33511
|
children: [
|
|
33184
|
-
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground", children:
|
|
33512
|
+
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground", children: t(BLOCK_TYPE_LABEL_KEY[block.type]) }),
|
|
33185
33513
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
33186
33514
|
Button,
|
|
33187
33515
|
{
|
|
@@ -33195,7 +33523,8 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
33195
33523
|
},
|
|
33196
33524
|
children: [
|
|
33197
33525
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "plus", className: "w-3.5 h-3.5" }),
|
|
33198
|
-
"
|
|
33526
|
+
" ",
|
|
33527
|
+
t("richBlockEditor.duplicate")
|
|
33199
33528
|
]
|
|
33200
33529
|
}
|
|
33201
33530
|
),
|
|
@@ -33212,14 +33541,15 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
33212
33541
|
},
|
|
33213
33542
|
children: [
|
|
33214
33543
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "trash", className: "w-3.5 h-3.5" }),
|
|
33215
|
-
"
|
|
33544
|
+
" ",
|
|
33545
|
+
t("common.delete")
|
|
33216
33546
|
]
|
|
33217
33547
|
}
|
|
33218
33548
|
),
|
|
33219
33549
|
CHANGEABLE_TYPES.includes(block.type) && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
33220
33550
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "my-1 border-t border-border" }),
|
|
33221
|
-
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground", children: "
|
|
33222
|
-
CHANGEABLE_TYPES.filter((
|
|
33551
|
+
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground", children: t("richBlockEditor.turnInto") }),
|
|
33552
|
+
CHANGEABLE_TYPES.filter((bt) => bt !== block.type).map((bt) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
33223
33553
|
Button,
|
|
33224
33554
|
{
|
|
33225
33555
|
type: "button",
|
|
@@ -33227,12 +33557,12 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
33227
33557
|
role: "menuitem",
|
|
33228
33558
|
className: "flex w-full items-center gap-2 px-2 py-1.5 text-left justify-start rounded-none",
|
|
33229
33559
|
onClick: () => {
|
|
33230
|
-
onChangeType(
|
|
33560
|
+
onChangeType(bt);
|
|
33231
33561
|
setOpen(false);
|
|
33232
33562
|
},
|
|
33233
|
-
children:
|
|
33563
|
+
children: t(BLOCK_TYPE_LABEL_KEY[bt])
|
|
33234
33564
|
},
|
|
33235
|
-
|
|
33565
|
+
bt
|
|
33236
33566
|
))
|
|
33237
33567
|
] })
|
|
33238
33568
|
]
|
|
@@ -33294,6 +33624,7 @@ function BlockRow({
|
|
|
33294
33624
|
onInsertAfter,
|
|
33295
33625
|
onChangeType
|
|
33296
33626
|
}) {
|
|
33627
|
+
const { t } = useTranslate();
|
|
33297
33628
|
const setContent = React85.useCallback(
|
|
33298
33629
|
(next) => onUpdate((b) => ({ ...b, content: next })),
|
|
33299
33630
|
[onUpdate]
|
|
@@ -33343,8 +33674,8 @@ function BlockRow({
|
|
|
33343
33674
|
tag: "h1",
|
|
33344
33675
|
value: block.content ?? "",
|
|
33345
33676
|
readOnly,
|
|
33346
|
-
placeholder: placeholder ?? "
|
|
33347
|
-
ariaLabel: "
|
|
33677
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.heading1"),
|
|
33678
|
+
ariaLabel: t("richBlockEditor.aria.heading1Block"),
|
|
33348
33679
|
className: "text-3xl font-bold leading-tight",
|
|
33349
33680
|
onValueChange: setContent
|
|
33350
33681
|
}
|
|
@@ -33356,8 +33687,8 @@ function BlockRow({
|
|
|
33356
33687
|
tag: "h2",
|
|
33357
33688
|
value: block.content ?? "",
|
|
33358
33689
|
readOnly,
|
|
33359
|
-
placeholder: placeholder ?? "
|
|
33360
|
-
ariaLabel: "
|
|
33690
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.heading2"),
|
|
33691
|
+
ariaLabel: t("richBlockEditor.aria.heading2Block"),
|
|
33361
33692
|
className: "text-2xl font-semibold leading-tight",
|
|
33362
33693
|
onValueChange: setContent
|
|
33363
33694
|
}
|
|
@@ -33369,8 +33700,8 @@ function BlockRow({
|
|
|
33369
33700
|
tag: "h3",
|
|
33370
33701
|
value: block.content ?? "",
|
|
33371
33702
|
readOnly,
|
|
33372
|
-
placeholder: placeholder ?? "
|
|
33373
|
-
ariaLabel: "
|
|
33703
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.heading3"),
|
|
33704
|
+
ariaLabel: t("richBlockEditor.aria.heading3Block"),
|
|
33374
33705
|
className: "text-xl font-semibold leading-tight",
|
|
33375
33706
|
onValueChange: setContent
|
|
33376
33707
|
}
|
|
@@ -33382,8 +33713,8 @@ function BlockRow({
|
|
|
33382
33713
|
tag: "blockquote",
|
|
33383
33714
|
value: block.content ?? "",
|
|
33384
33715
|
readOnly,
|
|
33385
|
-
placeholder: placeholder ?? "
|
|
33386
|
-
ariaLabel: "
|
|
33716
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.quote"),
|
|
33717
|
+
ariaLabel: t("richBlockEditor.aria.quoteBlock"),
|
|
33387
33718
|
className: "border-l-4 border-primary/60 pl-4 italic text-muted-foreground",
|
|
33388
33719
|
onValueChange: setContent
|
|
33389
33720
|
}
|
|
@@ -33391,13 +33722,13 @@ function BlockRow({
|
|
|
33391
33722
|
case "code":
|
|
33392
33723
|
return /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "rounded-md border border-border bg-muted/40", children: [
|
|
33393
33724
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex items-center justify-between border-b border-border px-3 py-1 text-xs text-muted-foreground", children: [
|
|
33394
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { as: "span", variant: "caption", className: "uppercase tracking-wide", children: "
|
|
33725
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { as: "span", variant: "caption", className: "uppercase tracking-wide", children: t("richBlockEditor.blockType.code") }),
|
|
33395
33726
|
!readOnly && /* @__PURE__ */ jsxRuntime.jsx(
|
|
33396
33727
|
Input,
|
|
33397
33728
|
{
|
|
33398
33729
|
inputType: "text",
|
|
33399
33730
|
value: String(block.metadata?.language ?? "plaintext"),
|
|
33400
|
-
"aria-label": "
|
|
33731
|
+
"aria-label": t("richBlockEditor.aria.codeLanguage"),
|
|
33401
33732
|
className: cn(
|
|
33402
33733
|
"h-6 w-32 rounded-sm border border-border bg-background",
|
|
33403
33734
|
"px-2 text-xs outline-none focus:ring-1 focus:ring-ring"
|
|
@@ -33413,8 +33744,8 @@ function BlockRow({
|
|
|
33413
33744
|
tag: "pre",
|
|
33414
33745
|
value: block.content ?? "",
|
|
33415
33746
|
readOnly,
|
|
33416
|
-
placeholder: placeholder ?? "
|
|
33417
|
-
ariaLabel: "
|
|
33747
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.code"),
|
|
33748
|
+
ariaLabel: t("richBlockEditor.aria.codeBlock"),
|
|
33418
33749
|
className: "block whitespace-pre-wrap p-3 font-mono text-sm leading-relaxed",
|
|
33419
33750
|
onValueChange: setContent
|
|
33420
33751
|
}
|
|
@@ -33427,7 +33758,7 @@ function BlockRow({
|
|
|
33427
33758
|
const caption = String(block.metadata?.caption ?? "");
|
|
33428
33759
|
const imgProps = {
|
|
33429
33760
|
src: url,
|
|
33430
|
-
alt: caption || "
|
|
33761
|
+
alt: caption || t("richBlockEditor.embeddedImage"),
|
|
33431
33762
|
className: "max-h-96 w-full rounded-md border border-border object-contain"
|
|
33432
33763
|
};
|
|
33433
33764
|
return /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "space-y-2", children: [
|
|
@@ -33441,7 +33772,8 @@ function BlockRow({
|
|
|
33441
33772
|
),
|
|
33442
33773
|
children: [
|
|
33443
33774
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "image", className: "mr-2 w-4 h-4" }),
|
|
33444
|
-
"
|
|
33775
|
+
" ",
|
|
33776
|
+
t("richBlockEditor.noImageUrl")
|
|
33445
33777
|
]
|
|
33446
33778
|
}
|
|
33447
33779
|
),
|
|
@@ -33452,7 +33784,7 @@ function BlockRow({
|
|
|
33452
33784
|
inputType: "url",
|
|
33453
33785
|
value: url,
|
|
33454
33786
|
placeholder: "https://example.com/image.png",
|
|
33455
|
-
"aria-label": "
|
|
33787
|
+
"aria-label": t("richBlockEditor.aria.imageUrl"),
|
|
33456
33788
|
className: cn(
|
|
33457
33789
|
"h-8 flex-1 rounded-sm border border-border bg-background",
|
|
33458
33790
|
"px-2 text-sm outline-none focus:ring-1 focus:ring-ring"
|
|
@@ -33465,8 +33797,8 @@ function BlockRow({
|
|
|
33465
33797
|
{
|
|
33466
33798
|
inputType: "text",
|
|
33467
33799
|
value: caption,
|
|
33468
|
-
placeholder: "
|
|
33469
|
-
"aria-label": "
|
|
33800
|
+
placeholder: t("richBlockEditor.placeholder.caption"),
|
|
33801
|
+
"aria-label": t("richBlockEditor.aria.imageCaption"),
|
|
33470
33802
|
className: cn(
|
|
33471
33803
|
"h-8 flex-1 rounded-sm border border-border bg-background",
|
|
33472
33804
|
"px-2 text-sm outline-none focus:ring-1 focus:ring-ring"
|
|
@@ -33497,8 +33829,8 @@ function BlockRow({
|
|
|
33497
33829
|
tag: "span",
|
|
33498
33830
|
value: child.content ?? "",
|
|
33499
33831
|
readOnly,
|
|
33500
|
-
placeholder: "
|
|
33501
|
-
ariaLabel: "
|
|
33832
|
+
placeholder: t("richBlockEditor.placeholder.listItem"),
|
|
33833
|
+
ariaLabel: t("richBlockEditor.aria.listItem"),
|
|
33502
33834
|
className: "inline-block min-w-[1ch] flex-1",
|
|
33503
33835
|
onValueChange: (next) => setChildContent(child.id, next)
|
|
33504
33836
|
}
|
|
@@ -33508,7 +33840,7 @@ function BlockRow({
|
|
|
33508
33840
|
{
|
|
33509
33841
|
type: "button",
|
|
33510
33842
|
variant: "ghost",
|
|
33511
|
-
"aria-label": "
|
|
33843
|
+
"aria-label": t("richBlockEditor.aria.removeListItem"),
|
|
33512
33844
|
className: cn(
|
|
33513
33845
|
"h-5 w-5 shrink-0 rounded-sm text-muted-foreground p-0 gap-0",
|
|
33514
33846
|
"opacity-0 group-hover/item:opacity-100 hover:bg-muted hover:text-foreground"
|
|
@@ -33530,7 +33862,8 @@ function BlockRow({
|
|
|
33530
33862
|
onClick: addListItem,
|
|
33531
33863
|
children: [
|
|
33532
33864
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "plus", className: "w-3 h-3" }),
|
|
33533
|
-
"
|
|
33865
|
+
" ",
|
|
33866
|
+
t("richBlockEditor.addItem")
|
|
33534
33867
|
]
|
|
33535
33868
|
}
|
|
33536
33869
|
) })
|
|
@@ -33546,8 +33879,8 @@ function BlockRow({
|
|
|
33546
33879
|
tag: "p",
|
|
33547
33880
|
value: block.content ?? "",
|
|
33548
33881
|
readOnly,
|
|
33549
|
-
placeholder: placeholder ?? "
|
|
33550
|
-
ariaLabel: "
|
|
33882
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.paragraph"),
|
|
33883
|
+
ariaLabel: t("richBlockEditor.aria.paragraphBlock"),
|
|
33551
33884
|
className: "leading-7",
|
|
33552
33885
|
onValueChange: setContent
|
|
33553
33886
|
}
|
|
@@ -33570,7 +33903,7 @@ function BlockRow({
|
|
|
33570
33903
|
{
|
|
33571
33904
|
type: "button",
|
|
33572
33905
|
variant: "ghost",
|
|
33573
|
-
"aria-label": "
|
|
33906
|
+
"aria-label": t("richBlockEditor.insertParagraphBelow"),
|
|
33574
33907
|
className: cn(
|
|
33575
33908
|
"inline-flex h-6 w-6 items-center justify-center rounded-sm p-0 gap-0",
|
|
33576
33909
|
"text-muted-foreground hover:bg-muted hover:text-foreground",
|
|
@@ -33597,7 +33930,7 @@ function BlockRow({
|
|
|
33597
33930
|
}
|
|
33598
33931
|
);
|
|
33599
33932
|
}
|
|
33600
|
-
var TOOLBAR_ENTRIES,
|
|
33933
|
+
var TOOLBAR_ENTRIES, BLOCK_TYPE_LABEL_KEY, CHANGEABLE_TYPES, _idSeq, BLOCK_TYPES, RichBlockEditor;
|
|
33601
33934
|
var init_RichBlockEditor = __esm({
|
|
33602
33935
|
"components/core/molecules/RichBlockEditor.tsx"() {
|
|
33603
33936
|
"use client";
|
|
@@ -33610,29 +33943,30 @@ var init_RichBlockEditor = __esm({
|
|
|
33610
33943
|
init_Input();
|
|
33611
33944
|
init_Icon();
|
|
33612
33945
|
init_useEventBus();
|
|
33946
|
+
init_useTranslate();
|
|
33613
33947
|
TOOLBAR_ENTRIES = [
|
|
33614
|
-
{ type: "paragraph",
|
|
33615
|
-
{ type: "heading-1",
|
|
33616
|
-
{ type: "heading-2",
|
|
33617
|
-
{ type: "heading-3",
|
|
33618
|
-
{ type: "bullet-list",
|
|
33619
|
-
{ type: "numbered-list",
|
|
33620
|
-
{ type: "quote",
|
|
33621
|
-
{ type: "code",
|
|
33622
|
-
{ type: "divider",
|
|
33623
|
-
{ type: "image",
|
|
33948
|
+
{ type: "paragraph", labelKey: "richBlockEditor.toolbar.text", icon: LucideIcons2.Type },
|
|
33949
|
+
{ type: "heading-1", labelKey: "richBlockEditor.toolbar.h1", icon: LucideIcons2.Heading1 },
|
|
33950
|
+
{ type: "heading-2", labelKey: "richBlockEditor.toolbar.h2", icon: LucideIcons2.Heading2 },
|
|
33951
|
+
{ type: "heading-3", labelKey: "richBlockEditor.toolbar.h3", icon: LucideIcons2.Heading3 },
|
|
33952
|
+
{ type: "bullet-list", labelKey: "richBlockEditor.toolbar.bulletList", icon: LucideIcons2.List },
|
|
33953
|
+
{ type: "numbered-list", labelKey: "richBlockEditor.toolbar.numbered", icon: LucideIcons2.ListOrdered },
|
|
33954
|
+
{ type: "quote", labelKey: "richBlockEditor.toolbar.quote", icon: LucideIcons2.Quote },
|
|
33955
|
+
{ type: "code", labelKey: "richBlockEditor.toolbar.code", icon: LucideIcons2.Code },
|
|
33956
|
+
{ type: "divider", labelKey: "richBlockEditor.toolbar.divider", icon: LucideIcons2.Minus },
|
|
33957
|
+
{ type: "image", labelKey: "richBlockEditor.toolbar.image", icon: LucideIcons2.Image }
|
|
33624
33958
|
];
|
|
33625
|
-
|
|
33626
|
-
paragraph: "
|
|
33627
|
-
"heading-1": "
|
|
33628
|
-
"heading-2": "
|
|
33629
|
-
"heading-3": "
|
|
33630
|
-
"bullet-list": "
|
|
33631
|
-
"numbered-list": "
|
|
33632
|
-
quote: "
|
|
33633
|
-
code: "
|
|
33634
|
-
divider: "
|
|
33635
|
-
image: "
|
|
33959
|
+
BLOCK_TYPE_LABEL_KEY = {
|
|
33960
|
+
paragraph: "richBlockEditor.blockType.paragraph",
|
|
33961
|
+
"heading-1": "richBlockEditor.blockType.heading1",
|
|
33962
|
+
"heading-2": "richBlockEditor.blockType.heading2",
|
|
33963
|
+
"heading-3": "richBlockEditor.blockType.heading3",
|
|
33964
|
+
"bullet-list": "richBlockEditor.blockType.bulletList",
|
|
33965
|
+
"numbered-list": "richBlockEditor.blockType.numberedList",
|
|
33966
|
+
quote: "richBlockEditor.blockType.quote",
|
|
33967
|
+
code: "richBlockEditor.blockType.code",
|
|
33968
|
+
divider: "richBlockEditor.blockType.divider",
|
|
33969
|
+
image: "richBlockEditor.blockType.image"
|
|
33636
33970
|
};
|
|
33637
33971
|
CHANGEABLE_TYPES = [
|
|
33638
33972
|
"paragraph",
|
|
@@ -33666,6 +34000,7 @@ var init_RichBlockEditor = __esm({
|
|
|
33666
34000
|
showToolbar = true,
|
|
33667
34001
|
className
|
|
33668
34002
|
}) => {
|
|
34003
|
+
const { t } = useTranslate();
|
|
33669
34004
|
const [blocks, setBlocks] = React85.useState(
|
|
33670
34005
|
() => normalizeBlocks(initialBlocks)
|
|
33671
34006
|
);
|
|
@@ -33737,25 +34072,26 @@ var init_RichBlockEditor = __esm({
|
|
|
33737
34072
|
Box,
|
|
33738
34073
|
{
|
|
33739
34074
|
role: "toolbar",
|
|
33740
|
-
"aria-label": "
|
|
34075
|
+
"aria-label": t("richBlockEditor.editorToolbar"),
|
|
33741
34076
|
className: cn(
|
|
33742
34077
|
"flex flex-wrap items-center gap-1",
|
|
33743
34078
|
"border-b border-border bg-muted/30 px-2 py-2"
|
|
33744
34079
|
),
|
|
33745
34080
|
children: TOOLBAR_ENTRIES.map((entry) => {
|
|
33746
34081
|
const Icon3 = entry.icon;
|
|
34082
|
+
const entryLabel = t(entry.labelKey);
|
|
33747
34083
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
33748
34084
|
Button,
|
|
33749
34085
|
{
|
|
33750
34086
|
type: "button",
|
|
33751
34087
|
variant: "ghost",
|
|
33752
34088
|
size: "sm",
|
|
33753
|
-
"aria-label":
|
|
33754
|
-
title:
|
|
34089
|
+
"aria-label": t("richBlockEditor.insertEntry", { label: entryLabel }),
|
|
34090
|
+
title: entryLabel,
|
|
33755
34091
|
onClick: () => handleAppend(entry.type),
|
|
33756
34092
|
children: [
|
|
33757
34093
|
/* @__PURE__ */ jsxRuntime.jsx(Icon3, { size: 14 }),
|
|
33758
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { as: "span", variant: "caption", className: "ml-1 hidden text-xs sm:inline", children:
|
|
34094
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { as: "span", variant: "caption", className: "ml-1 hidden text-xs sm:inline", children: entryLabel })
|
|
33759
34095
|
]
|
|
33760
34096
|
},
|
|
33761
34097
|
entry.type
|
|
@@ -33798,6 +34134,7 @@ var init_ReplyTree = __esm({
|
|
|
33798
34134
|
"use client";
|
|
33799
34135
|
init_cn();
|
|
33800
34136
|
init_useEventBus();
|
|
34137
|
+
init_useTranslate();
|
|
33801
34138
|
init_atoms2();
|
|
33802
34139
|
init_VoteStack();
|
|
33803
34140
|
ReplyTreeNode = ({
|
|
@@ -33817,6 +34154,7 @@ var init_ReplyTree = __esm({
|
|
|
33817
34154
|
showActions
|
|
33818
34155
|
}) => {
|
|
33819
34156
|
const eventBus = useEventBus();
|
|
34157
|
+
const { t } = useTranslate();
|
|
33820
34158
|
const hasReplies = !!node.replies && node.replies.length > 0;
|
|
33821
34159
|
const isCollapsed = collapsedSet.has(node.id);
|
|
33822
34160
|
const atMaxDepth = depth >= maxDepth;
|
|
@@ -33863,7 +34201,7 @@ var init_ReplyTree = __esm({
|
|
|
33863
34201
|
variant: "ghost",
|
|
33864
34202
|
size: "sm",
|
|
33865
34203
|
onClick: handleToggle,
|
|
33866
|
-
"aria-label": isCollapsed ? "
|
|
34204
|
+
"aria-label": isCollapsed ? t("replyTree.expandReplies") : t("replyTree.collapseReplies"),
|
|
33867
34205
|
"aria-expanded": !isCollapsed,
|
|
33868
34206
|
leftIcon: isCollapsed ? "chevron-right" : "chevron-down",
|
|
33869
34207
|
className: cn(
|
|
@@ -33904,7 +34242,7 @@ var init_ReplyTree = __esm({
|
|
|
33904
34242
|
onVote: handleVote,
|
|
33905
34243
|
size: "sm",
|
|
33906
34244
|
variant: "horizontal",
|
|
33907
|
-
label:
|
|
34245
|
+
label: t("replyTree.voteOnReplyBy", { author: node.authorName })
|
|
33908
34246
|
}
|
|
33909
34247
|
),
|
|
33910
34248
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -33914,8 +34252,8 @@ var init_ReplyTree = __esm({
|
|
|
33914
34252
|
size: "sm",
|
|
33915
34253
|
leftIcon: "message-square",
|
|
33916
34254
|
onClick: handleReply,
|
|
33917
|
-
"aria-label":
|
|
33918
|
-
children: "
|
|
34255
|
+
"aria-label": t("replyTree.replyTo", { author: node.authorName }),
|
|
34256
|
+
children: t("replyTree.reply")
|
|
33919
34257
|
}
|
|
33920
34258
|
),
|
|
33921
34259
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -33925,8 +34263,8 @@ var init_ReplyTree = __esm({
|
|
|
33925
34263
|
size: "sm",
|
|
33926
34264
|
leftIcon: "flag",
|
|
33927
34265
|
onClick: handleFlag,
|
|
33928
|
-
"aria-label":
|
|
33929
|
-
children: "
|
|
34266
|
+
"aria-label": t("replyTree.flagReplyBy", { author: node.authorName }),
|
|
34267
|
+
children: t("replyTree.flag")
|
|
33930
34268
|
}
|
|
33931
34269
|
)
|
|
33932
34270
|
] }),
|
|
@@ -33937,9 +34275,9 @@ var init_ReplyTree = __esm({
|
|
|
33937
34275
|
inputType: "textarea",
|
|
33938
34276
|
rows: 2,
|
|
33939
34277
|
value: draft,
|
|
33940
|
-
placeholder:
|
|
34278
|
+
placeholder: t("replyTree.replyToPlaceholder", { author: node.authorName }),
|
|
33941
34279
|
onChange: (e) => setDraft(e.target.value),
|
|
33942
|
-
"aria-label":
|
|
34280
|
+
"aria-label": t("replyTree.replyTo", { author: node.authorName })
|
|
33943
34281
|
}
|
|
33944
34282
|
),
|
|
33945
34283
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex flex-row gap-2 items-center", children: [
|
|
@@ -33951,10 +34289,10 @@ var init_ReplyTree = __esm({
|
|
|
33951
34289
|
leftIcon: "send",
|
|
33952
34290
|
onClick: handleSubmitReply,
|
|
33953
34291
|
disabled: !draft.trim(),
|
|
33954
|
-
children: "
|
|
34292
|
+
children: t("replyTree.send")
|
|
33955
34293
|
}
|
|
33956
34294
|
),
|
|
33957
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", onClick: handleCancelReply, children: "
|
|
34295
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", onClick: handleCancelReply, children: t("common.cancel") })
|
|
33958
34296
|
] })
|
|
33959
34297
|
] }),
|
|
33960
34298
|
hasReplies && !isCollapsed && (atMaxDepth ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -33968,7 +34306,7 @@ var init_ReplyTree = __esm({
|
|
|
33968
34306
|
"self-start gap-1 px-0 h-auto",
|
|
33969
34307
|
"text-sm text-primary hover:underline hover:bg-transparent"
|
|
33970
34308
|
),
|
|
33971
|
-
children: "
|
|
34309
|
+
children: t("replyTree.continueThread")
|
|
33972
34310
|
}
|
|
33973
34311
|
) : /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex flex-col gap-2 mt-1", children: node.replies.map((child) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
33974
34312
|
ReplyTreeNode,
|
|
@@ -34007,6 +34345,7 @@ var init_ReplyTree = __esm({
|
|
|
34007
34345
|
showActions = true,
|
|
34008
34346
|
className
|
|
34009
34347
|
}) => {
|
|
34348
|
+
const { t } = useTranslate();
|
|
34010
34349
|
const nodeList = Array.isArray(nodes) ? nodes : nodes ? [nodes] : [];
|
|
34011
34350
|
const [collapsedSet, setCollapsedSet] = React85.useState(() => {
|
|
34012
34351
|
const acc = /* @__PURE__ */ new Set();
|
|
@@ -34025,7 +34364,7 @@ var init_ReplyTree = __esm({
|
|
|
34025
34364
|
});
|
|
34026
34365
|
}, []);
|
|
34027
34366
|
if (nodeList.length === 0) {
|
|
34028
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("text-sm text-muted-foreground", className), children: "
|
|
34367
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("text-sm text-muted-foreground", className), children: t("replyTree.noRepliesYet") });
|
|
34029
34368
|
}
|
|
34030
34369
|
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("flex flex-col gap-2 min-w-0", className), children: nodeList.map((node) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
34031
34370
|
ReplyTreeNode,
|
|
@@ -34103,6 +34442,7 @@ var init_VersionDiff = __esm({
|
|
|
34103
34442
|
"use client";
|
|
34104
34443
|
init_cn();
|
|
34105
34444
|
init_useEventBus();
|
|
34445
|
+
init_useTranslate();
|
|
34106
34446
|
init_atoms2();
|
|
34107
34447
|
init_Stack();
|
|
34108
34448
|
INLINE_STYLES = {
|
|
@@ -34125,6 +34465,7 @@ var init_VersionDiff = __esm({
|
|
|
34125
34465
|
language,
|
|
34126
34466
|
className
|
|
34127
34467
|
}) => {
|
|
34468
|
+
const { t } = useTranslate();
|
|
34128
34469
|
const eventBus = useEventBus();
|
|
34129
34470
|
const revisions = Array.isArray(revisionsProp) ? revisionsProp : [];
|
|
34130
34471
|
const fallbackBefore = revisions[0]?.id ?? "";
|
|
@@ -34206,24 +34547,24 @@ var init_VersionDiff = __esm({
|
|
|
34206
34547
|
children: [
|
|
34207
34548
|
/* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", align: "center", className: "flex-wrap", children: [
|
|
34208
34549
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "git-commit", size: "sm", className: "text-muted-foreground" }),
|
|
34209
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "whitespace-nowrap", children: "
|
|
34550
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "whitespace-nowrap", children: t("versionDiff.compare") }),
|
|
34210
34551
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "min-w-0 md:min-w-[160px]", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
34211
34552
|
Select,
|
|
34212
34553
|
{
|
|
34213
34554
|
options,
|
|
34214
34555
|
value: activeBeforeId,
|
|
34215
34556
|
onChange: handleBeforeChange,
|
|
34216
|
-
"aria-label": "
|
|
34557
|
+
"aria-label": t("versionDiff.beforeRevision")
|
|
34217
34558
|
}
|
|
34218
34559
|
) }),
|
|
34219
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "secondary", children: "to" }),
|
|
34560
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "secondary", children: t("versionDiff.to") }),
|
|
34220
34561
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "min-w-0 md:min-w-[160px]", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
34221
34562
|
Select,
|
|
34222
34563
|
{
|
|
34223
34564
|
options,
|
|
34224
34565
|
value: activeAfterId,
|
|
34225
34566
|
onChange: handleAfterChange,
|
|
34226
|
-
"aria-label": "
|
|
34567
|
+
"aria-label": t("versionDiff.afterRevision")
|
|
34227
34568
|
}
|
|
34228
34569
|
) }),
|
|
34229
34570
|
language && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "default", children: language }),
|
|
@@ -34244,7 +34585,7 @@ var init_VersionDiff = __esm({
|
|
|
34244
34585
|
size: "sm",
|
|
34245
34586
|
icon: activeView === "side-by-side" ? "align-left" : "columns",
|
|
34246
34587
|
onClick: handleViewToggle,
|
|
34247
|
-
"aria-label": activeView === "side-by-side" ? "
|
|
34588
|
+
"aria-label": activeView === "side-by-side" ? t("versionDiff.switchToInline") : t("versionDiff.switchToSideBySide")
|
|
34248
34589
|
}
|
|
34249
34590
|
),
|
|
34250
34591
|
(onRevert || revertEvent) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -34254,7 +34595,7 @@ var init_VersionDiff = __esm({
|
|
|
34254
34595
|
size: "sm",
|
|
34255
34596
|
icon: "rotate-ccw",
|
|
34256
34597
|
onClick: handleRevert,
|
|
34257
|
-
children: "
|
|
34598
|
+
children: t("versionDiff.revert")
|
|
34258
34599
|
}
|
|
34259
34600
|
)
|
|
34260
34601
|
] })
|
|
@@ -34271,12 +34612,12 @@ var init_VersionDiff = __esm({
|
|
|
34271
34612
|
children: [
|
|
34272
34613
|
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "caption", color: "secondary", className: "truncate", children: [
|
|
34273
34614
|
beforeRev?.label,
|
|
34274
|
-
beforeRev?.author ?
|
|
34615
|
+
beforeRev?.author ? t("versionDiff.byAuthor", { author: beforeRev.author }) : "",
|
|
34275
34616
|
beforeRev?.timestamp ? ` (${beforeRev.timestamp})` : ""
|
|
34276
34617
|
] }),
|
|
34277
34618
|
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "caption", color: "secondary", className: "truncate", children: [
|
|
34278
34619
|
afterRev?.label,
|
|
34279
|
-
afterRev?.author ?
|
|
34620
|
+
afterRev?.author ? t("versionDiff.byAuthor", { author: afterRev.author }) : "",
|
|
34280
34621
|
afterRev?.timestamp ? ` (${afterRev.timestamp})` : ""
|
|
34281
34622
|
] })
|
|
34282
34623
|
]
|
|
@@ -34669,10 +35010,12 @@ var init_DocPagination = __esm({
|
|
|
34669
35010
|
}
|
|
34670
35011
|
});
|
|
34671
35012
|
function DocSearch({
|
|
34672
|
-
placeholder
|
|
35013
|
+
placeholder,
|
|
34673
35014
|
onSearch,
|
|
34674
35015
|
className
|
|
34675
35016
|
}) {
|
|
35017
|
+
const { t } = useTranslate();
|
|
35018
|
+
const resolvedPlaceholder = placeholder ?? t("docSearch.placeholder");
|
|
34676
35019
|
const [query, setQuery] = React85.useState("");
|
|
34677
35020
|
const [results, setResults] = React85.useState([]);
|
|
34678
35021
|
const [isOpen, setIsOpen] = React85.useState(false);
|
|
@@ -34779,7 +35122,7 @@ function DocSearch({
|
|
|
34779
35122
|
Input,
|
|
34780
35123
|
{
|
|
34781
35124
|
inputType: "search",
|
|
34782
|
-
placeholder,
|
|
35125
|
+
placeholder: resolvedPlaceholder,
|
|
34783
35126
|
value: query,
|
|
34784
35127
|
onChange: handleChange,
|
|
34785
35128
|
onFocus: handleFocus,
|
|
@@ -34844,6 +35187,7 @@ var init_DocSearch = __esm({
|
|
|
34844
35187
|
init_Typography();
|
|
34845
35188
|
init_Icon();
|
|
34846
35189
|
init_Input();
|
|
35190
|
+
init_useTranslate();
|
|
34847
35191
|
}
|
|
34848
35192
|
});
|
|
34849
35193
|
var DocSidebarCategory, DocSidebar;
|
|
@@ -36848,8 +37192,8 @@ var init_SignaturePad = __esm({
|
|
|
36848
37192
|
init_useEventBus();
|
|
36849
37193
|
init_useTranslate();
|
|
36850
37194
|
SignaturePad = ({
|
|
36851
|
-
label
|
|
36852
|
-
helperText
|
|
37195
|
+
label,
|
|
37196
|
+
helperText,
|
|
36853
37197
|
strokeColor,
|
|
36854
37198
|
strokeWidth = 2,
|
|
36855
37199
|
height = 200,
|
|
@@ -36865,6 +37209,8 @@ var init_SignaturePad = __esm({
|
|
|
36865
37209
|
}) => {
|
|
36866
37210
|
const eventBus = useEventBus();
|
|
36867
37211
|
const { t } = useTranslate();
|
|
37212
|
+
const resolvedLabel = label ?? t("signaturePad.label");
|
|
37213
|
+
const resolvedHelperText = helperText ?? t("signaturePad.helperText");
|
|
36868
37214
|
const canvasRef = React85.useRef(null);
|
|
36869
37215
|
const [isDrawing, setIsDrawing] = React85.useState(false);
|
|
36870
37216
|
const [hasSignature, setHasSignature] = React85.useState(!!value);
|
|
@@ -36967,7 +37313,7 @@ var init_SignaturePad = __esm({
|
|
|
36967
37313
|
);
|
|
36968
37314
|
}
|
|
36969
37315
|
return /* @__PURE__ */ jsxRuntime.jsx(Card, { className: cn("p-4", className), children: /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "sm", children: [
|
|
36970
|
-
|
|
37316
|
+
resolvedLabel && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "label", weight: "medium", children: resolvedLabel }),
|
|
36971
37317
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
36972
37318
|
Box,
|
|
36973
37319
|
{
|
|
@@ -36996,7 +37342,7 @@ var init_SignaturePad = __esm({
|
|
|
36996
37342
|
)
|
|
36997
37343
|
}
|
|
36998
37344
|
),
|
|
36999
|
-
|
|
37345
|
+
resolvedHelperText && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "secondary", children: resolvedHelperText }),
|
|
37000
37346
|
!readOnly && /* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", justify: "end", children: [
|
|
37001
37347
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
37002
37348
|
Button,
|
|
@@ -37006,7 +37352,7 @@ var init_SignaturePad = __esm({
|
|
|
37006
37352
|
icon: LucideIcons2.Eraser,
|
|
37007
37353
|
onClick: clearSignature,
|
|
37008
37354
|
disabled: !hasSignature,
|
|
37009
|
-
children: "
|
|
37355
|
+
children: t("signaturePad.clear")
|
|
37010
37356
|
}
|
|
37011
37357
|
),
|
|
37012
37358
|
signEvent && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -37017,7 +37363,7 @@ var init_SignaturePad = __esm({
|
|
|
37017
37363
|
icon: LucideIcons2.Check,
|
|
37018
37364
|
onClick: confirmSignature,
|
|
37019
37365
|
disabled: !hasSignature,
|
|
37020
|
-
children: "
|
|
37366
|
+
children: t("signaturePad.confirm")
|
|
37021
37367
|
}
|
|
37022
37368
|
)
|
|
37023
37369
|
] })
|
|
@@ -41462,6 +41808,7 @@ function MasterDetail({
|
|
|
41462
41808
|
className,
|
|
41463
41809
|
...rest
|
|
41464
41810
|
}) {
|
|
41811
|
+
const { t } = useTranslate();
|
|
41465
41812
|
const loading = externalLoading ?? false;
|
|
41466
41813
|
const isLoading = externalIsLoading ?? false;
|
|
41467
41814
|
const error = externalError ?? null;
|
|
@@ -41474,8 +41821,8 @@ function MasterDetail({
|
|
|
41474
41821
|
isLoading: loading || isLoading,
|
|
41475
41822
|
error,
|
|
41476
41823
|
className,
|
|
41477
|
-
emptyTitle: "
|
|
41478
|
-
emptyDescription: "
|
|
41824
|
+
emptyTitle: t("table.empty.title"),
|
|
41825
|
+
emptyDescription: t("empty.createFirst"),
|
|
41479
41826
|
...rest
|
|
41480
41827
|
}
|
|
41481
41828
|
);
|
|
@@ -41484,6 +41831,7 @@ var init_MasterDetail = __esm({
|
|
|
41484
41831
|
"components/core/organisms/MasterDetail.tsx"() {
|
|
41485
41832
|
"use client";
|
|
41486
41833
|
init_DataTable();
|
|
41834
|
+
init_useTranslate();
|
|
41487
41835
|
MasterDetail.displayName = "MasterDetail";
|
|
41488
41836
|
}
|
|
41489
41837
|
});
|
|
@@ -41492,14 +41840,18 @@ var init_MasterDetailLayout = __esm({
|
|
|
41492
41840
|
"components/core/organisms/layout/MasterDetailLayout.tsx"() {
|
|
41493
41841
|
init_cn();
|
|
41494
41842
|
init_Typography();
|
|
41495
|
-
|
|
41496
|
-
|
|
41497
|
-
{
|
|
41498
|
-
|
|
41499
|
-
|
|
41500
|
-
|
|
41501
|
-
|
|
41502
|
-
|
|
41843
|
+
init_useTranslate();
|
|
41844
|
+
DefaultEmptyDetail = () => {
|
|
41845
|
+
const { t } = useTranslate();
|
|
41846
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center h-full border-2 border-dashed border-border", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
41847
|
+
Typography,
|
|
41848
|
+
{
|
|
41849
|
+
variant: "body2",
|
|
41850
|
+
className: "text-muted-foreground",
|
|
41851
|
+
children: t("masterDetail.selectItem")
|
|
41852
|
+
}
|
|
41853
|
+
) });
|
|
41854
|
+
};
|
|
41503
41855
|
MasterDetailLayout = ({
|
|
41504
41856
|
master,
|
|
41505
41857
|
detail,
|
|
@@ -41626,7 +41978,7 @@ var init_MediaGallery = __esm({
|
|
|
41626
41978
|
{
|
|
41627
41979
|
icon: LucideIcons2.Image,
|
|
41628
41980
|
title: t("display.noMedia"),
|
|
41629
|
-
description: "
|
|
41981
|
+
description: t("mediaGallery.noMediaDescription"),
|
|
41630
41982
|
className
|
|
41631
41983
|
}
|
|
41632
41984
|
);
|
|
@@ -41643,7 +41995,7 @@ var init_MediaGallery = __esm({
|
|
|
41643
41995
|
size: "sm",
|
|
41644
41996
|
icon: LucideIcons2.Upload,
|
|
41645
41997
|
action: "MEDIA_UPLOAD",
|
|
41646
|
-
children: "
|
|
41998
|
+
children: t("mediaGallery.upload")
|
|
41647
41999
|
}
|
|
41648
42000
|
),
|
|
41649
42001
|
actions?.map((action, idx) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -41657,10 +42009,7 @@ var init_MediaGallery = __esm({
|
|
|
41657
42009
|
))
|
|
41658
42010
|
] })
|
|
41659
42011
|
] }),
|
|
41660
|
-
selectable && selectedItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(HStack, { gap: "sm", align: "center", children: /* @__PURE__ */ jsxRuntime.
|
|
41661
|
-
selectedItems.length,
|
|
41662
|
-
" selected"
|
|
41663
|
-
] }) }),
|
|
42012
|
+
selectable && selectedItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(HStack, { gap: "sm", align: "center", children: /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "info", children: t("table.bulk.selected", { count: selectedItems.length }) }) }),
|
|
41664
42013
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
41665
42014
|
Box,
|
|
41666
42015
|
{
|
|
@@ -42515,7 +42864,7 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
42515
42864
|
EmptyState,
|
|
42516
42865
|
{
|
|
42517
42866
|
title: t("debug.noActiveTraits"),
|
|
42518
|
-
description: "
|
|
42867
|
+
description: t("debug.traitsMountHint"),
|
|
42519
42868
|
className: "py-8"
|
|
42520
42869
|
}
|
|
42521
42870
|
);
|
|
@@ -42525,14 +42874,11 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
42525
42874
|
header: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 w-full", children: [
|
|
42526
42875
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", weight: "semibold", className: "text-purple-600 dark:text-purple-400", children: trait.name }),
|
|
42527
42876
|
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "success", size: "sm", children: trait.currentState }),
|
|
42528
|
-
/* @__PURE__ */ jsxRuntime.
|
|
42529
|
-
trait.transitionCount,
|
|
42530
|
-
" transitions"
|
|
42531
|
-
] })
|
|
42877
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-500 ml-auto", children: t("debug.transitionsCount", { count: trait.transitionCount }) })
|
|
42532
42878
|
] }),
|
|
42533
42879
|
content: /* @__PURE__ */ jsxRuntime.jsxs(Stack, { gap: "sm", children: [
|
|
42534
42880
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42535
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: "
|
|
42881
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.states") }),
|
|
42536
42882
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1", children: trait.states.map((state) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
42537
42883
|
Badge,
|
|
42538
42884
|
{
|
|
@@ -42544,7 +42890,7 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
42544
42890
|
)) })
|
|
42545
42891
|
] }),
|
|
42546
42892
|
trait.transitions.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42547
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: "
|
|
42893
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.transitions") }),
|
|
42548
42894
|
/* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: trait.transitions.map((t2, i) => /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "font-mono", children: [
|
|
42549
42895
|
t2.from,
|
|
42550
42896
|
" \u2192 ",
|
|
@@ -42563,7 +42909,7 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
42563
42909
|
] }, i)) })
|
|
42564
42910
|
] }),
|
|
42565
42911
|
trait.guards.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42566
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: "
|
|
42912
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.guards") }),
|
|
42567
42913
|
/* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: trait.guards.map((g, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
42568
42914
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", children: g.name }),
|
|
42569
42915
|
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: g.lastResult === true ? "success" : g.lastResult === false ? "danger" : "default", size: "sm", children: g.lastResult === void 0 ? "?" : g.lastResult ? "\u2713" : "\u2717" })
|
|
@@ -42669,7 +43015,7 @@ function EntitiesTab({ snapshot }) {
|
|
|
42669
43015
|
EmptyState,
|
|
42670
43016
|
{
|
|
42671
43017
|
title: t("debug.noEntityData"),
|
|
42672
|
-
description: "
|
|
43018
|
+
description: t("debug.debugModeHint"),
|
|
42673
43019
|
className: "py-8"
|
|
42674
43020
|
}
|
|
42675
43021
|
);
|
|
@@ -42682,7 +43028,7 @@ function EntitiesTab({ snapshot }) {
|
|
|
42682
43028
|
EmptyState,
|
|
42683
43029
|
{
|
|
42684
43030
|
title: t("debug.noEntities"),
|
|
42685
|
-
description: "
|
|
43031
|
+
description: t("debug.entitiesSpawnHint"),
|
|
42686
43032
|
className: "py-8"
|
|
42687
43033
|
}
|
|
42688
43034
|
);
|
|
@@ -42690,7 +43036,7 @@ function EntitiesTab({ snapshot }) {
|
|
|
42690
43036
|
const singletonItems = singletonEntries.map(([name, data]) => ({
|
|
42691
43037
|
id: `singleton-${name}`,
|
|
42692
43038
|
header: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
42693
|
-
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "primary", size: "sm", children: "
|
|
43039
|
+
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "primary", size: "sm", children: t("debug.singleton") }),
|
|
42694
43040
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", weight: "semibold", className: "text-sky-600 dark:text-sky-400", children: name })
|
|
42695
43041
|
] }),
|
|
42696
43042
|
content: /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "text-xs text-gray-600 dark:text-gray-400 bg-gray-50 dark:bg-gray-800 p-2 rounded overflow-auto max-h-40", children: JSON.stringify(data, null, 2) })
|
|
@@ -42708,31 +43054,19 @@ function EntitiesTab({ snapshot }) {
|
|
|
42708
43054
|
}));
|
|
42709
43055
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--entities", children: [
|
|
42710
43056
|
singletonItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4", children: [
|
|
42711
|
-
/* @__PURE__ */ jsxRuntime.
|
|
42712
|
-
"Singletons (",
|
|
42713
|
-
singletonItems.length,
|
|
42714
|
-
")"
|
|
42715
|
-
] }),
|
|
43057
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.singletonsCount", { count: singletonItems.length }) }),
|
|
42716
43058
|
/* @__PURE__ */ jsxRuntime.jsx(Accordion, { items: singletonItems, multiple: true })
|
|
42717
43059
|
] }),
|
|
42718
43060
|
runtimeItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4", children: [
|
|
42719
|
-
/* @__PURE__ */ jsxRuntime.
|
|
42720
|
-
"Runtime (",
|
|
42721
|
-
runtimeEntities.length,
|
|
42722
|
-
")"
|
|
42723
|
-
] }),
|
|
43061
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.runtimeCount", { count: runtimeEntities.length }) }),
|
|
42724
43062
|
/* @__PURE__ */ jsxRuntime.jsx(Accordion, { items: runtimeItems, multiple: true }),
|
|
42725
|
-
runtimeEntities.length > 20 && /* @__PURE__ */ jsxRuntime.
|
|
42726
|
-
"+",
|
|
42727
|
-
runtimeEntities.length - 20,
|
|
42728
|
-
" more entities"
|
|
42729
|
-
] })
|
|
43063
|
+
runtimeEntities.length > 20 && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-400 text-center mt-2", children: t("debug.moreEntities", { count: runtimeEntities.length - 20 }) })
|
|
42730
43064
|
] }),
|
|
42731
43065
|
persistentEntries.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42732
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: "
|
|
43066
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.persistent") }),
|
|
42733
43067
|
/* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: persistentEntries.map(([type, info]) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between py-1", children: [
|
|
42734
43068
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", children: type }),
|
|
42735
|
-
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: info.loaded ? "success" : "default", size: "sm", children: info.loaded ?
|
|
43069
|
+
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: info.loaded ? "success" : "default", size: "sm", children: info.loaded ? t("debug.loadedCount", { count: info.count }) : t("debug.notLoaded") })
|
|
42736
43070
|
] }, type)) })
|
|
42737
43071
|
] })
|
|
42738
43072
|
] });
|
|
@@ -42776,7 +43110,7 @@ function EventFlowTab({ events: events2 }) {
|
|
|
42776
43110
|
EmptyState,
|
|
42777
43111
|
{
|
|
42778
43112
|
title: t("debug.noEventsYet"),
|
|
42779
|
-
description: "
|
|
43113
|
+
description: t("debug.eventsExecuteHint"),
|
|
42780
43114
|
className: "py-8"
|
|
42781
43115
|
}
|
|
42782
43116
|
);
|
|
@@ -42787,17 +43121,13 @@ function EventFlowTab({ events: events2 }) {
|
|
|
42787
43121
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--events", children: [
|
|
42788
43122
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 mb-3 flex-wrap", children: [
|
|
42789
43123
|
/* @__PURE__ */ jsxRuntime.jsxs(ButtonGroup, { children: [
|
|
42790
|
-
/* @__PURE__ */ jsxRuntime.
|
|
43124
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
42791
43125
|
Button,
|
|
42792
43126
|
{
|
|
42793
43127
|
size: "sm",
|
|
42794
43128
|
variant: filter === "all" ? "primary" : "secondary",
|
|
42795
43129
|
onClick: () => setFilter("all"),
|
|
42796
|
-
children:
|
|
42797
|
-
"All (",
|
|
42798
|
-
events2.length,
|
|
42799
|
-
")"
|
|
42800
|
-
]
|
|
43130
|
+
children: t("debug.allCount", { count: events2.length })
|
|
42801
43131
|
}
|
|
42802
43132
|
),
|
|
42803
43133
|
eventTypes.map((type) => {
|
|
@@ -42827,7 +43157,7 @@ function EventFlowTab({ events: events2 }) {
|
|
|
42827
43157
|
onChange: (e) => setAutoScroll(e.target.checked)
|
|
42828
43158
|
}
|
|
42829
43159
|
),
|
|
42830
|
-
"
|
|
43160
|
+
t("debug.autoScroll")
|
|
42831
43161
|
] })
|
|
42832
43162
|
] }),
|
|
42833
43163
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -42885,7 +43215,7 @@ function GuardsPanel({ guards }) {
|
|
|
42885
43215
|
EmptyState,
|
|
42886
43216
|
{
|
|
42887
43217
|
title: t("debug.noGuardEvaluations"),
|
|
42888
|
-
description: "
|
|
43218
|
+
description: t("debug.guardEvaluationsHint"),
|
|
42889
43219
|
className: "py-8"
|
|
42890
43220
|
}
|
|
42891
43221
|
);
|
|
@@ -42916,15 +43246,15 @@ function GuardsPanel({ guards }) {
|
|
|
42916
43246
|
] }),
|
|
42917
43247
|
content: /* @__PURE__ */ jsxRuntime.jsxs(Stack, { gap: "sm", children: [
|
|
42918
43248
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42919
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: "
|
|
43249
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: t("debug.expression") }),
|
|
42920
43250
|
/* @__PURE__ */ jsxRuntime.jsx("code", { className: "block mt-1 text-xs text-amber-600 dark:text-amber-400 bg-amber-50 dark:bg-amber-900/20 px-2 py-1 rounded", children: guard.expression })
|
|
42921
43251
|
] }),
|
|
42922
43252
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42923
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: "
|
|
43253
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: t("debug.inputs") }),
|
|
42924
43254
|
/* @__PURE__ */ jsxRuntime.jsx("pre", { className: "mt-1 text-xs text-gray-600 dark:text-gray-400 bg-gray-50 dark:bg-gray-800 p-2 rounded overflow-auto max-h-24", children: JSON.stringify(guard.inputs, null, 2) })
|
|
42925
43255
|
] }),
|
|
42926
43256
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42927
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: "
|
|
43257
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: t("debug.trait") }),
|
|
42928
43258
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", children: guard.context.traitName })
|
|
42929
43259
|
] })
|
|
42930
43260
|
] })
|
|
@@ -42942,9 +43272,9 @@ function GuardsPanel({ guards }) {
|
|
|
42942
43272
|
] })
|
|
42943
43273
|
] }),
|
|
42944
43274
|
/* @__PURE__ */ jsxRuntime.jsxs(ButtonGroup, { children: [
|
|
42945
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", variant: filter === "all" ? "primary" : "secondary", onClick: () => setFilter("all"), children: "
|
|
42946
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", variant: filter === "passed" ? "primary" : "secondary", onClick: () => setFilter("passed"), children: "
|
|
42947
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", variant: filter === "failed" ? "primary" : "secondary", onClick: () => setFilter("failed"), children: "
|
|
43275
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", variant: filter === "all" ? "primary" : "secondary", onClick: () => setFilter("all"), children: t("debug.filterAll") }),
|
|
43276
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", variant: filter === "passed" ? "primary" : "secondary", onClick: () => setFilter("passed"), children: t("debug.filterPassed") }),
|
|
43277
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", variant: filter === "failed" ? "primary" : "secondary", onClick: () => setFilter("failed"), children: t("debug.filterFailed") })
|
|
42948
43278
|
] })
|
|
42949
43279
|
] }),
|
|
42950
43280
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-80 overflow-y-auto", children: /* @__PURE__ */ jsxRuntime.jsx(Accordion, { items: accordionItems }) })
|
|
@@ -43070,7 +43400,7 @@ function TransitionTimeline({ transitions }) {
|
|
|
43070
43400
|
EmptyState,
|
|
43071
43401
|
{
|
|
43072
43402
|
title: t("debug.noTransitionsRecorded"),
|
|
43073
|
-
description: "
|
|
43403
|
+
description: t("debug.transitionsProcessHint"),
|
|
43074
43404
|
className: "py-8"
|
|
43075
43405
|
}
|
|
43076
43406
|
);
|
|
@@ -43087,10 +43417,7 @@ function TransitionTimeline({ transitions }) {
|
|
|
43087
43417
|
const sorted = [...transitions].reverse();
|
|
43088
43418
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--timeline", children: [
|
|
43089
43419
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between mb-2", children: [
|
|
43090
|
-
/* @__PURE__ */ jsxRuntime.
|
|
43091
|
-
transitions.length,
|
|
43092
|
-
" transitions recorded"
|
|
43093
|
-
] }),
|
|
43420
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-500", children: t("debug.transitionsRecorded", { count: transitions.length }) }),
|
|
43094
43421
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-1 text-xs text-gray-500 cursor-pointer", children: [
|
|
43095
43422
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
43096
43423
|
Checkbox,
|
|
@@ -43099,7 +43426,7 @@ function TransitionTimeline({ transitions }) {
|
|
|
43099
43426
|
onChange: (e) => setAutoScroll(e.target.checked)
|
|
43100
43427
|
}
|
|
43101
43428
|
),
|
|
43102
|
-
"
|
|
43429
|
+
t("debug.autoScroll")
|
|
43103
43430
|
] })
|
|
43104
43431
|
] }),
|
|
43105
43432
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -43142,15 +43469,13 @@ function TransitionTimeline({ transitions }) {
|
|
|
43142
43469
|
variant: trace.guardResult ? "success" : "danger",
|
|
43143
43470
|
size: "sm",
|
|
43144
43471
|
children: [
|
|
43145
|
-
"
|
|
43472
|
+
t("debug.guardLabel"),
|
|
43473
|
+
" ",
|
|
43146
43474
|
trace.guardResult ? "\u2713" : "\u2717"
|
|
43147
43475
|
]
|
|
43148
43476
|
}
|
|
43149
43477
|
),
|
|
43150
|
-
/* @__PURE__ */ jsxRuntime.
|
|
43151
|
-
trace.effects.length,
|
|
43152
|
-
" effects"
|
|
43153
|
-
] })
|
|
43478
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-400 ml-auto", children: t("debug.effectsCount", { count: trace.effects.length }) })
|
|
43154
43479
|
] }),
|
|
43155
43480
|
isExpanded && trace.effects.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ml-2 mt-1 mb-2 pl-2 border-l border-gray-200 dark:border-gray-700 space-y-1", children: trace.effects.map((effect, eIdx) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1", children: [
|
|
43156
43481
|
/* @__PURE__ */ jsxRuntime.jsx(EffectBadge, { effect }),
|
|
@@ -43199,13 +43524,13 @@ function ServerBridgeTab({ bridge }) {
|
|
|
43199
43524
|
EmptyState,
|
|
43200
43525
|
{
|
|
43201
43526
|
title: t("debug.noBridgeData"),
|
|
43202
|
-
description: "
|
|
43527
|
+
description: t("debug.bridgeInitHint"),
|
|
43203
43528
|
className: "py-8"
|
|
43204
43529
|
}
|
|
43205
43530
|
);
|
|
43206
43531
|
}
|
|
43207
43532
|
const formatTime4 = (ts) => {
|
|
43208
|
-
if (ts === 0) return "
|
|
43533
|
+
if (ts === 0) return t("debug.never");
|
|
43209
43534
|
const d = new Date(ts);
|
|
43210
43535
|
return d.toLocaleTimeString("en-US", {
|
|
43211
43536
|
hour12: false,
|
|
@@ -43218,14 +43543,14 @@ function ServerBridgeTab({ bridge }) {
|
|
|
43218
43543
|
/* @__PURE__ */ jsxRuntime.jsxs(Card, { className: "p-3", children: [
|
|
43219
43544
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 mb-3", children: [
|
|
43220
43545
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: `w-3 h-3 rounded-full ${bridge.connected ? "bg-green-500 animate-pulse" : "bg-red-500"}` }),
|
|
43221
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h6", children: bridge.connected ? "
|
|
43546
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h6", children: bridge.connected ? t("debug.connected") : t("debug.disconnected") })
|
|
43222
43547
|
] }),
|
|
43223
43548
|
/* @__PURE__ */ jsxRuntime.jsxs(Stack, { gap: "xs", children: [
|
|
43224
43549
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
43225
43550
|
StatRow,
|
|
43226
43551
|
{
|
|
43227
43552
|
label: t("debug.status"),
|
|
43228
|
-
value: bridge.connected ? "
|
|
43553
|
+
value: bridge.connected ? t("debug.connected") : t("debug.disconnected"),
|
|
43229
43554
|
variant: bridge.connected ? "success" : "danger"
|
|
43230
43555
|
}
|
|
43231
43556
|
),
|
|
@@ -43253,13 +43578,10 @@ function ServerBridgeTab({ bridge }) {
|
|
|
43253
43578
|
] })
|
|
43254
43579
|
] }),
|
|
43255
43580
|
bridge.lastError && /* @__PURE__ */ jsxRuntime.jsxs(Card, { className: "p-3 border-red-200 dark:border-red-800 bg-red-50 dark:bg-red-950", children: [
|
|
43256
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "semibold", className: "text-red-600 dark:text-red-400 mb-1", children: "
|
|
43581
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "semibold", className: "text-red-600 dark:text-red-400 mb-1", children: t("debug.lastError") }),
|
|
43257
43582
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-red-500 font-mono break-all", children: bridge.lastError })
|
|
43258
43583
|
] }),
|
|
43259
|
-
bridge.connected && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-center py-2", children: /* @__PURE__ */ jsxRuntime.
|
|
43260
|
-
bridge.eventsForwarded + bridge.eventsReceived,
|
|
43261
|
-
" total events processed"
|
|
43262
|
-
] }) })
|
|
43584
|
+
bridge.connected && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-center py-2", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-400", children: t("debug.totalEventsProcessed", { count: bridge.eventsForwarded + bridge.eventsReceived }) }) })
|
|
43263
43585
|
] }) });
|
|
43264
43586
|
}
|
|
43265
43587
|
var init_ServerBridgeTab = __esm({
|
|
@@ -43369,7 +43691,7 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
43369
43691
|
EmptyState,
|
|
43370
43692
|
{
|
|
43371
43693
|
title: t("debug.noActiveTraits"),
|
|
43372
|
-
description: "
|
|
43694
|
+
description: t("debug.traitsInitHint"),
|
|
43373
43695
|
className: "py-8"
|
|
43374
43696
|
}
|
|
43375
43697
|
);
|
|
@@ -43386,7 +43708,7 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
43386
43708
|
};
|
|
43387
43709
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--dispatch", children: [
|
|
43388
43710
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3", children: [
|
|
43389
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
43711
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.activeStates") }),
|
|
43390
43712
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1", children: traits2.map((trait) => /* @__PURE__ */ jsxRuntime.jsxs(Badge, { variant: "success", size: "sm", children: [
|
|
43391
43713
|
trait.name,
|
|
43392
43714
|
": ",
|
|
@@ -43394,8 +43716,8 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
43394
43716
|
] }, trait.id)) })
|
|
43395
43717
|
] }),
|
|
43396
43718
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3", children: [
|
|
43397
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
43398
|
-
availableEvents.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-400 italic", children: "
|
|
43719
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.availableEvents") }),
|
|
43720
|
+
availableEvents.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-400 italic", children: t("debug.noTransitionsFromState") }) : /* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: availableEvents.map(({ event, transitions }) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
43399
43721
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
43400
43722
|
Button,
|
|
43401
43723
|
{
|
|
@@ -43407,15 +43729,15 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
43407
43729
|
}
|
|
43408
43730
|
),
|
|
43409
43731
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-500", children: transitions.map((t2) => `${t2.from} -> ${t2.to}`).join(", ") }),
|
|
43410
|
-
transitions.some((
|
|
43732
|
+
transitions.some((tr) => tr.guard) && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "warning", size: "sm", children: t("debug.guarded") })
|
|
43411
43733
|
] }, event)) })
|
|
43412
43734
|
] }),
|
|
43413
43735
|
unavailableEvents.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3", children: [
|
|
43414
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
43736
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.otherEvents") }),
|
|
43415
43737
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1", children: unavailableEvents.map((event) => /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "default", size: "sm", className: "opacity-50", children: event }, event)) })
|
|
43416
43738
|
] }),
|
|
43417
43739
|
log12.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
43418
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
43740
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.recentTransitions") }),
|
|
43419
43741
|
/* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: log12.map((entry, i) => /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "font-mono text-xs", children: [
|
|
43420
43742
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-400", children: entry.traitName }),
|
|
43421
43743
|
" ",
|
|
@@ -43446,21 +43768,20 @@ var init_RuntimeDebugger = __esm({
|
|
|
43446
43768
|
}
|
|
43447
43769
|
});
|
|
43448
43770
|
function ServerResponseRow({ sr }) {
|
|
43771
|
+
const { t } = useTranslate();
|
|
43449
43772
|
const entityEntries = Object.entries(sr.dataEntities);
|
|
43450
43773
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ml-4 pl-2 border-l border-purple-500/30 py-0.5 text-xs font-mono", children: [
|
|
43451
43774
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
43452
43775
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: sr.success ? "text-green-600 dark:text-green-400" : "text-red-600 dark:text-red-400", children: [
|
|
43453
43776
|
sr.success ? "\u2713" : "\u2717",
|
|
43454
|
-
"
|
|
43777
|
+
" ",
|
|
43778
|
+
t("debug.server")
|
|
43455
43779
|
] }),
|
|
43456
43780
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-600 dark:text-purple-300", children: sr.orbitalName }),
|
|
43457
|
-
sr.clientEffects > 0 && /* @__PURE__ */ jsxRuntime.
|
|
43458
|
-
sr.clientEffects,
|
|
43459
|
-
" clientEffect",
|
|
43460
|
-
sr.clientEffects !== 1 ? "s" : ""
|
|
43461
|
-
] }),
|
|
43781
|
+
sr.clientEffects > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "px-1 rounded bg-purple-500/15 text-purple-600 dark:text-purple-300", children: t("debug.clientEffectsCount", { count: sr.clientEffects }) }),
|
|
43462
43782
|
sr.emittedEvents.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "px-1 rounded bg-blue-500/15 text-blue-300", children: [
|
|
43463
|
-
"
|
|
43783
|
+
t("debug.emitLabel"),
|
|
43784
|
+
" ",
|
|
43464
43785
|
sr.emittedEvents.join(", ")
|
|
43465
43786
|
] }),
|
|
43466
43787
|
sr.error && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "px-1 rounded bg-red-500/15 text-red-600 dark:text-red-400 truncate max-w-[300px]", children: sr.error })
|
|
@@ -43468,13 +43789,12 @@ function ServerResponseRow({ sr }) {
|
|
|
43468
43789
|
entityEntries.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1 mt-0.5", children: entityEntries.map(([name, count]) => /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "px-1 rounded bg-[var(--color-card)] text-foreground", children: [
|
|
43469
43790
|
name,
|
|
43470
43791
|
": ",
|
|
43471
|
-
count
|
|
43472
|
-
" row",
|
|
43473
|
-
count !== 1 ? "s" : ""
|
|
43792
|
+
t("debug.rowsCount", { count })
|
|
43474
43793
|
] }, name)) })
|
|
43475
43794
|
] });
|
|
43476
43795
|
}
|
|
43477
43796
|
function TransitionRow({ trace }) {
|
|
43797
|
+
const { t } = useTranslate();
|
|
43478
43798
|
const isServerEntry = !!trace.serverResponse && trace.traitName.startsWith("server:");
|
|
43479
43799
|
const hasFailedEffects = trace.effects.some((e) => e.status === "failed");
|
|
43480
43800
|
if (isServerEntry && trace.serverResponse) {
|
|
@@ -43482,7 +43802,7 @@ function TransitionRow({ trace }) {
|
|
|
43482
43802
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-2 text-xs font-mono", children: [
|
|
43483
43803
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "mt-1.5 w-1.5 h-1.5 rounded-full flex-shrink-0 bg-purple-500" }),
|
|
43484
43804
|
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "warning", size: "sm", className: "flex-shrink-0", children: trace.event }),
|
|
43485
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-600 dark:text-purple-400 flex-shrink-0", children: "
|
|
43805
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-600 dark:text-purple-400 flex-shrink-0", children: t("debug.serverResponse") })
|
|
43486
43806
|
] }),
|
|
43487
43807
|
/* @__PURE__ */ jsxRuntime.jsx(ServerResponseRow, { sr: trace.serverResponse })
|
|
43488
43808
|
] });
|
|
@@ -43523,6 +43843,7 @@ function VerifyModePanel({
|
|
|
43523
43843
|
serverCount,
|
|
43524
43844
|
localCount
|
|
43525
43845
|
}) {
|
|
43846
|
+
const { t } = useTranslate();
|
|
43526
43847
|
const [expanded, setExpanded] = React85__namespace.useState(true);
|
|
43527
43848
|
const scrollRef = React85__namespace.useRef(null);
|
|
43528
43849
|
const prevCountRef = React85__namespace.useRef(0);
|
|
@@ -43553,30 +43874,20 @@ function VerifyModePanel({
|
|
|
43553
43874
|
onClick: () => setExpanded((v) => !v),
|
|
43554
43875
|
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",
|
|
43555
43876
|
"aria-expanded": expanded,
|
|
43556
|
-
"aria-label": expanded ? "
|
|
43877
|
+
"aria-label": expanded ? t("debug.collapseVerificationTimeline") : t("debug.expandVerificationTimeline"),
|
|
43557
43878
|
"data-testid": "debugger-verify-toggle",
|
|
43558
43879
|
children: [
|
|
43559
43880
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground/50 w-3", "aria-hidden": true, children: expanded ? "\u25BE" : "\u25B8" }),
|
|
43560
|
-
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: failedChecks > 0 ? "danger" : "success", size: "sm", children: failedChecks > 0 ?
|
|
43561
|
-
/* @__PURE__ */ jsxRuntime.
|
|
43562
|
-
|
|
43563
|
-
" local"
|
|
43564
|
-
] }),
|
|
43565
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-purple-600 dark:text-purple-400", children: [
|
|
43566
|
-
serverCount,
|
|
43567
|
-
" server"
|
|
43568
|
-
] }),
|
|
43881
|
+
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: failedChecks > 0 ? "danger" : "success", size: "sm", children: failedChecks > 0 ? t("debug.failCount", { count: failedChecks }) : t("debug.ok") }),
|
|
43882
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground/70", children: t("debug.localCount", { count: localCount }) }),
|
|
43883
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-600 dark:text-purple-400", children: t("debug.serverCount", { count: serverCount }) }),
|
|
43569
43884
|
traitStates && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-cyan-600 dark:text-cyan-400 truncate max-w-[400px]", children: traitStates }),
|
|
43570
|
-
!expanded && transitions.length > 0 && /* @__PURE__ */ jsxRuntime.
|
|
43571
|
-
transitions.length,
|
|
43572
|
-
" transition",
|
|
43573
|
-
transitions.length !== 1 ? "s" : ""
|
|
43574
|
-
] })
|
|
43885
|
+
!expanded && transitions.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-auto text-foreground/50", children: t("debug.transitionsCount", { count: transitions.length }) })
|
|
43575
43886
|
]
|
|
43576
43887
|
}
|
|
43577
43888
|
),
|
|
43578
43889
|
expanded && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 flex overflow-hidden", children: [
|
|
43579
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { ref: scrollRef, className: "flex-1 overflow-y-auto", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-2 py-1", children: transitions.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-foreground/50 text-xs font-mono py-2 text-center", children: "
|
|
43890
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { ref: scrollRef, className: "flex-1 overflow-y-auto", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-2 py-1", children: transitions.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-foreground/50 text-xs font-mono py-2 text-center", children: t("debug.waitingForTransitions") }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-0.5", children: transitions.map((trace) => /* @__PURE__ */ jsxRuntime.jsx(TransitionRow, { trace }, trace.id)) }) }) }),
|
|
43580
43891
|
/* @__PURE__ */ jsxRuntime.jsx(WalkMinimap, {})
|
|
43581
43892
|
] })
|
|
43582
43893
|
]
|
|
@@ -43592,6 +43903,7 @@ function RuntimeDebugger({
|
|
|
43592
43903
|
defaultTab,
|
|
43593
43904
|
schema
|
|
43594
43905
|
}) {
|
|
43906
|
+
const { t } = useTranslate();
|
|
43595
43907
|
const [isCollapsed, setIsCollapsed] = React85__namespace.useState(mode === "verify" ? true : defaultCollapsed);
|
|
43596
43908
|
const [isVisible, setIsVisible] = React85__namespace.useState(mode === "inline" || mode === "verify" || isDebugEnabled2());
|
|
43597
43909
|
const debugData = useDebugData();
|
|
@@ -43630,55 +43942,55 @@ function RuntimeDebugger({
|
|
|
43630
43942
|
const tabItems = [
|
|
43631
43943
|
{
|
|
43632
43944
|
id: "dispatch",
|
|
43633
|
-
label: "
|
|
43945
|
+
label: t("debug.tabDispatch"),
|
|
43634
43946
|
badge: debugData.traits.length || void 0,
|
|
43635
43947
|
content: /* @__PURE__ */ jsxRuntime.jsx(EventDispatcherTab, { traits: debugData.traits, schema })
|
|
43636
43948
|
},
|
|
43637
43949
|
{
|
|
43638
43950
|
id: "verify",
|
|
43639
|
-
label: failedChecks > 0 ? "
|
|
43951
|
+
label: failedChecks > 0 ? t("debug.tabVerifyAlert") : t("debug.tabVerify"),
|
|
43640
43952
|
badge: verification.summary.totalChecks || void 0,
|
|
43641
43953
|
content: /* @__PURE__ */ jsxRuntime.jsx(VerificationTab, { checks: verification.checks, summary: verification.summary })
|
|
43642
43954
|
},
|
|
43643
43955
|
{
|
|
43644
43956
|
id: "timeline",
|
|
43645
|
-
label: "
|
|
43957
|
+
label: t("debug.tabTimeline"),
|
|
43646
43958
|
badge: verification.transitions.length || void 0,
|
|
43647
43959
|
content: /* @__PURE__ */ jsxRuntime.jsx(TransitionTimeline, { transitions: verification.transitions })
|
|
43648
43960
|
},
|
|
43649
43961
|
{
|
|
43650
43962
|
id: "bridge",
|
|
43651
|
-
label: "
|
|
43963
|
+
label: t("debug.tabBridge"),
|
|
43652
43964
|
badge: verification.bridge?.connected ? void 0 : 1,
|
|
43653
43965
|
content: /* @__PURE__ */ jsxRuntime.jsx(ServerBridgeTab, { bridge: verification.bridge })
|
|
43654
43966
|
},
|
|
43655
43967
|
{
|
|
43656
43968
|
id: "traits",
|
|
43657
|
-
label: "
|
|
43969
|
+
label: t("debug.tabTraits"),
|
|
43658
43970
|
badge: debugData.traits.length || void 0,
|
|
43659
43971
|
content: /* @__PURE__ */ jsxRuntime.jsx(TraitsTab, { traits: debugData.traits })
|
|
43660
43972
|
},
|
|
43661
43973
|
{
|
|
43662
43974
|
id: "ticks",
|
|
43663
|
-
label: "
|
|
43664
|
-
badge: debugData.ticks.filter((
|
|
43975
|
+
label: t("debug.tabTicks"),
|
|
43976
|
+
badge: debugData.ticks.filter((tick) => tick.active).length || void 0,
|
|
43665
43977
|
content: /* @__PURE__ */ jsxRuntime.jsx(TicksTab, { ticks: debugData.ticks })
|
|
43666
43978
|
},
|
|
43667
43979
|
{
|
|
43668
43980
|
id: "entities",
|
|
43669
|
-
label: "
|
|
43981
|
+
label: t("debug.tabEntities"),
|
|
43670
43982
|
badge: debugData.entitySnapshot?.runtime.length || void 0,
|
|
43671
43983
|
content: /* @__PURE__ */ jsxRuntime.jsx(EntitiesTab, { snapshot: debugData.entitySnapshot })
|
|
43672
43984
|
},
|
|
43673
43985
|
{
|
|
43674
43986
|
id: "events",
|
|
43675
|
-
label: "
|
|
43987
|
+
label: t("debug.tabEvents"),
|
|
43676
43988
|
badge: debugData.events.length > 0 ? debugData.events.length : void 0,
|
|
43677
43989
|
content: /* @__PURE__ */ jsxRuntime.jsx(EventFlowTab, { events: debugData.events })
|
|
43678
43990
|
},
|
|
43679
43991
|
{
|
|
43680
43992
|
id: "guards",
|
|
43681
|
-
label: "
|
|
43993
|
+
label: t("debug.tabGuards"),
|
|
43682
43994
|
badge: debugData.guards.filter((g) => !g.result).length || void 0,
|
|
43683
43995
|
content: /* @__PURE__ */ jsxRuntime.jsx(GuardsPanel, { guards: debugData.guards })
|
|
43684
43996
|
}
|
|
@@ -43706,15 +44018,10 @@ function RuntimeDebugger({
|
|
|
43706
44018
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
43707
44019
|
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "h6", style: { fontSize: "0.75rem" }, children: [
|
|
43708
44020
|
isCollapsed ? "\u25B6" : "\u25BC",
|
|
43709
|
-
"
|
|
44021
|
+
" ",
|
|
44022
|
+
t("debug.debugger")
|
|
43710
44023
|
] }),
|
|
43711
|
-
failedChecks > 0 ? /* @__PURE__ */ jsxRuntime.
|
|
43712
|
-
failedChecks,
|
|
43713
|
-
" failed"
|
|
43714
|
-
] }) : debugData.traits.length > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(Badge, { variant: "success", size: "sm", children: [
|
|
43715
|
-
debugData.traits.length,
|
|
43716
|
-
" traits"
|
|
43717
|
-
] }) : /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "info", size: "sm", children: "Idle" })
|
|
44024
|
+
failedChecks > 0 ? /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "danger", size: "sm", children: t("debug.failedCount", { count: failedChecks }) }) : debugData.traits.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "success", size: "sm", children: t("debug.traitsCount", { count: debugData.traits.length }) }) : /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "info", size: "sm", children: t("debug.idle") })
|
|
43718
44025
|
] })
|
|
43719
44026
|
}
|
|
43720
44027
|
),
|
|
@@ -43732,9 +44039,9 @@ function RuntimeDebugger({
|
|
|
43732
44039
|
);
|
|
43733
44040
|
}
|
|
43734
44041
|
if (mode === "verify") {
|
|
43735
|
-
const traitStates = debugData.traits.map((
|
|
43736
|
-
const serverEntries = verification.transitions.filter((
|
|
43737
|
-
const localEntries = verification.transitions.filter((
|
|
44042
|
+
const traitStates = debugData.traits.map((t2) => `${t2.name}:${t2.currentState}`).join(" | ");
|
|
44043
|
+
const serverEntries = verification.transitions.filter((t2) => t2.serverResponse);
|
|
44044
|
+
const localEntries = verification.transitions.filter((t2) => !t2.serverResponse);
|
|
43738
44045
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
43739
44046
|
VerifyModePanel,
|
|
43740
44047
|
{
|
|
@@ -43766,7 +44073,7 @@ function RuntimeDebugger({
|
|
|
43766
44073
|
variant: "secondary",
|
|
43767
44074
|
size: "sm",
|
|
43768
44075
|
className: "runtime-debugger__toggle",
|
|
43769
|
-
title: "
|
|
44076
|
+
title: t("debug.openDebugger"),
|
|
43770
44077
|
children: failedChecks > 0 ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "relative", children: [
|
|
43771
44078
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "V" }),
|
|
43772
44079
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute -top-1 -right-2 w-2 h-2 bg-red-500 rounded-full" })
|
|
@@ -43776,11 +44083,8 @@ function RuntimeDebugger({
|
|
|
43776
44083
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "runtime-debugger__header", children: [
|
|
43777
44084
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
43778
44085
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-lg", children: "V" }),
|
|
43779
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h6", children: "
|
|
43780
|
-
failedChecks > 0 ? /* @__PURE__ */ jsxRuntime.
|
|
43781
|
-
failedChecks,
|
|
43782
|
-
" failed"
|
|
43783
|
-
] }) : verification.summary.totalChecks > 0 ? /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "success", size: "sm", children: "All passing" }) : /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "info", size: "sm", children: "Runtime" })
|
|
44086
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h6", children: t("debug.kflowVerifier") }),
|
|
44087
|
+
failedChecks > 0 ? /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "danger", size: "sm", children: t("debug.failedCount", { count: failedChecks }) }) : verification.summary.totalChecks > 0 ? /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "success", size: "sm", children: t("debug.allPassing") }) : /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "info", size: "sm", children: t("debug.runtime") })
|
|
43784
44088
|
] }),
|
|
43785
44089
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
43786
44090
|
Button,
|
|
@@ -43788,7 +44092,7 @@ function RuntimeDebugger({
|
|
|
43788
44092
|
onClick: () => setIsCollapsed(true),
|
|
43789
44093
|
variant: "ghost",
|
|
43790
44094
|
size: "sm",
|
|
43791
|
-
title: "
|
|
44095
|
+
title: t("debug.close"),
|
|
43792
44096
|
children: "x"
|
|
43793
44097
|
}
|
|
43794
44098
|
)
|
|
@@ -43802,7 +44106,7 @@ function RuntimeDebugger({
|
|
|
43802
44106
|
className: "runtime-debugger__tabs"
|
|
43803
44107
|
}
|
|
43804
44108
|
) }),
|
|
43805
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "runtime-debugger__footer", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-foreground/50", children: "
|
|
44109
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "runtime-debugger__footer", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-foreground/50", children: t("debug.toggleHint") }) })
|
|
43806
44110
|
] })
|
|
43807
44111
|
}
|
|
43808
44112
|
);
|
|
@@ -43828,6 +44132,7 @@ var init_RuntimeDebugger2 = __esm({
|
|
|
43828
44132
|
init_TransitionTimeline();
|
|
43829
44133
|
init_ServerBridgeTab();
|
|
43830
44134
|
init_EventDispatcherTab();
|
|
44135
|
+
init_useTranslate();
|
|
43831
44136
|
init_RuntimeDebugger();
|
|
43832
44137
|
RuntimeDebugger.displayName = "RuntimeDebugger";
|
|
43833
44138
|
}
|
|
@@ -45116,7 +45421,7 @@ var init_StatCard = __esm({
|
|
|
45116
45421
|
}
|
|
45117
45422
|
);
|
|
45118
45423
|
}
|
|
45119
|
-
const label = schemaStats?.[0]?.label || labelToUse || "
|
|
45424
|
+
const label = schemaStats?.[0]?.label || labelToUse || t("statCard.defaultLabel");
|
|
45120
45425
|
const normalizedPropValue = Array.isArray(propValue) ? propValue[0] ?? propValue.length : propValue;
|
|
45121
45426
|
const value = schemaStats?.[0]?.value ?? normalizedPropValue ?? 0;
|
|
45122
45427
|
const trendDirection = manualDirection || (calculatedTrend === void 0 || calculatedTrend === 0 ? "neutral" : calculatedTrend > 0 ? "up" : "down");
|
|
@@ -45159,7 +45464,7 @@ var init_StatCard = __esm({
|
|
|
45159
45464
|
]
|
|
45160
45465
|
}
|
|
45161
45466
|
),
|
|
45162
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", color: "secondary", as: "span", children: "
|
|
45467
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", color: "secondary", as: "span", children: t("statCard.vsLastPeriod") })
|
|
45163
45468
|
] }),
|
|
45164
45469
|
subtitle && !calculatedTrend && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", color: "secondary", children: subtitle })
|
|
45165
45470
|
] }),
|