BUILD BEFORE CHANGE NEW COMPONENTS WITH UI FUNCTION
This commit is contained in:
216
docs/install.md
216
docs/install.md
@@ -4,13 +4,18 @@ Follow these steps to integrate **SigPro-UI** into your project.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Make sure your project already has:
|
||||
|
||||
- [SigPro Core](https://www.npmjs.com/package/sigpro) installed.
|
||||
- [Tailwind CSS v4](https://tailwindcss.com/) configured.
|
||||
- [daisyUI v5](https://daisyui.com/) installed.
|
||||
|
||||
## 1️.Install the package
|
||||
---
|
||||
|
||||
|
||||
!> **📘 Core Concepts**
|
||||
**Note:** SigPro-UI now includes SigPro core internally. You no longer need to install SigPro separately.
|
||||
SigProUI is built on top of the [SigPro](https://natxocc.github.io/sigpro/#/) reactive core. To learn how to create signals, manage reactivity, and structure your application logic, check out the [SigPro documentation](https://natxocc.github.io/sigpro/#/). It covers everything you need to build reactive applications with signals, computed values, and effects.
|
||||
---
|
||||
|
||||
## 1. Install the package
|
||||
|
||||
Choose your preferred package manager:
|
||||
|
||||
@@ -24,7 +29,7 @@ bun add sigpro-ui
|
||||
yarn add sigpro-ui
|
||||
```
|
||||
|
||||
## 2️.Configure CSS
|
||||
## 2. Configure CSS
|
||||
|
||||
Add the following to your main CSS file (e.g., `app.css`):
|
||||
|
||||
@@ -35,48 +40,67 @@ Add the following to your main CSS file (e.g., `app.css`):
|
||||
|
||||
> This enables Tailwind CSS v4 + daisyUI v5 styles for all SigPro-UI components.
|
||||
|
||||
## 3️.Import and initialize in your app
|
||||
## 3. Import and use in your app
|
||||
|
||||
Create or update your `main.js` (or `index.js`):
|
||||
### ESM / Module usage
|
||||
|
||||
```javascript
|
||||
// Import required modules
|
||||
import { $, $mount } from "sigpro";
|
||||
import { UI } from "sigpro-ui";
|
||||
// Import everything from sigpro-ui (includes sigpro core)
|
||||
import { $, $mount, Button, Alert, Input, tt } from "sigpro-ui";
|
||||
|
||||
// Import your CSS (adjust the path if needed)
|
||||
import "./app.css";
|
||||
|
||||
// Import your main App component
|
||||
import { App } from "./App.js";
|
||||
|
||||
// Initialize SigPro-UI (English locale)
|
||||
UI("en");
|
||||
// Create your app
|
||||
const App = () => {
|
||||
const count = $(0);
|
||||
|
||||
return $html('div', { class: 'p-8 max-w-md mx-auto' }, [
|
||||
$html('h1', { class: 'text-2xl font-bold mb-4' }, 'SigProUI Demo'),
|
||||
|
||||
Input({
|
||||
label: 'Your name',
|
||||
placeholder: 'Enter your name...'
|
||||
}),
|
||||
|
||||
Button({
|
||||
class: 'btn-primary mt-4',
|
||||
onclick: () => count(count() + 1)
|
||||
}, () => `Clicks: ${count()}`),
|
||||
|
||||
Alert({
|
||||
type: 'success',
|
||||
message: () => `Welcome to SigProUI!`
|
||||
})
|
||||
]);
|
||||
};
|
||||
|
||||
// Mount your app
|
||||
$mount(App, "#app");
|
||||
```
|
||||
|
||||
## 4️.Create your first component
|
||||
|
||||
Example `App.js`:
|
||||
### CommonJS usage
|
||||
|
||||
```javascript
|
||||
import { Div, Button, Alert } from "sigpro-ui";
|
||||
const { $, $mount, Button, Input, Alert } = require('sigpro-ui');
|
||||
|
||||
export const App = () => {
|
||||
return Div({ class: "p-4" }, [
|
||||
Button({
|
||||
class: "btn-primary",
|
||||
onclick: () => Alert("Hello SigPro-UI!")
|
||||
}, "Click Me")
|
||||
const App = () => {
|
||||
const count = $(0);
|
||||
|
||||
return $html('div', { class: 'p-8' }, [
|
||||
Button({
|
||||
class: 'btn-primary',
|
||||
onclick: () => count(count() + 1)
|
||||
}, () => `Clicks: ${count()}`)
|
||||
]);
|
||||
};
|
||||
|
||||
$mount(App, "#app");
|
||||
```
|
||||
|
||||
## Optional: Use CDN (no build step)
|
||||
## 4. CDN Usage (no build step)
|
||||
|
||||
If you prefer not to use a build step, you can import directly from a CDN:
|
||||
Simply add the script tag and start using SigProUI:
|
||||
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
@@ -84,46 +108,134 @@ If you prefer not to use a build step, you can import directly from a CDN:
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<script type="importmap">
|
||||
{
|
||||
"imports": {
|
||||
"sigpro": "https://esm.run/sigpro",
|
||||
"sigpro-ui": "https://cdn.jsdelivr.net/npm/sigpro-ui@latest/+esm"
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<title>SigProUI Demo</title>
|
||||
<script src="https://unpkg.com/sigpro-ui@latest/dist/sigpro-ui.min.js"></script>
|
||||
<link href="https://cdn.jsdelivr.net/npm/daisyui@4/dist/full.css" rel="stylesheet">
|
||||
<style>
|
||||
@import "tailwindcss";
|
||||
@plugin "daisyui";
|
||||
body { padding: 2rem; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
<script type="module">
|
||||
import { $, $mount } from "sigpro";
|
||||
import { UI, Div, Button, Alert } from "sigpro-ui";
|
||||
|
||||
UI("en");
|
||||
|
||||
const App = () => Div({ class: "p-4" }, [
|
||||
Button({ class: "btn-primary", onclick: () => Alert("Hello!") }, "Click")
|
||||
]);
|
||||
|
||||
$mount(App, "#app");
|
||||
<script>
|
||||
// All functions are available directly in window
|
||||
// No need to import anything!
|
||||
|
||||
const { $, $mount, Button, Input, Alert } = window;
|
||||
|
||||
const App = () => {
|
||||
const name = $('');
|
||||
const count = $(0);
|
||||
|
||||
return $html('div', { class: 'max-w-md mx-auto p-4' }, [
|
||||
$html('h1', { class: 'text-2xl font-bold mb-4' }, 'SigProUI Demo'),
|
||||
|
||||
Input({
|
||||
label: 'Your name',
|
||||
value: name,
|
||||
placeholder: 'Enter your name...'
|
||||
}),
|
||||
|
||||
Button({
|
||||
class: 'btn-primary mt-4',
|
||||
onclick: () => count(count() + 1)
|
||||
}, () => `Clicks: ${count()}`),
|
||||
|
||||
Alert({
|
||||
type: 'success',
|
||||
message: () => name() ? `Hello ${name()}!` : 'Welcome to SigProUI!'
|
||||
})
|
||||
]);
|
||||
};
|
||||
|
||||
$mount(App, '#app');
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
```
|
||||
|
||||
## What's included?
|
||||
|
||||
When you install SigProUI, you get:
|
||||
|
||||
### SigPro Core Functions
|
||||
- `$()` - Reactive signals
|
||||
- `$watch()` - Watch reactive dependencies
|
||||
- `$html()` - Create HTML elements with reactivity
|
||||
- `$if()` - Conditional rendering
|
||||
- `$for()` - List rendering
|
||||
- `$router()` - Hash-based routing
|
||||
- `$mount()` - Mount components to DOM
|
||||
|
||||
### UI Components
|
||||
- `Button()` - Styled button with DaisyUI
|
||||
- `Input()` - Form input with floating labels
|
||||
- `Alert()` - Alert messages
|
||||
- `Modal()` - Modal dialogs
|
||||
- `Table()` - Data tables
|
||||
- `Tabs()` - Tabbed interfaces
|
||||
- And 30+ more components!
|
||||
|
||||
### Utilities
|
||||
- `Icons` - SVG icon set
|
||||
- `Utils` - Helper functions (joinClass, val)
|
||||
- `tt()` - i18n translation function
|
||||
|
||||
## Language Support
|
||||
|
||||
SigProUI includes built-in i18n with Spanish and English:
|
||||
|
||||
```javascript
|
||||
import { tt } from 'sigpro-ui';
|
||||
|
||||
// Change locale (default is 'es')
|
||||
tt.setLocale('en');
|
||||
|
||||
// Use translations
|
||||
const closeButton = Button({}, tt('close')());
|
||||
const searchPlaceholder = Input({ placeholder: tt('search')() });
|
||||
```
|
||||
|
||||
Available translations: `close`, `confirm`, `cancel`, `search`, `loading`, `nodata`
|
||||
|
||||
## TypeScript Support
|
||||
|
||||
SigProUI includes TypeScript definitions. Import types as needed:
|
||||
|
||||
```typescript
|
||||
import { Button, Input, type ButtonProps, type InputProps } from 'sigpro-ui';
|
||||
|
||||
const MyButton: React.FC<ButtonProps> = (props) => {
|
||||
return Button(props, 'Click me');
|
||||
};
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
| Problem | Solution |
|
||||
| :--- | :--- |
|
||||
| Components don't look styled | Check that `app.css` is imported and contains the Tailwind + daisyUI directives. |
|
||||
| `UI is not defined` | Make sure you call `UI()` **before** using any component like `Button`, `Input`, etc. |
|
||||
| Locale not working | Verify you passed a valid locale (`"es"` or `"en"`) to `UI()`. |
|
||||
| Build errors with Tailwind v4 | Ensure Tailwind CSS v4 and daisyUI v5 are correctly installed and configured. |
|
||||
| Components don't look styled | Check that you've included Tailwind + daisyUI CSS (either via import or CDN) |
|
||||
| `$ is not defined` | SigProUI includes sigpro core - no need to install separately. Make sure you're importing from 'sigpro-ui' |
|
||||
| `Button is not defined` | In CDN mode, all components are in window. Use `window.Button` or destructure from window |
|
||||
| Build errors | Ensure you're using a modern bundler that supports ESM |
|
||||
| CDN components not working | The CDN version exposes everything globally. Use `const { $, Button } = window;` or call directly |
|
||||
| Locale not working | Set locale with `tt.setLocale('en')` before using translations |
|
||||
|
||||
## Migration from older versions
|
||||
|
||||
If you were using SigProUI v1.0.x with separate SigPro installation:
|
||||
|
||||
**Before:**
|
||||
```javascript
|
||||
import { $ } from 'sigpro';
|
||||
import { Button } from 'sigpro-ui';
|
||||
```
|
||||
|
||||
**Now:**
|
||||
```javascript
|
||||
import { $, Button } from 'sigpro-ui';
|
||||
// That's it! Everything comes from one package.
|
||||
```
|
||||
|
||||
**Happy coding!** 🎉
|
||||
|
||||
|
||||
Reference in New Issue
Block a user