@aphexcms/cms-core 0.1.16 → 0.2.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.
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +7 -1
- package/dist/api/types.d.ts +2 -0
- package/dist/api/types.d.ts.map +1 -1
- package/dist/cli/generate-types.js +62 -17
- package/dist/cli/index.js +1 -1
- package/dist/client/index.d.ts +0 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +0 -1
- package/dist/components/AdminApp.svelte +278 -45
- package/dist/components/AdminApp.svelte.d.ts +2 -0
- package/dist/components/AdminApp.svelte.d.ts.map +1 -1
- package/dist/components/admin/DocumentEditor.svelte +60 -13
- package/dist/components/admin/DocumentEditor.svelte.d.ts.map +1 -1
- package/dist/components/admin/ObjectModal.svelte +15 -4
- package/dist/components/admin/ObjectModal.svelte.d.ts +1 -0
- package/dist/components/admin/ObjectModal.svelte.d.ts.map +1 -1
- package/dist/components/admin/SchemaField.svelte +64 -5
- package/dist/components/admin/SchemaField.svelte.d.ts +1 -0
- package/dist/components/admin/SchemaField.svelte.d.ts.map +1 -1
- package/dist/components/admin/fields/ArrayField.svelte +402 -111
- package/dist/components/admin/fields/ArrayField.svelte.d.ts +1 -0
- package/dist/components/admin/fields/ArrayField.svelte.d.ts.map +1 -1
- package/dist/components/admin/fields/DateField.svelte +145 -0
- package/dist/components/admin/fields/DateField.svelte.d.ts +14 -0
- package/dist/components/admin/fields/DateField.svelte.d.ts.map +1 -0
- package/dist/components/admin/fields/DateTimeField.svelte +225 -0
- package/dist/components/admin/fields/DateTimeField.svelte.d.ts +14 -0
- package/dist/components/admin/fields/DateTimeField.svelte.d.ts.map +1 -0
- package/dist/components/admin/fields/ImageField.svelte +221 -110
- package/dist/components/admin/fields/ImageField.svelte.d.ts +2 -0
- package/dist/components/admin/fields/ImageField.svelte.d.ts.map +1 -1
- package/dist/components/admin/fields/ReferenceField.svelte +1 -1
- package/dist/components/admin/fields/SlugField.svelte +21 -13
- package/dist/components/admin/fields/SlugField.svelte.d.ts +2 -2
- package/dist/components/admin/fields/SlugField.svelte.d.ts.map +1 -1
- package/dist/components/admin/fields/StringField.svelte +156 -12
- package/dist/components/admin/fields/StringField.svelte.d.ts +3 -2
- package/dist/components/admin/fields/StringField.svelte.d.ts.map +1 -1
- package/dist/components/admin/fields/URLField.svelte +41 -0
- package/dist/components/admin/fields/URLField.svelte.d.ts +14 -0
- package/dist/components/admin/fields/URLField.svelte.d.ts.map +1 -0
- package/dist/components/index.d.ts +0 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +0 -1
- package/dist/db/interfaces/asset.d.ts.map +1 -1
- package/dist/db/interfaces/document.d.ts +0 -2
- package/dist/db/interfaces/document.d.ts.map +1 -1
- package/dist/db/interfaces/index.d.ts +2 -1
- package/dist/db/interfaces/index.d.ts.map +1 -1
- package/dist/db/interfaces/user.d.ts +2 -0
- package/dist/db/interfaces/user.d.ts.map +1 -1
- package/dist/db/utils/reference-resolver.js +1 -1
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +3 -0
- package/dist/field-validation/date-utils.d.ts +30 -0
- package/dist/field-validation/date-utils.d.ts.map +1 -0
- package/dist/field-validation/date-utils.js +147 -0
- package/dist/field-validation/rule.d.ts +4 -0
- package/dist/field-validation/rule.d.ts.map +1 -1
- package/dist/field-validation/rule.js +170 -4
- package/dist/field-validation/utils.d.ts +7 -3
- package/dist/field-validation/utils.d.ts.map +1 -1
- package/dist/field-validation/utils.js +130 -38
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +38 -21
- package/dist/lib/field-validation/date-utils.js +147 -0
- package/dist/lib/field-validation/rule.js +170 -4
- package/dist/lib/field-validation/utils.js +130 -38
- package/dist/local-api/collection-api.d.ts +16 -4
- package/dist/local-api/collection-api.d.ts.map +1 -1
- package/dist/local-api/collection-api.js +51 -17
- package/dist/local-api/index.d.ts +1 -1
- package/dist/local-api/index.d.ts.map +1 -1
- package/dist/routes/assets-cdn.d.ts.map +1 -1
- package/dist/routes/assets-cdn.js +14 -7
- package/dist/routes/assets.d.ts.map +1 -1
- package/dist/routes/assets.js +6 -1
- package/dist/routes/documents-by-id.d.ts.map +1 -1
- package/dist/routes/documents-by-id.js +18 -7
- package/dist/routes/documents-publish.js +2 -2
- package/dist/routes/documents-query.d.ts +3 -1
- package/dist/routes/documents-query.d.ts.map +1 -1
- package/dist/routes/documents-query.js +6 -2
- package/dist/routes/documents.d.ts.map +1 -1
- package/dist/routes/documents.js +20 -4
- package/dist/routes/index.d.ts +1 -0
- package/dist/routes/index.d.ts.map +1 -1
- package/dist/routes/index.js +2 -0
- package/dist/routes/user-preferences.d.ts +4 -0
- package/dist/routes/user-preferences.d.ts.map +1 -0
- package/dist/routes/user-preferences.js +77 -0
- package/dist/schema-utils/utils.d.ts +4 -0
- package/dist/schema-utils/utils.d.ts.map +1 -1
- package/dist/schema-utils/utils.js +23 -2
- package/dist/schema-utils/validator.d.ts +4 -0
- package/dist/schema-utils/validator.d.ts.map +1 -1
- package/dist/schema-utils/validator.js +120 -0
- package/dist/types/filters.d.ts +13 -0
- package/dist/types/filters.d.ts.map +1 -1
- package/dist/types/organization.d.ts +3 -0
- package/dist/types/organization.d.ts.map +1 -1
- package/dist/types/schemas.d.ts +67 -7
- package/dist/types/schemas.d.ts.map +1 -1
- package/dist/utils/default-orderings.d.ts +10 -0
- package/dist/utils/default-orderings.d.ts.map +1 -0
- package/dist/utils/default-orderings.js +63 -0
- package/dist/utils/field-defaults.d.ts +8 -0
- package/dist/utils/field-defaults.d.ts.map +1 -0
- package/dist/utils/field-defaults.js +20 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/initial-value-helpers.d.ts +50 -0
- package/dist/utils/initial-value-helpers.d.ts.map +1 -0
- package/dist/utils/initial-value-helpers.js +70 -0
- package/package.json +6 -4
- package/dist/components/admin/DocumentTypesList.svelte +0 -97
- package/dist/components/admin/DocumentTypesList.svelte.d.ts +0 -14
- package/dist/components/admin/DocumentTypesList.svelte.d.ts.map +0 -1
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import dayjs from 'dayjs';
|
|
2
|
+
import utc from 'dayjs/plugin/utc';
|
|
3
|
+
dayjs.extend(utc);
|
|
4
|
+
/**
|
|
5
|
+
* Helper functions for initialValue date/datetime patterns
|
|
6
|
+
* These can be used directly as initialValue in field definitions
|
|
7
|
+
*
|
|
8
|
+
* Note: Returns values in storage format (ISO),
|
|
9
|
+
* which will be converted to the user's configured display format by the field components
|
|
10
|
+
*/
|
|
11
|
+
// ==================== Date Helpers ====================
|
|
12
|
+
/**
|
|
13
|
+
* Returns the current date in YYYY-MM-DD format (storage format)
|
|
14
|
+
* Usage: initialValue: currentDate
|
|
15
|
+
*/
|
|
16
|
+
export function currentDate() {
|
|
17
|
+
return dayjs().format('YYYY-MM-DD');
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Returns a specific date offset from today
|
|
21
|
+
* Usage: initialValue: () => dateFromToday(7) // 7 days from now
|
|
22
|
+
* Usage: initialValue: () => dateFromToday(-7) // 7 days ago
|
|
23
|
+
*/
|
|
24
|
+
export function dateFromToday(days) {
|
|
25
|
+
return dayjs().add(days, 'day').format('YYYY-MM-DD');
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Returns the first day of the current month
|
|
29
|
+
* Usage: initialValue: firstDayOfMonth
|
|
30
|
+
*/
|
|
31
|
+
export function firstDayOfMonth() {
|
|
32
|
+
return dayjs().startOf('month').format('YYYY-MM-DD');
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Returns the last day of the current month
|
|
36
|
+
* Usage: initialValue: lastDayOfMonth
|
|
37
|
+
*/
|
|
38
|
+
export function lastDayOfMonth() {
|
|
39
|
+
return dayjs().endOf('month').format('YYYY-MM-DD');
|
|
40
|
+
}
|
|
41
|
+
// ==================== DateTime Helpers ====================
|
|
42
|
+
/**
|
|
43
|
+
* Returns the current datetime in ISO UTC format (storage format)
|
|
44
|
+
* Usage: initialValue: currentDateTime
|
|
45
|
+
*/
|
|
46
|
+
export function currentDateTime() {
|
|
47
|
+
return dayjs().utc().format('YYYY-MM-DDTHH:mm:ss[Z]');
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Returns a datetime offset from now in ISO UTC format
|
|
51
|
+
* Usage: initialValue: () => dateTimeFromNow(1, 'hour') // 1 hour from now
|
|
52
|
+
* Usage: initialValue: () => dateTimeFromNow(-30, 'minute') // 30 minutes ago
|
|
53
|
+
*/
|
|
54
|
+
export function dateTimeFromNow(amount, unit) {
|
|
55
|
+
return dayjs().add(amount, unit).utc().format('YYYY-MM-DDTHH:mm:ss[Z]');
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Returns the start of the current day in ISO UTC format
|
|
59
|
+
* Usage: initialValue: startOfToday
|
|
60
|
+
*/
|
|
61
|
+
export function startOfToday() {
|
|
62
|
+
return dayjs().startOf('day').utc().format('YYYY-MM-DDTHH:mm:ss[Z]');
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Returns the end of the current day in ISO UTC format
|
|
66
|
+
* Usage: initialValue: endOfToday
|
|
67
|
+
*/
|
|
68
|
+
export function endOfToday() {
|
|
69
|
+
return dayjs().endOf('day').utc().format('YYYY-MM-DDTHH:mm:ss[Z]');
|
|
70
|
+
}
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aphexcms/cms-core",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "Aphex CMS Core - A Sanity-style CMS with ports and adapters architecture",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"types": "./dist/index.d.ts",
|
|
8
8
|
"svelte": "./dist/index.js",
|
|
9
9
|
"bin": {
|
|
10
|
-
"aphex": "./dist/cli/index.
|
|
10
|
+
"aphex": "./dist/cli/index.ts"
|
|
11
11
|
},
|
|
12
12
|
"exports": {
|
|
13
13
|
".": {
|
|
@@ -57,15 +57,17 @@
|
|
|
57
57
|
"svelte": "^5.0.0",
|
|
58
58
|
"tailwind-merge": "^3.3.1",
|
|
59
59
|
"tailwind-variants": "^3.1.1",
|
|
60
|
-
"@aphexcms/ui": "0.1.
|
|
60
|
+
"@aphexcms/ui": "0.1.8"
|
|
61
61
|
},
|
|
62
62
|
"dependencies": {
|
|
63
63
|
"@clack/prompts": "^0.11.0",
|
|
64
64
|
"cac": "^6.7.14",
|
|
65
|
+
"dayjs": "^1.11.19",
|
|
65
66
|
"esbuild": "^0.24.0",
|
|
66
67
|
"picocolors": "^1.1.1",
|
|
67
68
|
"s3mini": "^0.5.0",
|
|
68
|
-
"sharp": "^0.34.4"
|
|
69
|
+
"sharp": "^0.34.4",
|
|
70
|
+
"tsx": "^4.19.2"
|
|
69
71
|
},
|
|
70
72
|
"devDependencies": {
|
|
71
73
|
"@eslint/compat": "^1.2.5",
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { Badge } from '@aphexcms/ui/shadcn/badge';
|
|
3
|
-
import {
|
|
4
|
-
SidebarGroup,
|
|
5
|
-
SidebarGroupLabel,
|
|
6
|
-
SidebarGroupContent,
|
|
7
|
-
SidebarMenu,
|
|
8
|
-
SidebarMenuItem,
|
|
9
|
-
SidebarMenuButton
|
|
10
|
-
} from '@aphexcms/ui/shadcn/sidebar';
|
|
11
|
-
import { page } from '$app/state';
|
|
12
|
-
|
|
13
|
-
interface DocumentType {
|
|
14
|
-
name: string;
|
|
15
|
-
title: string;
|
|
16
|
-
description?: string;
|
|
17
|
-
documentCount?: number;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
interface Props {
|
|
21
|
-
documentTypes: DocumentType[];
|
|
22
|
-
objectTypes: DocumentType[];
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
let { documentTypes, objectTypes }: Props = $props();
|
|
26
|
-
|
|
27
|
-
const currentPath = $derived(page.url.pathname);
|
|
28
|
-
</script>
|
|
29
|
-
|
|
30
|
-
<!-- Document Types Section -->
|
|
31
|
-
{#if documentTypes.length > 0}
|
|
32
|
-
<SidebarGroup class="max-w-[350px]">
|
|
33
|
-
<SidebarGroupLabel class="flex items-center justify-between">
|
|
34
|
-
<span class="flex items-center gap-2">
|
|
35
|
-
<span>📄</span>
|
|
36
|
-
Content
|
|
37
|
-
</span>
|
|
38
|
-
<Badge variant="secondary" class="text-xs">{documentTypes.length}</Badge>
|
|
39
|
-
</SidebarGroupLabel>
|
|
40
|
-
|
|
41
|
-
<SidebarGroupContent>
|
|
42
|
-
<SidebarMenu>
|
|
43
|
-
{#each documentTypes as docType, index (index)}
|
|
44
|
-
<SidebarMenuItem>
|
|
45
|
-
<SidebarMenuButton
|
|
46
|
-
onclick={goto(`/admin/documents/${docType.name}`)}
|
|
47
|
-
isActive={currentPath.includes(`/documents/${docType.name}`)}
|
|
48
|
-
class="group"
|
|
49
|
-
>
|
|
50
|
-
<div class="flex min-w-0 flex-1 items-center gap-2">
|
|
51
|
-
<div
|
|
52
|
-
class="flex h-5 w-5 flex-shrink-0 items-center justify-center rounded bg-blue-100 dark:bg-blue-900/20"
|
|
53
|
-
>
|
|
54
|
-
<span class="text-xs text-blue-600 dark:text-blue-400">📄</span>
|
|
55
|
-
</div>
|
|
56
|
-
<div class="min-w-0 flex-1">
|
|
57
|
-
<div class="truncate text-sm font-medium">{docType.title}</div>
|
|
58
|
-
{#if docType.description}
|
|
59
|
-
<div class="text-muted-foreground truncate text-xs">{docType.description}</div>
|
|
60
|
-
{/if}
|
|
61
|
-
</div>
|
|
62
|
-
</div>
|
|
63
|
-
</SidebarMenuButton>
|
|
64
|
-
</SidebarMenuItem>
|
|
65
|
-
{/each}
|
|
66
|
-
</SidebarMenu>
|
|
67
|
-
</SidebarGroupContent>
|
|
68
|
-
</SidebarGroup>
|
|
69
|
-
{/if}
|
|
70
|
-
|
|
71
|
-
<!-- Object Types Section -->
|
|
72
|
-
{#if objectTypes.length > 0}
|
|
73
|
-
<SidebarGroup>
|
|
74
|
-
<SidebarGroupLabel class="flex items-center justify-between">
|
|
75
|
-
<span class="flex items-center gap-2">
|
|
76
|
-
<span>🧩</span>
|
|
77
|
-
Object Types
|
|
78
|
-
</span>
|
|
79
|
-
<Badge variant="secondary" class="text-xs">{objectTypes.length}</Badge>
|
|
80
|
-
</SidebarGroupLabel>
|
|
81
|
-
</SidebarGroup>
|
|
82
|
-
{/if}
|
|
83
|
-
|
|
84
|
-
<!-- Empty state -->
|
|
85
|
-
{#if documentTypes.length === 0 && objectTypes.length === 0}
|
|
86
|
-
<SidebarGroup>
|
|
87
|
-
<SidebarGroupContent>
|
|
88
|
-
<div class="text-muted-foreground space-y-2 py-6 text-center">
|
|
89
|
-
<div class="text-2xl">📄</div>
|
|
90
|
-
<div>
|
|
91
|
-
<p class="text-sm">No content types found</p>
|
|
92
|
-
<p class="text-xs">Define schemas in schemaTypes/</p>
|
|
93
|
-
</div>
|
|
94
|
-
</div>
|
|
95
|
-
</SidebarGroupContent>
|
|
96
|
-
</SidebarGroup>
|
|
97
|
-
{/if}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
interface DocumentType {
|
|
2
|
-
name: string;
|
|
3
|
-
title: string;
|
|
4
|
-
description?: string;
|
|
5
|
-
documentCount?: number;
|
|
6
|
-
}
|
|
7
|
-
interface Props {
|
|
8
|
-
documentTypes: DocumentType[];
|
|
9
|
-
objectTypes: DocumentType[];
|
|
10
|
-
}
|
|
11
|
-
declare const DocumentTypesList: import("svelte").Component<Props, {}, "">;
|
|
12
|
-
type DocumentTypesList = ReturnType<typeof DocumentTypesList>;
|
|
13
|
-
export default DocumentTypesList;
|
|
14
|
-
//# sourceMappingURL=DocumentTypesList.svelte.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DocumentTypesList.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/admin/DocumentTypesList.svelte.ts"],"names":[],"mappings":"AAeC,UAAU,YAAY;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,KAAK;IACd,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,WAAW,EAAE,YAAY,EAAE,CAAC;CAC5B;AA8EF,QAAA,MAAM,iBAAiB,2CAAwC,CAAC;AAChE,KAAK,iBAAiB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC9D,eAAe,iBAAiB,CAAC"}
|