Frontend Enhancements: - Complete React TypeScript frontend with modern UI components - Distributed workflows management interface with real-time updates - Socket.IO integration for live agent status monitoring - Agent management dashboard with cluster visualization - Project management interface with metrics and task tracking - Responsive design with proper error handling and loading states Backend Infrastructure: - Distributed coordinator for multi-agent workflow orchestration - Cluster management API with comprehensive agent operations - Enhanced database models for agents and projects - Project service for filesystem-based project discovery - Performance monitoring and metrics collection - Comprehensive API documentation and error handling Documentation: - Complete distributed development guide (README_DISTRIBUTED.md) - Comprehensive development report with architecture insights - System configuration templates and deployment guides The platform now provides a complete web interface for managing the distributed AI cluster with real-time monitoring, workflow orchestration, and agent coordination capabilities. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
142 lines
3.4 KiB
Markdown
142 lines
3.4 KiB
Markdown
# Lucide React
|
|
|
|
Implementation of the lucide icon library for react applications.
|
|
|
|
> What is lucide? Read it [here](https://github.com/lucide-icons/lucide#what-is-lucide).
|
|
|
|
## Installation
|
|
|
|
```sh
|
|
yarn add lucide-react
|
|
```
|
|
|
|
or
|
|
|
|
```sh
|
|
npm install lucide-react
|
|
```
|
|
|
|
## How to use
|
|
|
|
It's built with ES modules so it's completely tree-shakable.
|
|
Each icon can be imported as a react component.
|
|
|
|
### Example
|
|
|
|
You can pass additional props to adjust the icon.
|
|
|
|
```js
|
|
import { Camera } from 'lucide-react';
|
|
|
|
const App = () => {
|
|
return <Camera color="red" size={48} />;
|
|
};
|
|
|
|
export default App;
|
|
```
|
|
|
|
### Props
|
|
|
|
| name | type | default |
|
|
| ------------- | -------- | ------------ |
|
|
| `size` | _Number_ | 24 |
|
|
| `color` | _String_ | currentColor |
|
|
| `strokeWidth` | _Number_ | 2 |
|
|
|
|
### Custom props
|
|
|
|
You can also pass custom props that will be added in the svg as attributes.
|
|
|
|
```js
|
|
const App = () => {
|
|
return <Camera fill="red" />;
|
|
};
|
|
```
|
|
|
|
### Generic icon component
|
|
|
|
It is possible to create a generic icon component to load icons.
|
|
|
|
> :warning: The example below is importing all ES modules. This is **not** recommended when you using a bundler since your application build size will grow substantially.
|
|
|
|
```js
|
|
import { icons } from 'lucide-react';
|
|
|
|
const Icon = ({ name, color, size }) => {
|
|
const LucideIcon = icons[name];
|
|
|
|
return <LucideIcon color={color} size={size} />;
|
|
};
|
|
|
|
export default Icon;
|
|
```
|
|
|
|
#### With Dynamic Imports
|
|
|
|
Lucide react exports a dynamic import map `dynamicIconImports`. Useful for applications that want to show icons dynamically by icon name. For example when using a content management system with where icon names are stored in a database.
|
|
|
|
When using client side rendering, it will fetch the icon component when it's needed. This will reduce the initial bundle size.
|
|
|
|
The keys of the dynamic import map are the lucide original icon names.
|
|
|
|
Example with React suspense:
|
|
|
|
```tsx
|
|
import React, { lazy, Suspense } from 'react';
|
|
import { dynamicIconImports, LucideProps } from 'lucide-react';
|
|
|
|
const fallback = <div style={{ background: '#ddd', width: 24, height: 24 }}/>
|
|
|
|
interface IconProps extends Omit<LucideProps, 'ref'> {
|
|
name: keyof typeof dynamicIconImports;
|
|
}
|
|
|
|
const Icon = ({ name, ...props }: IconProps) => {
|
|
const LucideIcon = lazy(dynamicIconImports[name]);
|
|
|
|
return (
|
|
<Suspense fallback={fallback}>
|
|
<LucideIcon {...props} />
|
|
</Suspense>
|
|
);
|
|
}
|
|
|
|
export default Icon
|
|
```
|
|
|
|
##### NextJS Example
|
|
|
|
In NextJS, [the dynamic function](https://nextjs.org/docs/pages/building-your-application/optimizing/lazy-loading#nextdynamic) can be used to dynamically load the icon component.
|
|
|
|
To make dynamic imports work with NextJS, you need to add `lucide-react` to the [`transpilePackages`](https://nextjs.org/docs/app/api-reference/next-config-js/transpilePackages) option in your `next.config.js` like this:
|
|
|
|
```js
|
|
/** @type {import('next').NextConfig} */
|
|
const nextConfig = {
|
|
transpilePackages: ['lucide-react'] // add this
|
|
}
|
|
|
|
module.exports = nextConfig
|
|
|
|
```
|
|
|
|
You can then start using it:
|
|
|
|
```tsx
|
|
import dynamic from 'next/dynamic'
|
|
import { LucideProps } from 'lucide-react';
|
|
import dynamicIconImports from 'lucide-react/dynamicIconImports';
|
|
|
|
interface IconProps extends LucideProps {
|
|
name: keyof typeof dynamicIconImports;
|
|
}
|
|
|
|
const Icon = ({ name, ...props }: IconProps) => {
|
|
const LucideIcon = dynamic(dynamicIconImports[name])
|
|
|
|
return <LucideIcon {...props} />;
|
|
};
|
|
|
|
export default Icon;
|
|
```
|