init
This commit is contained in:
68
CLAUDE.md
Normal file
68
CLAUDE.md
Normal file
@@ -0,0 +1,68 @@
|
||||
# NiceGUI Extensions (niceguiex) - Project Overview
|
||||
|
||||
## Project Structure
|
||||
|
||||
This project is a collection of extensions for NiceGUI, organized as a modular package that can be extended with new components and utilities.
|
||||
|
||||
### Current Structure
|
||||
```
|
||||
src/
|
||||
niceguiex/
|
||||
__init__.py
|
||||
async_elements/
|
||||
__init__.py
|
||||
base.py # AsyncElement base class
|
||||
elements.py # Pre-built async element types
|
||||
chat_input.py # ChatInput component (to be moved into package)
|
||||
```
|
||||
|
||||
## Key Components
|
||||
|
||||
### 1. Async Elements (`niceguiex.async_elements`)
|
||||
Provides async-aware UI elements that can perform async operations during initialization while maintaining full typing support.
|
||||
|
||||
**Base Class:** `AsyncElement[T]` - Generic base for creating async elements
|
||||
**Pre-built Elements:**
|
||||
- AsyncColumn, AsyncRow, AsyncCard
|
||||
- AsyncDialog, AsyncTabs, AsyncScrollArea
|
||||
- AsyncExpansion, AsyncCarousel, AsyncMenu
|
||||
- And more...
|
||||
|
||||
### 2. ChatInput Component
|
||||
A textarea component optimized for chat interfaces:
|
||||
- Enter to send message
|
||||
- Shift+Enter for new line
|
||||
- Callback-based message handling
|
||||
- Currently in `chat_input.py`, should be moved to package structure
|
||||
|
||||
## Import Convention
|
||||
|
||||
The package uses a submodule structure to organize different types of extensions:
|
||||
|
||||
```python
|
||||
from niceguiex.async_elements import AsyncColumn, AsyncCard
|
||||
from chat_input import ChatInput # To be: from niceguiex.inputs import ChatInput
|
||||
```
|
||||
|
||||
## Technical Notes
|
||||
|
||||
- **Async Module Name:** Originally planned as `niceguiex.async` but changed to `async_elements` because `async` is a Python reserved keyword
|
||||
- **Type Safety:** All components maintain full type hints for IDE support
|
||||
- **Inheritance Pattern:** Components can be used via generic `AsyncElement[T]` or by inheriting from specific types
|
||||
|
||||
## Future Extensions
|
||||
|
||||
The package structure is designed to accommodate:
|
||||
- Input components (ChatInput, forms, etc.)
|
||||
- Layout helpers
|
||||
- Data visualization components
|
||||
- Utility functions
|
||||
- Theme and styling extensions
|
||||
|
||||
## Development Guidelines
|
||||
|
||||
When adding new components:
|
||||
1. Consider which submodule they belong in
|
||||
2. Maintain full typing support
|
||||
3. Provide both generic and inheritance-based usage patterns where applicable
|
||||
4. Include proper async/await support where needed
|
||||
Reference in New Issue
Block a user