@osiloke/chalo 0.1.1 โ 1.0.1
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/LICENSE +21 -0
- package/README.md +532 -0
- package/dist/chalo.cjs +1 -1
- package/dist/chalo.mjs +11 -7
- package/dist/types/store.test.d.ts +1 -0
- package/package.json +11 -4
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Osiloke Harold Emoekpere
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,532 @@
|
|
|
1
|
+
# chalo
|
|
2
|
+
<p align="center">
|
|
3
|
+
<img src="./apps/demo/src/assets/logo.svg" alt="Chalo Logo" width="120" />
|
|
4
|
+
</p>
|
|
5
|
+
|
|
6
|
+
[](https://www.npmjs.com/package/@osiloke/chalo)
|
|
7
|
+
[](https://www.npmjs.com/package/@osiloke/chalo)
|
|
8
|
+
[](LICENSE)
|
|
9
|
+
[](https://bundlephobia.com/package/@osiloke/chalo)
|
|
10
|
+
[](https://www.typescriptlang.org/)
|
|
11
|
+
|
|
12
|
+
> **A modern React component library for building intelligent, action-driven UI experiences.**
|
|
13
|
+
|
|
14
|
+
Chalo provides a declarative API for creating guided user experiences, interactive walkthroughs, and automated UI workflows. Built with Zustand for state management and Framer Motion for smooth animations.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## โจ Features
|
|
19
|
+
|
|
20
|
+
- ๐ฏ **Declarative Missions** - Define multi-step guided experiences with JSON-like configs
|
|
21
|
+
- ๐ **Action Execution Engine** - Automate UI interactions (clicks, form fills, API calls, navigation)
|
|
22
|
+
- ๐จ **Smart Components** - Pre-built `SmartDrawer`, `TargetHighlight`, and more
|
|
23
|
+
- ๐ซ **Smooth Animations** - Powered by Framer Motion with zero configuration
|
|
24
|
+
- ๐ง **State Management** - Lightweight Zustand store with full TypeScript support
|
|
25
|
+
- ๐ **Extensible Handlers** - Register custom action handlers for any UI interaction
|
|
26
|
+
- ๐ฆ **Tree-Shakeable** - Only bundle what you use
|
|
27
|
+
- ๐ณ **Dual ESM/CJS** - Works with all modern bundlers and legacy setups
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## ๐ฆ Installation
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
# npm
|
|
35
|
+
npm install @osiloke/chalo
|
|
36
|
+
|
|
37
|
+
# yarn
|
|
38
|
+
yarn add @osiloke/chalo
|
|
39
|
+
|
|
40
|
+
# pnpm
|
|
41
|
+
pnpm add @osiloke/chalo
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Peer Dependencies
|
|
45
|
+
|
|
46
|
+
Chalo requires the following packages (must be installed in your project):
|
|
47
|
+
|
|
48
|
+
```json
|
|
49
|
+
{
|
|
50
|
+
"react": ">=18.0.0",
|
|
51
|
+
"react-dom": ">=18.0.0",
|
|
52
|
+
"zustand": ">=5.0.0",
|
|
53
|
+
"framer-motion": ">=12.0.0"
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## ๐ Quick Start
|
|
60
|
+
|
|
61
|
+
### 1. Basic Setup
|
|
62
|
+
|
|
63
|
+
```tsx
|
|
64
|
+
import { useChalo, SmartDrawer, Mission } from 'chalo';
|
|
65
|
+
|
|
66
|
+
function App() {
|
|
67
|
+
const {
|
|
68
|
+
activeMissionId,
|
|
69
|
+
currentStepId,
|
|
70
|
+
nextStep,
|
|
71
|
+
prevStep,
|
|
72
|
+
completeMission
|
|
73
|
+
} = useChalo();
|
|
74
|
+
|
|
75
|
+
return (
|
|
76
|
+
<div>
|
|
77
|
+
{/* Your app content */}
|
|
78
|
+
<SmartDrawer />
|
|
79
|
+
</div>
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### 2. Define a Mission
|
|
85
|
+
|
|
86
|
+
```tsx
|
|
87
|
+
import { Mission, Step, Bubble } from 'chalo';
|
|
88
|
+
|
|
89
|
+
const onboardingMission: Mission = {
|
|
90
|
+
id: 'app-onboarding',
|
|
91
|
+
title: 'Welcome to the App! ๐',
|
|
92
|
+
description: 'Let us walk you through the main features.',
|
|
93
|
+
steps: [
|
|
94
|
+
{
|
|
95
|
+
id: 'welcome',
|
|
96
|
+
title: 'Getting Started',
|
|
97
|
+
content: 'This is the dashboard. Here you can manage your projects.',
|
|
98
|
+
targetElement: '#dashboard',
|
|
99
|
+
bubbles: [
|
|
100
|
+
{
|
|
101
|
+
id: 'continue-btn',
|
|
102
|
+
type: 'action-group',
|
|
103
|
+
actions: [
|
|
104
|
+
{ label: 'Next โ', type: 'next' }
|
|
105
|
+
]
|
|
106
|
+
}
|
|
107
|
+
]
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
id: 'create-project',
|
|
111
|
+
title: 'Create Your First Project',
|
|
112
|
+
content: 'Click the button below to create a new project.',
|
|
113
|
+
targetElement: '#create-btn',
|
|
114
|
+
waitFor: {
|
|
115
|
+
type: 'field_value',
|
|
116
|
+
field: 'projectCreated',
|
|
117
|
+
value: true
|
|
118
|
+
},
|
|
119
|
+
actionSequence: [
|
|
120
|
+
{
|
|
121
|
+
id: 'click-create',
|
|
122
|
+
type: 'click',
|
|
123
|
+
config: { field: 'create-btn' }
|
|
124
|
+
}
|
|
125
|
+
]
|
|
126
|
+
}
|
|
127
|
+
],
|
|
128
|
+
allowCompletion: true
|
|
129
|
+
};
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### 3. Register and Start
|
|
133
|
+
|
|
134
|
+
```tsx
|
|
135
|
+
import { useChalo } from 'chalo';
|
|
136
|
+
import { useEffect } from 'react';
|
|
137
|
+
|
|
138
|
+
function App() {
|
|
139
|
+
const { registerMission, startMission } = useChalo();
|
|
140
|
+
|
|
141
|
+
useEffect(() => {
|
|
142
|
+
registerMission(onboardingMission);
|
|
143
|
+
startMission('app-onboarding');
|
|
144
|
+
}, [registerMission, startMission]);
|
|
145
|
+
|
|
146
|
+
return <YourApp />;
|
|
147
|
+
}
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## ๐ API Reference
|
|
153
|
+
|
|
154
|
+
### Hooks
|
|
155
|
+
|
|
156
|
+
#### `useChalo(options?)`
|
|
157
|
+
|
|
158
|
+
Main hook for accessing chalo state and actions.
|
|
159
|
+
|
|
160
|
+
**Parameters:**
|
|
161
|
+
```typescript
|
|
162
|
+
interface UseChaloOptions {
|
|
163
|
+
debug?: boolean; // Enable debug logging (default: false)
|
|
164
|
+
}
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
**Returns:**
|
|
168
|
+
```typescript
|
|
169
|
+
interface ChaloActions {
|
|
170
|
+
// Mission Management
|
|
171
|
+
registerMission: (mission: Mission) => void;
|
|
172
|
+
startMission: (missionId: string) => void;
|
|
173
|
+
pauseMission: () => void;
|
|
174
|
+
resumeMission: () => void;
|
|
175
|
+
completeMission: () => void;
|
|
176
|
+
resetMission: () => void;
|
|
177
|
+
|
|
178
|
+
// Navigation
|
|
179
|
+
nextStep: () => void;
|
|
180
|
+
prevStep: () => void;
|
|
181
|
+
goToStep: (stepId: string) => void;
|
|
182
|
+
|
|
183
|
+
// Field Management
|
|
184
|
+
updateField: (name: string, value: any, status?: FieldStatus) => void;
|
|
185
|
+
|
|
186
|
+
// Action Engine
|
|
187
|
+
registerActionHandler: (type: string, handler: ActionHandler) => void;
|
|
188
|
+
executeAction: (action: Action) => Promise<ActionResult>;
|
|
189
|
+
executeActionSequence: (actions: Action[]) => Promise<Record<string, ActionResult>>;
|
|
190
|
+
cancelExecution: () => void;
|
|
191
|
+
|
|
192
|
+
// Tours & History
|
|
193
|
+
dismissAllTours: () => void;
|
|
194
|
+
recordTourEntry: (missionId: string, stepId: string, completed: boolean) => void;
|
|
195
|
+
|
|
196
|
+
// State
|
|
197
|
+
reset: () => void;
|
|
198
|
+
setError: (error: string | null) => void;
|
|
199
|
+
}
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
**Example:**
|
|
203
|
+
```tsx
|
|
204
|
+
const {
|
|
205
|
+
activeMissionId,
|
|
206
|
+
currentStepId,
|
|
207
|
+
missionProgress,
|
|
208
|
+
fieldValues,
|
|
209
|
+
nextStep,
|
|
210
|
+
prevStep,
|
|
211
|
+
updateField
|
|
212
|
+
} = useChalo({ debug: true });
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
### Components
|
|
218
|
+
|
|
219
|
+
#### `<SmartDrawer />`
|
|
220
|
+
|
|
221
|
+
A context-aware drawer component for displaying mission steps.
|
|
222
|
+
|
|
223
|
+
```tsx
|
|
224
|
+
<SmartDrawer
|
|
225
|
+
position="right"
|
|
226
|
+
width="400px"
|
|
227
|
+
renderBubble={(bubble) => <CustomBubble {...bubble} />}
|
|
228
|
+
/>
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
**Props:**
|
|
232
|
+
|
|
233
|
+
| Prop | Type | Default | Description |
|
|
234
|
+
|------|------|---------|-------------|
|
|
235
|
+
| `position` | `'left' \| 'right' \| 'top' \| 'bottom'` | `'right'` | Drawer position |
|
|
236
|
+
| `width` | `string` | `'360px'` | Drawer width |
|
|
237
|
+
| `renderBubble` | `(bubble: Bubble) => ReactNode` | - | Custom bubble renderer |
|
|
238
|
+
| `onOpen` | `() => void` | - | Open callback |
|
|
239
|
+
| `onClose` | `() => void` | - | Close callback |
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
#### `<TargetHighlight />`
|
|
244
|
+
|
|
245
|
+
Highlights target elements with animated overlays.
|
|
246
|
+
|
|
247
|
+
```tsx
|
|
248
|
+
<TargetHighlight
|
|
249
|
+
selector="#my-element"
|
|
250
|
+
label="Click here to continue"
|
|
251
|
+
pulse
|
|
252
|
+
/>
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
**Props:**
|
|
256
|
+
|
|
257
|
+
| Prop | Type | Default | Description |
|
|
258
|
+
|------|------|---------|-------------|
|
|
259
|
+
| `selector` | `string` | **required** | CSS selector for target |
|
|
260
|
+
| `label` | `string` | - | Tooltip text |
|
|
261
|
+
| `pulse` | `boolean` | `false` | Enable pulse animation |
|
|
262
|
+
| `onClick` | `() => void` | - | Click handler |
|
|
263
|
+
| `style` | `CSSProperties` | - | Custom styles |
|
|
264
|
+
|
|
265
|
+
---
|
|
266
|
+
|
|
267
|
+
### Core Types
|
|
268
|
+
|
|
269
|
+
#### `Mission`
|
|
270
|
+
|
|
271
|
+
Defines a complete guided experience.
|
|
272
|
+
|
|
273
|
+
```typescript
|
|
274
|
+
interface Mission {
|
|
275
|
+
id: string;
|
|
276
|
+
title: string;
|
|
277
|
+
description?: string;
|
|
278
|
+
steps: Step[];
|
|
279
|
+
metadata?: Record<string, unknown>;
|
|
280
|
+
onComplete?: () => void;
|
|
281
|
+
allowCompletion?: boolean;
|
|
282
|
+
actions?: Action[];
|
|
283
|
+
}
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
#### `Step`
|
|
287
|
+
|
|
288
|
+
A single step within a mission.
|
|
289
|
+
|
|
290
|
+
```typescript
|
|
291
|
+
interface Step {
|
|
292
|
+
id: string;
|
|
293
|
+
title: string;
|
|
294
|
+
content: string | ReactNode;
|
|
295
|
+
bubbles?: Bubble[];
|
|
296
|
+
targetField?: string;
|
|
297
|
+
targetElement?: string;
|
|
298
|
+
successCondition?: SuccessCondition;
|
|
299
|
+
waitFor?: SuccessCondition;
|
|
300
|
+
condition?: SuccessCondition;
|
|
301
|
+
navigationRules?: {
|
|
302
|
+
canGoBack?: boolean;
|
|
303
|
+
canSkip?: boolean;
|
|
304
|
+
};
|
|
305
|
+
actions?: StepAction[];
|
|
306
|
+
actionSequence?: Action[];
|
|
307
|
+
}
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
#### `Action`
|
|
311
|
+
|
|
312
|
+
Atomic UI interaction for the execution engine.
|
|
313
|
+
|
|
314
|
+
```typescript
|
|
315
|
+
interface Action {
|
|
316
|
+
id: string;
|
|
317
|
+
type: 'click' | 'scroll' | 'fill_field' | 'api_call' | 'wait' | 'conditional' | 'navigate' | 'custom';
|
|
318
|
+
config: ActionConfig;
|
|
319
|
+
label?: string;
|
|
320
|
+
retry?: RetryConfig;
|
|
321
|
+
rollback?: RollbackConfig;
|
|
322
|
+
dependsOn?: string[];
|
|
323
|
+
condition?: SuccessCondition;
|
|
324
|
+
}
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
> ๐ก **See the [TypeScript Definitions](packages/chalo/src/types.ts) for complete type documentation.**
|
|
328
|
+
|
|
329
|
+
---
|
|
330
|
+
|
|
331
|
+
## ๐ง Advanced Usage
|
|
332
|
+
|
|
333
|
+
### Custom Action Handlers
|
|
334
|
+
|
|
335
|
+
Extend the engine with your own action types:
|
|
336
|
+
|
|
337
|
+
```tsx
|
|
338
|
+
import { useChalo, ActionHandler } from 'chalo';
|
|
339
|
+
|
|
340
|
+
function App() {
|
|
341
|
+
const { registerActionHandler } = useChalo();
|
|
342
|
+
|
|
343
|
+
useEffect(() => {
|
|
344
|
+
const showToast: ActionHandler = async (config, context) => {
|
|
345
|
+
const { message, duration } = config;
|
|
346
|
+
toast.show(message, { duration });
|
|
347
|
+
return { success: true };
|
|
348
|
+
};
|
|
349
|
+
|
|
350
|
+
registerActionHandler('show_toast', showToast);
|
|
351
|
+
}, [registerActionHandler]);
|
|
352
|
+
}
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
### Conditional Steps
|
|
356
|
+
|
|
357
|
+
Make steps dynamic based on user state:
|
|
358
|
+
|
|
359
|
+
```tsx
|
|
360
|
+
{
|
|
361
|
+
id: 'advanced-feature',
|
|
362
|
+
title: 'Advanced Features',
|
|
363
|
+
content: 'Check out these powerful tools!',
|
|
364
|
+
condition: {
|
|
365
|
+
type: 'custom',
|
|
366
|
+
predicate: (value, formState) => formState.isPremiumUser
|
|
367
|
+
},
|
|
368
|
+
// This step only runs if the user is premium
|
|
369
|
+
}
|
|
370
|
+
```
|
|
371
|
+
|
|
372
|
+
### Tour History & Resumption
|
|
373
|
+
|
|
374
|
+
Chalo automatically tracks tour progress:
|
|
375
|
+
|
|
376
|
+
```tsx
|
|
377
|
+
const { tourHistory, recordTourEntry } = useChalo();
|
|
378
|
+
|
|
379
|
+
// Check if user completed a tour
|
|
380
|
+
if (tourHistory['onboarding']?.completed) {
|
|
381
|
+
// Skip onboarding next time
|
|
382
|
+
}
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
---
|
|
386
|
+
|
|
387
|
+
## ๐ Package Structure
|
|
388
|
+
|
|
389
|
+
```
|
|
390
|
+
packages/chalo/
|
|
391
|
+
โโโ src/
|
|
392
|
+
โ โโโ components/ # UI components
|
|
393
|
+
โ โ โโโ SmartDrawer.tsx
|
|
394
|
+
โ โ โโโ TargetHighlight.tsx
|
|
395
|
+
โ โโโ engine/ # Action execution engines
|
|
396
|
+
โ โ โโโ action-engine.ts
|
|
397
|
+
โ โ โโโ index.ts
|
|
398
|
+
โ โโโ hooks/ # React hooks
|
|
399
|
+
โ โ โโโ use-chalo.ts
|
|
400
|
+
โ โโโ store.ts # Zustand store
|
|
401
|
+
โ โโโ types.ts # TypeScript definitions
|
|
402
|
+
โ โโโ index.ts # Public API
|
|
403
|
+
โโโ package.json
|
|
404
|
+
โโโ tsconfig.json
|
|
405
|
+
โโโ vite.config.ts
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
---
|
|
409
|
+
|
|
410
|
+
## ๐งช Development
|
|
411
|
+
|
|
412
|
+
This package is part of a **pnpm monorepo**:
|
|
413
|
+
|
|
414
|
+
```bash
|
|
415
|
+
# Install dependencies
|
|
416
|
+
pnpm install
|
|
417
|
+
|
|
418
|
+
# Build the library
|
|
419
|
+
pnpm run build:chalo
|
|
420
|
+
|
|
421
|
+
# Run tests
|
|
422
|
+
pnpm test
|
|
423
|
+
|
|
424
|
+
# Run tests with UI
|
|
425
|
+
pnpm run test:ui
|
|
426
|
+
|
|
427
|
+
# Lint code
|
|
428
|
+
pnpm run lint
|
|
429
|
+
|
|
430
|
+
# Format code
|
|
431
|
+
pnpm run format:fix
|
|
432
|
+
|
|
433
|
+
# Verify build
|
|
434
|
+
./scripts/verify-build.sh
|
|
435
|
+
```
|
|
436
|
+
|
|
437
|
+
---
|
|
438
|
+
|
|
439
|
+
## ๐ข Publishing
|
|
440
|
+
|
|
441
|
+
Releases are fully automated via [semantic-release](https://github.com/semantic-release/semantic-release). Every push to `main` is analyzed for conventional commits, and if there are release-worthy changes, a new version is automatically:
|
|
442
|
+
|
|
443
|
+
1. **Version-bumped** (semver based on commit type)
|
|
444
|
+
2. **Changelog-updated**
|
|
445
|
+
3. **Published to npm** with provenance
|
|
446
|
+
4. **Released on GitHub** with auto-generated notes
|
|
447
|
+
|
|
448
|
+
### Conventional Commits
|
|
449
|
+
|
|
450
|
+
Use these commit prefixes to trigger releases:
|
|
451
|
+
|
|
452
|
+
| Prefix | Example | Effect |
|
|
453
|
+
|--------|---------|--------|
|
|
454
|
+
| `feat:` | `feat: add TargetHighlight component` | Bumps **minor** version |
|
|
455
|
+
| `fix:` | `fix: resolve drawer positioning bug` | Bumps **patch** version |
|
|
456
|
+
| `BREAKING CHANGE:` in body | `feat: redesign API\n\nBREAKING CHANGE: ...` | Bumps **major** version |
|
|
457
|
+
| `docs:`, `chore:`, `ci:` | `docs: update README` | No release |
|
|
458
|
+
|
|
459
|
+
### Manual Release (Local)
|
|
460
|
+
|
|
461
|
+
```bash
|
|
462
|
+
npx semantic-release --dry-run
|
|
463
|
+
```
|
|
464
|
+
|
|
465
|
+
> ๐ See [GitHub Actions Workflow](.github/workflows/release.yml) for details.
|
|
466
|
+
|
|
467
|
+
---
|
|
468
|
+
|
|
469
|
+
## ๐ค Contributing
|
|
470
|
+
|
|
471
|
+
Contributions are welcome! Please follow these steps:
|
|
472
|
+
|
|
473
|
+
1. **Fork** the repository
|
|
474
|
+
2. **Create a branch** (`git checkout -b feature/amazing-feature`)
|
|
475
|
+
3. **Make your changes**
|
|
476
|
+
4. **Run tests** (`pnpm test`)
|
|
477
|
+
5. **Lint & format** (`pnpm run lint && pnpm run format:fix`)
|
|
478
|
+
6. **Commit** using [Conventional Commits](https://www.conventionalcommits.org/)
|
|
479
|
+
7. **Push** and **open a PR**
|
|
480
|
+
|
|
481
|
+
### Development Guidelines
|
|
482
|
+
|
|
483
|
+
- Use TypeScript strictly (no `any` unless absolutely necessary)
|
|
484
|
+
- Follow existing code style (enforced by ESLint + Prettier)
|
|
485
|
+
- Write tests for new features
|
|
486
|
+
- Update documentation for API changes
|
|
487
|
+
|
|
488
|
+
---
|
|
489
|
+
|
|
490
|
+
## ๐ Versioning
|
|
491
|
+
|
|
492
|
+
This project follows [Semantic Versioning](https://semver.org/):
|
|
493
|
+
|
|
494
|
+
- **MAJOR** - Breaking changes
|
|
495
|
+
- **MINOR** - New features (backwards compatible)
|
|
496
|
+
- **PATCH** - Bug fixes
|
|
497
|
+
|
|
498
|
+
See [CHANGELOG.md](CHANGELOG.md) for release history.
|
|
499
|
+
|
|
500
|
+
---
|
|
501
|
+
|
|
502
|
+
## ๐ Known Issues & Limitations
|
|
503
|
+
|
|
504
|
+
| Issue | Workaround | Status |
|
|
505
|
+
|-------|-----------|--------|
|
|
506
|
+
| SSR not yet supported | Use dynamic imports with `ssr: false` | ๐ง Planned |
|
|
507
|
+
| React 17 compatibility | Use React 18+ | โ ๏ธ Won't Fix |
|
|
508
|
+
|
|
509
|
+
> Found a bug? [Open an issue](https://github.com/osiloke/chalo/issues)!
|
|
510
|
+
|
|
511
|
+
---
|
|
512
|
+
|
|
513
|
+
## ๐ License
|
|
514
|
+
|
|
515
|
+
[MIT](LICENSE) ยฉ Osiloke Harold Emoekpere
|
|
516
|
+
|
|
517
|
+
---
|
|
518
|
+
|
|
519
|
+
## ๐ Acknowledgments
|
|
520
|
+
|
|
521
|
+
Built with:
|
|
522
|
+
- [React](https://react.dev/) - UI library
|
|
523
|
+
- [Zustand](https://zustand-demo.pmnd.rs/) - State management
|
|
524
|
+
- [Framer Motion](https://www.framer.com/motion/) - Animations
|
|
525
|
+
- [Vite](https://vitejs.dev/) - Build tool
|
|
526
|
+
- [TypeScript](https://www.typescriptlang.org/) - Type safety
|
|
527
|
+
|
|
528
|
+
---
|
|
529
|
+
|
|
530
|
+
<div align="center">
|
|
531
|
+
<strong>chalo</strong> โ Making UIs smarter, one step at a time. ๐
|
|
532
|
+
</div>
|
package/dist/chalo.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require(`zustand`),t=require(`react`),n=require(`framer-motion`),r=require(`react/jsx-runtime`);function i(e,t){let n;try{n=e()}catch{return}return{getItem:e=>{let r=e=>e===null?null:JSON.parse(e,t?.reviver),i=n.getItem(e)??null;return i instanceof Promise?i.then(r):r(i)},setItem:(e,r)=>n.setItem(e,JSON.stringify(r,t?.replacer)),removeItem:e=>n.removeItem(e)}}var a=e=>t=>{try{let n=e(t);return n instanceof Promise?n:{then(e){return a(e)(n)},catch(e){return this}}}catch(e){return{then(e){return this},catch(t){return a(t)(e)}}}},o=(e,t)=>(n,r,o)=>{let s={storage:i(()=>window.localStorage),partialize:e=>e,version:0,merge:(e,t)=>({...t,...e}),...t},c=!1,l=0,u=new Set,d=new Set,f=s.storage;if(!f)return e((...e)=>{console.warn(`[zustand persist middleware] Unable to update item '${s.name}', the given storage is currently unavailable.`),n(...e)},r,o);let p=()=>{let e=s.partialize({...r()});return f.setItem(s.name,{state:e,version:s.version})},m=o.setState;o.setState=(e,t)=>(m(e,t),p());let h=e((...e)=>(n(...e),p()),r,o);o.getInitialState=()=>h;let g,_=()=>{if(!f)return;let e=++l;c=!1,u.forEach(e=>e(r()??h));let t=s.onRehydrateStorage?.call(s,r()??h)||void 0;return a(f.getItem.bind(f))(s.name).then(e=>{if(e)if(typeof e.version==`number`&&e.version!==s.version){if(s.migrate){let t=s.migrate(e.state,e.version);return t instanceof Promise?t.then(e=>[!0,e]):[!0,t]}console.error(`State loaded from storage couldn't be migrated since no migrate function was provided`)}else return[!1,e.state];return[!1,void 0]}).then(t=>{if(e!==l)return;let[i,a]=t;if(g=s.merge(a,r()??h),n(g,!0),i)return p()}).then(()=>{e===l&&(t?.(r(),void 0),g=r(),c=!0,d.forEach(e=>e(g)))}).catch(n=>{e===l&&t?.(void 0,n)})};return o.persist={setOptions:e=>{s={...s,...e},e.storage&&(f=e.storage)},clearStorage:()=>{f?.removeItem(s.name)},getOptions:()=>s,rehydrate:()=>_(),hasHydrated:()=>c,onHydrate:e=>(u.add(e),()=>{u.delete(e)}),onFinishHydration:e=>(d.add(e),()=>{d.delete(e)})},s.skipHydration||_(),g||h},s=async e=>{let t=e,n=t.field?`[data-chalo-field="${t.field}"], #chalo-${t.field}`:t.selector;if(!n)throw Error(`Click action requires either "field" or "selector".`);let r=document.querySelector(n);if(!r)throw Error(`Element not found: ${n}`);return r.click(),{clicked:n}},c=async e=>{let{selector:t,behavior:n=`smooth`,field:r}=e,i=r?`[data-chalo-field="${r}"], #chalo-${r}`:t;if(i){let e=document.querySelector(i);if(!e)throw Error(`Element not found: ${i}`);return e.scrollIntoView({behavior:n,block:`center`}),e.style.transition=`outline 0.2s`,e.style.outline=`3px solid rgba(99, 102, 241, 0.6)`,e.style.outlineOffset=`4px`,setTimeout(()=>{e.style.outline=`none`},2e3),{scrolled:i}}else return window.scrollTo({top:document.body.scrollHeight,behavior:n}),{scrolled:`bottom`}},l=async(e,t)=>{let{field:n,value:r}=e;t.variables[n]=r;let i=document.querySelector(`[data-chalo-field="${n}"], #chalo-${n}, [name="${n}"], #${n}`);return i&&((Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,`value`)?.set||Object.getOwnPropertyDescriptor(window.HTMLSelectElement.prototype,`value`)?.set)?.call(i,r),i.dispatchEvent(new Event(`input`,{bubbles:!0})),i.dispatchEvent(new Event(`change`,{bubbles:!0}))),{field:n,value:r}},u=async e=>{let{url:t,method:n=`GET`,headers:r,body:i}=e,a=await fetch(t,{method:n,headers:{"Content-Type":`application/json`,...r},body:i?JSON.stringify(i):void 0});if(!a.ok)throw Error(`API call failed: ${a.status} ${a.statusText}`);let o=await a.json();return{url:t,status:a.status,data:o}},d=async e=>{let{durationMs:t}=e;return await new Promise(e=>setTimeout(e,t)),{waited:t}},f=async(e,t)=>{let{condition:n}=e;return{conditionMet:m(n,t)}},p=async e=>{let{path:t}=e;return window.history.pushState({},``,t),window.dispatchEvent(new PopStateEvent(`popstate`)),{navigated:t}};function m(e,t){if(!e)return!0;switch(e.type){case`field_value`:return e.field?t.variables[e.field]==e.value:!1;case`field_touched`:return e.field?t.variables[`__touched_${e.field}`]===!0:!1;case`custom`:return e.predicate?e.predicate(t.variables,t.variables):!1;default:return!0}}var h={click:s,scroll:c,fill_field:l,api_call:u,wait:d,conditional:f,navigate:p,custom:async(e,t)=>{let{handlerId:n}=e;throw Error(`No handler registered for custom action: ${n}`)}};async function g(e,t){let n=t?.maxAttempts??1,r=t?.delayMs??1e3,i=t?.backoff??`fixed`,a=null;for(let t=1;t<=n;t++)try{return{result:await e(),attempts:t}}catch(e){if(a=e,t<n){let e=i===`exponential`?r*2**(t-1):r;await new Promise(t=>setTimeout(t,e))}}throw a}function _(e){let t=new Map(e.map(e=>[e.id,e])),n=new Set,r=[];function i(e){if(n.has(e))return;n.add(e);let a=t.get(e);a&&(a.dependsOn?.forEach(e=>i(e)),r.push(a))}return e.forEach(e=>i(e.id)),r}var v=new class{handlers=new Map(Object.entries(h));abortController=null;registerHandler(e,t){this.handlers.set(e,t)}getHandler(e){return this.handlers.get(e)}async executeAction(e,t){if(e.condition&&!m(e.condition,t))return{id:e.id,status:`skipped`,attempts:0};if(e.dependsOn?.length){let n=e.dependsOn.filter(e=>t.results[e]?.status===`failed`||t.results[e]?.status===`cancelled`);if(n.length>0)return{id:e.id,status:`skipped`,attempts:0,error:`Dependencies failed: ${n.join(`, `)}`}}let n=this.handlers.get(e.type);if(!n)return{id:e.id,status:`failed`,attempts:0,error:`No handler for action type: ${e.type}`};t.currentActionId=e.id;let r={id:e.id,status:`running`,attempts:0,startedAt:Date.now()};try{let{result:i,attempts:a}=await g(()=>n(e.config,t),e.retry);r.status=`success`,r.data=i,r.attempts=a,r.completedAt=Date.now()}catch(t){r.status=`failed`,r.error=t.message,r.attempts=e.retry?.maxAttempts??1,r.completedAt=Date.now()}return t.results[e.id]=r,t.currentActionId=null,r}async executeSequence(e,t,n){this.abortController=new AbortController;let r=_(e);for(let e of r){if(this.abortController.signal.aborted){r.filter(e=>!t.results[e.id]).forEach(e=>{t.results[e.id]={id:e.id,status:`cancelled`,attempts:0}});break}await this.executeAction(e,t),n?.({...t.results})}return this.abortController=null,t.results}cancel(){this.abortController?.abort()}},y={activeMissionId:null,currentStepId:null,missionProgress:0,fieldValues:{},fieldStates:{},missions:{},interactionHistory:[],tourHistory:{},completedMissions:[],executionContext:{results:{},variables:{},isRunning:!1,currentActionId:null},isPaused:!1,isCompleted:!1,error:null},b=(0,e.create)()(o((e,t)=>({...y,registerMission:t=>{e(e=>({missions:{...e.missions,[t.id]:t}}))},startMission:n=>{let{missions:r}=t(),i=r[n];if(!i){console.error(`Mission "${n}" not found in registry.`),e({error:`Mission "${n}" not found in registry.`});return}e({activeMissionId:i.id,currentStepId:i.steps[0]?.id||null,missionProgress:0,fieldValues:{},fieldStates:{},interactionHistory:[],isPaused:!1,isCompleted:!1,error:null})},pauseMission:()=>e({isPaused:!0}),resumeMission:()=>e({isPaused:!1}),completeMission:()=>e({isCompleted:!0,activeMissionId:null,currentStepId:null}),goToStep:n=>{let{activeMissionId:r}=t();r&&e({currentStepId:n})},nextStep:()=>{},prevStep:()=>{},updateField:(n,r,i=`idle`)=>{let{fieldValues:a,fieldStates:o}=t();a[n]===r&&o[n]===i||e(e=>({fieldValues:{...e.fieldValues,[n]:r},fieldStates:{...e.fieldStates,[n]:i}}))},addInteraction:(t,n)=>{e(e=>({interactionHistory:[...e.interactionHistory.filter(e=>e.stepId!==t),{stepId:t,actionText:n,timestamp:Date.now()}]}))},recordTourEntry:(t,n,r)=>{e(e=>({tourHistory:{...e.tourHistory,[t]:{missionId:t,lastStepId:n,completed:r,lastAccessed:Date.now()}}}))},resetMission:()=>{e({activeMissionId:null,currentStepId:null,missionProgress:0,fieldValues:{},fieldStates:{},interactionHistory:[],executionContext:{results:{},variables:{},isRunning:!1,currentActionId:null},isPaused:!1,isCompleted:!1,error:null})},dismissAllTours:()=>{e(e=>({tourHistory:Object.fromEntries(Object.entries(e.tourHistory).map(([e,t])=>[e,{...t,completed:!0}]))}))},markMissionCompleted:n=>{let{missions:r}=t();if(!r[n]?.allowCompletion){console.warn(`Mission "${n}" does not allow completion. Set allowCompletion: true on the mission.`);return}e(e=>({completedMissions:e.completedMissions.includes(n)?e.completedMissions:[...e.completedMissions,n]}))},registerActionHandler:(e,t)=>{v.registerHandler(e,t)},executeAction:async n=>{let{executionContext:r}=t();e(e=>({executionContext:{...e.executionContext,isRunning:!0}}));let i=await v.executeAction(n,r);return e(e=>({executionContext:{...e.executionContext,...r,isRunning:!1}})),i},executeActionSequence:async(n,r)=>{let{executionContext:i,addInteraction:a}=t();i.results={},i.variables={},i.isRunning=!0,e(e=>({executionContext:{...e.executionContext,...i}}));let o=await v.executeSequence(n,i,t=>{if(e(e=>({executionContext:{...e.executionContext,results:t,isRunning:!0}})),r){let e=Object.values(t).filter(e=>e.status===`success`).length;a(r,`Action progress: ${e}/${n.length} completed`)}});return e(e=>({executionContext:{...e.executionContext,results:o,isRunning:!1,currentActionId:null}})),o},cancelExecution:()=>{v.cancel(),e(e=>({executionContext:{...e.executionContext,isRunning:!1,currentActionId:null}}))},reset:()=>e(y),setError:t=>e({error:t})}),{name:`chalo-storage`,storage:i(()=>localStorage),partialize:e=>({activeMissionId:e.activeMissionId,currentStepId:e.currentStepId,fieldValues:e.fieldValues,interactionHistory:e.interactionHistory,tourHistory:e.tourHistory,completedMissions:e.completedMissions,isPaused:e.isPaused,isCompleted:e.isCompleted})}));function ee(e){return e?(e,t)=>{console.debug(`%c[use-chalo] %c${e}`,`color: #8b5cf6; font-weight: bold;`,`color: #a78bfa;`,t===void 0?``:t)}:()=>{}}function x(e={}){let{form:n,onMissionComplete:r,onStepChange:i,debug:a=!1}=e,o=(0,t.useMemo)(()=>ee(a),[a]),s=b(e=>e.activeMissionId),c=b(e=>e.currentStepId),l=b(e=>e.isCompleted),u=b(e=>e.isPaused),d=b(e=>e.missions),f=b(e=>e.fieldValues),p=b(e=>e.fieldStates),m=b(e=>e.interactionHistory),h=b(e=>e.updateField),g=(0,t.useCallback)((e,t,n)=>{o(`updateField`,{name:e,status:n}),h(e,t,n)},[h,o]),_=b(e=>e.startMission),v=b(e=>e.pauseMission),y=(0,t.useCallback)(()=>{o(`pauseMission`),v()},[v,o]),x=b(e=>e.resumeMission),S=(0,t.useCallback)(()=>{o(`resumeMission`),x()},[x,o]),C=b(e=>e.completeMission),w=(0,t.useCallback)(()=>{o(`completeMission`),C()},[C,o]),T=b(e=>e.goToStep),te=(0,t.useCallback)(e=>{o(`goToStep`,{stepId:e}),T(e)},[T,o]),E=b(e=>e.reset),ne=(0,t.useCallback)(()=>{o(`reset`),E()},[E,o]),D=b(e=>e.resetMission),O=(0,t.useCallback)(()=>{o(`resetMission`),D()},[D,o]),k=b(e=>e.dismissAllTours),A=(0,t.useCallback)(()=>{o(`dismissAllTours`),k()},[k,o]),re=b(e=>e.markMissionCompleted),j=(0,t.useCallback)(e=>{o(`markMissionCompleted`,{missionId:e}),re(e)},[re,o]),M=b(e=>e.registerActionHandler),ie=(0,t.useCallback)((e,t)=>{o(`registerActionHandler`,{type:e}),M(e,t)},[M,o]),ae=b(e=>e.executeAction),oe=(0,t.useCallback)(e=>(o(`executeAction`,{type:e.type}),ae(e)),[ae,o]),N=b(e=>e.executeActionSequence),P=(0,t.useCallback)((e,t)=>(o(`executeActionSequence`,{stepId:t,count:e.length}),N(e,t)),[N,o]),F=b(e=>e.cancelExecution),I=(0,t.useCallback)(()=>{o(`cancelExecution`),F()},[F,o]),se=b(e=>e.addInteraction),L=(0,t.useCallback)((e,t)=>{o(`addInteraction`,{stepId:e,actionText:t}),se(e,t)},[se,o]),ce=b(e=>e.registerMission),le=(0,t.useCallback)(e=>{o(`registerMission`,{missionId:e.id}),ce(e)},[ce,o]),R=b(e=>e.recordTourEntry),ue=(0,t.useCallback)((e,t,n)=>{o(`recordTourEntry`,{missionId:e,stepId:t,completed:n}),R(e,t,n)},[R,o]),z=b(e=>e.completedMissions),de=b(e=>e.executionContext),fe=b(e=>e.tourHistory),pe=(0,t.useCallback)(e=>{o(`startMission`,{missionId:e}),R(e,``,!1),_(e)},[_,R,o]),me=(0,t.useMemo)(()=>n?.formState.errors||{},[n?.formState.errors]),he=(0,t.useCallback)(e=>d[e]||void 0,[d]),B=(0,t.useMemo)(()=>s&&he(s)||null,[s,he]),V=(0,t.useMemo)(()=>!B||!c?null:B.steps.find(e=>e.id===c)||null,[B,c]),ge=(0,t.useRef)({}),_e=(0,t.useRef)(new Set);(0,t.useEffect)(()=>{if(!n||!s)return;let e=n.watch((e,{name:t})=>{if(t){let n=e[t];_e.current.add(t),g(t,n)}else Object.entries(e).forEach(([e,t])=>{_e.current.add(e),g(e,t)})});return()=>e.unsubscribe()},[n,s,g]),(0,t.useEffect)(()=>{!n||!s||Object.entries(f).forEach(([e,t])=>{if(_e.current.has(e)){_e.current.delete(e),ge.current[e]=t;return}if(ge.current[e]!==t){try{n.setValue(e,t,{shouldValidate:!0,shouldDirty:!0,shouldTouch:!0})}catch{}ge.current[e]=t}})},[f,n,s]),(0,t.useEffect)(()=>{if(V?.targetField&&n){let e=f[V.targetField];if(e!==void 0)try{n.setValue(V.targetField,e)}catch{}setTimeout(()=>{n.setFocus(V.targetField)},100)}if(V?.waitFor?.type===`custom`&&V.targetElement){let e=document.querySelector(V.targetElement);e&&e.removeAttribute(`data-clicked`)}i&&c&&i(c)},[c,V,n,i,f]);let ve=(0,t.useRef)(new Set);(0,t.useEffect)(()=>{ve.current.clear()},[s]),(0,t.useEffect)(()=>{l&&s&&r&&r(s)},[l,s,r]);let ye=(0,t.useMemo)(()=>{if(!B||!c)return 0;let e=B.steps.findIndex(e=>e.id===c);return e===-1?0:Math.round((e+1)/B.steps.length*100)},[B,c]),be=(0,t.useCallback)(e=>{if(!e)return!0;switch(e.type){case`field_value`:return e.field?f[e.field]==e.value:!1;case`field_touched`:return e.field?(p[e.field]||`idle`)!==`idle`:!1;case`custom`:return e.predicate?e.predicate(f,n?.getValues()):!1;default:return!0}},[f,p,n]),xe=(0,t.useCallback)(()=>{if(!B||!c)return;let e=B.steps,t=e.findIndex(e=>e.id===c);t<e.length-1?(o(`nextStep`,{missionId:B.id,stepId:e[t+1].id}),R(B.id,e[t+1].id,!1),T(e[t+1].id)):(o(`nextStep`,{missionId:B.id,completing:!0}),R(B.id,c,!0),C())},[B,c,o,R,T,C]),Se=(0,t.useCallback)(()=>{if(!B||!c)return;let e=B.steps,t=e.findIndex(e=>e.id===c);t>0&&(o(`prevStep`,{stepId:e[t-1].id}),T(e[t-1].id))},[B,c,o,T]);(0,t.useEffect)(()=>{!V?.actionSequence||!c||ve.current.has(c)||V.condition&&!be(V.condition)||(ve.current.add(c),P(V.actionSequence,c))},[c,V?.actionSequence,V?.condition,P,be]);let Ce=(0,t.useRef)(new Set),H=(0,t.useRef)(null),we=(0,t.useRef)(xe);(0,t.useEffect)(()=>{we.current=xe},[xe]),(0,t.useEffect)(()=>{if(H.current&&=(clearTimeout(H.current),null),!V?.waitFor){Ce.current.clear();return}if(Ce.current.has(V.id))return;let e=setInterval(()=>{be(V.waitFor)&&(Ce.current.add(V.id),clearInterval(e),H.current=setTimeout(()=>{we.current(),H.current=null},600))},300);return()=>{clearInterval(e),H.current&&=(clearTimeout(H.current),null)}},[V?.id,V?.waitFor,be]);let Te=(0,t.useCallback)((e,t)=>{if(o(`fillField`,{name:e}),_e.current.add(e),h(e,t,`valid`),n)try{n.setValue(e,t,{shouldValidate:!0,shouldDirty:!0,shouldTouch:!0})}catch{}},[n,o]);return{activeMissionId:s,currentStepId:c,isCompleted:l,isPaused:u,missions:d,fieldValues:f,fieldStates:p,interactionHistory:m,startMission:pe,pauseMission:y,resumeMission:S,completeMission:w,goToStep:te,reset:ne,resetMission:O,dismissAllTours:A,markMissionCompleted:j,completedMissions:z,executionContext:de,registerActionHandler:ie,executeAction:oe,executeActionSequence:P,cancelExecution:I,addInteraction:L,registerMission:le,activeMission:B,currentStep:V,missionProgress:ye,fieldErrors:me,nextStep:xe,prevStep:Se,registerField:(0,t.useCallback)((e,t)=>{if(o(`registerField`,{name:e}),f[e]!==void 0&&n)try{n.setValue(e,f[e])}catch{}let r=`chalo-${String(e)}`;if(!n)return{id:r,name:e,"data-chalo-field":String(e),onChange:t=>h(e,t.target.value),onFocus:()=>h(e,f[e],`focused`),onBlur:()=>h(e,f[e],`idle`)};let i=n.register(e,t);return{...i,id:r,"data-chalo-field":String(e),onChange:async t=>{await i.onChange(t),h(e,t.target.value)},onBlur:async t=>{await i.onBlur(t),h(e,f[e],`idle`)}}},[n,h,f,o]),registerElement:(0,t.useCallback)(e=>t=>{t&&(t.setAttribute(`data-chalo-field`,e),t.id=t.id||`chalo-${e}`)},[]),fillField:Te,recordTourEntry:ue,tourHistory:fe,evaluateCondition:be}}var S=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),C=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),w=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),T=e=>{let t=w(e);return t.charAt(0).toUpperCase()+t.slice(1)},te={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`},E=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},ne=(0,t.createContext)({}),D=()=>(0,t.useContext)(ne),O=(0,t.forwardRef)(({color:e,size:n,strokeWidth:r,absoluteStrokeWidth:i,className:a=``,children:o,iconNode:s,...c},l)=>{let{size:u=24,strokeWidth:d=2,absoluteStrokeWidth:f=!1,color:p=`currentColor`,className:m=``}=D()??{},h=i??f?Number(r??d)*24/Number(n??u):r??d;return(0,t.createElement)(`svg`,{ref:l,...te,width:n??u??te.width,height:n??u??te.height,stroke:e??p,strokeWidth:h,className:S(`lucide`,m,a),...!o&&!E(c)&&{"aria-hidden":`true`},...c},[...s.map(([e,n])=>(0,t.createElement)(e,n)),...Array.isArray(o)?o:[o]])}),k=(e,n)=>{let r=(0,t.forwardRef)(({className:r,...i},a)=>(0,t.createElement)(O,{ref:a,iconNode:n,className:S(`lucide-${C(T(e))}`,`lucide-${e}`,r),...i}));return r.displayName=T(e),r},A=k(`bot`,[[`path`,{d:`M12 8V4H8`,key:`hb8ula`}],[`rect`,{width:`16`,height:`12`,x:`4`,y:`8`,rx:`2`,key:`enze0r`}],[`path`,{d:`M2 14h2`,key:`vft8re`}],[`path`,{d:`M20 14h2`,key:`4cs60a`}],[`path`,{d:`M15 13v2`,key:`1xurst`}],[`path`,{d:`M9 13v2`,key:`rq6x2g`}]]),re=k(`chevron-left`,[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]),j=k(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]),M=k(`circle-alert`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`12`,x2:`12`,y1:`8`,y2:`12`,key:`1pkeuh`}],[`line`,{x1:`12`,x2:`12.01`,y1:`16`,y2:`16`,key:`4dfq90`}]]),ie=k(`circle-check`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),ae=k(`circle-x`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m15 9-6 6`,key:`1uzhvr`}],[`path`,{d:`m9 9 6 6`,key:`z0biqf`}]]),oe=k(`list-filter`,[[`path`,{d:`M2 5h20`,key:`1fs1ex`}],[`path`,{d:`M6 12h12`,key:`8npq4p`}],[`path`,{d:`M9 19h6`,key:`456am0`}]]),N=k(`loader-circle`,[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]]),P=k(`rotate-ccw`,[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]),F=k(`send`,[[`path`,{d:`M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z`,key:`1ffxy3`}],[`path`,{d:`m21.854 2.147-10.94 10.939`,key:`12cjpa`}]]),I=k(`type`,[[`path`,{d:`M12 4v16`,key:`1654pz`}],[`path`,{d:`M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2`,key:`e0r10z`}],[`path`,{d:`M9 20h6`,key:`s66wpe`}]]),se=k(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]);function L(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(n=L(e[t]))&&(r&&(r+=` `),r+=n)}else for(n in e)e[n]&&(r&&(r+=` `),r+=n);return r}function ce(){for(var e,t,n=0,r=``,i=arguments.length;n<i;n++)(e=arguments[n])&&(t=L(e))&&(r&&(r+=` `),r+=t);return r}var le=(e,t)=>{let n=Array(e.length+t.length);for(let t=0;t<e.length;t++)n[t]=e[t];for(let r=0;r<t.length;r++)n[e.length+r]=t[r];return n},R=(e,t)=>({classGroupId:e,validator:t}),ue=(e=new Map,t=null,n)=>({nextPart:e,validators:t,classGroupId:n}),z=`-`,de=[],fe=`arbitrary..`,pe=e=>{let t=B(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:e=>{if(e.startsWith(`[`)&&e.endsWith(`]`))return he(e);let n=e.split(z);return me(n,n[0]===``&&n.length>1?1:0,t)},getConflictingClassGroupIds:(e,t)=>{if(t){let t=r[e],i=n[e];return t?i?le(i,t):t:i||de}return n[e]||de}}},me=(e,t,n)=>{if(e.length-t===0)return n.classGroupId;let r=e[t],i=n.nextPart.get(r);if(i){let n=me(e,t+1,i);if(n)return n}let a=n.validators;if(a===null)return;let o=t===0?e.join(z):e.slice(t).join(z),s=a.length;for(let e=0;e<s;e++){let t=a[e];if(t.validator(o))return t.classGroupId}},he=e=>e.slice(1,-1).indexOf(`:`)===-1?void 0:(()=>{let t=e.slice(1,-1),n=t.indexOf(`:`),r=t.slice(0,n);return r?fe+r:void 0})(),B=e=>{let{theme:t,classGroups:n}=e;return V(n,t)},V=(e,t)=>{let n=ue();for(let r in e){let i=e[r];ge(i,n,r,t)}return n},ge=(e,t,n,r)=>{let i=e.length;for(let a=0;a<i;a++){let i=e[a];_e(i,t,n,r)}},_e=(e,t,n,r)=>{if(typeof e==`string`){ve(e,t,n);return}if(typeof e==`function`){ye(e,t,n,r);return}be(e,t,n,r)},ve=(e,t,n)=>{let r=e===``?t:xe(t,e);r.classGroupId=n},ye=(e,t,n,r)=>{if(Se(e)){ge(e(r),t,n,r);return}t.validators===null&&(t.validators=[]),t.validators.push(R(n,e))},be=(e,t,n,r)=>{let i=Object.entries(e),a=i.length;for(let e=0;e<a;e++){let[a,o]=i[e];ge(o,xe(t,a),n,r)}},xe=(e,t)=>{let n=e,r=t.split(z),i=r.length;for(let e=0;e<i;e++){let t=r[e],i=n.nextPart.get(t);i||(i=ue(),n.nextPart.set(t,i)),n=i}return n},Se=e=>`isThemeGetter`in e&&e.isThemeGetter===!0,Ce=e=>{if(e<1)return{get:()=>void 0,set:()=>{}};let t=0,n=Object.create(null),r=Object.create(null),i=(i,a)=>{n[i]=a,t++,t>e&&(t=0,r=n,n=Object.create(null))};return{get(e){let t=n[e];if(t!==void 0)return t;if((t=r[e])!==void 0)return i(e,t),t},set(e,t){e in n?n[e]=t:i(e,t)}}},H=`!`,we=`:`,Te=[],Ee=(e,t,n,r,i)=>({modifiers:e,hasImportantModifier:t,baseClassName:n,maybePostfixModifierPosition:r,isExternal:i}),De=e=>{let{prefix:t,experimentalParseClassName:n}=e,r=e=>{let t=[],n=0,r=0,i=0,a,o=e.length;for(let s=0;s<o;s++){let o=e[s];if(n===0&&r===0){if(o===we){t.push(e.slice(i,s)),i=s+1;continue}if(o===`/`){a=s;continue}}o===`[`?n++:o===`]`?n--:o===`(`?r++:o===`)`&&r--}let s=t.length===0?e:e.slice(i),c=s,l=!1;s.endsWith(H)?(c=s.slice(0,-1),l=!0):s.startsWith(H)&&(c=s.slice(1),l=!0);let u=a&&a>i?a-i:void 0;return Ee(t,l,c,u)};if(t){let e=t+we,n=r;r=t=>t.startsWith(e)?n(t.slice(e.length)):Ee(Te,!1,t,void 0,!0)}if(n){let e=r;r=t=>n({className:t,parseClassName:e})}return r},Oe=e=>{let t=new Map;return e.orderSensitiveModifiers.forEach((e,n)=>{t.set(e,1e6+n)}),e=>{let n=[],r=[];for(let i=0;i<e.length;i++){let a=e[i],o=a[0]===`[`,s=t.has(a);o||s?(r.length>0&&(r.sort(),n.push(...r),r=[]),n.push(a)):r.push(a)}return r.length>0&&(r.sort(),n.push(...r)),n}},ke=e=>({cache:Ce(e.cacheSize),parseClassName:De(e),sortModifiers:Oe(e),...pe(e)}),Ae=/\s+/,je=(e,t)=>{let{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:i,sortModifiers:a}=t,o=[],s=e.trim().split(Ae),c=``;for(let e=s.length-1;e>=0;--e){let t=s[e],{isExternal:l,modifiers:u,hasImportantModifier:d,baseClassName:f,maybePostfixModifierPosition:p}=n(t);if(l){c=t+(c.length>0?` `+c:c);continue}let m=!!p,h=r(m?f.substring(0,p):f);if(!h){if(!m){c=t+(c.length>0?` `+c:c);continue}if(h=r(f),!h){c=t+(c.length>0?` `+c:c);continue}m=!1}let g=u.length===0?``:u.length===1?u[0]:a(u).join(`:`),_=d?g+H:g,v=_+h;if(o.indexOf(v)>-1)continue;o.push(v);let y=i(h,m);for(let e=0;e<y.length;++e){let t=y[e];o.push(_+t)}c=t+(c.length>0?` `+c:c)}return c},Me=(...e)=>{let t=0,n,r,i=``;for(;t<e.length;)(n=e[t++])&&(r=Ne(n))&&(i&&(i+=` `),i+=r);return i},Ne=e=>{if(typeof e==`string`)return e;let t,n=``;for(let r=0;r<e.length;r++)e[r]&&(t=Ne(e[r]))&&(n&&(n+=` `),n+=t);return n},Pe=(e,...t)=>{let n,r,i,a,o=o=>(n=ke(t.reduce((e,t)=>t(e),e())),r=n.cache.get,i=n.cache.set,a=s,s(o)),s=e=>{let t=r(e);if(t)return t;let a=je(e,n);return i(e,a),a};return a=o,(...e)=>a(Me(...e))},Fe=[],U=e=>{let t=t=>t[e]||Fe;return t.isThemeGetter=!0,t},Ie=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,Le=/^\((?:(\w[\w-]*):)?(.+)\)$/i,Re=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,ze=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Be=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Ve=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,He=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Ue=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,W=e=>Re.test(e),G=e=>!!e&&!Number.isNaN(Number(e)),K=e=>!!e&&Number.isInteger(Number(e)),We=e=>e.endsWith(`%`)&&G(e.slice(0,-1)),q=e=>ze.test(e),Ge=()=>!0,Ke=e=>Be.test(e)&&!Ve.test(e),qe=()=>!1,Je=e=>He.test(e),Ye=e=>Ue.test(e),Xe=e=>!J(e)&&!X(e),Ze=e=>Z(e,pt,qe),J=e=>Ie.test(e),Y=e=>Z(e,mt,Ke),Qe=e=>Z(e,ht,G),$e=e=>Z(e,_t,Ge),et=e=>Z(e,gt,qe),tt=e=>Z(e,dt,qe),nt=e=>Z(e,ft,Ye),rt=e=>Z(e,vt,Je),X=e=>Le.test(e),it=e=>Q(e,mt),at=e=>Q(e,gt),ot=e=>Q(e,dt),st=e=>Q(e,pt),ct=e=>Q(e,ft),lt=e=>Q(e,vt,!0),ut=e=>Q(e,_t,!0),Z=(e,t,n)=>{let r=Ie.exec(e);return r?r[1]?t(r[1]):n(r[2]):!1},Q=(e,t,n=!1)=>{let r=Le.exec(e);return r?r[1]?t(r[1]):n:!1},dt=e=>e===`position`||e===`percentage`,ft=e=>e===`image`||e===`url`,pt=e=>e===`length`||e===`size`||e===`bg-size`,mt=e=>e===`length`,ht=e=>e===`number`,gt=e=>e===`family-name`,_t=e=>e===`number`||e===`weight`,vt=e=>e===`shadow`,yt=Pe(()=>{let e=U(`color`),t=U(`font`),n=U(`text`),r=U(`font-weight`),i=U(`tracking`),a=U(`leading`),o=U(`breakpoint`),s=U(`container`),c=U(`spacing`),l=U(`radius`),u=U(`shadow`),d=U(`inset-shadow`),f=U(`text-shadow`),p=U(`drop-shadow`),m=U(`blur`),h=U(`perspective`),g=U(`aspect`),_=U(`ease`),v=U(`animate`),y=()=>[`auto`,`avoid`,`all`,`avoid-page`,`page`,`left`,`right`,`column`],b=()=>[`center`,`top`,`bottom`,`left`,`right`,`top-left`,`left-top`,`top-right`,`right-top`,`bottom-right`,`right-bottom`,`bottom-left`,`left-bottom`],ee=()=>[...b(),X,J],x=()=>[`auto`,`hidden`,`clip`,`visible`,`scroll`],S=()=>[`auto`,`contain`,`none`],C=()=>[X,J,c],w=()=>[W,`full`,`auto`,...C()],T=()=>[K,`none`,`subgrid`,X,J],te=()=>[`auto`,{span:[`full`,K,X,J]},K,X,J],E=()=>[K,`auto`,X,J],ne=()=>[`auto`,`min`,`max`,`fr`,X,J],D=()=>[`start`,`end`,`center`,`between`,`around`,`evenly`,`stretch`,`baseline`,`center-safe`,`end-safe`],O=()=>[`start`,`end`,`center`,`stretch`,`center-safe`,`end-safe`],k=()=>[`auto`,...C()],A=()=>[W,`auto`,`full`,`dvw`,`dvh`,`lvw`,`lvh`,`svw`,`svh`,`min`,`max`,`fit`,...C()],re=()=>[W,`screen`,`full`,`dvw`,`lvw`,`svw`,`min`,`max`,`fit`,...C()],j=()=>[W,`screen`,`full`,`lh`,`dvh`,`lvh`,`svh`,`min`,`max`,`fit`,...C()],M=()=>[e,X,J],ie=()=>[...b(),ot,tt,{position:[X,J]}],ae=()=>[`no-repeat`,{repeat:[``,`x`,`y`,`space`,`round`]}],oe=()=>[`auto`,`cover`,`contain`,st,Ze,{size:[X,J]}],N=()=>[We,it,Y],P=()=>[``,`none`,`full`,l,X,J],F=()=>[``,G,it,Y],I=()=>[`solid`,`dashed`,`dotted`,`double`],se=()=>[`normal`,`multiply`,`screen`,`overlay`,`darken`,`lighten`,`color-dodge`,`color-burn`,`hard-light`,`soft-light`,`difference`,`exclusion`,`hue`,`saturation`,`color`,`luminosity`],L=()=>[G,We,ot,tt],ce=()=>[``,`none`,m,X,J],le=()=>[`none`,G,X,J],R=()=>[`none`,G,X,J],ue=()=>[G,X,J],z=()=>[W,`full`,...C()];return{cacheSize:500,theme:{animate:[`spin`,`ping`,`pulse`,`bounce`],aspect:[`video`],blur:[q],breakpoint:[q],color:[Ge],container:[q],"drop-shadow":[q],ease:[`in`,`out`,`in-out`],font:[Xe],"font-weight":[`thin`,`extralight`,`light`,`normal`,`medium`,`semibold`,`bold`,`extrabold`,`black`],"inset-shadow":[q],leading:[`none`,`tight`,`snug`,`normal`,`relaxed`,`loose`],perspective:[`dramatic`,`near`,`normal`,`midrange`,`distant`,`none`],radius:[q],shadow:[q],spacing:[`px`,G],text:[q],"text-shadow":[q],tracking:[`tighter`,`tight`,`normal`,`wide`,`wider`,`widest`]},classGroups:{aspect:[{aspect:[`auto`,`square`,W,J,X,g]}],container:[`container`],columns:[{columns:[G,J,X,s]}],"break-after":[{"break-after":y()}],"break-before":[{"break-before":y()}],"break-inside":[{"break-inside":[`auto`,`avoid`,`avoid-page`,`avoid-column`]}],"box-decoration":[{"box-decoration":[`slice`,`clone`]}],box:[{box:[`border`,`content`]}],display:[`block`,`inline-block`,`inline`,`flex`,`inline-flex`,`table`,`inline-table`,`table-caption`,`table-cell`,`table-column`,`table-column-group`,`table-footer-group`,`table-header-group`,`table-row-group`,`table-row`,`flow-root`,`grid`,`inline-grid`,`contents`,`list-item`,`hidden`],sr:[`sr-only`,`not-sr-only`],float:[{float:[`right`,`left`,`none`,`start`,`end`]}],clear:[{clear:[`left`,`right`,`both`,`none`,`start`,`end`]}],isolation:[`isolate`,`isolation-auto`],"object-fit":[{object:[`contain`,`cover`,`fill`,`none`,`scale-down`]}],"object-position":[{object:ee()}],overflow:[{overflow:x()}],"overflow-x":[{"overflow-x":x()}],"overflow-y":[{"overflow-y":x()}],overscroll:[{overscroll:S()}],"overscroll-x":[{"overscroll-x":S()}],"overscroll-y":[{"overscroll-y":S()}],position:[`static`,`fixed`,`absolute`,`relative`,`sticky`],inset:[{inset:w()}],"inset-x":[{"inset-x":w()}],"inset-y":[{"inset-y":w()}],start:[{"inset-s":w(),start:w()}],end:[{"inset-e":w(),end:w()}],"inset-bs":[{"inset-bs":w()}],"inset-be":[{"inset-be":w()}],top:[{top:w()}],right:[{right:w()}],bottom:[{bottom:w()}],left:[{left:w()}],visibility:[`visible`,`invisible`,`collapse`],z:[{z:[K,`auto`,X,J]}],basis:[{basis:[W,`full`,`auto`,s,...C()]}],"flex-direction":[{flex:[`row`,`row-reverse`,`col`,`col-reverse`]}],"flex-wrap":[{flex:[`nowrap`,`wrap`,`wrap-reverse`]}],flex:[{flex:[G,W,`auto`,`initial`,`none`,J]}],grow:[{grow:[``,G,X,J]}],shrink:[{shrink:[``,G,X,J]}],order:[{order:[K,`first`,`last`,`none`,X,J]}],"grid-cols":[{"grid-cols":T()}],"col-start-end":[{col:te()}],"col-start":[{"col-start":E()}],"col-end":[{"col-end":E()}],"grid-rows":[{"grid-rows":T()}],"row-start-end":[{row:te()}],"row-start":[{"row-start":E()}],"row-end":[{"row-end":E()}],"grid-flow":[{"grid-flow":[`row`,`col`,`dense`,`row-dense`,`col-dense`]}],"auto-cols":[{"auto-cols":ne()}],"auto-rows":[{"auto-rows":ne()}],gap:[{gap:C()}],"gap-x":[{"gap-x":C()}],"gap-y":[{"gap-y":C()}],"justify-content":[{justify:[...D(),`normal`]}],"justify-items":[{"justify-items":[...O(),`normal`]}],"justify-self":[{"justify-self":[`auto`,...O()]}],"align-content":[{content:[`normal`,...D()]}],"align-items":[{items:[...O(),{baseline:[``,`last`]}]}],"align-self":[{self:[`auto`,...O(),{baseline:[``,`last`]}]}],"place-content":[{"place-content":D()}],"place-items":[{"place-items":[...O(),`baseline`]}],"place-self":[{"place-self":[`auto`,...O()]}],p:[{p:C()}],px:[{px:C()}],py:[{py:C()}],ps:[{ps:C()}],pe:[{pe:C()}],pbs:[{pbs:C()}],pbe:[{pbe:C()}],pt:[{pt:C()}],pr:[{pr:C()}],pb:[{pb:C()}],pl:[{pl:C()}],m:[{m:k()}],mx:[{mx:k()}],my:[{my:k()}],ms:[{ms:k()}],me:[{me:k()}],mbs:[{mbs:k()}],mbe:[{mbe:k()}],mt:[{mt:k()}],mr:[{mr:k()}],mb:[{mb:k()}],ml:[{ml:k()}],"space-x":[{"space-x":C()}],"space-x-reverse":[`space-x-reverse`],"space-y":[{"space-y":C()}],"space-y-reverse":[`space-y-reverse`],size:[{size:A()}],"inline-size":[{inline:[`auto`,...re()]}],"min-inline-size":[{"min-inline":[`auto`,...re()]}],"max-inline-size":[{"max-inline":[`none`,...re()]}],"block-size":[{block:[`auto`,...j()]}],"min-block-size":[{"min-block":[`auto`,...j()]}],"max-block-size":[{"max-block":[`none`,...j()]}],w:[{w:[s,`screen`,...A()]}],"min-w":[{"min-w":[s,`screen`,`none`,...A()]}],"max-w":[{"max-w":[s,`screen`,`none`,`prose`,{screen:[o]},...A()]}],h:[{h:[`screen`,`lh`,...A()]}],"min-h":[{"min-h":[`screen`,`lh`,`none`,...A()]}],"max-h":[{"max-h":[`screen`,`lh`,...A()]}],"font-size":[{text:[`base`,n,it,Y]}],"font-smoothing":[`antialiased`,`subpixel-antialiased`],"font-style":[`italic`,`not-italic`],"font-weight":[{font:[r,ut,$e]}],"font-stretch":[{"font-stretch":[`ultra-condensed`,`extra-condensed`,`condensed`,`semi-condensed`,`normal`,`semi-expanded`,`expanded`,`extra-expanded`,`ultra-expanded`,We,J]}],"font-family":[{font:[at,et,t]}],"font-features":[{"font-features":[J]}],"fvn-normal":[`normal-nums`],"fvn-ordinal":[`ordinal`],"fvn-slashed-zero":[`slashed-zero`],"fvn-figure":[`lining-nums`,`oldstyle-nums`],"fvn-spacing":[`proportional-nums`,`tabular-nums`],"fvn-fraction":[`diagonal-fractions`,`stacked-fractions`],tracking:[{tracking:[i,X,J]}],"line-clamp":[{"line-clamp":[G,`none`,X,Qe]}],leading:[{leading:[a,...C()]}],"list-image":[{"list-image":[`none`,X,J]}],"list-style-position":[{list:[`inside`,`outside`]}],"list-style-type":[{list:[`disc`,`decimal`,`none`,X,J]}],"text-alignment":[{text:[`left`,`center`,`right`,`justify`,`start`,`end`]}],"placeholder-color":[{placeholder:M()}],"text-color":[{text:M()}],"text-decoration":[`underline`,`overline`,`line-through`,`no-underline`],"text-decoration-style":[{decoration:[...I(),`wavy`]}],"text-decoration-thickness":[{decoration:[G,`from-font`,`auto`,X,Y]}],"text-decoration-color":[{decoration:M()}],"underline-offset":[{"underline-offset":[G,`auto`,X,J]}],"text-transform":[`uppercase`,`lowercase`,`capitalize`,`normal-case`],"text-overflow":[`truncate`,`text-ellipsis`,`text-clip`],"text-wrap":[{text:[`wrap`,`nowrap`,`balance`,`pretty`]}],indent:[{indent:C()}],"vertical-align":[{align:[`baseline`,`top`,`middle`,`bottom`,`text-top`,`text-bottom`,`sub`,`super`,X,J]}],whitespace:[{whitespace:[`normal`,`nowrap`,`pre`,`pre-line`,`pre-wrap`,`break-spaces`]}],break:[{break:[`normal`,`words`,`all`,`keep`]}],wrap:[{wrap:[`break-word`,`anywhere`,`normal`]}],hyphens:[{hyphens:[`none`,`manual`,`auto`]}],content:[{content:[`none`,X,J]}],"bg-attachment":[{bg:[`fixed`,`local`,`scroll`]}],"bg-clip":[{"bg-clip":[`border`,`padding`,`content`,`text`]}],"bg-origin":[{"bg-origin":[`border`,`padding`,`content`]}],"bg-position":[{bg:ie()}],"bg-repeat":[{bg:ae()}],"bg-size":[{bg:oe()}],"bg-image":[{bg:[`none`,{linear:[{to:[`t`,`tr`,`r`,`br`,`b`,`bl`,`l`,`tl`]},K,X,J],radial:[``,X,J],conic:[K,X,J]},ct,nt]}],"bg-color":[{bg:M()}],"gradient-from-pos":[{from:N()}],"gradient-via-pos":[{via:N()}],"gradient-to-pos":[{to:N()}],"gradient-from":[{from:M()}],"gradient-via":[{via:M()}],"gradient-to":[{to:M()}],rounded:[{rounded:P()}],"rounded-s":[{"rounded-s":P()}],"rounded-e":[{"rounded-e":P()}],"rounded-t":[{"rounded-t":P()}],"rounded-r":[{"rounded-r":P()}],"rounded-b":[{"rounded-b":P()}],"rounded-l":[{"rounded-l":P()}],"rounded-ss":[{"rounded-ss":P()}],"rounded-se":[{"rounded-se":P()}],"rounded-ee":[{"rounded-ee":P()}],"rounded-es":[{"rounded-es":P()}],"rounded-tl":[{"rounded-tl":P()}],"rounded-tr":[{"rounded-tr":P()}],"rounded-br":[{"rounded-br":P()}],"rounded-bl":[{"rounded-bl":P()}],"border-w":[{border:F()}],"border-w-x":[{"border-x":F()}],"border-w-y":[{"border-y":F()}],"border-w-s":[{"border-s":F()}],"border-w-e":[{"border-e":F()}],"border-w-bs":[{"border-bs":F()}],"border-w-be":[{"border-be":F()}],"border-w-t":[{"border-t":F()}],"border-w-r":[{"border-r":F()}],"border-w-b":[{"border-b":F()}],"border-w-l":[{"border-l":F()}],"divide-x":[{"divide-x":F()}],"divide-x-reverse":[`divide-x-reverse`],"divide-y":[{"divide-y":F()}],"divide-y-reverse":[`divide-y-reverse`],"border-style":[{border:[...I(),`hidden`,`none`]}],"divide-style":[{divide:[...I(),`hidden`,`none`]}],"border-color":[{border:M()}],"border-color-x":[{"border-x":M()}],"border-color-y":[{"border-y":M()}],"border-color-s":[{"border-s":M()}],"border-color-e":[{"border-e":M()}],"border-color-bs":[{"border-bs":M()}],"border-color-be":[{"border-be":M()}],"border-color-t":[{"border-t":M()}],"border-color-r":[{"border-r":M()}],"border-color-b":[{"border-b":M()}],"border-color-l":[{"border-l":M()}],"divide-color":[{divide:M()}],"outline-style":[{outline:[...I(),`none`,`hidden`]}],"outline-offset":[{"outline-offset":[G,X,J]}],"outline-w":[{outline:[``,G,it,Y]}],"outline-color":[{outline:M()}],shadow:[{shadow:[``,`none`,u,lt,rt]}],"shadow-color":[{shadow:M()}],"inset-shadow":[{"inset-shadow":[`none`,d,lt,rt]}],"inset-shadow-color":[{"inset-shadow":M()}],"ring-w":[{ring:F()}],"ring-w-inset":[`ring-inset`],"ring-color":[{ring:M()}],"ring-offset-w":[{"ring-offset":[G,Y]}],"ring-offset-color":[{"ring-offset":M()}],"inset-ring-w":[{"inset-ring":F()}],"inset-ring-color":[{"inset-ring":M()}],"text-shadow":[{"text-shadow":[`none`,f,lt,rt]}],"text-shadow-color":[{"text-shadow":M()}],opacity:[{opacity:[G,X,J]}],"mix-blend":[{"mix-blend":[...se(),`plus-darker`,`plus-lighter`]}],"bg-blend":[{"bg-blend":se()}],"mask-clip":[{"mask-clip":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]},`mask-no-clip`],"mask-composite":[{mask:[`add`,`subtract`,`intersect`,`exclude`]}],"mask-image-linear-pos":[{"mask-linear":[G]}],"mask-image-linear-from-pos":[{"mask-linear-from":L()}],"mask-image-linear-to-pos":[{"mask-linear-to":L()}],"mask-image-linear-from-color":[{"mask-linear-from":M()}],"mask-image-linear-to-color":[{"mask-linear-to":M()}],"mask-image-t-from-pos":[{"mask-t-from":L()}],"mask-image-t-to-pos":[{"mask-t-to":L()}],"mask-image-t-from-color":[{"mask-t-from":M()}],"mask-image-t-to-color":[{"mask-t-to":M()}],"mask-image-r-from-pos":[{"mask-r-from":L()}],"mask-image-r-to-pos":[{"mask-r-to":L()}],"mask-image-r-from-color":[{"mask-r-from":M()}],"mask-image-r-to-color":[{"mask-r-to":M()}],"mask-image-b-from-pos":[{"mask-b-from":L()}],"mask-image-b-to-pos":[{"mask-b-to":L()}],"mask-image-b-from-color":[{"mask-b-from":M()}],"mask-image-b-to-color":[{"mask-b-to":M()}],"mask-image-l-from-pos":[{"mask-l-from":L()}],"mask-image-l-to-pos":[{"mask-l-to":L()}],"mask-image-l-from-color":[{"mask-l-from":M()}],"mask-image-l-to-color":[{"mask-l-to":M()}],"mask-image-x-from-pos":[{"mask-x-from":L()}],"mask-image-x-to-pos":[{"mask-x-to":L()}],"mask-image-x-from-color":[{"mask-x-from":M()}],"mask-image-x-to-color":[{"mask-x-to":M()}],"mask-image-y-from-pos":[{"mask-y-from":L()}],"mask-image-y-to-pos":[{"mask-y-to":L()}],"mask-image-y-from-color":[{"mask-y-from":M()}],"mask-image-y-to-color":[{"mask-y-to":M()}],"mask-image-radial":[{"mask-radial":[X,J]}],"mask-image-radial-from-pos":[{"mask-radial-from":L()}],"mask-image-radial-to-pos":[{"mask-radial-to":L()}],"mask-image-radial-from-color":[{"mask-radial-from":M()}],"mask-image-radial-to-color":[{"mask-radial-to":M()}],"mask-image-radial-shape":[{"mask-radial":[`circle`,`ellipse`]}],"mask-image-radial-size":[{"mask-radial":[{closest:[`side`,`corner`],farthest:[`side`,`corner`]}]}],"mask-image-radial-pos":[{"mask-radial-at":b()}],"mask-image-conic-pos":[{"mask-conic":[G]}],"mask-image-conic-from-pos":[{"mask-conic-from":L()}],"mask-image-conic-to-pos":[{"mask-conic-to":L()}],"mask-image-conic-from-color":[{"mask-conic-from":M()}],"mask-image-conic-to-color":[{"mask-conic-to":M()}],"mask-mode":[{mask:[`alpha`,`luminance`,`match`]}],"mask-origin":[{"mask-origin":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]}],"mask-position":[{mask:ie()}],"mask-repeat":[{mask:ae()}],"mask-size":[{mask:oe()}],"mask-type":[{"mask-type":[`alpha`,`luminance`]}],"mask-image":[{mask:[`none`,X,J]}],filter:[{filter:[``,`none`,X,J]}],blur:[{blur:ce()}],brightness:[{brightness:[G,X,J]}],contrast:[{contrast:[G,X,J]}],"drop-shadow":[{"drop-shadow":[``,`none`,p,lt,rt]}],"drop-shadow-color":[{"drop-shadow":M()}],grayscale:[{grayscale:[``,G,X,J]}],"hue-rotate":[{"hue-rotate":[G,X,J]}],invert:[{invert:[``,G,X,J]}],saturate:[{saturate:[G,X,J]}],sepia:[{sepia:[``,G,X,J]}],"backdrop-filter":[{"backdrop-filter":[``,`none`,X,J]}],"backdrop-blur":[{"backdrop-blur":ce()}],"backdrop-brightness":[{"backdrop-brightness":[G,X,J]}],"backdrop-contrast":[{"backdrop-contrast":[G,X,J]}],"backdrop-grayscale":[{"backdrop-grayscale":[``,G,X,J]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[G,X,J]}],"backdrop-invert":[{"backdrop-invert":[``,G,X,J]}],"backdrop-opacity":[{"backdrop-opacity":[G,X,J]}],"backdrop-saturate":[{"backdrop-saturate":[G,X,J]}],"backdrop-sepia":[{"backdrop-sepia":[``,G,X,J]}],"border-collapse":[{border:[`collapse`,`separate`]}],"border-spacing":[{"border-spacing":C()}],"border-spacing-x":[{"border-spacing-x":C()}],"border-spacing-y":[{"border-spacing-y":C()}],"table-layout":[{table:[`auto`,`fixed`]}],caption:[{caption:[`top`,`bottom`]}],transition:[{transition:[``,`all`,`colors`,`opacity`,`shadow`,`transform`,`none`,X,J]}],"transition-behavior":[{transition:[`normal`,`discrete`]}],duration:[{duration:[G,`initial`,X,J]}],ease:[{ease:[`linear`,`initial`,_,X,J]}],delay:[{delay:[G,X,J]}],animate:[{animate:[`none`,v,X,J]}],backface:[{backface:[`hidden`,`visible`]}],perspective:[{perspective:[h,X,J]}],"perspective-origin":[{"perspective-origin":ee()}],rotate:[{rotate:le()}],"rotate-x":[{"rotate-x":le()}],"rotate-y":[{"rotate-y":le()}],"rotate-z":[{"rotate-z":le()}],scale:[{scale:R()}],"scale-x":[{"scale-x":R()}],"scale-y":[{"scale-y":R()}],"scale-z":[{"scale-z":R()}],"scale-3d":[`scale-3d`],skew:[{skew:ue()}],"skew-x":[{"skew-x":ue()}],"skew-y":[{"skew-y":ue()}],transform:[{transform:[X,J,``,`none`,`gpu`,`cpu`]}],"transform-origin":[{origin:ee()}],"transform-style":[{transform:[`3d`,`flat`]}],translate:[{translate:z()}],"translate-x":[{"translate-x":z()}],"translate-y":[{"translate-y":z()}],"translate-z":[{"translate-z":z()}],"translate-none":[`translate-none`],accent:[{accent:M()}],appearance:[{appearance:[`none`,`auto`]}],"caret-color":[{caret:M()}],"color-scheme":[{scheme:[`normal`,`dark`,`light`,`light-dark`,`only-dark`,`only-light`]}],cursor:[{cursor:[`auto`,`default`,`pointer`,`wait`,`text`,`move`,`help`,`not-allowed`,`none`,`context-menu`,`progress`,`cell`,`crosshair`,`vertical-text`,`alias`,`copy`,`no-drop`,`grab`,`grabbing`,`all-scroll`,`col-resize`,`row-resize`,`n-resize`,`e-resize`,`s-resize`,`w-resize`,`ne-resize`,`nw-resize`,`se-resize`,`sw-resize`,`ew-resize`,`ns-resize`,`nesw-resize`,`nwse-resize`,`zoom-in`,`zoom-out`,X,J]}],"field-sizing":[{"field-sizing":[`fixed`,`content`]}],"pointer-events":[{"pointer-events":[`auto`,`none`]}],resize:[{resize:[`none`,``,`y`,`x`]}],"scroll-behavior":[{scroll:[`auto`,`smooth`]}],"scroll-m":[{"scroll-m":C()}],"scroll-mx":[{"scroll-mx":C()}],"scroll-my":[{"scroll-my":C()}],"scroll-ms":[{"scroll-ms":C()}],"scroll-me":[{"scroll-me":C()}],"scroll-mbs":[{"scroll-mbs":C()}],"scroll-mbe":[{"scroll-mbe":C()}],"scroll-mt":[{"scroll-mt":C()}],"scroll-mr":[{"scroll-mr":C()}],"scroll-mb":[{"scroll-mb":C()}],"scroll-ml":[{"scroll-ml":C()}],"scroll-p":[{"scroll-p":C()}],"scroll-px":[{"scroll-px":C()}],"scroll-py":[{"scroll-py":C()}],"scroll-ps":[{"scroll-ps":C()}],"scroll-pe":[{"scroll-pe":C()}],"scroll-pbs":[{"scroll-pbs":C()}],"scroll-pbe":[{"scroll-pbe":C()}],"scroll-pt":[{"scroll-pt":C()}],"scroll-pr":[{"scroll-pr":C()}],"scroll-pb":[{"scroll-pb":C()}],"scroll-pl":[{"scroll-pl":C()}],"snap-align":[{snap:[`start`,`end`,`center`,`align-none`]}],"snap-stop":[{snap:[`normal`,`always`]}],"snap-type":[{snap:[`none`,`x`,`y`,`both`]}],"snap-strictness":[{snap:[`mandatory`,`proximity`]}],touch:[{touch:[`auto`,`none`,`manipulation`]}],"touch-x":[{"touch-pan":[`x`,`left`,`right`]}],"touch-y":[{"touch-pan":[`y`,`up`,`down`]}],"touch-pz":[`touch-pinch-zoom`],select:[{select:[`none`,`text`,`all`,`auto`]}],"will-change":[{"will-change":[`auto`,`scroll`,`contents`,`transform`,X,J]}],fill:[{fill:[`none`,...M()]}],"stroke-w":[{stroke:[G,it,Y,Qe]}],stroke:[{stroke:[`none`,...M()]}],"forced-color-adjust":[{"forced-color-adjust":[`auto`,`none`]}]},conflictingClassGroups:{overflow:[`overflow-x`,`overflow-y`],overscroll:[`overscroll-x`,`overscroll-y`],inset:[`inset-x`,`inset-y`,`inset-bs`,`inset-be`,`start`,`end`,`top`,`right`,`bottom`,`left`],"inset-x":[`right`,`left`],"inset-y":[`top`,`bottom`],flex:[`basis`,`grow`,`shrink`],gap:[`gap-x`,`gap-y`],p:[`px`,`py`,`ps`,`pe`,`pbs`,`pbe`,`pt`,`pr`,`pb`,`pl`],px:[`pr`,`pl`],py:[`pt`,`pb`],m:[`mx`,`my`,`ms`,`me`,`mbs`,`mbe`,`mt`,`mr`,`mb`,`ml`],mx:[`mr`,`ml`],my:[`mt`,`mb`],size:[`w`,`h`],"font-size":[`leading`],"fvn-normal":[`fvn-ordinal`,`fvn-slashed-zero`,`fvn-figure`,`fvn-spacing`,`fvn-fraction`],"fvn-ordinal":[`fvn-normal`],"fvn-slashed-zero":[`fvn-normal`],"fvn-figure":[`fvn-normal`],"fvn-spacing":[`fvn-normal`],"fvn-fraction":[`fvn-normal`],"line-clamp":[`display`,`overflow`],rounded:[`rounded-s`,`rounded-e`,`rounded-t`,`rounded-r`,`rounded-b`,`rounded-l`,`rounded-ss`,`rounded-se`,`rounded-ee`,`rounded-es`,`rounded-tl`,`rounded-tr`,`rounded-br`,`rounded-bl`],"rounded-s":[`rounded-ss`,`rounded-es`],"rounded-e":[`rounded-se`,`rounded-ee`],"rounded-t":[`rounded-tl`,`rounded-tr`],"rounded-r":[`rounded-tr`,`rounded-br`],"rounded-b":[`rounded-br`,`rounded-bl`],"rounded-l":[`rounded-tl`,`rounded-bl`],"border-spacing":[`border-spacing-x`,`border-spacing-y`],"border-w":[`border-w-x`,`border-w-y`,`border-w-s`,`border-w-e`,`border-w-bs`,`border-w-be`,`border-w-t`,`border-w-r`,`border-w-b`,`border-w-l`],"border-w-x":[`border-w-r`,`border-w-l`],"border-w-y":[`border-w-t`,`border-w-b`],"border-color":[`border-color-x`,`border-color-y`,`border-color-s`,`border-color-e`,`border-color-bs`,`border-color-be`,`border-color-t`,`border-color-r`,`border-color-b`,`border-color-l`],"border-color-x":[`border-color-r`,`border-color-l`],"border-color-y":[`border-color-t`,`border-color-b`],translate:[`translate-x`,`translate-y`,`translate-none`],"translate-none":[`translate`,`translate-x`,`translate-y`,`translate-z`],"scroll-m":[`scroll-mx`,`scroll-my`,`scroll-ms`,`scroll-me`,`scroll-mbs`,`scroll-mbe`,`scroll-mt`,`scroll-mr`,`scroll-mb`,`scroll-ml`],"scroll-mx":[`scroll-mr`,`scroll-ml`],"scroll-my":[`scroll-mt`,`scroll-mb`],"scroll-p":[`scroll-px`,`scroll-py`,`scroll-ps`,`scroll-pe`,`scroll-pbs`,`scroll-pbe`,`scroll-pt`,`scroll-pr`,`scroll-pb`,`scroll-pl`],"scroll-px":[`scroll-pr`,`scroll-pl`],"scroll-py":[`scroll-pt`,`scroll-pb`],touch:[`touch-x`,`touch-y`,`touch-pz`],"touch-x":[`touch`],"touch-y":[`touch`],"touch-pz":[`touch`]},conflictingClassGroupModifiers:{"font-size":[`leading`]},orderSensitiveModifiers:[`*`,`**`,`after`,`backdrop`,`before`,`details-content`,`file`,`first-letter`,`first-line`,`marker`,`placeholder`,`selection`]}});function bt({selector:e,label:i,pulse:a=!0}){let[o,s]=(0,t.useState)(null),c=(0,t.useRef)(0);return(0,t.useEffect)(()=>{let t=()=>{let n=document.querySelector(e);if(!n){s(null);return}let r=n.getBoundingClientRect();s({top:r.top+window.scrollY,left:r.left+window.scrollX,width:r.width,height:r.height}),c.current=requestAnimationFrame(t)};return c.current=requestAnimationFrame(t),window.addEventListener(`resize`,t),window.addEventListener(`scroll`,t,!0),()=>{c.current&&cancelAnimationFrame(c.current),window.removeEventListener(`resize`,t),window.removeEventListener(`scroll`,t,!0)}},[e]),o?(0,r.jsx)(n.AnimatePresence,{children:(0,r.jsxs)(n.motion.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},className:`fixed pointer-events-none z-[9999]`,style:{top:o.top-8,left:o.left-8,width:o.width+16,height:o.height+16},children:[(0,r.jsx)(n.motion.div,{className:`absolute inset-0 rounded-xl border-2 border-indigo-500`,animate:a?{boxShadow:[`0 0 0px rgba(99,102,241,0)`,`0 0 20px rgba(99,102,241,0.4)`,`0 0 0px rgba(99,102,241,0)`]}:{},transition:{repeat:1/0,duration:2}}),i&&(0,r.jsx)(`div`,{className:`absolute -top-8 left-1/2 -translate-x-1/2 whitespace-nowrap bg-indigo-600 text-white text-xs font-bold px-3 py-1 rounded-lg shadow-lg`,children:i})]})}):null}function $(...e){return yt(ce(e))}var xt=({content:e})=>(0,r.jsx)(`div`,{className:`bg-white dark:bg-slate-800 text-slate-700 dark:text-slate-300 border border-slate-100 dark:border-slate-700 rounded-2xl rounded-tl-sm p-4 text-sm shadow-sm w-fit max-w-[90%]`,children:e}),St=({targetField:e,value:t,onChange:n})=>(0,r.jsxs)(`div`,{className:`bg-indigo-50/50 dark:bg-indigo-900/10 border border-indigo-100 dark:border-indigo-800/30 rounded-2xl p-4 space-y-2 w-full max-w-[90%]`,children:[(0,r.jsxs)(`div`,{className:`flex items-center space-x-2 text-[10px] font-bold text-indigo-500 uppercase tracking-widest`,children:[(0,r.jsx)(I,{size:12}),(0,r.jsxs)(`span`,{children:[`Manual Entry: `,e]})]}),(0,r.jsx)(`input`,{value:String(t||``),onChange:e=>n(e.target.value),className:`w-full bg-white dark:bg-slate-900 border border-slate-200 dark:border-slate-800 rounded-xl px-4 py-2.5 text-sm outline-none focus:ring-2 focus:ring-indigo-500 shadow-sm transition-all text-slate-900 dark:text-white`,placeholder:`Type ${e}...`})]}),Ct=({targetField:e,value:t,options:n,onChange:i})=>(0,r.jsxs)(`div`,{className:`bg-indigo-50/50 dark:bg-indigo-900/10 border border-indigo-100 dark:border-indigo-800/30 rounded-2xl p-4 space-y-2 w-full max-w-[90%]`,children:[(0,r.jsxs)(`div`,{className:`flex items-center space-x-2 text-[10px] font-bold text-indigo-500 uppercase tracking-widest`,children:[(0,r.jsx)(oe,{size:12}),(0,r.jsxs)(`span`,{children:[`Select for: `,e]})]}),(0,r.jsxs)(`div`,{className:`relative`,children:[(0,r.jsxs)(`select`,{value:String(t||``),onChange:e=>i(e.target.value),className:`w-full bg-white dark:bg-slate-900 border border-slate-200 dark:border-slate-800 rounded-xl px-4 py-2.5 text-sm outline-none focus:ring-2 focus:ring-indigo-500 shadow-sm transition-all appearance-none text-slate-900 dark:text-white`,children:[(0,r.jsx)(`option`,{value:``,disabled:!0,children:`Select option...`}),n?.map((e,t)=>(0,r.jsx)(`option`,{value:String(e.value),children:e.label},t))]}),(0,r.jsx)(`div`,{className:`absolute right-3 top-1/2 -translate-y-1/2 pointer-events-none text-slate-400`,children:(0,r.jsx)(j,{size:16,className:`rotate-90`})})]})]}),wt=({actions:e,onAction:t,onNext:n,onPrev:i})=>(0,r.jsx)(`div`,{className:`flex flex-col items-end space-y-2 mt-2 w-full`,children:e.map((e,a)=>(0,r.jsxs)(`button`,{onClick:()=>{t(e),e.type===`next`&&n(),e.type===`prev`&&i()},className:`bg-indigo-600 hover:bg-indigo-700 text-white text-sm font-semibold py-2.5 px-5 rounded-2xl rounded-tr-sm shadow-lg shadow-indigo-500/10 transition-all active:scale-95 flex items-center space-x-2`,children:[(0,r.jsx)(`span`,{children:e.label}),e.type===`next`&&(0,r.jsx)(j,{size:16})]},a))}),Tt=({action:e,result:t})=>{let n={running:{icon:N,color:`text-blue-500`,bg:`bg-blue-50 dark:bg-blue-900/10`,border:`border-blue-200 dark:border-blue-800/30`,label:`Executing...`},success:{icon:ie,color:`text-emerald-500`,bg:`bg-emerald-50 dark:bg-emerald-900/10`,border:`border-emerald-200 dark:border-emerald-800/30`,label:`Completed`},failed:{icon:M,color:`text-rose-500`,bg:`bg-rose-50 dark:bg-rose-900/10`,border:`border-rose-200 dark:border-rose-800/30`,label:`Failed`},cancelled:{icon:ae,color:`text-slate-400`,bg:`bg-slate-50 dark:bg-slate-800/10`,border:`border-slate-200 dark:border-slate-700/30`,label:`Cancelled`},skipped:{icon:j,color:`text-amber-500`,bg:`bg-amber-50 dark:bg-amber-900/10`,border:`border-amber-200 dark:border-amber-800/30`,label:`Skipped`},pending:{icon:N,color:`text-slate-400`,bg:`bg-slate-50 dark:bg-slate-800/10`,border:`border-slate-200 dark:border-slate-700/30`,label:`Pending`}}[t.status],i=n.icon,a=e.label||e.type;return(0,r.jsxs)(`div`,{className:$(`flex flex-col space-y-1 px-4 py-2.5 rounded-xl border text-sm`,n.bg,n.border),children:[(0,r.jsxs)(`div`,{className:`flex items-center space-x-3`,children:[(0,r.jsx)(i,{size:16,className:$(n.color,t.status===`running`&&`animate-spin`)}),(0,r.jsx)(`span`,{className:$(`font-medium`,n.color),children:a})]}),(0,r.jsxs)(`div`,{className:`flex items-center space-x-2 ml-7`,children:[(0,r.jsx)(`span`,{className:`text-xs text-slate-400`,children:n.label}),t.error&&(0,r.jsxs)(`span`,{className:`text-xs text-rose-400`,children:[`ยท `,t.error]}),t.attempts>1&&(0,r.jsxs)(`span`,{className:`text-xs text-slate-400`,children:[`ยท (`,t.attempts,` attempts)`]})]})]})},Et=({bubble:e,fieldValues:t,onFill:n,onNext:i,onPrev:a,onInteraction:o})=>{switch(e.type){case`message`:return(0,r.jsx)(xt,{content:e.content});case`input`:return(0,r.jsx)(St,{targetField:e.targetField,value:t[e.targetField],onChange:t=>{n(e.targetField,t)}});case`select`:return(0,r.jsx)(Ct,{targetField:e.targetField,options:e.options,value:t[e.targetField],onChange:t=>{n(e.targetField,t)}});case`action-group`:return(0,r.jsx)(wt,{actions:e.actions||[],onNext:i,onPrev:a,onAction:e=>{if(e.type===`fill_field`&&e.data){let t=e.data;n(t.field,t.value),o(`Auto-filled ${t.field} with ${t.value}`)}else if(e.type===`click`&&e.data){let t=e.data,n=document.querySelector(t.selector);n&&(n.click(),o(`Clicked: ${t.selector}`))}else e.onClick?(e.onClick(),o(`Performed action: ${e.label}`)):o(`Clicked: ${e.label}`)}});default:return null}};function Dt({className:e}){let i=b(),{activeMission:a,currentStep:o,nextStep:s,prevStep:c,fillField:l,fieldErrors:u,fieldValues:d,executionContext:f,cancelExecution:p}=x({debug:!1}),[m,h]=(0,t.useState)(!1),[g,_]=(0,t.useState)(!1),v=(0,t.useRef)(null),[y,ee]=(0,t.useState)(null);(0,t.useEffect)(()=>{h(!!i.activeMissionId&&!i.isPaused)},[i.activeMissionId,i.isPaused]),(0,t.useEffect)(()=>{if(o&&o.id!==y){_(!0);let e=setTimeout(()=>{_(!1),ee(o.id)},1200);return()=>clearTimeout(e)}},[o,y]);let S=(0,t.useMemo)(()=>{if(!a)return[];let e=[],t=a.steps.findIndex(e=>e.id===y);return t===-1||a.steps.slice(0,t+1).forEach(t=>{e.push({id:`sys-${t.id}`,role:`system`,content:t.content});let n=i.interactionHistory.find(e=>e.stepId===t.id);n&&e.push({id:`usr-${t.id}`,role:`user`,content:n.actionText})}),e},[a,y,i.interactionHistory]);if((0,t.useEffect)(()=>{v.current&&(v.current.scrollTop=v.current.scrollHeight)},[S,g]),!a||!o){let e=Object.values(i.tourHistory).find(e=>!e.completed&&e.lastAccessed>Date.now()-10080*60*1e3);if(e){let t=i.missions[e.missionId];if(t)return(0,r.jsx)(n.motion.div,{initial:{opacity:0,x:20},animate:{opacity:1,x:0},exit:{opacity:0,x:20},className:`h-screen w-[400px] bg-white/95 dark:bg-slate-900/95 backdrop-blur-xl border-l border-slate-200 dark:border-slate-800 shadow-2xl flex flex-col shrink-0 z-[60]`,children:(0,r.jsxs)(`div`,{className:`p-6 flex flex-col items-center text-center space-y-4`,children:[(0,r.jsx)(`div`,{className:`p-4 bg-amber-500/10 rounded-2xl`,children:(0,r.jsx)(P,{size:32,className:`text-amber-500`})}),(0,r.jsx)(`h3`,{className:`text-lg font-bold text-slate-900 dark:text-white`,children:`Resume Tour?`}),(0,r.jsxs)(`p`,{className:`text-sm text-slate-500 dark:text-slate-400`,children:[`You were taking the `,(0,r.jsx)(`strong`,{children:t.title}),` tour. Would you like to continue where you left off?`]}),(0,r.jsxs)(`div`,{className:`flex flex-col w-full space-y-2 pt-2`,children:[(0,r.jsxs)(`button`,{onClick:()=>{i.startMission(e.missionId),e.lastStepId&&i.goToStep(e.lastStepId)},className:`w-full py-3 rounded-xl bg-indigo-600 text-white font-semibold hover:bg-indigo-700 shadow-lg shadow-indigo-500/20 transition-all flex items-center justify-center space-x-2`,children:[(0,r.jsx)(P,{size:16}),(0,r.jsx)(`span`,{children:`Resume Tour`})]}),(0,r.jsx)(`button`,{onClick:()=>i.recordTourEntry(e.missionId,e.lastStepId,!0),className:`w-full py-3 rounded-xl border border-slate-200 dark:border-slate-700 text-slate-500 dark:text-slate-400 font-medium hover:bg-slate-50 dark:hover:bg-slate-800 transition-all text-sm`,children:`Dismiss`})]})]})})}return null}return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.AnimatePresence,{children:m&&(0,r.jsxs)(n.motion.aside,{initial:{width:0,opacity:0},animate:{width:400,opacity:1},exit:{width:0,opacity:0},transition:{type:`spring`,damping:25,stiffness:200},className:$(`h-screen overflow-hidden bg-white/95 dark:bg-slate-900/95 backdrop-blur-xl border-l border-slate-200 dark:border-slate-800 shadow-2xl flex flex-col shrink-0 z-[60]`,e),children:[(0,r.jsxs)(`div`,{className:`p-5 border-b border-slate-200 dark:border-slate-800 flex items-center justify-between bg-slate-50/50 dark:bg-slate-800/50 backdrop-blur-sm z-10 shrink-0`,children:[(0,r.jsxs)(`div`,{className:`flex items-center space-x-3 overflow-hidden`,children:[(0,r.jsxs)(`div`,{className:`relative shrink-0`,children:[(0,r.jsx)(`div`,{className:`p-2 bg-indigo-500 rounded-xl text-white shadow-lg shadow-indigo-500/30`,children:(0,r.jsx)(A,{size:20})}),(0,r.jsx)(`span`,{className:`absolute -bottom-1 -right-1 w-3 h-3 bg-emerald-500 border-2 border-white dark:border-slate-900 rounded-full`})]}),(0,r.jsxs)(`div`,{className:`min-w-0`,children:[(0,r.jsx)(`h2`,{className:`text-sm font-bold text-slate-900 dark:text-white leading-tight truncate`,children:`Chalo Guide`}),(0,r.jsx)(`p`,{className:`text-[11px] font-semibold text-slate-500 dark:text-slate-400 truncate`,children:a.title})]})]}),(0,r.jsx)(`button`,{className:`p-2 hover:bg-slate-200 dark:hover:bg-slate-700 rounded-lg text-slate-500 transition-colors shrink-0`,onClick:()=>{i.dismissAllTours(),i.resetMission()},children:(0,r.jsx)(se,{size:18})})]}),(0,r.jsxs)(`div`,{ref:v,className:`flex-1 overflow-y-auto p-5 space-y-6 scroll-smooth min-h-0`,children:[(0,r.jsxs)(n.AnimatePresence,{initial:!1,children:[S.map(e=>(0,r.jsx)(n.motion.div,{initial:{opacity:0,y:10,scale:.95},animate:{opacity:1,y:0,scale:1},className:$(`flex w-full`,e.role===`user`?`justify-end`:`justify-start`),children:(0,r.jsx)(`div`,{className:$(`max-w-[85%] rounded-2xl p-4 text-sm shadow-sm`,e.role===`user`?`bg-slate-900 dark:bg-slate-100 text-white dark:text-slate-900 rounded-tr-sm`:`bg-white dark:bg-slate-800 text-slate-700 dark:text-slate-300 border border-slate-100 dark:border-slate-700 rounded-tl-sm`),children:e.content})},e.id)),g&&(0,r.jsx)(n.motion.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},exit:{opacity:0,scale:.9},className:`flex justify-start w-full`,children:(0,r.jsxs)(`div`,{className:`bg-white dark:bg-slate-800 border border-slate-100 dark:border-slate-700 rounded-2xl rounded-tl-sm p-4 px-5 shadow-sm flex items-center space-x-1`,children:[(0,r.jsx)(n.motion.div,{className:`w-1.5 h-1.5 bg-slate-400 rounded-full`,animate:{y:[0,-3,0]},transition:{repeat:1/0,duration:.6,delay:0}}),(0,r.jsx)(n.motion.div,{className:`w-1.5 h-1.5 bg-slate-400 rounded-full`,animate:{y:[0,-3,0]},transition:{repeat:1/0,duration:.6,delay:.2}}),(0,r.jsx)(n.motion.div,{className:`w-1.5 h-1.5 bg-slate-400 rounded-full`,animate:{y:[0,-3,0]},transition:{repeat:1/0,duration:.6,delay:.4}})]})})]}),!g&&(0,r.jsxs)(n.motion.div,{initial:{opacity:0},animate:{opacity:1},className:`space-y-4`,children:[o.bubbles?.map(e=>(0,r.jsx)(`div`,{className:$(`flex w-full`,e.type===`action-group`?`justify-end`:`justify-start`),children:(0,r.jsx)(Et,{bubble:e,fieldValues:d||{},onFill:l,onNext:s,onPrev:c,onInteraction:e=>i.addInteraction(o.id,e)})},e.id)),!o.bubbles&&o.actions&&o.actions.length>0&&(0,r.jsx)(wt,{actions:o.actions,onNext:s,onPrev:c,onAction:e=>{if(e.type===`fill_field`&&e.data){let t=e.data;l(t.field,t.value),i.addInteraction(o.id,`Used auto-fill: ${t.value}`)}else if(e.type===`click`&&e.data){let t=e.data,n=document.querySelector(t.selector);n&&(n.click(),i.addInteraction(o.id,`Clicked: ${t.selector}`))}else e.onClick&&(e.onClick(),i.addInteraction(o.id,`Selected: ${e.label}`))}}),o?.actionSequence&&Object.keys(f.results).length>0&&(0,r.jsxs)(`div`,{className:`space-y-2`,children:[o.actionSequence.map(e=>{let t=f.results[e.id];return t?(0,r.jsx)(`div`,{className:`flex justify-start w-full`,children:(0,r.jsx)(Tt,{action:e,result:t})},e.id):null}),f.isRunning&&(0,r.jsxs)(`button`,{onClick:p,className:`flex items-center space-x-1 text-xs text-rose-500 hover:text-rose-600 font-medium ml-2 mt-1`,children:[(0,r.jsx)(ae,{size:12}),(0,r.jsx)(`span`,{children:`Cancel execution`})]})]})]})]}),(0,r.jsx)(`div`,{className:`p-4 bg-white dark:bg-slate-900 border-t border-slate-100 dark:border-slate-800 shrink-0`,children:(0,r.jsxs)(`div`,{className:`flex items-center justify-between space-x-2`,children:[(0,r.jsx)(`button`,{onClick:()=>{i.addInteraction(o.id,`Navigated backwards`),c()},disabled:a.steps.indexOf(o)===0,className:`p-3 text-slate-400 hover:text-slate-900 dark:hover:text-white disabled:opacity-30 transition-colors`,children:(0,r.jsx)(re,{size:20})}),(0,r.jsx)(`div`,{className:`flex-1 bg-slate-100 dark:bg-slate-800 rounded-xl px-4 py-3 flex items-center overflow-hidden`,children:(0,r.jsx)(`span`,{className:`text-sm text-slate-400 flex-1 truncate`,children:o.targetField?`Focusing on ${o.targetField}...`:`Reading...`})}),(0,r.jsx)(`button`,{onClick:()=>{if(o.targetField){let e=d[o.targetField];i.addInteraction(o.id,`Confirmed value: ${e}`)}else i.interactionHistory.find(e=>e.stepId===o.id)||i.addInteraction(o.id,`Proceeded to next step`);s()},disabled:o.targetField&&!!u?.[o.targetField]||a.steps.indexOf(o)===a.steps.length-1,className:$(`p-3 bg-indigo-600 hover:bg-indigo-700 text-white rounded-xl shadow-md active:scale-95 transition-all disabled:opacity-50`),children:a.steps.indexOf(o)===a.steps.length-1?(0,r.jsx)(ie,{size:20}):(0,r.jsx)(F,{size:20})})]})})]})}),o?.targetElement&&(0,r.jsx)(bt,{selector:o.targetElement,label:o.title})]})}exports.SmartDrawer=Dt,exports.TargetHighlight=bt,exports.useChalo=x,exports.useChaloStore=b;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require(`zustand`),t=require(`react`),n=require(`framer-motion`),r=require(`react/jsx-runtime`);function i(e,t){let n;try{n=e()}catch{return}return{getItem:e=>{let r=e=>e===null?null:JSON.parse(e,t?.reviver),i=n.getItem(e)??null;return i instanceof Promise?i.then(r):r(i)},setItem:(e,r)=>n.setItem(e,JSON.stringify(r,t?.replacer)),removeItem:e=>n.removeItem(e)}}var a=e=>t=>{try{let n=e(t);return n instanceof Promise?n:{then(e){return a(e)(n)},catch(e){return this}}}catch(e){return{then(e){return this},catch(t){return a(t)(e)}}}},o=(e,t)=>(n,r,o)=>{let s={storage:i(()=>window.localStorage),partialize:e=>e,version:0,merge:(e,t)=>({...t,...e}),...t},c=!1,l=0,u=new Set,d=new Set,f=s.storage;if(!f)return e((...e)=>{console.warn(`[zustand persist middleware] Unable to update item '${s.name}', the given storage is currently unavailable.`),n(...e)},r,o);let p=()=>{let e=s.partialize({...r()});return f.setItem(s.name,{state:e,version:s.version})},m=o.setState;o.setState=(e,t)=>(m(e,t),p());let h=e((...e)=>(n(...e),p()),r,o);o.getInitialState=()=>h;let g,_=()=>{if(!f)return;let e=++l;c=!1,u.forEach(e=>e(r()??h));let t=s.onRehydrateStorage?.call(s,r()??h)||void 0;return a(f.getItem.bind(f))(s.name).then(e=>{if(e)if(typeof e.version==`number`&&e.version!==s.version){if(s.migrate){let t=s.migrate(e.state,e.version);return t instanceof Promise?t.then(e=>[!0,e]):[!0,t]}console.error(`State loaded from storage couldn't be migrated since no migrate function was provided`)}else return[!1,e.state];return[!1,void 0]}).then(t=>{if(e!==l)return;let[i,a]=t;if(g=s.merge(a,r()??h),n(g,!0),i)return p()}).then(()=>{e===l&&(t?.(r(),void 0),g=r(),c=!0,d.forEach(e=>e(g)))}).catch(n=>{e===l&&t?.(void 0,n)})};return o.persist={setOptions:e=>{s={...s,...e},e.storage&&(f=e.storage)},clearStorage:()=>{f?.removeItem(s.name)},getOptions:()=>s,rehydrate:()=>_(),hasHydrated:()=>c,onHydrate:e=>(u.add(e),()=>{u.delete(e)}),onFinishHydration:e=>(d.add(e),()=>{d.delete(e)})},s.skipHydration||_(),g||h},s=async e=>{let t=e,n=t.field?`[data-chalo-field="${t.field}"], #chalo-${t.field}`:t.selector;if(!n)throw Error(`Click action requires either "field" or "selector".`);let r=document.querySelector(n);if(!r)throw Error(`Element not found: ${n}`);return r.click(),{clicked:n}},c=async e=>{let{selector:t,behavior:n=`smooth`,field:r}=e,i=r?`[data-chalo-field="${r}"], #chalo-${r}`:t;if(i){let e=document.querySelector(i);if(!e)throw Error(`Element not found: ${i}`);return e.scrollIntoView({behavior:n,block:`center`}),e.style.transition=`outline 0.2s`,e.style.outline=`3px solid rgba(99, 102, 241, 0.6)`,e.style.outlineOffset=`4px`,setTimeout(()=>{e.style.outline=`none`},2e3),{scrolled:i}}else return window.scrollTo({top:document.body.scrollHeight,behavior:n}),{scrolled:`bottom`}},l=async(e,t)=>{let{field:n,value:r}=e;t.variables[n]=r;let i=document.querySelector(`[data-chalo-field="${n}"], #chalo-${n}, [name="${n}"], #${n}`);return i&&((Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,`value`)?.set||Object.getOwnPropertyDescriptor(window.HTMLSelectElement.prototype,`value`)?.set)?.call(i,r),i.dispatchEvent(new Event(`input`,{bubbles:!0})),i.dispatchEvent(new Event(`change`,{bubbles:!0}))),{field:n,value:r}},u=async e=>{let{url:t,method:n=`GET`,headers:r,body:i}=e,a=await fetch(t,{method:n,headers:{"Content-Type":`application/json`,...r},body:i?JSON.stringify(i):void 0});if(!a.ok)throw Error(`API call failed: ${a.status} ${a.statusText}`);let o=await a.json();return{url:t,status:a.status,data:o}},d=async e=>{let{durationMs:t}=e;return await new Promise(e=>setTimeout(e,t)),{waited:t}},f=async(e,t)=>{let{condition:n}=e;return{conditionMet:m(n,t)}},p=async e=>{let{path:t}=e;return window.history.pushState({},``,t),window.dispatchEvent(new PopStateEvent(`popstate`)),{navigated:t}};function m(e,t){if(!e)return!0;switch(e.type){case`field_value`:return e.field?t.variables[e.field]==e.value:!1;case`field_touched`:return e.field?t.variables[`__touched_${e.field}`]===!0:!1;case`custom`:return e.predicate?e.predicate(t.variables,t.variables):!1;default:return!0}}var h={click:s,scroll:c,fill_field:l,api_call:u,wait:d,conditional:f,navigate:p,custom:async e=>{let{handlerId:t}=e;throw Error(`No handler registered for custom action: ${t}`)}};async function g(e,t){let n=t?.maxAttempts??1,r=t?.delayMs??1e3,i=t?.backoff??`fixed`,a=null;for(let t=1;t<=n;t++)try{return{result:await e(),attempts:t}}catch(e){if(a=e,t<n){let e=i===`exponential`?r*2**(t-1):r;await new Promise(t=>setTimeout(t,e))}}throw a}function _(e){let t=new Map(e.map(e=>[e.id,e])),n=new Set,r=[];function i(e){if(n.has(e))return;n.add(e);let a=t.get(e);a&&(a.dependsOn?.forEach(e=>i(e)),r.push(a))}return e.forEach(e=>i(e.id)),r}var v=new class{handlers=new Map(Object.entries(h));abortController=null;registerHandler(e,t){this.handlers.set(e,t)}getHandler(e){return this.handlers.get(e)}async executeAction(e,t){if(e.condition&&!m(e.condition,t))return{id:e.id,status:`skipped`,attempts:0};if(e.dependsOn?.length){let n=e.dependsOn.filter(e=>t.results[e]?.status===`failed`||t.results[e]?.status===`cancelled`);if(n.length>0)return{id:e.id,status:`skipped`,attempts:0,error:`Dependencies failed: ${n.join(`, `)}`}}let n=this.handlers.get(e.type);if(!n)return{id:e.id,status:`failed`,attempts:0,error:`No handler for action type: ${e.type}`};t.currentActionId=e.id;let r={id:e.id,status:`running`,attempts:0,startedAt:Date.now()};try{let{result:i,attempts:a}=await g(()=>n(e.config,t),e.retry);r.status=`success`,r.data=i,r.attempts=a,r.completedAt=Date.now()}catch(t){r.status=`failed`,r.error=t.message,r.attempts=e.retry?.maxAttempts??1,r.completedAt=Date.now()}return t.results[e.id]=r,t.currentActionId=null,r}async executeSequence(e,t,n){this.abortController=new AbortController;let r=_(e);for(let e of r){if(this.abortController.signal.aborted){r.filter(e=>!t.results[e.id]).forEach(e=>{t.results[e.id]={id:e.id,status:`cancelled`,attempts:0}});break}await this.executeAction(e,t),n?.({...t.results})}return this.abortController=null,t.results}cancel(){this.abortController?.abort()}},y={activeMissionId:null,currentStepId:null,missionProgress:0,fieldValues:{},fieldStates:{},missions:{},interactionHistory:[],tourHistory:{},completedMissions:[],executionContext:{results:{},variables:{},isRunning:!1,currentActionId:null},isPaused:!1,isCompleted:!1,error:null},b=(0,e.create)()(o((e,t)=>({...y,registerMission:t=>{e(e=>({missions:{...e.missions,[t.id]:t}}))},startMission:n=>{let{missions:r}=t(),i=r[n];if(!i){console.error(`Mission "${n}" not found in registry.`),e({error:`Mission "${n}" not found in registry.`});return}e({activeMissionId:i.id,currentStepId:i.steps[0]?.id||null,missionProgress:0,fieldValues:{},fieldStates:{},interactionHistory:[],isPaused:!1,isCompleted:!1,error:null})},pauseMission:()=>e({isPaused:!0}),resumeMission:()=>e({isPaused:!1}),completeMission:()=>e({isCompleted:!0,activeMissionId:null,currentStepId:null}),goToStep:n=>{let{activeMissionId:r}=t();r&&e({currentStepId:n})},nextStep:()=>{},prevStep:()=>{},updateField:(n,r,i=`idle`)=>{let{fieldValues:a,fieldStates:o}=t();a[n]===r&&o[n]===i||e(e=>({fieldValues:{...e.fieldValues,[n]:r},fieldStates:{...e.fieldStates,[n]:i}}))},addInteraction:(t,n)=>{e(e=>({interactionHistory:[...e.interactionHistory.filter(e=>e.stepId!==t),{stepId:t,actionText:n,timestamp:Date.now()}]}))},recordTourEntry:(t,n,r)=>{e(e=>({tourHistory:{...e.tourHistory,[t]:{missionId:t,lastStepId:n,completed:r,lastAccessed:Date.now()}}}))},resetMission:()=>{e({activeMissionId:null,currentStepId:null,missionProgress:0,fieldValues:{},fieldStates:{},interactionHistory:[],executionContext:{results:{},variables:{},isRunning:!1,currentActionId:null},isPaused:!1,isCompleted:!1,error:null})},dismissAllTours:()=>{e(e=>({tourHistory:Object.fromEntries(Object.entries(e.tourHistory).map(([e,t])=>[e,{...t,completed:!0}]))}))},markMissionCompleted:n=>{let{missions:r}=t();if(!r[n]?.allowCompletion){console.warn(`Mission "${n}" does not allow completion. Set allowCompletion: true on the mission.`);return}e(e=>({completedMissions:e.completedMissions.includes(n)?e.completedMissions:[...e.completedMissions,n]}))},registerActionHandler:(e,t)=>{v.registerHandler(e,t)},executeAction:async n=>{let{executionContext:r}=t();e(e=>({executionContext:{...e.executionContext,isRunning:!0}}));let i=await v.executeAction(n,r);return e(e=>({executionContext:{...e.executionContext,...r,isRunning:!1}})),i},executeActionSequence:async(n,r)=>{let{executionContext:i,addInteraction:a}=t();i.results={},i.variables={},i.isRunning=!0,e(e=>({executionContext:{...e.executionContext,...i}}));let o=await v.executeSequence(n,i,t=>{if(e(e=>({executionContext:{...e.executionContext,results:t,isRunning:!0}})),r){let e=Object.values(t).filter(e=>e.status===`success`).length;a(r,`Action progress: ${e}/${n.length} completed`)}});return e(e=>({executionContext:{...e.executionContext,results:o,isRunning:!1,currentActionId:null}})),o},cancelExecution:()=>{v.cancel(),e(e=>({executionContext:{...e.executionContext,isRunning:!1,currentActionId:null}}))},reset:()=>e(y),setError:t=>e({error:t})}),{name:`chalo-storage`,storage:i(()=>localStorage),partialize:e=>({activeMissionId:e.activeMissionId,currentStepId:e.currentStepId,fieldValues:e.fieldValues,interactionHistory:e.interactionHistory,tourHistory:e.tourHistory,completedMissions:e.completedMissions,isPaused:e.isPaused,isCompleted:e.isCompleted})}));function ee(e){return e?(e,t)=>{console.debug(`%c[use-chalo] %c${e}`,`color: #8b5cf6; font-weight: bold;`,`color: #a78bfa;`,t===void 0?``:t)}:()=>{}}function x(e={}){let{form:n,onMissionComplete:r,onStepChange:i,debug:a=!1}=e,o=(0,t.useMemo)(()=>ee(a),[a]),s=b(e=>e.activeMissionId),c=b(e=>e.currentStepId),l=b(e=>e.isCompleted),u=b(e=>e.isPaused),d=b(e=>e.missions),f=b(e=>e.fieldValues),p=b(e=>e.fieldStates),m=b(e=>e.interactionHistory),h=b(e=>e.updateField),g=(0,t.useCallback)((e,t,n)=>{o(`updateField`,{name:e,status:n}),h(e,t,n)},[h,o]),_=b(e=>e.startMission),v=b(e=>e.pauseMission),y=(0,t.useCallback)(()=>{o(`pauseMission`),v()},[v,o]),x=b(e=>e.resumeMission),S=(0,t.useCallback)(()=>{o(`resumeMission`),x()},[x,o]),C=b(e=>e.completeMission),w=(0,t.useCallback)(()=>{o(`completeMission`),C()},[C,o]),T=b(e=>e.goToStep),te=(0,t.useCallback)(e=>{o(`goToStep`,{stepId:e}),T(e)},[T,o]),E=b(e=>e.reset),ne=(0,t.useCallback)(()=>{o(`reset`),E()},[E,o]),D=b(e=>e.resetMission),O=(0,t.useCallback)(()=>{o(`resetMission`),D()},[D,o]),k=b(e=>e.dismissAllTours),A=(0,t.useCallback)(()=>{o(`dismissAllTours`),k()},[k,o]),re=b(e=>e.markMissionCompleted),j=(0,t.useCallback)(e=>{o(`markMissionCompleted`,{missionId:e}),re(e)},[re,o]),M=b(e=>e.registerActionHandler),ie=(0,t.useCallback)((e,t)=>{o(`registerActionHandler`,{type:e}),M(e,t)},[M,o]),ae=b(e=>e.executeAction),oe=(0,t.useCallback)(e=>(o(`executeAction`,{type:e.type}),ae(e)),[ae,o]),N=b(e=>e.executeActionSequence),P=(0,t.useCallback)((e,t)=>(o(`executeActionSequence`,{stepId:t,count:e.length}),N(e,t)),[N,o]),F=b(e=>e.cancelExecution),I=(0,t.useCallback)(()=>{o(`cancelExecution`),F()},[F,o]),se=b(e=>e.addInteraction),L=(0,t.useCallback)((e,t)=>{o(`addInteraction`,{stepId:e,actionText:t}),se(e,t)},[se,o]),ce=b(e=>e.registerMission),le=(0,t.useCallback)(e=>{o(`registerMission`,{missionId:e.id}),ce(e)},[ce,o]),R=b(e=>e.recordTourEntry),ue=(0,t.useCallback)((e,t,n)=>{o(`recordTourEntry`,{missionId:e,stepId:t,completed:n}),R(e,t,n)},[R,o]),z=b(e=>e.completedMissions),de=b(e=>e.executionContext),fe=b(e=>e.tourHistory),pe=(0,t.useCallback)(e=>{o(`startMission`,{missionId:e}),R(e,``,!1),_(e)},[_,R,o]),me=(0,t.useMemo)(()=>n?.formState.errors||{},[n?.formState.errors]),he=(0,t.useCallback)(e=>d[e]||void 0,[d]),B=(0,t.useMemo)(()=>s&&he(s)||null,[s,he]),V=(0,t.useMemo)(()=>!B||!c?null:B.steps.find(e=>e.id===c)||null,[B,c]),ge=(0,t.useRef)({}),_e=(0,t.useRef)(new Set);(0,t.useEffect)(()=>{if(!n||!s)return;let e=n.watch((e,{name:t})=>{if(t){let n=e[t];_e.current.add(t),g(t,n)}else Object.entries(e).forEach(([e,t])=>{_e.current.add(e),g(e,t)})});return()=>e.unsubscribe()},[n,s,g]),(0,t.useEffect)(()=>{!n||!s||Object.entries(f).forEach(([e,t])=>{if(_e.current.has(e)){_e.current.delete(e),ge.current[e]=t;return}if(ge.current[e]!==t){try{n.setValue(e,t,{shouldValidate:!0,shouldDirty:!0,shouldTouch:!0})}catch{}ge.current[e]=t}})},[f,n,s]),(0,t.useEffect)(()=>{if(V?.targetField&&n){let e=f[V.targetField];if(e!==void 0)try{n.setValue(V.targetField,e)}catch{}setTimeout(()=>{n.setFocus(V.targetField)},100)}if(V?.waitFor?.type===`custom`&&V.targetElement){let e=document.querySelector(V.targetElement);e&&e.removeAttribute(`data-clicked`)}i&&c&&i(c)},[c,V,n,i,f]);let ve=(0,t.useRef)(new Set);(0,t.useEffect)(()=>{ve.current.clear()},[s]),(0,t.useEffect)(()=>{l&&s&&r&&r(s)},[l,s,r]);let ye=(0,t.useMemo)(()=>{if(!B||!c)return 0;let e=B.steps.findIndex(e=>e.id===c);return e===-1?0:Math.round((e+1)/B.steps.length*100)},[B,c]),be=(0,t.useCallback)(e=>{if(!e)return!0;switch(e.type){case`field_value`:return e.field?f[e.field]==e.value:!1;case`field_touched`:return e.field?(p[e.field]||`idle`)!==`idle`:!1;case`custom`:return e.predicate?e.predicate(f,n?.getValues()):!1;default:return!0}},[f,p,n]),xe=(0,t.useCallback)(()=>{if(!B||!c)return;let e=B.steps,t=e.findIndex(e=>e.id===c);t<e.length-1?(o(`nextStep`,{missionId:B.id,stepId:e[t+1].id}),R(B.id,e[t+1].id,!1),T(e[t+1].id)):(o(`nextStep`,{missionId:B.id,completing:!0}),R(B.id,c,!0),C())},[B,c,o,R,T,C]),Se=(0,t.useCallback)(()=>{if(!B||!c)return;let e=B.steps,t=e.findIndex(e=>e.id===c);t>0&&(o(`prevStep`,{stepId:e[t-1].id}),T(e[t-1].id))},[B,c,o,T]);(0,t.useEffect)(()=>{!V?.actionSequence||!c||ve.current.has(c)||V.condition&&!be(V.condition)||(ve.current.add(c),P(V.actionSequence,c))},[c,V?.actionSequence,V?.condition,P,be]);let Ce=(0,t.useRef)(new Set),H=(0,t.useRef)(null),we=(0,t.useRef)(xe);(0,t.useEffect)(()=>{we.current=xe},[xe]),(0,t.useEffect)(()=>{if(H.current&&=(clearTimeout(H.current),null),!V?.waitFor){Ce.current.clear();return}if(Ce.current.has(V.id))return;let e=setInterval(()=>{be(V.waitFor)&&(Ce.current.add(V.id),clearInterval(e),H.current=setTimeout(()=>{we.current(),H.current=null},600))},300);return()=>{clearInterval(e),H.current&&=(clearTimeout(H.current),null)}},[V?.id,V?.waitFor,be]);let Te=(0,t.useCallback)((e,t)=>{if(o(`fillField`,{name:e}),_e.current.add(e),h(e,t,`valid`),n)try{n.setValue(e,t,{shouldValidate:!0,shouldDirty:!0,shouldTouch:!0})}catch{}},[n,o,h]);return{activeMissionId:s,currentStepId:c,isCompleted:l,isPaused:u,missions:d,fieldValues:f,fieldStates:p,interactionHistory:m,startMission:pe,pauseMission:y,resumeMission:S,completeMission:w,goToStep:te,reset:ne,resetMission:O,dismissAllTours:A,markMissionCompleted:j,completedMissions:z,executionContext:de,registerActionHandler:ie,executeAction:oe,executeActionSequence:P,cancelExecution:I,addInteraction:L,registerMission:le,activeMission:B,currentStep:V,missionProgress:ye,fieldErrors:me,nextStep:xe,prevStep:Se,registerField:(0,t.useCallback)((e,t)=>{if(o(`registerField`,{name:e}),f[e]!==void 0&&n)try{n.setValue(e,f[e])}catch{}let r=`chalo-${String(e)}`;if(!n)return{id:r,name:e,"data-chalo-field":String(e),onChange:t=>h(e,t.target.value),onFocus:()=>h(e,f[e],`focused`),onBlur:()=>h(e,f[e],`idle`)};let i=n.register(e,t);return{...i,id:r,"data-chalo-field":String(e),onChange:async t=>{await i.onChange(t),h(e,t.target.value)},onBlur:async t=>{await i.onBlur(t),h(e,f[e],`idle`)}}},[n,h,f,o]),registerElement:(0,t.useCallback)(e=>t=>{t&&(t.setAttribute(`data-chalo-field`,e),t.id=t.id||`chalo-${e}`)},[]),fillField:Te,recordTourEntry:ue,tourHistory:fe,evaluateCondition:be}}var S=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),C=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),w=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),T=e=>{let t=w(e);return t.charAt(0).toUpperCase()+t.slice(1)},te={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`},E=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},ne=(0,t.createContext)({}),D=()=>(0,t.useContext)(ne),O=(0,t.forwardRef)(({color:e,size:n,strokeWidth:r,absoluteStrokeWidth:i,className:a=``,children:o,iconNode:s,...c},l)=>{let{size:u=24,strokeWidth:d=2,absoluteStrokeWidth:f=!1,color:p=`currentColor`,className:m=``}=D()??{},h=i??f?Number(r??d)*24/Number(n??u):r??d;return(0,t.createElement)(`svg`,{ref:l,...te,width:n??u??te.width,height:n??u??te.height,stroke:e??p,strokeWidth:h,className:S(`lucide`,m,a),...!o&&!E(c)&&{"aria-hidden":`true`},...c},[...s.map(([e,n])=>(0,t.createElement)(e,n)),...Array.isArray(o)?o:[o]])}),k=(e,n)=>{let r=(0,t.forwardRef)(({className:r,...i},a)=>(0,t.createElement)(O,{ref:a,iconNode:n,className:S(`lucide-${C(T(e))}`,`lucide-${e}`,r),...i}));return r.displayName=T(e),r},A=k(`bot`,[[`path`,{d:`M12 8V4H8`,key:`hb8ula`}],[`rect`,{width:`16`,height:`12`,x:`4`,y:`8`,rx:`2`,key:`enze0r`}],[`path`,{d:`M2 14h2`,key:`vft8re`}],[`path`,{d:`M20 14h2`,key:`4cs60a`}],[`path`,{d:`M15 13v2`,key:`1xurst`}],[`path`,{d:`M9 13v2`,key:`rq6x2g`}]]),re=k(`chevron-left`,[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]),j=k(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]),M=k(`circle-alert`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`12`,x2:`12`,y1:`8`,y2:`12`,key:`1pkeuh`}],[`line`,{x1:`12`,x2:`12.01`,y1:`16`,y2:`16`,key:`4dfq90`}]]),ie=k(`circle-check`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),ae=k(`circle-x`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m15 9-6 6`,key:`1uzhvr`}],[`path`,{d:`m9 9 6 6`,key:`z0biqf`}]]),oe=k(`list-filter`,[[`path`,{d:`M2 5h20`,key:`1fs1ex`}],[`path`,{d:`M6 12h12`,key:`8npq4p`}],[`path`,{d:`M9 19h6`,key:`456am0`}]]),N=k(`loader-circle`,[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]]),P=k(`rotate-ccw`,[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]),F=k(`send`,[[`path`,{d:`M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z`,key:`1ffxy3`}],[`path`,{d:`m21.854 2.147-10.94 10.939`,key:`12cjpa`}]]),I=k(`type`,[[`path`,{d:`M12 4v16`,key:`1654pz`}],[`path`,{d:`M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2`,key:`e0r10z`}],[`path`,{d:`M9 20h6`,key:`s66wpe`}]]),se=k(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]);function L(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(n=L(e[t]))&&(r&&(r+=` `),r+=n)}else for(n in e)e[n]&&(r&&(r+=` `),r+=n);return r}function ce(){for(var e,t,n=0,r=``,i=arguments.length;n<i;n++)(e=arguments[n])&&(t=L(e))&&(r&&(r+=` `),r+=t);return r}var le=(e,t)=>{let n=Array(e.length+t.length);for(let t=0;t<e.length;t++)n[t]=e[t];for(let r=0;r<t.length;r++)n[e.length+r]=t[r];return n},R=(e,t)=>({classGroupId:e,validator:t}),ue=(e=new Map,t=null,n)=>({nextPart:e,validators:t,classGroupId:n}),z=`-`,de=[],fe=`arbitrary..`,pe=e=>{let t=B(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:e=>{if(e.startsWith(`[`)&&e.endsWith(`]`))return he(e);let n=e.split(z);return me(n,n[0]===``&&n.length>1?1:0,t)},getConflictingClassGroupIds:(e,t)=>{if(t){let t=r[e],i=n[e];return t?i?le(i,t):t:i||de}return n[e]||de}}},me=(e,t,n)=>{if(e.length-t===0)return n.classGroupId;let r=e[t],i=n.nextPart.get(r);if(i){let n=me(e,t+1,i);if(n)return n}let a=n.validators;if(a===null)return;let o=t===0?e.join(z):e.slice(t).join(z),s=a.length;for(let e=0;e<s;e++){let t=a[e];if(t.validator(o))return t.classGroupId}},he=e=>e.slice(1,-1).indexOf(`:`)===-1?void 0:(()=>{let t=e.slice(1,-1),n=t.indexOf(`:`),r=t.slice(0,n);return r?fe+r:void 0})(),B=e=>{let{theme:t,classGroups:n}=e;return V(n,t)},V=(e,t)=>{let n=ue();for(let r in e){let i=e[r];ge(i,n,r,t)}return n},ge=(e,t,n,r)=>{let i=e.length;for(let a=0;a<i;a++){let i=e[a];_e(i,t,n,r)}},_e=(e,t,n,r)=>{if(typeof e==`string`){ve(e,t,n);return}if(typeof e==`function`){ye(e,t,n,r);return}be(e,t,n,r)},ve=(e,t,n)=>{let r=e===``?t:xe(t,e);r.classGroupId=n},ye=(e,t,n,r)=>{if(Se(e)){ge(e(r),t,n,r);return}t.validators===null&&(t.validators=[]),t.validators.push(R(n,e))},be=(e,t,n,r)=>{let i=Object.entries(e),a=i.length;for(let e=0;e<a;e++){let[a,o]=i[e];ge(o,xe(t,a),n,r)}},xe=(e,t)=>{let n=e,r=t.split(z),i=r.length;for(let e=0;e<i;e++){let t=r[e],i=n.nextPart.get(t);i||(i=ue(),n.nextPart.set(t,i)),n=i}return n},Se=e=>`isThemeGetter`in e&&e.isThemeGetter===!0,Ce=e=>{if(e<1)return{get:()=>void 0,set:()=>{}};let t=0,n=Object.create(null),r=Object.create(null),i=(i,a)=>{n[i]=a,t++,t>e&&(t=0,r=n,n=Object.create(null))};return{get(e){let t=n[e];if(t!==void 0)return t;if((t=r[e])!==void 0)return i(e,t),t},set(e,t){e in n?n[e]=t:i(e,t)}}},H=`!`,we=`:`,Te=[],Ee=(e,t,n,r,i)=>({modifiers:e,hasImportantModifier:t,baseClassName:n,maybePostfixModifierPosition:r,isExternal:i}),De=e=>{let{prefix:t,experimentalParseClassName:n}=e,r=e=>{let t=[],n=0,r=0,i=0,a,o=e.length;for(let s=0;s<o;s++){let o=e[s];if(n===0&&r===0){if(o===we){t.push(e.slice(i,s)),i=s+1;continue}if(o===`/`){a=s;continue}}o===`[`?n++:o===`]`?n--:o===`(`?r++:o===`)`&&r--}let s=t.length===0?e:e.slice(i),c=s,l=!1;s.endsWith(H)?(c=s.slice(0,-1),l=!0):s.startsWith(H)&&(c=s.slice(1),l=!0);let u=a&&a>i?a-i:void 0;return Ee(t,l,c,u)};if(t){let e=t+we,n=r;r=t=>t.startsWith(e)?n(t.slice(e.length)):Ee(Te,!1,t,void 0,!0)}if(n){let e=r;r=t=>n({className:t,parseClassName:e})}return r},Oe=e=>{let t=new Map;return e.orderSensitiveModifiers.forEach((e,n)=>{t.set(e,1e6+n)}),e=>{let n=[],r=[];for(let i=0;i<e.length;i++){let a=e[i],o=a[0]===`[`,s=t.has(a);o||s?(r.length>0&&(r.sort(),n.push(...r),r=[]),n.push(a)):r.push(a)}return r.length>0&&(r.sort(),n.push(...r)),n}},ke=e=>({cache:Ce(e.cacheSize),parseClassName:De(e),sortModifiers:Oe(e),...pe(e)}),Ae=/\s+/,je=(e,t)=>{let{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:i,sortModifiers:a}=t,o=[],s=e.trim().split(Ae),c=``;for(let e=s.length-1;e>=0;--e){let t=s[e],{isExternal:l,modifiers:u,hasImportantModifier:d,baseClassName:f,maybePostfixModifierPosition:p}=n(t);if(l){c=t+(c.length>0?` `+c:c);continue}let m=!!p,h=r(m?f.substring(0,p):f);if(!h){if(!m){c=t+(c.length>0?` `+c:c);continue}if(h=r(f),!h){c=t+(c.length>0?` `+c:c);continue}m=!1}let g=u.length===0?``:u.length===1?u[0]:a(u).join(`:`),_=d?g+H:g,v=_+h;if(o.indexOf(v)>-1)continue;o.push(v);let y=i(h,m);for(let e=0;e<y.length;++e){let t=y[e];o.push(_+t)}c=t+(c.length>0?` `+c:c)}return c},Me=(...e)=>{let t=0,n,r,i=``;for(;t<e.length;)(n=e[t++])&&(r=Ne(n))&&(i&&(i+=` `),i+=r);return i},Ne=e=>{if(typeof e==`string`)return e;let t,n=``;for(let r=0;r<e.length;r++)e[r]&&(t=Ne(e[r]))&&(n&&(n+=` `),n+=t);return n},Pe=(e,...t)=>{let n,r,i,a,o=o=>(n=ke(t.reduce((e,t)=>t(e),e())),r=n.cache.get,i=n.cache.set,a=s,s(o)),s=e=>{let t=r(e);if(t)return t;let a=je(e,n);return i(e,a),a};return a=o,(...e)=>a(Me(...e))},Fe=[],U=e=>{let t=t=>t[e]||Fe;return t.isThemeGetter=!0,t},Ie=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,Le=/^\((?:(\w[\w-]*):)?(.+)\)$/i,Re=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,ze=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Be=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Ve=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,He=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Ue=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,W=e=>Re.test(e),G=e=>!!e&&!Number.isNaN(Number(e)),K=e=>!!e&&Number.isInteger(Number(e)),We=e=>e.endsWith(`%`)&&G(e.slice(0,-1)),q=e=>ze.test(e),Ge=()=>!0,Ke=e=>Be.test(e)&&!Ve.test(e),qe=()=>!1,Je=e=>He.test(e),Ye=e=>Ue.test(e),Xe=e=>!J(e)&&!X(e),Ze=e=>Z(e,pt,qe),J=e=>Ie.test(e),Y=e=>Z(e,mt,Ke),Qe=e=>Z(e,ht,G),$e=e=>Z(e,_t,Ge),et=e=>Z(e,gt,qe),tt=e=>Z(e,dt,qe),nt=e=>Z(e,ft,Ye),rt=e=>Z(e,vt,Je),X=e=>Le.test(e),it=e=>Q(e,mt),at=e=>Q(e,gt),ot=e=>Q(e,dt),st=e=>Q(e,pt),ct=e=>Q(e,ft),lt=e=>Q(e,vt,!0),ut=e=>Q(e,_t,!0),Z=(e,t,n)=>{let r=Ie.exec(e);return r?r[1]?t(r[1]):n(r[2]):!1},Q=(e,t,n=!1)=>{let r=Le.exec(e);return r?r[1]?t(r[1]):n:!1},dt=e=>e===`position`||e===`percentage`,ft=e=>e===`image`||e===`url`,pt=e=>e===`length`||e===`size`||e===`bg-size`,mt=e=>e===`length`,ht=e=>e===`number`,gt=e=>e===`family-name`,_t=e=>e===`number`||e===`weight`,vt=e=>e===`shadow`,yt=Pe(()=>{let e=U(`color`),t=U(`font`),n=U(`text`),r=U(`font-weight`),i=U(`tracking`),a=U(`leading`),o=U(`breakpoint`),s=U(`container`),c=U(`spacing`),l=U(`radius`),u=U(`shadow`),d=U(`inset-shadow`),f=U(`text-shadow`),p=U(`drop-shadow`),m=U(`blur`),h=U(`perspective`),g=U(`aspect`),_=U(`ease`),v=U(`animate`),y=()=>[`auto`,`avoid`,`all`,`avoid-page`,`page`,`left`,`right`,`column`],b=()=>[`center`,`top`,`bottom`,`left`,`right`,`top-left`,`left-top`,`top-right`,`right-top`,`bottom-right`,`right-bottom`,`bottom-left`,`left-bottom`],ee=()=>[...b(),X,J],x=()=>[`auto`,`hidden`,`clip`,`visible`,`scroll`],S=()=>[`auto`,`contain`,`none`],C=()=>[X,J,c],w=()=>[W,`full`,`auto`,...C()],T=()=>[K,`none`,`subgrid`,X,J],te=()=>[`auto`,{span:[`full`,K,X,J]},K,X,J],E=()=>[K,`auto`,X,J],ne=()=>[`auto`,`min`,`max`,`fr`,X,J],D=()=>[`start`,`end`,`center`,`between`,`around`,`evenly`,`stretch`,`baseline`,`center-safe`,`end-safe`],O=()=>[`start`,`end`,`center`,`stretch`,`center-safe`,`end-safe`],k=()=>[`auto`,...C()],A=()=>[W,`auto`,`full`,`dvw`,`dvh`,`lvw`,`lvh`,`svw`,`svh`,`min`,`max`,`fit`,...C()],re=()=>[W,`screen`,`full`,`dvw`,`lvw`,`svw`,`min`,`max`,`fit`,...C()],j=()=>[W,`screen`,`full`,`lh`,`dvh`,`lvh`,`svh`,`min`,`max`,`fit`,...C()],M=()=>[e,X,J],ie=()=>[...b(),ot,tt,{position:[X,J]}],ae=()=>[`no-repeat`,{repeat:[``,`x`,`y`,`space`,`round`]}],oe=()=>[`auto`,`cover`,`contain`,st,Ze,{size:[X,J]}],N=()=>[We,it,Y],P=()=>[``,`none`,`full`,l,X,J],F=()=>[``,G,it,Y],I=()=>[`solid`,`dashed`,`dotted`,`double`],se=()=>[`normal`,`multiply`,`screen`,`overlay`,`darken`,`lighten`,`color-dodge`,`color-burn`,`hard-light`,`soft-light`,`difference`,`exclusion`,`hue`,`saturation`,`color`,`luminosity`],L=()=>[G,We,ot,tt],ce=()=>[``,`none`,m,X,J],le=()=>[`none`,G,X,J],R=()=>[`none`,G,X,J],ue=()=>[G,X,J],z=()=>[W,`full`,...C()];return{cacheSize:500,theme:{animate:[`spin`,`ping`,`pulse`,`bounce`],aspect:[`video`],blur:[q],breakpoint:[q],color:[Ge],container:[q],"drop-shadow":[q],ease:[`in`,`out`,`in-out`],font:[Xe],"font-weight":[`thin`,`extralight`,`light`,`normal`,`medium`,`semibold`,`bold`,`extrabold`,`black`],"inset-shadow":[q],leading:[`none`,`tight`,`snug`,`normal`,`relaxed`,`loose`],perspective:[`dramatic`,`near`,`normal`,`midrange`,`distant`,`none`],radius:[q],shadow:[q],spacing:[`px`,G],text:[q],"text-shadow":[q],tracking:[`tighter`,`tight`,`normal`,`wide`,`wider`,`widest`]},classGroups:{aspect:[{aspect:[`auto`,`square`,W,J,X,g]}],container:[`container`],columns:[{columns:[G,J,X,s]}],"break-after":[{"break-after":y()}],"break-before":[{"break-before":y()}],"break-inside":[{"break-inside":[`auto`,`avoid`,`avoid-page`,`avoid-column`]}],"box-decoration":[{"box-decoration":[`slice`,`clone`]}],box:[{box:[`border`,`content`]}],display:[`block`,`inline-block`,`inline`,`flex`,`inline-flex`,`table`,`inline-table`,`table-caption`,`table-cell`,`table-column`,`table-column-group`,`table-footer-group`,`table-header-group`,`table-row-group`,`table-row`,`flow-root`,`grid`,`inline-grid`,`contents`,`list-item`,`hidden`],sr:[`sr-only`,`not-sr-only`],float:[{float:[`right`,`left`,`none`,`start`,`end`]}],clear:[{clear:[`left`,`right`,`both`,`none`,`start`,`end`]}],isolation:[`isolate`,`isolation-auto`],"object-fit":[{object:[`contain`,`cover`,`fill`,`none`,`scale-down`]}],"object-position":[{object:ee()}],overflow:[{overflow:x()}],"overflow-x":[{"overflow-x":x()}],"overflow-y":[{"overflow-y":x()}],overscroll:[{overscroll:S()}],"overscroll-x":[{"overscroll-x":S()}],"overscroll-y":[{"overscroll-y":S()}],position:[`static`,`fixed`,`absolute`,`relative`,`sticky`],inset:[{inset:w()}],"inset-x":[{"inset-x":w()}],"inset-y":[{"inset-y":w()}],start:[{"inset-s":w(),start:w()}],end:[{"inset-e":w(),end:w()}],"inset-bs":[{"inset-bs":w()}],"inset-be":[{"inset-be":w()}],top:[{top:w()}],right:[{right:w()}],bottom:[{bottom:w()}],left:[{left:w()}],visibility:[`visible`,`invisible`,`collapse`],z:[{z:[K,`auto`,X,J]}],basis:[{basis:[W,`full`,`auto`,s,...C()]}],"flex-direction":[{flex:[`row`,`row-reverse`,`col`,`col-reverse`]}],"flex-wrap":[{flex:[`nowrap`,`wrap`,`wrap-reverse`]}],flex:[{flex:[G,W,`auto`,`initial`,`none`,J]}],grow:[{grow:[``,G,X,J]}],shrink:[{shrink:[``,G,X,J]}],order:[{order:[K,`first`,`last`,`none`,X,J]}],"grid-cols":[{"grid-cols":T()}],"col-start-end":[{col:te()}],"col-start":[{"col-start":E()}],"col-end":[{"col-end":E()}],"grid-rows":[{"grid-rows":T()}],"row-start-end":[{row:te()}],"row-start":[{"row-start":E()}],"row-end":[{"row-end":E()}],"grid-flow":[{"grid-flow":[`row`,`col`,`dense`,`row-dense`,`col-dense`]}],"auto-cols":[{"auto-cols":ne()}],"auto-rows":[{"auto-rows":ne()}],gap:[{gap:C()}],"gap-x":[{"gap-x":C()}],"gap-y":[{"gap-y":C()}],"justify-content":[{justify:[...D(),`normal`]}],"justify-items":[{"justify-items":[...O(),`normal`]}],"justify-self":[{"justify-self":[`auto`,...O()]}],"align-content":[{content:[`normal`,...D()]}],"align-items":[{items:[...O(),{baseline:[``,`last`]}]}],"align-self":[{self:[`auto`,...O(),{baseline:[``,`last`]}]}],"place-content":[{"place-content":D()}],"place-items":[{"place-items":[...O(),`baseline`]}],"place-self":[{"place-self":[`auto`,...O()]}],p:[{p:C()}],px:[{px:C()}],py:[{py:C()}],ps:[{ps:C()}],pe:[{pe:C()}],pbs:[{pbs:C()}],pbe:[{pbe:C()}],pt:[{pt:C()}],pr:[{pr:C()}],pb:[{pb:C()}],pl:[{pl:C()}],m:[{m:k()}],mx:[{mx:k()}],my:[{my:k()}],ms:[{ms:k()}],me:[{me:k()}],mbs:[{mbs:k()}],mbe:[{mbe:k()}],mt:[{mt:k()}],mr:[{mr:k()}],mb:[{mb:k()}],ml:[{ml:k()}],"space-x":[{"space-x":C()}],"space-x-reverse":[`space-x-reverse`],"space-y":[{"space-y":C()}],"space-y-reverse":[`space-y-reverse`],size:[{size:A()}],"inline-size":[{inline:[`auto`,...re()]}],"min-inline-size":[{"min-inline":[`auto`,...re()]}],"max-inline-size":[{"max-inline":[`none`,...re()]}],"block-size":[{block:[`auto`,...j()]}],"min-block-size":[{"min-block":[`auto`,...j()]}],"max-block-size":[{"max-block":[`none`,...j()]}],w:[{w:[s,`screen`,...A()]}],"min-w":[{"min-w":[s,`screen`,`none`,...A()]}],"max-w":[{"max-w":[s,`screen`,`none`,`prose`,{screen:[o]},...A()]}],h:[{h:[`screen`,`lh`,...A()]}],"min-h":[{"min-h":[`screen`,`lh`,`none`,...A()]}],"max-h":[{"max-h":[`screen`,`lh`,...A()]}],"font-size":[{text:[`base`,n,it,Y]}],"font-smoothing":[`antialiased`,`subpixel-antialiased`],"font-style":[`italic`,`not-italic`],"font-weight":[{font:[r,ut,$e]}],"font-stretch":[{"font-stretch":[`ultra-condensed`,`extra-condensed`,`condensed`,`semi-condensed`,`normal`,`semi-expanded`,`expanded`,`extra-expanded`,`ultra-expanded`,We,J]}],"font-family":[{font:[at,et,t]}],"font-features":[{"font-features":[J]}],"fvn-normal":[`normal-nums`],"fvn-ordinal":[`ordinal`],"fvn-slashed-zero":[`slashed-zero`],"fvn-figure":[`lining-nums`,`oldstyle-nums`],"fvn-spacing":[`proportional-nums`,`tabular-nums`],"fvn-fraction":[`diagonal-fractions`,`stacked-fractions`],tracking:[{tracking:[i,X,J]}],"line-clamp":[{"line-clamp":[G,`none`,X,Qe]}],leading:[{leading:[a,...C()]}],"list-image":[{"list-image":[`none`,X,J]}],"list-style-position":[{list:[`inside`,`outside`]}],"list-style-type":[{list:[`disc`,`decimal`,`none`,X,J]}],"text-alignment":[{text:[`left`,`center`,`right`,`justify`,`start`,`end`]}],"placeholder-color":[{placeholder:M()}],"text-color":[{text:M()}],"text-decoration":[`underline`,`overline`,`line-through`,`no-underline`],"text-decoration-style":[{decoration:[...I(),`wavy`]}],"text-decoration-thickness":[{decoration:[G,`from-font`,`auto`,X,Y]}],"text-decoration-color":[{decoration:M()}],"underline-offset":[{"underline-offset":[G,`auto`,X,J]}],"text-transform":[`uppercase`,`lowercase`,`capitalize`,`normal-case`],"text-overflow":[`truncate`,`text-ellipsis`,`text-clip`],"text-wrap":[{text:[`wrap`,`nowrap`,`balance`,`pretty`]}],indent:[{indent:C()}],"vertical-align":[{align:[`baseline`,`top`,`middle`,`bottom`,`text-top`,`text-bottom`,`sub`,`super`,X,J]}],whitespace:[{whitespace:[`normal`,`nowrap`,`pre`,`pre-line`,`pre-wrap`,`break-spaces`]}],break:[{break:[`normal`,`words`,`all`,`keep`]}],wrap:[{wrap:[`break-word`,`anywhere`,`normal`]}],hyphens:[{hyphens:[`none`,`manual`,`auto`]}],content:[{content:[`none`,X,J]}],"bg-attachment":[{bg:[`fixed`,`local`,`scroll`]}],"bg-clip":[{"bg-clip":[`border`,`padding`,`content`,`text`]}],"bg-origin":[{"bg-origin":[`border`,`padding`,`content`]}],"bg-position":[{bg:ie()}],"bg-repeat":[{bg:ae()}],"bg-size":[{bg:oe()}],"bg-image":[{bg:[`none`,{linear:[{to:[`t`,`tr`,`r`,`br`,`b`,`bl`,`l`,`tl`]},K,X,J],radial:[``,X,J],conic:[K,X,J]},ct,nt]}],"bg-color":[{bg:M()}],"gradient-from-pos":[{from:N()}],"gradient-via-pos":[{via:N()}],"gradient-to-pos":[{to:N()}],"gradient-from":[{from:M()}],"gradient-via":[{via:M()}],"gradient-to":[{to:M()}],rounded:[{rounded:P()}],"rounded-s":[{"rounded-s":P()}],"rounded-e":[{"rounded-e":P()}],"rounded-t":[{"rounded-t":P()}],"rounded-r":[{"rounded-r":P()}],"rounded-b":[{"rounded-b":P()}],"rounded-l":[{"rounded-l":P()}],"rounded-ss":[{"rounded-ss":P()}],"rounded-se":[{"rounded-se":P()}],"rounded-ee":[{"rounded-ee":P()}],"rounded-es":[{"rounded-es":P()}],"rounded-tl":[{"rounded-tl":P()}],"rounded-tr":[{"rounded-tr":P()}],"rounded-br":[{"rounded-br":P()}],"rounded-bl":[{"rounded-bl":P()}],"border-w":[{border:F()}],"border-w-x":[{"border-x":F()}],"border-w-y":[{"border-y":F()}],"border-w-s":[{"border-s":F()}],"border-w-e":[{"border-e":F()}],"border-w-bs":[{"border-bs":F()}],"border-w-be":[{"border-be":F()}],"border-w-t":[{"border-t":F()}],"border-w-r":[{"border-r":F()}],"border-w-b":[{"border-b":F()}],"border-w-l":[{"border-l":F()}],"divide-x":[{"divide-x":F()}],"divide-x-reverse":[`divide-x-reverse`],"divide-y":[{"divide-y":F()}],"divide-y-reverse":[`divide-y-reverse`],"border-style":[{border:[...I(),`hidden`,`none`]}],"divide-style":[{divide:[...I(),`hidden`,`none`]}],"border-color":[{border:M()}],"border-color-x":[{"border-x":M()}],"border-color-y":[{"border-y":M()}],"border-color-s":[{"border-s":M()}],"border-color-e":[{"border-e":M()}],"border-color-bs":[{"border-bs":M()}],"border-color-be":[{"border-be":M()}],"border-color-t":[{"border-t":M()}],"border-color-r":[{"border-r":M()}],"border-color-b":[{"border-b":M()}],"border-color-l":[{"border-l":M()}],"divide-color":[{divide:M()}],"outline-style":[{outline:[...I(),`none`,`hidden`]}],"outline-offset":[{"outline-offset":[G,X,J]}],"outline-w":[{outline:[``,G,it,Y]}],"outline-color":[{outline:M()}],shadow:[{shadow:[``,`none`,u,lt,rt]}],"shadow-color":[{shadow:M()}],"inset-shadow":[{"inset-shadow":[`none`,d,lt,rt]}],"inset-shadow-color":[{"inset-shadow":M()}],"ring-w":[{ring:F()}],"ring-w-inset":[`ring-inset`],"ring-color":[{ring:M()}],"ring-offset-w":[{"ring-offset":[G,Y]}],"ring-offset-color":[{"ring-offset":M()}],"inset-ring-w":[{"inset-ring":F()}],"inset-ring-color":[{"inset-ring":M()}],"text-shadow":[{"text-shadow":[`none`,f,lt,rt]}],"text-shadow-color":[{"text-shadow":M()}],opacity:[{opacity:[G,X,J]}],"mix-blend":[{"mix-blend":[...se(),`plus-darker`,`plus-lighter`]}],"bg-blend":[{"bg-blend":se()}],"mask-clip":[{"mask-clip":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]},`mask-no-clip`],"mask-composite":[{mask:[`add`,`subtract`,`intersect`,`exclude`]}],"mask-image-linear-pos":[{"mask-linear":[G]}],"mask-image-linear-from-pos":[{"mask-linear-from":L()}],"mask-image-linear-to-pos":[{"mask-linear-to":L()}],"mask-image-linear-from-color":[{"mask-linear-from":M()}],"mask-image-linear-to-color":[{"mask-linear-to":M()}],"mask-image-t-from-pos":[{"mask-t-from":L()}],"mask-image-t-to-pos":[{"mask-t-to":L()}],"mask-image-t-from-color":[{"mask-t-from":M()}],"mask-image-t-to-color":[{"mask-t-to":M()}],"mask-image-r-from-pos":[{"mask-r-from":L()}],"mask-image-r-to-pos":[{"mask-r-to":L()}],"mask-image-r-from-color":[{"mask-r-from":M()}],"mask-image-r-to-color":[{"mask-r-to":M()}],"mask-image-b-from-pos":[{"mask-b-from":L()}],"mask-image-b-to-pos":[{"mask-b-to":L()}],"mask-image-b-from-color":[{"mask-b-from":M()}],"mask-image-b-to-color":[{"mask-b-to":M()}],"mask-image-l-from-pos":[{"mask-l-from":L()}],"mask-image-l-to-pos":[{"mask-l-to":L()}],"mask-image-l-from-color":[{"mask-l-from":M()}],"mask-image-l-to-color":[{"mask-l-to":M()}],"mask-image-x-from-pos":[{"mask-x-from":L()}],"mask-image-x-to-pos":[{"mask-x-to":L()}],"mask-image-x-from-color":[{"mask-x-from":M()}],"mask-image-x-to-color":[{"mask-x-to":M()}],"mask-image-y-from-pos":[{"mask-y-from":L()}],"mask-image-y-to-pos":[{"mask-y-to":L()}],"mask-image-y-from-color":[{"mask-y-from":M()}],"mask-image-y-to-color":[{"mask-y-to":M()}],"mask-image-radial":[{"mask-radial":[X,J]}],"mask-image-radial-from-pos":[{"mask-radial-from":L()}],"mask-image-radial-to-pos":[{"mask-radial-to":L()}],"mask-image-radial-from-color":[{"mask-radial-from":M()}],"mask-image-radial-to-color":[{"mask-radial-to":M()}],"mask-image-radial-shape":[{"mask-radial":[`circle`,`ellipse`]}],"mask-image-radial-size":[{"mask-radial":[{closest:[`side`,`corner`],farthest:[`side`,`corner`]}]}],"mask-image-radial-pos":[{"mask-radial-at":b()}],"mask-image-conic-pos":[{"mask-conic":[G]}],"mask-image-conic-from-pos":[{"mask-conic-from":L()}],"mask-image-conic-to-pos":[{"mask-conic-to":L()}],"mask-image-conic-from-color":[{"mask-conic-from":M()}],"mask-image-conic-to-color":[{"mask-conic-to":M()}],"mask-mode":[{mask:[`alpha`,`luminance`,`match`]}],"mask-origin":[{"mask-origin":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]}],"mask-position":[{mask:ie()}],"mask-repeat":[{mask:ae()}],"mask-size":[{mask:oe()}],"mask-type":[{"mask-type":[`alpha`,`luminance`]}],"mask-image":[{mask:[`none`,X,J]}],filter:[{filter:[``,`none`,X,J]}],blur:[{blur:ce()}],brightness:[{brightness:[G,X,J]}],contrast:[{contrast:[G,X,J]}],"drop-shadow":[{"drop-shadow":[``,`none`,p,lt,rt]}],"drop-shadow-color":[{"drop-shadow":M()}],grayscale:[{grayscale:[``,G,X,J]}],"hue-rotate":[{"hue-rotate":[G,X,J]}],invert:[{invert:[``,G,X,J]}],saturate:[{saturate:[G,X,J]}],sepia:[{sepia:[``,G,X,J]}],"backdrop-filter":[{"backdrop-filter":[``,`none`,X,J]}],"backdrop-blur":[{"backdrop-blur":ce()}],"backdrop-brightness":[{"backdrop-brightness":[G,X,J]}],"backdrop-contrast":[{"backdrop-contrast":[G,X,J]}],"backdrop-grayscale":[{"backdrop-grayscale":[``,G,X,J]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[G,X,J]}],"backdrop-invert":[{"backdrop-invert":[``,G,X,J]}],"backdrop-opacity":[{"backdrop-opacity":[G,X,J]}],"backdrop-saturate":[{"backdrop-saturate":[G,X,J]}],"backdrop-sepia":[{"backdrop-sepia":[``,G,X,J]}],"border-collapse":[{border:[`collapse`,`separate`]}],"border-spacing":[{"border-spacing":C()}],"border-spacing-x":[{"border-spacing-x":C()}],"border-spacing-y":[{"border-spacing-y":C()}],"table-layout":[{table:[`auto`,`fixed`]}],caption:[{caption:[`top`,`bottom`]}],transition:[{transition:[``,`all`,`colors`,`opacity`,`shadow`,`transform`,`none`,X,J]}],"transition-behavior":[{transition:[`normal`,`discrete`]}],duration:[{duration:[G,`initial`,X,J]}],ease:[{ease:[`linear`,`initial`,_,X,J]}],delay:[{delay:[G,X,J]}],animate:[{animate:[`none`,v,X,J]}],backface:[{backface:[`hidden`,`visible`]}],perspective:[{perspective:[h,X,J]}],"perspective-origin":[{"perspective-origin":ee()}],rotate:[{rotate:le()}],"rotate-x":[{"rotate-x":le()}],"rotate-y":[{"rotate-y":le()}],"rotate-z":[{"rotate-z":le()}],scale:[{scale:R()}],"scale-x":[{"scale-x":R()}],"scale-y":[{"scale-y":R()}],"scale-z":[{"scale-z":R()}],"scale-3d":[`scale-3d`],skew:[{skew:ue()}],"skew-x":[{"skew-x":ue()}],"skew-y":[{"skew-y":ue()}],transform:[{transform:[X,J,``,`none`,`gpu`,`cpu`]}],"transform-origin":[{origin:ee()}],"transform-style":[{transform:[`3d`,`flat`]}],translate:[{translate:z()}],"translate-x":[{"translate-x":z()}],"translate-y":[{"translate-y":z()}],"translate-z":[{"translate-z":z()}],"translate-none":[`translate-none`],accent:[{accent:M()}],appearance:[{appearance:[`none`,`auto`]}],"caret-color":[{caret:M()}],"color-scheme":[{scheme:[`normal`,`dark`,`light`,`light-dark`,`only-dark`,`only-light`]}],cursor:[{cursor:[`auto`,`default`,`pointer`,`wait`,`text`,`move`,`help`,`not-allowed`,`none`,`context-menu`,`progress`,`cell`,`crosshair`,`vertical-text`,`alias`,`copy`,`no-drop`,`grab`,`grabbing`,`all-scroll`,`col-resize`,`row-resize`,`n-resize`,`e-resize`,`s-resize`,`w-resize`,`ne-resize`,`nw-resize`,`se-resize`,`sw-resize`,`ew-resize`,`ns-resize`,`nesw-resize`,`nwse-resize`,`zoom-in`,`zoom-out`,X,J]}],"field-sizing":[{"field-sizing":[`fixed`,`content`]}],"pointer-events":[{"pointer-events":[`auto`,`none`]}],resize:[{resize:[`none`,``,`y`,`x`]}],"scroll-behavior":[{scroll:[`auto`,`smooth`]}],"scroll-m":[{"scroll-m":C()}],"scroll-mx":[{"scroll-mx":C()}],"scroll-my":[{"scroll-my":C()}],"scroll-ms":[{"scroll-ms":C()}],"scroll-me":[{"scroll-me":C()}],"scroll-mbs":[{"scroll-mbs":C()}],"scroll-mbe":[{"scroll-mbe":C()}],"scroll-mt":[{"scroll-mt":C()}],"scroll-mr":[{"scroll-mr":C()}],"scroll-mb":[{"scroll-mb":C()}],"scroll-ml":[{"scroll-ml":C()}],"scroll-p":[{"scroll-p":C()}],"scroll-px":[{"scroll-px":C()}],"scroll-py":[{"scroll-py":C()}],"scroll-ps":[{"scroll-ps":C()}],"scroll-pe":[{"scroll-pe":C()}],"scroll-pbs":[{"scroll-pbs":C()}],"scroll-pbe":[{"scroll-pbe":C()}],"scroll-pt":[{"scroll-pt":C()}],"scroll-pr":[{"scroll-pr":C()}],"scroll-pb":[{"scroll-pb":C()}],"scroll-pl":[{"scroll-pl":C()}],"snap-align":[{snap:[`start`,`end`,`center`,`align-none`]}],"snap-stop":[{snap:[`normal`,`always`]}],"snap-type":[{snap:[`none`,`x`,`y`,`both`]}],"snap-strictness":[{snap:[`mandatory`,`proximity`]}],touch:[{touch:[`auto`,`none`,`manipulation`]}],"touch-x":[{"touch-pan":[`x`,`left`,`right`]}],"touch-y":[{"touch-pan":[`y`,`up`,`down`]}],"touch-pz":[`touch-pinch-zoom`],select:[{select:[`none`,`text`,`all`,`auto`]}],"will-change":[{"will-change":[`auto`,`scroll`,`contents`,`transform`,X,J]}],fill:[{fill:[`none`,...M()]}],"stroke-w":[{stroke:[G,it,Y,Qe]}],stroke:[{stroke:[`none`,...M()]}],"forced-color-adjust":[{"forced-color-adjust":[`auto`,`none`]}]},conflictingClassGroups:{overflow:[`overflow-x`,`overflow-y`],overscroll:[`overscroll-x`,`overscroll-y`],inset:[`inset-x`,`inset-y`,`inset-bs`,`inset-be`,`start`,`end`,`top`,`right`,`bottom`,`left`],"inset-x":[`right`,`left`],"inset-y":[`top`,`bottom`],flex:[`basis`,`grow`,`shrink`],gap:[`gap-x`,`gap-y`],p:[`px`,`py`,`ps`,`pe`,`pbs`,`pbe`,`pt`,`pr`,`pb`,`pl`],px:[`pr`,`pl`],py:[`pt`,`pb`],m:[`mx`,`my`,`ms`,`me`,`mbs`,`mbe`,`mt`,`mr`,`mb`,`ml`],mx:[`mr`,`ml`],my:[`mt`,`mb`],size:[`w`,`h`],"font-size":[`leading`],"fvn-normal":[`fvn-ordinal`,`fvn-slashed-zero`,`fvn-figure`,`fvn-spacing`,`fvn-fraction`],"fvn-ordinal":[`fvn-normal`],"fvn-slashed-zero":[`fvn-normal`],"fvn-figure":[`fvn-normal`],"fvn-spacing":[`fvn-normal`],"fvn-fraction":[`fvn-normal`],"line-clamp":[`display`,`overflow`],rounded:[`rounded-s`,`rounded-e`,`rounded-t`,`rounded-r`,`rounded-b`,`rounded-l`,`rounded-ss`,`rounded-se`,`rounded-ee`,`rounded-es`,`rounded-tl`,`rounded-tr`,`rounded-br`,`rounded-bl`],"rounded-s":[`rounded-ss`,`rounded-es`],"rounded-e":[`rounded-se`,`rounded-ee`],"rounded-t":[`rounded-tl`,`rounded-tr`],"rounded-r":[`rounded-tr`,`rounded-br`],"rounded-b":[`rounded-br`,`rounded-bl`],"rounded-l":[`rounded-tl`,`rounded-bl`],"border-spacing":[`border-spacing-x`,`border-spacing-y`],"border-w":[`border-w-x`,`border-w-y`,`border-w-s`,`border-w-e`,`border-w-bs`,`border-w-be`,`border-w-t`,`border-w-r`,`border-w-b`,`border-w-l`],"border-w-x":[`border-w-r`,`border-w-l`],"border-w-y":[`border-w-t`,`border-w-b`],"border-color":[`border-color-x`,`border-color-y`,`border-color-s`,`border-color-e`,`border-color-bs`,`border-color-be`,`border-color-t`,`border-color-r`,`border-color-b`,`border-color-l`],"border-color-x":[`border-color-r`,`border-color-l`],"border-color-y":[`border-color-t`,`border-color-b`],translate:[`translate-x`,`translate-y`,`translate-none`],"translate-none":[`translate`,`translate-x`,`translate-y`,`translate-z`],"scroll-m":[`scroll-mx`,`scroll-my`,`scroll-ms`,`scroll-me`,`scroll-mbs`,`scroll-mbe`,`scroll-mt`,`scroll-mr`,`scroll-mb`,`scroll-ml`],"scroll-mx":[`scroll-mr`,`scroll-ml`],"scroll-my":[`scroll-mt`,`scroll-mb`],"scroll-p":[`scroll-px`,`scroll-py`,`scroll-ps`,`scroll-pe`,`scroll-pbs`,`scroll-pbe`,`scroll-pt`,`scroll-pr`,`scroll-pb`,`scroll-pl`],"scroll-px":[`scroll-pr`,`scroll-pl`],"scroll-py":[`scroll-pt`,`scroll-pb`],touch:[`touch-x`,`touch-y`,`touch-pz`],"touch-x":[`touch`],"touch-y":[`touch`],"touch-pz":[`touch`]},conflictingClassGroupModifiers:{"font-size":[`leading`]},orderSensitiveModifiers:[`*`,`**`,`after`,`backdrop`,`before`,`details-content`,`file`,`first-letter`,`first-line`,`marker`,`placeholder`,`selection`]}});function bt({selector:e,label:i,pulse:a=!0}){let[o,s]=(0,t.useState)(null),c=(0,t.useRef)(0);return(0,t.useEffect)(()=>{let t=()=>{let n=document.querySelector(e);if(!n){s(null);return}let r=n.getBoundingClientRect();s({top:r.top+window.scrollY,left:r.left+window.scrollX,width:r.width,height:r.height}),c.current=requestAnimationFrame(t)};return c.current=requestAnimationFrame(t),window.addEventListener(`resize`,t),window.addEventListener(`scroll`,t,!0),()=>{c.current&&cancelAnimationFrame(c.current),window.removeEventListener(`resize`,t),window.removeEventListener(`scroll`,t,!0)}},[e]),o?(0,r.jsx)(n.AnimatePresence,{children:(0,r.jsxs)(n.motion.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},className:`fixed pointer-events-none z-[9999]`,style:{top:o.top-8,left:o.left-8,width:o.width+16,height:o.height+16},children:[(0,r.jsx)(n.motion.div,{className:`absolute inset-0 rounded-xl border-2 border-indigo-500`,animate:a?{boxShadow:[`0 0 0px rgba(99,102,241,0)`,`0 0 20px rgba(99,102,241,0.4)`,`0 0 0px rgba(99,102,241,0)`]}:{},transition:{repeat:1/0,duration:2}}),i&&(0,r.jsx)(`div`,{className:`absolute -top-8 left-1/2 -translate-x-1/2 whitespace-nowrap bg-indigo-600 text-white text-xs font-bold px-3 py-1 rounded-lg shadow-lg`,children:i})]})}):null}function $(...e){return yt(ce(e))}var xt=({content:e})=>(0,r.jsx)(`div`,{className:`bg-white dark:bg-slate-800 text-slate-700 dark:text-slate-300 border border-slate-100 dark:border-slate-700 rounded-2xl rounded-tl-sm p-4 text-sm shadow-sm w-fit max-w-[90%]`,children:e}),St=({targetField:e,value:t,onChange:n})=>(0,r.jsxs)(`div`,{className:`bg-indigo-50/50 dark:bg-indigo-900/10 border border-indigo-100 dark:border-indigo-800/30 rounded-2xl p-4 space-y-2 w-full max-w-[90%]`,children:[(0,r.jsxs)(`div`,{className:`flex items-center space-x-2 text-[10px] font-bold text-indigo-500 uppercase tracking-widest`,children:[(0,r.jsx)(I,{size:12}),(0,r.jsxs)(`span`,{children:[`Manual Entry: `,e]})]}),(0,r.jsx)(`input`,{value:String(t||``),onChange:e=>n(e.target.value),className:`w-full bg-white dark:bg-slate-900 border border-slate-200 dark:border-slate-800 rounded-xl px-4 py-2.5 text-sm outline-none focus:ring-2 focus:ring-indigo-500 shadow-sm transition-all text-slate-900 dark:text-white`,placeholder:`Type ${e}...`})]}),Ct=({targetField:e,value:t,options:n,onChange:i})=>(0,r.jsxs)(`div`,{className:`bg-indigo-50/50 dark:bg-indigo-900/10 border border-indigo-100 dark:border-indigo-800/30 rounded-2xl p-4 space-y-2 w-full max-w-[90%]`,children:[(0,r.jsxs)(`div`,{className:`flex items-center space-x-2 text-[10px] font-bold text-indigo-500 uppercase tracking-widest`,children:[(0,r.jsx)(oe,{size:12}),(0,r.jsxs)(`span`,{children:[`Select for: `,e]})]}),(0,r.jsxs)(`div`,{className:`relative`,children:[(0,r.jsxs)(`select`,{value:String(t||``),onChange:e=>i(e.target.value),className:`w-full bg-white dark:bg-slate-900 border border-slate-200 dark:border-slate-800 rounded-xl px-4 py-2.5 text-sm outline-none focus:ring-2 focus:ring-indigo-500 shadow-sm transition-all appearance-none text-slate-900 dark:text-white`,children:[(0,r.jsx)(`option`,{value:``,disabled:!0,children:`Select option...`}),n?.map((e,t)=>(0,r.jsx)(`option`,{value:String(e.value),children:e.label},t))]}),(0,r.jsx)(`div`,{className:`absolute right-3 top-1/2 -translate-y-1/2 pointer-events-none text-slate-400`,children:(0,r.jsx)(j,{size:16,className:`rotate-90`})})]})]}),wt=({actions:e,onAction:t,onNext:n,onPrev:i})=>(0,r.jsx)(`div`,{className:`flex flex-col items-end space-y-2 mt-2 w-full`,children:e.map((e,a)=>(0,r.jsxs)(`button`,{onClick:()=>{t(e),e.type===`next`&&n(),e.type===`prev`&&i()},className:`bg-indigo-600 hover:bg-indigo-700 text-white text-sm font-semibold py-2.5 px-5 rounded-2xl rounded-tr-sm shadow-lg shadow-indigo-500/10 transition-all active:scale-95 flex items-center space-x-2`,children:[(0,r.jsx)(`span`,{children:e.label}),e.type===`next`&&(0,r.jsx)(j,{size:16})]},a))}),Tt=({action:e,result:t})=>{let n={running:{icon:N,color:`text-blue-500`,bg:`bg-blue-50 dark:bg-blue-900/10`,border:`border-blue-200 dark:border-blue-800/30`,label:`Executing...`},success:{icon:ie,color:`text-emerald-500`,bg:`bg-emerald-50 dark:bg-emerald-900/10`,border:`border-emerald-200 dark:border-emerald-800/30`,label:`Completed`},failed:{icon:M,color:`text-rose-500`,bg:`bg-rose-50 dark:bg-rose-900/10`,border:`border-rose-200 dark:border-rose-800/30`,label:`Failed`},cancelled:{icon:ae,color:`text-slate-400`,bg:`bg-slate-50 dark:bg-slate-800/10`,border:`border-slate-200 dark:border-slate-700/30`,label:`Cancelled`},skipped:{icon:j,color:`text-amber-500`,bg:`bg-amber-50 dark:bg-amber-900/10`,border:`border-amber-200 dark:border-amber-800/30`,label:`Skipped`},pending:{icon:N,color:`text-slate-400`,bg:`bg-slate-50 dark:bg-slate-800/10`,border:`border-slate-200 dark:border-slate-700/30`,label:`Pending`}}[t.status],i=n.icon,a=e.label||e.type;return(0,r.jsxs)(`div`,{className:$(`flex flex-col space-y-1 px-4 py-2.5 rounded-xl border text-sm`,n.bg,n.border),children:[(0,r.jsxs)(`div`,{className:`flex items-center space-x-3`,children:[(0,r.jsx)(i,{size:16,className:$(n.color,t.status===`running`&&`animate-spin`)}),(0,r.jsx)(`span`,{className:$(`font-medium`,n.color),children:a})]}),(0,r.jsxs)(`div`,{className:`flex items-center space-x-2 ml-7`,children:[(0,r.jsx)(`span`,{className:`text-xs text-slate-400`,children:n.label}),t.error&&(0,r.jsxs)(`span`,{className:`text-xs text-rose-400`,children:[`ยท `,t.error]}),t.attempts>1&&(0,r.jsxs)(`span`,{className:`text-xs text-slate-400`,children:[`ยท (`,t.attempts,` attempts)`]})]})]})},Et=({bubble:e,fieldValues:t,onFill:n,onNext:i,onPrev:a,onInteraction:o})=>{switch(e.type){case`message`:return(0,r.jsx)(xt,{content:e.content});case`input`:return(0,r.jsx)(St,{targetField:e.targetField,value:t[e.targetField],onChange:t=>{n(e.targetField,t)}});case`select`:return(0,r.jsx)(Ct,{targetField:e.targetField,options:e.options,value:t[e.targetField],onChange:t=>{n(e.targetField,t)}});case`action-group`:return(0,r.jsx)(wt,{actions:e.actions||[],onNext:i,onPrev:a,onAction:e=>{if(e.type===`fill_field`&&e.data){let t=e.data;n(t.field,t.value),o(`Auto-filled ${t.field} with ${t.value}`)}else if(e.type===`click`&&e.data){let t=e.data,n=document.querySelector(t.selector);n&&(n.click(),o(`Clicked: ${t.selector}`))}else e.onClick?(e.onClick(),o(`Performed action: ${e.label}`)):o(`Clicked: ${e.label}`)}});default:return null}};function Dt({className:e}){let i=b(),{activeMission:a,currentStep:o,nextStep:s,prevStep:c,fillField:l,fieldErrors:u,fieldValues:d,executionContext:f,cancelExecution:p}=x({debug:!1}),[m,h]=(0,t.useState)(!1),[g,_]=(0,t.useState)(!1),v=(0,t.useRef)(null),[y,ee]=(0,t.useState)(null);(0,t.useEffect)(()=>{h(!!i.activeMissionId&&!i.isPaused)},[i.activeMissionId,i.isPaused]),(0,t.useEffect)(()=>{if(o&&o.id!==y){_(!0);let e=setTimeout(()=>{_(!1),ee(o.id)},1200);return()=>clearTimeout(e)}},[o,y]);let S=(0,t.useMemo)(()=>{if(!a)return[];let e=[],t=a.steps.findIndex(e=>e.id===y);return t===-1||a.steps.slice(0,t+1).forEach(t=>{e.push({id:`sys-${t.id}`,role:`system`,content:t.content});let n=i.interactionHistory.find(e=>e.stepId===t.id);n&&e.push({id:`usr-${t.id}`,role:`user`,content:n.actionText})}),e},[a,y,i.interactionHistory]);if((0,t.useEffect)(()=>{v.current&&(v.current.scrollTop=v.current.scrollHeight)},[S,g]),!a||!o){let e=Object.values(i.tourHistory).find(e=>!e.completed&&e.lastAccessed>Date.now()-10080*60*1e3);if(e){let t=i.missions[e.missionId];if(t)return(0,r.jsx)(n.motion.div,{initial:{opacity:0,x:20},animate:{opacity:1,x:0},exit:{opacity:0,x:20},className:`h-screen w-[400px] bg-white/95 dark:bg-slate-900/95 backdrop-blur-xl border-l border-slate-200 dark:border-slate-800 shadow-2xl flex flex-col shrink-0 z-[60]`,children:(0,r.jsxs)(`div`,{className:`p-6 flex flex-col items-center text-center space-y-4`,children:[(0,r.jsx)(`div`,{className:`p-4 bg-amber-500/10 rounded-2xl`,children:(0,r.jsx)(P,{size:32,className:`text-amber-500`})}),(0,r.jsx)(`h3`,{className:`text-lg font-bold text-slate-900 dark:text-white`,children:`Resume Tour?`}),(0,r.jsxs)(`p`,{className:`text-sm text-slate-500 dark:text-slate-400`,children:[`You were taking the `,(0,r.jsx)(`strong`,{children:t.title}),` tour. Would you like to continue where you left off?`]}),(0,r.jsxs)(`div`,{className:`flex flex-col w-full space-y-2 pt-2`,children:[(0,r.jsxs)(`button`,{onClick:()=>{i.startMission(e.missionId),e.lastStepId&&i.goToStep(e.lastStepId)},className:`w-full py-3 rounded-xl bg-indigo-600 text-white font-semibold hover:bg-indigo-700 shadow-lg shadow-indigo-500/20 transition-all flex items-center justify-center space-x-2`,children:[(0,r.jsx)(P,{size:16}),(0,r.jsx)(`span`,{children:`Resume Tour`})]}),(0,r.jsx)(`button`,{onClick:()=>i.recordTourEntry(e.missionId,e.lastStepId,!0),className:`w-full py-3 rounded-xl border border-slate-200 dark:border-slate-700 text-slate-500 dark:text-slate-400 font-medium hover:bg-slate-50 dark:hover:bg-slate-800 transition-all text-sm`,children:`Dismiss`})]})]})})}return null}return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.AnimatePresence,{children:m&&(0,r.jsxs)(n.motion.aside,{initial:{width:0,opacity:0},animate:{width:400,opacity:1},exit:{width:0,opacity:0},transition:{type:`spring`,damping:25,stiffness:200},className:$(`h-screen overflow-hidden bg-white/95 dark:bg-slate-900/95 backdrop-blur-xl border-l border-slate-200 dark:border-slate-800 shadow-2xl flex flex-col shrink-0 z-[60]`,e),children:[(0,r.jsxs)(`div`,{className:`p-5 border-b border-slate-200 dark:border-slate-800 flex items-center justify-between bg-slate-50/50 dark:bg-slate-800/50 backdrop-blur-sm z-10 shrink-0`,children:[(0,r.jsxs)(`div`,{className:`flex items-center space-x-3 overflow-hidden`,children:[(0,r.jsxs)(`div`,{className:`relative shrink-0`,children:[(0,r.jsx)(`div`,{className:`p-2 bg-indigo-500 rounded-xl text-white shadow-lg shadow-indigo-500/30`,children:(0,r.jsx)(A,{size:20})}),(0,r.jsx)(`span`,{className:`absolute -bottom-1 -right-1 w-3 h-3 bg-emerald-500 border-2 border-white dark:border-slate-900 rounded-full`})]}),(0,r.jsxs)(`div`,{className:`min-w-0`,children:[(0,r.jsx)(`h2`,{className:`text-sm font-bold text-slate-900 dark:text-white leading-tight truncate`,children:`Chalo Guide`}),(0,r.jsx)(`p`,{className:`text-[11px] font-semibold text-slate-500 dark:text-slate-400 truncate`,children:a.title})]})]}),(0,r.jsx)(`button`,{className:`p-2 hover:bg-slate-200 dark:hover:bg-slate-700 rounded-lg text-slate-500 transition-colors shrink-0`,onClick:()=>{i.dismissAllTours(),i.resetMission()},children:(0,r.jsx)(se,{size:18})})]}),(0,r.jsxs)(`div`,{ref:v,className:`flex-1 overflow-y-auto p-5 space-y-6 scroll-smooth min-h-0`,children:[(0,r.jsxs)(n.AnimatePresence,{initial:!1,children:[S.map(e=>(0,r.jsx)(n.motion.div,{initial:{opacity:0,y:10,scale:.95},animate:{opacity:1,y:0,scale:1},className:$(`flex w-full`,e.role===`user`?`justify-end`:`justify-start`),children:(0,r.jsx)(`div`,{className:$(`max-w-[85%] rounded-2xl p-4 text-sm shadow-sm`,e.role===`user`?`bg-slate-900 dark:bg-slate-100 text-white dark:text-slate-900 rounded-tr-sm`:`bg-white dark:bg-slate-800 text-slate-700 dark:text-slate-300 border border-slate-100 dark:border-slate-700 rounded-tl-sm`),children:e.content})},e.id)),g&&(0,r.jsx)(n.motion.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},exit:{opacity:0,scale:.9},className:`flex justify-start w-full`,children:(0,r.jsxs)(`div`,{className:`bg-white dark:bg-slate-800 border border-slate-100 dark:border-slate-700 rounded-2xl rounded-tl-sm p-4 px-5 shadow-sm flex items-center space-x-1`,children:[(0,r.jsx)(n.motion.div,{className:`w-1.5 h-1.5 bg-slate-400 rounded-full`,animate:{y:[0,-3,0]},transition:{repeat:1/0,duration:.6,delay:0}}),(0,r.jsx)(n.motion.div,{className:`w-1.5 h-1.5 bg-slate-400 rounded-full`,animate:{y:[0,-3,0]},transition:{repeat:1/0,duration:.6,delay:.2}}),(0,r.jsx)(n.motion.div,{className:`w-1.5 h-1.5 bg-slate-400 rounded-full`,animate:{y:[0,-3,0]},transition:{repeat:1/0,duration:.6,delay:.4}})]})})]}),!g&&(0,r.jsxs)(n.motion.div,{initial:{opacity:0},animate:{opacity:1},className:`space-y-4`,children:[o.bubbles?.map(e=>(0,r.jsx)(`div`,{className:$(`flex w-full`,e.type===`action-group`?`justify-end`:`justify-start`),children:(0,r.jsx)(Et,{bubble:e,fieldValues:d||{},onFill:l,onNext:s,onPrev:c,onInteraction:e=>i.addInteraction(o.id,e)})},e.id)),!o.bubbles&&o.actions&&o.actions.length>0&&(0,r.jsx)(wt,{actions:o.actions,onNext:s,onPrev:c,onAction:e=>{if(e.type===`fill_field`&&e.data){let t=e.data;l(t.field,t.value),i.addInteraction(o.id,`Used auto-fill: ${t.value}`)}else if(e.type===`click`&&e.data){let t=e.data,n=document.querySelector(t.selector);n&&(n.click(),i.addInteraction(o.id,`Clicked: ${t.selector}`))}else e.onClick&&(e.onClick(),i.addInteraction(o.id,`Selected: ${e.label}`))}}),o?.actionSequence&&Object.keys(f.results).length>0&&(0,r.jsxs)(`div`,{className:`space-y-2`,children:[o.actionSequence.map(e=>{let t=f.results[e.id];return t?(0,r.jsx)(`div`,{className:`flex justify-start w-full`,children:(0,r.jsx)(Tt,{action:e,result:t})},e.id):null}),f.isRunning&&(0,r.jsxs)(`button`,{onClick:p,className:`flex items-center space-x-1 text-xs text-rose-500 hover:text-rose-600 font-medium ml-2 mt-1`,children:[(0,r.jsx)(ae,{size:12}),(0,r.jsx)(`span`,{children:`Cancel execution`})]})]})]})]}),(0,r.jsx)(`div`,{className:`p-4 bg-white dark:bg-slate-900 border-t border-slate-100 dark:border-slate-800 shrink-0`,children:(0,r.jsxs)(`div`,{className:`flex items-center justify-between space-x-2`,children:[(0,r.jsx)(`button`,{onClick:()=>{i.addInteraction(o.id,`Navigated backwards`),c()},disabled:a.steps.indexOf(o)===0,className:`p-3 text-slate-400 hover:text-slate-900 dark:hover:text-white disabled:opacity-30 transition-colors`,children:(0,r.jsx)(re,{size:20})}),(0,r.jsx)(`div`,{className:`flex-1 bg-slate-100 dark:bg-slate-800 rounded-xl px-4 py-3 flex items-center overflow-hidden`,children:(0,r.jsx)(`span`,{className:`text-sm text-slate-400 flex-1 truncate`,children:o.targetField?`Focusing on ${o.targetField}...`:`Reading...`})}),(0,r.jsx)(`button`,{onClick:()=>{if(o.targetField){let e=d[o.targetField];i.addInteraction(o.id,`Confirmed value: ${e}`)}else i.interactionHistory.find(e=>e.stepId===o.id)||i.addInteraction(o.id,`Proceeded to next step`);s()},disabled:o.targetField&&!!u?.[o.targetField]||a.steps.indexOf(o)===a.steps.length-1,className:$(`p-3 bg-indigo-600 hover:bg-indigo-700 text-white rounded-xl shadow-md active:scale-95 transition-all disabled:opacity-50`),children:a.steps.indexOf(o)===a.steps.length-1?(0,r.jsx)(ie,{size:20}):(0,r.jsx)(F,{size:20})})]})})]})}),o?.targetElement&&(0,r.jsx)(bt,{selector:o.targetElement,label:o.title})]})}exports.SmartDrawer=Dt,exports.TargetHighlight=bt,exports.useChalo=x,exports.useChaloStore=b;
|
package/dist/chalo.mjs
CHANGED
|
@@ -180,9 +180,9 @@ var ee = {
|
|
|
180
180
|
wait: S,
|
|
181
181
|
conditional: C,
|
|
182
182
|
navigate: w,
|
|
183
|
-
custom: async (e
|
|
184
|
-
let { handlerId:
|
|
185
|
-
throw Error(`No handler registered for custom action: ${
|
|
183
|
+
custom: async (e) => {
|
|
184
|
+
let { handlerId: t } = e;
|
|
185
|
+
throw Error(`No handler registered for custom action: ${t}`);
|
|
186
186
|
}
|
|
187
187
|
};
|
|
188
188
|
async function E(e, t) {
|
|
@@ -667,7 +667,11 @@ function A(e = {}) {
|
|
|
667
667
|
shouldTouch: !0
|
|
668
668
|
});
|
|
669
669
|
} catch {}
|
|
670
|
-
}, [
|
|
670
|
+
}, [
|
|
671
|
+
t,
|
|
672
|
+
l,
|
|
673
|
+
v
|
|
674
|
+
]);
|
|
671
675
|
return {
|
|
672
676
|
activeMissionId: u,
|
|
673
677
|
currentStepId: d,
|
|
@@ -741,7 +745,7 @@ function A(e = {}) {
|
|
|
741
745
|
};
|
|
742
746
|
}
|
|
743
747
|
//#endregion
|
|
744
|
-
//#region ../../node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js
|
|
748
|
+
//#region ../../node_modules/.pnpm/lucide-react@1.7.0_react@19.2.4/node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js
|
|
745
749
|
var re = (...e) => e.filter((e, t, n) => !!e && e.trim() !== "" && n.indexOf(e) === t).join(" ").trim(), ie = (e) => e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), j = (e) => e.replace(/^([A-Z])|[\s-_]+(\w)/g, (e, t, n) => n ? n.toUpperCase() : t.toLowerCase()), ae = (e) => {
|
|
746
750
|
let t = j(e);
|
|
747
751
|
return t.charAt(0).toUpperCase() + t.slice(1);
|
|
@@ -907,7 +911,7 @@ var re = (...e) => e.filter((e, t, n) => !!e && e.trim() !== "" && n.indexOf(e)
|
|
|
907
911
|
key: "d8bk6v"
|
|
908
912
|
}]]);
|
|
909
913
|
//#endregion
|
|
910
|
-
//#region ../../node_modules/clsx/dist/clsx.mjs
|
|
914
|
+
//#region ../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs
|
|
911
915
|
function ge(e) {
|
|
912
916
|
var t, n, r = "";
|
|
913
917
|
if (typeof e == "string" || typeof e == "number") r += e;
|
|
@@ -922,7 +926,7 @@ function _e() {
|
|
|
922
926
|
return r;
|
|
923
927
|
}
|
|
924
928
|
//#endregion
|
|
925
|
-
//#region ../../node_modules/tailwind-merge/dist/bundle-mjs.mjs
|
|
929
|
+
//#region ../../node_modules/.pnpm/tailwind-merge@3.5.0/node_modules/tailwind-merge/dist/bundle-mjs.mjs
|
|
926
930
|
var ve = (e, t) => {
|
|
927
931
|
let n = Array(e.length + t.length);
|
|
928
932
|
for (let t = 0; t < e.length; t++) n[t] = e[t];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@osiloke/chalo",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "A modern React component library for intelligent UI interactions and guided experiences",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"private": false,
|
|
@@ -42,19 +42,22 @@
|
|
|
42
42
|
"framer-motion": ">=12.0.0",
|
|
43
43
|
"react": ">=18.0.0",
|
|
44
44
|
"react-dom": ">=18.0.0",
|
|
45
|
+
"react-hook-form": ">=7.0.0",
|
|
45
46
|
"zustand": ">=5.0.0"
|
|
46
47
|
},
|
|
47
48
|
"scripts": {
|
|
48
49
|
"build": "npm run build:types && vite build && npm run copy:types",
|
|
49
50
|
"build:types": "tsc --project tsconfig.json",
|
|
50
51
|
"copy:types": "cp dist/types/index.d.ts dist/types/index.d.mts",
|
|
51
|
-
"lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
|
|
52
|
-
"lint:fix": "eslint . --ext ts,tsx --fix",
|
|
52
|
+
"lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0 --config ../../.eslintrc.cjs",
|
|
53
|
+
"lint:fix": "eslint . --ext ts,tsx --fix --config ../../.eslintrc.cjs",
|
|
53
54
|
"format": "prettier --check .",
|
|
54
55
|
"format:fix": "prettier --write .",
|
|
55
56
|
"test": "vitest",
|
|
56
57
|
"test:ui": "vitest --ui",
|
|
57
58
|
"coverage": "vitest run --coverage",
|
|
59
|
+
"prepack": "cp ../../README.md ./README.md && cp ../../LICENSE ./LICENSE",
|
|
60
|
+
"postpack": "rm -f README.md LICENSE",
|
|
58
61
|
"prepublishOnly": "vitest run --passWithNoTests && npm run build"
|
|
59
62
|
},
|
|
60
63
|
"devDependencies": {
|
|
@@ -66,17 +69,21 @@
|
|
|
66
69
|
"@vitejs/plugin-react": "^6.0.1",
|
|
67
70
|
"@vitest/coverage-v8": "^1.6.0",
|
|
68
71
|
"@vitest/ui": "^1.6.0",
|
|
72
|
+
"clsx": "^2.1.1",
|
|
69
73
|
"eslint": "^8.55.0",
|
|
70
74
|
"eslint-plugin-react-hooks": "^4.6.0",
|
|
71
75
|
"eslint-plugin-react-refresh": "^0.4.5",
|
|
72
76
|
"framer-motion": "^12.38.0",
|
|
73
77
|
"jsdom": "^29.0.1",
|
|
78
|
+
"lucide-react": "^1.7.0",
|
|
74
79
|
"prettier": "^3.2.0",
|
|
75
80
|
"react": "^19.2.4",
|
|
76
81
|
"react-dom": "^19.2.4",
|
|
82
|
+
"react-hook-form": "^7.72.1",
|
|
83
|
+
"tailwind-merge": "^3.5.0",
|
|
77
84
|
"typescript": "^6.0.2",
|
|
78
85
|
"vite": "^8.0.3",
|
|
79
86
|
"vitest": "^1.6.0",
|
|
80
87
|
"zustand": "^5.0.12"
|
|
81
88
|
}
|
|
82
|
-
}
|
|
89
|
+
}
|