@ploykit/ui 0.5.0 → 0.6.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 (222) hide show
  1. package/dist/AppProviders.js +2 -2
  2. package/dist/components/ConfirmDialog.js +1 -1
  3. package/dist/components/CronInput.js +3 -3
  4. package/dist/components/DataTable.js +4 -4
  5. package/dist/components/FormField.js +1 -1
  6. package/dist/components/ImpersonationBanner.js +1 -1
  7. package/dist/components/NotificationBell.js +1 -1
  8. package/dist/components/OnboardingChecklist.js +3 -3
  9. package/dist/components/Page.js +2 -2
  10. package/dist/components/ReauthDialog.js +4 -4
  11. package/dist/components/SecretModal.js +2 -2
  12. package/dist/components/SettingsCard.js +2 -2
  13. package/dist/components/SiteBanner.js +1 -1
  14. package/dist/components/SiteBannerLayer.js +1 -1
  15. package/dist/components/StatusBadge.js +1 -1
  16. package/dist/components/UserMenu.js +3 -3
  17. package/dist/components/WorkspaceSwitcher.js +7 -7
  18. package/dist/components/ui/alert-dialog.js +2 -2
  19. package/dist/components/ui/avatar.js +1 -1
  20. package/dist/components/ui/badge.js +1 -1
  21. package/dist/components/ui/breadcrumb.js +1 -1
  22. package/dist/components/ui/button.js +1 -1
  23. package/dist/components/ui/card.js +1 -1
  24. package/dist/components/ui/checkbox.js +1 -1
  25. package/dist/components/ui/dialog.js +2 -2
  26. package/dist/components/ui/dropdown-menu.js +1 -1
  27. package/dist/components/ui/empty.js +1 -1
  28. package/dist/components/ui/field.js +3 -3
  29. package/dist/components/ui/input.js +1 -1
  30. package/dist/components/ui/label.js +1 -1
  31. package/dist/components/ui/popover.js +1 -1
  32. package/dist/components/ui/progress.js +1 -1
  33. package/dist/components/ui/select.js +1 -1
  34. package/dist/components/ui/separator.js +1 -1
  35. package/dist/components/ui/sheet.js +2 -2
  36. package/dist/components/ui/sidebar.js +8 -8
  37. package/dist/components/ui/skeleton.js +1 -1
  38. package/dist/components/ui/switch.js +1 -1
  39. package/dist/components/ui/tabs.js +1 -1
  40. package/dist/components/ui/textarea.js +1 -1
  41. package/dist/components/ui/tooltip.js +1 -1
  42. package/dist/index.js +78 -78
  43. package/dist/layouts/AppShell.js +4 -4
  44. package/dist/layouts/SettingsShell.js +4 -4
  45. package/dist/pages/LoginPage.js +5 -5
  46. package/dist/pages/account/NotificationPreferencesPage.js +3 -3
  47. package/dist/pages/account/ProfileSettingsPage.js +9 -9
  48. package/dist/pages/account/SecuritySettingsPage.js +13 -13
  49. package/dist/pages/account/TokensPage.js +12 -12
  50. package/dist/pages/admin/AdminSettingsPage.js +11 -11
  51. package/dist/pages/admin/AdminShell.js +3 -3
  52. package/dist/pages/admin/AuditPage.js +8 -8
  53. package/dist/pages/admin/OrdersPage.js +12 -12
  54. package/dist/pages/admin/OverviewPage.js +13 -13
  55. package/dist/pages/admin/SSOPage.js +6 -6
  56. package/dist/pages/admin/UserDetailPage.js +13 -13
  57. package/dist/pages/admin/UsersPage.js +13 -13
  58. package/dist/pages/admin/WebhookDeliveriesPage.js +9 -9
  59. package/dist/pages/admin/WorkspaceDetailPage.js +14 -14
  60. package/dist/pages/admin/WorkspacesPage.js +9 -9
  61. package/dist/pages/admin/shared.js +1 -1
  62. package/dist/pages/auth/ForgotPasswordPage.js +4 -4
  63. package/dist/pages/auth/InviteAcceptPage.js +6 -6
  64. package/dist/pages/auth/RegisterPage.js +7 -7
  65. package/dist/pages/auth/ResetPasswordPage.js +5 -5
  66. package/dist/pages/auth/VerifyEmailPage.js +3 -3
  67. package/dist/pages/workspace/BillingPage.js +11 -11
  68. package/dist/pages/workspace/BillingSuccessPage.js +2 -2
  69. package/dist/pages/workspace/MembersPage.js +15 -15
  70. package/dist/pages/workspace/RolePermissionsPage.js +9 -9
  71. package/dist/pages/workspace/SchedulesPage.js +12 -12
  72. package/dist/pages/workspace/UsagePage.js +6 -6
  73. package/dist/pages/workspace/WebhooksPage.js +16 -16
  74. package/dist/pages/workspace/WorkspaceAuditPage.js +7 -7
  75. package/dist/pages/workspace/WorkspaceGeneralPage.js +9 -9
  76. package/package.json +6 -5
  77. package/src/AppProviders.tsx +29 -0
  78. package/src/components/ConfirmDialog.tsx +77 -0
  79. package/src/components/CronInput.tsx +195 -0
  80. package/src/components/DataTable.tsx +152 -0
  81. package/src/components/ErrorBoundary.tsx +46 -0
  82. package/src/components/FormField.tsx +56 -0
  83. package/src/components/ImpersonationBanner.tsx +23 -0
  84. package/src/components/NotificationBell.tsx +135 -0
  85. package/src/components/OnboardingChecklist.tsx +114 -0
  86. package/src/components/Page.tsx +67 -0
  87. package/src/components/ReauthDialog.tsx +94 -0
  88. package/src/components/SecretModal.tsx +147 -0
  89. package/src/components/SettingsCard.tsx +39 -0
  90. package/src/components/SiteBanner.tsx +32 -0
  91. package/src/components/SiteBannerLayer.tsx +29 -0
  92. package/src/components/StatusBadge.tsx +12 -0
  93. package/src/components/UserMenu.tsx +103 -0
  94. package/src/components/WorkspaceSwitcher.tsx +159 -0
  95. package/src/components/__tests__/AppProviders.test.tsx +111 -0
  96. package/src/components/__tests__/CronInput.test.tsx +180 -0
  97. package/src/components/__tests__/DataTable.test.tsx +208 -0
  98. package/src/components/__tests__/ErrorBoundary.test.tsx +61 -0
  99. package/src/components/__tests__/ImpersonationBanner.test.tsx +59 -0
  100. package/src/components/__tests__/NotificationBell.test.tsx +207 -0
  101. package/src/components/__tests__/OnboardingChecklist.test.tsx +97 -0
  102. package/src/components/__tests__/SecretModal.test.tsx +112 -0
  103. package/src/components/__tests__/SiteBannerLayer.test.tsx +44 -0
  104. package/src/components/__tests__/UserMenu.test.tsx +98 -0
  105. package/src/components/__tests__/WorkspaceSwitcher.test.tsx +162 -0
  106. package/src/components/__tests__/form.test.tsx +133 -0
  107. package/src/components/__tests__/semantic-tokens.test.ts +41 -0
  108. package/src/components/__tests__/smoke.test.tsx +11 -0
  109. package/src/components/__tests__/toast.test.tsx +27 -0
  110. package/src/components/toast.tsx +23 -0
  111. package/src/components/ui/__tests__/alert-dialog.test.tsx +66 -0
  112. package/src/components/ui/__tests__/avatar.test.tsx +30 -0
  113. package/src/components/ui/__tests__/checkbox.test.tsx +18 -0
  114. package/src/components/ui/__tests__/dropdown-menu.test.tsx +33 -0
  115. package/src/components/ui/__tests__/field.test.tsx +43 -0
  116. package/src/components/ui/__tests__/overlay-size.test.tsx +84 -0
  117. package/src/components/ui/__tests__/popover.test.tsx +32 -0
  118. package/src/components/ui/__tests__/progress.test.tsx +24 -0
  119. package/src/components/ui/__tests__/select-callback.test.tsx +72 -0
  120. package/src/components/ui/__tests__/select.test.tsx +48 -0
  121. package/src/components/ui/__tests__/sidebar.test.tsx +121 -0
  122. package/src/components/ui/__tests__/stock-mirror.test.ts +39 -0
  123. package/src/components/ui/__tests__/subpath.test.tsx +38 -0
  124. package/src/components/ui/__tests__/switch.test.tsx +24 -0
  125. package/src/components/ui/__tests__/tabs.test.tsx +24 -0
  126. package/src/components/ui/__tests__/textarea.test.tsx +41 -0
  127. package/src/components/ui/alert-dialog.tsx +187 -0
  128. package/src/components/ui/avatar.tsx +108 -0
  129. package/src/components/ui/badge.tsx +51 -0
  130. package/src/components/ui/breadcrumb.tsx +124 -0
  131. package/src/components/ui/button.tsx +57 -0
  132. package/src/components/ui/card.tsx +102 -0
  133. package/src/components/ui/checkbox.tsx +28 -0
  134. package/src/components/ui/dialog.tsx +166 -0
  135. package/src/components/ui/dropdown-menu.tsx +265 -0
  136. package/src/components/ui/empty.tsx +103 -0
  137. package/src/components/ui/field.tsx +238 -0
  138. package/src/components/ui/input.tsx +19 -0
  139. package/src/components/ui/label.tsx +17 -0
  140. package/src/components/ui/popover.tsx +89 -0
  141. package/src/components/ui/progress.tsx +82 -0
  142. package/src/components/ui/select.tsx +235 -0
  143. package/src/components/ui/separator.tsx +24 -0
  144. package/src/components/ui/sheet.tsx +146 -0
  145. package/src/components/ui/sidebar.tsx +723 -0
  146. package/src/components/ui/skeleton.tsx +13 -0
  147. package/src/components/ui/switch.tsx +29 -0
  148. package/src/components/ui/tabs.tsx +79 -0
  149. package/src/components/ui/textarea.tsx +26 -0
  150. package/src/components/ui/tooltip.tsx +63 -0
  151. package/src/dev.css +1 -0
  152. package/src/hooks/use-mobile.ts +19 -0
  153. package/src/index.ts +150 -0
  154. package/src/layouts/AppShell.tsx +163 -0
  155. package/src/layouts/AuthShell.tsx +24 -0
  156. package/src/layouts/SettingsShell.tsx +129 -0
  157. package/src/layouts/__tests__/AppShell.test.tsx +163 -0
  158. package/src/layouts/__tests__/SettingsShell.test.tsx +146 -0
  159. package/src/lib/__tests__/api-error.test.ts +163 -0
  160. package/src/lib/__tests__/utils.test.ts +21 -0
  161. package/src/lib/api-error.ts +98 -0
  162. package/src/lib/utils.ts +109 -0
  163. package/src/pages/LandingPage.tsx +88 -0
  164. package/src/pages/LoginPage.tsx +291 -0
  165. package/src/pages/__tests__/LandingPage.test.tsx +58 -0
  166. package/src/pages/__tests__/LoginPage.test.tsx +229 -0
  167. package/src/pages/__tests__/RegisterPage.test.tsx +138 -0
  168. package/src/pages/__tests__/ssr-smoke.test.tsx +99 -0
  169. package/src/pages/account/NotificationPreferencesPage.tsx +138 -0
  170. package/src/pages/account/ProfileSettingsPage.tsx +189 -0
  171. package/src/pages/account/SecuritySettingsPage.tsx +214 -0
  172. package/src/pages/account/TokensPage.tsx +211 -0
  173. package/src/pages/account/__tests__/NotificationPreferencesPage.test.tsx +150 -0
  174. package/src/pages/account/__tests__/ProfileSettingsPage.test.tsx +173 -0
  175. package/src/pages/account/__tests__/SecuritySettingsPage.test.tsx +212 -0
  176. package/src/pages/account/__tests__/TokensPage.test.tsx +180 -0
  177. package/src/pages/admin/AdminSettingsPage.tsx +564 -0
  178. package/src/pages/admin/AdminShell.tsx +199 -0
  179. package/src/pages/admin/AuditPage.tsx +338 -0
  180. package/src/pages/admin/OrdersPage.tsx +642 -0
  181. package/src/pages/admin/OverviewPage.tsx +559 -0
  182. package/src/pages/admin/SSOPage.tsx +166 -0
  183. package/src/pages/admin/UserDetailPage.tsx +641 -0
  184. package/src/pages/admin/UsersPage.tsx +462 -0
  185. package/src/pages/admin/WebhookDeliveriesPage.tsx +318 -0
  186. package/src/pages/admin/WorkspaceDetailPage.tsx +551 -0
  187. package/src/pages/admin/WorkspacesPage.tsx +299 -0
  188. package/src/pages/admin/__tests__/AdminSettingsPage.test.tsx +260 -0
  189. package/src/pages/admin/__tests__/OrdersPageMarkPaid.test.tsx +207 -0
  190. package/src/pages/admin/__tests__/OverviewPageActivity.test.tsx +213 -0
  191. package/src/pages/admin/__tests__/SSOPage.test.tsx +128 -0
  192. package/src/pages/admin/__tests__/UsersPageActions.test.tsx +188 -0
  193. package/src/pages/admin/__tests__/WorkspaceDetailPageTransfer.test.tsx +170 -0
  194. package/src/pages/admin/__tests__/WorkspacesPagePlans.test.tsx +138 -0
  195. package/src/pages/admin/shared.ts +42 -0
  196. package/src/pages/auth/ForgotPasswordPage.tsx +83 -0
  197. package/src/pages/auth/InviteAcceptPage.tsx +105 -0
  198. package/src/pages/auth/RegisterPage.tsx +204 -0
  199. package/src/pages/auth/ResetPasswordPage.tsx +150 -0
  200. package/src/pages/auth/VerifyEmailPage.tsx +76 -0
  201. package/src/pages/auth/__tests__/ForgotPasswordPage.test.tsx +67 -0
  202. package/src/pages/auth/__tests__/InviteAcceptPage.test.tsx +86 -0
  203. package/src/pages/auth/__tests__/ResetPasswordPage.test.tsx +115 -0
  204. package/src/pages/auth/__tests__/VerifyEmailPage.test.tsx +74 -0
  205. package/src/pages/workspace/BillingPage.tsx +361 -0
  206. package/src/pages/workspace/BillingSuccessPage.tsx +115 -0
  207. package/src/pages/workspace/MembersPage.tsx +568 -0
  208. package/src/pages/workspace/RolePermissionsPage.tsx +202 -0
  209. package/src/pages/workspace/SchedulesPage.tsx +387 -0
  210. package/src/pages/workspace/UsagePage.tsx +207 -0
  211. package/src/pages/workspace/WebhooksPage.tsx +506 -0
  212. package/src/pages/workspace/WorkspaceAuditPage.tsx +229 -0
  213. package/src/pages/workspace/WorkspaceGeneralPage.tsx +184 -0
  214. package/src/pages/workspace/__tests__/BillingPage.test.tsx +302 -0
  215. package/src/pages/workspace/__tests__/BillingSuccessPage.test.tsx +134 -0
  216. package/src/pages/workspace/__tests__/MembersPage.test.tsx +347 -0
  217. package/src/pages/workspace/__tests__/RolePermissionsPage.test.tsx +138 -0
  218. package/src/pages/workspace/__tests__/SchedulesPage.test.tsx +239 -0
  219. package/src/pages/workspace/__tests__/UsagePage.test.tsx +223 -0
  220. package/src/pages/workspace/__tests__/WebhooksPage.test.tsx +309 -0
  221. package/src/pages/workspace/__tests__/WorkspaceAuditPage.test.tsx +112 -0
  222. package/src/pages/workspace/__tests__/WorkspaceGeneralPage.test.tsx +164 -0
package/dist/index.js CHANGED
@@ -1,78 +1,78 @@
1
- export { AppShell } from './layouts/AppShell';
2
- export { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInset, SidebarMenu, SidebarMenuButton, SidebarMenuItem, SidebarProvider, SidebarTrigger, } from './components/ui/sidebar';
3
- export { Separator } from './components/ui/separator';
4
- export { Skeleton } from './components/ui/skeleton';
5
- export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider } from './components/ui/tooltip';
6
- export { Sheet, SheetContent, SheetHeader, SheetTitle, SheetDescription, SheetFooter, SheetTrigger, SheetClose } from './components/ui/sheet';
7
- export { AppProviders } from './AppProviders';
8
- export { LoginPage } from './pages/LoginPage';
9
- export { LandingPage } from './pages/LandingPage';
10
- export { Button, buttonVariants } from './components/ui/button';
11
- export { Input } from './components/ui/input';
12
- export { Textarea } from './components/ui/textarea';
13
- export { StatusBadge } from './components/StatusBadge';
14
- export { Dialog, DialogTrigger, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter, DialogClose, } from './components/ui/dialog';
15
- export { PageHeader, PageLoading, PageEmpty, PageError } from './components/Page';
16
- export { ConfirmProvider, useConfirm } from './components/ConfirmDialog';
17
- export { NotificationBell } from './components/NotificationBell';
18
- export { WorkspaceSwitcher } from './components/WorkspaceSwitcher';
19
- export { SecretModal, ImpactConfirmation } from './components/SecretModal';
20
- export { cn, statusTone, statusLabel, STATUS_TONE_CLASS, STATUS_LABEL, formatDate, formatDateTime, shortID } from './lib/utils';
21
- export { ForgotPasswordPage } from './pages/auth/ForgotPasswordPage';
22
- export { ResetPasswordPage } from './pages/auth/ResetPasswordPage';
23
- export { VerifyEmailPage } from './pages/auth/VerifyEmailPage';
24
- export { ErrorBoundary } from './components/ErrorBoundary';
25
- export { toast, Toaster } from './components/toast';
26
- export { FormField } from './components/FormField';
27
- export { DataTable } from './components/DataTable';
28
- export { Field, FieldLabel, FieldDescription, FieldError, FieldGroup, FieldLegend, FieldSeparator, FieldSet, FieldContent, FieldTitle, } from './components/ui/field';
29
- export { Label } from './components/ui/label';
30
- export { Tabs, TabsList, TabsTrigger, TabsContent } from './components/ui/tabs';
31
- export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, } from './components/ui/alert-dialog';
32
- export { Avatar, AvatarImage, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarBadge, } from './components/ui/avatar';
33
- export { DropdownMenu, DropdownMenuPortal, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuGroup, DropdownMenuLabel, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubTrigger, DropdownMenuSubContent, } from './components/ui/dropdown-menu';
34
- export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, } from './components/ui/select';
35
- export { Popover, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger, } from './components/ui/popover';
36
- export { Switch } from './components/ui/switch';
37
- export { Progress, ProgressTrack, ProgressIndicator, ProgressLabel, ProgressValue, } from './components/ui/progress';
38
- export { Checkbox } from './components/ui/checkbox';
39
- export { Card, CardHeader, CardFooter, CardTitle, CardAction, CardDescription, CardContent, } from './components/ui/card';
40
- export { Breadcrumb, BreadcrumbList, BreadcrumbItem, BreadcrumbLink, BreadcrumbPage, BreadcrumbSeparator, BreadcrumbEllipsis, } from './components/ui/breadcrumb';
41
- export { Empty, EmptyHeader, EmptyTitle, EmptyDescription, EmptyContent, EmptyMedia, } from './components/ui/empty';
42
- export { SettingsShell } from './layouts/SettingsShell';
43
- export { AuthShell } from './layouts/AuthShell';
44
- export { SettingsCard } from './components/SettingsCard';
45
- export { UserMenu } from './components/UserMenu';
46
- export { OnboardingChecklist } from './components/OnboardingChecklist';
47
- export { RegisterPage } from './pages/auth/RegisterPage';
48
- export { InviteAcceptPage } from './pages/auth/InviteAcceptPage';
49
- export { ProfileSettingsPage } from './pages/account/ProfileSettingsPage';
50
- export { SecuritySettingsPage } from './pages/account/SecuritySettingsPage';
51
- export { TokensPage } from './pages/account/TokensPage';
52
- export { NotificationPreferencesPage } from './pages/account/NotificationPreferencesPage';
53
- export { MembersPage } from './pages/workspace/MembersPage';
54
- export { RolePermissionsPage } from './pages/workspace/RolePermissionsPage';
55
- export { ReauthDialog } from './components/ReauthDialog';
56
- export { WorkspaceGeneralPage } from './pages/workspace/WorkspaceGeneralPage';
57
- export { WorkspaceAuditPage } from './pages/workspace/WorkspaceAuditPage';
58
- export { UsagePage } from './pages/workspace/UsagePage';
59
- export { BillingPage } from './pages/workspace/BillingPage';
60
- export { BillingSuccessPage } from './pages/workspace/BillingSuccessPage';
61
- export { WebhooksPage } from './pages/workspace/WebhooksPage';
62
- export { apiErrorMessage } from './lib/api-error';
63
- export { CronInput } from './components/CronInput';
64
- export { SchedulesPage } from './pages/workspace/SchedulesPage';
65
- export { SiteBanner } from './components/SiteBanner';
66
- export { SiteBannerLayer } from './components/SiteBannerLayer';
67
- export { ImpersonationBanner } from './components/ImpersonationBanner';
68
- export { AdminShell } from './pages/admin/AdminShell';
69
- export { OverviewPage } from './pages/admin/OverviewPage';
70
- export { UsersPage } from './pages/admin/UsersPage';
71
- export { UserDetailPage } from './pages/admin/UserDetailPage';
72
- export { WorkspacesPage } from './pages/admin/WorkspacesPage';
73
- export { WorkspaceDetailPage } from './pages/admin/WorkspaceDetailPage';
74
- export { OrdersPage } from './pages/admin/OrdersPage';
75
- export { WebhookDeliveriesPage } from './pages/admin/WebhookDeliveriesPage';
76
- export { AuditPage } from './pages/admin/AuditPage';
77
- export { SSOPage } from './pages/admin/SSOPage';
78
- export { AdminSettingsPage } from './pages/admin/AdminSettingsPage';
1
+ export { AppShell } from './layouts/AppShell.js';
2
+ export { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInset, SidebarMenu, SidebarMenuButton, SidebarMenuItem, SidebarProvider, SidebarTrigger, } from './components/ui/sidebar.js';
3
+ export { Separator } from './components/ui/separator.js';
4
+ export { Skeleton } from './components/ui/skeleton.js';
5
+ export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider } from './components/ui/tooltip.js';
6
+ export { Sheet, SheetContent, SheetHeader, SheetTitle, SheetDescription, SheetFooter, SheetTrigger, SheetClose } from './components/ui/sheet.js';
7
+ export { AppProviders } from './AppProviders.js';
8
+ export { LoginPage } from './pages/LoginPage.js';
9
+ export { LandingPage } from './pages/LandingPage.js';
10
+ export { Button, buttonVariants } from './components/ui/button.js';
11
+ export { Input } from './components/ui/input.js';
12
+ export { Textarea } from './components/ui/textarea.js';
13
+ export { StatusBadge } from './components/StatusBadge.js';
14
+ export { Dialog, DialogTrigger, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter, DialogClose, } from './components/ui/dialog.js';
15
+ export { PageHeader, PageLoading, PageEmpty, PageError } from './components/Page.js';
16
+ export { ConfirmProvider, useConfirm } from './components/ConfirmDialog.js';
17
+ export { NotificationBell } from './components/NotificationBell.js';
18
+ export { WorkspaceSwitcher } from './components/WorkspaceSwitcher.js';
19
+ export { SecretModal, ImpactConfirmation } from './components/SecretModal.js';
20
+ export { cn, statusTone, statusLabel, STATUS_TONE_CLASS, STATUS_LABEL, formatDate, formatDateTime, shortID } from './lib/utils.js';
21
+ export { ForgotPasswordPage } from './pages/auth/ForgotPasswordPage.js';
22
+ export { ResetPasswordPage } from './pages/auth/ResetPasswordPage.js';
23
+ export { VerifyEmailPage } from './pages/auth/VerifyEmailPage.js';
24
+ export { ErrorBoundary } from './components/ErrorBoundary.js';
25
+ export { toast, Toaster } from './components/toast.js';
26
+ export { FormField } from './components/FormField.js';
27
+ export { DataTable } from './components/DataTable.js';
28
+ export { Field, FieldLabel, FieldDescription, FieldError, FieldGroup, FieldLegend, FieldSeparator, FieldSet, FieldContent, FieldTitle, } from './components/ui/field.js';
29
+ export { Label } from './components/ui/label.js';
30
+ export { Tabs, TabsList, TabsTrigger, TabsContent } from './components/ui/tabs.js';
31
+ export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, } from './components/ui/alert-dialog.js';
32
+ export { Avatar, AvatarImage, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarBadge, } from './components/ui/avatar.js';
33
+ export { DropdownMenu, DropdownMenuPortal, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuGroup, DropdownMenuLabel, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubTrigger, DropdownMenuSubContent, } from './components/ui/dropdown-menu.js';
34
+ export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, } from './components/ui/select.js';
35
+ export { Popover, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger, } from './components/ui/popover.js';
36
+ export { Switch } from './components/ui/switch.js';
37
+ export { Progress, ProgressTrack, ProgressIndicator, ProgressLabel, ProgressValue, } from './components/ui/progress.js';
38
+ export { Checkbox } from './components/ui/checkbox.js';
39
+ export { Card, CardHeader, CardFooter, CardTitle, CardAction, CardDescription, CardContent, } from './components/ui/card.js';
40
+ export { Breadcrumb, BreadcrumbList, BreadcrumbItem, BreadcrumbLink, BreadcrumbPage, BreadcrumbSeparator, BreadcrumbEllipsis, } from './components/ui/breadcrumb.js';
41
+ export { Empty, EmptyHeader, EmptyTitle, EmptyDescription, EmptyContent, EmptyMedia, } from './components/ui/empty.js';
42
+ export { SettingsShell } from './layouts/SettingsShell.js';
43
+ export { AuthShell } from './layouts/AuthShell.js';
44
+ export { SettingsCard } from './components/SettingsCard.js';
45
+ export { UserMenu } from './components/UserMenu.js';
46
+ export { OnboardingChecklist } from './components/OnboardingChecklist.js';
47
+ export { RegisterPage } from './pages/auth/RegisterPage.js';
48
+ export { InviteAcceptPage } from './pages/auth/InviteAcceptPage.js';
49
+ export { ProfileSettingsPage } from './pages/account/ProfileSettingsPage.js';
50
+ export { SecuritySettingsPage } from './pages/account/SecuritySettingsPage.js';
51
+ export { TokensPage } from './pages/account/TokensPage.js';
52
+ export { NotificationPreferencesPage } from './pages/account/NotificationPreferencesPage.js';
53
+ export { MembersPage } from './pages/workspace/MembersPage.js';
54
+ export { RolePermissionsPage } from './pages/workspace/RolePermissionsPage.js';
55
+ export { ReauthDialog } from './components/ReauthDialog.js';
56
+ export { WorkspaceGeneralPage } from './pages/workspace/WorkspaceGeneralPage.js';
57
+ export { WorkspaceAuditPage } from './pages/workspace/WorkspaceAuditPage.js';
58
+ export { UsagePage } from './pages/workspace/UsagePage.js';
59
+ export { BillingPage } from './pages/workspace/BillingPage.js';
60
+ export { BillingSuccessPage } from './pages/workspace/BillingSuccessPage.js';
61
+ export { WebhooksPage } from './pages/workspace/WebhooksPage.js';
62
+ export { apiErrorMessage } from './lib/api-error.js';
63
+ export { CronInput } from './components/CronInput.js';
64
+ export { SchedulesPage } from './pages/workspace/SchedulesPage.js';
65
+ export { SiteBanner } from './components/SiteBanner.js';
66
+ export { SiteBannerLayer } from './components/SiteBannerLayer.js';
67
+ export { ImpersonationBanner } from './components/ImpersonationBanner.js';
68
+ export { AdminShell } from './pages/admin/AdminShell.js';
69
+ export { OverviewPage } from './pages/admin/OverviewPage.js';
70
+ export { UsersPage } from './pages/admin/UsersPage.js';
71
+ export { UserDetailPage } from './pages/admin/UserDetailPage.js';
72
+ export { WorkspacesPage } from './pages/admin/WorkspacesPage.js';
73
+ export { WorkspaceDetailPage } from './pages/admin/WorkspaceDetailPage.js';
74
+ export { OrdersPage } from './pages/admin/OrdersPage.js';
75
+ export { WebhookDeliveriesPage } from './pages/admin/WebhookDeliveriesPage.js';
76
+ export { AuditPage } from './pages/admin/AuditPage.js';
77
+ export { SSOPage } from './pages/admin/SSOPage.js';
78
+ export { AdminSettingsPage } from './pages/admin/AdminSettingsPage.js';
@@ -2,10 +2,10 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
2
2
  import { useLocation, useNavigate } from 'react-router';
3
3
  import { useEffect } from 'react';
4
4
  import { FolderKanban } from 'lucide-react';
5
- import { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupContent, SidebarHeader, SidebarInset, SidebarMenu, SidebarMenuButton, SidebarMenuItem, SidebarProvider, SidebarTrigger, } from '../components/ui/sidebar';
6
- import { Breadcrumb, BreadcrumbList, BreadcrumbItem, BreadcrumbPage, BreadcrumbSeparator, } from '../components/ui/breadcrumb';
7
- import { UserMenu } from '../components/UserMenu';
8
- import { ImpersonationBanner } from '../components/ImpersonationBanner';
5
+ import { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupContent, SidebarHeader, SidebarInset, SidebarMenu, SidebarMenuButton, SidebarMenuItem, SidebarProvider, SidebarTrigger, } from '../components/ui/sidebar.js';
6
+ import { Breadcrumb, BreadcrumbList, BreadcrumbItem, BreadcrumbPage, BreadcrumbSeparator, } from '../components/ui/breadcrumb.js';
7
+ import { UserMenu } from '../components/UserMenu.js';
8
+ import { ImpersonationBanner } from '../components/ImpersonationBanner.js';
9
9
  // stock SidebarProvider 只写不读 sidebar_state cookie(写入供 SSR 框架回传 defaultOpen)。
10
10
  // CSR 产品在组合层回读,保持跨会话折叠状态(P2-17,自 stock 镜像化后上提至此)。
11
11
  function readSidebarCookieOpen() {
@@ -1,11 +1,11 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Link, useLocation, useNavigate } from 'react-router';
3
- import { cn } from '../lib/utils';
3
+ import { cn } from '../lib/utils.js';
4
4
  import { roleSatisfies } from '@ploykit/hooks';
5
5
  import { useWorkspace } from '@ploykit/hooks';
6
- import { buttonVariants } from '../components/ui/button';
7
- import { Separator } from '../components/ui/separator';
8
- import { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectTrigger, SelectValue, } from '../components/ui/select';
6
+ import { buttonVariants } from '../components/ui/button.js';
7
+ import { Separator } from '../components/ui/separator.js';
8
+ import { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectTrigger, SelectValue, } from '../components/ui/select.js';
9
9
  export function SettingsShell({ nav, children, title = '设置', description }) {
10
10
  const location = useLocation();
11
11
  const navigate = useNavigate();
@@ -4,11 +4,11 @@ import { useLocation } from 'react-router';
4
4
  import { useLogin } from '@ploykit/hooks';
5
5
  import { useApi } from '@ploykit/hooks';
6
6
  import { useAuth } from '@ploykit/hooks';
7
- import { Tabs, TabsList, TabsTrigger, TabsContent } from '../components/ui/tabs';
8
- import { Button } from '../components/ui/button';
9
- import { Input } from '../components/ui/input';
10
- import { FormField } from '../components/FormField';
11
- import { apiErrorMessage } from '../lib/api-error';
7
+ import { Tabs, TabsList, TabsTrigger, TabsContent } from '../components/ui/tabs.js';
8
+ import { Button } from '../components/ui/button.js';
9
+ import { Input } from '../components/ui/input.js';
10
+ import { FormField } from '../components/FormField.js';
11
+ import { apiErrorMessage } from '../lib/api-error.js';
12
12
  const SEND_COOLDOWN_S = 60;
13
13
  export function loginRedirectTarget(from, fallback = '/app') {
14
14
  if (typeof from !== 'string')
@@ -1,8 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useId } from 'react';
3
- import { PageHeader, PageLoading, PageError, PageEmpty } from '../../components/Page';
4
- import { Switch } from '../../components/ui/switch';
5
- import { toast } from '../../components/toast';
3
+ import { PageHeader, PageLoading, PageError, PageEmpty } from '../../components/Page.js';
4
+ import { Switch } from '../../components/ui/switch.js';
5
+ import { toast } from '../../components/toast.js';
6
6
  import { useSEO } from '@ploykit/hooks';
7
7
  import { useNotificationPrefs, useSetNotificationPref, } from '@ploykit/hooks';
8
8
  export function NotificationPreferencesPage({ types, title = '通知偏好', description = '选择每种通知的接收渠道;未显示的类型默认全部开启', siteName, emailChannelNote, }) {
@@ -1,15 +1,15 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { useState } from 'react';
3
3
  import { z } from 'zod';
4
- import { PageHeader, PageLoading, PageError } from '../../components/Page';
5
- import { SettingsCard } from '../../components/SettingsCard';
6
- import { FormField } from '../../components/FormField';
7
- import { Button } from '../../components/ui/button';
8
- import { Input } from '../../components/ui/input';
9
- import { Badge } from '../../components/ui/badge';
10
- import { ImpactConfirmation } from '../../components/SecretModal';
11
- import { toast } from '../../components/toast';
12
- import { apiErrorMessage } from '../../lib/api-error';
4
+ import { PageHeader, PageLoading, PageError } from '../../components/Page.js';
5
+ import { SettingsCard } from '../../components/SettingsCard.js';
6
+ import { FormField } from '../../components/FormField.js';
7
+ import { Button } from '../../components/ui/button.js';
8
+ import { Input } from '../../components/ui/input.js';
9
+ import { Badge } from '../../components/ui/badge.js';
10
+ import { ImpactConfirmation } from '../../components/SecretModal.js';
11
+ import { toast } from '../../components/toast.js';
12
+ import { apiErrorMessage } from '../../lib/api-error.js';
13
13
  import { useApi } from '@ploykit/hooks';
14
14
  import { useAuth } from '@ploykit/hooks';
15
15
  import { useZodForm } from '@ploykit/hooks';
@@ -1,23 +1,23 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useState } from 'react';
3
3
  import { z } from 'zod';
4
- import { PageHeader, PageError } from '../../components/Page';
5
- import { SettingsCard } from '../../components/SettingsCard';
6
- import { FormField } from '../../components/FormField';
7
- import { Button } from '../../components/ui/button';
8
- import { Input } from '../../components/ui/input';
9
- import { Badge } from '../../components/ui/badge';
10
- import { DataTable } from '../../components/DataTable';
11
- import { ImpactConfirmation } from '../../components/SecretModal';
12
- import { useConfirm } from '../../components/ConfirmDialog';
13
- import { toast } from '../../components/toast';
4
+ import { PageHeader, PageError } from '../../components/Page.js';
5
+ import { SettingsCard } from '../../components/SettingsCard.js';
6
+ import { FormField } from '../../components/FormField.js';
7
+ import { Button } from '../../components/ui/button.js';
8
+ import { Input } from '../../components/ui/input.js';
9
+ import { Badge } from '../../components/ui/badge.js';
10
+ import { DataTable } from '../../components/DataTable.js';
11
+ import { ImpactConfirmation } from '../../components/SecretModal.js';
12
+ import { useConfirm } from '../../components/ConfirmDialog.js';
13
+ import { toast } from '../../components/toast.js';
14
14
  import { useApi } from '@ploykit/hooks';
15
15
  import { useAuth } from '@ploykit/hooks';
16
16
  import { useZodForm } from '@ploykit/hooks';
17
17
  import { useSessions, useRevokeSession, useRevokeAllSessions } from '@ploykit/hooks';
18
- import { passwordSchema } from '../auth/RegisterPage';
19
- import { apiErrorMessage } from '../../lib/api-error';
20
- import { formatDateTime, shortID } from '../../lib/utils';
18
+ import { passwordSchema } from '../auth/RegisterPage.js';
19
+ import { apiErrorMessage } from '../../lib/api-error.js';
20
+ import { formatDateTime, shortID } from '../../lib/utils.js';
21
21
  const changePwSchema = z
22
22
  .object({
23
23
  old_password: z.string().min(1, '请输入当前密码'),
@@ -1,18 +1,18 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useState } from 'react';
3
- import { PageHeader, PageEmpty } from '../../components/Page';
4
- import { FormField } from '../../components/FormField';
5
- import { Button } from '../../components/ui/button';
6
- import { Input } from '../../components/ui/input';
7
- import { Badge } from '../../components/ui/badge';
8
- import { DataTable } from '../../components/DataTable';
9
- import { SecretModal } from '../../components/SecretModal';
10
- import { useConfirm } from '../../components/ConfirmDialog';
11
- import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter, } from '../../components/ui/dialog';
12
- import { toast } from '../../components/toast';
3
+ import { PageHeader, PageEmpty } from '../../components/Page.js';
4
+ import { FormField } from '../../components/FormField.js';
5
+ import { Button } from '../../components/ui/button.js';
6
+ import { Input } from '../../components/ui/input.js';
7
+ import { Badge } from '../../components/ui/badge.js';
8
+ import { DataTable } from '../../components/DataTable.js';
9
+ import { SecretModal } from '../../components/SecretModal.js';
10
+ import { useConfirm } from '../../components/ConfirmDialog.js';
11
+ import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter, } from '../../components/ui/dialog.js';
12
+ import { toast } from '../../components/toast.js';
13
13
  import { useTokens, useCreateToken, useRevokeToken } from '@ploykit/hooks';
14
- import { apiErrorMessage } from '../../lib/api-error';
15
- import { formatDateTime } from '../../lib/utils';
14
+ import { apiErrorMessage } from '../../lib/api-error.js';
15
+ import { formatDateTime } from '../../lib/utils.js';
16
16
  const NAME_MAX_BYTES = 64;
17
17
  const utf8Bytes = (s) => new TextEncoder().encode(s).length;
18
18
  export function TokensPage() {
@@ -1,19 +1,19 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useEffect, useState } from 'react';
3
3
  import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
4
- import { FormField } from '../../components/FormField';
5
- import { PageError, PageHeader } from '../../components/Page';
6
- import { toast } from '../../components/toast';
7
- import { Badge } from '../../components/ui/badge';
8
- import { Button } from '../../components/ui/button';
9
- import { Card, CardAction, CardContent, CardDescription, CardHeader, CardTitle, } from '../../components/ui/card';
10
- import { Input } from '../../components/ui/input';
11
- import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '../../components/ui/select';
12
- import { Switch } from '../../components/ui/switch';
4
+ import { FormField } from '../../components/FormField.js';
5
+ import { PageError, PageHeader } from '../../components/Page.js';
6
+ import { toast } from '../../components/toast.js';
7
+ import { Badge } from '../../components/ui/badge.js';
8
+ import { Button } from '../../components/ui/button.js';
9
+ import { Card, CardAction, CardContent, CardDescription, CardHeader, CardTitle, } from '../../components/ui/card.js';
10
+ import { Input } from '../../components/ui/input.js';
11
+ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '../../components/ui/select.js';
12
+ import { Switch } from '../../components/ui/switch.js';
13
13
  import { useApi } from '@ploykit/hooks';
14
- import { SiteBanner } from '../../components/SiteBanner';
14
+ import { SiteBanner } from '../../components/SiteBanner.js';
15
15
  import { SITE_CONFIG_QUERY_KEY } from '@ploykit/hooks';
16
- import { adminError } from './shared';
16
+ import { adminError } from './shared.js';
17
17
  const ERROR_TOAST_MS = 8_000;
18
18
  function parseRateLimit(raw) {
19
19
  const s = raw.trim();
@@ -1,10 +1,10 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Link, Navigate, useLocation } from 'react-router';
3
3
  import { Activity, ArrowLeft, Building2, KeyRound, LayoutDashboard, Receipt, ScrollText, Settings, ShieldCheck, Users, Webhook, } from 'lucide-react';
4
- import { buttonVariants } from '../../components/ui/button';
5
- import { UserMenu } from '../../components/UserMenu';
4
+ import { buttonVariants } from '../../components/ui/button.js';
5
+ import { UserMenu } from '../../components/UserMenu.js';
6
6
  import { useAuth } from '@ploykit/hooks';
7
- import { cn } from '../../lib/utils';
7
+ import { cn } from '../../lib/utils.js';
8
8
  const NAV = [
9
9
  {
10
10
  to: '/admin/overview',
@@ -4,15 +4,15 @@ import { useSearchParams } from 'react-router';
4
4
  import { Download, Search } from 'lucide-react';
5
5
  import { useQuery } from '@tanstack/react-query';
6
6
  import { apiFetch } from '@ploykit/client';
7
- import { DataTable } from '../../components/DataTable';
8
- import { PageEmpty, PageError, PageHeader } from '../../components/Page';
9
- import { toast } from '../../components/toast';
10
- import { Button } from '../../components/ui/button';
11
- import { Input } from '../../components/ui/input';
7
+ import { DataTable } from '../../components/DataTable.js';
8
+ import { PageEmpty, PageError, PageHeader } from '../../components/Page.js';
9
+ import { toast } from '../../components/toast.js';
10
+ import { Button } from '../../components/ui/button.js';
11
+ import { Input } from '../../components/ui/input.js';
12
12
  import { useApi } from '@ploykit/hooks';
13
- import { apiErrorMessage } from '../../lib/api-error';
14
- import { shortID, formatDateTime } from '../../lib/utils';
15
- import { ADMIN_PAGE_SIZE, adminError } from './shared';
13
+ import { apiErrorMessage } from '../../lib/api-error.js';
14
+ import { shortID, formatDateTime } from '../../lib/utils.js';
15
+ import { ADMIN_PAGE_SIZE, adminError } from './shared.js';
16
16
  const emptyDraft = {
17
17
  workspace: '',
18
18
  action: '',
@@ -2,19 +2,19 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useState } from 'react';
3
3
  import { useSearchParams } from 'react-router';
4
4
  import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
5
- import { useConfirm } from '../../components/ConfirmDialog';
6
- import { DataTable } from '../../components/DataTable';
7
- import { PageEmpty, PageError, PageHeader } from '../../components/Page';
8
- import { SettingsCard } from '../../components/SettingsCard';
9
- import { toast } from '../../components/toast';
10
- import { Badge } from '../../components/ui/badge';
11
- import { StatusBadge } from '../../components/StatusBadge';
12
- import { Button } from '../../components/ui/button';
13
- import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '../../components/ui/select';
14
- import { Tabs, TabsContent, TabsList, TabsTrigger, } from '../../components/ui/tabs';
5
+ import { useConfirm } from '../../components/ConfirmDialog.js';
6
+ import { DataTable } from '../../components/DataTable.js';
7
+ import { PageEmpty, PageError, PageHeader } from '../../components/Page.js';
8
+ import { SettingsCard } from '../../components/SettingsCard.js';
9
+ import { toast } from '../../components/toast.js';
10
+ import { Badge } from '../../components/ui/badge.js';
11
+ import { StatusBadge } from '../../components/StatusBadge.js';
12
+ import { Button } from '../../components/ui/button.js';
13
+ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '../../components/ui/select.js';
14
+ import { Tabs, TabsContent, TabsList, TabsTrigger, } from '../../components/ui/tabs.js';
15
15
  import { useApi } from '@ploykit/hooks';
16
- import { formatDateTime, shortID, statusLabel } from '../../lib/utils';
17
- import { ADMIN_PAGE_SIZE, adminError, adminListQuery, formatCents, } from './shared';
16
+ import { formatDateTime, shortID, statusLabel } from '../../lib/utils.js';
17
+ import { ADMIN_PAGE_SIZE, adminError, adminListQuery, formatCents, } from './shared.js';
18
18
  const ORDER_STATUSES = ['pending', 'paid', 'failed', 'canceled', 'refunded'];
19
19
  function orderStatusLabel(s) {
20
20
  if (s === 'refunded')
@@ -3,20 +3,20 @@ import { useEffect, useState } from 'react';
3
3
  import { useLocation, useSearchParams } from 'react-router';
4
4
  import { Copy, Megaphone } from 'lucide-react';
5
5
  import { useMutation, useQuery } from '@tanstack/react-query';
6
- import { DataTable } from '../../components/DataTable';
7
- import { FormField } from '../../components/FormField';
8
- import { PageEmpty, PageError, PageHeader } from '../../components/Page';
9
- import { toast } from '../../components/toast';
10
- import { Badge } from '../../components/ui/badge';
11
- import { Button } from '../../components/ui/button';
12
- import { Card, CardAction, CardDescription, CardHeader, CardTitle, } from '../../components/ui/card';
13
- import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from '../../components/ui/dialog';
14
- import { Input } from '../../components/ui/input';
15
- import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '../../components/ui/select';
6
+ import { DataTable } from '../../components/DataTable.js';
7
+ import { FormField } from '../../components/FormField.js';
8
+ import { PageEmpty, PageError, PageHeader } from '../../components/Page.js';
9
+ import { toast } from '../../components/toast.js';
10
+ import { Badge } from '../../components/ui/badge.js';
11
+ import { Button } from '../../components/ui/button.js';
12
+ import { Card, CardAction, CardDescription, CardHeader, CardTitle, } from '../../components/ui/card.js';
13
+ import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from '../../components/ui/dialog.js';
14
+ import { Input } from '../../components/ui/input.js';
15
+ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '../../components/ui/select.js';
16
16
  import { useApi } from '@ploykit/hooks';
17
- import { apiErrorMessage } from '../../lib/api-error';
18
- import { formatDateTime } from '../../lib/utils';
19
- import { adminError } from './shared';
17
+ import { apiErrorMessage } from '../../lib/api-error.js';
18
+ import { formatDateTime } from '../../lib/utils.js';
19
+ import { adminError } from './shared.js';
20
20
  const DAY_OPTIONS = [7, 14, 30, 90];
21
21
  const RECENT_LIMIT = 20;
22
22
  const STATS_CALIBER = {
@@ -2,13 +2,13 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useState } from 'react';
3
3
  import { Link } from 'react-router';
4
4
  import { useQuery } from '@tanstack/react-query';
5
- import { DataTable } from '../../components/DataTable';
6
- import { PageEmpty, PageError, PageHeader } from '../../components/Page';
7
- import { Badge } from '../../components/ui/badge';
8
- import { Button } from '../../components/ui/button';
5
+ import { DataTable } from '../../components/DataTable.js';
6
+ import { PageEmpty, PageError, PageHeader } from '../../components/Page.js';
7
+ import { Badge } from '../../components/ui/badge.js';
8
+ import { Button } from '../../components/ui/button.js';
9
9
  import { useApi } from '@ploykit/hooks';
10
- import { formatDateTime } from '../../lib/utils';
11
- import { ADMIN_PAGE_SIZE, adminError } from './shared';
10
+ import { formatDateTime } from '../../lib/utils.js';
11
+ import { ADMIN_PAGE_SIZE, adminError } from './shared.js';
12
12
  export function SSOPage() {
13
13
  const api = useApi();
14
14
  const listQ = useQuery({
@@ -4,21 +4,21 @@ import { Link, useNavigate, useParams } from 'react-router';
4
4
  import { ArrowLeft, Download } from 'lucide-react';
5
5
  import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
6
6
  import { apiFetch } from '@ploykit/client';
7
- import { useConfirm } from '../../components/ConfirmDialog';
8
- import { DataTable } from '../../components/DataTable';
9
- import { PageEmpty, PageError, PageHeader } from '../../components/Page';
10
- import { ImpactConfirmation } from '../../components/SecretModal';
11
- import { SettingsCard } from '../../components/SettingsCard';
12
- import { toast } from '../../components/toast';
13
- import { Badge } from '../../components/ui/badge';
14
- import { StatusBadge } from '../../components/StatusBadge';
15
- import { Button } from '../../components/ui/button';
16
- import { Input } from '../../components/ui/input';
7
+ import { useConfirm } from '../../components/ConfirmDialog.js';
8
+ import { DataTable } from '../../components/DataTable.js';
9
+ import { PageEmpty, PageError, PageHeader } from '../../components/Page.js';
10
+ import { ImpactConfirmation } from '../../components/SecretModal.js';
11
+ import { SettingsCard } from '../../components/SettingsCard.js';
12
+ import { toast } from '../../components/toast.js';
13
+ import { Badge } from '../../components/ui/badge.js';
14
+ import { StatusBadge } from '../../components/StatusBadge.js';
15
+ import { Button } from '../../components/ui/button.js';
16
+ import { Input } from '../../components/ui/input.js';
17
17
  import { useApi, ApiError } from '@ploykit/hooks';
18
18
  import { useAuth } from '@ploykit/hooks';
19
- import { apiErrorMessage } from '../../lib/api-error';
20
- import { formatDate, formatDateTime, shortID } from '../../lib/utils';
21
- import { adminError } from './shared';
19
+ import { apiErrorMessage } from '../../lib/api-error.js';
20
+ import { formatDate, formatDateTime, shortID } from '../../lib/utils.js';
21
+ import { adminError } from './shared.js';
22
22
  function resendErrorMessage(err) {
23
23
  if (err instanceof ApiError) {
24
24
  if (err.status === 409)
@@ -3,21 +3,21 @@ import { useEffect, useState } from 'react';
3
3
  import { useNavigate, useSearchParams } from 'react-router';
4
4
  import { MoreHorizontal, LogIn, ShieldCheck, ShieldOff, UserCog, UserRoundSearch, } from 'lucide-react';
5
5
  import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
6
- import { useConfirm } from '../../components/ConfirmDialog';
7
- import { DataTable } from '../../components/DataTable';
8
- import { PageEmpty, PageError, PageHeader } from '../../components/Page';
9
- import { ImpactConfirmation } from '../../components/SecretModal';
10
- import { toast } from '../../components/toast';
11
- import { Badge } from '../../components/ui/badge';
12
- import { StatusBadge } from '../../components/StatusBadge';
13
- import { Button } from '../../components/ui/button';
14
- import { Input } from '../../components/ui/input';
15
- import { DropdownMenu, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from '../../components/ui/dropdown-menu';
16
- import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '../../components/ui/select';
6
+ import { useConfirm } from '../../components/ConfirmDialog.js';
7
+ import { DataTable } from '../../components/DataTable.js';
8
+ import { PageEmpty, PageError, PageHeader } from '../../components/Page.js';
9
+ import { ImpactConfirmation } from '../../components/SecretModal.js';
10
+ import { toast } from '../../components/toast.js';
11
+ import { Badge } from '../../components/ui/badge.js';
12
+ import { StatusBadge } from '../../components/StatusBadge.js';
13
+ import { Button } from '../../components/ui/button.js';
14
+ import { Input } from '../../components/ui/input.js';
15
+ import { DropdownMenu, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from '../../components/ui/dropdown-menu.js';
16
+ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '../../components/ui/select.js';
17
17
  import { useApi } from '@ploykit/hooks';
18
18
  import { useAuth } from '@ploykit/hooks';
19
- import { formatDate, formatDateTime } from '../../lib/utils';
20
- import { ADMIN_PAGE_SIZE, adminError, adminListQuery, } from './shared';
19
+ import { formatDate, formatDateTime } from '../../lib/utils.js';
20
+ import { ADMIN_PAGE_SIZE, adminError, adminListQuery, } from './shared.js';
21
21
  const STATUS_OPTIONS = [
22
22
  { value: 'active', label: '生效中' },
23
23
  { value: 'disabled', label: '已封禁' },
@@ -2,16 +2,16 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useSearchParams } from 'react-router';
3
3
  import { RefreshCw } from 'lucide-react';
4
4
  import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
5
- import { DataTable } from '../../components/DataTable';
6
- import { PageEmpty, PageError, PageHeader } from '../../components/Page';
7
- import { toast } from '../../components/toast';
8
- import { Badge } from '../../components/ui/badge';
9
- import { StatusBadge } from '../../components/StatusBadge';
10
- import { Button } from '../../components/ui/button';
11
- import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '../../components/ui/select';
5
+ import { DataTable } from '../../components/DataTable.js';
6
+ import { PageEmpty, PageError, PageHeader } from '../../components/Page.js';
7
+ import { toast } from '../../components/toast.js';
8
+ import { Badge } from '../../components/ui/badge.js';
9
+ import { StatusBadge } from '../../components/StatusBadge.js';
10
+ import { Button } from '../../components/ui/button.js';
11
+ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '../../components/ui/select.js';
12
12
  import { useApi } from '@ploykit/hooks';
13
- import { formatDateTime, shortID, statusLabel } from '../../lib/utils';
14
- import { ADMIN_PAGE_SIZE, adminError, adminListQuery, } from './shared';
13
+ import { formatDateTime, shortID, statusLabel } from '../../lib/utils.js';
14
+ import { ADMIN_PAGE_SIZE, adminError, adminListQuery, } from './shared.js';
15
15
  const DELIVERY_STATUSES = ['pending', 'delivered', 'dead'];
16
16
  const LIST_REFETCH_MS = 30_000;
17
17
  const COUNT_STALE_MS = 60_000;