codexly-ui 0.12.35 → 0.12.37

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.
@@ -8676,6 +8676,103 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
8676
8676
  }]
8677
8677
  }] });
8678
8678
 
8679
+ /** Generic "insert image by URL" fallback for clx-editor's image button — used only when the host
8680
+ * app doesn't provide its own imagePicker() (see ClxEditorComponent), since this library has no
8681
+ * way to reach an app-specific catalog/media backend itself. */
8682
+ class ClxEditorImageModalComponent {
8683
+ _modalRef = inject(CLX_MODAL_REF, { optional: true });
8684
+ _themeSvc = inject(ClxThemeService);
8685
+ _primaryColor = computed(() => this._themeSvc.config().primaryColor, ...(ngDevMode ? [{ debugName: "_primaryColor" }] : /* istanbul ignore next */ []));
8686
+ _form = new FormGroup({
8687
+ url: new FormControl('', { nonNullable: true, validators: [Validators.required, Validators.pattern(/^https?:\/\/.+/)] }),
8688
+ alt: new FormControl('', { nonNullable: true }),
8689
+ });
8690
+ _urlInvalid = signal(false, ...(ngDevMode ? [{ debugName: "_urlInvalid" }] : /* istanbul ignore next */ []));
8691
+ _confirm() {
8692
+ const url = this._form.controls.url.value.trim();
8693
+ const alt = this._form.controls.alt.value.trim();
8694
+ if (!url || this._form.controls.url.invalid) {
8695
+ this._urlInvalid.set(true);
8696
+ return;
8697
+ }
8698
+ this._modalRef?.close({ url, alt });
8699
+ }
8700
+ _cancel() {
8701
+ this._modalRef?.close(undefined);
8702
+ }
8703
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ClxEditorImageModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8704
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.15", type: ClxEditorImageModalComponent, isStandalone: true, selector: "clx-editor-image-modal", ngImport: i0, template: `
8705
+ <clx-modal
8706
+ size="sm"
8707
+ [confirmButton]="{ text: 'Insertar', color: _primaryColor() }"
8708
+ [cancelButton]="{ text: 'Cancelar', color: 'slate', variant: 'ghost' }"
8709
+ [showCancelButton]="true"
8710
+ (confirmClick)="_confirm()"
8711
+ (cancelClick)="_cancel()">
8712
+
8713
+ <span clx-modal-title class="text-base font-semibold text-clx-text-label">
8714
+ Insertar imagen
8715
+ </span>
8716
+
8717
+ <form [formGroup]="_form" class="space-y-4" (ngSubmit)="_confirm()">
8718
+ <clx-input
8719
+ label="URL de la imagen"
8720
+ placeholder="https://ejemplo.com/imagen.jpg"
8721
+ formControlName="url"
8722
+ [status]="_urlInvalid() ? 'error' : 'default'"
8723
+ statusMessage="Ingresa una URL válida">
8724
+ </clx-input>
8725
+ <clx-input
8726
+ label="Texto alternativo"
8727
+ placeholder="Descripción de la imagen"
8728
+ formControlName="alt">
8729
+ </clx-input>
8730
+ </form>
8731
+
8732
+ </clx-modal>
8733
+ `, isInline: true, dependencies: [{ kind: "component", type: ClxModalComponent, selector: "clx-modal", inputs: ["size", "showClose", "confirmButton", "cancelButton", "showCancelButton"], outputs: ["confirmClick", "cancelClick"] }, { kind: "component", type: ClxInputComponent, selector: "clx-input", inputs: ["label", "placeholder", "type", "color", "hint", "prefixIcon", "suffixIcon", "prefixText", "suffixText", "status", "statusMessage", "size", "value", "disabled", "autocomplete"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
8734
+ }
8735
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ClxEditorImageModalComponent, decorators: [{
8736
+ type: Component,
8737
+ args: [{
8738
+ selector: 'clx-editor-image-modal',
8739
+ standalone: true,
8740
+ imports: [ClxModalComponent, ClxInputComponent, ReactiveFormsModule],
8741
+ encapsulation: ViewEncapsulation.None,
8742
+ changeDetection: ChangeDetectionStrategy.OnPush,
8743
+ template: `
8744
+ <clx-modal
8745
+ size="sm"
8746
+ [confirmButton]="{ text: 'Insertar', color: _primaryColor() }"
8747
+ [cancelButton]="{ text: 'Cancelar', color: 'slate', variant: 'ghost' }"
8748
+ [showCancelButton]="true"
8749
+ (confirmClick)="_confirm()"
8750
+ (cancelClick)="_cancel()">
8751
+
8752
+ <span clx-modal-title class="text-base font-semibold text-clx-text-label">
8753
+ Insertar imagen
8754
+ </span>
8755
+
8756
+ <form [formGroup]="_form" class="space-y-4" (ngSubmit)="_confirm()">
8757
+ <clx-input
8758
+ label="URL de la imagen"
8759
+ placeholder="https://ejemplo.com/imagen.jpg"
8760
+ formControlName="url"
8761
+ [status]="_urlInvalid() ? 'error' : 'default'"
8762
+ statusMessage="Ingresa una URL válida">
8763
+ </clx-input>
8764
+ <clx-input
8765
+ label="Texto alternativo"
8766
+ placeholder="Descripción de la imagen"
8767
+ formControlName="alt">
8768
+ </clx-input>
8769
+ </form>
8770
+
8771
+ </clx-modal>
8772
+ `,
8773
+ }]
8774
+ }] });
8775
+
8679
8776
  const EDITOR_SIZE_MAP = {
8680
8777
  sm: { minH: 'min-h-[120px]', maxH: 'max-h-[200px]', text: 'text-sm', label: 'text-xs font-medium', hint: 'text-xs', toolbar: 'p-1 gap-0.5' },
8681
8778
  md: { minH: 'min-h-[180px]', maxH: 'max-h-[320px]', text: 'text-sm', label: 'text-sm font-medium', hint: 'text-xs', toolbar: 'p-1.5 gap-0.5' },
@@ -8881,6 +8978,7 @@ const TOOLBAR_GROUPS = [
8881
8978
  ],
8882
8979
  [
8883
8980
  { cmd: 'createLink', icon: 'link', title: 'Enlace' },
8981
+ { cmd: 'insertImage', icon: 'image', title: 'Imagen' },
8884
8982
  { cmd: 'removeFormat', icon: 'format_clear', title: 'Limpiar formato' },
8885
8983
  { cmd: 'undo', icon: 'undo', title: 'Deshacer' },
8886
8984
  { cmd: 'redo', icon: 'redo', title: 'Rehacer' },
@@ -8917,6 +9015,17 @@ class ClxEditorComponent {
8917
9015
  statusMessage = input('', ...(ngDevMode ? [{ debugName: "statusMessage" }] : /* istanbul ignore next */ []));
8918
9016
  hint = input('', ...(ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []));
8919
9017
  disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
9018
+ /** Overrides the toolbar's Image button: when provided, clicking it calls this instead of
9019
+ * opening the generic "insert by URL" modal (ClxEditorImageModalComponent) — lets a host app
9020
+ * plug in its own picker (e.g. an ERP's product/variant image browser) without this library
9021
+ * needing to know about that app's catalog backend. Resolve to undefined/null to cancel. */
9022
+ imagePicker = input(undefined, ...(ngDevMode ? [{ debugName: "imagePicker" }] : /* istanbul ignore next */ []));
9023
+ /** Adds an extra toolbar button (only rendered when provided) that inserts a raw HTML block at
9024
+ * the cursor — e.g. an ERP's "poster" template resolved against a chosen product/variant, where
9025
+ * the result is a whole <table> block, not a single <img>, so imagePicker's fixed <img>-only
9026
+ * output doesn't fit. The returned html is inserted as-is via insertHTML, no sanitization beyond
9027
+ * what insertHTML/_sanitizePaste already does for pasted content. */
9028
+ blockPicker = input(undefined, ...(ngDevMode ? [{ debugName: "blockPicker" }] : /* istanbul ignore next */ []));
8920
9029
  // ── View ─────────────────────────────────────────────────────────────────
8921
9030
  _bodyEl;
8922
9031
  _sourceEl;
@@ -9070,6 +9179,10 @@ class ClxEditorComponent {
9070
9179
  this._openLinkModal();
9071
9180
  return;
9072
9181
  }
9182
+ if (cmd === 'insertImage') {
9183
+ this._openImageModal();
9184
+ return;
9185
+ }
9073
9186
  this._bodyEl.nativeElement.focus();
9074
9187
  this._restoreRange();
9075
9188
  document.execCommand(cmd, false, arg);
@@ -9110,6 +9223,41 @@ class ClxEditorComponent {
9110
9223
  this._tick.update(v => v + 1);
9111
9224
  });
9112
9225
  }
9226
+ // ── Image insert ──────────────────────────────────────────────────────────
9227
+ _openImageModal() {
9228
+ this._saveRange();
9229
+ const picker = this.imagePicker();
9230
+ const insert = (result) => {
9231
+ if (!result?.url)
9232
+ return;
9233
+ this._restoreRange();
9234
+ this._bodyEl.nativeElement.focus();
9235
+ const alt = (result.alt ?? '').replace(/"/g, '&quot;');
9236
+ document.execCommand('insertHTML', false, `<img src="${result.url}" alt="${alt}" style="max-width:100%;height:auto;" />`);
9237
+ this._emitChange();
9238
+ this._tick.update(v => v + 1);
9239
+ };
9240
+ if (picker) {
9241
+ picker().then(insert);
9242
+ return;
9243
+ }
9244
+ const ref = this._modal.open(ClxEditorImageModalComponent, { size: 'sm' });
9245
+ ref.afterClosed().then((result) => insert(result));
9246
+ }
9247
+ _openBlockPicker() {
9248
+ const picker = this.blockPicker();
9249
+ if (!picker)
9250
+ return;
9251
+ picker.fn().then(result => {
9252
+ if (!result?.html)
9253
+ return;
9254
+ this._restoreRange();
9255
+ this._bodyEl.nativeElement.focus();
9256
+ document.execCommand('insertHTML', false, result.html);
9257
+ this._emitChange();
9258
+ this._tick.update(v => v + 1);
9259
+ });
9260
+ }
9113
9261
  // ── Range save/restore ────────────────────────────────────────────────────
9114
9262
  _saveRange() {
9115
9263
  const sel = window.getSelection();
@@ -9228,7 +9376,7 @@ class ClxEditorComponent {
9228
9376
  this._cdr.markForCheck();
9229
9377
  }
9230
9378
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ClxEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9231
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.15", type: ClxEditorComponent, isStandalone: true, selector: "clx-editor", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null }, statusMessage: { classPropertyName: "statusMessage", publicName: "statusMessage", isSignal: true, isRequired: false, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "flex flex-col gap-1.5" }, providers: [
9379
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.15", type: ClxEditorComponent, isStandalone: true, selector: "clx-editor", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null }, statusMessage: { classPropertyName: "statusMessage", publicName: "statusMessage", isSignal: true, isRequired: false, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, imagePicker: { classPropertyName: "imagePicker", publicName: "imagePicker", isSignal: true, isRequired: false, transformFunction: null }, blockPicker: { classPropertyName: "blockPicker", publicName: "blockPicker", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "flex flex-col gap-1.5" }, providers: [
9232
9380
  {
9233
9381
  provide: NG_VALUE_ACCESSOR,
9234
9382
  useExisting: forwardRef(() => ClxEditorComponent),
@@ -9334,6 +9482,25 @@ class ClxEditorComponent {
9334
9482
  </button>
9335
9483
 
9336
9484
  <div class="clx-editor-divider mx-1"></div>
9485
+
9486
+ <!-- Custom HTML block insert (e.g. an ERP's "insert poster" flow) -->
9487
+ @if (blockPicker(); as picker) {
9488
+ <button
9489
+ clx-button
9490
+ type="button"
9491
+ variant="ghost"
9492
+ [color]="_color()"
9493
+ size="xs"
9494
+ shape="rounded"
9495
+ [icon]="picker.icon"
9496
+ [iconOnly]="true"
9497
+ [title]="picker.title"
9498
+ (mousedown)="_saveRange()"
9499
+ (click)="_openBlockPicker()">
9500
+ </button>
9501
+
9502
+ <div class="clx-editor-divider mx-1"></div>
9503
+ }
9337
9504
  }
9338
9505
 
9339
9506
  <!-- HTML source toggle -->
@@ -9521,6 +9688,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
9521
9688
  </button>
9522
9689
 
9523
9690
  <div class="clx-editor-divider mx-1"></div>
9691
+
9692
+ <!-- Custom HTML block insert (e.g. an ERP's "insert poster" flow) -->
9693
+ @if (blockPicker(); as picker) {
9694
+ <button
9695
+ clx-button
9696
+ type="button"
9697
+ variant="ghost"
9698
+ [color]="_color()"
9699
+ size="xs"
9700
+ shape="rounded"
9701
+ [icon]="picker.icon"
9702
+ [iconOnly]="true"
9703
+ [title]="picker.title"
9704
+ (mousedown)="_saveRange()"
9705
+ (click)="_openBlockPicker()">
9706
+ </button>
9707
+
9708
+ <div class="clx-editor-divider mx-1"></div>
9709
+ }
9524
9710
  }
9525
9711
 
9526
9712
  <!-- HTML source toggle -->
@@ -9599,7 +9785,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
9599
9785
  <p [class]="_sizeCfg().hint + ' text-gray-400'">{{ hint() }}</p>
9600
9786
  }
9601
9787
  `, host: { class: 'flex flex-col gap-1.5' }, styles: [".clx-editor-body:empty:before{content:attr(data-placeholder);color:#9ca3af;pointer-events:none}.clx-editor-body:focus{outline:none}.clx-editor-body p{margin:0 0 .4em}.clx-editor-body p:last-child{margin-bottom:0}.clx-editor-body h1{font-size:1.5em;font-weight:700;margin:.5em 0}.clx-editor-body h2{font-size:1.25em;font-weight:600;margin:.5em 0}.clx-editor-body h3{font-size:1.1em;font-weight:600;margin:.5em 0}.clx-editor-body ul,.clx-editor-body ol{padding-left:1.5em;margin:.35em 0}.clx-editor-body li{margin:.1em 0}.clx-editor-body blockquote{border-left:3px solid #e2e8f0;padding-left:.75em;color:#64748b;margin:.4em 0}.clx-editor-body code{background:#f1f5f9;border-radius:3px;padding:.1em .3em;font-size:.875em;font-family:ui-monospace,monospace}.clx-editor-body a{color:#6366f1;text-decoration:underline}.clx-editor-body hr{border:none;border-top:1px solid #e2e8f0;margin:.6em 0}.clx-editor-color-btn{position:relative;overflow:hidden}.clx-editor-color-btn input[type=color]{position:absolute;inset:0;opacity:0;width:100%;height:100%;cursor:pointer;border:none;padding:0}.clx-editor-toolbar-select clx-select .flex.flex-col{gap:0!important}.clx-editor-source{width:100%;resize:none;border:none;outline:none;background:#0f172a;color:#e2e8f0;font-family:ui-monospace,Cascadia Code,Fira Code,monospace;font-size:.8125rem;line-height:1.6;padding:1rem;tab-size:2}\n"] }]
9602
- }], ctorParameters: () => [], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], status: [{ type: i0.Input, args: [{ isSignal: true, alias: "status", required: false }] }], statusMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "statusMessage", required: false }] }], hint: [{ type: i0.Input, args: [{ isSignal: true, alias: "hint", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], _bodyEl: [{
9788
+ }], ctorParameters: () => [], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], status: [{ type: i0.Input, args: [{ isSignal: true, alias: "status", required: false }] }], statusMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "statusMessage", required: false }] }], hint: [{ type: i0.Input, args: [{ isSignal: true, alias: "hint", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], imagePicker: [{ type: i0.Input, args: [{ isSignal: true, alias: "imagePicker", required: false }] }], blockPicker: [{ type: i0.Input, args: [{ isSignal: true, alias: "blockPicker", required: false }] }], _bodyEl: [{
9603
9789
  type: ViewChild,
9604
9790
  args: ['bodyEl', { static: false }]
9605
9791
  }], _sourceEl: [{
@@ -17933,5 +18119,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
17933
18119
  * Generated bundle index. Do not edit.
17934
18120
  */
17935
18121
 
17936
- export { CLX_ADDON_BORDER, CLX_ADDON_TEXT, CLX_ALERT_OPTIONS, CLX_ALERT_RESOLVE, CLX_BG_ADDON, CLX_BG_DISABLED, CLX_BG_ICON_WRAP, CLX_BG_SECTION, CLX_BG_SURFACE, CLX_BORDER_DEFAULT, CLX_BORDER_DISABLED, CLX_BORDER_MEDIUM, CLX_COLOR_HEX, CLX_COLOR_HEX_100, CLX_COLOR_MAP, CLX_FONT_CATALOG, CLX_MODAL_ANIM_CONFIG, CLX_MODAL_DATA, CLX_MODAL_REF, CLX_OPTION_DISABLED, CLX_PLACEHOLDER, CLX_RADIO_GROUP, CLX_RADIUS_MAP, CLX_TEXT_BODY, CLX_TEXT_DISABLED, CLX_TEXT_HEADING, CLX_TEXT_HINT, CLX_TEXT_IDLE, CLX_TEXT_INPUT, CLX_TEXT_LABEL, CLX_TEXT_OPTION, CLX_TEXT_SUBTITLE, CLX_TEXT_TITLE, CLX_THEME_CONFIG, CLX_THEME_DEFAULTS, CLX_TOAST_DEFAULTS, ClxAlertComponent, ClxAlertService, ClxAnimateDirective, ClxAnimateGroupDirective, ClxAnimateService, ClxAppLayoutComponent, ClxAvatarComponent, ClxBadgeComponent, ClxBrandComponent, ClxButtonComponent, ClxButtonGroupComponent, ClxCardBodyDirective, ClxCardComponent, ClxCardFooterDirective, ClxCardHeaderActionsDirective, ClxCardHeaderDirective, ClxCarouselComponent, ClxCarouselDirective, ClxCartComponent, ClxCartSummaryDrawer, ClxCellDirective, ClxCheckboxComponent, ClxCollapseComponent, ClxColorPickerComponent, ClxColumnDefDirective, ClxDateRangePickerComponent, ClxDatepickerComponent, ClxDrawerComponent, ClxDrawerService, ClxEditorComponent, ClxEditorLinkModalComponent, ClxFabComponent, ClxFilterPanelComponent, ClxHeaderCellDirective, ClxIconComponent, ClxInputComponent, ClxListComponent, ClxListItemComponent, ClxMenuComponent, ClxMenuItemComponent, ClxMenuItemTrailingDirective, ClxModalComponent, ClxModalService, ClxNativeOverlayService, ClxNavGroupComponent, ClxNotificationComponent, ClxNumberComponent, ClxOtpComponent, ClxPageEmptyComponent, ClxPageHeaderComponent, ClxPageHeaderTitleDirective, ClxPageNotFoundComponent, ClxPageServerErrorComponent, ClxPageUnauthorizedComponent, ClxPaginationComponent, ClxProductComponent, ClxProductDetailComponent, ClxProductQuickViewComponent, ClxProfileComponent, ClxProgressBarComponent, ClxRadioComponent, ClxRadioGroupComponent, ClxRatingComponent, ClxSearchComponent, ClxSelectComponent, ClxSkeletonComponent, ClxSliderComponent, ClxSocialIconComponent, ClxSpinnerComponent, ClxStatCardComponent, ClxStepComponent, ClxStepperComponent, ClxSwitchComponent, ClxTabDirective, ClxTableActionsComponent, ClxTableComponent, ClxTabsComponent, ClxTagComponent, ClxTextareaComponent, ClxThemeService, ClxTimelineComponent, ClxTimelineItemComponent, ClxTimepickerComponent, ClxToastComponent, ClxToastContainerComponent, ClxToastService, ClxTooltipComponent, ClxTooltipDirective, ClxTreeComponent, ClxUploadComponent, ClxWishlistComponent, ClxWizardComponent, TIMEPICKER_SIZE_MAP, parseColorInput, provideCodexlyTheme, resolveColor, resolveContainerRadius, resolveRadius };
18122
+ export { CLX_ADDON_BORDER, CLX_ADDON_TEXT, CLX_ALERT_OPTIONS, CLX_ALERT_RESOLVE, CLX_BG_ADDON, CLX_BG_DISABLED, CLX_BG_ICON_WRAP, CLX_BG_SECTION, CLX_BG_SURFACE, CLX_BORDER_DEFAULT, CLX_BORDER_DISABLED, CLX_BORDER_MEDIUM, CLX_COLOR_HEX, CLX_COLOR_HEX_100, CLX_COLOR_MAP, CLX_FONT_CATALOG, CLX_MODAL_ANIM_CONFIG, CLX_MODAL_DATA, CLX_MODAL_REF, CLX_OPTION_DISABLED, CLX_PLACEHOLDER, CLX_RADIO_GROUP, CLX_RADIUS_MAP, CLX_TEXT_BODY, CLX_TEXT_DISABLED, CLX_TEXT_HEADING, CLX_TEXT_HINT, CLX_TEXT_IDLE, CLX_TEXT_INPUT, CLX_TEXT_LABEL, CLX_TEXT_OPTION, CLX_TEXT_SUBTITLE, CLX_TEXT_TITLE, CLX_THEME_CONFIG, CLX_THEME_DEFAULTS, CLX_TOAST_DEFAULTS, ClxAlertComponent, ClxAlertService, ClxAnimateDirective, ClxAnimateGroupDirective, ClxAnimateService, ClxAppLayoutComponent, ClxAvatarComponent, ClxBadgeComponent, ClxBrandComponent, ClxButtonComponent, ClxButtonGroupComponent, ClxCardBodyDirective, ClxCardComponent, ClxCardFooterDirective, ClxCardHeaderActionsDirective, ClxCardHeaderDirective, ClxCarouselComponent, ClxCarouselDirective, ClxCartComponent, ClxCartSummaryDrawer, ClxCellDirective, ClxCheckboxComponent, ClxCollapseComponent, ClxColorPickerComponent, ClxColumnDefDirective, ClxDateRangePickerComponent, ClxDatepickerComponent, ClxDrawerComponent, ClxDrawerService, ClxEditorComponent, ClxEditorImageModalComponent, ClxEditorLinkModalComponent, ClxFabComponent, ClxFilterPanelComponent, ClxHeaderCellDirective, ClxIconComponent, ClxInputComponent, ClxListComponent, ClxListItemComponent, ClxMenuComponent, ClxMenuItemComponent, ClxMenuItemTrailingDirective, ClxModalComponent, ClxModalService, ClxNativeOverlayService, ClxNavGroupComponent, ClxNotificationComponent, ClxNumberComponent, ClxOtpComponent, ClxPageEmptyComponent, ClxPageHeaderComponent, ClxPageHeaderTitleDirective, ClxPageNotFoundComponent, ClxPageServerErrorComponent, ClxPageUnauthorizedComponent, ClxPaginationComponent, ClxProductComponent, ClxProductDetailComponent, ClxProductQuickViewComponent, ClxProfileComponent, ClxProgressBarComponent, ClxRadioComponent, ClxRadioGroupComponent, ClxRatingComponent, ClxSearchComponent, ClxSelectComponent, ClxSkeletonComponent, ClxSliderComponent, ClxSocialIconComponent, ClxSpinnerComponent, ClxStatCardComponent, ClxStepComponent, ClxStepperComponent, ClxSwitchComponent, ClxTabDirective, ClxTableActionsComponent, ClxTableComponent, ClxTabsComponent, ClxTagComponent, ClxTextareaComponent, ClxThemeService, ClxTimelineComponent, ClxTimelineItemComponent, ClxTimepickerComponent, ClxToastComponent, ClxToastContainerComponent, ClxToastService, ClxTooltipComponent, ClxTooltipDirective, ClxTreeComponent, ClxUploadComponent, ClxWishlistComponent, ClxWizardComponent, TIMEPICKER_SIZE_MAP, parseColorInput, provideCodexlyTheme, resolveColor, resolveContainerRadius, resolveRadius };
17937
18123
  //# sourceMappingURL=codexly-ui.mjs.map