runeforge 0.0.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/LICENSE +21 -0
- package/README.md +551 -0
- package/dist/components/Avatar.svelte +31 -0
- package/dist/components/Avatar.svelte.d.ts +10 -0
- package/dist/components/IconRenderer.svelte +22 -0
- package/dist/components/IconRenderer.svelte.d.ts +8 -0
- package/dist/components/Modal.svelte +47 -0
- package/dist/components/Modal.svelte.d.ts +9 -0
- package/dist/components/common/Header.svelte +30 -0
- package/dist/components/common/Header.svelte.d.ts +11 -0
- package/dist/components/crud/Field.svelte +159 -0
- package/dist/components/crud/Field.svelte.d.ts +30 -0
- package/dist/components/crud/GenericCRUD.svelte +236 -0
- package/dist/components/crud/GenericCRUD.svelte.d.ts +44 -0
- package/dist/components/crud/columns/Avatar.svelte +15 -0
- package/dist/components/crud/columns/Avatar.svelte.d.ts +8 -0
- package/dist/components/crud/columns/Icon.svelte +8 -0
- package/dist/components/crud/columns/Icon.svelte.d.ts +4 -0
- package/dist/components/crud/utils/constants.d.ts +1 -0
- package/dist/components/crud/utils/constants.js +6 -0
- package/dist/components/crud/utils/formatters.d.ts +6 -0
- package/dist/components/crud/utils/formatters.js +42 -0
- package/dist/components/crud/utils/misc.d.ts +5 -0
- package/dist/components/crud/utils/misc.js +8 -0
- package/dist/components/crud/utils/resolution.d.ts +4 -0
- package/dist/components/crud/utils/resolution.js +22 -0
- package/dist/components/crud/views/Create.svelte +147 -0
- package/dist/components/crud/views/Create.svelte.d.ts +34 -0
- package/dist/components/crud/views/List.svelte +170 -0
- package/dist/components/crud/views/List.svelte.d.ts +41 -0
- package/dist/components/crud/views/Read.svelte +85 -0
- package/dist/components/crud/views/Read.svelte.d.ts +33 -0
- package/dist/components/crud/views/Update.svelte +148 -0
- package/dist/components/crud/views/Update.svelte.d.ts +35 -0
- package/dist/components/form/Button.svelte +27 -0
- package/dist/components/form/Button.svelte.d.ts +10 -0
- package/dist/components/form/Label.svelte +37 -0
- package/dist/components/form/Label.svelte.d.ts +14 -0
- package/dist/components/form/PasswordInput.svelte +61 -0
- package/dist/components/form/PasswordInput.svelte.d.ts +13 -0
- package/dist/components/form/Required.svelte +1 -0
- package/dist/components/form/Required.svelte.d.ts +26 -0
- package/dist/components/form/Select.svelte +114 -0
- package/dist/components/form/Select.svelte.d.ts +14 -0
- package/dist/components/navigation/Breadcrumbs.svelte +51 -0
- package/dist/components/navigation/Breadcrumbs.svelte.d.ts +9 -0
- package/dist/components/table/ColumnFilter.svelte +140 -0
- package/dist/components/table/ColumnFilter.svelte.d.ts +33 -0
- package/dist/components/table/PaginatedTable.svelte +106 -0
- package/dist/components/table/PaginatedTable.svelte.d.ts +35 -0
- package/dist/components/table/Paginator.svelte +62 -0
- package/dist/components/table/Paginator.svelte.d.ts +10 -0
- package/dist/components/table/SortHeader.svelte +43 -0
- package/dist/components/table/SortHeader.svelte.d.ts +10 -0
- package/dist/components/table/TableBody.svelte +70 -0
- package/dist/components/table/TableBody.svelte.d.ts +36 -0
- package/dist/components/table/TableHeader.svelte +83 -0
- package/dist/components/table/TableHeader.svelte.d.ts +39 -0
- package/dist/components/table/state.svelte.d.ts +30 -0
- package/dist/components/table/state.svelte.js +109 -0
- package/dist/components/table/utils.d.ts +7 -0
- package/dist/components/table/utils.js +44 -0
- package/dist/i18n/context.d.ts +3 -0
- package/dist/i18n/context.js +10 -0
- package/dist/i18n/en.d.ts +2 -0
- package/dist/i18n/en.js +24 -0
- package/dist/i18n/es.d.ts +2 -0
- package/dist/i18n/es.js +24 -0
- package/dist/i18n/types.d.ts +24 -0
- package/dist/i18n/types.js +1 -0
- package/dist/icons/bootstrapIconSet.d.ts +1 -0
- package/dist/icons/bootstrapIconSet.js +1 -0
- package/dist/icons/context.d.ts +3 -0
- package/dist/icons/context.js +9 -0
- package/dist/icons/defaultIconSet.d.ts +1 -0
- package/dist/icons/defaultIconSet.js +1 -0
- package/dist/icons/defaults/Create.svelte +6 -0
- package/dist/icons/defaults/Create.svelte.d.ts +7 -0
- package/dist/icons/defaults/Delete.svelte +6 -0
- package/dist/icons/defaults/Delete.svelte.d.ts +7 -0
- package/dist/icons/defaults/Edit.svelte +7 -0
- package/dist/icons/defaults/Edit.svelte.d.ts +7 -0
- package/dist/icons/defaults/Filter.svelte +6 -0
- package/dist/icons/defaults/Filter.svelte.d.ts +7 -0
- package/dist/icons/defaults/FilterActive.svelte +6 -0
- package/dist/icons/defaults/FilterActive.svelte.d.ts +7 -0
- package/dist/icons/defaults/Folder.svelte +6 -0
- package/dist/icons/defaults/Folder.svelte.d.ts +7 -0
- package/dist/icons/defaults/Home.svelte +6 -0
- package/dist/icons/defaults/Home.svelte.d.ts +7 -0
- package/dist/icons/defaults/PasswordHide.svelte +9 -0
- package/dist/icons/defaults/PasswordHide.svelte.d.ts +7 -0
- package/dist/icons/defaults/PasswordShow.svelte +7 -0
- package/dist/icons/defaults/PasswordShow.svelte.d.ts +7 -0
- package/dist/icons/defaults/SortAsc.svelte +6 -0
- package/dist/icons/defaults/SortAsc.svelte.d.ts +7 -0
- package/dist/icons/defaults/SortDesc.svelte +6 -0
- package/dist/icons/defaults/SortDesc.svelte.d.ts +7 -0
- package/dist/icons/defaults/SortNone.svelte +6 -0
- package/dist/icons/defaults/SortNone.svelte.d.ts +7 -0
- package/dist/icons/defaults/View.svelte +7 -0
- package/dist/icons/defaults/View.svelte.d.ts +7 -0
- package/dist/icons/sets/bootstrap.d.ts +2 -0
- package/dist/icons/sets/bootstrap.js +29 -0
- package/dist/icons/sets/default.d.ts +2 -0
- package/dist/icons/sets/default.js +28 -0
- package/dist/icons/types.d.ts +26 -0
- package/dist/icons/types.js +1 -0
- package/dist/index.d.ts +42 -0
- package/dist/index.js +41 -0
- package/dist/types/attribute.d.ts +38 -0
- package/dist/types/attribute.js +11 -0
- package/dist/types/breadcrumb.d.ts +7 -0
- package/dist/types/breadcrumb.js +1 -0
- package/dist/types/crud.d.ts +48 -0
- package/dist/types/crud.js +1 -0
- package/dist/types/table.d.ts +16 -0
- package/dist/types/table.js +1 -0
- package/package.json +82 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { FullAutoFill } from 'svelte/elements';
|
|
2
|
+
import type { CellComponent, CellFormatter } from './table.js';
|
|
3
|
+
export type AttributeType = 'text' | 'email' | 'password' | 'number' | 'boolean' | 'textarea' | 'file' | 'select' | 'datetime';
|
|
4
|
+
export declare const AttributeType: {
|
|
5
|
+
readonly text: "text";
|
|
6
|
+
readonly email: "email";
|
|
7
|
+
readonly password: "password";
|
|
8
|
+
readonly number: "number";
|
|
9
|
+
readonly boolean: "boolean";
|
|
10
|
+
readonly textarea: "textarea";
|
|
11
|
+
readonly file: "file";
|
|
12
|
+
readonly select: "select";
|
|
13
|
+
readonly datetime: "datetime";
|
|
14
|
+
};
|
|
15
|
+
export type InterfaceMetadata<T> = Partial<Record<keyof T, AttributeMetadata>>;
|
|
16
|
+
export type SelectOption = {
|
|
17
|
+
value: string;
|
|
18
|
+
label: string;
|
|
19
|
+
};
|
|
20
|
+
export type OptionsResolver = SelectOption[] | ((data: any) => SelectOption[]);
|
|
21
|
+
export type FormatterResolver = (data?: any) => CellFormatter<any, any>;
|
|
22
|
+
export type AttributeMetadata = {
|
|
23
|
+
label?: string;
|
|
24
|
+
type?: AttributeType;
|
|
25
|
+
options?: OptionsResolver;
|
|
26
|
+
component?: CellComponent<any, any>;
|
|
27
|
+
formatter?: FormatterResolver;
|
|
28
|
+
required?: boolean;
|
|
29
|
+
autocomplete?: FullAutoFill;
|
|
30
|
+
placeholder?: string;
|
|
31
|
+
default?: any;
|
|
32
|
+
excludedFromList?: boolean;
|
|
33
|
+
excludedFromCreate?: boolean;
|
|
34
|
+
excludedFromUpdate?: boolean;
|
|
35
|
+
excludedFromRead?: boolean;
|
|
36
|
+
sortable?: boolean;
|
|
37
|
+
filterable?: boolean;
|
|
38
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { Component } from 'svelte';
|
|
2
|
+
import type { FullAutoFill } from 'svelte/elements';
|
|
3
|
+
import type { AttributeType } from './attribute.js';
|
|
4
|
+
import type { CellComponent, CellFormatter } from './table.js';
|
|
5
|
+
export type ColumnDefinition<T extends object = Record<string, unknown>> = {
|
|
6
|
+
[K in keyof T & string]: {
|
|
7
|
+
attribute: K;
|
|
8
|
+
title?: string;
|
|
9
|
+
type?: AttributeType;
|
|
10
|
+
component?: CellComponent<T, T[K]>;
|
|
11
|
+
formatter?: CellFormatter<T, T[K]>;
|
|
12
|
+
sortable?: boolean;
|
|
13
|
+
filterable?: boolean;
|
|
14
|
+
};
|
|
15
|
+
}[keyof T & string];
|
|
16
|
+
export interface FieldDefinition<T extends object = Record<string, unknown>> {
|
|
17
|
+
attribute: keyof T & string;
|
|
18
|
+
title?: string;
|
|
19
|
+
type?: AttributeType;
|
|
20
|
+
required?: boolean;
|
|
21
|
+
autocomplete?: FullAutoFill;
|
|
22
|
+
placeholder?: string;
|
|
23
|
+
default?: any;
|
|
24
|
+
options?: {
|
|
25
|
+
value: string;
|
|
26
|
+
label: string;
|
|
27
|
+
}[];
|
|
28
|
+
}
|
|
29
|
+
export interface ActionConfiguration<T extends object = Record<string, unknown>> {
|
|
30
|
+
enabled?: boolean;
|
|
31
|
+
label?: string;
|
|
32
|
+
endpoint?: string;
|
|
33
|
+
callback?: (items: T[]) => void | Promise<void>;
|
|
34
|
+
}
|
|
35
|
+
export interface CustomAction<T extends object = Record<string, unknown>> {
|
|
36
|
+
label: string;
|
|
37
|
+
icon: any;
|
|
38
|
+
endpoint?: string;
|
|
39
|
+
condition?: (item: T) => boolean;
|
|
40
|
+
view: Component<any>;
|
|
41
|
+
}
|
|
42
|
+
export interface RowAction<T extends object = Record<string, unknown>> {
|
|
43
|
+
label: string;
|
|
44
|
+
icon: any;
|
|
45
|
+
class?: string;
|
|
46
|
+
condition?: (item: T) => boolean;
|
|
47
|
+
run: (item: T) => void;
|
|
48
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Component } from 'svelte';
|
|
2
|
+
export type SortDirection = 'asc' | 'desc';
|
|
3
|
+
export type IndexedRow<T> = {
|
|
4
|
+
row: T;
|
|
5
|
+
index: number;
|
|
6
|
+
};
|
|
7
|
+
export type DistinctEntry<T> = {
|
|
8
|
+
key: string;
|
|
9
|
+
row: T;
|
|
10
|
+
};
|
|
11
|
+
export interface CellProps<T extends object = Record<string, unknown>, V = unknown> {
|
|
12
|
+
value: V;
|
|
13
|
+
row: T;
|
|
14
|
+
}
|
|
15
|
+
export type CellComponent<T extends object = Record<string, unknown>, V = unknown> = Component<CellProps<T, V>>;
|
|
16
|
+
export type CellFormatter<T extends object = Record<string, unknown>, V = unknown> = (value: CellProps<T, V>['value'], row: CellProps<T, V>['row']) => string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/package.json
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "runeforge",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "SvelteKit toolkit for building metadata-driven CRUD interfaces with tables, forms, and actions",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": "Ezequiel Puerta",
|
|
7
|
+
"keywords": [
|
|
8
|
+
"svelte",
|
|
9
|
+
"sveltekit",
|
|
10
|
+
"crud",
|
|
11
|
+
"table",
|
|
12
|
+
"form",
|
|
13
|
+
"daisyui",
|
|
14
|
+
"tailwindcss",
|
|
15
|
+
"ui"
|
|
16
|
+
],
|
|
17
|
+
"scripts": {
|
|
18
|
+
"dev": "vite dev",
|
|
19
|
+
"build": "vite build && npm run prepack",
|
|
20
|
+
"preview": "vite preview",
|
|
21
|
+
"prepare": "svelte-kit sync || echo ''",
|
|
22
|
+
"prepack": "svelte-kit sync && svelte-package && publint",
|
|
23
|
+
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
|
|
24
|
+
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
|
|
25
|
+
"test": "pnpm run test:unit && pnpm run test:e2e",
|
|
26
|
+
"test:unit": "vitest run",
|
|
27
|
+
"test:unit:watch": "vitest",
|
|
28
|
+
"test:e2e": "playwright test",
|
|
29
|
+
"lint": "prettier --check . && eslint .",
|
|
30
|
+
"format": "prettier --write ."
|
|
31
|
+
},
|
|
32
|
+
"files": [
|
|
33
|
+
"dist",
|
|
34
|
+
"!dist/**/*.test.*",
|
|
35
|
+
"!dist/**/*.spec.*"
|
|
36
|
+
],
|
|
37
|
+
"sideEffects": [
|
|
38
|
+
"**/*.css"
|
|
39
|
+
],
|
|
40
|
+
"svelte": "./dist/index.js",
|
|
41
|
+
"types": "./dist/index.d.ts",
|
|
42
|
+
"type": "module",
|
|
43
|
+
"exports": {
|
|
44
|
+
".": {
|
|
45
|
+
"types": "./dist/index.d.ts",
|
|
46
|
+
"svelte": "./dist/index.js"
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"peerDependencies": {
|
|
50
|
+
"@sveltejs/kit": "^2.0.0",
|
|
51
|
+
"svelte": "^5.0.0",
|
|
52
|
+
"tailwindcss": "^4.0.0",
|
|
53
|
+
"daisyui": "^5.0.0"
|
|
54
|
+
},
|
|
55
|
+
"devDependencies": {
|
|
56
|
+
"@eslint/js": "^10.0.1",
|
|
57
|
+
"@playwright/test": "^1.60.0",
|
|
58
|
+
"@sveltejs/adapter-auto": "^7.0.1",
|
|
59
|
+
"@sveltejs/kit": "^2.63.0",
|
|
60
|
+
"@sveltejs/package": "^2.5.8",
|
|
61
|
+
"@sveltejs/vite-plugin-svelte": "^7.1.2",
|
|
62
|
+
"@types/node": "^22",
|
|
63
|
+
"eslint": "^10.4.1",
|
|
64
|
+
"eslint-config-prettier": "^10.1.8",
|
|
65
|
+
"eslint-plugin-svelte": "^3.19.0",
|
|
66
|
+
"globals": "^17.6.0",
|
|
67
|
+
"prettier": "^3.8.3",
|
|
68
|
+
"prettier-plugin-svelte": "^4.1.0",
|
|
69
|
+
"publint": "^0.3.21",
|
|
70
|
+
"svelte": "^5.56.1",
|
|
71
|
+
"svelte-bootstrap-icons": "^3.3.0",
|
|
72
|
+
"svelte-check": "^4.6.0",
|
|
73
|
+
"typescript": "^6.0.3",
|
|
74
|
+
"typescript-eslint": "^8.60.1",
|
|
75
|
+
"vite": "^8.0.16",
|
|
76
|
+
"@tailwindcss/vite": "^4.3.1",
|
|
77
|
+
"daisyui": "^5.5.23",
|
|
78
|
+
"tailwindcss": "^4.3.1",
|
|
79
|
+
"vitest": "^4.1.8"
|
|
80
|
+
},
|
|
81
|
+
"dependencies": {}
|
|
82
|
+
}
|