@mdguggenbichler/slugbase-core 0.0.4 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/frontend/index.tsx +3 -3
- package/frontend/public/favicon.svg +1 -0
- package/frontend/public/slugbase_icon_blue.svg +1 -0
- package/frontend/public/slugbase_icon_white.png +0 -0
- package/frontend/public/slugbase_icon_white.svg +1 -0
- package/frontend/src/App.tsx +179 -0
- package/frontend/src/api/client.ts +134 -0
- package/frontend/src/components/AppSidebar.tsx +214 -0
- package/frontend/src/components/EmptyState.tsx +33 -0
- package/frontend/src/components/Favicon.tsx +76 -0
- package/frontend/src/components/FilterChips.tsx +60 -0
- package/frontend/src/components/FolderIcon.tsx +207 -0
- package/frontend/src/components/GlobalSearch.tsx +275 -0
- package/frontend/src/components/Layout.tsx +60 -0
- package/frontend/src/components/PageHeader.tsx +31 -0
- package/frontend/src/components/ScopeSegmentedControl.tsx +42 -0
- package/frontend/src/components/SentryDebug.tsx +32 -0
- package/frontend/src/components/StatCard.tsx +66 -0
- package/frontend/src/components/TopBar.tsx +63 -0
- package/frontend/src/components/UserDropdown.tsx +86 -0
- package/frontend/src/components/admin/AdminAI.tsx +207 -0
- package/frontend/src/components/admin/AdminOIDCProviders.tsx +183 -0
- package/frontend/src/components/admin/AdminSettings.tsx +413 -0
- package/frontend/src/components/admin/AdminTeams.tsx +177 -0
- package/frontend/src/components/admin/AdminUsers.tsx +225 -0
- package/frontend/src/components/bookmarks/BookmarkCard.tsx +312 -0
- package/frontend/src/components/bookmarks/BookmarkListItem.tsx +159 -0
- package/frontend/src/components/bookmarks/BookmarkTableView.tsx +419 -0
- package/frontend/src/components/bookmarks/BulkActionModals.tsx +162 -0
- package/frontend/src/components/bookmarks/FilterChips.tsx +5 -0
- package/frontend/src/components/modals/BookmarkModal.tsx +493 -0
- package/frontend/src/components/modals/FolderModal.tsx +306 -0
- package/frontend/src/components/modals/ImportModal.tsx +232 -0
- package/frontend/src/components/modals/OIDCProviderModal.tsx +284 -0
- package/frontend/src/components/modals/SharingModal.tsx +96 -0
- package/frontend/src/components/modals/TagModal.tsx +101 -0
- package/frontend/src/components/modals/TeamAssignmentModal.tsx +354 -0
- package/frontend/src/components/modals/TeamModal.tsx +117 -0
- package/frontend/src/components/modals/UserModal.tsx +225 -0
- package/frontend/src/components/profile/CreateTokenModal.tsx +172 -0
- package/frontend/src/components/sharing/ShareResourceDialog.tsx +422 -0
- package/frontend/src/components/ui/Autocomplete.tsx +155 -0
- package/frontend/src/components/ui/Button.tsx +68 -0
- package/frontend/src/components/ui/ConfirmDialog.tsx +79 -0
- package/frontend/src/components/ui/FormFieldWrapper.tsx +36 -0
- package/frontend/src/components/ui/ModalFooterActions.tsx +49 -0
- package/frontend/src/components/ui/ModalSection.tsx +34 -0
- package/frontend/src/components/ui/PageLoadingSkeleton.tsx +24 -0
- package/frontend/src/components/ui/Select.tsx +61 -0
- package/frontend/src/components/ui/SharingField.tsx +298 -0
- package/frontend/src/components/ui/Toast.tsx +47 -0
- package/frontend/src/components/ui/Tooltip.tsx +21 -0
- package/frontend/src/components/ui/alert-dialog.tsx +139 -0
- package/frontend/src/components/ui/badge.tsx +36 -0
- package/frontend/src/components/ui/button-base.tsx +57 -0
- package/frontend/src/components/ui/card.tsx +76 -0
- package/frontend/src/components/ui/command.tsx +161 -0
- package/frontend/src/components/ui/dialog.tsx +120 -0
- package/frontend/src/components/ui/dropdown-menu.tsx +199 -0
- package/frontend/src/components/ui/input.tsx +22 -0
- package/frontend/src/components/ui/label.tsx +24 -0
- package/frontend/src/components/ui/popover.tsx +33 -0
- package/frontend/src/components/ui/progress.tsx +26 -0
- package/frontend/src/components/ui/scroll-area.tsx +48 -0
- package/frontend/src/components/ui/select-base.tsx +159 -0
- package/frontend/src/components/ui/separator.tsx +29 -0
- package/frontend/src/components/ui/sheet.tsx +140 -0
- package/frontend/src/components/ui/sidebar.tsx +783 -0
- package/frontend/src/components/ui/skeleton.tsx +15 -0
- package/frontend/src/components/ui/sonner.tsx +46 -0
- package/frontend/src/components/ui/switch.tsx +28 -0
- package/frontend/src/components/ui/table.tsx +120 -0
- package/frontend/src/components/ui/tooltip-base.tsx +30 -0
- package/frontend/src/config/api.ts +16 -0
- package/frontend/src/config/mode.ts +6 -0
- package/frontend/src/contexts/AppConfigContext.tsx +39 -0
- package/frontend/src/contexts/AuthContext.tsx +137 -0
- package/frontend/src/contexts/SearchCommandContext.tsx +28 -0
- package/frontend/src/hooks/use-mobile.tsx +19 -0
- package/frontend/src/hooks/useConfirmDialog.ts +63 -0
- package/frontend/src/hooks/useMarketingTheme.ts +47 -0
- package/frontend/src/i18n.ts +39 -0
- package/frontend/src/index.css +117 -0
- package/frontend/src/instrument.ts +20 -0
- package/frontend/src/lib/utils.ts +6 -0
- package/frontend/src/locales/de.json +899 -0
- package/frontend/src/locales/en.json +937 -0
- package/frontend/src/locales/es.json +884 -0
- package/frontend/src/locales/fr.json +550 -0
- package/frontend/src/locales/it.json +535 -0
- package/frontend/src/locales/ja.json +535 -0
- package/frontend/src/locales/nl.json +550 -0
- package/frontend/src/locales/pl.json +535 -0
- package/frontend/src/locales/pt.json +535 -0
- package/frontend/src/locales/ru.json +535 -0
- package/frontend/src/locales/zh.json +535 -0
- package/frontend/src/main.tsx +44 -0
- package/frontend/src/pages/Bookmarks.tsx +1004 -0
- package/frontend/src/pages/Dashboard.tsx +427 -0
- package/frontend/src/pages/Folders.tsx +578 -0
- package/frontend/src/pages/GoPreferences.tsx +134 -0
- package/frontend/src/pages/Login.tsx +196 -0
- package/frontend/src/pages/PasswordReset.tsx +242 -0
- package/frontend/src/pages/Profile.tsx +593 -0
- package/frontend/src/pages/SearchEngineGuide.tsx +135 -0
- package/frontend/src/pages/Setup.tsx +210 -0
- package/frontend/src/pages/Signup.tsx +199 -0
- package/frontend/src/pages/Tags.tsx +421 -0
- package/frontend/src/pages/VerifyEmail.tsx +254 -0
- package/frontend/src/pages/admin/AdminAIPage.tsx +5 -0
- package/frontend/src/pages/admin/AdminLayout.tsx +40 -0
- package/frontend/src/pages/admin/AdminMembersPage.tsx +5 -0
- package/frontend/src/pages/admin/AdminOIDCPage.tsx +5 -0
- package/frontend/src/pages/admin/AdminSettingsPage.tsx +5 -0
- package/frontend/src/pages/admin/AdminTeamsPage.tsx +5 -0
- package/frontend/src/utils/favicon.ts +36 -0
- package/frontend/src/utils/formatRelativeTime.ts +37 -0
- package/frontend/src/utils/safeHref.ts +31 -0
- package/frontend/src/vite-env.d.ts +10 -0
- package/package.json +9 -1
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
@tailwind base;
|
|
2
|
+
@tailwind components;
|
|
3
|
+
@tailwind utilities;
|
|
4
|
+
|
|
5
|
+
body {
|
|
6
|
+
margin: 0;
|
|
7
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
|
|
8
|
+
'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
|
|
9
|
+
sans-serif;
|
|
10
|
+
-webkit-font-smoothing: antialiased;
|
|
11
|
+
-moz-osx-font-smoothing: grayscale;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
* {
|
|
15
|
+
box-sizing: border-box;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/* Accessible focus styles - use theme ring color */
|
|
19
|
+
a:focus-visible,
|
|
20
|
+
button:focus-visible,
|
|
21
|
+
input:focus-visible,
|
|
22
|
+
select:focus-visible,
|
|
23
|
+
textarea:focus-visible {
|
|
24
|
+
outline: 2px solid hsl(var(--ring));
|
|
25
|
+
outline-offset: 2px;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
a:focus-visible {
|
|
29
|
+
border-radius: 0.25rem;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
@layer base {
|
|
33
|
+
:root {
|
|
34
|
+
/* Light: navy-tinted bg, white cards, orange primary (#E64100) */
|
|
35
|
+
--background: 219 30% 97%;
|
|
36
|
+
--foreground: 219 58% 10%;
|
|
37
|
+
--card: 0 0% 100%;
|
|
38
|
+
--card-foreground: 219 58% 10%;
|
|
39
|
+
--popover: 0 0% 100%;
|
|
40
|
+
--popover-foreground: 219 58% 10%;
|
|
41
|
+
--primary: 17 100% 45%; /* #E64100 */
|
|
42
|
+
--primary-foreground: 0 0% 100%; /* white for contrast on orange buttons */
|
|
43
|
+
--secondary: 219 30% 93%;
|
|
44
|
+
--secondary-foreground: 219 58% 10%;
|
|
45
|
+
--muted: 219 30% 93%;
|
|
46
|
+
--muted-foreground: 219 20% 46%;
|
|
47
|
+
--accent: 17 50% 95%;
|
|
48
|
+
--accent-foreground: 219 58% 10%;
|
|
49
|
+
--destructive: 0 84.2% 60.2%;
|
|
50
|
+
--destructive-foreground: 0 0% 98%;
|
|
51
|
+
--border: 219 20% 91%;
|
|
52
|
+
--input: 219 20% 91%;
|
|
53
|
+
--ring: 17 100% 45%;
|
|
54
|
+
--chart-1: 17 100% 45%;
|
|
55
|
+
--chart-2: 173 58% 39%;
|
|
56
|
+
--chart-3: 197 37% 24%;
|
|
57
|
+
--chart-4: 43 74% 66%;
|
|
58
|
+
--chart-5: 27 87% 67%;
|
|
59
|
+
--radius: 0.5rem;
|
|
60
|
+
--sidebar-background: 0 0% 100%;
|
|
61
|
+
--sidebar-foreground: 219 58% 10%;
|
|
62
|
+
--sidebar-primary: 17 100% 45%;
|
|
63
|
+
--sidebar-primary-foreground: 219 58% 10%; /* #0b162A navy */
|
|
64
|
+
--sidebar-accent: 17 50% 95%;
|
|
65
|
+
--sidebar-accent-foreground: 219 58% 10%;
|
|
66
|
+
--sidebar-border: 219 20% 91%;
|
|
67
|
+
--sidebar-ring: 17 100% 45%;
|
|
68
|
+
--tooltip: 219 58% 10%;
|
|
69
|
+
--tooltip-foreground: 0 0% 98%;
|
|
70
|
+
}
|
|
71
|
+
.dark {
|
|
72
|
+
/* Dark: #0b162A bg, navy cards, orange primary (#E64100) */
|
|
73
|
+
--background: 219 58% 10%; /* #0b162A */
|
|
74
|
+
--foreground: 0 0% 98%;
|
|
75
|
+
--card: 219 40% 14%;
|
|
76
|
+
--card-foreground: 0 0% 98%;
|
|
77
|
+
--popover: 219 40% 14%;
|
|
78
|
+
--popover-foreground: 0 0% 98%;
|
|
79
|
+
--primary: 17 100% 45%; /* #E64100 */
|
|
80
|
+
--primary-foreground: 219 58% 10%; /* #0b162A navy */
|
|
81
|
+
--secondary: 219 40% 18%;
|
|
82
|
+
--secondary-foreground: 0 0% 98%;
|
|
83
|
+
--muted: 219 40% 18%;
|
|
84
|
+
--muted-foreground: 219 20% 65%;
|
|
85
|
+
--accent: 17 60% 18%;
|
|
86
|
+
--accent-foreground: 0 0% 98%;
|
|
87
|
+
--destructive: 0 62.8% 30.6%;
|
|
88
|
+
--destructive-foreground: 0 0% 98%;
|
|
89
|
+
--border: 219 30% 22%;
|
|
90
|
+
--input: 219 30% 22%;
|
|
91
|
+
--ring: 17 100% 45%;
|
|
92
|
+
--chart-1: 17 100% 45%;
|
|
93
|
+
--chart-2: 160 60% 45%;
|
|
94
|
+
--chart-3: 30 80% 55%;
|
|
95
|
+
--chart-4: 280 65% 60%;
|
|
96
|
+
--chart-5: 340 75% 55%;
|
|
97
|
+
--sidebar-background: 219 58% 10%;
|
|
98
|
+
--sidebar-foreground: 0 0% 98%;
|
|
99
|
+
--sidebar-primary: 17 100% 45%;
|
|
100
|
+
--sidebar-primary-foreground: 219 58% 10%; /* #0b162A navy */
|
|
101
|
+
--sidebar-accent: 17 60% 18%;
|
|
102
|
+
--sidebar-accent-foreground: 0 0% 98%;
|
|
103
|
+
--sidebar-border: 219 30% 22%;
|
|
104
|
+
--sidebar-ring: 17 100% 45%;
|
|
105
|
+
--tooltip: 219 40% 18%;
|
|
106
|
+
--tooltip-foreground: 0 0% 98%;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
@layer base {
|
|
111
|
+
* {
|
|
112
|
+
@apply border-border;
|
|
113
|
+
}
|
|
114
|
+
body {
|
|
115
|
+
@apply bg-background text-foreground;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sentry instrumentation - must run before any other imports.
|
|
3
|
+
* When VITE_SENTRY_DSN is unset, Sentry is disabled (no network calls).
|
|
4
|
+
*/
|
|
5
|
+
import * as Sentry from '@sentry/react';
|
|
6
|
+
|
|
7
|
+
const dsn = import.meta.env.VITE_SENTRY_DSN as string | undefined;
|
|
8
|
+
if (dsn) {
|
|
9
|
+
Sentry.init({
|
|
10
|
+
dsn,
|
|
11
|
+
environment: (import.meta.env.VITE_SENTRY_ENVIRONMENT as string) || import.meta.env.MODE || 'development',
|
|
12
|
+
integrations: [
|
|
13
|
+
Sentry.browserTracingIntegration(),
|
|
14
|
+
Sentry.replayIntegration({ maskAllText: true, blockAllMedia: true }),
|
|
15
|
+
],
|
|
16
|
+
tracesSampleRate: import.meta.env.PROD ? 0.1 : 1.0,
|
|
17
|
+
replaysSessionSampleRate: import.meta.env.PROD ? 0.1 : 0,
|
|
18
|
+
sendDefaultPii: false,
|
|
19
|
+
});
|
|
20
|
+
}
|