structra-ui 0.1.81 → 0.1.82

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.
@@ -246,6 +246,13 @@ var ButtonType;
246
246
  ButtonType["Submit"] = "submit";
247
247
  ButtonType["Reset"] = "reset";
248
248
  })(ButtonType || (ButtonType = {}));
249
+ /** Alinhamento horizontal do bloco `<app-button>` quando `fullWidth` é `false`. */
250
+ var ButtonAlign;
251
+ (function (ButtonAlign) {
252
+ ButtonAlign["Start"] = "start";
253
+ ButtonAlign["Center"] = "center";
254
+ ButtonAlign["End"] = "end";
255
+ })(ButtonAlign || (ButtonAlign = {}));
249
256
  /**
250
257
  * Base do botão; **não** exposta no barrel público `buttons`. Use `ButtonComponent` (`app-button`).
251
258
  */
@@ -264,6 +271,16 @@ class BaseButtonComponent {
264
271
  * `false`: largura só ao conteúdo (texto + padding).
265
272
  */
266
273
  this.fullWidth = true;
274
+ /**
275
+ * Posição horizontal do próprio `<app-button>` no pai quando `fullWidth="false"` (fluxo tipo bloco ou flex).
276
+ * Ignorado com `fullWidth="true"` (mantém igual ao comportamento anterior).
277
+ */
278
+ this.align = null;
279
+ /**
280
+ * Largura fixa em pixels do envoltório quando `fullWidth="false"`; `null`/≤0 não aplica estilo próprio de largura.
281
+ * Ignorado com `fullWidth="true"`.
282
+ */
283
+ this.widthPx = null;
267
284
  /** Placeholder de carregamento (skeleton no lugar do rótulo). */
268
285
  this.loading = false;
269
286
  /** Estilo visual base; pode ser estendido no SCSS do projeto. */
@@ -289,21 +306,43 @@ class BaseButtonComponent {
289
306
  if (this.fullWidth) {
290
307
  parts.push('base-button--full-width');
291
308
  }
309
+ else {
310
+ if (this.align != null) {
311
+ parts.push(`base-button--align-${this.align}`);
312
+ }
313
+ if (typeof this.widthPx === 'number' &&
314
+ Number.isFinite(this.widthPx) &&
315
+ this.widthPx > 0) {
316
+ parts.push('base-button--fixed-width');
317
+ }
318
+ }
292
319
  if (this.loading) {
293
320
  parts.push('base-button--loading');
294
321
  }
295
322
  return parts.join(' ');
296
323
  }
324
+ /** Largura fixa apenas com `fullWidth="false"` (inline para sobrepor `fit-content` dos modos align). */
325
+ get hostWidth() {
326
+ if (this.fullWidth) {
327
+ return null;
328
+ }
329
+ if (typeof this.widthPx === 'number' &&
330
+ Number.isFinite(this.widthPx) &&
331
+ this.widthPx > 0) {
332
+ return `${this.widthPx}px`;
333
+ }
334
+ return null;
335
+ }
297
336
  /** Foca o `<button>` nativo (o host do componente não é focável). */
298
337
  focusNative(options) {
299
338
  this.nativeBtn?.nativeElement?.focus(options);
300
339
  }
301
340
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: BaseButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
302
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: BaseButtonComponent, isStandalone: true, selector: "app-base-button", inputs: { type: "type", disabled: ["disabled", "disabled", booleanAttribute], readonly: ["readonly", "readonly", booleanAttribute], fullWidth: ["fullWidth", "fullWidth", booleanAttribute], loading: ["loading", "loading", booleanAttribute], variant: "variant", appearance: "appearance" }, host: { properties: { "class": "this.hostClasses" } }, viewQueries: [{ propertyName: "nativeBtn", first: true, predicate: ["nativeBtn"], descendants: true, read: ElementRef }], ngImport: i0, template: "@if (!loading) {\r\n<button\r\n #nativeBtn\r\n class=\"base-button__native\"\r\n [attr.type]=\"type\"\r\n [disabled]=\"disabled || readonly\"\r\n [attr.aria-readonly]=\"readonly ? true : null\"\r\n>\r\n <ng-content />\r\n</button>\r\n} @else {\r\n<div class=\"base-button__native base-button__native--skeleton\" role=\"status\" aria-live=\"polite\" aria-busy=\"true\"\r\n aria-label=\"A carregar\">\r\n <app-skeleton-block width=\"40%\" height=\"0.7rem\" radius=\"8px\" />\r\n</div>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{display:inline-block;width:fit-content;max-width:100%;box-sizing:border-box;vertical-align:middle}.base-button__native{-webkit-appearance:none;appearance:none;display:flex;width:auto;min-width:5rem;align-items:center;justify-content:center;text-align:center;gap:.5rem;min-height:2.5rem;padding:.5rem 1.25rem;margin:0;border:1px solid transparent;border-radius:var(--ui-field-float-border-radius, 14px);font:inherit;font-size:.9375rem;font-weight:600;line-height:1.25;cursor:pointer;user-select:none;-webkit-user-select:none;transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease,opacity .15s ease}:host(.base-button--full-width){display:block;width:auto;min-width:0;max-width:100%;box-sizing:border-box}:host(.base-button--full-width) .base-button__native{width:100%;min-width:0}.base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ui-field-float-focus-ring, rgba(43, 127, 217, .35))}:host(.base-button--primary) .base-button__native{color:var(--app-color-primary-contrast, #ffffff);background:var(--ui-field-float-border-focus, #2b7fd9);border-color:var(--ui-field-float-border-focus, #2b7fd9)}:host(.base-button--primary) .base-button__native:hover:not(:disabled){filter:brightness(.95)}:host(.base-button--secondary) .base-button__native{color:var(--ui-field-float-label-top-color, #4a6d8c);background:var(--ui-field-float-bg, #f3f7fb);border-color:var(--ui-field-float-border, #b6cce5)}:host(.base-button--secondary) .base-button__native:hover:not(:disabled){background:var(--app-color-button-secondary-hover-bg, #e8f0fa)}:host(.base-button--ghost) .base-button__native{color:var(--app-color-text-primary, #1a2f45);background:transparent;border-color:transparent;min-width:0;min-height:2.25rem;padding:.35rem .5rem;border-radius:8px;font-size:.95rem;font-weight:600;justify-content:flex-start;gap:.45rem}:host(.base-button--ghost) .base-button__native:hover:not(:disabled){color:var(--app-color-nav-link);background:color-mix(in srgb,var(--app-color-primary) 6%,transparent)}:host(.base-button--danger) .base-button__native{color:var(--app-color-error-contrast, #fff);background:var(--app-color-error, #b91c1c);border-color:var(--app-color-error-border, #dc2626)}:host(.base-button--danger) .base-button__native:hover:not(:disabled){filter:brightness(.95)}:host(.base-button--danger) .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--app-color-error-focus-ring, rgba(220, 38, 38, .35))}:host(.base-button--disabled:not(.base-button--readonly)) .base-button__native,.base-button__native:disabled:not([aria-readonly=true]){cursor:not-allowed;opacity:var(--ui-field-input-disabled-opacity, .65)}:host(.base-button--readonly) .base-button__native{cursor:default;opacity:1;color:var(--ui-field-readonly-button-text, #37474f);background:var(--ui-field-readonly-button-bg, #cfd8dc);border-color:var(--ui-field-readonly-button-border, #90a4ae)}:host(.base-button--readonly) .base-button__native:hover:not(:disabled){filter:brightness(.97)}:host(.base-button--readonly) .base-button__native:focus-visible{box-shadow:0 0 0 3px var(--ui-field-readonly-button-focus-ring, rgba(96, 125, 139, .35))}.base-button__native--skeleton{pointer-events:none;cursor:default}:host(.base-button--primary.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--ui-field-float-border-focus, #2b7fd9) 82%,#ffffff);border-color:color-mix(in srgb,var(--ui-field-float-border-focus, #2b7fd9) 82%,#ffffff)}:host(.base-button--secondary.base-button--loading) .base-button__native--skeleton{background:var(--ui-field-float-bg, #f3f7fb);border-color:var(--ui-field-float-border, #b6cce5)}:host(.base-button--ghost.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--app-color-text-primary, #1a2f45) 8%,transparent);border-color:transparent}:host(.base-button--danger.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--app-color-error, #b91c1c) 82%,#ffffff);border-color:color-mix(in srgb,var(--app-color-error-border, #dc2626) 88%,#ffffff)}\n"], dependencies: [{ kind: "component", type: SkeletonBlockComponent, selector: "app-skeleton-block", inputs: ["width", "height", "radius", "animate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
341
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: BaseButtonComponent, isStandalone: true, selector: "app-base-button", inputs: { type: "type", disabled: ["disabled", "disabled", booleanAttribute], readonly: ["readonly", "readonly", booleanAttribute], fullWidth: ["fullWidth", "fullWidth", booleanAttribute], align: "align", widthPx: "widthPx", loading: ["loading", "loading", booleanAttribute], variant: "variant", appearance: "appearance" }, host: { properties: { "class": "this.hostClasses", "style.width": "this.hostWidth" } }, viewQueries: [{ propertyName: "nativeBtn", first: true, predicate: ["nativeBtn"], descendants: true, read: ElementRef }], ngImport: i0, template: "@if (!loading) {\r\n<button\r\n #nativeBtn\r\n class=\"base-button__native\"\r\n [attr.type]=\"type\"\r\n [disabled]=\"disabled || readonly\"\r\n [attr.aria-readonly]=\"readonly ? true : null\"\r\n>\r\n <ng-content />\r\n</button>\r\n} @else {\r\n<div class=\"base-button__native base-button__native--skeleton\" role=\"status\" aria-live=\"polite\" aria-busy=\"true\"\r\n aria-label=\"A carregar\">\r\n <app-skeleton-block width=\"40%\" height=\"0.7rem\" radius=\"8px\" />\r\n</div>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{display:inline-block;width:fit-content;max-width:100%;box-sizing:border-box;vertical-align:middle}.base-button__native{-webkit-appearance:none;appearance:none;display:flex;width:auto;min-width:5rem;align-items:center;justify-content:center;text-align:center;gap:.5rem;min-height:2.5rem;padding:.5rem 1.25rem;margin:0;border:1px solid transparent;border-radius:var(--ui-field-float-border-radius, 14px);font:inherit;font-size:.9375rem;font-weight:600;line-height:1.25;cursor:pointer;user-select:none;-webkit-user-select:none;transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease,opacity .15s ease}:host(.base-button--full-width){display:block;width:auto;min-width:0;max-width:100%;box-sizing:border-box}:host(.base-button--full-width) .base-button__native{width:100%;min-width:0}:host(.base-button--fixed-width):not(.base-button--full-width) .base-button__native{width:100%;min-width:0}:host(.base-button--align-start):not(.base-button--full-width){display:inline-block;width:fit-content;max-width:100%;margin-inline:0;vertical-align:middle}:host(.base-button--align-center):not(.base-button--full-width){display:block;width:fit-content;max-width:100%;margin-inline:auto}:host(.base-button--align-end):not(.base-button--full-width){display:block;width:fit-content;max-width:100%;margin-inline-start:auto;margin-inline-end:0}.base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ui-field-float-focus-ring, rgba(43, 127, 217, .35))}:host(.base-button--primary) .base-button__native{color:var(--app-color-primary-contrast, #ffffff);background:var(--ui-field-float-border-focus, #2b7fd9);border-color:var(--ui-field-float-border-focus, #2b7fd9)}:host(.base-button--primary) .base-button__native:hover:not(:disabled){filter:brightness(.95)}:host(.base-button--secondary) .base-button__native{color:var(--ui-field-float-label-top-color, #4a6d8c);background:var(--ui-field-float-bg, #f3f7fb);border-color:var(--ui-field-float-border, #b6cce5)}:host(.base-button--secondary) .base-button__native:hover:not(:disabled){background:var(--app-color-button-secondary-hover-bg, #e8f0fa)}:host(.base-button--ghost) .base-button__native{color:var(--app-color-text-primary, #1a2f45);background:transparent;border-color:transparent;min-width:0;min-height:2.25rem;padding:.35rem .5rem;border-radius:8px;font-size:.95rem;font-weight:600;justify-content:flex-start;gap:.45rem}:host(.base-button--ghost) .base-button__native:hover:not(:disabled){color:var(--app-color-nav-link);background:color-mix(in srgb,var(--app-color-primary) 6%,transparent)}:host(.base-button--danger) .base-button__native{color:var(--app-color-error-contrast, #fff);background:var(--app-color-error, #b91c1c);border-color:var(--app-color-error-border, #dc2626)}:host(.base-button--danger) .base-button__native:hover:not(:disabled){filter:brightness(.95)}:host(.base-button--danger) .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--app-color-error-focus-ring, rgba(220, 38, 38, .35))}:host(.base-button--disabled:not(.base-button--readonly)) .base-button__native,.base-button__native:disabled:not([aria-readonly=true]){cursor:not-allowed;opacity:var(--ui-field-input-disabled-opacity, .65)}:host(.base-button--readonly) .base-button__native{cursor:default;opacity:1;color:var(--ui-field-readonly-button-text, #37474f);background:var(--ui-field-readonly-button-bg, #cfd8dc);border-color:var(--ui-field-readonly-button-border, #90a4ae)}:host(.base-button--readonly) .base-button__native:hover:not(:disabled){filter:brightness(.97)}:host(.base-button--readonly) .base-button__native:focus-visible{box-shadow:0 0 0 3px var(--ui-field-readonly-button-focus-ring, rgba(96, 125, 139, .35))}.base-button__native--skeleton{pointer-events:none;cursor:default}:host(.base-button--primary.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--ui-field-float-border-focus, #2b7fd9) 82%,#ffffff);border-color:color-mix(in srgb,var(--ui-field-float-border-focus, #2b7fd9) 82%,#ffffff)}:host(.base-button--secondary.base-button--loading) .base-button__native--skeleton{background:var(--ui-field-float-bg, #f3f7fb);border-color:var(--ui-field-float-border, #b6cce5)}:host(.base-button--ghost.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--app-color-text-primary, #1a2f45) 8%,transparent);border-color:transparent}:host(.base-button--danger.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--app-color-error, #b91c1c) 82%,#ffffff);border-color:color-mix(in srgb,var(--app-color-error-border, #dc2626) 88%,#ffffff)}\n"], dependencies: [{ kind: "component", type: SkeletonBlockComponent, selector: "app-skeleton-block", inputs: ["width", "height", "radius", "animate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
303
342
  }
304
343
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: BaseButtonComponent, decorators: [{
305
344
  type: Component,
306
- args: [{ selector: 'app-base-button', standalone: true, imports: [SkeletonBlockComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (!loading) {\r\n<button\r\n #nativeBtn\r\n class=\"base-button__native\"\r\n [attr.type]=\"type\"\r\n [disabled]=\"disabled || readonly\"\r\n [attr.aria-readonly]=\"readonly ? true : null\"\r\n>\r\n <ng-content />\r\n</button>\r\n} @else {\r\n<div class=\"base-button__native base-button__native--skeleton\" role=\"status\" aria-live=\"polite\" aria-busy=\"true\"\r\n aria-label=\"A carregar\">\r\n <app-skeleton-block width=\"40%\" height=\"0.7rem\" radius=\"8px\" />\r\n</div>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{display:inline-block;width:fit-content;max-width:100%;box-sizing:border-box;vertical-align:middle}.base-button__native{-webkit-appearance:none;appearance:none;display:flex;width:auto;min-width:5rem;align-items:center;justify-content:center;text-align:center;gap:.5rem;min-height:2.5rem;padding:.5rem 1.25rem;margin:0;border:1px solid transparent;border-radius:var(--ui-field-float-border-radius, 14px);font:inherit;font-size:.9375rem;font-weight:600;line-height:1.25;cursor:pointer;user-select:none;-webkit-user-select:none;transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease,opacity .15s ease}:host(.base-button--full-width){display:block;width:auto;min-width:0;max-width:100%;box-sizing:border-box}:host(.base-button--full-width) .base-button__native{width:100%;min-width:0}.base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ui-field-float-focus-ring, rgba(43, 127, 217, .35))}:host(.base-button--primary) .base-button__native{color:var(--app-color-primary-contrast, #ffffff);background:var(--ui-field-float-border-focus, #2b7fd9);border-color:var(--ui-field-float-border-focus, #2b7fd9)}:host(.base-button--primary) .base-button__native:hover:not(:disabled){filter:brightness(.95)}:host(.base-button--secondary) .base-button__native{color:var(--ui-field-float-label-top-color, #4a6d8c);background:var(--ui-field-float-bg, #f3f7fb);border-color:var(--ui-field-float-border, #b6cce5)}:host(.base-button--secondary) .base-button__native:hover:not(:disabled){background:var(--app-color-button-secondary-hover-bg, #e8f0fa)}:host(.base-button--ghost) .base-button__native{color:var(--app-color-text-primary, #1a2f45);background:transparent;border-color:transparent;min-width:0;min-height:2.25rem;padding:.35rem .5rem;border-radius:8px;font-size:.95rem;font-weight:600;justify-content:flex-start;gap:.45rem}:host(.base-button--ghost) .base-button__native:hover:not(:disabled){color:var(--app-color-nav-link);background:color-mix(in srgb,var(--app-color-primary) 6%,transparent)}:host(.base-button--danger) .base-button__native{color:var(--app-color-error-contrast, #fff);background:var(--app-color-error, #b91c1c);border-color:var(--app-color-error-border, #dc2626)}:host(.base-button--danger) .base-button__native:hover:not(:disabled){filter:brightness(.95)}:host(.base-button--danger) .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--app-color-error-focus-ring, rgba(220, 38, 38, .35))}:host(.base-button--disabled:not(.base-button--readonly)) .base-button__native,.base-button__native:disabled:not([aria-readonly=true]){cursor:not-allowed;opacity:var(--ui-field-input-disabled-opacity, .65)}:host(.base-button--readonly) .base-button__native{cursor:default;opacity:1;color:var(--ui-field-readonly-button-text, #37474f);background:var(--ui-field-readonly-button-bg, #cfd8dc);border-color:var(--ui-field-readonly-button-border, #90a4ae)}:host(.base-button--readonly) .base-button__native:hover:not(:disabled){filter:brightness(.97)}:host(.base-button--readonly) .base-button__native:focus-visible{box-shadow:0 0 0 3px var(--ui-field-readonly-button-focus-ring, rgba(96, 125, 139, .35))}.base-button__native--skeleton{pointer-events:none;cursor:default}:host(.base-button--primary.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--ui-field-float-border-focus, #2b7fd9) 82%,#ffffff);border-color:color-mix(in srgb,var(--ui-field-float-border-focus, #2b7fd9) 82%,#ffffff)}:host(.base-button--secondary.base-button--loading) .base-button__native--skeleton{background:var(--ui-field-float-bg, #f3f7fb);border-color:var(--ui-field-float-border, #b6cce5)}:host(.base-button--ghost.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--app-color-text-primary, #1a2f45) 8%,transparent);border-color:transparent}:host(.base-button--danger.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--app-color-error, #b91c1c) 82%,#ffffff);border-color:color-mix(in srgb,var(--app-color-error-border, #dc2626) 88%,#ffffff)}\n"] }]
345
+ args: [{ selector: 'app-base-button', standalone: true, imports: [SkeletonBlockComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (!loading) {\r\n<button\r\n #nativeBtn\r\n class=\"base-button__native\"\r\n [attr.type]=\"type\"\r\n [disabled]=\"disabled || readonly\"\r\n [attr.aria-readonly]=\"readonly ? true : null\"\r\n>\r\n <ng-content />\r\n</button>\r\n} @else {\r\n<div class=\"base-button__native base-button__native--skeleton\" role=\"status\" aria-live=\"polite\" aria-busy=\"true\"\r\n aria-label=\"A carregar\">\r\n <app-skeleton-block width=\"40%\" height=\"0.7rem\" radius=\"8px\" />\r\n</div>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{display:inline-block;width:fit-content;max-width:100%;box-sizing:border-box;vertical-align:middle}.base-button__native{-webkit-appearance:none;appearance:none;display:flex;width:auto;min-width:5rem;align-items:center;justify-content:center;text-align:center;gap:.5rem;min-height:2.5rem;padding:.5rem 1.25rem;margin:0;border:1px solid transparent;border-radius:var(--ui-field-float-border-radius, 14px);font:inherit;font-size:.9375rem;font-weight:600;line-height:1.25;cursor:pointer;user-select:none;-webkit-user-select:none;transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease,opacity .15s ease}:host(.base-button--full-width){display:block;width:auto;min-width:0;max-width:100%;box-sizing:border-box}:host(.base-button--full-width) .base-button__native{width:100%;min-width:0}:host(.base-button--fixed-width):not(.base-button--full-width) .base-button__native{width:100%;min-width:0}:host(.base-button--align-start):not(.base-button--full-width){display:inline-block;width:fit-content;max-width:100%;margin-inline:0;vertical-align:middle}:host(.base-button--align-center):not(.base-button--full-width){display:block;width:fit-content;max-width:100%;margin-inline:auto}:host(.base-button--align-end):not(.base-button--full-width){display:block;width:fit-content;max-width:100%;margin-inline-start:auto;margin-inline-end:0}.base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ui-field-float-focus-ring, rgba(43, 127, 217, .35))}:host(.base-button--primary) .base-button__native{color:var(--app-color-primary-contrast, #ffffff);background:var(--ui-field-float-border-focus, #2b7fd9);border-color:var(--ui-field-float-border-focus, #2b7fd9)}:host(.base-button--primary) .base-button__native:hover:not(:disabled){filter:brightness(.95)}:host(.base-button--secondary) .base-button__native{color:var(--ui-field-float-label-top-color, #4a6d8c);background:var(--ui-field-float-bg, #f3f7fb);border-color:var(--ui-field-float-border, #b6cce5)}:host(.base-button--secondary) .base-button__native:hover:not(:disabled){background:var(--app-color-button-secondary-hover-bg, #e8f0fa)}:host(.base-button--ghost) .base-button__native{color:var(--app-color-text-primary, #1a2f45);background:transparent;border-color:transparent;min-width:0;min-height:2.25rem;padding:.35rem .5rem;border-radius:8px;font-size:.95rem;font-weight:600;justify-content:flex-start;gap:.45rem}:host(.base-button--ghost) .base-button__native:hover:not(:disabled){color:var(--app-color-nav-link);background:color-mix(in srgb,var(--app-color-primary) 6%,transparent)}:host(.base-button--danger) .base-button__native{color:var(--app-color-error-contrast, #fff);background:var(--app-color-error, #b91c1c);border-color:var(--app-color-error-border, #dc2626)}:host(.base-button--danger) .base-button__native:hover:not(:disabled){filter:brightness(.95)}:host(.base-button--danger) .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--app-color-error-focus-ring, rgba(220, 38, 38, .35))}:host(.base-button--disabled:not(.base-button--readonly)) .base-button__native,.base-button__native:disabled:not([aria-readonly=true]){cursor:not-allowed;opacity:var(--ui-field-input-disabled-opacity, .65)}:host(.base-button--readonly) .base-button__native{cursor:default;opacity:1;color:var(--ui-field-readonly-button-text, #37474f);background:var(--ui-field-readonly-button-bg, #cfd8dc);border-color:var(--ui-field-readonly-button-border, #90a4ae)}:host(.base-button--readonly) .base-button__native:hover:not(:disabled){filter:brightness(.97)}:host(.base-button--readonly) .base-button__native:focus-visible{box-shadow:0 0 0 3px var(--ui-field-readonly-button-focus-ring, rgba(96, 125, 139, .35))}.base-button__native--skeleton{pointer-events:none;cursor:default}:host(.base-button--primary.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--ui-field-float-border-focus, #2b7fd9) 82%,#ffffff);border-color:color-mix(in srgb,var(--ui-field-float-border-focus, #2b7fd9) 82%,#ffffff)}:host(.base-button--secondary.base-button--loading) .base-button__native--skeleton{background:var(--ui-field-float-bg, #f3f7fb);border-color:var(--ui-field-float-border, #b6cce5)}:host(.base-button--ghost.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--app-color-text-primary, #1a2f45) 8%,transparent);border-color:transparent}:host(.base-button--danger.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--app-color-error, #b91c1c) 82%,#ffffff);border-color:color-mix(in srgb,var(--app-color-error-border, #dc2626) 88%,#ffffff)}\n"] }]
307
346
  }], propDecorators: { nativeBtn: [{
308
347
  type: ViewChild,
309
348
  args: ['nativeBtn', { read: ElementRef }]
@@ -318,6 +357,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
318
357
  }], fullWidth: [{
319
358
  type: Input,
320
359
  args: [{ transform: booleanAttribute }]
360
+ }], align: [{
361
+ type: Input
362
+ }], widthPx: [{
363
+ type: Input
321
364
  }], loading: [{
322
365
  type: Input,
323
366
  args: [{ transform: booleanAttribute }]
@@ -329,6 +372,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
329
372
  }], hostClasses: [{
330
373
  type: HostBinding,
331
374
  args: ['class']
375
+ }], hostWidth: [{
376
+ type: HostBinding,
377
+ args: ['style.width']
332
378
  }] } });
333
379
 
334
380
  /**
@@ -337,11 +383,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
337
383
  */
338
384
  class ButtonComponent extends BaseButtonComponent {
339
385
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
340
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: ButtonComponent, isStandalone: true, selector: "app-button", usesInheritance: true, ngImport: i0, template: "@if (!loading) {\r\n<button\r\n #nativeBtn\r\n class=\"base-button__native\"\r\n [attr.type]=\"type\"\r\n [disabled]=\"disabled || readonly\"\r\n [attr.aria-readonly]=\"readonly ? true : null\"\r\n>\r\n <ng-content />\r\n</button>\r\n} @else {\r\n<div class=\"base-button__native base-button__native--skeleton\" role=\"status\" aria-live=\"polite\" aria-busy=\"true\"\r\n aria-label=\"A carregar\">\r\n <app-skeleton-block width=\"40%\" height=\"0.7rem\" radius=\"8px\" />\r\n</div>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{display:inline-block;width:fit-content;max-width:100%;box-sizing:border-box;vertical-align:middle}.base-button__native{-webkit-appearance:none;appearance:none;display:flex;width:auto;min-width:5rem;align-items:center;justify-content:center;text-align:center;gap:.5rem;min-height:2.5rem;padding:.5rem 1.25rem;margin:0;border:1px solid transparent;border-radius:var(--ui-field-float-border-radius, 14px);font:inherit;font-size:.9375rem;font-weight:600;line-height:1.25;cursor:pointer;user-select:none;-webkit-user-select:none;transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease,opacity .15s ease}:host(.base-button--full-width){display:block;width:auto;min-width:0;max-width:100%;box-sizing:border-box}:host(.base-button--full-width) .base-button__native{width:100%;min-width:0}.base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ui-field-float-focus-ring, rgba(43, 127, 217, .35))}:host(.base-button--primary) .base-button__native{color:var(--app-color-primary-contrast, #ffffff);background:var(--ui-field-float-border-focus, #2b7fd9);border-color:var(--ui-field-float-border-focus, #2b7fd9)}:host(.base-button--primary) .base-button__native:hover:not(:disabled){filter:brightness(.95)}:host(.base-button--secondary) .base-button__native{color:var(--ui-field-float-label-top-color, #4a6d8c);background:var(--ui-field-float-bg, #f3f7fb);border-color:var(--ui-field-float-border, #b6cce5)}:host(.base-button--secondary) .base-button__native:hover:not(:disabled){background:var(--app-color-button-secondary-hover-bg, #e8f0fa)}:host(.base-button--ghost) .base-button__native{color:var(--app-color-text-primary, #1a2f45);background:transparent;border-color:transparent;min-width:0;min-height:2.25rem;padding:.35rem .5rem;border-radius:8px;font-size:.95rem;font-weight:600;justify-content:flex-start;gap:.45rem}:host(.base-button--ghost) .base-button__native:hover:not(:disabled){color:var(--app-color-nav-link);background:color-mix(in srgb,var(--app-color-primary) 6%,transparent)}:host(.base-button--danger) .base-button__native{color:var(--app-color-error-contrast, #fff);background:var(--app-color-error, #b91c1c);border-color:var(--app-color-error-border, #dc2626)}:host(.base-button--danger) .base-button__native:hover:not(:disabled){filter:brightness(.95)}:host(.base-button--danger) .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--app-color-error-focus-ring, rgba(220, 38, 38, .35))}:host(.base-button--disabled:not(.base-button--readonly)) .base-button__native,.base-button__native:disabled:not([aria-readonly=true]){cursor:not-allowed;opacity:var(--ui-field-input-disabled-opacity, .65)}:host(.base-button--readonly) .base-button__native{cursor:default;opacity:1;color:var(--ui-field-readonly-button-text, #37474f);background:var(--ui-field-readonly-button-bg, #cfd8dc);border-color:var(--ui-field-readonly-button-border, #90a4ae)}:host(.base-button--readonly) .base-button__native:hover:not(:disabled){filter:brightness(.97)}:host(.base-button--readonly) .base-button__native:focus-visible{box-shadow:0 0 0 3px var(--ui-field-readonly-button-focus-ring, rgba(96, 125, 139, .35))}.base-button__native--skeleton{pointer-events:none;cursor:default}:host(.base-button--primary.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--ui-field-float-border-focus, #2b7fd9) 82%,#ffffff);border-color:color-mix(in srgb,var(--ui-field-float-border-focus, #2b7fd9) 82%,#ffffff)}:host(.base-button--secondary.base-button--loading) .base-button__native--skeleton{background:var(--ui-field-float-bg, #f3f7fb);border-color:var(--ui-field-float-border, #b6cce5)}:host(.base-button--ghost.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--app-color-text-primary, #1a2f45) 8%,transparent);border-color:transparent}:host(.base-button--danger.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--app-color-error, #b91c1c) 82%,#ffffff);border-color:color-mix(in srgb,var(--app-color-error-border, #dc2626) 88%,#ffffff)}\n"], dependencies: [{ kind: "component", type: SkeletonBlockComponent, selector: "app-skeleton-block", inputs: ["width", "height", "radius", "animate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
386
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: ButtonComponent, isStandalone: true, selector: "app-button", usesInheritance: true, ngImport: i0, template: "@if (!loading) {\r\n<button\r\n #nativeBtn\r\n class=\"base-button__native\"\r\n [attr.type]=\"type\"\r\n [disabled]=\"disabled || readonly\"\r\n [attr.aria-readonly]=\"readonly ? true : null\"\r\n>\r\n <ng-content />\r\n</button>\r\n} @else {\r\n<div class=\"base-button__native base-button__native--skeleton\" role=\"status\" aria-live=\"polite\" aria-busy=\"true\"\r\n aria-label=\"A carregar\">\r\n <app-skeleton-block width=\"40%\" height=\"0.7rem\" radius=\"8px\" />\r\n</div>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{display:inline-block;width:fit-content;max-width:100%;box-sizing:border-box;vertical-align:middle}.base-button__native{-webkit-appearance:none;appearance:none;display:flex;width:auto;min-width:5rem;align-items:center;justify-content:center;text-align:center;gap:.5rem;min-height:2.5rem;padding:.5rem 1.25rem;margin:0;border:1px solid transparent;border-radius:var(--ui-field-float-border-radius, 14px);font:inherit;font-size:.9375rem;font-weight:600;line-height:1.25;cursor:pointer;user-select:none;-webkit-user-select:none;transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease,opacity .15s ease}:host(.base-button--full-width){display:block;width:auto;min-width:0;max-width:100%;box-sizing:border-box}:host(.base-button--full-width) .base-button__native{width:100%;min-width:0}:host(.base-button--fixed-width):not(.base-button--full-width) .base-button__native{width:100%;min-width:0}:host(.base-button--align-start):not(.base-button--full-width){display:inline-block;width:fit-content;max-width:100%;margin-inline:0;vertical-align:middle}:host(.base-button--align-center):not(.base-button--full-width){display:block;width:fit-content;max-width:100%;margin-inline:auto}:host(.base-button--align-end):not(.base-button--full-width){display:block;width:fit-content;max-width:100%;margin-inline-start:auto;margin-inline-end:0}.base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ui-field-float-focus-ring, rgba(43, 127, 217, .35))}:host(.base-button--primary) .base-button__native{color:var(--app-color-primary-contrast, #ffffff);background:var(--ui-field-float-border-focus, #2b7fd9);border-color:var(--ui-field-float-border-focus, #2b7fd9)}:host(.base-button--primary) .base-button__native:hover:not(:disabled){filter:brightness(.95)}:host(.base-button--secondary) .base-button__native{color:var(--ui-field-float-label-top-color, #4a6d8c);background:var(--ui-field-float-bg, #f3f7fb);border-color:var(--ui-field-float-border, #b6cce5)}:host(.base-button--secondary) .base-button__native:hover:not(:disabled){background:var(--app-color-button-secondary-hover-bg, #e8f0fa)}:host(.base-button--ghost) .base-button__native{color:var(--app-color-text-primary, #1a2f45);background:transparent;border-color:transparent;min-width:0;min-height:2.25rem;padding:.35rem .5rem;border-radius:8px;font-size:.95rem;font-weight:600;justify-content:flex-start;gap:.45rem}:host(.base-button--ghost) .base-button__native:hover:not(:disabled){color:var(--app-color-nav-link);background:color-mix(in srgb,var(--app-color-primary) 6%,transparent)}:host(.base-button--danger) .base-button__native{color:var(--app-color-error-contrast, #fff);background:var(--app-color-error, #b91c1c);border-color:var(--app-color-error-border, #dc2626)}:host(.base-button--danger) .base-button__native:hover:not(:disabled){filter:brightness(.95)}:host(.base-button--danger) .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--app-color-error-focus-ring, rgba(220, 38, 38, .35))}:host(.base-button--disabled:not(.base-button--readonly)) .base-button__native,.base-button__native:disabled:not([aria-readonly=true]){cursor:not-allowed;opacity:var(--ui-field-input-disabled-opacity, .65)}:host(.base-button--readonly) .base-button__native{cursor:default;opacity:1;color:var(--ui-field-readonly-button-text, #37474f);background:var(--ui-field-readonly-button-bg, #cfd8dc);border-color:var(--ui-field-readonly-button-border, #90a4ae)}:host(.base-button--readonly) .base-button__native:hover:not(:disabled){filter:brightness(.97)}:host(.base-button--readonly) .base-button__native:focus-visible{box-shadow:0 0 0 3px var(--ui-field-readonly-button-focus-ring, rgba(96, 125, 139, .35))}.base-button__native--skeleton{pointer-events:none;cursor:default}:host(.base-button--primary.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--ui-field-float-border-focus, #2b7fd9) 82%,#ffffff);border-color:color-mix(in srgb,var(--ui-field-float-border-focus, #2b7fd9) 82%,#ffffff)}:host(.base-button--secondary.base-button--loading) .base-button__native--skeleton{background:var(--ui-field-float-bg, #f3f7fb);border-color:var(--ui-field-float-border, #b6cce5)}:host(.base-button--ghost.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--app-color-text-primary, #1a2f45) 8%,transparent);border-color:transparent}:host(.base-button--danger.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--app-color-error, #b91c1c) 82%,#ffffff);border-color:color-mix(in srgb,var(--app-color-error-border, #dc2626) 88%,#ffffff)}\n"], dependencies: [{ kind: "component", type: SkeletonBlockComponent, selector: "app-skeleton-block", inputs: ["width", "height", "radius", "animate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
341
387
  }
342
388
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ButtonComponent, decorators: [{
343
389
  type: Component,
344
- args: [{ selector: 'app-button', standalone: true, imports: [SkeletonBlockComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (!loading) {\r\n<button\r\n #nativeBtn\r\n class=\"base-button__native\"\r\n [attr.type]=\"type\"\r\n [disabled]=\"disabled || readonly\"\r\n [attr.aria-readonly]=\"readonly ? true : null\"\r\n>\r\n <ng-content />\r\n</button>\r\n} @else {\r\n<div class=\"base-button__native base-button__native--skeleton\" role=\"status\" aria-live=\"polite\" aria-busy=\"true\"\r\n aria-label=\"A carregar\">\r\n <app-skeleton-block width=\"40%\" height=\"0.7rem\" radius=\"8px\" />\r\n</div>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{display:inline-block;width:fit-content;max-width:100%;box-sizing:border-box;vertical-align:middle}.base-button__native{-webkit-appearance:none;appearance:none;display:flex;width:auto;min-width:5rem;align-items:center;justify-content:center;text-align:center;gap:.5rem;min-height:2.5rem;padding:.5rem 1.25rem;margin:0;border:1px solid transparent;border-radius:var(--ui-field-float-border-radius, 14px);font:inherit;font-size:.9375rem;font-weight:600;line-height:1.25;cursor:pointer;user-select:none;-webkit-user-select:none;transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease,opacity .15s ease}:host(.base-button--full-width){display:block;width:auto;min-width:0;max-width:100%;box-sizing:border-box}:host(.base-button--full-width) .base-button__native{width:100%;min-width:0}.base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ui-field-float-focus-ring, rgba(43, 127, 217, .35))}:host(.base-button--primary) .base-button__native{color:var(--app-color-primary-contrast, #ffffff);background:var(--ui-field-float-border-focus, #2b7fd9);border-color:var(--ui-field-float-border-focus, #2b7fd9)}:host(.base-button--primary) .base-button__native:hover:not(:disabled){filter:brightness(.95)}:host(.base-button--secondary) .base-button__native{color:var(--ui-field-float-label-top-color, #4a6d8c);background:var(--ui-field-float-bg, #f3f7fb);border-color:var(--ui-field-float-border, #b6cce5)}:host(.base-button--secondary) .base-button__native:hover:not(:disabled){background:var(--app-color-button-secondary-hover-bg, #e8f0fa)}:host(.base-button--ghost) .base-button__native{color:var(--app-color-text-primary, #1a2f45);background:transparent;border-color:transparent;min-width:0;min-height:2.25rem;padding:.35rem .5rem;border-radius:8px;font-size:.95rem;font-weight:600;justify-content:flex-start;gap:.45rem}:host(.base-button--ghost) .base-button__native:hover:not(:disabled){color:var(--app-color-nav-link);background:color-mix(in srgb,var(--app-color-primary) 6%,transparent)}:host(.base-button--danger) .base-button__native{color:var(--app-color-error-contrast, #fff);background:var(--app-color-error, #b91c1c);border-color:var(--app-color-error-border, #dc2626)}:host(.base-button--danger) .base-button__native:hover:not(:disabled){filter:brightness(.95)}:host(.base-button--danger) .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--app-color-error-focus-ring, rgba(220, 38, 38, .35))}:host(.base-button--disabled:not(.base-button--readonly)) .base-button__native,.base-button__native:disabled:not([aria-readonly=true]){cursor:not-allowed;opacity:var(--ui-field-input-disabled-opacity, .65)}:host(.base-button--readonly) .base-button__native{cursor:default;opacity:1;color:var(--ui-field-readonly-button-text, #37474f);background:var(--ui-field-readonly-button-bg, #cfd8dc);border-color:var(--ui-field-readonly-button-border, #90a4ae)}:host(.base-button--readonly) .base-button__native:hover:not(:disabled){filter:brightness(.97)}:host(.base-button--readonly) .base-button__native:focus-visible{box-shadow:0 0 0 3px var(--ui-field-readonly-button-focus-ring, rgba(96, 125, 139, .35))}.base-button__native--skeleton{pointer-events:none;cursor:default}:host(.base-button--primary.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--ui-field-float-border-focus, #2b7fd9) 82%,#ffffff);border-color:color-mix(in srgb,var(--ui-field-float-border-focus, #2b7fd9) 82%,#ffffff)}:host(.base-button--secondary.base-button--loading) .base-button__native--skeleton{background:var(--ui-field-float-bg, #f3f7fb);border-color:var(--ui-field-float-border, #b6cce5)}:host(.base-button--ghost.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--app-color-text-primary, #1a2f45) 8%,transparent);border-color:transparent}:host(.base-button--danger.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--app-color-error, #b91c1c) 82%,#ffffff);border-color:color-mix(in srgb,var(--app-color-error-border, #dc2626) 88%,#ffffff)}\n"] }]
390
+ args: [{ selector: 'app-button', standalone: true, imports: [SkeletonBlockComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (!loading) {\r\n<button\r\n #nativeBtn\r\n class=\"base-button__native\"\r\n [attr.type]=\"type\"\r\n [disabled]=\"disabled || readonly\"\r\n [attr.aria-readonly]=\"readonly ? true : null\"\r\n>\r\n <ng-content />\r\n</button>\r\n} @else {\r\n<div class=\"base-button__native base-button__native--skeleton\" role=\"status\" aria-live=\"polite\" aria-busy=\"true\"\r\n aria-label=\"A carregar\">\r\n <app-skeleton-block width=\"40%\" height=\"0.7rem\" radius=\"8px\" />\r\n</div>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{display:inline-block;width:fit-content;max-width:100%;box-sizing:border-box;vertical-align:middle}.base-button__native{-webkit-appearance:none;appearance:none;display:flex;width:auto;min-width:5rem;align-items:center;justify-content:center;text-align:center;gap:.5rem;min-height:2.5rem;padding:.5rem 1.25rem;margin:0;border:1px solid transparent;border-radius:var(--ui-field-float-border-radius, 14px);font:inherit;font-size:.9375rem;font-weight:600;line-height:1.25;cursor:pointer;user-select:none;-webkit-user-select:none;transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease,opacity .15s ease}:host(.base-button--full-width){display:block;width:auto;min-width:0;max-width:100%;box-sizing:border-box}:host(.base-button--full-width) .base-button__native{width:100%;min-width:0}:host(.base-button--fixed-width):not(.base-button--full-width) .base-button__native{width:100%;min-width:0}:host(.base-button--align-start):not(.base-button--full-width){display:inline-block;width:fit-content;max-width:100%;margin-inline:0;vertical-align:middle}:host(.base-button--align-center):not(.base-button--full-width){display:block;width:fit-content;max-width:100%;margin-inline:auto}:host(.base-button--align-end):not(.base-button--full-width){display:block;width:fit-content;max-width:100%;margin-inline-start:auto;margin-inline-end:0}.base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ui-field-float-focus-ring, rgba(43, 127, 217, .35))}:host(.base-button--primary) .base-button__native{color:var(--app-color-primary-contrast, #ffffff);background:var(--ui-field-float-border-focus, #2b7fd9);border-color:var(--ui-field-float-border-focus, #2b7fd9)}:host(.base-button--primary) .base-button__native:hover:not(:disabled){filter:brightness(.95)}:host(.base-button--secondary) .base-button__native{color:var(--ui-field-float-label-top-color, #4a6d8c);background:var(--ui-field-float-bg, #f3f7fb);border-color:var(--ui-field-float-border, #b6cce5)}:host(.base-button--secondary) .base-button__native:hover:not(:disabled){background:var(--app-color-button-secondary-hover-bg, #e8f0fa)}:host(.base-button--ghost) .base-button__native{color:var(--app-color-text-primary, #1a2f45);background:transparent;border-color:transparent;min-width:0;min-height:2.25rem;padding:.35rem .5rem;border-radius:8px;font-size:.95rem;font-weight:600;justify-content:flex-start;gap:.45rem}:host(.base-button--ghost) .base-button__native:hover:not(:disabled){color:var(--app-color-nav-link);background:color-mix(in srgb,var(--app-color-primary) 6%,transparent)}:host(.base-button--danger) .base-button__native{color:var(--app-color-error-contrast, #fff);background:var(--app-color-error, #b91c1c);border-color:var(--app-color-error-border, #dc2626)}:host(.base-button--danger) .base-button__native:hover:not(:disabled){filter:brightness(.95)}:host(.base-button--danger) .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--app-color-error-focus-ring, rgba(220, 38, 38, .35))}:host(.base-button--disabled:not(.base-button--readonly)) .base-button__native,.base-button__native:disabled:not([aria-readonly=true]){cursor:not-allowed;opacity:var(--ui-field-input-disabled-opacity, .65)}:host(.base-button--readonly) .base-button__native{cursor:default;opacity:1;color:var(--ui-field-readonly-button-text, #37474f);background:var(--ui-field-readonly-button-bg, #cfd8dc);border-color:var(--ui-field-readonly-button-border, #90a4ae)}:host(.base-button--readonly) .base-button__native:hover:not(:disabled){filter:brightness(.97)}:host(.base-button--readonly) .base-button__native:focus-visible{box-shadow:0 0 0 3px var(--ui-field-readonly-button-focus-ring, rgba(96, 125, 139, .35))}.base-button__native--skeleton{pointer-events:none;cursor:default}:host(.base-button--primary.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--ui-field-float-border-focus, #2b7fd9) 82%,#ffffff);border-color:color-mix(in srgb,var(--ui-field-float-border-focus, #2b7fd9) 82%,#ffffff)}:host(.base-button--secondary.base-button--loading) .base-button__native--skeleton{background:var(--ui-field-float-bg, #f3f7fb);border-color:var(--ui-field-float-border, #b6cce5)}:host(.base-button--ghost.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--app-color-text-primary, #1a2f45) 8%,transparent);border-color:transparent}:host(.base-button--danger.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--app-color-error, #b91c1c) 82%,#ffffff);border-color:color-mix(in srgb,var(--app-color-error-border, #dc2626) 88%,#ffffff)}\n"] }]
345
391
  }] });
346
392
 
347
393
  let fieldControlAutoId = 0;
@@ -10188,5 +10234,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
10188
10234
  * Generated bundle index. Do not edit.
10189
10235
  */
10190
10236
 
10191
- export { ADAPTIVE_DATA_VIEW_MOBILE_QUERY, APP_SIDEBAR_LABEL_REVEAL_LAG_MS, APP_SIDEBAR_LAYOUT_DURATION_MS, APP_SIDEBAR_NAV_REVEAL_TOTAL_MS, APP_THEME_IDS, ActionMenuComponent, AdaptiveDataViewComponent, AnchoredOverlayComponent, AppBreadcrumbComponent, AppDialogComponent, AppLibLightBlockScrollStrategy, AppShellComponent, AppShellSidebarTemplateDirective, AppShellSidebarToggleComponent, AppSidebarComponent, AppSidebarToolbarDirective, AppTheme, AppThemeService, AppTopbarComponent, AppUserMenuComponent, BR_ESTADOS_NOME_SIGLA, BaseFieldComponent, BaseFieldDirective, BooleanFieldDirective, ButtonComponent, ButtonType, ButtonVariant, CardListComponent, CepFieldComponent, CheckboxFieldComponent, ConfirmDialogComponent, ConfirmDialogService, ContextMenuComponent, CpfCnpjFieldComponent, DashboardSectionComponent, DataCardComponent, DataGridComponent, DataListComponent, DataToolbarComponent, DateFieldComponent, DecimalFieldComponent, DetailsFieldComponent, DetailsViewComponent, DialogFooterDirective, DividerComponent, DrawerComponent, DrawerSide, DrawerSize, DropdownBaseComponent, DropdownMenuComponent, DropdownMultiOptionFieldBase, DropdownOptionFieldBase, DropdownSearchFieldComponent, EmptyStateComponent, FILE_PREVIEW_UNAVAILABLE_MESSAGE, FileUploadFieldComponent, FormActionsAlign, FormActionsComponent, FormColComponent, FormGroupComponent, FormGroupVariant, FormLayoutGap, FormRowAlign, FormRowComponent, FormRowJustify, FormSectionComponent, FormTabComponent, FormTabsComponent, ImagePreviewPanelComponent, InputMaskFieldComponent, IntegerFieldComponent, LAYOUT_STACK_SIDE_BY_SIDE, LAYOUT_STACK_STACKED, LayoutStackAlign, LayoutStackComponent, LayoutStackDirection, LayoutStackItemAlign, LibDialogSize, ListItemComponent, LoadingDialogComponent, LoadingDialogService, MaskedTextFieldBase, MenuDividerComponent, MenuDropdownPlacement, MenuGroupComponent, MenuListComponent, MultiselectFieldComponent, NgControlFieldDirective, OverlayPlacement, PDF_IFRAME_VIEWER_HASH, PasswordFieldComponent, PhoneFieldComponent, PopoverBodyTemplateDirective, PopoverComponent, PopoverFooterTemplateDirective, PopoverTriggerDirective, STRUCTRA_UI, SelectFieldComponent, SkeletonBlockComponent, SkeletonCardComponent, SkeletonFieldShellComponent, SkeletonListComponent, SkeletonTableComponent, SkeletonTextComponent, StatCardComponent, StatusBadgeComponent, SwitchFieldComponent, TableEmptyStateComponent, TableToolbarComponent, TextFieldComponent, TextareaFieldComponent, ToastHostComponent, ToastService, TooltipComponent, TooltipPanelTemplateDirective, ValidationSummaryComponent, anchoredOverlayPositions, appendPdfIframeViewerParams, applyPickedCalendarDate, buildDecimalBrDisplay, buildDecimalBrParseString, buildEmptyStateOverlayHtml, caretIndexFromIntegerDigitCount, caretIndexFromSemantic, cepMaskCompleteValidator, cpfCnpjMaskCompleteValidator, escapeHtml, extractDecimalBrParts, fileIsLikelyImage, fileMatchesAccept, fixedDigitsMaskCompleteValidator, formatAcceptForDisplay, formatDateTimePtBr, formatDecimalBr, formatFileSizeBytes, formatIntegerThousandsBr, formatMaskDigits, formatUiFieldDateValue, getFilePreviewKind, libDialogPanelClasses, mapEstadosToOptions, maskDigitCount, normalizeFormDateValue, parseDecimalBr, parseIntegerString, parseUiFieldDateValue, phoneBrMaskCompleteValidator, resolveControlAtPath, sanitizeDecimalBrInput, sanitizeIntegerDigits, sectionHasVisibleInvalid, semanticCaretAt, semanticIntegerDigitCountLeft, stripToDigits, subscribeMarkForCheckOnInvalidUiRefresh, subtreeHasVisibleInvalid };
10237
+ export { ADAPTIVE_DATA_VIEW_MOBILE_QUERY, APP_SIDEBAR_LABEL_REVEAL_LAG_MS, APP_SIDEBAR_LAYOUT_DURATION_MS, APP_SIDEBAR_NAV_REVEAL_TOTAL_MS, APP_THEME_IDS, ActionMenuComponent, AdaptiveDataViewComponent, AnchoredOverlayComponent, AppBreadcrumbComponent, AppDialogComponent, AppLibLightBlockScrollStrategy, AppShellComponent, AppShellSidebarTemplateDirective, AppShellSidebarToggleComponent, AppSidebarComponent, AppSidebarToolbarDirective, AppTheme, AppThemeService, AppTopbarComponent, AppUserMenuComponent, BR_ESTADOS_NOME_SIGLA, BaseFieldComponent, BaseFieldDirective, BooleanFieldDirective, ButtonAlign, ButtonComponent, ButtonType, ButtonVariant, CardListComponent, CepFieldComponent, CheckboxFieldComponent, ConfirmDialogComponent, ConfirmDialogService, ContextMenuComponent, CpfCnpjFieldComponent, DashboardSectionComponent, DataCardComponent, DataGridComponent, DataListComponent, DataToolbarComponent, DateFieldComponent, DecimalFieldComponent, DetailsFieldComponent, DetailsViewComponent, DialogFooterDirective, DividerComponent, DrawerComponent, DrawerSide, DrawerSize, DropdownBaseComponent, DropdownMenuComponent, DropdownMultiOptionFieldBase, DropdownOptionFieldBase, DropdownSearchFieldComponent, EmptyStateComponent, FILE_PREVIEW_UNAVAILABLE_MESSAGE, FileUploadFieldComponent, FormActionsAlign, FormActionsComponent, FormColComponent, FormGroupComponent, FormGroupVariant, FormLayoutGap, FormRowAlign, FormRowComponent, FormRowJustify, FormSectionComponent, FormTabComponent, FormTabsComponent, ImagePreviewPanelComponent, InputMaskFieldComponent, IntegerFieldComponent, LAYOUT_STACK_SIDE_BY_SIDE, LAYOUT_STACK_STACKED, LayoutStackAlign, LayoutStackComponent, LayoutStackDirection, LayoutStackItemAlign, LibDialogSize, ListItemComponent, LoadingDialogComponent, LoadingDialogService, MaskedTextFieldBase, MenuDividerComponent, MenuDropdownPlacement, MenuGroupComponent, MenuListComponent, MultiselectFieldComponent, NgControlFieldDirective, OverlayPlacement, PDF_IFRAME_VIEWER_HASH, PasswordFieldComponent, PhoneFieldComponent, PopoverBodyTemplateDirective, PopoverComponent, PopoverFooterTemplateDirective, PopoverTriggerDirective, STRUCTRA_UI, SelectFieldComponent, SkeletonBlockComponent, SkeletonCardComponent, SkeletonFieldShellComponent, SkeletonListComponent, SkeletonTableComponent, SkeletonTextComponent, StatCardComponent, StatusBadgeComponent, SwitchFieldComponent, TableEmptyStateComponent, TableToolbarComponent, TextFieldComponent, TextareaFieldComponent, ToastHostComponent, ToastService, TooltipComponent, TooltipPanelTemplateDirective, ValidationSummaryComponent, anchoredOverlayPositions, appendPdfIframeViewerParams, applyPickedCalendarDate, buildDecimalBrDisplay, buildDecimalBrParseString, buildEmptyStateOverlayHtml, caretIndexFromIntegerDigitCount, caretIndexFromSemantic, cepMaskCompleteValidator, cpfCnpjMaskCompleteValidator, escapeHtml, extractDecimalBrParts, fileIsLikelyImage, fileMatchesAccept, fixedDigitsMaskCompleteValidator, formatAcceptForDisplay, formatDateTimePtBr, formatDecimalBr, formatFileSizeBytes, formatIntegerThousandsBr, formatMaskDigits, formatUiFieldDateValue, getFilePreviewKind, libDialogPanelClasses, mapEstadosToOptions, maskDigitCount, normalizeFormDateValue, parseDecimalBr, parseIntegerString, parseUiFieldDateValue, phoneBrMaskCompleteValidator, resolveControlAtPath, sanitizeDecimalBrInput, sanitizeIntegerDigits, sectionHasVisibleInvalid, semanticCaretAt, semanticIntegerDigitCountLeft, stripToDigits, subscribeMarkForCheckOnInvalidUiRefresh, subtreeHasVisibleInvalid };
10192
10238
  //# sourceMappingURL=structra-ui.mjs.map