mirror of
https://github.com/netbirdio/dashboard.git
synced 2026-09-23 00:30:43 -07:00
Compare commits
14
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1b103ba0f1 | ||
|
|
9fa1b4d568 | ||
|
|
0695ebd080 | ||
|
|
ca822d428e | ||
|
|
c49e766b92 | ||
|
|
07cff534e8 | ||
|
|
71f1745b82 | ||
|
|
ac428a0044 | ||
|
|
1de8538884 | ||
|
|
cec15f6471 | ||
|
|
87425f80a4 | ||
|
|
39c56ab22e | ||
|
|
571c2a6e64 | ||
|
|
8bb421abcd |
No files matched your search
Generated
+52
@@ -57,6 +57,7 @@
|
|||||||
"web-vitals": "^2.1.4"
|
"web-vitals": "^2.1.4"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@tailwindcss/typography": "^0.5.9",
|
||||||
"@types/react-syntax-highlighter": "^15.5.3"
|
"@types/react-syntax-highlighter": "^15.5.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -3478,6 +3479,21 @@
|
|||||||
"url": "https://github.com/sponsors/gregberge"
|
"url": "https://github.com/sponsors/gregberge"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@tailwindcss/typography": {
|
||||||
|
"version": "0.5.9",
|
||||||
|
"resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.9.tgz",
|
||||||
|
"integrity": "sha512-t8Sg3DyynFysV9f4JDOVISGsjazNb48AeIYQwcL+Bsq5uf4RYL75C1giZ43KISjeDGBaTN3Kxh7Xj/vRSMJUUg==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"lodash.castarray": "^4.4.0",
|
||||||
|
"lodash.isplainobject": "^4.0.6",
|
||||||
|
"lodash.merge": "^4.6.2",
|
||||||
|
"postcss-selector-parser": "6.0.10"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"tailwindcss": ">=3.0.0 || insiders"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@testing-library/dom": {
|
"node_modules/@testing-library/dom": {
|
||||||
"version": "8.18.1",
|
"version": "8.18.1",
|
||||||
"resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.18.1.tgz",
|
"resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.18.1.tgz",
|
||||||
@@ -10546,11 +10562,23 @@
|
|||||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
|
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
|
||||||
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
|
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
|
||||||
},
|
},
|
||||||
|
"node_modules/lodash.castarray": {
|
||||||
|
"version": "4.4.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz",
|
||||||
|
"integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"node_modules/lodash.debounce": {
|
"node_modules/lodash.debounce": {
|
||||||
"version": "4.0.8",
|
"version": "4.0.8",
|
||||||
"resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
|
"resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
|
||||||
"integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="
|
"integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="
|
||||||
},
|
},
|
||||||
|
"node_modules/lodash.isplainobject": {
|
||||||
|
"version": "4.0.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
|
||||||
|
"integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"node_modules/lodash.memoize": {
|
"node_modules/lodash.memoize": {
|
||||||
"version": "4.1.2",
|
"version": "4.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
|
||||||
@@ -19239,6 +19267,18 @@
|
|||||||
"loader-utils": "^2.0.0"
|
"loader-utils": "^2.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"@tailwindcss/typography": {
|
||||||
|
"version": "0.5.9",
|
||||||
|
"resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.9.tgz",
|
||||||
|
"integrity": "sha512-t8Sg3DyynFysV9f4JDOVISGsjazNb48AeIYQwcL+Bsq5uf4RYL75C1giZ43KISjeDGBaTN3Kxh7Xj/vRSMJUUg==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"lodash.castarray": "^4.4.0",
|
||||||
|
"lodash.isplainobject": "^4.0.6",
|
||||||
|
"lodash.merge": "^4.6.2",
|
||||||
|
"postcss-selector-parser": "6.0.10"
|
||||||
|
}
|
||||||
|
},
|
||||||
"@testing-library/dom": {
|
"@testing-library/dom": {
|
||||||
"version": "8.18.1",
|
"version": "8.18.1",
|
||||||
"resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.18.1.tgz",
|
"resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.18.1.tgz",
|
||||||
@@ -24518,11 +24558,23 @@
|
|||||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
|
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
|
||||||
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
|
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
|
||||||
},
|
},
|
||||||
|
"lodash.castarray": {
|
||||||
|
"version": "4.4.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz",
|
||||||
|
"integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"lodash.debounce": {
|
"lodash.debounce": {
|
||||||
"version": "4.0.8",
|
"version": "4.0.8",
|
||||||
"resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
|
"resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
|
||||||
"integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="
|
"integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="
|
||||||
},
|
},
|
||||||
|
"lodash.isplainobject": {
|
||||||
|
"version": "4.0.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
|
||||||
|
"integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"lodash.memoize": {
|
"lodash.memoize": {
|
||||||
"version": "4.1.2",
|
"version": "4.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
|
||||||
|
|||||||
@@ -78,6 +78,7 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@tailwindcss/typography": "^0.5.9",
|
||||||
"@types/react-syntax-highlighter": "^15.5.3"
|
"@types/react-syntax-highlighter": "^15.5.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,9 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
plugins: {
|
plugins: {
|
||||||
tailwindcss: {},
|
tailwindcss: {},
|
||||||
|
'postcss-focus-visible': {
|
||||||
|
replaceWith: '[data-focus-visible-added]',
|
||||||
|
},
|
||||||
autoprefixer: {},
|
autoprefixer: {},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
+1
-1
@@ -22,7 +22,7 @@ import {SecureLoading} from "./components/Loading";
|
|||||||
import DNS from "./views/DNS";
|
import DNS from "./views/DNS";
|
||||||
import Activity from "./views/Activity";
|
import Activity from "./views/Activity";
|
||||||
import Settings from "./views/Settings";
|
import Settings from "./views/Settings";
|
||||||
|
import './styles/tailwind.css'
|
||||||
|
|
||||||
const {Header, Content} = Layout;
|
const {Header, Content} = Layout;
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,54 @@
|
|||||||
|
function SunIcon(props) {
|
||||||
|
return (
|
||||||
|
<svg viewBox="0 0 20 20" fill="none" aria-hidden="true" {...props}>
|
||||||
|
<path d="M12.5 10a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0Z" />
|
||||||
|
<path
|
||||||
|
strokeLinecap="round"
|
||||||
|
d="M10 5.5v-1M13.182 6.818l.707-.707M14.5 10h1M13.182 13.182l.707.707M10 15.5v-1M6.11 13.889l.708-.707M4.5 10h1M6.11 6.111l.708.707"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function MoonIcon(props) {
|
||||||
|
return (
|
||||||
|
<svg viewBox="0 0 20 20" fill="none" aria-hidden="true" {...props}>
|
||||||
|
<path d="M15.224 11.724a5.5 5.5 0 0 1-6.949-6.949 5.5 5.5 0 1 0 6.949 6.949Z" />
|
||||||
|
</svg>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function ModeToggle() {
|
||||||
|
function disableTransitionsTemporarily() {
|
||||||
|
document.documentElement.classList.add('[&_*]:!transition-none')
|
||||||
|
window.setTimeout(() => {
|
||||||
|
document.documentElement.classList.remove('[&_*]:!transition-none')
|
||||||
|
}, 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
function toggleMode() {
|
||||||
|
disableTransitionsTemporarily()
|
||||||
|
|
||||||
|
let isDarkMode = document.documentElement.classList.toggle('dark')
|
||||||
|
|
||||||
|
if (document.documentElement.getAttribute("data-dark-mode") !== "false") {
|
||||||
|
delete window.localStorage.isDarkMode
|
||||||
|
document.documentElement.setAttribute('data-dark-mode', 'false');
|
||||||
|
} else {
|
||||||
|
window.localStorage.isDarkMode = isDarkMode
|
||||||
|
document.documentElement.setAttribute('data-dark-mode', 'true');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
className="flex h-6 w-6 items-center justify-center rounded-md transition hover:bg-zinc-900/5 dark:hover:bg-white/5"
|
||||||
|
aria-label="Toggle dark mode"
|
||||||
|
onClick={toggleMode}
|
||||||
|
>
|
||||||
|
<SunIcon className="h-5 w-5 stroke-zinc-900 hidden dark:block" />
|
||||||
|
<MoonIcon className="dark:hidden h-5 w-5 stroke-white dark:block" />
|
||||||
|
</button>
|
||||||
|
)
|
||||||
|
}
|
||||||
@@ -314,7 +314,7 @@ const NameServerGroupUpdate = () => {
|
|||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
const renderNSList = (fields: FormListFieldData[], {add, remove}, {errors}) => (
|
const renderNSList = (fields: FormListFieldData[], {add, remove}, {errors}) => (
|
||||||
<>
|
<>
|
||||||
<Row>Nameservers</Row>
|
<Row><label>Nameservers</label></Row>
|
||||||
{!!fields.length && (
|
{!!fields.length && (
|
||||||
|
|
||||||
<Row align='middle'>
|
<Row align='middle'>
|
||||||
@@ -384,7 +384,7 @@ const NameServerGroupUpdate = () => {
|
|||||||
<Row>
|
<Row>
|
||||||
<Space>
|
<Space>
|
||||||
<Col>
|
<Col>
|
||||||
Match domains
|
<label>Match domains</label>
|
||||||
</Col>
|
</Col>
|
||||||
<Col>
|
<Col>
|
||||||
<Tooltip title="Only queries to domains specified here will be resolved by these nameservers."
|
<Tooltip title="Only queries to domains specified here will be resolved by these nameservers."
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import {RootState} from "typesafe-actions";
|
|||||||
import {actions as userActions} from "../store/user";
|
import {actions as userActions} from "../store/user";
|
||||||
import {useGetTokenSilently} from "../utils/token";
|
import {useGetTokenSilently} from "../utils/token";
|
||||||
import {actions as personalAccessTokenActions} from "../store/personal-access-token";
|
import {actions as personalAccessTokenActions} from "../store/personal-access-token";
|
||||||
|
import {ModeToggle} from "./ModeToggle";
|
||||||
|
|
||||||
const {useBreakpoint} = Grid;
|
const {useBreakpoint} = Grid;
|
||||||
|
|
||||||
@@ -170,6 +171,9 @@ const Navbar = () => {
|
|||||||
defaultSelectedKeys={[location.pathname]} items={menuItems}/>
|
defaultSelectedKeys={[location.pathname]} items={menuItems}/>
|
||||||
</div>
|
</div>
|
||||||
</Col>
|
</Col>
|
||||||
|
<Col style={{width: "3%"}}>
|
||||||
|
<ModeToggle />
|
||||||
|
</Col>
|
||||||
{hideMenuUser &&
|
{hideMenuUser &&
|
||||||
<Col>
|
<Col>
|
||||||
<Dropdown overlay={menuUser} placement="bottomRight" trigger={['click']}>
|
<Dropdown overlay={menuUser} placement="bottomRight" trigger={['click']}>
|
||||||
|
|||||||
+914
-50
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,32 @@
|
|||||||
|
:root {
|
||||||
|
--shiki-color-text: theme('colors.white');
|
||||||
|
--shiki-token-constant: theme('colors.orange.300');
|
||||||
|
--shiki-token-string: theme('colors.orange.300');
|
||||||
|
--shiki-token-comment: theme('colors.zinc.500');
|
||||||
|
--shiki-token-keyword: theme('colors.sky.300');
|
||||||
|
--shiki-token-parameter: theme('colors.pink.300');
|
||||||
|
--shiki-token-function: theme('colors.violet.300');
|
||||||
|
--shiki-token-string-expression: theme('colors.orange.300');
|
||||||
|
--shiki-token-punctuation: theme('colors.zinc.200');
|
||||||
|
}
|
||||||
|
|
||||||
|
@tailwind base;
|
||||||
|
@tailwind components;
|
||||||
|
@tailwind utilities;
|
||||||
|
|
||||||
|
.videowrapper {
|
||||||
|
float: none;
|
||||||
|
clear: both;
|
||||||
|
width: 100%;
|
||||||
|
position: relative;
|
||||||
|
padding-bottom: 56.25%;
|
||||||
|
padding-top: 25px;
|
||||||
|
height: 0;
|
||||||
|
}
|
||||||
|
.videowrapper iframe {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
@@ -430,9 +430,9 @@ export const AccessControl = () => {
|
|||||||
/>
|
/>
|
||||||
<Column title="Direction" dataIndex="flow"
|
<Column title="Direction" dataIndex="flow"
|
||||||
render={(text, record: RuleDataTable, index) => {
|
render={(text, record: RuleDataTable, index) => {
|
||||||
const s = {minWidth: 50, textAlign: "center"} as React.CSSProperties
|
const s = {minWidth: 50, textAlign: "center", fontSize: "20pt", paddingBottom: "23px"} as React.CSSProperties
|
||||||
if (text === "bidirect")
|
if (text === "bidirect")
|
||||||
return <Tag color="processing" style={s}><img src={bidirect}/></Tag>
|
return <Tag color="processing" style={s}>↔</Tag>
|
||||||
else if (text === "srcToDest") {
|
else if (text === "srcToDest") {
|
||||||
return <Tag color="green" style={s}><img src={outbound}/></Tag>
|
return <Tag color="green" style={s}><img src={outbound}/></Tag>
|
||||||
} else if (text === "destToSrc") {
|
} else if (text === "destToSrc") {
|
||||||
|
|||||||
@@ -313,7 +313,7 @@ export const RegularUsers = () => {
|
|||||||
<Paragraph>Manage users and their
|
<Paragraph>Manage users and their
|
||||||
permissions.{(window.location.hostname == "app.netbird.io") ? "Same-domain email users are added automatically on first sign-in." : ""}</Paragraph>
|
permissions.{(window.location.hostname == "app.netbird.io") ? "Same-domain email users are added automatically on first sign-in." : ""}</Paragraph>
|
||||||
<Space direction="vertical" size="large" style={{display: 'flex'}}>
|
<Space direction="vertical" size="large" style={{display: 'flex'}}>
|
||||||
<Row gutter={[16, 24]}>
|
<Row gutter={[16, 24]} style={{paddingBottom: "0px"}}>
|
||||||
<Col xs={24} sm={24} md={8} lg={8} xl={8} xxl={8} span={8}>
|
<Col xs={24} sm={24} md={8} lg={8} xl={8} xxl={8} span={8}>
|
||||||
<Input allowClear value={textToSearch} onPressEnter={searchDataTable}
|
<Input allowClear value={textToSearch} onPressEnter={searchDataTable}
|
||||||
placeholder="Search..." onChange={onChangeTextToSearch}/>
|
placeholder="Search..." onChange={onChangeTextToSearch}/>
|
||||||
|
|||||||
@@ -329,9 +329,9 @@ export const SetupKeys = () => {
|
|||||||
<Col span={24}>
|
<Col span={24}>
|
||||||
<Title level={4}>Setup Keys</Title>
|
<Title level={4}>Setup Keys</Title>
|
||||||
<Paragraph
|
<Paragraph
|
||||||
style={{
|
// style={{
|
||||||
color: dataTable.length ? "black" : "#818183",
|
// color: dataTable.length ? "black" : "#818183",
|
||||||
}}
|
// }}
|
||||||
>
|
>
|
||||||
A list of all the setup keys in your account including their name, state, type and
|
A list of all the setup keys in your account including their name, state, type and
|
||||||
expiration.
|
expiration.
|
||||||
|
|||||||
+36
-6
@@ -1,11 +1,41 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
purge: ['./src/**/*.{js,jsx,ts,tsx}', './public/index.html'],
|
purge: ['./src/**/*.{js,jsx,ts,tsx}', './public/index.html'],
|
||||||
darkMode: false, // or 'media' or 'class'
|
darkMode: "class", // or 'media' or 'class'
|
||||||
theme: {
|
theme: {
|
||||||
extend: {}
|
fontSize: {
|
||||||
|
'2xs': ['0.75rem', { lineHeight: '1.25rem' }],
|
||||||
|
xs: ['0.8125rem', { lineHeight: '1.5rem' }],
|
||||||
|
sm: ['0.875rem', { lineHeight: '1.5rem' }],
|
||||||
|
base: ['1rem', { lineHeight: '1.75rem' }],
|
||||||
|
lg: ['1.125rem', { lineHeight: '1.75rem' }],
|
||||||
|
xl: ['1.25rem', { lineHeight: '1.75rem' }],
|
||||||
|
'2xl': ['1.5rem', { lineHeight: '2rem' }],
|
||||||
|
'3xl': ['1.875rem', { lineHeight: '2.25rem' }],
|
||||||
|
'4xl': ['2.25rem', { lineHeight: '2.5rem' }],
|
||||||
|
'5xl': ['3rem', { lineHeight: '1' }],
|
||||||
|
'6xl': ['3.75rem', { lineHeight: '1' }],
|
||||||
|
'7xl': ['4.5rem', { lineHeight: '1' }],
|
||||||
|
'8xl': ['6rem', { lineHeight: '1' }],
|
||||||
|
'9xl': ['8rem', { lineHeight: '1' }],
|
||||||
|
},
|
||||||
|
typography: require('./typography'),
|
||||||
|
extend: {
|
||||||
|
boxShadow: {
|
||||||
|
glow: '0 0 4px rgb(0 0 0 / 0.1)',
|
||||||
|
},
|
||||||
|
maxWidth: {
|
||||||
|
lg: '33rem',
|
||||||
|
'2xl': '40rem',
|
||||||
|
'3xl': '50rem',
|
||||||
|
'5xl': '66rem',
|
||||||
|
},
|
||||||
|
opacity: {
|
||||||
|
1: '0.01',
|
||||||
|
2.5: '0.025',
|
||||||
|
7.5: '0.075',
|
||||||
|
15: '0.15',
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
variants: {
|
plugins: [require('@tailwindcss/typography')],
|
||||||
extend: {}
|
|
||||||
},
|
|
||||||
plugins: []
|
|
||||||
};
|
};
|
||||||
+357
@@ -0,0 +1,357 @@
|
|||||||
|
module.exports = ({ theme }) => ({
|
||||||
|
DEFAULT: {
|
||||||
|
css: {
|
||||||
|
'--tw-prose-body': theme('colors.zinc.700'),
|
||||||
|
'--tw-prose-headings': theme('colors.zinc.900'),
|
||||||
|
'--tw-prose-links': theme('colors.orange.500'),
|
||||||
|
'--tw-prose-links-hover': theme('colors.orange.600'),
|
||||||
|
'--tw-prose-links-underline': theme('colors.orange.500 / 0.3'),
|
||||||
|
'--tw-prose-bold': theme('colors.zinc.900'),
|
||||||
|
'--tw-prose-counters': theme('colors.zinc.500'),
|
||||||
|
'--tw-prose-bullets': theme('colors.zinc.300'),
|
||||||
|
'--tw-prose-hr': theme('colors.zinc.900 / 0.05'),
|
||||||
|
'--tw-prose-quotes': theme('colors.zinc.900'),
|
||||||
|
'--tw-prose-quote-borders': theme('colors.zinc.200'),
|
||||||
|
'--tw-prose-captions': theme('colors.zinc.500'),
|
||||||
|
'--tw-prose-code': theme('colors.zinc.900'),
|
||||||
|
'--tw-prose-code-bg': theme('colors.zinc.100'),
|
||||||
|
'--tw-prose-code-ring': theme('colors.zinc.300'),
|
||||||
|
'--tw-prose-th-borders': theme('colors.zinc.300'),
|
||||||
|
'--tw-prose-td-borders': theme('colors.zinc.200'),
|
||||||
|
|
||||||
|
'--tw-prose-invert-body': theme('colors.zinc.400'),
|
||||||
|
'--tw-prose-invert-headings': theme('colors.white'),
|
||||||
|
'--tw-prose-invert-links': theme('colors.orange.400'),
|
||||||
|
'--tw-prose-invert-links-hover': theme('colors.orange.500'),
|
||||||
|
'--tw-prose-invert-links-underline': theme('colors.orange.500 / 0.3'),
|
||||||
|
'--tw-prose-invert-bold': theme('colors.white'),
|
||||||
|
'--tw-prose-invert-counters': theme('colors.zinc.400'),
|
||||||
|
'--tw-prose-invert-bullets': theme('colors.zinc.600'),
|
||||||
|
'--tw-prose-invert-hr': theme('colors.white / 0.05'),
|
||||||
|
'--tw-prose-invert-quotes': theme('colors.zinc.100'),
|
||||||
|
'--tw-prose-invert-quote-borders': theme('colors.zinc.700'),
|
||||||
|
'--tw-prose-invert-captions': theme('colors.zinc.400'),
|
||||||
|
'--tw-prose-invert-code': theme('colors.white'),
|
||||||
|
'--tw-prose-invert-code-bg': theme('colors.zinc.700 / 0.15'),
|
||||||
|
'--tw-prose-invert-code-ring': theme('colors.white / 0.1'),
|
||||||
|
'--tw-prose-invert-th-borders': theme('colors.zinc.600'),
|
||||||
|
'--tw-prose-invert-td-borders': theme('colors.zinc.700'),
|
||||||
|
|
||||||
|
// Base
|
||||||
|
color: 'var(--tw-prose-body)',
|
||||||
|
fontSize: theme('fontSize.sm')[0],
|
||||||
|
lineHeight: theme('lineHeight.7'),
|
||||||
|
|
||||||
|
// Layout
|
||||||
|
'> *': {
|
||||||
|
maxWidth: theme('maxWidth.2xl'),
|
||||||
|
marginLeft: 'auto',
|
||||||
|
marginRight: 'auto',
|
||||||
|
'@screen lg': {
|
||||||
|
maxWidth: theme('maxWidth.3xl'),
|
||||||
|
marginLeft: `calc(50% - min(50%, ${theme('maxWidth.lg')}))`,
|
||||||
|
marginRight: `calc(50% - min(50%, ${theme('maxWidth.lg')}))`,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
// Text
|
||||||
|
p: {
|
||||||
|
marginTop: theme('spacing.6'),
|
||||||
|
marginBottom: theme('spacing.6'),
|
||||||
|
},
|
||||||
|
'[class~="lead"]': {
|
||||||
|
fontSize: theme('fontSize.base')[0],
|
||||||
|
...theme('fontSize.base')[1],
|
||||||
|
},
|
||||||
|
|
||||||
|
// Lists
|
||||||
|
ol: {
|
||||||
|
listStyleType: 'decimal',
|
||||||
|
marginTop: theme('spacing.5'),
|
||||||
|
marginBottom: theme('spacing.5'),
|
||||||
|
paddingLeft: '1.625rem',
|
||||||
|
},
|
||||||
|
'ol[type="A"]': {
|
||||||
|
listStyleType: 'upper-alpha',
|
||||||
|
},
|
||||||
|
'ol[type="a"]': {
|
||||||
|
listStyleType: 'lower-alpha',
|
||||||
|
},
|
||||||
|
'ol[type="A" s]': {
|
||||||
|
listStyleType: 'upper-alpha',
|
||||||
|
},
|
||||||
|
'ol[type="a" s]': {
|
||||||
|
listStyleType: 'lower-alpha',
|
||||||
|
},
|
||||||
|
'ol[type="I"]': {
|
||||||
|
listStyleType: 'upper-roman',
|
||||||
|
},
|
||||||
|
'ol[type="i"]': {
|
||||||
|
listStyleType: 'lower-roman',
|
||||||
|
},
|
||||||
|
'ol[type="I" s]': {
|
||||||
|
listStyleType: 'upper-roman',
|
||||||
|
},
|
||||||
|
'ol[type="i" s]': {
|
||||||
|
listStyleType: 'lower-roman',
|
||||||
|
},
|
||||||
|
'ol[type="1"]': {
|
||||||
|
listStyleType: 'decimal',
|
||||||
|
},
|
||||||
|
ul: {
|
||||||
|
listStyleType: 'disc',
|
||||||
|
marginTop: theme('spacing.5'),
|
||||||
|
marginBottom: theme('spacing.5'),
|
||||||
|
paddingLeft: '1.625rem',
|
||||||
|
},
|
||||||
|
li: {
|
||||||
|
marginTop: theme('spacing.2'),
|
||||||
|
marginBottom: theme('spacing.2'),
|
||||||
|
},
|
||||||
|
':is(ol, ul) > li': {
|
||||||
|
paddingLeft: theme('spacing[1.5]'),
|
||||||
|
},
|
||||||
|
'ol > li::marker': {
|
||||||
|
fontWeight: '400',
|
||||||
|
color: 'var(--tw-prose-counters)',
|
||||||
|
},
|
||||||
|
'ul > li::marker': {
|
||||||
|
color: 'var(--tw-prose-bullets)',
|
||||||
|
},
|
||||||
|
'> ul > li p': {
|
||||||
|
marginTop: theme('spacing.3'),
|
||||||
|
marginBottom: theme('spacing.3'),
|
||||||
|
},
|
||||||
|
'> ul > li > *:first-child': {
|
||||||
|
marginTop: theme('spacing.5'),
|
||||||
|
},
|
||||||
|
'> ul > li > *:last-child': {
|
||||||
|
marginBottom: theme('spacing.5'),
|
||||||
|
},
|
||||||
|
'> ol > li > *:first-child': {
|
||||||
|
marginTop: theme('spacing.5'),
|
||||||
|
},
|
||||||
|
'> ol > li > *:last-child': {
|
||||||
|
marginBottom: theme('spacing.5'),
|
||||||
|
},
|
||||||
|
'ul ul, ul ol, ol ul, ol ol': {
|
||||||
|
marginTop: theme('spacing.3'),
|
||||||
|
marginBottom: theme('spacing.3'),
|
||||||
|
},
|
||||||
|
|
||||||
|
// Horizontal rules
|
||||||
|
hr: {
|
||||||
|
borderColor: 'var(--tw-prose-hr)',
|
||||||
|
borderTopWidth: 1,
|
||||||
|
marginTop: theme('spacing.16'),
|
||||||
|
marginBottom: theme('spacing.16'),
|
||||||
|
maxWidth: 'none',
|
||||||
|
marginLeft: `calc(-1 * ${theme('spacing.4')})`,
|
||||||
|
marginRight: `calc(-1 * ${theme('spacing.4')})`,
|
||||||
|
'@screen sm': {
|
||||||
|
marginLeft: `calc(-1 * ${theme('spacing.6')})`,
|
||||||
|
marginRight: `calc(-1 * ${theme('spacing.6')})`,
|
||||||
|
},
|
||||||
|
'@screen lg': {
|
||||||
|
marginLeft: `calc(-1 * ${theme('spacing.8')})`,
|
||||||
|
marginRight: `calc(-1 * ${theme('spacing.8')})`,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
// Quotes
|
||||||
|
blockquote: {
|
||||||
|
fontWeight: '500',
|
||||||
|
fontStyle: 'italic',
|
||||||
|
color: 'var(--tw-prose-quotes)',
|
||||||
|
borderLeftWidth: '0.25rem',
|
||||||
|
borderLeftColor: 'var(--tw-prose-quote-borders)',
|
||||||
|
quotes: '"\\201C""\\201D""\\2018""\\2019"',
|
||||||
|
marginTop: theme('spacing.8'),
|
||||||
|
marginBottom: theme('spacing.8'),
|
||||||
|
paddingLeft: theme('spacing.5'),
|
||||||
|
},
|
||||||
|
'blockquote p:first-of-type::before': {
|
||||||
|
content: 'open-quote',
|
||||||
|
},
|
||||||
|
'blockquote p:last-of-type::after': {
|
||||||
|
content: 'close-quote',
|
||||||
|
},
|
||||||
|
|
||||||
|
// Headings
|
||||||
|
h1: {
|
||||||
|
color: 'var(--tw-prose-headings)',
|
||||||
|
fontWeight: '700',
|
||||||
|
fontSize: theme('fontSize.2xl')[0],
|
||||||
|
...theme('fontSize.2xl')[1],
|
||||||
|
marginBottom: theme('spacing.2'),
|
||||||
|
},
|
||||||
|
h2: {
|
||||||
|
color: 'var(--tw-prose-headings)',
|
||||||
|
fontWeight: '600',
|
||||||
|
fontSize: theme('fontSize.lg')[0],
|
||||||
|
...theme('fontSize.lg')[1],
|
||||||
|
marginTop: theme('spacing.16'),
|
||||||
|
marginBottom: theme('spacing.2'),
|
||||||
|
},
|
||||||
|
h3: {
|
||||||
|
color: 'var(--tw-prose-headings)',
|
||||||
|
fontSize: theme('fontSize.base')[0],
|
||||||
|
...theme('fontSize.base')[1],
|
||||||
|
fontWeight: '600',
|
||||||
|
marginTop: theme('spacing.10'),
|
||||||
|
marginBottom: theme('spacing.2'),
|
||||||
|
},
|
||||||
|
|
||||||
|
// Media
|
||||||
|
'img, video, figure': {
|
||||||
|
marginTop: theme('spacing.8'),
|
||||||
|
marginBottom: theme('spacing.8'),
|
||||||
|
},
|
||||||
|
'figure > *': {
|
||||||
|
marginTop: '0',
|
||||||
|
marginBottom: '0',
|
||||||
|
},
|
||||||
|
figcaption: {
|
||||||
|
color: 'var(--tw-prose-captions)',
|
||||||
|
fontSize: theme('fontSize.xs')[0],
|
||||||
|
...theme('fontSize.xs')[1],
|
||||||
|
marginTop: theme('spacing.2'),
|
||||||
|
},
|
||||||
|
|
||||||
|
// Tables
|
||||||
|
table: {
|
||||||
|
width: '100%',
|
||||||
|
tableLayout: 'auto',
|
||||||
|
textAlign: 'left',
|
||||||
|
marginTop: theme('spacing.8'),
|
||||||
|
marginBottom: theme('spacing.8'),
|
||||||
|
lineHeight: theme('lineHeight.6'),
|
||||||
|
},
|
||||||
|
thead: {
|
||||||
|
borderBottomWidth: '1px',
|
||||||
|
borderBottomColor: 'var(--tw-prose-th-borders)',
|
||||||
|
},
|
||||||
|
'thead th': {
|
||||||
|
color: 'var(--tw-prose-headings)',
|
||||||
|
fontWeight: '600',
|
||||||
|
verticalAlign: 'bottom',
|
||||||
|
paddingRight: theme('spacing.2'),
|
||||||
|
paddingBottom: theme('spacing.2'),
|
||||||
|
paddingLeft: theme('spacing.2'),
|
||||||
|
},
|
||||||
|
'thead th:first-child': {
|
||||||
|
paddingLeft: '0',
|
||||||
|
},
|
||||||
|
'thead th:last-child': {
|
||||||
|
paddingRight: '0',
|
||||||
|
},
|
||||||
|
'tbody tr': {
|
||||||
|
borderBottomWidth: '1px',
|
||||||
|
borderBottomColor: 'var(--tw-prose-td-borders)',
|
||||||
|
},
|
||||||
|
'tbody tr:last-child': {
|
||||||
|
borderBottomWidth: '0',
|
||||||
|
},
|
||||||
|
'tbody td': {
|
||||||
|
verticalAlign: 'baseline',
|
||||||
|
},
|
||||||
|
tfoot: {
|
||||||
|
borderTopWidth: '1px',
|
||||||
|
borderTopColor: 'var(--tw-prose-th-borders)',
|
||||||
|
},
|
||||||
|
'tfoot td': {
|
||||||
|
verticalAlign: 'top',
|
||||||
|
},
|
||||||
|
':is(tbody, tfoot) td': {
|
||||||
|
paddingTop: theme('spacing.2'),
|
||||||
|
paddingRight: theme('spacing.2'),
|
||||||
|
paddingBottom: theme('spacing.2'),
|
||||||
|
paddingLeft: theme('spacing.2'),
|
||||||
|
},
|
||||||
|
':is(tbody, tfoot) td:first-child': {
|
||||||
|
paddingLeft: '0',
|
||||||
|
},
|
||||||
|
':is(tbody, tfoot) td:last-child': {
|
||||||
|
paddingRight: '0',
|
||||||
|
},
|
||||||
|
|
||||||
|
// Inline elements
|
||||||
|
a: {
|
||||||
|
color: 'var(--tw-prose-links)',
|
||||||
|
textDecoration: 'underline transparent',
|
||||||
|
fontWeight: '500',
|
||||||
|
transitionProperty: 'color, text-decoration-color',
|
||||||
|
transitionDuration: theme('transitionDuration.DEFAULT'),
|
||||||
|
transitionTimingFunction: theme('transitionTimingFunction.DEFAULT'),
|
||||||
|
'&:hover': {
|
||||||
|
color: 'var(--tw-prose-links-hover)',
|
||||||
|
textDecorationColor: 'var(--tw-prose-links-underline)',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
':is(h1, h2, h3) a': {
|
||||||
|
fontWeight: 'inherit',
|
||||||
|
},
|
||||||
|
strong: {
|
||||||
|
color: 'var(--tw-prose-bold)',
|
||||||
|
fontWeight: '600',
|
||||||
|
},
|
||||||
|
':is(a, blockquote, thead th) strong': {
|
||||||
|
color: 'inherit',
|
||||||
|
},
|
||||||
|
code: {
|
||||||
|
color: 'var(--tw-prose-code)',
|
||||||
|
borderRadius: theme('borderRadius.lg'),
|
||||||
|
paddingTop: theme('padding.1'),
|
||||||
|
paddingRight: theme('padding[1.5]'),
|
||||||
|
paddingBottom: theme('padding.1'),
|
||||||
|
paddingLeft: theme('padding[1.5]'),
|
||||||
|
boxShadow: 'inset 0 0 0 1px var(--tw-prose-code-ring)',
|
||||||
|
backgroundColor: 'var(--tw-prose-code-bg)',
|
||||||
|
fontSize: theme('fontSize.2xs'),
|
||||||
|
},
|
||||||
|
':is(a, h1, h2, h3, blockquote, thead th) code': {
|
||||||
|
color: 'inherit',
|
||||||
|
},
|
||||||
|
'h2 code': {
|
||||||
|
fontSize: theme('fontSize.base')[0],
|
||||||
|
fontWeight: 'inherit',
|
||||||
|
},
|
||||||
|
'h3 code': {
|
||||||
|
fontSize: theme('fontSize.sm')[0],
|
||||||
|
fontWeight: 'inherit',
|
||||||
|
},
|
||||||
|
|
||||||
|
// Overrides
|
||||||
|
':is(h1, h2, h3) + *': {
|
||||||
|
marginTop: '0',
|
||||||
|
},
|
||||||
|
'> :first-child': {
|
||||||
|
marginTop: '0 !important',
|
||||||
|
},
|
||||||
|
'> :last-child': {
|
||||||
|
marginBottom: '0 !important',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
invert: {
|
||||||
|
css: {
|
||||||
|
'--tw-prose-body': 'var(--tw-prose-invert-body)',
|
||||||
|
'--tw-prose-headings': 'var(--tw-prose-invert-headings)',
|
||||||
|
'--tw-prose-links': 'var(--tw-prose-invert-links)',
|
||||||
|
'--tw-prose-links-hover': 'var(--tw-prose-invert-links-hover)',
|
||||||
|
'--tw-prose-links-underline': 'var(--tw-prose-invert-links-underline)',
|
||||||
|
'--tw-prose-bold': 'var(--tw-prose-invert-bold)',
|
||||||
|
'--tw-prose-counters': 'var(--tw-prose-invert-counters)',
|
||||||
|
'--tw-prose-bullets': 'var(--tw-prose-invert-bullets)',
|
||||||
|
'--tw-prose-hr': 'var(--tw-prose-invert-hr)',
|
||||||
|
'--tw-prose-quotes': 'var(--tw-prose-invert-quotes)',
|
||||||
|
'--tw-prose-quote-borders': 'var(--tw-prose-invert-quote-borders)',
|
||||||
|
'--tw-prose-captions': 'var(--tw-prose-invert-captions)',
|
||||||
|
'--tw-prose-code': 'var(--tw-prose-invert-code)',
|
||||||
|
'--tw-prose-code-bg': 'var(--tw-prose-invert-code-bg)',
|
||||||
|
'--tw-prose-code-ring': 'var(--tw-prose-invert-code-ring)',
|
||||||
|
'--tw-prose-th-borders': 'var(--tw-prose-invert-th-borders)',
|
||||||
|
'--tw-prose-td-borders': 'var(--tw-prose-invert-td-borders)',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
Reference in new issue
Block a user