@shamar/core 1.0.7 → 1.0.9

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 (45) hide show
  1. package/dist/actions.d.ts +16 -1
  2. package/dist/actions.d.ts.map +1 -1
  3. package/dist/actions.js +30 -0
  4. package/dist/actions.js.map +1 -1
  5. package/dist/dashboard-page.d.ts +27 -0
  6. package/dist/dashboard-page.d.ts.map +1 -1
  7. package/dist/dashboard-page.js +60 -0
  8. package/dist/dashboard-page.js.map +1 -1
  9. package/dist/dashboard-widgets.d.ts +16 -0
  10. package/dist/dashboard-widgets.d.ts.map +1 -1
  11. package/dist/form.d.ts +12 -0
  12. package/dist/form.d.ts.map +1 -1
  13. package/dist/form.js +25 -0
  14. package/dist/form.js.map +1 -1
  15. package/dist/index.d.ts +1 -0
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +1 -0
  18. package/dist/index.js.map +1 -1
  19. package/dist/infolist.d.ts +7 -0
  20. package/dist/infolist.d.ts.map +1 -1
  21. package/dist/infolist.js +37 -0
  22. package/dist/infolist.js.map +1 -1
  23. package/dist/relation-tabs.d.ts +18 -0
  24. package/dist/relation-tabs.d.ts.map +1 -0
  25. package/dist/relation-tabs.js +126 -0
  26. package/dist/relation-tabs.js.map +1 -0
  27. package/dist/resource.d.ts +5 -0
  28. package/dist/resource.d.ts.map +1 -1
  29. package/dist/resource.js +9 -3
  30. package/dist/resource.js.map +1 -1
  31. package/dist/types.d.ts +26 -0
  32. package/dist/types.d.ts.map +1 -1
  33. package/dist/widget.d.ts +23 -0
  34. package/dist/widget.d.ts.map +1 -1
  35. package/dist/widget.js +31 -0
  36. package/dist/widget.js.map +1 -1
  37. package/dist/widgets/stat.d.ts +41 -3
  38. package/dist/widgets/stat.d.ts.map +1 -1
  39. package/dist/widgets/stat.js +124 -5
  40. package/dist/widgets/stat.js.map +1 -1
  41. package/dist/widgets/stats-overview-widget.d.ts +35 -1
  42. package/dist/widgets/stats-overview-widget.d.ts.map +1 -1
  43. package/dist/widgets/stats-overview-widget.js +93 -1
  44. package/dist/widgets/stats-overview-widget.js.map +1 -1
  45. package/package.json +1 -1
@@ -1,27 +1,65 @@
1
1
  export type StatColor = 'primary' | 'success' | 'warning' | 'danger' | 'info' | 'gray';
2
+ /** Trusted HTML fragment (Filament `Htmlable`). */
3
+ export type HtmlContent = {
4
+ html: string;
5
+ };
6
+ export declare function html(content: string): HtmlContent;
7
+ export declare function isHtmlContent(value: unknown): value is HtmlContent;
8
+ export type StatScalar = string | number | null | undefined;
2
9
  export interface StatData {
3
10
  label: string;
11
+ labelHtml?: string;
4
12
  value: string | number;
13
+ valueHtml?: string;
5
14
  description?: string;
15
+ descriptionHtml?: string;
6
16
  descriptionIcon?: string;
7
17
  descriptionIconPosition?: 'before' | 'after';
18
+ descriptionColor?: StatColor;
8
19
  color?: StatColor;
20
+ icon?: string;
9
21
  url?: string;
22
+ openUrlInNewTab?: boolean;
10
23
  /** Sparkline values rendered under the stat. */
11
24
  chart?: number[];
25
+ chartColor?: StatColor;
26
+ placeholder?: string;
27
+ extraAttributes?: Record<string, string>;
28
+ /** Pre-escaped HTML attribute string for Edge (built at serialize time). */
29
+ extraAttributesHtml?: string;
30
+ /** Cards this stat spans inside the overview grid (Filament Schema columnSpan). */
31
+ columnSpan?: number;
12
32
  }
33
+ export type StatConfigurator = (stat: Stat) => void;
13
34
  /**
14
35
  * Filament-style stat card descriptor for {@link StatsOverviewWidget}.
15
36
  */
16
37
  export declare class Stat {
17
38
  private readonly data;
39
+ private rawValue;
40
+ private placeholderText?;
18
41
  private constructor();
19
- static make(label: string, value: string | number): Stat;
20
- description(text: string): this;
42
+ static make(label: string | HtmlContent, value?: StatScalar | HtmlContent): Stat;
43
+ /** Filament `Stat::configureUsing()` — runs on every {@link Stat.make}. */
44
+ static configureUsing(callback: StatConfigurator): void;
45
+ /** Test helper — clears global configurators. */
46
+ static clearConfigureUsing(): void;
47
+ description(text: string | HtmlContent): this;
21
48
  descriptionIcon(icon: string, position?: 'before' | 'after'): this;
49
+ descriptionColor(color: StatColor): this;
22
50
  color(color: StatColor): this;
51
+ icon(icon: string): this;
23
52
  url(href: string): this;
24
- chart(values: number[]): this;
53
+ openUrlInNewTab(value?: boolean): this;
54
+ chart(values: number[] | null | undefined): this;
55
+ chartColor(color: StatColor): this;
56
+ placeholder(text: string): this;
57
+ extraAttributes(attrs: Record<string, string>, options?: {
58
+ merge?: boolean;
59
+ }): this;
60
+ columnSpan(span: number): this;
61
+ value(next: StatScalar | HtmlContent): this;
62
+ private applyValue;
25
63
  toJSON(): StatData;
26
64
  }
27
65
  //# sourceMappingURL=stat.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stat.d.ts","sourceRoot":"","sources":["../../src/widgets/stat.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AAEvF,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uBAAuB,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC7C,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,qBAAa,IAAI;IACf,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAW;IAEhC,OAAO;IAIP,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIxD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK/B,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,QAAQ,GAAG,OAAiB,GAAG,IAAI;IAM3E,KAAK,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAK7B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKvB,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAK7B,MAAM,IAAI,QAAQ;CAGnB"}
1
+ {"version":3,"file":"stat.d.ts","sourceRoot":"","sources":["../../src/widgets/stat.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,56 @@
1
+ export function html(content) {
2
+ return { html: content };
3
+ }
4
+ export function isHtmlContent(value) {
5
+ return (!!value &&
6
+ typeof value === 'object' &&
7
+ 'html' in value &&
8
+ typeof value.html === 'string');
9
+ }
10
+ const configurators = [];
11
+ function isBlank(value) {
12
+ return value == null || value === '';
13
+ }
1
14
  /**
2
15
  * Filament-style stat card descriptor for {@link StatsOverviewWidget}.
3
16
  */
4
17
  export class Stat {
5
18
  data;
19
+ rawValue;
20
+ placeholderText;
6
21
  constructor(label, value) {
7
- this.data = { label, value };
22
+ if (isHtmlContent(label)) {
23
+ this.data = { label: '', labelHtml: label.html, value: '' };
24
+ }
25
+ else {
26
+ this.data = { label: String(label), value: '' };
27
+ }
28
+ this.rawValue = value;
29
+ this.applyValue(value);
8
30
  }
9
- static make(label, value) {
10
- return new Stat(label, value);
31
+ static make(label, value = null) {
32
+ const stat = new Stat(label, value);
33
+ for (const configure of configurators)
34
+ configure(stat);
35
+ return stat;
36
+ }
37
+ /** Filament `Stat::configureUsing()` — runs on every {@link Stat.make}. */
38
+ static configureUsing(callback) {
39
+ configurators.push(callback);
40
+ }
41
+ /** Test helper — clears global configurators. */
42
+ static clearConfigureUsing() {
43
+ configurators.length = 0;
11
44
  }
12
45
  description(text) {
13
- this.data.description = text;
46
+ if (isHtmlContent(text)) {
47
+ this.data.descriptionHtml = text.html;
48
+ this.data.description = undefined;
49
+ }
50
+ else {
51
+ this.data.description = text;
52
+ this.data.descriptionHtml = undefined;
53
+ }
14
54
  return this;
15
55
  }
16
56
  descriptionIcon(icon, position = 'after') {
@@ -18,20 +58,99 @@ export class Stat {
18
58
  this.data.descriptionIconPosition = position;
19
59
  return this;
20
60
  }
61
+ descriptionColor(color) {
62
+ this.data.descriptionColor = color;
63
+ return this;
64
+ }
21
65
  color(color) {
22
66
  this.data.color = color;
23
67
  return this;
24
68
  }
69
+ icon(icon) {
70
+ this.data.icon = icon;
71
+ return this;
72
+ }
25
73
  url(href) {
26
74
  this.data.url = href;
27
75
  return this;
28
76
  }
77
+ openUrlInNewTab(value = true) {
78
+ this.data.openUrlInNewTab = value;
79
+ return this;
80
+ }
29
81
  chart(values) {
82
+ if (values == null)
83
+ return this;
30
84
  this.data.chart = values;
31
85
  return this;
32
86
  }
87
+ chartColor(color) {
88
+ this.data.chartColor = color;
89
+ return this;
90
+ }
91
+ placeholder(text) {
92
+ this.placeholderText = text;
93
+ this.data.placeholder = text;
94
+ this.applyValue(this.rawValue);
95
+ return this;
96
+ }
97
+ extraAttributes(attrs, options) {
98
+ this.data.extraAttributes = options?.merge
99
+ ? { ...this.data.extraAttributes, ...attrs }
100
+ : { ...attrs };
101
+ return this;
102
+ }
103
+ columnSpan(span) {
104
+ this.data.columnSpan = Math.max(1, Math.floor(span));
105
+ return this;
106
+ }
107
+ value(next) {
108
+ this.rawValue = next;
109
+ this.applyValue(next);
110
+ return this;
111
+ }
112
+ applyValue(value) {
113
+ if (isHtmlContent(value)) {
114
+ this.data.valueHtml = value.html;
115
+ this.data.value = '';
116
+ return;
117
+ }
118
+ this.data.valueHtml = undefined;
119
+ if (isBlank(value)) {
120
+ this.data.value = this.placeholderText ?? '';
121
+ return;
122
+ }
123
+ this.data.value = value;
124
+ }
33
125
  toJSON() {
34
- return { ...this.data };
126
+ const out = {
127
+ label: this.data.label,
128
+ value: this.data.value,
129
+ };
130
+ const copy = (key) => {
131
+ const value = this.data[key];
132
+ if (value !== undefined)
133
+ out[key] = value;
134
+ };
135
+ copy('labelHtml');
136
+ copy('valueHtml');
137
+ copy('description');
138
+ copy('descriptionHtml');
139
+ copy('descriptionIcon');
140
+ copy('descriptionIconPosition');
141
+ copy('descriptionColor');
142
+ copy('color');
143
+ copy('icon');
144
+ copy('url');
145
+ copy('openUrlInNewTab');
146
+ copy('chartColor');
147
+ copy('placeholder');
148
+ copy('columnSpan');
149
+ if (this.data.extraAttributes)
150
+ out.extraAttributes = { ...this.data.extraAttributes };
151
+ if (this.data.chart)
152
+ out.chart = [...this.data.chart];
153
+ return out;
35
154
  }
36
155
  }
37
156
  //# sourceMappingURL=stat.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stat.js","sourceRoot":"","sources":["../../src/widgets/stat.ts"],"names":[],"mappings":"AAcA;;GAEG;AACH,MAAM,OAAO,IAAI;IACE,IAAI,CAAW;IAEhC,YAAoB,KAAa,EAAE,KAAsB;QACvD,IAAI,CAAC,IAAI,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,KAAa,EAAE,KAAsB;QAC/C,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,WAAW,CAAC,IAAY;QACtB,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,eAAe,CAAC,IAAY,EAAE,WAA+B,OAAO;QAClE,IAAI,CAAC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,uBAAuB,GAAG,QAAQ,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,KAAgB;QACpB,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAC,IAAY;QACd,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,MAAgB;QACpB,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM;QACJ,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC1B,CAAC;CACF"}
1
+ {"version":3,"file":"stat.js","sourceRoot":"","sources":["../../src/widgets/stat.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,44 @@
1
- import { Widget, type WidgetClass, type WidgetRequestContext } from '../widget.js';
1
+ import { Widget, parsePollingIntervalMs, type WidgetClass, type WidgetRequestContext } from '../widget.js';
2
2
  import { Stat, type StatData } from './stat.js';
3
+ export type StatsOverviewBreakpoint = 'default' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
4
+ /**
5
+ * Cards-per-row for {@link StatsOverviewWidget} (Filament `getColumns()`).
6
+ * - `number` — that many columns from the `sm` breakpoint up (1 column on the smallest screens)
7
+ * - object — responsive map, e.g. `{ sm: 2, lg: 4 }`
8
+ */
9
+ export type StatsOverviewColumns = number | Partial<Record<StatsOverviewBreakpoint, number>>;
10
+ export type StatsOverviewConfigurator = (widget: typeof StatsOverviewWidget) => void;
11
+ export declare function clampStatsOverviewColumns(value: number): number;
12
+ /** Filament auto `getColumns()` heuristic from stat count. */
13
+ export declare function autoStatsOverviewColumns(statsCount: number): number;
14
+ /**
15
+ * Normalize widget `columns` into a breakpoint map.
16
+ * When `columns` is null/undefined, uses Filament’s count-based default.
17
+ */
18
+ export declare function resolveStatsOverviewColumns(columns: StatsOverviewColumns | null | undefined, statsCount?: number): Partial<Record<StatsOverviewBreakpoint, number>>;
19
+ /** Inline CSS custom properties consumed by `.shamar-stats-overview__grid`. */
20
+ export declare function statsOverviewGridStyle(columns: StatsOverviewColumns | null | undefined, statsCount?: number): string;
3
21
  /**
4
22
  * Grid of KPI stat cards (Filament StatsOverviewWidget).
5
23
  */
6
24
  export declare abstract class StatsOverviewWidget extends Widget {
25
+ /**
26
+ * Cards per row inside this widget (Filament `getColumns()`).
27
+ * Leave `null` for Filament’s count-based auto layout (3 or 4).
28
+ */
29
+ static columns: StatsOverviewColumns | null;
30
+ /** Filament default: refresh every 5 seconds. Set `null` to disable. */
31
+ static pollingInterval: string | null;
32
+ /** Filament default: lazy-load when visible. */
33
+ static isLazy: boolean;
7
34
  static stats(_ctx: WidgetRequestContext): Stat[] | StatData[] | Promise<Stat[] | StatData[]>;
35
+ /** Filament-style global defaults for every stats overview widget class. */
36
+ static configureUsing(callback: StatsOverviewConfigurator): void;
37
+ /** Test helper. */
38
+ static clearConfigureUsing(): void;
39
+ /** Apply {@link configureUsing} callbacks onto a concrete widget class (once). */
40
+ static applyConfigurators(WidgetClass: typeof StatsOverviewWidget): void;
8
41
  }
9
42
  export declare function isStatsOverviewWidget(value: WidgetClass): value is typeof StatsOverviewWidget;
43
+ export { parsePollingIntervalMs };
10
44
  //# sourceMappingURL=stats-overview-widget.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stats-overview-widget.d.ts","sourceRoot":"","sources":["../../src/widgets/stats-overview-widget.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,KAAK,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACnF,OAAO,EAAE,IAAI,EAAE,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAEhD;;GAEG;AACH,8BAAsB,mBAAoB,SAAQ,MAAM;IACtD,MAAM,CAAC,KAAK,CACV,IAAI,EAAE,oBAAoB,GACzB,IAAI,EAAE,GAAG,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,QAAQ,EAAE,CAAC;CAGtD;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,WAAW,GAAG,KAAK,IAAI,OAAO,mBAAmB,CAO7F"}
1
+ {"version":3,"file":"stats-overview-widget.d.ts","sourceRoot":"","sources":["../../src/widgets/stats-overview-widget.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,sBAAsB,EACtB,KAAK,WAAW,EAChB,KAAK,oBAAoB,EAC1B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,IAAI,EAAE,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAEhD,MAAM,MAAM,uBAAuB,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;AAEpF;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC,CAAC;AAe7F,MAAM,MAAM,yBAAyB,GAAG,CAAC,MAAM,EAAE,OAAO,mBAAmB,KAAK,IAAI,CAAC;AAIrF,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAG/D;AAED,8DAA8D;AAC9D,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAKnE;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,oBAAoB,GAAG,IAAI,GAAG,SAAS,EAChD,UAAU,SAAI,GACb,OAAO,CAAC,MAAM,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC,CAsBlD;AAED,+EAA+E;AAC/E,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,oBAAoB,GAAG,IAAI,GAAG,SAAS,EAChD,UAAU,SAAI,GACb,MAAM,CAQR;AAED;;GAEG;AACH,8BAAsB,mBAAoB,SAAQ,MAAM;IACtD;;;OAGG;IACH,MAAM,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAAQ;IAEnD,wEAAwE;IACxE,OAAgB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEtD,gDAAgD;IAChD,OAAgB,MAAM,UAAQ;IAE9B,MAAM,CAAC,KAAK,CACV,IAAI,EAAE,oBAAoB,GACzB,IAAI,EAAE,GAAG,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,QAAQ,EAAE,CAAC;IAIrD,4EAA4E;IAC5E,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,yBAAyB,GAAG,IAAI;IAIhE,mBAAmB;IACnB,MAAM,CAAC,mBAAmB,IAAI,IAAI;IAKlC,kFAAkF;IAClF,MAAM,CAAC,kBAAkB,CAAC,WAAW,EAAE,OAAO,mBAAmB,GAAG,IAAI;CAKzE;AAID,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,WAAW,GAAG,KAAK,IAAI,OAAO,mBAAmB,CAO7F;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
@@ -1,12 +1,103 @@
1
- import { Widget } from '../widget.js';
1
+ import { Widget, parsePollingIntervalMs, } from '../widget.js';
2
+ const COL_MIN = 1;
3
+ const COL_MAX = 12;
4
+ const BREAKPOINTS = ['default', 'sm', 'md', 'lg', 'xl', '2xl'];
5
+ const CSS_VARS = {
6
+ default: '--shamar-stats-cols',
7
+ sm: '--shamar-stats-cols-sm',
8
+ md: '--shamar-stats-cols-md',
9
+ lg: '--shamar-stats-cols-lg',
10
+ xl: '--shamar-stats-cols-xl',
11
+ '2xl': '--shamar-stats-cols-2xl',
12
+ };
13
+ const widgetConfigurators = [];
14
+ export function clampStatsOverviewColumns(value) {
15
+ if (!Number.isFinite(value))
16
+ return COL_MIN;
17
+ return Math.min(COL_MAX, Math.max(COL_MIN, Math.floor(value)));
18
+ }
19
+ /** Filament auto `getColumns()` heuristic from stat count. */
20
+ export function autoStatsOverviewColumns(statsCount) {
21
+ const count = Math.max(0, Math.floor(statsCount));
22
+ if (count < 3)
23
+ return 3;
24
+ if (count % 3 !== 1)
25
+ return 3;
26
+ return 4;
27
+ }
28
+ /**
29
+ * Normalize widget `columns` into a breakpoint map.
30
+ * When `columns` is null/undefined, uses Filament’s count-based default.
31
+ */
32
+ export function resolveStatsOverviewColumns(columns, statsCount = 0) {
33
+ if (columns == null) {
34
+ const n = autoStatsOverviewColumns(statsCount);
35
+ return { default: 1, sm: n };
36
+ }
37
+ if (typeof columns === 'number') {
38
+ const n = clampStatsOverviewColumns(columns);
39
+ return { default: 1, sm: n };
40
+ }
41
+ const out = {};
42
+ for (const bp of BREAKPOINTS) {
43
+ const raw = columns[bp];
44
+ if (raw != null)
45
+ out[bp] = clampStatsOverviewColumns(raw);
46
+ }
47
+ if (!Object.keys(out).length) {
48
+ const n = autoStatsOverviewColumns(statsCount);
49
+ return { default: 1, sm: n };
50
+ }
51
+ if (out.default == null)
52
+ out.default = 1;
53
+ return out;
54
+ }
55
+ /** Inline CSS custom properties consumed by `.shamar-stats-overview__grid`. */
56
+ export function statsOverviewGridStyle(columns, statsCount = 0) {
57
+ const resolved = resolveStatsOverviewColumns(columns, statsCount);
58
+ const parts = [];
59
+ for (const bp of BREAKPOINTS) {
60
+ const n = resolved[bp];
61
+ if (n != null)
62
+ parts.push(`${CSS_VARS[bp]}: ${n}`);
63
+ }
64
+ return parts.join('; ');
65
+ }
2
66
  /**
3
67
  * Grid of KPI stat cards (Filament StatsOverviewWidget).
4
68
  */
5
69
  export class StatsOverviewWidget extends Widget {
70
+ /**
71
+ * Cards per row inside this widget (Filament `getColumns()`).
72
+ * Leave `null` for Filament’s count-based auto layout (3 or 4).
73
+ */
74
+ static columns = null;
75
+ /** Filament default: refresh every 5 seconds. Set `null` to disable. */
76
+ static pollingInterval = '5s';
77
+ /** Filament default: lazy-load when visible. */
78
+ static isLazy = true;
6
79
  static stats(_ctx) {
7
80
  return [];
8
81
  }
82
+ /** Filament-style global defaults for every stats overview widget class. */
83
+ static configureUsing(callback) {
84
+ widgetConfigurators.push(callback);
85
+ }
86
+ /** Test helper. */
87
+ static clearConfigureUsing() {
88
+ widgetConfigurators.length = 0;
89
+ configuredWidgets = new WeakSet();
90
+ }
91
+ /** Apply {@link configureUsing} callbacks onto a concrete widget class (once). */
92
+ static applyConfigurators(WidgetClass) {
93
+ if (configuredWidgets.has(WidgetClass))
94
+ return;
95
+ for (const configure of widgetConfigurators)
96
+ configure(WidgetClass);
97
+ configuredWidgets.add(WidgetClass);
98
+ }
9
99
  }
100
+ let configuredWidgets = new WeakSet();
10
101
  export function isStatsOverviewWidget(value) {
11
102
  let current = value;
12
103
  while (typeof current === 'function') {
@@ -16,4 +107,5 @@ export function isStatsOverviewWidget(value) {
16
107
  }
17
108
  return false;
18
109
  }
110
+ export { parsePollingIntervalMs };
19
111
  //# sourceMappingURL=stats-overview-widget.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stats-overview-widget.js","sourceRoot":"","sources":["../../src/widgets/stats-overview-widget.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAA+C,MAAM,cAAc,CAAC;AAGnF;;GAEG;AACH,MAAM,OAAgB,mBAAoB,SAAQ,MAAM;IACtD,MAAM,CAAC,KAAK,CACV,IAA0B;QAE1B,OAAO,EAAE,CAAC;IACZ,CAAC;CACF;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAkB;IACtD,IAAI,OAAO,GAAY,KAAK,CAAC;IAC7B,OAAO,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;QACrC,IAAI,OAAO,KAAK,mBAAmB;YAAE,OAAO,IAAI,CAAC;QACjD,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"stats-overview-widget.js","sourceRoot":"","sources":["../../src/widgets/stats-overview-widget.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shamar/core",
3
- "version": "1.0.7",
3
+ "version": "1.0.9",
4
4
  "description": "Filament-inspired resource DSL for Shamar admin (ORM-agnostic core).",
5
5
  "license": "MIT",
6
6
  "type": "module",