@ereactthohir/rice-ui 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +292 -0
- package/dist/components/Accordion.d.ts +16 -0
- package/dist/components/Accordion.d.ts.map +1 -0
- package/dist/components/Accordion.js +74 -0
- package/dist/components/Accordion.js.map +1 -0
- package/dist/components/Alert.d.ts +12 -0
- package/dist/components/Alert.d.ts.map +1 -0
- package/dist/components/Alert.js +96 -0
- package/dist/components/Alert.js.map +1 -0
- package/dist/components/Badge.d.ts +10 -0
- package/dist/components/Badge.d.ts.map +1 -0
- package/dist/components/Badge.js +35 -0
- package/dist/components/Badge.js.map +1 -0
- package/dist/components/Button.d.ts +9 -0
- package/dist/components/Button.d.ts.map +1 -0
- package/dist/components/Button.js +29 -0
- package/dist/components/Button.js.map +1 -0
- package/dist/components/Card.d.ts +10 -0
- package/dist/components/Card.d.ts.map +1 -0
- package/dist/components/Card.js +17 -0
- package/dist/components/Card.js.map +1 -0
- package/dist/components/Dropdown.d.ts +18 -0
- package/dist/components/Dropdown.d.ts.map +1 -0
- package/dist/components/Dropdown.js +81 -0
- package/dist/components/Dropdown.js.map +1 -0
- package/dist/components/Input.d.ts +8 -0
- package/dist/components/Input.d.ts.map +1 -0
- package/dist/components/Input.js +56 -0
- package/dist/components/Input.js.map +1 -0
- package/dist/components/Layout.d.ts +9 -0
- package/dist/components/Layout.d.ts.map +1 -0
- package/dist/components/Layout.js +18 -0
- package/dist/components/Layout.js.map +1 -0
- package/dist/components/Modal.d.ts +11 -0
- package/dist/components/Modal.d.ts.map +1 -0
- package/dist/components/Modal.js +36 -0
- package/dist/components/Modal.js.map +1 -0
- package/dist/components/Progress.d.ts +14 -0
- package/dist/components/Progress.d.ts.map +1 -0
- package/dist/components/Progress.js +49 -0
- package/dist/components/Progress.js.map +1 -0
- package/dist/components/Skeleton.d.ts +9 -0
- package/dist/components/Skeleton.d.ts.map +1 -0
- package/dist/components/Skeleton.js +22 -0
- package/dist/components/Skeleton.js.map +1 -0
- package/dist/components/Table.d.ts +13 -0
- package/dist/components/Table.d.ts.map +1 -0
- package/dist/components/Table.js +19 -0
- package/dist/components/Table.js.map +1 -0
- package/dist/components/Tabs.d.ts +17 -0
- package/dist/components/Tabs.d.ts.map +1 -0
- package/dist/components/Tabs.js +91 -0
- package/dist/components/Tabs.js.map +1 -0
- package/dist/components/Toast.d.ts +9 -0
- package/dist/components/Toast.d.ts.map +1 -0
- package/dist/components/Toast.js +60 -0
- package/dist/components/Toast.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +35 -0
- package/dist/index.js.map +1 -0
- package/dist/styles/index.d.ts +8 -0
- package/dist/styles/index.d.ts.map +1 -0
- package/dist/styles/index.js +52 -0
- package/dist/styles/index.js.map +1 -0
- package/package.json +26 -0
package/README.md
ADDED
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
# 🍚 Rice UI - The Most Powerful CSS Framework for EreactThohir
|
|
2
|
+
|
|
3
|
+
Rice UI is the default and most powerful CSS framework for EreactThohir, designed to be **more comprehensive and feature-rich than Tailwind CSS**.
|
|
4
|
+
|
|
5
|
+
## ✨ Why Rice UI?
|
|
6
|
+
|
|
7
|
+
### **Advantages over Tailwind CSS:**
|
|
8
|
+
|
|
9
|
+
1. **🎨 Glassmorphism Built-in** - Advanced visual effects out of the box
|
|
10
|
+
2. **🎭 Custom Animations** - Fade-in, slide-up, pulse, spin, and gradient animations
|
|
11
|
+
3. **🌈 Advanced Gradients** - Rainbow, sunset, and custom gradient utilities
|
|
12
|
+
4. **🎯 CSS Variables** - Easy theme customization with CSS custom properties
|
|
13
|
+
5. **📦 Comprehensive Components** - 14+ pre-built components
|
|
14
|
+
6. **🚀 Zero Configuration** - Works immediately without build step
|
|
15
|
+
7. **💪 TypeScript Support** - Full type safety for all components
|
|
16
|
+
8. **🌙 Dark Mode Ready** - Built-in support for dark themes
|
|
17
|
+
|
|
18
|
+
## 📦 Components
|
|
19
|
+
|
|
20
|
+
Rice UI includes 14+ production-ready components:
|
|
21
|
+
|
|
22
|
+
### Core Components
|
|
23
|
+
- **Button** - Multiple variants (primary, outline, ghost, danger)
|
|
24
|
+
- **Input** - Text inputs with labels and descriptions
|
|
25
|
+
- **Card** - Container component with title and description
|
|
26
|
+
- **Badge** - Status indicators with multiple variants
|
|
27
|
+
- **Modal** - Accessible dialog component
|
|
28
|
+
- **Toast** - Notification system
|
|
29
|
+
- **Table** - Data table with sorting and pagination
|
|
30
|
+
- **Skeleton** - Loading placeholders
|
|
31
|
+
|
|
32
|
+
### Advanced Components (NEW!)
|
|
33
|
+
- **Dropdown** - Select component with search and icons
|
|
34
|
+
- **Tabs** - Tab navigation with 3 variants (default, pills, underline)
|
|
35
|
+
- **Accordion** - Collapsible content panels
|
|
36
|
+
- **Alert** - Contextual feedback messages
|
|
37
|
+
- **Progress** - Progress bars with animations
|
|
38
|
+
- **Layout** - Page layout utilities
|
|
39
|
+
|
|
40
|
+
## 🎨 Utility Classes
|
|
41
|
+
|
|
42
|
+
All Rice UI classes use the `rice-` prefix to avoid conflicts:
|
|
43
|
+
|
|
44
|
+
### Layout
|
|
45
|
+
```tsx
|
|
46
|
+
rice-flex, rice-grid, rice-block, rice-inline-flex
|
|
47
|
+
rice-flex-col, rice-flex-row, rice-flex-wrap
|
|
48
|
+
rice-items-center, rice-justify-between
|
|
49
|
+
rice-gap-4, rice-gap-6, rice-gap-8
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Spacing
|
|
53
|
+
```tsx
|
|
54
|
+
rice-p-4, rice-p-6, rice-p-8, rice-p-12
|
|
55
|
+
rice-m-4, rice-mx-auto, rice-mb-8
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Typography
|
|
59
|
+
```tsx
|
|
60
|
+
rice-text-xs, rice-text-sm, rice-text-lg, rice-text-xl
|
|
61
|
+
rice-text-3xl, rice-text-5xl, rice-text-7xl
|
|
62
|
+
rice-font-medium, rice-font-bold, rice-font-black
|
|
63
|
+
rice-text-center, rice-text-left
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Colors
|
|
67
|
+
```tsx
|
|
68
|
+
rice-text-primary, rice-text-success, rice-text-danger
|
|
69
|
+
rice-bg-primary, rice-bg-white
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Effects
|
|
73
|
+
```tsx
|
|
74
|
+
rice-glass, rice-glass-dark
|
|
75
|
+
rice-shadow-lg, rice-shadow-xl, rice-shadow-2xl
|
|
76
|
+
rice-rounded-lg, rice-rounded-xl, rice-rounded-full
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Animations
|
|
80
|
+
```tsx
|
|
81
|
+
rice-animate-fade-in
|
|
82
|
+
rice-animate-slide-up
|
|
83
|
+
rice-animate-pulse
|
|
84
|
+
rice-animate-spin
|
|
85
|
+
rice-animate-gradient
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Hover Effects
|
|
89
|
+
```tsx
|
|
90
|
+
rice-hover-scale
|
|
91
|
+
rice-hover-shadow
|
|
92
|
+
rice-hover-lift
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## 🚀 Usage Examples
|
|
96
|
+
|
|
97
|
+
### Basic Example
|
|
98
|
+
```tsx
|
|
99
|
+
import { Button, Card, Input } from '@ereactthohir/rice-ui';
|
|
100
|
+
|
|
101
|
+
function MyComponent() {
|
|
102
|
+
return (
|
|
103
|
+
<div className="rice-p-6 rice-bg-gradient">
|
|
104
|
+
<Card title="Welcome" description="Get started with Rice UI">
|
|
105
|
+
<Input label="Email" placeholder="Enter your email" />
|
|
106
|
+
<Button variant="primary" className="rice-mt-4">
|
|
107
|
+
Submit
|
|
108
|
+
</Button>
|
|
109
|
+
</Card>
|
|
110
|
+
</div>
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Glassmorphism Effect
|
|
116
|
+
```tsx
|
|
117
|
+
<div className="rice-glass rice-p-8 rice-rounded-2xl rice-shadow-xl">
|
|
118
|
+
<h1 className="rice-text-3xl rice-font-bold">Beautiful Glass Effect</h1>
|
|
119
|
+
</div>
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### Dropdown Component
|
|
123
|
+
```tsx
|
|
124
|
+
import { Dropdown } from '@ereactthohir/rice-ui';
|
|
125
|
+
|
|
126
|
+
const items = [
|
|
127
|
+
{ label: 'Option 1', value: '1', icon: '🎯' },
|
|
128
|
+
{ label: 'Option 2', value: '2', icon: '⚡' },
|
|
129
|
+
{ label: 'Option 3', value: '3', icon: '🚀' }
|
|
130
|
+
];
|
|
131
|
+
|
|
132
|
+
<Dropdown
|
|
133
|
+
items={items}
|
|
134
|
+
label="Select an option"
|
|
135
|
+
onChange={(value) => console.log(value)}
|
|
136
|
+
/>
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Tabs Component
|
|
140
|
+
```tsx
|
|
141
|
+
import { Tabs } from '@ereactthohir/rice-ui';
|
|
142
|
+
|
|
143
|
+
const tabs = [
|
|
144
|
+
{ id: 'tab1', label: 'Overview', icon: '📊', content: <div>Overview content</div> },
|
|
145
|
+
{ id: 'tab2', label: 'Settings', icon: '⚙️', content: <div>Settings content</div> }
|
|
146
|
+
];
|
|
147
|
+
|
|
148
|
+
<Tabs items={tabs} variant="pills" />
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### Accordion Component
|
|
152
|
+
```tsx
|
|
153
|
+
import { Accordion } from '@ereactthohir/rice-ui';
|
|
154
|
+
|
|
155
|
+
const items = [
|
|
156
|
+
{ id: '1', title: 'What is Rice UI?', icon: '❓', content: 'Rice UI is...' },
|
|
157
|
+
{ id: '2', title: 'How to install?', icon: '📦', content: 'Run npm install...' }
|
|
158
|
+
];
|
|
159
|
+
|
|
160
|
+
<Accordion items={items} allowMultiple />
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### Alert Component
|
|
164
|
+
```tsx
|
|
165
|
+
import { Alert } from '@ereactthohir/rice-ui';
|
|
166
|
+
|
|
167
|
+
<Alert variant="success" title="Success!" dismissible>
|
|
168
|
+
Your changes have been saved successfully.
|
|
169
|
+
</Alert>
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
### Progress Component
|
|
173
|
+
```tsx
|
|
174
|
+
import { Progress } from '@ereactthohir/rice-ui';
|
|
175
|
+
|
|
176
|
+
<Progress
|
|
177
|
+
value={75}
|
|
178
|
+
label="Upload Progress"
|
|
179
|
+
showPercentage
|
|
180
|
+
variant="success"
|
|
181
|
+
animated
|
|
182
|
+
striped
|
|
183
|
+
/>
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
## 🎯 CSS Variables
|
|
187
|
+
|
|
188
|
+
Customize Rice UI by overriding CSS variables:
|
|
189
|
+
|
|
190
|
+
```css
|
|
191
|
+
:root {
|
|
192
|
+
--rice-primary-500: #your-color;
|
|
193
|
+
--rice-space-4: 1.5rem;
|
|
194
|
+
--rice-radius-lg: 1rem;
|
|
195
|
+
--rice-shadow-xl: your-shadow;
|
|
196
|
+
}
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
## 🌙 Dark Mode
|
|
200
|
+
|
|
201
|
+
Rice UI supports dark mode out of the box:
|
|
202
|
+
|
|
203
|
+
```tsx
|
|
204
|
+
<div className="rice-glass-dark rice-p-6">
|
|
205
|
+
<h1 className="rice-text-white">Dark Mode Content</h1>
|
|
206
|
+
</div>
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
## 📱 Responsive Design
|
|
210
|
+
|
|
211
|
+
All utilities support responsive breakpoints:
|
|
212
|
+
|
|
213
|
+
```tsx
|
|
214
|
+
<div className="rice-grid rice-grid-cols-1 rice-md-grid-cols-2 rice-lg-grid-cols-3">
|
|
215
|
+
{/* Responsive grid */}
|
|
216
|
+
</div>
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
Breakpoints:
|
|
220
|
+
- `sm`: 640px
|
|
221
|
+
- `md`: 768px
|
|
222
|
+
- `lg`: 1024px
|
|
223
|
+
- `xl`: 1280px
|
|
224
|
+
|
|
225
|
+
## 🎨 Advanced Features
|
|
226
|
+
|
|
227
|
+
### Gradient Text
|
|
228
|
+
```tsx
|
|
229
|
+
<h1 className="rice-text-5xl rice-font-black rice-text-transparent rice-bg-clip-text rice-gradient-primary rice-animate-gradient">
|
|
230
|
+
Animated Gradient Text
|
|
231
|
+
</h1>
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
### Glassmorphism Cards
|
|
235
|
+
```tsx
|
|
236
|
+
<div className="rice-glass rice-rounded-2xl rice-p-8 rice-shadow-2xl rice-hover-scale rice-transition">
|
|
237
|
+
<h2>Premium Glass Card</h2>
|
|
238
|
+
</div>
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
## 🔧 Framework Alternatives
|
|
242
|
+
|
|
243
|
+
EreactThohir also supports:
|
|
244
|
+
- **Tailwind CSS** (optional)
|
|
245
|
+
- **Bootstrap** (optional)
|
|
246
|
+
|
|
247
|
+
Choose your preferred framework during project creation with `ereact create`.
|
|
248
|
+
|
|
249
|
+
## 📚 Full Component List
|
|
250
|
+
|
|
251
|
+
| Component | Description | Variants |
|
|
252
|
+
|-----------|-------------|----------|
|
|
253
|
+
| Button | Action buttons | primary, outline, ghost, danger |
|
|
254
|
+
| Input | Text input fields | - |
|
|
255
|
+
| Card | Content containers | - |
|
|
256
|
+
| Badge | Status indicators | primary, success, warning, danger, info |
|
|
257
|
+
| Modal | Dialog windows | - |
|
|
258
|
+
| Toast | Notifications | success, error, warning, info |
|
|
259
|
+
| Table | Data tables | - |
|
|
260
|
+
| Skeleton | Loading states | - |
|
|
261
|
+
| Dropdown | Select menus | - |
|
|
262
|
+
| Tabs | Tab navigation | default, pills, underline |
|
|
263
|
+
| Accordion | Collapsible panels | - |
|
|
264
|
+
| Alert | Feedback messages | info, success, warning, danger |
|
|
265
|
+
| Progress | Progress indicators | default, success, warning, danger |
|
|
266
|
+
| Layout | Page layouts | - |
|
|
267
|
+
|
|
268
|
+
## 🚀 Getting Started
|
|
269
|
+
|
|
270
|
+
Rice UI is automatically included in all EreactThohir projects. No installation required!
|
|
271
|
+
|
|
272
|
+
```tsx
|
|
273
|
+
import { Button, Card, Input } from '@ereactthohir/rice-ui';
|
|
274
|
+
|
|
275
|
+
// Start building!
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
## 💡 Tips
|
|
279
|
+
|
|
280
|
+
1. **Use `rice-` prefix** for all utility classes
|
|
281
|
+
2. **Combine utilities** for complex designs
|
|
282
|
+
3. **Leverage CSS variables** for theming
|
|
283
|
+
4. **Use glassmorphism** for premium effects
|
|
284
|
+
5. **Add animations** for better UX
|
|
285
|
+
|
|
286
|
+
## 📖 Documentation
|
|
287
|
+
|
|
288
|
+
For full documentation, visit the EreactThohir docs or explore the component source code in `packages/rice-ui/src/components/`.
|
|
289
|
+
|
|
290
|
+
---
|
|
291
|
+
|
|
292
|
+
**Rice UI** - More powerful than Tailwind, built for EreactThohir 🚀
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface AccordionItem {
|
|
3
|
+
id: string;
|
|
4
|
+
title: string;
|
|
5
|
+
content: React.ReactNode;
|
|
6
|
+
icon?: string;
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface AccordionProps {
|
|
10
|
+
items: AccordionItem[];
|
|
11
|
+
allowMultiple?: boolean;
|
|
12
|
+
defaultOpen?: string[];
|
|
13
|
+
className?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare const Accordion: React.FC<AccordionProps>;
|
|
16
|
+
//# sourceMappingURL=Accordion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Accordion.d.ts","sourceRoot":"","sources":["../../src/components/Accordion.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,MAAM,WAAW,aAAa;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC3B,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CA+E9C,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.Accordion = void 0;
|
|
37
|
+
const react_1 = __importStar(require("react"));
|
|
38
|
+
const Accordion = ({ items, allowMultiple = false, defaultOpen = [], className = '' }) => {
|
|
39
|
+
const [openItems, setOpenItems] = (0, react_1.useState)(defaultOpen);
|
|
40
|
+
const toggleItem = (itemId) => {
|
|
41
|
+
if (allowMultiple) {
|
|
42
|
+
setOpenItems(prev => prev.includes(itemId)
|
|
43
|
+
? prev.filter(id => id !== itemId)
|
|
44
|
+
: [...prev, itemId]);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
setOpenItems(prev => prev.includes(itemId) ? [] : [itemId]);
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
return (react_1.default.createElement("div", { className: `rice-w-full rice-space-y-2 ${className}` }, items.map((item) => {
|
|
51
|
+
const isOpen = openItems.includes(item.id);
|
|
52
|
+
return (react_1.default.createElement("div", { key: item.id, className: "rice-border rice-rounded-lg rice-overflow-hidden rice-bg-white rice-shadow-sm" },
|
|
53
|
+
react_1.default.createElement("button", { onClick: () => !item.disabled && toggleItem(item.id), disabled: item.disabled, className: "rice-w-full rice-flex rice-items-center rice-justify-between rice-p-4 rice-text-left rice-font-semibold rice-transition", style: {
|
|
54
|
+
cursor: item.disabled ? 'not-allowed' : 'pointer',
|
|
55
|
+
opacity: item.disabled ? 0.5 : 1,
|
|
56
|
+
backgroundColor: isOpen ? '#f8fafc' : '#ffffff',
|
|
57
|
+
color: '#0f172a'
|
|
58
|
+
} },
|
|
59
|
+
react_1.default.createElement("div", { className: "rice-flex rice-items-center rice-gap-3" },
|
|
60
|
+
item.icon && react_1.default.createElement("span", { className: "rice-text-xl" }, item.icon),
|
|
61
|
+
react_1.default.createElement("span", null, item.title)),
|
|
62
|
+
react_1.default.createElement("svg", { className: "rice-w-5 rice-h-5 rice-transition", style: {
|
|
63
|
+
transform: isOpen ? 'rotate(180deg)' : 'rotate(0deg)',
|
|
64
|
+
color: '#64748b'
|
|
65
|
+
}, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor" },
|
|
66
|
+
react_1.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" }))),
|
|
67
|
+
isOpen && (react_1.default.createElement("div", { className: "rice-p-4 rice-border-t rice-animate-slide-up", style: {
|
|
68
|
+
backgroundColor: '#ffffff',
|
|
69
|
+
color: '#475569'
|
|
70
|
+
} }, item.content))));
|
|
71
|
+
})));
|
|
72
|
+
};
|
|
73
|
+
exports.Accordion = Accordion;
|
|
74
|
+
//# sourceMappingURL=Accordion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Accordion.js","sourceRoot":"","sources":["../../src/components/Accordion.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAwC;AAiBjC,MAAM,SAAS,GAA6B,CAAC,EAChD,KAAK,EACL,aAAa,GAAG,KAAK,EACrB,WAAW,GAAG,EAAE,EAChB,SAAS,GAAG,EAAE,EACjB,EAAE,EAAE;IACD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,gBAAQ,EAAW,WAAW,CAAC,CAAC;IAElE,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,EAAE;QAClC,IAAI,aAAa,EAAE,CAAC;YAChB,YAAY,CAAC,IAAI,CAAC,EAAE,CAChB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACjB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,MAAM,CAAC;gBAClC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAC1B,CAAC;QACN,CAAC;aAAM,CAAC;YACJ,YAAY,CAAC,IAAI,CAAC,EAAE,CAChB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CACxC,CAAC;QACN,CAAC;IACL,CAAC,CAAC;IAEF,OAAO,CACH,uCAAK,SAAS,EAAE,8BAA8B,SAAS,EAAE,IACpD,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAChB,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE3C,OAAO,CACH,uCACI,GAAG,EAAE,IAAI,CAAC,EAAE,EACZ,SAAS,EAAC,+EAA+E;YAGzF,0CACI,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EACpD,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,SAAS,EAAC,yHAAyH,EACnI,KAAK,EAAE;oBACH,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;oBACjD,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBAChC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;oBAC/C,KAAK,EAAE,SAAS;iBACnB;gBAED,uCAAK,SAAS,EAAC,wCAAwC;oBAClD,IAAI,CAAC,IAAI,IAAI,wCAAM,SAAS,EAAC,cAAc,IAAE,IAAI,CAAC,IAAI,CAAQ;oBAC/D,4CAAO,IAAI,CAAC,KAAK,CAAQ,CACvB;gBACN,uCACI,SAAS,EAAC,mCAAmC,EAC7C,KAAK,EAAE;wBACH,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,cAAc;wBACrD,KAAK,EAAE,SAAS;qBACnB,EACD,IAAI,EAAC,MAAM,EACX,OAAO,EAAC,WAAW,EACnB,MAAM,EAAC,cAAc;oBAErB,wCAAM,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,EAAC,WAAW,EAAE,CAAC,EAAE,CAAC,EAAC,gBAAgB,GAAG,CACtF,CACD;YAGR,MAAM,IAAI,CACP,uCACI,SAAS,EAAC,8CAA8C,EACxD,KAAK,EAAE;oBACH,eAAe,EAAE,SAAS;oBAC1B,KAAK,EAAE,SAAS;iBACnB,IAEA,IAAI,CAAC,OAAO,CACX,CACT,CACC,CACT,CAAC;IACN,CAAC,CAAC,CACA,CACT,CAAC;AACN,CAAC,CAAC;AA/EW,QAAA,SAAS,aA+EpB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface AlertProps {
|
|
3
|
+
children: React.ReactNode;
|
|
4
|
+
variant?: 'info' | 'success' | 'warning' | 'danger';
|
|
5
|
+
title?: string;
|
|
6
|
+
icon?: string;
|
|
7
|
+
dismissible?: boolean;
|
|
8
|
+
onDismiss?: () => void;
|
|
9
|
+
className?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare const Alert: React.FC<AlertProps>;
|
|
12
|
+
//# sourceMappingURL=Alert.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Alert.d.ts","sourceRoot":"","sources":["../../src/components/Alert.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,MAAM,WAAW,UAAU;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAiGtC,CAAC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.Alert = void 0;
|
|
37
|
+
const react_1 = __importStar(require("react"));
|
|
38
|
+
const Alert = ({ children, variant = 'info', title, icon, dismissible = false, onDismiss, className = '' }) => {
|
|
39
|
+
const [isVisible, setIsVisible] = (0, react_1.useState)(true);
|
|
40
|
+
const handleDismiss = () => {
|
|
41
|
+
setIsVisible(false);
|
|
42
|
+
onDismiss?.();
|
|
43
|
+
};
|
|
44
|
+
if (!isVisible)
|
|
45
|
+
return null;
|
|
46
|
+
const variantStyles = {
|
|
47
|
+
info: {
|
|
48
|
+
background: '#eff6ff',
|
|
49
|
+
border: '#93c5fd',
|
|
50
|
+
color: '#1e40af',
|
|
51
|
+
iconColor: '#3b82f6'
|
|
52
|
+
},
|
|
53
|
+
success: {
|
|
54
|
+
background: '#d1fae5',
|
|
55
|
+
border: '#6ee7b7',
|
|
56
|
+
color: '#065f46',
|
|
57
|
+
iconColor: '#10b981'
|
|
58
|
+
},
|
|
59
|
+
warning: {
|
|
60
|
+
background: '#fef3c7',
|
|
61
|
+
border: '#fcd34d',
|
|
62
|
+
color: '#92400e',
|
|
63
|
+
iconColor: '#f59e0b'
|
|
64
|
+
},
|
|
65
|
+
danger: {
|
|
66
|
+
background: '#fee2e2',
|
|
67
|
+
border: '#fca5a5',
|
|
68
|
+
color: '#991b1b',
|
|
69
|
+
iconColor: '#ef4444'
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
const styles = variantStyles[variant];
|
|
73
|
+
const defaultIcons = {
|
|
74
|
+
info: 'ℹ️',
|
|
75
|
+
success: '✅',
|
|
76
|
+
warning: '⚠️',
|
|
77
|
+
danger: '❌'
|
|
78
|
+
};
|
|
79
|
+
return (react_1.default.createElement("div", { className: `rice-flex rice-items-start rice-gap-3 rice-p-4 rice-rounded-lg rice-border rice-animate-slide-up ${className}`, style: {
|
|
80
|
+
backgroundColor: styles.background,
|
|
81
|
+
borderColor: styles.border,
|
|
82
|
+
color: styles.color
|
|
83
|
+
} },
|
|
84
|
+
react_1.default.createElement("div", { className: "rice-flex-shrink-0 rice-text-xl", style: { color: styles.iconColor } }, icon || defaultIcons[variant]),
|
|
85
|
+
react_1.default.createElement("div", { className: "rice-flex-1" },
|
|
86
|
+
title && (react_1.default.createElement("h4", { className: "rice-font-bold rice-mb-1", style: { color: styles.color } }, title)),
|
|
87
|
+
react_1.default.createElement("div", { className: "rice-text-sm", style: { color: styles.color } }, children)),
|
|
88
|
+
dismissible && (react_1.default.createElement("button", { onClick: handleDismiss, className: "rice-flex-shrink-0 rice-p-1 rice-rounded rice-transition rice-hover-scale-105", style: {
|
|
89
|
+
color: styles.color,
|
|
90
|
+
cursor: 'pointer'
|
|
91
|
+
} },
|
|
92
|
+
react_1.default.createElement("svg", { className: "rice-w-4 rice-h-4", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor" },
|
|
93
|
+
react_1.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }))))));
|
|
94
|
+
};
|
|
95
|
+
exports.Alert = Alert;
|
|
96
|
+
//# sourceMappingURL=Alert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Alert.js","sourceRoot":"","sources":["../../src/components/Alert.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAwC;AAYjC,MAAM,KAAK,GAAyB,CAAC,EACxC,QAAQ,EACR,OAAO,GAAG,MAAM,EAChB,KAAK,EACL,IAAI,EACJ,WAAW,GAAG,KAAK,EACnB,SAAS,EACT,SAAS,GAAG,EAAE,EACjB,EAAE,EAAE;IACD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC;IAEjD,MAAM,aAAa,GAAG,GAAG,EAAE;QACvB,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,SAAS,EAAE,EAAE,CAAC;IAClB,CAAC,CAAC;IAEF,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAE5B,MAAM,aAAa,GAAG;QAClB,IAAI,EAAE;YACF,UAAU,EAAE,SAAS;YACrB,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,SAAS;YAChB,SAAS,EAAE,SAAS;SACvB;QACD,OAAO,EAAE;YACL,UAAU,EAAE,SAAS;YACrB,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,SAAS;YAChB,SAAS,EAAE,SAAS;SACvB;QACD,OAAO,EAAE;YACL,UAAU,EAAE,SAAS;YACrB,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,SAAS;YAChB,SAAS,EAAE,SAAS;SACvB;QACD,MAAM,EAAE;YACJ,UAAU,EAAE,SAAS;YACrB,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,SAAS;YAChB,SAAS,EAAE,SAAS;SACvB;KACJ,CAAC;IAEF,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAEtC,MAAM,YAAY,GAAG;QACjB,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,GAAG;QACZ,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,GAAG;KACd,CAAC;IAEF,OAAO,CACH,uCACI,SAAS,EAAE,oGAAoG,SAAS,EAAE,EAC1H,KAAK,EAAE;YACH,eAAe,EAAE,MAAM,CAAC,UAAU;YAClC,WAAW,EAAE,MAAM,CAAC,MAAM;YAC1B,KAAK,EAAE,MAAM,CAAC,KAAK;SACtB;QAGD,uCAAK,SAAS,EAAC,iCAAiC,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,IAC9E,IAAI,IAAI,YAAY,CAAC,OAAO,CAAC,CAC5B;QAGN,uCAAK,SAAS,EAAC,aAAa;YACvB,KAAK,IAAI,CACN,sCAAI,SAAS,EAAC,0BAA0B,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,IAClE,KAAK,CACL,CACR;YACD,uCAAK,SAAS,EAAC,cAAc,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,IACvD,QAAQ,CACP,CACJ;QAGL,WAAW,IAAI,CACZ,0CACI,OAAO,EAAE,aAAa,EACtB,SAAS,EAAC,+EAA+E,EACzF,KAAK,EAAE;gBACH,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,MAAM,EAAE,SAAS;aACpB;YAED,uCAAK,SAAS,EAAC,mBAAmB,EAAC,IAAI,EAAC,MAAM,EAAC,OAAO,EAAC,WAAW,EAAC,MAAM,EAAC,cAAc;gBACpF,wCAAM,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,EAAC,WAAW,EAAE,CAAC,EAAE,CAAC,EAAC,sBAAsB,GAAG,CAC5F,CACD,CACZ,CACC,CACT,CAAC;AACN,CAAC,CAAC;AAjGW,QAAA,KAAK,SAiGhB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface BadgeProps {
|
|
3
|
+
children: React.ReactNode;
|
|
4
|
+
variant?: 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info';
|
|
5
|
+
size?: 'sm' | 'md';
|
|
6
|
+
className?: string;
|
|
7
|
+
style?: React.CSSProperties;
|
|
8
|
+
}
|
|
9
|
+
export declare const Badge: React.FC<BadgeProps>;
|
|
10
|
+
//# sourceMappingURL=Badge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Badge.d.ts","sourceRoot":"","sources":["../../src/components/Badge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,WAAW,UAAU;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;IAC9E,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC/B;AAED,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAyCtC,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.Badge = void 0;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const Badge = ({ children, variant = 'primary', size = 'md', className = '', style }) => {
|
|
9
|
+
const variants = {
|
|
10
|
+
primary: 'rice-bg-primary rice-text-primary',
|
|
11
|
+
secondary: 'rice-bg-secondary rice-text-secondary',
|
|
12
|
+
success: 'rice-text-success',
|
|
13
|
+
danger: 'rice-text-danger',
|
|
14
|
+
warning: 'rice-text-warning',
|
|
15
|
+
info: 'rice-text-info'
|
|
16
|
+
};
|
|
17
|
+
const sizes = {
|
|
18
|
+
sm: 'rice-px-2 rice-py-1 rice-text-xs',
|
|
19
|
+
md: 'rice-px-3 rice-py-1 rice-text-sm'
|
|
20
|
+
};
|
|
21
|
+
const baseStyles = {
|
|
22
|
+
display: 'inline-flex',
|
|
23
|
+
alignItems: 'center',
|
|
24
|
+
fontWeight: 700,
|
|
25
|
+
textTransform: 'uppercase',
|
|
26
|
+
letterSpacing: '0.05em',
|
|
27
|
+
border: '1px solid',
|
|
28
|
+
borderRadius: '9999px',
|
|
29
|
+
transition: 'all 300ms',
|
|
30
|
+
...style
|
|
31
|
+
};
|
|
32
|
+
return (react_1.default.createElement("span", { className: `${variants[variant]} ${sizes[size]} ${className}`, style: baseStyles }, children));
|
|
33
|
+
};
|
|
34
|
+
exports.Badge = Badge;
|
|
35
|
+
//# sourceMappingURL=Badge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Badge.js","sourceRoot":"","sources":["../../src/components/Badge.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAUnB,MAAM,KAAK,GAAyB,CAAC,EACxC,QAAQ,EACR,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,IAAI,EACX,SAAS,GAAG,EAAE,EACd,KAAK,EACR,EAAE,EAAE;IACD,MAAM,QAAQ,GAAG;QACb,OAAO,EAAE,mCAAmC;QAC5C,SAAS,EAAE,uCAAuC;QAClD,OAAO,EAAE,mBAAmB;QAC5B,MAAM,EAAE,kBAAkB;QAC1B,OAAO,EAAE,mBAAmB;QAC5B,IAAI,EAAE,gBAAgB;KACzB,CAAC;IAEF,MAAM,KAAK,GAAG;QACV,EAAE,EAAE,kCAAkC;QACtC,EAAE,EAAE,kCAAkC;KACzC,CAAC;IAEF,MAAM,UAAU,GAAwB;QACpC,OAAO,EAAE,aAAa;QACtB,UAAU,EAAE,QAAQ;QACpB,UAAU,EAAE,GAAG;QACf,aAAa,EAAE,WAAW;QAC1B,aAAa,EAAE,QAAQ;QACvB,MAAM,EAAE,WAAW;QACnB,YAAY,EAAE,QAAQ;QACtB,UAAU,EAAE,WAAW;QACvB,GAAG,KAAK;KACX,CAAC;IAEF,OAAO,CACH,wCACI,SAAS,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,SAAS,EAAE,EAC7D,KAAK,EAAE,UAAU,IAEhB,QAAQ,CACN,CACV,CAAC;AACN,CAAC,CAAC;AAzCW,QAAA,KAAK,SAyChB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
3
|
+
variant?: 'primary' | 'secondary' | 'outline' | 'danger';
|
|
4
|
+
size?: 'sm' | 'md' | 'lg';
|
|
5
|
+
label?: string;
|
|
6
|
+
loading?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare const Button: React.FC<ButtonProps>;
|
|
9
|
+
//# sourceMappingURL=Button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../src/components/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,WAAW,WAAY,SAAQ,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC;IAC9E,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;IACzD,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CA2CxC,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.Button = void 0;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const Button = ({ variant = 'primary', size = 'md', label, children, className = '', loading = false, ...props }) => {
|
|
9
|
+
const baseStyles = 'inline-flex items-center justify-center font-semibold transition-all duration-300 ease-out focus:outline-none focus:ring-2 focus:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed rounded-xl active:scale-95 transform';
|
|
10
|
+
const variants = {
|
|
11
|
+
primary: 'bg-indigo-600 text-white hover:bg-indigo-700 hover:shadow-[0_0_20px_rgba(79,70,229,0.4)] focus:ring-indigo-500',
|
|
12
|
+
secondary: 'bg-white text-slate-900 border border-slate-200 hover:bg-slate-50 hover:shadow-lg focus:ring-slate-300',
|
|
13
|
+
outline: 'bg-transparent text-indigo-600 border-2 border-indigo-600 hover:bg-indigo-50 hover:shadow-md focus:ring-indigo-500',
|
|
14
|
+
danger: 'bg-rose-600 text-white hover:bg-rose-700 hover:shadow-[0_0_20px_rgba(225,29,72,0.4)] focus:ring-rose-500'
|
|
15
|
+
};
|
|
16
|
+
const sizes = {
|
|
17
|
+
sm: 'px-4 py-2 text-xs',
|
|
18
|
+
md: 'px-6 py-3 text-sm',
|
|
19
|
+
lg: 'px-8 py-4 text-base'
|
|
20
|
+
};
|
|
21
|
+
const combinedClasses = `${baseStyles} ${variants[variant]} ${sizes[size]} ${className}`;
|
|
22
|
+
return (react_1.default.createElement("button", { className: combinedClasses, disabled: loading, ...props }, loading ? (react_1.default.createElement("div", { className: "flex items-center gap-2" },
|
|
23
|
+
react_1.default.createElement("svg", { className: "animate-spin h-4 w-4 text-current", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24" },
|
|
24
|
+
react_1.default.createElement("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }),
|
|
25
|
+
react_1.default.createElement("path", { className: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z" })),
|
|
26
|
+
react_1.default.createElement("span", null, "Loading..."))) : (react_1.default.createElement("span", { className: "flex items-center gap-2" }, label || children))));
|
|
27
|
+
};
|
|
28
|
+
exports.Button = Button;
|
|
29
|
+
//# sourceMappingURL=Button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Button.js","sourceRoot":"","sources":["../../src/components/Button.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AASnB,MAAM,MAAM,GAA0B,CAAC,EAC1C,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,IAAI,EACX,KAAK,EACL,QAAQ,EACR,SAAS,GAAG,EAAE,EACd,OAAO,GAAG,KAAK,EACf,GAAG,KAAK,EACX,EAAE,EAAE;IACD,MAAM,UAAU,GAAG,qOAAqO,CAAC;IAEzP,MAAM,QAAQ,GAAG;QACb,OAAO,EAAE,gHAAgH;QACzH,SAAS,EAAE,wGAAwG;QACnH,OAAO,EAAE,oHAAoH;QAC7H,MAAM,EAAE,0GAA0G;KACrH,CAAC;IAEF,MAAM,KAAK,GAAG;QACV,EAAE,EAAE,mBAAmB;QACvB,EAAE,EAAE,mBAAmB;QACvB,EAAE,EAAE,qBAAqB;KAC5B,CAAC;IAEF,MAAM,eAAe,GAAG,GAAG,UAAU,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC;IAEzF,OAAO,CACH,0CAAQ,SAAS,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,KAAM,KAAK,IAC3D,OAAO,CAAC,CAAC,CAAC,CACP,uCAAK,SAAS,EAAC,yBAAyB;QACpC,uCAAK,SAAS,EAAC,mCAAmC,EAAC,KAAK,EAAC,4BAA4B,EAAC,IAAI,EAAC,MAAM,EAAC,OAAO,EAAC,WAAW;YACjH,0CAAQ,SAAS,EAAC,YAAY,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,GAAG,GAAU;YACrG,wCAAM,SAAS,EAAC,YAAY,EAAC,IAAI,EAAC,cAAc,EAAC,CAAC,EAAC,iHAAiH,GAAQ,CAC1K;QACN,yDAAuB,CACrB,CACT,CAAC,CAAC,CAAC,CACA,wCAAM,SAAS,EAAC,yBAAyB,IACpC,KAAK,IAAI,QAAQ,CACf,CACV,CACI,CACZ,CAAC;AACN,CAAC,CAAC;AA3CW,QAAA,MAAM,UA2CjB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface CardProps {
|
|
3
|
+
title?: string;
|
|
4
|
+
description?: string;
|
|
5
|
+
children?: React.ReactNode;
|
|
6
|
+
footer?: React.ReactNode;
|
|
7
|
+
className?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare const Card: React.FC<CardProps>;
|
|
10
|
+
//# sourceMappingURL=Card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../src/components/Card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,WAAW,SAAS;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAyBpC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.Card = void 0;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const Card = ({ title, description, children, footer, className = '' }) => {
|
|
9
|
+
return (react_1.default.createElement("div", { className: `bg-white/80 backdrop-blur-sm border border-slate-200 rounded-2xl overflow-hidden shadow-sm hover:shadow-2xl hover:-translate-y-1 transition-all duration-300 ease-out group ${className}` },
|
|
10
|
+
(title || description) && (react_1.default.createElement("div", { className: "px-8 py-6 border-b border-slate-100 bg-gradient-to-r from-slate-50/50 to-transparent" },
|
|
11
|
+
title && react_1.default.createElement("h3", { className: "text-xl font-bold text-slate-900 group-hover:text-indigo-600 transition-colors duration-300" }, title),
|
|
12
|
+
description && react_1.default.createElement("p", { className: "text-sm text-slate-500 mt-1" }, description))),
|
|
13
|
+
react_1.default.createElement("div", { className: "px-8 py-6" }, children),
|
|
14
|
+
footer && (react_1.default.createElement("div", { className: "px-8 py-4 bg-slate-50/80 border-t border-slate-100 backdrop-blur-sm" }, footer))));
|
|
15
|
+
};
|
|
16
|
+
exports.Card = Card;
|
|
17
|
+
//# sourceMappingURL=Card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Card.js","sourceRoot":"","sources":["../../src/components/Card.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAUnB,MAAM,IAAI,GAAwB,CAAC,EACtC,KAAK,EACL,WAAW,EACX,QAAQ,EACR,MAAM,EACN,SAAS,GAAG,EAAE,EACjB,EAAE,EAAE;IACD,OAAO,CACH,uCAAK,SAAS,EAAE,+KAA+K,SAAS,EAAE;QACrM,CAAC,KAAK,IAAI,WAAW,CAAC,IAAI,CACvB,uCAAK,SAAS,EAAC,sFAAsF;YAChG,KAAK,IAAI,sCAAI,SAAS,EAAC,6FAA6F,IAAE,KAAK,CAAM;YACjI,WAAW,IAAI,qCAAG,SAAS,EAAC,6BAA6B,IAAE,WAAW,CAAK,CAC1E,CACT;QACD,uCAAK,SAAS,EAAC,WAAW,IACrB,QAAQ,CACP;QACL,MAAM,IAAI,CACP,uCAAK,SAAS,EAAC,qEAAqE,IAC/E,MAAM,CACL,CACT,CACC,CACT,CAAC;AACN,CAAC,CAAC;AAzBW,QAAA,IAAI,QAyBf"}
|