@praxisui/core 1.0.0-beta.60 → 1.0.0-beta.62
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 +9 -4
- package/fesm2022/praxisui-core.mjs +1467 -31
- package/fesm2022/praxisui-core.mjs.map +1 -1
- package/index.d.ts +487 -7
- package/package.json +6 -7
|
@@ -567,6 +567,18 @@ class SchemaNormalizerService {
|
|
|
567
567
|
if (ui.group !== undefined) {
|
|
568
568
|
field.group = ui.group;
|
|
569
569
|
}
|
|
570
|
+
if (ui.selectionMode !== undefined) {
|
|
571
|
+
field.selectionMode = String(ui.selectionMode);
|
|
572
|
+
}
|
|
573
|
+
if (ui.variant !== undefined) {
|
|
574
|
+
field.variant = String(ui.variant);
|
|
575
|
+
}
|
|
576
|
+
if (ui.density !== undefined) {
|
|
577
|
+
field.density = String(ui.density);
|
|
578
|
+
}
|
|
579
|
+
if (ui.layout !== undefined) {
|
|
580
|
+
field.layout = String(ui.layout);
|
|
581
|
+
}
|
|
570
582
|
// -------------------------------------------------------------------
|
|
571
583
|
// Behaviour and validation
|
|
572
584
|
// -------------------------------------------------------------------
|
|
@@ -1375,6 +1387,10 @@ class GlobalConfigService {
|
|
|
1375
1387
|
void this.ensureConfigLoaded({ silent: true });
|
|
1376
1388
|
return (this.configCache ?? this.changes$.value)?.dialog;
|
|
1377
1389
|
}
|
|
1390
|
+
getI18n() {
|
|
1391
|
+
void this.ensureConfigLoaded({ silent: true });
|
|
1392
|
+
return (this.configCache ?? this.changes$.value)?.i18n;
|
|
1393
|
+
}
|
|
1378
1394
|
/** Set current tenant (affects storage key). Pass undefined to clear. */
|
|
1379
1395
|
setTenant(tenantId) {
|
|
1380
1396
|
const next = tenantId ? String(tenantId).trim() || undefined : undefined;
|
|
@@ -7200,6 +7216,26 @@ function providePraxisGlobalConfigBootstrap(options) {
|
|
|
7200
7216
|
];
|
|
7201
7217
|
}
|
|
7202
7218
|
|
|
7219
|
+
const PRAXIS_I18N_CONFIG = new InjectionToken('PRAXIS_I18N_CONFIG', {
|
|
7220
|
+
factory: () => ({}),
|
|
7221
|
+
});
|
|
7222
|
+
const PRAXIS_I18N_TRANSLATOR = new InjectionToken('PRAXIS_I18N_TRANSLATOR');
|
|
7223
|
+
|
|
7224
|
+
function providePraxisI18nConfig(config) {
|
|
7225
|
+
return {
|
|
7226
|
+
provide: PRAXIS_I18N_CONFIG,
|
|
7227
|
+
useValue: config,
|
|
7228
|
+
multi: true,
|
|
7229
|
+
};
|
|
7230
|
+
}
|
|
7231
|
+
const providePraxisI18n = providePraxisI18nConfig;
|
|
7232
|
+
function providePraxisI18nTranslator(translator) {
|
|
7233
|
+
return {
|
|
7234
|
+
provide: PRAXIS_I18N_TRANSLATOR,
|
|
7235
|
+
useValue: translator,
|
|
7236
|
+
};
|
|
7237
|
+
}
|
|
7238
|
+
|
|
7203
7239
|
function providePraxisGlobalActions(opts = {
|
|
7204
7240
|
dialog: true,
|
|
7205
7241
|
toast: true,
|
|
@@ -7728,6 +7764,208 @@ const STEPPER_CONFIG_EDITOR = new InjectionToken('STEPPER_CONFIG_EDITOR');
|
|
|
7728
7764
|
const DYNAMIC_PAGE_SHELL_EDITOR = new InjectionToken('DYNAMIC_PAGE_SHELL_EDITOR');
|
|
7729
7765
|
const DYNAMIC_PAGE_CONFIG_EDITOR = new InjectionToken('DYNAMIC_PAGE_CONFIG_EDITOR');
|
|
7730
7766
|
|
|
7767
|
+
function interpolatePraxisTranslation(template, params) {
|
|
7768
|
+
if (!template || !params)
|
|
7769
|
+
return template;
|
|
7770
|
+
return template.replace(/\{\{\s*([.\w-]+)\s*\}\}/g, (_match, key) => {
|
|
7771
|
+
const value = params[key];
|
|
7772
|
+
return value == null ? '' : String(value);
|
|
7773
|
+
});
|
|
7774
|
+
}
|
|
7775
|
+
function mergePraxisI18nConfigs(...configs) {
|
|
7776
|
+
const merged = {
|
|
7777
|
+
dictionaries: {},
|
|
7778
|
+
namespaces: {},
|
|
7779
|
+
};
|
|
7780
|
+
for (const cfg of configs) {
|
|
7781
|
+
if (!cfg)
|
|
7782
|
+
continue;
|
|
7783
|
+
if (cfg.locale)
|
|
7784
|
+
merged.locale = cfg.locale;
|
|
7785
|
+
if (cfg.fallbackLocale)
|
|
7786
|
+
merged.fallbackLocale = cfg.fallbackLocale;
|
|
7787
|
+
if (cfg.dictionaries) {
|
|
7788
|
+
for (const [locale, dict] of Object.entries(cfg.dictionaries)) {
|
|
7789
|
+
merged.dictionaries[locale] = {
|
|
7790
|
+
...(merged.dictionaries?.[locale] ?? {}),
|
|
7791
|
+
...dict,
|
|
7792
|
+
};
|
|
7793
|
+
}
|
|
7794
|
+
}
|
|
7795
|
+
if (cfg.namespaces) {
|
|
7796
|
+
for (const [namespace, localeMap] of Object.entries(cfg.namespaces)) {
|
|
7797
|
+
const current = merged.namespaces[namespace] ?? {};
|
|
7798
|
+
const next = { ...current };
|
|
7799
|
+
for (const [locale, dict] of Object.entries(localeMap ?? {})) {
|
|
7800
|
+
next[locale] = {
|
|
7801
|
+
...(current[locale] ?? {}),
|
|
7802
|
+
...dict,
|
|
7803
|
+
};
|
|
7804
|
+
}
|
|
7805
|
+
merged.namespaces[namespace] = next;
|
|
7806
|
+
}
|
|
7807
|
+
}
|
|
7808
|
+
}
|
|
7809
|
+
return merged;
|
|
7810
|
+
}
|
|
7811
|
+
|
|
7812
|
+
class PraxisI18nService {
|
|
7813
|
+
configs;
|
|
7814
|
+
translator;
|
|
7815
|
+
globalConfig = inject(GlobalConfigService, { optional: true });
|
|
7816
|
+
bootstrapOptions = inject(PRAXIS_GLOBAL_CONFIG_BOOTSTRAP_OPTIONS, {
|
|
7817
|
+
optional: true,
|
|
7818
|
+
});
|
|
7819
|
+
constructor(configs, translator) {
|
|
7820
|
+
this.configs = configs;
|
|
7821
|
+
this.translator = translator;
|
|
7822
|
+
}
|
|
7823
|
+
getLocale() {
|
|
7824
|
+
const cfg = this.getConfig();
|
|
7825
|
+
const configLocale = cfg.locale?.trim();
|
|
7826
|
+
if (configLocale)
|
|
7827
|
+
return configLocale;
|
|
7828
|
+
const authLocale = this.bootstrapOptions?.auth?.locale?.()?.trim();
|
|
7829
|
+
if (authLocale)
|
|
7830
|
+
return authLocale;
|
|
7831
|
+
return 'pt-BR';
|
|
7832
|
+
}
|
|
7833
|
+
getFallbackLocale() {
|
|
7834
|
+
const fallback = this.getConfig().fallbackLocale?.trim();
|
|
7835
|
+
return fallback || 'pt-BR';
|
|
7836
|
+
}
|
|
7837
|
+
t(key, params, fallback, namespace) {
|
|
7838
|
+
const message = this.translateExternally(key, params, fallback)
|
|
7839
|
+
?? this.lookup(key, this.getLocale(), namespace)
|
|
7840
|
+
?? this.lookup(key, this.getFallbackLocale(), namespace)
|
|
7841
|
+
?? fallback
|
|
7842
|
+
?? key;
|
|
7843
|
+
return interpolatePraxisTranslation(message, params);
|
|
7844
|
+
}
|
|
7845
|
+
resolve(message, fallback, namespace) {
|
|
7846
|
+
if (typeof message === 'string')
|
|
7847
|
+
return message;
|
|
7848
|
+
if (!message)
|
|
7849
|
+
return fallback ?? '';
|
|
7850
|
+
const descriptor = message;
|
|
7851
|
+
if (descriptor.key) {
|
|
7852
|
+
return this.t(descriptor.key, descriptor.params, descriptor.text ?? fallback, namespace);
|
|
7853
|
+
}
|
|
7854
|
+
if (descriptor.text) {
|
|
7855
|
+
return interpolatePraxisTranslation(descriptor.text, descriptor.params);
|
|
7856
|
+
}
|
|
7857
|
+
return fallback ?? '';
|
|
7858
|
+
}
|
|
7859
|
+
formatDate(value, options) {
|
|
7860
|
+
const date = value instanceof Date ? value : new Date(value);
|
|
7861
|
+
if (Number.isNaN(date.getTime())) {
|
|
7862
|
+
return this.stringifyInvalidValue(value);
|
|
7863
|
+
}
|
|
7864
|
+
try {
|
|
7865
|
+
return new Intl.DateTimeFormat(this.getLocale(), options).format(date);
|
|
7866
|
+
}
|
|
7867
|
+
catch {
|
|
7868
|
+
try {
|
|
7869
|
+
return new Intl.DateTimeFormat(this.getFallbackLocale(), options).format(date);
|
|
7870
|
+
}
|
|
7871
|
+
catch {
|
|
7872
|
+
return date.toISOString();
|
|
7873
|
+
}
|
|
7874
|
+
}
|
|
7875
|
+
}
|
|
7876
|
+
formatNumber(value, options) {
|
|
7877
|
+
if (!Number.isFinite(value)) {
|
|
7878
|
+
return this.stringifyInvalidValue(value);
|
|
7879
|
+
}
|
|
7880
|
+
try {
|
|
7881
|
+
return new Intl.NumberFormat(this.getLocale(), options).format(value);
|
|
7882
|
+
}
|
|
7883
|
+
catch {
|
|
7884
|
+
try {
|
|
7885
|
+
return new Intl.NumberFormat(this.getFallbackLocale(), options).format(value);
|
|
7886
|
+
}
|
|
7887
|
+
catch {
|
|
7888
|
+
return String(value);
|
|
7889
|
+
}
|
|
7890
|
+
}
|
|
7891
|
+
}
|
|
7892
|
+
formatCurrency(value, currency, options) {
|
|
7893
|
+
if (!Number.isFinite(value)) {
|
|
7894
|
+
return this.stringifyInvalidValue(value);
|
|
7895
|
+
}
|
|
7896
|
+
const normalizedCurrency = currency?.trim().toUpperCase();
|
|
7897
|
+
const currencyOptions = {
|
|
7898
|
+
style: 'currency',
|
|
7899
|
+
currency: normalizedCurrency,
|
|
7900
|
+
...options,
|
|
7901
|
+
};
|
|
7902
|
+
if (!/^[A-Z]{3}$/.test(normalizedCurrency)) {
|
|
7903
|
+
return this.formatNumber(value, options);
|
|
7904
|
+
}
|
|
7905
|
+
try {
|
|
7906
|
+
return new Intl.NumberFormat(this.getLocale(), currencyOptions).format(value);
|
|
7907
|
+
}
|
|
7908
|
+
catch {
|
|
7909
|
+
try {
|
|
7910
|
+
return new Intl.NumberFormat(this.getFallbackLocale(), currencyOptions).format(value);
|
|
7911
|
+
}
|
|
7912
|
+
catch {
|
|
7913
|
+
return this.formatNumber(value, options);
|
|
7914
|
+
}
|
|
7915
|
+
}
|
|
7916
|
+
}
|
|
7917
|
+
getConfig() {
|
|
7918
|
+
const globalI18n = this.globalConfig?.getI18n?.();
|
|
7919
|
+
const cfgs = Array.isArray(this.configs)
|
|
7920
|
+
? this.configs
|
|
7921
|
+
: this.configs
|
|
7922
|
+
? [this.configs]
|
|
7923
|
+
: [];
|
|
7924
|
+
return mergePraxisI18nConfigs(globalI18n, ...cfgs);
|
|
7925
|
+
}
|
|
7926
|
+
lookup(key, locale, namespace) {
|
|
7927
|
+
const cfg = this.getConfig();
|
|
7928
|
+
const namespaced = namespace
|
|
7929
|
+
? cfg.namespaces?.[namespace]?.[locale]?.[key]
|
|
7930
|
+
: undefined;
|
|
7931
|
+
if (namespaced)
|
|
7932
|
+
return namespaced;
|
|
7933
|
+
return cfg.dictionaries?.[locale]?.[key];
|
|
7934
|
+
}
|
|
7935
|
+
translateExternally(key, params, fallback) {
|
|
7936
|
+
if (!this.translator)
|
|
7937
|
+
return undefined;
|
|
7938
|
+
try {
|
|
7939
|
+
return this.translator.translate(key, params, fallback);
|
|
7940
|
+
}
|
|
7941
|
+
catch {
|
|
7942
|
+
return fallback;
|
|
7943
|
+
}
|
|
7944
|
+
}
|
|
7945
|
+
stringifyInvalidValue(value) {
|
|
7946
|
+
if (value === null || value === undefined) {
|
|
7947
|
+
return '';
|
|
7948
|
+
}
|
|
7949
|
+
return String(value);
|
|
7950
|
+
}
|
|
7951
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisI18nService, deps: [{ token: PRAXIS_I18N_CONFIG, optional: true }, { token: PRAXIS_I18N_TRANSLATOR, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
7952
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisI18nService, providedIn: 'root' });
|
|
7953
|
+
}
|
|
7954
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisI18nService, decorators: [{
|
|
7955
|
+
type: Injectable,
|
|
7956
|
+
args: [{ providedIn: 'root' }]
|
|
7957
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
7958
|
+
type: Optional
|
|
7959
|
+
}, {
|
|
7960
|
+
type: Inject,
|
|
7961
|
+
args: [PRAXIS_I18N_CONFIG]
|
|
7962
|
+
}] }, { type: undefined, decorators: [{
|
|
7963
|
+
type: Optional
|
|
7964
|
+
}, {
|
|
7965
|
+
type: Inject,
|
|
7966
|
+
args: [PRAXIS_I18N_TRANSLATOR]
|
|
7967
|
+
}] }] });
|
|
7968
|
+
|
|
7731
7969
|
/**
|
|
7732
7970
|
* Enum que define os tipos de dados (`TYPE`) disponíveis para configuração dos campos de formulário.
|
|
7733
7971
|
*/
|
|
@@ -8065,6 +8303,10 @@ function createDefaultFormConfig() {
|
|
|
8065
8303
|
],
|
|
8066
8304
|
},
|
|
8067
8305
|
],
|
|
8306
|
+
formBlocksBefore: [],
|
|
8307
|
+
formBlocksBeforeActions: [],
|
|
8308
|
+
formBlocksBeforeActionsPlacement: 'afterSections',
|
|
8309
|
+
formBlocksAfter: [],
|
|
8068
8310
|
// Default mode hints (didactic tooltips)
|
|
8069
8311
|
hints: getDefaultFormHints(),
|
|
8070
8312
|
};
|
|
@@ -8077,7 +8319,13 @@ function isValidFormConfig(config) {
|
|
|
8077
8319
|
* Cria configuração vazia para inicialização
|
|
8078
8320
|
*/
|
|
8079
8321
|
function createEmptyFormConfig() {
|
|
8080
|
-
return {
|
|
8322
|
+
return {
|
|
8323
|
+
sections: [],
|
|
8324
|
+
formBlocksBefore: [],
|
|
8325
|
+
formBlocksBeforeActions: [],
|
|
8326
|
+
formBlocksBeforeActionsPlacement: 'afterSections',
|
|
8327
|
+
formBlocksAfter: [],
|
|
8328
|
+
};
|
|
8081
8329
|
}
|
|
8082
8330
|
/**
|
|
8083
8331
|
* Default hint texts for data and UI modes.
|
|
@@ -8265,6 +8513,577 @@ function convertFormLayoutToConfig(formLayout) {
|
|
|
8265
8513
|
return ensureIds({ sections });
|
|
8266
8514
|
}
|
|
8267
8515
|
|
|
8516
|
+
/**
|
|
8517
|
+
* Materializes a concrete FormConfig from a reusable editorial template.
|
|
8518
|
+
*
|
|
8519
|
+
* Merge rules:
|
|
8520
|
+
* - template defaults provide the base structure
|
|
8521
|
+
* - explicit overrides always win
|
|
8522
|
+
* - collections are replaced, not concatenated, unless omitted in overrides
|
|
8523
|
+
* - template provenance is recorded under config.metadata.template
|
|
8524
|
+
*/
|
|
8525
|
+
function buildFormConfigFromEditorialTemplate(template, options = {}) {
|
|
8526
|
+
const overrides = options.overrides ?? {};
|
|
8527
|
+
const base = {
|
|
8528
|
+
sections: template.layout?.sections ?? [],
|
|
8529
|
+
formBlocksBefore: template.layout?.formBlocksBefore ?? [],
|
|
8530
|
+
formBlocksBeforeActions: template.layout?.formBlocksBeforeActions ?? [],
|
|
8531
|
+
formBlocksBeforeActionsPlacement: template.layout?.formBlocksBeforeActionsPlacement ?? 'afterSections',
|
|
8532
|
+
formBlocksAfter: template.layout?.formBlocksAfter ?? [],
|
|
8533
|
+
editorialContext: template.defaults?.editorialContext,
|
|
8534
|
+
fieldMetadata: template.defaults?.fieldMetadata ?? [],
|
|
8535
|
+
actions: template.layout?.actions,
|
|
8536
|
+
behavior: template.defaults?.behavior,
|
|
8537
|
+
api: template.defaults?.api,
|
|
8538
|
+
messages: template.defaults?.messages,
|
|
8539
|
+
formRules: template.defaults?.formRules,
|
|
8540
|
+
hooks: template.defaults?.hooks,
|
|
8541
|
+
hints: template.defaults?.hints,
|
|
8542
|
+
metadata: {
|
|
8543
|
+
...(options.metadata ?? {}),
|
|
8544
|
+
template: {
|
|
8545
|
+
templateId: template.templateId,
|
|
8546
|
+
version: template.version,
|
|
8547
|
+
title: template.metadata.title,
|
|
8548
|
+
category: template.metadata.category,
|
|
8549
|
+
source: template.metadata.source,
|
|
8550
|
+
appliedAt: new Date(),
|
|
8551
|
+
mode: hasMeaningfulOverrides(overrides) ? 'template+override' : 'template',
|
|
8552
|
+
},
|
|
8553
|
+
},
|
|
8554
|
+
};
|
|
8555
|
+
const merged = {
|
|
8556
|
+
...base,
|
|
8557
|
+
...overrides,
|
|
8558
|
+
metadata: {
|
|
8559
|
+
...(base.metadata ?? {}),
|
|
8560
|
+
...(options.metadata ?? {}),
|
|
8561
|
+
...(overrides.metadata ?? {}),
|
|
8562
|
+
template: mergeTemplateReference(base.metadata?.template, options.metadata?.template, overrides.metadata?.template),
|
|
8563
|
+
},
|
|
8564
|
+
};
|
|
8565
|
+
return ensureIds(normalizeFormConfig(merged));
|
|
8566
|
+
}
|
|
8567
|
+
function hasMeaningfulOverrides(overrides) {
|
|
8568
|
+
const keys = Object.keys(overrides).filter((key) => key !== 'metadata');
|
|
8569
|
+
return keys.length > 0;
|
|
8570
|
+
}
|
|
8571
|
+
function mergeTemplateReference(base, metadataPatch, overridePatch) {
|
|
8572
|
+
return {
|
|
8573
|
+
templateId: overridePatch?.templateId
|
|
8574
|
+
?? metadataPatch?.templateId
|
|
8575
|
+
?? base.templateId,
|
|
8576
|
+
version: overridePatch?.version
|
|
8577
|
+
?? metadataPatch?.version
|
|
8578
|
+
?? base.version,
|
|
8579
|
+
title: overridePatch?.title
|
|
8580
|
+
?? metadataPatch?.title
|
|
8581
|
+
?? base.title,
|
|
8582
|
+
category: overridePatch?.category
|
|
8583
|
+
?? metadataPatch?.category
|
|
8584
|
+
?? base.category,
|
|
8585
|
+
source: overridePatch?.source
|
|
8586
|
+
?? metadataPatch?.source
|
|
8587
|
+
?? base.source,
|
|
8588
|
+
appliedAt: overridePatch?.appliedAt
|
|
8589
|
+
?? metadataPatch?.appliedAt
|
|
8590
|
+
?? base.appliedAt,
|
|
8591
|
+
mode: overridePatch?.mode
|
|
8592
|
+
?? metadataPatch?.mode
|
|
8593
|
+
?? base.mode,
|
|
8594
|
+
};
|
|
8595
|
+
}
|
|
8596
|
+
|
|
8597
|
+
const EVENT_REGISTRATION_EDITORIAL_TEMPLATE = {
|
|
8598
|
+
templateId: 'event-registration',
|
|
8599
|
+
version: '1.0.0',
|
|
8600
|
+
metadata: {
|
|
8601
|
+
title: 'Event Registration',
|
|
8602
|
+
description: 'Template editorial para inscrições institucionais, eventos, workshops e programas com contexto pré-submit.',
|
|
8603
|
+
category: 'registration',
|
|
8604
|
+
tags: ['event', 'registration', 'editorial', 'consent'],
|
|
8605
|
+
source: 'catalog',
|
|
8606
|
+
owner: 'praxis-core',
|
|
8607
|
+
},
|
|
8608
|
+
shell: {
|
|
8609
|
+
shellVariant: 'card',
|
|
8610
|
+
maxWidth: '820px',
|
|
8611
|
+
pageSpacing: '24px',
|
|
8612
|
+
},
|
|
8613
|
+
compliancePresets: [
|
|
8614
|
+
{ id: 'privacy-consent', label: 'Privacy Consent' },
|
|
8615
|
+
{ id: 'media-consent', label: 'Media Consent' },
|
|
8616
|
+
],
|
|
8617
|
+
contextSchema: [
|
|
8618
|
+
{ key: 'accountContext.user.name', type: 'string', required: true },
|
|
8619
|
+
{ key: 'accountContext.user.email', type: 'string', required: true },
|
|
8620
|
+
{ key: 'eventContext.title', type: 'string', required: true },
|
|
8621
|
+
{ key: 'eventContext.location', type: 'string' },
|
|
8622
|
+
{ key: 'eventContext.dateLabel', type: 'string' },
|
|
8623
|
+
],
|
|
8624
|
+
layout: {
|
|
8625
|
+
formBlocksBefore: [
|
|
8626
|
+
{
|
|
8627
|
+
id: 'widget:hero-banner',
|
|
8628
|
+
inputs: {
|
|
8629
|
+
instanceId: 'template:event-registration:hero',
|
|
8630
|
+
title: 'Inscrição em evento',
|
|
8631
|
+
titleAccent: 'institucional',
|
|
8632
|
+
subtitle: 'Template editorial',
|
|
8633
|
+
description: 'Estrutura base para inscrições em encontros, workshops, roadshows e experiências de marca.',
|
|
8634
|
+
variant: 'event',
|
|
8635
|
+
appearance: 'flat',
|
|
8636
|
+
},
|
|
8637
|
+
},
|
|
8638
|
+
{
|
|
8639
|
+
id: 'widget:rich-text-block',
|
|
8640
|
+
inputs: {
|
|
8641
|
+
instanceId: 'template:event-registration:intro',
|
|
8642
|
+
title: 'Como preencher',
|
|
8643
|
+
subtitle: 'Orientação inicial',
|
|
8644
|
+
icon: 'info',
|
|
8645
|
+
variant: 'default',
|
|
8646
|
+
appearance: 'plain',
|
|
8647
|
+
contentFormat: 'markdown',
|
|
8648
|
+
content: 'Use dados atualizados, revise os consentimentos e confirme sua disponibilidade antes do envio.',
|
|
8649
|
+
},
|
|
8650
|
+
},
|
|
8651
|
+
],
|
|
8652
|
+
sections: [
|
|
8653
|
+
{
|
|
8654
|
+
id: 'registration',
|
|
8655
|
+
appearance: 'step',
|
|
8656
|
+
stepLabel: '1',
|
|
8657
|
+
title: 'Inscrição',
|
|
8658
|
+
description: 'Dados principais do participante e critérios de participação.',
|
|
8659
|
+
rows: [
|
|
8660
|
+
{ id: 'row-name', columns: [{ id: 'col-name', fields: ['fullName'] }] },
|
|
8661
|
+
{ id: 'row-email', columns: [{ id: 'col-email', fields: ['email'] }] },
|
|
8662
|
+
{ id: 'row-attendance', columns: [{ id: 'col-attendance', fields: ['attendanceMode'] }] },
|
|
8663
|
+
{ id: 'row-company', columns: [{ id: 'col-company', fields: ['organizationName'] }] },
|
|
8664
|
+
{ id: 'row-role', columns: [{ id: 'col-role', fields: ['jobTitle'] }] },
|
|
8665
|
+
{ id: 'row-source', columns: [{ id: 'col-source', fields: ['discoverySource'] }] },
|
|
8666
|
+
{ id: 'row-photo-consent', columns: [{ id: 'col-photo-consent', fields: ['photoConsent'] }] },
|
|
8667
|
+
{ id: 'row-privacy-consent', columns: [{ id: 'col-privacy-consent', fields: ['privacyConsent'] }] },
|
|
8668
|
+
],
|
|
8669
|
+
},
|
|
8670
|
+
],
|
|
8671
|
+
formBlocksBeforeActions: [
|
|
8672
|
+
{
|
|
8673
|
+
id: 'form:user-context-summary',
|
|
8674
|
+
inputs: {
|
|
8675
|
+
instanceId: 'template:event-registration:user-context',
|
|
8676
|
+
title: 'Conta usada no preenchimento',
|
|
8677
|
+
subtitle: 'Resumo contextual antes do envio.',
|
|
8678
|
+
appearance: 'plain',
|
|
8679
|
+
source: 'context',
|
|
8680
|
+
context: '${accountContext}',
|
|
8681
|
+
fields: [
|
|
8682
|
+
{ label: 'Nome', valuePath: 'user.name', fallback: '-' },
|
|
8683
|
+
{ label: 'E-mail', valuePath: 'user.email', fallback: '-' },
|
|
8684
|
+
],
|
|
8685
|
+
actionId: 'switch-user',
|
|
8686
|
+
actionLabel: 'Trocar conta',
|
|
8687
|
+
},
|
|
8688
|
+
},
|
|
8689
|
+
{
|
|
8690
|
+
id: 'widget:legal-notice',
|
|
8691
|
+
inputs: {
|
|
8692
|
+
instanceId: 'template:event-registration:privacy',
|
|
8693
|
+
title: 'Privacidade e uso de dados',
|
|
8694
|
+
severity: 'muted',
|
|
8695
|
+
appearance: 'plain',
|
|
8696
|
+
contentFormat: 'markdown',
|
|
8697
|
+
content: 'Ao enviar a inscrição, o participante reconhece o tratamento dos dados para credenciamento, comunicações e operação do evento.',
|
|
8698
|
+
},
|
|
8699
|
+
},
|
|
8700
|
+
],
|
|
8701
|
+
formBlocksBeforeActionsPlacement: 'insideLastSection',
|
|
8702
|
+
formBlocksAfter: [
|
|
8703
|
+
{
|
|
8704
|
+
id: 'widget:footer-links',
|
|
8705
|
+
inputs: {
|
|
8706
|
+
instanceId: 'template:event-registration:footer',
|
|
8707
|
+
brandText: 'Praxis UI',
|
|
8708
|
+
secondaryText: 'Template editorial reutilizável para experiências de inscrição.',
|
|
8709
|
+
layout: 'inline',
|
|
8710
|
+
appearance: 'plain',
|
|
8711
|
+
links: [
|
|
8712
|
+
{ label: 'Privacidade', href: '/privacidade' },
|
|
8713
|
+
{ label: 'Termos', href: '/termos' },
|
|
8714
|
+
],
|
|
8715
|
+
},
|
|
8716
|
+
},
|
|
8717
|
+
],
|
|
8718
|
+
actions: {
|
|
8719
|
+
placement: 'afterSections',
|
|
8720
|
+
position: 'right',
|
|
8721
|
+
orientation: 'horizontal',
|
|
8722
|
+
spacing: 'normal',
|
|
8723
|
+
submit: {
|
|
8724
|
+
visible: true,
|
|
8725
|
+
label: 'Enviar inscrição',
|
|
8726
|
+
type: 'submit',
|
|
8727
|
+
color: 'primary',
|
|
8728
|
+
variant: 'raised',
|
|
8729
|
+
},
|
|
8730
|
+
cancel: {
|
|
8731
|
+
visible: false,
|
|
8732
|
+
label: 'Cancelar',
|
|
8733
|
+
type: 'button',
|
|
8734
|
+
color: 'basic',
|
|
8735
|
+
},
|
|
8736
|
+
reset: {
|
|
8737
|
+
visible: false,
|
|
8738
|
+
label: 'Reset',
|
|
8739
|
+
type: 'reset',
|
|
8740
|
+
color: 'basic',
|
|
8741
|
+
},
|
|
8742
|
+
},
|
|
8743
|
+
},
|
|
8744
|
+
defaults: {
|
|
8745
|
+
fieldMetadata: [
|
|
8746
|
+
{ name: 'fullName', label: 'Nome completo*', controlType: 'input', required: true },
|
|
8747
|
+
{ name: 'email', label: 'E-mail*', controlType: 'email', required: true, readonly: true },
|
|
8748
|
+
{
|
|
8749
|
+
name: 'attendanceMode',
|
|
8750
|
+
label: 'Como pretende participar?*',
|
|
8751
|
+
controlType: 'radio',
|
|
8752
|
+
required: true,
|
|
8753
|
+
selectionMode: 'single',
|
|
8754
|
+
options: [
|
|
8755
|
+
{ text: 'Presencial', value: 'PRESENTIAL' },
|
|
8756
|
+
{ text: 'Online', value: 'ONLINE' },
|
|
8757
|
+
],
|
|
8758
|
+
},
|
|
8759
|
+
{ name: 'organizationName', label: 'Empresa ou instituição*', controlType: 'input', required: true },
|
|
8760
|
+
{ name: 'jobTitle', label: 'Cargo', controlType: 'input' },
|
|
8761
|
+
{
|
|
8762
|
+
name: 'discoverySource',
|
|
8763
|
+
label: 'Como conheceu o evento?*',
|
|
8764
|
+
controlType: 'select',
|
|
8765
|
+
required: true,
|
|
8766
|
+
options: [
|
|
8767
|
+
{ text: 'Site institucional', value: 'WEBSITE' },
|
|
8768
|
+
{ text: 'LinkedIn', value: 'LINKEDIN' },
|
|
8769
|
+
{ text: 'Indicação', value: 'REFERRAL' },
|
|
8770
|
+
{ text: 'Outro', value: 'OTHER' },
|
|
8771
|
+
],
|
|
8772
|
+
},
|
|
8773
|
+
{
|
|
8774
|
+
name: 'photoConsent',
|
|
8775
|
+
label: 'Autorizo uso de imagem no contexto do evento.',
|
|
8776
|
+
controlType: 'checkbox',
|
|
8777
|
+
selectionMode: 'boolean',
|
|
8778
|
+
variant: 'consent',
|
|
8779
|
+
density: 'comfortable',
|
|
8780
|
+
required: true,
|
|
8781
|
+
requiredChecked: true,
|
|
8782
|
+
},
|
|
8783
|
+
{
|
|
8784
|
+
name: 'privacyConsent',
|
|
8785
|
+
label: 'Aceito a política de privacidade e o tratamento dos dados informados.',
|
|
8786
|
+
controlType: 'checkbox',
|
|
8787
|
+
selectionMode: 'boolean',
|
|
8788
|
+
variant: 'consent',
|
|
8789
|
+
density: 'comfortable',
|
|
8790
|
+
required: true,
|
|
8791
|
+
requiredChecked: true,
|
|
8792
|
+
},
|
|
8793
|
+
],
|
|
8794
|
+
},
|
|
8795
|
+
};
|
|
8796
|
+
const EMPLOYEE_ONBOARDING_EDITORIAL_TEMPLATE = {
|
|
8797
|
+
templateId: 'employee-onboarding',
|
|
8798
|
+
version: '1.0.0',
|
|
8799
|
+
metadata: {
|
|
8800
|
+
title: 'Employee Onboarding',
|
|
8801
|
+
description: 'Template editorial para admissão, pré-boarding e coleta inicial de dados de colaboradores.',
|
|
8802
|
+
category: 'onboarding',
|
|
8803
|
+
tags: ['employee', 'onboarding', 'hr', 'documents'],
|
|
8804
|
+
source: 'catalog',
|
|
8805
|
+
owner: 'praxis-core',
|
|
8806
|
+
},
|
|
8807
|
+
shell: {
|
|
8808
|
+
shellVariant: 'wizard',
|
|
8809
|
+
maxWidth: '920px',
|
|
8810
|
+
pageSpacing: '24px',
|
|
8811
|
+
},
|
|
8812
|
+
compliancePresets: [
|
|
8813
|
+
{ id: 'privacy-consent', label: 'Privacy Consent' },
|
|
8814
|
+
{ id: 'employment-documents', label: 'Employment Documents' },
|
|
8815
|
+
],
|
|
8816
|
+
contextSchema: [
|
|
8817
|
+
{ key: 'company.name', type: 'string', required: true },
|
|
8818
|
+
{ key: 'company.hrEmail', type: 'string' },
|
|
8819
|
+
{ key: 'position.title', type: 'string' },
|
|
8820
|
+
{ key: 'manager.name', type: 'string' },
|
|
8821
|
+
],
|
|
8822
|
+
layout: {
|
|
8823
|
+
formBlocksBefore: [
|
|
8824
|
+
{
|
|
8825
|
+
id: 'widget:hero-banner',
|
|
8826
|
+
inputs: {
|
|
8827
|
+
instanceId: 'template:employee-onboarding:hero',
|
|
8828
|
+
title: 'Boas-vindas ao processo de',
|
|
8829
|
+
titleAccent: 'onboarding',
|
|
8830
|
+
subtitle: 'Template corporativo',
|
|
8831
|
+
description: 'Base para admissão, conferência cadastral, preferências de trabalho e aceite de políticas internas.',
|
|
8832
|
+
variant: 'institutional',
|
|
8833
|
+
appearance: 'card',
|
|
8834
|
+
},
|
|
8835
|
+
},
|
|
8836
|
+
{
|
|
8837
|
+
id: 'widget:rich-text-block',
|
|
8838
|
+
inputs: {
|
|
8839
|
+
instanceId: 'template:employee-onboarding:summary',
|
|
8840
|
+
title: 'O que será coletado',
|
|
8841
|
+
subtitle: 'Resumo do fluxo',
|
|
8842
|
+
icon: 'badge',
|
|
8843
|
+
variant: 'subtle',
|
|
8844
|
+
appearance: 'plain',
|
|
8845
|
+
contentFormat: 'markdown',
|
|
8846
|
+
content: '- dados pessoais e de contato\n- preferências operacionais iniciais\n- anexos e termos obrigatórios',
|
|
8847
|
+
},
|
|
8848
|
+
},
|
|
8849
|
+
],
|
|
8850
|
+
sections: [
|
|
8851
|
+
{
|
|
8852
|
+
id: 'identity',
|
|
8853
|
+
appearance: 'step',
|
|
8854
|
+
stepLabel: '1',
|
|
8855
|
+
title: 'Identificação',
|
|
8856
|
+
description: 'Dados essenciais para cadastro inicial do colaborador.',
|
|
8857
|
+
rows: [
|
|
8858
|
+
{
|
|
8859
|
+
id: 'row-identity',
|
|
8860
|
+
columns: [
|
|
8861
|
+
{ id: 'col-full-name', fields: ['fullName'] },
|
|
8862
|
+
{ id: 'col-corporate-email', fields: ['corporateEmail'] },
|
|
8863
|
+
],
|
|
8864
|
+
},
|
|
8865
|
+
{
|
|
8866
|
+
id: 'row-personal',
|
|
8867
|
+
columns: [
|
|
8868
|
+
{ id: 'col-phone', fields: ['phoneNumber'] },
|
|
8869
|
+
{ id: 'col-work-model', fields: ['workModel'] },
|
|
8870
|
+
],
|
|
8871
|
+
},
|
|
8872
|
+
],
|
|
8873
|
+
},
|
|
8874
|
+
{
|
|
8875
|
+
id: 'operations',
|
|
8876
|
+
appearance: 'step',
|
|
8877
|
+
stepLabel: '2',
|
|
8878
|
+
title: 'Operação inicial',
|
|
8879
|
+
description: 'Dados para preparação do ambiente e comunicação inicial.',
|
|
8880
|
+
rows: [
|
|
8881
|
+
{ id: 'row-equipment', columns: [{ id: 'col-equipment', fields: ['needsEquipment'] }] },
|
|
8882
|
+
{ id: 'row-address', columns: [{ id: 'col-address', fields: ['shippingAddress'] }] },
|
|
8883
|
+
{ id: 'row-notes', columns: [{ id: 'col-notes', fields: ['accessibilityNotes'] }] },
|
|
8884
|
+
{ id: 'row-privacy', columns: [{ id: 'col-privacy', fields: ['privacyConsent'] }] },
|
|
8885
|
+
],
|
|
8886
|
+
},
|
|
8887
|
+
],
|
|
8888
|
+
formBlocksBeforeActions: [
|
|
8889
|
+
{
|
|
8890
|
+
id: 'widget:legal-notice',
|
|
8891
|
+
inputs: {
|
|
8892
|
+
instanceId: 'template:employee-onboarding:notice',
|
|
8893
|
+
title: 'Uso interno',
|
|
8894
|
+
severity: 'info',
|
|
8895
|
+
appearance: 'plain',
|
|
8896
|
+
content: 'As informações deste fluxo são usadas exclusivamente para cadastro interno, provisionamento e comunicação de onboarding.',
|
|
8897
|
+
},
|
|
8898
|
+
},
|
|
8899
|
+
],
|
|
8900
|
+
formBlocksBeforeActionsPlacement: 'afterSections',
|
|
8901
|
+
actions: {
|
|
8902
|
+
placement: 'afterSections',
|
|
8903
|
+
position: 'right',
|
|
8904
|
+
submit: {
|
|
8905
|
+
visible: true,
|
|
8906
|
+
label: 'Concluir onboarding',
|
|
8907
|
+
type: 'submit',
|
|
8908
|
+
color: 'primary',
|
|
8909
|
+
variant: 'raised',
|
|
8910
|
+
},
|
|
8911
|
+
cancel: { visible: false, label: 'Cancelar', type: 'button', color: 'basic' },
|
|
8912
|
+
reset: { visible: false, label: 'Reset', type: 'reset', color: 'basic' },
|
|
8913
|
+
},
|
|
8914
|
+
},
|
|
8915
|
+
defaults: {
|
|
8916
|
+
fieldMetadata: [
|
|
8917
|
+
{ name: 'fullName', label: 'Nome completo*', controlType: 'input', required: true },
|
|
8918
|
+
{ name: 'corporateEmail', label: 'E-mail corporativo*', controlType: 'email', required: true },
|
|
8919
|
+
{ name: 'phoneNumber', label: 'Telefone', controlType: 'input' },
|
|
8920
|
+
{
|
|
8921
|
+
name: 'workModel',
|
|
8922
|
+
label: 'Modelo de trabalho*',
|
|
8923
|
+
controlType: 'radio',
|
|
8924
|
+
required: true,
|
|
8925
|
+
options: [
|
|
8926
|
+
{ text: 'Presencial', value: 'ONSITE' },
|
|
8927
|
+
{ text: 'Híbrido', value: 'HYBRID' },
|
|
8928
|
+
{ text: 'Remoto', value: 'REMOTE' },
|
|
8929
|
+
],
|
|
8930
|
+
},
|
|
8931
|
+
{
|
|
8932
|
+
name: 'needsEquipment',
|
|
8933
|
+
label: 'Necessita envio de equipamento?',
|
|
8934
|
+
controlType: 'radio',
|
|
8935
|
+
required: true,
|
|
8936
|
+
options: [
|
|
8937
|
+
{ text: 'Sim', value: 'YES' },
|
|
8938
|
+
{ text: 'Não', value: 'NO' },
|
|
8939
|
+
],
|
|
8940
|
+
},
|
|
8941
|
+
{ name: 'shippingAddress', label: 'Endereço para envio', controlType: 'textarea' },
|
|
8942
|
+
{ name: 'accessibilityNotes', label: 'Observações de acessibilidade ou preferências', controlType: 'textarea' },
|
|
8943
|
+
{
|
|
8944
|
+
name: 'privacyConsent',
|
|
8945
|
+
label: 'Confirmo ciência sobre o tratamento dos meus dados no processo de onboarding.',
|
|
8946
|
+
controlType: 'checkbox',
|
|
8947
|
+
selectionMode: 'boolean',
|
|
8948
|
+
variant: 'consent',
|
|
8949
|
+
density: 'comfortable',
|
|
8950
|
+
required: true,
|
|
8951
|
+
requiredChecked: true,
|
|
8952
|
+
},
|
|
8953
|
+
],
|
|
8954
|
+
},
|
|
8955
|
+
};
|
|
8956
|
+
const PRIVACY_CONSENT_EDITORIAL_TEMPLATE = {
|
|
8957
|
+
templateId: 'privacy-consent',
|
|
8958
|
+
version: '1.0.0',
|
|
8959
|
+
metadata: {
|
|
8960
|
+
title: 'Privacy Consent',
|
|
8961
|
+
description: 'Template focado em aceite explícito, base legal, preferências de comunicação e registro de consentimento.',
|
|
8962
|
+
category: 'consent',
|
|
8963
|
+
tags: ['privacy', 'consent', 'compliance', 'legal'],
|
|
8964
|
+
source: 'catalog',
|
|
8965
|
+
owner: 'praxis-core',
|
|
8966
|
+
},
|
|
8967
|
+
shell: {
|
|
8968
|
+
shellVariant: 'plain',
|
|
8969
|
+
maxWidth: '760px',
|
|
8970
|
+
pageSpacing: '20px',
|
|
8971
|
+
},
|
|
8972
|
+
compliancePresets: [{ id: 'privacy-consent', label: 'Privacy Consent' }],
|
|
8973
|
+
contextSchema: [
|
|
8974
|
+
{ key: 'policy.title', type: 'string', required: true },
|
|
8975
|
+
{ key: 'policy.version', type: 'string' },
|
|
8976
|
+
{ key: 'policy.updatedAt', type: 'date' },
|
|
8977
|
+
],
|
|
8978
|
+
layout: {
|
|
8979
|
+
formBlocksBefore: [
|
|
8980
|
+
{
|
|
8981
|
+
id: 'widget:legal-notice',
|
|
8982
|
+
inputs: {
|
|
8983
|
+
instanceId: 'template:privacy-consent:lead',
|
|
8984
|
+
title: 'Consentimento e tratamento de dados',
|
|
8985
|
+
severity: 'info',
|
|
8986
|
+
appearance: 'card',
|
|
8987
|
+
contentFormat: 'markdown',
|
|
8988
|
+
content: 'Use este template quando o objetivo principal do fluxo for registrar ciência, aceite e preferências relacionadas a privacidade.',
|
|
8989
|
+
},
|
|
8990
|
+
},
|
|
8991
|
+
],
|
|
8992
|
+
sections: [
|
|
8993
|
+
{
|
|
8994
|
+
id: 'consent',
|
|
8995
|
+
appearance: 'card',
|
|
8996
|
+
title: 'Preferências e consentimentos',
|
|
8997
|
+
description: 'Aceites explícitos e canais opcionais de comunicação.',
|
|
8998
|
+
rows: [
|
|
8999
|
+
{ id: 'row-primary', columns: [{ id: 'col-primary', fields: ['privacyConsent'] }] },
|
|
9000
|
+
{ id: 'row-marketing', columns: [{ id: 'col-marketing', fields: ['marketingConsent'] }] },
|
|
9001
|
+
{ id: 'row-channels', columns: [{ id: 'col-channels', fields: ['preferredChannel'] }] },
|
|
9002
|
+
{ id: 'row-observation', columns: [{ id: 'col-observation', fields: ['consentNotes'] }] },
|
|
9003
|
+
],
|
|
9004
|
+
},
|
|
9005
|
+
],
|
|
9006
|
+
formBlocksAfter: [
|
|
9007
|
+
{
|
|
9008
|
+
id: 'widget:footer-links',
|
|
9009
|
+
inputs: {
|
|
9010
|
+
instanceId: 'template:privacy-consent:footer',
|
|
9011
|
+
brandText: 'Praxis UI',
|
|
9012
|
+
secondaryText: 'Template para fluxos regulatórios e comprovação de consentimento.',
|
|
9013
|
+
layout: 'inline',
|
|
9014
|
+
appearance: 'divider',
|
|
9015
|
+
links: [
|
|
9016
|
+
{ label: 'Política de Privacidade', href: '/privacidade' },
|
|
9017
|
+
{ label: 'Canal LGPD', href: '/lgpd' },
|
|
9018
|
+
],
|
|
9019
|
+
},
|
|
9020
|
+
},
|
|
9021
|
+
],
|
|
9022
|
+
actions: {
|
|
9023
|
+
placement: 'afterSections',
|
|
9024
|
+
position: 'right',
|
|
9025
|
+
submit: {
|
|
9026
|
+
visible: true,
|
|
9027
|
+
label: 'Registrar consentimento',
|
|
9028
|
+
type: 'submit',
|
|
9029
|
+
color: 'primary',
|
|
9030
|
+
variant: 'raised',
|
|
9031
|
+
},
|
|
9032
|
+
cancel: { visible: false, label: 'Cancelar', type: 'button', color: 'basic' },
|
|
9033
|
+
reset: { visible: false, label: 'Reset', type: 'reset', color: 'basic' },
|
|
9034
|
+
},
|
|
9035
|
+
},
|
|
9036
|
+
defaults: {
|
|
9037
|
+
fieldMetadata: [
|
|
9038
|
+
{
|
|
9039
|
+
name: 'privacyConsent',
|
|
9040
|
+
label: 'Li e aceito a política de privacidade aplicável.',
|
|
9041
|
+
controlType: 'checkbox',
|
|
9042
|
+
selectionMode: 'boolean',
|
|
9043
|
+
variant: 'consent',
|
|
9044
|
+
density: 'comfortable',
|
|
9045
|
+
required: true,
|
|
9046
|
+
requiredChecked: true,
|
|
9047
|
+
},
|
|
9048
|
+
{
|
|
9049
|
+
name: 'marketingConsent',
|
|
9050
|
+
label: 'Aceito receber comunicações institucionais e materiais relacionados.',
|
|
9051
|
+
controlType: 'checkbox',
|
|
9052
|
+
selectionMode: 'boolean',
|
|
9053
|
+
variant: 'consent',
|
|
9054
|
+
density: 'comfortable',
|
|
9055
|
+
},
|
|
9056
|
+
{
|
|
9057
|
+
name: 'preferredChannel',
|
|
9058
|
+
label: 'Canal preferencial de comunicação',
|
|
9059
|
+
controlType: 'select',
|
|
9060
|
+
options: [
|
|
9061
|
+
{ text: 'E-mail', value: 'EMAIL' },
|
|
9062
|
+
{ text: 'Telefone', value: 'PHONE' },
|
|
9063
|
+
{ text: 'WhatsApp', value: 'WHATSAPP' },
|
|
9064
|
+
],
|
|
9065
|
+
},
|
|
9066
|
+
{
|
|
9067
|
+
name: 'consentNotes',
|
|
9068
|
+
label: 'Observações adicionais',
|
|
9069
|
+
controlType: 'textarea',
|
|
9070
|
+
},
|
|
9071
|
+
],
|
|
9072
|
+
},
|
|
9073
|
+
};
|
|
9074
|
+
const EDITORIAL_FORM_TEMPLATE_CATALOG = [
|
|
9075
|
+
EVENT_REGISTRATION_EDITORIAL_TEMPLATE,
|
|
9076
|
+
EMPLOYEE_ONBOARDING_EDITORIAL_TEMPLATE,
|
|
9077
|
+
PRIVACY_CONSENT_EDITORIAL_TEMPLATE,
|
|
9078
|
+
];
|
|
9079
|
+
function getEditorialFormTemplateCatalog() {
|
|
9080
|
+
return EDITORIAL_FORM_TEMPLATE_CATALOG.map((template) => structuredClone(template));
|
|
9081
|
+
}
|
|
9082
|
+
function getEditorialFormTemplateById(templateId) {
|
|
9083
|
+
const match = EDITORIAL_FORM_TEMPLATE_CATALOG.find((template) => template.templateId === templateId);
|
|
9084
|
+
return match ? structuredClone(match) : undefined;
|
|
9085
|
+
}
|
|
9086
|
+
|
|
8268
9087
|
const RULE_PROPERTY_SCHEMA = {
|
|
8269
9088
|
field: [
|
|
8270
9089
|
{ name: 'visible', type: 'boolean', label: 'Visível' },
|
|
@@ -8372,7 +9191,17 @@ const RULE_PROPERTY_SCHEMA = {
|
|
|
8372
9191
|
{ value: 'bodySmall', label: 'Body pequeno' },
|
|
8373
9192
|
],
|
|
8374
9193
|
},
|
|
8375
|
-
{
|
|
9194
|
+
{
|
|
9195
|
+
name: 'appearance',
|
|
9196
|
+
type: 'enum',
|
|
9197
|
+
label: 'Aparência',
|
|
9198
|
+
enumValues: [
|
|
9199
|
+
{ value: 'card', label: 'Card' },
|
|
9200
|
+
{ value: 'plain', label: 'Plain' },
|
|
9201
|
+
{ value: 'step', label: 'Step' },
|
|
9202
|
+
],
|
|
9203
|
+
},
|
|
9204
|
+
{ name: 'stepLabel', type: 'string', label: 'Rótulo do passo' },
|
|
8376
9205
|
],
|
|
8377
9206
|
action: [
|
|
8378
9207
|
{ name: 'visible', type: 'boolean', label: 'Visível' },
|
|
@@ -8446,6 +9275,497 @@ const RULE_PROPERTY_SCHEMA = {
|
|
|
8446
9275
|
],
|
|
8447
9276
|
};
|
|
8448
9277
|
|
|
9278
|
+
const EDITORIAL_THEME_PRESETS = [
|
|
9279
|
+
{
|
|
9280
|
+
themeId: 'institutional-card',
|
|
9281
|
+
label: 'Institutional Card',
|
|
9282
|
+
description: 'Tema editorial compacto para fluxos institucionais com hero e superfície centralizada.',
|
|
9283
|
+
shellVariant: 'card',
|
|
9284
|
+
maxWidth: '820px',
|
|
9285
|
+
pageSpacing: '24px',
|
|
9286
|
+
surfaceVariant: 'institutional',
|
|
9287
|
+
},
|
|
9288
|
+
{
|
|
9289
|
+
themeId: 'corporate-wizard',
|
|
9290
|
+
label: 'Corporate Wizard',
|
|
9291
|
+
description: 'Tema editorial para jornadas longas de onboarding e preparação operacional.',
|
|
9292
|
+
shellVariant: 'wizard',
|
|
9293
|
+
maxWidth: '920px',
|
|
9294
|
+
pageSpacing: '24px',
|
|
9295
|
+
surfaceVariant: 'corporate',
|
|
9296
|
+
},
|
|
9297
|
+
{
|
|
9298
|
+
themeId: 'compliance-plain',
|
|
9299
|
+
label: 'Compliance Plain',
|
|
9300
|
+
description: 'Tema enxuto para consentimento, aceite explícito e comprovação regulatória.',
|
|
9301
|
+
shellVariant: 'plain',
|
|
9302
|
+
maxWidth: '760px',
|
|
9303
|
+
pageSpacing: '20px',
|
|
9304
|
+
surfaceVariant: 'compliance',
|
|
9305
|
+
},
|
|
9306
|
+
];
|
|
9307
|
+
const EDITORIAL_COMPLIANCE_PRESETS = [
|
|
9308
|
+
{
|
|
9309
|
+
presetId: 'privacy-consent',
|
|
9310
|
+
label: 'Privacy Consent',
|
|
9311
|
+
description: 'Preset canônico para aceite de política, base legal e evidências mínimas de consentimento.',
|
|
9312
|
+
problemTypes: ['event-registration', 'employee-onboarding', 'privacy-consent'],
|
|
9313
|
+
requiredContextKeys: ['policy.title'],
|
|
9314
|
+
requiredEvidenceKeys: ['privacyConsentAcceptedAt'],
|
|
9315
|
+
requiredAcceptances: ['privacyConsent'],
|
|
9316
|
+
blocks: [
|
|
9317
|
+
{
|
|
9318
|
+
blockId: 'compliance:privacy-explainer',
|
|
9319
|
+
kind: 'legalNotice',
|
|
9320
|
+
title: 'Privacidade e tratamento de dados',
|
|
9321
|
+
contentFormat: 'markdown',
|
|
9322
|
+
content: 'Este fluxo requer consentimento explícito e registro de base legal aplicável ao tratamento dos dados informados.',
|
|
9323
|
+
tone: 'institutional',
|
|
9324
|
+
surface: 'plain',
|
|
9325
|
+
},
|
|
9326
|
+
],
|
|
9327
|
+
},
|
|
9328
|
+
{
|
|
9329
|
+
presetId: 'media-consent',
|
|
9330
|
+
label: 'Media Consent',
|
|
9331
|
+
description: 'Preset para experiências que exigem autorização de imagem, gravação ou divulgação pública.',
|
|
9332
|
+
problemTypes: ['event-registration'],
|
|
9333
|
+
requiredAcceptances: ['photoConsent'],
|
|
9334
|
+
},
|
|
9335
|
+
{
|
|
9336
|
+
presetId: 'employment-documents',
|
|
9337
|
+
label: 'Employment Documents',
|
|
9338
|
+
description: 'Preset para onboarding com documentos, aceite de políticas internas e preparação operacional.',
|
|
9339
|
+
problemTypes: ['employee-onboarding'],
|
|
9340
|
+
requiredAcceptances: ['privacyConsent'],
|
|
9341
|
+
},
|
|
9342
|
+
];
|
|
9343
|
+
const EDITORIAL_SOLUTION_PRESETS = [
|
|
9344
|
+
{
|
|
9345
|
+
presetId: 'preset:event-registration:institutional',
|
|
9346
|
+
label: 'Event Registration Institutional',
|
|
9347
|
+
description: 'Fluxo editorial de inscrição em evento com contexto de conta, elegibilidade e consentimentos.',
|
|
9348
|
+
problemType: 'event-registration',
|
|
9349
|
+
themePresetId: 'institutional-card',
|
|
9350
|
+
compliancePresetIds: ['privacy-consent', 'media-consent'],
|
|
9351
|
+
dataBlockOrder: ['registration-form'],
|
|
9352
|
+
tags: ['event', 'registration', 'institutional'],
|
|
9353
|
+
},
|
|
9354
|
+
{
|
|
9355
|
+
presetId: 'preset:employee-onboarding:default',
|
|
9356
|
+
label: 'Employee Onboarding Default',
|
|
9357
|
+
description: 'Fluxo editorial de onboarding com narrativa de jornada, contexto corporativo e aceite interno.',
|
|
9358
|
+
problemType: 'employee-onboarding',
|
|
9359
|
+
themePresetId: 'corporate-wizard',
|
|
9360
|
+
compliancePresetIds: ['privacy-consent', 'employment-documents'],
|
|
9361
|
+
dataBlockOrder: ['identity-form', 'operations-form'],
|
|
9362
|
+
tags: ['hr', 'onboarding', 'corporate'],
|
|
9363
|
+
},
|
|
9364
|
+
{
|
|
9365
|
+
presetId: 'preset:privacy-consent:default',
|
|
9366
|
+
label: 'Privacy Consent Default',
|
|
9367
|
+
description: 'Fluxo editorial enxuto para consentimento, preferências de canal e observações adicionais.',
|
|
9368
|
+
problemType: 'privacy-consent',
|
|
9369
|
+
themePresetId: 'compliance-plain',
|
|
9370
|
+
compliancePresetIds: ['privacy-consent'],
|
|
9371
|
+
dataBlockOrder: ['consent-form'],
|
|
9372
|
+
tags: ['privacy', 'consent', 'compliance'],
|
|
9373
|
+
},
|
|
9374
|
+
];
|
|
9375
|
+
const EVENT_REGISTRATION_EDITORIAL_SOLUTION = {
|
|
9376
|
+
solutionId: 'event-registration',
|
|
9377
|
+
version: '1.0.0',
|
|
9378
|
+
problemType: 'event-registration',
|
|
9379
|
+
title: 'Event Registration',
|
|
9380
|
+
description: 'Solução editorial para inscrições em eventos institucionais, workshops e experiências de marca com consentimentos e revisão contextual.',
|
|
9381
|
+
contextContract: [
|
|
9382
|
+
{ key: 'accountContext.user.name', type: 'string', required: true },
|
|
9383
|
+
{ key: 'accountContext.user.email', type: 'string', required: true },
|
|
9384
|
+
{ key: 'eventContext.title', type: 'string', required: true },
|
|
9385
|
+
{ key: 'eventContext.location', type: 'string' },
|
|
9386
|
+
{ key: 'eventContext.dateLabel', type: 'string' },
|
|
9387
|
+
{ key: 'policy.title', type: 'string' },
|
|
9388
|
+
],
|
|
9389
|
+
journeys: [
|
|
9390
|
+
{
|
|
9391
|
+
journeyId: 'event-registration-journey',
|
|
9392
|
+
label: 'Inscrição institucional',
|
|
9393
|
+
description: 'Jornada editorial do convite até a confirmação final da inscrição.',
|
|
9394
|
+
steps: [
|
|
9395
|
+
{
|
|
9396
|
+
stepId: 'welcome',
|
|
9397
|
+
label: 'Abertura',
|
|
9398
|
+
blocks: [
|
|
9399
|
+
{
|
|
9400
|
+
blockId: 'event:hero',
|
|
9401
|
+
kind: 'hero',
|
|
9402
|
+
title: 'Inscrição em evento',
|
|
9403
|
+
titleAccent: 'institucional',
|
|
9404
|
+
subtitle: 'Template editorial',
|
|
9405
|
+
description: 'Estrutura base para inscrições em encontros, workshops, roadshows e experiências de marca.',
|
|
9406
|
+
tone: 'institutional',
|
|
9407
|
+
surface: 'plain',
|
|
9408
|
+
badges: [{ label: 'Vagas limitadas', tone: 'warning' }],
|
|
9409
|
+
},
|
|
9410
|
+
{
|
|
9411
|
+
blockId: 'event:intro',
|
|
9412
|
+
kind: 'richText',
|
|
9413
|
+
title: 'Como preencher',
|
|
9414
|
+
subtitle: 'Orientação inicial',
|
|
9415
|
+
contentFormat: 'markdown',
|
|
9416
|
+
content: 'Use dados atualizados, revise os consentimentos e confirme sua disponibilidade antes do envio.',
|
|
9417
|
+
tone: 'default',
|
|
9418
|
+
surface: 'plain',
|
|
9419
|
+
},
|
|
9420
|
+
],
|
|
9421
|
+
},
|
|
9422
|
+
{
|
|
9423
|
+
stepId: 'registration',
|
|
9424
|
+
label: 'Dados do participante',
|
|
9425
|
+
blocks: [
|
|
9426
|
+
{
|
|
9427
|
+
blockId: 'event:user-context',
|
|
9428
|
+
kind: 'contextSummary',
|
|
9429
|
+
title: 'Conta usada no preenchimento',
|
|
9430
|
+
subtitle: 'Resumo contextual antes do envio.',
|
|
9431
|
+
contextPath: 'accountContext',
|
|
9432
|
+
fields: [
|
|
9433
|
+
{ key: 'name', label: 'Nome', valuePath: 'user.name', fallback: '-' },
|
|
9434
|
+
{ key: 'email', label: 'E-mail', valuePath: 'user.email', fallback: '-' },
|
|
9435
|
+
],
|
|
9436
|
+
actionId: 'switch-user',
|
|
9437
|
+
actionLabel: 'Trocar conta',
|
|
9438
|
+
surface: 'plain',
|
|
9439
|
+
},
|
|
9440
|
+
{
|
|
9441
|
+
blockId: 'registration-form',
|
|
9442
|
+
kind: 'dataCollection',
|
|
9443
|
+
title: 'Inscrição',
|
|
9444
|
+
description: 'Dados principais do participante e critérios de participação.',
|
|
9445
|
+
formBlockId: 'registration-form',
|
|
9446
|
+
},
|
|
9447
|
+
],
|
|
9448
|
+
},
|
|
9449
|
+
{
|
|
9450
|
+
stepId: 'review',
|
|
9451
|
+
label: 'Revisão e envio',
|
|
9452
|
+
blocks: [
|
|
9453
|
+
{
|
|
9454
|
+
blockId: 'event:privacy-notice',
|
|
9455
|
+
kind: 'legalNotice',
|
|
9456
|
+
title: 'Privacidade e uso de dados',
|
|
9457
|
+
contentFormat: 'markdown',
|
|
9458
|
+
content: 'Ao enviar a inscrição, o participante reconhece o tratamento dos dados para credenciamento, comunicações e operação do evento.',
|
|
9459
|
+
tone: 'muted',
|
|
9460
|
+
surface: 'plain',
|
|
9461
|
+
},
|
|
9462
|
+
{
|
|
9463
|
+
blockId: 'event:review-summary',
|
|
9464
|
+
kind: 'reviewSummary',
|
|
9465
|
+
title: 'Antes de enviar',
|
|
9466
|
+
description: 'Revise os principais dados e confirme os consentimentos obrigatórios.',
|
|
9467
|
+
fields: [
|
|
9468
|
+
{ key: 'fullName', label: 'Nome completo', valuePath: 'formData.fullName', fallback: '-' },
|
|
9469
|
+
{ key: 'email', label: 'E-mail', valuePath: 'formData.email', fallback: '-' },
|
|
9470
|
+
{ key: 'attendance', label: 'Participação', valuePath: 'formData.attendanceMode', fallback: '-' },
|
|
9471
|
+
],
|
|
9472
|
+
checklist: [
|
|
9473
|
+
'Os dados cadastrais estão corretos.',
|
|
9474
|
+
'Os consentimentos obrigatórios foram confirmados.',
|
|
9475
|
+
'A disponibilidade para participação foi revisada.',
|
|
9476
|
+
],
|
|
9477
|
+
surface: 'card',
|
|
9478
|
+
},
|
|
9479
|
+
{
|
|
9480
|
+
blockId: 'event:footer',
|
|
9481
|
+
kind: 'footerLinks',
|
|
9482
|
+
widget: {
|
|
9483
|
+
id: 'widget:footer-links',
|
|
9484
|
+
inputs: {
|
|
9485
|
+
instanceId: 'solution:event-registration:footer',
|
|
9486
|
+
brandText: 'Praxis UI',
|
|
9487
|
+
secondaryText: 'Solução editorial reutilizável para experiências de inscrição.',
|
|
9488
|
+
layout: 'inline',
|
|
9489
|
+
appearance: 'plain',
|
|
9490
|
+
links: [
|
|
9491
|
+
{ label: 'Privacidade', href: '/privacidade' },
|
|
9492
|
+
{ label: 'Termos', href: '/termos' },
|
|
9493
|
+
],
|
|
9494
|
+
},
|
|
9495
|
+
},
|
|
9496
|
+
},
|
|
9497
|
+
],
|
|
9498
|
+
},
|
|
9499
|
+
],
|
|
9500
|
+
},
|
|
9501
|
+
],
|
|
9502
|
+
themePresets: EDITORIAL_THEME_PRESETS.filter((preset) => preset.themeId === 'institutional-card'),
|
|
9503
|
+
compliancePresets: EDITORIAL_COMPLIANCE_PRESETS.filter((preset) => ['privacy-consent', 'media-consent'].includes(preset.presetId)),
|
|
9504
|
+
tags: ['event', 'registration', 'editorial', 'consent'],
|
|
9505
|
+
owner: 'praxis-core',
|
|
9506
|
+
};
|
|
9507
|
+
const EMPLOYEE_ONBOARDING_EDITORIAL_SOLUTION = {
|
|
9508
|
+
solutionId: 'employee-onboarding',
|
|
9509
|
+
version: '1.0.0',
|
|
9510
|
+
problemType: 'employee-onboarding',
|
|
9511
|
+
title: 'Employee Onboarding',
|
|
9512
|
+
description: 'Solução editorial para admissão, pré-boarding e coleta inicial de dados de colaboradores com narrativa corporativa.',
|
|
9513
|
+
contextContract: [
|
|
9514
|
+
{ key: 'company.name', type: 'string', required: true },
|
|
9515
|
+
{ key: 'company.hrEmail', type: 'string' },
|
|
9516
|
+
{ key: 'position.title', type: 'string' },
|
|
9517
|
+
{ key: 'manager.name', type: 'string' },
|
|
9518
|
+
{ key: 'policy.title', type: 'string' },
|
|
9519
|
+
],
|
|
9520
|
+
journeys: [
|
|
9521
|
+
{
|
|
9522
|
+
journeyId: 'employee-onboarding-journey',
|
|
9523
|
+
label: 'Onboarding corporativo',
|
|
9524
|
+
description: 'Jornada editorial da chegada do colaborador até a preparação operacional inicial.',
|
|
9525
|
+
steps: [
|
|
9526
|
+
{
|
|
9527
|
+
stepId: 'welcome',
|
|
9528
|
+
label: 'Boas-vindas',
|
|
9529
|
+
blocks: [
|
|
9530
|
+
{
|
|
9531
|
+
blockId: 'onboarding:hero',
|
|
9532
|
+
kind: 'hero',
|
|
9533
|
+
title: 'Boas-vindas ao processo de',
|
|
9534
|
+
titleAccent: 'onboarding',
|
|
9535
|
+
subtitle: 'Template corporativo',
|
|
9536
|
+
description: 'Base para admissão, conferência cadastral, preferências de trabalho e aceite de políticas internas.',
|
|
9537
|
+
surface: 'card',
|
|
9538
|
+
tone: 'institutional',
|
|
9539
|
+
},
|
|
9540
|
+
{
|
|
9541
|
+
blockId: 'onboarding:summary',
|
|
9542
|
+
kind: 'richText',
|
|
9543
|
+
title: 'O que será coletado',
|
|
9544
|
+
subtitle: 'Resumo do fluxo',
|
|
9545
|
+
contentFormat: 'markdown',
|
|
9546
|
+
content: '- dados pessoais e de contato\n- preferências operacionais iniciais\n- anexos e termos obrigatórios',
|
|
9547
|
+
tone: 'muted',
|
|
9548
|
+
surface: 'plain',
|
|
9549
|
+
},
|
|
9550
|
+
{
|
|
9551
|
+
blockId: 'onboarding:timeline',
|
|
9552
|
+
kind: 'timelineSteps',
|
|
9553
|
+
title: 'Como funciona a jornada',
|
|
9554
|
+
steps: [
|
|
9555
|
+
{ id: 'identity', label: 'Identificação', description: 'Cadastro inicial e dados pessoais.' },
|
|
9556
|
+
{ id: 'operations', label: 'Preparação operacional', description: 'Equipamentos, endereço e preferências.' },
|
|
9557
|
+
{ id: 'confirmation', label: 'Confirmação', description: 'Revisão final e aceite interno.' },
|
|
9558
|
+
],
|
|
9559
|
+
surface: 'card',
|
|
9560
|
+
},
|
|
9561
|
+
],
|
|
9562
|
+
},
|
|
9563
|
+
{
|
|
9564
|
+
stepId: 'identity',
|
|
9565
|
+
label: 'Identificação',
|
|
9566
|
+
blocks: [
|
|
9567
|
+
{
|
|
9568
|
+
blockId: 'identity-form',
|
|
9569
|
+
kind: 'dataCollection',
|
|
9570
|
+
title: 'Dados essenciais',
|
|
9571
|
+
description: 'Informações essenciais para cadastro inicial do colaborador.',
|
|
9572
|
+
formBlockId: 'identity-form',
|
|
9573
|
+
},
|
|
9574
|
+
],
|
|
9575
|
+
},
|
|
9576
|
+
{
|
|
9577
|
+
stepId: 'operations',
|
|
9578
|
+
label: 'Operação inicial',
|
|
9579
|
+
blocks: [
|
|
9580
|
+
{
|
|
9581
|
+
blockId: 'operations:notice',
|
|
9582
|
+
kind: 'legalNotice',
|
|
9583
|
+
title: 'Uso interno',
|
|
9584
|
+
content: 'As informações deste fluxo são usadas exclusivamente para cadastro interno, provisionamento e comunicação de onboarding.',
|
|
9585
|
+
tone: 'default',
|
|
9586
|
+
surface: 'plain',
|
|
9587
|
+
},
|
|
9588
|
+
{
|
|
9589
|
+
blockId: 'operations-form',
|
|
9590
|
+
kind: 'dataCollection',
|
|
9591
|
+
title: 'Preparação operacional',
|
|
9592
|
+
description: 'Dados para preparação do ambiente e comunicação inicial.',
|
|
9593
|
+
formBlockId: 'operations-form',
|
|
9594
|
+
},
|
|
9595
|
+
],
|
|
9596
|
+
},
|
|
9597
|
+
{
|
|
9598
|
+
stepId: 'confirmation',
|
|
9599
|
+
label: 'Confirmação',
|
|
9600
|
+
blocks: [
|
|
9601
|
+
{
|
|
9602
|
+
blockId: 'onboarding:review-summary',
|
|
9603
|
+
kind: 'reviewSummary',
|
|
9604
|
+
title: 'Checklist final do onboarding',
|
|
9605
|
+
fields: [
|
|
9606
|
+
{ key: 'fullName', label: 'Nome completo', valuePath: 'formData.fullName', fallback: '-' },
|
|
9607
|
+
{ key: 'corporateEmail', label: 'E-mail corporativo', valuePath: 'formData.corporateEmail', fallback: '-' },
|
|
9608
|
+
{ key: 'workModel', label: 'Modelo de trabalho', valuePath: 'formData.workModel', fallback: '-' },
|
|
9609
|
+
],
|
|
9610
|
+
checklist: [
|
|
9611
|
+
'Os dados pessoais foram revisados.',
|
|
9612
|
+
'As necessidades operacionais foram registradas.',
|
|
9613
|
+
'O aceite de privacidade foi confirmado.',
|
|
9614
|
+
],
|
|
9615
|
+
surface: 'card',
|
|
9616
|
+
},
|
|
9617
|
+
],
|
|
9618
|
+
},
|
|
9619
|
+
],
|
|
9620
|
+
},
|
|
9621
|
+
],
|
|
9622
|
+
themePresets: EDITORIAL_THEME_PRESETS.filter((preset) => preset.themeId === 'corporate-wizard'),
|
|
9623
|
+
compliancePresets: EDITORIAL_COMPLIANCE_PRESETS.filter((preset) => ['privacy-consent', 'employment-documents'].includes(preset.presetId)),
|
|
9624
|
+
tags: ['employee', 'onboarding', 'hr', 'documents'],
|
|
9625
|
+
owner: 'praxis-core',
|
|
9626
|
+
};
|
|
9627
|
+
const PRIVACY_CONSENT_EDITORIAL_SOLUTION = {
|
|
9628
|
+
solutionId: 'privacy-consent',
|
|
9629
|
+
version: '1.0.0',
|
|
9630
|
+
problemType: 'privacy-consent',
|
|
9631
|
+
title: 'Privacy Consent',
|
|
9632
|
+
description: 'Solução editorial focada em aceite explícito, base legal, preferências de comunicação e registro de consentimento.',
|
|
9633
|
+
contextContract: [
|
|
9634
|
+
{ key: 'policy.title', type: 'string', required: true },
|
|
9635
|
+
{ key: 'policy.version', type: 'string' },
|
|
9636
|
+
{ key: 'policy.updatedAt', type: 'date' },
|
|
9637
|
+
],
|
|
9638
|
+
journeys: [
|
|
9639
|
+
{
|
|
9640
|
+
journeyId: 'privacy-consent-journey',
|
|
9641
|
+
label: 'Consentimento regulatório',
|
|
9642
|
+
description: 'Jornada editorial curta para registrar ciência, consentimento e preferências de canal.',
|
|
9643
|
+
steps: [
|
|
9644
|
+
{
|
|
9645
|
+
stepId: 'policy-context',
|
|
9646
|
+
label: 'Contexto',
|
|
9647
|
+
blocks: [
|
|
9648
|
+
{
|
|
9649
|
+
blockId: 'privacy:lead',
|
|
9650
|
+
kind: 'legalNotice',
|
|
9651
|
+
title: 'Consentimento e tratamento de dados',
|
|
9652
|
+
contentFormat: 'markdown',
|
|
9653
|
+
content: 'Use esta solução quando o objetivo principal do fluxo for registrar ciência, aceite e preferências relacionadas a privacidade.',
|
|
9654
|
+
tone: 'default',
|
|
9655
|
+
surface: 'card',
|
|
9656
|
+
},
|
|
9657
|
+
{
|
|
9658
|
+
blockId: 'privacy:policy-list',
|
|
9659
|
+
kind: 'policyList',
|
|
9660
|
+
title: 'Documentos e políticas relacionados',
|
|
9661
|
+
items: [
|
|
9662
|
+
{
|
|
9663
|
+
id: 'privacy-policy',
|
|
9664
|
+
title: 'Política de Privacidade',
|
|
9665
|
+
summary: 'Documento principal que define base legal, finalidades e direitos do titular.',
|
|
9666
|
+
required: true,
|
|
9667
|
+
href: '/privacidade',
|
|
9668
|
+
evidenceKey: 'privacyConsentAcceptedAt',
|
|
9669
|
+
},
|
|
9670
|
+
{
|
|
9671
|
+
id: 'lgpd-channel',
|
|
9672
|
+
title: 'Canal LGPD',
|
|
9673
|
+
summary: 'Canal de atendimento para solicitações e exercício de direitos.',
|
|
9674
|
+
required: false,
|
|
9675
|
+
href: '/lgpd',
|
|
9676
|
+
},
|
|
9677
|
+
],
|
|
9678
|
+
actionId: 'open-policy-center',
|
|
9679
|
+
actionLabel: 'Abrir central de políticas',
|
|
9680
|
+
surface: 'card',
|
|
9681
|
+
},
|
|
9682
|
+
],
|
|
9683
|
+
},
|
|
9684
|
+
{
|
|
9685
|
+
stepId: 'consent',
|
|
9686
|
+
label: 'Preferências',
|
|
9687
|
+
blocks: [
|
|
9688
|
+
{
|
|
9689
|
+
blockId: 'consent-form',
|
|
9690
|
+
kind: 'dataCollection',
|
|
9691
|
+
title: 'Preferências e consentimentos',
|
|
9692
|
+
description: 'Aceites explícitos e canais opcionais de comunicação.',
|
|
9693
|
+
formBlockId: 'consent-form',
|
|
9694
|
+
},
|
|
9695
|
+
],
|
|
9696
|
+
},
|
|
9697
|
+
{
|
|
9698
|
+
stepId: 'confirmation',
|
|
9699
|
+
label: 'Confirmação',
|
|
9700
|
+
blocks: [
|
|
9701
|
+
{
|
|
9702
|
+
blockId: 'privacy:review-summary',
|
|
9703
|
+
kind: 'reviewSummary',
|
|
9704
|
+
title: 'Resumo do consentimento',
|
|
9705
|
+
fields: [
|
|
9706
|
+
{ key: 'privacyConsent', label: 'Consentimento principal', valuePath: 'formData.privacyConsent', fallback: '-' },
|
|
9707
|
+
{ key: 'preferredChannel', label: 'Canal preferencial', valuePath: 'formData.preferredChannel', fallback: '-' },
|
|
9708
|
+
],
|
|
9709
|
+
checklist: [
|
|
9710
|
+
'A política aplicável foi revisada.',
|
|
9711
|
+
'O consentimento principal foi registrado.',
|
|
9712
|
+
'As preferências de comunicação foram definidas.',
|
|
9713
|
+
],
|
|
9714
|
+
surface: 'card',
|
|
9715
|
+
},
|
|
9716
|
+
{
|
|
9717
|
+
blockId: 'privacy:footer',
|
|
9718
|
+
kind: 'footerLinks',
|
|
9719
|
+
widget: {
|
|
9720
|
+
id: 'widget:footer-links',
|
|
9721
|
+
inputs: {
|
|
9722
|
+
instanceId: 'solution:privacy-consent:footer',
|
|
9723
|
+
brandText: 'Praxis UI',
|
|
9724
|
+
secondaryText: 'Solução para fluxos regulatórios e comprovação de consentimento.',
|
|
9725
|
+
layout: 'inline',
|
|
9726
|
+
appearance: 'divider',
|
|
9727
|
+
links: [
|
|
9728
|
+
{ label: 'Política de Privacidade', href: '/privacidade' },
|
|
9729
|
+
{ label: 'Canal LGPD', href: '/lgpd' },
|
|
9730
|
+
],
|
|
9731
|
+
},
|
|
9732
|
+
},
|
|
9733
|
+
},
|
|
9734
|
+
],
|
|
9735
|
+
},
|
|
9736
|
+
],
|
|
9737
|
+
},
|
|
9738
|
+
],
|
|
9739
|
+
themePresets: EDITORIAL_THEME_PRESETS.filter((preset) => preset.themeId === 'compliance-plain'),
|
|
9740
|
+
compliancePresets: EDITORIAL_COMPLIANCE_PRESETS.filter((preset) => preset.presetId === 'privacy-consent'),
|
|
9741
|
+
tags: ['privacy', 'consent', 'compliance', 'legal'],
|
|
9742
|
+
owner: 'praxis-core',
|
|
9743
|
+
};
|
|
9744
|
+
const EDITORIAL_SOLUTION_CATALOG = [
|
|
9745
|
+
EVENT_REGISTRATION_EDITORIAL_SOLUTION,
|
|
9746
|
+
EMPLOYEE_ONBOARDING_EDITORIAL_SOLUTION,
|
|
9747
|
+
PRIVACY_CONSENT_EDITORIAL_SOLUTION,
|
|
9748
|
+
];
|
|
9749
|
+
function getEditorialSolutionCatalog() {
|
|
9750
|
+
return EDITORIAL_SOLUTION_CATALOG.map((solution) => structuredClone(solution));
|
|
9751
|
+
}
|
|
9752
|
+
function getEditorialSolutionById(solutionId) {
|
|
9753
|
+
const match = EDITORIAL_SOLUTION_CATALOG.find((solution) => solution.solutionId === solutionId);
|
|
9754
|
+
return match ? structuredClone(match) : undefined;
|
|
9755
|
+
}
|
|
9756
|
+
function getEditorialThemePresetById(themeId) {
|
|
9757
|
+
const match = EDITORIAL_THEME_PRESETS.find((preset) => preset.themeId === themeId);
|
|
9758
|
+
return match ? structuredClone(match) : undefined;
|
|
9759
|
+
}
|
|
9760
|
+
function getEditorialCompliancePresetById(presetId) {
|
|
9761
|
+
const match = EDITORIAL_COMPLIANCE_PRESETS.find((preset) => preset.presetId === presetId);
|
|
9762
|
+
return match ? structuredClone(match) : undefined;
|
|
9763
|
+
}
|
|
9764
|
+
function getEditorialSolutionPresetById(presetId) {
|
|
9765
|
+
const match = EDITORIAL_SOLUTION_PRESETS.find((preset) => preset.presetId === presetId);
|
|
9766
|
+
return match ? structuredClone(match) : undefined;
|
|
9767
|
+
}
|
|
9768
|
+
|
|
8449
9769
|
/** Utility: generate a random id using crypto.randomUUID or fallback. */
|
|
8450
9770
|
function generateId() {
|
|
8451
9771
|
const g = globalThis.crypto?.randomUUID?.();
|
|
@@ -8779,6 +10099,10 @@ function mapFieldDefinitionToMetadata(field) {
|
|
|
8779
10099
|
'selectAll',
|
|
8780
10100
|
'maxSelections',
|
|
8781
10101
|
'emptyOptionText',
|
|
10102
|
+
'selectionMode',
|
|
10103
|
+
'variant',
|
|
10104
|
+
'density',
|
|
10105
|
+
'layout',
|
|
8782
10106
|
];
|
|
8783
10107
|
for (const prop of simpleProps) {
|
|
8784
10108
|
const value = field[prop];
|
|
@@ -8858,8 +10182,10 @@ function mapFieldDefinitionToMetadata(field) {
|
|
|
8858
10182
|
metadata.options = mapped;
|
|
8859
10183
|
metadata.selectOptions = mapped;
|
|
8860
10184
|
}
|
|
8861
|
-
//
|
|
10185
|
+
// Legacy fallback: schema-derived checkbox without explicit selectionMode or options
|
|
10186
|
+
// still maps to toggle. New contract keeps checkbox when selectionMode is explicit.
|
|
8862
10187
|
if (metadata.controlType === FieldControlType.CHECKBOX &&
|
|
10188
|
+
metadata.selectionMode === undefined &&
|
|
8863
10189
|
!field.options?.length &&
|
|
8864
10190
|
!field.checkboxOptions?.length) {
|
|
8865
10191
|
metadata.controlType = FieldControlType.TOGGLE;
|
|
@@ -10028,6 +11354,36 @@ const FIELD_METADATA_CAPABILITIES = {
|
|
|
10028
11354
|
description: 'Descrição detalhada (usada em documentação ou helps extensos).',
|
|
10029
11355
|
intentExamples: ['descrição completa do campo', 'texto explicativo longo', 'documentação do input'],
|
|
10030
11356
|
},
|
|
11357
|
+
{
|
|
11358
|
+
path: 'selectionMode',
|
|
11359
|
+
category: 'behavior',
|
|
11360
|
+
valueKind: 'enum',
|
|
11361
|
+
allowedValues: ['boolean', 'single', 'multiple'],
|
|
11362
|
+
description: 'Semântica de seleção explícita para controles de escolha.',
|
|
11363
|
+
intentExamples: ['checkbox booleano', 'radio de escolha única', 'grupo múltiplo'],
|
|
11364
|
+
},
|
|
11365
|
+
{
|
|
11366
|
+
path: 'variant',
|
|
11367
|
+
category: 'appearance',
|
|
11368
|
+
valueKind: 'string',
|
|
11369
|
+
description: 'Variante visual/semântica do controle.',
|
|
11370
|
+
intentExamples: ['variante consent', 'modo compact', 'apresentação em tiles'],
|
|
11371
|
+
},
|
|
11372
|
+
{
|
|
11373
|
+
path: 'density',
|
|
11374
|
+
category: 'appearance',
|
|
11375
|
+
valueKind: 'enum',
|
|
11376
|
+
allowedValues: ['compact', 'comfortable', 'spacious'],
|
|
11377
|
+
description: 'Densidade visual do shell do controle.',
|
|
11378
|
+
intentExamples: ['deixar mais compacto', 'usar densidade confortável', 'mais espaçado'],
|
|
11379
|
+
},
|
|
11380
|
+
{
|
|
11381
|
+
path: 'links',
|
|
11382
|
+
category: 'identity',
|
|
11383
|
+
valueKind: 'array',
|
|
11384
|
+
description: 'Links ricos associados ao campo, úteis em consentimentos e conteúdo legal.',
|
|
11385
|
+
intentExamples: ['adicionar link da política', 'incluir termos de uso', 'anexar link institucional'],
|
|
11386
|
+
},
|
|
10031
11387
|
{
|
|
10032
11388
|
path: 'group',
|
|
10033
11389
|
category: 'identity',
|
|
@@ -11314,14 +12670,20 @@ class PraxisFooterLinksComponent {
|
|
|
11314
12670
|
secondaryText;
|
|
11315
12671
|
links = [];
|
|
11316
12672
|
layout = 'inline';
|
|
12673
|
+
appearance = 'divider';
|
|
11317
12674
|
get normalizedLinks() {
|
|
11318
12675
|
return (this.links || [])
|
|
11319
12676
|
.map((link) => normalizeEditorialLink(link))
|
|
11320
12677
|
.filter((link) => !!link);
|
|
11321
12678
|
}
|
|
11322
12679
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisFooterLinksComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
11323
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: PraxisFooterLinksComponent, isStandalone: true, selector: "praxis-footer-links", inputs: { instanceId: "instanceId", analyticsId: "analyticsId", ariaLabel: "ariaLabel", brandText: "brandText", secondaryText: "secondaryText", links: "links", layout: "layout" }, host: { attributes: { "role": "contentinfo" }, properties: { "attr.data-instance-id": "instanceId || null", "attr.data-analytics-id": "analyticsId || null", "attr.aria-label": "ariaLabel || null" }, classAttribute: "praxis-footer-links" }, ngImport: i0, template: `
|
|
11324
|
-
<footer
|
|
12680
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: PraxisFooterLinksComponent, isStandalone: true, selector: "praxis-footer-links", inputs: { instanceId: "instanceId", analyticsId: "analyticsId", ariaLabel: "ariaLabel", brandText: "brandText", secondaryText: "secondaryText", links: "links", layout: "layout", appearance: "appearance" }, host: { attributes: { "role": "contentinfo" }, properties: { "attr.data-instance-id": "instanceId || null", "attr.data-analytics-id": "analyticsId || null", "attr.aria-label": "ariaLabel || null" }, classAttribute: "praxis-footer-links" }, ngImport: i0, template: `
|
|
12681
|
+
<footer
|
|
12682
|
+
class="pfl-shell"
|
|
12683
|
+
[class.pfl-stacked]="layout === 'stacked'"
|
|
12684
|
+
[class.pfl-plain]="appearance === 'plain'"
|
|
12685
|
+
[class.pfl-surface]="appearance === 'surface'"
|
|
12686
|
+
>
|
|
11325
12687
|
<div class="pfl-brand" *ngIf="brandText || secondaryText">
|
|
11326
12688
|
<strong class="pfl-brand-text" *ngIf="brandText">{{ brandText }}</strong>
|
|
11327
12689
|
<span class="pfl-secondary-text" *ngIf="secondaryText">{{ secondaryText }}</span>
|
|
@@ -11339,7 +12701,7 @@ class PraxisFooterLinksComponent {
|
|
|
11339
12701
|
</a>
|
|
11340
12702
|
</nav>
|
|
11341
12703
|
</footer>
|
|
11342
|
-
`, isInline: true, styles: [":host{display:block}.pfl-shell{display:flex;align-items:center;justify-content:space-between;gap:16px 24px;padding:16px 4px 4px;border-top:1px solid
|
|
12704
|
+
`, isInline: true, styles: [":host{display:block;--pfl-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 78%, transparent);--pfl-brand-color: var(--md-sys-color-on-surface);--pfl-secondary-color: var(--md-sys-color-on-surface-variant);--pfl-link-color: var(--md-sys-color-primary);--pfl-surface-bg: color-mix(in srgb, var(--md-sys-color-surface-container-low) 92%, transparent)}:host-context(.mdc-theme-dark),:host-context(.theme-dark){--pfl-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 90%, transparent);--pfl-link-color: color-mix(in srgb, var(--md-sys-color-primary) 86%, white);--pfl-surface-bg: color-mix(in srgb, var(--md-sys-color-surface-container-low) 96%, transparent)}.pfl-shell{display:flex;align-items:center;justify-content:space-between;gap:16px 24px;padding:16px 4px 4px;border-top:1px solid var(--pfl-border)}.pfl-stacked{flex-direction:column;align-items:flex-start}.pfl-plain{padding-top:6px;border-top:0}.pfl-surface{padding:16px 18px;border-top:0;border-radius:18px;background:var(--pfl-surface-bg)}.pfl-brand{display:grid;gap:4px}.pfl-brand-text{color:var(--pfl-brand-color);font-size:.92rem;font-weight:700}.pfl-secondary-text{color:var(--pfl-secondary-color);font-size:.8rem;line-height:1.5}.pfl-nav{display:flex;flex-wrap:wrap;gap:10px 16px}.pfl-link{color:var(--pfl-link-color);font-size:.84rem;line-height:1.5;text-decoration:underline;text-underline-offset:2px}@media(max-width:720px){.pfl-shell{flex-direction:column;align-items:flex-start}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
11343
12705
|
}
|
|
11344
12706
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisFooterLinksComponent, decorators: [{
|
|
11345
12707
|
type: Component,
|
|
@@ -11350,7 +12712,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
11350
12712
|
'[attr.aria-label]': 'ariaLabel || null',
|
|
11351
12713
|
'role': 'contentinfo',
|
|
11352
12714
|
}, template: `
|
|
11353
|
-
<footer
|
|
12715
|
+
<footer
|
|
12716
|
+
class="pfl-shell"
|
|
12717
|
+
[class.pfl-stacked]="layout === 'stacked'"
|
|
12718
|
+
[class.pfl-plain]="appearance === 'plain'"
|
|
12719
|
+
[class.pfl-surface]="appearance === 'surface'"
|
|
12720
|
+
>
|
|
11354
12721
|
<div class="pfl-brand" *ngIf="brandText || secondaryText">
|
|
11355
12722
|
<strong class="pfl-brand-text" *ngIf="brandText">{{ brandText }}</strong>
|
|
11356
12723
|
<span class="pfl-secondary-text" *ngIf="secondaryText">{{ secondaryText }}</span>
|
|
@@ -11368,7 +12735,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
11368
12735
|
</a>
|
|
11369
12736
|
</nav>
|
|
11370
12737
|
</footer>
|
|
11371
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block}.pfl-shell{display:flex;align-items:center;justify-content:space-between;gap:16px 24px;padding:16px 4px 4px;border-top:1px solid
|
|
12738
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;--pfl-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 78%, transparent);--pfl-brand-color: var(--md-sys-color-on-surface);--pfl-secondary-color: var(--md-sys-color-on-surface-variant);--pfl-link-color: var(--md-sys-color-primary);--pfl-surface-bg: color-mix(in srgb, var(--md-sys-color-surface-container-low) 92%, transparent)}:host-context(.mdc-theme-dark),:host-context(.theme-dark){--pfl-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 90%, transparent);--pfl-link-color: color-mix(in srgb, var(--md-sys-color-primary) 86%, white);--pfl-surface-bg: color-mix(in srgb, var(--md-sys-color-surface-container-low) 96%, transparent)}.pfl-shell{display:flex;align-items:center;justify-content:space-between;gap:16px 24px;padding:16px 4px 4px;border-top:1px solid var(--pfl-border)}.pfl-stacked{flex-direction:column;align-items:flex-start}.pfl-plain{padding-top:6px;border-top:0}.pfl-surface{padding:16px 18px;border-top:0;border-radius:18px;background:var(--pfl-surface-bg)}.pfl-brand{display:grid;gap:4px}.pfl-brand-text{color:var(--pfl-brand-color);font-size:.92rem;font-weight:700}.pfl-secondary-text{color:var(--pfl-secondary-color);font-size:.8rem;line-height:1.5}.pfl-nav{display:flex;flex-wrap:wrap;gap:10px 16px}.pfl-link{color:var(--pfl-link-color);font-size:.84rem;line-height:1.5;text-decoration:underline;text-underline-offset:2px}@media(max-width:720px){.pfl-shell{flex-direction:column;align-items:flex-start}}\n"] }]
|
|
11372
12739
|
}], propDecorators: { instanceId: [{
|
|
11373
12740
|
type: Input
|
|
11374
12741
|
}], analyticsId: [{
|
|
@@ -11383,6 +12750,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
11383
12750
|
type: Input
|
|
11384
12751
|
}], layout: [{
|
|
11385
12752
|
type: Input
|
|
12753
|
+
}], appearance: [{
|
|
12754
|
+
type: Input
|
|
11386
12755
|
}] } });
|
|
11387
12756
|
|
|
11388
12757
|
const PRAXIS_FOOTER_LINKS_METADATA = {
|
|
@@ -11400,6 +12769,7 @@ const PRAXIS_FOOTER_LINKS_METADATA = {
|
|
|
11400
12769
|
{ name: 'secondaryText', type: 'string', label: 'Texto secundário', description: 'Texto secundário opcional do rodapé.' },
|
|
11401
12770
|
{ name: 'links', type: 'EditorialLinkDefinition[]', label: 'Links', description: 'Lista ordenada de links institucionais.' },
|
|
11402
12771
|
{ name: 'layout', type: "'inline' | 'stacked'", label: 'Layout', description: 'Layout inicial do rodapé institucional.', default: 'inline' },
|
|
12772
|
+
{ name: 'appearance', type: "'divider' | 'plain' | 'surface'", label: 'Aparência', description: 'Controla se o rodapé usa divisor simples, modo embutido ou superfície destacada.', default: 'divider' },
|
|
11403
12773
|
],
|
|
11404
12774
|
outputs: [],
|
|
11405
12775
|
tags: ['widget', 'editorial', 'footer', 'links', EDITORIAL_WIDGET_TAG],
|
|
@@ -11428,10 +12798,20 @@ class PraxisHeroBannerComponent {
|
|
|
11428
12798
|
badges = [];
|
|
11429
12799
|
metaItems = [];
|
|
11430
12800
|
variant = 'default';
|
|
12801
|
+
appearance = 'card';
|
|
12802
|
+
brandText;
|
|
12803
|
+
titleAccent;
|
|
11431
12804
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisHeroBannerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
11432
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: PraxisHeroBannerComponent, isStandalone: true, selector: "praxis-hero-banner", inputs: { instanceId: "instanceId", analyticsId: "analyticsId", ariaLabel: "ariaLabel", title: "title", subtitle: "subtitle", description: "description", imageUrl: "imageUrl", imageAlt: "imageAlt", badges: "badges", metaItems: "metaItems", variant: "variant" }, host: { properties: { "attr.data-instance-id": "instanceId || null", "attr.data-analytics-id": "analyticsId || null", "attr.aria-label": "ariaLabel || null", "attr.role": "ariaLabel ? \"region\" : null", "attr.data-variant": "variant" }, classAttribute: "praxis-hero-banner" }, ngImport: i0, template: `
|
|
11433
|
-
<section
|
|
12805
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: PraxisHeroBannerComponent, isStandalone: true, selector: "praxis-hero-banner", inputs: { instanceId: "instanceId", analyticsId: "analyticsId", ariaLabel: "ariaLabel", title: "title", subtitle: "subtitle", description: "description", imageUrl: "imageUrl", imageAlt: "imageAlt", badges: "badges", metaItems: "metaItems", variant: "variant", appearance: "appearance", brandText: "brandText", titleAccent: "titleAccent" }, host: { properties: { "attr.data-instance-id": "instanceId || null", "attr.data-analytics-id": "analyticsId || null", "attr.aria-label": "ariaLabel || null", "attr.role": "ariaLabel ? \"region\" : null", "attr.data-variant": "variant" }, classAttribute: "praxis-hero-banner" }, ngImport: i0, template: `
|
|
12806
|
+
<section
|
|
12807
|
+
class="phb-shell"
|
|
12808
|
+
[class.phb-event]="variant === 'event'"
|
|
12809
|
+
[class.phb-institutional]="variant === 'institutional'"
|
|
12810
|
+
[class.phb-flat]="appearance === 'flat'"
|
|
12811
|
+
>
|
|
11434
12812
|
<div class="phb-copy">
|
|
12813
|
+
<p class="phb-brand" *ngIf="brandText">{{ brandText }}</p>
|
|
12814
|
+
|
|
11435
12815
|
<div class="phb-badges" *ngIf="badges?.length">
|
|
11436
12816
|
<span
|
|
11437
12817
|
class="phb-badge"
|
|
@@ -11446,7 +12826,10 @@ class PraxisHeroBannerComponent {
|
|
|
11446
12826
|
|
|
11447
12827
|
<div class="phb-text">
|
|
11448
12828
|
<p class="phb-subtitle" *ngIf="subtitle">{{ subtitle }}</p>
|
|
11449
|
-
<h2 class="phb-title" *ngIf="title
|
|
12829
|
+
<h2 class="phb-title" *ngIf="title || titleAccent">
|
|
12830
|
+
<span *ngIf="title">{{ title }}</span>
|
|
12831
|
+
<span class="phb-title-accent" *ngIf="titleAccent">{{ titleAccent }}</span>
|
|
12832
|
+
</h2>
|
|
11450
12833
|
<p class="phb-description" *ngIf="description">{{ description }}</p>
|
|
11451
12834
|
</div>
|
|
11452
12835
|
|
|
@@ -11470,7 +12853,7 @@ class PraxisHeroBannerComponent {
|
|
|
11470
12853
|
</div>
|
|
11471
12854
|
</ng-template>
|
|
11472
12855
|
</section>
|
|
11473
|
-
`, isInline: true, styles: [":host{display:block}.phb-shell{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(240px,.95fr);gap:22px;align-items:stretch;padding:22px;border-radius:28px;overflow:hidden;background:radial-gradient(circle at top right,rgba(65,142,255,.18),transparent 38%),linear-gradient(135deg,#fbfcff,#eef4ff 54%,#f8f9fc);border:1px solid rgba(58,84,135,.14);box-shadow:0 24px 60px #10182814}.phb-event{background:radial-gradient(circle at top right,rgba(255,184,77,.26),transparent 34%),linear-gradient(135deg,#fffaf0,#fff1d6 45%,#fff9f2)}.phb-institutional{background:radial-gradient(circle at top right,rgba(17,94,89,.18),transparent 34%),linear-gradient(135deg,#f7fbfa,#e9f6f3 48%,#f8fcfb)}.phb-copy{display:grid;gap:18px;min-width:0}.phb-badges{display:flex;flex-wrap:wrap;gap:8px}.phb-badge{display:inline-flex;align-items:center;min-height:28px;padding:0 12px;border-radius:999px;background:#0e1f3514;color:#17314f;font-size:.76rem;font-weight:700;letter-spacing:.02em}.phb-badge-highlight{background:#1f63ff1f;color:#1843ad}.phb-badge-muted{background:#6373811f;color:#43515f}.phb-badge-warning{background:#c628281f;color:#a62828}.phb-text{display:grid;gap:8px}.phb-subtitle{margin:0;color:#31506f;font-size:.9rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em}.phb-title{margin:0;color:#10233a;font-size:clamp(1.6rem,2.2vw,2.5rem);line-height:1.08;letter-spacing:-.03em}.phb-description{margin:0;max-width:56ch;color:#39506a;font-size:.98rem;line-height:1.65}.phb-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin:0}.phb-meta-item{display:grid;gap:4px;padding:12px 14px;border-radius:16px;background:#ffffff9e;border:1px solid rgba(58,84,135,.12);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.phb-meta-item dt{margin:0;color:#5e7185;font-size:.73rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em}.phb-meta-item dd{margin:0;color:#17314f;font-size:.92rem;line-height:1.45}.phb-visual{position:relative;min-height:220px;border-radius:22px;overflow:hidden;background:linear-gradient(160deg,#0d1d3324,#3c76ff14)}.phb-image{display:block;width:100%;height:100%;object-fit:cover}.phb-visual-fallback{background:linear-gradient(180deg,#ffffff47,#ffffff14),linear-gradient(145deg,#21417c38,#71a1ff1f)}.phb-orb{position:absolute;border-radius:999px;filter:blur(2px)}.phb-orb-a{inset:24px auto auto 20px;width:86px;height:86px;background:#ffffff9e}.phb-orb-b{inset:auto 16px 18px auto;width:132px;height:132px;background:#346aff38}.phb-grid{position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.16) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.16) 1px,transparent 1px);background-size:24px 24px;opacity:.5}@media(max-width:900px){.phb-shell{grid-template-columns:1fr;padding:18px}.phb-visual{order:-1;min-height:180px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
12856
|
+
`, isInline: true, styles: [":host{display:block;--phb-shell-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 60%, transparent);--phb-shell-shadow: 0 24px 60px color-mix(in srgb, var(--md-sys-color-shadow, #000) 10%, transparent);--phb-shell-bg: radial-gradient(circle at top right, color-mix(in srgb, var(--md-sys-color-primary) 14%, transparent), transparent 38%), linear-gradient( 135deg, color-mix(in srgb, var(--md-sys-color-surface-container-lowest) 92%, var(--md-sys-color-primary-container) 8%) 0%, color-mix(in srgb, var(--md-sys-color-surface-container-low) 88%, var(--md-sys-color-primary-container) 12%) 54%, color-mix(in srgb, var(--md-sys-color-surface) 96%, var(--md-sys-color-surface-container) 4%) 100% );--phb-event-bg: radial-gradient(circle at top right, rgba(255, 184, 77, .24), transparent 34%), linear-gradient( 135deg, color-mix(in srgb, var(--md-sys-color-primary-container) 16%, var(--md-sys-color-surface-container-lowest) 84%) 0%, color-mix(in srgb, var(--md-sys-color-primary-container) 24%, var(--md-sys-color-surface-container-low) 76%) 45%, color-mix(in srgb, var(--md-sys-color-surface) 92%, var(--md-sys-color-primary-container) 8%) 100% );--phb-institutional-bg: radial-gradient(circle at top right, rgba(17, 94, 89, .2), transparent 34%), linear-gradient( 135deg, color-mix(in srgb, var(--md-sys-color-secondary-container) 18%, var(--md-sys-color-surface-container-lowest) 82%) 0%, color-mix(in srgb, var(--md-sys-color-secondary-container) 24%, var(--md-sys-color-surface-container-low) 76%) 48%, color-mix(in srgb, var(--md-sys-color-surface) 94%, var(--md-sys-color-secondary-container) 6%) 100% );--phb-brand-color: color-mix(in srgb, var(--md-sys-color-primary) 68%, var(--md-sys-color-on-surface) 32%);--phb-subtitle-color: color-mix(in srgb, var(--md-sys-color-primary) 52%, var(--md-sys-color-on-surface) 48%);--phb-title-color: var(--md-sys-color-on-surface);--phb-description-color: var(--md-sys-color-on-surface-variant);--phb-badge-bg: color-mix(in srgb, var(--md-sys-color-surface-container-high) 78%, transparent);--phb-badge-color: var(--md-sys-color-on-surface);--phb-badge-highlight-bg: color-mix(in srgb, var(--md-sys-color-primary-container) 78%, transparent);--phb-badge-highlight-color: var(--md-sys-color-on-primary-container);--phb-badge-muted-bg: color-mix(in srgb, var(--md-sys-color-surface-container-highest) 82%, transparent);--phb-badge-muted-color: var(--md-sys-color-on-surface-variant);--phb-badge-warning-bg: color-mix(in srgb, var(--md-sys-color-error-container) 74%, transparent);--phb-badge-warning-color: var(--md-sys-color-on-error-container);--phb-meta-bg: color-mix(in srgb, var(--md-sys-color-surface-container-lowest) 72%, transparent);--phb-meta-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 48%, transparent);--phb-meta-label-color: var(--md-sys-color-on-surface-variant);--phb-meta-value-color: var(--md-sys-color-on-surface);--phb-visual-bg: linear-gradient( 160deg, color-mix(in srgb, var(--md-sys-color-surface-container-high) 90%, var(--md-sys-color-primary) 10%), color-mix(in srgb, var(--md-sys-color-surface-container-low) 88%, var(--md-sys-color-primary-container) 12%) );--phb-visual-fallback: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-surface-bright, var(--md-sys-color-surface-container-high)) 24%, transparent), color-mix(in srgb, var(--md-sys-color-surface-container-lowest) 8%, transparent) ), linear-gradient( 145deg, color-mix(in srgb, var(--md-sys-color-primary) 18%, var(--md-sys-color-surface-container-high) 82%), color-mix(in srgb, var(--md-sys-color-primary-container) 18%, var(--md-sys-color-surface-container-low) 82%) );--phb-orb-a-bg: color-mix(in srgb, var(--md-sys-color-surface-bright, var(--md-sys-color-surface-container-high)) 68%, transparent);--phb-orb-b-bg: color-mix(in srgb, var(--md-sys-color-primary) 22%, transparent);--phb-grid-line: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent)}:host-context(.mdc-theme-dark),:host-context(.theme-dark){--phb-shell-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 84%, transparent);--phb-shell-shadow: 0 22px 54px rgba(0, 0, 0, .28);--phb-shell-bg: radial-gradient(circle at top right, color-mix(in srgb, var(--md-sys-color-primary) 16%, transparent), transparent 40%), linear-gradient( 135deg, color-mix(in srgb, var(--md-sys-color-surface-container-lowest) 90%, var(--md-sys-color-primary-container) 10%) 0%, color-mix(in srgb, var(--md-sys-color-surface-container-low) 84%, var(--md-sys-color-primary-container) 16%) 54%, color-mix(in srgb, var(--md-sys-color-surface) 92%, var(--md-sys-color-primary-container) 8%) 100% );--phb-event-bg: radial-gradient(circle at top right, rgba(255, 184, 77, .18), transparent 36%), linear-gradient( 135deg, color-mix(in srgb, var(--md-sys-color-primary-container) 16%, var(--md-sys-color-surface-container-lowest) 84%) 0%, color-mix(in srgb, var(--md-sys-color-primary-container) 22%, var(--md-sys-color-surface-container-low) 78%) 45%, color-mix(in srgb, var(--md-sys-color-surface-container) 90%, var(--md-sys-color-primary-container) 10%) 100% );--phb-institutional-bg: radial-gradient(circle at top right, rgba(17, 94, 89, .16), transparent 36%), linear-gradient( 135deg, color-mix(in srgb, var(--md-sys-color-secondary-container) 16%, var(--md-sys-color-surface-container-lowest) 84%) 0%, color-mix(in srgb, var(--md-sys-color-secondary-container) 20%, var(--md-sys-color-surface-container-low) 80%) 48%, color-mix(in srgb, var(--md-sys-color-surface-container) 92%, var(--md-sys-color-secondary-container) 8%) 100% );--phb-meta-bg: color-mix(in srgb, var(--md-sys-color-surface-container-lowest) 70%, transparent);--phb-meta-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 60%, transparent);--phb-visual-bg: linear-gradient( 160deg, color-mix(in srgb, var(--md-sys-color-surface-container-high) 88%, var(--md-sys-color-primary) 12%), color-mix(in srgb, var(--md-sys-color-surface-container) 82%, var(--md-sys-color-primary-container) 18%) );--phb-visual-fallback: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-surface-container-high) 22%, transparent), color-mix(in srgb, var(--md-sys-color-surface-container-lowest) 8%, transparent) ), linear-gradient( 145deg, color-mix(in srgb, var(--md-sys-color-primary) 22%, var(--md-sys-color-surface-container-high) 78%), color-mix(in srgb, var(--md-sys-color-primary-container) 24%, var(--md-sys-color-surface-container-low) 76%) );--phb-orb-a-bg: color-mix(in srgb, var(--md-sys-color-surface-container-highest) 34%, transparent);--phb-orb-b-bg: color-mix(in srgb, var(--md-sys-color-primary) 26%, transparent);--phb-grid-line: color-mix(in srgb, var(--md-sys-color-on-surface) 10%, transparent)}.phb-shell{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(240px,.95fr);gap:22px;align-items:stretch;padding:22px;border-radius:28px;overflow:hidden;background:var(--phb-shell-bg);border:1px solid var(--phb-shell-border);box-shadow:var(--phb-shell-shadow)}.phb-event{background:var(--phb-event-bg)}.phb-institutional{background:var(--phb-institutional-bg)}.phb-copy{display:grid;gap:18px;min-width:0}.phb-brand{margin:0;color:var(--phb-brand-color);font-size:.88rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.phb-badges{display:flex;flex-wrap:wrap;gap:8px}.phb-badge{display:inline-flex;align-items:center;min-height:28px;padding:0 12px;border-radius:999px;background:var(--phb-badge-bg);color:var(--phb-badge-color);font-size:.76rem;font-weight:700;letter-spacing:.02em}.phb-badge-highlight{background:var(--phb-badge-highlight-bg);color:var(--phb-badge-highlight-color)}.phb-badge-muted{background:var(--phb-badge-muted-bg);color:var(--phb-badge-muted-color)}.phb-badge-warning{background:var(--phb-badge-warning-bg);color:var(--phb-badge-warning-color)}.phb-text{display:grid;gap:8px}.phb-subtitle{margin:0;color:var(--phb-subtitle-color);font-size:.9rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em}.phb-title{margin:0;color:var(--phb-title-color);font-size:clamp(1.6rem,2.2vw,2.5rem);line-height:1.08;letter-spacing:-.03em}.phb-title-accent{display:inline;margin-left:.18em;background:linear-gradient(90deg,#4285f4,#6ea8ff 28%,#a142f4 62%,#ea4335);-webkit-background-clip:text;background-clip:text;color:transparent}.phb-description{margin:0;max-width:56ch;color:var(--phb-description-color);font-size:.98rem;line-height:1.65}.phb-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin:0}.phb-meta-item{display:grid;gap:4px;padding:12px 14px;border-radius:16px;background:var(--phb-meta-bg);border:1px solid var(--phb-meta-border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.phb-meta-item dt{margin:0;color:var(--phb-meta-label-color);font-size:.73rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em}.phb-meta-item dd{margin:0;color:var(--phb-meta-value-color);font-size:.92rem;line-height:1.45}.phb-visual{position:relative;min-height:220px;border-radius:22px;overflow:hidden;background:var(--phb-visual-bg)}.phb-image{display:block;width:100%;height:100%;object-fit:cover}.phb-visual-fallback{background:var(--phb-visual-fallback)}.phb-flat{padding:0 0 18px;border:0;border-radius:0;box-shadow:none;background:transparent;grid-template-columns:minmax(0,1.15fr) minmax(220px,.85fr);gap:18px}.phb-flat .phb-brand{color:var(--md-sys-color-primary)}.phb-flat .phb-badges{order:3}.phb-flat .phb-meta{grid-template-columns:1fr;gap:6px}.phb-flat .phb-meta-item{padding:0;border:0;border-radius:0;background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none}.phb-flat .phb-meta-item dt,.phb-flat .phb-meta-item dd{display:inline}.phb-flat .phb-meta-item dt{margin-right:6px}.phb-flat .phb-visual{min-height:190px;border-radius:26px}.phb-orb{position:absolute;border-radius:999px;filter:blur(2px)}.phb-orb-a{inset:24px auto auto 20px;width:86px;height:86px;background:var(--phb-orb-a-bg)}.phb-orb-b{inset:auto 16px 18px auto;width:132px;height:132px;background:var(--phb-orb-b-bg)}.phb-grid{position:absolute;inset:0;background-image:linear-gradient(var(--phb-grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--phb-grid-line) 1px,transparent 1px);background-size:24px 24px;opacity:.5}@media(max-width:900px){.phb-shell{grid-template-columns:1fr;padding:18px}.phb-visual{order:-1;min-height:180px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
11474
12857
|
}
|
|
11475
12858
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisHeroBannerComponent, decorators: [{
|
|
11476
12859
|
type: Component,
|
|
@@ -11482,8 +12865,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
11482
12865
|
'[attr.role]': 'ariaLabel ? "region" : null',
|
|
11483
12866
|
'[attr.data-variant]': 'variant',
|
|
11484
12867
|
}, template: `
|
|
11485
|
-
<section
|
|
12868
|
+
<section
|
|
12869
|
+
class="phb-shell"
|
|
12870
|
+
[class.phb-event]="variant === 'event'"
|
|
12871
|
+
[class.phb-institutional]="variant === 'institutional'"
|
|
12872
|
+
[class.phb-flat]="appearance === 'flat'"
|
|
12873
|
+
>
|
|
11486
12874
|
<div class="phb-copy">
|
|
12875
|
+
<p class="phb-brand" *ngIf="brandText">{{ brandText }}</p>
|
|
12876
|
+
|
|
11487
12877
|
<div class="phb-badges" *ngIf="badges?.length">
|
|
11488
12878
|
<span
|
|
11489
12879
|
class="phb-badge"
|
|
@@ -11498,7 +12888,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
11498
12888
|
|
|
11499
12889
|
<div class="phb-text">
|
|
11500
12890
|
<p class="phb-subtitle" *ngIf="subtitle">{{ subtitle }}</p>
|
|
11501
|
-
<h2 class="phb-title" *ngIf="title
|
|
12891
|
+
<h2 class="phb-title" *ngIf="title || titleAccent">
|
|
12892
|
+
<span *ngIf="title">{{ title }}</span>
|
|
12893
|
+
<span class="phb-title-accent" *ngIf="titleAccent">{{ titleAccent }}</span>
|
|
12894
|
+
</h2>
|
|
11502
12895
|
<p class="phb-description" *ngIf="description">{{ description }}</p>
|
|
11503
12896
|
</div>
|
|
11504
12897
|
|
|
@@ -11522,7 +12915,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
11522
12915
|
</div>
|
|
11523
12916
|
</ng-template>
|
|
11524
12917
|
</section>
|
|
11525
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block}.phb-shell{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(240px,.95fr);gap:22px;align-items:stretch;padding:22px;border-radius:28px;overflow:hidden;background:radial-gradient(circle at top right,rgba(65,142,255,.18),transparent 38%),linear-gradient(135deg,#fbfcff,#eef4ff 54%,#f8f9fc);border:1px solid rgba(58,84,135,.14);box-shadow:0 24px 60px #10182814}.phb-event{background:radial-gradient(circle at top right,rgba(255,184,77,.26),transparent 34%),linear-gradient(135deg,#fffaf0,#fff1d6 45%,#fff9f2)}.phb-institutional{background:radial-gradient(circle at top right,rgba(17,94,89,.18),transparent 34%),linear-gradient(135deg,#f7fbfa,#e9f6f3 48%,#f8fcfb)}.phb-copy{display:grid;gap:18px;min-width:0}.phb-badges{display:flex;flex-wrap:wrap;gap:8px}.phb-badge{display:inline-flex;align-items:center;min-height:28px;padding:0 12px;border-radius:999px;background:#0e1f3514;color:#17314f;font-size:.76rem;font-weight:700;letter-spacing:.02em}.phb-badge-highlight{background:#1f63ff1f;color:#1843ad}.phb-badge-muted{background:#6373811f;color:#43515f}.phb-badge-warning{background:#c628281f;color:#a62828}.phb-text{display:grid;gap:8px}.phb-subtitle{margin:0;color:#31506f;font-size:.9rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em}.phb-title{margin:0;color:#10233a;font-size:clamp(1.6rem,2.2vw,2.5rem);line-height:1.08;letter-spacing:-.03em}.phb-description{margin:0;max-width:56ch;color:#39506a;font-size:.98rem;line-height:1.65}.phb-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin:0}.phb-meta-item{display:grid;gap:4px;padding:12px 14px;border-radius:16px;background:#ffffff9e;border:1px solid rgba(58,84,135,.12);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.phb-meta-item dt{margin:0;color:#5e7185;font-size:.73rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em}.phb-meta-item dd{margin:0;color:#17314f;font-size:.92rem;line-height:1.45}.phb-visual{position:relative;min-height:220px;border-radius:22px;overflow:hidden;background:linear-gradient(160deg,#0d1d3324,#3c76ff14)}.phb-image{display:block;width:100%;height:100%;object-fit:cover}.phb-visual-fallback{background:linear-gradient(180deg,#ffffff47,#ffffff14),linear-gradient(145deg,#21417c38,#71a1ff1f)}.phb-orb{position:absolute;border-radius:999px;filter:blur(2px)}.phb-orb-a{inset:24px auto auto 20px;width:86px;height:86px;background:#ffffff9e}.phb-orb-b{inset:auto 16px 18px auto;width:132px;height:132px;background:#346aff38}.phb-grid{position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.16) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.16) 1px,transparent 1px);background-size:24px 24px;opacity:.5}@media(max-width:900px){.phb-shell{grid-template-columns:1fr;padding:18px}.phb-visual{order:-1;min-height:180px}}\n"] }]
|
|
12918
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;--phb-shell-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 60%, transparent);--phb-shell-shadow: 0 24px 60px color-mix(in srgb, var(--md-sys-color-shadow, #000) 10%, transparent);--phb-shell-bg: radial-gradient(circle at top right, color-mix(in srgb, var(--md-sys-color-primary) 14%, transparent), transparent 38%), linear-gradient( 135deg, color-mix(in srgb, var(--md-sys-color-surface-container-lowest) 92%, var(--md-sys-color-primary-container) 8%) 0%, color-mix(in srgb, var(--md-sys-color-surface-container-low) 88%, var(--md-sys-color-primary-container) 12%) 54%, color-mix(in srgb, var(--md-sys-color-surface) 96%, var(--md-sys-color-surface-container) 4%) 100% );--phb-event-bg: radial-gradient(circle at top right, rgba(255, 184, 77, .24), transparent 34%), linear-gradient( 135deg, color-mix(in srgb, var(--md-sys-color-primary-container) 16%, var(--md-sys-color-surface-container-lowest) 84%) 0%, color-mix(in srgb, var(--md-sys-color-primary-container) 24%, var(--md-sys-color-surface-container-low) 76%) 45%, color-mix(in srgb, var(--md-sys-color-surface) 92%, var(--md-sys-color-primary-container) 8%) 100% );--phb-institutional-bg: radial-gradient(circle at top right, rgba(17, 94, 89, .2), transparent 34%), linear-gradient( 135deg, color-mix(in srgb, var(--md-sys-color-secondary-container) 18%, var(--md-sys-color-surface-container-lowest) 82%) 0%, color-mix(in srgb, var(--md-sys-color-secondary-container) 24%, var(--md-sys-color-surface-container-low) 76%) 48%, color-mix(in srgb, var(--md-sys-color-surface) 94%, var(--md-sys-color-secondary-container) 6%) 100% );--phb-brand-color: color-mix(in srgb, var(--md-sys-color-primary) 68%, var(--md-sys-color-on-surface) 32%);--phb-subtitle-color: color-mix(in srgb, var(--md-sys-color-primary) 52%, var(--md-sys-color-on-surface) 48%);--phb-title-color: var(--md-sys-color-on-surface);--phb-description-color: var(--md-sys-color-on-surface-variant);--phb-badge-bg: color-mix(in srgb, var(--md-sys-color-surface-container-high) 78%, transparent);--phb-badge-color: var(--md-sys-color-on-surface);--phb-badge-highlight-bg: color-mix(in srgb, var(--md-sys-color-primary-container) 78%, transparent);--phb-badge-highlight-color: var(--md-sys-color-on-primary-container);--phb-badge-muted-bg: color-mix(in srgb, var(--md-sys-color-surface-container-highest) 82%, transparent);--phb-badge-muted-color: var(--md-sys-color-on-surface-variant);--phb-badge-warning-bg: color-mix(in srgb, var(--md-sys-color-error-container) 74%, transparent);--phb-badge-warning-color: var(--md-sys-color-on-error-container);--phb-meta-bg: color-mix(in srgb, var(--md-sys-color-surface-container-lowest) 72%, transparent);--phb-meta-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 48%, transparent);--phb-meta-label-color: var(--md-sys-color-on-surface-variant);--phb-meta-value-color: var(--md-sys-color-on-surface);--phb-visual-bg: linear-gradient( 160deg, color-mix(in srgb, var(--md-sys-color-surface-container-high) 90%, var(--md-sys-color-primary) 10%), color-mix(in srgb, var(--md-sys-color-surface-container-low) 88%, var(--md-sys-color-primary-container) 12%) );--phb-visual-fallback: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-surface-bright, var(--md-sys-color-surface-container-high)) 24%, transparent), color-mix(in srgb, var(--md-sys-color-surface-container-lowest) 8%, transparent) ), linear-gradient( 145deg, color-mix(in srgb, var(--md-sys-color-primary) 18%, var(--md-sys-color-surface-container-high) 82%), color-mix(in srgb, var(--md-sys-color-primary-container) 18%, var(--md-sys-color-surface-container-low) 82%) );--phb-orb-a-bg: color-mix(in srgb, var(--md-sys-color-surface-bright, var(--md-sys-color-surface-container-high)) 68%, transparent);--phb-orb-b-bg: color-mix(in srgb, var(--md-sys-color-primary) 22%, transparent);--phb-grid-line: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent)}:host-context(.mdc-theme-dark),:host-context(.theme-dark){--phb-shell-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 84%, transparent);--phb-shell-shadow: 0 22px 54px rgba(0, 0, 0, .28);--phb-shell-bg: radial-gradient(circle at top right, color-mix(in srgb, var(--md-sys-color-primary) 16%, transparent), transparent 40%), linear-gradient( 135deg, color-mix(in srgb, var(--md-sys-color-surface-container-lowest) 90%, var(--md-sys-color-primary-container) 10%) 0%, color-mix(in srgb, var(--md-sys-color-surface-container-low) 84%, var(--md-sys-color-primary-container) 16%) 54%, color-mix(in srgb, var(--md-sys-color-surface) 92%, var(--md-sys-color-primary-container) 8%) 100% );--phb-event-bg: radial-gradient(circle at top right, rgba(255, 184, 77, .18), transparent 36%), linear-gradient( 135deg, color-mix(in srgb, var(--md-sys-color-primary-container) 16%, var(--md-sys-color-surface-container-lowest) 84%) 0%, color-mix(in srgb, var(--md-sys-color-primary-container) 22%, var(--md-sys-color-surface-container-low) 78%) 45%, color-mix(in srgb, var(--md-sys-color-surface-container) 90%, var(--md-sys-color-primary-container) 10%) 100% );--phb-institutional-bg: radial-gradient(circle at top right, rgba(17, 94, 89, .16), transparent 36%), linear-gradient( 135deg, color-mix(in srgb, var(--md-sys-color-secondary-container) 16%, var(--md-sys-color-surface-container-lowest) 84%) 0%, color-mix(in srgb, var(--md-sys-color-secondary-container) 20%, var(--md-sys-color-surface-container-low) 80%) 48%, color-mix(in srgb, var(--md-sys-color-surface-container) 92%, var(--md-sys-color-secondary-container) 8%) 100% );--phb-meta-bg: color-mix(in srgb, var(--md-sys-color-surface-container-lowest) 70%, transparent);--phb-meta-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 60%, transparent);--phb-visual-bg: linear-gradient( 160deg, color-mix(in srgb, var(--md-sys-color-surface-container-high) 88%, var(--md-sys-color-primary) 12%), color-mix(in srgb, var(--md-sys-color-surface-container) 82%, var(--md-sys-color-primary-container) 18%) );--phb-visual-fallback: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-surface-container-high) 22%, transparent), color-mix(in srgb, var(--md-sys-color-surface-container-lowest) 8%, transparent) ), linear-gradient( 145deg, color-mix(in srgb, var(--md-sys-color-primary) 22%, var(--md-sys-color-surface-container-high) 78%), color-mix(in srgb, var(--md-sys-color-primary-container) 24%, var(--md-sys-color-surface-container-low) 76%) );--phb-orb-a-bg: color-mix(in srgb, var(--md-sys-color-surface-container-highest) 34%, transparent);--phb-orb-b-bg: color-mix(in srgb, var(--md-sys-color-primary) 26%, transparent);--phb-grid-line: color-mix(in srgb, var(--md-sys-color-on-surface) 10%, transparent)}.phb-shell{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(240px,.95fr);gap:22px;align-items:stretch;padding:22px;border-radius:28px;overflow:hidden;background:var(--phb-shell-bg);border:1px solid var(--phb-shell-border);box-shadow:var(--phb-shell-shadow)}.phb-event{background:var(--phb-event-bg)}.phb-institutional{background:var(--phb-institutional-bg)}.phb-copy{display:grid;gap:18px;min-width:0}.phb-brand{margin:0;color:var(--phb-brand-color);font-size:.88rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.phb-badges{display:flex;flex-wrap:wrap;gap:8px}.phb-badge{display:inline-flex;align-items:center;min-height:28px;padding:0 12px;border-radius:999px;background:var(--phb-badge-bg);color:var(--phb-badge-color);font-size:.76rem;font-weight:700;letter-spacing:.02em}.phb-badge-highlight{background:var(--phb-badge-highlight-bg);color:var(--phb-badge-highlight-color)}.phb-badge-muted{background:var(--phb-badge-muted-bg);color:var(--phb-badge-muted-color)}.phb-badge-warning{background:var(--phb-badge-warning-bg);color:var(--phb-badge-warning-color)}.phb-text{display:grid;gap:8px}.phb-subtitle{margin:0;color:var(--phb-subtitle-color);font-size:.9rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em}.phb-title{margin:0;color:var(--phb-title-color);font-size:clamp(1.6rem,2.2vw,2.5rem);line-height:1.08;letter-spacing:-.03em}.phb-title-accent{display:inline;margin-left:.18em;background:linear-gradient(90deg,#4285f4,#6ea8ff 28%,#a142f4 62%,#ea4335);-webkit-background-clip:text;background-clip:text;color:transparent}.phb-description{margin:0;max-width:56ch;color:var(--phb-description-color);font-size:.98rem;line-height:1.65}.phb-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin:0}.phb-meta-item{display:grid;gap:4px;padding:12px 14px;border-radius:16px;background:var(--phb-meta-bg);border:1px solid var(--phb-meta-border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.phb-meta-item dt{margin:0;color:var(--phb-meta-label-color);font-size:.73rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em}.phb-meta-item dd{margin:0;color:var(--phb-meta-value-color);font-size:.92rem;line-height:1.45}.phb-visual{position:relative;min-height:220px;border-radius:22px;overflow:hidden;background:var(--phb-visual-bg)}.phb-image{display:block;width:100%;height:100%;object-fit:cover}.phb-visual-fallback{background:var(--phb-visual-fallback)}.phb-flat{padding:0 0 18px;border:0;border-radius:0;box-shadow:none;background:transparent;grid-template-columns:minmax(0,1.15fr) minmax(220px,.85fr);gap:18px}.phb-flat .phb-brand{color:var(--md-sys-color-primary)}.phb-flat .phb-badges{order:3}.phb-flat .phb-meta{grid-template-columns:1fr;gap:6px}.phb-flat .phb-meta-item{padding:0;border:0;border-radius:0;background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none}.phb-flat .phb-meta-item dt,.phb-flat .phb-meta-item dd{display:inline}.phb-flat .phb-meta-item dt{margin-right:6px}.phb-flat .phb-visual{min-height:190px;border-radius:26px}.phb-orb{position:absolute;border-radius:999px;filter:blur(2px)}.phb-orb-a{inset:24px auto auto 20px;width:86px;height:86px;background:var(--phb-orb-a-bg)}.phb-orb-b{inset:auto 16px 18px auto;width:132px;height:132px;background:var(--phb-orb-b-bg)}.phb-grid{position:absolute;inset:0;background-image:linear-gradient(var(--phb-grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--phb-grid-line) 1px,transparent 1px);background-size:24px 24px;opacity:.5}@media(max-width:900px){.phb-shell{grid-template-columns:1fr;padding:18px}.phb-visual{order:-1;min-height:180px}}\n"] }]
|
|
11526
12919
|
}], propDecorators: { instanceId: [{
|
|
11527
12920
|
type: Input
|
|
11528
12921
|
}], analyticsId: [{
|
|
@@ -11545,6 +12938,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
11545
12938
|
type: Input
|
|
11546
12939
|
}], variant: [{
|
|
11547
12940
|
type: Input
|
|
12941
|
+
}], appearance: [{
|
|
12942
|
+
type: Input
|
|
12943
|
+
}], brandText: [{
|
|
12944
|
+
type: Input
|
|
12945
|
+
}], titleAccent: [{
|
|
12946
|
+
type: Input
|
|
11548
12947
|
}] } });
|
|
11549
12948
|
|
|
11550
12949
|
const PRAXIS_HERO_BANNER_METADATA = {
|
|
@@ -11558,7 +12957,9 @@ const PRAXIS_HERO_BANNER_METADATA = {
|
|
|
11558
12957
|
{ name: 'instanceId', type: 'string', label: 'Instance ID', description: 'Identificador estável da instância editorial.' },
|
|
11559
12958
|
{ name: 'analyticsId', type: 'string', label: 'Analytics ID', description: 'Identificador opcional de telemetria agregada.' },
|
|
11560
12959
|
{ name: 'ariaLabel', type: 'string', label: 'Aria Label', description: 'Rótulo acessível opcional do hero.' },
|
|
12960
|
+
{ name: 'brandText', type: 'string', label: 'Brand', description: 'Marca ou rótulo institucional exibido antes do conteúdo principal.' },
|
|
11561
12961
|
{ name: 'title', type: 'string', label: 'Título', description: 'Título principal do hero.' },
|
|
12962
|
+
{ name: 'titleAccent', type: 'string', label: 'Destaque do título', description: 'Trecho opcional do título com tratamento visual destacado.' },
|
|
11562
12963
|
{ name: 'subtitle', type: 'string', label: 'Subtítulo', description: 'Kicker ou subtítulo acima do título.' },
|
|
11563
12964
|
{ name: 'description', type: 'string', label: 'Descrição', description: 'Descrição principal do destaque.' },
|
|
11564
12965
|
{ name: 'imageUrl', type: 'string', label: 'Imagem', description: 'URL opcional da imagem de apoio.' },
|
|
@@ -11566,6 +12967,7 @@ const PRAXIS_HERO_BANNER_METADATA = {
|
|
|
11566
12967
|
{ name: 'badges', type: 'Array<{ label: string; tone?: "default" | "highlight" | "muted" | "warning" }>', label: 'Badges', description: 'Badges curatoriais no topo do hero.' },
|
|
11567
12968
|
{ name: 'metaItems', type: 'Array<{ label: string; value: string }>', label: 'Metadados', description: 'Metadados como data, local ou tenant.' },
|
|
11568
12969
|
{ name: 'variant', type: "'default' | 'event' | 'institutional'", label: 'Variante', description: 'Variante visual inicial do hero banner.', default: 'default' },
|
|
12970
|
+
{ name: 'appearance', type: "'card' | 'flat'", label: 'Aparência', description: 'Controla se o hero usa cartão completo ou composição mais plana e leve.', default: 'card' },
|
|
11569
12971
|
],
|
|
11570
12972
|
outputs: [],
|
|
11571
12973
|
tags: ['widget', 'editorial', 'hero', 'banner', EDITORIAL_WIDGET_TAG],
|
|
@@ -11678,6 +13080,7 @@ class PraxisRichTextBlockComponent {
|
|
|
11678
13080
|
subtitle;
|
|
11679
13081
|
icon;
|
|
11680
13082
|
variant = 'default';
|
|
13083
|
+
appearance = 'card';
|
|
11681
13084
|
contentFormat = 'plain';
|
|
11682
13085
|
content = '';
|
|
11683
13086
|
get renderedContent() {
|
|
@@ -11688,8 +13091,13 @@ class PraxisRichTextBlockComponent {
|
|
|
11688
13091
|
return this.sanitizer.sanitize(SecurityContext.HTML, html) ?? '';
|
|
11689
13092
|
}
|
|
11690
13093
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisRichTextBlockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
11691
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: PraxisRichTextBlockComponent, isStandalone: true, selector: "praxis-rich-text-block", inputs: { instanceId: "instanceId", analyticsId: "analyticsId", ariaLabel: "ariaLabel", title: "title", subtitle: "subtitle", icon: "icon", variant: "variant", contentFormat: "contentFormat", content: "content" }, host: { properties: { "attr.data-instance-id": "instanceId || null", "attr.data-analytics-id": "analyticsId || null", "attr.data-variant": "variant", "attr.aria-label": "ariaLabel || null", "attr.role": "ariaLabel ? \"region\" : null" }, classAttribute: "praxis-rich-text-block" }, ngImport: i0, template: `
|
|
11692
|
-
<section
|
|
13094
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: PraxisRichTextBlockComponent, isStandalone: true, selector: "praxis-rich-text-block", inputs: { instanceId: "instanceId", analyticsId: "analyticsId", ariaLabel: "ariaLabel", title: "title", subtitle: "subtitle", icon: "icon", variant: "variant", appearance: "appearance", contentFormat: "contentFormat", content: "content" }, host: { properties: { "attr.data-instance-id": "instanceId || null", "attr.data-analytics-id": "analyticsId || null", "attr.data-variant": "variant", "attr.aria-label": "ariaLabel || null", "attr.role": "ariaLabel ? \"region\" : null" }, classAttribute: "praxis-rich-text-block" }, ngImport: i0, template: `
|
|
13095
|
+
<section
|
|
13096
|
+
class="prt-block"
|
|
13097
|
+
[class.prt-block-emphasis]="variant === 'emphasis'"
|
|
13098
|
+
[class.prt-block-subtle]="variant === 'subtle'"
|
|
13099
|
+
[class.prt-block-plain]="appearance === 'plain'"
|
|
13100
|
+
>
|
|
11693
13101
|
<header class="prt-head" *ngIf="icon || title || subtitle">
|
|
11694
13102
|
<mat-icon class="prt-icon" *ngIf="icon" aria-hidden="true" [praxisIcon]="icon"></mat-icon>
|
|
11695
13103
|
<div class="prt-title-wrap">
|
|
@@ -11700,7 +13108,7 @@ class PraxisRichTextBlockComponent {
|
|
|
11700
13108
|
|
|
11701
13109
|
<div class="prt-content" [innerHTML]="renderedContent"></div>
|
|
11702
13110
|
</section>
|
|
11703
|
-
`, isInline: true, styles: [":host{display:block
|
|
13111
|
+
`, isInline: true, styles: [":host{display:block;--prt-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 72%, transparent);--prt-bg: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-surface) 96%, var(--md-sys-color-surface-container-lowest) 4%), color-mix(in srgb, var(--md-sys-color-surface-container-low) 92%, var(--md-sys-color-surface) 8%) );--prt-emphasis-border: color-mix(in srgb, var(--md-sys-color-primary) 32%, var(--md-sys-color-outline-variant));--prt-emphasis-bg: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-primary-container) 36%, var(--md-sys-color-surface) 64%), color-mix(in srgb, var(--md-sys-color-surface) 96%, var(--md-sys-color-primary-container) 4%) );--prt-subtle-bg: color-mix(in srgb, var(--md-sys-color-surface-container-low) 82%, transparent);--prt-icon-bg: color-mix(in srgb, var(--md-sys-color-primary-container) 64%, transparent);--prt-code-bg: color-mix(in srgb, var(--md-sys-color-surface-container-highest) 82%, transparent)}:host-context(.mdc-theme-dark),:host-context(.theme-dark){--prt-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 84%, transparent);--prt-bg: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-surface-container-low) 92%, var(--md-sys-color-surface) 8%), color-mix(in srgb, var(--md-sys-color-surface-container) 90%, var(--md-sys-color-surface-container-high) 10%) );--prt-emphasis-border: color-mix(in srgb, var(--md-sys-color-primary) 42%, var(--md-sys-color-outline-variant));--prt-emphasis-bg: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-primary-container) 28%, var(--md-sys-color-surface-container-low) 72%), color-mix(in srgb, var(--md-sys-color-surface-container) 92%, var(--md-sys-color-primary-container) 8%) );--prt-subtle-bg: color-mix(in srgb, var(--md-sys-color-surface-container-low) 88%, transparent);--prt-icon-bg: color-mix(in srgb, var(--md-sys-color-primary-container) 42%, transparent);--prt-code-bg: color-mix(in srgb, var(--md-sys-color-surface-container-high) 88%, transparent)}.prt-block{display:grid;gap:12px;padding:16px 18px;border-radius:16px;border:1px solid var(--prt-border);background:var(--prt-bg);color:var(--md-sys-color-on-surface)}.prt-block-emphasis{border-color:var(--prt-emphasis-border);background:var(--prt-emphasis-bg)}.prt-block-subtle{background:var(--prt-subtle-bg);border-style:dashed}.prt-block-plain{padding:0;border:0;border-radius:0;background:transparent}.prt-head{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:start}.prt-icon{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:12px;background:var(--prt-icon-bg);color:var(--md-sys-color-primary);font-size:20px;line-height:1}.prt-title-wrap{display:grid;gap:4px}.prt-title{margin:0;font-size:1rem;font-weight:700;line-height:1.3}.prt-subtitle{margin:0;color:var(--md-sys-color-on-surface-variant);font-size:.86rem;line-height:1.4}.prt-content{color:var(--md-sys-color-on-surface);font-size:.94rem;line-height:1.6}.prt-content :where(p,ul){margin:0}.prt-content :where(p+p,p+ul,ul+p,ul+ul){margin-top:10px}.prt-content ul{padding-left:18px}.prt-content a{color:var(--md-sys-color-primary);text-decoration:underline;text-underline-offset:2px}.prt-content strong{font-weight:700}.prt-content em{font-style:italic}.prt-content code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.88em;padding:.1em .35em;border-radius:6px;background:var(--prt-code-bg)}.prt-block-plain .prt-icon{width:32px;height:32px;border-radius:10px;background:color-mix(in srgb,var(--md-sys-color-surface-container-high) 80%,transparent)}.prt-block-plain .prt-content{font-size:.92rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
11704
13112
|
}
|
|
11705
13113
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisRichTextBlockComponent, decorators: [{
|
|
11706
13114
|
type: Component,
|
|
@@ -11712,7 +13120,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
11712
13120
|
'[attr.aria-label]': 'ariaLabel || null',
|
|
11713
13121
|
'[attr.role]': 'ariaLabel ? "region" : null',
|
|
11714
13122
|
}, template: `
|
|
11715
|
-
<section
|
|
13123
|
+
<section
|
|
13124
|
+
class="prt-block"
|
|
13125
|
+
[class.prt-block-emphasis]="variant === 'emphasis'"
|
|
13126
|
+
[class.prt-block-subtle]="variant === 'subtle'"
|
|
13127
|
+
[class.prt-block-plain]="appearance === 'plain'"
|
|
13128
|
+
>
|
|
11716
13129
|
<header class="prt-head" *ngIf="icon || title || subtitle">
|
|
11717
13130
|
<mat-icon class="prt-icon" *ngIf="icon" aria-hidden="true" [praxisIcon]="icon"></mat-icon>
|
|
11718
13131
|
<div class="prt-title-wrap">
|
|
@@ -11723,7 +13136,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
11723
13136
|
|
|
11724
13137
|
<div class="prt-content" [innerHTML]="renderedContent"></div>
|
|
11725
13138
|
</section>
|
|
11726
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block
|
|
13139
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;--prt-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 72%, transparent);--prt-bg: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-surface) 96%, var(--md-sys-color-surface-container-lowest) 4%), color-mix(in srgb, var(--md-sys-color-surface-container-low) 92%, var(--md-sys-color-surface) 8%) );--prt-emphasis-border: color-mix(in srgb, var(--md-sys-color-primary) 32%, var(--md-sys-color-outline-variant));--prt-emphasis-bg: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-primary-container) 36%, var(--md-sys-color-surface) 64%), color-mix(in srgb, var(--md-sys-color-surface) 96%, var(--md-sys-color-primary-container) 4%) );--prt-subtle-bg: color-mix(in srgb, var(--md-sys-color-surface-container-low) 82%, transparent);--prt-icon-bg: color-mix(in srgb, var(--md-sys-color-primary-container) 64%, transparent);--prt-code-bg: color-mix(in srgb, var(--md-sys-color-surface-container-highest) 82%, transparent)}:host-context(.mdc-theme-dark),:host-context(.theme-dark){--prt-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 84%, transparent);--prt-bg: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-surface-container-low) 92%, var(--md-sys-color-surface) 8%), color-mix(in srgb, var(--md-sys-color-surface-container) 90%, var(--md-sys-color-surface-container-high) 10%) );--prt-emphasis-border: color-mix(in srgb, var(--md-sys-color-primary) 42%, var(--md-sys-color-outline-variant));--prt-emphasis-bg: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-primary-container) 28%, var(--md-sys-color-surface-container-low) 72%), color-mix(in srgb, var(--md-sys-color-surface-container) 92%, var(--md-sys-color-primary-container) 8%) );--prt-subtle-bg: color-mix(in srgb, var(--md-sys-color-surface-container-low) 88%, transparent);--prt-icon-bg: color-mix(in srgb, var(--md-sys-color-primary-container) 42%, transparent);--prt-code-bg: color-mix(in srgb, var(--md-sys-color-surface-container-high) 88%, transparent)}.prt-block{display:grid;gap:12px;padding:16px 18px;border-radius:16px;border:1px solid var(--prt-border);background:var(--prt-bg);color:var(--md-sys-color-on-surface)}.prt-block-emphasis{border-color:var(--prt-emphasis-border);background:var(--prt-emphasis-bg)}.prt-block-subtle{background:var(--prt-subtle-bg);border-style:dashed}.prt-block-plain{padding:0;border:0;border-radius:0;background:transparent}.prt-head{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:start}.prt-icon{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:12px;background:var(--prt-icon-bg);color:var(--md-sys-color-primary);font-size:20px;line-height:1}.prt-title-wrap{display:grid;gap:4px}.prt-title{margin:0;font-size:1rem;font-weight:700;line-height:1.3}.prt-subtitle{margin:0;color:var(--md-sys-color-on-surface-variant);font-size:.86rem;line-height:1.4}.prt-content{color:var(--md-sys-color-on-surface);font-size:.94rem;line-height:1.6}.prt-content :where(p,ul){margin:0}.prt-content :where(p+p,p+ul,ul+p,ul+ul){margin-top:10px}.prt-content ul{padding-left:18px}.prt-content a{color:var(--md-sys-color-primary);text-decoration:underline;text-underline-offset:2px}.prt-content strong{font-weight:700}.prt-content em{font-style:italic}.prt-content code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.88em;padding:.1em .35em;border-radius:6px;background:var(--prt-code-bg)}.prt-block-plain .prt-icon{width:32px;height:32px;border-radius:10px;background:color-mix(in srgb,var(--md-sys-color-surface-container-high) 80%,transparent)}.prt-block-plain .prt-content{font-size:.92rem}\n"] }]
|
|
11727
13140
|
}], propDecorators: { instanceId: [{
|
|
11728
13141
|
type: Input
|
|
11729
13142
|
}], analyticsId: [{
|
|
@@ -11738,6 +13151,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
11738
13151
|
type: Input
|
|
11739
13152
|
}], variant: [{
|
|
11740
13153
|
type: Input
|
|
13154
|
+
}], appearance: [{
|
|
13155
|
+
type: Input
|
|
11741
13156
|
}], contentFormat: [{
|
|
11742
13157
|
type: Input
|
|
11743
13158
|
}], content: [{
|
|
@@ -11839,6 +13254,7 @@ class PraxisLegalNoticeComponent {
|
|
|
11839
13254
|
contentFormat = 'plain';
|
|
11840
13255
|
content = '';
|
|
11841
13256
|
severity = 'info';
|
|
13257
|
+
appearance = 'card';
|
|
11842
13258
|
links = [];
|
|
11843
13259
|
get normalizedLinks() {
|
|
11844
13260
|
return (this.links || [])
|
|
@@ -11866,8 +13282,13 @@ class PraxisLegalNoticeComponent {
|
|
|
11866
13282
|
}
|
|
11867
13283
|
}
|
|
11868
13284
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisLegalNoticeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
11869
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: PraxisLegalNoticeComponent, isStandalone: true, selector: "praxis-legal-notice", inputs: { instanceId: "instanceId", analyticsId: "analyticsId", ariaLabel: "ariaLabel", title: "title", subtitle: "subtitle", contentFormat: "contentFormat", content: "content", severity: "severity", links: "links" }, host: { attributes: { "role": "note" }, properties: { "attr.data-instance-id": "instanceId || null", "attr.data-analytics-id": "analyticsId || null", "attr.aria-label": "ariaLabel || title || \"Aviso legal\"" }, classAttribute: "praxis-legal-notice" }, ngImport: i0, template: `
|
|
11870
|
-
<section
|
|
13285
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: PraxisLegalNoticeComponent, isStandalone: true, selector: "praxis-legal-notice", inputs: { instanceId: "instanceId", analyticsId: "analyticsId", ariaLabel: "ariaLabel", title: "title", subtitle: "subtitle", contentFormat: "contentFormat", content: "content", severity: "severity", appearance: "appearance", links: "links" }, host: { attributes: { "role": "note" }, properties: { "attr.data-instance-id": "instanceId || null", "attr.data-analytics-id": "analyticsId || null", "attr.aria-label": "ariaLabel || title || \"Aviso legal\"" }, classAttribute: "praxis-legal-notice" }, ngImport: i0, template: `
|
|
13286
|
+
<section
|
|
13287
|
+
class="pln-shell"
|
|
13288
|
+
[class.pln-warning]="severity === 'warning'"
|
|
13289
|
+
[class.pln-muted]="severity === 'muted'"
|
|
13290
|
+
[class.pln-plain]="appearance === 'plain'"
|
|
13291
|
+
>
|
|
11871
13292
|
<praxis-rich-text-block
|
|
11872
13293
|
[instanceId]="instanceId"
|
|
11873
13294
|
[analyticsId]="analyticsId"
|
|
@@ -11876,6 +13297,7 @@ class PraxisLegalNoticeComponent {
|
|
|
11876
13297
|
[subtitle]="subtitle"
|
|
11877
13298
|
[icon]="resolvedIcon"
|
|
11878
13299
|
[variant]="resolvedVariant"
|
|
13300
|
+
[appearance]="appearance === 'plain' ? 'plain' : 'card'"
|
|
11879
13301
|
[contentFormat]="contentFormat"
|
|
11880
13302
|
[content]="content"
|
|
11881
13303
|
></praxis-rich-text-block>
|
|
@@ -11892,7 +13314,7 @@ class PraxisLegalNoticeComponent {
|
|
|
11892
13314
|
</a>
|
|
11893
13315
|
</nav>
|
|
11894
13316
|
</section>
|
|
11895
|
-
`, isInline: true, styles: [":host{display:block}.pln-shell{display:grid;gap:10px}.pln-shell .praxis-rich-text-block .prt-block,.pln-shell .prt-block{border-left:4px solid color-mix(in srgb,var(--md-sys-color-primary) 56%,transparent)}.pln-warning .praxis-rich-text-block .prt-block,.pln-warning .prt-block{border-left-color:var(--md-sys-color-error)}.pln-muted .praxis-rich-text-block .prt-block,.pln-muted .prt-block{
|
|
13317
|
+
`, isInline: true, styles: [":host{display:block}.pln-shell{display:grid;gap:10px}.pln-shell .praxis-rich-text-block .prt-block,.pln-shell .prt-block{border-left:4px solid color-mix(in srgb,var(--md-sys-color-primary) 56%,transparent)}.pln-warning .praxis-rich-text-block .prt-block,.pln-warning .prt-block{border-left-color:var(--md-sys-color-error)}.pln-muted .praxis-rich-text-block .prt-block,.pln-muted .prt-block{border-left-color:color-mix(in srgb,var(--md-sys-color-outline) 58%,transparent)}.pln-plain .praxis-rich-text-block .prt-block,.pln-plain .prt-block{border-left:0}.pln-links{display:flex;flex-wrap:wrap;gap:8px 12px;padding-left:18px}.pln-plain .pln-links{padding-left:0;padding-top:2px}.pln-link{color:var(--md-sys-color-primary);font-size:.84rem;line-height:1.4;text-decoration:underline;text-underline-offset:2px}:host-context(.mdc-theme-dark) .pln-link,:host-context(.theme-dark) .pln-link{color:color-mix(in srgb,var(--md-sys-color-primary) 86%,white)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: PraxisRichTextBlockComponent, selector: "praxis-rich-text-block", inputs: ["instanceId", "analyticsId", "ariaLabel", "title", "subtitle", "icon", "variant", "appearance", "contentFormat", "content"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
11896
13318
|
}
|
|
11897
13319
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisLegalNoticeComponent, decorators: [{
|
|
11898
13320
|
type: Component,
|
|
@@ -11903,7 +13325,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
11903
13325
|
'[attr.aria-label]': 'ariaLabel || title || "Aviso legal"',
|
|
11904
13326
|
'role': 'note',
|
|
11905
13327
|
}, template: `
|
|
11906
|
-
<section
|
|
13328
|
+
<section
|
|
13329
|
+
class="pln-shell"
|
|
13330
|
+
[class.pln-warning]="severity === 'warning'"
|
|
13331
|
+
[class.pln-muted]="severity === 'muted'"
|
|
13332
|
+
[class.pln-plain]="appearance === 'plain'"
|
|
13333
|
+
>
|
|
11907
13334
|
<praxis-rich-text-block
|
|
11908
13335
|
[instanceId]="instanceId"
|
|
11909
13336
|
[analyticsId]="analyticsId"
|
|
@@ -11912,6 +13339,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
11912
13339
|
[subtitle]="subtitle"
|
|
11913
13340
|
[icon]="resolvedIcon"
|
|
11914
13341
|
[variant]="resolvedVariant"
|
|
13342
|
+
[appearance]="appearance === 'plain' ? 'plain' : 'card'"
|
|
11915
13343
|
[contentFormat]="contentFormat"
|
|
11916
13344
|
[content]="content"
|
|
11917
13345
|
></praxis-rich-text-block>
|
|
@@ -11928,7 +13356,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
11928
13356
|
</a>
|
|
11929
13357
|
</nav>
|
|
11930
13358
|
</section>
|
|
11931
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block}.pln-shell{display:grid;gap:10px}.pln-shell .praxis-rich-text-block .prt-block,.pln-shell .prt-block{border-left:4px solid color-mix(in srgb,var(--md-sys-color-primary) 56%,transparent)}.pln-warning .praxis-rich-text-block .prt-block,.pln-warning .prt-block{border-left-color:var(--md-sys-color-error)}.pln-muted .praxis-rich-text-block .prt-block,.pln-muted .prt-block{
|
|
13359
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block}.pln-shell{display:grid;gap:10px}.pln-shell .praxis-rich-text-block .prt-block,.pln-shell .prt-block{border-left:4px solid color-mix(in srgb,var(--md-sys-color-primary) 56%,transparent)}.pln-warning .praxis-rich-text-block .prt-block,.pln-warning .prt-block{border-left-color:var(--md-sys-color-error)}.pln-muted .praxis-rich-text-block .prt-block,.pln-muted .prt-block{border-left-color:color-mix(in srgb,var(--md-sys-color-outline) 58%,transparent)}.pln-plain .praxis-rich-text-block .prt-block,.pln-plain .prt-block{border-left:0}.pln-links{display:flex;flex-wrap:wrap;gap:8px 12px;padding-left:18px}.pln-plain .pln-links{padding-left:0;padding-top:2px}.pln-link{color:var(--md-sys-color-primary);font-size:.84rem;line-height:1.4;text-decoration:underline;text-underline-offset:2px}:host-context(.mdc-theme-dark) .pln-link,:host-context(.theme-dark) .pln-link{color:color-mix(in srgb,var(--md-sys-color-primary) 86%,white)}\n"] }]
|
|
11932
13360
|
}], propDecorators: { instanceId: [{
|
|
11933
13361
|
type: Input
|
|
11934
13362
|
}], analyticsId: [{
|
|
@@ -11945,6 +13373,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
11945
13373
|
type: Input
|
|
11946
13374
|
}], severity: [{
|
|
11947
13375
|
type: Input
|
|
13376
|
+
}], appearance: [{
|
|
13377
|
+
type: Input
|
|
11948
13378
|
}], links: [{
|
|
11949
13379
|
type: Input
|
|
11950
13380
|
}] } });
|
|
@@ -11965,6 +13395,7 @@ const PRAXIS_LEGAL_NOTICE_METADATA = {
|
|
|
11965
13395
|
{ name: 'contentFormat', type: "'plain' | 'markdown'", label: 'Formato do conteúdo', description: 'Formato editorial permitido para o corpo do aviso.', default: 'plain' },
|
|
11966
13396
|
{ name: 'content', type: 'string', label: 'Conteúdo', description: 'Corpo principal do aviso legal.' },
|
|
11967
13397
|
{ name: 'severity', type: "'info' | 'warning' | 'muted'", label: 'Severidade', description: 'Tom visual/semântico do aviso legal.', default: 'info' },
|
|
13398
|
+
{ name: 'appearance', type: "'card' | 'plain'", label: 'Aparência', description: 'Permite renderizar o aviso como card completo ou bloco embutido sem moldura.', default: 'card' },
|
|
11968
13399
|
{ name: 'links', type: 'EditorialLinkDefinition[]', label: 'Links', description: 'Links complementares do aviso, sempre normalizados pela policy editorial.' },
|
|
11969
13400
|
],
|
|
11970
13401
|
outputs: [],
|
|
@@ -11997,6 +13428,7 @@ const PRAXIS_RICH_TEXT_BLOCK_METADATA = {
|
|
|
11997
13428
|
{ name: 'subtitle', type: 'string', label: 'Subtítulo', description: 'Texto curto complementar abaixo do título.' },
|
|
11998
13429
|
{ name: 'icon', type: 'string', label: 'Ícone', description: 'Ícone Material Symbols exibido no cabeçalho do bloco.' },
|
|
11999
13430
|
{ name: 'variant', type: "'default' | 'emphasis' | 'subtle'", label: 'Variante', description: 'Variante visual do bloco editorial.', default: 'default' },
|
|
13431
|
+
{ name: 'appearance', type: "'card' | 'plain'", label: 'Aparência', description: 'Permite usar o bloco como cartão completo ou conteúdo embutido sem moldura.', default: 'card' },
|
|
12000
13432
|
{ name: 'contentFormat', type: "'plain' | 'markdown'", label: 'Formato do conteúdo', description: 'Formato editorial permitido para renderização do conteúdo.', default: 'plain' },
|
|
12001
13433
|
{ name: 'content', type: 'string', label: 'Conteúdo', description: 'Corpo principal do bloco em plain text ou markdown seguro.' },
|
|
12002
13434
|
],
|
|
@@ -12021,6 +13453,7 @@ class PraxisUserContextSummaryComponent {
|
|
|
12021
13453
|
ariaLabel;
|
|
12022
13454
|
title;
|
|
12023
13455
|
subtitle;
|
|
13456
|
+
appearance = 'card';
|
|
12024
13457
|
source = 'context';
|
|
12025
13458
|
context = null;
|
|
12026
13459
|
fields = [];
|
|
@@ -12049,8 +13482,8 @@ class PraxisUserContextSummaryComponent {
|
|
|
12049
13482
|
return field.fallback || '-';
|
|
12050
13483
|
}
|
|
12051
13484
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisUserContextSummaryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12052
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: PraxisUserContextSummaryComponent, isStandalone: true, selector: "praxis-user-context-summary", inputs: { instanceId: "instanceId", analyticsId: "analyticsId", ariaLabel: "ariaLabel", title: "title", subtitle: "subtitle", source: "source", context: "context", fields: "fields", actionId: "actionId", actionLabel: "actionLabel" }, outputs: { actionTriggered: "actionTriggered" }, host: { properties: { "attr.data-instance-id": "instanceId || null", "attr.data-analytics-id": "analyticsId || null", "attr.aria-label": "ariaLabel || null", "attr.role": "ariaLabel ? \"region\" : null" }, classAttribute: "praxis-user-context-summary" }, ngImport: i0, template: `
|
|
12053
|
-
<section class="pux-card">
|
|
13485
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: PraxisUserContextSummaryComponent, isStandalone: true, selector: "praxis-user-context-summary", inputs: { instanceId: "instanceId", analyticsId: "analyticsId", ariaLabel: "ariaLabel", title: "title", subtitle: "subtitle", appearance: "appearance", source: "source", context: "context", fields: "fields", actionId: "actionId", actionLabel: "actionLabel" }, outputs: { actionTriggered: "actionTriggered" }, host: { properties: { "attr.data-instance-id": "instanceId || null", "attr.data-analytics-id": "analyticsId || null", "attr.aria-label": "ariaLabel || null", "attr.role": "ariaLabel ? \"region\" : null" }, classAttribute: "praxis-user-context-summary" }, ngImport: i0, template: `
|
|
13486
|
+
<section class="pux-card" [class.pux-plain]="appearance === 'plain'">
|
|
12054
13487
|
<header class="pux-head" *ngIf="title || subtitle">
|
|
12055
13488
|
<h3 class="pux-title" *ngIf="title">{{ title }}</h3>
|
|
12056
13489
|
<p class="pux-subtitle" *ngIf="subtitle">{{ subtitle }}</p>
|
|
@@ -12071,7 +13504,7 @@ class PraxisUserContextSummaryComponent {
|
|
|
12071
13504
|
<button type="button" class="pux-action" (click)="emitAction()">{{ actionLabel }}</button>
|
|
12072
13505
|
</div>
|
|
12073
13506
|
</section>
|
|
12074
|
-
`, isInline: true, styles: [":host{display:block}.pux-card{display:grid;gap:14px;padding:16px 18px;border-radius:18px;border:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 78%,transparent);background:linear-gradient(180deg,#fffffffa,#f4f8fcfa)}.pux-head{display:grid;gap:4px}.pux-title{margin:0;color:var(--md-sys-color-on-surface);font-size:.98rem;font-weight:700}.pux-subtitle{margin:0;color:var(--md-sys-color-on-surface-variant);font-size:.84rem;line-height:1.5}.pux-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin:0}.pux-item{display:grid;gap:4px;padding:12px 14px;border-radius:14px;background:#ffffffb8;border:1px solid rgba(66,93,135,.1)}.pux-item dt{margin:0;color:#5d7186;font-size:.73rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em}.pux-item dd{margin:0;color:#17314f;font-size:.92rem;line-height:1.45}.pux-actions{display:flex;justify-content:flex-start}.pux-action{min-height:36px;padding:0 14px;border:1px solid rgba(33,88,201,.18);border-radius:999px;background:#2060d214;color:#1e55b8;font:inherit;font-size:.84rem;font-weight:700;cursor:pointer}.pux-empty{margin:0;color:var(--md-sys-color-on-surface-variant);font-size:.84rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
13507
|
+
`, isInline: true, styles: [":host{display:block}.pux-card{display:grid;gap:14px;padding:16px 18px;border-radius:18px;border:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 78%,transparent);background:linear-gradient(180deg,#fffffffa,#f4f8fcfa)}.pux-head{display:grid;gap:4px}.pux-title{margin:0;color:var(--md-sys-color-on-surface);font-size:.98rem;font-weight:700}.pux-subtitle{margin:0;color:var(--md-sys-color-on-surface-variant);font-size:.84rem;line-height:1.5}.pux-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin:0}.pux-item{display:grid;gap:4px;padding:12px 14px;border-radius:14px;background:#ffffffb8;border:1px solid rgba(66,93,135,.1)}.pux-item dt{margin:0;color:#5d7186;font-size:.73rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em}.pux-item dd{margin:0;color:#17314f;font-size:.92rem;line-height:1.45}.pux-actions{display:flex;justify-content:flex-start}.pux-action{min-height:36px;padding:0 14px;border:1px solid rgba(33,88,201,.18);border-radius:999px;background:#2060d214;color:#1e55b8;font:inherit;font-size:.84rem;font-weight:700;cursor:pointer}.pux-empty{margin:0;color:var(--md-sys-color-on-surface-variant);font-size:.84rem}.pux-plain{gap:10px;padding:8px 0 4px;border:0;border-radius:0;background:transparent}.pux-plain .pux-grid{grid-template-columns:1fr;gap:6px}.pux-plain .pux-item{padding:12px 14px;border-radius:14px;background:#ffffff8f;border:1px solid rgba(66,93,135,.08)}.pux-plain .pux-actions{margin-top:2px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
12075
13508
|
}
|
|
12076
13509
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisUserContextSummaryComponent, decorators: [{
|
|
12077
13510
|
type: Component,
|
|
@@ -12082,7 +13515,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
12082
13515
|
'[attr.aria-label]': 'ariaLabel || null',
|
|
12083
13516
|
'[attr.role]': 'ariaLabel ? "region" : null',
|
|
12084
13517
|
}, template: `
|
|
12085
|
-
<section class="pux-card">
|
|
13518
|
+
<section class="pux-card" [class.pux-plain]="appearance === 'plain'">
|
|
12086
13519
|
<header class="pux-head" *ngIf="title || subtitle">
|
|
12087
13520
|
<h3 class="pux-title" *ngIf="title">{{ title }}</h3>
|
|
12088
13521
|
<p class="pux-subtitle" *ngIf="subtitle">{{ subtitle }}</p>
|
|
@@ -12103,7 +13536,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
12103
13536
|
<button type="button" class="pux-action" (click)="emitAction()">{{ actionLabel }}</button>
|
|
12104
13537
|
</div>
|
|
12105
13538
|
</section>
|
|
12106
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block}.pux-card{display:grid;gap:14px;padding:16px 18px;border-radius:18px;border:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 78%,transparent);background:linear-gradient(180deg,#fffffffa,#f4f8fcfa)}.pux-head{display:grid;gap:4px}.pux-title{margin:0;color:var(--md-sys-color-on-surface);font-size:.98rem;font-weight:700}.pux-subtitle{margin:0;color:var(--md-sys-color-on-surface-variant);font-size:.84rem;line-height:1.5}.pux-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin:0}.pux-item{display:grid;gap:4px;padding:12px 14px;border-radius:14px;background:#ffffffb8;border:1px solid rgba(66,93,135,.1)}.pux-item dt{margin:0;color:#5d7186;font-size:.73rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em}.pux-item dd{margin:0;color:#17314f;font-size:.92rem;line-height:1.45}.pux-actions{display:flex;justify-content:flex-start}.pux-action{min-height:36px;padding:0 14px;border:1px solid rgba(33,88,201,.18);border-radius:999px;background:#2060d214;color:#1e55b8;font:inherit;font-size:.84rem;font-weight:700;cursor:pointer}.pux-empty{margin:0;color:var(--md-sys-color-on-surface-variant);font-size:.84rem}\n"] }]
|
|
13539
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block}.pux-card{display:grid;gap:14px;padding:16px 18px;border-radius:18px;border:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 78%,transparent);background:linear-gradient(180deg,#fffffffa,#f4f8fcfa)}.pux-head{display:grid;gap:4px}.pux-title{margin:0;color:var(--md-sys-color-on-surface);font-size:.98rem;font-weight:700}.pux-subtitle{margin:0;color:var(--md-sys-color-on-surface-variant);font-size:.84rem;line-height:1.5}.pux-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin:0}.pux-item{display:grid;gap:4px;padding:12px 14px;border-radius:14px;background:#ffffffb8;border:1px solid rgba(66,93,135,.1)}.pux-item dt{margin:0;color:#5d7186;font-size:.73rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em}.pux-item dd{margin:0;color:#17314f;font-size:.92rem;line-height:1.45}.pux-actions{display:flex;justify-content:flex-start}.pux-action{min-height:36px;padding:0 14px;border:1px solid rgba(33,88,201,.18);border-radius:999px;background:#2060d214;color:#1e55b8;font:inherit;font-size:.84rem;font-weight:700;cursor:pointer}.pux-empty{margin:0;color:var(--md-sys-color-on-surface-variant);font-size:.84rem}.pux-plain{gap:10px;padding:8px 0 4px;border:0;border-radius:0;background:transparent}.pux-plain .pux-grid{grid-template-columns:1fr;gap:6px}.pux-plain .pux-item{padding:12px 14px;border-radius:14px;background:#ffffff8f;border:1px solid rgba(66,93,135,.08)}.pux-plain .pux-actions{margin-top:2px}\n"] }]
|
|
12107
13540
|
}], propDecorators: { instanceId: [{
|
|
12108
13541
|
type: Input
|
|
12109
13542
|
}], analyticsId: [{
|
|
@@ -12114,6 +13547,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
12114
13547
|
type: Input
|
|
12115
13548
|
}], subtitle: [{
|
|
12116
13549
|
type: Input
|
|
13550
|
+
}], appearance: [{
|
|
13551
|
+
type: Input
|
|
12117
13552
|
}], source: [{
|
|
12118
13553
|
type: Input
|
|
12119
13554
|
}], context: [{
|
|
@@ -12151,6 +13586,7 @@ const PRAXIS_USER_CONTEXT_SUMMARY_METADATA = {
|
|
|
12151
13586
|
{ name: 'ariaLabel', type: 'string', label: 'Aria Label', description: 'Rótulo acessível opcional do resumo contextual.' },
|
|
12152
13587
|
{ name: 'title', type: 'string', label: 'Título', description: 'Título principal do resumo.' },
|
|
12153
13588
|
{ name: 'subtitle', type: 'string', label: 'Subtítulo', description: 'Texto auxiliar explicando o contexto exibido.' },
|
|
13589
|
+
{ name: 'appearance', type: "'card' | 'plain'", label: 'Aparência', description: 'Define se o resumo contextual renderiza como card completo ou bloco mais leve.', default: 'card' },
|
|
12154
13590
|
{ name: 'source', type: "'context' | 'static'", label: 'Fonte', description: 'Origem dos dados do resumo contextual.', default: 'context' },
|
|
12155
13591
|
{ name: 'context', type: 'Record<string, unknown> | null', label: 'Contexto', description: 'Objeto tipado usado para resolver valuePath dos campos.' },
|
|
12156
13592
|
{ name: 'fields', type: 'Array<{ label: string; valuePath?: string; value?: string; fallback?: string }>', label: 'Campos', description: 'Campos exibidos no resumo, com resolução por valuePath ou valor estático.' },
|
|
@@ -15542,5 +16978,5 @@ function provideHookWhitelist(allowed) {
|
|
|
15542
16978
|
* Generated bundle index. Do not edit.
|
|
15543
16979
|
*/
|
|
15544
16980
|
|
|
15545
|
-
export { API_CONFIG_STORAGE_OPTIONS, API_URL, ASYNC_CONFIG_STORAGE, AllowedFileTypes, ApiConfigStorage, ApiEndpoint, BUILTIN_SHELL_PRESETS, CONFIG_STORAGE, CONNECTION_STORAGE, ComponentKeyService, ComponentMetadataRegistry, ConnectionManagerService, ConsoleLoggerSink, DEFAULT_FIELD_SELECTOR_CONTROL_TYPE_MAP, DEFAULT_TABLE_CONFIG, DYNAMIC_PAGE_AI_CAPABILITIES, DYNAMIC_PAGE_COMPONENT_CONTEXT_PACK, DYNAMIC_PAGE_CONFIG_EDITOR, DYNAMIC_PAGE_SHELL_EDITOR, DefaultLoadingRenderer, DeferredAsyncConfigStorage, DynamicFormService, DynamicGridPageComponent, DynamicWidgetLoaderDirective, DynamicWidgetPageComponent, EDITORIAL_ALLOWED_CONTENT_FORMATS, EDITORIAL_EXTERNAL_LINK_REL, EDITORIAL_HTML_ENABLED, EDITORIAL_MARKDOWN_IMAGES_ENABLED, EDITORIAL_WIDGET_CONVENTION_INPUTS, EDITORIAL_WIDGET_TAG, EmptyStateCardComponent, ErrorMessageService, FIELD_METADATA_CAPABILITIES, FIELD_SELECTOR_REGISTRY_BASE, FIELD_SELECTOR_REGISTRY_DISABLE_DEFAULTS, FIELD_SELECTOR_REGISTRY_OVERRIDES, FORM_HOOKS, FORM_HOOKS_PRESETS, FORM_HOOKS_WHITELIST, FORM_HOOK_RESOLVERS, FieldControlType, FieldDataType, FieldSelectorRegistry, FormHooksRegistry, GLOBAL_ACTION_CATALOG$1 as GLOBAL_ACTION_CATALOG, GLOBAL_ACTION_HANDLERS, GLOBAL_ACTION_CATALOG as GLOBAL_ACTION_SPEC_CATALOG, GLOBAL_ACTION_UI_SCHEMAS, GLOBAL_ANALYTICS_SERVICE, GLOBAL_API_CLIENT, GLOBAL_CONFIG, GLOBAL_DIALOG_SERVICE, GLOBAL_ROUTE_GUARD_RESOLVER, GLOBAL_TOAST_SERVICE, GenericCrudService, GlobalActionService, GlobalConfigService, INLINE_FILTER_ALIAS_TOKENS, INLINE_FILTER_ALIAS_TOKEN_TO_BASE_CONTROL_TYPE, INLINE_FILTER_ALIAS_TOKEN_TO_CONTROL_TYPE, INLINE_FILTER_CONTROL_TYPES, INLINE_FILTER_CONTROL_TYPE_SET, INLINE_FILTER_CONTROL_TYPE_VALUES, IconPickerService, IconPosition, IconSize, LOGGER_LEVEL_BY_ENV, LOGGER_LEVEL_PRIORITY, LoadingOrchestrator, LocalConnectionStorage, LocalStorageAsyncAdapter, LocalStorageCacheAdapter, LocalStorageConfigService, LoggerService, LoggerThrottleTracker, LoggerWarnOnceTracker, MemoryCacheAdapter, NumericFormat, OVERLAY_DECIDER_DEBUG, OVERLAY_DECISION_MATRIX, ObservabilityDashboardService, OverlayDeciderService, PRAXIS_CORPORATE_SENSITIVE_KEYS, PRAXIS_DEFAULT_OBSERVABILITY_ALERT_RULES, PRAXIS_DYNAMIC_PAGE_COMPONENT_METADATA, PRAXIS_FOOTER_LINKS_METADATA, PRAXIS_GLOBAL_ACTION_CATALOG, PRAXIS_GLOBAL_CONFIG_BOOTSTRAP_OPTIONS, PRAXIS_GLOBAL_CONFIG_BOOTSTRAP_READY, PRAXIS_GLOBAL_CONFIG_TENANT_RESOLVER, PRAXIS_HERO_BANNER_METADATA, PRAXIS_LEGAL_NOTICE_METADATA, PRAXIS_LOADING_CTX, PRAXIS_LOADING_RENDERER, PRAXIS_LOGGER_CONFIG, PRAXIS_LOGGER_SINKS, PRAXIS_OBSERVABILITY_DASHBOARD_OPTIONS, PRAXIS_RICH_TEXT_BLOCK_METADATA, PRAXIS_TELEMETRY_TRANSPORT, PRAXIS_USER_CONTEXT_SUMMARY_METADATA, PraxisCore, PraxisFooterLinksComponent, PraxisGlobalErrorHandler, PraxisHeroBannerComponent, PraxisIconDirective, PraxisIconPickerComponent, PraxisLegalNoticeComponent, PraxisLoadingInterceptor, PraxisRichTextBlockComponent, PraxisUserContextSummaryComponent, RULE_PROPERTY_SCHEMA, RemoteConfigStorage, ResourceQuickConnectComponent, SCHEMA_VIEWER_CONTEXT, SETTINGS_PANEL_BRIDGE, SETTINGS_PANEL_DATA, STEPPER_CONFIG_EDITOR, SchemaMetadataClient, SchemaNormalizerService, SchemaViewerComponent, TABLE_CONFIG_EDITOR, TableConfigService, TelemetryLoggerSink, TelemetryService, ValidationPattern, WidgetShellComponent, applyLocalCustomizations$2 as applyLocalCustomizations, applyLocalCustomizations$1 as applyLocalFormCustomizations, buildAngularValidators, buildApiUrl, buildBaseColumnFromDef, buildBaseFormField, buildHeaders, buildPageKey, buildSchemaId, buildValidatorsFromValidatorOptions, cancelIfCpfInvalidHook, clampRange, cloneTableConfig, cnpjAlphaValidator, collapseWhitespace, composeHeadersWithVersion, conditionalAsyncValidator, convertFormLayoutToConfig, createCorporateLoggerConfig, createCorporateObservabilityOptions, createCpfCnpjValidator, createDefaultFormConfig, createDefaultTableConfig, createEmptyFormConfig, createPersistedPage, customAsyncValidatorFn, customValidatorFn, debounceAsyncValidator, deepMerge, ensureIds, ensureNoConflictsHookFactory, ensurePageIds, extractNormalizedError, fetchWithETag, fileTypeValidator, fillUndefined, generateId, getDefaultFormHints, getEssentialConfig, getFieldMetadataCapabilities, getGlobalActionCatalog, getGlobalActionUiSchema, getReferencedFieldMetadata, getTextTransformer, isAllowedEditorialContentFormat, isAllowedEditorialHref, isCssTextTransform, isEditorialComponentMeta, isInlineFilterControlType, isRangeValidForFilter, isTableConfigV2, isValidFormConfig, isValidTableConfig, legacyCnpjValidator, legacyCpfValidator, logOnErrorHook, mapFieldDefinitionToMetadata, mapFieldDefinitionsToMetadata, matchFieldValidator, maxFileSizeValidator, mergeFieldMetadata, mergeTableConfigs, migrateFormLayoutRule, minWordsValidator, normalizeControlTypeKey, normalizeControlTypeToken, normalizeEditorialLink, normalizeEnd, normalizeFieldConstraints, normalizeFormConfig, normalizeFormMetadata, normalizePath, normalizeStart, normalizeUnknownError, notifySuccessHook, parseJsonResponseOrEmpty, praxisLoadingInterceptorFn, prefillFromContextHook, provideDefaultFormHooks, provideFieldSelectorRegistryBase, provideFieldSelectorRegistryOverride, provideFieldSelectorRegistryRuntime, provideFormHookPresets, provideFormHooks, provideGlobalActionCatalog, provideGlobalActionHandler, provideGlobalConfig, provideGlobalConfigReady, provideGlobalConfigSeed, provideGlobalConfigTenant, provideHookResolvers, provideHookWhitelist, provideOverlayDecisionMatrix, providePraxisAnalyticsGlobalActions, providePraxisDynamicPageMetadata, providePraxisFooterLinksMetadata, providePraxisGlobalActionCatalog, providePraxisGlobalActions, providePraxisGlobalConfigBootstrap, providePraxisHeroBannerMetadata, providePraxisHttpLoading, providePraxisLegalNoticeMetadata, providePraxisLoadingDefaults, providePraxisLogging, providePraxisRichTextBlockMetadata, providePraxisToastGlobalActions, providePraxisUserContextSummaryMetadata, provideRemoteGlobalConfig, reconcileFilterConfig, reconcileFormConfig, reconcileTableConfig, removeDiacritics, reportTelemetryHookFactory, requiredCheckedValidator, resolveBuiltinPresets, resolveControlTypeAlias, resolveHidden, resolveInlineFilterAliasToBaseControlType, resolveInlineFilterControlTypeAlias, resolveLoggerConfig, resolveObservabilityOptions, resolveOffset, resolveOrder, resolveSpan, slugify, stripMasksHook, syncWithServerMetadata, toCamel, toCapitalize, toKebab, toPascal, toSentenceCase, toSnake, toTitleCase, trim, uniqueAsyncValidator, urlValidator, withMessage, withPraxisHttpLoading };
|
|
16981
|
+
export { API_CONFIG_STORAGE_OPTIONS, API_URL, ASYNC_CONFIG_STORAGE, AllowedFileTypes, ApiConfigStorage, ApiEndpoint, BUILTIN_SHELL_PRESETS, CONFIG_STORAGE, CONNECTION_STORAGE, ComponentKeyService, ComponentMetadataRegistry, ConnectionManagerService, ConsoleLoggerSink, DEFAULT_FIELD_SELECTOR_CONTROL_TYPE_MAP, DEFAULT_TABLE_CONFIG, DYNAMIC_PAGE_AI_CAPABILITIES, DYNAMIC_PAGE_COMPONENT_CONTEXT_PACK, DYNAMIC_PAGE_CONFIG_EDITOR, DYNAMIC_PAGE_SHELL_EDITOR, DefaultLoadingRenderer, DeferredAsyncConfigStorage, DynamicFormService, DynamicGridPageComponent, DynamicWidgetLoaderDirective, DynamicWidgetPageComponent, EDITORIAL_ALLOWED_CONTENT_FORMATS, EDITORIAL_COMPLIANCE_PRESETS, EDITORIAL_EXTERNAL_LINK_REL, EDITORIAL_FORM_TEMPLATE_CATALOG, EDITORIAL_HTML_ENABLED, EDITORIAL_MARKDOWN_IMAGES_ENABLED, EDITORIAL_SOLUTION_CATALOG, EDITORIAL_SOLUTION_PRESETS, EDITORIAL_THEME_PRESETS, EDITORIAL_WIDGET_CONVENTION_INPUTS, EDITORIAL_WIDGET_TAG, EMPLOYEE_ONBOARDING_EDITORIAL_SOLUTION, EMPLOYEE_ONBOARDING_EDITORIAL_TEMPLATE, EVENT_REGISTRATION_EDITORIAL_SOLUTION, EVENT_REGISTRATION_EDITORIAL_TEMPLATE, EmptyStateCardComponent, ErrorMessageService, FIELD_METADATA_CAPABILITIES, FIELD_SELECTOR_REGISTRY_BASE, FIELD_SELECTOR_REGISTRY_DISABLE_DEFAULTS, FIELD_SELECTOR_REGISTRY_OVERRIDES, FORM_HOOKS, FORM_HOOKS_PRESETS, FORM_HOOKS_WHITELIST, FORM_HOOK_RESOLVERS, FieldControlType, FieldDataType, FieldSelectorRegistry, FormHooksRegistry, GLOBAL_ACTION_CATALOG$1 as GLOBAL_ACTION_CATALOG, GLOBAL_ACTION_HANDLERS, GLOBAL_ACTION_CATALOG as GLOBAL_ACTION_SPEC_CATALOG, GLOBAL_ACTION_UI_SCHEMAS, GLOBAL_ANALYTICS_SERVICE, GLOBAL_API_CLIENT, GLOBAL_CONFIG, GLOBAL_DIALOG_SERVICE, GLOBAL_ROUTE_GUARD_RESOLVER, GLOBAL_TOAST_SERVICE, GenericCrudService, GlobalActionService, GlobalConfigService, INLINE_FILTER_ALIAS_TOKENS, INLINE_FILTER_ALIAS_TOKEN_TO_BASE_CONTROL_TYPE, INLINE_FILTER_ALIAS_TOKEN_TO_CONTROL_TYPE, INLINE_FILTER_CONTROL_TYPES, INLINE_FILTER_CONTROL_TYPE_SET, INLINE_FILTER_CONTROL_TYPE_VALUES, IconPickerService, IconPosition, IconSize, LOGGER_LEVEL_BY_ENV, LOGGER_LEVEL_PRIORITY, LoadingOrchestrator, LocalConnectionStorage, LocalStorageAsyncAdapter, LocalStorageCacheAdapter, LocalStorageConfigService, LoggerService, LoggerThrottleTracker, LoggerWarnOnceTracker, MemoryCacheAdapter, NumericFormat, OVERLAY_DECIDER_DEBUG, OVERLAY_DECISION_MATRIX, ObservabilityDashboardService, OverlayDeciderService, PRAXIS_CORPORATE_SENSITIVE_KEYS, PRAXIS_DEFAULT_OBSERVABILITY_ALERT_RULES, PRAXIS_DYNAMIC_PAGE_COMPONENT_METADATA, PRAXIS_FOOTER_LINKS_METADATA, PRAXIS_GLOBAL_ACTION_CATALOG, PRAXIS_GLOBAL_CONFIG_BOOTSTRAP_OPTIONS, PRAXIS_GLOBAL_CONFIG_BOOTSTRAP_READY, PRAXIS_GLOBAL_CONFIG_TENANT_RESOLVER, PRAXIS_HERO_BANNER_METADATA, PRAXIS_I18N_CONFIG, PRAXIS_I18N_TRANSLATOR, PRAXIS_LEGAL_NOTICE_METADATA, PRAXIS_LOADING_CTX, PRAXIS_LOADING_RENDERER, PRAXIS_LOGGER_CONFIG, PRAXIS_LOGGER_SINKS, PRAXIS_OBSERVABILITY_DASHBOARD_OPTIONS, PRAXIS_RICH_TEXT_BLOCK_METADATA, PRAXIS_TELEMETRY_TRANSPORT, PRAXIS_USER_CONTEXT_SUMMARY_METADATA, PRIVACY_CONSENT_EDITORIAL_SOLUTION, PRIVACY_CONSENT_EDITORIAL_TEMPLATE, PraxisCore, PraxisFooterLinksComponent, PraxisGlobalErrorHandler, PraxisHeroBannerComponent, PraxisI18nService, PraxisIconDirective, PraxisIconPickerComponent, PraxisLegalNoticeComponent, PraxisLoadingInterceptor, PraxisRichTextBlockComponent, PraxisUserContextSummaryComponent, RULE_PROPERTY_SCHEMA, RemoteConfigStorage, ResourceQuickConnectComponent, SCHEMA_VIEWER_CONTEXT, SETTINGS_PANEL_BRIDGE, SETTINGS_PANEL_DATA, STEPPER_CONFIG_EDITOR, SchemaMetadataClient, SchemaNormalizerService, SchemaViewerComponent, TABLE_CONFIG_EDITOR, TableConfigService, TelemetryLoggerSink, TelemetryService, ValidationPattern, WidgetShellComponent, applyLocalCustomizations$2 as applyLocalCustomizations, applyLocalCustomizations$1 as applyLocalFormCustomizations, buildAngularValidators, buildApiUrl, buildBaseColumnFromDef, buildBaseFormField, buildFormConfigFromEditorialTemplate, buildHeaders, buildPageKey, buildSchemaId, buildValidatorsFromValidatorOptions, cancelIfCpfInvalidHook, clampRange, cloneTableConfig, cnpjAlphaValidator, collapseWhitespace, composeHeadersWithVersion, conditionalAsyncValidator, convertFormLayoutToConfig, createCorporateLoggerConfig, createCorporateObservabilityOptions, createCpfCnpjValidator, createDefaultFormConfig, createDefaultTableConfig, createEmptyFormConfig, createPersistedPage, customAsyncValidatorFn, customValidatorFn, debounceAsyncValidator, deepMerge, ensureIds, ensureNoConflictsHookFactory, ensurePageIds, extractNormalizedError, fetchWithETag, fileTypeValidator, fillUndefined, generateId, getDefaultFormHints, getEditorialCompliancePresetById, getEditorialFormTemplateById, getEditorialFormTemplateCatalog, getEditorialSolutionById, getEditorialSolutionCatalog, getEditorialSolutionPresetById, getEditorialThemePresetById, getEssentialConfig, getFieldMetadataCapabilities, getGlobalActionCatalog, getGlobalActionUiSchema, getReferencedFieldMetadata, getTextTransformer, interpolatePraxisTranslation, isAllowedEditorialContentFormat, isAllowedEditorialHref, isCssTextTransform, isEditorialComponentMeta, isInlineFilterControlType, isRangeValidForFilter, isTableConfigV2, isValidFormConfig, isValidTableConfig, legacyCnpjValidator, legacyCpfValidator, logOnErrorHook, mapFieldDefinitionToMetadata, mapFieldDefinitionsToMetadata, matchFieldValidator, maxFileSizeValidator, mergeFieldMetadata, mergePraxisI18nConfigs, mergeTableConfigs, migrateFormLayoutRule, minWordsValidator, normalizeControlTypeKey, normalizeControlTypeToken, normalizeEditorialLink, normalizeEnd, normalizeFieldConstraints, normalizeFormConfig, normalizeFormMetadata, normalizePath, normalizeStart, normalizeUnknownError, notifySuccessHook, parseJsonResponseOrEmpty, praxisLoadingInterceptorFn, prefillFromContextHook, provideDefaultFormHooks, provideFieldSelectorRegistryBase, provideFieldSelectorRegistryOverride, provideFieldSelectorRegistryRuntime, provideFormHookPresets, provideFormHooks, provideGlobalActionCatalog, provideGlobalActionHandler, provideGlobalConfig, provideGlobalConfigReady, provideGlobalConfigSeed, provideGlobalConfigTenant, provideHookResolvers, provideHookWhitelist, provideOverlayDecisionMatrix, providePraxisAnalyticsGlobalActions, providePraxisDynamicPageMetadata, providePraxisFooterLinksMetadata, providePraxisGlobalActionCatalog, providePraxisGlobalActions, providePraxisGlobalConfigBootstrap, providePraxisHeroBannerMetadata, providePraxisHttpLoading, providePraxisI18n, providePraxisI18nConfig, providePraxisI18nTranslator, providePraxisLegalNoticeMetadata, providePraxisLoadingDefaults, providePraxisLogging, providePraxisRichTextBlockMetadata, providePraxisToastGlobalActions, providePraxisUserContextSummaryMetadata, provideRemoteGlobalConfig, reconcileFilterConfig, reconcileFormConfig, reconcileTableConfig, removeDiacritics, reportTelemetryHookFactory, requiredCheckedValidator, resolveBuiltinPresets, resolveControlTypeAlias, resolveHidden, resolveInlineFilterAliasToBaseControlType, resolveInlineFilterControlTypeAlias, resolveLoggerConfig, resolveObservabilityOptions, resolveOffset, resolveOrder, resolveSpan, slugify, stripMasksHook, syncWithServerMetadata, toCamel, toCapitalize, toKebab, toPascal, toSentenceCase, toSnake, toTitleCase, trim, uniqueAsyncValidator, urlValidator, withMessage, withPraxisHttpLoading };
|
|
15546
16982
|
//# sourceMappingURL=praxisui-core.mjs.map
|