@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.
Files changed (120) hide show
  1. package/frontend/index.tsx +3 -3
  2. package/frontend/public/favicon.svg +1 -0
  3. package/frontend/public/slugbase_icon_blue.svg +1 -0
  4. package/frontend/public/slugbase_icon_white.png +0 -0
  5. package/frontend/public/slugbase_icon_white.svg +1 -0
  6. package/frontend/src/App.tsx +179 -0
  7. package/frontend/src/api/client.ts +134 -0
  8. package/frontend/src/components/AppSidebar.tsx +214 -0
  9. package/frontend/src/components/EmptyState.tsx +33 -0
  10. package/frontend/src/components/Favicon.tsx +76 -0
  11. package/frontend/src/components/FilterChips.tsx +60 -0
  12. package/frontend/src/components/FolderIcon.tsx +207 -0
  13. package/frontend/src/components/GlobalSearch.tsx +275 -0
  14. package/frontend/src/components/Layout.tsx +60 -0
  15. package/frontend/src/components/PageHeader.tsx +31 -0
  16. package/frontend/src/components/ScopeSegmentedControl.tsx +42 -0
  17. package/frontend/src/components/SentryDebug.tsx +32 -0
  18. package/frontend/src/components/StatCard.tsx +66 -0
  19. package/frontend/src/components/TopBar.tsx +63 -0
  20. package/frontend/src/components/UserDropdown.tsx +86 -0
  21. package/frontend/src/components/admin/AdminAI.tsx +207 -0
  22. package/frontend/src/components/admin/AdminOIDCProviders.tsx +183 -0
  23. package/frontend/src/components/admin/AdminSettings.tsx +413 -0
  24. package/frontend/src/components/admin/AdminTeams.tsx +177 -0
  25. package/frontend/src/components/admin/AdminUsers.tsx +225 -0
  26. package/frontend/src/components/bookmarks/BookmarkCard.tsx +312 -0
  27. package/frontend/src/components/bookmarks/BookmarkListItem.tsx +159 -0
  28. package/frontend/src/components/bookmarks/BookmarkTableView.tsx +419 -0
  29. package/frontend/src/components/bookmarks/BulkActionModals.tsx +162 -0
  30. package/frontend/src/components/bookmarks/FilterChips.tsx +5 -0
  31. package/frontend/src/components/modals/BookmarkModal.tsx +493 -0
  32. package/frontend/src/components/modals/FolderModal.tsx +306 -0
  33. package/frontend/src/components/modals/ImportModal.tsx +232 -0
  34. package/frontend/src/components/modals/OIDCProviderModal.tsx +284 -0
  35. package/frontend/src/components/modals/SharingModal.tsx +96 -0
  36. package/frontend/src/components/modals/TagModal.tsx +101 -0
  37. package/frontend/src/components/modals/TeamAssignmentModal.tsx +354 -0
  38. package/frontend/src/components/modals/TeamModal.tsx +117 -0
  39. package/frontend/src/components/modals/UserModal.tsx +225 -0
  40. package/frontend/src/components/profile/CreateTokenModal.tsx +172 -0
  41. package/frontend/src/components/sharing/ShareResourceDialog.tsx +422 -0
  42. package/frontend/src/components/ui/Autocomplete.tsx +155 -0
  43. package/frontend/src/components/ui/Button.tsx +68 -0
  44. package/frontend/src/components/ui/ConfirmDialog.tsx +79 -0
  45. package/frontend/src/components/ui/FormFieldWrapper.tsx +36 -0
  46. package/frontend/src/components/ui/ModalFooterActions.tsx +49 -0
  47. package/frontend/src/components/ui/ModalSection.tsx +34 -0
  48. package/frontend/src/components/ui/PageLoadingSkeleton.tsx +24 -0
  49. package/frontend/src/components/ui/Select.tsx +61 -0
  50. package/frontend/src/components/ui/SharingField.tsx +298 -0
  51. package/frontend/src/components/ui/Toast.tsx +47 -0
  52. package/frontend/src/components/ui/Tooltip.tsx +21 -0
  53. package/frontend/src/components/ui/alert-dialog.tsx +139 -0
  54. package/frontend/src/components/ui/badge.tsx +36 -0
  55. package/frontend/src/components/ui/button-base.tsx +57 -0
  56. package/frontend/src/components/ui/card.tsx +76 -0
  57. package/frontend/src/components/ui/command.tsx +161 -0
  58. package/frontend/src/components/ui/dialog.tsx +120 -0
  59. package/frontend/src/components/ui/dropdown-menu.tsx +199 -0
  60. package/frontend/src/components/ui/input.tsx +22 -0
  61. package/frontend/src/components/ui/label.tsx +24 -0
  62. package/frontend/src/components/ui/popover.tsx +33 -0
  63. package/frontend/src/components/ui/progress.tsx +26 -0
  64. package/frontend/src/components/ui/scroll-area.tsx +48 -0
  65. package/frontend/src/components/ui/select-base.tsx +159 -0
  66. package/frontend/src/components/ui/separator.tsx +29 -0
  67. package/frontend/src/components/ui/sheet.tsx +140 -0
  68. package/frontend/src/components/ui/sidebar.tsx +783 -0
  69. package/frontend/src/components/ui/skeleton.tsx +15 -0
  70. package/frontend/src/components/ui/sonner.tsx +46 -0
  71. package/frontend/src/components/ui/switch.tsx +28 -0
  72. package/frontend/src/components/ui/table.tsx +120 -0
  73. package/frontend/src/components/ui/tooltip-base.tsx +30 -0
  74. package/frontend/src/config/api.ts +16 -0
  75. package/frontend/src/config/mode.ts +6 -0
  76. package/frontend/src/contexts/AppConfigContext.tsx +39 -0
  77. package/frontend/src/contexts/AuthContext.tsx +137 -0
  78. package/frontend/src/contexts/SearchCommandContext.tsx +28 -0
  79. package/frontend/src/hooks/use-mobile.tsx +19 -0
  80. package/frontend/src/hooks/useConfirmDialog.ts +63 -0
  81. package/frontend/src/hooks/useMarketingTheme.ts +47 -0
  82. package/frontend/src/i18n.ts +39 -0
  83. package/frontend/src/index.css +117 -0
  84. package/frontend/src/instrument.ts +20 -0
  85. package/frontend/src/lib/utils.ts +6 -0
  86. package/frontend/src/locales/de.json +899 -0
  87. package/frontend/src/locales/en.json +937 -0
  88. package/frontend/src/locales/es.json +884 -0
  89. package/frontend/src/locales/fr.json +550 -0
  90. package/frontend/src/locales/it.json +535 -0
  91. package/frontend/src/locales/ja.json +535 -0
  92. package/frontend/src/locales/nl.json +550 -0
  93. package/frontend/src/locales/pl.json +535 -0
  94. package/frontend/src/locales/pt.json +535 -0
  95. package/frontend/src/locales/ru.json +535 -0
  96. package/frontend/src/locales/zh.json +535 -0
  97. package/frontend/src/main.tsx +44 -0
  98. package/frontend/src/pages/Bookmarks.tsx +1004 -0
  99. package/frontend/src/pages/Dashboard.tsx +427 -0
  100. package/frontend/src/pages/Folders.tsx +578 -0
  101. package/frontend/src/pages/GoPreferences.tsx +134 -0
  102. package/frontend/src/pages/Login.tsx +196 -0
  103. package/frontend/src/pages/PasswordReset.tsx +242 -0
  104. package/frontend/src/pages/Profile.tsx +593 -0
  105. package/frontend/src/pages/SearchEngineGuide.tsx +135 -0
  106. package/frontend/src/pages/Setup.tsx +210 -0
  107. package/frontend/src/pages/Signup.tsx +199 -0
  108. package/frontend/src/pages/Tags.tsx +421 -0
  109. package/frontend/src/pages/VerifyEmail.tsx +254 -0
  110. package/frontend/src/pages/admin/AdminAIPage.tsx +5 -0
  111. package/frontend/src/pages/admin/AdminLayout.tsx +40 -0
  112. package/frontend/src/pages/admin/AdminMembersPage.tsx +5 -0
  113. package/frontend/src/pages/admin/AdminOIDCPage.tsx +5 -0
  114. package/frontend/src/pages/admin/AdminSettingsPage.tsx +5 -0
  115. package/frontend/src/pages/admin/AdminTeamsPage.tsx +5 -0
  116. package/frontend/src/utils/favicon.ts +36 -0
  117. package/frontend/src/utils/formatRelativeTime.ts +37 -0
  118. package/frontend/src/utils/safeHref.ts +31 -0
  119. package/frontend/src/vite-env.d.ts +10 -0
  120. 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
+ }
@@ -0,0 +1,6 @@
1
+ import { clsx, type ClassValue } from "clsx"
2
+ import { twMerge } from "tailwind-merge"
3
+
4
+ export function cn(...inputs: ClassValue[]) {
5
+ return twMerge(clsx(inputs))
6
+ }