@alepha/ui 0.14.0 → 0.14.2

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 (174) hide show
  1. package/README.md +1 -1
  2. package/dist/admin/AdminAudits-B3EhKhN7.js +3 -0
  3. package/dist/admin/{AdminAudits-CwvH8e8c.js → AdminAudits-DIrCCPk3.js} +3 -2
  4. package/dist/admin/AdminAudits-DIrCCPk3.js.map +1 -0
  5. package/dist/admin/AdminFiles-C8OG4dtD.js +3 -0
  6. package/dist/admin/{AdminFiles-C_w1tb_x.js → AdminFiles-RsL178Ta.js} +2 -2
  7. package/dist/admin/{AdminFiles-C_w1tb_x.js.map → AdminFiles-RsL178Ta.js.map} +1 -1
  8. package/dist/admin/AdminNotifications-BSL4B2fQ.js +3 -0
  9. package/dist/admin/{AdminNotifications-DuYy74AN.js → AdminNotifications-cIbywWKi.js} +2 -2
  10. package/dist/admin/{AdminNotifications-DuYy74AN.js.map → AdminNotifications-cIbywWKi.js.map} +1 -1
  11. package/dist/admin/{AdminParameters-DYg48Jwe.js → AdminParameters-BKObzzpN.js} +1 -1
  12. package/dist/admin/{AdminParameters-YagqWTG3.js → AdminParameters-D-q3Qmhv.js} +2 -2
  13. package/dist/admin/{AdminParameters-YagqWTG3.js.map → AdminParameters-D-q3Qmhv.js.map} +1 -1
  14. package/dist/admin/AdminSessions-DHG9zPfr.js +3 -0
  15. package/dist/admin/{AdminSessions-BCjgJ-93.js → AdminSessions-vOgkrQ2U.js} +3 -2
  16. package/dist/admin/AdminSessions-vOgkrQ2U.js.map +1 -0
  17. package/dist/admin/{AdminUserAudits-B_PUXCKC.js → AdminUserAudits-CSsN1fIC.js} +3 -2
  18. package/dist/admin/AdminUserAudits-CSsN1fIC.js.map +1 -0
  19. package/dist/admin/{AdminUserAudits-D7cTcElL.js → AdminUserAudits-DmAnivo3.js} +1 -1
  20. package/dist/admin/{AdminUserCreate-DzfRbGZ4.js → AdminUserCreate-B72nu-3W.js} +3 -2
  21. package/dist/admin/AdminUserCreate-B72nu-3W.js.map +1 -0
  22. package/dist/admin/{AdminUserCreate-oUA1KDIl.js → AdminUserCreate-DpA13zwj.js} +1 -1
  23. package/dist/admin/{AdminUserDetails-DeTrJm-t.js → AdminUserDetails-BCt8Su-4.js} +3 -2
  24. package/dist/admin/AdminUserDetails-BCt8Su-4.js.map +1 -0
  25. package/dist/admin/{AdminUserDetails-y1H5DW8Y.js → AdminUserDetails-z1y8kJeB.js} +1 -1
  26. package/dist/admin/{AdminUserLayout-CsfrrZkD.js → AdminUserLayout-Ck0GLRE5.js} +3 -2
  27. package/dist/admin/AdminUserLayout-Ck0GLRE5.js.map +1 -0
  28. package/dist/admin/{AdminUserLayout-Dejnz13m.js → AdminUserLayout-DyQYacQQ.js} +1 -1
  29. package/dist/admin/AdminUserSessions-D9X2_HMA.js +3 -0
  30. package/dist/admin/{AdminUserSessions-DO9H85O-.js → AdminUserSessions-DEaGu6n6.js} +3 -2
  31. package/dist/admin/AdminUserSessions-DEaGu6n6.js.map +1 -0
  32. package/dist/admin/AdminUserSettings-CE66UTIP.js +3 -0
  33. package/dist/admin/{AdminUserSettings-B3jA8g3p.js → AdminUserSettings-CR7MxX_R.js} +3 -2
  34. package/dist/admin/AdminUserSettings-CR7MxX_R.js.map +1 -0
  35. package/dist/admin/{AdminUsers-ebbrJBT0.js → AdminUsers-BnGIRvmV.js} +3 -2
  36. package/dist/admin/AdminUsers-BnGIRvmV.js.map +1 -0
  37. package/dist/admin/AdminUsers-CG9-2Z8W.js +3 -0
  38. package/dist/admin/index.d.ts +16 -16
  39. package/dist/admin/index.d.ts.map +1 -1
  40. package/dist/admin/index.js +26 -25
  41. package/dist/admin/index.js.map +1 -1
  42. package/dist/auth/{AuthLayout-BAZJHzDG.js → AuthLayout-B1sUB8fB.js} +2 -2
  43. package/dist/auth/AuthLayout-B1sUB8fB.js.map +1 -0
  44. package/dist/auth/Login-BWi-pPbO.js +4 -0
  45. package/dist/auth/{Login-CeNZZjrr.js → Login-Cjxv3EDi.js} +2 -2
  46. package/dist/auth/Login-Cjxv3EDi.js.map +1 -0
  47. package/dist/auth/{Register-s4ENeyiE.js → Register-BKBIpHhW.js} +3 -2
  48. package/dist/auth/Register-BKBIpHhW.js.map +1 -0
  49. package/dist/auth/Register-CtdvihIM.js +4 -0
  50. package/dist/auth/ResetPassword-BUdM7T_R.js +3 -0
  51. package/dist/auth/{ResetPassword-GLIFkJT7.js → ResetPassword-DvqD_1SJ.js} +3 -2
  52. package/dist/auth/ResetPassword-DvqD_1SJ.js.map +1 -0
  53. package/dist/auth/VerifyEmail-BYmtnkEl.js +3 -0
  54. package/dist/auth/{VerifyEmail-R79sSej_.js → VerifyEmail-VaBruOnO.js} +3 -2
  55. package/dist/auth/VerifyEmail-VaBruOnO.js.map +1 -0
  56. package/dist/auth/index.d.ts +11 -11
  57. package/dist/auth/index.d.ts.map +1 -1
  58. package/dist/auth/index.js +10 -10
  59. package/dist/auth/index.js.map +1 -1
  60. package/dist/core/index.d.ts +36 -55
  61. package/dist/core/index.d.ts.map +1 -1
  62. package/dist/core/index.js +44 -345
  63. package/dist/core/index.js.map +1 -1
  64. package/dist/demo/DemoDataTable-2mzzf__a.js +150 -0
  65. package/dist/demo/DemoDataTable-2mzzf__a.js.map +1 -0
  66. package/dist/demo/DemoHome-CnuL5WV9.js +25 -0
  67. package/dist/demo/DemoHome-CnuL5WV9.js.map +1 -0
  68. package/dist/demo/DemoHome-D6Z7EE4V.js +3 -0
  69. package/dist/demo/DemoJsonViewer-CYUggLop.js +4 -0
  70. package/dist/demo/DemoJsonViewer-NUGst5wW.js +430 -0
  71. package/dist/demo/DemoJsonViewer-NUGst5wW.js.map +1 -0
  72. package/dist/demo/DemoLayout-ZFDzyvY3.js +3 -0
  73. package/dist/demo/DemoLayout-dvbeuBBf.js +47 -0
  74. package/dist/demo/DemoLayout-dvbeuBBf.js.map +1 -0
  75. package/dist/demo/DemoLogin--wE44i23.js +327 -0
  76. package/dist/demo/DemoLogin--wE44i23.js.map +1 -0
  77. package/dist/demo/DemoRegister-BtrMksx6.js +488 -0
  78. package/dist/demo/DemoRegister-BtrMksx6.js.map +1 -0
  79. package/dist/demo/DemoResetPassword-DVXiiiX7.js +341 -0
  80. package/dist/demo/DemoResetPassword-DVXiiiX7.js.map +1 -0
  81. package/dist/demo/DemoSidebar-DWnjYHoP.js +82 -0
  82. package/dist/demo/DemoSidebar-DWnjYHoP.js.map +1 -0
  83. package/dist/demo/DemoTypeForm-P5_VInW2.js +83 -0
  84. package/dist/demo/DemoTypeForm-P5_VInW2.js.map +1 -0
  85. package/dist/demo/DemoVerifyEmail-C_ooC5u8.js +152 -0
  86. package/dist/demo/DemoVerifyEmail-C_ooC5u8.js.map +1 -0
  87. package/dist/demo/IconGoogle-DvmFiEDB.js +58 -0
  88. package/dist/demo/IconGoogle-DvmFiEDB.js.map +1 -0
  89. package/dist/demo/Showcase-vemLuO2t.js +187 -0
  90. package/dist/demo/Showcase-vemLuO2t.js.map +1 -0
  91. package/dist/demo/index.d.ts +97 -0
  92. package/dist/demo/index.d.ts.map +1 -0
  93. package/dist/demo/index.js +121 -0
  94. package/dist/demo/index.js.map +1 -0
  95. package/dist/json/index.d.ts +58 -0
  96. package/dist/json/index.d.ts.map +1 -0
  97. package/dist/json/index.js +325 -0
  98. package/dist/json/index.js.map +1 -0
  99. package/package.json +17 -6
  100. package/src/admin/AdminRouter.ts +1 -1
  101. package/src/admin/MainRouter.ts +1 -1
  102. package/src/admin/components/audits/AdminAudits.tsx +2 -1
  103. package/src/admin/components/sessions/AdminSessions.tsx +2 -1
  104. package/src/admin/components/users/AdminUserAudits.tsx +2 -1
  105. package/src/admin/components/users/AdminUserCreate.tsx +2 -1
  106. package/src/admin/components/users/AdminUserDetails.tsx +2 -1
  107. package/src/admin/components/users/AdminUserLayout.tsx +2 -6
  108. package/src/admin/components/users/AdminUserSessions.tsx +2 -1
  109. package/src/admin/components/users/AdminUserSettings.tsx +2 -1
  110. package/src/admin/components/users/AdminUsers.tsx +2 -1
  111. package/src/auth/AuthRouter.ts +1 -1
  112. package/src/auth/components/AuthLayout.tsx +1 -1
  113. package/src/auth/components/Login.tsx +1 -1
  114. package/src/auth/components/Register.tsx +2 -1
  115. package/src/auth/components/ResetPassword.tsx +2 -1
  116. package/src/auth/components/VerifyEmail.tsx +2 -1
  117. package/src/auth/components/buttons/UserButton.tsx +1 -1
  118. package/src/core/RootRouter.ts +1 -1
  119. package/src/core/components/buttons/ActionButton.tsx +3 -4
  120. package/src/core/components/form/Control.tsx +12 -1
  121. package/src/core/components/form/ControlNumber.tsx +5 -0
  122. package/src/core/components/layout/AdminShell.tsx +2 -1
  123. package/src/core/components/layout/AlephaMantineProvider.tsx +2 -1
  124. package/src/core/components/layout/Omnibar.tsx +2 -1
  125. package/src/core/components/layout/Sidebar.tsx +10 -13
  126. package/src/core/index.ts +1 -2
  127. package/src/core/services/DialogService.tsx +0 -17
  128. package/{styles.css → src/core/styles.css} +1 -5
  129. package/src/demo/DemoRouter.ts +123 -0
  130. package/src/demo/components/DemoHome.tsx +29 -0
  131. package/src/demo/components/DemoLayout.tsx +52 -0
  132. package/src/demo/components/auth/DemoLogin.tsx +130 -0
  133. package/src/demo/components/auth/DemoRegister.tsx +144 -0
  134. package/src/demo/components/auth/DemoResetPassword.tsx +69 -0
  135. package/src/demo/components/auth/DemoVerifyEmail.tsx +28 -0
  136. package/src/demo/components/core/DemoDataTable.tsx +174 -0
  137. package/src/demo/components/core/DemoSidebar.tsx +85 -0
  138. package/src/demo/components/core/DemoTypeForm.tsx +69 -0
  139. package/src/demo/components/json/DemoJsonViewer.tsx +128 -0
  140. package/src/demo/components/shared/MacWindow.tsx +105 -0
  141. package/src/demo/components/shared/Showcase.tsx +112 -0
  142. package/src/demo/index.ts +30 -0
  143. package/src/demo/styles.css +0 -0
  144. package/src/json/components/JsonViewer.css +25 -0
  145. package/src/json/components/JsonViewer.tsx +526 -0
  146. package/src/json/extensions/DialogService.tsx +31 -0
  147. package/src/json/index.ts +5 -0
  148. package/src/json/styles.css +1 -0
  149. package/dist/admin/AdminAudits-CwvH8e8c.js.map +0 -1
  150. package/dist/admin/AdminAudits-Dv8Vk_6r.js +0 -3
  151. package/dist/admin/AdminFiles-5CPA3lQk.js +0 -3
  152. package/dist/admin/AdminNotifications-DLjmZWtf.js +0 -3
  153. package/dist/admin/AdminSessions-BCjgJ-93.js.map +0 -1
  154. package/dist/admin/AdminSessions-DEh2uN-4.js +0 -3
  155. package/dist/admin/AdminUserAudits-B_PUXCKC.js.map +0 -1
  156. package/dist/admin/AdminUserCreate-DzfRbGZ4.js.map +0 -1
  157. package/dist/admin/AdminUserDetails-DeTrJm-t.js.map +0 -1
  158. package/dist/admin/AdminUserLayout-CsfrrZkD.js.map +0 -1
  159. package/dist/admin/AdminUserSessions-Bbhcpz4k.js +0 -3
  160. package/dist/admin/AdminUserSessions-DO9H85O-.js.map +0 -1
  161. package/dist/admin/AdminUserSettings-B3jA8g3p.js.map +0 -1
  162. package/dist/admin/AdminUserSettings-CE0xpbQc.js +0 -3
  163. package/dist/admin/AdminUsers-CegGZDhW.js +0 -3
  164. package/dist/admin/AdminUsers-ebbrJBT0.js.map +0 -1
  165. package/dist/auth/AuthLayout-BAZJHzDG.js.map +0 -1
  166. package/dist/auth/Login-CeNZZjrr.js.map +0 -1
  167. package/dist/auth/Login-hQcu1nlu.js +0 -4
  168. package/dist/auth/Register-B6HBNVHS.js +0 -4
  169. package/dist/auth/Register-s4ENeyiE.js.map +0 -1
  170. package/dist/auth/ResetPassword-Cjd-W-Nu.js +0 -3
  171. package/dist/auth/ResetPassword-GLIFkJT7.js.map +0 -1
  172. package/dist/auth/VerifyEmail-Dc9ABKUw.js +0 -3
  173. package/dist/auth/VerifyEmail-R79sSej_.js.map +0 -1
  174. package/src/core/components/data/JsonViewer.tsx +0 -361
@@ -1,361 +0,0 @@
1
- import {
2
- ActionIcon,
3
- Box,
4
- Collapse,
5
- CopyButton,
6
- type MantineSize,
7
- Text,
8
- Tooltip,
9
- } from "@mantine/core";
10
- import {
11
- IconCheck,
12
- IconChevronDown,
13
- IconChevronRight,
14
- IconCopy,
15
- } from "@tabler/icons-react";
16
- import { type ReactNode, useState } from "react";
17
-
18
- interface JsonViewerProps {
19
- data: any;
20
- defaultExpanded?: boolean;
21
- maxDepth?: number;
22
- copyable?: boolean;
23
- size?: MantineSize;
24
- }
25
-
26
- interface JsonNodeProps {
27
- name?: string;
28
- value: any;
29
- depth: number;
30
- maxDepth: number;
31
- isLast?: boolean;
32
- isArrayItem?: boolean;
33
- size?: MantineSize;
34
- iconWidth: number;
35
- }
36
-
37
- const getSizeConfig = (size: MantineSize = "sm") => {
38
- const configs = {
39
- xs: { text: "xs" as const, icon: 12, indent: 16, gap: 4, iconWidth: 18 },
40
- sm: { text: "sm" as const, icon: 14, indent: 20, gap: 6, iconWidth: 20 },
41
- md: { text: "md" as const, icon: 16, indent: 24, gap: 8, iconWidth: 22 },
42
- lg: { text: "lg" as const, icon: 18, indent: 28, gap: 10, iconWidth: 24 },
43
- xl: { text: "xl" as const, icon: 20, indent: 32, gap: 12, iconWidth: 26 },
44
- };
45
- return configs[size] || configs.sm;
46
- };
47
-
48
- const JsonNode = ({
49
- name,
50
- value,
51
- depth,
52
- maxDepth,
53
- isLast = false,
54
- isArrayItem = false,
55
- size = "sm",
56
- iconWidth,
57
- }: JsonNodeProps) => {
58
- const [expanded, setExpanded] = useState(depth < 2);
59
- const sizeConfig = getSizeConfig(size);
60
-
61
- const getValueType = (val: any): string => {
62
- if (val === null) return "null";
63
- if (val === undefined) return "undefined";
64
- if (Array.isArray(val)) return "array";
65
- return typeof val;
66
- };
67
-
68
- const valueType = getValueType(value);
69
-
70
- const renderPrimitive = (val: any): ReactNode => {
71
- const type = getValueType(val);
72
-
73
- const textProps = {
74
- component: "span" as const,
75
- ff: "monospace" as const,
76
- size: sizeConfig.text,
77
- };
78
-
79
- switch (type) {
80
- case "string":
81
- return (
82
- <Text {...textProps} c="teal">
83
- "{val}"
84
- </Text>
85
- );
86
- case "number":
87
- return (
88
- <Text {...textProps} c="blue">
89
- {val}
90
- </Text>
91
- );
92
- case "boolean":
93
- return (
94
- <Text {...textProps} c="violet">
95
- {String(val)}
96
- </Text>
97
- );
98
- case "null":
99
- return (
100
- <Text {...textProps} c="dimmed">
101
- null
102
- </Text>
103
- );
104
- case "undefined":
105
- return (
106
- <Text {...textProps} c="dimmed">
107
- undefined
108
- </Text>
109
- );
110
- default:
111
- return <Text {...textProps}>{String(val)}</Text>;
112
- }
113
- };
114
-
115
- const renderKey = () => {
116
- if (name === undefined) return null;
117
- return (
118
- <Text
119
- component="span"
120
- c="cyan"
121
- ff="monospace"
122
- fw={500}
123
- size={sizeConfig.text}
124
- >
125
- {isArrayItem ? `[${name}]` : `"${name}"`}
126
- </Text>
127
- );
128
- };
129
-
130
- const comma = !isLast && (
131
- <Text component="span" c="dimmed" ff="monospace" size={sizeConfig.text}>
132
- ,
133
- </Text>
134
- );
135
-
136
- if (valueType === "object" || valueType === "array") {
137
- const isObject = valueType === "object";
138
- const entries = isObject
139
- ? Object.entries(value)
140
- : value.map((v: any, i: number) => [i, v]);
141
- const isEmpty = entries.length === 0;
142
- const canExpand = depth < maxDepth && !isEmpty;
143
-
144
- const preview = isObject ? "{...}" : "[...]";
145
- const brackets = isObject ? ["{", "}"] : ["[", "]"];
146
-
147
- return (
148
- <Box>
149
- <Box
150
- style={{
151
- display: "grid",
152
- gridTemplateColumns: `${iconWidth}px auto`,
153
- alignItems: "center",
154
- }}
155
- >
156
- <Box
157
- style={{
158
- display: "flex",
159
- justifyContent: "center",
160
- alignItems: "center",
161
- }}
162
- >
163
- {canExpand && (
164
- <ActionIcon
165
- size="xs"
166
- variant="transparent"
167
- c="dimmed"
168
- onClick={() => setExpanded(!expanded)}
169
- style={{ cursor: "pointer" }}
170
- >
171
- {expanded ? (
172
- <IconChevronDown size={sizeConfig.icon} />
173
- ) : (
174
- <IconChevronRight size={sizeConfig.icon} />
175
- )}
176
- </ActionIcon>
177
- )}
178
- </Box>
179
- <Box
180
- style={{
181
- display: "flex",
182
- alignItems: "center",
183
- gap: sizeConfig.gap,
184
- }}
185
- >
186
- {renderKey()}
187
- {name !== undefined && (
188
- <Text
189
- component="span"
190
- c="dimmed"
191
- ff="monospace"
192
- size={sizeConfig.text}
193
- >
194
- :
195
- </Text>
196
- )}
197
- <Text
198
- component="span"
199
- c="dimmed"
200
- ff="monospace"
201
- size={sizeConfig.text}
202
- >
203
- {brackets[0]}
204
- </Text>
205
- {!expanded && !isEmpty && (
206
- <Text
207
- component="span"
208
- c="dimmed"
209
- ff="monospace"
210
- fs="italic"
211
- size={sizeConfig.text}
212
- >
213
- {preview}
214
- </Text>
215
- )}
216
- {(isEmpty || !expanded) && (
217
- <>
218
- <Text
219
- component="span"
220
- c="dimmed"
221
- ff="monospace"
222
- size={sizeConfig.text}
223
- >
224
- {brackets[1]}
225
- </Text>
226
- {comma}
227
- </>
228
- )}
229
- {!isEmpty && !expanded && (
230
- <Text component="span" c="dimmed" size={sizeConfig.text}>
231
- {entries.length} {entries.length === 1 ? "item" : "items"}
232
- </Text>
233
- )}
234
- </Box>
235
- </Box>
236
-
237
- <Collapse in={expanded && canExpand}>
238
- <Box
239
- pl={sizeConfig.indent}
240
- ml={iconWidth / 2}
241
- style={{
242
- borderLeft: "1px solid var(--mantine-color-default-border)",
243
- }}
244
- >
245
- {entries.map(
246
- ([key, val]: [string | number, any], index: number) => (
247
- <JsonNode
248
- key={String(key)}
249
- name={String(key)}
250
- value={val}
251
- depth={depth + 1}
252
- maxDepth={maxDepth}
253
- isLast={index === entries.length - 1}
254
- isArrayItem={!isObject}
255
- size={size}
256
- iconWidth={iconWidth}
257
- />
258
- ),
259
- )}
260
- </Box>
261
- <Box
262
- style={{
263
- display: "grid",
264
- gridTemplateColumns: `${iconWidth}px auto`,
265
- }}
266
- >
267
- <Box />
268
- <Box style={{ display: "flex", gap: sizeConfig.gap }}>
269
- <Text c="dimmed" ff="monospace" size={sizeConfig.text}>
270
- {brackets[1]}
271
- </Text>
272
- {comma}
273
- </Box>
274
- </Box>
275
- </Collapse>
276
- </Box>
277
- );
278
- }
279
-
280
- return (
281
- <Box
282
- style={{
283
- display: "grid",
284
- gridTemplateColumns: `${iconWidth}px auto`,
285
- alignItems: "center",
286
- }}
287
- >
288
- <Box />
289
- <Box
290
- style={{
291
- display: "flex",
292
- alignItems: "center",
293
- gap: sizeConfig.gap,
294
- }}
295
- >
296
- {renderKey()}
297
- {name !== undefined && (
298
- <Text
299
- component="span"
300
- c="dimmed"
301
- ff="monospace"
302
- size={sizeConfig.text}
303
- >
304
- :
305
- </Text>
306
- )}
307
- {renderPrimitive(value)}
308
- {comma}
309
- </Box>
310
- </Box>
311
- );
312
- };
313
-
314
- export const JsonViewer = ({
315
- data,
316
- defaultExpanded = true,
317
- maxDepth = 10,
318
- copyable = true,
319
- size = "sm",
320
- }: JsonViewerProps) => {
321
- const sizeConfig = getSizeConfig(size);
322
- const copyIconSize = sizeConfig.icon + 2;
323
-
324
- return (
325
- <Box pos="relative" w="100%">
326
- {copyable && (
327
- <Box pos="absolute" top={0} right={0} style={{ zIndex: 1 }}>
328
- <CopyButton value={JSON.stringify(data, null, 2)}>
329
- {({ copied, copy }) => (
330
- <Tooltip label={copied ? "Copied" : "Copy JSON"}>
331
- <ActionIcon
332
- color={copied ? "teal" : "gray"}
333
- variant="subtle"
334
- onClick={copy}
335
- size={size}
336
- >
337
- {copied ? (
338
- <IconCheck size={copyIconSize} />
339
- ) : (
340
- <IconCopy size={copyIconSize} />
341
- )}
342
- </ActionIcon>
343
- </Tooltip>
344
- )}
345
- </CopyButton>
346
- </Box>
347
- )}
348
- <Box pt={copyable ? 30 : 0} style={{ overflowX: "auto" }}>
349
- <JsonNode
350
- value={data}
351
- depth={0}
352
- maxDepth={maxDepth}
353
- size={size}
354
- iconWidth={sizeConfig.iconWidth}
355
- />
356
- </Box>
357
- </Box>
358
- );
359
- };
360
-
361
- export default JsonViewer;