warqadui 0.0.4 → 0.0.6
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/.vscode/settings.json +3 -0
- package/apps/dev-app/.env +1 -0
- package/apps/dev-app/errors.log +0 -0
- package/apps/dev-app/index.html +12 -0
- package/apps/dev-app/node_modules/.vite/deps/@tanstack_react-table.js +3254 -0
- package/apps/dev-app/node_modules/.vite/deps/@tanstack_react-table.js.map +7 -0
- package/apps/dev-app/node_modules/.vite/deps/_metadata.json +178 -0
- package/apps/dev-app/node_modules/.vite/deps/antd.js +108982 -0
- package/apps/dev-app/node_modules/.vite/deps/antd.js.map +7 -0
- package/apps/dev-app/node_modules/.vite/deps/axios.js +2751 -0
- package/apps/dev-app/node_modules/.vite/deps/axios.js.map +7 -0
- package/apps/dev-app/node_modules/.vite/deps/chunk-5OG7DCD7.js +41 -0
- package/apps/dev-app/node_modules/.vite/deps/chunk-5OG7DCD7.js.map +7 -0
- package/apps/dev-app/node_modules/.vite/deps/chunk-7YRZYZRE.js +7807 -0
- package/apps/dev-app/node_modules/.vite/deps/chunk-7YRZYZRE.js.map +7 -0
- package/apps/dev-app/node_modules/.vite/deps/chunk-DC5AMYBS.js +39 -0
- package/apps/dev-app/node_modules/.vite/deps/chunk-DC5AMYBS.js.map +7 -0
- package/apps/dev-app/node_modules/.vite/deps/chunk-DKXRQMOD.js +135 -0
- package/apps/dev-app/node_modules/.vite/deps/chunk-DKXRQMOD.js.map +7 -0
- package/apps/dev-app/node_modules/.vite/deps/chunk-EL47BWQR.js +37 -0
- package/apps/dev-app/node_modules/.vite/deps/chunk-EL47BWQR.js.map +7 -0
- package/apps/dev-app/node_modules/.vite/deps/chunk-HHL3MHGV.js +288 -0
- package/apps/dev-app/node_modules/.vite/deps/chunk-HHL3MHGV.js.map +7 -0
- package/apps/dev-app/node_modules/.vite/deps/chunk-IGGUWUPT.js +60 -0
- package/apps/dev-app/node_modules/.vite/deps/chunk-IGGUWUPT.js.map +7 -0
- package/apps/dev-app/node_modules/.vite/deps/chunk-IGXZPJXT.js +928 -0
- package/apps/dev-app/node_modules/.vite/deps/chunk-IGXZPJXT.js.map +7 -0
- package/apps/dev-app/node_modules/.vite/deps/chunk-L2GCM37S.js +21628 -0
- package/apps/dev-app/node_modules/.vite/deps/chunk-L2GCM37S.js.map +7 -0
- package/apps/dev-app/node_modules/.vite/deps/chunk-LDRT62EN.js +14806 -0
- package/apps/dev-app/node_modules/.vite/deps/chunk-LDRT62EN.js.map +7 -0
- package/apps/dev-app/node_modules/.vite/deps/chunk-M7DZDBHW.js +14 -0
- package/apps/dev-app/node_modules/.vite/deps/chunk-M7DZDBHW.js.map +7 -0
- package/apps/dev-app/node_modules/.vite/deps/chunk-S54SBVCU.js +1906 -0
- package/apps/dev-app/node_modules/.vite/deps/chunk-S54SBVCU.js.map +7 -0
- package/apps/dev-app/node_modules/.vite/deps/chunk-WFNHCR67.js +21 -0
- package/apps/dev-app/node_modules/.vite/deps/chunk-WFNHCR67.js.map +7 -0
- package/apps/dev-app/node_modules/.vite/deps/clsx.js +10 -0
- package/apps/dev-app/node_modules/.vite/deps/clsx.js.map +7 -0
- package/apps/dev-app/node_modules/.vite/deps/dayjs.js +6 -0
- package/apps/dev-app/node_modules/.vite/deps/dayjs.js.map +7 -0
- package/apps/dev-app/node_modules/.vite/deps/dayjs_plugin_customParseFormat.js +6 -0
- package/apps/dev-app/node_modules/.vite/deps/dayjs_plugin_customParseFormat.js.map +7 -0
- package/apps/dev-app/node_modules/.vite/deps/framer-motion.js +12388 -0
- package/apps/dev-app/node_modules/.vite/deps/framer-motion.js.map +7 -0
- package/apps/dev-app/node_modules/.vite/deps/html2canvas-pro.js +9713 -0
- package/apps/dev-app/node_modules/.vite/deps/html2canvas-pro.js.map +7 -0
- package/apps/dev-app/node_modules/.vite/deps/html2canvas.esm-VL7GM4AH.js +8 -0
- package/apps/dev-app/node_modules/.vite/deps/html2canvas.esm-VL7GM4AH.js.map +7 -0
- package/apps/dev-app/node_modules/.vite/deps/index.es-3WTXOFZ2.js +10392 -0
- package/apps/dev-app/node_modules/.vite/deps/index.es-3WTXOFZ2.js.map +7 -0
- package/apps/dev-app/node_modules/.vite/deps/jspdf.js +41 -0
- package/apps/dev-app/node_modules/.vite/deps/jspdf.js.map +7 -0
- package/apps/dev-app/node_modules/.vite/deps/lucide-react.js +31586 -0
- package/apps/dev-app/node_modules/.vite/deps/lucide-react.js.map +7 -0
- package/apps/dev-app/node_modules/.vite/deps/package.json +3 -0
- package/apps/dev-app/node_modules/.vite/deps/purify.es-JNLDEIMX.js +1029 -0
- package/apps/dev-app/node_modules/.vite/deps/purify.es-JNLDEIMX.js.map +7 -0
- package/apps/dev-app/node_modules/.vite/deps/react-dom.js +7 -0
- package/apps/dev-app/node_modules/.vite/deps/react-dom.js.map +7 -0
- package/apps/dev-app/node_modules/.vite/deps/react-dom_client.js +8 -0
- package/apps/dev-app/node_modules/.vite/deps/react-dom_client.js.map +7 -0
- package/apps/dev-app/node_modules/.vite/deps/react-hook-form.js +2233 -0
- package/apps/dev-app/node_modules/.vite/deps/react-hook-form.js.map +7 -0
- package/apps/dev-app/node_modules/.vite/deps/react-phone-number-input.js +9307 -0
- package/apps/dev-app/node_modules/.vite/deps/react-phone-number-input.js.map +7 -0
- package/apps/dev-app/node_modules/.vite/deps/react-router-dom.js +14234 -0
- package/apps/dev-app/node_modules/.vite/deps/react-router-dom.js.map +7 -0
- package/apps/dev-app/node_modules/.vite/deps/react-to-pdf.js +268 -0
- package/apps/dev-app/node_modules/.vite/deps/react-to-pdf.js.map +7 -0
- package/apps/dev-app/node_modules/.vite/deps/react.js +6 -0
- package/apps/dev-app/node_modules/.vite/deps/react.js.map +7 -0
- package/apps/dev-app/node_modules/.vite/deps/react_jsx-dev-runtime.js +913 -0
- package/apps/dev-app/node_modules/.vite/deps/react_jsx-dev-runtime.js.map +7 -0
- package/apps/dev-app/node_modules/.vite/deps/react_jsx-runtime.js +7 -0
- package/apps/dev-app/node_modules/.vite/deps/react_jsx-runtime.js.map +7 -0
- package/apps/dev-app/node_modules/.vite/deps/tailwind-merge.js +2534 -0
- package/apps/dev-app/node_modules/.vite/deps/tailwind-merge.js.map +7 -0
- package/apps/dev-app/node_modules/tailwindcss/LICENSE +21 -0
- package/apps/dev-app/node_modules/tailwindcss/README.md +36 -0
- package/apps/dev-app/node_modules/tailwindcss/dist/chunk-L5IEUH3R.mjs +38 -0
- package/apps/dev-app/node_modules/tailwindcss/dist/chunk-UWKE2Z6N.mjs +1 -0
- package/apps/dev-app/node_modules/tailwindcss/dist/chunk-X4GG3EDV.mjs +1 -0
- package/apps/dev-app/node_modules/tailwindcss/dist/colors-C__qRT83.d.ts +347 -0
- package/apps/dev-app/node_modules/tailwindcss/dist/colors.d.mts +347 -0
- package/apps/dev-app/node_modules/tailwindcss/dist/colors.d.ts +5 -0
- package/apps/dev-app/node_modules/tailwindcss/dist/colors.js +1 -0
- package/apps/dev-app/node_modules/tailwindcss/dist/colors.mjs +1 -0
- package/apps/dev-app/node_modules/tailwindcss/dist/default-theme.d.mts +1199 -0
- package/apps/dev-app/node_modules/tailwindcss/dist/default-theme.d.ts +1199 -0
- package/apps/dev-app/node_modules/tailwindcss/dist/default-theme.js +1 -0
- package/apps/dev-app/node_modules/tailwindcss/dist/default-theme.mjs +1 -0
- package/apps/dev-app/node_modules/tailwindcss/dist/flatten-color-palette.d.mts +6 -0
- package/apps/dev-app/node_modules/tailwindcss/dist/flatten-color-palette.d.ts +6 -0
- package/apps/dev-app/node_modules/tailwindcss/dist/flatten-color-palette.js +3 -0
- package/apps/dev-app/node_modules/tailwindcss/dist/flatten-color-palette.mjs +1 -0
- package/apps/dev-app/node_modules/tailwindcss/dist/lib.d.mts +378 -0
- package/apps/dev-app/node_modules/tailwindcss/dist/lib.d.ts +3 -0
- package/apps/dev-app/node_modules/tailwindcss/dist/lib.js +38 -0
- package/apps/dev-app/node_modules/tailwindcss/dist/lib.mjs +1 -0
- package/apps/dev-app/node_modules/tailwindcss/dist/plugin.d.mts +11 -0
- package/apps/dev-app/node_modules/tailwindcss/dist/plugin.d.ts +134 -0
- package/apps/dev-app/node_modules/tailwindcss/dist/plugin.js +1 -0
- package/apps/dev-app/node_modules/tailwindcss/dist/plugin.mjs +1 -0
- package/apps/dev-app/node_modules/tailwindcss/dist/resolve-config-B4yBzhca.d.ts +29 -0
- package/apps/dev-app/node_modules/tailwindcss/dist/resolve-config-QUZ9b-Gn.d.mts +190 -0
- package/apps/dev-app/node_modules/tailwindcss/dist/types-CJYAW1ql.d.mts +128 -0
- package/apps/dev-app/node_modules/tailwindcss/index.css +944 -0
- package/apps/dev-app/node_modules/tailwindcss/package.json +89 -0
- package/apps/dev-app/node_modules/tailwindcss/preflight.css +393 -0
- package/apps/dev-app/node_modules/tailwindcss/theme.css +510 -0
- package/apps/dev-app/node_modules/tailwindcss/utilities.css +1 -0
- package/apps/dev-app/package.json +35 -0
- package/apps/dev-app/src/App.tsx +74 -0
- package/apps/dev-app/src/index.css +18 -0
- package/apps/dev-app/src/main.tsx +18 -0
- package/apps/dev-app/src/pages/Buttons.tsx +122 -0
- package/apps/dev-app/src/pages/DataTable.tsx +208 -0
- package/apps/dev-app/src/pages/Fields.tsx +342 -0
- package/apps/dev-app/src/pages/Modals.tsx +151 -0
- package/apps/dev-app/src/pages/Spins.tsx +161 -0
- package/apps/dev-app/ts_errors.txt +0 -0
- package/apps/dev-app/tsconfig.json +25 -0
- package/apps/dev-app/tsconfig.node.json +10 -0
- package/apps/dev-app/vite.config.ts +11 -0
- package/package.json +10 -49
- package/packages/ui/dist/index.d.mts +356 -0
- package/packages/ui/dist/index.d.ts +356 -0
- package/packages/ui/dist/index.js +2296 -0
- package/packages/ui/dist/index.mjs +2249 -0
- package/packages/ui/dist/styles.js +26 -0
- package/packages/ui/dist/styles.mjs +24 -0
- package/packages/ui/log.txt +0 -0
- package/packages/ui/package.json +68 -0
- package/packages/ui/postcss.config.js +6 -0
- package/packages/ui/src/components/Button.tsx +85 -0
- package/packages/ui/src/components/Card.tsx +97 -0
- package/packages/ui/src/components/CodeBlock.tsx +53 -0
- package/packages/ui/src/components/DashboardLayout.tsx +442 -0
- package/packages/ui/src/components/Fields/Input.tsx +191 -0
- package/packages/ui/src/components/Fields/PhoneInput.tsx +134 -0
- package/packages/ui/src/components/Fields/date.tsx +165 -0
- package/packages/ui/src/components/Fields/index.tsx +17 -0
- package/packages/ui/src/components/Fields/searchApi.tsx +479 -0
- package/packages/ui/src/components/Fields/select.tsx +131 -0
- package/packages/ui/src/components/Fields/textArea.tsx +121 -0
- package/packages/ui/src/components/LoadingBox.tsx +11 -0
- package/packages/ui/src/components/PageHeader.tsx +34 -0
- package/packages/ui/src/components/ThemeToggle.tsx +35 -0
- package/packages/ui/src/components/modal/Modal.tsx +81 -0
- package/packages/ui/src/components/spins/ClassicSpin.tsx +18 -0
- package/packages/ui/src/components/spins/LoadingSpin.tsx +45 -0
- package/packages/ui/src/components/spins/OverlaySpin.tsx +10 -0
- package/packages/ui/src/components/spins/index.tsx +13 -0
- package/packages/ui/src/components/tables/DataTable.tsx +261 -0
- package/packages/ui/src/components/tables/index.ts +1 -0
- package/packages/ui/src/hooks/Fetches/useApis.tsx +197 -0
- package/packages/ui/src/hooks/ThemeContext.tsx +56 -0
- package/packages/ui/src/hooks/useModal.tsx +38 -0
- package/packages/ui/src/hooks/useTheme.ts +34 -0
- package/packages/ui/src/index.ts +24 -0
- package/packages/ui/src/providers/WarqadProvider.tsx +69 -0
- package/packages/ui/src/styles.css +26 -0
- package/packages/ui/src/utils/cn.ts +6 -0
- package/packages/ui/src/utils/pdf.ts +171 -0
- package/packages/ui/tailwind.config.js +13 -0
- package/packages/ui/tsconfig.json +17 -0
- package/packages/ui/warqad-ui-0.0.1.tgz +0 -0
- package/packages/ui/warqadui-0.0.3.tgz +0 -0
- package/warqad-ui-0.0.1.tgz +0 -0
- package/dist/index.d.mts +0 -35
- package/dist/index.d.ts +0 -35
- package/dist/index.js +0 -470
- package/dist/index.mjs +0 -440
- package/dist/styles.js +0 -26
- package/dist/styles.mjs +0 -24
- /package/{dist → packages/ui/dist}/index.css +0 -0
- /package/{dist → packages/ui/dist}/styles.d.mts +0 -0
- /package/{dist → packages/ui/dist}/styles.d.ts +0 -0
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { useState } from "react";
|
|
2
|
+
import {
|
|
3
|
+
Modal,
|
|
4
|
+
Button,
|
|
5
|
+
CodeBlock,
|
|
6
|
+
Card,
|
|
7
|
+
LoadingSpin,
|
|
8
|
+
PageHeader,
|
|
9
|
+
useModal,
|
|
10
|
+
} from "warqadui";
|
|
11
|
+
|
|
12
|
+
const ModalsShowcase = () => {
|
|
13
|
+
const basicModal = useModal();
|
|
14
|
+
const loadingModal = useModal();
|
|
15
|
+
const [isModalLoading, setIsModalLoading] = useState(false);
|
|
16
|
+
|
|
17
|
+
const triggerLoadingModal = () => {
|
|
18
|
+
loadingModal.open();
|
|
19
|
+
setIsModalLoading(true);
|
|
20
|
+
setTimeout(() => setIsModalLoading(false), 3000);
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
const importCode = `import { Modal, useModalBox } from "warqadui";`;
|
|
24
|
+
|
|
25
|
+
const hookUsageCode = `const modal = useModalBox();\n\n<Button onClick={modal.open}>Open</Button>\n\n<Modal \n isOpen={modal.isOpen} \n onClose={modal.close} \n title="Title"\n>\n Content\n</Modal>`;
|
|
26
|
+
|
|
27
|
+
const loadingUsageCode = `<Modal \n isOpen={isOpen} \n onClose={onClose} \n title="Processing"\n isLoading={true}\n>\n Blurred content...\n</Modal>`;
|
|
28
|
+
|
|
29
|
+
return (
|
|
30
|
+
<div className="p-8 space-y-12 pb-20">
|
|
31
|
+
<PageHeader
|
|
32
|
+
title="Modals"
|
|
33
|
+
description="Premium, animated dialogs with built-in loading states and iOS-inspired aesthetics."
|
|
34
|
+
/>
|
|
35
|
+
|
|
36
|
+
{/* Quick Start */}
|
|
37
|
+
<section className="space-y-4">
|
|
38
|
+
<h2 className="text-xl font-bold">Usage</h2>
|
|
39
|
+
<div className="grid grid-cols-1 lg:grid-cols-2 gap-6 items-start">
|
|
40
|
+
<Card variant="flat" className="space-y-3">
|
|
41
|
+
<p className="text-sm font-medium">1. Simple Import</p>
|
|
42
|
+
<CodeBlock code={importCode} />
|
|
43
|
+
</Card>
|
|
44
|
+
<Card variant="flat" className="space-y-3">
|
|
45
|
+
<p className="text-sm font-medium">
|
|
46
|
+
2. Recommended: useModalBox hook
|
|
47
|
+
</p>
|
|
48
|
+
<CodeBlock code={hookUsageCode} className="text-xs" />
|
|
49
|
+
</Card>
|
|
50
|
+
</div>
|
|
51
|
+
</section>
|
|
52
|
+
|
|
53
|
+
<div className="grid grid-cols-1 lg:grid-cols-2 gap-8">
|
|
54
|
+
<Card className="flex flex-col justify-between">
|
|
55
|
+
<div>
|
|
56
|
+
<Card.Header>
|
|
57
|
+
<Card.Title>Basic Modal</Card.Title>
|
|
58
|
+
<Card.Description>
|
|
59
|
+
Simple dialog with a title and close button.
|
|
60
|
+
</Card.Description>
|
|
61
|
+
</Card.Header>
|
|
62
|
+
<Card.Content className="pb-6">
|
|
63
|
+
<Button
|
|
64
|
+
onClick={basicModal.open}
|
|
65
|
+
variant="primary"
|
|
66
|
+
className="w-full"
|
|
67
|
+
>
|
|
68
|
+
Open Basic Modal
|
|
69
|
+
</Button>
|
|
70
|
+
</Card.Content>
|
|
71
|
+
</div>
|
|
72
|
+
<CodeBlock
|
|
73
|
+
code={buttonUsageHtml(basicModal.isOpen)}
|
|
74
|
+
className="text-xs"
|
|
75
|
+
/>
|
|
76
|
+
</Card>
|
|
77
|
+
|
|
78
|
+
<Card className="flex flex-col justify-between">
|
|
79
|
+
<div>
|
|
80
|
+
<Card.Header>
|
|
81
|
+
<Card.Title>Loading State</Card.Title>
|
|
82
|
+
<Card.Description>
|
|
83
|
+
Built-in loading overlay that blurs and protects content.
|
|
84
|
+
</Card.Description>
|
|
85
|
+
</Card.Header>
|
|
86
|
+
<Card.Content className="pb-6">
|
|
87
|
+
<Button
|
|
88
|
+
onClick={triggerLoadingModal}
|
|
89
|
+
variant="secondary"
|
|
90
|
+
className="w-full"
|
|
91
|
+
>
|
|
92
|
+
Open Loading Modal (3s)
|
|
93
|
+
</Button>
|
|
94
|
+
</Card.Content>
|
|
95
|
+
</div>
|
|
96
|
+
<CodeBlock code={loadingUsageCode} className="text-xs" />
|
|
97
|
+
</Card>
|
|
98
|
+
</div>
|
|
99
|
+
|
|
100
|
+
<Modal
|
|
101
|
+
isOpen={basicModal.isOpen}
|
|
102
|
+
onClose={basicModal.close}
|
|
103
|
+
title="Welcome to Warqad"
|
|
104
|
+
>
|
|
105
|
+
<div className="space-y-4">
|
|
106
|
+
<p className="text-gray-600 dark:text-gray-400 leading-relaxed">
|
|
107
|
+
This modal features a premium{" "}
|
|
108
|
+
<span className="text-indigo-500 font-medium">squircle</span>{" "}
|
|
109
|
+
rounding and smooth entrance.
|
|
110
|
+
</p>
|
|
111
|
+
<Button
|
|
112
|
+
onClick={basicModal.close}
|
|
113
|
+
variant="primary"
|
|
114
|
+
className="w-full"
|
|
115
|
+
>
|
|
116
|
+
Got it, thanks!
|
|
117
|
+
</Button>
|
|
118
|
+
</div>
|
|
119
|
+
</Modal>
|
|
120
|
+
|
|
121
|
+
<Modal
|
|
122
|
+
isOpen={loadingModal.isOpen}
|
|
123
|
+
onClose={loadingModal.close}
|
|
124
|
+
title="System Update"
|
|
125
|
+
isLoading={isModalLoading}
|
|
126
|
+
>
|
|
127
|
+
<div className="space-y-4">
|
|
128
|
+
<div className="flex items-center gap-3 p-4 bg-blue-50 dark:bg-blue-500/10 rounded-2xl text-blue-700 dark:text-blue-400">
|
|
129
|
+
<LoadingSpin size="sm" />
|
|
130
|
+
<span className="text-sm font-medium">
|
|
131
|
+
Synchronizing with cloud...
|
|
132
|
+
</span>
|
|
133
|
+
</div>
|
|
134
|
+
<Button
|
|
135
|
+
onClick={loadingModal.close}
|
|
136
|
+
variant="outline"
|
|
137
|
+
className="w-full"
|
|
138
|
+
disabled={isModalLoading}
|
|
139
|
+
>
|
|
140
|
+
Cancel Process
|
|
141
|
+
</Button>
|
|
142
|
+
</div>
|
|
143
|
+
</Modal>
|
|
144
|
+
</div>
|
|
145
|
+
);
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
const buttonUsageHtml = (isOpen: boolean) =>
|
|
149
|
+
`<Modal \n isOpen={${isOpen}} \n onClose={() => {}} \n title="..."\n>\n ...\n</Modal>`;
|
|
150
|
+
|
|
151
|
+
export default ModalsShowcase;
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import { useState } from "react";
|
|
2
|
+
import {
|
|
3
|
+
ClassicSpin,
|
|
4
|
+
OverlaySpin,
|
|
5
|
+
LoadingSpin,
|
|
6
|
+
Button,
|
|
7
|
+
CodeBlock,
|
|
8
|
+
Card,
|
|
9
|
+
PageHeader,
|
|
10
|
+
} from "warqadui";
|
|
11
|
+
|
|
12
|
+
const SpinsShowcase = () => {
|
|
13
|
+
const [showClassic, setShowClassic] = useState(false);
|
|
14
|
+
const [showOverlay, setShowOverlay] = useState(false);
|
|
15
|
+
|
|
16
|
+
const triggerClassic = () => {
|
|
17
|
+
setShowClassic(true);
|
|
18
|
+
setTimeout(() => setShowClassic(false), 3000);
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const triggerOverlay = () => {
|
|
22
|
+
setShowOverlay(true);
|
|
23
|
+
setTimeout(() => setShowOverlay(false), 3000);
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
const importCode = `import { \n ClassicSpin, \n OverlaySpin, \n LoadingSpin \n} from "warqadui";`;
|
|
27
|
+
|
|
28
|
+
const classicCode = `<ClassicSpin msg="Loading dashboard..." />`;
|
|
29
|
+
|
|
30
|
+
const overlayCode = `<div className="relative h-64">\n {/* Content */}\n {isLoading && <OverlaySpin msg="Saving changes..." />}\n</div>`;
|
|
31
|
+
|
|
32
|
+
const rawCode = `<LoadingSpin \n size="md" \n className="text-blue-600" \n/>`;
|
|
33
|
+
|
|
34
|
+
return (
|
|
35
|
+
<div className="p-8 space-y-12 pb-20">
|
|
36
|
+
<PageHeader
|
|
37
|
+
title="Spins & Loaders"
|
|
38
|
+
description="A collection of premium loading states designed for the Warqad ecosystem. Includes full-page modals, container-aware overlays, and raw SVG spinners."
|
|
39
|
+
/>
|
|
40
|
+
|
|
41
|
+
{/* Quick Start Documentation */}
|
|
42
|
+
<section className="space-y-4">
|
|
43
|
+
<h2 className="text-xl font-bold flex items-center gap-2"> Usage </h2>
|
|
44
|
+
<div className="grid grid-cols-1 lg:grid-cols-2 gap-6 items-start">
|
|
45
|
+
<Card variant="flat">
|
|
46
|
+
<p className="text-sm text-gray-600 dark:text-gray-400 font-medium mb-3">
|
|
47
|
+
1. Import components:
|
|
48
|
+
</p>
|
|
49
|
+
<CodeBlock code={importCode} />
|
|
50
|
+
</Card>
|
|
51
|
+
<Card variant="flat">
|
|
52
|
+
<p className="text-sm text-gray-600 dark:text-gray-400 font-medium mb-3">
|
|
53
|
+
2. Example Usage:
|
|
54
|
+
</p>
|
|
55
|
+
<CodeBlock code={rawCode} />
|
|
56
|
+
</Card>
|
|
57
|
+
</div>
|
|
58
|
+
</section>
|
|
59
|
+
|
|
60
|
+
<section>
|
|
61
|
+
<h2 className="text-xl font-bold mb-6">Live Demos</h2>
|
|
62
|
+
<div className="grid grid-cols-1 md:grid-cols-3 gap-8">
|
|
63
|
+
{/* Classic Spin Card */}
|
|
64
|
+
<Card className="relative overflow-hidden group">
|
|
65
|
+
<Card.Header>
|
|
66
|
+
<Card.Title>Classic Spin</Card.Title>
|
|
67
|
+
<Card.Description>
|
|
68
|
+
Centered modal indicator for full-page or section loading.
|
|
69
|
+
</Card.Description>
|
|
70
|
+
</Card.Header>
|
|
71
|
+
<Card.Content className="space-y-4">
|
|
72
|
+
<Button
|
|
73
|
+
onClick={triggerClassic}
|
|
74
|
+
variant="primary"
|
|
75
|
+
className="w-full"
|
|
76
|
+
>
|
|
77
|
+
Preview (3s)
|
|
78
|
+
</Button>
|
|
79
|
+
<CodeBlock code={classicCode} className="text-[11px]" />
|
|
80
|
+
</Card.Content>
|
|
81
|
+
|
|
82
|
+
{showClassic && <ClassicSpin msg="Loading dashboard..." />}
|
|
83
|
+
</Card>
|
|
84
|
+
|
|
85
|
+
{/* Overlay Spin Card */}
|
|
86
|
+
<Card className="relative overflow-hidden group">
|
|
87
|
+
<Card.Header>
|
|
88
|
+
<Card.Title>Overlay Spin</Card.Title>
|
|
89
|
+
<Card.Description>
|
|
90
|
+
Container-bound overlay. Parent must be{" "}
|
|
91
|
+
<code className="text-[10px] px-1 bg-gray-100 dark:bg-gray-700 rounded text-blue-500">
|
|
92
|
+
relative
|
|
93
|
+
</code>
|
|
94
|
+
.
|
|
95
|
+
</Card.Description>
|
|
96
|
+
</Card.Header>
|
|
97
|
+
<Card.Content className="space-y-4">
|
|
98
|
+
<div className="relative h-24 w-full bg-gray-50 dark:bg-gray-900 rounded-xl flex items-center justify-center border border-dashed border-gray-300 dark:border-gray-600">
|
|
99
|
+
<span className="text-xs text-gray-400">Content Area</span>
|
|
100
|
+
{showOverlay && <OverlaySpin msg="Saving changes..." />}
|
|
101
|
+
</div>
|
|
102
|
+
<Button
|
|
103
|
+
onClick={triggerOverlay}
|
|
104
|
+
variant="secondary"
|
|
105
|
+
className="w-full"
|
|
106
|
+
>
|
|
107
|
+
Preview (3s)
|
|
108
|
+
</Button>
|
|
109
|
+
<CodeBlock code={overlayCode} className="text-[10px]" />
|
|
110
|
+
</Card.Content>
|
|
111
|
+
</Card>
|
|
112
|
+
|
|
113
|
+
{/* Raw LoadingSpin Card */}
|
|
114
|
+
<Card className="flex flex-col justify-between">
|
|
115
|
+
<div>
|
|
116
|
+
<Card.Header>
|
|
117
|
+
<Card.Title>LoadingSpin</Card.Title>
|
|
118
|
+
<Card.Description>
|
|
119
|
+
Lightweight SVG spinner for inline placements.
|
|
120
|
+
</Card.Description>
|
|
121
|
+
</Card.Header>
|
|
122
|
+
<Card.Content>
|
|
123
|
+
<div className="flex items-center justify-between bg-gray-50 dark:bg-gray-900 p-4 rounded-xl mb-4">
|
|
124
|
+
<div className="flex flex-col items-center gap-1">
|
|
125
|
+
<LoadingSpin size="sm" className="text-blue-500" />
|
|
126
|
+
<span className="text-[10px] text-gray-400">Small</span>
|
|
127
|
+
</div>
|
|
128
|
+
<div className="flex flex-col items-center gap-1">
|
|
129
|
+
<LoadingSpin size="md" className="text-indigo-500" />
|
|
130
|
+
<span className="text-[10px] text-gray-400">Medium</span>
|
|
131
|
+
</div>
|
|
132
|
+
<div className="flex flex-col items-center gap-1">
|
|
133
|
+
<LoadingSpin size="lg" className="text-purple-500" />
|
|
134
|
+
<span className="text-[10px] text-gray-400">Large</span>
|
|
135
|
+
</div>
|
|
136
|
+
</div>
|
|
137
|
+
</Card.Content>
|
|
138
|
+
</div>
|
|
139
|
+
<CodeBlock code={rawCode} className="text-[11px]" />
|
|
140
|
+
</Card>
|
|
141
|
+
</div>
|
|
142
|
+
</section>
|
|
143
|
+
|
|
144
|
+
<Card
|
|
145
|
+
variant="glass"
|
|
146
|
+
className="bg-blue-50/50 dark:bg-blue-900/10 border-blue-100 dark:border-blue-900/20"
|
|
147
|
+
>
|
|
148
|
+
<Card.Title className="text-blue-900 dark:text-blue-400 mb-2">
|
|
149
|
+
Documentation Note
|
|
150
|
+
</Card.Title>
|
|
151
|
+
<Card.Description className="text-blue-700 dark:text-blue-600">
|
|
152
|
+
The <code>CodeBlock</code> and <code>Card</code> components above are
|
|
153
|
+
also part of the <strong>warqadui</strong> package. Use them to build
|
|
154
|
+
beautiful documentation or high-end dashboard interfaces.
|
|
155
|
+
</Card.Description>
|
|
156
|
+
</Card>
|
|
157
|
+
</div>
|
|
158
|
+
);
|
|
159
|
+
};
|
|
160
|
+
|
|
161
|
+
export default SpinsShowcase;
|
|
Binary file
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2020",
|
|
4
|
+
"useDefineForClassFields": true,
|
|
5
|
+
"lib": ["ES2020", "DOM", "DOM.Iterable"],
|
|
6
|
+
"module": "ESNext",
|
|
7
|
+
"skipLibCheck": true,
|
|
8
|
+
|
|
9
|
+
/* Bundler mode */
|
|
10
|
+
"moduleResolution": "bundler",
|
|
11
|
+
"allowImportingTsExtensions": true,
|
|
12
|
+
"resolveJsonModule": true,
|
|
13
|
+
"isolatedModules": true,
|
|
14
|
+
"noEmit": true,
|
|
15
|
+
"jsx": "react-jsx",
|
|
16
|
+
|
|
17
|
+
/* Linting */
|
|
18
|
+
"strict": true,
|
|
19
|
+
"noUnusedLocals": true,
|
|
20
|
+
"noUnusedParameters": true,
|
|
21
|
+
"noFallthroughCasesInSwitch": true
|
|
22
|
+
},
|
|
23
|
+
"include": ["src"],
|
|
24
|
+
"references": [{ "path": "./tsconfig.node.json" }]
|
|
25
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { defineConfig } from "vite";
|
|
2
|
+
import react from "@vitejs/plugin-react";
|
|
3
|
+
import tailwindcss from "@tailwindcss/vite";
|
|
4
|
+
|
|
5
|
+
// https://vitejs.dev/config/
|
|
6
|
+
export default defineConfig({
|
|
7
|
+
plugins: [react(), tailwindcss()],
|
|
8
|
+
server: {
|
|
9
|
+
port: 3000,
|
|
10
|
+
},
|
|
11
|
+
});
|
package/package.json
CHANGED
|
@@ -1,57 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "warqadui",
|
|
3
|
-
"version": "0.0.
|
|
4
|
-
"
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
"exports": {
|
|
8
|
-
".": {
|
|
9
|
-
"types": "./dist/index.d.ts",
|
|
10
|
-
"import": "./dist/index.mjs",
|
|
11
|
-
"require": "./dist/index.js"
|
|
12
|
-
}
|
|
13
|
-
},
|
|
14
|
-
"files": [
|
|
15
|
-
"dist"
|
|
3
|
+
"version": "0.0.6",
|
|
4
|
+
"workspaces": [
|
|
5
|
+
"apps/*",
|
|
6
|
+
"packages/*"
|
|
16
7
|
],
|
|
17
8
|
"scripts": {
|
|
18
|
-
"
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
-
|
|
22
|
-
"peerDependencies": {
|
|
23
|
-
"antd": "^6.3.1",
|
|
24
|
-
"framer-motion": ">=10",
|
|
25
|
-
"react": ">=18",
|
|
26
|
-
"react-dom": ">=18",
|
|
27
|
-
"react-router-dom": ">=6",
|
|
28
|
-
"tailwindcss": ">=3.4.0"
|
|
29
|
-
},
|
|
30
|
-
"dependencies": {
|
|
31
|
-
"clsx": "^2.1.0",
|
|
32
|
-
"dayjs": "^1.11.10",
|
|
33
|
-
"lucide-react": "^0.344.0",
|
|
34
|
-
"moment": "^2.30.1",
|
|
35
|
-
"tailwind-merge": "^2.2.1",
|
|
36
|
-
"zod": "^3.22.4",
|
|
37
|
-
"zustand": "^4.5.0"
|
|
9
|
+
"dev": "npm run dev -w dev-app",
|
|
10
|
+
"build:ui": "npm run build -w warqadui",
|
|
11
|
+
"dev:ui": "npm run dev -w warqadui",
|
|
12
|
+
"dev:app": "npm run dev -w dev-app"
|
|
38
13
|
},
|
|
39
14
|
"devDependencies": {
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"@types/react-router-dom": "^5.3.3",
|
|
43
|
-
"antd": "^6.3.1",
|
|
44
|
-
"autoprefixer": "^10.4.17",
|
|
45
|
-
"clsx": "^2.1.0",
|
|
46
|
-
"dayjs": "^1.11.10",
|
|
47
|
-
"lucide-react": "^0.344.0",
|
|
48
|
-
"moment": "^2.30.1",
|
|
49
|
-
"postcss": "^8.4.35",
|
|
50
|
-
"tailwind-merge": "^2.2.1",
|
|
51
|
-
"tailwindcss": "^3.4.1",
|
|
52
|
-
"tsup": "^8.0.2",
|
|
53
|
-
"typescript": "^5.3.3",
|
|
54
|
-
"zod": "^3.22.4",
|
|
55
|
-
"zustand": "^4.5.0"
|
|
15
|
+
"concurrently": "^9.2.1",
|
|
16
|
+
"typescript": "^5.3.3"
|
|
56
17
|
}
|
|
57
18
|
}
|