mirror of
https://github.com/nextui-org/nextui.git
synced 2025-12-08 19:26:11 +00:00
feat(docs): nextUI with laravel (#4432)
* chore(docs): support laravel route * feat(docs): add laravel.mdx * chore(docs): update laravel.mdx * chore(docs): update laravel.mdx * Update apps/docs/config/routes.json --------- Co-authored-by: WK Wong <wingkwong.code@gmail.com> Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>
This commit is contained in:
parent
0401f2548f
commit
0eb96f6e5e
@ -81,6 +81,13 @@
|
|||||||
"title": "Astro",
|
"title": "Astro",
|
||||||
"keywords": "astro, nextui",
|
"keywords": "astro, nextui",
|
||||||
"path": "/docs/frameworks/astro.mdx"
|
"path": "/docs/frameworks/astro.mdx"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "laravel",
|
||||||
|
"title": "Laravel",
|
||||||
|
"keywords": "laravel, nextui",
|
||||||
|
"path": "/docs/frameworks/laravel.mdx",
|
||||||
|
"newPost": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -515,4 +522,4 @@
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
238
apps/docs/content/docs/frameworks/laravel.mdx
Normal file
238
apps/docs/content/docs/frameworks/laravel.mdx
Normal file
@ -0,0 +1,238 @@
|
|||||||
|
---
|
||||||
|
title: Laravel
|
||||||
|
description: How to use NextUI with Laravel
|
||||||
|
---
|
||||||
|
|
||||||
|
# Laravel
|
||||||
|
|
||||||
|
Requirements:
|
||||||
|
|
||||||
|
- [Laravel 11](https://laravel.com/)
|
||||||
|
- [PHP v8.2](https://www.php.net/)
|
||||||
|
- [React 18](https://reactjs.org/) or later
|
||||||
|
- [Tailwind CSS 3.4](https://tailwindcss.com/docs/guides/vite#react) or later
|
||||||
|
- [Framer Motion 11.9](https://www.framer.com/motion/) or later
|
||||||
|
|
||||||
|
------
|
||||||
|
|
||||||
|
<CarbonAd/>
|
||||||
|
|
||||||
|
To use NextUI in your Laravel project, you need to follow the following steps:
|
||||||
|
|
||||||
|
### Using NextUI + Laravel template
|
||||||
|
|
||||||
|
If you are starting a new project, you can run one of the following commands to create a Laravel project pre-configured with NextUI:
|
||||||
|
|
||||||
|
<PackageManagers
|
||||||
|
commands={{
|
||||||
|
npm: 'npx create-laravel@latest --template https://github.com/nextui-org/laravel-template',
|
||||||
|
yarn: 'yarn create laravel --template https://github.com/nextui-org/laravel-template',
|
||||||
|
pnpm: 'pnpm create laravel --template https://github.com/nextui-org/laravel-template',
|
||||||
|
bun: 'bunx create-laravel@latest --template https://github.com/nextui-org/laravel-template',
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
|
||||||
|
### Automatic Installation
|
||||||
|
|
||||||
|
You can add individual components using the CLI. For example, to add a button component:
|
||||||
|
|
||||||
|
```codeBlock bash
|
||||||
|
nextui add button
|
||||||
|
```
|
||||||
|
|
||||||
|
This command adds the Button component to your project and manages all related dependencies.
|
||||||
|
|
||||||
|
You can also add multiple components at once:
|
||||||
|
|
||||||
|
```codeBlock bash
|
||||||
|
nextui add button input
|
||||||
|
```
|
||||||
|
|
||||||
|
Or you can add the main library `@nextui-org/react` by running the following command:
|
||||||
|
|
||||||
|
```codeBlock bash
|
||||||
|
nextui add --all
|
||||||
|
```
|
||||||
|
|
||||||
|
If you leave out the component name, the CLI will prompt you to select the components you want to add.
|
||||||
|
|
||||||
|
```codeBlock bash
|
||||||
|
? Which components would you like to add? › - Space to select. Return to submit
|
||||||
|
Instructions:
|
||||||
|
↑/↓: Highlight option
|
||||||
|
←/→/[space]: Toggle selection
|
||||||
|
[a,b,c]/delete: Filter choices
|
||||||
|
enter/return: Complete answer
|
||||||
|
|
||||||
|
Filtered results for: Enter something to filter
|
||||||
|
|
||||||
|
◯ accordion
|
||||||
|
◯ autocomplete
|
||||||
|
◯ avatar
|
||||||
|
◯ badge
|
||||||
|
◯ breadcrumbs
|
||||||
|
◉ button
|
||||||
|
◯ card
|
||||||
|
◯ checkbox
|
||||||
|
◯ chip
|
||||||
|
◯ code
|
||||||
|
```
|
||||||
|
|
||||||
|
You still need to add the provider to your app manually (we are working on automating this step).
|
||||||
|
|
||||||
|
```jsx {3,7,9}
|
||||||
|
// app/providers.tsx
|
||||||
|
|
||||||
|
import {NextUIProvider} from '@nextui-org/react'
|
||||||
|
|
||||||
|
export function Providers({children}: { children: React.ReactNode }) {
|
||||||
|
return (
|
||||||
|
<NextUIProvider>
|
||||||
|
{children}
|
||||||
|
</NextUIProvider>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
<Spacer y={4} />
|
||||||
|
|
||||||
|
```jsx {8,23,25}
|
||||||
|
// app.tsx or app.jsx
|
||||||
|
import '../css/app.css';
|
||||||
|
import './bootstrap';
|
||||||
|
|
||||||
|
import { createInertiaApp } from '@inertiajs/react';
|
||||||
|
import { resolvePageComponent } from 'laravel-vite-plugin/inertia-helpers';
|
||||||
|
import { createRoot } from 'react-dom/client';
|
||||||
|
import {NextUIProvider} from "@nextui-org/react";
|
||||||
|
|
||||||
|
const appName = import.meta.env.VITE_APP_NAME || 'Laravel';
|
||||||
|
|
||||||
|
createInertiaApp({
|
||||||
|
title: (title) => `${title} - ${appName}`,
|
||||||
|
resolve: (name) =>
|
||||||
|
resolvePageComponent(
|
||||||
|
`./Pages/${name}.tsx`,
|
||||||
|
import.meta.glob('./Pages/**/*.tsx'),
|
||||||
|
),
|
||||||
|
setup({ el, App, props }) {
|
||||||
|
const root = createRoot(el);
|
||||||
|
|
||||||
|
root.render(
|
||||||
|
<NextUIProvider>
|
||||||
|
<App {...props} />
|
||||||
|
</NextUIProvider>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
progress: {
|
||||||
|
color: '#4B5563',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
### Manual Installation
|
||||||
|
|
||||||
|
<Steps>
|
||||||
|
|
||||||
|
### Add dependencies
|
||||||
|
|
||||||
|
In your Laravel project, run one of the following command to install NextUI:
|
||||||
|
|
||||||
|
<PackageManagers
|
||||||
|
commands={{
|
||||||
|
npm: 'npm i @nextui-org/react framer-motion',
|
||||||
|
yarn: 'yarn add @nextui-org/react framer-motion',
|
||||||
|
pnpm: 'pnpm add @nextui-org/react framer-motion',
|
||||||
|
bun: "bun add @nextui-org/react framer-motion"
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
|
||||||
|
### Hoisted Dependencies Setup
|
||||||
|
|
||||||
|
<Blockquote color="primary">
|
||||||
|
**Note**: This step is only for those who use `pnpm` to install. If you install NextUI using other package managers, you may skip this step.
|
||||||
|
</Blockquote>
|
||||||
|
|
||||||
|
If you are using pnpm, you need to add the following line to your `.npmrc` file to hoist our packages to the root `node_modules`.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
public-hoist-pattern[]=*@nextui-org/*
|
||||||
|
```
|
||||||
|
|
||||||
|
After modifying the `.npmrc` file, you need to run `pnpm install` again to ensure that the dependencies are installed correctly.
|
||||||
|
|
||||||
|
### Tailwind CSS Setup
|
||||||
|
|
||||||
|
NextUI is built on top of Tailwind CSS, so you need to install Tailwind CSS first. You can follow the official
|
||||||
|
[installation guide](https://tailwindcss.com/docs/guides/vite#react) to install Tailwind CSS. Then you need to add
|
||||||
|
the following code to your `tailwind.config.js` file:
|
||||||
|
|
||||||
|
<Blockquote color="primary">
|
||||||
|
**Note**: If you are using pnpm and monorepo architecture, please make sure you are pointing to the ROOT `node_modules`
|
||||||
|
</Blockquote>
|
||||||
|
|
||||||
|
```js {2,8,13-14}
|
||||||
|
// tailwind.config.js
|
||||||
|
const { nextui } = require("@nextui-org/react");
|
||||||
|
|
||||||
|
/** @type {import('tailwindcss').Config} */
|
||||||
|
module.exports = {
|
||||||
|
content: [
|
||||||
|
// ...
|
||||||
|
"./node_modules/@nextui-org/theme/dist/**/*.{js,ts,jsx,tsx}"
|
||||||
|
],
|
||||||
|
theme: {
|
||||||
|
extend: {},
|
||||||
|
},
|
||||||
|
darkMode: "class",
|
||||||
|
plugins: [nextui()]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Provider Setup
|
||||||
|
|
||||||
|
After installing NextUI, you need to set up the `NextUIProvider` at the `root` of your application.
|
||||||
|
|
||||||
|
Go to the src directory and inside `app.jsx` or `app.tsx`, wrap `NextUIProvider` around App:
|
||||||
|
|
||||||
|
```jsx {8,23,25}
|
||||||
|
// app.tsx or app.jsx
|
||||||
|
import '../css/app.css';
|
||||||
|
import './bootstrap';
|
||||||
|
|
||||||
|
import { createInertiaApp } from '@inertiajs/react';
|
||||||
|
import { resolvePageComponent } from 'laravel-vite-plugin/inertia-helpers';
|
||||||
|
import { createRoot } from 'react-dom/client';
|
||||||
|
import {NextUIProvider} from "@nextui-org/react";
|
||||||
|
|
||||||
|
const appName = import.meta.env.VITE_APP_NAME || 'Laravel';
|
||||||
|
|
||||||
|
createInertiaApp({
|
||||||
|
title: (title) => `${title} - ${appName}`,
|
||||||
|
resolve: (name) =>
|
||||||
|
resolvePageComponent(
|
||||||
|
`./Pages/${name}.tsx`,
|
||||||
|
import.meta.glob('./Pages/**/*.tsx'),
|
||||||
|
),
|
||||||
|
setup({ el, App, props }) {
|
||||||
|
const root = createRoot(el);
|
||||||
|
|
||||||
|
root.render(
|
||||||
|
<NextUIProvider>
|
||||||
|
<App {...props} />
|
||||||
|
</NextUIProvider>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
progress: {
|
||||||
|
color: '#4B5563',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
</Steps>
|
||||||
|
|
||||||
|
<Blockquote
|
||||||
|
color="warning"
|
||||||
|
>
|
||||||
|
Version 2 is only compatible with React 18 or later. If you are using React 17 or earlier, please use <Link href="https://v1.nextui.org/docs/getting-started" isExternal>version 1 of NextUI</Link>.
|
||||||
|
</Blockquote>
|
||||||
Loading…
x
Reference in New Issue
Block a user