@dyrected/admin 2.0.1 → 2.4.1

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 (168) hide show
  1. package/dist/App.d.ts +1 -0
  2. package/dist/admin.css +2 -0
  3. package/dist/components/auth/auth-gate.d.ts +13 -0
  4. package/dist/components/error-boundary.d.ts +16 -0
  5. package/dist/components/forms/field-renderer.d.ts +22 -0
  6. package/dist/components/forms/fields/block-builder.d.ts +9 -0
  7. package/dist/components/forms/fields/date-picker.d.ts +8 -0
  8. package/dist/components/forms/fields/json-editor.d.ts +8 -0
  9. package/dist/components/forms/fields/media-picker.d.ts +12 -0
  10. package/dist/components/forms/fields/multi-select.d.ts +19 -0
  11. package/dist/components/forms/fields/radio-field.d.ts +8 -0
  12. package/dist/components/forms/fields/relationship-picker.d.ts +10 -0
  13. package/dist/components/forms/fields/rich-text-editor.d.ts +9 -0
  14. package/dist/components/forms/fields/select-field.d.ts +8 -0
  15. package/dist/components/forms/fields/switch-field.d.ts +6 -0
  16. package/dist/components/forms/fields/text-area-field.d.ts +8 -0
  17. package/dist/components/forms/fields/text-field.d.ts +8 -0
  18. package/dist/components/forms/form-engine.d.ts +14 -0
  19. package/dist/components/forms/form-field-renderer.d.ts +20 -0
  20. package/dist/components/forms/utils.d.ts +11 -0
  21. package/dist/components/layout/admin-shell.d.ts +5 -0
  22. package/dist/components/layout/branding-provider.d.ts +4 -0
  23. package/dist/components/live-preview/LivePreviewPane.d.ts +7 -0
  24. package/dist/components/media/focal-point-picker.d.ts +12 -0
  25. package/dist/components/media/media-card.d.ts +8 -0
  26. package/dist/components/media/media-grid.d.ts +8 -0
  27. package/dist/components/media/media-library-dialog.d.ts +11 -0
  28. package/dist/components/ui/aspect-ratio.d.ts +3 -0
  29. package/dist/components/ui/badge.d.ts +9 -0
  30. package/dist/components/ui/button.d.ts +11 -0
  31. package/dist/components/ui/calendar.d.ts +8 -0
  32. package/dist/components/ui/card.d.ts +8 -0
  33. package/dist/components/ui/checkbox.d.ts +4 -0
  34. package/dist/components/ui/command.d.ts +80 -0
  35. package/dist/components/ui/data-table.d.ts +14 -0
  36. package/dist/components/ui/dialog.d.ts +19 -0
  37. package/dist/components/ui/dropdown-menu.d.ts +27 -0
  38. package/dist/components/ui/form.d.ts +23 -0
  39. package/dist/components/ui/input.d.ts +3 -0
  40. package/dist/components/ui/label.d.ts +5 -0
  41. package/dist/components/ui/page-header.d.ts +10 -0
  42. package/dist/components/ui/pagination.d.ts +11 -0
  43. package/dist/components/ui/popover.d.ts +6 -0
  44. package/dist/components/ui/progress.d.ts +4 -0
  45. package/dist/components/ui/radio-group.d.ts +5 -0
  46. package/dist/components/ui/render-cell.d.ts +8 -0
  47. package/dist/components/ui/scroll-area.d.ts +5 -0
  48. package/dist/components/ui/select.d.ts +13 -0
  49. package/dist/components/ui/separator.d.ts +4 -0
  50. package/dist/components/ui/sheet.d.ts +25 -0
  51. package/dist/components/ui/sidebar.d.ts +65 -0
  52. package/dist/components/ui/skeleton.d.ts +2 -0
  53. package/dist/components/ui/sonner.d.ts +4 -0
  54. package/dist/components/ui/switch.d.ts +4 -0
  55. package/dist/components/ui/table.d.ts +10 -0
  56. package/dist/components/ui/tabs.d.ts +7 -0
  57. package/dist/components/ui/textarea.d.ts +3 -0
  58. package/dist/components/ui/toggle.d.ts +12 -0
  59. package/dist/components/ui/tooltip.d.ts +7 -0
  60. package/dist/hooks/use-mobile.d.ts +1 -0
  61. package/dist/hooks/use-preferences.d.ts +6 -0
  62. package/dist/index.d.ts +38 -0
  63. package/dist/index.mjs +69091 -0
  64. package/dist/lib/utils.d.ts +3 -0
  65. package/dist/main.d.ts +0 -0
  66. package/dist/pages/auth/first-user-page.d.ts +4 -0
  67. package/dist/pages/auth/login-page.d.ts +4 -0
  68. package/dist/pages/collections/edit-page.d.ts +1 -0
  69. package/dist/pages/collections/list-page.d.ts +5 -0
  70. package/dist/pages/dashboard/dashboard.d.ts +1 -0
  71. package/dist/pages/globals/editor-page.d.ts +1 -0
  72. package/dist/pages/media/media-page.d.ts +4 -0
  73. package/dist/pages/setup/setup-prompt.d.ts +6 -0
  74. package/dist/providers/dyrected-provider.d.ts +29 -0
  75. package/dist/providers/query-provider.d.ts +3 -0
  76. package/package.json +7 -4
  77. package/CHANGELOG.md +0 -124
  78. package/components.json +0 -17
  79. package/eslint.config.js +0 -22
  80. package/index.html +0 -13
  81. package/postcss.config.js +0 -6
  82. package/src/App.css +0 -184
  83. package/src/App.tsx +0 -25
  84. package/src/assets/dyrected.svg +0 -155
  85. package/src/assets/hero.png +0 -0
  86. package/src/assets/react.svg +0 -1
  87. package/src/assets/vite.svg +0 -1
  88. package/src/components/auth/auth-gate.tsx +0 -64
  89. package/src/components/error-boundary.tsx +0 -45
  90. package/src/components/forms/field-renderer.tsx +0 -111
  91. package/src/components/forms/fields/block-builder.tsx +0 -213
  92. package/src/components/forms/fields/date-picker.tsx +0 -60
  93. package/src/components/forms/fields/json-editor.tsx +0 -62
  94. package/src/components/forms/fields/media-picker.tsx +0 -286
  95. package/src/components/forms/fields/multi-select.tsx +0 -145
  96. package/src/components/forms/fields/radio-field.tsx +0 -51
  97. package/src/components/forms/fields/relationship-picker.tsx +0 -143
  98. package/src/components/forms/fields/rich-text-editor.tsx +0 -224
  99. package/src/components/forms/fields/select-field.tsx +0 -35
  100. package/src/components/forms/fields/switch-field.tsx +0 -16
  101. package/src/components/forms/fields/text-area-field.tsx +0 -15
  102. package/src/components/forms/fields/text-field.tsx +0 -24
  103. package/src/components/forms/form-engine.tsx +0 -87
  104. package/src/components/forms/form-field-renderer.tsx +0 -269
  105. package/src/components/forms/utils.ts +0 -97
  106. package/src/components/layout/admin-shell.tsx +0 -479
  107. package/src/components/layout/branding-provider.tsx +0 -112
  108. package/src/components/live-preview/LivePreviewPane.tsx +0 -128
  109. package/src/components/media/focal-point-picker.tsx +0 -66
  110. package/src/components/media/media-card.tsx +0 -44
  111. package/src/components/media/media-grid.tsx +0 -32
  112. package/src/components/media/media-library-dialog.tsx +0 -465
  113. package/src/components/ui/aspect-ratio.tsx +0 -7
  114. package/src/components/ui/badge.tsx +0 -36
  115. package/src/components/ui/button.tsx +0 -56
  116. package/src/components/ui/calendar.tsx +0 -214
  117. package/src/components/ui/card.tsx +0 -79
  118. package/src/components/ui/checkbox.tsx +0 -28
  119. package/src/components/ui/command.tsx +0 -151
  120. package/src/components/ui/data-table.tsx +0 -219
  121. package/src/components/ui/dialog.tsx +0 -122
  122. package/src/components/ui/dropdown-menu.tsx +0 -200
  123. package/src/components/ui/form.tsx +0 -178
  124. package/src/components/ui/input.tsx +0 -24
  125. package/src/components/ui/label.tsx +0 -24
  126. package/src/components/ui/page-header.tsx +0 -30
  127. package/src/components/ui/pagination.tsx +0 -57
  128. package/src/components/ui/popover.tsx +0 -29
  129. package/src/components/ui/progress.tsx +0 -26
  130. package/src/components/ui/radio-group.tsx +0 -42
  131. package/src/components/ui/render-cell.tsx +0 -110
  132. package/src/components/ui/scroll-area.tsx +0 -46
  133. package/src/components/ui/select.tsx +0 -160
  134. package/src/components/ui/separator.tsx +0 -29
  135. package/src/components/ui/sheet.tsx +0 -140
  136. package/src/components/ui/sidebar.tsx +0 -771
  137. package/src/components/ui/skeleton.tsx +0 -15
  138. package/src/components/ui/sonner.tsx +0 -27
  139. package/src/components/ui/switch.tsx +0 -27
  140. package/src/components/ui/table.tsx +0 -117
  141. package/src/components/ui/tabs.tsx +0 -53
  142. package/src/components/ui/textarea.tsx +0 -22
  143. package/src/components/ui/toggle.tsx +0 -43
  144. package/src/components/ui/tooltip.tsx +0 -28
  145. package/src/hooks/use-mobile.tsx +0 -19
  146. package/src/hooks/use-preferences.ts +0 -56
  147. package/src/index.css +0 -111
  148. package/src/index.tsx +0 -198
  149. package/src/lib/utils.ts +0 -32
  150. package/src/main.tsx +0 -10
  151. package/src/pages/auth/first-user-page.tsx +0 -115
  152. package/src/pages/auth/login-page.tsx +0 -91
  153. package/src/pages/collections/edit-page.tsx +0 -280
  154. package/src/pages/collections/list-page.tsx +0 -343
  155. package/src/pages/dashboard/dashboard.tsx +0 -150
  156. package/src/pages/globals/editor-page.tsx +0 -122
  157. package/src/pages/media/media-page.tsx +0 -564
  158. package/src/pages/setup/setup-prompt.tsx +0 -181
  159. package/src/providers/dyrected-provider.tsx +0 -122
  160. package/src/providers/query-provider.tsx +0 -19
  161. package/src/types/jexl.d.ts +0 -11
  162. package/tailwind.config.ts +0 -102
  163. package/tsconfig.app.json +0 -28
  164. package/tsconfig.json +0 -12
  165. package/tsconfig.node.json +0 -25
  166. package/vite.config.ts +0 -40
  167. /package/{public → dist}/favicon.svg +0 -0
  168. /package/{public → dist}/icons.svg +0 -0
@@ -0,0 +1,3 @@
1
+ import { ClassValue } from 'clsx';
2
+ export declare function cn(...inputs: ClassValue[]): string;
3
+ export declare function getMediaUrl(val: string | any, baseUrl: string): any;
package/dist/main.d.ts ADDED
File without changes
@@ -0,0 +1,4 @@
1
+ export declare function FirstUserPage({ collectionSlug, onComplete }: {
2
+ collectionSlug: string;
3
+ onComplete: (data: any) => void;
4
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,4 @@
1
+ export declare function LoginPage({ collectionSlug, onLogin }: {
2
+ collectionSlug: string;
3
+ onLogin: (data: any) => void;
4
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ export declare function EditEntryPage(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,5 @@
1
+ interface CollectionListPageProps {
2
+ slug: string;
3
+ }
4
+ export declare function CollectionListPage({ slug }: CollectionListPageProps): import("react/jsx-runtime").JSX.Element;
5
+ export {};
@@ -0,0 +1 @@
1
+ export declare function Dashboard(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ export declare function GlobalEditorPage(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,4 @@
1
+ export declare function MediaPage({ collectionSlug, schema }: {
2
+ collectionSlug?: string;
3
+ schema?: any;
4
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,6 @@
1
+ import { SetupPromptConfig } from '@dyrected/sdk';
2
+ export type { SetupPromptConfig };
3
+ export interface SetupPromptProps {
4
+ config: SetupPromptConfig;
5
+ }
6
+ export declare function SetupPromptUI({ config }: SetupPromptProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,29 @@
1
+ import { default as React } from 'react';
2
+ import { DyrectedClient } from '@dyrected/sdk';
3
+ interface DyrectedContextType {
4
+ client: DyrectedClient | null;
5
+ config: {
6
+ baseUrl: string;
7
+ apiKey: string | undefined;
8
+ siteId: string | undefined;
9
+ };
10
+ setAuth: (baseUrl: string, apiKey: string, siteId?: string) => void;
11
+ logout: () => void;
12
+ isAuthenticated: boolean;
13
+ schemas: {
14
+ collections: any[];
15
+ globals: any[];
16
+ admin?: any;
17
+ } | null;
18
+ user: any | null;
19
+ setToken: (token: string) => void;
20
+ }
21
+ export interface DyrectedProviderProps {
22
+ children: React.ReactNode;
23
+ apiKey?: string;
24
+ baseUrl?: string;
25
+ siteId?: string;
26
+ }
27
+ export declare function DyrectedProvider({ children, apiKey: initialApiKey, baseUrl: initialBaseUrl, siteId: initialSiteId }: DyrectedProviderProps): import("react/jsx-runtime").JSX.Element;
28
+ export declare const useDyrected: () => DyrectedContextType;
29
+ export {};
@@ -0,0 +1,3 @@
1
+ export declare function QueryProvider({ children }: {
2
+ children: React.ReactNode;
3
+ }): import("react/jsx-runtime").JSX.Element;
package/package.json CHANGED
@@ -1,7 +1,10 @@
1
1
  {
2
2
  "name": "@dyrected/admin",
3
- "version": "2.0.1",
3
+ "version": "2.4.1",
4
4
  "type": "module",
5
+ "files": [
6
+ "dist"
7
+ ],
5
8
  "main": "./dist/index.mjs",
6
9
  "module": "./dist/index.mjs",
7
10
  "types": "./dist/index.d.ts",
@@ -60,8 +63,8 @@
60
63
  "tailwind-merge": "^3.5.0",
61
64
  "tailwindcss-animate": "^1.0.7",
62
65
  "zod": "^3.25.76",
63
- "@dyrected/core": "^2.1.0",
64
- "@dyrected/sdk": "^2.0.0"
66
+ "@dyrected/sdk": "^2.4.0",
67
+ "@dyrected/core": "^2.4.0"
65
68
  },
66
69
  "devDependencies": {
67
70
  "@eslint/js": "^10.0.1",
@@ -76,7 +79,7 @@
76
79
  "globals": "^17.5.0",
77
80
  "postcss": "^8.5.14",
78
81
  "tailwindcss": "^3.4.19",
79
- "typescript": "~6.0.2",
82
+ "typescript": "^5.7.3",
80
83
  "typescript-eslint": "^8.58.2",
81
84
  "vite": "^8.0.10",
82
85
  "vite-plugin-dts": "^5.0.0",
package/CHANGELOG.md DELETED
@@ -1,124 +0,0 @@
1
- # @dyrected/admin
2
-
3
- ## 2.0.1
4
-
5
- ### Patch Changes
6
-
7
- - 220818c: ### @dyrected/core
8
- - **New Discovery Workflow**: Refined the AI setup prompt with a multi-step "Phase 0" discovery process to improve initial project scoping.
9
- - **Nomenclature Standardization**: Updated all system prompts to use "Nuxt.js" nomenclature and improved schema definition examples.
10
-
11
- ### @dyrected/db-postgres & @dyrected/db-sqlite
12
- - **Architecture Documentation**: Added source-level documentation explaining the use of raw SQL drivers (postgres.js/better-sqlite3) alongside Drizzle to support dynamic runtime schemas.
13
-
14
- ### @dyrected/admin
15
- - **Internal Maintenance**: Synchronized internal documentation and field renderer context to support the latest core setup workflows.
16
-
17
- - Updated dependencies [220818c]
18
- - @dyrected/core@2.1.0
19
-
20
- ## 2.0.0
21
-
22
- ### Major Changes
23
-
24
- - Updated all storage adapters to support `Uint8Array` buffers and file prefixing.
25
- - **Storage API Update**: The `buffer` parameter in `StorageAdapter.upload` and `resolve` now expects a `Uint8Array` instead of a Node.js `Buffer`. This ensures better compatibility across different JavaScript environments.
26
- - **File Prefixing**: Added support for an optional `prefix` parameter in `StorageAdapter.upload` to allow organizing files into subfolders or prefixes (supported by Cloudinary, S3, B2, and Local storage).
27
- - **Alignment**: Standardized `CloudinaryStorageAdapter`, `LocalStorageAdapter`, `S3StorageAdapter`, and `B2StorageAdapter` to strictly follow the `@dyrected/core` interface.
28
-
29
- ### Patch Changes
30
-
31
- - Updated dependencies
32
- - @dyrected/core@2.0.0
33
- - @dyrected/sdk@2.0.0
34
-
35
- ## 1.0.9
36
-
37
- ### Patch Changes
38
-
39
- - d8e1f29: bump package versions and update export conditions for admin package
40
- - Updated dependencies [d8e1f29]
41
- - @dyrected/core@1.0.9
42
- - @dyrected/sdk@1.0.9
43
-
44
- ## 1.0.6
45
-
46
- ### Patch Changes
47
-
48
- - Add functional exports for all database and storage adapters (e.g., mongodbAdapter, sqliteAdapter, s3Storage) to provide a more ergonomic API and fix runtime re-attachment errors in Nuxt.
49
- - Updated dependencies
50
- - @dyrected/core@1.0.7
51
- - @dyrected/sdk@1.0.5
52
-
53
- ## 1.0.5
54
-
55
- ### Patch Changes
56
-
57
- - Standardize framework integrations for Next.js and Nuxt. Refactor AI setup prompt into a Senior Content Architect mission with explicit architecture and discovery requirements. Fix CLI Nuxt template for zero-import architecture.
58
- - Updated dependencies
59
- - @dyrected/core@1.0.6
60
- - @dyrected/sdk@1.0.4
61
-
62
- ## 1.0.4
63
-
64
- ### Patch Changes
65
-
66
- - Standardized environment variable handling across Next.js and Nuxt (prioritizing `NEXT_PUBLIC_` and `NUXT_PUBLIC_` prefixes).
67
- Improved CLI initialization flow by saving AI setup prompts to `dyrected-ai-prompt.md` and refining the framework-specific setup instructions.
68
- Fixed type emission and dependency exports for `@dyrected/admin` to ensure stable builds in consuming applications.
69
- Added a drop-in `DyrectedAdmin` component for Next.js.
70
- Updated documentation with clearer self-hosted and cloud integration steps.
71
- - Updated dependencies
72
- - @dyrected/core@1.0.4
73
-
74
- ## 1.0.3
75
-
76
- ### Patch Changes
77
-
78
- - Standardized environment variable handling across Next.js and Nuxt integrations.
79
- - CLI now generates .env templates with framework-specific prefixes (NEXT*PUBLIC* / NUXT*PUBLIC*).
80
- - Next.js and Nuxt clients automatically resolve these prefixed variables for client-side use.
81
- - Added a dedicated `@dyrected/next/admin` component for easy dashboard embedding in Next.js.
82
- - Fixed TypeScript type generation for the Admin UI package.
83
- - Updated dependencies
84
- - @dyrected/core@1.0.3
85
- - @dyrected/sdk@1.0.3
86
-
87
- ## 1.0.1
88
-
89
- ### Patch Changes
90
-
91
- - bfc3468: Initial public release of the Dyrected CMS ecosystem.
92
- - Updated dependencies [bfc3468]
93
- - @dyrected/core@1.0.1
94
- - @dyrected/sdk@1.0.1
95
-
96
- ## 1.0.0
97
-
98
- ### Major Changes
99
-
100
- - 00f9439: Initial major release of the Dyrected CMS ecosystem. This release establishes the core monorepo architecture, featuring a flexible CMS engine, a premium React-based Admin UI with warm light aesthetics, and native Next.js/Nuxt integrations. Key highlights include Jexl-based RBAC, a specialized media library with S3/Cloudinary support, live preview, automated audit trails, and a separated auth model for enhanced security.
101
-
102
- ### Breaking Changes
103
-
104
- **WHAT:**
105
- - Renamed `createApp` to `createDyrectedApp` across all core and framework packages.
106
- - Removed the hardcoded `/api` prefix from internal routing logic; API paths now default to the handler root or are controlled via `apiPrefix` config.
107
- - Administrative users are now isolated in a reserved `__admins` collection by default.
108
- - Standardized database adapter return types to ensure consistent ID handling across SQL and NoSQL providers.
109
-
110
- **WHY:**
111
- - The rename prevents naming collisions with native framework initializers (like Vue's `createApp`).
112
- - Decoupling the `/api` prefix provides better compatibility with Next.js/Nuxt server routes and custom proxy configurations.
113
- - The `__admins` separation ensures system-level security isolation from application-level user data.
114
-
115
- **HOW:**
116
- - Update your server entry points to use the new `createDyrectedApp` factory function.
117
- - If you have custom integrations targeting internal endpoints, ensure your base URL paths are updated to reflect the removal of the mandatory `/api` prefix.
118
- - If upgrading an existing installation, migrate your administrative users from the `users` collection to the new `__admins` collection.
119
-
120
- ### Patch Changes
121
-
122
- - Updated dependencies [00f9439]
123
- - @dyrected/core@1.0.0
124
- - @dyrected/sdk@1.0.0
package/components.json DELETED
@@ -1,17 +0,0 @@
1
- {
2
- "$schema": "https://ui.shadcn.com/schema.json",
3
- "style": "default",
4
- "rsc": false,
5
- "tsx": true,
6
- "tailwind": {
7
- "config": "tailwind.config.ts",
8
- "css": "src/index.css",
9
- "baseColor": "slate",
10
- "cssVariables": true,
11
- "prefix": ""
12
- },
13
- "aliases": {
14
- "components": "@/components",
15
- "utils": "@/lib/utils"
16
- }
17
- }
package/eslint.config.js DELETED
@@ -1,22 +0,0 @@
1
- import js from '@eslint/js'
2
- import globals from 'globals'
3
- import reactHooks from 'eslint-plugin-react-hooks'
4
- import reactRefresh from 'eslint-plugin-react-refresh'
5
- import tseslint from 'typescript-eslint'
6
- import { defineConfig, globalIgnores } from 'eslint/config'
7
-
8
- export default defineConfig([
9
- globalIgnores(['dist']),
10
- {
11
- files: ['**/*.{ts,tsx}'],
12
- extends: [
13
- js.configs.recommended,
14
- tseslint.configs.recommended,
15
- reactHooks.configs.flat.recommended,
16
- reactRefresh.configs.vite,
17
- ],
18
- languageOptions: {
19
- globals: globals.browser,
20
- },
21
- },
22
- ])
package/index.html DELETED
@@ -1,13 +0,0 @@
1
- <!doctype html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8" />
5
- <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
6
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
- <title>admin</title>
8
- </head>
9
- <body>
10
- <div id="root"></div>
11
- <script type="module" src="/src/main.tsx"></script>
12
- </body>
13
- </html>
package/postcss.config.js DELETED
@@ -1,6 +0,0 @@
1
- export default {
2
- plugins: {
3
- tailwindcss: {},
4
- autoprefixer: {},
5
- },
6
- }
package/src/App.css DELETED
@@ -1,184 +0,0 @@
1
- .counter {
2
- font-size: 16px;
3
- padding: 5px 10px;
4
- border-radius: 5px;
5
- color: var(--accent);
6
- background: var(--accent-bg);
7
- border: 2px solid transparent;
8
- transition: border-color 0.3s;
9
- margin-bottom: 24px;
10
-
11
- &:hover {
12
- border-color: var(--accent-border);
13
- }
14
- &:focus-visible {
15
- outline: 2px solid var(--accent);
16
- outline-offset: 2px;
17
- }
18
- }
19
-
20
- .hero {
21
- position: relative;
22
-
23
- .base,
24
- .framework,
25
- .vite {
26
- inset-inline: 0;
27
- margin: 0 auto;
28
- }
29
-
30
- .base {
31
- width: 170px;
32
- position: relative;
33
- z-index: 0;
34
- }
35
-
36
- .framework,
37
- .vite {
38
- position: absolute;
39
- }
40
-
41
- .framework {
42
- z-index: 1;
43
- top: 34px;
44
- height: 28px;
45
- transform: perspective(2000px) rotateZ(300deg) rotateX(44deg) rotateY(39deg)
46
- scale(1.4);
47
- }
48
-
49
- .vite {
50
- z-index: 0;
51
- top: 107px;
52
- height: 26px;
53
- width: auto;
54
- transform: perspective(2000px) rotateZ(300deg) rotateX(40deg) rotateY(39deg)
55
- scale(0.8);
56
- }
57
- }
58
-
59
- #center {
60
- display: flex;
61
- flex-direction: column;
62
- gap: 25px;
63
- place-content: center;
64
- place-items: center;
65
- flex-grow: 1;
66
-
67
- @media (max-width: 1024px) {
68
- padding: 32px 20px 24px;
69
- gap: 18px;
70
- }
71
- }
72
-
73
- #next-steps {
74
- display: flex;
75
- border-top: 1px solid var(--border);
76
- text-align: left;
77
-
78
- & > div {
79
- flex: 1 1 0;
80
- padding: 32px;
81
- @media (max-width: 1024px) {
82
- padding: 24px 20px;
83
- }
84
- }
85
-
86
- .icon {
87
- margin-bottom: 16px;
88
- width: 22px;
89
- height: 22px;
90
- }
91
-
92
- @media (max-width: 1024px) {
93
- flex-direction: column;
94
- text-align: center;
95
- }
96
- }
97
-
98
- #docs {
99
- border-right: 1px solid var(--border);
100
-
101
- @media (max-width: 1024px) {
102
- border-right: none;
103
- border-bottom: 1px solid var(--border);
104
- }
105
- }
106
-
107
- #next-steps ul {
108
- list-style: none;
109
- padding: 0;
110
- display: flex;
111
- gap: 8px;
112
- margin: 32px 0 0;
113
-
114
- .logo {
115
- height: 18px;
116
- }
117
-
118
- a {
119
- color: var(--text-h);
120
- font-size: 16px;
121
- border-radius: 6px;
122
- background: var(--social-bg);
123
- display: flex;
124
- padding: 6px 12px;
125
- align-items: center;
126
- gap: 8px;
127
- text-decoration: none;
128
- transition: box-shadow 0.3s;
129
-
130
- &:hover {
131
- box-shadow: var(--shadow);
132
- }
133
- .button-icon {
134
- height: 18px;
135
- width: 18px;
136
- }
137
- }
138
-
139
- @media (max-width: 1024px) {
140
- margin-top: 20px;
141
- flex-wrap: wrap;
142
- justify-content: center;
143
-
144
- li {
145
- flex: 1 1 calc(50% - 8px);
146
- }
147
-
148
- a {
149
- width: 100%;
150
- justify-content: center;
151
- box-sizing: border-box;
152
- }
153
- }
154
- }
155
-
156
- #spacer {
157
- height: 88px;
158
- border-top: 1px solid var(--border);
159
- @media (max-width: 1024px) {
160
- height: 48px;
161
- }
162
- }
163
-
164
- .ticks {
165
- position: relative;
166
- width: 100%;
167
-
168
- &::before,
169
- &::after {
170
- content: '';
171
- position: absolute;
172
- top: -4.5px;
173
- border: 5px solid transparent;
174
- }
175
-
176
- &::before {
177
- left: 0;
178
- border-left-color: var(--border);
179
- }
180
- &::after {
181
- right: 0;
182
- border-right-color: var(--border);
183
- }
184
- }
package/src/App.tsx DELETED
@@ -1,25 +0,0 @@
1
- /**
2
- * Dev-only entry point (used by main.tsx / vite dev server).
3
- * For production embedding use `AdminUI` from `@dyrected/admin`.
4
- *
5
- * Credentials here are local dev defaults — override with env vars
6
- * or a .env.local file:
7
- * VITE_API_URL=http://localhost:3000
8
- * VITE_API_KEY=your_api_key
9
- * VITE_SITE_ID=your_site_id
10
- */
11
- import { AdminStandalone } from "./index";
12
-
13
- const apiUrl = import.meta.env.VITE_API_URL ?? "http://localhost:3000";
14
- const apiKey = import.meta.env.VITE_API_KEY ?? "";
15
- const siteId = import.meta.env.VITE_SITE_ID ?? undefined;
16
-
17
- export default function App() {
18
- return (
19
- <AdminStandalone
20
- baseUrl={apiUrl}
21
- apiKey={apiKey}
22
- siteId={siteId}
23
- />
24
- );
25
- }