@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.
@@ -192358,175 +192358,223 @@ var DeesPagination = _DeesPagination;
192358
192358
 
192359
192359
  // ts_web/elements/00group-layout/dees-stepper/dees-stepper.demo.ts
192360
192360
  init_dist_ts30();
192361
- var stepperDemo = /* @__PURE__ */ __name(() => b2`
192362
- <dees-stepper
192363
- .steps=${[
192361
+ var demoSteps = [
192364
192362
  {
192365
192363
  title: "Account Setup",
192366
192364
  content: b2`
192367
- <dees-form>
192368
- <dees-input-text key="email" label="Work Email" required></dees-input-text>
192369
- <dees-input-text key="password" label="Create Password" type="password" required></dees-input-text>
192370
- <dees-form-submit>Continue</dees-form-submit>
192371
- </dees-form>
192372
- `,
192373
- validationFunc: /* @__PURE__ */ __name(async (stepperArg, elementArg) => {
192374
- const deesForm = elementArg.querySelector("dees-form");
192375
- deesForm.addEventListener("formData", () => stepperArg.goNext(), { once: true });
192376
- }, "validationFunc")
192365
+ <dees-form>
192366
+ <dees-input-text key="email" label="Work Email" required></dees-input-text>
192367
+ <dees-input-text key="password" label="Create Password" type="password" required></dees-input-text>
192368
+ </dees-form>
192369
+ `,
192370
+ menuOptions: [
192371
+ { name: "Continue", action: /* @__PURE__ */ __name(async (stepper) => stepper.goNext(), "action") }
192372
+ ]
192377
192373
  },
192378
192374
  {
192379
192375
  title: "Profile Details",
192380
192376
  content: b2`
192381
- <dees-form>
192382
- <dees-input-text key="firstName" label="First Name" required></dees-input-text>
192383
- <dees-input-text key="lastName" label="Last Name" required></dees-input-text>
192384
- <dees-form-submit>Continue</dees-form-submit>
192385
- </dees-form>
192386
- `,
192387
- validationFunc: /* @__PURE__ */ __name(async (stepperArg, elementArg) => {
192388
- const deesForm = elementArg.querySelector("dees-form");
192389
- deesForm.addEventListener("formData", () => stepperArg.goNext(), { once: true });
192390
- }, "validationFunc")
192377
+ <dees-form>
192378
+ <dees-input-text key="firstName" label="First Name" required></dees-input-text>
192379
+ <dees-input-text key="lastName" label="Last Name" required></dees-input-text>
192380
+ </dees-form>
192381
+ `,
192382
+ menuOptions: [
192383
+ { name: "Continue", action: /* @__PURE__ */ __name(async (stepper) => stepper.goNext(), "action") }
192384
+ ]
192391
192385
  },
192392
192386
  {
192393
192387
  title: "Contact Information",
192394
192388
  content: b2`
192395
- <dees-form>
192396
- <dees-input-phone key="phone" label="Mobile Number" required></dees-input-phone>
192397
- <dees-input-text key="company" label="Company"></dees-input-text>
192398
- <dees-form-submit>Continue</dees-form-submit>
192399
- </dees-form>
192400
- `,
192401
- validationFunc: /* @__PURE__ */ __name(async (stepperArg, elementArg) => {
192402
- const deesForm = elementArg.querySelector("dees-form");
192403
- deesForm.addEventListener("formData", () => stepperArg.goNext(), { once: true });
192404
- }, "validationFunc")
192389
+ <dees-form>
192390
+ <dees-input-phone key="phone" label="Mobile Number" required></dees-input-phone>
192391
+ <dees-input-text key="company" label="Company"></dees-input-text>
192392
+ </dees-form>
192393
+ `,
192394
+ menuOptions: [
192395
+ { name: "Continue", action: /* @__PURE__ */ __name(async (stepper) => stepper.goNext(), "action") }
192396
+ ]
192405
192397
  },
192406
192398
  {
192407
192399
  title: "Team Size",
192408
192400
  content: b2`
192409
- <dees-form>
192410
- <dees-input-dropdown
192411
- key="teamSize"
192412
- label="How big is your team?"
192413
- .options=${[
192401
+ <dees-form>
192402
+ <dees-input-dropdown
192403
+ key="teamSize"
192404
+ label="How big is your team?"
192405
+ .options=${[
192414
192406
  { label: "1-5", value: "1-5" },
192415
192407
  { label: "6-20", value: "6-20" },
192416
192408
  { label: "21-50", value: "21-50" },
192417
192409
  { label: "51+", value: "51+" }
192418
192410
  ]}
192419
- required
192420
- ></dees-input-dropdown>
192421
- <dees-form-submit>Continue</dees-form-submit>
192422
- </dees-form>
192423
- `,
192424
- validationFunc: /* @__PURE__ */ __name(async (stepperArg, elementArg) => {
192425
- const deesForm = elementArg.querySelector("dees-form");
192426
- deesForm.addEventListener("formData", () => stepperArg.goNext(), { once: true });
192427
- }, "validationFunc")
192411
+ required
192412
+ ></dees-input-dropdown>
192413
+ </dees-form>
192414
+ `,
192415
+ menuOptions: [
192416
+ { name: "Continue", action: /* @__PURE__ */ __name(async (stepper) => stepper.goNext(), "action") }
192417
+ ]
192428
192418
  },
192429
192419
  {
192430
192420
  title: "Goals",
192431
192421
  content: b2`
192432
- <dees-form>
192433
- <dees-input-multitoggle
192434
- key="goal"
192435
- label="Main objective"
192436
- .options=${[
192422
+ <dees-form>
192423
+ <dees-input-multitoggle
192424
+ key="goal"
192425
+ label="Main objective"
192426
+ .options=${[
192437
192427
  { label: "Onboarding", value: "onboarding" },
192438
192428
  { label: "Analytics", value: "analytics" },
192439
192429
  { label: "Automation", value: "automation" }
192440
192430
  ]}
192441
- required
192442
- ></dees-input-multitoggle>
192443
- <dees-form-submit>Continue</dees-form-submit>
192444
- </dees-form>
192445
- `,
192446
- validationFunc: /* @__PURE__ */ __name(async (stepperArg, elementArg) => {
192447
- const deesForm = elementArg.querySelector("dees-form");
192448
- deesForm.addEventListener("formData", () => stepperArg.goNext(), { once: true });
192449
- }, "validationFunc")
192431
+ required
192432
+ ></dees-input-multitoggle>
192433
+ </dees-form>
192434
+ `,
192435
+ menuOptions: [
192436
+ { name: "Continue", action: /* @__PURE__ */ __name(async (stepper) => stepper.goNext(), "action") }
192437
+ ]
192450
192438
  },
192451
192439
  {
192452
192440
  title: "Brand Preferences",
192453
192441
  content: b2`
192454
- <dees-form>
192455
- <dees-input-text key="brandColor" label="Primary brand color"></dees-input-text>
192456
- <dees-input-text key="tone" label="Preferred tone (e.g. friendly, formal)"></dees-input-text>
192457
- <dees-form-submit>Continue</dees-form-submit>
192458
- </dees-form>
192459
- `,
192460
- validationFunc: /* @__PURE__ */ __name(async (stepperArg, elementArg) => {
192461
- const deesForm = elementArg.querySelector("dees-form");
192462
- deesForm.addEventListener("formData", () => stepperArg.goNext(), { once: true });
192463
- }, "validationFunc")
192442
+ <dees-form>
192443
+ <dees-input-text key="brandColor" label="Primary brand color"></dees-input-text>
192444
+ <dees-input-text key="tone" label="Preferred tone (e.g. friendly, formal)"></dees-input-text>
192445
+ </dees-form>
192446
+ `,
192447
+ menuOptions: [
192448
+ { name: "Continue", action: /* @__PURE__ */ __name(async (stepper) => stepper.goNext(), "action") }
192449
+ ]
192464
192450
  },
192465
192451
  {
192466
192452
  title: "Integrations",
192467
192453
  content: b2`
192468
- <dees-form>
192469
- <dees-input-list
192470
- key="integrations"
192471
- label="Integrations in use"
192472
- placeholder="Add integration"
192473
- ></dees-input-list>
192474
- <dees-form-submit>Continue</dees-form-submit>
192475
- </dees-form>
192476
- `,
192477
- validationFunc: /* @__PURE__ */ __name(async (stepperArg, elementArg) => {
192478
- const deesForm = elementArg.querySelector("dees-form");
192479
- deesForm.addEventListener("formData", () => stepperArg.goNext(), { once: true });
192480
- }, "validationFunc")
192454
+ <dees-form>
192455
+ <dees-input-list
192456
+ key="integrations"
192457
+ label="Integrations in use"
192458
+ placeholder="Add integration"
192459
+ ></dees-input-list>
192460
+ </dees-form>
192461
+ `,
192462
+ menuOptions: [
192463
+ { name: "Continue", action: /* @__PURE__ */ __name(async (stepper) => stepper.goNext(), "action") }
192464
+ ]
192481
192465
  },
192482
192466
  {
192483
192467
  title: "Review & Launch",
192484
192468
  content: b2`
192485
- <dees-panel>
192486
- <p>Almost there! Review your selections and launch whenever you're ready.</p>
192487
- </dees-panel>
192488
- `
192469
+ <dees-panel>
192470
+ <p>Almost there! Review your selections and launch whenever you're ready.</p>
192471
+ </dees-panel>
192472
+ `,
192473
+ menuOptions: [
192474
+ { name: "Launch", action: /* @__PURE__ */ __name(async (stepper) => stepper.goNext(), "action") }
192475
+ ]
192489
192476
  }
192490
- ]}
192491
- ></dees-stepper>
192477
+ ];
192478
+ var cloneSteps = /* @__PURE__ */ __name(() => demoSteps.map((step) => ({ ...step })), "cloneSteps");
192479
+ var stepperDemo = /* @__PURE__ */ __name(() => b2`
192480
+ <div style="position: absolute; inset: 0;">
192481
+ <div
192482
+ style="position: absolute; top: 16px; left: 50%; transform: translateX(-50%); z-index: 10;"
192483
+ >
192484
+ <dees-button
192485
+ @click=${async () => {
192486
+ await DeesStepper.createAndShow({ steps: cloneSteps() });
192487
+ }}
192488
+ >Open stepper as overlay</dees-button>
192489
+ </div>
192490
+ <dees-stepper .steps=${cloneSteps()}></dees-stepper>
192491
+ </div>
192492
192492
  `, "stepperDemo");
192493
192493
 
192494
192494
  // ts_web/elements/00group-layout/dees-stepper/dees-stepper.ts
192495
192495
  init_dist_ts30();
192496
192496
  init_dist_ts29();
192497
192497
  init_theme();
192498
- var _selectedStep_dec, _steps_dec, _a81, _DeesStepper_decorators, _init82, _steps, _selectedStep;
192498
+ var _activeFormValid_dec, _activeForm_dec, _stepperZIndex_dec, _overlay_dec, _selectedStep_dec, _steps_dec, _a81, _DeesStepper_decorators, _init82, _steps, _selectedStep, _overlay, _stepperZIndex, _activeForm, _activeFormValid;
192499
192499
  _DeesStepper_decorators = [customElement("dees-stepper")];
192500
192500
  var _DeesStepper = class _DeesStepper extends (_a81 = DeesElement, _steps_dec = [n5({
192501
192501
  type: Array
192502
192502
  })], _selectedStep_dec = [n5({
192503
192503
  type: Object
192504
- })], _a81) {
192504
+ })], _overlay_dec = [n5({
192505
+ type: Boolean,
192506
+ reflect: true
192507
+ })], _stepperZIndex_dec = [n5({ type: Number, attribute: false })], _activeForm_dec = [n5({ type: Object, attribute: false })], _activeFormValid_dec = [n5({ type: Boolean, attribute: false })], _a81) {
192505
192508
  constructor() {
192506
192509
  super();
192507
192510
  __privateAdd(this, _steps, __runInitializers(_init82, 8, this, [])), __runInitializers(_init82, 11, this);
192508
192511
  __privateAdd(this, _selectedStep, __runInitializers(_init82, 12, this)), __runInitializers(_init82, 15, this);
192512
+ __privateAdd(this, _overlay, __runInitializers(_init82, 16, this, false)), __runInitializers(_init82, 19, this);
192513
+ __privateAdd(this, _stepperZIndex, __runInitializers(_init82, 20, this, 1e3)), __runInitializers(_init82, 23, this);
192514
+ __privateAdd(this, _activeForm, __runInitializers(_init82, 24, this, null)), __runInitializers(_init82, 27, this);
192515
+ __privateAdd(this, _activeFormValid, __runInitializers(_init82, 28, this, true)), __runInitializers(_init82, 31, this);
192516
+ __publicField(this, "activeFormSubscription");
192517
+ __publicField(this, "windowLayer");
192509
192518
  __publicField(this, "getIndexOfStep", /* @__PURE__ */ __name((stepArg) => {
192510
192519
  return this.steps.findIndex((stepArg2) => stepArg === stepArg2);
192511
192520
  }, "getIndexOfStep"));
192512
192521
  __publicField(this, "scroller");
192513
192522
  }
192523
+ static async createAndShow(optionsArg) {
192524
+ const body3 = document.body;
192525
+ const stepper = new _DeesStepper();
192526
+ stepper.steps = optionsArg.steps;
192527
+ stepper.overlay = true;
192528
+ stepper.windowLayer = await DeesWindowLayer.createAndShow({ blur: true });
192529
+ stepper.windowLayer.addEventListener("click", async () => {
192530
+ await stepper.destroy();
192531
+ });
192532
+ body3.append(stepper.windowLayer);
192533
+ body3.append(stepper);
192534
+ stepper.stepperZIndex = zIndexRegistry.getNextZIndex();
192535
+ zIndexRegistry.register(stepper, stepper.stepperZIndex);
192536
+ return stepper;
192537
+ }
192514
192538
  render() {
192515
192539
  return b2`
192516
- <div class="stepperContainer">
192517
- ${this.steps.map(
192518
- (stepArg) => b2`<div
192519
- class="step ${stepArg === this.selectedStep ? "selected" : null} ${this.getIndexOfStep(stepArg) > this.getIndexOfStep(this.selectedStep) ? "hiddenStep" : ""} ${this.getIndexOfStep(stepArg) === 0 ? "entrance" : ""}"
192520
- >
192521
- ${this.getIndexOfStep(stepArg) > 0 ? b2`<div class="goBack" @click=${this.goBack}><span style="font-family: Inter"><-</span> go to previous step</div>` : ``}
192540
+ <div
192541
+ class="stepperContainer ${this.overlay ? "overlay" : ""}"
192542
+ style=${this.overlay ? `z-index: ${this.stepperZIndex};` : ""}
192543
+ >
192544
+ ${this.steps.map((stepArg, stepIndex) => {
192545
+ const isSelected = stepArg === this.selectedStep;
192546
+ const isHidden = this.getIndexOfStep(stepArg) > this.getIndexOfStep(this.selectedStep);
192547
+ const isFirst = stepIndex === 0;
192548
+ return b2`<dees-tile
192549
+ class="step ${isSelected ? "selected" : ""} ${isHidden ? "hiddenStep" : ""} ${isFirst ? "entrance" : ""}"
192550
+ >
192551
+ <div slot="header" class="step-header">
192552
+ ${!isFirst ? b2`<div class="goBack" @click=${this.goBack}>
192553
+ <span style="font-family: Inter"><-</span> go to previous step
192554
+ </div>` : b2`<div class="goBack-spacer"></div>`}
192522
192555
  <div class="stepCounter">
192523
- Step ${this.steps.findIndex((elementArg) => elementArg === stepArg) + 1} of
192524
- ${this.steps.length}
192556
+ Step ${stepIndex + 1} of ${this.steps.length}
192525
192557
  </div>
192558
+ </div>
192559
+ <div class="step-body">
192526
192560
  <div class="title">${stepArg.title}</div>
192527
192561
  <div class="content">${stepArg.content}</div>
192528
- </div> `
192529
- )}
192562
+ </div>
192563
+ ${stepArg.menuOptions && stepArg.menuOptions.length > 0 ? b2`<div slot="footer" class="bottomButtons">
192564
+ ${isSelected && this.activeForm !== null && !this.activeFormValid ? b2`<div class="stepHint">Complete form to continue</div>` : ""}
192565
+ ${stepArg.menuOptions.map((actionArg, actionIndex) => {
192566
+ const isPrimary = actionIndex === stepArg.menuOptions.length - 1;
192567
+ const isDisabled = isPrimary && this.activeForm !== null && !this.activeFormValid;
192568
+ return b2`
192569
+ <div
192570
+ class="bottomButton ${isPrimary ? "primary" : ""} ${isDisabled ? "disabled" : ""}"
192571
+ @click=${() => this.handleMenuOptionClick(actionArg, isPrimary)}
192572
+ >${actionArg.name}</div>
192573
+ `;
192574
+ })}
192575
+ </div>` : ""}
192576
+ </dees-tile>`;
192577
+ })}
192530
192578
  </div>
192531
192579
  `;
192532
192580
  }
@@ -192548,6 +192596,7 @@ var _DeesStepper = class _DeesStepper extends (_a81 = DeesElement, _steps_dec =
192548
192596
  if (!selectedStepElement) {
192549
192597
  return;
192550
192598
  }
192599
+ this.scanActiveForm(selectedStepElement);
192551
192600
  if (!stepperContainer.style.paddingTop) {
192552
192601
  stepperContainer.style.paddingTop = `${stepperContainer.offsetHeight / 2 - selectedStepElement.offsetHeight / 2}px`;
192553
192602
  }
@@ -192605,14 +192654,99 @@ var _DeesStepper = class _DeesStepper extends (_a81 = DeesElement, _steps_dec =
192605
192654
  nextStep.validationFuncCalled = false;
192606
192655
  this.selectedStep = nextStep;
192607
192656
  }
192657
+ /**
192658
+ * Scans the currently selected step for a <dees-form> in its content. When
192659
+ * found, subscribes to the form's RxJS changeSubject so the primary
192660
+ * menuOption button can auto-enable/disable as required fields are filled.
192661
+ *
192662
+ * If the form reference is the same as the previous activation (e.g. on a
192663
+ * same-step re-render), we just recompute validity without re-subscribing.
192664
+ */
192665
+ scanActiveForm(selectedStepElement) {
192666
+ const form = selectedStepElement.querySelector("dees-form");
192667
+ if (form === this.activeForm) {
192668
+ this.recomputeFormValid();
192669
+ return;
192670
+ }
192671
+ this.activeFormSubscription?.unsubscribe();
192672
+ this.activeFormSubscription = void 0;
192673
+ this.activeForm = form;
192674
+ if (!form) {
192675
+ this.activeFormValid = true;
192676
+ return;
192677
+ }
192678
+ this.recomputeFormValid();
192679
+ this.activeFormSubscription = form.changeSubject.subscribe(() => {
192680
+ this.recomputeFormValid();
192681
+ });
192682
+ }
192683
+ /**
192684
+ * Recomputes activeFormValid by checking every required field in the active
192685
+ * form for a non-empty value. Mirrors dees-form.updateRequiredStatus's logic
192686
+ * but stores the result on the stepper instead of mutating a submit button.
192687
+ */
192688
+ recomputeFormValid() {
192689
+ const form = this.activeForm;
192690
+ if (!form) {
192691
+ this.activeFormValid = true;
192692
+ return;
192693
+ }
192694
+ const fields = form.getFormElements();
192695
+ this.activeFormValid = fields.every(
192696
+ (field) => !field.required || field.value !== null && field.value !== void 0 && field.value !== ""
192697
+ );
192698
+ }
192699
+ /**
192700
+ * Click handler for menuOption buttons in the footer. For the primary (last)
192701
+ * button, if an active form is present, gates on required-field validity and
192702
+ * triggers the form's gatherAndDispatch() before running the action. The
192703
+ * action is awaited so any async work (e.g. goNext → scroll animation)
192704
+ * completes before the click handler returns.
192705
+ */
192706
+ async handleMenuOptionClick(optionArg, isPrimary) {
192707
+ const form = this.activeForm;
192708
+ if (isPrimary && form) {
192709
+ if (!this.activeFormValid) return;
192710
+ await new Promise((resolve2) => {
192711
+ form.addEventListener("formData", () => resolve2(), { once: true });
192712
+ form.gatherAndDispatch();
192713
+ });
192714
+ }
192715
+ await optionArg.action(this);
192716
+ }
192717
+ async destroy() {
192718
+ const domtools19 = await this.domtoolsPromise;
192719
+ const container = this.shadowRoot.querySelector(".stepperContainer");
192720
+ container?.classList.add("predestroy");
192721
+ await domtools19.convenience.smartdelay.delayFor(200);
192722
+ if (this.parentElement) {
192723
+ this.parentElement.removeChild(this);
192724
+ }
192725
+ if (this.windowLayer) {
192726
+ await this.windowLayer.destroy();
192727
+ }
192728
+ this.activeFormSubscription?.unsubscribe();
192729
+ this.activeFormSubscription = void 0;
192730
+ this.activeForm = null;
192731
+ zIndexRegistry.unregister(this);
192732
+ }
192608
192733
  };
192609
192734
  _init82 = __decoratorStart(_a81);
192610
192735
  _steps = new WeakMap();
192611
192736
  _selectedStep = new WeakMap();
192737
+ _overlay = new WeakMap();
192738
+ _stepperZIndex = new WeakMap();
192739
+ _activeForm = new WeakMap();
192740
+ _activeFormValid = new WeakMap();
192612
192741
  __decorateElement(_init82, 4, "steps", _steps_dec, _DeesStepper, _steps);
192613
192742
  __decorateElement(_init82, 4, "selectedStep", _selectedStep_dec, _DeesStepper, _selectedStep);
192743
+ __decorateElement(_init82, 4, "overlay", _overlay_dec, _DeesStepper, _overlay);
192744
+ __decorateElement(_init82, 4, "stepperZIndex", _stepperZIndex_dec, _DeesStepper, _stepperZIndex);
192745
+ __decorateElement(_init82, 4, "activeForm", _activeForm_dec, _DeesStepper, _activeForm);
192746
+ __decorateElement(_init82, 4, "activeFormValid", _activeFormValid_dec, _DeesStepper, _activeFormValid);
192614
192747
  _DeesStepper = __decorateElement(_init82, 0, "DeesStepper", _DeesStepper_decorators, _DeesStepper);
192615
192748
  __name(_DeesStepper, "DeesStepper");
192749
+ // STATIC
192616
192750
  __publicField(_DeesStepper, "demo", stepperDemo);
192617
192751
  __publicField(_DeesStepper, "demoGroups", ["Layout", "Form"]);
192618
192752
  __publicField(_DeesStepper, "styles", [
@@ -192624,7 +192758,24 @@ __publicField(_DeesStepper, "styles", [
192624
192758
  position: absolute;
192625
192759
  width: 100%;
192626
192760
  height: 100%;
192761
+ font-family: ${cssGeistFontFamily};
192762
+ color: var(--dees-color-text-primary);
192627
192763
  }
192764
+
192765
+ /*
192766
+ * In overlay mode the host is "transparent" to layout — the inner
192767
+ * .stepperContainer.overlay is what pins to the viewport and carries the
192768
+ * z-index. Keeping :host unpositioned avoids nesting the stacking context
192769
+ * under an auto-z-index parent (which was trapping .stepperContainer
192770
+ * below DeesWindowLayer's sibling layers). This mirrors how dees-modal
192771
+ * keeps its own :host unpositioned and lets .modalContainer drive layout.
192772
+ */
192773
+ :host([overlay]) {
192774
+ position: static;
192775
+ width: 0;
192776
+ height: 0;
192777
+ }
192778
+
192628
192779
  .stepperContainer {
192629
192780
  position: absolute;
192630
192781
  width: 100%;
@@ -192632,101 +192783,120 @@ __publicField(_DeesStepper, "styles", [
192632
192783
  overflow: hidden;
192633
192784
  }
192634
192785
 
192635
- .step {
192786
+ .stepperContainer.overlay {
192787
+ position: fixed;
192788
+ top: 0;
192789
+ left: 0;
192790
+ width: 100vw;
192791
+ height: 100vh;
192792
+ }
192793
+
192794
+ .stepperContainer.predestroy {
192795
+ opacity: 0;
192796
+ transition: opacity 0.2s ease-in;
192797
+ }
192798
+
192799
+ dees-tile.step {
192636
192800
  position: relative;
192637
192801
  pointer-events: none;
192638
- overflow: hidden;
192639
- 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);
192640
192802
  max-width: 500px;
192641
192803
  min-height: 300px;
192642
- border-radius: 12px;
192643
- background: ${cssManager.bdTheme("#ffffff", "#0f0f11")};
192644
- border: 1px solid ${cssManager.bdTheme("#e2e8f0", "#272729")};
192645
- color: ${cssManager.bdTheme("#0f172a", "#f5f5f5")};
192646
192804
  margin: auto;
192647
192805
  margin-bottom: 20px;
192648
192806
  filter: opacity(0.55) saturate(0.85);
192649
- box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);
192807
+ transition: transform 0.7s cubic-bezier(0.87, 0, 0.13, 1), filter 0.7s cubic-bezier(0.87, 0, 0.13, 1);
192650
192808
  user-select: none;
192651
192809
  }
192652
192810
 
192653
- .step.selected {
192811
+ dees-tile.step.selected {
192654
192812
  pointer-events: all;
192655
192813
  filter: opacity(1) saturate(1);
192656
192814
  user-select: auto;
192657
192815
  }
192658
192816
 
192659
- .step.hiddenStep {
192817
+ dees-tile.step.hiddenStep {
192660
192818
  filter: opacity(0);
192661
192819
  }
192662
192820
 
192663
- .step.entrance {
192664
- transition: transform 0.35s ease, box-shadow 0.35s ease, filter 0.35s ease, border 0.35s ease;
192821
+ dees-tile.step.entrance {
192822
+ transition: transform 0.35s ease, filter 0.35s ease;
192665
192823
  }
192666
192824
 
192667
- .step.entrance.hiddenStep {
192825
+ dees-tile.step.entrance.hiddenStep {
192668
192826
  transform: translateY(16px);
192669
192827
  }
192670
192828
 
192671
- .step:last-child {
192829
+ dees-tile.step:last-child {
192672
192830
  margin-bottom: 100vh;
192673
192831
  }
192674
192832
 
192675
- .step .stepCounter {
192676
- color: ${cssManager.bdTheme("#64748b", "#a1a1aa")};
192677
- position: absolute;
192678
- top: 12px;
192679
- right: 12px;
192680
- padding: 6px 14px;
192681
- font-size: 12px;
192682
- border-radius: 999px;
192683
- background: ${cssManager.bdTheme("rgba(226, 232, 240, 0.5)", "rgba(63, 63, 70, 0.45)")};
192684
- border: 1px solid ${cssManager.bdTheme("rgba(226, 232, 240, 0.7)", "rgba(63, 63, 70, 0.6)")};
192833
+ .stepperContainer.overlay dees-tile.step::part(outer) {
192834
+ box-shadow:
192835
+ 0 0 0 1px ${cssManager.bdTheme("hsl(0 0% 0% / 0.03)", "hsl(0 0% 100% / 0.03)")},
192836
+ 0 8px 40px ${cssManager.bdTheme("hsl(0 0% 0% / 0.12)", "hsl(0 0% 0% / 0.5)")},
192837
+ 0 2px 8px ${cssManager.bdTheme("hsl(0 0% 0% / 0.06)", "hsl(0 0% 0% / 0.25)")};
192685
192838
  }
192686
192839
 
192687
- .step .goBack {
192688
- position: absolute;
192689
- top: 12px;
192690
- left: 12px;
192840
+ .step-header {
192841
+ height: 36px;
192842
+ display: flex;
192843
+ align-items: center;
192844
+ justify-content: space-between;
192845
+ padding: 0 8px 0 12px;
192846
+ gap: 12px;
192847
+ }
192848
+
192849
+ .goBack-spacer {
192850
+ width: 1px;
192851
+ }
192852
+
192853
+ .step-header .goBack {
192691
192854
  display: inline-flex;
192692
192855
  align-items: center;
192693
192856
  gap: 6px;
192694
- padding: 6px 12px;
192857
+ height: 24px;
192858
+ padding: 0 8px;
192695
192859
  font-size: 12px;
192696
192860
  font-weight: 500;
192697
- border-radius: 999px;
192698
- border: 1px solid ${cssManager.bdTheme("rgba(226, 232, 240, 0.9)", "rgba(63, 63, 70, 0.85)")};
192699
- background: ${cssManager.bdTheme("rgba(255, 255, 255, 0.9)", "rgba(39, 39, 42, 0.85)")};
192700
- color: ${cssManager.bdTheme("#475569", "#d4d4d8")};
192861
+ line-height: 1;
192862
+ border: none;
192863
+ background: transparent;
192864
+ color: var(--dees-color-text-muted);
192865
+ border-radius: 4px;
192701
192866
  cursor: pointer;
192702
- transition: border 0.2s ease, color 0.2s ease, background 0.2s ease, transform 0.2s ease;
192867
+ transition: background 0.15s ease, color 0.15s ease, transform 0.2s ease;
192703
192868
  }
192704
192869
 
192705
- .step .goBack:hover {
192706
- color: ${cssManager.bdTheme("#0f172a", "#fafafa")};
192707
- border-color: ${cssManager.bdTheme(dark.blue, dark.blue)};
192708
- background: ${cssManager.bdTheme("rgba(226, 232, 240, 0.95)", "rgba(63, 63, 70, 0.7)")};
192870
+ .step-header .goBack:hover {
192871
+ background: var(--dees-color-hover);
192872
+ color: var(--dees-color-text-secondary);
192709
192873
  transform: translateX(-2px);
192710
192874
  }
192711
192875
 
192712
- .step .goBack:active {
192713
- color: ${cssManager.bdTheme("#0f172a", "#fafafa")};
192714
- border-color: ${cssManager.bdTheme(dark.blueActive, dark.blueActive)};
192715
- background: ${cssManager.bdTheme("rgba(226, 232, 240, 0.85)", "rgba(63, 63, 70, 0.6)")};
192876
+ .step-header .goBack:active {
192877
+ background: ${cssManager.bdTheme("hsl(0 0% 90%)", "hsl(0 0% 15%)")};
192716
192878
  }
192717
192879
 
192718
- .step .goBack span {
192880
+ .step-header .goBack span {
192719
192881
  transition: transform 0.2s ease;
192720
192882
  display: inline-block;
192721
192883
  }
192722
192884
 
192723
- .step .goBack:hover span {
192885
+ .step-header .goBack:hover span {
192724
192886
  transform: translateX(-2px);
192725
192887
  }
192726
192888
 
192727
- .step .title {
192889
+ .step-header .stepCounter {
192890
+ color: var(--dees-color-text-muted);
192891
+ font-size: 12px;
192892
+ font-weight: 500;
192893
+ letter-spacing: -0.01em;
192894
+ padding: 0 8px;
192895
+ }
192896
+
192897
+ .step-body .title {
192728
192898
  text-align: center;
192729
- padding-top: 64px;
192899
+ padding-top: 32px;
192730
192900
  font-family: 'Geist Sans', sans-serif;
192731
192901
  font-size: 24px;
192732
192902
  font-weight: 600;
@@ -192734,9 +192904,92 @@ __publicField(_DeesStepper, "styles", [
192734
192904
  color: inherit;
192735
192905
  }
192736
192906
 
192737
- .step .content {
192907
+ .step-body .content {
192738
192908
  padding: 32px;
192739
192909
  }
192910
+
192911
+ /* --- Footer: modal-style bottom buttons --- */
192912
+ .bottomButtons {
192913
+ display: flex;
192914
+ flex-direction: row;
192915
+ justify-content: flex-end;
192916
+ align-items: center;
192917
+ gap: 0;
192918
+ height: 36px;
192919
+ width: 100%;
192920
+ box-sizing: border-box;
192921
+ }
192922
+
192923
+ .bottomButtons .bottomButton {
192924
+ padding: 0 16px;
192925
+ height: 100%;
192926
+ text-align: center;
192927
+ font-size: 12px;
192928
+ font-weight: 500;
192929
+ cursor: pointer;
192930
+ user-select: none;
192931
+ transition: all 0.15s ease;
192932
+ background: transparent;
192933
+ border: none;
192934
+ border-left: 1px solid var(--dees-color-border-subtle);
192935
+ color: var(--dees-color-text-muted);
192936
+ white-space: nowrap;
192937
+ display: flex;
192938
+ align-items: center;
192939
+ }
192940
+
192941
+ .bottomButtons .bottomButton:first-child {
192942
+ border-left: none;
192943
+ }
192944
+
192945
+ .bottomButtons .bottomButton:hover {
192946
+ background: var(--dees-color-hover);
192947
+ color: var(--dees-color-text-primary);
192948
+ }
192949
+
192950
+ .bottomButtons .bottomButton:active {
192951
+ background: ${cssManager.bdTheme("hsl(0 0% 92%)", "hsl(0 0% 13%)")};
192952
+ }
192953
+
192954
+ .bottomButtons .bottomButton.primary {
192955
+ color: ${cssManager.bdTheme("hsl(217.2 91.2% 59.8%)", "hsl(213.1 93.9% 67.8%)")};
192956
+ font-weight: 600;
192957
+ }
192958
+
192959
+ .bottomButtons .bottomButton.primary:hover {
192960
+ background: ${cssManager.bdTheme("hsl(217.2 91.2% 59.8% / 0.08)", "hsl(213.1 93.9% 67.8% / 0.08)")};
192961
+ color: ${cssManager.bdTheme("hsl(217.2 91.2% 50%)", "hsl(213.1 93.9% 75%)")};
192962
+ }
192963
+
192964
+ .bottomButtons .bottomButton.primary:active {
192965
+ background: ${cssManager.bdTheme("hsl(217.2 91.2% 59.8% / 0.12)", "hsl(213.1 93.9% 67.8% / 0.12)")};
192966
+ }
192967
+
192968
+ .bottomButtons .bottomButton.disabled {
192969
+ pointer-events: none;
192970
+ opacity: 0.4;
192971
+ cursor: not-allowed;
192972
+ }
192973
+
192974
+ .bottomButtons .bottomButton.disabled:hover {
192975
+ background: transparent;
192976
+ color: var(--dees-color-text-muted);
192977
+ }
192978
+
192979
+ /* Hint shown on the left of the footer when the active step's form has
192980
+ unfilled required fields. Uses margin-right: auto to push right-aligned
192981
+ buttons to the right while keeping the hint flush-left. */
192982
+ .bottomButtons .stepHint {
192983
+ margin-right: auto;
192984
+ padding: 0 16px;
192985
+ font-size: 11px;
192986
+ line-height: 1;
192987
+ letter-spacing: -0.01em;
192988
+ color: var(--dees-color-text-muted);
192989
+ display: flex;
192990
+ align-items: center;
192991
+ user-select: none;
192992
+ }
192740
192993
  `
192741
192994
  ]);
192742
192995
  __runInitializers(_init82, 1, _DeesStepper);