@praxisui/core 1.0.0-beta.61 → 1.0.0-beta.63
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 +1596 -31
- package/fesm2022/praxisui-core.mjs.map +1 -1
- package/index.d.ts +717 -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
|
*/
|
|
@@ -8067,6 +8305,7 @@ function createDefaultFormConfig() {
|
|
|
8067
8305
|
],
|
|
8068
8306
|
formBlocksBefore: [],
|
|
8069
8307
|
formBlocksBeforeActions: [],
|
|
8308
|
+
formBlocksBeforeActionsPlacement: 'afterSections',
|
|
8070
8309
|
formBlocksAfter: [],
|
|
8071
8310
|
// Default mode hints (didactic tooltips)
|
|
8072
8311
|
hints: getDefaultFormHints(),
|
|
@@ -8080,7 +8319,13 @@ function isValidFormConfig(config) {
|
|
|
8080
8319
|
* Cria configuração vazia para inicialização
|
|
8081
8320
|
*/
|
|
8082
8321
|
function createEmptyFormConfig() {
|
|
8083
|
-
return {
|
|
8322
|
+
return {
|
|
8323
|
+
sections: [],
|
|
8324
|
+
formBlocksBefore: [],
|
|
8325
|
+
formBlocksBeforeActions: [],
|
|
8326
|
+
formBlocksBeforeActionsPlacement: 'afterSections',
|
|
8327
|
+
formBlocksAfter: [],
|
|
8328
|
+
};
|
|
8084
8329
|
}
|
|
8085
8330
|
/**
|
|
8086
8331
|
* Default hint texts for data and UI modes.
|
|
@@ -8268,6 +8513,577 @@ function convertFormLayoutToConfig(formLayout) {
|
|
|
8268
8513
|
return ensureIds({ sections });
|
|
8269
8514
|
}
|
|
8270
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
|
+
|
|
8271
9087
|
const RULE_PROPERTY_SCHEMA = {
|
|
8272
9088
|
field: [
|
|
8273
9089
|
{ name: 'visible', type: 'boolean', label: 'Visível' },
|
|
@@ -8375,7 +9191,17 @@ const RULE_PROPERTY_SCHEMA = {
|
|
|
8375
9191
|
{ value: 'bodySmall', label: 'Body pequeno' },
|
|
8376
9192
|
],
|
|
8377
9193
|
},
|
|
8378
|
-
{
|
|
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' },
|
|
8379
9205
|
],
|
|
8380
9206
|
action: [
|
|
8381
9207
|
{ name: 'visible', type: 'boolean', label: 'Visível' },
|
|
@@ -8449,6 +9275,629 @@ const RULE_PROPERTY_SCHEMA = {
|
|
|
8449
9275
|
],
|
|
8450
9276
|
};
|
|
8451
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
|
+
presentation: {
|
|
9514
|
+
layout: {
|
|
9515
|
+
orientation: 'horizontal',
|
|
9516
|
+
density: 'comfortable',
|
|
9517
|
+
shellVariant: 'corporate-wizard',
|
|
9518
|
+
maxWidth: '980px',
|
|
9519
|
+
responsive: {
|
|
9520
|
+
mobileOrientation: 'vertical',
|
|
9521
|
+
collapseStepperBelow: '768px',
|
|
9522
|
+
},
|
|
9523
|
+
},
|
|
9524
|
+
theme: {
|
|
9525
|
+
color: {
|
|
9526
|
+
pageBackground: '#f7f4ee',
|
|
9527
|
+
surfacePrimary: '#ffffff',
|
|
9528
|
+
surfaceSecondary: '#ffffff',
|
|
9529
|
+
border: '#dde3ef',
|
|
9530
|
+
textPrimary: '#24324a',
|
|
9531
|
+
textSecondary: '#7b8aa0',
|
|
9532
|
+
accent: '#264a8a',
|
|
9533
|
+
accentContrast: '#ffffff',
|
|
9534
|
+
success: '#35b37e',
|
|
9535
|
+
warning: '#d39a1a',
|
|
9536
|
+
danger: '#c84b4b',
|
|
9537
|
+
stepCompleted: '#35b37e',
|
|
9538
|
+
stepActive: '#264a8a',
|
|
9539
|
+
stepPending: '#eef1f7',
|
|
9540
|
+
connector: '#8fd8c0',
|
|
9541
|
+
ctaPrimary: '#264a8a',
|
|
9542
|
+
ctaPrimaryText: '#ffffff',
|
|
9543
|
+
},
|
|
9544
|
+
radius: {
|
|
9545
|
+
shell: '28px',
|
|
9546
|
+
card: '22px',
|
|
9547
|
+
button: '14px',
|
|
9548
|
+
step: '999px',
|
|
9549
|
+
},
|
|
9550
|
+
shadow: {
|
|
9551
|
+
shell: '0 24px 60px rgba(25, 42, 70, 0.10)',
|
|
9552
|
+
card: '0 10px 30px rgba(25, 42, 70, 0.06)',
|
|
9553
|
+
},
|
|
9554
|
+
},
|
|
9555
|
+
stepper: {
|
|
9556
|
+
visible: true,
|
|
9557
|
+
orientation: 'horizontal',
|
|
9558
|
+
variant: 'icon-label',
|
|
9559
|
+
showConnectors: true,
|
|
9560
|
+
connectorStyle: 'solid',
|
|
9561
|
+
allowStepJump: false,
|
|
9562
|
+
},
|
|
9563
|
+
},
|
|
9564
|
+
contextContract: [
|
|
9565
|
+
{ key: 'company.name', type: 'string', required: true },
|
|
9566
|
+
{ key: 'company.hrEmail', type: 'string' },
|
|
9567
|
+
{ key: 'position.title', type: 'string' },
|
|
9568
|
+
{ key: 'manager.name', type: 'string' },
|
|
9569
|
+
{ key: 'policy.title', type: 'string' },
|
|
9570
|
+
],
|
|
9571
|
+
journeys: [
|
|
9572
|
+
{
|
|
9573
|
+
journeyId: 'employee-onboarding-journey',
|
|
9574
|
+
label: 'Onboarding corporativo',
|
|
9575
|
+
description: 'Jornada editorial da chegada do colaborador até a preparação operacional inicial.',
|
|
9576
|
+
steps: [
|
|
9577
|
+
{
|
|
9578
|
+
stepId: 'welcome',
|
|
9579
|
+
label: 'Boas-vindas',
|
|
9580
|
+
kind: 'intro',
|
|
9581
|
+
icon: { name: 'auto_awesome' },
|
|
9582
|
+
visual: {
|
|
9583
|
+
variant: 'hero-card',
|
|
9584
|
+
textAlign: 'center',
|
|
9585
|
+
emphasis: 'high',
|
|
9586
|
+
},
|
|
9587
|
+
blocks: [
|
|
9588
|
+
{
|
|
9589
|
+
blockId: 'onboarding:intro',
|
|
9590
|
+
kind: 'introHero',
|
|
9591
|
+
title: 'Bem-vindo à equipe',
|
|
9592
|
+
subtitle: 'Template corporativo',
|
|
9593
|
+
description: 'Estrutura editorial reutilizável para recepção, cadastro inicial, preferências operacionais e confirmação final.',
|
|
9594
|
+
icon: { name: 'sparkles' },
|
|
9595
|
+
align: 'center',
|
|
9596
|
+
primaryAction: {
|
|
9597
|
+
label: 'Iniciar onboarding',
|
|
9598
|
+
actionId: 'next-step',
|
|
9599
|
+
appearance: 'primary',
|
|
9600
|
+
icon: { name: 'arrow_forward' },
|
|
9601
|
+
},
|
|
9602
|
+
highlightItems: [
|
|
9603
|
+
{
|
|
9604
|
+
id: 'setup',
|
|
9605
|
+
title: 'Setup preparado',
|
|
9606
|
+
description: 'Os dados desta jornada alimentam o provisionamento inicial.',
|
|
9607
|
+
icon: { name: 'shield' },
|
|
9608
|
+
},
|
|
9609
|
+
{
|
|
9610
|
+
id: 'team',
|
|
9611
|
+
title: 'Integração guiada',
|
|
9612
|
+
description: 'O fluxo orienta o colaborador até a preparação operacional.',
|
|
9613
|
+
icon: { name: 'group' },
|
|
9614
|
+
},
|
|
9615
|
+
{
|
|
9616
|
+
id: 'start',
|
|
9617
|
+
title: 'Primeiro dia pronto',
|
|
9618
|
+
description: 'As escolhas ficam disponíveis na revisão final.',
|
|
9619
|
+
icon: { name: 'rocket_launch' },
|
|
9620
|
+
},
|
|
9621
|
+
],
|
|
9622
|
+
},
|
|
9623
|
+
{
|
|
9624
|
+
blockId: 'onboarding:highlights',
|
|
9625
|
+
kind: 'infoCards',
|
|
9626
|
+
title: 'O que você resolve aqui',
|
|
9627
|
+
items: [
|
|
9628
|
+
{
|
|
9629
|
+
id: 'identity-highlight',
|
|
9630
|
+
title: 'Identificação',
|
|
9631
|
+
description: 'Cadastro inicial, contatos e dados básicos.',
|
|
9632
|
+
icon: 'badge',
|
|
9633
|
+
},
|
|
9634
|
+
{
|
|
9635
|
+
id: 'operations-highlight',
|
|
9636
|
+
title: 'Operação inicial',
|
|
9637
|
+
description: 'Equipamentos, modelo de trabalho e observações.',
|
|
9638
|
+
icon: 'tune',
|
|
9639
|
+
},
|
|
9640
|
+
{
|
|
9641
|
+
id: 'confirmation-highlight',
|
|
9642
|
+
title: 'Confirmação',
|
|
9643
|
+
description: 'Resumo final antes do encerramento da jornada.',
|
|
9644
|
+
icon: 'task_alt',
|
|
9645
|
+
},
|
|
9646
|
+
],
|
|
9647
|
+
},
|
|
9648
|
+
],
|
|
9649
|
+
},
|
|
9650
|
+
{
|
|
9651
|
+
stepId: 'identity',
|
|
9652
|
+
label: 'Identificação',
|
|
9653
|
+
kind: 'form',
|
|
9654
|
+
icon: { name: 'person' },
|
|
9655
|
+
visual: {
|
|
9656
|
+
variant: 'form-card',
|
|
9657
|
+
surface: 'elevated',
|
|
9658
|
+
columns: 2,
|
|
9659
|
+
},
|
|
9660
|
+
blocks: [
|
|
9661
|
+
{
|
|
9662
|
+
blockId: 'identity-form',
|
|
9663
|
+
kind: 'dataCollection',
|
|
9664
|
+
title: 'Dados essenciais',
|
|
9665
|
+
description: 'Informações essenciais para cadastro inicial do colaborador.',
|
|
9666
|
+
formBlockId: 'identity-form',
|
|
9667
|
+
},
|
|
9668
|
+
],
|
|
9669
|
+
},
|
|
9670
|
+
{
|
|
9671
|
+
stepId: 'operations',
|
|
9672
|
+
label: 'Operação inicial',
|
|
9673
|
+
kind: 'mixed',
|
|
9674
|
+
icon: { name: 'tune' },
|
|
9675
|
+
visual: {
|
|
9676
|
+
variant: 'selection-grid',
|
|
9677
|
+
surface: 'elevated',
|
|
9678
|
+
columns: 2,
|
|
9679
|
+
},
|
|
9680
|
+
blocks: [
|
|
9681
|
+
{
|
|
9682
|
+
blockId: 'operations:equipment',
|
|
9683
|
+
kind: 'selectionCards',
|
|
9684
|
+
title: 'Equipamentos iniciais',
|
|
9685
|
+
description: 'Selecione os itens mais relevantes para o setup do colaborador.',
|
|
9686
|
+
field: 'selectedEquipment',
|
|
9687
|
+
selectionMode: 'multiple',
|
|
9688
|
+
columns: 2,
|
|
9689
|
+
style: {
|
|
9690
|
+
iconPosition: 'top',
|
|
9691
|
+
variant: 'accent',
|
|
9692
|
+
},
|
|
9693
|
+
items: [
|
|
9694
|
+
{ id: 'notebook', label: 'Notebook', value: 'NOTEBOOK', icon: { name: 'laptop_mac' } },
|
|
9695
|
+
{ id: 'monitor', label: 'Monitor externo', value: 'MONITOR', icon: { name: 'desktop_windows' } },
|
|
9696
|
+
{ id: 'headset', label: 'Headset', value: 'HEADSET', icon: { name: 'headset_mic' } },
|
|
9697
|
+
{ id: 'badge', label: 'Cracha de acesso', value: 'BADGE', icon: { name: 'badge' } },
|
|
9698
|
+
],
|
|
9699
|
+
},
|
|
9700
|
+
{
|
|
9701
|
+
blockId: 'operations-form',
|
|
9702
|
+
kind: 'dataCollection',
|
|
9703
|
+
title: 'Preparação operacional',
|
|
9704
|
+
description: 'Dados para preparação do ambiente e comunicação inicial.',
|
|
9705
|
+
formBlockId: 'operations-form',
|
|
9706
|
+
},
|
|
9707
|
+
],
|
|
9708
|
+
},
|
|
9709
|
+
{
|
|
9710
|
+
stepId: 'confirmation',
|
|
9711
|
+
label: 'Confirmação',
|
|
9712
|
+
kind: 'review',
|
|
9713
|
+
icon: { name: 'task_alt' },
|
|
9714
|
+
visual: {
|
|
9715
|
+
variant: 'review-sections',
|
|
9716
|
+
surface: 'soft',
|
|
9717
|
+
},
|
|
9718
|
+
blocks: [
|
|
9719
|
+
{
|
|
9720
|
+
blockId: 'onboarding:review-sections',
|
|
9721
|
+
kind: 'reviewSections',
|
|
9722
|
+
title: 'Resumo final do onboarding',
|
|
9723
|
+
description: 'Revise os dados antes de concluir a preparação inicial.',
|
|
9724
|
+
sections: [
|
|
9725
|
+
{
|
|
9726
|
+
id: 'review-identity',
|
|
9727
|
+
title: 'Identificação',
|
|
9728
|
+
icon: { name: 'person' },
|
|
9729
|
+
fields: [
|
|
9730
|
+
{ key: 'fullName', label: 'Nome completo', valuePath: 'formData.fullName' },
|
|
9731
|
+
{ key: 'corporateEmail', label: 'E-mail corporativo', valuePath: 'formData.corporateEmail' },
|
|
9732
|
+
{ key: 'phoneNumber', label: 'Telefone', valuePath: 'formData.phoneNumber', hideWhenEmpty: true },
|
|
9733
|
+
{ key: 'workModel', label: 'Modelo de trabalho', valuePath: 'formData.workModel' },
|
|
9734
|
+
],
|
|
9735
|
+
},
|
|
9736
|
+
{
|
|
9737
|
+
id: 'review-operations',
|
|
9738
|
+
title: 'Operação inicial',
|
|
9739
|
+
icon: { name: 'tune' },
|
|
9740
|
+
fields: [
|
|
9741
|
+
{ key: 'selectedEquipment', label: 'Equipamentos', valuePath: 'formData.selectedEquipment', hideWhenEmpty: true },
|
|
9742
|
+
{ key: 'needsEquipment', label: 'Necessita envio de equipamento', valuePath: 'formData.needsEquipment', hideWhenEmpty: true },
|
|
9743
|
+
{ key: 'shippingAddress', label: 'Endereco para envio', valuePath: 'formData.shippingAddress', hideWhenEmpty: true },
|
|
9744
|
+
{ key: 'accessibilityNotes', label: 'Observacoes adicionais', valuePath: 'formData.accessibilityNotes', hideWhenEmpty: true },
|
|
9745
|
+
],
|
|
9746
|
+
},
|
|
9747
|
+
],
|
|
9748
|
+
},
|
|
9749
|
+
],
|
|
9750
|
+
},
|
|
9751
|
+
],
|
|
9752
|
+
},
|
|
9753
|
+
],
|
|
9754
|
+
themePresets: EDITORIAL_THEME_PRESETS.filter((preset) => preset.themeId === 'corporate-wizard'),
|
|
9755
|
+
compliancePresets: EDITORIAL_COMPLIANCE_PRESETS.filter((preset) => ['privacy-consent', 'employment-documents'].includes(preset.presetId)),
|
|
9756
|
+
tags: ['employee', 'onboarding', 'hr', 'documents'],
|
|
9757
|
+
owner: 'praxis-core',
|
|
9758
|
+
};
|
|
9759
|
+
const PRIVACY_CONSENT_EDITORIAL_SOLUTION = {
|
|
9760
|
+
solutionId: 'privacy-consent',
|
|
9761
|
+
version: '1.0.0',
|
|
9762
|
+
problemType: 'privacy-consent',
|
|
9763
|
+
title: 'Privacy Consent',
|
|
9764
|
+
description: 'Solução editorial focada em aceite explícito, base legal, preferências de comunicação e registro de consentimento.',
|
|
9765
|
+
contextContract: [
|
|
9766
|
+
{ key: 'policy.title', type: 'string', required: true },
|
|
9767
|
+
{ key: 'policy.version', type: 'string' },
|
|
9768
|
+
{ key: 'policy.updatedAt', type: 'date' },
|
|
9769
|
+
],
|
|
9770
|
+
journeys: [
|
|
9771
|
+
{
|
|
9772
|
+
journeyId: 'privacy-consent-journey',
|
|
9773
|
+
label: 'Consentimento regulatório',
|
|
9774
|
+
description: 'Jornada editorial curta para registrar ciência, consentimento e preferências de canal.',
|
|
9775
|
+
steps: [
|
|
9776
|
+
{
|
|
9777
|
+
stepId: 'policy-context',
|
|
9778
|
+
label: 'Contexto',
|
|
9779
|
+
blocks: [
|
|
9780
|
+
{
|
|
9781
|
+
blockId: 'privacy:lead',
|
|
9782
|
+
kind: 'legalNotice',
|
|
9783
|
+
title: 'Consentimento e tratamento de dados',
|
|
9784
|
+
contentFormat: 'markdown',
|
|
9785
|
+
content: 'Use esta solução quando o objetivo principal do fluxo for registrar ciência, aceite e preferências relacionadas a privacidade.',
|
|
9786
|
+
tone: 'default',
|
|
9787
|
+
surface: 'card',
|
|
9788
|
+
},
|
|
9789
|
+
{
|
|
9790
|
+
blockId: 'privacy:policy-list',
|
|
9791
|
+
kind: 'policyList',
|
|
9792
|
+
title: 'Documentos e políticas relacionados',
|
|
9793
|
+
items: [
|
|
9794
|
+
{
|
|
9795
|
+
id: 'privacy-policy',
|
|
9796
|
+
title: 'Política de Privacidade',
|
|
9797
|
+
summary: 'Documento principal que define base legal, finalidades e direitos do titular.',
|
|
9798
|
+
required: true,
|
|
9799
|
+
href: '/privacidade',
|
|
9800
|
+
evidenceKey: 'privacyConsentAcceptedAt',
|
|
9801
|
+
},
|
|
9802
|
+
{
|
|
9803
|
+
id: 'lgpd-channel',
|
|
9804
|
+
title: 'Canal LGPD',
|
|
9805
|
+
summary: 'Canal de atendimento para solicitações e exercício de direitos.',
|
|
9806
|
+
required: false,
|
|
9807
|
+
href: '/lgpd',
|
|
9808
|
+
},
|
|
9809
|
+
],
|
|
9810
|
+
actionId: 'open-policy-center',
|
|
9811
|
+
actionLabel: 'Abrir central de políticas',
|
|
9812
|
+
surface: 'card',
|
|
9813
|
+
},
|
|
9814
|
+
],
|
|
9815
|
+
},
|
|
9816
|
+
{
|
|
9817
|
+
stepId: 'consent',
|
|
9818
|
+
label: 'Preferências',
|
|
9819
|
+
blocks: [
|
|
9820
|
+
{
|
|
9821
|
+
blockId: 'consent-form',
|
|
9822
|
+
kind: 'dataCollection',
|
|
9823
|
+
title: 'Preferências e consentimentos',
|
|
9824
|
+
description: 'Aceites explícitos e canais opcionais de comunicação.',
|
|
9825
|
+
formBlockId: 'consent-form',
|
|
9826
|
+
},
|
|
9827
|
+
],
|
|
9828
|
+
},
|
|
9829
|
+
{
|
|
9830
|
+
stepId: 'confirmation',
|
|
9831
|
+
label: 'Confirmação',
|
|
9832
|
+
blocks: [
|
|
9833
|
+
{
|
|
9834
|
+
blockId: 'privacy:review-summary',
|
|
9835
|
+
kind: 'reviewSummary',
|
|
9836
|
+
title: 'Resumo do consentimento',
|
|
9837
|
+
fields: [
|
|
9838
|
+
{ key: 'privacyConsent', label: 'Consentimento principal', valuePath: 'formData.privacyConsent', fallback: '-' },
|
|
9839
|
+
{ key: 'preferredChannel', label: 'Canal preferencial', valuePath: 'formData.preferredChannel', fallback: '-' },
|
|
9840
|
+
],
|
|
9841
|
+
checklist: [
|
|
9842
|
+
'A política aplicável foi revisada.',
|
|
9843
|
+
'O consentimento principal foi registrado.',
|
|
9844
|
+
'As preferências de comunicação foram definidas.',
|
|
9845
|
+
],
|
|
9846
|
+
surface: 'card',
|
|
9847
|
+
},
|
|
9848
|
+
{
|
|
9849
|
+
blockId: 'privacy:footer',
|
|
9850
|
+
kind: 'footerLinks',
|
|
9851
|
+
widget: {
|
|
9852
|
+
id: 'widget:footer-links',
|
|
9853
|
+
inputs: {
|
|
9854
|
+
instanceId: 'solution:privacy-consent:footer',
|
|
9855
|
+
brandText: 'Praxis UI',
|
|
9856
|
+
secondaryText: 'Solução para fluxos regulatórios e comprovação de consentimento.',
|
|
9857
|
+
layout: 'inline',
|
|
9858
|
+
appearance: 'divider',
|
|
9859
|
+
links: [
|
|
9860
|
+
{ label: 'Política de Privacidade', href: '/privacidade' },
|
|
9861
|
+
{ label: 'Canal LGPD', href: '/lgpd' },
|
|
9862
|
+
],
|
|
9863
|
+
},
|
|
9864
|
+
},
|
|
9865
|
+
},
|
|
9866
|
+
],
|
|
9867
|
+
},
|
|
9868
|
+
],
|
|
9869
|
+
},
|
|
9870
|
+
],
|
|
9871
|
+
themePresets: EDITORIAL_THEME_PRESETS.filter((preset) => preset.themeId === 'compliance-plain'),
|
|
9872
|
+
compliancePresets: EDITORIAL_COMPLIANCE_PRESETS.filter((preset) => preset.presetId === 'privacy-consent'),
|
|
9873
|
+
tags: ['privacy', 'consent', 'compliance', 'legal'],
|
|
9874
|
+
owner: 'praxis-core',
|
|
9875
|
+
};
|
|
9876
|
+
const EDITORIAL_SOLUTION_CATALOG = [
|
|
9877
|
+
EVENT_REGISTRATION_EDITORIAL_SOLUTION,
|
|
9878
|
+
EMPLOYEE_ONBOARDING_EDITORIAL_SOLUTION,
|
|
9879
|
+
PRIVACY_CONSENT_EDITORIAL_SOLUTION,
|
|
9880
|
+
];
|
|
9881
|
+
function getEditorialSolutionCatalog() {
|
|
9882
|
+
return EDITORIAL_SOLUTION_CATALOG.map((solution) => structuredClone(solution));
|
|
9883
|
+
}
|
|
9884
|
+
function getEditorialSolutionById(solutionId) {
|
|
9885
|
+
const match = EDITORIAL_SOLUTION_CATALOG.find((solution) => solution.solutionId === solutionId);
|
|
9886
|
+
return match ? structuredClone(match) : undefined;
|
|
9887
|
+
}
|
|
9888
|
+
function getEditorialThemePresetById(themeId) {
|
|
9889
|
+
const match = EDITORIAL_THEME_PRESETS.find((preset) => preset.themeId === themeId);
|
|
9890
|
+
return match ? structuredClone(match) : undefined;
|
|
9891
|
+
}
|
|
9892
|
+
function getEditorialCompliancePresetById(presetId) {
|
|
9893
|
+
const match = EDITORIAL_COMPLIANCE_PRESETS.find((preset) => preset.presetId === presetId);
|
|
9894
|
+
return match ? structuredClone(match) : undefined;
|
|
9895
|
+
}
|
|
9896
|
+
function getEditorialSolutionPresetById(presetId) {
|
|
9897
|
+
const match = EDITORIAL_SOLUTION_PRESETS.find((preset) => preset.presetId === presetId);
|
|
9898
|
+
return match ? structuredClone(match) : undefined;
|
|
9899
|
+
}
|
|
9900
|
+
|
|
8452
9901
|
/** Utility: generate a random id using crypto.randomUUID or fallback. */
|
|
8453
9902
|
function generateId() {
|
|
8454
9903
|
const g = globalThis.crypto?.randomUUID?.();
|
|
@@ -8782,6 +10231,10 @@ function mapFieldDefinitionToMetadata(field) {
|
|
|
8782
10231
|
'selectAll',
|
|
8783
10232
|
'maxSelections',
|
|
8784
10233
|
'emptyOptionText',
|
|
10234
|
+
'selectionMode',
|
|
10235
|
+
'variant',
|
|
10236
|
+
'density',
|
|
10237
|
+
'layout',
|
|
8785
10238
|
];
|
|
8786
10239
|
for (const prop of simpleProps) {
|
|
8787
10240
|
const value = field[prop];
|
|
@@ -8861,8 +10314,10 @@ function mapFieldDefinitionToMetadata(field) {
|
|
|
8861
10314
|
metadata.options = mapped;
|
|
8862
10315
|
metadata.selectOptions = mapped;
|
|
8863
10316
|
}
|
|
8864
|
-
//
|
|
10317
|
+
// Legacy fallback: schema-derived checkbox without explicit selectionMode or options
|
|
10318
|
+
// still maps to toggle. New contract keeps checkbox when selectionMode is explicit.
|
|
8865
10319
|
if (metadata.controlType === FieldControlType.CHECKBOX &&
|
|
10320
|
+
metadata.selectionMode === undefined &&
|
|
8866
10321
|
!field.options?.length &&
|
|
8867
10322
|
!field.checkboxOptions?.length) {
|
|
8868
10323
|
metadata.controlType = FieldControlType.TOGGLE;
|
|
@@ -10031,6 +11486,36 @@ const FIELD_METADATA_CAPABILITIES = {
|
|
|
10031
11486
|
description: 'Descrição detalhada (usada em documentação ou helps extensos).',
|
|
10032
11487
|
intentExamples: ['descrição completa do campo', 'texto explicativo longo', 'documentação do input'],
|
|
10033
11488
|
},
|
|
11489
|
+
{
|
|
11490
|
+
path: 'selectionMode',
|
|
11491
|
+
category: 'behavior',
|
|
11492
|
+
valueKind: 'enum',
|
|
11493
|
+
allowedValues: ['boolean', 'single', 'multiple'],
|
|
11494
|
+
description: 'Semântica de seleção explícita para controles de escolha.',
|
|
11495
|
+
intentExamples: ['checkbox booleano', 'radio de escolha única', 'grupo múltiplo'],
|
|
11496
|
+
},
|
|
11497
|
+
{
|
|
11498
|
+
path: 'variant',
|
|
11499
|
+
category: 'appearance',
|
|
11500
|
+
valueKind: 'string',
|
|
11501
|
+
description: 'Variante visual/semântica do controle.',
|
|
11502
|
+
intentExamples: ['variante consent', 'modo compact', 'apresentação em tiles'],
|
|
11503
|
+
},
|
|
11504
|
+
{
|
|
11505
|
+
path: 'density',
|
|
11506
|
+
category: 'appearance',
|
|
11507
|
+
valueKind: 'enum',
|
|
11508
|
+
allowedValues: ['compact', 'comfortable', 'spacious'],
|
|
11509
|
+
description: 'Densidade visual do shell do controle.',
|
|
11510
|
+
intentExamples: ['deixar mais compacto', 'usar densidade confortável', 'mais espaçado'],
|
|
11511
|
+
},
|
|
11512
|
+
{
|
|
11513
|
+
path: 'links',
|
|
11514
|
+
category: 'identity',
|
|
11515
|
+
valueKind: 'array',
|
|
11516
|
+
description: 'Links ricos associados ao campo, úteis em consentimentos e conteúdo legal.',
|
|
11517
|
+
intentExamples: ['adicionar link da política', 'incluir termos de uso', 'anexar link institucional'],
|
|
11518
|
+
},
|
|
10034
11519
|
{
|
|
10035
11520
|
path: 'group',
|
|
10036
11521
|
category: 'identity',
|
|
@@ -11317,14 +12802,20 @@ class PraxisFooterLinksComponent {
|
|
|
11317
12802
|
secondaryText;
|
|
11318
12803
|
links = [];
|
|
11319
12804
|
layout = 'inline';
|
|
12805
|
+
appearance = 'divider';
|
|
11320
12806
|
get normalizedLinks() {
|
|
11321
12807
|
return (this.links || [])
|
|
11322
12808
|
.map((link) => normalizeEditorialLink(link))
|
|
11323
12809
|
.filter((link) => !!link);
|
|
11324
12810
|
}
|
|
11325
12811
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisFooterLinksComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
11326
|
-
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: `
|
|
11327
|
-
<footer
|
|
12812
|
+
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: `
|
|
12813
|
+
<footer
|
|
12814
|
+
class="pfl-shell"
|
|
12815
|
+
[class.pfl-stacked]="layout === 'stacked'"
|
|
12816
|
+
[class.pfl-plain]="appearance === 'plain'"
|
|
12817
|
+
[class.pfl-surface]="appearance === 'surface'"
|
|
12818
|
+
>
|
|
11328
12819
|
<div class="pfl-brand" *ngIf="brandText || secondaryText">
|
|
11329
12820
|
<strong class="pfl-brand-text" *ngIf="brandText">{{ brandText }}</strong>
|
|
11330
12821
|
<span class="pfl-secondary-text" *ngIf="secondaryText">{{ secondaryText }}</span>
|
|
@@ -11342,7 +12833,7 @@ class PraxisFooterLinksComponent {
|
|
|
11342
12833
|
</a>
|
|
11343
12834
|
</nav>
|
|
11344
12835
|
</footer>
|
|
11345
|
-
`, 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
|
|
12836
|
+
`, 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 });
|
|
11346
12837
|
}
|
|
11347
12838
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisFooterLinksComponent, decorators: [{
|
|
11348
12839
|
type: Component,
|
|
@@ -11353,7 +12844,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
11353
12844
|
'[attr.aria-label]': 'ariaLabel || null',
|
|
11354
12845
|
'role': 'contentinfo',
|
|
11355
12846
|
}, template: `
|
|
11356
|
-
<footer
|
|
12847
|
+
<footer
|
|
12848
|
+
class="pfl-shell"
|
|
12849
|
+
[class.pfl-stacked]="layout === 'stacked'"
|
|
12850
|
+
[class.pfl-plain]="appearance === 'plain'"
|
|
12851
|
+
[class.pfl-surface]="appearance === 'surface'"
|
|
12852
|
+
>
|
|
11357
12853
|
<div class="pfl-brand" *ngIf="brandText || secondaryText">
|
|
11358
12854
|
<strong class="pfl-brand-text" *ngIf="brandText">{{ brandText }}</strong>
|
|
11359
12855
|
<span class="pfl-secondary-text" *ngIf="secondaryText">{{ secondaryText }}</span>
|
|
@@ -11371,7 +12867,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
11371
12867
|
</a>
|
|
11372
12868
|
</nav>
|
|
11373
12869
|
</footer>
|
|
11374
|
-
`, 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
|
|
12870
|
+
`, 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"] }]
|
|
11375
12871
|
}], propDecorators: { instanceId: [{
|
|
11376
12872
|
type: Input
|
|
11377
12873
|
}], analyticsId: [{
|
|
@@ -11386,6 +12882,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
11386
12882
|
type: Input
|
|
11387
12883
|
}], layout: [{
|
|
11388
12884
|
type: Input
|
|
12885
|
+
}], appearance: [{
|
|
12886
|
+
type: Input
|
|
11389
12887
|
}] } });
|
|
11390
12888
|
|
|
11391
12889
|
const PRAXIS_FOOTER_LINKS_METADATA = {
|
|
@@ -11403,6 +12901,7 @@ const PRAXIS_FOOTER_LINKS_METADATA = {
|
|
|
11403
12901
|
{ name: 'secondaryText', type: 'string', label: 'Texto secundário', description: 'Texto secundário opcional do rodapé.' },
|
|
11404
12902
|
{ name: 'links', type: 'EditorialLinkDefinition[]', label: 'Links', description: 'Lista ordenada de links institucionais.' },
|
|
11405
12903
|
{ name: 'layout', type: "'inline' | 'stacked'", label: 'Layout', description: 'Layout inicial do rodapé institucional.', default: 'inline' },
|
|
12904
|
+
{ 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' },
|
|
11406
12905
|
],
|
|
11407
12906
|
outputs: [],
|
|
11408
12907
|
tags: ['widget', 'editorial', 'footer', 'links', EDITORIAL_WIDGET_TAG],
|
|
@@ -11431,10 +12930,20 @@ class PraxisHeroBannerComponent {
|
|
|
11431
12930
|
badges = [];
|
|
11432
12931
|
metaItems = [];
|
|
11433
12932
|
variant = 'default';
|
|
12933
|
+
appearance = 'card';
|
|
12934
|
+
brandText;
|
|
12935
|
+
titleAccent;
|
|
11434
12936
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisHeroBannerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
11435
|
-
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: `
|
|
11436
|
-
<section
|
|
12937
|
+
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: `
|
|
12938
|
+
<section
|
|
12939
|
+
class="phb-shell"
|
|
12940
|
+
[class.phb-event]="variant === 'event'"
|
|
12941
|
+
[class.phb-institutional]="variant === 'institutional'"
|
|
12942
|
+
[class.phb-flat]="appearance === 'flat'"
|
|
12943
|
+
>
|
|
11437
12944
|
<div class="phb-copy">
|
|
12945
|
+
<p class="phb-brand" *ngIf="brandText">{{ brandText }}</p>
|
|
12946
|
+
|
|
11438
12947
|
<div class="phb-badges" *ngIf="badges?.length">
|
|
11439
12948
|
<span
|
|
11440
12949
|
class="phb-badge"
|
|
@@ -11449,7 +12958,10 @@ class PraxisHeroBannerComponent {
|
|
|
11449
12958
|
|
|
11450
12959
|
<div class="phb-text">
|
|
11451
12960
|
<p class="phb-subtitle" *ngIf="subtitle">{{ subtitle }}</p>
|
|
11452
|
-
<h2 class="phb-title" *ngIf="title
|
|
12961
|
+
<h2 class="phb-title" *ngIf="title || titleAccent">
|
|
12962
|
+
<span *ngIf="title">{{ title }}</span>
|
|
12963
|
+
<span class="phb-title-accent" *ngIf="titleAccent">{{ titleAccent }}</span>
|
|
12964
|
+
</h2>
|
|
11453
12965
|
<p class="phb-description" *ngIf="description">{{ description }}</p>
|
|
11454
12966
|
</div>
|
|
11455
12967
|
|
|
@@ -11473,7 +12985,7 @@ class PraxisHeroBannerComponent {
|
|
|
11473
12985
|
</div>
|
|
11474
12986
|
</ng-template>
|
|
11475
12987
|
</section>
|
|
11476
|
-
`, 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 });
|
|
12988
|
+
`, 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 });
|
|
11477
12989
|
}
|
|
11478
12990
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisHeroBannerComponent, decorators: [{
|
|
11479
12991
|
type: Component,
|
|
@@ -11485,8 +12997,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
11485
12997
|
'[attr.role]': 'ariaLabel ? "region" : null',
|
|
11486
12998
|
'[attr.data-variant]': 'variant',
|
|
11487
12999
|
}, template: `
|
|
11488
|
-
<section
|
|
13000
|
+
<section
|
|
13001
|
+
class="phb-shell"
|
|
13002
|
+
[class.phb-event]="variant === 'event'"
|
|
13003
|
+
[class.phb-institutional]="variant === 'institutional'"
|
|
13004
|
+
[class.phb-flat]="appearance === 'flat'"
|
|
13005
|
+
>
|
|
11489
13006
|
<div class="phb-copy">
|
|
13007
|
+
<p class="phb-brand" *ngIf="brandText">{{ brandText }}</p>
|
|
13008
|
+
|
|
11490
13009
|
<div class="phb-badges" *ngIf="badges?.length">
|
|
11491
13010
|
<span
|
|
11492
13011
|
class="phb-badge"
|
|
@@ -11501,7 +13020,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
11501
13020
|
|
|
11502
13021
|
<div class="phb-text">
|
|
11503
13022
|
<p class="phb-subtitle" *ngIf="subtitle">{{ subtitle }}</p>
|
|
11504
|
-
<h2 class="phb-title" *ngIf="title
|
|
13023
|
+
<h2 class="phb-title" *ngIf="title || titleAccent">
|
|
13024
|
+
<span *ngIf="title">{{ title }}</span>
|
|
13025
|
+
<span class="phb-title-accent" *ngIf="titleAccent">{{ titleAccent }}</span>
|
|
13026
|
+
</h2>
|
|
11505
13027
|
<p class="phb-description" *ngIf="description">{{ description }}</p>
|
|
11506
13028
|
</div>
|
|
11507
13029
|
|
|
@@ -11525,7 +13047,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
11525
13047
|
</div>
|
|
11526
13048
|
</ng-template>
|
|
11527
13049
|
</section>
|
|
11528
|
-
`, 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"] }]
|
|
13050
|
+
`, 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"] }]
|
|
11529
13051
|
}], propDecorators: { instanceId: [{
|
|
11530
13052
|
type: Input
|
|
11531
13053
|
}], analyticsId: [{
|
|
@@ -11548,6 +13070,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
11548
13070
|
type: Input
|
|
11549
13071
|
}], variant: [{
|
|
11550
13072
|
type: Input
|
|
13073
|
+
}], appearance: [{
|
|
13074
|
+
type: Input
|
|
13075
|
+
}], brandText: [{
|
|
13076
|
+
type: Input
|
|
13077
|
+
}], titleAccent: [{
|
|
13078
|
+
type: Input
|
|
11551
13079
|
}] } });
|
|
11552
13080
|
|
|
11553
13081
|
const PRAXIS_HERO_BANNER_METADATA = {
|
|
@@ -11561,7 +13089,9 @@ const PRAXIS_HERO_BANNER_METADATA = {
|
|
|
11561
13089
|
{ name: 'instanceId', type: 'string', label: 'Instance ID', description: 'Identificador estável da instância editorial.' },
|
|
11562
13090
|
{ name: 'analyticsId', type: 'string', label: 'Analytics ID', description: 'Identificador opcional de telemetria agregada.' },
|
|
11563
13091
|
{ name: 'ariaLabel', type: 'string', label: 'Aria Label', description: 'Rótulo acessível opcional do hero.' },
|
|
13092
|
+
{ name: 'brandText', type: 'string', label: 'Brand', description: 'Marca ou rótulo institucional exibido antes do conteúdo principal.' },
|
|
11564
13093
|
{ name: 'title', type: 'string', label: 'Título', description: 'Título principal do hero.' },
|
|
13094
|
+
{ name: 'titleAccent', type: 'string', label: 'Destaque do título', description: 'Trecho opcional do título com tratamento visual destacado.' },
|
|
11565
13095
|
{ name: 'subtitle', type: 'string', label: 'Subtítulo', description: 'Kicker ou subtítulo acima do título.' },
|
|
11566
13096
|
{ name: 'description', type: 'string', label: 'Descrição', description: 'Descrição principal do destaque.' },
|
|
11567
13097
|
{ name: 'imageUrl', type: 'string', label: 'Imagem', description: 'URL opcional da imagem de apoio.' },
|
|
@@ -11569,6 +13099,7 @@ const PRAXIS_HERO_BANNER_METADATA = {
|
|
|
11569
13099
|
{ name: 'badges', type: 'Array<{ label: string; tone?: "default" | "highlight" | "muted" | "warning" }>', label: 'Badges', description: 'Badges curatoriais no topo do hero.' },
|
|
11570
13100
|
{ name: 'metaItems', type: 'Array<{ label: string; value: string }>', label: 'Metadados', description: 'Metadados como data, local ou tenant.' },
|
|
11571
13101
|
{ name: 'variant', type: "'default' | 'event' | 'institutional'", label: 'Variante', description: 'Variante visual inicial do hero banner.', default: 'default' },
|
|
13102
|
+
{ 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' },
|
|
11572
13103
|
],
|
|
11573
13104
|
outputs: [],
|
|
11574
13105
|
tags: ['widget', 'editorial', 'hero', 'banner', EDITORIAL_WIDGET_TAG],
|
|
@@ -11681,6 +13212,7 @@ class PraxisRichTextBlockComponent {
|
|
|
11681
13212
|
subtitle;
|
|
11682
13213
|
icon;
|
|
11683
13214
|
variant = 'default';
|
|
13215
|
+
appearance = 'card';
|
|
11684
13216
|
contentFormat = 'plain';
|
|
11685
13217
|
content = '';
|
|
11686
13218
|
get renderedContent() {
|
|
@@ -11691,8 +13223,13 @@ class PraxisRichTextBlockComponent {
|
|
|
11691
13223
|
return this.sanitizer.sanitize(SecurityContext.HTML, html) ?? '';
|
|
11692
13224
|
}
|
|
11693
13225
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisRichTextBlockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
11694
|
-
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: `
|
|
11695
|
-
<section
|
|
13226
|
+
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: `
|
|
13227
|
+
<section
|
|
13228
|
+
class="prt-block"
|
|
13229
|
+
[class.prt-block-emphasis]="variant === 'emphasis'"
|
|
13230
|
+
[class.prt-block-subtle]="variant === 'subtle'"
|
|
13231
|
+
[class.prt-block-plain]="appearance === 'plain'"
|
|
13232
|
+
>
|
|
11696
13233
|
<header class="prt-head" *ngIf="icon || title || subtitle">
|
|
11697
13234
|
<mat-icon class="prt-icon" *ngIf="icon" aria-hidden="true" [praxisIcon]="icon"></mat-icon>
|
|
11698
13235
|
<div class="prt-title-wrap">
|
|
@@ -11703,7 +13240,7 @@ class PraxisRichTextBlockComponent {
|
|
|
11703
13240
|
|
|
11704
13241
|
<div class="prt-content" [innerHTML]="renderedContent"></div>
|
|
11705
13242
|
</section>
|
|
11706
|
-
`, isInline: true, styles: [":host{display:block
|
|
13243
|
+
`, 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 });
|
|
11707
13244
|
}
|
|
11708
13245
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisRichTextBlockComponent, decorators: [{
|
|
11709
13246
|
type: Component,
|
|
@@ -11715,7 +13252,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
11715
13252
|
'[attr.aria-label]': 'ariaLabel || null',
|
|
11716
13253
|
'[attr.role]': 'ariaLabel ? "region" : null',
|
|
11717
13254
|
}, template: `
|
|
11718
|
-
<section
|
|
13255
|
+
<section
|
|
13256
|
+
class="prt-block"
|
|
13257
|
+
[class.prt-block-emphasis]="variant === 'emphasis'"
|
|
13258
|
+
[class.prt-block-subtle]="variant === 'subtle'"
|
|
13259
|
+
[class.prt-block-plain]="appearance === 'plain'"
|
|
13260
|
+
>
|
|
11719
13261
|
<header class="prt-head" *ngIf="icon || title || subtitle">
|
|
11720
13262
|
<mat-icon class="prt-icon" *ngIf="icon" aria-hidden="true" [praxisIcon]="icon"></mat-icon>
|
|
11721
13263
|
<div class="prt-title-wrap">
|
|
@@ -11726,7 +13268,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
11726
13268
|
|
|
11727
13269
|
<div class="prt-content" [innerHTML]="renderedContent"></div>
|
|
11728
13270
|
</section>
|
|
11729
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block
|
|
13271
|
+
`, 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"] }]
|
|
11730
13272
|
}], propDecorators: { instanceId: [{
|
|
11731
13273
|
type: Input
|
|
11732
13274
|
}], analyticsId: [{
|
|
@@ -11741,6 +13283,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
11741
13283
|
type: Input
|
|
11742
13284
|
}], variant: [{
|
|
11743
13285
|
type: Input
|
|
13286
|
+
}], appearance: [{
|
|
13287
|
+
type: Input
|
|
11744
13288
|
}], contentFormat: [{
|
|
11745
13289
|
type: Input
|
|
11746
13290
|
}], content: [{
|
|
@@ -11842,6 +13386,7 @@ class PraxisLegalNoticeComponent {
|
|
|
11842
13386
|
contentFormat = 'plain';
|
|
11843
13387
|
content = '';
|
|
11844
13388
|
severity = 'info';
|
|
13389
|
+
appearance = 'card';
|
|
11845
13390
|
links = [];
|
|
11846
13391
|
get normalizedLinks() {
|
|
11847
13392
|
return (this.links || [])
|
|
@@ -11869,8 +13414,13 @@ class PraxisLegalNoticeComponent {
|
|
|
11869
13414
|
}
|
|
11870
13415
|
}
|
|
11871
13416
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisLegalNoticeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
11872
|
-
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: `
|
|
11873
|
-
<section
|
|
13417
|
+
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: `
|
|
13418
|
+
<section
|
|
13419
|
+
class="pln-shell"
|
|
13420
|
+
[class.pln-warning]="severity === 'warning'"
|
|
13421
|
+
[class.pln-muted]="severity === 'muted'"
|
|
13422
|
+
[class.pln-plain]="appearance === 'plain'"
|
|
13423
|
+
>
|
|
11874
13424
|
<praxis-rich-text-block
|
|
11875
13425
|
[instanceId]="instanceId"
|
|
11876
13426
|
[analyticsId]="analyticsId"
|
|
@@ -11879,6 +13429,7 @@ class PraxisLegalNoticeComponent {
|
|
|
11879
13429
|
[subtitle]="subtitle"
|
|
11880
13430
|
[icon]="resolvedIcon"
|
|
11881
13431
|
[variant]="resolvedVariant"
|
|
13432
|
+
[appearance]="appearance === 'plain' ? 'plain' : 'card'"
|
|
11882
13433
|
[contentFormat]="contentFormat"
|
|
11883
13434
|
[content]="content"
|
|
11884
13435
|
></praxis-rich-text-block>
|
|
@@ -11895,7 +13446,7 @@ class PraxisLegalNoticeComponent {
|
|
|
11895
13446
|
</a>
|
|
11896
13447
|
</nav>
|
|
11897
13448
|
</section>
|
|
11898
|
-
`, 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{
|
|
13449
|
+
`, 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 });
|
|
11899
13450
|
}
|
|
11900
13451
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisLegalNoticeComponent, decorators: [{
|
|
11901
13452
|
type: Component,
|
|
@@ -11906,7 +13457,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
11906
13457
|
'[attr.aria-label]': 'ariaLabel || title || "Aviso legal"',
|
|
11907
13458
|
'role': 'note',
|
|
11908
13459
|
}, template: `
|
|
11909
|
-
<section
|
|
13460
|
+
<section
|
|
13461
|
+
class="pln-shell"
|
|
13462
|
+
[class.pln-warning]="severity === 'warning'"
|
|
13463
|
+
[class.pln-muted]="severity === 'muted'"
|
|
13464
|
+
[class.pln-plain]="appearance === 'plain'"
|
|
13465
|
+
>
|
|
11910
13466
|
<praxis-rich-text-block
|
|
11911
13467
|
[instanceId]="instanceId"
|
|
11912
13468
|
[analyticsId]="analyticsId"
|
|
@@ -11915,6 +13471,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
11915
13471
|
[subtitle]="subtitle"
|
|
11916
13472
|
[icon]="resolvedIcon"
|
|
11917
13473
|
[variant]="resolvedVariant"
|
|
13474
|
+
[appearance]="appearance === 'plain' ? 'plain' : 'card'"
|
|
11918
13475
|
[contentFormat]="contentFormat"
|
|
11919
13476
|
[content]="content"
|
|
11920
13477
|
></praxis-rich-text-block>
|
|
@@ -11931,7 +13488,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
11931
13488
|
</a>
|
|
11932
13489
|
</nav>
|
|
11933
13490
|
</section>
|
|
11934
|
-
`, 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{
|
|
13491
|
+
`, 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"] }]
|
|
11935
13492
|
}], propDecorators: { instanceId: [{
|
|
11936
13493
|
type: Input
|
|
11937
13494
|
}], analyticsId: [{
|
|
@@ -11948,6 +13505,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
11948
13505
|
type: Input
|
|
11949
13506
|
}], severity: [{
|
|
11950
13507
|
type: Input
|
|
13508
|
+
}], appearance: [{
|
|
13509
|
+
type: Input
|
|
11951
13510
|
}], links: [{
|
|
11952
13511
|
type: Input
|
|
11953
13512
|
}] } });
|
|
@@ -11968,6 +13527,7 @@ const PRAXIS_LEGAL_NOTICE_METADATA = {
|
|
|
11968
13527
|
{ name: 'contentFormat', type: "'plain' | 'markdown'", label: 'Formato do conteúdo', description: 'Formato editorial permitido para o corpo do aviso.', default: 'plain' },
|
|
11969
13528
|
{ name: 'content', type: 'string', label: 'Conteúdo', description: 'Corpo principal do aviso legal.' },
|
|
11970
13529
|
{ name: 'severity', type: "'info' | 'warning' | 'muted'", label: 'Severidade', description: 'Tom visual/semântico do aviso legal.', default: 'info' },
|
|
13530
|
+
{ name: 'appearance', type: "'card' | 'plain'", label: 'Aparência', description: 'Permite renderizar o aviso como card completo ou bloco embutido sem moldura.', default: 'card' },
|
|
11971
13531
|
{ name: 'links', type: 'EditorialLinkDefinition[]', label: 'Links', description: 'Links complementares do aviso, sempre normalizados pela policy editorial.' },
|
|
11972
13532
|
],
|
|
11973
13533
|
outputs: [],
|
|
@@ -12000,6 +13560,7 @@ const PRAXIS_RICH_TEXT_BLOCK_METADATA = {
|
|
|
12000
13560
|
{ name: 'subtitle', type: 'string', label: 'Subtítulo', description: 'Texto curto complementar abaixo do título.' },
|
|
12001
13561
|
{ name: 'icon', type: 'string', label: 'Ícone', description: 'Ícone Material Symbols exibido no cabeçalho do bloco.' },
|
|
12002
13562
|
{ name: 'variant', type: "'default' | 'emphasis' | 'subtle'", label: 'Variante', description: 'Variante visual do bloco editorial.', default: 'default' },
|
|
13563
|
+
{ 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' },
|
|
12003
13564
|
{ name: 'contentFormat', type: "'plain' | 'markdown'", label: 'Formato do conteúdo', description: 'Formato editorial permitido para renderização do conteúdo.', default: 'plain' },
|
|
12004
13565
|
{ name: 'content', type: 'string', label: 'Conteúdo', description: 'Corpo principal do bloco em plain text ou markdown seguro.' },
|
|
12005
13566
|
],
|
|
@@ -12024,6 +13585,7 @@ class PraxisUserContextSummaryComponent {
|
|
|
12024
13585
|
ariaLabel;
|
|
12025
13586
|
title;
|
|
12026
13587
|
subtitle;
|
|
13588
|
+
appearance = 'card';
|
|
12027
13589
|
source = 'context';
|
|
12028
13590
|
context = null;
|
|
12029
13591
|
fields = [];
|
|
@@ -12052,8 +13614,8 @@ class PraxisUserContextSummaryComponent {
|
|
|
12052
13614
|
return field.fallback || '-';
|
|
12053
13615
|
}
|
|
12054
13616
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisUserContextSummaryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12055
|
-
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: `
|
|
12056
|
-
<section class="pux-card">
|
|
13617
|
+
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: `
|
|
13618
|
+
<section class="pux-card" [class.pux-plain]="appearance === 'plain'">
|
|
12057
13619
|
<header class="pux-head" *ngIf="title || subtitle">
|
|
12058
13620
|
<h3 class="pux-title" *ngIf="title">{{ title }}</h3>
|
|
12059
13621
|
<p class="pux-subtitle" *ngIf="subtitle">{{ subtitle }}</p>
|
|
@@ -12074,7 +13636,7 @@ class PraxisUserContextSummaryComponent {
|
|
|
12074
13636
|
<button type="button" class="pux-action" (click)="emitAction()">{{ actionLabel }}</button>
|
|
12075
13637
|
</div>
|
|
12076
13638
|
</section>
|
|
12077
|
-
`, 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 });
|
|
13639
|
+
`, 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 });
|
|
12078
13640
|
}
|
|
12079
13641
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisUserContextSummaryComponent, decorators: [{
|
|
12080
13642
|
type: Component,
|
|
@@ -12085,7 +13647,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
12085
13647
|
'[attr.aria-label]': 'ariaLabel || null',
|
|
12086
13648
|
'[attr.role]': 'ariaLabel ? "region" : null',
|
|
12087
13649
|
}, template: `
|
|
12088
|
-
<section class="pux-card">
|
|
13650
|
+
<section class="pux-card" [class.pux-plain]="appearance === 'plain'">
|
|
12089
13651
|
<header class="pux-head" *ngIf="title || subtitle">
|
|
12090
13652
|
<h3 class="pux-title" *ngIf="title">{{ title }}</h3>
|
|
12091
13653
|
<p class="pux-subtitle" *ngIf="subtitle">{{ subtitle }}</p>
|
|
@@ -12106,7 +13668,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
12106
13668
|
<button type="button" class="pux-action" (click)="emitAction()">{{ actionLabel }}</button>
|
|
12107
13669
|
</div>
|
|
12108
13670
|
</section>
|
|
12109
|
-
`, 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"] }]
|
|
13671
|
+
`, 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"] }]
|
|
12110
13672
|
}], propDecorators: { instanceId: [{
|
|
12111
13673
|
type: Input
|
|
12112
13674
|
}], analyticsId: [{
|
|
@@ -12117,6 +13679,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
12117
13679
|
type: Input
|
|
12118
13680
|
}], subtitle: [{
|
|
12119
13681
|
type: Input
|
|
13682
|
+
}], appearance: [{
|
|
13683
|
+
type: Input
|
|
12120
13684
|
}], source: [{
|
|
12121
13685
|
type: Input
|
|
12122
13686
|
}], context: [{
|
|
@@ -12154,6 +13718,7 @@ const PRAXIS_USER_CONTEXT_SUMMARY_METADATA = {
|
|
|
12154
13718
|
{ name: 'ariaLabel', type: 'string', label: 'Aria Label', description: 'Rótulo acessível opcional do resumo contextual.' },
|
|
12155
13719
|
{ name: 'title', type: 'string', label: 'Título', description: 'Título principal do resumo.' },
|
|
12156
13720
|
{ name: 'subtitle', type: 'string', label: 'Subtítulo', description: 'Texto auxiliar explicando o contexto exibido.' },
|
|
13721
|
+
{ name: 'appearance', type: "'card' | 'plain'", label: 'Aparência', description: 'Define se o resumo contextual renderiza como card completo ou bloco mais leve.', default: 'card' },
|
|
12157
13722
|
{ name: 'source', type: "'context' | 'static'", label: 'Fonte', description: 'Origem dos dados do resumo contextual.', default: 'context' },
|
|
12158
13723
|
{ name: 'context', type: 'Record<string, unknown> | null', label: 'Contexto', description: 'Objeto tipado usado para resolver valuePath dos campos.' },
|
|
12159
13724
|
{ 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.' },
|
|
@@ -15545,5 +17110,5 @@ function provideHookWhitelist(allowed) {
|
|
|
15545
17110
|
* Generated bundle index. Do not edit.
|
|
15546
17111
|
*/
|
|
15547
17112
|
|
|
15548
|
-
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 };
|
|
17113
|
+
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 };
|
|
15549
17114
|
//# sourceMappingURL=praxisui-core.mjs.map
|