@praxisui/list 10.0.0-rc.4 → 10.0.0-rc.5

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/package.json CHANGED
@@ -1,19 +1,20 @@
1
1
  {
2
2
  "name": "@praxisui/list",
3
- "version": "10.0.0-rc.4",
3
+ "version": "10.0.0-rc.5",
4
4
  "description": "List components and helpers for Praxis UI.",
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^21.0.0",
7
7
  "@angular/core": "^21.0.0",
8
+ "@angular/cdk": "^21.0.0",
8
9
  "@angular/material": "^21.0.0",
9
- "@praxisui/dynamic-fields": "^10.0.0-rc.4",
10
+ "@praxisui/dynamic-fields": "^10.0.0-rc.5",
10
11
  "rxjs": ">=7 <9",
11
12
  "@angular/forms": "^21.0.0",
12
13
  "@angular/router": "^21.0.0",
13
- "@praxisui/ai": "^10.0.0-rc.4",
14
- "@praxisui/core": "^10.0.0-rc.4",
15
- "@praxisui/rich-content": "^10.0.0-rc.4",
16
- "@praxisui/settings-panel": "^10.0.0-rc.4"
14
+ "@praxisui/ai": "^10.0.0-rc.5",
15
+ "@praxisui/core": "^10.0.0-rc.5",
16
+ "@praxisui/rich-content": "^10.0.0-rc.5",
17
+ "@praxisui/settings-panel": "^10.0.0-rc.5"
17
18
  },
18
19
  "dependencies": {
19
20
  "tslib": "^2.3.0",
@@ -534,18 +534,19 @@ interface PraxisListConfig {
534
534
 
535
535
  #### Layout API
536
536
 
537
- | Caminho | Status | Observacao |
538
- | ---------------------------- | ------------- | ---------------------------------- |
539
- | `layout.variant` | Active | `list/cards/tiles` |
540
- | `layout.density` | Active | classe `density-*` |
541
- | `layout.itemSpacing` | Active | classe `item-spacing-*` |
542
- | `layout.lines` | Active | linhas de texto + classe `lines-*` |
543
- | `layout.dividers` | Active | divisores no modo `list` |
544
- | `layout.model` | Active | classe `model-*` |
545
- | `layout.groupBy` | Active | agrupamento em `sections$` |
546
- | `layout.pageSize` | Active | page size inicial |
547
- | `layout.stickySectionHeader` | Declared-only | sem sticky runtime |
548
- | `layout.virtualScroll` | Declared-only | sem virtual scroll runtime |
537
+ | Caminho | Status | Observacao |
538
+ | ---------------------------- | ------------- | ---------------------------------------------------------- |
539
+ | `layout.variant` | Active | `list/cards/tiles` |
540
+ | `layout.density` | Active | classe `density-*` |
541
+ | `layout.itemSpacing` | Active | classe `item-spacing-*` |
542
+ | `layout.itemAppearance` | Active | `flat/card` (isola itens em cartões sob `variant: 'list'`) |
543
+ | `layout.lines` | Active | linhas de texto + classe `lines-*` |
544
+ | `layout.dividers` | Active | divisores no modo `list` |
545
+ | `layout.model` | Active | classe `model-*` |
546
+ | `layout.groupBy` | Active | agrupamento em `sections$` |
547
+ | `layout.pageSize` | Active | page size inicial |
548
+ | `layout.stickySectionHeader` | Declared-only | sem sticky runtime |
549
+ | `layout.virtualScroll` | Declared-only | sem virtual scroll runtime |
549
550
 
550
551
  #### Skin API
551
552
 
@@ -634,7 +635,7 @@ Slots suportados:
634
635
 
635
636
  Tipos funcionais no runtime:
636
637
 
637
- - `text`, `icon`, `image`, `chip`, `rating`, `currency`, `date`, `html`, `metric`, `compose`, `component`.
638
+ - `text`, `icon`, `image`, `chip`, `rating`, `currency`, `date`, `datetime`, `relative`, `html`, `metric`, `compose`, `component`.
638
639
 
639
640
  Inferencia opcional:
640
641
 
@@ -765,15 +766,21 @@ Semantica de execucao:
765
766
  Suporte principal:
766
767
 
767
768
  - placeholders: `${item.campo}`;
768
- - pipes em placeholder: `bool`, `date`, `map`, `number`;
769
- - pipe top-level `bool` no expr completo.
769
+ - coalescência em placeholders: `${item.displayName ?? item.name ?? item.id}`;
770
+ - pipes em placeholder: `bool`, `date`, `datetime`, `relative`, `map`, `number`, `currency`;
771
+ - pipes top-level pós-expressão: `|bool:True:False`, `|map:k=v`, `|relative:locale`, `|datetime:locale:style`, `|date:locale:style`.
770
772
 
771
773
  Exemplos validos:
772
774
 
773
775
  - `${item.active|bool:Ativo:Inativo}`
774
776
  - `${item.createdAt|date:pt-BR:short}`
777
+ - `${item.occurredAt|datetime:pt-BR:short}`
778
+ - `${item.occurredAt|relative:pt-BR}` (exibe *"há 5 minutos"*)
775
779
  - `${item.status|map:done=Concluido;pending=Pendente}`
776
780
  - `${item.total|number:pt-BR:compact}`
781
+ - `${item.amount|currency:BRL:pt-BR}`
782
+ - `${item.occurredAt}|relative:pt-BR` (pipe top-level)
783
+ - `${item.createdAt}|datetime:pt-BR:short` (pipe top-level)
777
784
 
778
785
  ##### `actions[].showIf`
779
786
 
@@ -958,25 +965,142 @@ Recomendacao corporativa:
958
965
  ### Minimal valid
959
966
 
960
967
  ```json
961
- {}
968
+ {
969
+ "layout": {
970
+ "variant": "list"
971
+ },
972
+ "templating": {
973
+ "primary": {
974
+ "type": "text",
975
+ "expr": "${item.name}"
976
+ }
977
+ }
978
+ }
962
979
  ```
963
980
 
964
981
  ### Typical/common
965
982
 
966
983
  ```json
967
- {}
984
+ {
985
+ "layout": {
986
+ "variant": "list",
987
+ "density": "comfortable",
988
+ "itemSpacing": "default"
989
+ },
990
+ "templating": {
991
+ "leading": {
992
+ "type": "icon",
993
+ "expr": "person"
994
+ },
995
+ "primary": {
996
+ "type": "text",
997
+ "expr": "${item.nomeCompleto}"
998
+ },
999
+ "secondary": {
1000
+ "type": "text",
1001
+ "expr": "${item.cargo} · ${item.departamento}"
1002
+ },
1003
+ "meta": {
1004
+ "type": "date",
1005
+ "expr": "${item.dataAdmissao}"
1006
+ }
1007
+ }
1008
+ }
968
1009
  ```
969
1010
 
970
1011
  ### Advanced
971
1012
 
972
1013
  ```json
973
- {}
1014
+ {
1015
+ "layout": {
1016
+ "variant": "list",
1017
+ "itemAppearance": "card",
1018
+ "itemSpacing": "compact"
1019
+ },
1020
+ "skin": {
1021
+ "type": "glass"
1022
+ },
1023
+ "templating": {
1024
+ "leading": {
1025
+ "type": "icon",
1026
+ "expr": "${item.severidade|map:CRITICA=warning,ALTA=error_outline,MEDIA=info}",
1027
+ "color": "${item.severidade|map:CRITICA=warn,ALTA=warn,MEDIA=primary}"
1028
+ },
1029
+ "primary": {
1030
+ "type": "text",
1031
+ "expr": "${item.titulo}"
1032
+ },
1033
+ "secondary": {
1034
+ "type": "text",
1035
+ "expr": "${item.localizacao} · Protocolo ${item.protocolo}"
1036
+ },
1037
+ "meta": {
1038
+ "type": "relative",
1039
+ "expr": "${item.abertoEm}"
1040
+ },
1041
+ "metaPlacement": "side"
1042
+ },
1043
+ "actions": [
1044
+ {
1045
+ "id": "dispatch",
1046
+ "label": "Despachar",
1047
+ "icon": "send",
1048
+ "kind": "icon"
1049
+ }
1050
+ ]
1051
+ }
974
1052
  ```
975
1053
 
976
1054
  ### Enterprise scenario
977
1055
 
978
1056
  ```json
979
- {}
1057
+ {
1058
+ "dataSource": {
1059
+ "resourcePath": "incidentes",
1060
+ "sort": {
1061
+ "field": "abertoEm",
1062
+ "direction": "desc"
1063
+ }
1064
+ },
1065
+ "layout": {
1066
+ "variant": "list",
1067
+ "itemAppearance": "card",
1068
+ "pageSize": 20
1069
+ },
1070
+ "i18n": {
1071
+ "locale": "pt-BR",
1072
+ "currency": "BRL"
1073
+ },
1074
+ "selection": {
1075
+ "mode": "multiple",
1076
+ "compareBy": "id",
1077
+ "return": "id"
1078
+ },
1079
+ "templating": {
1080
+ "leading": {
1081
+ "type": "chip",
1082
+ "expr": "${item.codigo}",
1083
+ "variant": "outlined"
1084
+ },
1085
+ "primary": {
1086
+ "type": "text",
1087
+ "expr": "${item.nome ?? item.titulo}"
1088
+ },
1089
+ "secondary": {
1090
+ "type": "text",
1091
+ "expr": "${item.resumo}"
1092
+ },
1093
+ "meta": {
1094
+ "type": "datetime",
1095
+ "expr": "${item.dataCriacao}|pt-BR:short"
1096
+ }
1097
+ },
1098
+ "ui": {
1099
+ "showSearch": true,
1100
+ "searchField": "titulo",
1101
+ "showSort": true
1102
+ }
1103
+ }
980
1104
  ```
981
1105
 
982
1106
  ## Known limitations and mismatches
@@ -4,13 +4,12 @@ import * as i0 from '@angular/core';
4
4
  import { OnInit, OnChanges, AfterViewInit, OnDestroy, EventEmitter, SimpleChanges, ChangeDetectorRef, DoCheck, Provider } from '@angular/core';
5
5
  import { MatPaginatorSelectConfig, PageEvent } from '@angular/material/paginator';
6
6
  import { FormGroup, FormControl } from '@angular/forms';
7
- import * as _praxisui_core from '@praxisui/core';
8
7
  import { PraxisExportFormat, PraxisExportScope, PraxisRuntimeConditionalEffectRule, JsonLogicExpression, RichContentDocument, ResourceRecordOpenRef, GlobalActionRef, LocalizationConfig, AiCapability, PraxisDataQueryContext, RichBlockNode, RichBlockHostCapabilities, SurfaceOpenActionEditorComponent, GlobalActionCatalogEntry, SurfaceOpenPayload, SettingsValueProvider as SettingsValueProvider$1, RichPresenterNode, RichComposeNode, ComponentDocMeta, AiCapabilityCategory, AiCapabilityCatalog, AiValueKind, ComponentAuthoringManifest } from '@praxisui/core';
9
8
  import { BaseAiAdapter, AiResponseCompileResult, PatchResult, PraxisAssistantTurnViewState, PraxisAssistantShellLayout, PraxisAssistantShellLabels, PraxisAssistantSessionSnapshot, PraxisAssistantShellQuickReply, PraxisAssistantShellMessage } from '@praxisui/ai';
10
9
  import { SettingsValueProvider } from '@praxisui/settings-panel';
11
10
  import * as _praxisui_list from '@praxisui/list';
12
11
 
13
- type TemplateType = 'text' | 'icon' | 'image' | 'chip' | 'rating' | 'currency' | 'date' | 'html' | 'slot' | 'metric' | 'compose' | 'component';
12
+ type TemplateType = 'text' | 'icon' | 'image' | 'chip' | 'rating' | 'currency' | 'date' | 'datetime' | 'relative' | 'html' | 'slot' | 'metric' | 'compose' | 'component';
14
13
  interface TemplateDef {
15
14
  type: TemplateType;
16
15
  expr?: string;
@@ -147,6 +146,45 @@ interface ListSlotOverrideRule extends Omit<PraxisRuntimeConditionalEffectRule<L
147
146
  condition?: JsonLogicExpression | null;
148
147
  effects?: ListSlotOverrideEffect[];
149
148
  }
149
+ interface PraxisListVirtualScrollConfig {
150
+ enabled: boolean;
151
+ itemSize?: number;
152
+ minBufferPx?: number;
153
+ maxBufferPx?: number;
154
+ viewportHeight?: string;
155
+ }
156
+ interface PraxisListItemAction {
157
+ id: string;
158
+ icon?: string;
159
+ label?: string;
160
+ color?: string;
161
+ tooltip?: string;
162
+ kind?: 'icon' | 'button' | 'menu-item';
163
+ buttonVariant?: 'stroked' | 'raised' | 'flat';
164
+ showIf?: JsonLogicExpression | null;
165
+ visibleWhen?: JsonLogicExpression | null;
166
+ disabledWhen?: JsonLogicExpression | null;
167
+ /**
168
+ * Condição HATEOAS canônica: se especificado, a ação só é exibida
169
+ * se o item possuir o link correspondente em `item._links[hateoasRel]` ou `item.links[hateoasRel]`.
170
+ */
171
+ hateoasRel?: string;
172
+ emitPayload?: 'item' | 'id' | 'value';
173
+ action?: 'surface.open' | string;
174
+ recordOpen?: ResourceRecordOpenRef;
175
+ globalAction?: GlobalActionRef;
176
+ command?: string;
177
+ params?: Record<string, unknown>;
178
+ emitLocal?: boolean;
179
+ showLoading?: boolean;
180
+ placement?: 'actions' | 'trailing' | 'menu';
181
+ confirmation?: {
182
+ title?: string;
183
+ message?: string;
184
+ type?: 'danger' | 'warning' | 'info';
185
+ };
186
+ requiresConfirmation?: boolean;
187
+ }
150
188
  interface PraxisListConfig {
151
189
  id?: string;
152
190
  dataSource?: {
@@ -159,12 +197,13 @@ interface PraxisListConfig {
159
197
  variant?: 'list' | 'cards' | 'tiles';
160
198
  density?: 'default' | 'comfortable' | 'compact';
161
199
  itemSpacing?: 'none' | 'tight' | 'default' | 'relaxed';
200
+ itemAppearance?: 'flat' | 'card' | 'capsule';
162
201
  lines?: 1 | 2 | 3;
163
202
  dividers?: 'none' | 'between' | 'all';
164
203
  model?: 'standard' | 'media' | 'hotel';
165
204
  groupBy?: string;
166
205
  stickySectionHeader?: boolean;
167
- virtualScroll?: boolean;
206
+ virtualScroll?: boolean | PraxisListVirtualScrollConfig;
168
207
  pageSize?: number;
169
208
  rowLayout?: {
170
209
  type?: 'grid' | 'flex';
@@ -284,27 +323,10 @@ interface PraxisListConfig {
284
323
  errorTemplate?: TemplateDef;
285
324
  };
286
325
  };
287
- actions?: Array<{
288
- id: string;
289
- icon?: string;
290
- label?: string;
291
- color?: string;
292
- kind?: 'icon' | 'button';
293
- buttonVariant?: 'stroked' | 'raised' | 'flat';
294
- showIf?: JsonLogicExpression | null;
295
- emitPayload?: 'item' | 'id' | 'value';
296
- action?: 'surface.open';
297
- recordOpen?: ResourceRecordOpenRef;
298
- globalAction?: GlobalActionRef;
299
- emitLocal?: boolean;
300
- showLoading?: boolean;
301
- placement?: 'actions' | 'trailing';
302
- confirmation?: {
303
- title?: string;
304
- message?: string;
305
- type?: 'danger' | 'warning' | 'info';
306
- };
307
- }>;
326
+ /** Ações declarativas de item governadas (compatível com itemActions) */
327
+ actions?: PraxisListItemAction[];
328
+ /** Ações declarativas de item com HATEOAS e despacho canônico */
329
+ itemActions?: PraxisListItemAction[];
308
330
  i18n?: PraxisListI18nConfig;
309
331
  ui?: {
310
332
  showSearch?: boolean;
@@ -488,6 +510,8 @@ declare class PraxisList implements OnInit, OnChanges, AfterViewInit, OnDestroy
488
510
  form?: FormGroup | null;
489
511
  set enableCustomization(value: boolean);
490
512
  get enableCustomization(): boolean;
513
+ itemActions?: PraxisListItemAction[];
514
+ virtualScroll?: boolean | PraxisListVirtualScrollConfig;
491
515
  itemClick: EventEmitter<ListItemEvent>;
492
516
  actionClick: EventEmitter<ListActionEvent>;
493
517
  selectionChange: EventEmitter<ListSelectionEvent>;
@@ -669,27 +693,16 @@ declare class PraxisList implements OnInit, OnChanges, AfterViewInit, OnDestroy
669
693
  hasSkeleton(): boolean;
670
694
  skeletonCount(): number;
671
695
  skeletonItems(): any[];
672
- visibleActions(item: any, placement?: 'actions' | 'trailing'): {
673
- id: string;
674
- icon?: string;
675
- label?: string;
676
- color?: string;
677
- kind?: "icon" | "button";
678
- buttonVariant?: "stroked" | "raised" | "flat";
679
- showIf?: JsonLogicExpression | null;
680
- emitPayload?: "item" | "id" | "value";
681
- action?: "surface.open";
682
- recordOpen?: ResourceRecordOpenRef;
683
- globalAction?: GlobalActionRef;
684
- emitLocal?: boolean;
685
- showLoading?: boolean;
686
- placement?: "actions" | "trailing";
687
- confirmation?: {
688
- title?: string;
689
- message?: string;
690
- type?: "danger" | "warning" | "info";
691
- };
692
- }[];
696
+ isVirtualScrollEnabled(): boolean;
697
+ virtualScrollItemSize(): number;
698
+ virtualScrollMinBufferPx(): number;
699
+ virtualScrollMaxBufferPx(): number;
700
+ virtualScrollViewportHeight(): string;
701
+ virtualScrollItems(sections: ListSection<any>[] | null | undefined, items: any[] | null | undefined): any[];
702
+ trackByVirtualItem: (index: number, item: any) => any;
703
+ effectiveActions(): PraxisListItemAction[];
704
+ hasHateoasLink(item: any, rel: string): boolean;
705
+ visibleActions(item: any, placement?: 'actions' | 'trailing' | 'menu'): PraxisListItemAction[];
693
706
  onItemClick(item: any, index: number, section?: string): void;
694
707
  onRowActivate(item: any, index: number, section?: string): void;
695
708
  onExpandToggle(event: Event, item: any, index: number): void;
@@ -844,6 +857,7 @@ declare class PraxisList implements OnInit, OnChanges, AfterViewInit, OnDestroy
844
857
  private toBoolean;
845
858
  private prettyLabel;
846
859
  private mapDateStyle;
860
+ private mapDateTimeStyle;
847
861
  starIcon(index: number, ratingValue: string | number): string;
848
862
  isThemeColor(color?: string): boolean;
849
863
  chipStyle(color?: string, variant?: 'filled' | 'outlined'): string;
@@ -881,7 +895,7 @@ declare class PraxisList implements OnInit, OnChanges, AfterViewInit, OnDestroy
881
895
  private normalizeExpansionItems;
882
896
  private normalizeKeyValueItems;
883
897
  static ɵfac: i0.ɵɵFactoryDeclaration<PraxisList, never>;
884
- static ɵcmp: i0.ɵɵComponentDeclaration<PraxisList, "praxis-list", never, { "config": { "alias": "config"; "required": false; }; "listId": { "alias": "listId"; "required": true; }; "componentInstanceId": { "alias": "componentInstanceId"; "required": false; }; "configPersistenceStrategy": { "alias": "configPersistenceStrategy"; "required": false; }; "queryContext": { "alias": "queryContext"; "required": false; }; "form": { "alias": "form"; "required": false; }; "enableCustomization": { "alias": "enableCustomization"; "required": false; }; }, { "itemClick": "itemClick"; "actionClick": "actionClick"; "selectionChange": "selectionChange"; "exportAction": "exportAction"; "configPatchChange": "configPatchChange"; }, never, never, true, never>;
898
+ static ɵcmp: i0.ɵɵComponentDeclaration<PraxisList, "praxis-list", never, { "config": { "alias": "config"; "required": false; }; "listId": { "alias": "listId"; "required": true; }; "componentInstanceId": { "alias": "componentInstanceId"; "required": false; }; "configPersistenceStrategy": { "alias": "configPersistenceStrategy"; "required": false; }; "queryContext": { "alias": "queryContext"; "required": false; }; "form": { "alias": "form"; "required": false; }; "enableCustomization": { "alias": "enableCustomization"; "required": false; }; "itemActions": { "alias": "itemActions"; "required": false; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; }; }, { "itemClick": "itemClick"; "actionClick": "actionClick"; "selectionChange": "selectionChange"; "exportAction": "exportAction"; "configPatchChange": "configPatchChange"; }, never, never, true, never>;
885
899
  static ngAcceptInputType_enableCustomization: unknown;
886
900
  }
887
901
 
@@ -1821,6 +1835,9 @@ declare function evaluateTemplate(def: TemplateDef | undefined, item: any, optio
1821
1835
  variant?: 'filled' | 'outlined';
1822
1836
  };
1823
1837
  } | null;
1838
+ declare function safeFormatDate(date: Date, format?: string, locale?: string, style?: string): string;
1839
+ declare function safeFormatDateTime(date: Date, format?: string, locale?: string, style?: string): string;
1840
+ declare function formatRelativeTime(date: Date, locale?: string, baseDate?: Date): string;
1824
1841
 
1825
1842
  type ListRichContentP0Node = RichPresenterNode | RichComposeNode;
1826
1843
  declare function isListTemplateSupportedByRichContentP0(template?: TemplateDef | null): boolean;
@@ -1828,6 +1845,7 @@ declare function mapListTemplateToRichContentP0(template?: TemplateDef | null):
1828
1845
 
1829
1846
  declare function adaptSelection(config: PraxisListConfig | undefined, items: any[]): ListSelectionEvent;
1830
1847
 
1848
+ declare const PRAXIS_LIST_INSERTION_PRESETS: NonNullable<ComponentDocMeta['insertionPresets']>;
1831
1849
  declare const PRAXIS_LIST_COMPONENT_METADATA: ComponentDocMeta;
1832
1850
  declare function providePraxisListMetadata(): Provider;
1833
1851
 
@@ -1986,9 +2004,10 @@ declare class PraxisListDocPageComponent {
1986
2004
  model: "hotel";
1987
2005
  groupBy: undefined;
1988
2006
  itemSpacing?: "none" | "tight" | "default" | "relaxed";
2007
+ itemAppearance?: "flat" | "card" | "capsule";
1989
2008
  dividers?: "none" | "between" | "all";
1990
2009
  stickySectionHeader?: boolean;
1991
- virtualScroll?: boolean;
2010
+ virtualScroll?: boolean | _praxisui_list.PraxisListVirtualScrollConfig;
1992
2011
  pageSize?: number;
1993
2012
  rowLayout?: {
1994
2013
  type?: "grid" | "flex";
@@ -2108,27 +2127,8 @@ declare class PraxisListDocPageComponent {
2108
2127
  errorTemplate?: _praxisui_list.TemplateDef;
2109
2128
  };
2110
2129
  };
2111
- actions?: Array<{
2112
- id: string;
2113
- icon?: string;
2114
- label?: string;
2115
- color?: string;
2116
- kind?: "icon" | "button";
2117
- buttonVariant?: "stroked" | "raised" | "flat";
2118
- showIf?: _praxisui_core.JsonLogicExpression | null;
2119
- emitPayload?: "item" | "id" | "value";
2120
- action?: "surface.open";
2121
- recordOpen?: _praxisui_core.ResourceRecordOpenRef;
2122
- globalAction?: _praxisui_core.GlobalActionRef;
2123
- emitLocal?: boolean;
2124
- showLoading?: boolean;
2125
- placement?: "actions" | "trailing";
2126
- confirmation?: {
2127
- title?: string;
2128
- message?: string;
2129
- type?: "danger" | "warning" | "info";
2130
- };
2131
- }>;
2130
+ actions?: _praxisui_list.PraxisListItemAction[];
2131
+ itemActions?: _praxisui_list.PraxisListItemAction[];
2132
2132
  i18n?: _praxisui_list.PraxisListI18nConfig;
2133
2133
  ui?: {
2134
2134
  showSearch?: boolean;
@@ -2955,5 +2955,5 @@ declare const PRAXIS_LIST_PT_BR: {
2955
2955
  readonly 'Advanced row CSS': "CSS avançado da linha";
2956
2956
  };
2957
2957
 
2958
- export { ExecutiveAlertsComponent, ExecutiveBadgeComponent, ExecutiveOwnerComponent, LIST_AI_CAPABILITIES, ListDataService, ListSkinService, PRAXIS_LIST_AUTHORING_MANIFEST, PRAXIS_LIST_COMPONENT_METADATA, PRAXIS_LIST_EN_US, PRAXIS_LIST_I18N_NAMESPACE, PRAXIS_LIST_PT_BR, PraxisList, PraxisListConfigEditor, PraxisListDocPageComponent, PraxisListJsonConfigEditorComponent, PraxisListWidgetConfigEditor, adaptSelection, buildListApplyPlan, createListAuthoringDocument, evalExpr, evaluateTemplate, inferListAuthoringDocument, inferTemplatingFromSchema, isListTemplateSupportedByRichContentP0, mapListTemplateToRichContentP0, normalizeListActionPayloads, normalizeListAuthoringDocument, normalizeListConfig, parseLegacyOrListDocument, projectListAuthoringDocument, providePraxisListI18n, providePraxisListMetadata, serializeListAuthoringDocument, toCanonicalListConfig, validateListAuthoringDocument };
2959
- export type { Capability, CapabilityCatalog, CapabilityCategory, EditorDiagnostic, EditorDocument, ExecutiveAlert, JsonEditorEvent, JsonValidationResult, ListActionEvent, ListApplyPlan, ListAuthoringDocument, ListExpansionSectionDef, ListExpansionSectionType, ListFeatureDef, ListItemEvent, ListItemStyleEffect, ListItemStyleRule, ListProjectionContext, ListRemoteLoadError, ListRichContentP0Node, ListRowLayoutSlot, ListRuntimeContext, ListSchemaInferencePlan, ListSection, ListSelectionEvent, ListSlotOverrideEffect, ListSlotOverrideRule, ListTemplatingSlot, ListValidationContext, PraxisListConfig, PraxisListExportConfig, PraxisListI18nConfig, PraxisListWidgetEditorInputs, PraxisListWidgetEditorValue, TemplateDef, TemplateEvaluatorOptions, TemplateFeatureDef, TemplateType, TemplatingFeatureDef, ValueKind };
2958
+ export { ExecutiveAlertsComponent, ExecutiveBadgeComponent, ExecutiveOwnerComponent, LIST_AI_CAPABILITIES, ListDataService, ListSkinService, PRAXIS_LIST_AUTHORING_MANIFEST, PRAXIS_LIST_COMPONENT_METADATA, PRAXIS_LIST_EN_US, PRAXIS_LIST_I18N_NAMESPACE, PRAXIS_LIST_INSERTION_PRESETS, PRAXIS_LIST_PT_BR, PraxisList, PraxisListConfigEditor, PraxisListDocPageComponent, PraxisListJsonConfigEditorComponent, PraxisListWidgetConfigEditor, adaptSelection, buildListApplyPlan, createListAuthoringDocument, evalExpr, evaluateTemplate, formatRelativeTime, inferListAuthoringDocument, inferTemplatingFromSchema, isListTemplateSupportedByRichContentP0, mapListTemplateToRichContentP0, normalizeListActionPayloads, normalizeListAuthoringDocument, normalizeListConfig, parseLegacyOrListDocument, projectListAuthoringDocument, providePraxisListI18n, providePraxisListMetadata, safeFormatDate, safeFormatDateTime, serializeListAuthoringDocument, toCanonicalListConfig, validateListAuthoringDocument };
2959
+ export type { Capability, CapabilityCatalog, CapabilityCategory, EditorDiagnostic, EditorDocument, ExecutiveAlert, JsonEditorEvent, JsonValidationResult, ListActionEvent, ListApplyPlan, ListAuthoringDocument, ListExpansionSectionDef, ListExpansionSectionType, ListFeatureDef, ListItemEvent, ListItemStyleEffect, ListItemStyleRule, ListProjectionContext, ListRemoteLoadError, ListRichContentP0Node, ListRowLayoutSlot, ListRuntimeContext, ListSchemaInferencePlan, ListSection, ListSelectionEvent, ListSlotOverrideEffect, ListSlotOverrideRule, ListTemplatingSlot, ListValidationContext, PraxisListConfig, PraxisListExportConfig, PraxisListI18nConfig, PraxisListItemAction, PraxisListVirtualScrollConfig, PraxisListWidgetEditorInputs, PraxisListWidgetEditorValue, TemplateDef, TemplateEvaluatorOptions, TemplateFeatureDef, TemplateType, TemplatingFeatureDef, ValueKind };