Стиль NextUI Components не будет применяться, хотя на самом деле он применим к некоторым

Кажется, я не могу найти решение этой проблемы, я использую 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;
}

Любая помощь будет принята с благодарностью :)

Спасибо !

Вы делали глобальную или индивидуальную установку?

Iniubong Obonguko 21.06.2024 15:37
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
0
1
167
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема :

Невозможно применить собственный стиль к модальному компоненту 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).


Пожалуйста прочти :

  1. Настройка: https://nextui.org/docs/customization/theme#setup
  2. Пользовательские стили (ввод): https://nextui.org/docs/comComponents/input#custom-styles
  3. Входные реквизиты: https://nextui.org/docs/comComponents/input#input-props
  4. Пользовательские стили (модальные): https://nextui.org/docs/comComponents/modal#custom-styles
  5. Имена классов (модальные реквизиты): https://nextui.org/docs/comComponents/modal#modal-props
  6. Пользовательский фон: https://nextui.org/docs/comComponents/modal#custom-backdrop
  7. Оптимизация шрифтов: https://nextjs.org/docs/app/building-your-application/optimizing/fonts
  8. Импорт пользовательских/локальных шрифтов: https://nextjs.org/docs/app/building-your-application/optimizing/fonts#local-fonts

Если этот ответ решил вашу проблему, отметьте его как решение. Если этот ответ был очень полезен, вы можете проголосовать за него. Если у вас есть какие-либо сомнения, оставьте комментарий (при необходимости я обновлю ответ)

Другие вопросы по теме