Кажется, я не могу найти решение этой проблемы, я использую NextUI, мне удалось заставить его работать для некоторых компонентов в качестве навигационной панели, что обычно означает, что я правильно установил nextui, я правильно настроил попутный ветер, но стиль не работает. Не применяется к модальным окнам и полям ввода NextUI.
Вот моя конфигурация попутного ветра:
module.exports = {
content: [
"./app/**/*.{js,ts,jsx,tsx,mdx}",
"./pages/**/*.{js,ts,jsx,tsx}",
"./components/**/*.{js,ts,jsx,tsx}",
"./node_modules/@nextui-org/**/**/*.{js,ts,jsx,tsx}",
],
theme: {
extend: {},
},
plugins: [],
}
Вот мой компонент, в котором я использую компоненты NextUI, которые доставляют мне проблемы:
import {
Modal,
ModalContent,
ModalHeader,
ModalBody,
ModalFooter,
Button,
Input
} from "@nextui-org/react";
import { useState } from "react";
function LoginModal(props) {
const [emailValue, setEmailValue] = useState('')
const [passwordValue, setPasswordValue] = useState('')
const [errorMessage, setErrorMessage] = useState([])
return (
<Modal
isDismissable = {false}
isKeyboardDismissDisabled = {true}
backdrop = "opaque"
className = {{
backdrop: "bg-gradient-to-t from-zinc-900 to-zinc-900/10 backdrop-opacity-20"
}}
hideCloseButton = {true}
defaultOpen = {true}
>
<ModalContent>
{(onClose) => (
<>
{errorMessage && errorMessage.map(error => {
return <h1 className = " text-red-800 font-sans">{error}</h1>
})}
<ModalHeader className = "font-sans">Admin Connection</ModalHeader>
<ModalBody>
<div className = "flex w-full flex-wrap md:flex-nowrap mb-6 md:mb-0 gap-4">
<Input
type = "email"
label = "Email"
variant = "flat"
onValueChange = {setEmailValue}
value = {emailValue}
isInvalid = {errorMessage ? true : false}
/>
</div>
<Input
type = "password"
label = "Password"
variant = "underlined"
onValueChange = {setPasswordValue}
value = {passwordValue}
/>
</ModalBody>
<ModalFooter>
<Button onPress = {async () => {
const response = await fetch('http://localhost:3000/users/adminLogin', {
method: 'POST',
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
email: emailValue,
password: passwordValue
})
})
const data = await response.json();
if (data.result) {
props.setIsAdmin(true);
onClose();
} else if (data.result === false) {
const tmpArrayOfErrors = []
tmpArrayOfErrors.push(data.message)
setErrorMessage(tmpArrayOfErrors)
} else if (!data.result) {
for (let i = 0; i < data.errors.length; i ++) {
const tmpArrayOfErrors = []
for (const index in data.errors) {
tmpArrayOfErrors.push(data.errors[index].msg)
}
setErrorMessage(tmpArrayOfErrors)
}
}
}}>
Log in
</Button>
</ModalFooter>
</>
)}
</ModalContent>
</Modal>
)
}
export default LoginModal
Мой файл global.css:
@tailwind base;
@tailwind components;
@tailwind utilities;
@font-face {
font-family: "Romantic";
src: url('../fonts/romantic-font-2-1715585786-0/ssromantic.otf');
}
body {
padding: 0;
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen,
Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
width: 100vw;
height: 100vh;
font-family: "Romantic";
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-rendering: optimizeLegibility;
-webkit-tap-highlight-color: transparent;
background-color: #E6E6FA;
}
* {
box-sizing: border-box;
}
Любая помощь будет принята с благодарностью :)
Спасибо !
Проблема :
Невозможно применить собственный стиль к модальному компоненту NextUI и компоненту ввода.
Причина :
Вы передали ключ
backdrop
для опорыclassName
вместоclassNames
в модальном режиме, а также конфигурация попутного ветра немного неправильная.
Решение :
Чтобы настроить компоненты NextUI, вы должны сначала обратиться к реквизитам этого компонента, посмотреть на реквизит classNames
, и показано, что keys
можно передать classNames
.
В вашем tailwind.config.js
обновлении plugins
ключе (см. 1):
plugins: [nextui()]
Обновите модальные реквизиты (см. 4 5 6):
<Modal
isDismissable = {false}
isKeyboardDismissDisabled = {true}
backdrop = "opaque"
classNames = {
{
backdrop: "bg-gradient-to-t from-zinc-900 to-zinc-900/10 backdrop-opacity-20"
}
}
hideCloseButton = {true}
defaultOpen = {true}
>
Аналогично для <Input/>
(см. 2 3), и вы можете видеть, что keys
передается в classNames
.
Что касается шрифта:
Предлагаю вам прочитать это и реализовать, если хотите.
NextJS дает вам возможность импортировать local/custom
шрифты.
См. ссылки ниже (см. 7 8).
Пожалуйста прочти :
Если этот ответ решил вашу проблему, отметьте его как решение. Если этот ответ был очень полезен, вы можете проголосовать за него. Если у вас есть какие-либо сомнения, оставьте комментарий (при необходимости я обновлю ответ)
Вы делали глобальную или индивидуальную установку?