@almadar/ui 5.21.8 → 5.21.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/avl/index.cjs +964 -651
- package/dist/avl/index.js +964 -651
- package/dist/components/game/organisms/three/index.cjs +490 -1
- package/dist/components/game/organisms/three/index.js +490 -1
- package/dist/components/index.cjs +669 -371
- package/dist/components/index.js +669 -371
- package/dist/docs/index.cjs +301 -5
- package/dist/docs/index.js +301 -5
- package/dist/hooks/index.cjs +297 -3
- package/dist/hooks/index.js +297 -3
- package/dist/locales/index.cjs +899 -9
- package/dist/locales/index.js +899 -9
- package/dist/providers/index.cjs +669 -371
- package/dist/providers/index.js +669 -371
- package/dist/runtime/index.cjs +669 -371
- package/dist/runtime/index.js +669 -371
- package/locales/ar.json +301 -31
- package/locales/en.json +297 -31
- package/locales/sl.json +301 -31
- package/package.json +1 -1
package/dist/providers/index.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,299 @@ 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",
|
|
2434
|
+
"relationSelect.selectPlaceholder": "Select..."
|
|
2141
2435
|
};
|
|
2142
2436
|
}
|
|
2143
2437
|
});
|
|
@@ -5225,6 +5519,7 @@ var init_LawReferenceTooltip = __esm({
|
|
|
5225
5519
|
init_Typography();
|
|
5226
5520
|
init_Divider();
|
|
5227
5521
|
init_cn();
|
|
5522
|
+
init_useTranslate();
|
|
5228
5523
|
positionStyles2 = {
|
|
5229
5524
|
top: "bottom-full left-1/2 -translate-x-1/2 mb-2",
|
|
5230
5525
|
bottom: "top-full left-1/2 -translate-x-1/2 mt-2",
|
|
@@ -5243,6 +5538,7 @@ var init_LawReferenceTooltip = __esm({
|
|
|
5243
5538
|
position = "top",
|
|
5244
5539
|
className
|
|
5245
5540
|
}) => {
|
|
5541
|
+
const { t } = useTranslate();
|
|
5246
5542
|
const [isVisible, setIsVisible] = React85__namespace.default.useState(false);
|
|
5247
5543
|
const timeoutRef = React85__namespace.default.useRef(null);
|
|
5248
5544
|
const handleMouseEnter = () => {
|
|
@@ -5326,7 +5622,7 @@ var init_LawReferenceTooltip = __esm({
|
|
|
5326
5622
|
target: "_blank",
|
|
5327
5623
|
rel: "noopener noreferrer",
|
|
5328
5624
|
onClick: (e) => e.stopPropagation(),
|
|
5329
|
-
children: "
|
|
5625
|
+
children: t("lawReference.viewFullText")
|
|
5330
5626
|
}
|
|
5331
5627
|
)
|
|
5332
5628
|
] }),
|
|
@@ -13607,6 +13903,7 @@ var log7, SWIM_GUTTER, CENTER_W, BehaviorView;
|
|
|
13607
13903
|
var init_BehaviorView = __esm({
|
|
13608
13904
|
"components/avl/molecules/BehaviorView.tsx"() {
|
|
13609
13905
|
"use client";
|
|
13906
|
+
init_useTranslate();
|
|
13610
13907
|
init_AvlState();
|
|
13611
13908
|
init_AvlTransitionLane();
|
|
13612
13909
|
init_AvlSwimLane();
|
|
@@ -13616,6 +13913,7 @@ var init_BehaviorView = __esm({
|
|
|
13616
13913
|
SWIM_GUTTER = 120;
|
|
13617
13914
|
CENTER_W = 360;
|
|
13618
13915
|
BehaviorView = ({ data }) => {
|
|
13916
|
+
const { t } = useTranslate();
|
|
13619
13917
|
const [layout, setLayout] = React85.useState(null);
|
|
13620
13918
|
const traitName = data.traits[0]?.name;
|
|
13621
13919
|
const traitData = traitName ? data.traitDetails[traitName] : void 0;
|
|
@@ -13625,10 +13923,10 @@ var init_BehaviorView = __esm({
|
|
|
13625
13923
|
computeTraitLayout(traitData).then(setLayout).catch((err) => log7.error("compute-trait-layout-failed", { error: err instanceof Error ? err : String(err) }));
|
|
13626
13924
|
}, [dataKey]);
|
|
13627
13925
|
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: "
|
|
13926
|
+
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
13927
|
}
|
|
13630
13928
|
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: "
|
|
13929
|
+
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
13930
|
}
|
|
13633
13931
|
const hasExternal = traitData.listenedEvents.length > 0 || traitData.emittedEvents.length > 0;
|
|
13634
13932
|
const viewW = hasExternal ? SWIM_GUTTER + CENTER_W + SWIM_GUTTER : CENTER_W + 60;
|
|
@@ -13644,10 +13942,7 @@ var init_BehaviorView = __esm({
|
|
|
13644
13942
|
const machineHeight = scaledH + 100;
|
|
13645
13943
|
const renderMachine = /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
|
|
13646
13944
|
/* @__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
|
-
] }),
|
|
13945
|
+
/* @__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
13946
|
/* @__PURE__ */ jsxRuntime.jsxs("defs", { children: [
|
|
13652
13947
|
/* @__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
13948
|
/* @__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 +14250,7 @@ var init_CodeBlock = __esm({
|
|
|
13955
14250
|
const isLolo = language === "lolo";
|
|
13956
14251
|
const activeStyle = isOrb ? orbStyle : isLolo ? loloStyle : dark__default.default;
|
|
13957
14252
|
const eventBus = useEventBus();
|
|
13958
|
-
const { t
|
|
14253
|
+
const { t } = useTranslate();
|
|
13959
14254
|
const scrollRef = React85.useRef(null);
|
|
13960
14255
|
const codeRef = React85.useRef(null);
|
|
13961
14256
|
const savedScrollLeftRef = React85.useRef(0);
|
|
@@ -14210,7 +14505,7 @@ var init_CodeBlock = __esm({
|
|
|
14210
14505
|
size: "sm",
|
|
14211
14506
|
onClick: handleCopy,
|
|
14212
14507
|
className: "opacity-0 group-hover:opacity-100 focus:opacity-100 transition-opacity text-muted-foreground hover:text-white",
|
|
14213
|
-
"aria-label": "
|
|
14508
|
+
"aria-label": t("common.copy"),
|
|
14214
14509
|
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
14510
|
}
|
|
14216
14511
|
)
|
|
@@ -14865,7 +15160,7 @@ var init_StateMachineView = __esm({
|
|
|
14865
15160
|
const endX2 = fromState.x + Math.cos(Math.PI / 2 * loopDirection + endAngle) * fromState.radius;
|
|
14866
15161
|
const endY2 = fromState.y + Math.sin(Math.PI / 2 * loopDirection + endAngle) * fromState.radius;
|
|
14867
15162
|
const isSingle2 = bundle.labels.length === 1;
|
|
14868
|
-
const labelText2 = isSingle2 ? bundle.labels[0].event :
|
|
15163
|
+
const labelText2 = isSingle2 ? bundle.labels[0].event : t("stateMachine.eventCount", { count: bundle.labels.length });
|
|
14869
15164
|
const bundleColor2 = isSingle2 ? config.colors.arrow : "var(--color-accent)";
|
|
14870
15165
|
const labelWidth2 = labelText2.length * 9 + (isSingle2 ? 24 : 40);
|
|
14871
15166
|
const cx = fromState.x;
|
|
@@ -14991,7 +15286,7 @@ var init_StateMachineView = __esm({
|
|
|
14991
15286
|
const controlX = midX + perpX;
|
|
14992
15287
|
const controlY = midY + perpY;
|
|
14993
15288
|
const isSingle = bundle.labels.length === 1;
|
|
14994
|
-
const labelText = isSingle ? bundle.labels[0].event :
|
|
15289
|
+
const labelText = isSingle ? bundle.labels[0].event : t("stateMachine.eventCount", { count: bundle.labels.length });
|
|
14995
15290
|
const labelWidth = labelText.length * 9 + (isSingle ? 24 : 40);
|
|
14996
15291
|
const bundleColor = isSingle ? config.colors.arrow : "var(--color-accent)";
|
|
14997
15292
|
const curveMidpoint = {
|
|
@@ -15146,7 +15441,7 @@ var init_StateMachineView = __esm({
|
|
|
15146
15441
|
{
|
|
15147
15442
|
className: "absolute -top-2 left-1/2 transform -translate-x-1/2 px-2 py-0.5 rounded-full",
|
|
15148
15443
|
style: { backgroundColor: "var(--color-success)" },
|
|
15149
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", weight: "semibold", style: { color: "var(--color-success-foreground)" }, children: "
|
|
15444
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", weight: "semibold", style: { color: "var(--color-success-foreground)" }, children: t("stateMachine.pinned") })
|
|
15150
15445
|
}
|
|
15151
15446
|
),
|
|
15152
15447
|
!isSingle && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -15168,10 +15463,7 @@ var init_StateMachineView = __esm({
|
|
|
15168
15463
|
{
|
|
15169
15464
|
className: "ml-2 px-2 py-0.5 rounded-full",
|
|
15170
15465
|
style: { backgroundColor: "var(--color-accent)" },
|
|
15171
|
-
children: /* @__PURE__ */ jsxRuntime.
|
|
15172
|
-
bundle.labels.length,
|
|
15173
|
-
" events"
|
|
15174
|
-
] })
|
|
15466
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", style: { color: "var(--color-accent-foreground)" }, children: t("stateMachine.eventCount", { count: bundle.labels.length }) })
|
|
15175
15467
|
}
|
|
15176
15468
|
)
|
|
15177
15469
|
]
|
|
@@ -15316,7 +15608,7 @@ var init_StateMachineView = __esm({
|
|
|
15316
15608
|
align: "center",
|
|
15317
15609
|
className: "mb-2",
|
|
15318
15610
|
style: { color: "var(--color-warning)", fontSize: "13px" },
|
|
15319
|
-
children: "
|
|
15611
|
+
children: t("stateMachine.externalEffects")
|
|
15320
15612
|
}
|
|
15321
15613
|
),
|
|
15322
15614
|
outputs.outputs.map((output, idx) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -15336,10 +15628,10 @@ var init_StateMachineView = __esm({
|
|
|
15336
15628
|
Legend = ({ config, y }) => {
|
|
15337
15629
|
const { t } = useTranslate();
|
|
15338
15630
|
const items = [
|
|
15339
|
-
{ label: "
|
|
15340
|
-
{ label: "
|
|
15341
|
-
{ label: "
|
|
15342
|
-
{ label: "
|
|
15631
|
+
{ key: "initial", label: t("stateMachine.legend.initial"), color: config.colors.initialNode, isMultiEvent: false },
|
|
15632
|
+
{ key: "final", label: t("stateMachine.legend.final"), color: config.colors.finalNode, isMultiEvent: false },
|
|
15633
|
+
{ key: "state", label: t("stateMachine.legend.state"), color: config.colors.nodeBorder, isMultiEvent: false },
|
|
15634
|
+
{ key: "multiEvent", label: t("stateMachine.legend.multiEvent"), color: "var(--color-accent)", isMultiEvent: true }
|
|
15343
15635
|
];
|
|
15344
15636
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
15345
15637
|
HStack,
|
|
@@ -15354,8 +15646,8 @@ var init_StateMachineView = __esm({
|
|
|
15354
15646
|
{
|
|
15355
15647
|
className: "w-3 h-3 rounded-full",
|
|
15356
15648
|
style: {
|
|
15357
|
-
backgroundColor: item.
|
|
15358
|
-
border: item.
|
|
15649
|
+
backgroundColor: item.isMultiEvent ? item.color : config.colors.node,
|
|
15650
|
+
border: !item.isMultiEvent ? `2px solid ${item.color}` : "none"
|
|
15359
15651
|
}
|
|
15360
15652
|
}
|
|
15361
15653
|
),
|
|
@@ -15367,7 +15659,7 @@ var init_StateMachineView = __esm({
|
|
|
15367
15659
|
children: item.label
|
|
15368
15660
|
}
|
|
15369
15661
|
)
|
|
15370
|
-
] }, item.
|
|
15662
|
+
] }, item.key))
|
|
15371
15663
|
}
|
|
15372
15664
|
);
|
|
15373
15665
|
};
|
|
@@ -16161,13 +16453,13 @@ var init_JazariStateMachine = __esm({
|
|
|
16161
16453
|
);
|
|
16162
16454
|
}, [resolvedTrait, entityFields]);
|
|
16163
16455
|
if (isLoading) {
|
|
16164
|
-
return /* @__PURE__ */ jsxRuntime.jsx(LoadingState, { message: "
|
|
16456
|
+
return /* @__PURE__ */ jsxRuntime.jsx(LoadingState, { message: t("stateMachine.loading") });
|
|
16165
16457
|
}
|
|
16166
16458
|
if (error) {
|
|
16167
16459
|
return /* @__PURE__ */ jsxRuntime.jsx(ErrorState, { message: error instanceof Error ? error.message : String(error) });
|
|
16168
16460
|
}
|
|
16169
16461
|
if (!resolvedTrait || !layoutData || layoutData.states.length === 0) {
|
|
16170
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { padding: "lg", className: cn("text-center", className), children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", className: "opacity-60", children: "
|
|
16462
|
+
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") }) });
|
|
16171
16463
|
}
|
|
16172
16464
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
16173
16465
|
StateMachineView,
|
|
@@ -17211,13 +17503,13 @@ var init_LayoutPatterns = __esm({
|
|
|
17211
17503
|
function generateRuleId() {
|
|
17212
17504
|
return `rule-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
17213
17505
|
}
|
|
17214
|
-
function questionsToOptions(questions,
|
|
17506
|
+
function questionsToOptions(questions, endOfSurveyLabel) {
|
|
17215
17507
|
const opts = questions.map((q) => ({
|
|
17216
17508
|
value: q.id,
|
|
17217
17509
|
label: q.label
|
|
17218
17510
|
}));
|
|
17219
|
-
if (
|
|
17220
|
-
opts.push({ value: END_OF_SURVEY, label:
|
|
17511
|
+
if (endOfSurveyLabel !== null) {
|
|
17512
|
+
opts.push({ value: END_OF_SURVEY, label: endOfSurveyLabel });
|
|
17221
17513
|
}
|
|
17222
17514
|
return opts;
|
|
17223
17515
|
}
|
|
@@ -17226,7 +17518,7 @@ function isRuleBroken(rule, questions) {
|
|
|
17226
17518
|
const targetExists = rule.targetQuestionId === END_OF_SURVEY || questions.some((q) => q.id === rule.targetQuestionId);
|
|
17227
17519
|
return !sourceExists || !targetExists;
|
|
17228
17520
|
}
|
|
17229
|
-
var END_OF_SURVEY,
|
|
17521
|
+
var END_OF_SURVEY, RuleRow, NODE_WIDTH, NODE_HEIGHT, NODE_GAP_Y, PADDING, LogicGraph, BranchingLogicBuilder;
|
|
17230
17522
|
var init_BranchingLogicBuilder = __esm({
|
|
17231
17523
|
"components/core/molecules/BranchingLogicBuilder.tsx"() {
|
|
17232
17524
|
"use client";
|
|
@@ -17239,14 +17531,9 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17239
17531
|
init_FilterPill();
|
|
17240
17532
|
init_Box();
|
|
17241
17533
|
init_useEventBus();
|
|
17534
|
+
init_useTranslate();
|
|
17242
17535
|
init_cn();
|
|
17243
17536
|
END_OF_SURVEY = "end-of-survey";
|
|
17244
|
-
OPERATOR_OPTIONS = [
|
|
17245
|
-
{ value: "equals", label: "equals" },
|
|
17246
|
-
{ value: "not-equals", label: "does not equal" },
|
|
17247
|
-
{ value: "contains", label: "contains" },
|
|
17248
|
-
{ value: "in", label: "is one of" }
|
|
17249
|
-
];
|
|
17250
17537
|
RuleRow = ({
|
|
17251
17538
|
rule,
|
|
17252
17539
|
questions,
|
|
@@ -17255,8 +17542,21 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17255
17542
|
onChange,
|
|
17256
17543
|
onDelete
|
|
17257
17544
|
}) => {
|
|
17258
|
-
const
|
|
17259
|
-
const
|
|
17545
|
+
const { t } = useTranslate();
|
|
17546
|
+
const operatorOptions = React85.useMemo(
|
|
17547
|
+
() => [
|
|
17548
|
+
{ value: "equals", label: t("branchingLogic.operatorEquals") },
|
|
17549
|
+
{ value: "not-equals", label: t("branchingLogic.operatorNotEquals") },
|
|
17550
|
+
{ value: "contains", label: t("branchingLogic.operatorContains") },
|
|
17551
|
+
{ value: "in", label: t("branchingLogic.operatorIn") }
|
|
17552
|
+
],
|
|
17553
|
+
[t]
|
|
17554
|
+
);
|
|
17555
|
+
const sourceOptions = React85.useMemo(() => questionsToOptions(questions, null), [questions]);
|
|
17556
|
+
const targetOptions = React85.useMemo(
|
|
17557
|
+
() => questionsToOptions(questions, t("branchingLogic.endOfSurvey")),
|
|
17558
|
+
[questions, t]
|
|
17559
|
+
);
|
|
17260
17560
|
const sourceQuestion = questions.find((q) => q.id === rule.sourceQuestionId);
|
|
17261
17561
|
const valueOptions = React85.useMemo(() => {
|
|
17262
17562
|
if (!sourceQuestion?.optionValues) return [];
|
|
@@ -17301,22 +17601,22 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17301
17601
|
),
|
|
17302
17602
|
children: [
|
|
17303
17603
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex flex-wrap items-center gap-2", children: [
|
|
17304
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "label", weight: "semibold", className: "shrink-0", children: "
|
|
17604
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "label", weight: "semibold", className: "shrink-0", children: t("branchingLogic.if") }),
|
|
17305
17605
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "min-w-[10rem] grow basis-40", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
17306
17606
|
Select,
|
|
17307
17607
|
{
|
|
17308
17608
|
options: sourceOptions,
|
|
17309
17609
|
value: rule.sourceQuestionId,
|
|
17310
|
-
placeholder: "
|
|
17610
|
+
placeholder: t("branchingLogic.selectQuestion"),
|
|
17311
17611
|
onChange: handleSource,
|
|
17312
17612
|
disabled: readOnly,
|
|
17313
|
-
error: broken ? "
|
|
17613
|
+
error: broken ? t("branchingLogic.brokenReference") : void 0
|
|
17314
17614
|
}
|
|
17315
17615
|
) }),
|
|
17316
17616
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "min-w-[8rem] basis-32", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
17317
17617
|
Select,
|
|
17318
17618
|
{
|
|
17319
|
-
options:
|
|
17619
|
+
options: operatorOptions,
|
|
17320
17620
|
value: rule.operator,
|
|
17321
17621
|
onChange: handleOperator,
|
|
17322
17622
|
disabled: readOnly
|
|
@@ -17339,7 +17639,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17339
17639
|
{
|
|
17340
17640
|
options: valueOptions.filter((o) => !chips.includes(o.value)),
|
|
17341
17641
|
value: "",
|
|
17342
|
-
placeholder: "
|
|
17642
|
+
placeholder: t("branchingLogic.addValue"),
|
|
17343
17643
|
onChange: handleAddChip,
|
|
17344
17644
|
disabled: readOnly
|
|
17345
17645
|
}
|
|
@@ -17347,7 +17647,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17347
17647
|
Input,
|
|
17348
17648
|
{
|
|
17349
17649
|
inputType: "text",
|
|
17350
|
-
placeholder: "
|
|
17650
|
+
placeholder: t("branchingLogic.typeValuePressEnter"),
|
|
17351
17651
|
value: "",
|
|
17352
17652
|
onKeyDown: (e) => {
|
|
17353
17653
|
if (e.key !== "Enter") return;
|
|
@@ -17365,7 +17665,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17365
17665
|
{
|
|
17366
17666
|
options: valueOptions,
|
|
17367
17667
|
value: scalarValue,
|
|
17368
|
-
placeholder: "
|
|
17668
|
+
placeholder: t("branchingLogic.selectValue"),
|
|
17369
17669
|
onChange: (e) => onChange({ ...rule, value: e.target.value }),
|
|
17370
17670
|
disabled: readOnly
|
|
17371
17671
|
}
|
|
@@ -17373,7 +17673,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17373
17673
|
Input,
|
|
17374
17674
|
{
|
|
17375
17675
|
inputType: "text",
|
|
17376
|
-
placeholder: "
|
|
17676
|
+
placeholder: t("branchingLogic.value"),
|
|
17377
17677
|
value: scalarValue,
|
|
17378
17678
|
onChange: handleScalarValue,
|
|
17379
17679
|
disabled: readOnly
|
|
@@ -17381,17 +17681,17 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17381
17681
|
) }),
|
|
17382
17682
|
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "label", weight: "semibold", className: "shrink-0 inline-flex items-center gap-1", children: [
|
|
17383
17683
|
/* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.ArrowRight, { className: "h-4 w-4" }),
|
|
17384
|
-
"
|
|
17684
|
+
t("branchingLogic.goTo")
|
|
17385
17685
|
] }),
|
|
17386
17686
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "min-w-[10rem] grow basis-40", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
17387
17687
|
Select,
|
|
17388
17688
|
{
|
|
17389
17689
|
options: targetOptions,
|
|
17390
17690
|
value: rule.targetQuestionId,
|
|
17391
|
-
placeholder: "
|
|
17691
|
+
placeholder: t("branchingLogic.selectTarget"),
|
|
17392
17692
|
onChange: handleTarget,
|
|
17393
17693
|
disabled: readOnly,
|
|
17394
|
-
error: broken && rule.targetQuestionId !== END_OF_SURVEY ? "
|
|
17694
|
+
error: broken && rule.targetQuestionId !== END_OF_SURVEY ? t("branchingLogic.brokenReference") : void 0
|
|
17395
17695
|
}
|
|
17396
17696
|
) }),
|
|
17397
17697
|
!readOnly && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -17403,11 +17703,11 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17403
17703
|
action: "DELETE_RULE",
|
|
17404
17704
|
actionPayload: { ruleId: rule.id },
|
|
17405
17705
|
onClick: onDelete,
|
|
17406
|
-
"aria-label": "
|
|
17706
|
+
"aria-label": t("branchingLogic.deleteRule")
|
|
17407
17707
|
}
|
|
17408
17708
|
)
|
|
17409
17709
|
] }),
|
|
17410
|
-
broken && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "error", size: "sm", label: "
|
|
17710
|
+
broken && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "error", size: "sm", label: t("branchingLogic.brokenReference") })
|
|
17411
17711
|
]
|
|
17412
17712
|
}
|
|
17413
17713
|
);
|
|
@@ -17417,10 +17717,12 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17417
17717
|
NODE_GAP_Y = 80;
|
|
17418
17718
|
PADDING = 32;
|
|
17419
17719
|
LogicGraph = ({ questions, rules }) => {
|
|
17720
|
+
const { t } = useTranslate();
|
|
17721
|
+
const endOfSurveyLabel = t("branchingLogic.endOfSurvey");
|
|
17420
17722
|
const layout = React85.useMemo(() => {
|
|
17421
17723
|
const items = [
|
|
17422
17724
|
...questions.map((q) => ({ id: q.id, label: q.label, isEnd: false })),
|
|
17423
|
-
{ id: END_OF_SURVEY, label:
|
|
17725
|
+
{ id: END_OF_SURVEY, label: endOfSurveyLabel, isEnd: true }
|
|
17424
17726
|
];
|
|
17425
17727
|
const positions = {};
|
|
17426
17728
|
items.forEach((item, i) => {
|
|
@@ -17432,14 +17734,14 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17432
17734
|
const width = NODE_WIDTH + PADDING * 2 + 220;
|
|
17433
17735
|
const height = PADDING * 2 + items.length * (NODE_HEIGHT + NODE_GAP_Y);
|
|
17434
17736
|
return { items, positions, width, height };
|
|
17435
|
-
}, [questions]);
|
|
17737
|
+
}, [questions, endOfSurveyLabel]);
|
|
17436
17738
|
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "overflow-auto rounded-container border border-border bg-card p-2", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
17437
17739
|
"svg",
|
|
17438
17740
|
{
|
|
17439
17741
|
width: layout.width,
|
|
17440
17742
|
height: layout.height,
|
|
17441
17743
|
role: "img",
|
|
17442
|
-
"aria-label": "
|
|
17744
|
+
"aria-label": t("branchingLogic.graphAriaLabel"),
|
|
17443
17745
|
style: { display: "block" },
|
|
17444
17746
|
children: [
|
|
17445
17747
|
/* @__PURE__ */ jsxRuntime.jsx("defs", { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -17547,6 +17849,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17547
17849
|
readOnly = false,
|
|
17548
17850
|
className
|
|
17549
17851
|
}) => {
|
|
17852
|
+
const { t } = useTranslate();
|
|
17550
17853
|
const eventBus = useEventBus();
|
|
17551
17854
|
const questions = Array.isArray(questionsProp) ? questionsProp : [];
|
|
17552
17855
|
const rulesInitial = Array.isArray(rulesProp) ? rulesProp : [];
|
|
@@ -17599,16 +17902,23 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17599
17902
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex flex-wrap items-center justify-between gap-2", children: [
|
|
17600
17903
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex items-center gap-2", children: [
|
|
17601
17904
|
/* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.GitBranch, { className: "h-5 w-5 text-foreground" }),
|
|
17602
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "subheading", weight: "semibold", children: "
|
|
17905
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "subheading", weight: "semibold", children: t("branchingLogic.title") }),
|
|
17603
17906
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
17604
17907
|
Badge,
|
|
17605
17908
|
{
|
|
17606
17909
|
variant: "neutral",
|
|
17607
17910
|
size: "sm",
|
|
17608
|
-
label:
|
|
17911
|
+
label: rules.length === 1 ? t("branchingLogic.ruleCountOne", { count: rules.length }) : t("branchingLogic.ruleCountOther", { count: rules.length })
|
|
17609
17912
|
}
|
|
17610
17913
|
),
|
|
17611
|
-
brokenCount > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
17914
|
+
brokenCount > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
17915
|
+
Badge,
|
|
17916
|
+
{
|
|
17917
|
+
variant: "error",
|
|
17918
|
+
size: "sm",
|
|
17919
|
+
label: t("branchingLogic.brokenCount", { count: brokenCount })
|
|
17920
|
+
}
|
|
17921
|
+
)
|
|
17612
17922
|
] }),
|
|
17613
17923
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex items-center gap-1 rounded-sm border border-border bg-card p-0.5", children: [
|
|
17614
17924
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -17619,7 +17929,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17619
17929
|
leftIcon: LucideIcons2.Pencil,
|
|
17620
17930
|
action: "VIEW_EDIT",
|
|
17621
17931
|
onClick: () => setView("edit"),
|
|
17622
|
-
children: "
|
|
17932
|
+
children: t("branchingLogic.rules")
|
|
17623
17933
|
}
|
|
17624
17934
|
),
|
|
17625
17935
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -17630,13 +17940,13 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17630
17940
|
leftIcon: LucideIcons2.Eye,
|
|
17631
17941
|
action: "VIEW_GRAPH",
|
|
17632
17942
|
onClick: () => setView("graph"),
|
|
17633
|
-
children: "
|
|
17943
|
+
children: t("branchingLogic.logicGraph")
|
|
17634
17944
|
}
|
|
17635
17945
|
)
|
|
17636
17946
|
] })
|
|
17637
17947
|
] }),
|
|
17638
17948
|
view === "edit" ? /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex flex-col gap-2", children: [
|
|
17639
|
-
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 ? "
|
|
17949
|
+
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(
|
|
17640
17950
|
RuleRow,
|
|
17641
17951
|
{
|
|
17642
17952
|
rule,
|
|
@@ -17657,7 +17967,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
17657
17967
|
action: "ADD_RULE",
|
|
17658
17968
|
onClick: handleAddRule,
|
|
17659
17969
|
disabled: noQuestions,
|
|
17660
|
-
children: "
|
|
17970
|
+
children: t("branchingLogic.addRule")
|
|
17661
17971
|
}
|
|
17662
17972
|
) })
|
|
17663
17973
|
] }) : /* @__PURE__ */ jsxRuntime.jsx(LogicGraph, { questions, rules })
|
|
@@ -18284,7 +18594,7 @@ function CalendarGrid({
|
|
|
18284
18594
|
onClick: stepPrev,
|
|
18285
18595
|
"aria-disabled": !canPrev || void 0,
|
|
18286
18596
|
"aria-label": t("aria.previousDays"),
|
|
18287
|
-
children: "
|
|
18597
|
+
children: t("nav.previous")
|
|
18288
18598
|
}
|
|
18289
18599
|
),
|
|
18290
18600
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground", children: formatDateRange(visibleDays[0], visibleDays[visibleDays.length - 1]) }),
|
|
@@ -18297,7 +18607,7 @@ function CalendarGrid({
|
|
|
18297
18607
|
onClick: stepNext,
|
|
18298
18608
|
"aria-disabled": !canNext || void 0,
|
|
18299
18609
|
"aria-label": t("aria.nextDays"),
|
|
18300
|
-
children: "
|
|
18610
|
+
children: t("nav.next")
|
|
18301
18611
|
}
|
|
18302
18612
|
)
|
|
18303
18613
|
] }),
|
|
@@ -19847,7 +20157,7 @@ var init_Pagination = __esm({
|
|
|
19847
20157
|
type: "number",
|
|
19848
20158
|
value: jumpToPage,
|
|
19849
20159
|
onChange: (e) => setJumpToPage(e.target.value),
|
|
19850
|
-
placeholder: "
|
|
20160
|
+
placeholder: t("pagination.jumpPlaceholder"),
|
|
19851
20161
|
className: "w-20",
|
|
19852
20162
|
onKeyDown: (e) => {
|
|
19853
20163
|
if (e.key === "Enter") {
|
|
@@ -19985,13 +20295,10 @@ var init_CardGrid = __esm({
|
|
|
19985
20295
|
return children;
|
|
19986
20296
|
}
|
|
19987
20297
|
if (isLoading) {
|
|
19988
|
-
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: "
|
|
20298
|
+
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") }) });
|
|
19989
20299
|
}
|
|
19990
20300
|
if (error) {
|
|
19991
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "col-span-full text-center py-8 text-error", children: /* @__PURE__ */ jsxRuntime.
|
|
19992
|
-
"Error loading items: ",
|
|
19993
|
-
error.message
|
|
19994
|
-
] }) });
|
|
20301
|
+
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 }) }) });
|
|
19995
20302
|
}
|
|
19996
20303
|
if (normalizedData.length === 0) {
|
|
19997
20304
|
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" }) });
|
|
@@ -23857,7 +24164,7 @@ function DataGrid({
|
|
|
23857
24164
|
onChange: () => toggleSelection(id),
|
|
23858
24165
|
onClick: (e) => e.stopPropagation(),
|
|
23859
24166
|
className: "w-4 h-4 mt-1 flex-shrink-0 accent-primary",
|
|
23860
|
-
"aria-label":
|
|
24167
|
+
"aria-label": t("card.selectItem", { item: titleValue !== void 0 ? String(titleValue) : t("card.itemFallback") })
|
|
23861
24168
|
}
|
|
23862
24169
|
),
|
|
23863
24170
|
/* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "xs", className: "flex-1 min-w-0", children: [
|
|
@@ -24055,7 +24362,7 @@ function formatDate3(value) {
|
|
|
24055
24362
|
if (isNaN(d.getTime())) return String(value);
|
|
24056
24363
|
return d.toLocaleDateString(void 0, { year: "numeric", month: "short", day: "numeric" });
|
|
24057
24364
|
}
|
|
24058
|
-
function formatValue2(value, format) {
|
|
24365
|
+
function formatValue2(value, format, boolLabels) {
|
|
24059
24366
|
if (value === void 0 || value === null) return "";
|
|
24060
24367
|
switch (format) {
|
|
24061
24368
|
case "date":
|
|
@@ -24067,7 +24374,7 @@ function formatValue2(value, format) {
|
|
|
24067
24374
|
case "percent":
|
|
24068
24375
|
return typeof value === "number" ? `${Math.round(value)}%` : String(value);
|
|
24069
24376
|
case "boolean":
|
|
24070
|
-
return value ? "Yes" : "No";
|
|
24377
|
+
return value ? boolLabels?.yes ?? "Yes" : boolLabels?.no ?? "No";
|
|
24071
24378
|
default:
|
|
24072
24379
|
return String(value);
|
|
24073
24380
|
}
|
|
@@ -24363,7 +24670,7 @@ function DataList({
|
|
|
24363
24670
|
field.label ?? fieldLabel3(field.name),
|
|
24364
24671
|
":"
|
|
24365
24672
|
] }),
|
|
24366
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", children: formatValue2(value, field.format) })
|
|
24673
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", children: formatValue2(value, field.format, { yes: t("common.yes"), no: t("common.no") }) })
|
|
24367
24674
|
] }, field.name);
|
|
24368
24675
|
}) }),
|
|
24369
24676
|
progressFields.map((field) => {
|
|
@@ -24493,6 +24800,7 @@ var init_FileTree = __esm({
|
|
|
24493
24800
|
init_Box();
|
|
24494
24801
|
init_Typography();
|
|
24495
24802
|
init_Icon();
|
|
24803
|
+
init_useTranslate();
|
|
24496
24804
|
TreeNodeItem = ({
|
|
24497
24805
|
node,
|
|
24498
24806
|
depth,
|
|
@@ -24578,8 +24886,9 @@ var init_FileTree = __esm({
|
|
|
24578
24886
|
className,
|
|
24579
24887
|
indent = 16
|
|
24580
24888
|
}) => {
|
|
24889
|
+
const { t } = useTranslate();
|
|
24581
24890
|
if (tree.length === 0) {
|
|
24582
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: `p-4 ${className ?? ""}`, children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "muted", children: "
|
|
24891
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: `p-4 ${className ?? ""}`, children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "muted", children: t("fileTree.noFiles") }) });
|
|
24583
24892
|
}
|
|
24584
24893
|
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: `py-1 overflow-y-auto ${className ?? ""}`, role: "tree", children: tree.map((node) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
24585
24894
|
TreeNodeItem,
|
|
@@ -24698,6 +25007,7 @@ var init_FilterGroup = __esm({
|
|
|
24698
25007
|
init_Icon();
|
|
24699
25008
|
init_useEventBus();
|
|
24700
25009
|
init_useQuerySingleton();
|
|
25010
|
+
init_useTranslate();
|
|
24701
25011
|
resolveFilterType = (filter) => filter.filterType ?? filter.type;
|
|
24702
25012
|
lookStyles6 = {
|
|
24703
25013
|
toolbar: "",
|
|
@@ -24718,6 +25028,7 @@ var init_FilterGroup = __esm({
|
|
|
24718
25028
|
isLoading,
|
|
24719
25029
|
look = "toolbar"
|
|
24720
25030
|
}) => {
|
|
25031
|
+
const { t } = useTranslate();
|
|
24721
25032
|
const eventBus = useEventBus();
|
|
24722
25033
|
const queryState = useQuerySingleton(query);
|
|
24723
25034
|
const [selectedValues, setSelectedValues] = React85.useState(
|
|
@@ -24799,7 +25110,7 @@ var init_FilterGroup = __esm({
|
|
|
24799
25110
|
"px-3 py-1.5 text-sm font-medium transition-all duration-[var(--transition-fast)]",
|
|
24800
25111
|
!selectedValues[filter.field] ? "bg-primary text-primary-foreground" : "bg-card text-muted-foreground hover:bg-muted"
|
|
24801
25112
|
),
|
|
24802
|
-
children: "
|
|
25113
|
+
children: t("filterGroup.all")
|
|
24803
25114
|
}
|
|
24804
25115
|
),
|
|
24805
25116
|
filter.options?.map((option) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -24827,7 +25138,7 @@ var init_FilterGroup = __esm({
|
|
|
24827
25138
|
size: "sm",
|
|
24828
25139
|
onClick: handleClearAll,
|
|
24829
25140
|
leftIcon: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "x", className: "h-3.5 w-3.5" }),
|
|
24830
|
-
children: "
|
|
25141
|
+
children: t("filterGroup.clear")
|
|
24831
25142
|
}
|
|
24832
25143
|
)
|
|
24833
25144
|
]
|
|
@@ -24838,7 +25149,7 @@ var init_FilterGroup = __esm({
|
|
|
24838
25149
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col gap-4", lookStyles6[look], className), children: [
|
|
24839
25150
|
showIcon && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-muted-foreground", children: [
|
|
24840
25151
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "filter", className: "h-4 w-4" }),
|
|
24841
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: "
|
|
25152
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: t("filterGroup.filters") })
|
|
24842
25153
|
] }),
|
|
24843
25154
|
filters.map((filter) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
24844
25155
|
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-xs font-bold text-muted-foreground uppercase tracking-wide", children: filter.label }),
|
|
@@ -24861,7 +25172,7 @@ var init_FilterGroup = __esm({
|
|
|
24861
25172
|
`${filter.field}_from`,
|
|
24862
25173
|
e.target.value || null
|
|
24863
25174
|
),
|
|
24864
|
-
placeholder: "
|
|
25175
|
+
placeholder: t("filterGroup.from"),
|
|
24865
25176
|
clearable: true,
|
|
24866
25177
|
onClear: () => handleFilterSelect(`${filter.field}_from`, null)
|
|
24867
25178
|
}
|
|
@@ -24875,7 +25186,7 @@ var init_FilterGroup = __esm({
|
|
|
24875
25186
|
`${filter.field}_to`,
|
|
24876
25187
|
e.target.value || null
|
|
24877
25188
|
),
|
|
24878
|
-
placeholder: "
|
|
25189
|
+
placeholder: t("filterGroup.to"),
|
|
24879
25190
|
clearable: true,
|
|
24880
25191
|
onClear: () => handleFilterSelect(`${filter.field}_to`, null)
|
|
24881
25192
|
}
|
|
@@ -24895,7 +25206,7 @@ var init_FilterGroup = __esm({
|
|
|
24895
25206
|
value: selectedValues[filter.field] || "all",
|
|
24896
25207
|
onChange: (e) => handleFilterSelect(filter.field, e.target.value),
|
|
24897
25208
|
options: [
|
|
24898
|
-
{ value: "all", label: "
|
|
25209
|
+
{ value: "all", label: t("filterGroup.all") },
|
|
24899
25210
|
...filter.options?.map((opt) => ({
|
|
24900
25211
|
value: opt,
|
|
24901
25212
|
label: opt
|
|
@@ -24912,7 +25223,7 @@ var init_FilterGroup = __esm({
|
|
|
24912
25223
|
onClick: handleClearAll,
|
|
24913
25224
|
leftIcon: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "x", className: "h-3.5 w-3.5" }),
|
|
24914
25225
|
className: "self-start",
|
|
24915
|
-
children: "
|
|
25226
|
+
children: t("filterGroup.clearAll")
|
|
24916
25227
|
}
|
|
24917
25228
|
)
|
|
24918
25229
|
] });
|
|
@@ -24978,7 +25289,7 @@ var init_FilterGroup = __esm({
|
|
|
24978
25289
|
value: selectedValues[filter.field] || "all",
|
|
24979
25290
|
onChange: (e) => handleFilterSelect(filter.field, e.target.value),
|
|
24980
25291
|
options: [
|
|
24981
|
-
{ value: "all", label:
|
|
25292
|
+
{ value: "all", label: t("filterGroup.allOf", { label: filter.label }) },
|
|
24982
25293
|
...filter.options?.map((opt) => ({
|
|
24983
25294
|
value: opt,
|
|
24984
25295
|
label: opt
|
|
@@ -25007,7 +25318,7 @@ var init_FilterGroup = __esm({
|
|
|
25007
25318
|
field
|
|
25008
25319
|
);
|
|
25009
25320
|
}),
|
|
25010
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", onClick: handleClearAll, children: "
|
|
25321
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", onClick: handleClearAll, children: t("filterGroup.clearAll") })
|
|
25011
25322
|
] })
|
|
25012
25323
|
]
|
|
25013
25324
|
}
|
|
@@ -25032,7 +25343,7 @@ var init_FilterGroup = __esm({
|
|
|
25032
25343
|
className: "text-muted-foreground",
|
|
25033
25344
|
children: [
|
|
25034
25345
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "filter", className: "h-4 w-4" }),
|
|
25035
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: "
|
|
25346
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: t("filterGroup.filters") })
|
|
25036
25347
|
]
|
|
25037
25348
|
}
|
|
25038
25349
|
),
|
|
@@ -25058,7 +25369,7 @@ var init_FilterGroup = __esm({
|
|
|
25058
25369
|
`${filter.field}_from`,
|
|
25059
25370
|
e.target.value || null
|
|
25060
25371
|
),
|
|
25061
|
-
placeholder: "
|
|
25372
|
+
placeholder: t("filterGroup.from"),
|
|
25062
25373
|
clearable: true,
|
|
25063
25374
|
onClear: () => handleFilterSelect(`${filter.field}_from`, null),
|
|
25064
25375
|
className: "min-w-[130px]"
|
|
@@ -25074,7 +25385,7 @@ var init_FilterGroup = __esm({
|
|
|
25074
25385
|
`${filter.field}_to`,
|
|
25075
25386
|
e.target.value || null
|
|
25076
25387
|
),
|
|
25077
|
-
placeholder: "
|
|
25388
|
+
placeholder: t("filterGroup.to"),
|
|
25078
25389
|
clearable: true,
|
|
25079
25390
|
onClear: () => handleFilterSelect(`${filter.field}_to`, null),
|
|
25080
25391
|
className: "min-w-[130px]"
|
|
@@ -25096,7 +25407,7 @@ var init_FilterGroup = __esm({
|
|
|
25096
25407
|
value: selectedValues[filter.field] || "all",
|
|
25097
25408
|
onChange: (e) => handleFilterSelect(filter.field, e.target.value),
|
|
25098
25409
|
options: [
|
|
25099
|
-
{ value: "all", label: "
|
|
25410
|
+
{ value: "all", label: t("filterGroup.all") },
|
|
25100
25411
|
...filter.options?.map((opt) => ({
|
|
25101
25412
|
value: opt,
|
|
25102
25413
|
label: opt
|
|
@@ -25107,10 +25418,7 @@ var init_FilterGroup = __esm({
|
|
|
25107
25418
|
)
|
|
25108
25419
|
] }, filter.field)),
|
|
25109
25420
|
activeFilterCount > 0 && /* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", align: "center", className: "ml-auto", children: [
|
|
25110
|
-
/* @__PURE__ */ jsxRuntime.
|
|
25111
|
-
activeFilterCount,
|
|
25112
|
-
" active"
|
|
25113
|
-
] }),
|
|
25421
|
+
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "primary", size: "md", children: t("filterGroup.activeCount", { count: activeFilterCount }) }),
|
|
25114
25422
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
25115
25423
|
Button,
|
|
25116
25424
|
{
|
|
@@ -25118,7 +25426,7 @@ var init_FilterGroup = __esm({
|
|
|
25118
25426
|
size: "sm",
|
|
25119
25427
|
onClick: handleClearAll,
|
|
25120
25428
|
leftIcon: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "x", className: "h-3.5 w-3.5" }),
|
|
25121
|
-
children: "
|
|
25429
|
+
children: t("filterGroup.clearAll")
|
|
25122
25430
|
}
|
|
25123
25431
|
)
|
|
25124
25432
|
] })
|
|
@@ -25347,7 +25655,7 @@ var init_RelationSelect = __esm({
|
|
|
25347
25655
|
value,
|
|
25348
25656
|
onChange,
|
|
25349
25657
|
options = [],
|
|
25350
|
-
placeholder
|
|
25658
|
+
placeholder,
|
|
25351
25659
|
required = false,
|
|
25352
25660
|
disabled = false,
|
|
25353
25661
|
isLoading = false,
|
|
@@ -25359,6 +25667,7 @@ var init_RelationSelect = __esm({
|
|
|
25359
25667
|
emptyMessage
|
|
25360
25668
|
}) => {
|
|
25361
25669
|
const { t } = useTranslate();
|
|
25670
|
+
const resolvedPlaceholder = placeholder ?? t("relationSelect.selectPlaceholder");
|
|
25362
25671
|
const resolvedSearchPlaceholder = searchPlaceholder ?? t("common.search");
|
|
25363
25672
|
const resolvedEmptyMessage = emptyMessage ?? t("empty.noOptionsFound");
|
|
25364
25673
|
const [isOpen, setIsOpen] = React85.useState(false);
|
|
@@ -25468,7 +25777,7 @@ var init_RelationSelect = __esm({
|
|
|
25468
25777
|
children: isLoading ? /* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "xs", align: "center", children: [
|
|
25469
25778
|
/* @__PURE__ */ jsxRuntime.jsx(Spinner, { size: "sm" }),
|
|
25470
25779
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { as: "span", children: t("common.loading") })
|
|
25471
|
-
] }) : selectedOption ? selectedOption.label :
|
|
25780
|
+
] }) : selectedOption ? selectedOption.label : resolvedPlaceholder
|
|
25472
25781
|
}
|
|
25473
25782
|
),
|
|
25474
25783
|
/* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "xs", align: "center", children: [
|
|
@@ -26062,19 +26371,20 @@ var init_RepeatableFormSection = __esm({
|
|
|
26062
26371
|
RepeatableFormSection.displayName = "RepeatableFormSection";
|
|
26063
26372
|
}
|
|
26064
26373
|
});
|
|
26065
|
-
var
|
|
26374
|
+
var actionTypeLabelKeys, actionTypeIcons, ViolationAlert;
|
|
26066
26375
|
var init_ViolationAlert = __esm({
|
|
26067
26376
|
"components/core/molecules/ViolationAlert.tsx"() {
|
|
26068
26377
|
init_cn();
|
|
26378
|
+
init_useTranslate();
|
|
26069
26379
|
init_Box();
|
|
26070
26380
|
init_Stack();
|
|
26071
26381
|
init_Typography();
|
|
26072
26382
|
init_Button();
|
|
26073
26383
|
init_Icon();
|
|
26074
|
-
|
|
26075
|
-
measure: "
|
|
26076
|
-
admin: "
|
|
26077
|
-
penalty: "
|
|
26384
|
+
actionTypeLabelKeys = {
|
|
26385
|
+
measure: "violationAlert.actionType.measure",
|
|
26386
|
+
admin: "violationAlert.actionType.admin",
|
|
26387
|
+
penalty: "violationAlert.actionType.penalty"
|
|
26078
26388
|
};
|
|
26079
26389
|
actionTypeIcons = {
|
|
26080
26390
|
measure: "alert-triangle",
|
|
@@ -26091,10 +26401,11 @@ var init_ViolationAlert = __esm({
|
|
|
26091
26401
|
className,
|
|
26092
26402
|
...flatProps
|
|
26093
26403
|
}) => {
|
|
26404
|
+
const { t } = useTranslate();
|
|
26094
26405
|
const resolvedViolation = violation ?? {
|
|
26095
26406
|
law: "",
|
|
26096
26407
|
article: "",
|
|
26097
|
-
message: flatProps.message ?? "
|
|
26408
|
+
message: flatProps.message ?? t("violationAlert.fallbackMessage"),
|
|
26098
26409
|
actionType: "measure"
|
|
26099
26410
|
};
|
|
26100
26411
|
const effectiveSeverity = severity ?? (resolvedViolation.actionType === "measure" ? "warning" : "error");
|
|
@@ -26179,7 +26490,7 @@ var init_ViolationAlert = __esm({
|
|
|
26179
26490
|
{
|
|
26180
26491
|
variant: "caption",
|
|
26181
26492
|
className: cn(textColor, "opacity-75"),
|
|
26182
|
-
children:
|
|
26493
|
+
children: t(actionTypeLabelKeys[resolvedViolation.actionType])
|
|
26183
26494
|
}
|
|
26184
26495
|
)
|
|
26185
26496
|
] })
|
|
@@ -26210,7 +26521,7 @@ var init_ViolationAlert = __esm({
|
|
|
26210
26521
|
{
|
|
26211
26522
|
variant: "caption",
|
|
26212
26523
|
className: cn(textColor, "opacity-75"),
|
|
26213
|
-
children: "
|
|
26524
|
+
children: t("violationAlert.adminLabel")
|
|
26214
26525
|
}
|
|
26215
26526
|
),
|
|
26216
26527
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -26229,7 +26540,7 @@ var init_ViolationAlert = __esm({
|
|
|
26229
26540
|
{
|
|
26230
26541
|
variant: "caption",
|
|
26231
26542
|
className: cn(textColor, "opacity-75"),
|
|
26232
|
-
children: "
|
|
26543
|
+
children: t("violationAlert.penaltyLabel")
|
|
26233
26544
|
}
|
|
26234
26545
|
),
|
|
26235
26546
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -26254,7 +26565,7 @@ var init_ViolationAlert = __esm({
|
|
|
26254
26565
|
className: cn(textColor, "self-start"),
|
|
26255
26566
|
children: [
|
|
26256
26567
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "arrow-right", size: "sm", className: "mr-1" }),
|
|
26257
|
-
"
|
|
26568
|
+
t("violationAlert.goToField")
|
|
26258
26569
|
]
|
|
26259
26570
|
}
|
|
26260
26571
|
)
|
|
@@ -26570,6 +26881,7 @@ var init_LineChart = __esm({
|
|
|
26570
26881
|
"use client";
|
|
26571
26882
|
init_cn();
|
|
26572
26883
|
init_atoms2();
|
|
26884
|
+
init_useTranslate();
|
|
26573
26885
|
LineChart2 = ({
|
|
26574
26886
|
data,
|
|
26575
26887
|
width = 400,
|
|
@@ -26581,6 +26893,7 @@ var init_LineChart = __esm({
|
|
|
26581
26893
|
areaColor = "var(--color-primary)",
|
|
26582
26894
|
className
|
|
26583
26895
|
}) => {
|
|
26896
|
+
const { t } = useTranslate();
|
|
26584
26897
|
const gradientId = React85.useId();
|
|
26585
26898
|
const safeData = data ?? [];
|
|
26586
26899
|
const sortedData = React85.useMemo(() => {
|
|
@@ -26617,7 +26930,7 @@ var init_LineChart = __esm({
|
|
|
26617
26930
|
return `${linePath} L ${last.x} ${bottom} L ${first.x} ${bottom} Z`;
|
|
26618
26931
|
}, [linePath, points, height, showArea]);
|
|
26619
26932
|
if (safeData.length === 0) {
|
|
26620
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("flex items-center justify-center text-muted-foreground", className), style: { width, height }, children: "
|
|
26933
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("flex items-center justify-center text-muted-foreground", className), style: { width, height }, children: t("empty.noData") });
|
|
26621
26934
|
}
|
|
26622
26935
|
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn(className), children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
26623
26936
|
"svg",
|
|
@@ -28524,6 +28837,7 @@ var init_GraphView = __esm({
|
|
|
28524
28837
|
"use client";
|
|
28525
28838
|
init_cn();
|
|
28526
28839
|
init_atoms2();
|
|
28840
|
+
init_useTranslate();
|
|
28527
28841
|
GROUP_COLORS = [
|
|
28528
28842
|
"#3b82f6",
|
|
28529
28843
|
// blue-500
|
|
@@ -28556,6 +28870,7 @@ var init_GraphView = __esm({
|
|
|
28556
28870
|
showLabels = true,
|
|
28557
28871
|
zoomToFit = true
|
|
28558
28872
|
}) => {
|
|
28873
|
+
const { t } = useTranslate();
|
|
28559
28874
|
const containerRef = React85.useRef(null);
|
|
28560
28875
|
const animRef = React85.useRef(0);
|
|
28561
28876
|
const [simNodes, setSimNodes] = React85.useState([]);
|
|
@@ -28733,7 +29048,7 @@ var init_GraphView = __esm({
|
|
|
28733
29048
|
[onNodeClick]
|
|
28734
29049
|
);
|
|
28735
29050
|
if (nodes.length === 0) {
|
|
28736
|
-
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: "
|
|
29051
|
+
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") }) });
|
|
28737
29052
|
}
|
|
28738
29053
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
28739
29054
|
Box,
|
|
@@ -29189,11 +29504,12 @@ var init_UploadDropZone = __esm({
|
|
|
29189
29504
|
init_Icon();
|
|
29190
29505
|
init_Typography();
|
|
29191
29506
|
init_useEventBus();
|
|
29507
|
+
init_useTranslate();
|
|
29192
29508
|
UploadDropZone = ({
|
|
29193
29509
|
accept,
|
|
29194
29510
|
maxSize,
|
|
29195
29511
|
maxFiles = 1,
|
|
29196
|
-
label
|
|
29512
|
+
label,
|
|
29197
29513
|
description,
|
|
29198
29514
|
disabled = false,
|
|
29199
29515
|
action,
|
|
@@ -29201,22 +29517,24 @@ var init_UploadDropZone = __esm({
|
|
|
29201
29517
|
onFiles,
|
|
29202
29518
|
className
|
|
29203
29519
|
}) => {
|
|
29520
|
+
const { t } = useTranslate();
|
|
29521
|
+
const resolvedLabel = label ?? t("upload.dropOrBrowse");
|
|
29204
29522
|
const [isDragOver, setIsDragOver] = React85.useState(false);
|
|
29205
29523
|
const [error, setError] = React85.useState(null);
|
|
29206
29524
|
const inputRef = React85.useRef(null);
|
|
29207
29525
|
const eventBus = useSafeEventBus7();
|
|
29208
29526
|
const defaultDescription = [
|
|
29209
|
-
accept ?
|
|
29210
|
-
maxSize ?
|
|
29211
|
-
maxFiles > 1 ?
|
|
29527
|
+
accept ? t("upload.accepted", { accept }) : null,
|
|
29528
|
+
maxSize ? t("upload.maxSize", { size: formatFileSize(maxSize) }) : null,
|
|
29529
|
+
maxFiles > 1 ? t("upload.maxFiles", { count: maxFiles }) : null
|
|
29212
29530
|
].filter(Boolean).join(". ");
|
|
29213
29531
|
const validateFiles = React85.useCallback(
|
|
29214
29532
|
(files) => {
|
|
29215
29533
|
if (files.length > maxFiles) {
|
|
29216
|
-
return { valid: [], error:
|
|
29534
|
+
return { valid: [], error: t("upload.error.maxFiles", { count: maxFiles }) };
|
|
29217
29535
|
}
|
|
29218
29536
|
if (accept) {
|
|
29219
|
-
const acceptedTypes = accept.split(",").map((
|
|
29537
|
+
const acceptedTypes = accept.split(",").map((s) => s.trim());
|
|
29220
29538
|
const invalid = files.filter((file) => {
|
|
29221
29539
|
return !acceptedTypes.some((type) => {
|
|
29222
29540
|
if (type.endsWith("/*")) {
|
|
@@ -29226,7 +29544,7 @@ var init_UploadDropZone = __esm({
|
|
|
29226
29544
|
});
|
|
29227
29545
|
});
|
|
29228
29546
|
if (invalid.length > 0) {
|
|
29229
|
-
return { valid: [], error:
|
|
29547
|
+
return { valid: [], error: t("upload.error.invalidType", { name: invalid[0].name }) };
|
|
29230
29548
|
}
|
|
29231
29549
|
}
|
|
29232
29550
|
if (maxSize) {
|
|
@@ -29234,13 +29552,13 @@ var init_UploadDropZone = __esm({
|
|
|
29234
29552
|
if (tooLarge.length > 0) {
|
|
29235
29553
|
return {
|
|
29236
29554
|
valid: [],
|
|
29237
|
-
error:
|
|
29555
|
+
error: t("upload.error.tooLarge", { name: tooLarge[0].name, size: formatFileSize(maxSize) })
|
|
29238
29556
|
};
|
|
29239
29557
|
}
|
|
29240
29558
|
}
|
|
29241
29559
|
return { valid: files, error: null };
|
|
29242
29560
|
},
|
|
29243
|
-
[accept, maxSize, maxFiles]
|
|
29561
|
+
[accept, maxSize, maxFiles, t]
|
|
29244
29562
|
);
|
|
29245
29563
|
const handleFiles = React85.useCallback(
|
|
29246
29564
|
(files) => {
|
|
@@ -29311,7 +29629,7 @@ var init_UploadDropZone = __esm({
|
|
|
29311
29629
|
handleClick();
|
|
29312
29630
|
}
|
|
29313
29631
|
},
|
|
29314
|
-
"aria-label":
|
|
29632
|
+
"aria-label": resolvedLabel,
|
|
29315
29633
|
children: [
|
|
29316
29634
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
29317
29635
|
"input",
|
|
@@ -29327,7 +29645,7 @@ var init_UploadDropZone = __esm({
|
|
|
29327
29645
|
}
|
|
29328
29646
|
),
|
|
29329
29647
|
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" }),
|
|
29330
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body1", className: "text-center font-medium mb-1", children: isDragOver ? "
|
|
29648
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body1", className: "text-center font-medium mb-1", children: isDragOver ? t("upload.dropFilesHere") : resolvedLabel }),
|
|
29331
29649
|
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 })
|
|
29332
29650
|
]
|
|
29333
29651
|
}
|
|
@@ -29749,7 +30067,7 @@ function TableView({
|
|
|
29749
30067
|
{
|
|
29750
30068
|
checked: selected.has(id),
|
|
29751
30069
|
onChange: () => toggleRow(id),
|
|
29752
|
-
"aria-label":
|
|
30070
|
+
"aria-label": t("table.selectRow", { id })
|
|
29753
30071
|
}
|
|
29754
30072
|
) }),
|
|
29755
30073
|
hasRenderProp ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex-1 min-w-0", children: children(row, index) }) : colDefs.map((col) => {
|
|
@@ -32596,7 +32914,7 @@ var init_QrScanner = __esm({
|
|
|
32596
32914
|
className: "inset-0 flex-col items-center justify-center gap-2 bg-black bg-opacity-80 text-center",
|
|
32597
32915
|
children: [
|
|
32598
32916
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "camera", className: "h-8 w-8 text-white", "aria-hidden": "true" }),
|
|
32599
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-white", children: "
|
|
32917
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-white", children: t("qrScanner.cameraUnavailable") }),
|
|
32600
32918
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", className: "text-white opacity-70", children: cameraError.message })
|
|
32601
32919
|
]
|
|
32602
32920
|
}
|
|
@@ -32607,7 +32925,7 @@ var init_QrScanner = __esm({
|
|
|
32607
32925
|
position: "absolute",
|
|
32608
32926
|
display: "flex",
|
|
32609
32927
|
className: "inset-0 items-center justify-center bg-black bg-opacity-60",
|
|
32610
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-white", children: "
|
|
32928
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-white", children: t("qrScanner.paused") })
|
|
32611
32929
|
}
|
|
32612
32930
|
),
|
|
32613
32931
|
showCameraControls && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -32626,7 +32944,7 @@ var init_QrScanner = __esm({
|
|
|
32626
32944
|
"rounded-full bg-black bg-opacity-60 p-2 text-white",
|
|
32627
32945
|
"hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
|
|
32628
32946
|
),
|
|
32629
|
-
"aria-label": isPaused ? "
|
|
32947
|
+
"aria-label": isPaused ? t("qrScanner.resumeScanning") : t("qrScanner.pauseScanning"),
|
|
32630
32948
|
children: isPaused ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "play", className: "h-4 w-4" }) : /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "pause", className: "h-4 w-4" })
|
|
32631
32949
|
}
|
|
32632
32950
|
),
|
|
@@ -32639,7 +32957,7 @@ var init_QrScanner = __esm({
|
|
|
32639
32957
|
"rounded-full bg-black bg-opacity-60 p-2 text-white",
|
|
32640
32958
|
"hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
|
|
32641
32959
|
),
|
|
32642
|
-
"aria-label":
|
|
32960
|
+
"aria-label": currentFacing === "environment" ? t("qrScanner.switchToFrontCamera") : t("qrScanner.switchToRearCamera"),
|
|
32643
32961
|
children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "refresh-cw", className: "h-4 w-4" })
|
|
32644
32962
|
}
|
|
32645
32963
|
),
|
|
@@ -32653,7 +32971,7 @@ var init_QrScanner = __esm({
|
|
|
32653
32971
|
"hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
|
|
32654
32972
|
),
|
|
32655
32973
|
"aria-label": t("aria.mockScanDev"),
|
|
32656
|
-
children: "
|
|
32974
|
+
children: t("qrScanner.mockScan")
|
|
32657
32975
|
}
|
|
32658
32976
|
)
|
|
32659
32977
|
]
|
|
@@ -32671,6 +32989,7 @@ var init_OptionConstraintGroup = __esm({
|
|
|
32671
32989
|
"components/core/molecules/OptionConstraintGroup.tsx"() {
|
|
32672
32990
|
init_cn();
|
|
32673
32991
|
init_useEventBus();
|
|
32992
|
+
init_useTranslate();
|
|
32674
32993
|
init_Typography();
|
|
32675
32994
|
init_Box();
|
|
32676
32995
|
init_Label();
|
|
@@ -32680,36 +32999,36 @@ var init_OptionConstraintGroup = __esm({
|
|
|
32680
32999
|
const sign = delta >= 0 ? "+" : "-";
|
|
32681
33000
|
return `${sign}$${Math.abs(delta).toFixed(2)}`;
|
|
32682
33001
|
};
|
|
32683
|
-
constraintHint = (constraint) => {
|
|
33002
|
+
constraintHint = (constraint, t) => {
|
|
32684
33003
|
if (constraint.type === "single") {
|
|
32685
|
-
return constraint.required ? "
|
|
33004
|
+
return constraint.required ? t("optionConstraint.requiredOne") : t("optionConstraint.optionalOne");
|
|
32686
33005
|
}
|
|
32687
33006
|
const { min, max } = constraint;
|
|
32688
33007
|
if (min && max) {
|
|
32689
|
-
return min === max ?
|
|
33008
|
+
return min === max ? t("optionConstraint.pickExactly", { count: min }) : t("optionConstraint.pickRange", { min, max });
|
|
32690
33009
|
}
|
|
32691
|
-
if (min) return
|
|
32692
|
-
if (max) return
|
|
32693
|
-
return "
|
|
33010
|
+
if (min) return t("optionConstraint.pickAtLeast", { count: min });
|
|
33011
|
+
if (max) return t("optionConstraint.pickUpTo", { count: max });
|
|
33012
|
+
return t("optionConstraint.optional");
|
|
32694
33013
|
};
|
|
32695
|
-
validateSelection = (selected, constraint) => {
|
|
33014
|
+
validateSelection = (selected, constraint, t) => {
|
|
32696
33015
|
if (constraint.type === "single") {
|
|
32697
33016
|
if (constraint.required && selected.length === 0) {
|
|
32698
|
-
return "
|
|
33017
|
+
return t("optionConstraint.error.pickOne");
|
|
32699
33018
|
}
|
|
32700
33019
|
if (selected.length > 1) {
|
|
32701
|
-
return "
|
|
33020
|
+
return t("optionConstraint.error.pickOnlyOne");
|
|
32702
33021
|
}
|
|
32703
33022
|
return void 0;
|
|
32704
33023
|
}
|
|
32705
33024
|
const { min, max } = constraint;
|
|
32706
33025
|
if (min !== void 0 && selected.length < min) {
|
|
32707
33026
|
const remaining = min - selected.length;
|
|
32708
|
-
return
|
|
33027
|
+
return t("optionConstraint.error.pickMore", { count: remaining });
|
|
32709
33028
|
}
|
|
32710
33029
|
if (max !== void 0 && selected.length > max) {
|
|
32711
33030
|
const excess = selected.length - max;
|
|
32712
|
-
return
|
|
33031
|
+
return t("optionConstraint.error.removeOptions", { count: excess });
|
|
32713
33032
|
}
|
|
32714
33033
|
return void 0;
|
|
32715
33034
|
};
|
|
@@ -32726,8 +33045,9 @@ var init_OptionConstraintGroup = __esm({
|
|
|
32726
33045
|
className
|
|
32727
33046
|
}) => {
|
|
32728
33047
|
const eventBus = useEventBus();
|
|
32729
|
-
const
|
|
32730
|
-
const
|
|
33048
|
+
const { t } = useTranslate();
|
|
33049
|
+
const hint = constraintHint(constraint, t);
|
|
33050
|
+
const error = validateSelection(selected, constraint, t);
|
|
32731
33051
|
const inputName = `option-${groupId}`;
|
|
32732
33052
|
const labelTextSize = size === "sm" ? "text-sm" : "text-base";
|
|
32733
33053
|
const optionGap = size === "sm" ? "gap-2" : "gap-2.5";
|
|
@@ -32827,7 +33147,7 @@ var init_OptionConstraintGroup = __esm({
|
|
|
32827
33147
|
variant: "caption",
|
|
32828
33148
|
color: "warning",
|
|
32829
33149
|
className: "rounded border border-warning/40 px-1.5 py-0.5",
|
|
32830
|
-
children: "
|
|
33150
|
+
children: t("optionConstraint.outOfStock")
|
|
32831
33151
|
}
|
|
32832
33152
|
)
|
|
32833
33153
|
]
|
|
@@ -33149,6 +33469,7 @@ function changeBlockType(block, type) {
|
|
|
33149
33469
|
return { id: block.id, type, content: seed };
|
|
33150
33470
|
}
|
|
33151
33471
|
function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
33472
|
+
const { t } = useTranslate();
|
|
33152
33473
|
const [open, setOpen] = React85.useState(false);
|
|
33153
33474
|
const ref = React85.useRef(null);
|
|
33154
33475
|
React85.useEffect(() => {
|
|
@@ -33168,7 +33489,7 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
33168
33489
|
{
|
|
33169
33490
|
type: "button",
|
|
33170
33491
|
variant: "ghost",
|
|
33171
|
-
"aria-label": "
|
|
33492
|
+
"aria-label": t("richBlockEditor.blockActions"),
|
|
33172
33493
|
className: cn(
|
|
33173
33494
|
"inline-flex items-center justify-center",
|
|
33174
33495
|
"h-6 w-6 rounded-sm p-0 gap-0",
|
|
@@ -33190,7 +33511,7 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
33190
33511
|
"py-1 text-sm"
|
|
33191
33512
|
),
|
|
33192
33513
|
children: [
|
|
33193
|
-
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground", children:
|
|
33514
|
+
/* @__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]) }),
|
|
33194
33515
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
33195
33516
|
Button,
|
|
33196
33517
|
{
|
|
@@ -33204,7 +33525,8 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
33204
33525
|
},
|
|
33205
33526
|
children: [
|
|
33206
33527
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "plus", className: "w-3.5 h-3.5" }),
|
|
33207
|
-
"
|
|
33528
|
+
" ",
|
|
33529
|
+
t("richBlockEditor.duplicate")
|
|
33208
33530
|
]
|
|
33209
33531
|
}
|
|
33210
33532
|
),
|
|
@@ -33221,14 +33543,15 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
33221
33543
|
},
|
|
33222
33544
|
children: [
|
|
33223
33545
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "trash", className: "w-3.5 h-3.5" }),
|
|
33224
|
-
"
|
|
33546
|
+
" ",
|
|
33547
|
+
t("common.delete")
|
|
33225
33548
|
]
|
|
33226
33549
|
}
|
|
33227
33550
|
),
|
|
33228
33551
|
CHANGEABLE_TYPES.includes(block.type) && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
33229
33552
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "my-1 border-t border-border" }),
|
|
33230
|
-
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground", children: "
|
|
33231
|
-
CHANGEABLE_TYPES.filter((
|
|
33553
|
+
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground", children: t("richBlockEditor.turnInto") }),
|
|
33554
|
+
CHANGEABLE_TYPES.filter((bt) => bt !== block.type).map((bt) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
33232
33555
|
Button,
|
|
33233
33556
|
{
|
|
33234
33557
|
type: "button",
|
|
@@ -33236,12 +33559,12 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
33236
33559
|
role: "menuitem",
|
|
33237
33560
|
className: "flex w-full items-center gap-2 px-2 py-1.5 text-left justify-start rounded-none",
|
|
33238
33561
|
onClick: () => {
|
|
33239
|
-
onChangeType(
|
|
33562
|
+
onChangeType(bt);
|
|
33240
33563
|
setOpen(false);
|
|
33241
33564
|
},
|
|
33242
|
-
children:
|
|
33565
|
+
children: t(BLOCK_TYPE_LABEL_KEY[bt])
|
|
33243
33566
|
},
|
|
33244
|
-
|
|
33567
|
+
bt
|
|
33245
33568
|
))
|
|
33246
33569
|
] })
|
|
33247
33570
|
]
|
|
@@ -33303,6 +33626,7 @@ function BlockRow({
|
|
|
33303
33626
|
onInsertAfter,
|
|
33304
33627
|
onChangeType
|
|
33305
33628
|
}) {
|
|
33629
|
+
const { t } = useTranslate();
|
|
33306
33630
|
const setContent = React85.useCallback(
|
|
33307
33631
|
(next) => onUpdate((b) => ({ ...b, content: next })),
|
|
33308
33632
|
[onUpdate]
|
|
@@ -33352,8 +33676,8 @@ function BlockRow({
|
|
|
33352
33676
|
tag: "h1",
|
|
33353
33677
|
value: block.content ?? "",
|
|
33354
33678
|
readOnly,
|
|
33355
|
-
placeholder: placeholder ?? "
|
|
33356
|
-
ariaLabel: "
|
|
33679
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.heading1"),
|
|
33680
|
+
ariaLabel: t("richBlockEditor.aria.heading1Block"),
|
|
33357
33681
|
className: "text-3xl font-bold leading-tight",
|
|
33358
33682
|
onValueChange: setContent
|
|
33359
33683
|
}
|
|
@@ -33365,8 +33689,8 @@ function BlockRow({
|
|
|
33365
33689
|
tag: "h2",
|
|
33366
33690
|
value: block.content ?? "",
|
|
33367
33691
|
readOnly,
|
|
33368
|
-
placeholder: placeholder ?? "
|
|
33369
|
-
ariaLabel: "
|
|
33692
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.heading2"),
|
|
33693
|
+
ariaLabel: t("richBlockEditor.aria.heading2Block"),
|
|
33370
33694
|
className: "text-2xl font-semibold leading-tight",
|
|
33371
33695
|
onValueChange: setContent
|
|
33372
33696
|
}
|
|
@@ -33378,8 +33702,8 @@ function BlockRow({
|
|
|
33378
33702
|
tag: "h3",
|
|
33379
33703
|
value: block.content ?? "",
|
|
33380
33704
|
readOnly,
|
|
33381
|
-
placeholder: placeholder ?? "
|
|
33382
|
-
ariaLabel: "
|
|
33705
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.heading3"),
|
|
33706
|
+
ariaLabel: t("richBlockEditor.aria.heading3Block"),
|
|
33383
33707
|
className: "text-xl font-semibold leading-tight",
|
|
33384
33708
|
onValueChange: setContent
|
|
33385
33709
|
}
|
|
@@ -33391,8 +33715,8 @@ function BlockRow({
|
|
|
33391
33715
|
tag: "blockquote",
|
|
33392
33716
|
value: block.content ?? "",
|
|
33393
33717
|
readOnly,
|
|
33394
|
-
placeholder: placeholder ?? "
|
|
33395
|
-
ariaLabel: "
|
|
33718
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.quote"),
|
|
33719
|
+
ariaLabel: t("richBlockEditor.aria.quoteBlock"),
|
|
33396
33720
|
className: "border-l-4 border-primary/60 pl-4 italic text-muted-foreground",
|
|
33397
33721
|
onValueChange: setContent
|
|
33398
33722
|
}
|
|
@@ -33400,13 +33724,13 @@ function BlockRow({
|
|
|
33400
33724
|
case "code":
|
|
33401
33725
|
return /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "rounded-md border border-border bg-muted/40", children: [
|
|
33402
33726
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex items-center justify-between border-b border-border px-3 py-1 text-xs text-muted-foreground", children: [
|
|
33403
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { as: "span", variant: "caption", className: "uppercase tracking-wide", children: "
|
|
33727
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { as: "span", variant: "caption", className: "uppercase tracking-wide", children: t("richBlockEditor.blockType.code") }),
|
|
33404
33728
|
!readOnly && /* @__PURE__ */ jsxRuntime.jsx(
|
|
33405
33729
|
Input,
|
|
33406
33730
|
{
|
|
33407
33731
|
inputType: "text",
|
|
33408
33732
|
value: String(block.metadata?.language ?? "plaintext"),
|
|
33409
|
-
"aria-label": "
|
|
33733
|
+
"aria-label": t("richBlockEditor.aria.codeLanguage"),
|
|
33410
33734
|
className: cn(
|
|
33411
33735
|
"h-6 w-32 rounded-sm border border-border bg-background",
|
|
33412
33736
|
"px-2 text-xs outline-none focus:ring-1 focus:ring-ring"
|
|
@@ -33422,8 +33746,8 @@ function BlockRow({
|
|
|
33422
33746
|
tag: "pre",
|
|
33423
33747
|
value: block.content ?? "",
|
|
33424
33748
|
readOnly,
|
|
33425
|
-
placeholder: placeholder ?? "
|
|
33426
|
-
ariaLabel: "
|
|
33749
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.code"),
|
|
33750
|
+
ariaLabel: t("richBlockEditor.aria.codeBlock"),
|
|
33427
33751
|
className: "block whitespace-pre-wrap p-3 font-mono text-sm leading-relaxed",
|
|
33428
33752
|
onValueChange: setContent
|
|
33429
33753
|
}
|
|
@@ -33436,7 +33760,7 @@ function BlockRow({
|
|
|
33436
33760
|
const caption = String(block.metadata?.caption ?? "");
|
|
33437
33761
|
const imgProps = {
|
|
33438
33762
|
src: url,
|
|
33439
|
-
alt: caption || "
|
|
33763
|
+
alt: caption || t("richBlockEditor.embeddedImage"),
|
|
33440
33764
|
className: "max-h-96 w-full rounded-md border border-border object-contain"
|
|
33441
33765
|
};
|
|
33442
33766
|
return /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "space-y-2", children: [
|
|
@@ -33450,7 +33774,8 @@ function BlockRow({
|
|
|
33450
33774
|
),
|
|
33451
33775
|
children: [
|
|
33452
33776
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "image", className: "mr-2 w-4 h-4" }),
|
|
33453
|
-
"
|
|
33777
|
+
" ",
|
|
33778
|
+
t("richBlockEditor.noImageUrl")
|
|
33454
33779
|
]
|
|
33455
33780
|
}
|
|
33456
33781
|
),
|
|
@@ -33461,7 +33786,7 @@ function BlockRow({
|
|
|
33461
33786
|
inputType: "url",
|
|
33462
33787
|
value: url,
|
|
33463
33788
|
placeholder: "https://example.com/image.png",
|
|
33464
|
-
"aria-label": "
|
|
33789
|
+
"aria-label": t("richBlockEditor.aria.imageUrl"),
|
|
33465
33790
|
className: cn(
|
|
33466
33791
|
"h-8 flex-1 rounded-sm border border-border bg-background",
|
|
33467
33792
|
"px-2 text-sm outline-none focus:ring-1 focus:ring-ring"
|
|
@@ -33474,8 +33799,8 @@ function BlockRow({
|
|
|
33474
33799
|
{
|
|
33475
33800
|
inputType: "text",
|
|
33476
33801
|
value: caption,
|
|
33477
|
-
placeholder: "
|
|
33478
|
-
"aria-label": "
|
|
33802
|
+
placeholder: t("richBlockEditor.placeholder.caption"),
|
|
33803
|
+
"aria-label": t("richBlockEditor.aria.imageCaption"),
|
|
33479
33804
|
className: cn(
|
|
33480
33805
|
"h-8 flex-1 rounded-sm border border-border bg-background",
|
|
33481
33806
|
"px-2 text-sm outline-none focus:ring-1 focus:ring-ring"
|
|
@@ -33506,8 +33831,8 @@ function BlockRow({
|
|
|
33506
33831
|
tag: "span",
|
|
33507
33832
|
value: child.content ?? "",
|
|
33508
33833
|
readOnly,
|
|
33509
|
-
placeholder: "
|
|
33510
|
-
ariaLabel: "
|
|
33834
|
+
placeholder: t("richBlockEditor.placeholder.listItem"),
|
|
33835
|
+
ariaLabel: t("richBlockEditor.aria.listItem"),
|
|
33511
33836
|
className: "inline-block min-w-[1ch] flex-1",
|
|
33512
33837
|
onValueChange: (next) => setChildContent(child.id, next)
|
|
33513
33838
|
}
|
|
@@ -33517,7 +33842,7 @@ function BlockRow({
|
|
|
33517
33842
|
{
|
|
33518
33843
|
type: "button",
|
|
33519
33844
|
variant: "ghost",
|
|
33520
|
-
"aria-label": "
|
|
33845
|
+
"aria-label": t("richBlockEditor.aria.removeListItem"),
|
|
33521
33846
|
className: cn(
|
|
33522
33847
|
"h-5 w-5 shrink-0 rounded-sm text-muted-foreground p-0 gap-0",
|
|
33523
33848
|
"opacity-0 group-hover/item:opacity-100 hover:bg-muted hover:text-foreground"
|
|
@@ -33539,7 +33864,8 @@ function BlockRow({
|
|
|
33539
33864
|
onClick: addListItem,
|
|
33540
33865
|
children: [
|
|
33541
33866
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "plus", className: "w-3 h-3" }),
|
|
33542
|
-
"
|
|
33867
|
+
" ",
|
|
33868
|
+
t("richBlockEditor.addItem")
|
|
33543
33869
|
]
|
|
33544
33870
|
}
|
|
33545
33871
|
) })
|
|
@@ -33555,8 +33881,8 @@ function BlockRow({
|
|
|
33555
33881
|
tag: "p",
|
|
33556
33882
|
value: block.content ?? "",
|
|
33557
33883
|
readOnly,
|
|
33558
|
-
placeholder: placeholder ?? "
|
|
33559
|
-
ariaLabel: "
|
|
33884
|
+
placeholder: placeholder ?? t("richBlockEditor.placeholder.paragraph"),
|
|
33885
|
+
ariaLabel: t("richBlockEditor.aria.paragraphBlock"),
|
|
33560
33886
|
className: "leading-7",
|
|
33561
33887
|
onValueChange: setContent
|
|
33562
33888
|
}
|
|
@@ -33579,7 +33905,7 @@ function BlockRow({
|
|
|
33579
33905
|
{
|
|
33580
33906
|
type: "button",
|
|
33581
33907
|
variant: "ghost",
|
|
33582
|
-
"aria-label": "
|
|
33908
|
+
"aria-label": t("richBlockEditor.insertParagraphBelow"),
|
|
33583
33909
|
className: cn(
|
|
33584
33910
|
"inline-flex h-6 w-6 items-center justify-center rounded-sm p-0 gap-0",
|
|
33585
33911
|
"text-muted-foreground hover:bg-muted hover:text-foreground",
|
|
@@ -33606,7 +33932,7 @@ function BlockRow({
|
|
|
33606
33932
|
}
|
|
33607
33933
|
);
|
|
33608
33934
|
}
|
|
33609
|
-
var TOOLBAR_ENTRIES,
|
|
33935
|
+
var TOOLBAR_ENTRIES, BLOCK_TYPE_LABEL_KEY, CHANGEABLE_TYPES, _idSeq, BLOCK_TYPES, RichBlockEditor;
|
|
33610
33936
|
var init_RichBlockEditor = __esm({
|
|
33611
33937
|
"components/core/molecules/RichBlockEditor.tsx"() {
|
|
33612
33938
|
"use client";
|
|
@@ -33619,29 +33945,30 @@ var init_RichBlockEditor = __esm({
|
|
|
33619
33945
|
init_Input();
|
|
33620
33946
|
init_Icon();
|
|
33621
33947
|
init_useEventBus();
|
|
33948
|
+
init_useTranslate();
|
|
33622
33949
|
TOOLBAR_ENTRIES = [
|
|
33623
|
-
{ type: "paragraph",
|
|
33624
|
-
{ type: "heading-1",
|
|
33625
|
-
{ type: "heading-2",
|
|
33626
|
-
{ type: "heading-3",
|
|
33627
|
-
{ type: "bullet-list",
|
|
33628
|
-
{ type: "numbered-list",
|
|
33629
|
-
{ type: "quote",
|
|
33630
|
-
{ type: "code",
|
|
33631
|
-
{ type: "divider",
|
|
33632
|
-
{ type: "image",
|
|
33950
|
+
{ type: "paragraph", labelKey: "richBlockEditor.toolbar.text", icon: LucideIcons2.Type },
|
|
33951
|
+
{ type: "heading-1", labelKey: "richBlockEditor.toolbar.h1", icon: LucideIcons2.Heading1 },
|
|
33952
|
+
{ type: "heading-2", labelKey: "richBlockEditor.toolbar.h2", icon: LucideIcons2.Heading2 },
|
|
33953
|
+
{ type: "heading-3", labelKey: "richBlockEditor.toolbar.h3", icon: LucideIcons2.Heading3 },
|
|
33954
|
+
{ type: "bullet-list", labelKey: "richBlockEditor.toolbar.bulletList", icon: LucideIcons2.List },
|
|
33955
|
+
{ type: "numbered-list", labelKey: "richBlockEditor.toolbar.numbered", icon: LucideIcons2.ListOrdered },
|
|
33956
|
+
{ type: "quote", labelKey: "richBlockEditor.toolbar.quote", icon: LucideIcons2.Quote },
|
|
33957
|
+
{ type: "code", labelKey: "richBlockEditor.toolbar.code", icon: LucideIcons2.Code },
|
|
33958
|
+
{ type: "divider", labelKey: "richBlockEditor.toolbar.divider", icon: LucideIcons2.Minus },
|
|
33959
|
+
{ type: "image", labelKey: "richBlockEditor.toolbar.image", icon: LucideIcons2.Image }
|
|
33633
33960
|
];
|
|
33634
|
-
|
|
33635
|
-
paragraph: "
|
|
33636
|
-
"heading-1": "
|
|
33637
|
-
"heading-2": "
|
|
33638
|
-
"heading-3": "
|
|
33639
|
-
"bullet-list": "
|
|
33640
|
-
"numbered-list": "
|
|
33641
|
-
quote: "
|
|
33642
|
-
code: "
|
|
33643
|
-
divider: "
|
|
33644
|
-
image: "
|
|
33961
|
+
BLOCK_TYPE_LABEL_KEY = {
|
|
33962
|
+
paragraph: "richBlockEditor.blockType.paragraph",
|
|
33963
|
+
"heading-1": "richBlockEditor.blockType.heading1",
|
|
33964
|
+
"heading-2": "richBlockEditor.blockType.heading2",
|
|
33965
|
+
"heading-3": "richBlockEditor.blockType.heading3",
|
|
33966
|
+
"bullet-list": "richBlockEditor.blockType.bulletList",
|
|
33967
|
+
"numbered-list": "richBlockEditor.blockType.numberedList",
|
|
33968
|
+
quote: "richBlockEditor.blockType.quote",
|
|
33969
|
+
code: "richBlockEditor.blockType.code",
|
|
33970
|
+
divider: "richBlockEditor.blockType.divider",
|
|
33971
|
+
image: "richBlockEditor.blockType.image"
|
|
33645
33972
|
};
|
|
33646
33973
|
CHANGEABLE_TYPES = [
|
|
33647
33974
|
"paragraph",
|
|
@@ -33675,6 +34002,7 @@ var init_RichBlockEditor = __esm({
|
|
|
33675
34002
|
showToolbar = true,
|
|
33676
34003
|
className
|
|
33677
34004
|
}) => {
|
|
34005
|
+
const { t } = useTranslate();
|
|
33678
34006
|
const [blocks, setBlocks] = React85.useState(
|
|
33679
34007
|
() => normalizeBlocks(initialBlocks)
|
|
33680
34008
|
);
|
|
@@ -33746,25 +34074,26 @@ var init_RichBlockEditor = __esm({
|
|
|
33746
34074
|
Box,
|
|
33747
34075
|
{
|
|
33748
34076
|
role: "toolbar",
|
|
33749
|
-
"aria-label": "
|
|
34077
|
+
"aria-label": t("richBlockEditor.editorToolbar"),
|
|
33750
34078
|
className: cn(
|
|
33751
34079
|
"flex flex-wrap items-center gap-1",
|
|
33752
34080
|
"border-b border-border bg-muted/30 px-2 py-2"
|
|
33753
34081
|
),
|
|
33754
34082
|
children: TOOLBAR_ENTRIES.map((entry) => {
|
|
33755
34083
|
const Icon3 = entry.icon;
|
|
34084
|
+
const entryLabel = t(entry.labelKey);
|
|
33756
34085
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
33757
34086
|
Button,
|
|
33758
34087
|
{
|
|
33759
34088
|
type: "button",
|
|
33760
34089
|
variant: "ghost",
|
|
33761
34090
|
size: "sm",
|
|
33762
|
-
"aria-label":
|
|
33763
|
-
title:
|
|
34091
|
+
"aria-label": t("richBlockEditor.insertEntry", { label: entryLabel }),
|
|
34092
|
+
title: entryLabel,
|
|
33764
34093
|
onClick: () => handleAppend(entry.type),
|
|
33765
34094
|
children: [
|
|
33766
34095
|
/* @__PURE__ */ jsxRuntime.jsx(Icon3, { size: 14 }),
|
|
33767
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { as: "span", variant: "caption", className: "ml-1 hidden text-xs sm:inline", children:
|
|
34096
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { as: "span", variant: "caption", className: "ml-1 hidden text-xs sm:inline", children: entryLabel })
|
|
33768
34097
|
]
|
|
33769
34098
|
},
|
|
33770
34099
|
entry.type
|
|
@@ -33807,6 +34136,7 @@ var init_ReplyTree = __esm({
|
|
|
33807
34136
|
"use client";
|
|
33808
34137
|
init_cn();
|
|
33809
34138
|
init_useEventBus();
|
|
34139
|
+
init_useTranslate();
|
|
33810
34140
|
init_atoms2();
|
|
33811
34141
|
init_VoteStack();
|
|
33812
34142
|
ReplyTreeNode = ({
|
|
@@ -33826,6 +34156,7 @@ var init_ReplyTree = __esm({
|
|
|
33826
34156
|
showActions
|
|
33827
34157
|
}) => {
|
|
33828
34158
|
const eventBus = useEventBus();
|
|
34159
|
+
const { t } = useTranslate();
|
|
33829
34160
|
const hasReplies = !!node.replies && node.replies.length > 0;
|
|
33830
34161
|
const isCollapsed = collapsedSet.has(node.id);
|
|
33831
34162
|
const atMaxDepth = depth >= maxDepth;
|
|
@@ -33872,7 +34203,7 @@ var init_ReplyTree = __esm({
|
|
|
33872
34203
|
variant: "ghost",
|
|
33873
34204
|
size: "sm",
|
|
33874
34205
|
onClick: handleToggle,
|
|
33875
|
-
"aria-label": isCollapsed ? "
|
|
34206
|
+
"aria-label": isCollapsed ? t("replyTree.expandReplies") : t("replyTree.collapseReplies"),
|
|
33876
34207
|
"aria-expanded": !isCollapsed,
|
|
33877
34208
|
leftIcon: isCollapsed ? "chevron-right" : "chevron-down",
|
|
33878
34209
|
className: cn(
|
|
@@ -33913,7 +34244,7 @@ var init_ReplyTree = __esm({
|
|
|
33913
34244
|
onVote: handleVote,
|
|
33914
34245
|
size: "sm",
|
|
33915
34246
|
variant: "horizontal",
|
|
33916
|
-
label:
|
|
34247
|
+
label: t("replyTree.voteOnReplyBy", { author: node.authorName })
|
|
33917
34248
|
}
|
|
33918
34249
|
),
|
|
33919
34250
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -33923,8 +34254,8 @@ var init_ReplyTree = __esm({
|
|
|
33923
34254
|
size: "sm",
|
|
33924
34255
|
leftIcon: "message-square",
|
|
33925
34256
|
onClick: handleReply,
|
|
33926
|
-
"aria-label":
|
|
33927
|
-
children: "
|
|
34257
|
+
"aria-label": t("replyTree.replyTo", { author: node.authorName }),
|
|
34258
|
+
children: t("replyTree.reply")
|
|
33928
34259
|
}
|
|
33929
34260
|
),
|
|
33930
34261
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -33934,8 +34265,8 @@ var init_ReplyTree = __esm({
|
|
|
33934
34265
|
size: "sm",
|
|
33935
34266
|
leftIcon: "flag",
|
|
33936
34267
|
onClick: handleFlag,
|
|
33937
|
-
"aria-label":
|
|
33938
|
-
children: "
|
|
34268
|
+
"aria-label": t("replyTree.flagReplyBy", { author: node.authorName }),
|
|
34269
|
+
children: t("replyTree.flag")
|
|
33939
34270
|
}
|
|
33940
34271
|
)
|
|
33941
34272
|
] }),
|
|
@@ -33946,9 +34277,9 @@ var init_ReplyTree = __esm({
|
|
|
33946
34277
|
inputType: "textarea",
|
|
33947
34278
|
rows: 2,
|
|
33948
34279
|
value: draft,
|
|
33949
|
-
placeholder:
|
|
34280
|
+
placeholder: t("replyTree.replyToPlaceholder", { author: node.authorName }),
|
|
33950
34281
|
onChange: (e) => setDraft(e.target.value),
|
|
33951
|
-
"aria-label":
|
|
34282
|
+
"aria-label": t("replyTree.replyTo", { author: node.authorName })
|
|
33952
34283
|
}
|
|
33953
34284
|
),
|
|
33954
34285
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex flex-row gap-2 items-center", children: [
|
|
@@ -33960,10 +34291,10 @@ var init_ReplyTree = __esm({
|
|
|
33960
34291
|
leftIcon: "send",
|
|
33961
34292
|
onClick: handleSubmitReply,
|
|
33962
34293
|
disabled: !draft.trim(),
|
|
33963
|
-
children: "
|
|
34294
|
+
children: t("replyTree.send")
|
|
33964
34295
|
}
|
|
33965
34296
|
),
|
|
33966
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", onClick: handleCancelReply, children: "
|
|
34297
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", onClick: handleCancelReply, children: t("common.cancel") })
|
|
33967
34298
|
] })
|
|
33968
34299
|
] }),
|
|
33969
34300
|
hasReplies && !isCollapsed && (atMaxDepth ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -33977,7 +34308,7 @@ var init_ReplyTree = __esm({
|
|
|
33977
34308
|
"self-start gap-1 px-0 h-auto",
|
|
33978
34309
|
"text-sm text-primary hover:underline hover:bg-transparent"
|
|
33979
34310
|
),
|
|
33980
|
-
children: "
|
|
34311
|
+
children: t("replyTree.continueThread")
|
|
33981
34312
|
}
|
|
33982
34313
|
) : /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex flex-col gap-2 mt-1", children: node.replies.map((child) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
33983
34314
|
ReplyTreeNode,
|
|
@@ -34016,6 +34347,7 @@ var init_ReplyTree = __esm({
|
|
|
34016
34347
|
showActions = true,
|
|
34017
34348
|
className
|
|
34018
34349
|
}) => {
|
|
34350
|
+
const { t } = useTranslate();
|
|
34019
34351
|
const nodeList = Array.isArray(nodes) ? nodes : nodes ? [nodes] : [];
|
|
34020
34352
|
const [collapsedSet, setCollapsedSet] = React85.useState(() => {
|
|
34021
34353
|
const acc = /* @__PURE__ */ new Set();
|
|
@@ -34034,7 +34366,7 @@ var init_ReplyTree = __esm({
|
|
|
34034
34366
|
});
|
|
34035
34367
|
}, []);
|
|
34036
34368
|
if (nodeList.length === 0) {
|
|
34037
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("text-sm text-muted-foreground", className), children: "
|
|
34369
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("text-sm text-muted-foreground", className), children: t("replyTree.noRepliesYet") });
|
|
34038
34370
|
}
|
|
34039
34371
|
return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("flex flex-col gap-2 min-w-0", className), children: nodeList.map((node) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
34040
34372
|
ReplyTreeNode,
|
|
@@ -34112,6 +34444,7 @@ var init_VersionDiff = __esm({
|
|
|
34112
34444
|
"use client";
|
|
34113
34445
|
init_cn();
|
|
34114
34446
|
init_useEventBus();
|
|
34447
|
+
init_useTranslate();
|
|
34115
34448
|
init_atoms2();
|
|
34116
34449
|
init_Stack();
|
|
34117
34450
|
INLINE_STYLES = {
|
|
@@ -34134,6 +34467,7 @@ var init_VersionDiff = __esm({
|
|
|
34134
34467
|
language,
|
|
34135
34468
|
className
|
|
34136
34469
|
}) => {
|
|
34470
|
+
const { t } = useTranslate();
|
|
34137
34471
|
const eventBus = useEventBus();
|
|
34138
34472
|
const revisions = Array.isArray(revisionsProp) ? revisionsProp : [];
|
|
34139
34473
|
const fallbackBefore = revisions[0]?.id ?? "";
|
|
@@ -34215,24 +34549,24 @@ var init_VersionDiff = __esm({
|
|
|
34215
34549
|
children: [
|
|
34216
34550
|
/* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", align: "center", className: "flex-wrap", children: [
|
|
34217
34551
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "git-commit", size: "sm", className: "text-muted-foreground" }),
|
|
34218
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "whitespace-nowrap", children: "
|
|
34552
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "whitespace-nowrap", children: t("versionDiff.compare") }),
|
|
34219
34553
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "min-w-0 md:min-w-[160px]", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
34220
34554
|
Select,
|
|
34221
34555
|
{
|
|
34222
34556
|
options,
|
|
34223
34557
|
value: activeBeforeId,
|
|
34224
34558
|
onChange: handleBeforeChange,
|
|
34225
|
-
"aria-label": "
|
|
34559
|
+
"aria-label": t("versionDiff.beforeRevision")
|
|
34226
34560
|
}
|
|
34227
34561
|
) }),
|
|
34228
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "secondary", children: "to" }),
|
|
34562
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "secondary", children: t("versionDiff.to") }),
|
|
34229
34563
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "min-w-0 md:min-w-[160px]", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
34230
34564
|
Select,
|
|
34231
34565
|
{
|
|
34232
34566
|
options,
|
|
34233
34567
|
value: activeAfterId,
|
|
34234
34568
|
onChange: handleAfterChange,
|
|
34235
|
-
"aria-label": "
|
|
34569
|
+
"aria-label": t("versionDiff.afterRevision")
|
|
34236
34570
|
}
|
|
34237
34571
|
) }),
|
|
34238
34572
|
language && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "default", children: language }),
|
|
@@ -34253,7 +34587,7 @@ var init_VersionDiff = __esm({
|
|
|
34253
34587
|
size: "sm",
|
|
34254
34588
|
icon: activeView === "side-by-side" ? "align-left" : "columns",
|
|
34255
34589
|
onClick: handleViewToggle,
|
|
34256
|
-
"aria-label": activeView === "side-by-side" ? "
|
|
34590
|
+
"aria-label": activeView === "side-by-side" ? t("versionDiff.switchToInline") : t("versionDiff.switchToSideBySide")
|
|
34257
34591
|
}
|
|
34258
34592
|
),
|
|
34259
34593
|
(onRevert || revertEvent) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -34263,7 +34597,7 @@ var init_VersionDiff = __esm({
|
|
|
34263
34597
|
size: "sm",
|
|
34264
34598
|
icon: "rotate-ccw",
|
|
34265
34599
|
onClick: handleRevert,
|
|
34266
|
-
children: "
|
|
34600
|
+
children: t("versionDiff.revert")
|
|
34267
34601
|
}
|
|
34268
34602
|
)
|
|
34269
34603
|
] })
|
|
@@ -34280,12 +34614,12 @@ var init_VersionDiff = __esm({
|
|
|
34280
34614
|
children: [
|
|
34281
34615
|
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "caption", color: "secondary", className: "truncate", children: [
|
|
34282
34616
|
beforeRev?.label,
|
|
34283
|
-
beforeRev?.author ?
|
|
34617
|
+
beforeRev?.author ? t("versionDiff.byAuthor", { author: beforeRev.author }) : "",
|
|
34284
34618
|
beforeRev?.timestamp ? ` (${beforeRev.timestamp})` : ""
|
|
34285
34619
|
] }),
|
|
34286
34620
|
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "caption", color: "secondary", className: "truncate", children: [
|
|
34287
34621
|
afterRev?.label,
|
|
34288
|
-
afterRev?.author ?
|
|
34622
|
+
afterRev?.author ? t("versionDiff.byAuthor", { author: afterRev.author }) : "",
|
|
34289
34623
|
afterRev?.timestamp ? ` (${afterRev.timestamp})` : ""
|
|
34290
34624
|
] })
|
|
34291
34625
|
]
|
|
@@ -34678,10 +35012,12 @@ var init_DocPagination = __esm({
|
|
|
34678
35012
|
}
|
|
34679
35013
|
});
|
|
34680
35014
|
function DocSearch({
|
|
34681
|
-
placeholder
|
|
35015
|
+
placeholder,
|
|
34682
35016
|
onSearch,
|
|
34683
35017
|
className
|
|
34684
35018
|
}) {
|
|
35019
|
+
const { t } = useTranslate();
|
|
35020
|
+
const resolvedPlaceholder = placeholder ?? t("docSearch.placeholder");
|
|
34685
35021
|
const [query, setQuery] = React85.useState("");
|
|
34686
35022
|
const [results, setResults] = React85.useState([]);
|
|
34687
35023
|
const [isOpen, setIsOpen] = React85.useState(false);
|
|
@@ -34788,7 +35124,7 @@ function DocSearch({
|
|
|
34788
35124
|
Input,
|
|
34789
35125
|
{
|
|
34790
35126
|
inputType: "search",
|
|
34791
|
-
placeholder,
|
|
35127
|
+
placeholder: resolvedPlaceholder,
|
|
34792
35128
|
value: query,
|
|
34793
35129
|
onChange: handleChange,
|
|
34794
35130
|
onFocus: handleFocus,
|
|
@@ -34853,6 +35189,7 @@ var init_DocSearch = __esm({
|
|
|
34853
35189
|
init_Typography();
|
|
34854
35190
|
init_Icon();
|
|
34855
35191
|
init_Input();
|
|
35192
|
+
init_useTranslate();
|
|
34856
35193
|
}
|
|
34857
35194
|
});
|
|
34858
35195
|
var DocSidebarCategory, DocSidebar;
|
|
@@ -36857,8 +37194,8 @@ var init_SignaturePad = __esm({
|
|
|
36857
37194
|
init_useEventBus();
|
|
36858
37195
|
init_useTranslate();
|
|
36859
37196
|
SignaturePad = ({
|
|
36860
|
-
label
|
|
36861
|
-
helperText
|
|
37197
|
+
label,
|
|
37198
|
+
helperText,
|
|
36862
37199
|
strokeColor,
|
|
36863
37200
|
strokeWidth = 2,
|
|
36864
37201
|
height = 200,
|
|
@@ -36874,6 +37211,8 @@ var init_SignaturePad = __esm({
|
|
|
36874
37211
|
}) => {
|
|
36875
37212
|
const eventBus = useEventBus();
|
|
36876
37213
|
const { t } = useTranslate();
|
|
37214
|
+
const resolvedLabel = label ?? t("signaturePad.label");
|
|
37215
|
+
const resolvedHelperText = helperText ?? t("signaturePad.helperText");
|
|
36877
37216
|
const canvasRef = React85.useRef(null);
|
|
36878
37217
|
const [isDrawing, setIsDrawing] = React85.useState(false);
|
|
36879
37218
|
const [hasSignature, setHasSignature] = React85.useState(!!value);
|
|
@@ -36976,7 +37315,7 @@ var init_SignaturePad = __esm({
|
|
|
36976
37315
|
);
|
|
36977
37316
|
}
|
|
36978
37317
|
return /* @__PURE__ */ jsxRuntime.jsx(Card, { className: cn("p-4", className), children: /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "sm", children: [
|
|
36979
|
-
|
|
37318
|
+
resolvedLabel && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "label", weight: "medium", children: resolvedLabel }),
|
|
36980
37319
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
36981
37320
|
Box,
|
|
36982
37321
|
{
|
|
@@ -37005,7 +37344,7 @@ var init_SignaturePad = __esm({
|
|
|
37005
37344
|
)
|
|
37006
37345
|
}
|
|
37007
37346
|
),
|
|
37008
|
-
|
|
37347
|
+
resolvedHelperText && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", color: "secondary", children: resolvedHelperText }),
|
|
37009
37348
|
!readOnly && /* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", justify: "end", children: [
|
|
37010
37349
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
37011
37350
|
Button,
|
|
@@ -37015,7 +37354,7 @@ var init_SignaturePad = __esm({
|
|
|
37015
37354
|
icon: LucideIcons2.Eraser,
|
|
37016
37355
|
onClick: clearSignature,
|
|
37017
37356
|
disabled: !hasSignature,
|
|
37018
|
-
children: "
|
|
37357
|
+
children: t("signaturePad.clear")
|
|
37019
37358
|
}
|
|
37020
37359
|
),
|
|
37021
37360
|
signEvent && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -37026,7 +37365,7 @@ var init_SignaturePad = __esm({
|
|
|
37026
37365
|
icon: LucideIcons2.Check,
|
|
37027
37366
|
onClick: confirmSignature,
|
|
37028
37367
|
disabled: !hasSignature,
|
|
37029
|
-
children: "
|
|
37368
|
+
children: t("signaturePad.confirm")
|
|
37030
37369
|
}
|
|
37031
37370
|
)
|
|
37032
37371
|
] })
|
|
@@ -41471,6 +41810,7 @@ function MasterDetail({
|
|
|
41471
41810
|
className,
|
|
41472
41811
|
...rest
|
|
41473
41812
|
}) {
|
|
41813
|
+
const { t } = useTranslate();
|
|
41474
41814
|
const loading = externalLoading ?? false;
|
|
41475
41815
|
const isLoading = externalIsLoading ?? false;
|
|
41476
41816
|
const error = externalError ?? null;
|
|
@@ -41483,8 +41823,8 @@ function MasterDetail({
|
|
|
41483
41823
|
isLoading: loading || isLoading,
|
|
41484
41824
|
error,
|
|
41485
41825
|
className,
|
|
41486
|
-
emptyTitle: "
|
|
41487
|
-
emptyDescription: "
|
|
41826
|
+
emptyTitle: t("table.empty.title"),
|
|
41827
|
+
emptyDescription: t("empty.createFirst"),
|
|
41488
41828
|
...rest
|
|
41489
41829
|
}
|
|
41490
41830
|
);
|
|
@@ -41493,6 +41833,7 @@ var init_MasterDetail = __esm({
|
|
|
41493
41833
|
"components/core/organisms/MasterDetail.tsx"() {
|
|
41494
41834
|
"use client";
|
|
41495
41835
|
init_DataTable();
|
|
41836
|
+
init_useTranslate();
|
|
41496
41837
|
MasterDetail.displayName = "MasterDetail";
|
|
41497
41838
|
}
|
|
41498
41839
|
});
|
|
@@ -41501,14 +41842,18 @@ var init_MasterDetailLayout = __esm({
|
|
|
41501
41842
|
"components/core/organisms/layout/MasterDetailLayout.tsx"() {
|
|
41502
41843
|
init_cn();
|
|
41503
41844
|
init_Typography();
|
|
41504
|
-
|
|
41505
|
-
|
|
41506
|
-
{
|
|
41507
|
-
|
|
41508
|
-
|
|
41509
|
-
|
|
41510
|
-
|
|
41511
|
-
|
|
41845
|
+
init_useTranslate();
|
|
41846
|
+
DefaultEmptyDetail = () => {
|
|
41847
|
+
const { t } = useTranslate();
|
|
41848
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center h-full border-2 border-dashed border-border", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
41849
|
+
Typography,
|
|
41850
|
+
{
|
|
41851
|
+
variant: "body2",
|
|
41852
|
+
className: "text-muted-foreground",
|
|
41853
|
+
children: t("masterDetail.selectItem")
|
|
41854
|
+
}
|
|
41855
|
+
) });
|
|
41856
|
+
};
|
|
41512
41857
|
MasterDetailLayout = ({
|
|
41513
41858
|
master,
|
|
41514
41859
|
detail,
|
|
@@ -41635,7 +41980,7 @@ var init_MediaGallery = __esm({
|
|
|
41635
41980
|
{
|
|
41636
41981
|
icon: LucideIcons2.Image,
|
|
41637
41982
|
title: t("display.noMedia"),
|
|
41638
|
-
description: "
|
|
41983
|
+
description: t("mediaGallery.noMediaDescription"),
|
|
41639
41984
|
className
|
|
41640
41985
|
}
|
|
41641
41986
|
);
|
|
@@ -41652,7 +41997,7 @@ var init_MediaGallery = __esm({
|
|
|
41652
41997
|
size: "sm",
|
|
41653
41998
|
icon: LucideIcons2.Upload,
|
|
41654
41999
|
action: "MEDIA_UPLOAD",
|
|
41655
|
-
children: "
|
|
42000
|
+
children: t("mediaGallery.upload")
|
|
41656
42001
|
}
|
|
41657
42002
|
),
|
|
41658
42003
|
actions?.map((action, idx) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -41666,10 +42011,7 @@ var init_MediaGallery = __esm({
|
|
|
41666
42011
|
))
|
|
41667
42012
|
] })
|
|
41668
42013
|
] }),
|
|
41669
|
-
selectable && selectedItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(HStack, { gap: "sm", align: "center", children: /* @__PURE__ */ jsxRuntime.
|
|
41670
|
-
selectedItems.length,
|
|
41671
|
-
" selected"
|
|
41672
|
-
] }) }),
|
|
42014
|
+
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 }) }) }),
|
|
41673
42015
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
41674
42016
|
Box,
|
|
41675
42017
|
{
|
|
@@ -42524,7 +42866,7 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
42524
42866
|
EmptyState,
|
|
42525
42867
|
{
|
|
42526
42868
|
title: t("debug.noActiveTraits"),
|
|
42527
|
-
description: "
|
|
42869
|
+
description: t("debug.traitsMountHint"),
|
|
42528
42870
|
className: "py-8"
|
|
42529
42871
|
}
|
|
42530
42872
|
);
|
|
@@ -42534,14 +42876,11 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
42534
42876
|
header: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 w-full", children: [
|
|
42535
42877
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", weight: "semibold", className: "text-purple-600 dark:text-purple-400", children: trait.name }),
|
|
42536
42878
|
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "success", size: "sm", children: trait.currentState }),
|
|
42537
|
-
/* @__PURE__ */ jsxRuntime.
|
|
42538
|
-
trait.transitionCount,
|
|
42539
|
-
" transitions"
|
|
42540
|
-
] })
|
|
42879
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-500 ml-auto", children: t("debug.transitionsCount", { count: trait.transitionCount }) })
|
|
42541
42880
|
] }),
|
|
42542
42881
|
content: /* @__PURE__ */ jsxRuntime.jsxs(Stack, { gap: "sm", children: [
|
|
42543
42882
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42544
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: "
|
|
42883
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.states") }),
|
|
42545
42884
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1", children: trait.states.map((state) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
42546
42885
|
Badge,
|
|
42547
42886
|
{
|
|
@@ -42553,7 +42892,7 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
42553
42892
|
)) })
|
|
42554
42893
|
] }),
|
|
42555
42894
|
trait.transitions.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42556
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: "
|
|
42895
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.transitions") }),
|
|
42557
42896
|
/* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: trait.transitions.map((t2, i) => /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "font-mono", children: [
|
|
42558
42897
|
t2.from,
|
|
42559
42898
|
" \u2192 ",
|
|
@@ -42572,7 +42911,7 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
42572
42911
|
] }, i)) })
|
|
42573
42912
|
] }),
|
|
42574
42913
|
trait.guards.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42575
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: "
|
|
42914
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.guards") }),
|
|
42576
42915
|
/* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: trait.guards.map((g, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
42577
42916
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", children: g.name }),
|
|
42578
42917
|
/* @__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" })
|
|
@@ -42678,7 +43017,7 @@ function EntitiesTab({ snapshot }) {
|
|
|
42678
43017
|
EmptyState,
|
|
42679
43018
|
{
|
|
42680
43019
|
title: t("debug.noEntityData"),
|
|
42681
|
-
description: "
|
|
43020
|
+
description: t("debug.debugModeHint"),
|
|
42682
43021
|
className: "py-8"
|
|
42683
43022
|
}
|
|
42684
43023
|
);
|
|
@@ -42691,7 +43030,7 @@ function EntitiesTab({ snapshot }) {
|
|
|
42691
43030
|
EmptyState,
|
|
42692
43031
|
{
|
|
42693
43032
|
title: t("debug.noEntities"),
|
|
42694
|
-
description: "
|
|
43033
|
+
description: t("debug.entitiesSpawnHint"),
|
|
42695
43034
|
className: "py-8"
|
|
42696
43035
|
}
|
|
42697
43036
|
);
|
|
@@ -42699,7 +43038,7 @@ function EntitiesTab({ snapshot }) {
|
|
|
42699
43038
|
const singletonItems = singletonEntries.map(([name, data]) => ({
|
|
42700
43039
|
id: `singleton-${name}`,
|
|
42701
43040
|
header: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
42702
|
-
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "primary", size: "sm", children: "
|
|
43041
|
+
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "primary", size: "sm", children: t("debug.singleton") }),
|
|
42703
43042
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", weight: "semibold", className: "text-sky-600 dark:text-sky-400", children: name })
|
|
42704
43043
|
] }),
|
|
42705
43044
|
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) })
|
|
@@ -42717,31 +43056,19 @@ function EntitiesTab({ snapshot }) {
|
|
|
42717
43056
|
}));
|
|
42718
43057
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--entities", children: [
|
|
42719
43058
|
singletonItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4", children: [
|
|
42720
|
-
/* @__PURE__ */ jsxRuntime.
|
|
42721
|
-
"Singletons (",
|
|
42722
|
-
singletonItems.length,
|
|
42723
|
-
")"
|
|
42724
|
-
] }),
|
|
43059
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.singletonsCount", { count: singletonItems.length }) }),
|
|
42725
43060
|
/* @__PURE__ */ jsxRuntime.jsx(Accordion, { items: singletonItems, multiple: true })
|
|
42726
43061
|
] }),
|
|
42727
43062
|
runtimeItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4", children: [
|
|
42728
|
-
/* @__PURE__ */ jsxRuntime.
|
|
42729
|
-
"Runtime (",
|
|
42730
|
-
runtimeEntities.length,
|
|
42731
|
-
")"
|
|
42732
|
-
] }),
|
|
43063
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.runtimeCount", { count: runtimeEntities.length }) }),
|
|
42733
43064
|
/* @__PURE__ */ jsxRuntime.jsx(Accordion, { items: runtimeItems, multiple: true }),
|
|
42734
|
-
runtimeEntities.length > 20 && /* @__PURE__ */ jsxRuntime.
|
|
42735
|
-
"+",
|
|
42736
|
-
runtimeEntities.length - 20,
|
|
42737
|
-
" more entities"
|
|
42738
|
-
] })
|
|
43065
|
+
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 }) })
|
|
42739
43066
|
] }),
|
|
42740
43067
|
persistentEntries.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42741
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: "
|
|
43068
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.persistent") }),
|
|
42742
43069
|
/* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: persistentEntries.map(([type, info]) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between py-1", children: [
|
|
42743
43070
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", children: type }),
|
|
42744
|
-
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: info.loaded ? "success" : "default", size: "sm", children: info.loaded ?
|
|
43071
|
+
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: info.loaded ? "success" : "default", size: "sm", children: info.loaded ? t("debug.loadedCount", { count: info.count }) : t("debug.notLoaded") })
|
|
42745
43072
|
] }, type)) })
|
|
42746
43073
|
] })
|
|
42747
43074
|
] });
|
|
@@ -42785,7 +43112,7 @@ function EventFlowTab({ events: events2 }) {
|
|
|
42785
43112
|
EmptyState,
|
|
42786
43113
|
{
|
|
42787
43114
|
title: t("debug.noEventsYet"),
|
|
42788
|
-
description: "
|
|
43115
|
+
description: t("debug.eventsExecuteHint"),
|
|
42789
43116
|
className: "py-8"
|
|
42790
43117
|
}
|
|
42791
43118
|
);
|
|
@@ -42796,17 +43123,13 @@ function EventFlowTab({ events: events2 }) {
|
|
|
42796
43123
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--events", children: [
|
|
42797
43124
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 mb-3 flex-wrap", children: [
|
|
42798
43125
|
/* @__PURE__ */ jsxRuntime.jsxs(ButtonGroup, { children: [
|
|
42799
|
-
/* @__PURE__ */ jsxRuntime.
|
|
43126
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
42800
43127
|
Button,
|
|
42801
43128
|
{
|
|
42802
43129
|
size: "sm",
|
|
42803
43130
|
variant: filter === "all" ? "primary" : "secondary",
|
|
42804
43131
|
onClick: () => setFilter("all"),
|
|
42805
|
-
children:
|
|
42806
|
-
"All (",
|
|
42807
|
-
events2.length,
|
|
42808
|
-
")"
|
|
42809
|
-
]
|
|
43132
|
+
children: t("debug.allCount", { count: events2.length })
|
|
42810
43133
|
}
|
|
42811
43134
|
),
|
|
42812
43135
|
eventTypes.map((type) => {
|
|
@@ -42836,7 +43159,7 @@ function EventFlowTab({ events: events2 }) {
|
|
|
42836
43159
|
onChange: (e) => setAutoScroll(e.target.checked)
|
|
42837
43160
|
}
|
|
42838
43161
|
),
|
|
42839
|
-
"
|
|
43162
|
+
t("debug.autoScroll")
|
|
42840
43163
|
] })
|
|
42841
43164
|
] }),
|
|
42842
43165
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -42894,7 +43217,7 @@ function GuardsPanel({ guards }) {
|
|
|
42894
43217
|
EmptyState,
|
|
42895
43218
|
{
|
|
42896
43219
|
title: t("debug.noGuardEvaluations"),
|
|
42897
|
-
description: "
|
|
43220
|
+
description: t("debug.guardEvaluationsHint"),
|
|
42898
43221
|
className: "py-8"
|
|
42899
43222
|
}
|
|
42900
43223
|
);
|
|
@@ -42925,15 +43248,15 @@ function GuardsPanel({ guards }) {
|
|
|
42925
43248
|
] }),
|
|
42926
43249
|
content: /* @__PURE__ */ jsxRuntime.jsxs(Stack, { gap: "sm", children: [
|
|
42927
43250
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42928
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: "
|
|
43251
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: t("debug.expression") }),
|
|
42929
43252
|
/* @__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 })
|
|
42930
43253
|
] }),
|
|
42931
43254
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42932
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: "
|
|
43255
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: t("debug.inputs") }),
|
|
42933
43256
|
/* @__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) })
|
|
42934
43257
|
] }),
|
|
42935
43258
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42936
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: "
|
|
43259
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: t("debug.trait") }),
|
|
42937
43260
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", children: guard.context.traitName })
|
|
42938
43261
|
] })
|
|
42939
43262
|
] })
|
|
@@ -42951,9 +43274,9 @@ function GuardsPanel({ guards }) {
|
|
|
42951
43274
|
] })
|
|
42952
43275
|
] }),
|
|
42953
43276
|
/* @__PURE__ */ jsxRuntime.jsxs(ButtonGroup, { children: [
|
|
42954
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", variant: filter === "all" ? "primary" : "secondary", onClick: () => setFilter("all"), children: "
|
|
42955
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", variant: filter === "passed" ? "primary" : "secondary", onClick: () => setFilter("passed"), children: "
|
|
42956
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", variant: filter === "failed" ? "primary" : "secondary", onClick: () => setFilter("failed"), children: "
|
|
43277
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", variant: filter === "all" ? "primary" : "secondary", onClick: () => setFilter("all"), children: t("debug.filterAll") }),
|
|
43278
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", variant: filter === "passed" ? "primary" : "secondary", onClick: () => setFilter("passed"), children: t("debug.filterPassed") }),
|
|
43279
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", variant: filter === "failed" ? "primary" : "secondary", onClick: () => setFilter("failed"), children: t("debug.filterFailed") })
|
|
42957
43280
|
] })
|
|
42958
43281
|
] }),
|
|
42959
43282
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-80 overflow-y-auto", children: /* @__PURE__ */ jsxRuntime.jsx(Accordion, { items: accordionItems }) })
|
|
@@ -43079,7 +43402,7 @@ function TransitionTimeline({ transitions }) {
|
|
|
43079
43402
|
EmptyState,
|
|
43080
43403
|
{
|
|
43081
43404
|
title: t("debug.noTransitionsRecorded"),
|
|
43082
|
-
description: "
|
|
43405
|
+
description: t("debug.transitionsProcessHint"),
|
|
43083
43406
|
className: "py-8"
|
|
43084
43407
|
}
|
|
43085
43408
|
);
|
|
@@ -43096,10 +43419,7 @@ function TransitionTimeline({ transitions }) {
|
|
|
43096
43419
|
const sorted = [...transitions].reverse();
|
|
43097
43420
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--timeline", children: [
|
|
43098
43421
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between mb-2", children: [
|
|
43099
|
-
/* @__PURE__ */ jsxRuntime.
|
|
43100
|
-
transitions.length,
|
|
43101
|
-
" transitions recorded"
|
|
43102
|
-
] }),
|
|
43422
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-500", children: t("debug.transitionsRecorded", { count: transitions.length }) }),
|
|
43103
43423
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-1 text-xs text-gray-500 cursor-pointer", children: [
|
|
43104
43424
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
43105
43425
|
Checkbox,
|
|
@@ -43108,7 +43428,7 @@ function TransitionTimeline({ transitions }) {
|
|
|
43108
43428
|
onChange: (e) => setAutoScroll(e.target.checked)
|
|
43109
43429
|
}
|
|
43110
43430
|
),
|
|
43111
|
-
"
|
|
43431
|
+
t("debug.autoScroll")
|
|
43112
43432
|
] })
|
|
43113
43433
|
] }),
|
|
43114
43434
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -43151,15 +43471,13 @@ function TransitionTimeline({ transitions }) {
|
|
|
43151
43471
|
variant: trace.guardResult ? "success" : "danger",
|
|
43152
43472
|
size: "sm",
|
|
43153
43473
|
children: [
|
|
43154
|
-
"
|
|
43474
|
+
t("debug.guardLabel"),
|
|
43475
|
+
" ",
|
|
43155
43476
|
trace.guardResult ? "\u2713" : "\u2717"
|
|
43156
43477
|
]
|
|
43157
43478
|
}
|
|
43158
43479
|
),
|
|
43159
|
-
/* @__PURE__ */ jsxRuntime.
|
|
43160
|
-
trace.effects.length,
|
|
43161
|
-
" effects"
|
|
43162
|
-
] })
|
|
43480
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-400 ml-auto", children: t("debug.effectsCount", { count: trace.effects.length }) })
|
|
43163
43481
|
] }),
|
|
43164
43482
|
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: [
|
|
43165
43483
|
/* @__PURE__ */ jsxRuntime.jsx(EffectBadge, { effect }),
|
|
@@ -43208,13 +43526,13 @@ function ServerBridgeTab({ bridge }) {
|
|
|
43208
43526
|
EmptyState,
|
|
43209
43527
|
{
|
|
43210
43528
|
title: t("debug.noBridgeData"),
|
|
43211
|
-
description: "
|
|
43529
|
+
description: t("debug.bridgeInitHint"),
|
|
43212
43530
|
className: "py-8"
|
|
43213
43531
|
}
|
|
43214
43532
|
);
|
|
43215
43533
|
}
|
|
43216
43534
|
const formatTime4 = (ts) => {
|
|
43217
|
-
if (ts === 0) return "
|
|
43535
|
+
if (ts === 0) return t("debug.never");
|
|
43218
43536
|
const d = new Date(ts);
|
|
43219
43537
|
return d.toLocaleTimeString("en-US", {
|
|
43220
43538
|
hour12: false,
|
|
@@ -43227,14 +43545,14 @@ function ServerBridgeTab({ bridge }) {
|
|
|
43227
43545
|
/* @__PURE__ */ jsxRuntime.jsxs(Card, { className: "p-3", children: [
|
|
43228
43546
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 mb-3", children: [
|
|
43229
43547
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: `w-3 h-3 rounded-full ${bridge.connected ? "bg-green-500 animate-pulse" : "bg-red-500"}` }),
|
|
43230
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h6", children: bridge.connected ? "
|
|
43548
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h6", children: bridge.connected ? t("debug.connected") : t("debug.disconnected") })
|
|
43231
43549
|
] }),
|
|
43232
43550
|
/* @__PURE__ */ jsxRuntime.jsxs(Stack, { gap: "xs", children: [
|
|
43233
43551
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
43234
43552
|
StatRow,
|
|
43235
43553
|
{
|
|
43236
43554
|
label: t("debug.status"),
|
|
43237
|
-
value: bridge.connected ? "
|
|
43555
|
+
value: bridge.connected ? t("debug.connected") : t("debug.disconnected"),
|
|
43238
43556
|
variant: bridge.connected ? "success" : "danger"
|
|
43239
43557
|
}
|
|
43240
43558
|
),
|
|
@@ -43262,13 +43580,10 @@ function ServerBridgeTab({ bridge }) {
|
|
|
43262
43580
|
] })
|
|
43263
43581
|
] }),
|
|
43264
43582
|
bridge.lastError && /* @__PURE__ */ jsxRuntime.jsxs(Card, { className: "p-3 border-red-200 dark:border-red-800 bg-red-50 dark:bg-red-950", children: [
|
|
43265
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "semibold", className: "text-red-600 dark:text-red-400 mb-1", children: "
|
|
43583
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "semibold", className: "text-red-600 dark:text-red-400 mb-1", children: t("debug.lastError") }),
|
|
43266
43584
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-red-500 font-mono break-all", children: bridge.lastError })
|
|
43267
43585
|
] }),
|
|
43268
|
-
bridge.connected && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-center py-2", children: /* @__PURE__ */ jsxRuntime.
|
|
43269
|
-
bridge.eventsForwarded + bridge.eventsReceived,
|
|
43270
|
-
" total events processed"
|
|
43271
|
-
] }) })
|
|
43586
|
+
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 }) }) })
|
|
43272
43587
|
] }) });
|
|
43273
43588
|
}
|
|
43274
43589
|
var init_ServerBridgeTab = __esm({
|
|
@@ -43378,7 +43693,7 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
43378
43693
|
EmptyState,
|
|
43379
43694
|
{
|
|
43380
43695
|
title: t("debug.noActiveTraits"),
|
|
43381
|
-
description: "
|
|
43696
|
+
description: t("debug.traitsInitHint"),
|
|
43382
43697
|
className: "py-8"
|
|
43383
43698
|
}
|
|
43384
43699
|
);
|
|
@@ -43395,7 +43710,7 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
43395
43710
|
};
|
|
43396
43711
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--dispatch", children: [
|
|
43397
43712
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3", children: [
|
|
43398
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
43713
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.activeStates") }),
|
|
43399
43714
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1", children: traits2.map((trait) => /* @__PURE__ */ jsxRuntime.jsxs(Badge, { variant: "success", size: "sm", children: [
|
|
43400
43715
|
trait.name,
|
|
43401
43716
|
": ",
|
|
@@ -43403,8 +43718,8 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
43403
43718
|
] }, trait.id)) })
|
|
43404
43719
|
] }),
|
|
43405
43720
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3", children: [
|
|
43406
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
43407
|
-
availableEvents.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-400 italic", children: "
|
|
43721
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.availableEvents") }),
|
|
43722
|
+
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: [
|
|
43408
43723
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
43409
43724
|
Button,
|
|
43410
43725
|
{
|
|
@@ -43416,15 +43731,15 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
43416
43731
|
}
|
|
43417
43732
|
),
|
|
43418
43733
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-500", children: transitions.map((t2) => `${t2.from} -> ${t2.to}`).join(", ") }),
|
|
43419
|
-
transitions.some((
|
|
43734
|
+
transitions.some((tr) => tr.guard) && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "warning", size: "sm", children: t("debug.guarded") })
|
|
43420
43735
|
] }, event)) })
|
|
43421
43736
|
] }),
|
|
43422
43737
|
unavailableEvents.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3", children: [
|
|
43423
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
43738
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.otherEvents") }),
|
|
43424
43739
|
/* @__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)) })
|
|
43425
43740
|
] }),
|
|
43426
43741
|
log12.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
43427
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "
|
|
43742
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.recentTransitions") }),
|
|
43428
43743
|
/* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: log12.map((entry, i) => /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "font-mono text-xs", children: [
|
|
43429
43744
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-400", children: entry.traitName }),
|
|
43430
43745
|
" ",
|
|
@@ -43455,21 +43770,20 @@ var init_RuntimeDebugger = __esm({
|
|
|
43455
43770
|
}
|
|
43456
43771
|
});
|
|
43457
43772
|
function ServerResponseRow({ sr }) {
|
|
43773
|
+
const { t } = useTranslate();
|
|
43458
43774
|
const entityEntries = Object.entries(sr.dataEntities);
|
|
43459
43775
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ml-4 pl-2 border-l border-purple-500/30 py-0.5 text-xs font-mono", children: [
|
|
43460
43776
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
43461
43777
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: sr.success ? "text-green-600 dark:text-green-400" : "text-red-600 dark:text-red-400", children: [
|
|
43462
43778
|
sr.success ? "\u2713" : "\u2717",
|
|
43463
|
-
"
|
|
43779
|
+
" ",
|
|
43780
|
+
t("debug.server")
|
|
43464
43781
|
] }),
|
|
43465
43782
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-600 dark:text-purple-300", children: sr.orbitalName }),
|
|
43466
|
-
sr.clientEffects > 0 && /* @__PURE__ */ jsxRuntime.
|
|
43467
|
-
sr.clientEffects,
|
|
43468
|
-
" clientEffect",
|
|
43469
|
-
sr.clientEffects !== 1 ? "s" : ""
|
|
43470
|
-
] }),
|
|
43783
|
+
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 }) }),
|
|
43471
43784
|
sr.emittedEvents.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "px-1 rounded bg-blue-500/15 text-blue-300", children: [
|
|
43472
|
-
"
|
|
43785
|
+
t("debug.emitLabel"),
|
|
43786
|
+
" ",
|
|
43473
43787
|
sr.emittedEvents.join(", ")
|
|
43474
43788
|
] }),
|
|
43475
43789
|
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 })
|
|
@@ -43477,13 +43791,12 @@ function ServerResponseRow({ sr }) {
|
|
|
43477
43791
|
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: [
|
|
43478
43792
|
name,
|
|
43479
43793
|
": ",
|
|
43480
|
-
count
|
|
43481
|
-
" row",
|
|
43482
|
-
count !== 1 ? "s" : ""
|
|
43794
|
+
t("debug.rowsCount", { count })
|
|
43483
43795
|
] }, name)) })
|
|
43484
43796
|
] });
|
|
43485
43797
|
}
|
|
43486
43798
|
function TransitionRow({ trace }) {
|
|
43799
|
+
const { t } = useTranslate();
|
|
43487
43800
|
const isServerEntry = !!trace.serverResponse && trace.traitName.startsWith("server:");
|
|
43488
43801
|
const hasFailedEffects = trace.effects.some((e) => e.status === "failed");
|
|
43489
43802
|
if (isServerEntry && trace.serverResponse) {
|
|
@@ -43491,7 +43804,7 @@ function TransitionRow({ trace }) {
|
|
|
43491
43804
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-2 text-xs font-mono", children: [
|
|
43492
43805
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "mt-1.5 w-1.5 h-1.5 rounded-full flex-shrink-0 bg-purple-500" }),
|
|
43493
43806
|
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "warning", size: "sm", className: "flex-shrink-0", children: trace.event }),
|
|
43494
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-600 dark:text-purple-400 flex-shrink-0", children: "
|
|
43807
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-600 dark:text-purple-400 flex-shrink-0", children: t("debug.serverResponse") })
|
|
43495
43808
|
] }),
|
|
43496
43809
|
/* @__PURE__ */ jsxRuntime.jsx(ServerResponseRow, { sr: trace.serverResponse })
|
|
43497
43810
|
] });
|
|
@@ -43532,6 +43845,7 @@ function VerifyModePanel({
|
|
|
43532
43845
|
serverCount,
|
|
43533
43846
|
localCount
|
|
43534
43847
|
}) {
|
|
43848
|
+
const { t } = useTranslate();
|
|
43535
43849
|
const [expanded, setExpanded] = React85__namespace.useState(true);
|
|
43536
43850
|
const scrollRef = React85__namespace.useRef(null);
|
|
43537
43851
|
const prevCountRef = React85__namespace.useRef(0);
|
|
@@ -43562,30 +43876,20 @@ function VerifyModePanel({
|
|
|
43562
43876
|
onClick: () => setExpanded((v) => !v),
|
|
43563
43877
|
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",
|
|
43564
43878
|
"aria-expanded": expanded,
|
|
43565
|
-
"aria-label": expanded ? "
|
|
43879
|
+
"aria-label": expanded ? t("debug.collapseVerificationTimeline") : t("debug.expandVerificationTimeline"),
|
|
43566
43880
|
"data-testid": "debugger-verify-toggle",
|
|
43567
43881
|
children: [
|
|
43568
43882
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground/50 w-3", "aria-hidden": true, children: expanded ? "\u25BE" : "\u25B8" }),
|
|
43569
|
-
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: failedChecks > 0 ? "danger" : "success", size: "sm", children: failedChecks > 0 ?
|
|
43570
|
-
/* @__PURE__ */ jsxRuntime.
|
|
43571
|
-
|
|
43572
|
-
" local"
|
|
43573
|
-
] }),
|
|
43574
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-purple-600 dark:text-purple-400", children: [
|
|
43575
|
-
serverCount,
|
|
43576
|
-
" server"
|
|
43577
|
-
] }),
|
|
43883
|
+
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: failedChecks > 0 ? "danger" : "success", size: "sm", children: failedChecks > 0 ? t("debug.failCount", { count: failedChecks }) : t("debug.ok") }),
|
|
43884
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground/70", children: t("debug.localCount", { count: localCount }) }),
|
|
43885
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-600 dark:text-purple-400", children: t("debug.serverCount", { count: serverCount }) }),
|
|
43578
43886
|
traitStates && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-cyan-600 dark:text-cyan-400 truncate max-w-[400px]", children: traitStates }),
|
|
43579
|
-
!expanded && transitions.length > 0 && /* @__PURE__ */ jsxRuntime.
|
|
43580
|
-
transitions.length,
|
|
43581
|
-
" transition",
|
|
43582
|
-
transitions.length !== 1 ? "s" : ""
|
|
43583
|
-
] })
|
|
43887
|
+
!expanded && transitions.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-auto text-foreground/50", children: t("debug.transitionsCount", { count: transitions.length }) })
|
|
43584
43888
|
]
|
|
43585
43889
|
}
|
|
43586
43890
|
),
|
|
43587
43891
|
expanded && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 flex overflow-hidden", children: [
|
|
43588
|
-
/* @__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: "
|
|
43892
|
+
/* @__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)) }) }) }),
|
|
43589
43893
|
/* @__PURE__ */ jsxRuntime.jsx(WalkMinimap, {})
|
|
43590
43894
|
] })
|
|
43591
43895
|
]
|
|
@@ -43601,6 +43905,7 @@ function RuntimeDebugger({
|
|
|
43601
43905
|
defaultTab,
|
|
43602
43906
|
schema
|
|
43603
43907
|
}) {
|
|
43908
|
+
const { t } = useTranslate();
|
|
43604
43909
|
const [isCollapsed, setIsCollapsed] = React85__namespace.useState(mode === "verify" ? true : defaultCollapsed);
|
|
43605
43910
|
const [isVisible, setIsVisible] = React85__namespace.useState(mode === "inline" || mode === "verify" || isDebugEnabled2());
|
|
43606
43911
|
const debugData = useDebugData();
|
|
@@ -43639,55 +43944,55 @@ function RuntimeDebugger({
|
|
|
43639
43944
|
const tabItems = [
|
|
43640
43945
|
{
|
|
43641
43946
|
id: "dispatch",
|
|
43642
|
-
label: "
|
|
43947
|
+
label: t("debug.tabDispatch"),
|
|
43643
43948
|
badge: debugData.traits.length || void 0,
|
|
43644
43949
|
content: /* @__PURE__ */ jsxRuntime.jsx(EventDispatcherTab, { traits: debugData.traits, schema })
|
|
43645
43950
|
},
|
|
43646
43951
|
{
|
|
43647
43952
|
id: "verify",
|
|
43648
|
-
label: failedChecks > 0 ? "
|
|
43953
|
+
label: failedChecks > 0 ? t("debug.tabVerifyAlert") : t("debug.tabVerify"),
|
|
43649
43954
|
badge: verification.summary.totalChecks || void 0,
|
|
43650
43955
|
content: /* @__PURE__ */ jsxRuntime.jsx(VerificationTab, { checks: verification.checks, summary: verification.summary })
|
|
43651
43956
|
},
|
|
43652
43957
|
{
|
|
43653
43958
|
id: "timeline",
|
|
43654
|
-
label: "
|
|
43959
|
+
label: t("debug.tabTimeline"),
|
|
43655
43960
|
badge: verification.transitions.length || void 0,
|
|
43656
43961
|
content: /* @__PURE__ */ jsxRuntime.jsx(TransitionTimeline, { transitions: verification.transitions })
|
|
43657
43962
|
},
|
|
43658
43963
|
{
|
|
43659
43964
|
id: "bridge",
|
|
43660
|
-
label: "
|
|
43965
|
+
label: t("debug.tabBridge"),
|
|
43661
43966
|
badge: verification.bridge?.connected ? void 0 : 1,
|
|
43662
43967
|
content: /* @__PURE__ */ jsxRuntime.jsx(ServerBridgeTab, { bridge: verification.bridge })
|
|
43663
43968
|
},
|
|
43664
43969
|
{
|
|
43665
43970
|
id: "traits",
|
|
43666
|
-
label: "
|
|
43971
|
+
label: t("debug.tabTraits"),
|
|
43667
43972
|
badge: debugData.traits.length || void 0,
|
|
43668
43973
|
content: /* @__PURE__ */ jsxRuntime.jsx(TraitsTab, { traits: debugData.traits })
|
|
43669
43974
|
},
|
|
43670
43975
|
{
|
|
43671
43976
|
id: "ticks",
|
|
43672
|
-
label: "
|
|
43673
|
-
badge: debugData.ticks.filter((
|
|
43977
|
+
label: t("debug.tabTicks"),
|
|
43978
|
+
badge: debugData.ticks.filter((tick) => tick.active).length || void 0,
|
|
43674
43979
|
content: /* @__PURE__ */ jsxRuntime.jsx(TicksTab, { ticks: debugData.ticks })
|
|
43675
43980
|
},
|
|
43676
43981
|
{
|
|
43677
43982
|
id: "entities",
|
|
43678
|
-
label: "
|
|
43983
|
+
label: t("debug.tabEntities"),
|
|
43679
43984
|
badge: debugData.entitySnapshot?.runtime.length || void 0,
|
|
43680
43985
|
content: /* @__PURE__ */ jsxRuntime.jsx(EntitiesTab, { snapshot: debugData.entitySnapshot })
|
|
43681
43986
|
},
|
|
43682
43987
|
{
|
|
43683
43988
|
id: "events",
|
|
43684
|
-
label: "
|
|
43989
|
+
label: t("debug.tabEvents"),
|
|
43685
43990
|
badge: debugData.events.length > 0 ? debugData.events.length : void 0,
|
|
43686
43991
|
content: /* @__PURE__ */ jsxRuntime.jsx(EventFlowTab, { events: debugData.events })
|
|
43687
43992
|
},
|
|
43688
43993
|
{
|
|
43689
43994
|
id: "guards",
|
|
43690
|
-
label: "
|
|
43995
|
+
label: t("debug.tabGuards"),
|
|
43691
43996
|
badge: debugData.guards.filter((g) => !g.result).length || void 0,
|
|
43692
43997
|
content: /* @__PURE__ */ jsxRuntime.jsx(GuardsPanel, { guards: debugData.guards })
|
|
43693
43998
|
}
|
|
@@ -43715,15 +44020,10 @@ function RuntimeDebugger({
|
|
|
43715
44020
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
43716
44021
|
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "h6", style: { fontSize: "0.75rem" }, children: [
|
|
43717
44022
|
isCollapsed ? "\u25B6" : "\u25BC",
|
|
43718
|
-
"
|
|
44023
|
+
" ",
|
|
44024
|
+
t("debug.debugger")
|
|
43719
44025
|
] }),
|
|
43720
|
-
failedChecks > 0 ? /* @__PURE__ */ jsxRuntime.
|
|
43721
|
-
failedChecks,
|
|
43722
|
-
" failed"
|
|
43723
|
-
] }) : debugData.traits.length > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(Badge, { variant: "success", size: "sm", children: [
|
|
43724
|
-
debugData.traits.length,
|
|
43725
|
-
" traits"
|
|
43726
|
-
] }) : /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "info", size: "sm", children: "Idle" })
|
|
44026
|
+
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") })
|
|
43727
44027
|
] })
|
|
43728
44028
|
}
|
|
43729
44029
|
),
|
|
@@ -43741,9 +44041,9 @@ function RuntimeDebugger({
|
|
|
43741
44041
|
);
|
|
43742
44042
|
}
|
|
43743
44043
|
if (mode === "verify") {
|
|
43744
|
-
const traitStates = debugData.traits.map((
|
|
43745
|
-
const serverEntries = verification.transitions.filter((
|
|
43746
|
-
const localEntries = verification.transitions.filter((
|
|
44044
|
+
const traitStates = debugData.traits.map((t2) => `${t2.name}:${t2.currentState}`).join(" | ");
|
|
44045
|
+
const serverEntries = verification.transitions.filter((t2) => t2.serverResponse);
|
|
44046
|
+
const localEntries = verification.transitions.filter((t2) => !t2.serverResponse);
|
|
43747
44047
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
43748
44048
|
VerifyModePanel,
|
|
43749
44049
|
{
|
|
@@ -43775,7 +44075,7 @@ function RuntimeDebugger({
|
|
|
43775
44075
|
variant: "secondary",
|
|
43776
44076
|
size: "sm",
|
|
43777
44077
|
className: "runtime-debugger__toggle",
|
|
43778
|
-
title: "
|
|
44078
|
+
title: t("debug.openDebugger"),
|
|
43779
44079
|
children: failedChecks > 0 ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "relative", children: [
|
|
43780
44080
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "V" }),
|
|
43781
44081
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute -top-1 -right-2 w-2 h-2 bg-red-500 rounded-full" })
|
|
@@ -43785,11 +44085,8 @@ function RuntimeDebugger({
|
|
|
43785
44085
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "runtime-debugger__header", children: [
|
|
43786
44086
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
43787
44087
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-lg", children: "V" }),
|
|
43788
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h6", children: "
|
|
43789
|
-
failedChecks > 0 ? /* @__PURE__ */ jsxRuntime.
|
|
43790
|
-
failedChecks,
|
|
43791
|
-
" failed"
|
|
43792
|
-
] }) : 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" })
|
|
44088
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h6", children: t("debug.kflowVerifier") }),
|
|
44089
|
+
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") })
|
|
43793
44090
|
] }),
|
|
43794
44091
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
43795
44092
|
Button,
|
|
@@ -43797,7 +44094,7 @@ function RuntimeDebugger({
|
|
|
43797
44094
|
onClick: () => setIsCollapsed(true),
|
|
43798
44095
|
variant: "ghost",
|
|
43799
44096
|
size: "sm",
|
|
43800
|
-
title: "
|
|
44097
|
+
title: t("debug.close"),
|
|
43801
44098
|
children: "x"
|
|
43802
44099
|
}
|
|
43803
44100
|
)
|
|
@@ -43811,7 +44108,7 @@ function RuntimeDebugger({
|
|
|
43811
44108
|
className: "runtime-debugger__tabs"
|
|
43812
44109
|
}
|
|
43813
44110
|
) }),
|
|
43814
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "runtime-debugger__footer", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-foreground/50", children: "
|
|
44111
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "runtime-debugger__footer", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-foreground/50", children: t("debug.toggleHint") }) })
|
|
43815
44112
|
] })
|
|
43816
44113
|
}
|
|
43817
44114
|
);
|
|
@@ -43837,6 +44134,7 @@ var init_RuntimeDebugger2 = __esm({
|
|
|
43837
44134
|
init_TransitionTimeline();
|
|
43838
44135
|
init_ServerBridgeTab();
|
|
43839
44136
|
init_EventDispatcherTab();
|
|
44137
|
+
init_useTranslate();
|
|
43840
44138
|
init_RuntimeDebugger();
|
|
43841
44139
|
RuntimeDebugger.displayName = "RuntimeDebugger";
|
|
43842
44140
|
}
|
|
@@ -45125,7 +45423,7 @@ var init_StatCard = __esm({
|
|
|
45125
45423
|
}
|
|
45126
45424
|
);
|
|
45127
45425
|
}
|
|
45128
|
-
const label = schemaStats?.[0]?.label || labelToUse || "
|
|
45426
|
+
const label = schemaStats?.[0]?.label || labelToUse || t("statCard.defaultLabel");
|
|
45129
45427
|
const normalizedPropValue = Array.isArray(propValue) ? propValue[0] ?? propValue.length : propValue;
|
|
45130
45428
|
const value = schemaStats?.[0]?.value ?? normalizedPropValue ?? 0;
|
|
45131
45429
|
const trendDirection = manualDirection || (calculatedTrend === void 0 || calculatedTrend === 0 ? "neutral" : calculatedTrend > 0 ? "up" : "down");
|
|
@@ -45168,7 +45466,7 @@ var init_StatCard = __esm({
|
|
|
45168
45466
|
]
|
|
45169
45467
|
}
|
|
45170
45468
|
),
|
|
45171
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", color: "secondary", as: "span", children: "
|
|
45469
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", color: "secondary", as: "span", children: t("statCard.vsLastPeriod") })
|
|
45172
45470
|
] }),
|
|
45173
45471
|
subtitle && !calculatedTrend && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", color: "secondary", children: subtitle })
|
|
45174
45472
|
] }),
|