@unerr-ai/unerr 0.1.6 → 0.1.7
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/README.md +70 -194
- package/dist/cli.js +39149 -36991
- package/package.json +9 -2
- package/dist/__tests__/architecture-guard.test.js +0 -122
- package/dist/__tests__/arg-validator.test.js +0 -205
- package/dist/__tests__/ast-extractor.test.js +0 -203
- package/dist/__tests__/auto-bootstrap.test.js +0 -280
- package/dist/__tests__/background-indexer.test.js +0 -228
- package/dist/__tests__/blast-radius-engine.test.js +0 -200
- package/dist/__tests__/bridge-isolation.test.js +0 -37
- package/dist/__tests__/budget-enforcer.test.js +0 -53
- package/dist/__tests__/cfg-test-detection-perf.test.js +0 -82
- package/dist/__tests__/change-narrative.test.js +0 -190
- package/dist/__tests__/check-commit.test.js +0 -258
- package/dist/__tests__/checksum.test.js +0 -34
- package/dist/__tests__/commit-watcher.test.js +0 -154
- package/dist/__tests__/community-detection.test.js +0 -179
- package/dist/__tests__/community-tools.test.js +0 -299
- package/dist/__tests__/components.test.js +0 -449
- package/dist/__tests__/compression-log.test.js +0 -174
- package/dist/__tests__/compression-quality-monitor.test.js +0 -40
- package/dist/__tests__/config-healer.test.js +0 -165
- package/dist/__tests__/context-ledger.test.js +0 -58
- package/dist/__tests__/convention-detector.test.js +0 -99
- package/dist/__tests__/convention-learner.test.js +0 -86
- package/dist/__tests__/correction-detector.test.js +0 -330
- package/dist/__tests__/daemon-autostart-install.test.js +0 -283
- package/dist/__tests__/daemon-bridge.test.js +0 -222
- package/dist/__tests__/daemon-dashboard.test.js +0 -202
- package/dist/__tests__/daemon-registry.test.js +0 -240
- package/dist/__tests__/daemon-supervisor.test.js +0 -318
- package/dist/__tests__/daemon-version-check.test.js +0 -275
- package/dist/__tests__/decision-point-detector.test.js +0 -98
- package/dist/__tests__/deep-link.test.js +0 -143
- package/dist/__tests__/disallowed-tools.test.js +0 -115
- package/dist/__tests__/drift-tracker.test.js +0 -582
- package/dist/__tests__/durability-scorer.test.js +0 -152
- package/dist/__tests__/efficiency-tracker.test.js +0 -65
- package/dist/__tests__/enrich.test.js +0 -144
- package/dist/__tests__/entity-rewind.test.js +0 -248
- package/dist/__tests__/ephemeral.test.js +0 -111
- package/dist/__tests__/exploration-cost.test.js +0 -93
- package/dist/__tests__/fact-generator.test.js +0 -197
- package/dist/__tests__/file-l0-graph.test.js +0 -244
- package/dist/__tests__/file-logger.test.js +0 -82
- package/dist/__tests__/file-outline.test.js +0 -141
- package/dist/__tests__/file-read-protocol.test.js +0 -188
- package/dist/__tests__/format-encoder.test.js +0 -233
- package/dist/__tests__/git-attribution.test.js +0 -259
- package/dist/__tests__/graph-temporal-joiner.test.js +0 -219
- package/dist/__tests__/health-grade-enhanced.test.js +0 -138
- package/dist/__tests__/health-map-data.test.js +0 -173
- package/dist/__tests__/helpers/mcp-harness.js +0 -45
- package/dist/__tests__/helpers/mcp-harness.test.js +0 -68
- package/dist/__tests__/hook-dedup.test.js +0 -112
- package/dist/__tests__/hook-runner.test.js +0 -253
- package/dist/__tests__/indexer-cfg.test.js +0 -185
- package/dist/__tests__/indexer-cross-file.test.js +0 -172
- package/dist/__tests__/indexer-extraction.test.js +0 -245
- package/dist/__tests__/indexer-incremental.test.js +0 -232
- package/dist/__tests__/indexer-language-expansion.test.js +0 -165
- package/dist/__tests__/init-push.test.js +0 -131
- package/dist/__tests__/instruction-writer.test.js +0 -179
- package/dist/__tests__/intelligence-integration.test.js +0 -217
- package/dist/__tests__/intent-correlator.test.js +0 -175
- package/dist/__tests__/intent-detector.test.js +0 -235
- package/dist/__tests__/intent-encoder.test.js +0 -167
- package/dist/__tests__/java-build-tool-detection.test.js +0 -174
- package/dist/__tests__/layer3-sprint-q.test.js +0 -160
- package/dist/__tests__/layer3-sprint-r.test.js +0 -91
- package/dist/__tests__/layer3-sprint-s.test.js +0 -183
- package/dist/__tests__/layer3-sprint-t.test.js +0 -201
- package/dist/__tests__/layer3-sprint-u.test.js +0 -174
- package/dist/__tests__/layer4-sprint-ba2.test.js +0 -354
- package/dist/__tests__/layer4-sprint-ba4.test.js +0 -84
- package/dist/__tests__/layer4-sprint-vs.test.js +0 -105
- package/dist/__tests__/ledger-chains.test.js +0 -162
- package/dist/__tests__/lifecycle-machine.test.js +0 -226
- package/dist/__tests__/local-chat-provider.test.js +0 -170
- package/dist/__tests__/local-convention-detector.test.js +0 -308
- package/dist/__tests__/local-embeddings.test.js +0 -422
- package/dist/__tests__/local-graph.test.js +0 -540
- package/dist/__tests__/local-indexer.test.js +0 -228
- package/dist/__tests__/local-intelligence-l3.test.js +0 -332
- package/dist/__tests__/local-llm.test.js +0 -253
- package/dist/__tests__/local-mode-offline.test.js +0 -187
- package/dist/__tests__/local-mode-stats.test.js +0 -273
- package/dist/__tests__/local-mode-tui.test.js +0 -343
- package/dist/__tests__/local-parse.test.js +0 -199
- package/dist/__tests__/log-tailer.test.js +0 -208
- package/dist/__tests__/loop-breaker.test.js +0 -276
- package/dist/__tests__/loop-miner.test.js +0 -226
- package/dist/__tests__/mcp-config.test.js +0 -126
- package/dist/__tests__/mcp-content-json.test.js +0 -10
- package/dist/__tests__/mcp-envelope.test.js +0 -124
- package/dist/__tests__/metrics-store.test.js +0 -223
- package/dist/__tests__/native-watcher.test.js +0 -191
- package/dist/__tests__/navigation-hooks-agent-aware.test.js +0 -145
- package/dist/__tests__/negative-knowledge.test.js +0 -116
- package/dist/__tests__/network-boundary.test.js +0 -190
- package/dist/__tests__/network-firewall.test.js +0 -112
- package/dist/__tests__/nudge-invariants.test.js +0 -160
- package/dist/__tests__/nudge-v2.test.js +0 -225
- package/dist/__tests__/offline-rewind.test.js +0 -251
- package/dist/__tests__/open-threads.test.js +0 -89
- package/dist/__tests__/output-compressor.test.js +0 -93
- package/dist/__tests__/pending-violations.test.js +0 -112
- package/dist/__tests__/persistence-effectiveness.test.js +0 -143
- package/dist/__tests__/provider-factory.test.js +0 -42
- package/dist/__tests__/providers.test.js +0 -24
- package/dist/__tests__/proxy.test.js +0 -314
- package/dist/__tests__/query-router.test.js +0 -1018
- package/dist/__tests__/reasoning-quality-route.test.js +0 -138
- package/dist/__tests__/redactor.test.js +0 -120
- package/dist/__tests__/resource-monitor.test.js +0 -57
- package/dist/__tests__/response-envelope.test.js +0 -100
- package/dist/__tests__/risk-classifier.test.js +0 -101
- package/dist/__tests__/risk-signal-scope.test.js +0 -75
- package/dist/__tests__/rule-evaluator.test.js +0 -280
- package/dist/__tests__/scip-decoder.test.js +0 -49
- package/dist/__tests__/scip-downloader.test.js +0 -201
- package/dist/__tests__/scip-merger.test.js +0 -103
- package/dist/__tests__/search-index.test.js +0 -422
- package/dist/__tests__/semantic-enrichment.test.js +0 -360
- package/dist/__tests__/session-brief-builder.test.js +0 -187
- package/dist/__tests__/session-context.test.js +0 -221
- package/dist/__tests__/session-continuity.test.js +0 -144
- package/dist/__tests__/session-dedup.test.js +0 -74
- package/dist/__tests__/session-event-wiring.test.js +0 -206
- package/dist/__tests__/session-events.test.js +0 -149
- package/dist/__tests__/session-legend.test.js +0 -20
- package/dist/__tests__/session-persistence.test.js +0 -131
- package/dist/__tests__/session-resume-block.test.js +0 -107
- package/dist/__tests__/session-resume.test.js +0 -97
- package/dist/__tests__/session-summary-writer.test.js +0 -134
- package/dist/__tests__/shadow-ledger.test.js +0 -203
- package/dist/__tests__/shell-classifier.test.js +0 -151
- package/dist/__tests__/shell-compression-floor.test.js +0 -189
- package/dist/__tests__/shell-compression-v2.test.js +0 -339
- package/dist/__tests__/shell-compressor.test.js +0 -35
- package/dist/__tests__/shell-hooks.test.js +0 -128
- package/dist/__tests__/shell-strategies.test.js +0 -644
- package/dist/__tests__/shell-tee.test.js +0 -133
- package/dist/__tests__/signal-dedup.test.js +0 -158
- package/dist/__tests__/signal-reinforcer.test.js +0 -77
- package/dist/__tests__/signal-scorer.test.js +0 -251
- package/dist/__tests__/signal-show-store.test.js +0 -108
- package/dist/__tests__/smart-truncate.test.js +0 -215
- package/dist/__tests__/snapshot-v2.test.js +0 -113
- package/dist/__tests__/sprint-l1-local-mode.test.js +0 -130
- package/dist/__tests__/sprint-l10-boot.test.js +0 -220
- package/dist/__tests__/sprint-l9-offline-commands.test.js +0 -189
- package/dist/__tests__/sprint-q-persistent-context.test.js +0 -198
- package/dist/__tests__/sprint-s1-wiring.test.js +0 -215
- package/dist/__tests__/sprint-s2-wiring.test.js +0 -256
- package/dist/__tests__/sprint-s3-wiring.test.js +0 -195
- package/dist/__tests__/sprint-s4-wiring.test.js +0 -213
- package/dist/__tests__/sprint-s6-hooks.test.js +0 -222
- package/dist/__tests__/sprint-s7-persistent.test.js +0 -263
- package/dist/__tests__/sprint-s8-value.test.js +0 -167
- package/dist/__tests__/sprint-s9-behavioral.test.js +0 -179
- package/dist/__tests__/sprint3-intelligence.test.js +0 -297
- package/dist/__tests__/sprint5-mcp-server.test.js +0 -136
- package/dist/__tests__/startup-display.test.js +0 -302
- package/dist/__tests__/startup-log-file.test.js +0 -97
- package/dist/__tests__/stash-manager.test.js +0 -229
- package/dist/__tests__/state-detector.test.js +0 -92
- package/dist/__tests__/status-dashboard.test.js +0 -142
- package/dist/__tests__/temporal-facts.test.js +0 -292
- package/dist/__tests__/temporal-routes.test.js +0 -142
- package/dist/__tests__/test-detector.test.js +0 -174
- package/dist/__tests__/theme.test.js +0 -72
- package/dist/__tests__/timeline-agents.test.js +0 -122
- package/dist/__tests__/timeline-bootstrap.test.js +0 -176
- package/dist/__tests__/timeline-filters.test.js +0 -193
- package/dist/__tests__/timeline-markers.test.js +0 -151
- package/dist/__tests__/timeline-routes.test.js +0 -156
- package/dist/__tests__/timeline-store.test.js +0 -171
- package/dist/__tests__/token-counter.test.js +0 -86
- package/dist/__tests__/token-estimator.test.js +0 -96
- package/dist/__tests__/token-flow-api.test.js +0 -239
- package/dist/__tests__/token-flow-instrumentation.test.js +0 -437
- package/dist/__tests__/token-flow-persistence.test.js +0 -356
- package/dist/__tests__/token-flow-routes.test.js +0 -199
- package/dist/__tests__/token-flow.test.js +0 -695
- package/dist/__tests__/tool-clusters.test.js +0 -177
- package/dist/__tests__/transport-mux.test.js +0 -283
- package/dist/__tests__/turn-segmenter.test.js +0 -166
- package/dist/__tests__/uninstall.test.js +0 -141
- package/dist/__tests__/warm-start-policy.test.js +0 -271
- package/dist/__tests__/wire-cap-nudge.test.js +0 -77
- package/dist/__tests__/worker-pool.test.js +0 -101
- package/dist/ui/assets/index-7gl3mIuY.css +0 -1
- package/dist/ui/assets/index-CX4FCWGT.js +0 -10
- package/dist/ui/assets/rolldown-runtime-S-ySWqyJ.js +0 -1
- package/dist/ui/assets/vis-network-NIJHUFI3.js +0 -908
- package/dist/ui/fonts/jetbrains-mono-latin-400-normal.woff +0 -0
- package/dist/ui/icon-wordmark.png +0 -0
- package/dist/ui/icon-wordmark.svg +0 -30
- package/dist/ui/icon.png +0 -0
- package/dist/ui/icon.svg +0 -25
- package/dist/ui/index.html +0 -15
- package/dist/ui/prototype-sandbox/index.html +0 -257
- package/dist/ui/screenshots/activity.png +0 -0
- package/dist/ui/screenshots/code-base-intelligence.png +0 -0
- package/dist/ui/screenshots/dashboard.png +0 -0
- package/dist/ui/screenshots/project-memory.png +0 -0
- package/dist/ui/screenshots/reasoning-quality.png +0 -0
- package/dist/ui/screenshots/reasoning-session.png +0 -0
- package/dist/ui/screenshots/token-session.png +0 -0
- package/dist/ui/screenshots/token-trace-main.png +0 -0
- package/dist/ui/screenshots/token-turn.png +0 -0
- package/dist/ui/unerr-wordmark.png +0 -0
- package/dist/ui/unerr-wordmark.svg +0 -9
- package/dist/ui/unerr.png +0 -0
- package/dist/ui/unerr.svg +0 -25
- package/dist/ui/web-app-manifest-192x192.png +0 -0
- package/dist/ui/web-app-manifest-512x512.png +0 -0
|
Binary file
|
|
Binary file
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
<svg width="2137" height="512" viewBox="0 0 2137 512" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
-
<defs>
|
|
3
|
-
<linearGradient id="icon-grad" x1="0" y1="0" x2="512" y2="512" gradientUnits="userSpaceOnUse">
|
|
4
|
-
<stop stop-color="#8B5CF6"/>
|
|
5
|
-
<stop offset="1" stop-color="#7C3AED"/>
|
|
6
|
-
</linearGradient>
|
|
7
|
-
<linearGradient id="text-grad" x1="-76.5297" y1="43" x2="2060.47" y2="555" gradientUnits="userSpaceOnUse">
|
|
8
|
-
<stop stop-color="#8B5CF6"/>
|
|
9
|
-
<stop offset="1" stop-color="#7C3AED"/>
|
|
10
|
-
</linearGradient>
|
|
11
|
-
<clipPath id="clip0">
|
|
12
|
-
<rect width="2137" height="512" fill="white"/>
|
|
13
|
-
</clipPath>
|
|
14
|
-
</defs>
|
|
15
|
-
<g clip-path="url(#clip0)">
|
|
16
|
-
<path d="M42.4538 175.39L175.39 42.4538" stroke="url(#icon-grad)" stroke-width="44" stroke-linecap="round"/>
|
|
17
|
-
<path d="M29.0187 286.406L123.771 191.653" stroke="url(#icon-grad)" stroke-width="44" stroke-linecap="round"/>
|
|
18
|
-
<path d="M191.653 123.771L286.406 29.0187" stroke="url(#icon-grad)" stroke-width="44" stroke-linecap="round"/>
|
|
19
|
-
<path d="M55.1817 357.823L118.821 294.184" stroke="url(#icon-grad)" stroke-width="44" stroke-linecap="round"/>
|
|
20
|
-
<path d="M294.184 118.821L357.823 55.1817" stroke="url(#icon-grad)" stroke-width="44" stroke-linecap="round"/>
|
|
21
|
-
<path d="M97.6081 414.392L154.177 357.823" stroke="url(#icon-grad)" stroke-width="44" stroke-linecap="round"/>
|
|
22
|
-
<path d="M357.823 154.177L414.392 97.6082" stroke="url(#icon-grad)" stroke-width="44" stroke-linecap="round"/>
|
|
23
|
-
<path d="M154.177 456.818L217.816 393.179" stroke="url(#icon-grad)" stroke-width="44" stroke-linecap="round"/>
|
|
24
|
-
<path d="M393.179 217.816L456.818 154.177" stroke="url(#icon-grad)" stroke-width="44" stroke-linecap="round"/>
|
|
25
|
-
<path d="M225.594 482.981L320.347 388.229" stroke="url(#icon-grad)" stroke-width="44" stroke-linecap="round"/>
|
|
26
|
-
<path d="M388.229 320.347L482.981 225.594" stroke="url(#icon-grad)" stroke-width="44" stroke-linecap="round"/>
|
|
27
|
-
<path d="M336.61 469.546L469.546 336.61" stroke="url(#icon-grad)" stroke-width="44" stroke-linecap="round"/>
|
|
28
|
-
<path d="M742.47 404.2C706.07 404.2 677.47 394.147 656.67 374.04C635.87 353.587 625.47 325.853 625.47 290.84V113H690.47V290.32C690.47 308.693 694.977 322.907 703.99 332.96C713.003 342.667 725.83 347.52 742.47 347.52C758.763 347.52 771.417 342.667 780.43 332.96C789.79 322.907 794.47 308.693 794.47 290.32V113H859.47V290.84C859.47 325.853 848.897 353.587 827.75 374.04C806.603 394.147 778.177 404.2 742.47 404.2ZM922.707 399V113H986.15V167.6H1003.83L986.15 182.68C986.15 159.107 992.91 140.733 1006.43 127.56C1020.29 114.387 1039.19 107.8 1063.11 107.8C1091.19 107.8 1113.55 117.16 1130.19 135.88C1147.17 154.6 1155.67 179.733 1155.67 211.28V399H1090.67V218.04C1090.67 200.707 1086.16 187.36 1077.15 178C1068.13 168.64 1055.48 163.96 1039.19 163.96C1023.24 163.96 1010.59 168.813 1001.23 178.52C992.21 188.227 987.71 202.093 987.71 220.12V399H922.707ZM1335.38 404.2C1311.12 404.2 1289.97 399.52 1271.94 390.16C1253.92 380.8 1239.88 367.8 1229.82 351.16C1220.12 334.173 1215.26 314.413 1215.26 291.88V220.12C1215.26 197.587 1220.12 178 1229.82 161.36C1239.88 144.373 1253.92 131.2 1271.94 121.84C1289.97 112.48 1311.12 107.8 1335.38 107.8C1359.3 107.8 1380.1 112.48 1397.78 121.84C1415.81 131.2 1429.68 144.373 1439.38 161.36C1449.44 178 1454.46 197.587 1454.46 220.12V271.6H1278.18V291.88C1278.18 311.987 1283.04 327.24 1292.74 337.64C1302.45 347.693 1316.84 352.72 1335.9 352.72C1350.46 352.72 1362.25 350.293 1371.26 345.44C1380.28 340.24 1386 332.787 1388.42 323.08H1452.38C1447.53 347.693 1434.36 367.453 1412.86 382.36C1391.72 396.92 1365.89 404.2 1335.38 404.2ZM1391.54 235.2V219.6C1391.54 199.84 1386.86 184.76 1377.5 174.36C1368.14 163.613 1354.1 158.24 1335.38 158.24C1316.66 158.24 1302.45 163.613 1292.74 174.36C1283.04 185.107 1278.18 200.36 1278.18 220.12V231.04L1396.22 230L1391.54 235.2ZM1523.94 399V113H1585.3V167.6H1601.42L1582.18 200.88C1582.18 170.027 1589.11 146.8 1602.98 131.2C1616.85 115.6 1637.3 107.8 1664.34 107.8C1695.19 107.8 1719.46 117.333 1737.14 136.4C1754.82 155.467 1763.66 181.813 1763.66 215.44V236.24H1695.54V220.12C1695.54 201.747 1690.69 187.533 1680.98 177.48C1671.62 167.427 1658.62 162.4 1641.98 162.4C1624.99 162.4 1611.82 167.427 1602.46 177.48C1593.45 187.533 1588.94 201.747 1588.94 220.12V399H1523.94ZM1820.14 399V113H1881.5V167.6H1897.62L1878.38 200.88C1878.38 170.027 1885.31 146.8 1899.18 131.2C1913.04 115.6 1933.5 107.8 1960.54 107.8C1991.39 107.8 2015.66 117.333 2033.34 136.4C2051.02 155.467 2059.86 181.813 2059.86 215.44V236.24H1991.74V220.12C1991.74 201.747 1986.88 187.533 1977.18 177.48C1967.82 167.427 1954.82 162.4 1938.18 162.4C1921.19 162.4 1908.02 167.427 1898.66 177.48C1889.64 187.533 1885.14 201.747 1885.14 220.12V399H1820.14Z" fill="url(#text-grad)"/>
|
|
29
|
-
</g>
|
|
30
|
-
</svg>
|
package/dist/ui/icon.png
DELETED
|
Binary file
|
package/dist/ui/icon.svg
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
<svg width="512" height="512" viewBox="0 0 512 512" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
-
<defs>
|
|
3
|
-
<linearGradient id="brand-grad" x1="0" y1="0" x2="512" y2="512" gradientUnits="userSpaceOnUse">
|
|
4
|
-
<stop stop-color="#8B5CF6"/>
|
|
5
|
-
<stop offset="1" stop-color="#7C3AED"/>
|
|
6
|
-
</linearGradient>
|
|
7
|
-
<clipPath id="clip0">
|
|
8
|
-
<rect width="512" height="512" fill="white"/>
|
|
9
|
-
</clipPath>
|
|
10
|
-
</defs>
|
|
11
|
-
<g clip-path="url(#clip0)">
|
|
12
|
-
<path d="M43.5942 176.439L176.439 43.5943" stroke="url(#brand-grad)" stroke-width="40" stroke-linecap="round"/>
|
|
13
|
-
<path d="M31.1857 286.656L127.535 190.307" stroke="url(#brand-grad)" stroke-width="40" stroke-linecap="round"/>
|
|
14
|
-
<path d="M190.308 127.535L286.657 31.1856" stroke="url(#brand-grad)" stroke-width="40" stroke-linecap="round"/>
|
|
15
|
-
<path d="M54.5431 359.648L118.046 296.145" stroke="url(#brand-grad)" stroke-width="40" stroke-linecap="round"/>
|
|
16
|
-
<path d="M296.146 118.046L359.648 54.543" stroke="url(#brand-grad)" stroke-width="40" stroke-linecap="round"/>
|
|
17
|
-
<path d="M95.4183 416.582L153.812 358.188" stroke="url(#brand-grad)" stroke-width="40" stroke-linecap="round"/>
|
|
18
|
-
<path d="M358.188 153.812L416.582 95.4183" stroke="url(#brand-grad)" stroke-width="40" stroke-linecap="round"/>
|
|
19
|
-
<path d="M152.352 457.457L215.855 393.954" stroke="url(#brand-grad)" stroke-width="40" stroke-linecap="round"/>
|
|
20
|
-
<path d="M393.954 215.855L457.457 152.352" stroke="url(#brand-grad)" stroke-width="40" stroke-linecap="round"/>
|
|
21
|
-
<path d="M225.344 480.814L321.693 384.465" stroke="url(#brand-grad)" stroke-width="40" stroke-linecap="round"/>
|
|
22
|
-
<path d="M384.465 321.692L480.814 225.343" stroke="url(#brand-grad)" stroke-width="40" stroke-linecap="round"/>
|
|
23
|
-
<path d="M335.561 468.406L468.406 335.561" stroke="url(#brand-grad)" stroke-width="40" stroke-linecap="round"/>
|
|
24
|
-
</g>
|
|
25
|
-
</svg>
|
package/dist/ui/index.html
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
<!doctype html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8" />
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
-
<title>unerr — intelligence</title>
|
|
7
|
-
<script type="module" crossorigin src="/assets/index-CX4FCWGT.js"></script>
|
|
8
|
-
<link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-S-ySWqyJ.js">
|
|
9
|
-
<link rel="modulepreload" crossorigin href="/assets/vis-network-NIJHUFI3.js">
|
|
10
|
-
<link rel="stylesheet" crossorigin href="/assets/index-7gl3mIuY.css">
|
|
11
|
-
</head>
|
|
12
|
-
<body>
|
|
13
|
-
<div id="root"></div>
|
|
14
|
-
</body>
|
|
15
|
-
</html>
|
|
@@ -1,257 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8" />
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
-
<title>unerr Prototype Sandbox</title>
|
|
7
|
-
<style>
|
|
8
|
-
:root {
|
|
9
|
-
--p-primary: #3B82F6;
|
|
10
|
-
--p-secondary: #64748B;
|
|
11
|
-
--p-accent: #8B5CF6;
|
|
12
|
-
--p-bg: #FFFFFF;
|
|
13
|
-
--p-fg: #0F172A;
|
|
14
|
-
--p-border: #E2E8F0;
|
|
15
|
-
--p-muted: #F8FAFC;
|
|
16
|
-
--p-font-heading: Inter, system-ui, sans-serif;
|
|
17
|
-
--p-font-body: Inter, system-ui, sans-serif;
|
|
18
|
-
}
|
|
19
|
-
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
20
|
-
body { font-family: var(--p-font-body); background: var(--p-bg); color: var(--p-fg); min-height: 100vh; }
|
|
21
|
-
|
|
22
|
-
.proto-header { padding: 16px 24px; border-bottom: 1px solid var(--p-border); display: flex; align-items: center; justify-content: space-between; }
|
|
23
|
-
.proto-header h1 { font-family: var(--p-font-heading); font-size: 18px; font-weight: 600; }
|
|
24
|
-
|
|
25
|
-
.proto-sidebar { width: 240px; border-right: 1px solid var(--p-border); padding: 16px; background: var(--p-muted); }
|
|
26
|
-
.proto-sidebar-item { padding: 8px 12px; border-radius: 6px; font-size: 13px; cursor: pointer; margin-bottom: 2px; }
|
|
27
|
-
.proto-sidebar-item:hover { background: var(--p-border); }
|
|
28
|
-
.proto-sidebar-item.active { background: var(--p-primary); color: white; }
|
|
29
|
-
|
|
30
|
-
.proto-main { flex: 1; padding: 24px; overflow-y: auto; }
|
|
31
|
-
|
|
32
|
-
.proto-table { width: 100%; border-collapse: collapse; font-size: 13px; }
|
|
33
|
-
.proto-table th { text-align: left; padding: 10px 12px; border-bottom: 2px solid var(--p-border); font-weight: 600; font-size: 11px; text-transform: uppercase; letter-spacing: 0.05em; color: var(--p-secondary); }
|
|
34
|
-
.proto-table td { padding: 10px 12px; border-bottom: 1px solid var(--p-muted); }
|
|
35
|
-
.proto-table tr:hover td { background: var(--p-muted); }
|
|
36
|
-
|
|
37
|
-
.proto-form { max-width: 480px; display: flex; flex-direction: column; gap: 16px; }
|
|
38
|
-
.proto-field { display: flex; flex-direction: column; gap: 4px; }
|
|
39
|
-
.proto-field label { font-size: 12px; font-weight: 500; color: var(--p-secondary); }
|
|
40
|
-
.proto-field input, .proto-field select, .proto-field textarea { padding: 8px 12px; border: 1px solid var(--p-border); border-radius: 6px; font-size: 14px; font-family: inherit; }
|
|
41
|
-
.proto-field input:focus, .proto-field select:focus, .proto-field textarea:focus { outline: none; border-color: var(--p-primary); box-shadow: 0 0 0 3px rgba(59,130,246,0.1); }
|
|
42
|
-
|
|
43
|
-
.proto-btn { padding: 8px 16px; border: none; border-radius: 6px; font-size: 14px; font-weight: 500; cursor: pointer; font-family: inherit; }
|
|
44
|
-
.proto-btn-primary { background: var(--p-primary); color: white; }
|
|
45
|
-
.proto-btn-primary:hover { opacity: 0.9; }
|
|
46
|
-
|
|
47
|
-
.proto-stat { padding: 20px; border: 1px solid var(--p-border); border-radius: 8px; }
|
|
48
|
-
.proto-stat-label { font-size: 11px; color: var(--p-secondary); text-transform: uppercase; letter-spacing: 0.05em; }
|
|
49
|
-
.proto-stat-value { font-size: 28px; font-weight: 700; margin-top: 4px; font-family: var(--p-font-heading); }
|
|
50
|
-
|
|
51
|
-
.proto-detail { display: flex; flex-direction: column; gap: 12px; }
|
|
52
|
-
.proto-detail-row { display: flex; justify-content: space-between; padding: 10px 0; border-bottom: 1px solid var(--p-muted); font-size: 13px; }
|
|
53
|
-
.proto-detail-label { color: var(--p-secondary); }
|
|
54
|
-
|
|
55
|
-
.proto-badge { display: inline-block; padding: 2px 8px; border-radius: 999px; font-size: 11px; font-weight: 500; }
|
|
56
|
-
.proto-badge-success { background: #DCFCE7; color: #166534; }
|
|
57
|
-
.proto-badge-warning { background: #FEF3C7; color: #92400E; }
|
|
58
|
-
.proto-badge-info { background: #DBEAFE; color: #1E40AF; }
|
|
59
|
-
|
|
60
|
-
.proto-empty { text-align: center; padding: 48px; color: var(--p-secondary); }
|
|
61
|
-
|
|
62
|
-
.proto-highlight { outline: 2px solid var(--p-accent); outline-offset: 2px; border-radius: 4px; animation: pulse 1.5s ease-in-out infinite; }
|
|
63
|
-
@keyframes pulse { 0%, 100% { outline-color: var(--p-accent); } 50% { outline-color: transparent; } }
|
|
64
|
-
|
|
65
|
-
.layout-split { display: flex; min-height: 100vh; }
|
|
66
|
-
|
|
67
|
-
.loading { display: flex; align-items: center; justify-content: center; height: 100vh; color: var(--p-secondary); }
|
|
68
|
-
</style>
|
|
69
|
-
</head>
|
|
70
|
-
<body>
|
|
71
|
-
<div id="root" class="loading">Loading prototype...</div>
|
|
72
|
-
|
|
73
|
-
<script>
|
|
74
|
-
let currentData = null;
|
|
75
|
-
let currentStep = null;
|
|
76
|
-
|
|
77
|
-
// Signal ready to parent
|
|
78
|
-
window.parent.postMessage({ type: 'prototype:ready' }, '*');
|
|
79
|
-
|
|
80
|
-
// Listen for prototype data
|
|
81
|
-
window.addEventListener('message', function(event) {
|
|
82
|
-
if (event.data && event.data.type === 'prototype:init') {
|
|
83
|
-
currentData = event.data.payload;
|
|
84
|
-
currentStep = event.data.payload.activeStep;
|
|
85
|
-
|
|
86
|
-
// Apply design tokens as CSS custom properties
|
|
87
|
-
if (currentData.designTokens) {
|
|
88
|
-
const t = currentData.designTokens;
|
|
89
|
-
const root = document.documentElement;
|
|
90
|
-
if (t.primary) root.style.setProperty('--p-primary', t.primary);
|
|
91
|
-
if (t.secondary) root.style.setProperty('--p-secondary', t.secondary);
|
|
92
|
-
if (t.accent) root.style.setProperty('--p-accent', t.accent);
|
|
93
|
-
if (t.background) root.style.setProperty('--p-bg', t.background);
|
|
94
|
-
if (t.foreground) root.style.setProperty('--p-fg', t.foreground);
|
|
95
|
-
if (t.fontHeading) root.style.setProperty('--p-font-heading', t.fontHeading);
|
|
96
|
-
if (t.fontBody) root.style.setProperty('--p-font-body', t.fontBody);
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
render();
|
|
100
|
-
}
|
|
101
|
-
});
|
|
102
|
-
|
|
103
|
-
function render() {
|
|
104
|
-
if (!currentData || !currentData.screens || currentData.screens.length === 0) {
|
|
105
|
-
document.getElementById('root').innerHTML = '<div class="proto-empty">No prototype data received</div>';
|
|
106
|
-
return;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
const screen = currentData.screens[0];
|
|
110
|
-
if (!screen) return;
|
|
111
|
-
|
|
112
|
-
// Determine which components are active based on walkthrough step
|
|
113
|
-
let activeComponentIds = null;
|
|
114
|
-
if (currentStep !== null && currentStep !== undefined && currentData.flowSteps && currentData.flowSteps[currentStep]) {
|
|
115
|
-
activeComponentIds = new Set(currentData.flowSteps[currentStep].activeComponents);
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
let html = '';
|
|
119
|
-
|
|
120
|
-
for (const comp of screen.components) {
|
|
121
|
-
// If in walkthrough mode and component not in active list, dim it
|
|
122
|
-
const isActive = !activeComponentIds || activeComponentIds.has(comp.id);
|
|
123
|
-
const isHighlighted = activeComponentIds && activeComponentIds.has(comp.id);
|
|
124
|
-
const wrapStyle = isActive ? '' : 'opacity:0.3;pointer-events:none;';
|
|
125
|
-
const highlightClass = isHighlighted ? ' proto-highlight' : '';
|
|
126
|
-
|
|
127
|
-
html += '<div style="' + wrapStyle + '" class="' + highlightClass + '">';
|
|
128
|
-
html += renderComponent(comp);
|
|
129
|
-
html += '</div>';
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
document.getElementById('root').className = '';
|
|
133
|
-
document.getElementById('root').innerHTML = html;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
function renderComponent(comp) {
|
|
137
|
-
switch (comp.type) {
|
|
138
|
-
case 'Header':
|
|
139
|
-
return '<div class="proto-header"><h1>' + esc(comp.label) + '</h1></div>';
|
|
140
|
-
|
|
141
|
-
case 'DataTable':
|
|
142
|
-
return renderDataTable(comp);
|
|
143
|
-
|
|
144
|
-
case 'FormSection':
|
|
145
|
-
return renderFormSection(comp);
|
|
146
|
-
|
|
147
|
-
case 'DetailPanel':
|
|
148
|
-
return renderDetailPanel(comp);
|
|
149
|
-
|
|
150
|
-
case 'StatCard':
|
|
151
|
-
return '<div style="padding:8px"><div class="proto-stat"><div class="proto-stat-label">' + esc(comp.label) + '</div><div class="proto-stat-value">—</div></div></div>';
|
|
152
|
-
|
|
153
|
-
case 'SearchBar':
|
|
154
|
-
return '<div style="padding:16px 24px"><input type="text" placeholder="Search ' + esc(comp.label) + '..." style="width:100%;padding:10px 14px;border:1px solid var(--p-border);border-radius:8px;font-size:14px;font-family:inherit" /></div>';
|
|
155
|
-
|
|
156
|
-
case 'CardGrid':
|
|
157
|
-
return renderCardGrid(comp);
|
|
158
|
-
|
|
159
|
-
case 'Sidebar':
|
|
160
|
-
return '<div class="proto-sidebar"><div class="proto-sidebar-item active">Dashboard</div><div class="proto-sidebar-item">Settings</div></div>';
|
|
161
|
-
|
|
162
|
-
case 'EmptyState':
|
|
163
|
-
return '<div class="proto-empty">' + esc(comp.label) + '</div>';
|
|
164
|
-
|
|
165
|
-
case 'StatusBadge':
|
|
166
|
-
return '<div style="padding:8px 24px"><span class="proto-badge proto-badge-success">Active</span></div>';
|
|
167
|
-
|
|
168
|
-
default:
|
|
169
|
-
return '<div style="padding:16px 24px;color:var(--p-secondary);font-size:13px">' + esc(comp.label) + ' (' + esc(comp.type) + ')</div>';
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
function renderDataTable(comp) {
|
|
174
|
-
const entity = currentData.sampleData ? currentData.sampleData.find(function(e) { return e.entityName === comp.entity; }) : null;
|
|
175
|
-
if (!entity || !entity.rows || entity.rows.length === 0) {
|
|
176
|
-
return '<div class="proto-empty">No data for ' + esc(comp.label) + '</div>';
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
const cols = Object.keys(entity.rows[0]);
|
|
180
|
-
let html = '<div style="padding:16px 24px"><h3 style="font-family:var(--p-font-heading);font-size:14px;font-weight:600;margin-bottom:12px">' + esc(comp.label) + '</h3>';
|
|
181
|
-
html += '<table class="proto-table"><thead><tr>';
|
|
182
|
-
cols.forEach(function(col) { html += '<th>' + esc(col) + '</th>'; });
|
|
183
|
-
html += '</tr></thead><tbody>';
|
|
184
|
-
entity.rows.forEach(function(row) {
|
|
185
|
-
html += '<tr>';
|
|
186
|
-
cols.forEach(function(col) {
|
|
187
|
-
const val = row[col];
|
|
188
|
-
html += '<td>' + formatCell(val) + '</td>';
|
|
189
|
-
});
|
|
190
|
-
html += '</tr>';
|
|
191
|
-
});
|
|
192
|
-
html += '</tbody></table></div>';
|
|
193
|
-
return html;
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
function renderFormSection(comp) {
|
|
197
|
-
return '<div style="padding:24px"><h3 style="font-family:var(--p-font-heading);font-size:14px;font-weight:600;margin-bottom:16px">' + esc(comp.label) + '</h3>' +
|
|
198
|
-
'<div class="proto-form">' +
|
|
199
|
-
'<div class="proto-field"><label>Name</label><input type="text" placeholder="Enter name..." /></div>' +
|
|
200
|
-
'<div class="proto-field"><label>Description</label><textarea rows="3" placeholder="Enter description..."></textarea></div>' +
|
|
201
|
-
'<div class="proto-field"><label>Status</label><select><option>Active</option><option>Pending</option><option>Archived</option></select></div>' +
|
|
202
|
-
'<button class="proto-btn proto-btn-primary">Create</button>' +
|
|
203
|
-
'</div></div>';
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
function renderDetailPanel(comp) {
|
|
207
|
-
const entity = currentData.sampleData ? currentData.sampleData.find(function(e) { return e.entityName === comp.entity; }) : null;
|
|
208
|
-
const row = entity && entity.rows ? entity.rows[0] : null;
|
|
209
|
-
|
|
210
|
-
if (!row) {
|
|
211
|
-
return '<div style="padding:24px"><h3 style="font-family:var(--p-font-heading);font-size:14px;font-weight:600;margin-bottom:12px">' + esc(comp.label) + '</h3><div class="proto-empty">No data</div></div>';
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
let html = '<div style="padding:24px"><h3 style="font-family:var(--p-font-heading);font-size:14px;font-weight:600;margin-bottom:12px">' + esc(comp.label) + '</h3><div class="proto-detail">';
|
|
215
|
-
Object.keys(row).forEach(function(key) {
|
|
216
|
-
html += '<div class="proto-detail-row"><span class="proto-detail-label">' + esc(key) + '</span><span>' + formatCell(row[key]) + '</span></div>';
|
|
217
|
-
});
|
|
218
|
-
html += '</div></div>';
|
|
219
|
-
return html;
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
function renderCardGrid(comp) {
|
|
223
|
-
const entity = currentData.sampleData ? currentData.sampleData.find(function(e) { return e.entityName === comp.entity; }) : null;
|
|
224
|
-
if (!entity || !entity.rows || entity.rows.length === 0) {
|
|
225
|
-
return '<div class="proto-empty">No data for ' + esc(comp.label) + '</div>';
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
let html = '<div style="padding:24px"><h3 style="font-family:var(--p-font-heading);font-size:14px;font-weight:600;margin-bottom:12px">' + esc(comp.label) + '</h3><div style="display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px">';
|
|
229
|
-
entity.rows.slice(0, 6).forEach(function(row) {
|
|
230
|
-
const keys = Object.keys(row);
|
|
231
|
-
const title = row[keys[1]] || row[keys[0]] || 'Item';
|
|
232
|
-
html += '<div style="padding:16px;border:1px solid var(--p-border);border-radius:8px"><div style="font-weight:600;font-size:14px;margin-bottom:4px">' + esc(String(title)) + '</div>';
|
|
233
|
-
if (keys[2]) html += '<div style="font-size:12px;color:var(--p-secondary)">' + esc(String(row[keys[2]] || '')) + '</div>';
|
|
234
|
-
html += '</div>';
|
|
235
|
-
});
|
|
236
|
-
html += '</div></div>';
|
|
237
|
-
return html;
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
function formatCell(val) {
|
|
241
|
-
if (val === null || val === undefined) return '<span style="color:var(--p-secondary)">—</span>';
|
|
242
|
-
if (typeof val === 'boolean') return val ? '<span class="proto-badge proto-badge-success">Yes</span>' : '<span class="proto-badge proto-badge-warning">No</span>';
|
|
243
|
-
const s = String(val);
|
|
244
|
-
if (s === 'active' || s === 'completed' || s === 'approved') return '<span class="proto-badge proto-badge-success">' + esc(s) + '</span>';
|
|
245
|
-
if (s === 'pending' || s === 'scheduled' || s === 'processing') return '<span class="proto-badge proto-badge-warning">' + esc(s) + '</span>';
|
|
246
|
-
if (s === 'draft' || s === 'inactive') return '<span class="proto-badge proto-badge-info">' + esc(s) + '</span>';
|
|
247
|
-
return esc(s);
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
function esc(s) {
|
|
251
|
-
const div = document.createElement('div');
|
|
252
|
-
div.textContent = s;
|
|
253
|
-
return div.innerHTML;
|
|
254
|
-
}
|
|
255
|
-
</script>
|
|
256
|
-
</body>
|
|
257
|
-
</html>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
<svg width="1435" height="297" viewBox="0 0 1435 297" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
-
<path d="M117 296.4C80.6 296.4 52 286.347 31.2 266.24C10.4 245.787 0 218.053 0 183.04V5.2H65V182.52C65 200.893 69.507 215.107 78.52 225.16C87.533 234.867 100.36 239.72 117 239.72C133.293 239.72 145.947 234.867 154.96 225.16C164.32 215.107 169 200.893 169 182.52V5.2H234V183.04C234 218.053 223.427 245.787 202.28 266.24C181.133 286.347 152.707 296.4 117 296.4ZM297.237 291.2V5.2H360.68V59.8H378.36L360.68 74.88C360.68 51.307 367.44 32.9333 380.96 19.76C394.82 6.58669 413.72 0 437.64 0C465.72 0 488.08 9.35999 504.72 28.08C521.7 46.8 530.2 71.933 530.2 103.48V291.2H465.2V110.24C465.2 92.907 460.69 79.56 451.68 70.2C442.66 60.84 430.01 56.16 413.72 56.16C397.77 56.16 385.12 61.013 375.76 70.72C366.74 80.427 362.24 94.293 362.24 112.32V291.2H297.237ZM709.91 296.4C685.65 296.4 664.5 291.72 646.47 282.36C628.45 273 614.41 260 604.35 243.36C594.65 226.373 589.79 206.613 589.79 184.08V112.32C589.79 89.787 594.65 70.2 604.35 53.56C614.41 36.573 628.45 23.4 646.47 14.04C664.5 4.67999 685.65 0 709.91 0C733.83 0 754.63 4.67999 772.31 14.04C790.34 23.4 804.21 36.573 813.91 53.56C823.97 70.2 828.99 89.787 828.99 112.32V163.8H652.71V184.08C652.71 204.187 657.57 219.44 667.27 229.84C676.98 239.893 691.37 244.92 710.43 244.92C724.99 244.92 736.78 242.493 745.79 237.64C754.81 232.44 760.53 224.987 762.95 215.28H826.91C822.06 239.893 808.89 259.653 787.39 274.56C766.25 289.12 740.42 296.4 709.91 296.4ZM766.07 127.4V111.8C766.07 92.04 761.39 76.96 752.03 66.56C742.67 55.813 728.63 50.44 709.91 50.44C691.19 50.44 676.98 55.813 667.27 66.56C657.57 77.307 652.71 92.56 652.71 112.32V123.24L770.75 122.2L766.07 127.4ZM898.47 291.2V5.2H959.83V59.8H975.95L956.71 93.08C956.71 62.227 963.64 39 977.51 23.4C991.38 7.79999 1011.83 0 1038.87 0C1069.72 0 1093.99 9.5333 1111.67 28.6C1129.35 47.667 1138.19 74.013 1138.19 107.64V128.44H1070.07V112.32C1070.07 93.947 1065.22 79.733 1055.51 69.68C1046.15 59.627 1033.15 54.6 1016.51 54.6C999.52 54.6 986.35 59.627 976.99 69.68C967.98 79.733 963.47 93.947 963.47 112.32V291.2H898.47ZM1194.67 291.2V5.2H1256.03V59.8H1272.15L1252.91 93.08C1252.91 62.227 1259.84 39 1273.71 23.4C1287.57 7.79999 1308.03 0 1335.07 0C1365.92 0 1390.19 9.5333 1407.87 28.6C1425.55 47.667 1434.39 74.013 1434.39 107.64V128.44H1366.27V112.32C1366.27 93.947 1361.41 79.733 1351.71 69.68C1342.35 59.627 1329.35 54.6 1312.71 54.6C1295.72 54.6 1282.55 59.627 1273.19 69.68C1264.17 79.733 1259.67 93.947 1259.67 112.32V291.2H1194.67Z" fill="url(#paint0_linear_9_109)"/>
|
|
3
|
-
<defs>
|
|
4
|
-
<linearGradient id="paint0_linear_9_109" x1="-702" y1="-64.8" x2="1435" y2="447.2" gradientUnits="userSpaceOnUse">
|
|
5
|
-
<stop stop-color="#8B5CF6"/>
|
|
6
|
-
<stop offset="1" stop-color="#7C3AED"/>
|
|
7
|
-
</linearGradient>
|
|
8
|
-
</defs>
|
|
9
|
-
</svg>
|
package/dist/ui/unerr.png
DELETED
|
Binary file
|
package/dist/ui/unerr.svg
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
<svg width="512" height="512" viewBox="0 0 512 512" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
-
<defs>
|
|
3
|
-
<linearGradient id="brand-grad" x1="0" y1="0" x2="512" y2="512" gradientUnits="userSpaceOnUse">
|
|
4
|
-
<stop stop-color="#8B5CF6"/>
|
|
5
|
-
<stop offset="1" stop-color="#7C3AED"/>
|
|
6
|
-
</linearGradient>
|
|
7
|
-
<clipPath id="clip0">
|
|
8
|
-
<rect width="512" height="512" fill="white"/>
|
|
9
|
-
</clipPath>
|
|
10
|
-
</defs>
|
|
11
|
-
<g clip-path="url(#clip0)">
|
|
12
|
-
<path d="M43.5942 176.439L176.439 43.5943" stroke="url(#brand-grad)" stroke-width="40" stroke-linecap="round"/>
|
|
13
|
-
<path d="M31.1857 286.656L127.535 190.307" stroke="url(#brand-grad)" stroke-width="40" stroke-linecap="round"/>
|
|
14
|
-
<path d="M190.308 127.535L286.657 31.1856" stroke="url(#brand-grad)" stroke-width="40" stroke-linecap="round"/>
|
|
15
|
-
<path d="M54.5431 359.648L118.046 296.145" stroke="url(#brand-grad)" stroke-width="40" stroke-linecap="round"/>
|
|
16
|
-
<path d="M296.146 118.046L359.648 54.543" stroke="url(#brand-grad)" stroke-width="40" stroke-linecap="round"/>
|
|
17
|
-
<path d="M95.4183 416.582L153.812 358.188" stroke="url(#brand-grad)" stroke-width="40" stroke-linecap="round"/>
|
|
18
|
-
<path d="M358.188 153.812L416.582 95.4183" stroke="url(#brand-grad)" stroke-width="40" stroke-linecap="round"/>
|
|
19
|
-
<path d="M152.352 457.457L215.855 393.954" stroke="url(#brand-grad)" stroke-width="40" stroke-linecap="round"/>
|
|
20
|
-
<path d="M393.954 215.855L457.457 152.352" stroke="url(#brand-grad)" stroke-width="40" stroke-linecap="round"/>
|
|
21
|
-
<path d="M225.344 480.814L321.693 384.465" stroke="url(#brand-grad)" stroke-width="40" stroke-linecap="round"/>
|
|
22
|
-
<path d="M384.465 321.692L480.814 225.343" stroke="url(#brand-grad)" stroke-width="40" stroke-linecap="round"/>
|
|
23
|
-
<path d="M335.561 468.406L468.406 335.561" stroke="url(#brand-grad)" stroke-width="40" stroke-linecap="round"/>
|
|
24
|
-
</g>
|
|
25
|
-
</svg>
|
|
Binary file
|
|
Binary file
|