@design.estate/dees-catalog 3.70.0 → 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.
@@ -140045,9 +140045,7 @@ __publicField(_DeesModal, "styles", [
140045
140045
  }
140046
140046
 
140047
140047
  .heading .header-button dees-icon {
140048
- width: 14px;
140049
- height: 14px;
140050
- display: block;
140048
+ font-size: 14px;
140051
140049
  }
140052
140050
 
140053
140051
  .content {
@@ -187014,175 +187012,223 @@ var DeesPagination = _DeesPagination;
187014
187012
 
187015
187013
  // ts_web/elements/00group-layout/dees-stepper/dees-stepper.demo.ts
187016
187014
  init_dist_ts30();
187017
- var stepperDemo = /* @__PURE__ */ __name(() => b2`
187018
- <dees-stepper
187019
- .steps=${[
187015
+ var demoSteps = [
187020
187016
  {
187021
187017
  title: "Account Setup",
187022
187018
  content: b2`
187023
- <dees-form>
187024
- <dees-input-text key="email" label="Work Email" required></dees-input-text>
187025
- <dees-input-text key="password" label="Create Password" type="password" required></dees-input-text>
187026
- <dees-form-submit>Continue</dees-form-submit>
187027
- </dees-form>
187028
- `,
187029
- validationFunc: /* @__PURE__ */ __name(async (stepperArg, elementArg) => {
187030
- const deesForm = elementArg.querySelector("dees-form");
187031
- deesForm.addEventListener("formData", () => stepperArg.goNext(), { once: true });
187032
- }, "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
+ ]
187033
187027
  },
187034
187028
  {
187035
187029
  title: "Profile Details",
187036
187030
  content: b2`
187037
- <dees-form>
187038
- <dees-input-text key="firstName" label="First Name" required></dees-input-text>
187039
- <dees-input-text key="lastName" label="Last Name" required></dees-input-text>
187040
- <dees-form-submit>Continue</dees-form-submit>
187041
- </dees-form>
187042
- `,
187043
- validationFunc: /* @__PURE__ */ __name(async (stepperArg, elementArg) => {
187044
- const deesForm = elementArg.querySelector("dees-form");
187045
- deesForm.addEventListener("formData", () => stepperArg.goNext(), { once: true });
187046
- }, "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
+ ]
187047
187039
  },
187048
187040
  {
187049
187041
  title: "Contact Information",
187050
187042
  content: b2`
187051
- <dees-form>
187052
- <dees-input-phone key="phone" label="Mobile Number" required></dees-input-phone>
187053
- <dees-input-text key="company" label="Company"></dees-input-text>
187054
- <dees-form-submit>Continue</dees-form-submit>
187055
- </dees-form>
187056
- `,
187057
- validationFunc: /* @__PURE__ */ __name(async (stepperArg, elementArg) => {
187058
- const deesForm = elementArg.querySelector("dees-form");
187059
- deesForm.addEventListener("formData", () => stepperArg.goNext(), { once: true });
187060
- }, "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
+ ]
187061
187051
  },
187062
187052
  {
187063
187053
  title: "Team Size",
187064
187054
  content: b2`
187065
- <dees-form>
187066
- <dees-input-dropdown
187067
- key="teamSize"
187068
- label="How big is your team?"
187069
- .options=${[
187055
+ <dees-form>
187056
+ <dees-input-dropdown
187057
+ key="teamSize"
187058
+ label="How big is your team?"
187059
+ .options=${[
187070
187060
  { label: "1-5", value: "1-5" },
187071
187061
  { label: "6-20", value: "6-20" },
187072
187062
  { label: "21-50", value: "21-50" },
187073
187063
  { label: "51+", value: "51+" }
187074
187064
  ]}
187075
- required
187076
- ></dees-input-dropdown>
187077
- <dees-form-submit>Continue</dees-form-submit>
187078
- </dees-form>
187079
- `,
187080
- validationFunc: /* @__PURE__ */ __name(async (stepperArg, elementArg) => {
187081
- const deesForm = elementArg.querySelector("dees-form");
187082
- deesForm.addEventListener("formData", () => stepperArg.goNext(), { once: true });
187083
- }, "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
+ ]
187084
187072
  },
187085
187073
  {
187086
187074
  title: "Goals",
187087
187075
  content: b2`
187088
- <dees-form>
187089
- <dees-input-multitoggle
187090
- key="goal"
187091
- label="Main objective"
187092
- .options=${[
187076
+ <dees-form>
187077
+ <dees-input-multitoggle
187078
+ key="goal"
187079
+ label="Main objective"
187080
+ .options=${[
187093
187081
  { label: "Onboarding", value: "onboarding" },
187094
187082
  { label: "Analytics", value: "analytics" },
187095
187083
  { label: "Automation", value: "automation" }
187096
187084
  ]}
187097
- required
187098
- ></dees-input-multitoggle>
187099
- <dees-form-submit>Continue</dees-form-submit>
187100
- </dees-form>
187101
- `,
187102
- validationFunc: /* @__PURE__ */ __name(async (stepperArg, elementArg) => {
187103
- const deesForm = elementArg.querySelector("dees-form");
187104
- deesForm.addEventListener("formData", () => stepperArg.goNext(), { once: true });
187105
- }, "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
+ ]
187106
187092
  },
187107
187093
  {
187108
187094
  title: "Brand Preferences",
187109
187095
  content: b2`
187110
- <dees-form>
187111
- <dees-input-text key="brandColor" label="Primary brand color"></dees-input-text>
187112
- <dees-input-text key="tone" label="Preferred tone (e.g. friendly, formal)"></dees-input-text>
187113
- <dees-form-submit>Continue</dees-form-submit>
187114
- </dees-form>
187115
- `,
187116
- validationFunc: /* @__PURE__ */ __name(async (stepperArg, elementArg) => {
187117
- const deesForm = elementArg.querySelector("dees-form");
187118
- deesForm.addEventListener("formData", () => stepperArg.goNext(), { once: true });
187119
- }, "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
+ ]
187120
187104
  },
187121
187105
  {
187122
187106
  title: "Integrations",
187123
187107
  content: b2`
187124
- <dees-form>
187125
- <dees-input-list
187126
- key="integrations"
187127
- label="Integrations in use"
187128
- placeholder="Add integration"
187129
- ></dees-input-list>
187130
- <dees-form-submit>Continue</dees-form-submit>
187131
- </dees-form>
187132
- `,
187133
- validationFunc: /* @__PURE__ */ __name(async (stepperArg, elementArg) => {
187134
- const deesForm = elementArg.querySelector("dees-form");
187135
- deesForm.addEventListener("formData", () => stepperArg.goNext(), { once: true });
187136
- }, "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
+ ]
187137
187119
  },
187138
187120
  {
187139
187121
  title: "Review & Launch",
187140
187122
  content: b2`
187141
- <dees-panel>
187142
- <p>Almost there! Review your selections and launch whenever you're ready.</p>
187143
- </dees-panel>
187144
- `
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
+ ]
187145
187130
  }
187146
- ]}
187147
- ></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>
187148
187146
  `, "stepperDemo");
187149
187147
 
187150
187148
  // ts_web/elements/00group-layout/dees-stepper/dees-stepper.ts
187151
187149
  init_dist_ts30();
187152
187150
  init_dist_ts29();
187153
187151
  init_theme();
187154
- 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;
187155
187153
  _DeesStepper_decorators = [customElement("dees-stepper")];
187156
187154
  var _DeesStepper = class _DeesStepper extends (_a81 = DeesElement, _steps_dec = [n5({
187157
187155
  type: Array
187158
187156
  })], _selectedStep_dec = [n5({
187159
187157
  type: Object
187160
- })], _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) {
187161
187162
  constructor() {
187162
187163
  super();
187163
187164
  __privateAdd(this, _steps, __runInitializers(_init82, 8, this, [])), __runInitializers(_init82, 11, this);
187164
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");
187165
187172
  __publicField(this, "getIndexOfStep", /* @__PURE__ */ __name((stepArg) => {
187166
187173
  return this.steps.findIndex((stepArg2) => stepArg === stepArg2);
187167
187174
  }, "getIndexOfStep"));
187168
187175
  __publicField(this, "scroller");
187169
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
+ }
187170
187192
  render() {
187171
187193
  return b2`
187172
- <div class="stepperContainer">
187173
- ${this.steps.map(
187174
- (stepArg) => b2`<div
187175
- class="step ${stepArg === this.selectedStep ? "selected" : null} ${this.getIndexOfStep(stepArg) > this.getIndexOfStep(this.selectedStep) ? "hiddenStep" : ""} ${this.getIndexOfStep(stepArg) === 0 ? "entrance" : ""}"
187176
- >
187177
- ${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>`}
187178
187209
  <div class="stepCounter">
187179
- Step ${this.steps.findIndex((elementArg) => elementArg === stepArg) + 1} of
187180
- ${this.steps.length}
187210
+ Step ${stepIndex + 1} of ${this.steps.length}
187181
187211
  </div>
187212
+ </div>
187213
+ <div class="step-body">
187182
187214
  <div class="title">${stepArg.title}</div>
187183
187215
  <div class="content">${stepArg.content}</div>
187184
- </div> `
187185
- )}
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
+ })}
187186
187232
  </div>
187187
187233
  `;
187188
187234
  }
@@ -187204,6 +187250,7 @@ var _DeesStepper = class _DeesStepper extends (_a81 = DeesElement, _steps_dec =
187204
187250
  if (!selectedStepElement) {
187205
187251
  return;
187206
187252
  }
187253
+ this.scanActiveForm(selectedStepElement);
187207
187254
  if (!stepperContainer.style.paddingTop) {
187208
187255
  stepperContainer.style.paddingTop = `${stepperContainer.offsetHeight / 2 - selectedStepElement.offsetHeight / 2}px`;
187209
187256
  }
@@ -187261,14 +187308,99 @@ var _DeesStepper = class _DeesStepper extends (_a81 = DeesElement, _steps_dec =
187261
187308
  nextStep.validationFuncCalled = false;
187262
187309
  this.selectedStep = nextStep;
187263
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
+ }
187264
187387
  };
187265
187388
  _init82 = __decoratorStart(_a81);
187266
187389
  _steps = new WeakMap();
187267
187390
  _selectedStep = new WeakMap();
187391
+ _overlay = new WeakMap();
187392
+ _stepperZIndex = new WeakMap();
187393
+ _activeForm = new WeakMap();
187394
+ _activeFormValid = new WeakMap();
187268
187395
  __decorateElement(_init82, 4, "steps", _steps_dec, _DeesStepper, _steps);
187269
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);
187270
187401
  _DeesStepper = __decorateElement(_init82, 0, "DeesStepper", _DeesStepper_decorators, _DeesStepper);
187271
187402
  __name(_DeesStepper, "DeesStepper");
187403
+ // STATIC
187272
187404
  __publicField(_DeesStepper, "demo", stepperDemo);
187273
187405
  __publicField(_DeesStepper, "demoGroups", ["Layout", "Form"]);
187274
187406
  __publicField(_DeesStepper, "styles", [
@@ -187280,7 +187412,24 @@ __publicField(_DeesStepper, "styles", [
187280
187412
  position: absolute;
187281
187413
  width: 100%;
187282
187414
  height: 100%;
187415
+ font-family: ${cssGeistFontFamily};
187416
+ color: var(--dees-color-text-primary);
187283
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
+
187284
187433
  .stepperContainer {
187285
187434
  position: absolute;
187286
187435
  width: 100%;
@@ -187288,101 +187437,120 @@ __publicField(_DeesStepper, "styles", [
187288
187437
  overflow: hidden;
187289
187438
  }
187290
187439
 
187291
- .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 {
187292
187454
  position: relative;
187293
187455
  pointer-events: none;
187294
- overflow: hidden;
187295
- 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);
187296
187456
  max-width: 500px;
187297
187457
  min-height: 300px;
187298
- border-radius: 12px;
187299
- background: ${cssManager.bdTheme("#ffffff", "#0f0f11")};
187300
- border: 1px solid ${cssManager.bdTheme("#e2e8f0", "#272729")};
187301
- color: ${cssManager.bdTheme("#0f172a", "#f5f5f5")};
187302
187458
  margin: auto;
187303
187459
  margin-bottom: 20px;
187304
187460
  filter: opacity(0.55) saturate(0.85);
187305
- 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);
187306
187462
  user-select: none;
187307
187463
  }
187308
187464
 
187309
- .step.selected {
187465
+ dees-tile.step.selected {
187310
187466
  pointer-events: all;
187311
187467
  filter: opacity(1) saturate(1);
187312
187468
  user-select: auto;
187313
187469
  }
187314
187470
 
187315
- .step.hiddenStep {
187471
+ dees-tile.step.hiddenStep {
187316
187472
  filter: opacity(0);
187317
187473
  }
187318
187474
 
187319
- .step.entrance {
187320
- 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;
187321
187477
  }
187322
187478
 
187323
- .step.entrance.hiddenStep {
187479
+ dees-tile.step.entrance.hiddenStep {
187324
187480
  transform: translateY(16px);
187325
187481
  }
187326
187482
 
187327
- .step:last-child {
187483
+ dees-tile.step:last-child {
187328
187484
  margin-bottom: 100vh;
187329
187485
  }
187330
187486
 
187331
- .step .stepCounter {
187332
- color: ${cssManager.bdTheme("#64748b", "#a1a1aa")};
187333
- position: absolute;
187334
- top: 12px;
187335
- right: 12px;
187336
- padding: 6px 14px;
187337
- font-size: 12px;
187338
- border-radius: 999px;
187339
- background: ${cssManager.bdTheme("rgba(226, 232, 240, 0.5)", "rgba(63, 63, 70, 0.45)")};
187340
- 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)")};
187341
187492
  }
187342
187493
 
187343
- .step .goBack {
187344
- position: absolute;
187345
- top: 12px;
187346
- 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 {
187347
187508
  display: inline-flex;
187348
187509
  align-items: center;
187349
187510
  gap: 6px;
187350
- padding: 6px 12px;
187511
+ height: 24px;
187512
+ padding: 0 8px;
187351
187513
  font-size: 12px;
187352
187514
  font-weight: 500;
187353
- border-radius: 999px;
187354
- border: 1px solid ${cssManager.bdTheme("rgba(226, 232, 240, 0.9)", "rgba(63, 63, 70, 0.85)")};
187355
- background: ${cssManager.bdTheme("rgba(255, 255, 255, 0.9)", "rgba(39, 39, 42, 0.85)")};
187356
- 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;
187357
187520
  cursor: pointer;
187358
- 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;
187359
187522
  }
187360
187523
 
187361
- .step .goBack:hover {
187362
- color: ${cssManager.bdTheme("#0f172a", "#fafafa")};
187363
- border-color: ${cssManager.bdTheme(dark.blue, dark.blue)};
187364
- 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);
187365
187527
  transform: translateX(-2px);
187366
187528
  }
187367
187529
 
187368
- .step .goBack:active {
187369
- color: ${cssManager.bdTheme("#0f172a", "#fafafa")};
187370
- border-color: ${cssManager.bdTheme(dark.blueActive, dark.blueActive)};
187371
- 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%)")};
187372
187532
  }
187373
187533
 
187374
- .step .goBack span {
187534
+ .step-header .goBack span {
187375
187535
  transition: transform 0.2s ease;
187376
187536
  display: inline-block;
187377
187537
  }
187378
187538
 
187379
- .step .goBack:hover span {
187539
+ .step-header .goBack:hover span {
187380
187540
  transform: translateX(-2px);
187381
187541
  }
187382
187542
 
187383
- .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 {
187384
187552
  text-align: center;
187385
- padding-top: 64px;
187553
+ padding-top: 32px;
187386
187554
  font-family: 'Geist Sans', sans-serif;
187387
187555
  font-size: 24px;
187388
187556
  font-weight: 600;
@@ -187390,9 +187558,92 @@ __publicField(_DeesStepper, "styles", [
187390
187558
  color: inherit;
187391
187559
  }
187392
187560
 
187393
- .step .content {
187561
+ .step-body .content {
187394
187562
  padding: 32px;
187395
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
+ }
187396
187647
  `
187397
187648
  ]);
187398
187649
  __runInitializers(_init82, 1, _DeesStepper);
@@ -200869,7 +201120,7 @@ init_group_runtime();
200869
201120
  // ts_web/00_commitinfo_data.ts
200870
201121
  var commitinfo = {
200871
201122
  name: "@design.estate/dees-catalog",
200872
- version: "3.70.0",
201123
+ version: "3.71.0",
200873
201124
  description: "A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript."
200874
201125
  };
200875
201126
  export {
@@ -202842,4 +203093,4 @@ ibantools/jsnext/ibantools.js:
202842
203093
  * @preferred
202843
203094
  *)
202844
203095
  */
202845
- //# sourceMappingURL=bundle-1775659924128.js.map
203096
+ //# sourceMappingURL=bundle-1775904431442.js.map