### Install Dependencies with pnpm
Source: https://github.com/edificeio/edifice-frontend-framework/blob/develop/README.md
Installs all project dependencies using the pnpm package manager. Ensure you have pnpm version 9 or 10 installed.
```bash
pnpm install
```
--------------------------------
### Basic useUploadFiles Hook Example
Source: https://github.com/edificeio/edifice-frontend-framework/blob/develop/packages/react/src/hooks/useUploadFiles/useUploadFiles.mdx
Provides a basic example of using the useUploadFiles hook within a React component to display uploaded files and manage their removal. It highlights the integration with component state and UI rendering.
```typescript
const MyComponent = () => {
const {
files,
uploadedFiles,
removeFile,
updateImage,
} = useUploadFiles({
handleOnChange: (uploadedFiles) => {
console.log('Uploaded files:', uploadedFiles);
},
});
return (
Upload Files
{files.map((file) => (
{file.name}
))}
{uploadedFiles.map((file) => (
{file.name}
))}
{/* Add more UI elements to handle file uploads, removals, and updates */}
);
};
```
--------------------------------
### Edifice Modal Component Example (React)
Source: https://context7.com/edificeio/edifice-frontend-framework/llms.txt
Exemple d'utilisation du composant Modal d'Edifice. Ce composant fournit une boîte de dialogue modale accessible avec gestion du focus et fermeture au clic extérieur. Il utilise un pattern de composants composés pour sa structure.
```tsx
import { Modal, Button, useToggle } from '@edifice.io/react';
function ExempleModal() {
const [isOpen, toggleModal] = useToggle(false);
return (
<>
Titre de la modale
Sous-titre optionnel
Contenu de la modale avec du texte et des composants.
>
);
}
```
--------------------------------
### Edifice Alert Component Examples (React)
Source: https://context7.com/edificeio/edifice-frontend-framework/llms.txt
Exemples d'utilisation du composant Alert d'Edifice. Ce composant affiche des messages de notification avec différents types et modes, y compris des toasts avec fermeture automatique. Il peut être contrôlé via une référence.
```tsx
import { Alert, useRef } from '@edifice.io/react';
// Alerte simple de succès
Opération réussie !
// Alerte d'erreur fermable
console.log('Fermée')}>
Une erreur est survenue lors de l'enregistrement.
// Toast avec fermeture automatique
Nouvelle notification reçue
// Alerte contrôlée via ref
function AlerteControlee() {
const alertRef = useRef(null);
return (
<>
console.log('Visible:', visible)}
>
Message d'avertissement contrôlé
>
);
}
```
--------------------------------
### Edifice Button Component Examples (React)
Source: https://context7.com/edificeio/edifice-frontend-framework/llms.txt
Exemples d'utilisation du composant Button d'Edifice. Ce composant supporte diverses variantes, couleurs, tailles, icônes et états de chargement. Il est conçu pour être accessible et s'intègre dans des formulaires.
```tsx
import { Button } from '@edifice.io/react';
import { IconSave, IconTrash } from '@edifice.io/react/icons';
// Bouton primaire simple
// Bouton avec icône à gauche
}>
Sauvegarder
// Bouton en état de chargement
// Bouton danger avec icône
}
onClick={() => handleDelete()}
>
Supprimer
// Bouton submit dans un formulaire
```
--------------------------------
### Utilize Gap Utilities for Element Spacing (CSS)
Source: https://github.com/edificeio/edifice-frontend-framework/blob/develop/apps/docs/src/stories/Spacings.mdx
Illustrates the usage of gap utilities to control the spacing between elements when using display: grid or display: flex. The example shows various gap values like gap-2, gap-4, up to gap-64.
```html
Prefix
Values
gap-
gap-2
gap-4
gap-8
gap-12
gap-16
gap-24
gap-32
gap-48
gap-64
```
--------------------------------
### HTTP Requests with OdeServices
Source: https://context7.com/edificeio/edifice-frontend-framework/llms.txt
The OdeServices HTTP client facilitates making various HTTP requests (GET, POST, PUT, DELETE) to the backend. It supports JSON and file uploads, query parameters, and includes error handling mechanisms. Dependencies include the '@edifice.io/client' package.
```tsx
import { odeServices } from '@edifice.io/client';
// Requête GET simple
const users = await odeServices.http().get('/directory/users');
// Requête GET avec paramètres
const documents = await odeServices.http().get('/workspace/documents', {
queryParams: {
filter: 'owner',
parentId: 'folder-123',
includeall: true
}
});
// Requête POST avec données JSON
const newResource = await odeServices.http().postJson(
'/blog/post',
{
title: 'Nouveau post',
content: '
Contenu du post
',
state: 'PUBLISHED'
}
);
// Upload de fichier
const formData = new FormData();
formData.append('file', file, file.name);
const uploaded = await odeServices.http().postFile(
'/workspace/document?protected=true',
formData
);
// Vérifier les erreurs
if (odeServices.http().isResponseError()) {
console.error('Erreur:', odeServices.http().latestResponse.statusText);
}
// Requête PUT pour mise à jour
await odeServices.http().putJson('/blog/post/123', {
title: 'Titre modifié',
content: '
Nouveau contenu
'
});
// Requête DELETE
await odeServices.http().delete('/blog/post/123');
```
--------------------------------
### Session Management Service (TS)
Source: https://context7.com/edificeio/edifice-frontend-framework/llms.txt
The Session service handles user authentication and retrieves connected user information. It provides methods to get user details, descriptions, and check authentication status.
```typescript
import { odeServices } from '@edifice.io/client';
// Obtenir les informations de l'utilisateur courant
const user = await odeServices.session().getUser();
console.log('Utilisateur:', user?.userId, user?.username);
// Obtenir la description complète de l'utilisateur
const description = await odeServices.session().getUserDescription();
console.log('Profil:', description?.firstName, description?.lastName);
// Vérifier si l'utilisateur est connecté
const isAuthenticated = await odeServices.session().isAuthenticated();
// Exemple d'utilisation dans un composant
function SessionInfo() {
const [sessionData, setSessionData] = useState(null);
useEffect(() => {
async function loadSession() {
const user = await odeServices.session().getUser();
const description = await odeServices.session().getUserDescription();
setSessionData({ user, description });
}
loadSession();
}, []);
if (!sessionData) return ;
return (
);
}
```
--------------------------------
### Apply Responsive Spacing Utilities (CSS)
Source: https://github.com/edificeio/edifice-frontend-framework/blob/develop/apps/docs/src/stories/Spacings.mdx
Explains how to reassign spacing utilities using breakpoints such as sm, md, lg, xl, and xxl. The format for responsive spacing is provided as `*-{direction}-{breakpoint}-{value}`.
```css
/* Example of responsive spacing */
.padding-left-sm-16 { padding-left: 16px; /* applied on small screens and up */ }
.margin-top-md-32 { margin-top: 32px; /* applied on medium screens and up */ }
```
--------------------------------
### Build Project with pnpm
Source: https://github.com/edificeio/edifice-frontend-framework/blob/develop/README.md
Compiles and bundles the project assets for production using the pnpm build script. This command is essential for preparing the application for deployment.
```bash
pnpm run build
```
--------------------------------
### Initialize application context with EdificeClientProvider
Source: https://context7.com/edificeio/edifice-frontend-framework/llms.txt
The EdificeClientProvider initializes the application context with user session data, configuration, and translations. It is typically wrapped at the root of the application.
```tsx
import { EdificeClientProvider, EdificeThemeProvider, useEdificeClient } from '@edifice.io/react';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
const queryClient = new QueryClient();
function App() {
return (
);
}
function MonComposant() {
const { appCode, currentApp, user, currentLanguage, init } = useEdificeClient();
if (!init) {
return ;
}
return (
Application: {currentApp?.displayName}
Utilisateur: {user?.username}
Langue: {currentLanguage}
);
}
```
--------------------------------
### Implement useResourceSearch Hook
Source: https://github.com/edificeio/edifice-frontend-framework/blob/develop/packages/react/src/hooks/useResourceSearch/useResourceSearch.mdx
Demonstrates how to initialize the useResourceSearch hook with an application code. It returns a list of resource applications and a loadResources function for fetching data.
```typescript
import { useResourceSearch } from 'path-to-hook';
const { resourceApplications, loadResources } = useResourceSearch(appCode);
// Use resourceApplications and loadResources as needed
```
--------------------------------
### Initialize useUploadFiles Hook
Source: https://github.com/edificeio/edifice-frontend-framework/blob/develop/packages/react/src/hooks/useUploadFiles/useUploadFiles.mdx
Demonstrates how to initialize the useUploadFiles hook with various options like callbacks, visibility, and application context. It outlines the returned state and functions for managing file uploads.
```typescript
import useUploadFiles from './useUploadFiles';
const {
files,
getUploadStatus,
clearUploadStatus,
uploadedFiles,
editingImage,
setEditingImage,
getUrl,
updateImage,
uploadFile,
removeFile,
} = useUploadFiles({
handleOnChange: (uploadedFiles) => {
console.log(uploadedFiles);
},
visibility: 'public',
application: 'myApp',
});
```
--------------------------------
### Format Code with Prettier
Source: https://github.com/edificeio/edifice-frontend-framework/blob/develop/README.md
Applies code formatting rules defined by Prettier to the project files. This ensures a consistent and readable code style throughout the codebase.
```bash
pnpm run format
```
--------------------------------
### Lint Code with Eslint
Source: https://github.com/edificeio/edifice-frontend-framework/blob/develop/README.md
Runs the Eslint linter to check for code style and potential errors. This command helps maintain code quality and consistency across the project.
```bash
pnpm run lint
```
--------------------------------
### Import and Initialize useWorkspaceFile Hook
Source: https://github.com/edificeio/edifice-frontend-framework/blob/develop/packages/react/src/hooks/useWorkspaceFile/useWorkspaceFile.mdx
Demonstrates how to import and destructure the necessary functions (createOrUpdate, create, remove) from the useWorkspaceFile hook for managing workspace files.
```typescript
import useWorkspaceFile from './useWorkspaceFile';
const { createOrUpdate, create, remove } = useWorkspaceFile();
```
--------------------------------
### Apply Padding with Card Component (React)
Source: https://github.com/edificeio/edifice-frontend-framework/blob/develop/apps/docs/src/stories/Spacings.mdx
Demonstrates applying different padding values to Card components using inline styles in a React application. Each Card component showcases a specific padding size, ranging from 2px to 64px.
```jsx
.p-2.p-4.p-8.p-12.p-16.p-24.p-32.p-48.p-64
```
--------------------------------
### OdeServices HTTP Client
Source: https://context7.com/edificeio/edifice-frontend-framework/llms.txt
The OdeServices HTTP client provides a centralized way to make HTTP requests to the ENT backend, with built-in error handling, CDN, and caching.
```APIDOC
## OdeServices HTTP Client
### Description
Provides a centralized HTTP client with error handling, CDN, and cache for communicating with the ENT backend.
### Method
Various (GET, POST, PUT, DELETE)
### Endpoint
Various (e.g., /directory/users, /workspace/documents, /blog/post)
### Parameters
#### Query Parameters
- **queryParams** (object) - Optional - Key-value pairs for query parameters.
- **filter** (string) - Optional - Filter criteria for requests.
- **parentId** (string) - Optional - ID of the parent folder.
- **includeall** (boolean) - Optional - Whether to include all items.
#### Request Body
- **(POST/PUT)** (object) - JSON payload for the request.
- **(POST File)** (FormData) - FormData object for file uploads.
### Request Example (GET with parameters)
```typescript
const documents = await odeServices.http().get('/workspace/documents', {
queryParams: {
filter: 'owner',
parentId: 'folder-123',
includeall: true
}
});
```
### Request Example (POST JSON)
```typescript
const newResource = await odeServices.http().postJson(
'/blog/post',
{
title: 'Nouveau post',
content: '
);
}
```
--------------------------------
### Retrieve user profile with useUser
Source: https://context7.com/edificeio/edifice-frontend-framework/llms.txt
The useUser hook provides access to the authenticated user's information, including avatar and profile details, retrieved from the Edifice application context.
```tsx
import { useUser } from '@edifice.io/react';
function ProfilUtilisateur() {
const { user, avatar, userDescription } = useUser();
if (!user) {
return
Chargement...
;
}
return (
{user.username}
Prénom: {userDescription?.firstName}
Nom: {userDescription?.lastName}
Email: {userDescription?.email}
Profil: {user.type}
);
}
```
--------------------------------
### Manage boolean state with useToggle
Source: https://context7.com/edificeio/edifice-frontend-framework/llms.txt
The useToggle hook provides a boolean state and a memoized toggle function. It is ideal for managing UI elements like modals, menus, and visibility states.
```tsx
import { useToggle } from '@edifice.io/react';
function ComponenteAvecToggle() {
const [isOpen, toggle] = useToggle();
const [isExpanded, toggleExpanded] = useToggle(true);
return (
{isOpen && (
Contenu du panneau
)}
);
}
```
--------------------------------
### Select Component: Customizable Selection Lists (React)
Source: https://context7.com/edificeio/edifice-frontend-framework/llms.txt
The Select component provides a customizable selection list based on Dropdown, supporting icons, and controlled/uncontrolled modes. It requires '@edifice.io/react' and optionally '@edifice.io/react/icons'.
```tsx
import { Select } from '@edifice.io/react';
import { IconFolder, IconFile, IconImage } from '@edifice.io/react/icons';
// Select simple avec options string