This is an automated email from the ASF dual-hosted git repository.
jli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/superset.git
The following commit(s) were added to refs/heads/master by this push:
new dbf5e1f1314 feat(theme): use IBM Plex Mono for code and numerical
displays (#37366)
dbf5e1f1314 is described below
commit dbf5e1f1314735dd5e19c6d244cf6bebb38a77a0
Author: Jean Massucatto <[email protected]>
AuthorDate: Thu Feb 12 14:32:41 2026 -0300
feat(theme): use IBM Plex Mono for code and numerical displays (#37366)
Co-authored-by: Mehmet Salih Yavuz <[email protected]>
Co-authored-by: Claude Opus 4.6 <[email protected]>
---
docs/package.json | 1 +
docs/yarn.lock | 5 +
superset-frontend/package-lock.json | 375 +--------------------
superset-frontend/package.json | 1 +
.../packages/superset-core/package.json | 2 +-
.../superset-core/src/ui/theme/GlobalStyles.tsx | 6 +-
.../superset-core/src/ui/theme/Theme.test.tsx | 2 +-
.../AsyncAceEditor/AsyncAceEditor.test.tsx | 15 +
.../src/components/AsyncAceEditor/index.tsx | 5 +-
.../src/components/Label/Label.test.tsx | 5 +
.../src/SqlLab/components/ResultSet/index.tsx | 1 +
.../src/components/RowCountLabel/index.tsx | 2 +-
.../src/pages/ExecutionLogList/index.tsx | 12 +-
superset/config.py | 2 +-
14 files changed, 62 insertions(+), 372 deletions(-)
diff --git a/docs/package.json b/docs/package.json
index 914919716ec..729ff7101af 100644
--- a/docs/package.json
+++ b/docs/package.json
@@ -48,6 +48,7 @@
"@emotion/react": "^11.13.3",
"@emotion/styled": "^11.14.1",
"@fontsource/fira-code": "^5.2.7",
+ "@fontsource/ibm-plex-mono": "^5.2.7",
"@fontsource/inter": "^5.2.8",
"@mdx-js/react": "^3.1.1",
"@saucelabs/theme-github-codeblock": "^0.3.0",
diff --git a/docs/yarn.lock b/docs/yarn.lock
index b8e15b6fdc0..895c7ecc231 100644
--- a/docs/yarn.lock
+++ b/docs/yarn.lock
@@ -2446,6 +2446,11 @@
resolved
"https://registry.npmjs.org/@fontsource/fira-code/-/fira-code-5.2.7.tgz"
integrity
sha512-tnB9NNund9TwIym8/7DMJe573nlPEQb+fKUV5GL8TBYXjIhDvL0D7mgmNVNQUPhXp+R7RylQeiBdkA4EbOHPGQ==
+"@fontsource/ibm-plex-mono@^5.2.7":
+ version "5.2.7"
+ resolved
"https://registry.yarnpkg.com/@fontsource/ibm-plex-mono/-/ibm-plex-mono-5.2.7.tgz#ef5b6f052115fdf6666208a5f8a0f13fcd7ba1fd"
+ integrity
sha512-MKAb8qV+CaiMQn2B0dIi1OV3565NYzp3WN5b4oT6LTkk+F0jR6j0ZN+5BKJiIhffDC3rtBULsYZE65+0018z9w==
+
"@fontsource/inter@^5.2.8":
version "5.2.8"
resolved "https://registry.npmjs.org/@fontsource/inter/-/inter-5.2.8.tgz"
diff --git a/superset-frontend/package-lock.json
b/superset-frontend/package-lock.json
index 8107c27018b..235a1ac45fa 100644
--- a/superset-frontend/package-lock.json
+++ b/superset-frontend/package-lock.json
@@ -28,6 +28,7 @@
"@emotion/cache": "^11.4.0",
"@emotion/react": "^11.14.0",
"@emotion/styled": "^11.14.1",
+ "@fontsource/ibm-plex-mono": "^5.2.7",
"@luma.gl/constants": "~9.2.5",
"@luma.gl/core": "~9.2.5",
"@luma.gl/engine": "~9.2.5",
@@ -4032,12 +4033,11 @@
}
}
},
- "node_modules/@fontsource/fira-code": {
+ "node_modules/@fontsource/ibm-plex-mono": {
"version": "5.2.7",
- "resolved":
"https://registry.npmjs.org/@fontsource/fira-code/-/fira-code-5.2.7.tgz",
- "integrity":
"sha512-tnB9NNund9TwIym8/7DMJe573nlPEQb+fKUV5GL8TBYXjIhDvL0D7mgmNVNQUPhXp+R7RylQeiBdkA4EbOHPGQ==",
+ "resolved":
"https://registry.npmjs.org/@fontsource/ibm-plex-mono/-/ibm-plex-mono-5.2.7.tgz",
+ "integrity":
"sha512-MKAb8qV+CaiMQn2B0dIi1OV3565NYzp3WN5b4oT6LTkk+F0jR6j0ZN+5BKJiIhffDC3rtBULsYZE65+0018z9w==",
"license": "OFL-1.1",
- "peer": true,
"funding": {
"url": "https://github.com/sponsors/ayuhito"
}
@@ -14452,18 +14452,6 @@
"@types/node": "*"
}
},
- "node_modules/@types/cheerio": {
- "version": "0.22.35",
- "resolved":
"https://registry.npmjs.org/@types/cheerio/-/cheerio-0.22.35.tgz",
- "integrity":
"sha512-yD57BchKRvTV+JD53UZ6PD8KWY5g5rvvMLRnZR3EQBCZXiDT/HR+pKpMzFGlWNhFrXlo7VPZXtKvIEwZkAWOIA==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "peer": true,
- "dependencies": {
- "@types/node": "*"
- }
- },
"node_modules/@types/chroma-js": {
"version": "2.4.5",
"resolved":
"https://registry.npmjs.org/@types/chroma-js/-/chroma-js-2.4.5.tgz",
@@ -15705,20 +15693,6 @@
"@types/node": "*"
}
},
- "node_modules/@types/webpack": {
- "version": "5.28.5",
- "resolved":
"https://registry.npmjs.org/@types/webpack/-/webpack-5.28.5.tgz",
- "integrity":
"sha512-wR87cgvxj3p6D0Crt1r5avwqffqPXUkNlnQ1mjU93G7gCuFjufZR4I6j8cz5g1F1tTYpfOOFvly+cmIQwL9wvw==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "peer": true,
- "dependencies": {
- "@types/node": "*",
- "tapable": "^2.2.0",
- "webpack": "^5"
- }
- },
"node_modules/@types/webpack-sources": {
"version": "3.2.3",
"resolved":
"https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-3.2.3.tgz",
@@ -17815,8 +17789,7 @@
"version": "1.43.6",
"resolved":
"https://registry.npmjs.org/ace-builds/-/ace-builds-1.43.6.tgz",
"integrity":
"sha512-L1ddibQ7F3vyXR2k2fg+I8TQTPWVA6CKeDQr/h2+8CeyTp3W6EQL8xNFZRTztuP8xNOAqL3IYPqdzs31GCjDvg==",
- "license": "BSD-3-Clause",
- "peer": true
+ "license": "BSD-3-Clause"
},
"node_modules/acorn": {
"version": "7.4.1",
@@ -18267,29 +18240,6 @@
"node": ">=8"
}
},
- "node_modules/array.prototype.filter": {
- "version": "1.0.4",
- "resolved":
"https://registry.npmjs.org/array.prototype.filter/-/array.prototype.filter-1.0.4.tgz",
- "integrity":
"sha512-r+mCJ7zXgXElgR4IRC+fkvNCeoaavWBs6EdCso5Tbcf+iEMKzBU/His60lt34WEZ9vlb8wDkZvQGcVI5GwkfoQ==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "peer": true,
- "dependencies": {
- "call-bind": "^1.0.7",
- "define-properties": "^1.2.1",
- "es-abstract": "^1.23.2",
- "es-array-method-boxes-properly": "^1.0.0",
- "es-object-atoms": "^1.0.0",
- "is-string": "^1.0.7"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/array.prototype.findlast": {
"version": "1.2.5",
"resolved":
"https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz",
@@ -23498,15 +23448,6 @@
"node": ">=8"
}
},
- "node_modules/discontinuous-range": {
- "version": "1.0.0",
- "resolved":
"https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz",
- "integrity":
"sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "peer": true
- },
"node_modules/distributions": {
"version": "2.2.0",
"resolved":
"https://registry.npmjs.org/distributions/-/distributions-2.2.0.tgz",
@@ -24103,87 +24044,6 @@
"node": ">=4"
}
},
- "node_modules/enzyme": {
- "version": "3.11.0",
- "resolved": "https://registry.npmjs.org/enzyme/-/enzyme-3.11.0.tgz",
- "integrity":
"sha512-Dw8/Gs4vRjxY6/6i9wU0V+utmQO9kvh9XLnz3LIudviOnVYDEe2ec+0k+NQoMamn1VrjKgCUOWj5jG/5M5M0Qw==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "peer": true,
- "dependencies": {
- "array.prototype.flat": "^1.2.3",
- "cheerio": "^1.0.0-rc.3",
- "enzyme-shallow-equal": "^1.0.1",
- "function.prototype.name": "^1.1.2",
- "has": "^1.0.3",
- "html-element-map": "^1.2.0",
- "is-boolean-object": "^1.0.1",
- "is-callable": "^1.1.5",
- "is-number-object": "^1.0.4",
- "is-regex": "^1.0.5",
- "is-string": "^1.0.5",
- "is-subset": "^0.1.1",
- "lodash.escape": "^4.0.1",
- "lodash.isequal": "^4.5.0",
- "object-inspect": "^1.7.0",
- "object-is": "^1.0.2",
- "object.assign": "^4.1.0",
- "object.entries": "^1.1.1",
- "object.values": "^1.1.1",
- "raf": "^3.4.1",
- "rst-selector-parser": "^2.2.3",
- "string.prototype.trim": "^1.2.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/enzyme-shallow-equal": {
- "version": "1.0.7",
- "resolved":
"https://registry.npmjs.org/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.7.tgz",
- "integrity":
"sha512-/um0GFqUXnpM9SvKtje+9Tjoz3f1fpBC3eXRFrNs8kpYn69JljciYP7KZTqM/YQbUY9KUjvKB4jo/q+L6WGGvg==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "peer": true,
- "dependencies": {
- "hasown": "^2.0.0",
- "object-is": "^1.1.5"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/enzyme-to-json": {
- "version": "3.6.2",
- "resolved":
"https://registry.npmjs.org/enzyme-to-json/-/enzyme-to-json-3.6.2.tgz",
- "integrity":
"sha512-Ynm6Z6R6iwQ0g2g1YToz6DWhxVnt8Dy1ijR2zynRKxTyBGA8rCDXU3rs2Qc4OKvUvc2Qoe1bcFK6bnPs20TrTg==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "peer": true,
- "dependencies": {
- "@types/cheerio": "^0.22.22",
- "lodash": "^4.17.21",
- "react-is": "^16.12.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "peerDependencies": {
- "enzyme": "^3.4.0"
- }
- },
- "node_modules/enzyme-to-json/node_modules/react-is": {
- "version": "16.13.1",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
- "integrity":
"sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "peer": true
- },
"node_modules/err-code": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz",
@@ -29079,22 +28939,6 @@
"safe-buffer": "~5.1.0"
}
},
- "node_modules/html-element-map": {
- "version": "1.3.1",
- "resolved":
"https://registry.npmjs.org/html-element-map/-/html-element-map-1.3.1.tgz",
- "integrity":
"sha512-6XMlxrAFX4UEEGxctfFnmrFaaZFNf9i5fNuV5wZ3WWQ4FVaNP1aX1LkX9j2mfEx1NpjeE/rL3nmgEn23GdFmrg==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "peer": true,
- "dependencies": {
- "array.prototype.filter": "^1.0.0",
- "call-bind": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/html-encoding-sniffer": {
"version": "6.0.0",
"resolved":
"https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-6.0.0.tgz",
@@ -30630,15 +30474,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-subset": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz",
- "integrity":
"sha512-6Ybun0IkarhmEqxXCNw/C0bna6Zb/TkfUX9UbwJtK6ObwAVCxmAP308WWTHviM/zAqXk05cdhYsUsZeGQh99iw==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "peer": true
- },
"node_modules/is-symbol": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz",
@@ -34695,15 +34530,15 @@
}
},
"node_modules/jsdom/node_modules/@noble/hashes": {
- "version": "2.0.1",
- "resolved":
"https://registry.npmjs.org/@noble/hashes/-/hashes-2.0.1.tgz",
- "integrity":
"sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw==",
+ "version": "1.8.0",
+ "resolved":
"https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz",
+ "integrity":
"sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==",
"dev": true,
"license": "MIT",
"optional": true,
"peer": true,
"engines": {
- "node": ">= 20.19.0"
+ "node": "^14.21.3 || >=16"
},
"funding": {
"url": "https://paulmillr.com/funding/"
@@ -36450,15 +36285,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/lodash.escape": {
- "version": "4.0.1",
- "resolved":
"https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz",
- "integrity":
"sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "peer": true
- },
"node_modules/lodash.flattendeep": {
"version": "4.4.0",
"resolved":
"https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz",
@@ -36662,17 +36488,6 @@
"yallist": "^3.0.2"
}
},
- "node_modules/luxon": {
- "version": "3.7.1",
- "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.7.1.tgz",
- "integrity":
"sha512-RkRWjA926cTvz5rAb1BqyWkKbbjzCGchDUIKMCUvNi17j6f6j8uHGDV82Aqcqtzd+icoYpELmG3ksgGiFNNcNg==",
- "license": "MIT",
- "optional": true,
- "peer": true,
- "engines": {
- "node": ">=12"
- }
- },
"node_modules/lz-string": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz",
@@ -38052,15 +37867,6 @@
"integrity":
"sha512-2I8/T3X/hLxB2oPHgqcNYUVdA/ZEFShT7IAujifIPMfKkNbLOqY8XCoyHCXrsdjb36dW9MwoTwBCFpXKMwNwaQ==",
"license": "MIT"
},
- "node_modules/moo": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz",
- "integrity":
"sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==",
- "dev": true,
- "license": "BSD-3-Clause",
- "optional": true,
- "peer": true
- },
"node_modules/mousetrap": {
"version": "1.6.5",
"resolved": "https://registry.npmjs.org/mousetrap/-/mousetrap-1.6.5.tgz",
@@ -38210,40 +38016,6 @@
"integrity":
"sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
"license": "MIT"
},
- "node_modules/nearley": {
- "version": "2.20.1",
- "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz",
- "integrity":
"sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "peer": true,
- "dependencies": {
- "commander": "^2.19.0",
- "moo": "^0.5.0",
- "railroad-diagrams": "^1.0.0",
- "randexp": "0.4.6"
- },
- "bin": {
- "nearley-railroad": "bin/nearley-railroad.js",
- "nearley-test": "bin/nearley-test.js",
- "nearley-unparse": "bin/nearley-unparse.js",
- "nearleyc": "bin/nearleyc.js"
- },
- "funding": {
- "type": "individual",
- "url": "https://nearley.js.org/#give-to-nearley"
- }
- },
- "node_modules/nearley/node_modules/commander": {
- "version": "2.20.3",
- "resolved":
"https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
- "integrity":
"sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "peer": true
- },
"node_modules/negotiator": {
"version": "0.6.3",
"resolved":
"https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
@@ -41657,31 +41429,6 @@
"performance-now": "^2.1.0"
}
},
- "node_modules/railroad-diagrams": {
- "version": "1.0.0",
- "resolved":
"https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz",
- "integrity":
"sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==",
- "dev": true,
- "license": "CC0-1.0",
- "optional": true,
- "peer": true
- },
- "node_modules/randexp": {
- "version": "0.4.6",
- "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz",
- "integrity":
"sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "peer": true,
- "dependencies": {
- "discontinuous-range": "1.0.0",
- "ret": "~0.1.10"
- },
- "engines": {
- "node": ">=0.12"
- }
- },
"node_modules/randombytes": {
"version": "2.1.0",
"resolved":
"https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
@@ -43108,21 +42855,6 @@
"node": ">=6"
}
},
- "node_modules/react-shallow-renderer": {
- "version": "16.15.0",
- "resolved":
"https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz",
- "integrity":
"sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==",
- "license": "MIT",
- "optional": true,
- "peer": true,
- "dependencies": {
- "object-assign": "^4.1.1",
- "react-is": "^16.12.0 || ^17.0.0 || ^18.0.0"
- },
- "peerDependencies": {
- "react": "^16.0.0 || ^17.0.0 || ^18.0.0"
- }
- },
"node_modules/react-sortable-hoc": {
"version": "2.0.0",
"resolved":
"https://registry.npmjs.org/react-sortable-hoc/-/react-sortable-hoc-2.0.0.tgz",
@@ -43165,31 +42897,6 @@
"react": "^16.8.3 || ^17.0.0-0 || ^18.0.0"
}
},
- "node_modules/react-test-renderer": {
- "version": "17.0.2",
- "resolved":
"https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-17.0.2.tgz",
- "integrity":
"sha512-yaQ9cB89c17PUb0x6UfWRs7kQCorVdHlutU1boVPEsB8IDZH6n9tHxMacc3y0JoXOJUsZb/t/Mb8FUWMKaM7iQ==",
- "license": "MIT",
- "optional": true,
- "peer": true,
- "dependencies": {
- "object-assign": "^4.1.1",
- "react-is": "^17.0.2",
- "react-shallow-renderer": "^16.13.1",
- "scheduler": "^0.20.2"
- },
- "peerDependencies": {
- "react": "17.0.2"
- }
- },
- "node_modules/react-test-renderer/node_modules/react-is": {
- "version": "17.0.2",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
- "integrity":
"sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
- "license": "MIT",
- "optional": true,
- "peer": true
- },
"node_modules/react-transition-group": {
"version": "4.4.5",
"resolved":
"https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz",
@@ -44977,18 +44684,6 @@
"node": ">=8"
}
},
- "node_modules/ret": {
- "version": "0.1.15",
- "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
- "integrity":
"sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "peer": true,
- "engines": {
- "node": ">=0.12"
- }
- },
"node_modules/retry": {
"version": "0.13.1",
"resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz",
@@ -45114,19 +44809,6 @@
"integrity":
"sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==",
"license": "Unlicense"
},
- "node_modules/rst-selector-parser": {
- "version": "2.2.3",
- "resolved":
"https://registry.npmjs.org/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz",
- "integrity":
"sha512-nDG1rZeP6oFTLN6yNDV/uiAvs1+FS/KlrEwh7+y7dpuApDBy6bI2HTBcc0/V8lv9OTqfyD34eF7au2pm8aBbhA==",
- "dev": true,
- "license": "BSD-3-Clause",
- "optional": true,
- "peer": true,
- "dependencies": {
- "lodash.flattendeep": "^4.4.0",
- "nearley": "^2.7.10"
- }
- },
"node_modules/run-applescript": {
"version": "7.0.0",
"resolved":
"https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz",
@@ -51174,15 +50856,15 @@
}
},
"node_modules/whatwg-url/node_modules/@noble/hashes": {
- "version": "2.0.1",
- "resolved":
"https://registry.npmjs.org/@noble/hashes/-/hashes-2.0.1.tgz",
- "integrity":
"sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw==",
+ "version": "1.8.0",
+ "resolved":
"https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz",
+ "integrity":
"sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==",
"dev": true,
"license": "MIT",
"optional": true,
"peer": true,
"engines": {
- "node": ">= 20.19.0"
+ "node": "^14.21.3 || >=16"
},
"funding": {
"url": "https://paulmillr.com/funding/"
@@ -52279,7 +51961,7 @@
"@emotion/cache": "^11.4.0",
"@emotion/react": "^11.4.1",
"@emotion/styled": "^11.14.1",
- "@fontsource/fira-code": "^5.2.6",
+ "@fontsource/ibm-plex-mono": "^5.2.7",
"@fontsource/inter": "^5.2.6",
"antd": "^5.26.0",
"jed": "^1.1.1",
@@ -52291,13 +51973,6 @@
"tinycolor2": "*"
}
},
- "packages/superset-core/node_modules/@types/lodash": {
- "version": "4.17.21",
- "resolved":
"https://registry.npmjs.org/@types/lodash/-/lodash-4.17.21.tgz",
- "integrity":
"sha512-FOvQ0YPD5NOfPgMzJihoT+Za5pdkDJWcbpuj1DjaKZIr/gxodQjY/uWEFlTNqW2ugXHUiL8lRQgw63dzKHZdeQ==",
- "dev": true,
- "license": "MIT"
- },
"packages/superset-ui-chart-controls": {
"name": "@superset-ui/chart-controls",
"version": "0.20.3",
@@ -52423,13 +52098,6 @@
"@types/unist": "*"
}
},
- "packages/superset-ui-core/node_modules/@types/lodash": {
- "version": "4.17.21",
- "resolved":
"https://registry.npmjs.org/@types/lodash/-/lodash-4.17.21.tgz",
- "integrity":
"sha512-FOvQ0YPD5NOfPgMzJihoT+Za5pdkDJWcbpuj1DjaKZIr/gxodQjY/uWEFlTNqW2ugXHUiL8lRQgw63dzKHZdeQ==",
- "dev": true,
- "license": "MIT"
- },
"packages/superset-ui-core/node_modules/@types/mdast": {
"version": "3.0.15",
"resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
@@ -52446,12 +52114,6 @@
"dev": true,
"license": "MIT"
},
- "packages/superset-ui-core/node_modules/ace-builds": {
- "version": "1.43.5",
- "resolved":
"https://registry.npmjs.org/ace-builds/-/ace-builds-1.43.5.tgz",
- "integrity":
"sha512-iH5FLBKdB7SVn9GR37UgA/tpQS8OTWIxWAuq3Ofaw+Qbc69FfPXsXd9jeW7KRG2xKpKMqBDnu0tHBrCWY5QI7A==",
- "license": "BSD-3-Clause"
- },
"packages/superset-ui-core/node_modules/character-entities-legacy": {
"version": "3.0.0",
"resolved":
"https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz",
@@ -54159,7 +53821,7 @@
"version": "0.0.1",
"license": "Apache-2.0",
"dependencies": {
- "@types/geojson": "^7946.0.10",
+ "@types/geojson": "^7946.0.16",
"geojson": "^0.5.0",
"lodash": "^4.17.23"
},
@@ -54239,13 +53901,6 @@
"react-dom": "^17.0.2"
}
},
- "plugins/plugin-chart-handlebars/node_modules/@types/lodash": {
- "version": "4.17.21",
- "resolved":
"https://registry.npmjs.org/@types/lodash/-/lodash-4.17.21.tgz",
- "integrity":
"sha512-FOvQ0YPD5NOfPgMzJihoT+Za5pdkDJWcbpuj1DjaKZIr/gxodQjY/uWEFlTNqW2ugXHUiL8lRQgw63dzKHZdeQ==",
- "dev": true,
- "license": "MIT"
- },
"plugins/plugin-chart-handlebars/node_modules/just-handlebars-helpers": {
"version": "1.0.19",
"resolved":
"https://registry.npmjs.org/just-handlebars-helpers/-/just-handlebars-helpers-1.0.19.tgz",
diff --git a/superset-frontend/package.json b/superset-frontend/package.json
index 6bc1d3f7fda..92eec8c019f 100644
--- a/superset-frontend/package.json
+++ b/superset-frontend/package.json
@@ -109,6 +109,7 @@
"@emotion/cache": "^11.4.0",
"@emotion/react": "^11.14.0",
"@emotion/styled": "^11.14.1",
+ "@fontsource/ibm-plex-mono": "^5.2.7",
"@luma.gl/constants": "~9.2.5",
"@luma.gl/core": "~9.2.5",
"@luma.gl/engine": "~9.2.5",
diff --git a/superset-frontend/packages/superset-core/package.json
b/superset-frontend/packages/superset-core/package.json
index 5a03d0780b9..544b8c29965 100644
--- a/superset-frontend/packages/superset-core/package.json
+++ b/superset-frontend/packages/superset-core/package.json
@@ -33,7 +33,7 @@
"@emotion/cache": "^11.4.0",
"@emotion/react": "^11.4.1",
"@emotion/styled": "^11.14.1",
- "@fontsource/fira-code": "^5.2.6",
+ "@fontsource/ibm-plex-mono": "^5.2.7",
"@fontsource/inter": "^5.2.6",
"nanoid": "^5.0.9",
"react": "^17.0.2",
diff --git
a/superset-frontend/packages/superset-core/src/ui/theme/GlobalStyles.tsx
b/superset-frontend/packages/superset-core/src/ui/theme/GlobalStyles.tsx
index 31cf1547f55..d3350a0efbd 100644
--- a/superset-frontend/packages/superset-core/src/ui/theme/GlobalStyles.tsx
+++ b/superset-frontend/packages/superset-core/src/ui/theme/GlobalStyles.tsx
@@ -23,9 +23,9 @@ import '@fontsource/inter/200.css';
import '@fontsource/inter/400.css';
import '@fontsource/inter/500.css';
import '@fontsource/inter/600.css';
-import '@fontsource/fira-code/400.css';
-import '@fontsource/fira-code/500.css';
-import '@fontsource/fira-code/600.css';
+import '@fontsource/ibm-plex-mono/400.css';
+import '@fontsource/ibm-plex-mono/500.css';
+import '@fontsource/ibm-plex-mono/600.css';
/* eslint-enable import/extensions */
import { css, useTheme, Global } from '@emotion/react';
diff --git
a/superset-frontend/packages/superset-core/src/ui/theme/Theme.test.tsx
b/superset-frontend/packages/superset-core/src/ui/theme/Theme.test.tsx
index e9b1612f15c..e837bd66db9 100644
--- a/superset-frontend/packages/superset-core/src/ui/theme/Theme.test.tsx
+++ b/superset-frontend/packages/superset-core/src/ui/theme/Theme.test.tsx
@@ -502,7 +502,7 @@ test('Theme base theme integration works with real-world
Superset base theme con
colorSuccess: '#5ac189',
colorInfo: '#66bcfe',
fontFamily: "'Inter', Helvetica, Arial",
- fontFamilyCode: "'Fira Code', 'Courier New', monospace",
+ fontFamilyCode: "'IBM Plex Mono', 'Courier New', monospace",
},
};
diff --git
a/superset-frontend/packages/superset-ui-core/src/components/AsyncAceEditor/AsyncAceEditor.test.tsx
b/superset-frontend/packages/superset-ui-core/src/components/AsyncAceEditor/AsyncAceEditor.test.tsx
index 51c78d0b9cf..358cb263e05 100644
---
a/superset-frontend/packages/superset-ui-core/src/components/AsyncAceEditor/AsyncAceEditor.test.tsx
+++
b/superset-frontend/packages/superset-ui-core/src/components/AsyncAceEditor/AsyncAceEditor.test.tsx
@@ -42,6 +42,21 @@ test('renders SQLEditor', async () => {
});
});
+test('SQLEditor uses fontFamilyCode from theme', async () => {
+ const ref = createRef<AceEditor>();
+ const { container } = render(<SQLEditor ref={ref as React.Ref<never>} />);
+
+ await waitFor(() => {
+ expect(container.querySelector(selector)).toBeInTheDocument();
+ });
+
+ const editorInstance = ref.current?.editor;
+ const fontFamily = editorInstance?.getOption('fontFamily');
+ // Verify font family is set (not undefined) and contains a monospace font
+ expect(fontFamily).toBeDefined();
+ expect(fontFamily).toMatch(/mono|courier|consolas/i);
+});
+
test('renders FullSQLEditor', async () => {
const { container } = render(<FullSQLEditor />);
diff --git
a/superset-frontend/packages/superset-ui-core/src/components/AsyncAceEditor/index.tsx
b/superset-frontend/packages/superset-ui-core/src/components/AsyncAceEditor/index.tsx
index 56b0e9576a7..90a2cafcc9a 100644
---
a/superset-frontend/packages/superset-ui-core/src/components/AsyncAceEditor/index.tsx
+++
b/superset-frontend/packages/superset-ui-core/src/components/AsyncAceEditor/index.tsx
@@ -114,7 +114,7 @@ export function AsyncAceEditor(
defaultMode,
defaultTheme,
defaultTabSize = 2,
- fontFamily = 'Menlo, Consolas, Courier New, Ubuntu Mono, source-code-pro,
Lucida Console, monospace',
+ fontFamily,
placeholder,
}: AsyncAceEditorOptions = {},
) {
@@ -171,6 +171,7 @@ export function AsyncAceEditor(
ref,
) {
const token = useTheme();
+ const editorFontFamily = fontFamily || token.fontFamilyCode;
const langTools = acequire('ace/ext/language_tools');
const setCompleters = useCallback(
@@ -436,7 +437,7 @@ export function AsyncAceEditor(
theme={theme}
tabSize={tabSize}
defaultValue={defaultValue}
- setOptions={{ fontFamily }}
+ setOptions={{ fontFamily: editorFontFamily }}
{...props}
/>
</>
diff --git
a/superset-frontend/packages/superset-ui-core/src/components/Label/Label.test.tsx
b/superset-frontend/packages/superset-ui-core/src/components/Label/Label.test.tsx
index 9d5dc184d31..216db7daa57 100644
---
a/superset-frontend/packages/superset-ui-core/src/components/Label/Label.test.tsx
+++
b/superset-frontend/packages/superset-ui-core/src/components/Label/Label.test.tsx
@@ -34,6 +34,11 @@ test('works with an onClick handler', () => {
expect(mockAction).toHaveBeenCalled();
});
+test('renders with monospace prop', () => {
+ const { getByText } = render(<Label monospace>monospace text</Label>);
+ expect(getByText('monospace text')).toBeInTheDocument();
+});
+
// test stories from the storybook!
test('renders all the storybook gallery variants', () => {
// @ts-expect-error: Suppress TypeScript error for LabelGallery usage
diff --git a/superset-frontend/src/SqlLab/components/ResultSet/index.tsx
b/superset-frontend/src/SqlLab/components/ResultSet/index.tsx
index 8a8a9b94edb..de3e64ee55c 100644
--- a/superset-frontend/src/SqlLab/components/ResultSet/index.tsx
+++ b/superset-frontend/src/SqlLab/components/ResultSet/index.tsx
@@ -531,6 +531,7 @@ const ResultSet = ({
placement="left"
>
<Label
+ monospace
css={css`
line-height: ${theme.fontSizeLG}px;
`}
diff --git a/superset-frontend/src/components/RowCountLabel/index.tsx
b/superset-frontend/src/components/RowCountLabel/index.tsx
index 8b60b02f583..fc367e307ea 100644
--- a/superset-frontend/src/components/RowCountLabel/index.tsx
+++ b/superset-frontend/src/components/RowCountLabel/index.tsx
@@ -39,7 +39,7 @@ export default function RowCountLabel(props:
RowCountLabelProps) {
limitReached || (rowcount === 0 && !loading) ? 'error' : 'default';
const formattedRowCount = getNumberFormatter()(rowcount);
const labelText = (
- <Label type={type}>
+ <Label type={type} monospace>
{loading ? (
t('Loading...')
) : (
diff --git a/superset-frontend/src/pages/ExecutionLogList/index.tsx
b/superset-frontend/src/pages/ExecutionLogList/index.tsx
index 2c2a31d0b8d..06b425f4f96 100644
--- a/superset-frontend/src/pages/ExecutionLogList/index.tsx
+++ b/superset-frontend/src/pages/ExecutionLogList/index.tsx
@@ -25,7 +25,7 @@ import {
} from '@superset-ui/core/utils/dates';
import { useEffect, useMemo } from 'react';
import { Link, useParams } from 'react-router-dom';
-import { Tooltip } from '@superset-ui/core/components';
+import { Label, Tooltip } from '@superset-ui/core/components';
import { ListView } from 'src/components';
import SubMenu from 'src/features/home/SubMenu';
import withToasts from 'src/components/MessageToasts/withToasts';
@@ -149,8 +149,14 @@ function ExecutionLog({
},
}: {
row: { original: AnnotationObject };
- }) =>
- fDuration(new Date(startDttm).getTime(), new
Date(endDttm).getTime()),
+ }) => (
+ <Label monospace>
+ {fDuration(
+ new Date(startDttm).getTime(),
+ new Date(endDttm).getTime(),
+ )}
+ </Label>
+ ),
Header: t('Duration'),
disableSortBy: true,
id: 'duration',
diff --git a/superset/config.py b/superset/config.py
index 423f6fb3bde..ec5653f2360 100644
--- a/superset/config.py
+++ b/superset/config.py
@@ -936,7 +936,7 @@ THEME_DEFAULT: Theme = {
# Fonts
"fontUrls": [],
"fontFamily": "Inter, Helvetica, Arial, sans-serif",
- "fontFamilyCode": "'Fira Code', 'Courier New', monospace",
+ "fontFamilyCode": "'IBM Plex Mono', 'Courier New', monospace",
# Extra tokens
"transitionTiming": 0.3,
"brandIconMaxWidth": 37,