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.
Files changed (179) hide show
  1. package/.vscode/settings.json +3 -0
  2. package/apps/dev-app/.env +1 -0
  3. package/apps/dev-app/errors.log +0 -0
  4. package/apps/dev-app/index.html +12 -0
  5. package/apps/dev-app/node_modules/.vite/deps/@tanstack_react-table.js +3254 -0
  6. package/apps/dev-app/node_modules/.vite/deps/@tanstack_react-table.js.map +7 -0
  7. package/apps/dev-app/node_modules/.vite/deps/_metadata.json +178 -0
  8. package/apps/dev-app/node_modules/.vite/deps/antd.js +108982 -0
  9. package/apps/dev-app/node_modules/.vite/deps/antd.js.map +7 -0
  10. package/apps/dev-app/node_modules/.vite/deps/axios.js +2751 -0
  11. package/apps/dev-app/node_modules/.vite/deps/axios.js.map +7 -0
  12. package/apps/dev-app/node_modules/.vite/deps/chunk-5OG7DCD7.js +41 -0
  13. package/apps/dev-app/node_modules/.vite/deps/chunk-5OG7DCD7.js.map +7 -0
  14. package/apps/dev-app/node_modules/.vite/deps/chunk-7YRZYZRE.js +7807 -0
  15. package/apps/dev-app/node_modules/.vite/deps/chunk-7YRZYZRE.js.map +7 -0
  16. package/apps/dev-app/node_modules/.vite/deps/chunk-DC5AMYBS.js +39 -0
  17. package/apps/dev-app/node_modules/.vite/deps/chunk-DC5AMYBS.js.map +7 -0
  18. package/apps/dev-app/node_modules/.vite/deps/chunk-DKXRQMOD.js +135 -0
  19. package/apps/dev-app/node_modules/.vite/deps/chunk-DKXRQMOD.js.map +7 -0
  20. package/apps/dev-app/node_modules/.vite/deps/chunk-EL47BWQR.js +37 -0
  21. package/apps/dev-app/node_modules/.vite/deps/chunk-EL47BWQR.js.map +7 -0
  22. package/apps/dev-app/node_modules/.vite/deps/chunk-HHL3MHGV.js +288 -0
  23. package/apps/dev-app/node_modules/.vite/deps/chunk-HHL3MHGV.js.map +7 -0
  24. package/apps/dev-app/node_modules/.vite/deps/chunk-IGGUWUPT.js +60 -0
  25. package/apps/dev-app/node_modules/.vite/deps/chunk-IGGUWUPT.js.map +7 -0
  26. package/apps/dev-app/node_modules/.vite/deps/chunk-IGXZPJXT.js +928 -0
  27. package/apps/dev-app/node_modules/.vite/deps/chunk-IGXZPJXT.js.map +7 -0
  28. package/apps/dev-app/node_modules/.vite/deps/chunk-L2GCM37S.js +21628 -0
  29. package/apps/dev-app/node_modules/.vite/deps/chunk-L2GCM37S.js.map +7 -0
  30. package/apps/dev-app/node_modules/.vite/deps/chunk-LDRT62EN.js +14806 -0
  31. package/apps/dev-app/node_modules/.vite/deps/chunk-LDRT62EN.js.map +7 -0
  32. package/apps/dev-app/node_modules/.vite/deps/chunk-M7DZDBHW.js +14 -0
  33. package/apps/dev-app/node_modules/.vite/deps/chunk-M7DZDBHW.js.map +7 -0
  34. package/apps/dev-app/node_modules/.vite/deps/chunk-S54SBVCU.js +1906 -0
  35. package/apps/dev-app/node_modules/.vite/deps/chunk-S54SBVCU.js.map +7 -0
  36. package/apps/dev-app/node_modules/.vite/deps/chunk-WFNHCR67.js +21 -0
  37. package/apps/dev-app/node_modules/.vite/deps/chunk-WFNHCR67.js.map +7 -0
  38. package/apps/dev-app/node_modules/.vite/deps/clsx.js +10 -0
  39. package/apps/dev-app/node_modules/.vite/deps/clsx.js.map +7 -0
  40. package/apps/dev-app/node_modules/.vite/deps/dayjs.js +6 -0
  41. package/apps/dev-app/node_modules/.vite/deps/dayjs.js.map +7 -0
  42. package/apps/dev-app/node_modules/.vite/deps/dayjs_plugin_customParseFormat.js +6 -0
  43. package/apps/dev-app/node_modules/.vite/deps/dayjs_plugin_customParseFormat.js.map +7 -0
  44. package/apps/dev-app/node_modules/.vite/deps/framer-motion.js +12388 -0
  45. package/apps/dev-app/node_modules/.vite/deps/framer-motion.js.map +7 -0
  46. package/apps/dev-app/node_modules/.vite/deps/html2canvas-pro.js +9713 -0
  47. package/apps/dev-app/node_modules/.vite/deps/html2canvas-pro.js.map +7 -0
  48. package/apps/dev-app/node_modules/.vite/deps/html2canvas.esm-VL7GM4AH.js +8 -0
  49. package/apps/dev-app/node_modules/.vite/deps/html2canvas.esm-VL7GM4AH.js.map +7 -0
  50. package/apps/dev-app/node_modules/.vite/deps/index.es-3WTXOFZ2.js +10392 -0
  51. package/apps/dev-app/node_modules/.vite/deps/index.es-3WTXOFZ2.js.map +7 -0
  52. package/apps/dev-app/node_modules/.vite/deps/jspdf.js +41 -0
  53. package/apps/dev-app/node_modules/.vite/deps/jspdf.js.map +7 -0
  54. package/apps/dev-app/node_modules/.vite/deps/lucide-react.js +31586 -0
  55. package/apps/dev-app/node_modules/.vite/deps/lucide-react.js.map +7 -0
  56. package/apps/dev-app/node_modules/.vite/deps/package.json +3 -0
  57. package/apps/dev-app/node_modules/.vite/deps/purify.es-JNLDEIMX.js +1029 -0
  58. package/apps/dev-app/node_modules/.vite/deps/purify.es-JNLDEIMX.js.map +7 -0
  59. package/apps/dev-app/node_modules/.vite/deps/react-dom.js +7 -0
  60. package/apps/dev-app/node_modules/.vite/deps/react-dom.js.map +7 -0
  61. package/apps/dev-app/node_modules/.vite/deps/react-dom_client.js +8 -0
  62. package/apps/dev-app/node_modules/.vite/deps/react-dom_client.js.map +7 -0
  63. package/apps/dev-app/node_modules/.vite/deps/react-hook-form.js +2233 -0
  64. package/apps/dev-app/node_modules/.vite/deps/react-hook-form.js.map +7 -0
  65. package/apps/dev-app/node_modules/.vite/deps/react-phone-number-input.js +9307 -0
  66. package/apps/dev-app/node_modules/.vite/deps/react-phone-number-input.js.map +7 -0
  67. package/apps/dev-app/node_modules/.vite/deps/react-router-dom.js +14234 -0
  68. package/apps/dev-app/node_modules/.vite/deps/react-router-dom.js.map +7 -0
  69. package/apps/dev-app/node_modules/.vite/deps/react-to-pdf.js +268 -0
  70. package/apps/dev-app/node_modules/.vite/deps/react-to-pdf.js.map +7 -0
  71. package/apps/dev-app/node_modules/.vite/deps/react.js +6 -0
  72. package/apps/dev-app/node_modules/.vite/deps/react.js.map +7 -0
  73. package/apps/dev-app/node_modules/.vite/deps/react_jsx-dev-runtime.js +913 -0
  74. package/apps/dev-app/node_modules/.vite/deps/react_jsx-dev-runtime.js.map +7 -0
  75. package/apps/dev-app/node_modules/.vite/deps/react_jsx-runtime.js +7 -0
  76. package/apps/dev-app/node_modules/.vite/deps/react_jsx-runtime.js.map +7 -0
  77. package/apps/dev-app/node_modules/.vite/deps/tailwind-merge.js +2534 -0
  78. package/apps/dev-app/node_modules/.vite/deps/tailwind-merge.js.map +7 -0
  79. package/apps/dev-app/node_modules/tailwindcss/LICENSE +21 -0
  80. package/apps/dev-app/node_modules/tailwindcss/README.md +36 -0
  81. package/apps/dev-app/node_modules/tailwindcss/dist/chunk-L5IEUH3R.mjs +38 -0
  82. package/apps/dev-app/node_modules/tailwindcss/dist/chunk-UWKE2Z6N.mjs +1 -0
  83. package/apps/dev-app/node_modules/tailwindcss/dist/chunk-X4GG3EDV.mjs +1 -0
  84. package/apps/dev-app/node_modules/tailwindcss/dist/colors-C__qRT83.d.ts +347 -0
  85. package/apps/dev-app/node_modules/tailwindcss/dist/colors.d.mts +347 -0
  86. package/apps/dev-app/node_modules/tailwindcss/dist/colors.d.ts +5 -0
  87. package/apps/dev-app/node_modules/tailwindcss/dist/colors.js +1 -0
  88. package/apps/dev-app/node_modules/tailwindcss/dist/colors.mjs +1 -0
  89. package/apps/dev-app/node_modules/tailwindcss/dist/default-theme.d.mts +1199 -0
  90. package/apps/dev-app/node_modules/tailwindcss/dist/default-theme.d.ts +1199 -0
  91. package/apps/dev-app/node_modules/tailwindcss/dist/default-theme.js +1 -0
  92. package/apps/dev-app/node_modules/tailwindcss/dist/default-theme.mjs +1 -0
  93. package/apps/dev-app/node_modules/tailwindcss/dist/flatten-color-palette.d.mts +6 -0
  94. package/apps/dev-app/node_modules/tailwindcss/dist/flatten-color-palette.d.ts +6 -0
  95. package/apps/dev-app/node_modules/tailwindcss/dist/flatten-color-palette.js +3 -0
  96. package/apps/dev-app/node_modules/tailwindcss/dist/flatten-color-palette.mjs +1 -0
  97. package/apps/dev-app/node_modules/tailwindcss/dist/lib.d.mts +378 -0
  98. package/apps/dev-app/node_modules/tailwindcss/dist/lib.d.ts +3 -0
  99. package/apps/dev-app/node_modules/tailwindcss/dist/lib.js +38 -0
  100. package/apps/dev-app/node_modules/tailwindcss/dist/lib.mjs +1 -0
  101. package/apps/dev-app/node_modules/tailwindcss/dist/plugin.d.mts +11 -0
  102. package/apps/dev-app/node_modules/tailwindcss/dist/plugin.d.ts +134 -0
  103. package/apps/dev-app/node_modules/tailwindcss/dist/plugin.js +1 -0
  104. package/apps/dev-app/node_modules/tailwindcss/dist/plugin.mjs +1 -0
  105. package/apps/dev-app/node_modules/tailwindcss/dist/resolve-config-B4yBzhca.d.ts +29 -0
  106. package/apps/dev-app/node_modules/tailwindcss/dist/resolve-config-QUZ9b-Gn.d.mts +190 -0
  107. package/apps/dev-app/node_modules/tailwindcss/dist/types-CJYAW1ql.d.mts +128 -0
  108. package/apps/dev-app/node_modules/tailwindcss/index.css +944 -0
  109. package/apps/dev-app/node_modules/tailwindcss/package.json +89 -0
  110. package/apps/dev-app/node_modules/tailwindcss/preflight.css +393 -0
  111. package/apps/dev-app/node_modules/tailwindcss/theme.css +510 -0
  112. package/apps/dev-app/node_modules/tailwindcss/utilities.css +1 -0
  113. package/apps/dev-app/package.json +35 -0
  114. package/apps/dev-app/src/App.tsx +74 -0
  115. package/apps/dev-app/src/index.css +18 -0
  116. package/apps/dev-app/src/main.tsx +18 -0
  117. package/apps/dev-app/src/pages/Buttons.tsx +122 -0
  118. package/apps/dev-app/src/pages/DataTable.tsx +208 -0
  119. package/apps/dev-app/src/pages/Fields.tsx +342 -0
  120. package/apps/dev-app/src/pages/Modals.tsx +151 -0
  121. package/apps/dev-app/src/pages/Spins.tsx +161 -0
  122. package/apps/dev-app/ts_errors.txt +0 -0
  123. package/apps/dev-app/tsconfig.json +25 -0
  124. package/apps/dev-app/tsconfig.node.json +10 -0
  125. package/apps/dev-app/vite.config.ts +11 -0
  126. package/package.json +10 -49
  127. package/packages/ui/dist/index.d.mts +356 -0
  128. package/packages/ui/dist/index.d.ts +356 -0
  129. package/packages/ui/dist/index.js +2296 -0
  130. package/packages/ui/dist/index.mjs +2249 -0
  131. package/packages/ui/dist/styles.js +26 -0
  132. package/packages/ui/dist/styles.mjs +24 -0
  133. package/packages/ui/log.txt +0 -0
  134. package/packages/ui/package.json +68 -0
  135. package/packages/ui/postcss.config.js +6 -0
  136. package/packages/ui/src/components/Button.tsx +85 -0
  137. package/packages/ui/src/components/Card.tsx +97 -0
  138. package/packages/ui/src/components/CodeBlock.tsx +53 -0
  139. package/packages/ui/src/components/DashboardLayout.tsx +442 -0
  140. package/packages/ui/src/components/Fields/Input.tsx +191 -0
  141. package/packages/ui/src/components/Fields/PhoneInput.tsx +134 -0
  142. package/packages/ui/src/components/Fields/date.tsx +165 -0
  143. package/packages/ui/src/components/Fields/index.tsx +17 -0
  144. package/packages/ui/src/components/Fields/searchApi.tsx +479 -0
  145. package/packages/ui/src/components/Fields/select.tsx +131 -0
  146. package/packages/ui/src/components/Fields/textArea.tsx +121 -0
  147. package/packages/ui/src/components/LoadingBox.tsx +11 -0
  148. package/packages/ui/src/components/PageHeader.tsx +34 -0
  149. package/packages/ui/src/components/ThemeToggle.tsx +35 -0
  150. package/packages/ui/src/components/modal/Modal.tsx +81 -0
  151. package/packages/ui/src/components/spins/ClassicSpin.tsx +18 -0
  152. package/packages/ui/src/components/spins/LoadingSpin.tsx +45 -0
  153. package/packages/ui/src/components/spins/OverlaySpin.tsx +10 -0
  154. package/packages/ui/src/components/spins/index.tsx +13 -0
  155. package/packages/ui/src/components/tables/DataTable.tsx +261 -0
  156. package/packages/ui/src/components/tables/index.ts +1 -0
  157. package/packages/ui/src/hooks/Fetches/useApis.tsx +197 -0
  158. package/packages/ui/src/hooks/ThemeContext.tsx +56 -0
  159. package/packages/ui/src/hooks/useModal.tsx +38 -0
  160. package/packages/ui/src/hooks/useTheme.ts +34 -0
  161. package/packages/ui/src/index.ts +24 -0
  162. package/packages/ui/src/providers/WarqadProvider.tsx +69 -0
  163. package/packages/ui/src/styles.css +26 -0
  164. package/packages/ui/src/utils/cn.ts +6 -0
  165. package/packages/ui/src/utils/pdf.ts +171 -0
  166. package/packages/ui/tailwind.config.js +13 -0
  167. package/packages/ui/tsconfig.json +17 -0
  168. package/packages/ui/warqad-ui-0.0.1.tgz +0 -0
  169. package/packages/ui/warqadui-0.0.3.tgz +0 -0
  170. package/warqad-ui-0.0.1.tgz +0 -0
  171. package/dist/index.d.mts +0 -35
  172. package/dist/index.d.ts +0 -35
  173. package/dist/index.js +0 -470
  174. package/dist/index.mjs +0 -440
  175. package/dist/styles.js +0 -26
  176. package/dist/styles.mjs +0 -24
  177. /package/{dist → packages/ui/dist}/index.css +0 -0
  178. /package/{dist → packages/ui/dist}/styles.d.mts +0 -0
  179. /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,10 @@
1
+ {
2
+ "compilerOptions": {
3
+ "composite": true,
4
+ "skipLibCheck": true,
5
+ "module": "ESNext",
6
+ "moduleResolution": "bundler",
7
+ "allowSyntheticDefaultImports": true
8
+ },
9
+ "include": ["vite.config.ts"]
10
+ }
@@ -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",
4
- "main": "./dist/index.js",
5
- "module": "./dist/index.mjs",
6
- "types": "./dist/index.d.ts",
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
- "build": "tsup src/index.ts src/styles.css --format esm,cjs --dts --injectStyle",
19
- "dev": "tsup src/index.ts src/styles.css --format esm,cjs --dts --watch --injectStyle",
20
- "prepublish": "npm run build"
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
- "@types/react": "^18.2.55",
41
- "@types/react-dom": "^18.2.19",
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
  }