@design.estate/dees-catalog 3.36.0 → 3.37.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.
@@ -53587,26 +53587,26 @@ var init_fontawesome_svg_core = __esm({
53587
53587
  }
53588
53588
  };
53589
53589
  parse7 = {
53590
- icon: function icon(_icon2) {
53591
- if (_icon2 === null) {
53590
+ icon: function icon(_icon3) {
53591
+ if (_icon3 === null) {
53592
53592
  return null;
53593
53593
  }
53594
- if (_typeof(_icon2) === "object" && _icon2.prefix && _icon2.iconName) {
53594
+ if (_typeof(_icon3) === "object" && _icon3.prefix && _icon3.iconName) {
53595
53595
  return {
53596
- prefix: _icon2.prefix,
53597
- iconName: byAlias(_icon2.prefix, _icon2.iconName) || _icon2.iconName
53596
+ prefix: _icon3.prefix,
53597
+ iconName: byAlias(_icon3.prefix, _icon3.iconName) || _icon3.iconName
53598
53598
  };
53599
53599
  }
53600
- if (Array.isArray(_icon2) && _icon2.length === 2) {
53601
- var iconName = _icon2[1].indexOf("fa-") === 0 ? _icon2[1].slice(3) : _icon2[1];
53602
- var prefix4 = getCanonicalPrefix(_icon2[0]);
53600
+ if (Array.isArray(_icon3) && _icon3.length === 2) {
53601
+ var iconName = _icon3[1].indexOf("fa-") === 0 ? _icon3[1].slice(3) : _icon3[1];
53602
+ var prefix4 = getCanonicalPrefix(_icon3[0]);
53603
53603
  return {
53604
53604
  prefix: prefix4,
53605
53605
  iconName: byAlias(prefix4, iconName) || iconName
53606
53606
  };
53607
53607
  }
53608
- if (typeof _icon2 === "string" && (_icon2.indexOf("".concat(config2.cssPrefix, "-")) > -1 || _icon2.match(ICON_SELECTION_SYNTAX_PATTERN))) {
53609
- var canonicalIcon = getCanonicalIcon(_icon2.split(" "), {
53608
+ if (typeof _icon3 === "string" && (_icon3.indexOf("".concat(config2.cssPrefix, "-")) > -1 || _icon3.match(ICON_SELECTION_SYNTAX_PATTERN))) {
53609
+ var canonicalIcon = getCanonicalIcon(_icon3.split(" "), {
53610
53610
  skipLookups: true
53611
53611
  });
53612
53612
  return {
@@ -53614,11 +53614,11 @@ var init_fontawesome_svg_core = __esm({
53614
53614
  iconName: byAlias(canonicalIcon.prefix, canonicalIcon.iconName) || canonicalIcon.iconName
53615
53615
  };
53616
53616
  }
53617
- if (typeof _icon2 === "string") {
53617
+ if (typeof _icon3 === "string") {
53618
53618
  var _prefix = getDefaultUsablePrefix();
53619
53619
  return {
53620
53620
  prefix: _prefix,
53621
- iconName: byAlias(_prefix, _icon2) || _icon2
53621
+ iconName: byAlias(_prefix, _icon3) || _icon3
53622
53622
  };
53623
53623
  }
53624
53624
  }
@@ -108373,7 +108373,49 @@ var generateCpuCores = (count2) => {
108373
108373
  }));
108374
108374
  };
108375
108375
  var demoFunc7 = () => {
108376
- return b2(_a11 || (_a11 = __template(["\n <dees-demowrapper>\n <style>\n ", '\n </style>\n \n <div class="demo-container">\n <dees-panel .title=', " .subtitle=", ">\n <dees-statsgrid\n .tiles=", "\n .gridActions=", "\n .minTileWidth=", "\n .gap=", '\n ></dees-statsgrid>\n \n <div id="action-output" style="margin-top: 16px; padding: 12px; background: ', "; border-radius: 6px; font-size: 14px; font-family: monospace; color: ", ';">\n <em>Click on tile actions or grid actions to see the result...</em>\n </div>\n </dees-panel>\n \n <dees-panel .title=', " .subtitle=", ">\n <dees-statsgrid\n .tiles=", "\n .minTileWidth=", "\n .gap=", '\n ></dees-statsgrid>\n \n <div class="tile-config">\n <div class="config-section">\n <div class="config-title">Configuration Options</div>\n <div class="config-description">\n Each tile type supports different properties:\n <ul style="margin: 8px 0; padding-left: 20px;">\n <li><strong>Number:</strong> value, unit, color, description</li>\n <li><strong>Gauge:</strong> value, unit, gaugeOptions (min, max, thresholds)</li>\n <li><strong>Percentage:</strong> value (0-100), color, description</li>\n <li><strong>Trend:</strong> value, unit, trendData array, description</li>\n <li><strong>Text:</strong> value (string), color, description</li>\n </ul>\n </div>\n </div>\n </div>\n </dees-panel>\n \n <dees-panel .title=', " .subtitle=", '>\n <h4 style="margin: 0 0 16px 0; font-size: 16px; font-weight: 600;">Compact Layout (180px tiles)</h4>\n <dees-statsgrid\n .tiles=', "\n .minTileWidth=", "\n .gap=", '\n ></dees-statsgrid>\n \n <h4 style="margin: 24px 0 16px 0; font-size: 16px; font-weight: 600;">Spacious Layout (320px tiles)</h4>\n <dees-statsgrid\n .tiles=', "\n .minTileWidth=", "\n .gap=", "\n ></dees-statsgrid>\n </dees-panel>\n \n <dees-panel .title=", " .subtitle=", '>\n <dees-statsgrid\n id="cpu-cores-grid"\n .tiles=', "\n .gridActions=", "\n .minTileWidth=", "\n .gap=", "\n ></dees-statsgrid>\n </dees-panel>\n\n <dees-panel .title=", " .subtitle=", '>\n <dees-statsgrid\n id="interactive-grid"\n .tiles=', "\n .gridActions=", "\n .minTileWidth=", "\n .gap=", "\n ></dees-statsgrid>\n </dees-panel>\n \n <dees-panel .title=", " .subtitle=", '>\n <div class="code-block">', "</div>\n </dees-panel>\n </div>\n \n <script>\n // Cleanup live updates on page unload\n window.addEventListener('beforeunload', () => {\n if ((window as any).liveUpdateInterval) {\n clearInterval((window as any).liveUpdateInterval);\n }\n });\n <\/script>\n </dees-demowrapper>\n "])), i`
108376
+ return b2(_a11 || (_a11 = __template(["\n <dees-demowrapper>\n <style>\n ", '\n </style>\n \n <div class="demo-container">\n <dees-panel .title=', " .subtitle=", ">\n <dees-statsgrid\n .tiles=", "\n .gridActions=", "\n .minTileWidth=", "\n .gap=", '\n ></dees-statsgrid>\n \n <div id="action-output" style="margin-top: 16px; padding: 12px; background: ', "; border-radius: 6px; font-size: 14px; font-family: monospace; color: ", ';">\n <em>Click on tile actions or grid actions to see the result...</em>\n </div>\n </dees-panel>\n \n <dees-panel .title=', " .subtitle=", ">\n <dees-statsgrid\n .tiles=", "\n .minTileWidth=", "\n .gap=", '\n ></dees-statsgrid>\n \n <div class="tile-config">\n <div class="config-section">\n <div class="config-title">Configuration Options</div>\n <div class="config-description">\n Each tile type supports different properties:\n <ul style="margin: 8px 0; padding-left: 20px;">\n <li><strong>Number:</strong> value, unit, color, description</li>\n <li><strong>Gauge:</strong> value, unit, gaugeOptions (min, max, thresholds)</li>\n <li><strong>Percentage:</strong> value (0-100), color, description</li>\n <li><strong>Trend:</strong> value, unit, trendData array, description</li>\n <li><strong>Text:</strong> value (string), color, description</li>\n </ul>\n </div>\n </div>\n </div>\n </dees-panel>\n \n <dees-panel .title=', " .subtitle=", '>\n <h4 style="margin: 0 0 16px 0; font-size: 16px; font-weight: 600;">Compact Layout (180px tiles)</h4>\n <dees-statsgrid\n .tiles=', "\n .minTileWidth=", "\n .gap=", '\n ></dees-statsgrid>\n \n <h4 style="margin: 24px 0 16px 0; font-size: 16px; font-weight: 600;">Spacious Layout (320px tiles)</h4>\n <dees-statsgrid\n .tiles=', "\n .minTileWidth=", "\n .gap=", "\n ></dees-statsgrid>\n </dees-panel>\n \n <dees-panel .title=", " .subtitle=", '>\n <dees-statsgrid\n id="cpu-cores-grid"\n .tiles=', "\n .gridActions=", "\n .minTileWidth=", "\n .gap=", "\n ></dees-statsgrid>\n </dees-panel>\n\n <dees-panel .title=", " .subtitle=", '>\n <dees-statsgrid\n id="interactive-grid"\n .tiles=', "\n .gridActions=", "\n .minTileWidth=", "\n .gap=", "\n ></dees-statsgrid>\n </dees-panel>\n \n <dees-panel .title=", " .subtitle=", '>\n <div class="code-block">', "</div>\n </dees-panel>\n\n <dees-panel .title=", " .subtitle=", ">\n <dees-statsgrid\n .tiles=", "\n .minTileWidth=", "\n .gap=", `
108377
+ ></dees-statsgrid>
108378
+
108379
+ <div class="tile-config">
108380
+ <div class="config-section">
108381
+ <div class="config-title">Partition Tile Properties</div>
108382
+ <div class="config-description">
108383
+ <ul style="margin: 8px 0; padding-left: 20px;">
108384
+ <li><strong>partitionData.used:</strong> Used space in bytes (auto-formatted)</li>
108385
+ <li><strong>partitionData.total:</strong> Total capacity in bytes</li>
108386
+ <li><strong>partitionData.filesystem:</strong> Filesystem type (ext4, xfs, ntfs)</li>
108387
+ <li><strong>partitionData.mountPoint:</strong> Mount point path (optional)</li>
108388
+ </ul>
108389
+ Color thresholds: Normal (&lt;75%), Warning (75-90%), Critical (&gt;90%)
108390
+ </div>
108391
+ </div>
108392
+ <div class="config-section">
108393
+ <div class="config-title">Disk Tile Properties</div>
108394
+ <div class="config-description">
108395
+ <ul style="margin: 8px 0; padding-left: 20px;">
108396
+ <li><strong>diskData.capacity:</strong> Total capacity in bytes</li>
108397
+ <li><strong>diskData.model:</strong> Disk model name (optional)</li>
108398
+ <li><strong>diskData.type:</strong> Disk type: 'ssd', 'hdd', or 'nvme'</li>
108399
+ <li><strong>diskData.iops:</strong> Read/write IOPS (optional)</li>
108400
+ <li><strong>diskData.health:</strong> Health percentage 0-100 (optional)</li>
108401
+ </ul>
108402
+ Health thresholds: Good (70-100%), Warning (30-70%), Critical (&lt;30%)
108403
+ </div>
108404
+ </div>
108405
+ </div>
108406
+ </dees-panel>
108407
+ </div>
108408
+
108409
+ <script>
108410
+ // Cleanup live updates on page unload
108411
+ window.addEventListener('beforeunload', () => {
108412
+ if ((window as any).liveUpdateInterval) {
108413
+ clearInterval((window as any).liveUpdateInterval);
108414
+ }
108415
+ });
108416
+ <\/script>
108417
+ </dees-demowrapper>
108418
+ `])), i`
108377
108419
  .demo-container {
108378
108420
  display: flex;
108379
108421
  flex-direction: column;
@@ -108869,7 +108911,108 @@ html\`
108869
108911
  }
108870
108912
  ]}
108871
108913
  ></dees-statsgrid>
108872
- \`;`);
108914
+ \`;`, "7. Disk & Storage Tiles", "Partition and physical disk visualization tiles", [
108915
+ {
108916
+ id: "root-partition",
108917
+ title: "Root Partition",
108918
+ value: 0,
108919
+ type: "partition",
108920
+ icon: "lucide:folder-root",
108921
+ partitionData: {
108922
+ used: 698341425152,
108923
+ // ~650 GB
108924
+ total: 1073741824e3,
108925
+ // ~1 TB
108926
+ filesystem: "ext4",
108927
+ mountPoint: "/"
108928
+ }
108929
+ },
108930
+ {
108931
+ id: "home-partition",
108932
+ title: "Home Partition",
108933
+ value: 0,
108934
+ type: "partition",
108935
+ icon: "lucide:home",
108936
+ partitionData: {
108937
+ used: 214748364800,
108938
+ // ~200 GB
108939
+ total: 536870912e3,
108940
+ // ~500 GB
108941
+ filesystem: "ext4",
108942
+ mountPoint: "/home"
108943
+ }
108944
+ },
108945
+ {
108946
+ id: "data-partition",
108947
+ title: "Data Partition",
108948
+ value: 0,
108949
+ type: "partition",
108950
+ icon: "lucide:database",
108951
+ partitionData: {
108952
+ used: 1932735283200,
108953
+ // ~1.8 TB (90% - critical)
108954
+ total: 2147483648e3,
108955
+ // ~2 TB
108956
+ filesystem: "xfs",
108957
+ mountPoint: "/data"
108958
+ }
108959
+ },
108960
+ {
108961
+ id: "nvme-ssd",
108962
+ title: "Primary NVMe",
108963
+ value: 0,
108964
+ type: "disk",
108965
+ icon: "lucide:hard-drive",
108966
+ columnSpan: 2,
108967
+ diskData: {
108968
+ capacity: 2e12,
108969
+ // 2 TB
108970
+ model: "Samsung 990 Pro",
108971
+ type: "nvme",
108972
+ iops: {
108973
+ read: 7450,
108974
+ write: 6900
108975
+ },
108976
+ health: 98
108977
+ }
108978
+ },
108979
+ {
108980
+ id: "sata-ssd",
108981
+ title: "Secondary SSD",
108982
+ value: 0,
108983
+ type: "disk",
108984
+ icon: "lucide:hard-drive",
108985
+ diskData: {
108986
+ capacity: 1e12,
108987
+ // 1 TB
108988
+ model: "Crucial MX500",
108989
+ type: "ssd",
108990
+ iops: {
108991
+ read: 560,
108992
+ write: 510
108993
+ },
108994
+ health: 85
108995
+ }
108996
+ },
108997
+ {
108998
+ id: "hdd-storage",
108999
+ title: "Backup HDD",
109000
+ value: 0,
109001
+ type: "disk",
109002
+ icon: "lucide:archive",
109003
+ diskData: {
109004
+ capacity: 8e12,
109005
+ // 8 TB
109006
+ model: "Seagate IronWolf",
109007
+ type: "hdd",
109008
+ iops: {
109009
+ read: 210,
109010
+ write: 195
109011
+ },
109012
+ health: 42
109013
+ }
109014
+ }
109015
+ ], 280, 16);
108873
109016
  };
108874
109017
 
108875
109018
  // ts_web/elements/00group-input/dees-input-base/dees-input-base.ts
@@ -122445,54 +122588,94 @@ var demoFunc26 = () => b2`
122445
122588
  <dees-panel .title=${"3. Buttons with Icons"} .subtitle=${"Combining icons with text for enhanced visual communication"}>
122446
122589
  <div class="icon-row">
122447
122590
  <dees-button>
122448
- <dees-icon iconFA="faPlus"></dees-icon>
122591
+ <dees-icon icon="fa:plus"></dees-icon>
122449
122592
  Add Item
122450
122593
  </dees-button>
122451
122594
  <dees-button type="destructive">
122452
- <dees-icon iconFA="faTrash"></dees-icon>
122595
+ <dees-icon icon="fa:trash"></dees-icon>
122453
122596
  Delete
122454
122597
  </dees-button>
122455
122598
  <dees-button type="outline">
122456
- <dees-icon iconFA="faDownload"></dees-icon>
122599
+ <dees-icon icon="lucide:Download"></dees-icon>
122457
122600
  Download
122458
122601
  </dees-button>
122459
122602
  </div>
122460
-
122603
+
122461
122604
  <div class="icon-row">
122462
122605
  <dees-button type="secondary" size="sm">
122463
- <dees-icon iconFA="faCog"></dees-icon>
122606
+ <dees-icon icon="fa:gear"></dees-icon>
122464
122607
  Settings
122465
122608
  </dees-button>
122466
122609
  <dees-button type="ghost">
122467
- <dees-icon iconFA="faChevronLeft"></dees-icon>
122610
+ <dees-icon icon="fa:caretLeft"></dees-icon>
122468
122611
  Back
122469
122612
  </dees-button>
122470
122613
  <dees-button type="ghost">
122471
122614
  Next
122472
- <dees-icon iconFA="faChevronRight"></dees-icon>
122615
+ <dees-icon icon="fa:caretRight"></dees-icon>
122473
122616
  </dees-button>
122474
122617
  </div>
122475
-
122618
+
122476
122619
  <div class="icon-row">
122477
122620
  <dees-button size="icon" type="default">
122478
- <dees-icon iconFA="faPlus"></dees-icon>
122621
+ <dees-icon icon="fa:plus"></dees-icon>
122479
122622
  </dees-button>
122480
122623
  <dees-button size="icon" type="secondary">
122481
- <dees-icon iconFA="faCog"></dees-icon>
122624
+ <dees-icon icon="fa:gear"></dees-icon>
122482
122625
  </dees-button>
122483
122626
  <dees-button size="icon" type="outline">
122484
- <dees-icon iconFA="faSearch"></dees-icon>
122627
+ <dees-icon icon="lucide:Search"></dees-icon>
122485
122628
  </dees-button>
122486
122629
  <dees-button size="icon" type="ghost">
122487
- <dees-icon iconFA="faEllipsisV"></dees-icon>
122630
+ <dees-icon icon="lucide:MoreVertical"></dees-icon>
122488
122631
  </dees-button>
122489
122632
  <dees-button size="icon" type="destructive">
122490
- <dees-icon iconFA="faTrash"></dees-icon>
122633
+ <dees-icon icon="fa:trash"></dees-icon>
122491
122634
  </dees-button>
122492
122635
  </div>
122493
122636
  </dees-panel>
122494
122637
  </dees-demowrapper>
122495
-
122638
+
122639
+ <dees-demowrapper .runAfterRender=${async (elementArg) => {
122640
+ const buttons = elementArg.querySelectorAll("dees-button");
122641
+ buttons.forEach((button) => {
122642
+ button.addEventListener("clicked", () => {
122643
+ const icon3 = button.getAttribute("icon") || "none";
122644
+ const position3 = button.getAttribute("iconPosition") || "left";
122645
+ console.log(`Icon property button: icon=${icon3}, position=${position3}`);
122646
+ });
122647
+ });
122648
+ }}>
122649
+ <dees-panel .title=${"4. Icons via Property"} .subtitle=${"Simplified icon syntax using the icon property"}>
122650
+ <div class="icon-row">
122651
+ <dees-button icon="fa:plus">Add Item</dees-button>
122652
+ <dees-button type="destructive" icon="fa:trash">Delete</dees-button>
122653
+ <dees-button type="outline" icon="lucide:Download">Download</dees-button>
122654
+ </div>
122655
+
122656
+ <div class="icon-row">
122657
+ <dees-button type="secondary" size="sm" icon="fa:gear">Settings</dees-button>
122658
+ <dees-button type="ghost" icon="fa:caretLeft">Back</dees-button>
122659
+ <dees-button type="ghost" icon="fa:caretRight" iconPosition="right">Next</dees-button>
122660
+ </div>
122661
+
122662
+ <div class="icon-row">
122663
+ <dees-button size="icon" type="default" icon="fa:plus"></dees-button>
122664
+ <dees-button size="icon" type="secondary" icon="lucide:Settings"></dees-button>
122665
+ <dees-button size="icon" type="outline" icon="lucide:Search"></dees-button>
122666
+ <dees-button size="icon" type="ghost" icon="lucide:MoreVertical"></dees-button>
122667
+ <dees-button size="icon" type="destructive" icon="fa:trash"></dees-button>
122668
+ </div>
122669
+
122670
+ <div style="margin-top: 16px;">
122671
+ <div class="code-snippet">
122672
+ &lt;dees-button icon="fa:plus"&gt;Add Item&lt;/dees-button&gt;<br>
122673
+ &lt;dees-button icon="fa:caretRight" iconPosition="right"&gt;Next&lt;/dees-button&gt;
122674
+ </div>
122675
+ </div>
122676
+ </dees-panel>
122677
+ </dees-demowrapper>
122678
+
122496
122679
  <dees-demowrapper .runAfterRender=${async (elementArg) => {
122497
122680
  const pendingButton = elementArg.querySelector('dees-button[status="pending"]');
122498
122681
  const successButton = elementArg.querySelector('dees-button[status="success"]');
@@ -122513,7 +122696,7 @@ var demoFunc26 = () => b2`
122513
122696
  });
122514
122697
  }
122515
122698
  }}>
122516
- <dees-panel .title=${"4. Button States"} .subtitle=${"Different states to indicate button status and loading conditions"}>
122699
+ <dees-panel .title=${"5. Button States"} .subtitle=${"Different states to indicate button status and loading conditions"}>
122517
122700
  <div class="button-group">
122518
122701
  <dees-button status="normal">Normal</dees-button>
122519
122702
  <dees-button status="pending">Processing...</dees-button>
@@ -122553,7 +122736,7 @@ var demoFunc26 = () => b2`
122553
122736
  });
122554
122737
  }
122555
122738
  }}>
122556
- <dees-panel .title=${"5. Event Handling"} .subtitle=${"Interactive examples with click event handling"}>
122739
+ <dees-panel .title=${"6. Event Handling"} .subtitle=${"Interactive examples with click event handling"}>
122557
122740
  <div class="button-group">
122558
122741
  <dees-button>Click Me</dees-button>
122559
122742
  <dees-button type="secondary" .eventDetailData=${"custom-data-123"}>
@@ -122589,7 +122772,7 @@ var demoFunc26 = () => b2`
122589
122772
  });
122590
122773
  }
122591
122774
  }}>
122592
- <dees-panel .title=${"6. Form Integration"} .subtitle=${"Buttons working within forms with automatic spacing"}>
122775
+ <dees-panel .title=${"7. Form Integration"} .subtitle=${"Buttons working within forms with automatic spacing"}>
122593
122776
  <dees-form>
122594
122777
  <dees-input-text label="Name" key="name" required></dees-input-text>
122595
122778
  <dees-input-text label="Email" key="email" type="email" required></dees-input-text>
@@ -122615,7 +122798,7 @@ var demoFunc26 = () => b2`
122615
122798
  }
122616
122799
  });
122617
122800
  }}>
122618
- <dees-panel .title=${"7. Backward Compatibility"} .subtitle=${"Old button types are automatically mapped to new variants"}>
122801
+ <dees-panel .title=${"8. Backward Compatibility"} .subtitle=${"Old button types are automatically mapped to new variants"}>
122619
122802
  <div class="button-group">
122620
122803
  <dees-button type="normal">Normal → Default</dees-button>
122621
122804
  <dees-button type="highlighted">Highlighted → Destructive</dees-button>
@@ -122653,36 +122836,36 @@ var demoFunc26 = () => b2`
122653
122836
  });
122654
122837
  }
122655
122838
  }}>
122656
- <dees-panel .title=${"8. Advanced Examples"} .subtitle=${"Complex button configurations and real-world use cases"}>
122839
+ <dees-panel .title=${"9. Advanced Examples"} .subtitle=${"Complex button configurations and real-world use cases"}>
122657
122840
  <div class="horizontal-group">
122658
122841
  <div class="vertical-group">
122659
122842
  <h4 style="margin: 0 0 8px 0; font-size: 14px; font-weight: 500;">Action Group</h4>
122660
122843
  <dees-button type="default" size="sm">
122661
- <dees-icon iconFA="faSave"></dees-icon>
122844
+ <dees-icon icon="lucide:Save"></dees-icon>
122662
122845
  Save Changes
122663
122846
  </dees-button>
122664
122847
  <dees-button type="secondary" size="sm">
122665
- <dees-icon iconFA="faUndo"></dees-icon>
122848
+ <dees-icon icon="lucide:Undo2"></dees-icon>
122666
122849
  Discard
122667
122850
  </dees-button>
122668
122851
  <dees-button type="ghost" size="sm">
122669
- <dees-icon iconFA="faQuestionCircle"></dees-icon>
122852
+ <dees-icon icon="lucide:HelpCircle"></dees-icon>
122670
122853
  Help
122671
122854
  </dees-button>
122672
122855
  </div>
122673
-
122856
+
122674
122857
  <div class="vertical-group">
122675
122858
  <h4 style="margin: 0 0 8px 0; font-size: 14px; font-weight: 500;">Danger Zone</h4>
122676
122859
  <dees-button type="destructive" size="sm">
122677
- <dees-icon iconFA="faTrash"></dees-icon>
122860
+ <dees-icon icon="fa:trash"></dees-icon>
122678
122861
  Delete Account
122679
122862
  </dees-button>
122680
122863
  <dees-button type="outline" size="sm">
122681
- <dees-icon iconFA="faArchive"></dees-icon>
122864
+ <dees-icon icon="lucide:Archive"></dees-icon>
122682
122865
  Archive Data
122683
122866
  </dees-button>
122684
122867
  <dees-button type="ghost" size="sm" disabled>
122685
- <dees-icon iconFA="faBan"></dees-icon>
122868
+ <dees-icon icon="lucide:Ban"></dees-icon>
122686
122869
  Not Available
122687
122870
  </dees-button>
122688
122871
  </div>
@@ -122691,8 +122874,7 @@ var demoFunc26 = () => b2`
122691
122874
  <div style="margin-top: 24px;">
122692
122875
  <h4 style="margin: 0 0 8px 0; font-size: 14px; font-weight: 500;">Code Example:</h4>
122693
122876
  <div class="code-snippet">
122694
- &lt;dees-button type="default" size="sm" @clicked="\${handleClick}"&gt;<br>
122695
- &nbsp;&nbsp;&lt;dees-icon iconFA="faSave"&gt;&lt;/dees-icon&gt;<br>
122877
+ &lt;dees-button type="default" size="sm" icon="lucide:Save" @clicked="\${handleClick}"&gt;<br>
122696
122878
  &nbsp;&nbsp;Save Changes<br>
122697
122879
  &lt;/dees-button&gt;
122698
122880
  </div>
@@ -122706,7 +122888,7 @@ var demoFunc26 = () => b2`
122706
122888
  init_dist_ts26();
122707
122889
  init_dist_ts25();
122708
122890
  init_theme();
122709
- var _insideForm_dec, _status_dec2, _size_dec2, _type_dec3, _isHidden_dec, _disabled_dec4, _eventDetailData_dec, _text_dec2, _a33, _DeesButton_decorators, _init31, _text2, _eventDetailData, _disabled4, _isHidden, _type3, _size2, _status2, _insideForm;
122891
+ var _iconPosition_dec, _icon_dec2, _insideForm_dec, _status_dec2, _size_dec2, _type_dec3, _isHidden_dec, _disabled_dec4, _eventDetailData_dec, _text_dec2, _a33, _DeesButton_decorators, _init31, _text2, _eventDetailData, _disabled4, _isHidden, _type3, _size2, _status2, _insideForm, _icon2, _iconPosition;
122710
122892
  _DeesButton_decorators = [t4("dees-button")];
122711
122893
  var DeesButton = class extends (_a33 = DeesElement, _text_dec2 = [n5({
122712
122894
  reflect: true,
@@ -122727,7 +122909,7 @@ var DeesButton = class extends (_a33 = DeesElement, _text_dec2 = [n5({
122727
122909
  })], _insideForm_dec = [n5({
122728
122910
  type: Boolean,
122729
122911
  reflect: true
122730
- })], _a33) {
122912
+ })], _icon_dec2 = [n5({ type: String, reflect: true })], _iconPosition_dec = [n5({ type: String, reflect: true })], _a33) {
122731
122913
  constructor() {
122732
122914
  super();
122733
122915
  __privateAdd(this, _text2, __runInitializers(_init31, 8, this)), __runInitializers(_init31, 11, this);
@@ -122738,6 +122920,8 @@ var DeesButton = class extends (_a33 = DeesElement, _text_dec2 = [n5({
122738
122920
  __privateAdd(this, _size2, __runInitializers(_init31, 28, this, "default")), __runInitializers(_init31, 31, this);
122739
122921
  __privateAdd(this, _status2, __runInitializers(_init31, 32, this, "normal")), __runInitializers(_init31, 35, this);
122740
122922
  __privateAdd(this, _insideForm, __runInitializers(_init31, 36, this, false)), __runInitializers(_init31, 39, this);
122923
+ __privateAdd(this, _icon2, __runInitializers(_init31, 40, this)), __runInitializers(_init31, 43, this);
122924
+ __privateAdd(this, _iconPosition, __runInitializers(_init31, 44, this, "left")), __runInitializers(_init31, 47, this);
122741
122925
  }
122742
122926
  async connectedCallback() {
122743
122927
  await super.connectedCallback();
@@ -122745,6 +122929,33 @@ var DeesButton = class extends (_a33 = DeesElement, _text_dec2 = [n5({
122745
122929
  this.insideForm = true;
122746
122930
  }
122747
122931
  }
122932
+ /**
122933
+ * Extracts icon and text from light DOM and sets properties
122934
+ */
122935
+ extractLightDom() {
122936
+ const iconElement = this.querySelector("dees-icon");
122937
+ const textContent = Array.from(this.childNodes).filter((node2) => node2.nodeType === Node.TEXT_NODE).map((node2) => node2.textContent?.trim()).filter(Boolean).join(" ");
122938
+ if (textContent && !this.text) {
122939
+ this.text = textContent;
122940
+ }
122941
+ if (iconElement) {
122942
+ const iconValue = iconElement.icon || iconElement.getAttribute("icon") || (iconElement.iconFA ? `fa:${iconElement.iconFA}` : null);
122943
+ if (iconValue) {
122944
+ const children2 = Array.from(this.childNodes);
122945
+ const iconIndex = children2.indexOf(iconElement);
122946
+ const textNodes = children2.filter(
122947
+ (node2) => node2.nodeType === Node.TEXT_NODE && node2.textContent?.trim()
122948
+ );
122949
+ if (textNodes.length > 0) {
122950
+ const firstTextIndex = children2.indexOf(textNodes[0]);
122951
+ this.iconPosition = iconIndex < firstTextIndex ? "left" : "right";
122952
+ }
122953
+ this.icon = iconValue;
122954
+ }
122955
+ iconElement.remove();
122956
+ }
122957
+ this.innerHTML = "";
122958
+ }
122748
122959
  render() {
122749
122960
  const typeMap = {
122750
122961
  "normal": "default",
@@ -122755,19 +122966,24 @@ var DeesButton = class extends (_a33 = DeesElement, _text_dec2 = [n5({
122755
122966
  };
122756
122967
  const actualType = typeMap[this.type] || this.type;
122757
122968
  const actualSize = this.type === "big" ? "lg" : this.size;
122969
+ const leftIcon = this.iconPosition === "left" && this.icon ? b2`<dees-icon .icon=${this.icon}></dees-icon>` : "";
122970
+ const rightIcon = this.iconPosition === "right" && this.icon ? b2`<dees-icon .icon=${this.icon}></dees-icon>` : "";
122971
+ const isIconOnly = actualSize === "icon" && this.icon;
122758
122972
  return b2`
122759
122973
  <div
122760
122974
  class="button ${this.isHidden ? "hidden" : ""} ${actualType} size-${actualSize} ${this.status} ${this.disabled ? "disabled" : ""}"
122761
122975
  @click="${this.dispatchClick}"
122762
122976
  >
122763
122977
  ${this.status === "normal" ? b2`` : b2`
122764
- <dees-spinner
122765
- .bnw=${true}
122978
+ <dees-spinner
122979
+ .bnw=${true}
122766
122980
  status="${this.status}"
122767
122981
  size="${actualSize === "sm" ? 14 : actualSize === "lg" ? 18 : 16}"
122768
122982
  ></dees-spinner>
122769
122983
  `}
122770
- <div class="textbox">${this.text || b2`<slot>Button</slot>`}</div>
122984
+ ${leftIcon}
122985
+ ${isIconOnly ? "" : b2`<div class="textbox">${this.text || "Button"}</div>`}
122986
+ ${rightIcon}
122771
122987
  </div>
122772
122988
  `;
122773
122989
  }
@@ -122785,6 +123001,7 @@ var DeesButton = class extends (_a33 = DeesElement, _text_dec2 = [n5({
122785
123001
  );
122786
123002
  }
122787
123003
  async firstUpdated() {
123004
+ this.extractLightDom();
122788
123005
  }
122789
123006
  };
122790
123007
  _init31 = __decoratorStart(_a33);
@@ -122796,6 +123013,8 @@ _type3 = new WeakMap();
122796
123013
  _size2 = new WeakMap();
122797
123014
  _status2 = new WeakMap();
122798
123015
  _insideForm = new WeakMap();
123016
+ _icon2 = new WeakMap();
123017
+ _iconPosition = new WeakMap();
122799
123018
  __decorateElement(_init31, 4, "text", _text_dec2, DeesButton, _text2);
122800
123019
  __decorateElement(_init31, 4, "eventDetailData", _eventDetailData_dec, DeesButton, _eventDetailData);
122801
123020
  __decorateElement(_init31, 4, "disabled", _disabled_dec4, DeesButton, _disabled4);
@@ -122804,6 +123023,8 @@ __decorateElement(_init31, 4, "type", _type_dec3, DeesButton, _type3);
122804
123023
  __decorateElement(_init31, 4, "size", _size_dec2, DeesButton, _size2);
122805
123024
  __decorateElement(_init31, 4, "status", _status_dec2, DeesButton, _status2);
122806
123025
  __decorateElement(_init31, 4, "insideForm", _insideForm_dec, DeesButton, _insideForm);
123026
+ __decorateElement(_init31, 4, "icon", _icon_dec2, DeesButton, _icon2);
123027
+ __decorateElement(_init31, 4, "iconPosition", _iconPosition_dec, DeesButton, _iconPosition);
122807
123028
  DeesButton = __decorateElement(_init31, 0, "DeesButton", _DeesButton_decorators, DeesButton);
122808
123029
  __publicField(DeesButton, "demo", demoFunc26);
122809
123030
  __publicField(DeesButton, "demoGroup", "Button");
@@ -123067,6 +123288,12 @@ __publicField(DeesButton, "styles", [
123067
123288
  height: 18px;
123068
123289
  }
123069
123290
 
123291
+ /* Text alignment */
123292
+ .textbox {
123293
+ display: flex;
123294
+ align-items: center;
123295
+ }
123296
+
123070
123297
  `
123071
123298
  ]);
123072
123299
  __runInitializers(_init31, 1, DeesButton);
@@ -123169,6 +123396,10 @@ var DeesStatsGrid = class extends (_a34 = DeesElement, _tiles_dec = [n5({ type:
123169
123396
  return this.renderMultiPercentage(tile);
123170
123397
  case "cpuCores":
123171
123398
  return this.renderCpuCores(tile);
123399
+ case "partition":
123400
+ return this.renderPartition(tile);
123401
+ case "disk":
123402
+ return this.renderDisk(tile);
123172
123403
  case "text":
123173
123404
  return b2`
123174
123405
  <div class="text-value" style="${tile.color ? `color: ${tile.color}` : ""}">
@@ -123354,6 +123585,103 @@ var DeesStatsGrid = class extends (_a34 = DeesElement, _tiles_dec = [n5({ type:
123354
123585
  </div>
123355
123586
  `;
123356
123587
  }
123588
+ formatBytes(bytes) {
123589
+ if (bytes === 0) return "0 B";
123590
+ const k4 = 1024;
123591
+ const sizes = ["B", "KB", "MB", "GB", "TB", "PB"];
123592
+ const i11 = Math.floor(Math.log(bytes) / Math.log(k4));
123593
+ return parseFloat((bytes / Math.pow(k4, i11)).toFixed(1)) + " " + sizes[i11];
123594
+ }
123595
+ renderPartition(tile) {
123596
+ if (!tile.partitionData) {
123597
+ return b2`<div class="tile-value">${tile.value}</div>`;
123598
+ }
123599
+ const { used, total, filesystem, mountPoint } = tile.partitionData;
123600
+ const percentage = Math.min(100, Math.max(0, used / total * 100));
123601
+ const free = total - used;
123602
+ const getColorClass = () => {
123603
+ if (percentage >= 90) return "critical";
123604
+ if (percentage >= 75) return "warning";
123605
+ return "";
123606
+ };
123607
+ return b2`
123608
+ <div class="partition-wrapper">
123609
+ <div class="partition-header">
123610
+ <span class="partition-percentage">${Math.round(percentage)}%</span>
123611
+ </div>
123612
+ <div class="partition-bar">
123613
+ <div
123614
+ class="partition-bar-fill ${getColorClass()}"
123615
+ style="width: ${percentage}%"
123616
+ ></div>
123617
+ </div>
123618
+ <div class="partition-stats">
123619
+ <div class="partition-stat">
123620
+ <span class="partition-stat-label">Used</span>
123621
+ <span class="partition-stat-value">${this.formatBytes(used)}</span>
123622
+ </div>
123623
+ <div class="partition-stat">
123624
+ <span class="partition-stat-label">Free</span>
123625
+ <span class="partition-stat-value">${this.formatBytes(free)}</span>
123626
+ </div>
123627
+ </div>
123628
+ <div class="partition-meta">
123629
+ <span class="partition-filesystem">${filesystem}</span>
123630
+ ${mountPoint ? b2`<span class="partition-mountpoint">${mountPoint}</span>` : ""}
123631
+ </div>
123632
+ </div>
123633
+ `;
123634
+ }
123635
+ renderDisk(tile) {
123636
+ if (!tile.diskData) {
123637
+ return b2`<div class="tile-value">${tile.value}</div>`;
123638
+ }
123639
+ const { capacity, model, type: type5, iops, health } = tile.diskData;
123640
+ const getHealthClass = (value2) => {
123641
+ if (value2 >= 70) return "good";
123642
+ if (value2 >= 30) return "warning";
123643
+ return "critical";
123644
+ };
123645
+ return b2`
123646
+ <div class="disk-wrapper">
123647
+ <div class="disk-capacity">${this.formatBytes(capacity)}</div>
123648
+ ${model || type5 ? b2`
123649
+ <div class="disk-model">
123650
+ ${model ? b2`<span>${model}</span>` : ""}
123651
+ ${type5 ? b2`<span class="disk-type-badge">${type5}</span>` : ""}
123652
+ </div>
123653
+ ` : ""}
123654
+ <div class="disk-metrics">
123655
+ ${iops ? b2`
123656
+ <div class="disk-iops">
123657
+ <div class="disk-iops-item">
123658
+ <span class="disk-iops-label">Read</span>
123659
+ <span class="disk-iops-value">${iops.read.toLocaleString()}</span>
123660
+ </div>
123661
+ <div class="disk-iops-item">
123662
+ <span class="disk-iops-label">Write</span>
123663
+ <span class="disk-iops-value">${iops.write.toLocaleString()}</span>
123664
+ </div>
123665
+ </div>
123666
+ ` : ""}
123667
+ ${health !== void 0 ? b2`
123668
+ <div class="disk-health">
123669
+ <div class="disk-health-header">
123670
+ <span class="disk-health-label">Health</span>
123671
+ <span class="disk-health-value">${health}%</span>
123672
+ </div>
123673
+ <div class="disk-health-bar">
123674
+ <div
123675
+ class="disk-health-fill ${getHealthClass(health)}"
123676
+ style="width: ${health}%"
123677
+ ></div>
123678
+ </div>
123679
+ </div>
123680
+ ` : ""}
123681
+ </div>
123682
+ </div>
123683
+ `;
123684
+ }
123357
123685
  async handleGridAction(action) {
123358
123686
  if (action.action) {
123359
123687
  await action.action();
@@ -123787,6 +124115,219 @@ __publicField(DeesStatsGrid, "styles", [
123787
124115
  max-width: 100%;
123788
124116
  }
123789
124117
 
124118
+ /* Partition Styles */
124119
+ .partition-wrapper {
124120
+ width: 100%;
124121
+ display: flex;
124122
+ flex-direction: column;
124123
+ flex: 1;
124124
+ gap: 8px;
124125
+ }
124126
+
124127
+ .partition-header {
124128
+ display: flex;
124129
+ align-items: baseline;
124130
+ gap: 8px;
124131
+ }
124132
+
124133
+ .partition-percentage {
124134
+ font-size: var(--value-font-size);
124135
+ font-weight: 600;
124136
+ color: ${cssManager.bdTheme("hsl(215.3 25% 8.8%)", "hsl(210 40% 98%)")};
124137
+ line-height: 1.1;
124138
+ letter-spacing: -0.025em;
124139
+ }
124140
+
124141
+ .partition-bar {
124142
+ width: 100%;
124143
+ height: 6px;
124144
+ background: ${cssManager.bdTheme("#e8e8e8", "#1a1a1a")};
124145
+ border-radius: 3px;
124146
+ overflow: hidden;
124147
+ }
124148
+
124149
+ .partition-bar-fill {
124150
+ height: 100%;
124151
+ background: ${cssManager.bdTheme("#333333", "#e0e0e0")};
124152
+ transition: width 0.6s cubic-bezier(0.4, 0, 0.2, 1);
124153
+ border-radius: 3px;
124154
+ }
124155
+
124156
+ .partition-bar-fill.warning {
124157
+ background: ${cssManager.bdTheme("hsl(45.4 93.4% 47.5%)", "hsl(45.4 93.4% 47.5%)")};
124158
+ }
124159
+
124160
+ .partition-bar-fill.critical {
124161
+ background: ${cssManager.bdTheme("hsl(0 84.2% 60.2%)", "hsl(0 84.2% 60.2%)")};
124162
+ }
124163
+
124164
+ .partition-stats {
124165
+ display: flex;
124166
+ justify-content: space-between;
124167
+ align-items: center;
124168
+ margin-top: auto;
124169
+ }
124170
+
124171
+ .partition-stat {
124172
+ display: flex;
124173
+ flex-direction: column;
124174
+ gap: 2px;
124175
+ }
124176
+
124177
+ .partition-stat-label {
124178
+ font-size: 10px;
124179
+ font-weight: 500;
124180
+ color: ${cssManager.bdTheme("hsl(215.4 16.3% 56.9%)", "hsl(215 20.2% 55.1%)")};
124181
+ text-transform: uppercase;
124182
+ letter-spacing: 0.02em;
124183
+ }
124184
+
124185
+ .partition-stat-value {
124186
+ font-size: 13px;
124187
+ font-weight: 600;
124188
+ color: ${cssManager.bdTheme("hsl(215.3 25% 8.8%)", "hsl(210 40% 98%)")};
124189
+ letter-spacing: -0.01em;
124190
+ }
124191
+
124192
+ .partition-meta {
124193
+ display: flex;
124194
+ align-items: center;
124195
+ gap: 6px;
124196
+ margin-top: 4px;
124197
+ }
124198
+
124199
+ .partition-filesystem {
124200
+ font-size: 11px;
124201
+ font-weight: 500;
124202
+ color: ${cssManager.bdTheme("hsl(215.4 16.3% 46.9%)", "hsl(215 20.2% 65.1%)")};
124203
+ background: ${cssManager.bdTheme("hsl(210 40% 96.1%)", "hsl(215 20.2% 16.8%)")};
124204
+ padding: 2px 6px;
124205
+ border-radius: 3px;
124206
+ }
124207
+
124208
+ .partition-mountpoint {
124209
+ font-size: 11px;
124210
+ color: ${cssManager.bdTheme("hsl(215.4 16.3% 56.9%)", "hsl(215 20.2% 55.1%)")};
124211
+ }
124212
+
124213
+ /* Disk Styles */
124214
+ .disk-wrapper {
124215
+ width: 100%;
124216
+ display: flex;
124217
+ flex-direction: column;
124218
+ flex: 1;
124219
+ gap: 8px;
124220
+ }
124221
+
124222
+ .disk-capacity {
124223
+ font-size: var(--value-font-size);
124224
+ font-weight: 600;
124225
+ color: ${cssManager.bdTheme("hsl(215.3 25% 8.8%)", "hsl(210 40% 98%)")};
124226
+ line-height: 1.1;
124227
+ letter-spacing: -0.025em;
124228
+ }
124229
+
124230
+ .disk-model {
124231
+ font-size: 12px;
124232
+ color: ${cssManager.bdTheme("hsl(215.4 16.3% 46.9%)", "hsl(215 20.2% 65.1%)")};
124233
+ display: flex;
124234
+ align-items: center;
124235
+ gap: 6px;
124236
+ }
124237
+
124238
+ .disk-type-badge {
124239
+ font-size: 10px;
124240
+ font-weight: 600;
124241
+ text-transform: uppercase;
124242
+ color: ${cssManager.bdTheme("hsl(215.4 16.3% 46.9%)", "hsl(215 20.2% 65.1%)")};
124243
+ background: ${cssManager.bdTheme("hsl(210 40% 96.1%)", "hsl(215 20.2% 16.8%)")};
124244
+ padding: 2px 6px;
124245
+ border-radius: 3px;
124246
+ }
124247
+
124248
+ .disk-metrics {
124249
+ display: flex;
124250
+ flex-direction: column;
124251
+ gap: 8px;
124252
+ margin-top: auto;
124253
+ }
124254
+
124255
+ .disk-iops {
124256
+ display: flex;
124257
+ align-items: center;
124258
+ gap: 12px;
124259
+ }
124260
+
124261
+ .disk-iops-item {
124262
+ display: flex;
124263
+ align-items: baseline;
124264
+ gap: 4px;
124265
+ }
124266
+
124267
+ .disk-iops-label {
124268
+ font-size: 10px;
124269
+ font-weight: 500;
124270
+ color: ${cssManager.bdTheme("hsl(215.4 16.3% 56.9%)", "hsl(215 20.2% 55.1%)")};
124271
+ text-transform: uppercase;
124272
+ }
124273
+
124274
+ .disk-iops-value {
124275
+ font-size: 13px;
124276
+ font-weight: 600;
124277
+ color: ${cssManager.bdTheme("hsl(215.3 25% 8.8%)", "hsl(210 40% 98%)")};
124278
+ }
124279
+
124280
+ .disk-health {
124281
+ display: flex;
124282
+ flex-direction: column;
124283
+ gap: 4px;
124284
+ }
124285
+
124286
+ .disk-health-header {
124287
+ display: flex;
124288
+ justify-content: space-between;
124289
+ align-items: baseline;
124290
+ }
124291
+
124292
+ .disk-health-label {
124293
+ font-size: 10px;
124294
+ font-weight: 500;
124295
+ color: ${cssManager.bdTheme("hsl(215.4 16.3% 56.9%)", "hsl(215 20.2% 55.1%)")};
124296
+ text-transform: uppercase;
124297
+ }
124298
+
124299
+ .disk-health-value {
124300
+ font-size: 12px;
124301
+ font-weight: 600;
124302
+ color: ${cssManager.bdTheme("hsl(215.3 25% 8.8%)", "hsl(210 40% 98%)")};
124303
+ }
124304
+
124305
+ .disk-health-bar {
124306
+ width: 100%;
124307
+ height: 4px;
124308
+ background: ${cssManager.bdTheme("#e8e8e8", "#1a1a1a")};
124309
+ border-radius: 2px;
124310
+ overflow: hidden;
124311
+ }
124312
+
124313
+ .disk-health-fill {
124314
+ height: 100%;
124315
+ transition: width 0.6s cubic-bezier(0.4, 0, 0.2, 1);
124316
+ border-radius: 2px;
124317
+ }
124318
+
124319
+ .disk-health-fill.good {
124320
+ background: ${cssManager.bdTheme("hsl(142.1 76.2% 36.3%)", "hsl(142.1 70.6% 45.3%)")};
124321
+ }
124322
+
124323
+ .disk-health-fill.warning {
124324
+ background: ${cssManager.bdTheme("hsl(45.4 93.4% 47.5%)", "hsl(45.4 93.4% 47.5%)")};
124325
+ }
124326
+
124327
+ .disk-health-fill.critical {
124328
+ background: ${cssManager.bdTheme("hsl(0 84.2% 60.2%)", "hsl(0 84.2% 60.2%)")};
124329
+ }
124330
+
123790
124331
  /* Trend Styles */
123791
124332
  .trend-container {
123792
124333
  width: 100%;
@@ -160010,4 +160551,4 @@ ibantools/jsnext/ibantools.js:
160010
160551
  * @preferred
160011
160552
  *)
160012
160553
  */
160013
- //# sourceMappingURL=bundle-1768261315087.js.map
160554
+ //# sourceMappingURL=bundle-1768337007500.js.map