@svadmin/ui 0.34.9 → 0.35.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app.css +372 -0
- package/dist/component-registry.svelte.d.ts +1 -0
- package/dist/component-registry.svelte.js +1 -0
- package/dist/components/AICommandBar.svelte +3 -3
- package/dist/components/AboutSettings.svelte +2 -2
- package/dist/components/AdminApp.svelte +96 -18
- package/dist/components/AdminApp.svelte.d.ts +32 -2
- package/dist/components/AnomalyBadge.svelte +1 -1
- package/dist/components/ApiSettings.svelte +191 -0
- package/dist/components/ApiSettings.svelte.d.ts +3 -0
- package/dist/components/AppearanceSettings.svelte +5 -6
- package/dist/components/AuditLogDrawer.svelte +1 -1
- package/dist/components/AuditLogViewer.svelte +1 -1
- package/dist/components/AutoForm.svelte +50 -44
- package/dist/components/AutoTable.svelte +44 -39
- package/dist/components/Breadcrumbs.svelte +1 -0
- package/dist/components/ChatDialog.svelte +5 -4
- package/dist/components/ComboboxField.svelte +3 -3
- package/dist/components/CommandPalette.svelte +3 -3
- package/dist/components/CopilotPanel.svelte +2 -2
- package/dist/components/CreatePage.svelte +0 -1
- package/dist/components/DevTools.svelte +4 -3
- package/dist/components/DraggableHeader.svelte +2 -1
- package/dist/components/EditPage.svelte +1 -1
- package/dist/components/EmptyState.svelte +1 -1
- package/dist/components/ErrorPage.svelte +58 -0
- package/dist/components/ErrorPage.svelte.d.ts +8 -0
- package/dist/components/FieldRenderer.svelte +9 -8
- package/dist/components/ForgotPasswordPage.svelte +111 -68
- package/dist/components/Header.svelte +7 -7
- package/dist/components/InferencerPanel.svelte +4 -3
- package/dist/components/InfiniteList.svelte +3 -4
- package/dist/components/IntegrationsSettings.svelte +70 -0
- package/dist/components/IntegrationsSettings.svelte.d.ts +4 -0
- package/dist/components/KeyboardShortcuts.svelte +3 -3
- package/dist/components/Layout.svelte +13 -13
- package/dist/components/LoginPage.svelte +207 -105
- package/dist/components/LoginPage.svelte.d.ts +3 -15
- package/dist/components/MarkdownRenderer.svelte +3 -5
- package/dist/components/ModalForm.svelte +1 -3
- package/dist/components/NotificationsSettings.svelte +115 -0
- package/dist/components/NotificationsSettings.svelte.d.ts +3 -0
- package/dist/components/PageHeader.svelte +9 -7
- package/dist/components/PageSkeleton.svelte +4 -4
- package/dist/components/PasswordInput.svelte +1 -2
- package/dist/components/PermissionMatrix.svelte +5 -5
- package/dist/components/ProfilePage.svelte +1 -1
- package/dist/components/RegisterPage.svelte +103 -65
- package/dist/components/ResourceOperationsPage.svelte +153 -0
- package/dist/components/ResourceOperationsPage.svelte.d.ts +37 -0
- package/dist/components/RolesSettings.svelte +1 -2
- package/dist/components/SecuritySettings.svelte +179 -0
- package/dist/components/SecuritySettings.svelte.d.ts +4 -0
- package/dist/components/SettingsPage.svelte +121 -55
- package/dist/components/SettingsPage.svelte.d.ts +25 -1
- package/dist/components/ShowPage.svelte +13 -15
- package/dist/components/Sidebar.svelte +107 -58
- package/dist/components/SidebarItem.svelte +38 -14
- package/dist/components/StepsForm.svelte +1 -1
- package/dist/components/TaskList.svelte +1 -1
- package/dist/components/TaskQueueDrawer.svelte +2 -1
- package/dist/components/TenantSwitcher.svelte +1 -2
- package/dist/components/Toast.svelte +1 -0
- package/dist/components/TooltipButton.svelte +1 -0
- package/dist/components/TwoFactorAuthPage.svelte +247 -0
- package/dist/components/TwoFactorAuthPage.svelte.d.ts +3 -0
- package/dist/components/UpdatePasswordPage.svelte +86 -48
- package/dist/components/VirtualTable.svelte +1 -1
- package/dist/components/VoiceInput.svelte +1 -0
- package/dist/components/account/CompanyProfilePage.svelte +99 -0
- package/dist/components/account/CompanyProfilePage.svelte.d.ts +3 -0
- package/dist/components/account/GetStartedPage.svelte +123 -0
- package/dist/components/account/GetStartedPage.svelte.d.ts +4 -0
- package/dist/components/account/ImportMembersPage.svelte +143 -0
- package/dist/components/account/ImportMembersPage.svelte.d.ts +3 -0
- package/dist/components/account/MembersStarterPage.svelte +104 -0
- package/dist/components/account/MembersStarterPage.svelte.d.ts +3 -0
- package/dist/components/account/SecurityLogPage.svelte +108 -0
- package/dist/components/account/SecurityLogPage.svelte.d.ts +3 -0
- package/dist/components/account/SettingsEnterprisePage.svelte +131 -0
- package/dist/components/account/SettingsEnterprisePage.svelte.d.ts +3 -0
- package/dist/components/account/SettingsPlainPage.svelte +81 -0
- package/dist/components/account/SettingsPlainPage.svelte.d.ts +3 -0
- package/dist/components/account/SettingsSidebarPage.svelte +98 -0
- package/dist/components/account/SettingsSidebarPage.svelte.d.ts +3 -0
- package/dist/components/account/TeamMembersPage.svelte +98 -0
- package/dist/components/account/TeamMembersPage.svelte.d.ts +3 -0
- package/dist/components/buttons/ImportButton.svelte +1 -1
- package/dist/components/buttons/ListButton.svelte +1 -1
- package/dist/components/charts/BarChart.svelte +1 -1
- package/dist/components/charts/LineChart.svelte +3 -3
- package/dist/components/charts/PieChart.svelte +2 -2
- package/dist/components/fieldComponentMap.js +2 -1
- package/dist/components/fields/ArrayField.svelte +1 -1
- package/dist/components/fields/MarkdownField.svelte +1 -0
- package/dist/components/fields/MultiSelectField.svelte +1 -1
- package/dist/components/fields/TagField.svelte +1 -1
- package/dist/components/network/TeamCrewTablePage.svelte +122 -0
- package/dist/components/network/TeamCrewTablePage.svelte.d.ts +3 -0
- package/dist/components/network/UserCardsNFTPage.svelte +134 -0
- package/dist/components/network/UserCardsNFTPage.svelte.d.ts +3 -0
- package/dist/components/profile/ActivityTimeline.svelte +77 -0
- package/dist/components/profile/ActivityTimeline.svelte.d.ts +16 -0
- package/dist/components/profile/ProfileCard.svelte +216 -0
- package/dist/components/profile/ProfileCard.svelte.d.ts +27 -0
- package/dist/components/profile/ProjectsGrid.svelte +91 -0
- package/dist/components/profile/ProjectsGrid.svelte.d.ts +17 -0
- package/dist/components/profile/PublicProfilePage.svelte +179 -0
- package/dist/components/profile/PublicProfilePage.svelte.d.ts +10 -0
- package/dist/components/profile/TeamsShowcase.svelte +98 -0
- package/dist/components/profile/TeamsShowcase.svelte.d.ts +19 -0
- package/dist/components/ui/alert/index.js +1 -0
- package/dist/components/ui/badge/index.js +1 -0
- package/dist/components/ui/button/button.svelte +1 -0
- package/dist/components/ui/button/index.js +1 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-trigger.svelte +1 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu.svelte +1 -1
- package/dist/components/ui/sheet/sheet.svelte +1 -0
- package/dist/components/ui/tabs/tabs.svelte +1 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.js +27 -0
- package/dist/router-state.svelte.js +17 -0
- package/package.json +13 -13
package/dist/app.css
CHANGED
|
@@ -672,3 +672,375 @@ main {
|
|
|
672
672
|
.chat-markdown strong {
|
|
673
673
|
font-weight: 600;
|
|
674
674
|
}
|
|
675
|
+
|
|
676
|
+
/* ─── High-Contrast Flat Layout Preset (clean-flat) ─── */
|
|
677
|
+
.layout-clean-flat {
|
|
678
|
+
--radius: 0.75rem;
|
|
679
|
+
}
|
|
680
|
+
|
|
681
|
+
/* Base card flat background overrides */
|
|
682
|
+
.layout-clean-flat .bg-card,
|
|
683
|
+
.layout-clean-flat [data-slot="card"] {
|
|
684
|
+
background: #ffffff !important;
|
|
685
|
+
border: 1px solid #f1f3f7 !important;
|
|
686
|
+
box-shadow: 0px 0px 20px 0px rgba(76, 87, 125, 0.02) !important;
|
|
687
|
+
border-radius: 12px !important;
|
|
688
|
+
}
|
|
689
|
+
.dark.layout-clean-flat .bg-card,
|
|
690
|
+
.dark .layout-clean-flat .bg-card,
|
|
691
|
+
.dark.layout-clean-flat [data-slot="card"],
|
|
692
|
+
.dark .layout-clean-flat [data-slot="card"] {
|
|
693
|
+
background: #1e1e2d !important;
|
|
694
|
+
border: 1px solid #2b2b40 !important;
|
|
695
|
+
box-shadow: none !important;
|
|
696
|
+
}
|
|
697
|
+
|
|
698
|
+
/* Crisp table header styles */
|
|
699
|
+
.layout-clean-flat th {
|
|
700
|
+
background-color: #f9f9f9 !important;
|
|
701
|
+
border-bottom: 1px solid #f1f3f7 !important;
|
|
702
|
+
color: #181c32 !important;
|
|
703
|
+
font-weight: 600 !important;
|
|
704
|
+
font-size: 0.75rem !important;
|
|
705
|
+
text-transform: uppercase !important;
|
|
706
|
+
letter-spacing: 0.05em !important;
|
|
707
|
+
}
|
|
708
|
+
.dark.layout-clean-flat th,
|
|
709
|
+
.dark .layout-clean-flat th {
|
|
710
|
+
background-color: #1a1a27 !important;
|
|
711
|
+
border-bottom: 1px solid #2b2b40 !important;
|
|
712
|
+
color: #a1a5b7 !important;
|
|
713
|
+
}
|
|
714
|
+
|
|
715
|
+
/* Crisp table cell styles */
|
|
716
|
+
.layout-clean-flat td {
|
|
717
|
+
border-bottom: 1px solid #f1f3f7 !important;
|
|
718
|
+
color: #5e6278 !important;
|
|
719
|
+
font-size: 0.8125rem !important;
|
|
720
|
+
}
|
|
721
|
+
.dark.layout-clean-flat td,
|
|
722
|
+
.dark .layout-clean-flat td {
|
|
723
|
+
border-bottom: 1px solid rgba(43, 43, 64, 0.6) !important;
|
|
724
|
+
color: #a1a5b7 !important;
|
|
725
|
+
}
|
|
726
|
+
|
|
727
|
+
/* Table row hover state */
|
|
728
|
+
.layout-clean-flat tr:hover td {
|
|
729
|
+
background-color: #f9f9f9 !important;
|
|
730
|
+
}
|
|
731
|
+
.dark.layout-clean-flat tr:hover td,
|
|
732
|
+
.dark .layout-clean-flat tr:hover td {
|
|
733
|
+
background-color: rgba(43, 43, 64, 0.3) !important;
|
|
734
|
+
}
|
|
735
|
+
|
|
736
|
+
/* Sidebar layout adjustments */
|
|
737
|
+
.layout-clean-flat [data-sidebar="sidebar"] {
|
|
738
|
+
background: #ffffff !important;
|
|
739
|
+
color: #181c32 !important;
|
|
740
|
+
border-right: 1px solid #f1f3f7 !important;
|
|
741
|
+
box-shadow: 0 0 40px rgba(76, 87, 125, 0.04) !important;
|
|
742
|
+
}
|
|
743
|
+
.dark.layout-clean-flat [data-sidebar="sidebar"],
|
|
744
|
+
.dark .layout-clean-flat [data-sidebar="sidebar"] {
|
|
745
|
+
background: #1e1e2d !important;
|
|
746
|
+
color: #a1a5b7 !important;
|
|
747
|
+
border-right: 1px solid #2b2b40 !important;
|
|
748
|
+
}
|
|
749
|
+
|
|
750
|
+
.layout-clean-flat [data-sidebar="group-label"] {
|
|
751
|
+
font-size: 0.6875rem !important;
|
|
752
|
+
font-weight: 600 !important;
|
|
753
|
+
text-transform: uppercase;
|
|
754
|
+
letter-spacing: 0.06em;
|
|
755
|
+
color: #a1a5b7 !important;
|
|
756
|
+
padding: 0.5rem 0.5rem 0.375rem !important;
|
|
757
|
+
}
|
|
758
|
+
|
|
759
|
+
.layout-clean-flat [data-sidebar="menu-button"] {
|
|
760
|
+
color: #5e6278 !important;
|
|
761
|
+
border-radius: 0.675rem !important;
|
|
762
|
+
transition: all 0.15s ease !important;
|
|
763
|
+
font-weight: 500 !important;
|
|
764
|
+
}
|
|
765
|
+
|
|
766
|
+
.layout-clean-flat [data-sidebar="menu-button"]:hover {
|
|
767
|
+
background: #f5f8fa !important;
|
|
768
|
+
color: #181c32 !important;
|
|
769
|
+
}
|
|
770
|
+
.dark.layout-clean-flat [data-sidebar="menu-button"]:hover,
|
|
771
|
+
.dark .layout-clean-flat [data-sidebar="menu-button"]:hover {
|
|
772
|
+
background: #2b2b40 !important;
|
|
773
|
+
color: #f1f6ff !important;
|
|
774
|
+
}
|
|
775
|
+
|
|
776
|
+
.layout-clean-flat [data-sidebar="menu-button"]:hover > svg {
|
|
777
|
+
opacity: 0.85 !important;
|
|
778
|
+
}
|
|
779
|
+
|
|
780
|
+
.layout-clean-flat [data-sidebar="menu-button"][data-active="true"] {
|
|
781
|
+
background: #eef6ff !important;
|
|
782
|
+
color: #3e97ff !important;
|
|
783
|
+
font-weight: 600 !important;
|
|
784
|
+
box-shadow: none !important;
|
|
785
|
+
}
|
|
786
|
+
.dark.layout-clean-flat [data-sidebar="menu-button"][data-active="true"],
|
|
787
|
+
.dark .layout-clean-flat [data-sidebar="menu-button"][data-active="true"] {
|
|
788
|
+
background: rgba(62, 151, 255, 0.1) !important;
|
|
789
|
+
color: #3e97ff !important;
|
|
790
|
+
}
|
|
791
|
+
|
|
792
|
+
.layout-clean-flat [data-sidebar="menu-button"][data-active="true"] svg {
|
|
793
|
+
color: #3e97ff !important;
|
|
794
|
+
opacity: 1 !important;
|
|
795
|
+
}
|
|
796
|
+
|
|
797
|
+
.layout-clean-flat [data-sidebar="menu-button"][data-active="true"] [data-sidebar="menu-icon"],
|
|
798
|
+
.layout-clean-flat [data-sidebar="menu-sub-button"][data-active="true"] [data-sidebar="menu-icon"] {
|
|
799
|
+
background: rgba(62, 151, 255, 0.12) !important;
|
|
800
|
+
color: #3e97ff !important;
|
|
801
|
+
}
|
|
802
|
+
|
|
803
|
+
.layout-clean-flat [data-sidebar="menu-sub"] {
|
|
804
|
+
margin-left: 1.125rem !important;
|
|
805
|
+
padding-left: 0.75rem !important;
|
|
806
|
+
border-left: 1px solid #f1f3f7 !important;
|
|
807
|
+
}
|
|
808
|
+
.dark.layout-clean-flat [data-sidebar="menu-sub"],
|
|
809
|
+
.dark .layout-clean-flat [data-sidebar="menu-sub"] {
|
|
810
|
+
border-left-color: #2b2b40 !important;
|
|
811
|
+
}
|
|
812
|
+
|
|
813
|
+
.layout-clean-flat [data-sidebar="menu-sub-button"] {
|
|
814
|
+
color: #5e6278 !important;
|
|
815
|
+
border-radius: 0.675rem !important;
|
|
816
|
+
font-weight: 400 !important;
|
|
817
|
+
transition: all 0.15s !important;
|
|
818
|
+
}
|
|
819
|
+
|
|
820
|
+
.layout-clean-flat [data-sidebar="menu-sub-button"]:hover {
|
|
821
|
+
background: #f5f8fa !important;
|
|
822
|
+
color: #181c32 !important;
|
|
823
|
+
}
|
|
824
|
+
.dark.layout-clean-flat [data-sidebar="menu-sub-button"]:hover,
|
|
825
|
+
.dark .layout-clean-flat [data-sidebar="menu-sub-button"]:hover {
|
|
826
|
+
background: #2b2b40 !important;
|
|
827
|
+
color: #f1f6ff !important;
|
|
828
|
+
}
|
|
829
|
+
|
|
830
|
+
.layout-clean-flat [data-sidebar="menu-sub-button"][data-active="true"] {
|
|
831
|
+
background: #eef6ff !important;
|
|
832
|
+
color: #3e97ff !important;
|
|
833
|
+
font-weight: 500 !important;
|
|
834
|
+
box-shadow: none !important;
|
|
835
|
+
}
|
|
836
|
+
.dark.layout-clean-flat [data-sidebar="menu-sub-button"][data-active="true"],
|
|
837
|
+
.dark .layout-clean-flat [data-sidebar="menu-sub-button"][data-active="true"] {
|
|
838
|
+
background: rgba(62, 151, 255, 0.1) !important;
|
|
839
|
+
color: #3e97ff !important;
|
|
840
|
+
}
|
|
841
|
+
|
|
842
|
+
/* Button & input styles override under clean-flat layout */
|
|
843
|
+
.layout-clean-flat [data-slot="button"][data-variant="default"] {
|
|
844
|
+
background: #3e97ff !important;
|
|
845
|
+
color: #ffffff !important;
|
|
846
|
+
box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;
|
|
847
|
+
border-radius: 8px !important;
|
|
848
|
+
font-weight: 600 !important;
|
|
849
|
+
transition: all 0.15s ease !important;
|
|
850
|
+
}
|
|
851
|
+
.layout-clean-flat [data-slot="button"][data-variant="default"]:hover {
|
|
852
|
+
background: #1880ff !important;
|
|
853
|
+
}
|
|
854
|
+
|
|
855
|
+
.layout-clean-flat [data-slot="button"][data-variant="outline"] {
|
|
856
|
+
background: #ffffff !important;
|
|
857
|
+
color: #5e6278 !important;
|
|
858
|
+
border: 1px solid #e1e3ea !important;
|
|
859
|
+
box-shadow: 0 1px 2px 0 rgba(0,0,0,0.05) !important;
|
|
860
|
+
border-radius: 8px !important;
|
|
861
|
+
font-weight: 600 !important;
|
|
862
|
+
transition: all 0.15s ease !important;
|
|
863
|
+
}
|
|
864
|
+
.layout-clean-flat [data-slot="button"][data-variant="outline"]:hover {
|
|
865
|
+
background: #f5f8fa !important;
|
|
866
|
+
border-color: #cbd5e1 !important;
|
|
867
|
+
color: #181c32 !important;
|
|
868
|
+
}
|
|
869
|
+
.dark.layout-clean-flat [data-slot="button"][data-variant="outline"],
|
|
870
|
+
.dark .layout-clean-flat [data-slot="button"][data-variant="outline"] {
|
|
871
|
+
background: #1e1e2d !important;
|
|
872
|
+
color: #a1a5b7 !important;
|
|
873
|
+
border-color: #2b2b40 !important;
|
|
874
|
+
}
|
|
875
|
+
.dark.layout-clean-flat [data-slot="button"][data-variant="outline"]:hover,
|
|
876
|
+
.dark .layout-clean-flat [data-slot="button"][data-variant="outline"]:hover {
|
|
877
|
+
background: #2b2b40 !important;
|
|
878
|
+
color: #ffffff !important;
|
|
879
|
+
}
|
|
880
|
+
|
|
881
|
+
.layout-clean-flat [data-slot="input"] {
|
|
882
|
+
border: 1px solid #e1e3ea !important;
|
|
883
|
+
border-radius: 8px !important;
|
|
884
|
+
box-shadow: inset 0 1px 2px rgba(0,0,0,0.01) !important;
|
|
885
|
+
outline: none !important;
|
|
886
|
+
transition: all 0.15s ease !important;
|
|
887
|
+
}
|
|
888
|
+
.layout-clean-flat [data-slot="input"]:focus {
|
|
889
|
+
border-color: #3e97ff !important;
|
|
890
|
+
box-shadow: 0 0 0 4px rgba(62,151,255,0.1) !important;
|
|
891
|
+
}
|
|
892
|
+
.dark.layout-clean-flat [data-slot="input"],
|
|
893
|
+
.dark .layout-clean-flat [data-slot="input"] {
|
|
894
|
+
border-color: #2b2b40 !important;
|
|
895
|
+
background: #151521 !important;
|
|
896
|
+
color: #f1f6ff !important;
|
|
897
|
+
}
|
|
898
|
+
.dark.layout-clean-flat [data-slot="input"]:focus,
|
|
899
|
+
.dark .layout-clean-flat [data-slot="input"]:focus {
|
|
900
|
+
border-color: #3e97ff !important;
|
|
901
|
+
}
|
|
902
|
+
|
|
903
|
+
/* ─── svadmin Metronic-inspired list and edit surfaces ─── */
|
|
904
|
+
[data-svadmin-list-header],
|
|
905
|
+
[data-svadmin-table-toolbar],
|
|
906
|
+
[data-svadmin-table-card],
|
|
907
|
+
[data-svadmin-form-header],
|
|
908
|
+
[data-svadmin-form-card],
|
|
909
|
+
[data-svadmin-form-actions] {
|
|
910
|
+
box-shadow: 0 0 24px rgba(76, 87, 125, 0.045) !important;
|
|
911
|
+
}
|
|
912
|
+
|
|
913
|
+
.layout-clean-flat [data-svadmin-list-header],
|
|
914
|
+
.layout-clean-flat [data-svadmin-table-toolbar],
|
|
915
|
+
.layout-clean-flat [data-svadmin-table-card],
|
|
916
|
+
.layout-clean-flat [data-svadmin-form-header],
|
|
917
|
+
.layout-clean-flat [data-svadmin-form-card],
|
|
918
|
+
.layout-clean-flat [data-svadmin-form-actions] {
|
|
919
|
+
border-color: #f1f3f7 !important;
|
|
920
|
+
background: #ffffff !important;
|
|
921
|
+
border-radius: 1.15rem !important;
|
|
922
|
+
}
|
|
923
|
+
|
|
924
|
+
.layout-clean-flat [data-svadmin-list-actions] [data-slot="button"],
|
|
925
|
+
.layout-clean-flat [data-svadmin-table-toolbar] [data-slot="button"],
|
|
926
|
+
.layout-clean-flat [data-svadmin-form-actions] [data-slot="button"] {
|
|
927
|
+
height: 2.625rem !important;
|
|
928
|
+
border-radius: 0.75rem !important;
|
|
929
|
+
}
|
|
930
|
+
|
|
931
|
+
.layout-clean-flat [data-svadmin-table-toolbar] {
|
|
932
|
+
padding: 0.875rem !important;
|
|
933
|
+
}
|
|
934
|
+
|
|
935
|
+
.layout-clean-flat [data-svadmin-table-toolbar] [data-slot="input"] {
|
|
936
|
+
height: 2.75rem !important;
|
|
937
|
+
border-radius: 0.85rem !important;
|
|
938
|
+
background: #f9f9f9 !important;
|
|
939
|
+
}
|
|
940
|
+
|
|
941
|
+
[data-svadmin-datatable] {
|
|
942
|
+
border-collapse: separate !important;
|
|
943
|
+
border-spacing: 0 !important;
|
|
944
|
+
}
|
|
945
|
+
|
|
946
|
+
[data-svadmin-table-head] [data-slot="table-head"] {
|
|
947
|
+
height: 3.25rem !important;
|
|
948
|
+
border-bottom: 1px solid rgba(225, 227, 234, 0.78) !important;
|
|
949
|
+
background: #f9f9f9 !important;
|
|
950
|
+
color: #a1a5b7 !important;
|
|
951
|
+
font-size: 0.6875rem !important;
|
|
952
|
+
font-weight: 700 !important;
|
|
953
|
+
letter-spacing: 0.08em !important;
|
|
954
|
+
text-transform: uppercase !important;
|
|
955
|
+
}
|
|
956
|
+
|
|
957
|
+
[data-svadmin-table-row] {
|
|
958
|
+
border-bottom-color: rgba(241, 243, 247, 0.95) !important;
|
|
959
|
+
}
|
|
960
|
+
|
|
961
|
+
[data-svadmin-table-row] [data-slot="table-cell"] {
|
|
962
|
+
height: 3.625rem !important;
|
|
963
|
+
color: #5e6278 !important;
|
|
964
|
+
font-size: 0.8125rem !important;
|
|
965
|
+
}
|
|
966
|
+
|
|
967
|
+
[data-svadmin-table-row]:hover [data-slot="table-cell"] {
|
|
968
|
+
background: #fbfcfd !important;
|
|
969
|
+
}
|
|
970
|
+
|
|
971
|
+
[data-svadmin-pagination] {
|
|
972
|
+
border-radius: 1rem;
|
|
973
|
+
padding: 0.35rem 0.15rem;
|
|
974
|
+
}
|
|
975
|
+
|
|
976
|
+
[data-svadmin-form-content] {
|
|
977
|
+
padding-top: 0 !important;
|
|
978
|
+
padding-bottom: 0 !important;
|
|
979
|
+
}
|
|
980
|
+
|
|
981
|
+
[data-svadmin-form-row] {
|
|
982
|
+
border-bottom: 1px solid rgba(241, 243, 247, 0.95);
|
|
983
|
+
padding: 1.35rem 0;
|
|
984
|
+
}
|
|
985
|
+
|
|
986
|
+
[data-svadmin-form-row]:last-child {
|
|
987
|
+
border-bottom: 0;
|
|
988
|
+
}
|
|
989
|
+
|
|
990
|
+
[data-svadmin-field-label] {
|
|
991
|
+
color: #3f4254 !important;
|
|
992
|
+
font-weight: 600 !important;
|
|
993
|
+
}
|
|
994
|
+
|
|
995
|
+
[data-svadmin-form-settings] [data-slot="input"],
|
|
996
|
+
[data-svadmin-form-settings] textarea,
|
|
997
|
+
[data-svadmin-form-settings] [data-slot="select-trigger"] {
|
|
998
|
+
min-height: 2.75rem !important;
|
|
999
|
+
border-radius: 0.85rem !important;
|
|
1000
|
+
background: #f9f9f9 !important;
|
|
1001
|
+
}
|
|
1002
|
+
|
|
1003
|
+
[data-svadmin-form-actions] {
|
|
1004
|
+
width: fit-content;
|
|
1005
|
+
max-width: 100%;
|
|
1006
|
+
}
|
|
1007
|
+
|
|
1008
|
+
@media (min-width: 768px) {
|
|
1009
|
+
[data-svadmin-form-settings] [data-svadmin-field] {
|
|
1010
|
+
display: grid !important;
|
|
1011
|
+
grid-template-columns: minmax(10rem, 14rem) minmax(0, 1fr) !important;
|
|
1012
|
+
align-items: start !important;
|
|
1013
|
+
column-gap: 2rem !important;
|
|
1014
|
+
row-gap: 0.35rem !important;
|
|
1015
|
+
}
|
|
1016
|
+
|
|
1017
|
+
[data-svadmin-form-settings] [data-svadmin-field] > [data-svadmin-field-label] {
|
|
1018
|
+
padding-top: 0.8rem !important;
|
|
1019
|
+
}
|
|
1020
|
+
|
|
1021
|
+
[data-svadmin-form-settings] [data-svadmin-field] > :not([data-svadmin-field-label]) {
|
|
1022
|
+
grid-column: 2 !important;
|
|
1023
|
+
}
|
|
1024
|
+
}
|
|
1025
|
+
|
|
1026
|
+
.dark [data-svadmin-table-head] [data-slot="table-head"] {
|
|
1027
|
+
background: #1a1a27 !important;
|
|
1028
|
+
border-bottom-color: #2b2b40 !important;
|
|
1029
|
+
color: #a1a5b7 !important;
|
|
1030
|
+
}
|
|
1031
|
+
|
|
1032
|
+
.dark [data-svadmin-table-row] {
|
|
1033
|
+
border-bottom-color: rgba(43, 43, 64, 0.82) !important;
|
|
1034
|
+
}
|
|
1035
|
+
|
|
1036
|
+
.dark [data-svadmin-table-row] [data-slot="table-cell"] {
|
|
1037
|
+
color: #a1a5b7 !important;
|
|
1038
|
+
}
|
|
1039
|
+
|
|
1040
|
+
.dark [data-svadmin-table-row]:hover [data-slot="table-cell"] {
|
|
1041
|
+
background: rgba(43, 43, 64, 0.32) !important;
|
|
1042
|
+
}
|
|
1043
|
+
|
|
1044
|
+
.dark [data-svadmin-form-row] {
|
|
1045
|
+
border-bottom-color: rgba(43, 43, 64, 0.82);
|
|
1046
|
+
}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import { toggleTheme } from '@svadmin/core';
|
|
6
6
|
import { Command } from 'cmdk-sv';
|
|
7
7
|
import * as Dialog from './ui/dialog/index.js';
|
|
8
|
-
import { Search, LayoutDashboard, Plus, Sun, FileText, Sparkles, Loader2
|
|
8
|
+
import { Search, LayoutDashboard, Plus, Sun, FileText, Sparkles, Loader2 } from '@lucide/svelte';
|
|
9
9
|
import MarkdownRenderer from './MarkdownRenderer.svelte';
|
|
10
10
|
|
|
11
11
|
let { open = $bindable(false) } = $props<{ open?: boolean }>();
|
|
@@ -124,7 +124,7 @@
|
|
|
124
124
|
<LayoutDashboard class="h-4 w-4 text-muted-foreground" />
|
|
125
125
|
{t('common.home')}
|
|
126
126
|
</Command.Item>
|
|
127
|
-
{#each resources as r}
|
|
127
|
+
{#each resources as r, _i (_i)}
|
|
128
128
|
<Command.Item value={r.name} onSelect={() => act(() => navigate(`/${r.name}`))} class={itemClass}>
|
|
129
129
|
<FileText class="h-4 w-4 text-muted-foreground" />
|
|
130
130
|
{r.label}
|
|
@@ -136,7 +136,7 @@
|
|
|
136
136
|
|
|
137
137
|
<!-- Actions -->
|
|
138
138
|
<Command.Group heading={t('common.actions')}>
|
|
139
|
-
{#each resources as r}
|
|
139
|
+
{#each resources as r, _i (_i)}
|
|
140
140
|
<Command.Item value={`create-${r.name}`} onSelect={() => act(() => navigate(`/${r.name}/create`))} class={itemClass}>
|
|
141
141
|
<Plus class="h-4 w-4 text-muted-foreground" />
|
|
142
142
|
{t('common.create')} {r.label}
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
</Card.CardHeader>
|
|
47
47
|
<Card.CardContent>
|
|
48
48
|
<div class="flex flex-wrap gap-2">
|
|
49
|
-
{#each resources as resource}
|
|
49
|
+
{#each resources as resource, _i (_i)}
|
|
50
50
|
<Badge variant="outline" class="font-mono text-xs">{resource.name}</Badge>
|
|
51
51
|
{/each}
|
|
52
52
|
{#if resources.length === 0}
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
</Card.CardHeader>
|
|
67
67
|
<Card.CardContent>
|
|
68
68
|
<div class="flex flex-wrap gap-2">
|
|
69
|
-
{#each providerNames as name}
|
|
69
|
+
{#each providerNames as name, _i (_i)}
|
|
70
70
|
<Badge variant="outline" class="font-mono text-xs">{name}</Badge>
|
|
71
71
|
{/each}
|
|
72
72
|
</div>
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
// Auto-inject design tokens so consumers don't need to manually import
|
|
3
3
|
import '../app.css';
|
|
4
|
-
import type { Snippet } from 'svelte';
|
|
4
|
+
import type { Component, Snippet } from 'svelte';
|
|
5
5
|
import type { DataProvider, AuthProvider, ResourceDefinition, ThemeMode, RouterProvider, ThemeConfig, MenuItem, TaskProvider } from '@svadmin/core';
|
|
6
|
-
import { setDataProvider, setAuthProvider, setResources, setLocale, setTheme, setRouterProvider, setTaskProvider,
|
|
6
|
+
import { setDataProvider, setAuthProvider, setResources, setLocale, setTheme, setRouterProvider, setTaskProvider, createHashRouterProvider, configureTheme } from '@svadmin/core';
|
|
7
7
|
import { t } from '@svadmin/core/i18n';
|
|
8
8
|
import { navigate } from '@svadmin/core/router';
|
|
9
|
-
import { currentPath } from '@svadmin/core/router';
|
|
10
9
|
import { QueryClient, QueryClientProvider, type DefaultOptions } from '@tanstack/svelte-query';
|
|
11
|
-
import { setComponentRegistry,
|
|
10
|
+
import { setComponentRegistry, type ComponentRegistry } from '../component-registry.svelte.js';
|
|
12
11
|
import Layout from './Layout.svelte';
|
|
13
12
|
import AutoTable from './AutoTable.svelte';
|
|
14
13
|
import AutoForm from './AutoForm.svelte';
|
|
@@ -24,6 +23,20 @@
|
|
|
24
23
|
import Header from './Header.svelte';
|
|
25
24
|
import TaskQueueDrawer from './TaskQueueDrawer.svelte';
|
|
26
25
|
import SettingsPage from './SettingsPage.svelte';
|
|
26
|
+
import ErrorPage from './ErrorPage.svelte';
|
|
27
|
+
import PublicProfilePage from './profile/PublicProfilePage.svelte';
|
|
28
|
+
import GetStartedPage from './account/GetStartedPage.svelte';
|
|
29
|
+
import CompanyProfilePage from './account/CompanyProfilePage.svelte';
|
|
30
|
+
import SettingsPlainPage from './account/SettingsPlainPage.svelte';
|
|
31
|
+
import SettingsSidebarPage from './account/SettingsSidebarPage.svelte';
|
|
32
|
+
import SettingsEnterprisePage from './account/SettingsEnterprisePage.svelte';
|
|
33
|
+
import ImportMembersPage from './account/ImportMembersPage.svelte';
|
|
34
|
+
import MembersStarterPage from './account/MembersStarterPage.svelte';
|
|
35
|
+
import TeamMembersPage from './account/TeamMembersPage.svelte';
|
|
36
|
+
import SecurityLogPage from './account/SecurityLogPage.svelte';
|
|
37
|
+
import UserCardsNFTPage from './network/UserCardsNFTPage.svelte';
|
|
38
|
+
import TeamCrewTablePage from './network/TeamCrewTablePage.svelte';
|
|
39
|
+
import TwoFactorAuthPage from './TwoFactorAuthPage.svelte';
|
|
27
40
|
import { Button } from './ui/button/index.js';
|
|
28
41
|
import { Input } from './ui/input/index.js';
|
|
29
42
|
import { Badge } from './ui/badge/index.js';
|
|
@@ -43,8 +56,22 @@
|
|
|
43
56
|
themeConfig?: ThemeConfig;
|
|
44
57
|
dashboard?: Snippet;
|
|
45
58
|
loginPage?: Snippet;
|
|
59
|
+
/** Prefill and display credentials on the default login page, useful for demos/examples. */
|
|
60
|
+
loginDefaults?: {
|
|
61
|
+
identifier?: string;
|
|
62
|
+
password?: string;
|
|
63
|
+
hint?: string;
|
|
64
|
+
};
|
|
46
65
|
/** Override default components via DI */
|
|
47
66
|
components?: Partial<ComponentRegistry>;
|
|
67
|
+
/** Resource-specific page overrides while keeping svadmin defaults as fallback. */
|
|
68
|
+
resourcePages?: Record<string, {
|
|
69
|
+
list?: Component<{ resourceName: string }>;
|
|
70
|
+
create?: Component<{ resourceName: string; mode?: 'create' }>;
|
|
71
|
+
edit?: Component<{ resourceName: string; mode?: 'edit'; id?: string | number }>;
|
|
72
|
+
show?: Component<{ resourceName: string; id?: string | number }>;
|
|
73
|
+
clone?: Component<{ resourceName: string; mode?: 'clone'; id?: string | number }>;
|
|
74
|
+
}>;
|
|
48
75
|
/** Custom multi-level menu configuration */
|
|
49
76
|
menu?: MenuItem[];
|
|
50
77
|
/** External URL to the main application or workspace (renders a shortcut in the header) */
|
|
@@ -69,7 +96,9 @@
|
|
|
69
96
|
themeConfig: userThemeConfig,
|
|
70
97
|
dashboard,
|
|
71
98
|
loginPage,
|
|
99
|
+
loginDefaults,
|
|
72
100
|
components: userComponents,
|
|
101
|
+
resourcePages,
|
|
73
102
|
menu,
|
|
74
103
|
siteUrl,
|
|
75
104
|
routeMode,
|
|
@@ -81,7 +110,7 @@
|
|
|
81
110
|
const defaultComponents: ComponentRegistry = {
|
|
82
111
|
Layout, Sidebar, Header,
|
|
83
112
|
LoginPage, AutoTable, AutoForm, ShowPage,
|
|
84
|
-
TaskQueueDrawer,
|
|
113
|
+
TaskQueueDrawer, ErrorPage,
|
|
85
114
|
Button: Button as unknown as ComponentRegistry['Button'],
|
|
86
115
|
Input: Input as unknown as ComponentRegistry['Input'],
|
|
87
116
|
Badge: Badge as unknown as ComponentRegistry['Badge'],
|
|
@@ -135,6 +164,9 @@
|
|
|
135
164
|
// Reactive getters for route state
|
|
136
165
|
const route = $derived(getRoute());
|
|
137
166
|
const params = $derived(getParams());
|
|
167
|
+
const resourceNames = $derived(new Set(resources.map((resource) => resource.name)));
|
|
168
|
+
const hasRouteResource = $derived(!params.resource || resourceNames.has(params.resource));
|
|
169
|
+
const currentResourcePages = $derived(params.resource ? resourcePages?.[params.resource] : undefined);
|
|
138
170
|
|
|
139
171
|
// Auth check
|
|
140
172
|
let isAuthenticated = $state(false);
|
|
@@ -184,7 +216,13 @@
|
|
|
184
216
|
{:else if route === '/login' && loginPage}
|
|
185
217
|
{@render loginPage()}
|
|
186
218
|
{:else if route === '/login' && authProvider}
|
|
187
|
-
<LoginPage
|
|
219
|
+
<LoginPage
|
|
220
|
+
{title}
|
|
221
|
+
defaultIdentifier={loginDefaults?.identifier}
|
|
222
|
+
defaultPassword={loginDefaults?.password}
|
|
223
|
+
loginHint={loginDefaults?.hint}
|
|
224
|
+
onSuccess={() => { isAuthenticated = true; navigate('/'); }}
|
|
225
|
+
/>
|
|
188
226
|
{:else if route === '/register' && authProvider?.register}
|
|
189
227
|
<RegisterPage {title} />
|
|
190
228
|
{:else if route === '/forgot-password' && authProvider?.forgotPassword}
|
|
@@ -195,10 +233,47 @@
|
|
|
195
233
|
<ConfigErrorScreen title="{title} — {t('common.configRequired')}" />
|
|
196
234
|
{:else if isAuthenticated || !authProvider}
|
|
197
235
|
<Layout {title} {menu} {siteUrl} routeMode={resolvedRouteMode}>
|
|
198
|
-
{#key route + (params.resource ?? '') + (params.id ?? '')}
|
|
236
|
+
{#key route + (params.resource ?? '') + (params.id ?? '') + (params.variant ?? '') + (params.columns ?? '')}
|
|
199
237
|
<div class="svadmin-page-enter">
|
|
200
|
-
{#if route
|
|
238
|
+
{#if route === '/2fa'}
|
|
239
|
+
<TwoFactorAuthPage />
|
|
240
|
+
{:else if route === '/public-profile'}
|
|
241
|
+
<PublicProfilePage variant="default" initialTab="projects" />
|
|
242
|
+
{:else if route === '/public-profile/projects/:columns'}
|
|
243
|
+
<PublicProfilePage variant="default" initialTab="projects" columns={params.columns === '3' ? 3 : 2} />
|
|
244
|
+
{:else if route === '/public-profile/activity'}
|
|
245
|
+
<PublicProfilePage variant="default" initialTab="activity" />
|
|
246
|
+
{:else if route === '/public-profile/teams'}
|
|
247
|
+
<PublicProfilePage variant="default" initialTab="teams" />
|
|
248
|
+
{:else if route === '/public-profile/profiles/:variant'}
|
|
249
|
+
<PublicProfilePage variant={(params.variant === 'company' || params.variant === 'gamer' || params.variant === 'default' ? params.variant : 'default') as 'company' | 'gamer' | 'default'} />
|
|
250
|
+
{:else if route === '/account/get-started'}
|
|
251
|
+
<GetStartedPage />
|
|
252
|
+
{:else if route === '/account/company-profile'}
|
|
253
|
+
<CompanyProfilePage />
|
|
254
|
+
{:else if route === '/account/settings-plain'}
|
|
255
|
+
<SettingsPlainPage />
|
|
256
|
+
{:else if route === '/account/settings-sidebar'}
|
|
257
|
+
<SettingsSidebarPage />
|
|
258
|
+
{:else if route === '/account/settings-enterprise'}
|
|
259
|
+
<SettingsEnterprisePage />
|
|
260
|
+
{:else if route === '/account/import-members'}
|
|
261
|
+
<ImportMembersPage />
|
|
262
|
+
{:else if route === '/account/members-starter'}
|
|
263
|
+
<MembersStarterPage />
|
|
264
|
+
{:else if route === '/account/team-members'}
|
|
265
|
+
<TeamMembersPage />
|
|
266
|
+
{:else if route === '/account/security-log'}
|
|
267
|
+
<SecurityLogPage />
|
|
268
|
+
{:else if route === '/network/user-cards'}
|
|
269
|
+
<UserCardsNFTPage />
|
|
270
|
+
{:else if route === '/network/team-crew'}
|
|
271
|
+
<TeamCrewTablePage />
|
|
272
|
+
{:else if route.startsWith('/settings')}
|
|
201
273
|
<SettingsPage />
|
|
274
|
+
{:else if route === '/500' || (route === '/:resource' && params.resource === '500')}
|
|
275
|
+
{@const ErrorComp = mergedComponents.ErrorPage || ErrorPage}
|
|
276
|
+
<ErrorComp status="500" />
|
|
202
277
|
{:else if route === '/' || route === ''}
|
|
203
278
|
{#if dashboard}
|
|
204
279
|
{@render dashboard()}
|
|
@@ -208,31 +283,34 @@
|
|
|
208
283
|
<p class="text-muted-foreground">{t('common.dashboardHint')}</p>
|
|
209
284
|
</div>
|
|
210
285
|
{/if}
|
|
211
|
-
{:else if route === '/:resource' || route === '/:parent/:parentId/:resource'}
|
|
286
|
+
{:else if (route === '/:resource' || route === '/:parent/:parentId/:resource') && hasRouteResource}
|
|
212
287
|
{#key params.resource}
|
|
213
|
-
{@const Comp = mergedComponents.AutoTable}
|
|
288
|
+
{@const Comp = currentResourcePages?.list ?? mergedComponents.AutoTable}
|
|
214
289
|
<Comp resourceName={params.resource} />
|
|
215
290
|
{/key}
|
|
216
|
-
{:else if route === '/:resource/create' || route === '/:parent/:parentId/:resource/create'}
|
|
291
|
+
{:else if (route === '/:resource/create' || route === '/:parent/:parentId/:resource/create') && hasRouteResource}
|
|
217
292
|
{#key params.resource}
|
|
218
|
-
{@const Comp = mergedComponents.AutoForm}
|
|
293
|
+
{@const Comp = currentResourcePages?.create ?? mergedComponents.AutoForm}
|
|
219
294
|
<Comp resourceName={params.resource} mode="create" />
|
|
220
295
|
{/key}
|
|
221
|
-
{:else if route === '/:resource/edit/:id' || route === '/:parent/:parentId/:resource/edit/:id'}
|
|
296
|
+
{:else if (route === '/:resource/edit/:id' || route === '/:parent/:parentId/:resource/edit/:id') && hasRouteResource}
|
|
222
297
|
{#key `${params.resource}-${params.id}`}
|
|
223
|
-
{@const Comp = mergedComponents.AutoForm}
|
|
298
|
+
{@const Comp = currentResourcePages?.edit ?? mergedComponents.AutoForm}
|
|
224
299
|
<Comp resourceName={params.resource} mode="edit" id={params.id} />
|
|
225
300
|
{/key}
|
|
226
|
-
{:else if route === '/:resource/show/:id' || route === '/:parent/:parentId/:resource/show/:id'}
|
|
301
|
+
{:else if (route === '/:resource/show/:id' || route === '/:parent/:parentId/:resource/show/:id') && hasRouteResource}
|
|
227
302
|
{#key `${params.resource}-${params.id}`}
|
|
228
|
-
{@const Comp = mergedComponents.ShowPage}
|
|
303
|
+
{@const Comp = currentResourcePages?.show ?? mergedComponents.ShowPage}
|
|
229
304
|
<Comp resourceName={params.resource} id={params.id} />
|
|
230
305
|
{/key}
|
|
231
|
-
{:else if route === '/:resource/clone/:id' || route === '/:parent/:parentId/:resource/clone/:id'}
|
|
306
|
+
{:else if (route === '/:resource/clone/:id' || route === '/:parent/:parentId/:resource/clone/:id') && hasRouteResource}
|
|
232
307
|
{#key `${params.resource}-clone-${params.id}`}
|
|
233
|
-
{@const Comp = mergedComponents.AutoForm}
|
|
308
|
+
{@const Comp = currentResourcePages?.clone ?? mergedComponents.AutoForm}
|
|
234
309
|
<Comp resourceName={params.resource} mode="clone" id={params.id} />
|
|
235
310
|
{/key}
|
|
311
|
+
{:else}
|
|
312
|
+
{@const ErrorComp = mergedComponents.ErrorPage || ErrorPage}
|
|
313
|
+
<ErrorComp status="404" />
|
|
236
314
|
{/if}
|
|
237
315
|
</div>
|
|
238
316
|
{/key}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import '../app.css';
|
|
2
|
-
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { Component, Snippet } from 'svelte';
|
|
3
3
|
import type { DataProvider, AuthProvider, ResourceDefinition, ThemeMode, RouterProvider, ThemeConfig, MenuItem, TaskProvider } from '@svadmin/core';
|
|
4
4
|
import { QueryClient, type DefaultOptions } from '@tanstack/svelte-query';
|
|
5
5
|
import { type ComponentRegistry } from '../component-registry.svelte.js';
|
|
@@ -16,8 +16,38 @@ interface Props {
|
|
|
16
16
|
themeConfig?: ThemeConfig;
|
|
17
17
|
dashboard?: Snippet;
|
|
18
18
|
loginPage?: Snippet;
|
|
19
|
+
/** Prefill and display credentials on the default login page, useful for demos/examples. */
|
|
20
|
+
loginDefaults?: {
|
|
21
|
+
identifier?: string;
|
|
22
|
+
password?: string;
|
|
23
|
+
hint?: string;
|
|
24
|
+
};
|
|
19
25
|
/** Override default components via DI */
|
|
20
26
|
components?: Partial<ComponentRegistry>;
|
|
27
|
+
/** Resource-specific page overrides while keeping svadmin defaults as fallback. */
|
|
28
|
+
resourcePages?: Record<string, {
|
|
29
|
+
list?: Component<{
|
|
30
|
+
resourceName: string;
|
|
31
|
+
}>;
|
|
32
|
+
create?: Component<{
|
|
33
|
+
resourceName: string;
|
|
34
|
+
mode?: 'create';
|
|
35
|
+
}>;
|
|
36
|
+
edit?: Component<{
|
|
37
|
+
resourceName: string;
|
|
38
|
+
mode?: 'edit';
|
|
39
|
+
id?: string | number;
|
|
40
|
+
}>;
|
|
41
|
+
show?: Component<{
|
|
42
|
+
resourceName: string;
|
|
43
|
+
id?: string | number;
|
|
44
|
+
}>;
|
|
45
|
+
clone?: Component<{
|
|
46
|
+
resourceName: string;
|
|
47
|
+
mode?: 'clone';
|
|
48
|
+
id?: string | number;
|
|
49
|
+
}>;
|
|
50
|
+
}>;
|
|
21
51
|
/** Custom multi-level menu configuration */
|
|
22
52
|
menu?: MenuItem[];
|
|
23
53
|
/** External URL to the main application or workspace (renders a shortcut in the header) */
|
|
@@ -29,6 +59,6 @@ interface Props {
|
|
|
29
59
|
/** Optional TanStack Query default options override when QueryClient is not supplied. */
|
|
30
60
|
queryClientDefaultOptions?: DefaultOptions;
|
|
31
61
|
}
|
|
32
|
-
declare const AdminApp:
|
|
62
|
+
declare const AdminApp: Component<Props, {}, "">;
|
|
33
63
|
type AdminApp = ReturnType<typeof AdminApp>;
|
|
34
64
|
export default AdminApp;
|