@akshar-technosoft/ui 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +215 -0
- package/dist/components/core/error.cjs +3 -0
- package/dist/components/core/error.cjs.map +1 -0
- package/dist/components/core/error.d.cts +5 -0
- package/dist/components/core/error.d.ts +5 -0
- package/dist/components/core/error.js +3 -0
- package/dist/components/core/error.js.map +1 -0
- package/dist/components/core/event-success.cjs +3 -0
- package/dist/components/core/event-success.cjs.map +1 -0
- package/dist/components/core/event-success.d.cts +5 -0
- package/dist/components/core/event-success.d.ts +5 -0
- package/dist/components/core/event-success.js +3 -0
- package/dist/components/core/event-success.js.map +1 -0
- package/dist/components/core/index.cjs +3 -0
- package/dist/components/core/index.cjs.map +1 -0
- package/dist/components/core/index.d.cts +7 -0
- package/dist/components/core/index.d.ts +7 -0
- package/dist/components/core/index.js +3 -0
- package/dist/components/core/index.js.map +1 -0
- package/dist/components/core/loader.cjs +3 -0
- package/dist/components/core/loader.cjs.map +1 -0
- package/dist/components/core/loader.d.cts +5 -0
- package/dist/components/core/loader.d.ts +5 -0
- package/dist/components/core/loader.js +3 -0
- package/dist/components/core/loader.js.map +1 -0
- package/dist/components/core/notfound.cjs +3 -0
- package/dist/components/core/notfound.cjs.map +1 -0
- package/dist/components/core/notfound.d.cts +5 -0
- package/dist/components/core/notfound.d.ts +5 -0
- package/dist/components/core/notfound.js +3 -0
- package/dist/components/core/notfound.js.map +1 -0
- package/dist/components/core/offline-content.cjs +3 -0
- package/dist/components/core/offline-content.cjs.map +1 -0
- package/dist/components/core/offline-content.d.cts +5 -0
- package/dist/components/core/offline-content.d.ts +5 -0
- package/dist/components/core/offline-content.js +3 -0
- package/dist/components/core/offline-content.js.map +1 -0
- package/dist/components/core/unauthorized.cjs +3 -0
- package/dist/components/core/unauthorized.cjs.map +1 -0
- package/dist/components/core/unauthorized.d.cts +5 -0
- package/dist/components/core/unauthorized.d.ts +5 -0
- package/dist/components/core/unauthorized.js +3 -0
- package/dist/components/core/unauthorized.js.map +1 -0
- package/dist/components/data/data-table/data-table-action-bar.cjs +3 -0
- package/dist/components/data/data-table/data-table-action-bar.cjs.map +1 -0
- package/dist/components/data/data-table/data-table-action-bar.d.cts +26 -0
- package/dist/components/data/data-table/data-table-action-bar.d.ts +26 -0
- package/dist/components/data/data-table/data-table-action-bar.js +3 -0
- package/dist/components/data/data-table/data-table-action-bar.js.map +1 -0
- package/dist/components/data/data-table/data-table-column-header.cjs +3 -0
- package/dist/components/data/data-table/data-table-column-header.cjs.map +1 -0
- package/dist/components/data/data-table/data-table-column-header.d.cts +11 -0
- package/dist/components/data/data-table/data-table-column-header.d.ts +11 -0
- package/dist/components/data/data-table/data-table-column-header.js +3 -0
- package/dist/components/data/data-table/data-table-column-header.js.map +1 -0
- package/dist/components/data/data-table/data-table-faceted-filter.cjs +3 -0
- package/dist/components/data/data-table/data-table-faceted-filter.cjs.map +1 -0
- package/dist/components/data/data-table/data-table-faceted-filter.d.cts +18 -0
- package/dist/components/data/data-table/data-table-faceted-filter.d.ts +18 -0
- package/dist/components/data/data-table/data-table-faceted-filter.js +3 -0
- package/dist/components/data/data-table/data-table-faceted-filter.js.map +1 -0
- package/dist/components/data/data-table/data-table-pagination.cjs +3 -0
- package/dist/components/data/data-table/data-table-pagination.cjs.map +1 -0
- package/dist/components/data/data-table/data-table-pagination.d.cts +12 -0
- package/dist/components/data/data-table/data-table-pagination.d.ts +12 -0
- package/dist/components/data/data-table/data-table-pagination.js +3 -0
- package/dist/components/data/data-table/data-table-pagination.js.map +1 -0
- package/dist/components/data/data-table/data-table-toolbar.cjs +3 -0
- package/dist/components/data/data-table/data-table-toolbar.cjs.map +1 -0
- package/dist/components/data/data-table/data-table-toolbar.d.cts +23 -0
- package/dist/components/data/data-table/data-table-toolbar.d.ts +23 -0
- package/dist/components/data/data-table/data-table-toolbar.js +3 -0
- package/dist/components/data/data-table/data-table-toolbar.js.map +1 -0
- package/dist/components/data/data-table/data-table-types.cjs +3 -0
- package/dist/components/data/data-table/data-table-types.cjs.map +1 -0
- package/dist/components/data/data-table/data-table-types.d.cts +69 -0
- package/dist/components/data/data-table/data-table-types.d.ts +69 -0
- package/dist/components/data/data-table/data-table-types.js +2 -0
- package/dist/components/data/data-table/data-table-types.js.map +1 -0
- package/dist/components/data/data-table/data-table-view-options.cjs +3 -0
- package/dist/components/data/data-table/data-table-view-options.cjs.map +1 -0
- package/dist/components/data/data-table/data-table-view-options.d.cts +9 -0
- package/dist/components/data/data-table/data-table-view-options.d.ts +9 -0
- package/dist/components/data/data-table/data-table-view-options.js +3 -0
- package/dist/components/data/data-table/data-table-view-options.js.map +1 -0
- package/dist/components/data/data-table/data-table.cjs +3 -0
- package/dist/components/data/data-table/data-table.cjs.map +1 -0
- package/dist/components/data/data-table/data-table.d.cts +8 -0
- package/dist/components/data/data-table/data-table.d.ts +8 -0
- package/dist/components/data/data-table/data-table.js +3 -0
- package/dist/components/data/data-table/data-table.js.map +1 -0
- package/dist/components/data/data-table/index.cjs +3 -0
- package/dist/components/data/data-table/index.cjs.map +1 -0
- package/dist/components/data/data-table/index.d.cts +16 -0
- package/dist/components/data/data-table/index.d.ts +16 -0
- package/dist/components/data/data-table/index.js +3 -0
- package/dist/components/data/data-table/index.js.map +1 -0
- package/dist/components/data/data-template/data-template-action-bar.cjs +3 -0
- package/dist/components/data/data-template/data-template-action-bar.cjs.map +1 -0
- package/dist/components/data/data-template/data-template-action-bar.d.cts +14 -0
- package/dist/components/data/data-template/data-template-action-bar.d.ts +14 -0
- package/dist/components/data/data-template/data-template-action-bar.js +3 -0
- package/dist/components/data/data-template/data-template-action-bar.js.map +1 -0
- package/dist/components/data/data-template/data-template-pagination.cjs +3 -0
- package/dist/components/data/data-template/data-template-pagination.cjs.map +1 -0
- package/dist/components/data/data-template/data-template-pagination.d.cts +17 -0
- package/dist/components/data/data-template/data-template-pagination.d.ts +17 -0
- package/dist/components/data/data-template/data-template-pagination.js +3 -0
- package/dist/components/data/data-template/data-template-pagination.js.map +1 -0
- package/dist/components/data/data-template/data-template-toolbar.cjs +3 -0
- package/dist/components/data/data-template/data-template-toolbar.cjs.map +1 -0
- package/dist/components/data/data-template/data-template-toolbar.d.cts +27 -0
- package/dist/components/data/data-template/data-template-toolbar.d.ts +27 -0
- package/dist/components/data/data-template/data-template-toolbar.js +3 -0
- package/dist/components/data/data-template/data-template-toolbar.js.map +1 -0
- package/dist/components/data/data-template/data-template-types.cjs +3 -0
- package/dist/components/data/data-template/data-template-types.cjs.map +1 -0
- package/dist/components/data/data-template/data-template-types.d.cts +107 -0
- package/dist/components/data/data-template/data-template-types.d.ts +107 -0
- package/dist/components/data/data-template/data-template-types.js +2 -0
- package/dist/components/data/data-template/data-template-types.js.map +1 -0
- package/dist/components/data/data-template/data-template.cjs +3 -0
- package/dist/components/data/data-template/data-template.cjs.map +1 -0
- package/dist/components/data/data-template/data-template.d.cts +8 -0
- package/dist/components/data/data-template/data-template.d.ts +8 -0
- package/dist/components/data/data-template/data-template.js +3 -0
- package/dist/components/data/data-template/data-template.js.map +1 -0
- package/dist/components/data/data-template/index.cjs +3 -0
- package/dist/components/data/data-template/index.cjs.map +1 -0
- package/dist/components/data/data-template/index.d.cts +8 -0
- package/dist/components/data/data-template/index.d.ts +8 -0
- package/dist/components/data/data-template/index.js +3 -0
- package/dist/components/data/data-template/index.js.map +1 -0
- package/dist/components/general.cjs +3 -0
- package/dist/components/general.cjs.map +1 -0
- package/dist/components/general.d.cts +51 -0
- package/dist/components/general.d.ts +51 -0
- package/dist/components/general.js +3 -0
- package/dist/components/general.js.map +1 -0
- package/dist/components/layouts/app-container.cjs +3 -0
- package/dist/components/layouts/app-container.cjs.map +1 -0
- package/dist/components/layouts/app-container.d.cts +13 -0
- package/dist/components/layouts/app-container.d.ts +13 -0
- package/dist/components/layouts/app-container.js +3 -0
- package/dist/components/layouts/app-container.js.map +1 -0
- package/dist/components/layouts/app-content.cjs +3 -0
- package/dist/components/layouts/app-content.cjs.map +1 -0
- package/dist/components/layouts/app-content.d.cts +45 -0
- package/dist/components/layouts/app-content.d.ts +45 -0
- package/dist/components/layouts/app-content.js +3 -0
- package/dist/components/layouts/app-content.js.map +1 -0
- package/dist/components/layouts/app-footer.cjs +3 -0
- package/dist/components/layouts/app-footer.cjs.map +1 -0
- package/dist/components/layouts/app-footer.d.cts +18 -0
- package/dist/components/layouts/app-footer.d.ts +18 -0
- package/dist/components/layouts/app-footer.js +3 -0
- package/dist/components/layouts/app-footer.js.map +1 -0
- package/dist/components/layouts/app-header.cjs +3 -0
- package/dist/components/layouts/app-header.cjs.map +1 -0
- package/dist/components/layouts/app-header.d.cts +19 -0
- package/dist/components/layouts/app-header.d.ts +19 -0
- package/dist/components/layouts/app-header.js +3 -0
- package/dist/components/layouts/app-header.js.map +1 -0
- package/dist/components/layouts/factories.cjs +3 -0
- package/dist/components/layouts/factories.cjs.map +1 -0
- package/dist/components/layouts/factories.d.cts +18 -0
- package/dist/components/layouts/factories.d.ts +18 -0
- package/dist/components/layouts/factories.js +3 -0
- package/dist/components/layouts/factories.js.map +1 -0
- package/dist/components/layouts/index.cjs +3 -0
- package/dist/components/layouts/index.cjs.map +1 -0
- package/dist/components/layouts/index.d.cts +8 -0
- package/dist/components/layouts/index.d.ts +8 -0
- package/dist/components/layouts/index.js +3 -0
- package/dist/components/layouts/index.js.map +1 -0
- package/dist/components/ui/badge.cjs +3 -0
- package/dist/components/ui/badge.cjs.map +1 -0
- package/dist/components/ui/badge.d.cts +13 -0
- package/dist/components/ui/badge.d.ts +13 -0
- package/dist/components/ui/badge.js +3 -0
- package/dist/components/ui/badge.js.map +1 -0
- package/dist/components/ui/button.cjs +3 -0
- package/dist/components/ui/button.cjs.map +1 -0
- package/dist/components/ui/button.d.cts +14 -0
- package/dist/components/ui/button.d.ts +14 -0
- package/dist/components/ui/button.js +3 -0
- package/dist/components/ui/button.js.map +1 -0
- package/dist/components/ui/card.cjs +3 -0
- package/dist/components/ui/card.cjs.map +1 -0
- package/dist/components/ui/card.d.cts +12 -0
- package/dist/components/ui/card.d.ts +12 -0
- package/dist/components/ui/card.js +3 -0
- package/dist/components/ui/card.js.map +1 -0
- package/dist/components/ui/checkbox.cjs +3 -0
- package/dist/components/ui/checkbox.cjs.map +1 -0
- package/dist/components/ui/checkbox.d.cts +7 -0
- package/dist/components/ui/checkbox.d.ts +7 -0
- package/dist/components/ui/checkbox.js +3 -0
- package/dist/components/ui/checkbox.js.map +1 -0
- package/dist/components/ui/command.cjs +3 -0
- package/dist/components/ui/command.cjs.map +1 -0
- package/dist/components/ui/command.d.cts +20 -0
- package/dist/components/ui/command.d.ts +20 -0
- package/dist/components/ui/command.js +3 -0
- package/dist/components/ui/command.js.map +1 -0
- package/dist/components/ui/dialog.cjs +3 -0
- package/dist/components/ui/dialog.cjs.map +1 -0
- package/dist/components/ui/dialog.d.cts +16 -0
- package/dist/components/ui/dialog.d.ts +16 -0
- package/dist/components/ui/dialog.js +3 -0
- package/dist/components/ui/dialog.js.map +1 -0
- package/dist/components/ui/dropdown-menu.cjs +3 -0
- package/dist/components/ui/dropdown-menu.cjs.map +1 -0
- package/dist/components/ui/dropdown-menu.d.cts +28 -0
- package/dist/components/ui/dropdown-menu.d.ts +28 -0
- package/dist/components/ui/dropdown-menu.js +3 -0
- package/dist/components/ui/dropdown-menu.js.map +1 -0
- package/dist/components/ui/input.cjs +3 -0
- package/dist/components/ui/input.cjs.map +1 -0
- package/dist/components/ui/input.d.cts +6 -0
- package/dist/components/ui/input.d.ts +6 -0
- package/dist/components/ui/input.js +3 -0
- package/dist/components/ui/input.js.map +1 -0
- package/dist/components/ui/popover.cjs +3 -0
- package/dist/components/ui/popover.cjs.map +1 -0
- package/dist/components/ui/popover.d.cts +10 -0
- package/dist/components/ui/popover.d.ts +10 -0
- package/dist/components/ui/popover.js +3 -0
- package/dist/components/ui/popover.js.map +1 -0
- package/dist/components/ui/select.cjs +3 -0
- package/dist/components/ui/select.cjs.map +1 -0
- package/dist/components/ui/select.d.cts +18 -0
- package/dist/components/ui/select.d.ts +18 -0
- package/dist/components/ui/select.js +3 -0
- package/dist/components/ui/select.js.map +1 -0
- package/dist/components/ui/separator.cjs +3 -0
- package/dist/components/ui/separator.cjs.map +1 -0
- package/dist/components/ui/separator.d.cts +7 -0
- package/dist/components/ui/separator.d.ts +7 -0
- package/dist/components/ui/separator.js +3 -0
- package/dist/components/ui/separator.js.map +1 -0
- package/dist/components/ui/sheet.cjs +3 -0
- package/dist/components/ui/sheet.cjs.map +1 -0
- package/dist/components/ui/sheet.d.cts +18 -0
- package/dist/components/ui/sheet.d.ts +18 -0
- package/dist/components/ui/sheet.js +3 -0
- package/dist/components/ui/sheet.js.map +1 -0
- package/dist/components/ui/table.cjs +3 -0
- package/dist/components/ui/table.cjs.map +1 -0
- package/dist/components/ui/table.d.cts +13 -0
- package/dist/components/ui/table.d.ts +13 -0
- package/dist/components/ui/table.js +3 -0
- package/dist/components/ui/table.js.map +1 -0
- package/dist/components/ui/toggle.cjs +3 -0
- package/dist/components/ui/toggle.cjs.map +1 -0
- package/dist/components/ui/toggle.d.cts +16 -0
- package/dist/components/ui/toggle.d.ts +16 -0
- package/dist/components/ui/toggle.js +3 -0
- package/dist/components/ui/toggle.js.map +1 -0
- package/dist/components/ui/tooltip.cjs +3 -0
- package/dist/components/ui/tooltip.cjs.map +1 -0
- package/dist/components/ui/tooltip.d.cts +10 -0
- package/dist/components/ui/tooltip.d.ts +10 -0
- package/dist/components/ui/tooltip.js +3 -0
- package/dist/components/ui/tooltip.js.map +1 -0
- package/dist/context/app-meta/context.cjs +3 -0
- package/dist/context/app-meta/context.cjs.map +1 -0
- package/dist/context/app-meta/context.d.cts +18 -0
- package/dist/context/app-meta/context.d.ts +18 -0
- package/dist/context/app-meta/context.js +3 -0
- package/dist/context/app-meta/context.js.map +1 -0
- package/dist/context/app-meta/hooks.cjs +3 -0
- package/dist/context/app-meta/hooks.cjs.map +1 -0
- package/dist/context/app-meta/hooks.d.cts +10 -0
- package/dist/context/app-meta/hooks.d.ts +10 -0
- package/dist/context/app-meta/hooks.js +3 -0
- package/dist/context/app-meta/hooks.js.map +1 -0
- package/dist/context/app-meta/index.cjs +3 -0
- package/dist/context/app-meta/index.cjs.map +1 -0
- package/dist/context/app-meta/index.d.cts +5 -0
- package/dist/context/app-meta/index.d.ts +5 -0
- package/dist/context/app-meta/index.js +3 -0
- package/dist/context/app-meta/index.js.map +1 -0
- package/dist/context/app-meta/types.cjs +3 -0
- package/dist/context/app-meta/types.cjs.map +1 -0
- package/dist/context/app-meta/types.d.cts +48 -0
- package/dist/context/app-meta/types.d.ts +48 -0
- package/dist/context/app-meta/types.js +2 -0
- package/dist/context/app-meta/types.js.map +1 -0
- package/dist/context/index.cjs +3 -0
- package/dist/context/index.cjs.map +1 -0
- package/dist/context/index.d.cts +5 -0
- package/dist/context/index.d.ts +5 -0
- package/dist/context/index.js +3 -0
- package/dist/context/index.js.map +1 -0
- package/dist/index.cjs +3 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +29 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/utils.cjs +3 -0
- package/dist/lib/utils.cjs.map +1 -0
- package/dist/lib/utils.d.cts +5 -0
- package/dist/lib/utils.d.ts +5 -0
- package/dist/lib/utils.js +3 -0
- package/dist/lib/utils.js.map +1 -0
- package/package.json +73 -0
package/README.md
ADDED
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
# @akshar-technosoft/ui
|
|
2
|
+
|
|
3
|
+
> ✨ A complete, type-safe UI component library featuring elegant layouts, data displays, and utility components. Built with TypeScript, Tailwind CSS, and React.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 🌟 Features
|
|
8
|
+
|
|
9
|
+
- **Layout System**: Pre-built, composable layout components (`AppContainer`, `AppHeader`, `AppContent`, `AppFooter`)
|
|
10
|
+
- **Type Safety**: Fully typed components with intelligent prop completion
|
|
11
|
+
- **Context-Aware**: Built-in app meta management for titles, breadcrumbs, and actions
|
|
12
|
+
- **Utility-First**: Includes helpful utilities like `GeneralHelper` for formatting and UI helpers
|
|
13
|
+
- **Customizable**: Themeable and extensible with Tailwind CSS
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## 📦 Installation
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
# Using npm
|
|
21
|
+
npm install @akshar-technosoft/ui
|
|
22
|
+
|
|
23
|
+
# Using yarn
|
|
24
|
+
yarn add @akshar-technosoft/ui
|
|
25
|
+
|
|
26
|
+
# Using pnpm
|
|
27
|
+
pnpm add @akshar-technosoft/ui
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
**Peer Dependencies**:
|
|
31
|
+
```bash
|
|
32
|
+
npm install react react-dom clsx tailwind-merge lucide-react
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## 🚀 Quick Start
|
|
38
|
+
|
|
39
|
+
### 1. Setup App Meta Provider
|
|
40
|
+
|
|
41
|
+
```tsx
|
|
42
|
+
// App.tsx
|
|
43
|
+
import { AppMetaProvider } from '@tmj/ui';
|
|
44
|
+
|
|
45
|
+
function App() {
|
|
46
|
+
return (
|
|
47
|
+
<AppMetaProvider>
|
|
48
|
+
<MyPage />
|
|
49
|
+
</AppMetaProvider>
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### 2. Use Layout Components
|
|
55
|
+
|
|
56
|
+
```tsx
|
|
57
|
+
import {
|
|
58
|
+
AppContainer,
|
|
59
|
+
AppHeader,
|
|
60
|
+
AppContent,
|
|
61
|
+
AppFooter
|
|
62
|
+
} from '@tmj/ui';
|
|
63
|
+
|
|
64
|
+
function DashboardPage() {
|
|
65
|
+
return (
|
|
66
|
+
<AppContainer>
|
|
67
|
+
<AppHeader />
|
|
68
|
+
<AppContent>
|
|
69
|
+
<h1>Dashboard Content</h1>
|
|
70
|
+
</AppContent>
|
|
71
|
+
<AppFooter />
|
|
72
|
+
</AppContainer>
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### 3. Manage Page Metadata
|
|
78
|
+
|
|
79
|
+
```tsx
|
|
80
|
+
import { usePageTemplate } from '@tmj/ui/hooks';
|
|
81
|
+
|
|
82
|
+
function ProductPage() {
|
|
83
|
+
usePageTemplate({
|
|
84
|
+
title: 'Product Details',
|
|
85
|
+
breadcrumbs: [
|
|
86
|
+
{ label: 'Home', href: '/' },
|
|
87
|
+
{ label: 'Products', href: '/products' },
|
|
88
|
+
{ label: 'Current Product' }
|
|
89
|
+
],
|
|
90
|
+
primaryActions: <Button>Edit Product</Button>
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
return <div>...</div>;
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## 🧩 Core Components
|
|
100
|
+
|
|
101
|
+
### Layout System
|
|
102
|
+
|
|
103
|
+
| Component | Description |
|
|
104
|
+
|-----------------|-------------|
|
|
105
|
+
| `AppContainer` | Root layout container with spacing and padding controls |
|
|
106
|
+
| `AppHeader` | Top navigation bar with title, breadcrumbs, and actions |
|
|
107
|
+
| `AppContent` | Flexible content area with multiple layout modes |
|
|
108
|
+
| `AppFooter` | Bottom bar with secondary actions and pagination |
|
|
109
|
+
|
|
110
|
+
### Utility Components
|
|
111
|
+
|
|
112
|
+
```tsx
|
|
113
|
+
import { GeneralHelper } from '@tmj/ui';
|
|
114
|
+
|
|
115
|
+
// Format currency
|
|
116
|
+
const price = GeneralHelper.formatINR(1500, { compact: true }); // ₹1.5K
|
|
117
|
+
|
|
118
|
+
// Status badge
|
|
119
|
+
<GeneralHelper.StatusBadge status="active" variant="outline" />
|
|
120
|
+
|
|
121
|
+
// Copy to clipboard
|
|
122
|
+
<GeneralHelper.CopyToClipboard text="Copy me!" />
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## 🛠️ Advanced Usage
|
|
128
|
+
|
|
129
|
+
### Custom Route Types
|
|
130
|
+
|
|
131
|
+
```tsx
|
|
132
|
+
// lib/app-meta.ts
|
|
133
|
+
import { createAppMetaContext } from '@tmj/ui/context/app-meta';
|
|
134
|
+
|
|
135
|
+
type AppRoutes = '/' | '/dashboard' | '/products/:id';
|
|
136
|
+
|
|
137
|
+
const { AppMetaProvider, useAppMeta } = createAppMetaContext<AppRoutes>();
|
|
138
|
+
|
|
139
|
+
export { AppMetaProvider, useAppMeta };
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### Theming
|
|
143
|
+
|
|
144
|
+
```tsx
|
|
145
|
+
// tailwind.config.js
|
|
146
|
+
module.exports = {
|
|
147
|
+
theme: {
|
|
148
|
+
extend: {
|
|
149
|
+
colors: {
|
|
150
|
+
primary: {
|
|
151
|
+
DEFAULT: 'var(--color-primary)',
|
|
152
|
+
light: 'var(--color-primary-light)',
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## 📚 API Reference
|
|
163
|
+
|
|
164
|
+
### AppMeta Context
|
|
165
|
+
|
|
166
|
+
| Hook/Component | Description |
|
|
167
|
+
|---------------|-------------|
|
|
168
|
+
| `AppMetaProvider` | Provides context for page metadata |
|
|
169
|
+
| `useAppMeta()` | Access and update app metadata |
|
|
170
|
+
| `usePageTemplate()` | Hook to set page metadata |
|
|
171
|
+
|
|
172
|
+
### GeneralHelper Utilities
|
|
173
|
+
|
|
174
|
+
| Method | Description |
|
|
175
|
+
|--------|-------------|
|
|
176
|
+
| `formatINR()` | Format numbers as Indian Rupees |
|
|
177
|
+
| `formatDate()` | Date formatting utilities |
|
|
178
|
+
| `toProperCase()` | String case conversion |
|
|
179
|
+
| `StatusBadge` | Configurable status indicator |
|
|
180
|
+
| `CopyToClipboard` | Clipboard copy component |
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## 🎨 Design Philosophy
|
|
185
|
+
|
|
186
|
+
1. **Consistent**: Unified design language across components
|
|
187
|
+
2. **Composable**: Mix and match layout components as needed
|
|
188
|
+
3. **Type-Safe**: Full TypeScript support with intelligent hints
|
|
189
|
+
4. **Performant**: Optimized for fast rendering and updates
|
|
190
|
+
5. **Accessible**: Built with WAI-ARIA standards
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## 🛣️ Roadmap
|
|
195
|
+
|
|
196
|
+
- [x] Core layout components
|
|
197
|
+
- [x] App meta management system
|
|
198
|
+
- [x] Data table component
|
|
199
|
+
- [x] Data template component
|
|
200
|
+
- [] Form components
|
|
201
|
+
- [x] Dark mode support
|
|
202
|
+
- [] Component playground
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
## 🤝 Contributing
|
|
207
|
+
|
|
208
|
+
We welcome contributions! Please open an issue to discuss your ideas or submit a PR.
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## 📄 License
|
|
213
|
+
|
|
214
|
+
MIT © [Tirth Jasoliya](https://github.com/tirth-jasoliya)
|
|
215
|
+
```
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
"use strict";var i=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var b=Object.prototype.hasOwnProperty;var w=(e,r)=>{for(var a in r)i(e,a,{get:r[a],enumerable:!0})},y=(e,r,a,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of h(r))!b.call(e,s)&&s!==a&&i(e,s,{get:()=>r[s],enumerable:!(n=v(r,s))||n.enumerable});return e};var k=e=>y(i({},"__esModule",{value:!0}),e);var C={};w(C,{ErrorComponent:()=>E});module.exports=k(C);var u=require("radix-ui"),p=require("class-variance-authority");var d=require("clsx"),l=require("tailwind-merge");function c(...e){return(0,l.twMerge)((0,d.clsx)(e))}var x=require("react/jsx-runtime"),N=(0,p.cva)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",destructive:"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9"}},defaultVariants:{variant:"default",size:"default"}});function m({className:e,variant:r,size:a,asChild:n=!1,...s}){let g=n?u.Slot.Slot:"button";return(0,x.jsx)(g,{"data-slot":"button",className:c(N({variant:r,size:a,className:e}),"transition-none"),...s})}var f=require("lucide-react"),o=require("react-router"),t=require("react/jsx-runtime"),E=()=>{let e=(0,o.useRouteError)(),r=(0,o.useNavigate)();return(0,t.jsx)("div",{className:"rounded-2xl flex justify-center items-center h-full bg-sidebar px-4",children:(0,t.jsxs)("div",{className:"flex flex-col items-center space-y-4 text-center",children:[(0,t.jsx)(f.AlertTriangleIcon,{className:"h-16 w-16 text-destructive"}),(0,o.isRouteErrorResponse)(e)?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("h2",{className:"text-3xl font-semibold text-destructive",children:["Error ",e.status,": ",e.statusText]}),typeof e.data=="string"?(0,t.jsx)("pre",{className:"text-lg text-muted-foreground whitespace-pre-wrap max-w-4xl text-left",children:e.data}):e.data?.message&&(0,t.jsx)("pre",{className:"text-lg text-muted-foreground whitespace-pre-wrap max-w-4xl text-left",children:e.data.message})]}):e instanceof Error?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("h2",{className:"text-3xl font-semibold text-destructive",children:"Unexpected Error"}),(0,t.jsx)("pre",{className:"text-lg text-muted-foreground whitespace-pre-wrap max-w-4xl text-left",children:e.message}),e.stack&&(0,t.jsxs)("details",{className:"mt-2 text-sm text-muted-foreground max-w-4xl text-left",children:[(0,t.jsx)("summary",{className:"cursor-pointer underline",children:"Stack Trace"}),(0,t.jsx)("pre",{className:"whitespace-pre-wrap",children:e.stack})]})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("h2",{className:"text-3xl font-semibold text-destructive",children:"Unknown Error"}),(0,t.jsx)("pre",{className:"text-lg text-muted-foreground whitespace-pre-wrap max-w-4xl text-left",children:typeof e=="string"?e:JSON.stringify(e,null,2)})]}),(0,t.jsx)(m,{variant:"outline",onClick:()=>r(-1),children:"Go Back"})]})})};0&&(module.exports={ErrorComponent});
|
|
3
|
+
//# sourceMappingURL=error.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/core/error.tsx","../../../src/components/ui/button.tsx","../../../src/lib/utils.ts"],"sourcesContent":["import { Button } from \"../ui/button.jsx\";\r\nimport { AlertTriangleIcon } from \"lucide-react\";\r\nimport { useRouteError, isRouteErrorResponse, useNavigate } from \"react-router\";\r\n\r\nexport const ErrorComponent = () => {\r\n const error: any = useRouteError();\r\n const navigate = useNavigate();\r\n\r\n const renderErrorDetails = () => {\r\n if (isRouteErrorResponse(error)) {\r\n return (\r\n <>\r\n <h2 className=\"text-3xl font-semibold text-destructive\">\r\n Error {error.status}: {error.statusText}\r\n </h2>\r\n {typeof error.data === \"string\" ? (\r\n <pre className=\"text-lg text-muted-foreground whitespace-pre-wrap max-w-4xl text-left\">\r\n {error.data}\r\n </pre>\r\n ) : (\r\n error.data?.message && (\r\n <pre className=\"text-lg text-muted-foreground whitespace-pre-wrap max-w-4xl text-left\">\r\n {error.data.message}\r\n </pre>\r\n )\r\n )}\r\n </>\r\n );\r\n }\r\n\r\n if (error instanceof Error) {\r\n return (\r\n <>\r\n <h2 className=\"text-3xl font-semibold text-destructive\">Unexpected Error</h2>\r\n <pre className=\"text-lg text-muted-foreground whitespace-pre-wrap max-w-4xl text-left\">\r\n {error.message}\r\n </pre>\r\n {error.stack && (\r\n <details className=\"mt-2 text-sm text-muted-foreground max-w-4xl text-left\">\r\n <summary className=\"cursor-pointer underline\">Stack Trace</summary>\r\n <pre className=\"whitespace-pre-wrap\">{error.stack}</pre>\r\n </details>\r\n )}\r\n </>\r\n );\r\n }\r\n\r\n return (\r\n <>\r\n <h2 className=\"text-3xl font-semibold text-destructive\">Unknown Error</h2>\r\n <pre className=\"text-lg text-muted-foreground whitespace-pre-wrap max-w-4xl text-left\">\r\n {typeof error === \"string\"\r\n ? error\r\n : JSON.stringify(error, null, 2)}\r\n </pre>\r\n </>\r\n );\r\n };\r\n\r\n return (\r\n <div className=\"rounded-2xl flex justify-center items-center h-full bg-sidebar px-4\">\r\n <div className=\"flex flex-col items-center space-y-4 text-center\">\r\n <AlertTriangleIcon className=\"h-16 w-16 text-destructive\" />\r\n {renderErrorDetails()}\r\n <Button variant=\"outline\" onClick={() => navigate(-1)}>\r\n Go Back\r\n </Button>\r\n </div>\r\n </div>\r\n );\r\n};\r\n","import * as React from \"react\"\nimport { Slot as SlotPrimitive } from \"radix-ui\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils.js\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80\",\n ghost:\n \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? SlotPrimitive.Slot : \"button\"\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }), \"transition-none\")}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}"],"mappings":";yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,oBAAAE,IAAA,eAAAC,EAAAH,GCCA,IAAAI,EAAsC,oBACtCC,EAAuC,oCCFvC,IAAAC,EAAsC,gBACtCC,EAAwB,0BAEjB,SAASC,KAAMC,EAAsB,CAC1C,SAAO,cAAQ,QAAKA,CAAM,CAAC,CAC7B,CD6CI,IAAAC,EAAA,6BA5CEC,KAAiB,OACrB,8bACA,CACE,SAAU,CACR,QAAS,CACP,QACE,mEACF,YACE,8JACF,QACE,wIACF,UACE,yEACF,MACE,uEACF,KAAM,iDACR,EACA,KAAM,CACJ,QAAS,gCACT,GAAI,gDACJ,GAAI,uCACJ,KAAM,QACR,CACF,EACA,gBAAiB,CACf,QAAS,UACT,KAAM,SACR,CACF,CACF,EAEA,SAASC,EAAO,CACd,UAAAC,EACA,QAAAC,EACA,KAAAC,EACA,QAAAC,EAAU,GACV,GAAGC,CACL,EAGK,CACH,IAAMC,EAAOF,EAAU,EAAAG,KAAc,KAAO,SAE5C,SACE,OAACD,EAAA,CACC,YAAU,SACV,UAAWE,EAAGT,EAAe,CAAE,QAAAG,EAAS,KAAAC,EAAM,UAAAF,CAAU,CAAC,EAAG,iBAAiB,EAC5E,GAAGI,EACN,CAEJ,CDvDA,IAAAI,EAAkC,wBAClCC,EAAiE,wBASzDC,EAAA,6BAPKC,EAAiB,IAAM,CAClC,IAAMC,KAAa,iBAAc,EAC3BC,KAAW,eAAY,EAqD7B,SACE,OAAC,OAAI,UAAU,sEACb,oBAAC,OAAI,UAAU,mDACb,oBAAC,qBAAkB,UAAU,6BAA6B,KArD1D,wBAAqBD,CAAK,KAE1B,oBACE,qBAAC,MAAG,UAAU,0CAA0C,mBAC/CA,EAAM,OAAO,KAAGA,EAAM,YAC/B,EACC,OAAOA,EAAM,MAAS,YACrB,OAAC,OAAI,UAAU,wEACZ,SAAAA,EAAM,KACT,EAEAA,EAAM,MAAM,YACV,OAAC,OAAI,UAAU,wEACZ,SAAAA,EAAM,KAAK,QACd,GAGN,EAIAA,aAAiB,SAEjB,oBACE,oBAAC,MAAG,UAAU,0CAA0C,4BAAgB,KACxE,OAAC,OAAI,UAAU,wEACZ,SAAAA,EAAM,QACT,EACCA,EAAM,UACL,QAAC,WAAQ,UAAU,yDACjB,oBAAC,WAAQ,UAAU,2BAA2B,uBAAW,KACzD,OAAC,OAAI,UAAU,sBAAuB,SAAAA,EAAM,MAAM,GACpD,GAEJ,KAKF,oBACE,oBAAC,MAAG,UAAU,0CAA0C,yBAAa,KACrE,OAAC,OAAI,UAAU,wEACZ,gBAAOA,GAAU,SACdA,EACA,KAAK,UAAUA,EAAO,KAAM,CAAC,EACnC,GACF,KASE,OAACE,EAAA,CAAO,QAAQ,UAAU,QAAS,IAAMD,EAAS,EAAE,EAAG,mBAEvD,GACF,EACF,CAEJ","names":["error_exports","__export","ErrorComponent","__toCommonJS","import_radix_ui","import_class_variance_authority","import_clsx","import_tailwind_merge","cn","inputs","import_jsx_runtime","buttonVariants","Button","className","variant","size","asChild","props","Comp","SlotPrimitive","cn","import_lucide_react","import_react_router","import_jsx_runtime","ErrorComponent","error","navigate","Button"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
import{Slot as m}from"radix-ui";import{cva as x}from"class-variance-authority";import{clsx as u}from"clsx";import{twMerge as p}from"tailwind-merge";function n(...e){return p(u(e))}import{jsx as g}from"react/jsx-runtime";var f=x("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",destructive:"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9"}},defaultVariants:{variant:"default",size:"default"}});function i({className:e,variant:a,size:o,asChild:d=!1,...l}){let c=d?m.Slot:"button";return g(c,{"data-slot":"button",className:n(f({variant:a,size:o,className:e}),"transition-none"),...l})}import{AlertTriangleIcon as v}from"lucide-react";import{useRouteError as h,isRouteErrorResponse as b,useNavigate as w}from"react-router";import{Fragment as s,jsx as t,jsxs as r}from"react/jsx-runtime";var T=()=>{let e=h(),a=w();return t("div",{className:"rounded-2xl flex justify-center items-center h-full bg-sidebar px-4",children:r("div",{className:"flex flex-col items-center space-y-4 text-center",children:[t(v,{className:"h-16 w-16 text-destructive"}),b(e)?r(s,{children:[r("h2",{className:"text-3xl font-semibold text-destructive",children:["Error ",e.status,": ",e.statusText]}),typeof e.data=="string"?t("pre",{className:"text-lg text-muted-foreground whitespace-pre-wrap max-w-4xl text-left",children:e.data}):e.data?.message&&t("pre",{className:"text-lg text-muted-foreground whitespace-pre-wrap max-w-4xl text-left",children:e.data.message})]}):e instanceof Error?r(s,{children:[t("h2",{className:"text-3xl font-semibold text-destructive",children:"Unexpected Error"}),t("pre",{className:"text-lg text-muted-foreground whitespace-pre-wrap max-w-4xl text-left",children:e.message}),e.stack&&r("details",{className:"mt-2 text-sm text-muted-foreground max-w-4xl text-left",children:[t("summary",{className:"cursor-pointer underline",children:"Stack Trace"}),t("pre",{className:"whitespace-pre-wrap",children:e.stack})]})]}):r(s,{children:[t("h2",{className:"text-3xl font-semibold text-destructive",children:"Unknown Error"}),t("pre",{className:"text-lg text-muted-foreground whitespace-pre-wrap max-w-4xl text-left",children:typeof e=="string"?e:JSON.stringify(e,null,2)})]}),t(i,{variant:"outline",onClick:()=>a(-1),children:"Go Back"})]})})};export{T as ErrorComponent};
|
|
3
|
+
//# sourceMappingURL=error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/ui/button.tsx","../../../src/lib/utils.ts","../../../src/components/core/error.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { Slot as SlotPrimitive } from \"radix-ui\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils.js\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80\",\n ghost:\n \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? SlotPrimitive.Slot : \"button\"\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }), \"transition-none\")}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}","import { Button } from \"../ui/button.jsx\";\r\nimport { AlertTriangleIcon } from \"lucide-react\";\r\nimport { useRouteError, isRouteErrorResponse, useNavigate } from \"react-router\";\r\n\r\nexport const ErrorComponent = () => {\r\n const error: any = useRouteError();\r\n const navigate = useNavigate();\r\n\r\n const renderErrorDetails = () => {\r\n if (isRouteErrorResponse(error)) {\r\n return (\r\n <>\r\n <h2 className=\"text-3xl font-semibold text-destructive\">\r\n Error {error.status}: {error.statusText}\r\n </h2>\r\n {typeof error.data === \"string\" ? (\r\n <pre className=\"text-lg text-muted-foreground whitespace-pre-wrap max-w-4xl text-left\">\r\n {error.data}\r\n </pre>\r\n ) : (\r\n error.data?.message && (\r\n <pre className=\"text-lg text-muted-foreground whitespace-pre-wrap max-w-4xl text-left\">\r\n {error.data.message}\r\n </pre>\r\n )\r\n )}\r\n </>\r\n );\r\n }\r\n\r\n if (error instanceof Error) {\r\n return (\r\n <>\r\n <h2 className=\"text-3xl font-semibold text-destructive\">Unexpected Error</h2>\r\n <pre className=\"text-lg text-muted-foreground whitespace-pre-wrap max-w-4xl text-left\">\r\n {error.message}\r\n </pre>\r\n {error.stack && (\r\n <details className=\"mt-2 text-sm text-muted-foreground max-w-4xl text-left\">\r\n <summary className=\"cursor-pointer underline\">Stack Trace</summary>\r\n <pre className=\"whitespace-pre-wrap\">{error.stack}</pre>\r\n </details>\r\n )}\r\n </>\r\n );\r\n }\r\n\r\n return (\r\n <>\r\n <h2 className=\"text-3xl font-semibold text-destructive\">Unknown Error</h2>\r\n <pre className=\"text-lg text-muted-foreground whitespace-pre-wrap max-w-4xl text-left\">\r\n {typeof error === \"string\"\r\n ? error\r\n : JSON.stringify(error, null, 2)}\r\n </pre>\r\n </>\r\n );\r\n };\r\n\r\n return (\r\n <div className=\"rounded-2xl flex justify-center items-center h-full bg-sidebar px-4\">\r\n <div className=\"flex flex-col items-center space-y-4 text-center\">\r\n <AlertTriangleIcon className=\"h-16 w-16 text-destructive\" />\r\n {renderErrorDetails()}\r\n <Button variant=\"outline\" onClick={() => navigate(-1)}>\r\n Go Back\r\n </Button>\r\n </div>\r\n </div>\r\n );\r\n};\r\n"],"mappings":";AACA,OAAS,QAAQA,MAAqB,WACtC,OAAS,OAAAC,MAA8B,2BCFvC,OAAS,QAAAC,MAA6B,OACtC,OAAS,WAAAC,MAAe,iBAEjB,SAASC,KAAMC,EAAsB,CAC1C,OAAOF,EAAQD,EAAKG,CAAM,CAAC,CAC7B,CD6CI,cAAAC,MAAA,oBA5CJ,IAAMC,EAAiBC,EACrB,8bACA,CACE,SAAU,CACR,QAAS,CACP,QACE,mEACF,YACE,8JACF,QACE,wIACF,UACE,yEACF,MACE,uEACF,KAAM,iDACR,EACA,KAAM,CACJ,QAAS,gCACT,GAAI,gDACJ,GAAI,uCACJ,KAAM,QACR,CACF,EACA,gBAAiB,CACf,QAAS,UACT,KAAM,SACR,CACF,CACF,EAEA,SAASC,EAAO,CACd,UAAAC,EACA,QAAAC,EACA,KAAAC,EACA,QAAAC,EAAU,GACV,GAAGC,CACL,EAGK,CACH,IAAMC,EAAOF,EAAUG,EAAc,KAAO,SAE5C,OACEV,EAACS,EAAA,CACC,YAAU,SACV,UAAWE,EAAGV,EAAe,CAAE,QAAAI,EAAS,KAAAC,EAAM,UAAAF,CAAU,CAAC,EAAG,iBAAiB,EAC5E,GAAGI,EACN,CAEJ,CEvDA,OAAS,qBAAAI,MAAyB,eAClC,OAAS,iBAAAC,EAAe,wBAAAC,EAAsB,eAAAC,MAAmB,eASzD,mBAAAC,EAKI,OAAAC,EAJF,QAAAC,MADF,oBAPD,IAAMC,EAAiB,IAAM,CAClC,IAAMC,EAAaP,EAAc,EAC3BQ,EAAWN,EAAY,EAqD7B,OACEE,EAAC,OAAI,UAAU,sEACb,SAAAC,EAAC,OAAI,UAAU,mDACb,UAAAD,EAACL,EAAA,CAAkB,UAAU,6BAA6B,EArD1DE,EAAqBM,CAAK,EAE1BF,EAAAF,EAAA,CACE,UAAAE,EAAC,MAAG,UAAU,0CAA0C,mBAC/CE,EAAM,OAAO,KAAGA,EAAM,YAC/B,EACC,OAAOA,EAAM,MAAS,SACrBH,EAAC,OAAI,UAAU,wEACZ,SAAAG,EAAM,KACT,EAEAA,EAAM,MAAM,SACVH,EAAC,OAAI,UAAU,wEACZ,SAAAG,EAAM,KAAK,QACd,GAGN,EAIAA,aAAiB,MAEjBF,EAAAF,EAAA,CACE,UAAAC,EAAC,MAAG,UAAU,0CAA0C,4BAAgB,EACxEA,EAAC,OAAI,UAAU,wEACZ,SAAAG,EAAM,QACT,EACCA,EAAM,OACLF,EAAC,WAAQ,UAAU,yDACjB,UAAAD,EAAC,WAAQ,UAAU,2BAA2B,uBAAW,EACzDA,EAAC,OAAI,UAAU,sBAAuB,SAAAG,EAAM,MAAM,GACpD,GAEJ,EAKFF,EAAAF,EAAA,CACE,UAAAC,EAAC,MAAG,UAAU,0CAA0C,yBAAa,EACrEA,EAAC,OAAI,UAAU,wEACZ,gBAAOG,GAAU,SACdA,EACA,KAAK,UAAUA,EAAO,KAAM,CAAC,EACnC,GACF,EASEH,EAACK,EAAA,CAAO,QAAQ,UAAU,QAAS,IAAMD,EAAS,EAAE,EAAG,mBAEvD,GACF,EACF,CAEJ","names":["SlotPrimitive","cva","clsx","twMerge","cn","inputs","jsx","buttonVariants","cva","Button","className","variant","size","asChild","props","Comp","SlotPrimitive","cn","AlertTriangleIcon","useRouteError","isRouteErrorResponse","useNavigate","Fragment","jsx","jsxs","ErrorComponent","error","navigate","Button"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
"use strict";var s=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var v=(e,a)=>{for(var i in a)s(e,i,{get:a[i],enumerable:!0})},y=(e,a,i,o)=>{if(a&&typeof a=="object"||typeof a=="function")for(let n of x(a))!g.call(e,n)&&n!==i&&s(e,n,{get:()=>a[n],enumerable:!(o=f(a,n))||o.enumerable});return e};var k=e=>y(s({},"__esModule",{value:!0}),e);var N={};v(N,{CurrencyTransfer:()=>b});module.exports=k(N);var r=require("framer-motion");var l=require("clsx"),m=require("tailwind-merge");function c(...e){return(0,m.twMerge)((0,l.clsx)(e))}var d=require("react/jsx-runtime");function p({className:e,...a}){return(0,d.jsx)("div",{"data-slot":"card",className:c("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",e),...a})}function u({className:e,...a}){return(0,d.jsx)("div",{"data-slot":"card-content",className:c("px-6",e),...a})}var t=require("react/jsx-runtime");function h({size:e=100,strokeWidth:a=2,color:i="currentColor",className:o=""}){return(0,t.jsxs)(r.motion.svg,{width:e,height:e,viewBox:"0 0 100 100",initial:"hidden",animate:"visible",className:o,children:[(0,t.jsx)("title",{children:"Animated Checkmark"}),(0,t.jsx)(r.motion.circle,{cx:"50",cy:"50",r:"40",stroke:i,custom:0,style:{strokeWidth:a,strokeLinecap:"round",fill:"transparent"}}),(0,t.jsx)(r.motion.path,{d:"M30 50L45 65L70 35",stroke:i,custom:1,style:{strokeWidth:a,strokeLinecap:"round",strokeLinejoin:"round",fill:"transparent"}})]})}function b(){return(0,t.jsx)(p,{className:"w-full max-w-sm mx-auto p-6 min-h-[300px] flex flex-col justify-center bg-background",children:(0,t.jsxs)(u,{className:"space-y-4 flex flex-col items-center justify-center",children:[(0,t.jsx)(r.motion.div,{className:"flex justify-center",initial:{opacity:0,scale:.8},animate:{opacity:1,scale:1},transition:{duration:.4,ease:[.4,0,.2,1],scale:{type:"spring",damping:15,stiffness:200}},children:(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)(r.motion.div,{className:"absolute inset-0 bg-primary/5 rounded-full",initial:{opacity:0,scale:.8},animate:{opacity:1,scale:1},transition:{delay:.2,duration:.8,ease:"circOut"}}),(0,t.jsx)(h,{size:80,strokeWidth:4,color:"rgb(16 185 129)",className:"relative z-10 dark:drop-shadow-[0_0_10px_rgba(0,0,0,0.1)]"})]})}),(0,t.jsxs)(r.motion.div,{className:"space-y-2 text-center w-full",initial:{opacity:0,y:10},animate:{opacity:1,y:0},transition:{delay:.2,duration:.6,ease:[.4,0,.2,1]},children:[(0,t.jsx)(r.motion.h2,{className:"text-lg text-zinc-100 dark:text-zinc-900 tracking-tighter font-semibold uppercase",initial:{opacity:0,y:5},animate:{opacity:1,y:0},transition:{delay:1,duration:.4},children:"Transfer Successful"}),(0,t.jsx)("div",{className:"flex items-center gap-4",children:(0,t.jsx)(r.motion.div,{className:"flex-1 bg-zinc-800/50 dark:bg-zinc-50/50 rounded-xl p-3 border border-zinc-700/50 dark:border-zinc-200/50 backdrop-blur-md",initial:{opacity:0,scale:.95},animate:{opacity:1,scale:1},transition:{delay:1.2,duration:.4,ease:[.4,0,.2,1]},children:(0,t.jsxs)("div",{className:"flex flex-col items-start gap-2",children:[(0,t.jsxs)("div",{className:"space-y-1.5",children:[(0,t.jsxs)("span",{className:"text-xs font-medium text-secondary-foreground flex items-center gap-1.5",children:[(0,t.jsxs)("svg",{className:"w-3 h-3",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("title",{children:"From"}),(0,t.jsx)("path",{d:"M12 19V5M5 12l7-7 7 7"})]}),"From"]}),(0,t.jsxs)("div",{className:"flex items-center gap-2.5 group transition-all",children:[(0,t.jsx)("span",{className:"inline-flex items-center justify-center w-7 h-7 rounded-lg bg-zinc-900 dark:bg-white shadow-lg border border-zinc-700 dark:border-zinc-300 text-sm font-medium text-zinc-100 dark:text-zinc-900 group-hover:scale-105 transition-transform",children:"$"}),(0,t.jsx)("span",{className:"font-medium text-zinc-100 dark:text-zinc-900 tracking-tight",children:"500.00 USD"})]})]}),(0,t.jsx)("div",{className:"w-full h-px bg-gradient-to-r from-transparent via-zinc-700 dark:via-zinc-300 to-transparent"}),(0,t.jsxs)("div",{className:"space-y-1.5",children:[(0,t.jsxs)("span",{className:"text-xs font-medium text-secondary-foreground flex items-center gap-1.5",children:[(0,t.jsxs)("svg",{className:"w-3 h-3",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("title",{children:"To"}),(0,t.jsx)("path",{d:"M12 5v14M5 12l7 7 7-7"})]}),"To"]}),(0,t.jsxs)("div",{className:"flex items-center gap-2.5 group transition-all",children:[(0,t.jsx)("span",{className:"inline-flex items-center justify-center w-7 h-7 rounded-lg bg-zinc-900 dark:bg-white shadow-lg border border-zinc-700 dark:border-zinc-300 text-sm font-medium text-zinc-100 dark:text-zinc-900 group-hover:scale-105 transition-transform",children:"\u20AC"}),(0,t.jsx)("span",{className:"font-medium text-zinc-100 dark:text-zinc-900 tracking-tight",children:"460.00 EUR"})]})]})]})})}),(0,t.jsx)(r.motion.div,{className:"w-full text-xs text-secondary-foreground mt-2 text-center",initial:{opacity:0},animate:{opacity:1},transition:{delay:1.4,duration:.4},children:"Exchange Rate: 1 USD = 0.92 EUR"})]})]})})}0&&(module.exports={CurrencyTransfer});
|
|
3
|
+
//# sourceMappingURL=event-success.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/core/event-success.tsx","../../../src/lib/utils.ts","../../../src/components/ui/card.tsx"],"sourcesContent":["import { motion } from \"framer-motion\"\r\nimport { Card, CardContent } from \"../ui/card.jsx\"\r\n\r\ninterface CheckmarkProps {\r\n size?: number\r\n strokeWidth?: number\r\n color?: string\r\n className?: string\r\n}\r\n\r\n// const draw = {\r\n// hidden: { pathLength: 0, opacity: 0 },\r\n// visible: (i: number) => ({\r\n// pathLength: 1,\r\n// opacity: 1,\r\n// transition: {\r\n// pathLength: {\r\n// delay: i * 0.2,\r\n// type: \"spring\",\r\n// duration: 1.5,\r\n// bounce: 0.2,\r\n// ease: \"easeInOut\",\r\n// },\r\n// opacity: { delay: i * 0.2, duration: 0.2 },\r\n// },\r\n// }),\r\n// }\r\n\r\nfunction Checkmark({ size = 100, strokeWidth = 2, color = \"currentColor\", className = \"\" }: CheckmarkProps) {\r\n return (\r\n <motion.svg\r\n width={size}\r\n height={size}\r\n viewBox=\"0 0 100 100\"\r\n initial=\"hidden\"\r\n animate=\"visible\"\r\n className={className}\r\n >\r\n <title>Animated Checkmark</title>\r\n <motion.circle\r\n cx=\"50\"\r\n cy=\"50\"\r\n r=\"40\"\r\n stroke={color}\r\n custom={0}\r\n style={{\r\n strokeWidth,\r\n strokeLinecap: \"round\",\r\n fill: \"transparent\",\r\n }}\r\n />\r\n <motion.path\r\n d=\"M30 50L45 65L70 35\"\r\n stroke={color}\r\n custom={1}\r\n style={{\r\n strokeWidth,\r\n strokeLinecap: \"round\",\r\n strokeLinejoin: \"round\",\r\n fill: \"transparent\",\r\n }}\r\n />\r\n </motion.svg>\r\n )\r\n}\r\n\r\nexport function CurrencyTransfer() {\r\n return (\r\n <Card className=\"w-full max-w-sm mx-auto p-6 min-h-[300px] flex flex-col justify-center bg-background\">\r\n <CardContent className=\"space-y-4 flex flex-col items-center justify-center\">\r\n <motion.div\r\n className=\"flex justify-center\"\r\n initial={{ opacity: 0, scale: 0.8 }}\r\n animate={{ opacity: 1, scale: 1 }}\r\n transition={{\r\n duration: 0.4,\r\n ease: [0.4, 0, 0.2, 1],\r\n scale: {\r\n type: \"spring\",\r\n damping: 15,\r\n stiffness: 200,\r\n },\r\n }}\r\n >\r\n <div className=\"relative\">\r\n <motion.div\r\n className=\"absolute inset-0 bg-primary/5 rounded-full\"\r\n initial={{ opacity: 0, scale: 0.8 }}\r\n animate={{ opacity: 1, scale: 1 }}\r\n transition={{\r\n delay: 0.2,\r\n duration: 0.8,\r\n ease: \"circOut\",\r\n }}\r\n />\r\n <Checkmark\r\n size={80}\r\n strokeWidth={4}\r\n color=\"rgb(16 185 129)\"\r\n className=\"relative z-10 dark:drop-shadow-[0_0_10px_rgba(0,0,0,0.1)]\"\r\n />\r\n </div>\r\n </motion.div>\r\n <motion.div\r\n className=\"space-y-2 text-center w-full\"\r\n initial={{ opacity: 0, y: 10 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n transition={{\r\n delay: 0.2,\r\n duration: 0.6,\r\n ease: [0.4, 0, 0.2, 1],\r\n }}\r\n >\r\n <motion.h2\r\n className=\"text-lg text-zinc-100 dark:text-zinc-900 tracking-tighter font-semibold uppercase\"\r\n initial={{ opacity: 0, y: 5 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n transition={{ delay: 1, duration: 0.4 }}\r\n >\r\n Transfer Successful\r\n </motion.h2>\r\n <div className=\"flex items-center gap-4\">\r\n <motion.div\r\n className=\"flex-1 bg-zinc-800/50 dark:bg-zinc-50/50 rounded-xl p-3 border border-zinc-700/50 dark:border-zinc-200/50 backdrop-blur-md\"\r\n initial={{ opacity: 0, scale: 0.95 }}\r\n animate={{ opacity: 1, scale: 1 }}\r\n transition={{\r\n delay: 1.2,\r\n duration: 0.4,\r\n ease: [0.4, 0, 0.2, 1],\r\n }}\r\n >\r\n <div className=\"flex flex-col items-start gap-2\">\r\n <div className=\"space-y-1.5\">\r\n <span className=\"text-xs font-medium text-secondary-foreground flex items-center gap-1.5\">\r\n <svg\r\n className=\"w-3 h-3\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n >\r\n <title>From</title>\r\n <path d=\"M12 19V5M5 12l7-7 7 7\" />\r\n </svg>\r\n From\r\n </span>\r\n <div className=\"flex items-center gap-2.5 group transition-all\">\r\n <span className=\"inline-flex items-center justify-center w-7 h-7 rounded-lg bg-zinc-900 dark:bg-white shadow-lg border border-zinc-700 dark:border-zinc-300 text-sm font-medium text-zinc-100 dark:text-zinc-900 group-hover:scale-105 transition-transform\">\r\n $\r\n </span>\r\n <span className=\"font-medium text-zinc-100 dark:text-zinc-900 tracking-tight\">500.00 USD</span>\r\n </div>\r\n </div>\r\n <div className=\"w-full h-px bg-gradient-to-r from-transparent via-zinc-700 dark:via-zinc-300 to-transparent\" />\r\n <div className=\"space-y-1.5\">\r\n <span className=\"text-xs font-medium text-secondary-foreground flex items-center gap-1.5\">\r\n <svg\r\n className=\"w-3 h-3\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n >\r\n <title>To</title>\r\n <path d=\"M12 5v14M5 12l7 7 7-7\" />\r\n </svg>\r\n To\r\n </span>\r\n <div className=\"flex items-center gap-2.5 group transition-all\">\r\n <span className=\"inline-flex items-center justify-center w-7 h-7 rounded-lg bg-zinc-900 dark:bg-white shadow-lg border border-zinc-700 dark:border-zinc-300 text-sm font-medium text-zinc-100 dark:text-zinc-900 group-hover:scale-105 transition-transform\">\r\n €\r\n </span>\r\n <span className=\"font-medium text-zinc-100 dark:text-zinc-900 tracking-tight\">460.00 EUR</span>\r\n </div>\r\n </div>\r\n </div>\r\n </motion.div>\r\n </div>\r\n <motion.div\r\n className=\"w-full text-xs text-secondary-foreground mt-2 text-center\"\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\r\n transition={{ delay: 1.4, duration: 0.4 }}\r\n >\r\n Exchange Rate: 1 USD = 0.92 EUR\r\n </motion.div>\r\n </motion.div>\r\n </CardContent>\r\n </Card>\r\n )\r\n}\r\n","import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}","import * as React from \"react\"\n\nimport { cn } from \"../../lib/utils.js\"\n\nfunction Card({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card\"\n className={cn(\n \"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"leading-none font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-6\", className)}\n {...props}\n />\n )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"flex items-center px-6 [.border-t]:pt-6\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n}\n"],"mappings":"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","names":["event_success_exports","__export","CurrencyTransfer","__toCommonJS","import_framer_motion","import_clsx","import_tailwind_merge","cn","inputs","import_jsx_runtime","Card","className","props","cn","CardContent","className","props","cn","import_jsx_runtime","Checkmark","size","strokeWidth","color","className","CurrencyTransfer","Card","CardContent"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
import{motion as a}from"framer-motion";import{clsx as m}from"clsx";import{twMerge as p}from"tailwind-merge";function n(...r){return p(m(r))}import{jsx as d}from"react/jsx-runtime";function s({className:r,...i}){return d("div",{"data-slot":"card",className:n("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",r),...i})}function c({className:r,...i}){return d("div",{"data-slot":"card-content",className:n("px-6",r),...i})}import{jsx as t,jsxs as e}from"react/jsx-runtime";function u({size:r=100,strokeWidth:i=2,color:o="currentColor",className:l=""}){return e(a.svg,{width:r,height:r,viewBox:"0 0 100 100",initial:"hidden",animate:"visible",className:l,children:[t("title",{children:"Animated Checkmark"}),t(a.circle,{cx:"50",cy:"50",r:"40",stroke:o,custom:0,style:{strokeWidth:i,strokeLinecap:"round",fill:"transparent"}}),t(a.path,{d:"M30 50L45 65L70 35",stroke:o,custom:1,style:{strokeWidth:i,strokeLinecap:"round",strokeLinejoin:"round",fill:"transparent"}})]})}function N(){return t(s,{className:"w-full max-w-sm mx-auto p-6 min-h-[300px] flex flex-col justify-center bg-background",children:e(c,{className:"space-y-4 flex flex-col items-center justify-center",children:[t(a.div,{className:"flex justify-center",initial:{opacity:0,scale:.8},animate:{opacity:1,scale:1},transition:{duration:.4,ease:[.4,0,.2,1],scale:{type:"spring",damping:15,stiffness:200}},children:e("div",{className:"relative",children:[t(a.div,{className:"absolute inset-0 bg-primary/5 rounded-full",initial:{opacity:0,scale:.8},animate:{opacity:1,scale:1},transition:{delay:.2,duration:.8,ease:"circOut"}}),t(u,{size:80,strokeWidth:4,color:"rgb(16 185 129)",className:"relative z-10 dark:drop-shadow-[0_0_10px_rgba(0,0,0,0.1)]"})]})}),e(a.div,{className:"space-y-2 text-center w-full",initial:{opacity:0,y:10},animate:{opacity:1,y:0},transition:{delay:.2,duration:.6,ease:[.4,0,.2,1]},children:[t(a.h2,{className:"text-lg text-zinc-100 dark:text-zinc-900 tracking-tighter font-semibold uppercase",initial:{opacity:0,y:5},animate:{opacity:1,y:0},transition:{delay:1,duration:.4},children:"Transfer Successful"}),t("div",{className:"flex items-center gap-4",children:t(a.div,{className:"flex-1 bg-zinc-800/50 dark:bg-zinc-50/50 rounded-xl p-3 border border-zinc-700/50 dark:border-zinc-200/50 backdrop-blur-md",initial:{opacity:0,scale:.95},animate:{opacity:1,scale:1},transition:{delay:1.2,duration:.4,ease:[.4,0,.2,1]},children:e("div",{className:"flex flex-col items-start gap-2",children:[e("div",{className:"space-y-1.5",children:[e("span",{className:"text-xs font-medium text-secondary-foreground flex items-center gap-1.5",children:[e("svg",{className:"w-3 h-3",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[t("title",{children:"From"}),t("path",{d:"M12 19V5M5 12l7-7 7 7"})]}),"From"]}),e("div",{className:"flex items-center gap-2.5 group transition-all",children:[t("span",{className:"inline-flex items-center justify-center w-7 h-7 rounded-lg bg-zinc-900 dark:bg-white shadow-lg border border-zinc-700 dark:border-zinc-300 text-sm font-medium text-zinc-100 dark:text-zinc-900 group-hover:scale-105 transition-transform",children:"$"}),t("span",{className:"font-medium text-zinc-100 dark:text-zinc-900 tracking-tight",children:"500.00 USD"})]})]}),t("div",{className:"w-full h-px bg-gradient-to-r from-transparent via-zinc-700 dark:via-zinc-300 to-transparent"}),e("div",{className:"space-y-1.5",children:[e("span",{className:"text-xs font-medium text-secondary-foreground flex items-center gap-1.5",children:[e("svg",{className:"w-3 h-3",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[t("title",{children:"To"}),t("path",{d:"M12 5v14M5 12l7 7 7-7"})]}),"To"]}),e("div",{className:"flex items-center gap-2.5 group transition-all",children:[t("span",{className:"inline-flex items-center justify-center w-7 h-7 rounded-lg bg-zinc-900 dark:bg-white shadow-lg border border-zinc-700 dark:border-zinc-300 text-sm font-medium text-zinc-100 dark:text-zinc-900 group-hover:scale-105 transition-transform",children:"\u20AC"}),t("span",{className:"font-medium text-zinc-100 dark:text-zinc-900 tracking-tight",children:"460.00 EUR"})]})]})]})})}),t(a.div,{className:"w-full text-xs text-secondary-foreground mt-2 text-center",initial:{opacity:0},animate:{opacity:1},transition:{delay:1.4,duration:.4},children:"Exchange Rate: 1 USD = 0.92 EUR"})]})]})})}export{N as CurrencyTransfer};
|
|
3
|
+
//# sourceMappingURL=event-success.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/core/event-success.tsx","../../../src/lib/utils.ts","../../../src/components/ui/card.tsx"],"sourcesContent":["import { motion } from \"framer-motion\"\r\nimport { Card, CardContent } from \"../ui/card.jsx\"\r\n\r\ninterface CheckmarkProps {\r\n size?: number\r\n strokeWidth?: number\r\n color?: string\r\n className?: string\r\n}\r\n\r\n// const draw = {\r\n// hidden: { pathLength: 0, opacity: 0 },\r\n// visible: (i: number) => ({\r\n// pathLength: 1,\r\n// opacity: 1,\r\n// transition: {\r\n// pathLength: {\r\n// delay: i * 0.2,\r\n// type: \"spring\",\r\n// duration: 1.5,\r\n// bounce: 0.2,\r\n// ease: \"easeInOut\",\r\n// },\r\n// opacity: { delay: i * 0.2, duration: 0.2 },\r\n// },\r\n// }),\r\n// }\r\n\r\nfunction Checkmark({ size = 100, strokeWidth = 2, color = \"currentColor\", className = \"\" }: CheckmarkProps) {\r\n return (\r\n <motion.svg\r\n width={size}\r\n height={size}\r\n viewBox=\"0 0 100 100\"\r\n initial=\"hidden\"\r\n animate=\"visible\"\r\n className={className}\r\n >\r\n <title>Animated Checkmark</title>\r\n <motion.circle\r\n cx=\"50\"\r\n cy=\"50\"\r\n r=\"40\"\r\n stroke={color}\r\n custom={0}\r\n style={{\r\n strokeWidth,\r\n strokeLinecap: \"round\",\r\n fill: \"transparent\",\r\n }}\r\n />\r\n <motion.path\r\n d=\"M30 50L45 65L70 35\"\r\n stroke={color}\r\n custom={1}\r\n style={{\r\n strokeWidth,\r\n strokeLinecap: \"round\",\r\n strokeLinejoin: \"round\",\r\n fill: \"transparent\",\r\n }}\r\n />\r\n </motion.svg>\r\n )\r\n}\r\n\r\nexport function CurrencyTransfer() {\r\n return (\r\n <Card className=\"w-full max-w-sm mx-auto p-6 min-h-[300px] flex flex-col justify-center bg-background\">\r\n <CardContent className=\"space-y-4 flex flex-col items-center justify-center\">\r\n <motion.div\r\n className=\"flex justify-center\"\r\n initial={{ opacity: 0, scale: 0.8 }}\r\n animate={{ opacity: 1, scale: 1 }}\r\n transition={{\r\n duration: 0.4,\r\n ease: [0.4, 0, 0.2, 1],\r\n scale: {\r\n type: \"spring\",\r\n damping: 15,\r\n stiffness: 200,\r\n },\r\n }}\r\n >\r\n <div className=\"relative\">\r\n <motion.div\r\n className=\"absolute inset-0 bg-primary/5 rounded-full\"\r\n initial={{ opacity: 0, scale: 0.8 }}\r\n animate={{ opacity: 1, scale: 1 }}\r\n transition={{\r\n delay: 0.2,\r\n duration: 0.8,\r\n ease: \"circOut\",\r\n }}\r\n />\r\n <Checkmark\r\n size={80}\r\n strokeWidth={4}\r\n color=\"rgb(16 185 129)\"\r\n className=\"relative z-10 dark:drop-shadow-[0_0_10px_rgba(0,0,0,0.1)]\"\r\n />\r\n </div>\r\n </motion.div>\r\n <motion.div\r\n className=\"space-y-2 text-center w-full\"\r\n initial={{ opacity: 0, y: 10 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n transition={{\r\n delay: 0.2,\r\n duration: 0.6,\r\n ease: [0.4, 0, 0.2, 1],\r\n }}\r\n >\r\n <motion.h2\r\n className=\"text-lg text-zinc-100 dark:text-zinc-900 tracking-tighter font-semibold uppercase\"\r\n initial={{ opacity: 0, y: 5 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n transition={{ delay: 1, duration: 0.4 }}\r\n >\r\n Transfer Successful\r\n </motion.h2>\r\n <div className=\"flex items-center gap-4\">\r\n <motion.div\r\n className=\"flex-1 bg-zinc-800/50 dark:bg-zinc-50/50 rounded-xl p-3 border border-zinc-700/50 dark:border-zinc-200/50 backdrop-blur-md\"\r\n initial={{ opacity: 0, scale: 0.95 }}\r\n animate={{ opacity: 1, scale: 1 }}\r\n transition={{\r\n delay: 1.2,\r\n duration: 0.4,\r\n ease: [0.4, 0, 0.2, 1],\r\n }}\r\n >\r\n <div className=\"flex flex-col items-start gap-2\">\r\n <div className=\"space-y-1.5\">\r\n <span className=\"text-xs font-medium text-secondary-foreground flex items-center gap-1.5\">\r\n <svg\r\n className=\"w-3 h-3\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n >\r\n <title>From</title>\r\n <path d=\"M12 19V5M5 12l7-7 7 7\" />\r\n </svg>\r\n From\r\n </span>\r\n <div className=\"flex items-center gap-2.5 group transition-all\">\r\n <span className=\"inline-flex items-center justify-center w-7 h-7 rounded-lg bg-zinc-900 dark:bg-white shadow-lg border border-zinc-700 dark:border-zinc-300 text-sm font-medium text-zinc-100 dark:text-zinc-900 group-hover:scale-105 transition-transform\">\r\n $\r\n </span>\r\n <span className=\"font-medium text-zinc-100 dark:text-zinc-900 tracking-tight\">500.00 USD</span>\r\n </div>\r\n </div>\r\n <div className=\"w-full h-px bg-gradient-to-r from-transparent via-zinc-700 dark:via-zinc-300 to-transparent\" />\r\n <div className=\"space-y-1.5\">\r\n <span className=\"text-xs font-medium text-secondary-foreground flex items-center gap-1.5\">\r\n <svg\r\n className=\"w-3 h-3\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n >\r\n <title>To</title>\r\n <path d=\"M12 5v14M5 12l7 7 7-7\" />\r\n </svg>\r\n To\r\n </span>\r\n <div className=\"flex items-center gap-2.5 group transition-all\">\r\n <span className=\"inline-flex items-center justify-center w-7 h-7 rounded-lg bg-zinc-900 dark:bg-white shadow-lg border border-zinc-700 dark:border-zinc-300 text-sm font-medium text-zinc-100 dark:text-zinc-900 group-hover:scale-105 transition-transform\">\r\n €\r\n </span>\r\n <span className=\"font-medium text-zinc-100 dark:text-zinc-900 tracking-tight\">460.00 EUR</span>\r\n </div>\r\n </div>\r\n </div>\r\n </motion.div>\r\n </div>\r\n <motion.div\r\n className=\"w-full text-xs text-secondary-foreground mt-2 text-center\"\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\r\n transition={{ delay: 1.4, duration: 0.4 }}\r\n >\r\n Exchange Rate: 1 USD = 0.92 EUR\r\n </motion.div>\r\n </motion.div>\r\n </CardContent>\r\n </Card>\r\n )\r\n}\r\n","import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}","import * as React from \"react\"\n\nimport { cn } from \"../../lib/utils.js\"\n\nfunction Card({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card\"\n className={cn(\n \"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"leading-none font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-6\", className)}\n {...props}\n />\n )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"flex items-center px-6 [.border-t]:pt-6\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n}\n"],"mappings":"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","names":["motion","clsx","twMerge","cn","inputs","jsx","Card","className","props","cn","CardContent","className","props","jsx","cn","jsx","jsxs","Checkmark","size","strokeWidth","color","className","motion","CurrencyTransfer","Card","CardContent"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
"use strict";var v=Object.defineProperty;var F=Object.getOwnPropertyDescriptor;var I=Object.getOwnPropertyNames;var M=Object.prototype.hasOwnProperty;var O=(e,r)=>{for(var o in r)v(e,o,{get:r[o],enumerable:!0})},G=(e,r,o,m)=>{if(r&&typeof r=="object"||typeof r=="function")for(let d of I(r))!M.call(e,d)&&d!==o&&v(e,d,{get:()=>r[d],enumerable:!(m=F(r,d))||m.enumerable});return e};var W=e=>G(v({},"__esModule",{value:!0}),e);var Y={};O(Y,{CurrencyTransfer:()=>R,ErrorComponent:()=>z,Loader:()=>P,NotFound:()=>U,OfflineUI:()=>V,Unauthorized:()=>j});module.exports=W(Y);var y=require("radix-ui"),k=require("class-variance-authority");var b=require("clsx"),N=require("tailwind-merge");function f(...e){return(0,N.twMerge)((0,b.clsx)(e))}var w=require("react/jsx-runtime"),A=(0,k.cva)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",destructive:"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9"}},defaultVariants:{variant:"default",size:"default"}});function c({className:e,variant:r,size:o,asChild:m=!1,...d}){let D=m?y.Slot.Slot:"button";return(0,w.jsx)(D,{"data-slot":"button",className:f(A({variant:r,size:o,className:e}),"transition-none"),...d})}var C=require("lucide-react"),u=require("react-router"),a=require("react/jsx-runtime"),z=()=>{let e=(0,u.useRouteError)(),r=(0,u.useNavigate)();return(0,a.jsx)("div",{className:"rounded-2xl flex justify-center items-center h-full bg-sidebar px-4",children:(0,a.jsxs)("div",{className:"flex flex-col items-center space-y-4 text-center",children:[(0,a.jsx)(C.AlertTriangleIcon,{className:"h-16 w-16 text-destructive"}),(0,u.isRouteErrorResponse)(e)?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("h2",{className:"text-3xl font-semibold text-destructive",children:["Error ",e.status,": ",e.statusText]}),typeof e.data=="string"?(0,a.jsx)("pre",{className:"text-lg text-muted-foreground whitespace-pre-wrap max-w-4xl text-left",children:e.data}):e.data?.message&&(0,a.jsx)("pre",{className:"text-lg text-muted-foreground whitespace-pre-wrap max-w-4xl text-left",children:e.data.message})]}):e instanceof Error?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("h2",{className:"text-3xl font-semibold text-destructive",children:"Unexpected Error"}),(0,a.jsx)("pre",{className:"text-lg text-muted-foreground whitespace-pre-wrap max-w-4xl text-left",children:e.message}),e.stack&&(0,a.jsxs)("details",{className:"mt-2 text-sm text-muted-foreground max-w-4xl text-left",children:[(0,a.jsx)("summary",{className:"cursor-pointer underline",children:"Stack Trace"}),(0,a.jsx)("pre",{className:"whitespace-pre-wrap",children:e.stack})]})]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("h2",{className:"text-3xl font-semibold text-destructive",children:"Unknown Error"}),(0,a.jsx)("pre",{className:"text-lg text-muted-foreground whitespace-pre-wrap max-w-4xl text-left",children:typeof e=="string"?e:JSON.stringify(e,null,2)})]}),(0,a.jsx)(c,{variant:"outline",onClick:()=>r(-1),children:"Go Back"})]})})};var s=require("framer-motion");var h=require("react/jsx-runtime");function B({className:e,...r}){return(0,h.jsx)("div",{"data-slot":"card",className:f("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",e),...r})}function L({className:e,...r}){return(0,h.jsx)("div",{"data-slot":"card-content",className:f("px-6",e),...r})}var t=require("react/jsx-runtime");function H({size:e=100,strokeWidth:r=2,color:o="currentColor",className:m=""}){return(0,t.jsxs)(s.motion.svg,{width:e,height:e,viewBox:"0 0 100 100",initial:"hidden",animate:"visible",className:m,children:[(0,t.jsx)("title",{children:"Animated Checkmark"}),(0,t.jsx)(s.motion.circle,{cx:"50",cy:"50",r:"40",stroke:o,custom:0,style:{strokeWidth:r,strokeLinecap:"round",fill:"transparent"}}),(0,t.jsx)(s.motion.path,{d:"M30 50L45 65L70 35",stroke:o,custom:1,style:{strokeWidth:r,strokeLinecap:"round",strokeLinejoin:"round",fill:"transparent"}})]})}function R(){return(0,t.jsx)(B,{className:"w-full max-w-sm mx-auto p-6 min-h-[300px] flex flex-col justify-center bg-background",children:(0,t.jsxs)(L,{className:"space-y-4 flex flex-col items-center justify-center",children:[(0,t.jsx)(s.motion.div,{className:"flex justify-center",initial:{opacity:0,scale:.8},animate:{opacity:1,scale:1},transition:{duration:.4,ease:[.4,0,.2,1],scale:{type:"spring",damping:15,stiffness:200}},children:(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)(s.motion.div,{className:"absolute inset-0 bg-primary/5 rounded-full",initial:{opacity:0,scale:.8},animate:{opacity:1,scale:1},transition:{delay:.2,duration:.8,ease:"circOut"}}),(0,t.jsx)(H,{size:80,strokeWidth:4,color:"rgb(16 185 129)",className:"relative z-10 dark:drop-shadow-[0_0_10px_rgba(0,0,0,0.1)]"})]})}),(0,t.jsxs)(s.motion.div,{className:"space-y-2 text-center w-full",initial:{opacity:0,y:10},animate:{opacity:1,y:0},transition:{delay:.2,duration:.6,ease:[.4,0,.2,1]},children:[(0,t.jsx)(s.motion.h2,{className:"text-lg text-zinc-100 dark:text-zinc-900 tracking-tighter font-semibold uppercase",initial:{opacity:0,y:5},animate:{opacity:1,y:0},transition:{delay:1,duration:.4},children:"Transfer Successful"}),(0,t.jsx)("div",{className:"flex items-center gap-4",children:(0,t.jsx)(s.motion.div,{className:"flex-1 bg-zinc-800/50 dark:bg-zinc-50/50 rounded-xl p-3 border border-zinc-700/50 dark:border-zinc-200/50 backdrop-blur-md",initial:{opacity:0,scale:.95},animate:{opacity:1,scale:1},transition:{delay:1.2,duration:.4,ease:[.4,0,.2,1]},children:(0,t.jsxs)("div",{className:"flex flex-col items-start gap-2",children:[(0,t.jsxs)("div",{className:"space-y-1.5",children:[(0,t.jsxs)("span",{className:"text-xs font-medium text-secondary-foreground flex items-center gap-1.5",children:[(0,t.jsxs)("svg",{className:"w-3 h-3",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("title",{children:"From"}),(0,t.jsx)("path",{d:"M12 19V5M5 12l7-7 7 7"})]}),"From"]}),(0,t.jsxs)("div",{className:"flex items-center gap-2.5 group transition-all",children:[(0,t.jsx)("span",{className:"inline-flex items-center justify-center w-7 h-7 rounded-lg bg-zinc-900 dark:bg-white shadow-lg border border-zinc-700 dark:border-zinc-300 text-sm font-medium text-zinc-100 dark:text-zinc-900 group-hover:scale-105 transition-transform",children:"$"}),(0,t.jsx)("span",{className:"font-medium text-zinc-100 dark:text-zinc-900 tracking-tight",children:"500.00 USD"})]})]}),(0,t.jsx)("div",{className:"w-full h-px bg-gradient-to-r from-transparent via-zinc-700 dark:via-zinc-300 to-transparent"}),(0,t.jsxs)("div",{className:"space-y-1.5",children:[(0,t.jsxs)("span",{className:"text-xs font-medium text-secondary-foreground flex items-center gap-1.5",children:[(0,t.jsxs)("svg",{className:"w-3 h-3",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("title",{children:"To"}),(0,t.jsx)("path",{d:"M12 5v14M5 12l7 7 7-7"})]}),"To"]}),(0,t.jsxs)("div",{className:"flex items-center gap-2.5 group transition-all",children:[(0,t.jsx)("span",{className:"inline-flex items-center justify-center w-7 h-7 rounded-lg bg-zinc-900 dark:bg-white shadow-lg border border-zinc-700 dark:border-zinc-300 text-sm font-medium text-zinc-100 dark:text-zinc-900 group-hover:scale-105 transition-transform",children:"\u20AC"}),(0,t.jsx)("span",{className:"font-medium text-zinc-100 dark:text-zinc-900 tracking-tight",children:"460.00 EUR"})]})]})]})})}),(0,t.jsx)(s.motion.div,{className:"w-full text-xs text-secondary-foreground mt-2 text-center",initial:{opacity:0},animate:{opacity:1},transition:{delay:1.4,duration:.4},children:"Exchange Rate: 1 USD = 0.92 EUR"})]})]})})}var l=require("react/jsx-runtime"),P=()=>(0,l.jsx)("div",{className:"rounded-2xl flex justify-center items-center h-full bg-transparent",children:(0,l.jsxs)("div",{className:"flex flex-col items-center space-y-4",children:[(0,l.jsx)("div",{className:"animate-spin rounded-full border-t-4 border-ring h-16 w-16 mb-4"}),(0,l.jsx)("h2",{className:"text-xl font-semibold text-muted-foreground",children:"Loading, please wait..."}),(0,l.jsx)("p",{className:"text-sm text-muted-foreground",children:"Your content is on its way."})]})});var E=require("react-router");var T=require("lucide-react"),x=require("react-router"),n=require("react/jsx-runtime"),U=()=>{let e=(0,E.useLocation)(),r=(0,x.useNavigate)(),o=()=>{window.history.length>2?r(-1):r("/")};return(0,n.jsxs)("div",{className:"rounded-2xl flex flex-col items-center justify-center h-full p-6 text-center bg-sidebar text-muted-foreground select-none",children:[(0,n.jsx)(T.GhostIcon,{className:"h-15 w-15 text-destructive mb-4"}),(0,n.jsx)("h1",{className:"text-2xl font-bold text-destructive mb-2",children:"Page Not Found"}),(0,n.jsxs)("p",{className:"text-xl mb-4",children:["The page ",(0,n.jsx)("code",{className:"px-1 py-0.5 rounded bg-muted text-foreground",children:e.pathname})," doesn't exist or has been moved."]}),(0,n.jsxs)("div",{className:"flex space-x-4",children:[(0,n.jsx)(c,{variant:"outline",onClick:o,children:"Go Back"}),(0,n.jsx)(c,{variant:"ghost",children:(0,n.jsx)(x.NavLink,{to:"/",children:"Return Home"})})]})]})};var S=require("lucide-react"),p=require("react/jsx-runtime"),V=()=>(0,p.jsxs)("div",{className:"rounded-2xl flex flex-col items-center justify-center h-screen p-6 text-center text-muted-foreground bg-background select-none",children:[(0,p.jsx)(S.WifiOffIcon,{className:"h-15 w-15 text-destructive mb-4"}),(0,p.jsx)("h1",{className:"text-3xl font-bold text-destructive mb-2",children:"You're offline"}),(0,p.jsx)("p",{className:"text-xl max-w-md",children:"We couldn't connect to the server."})]});var _=require("lucide-react");var g=require("react-router"),i=require("react/jsx-runtime"),j=()=>{let e=(0,g.useNavigate)();return(0,i.jsxs)("div",{className:"rounded-2xl flex flex-col items-center justify-center h-full p-6 text-center bg-sidebar text-muted-foreground select-none",children:[(0,i.jsx)(_.ShieldOffIcon,{className:"h-15 w-15 text-destructive mb-4"}),(0,i.jsx)("h1",{className:"text-2xl font-bold text-destructive mb-2",children:"Access Denied"}),(0,i.jsx)("p",{className:"text-xl mb-4",children:"You don't have permission to view this page. Please sign in with an authorized account or contact your administrator."}),(0,i.jsxs)("div",{className:"flex space-x-4",children:[(0,i.jsx)(c,{variant:"outline",onClick:()=>{window.history.length>2?e(-1):e("/")},children:"Go Back"}),(0,i.jsx)(c,{variant:"ghost",children:(0,i.jsx)(g.NavLink,{to:"/",children:"Go to Home"})})]})]})};0&&(module.exports={CurrencyTransfer,ErrorComponent,Loader,NotFound,OfflineUI,Unauthorized});
|
|
3
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/core/index.ts","../../../src/components/ui/button.tsx","../../../src/lib/utils.ts","../../../src/components/core/error.tsx","../../../src/components/core/event-success.tsx","../../../src/components/ui/card.tsx","../../../src/components/core/loader.tsx","../../../src/components/core/notfound.tsx","../../../src/components/core/offline-content.tsx","../../../src/components/core/unauthorized.tsx"],"sourcesContent":["export { ErrorComponent } from \"./error.jsx\"\r\nexport { CurrencyTransfer } from \"./event-success.jsx\"\r\nexport { Loader } from \"./loader.jsx\"\r\nexport { NotFound } from \"./notfound.jsx\"\r\nexport { OfflineUI } from \"./offline-content.jsx\"\r\nexport { Unauthorized } from \"./unauthorized.jsx\"","import * as React from \"react\"\nimport { Slot as SlotPrimitive } from \"radix-ui\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils.js\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80\",\n ghost:\n \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? SlotPrimitive.Slot : \"button\"\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }), \"transition-none\")}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}","import { Button } from \"../ui/button.jsx\";\r\nimport { AlertTriangleIcon } from \"lucide-react\";\r\nimport { useRouteError, isRouteErrorResponse, useNavigate } from \"react-router\";\r\n\r\nexport const ErrorComponent = () => {\r\n const error: any = useRouteError();\r\n const navigate = useNavigate();\r\n\r\n const renderErrorDetails = () => {\r\n if (isRouteErrorResponse(error)) {\r\n return (\r\n <>\r\n <h2 className=\"text-3xl font-semibold text-destructive\">\r\n Error {error.status}: {error.statusText}\r\n </h2>\r\n {typeof error.data === \"string\" ? (\r\n <pre className=\"text-lg text-muted-foreground whitespace-pre-wrap max-w-4xl text-left\">\r\n {error.data}\r\n </pre>\r\n ) : (\r\n error.data?.message && (\r\n <pre className=\"text-lg text-muted-foreground whitespace-pre-wrap max-w-4xl text-left\">\r\n {error.data.message}\r\n </pre>\r\n )\r\n )}\r\n </>\r\n );\r\n }\r\n\r\n if (error instanceof Error) {\r\n return (\r\n <>\r\n <h2 className=\"text-3xl font-semibold text-destructive\">Unexpected Error</h2>\r\n <pre className=\"text-lg text-muted-foreground whitespace-pre-wrap max-w-4xl text-left\">\r\n {error.message}\r\n </pre>\r\n {error.stack && (\r\n <details className=\"mt-2 text-sm text-muted-foreground max-w-4xl text-left\">\r\n <summary className=\"cursor-pointer underline\">Stack Trace</summary>\r\n <pre className=\"whitespace-pre-wrap\">{error.stack}</pre>\r\n </details>\r\n )}\r\n </>\r\n );\r\n }\r\n\r\n return (\r\n <>\r\n <h2 className=\"text-3xl font-semibold text-destructive\">Unknown Error</h2>\r\n <pre className=\"text-lg text-muted-foreground whitespace-pre-wrap max-w-4xl text-left\">\r\n {typeof error === \"string\"\r\n ? error\r\n : JSON.stringify(error, null, 2)}\r\n </pre>\r\n </>\r\n );\r\n };\r\n\r\n return (\r\n <div className=\"rounded-2xl flex justify-center items-center h-full bg-sidebar px-4\">\r\n <div className=\"flex flex-col items-center space-y-4 text-center\">\r\n <AlertTriangleIcon className=\"h-16 w-16 text-destructive\" />\r\n {renderErrorDetails()}\r\n <Button variant=\"outline\" onClick={() => navigate(-1)}>\r\n Go Back\r\n </Button>\r\n </div>\r\n </div>\r\n );\r\n};\r\n","import { motion } from \"framer-motion\"\r\nimport { Card, CardContent } from \"../ui/card.jsx\"\r\n\r\ninterface CheckmarkProps {\r\n size?: number\r\n strokeWidth?: number\r\n color?: string\r\n className?: string\r\n}\r\n\r\n// const draw = {\r\n// hidden: { pathLength: 0, opacity: 0 },\r\n// visible: (i: number) => ({\r\n// pathLength: 1,\r\n// opacity: 1,\r\n// transition: {\r\n// pathLength: {\r\n// delay: i * 0.2,\r\n// type: \"spring\",\r\n// duration: 1.5,\r\n// bounce: 0.2,\r\n// ease: \"easeInOut\",\r\n// },\r\n// opacity: { delay: i * 0.2, duration: 0.2 },\r\n// },\r\n// }),\r\n// }\r\n\r\nfunction Checkmark({ size = 100, strokeWidth = 2, color = \"currentColor\", className = \"\" }: CheckmarkProps) {\r\n return (\r\n <motion.svg\r\n width={size}\r\n height={size}\r\n viewBox=\"0 0 100 100\"\r\n initial=\"hidden\"\r\n animate=\"visible\"\r\n className={className}\r\n >\r\n <title>Animated Checkmark</title>\r\n <motion.circle\r\n cx=\"50\"\r\n cy=\"50\"\r\n r=\"40\"\r\n stroke={color}\r\n custom={0}\r\n style={{\r\n strokeWidth,\r\n strokeLinecap: \"round\",\r\n fill: \"transparent\",\r\n }}\r\n />\r\n <motion.path\r\n d=\"M30 50L45 65L70 35\"\r\n stroke={color}\r\n custom={1}\r\n style={{\r\n strokeWidth,\r\n strokeLinecap: \"round\",\r\n strokeLinejoin: \"round\",\r\n fill: \"transparent\",\r\n }}\r\n />\r\n </motion.svg>\r\n )\r\n}\r\n\r\nexport function CurrencyTransfer() {\r\n return (\r\n <Card className=\"w-full max-w-sm mx-auto p-6 min-h-[300px] flex flex-col justify-center bg-background\">\r\n <CardContent className=\"space-y-4 flex flex-col items-center justify-center\">\r\n <motion.div\r\n className=\"flex justify-center\"\r\n initial={{ opacity: 0, scale: 0.8 }}\r\n animate={{ opacity: 1, scale: 1 }}\r\n transition={{\r\n duration: 0.4,\r\n ease: [0.4, 0, 0.2, 1],\r\n scale: {\r\n type: \"spring\",\r\n damping: 15,\r\n stiffness: 200,\r\n },\r\n }}\r\n >\r\n <div className=\"relative\">\r\n <motion.div\r\n className=\"absolute inset-0 bg-primary/5 rounded-full\"\r\n initial={{ opacity: 0, scale: 0.8 }}\r\n animate={{ opacity: 1, scale: 1 }}\r\n transition={{\r\n delay: 0.2,\r\n duration: 0.8,\r\n ease: \"circOut\",\r\n }}\r\n />\r\n <Checkmark\r\n size={80}\r\n strokeWidth={4}\r\n color=\"rgb(16 185 129)\"\r\n className=\"relative z-10 dark:drop-shadow-[0_0_10px_rgba(0,0,0,0.1)]\"\r\n />\r\n </div>\r\n </motion.div>\r\n <motion.div\r\n className=\"space-y-2 text-center w-full\"\r\n initial={{ opacity: 0, y: 10 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n transition={{\r\n delay: 0.2,\r\n duration: 0.6,\r\n ease: [0.4, 0, 0.2, 1],\r\n }}\r\n >\r\n <motion.h2\r\n className=\"text-lg text-zinc-100 dark:text-zinc-900 tracking-tighter font-semibold uppercase\"\r\n initial={{ opacity: 0, y: 5 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n transition={{ delay: 1, duration: 0.4 }}\r\n >\r\n Transfer Successful\r\n </motion.h2>\r\n <div className=\"flex items-center gap-4\">\r\n <motion.div\r\n className=\"flex-1 bg-zinc-800/50 dark:bg-zinc-50/50 rounded-xl p-3 border border-zinc-700/50 dark:border-zinc-200/50 backdrop-blur-md\"\r\n initial={{ opacity: 0, scale: 0.95 }}\r\n animate={{ opacity: 1, scale: 1 }}\r\n transition={{\r\n delay: 1.2,\r\n duration: 0.4,\r\n ease: [0.4, 0, 0.2, 1],\r\n }}\r\n >\r\n <div className=\"flex flex-col items-start gap-2\">\r\n <div className=\"space-y-1.5\">\r\n <span className=\"text-xs font-medium text-secondary-foreground flex items-center gap-1.5\">\r\n <svg\r\n className=\"w-3 h-3\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n >\r\n <title>From</title>\r\n <path d=\"M12 19V5M5 12l7-7 7 7\" />\r\n </svg>\r\n From\r\n </span>\r\n <div className=\"flex items-center gap-2.5 group transition-all\">\r\n <span className=\"inline-flex items-center justify-center w-7 h-7 rounded-lg bg-zinc-900 dark:bg-white shadow-lg border border-zinc-700 dark:border-zinc-300 text-sm font-medium text-zinc-100 dark:text-zinc-900 group-hover:scale-105 transition-transform\">\r\n $\r\n </span>\r\n <span className=\"font-medium text-zinc-100 dark:text-zinc-900 tracking-tight\">500.00 USD</span>\r\n </div>\r\n </div>\r\n <div className=\"w-full h-px bg-gradient-to-r from-transparent via-zinc-700 dark:via-zinc-300 to-transparent\" />\r\n <div className=\"space-y-1.5\">\r\n <span className=\"text-xs font-medium text-secondary-foreground flex items-center gap-1.5\">\r\n <svg\r\n className=\"w-3 h-3\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n >\r\n <title>To</title>\r\n <path d=\"M12 5v14M5 12l7 7 7-7\" />\r\n </svg>\r\n To\r\n </span>\r\n <div className=\"flex items-center gap-2.5 group transition-all\">\r\n <span className=\"inline-flex items-center justify-center w-7 h-7 rounded-lg bg-zinc-900 dark:bg-white shadow-lg border border-zinc-700 dark:border-zinc-300 text-sm font-medium text-zinc-100 dark:text-zinc-900 group-hover:scale-105 transition-transform\">\r\n €\r\n </span>\r\n <span className=\"font-medium text-zinc-100 dark:text-zinc-900 tracking-tight\">460.00 EUR</span>\r\n </div>\r\n </div>\r\n </div>\r\n </motion.div>\r\n </div>\r\n <motion.div\r\n className=\"w-full text-xs text-secondary-foreground mt-2 text-center\"\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\r\n transition={{ delay: 1.4, duration: 0.4 }}\r\n >\r\n Exchange Rate: 1 USD = 0.92 EUR\r\n </motion.div>\r\n </motion.div>\r\n </CardContent>\r\n </Card>\r\n )\r\n}\r\n","import * as React from \"react\"\n\nimport { cn } from \"../../lib/utils.js\"\n\nfunction Card({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card\"\n className={cn(\n \"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"leading-none font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-6\", className)}\n {...props}\n />\n )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"flex items-center px-6 [.border-t]:pt-6\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n}\n","export const Loader = () => {\r\n return (\r\n <div className=\"rounded-2xl flex justify-center items-center h-full bg-transparent\">\r\n <div className=\"flex flex-col items-center space-y-4\">\r\n <div className=\"animate-spin rounded-full border-t-4 border-ring h-16 w-16 mb-4\" />\r\n <h2 className=\"text-xl font-semibold text-muted-foreground\">Loading, please wait...</h2>\r\n <p className=\"text-sm text-muted-foreground\">Your content is on its way.</p>\r\n </div>\r\n </div>\r\n );\r\n}","import { useLocation } from \"react-router\";\r\nimport { Button } from \"../ui/button.jsx\";\r\nimport { GhostIcon } from \"lucide-react\";\r\nimport { NavLink, useNavigate } from \"react-router\";\r\n\r\nexport const NotFound = () => {\r\n const location = useLocation();\r\n const navigate = useNavigate();\r\n\r\n const goBack = () => {\r\n if (window.history.length > 2) {\r\n navigate(-1);\r\n } else {\r\n navigate(\"/\");\r\n }\r\n };\r\n\r\n return (\r\n <div className=\"rounded-2xl flex flex-col items-center justify-center h-full p-6 text-center bg-sidebar text-muted-foreground select-none\">\r\n <GhostIcon className=\"h-15 w-15 text-destructive mb-4\" />\r\n <h1 className=\"text-2xl font-bold text-destructive mb-2\">Page Not Found</h1>\r\n <p className=\"text-xl mb-4\">\r\n The page <code className=\"px-1 py-0.5 rounded bg-muted text-foreground\">{location.pathname}</code> doesn't exist or has been moved.\r\n </p>\r\n <div className=\"flex space-x-4\">\r\n <Button variant=\"outline\" onClick={goBack}>\r\n Go Back\r\n </Button>\r\n <Button variant=\"ghost\">\r\n <NavLink to=\"/\">Return Home</NavLink>\r\n </Button>\r\n </div>\r\n </div>\r\n );\r\n};\r\n","import { WifiOffIcon } from \"lucide-react\";\r\n\r\nexport const OfflineUI = () => (\r\n <div className=\"rounded-2xl flex flex-col items-center justify-center h-screen p-6 text-center text-muted-foreground bg-background select-none\">\r\n <WifiOffIcon className=\"h-15 w-15 text-destructive mb-4\" />\r\n <h1 className=\"text-3xl font-bold text-destructive mb-2\">You're offline</h1>\r\n <p className=\"text-xl max-w-md\">\r\n We couldn't connect to the server.\r\n </p>\r\n </div>\r\n);\r\n","import { ShieldOffIcon } from \"lucide-react\";\r\nimport { Button } from \"../ui/button.jsx\";\r\nimport { NavLink, useNavigate } from \"react-router\";\r\n\r\nexport const Unauthorized = () => {\r\n const navigate = useNavigate();\r\n\r\n const goBack = () => {\r\n if (window.history.length > 2) {\r\n navigate(-1);\r\n } else {\r\n navigate(\"/\");\r\n }\r\n };\r\n\r\n return (\r\n <div className=\"rounded-2xl flex flex-col items-center justify-center h-full p-6 text-center bg-sidebar text-muted-foreground select-none\">\r\n <ShieldOffIcon className=\"h-15 w-15 text-destructive mb-4\" />\r\n <h1 className=\"text-2xl font-bold text-destructive mb-2\">Access Denied</h1>\r\n <p className=\"text-xl mb-4\">\r\n You don't have permission to view this page. Please sign in with an authorized account or contact your administrator.\r\n </p>\r\n <div className=\"flex space-x-4\">\r\n <Button variant=\"outline\" onClick={goBack}>\r\n Go Back\r\n </Button>\r\n <Button variant=\"ghost\">\r\n <NavLink to=\"/\">Go to Home</NavLink>\r\n </Button>\r\n </div>\r\n </div>\r\n );\r\n};\r\n"],"mappings":"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","names":["core_exports","__export","CurrencyTransfer","ErrorComponent","Loader","NotFound","OfflineUI","Unauthorized","__toCommonJS","import_radix_ui","import_class_variance_authority","import_clsx","import_tailwind_merge","cn","inputs","import_jsx_runtime","buttonVariants","Button","className","variant","size","asChild","props","Comp","SlotPrimitive","cn","import_lucide_react","import_react_router","import_jsx_runtime","ErrorComponent","error","navigate","Button","import_framer_motion","import_jsx_runtime","Card","className","props","cn","CardContent","className","props","cn","import_jsx_runtime","Checkmark","size","strokeWidth","color","className","CurrencyTransfer","Card","CardContent","import_jsx_runtime","Loader","import_react_router","import_lucide_react","import_react_router","import_jsx_runtime","NotFound","location","navigate","goBack","Button","import_lucide_react","import_jsx_runtime","OfflineUI","import_lucide_react","import_react_router","import_jsx_runtime","Unauthorized","navigate","Button"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { ErrorComponent } from './error.cjs';
|
|
2
|
+
export { CurrencyTransfer } from './event-success.cjs';
|
|
3
|
+
export { Loader } from './loader.cjs';
|
|
4
|
+
export { NotFound } from './notfound.cjs';
|
|
5
|
+
export { OfflineUI } from './offline-content.cjs';
|
|
6
|
+
export { Unauthorized } from './unauthorized.cjs';
|
|
7
|
+
import 'react/jsx-runtime';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { ErrorComponent } from './error.js';
|
|
2
|
+
export { CurrencyTransfer } from './event-success.js';
|
|
3
|
+
export { Loader } from './loader.js';
|
|
4
|
+
export { NotFound } from './notfound.js';
|
|
5
|
+
export { OfflineUI } from './offline-content.js';
|
|
6
|
+
export { Unauthorized } from './unauthorized.js';
|
|
7
|
+
import 'react/jsx-runtime';
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
import{Slot as z}from"radix-ui";import{cva as B}from"class-variance-authority";import{clsx as w}from"clsx";import{twMerge as C}from"tailwind-merge";function m(...e){return C(w(e))}import{jsx as R}from"react/jsx-runtime";var L=B("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",destructive:"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9"}},defaultVariants:{variant:"default",size:"default"}});function s({className:e,variant:r,size:i,asChild:p=!1,...y}){let k=p?z.Slot:"button";return R(k,{"data-slot":"button",className:m(L({variant:r,size:i,className:e}),"transition-none"),...y})}import{AlertTriangleIcon as P}from"lucide-react";import{useRouteError as E,isRouteErrorResponse as T,useNavigate as U}from"react-router";import{Fragment as f,jsx as o,jsxs as c}from"react/jsx-runtime";var S=()=>{let e=E(),r=U();return o("div",{className:"rounded-2xl flex justify-center items-center h-full bg-sidebar px-4",children:c("div",{className:"flex flex-col items-center space-y-4 text-center",children:[o(P,{className:"h-16 w-16 text-destructive"}),T(e)?c(f,{children:[c("h2",{className:"text-3xl font-semibold text-destructive",children:["Error ",e.status,": ",e.statusText]}),typeof e.data=="string"?o("pre",{className:"text-lg text-muted-foreground whitespace-pre-wrap max-w-4xl text-left",children:e.data}):e.data?.message&&o("pre",{className:"text-lg text-muted-foreground whitespace-pre-wrap max-w-4xl text-left",children:e.data.message})]}):e instanceof Error?c(f,{children:[o("h2",{className:"text-3xl font-semibold text-destructive",children:"Unexpected Error"}),o("pre",{className:"text-lg text-muted-foreground whitespace-pre-wrap max-w-4xl text-left",children:e.message}),e.stack&&c("details",{className:"mt-2 text-sm text-muted-foreground max-w-4xl text-left",children:[o("summary",{className:"cursor-pointer underline",children:"Stack Trace"}),o("pre",{className:"whitespace-pre-wrap",children:e.stack})]})]}):c(f,{children:[o("h2",{className:"text-3xl font-semibold text-destructive",children:"Unknown Error"}),o("pre",{className:"text-lg text-muted-foreground whitespace-pre-wrap max-w-4xl text-left",children:typeof e=="string"?e:JSON.stringify(e,null,2)})]}),o(s,{variant:"outline",onClick:()=>r(-1),children:"Go Back"})]})})};import{motion as n}from"framer-motion";import{jsx as b}from"react/jsx-runtime";function v({className:e,...r}){return b("div",{"data-slot":"card",className:m("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",e),...r})}function h({className:e,...r}){return b("div",{"data-slot":"card-content",className:m("px-6",e),...r})}import{jsx as t,jsxs as a}from"react/jsx-runtime";function V({size:e=100,strokeWidth:r=2,color:i="currentColor",className:p=""}){return a(n.svg,{width:e,height:e,viewBox:"0 0 100 100",initial:"hidden",animate:"visible",className:p,children:[t("title",{children:"Animated Checkmark"}),t(n.circle,{cx:"50",cy:"50",r:"40",stroke:i,custom:0,style:{strokeWidth:r,strokeLinecap:"round",fill:"transparent"}}),t(n.path,{d:"M30 50L45 65L70 35",stroke:i,custom:1,style:{strokeWidth:r,strokeLinecap:"round",strokeLinejoin:"round",fill:"transparent"}})]})}function _(){return t(v,{className:"w-full max-w-sm mx-auto p-6 min-h-[300px] flex flex-col justify-center bg-background",children:a(h,{className:"space-y-4 flex flex-col items-center justify-center",children:[t(n.div,{className:"flex justify-center",initial:{opacity:0,scale:.8},animate:{opacity:1,scale:1},transition:{duration:.4,ease:[.4,0,.2,1],scale:{type:"spring",damping:15,stiffness:200}},children:a("div",{className:"relative",children:[t(n.div,{className:"absolute inset-0 bg-primary/5 rounded-full",initial:{opacity:0,scale:.8},animate:{opacity:1,scale:1},transition:{delay:.2,duration:.8,ease:"circOut"}}),t(V,{size:80,strokeWidth:4,color:"rgb(16 185 129)",className:"relative z-10 dark:drop-shadow-[0_0_10px_rgba(0,0,0,0.1)]"})]})}),a(n.div,{className:"space-y-2 text-center w-full",initial:{opacity:0,y:10},animate:{opacity:1,y:0},transition:{delay:.2,duration:.6,ease:[.4,0,.2,1]},children:[t(n.h2,{className:"text-lg text-zinc-100 dark:text-zinc-900 tracking-tighter font-semibold uppercase",initial:{opacity:0,y:5},animate:{opacity:1,y:0},transition:{delay:1,duration:.4},children:"Transfer Successful"}),t("div",{className:"flex items-center gap-4",children:t(n.div,{className:"flex-1 bg-zinc-800/50 dark:bg-zinc-50/50 rounded-xl p-3 border border-zinc-700/50 dark:border-zinc-200/50 backdrop-blur-md",initial:{opacity:0,scale:.95},animate:{opacity:1,scale:1},transition:{delay:1.2,duration:.4,ease:[.4,0,.2,1]},children:a("div",{className:"flex flex-col items-start gap-2",children:[a("div",{className:"space-y-1.5",children:[a("span",{className:"text-xs font-medium text-secondary-foreground flex items-center gap-1.5",children:[a("svg",{className:"w-3 h-3",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[t("title",{children:"From"}),t("path",{d:"M12 19V5M5 12l7-7 7 7"})]}),"From"]}),a("div",{className:"flex items-center gap-2.5 group transition-all",children:[t("span",{className:"inline-flex items-center justify-center w-7 h-7 rounded-lg bg-zinc-900 dark:bg-white shadow-lg border border-zinc-700 dark:border-zinc-300 text-sm font-medium text-zinc-100 dark:text-zinc-900 group-hover:scale-105 transition-transform",children:"$"}),t("span",{className:"font-medium text-zinc-100 dark:text-zinc-900 tracking-tight",children:"500.00 USD"})]})]}),t("div",{className:"w-full h-px bg-gradient-to-r from-transparent via-zinc-700 dark:via-zinc-300 to-transparent"}),a("div",{className:"space-y-1.5",children:[a("span",{className:"text-xs font-medium text-secondary-foreground flex items-center gap-1.5",children:[a("svg",{className:"w-3 h-3",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[t("title",{children:"To"}),t("path",{d:"M12 5v14M5 12l7 7 7-7"})]}),"To"]}),a("div",{className:"flex items-center gap-2.5 group transition-all",children:[t("span",{className:"inline-flex items-center justify-center w-7 h-7 rounded-lg bg-zinc-900 dark:bg-white shadow-lg border border-zinc-700 dark:border-zinc-300 text-sm font-medium text-zinc-100 dark:text-zinc-900 group-hover:scale-105 transition-transform",children:"\u20AC"}),t("span",{className:"font-medium text-zinc-100 dark:text-zinc-900 tracking-tight",children:"460.00 EUR"})]})]})]})})}),t(n.div,{className:"w-full text-xs text-secondary-foreground mt-2 text-center",initial:{opacity:0},animate:{opacity:1},transition:{delay:1.4,duration:.4},children:"Exchange Rate: 1 USD = 0.92 EUR"})]})]})})}import{jsx as u,jsxs as D}from"react/jsx-runtime";var j=()=>u("div",{className:"rounded-2xl flex justify-center items-center h-full bg-transparent",children:D("div",{className:"flex flex-col items-center space-y-4",children:[u("div",{className:"animate-spin rounded-full border-t-4 border-ring h-16 w-16 mb-4"}),u("h2",{className:"text-xl font-semibold text-muted-foreground",children:"Loading, please wait..."}),u("p",{className:"text-sm text-muted-foreground",children:"Your content is on its way."})]})});import{useLocation as F}from"react-router";import{GhostIcon as I}from"lucide-react";import{NavLink as M,useNavigate as O}from"react-router";import{jsx as d,jsxs as x}from"react/jsx-runtime";var G=()=>{let e=F(),r=O(),i=()=>{window.history.length>2?r(-1):r("/")};return x("div",{className:"rounded-2xl flex flex-col items-center justify-center h-full p-6 text-center bg-sidebar text-muted-foreground select-none",children:[d(I,{className:"h-15 w-15 text-destructive mb-4"}),d("h1",{className:"text-2xl font-bold text-destructive mb-2",children:"Page Not Found"}),x("p",{className:"text-xl mb-4",children:["The page ",d("code",{className:"px-1 py-0.5 rounded bg-muted text-foreground",children:e.pathname})," doesn't exist or has been moved."]}),x("div",{className:"flex space-x-4",children:[d(s,{variant:"outline",onClick:i,children:"Go Back"}),d(s,{variant:"ghost",children:d(M,{to:"/",children:"Return Home"})})]})]})};import{WifiOffIcon as W}from"lucide-react";import{jsx as g,jsxs as H}from"react/jsx-runtime";var A=()=>H("div",{className:"rounded-2xl flex flex-col items-center justify-center h-screen p-6 text-center text-muted-foreground bg-background select-none",children:[g(W,{className:"h-15 w-15 text-destructive mb-4"}),g("h1",{className:"text-3xl font-bold text-destructive mb-2",children:"You're offline"}),g("p",{className:"text-xl max-w-md",children:"We couldn't connect to the server."})]});import{ShieldOffIcon as Y}from"lucide-react";import{NavLink as J,useNavigate as $}from"react-router";import{jsx as l,jsxs as N}from"react/jsx-runtime";var q=()=>{let e=$();return N("div",{className:"rounded-2xl flex flex-col items-center justify-center h-full p-6 text-center bg-sidebar text-muted-foreground select-none",children:[l(Y,{className:"h-15 w-15 text-destructive mb-4"}),l("h1",{className:"text-2xl font-bold text-destructive mb-2",children:"Access Denied"}),l("p",{className:"text-xl mb-4",children:"You don't have permission to view this page. Please sign in with an authorized account or contact your administrator."}),N("div",{className:"flex space-x-4",children:[l(s,{variant:"outline",onClick:()=>{window.history.length>2?e(-1):e("/")},children:"Go Back"}),l(s,{variant:"ghost",children:l(J,{to:"/",children:"Go to Home"})})]})]})};export{_ as CurrencyTransfer,S as ErrorComponent,j as Loader,G as NotFound,A as OfflineUI,q as Unauthorized};
|
|
3
|
+
//# sourceMappingURL=index.js.map
|