@shamar/core 0.1.6 → 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/README.md +35 -5
- package/dist/actions.d.ts +9 -2
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +21 -8
- package/dist/actions.js.map +1 -1
- package/dist/content-max-width.d.ts +11 -4
- package/dist/content-max-width.d.ts.map +1 -1
- package/dist/content-max-width.js +27 -7
- package/dist/content-max-width.js.map +1 -1
- package/dist/default-per-page.d.ts +16 -0
- package/dist/default-per-page.d.ts.map +1 -0
- package/dist/default-per-page.js +31 -0
- package/dist/default-per-page.js.map +1 -0
- package/dist/field-registry.d.ts +55 -0
- package/dist/field-registry.d.ts.map +1 -0
- package/dist/field-registry.js +393 -0
- package/dist/field-registry.js.map +1 -0
- package/dist/field-values.d.ts +28 -0
- package/dist/field-values.d.ts.map +1 -0
- package/dist/field-values.js +193 -0
- package/dist/field-values.js.map +1 -0
- package/dist/fields.d.ts +112 -0
- package/dist/fields.d.ts.map +1 -0
- package/dist/fields.js +251 -0
- package/dist/fields.js.map +1 -0
- package/dist/form.d.ts +57 -9
- package/dist/form.d.ts.map +1 -1
- package/dist/form.js +122 -2
- package/dist/form.js.map +1 -1
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/infolist.d.ts +3 -1
- package/dist/infolist.d.ts.map +1 -1
- package/dist/infolist.js +44 -0
- package/dist/infolist.js.map +1 -1
- package/dist/media.d.ts +110 -0
- package/dist/media.d.ts.map +1 -0
- package/dist/media.js +6 -0
- package/dist/media.js.map +1 -0
- package/dist/page-content.d.ts +92 -0
- package/dist/page-content.d.ts.map +1 -0
- package/dist/page-content.js +128 -0
- package/dist/page-content.js.map +1 -0
- package/dist/page-registry.d.ts +16 -0
- package/dist/page-registry.d.ts.map +1 -0
- package/dist/page-registry.js +45 -0
- package/dist/page-registry.js.map +1 -0
- package/dist/page.d.ts +132 -0
- package/dist/page.d.ts.map +1 -0
- package/dist/page.js +222 -0
- package/dist/page.js.map +1 -0
- package/dist/panel.d.ts +46 -2
- package/dist/panel.d.ts.map +1 -1
- package/dist/panel.js +65 -2
- package/dist/panel.js.map +1 -1
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +2 -0
- package/dist/registry.js.map +1 -1
- package/dist/resource.d.ts +8 -1
- package/dist/resource.d.ts.map +1 -1
- package/dist/resource.js +10 -1
- package/dist/resource.js.map +1 -1
- package/dist/types.d.ts +77 -8
- package/dist/types.d.ts.map +1 -1
- package/dist/validation.d.ts +5 -0
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +91 -10
- package/dist/validation.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @shamar/core
|
|
2
2
|
|
|
3
|
-
Filament-inspired **Resource DSL** for Shamar — forms, tables, infolists, actions, navigation, and auth contracts. ORM-agnostic: persistence lives in adapters (`@shamar/lucid`, `@shamar/mongoose`) or your own `DataAdapter`.
|
|
3
|
+
Filament-inspired **Resource DSL** for Shamar — forms, tables, infolists, panel pages, actions, navigation, and auth contracts. ORM-agnostic: persistence lives in adapters (`@shamar/lucid`, `@shamar/mongoose`) or your own `DataAdapter`.
|
|
4
4
|
|
|
5
5
|
Most apps consume this transitively via [`@shamar/adonis`](../adonis). Use `@shamar/core` directly when building a custom host or adapter.
|
|
6
6
|
|
|
@@ -96,6 +96,7 @@ export default class UserResource extends Resource {
|
|
|
96
96
|
| `form((f) => …)` | Create / edit schemas |
|
|
97
97
|
| `table((t) => …)` | List columns, filters, group-by defaults |
|
|
98
98
|
| `infolist((i) => …)` | Show / view schemas |
|
|
99
|
+
| `pageContent((p) => …)` | Composite `Page` sections (edge, form, table, infolist) |
|
|
99
100
|
| `actions((a) => …)` | Create, view, edit, delete, bulk, header, and row actions |
|
|
100
101
|
| `panel(id)` | Multi-panel registration (also re-exported from `@shamar/adonis`) |
|
|
101
102
|
|
|
@@ -107,7 +108,9 @@ Containers use `.schema([...])` for children. Layout width uses `.columns(n)` on
|
|
|
107
108
|
|
|
108
109
|
### Form fields
|
|
109
110
|
|
|
110
|
-
`TextInput`, `Textarea`, `Select`, `Toggle`, `Checkbox`, `Radio`, `CheckboxList`, `Hidden`, `ColorPicker`, `TagsInput`, `DatePicker`, `DateTimePicker`, `FileUpload`, `RelationTable`, `PermissionsAssignment`, `AbilitiesAssignment`
|
|
111
|
+
`TextInput`, `Textarea`, `Select`, `Toggle`, `Checkbox`, `Radio`, `ToggleButtons`, `CheckboxList`, `Hidden`, `ColorPicker`, `TagsInput`, `DatePicker`, `DateTimePicker`, `TimePicker`, `WeekPicker`, `MonthPicker` (Flowbite calendar by default; `.native()` for browser inputs), `RichEditor` (`.simple()` / `.notion()` / `.document()` modes; simple default), `MarkdownEditor`, `CodeEditor`, `Repeater`, `KeyValue`, `Slider`, `Rating`, `FileUpload`, `FilePicker`, `RelationTable`, `PermissionsAssignment`, `AbilitiesAssignment`
|
|
112
|
+
|
|
113
|
+
Custom types: `registerFieldType({ type, valueKind, hydrate, dehydrate, empty })` in `@shamar/core`, then `registerFieldView(type, 'your::edge/view')` in `@shamar/adonis`. Field classes can extend `FormComponent` and store options on `.setWidget()` / `field.widget`. The admin host hydrates and dehydrates through the registry — adding a type does not require controller changes.
|
|
111
114
|
|
|
112
115
|
### Table / infolist
|
|
113
116
|
|
|
@@ -115,11 +118,38 @@ Containers use `.schema([...])` for children. Layout width uses `.columns(n)` on
|
|
|
115
118
|
|
|
116
119
|
- `TextEntry.make('payload').textarea()` — scrollable, break-all block for long unbroken strings
|
|
117
120
|
- Derived show schemas (no `infolist()`) wrap fields in a card `Section` by default
|
|
121
|
+
- `ListPage` without `infolist()` derives the record view from table columns
|
|
122
|
+
|
|
123
|
+
## Pages
|
|
124
|
+
|
|
125
|
+
`Page`, `FormPage`, `SettingsPage`, and `ListPage` are panel screens discovered next to resources (see [`@shamar/adonis`](../adonis#pages-filament-style)).
|
|
126
|
+
|
|
127
|
+
```ts
|
|
128
|
+
import { Page, pageContent, form, table, infolist } from '@shamar/core'
|
|
129
|
+
|
|
130
|
+
export default class OpsDashboardPage extends Page {
|
|
131
|
+
static override slug = 'ops-dashboard'
|
|
132
|
+
static override label = 'Ops dashboard'
|
|
133
|
+
|
|
134
|
+
static override content() {
|
|
135
|
+
return pageContent((p) => {
|
|
136
|
+
p.edge('banner', { view: 'pages/admin/ops_banner', data: { title: 'Hi' } })
|
|
137
|
+
p.form('settings', { form: () => form((f) => { /* … */ }), save: async () => ({}) })
|
|
138
|
+
p.table('items', { model: Product, table: () => table((t) => { /* … */ }) })
|
|
139
|
+
p.infolist('meta', { record: { env: 'test' }, infolist: () => infolist((i) => { /* … */ }) })
|
|
140
|
+
})
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
`SettingsPage` / `FormPage` / `ListPage` remain shortcuts for a settings form, generic form, or table. List row clicks open `GET /:slug/:id` using `static infolist()` or columns.
|
|
146
|
+
|
|
147
|
+
## Layout width
|
|
118
148
|
|
|
119
|
-
|
|
149
|
+
Default for form and detail pages: `screen-xl` (1280px) — fills the column up to that cap.
|
|
120
150
|
|
|
121
|
-
- Panel: `panel('admin').contentMaxWidth('
|
|
122
|
-
- Resource: `static contentMaxWidth = '
|
|
151
|
+
- Panel: `panel('admin').contentMaxWidth('screen-2xl')` (or `'screen-lg'`, `'7xl'`, `'full'`, …)
|
|
152
|
+
- Resource: `static contentMaxWidth = 'screen-lg'` (overrides the panel)
|
|
123
153
|
|
|
124
154
|
## Common modifiers
|
|
125
155
|
|
package/dist/actions.d.ts
CHANGED
|
@@ -7,6 +7,13 @@ declare abstract class ActionBase<T extends ActionConfig> {
|
|
|
7
7
|
icon(value: string): this;
|
|
8
8
|
confirm(value: string): this;
|
|
9
9
|
ability(value: string): this;
|
|
10
|
+
/**
|
|
11
|
+
* Row actions: include in the ⋮ menu (default) or show inline.
|
|
12
|
+
* Pass `false` (or use {@link ungrouped}) for a visible toolbar button.
|
|
13
|
+
*/
|
|
14
|
+
grouped(value?: boolean): this;
|
|
15
|
+
/** Shorthand: show this row action outside the ⋮ menu. */
|
|
16
|
+
ungrouped(): this;
|
|
10
17
|
build(): T;
|
|
11
18
|
}
|
|
12
19
|
declare class HeaderAction extends ActionBase<ActionConfig> {
|
|
@@ -22,11 +29,11 @@ declare class BulkAction extends ActionBase<ActionConfig> {
|
|
|
22
29
|
export declare class ActionBuilder {
|
|
23
30
|
private readonly actionInstances;
|
|
24
31
|
private track;
|
|
25
|
-
create(label?: string): HeaderAction;
|
|
26
|
-
edit(label?: string): RowAction;
|
|
27
32
|
view(label?: string): RowAction;
|
|
33
|
+
edit(label?: string): RowAction;
|
|
28
34
|
delete(label?: string): RowAction;
|
|
29
35
|
bulkDelete(label?: string): BulkAction;
|
|
36
|
+
create(label?: string): HeaderAction;
|
|
30
37
|
header(name: string, label: string): HeaderAction;
|
|
31
38
|
row(name: string, label: string): RowAction;
|
|
32
39
|
bulk(name: string, label: string): BulkAction;
|
package/dist/actions.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,uBAAe,UAAU,CAAC,CAAC,SAAS,YAAY;IAC9C,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IAEpB,SAAS,aAAa,MAAM,EAAE,CAAC;IAI/B,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK1B,KAAK,CAAC,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI;IAKzC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKzB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK5B,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK5B,KAAK,IAAI,CAAC;CAGX;AAED,cAAM,YAAa,SAAQ,UAAU,CAAC,YAAY,CAAC;gBACrC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;CAGxC;AAED,cAAM,SAAU,SAAQ,UAAU,CAAC,YAAY,CAAC;gBAClC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;CAGxC;AAED,cAAM,UAAW,SAAQ,UAAU,CAAC,YAAY,CAAC;gBACnC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;CAGxC;AAED,qDAAqD;AACrD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkC;IAElE,OAAO,CAAC,KAAK;IAKb,
|
|
1
|
+
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,uBAAe,UAAU,CAAC,CAAC,SAAS,YAAY;IAC9C,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IAEpB,SAAS,aAAa,MAAM,EAAE,CAAC;IAI/B,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK1B,KAAK,CAAC,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI;IAKzC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKzB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK5B,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK5B;;;OAGG;IACH,OAAO,CAAC,KAAK,UAAO,GAAG,IAAI;IAK3B,0DAA0D;IAC1D,SAAS,IAAI,IAAI;IAIjB,KAAK,IAAI,CAAC;CAGX;AAED,cAAM,YAAa,SAAQ,UAAU,CAAC,YAAY,CAAC;gBACrC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;CAGxC;AAED,cAAM,SAAU,SAAQ,UAAU,CAAC,YAAY,CAAC;gBAClC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;CAGxC;AAED,cAAM,UAAW,SAAQ,UAAU,CAAC,YAAY,CAAC;gBACnC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;CAGxC;AAED,qDAAqD;AACrD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkC;IAElE,OAAO,CAAC,KAAK;IAKb,IAAI,CAAC,KAAK,SAAS,GAAG,SAAS;IAI/B,IAAI,CAAC,KAAK,SAAS,GAAG,SAAS;IAI/B,MAAM,CAAC,KAAK,SAAW,GAAG,SAAS;IAInC,UAAU,CAAC,KAAK,SAAoB,GAAG,UAAU;IASjD,MAAM,CAAC,KAAK,SAAW,GAAG,YAAY;IAItC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY;IAIjD,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS;IAI3C,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU;IAI7C,KAAK,IAAI,YAAY,EAAE;CAGxB;AAED,wBAAgB,OAAO,CACrB,QAAQ,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,aAAa,GAAG,IAAI,GACzD,YAAY,EAAE,CAIhB;AAED,gDAAgD;AAChD,wBAAgB,cAAc,IAAI,YAAY,EAAE,CAQ/C"}
|
package/dist/actions.js
CHANGED
|
@@ -23,6 +23,18 @@ class ActionBase {
|
|
|
23
23
|
this.config.ability = value;
|
|
24
24
|
return this;
|
|
25
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Row actions: include in the ⋮ menu (default) or show inline.
|
|
28
|
+
* Pass `false` (or use {@link ungrouped}) for a visible toolbar button.
|
|
29
|
+
*/
|
|
30
|
+
grouped(value = true) {
|
|
31
|
+
this.config.grouped = value;
|
|
32
|
+
return this;
|
|
33
|
+
}
|
|
34
|
+
/** Shorthand: show this row action outside the ⋮ menu. */
|
|
35
|
+
ungrouped() {
|
|
36
|
+
return this.grouped(false);
|
|
37
|
+
}
|
|
26
38
|
build() {
|
|
27
39
|
return { ...this.config };
|
|
28
40
|
}
|
|
@@ -49,23 +61,24 @@ export class ActionBuilder {
|
|
|
49
61
|
this.actionInstances.push(action);
|
|
50
62
|
return action;
|
|
51
63
|
}
|
|
52
|
-
|
|
53
|
-
return this.track(new
|
|
64
|
+
view(label = 'View') {
|
|
65
|
+
return this.track(new RowAction('view', label).icon('eye'));
|
|
54
66
|
}
|
|
55
67
|
edit(label = 'Edit') {
|
|
56
|
-
return this.track(new RowAction('edit', label));
|
|
57
|
-
}
|
|
58
|
-
view(label = 'View') {
|
|
59
|
-
return this.track(new RowAction('view', label));
|
|
68
|
+
return this.track(new RowAction('edit', label).icon('pencil'));
|
|
60
69
|
}
|
|
61
70
|
delete(label = 'Delete') {
|
|
62
|
-
return this.track(new RowAction('delete', label).color('danger'));
|
|
71
|
+
return this.track(new RowAction('delete', label).color('danger').icon('trash'));
|
|
63
72
|
}
|
|
64
73
|
bulkDelete(label = 'Delete selected') {
|
|
65
74
|
return this.track(new BulkAction('delete', label)
|
|
66
75
|
.color('danger')
|
|
76
|
+
.icon('trash')
|
|
67
77
|
.confirm('Delete selected records?'));
|
|
68
78
|
}
|
|
79
|
+
create(label = 'Create') {
|
|
80
|
+
return this.track(new HeaderAction('create', label).icon('plus'));
|
|
81
|
+
}
|
|
69
82
|
header(name, label) {
|
|
70
83
|
return this.track(new HeaderAction(name, label));
|
|
71
84
|
}
|
|
@@ -88,8 +101,8 @@ export function actions(callback) {
|
|
|
88
101
|
export function defaultActions() {
|
|
89
102
|
return actions((a) => {
|
|
90
103
|
a.create();
|
|
91
|
-
a.edit();
|
|
92
104
|
a.view();
|
|
105
|
+
a.edit();
|
|
93
106
|
a.delete();
|
|
94
107
|
a.bulkDelete();
|
|
95
108
|
});
|
package/dist/actions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"AAEA,MAAe,UAAU;IACb,MAAM,CAAI;IAEpB,YAAsB,MAAS;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,KAAa;QACjB,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,KAA4B;QAChC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,KAAa;QAChB,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,KAAa;QACnB,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,KAAa;QACnB,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK;QACH,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;CACF;AAED,MAAM,YAAa,SAAQ,UAAwB;IACjD,YAAY,IAAY,EAAE,KAAa;QACrC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC9C,CAAC;CACF;AAED,MAAM,SAAU,SAAQ,UAAwB;IAC9C,YAAY,IAAY,EAAE,KAAa;QACrC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3C,CAAC;CACF;AAED,MAAM,UAAW,SAAQ,UAAwB;IAC/C,YAAY,IAAY,EAAE,KAAa;QACrC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC;CACF;AAED,qDAAqD;AACrD,MAAM,OAAO,aAAa;IACP,eAAe,GAA+B,EAAE,CAAC;IAE1D,KAAK,CAAqC,MAAS;QACzD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default max width for form and show pages when panel/resource omit `contentMaxWidth`.
|
|
3
|
+
* Screen tokens map to breakpoint widths (container-like).
|
|
4
|
+
*/
|
|
5
|
+
export declare const DEFAULT_CONTENT_MAX_WIDTH = "screen-xl";
|
|
1
6
|
export interface ContentMaxWidthResolved {
|
|
2
|
-
/** Tailwind class such as `max-w-
|
|
7
|
+
/** Tailwind class such as `w-full max-w-screen-xl` or `max-w-none`. */
|
|
3
8
|
className: string;
|
|
4
9
|
/** Inline `max-width: …` when a CSS length was provided. */
|
|
5
10
|
style?: string;
|
|
@@ -8,11 +13,13 @@ export interface ContentMaxWidthResolved {
|
|
|
8
13
|
* Resolve panel/resource `contentMaxWidth` for form + show layouts.
|
|
9
14
|
*
|
|
10
15
|
* Accepts:
|
|
11
|
-
* -
|
|
12
|
-
* -
|
|
16
|
+
* - Screen (container) token: `screen-lg`, `screen-xl`, `screen-2xl`
|
|
17
|
+
* - Scale token: `3xl`, `5xl`, `7xl`, `full`, `none`
|
|
18
|
+
* - Full class: `max-w-screen-xl`
|
|
13
19
|
* - CSS length: `80rem`, `1200px`, `90%`
|
|
14
20
|
*
|
|
15
|
-
* Default: `
|
|
21
|
+
* Default: `screen-xl` (1280px). Override per panel with `.contentMaxWidth('…')`
|
|
22
|
+
* or per resource with `static contentMaxWidth = '…'`.
|
|
16
23
|
*/
|
|
17
24
|
export declare function resolveContentMaxWidth(value?: string | null): ContentMaxWidthResolved;
|
|
18
25
|
//# sourceMappingURL=content-max-width.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-max-width.d.ts","sourceRoot":"","sources":["../src/content-max-width.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"content-max-width.d.ts","sourceRoot":"","sources":["../src/content-max-width.ts"],"names":[],"mappings":"AAwBA;;;GAGG;AACH,eAAO,MAAM,yBAAyB,cAAc,CAAC;AAErD,MAAM,WAAW,uBAAuB;IACtC,uEAAuE;IACvE,SAAS,EAAE,MAAM,CAAC;IAClB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AASD;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,uBAAuB,CAarF"}
|
|
@@ -15,26 +15,46 @@ const TAILWIND_TOKENS = new Set([
|
|
|
15
15
|
'none',
|
|
16
16
|
'prose',
|
|
17
17
|
'screen',
|
|
18
|
+
'screen-sm',
|
|
19
|
+
'screen-md',
|
|
20
|
+
'screen-lg',
|
|
21
|
+
'screen-xl',
|
|
22
|
+
'screen-2xl',
|
|
18
23
|
]);
|
|
24
|
+
/**
|
|
25
|
+
* Default max width for form and show pages when panel/resource omit `contentMaxWidth`.
|
|
26
|
+
* Screen tokens map to breakpoint widths (container-like).
|
|
27
|
+
*/
|
|
28
|
+
export const DEFAULT_CONTENT_MAX_WIDTH = 'screen-xl';
|
|
29
|
+
function classForToken(token) {
|
|
30
|
+
if (token === 'none')
|
|
31
|
+
return 'w-full max-w-none';
|
|
32
|
+
if (token === 'full')
|
|
33
|
+
return 'w-full max-w-full';
|
|
34
|
+
// Screen / scale tokens: fill the content column up to the cap.
|
|
35
|
+
return `w-full max-w-${token}`;
|
|
36
|
+
}
|
|
19
37
|
/**
|
|
20
38
|
* Resolve panel/resource `contentMaxWidth` for form + show layouts.
|
|
21
39
|
*
|
|
22
40
|
* Accepts:
|
|
23
|
-
* -
|
|
24
|
-
* -
|
|
41
|
+
* - Screen (container) token: `screen-lg`, `screen-xl`, `screen-2xl`
|
|
42
|
+
* - Scale token: `3xl`, `5xl`, `7xl`, `full`, `none`
|
|
43
|
+
* - Full class: `max-w-screen-xl`
|
|
25
44
|
* - CSS length: `80rem`, `1200px`, `90%`
|
|
26
45
|
*
|
|
27
|
-
* Default: `
|
|
46
|
+
* Default: `screen-xl` (1280px). Override per panel with `.contentMaxWidth('…')`
|
|
47
|
+
* or per resource with `static contentMaxWidth = '…'`.
|
|
28
48
|
*/
|
|
29
49
|
export function resolveContentMaxWidth(value) {
|
|
30
|
-
const raw = (value ??
|
|
50
|
+
const raw = (value ?? DEFAULT_CONTENT_MAX_WIDTH).trim();
|
|
31
51
|
if (!raw)
|
|
32
|
-
return { className:
|
|
52
|
+
return { className: classForToken(DEFAULT_CONTENT_MAX_WIDTH) };
|
|
33
53
|
if (raw.startsWith('max-w-')) {
|
|
34
|
-
return { className: raw };
|
|
54
|
+
return { className: raw.includes('w-full') ? raw : `w-full ${raw}` };
|
|
35
55
|
}
|
|
36
56
|
if (TAILWIND_TOKENS.has(raw)) {
|
|
37
|
-
return { className: raw
|
|
57
|
+
return { className: classForToken(raw) };
|
|
38
58
|
}
|
|
39
59
|
return { className: 'w-full max-w-none', style: `max-width: ${raw}` };
|
|
40
60
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-max-width.js","sourceRoot":"","sources":["../src/content-max-width.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IAC9B,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,MAAM;IACN,OAAO;IACP,QAAQ;
|
|
1
|
+
{"version":3,"file":"content-max-width.js","sourceRoot":"","sources":["../src/content-max-width.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IAC9B,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,MAAM;IACN,OAAO;IACP,QAAQ;IACR,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,YAAY;CACb,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,WAAW,CAAC;AASrD,SAAS,aAAa,CAAC,KAAa;IAClC,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,mBAAmB,CAAC;IACjD,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,mBAAmB,CAAC;IACjD,gEAAgE;IAChE,OAAO,gBAAgB,KAAK,EAAE,CAAC;AACjC,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAqB;IAC1D,MAAM,GAAG,GAAG,CAAC,KAAK,IAAI,yBAAyB,CAAC,CAAC,IAAI,EAAE,CAAC;IACxD,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,SAAS,EAAE,aAAa,CAAC,yBAAyB,CAAC,EAAE,CAAC;IAEzE,IAAI,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,GAAG,EAAE,EAAE,CAAC;IACvE,CAAC;IAED,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,SAAS,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;IAC3C,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,KAAK,EAAE,cAAc,GAAG,EAAE,EAAE,CAAC;AACxE,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Built-in default list page size when panel/resource omit `defaultPerPage`.
|
|
3
|
+
*/
|
|
4
|
+
export declare const DEFAULT_LIST_PER_PAGE = 15;
|
|
5
|
+
/** Common row-count choices shown in the list toolbar. */
|
|
6
|
+
export declare const LIST_PER_PAGE_OPTIONS: readonly [10, 15, 20, 25, 50];
|
|
7
|
+
/**
|
|
8
|
+
* Resolve effective default page size: resource → panel → built-in `15`.
|
|
9
|
+
* Invalid / missing values fall through to the next level.
|
|
10
|
+
*/
|
|
11
|
+
export declare function resolveDefaultPerPage(resourceDefault?: number | null, panelDefault?: number | null): number;
|
|
12
|
+
/**
|
|
13
|
+
* Toolbar select options, ensuring the active default is always present.
|
|
14
|
+
*/
|
|
15
|
+
export declare function resolvePerPageOptions(defaultPerPage: number): number[];
|
|
16
|
+
//# sourceMappingURL=default-per-page.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-per-page.d.ts","sourceRoot":"","sources":["../src/default-per-page.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC,0DAA0D;AAC1D,eAAO,MAAM,qBAAqB,+BAAgC,CAAC;AAEnE;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,EAC/B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,GAC3B,MAAM,CAOR;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,EAAE,CAKtE"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Built-in default list page size when panel/resource omit `defaultPerPage`.
|
|
3
|
+
*/
|
|
4
|
+
export const DEFAULT_LIST_PER_PAGE = 15;
|
|
5
|
+
/** Common row-count choices shown in the list toolbar. */
|
|
6
|
+
export const LIST_PER_PAGE_OPTIONS = [10, 15, 20, 25, 50];
|
|
7
|
+
/**
|
|
8
|
+
* Resolve effective default page size: resource → panel → built-in `15`.
|
|
9
|
+
* Invalid / missing values fall through to the next level.
|
|
10
|
+
*/
|
|
11
|
+
export function resolveDefaultPerPage(resourceDefault, panelDefault) {
|
|
12
|
+
for (const candidate of [resourceDefault, panelDefault, DEFAULT_LIST_PER_PAGE]) {
|
|
13
|
+
if (candidate == null)
|
|
14
|
+
continue;
|
|
15
|
+
const n = Math.round(Number(candidate));
|
|
16
|
+
if (Number.isFinite(n) && n >= 1)
|
|
17
|
+
return n;
|
|
18
|
+
}
|
|
19
|
+
return DEFAULT_LIST_PER_PAGE;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Toolbar select options, ensuring the active default is always present.
|
|
23
|
+
*/
|
|
24
|
+
export function resolvePerPageOptions(defaultPerPage) {
|
|
25
|
+
const options = new Set(LIST_PER_PAGE_OPTIONS);
|
|
26
|
+
const n = Math.round(Number(defaultPerPage));
|
|
27
|
+
if (Number.isFinite(n) && n >= 1)
|
|
28
|
+
options.add(n);
|
|
29
|
+
return [...options].sort((a, b) => a - b);
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=default-per-page.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-per-page.js","sourceRoot":"","sources":["../src/default-per-page.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAC;AAExC,0DAA0D;AAC1D,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAU,CAAC;AAEnE;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,eAA+B,EAC/B,YAA4B;IAE5B,KAAK,MAAM,SAAS,IAAI,CAAC,eAAe,EAAE,YAAY,EAAE,qBAAqB,CAAC,EAAE,CAAC;QAC/E,IAAI,SAAS,IAAI,IAAI;YAAE,SAAS;QAChC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;QACxC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,qBAAqB,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,cAAsB;IAC1D,MAAM,OAAO,GAAG,IAAI,GAAG,CAAS,qBAAqB,CAAC,CAAC;IACvD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;IAC7C,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5C,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { FieldConfig, FormSchema } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* How a field dehydrates into form state / request payload.
|
|
4
|
+
* Hosts use this to parse POST bodies and seed Alpine state.
|
|
5
|
+
*/
|
|
6
|
+
export type FieldValueKind = 'scalar' | 'number' | 'boolean' | 'array' | 'record' | 'nested' | 'html' | 'json';
|
|
7
|
+
/** Omit this key from the dehydrated payload (field was not in the request). */
|
|
8
|
+
export declare const FIELD_ABSENT: unique symbol;
|
|
9
|
+
/** Omit this key from Alpine form state (another widget owns it). */
|
|
10
|
+
export declare const FIELD_SKIP: unique symbol;
|
|
11
|
+
export type FieldValueHost = Pick<FieldConfig, 'type'> & Partial<FieldConfig>;
|
|
12
|
+
export interface FieldTypeDefinition {
|
|
13
|
+
type: string;
|
|
14
|
+
valueKind?: FieldValueKind;
|
|
15
|
+
/** Hint for native `<input type>` when no custom view is registered. */
|
|
16
|
+
inputType?: string;
|
|
17
|
+
/** Human label for docs / field galleries. */
|
|
18
|
+
label?: string;
|
|
19
|
+
/** Stored / adapter value → Alpine form state. */
|
|
20
|
+
hydrate?: (value: unknown, field: FieldValueHost) => unknown;
|
|
21
|
+
/**
|
|
22
|
+
* Request body → stored value.
|
|
23
|
+
* Return {@link FIELD_ABSENT} to leave the key off the payload.
|
|
24
|
+
*/
|
|
25
|
+
dehydrate?: (field: FieldConfig, input: Record<string, unknown>) => unknown;
|
|
26
|
+
/**
|
|
27
|
+
* Empty form state when there is no record value or static default.
|
|
28
|
+
* Return {@link FIELD_SKIP} to omit the key (e.g. belongsTo combobox).
|
|
29
|
+
*/
|
|
30
|
+
empty?: (field: FieldValueHost) => unknown;
|
|
31
|
+
}
|
|
32
|
+
/** Register or replace a field type (built-in or host-defined). Merges with any existing definition. */
|
|
33
|
+
export declare function registerFieldType(definition: FieldTypeDefinition): void;
|
|
34
|
+
export declare function getFieldType(type: string): FieldTypeDefinition | undefined;
|
|
35
|
+
export declare function listFieldTypes(): FieldTypeDefinition[];
|
|
36
|
+
export declare function fieldValueKind(type: string): FieldValueKind;
|
|
37
|
+
export declare function isArrayFieldType(type: string): boolean;
|
|
38
|
+
export declare function isJsonFieldType(type: string): boolean;
|
|
39
|
+
/** Stored / adapter value → Alpine form state. */
|
|
40
|
+
export declare function hydrateField(field: FieldValueHost, value: unknown): unknown;
|
|
41
|
+
/**
|
|
42
|
+
* Request body → stored value.
|
|
43
|
+
* Returns {@link FIELD_ABSENT} when the field should be omitted from the payload.
|
|
44
|
+
*/
|
|
45
|
+
export declare function dehydrateField(field: FieldConfig, input: Record<string, unknown>): unknown;
|
|
46
|
+
/** Empty form state when there is no record value or static default. */
|
|
47
|
+
export declare function emptyFieldValue(field: FieldValueHost): unknown;
|
|
48
|
+
/**
|
|
49
|
+
* Seed Alpine state for one field from a record (or filled page data).
|
|
50
|
+
* Returns {@link FIELD_SKIP} when the field should not be written.
|
|
51
|
+
*/
|
|
52
|
+
export declare function fieldFormState(field: FieldConfig, source: Record<string, unknown> | null | undefined): unknown;
|
|
53
|
+
export declare function assignFieldFormState(state: Record<string, unknown>, field: FieldConfig, source: Record<string, unknown> | null | undefined): void;
|
|
54
|
+
export declare function emptyRepeaterItem(schema: Pick<FormSchema, 'fields'>): Record<string, unknown>;
|
|
55
|
+
//# sourceMappingURL=field-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field-registry.d.ts","sourceRoot":"","sources":["../src/field-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAa,UAAU,EAAE,MAAM,YAAY,CAAC;AAcrE;;;GAGG;AACH,MAAM,MAAM,cAAc,GACtB,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,MAAM,CAAC;AAEX,gFAAgF;AAChF,eAAO,MAAM,YAAY,EAAE,OAAO,MAAqC,CAAC;AAExE,qEAAqE;AACrE,eAAO,MAAM,UAAU,EAAE,OAAO,MAAmC,CAAC;AAEpE,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AAE9E,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,KAAK,OAAO,CAAC;IAC7D;;;OAGG;IACH,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC;IAC5E;;;OAGG;IACH,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,OAAO,CAAC;CAC5C;AAID,wGAAwG;AACxG,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,mBAAmB,GAAG,IAAI,CAKvE;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAE1E;AAED,wBAAgB,cAAc,IAAI,mBAAmB,EAAE,CAEtD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAE3D;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGtD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGrD;AA2ID,kDAAkD;AAClD,wBAAgB,YAAY,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAI3E;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAS1F;AAED,wEAAwE;AACxE,wBAAgB,eAAe,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAI9D;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,GACjD,OAAO,CAQT;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,GACjD,IAAI,CAGN;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAO7F"}
|