@aphexcms/cms-core 0.1.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.
Files changed (104) hide show
  1. package/dist/is-mobile.svelte.d.ts +5 -0
  2. package/dist/is-mobile.svelte.d.ts.map +1 -0
  3. package/dist/is-mobile.svelte.js +7 -0
  4. package/dist/utils.d.ts +13 -0
  5. package/dist/utils.d.ts.map +1 -0
  6. package/dist/utils.js +5 -0
  7. package/package.json +99 -0
  8. package/src/api/assets.ts +75 -0
  9. package/src/api/client.ts +150 -0
  10. package/src/api/documents.ts +102 -0
  11. package/src/api/index.ts +7 -0
  12. package/src/api/organizations.ts +154 -0
  13. package/src/api/types.ts +34 -0
  14. package/src/app.d.ts +19 -0
  15. package/src/auth/MULTI_TENANCY_PLAN.md +1183 -0
  16. package/src/auth/auth-errors.ts +23 -0
  17. package/src/auth/auth-hooks.ts +132 -0
  18. package/src/auth/provider.ts +25 -0
  19. package/src/client/index.ts +47 -0
  20. package/src/components/AdminApp.svelte +1078 -0
  21. package/src/components/admin/AdminLayout.svelte +115 -0
  22. package/src/components/admin/DocumentEditor.svelte +795 -0
  23. package/src/components/admin/DocumentTypesList.svelte +97 -0
  24. package/src/components/admin/ObjectModal.svelte +135 -0
  25. package/src/components/admin/SchemaField.svelte +171 -0
  26. package/src/components/admin/fields/ArrayField.svelte +266 -0
  27. package/src/components/admin/fields/BooleanField.svelte +35 -0
  28. package/src/components/admin/fields/ImageField.svelte +284 -0
  29. package/src/components/admin/fields/NumberField.svelte +82 -0
  30. package/src/components/admin/fields/ReferenceField.svelte +260 -0
  31. package/src/components/admin/fields/SlugField.svelte +74 -0
  32. package/src/components/admin/fields/StringField.svelte +40 -0
  33. package/src/components/admin/fields/TextareaField.svelte +40 -0
  34. package/src/components/fields/index.ts +9 -0
  35. package/src/components/index.ts +16 -0
  36. package/src/components/layout/OrganizationSwitcher.svelte +218 -0
  37. package/src/components/layout/Sidebar.svelte +88 -0
  38. package/src/components/layout/sidebar/AppSidebar.svelte +63 -0
  39. package/src/components/layout/sidebar/NavMain.svelte +95 -0
  40. package/src/components/layout/sidebar/NavSecondary.svelte +69 -0
  41. package/src/components/layout/sidebar/NavUser.svelte +85 -0
  42. package/src/config.ts +18 -0
  43. package/src/db/adapters/index.ts +3 -0
  44. package/src/db/index.ts +5 -0
  45. package/src/db/interfaces/asset.ts +61 -0
  46. package/src/db/interfaces/document.ts +53 -0
  47. package/src/db/interfaces/index.ts +98 -0
  48. package/src/db/interfaces/organization.ts +51 -0
  49. package/src/db/interfaces/schema.ts +13 -0
  50. package/src/db/interfaces/user.ts +16 -0
  51. package/src/db/utils/reference-resolver.ts +119 -0
  52. package/src/define.ts +7 -0
  53. package/src/email/index.ts +5 -0
  54. package/src/email/interfaces/email.ts +45 -0
  55. package/src/engine.ts +85 -0
  56. package/src/field-validation/rule.ts +287 -0
  57. package/src/field-validation/utils.ts +91 -0
  58. package/src/hooks.ts +142 -0
  59. package/src/index.ts +5 -0
  60. package/src/lib/is-mobile.svelte.ts +9 -0
  61. package/src/lib/utils.ts +13 -0
  62. package/src/plugins/README.md +154 -0
  63. package/src/routes/assets-by-id.ts +161 -0
  64. package/src/routes/assets-cdn.ts +185 -0
  65. package/src/routes/assets.ts +116 -0
  66. package/src/routes/documents-by-id.ts +188 -0
  67. package/src/routes/documents-publish.ts +211 -0
  68. package/src/routes/documents.ts +172 -0
  69. package/src/routes/index.ts +13 -0
  70. package/src/routes/organizations-by-id.ts +258 -0
  71. package/src/routes/organizations-invitations.ts +183 -0
  72. package/src/routes/organizations-members.ts +301 -0
  73. package/src/routes/organizations-switch.ts +74 -0
  74. package/src/routes/organizations.ts +146 -0
  75. package/src/routes/schemas-by-type.ts +35 -0
  76. package/src/routes/schemas.ts +19 -0
  77. package/src/routes-exports.ts +42 -0
  78. package/src/schema-context.svelte.ts +24 -0
  79. package/src/schema-utils/cleanup.ts +116 -0
  80. package/src/schema-utils/index.ts +4 -0
  81. package/src/schema-utils/utils.ts +47 -0
  82. package/src/schema-utils/validator.ts +58 -0
  83. package/src/server/index.ts +40 -0
  84. package/src/services/asset-service.ts +256 -0
  85. package/src/services/index.ts +6 -0
  86. package/src/storage/adapters/index.ts +2 -0
  87. package/src/storage/adapters/local-storage-adapter.ts +215 -0
  88. package/src/storage/index.ts +8 -0
  89. package/src/storage/interfaces/index.ts +2 -0
  90. package/src/storage/interfaces/storage.ts +114 -0
  91. package/src/storage/providers/storage.ts +83 -0
  92. package/src/types/asset.ts +81 -0
  93. package/src/types/auth.ts +80 -0
  94. package/src/types/config.ts +45 -0
  95. package/src/types/document.ts +38 -0
  96. package/src/types/index.ts +8 -0
  97. package/src/types/organization.ts +119 -0
  98. package/src/types/schemas.ts +151 -0
  99. package/src/types/sidebar.ts +37 -0
  100. package/src/types/user.ts +17 -0
  101. package/src/utils/content-hash.ts +75 -0
  102. package/src/utils/image-url.ts +204 -0
  103. package/src/utils/index.ts +12 -0
  104. package/src/utils/slug.ts +33 -0
@@ -0,0 +1,115 @@
1
+ <script lang="ts">
2
+ interface Props {
3
+ currentView: 'dashboard' | 'documents' | 'editor';
4
+ mobileView: 'types' | 'documents' | 'editor';
5
+ selectedDocumentType: string | null;
6
+ windowWidth: number;
7
+ children?: any;
8
+ }
9
+
10
+ let { currentView, mobileView, selectedDocumentType, windowWidth, children }: Props = $props();
11
+
12
+ // Panel layout state for adaptive design
13
+ const typesPanel = $derived.by(() => {
14
+ // Mobile (< 620px): Panel switching with breadcrumbs
15
+ if (windowWidth < 620) {
16
+ return mobileView === 'types' ? 'w-full' : 'hidden';
17
+ }
18
+
19
+ // Tablet/Small Desktop (620-745px): Only one panel open, rest compact
20
+ if (windowWidth <= 745) {
21
+ if (currentView === 'editor') {
22
+ return 'w-[60px]'; // Compact when editing
23
+ } else if (currentView === 'documents') {
24
+ return 'w-[60px]'; // Compact when viewing documents
25
+ } else {
26
+ return 'flex-1'; // Dashboard - full width
27
+ }
28
+ }
29
+
30
+ // Wide screens (>1300px): Always show expanded panels with fixed widths
31
+ if (windowWidth > 1300) {
32
+ return 'w-[350px]'; // Fixed width
33
+ }
34
+
35
+ // Medium screens (1051-1300px): Types compact when editor is open
36
+ if (windowWidth > 1050) {
37
+ if (currentView === 'editor') {
38
+ return 'w-[60px]'; // Compact when editing
39
+ } else {
40
+ return 'w-[350px]'; // Fixed width
41
+ }
42
+ }
43
+
44
+ // Smaller screens (746-1050px)
45
+ if (currentView === 'editor') {
46
+ return 'w-[60px]'; // Compact when editing
47
+ } else {
48
+ return 'w-[350px]'; // Fixed width
49
+ }
50
+ });
51
+
52
+ const documentsPanel = $derived.by(() => {
53
+ // Mobile (< 620px): Panel switching
54
+ if (windowWidth < 620) {
55
+ return mobileView === 'documents' ? 'w-full' : 'hidden';
56
+ }
57
+
58
+ if (!selectedDocumentType) return 'hidden';
59
+
60
+ // Tablet/Small Desktop (620-745px)
61
+ if (windowWidth <= 745) {
62
+ if (currentView === 'editor') {
63
+ return 'w-[60px]'; // Compact when editing
64
+ } else if (currentView === 'documents') {
65
+ return 'flex-1'; // Full width
66
+ } else {
67
+ return 'hidden';
68
+ }
69
+ }
70
+
71
+ // Wide screens (>1300px)
72
+ if (windowWidth > 1300) {
73
+ return 'w-[350px]'; // Fixed width
74
+ }
75
+
76
+ // Medium screens (1051-1300px)
77
+ if (windowWidth > 1050) {
78
+ return 'w-[350px]'; // Fixed width
79
+ }
80
+
81
+ // Smaller screens (746-1050px)
82
+ if (currentView === 'editor') {
83
+ return 'w-[60px]'; // Compact when editing
84
+ } else if (currentView === 'documents') {
85
+ return 'w-[350px]'; // Fixed width
86
+ } else {
87
+ return 'hidden';
88
+ }
89
+ });
90
+
91
+ const editorPanel = $derived.by(() => {
92
+ // Mobile (< 620px): Panel switching
93
+ if (windowWidth < 620) {
94
+ return mobileView === 'editor' ? 'w-full' : 'hidden';
95
+ }
96
+
97
+ if (currentView === 'editor') {
98
+ return 'flex-1'; // Full width when editing
99
+ } else {
100
+ return 'hidden';
101
+ }
102
+ });
103
+
104
+ // Expose computed values to parent via context
105
+ // This allows child slot content to access layout state
106
+ export { typesPanel, documentsPanel, editorPanel };
107
+ </script>
108
+
109
+ <div class="flex h-full">
110
+ {@render children({
111
+ typesPanel,
112
+ documentsPanel,
113
+ editorPanel
114
+ })}
115
+ </div>