@design.estate/dees-catalog 3.56.1 → 3.58.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.
@@ -57136,6 +57136,7 @@ var init_theme = __esm({
57136
57136
  --dees-color-hover: ${cssManager.bdTheme("rgba(0, 0, 0, 0.04)", "rgba(255, 255, 255, 0.06)")};
57137
57137
  --dees-color-active: ${cssManager.bdTheme("rgba(0, 0, 0, 0.06)", "rgba(255, 255, 255, 0.08)")};
57138
57138
  --dees-color-pressed: ${cssManager.bdTheme("rgba(0, 0, 0, 0.08)", "rgba(255, 255, 255, 0.12)")};
57139
+ --dees-color-row-hover: ${cssManager.bdTheme("hsl(222.2 47.4% 51.2% / 0.06)", "hsl(217.2 91.2% 59.8% / 0.08)")};
57139
57140
 
57140
57141
  /* ========================================
57141
57142
  * Colors — Focus Ring
@@ -145803,7 +145804,7 @@ var DeesWorkspaceMonaco = _DeesWorkspaceMonaco;
145803
145804
  init_dist_ts30();
145804
145805
  init_theme();
145805
145806
  init_dees_icon();
145806
- var _copySuccess_dec, _isLanguageDropdownOpen_dec, _showLineNumbers_dec, _wordWrap_dec2, _height_dec, _language_dec2, _value_dec2, _a18, _DeesInputCode_decorators, _init16, _value2, _language2, _height, _wordWrap2, _showLineNumbers, _isLanguageDropdownOpen, _copySuccess;
145807
+ var _cursorPosition_dec, _lineCount_dec, _copySuccess_dec, _isLanguageDropdownOpen_dec, _showLineNumbers_dec, _wordWrap_dec2, _height_dec, _language_dec2, _value_dec2, _a18, _DeesInputCode_decorators, _init16, _value2, _language2, _height, _wordWrap2, _showLineNumbers, _isLanguageDropdownOpen, _copySuccess, _lineCount, _cursorPosition;
145807
145808
  var LANGUAGES = [
145808
145809
  { key: "typescript", label: "TypeScript" },
145809
145810
  { key: "javascript", label: "JavaScript" },
@@ -145825,7 +145826,7 @@ var LANGUAGES = [
145825
145826
  { key: "plaintext", label: "Plain Text" }
145826
145827
  ];
145827
145828
  _DeesInputCode_decorators = [customElement("dees-input-code")];
145828
- var _DeesInputCode = class _DeesInputCode extends (_a18 = DeesInputBase, _value_dec2 = [n5({ type: String })], _language_dec2 = [n5({ type: String })], _height_dec = [n5({ type: String })], _wordWrap_dec2 = [n5({ type: String })], _showLineNumbers_dec = [n5({ type: Boolean })], _isLanguageDropdownOpen_dec = [r5()], _copySuccess_dec = [r5()], _a18) {
145829
+ var _DeesInputCode = class _DeesInputCode extends (_a18 = DeesInputBase, _value_dec2 = [n5({ type: String })], _language_dec2 = [n5({ type: String })], _height_dec = [n5({ type: String })], _wordWrap_dec2 = [n5({ type: String })], _showLineNumbers_dec = [n5({ type: Boolean })], _isLanguageDropdownOpen_dec = [r5()], _copySuccess_dec = [r5()], _lineCount_dec = [r5()], _cursorPosition_dec = [r5()], _a18) {
145829
145830
  constructor() {
145830
145831
  super(...arguments);
145831
145832
  __privateAdd(this, _value2, __runInitializers(_init16, 8, this, "")), __runInitializers(_init16, 11, this);
@@ -145835,6 +145836,8 @@ var _DeesInputCode = class _DeesInputCode extends (_a18 = DeesInputBase, _value_
145835
145836
  __privateAdd(this, _showLineNumbers, __runInitializers(_init16, 24, this, true)), __runInitializers(_init16, 27, this);
145836
145837
  __privateAdd(this, _isLanguageDropdownOpen, __runInitializers(_init16, 28, this, false)), __runInitializers(_init16, 31, this);
145837
145838
  __privateAdd(this, _copySuccess, __runInitializers(_init16, 32, this, false)), __runInitializers(_init16, 35, this);
145839
+ __privateAdd(this, _lineCount, __runInitializers(_init16, 36, this, 0)), __runInitializers(_init16, 39, this);
145840
+ __privateAdd(this, _cursorPosition, __runInitializers(_init16, 40, this, { line: 1, column: 1 })), __runInitializers(_init16, 43, this);
145838
145841
  __publicField(this, "editorElement", null);
145839
145842
  }
145840
145843
  render() {
@@ -145913,6 +145916,16 @@ var _DeesInputCode = class _DeesInputCode extends (_a18 = DeesInputBase, _value_
145913
145916
  @content-change=${this.handleContentChange}
145914
145917
  ></dees-workspace-monaco>
145915
145918
  </div>
145919
+ <div slot="footer" class="editor-footer">
145920
+ <div class="footer-left">
145921
+ <span>Ln ${this.cursorPosition.line}, Col ${this.cursorPosition.column}</span>
145922
+ <div class="footer-separator"></div>
145923
+ <span>${this.lineCount} line${this.lineCount !== 1 ? "s" : ""}</span>
145924
+ </div>
145925
+ <div class="footer-right">
145926
+ <span>${(LANGUAGES.find((l7) => l7.key === this.language) || LANGUAGES[0]).label}</span>
145927
+ </div>
145928
+ </div>
145916
145929
  </dees-tile>
145917
145930
  </div>
145918
145931
  `;
@@ -145926,6 +145939,39 @@ var _DeesInputCode = class _DeesInputCode extends (_a18 = DeesInputBase, _value_
145926
145939
  this.changeSubject.next(this);
145927
145940
  }
145928
145941
  });
145942
+ const editor = await this.editorElement.editorDeferred.promise;
145943
+ const model = editor.getModel();
145944
+ if (model) {
145945
+ this.lineCount = model.getLineCount();
145946
+ model.onDidChangeContent(() => {
145947
+ this.lineCount = model.getLineCount();
145948
+ });
145949
+ }
145950
+ editor.onDidChangeCursorPosition((e11) => {
145951
+ this.cursorPosition = { line: e11.position.lineNumber, column: e11.position.column };
145952
+ });
145953
+ const domtoolsInstance = await this.editorElement.domtoolsPromise;
145954
+ const updateEditorBg = /* @__PURE__ */ __name((isBright) => {
145955
+ const bg = isBright ? "#ffffff" : "#0a0a0a";
145956
+ editor.updateOptions({});
145957
+ window.monaco?.editor?.defineTheme?.("dees-light", {
145958
+ base: "vs",
145959
+ inherit: true,
145960
+ rules: [],
145961
+ colors: { "editor.background": bg }
145962
+ });
145963
+ window.monaco?.editor?.defineTheme?.("dees-dark", {
145964
+ base: "vs-dark",
145965
+ inherit: true,
145966
+ rules: [],
145967
+ colors: { "editor.background": bg }
145968
+ });
145969
+ editor.updateOptions({ theme: isBright ? "dees-light" : "dees-dark" });
145970
+ }, "updateEditorBg");
145971
+ updateEditorBg(domtoolsInstance.themeManager.goBrightBoolean);
145972
+ domtoolsInstance.themeManager.themeObservable.subscribe((goBright) => {
145973
+ updateEditorBg(goBright);
145974
+ });
145929
145975
  }
145930
145976
  }
145931
145977
  toggleLanguageDropdown() {
@@ -146282,6 +146328,8 @@ _wordWrap2 = new WeakMap();
146282
146328
  _showLineNumbers = new WeakMap();
146283
146329
  _isLanguageDropdownOpen = new WeakMap();
146284
146330
  _copySuccess = new WeakMap();
146331
+ _lineCount = new WeakMap();
146332
+ _cursorPosition = new WeakMap();
146285
146333
  __decorateElement(_init16, 4, "value", _value_dec2, _DeesInputCode, _value2);
146286
146334
  __decorateElement(_init16, 4, "language", _language_dec2, _DeesInputCode, _language2);
146287
146335
  __decorateElement(_init16, 4, "height", _height_dec, _DeesInputCode, _height);
@@ -146289,6 +146337,8 @@ __decorateElement(_init16, 4, "wordWrap", _wordWrap_dec2, _DeesInputCode, _wordW
146289
146337
  __decorateElement(_init16, 4, "showLineNumbers", _showLineNumbers_dec, _DeesInputCode, _showLineNumbers);
146290
146338
  __decorateElement(_init16, 4, "isLanguageDropdownOpen", _isLanguageDropdownOpen_dec, _DeesInputCode, _isLanguageDropdownOpen);
146291
146339
  __decorateElement(_init16, 4, "copySuccess", _copySuccess_dec, _DeesInputCode, _copySuccess);
146340
+ __decorateElement(_init16, 4, "lineCount", _lineCount_dec, _DeesInputCode, _lineCount);
146341
+ __decorateElement(_init16, 4, "cursorPosition", _cursorPosition_dec, _DeesInputCode, _cursorPosition);
146292
146342
  _DeesInputCode = __decorateElement(_init16, 0, "DeesInputCode", _DeesInputCode_decorators, _DeesInputCode);
146293
146343
  __name(_DeesInputCode, "DeesInputCode");
146294
146344
  __publicField(_DeesInputCode, "demo", /* @__PURE__ */ __name(() => b2`
@@ -146443,6 +146493,11 @@ __publicField(_DeesInputCode, "styles", [
146443
146493
  height: 100%;
146444
146494
  }
146445
146495
 
146496
+ /* Match Monaco background to tile */
146497
+ dees-workspace-monaco::part(container) {
146498
+ background: var(--dees-color-bg-primary);
146499
+ }
146500
+
146446
146501
  .toolbar-divider {
146447
146502
  width: 1px;
146448
146503
  height: 20px;
@@ -146450,6 +146505,32 @@ __publicField(_DeesInputCode, "styles", [
146450
146505
  margin: 0 4px;
146451
146506
  }
146452
146507
 
146508
+ /* Footer */
146509
+ .editor-footer {
146510
+ display: flex;
146511
+ align-items: center;
146512
+ justify-content: space-between;
146513
+ padding: 0 12px;
146514
+ height: 28px;
146515
+ font-size: 11px;
146516
+ color: var(--dees-color-text-muted);
146517
+ width: 100%;
146518
+ box-sizing: border-box;
146519
+ }
146520
+
146521
+ .footer-left,
146522
+ .footer-right {
146523
+ display: flex;
146524
+ align-items: center;
146525
+ gap: 12px;
146526
+ }
146527
+
146528
+ .footer-separator {
146529
+ width: 1px;
146530
+ height: 12px;
146531
+ background: var(--dees-color-border-default);
146532
+ }
146533
+
146453
146534
  :host([disabled]) .code-container {
146454
146535
  opacity: 0.5;
146455
146536
  pointer-events: none;
@@ -151366,201 +151447,158 @@ var demoFunc19 = /* @__PURE__ */ __name(() => b2`
151366
151447
 
151367
151448
  // ts_web/elements/00group-input/dees-input-fileupload/styles.ts
151368
151449
  init_dist_ts30();
151450
+ init_theme();
151369
151451
  var fileuploadStyles = [
151370
- cssManager.defaultStyles,
151452
+ themeDefaultStyles,
151371
151453
  ...DeesInputBase.baseStyles,
151454
+ cssManager.defaultStyles,
151372
151455
  i`
151373
151456
  :host {
151374
151457
  position: relative;
151375
151458
  display: block;
151376
151459
  }
151377
151460
 
151378
-
151379
151461
  .input-wrapper {
151380
151462
  display: flex;
151381
151463
  flex-direction: column;
151382
151464
  gap: 12px;
151383
151465
  }
151384
151466
 
151385
- .dropzone {
151386
- position: relative;
151387
- padding: 20px;
151388
- border-radius: 12px;
151389
- border: 1.5px dashed ${cssManager.bdTheme("hsl(215 16% 80%)", "hsl(217 20% 25%)")};
151390
- background: ${cssManager.bdTheme("hsl(0 0% 100%)", "hsl(215 20% 12%)")};
151391
- transition: border-color 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;
151392
- cursor: pointer;
151393
- outline: none;
151394
- }
151395
-
151396
- .dropzone:focus-visible {
151397
- box-shadow: 0 0 0 2px ${cssManager.bdTheme("hsl(0 0% 100%)", "hsl(215 20% 12%)")},
151398
- 0 0 0 4px ${cssManager.bdTheme("hsl(217 91% 60% / 0.5)", "hsl(213 93% 68% / 0.4)")};
151399
- border-color: ${cssManager.bdTheme("hsl(217 91% 60%)", "hsl(213 93% 68%)")};
151467
+ /* ── Tile integration ── */
151468
+ dees-tile {
151469
+ cursor: default;
151400
151470
  }
151401
151471
 
151402
- .dropzone--active {
151403
- border-color: ${cssManager.bdTheme("hsl(217 91% 60%)", "hsl(213 93% 68%)")};
151404
- box-shadow: 0 12px 32px ${cssManager.bdTheme("rgba(15, 23, 42, 0.12)", "rgba(0, 0, 0, 0.35)")};
151405
- background: ${cssManager.bdTheme("hsl(217 91% 60% / 0.06)", "hsl(213 93% 68% / 0.12)")};
151472
+ dees-tile:hover::part(outer) {
151473
+ border-color: var(--dees-color-border-strong);
151406
151474
  }
151407
151475
 
151408
- .dropzone--has-files {
151409
- background: ${cssManager.bdTheme("hsl(0 0% 99%)", "hsl(215 20% 11%)")};
151476
+ dees-tile.dragover::part(outer) {
151477
+ border-color: var(--dees-color-accent-primary);
151478
+ box-shadow: 0 0 0 2px ${cssManager.bdTheme("hsl(217 91% 60% / 0.15)", "hsl(213 93% 68% / 0.15)")};
151410
151479
  }
151411
151480
 
151412
- .dropzone--disabled {
151481
+ :host([disabled]) dees-tile {
151413
151482
  opacity: 0.6;
151414
- pointer-events: none;
151415
151483
  cursor: not-allowed;
151484
+ pointer-events: none;
151416
151485
  }
151417
151486
 
151418
- .dropzone__body {
151419
- display: flex;
151420
- align-items: center;
151421
- gap: 16px;
151422
- }
151423
-
151424
- .dropzone__icon {
151425
- width: 48px;
151426
- height: 48px;
151427
- border-radius: 16px;
151487
+ /* ── Header slot: sleek toolbar ── */
151488
+ .dropzone-header {
151428
151489
  display: flex;
151429
151490
  align-items: center;
151430
- justify-content: center;
151431
- color: ${cssManager.bdTheme("hsl(217 91% 60%)", "hsl(213 93% 68%)")};
151432
- background: ${cssManager.bdTheme("hsl(217 91% 60% / 0.12)", "hsl(213 93% 68% / 0.12)")};
151433
- position: relative;
151434
- flex-shrink: 0;
151491
+ gap: 8px;
151492
+ height: 32px;
151493
+ padding: 0 12px;
151435
151494
  }
151436
151495
 
151437
- .dropzone__icon dees-icon {
151438
- font-size: 22px;
151496
+ .dropzone-header dees-icon {
151497
+ width: 14px;
151498
+ height: 14px;
151499
+ color: var(--dees-color-text-muted);
151439
151500
  }
151440
151501
 
151441
- .dropzone__loader {
151442
- width: 20px;
151443
- height: 20px;
151444
- border-radius: 999px;
151502
+ .dropzone-loader {
151503
+ width: 14px;
151504
+ height: 14px;
151505
+ border-radius: var(--dees-radius-full);
151445
151506
  border: 2px solid ${cssManager.bdTheme("rgba(15, 23, 42, 0.15)", "rgba(255, 255, 255, 0.15)")};
151446
- border-top-color: ${cssManager.bdTheme("hsl(217 91% 60%)", "hsl(213 93% 68%)")};
151507
+ border-top-color: var(--dees-color-accent-primary);
151447
151508
  animation: loader-spin 0.6s linear infinite;
151448
151509
  }
151449
151510
 
151450
- .dropzone__content {
151451
- display: flex;
151452
- flex-direction: column;
151453
- gap: 4px;
151454
- min-width: 0;
151455
- }
151456
-
151457
- .dropzone__headline {
151458
- font-size: 15px;
151459
- font-weight: 600;
151460
- color: ${cssManager.bdTheme("hsl(222 47% 11%)", "hsl(210 20% 96%)")};
151461
- }
151462
-
151463
- .dropzone__subline {
151511
+ .dropzone-title {
151464
151512
  font-size: 13px;
151465
- color: ${cssManager.bdTheme("hsl(215 16% 46%)", "hsl(215 16% 70%)")};
151513
+ color: var(--dees-color-text-muted);
151466
151514
  }
151467
151515
 
151468
- .dropzone__browse {
151516
+ .dropzone-browse {
151469
151517
  appearance: none;
151470
151518
  border: none;
151471
151519
  background: none;
151472
151520
  padding: 0;
151473
- margin-left: 4px;
151474
- color: ${cssManager.bdTheme("hsl(217 91% 60%)", "hsl(213 93% 68%)")};
151521
+ font-size: 13px;
151522
+ font-family: inherit;
151475
151523
  font-weight: 600;
151524
+ color: var(--dees-color-accent-primary);
151476
151525
  cursor: pointer;
151477
- text-decoration: none;
151478
151526
  }
151479
151527
 
151480
- .dropzone__browse:hover {
151528
+ .dropzone-browse:hover {
151481
151529
  text-decoration: underline;
151482
151530
  }
151483
151531
 
151484
- .dropzone__browse:disabled {
151532
+ .dropzone-browse:disabled {
151485
151533
  cursor: not-allowed;
151486
- opacity: 0.6;
151534
+ opacity: 0.5;
151487
151535
  }
151488
151536
 
151489
- .dropzone__meta {
151490
- margin-top: 14px;
151537
+ /* ── Content slot: file list in rounded inset ── */
151538
+ .file-list-empty {
151491
151539
  display: flex;
151492
- flex-wrap: wrap;
151540
+ flex-direction: column;
151541
+ align-items: center;
151542
+ justify-content: center;
151493
151543
  gap: 8px;
151494
- font-size: 12px;
151495
- color: ${cssManager.bdTheme("hsl(215 16% 50%)", "hsl(215 16% 72%)")};
151544
+ padding: 24px 16px;
151545
+ color: var(--dees-color-text-muted);
151546
+ font-size: 13px;
151496
151547
  }
151497
151548
 
151498
- .dropzone__meta span {
151499
- padding: 4px 10px;
151500
- border-radius: 999px;
151501
- background: ${cssManager.bdTheme("hsl(217 91% 95%)", "hsl(213 93% 18%)")};
151502
- border: 1px solid ${cssManager.bdTheme("hsl(217 91% 90%)", "hsl(213 93% 24%)")};
151549
+ .file-list-empty dees-icon {
151550
+ font-size: 24px;
151551
+ opacity: 0.4;
151503
151552
  }
151504
151553
 
151505
151554
  .file-list {
151506
151555
  display: flex;
151507
151556
  flex-direction: column;
151508
- gap: 12px;
151509
- margin-top: 20px;
151510
- padding-top: 20px;
151511
- border-top: 1px solid ${cssManager.bdTheme("hsl(217 91% 90%)", "hsl(213 93% 24%)")};
151512
151557
  }
151513
151558
 
151514
- .file-list__header {
151559
+ .file-list-header {
151515
151560
  display: flex;
151516
151561
  align-items: center;
151517
151562
  justify-content: space-between;
151518
- font-size: 13px;
151563
+ padding: 8px 12px;
151564
+ font-size: 12px;
151519
151565
  font-weight: 500;
151520
- color: ${cssManager.bdTheme("hsl(215 16% 45%)", "hsl(215 16% 68%)")};
151566
+ color: var(--dees-color-text-muted);
151521
151567
  }
151522
151568
 
151523
- .file-list__clear {
151569
+ .file-list-clear {
151524
151570
  appearance: none;
151525
151571
  border: none;
151526
151572
  background: none;
151527
- color: ${cssManager.bdTheme("hsl(217 91% 60%)", "hsl(213 93% 68%)")};
151573
+ color: var(--dees-color-accent-primary);
151528
151574
  cursor: pointer;
151529
151575
  font-weight: 500;
151530
- font-size: 13px;
151576
+ font-size: 12px;
151531
151577
  padding: 0;
151578
+ font-family: inherit;
151532
151579
  }
151533
151580
 
151534
- .file-list__clear:hover {
151581
+ .file-list-clear:hover {
151535
151582
  text-decoration: underline;
151536
151583
  }
151537
151584
 
151538
- .file-list__items {
151539
- display: flex;
151540
- flex-direction: column;
151541
- gap: 12px;
151542
- }
151543
-
151544
151585
  .file-row {
151545
151586
  display: flex;
151546
151587
  align-items: center;
151547
151588
  gap: 12px;
151548
- padding: 10px 12px;
151549
- background: ${cssManager.bdTheme("hsl(0 0% 100% / 0.5)", "hsl(215 20% 16% / 0.5)")};
151550
- border: 1px solid ${cssManager.bdTheme("hsl(213 27% 92%)", "hsl(217 25% 26%)")};
151551
- border-radius: 8px;
151552
- transition: background 0.15s ease;
151589
+ padding: 6px 12px;
151590
+ transition: background var(--dees-transition-fast) ease;
151553
151591
  }
151554
151592
 
151555
151593
  .file-row:hover {
151556
- background: ${cssManager.bdTheme("hsl(0 0% 100% / 0.8)", "hsl(215 20% 16% / 0.8)")};
151594
+ background: var(--dees-color-row-hover);
151557
151595
  }
151558
151596
 
151559
151597
  .file-thumb {
151560
- width: 36px;
151561
- height: 36px;
151562
- border-radius: 8px;
151563
- background: ${cssManager.bdTheme("hsl(214 31% 92%)", "hsl(217 32% 18%)")};
151598
+ width: 32px;
151599
+ height: 32px;
151600
+ border-radius: var(--dees-radius-sm);
151601
+ background: var(--dees-color-bg-tertiary);
151564
151602
  display: flex;
151565
151603
  align-items: center;
151566
151604
  justify-content: center;
@@ -151569,16 +151607,15 @@ var fileuploadStyles = [
151569
151607
  }
151570
151608
 
151571
151609
  .file-thumb dees-icon {
151572
- font-size: 18px;
151573
- color: ${cssManager.bdTheme("hsl(215 16% 45%)", "hsl(215 16% 70%)")};
151610
+ font-size: 16px;
151611
+ color: var(--dees-color-text-muted);
151574
151612
  display: block;
151575
- width: 18px;
151576
- height: 18px;
151613
+ width: 16px;
151614
+ height: 16px;
151577
151615
  line-height: 1;
151578
151616
  flex-shrink: 0;
151579
151617
  }
151580
151618
 
151581
-
151582
151619
  .thumb-image {
151583
151620
  width: 100%;
151584
151621
  height: 100%;
@@ -151588,14 +151625,14 @@ var fileuploadStyles = [
151588
151625
  .file-meta {
151589
151626
  display: flex;
151590
151627
  flex-direction: column;
151591
- gap: 4px;
151628
+ gap: 2px;
151592
151629
  min-width: 0;
151593
151630
  }
151594
151631
 
151595
151632
  .file-name {
151596
- font-weight: 600;
151597
- font-size: 14px;
151598
- color: ${cssManager.bdTheme("hsl(222 47% 11%)", "hsl(210 20% 96%)")};
151633
+ font-weight: 500;
151634
+ font-size: 13px;
151635
+ color: var(--dees-color-text-primary);
151599
151636
  white-space: nowrap;
151600
151637
  overflow: hidden;
151601
151638
  text-overflow: ellipsis;
@@ -151606,8 +151643,8 @@ var fileuploadStyles = [
151606
151643
  align-items: center;
151607
151644
  gap: 8px;
151608
151645
  flex-wrap: wrap;
151609
- font-size: 12px;
151610
- color: ${cssManager.bdTheme("hsl(215 16% 46%)", "hsl(215 16% 70%)")};
151646
+ font-size: 11px;
151647
+ color: var(--dees-color-text-muted);
151611
151648
  }
151612
151649
 
151613
151650
  .file-size {
@@ -151615,39 +151652,40 @@ var fileuploadStyles = [
151615
151652
  }
151616
151653
 
151617
151654
  .file-type {
151618
- padding: 2px 8px;
151619
- border-radius: 999px;
151620
- border: 1px solid ${cssManager.bdTheme("hsl(214 31% 86%)", "hsl(217 32% 28%)")};
151621
- color: ${cssManager.bdTheme("hsl(215 16% 46%)", "hsl(215 16% 70%)")};
151655
+ padding: 1px 6px;
151656
+ border-radius: var(--dees-radius-full);
151657
+ border: 1px solid var(--dees-color-border-default);
151658
+ color: var(--dees-color-text-muted);
151622
151659
  text-transform: uppercase;
151623
151660
  letter-spacing: 0.08em;
151624
151661
  line-height: 1;
151662
+ font-size: 10px;
151625
151663
  }
151626
151664
 
151627
151665
  .file-actions {
151628
151666
  display: flex;
151629
151667
  align-items: center;
151630
- gap: 8px;
151631
151668
  margin-left: auto;
151632
151669
  }
151633
151670
 
151634
151671
  .remove-button {
151635
- width: 28px;
151636
- height: 28px;
151637
- border-radius: 6px;
151672
+ width: 24px;
151673
+ height: 24px;
151674
+ border-radius: var(--dees-radius-xs);
151638
151675
  background: transparent;
151639
151676
  border: none;
151640
151677
  cursor: pointer;
151641
151678
  display: flex;
151642
151679
  align-items: center;
151643
151680
  justify-content: center;
151644
- transition: background 0.15s ease, transform 0.15s ease, color 0.15s ease;
151645
- color: ${cssManager.bdTheme("hsl(215 16% 52%)", "hsl(215 16% 68%)")};
151681
+ transition: background var(--dees-transition-fast) ease,
151682
+ color var(--dees-transition-fast) ease;
151683
+ color: var(--dees-color-text-muted);
151646
151684
  }
151647
151685
 
151648
151686
  .remove-button:hover {
151649
151687
  background: ${cssManager.bdTheme("hsl(0 72% 50% / 0.08)", "hsl(0 62% 32% / 0.15)")};
151650
- color: ${cssManager.bdTheme("hsl(0 72% 46%)", "hsl(0 70% 70%)")};
151688
+ color: var(--dees-color-accent-error);
151651
151689
  }
151652
151690
 
151653
151691
  .remove-button:active {
@@ -151663,9 +151701,28 @@ var fileuploadStyles = [
151663
151701
  flex-shrink: 0;
151664
151702
  }
151665
151703
 
151704
+ /* ── Footer slot: meta chips ── */
151705
+ .dropzone-footer {
151706
+ display: flex;
151707
+ flex-wrap: wrap;
151708
+ gap: 6px;
151709
+ padding: 6px 12px;
151710
+ align-items: center;
151711
+ }
151712
+
151713
+ .meta-chip {
151714
+ font-size: 11px;
151715
+ padding: 2px 8px;
151716
+ border-radius: var(--dees-radius-full);
151717
+ color: var(--dees-color-text-muted);
151718
+ background: var(--dees-color-bg-tertiary);
151719
+ border: 1px solid var(--dees-color-border-subtle);
151720
+ }
151721
+
151722
+ /* ── Validation ── */
151666
151723
  .validation-message {
151667
151724
  font-size: 13px;
151668
- color: ${cssManager.bdTheme("hsl(0 72% 40%)", "hsl(0 70% 68%)")};
151725
+ color: var(--dees-color-accent-error);
151669
151726
  line-height: 1.5;
151670
151727
  }
151671
151728
 
@@ -151710,18 +151767,12 @@ var _DeesInputFileupload = class _DeesInputFileupload extends (_a27 = DeesInputB
151710
151767
  if (this.disabled) {
151711
151768
  return;
151712
151769
  }
151713
- if (event.target.closest(".dropzone__browse, .file-list")) {
151770
+ const target = event.target;
151771
+ if (target.closest(".file-list, .dropzone-header, .dropzone-footer")) {
151714
151772
  return;
151715
151773
  }
151716
151774
  this.openFileSelector();
151717
151775
  }, "handleDropzoneClick"));
151718
- __publicField(this, "handleBrowseClick", /* @__PURE__ */ __name((event) => {
151719
- if (this.disabled) {
151720
- return;
151721
- }
151722
- event.stopPropagation();
151723
- this.openFileSelector();
151724
- }, "handleBrowseClick"));
151725
151776
  __publicField(this, "handleDropzoneKeydown", /* @__PURE__ */ __name((event) => {
151726
151777
  if (this.disabled) {
151727
151778
  return;
@@ -151791,14 +151842,13 @@ var _DeesInputFileupload = class _DeesInputFileupload extends (_a27 = DeesInputB
151791
151842
  .description=${this.description}
151792
151843
  .required=${this.required}
151793
151844
  ></dees-label>
151794
- <div
151795
- class="dropzone ${this.state === "dragOver" ? "dropzone--active" : ""} ${this.disabled ? "dropzone--disabled" : ""} ${this.value.length > 0 ? "dropzone--has-files" : ""}"
151796
- role="button"
151845
+ <dees-tile
151846
+ class="${this.state === "dragOver" ? "dragover" : ""}"
151847
+ @click=${this.handleDropzoneClick}
151848
+ @keydown=${this.handleDropzoneKeydown}
151797
151849
  tabindex=${this.disabled ? -1 : 0}
151798
151850
  aria-disabled=${this.disabled}
151799
151851
  aria-label=${`Select files${acceptedSummary ? ` (${acceptedSummary})` : ""}`}
151800
- @click=${this.handleDropzoneClick}
151801
- @keydown=${this.handleDropzoneKeydown}
151802
151852
  >
151803
151853
  <input
151804
151854
  class="file-input"
@@ -151810,47 +151860,44 @@ var _DeesInputFileupload = class _DeesInputFileupload extends (_a27 = DeesInputB
151810
151860
  @change=${this.handleFileInputChange}
151811
151861
  tabindex="-1"
151812
151862
  />
151813
- <div class="dropzone__body">
151814
- <div class="dropzone__icon">
151815
- ${this.isLoading ? b2`<span class="dropzone__loader" aria-hidden="true"></span>` : b2`<dees-icon icon="lucide:FolderOpen"></dees-icon>`}
151816
- </div>
151817
- <div class="dropzone__content">
151818
- <span class="dropzone__headline">${this.buttonText || "Select files"}</span>
151819
- <span class="dropzone__subline">
151820
- Drag and drop files here or
151821
- <button
151822
- type="button"
151823
- class="dropzone__browse"
151824
- @click=${this.handleBrowseClick}
151825
- ?disabled=${this.disabled}
151826
- >
151827
- browse
151828
- </button>
151829
- </span>
151830
- </div>
151831
- </div>
151832
- <div class="dropzone__meta">
151833
- ${metaEntries.map((entry) => b2`<span>${entry}</span>`)}
151863
+ <div slot="header" class="dropzone-header">
151864
+ ${this.isLoading ? b2`<span class="dropzone-loader" aria-hidden="true"></span>` : b2`<dees-icon icon="lucide:Upload"></dees-icon>`}
151865
+ <span class="dropzone-title">Drop files here or</span>
151866
+ <button
151867
+ type="button"
151868
+ class="dropzone-browse"
151869
+ @click=${(e11) => {
151870
+ e11.stopPropagation();
151871
+ this.openFileSelector();
151872
+ }}
151873
+ ?disabled=${this.disabled}
151874
+ >browse</button>
151834
151875
  </div>
151835
151876
  ${this.renderFileList()}
151836
- </div>
151877
+ <div slot="footer" class="dropzone-footer">
151878
+ ${metaEntries.map((entry) => b2`<span class="meta-chip">${entry}</span>`)}
151879
+ </div>
151880
+ </dees-tile>
151837
151881
  ${this.validationMessage ? b2`<div class="validation-message" aria-live="polite">${this.validationMessage}</div>` : b2``}
151838
151882
  </div>
151839
151883
  `;
151840
151884
  }
151841
151885
  renderFileList() {
151842
151886
  if (this.value.length === 0) {
151843
- return b2``;
151887
+ return b2`
151888
+ <div class="file-list-empty">
151889
+ <dees-icon icon="lucide:FileStack"></dees-icon>
151890
+ <span>No files selected</span>
151891
+ </div>
151892
+ `;
151844
151893
  }
151845
151894
  return b2`
151846
151895
  <div class="file-list">
151847
- <div class="file-list__header">
151896
+ <div class="file-list-header">
151848
151897
  <span>${this.value.length} file${this.value.length === 1 ? "" : "s"} selected</span>
151849
- ${this.value.length > 0 ? b2`<button type="button" class="file-list__clear" @click=${this.handleClearAll}>Clear ${this.value.length > 1 ? "all" : ""}</button>` : b2``}
151850
- </div>
151851
- <div class="file-list__items">
151852
- ${this.value.map((file) => this.renderFileRow(file))}
151898
+ <button type="button" class="file-list-clear" @click=${this.handleClearAll}>Clear ${this.value.length > 1 ? "all" : ""}</button>
151853
151899
  </div>
151900
+ ${this.value.map((file) => this.renderFileRow(file))}
151854
151901
  </div>
151855
151902
  `;
151856
151903
  }
@@ -151899,7 +151946,7 @@ var _DeesInputFileupload = class _DeesInputFileupload extends (_a27 = DeesInputB
151899
151946
  });
151900
151947
  }
151901
151948
  rebindInteractiveElements() {
151902
- const newDropArea = this.shadowRoot?.querySelector(".dropzone");
151949
+ const newDropArea = this.shadowRoot?.querySelector("dees-tile");
151903
151950
  if (newDropArea !== this.dropArea) {
151904
151951
  this.detachDropListeners();
151905
151952
  this.dropArea = newDropArea;