@design.estate/dees-catalog 3.70.1 → 3.71.0

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.
@@ -187012,175 +187012,223 @@ var DeesPagination = _DeesPagination;
187012
187012
 
187013
187013
  // ts_web/elements/00group-layout/dees-stepper/dees-stepper.demo.ts
187014
187014
  init_dist_ts30();
187015
- var stepperDemo = /* @__PURE__ */ __name(() => b2`
187016
- <dees-stepper
187017
- .steps=${[
187015
+ var demoSteps = [
187018
187016
  {
187019
187017
  title: "Account Setup",
187020
187018
  content: b2`
187021
- <dees-form>
187022
- <dees-input-text key="email" label="Work Email" required></dees-input-text>
187023
- <dees-input-text key="password" label="Create Password" type="password" required></dees-input-text>
187024
- <dees-form-submit>Continue</dees-form-submit>
187025
- </dees-form>
187026
- `,
187027
- validationFunc: /* @__PURE__ */ __name(async (stepperArg, elementArg) => {
187028
- const deesForm = elementArg.querySelector("dees-form");
187029
- deesForm.addEventListener("formData", () => stepperArg.goNext(), { once: true });
187030
- }, "validationFunc")
187019
+ <dees-form>
187020
+ <dees-input-text key="email" label="Work Email" required></dees-input-text>
187021
+ <dees-input-text key="password" label="Create Password" type="password" required></dees-input-text>
187022
+ </dees-form>
187023
+ `,
187024
+ menuOptions: [
187025
+ { name: "Continue", action: /* @__PURE__ */ __name(async (stepper) => stepper.goNext(), "action") }
187026
+ ]
187031
187027
  },
187032
187028
  {
187033
187029
  title: "Profile Details",
187034
187030
  content: b2`
187035
- <dees-form>
187036
- <dees-input-text key="firstName" label="First Name" required></dees-input-text>
187037
- <dees-input-text key="lastName" label="Last Name" required></dees-input-text>
187038
- <dees-form-submit>Continue</dees-form-submit>
187039
- </dees-form>
187040
- `,
187041
- validationFunc: /* @__PURE__ */ __name(async (stepperArg, elementArg) => {
187042
- const deesForm = elementArg.querySelector("dees-form");
187043
- deesForm.addEventListener("formData", () => stepperArg.goNext(), { once: true });
187044
- }, "validationFunc")
187031
+ <dees-form>
187032
+ <dees-input-text key="firstName" label="First Name" required></dees-input-text>
187033
+ <dees-input-text key="lastName" label="Last Name" required></dees-input-text>
187034
+ </dees-form>
187035
+ `,
187036
+ menuOptions: [
187037
+ { name: "Continue", action: /* @__PURE__ */ __name(async (stepper) => stepper.goNext(), "action") }
187038
+ ]
187045
187039
  },
187046
187040
  {
187047
187041
  title: "Contact Information",
187048
187042
  content: b2`
187049
- <dees-form>
187050
- <dees-input-phone key="phone" label="Mobile Number" required></dees-input-phone>
187051
- <dees-input-text key="company" label="Company"></dees-input-text>
187052
- <dees-form-submit>Continue</dees-form-submit>
187053
- </dees-form>
187054
- `,
187055
- validationFunc: /* @__PURE__ */ __name(async (stepperArg, elementArg) => {
187056
- const deesForm = elementArg.querySelector("dees-form");
187057
- deesForm.addEventListener("formData", () => stepperArg.goNext(), { once: true });
187058
- }, "validationFunc")
187043
+ <dees-form>
187044
+ <dees-input-phone key="phone" label="Mobile Number" required></dees-input-phone>
187045
+ <dees-input-text key="company" label="Company"></dees-input-text>
187046
+ </dees-form>
187047
+ `,
187048
+ menuOptions: [
187049
+ { name: "Continue", action: /* @__PURE__ */ __name(async (stepper) => stepper.goNext(), "action") }
187050
+ ]
187059
187051
  },
187060
187052
  {
187061
187053
  title: "Team Size",
187062
187054
  content: b2`
187063
- <dees-form>
187064
- <dees-input-dropdown
187065
- key="teamSize"
187066
- label="How big is your team?"
187067
- .options=${[
187055
+ <dees-form>
187056
+ <dees-input-dropdown
187057
+ key="teamSize"
187058
+ label="How big is your team?"
187059
+ .options=${[
187068
187060
  { label: "1-5", value: "1-5" },
187069
187061
  { label: "6-20", value: "6-20" },
187070
187062
  { label: "21-50", value: "21-50" },
187071
187063
  { label: "51+", value: "51+" }
187072
187064
  ]}
187073
- required
187074
- ></dees-input-dropdown>
187075
- <dees-form-submit>Continue</dees-form-submit>
187076
- </dees-form>
187077
- `,
187078
- validationFunc: /* @__PURE__ */ __name(async (stepperArg, elementArg) => {
187079
- const deesForm = elementArg.querySelector("dees-form");
187080
- deesForm.addEventListener("formData", () => stepperArg.goNext(), { once: true });
187081
- }, "validationFunc")
187065
+ required
187066
+ ></dees-input-dropdown>
187067
+ </dees-form>
187068
+ `,
187069
+ menuOptions: [
187070
+ { name: "Continue", action: /* @__PURE__ */ __name(async (stepper) => stepper.goNext(), "action") }
187071
+ ]
187082
187072
  },
187083
187073
  {
187084
187074
  title: "Goals",
187085
187075
  content: b2`
187086
- <dees-form>
187087
- <dees-input-multitoggle
187088
- key="goal"
187089
- label="Main objective"
187090
- .options=${[
187076
+ <dees-form>
187077
+ <dees-input-multitoggle
187078
+ key="goal"
187079
+ label="Main objective"
187080
+ .options=${[
187091
187081
  { label: "Onboarding", value: "onboarding" },
187092
187082
  { label: "Analytics", value: "analytics" },
187093
187083
  { label: "Automation", value: "automation" }
187094
187084
  ]}
187095
- required
187096
- ></dees-input-multitoggle>
187097
- <dees-form-submit>Continue</dees-form-submit>
187098
- </dees-form>
187099
- `,
187100
- validationFunc: /* @__PURE__ */ __name(async (stepperArg, elementArg) => {
187101
- const deesForm = elementArg.querySelector("dees-form");
187102
- deesForm.addEventListener("formData", () => stepperArg.goNext(), { once: true });
187103
- }, "validationFunc")
187085
+ required
187086
+ ></dees-input-multitoggle>
187087
+ </dees-form>
187088
+ `,
187089
+ menuOptions: [
187090
+ { name: "Continue", action: /* @__PURE__ */ __name(async (stepper) => stepper.goNext(), "action") }
187091
+ ]
187104
187092
  },
187105
187093
  {
187106
187094
  title: "Brand Preferences",
187107
187095
  content: b2`
187108
- <dees-form>
187109
- <dees-input-text key="brandColor" label="Primary brand color"></dees-input-text>
187110
- <dees-input-text key="tone" label="Preferred tone (e.g. friendly, formal)"></dees-input-text>
187111
- <dees-form-submit>Continue</dees-form-submit>
187112
- </dees-form>
187113
- `,
187114
- validationFunc: /* @__PURE__ */ __name(async (stepperArg, elementArg) => {
187115
- const deesForm = elementArg.querySelector("dees-form");
187116
- deesForm.addEventListener("formData", () => stepperArg.goNext(), { once: true });
187117
- }, "validationFunc")
187096
+ <dees-form>
187097
+ <dees-input-text key="brandColor" label="Primary brand color"></dees-input-text>
187098
+ <dees-input-text key="tone" label="Preferred tone (e.g. friendly, formal)"></dees-input-text>
187099
+ </dees-form>
187100
+ `,
187101
+ menuOptions: [
187102
+ { name: "Continue", action: /* @__PURE__ */ __name(async (stepper) => stepper.goNext(), "action") }
187103
+ ]
187118
187104
  },
187119
187105
  {
187120
187106
  title: "Integrations",
187121
187107
  content: b2`
187122
- <dees-form>
187123
- <dees-input-list
187124
- key="integrations"
187125
- label="Integrations in use"
187126
- placeholder="Add integration"
187127
- ></dees-input-list>
187128
- <dees-form-submit>Continue</dees-form-submit>
187129
- </dees-form>
187130
- `,
187131
- validationFunc: /* @__PURE__ */ __name(async (stepperArg, elementArg) => {
187132
- const deesForm = elementArg.querySelector("dees-form");
187133
- deesForm.addEventListener("formData", () => stepperArg.goNext(), { once: true });
187134
- }, "validationFunc")
187108
+ <dees-form>
187109
+ <dees-input-list
187110
+ key="integrations"
187111
+ label="Integrations in use"
187112
+ placeholder="Add integration"
187113
+ ></dees-input-list>
187114
+ </dees-form>
187115
+ `,
187116
+ menuOptions: [
187117
+ { name: "Continue", action: /* @__PURE__ */ __name(async (stepper) => stepper.goNext(), "action") }
187118
+ ]
187135
187119
  },
187136
187120
  {
187137
187121
  title: "Review & Launch",
187138
187122
  content: b2`
187139
- <dees-panel>
187140
- <p>Almost there! Review your selections and launch whenever you're ready.</p>
187141
- </dees-panel>
187142
- `
187123
+ <dees-panel>
187124
+ <p>Almost there! Review your selections and launch whenever you're ready.</p>
187125
+ </dees-panel>
187126
+ `,
187127
+ menuOptions: [
187128
+ { name: "Launch", action: /* @__PURE__ */ __name(async (stepper) => stepper.goNext(), "action") }
187129
+ ]
187143
187130
  }
187144
- ]}
187145
- ></dees-stepper>
187131
+ ];
187132
+ var cloneSteps = /* @__PURE__ */ __name(() => demoSteps.map((step) => ({ ...step })), "cloneSteps");
187133
+ var stepperDemo = /* @__PURE__ */ __name(() => b2`
187134
+ <div style="position: absolute; inset: 0;">
187135
+ <div
187136
+ style="position: absolute; top: 16px; left: 50%; transform: translateX(-50%); z-index: 10;"
187137
+ >
187138
+ <dees-button
187139
+ @click=${async () => {
187140
+ await DeesStepper.createAndShow({ steps: cloneSteps() });
187141
+ }}
187142
+ >Open stepper as overlay</dees-button>
187143
+ </div>
187144
+ <dees-stepper .steps=${cloneSteps()}></dees-stepper>
187145
+ </div>
187146
187146
  `, "stepperDemo");
187147
187147
 
187148
187148
  // ts_web/elements/00group-layout/dees-stepper/dees-stepper.ts
187149
187149
  init_dist_ts30();
187150
187150
  init_dist_ts29();
187151
187151
  init_theme();
187152
- var _selectedStep_dec, _steps_dec, _a81, _DeesStepper_decorators, _init82, _steps, _selectedStep;
187152
+ var _activeFormValid_dec, _activeForm_dec, _stepperZIndex_dec, _overlay_dec, _selectedStep_dec, _steps_dec, _a81, _DeesStepper_decorators, _init82, _steps, _selectedStep, _overlay, _stepperZIndex, _activeForm, _activeFormValid;
187153
187153
  _DeesStepper_decorators = [customElement("dees-stepper")];
187154
187154
  var _DeesStepper = class _DeesStepper extends (_a81 = DeesElement, _steps_dec = [n5({
187155
187155
  type: Array
187156
187156
  })], _selectedStep_dec = [n5({
187157
187157
  type: Object
187158
- })], _a81) {
187158
+ })], _overlay_dec = [n5({
187159
+ type: Boolean,
187160
+ reflect: true
187161
+ })], _stepperZIndex_dec = [n5({ type: Number, attribute: false })], _activeForm_dec = [n5({ type: Object, attribute: false })], _activeFormValid_dec = [n5({ type: Boolean, attribute: false })], _a81) {
187159
187162
  constructor() {
187160
187163
  super();
187161
187164
  __privateAdd(this, _steps, __runInitializers(_init82, 8, this, [])), __runInitializers(_init82, 11, this);
187162
187165
  __privateAdd(this, _selectedStep, __runInitializers(_init82, 12, this)), __runInitializers(_init82, 15, this);
187166
+ __privateAdd(this, _overlay, __runInitializers(_init82, 16, this, false)), __runInitializers(_init82, 19, this);
187167
+ __privateAdd(this, _stepperZIndex, __runInitializers(_init82, 20, this, 1e3)), __runInitializers(_init82, 23, this);
187168
+ __privateAdd(this, _activeForm, __runInitializers(_init82, 24, this, null)), __runInitializers(_init82, 27, this);
187169
+ __privateAdd(this, _activeFormValid, __runInitializers(_init82, 28, this, true)), __runInitializers(_init82, 31, this);
187170
+ __publicField(this, "activeFormSubscription");
187171
+ __publicField(this, "windowLayer");
187163
187172
  __publicField(this, "getIndexOfStep", /* @__PURE__ */ __name((stepArg) => {
187164
187173
  return this.steps.findIndex((stepArg2) => stepArg === stepArg2);
187165
187174
  }, "getIndexOfStep"));
187166
187175
  __publicField(this, "scroller");
187167
187176
  }
187177
+ static async createAndShow(optionsArg) {
187178
+ const body3 = document.body;
187179
+ const stepper = new _DeesStepper();
187180
+ stepper.steps = optionsArg.steps;
187181
+ stepper.overlay = true;
187182
+ stepper.windowLayer = await DeesWindowLayer.createAndShow({ blur: true });
187183
+ stepper.windowLayer.addEventListener("click", async () => {
187184
+ await stepper.destroy();
187185
+ });
187186
+ body3.append(stepper.windowLayer);
187187
+ body3.append(stepper);
187188
+ stepper.stepperZIndex = zIndexRegistry.getNextZIndex();
187189
+ zIndexRegistry.register(stepper, stepper.stepperZIndex);
187190
+ return stepper;
187191
+ }
187168
187192
  render() {
187169
187193
  return b2`
187170
- <div class="stepperContainer">
187171
- ${this.steps.map(
187172
- (stepArg) => b2`<div
187173
- class="step ${stepArg === this.selectedStep ? "selected" : null} ${this.getIndexOfStep(stepArg) > this.getIndexOfStep(this.selectedStep) ? "hiddenStep" : ""} ${this.getIndexOfStep(stepArg) === 0 ? "entrance" : ""}"
187174
- >
187175
- ${this.getIndexOfStep(stepArg) > 0 ? b2`<div class="goBack" @click=${this.goBack}><span style="font-family: Inter"><-</span> go to previous step</div>` : ``}
187194
+ <div
187195
+ class="stepperContainer ${this.overlay ? "overlay" : ""}"
187196
+ style=${this.overlay ? `z-index: ${this.stepperZIndex};` : ""}
187197
+ >
187198
+ ${this.steps.map((stepArg, stepIndex) => {
187199
+ const isSelected = stepArg === this.selectedStep;
187200
+ const isHidden = this.getIndexOfStep(stepArg) > this.getIndexOfStep(this.selectedStep);
187201
+ const isFirst = stepIndex === 0;
187202
+ return b2`<dees-tile
187203
+ class="step ${isSelected ? "selected" : ""} ${isHidden ? "hiddenStep" : ""} ${isFirst ? "entrance" : ""}"
187204
+ >
187205
+ <div slot="header" class="step-header">
187206
+ ${!isFirst ? b2`<div class="goBack" @click=${this.goBack}>
187207
+ <span style="font-family: Inter"><-</span> go to previous step
187208
+ </div>` : b2`<div class="goBack-spacer"></div>`}
187176
187209
  <div class="stepCounter">
187177
- Step ${this.steps.findIndex((elementArg) => elementArg === stepArg) + 1} of
187178
- ${this.steps.length}
187210
+ Step ${stepIndex + 1} of ${this.steps.length}
187179
187211
  </div>
187212
+ </div>
187213
+ <div class="step-body">
187180
187214
  <div class="title">${stepArg.title}</div>
187181
187215
  <div class="content">${stepArg.content}</div>
187182
- </div> `
187183
- )}
187216
+ </div>
187217
+ ${stepArg.menuOptions && stepArg.menuOptions.length > 0 ? b2`<div slot="footer" class="bottomButtons">
187218
+ ${isSelected && this.activeForm !== null && !this.activeFormValid ? b2`<div class="stepHint">Complete form to continue</div>` : ""}
187219
+ ${stepArg.menuOptions.map((actionArg, actionIndex) => {
187220
+ const isPrimary = actionIndex === stepArg.menuOptions.length - 1;
187221
+ const isDisabled = isPrimary && this.activeForm !== null && !this.activeFormValid;
187222
+ return b2`
187223
+ <div
187224
+ class="bottomButton ${isPrimary ? "primary" : ""} ${isDisabled ? "disabled" : ""}"
187225
+ @click=${() => this.handleMenuOptionClick(actionArg, isPrimary)}
187226
+ >${actionArg.name}</div>
187227
+ `;
187228
+ })}
187229
+ </div>` : ""}
187230
+ </dees-tile>`;
187231
+ })}
187184
187232
  </div>
187185
187233
  `;
187186
187234
  }
@@ -187202,6 +187250,7 @@ var _DeesStepper = class _DeesStepper extends (_a81 = DeesElement, _steps_dec =
187202
187250
  if (!selectedStepElement) {
187203
187251
  return;
187204
187252
  }
187253
+ this.scanActiveForm(selectedStepElement);
187205
187254
  if (!stepperContainer.style.paddingTop) {
187206
187255
  stepperContainer.style.paddingTop = `${stepperContainer.offsetHeight / 2 - selectedStepElement.offsetHeight / 2}px`;
187207
187256
  }
@@ -187259,14 +187308,99 @@ var _DeesStepper = class _DeesStepper extends (_a81 = DeesElement, _steps_dec =
187259
187308
  nextStep.validationFuncCalled = false;
187260
187309
  this.selectedStep = nextStep;
187261
187310
  }
187311
+ /**
187312
+ * Scans the currently selected step for a <dees-form> in its content. When
187313
+ * found, subscribes to the form's RxJS changeSubject so the primary
187314
+ * menuOption button can auto-enable/disable as required fields are filled.
187315
+ *
187316
+ * If the form reference is the same as the previous activation (e.g. on a
187317
+ * same-step re-render), we just recompute validity without re-subscribing.
187318
+ */
187319
+ scanActiveForm(selectedStepElement) {
187320
+ const form = selectedStepElement.querySelector("dees-form");
187321
+ if (form === this.activeForm) {
187322
+ this.recomputeFormValid();
187323
+ return;
187324
+ }
187325
+ this.activeFormSubscription?.unsubscribe();
187326
+ this.activeFormSubscription = void 0;
187327
+ this.activeForm = form;
187328
+ if (!form) {
187329
+ this.activeFormValid = true;
187330
+ return;
187331
+ }
187332
+ this.recomputeFormValid();
187333
+ this.activeFormSubscription = form.changeSubject.subscribe(() => {
187334
+ this.recomputeFormValid();
187335
+ });
187336
+ }
187337
+ /**
187338
+ * Recomputes activeFormValid by checking every required field in the active
187339
+ * form for a non-empty value. Mirrors dees-form.updateRequiredStatus's logic
187340
+ * but stores the result on the stepper instead of mutating a submit button.
187341
+ */
187342
+ recomputeFormValid() {
187343
+ const form = this.activeForm;
187344
+ if (!form) {
187345
+ this.activeFormValid = true;
187346
+ return;
187347
+ }
187348
+ const fields = form.getFormElements();
187349
+ this.activeFormValid = fields.every(
187350
+ (field) => !field.required || field.value !== null && field.value !== void 0 && field.value !== ""
187351
+ );
187352
+ }
187353
+ /**
187354
+ * Click handler for menuOption buttons in the footer. For the primary (last)
187355
+ * button, if an active form is present, gates on required-field validity and
187356
+ * triggers the form's gatherAndDispatch() before running the action. The
187357
+ * action is awaited so any async work (e.g. goNext → scroll animation)
187358
+ * completes before the click handler returns.
187359
+ */
187360
+ async handleMenuOptionClick(optionArg, isPrimary) {
187361
+ const form = this.activeForm;
187362
+ if (isPrimary && form) {
187363
+ if (!this.activeFormValid) return;
187364
+ await new Promise((resolve2) => {
187365
+ form.addEventListener("formData", () => resolve2(), { once: true });
187366
+ form.gatherAndDispatch();
187367
+ });
187368
+ }
187369
+ await optionArg.action(this);
187370
+ }
187371
+ async destroy() {
187372
+ const domtools19 = await this.domtoolsPromise;
187373
+ const container = this.shadowRoot.querySelector(".stepperContainer");
187374
+ container?.classList.add("predestroy");
187375
+ await domtools19.convenience.smartdelay.delayFor(200);
187376
+ if (this.parentElement) {
187377
+ this.parentElement.removeChild(this);
187378
+ }
187379
+ if (this.windowLayer) {
187380
+ await this.windowLayer.destroy();
187381
+ }
187382
+ this.activeFormSubscription?.unsubscribe();
187383
+ this.activeFormSubscription = void 0;
187384
+ this.activeForm = null;
187385
+ zIndexRegistry.unregister(this);
187386
+ }
187262
187387
  };
187263
187388
  _init82 = __decoratorStart(_a81);
187264
187389
  _steps = new WeakMap();
187265
187390
  _selectedStep = new WeakMap();
187391
+ _overlay = new WeakMap();
187392
+ _stepperZIndex = new WeakMap();
187393
+ _activeForm = new WeakMap();
187394
+ _activeFormValid = new WeakMap();
187266
187395
  __decorateElement(_init82, 4, "steps", _steps_dec, _DeesStepper, _steps);
187267
187396
  __decorateElement(_init82, 4, "selectedStep", _selectedStep_dec, _DeesStepper, _selectedStep);
187397
+ __decorateElement(_init82, 4, "overlay", _overlay_dec, _DeesStepper, _overlay);
187398
+ __decorateElement(_init82, 4, "stepperZIndex", _stepperZIndex_dec, _DeesStepper, _stepperZIndex);
187399
+ __decorateElement(_init82, 4, "activeForm", _activeForm_dec, _DeesStepper, _activeForm);
187400
+ __decorateElement(_init82, 4, "activeFormValid", _activeFormValid_dec, _DeesStepper, _activeFormValid);
187268
187401
  _DeesStepper = __decorateElement(_init82, 0, "DeesStepper", _DeesStepper_decorators, _DeesStepper);
187269
187402
  __name(_DeesStepper, "DeesStepper");
187403
+ // STATIC
187270
187404
  __publicField(_DeesStepper, "demo", stepperDemo);
187271
187405
  __publicField(_DeesStepper, "demoGroups", ["Layout", "Form"]);
187272
187406
  __publicField(_DeesStepper, "styles", [
@@ -187278,7 +187412,24 @@ __publicField(_DeesStepper, "styles", [
187278
187412
  position: absolute;
187279
187413
  width: 100%;
187280
187414
  height: 100%;
187415
+ font-family: ${cssGeistFontFamily};
187416
+ color: var(--dees-color-text-primary);
187281
187417
  }
187418
+
187419
+ /*
187420
+ * In overlay mode the host is "transparent" to layout — the inner
187421
+ * .stepperContainer.overlay is what pins to the viewport and carries the
187422
+ * z-index. Keeping :host unpositioned avoids nesting the stacking context
187423
+ * under an auto-z-index parent (which was trapping .stepperContainer
187424
+ * below DeesWindowLayer's sibling layers). This mirrors how dees-modal
187425
+ * keeps its own :host unpositioned and lets .modalContainer drive layout.
187426
+ */
187427
+ :host([overlay]) {
187428
+ position: static;
187429
+ width: 0;
187430
+ height: 0;
187431
+ }
187432
+
187282
187433
  .stepperContainer {
187283
187434
  position: absolute;
187284
187435
  width: 100%;
@@ -187286,101 +187437,120 @@ __publicField(_DeesStepper, "styles", [
187286
187437
  overflow: hidden;
187287
187438
  }
187288
187439
 
187289
- .step {
187440
+ .stepperContainer.overlay {
187441
+ position: fixed;
187442
+ top: 0;
187443
+ left: 0;
187444
+ width: 100vw;
187445
+ height: 100vh;
187446
+ }
187447
+
187448
+ .stepperContainer.predestroy {
187449
+ opacity: 0;
187450
+ transition: opacity 0.2s ease-in;
187451
+ }
187452
+
187453
+ dees-tile.step {
187290
187454
  position: relative;
187291
187455
  pointer-events: none;
187292
- overflow: hidden;
187293
- transition: transform 0.7s cubic-bezier(0.87, 0, 0.13, 1), box-shadow 0.7s cubic-bezier(0.87, 0, 0.13, 1), filter 0.7s cubic-bezier(0.87, 0, 0.13, 1), border 0.7s cubic-bezier(0.87, 0, 0.13, 1);
187294
187456
  max-width: 500px;
187295
187457
  min-height: 300px;
187296
- border-radius: 12px;
187297
- background: ${cssManager.bdTheme("#ffffff", "#0f0f11")};
187298
- border: 1px solid ${cssManager.bdTheme("#e2e8f0", "#272729")};
187299
- color: ${cssManager.bdTheme("#0f172a", "#f5f5f5")};
187300
187458
  margin: auto;
187301
187459
  margin-bottom: 20px;
187302
187460
  filter: opacity(0.55) saturate(0.85);
187303
- box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);
187461
+ transition: transform 0.7s cubic-bezier(0.87, 0, 0.13, 1), filter 0.7s cubic-bezier(0.87, 0, 0.13, 1);
187304
187462
  user-select: none;
187305
187463
  }
187306
187464
 
187307
- .step.selected {
187465
+ dees-tile.step.selected {
187308
187466
  pointer-events: all;
187309
187467
  filter: opacity(1) saturate(1);
187310
187468
  user-select: auto;
187311
187469
  }
187312
187470
 
187313
- .step.hiddenStep {
187471
+ dees-tile.step.hiddenStep {
187314
187472
  filter: opacity(0);
187315
187473
  }
187316
187474
 
187317
- .step.entrance {
187318
- transition: transform 0.35s ease, box-shadow 0.35s ease, filter 0.35s ease, border 0.35s ease;
187475
+ dees-tile.step.entrance {
187476
+ transition: transform 0.35s ease, filter 0.35s ease;
187319
187477
  }
187320
187478
 
187321
- .step.entrance.hiddenStep {
187479
+ dees-tile.step.entrance.hiddenStep {
187322
187480
  transform: translateY(16px);
187323
187481
  }
187324
187482
 
187325
- .step:last-child {
187483
+ dees-tile.step:last-child {
187326
187484
  margin-bottom: 100vh;
187327
187485
  }
187328
187486
 
187329
- .step .stepCounter {
187330
- color: ${cssManager.bdTheme("#64748b", "#a1a1aa")};
187331
- position: absolute;
187332
- top: 12px;
187333
- right: 12px;
187334
- padding: 6px 14px;
187335
- font-size: 12px;
187336
- border-radius: 999px;
187337
- background: ${cssManager.bdTheme("rgba(226, 232, 240, 0.5)", "rgba(63, 63, 70, 0.45)")};
187338
- border: 1px solid ${cssManager.bdTheme("rgba(226, 232, 240, 0.7)", "rgba(63, 63, 70, 0.6)")};
187487
+ .stepperContainer.overlay dees-tile.step::part(outer) {
187488
+ box-shadow:
187489
+ 0 0 0 1px ${cssManager.bdTheme("hsl(0 0% 0% / 0.03)", "hsl(0 0% 100% / 0.03)")},
187490
+ 0 8px 40px ${cssManager.bdTheme("hsl(0 0% 0% / 0.12)", "hsl(0 0% 0% / 0.5)")},
187491
+ 0 2px 8px ${cssManager.bdTheme("hsl(0 0% 0% / 0.06)", "hsl(0 0% 0% / 0.25)")};
187339
187492
  }
187340
187493
 
187341
- .step .goBack {
187342
- position: absolute;
187343
- top: 12px;
187344
- left: 12px;
187494
+ .step-header {
187495
+ height: 36px;
187496
+ display: flex;
187497
+ align-items: center;
187498
+ justify-content: space-between;
187499
+ padding: 0 8px 0 12px;
187500
+ gap: 12px;
187501
+ }
187502
+
187503
+ .goBack-spacer {
187504
+ width: 1px;
187505
+ }
187506
+
187507
+ .step-header .goBack {
187345
187508
  display: inline-flex;
187346
187509
  align-items: center;
187347
187510
  gap: 6px;
187348
- padding: 6px 12px;
187511
+ height: 24px;
187512
+ padding: 0 8px;
187349
187513
  font-size: 12px;
187350
187514
  font-weight: 500;
187351
- border-radius: 999px;
187352
- border: 1px solid ${cssManager.bdTheme("rgba(226, 232, 240, 0.9)", "rgba(63, 63, 70, 0.85)")};
187353
- background: ${cssManager.bdTheme("rgba(255, 255, 255, 0.9)", "rgba(39, 39, 42, 0.85)")};
187354
- color: ${cssManager.bdTheme("#475569", "#d4d4d8")};
187515
+ line-height: 1;
187516
+ border: none;
187517
+ background: transparent;
187518
+ color: var(--dees-color-text-muted);
187519
+ border-radius: 4px;
187355
187520
  cursor: pointer;
187356
- transition: border 0.2s ease, color 0.2s ease, background 0.2s ease, transform 0.2s ease;
187521
+ transition: background 0.15s ease, color 0.15s ease, transform 0.2s ease;
187357
187522
  }
187358
187523
 
187359
- .step .goBack:hover {
187360
- color: ${cssManager.bdTheme("#0f172a", "#fafafa")};
187361
- border-color: ${cssManager.bdTheme(dark.blue, dark.blue)};
187362
- background: ${cssManager.bdTheme("rgba(226, 232, 240, 0.95)", "rgba(63, 63, 70, 0.7)")};
187524
+ .step-header .goBack:hover {
187525
+ background: var(--dees-color-hover);
187526
+ color: var(--dees-color-text-secondary);
187363
187527
  transform: translateX(-2px);
187364
187528
  }
187365
187529
 
187366
- .step .goBack:active {
187367
- color: ${cssManager.bdTheme("#0f172a", "#fafafa")};
187368
- border-color: ${cssManager.bdTheme(dark.blueActive, dark.blueActive)};
187369
- background: ${cssManager.bdTheme("rgba(226, 232, 240, 0.85)", "rgba(63, 63, 70, 0.6)")};
187530
+ .step-header .goBack:active {
187531
+ background: ${cssManager.bdTheme("hsl(0 0% 90%)", "hsl(0 0% 15%)")};
187370
187532
  }
187371
187533
 
187372
- .step .goBack span {
187534
+ .step-header .goBack span {
187373
187535
  transition: transform 0.2s ease;
187374
187536
  display: inline-block;
187375
187537
  }
187376
187538
 
187377
- .step .goBack:hover span {
187539
+ .step-header .goBack:hover span {
187378
187540
  transform: translateX(-2px);
187379
187541
  }
187380
187542
 
187381
- .step .title {
187543
+ .step-header .stepCounter {
187544
+ color: var(--dees-color-text-muted);
187545
+ font-size: 12px;
187546
+ font-weight: 500;
187547
+ letter-spacing: -0.01em;
187548
+ padding: 0 8px;
187549
+ }
187550
+
187551
+ .step-body .title {
187382
187552
  text-align: center;
187383
- padding-top: 64px;
187553
+ padding-top: 32px;
187384
187554
  font-family: 'Geist Sans', sans-serif;
187385
187555
  font-size: 24px;
187386
187556
  font-weight: 600;
@@ -187388,9 +187558,92 @@ __publicField(_DeesStepper, "styles", [
187388
187558
  color: inherit;
187389
187559
  }
187390
187560
 
187391
- .step .content {
187561
+ .step-body .content {
187392
187562
  padding: 32px;
187393
187563
  }
187564
+
187565
+ /* --- Footer: modal-style bottom buttons --- */
187566
+ .bottomButtons {
187567
+ display: flex;
187568
+ flex-direction: row;
187569
+ justify-content: flex-end;
187570
+ align-items: center;
187571
+ gap: 0;
187572
+ height: 36px;
187573
+ width: 100%;
187574
+ box-sizing: border-box;
187575
+ }
187576
+
187577
+ .bottomButtons .bottomButton {
187578
+ padding: 0 16px;
187579
+ height: 100%;
187580
+ text-align: center;
187581
+ font-size: 12px;
187582
+ font-weight: 500;
187583
+ cursor: pointer;
187584
+ user-select: none;
187585
+ transition: all 0.15s ease;
187586
+ background: transparent;
187587
+ border: none;
187588
+ border-left: 1px solid var(--dees-color-border-subtle);
187589
+ color: var(--dees-color-text-muted);
187590
+ white-space: nowrap;
187591
+ display: flex;
187592
+ align-items: center;
187593
+ }
187594
+
187595
+ .bottomButtons .bottomButton:first-child {
187596
+ border-left: none;
187597
+ }
187598
+
187599
+ .bottomButtons .bottomButton:hover {
187600
+ background: var(--dees-color-hover);
187601
+ color: var(--dees-color-text-primary);
187602
+ }
187603
+
187604
+ .bottomButtons .bottomButton:active {
187605
+ background: ${cssManager.bdTheme("hsl(0 0% 92%)", "hsl(0 0% 13%)")};
187606
+ }
187607
+
187608
+ .bottomButtons .bottomButton.primary {
187609
+ color: ${cssManager.bdTheme("hsl(217.2 91.2% 59.8%)", "hsl(213.1 93.9% 67.8%)")};
187610
+ font-weight: 600;
187611
+ }
187612
+
187613
+ .bottomButtons .bottomButton.primary:hover {
187614
+ background: ${cssManager.bdTheme("hsl(217.2 91.2% 59.8% / 0.08)", "hsl(213.1 93.9% 67.8% / 0.08)")};
187615
+ color: ${cssManager.bdTheme("hsl(217.2 91.2% 50%)", "hsl(213.1 93.9% 75%)")};
187616
+ }
187617
+
187618
+ .bottomButtons .bottomButton.primary:active {
187619
+ background: ${cssManager.bdTheme("hsl(217.2 91.2% 59.8% / 0.12)", "hsl(213.1 93.9% 67.8% / 0.12)")};
187620
+ }
187621
+
187622
+ .bottomButtons .bottomButton.disabled {
187623
+ pointer-events: none;
187624
+ opacity: 0.4;
187625
+ cursor: not-allowed;
187626
+ }
187627
+
187628
+ .bottomButtons .bottomButton.disabled:hover {
187629
+ background: transparent;
187630
+ color: var(--dees-color-text-muted);
187631
+ }
187632
+
187633
+ /* Hint shown on the left of the footer when the active step's form has
187634
+ unfilled required fields. Uses margin-right: auto to push right-aligned
187635
+ buttons to the right while keeping the hint flush-left. */
187636
+ .bottomButtons .stepHint {
187637
+ margin-right: auto;
187638
+ padding: 0 16px;
187639
+ font-size: 11px;
187640
+ line-height: 1;
187641
+ letter-spacing: -0.01em;
187642
+ color: var(--dees-color-text-muted);
187643
+ display: flex;
187644
+ align-items: center;
187645
+ user-select: none;
187646
+ }
187394
187647
  `
187395
187648
  ]);
187396
187649
  __runInitializers(_init82, 1, _DeesStepper);
@@ -200867,7 +201120,7 @@ init_group_runtime();
200867
201120
  // ts_web/00_commitinfo_data.ts
200868
201121
  var commitinfo = {
200869
201122
  name: "@design.estate/dees-catalog",
200870
- version: "3.70.1",
201123
+ version: "3.71.0",
200871
201124
  description: "A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript."
200872
201125
  };
200873
201126
  export {
@@ -202840,4 +203093,4 @@ ibantools/jsnext/ibantools.js:
202840
203093
  * @preferred
202841
203094
  *)
202842
203095
  */
202843
- //# sourceMappingURL=bundle-1775897260164.js.map
203096
+ //# sourceMappingURL=bundle-1775904431442.js.map