@shamar/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 (77) hide show
  1. package/dist/actions.d.ts +39 -0
  2. package/dist/actions.d.ts.map +1 -0
  3. package/dist/actions.js +97 -0
  4. package/dist/actions.js.map +1 -0
  5. package/dist/alignment.d.ts +13 -0
  6. package/dist/alignment.d.ts.map +1 -0
  7. package/dist/alignment.js +34 -0
  8. package/dist/alignment.js.map +1 -0
  9. package/dist/currency.d.ts +16 -0
  10. package/dist/currency.d.ts.map +1 -0
  11. package/dist/currency.js +52 -0
  12. package/dist/currency.js.map +1 -0
  13. package/dist/form.d.ts +281 -0
  14. package/dist/form.d.ts.map +1 -0
  15. package/dist/form.js +756 -0
  16. package/dist/form.js.map +1 -0
  17. package/dist/index.d.ts +19 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +19 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/infolist.d.ts +90 -0
  22. package/dist/infolist.d.ts.map +1 -0
  23. package/dist/infolist.js +273 -0
  24. package/dist/infolist.js.map +1 -0
  25. package/dist/labels.d.ts +6 -0
  26. package/dist/labels.d.ts.map +1 -0
  27. package/dist/labels.js +26 -0
  28. package/dist/labels.js.map +1 -0
  29. package/dist/panel.d.ts +20 -0
  30. package/dist/panel.d.ts.map +1 -0
  31. package/dist/panel.js +46 -0
  32. package/dist/panel.js.map +1 -0
  33. package/dist/permissions.d.ts +43 -0
  34. package/dist/permissions.d.ts.map +1 -0
  35. package/dist/permissions.js +152 -0
  36. package/dist/permissions.js.map +1 -0
  37. package/dist/policy-types.d.ts +23 -0
  38. package/dist/policy-types.d.ts.map +1 -0
  39. package/dist/policy-types.js +8 -0
  40. package/dist/policy-types.js.map +1 -0
  41. package/dist/reactivity.d.ts +23 -0
  42. package/dist/reactivity.d.ts.map +1 -0
  43. package/dist/reactivity.js +68 -0
  44. package/dist/reactivity.js.map +1 -0
  45. package/dist/record-value.d.ts +31 -0
  46. package/dist/record-value.d.ts.map +1 -0
  47. package/dist/record-value.js +118 -0
  48. package/dist/record-value.js.map +1 -0
  49. package/dist/registry.d.ts +16 -0
  50. package/dist/registry.d.ts.map +1 -0
  51. package/dist/registry.js +49 -0
  52. package/dist/registry.js.map +1 -0
  53. package/dist/relation.d.ts +28 -0
  54. package/dist/relation.d.ts.map +1 -0
  55. package/dist/relation.js +69 -0
  56. package/dist/relation.js.map +1 -0
  57. package/dist/resource.d.ts +100 -0
  58. package/dist/resource.d.ts.map +1 -0
  59. package/dist/resource.js +165 -0
  60. package/dist/resource.js.map +1 -0
  61. package/dist/schemas.d.ts +193 -0
  62. package/dist/schemas.d.ts.map +1 -0
  63. package/dist/schemas.js +501 -0
  64. package/dist/schemas.js.map +1 -0
  65. package/dist/table.d.ts +71 -0
  66. package/dist/table.d.ts.map +1 -0
  67. package/dist/table.js +172 -0
  68. package/dist/table.js.map +1 -0
  69. package/dist/types.d.ts +474 -0
  70. package/dist/types.d.ts.map +1 -0
  71. package/dist/types.js +2 -0
  72. package/dist/types.js.map +1 -0
  73. package/dist/validation.d.ts +27 -0
  74. package/dist/validation.d.ts.map +1 -0
  75. package/dist/validation.js +182 -0
  76. package/dist/validation.js.map +1 -0
  77. package/package.json +30 -0
@@ -0,0 +1,39 @@
1
+ import type { ActionConfig } from './types.js';
2
+ declare abstract class ActionBase<T extends ActionConfig> {
3
+ protected config: T;
4
+ protected constructor(config: T);
5
+ label(value: string): this;
6
+ color(value: ActionConfig['color']): this;
7
+ icon(value: string): this;
8
+ confirm(value: string): this;
9
+ ability(value: string): this;
10
+ build(): T;
11
+ }
12
+ declare class HeaderAction extends ActionBase<ActionConfig> {
13
+ constructor(name: string, label: string);
14
+ }
15
+ declare class RowAction extends ActionBase<ActionConfig> {
16
+ constructor(name: string, label: string);
17
+ }
18
+ declare class BulkAction extends ActionBase<ActionConfig> {
19
+ constructor(name: string, label: string);
20
+ }
21
+ /** Filament-style action registry for a resource. */
22
+ export declare class ActionBuilder {
23
+ private readonly actionInstances;
24
+ private track;
25
+ create(label?: string): HeaderAction;
26
+ edit(label?: string): RowAction;
27
+ view(label?: string): RowAction;
28
+ delete(label?: string): RowAction;
29
+ bulkDelete(label?: string): BulkAction;
30
+ header(name: string, label: string): HeaderAction;
31
+ row(name: string, label: string): RowAction;
32
+ bulk(name: string, label: string): BulkAction;
33
+ build(): ActionConfig[];
34
+ }
35
+ export declare function actions(callback: (builder: ActionBuilder) => ActionBuilder | void): ActionConfig[];
36
+ /** Default CRUD actions (Filament defaults). */
37
+ export declare function defaultActions(): ActionConfig[];
38
+ export {};
39
+ //# sourceMappingURL=actions.d.ts.map
@@ -0,0 +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,MAAM,CAAC,KAAK,SAAW,GAAG,YAAY;IAItC,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;IAQjD,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"}
@@ -0,0 +1,97 @@
1
+ class ActionBase {
2
+ config;
3
+ constructor(config) {
4
+ this.config = config;
5
+ }
6
+ label(value) {
7
+ this.config.label = value;
8
+ return this;
9
+ }
10
+ color(value) {
11
+ this.config.color = value;
12
+ return this;
13
+ }
14
+ icon(value) {
15
+ this.config.icon = value;
16
+ return this;
17
+ }
18
+ confirm(value) {
19
+ this.config.confirm = value;
20
+ return this;
21
+ }
22
+ ability(value) {
23
+ this.config.ability = value;
24
+ return this;
25
+ }
26
+ build() {
27
+ return { ...this.config };
28
+ }
29
+ }
30
+ class HeaderAction extends ActionBase {
31
+ constructor(name, label) {
32
+ super({ name, label, placement: 'header' });
33
+ }
34
+ }
35
+ class RowAction extends ActionBase {
36
+ constructor(name, label) {
37
+ super({ name, label, placement: 'row' });
38
+ }
39
+ }
40
+ class BulkAction extends ActionBase {
41
+ constructor(name, label) {
42
+ super({ name, label, placement: 'bulk' });
43
+ }
44
+ }
45
+ /** Filament-style action registry for a resource. */
46
+ export class ActionBuilder {
47
+ actionInstances = [];
48
+ track(action) {
49
+ this.actionInstances.push(action);
50
+ return action;
51
+ }
52
+ create(label = 'Create') {
53
+ return this.track(new HeaderAction('create', label));
54
+ }
55
+ edit(label = 'Edit') {
56
+ return this.track(new RowAction('edit', label));
57
+ }
58
+ view(label = 'View') {
59
+ return this.track(new RowAction('view', label));
60
+ }
61
+ delete(label = 'Delete') {
62
+ return this.track(new RowAction('delete', label).color('danger'));
63
+ }
64
+ bulkDelete(label = 'Delete selected') {
65
+ return this.track(new BulkAction('delete', label)
66
+ .color('danger')
67
+ .confirm('Delete selected records?'));
68
+ }
69
+ header(name, label) {
70
+ return this.track(new HeaderAction(name, label));
71
+ }
72
+ row(name, label) {
73
+ return this.track(new RowAction(name, label));
74
+ }
75
+ bulk(name, label) {
76
+ return this.track(new BulkAction(name, label));
77
+ }
78
+ build() {
79
+ return this.actionInstances.map((action) => action.build());
80
+ }
81
+ }
82
+ export function actions(callback) {
83
+ const builder = new ActionBuilder();
84
+ callback(builder);
85
+ return builder.build();
86
+ }
87
+ /** Default CRUD actions (Filament defaults). */
88
+ export function defaultActions() {
89
+ return actions((a) => {
90
+ a.create();
91
+ a.edit();
92
+ a.view();
93
+ a.delete();
94
+ a.bulkDelete();
95
+ });
96
+ }
97
+ //# sourceMappingURL=actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /** Filament-style horizontal alignment. */
2
+ export type Alignment = 'start' | 'center' | 'end' | 'left' | 'right' | 'justify';
3
+ /** Filament-style vertical alignment (table cells). */
4
+ export type VerticalAlignment = 'start' | 'center' | 'end';
5
+ /** Map alignment to Tailwind text-align utilities. */
6
+ export declare function alignmentTextClass(alignment?: Alignment | null): string;
7
+ /** Map vertical alignment to Tailwind vertical-align utilities (table cells). */
8
+ export declare function verticalAlignmentClass(alignment?: VerticalAlignment | null): string;
9
+ export declare function resolveAlignmentClass(options: {
10
+ alignment?: Alignment | null;
11
+ verticalAlignment?: VerticalAlignment | null;
12
+ }): string;
13
+ //# sourceMappingURL=alignment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alignment.d.ts","sourceRoot":"","sources":["../src/alignment.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;AAElF,uDAAuD;AACvD,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;AAE3D,sDAAsD;AACtD,wBAAgB,kBAAkB,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI,GAAG,MAAM,CAcvE;AAED,iFAAiF;AACjF,wBAAgB,sBAAsB,CACpC,SAAS,CAAC,EAAE,iBAAiB,GAAG,IAAI,GACnC,MAAM,CAUR;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE;IAC7C,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAC7B,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;CAC9C,GAAG,MAAM,CAIT"}
@@ -0,0 +1,34 @@
1
+ /** Map alignment to Tailwind text-align utilities. */
2
+ export function alignmentTextClass(alignment) {
3
+ switch (alignment) {
4
+ case 'center':
5
+ return 'text-center';
6
+ case 'end':
7
+ case 'right':
8
+ return 'text-right';
9
+ case 'justify':
10
+ return 'text-justify';
11
+ case 'start':
12
+ case 'left':
13
+ default:
14
+ return 'text-left';
15
+ }
16
+ }
17
+ /** Map vertical alignment to Tailwind vertical-align utilities (table cells). */
18
+ export function verticalAlignmentClass(alignment) {
19
+ switch (alignment) {
20
+ case 'start':
21
+ return 'align-top';
22
+ case 'end':
23
+ return 'align-bottom';
24
+ case 'center':
25
+ default:
26
+ return 'align-middle';
27
+ }
28
+ }
29
+ export function resolveAlignmentClass(options) {
30
+ return [alignmentTextClass(options.alignment), verticalAlignmentClass(options.verticalAlignment)]
31
+ .filter(Boolean)
32
+ .join(' ');
33
+ }
34
+ //# sourceMappingURL=alignment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alignment.js","sourceRoot":"","sources":["../src/alignment.ts"],"names":[],"mappings":"AAMA,sDAAsD;AACtD,MAAM,UAAU,kBAAkB,CAAC,SAA4B;IAC7D,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,QAAQ;YACX,OAAO,aAAa,CAAC;QACvB,KAAK,KAAK,CAAC;QACX,KAAK,OAAO;YACV,OAAO,YAAY,CAAC;QACtB,KAAK,SAAS;YACZ,OAAO,cAAc,CAAC;QACxB,KAAK,OAAO,CAAC;QACb,KAAK,MAAM,CAAC;QACZ;YACE,OAAO,WAAW,CAAC;IACvB,CAAC;AACH,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,sBAAsB,CACpC,SAAoC;IAEpC,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,OAAO;YACV,OAAO,WAAW,CAAC;QACrB,KAAK,KAAK;YACR,OAAO,cAAc,CAAC;QACxB,KAAK,QAAQ,CAAC;QACd;YACE,OAAO,cAAc,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAGrC;IACC,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,sBAAsB,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;SAC9F,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC"}
@@ -0,0 +1,16 @@
1
+ /** Shared currency options for form fields, table columns, and infolist entries. */
2
+ export interface CurrencyOptions {
3
+ code: string;
4
+ locale?: string;
5
+ /** Fraction digits (default 2). */
6
+ precision?: number;
7
+ }
8
+ export type CurrencyInput = string | CurrencyOptions;
9
+ export declare function normalizeCurrencyOptions(codeOrOptions?: CurrencyInput, options?: Omit<CurrencyOptions, 'code'>): CurrencyOptions;
10
+ export declare function currencySymbol(code: string, locale?: string): string;
11
+ /**
12
+ * Format a numeric value as currency for tables / entries.
13
+ * Returns null when the value is blank or not a finite number.
14
+ */
15
+ export declare function formatCurrencyValue(value: unknown, currency: CurrencyOptions): string | null;
16
+ //# sourceMappingURL=currency.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"currency.d.ts","sourceRoot":"","sources":["../src/currency.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,eAAe,CAAC;AAErD,wBAAgB,wBAAwB,CACtC,aAAa,GAAE,aAAqB,EACpC,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,GACtC,eAAe,CAajB;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAWpE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,eAAe,GACxB,MAAM,GAAG,IAAI,CAiBf"}
@@ -0,0 +1,52 @@
1
+ export function normalizeCurrencyOptions(codeOrOptions = 'USD', options) {
2
+ if (typeof codeOrOptions === 'object' && codeOrOptions) {
3
+ return {
4
+ code: codeOrOptions.code || 'USD',
5
+ locale: codeOrOptions.locale,
6
+ precision: codeOrOptions.precision ?? 2,
7
+ };
8
+ }
9
+ return {
10
+ code: codeOrOptions || 'USD',
11
+ locale: options?.locale,
12
+ precision: options?.precision ?? 2,
13
+ };
14
+ }
15
+ export function currencySymbol(code, locale) {
16
+ try {
17
+ const parts = new Intl.NumberFormat(locale, {
18
+ style: 'currency',
19
+ currency: code,
20
+ currencyDisplay: 'narrowSymbol',
21
+ }).formatToParts(0);
22
+ return parts.find((part) => part.type === 'currency')?.value ?? code;
23
+ }
24
+ catch {
25
+ return code;
26
+ }
27
+ }
28
+ /**
29
+ * Format a numeric value as currency for tables / entries.
30
+ * Returns null when the value is blank or not a finite number.
31
+ */
32
+ export function formatCurrencyValue(value, currency) {
33
+ if (value == null || value === '')
34
+ return null;
35
+ const num = typeof value === 'number' ? value : Number(value);
36
+ if (!Number.isFinite(num))
37
+ return null;
38
+ const precision = currency.precision ?? 2;
39
+ try {
40
+ return new Intl.NumberFormat(currency.locale, {
41
+ style: 'currency',
42
+ currency: currency.code || 'USD',
43
+ minimumFractionDigits: precision,
44
+ maximumFractionDigits: precision,
45
+ }).format(num);
46
+ }
47
+ catch {
48
+ const symbol = currencySymbol(currency.code || 'USD', currency.locale);
49
+ return `${symbol}${num.toFixed(precision)}`;
50
+ }
51
+ }
52
+ //# sourceMappingURL=currency.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"currency.js","sourceRoot":"","sources":["../src/currency.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,wBAAwB,CACtC,gBAA+B,KAAK,EACpC,OAAuC;IAEvC,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,aAAa,EAAE,CAAC;QACvD,OAAO;YACL,IAAI,EAAE,aAAa,CAAC,IAAI,IAAI,KAAK;YACjC,MAAM,EAAE,aAAa,CAAC,MAAM;YAC5B,SAAS,EAAE,aAAa,CAAC,SAAS,IAAI,CAAC;SACxC,CAAC;IACJ,CAAC;IACD,OAAO;QACL,IAAI,EAAE,aAAa,IAAI,KAAK;QAC5B,MAAM,EAAE,OAAO,EAAE,MAAM;QACvB,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,CAAC;KACnC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,MAAe;IAC1D,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;YAC1C,KAAK,EAAE,UAAU;YACjB,QAAQ,EAAE,IAAI;YACd,eAAe,EAAE,cAAc;SAChC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QACpB,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC;IACvE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAAc,EACd,QAAyB;IAEzB,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAC/C,MAAM,GAAG,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAEvC,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,IAAI,CAAC,CAAC;IAC1C,IAAI,CAAC;QACH,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE;YAC5C,KAAK,EAAE,UAAU;YACjB,QAAQ,EAAE,QAAQ,CAAC,IAAI,IAAI,KAAK;YAChC,qBAAqB,EAAE,SAAS;YAChC,qBAAqB,EAAE,SAAS;SACjC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,IAAI,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QACvE,OAAO,GAAG,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;IAC9C,CAAC;AACH,CAAC"}
package/dist/form.d.ts ADDED
@@ -0,0 +1,281 @@
1
+ import type { BoolOrClosure, FieldConfig, FieldType, FormSchema, LiveMode, StringOrClosure, UniqueOptions, UnknownOrClosure, FieldContext, ColumnSpan } from './types.js';
2
+ import { type SchemaItem } from './schemas.js';
3
+ import { type CurrencyInput, type CurrencyOptions } from './currency.js';
4
+ import type { Alignment } from './alignment.js';
5
+ import { type RelationshipOptions } from './relation.js';
6
+ import type { RelationWidget } from './types.js';
7
+ /**
8
+ * Base for form field components (`TextInput::make()` style).
9
+ * Field chains only expose field modifiers — never sibling factories.
10
+ */
11
+ export declare abstract class FormComponent {
12
+ /** Shared schema leaf marker (Filament 5 schemas). */
13
+ readonly _schemaLeaf: "field";
14
+ protected config: FieldConfig;
15
+ protected constructor(name: string, type: FieldType);
16
+ /** Apply Filament-style relationship binding. */
17
+ protected applyRelationship(resource: string, titleAttribute: string, options?: RelationshipOptions): void;
18
+ protected setCreateOption(value: boolean): void;
19
+ protected setCreateAndEditOption(value: boolean): void;
20
+ protected setRelationWidget(widget: RelationWidget): void;
21
+ label(value: StringOrClosure): this;
22
+ required(value?: BoolOrClosure): this;
23
+ searchable(value?: boolean): this;
24
+ placeholder(value: StringOrClosure): this;
25
+ /** Helper text below the field. Alias: `helperText()`. */
26
+ help(value: StringOrClosure): this;
27
+ /** Filament-style alias for `help()`. */
28
+ helperText(value: StringOrClosure): this;
29
+ /** Short text beside the label. */
30
+ hint(value: StringOrClosure): this;
31
+ hiddenOnForm(value?: boolean): this;
32
+ hiddenOnDetail(value?: boolean): this;
33
+ readonly(value?: BoolOrClosure): this;
34
+ disabled(value?: BoolOrClosure): this;
35
+ visible(value?: BoolOrClosure): this;
36
+ /**
37
+ * Hide when true (inverse of {@link visible}).
38
+ * Closures receive the same FieldContext as `visible` / `required`.
39
+ */
40
+ hidden(value?: BoolOrClosure): this;
41
+ dehydrated(value?: boolean): this;
42
+ default(value: UnknownOrClosure): this;
43
+ createOnly(value?: boolean): this;
44
+ columnSpan(value: ColumnSpan): this;
45
+ colspan(value: ColumnSpan): this;
46
+ columnSpanFull(): this;
47
+ colspanFull(): this;
48
+ columnStart(value: number): this;
49
+ /** Filament-style horizontal alignment of the field control. */
50
+ alignment(value: Alignment): this;
51
+ alignStart(): this;
52
+ alignCenter(): this;
53
+ alignEnd(): this;
54
+ alignJustify(): this;
55
+ alignLeft(): this;
56
+ alignRight(): this;
57
+ inline(value?: boolean): this;
58
+ rows(value: number): this;
59
+ prefix(value: string): this;
60
+ suffix(value: string): this;
61
+ /** Filament-style: prefix inside (default) or outside the input border. */
62
+ inlinePrefix(value?: boolean): this;
63
+ /** Filament-style: suffix inside (default) or outside the input border. */
64
+ inlineSuffix(value?: boolean): this;
65
+ /** Set both prefix and suffix inline mode. */
66
+ inlineAffixes(value?: boolean): this;
67
+ prefixIcon(value: string): this;
68
+ suffixIcon(value: string): this;
69
+ autocomplete(value: string): this;
70
+ inputMode(value: string): this;
71
+ /** Exact string length (also sets minLength + maxLength). */
72
+ length(value: number): this;
73
+ minLength(value: number): this;
74
+ maxLength(value: number): this;
75
+ minValue(value: number | string): this;
76
+ /** Filament alias for numeric/date lower bound. */
77
+ min(value: number | string): this;
78
+ maxValue(value: number | string): this;
79
+ /** Filament alias for numeric/date upper bound. */
80
+ max(value: number | string): this;
81
+ step(value: number | string): this;
82
+ /** HTML `pattern` + server-side RegExp check. */
83
+ pattern(value: string): this;
84
+ /** Alias for `pattern()`. */
85
+ regex(value: string): this;
86
+ copyable(value?: boolean): this;
87
+ datalist(values: string[]): this;
88
+ extraInputAttributes(attrs: Record<string, string>, options?: {
89
+ merge?: boolean;
90
+ }): this;
91
+ /**
92
+ * Re-evaluate form state while typing (Filament-style).
93
+ */
94
+ live(mode?: LiveMode): this;
95
+ afterStateUpdated(callback: (ctx: FieldContext) => void | Promise<void>): this;
96
+ unique(options?: boolean | UniqueOptions): this;
97
+ /** @internal */
98
+ build(): FieldConfig;
99
+ }
100
+ /** Filament `TextInput::make()`. */
101
+ export declare class TextInput extends FormComponent {
102
+ static make(name: string): TextInput;
103
+ private constructor();
104
+ email(): this;
105
+ password(): this;
106
+ /** Filament `revealable()` — show/hide password toggle. */
107
+ revealable(value?: boolean): this;
108
+ tel(): this;
109
+ url(): this;
110
+ numeric(): this;
111
+ integer(): this;
112
+ /**
113
+ * Format a numeric field as currency (display via Intl; value stays numeric).
114
+ * Sets `numeric()` and a currency-symbol prefix when none is set.
115
+ */
116
+ currency(codeOrOptions?: CurrencyInput, options?: Omit<CurrencyOptions, 'code'>): this;
117
+ }
118
+ /** Filament `Textarea::make()`. */
119
+ export declare class Textarea extends FormComponent {
120
+ static make(name: string): Textarea;
121
+ private constructor();
122
+ }
123
+ /** Filament `Select::make()`. */
124
+ export declare class Select extends FormComponent {
125
+ static make(name: string): Select;
126
+ private constructor();
127
+ options(entries: Array<{
128
+ label: string;
129
+ value: string | number;
130
+ }>): this;
131
+ multiple(value?: boolean): this;
132
+ /**
133
+ * When `false`, omit the blank placeholder option (Filament `selectablePlaceholder(false)`).
134
+ */
135
+ selectablePlaceholder(value?: boolean): this;
136
+ /**
137
+ * Use a native `<select>` instead of the Shamar combobox.
138
+ * Useful for simple forms or when custom OS select behaviour is preferred.
139
+ */
140
+ native(value?: boolean): this;
141
+ /**
142
+ * Filament-style relationship binding.
143
+ * @example Select.make('companyId').relationship('companies', 'name')
144
+ * @example Select.make('categoryIds').relationship('categories', 'name', { kind: 'manyToMany' }).multiple()
145
+ */
146
+ relationship(resource: string, titleAttribute: string, options?: RelationshipOptions): this;
147
+ /** Presentation widget (`combobox` default for BelongsTo / M2M). */
148
+ widget(value: RelationWidget): this;
149
+ /** Use radio buttons for a BelongsTo relationship. */
150
+ radio(): this;
151
+ /** Enable inline Create from the search query (quick-create). */
152
+ createOption(value?: boolean): this;
153
+ /** Enable Create & Edit (open related create dialog, then pick). */
154
+ createAndEditOption(value?: boolean): this;
155
+ }
156
+ /** Filament `Toggle::make()` — switch UI. */
157
+ export declare class Toggle extends FormComponent {
158
+ static make(name: string): Toggle;
159
+ private constructor();
160
+ }
161
+ /** Filament `Checkbox::make()` — native checkbox (distinct from Toggle). */
162
+ export declare class Checkbox extends FormComponent {
163
+ static make(name: string): Checkbox;
164
+ private constructor();
165
+ }
166
+ /** Filament `Radio::make()`. */
167
+ export declare class Radio extends FormComponent {
168
+ static make(name: string): Radio;
169
+ private constructor();
170
+ options(entries: Array<{
171
+ label: string;
172
+ value: string | number;
173
+ }>): this;
174
+ relationship(resource: string, titleAttribute: string, options?: RelationshipOptions): this;
175
+ createOption(value?: boolean): this;
176
+ createAndEditOption(value?: boolean): this;
177
+ }
178
+ /** Multi-option checkbox list (static options or manyToMany relationship). */
179
+ export declare class CheckboxList extends FormComponent {
180
+ static make(name: string): CheckboxList;
181
+ protected constructor(name: string);
182
+ options(entries: Array<{
183
+ label: string;
184
+ value: string | number;
185
+ }>): this;
186
+ relationship(resource: string, titleAttribute: string, options?: RelationshipOptions): this;
187
+ createOption(value?: boolean): this;
188
+ createAndEditOption(value?: boolean): this;
189
+ checkboxColumns(count: number): this;
190
+ checkboxFramed(value?: boolean): this;
191
+ cascadeWildcards(value?: boolean): this;
192
+ groupBy(field: string): this;
193
+ }
194
+ /**
195
+ * Loom-style permission assignment for Role forms (ORM-agnostic).
196
+ *
197
+ * Requires a registered `permissions` resource whose records expose
198
+ * `name`, `resource`, `ability`, and `label`. Adapters enrich relation
199
+ * search with `name` / `group` / `ability` for grouping and wildcard cascade.
200
+ *
201
+ * @example
202
+ * PermissionsAssignment.make('permissionIds')
203
+ * PermissionsAssignment.make('permissionIds').relationship('perms', 'name')
204
+ */
205
+ export declare class PermissionsAssignment extends CheckboxList {
206
+ static make(name?: string): PermissionsAssignment;
207
+ private constructor();
208
+ }
209
+ /**
210
+ * Catalog-backed ability picker — same UI as {@link PermissionsAssignment},
211
+ * but dehydrates permission **names** (`products:view`, `*`) instead of ids.
212
+ *
213
+ * @example
214
+ * AbilitiesAssignment.make('abilities')
215
+ */
216
+ export declare class AbilitiesAssignment extends CheckboxList {
217
+ static make(name?: string): AbilitiesAssignment;
218
+ private constructor();
219
+ }
220
+ /**
221
+ * Inline relationship table for HasMany / ManyToMany (attach, create, create & edit).
222
+ * HasMany fields are not dehydrated — children own the foreign key.
223
+ */
224
+ export declare class RelationTable extends FormComponent {
225
+ static make(name: string): RelationTable;
226
+ private constructor();
227
+ relationship(resource: string, titleAttribute: string, options?: RelationshipOptions): this;
228
+ createOption(value?: boolean): this;
229
+ createAndEditOption(value?: boolean): this;
230
+ }
231
+ /** Filament `Hidden::make()`. */
232
+ export declare class Hidden extends FormComponent {
233
+ static make(name: string): Hidden;
234
+ private constructor();
235
+ }
236
+ /** Filament `ColorPicker::make()`. */
237
+ export declare class ColorPicker extends FormComponent {
238
+ static make(name: string): ColorPicker;
239
+ private constructor();
240
+ }
241
+ /** Filament `TagsInput::make()` — state is `string[]`. */
242
+ export declare class TagsInput extends FormComponent {
243
+ static make(name: string): TagsInput;
244
+ private constructor();
245
+ }
246
+ /** Filament `DatePicker::make()`. */
247
+ export declare class DatePicker extends FormComponent {
248
+ static make(name: string): DatePicker;
249
+ private constructor();
250
+ minDate(value: string): this;
251
+ maxDate(value: string): this;
252
+ }
253
+ /** Filament `DateTimePicker::make()`. */
254
+ export declare class DateTimePicker extends FormComponent {
255
+ static make(name: string): DateTimePicker;
256
+ private constructor();
257
+ minDate(value: string): this;
258
+ maxDate(value: string): this;
259
+ }
260
+ /** Filament `FileUpload::make()`. */
261
+ export declare class FileUpload extends FormComponent {
262
+ static make(name: string): FileUpload;
263
+ private constructor();
264
+ image(): this;
265
+ accept(value: string): this;
266
+ multiple(value?: boolean): this;
267
+ }
268
+ export type FormSchemaItem = SchemaItem;
269
+ /**
270
+ * Form root — Filament `$form->columns(2)->schema([...])`.
271
+ */
272
+ export declare class FormBuilder {
273
+ private rootColumns;
274
+ private children;
275
+ columns(value: 1 | 2 | 3 | 4): this;
276
+ schema(children: FormSchemaItem[]): this;
277
+ build(): FormSchema;
278
+ }
279
+ export declare function form(callback: (builder: FormBuilder) => void): FormSchema;
280
+ export declare function fieldTypeLabel(type: FieldType): string;
281
+ //# sourceMappingURL=form.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../src/form.ts"],"names":[],"mappings":"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"}