@design.estate/dees-catalog 3.49.2 → 3.50.1

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.
@@ -111535,11 +111535,11 @@ var init_dees_workspace_terminal = __esm({
111535
111535
  i`
111536
111536
  :host {
111537
111537
  background: ${cssManager.bdTheme("#ffffff", "#000000")};
111538
- position: absolute;
111539
- height: 100%;
111540
- width: 100%;
111541
111538
  display: flex;
111542
111539
  flex-direction: row;
111540
+ box-sizing: border-box;
111541
+ height: 100%;
111542
+ width: 100%;
111543
111543
  }
111544
111544
 
111545
111545
  * {
@@ -168333,6 +168333,44 @@ var demoFunc52 = /* @__PURE__ */ __name(() => b2`
168333
168333
  <dees-simple-appdash
168334
168334
  name="My Application"
168335
168335
  terminalSetupCommand="echo 'Welcome to the terminal!'"
168336
+ .globalMessages=${[
168337
+ {
168338
+ id: "update",
168339
+ type: "info",
168340
+ message: "A new version (v3.50.0) is available with performance improvements and bug fixes.",
168341
+ dismissible: true,
168342
+ actions: [
168343
+ {
168344
+ name: "Update Now",
168345
+ iconName: "lucide:download",
168346
+ action: /* @__PURE__ */ __name(() => alert("Updating..."), "action")
168347
+ },
168348
+ {
168349
+ name: "Release Notes",
168350
+ action: /* @__PURE__ */ __name(() => alert("Opening release notes..."), "action")
168351
+ }
168352
+ ]
168353
+ },
168354
+ {
168355
+ id: "maintenance",
168356
+ type: "warning",
168357
+ message: "Scheduled maintenance window: April 5, 2026 02:00\u201306:00 UTC. Some services may be temporarily unavailable.",
168358
+ dismissible: true
168359
+ },
168360
+ {
168361
+ id: "critical",
168362
+ type: "error",
168363
+ message: "Your SSL certificate expires in 3 days. Renew now to avoid service disruption.",
168364
+ dismissible: false,
168365
+ actions: [
168366
+ {
168367
+ name: "Renew Certificate",
168368
+ iconName: "lucide:shieldCheck",
168369
+ action: /* @__PURE__ */ __name(() => alert("Renewing certificate..."), "action")
168370
+ }
168371
+ ]
168372
+ }
168373
+ ]}
168336
168374
  .viewTabs=${[
168337
168375
  {
168338
168376
  name: "Dashboard",
@@ -168365,15 +168403,17 @@ var demoFunc52 = /* @__PURE__ */ __name(() => b2`
168365
168403
  init_dist_ts30();
168366
168404
  init_dees_icon();
168367
168405
  init_theme();
168368
- var _selectedView_dec, _terminalSetupCommand_dec, _viewTabs_dec, _name_dec2, _a89, _DeesSimpleAppDash_decorators, _init92, _name2, _viewTabs, _terminalSetupCommand, _selectedView;
168406
+ var __activeMessages_dec, _selectedView_dec, _globalMessages_dec, _terminalSetupCommand_dec, _viewTabs_dec, _name_dec2, _a89, _DeesSimpleAppDash_decorators, _init92, _name2, _viewTabs, _terminalSetupCommand, _globalMessages, _selectedView, __activeMessages;
168369
168407
  _DeesSimpleAppDash_decorators = [customElement("dees-simple-appdash")];
168370
- var _DeesSimpleAppDash = class _DeesSimpleAppDash extends (_a89 = DeesElement, _name_dec2 = [n5()], _viewTabs_dec = [n5({ type: Array })], _terminalSetupCommand_dec = [n5({ type: String })], _selectedView_dec = [r5()], _a89) {
168408
+ var _DeesSimpleAppDash = class _DeesSimpleAppDash extends (_a89 = DeesElement, _name_dec2 = [n5()], _viewTabs_dec = [n5({ type: Array })], _terminalSetupCommand_dec = [n5({ type: String })], _globalMessages_dec = [n5({ type: Array })], _selectedView_dec = [r5()], __activeMessages_dec = [r5()], _a89) {
168371
168409
  constructor() {
168372
168410
  super(...arguments);
168373
168411
  __privateAdd(this, _name2, __runInitializers(_init92, 8, this, "Application Dashboard")), __runInitializers(_init92, 11, this);
168374
168412
  __privateAdd(this, _viewTabs, __runInitializers(_init92, 12, this, [])), __runInitializers(_init92, 15, this);
168375
168413
  __privateAdd(this, _terminalSetupCommand, __runInitializers(_init92, 16, this, `echo "Terminal ready"`)), __runInitializers(_init92, 19, this);
168376
- __privateAdd(this, _selectedView, __runInitializers(_init92, 20, this)), __runInitializers(_init92, 23, this);
168414
+ __privateAdd(this, _globalMessages, __runInitializers(_init92, 20, this, [])), __runInitializers(_init92, 23, this);
168415
+ __privateAdd(this, _selectedView, __runInitializers(_init92, 24, this)), __runInitializers(_init92, 27, this);
168416
+ __privateAdd(this, __activeMessages, __runInitializers(_init92, 28, this, [])), __runInitializers(_init92, 31, this);
168377
168417
  __publicField(this, "currentTerminal", null);
168378
168418
  __publicField(this, "currentView");
168379
168419
  }
@@ -168416,6 +168456,34 @@ var _DeesSimpleAppDash = class _DeesSimpleAppDash extends (_a89 = DeesElement, _
168416
168456
  </div>
168417
168457
  </div>
168418
168458
  </div>
168459
+ ${this._activeMessages.length > 0 ? b2`
168460
+ <div class="messageBannerArea">
168461
+ ${this._activeMessages.map((msg) => b2`
168462
+ <div
168463
+ class="messageBanner messageBanner-${msg.type}"
168464
+ data-message-id="${msg.id}"
168465
+ >
168466
+ <dees-icon .icon="${this.getMessageIcon(msg)}"></dees-icon>
168467
+ <span class="messageBanner-text">${msg.message}</span>
168468
+ ${msg.actions?.length ? b2`
168469
+ <div class="messageBanner-actions">
168470
+ ${msg.actions.map((a5) => b2`
168471
+ <div class="messageBanner-action" @click=${() => a5.action()}>
168472
+ ${a5.iconName ? b2`<dees-icon .icon="${a5.iconName.includes(":") ? a5.iconName : `lucide:${a5.iconName}`}"></dees-icon>` : ""}
168473
+ <span>${a5.name}</span>
168474
+ </div>
168475
+ `)}
168476
+ </div>
168477
+ ` : ""}
168478
+ ${msg.dismissible !== false ? b2`
168479
+ <div class="messageBanner-dismiss" @click=${() => this.removeMessage(msg.id)}>
168480
+ <dees-icon .icon="${"lucide:x"}"></dees-icon>
168481
+ </div>
168482
+ ` : ""}
168483
+ </div>
168484
+ `)}
168485
+ </div>
168486
+ ` : ""}
168419
168487
  <div class="appcontent">
168420
168488
  <!-- Content goes here -->
168421
168489
  </div>
@@ -168440,6 +168508,71 @@ var _DeesSimpleAppDash = class _DeesSimpleAppDash extends (_a89 = DeesElement, _
168440
168508
  await this.loadView(viewToLoad);
168441
168509
  }
168442
168510
  }
168511
+ willUpdate(changedProperties) {
168512
+ if (changedProperties.has("globalMessages")) {
168513
+ const propertyIds = new Set(this.globalMessages.map((m6) => m6.id));
168514
+ const existingIds = new Set(this._activeMessages.map((m6) => m6.id));
168515
+ const newMessages = this.globalMessages.filter((m6) => !existingIds.has(m6.id));
168516
+ const previousGlobalMessages = changedProperties.get("globalMessages") || [];
168517
+ const previousIds = new Set(previousGlobalMessages.map((m6) => m6.id));
168518
+ const removedIds = new Set([...previousIds].filter((id) => !propertyIds.has(id)));
168519
+ this._activeMessages = [
168520
+ ...this._activeMessages.filter((m6) => !removedIds.has(m6.id)),
168521
+ ...newMessages
168522
+ ];
168523
+ }
168524
+ }
168525
+ updated(changedProperties) {
168526
+ super.updated(changedProperties);
168527
+ this.updateBannerOffset();
168528
+ }
168529
+ updateBannerOffset() {
168530
+ requestAnimationFrame(() => {
168531
+ const bannerArea = this.shadowRoot?.querySelector(".messageBannerArea");
168532
+ const maincontainer = this.shadowRoot?.querySelector(".maincontainer");
168533
+ const height = bannerArea ? bannerArea.offsetHeight : 0;
168534
+ maincontainer?.style.setProperty("--banner-area-height", `${height}px`);
168535
+ });
168536
+ }
168537
+ getMessageIcon(msg) {
168538
+ if (msg.icon) return msg.icon;
168539
+ const defaults = {
168540
+ info: "lucide:info",
168541
+ success: "lucide:circleCheck",
168542
+ warning: "lucide:triangleAlert",
168543
+ error: "lucide:circleX"
168544
+ };
168545
+ return defaults[msg.type];
168546
+ }
168547
+ addMessage(message2) {
168548
+ const id = message2.id || `msg-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
168549
+ const fullMessage = {
168550
+ dismissible: true,
168551
+ ...message2,
168552
+ id
168553
+ };
168554
+ this._activeMessages = [...this._activeMessages, fullMessage];
168555
+ return id;
168556
+ }
168557
+ removeMessage(id) {
168558
+ const bannerEl = this.shadowRoot?.querySelector(`[data-message-id="${id}"]`);
168559
+ if (bannerEl) {
168560
+ bannerEl.classList.add("dismissing");
168561
+ bannerEl.addEventListener("animationend", () => {
168562
+ this._activeMessages = this._activeMessages.filter((m6) => m6.id !== id);
168563
+ this.dispatchEvent(new CustomEvent("message-dismiss", {
168564
+ detail: { id },
168565
+ bubbles: true,
168566
+ composed: true
168567
+ }));
168568
+ }, { once: true });
168569
+ } else {
168570
+ this._activeMessages = this._activeMessages.filter((m6) => m6.id !== id);
168571
+ }
168572
+ }
168573
+ clearMessages() {
168574
+ this._activeMessages = [];
168575
+ }
168443
168576
  async launchTerminal() {
168444
168577
  const domtools20 = await this.domtoolsPromise;
168445
168578
  if (this.currentTerminal) {
@@ -168454,7 +168587,7 @@ var _DeesSimpleAppDash = class _DeesSimpleAppDash extends (_a89 = DeesElement, _
168454
168587
  maincontainer.appendChild(terminal);
168455
168588
  terminal.style.position = "absolute";
168456
168589
  terminal.style.zIndex = "10";
168457
- terminal.style.top = "0px";
168590
+ terminal.style.top = "var(--banner-area-height, 0px)";
168458
168591
  terminal.style.left = "240px";
168459
168592
  terminal.style.right = "0px";
168460
168593
  terminal.style.bottom = "24px";
@@ -168462,8 +168595,6 @@ var _DeesSimpleAppDash = class _DeesSimpleAppDash extends (_a89 = DeesElement, _
168462
168595
  terminal.style.transform = "translateY(8px) scale(0.99)";
168463
168596
  terminal.style.transition = "all 0.25s cubic-bezier(0.4, 0, 0.2, 1)";
168464
168597
  terminal.style.boxShadow = "0 25px 50px -12px rgb(0 0 0 / 0.5), 0 0 0 1px rgb(255 255 255 / 0.05)";
168465
- terminal.style.maxWidth = `calc(${maincontainer.clientWidth}px -240px)`;
168466
- terminal.style.maxHeight = `calc(${maincontainer.clientHeight}px - 24px)`;
168467
168598
  terminal.addEventListener("close", () => this.closeTerminal());
168468
168599
  await domtools20.convenience.smartdelay.delayFor(0);
168469
168600
  terminal.style.opacity = "1";
@@ -168500,11 +168631,15 @@ _init92 = __decoratorStart(_a89);
168500
168631
  _name2 = new WeakMap();
168501
168632
  _viewTabs = new WeakMap();
168502
168633
  _terminalSetupCommand = new WeakMap();
168634
+ _globalMessages = new WeakMap();
168503
168635
  _selectedView = new WeakMap();
168636
+ __activeMessages = new WeakMap();
168504
168637
  __decorateElement(_init92, 4, "name", _name_dec2, _DeesSimpleAppDash, _name2);
168505
168638
  __decorateElement(_init92, 4, "viewTabs", _viewTabs_dec, _DeesSimpleAppDash, _viewTabs);
168506
168639
  __decorateElement(_init92, 4, "terminalSetupCommand", _terminalSetupCommand_dec, _DeesSimpleAppDash, _terminalSetupCommand);
168640
+ __decorateElement(_init92, 4, "globalMessages", _globalMessages_dec, _DeesSimpleAppDash, _globalMessages);
168507
168641
  __decorateElement(_init92, 4, "selectedView", _selectedView_dec, _DeesSimpleAppDash, _selectedView);
168642
+ __decorateElement(_init92, 4, "_activeMessages", __activeMessages_dec, _DeesSimpleAppDash, __activeMessages);
168508
168643
  _DeesSimpleAppDash = __decorateElement(_init92, 0, "DeesSimpleAppDash", _DeesSimpleAppDash_decorators, _DeesSimpleAppDash);
168509
168644
  __name(_DeesSimpleAppDash, "DeesSimpleAppDash");
168510
168645
  // STATIC
@@ -168788,6 +168923,170 @@ __publicField(_DeesSimpleAppDash, "styles", [
168788
168923
  .control.status-terminal dees-icon {
168789
168924
  color: hsl(45 90% 55%);
168790
168925
  }
168926
+
168927
+ /* Global Message Banners */
168928
+ .messageBannerArea {
168929
+ position: absolute;
168930
+ top: 0;
168931
+ left: 240px;
168932
+ right: 0;
168933
+ z-index: 3;
168934
+ display: flex;
168935
+ flex-direction: column;
168936
+ transition: height 0.25s cubic-bezier(0.4, 0, 0.2, 1);
168937
+ }
168938
+
168939
+ .messageBanner {
168940
+ display: flex;
168941
+ align-items: center;
168942
+ gap: 12px;
168943
+ padding: 10px 16px;
168944
+ font-size: 13px;
168945
+ font-family: 'Geist Sans', sans-serif;
168946
+ font-weight: 500;
168947
+ border-bottom: 1px solid ${cssManager.bdTheme("hsl(0 0% 91%)", "hsl(0 0% 13%)")};
168948
+ animation: bannerSlideDown 0.25s cubic-bezier(0.4, 0, 0.2, 1) forwards;
168949
+ }
168950
+
168951
+ .messageBanner.dismissing {
168952
+ animation: bannerSlideUp 0.2s cubic-bezier(0.4, 0, 0.2, 1) forwards;
168953
+ }
168954
+
168955
+ @keyframes bannerSlideDown {
168956
+ from {
168957
+ opacity: 0;
168958
+ transform: translateY(-100%);
168959
+ }
168960
+ to {
168961
+ opacity: 1;
168962
+ transform: translateY(0);
168963
+ }
168964
+ }
168965
+
168966
+ @keyframes bannerSlideUp {
168967
+ from {
168968
+ opacity: 1;
168969
+ transform: translateY(0);
168970
+ }
168971
+ to {
168972
+ opacity: 0;
168973
+ transform: translateY(-100%);
168974
+ }
168975
+ }
168976
+
168977
+ .messageBanner dees-icon {
168978
+ font-size: 16px;
168979
+ flex-shrink: 0;
168980
+ }
168981
+
168982
+ .messageBanner-text {
168983
+ flex: 1;
168984
+ overflow: hidden;
168985
+ text-overflow: ellipsis;
168986
+ white-space: nowrap;
168987
+ }
168988
+
168989
+ .messageBanner-actions {
168990
+ display: flex;
168991
+ align-items: center;
168992
+ gap: 6px;
168993
+ flex-shrink: 0;
168994
+ }
168995
+
168996
+ .messageBanner-action {
168997
+ display: flex;
168998
+ align-items: center;
168999
+ gap: 6px;
169000
+ padding: 4px 12px;
169001
+ border-radius: 4px;
169002
+ cursor: default;
169003
+ font-size: 12px;
169004
+ font-weight: 600;
169005
+ letter-spacing: 0.01em;
169006
+ transition: all 0.15s ease;
169007
+ white-space: nowrap;
169008
+ background: ${cssManager.bdTheme("hsl(0 0% 0% / 0.08)", "hsl(0 0% 100% / 0.1)")};
169009
+ color: inherit;
169010
+ }
169011
+
169012
+ .messageBanner-action:hover {
169013
+ background: ${cssManager.bdTheme("hsl(0 0% 0% / 0.15)", "hsl(0 0% 100% / 0.18)")};
169014
+ }
169015
+
169016
+ .messageBanner-action:active {
169017
+ transform: scale(0.97);
169018
+ }
169019
+
169020
+ .messageBanner-action dees-icon {
169021
+ font-size: 13px;
169022
+ }
169023
+
169024
+ .messageBanner-dismiss {
169025
+ flex-shrink: 0;
169026
+ display: flex;
169027
+ align-items: center;
169028
+ justify-content: center;
169029
+ width: 24px;
169030
+ height: 24px;
169031
+ border-radius: 4px;
169032
+ cursor: default;
169033
+ opacity: 0.5;
169034
+ transition: all 0.15s ease;
169035
+ }
169036
+
169037
+ .messageBanner-dismiss:hover {
169038
+ opacity: 1;
169039
+ background: hsl(0 0% 0% / 0.1);
169040
+ }
169041
+
169042
+ /* Message type: info */
169043
+ .messageBanner-info {
169044
+ background: ${cssManager.bdTheme("hsl(210 100% 97%)", "hsl(210 50% 10%)")};
169045
+ color: ${cssManager.bdTheme("hsl(210 70% 30%)", "hsl(210 70% 80%)")};
169046
+ border-left: 3px solid #0084ff;
169047
+ }
169048
+ .messageBanner-info dees-icon {
169049
+ color: #0084ff;
169050
+ }
169051
+
169052
+ /* Message type: success */
169053
+ .messageBanner-success {
169054
+ background: ${cssManager.bdTheme("hsl(142 70% 97%)", "hsl(142 30% 10%)")};
169055
+ color: ${cssManager.bdTheme("hsl(142 50% 25%)", "hsl(142 50% 80%)")};
169056
+ border-left: 3px solid #22c55e;
169057
+ }
169058
+ .messageBanner-success dees-icon {
169059
+ color: #22c55e;
169060
+ }
169061
+
169062
+ /* Message type: warning */
169063
+ .messageBanner-warning {
169064
+ background: ${cssManager.bdTheme("hsl(38 90% 97%)", "hsl(38 40% 10%)")};
169065
+ color: ${cssManager.bdTheme("hsl(38 60% 25%)", "hsl(38 60% 80%)")};
169066
+ border-left: 3px solid #f59e0b;
169067
+ }
169068
+ .messageBanner-warning dees-icon {
169069
+ color: #f59e0b;
169070
+ }
169071
+
169072
+ /* Message type: error */
169073
+ .messageBanner-error {
169074
+ background: ${cssManager.bdTheme("hsl(0 70% 97%)", "hsl(0 40% 10%)")};
169075
+ color: ${cssManager.bdTheme("hsl(0 60% 30%)", "hsl(0 60% 80%)")};
169076
+ border-left: 3px solid #ef4444;
169077
+ }
169078
+ .messageBanner-error dees-icon {
169079
+ color: #ef4444;
169080
+ }
169081
+
169082
+ .messageBanner-dismiss:hover {
169083
+ background: ${cssManager.bdTheme("hsl(0 0% 0% / 0.08)", "hsl(0 0% 100% / 0.1)")};
169084
+ }
169085
+
169086
+ .appcontent {
169087
+ top: var(--banner-area-height, 0px);
169088
+ height: calc(100% - 24px - var(--banner-area-height, 0px));
169089
+ }
168791
169090
  `
168792
169091
  ]);
168793
169092
  __runInitializers(_init92, 1, _DeesSimpleAppDash);
@@ -174423,7 +174722,7 @@ init_group_runtime();
174423
174722
  // ts_web/00_commitinfo_data.ts
174424
174723
  var commitinfo = {
174425
174724
  name: "@design.estate/dees-catalog",
174426
- version: "3.49.2",
174725
+ version: "3.50.1",
174427
174726
  description: "A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript."
174428
174727
  };
174429
174728
  export {
@@ -176389,4 +176688,4 @@ ibantools/jsnext/ibantools.js:
176389
176688
  * @preferred
176390
176689
  *)
176391
176690
  */
176392
- //# sourceMappingURL=bundle-1775146154296.js.map
176691
+ //# sourceMappingURL=bundle-1775157226225.js.map
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@design.estate/dees-catalog',
6
- version: '3.49.2',
6
+ version: '3.50.1',
7
7
  description: 'A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.'
8
8
  };
9
9
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfd2ViLzAwX2NvbW1pdGluZm9fZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN4QixJQUFJLEVBQUUsNkJBQTZCO0lBQ25DLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLFdBQVcsRUFBRSxzSkFBc0o7Q0FDcEssQ0FBQSJ9
@@ -11,16 +11,41 @@ export interface IView {
11
11
  iconName?: string;
12
12
  element: DeesElement['constructor']['prototype'];
13
13
  }
14
+ export type TGlobalMessageType = 'info' | 'success' | 'warning' | 'error';
15
+ export interface IGlobalMessageAction {
16
+ name: string;
17
+ iconName?: string;
18
+ action: () => void | Promise<void>;
19
+ }
20
+ export interface IGlobalMessage {
21
+ id: string;
22
+ type: TGlobalMessageType;
23
+ message: string;
24
+ dismissible?: boolean;
25
+ icon?: string;
26
+ actions?: IGlobalMessageAction[];
27
+ }
14
28
  export declare class DeesSimpleAppDash extends DeesElement {
15
29
  static demo: () => TemplateResult<1>;
16
30
  static demoGroups: string[];
17
31
  accessor name: string;
18
32
  accessor viewTabs: IView[];
19
33
  accessor terminalSetupCommand: string;
34
+ accessor globalMessages: IGlobalMessage[];
20
35
  accessor selectedView: IView;
36
+ accessor _activeMessages: IGlobalMessage[];
21
37
  static styles: CSSResult[];
22
38
  render(): TemplateResult;
23
39
  firstUpdated(_changedProperties: Map<string | number | symbol, unknown>): Promise<void>;
40
+ willUpdate(changedProperties: Map<string, unknown>): void;
41
+ updated(changedProperties: Map<string, unknown>): void;
42
+ private updateBannerOffset;
43
+ private getMessageIcon;
44
+ addMessage(message: Omit<IGlobalMessage, 'id'> & {
45
+ id?: string;
46
+ }): string;
47
+ removeMessage(id: string): void;
48
+ clearMessages(): void;
24
49
  currentTerminal: DeesWorkspaceTerminal | null;
25
50
  launchTerminal(): Promise<DeesWorkspaceTerminal | undefined>;
26
51
  private closeTerminal;
@@ -338,6 +338,44 @@ export const demoFunc = () => html `
338
338
  <dees-simple-appdash
339
339
  name="My Application"
340
340
  terminalSetupCommand="echo 'Welcome to the terminal!'"
341
+ .globalMessages=${[
342
+ {
343
+ id: 'update',
344
+ type: 'info',
345
+ message: 'A new version (v3.50.0) is available with performance improvements and bug fixes.',
346
+ dismissible: true,
347
+ actions: [
348
+ {
349
+ name: 'Update Now',
350
+ iconName: 'lucide:download',
351
+ action: () => alert('Updating...'),
352
+ },
353
+ {
354
+ name: 'Release Notes',
355
+ action: () => alert('Opening release notes...'),
356
+ },
357
+ ],
358
+ },
359
+ {
360
+ id: 'maintenance',
361
+ type: 'warning',
362
+ message: 'Scheduled maintenance window: April 5, 2026 02:00–06:00 UTC. Some services may be temporarily unavailable.',
363
+ dismissible: true,
364
+ },
365
+ {
366
+ id: 'critical',
367
+ type: 'error',
368
+ message: 'Your SSL certificate expires in 3 days. Renew now to avoid service disruption.',
369
+ dismissible: false,
370
+ actions: [
371
+ {
372
+ name: 'Renew Certificate',
373
+ iconName: 'lucide:shieldCheck',
374
+ action: () => alert('Renewing certificate...'),
375
+ },
376
+ ],
377
+ },
378
+ ]}
341
379
  .viewTabs=${[
342
380
  {
343
381
  name: 'Dashboard',
@@ -365,4 +403,4 @@ export const demoFunc = () => html `
365
403
  ></dees-simple-appdash>
366
404
  </div>
367
405
  `;
368
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1zaW1wbGUtYXBwZGFzaC5kZW1vLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHNfd2ViL2VsZW1lbnRzLzAwZ3JvdXAtc2ltcGxlL2RlZXMtc2ltcGxlLWFwcGRhc2gvZGVlcy1zaW1wbGUtYXBwZGFzaC5kZW1vLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRWhHLE9BQU8sMkNBQTJDLENBQUM7QUFDbkQsT0FBTyx3REFBd0QsQ0FBQztBQUNoRSxPQUFPLGdFQUFnRSxDQUFDO0FBQ3hFLE9BQU8sZ0VBQWdFLENBQUM7QUFDeEUsT0FBTyxvRUFBb0UsQ0FBQztBQUM1RSxPQUFPLHlEQUF5RCxDQUFDO0FBQ2pFLE9BQU8seURBQXlELENBQUM7QUFHakUsOEJBQThCO0lBRXhCLGlCQUFpQjs0QkFEdEIsYUFBYSxDQUFDLHFCQUFxQixDQUFDOzs7O3NCQUNMLFdBQVc7aUNBQW5CLFNBQVEsV0FBVzs7OztZQUEzQyw2S0FxR0M7Ozs7UUFwR0MsTUFBTSxDQUFDLE1BQU0sR0FBRztZQUNkLFVBQVUsQ0FBQyxhQUFhO1lBQ3hCLEdBQUcsQ0FBQTs7Ozs7OztpQkFPVSxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUM7Ozs7O0tBSzlDO1NBQ0YsQ0FBQztRQUVNLFVBQVUsR0FBaUI7WUFDakM7Z0JBQ0UsRUFBRSxFQUFFLE9BQU87Z0JBQ1gsS0FBSyxFQUFFLGNBQWM7Z0JBQ3JCLEtBQUssRUFBRSxJQUFJO2dCQUNYLElBQUksRUFBRSxRQUFRO2dCQUNkLElBQUksRUFBRSxTQUFTO2dCQUNmLFdBQVcsRUFBRSxxQkFBcUI7Z0JBQ2xDLEtBQUssRUFBRSxTQUFTO2FBQ2pCO1lBQ0Q7Z0JBQ0Us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
406
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1zaW1wbGUtYXBwZGFzaC5kZW1vLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHNfd2ViL2VsZW1lbnRzLzAwZ3JvdXAtc2ltcGxlL2RlZXMtc2ltcGxlLWFwcGRhc2gvZGVlcy1zaW1wbGUtYXBwZGFzaC5kZW1vLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRWhHLE9BQU8sMkNBQTJDLENBQUM7QUFDbkQsT0FBTyx3REFBd0QsQ0FBQztBQUNoRSxPQUFPLGdFQUFnRSxDQUFDO0FBQ3hFLE9BQU8sZ0VBQWdFLENBQUM7QUFDeEUsT0FBTyxvRUFBb0UsQ0FBQztBQUM1RSxPQUFPLHlEQUF5RCxDQUFDO0FBQ2pFLE9BQU8seURBQXlELENBQUM7QUFHakUsOEJBQThCO0lBRXhCLGlCQUFpQjs0QkFEdEIsYUFBYSxDQUFDLHFCQUFxQixDQUFDOzs7O3NCQUNMLFdBQVc7aUNBQW5CLFNBQVEsV0FBVzs7OztZQUEzQyw2S0FxR0M7Ozs7UUFwR0MsTUFBTSxDQUFDLE1BQU0sR0FBRztZQUNkLFVBQVUsQ0FBQyxhQUFhO1lBQ3hCLEdBQUcsQ0FBQTs7Ozs7OztpQkFPVSxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUM7Ozs7O0tBSzlDO1NBQ0YsQ0FBQztRQUVNLFVBQVUsR0FBaUI7WUFDakM7Z0JBQ0UsRUFBRSxFQUFFLE9BQU87Z0JBQ1gsS0FBSyxFQUFFLGNBQWM7Z0JBQ3JCLEtBQUssRUFBRSxJQUFJO2dCQUNYLElBQUksRUFBRSxRQUFRO2dCQUNkLElBQUksRUFBRSxTQUFTO2dCQUNmLFdBQVcsRUFBRSxxQkFBcUI7Z0JBQ2xDLEtBQUssRUFBRSxTQUFTO2FBQ2pCO1lBQ0Q7Z0JBQ0UsRUFBRSxFQUFFLFdBQVc7Z0JBQ2YsS0FBSyxFQUFFLFlBQVk7Z0JBQ25CLEtBQUssRUFBRSxLQUFLO2dCQUNaLElBQUksRUFBRSxRQUFRO2dCQUNkLElBQUksRUFBRSxPQUFPO2dCQUNiLFdBQVcsRUFBRSxtQkFBbUI7Z0JBQ2hDLEtBQUssRUFBRSxTQUFTO2FBQ2pCO1lBQ0Q7Z0JBQ0UsRUFBRSxFQUFFLFFBQVE7Z0JBQ1osS0FBSyxFQUFFLGVBQWU7Z0JBQ3RCLEtBQUssRUFBRSxFQUFFO2dCQUNULElBQUksRUFBRSxHQUFHO2dCQUNULElBQUksRUFBRSxPQUFPO2dCQUNiLElBQUksRUFBRSxVQUFVO2dCQUNoQixXQUFXLEVBQUUsY0FBYztnQkFDM0IsS0FBSyxFQUFFLFNBQVM7Z0JBQ2hCLFlBQVksRUFBRTtvQkFDWixHQUFHLEVBQUUsQ0FBQztvQkFDTixHQUFHLEVBQUUsR0FBRztvQkFDUixVQUFVLEVBQUU7d0JBQ1YsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7d0JBQy9CLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO3dCQUMvQixFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtxQkFDakM7aUJBQ0Y7YUFDRjtZQUNEO2dCQUNFLEVBQUUsRUFBRSxVQUFVO2dCQUNkLEtBQUssRUFBRSxtQkFBbUI7Z0JBQzFCLEtBQUssRUFBRSxHQUFHO2dCQUNWLElBQUksRUFBRSxHQUFHO2dCQUNULElBQUksRUFBRSxRQUFRO2dCQUNkLElBQUksRUFBRSxTQUFTO2dCQUNmLFdBQVcsRUFBRSxtQkFBbUI7Z0JBQ2hDLEtBQUssRUFBRSxTQUFTO2FBQ2pCO1lBQ0Q7Z0JBQ0UsRUFBRSxFQUFFLFNBQVM7Z0JBQ2IsS0FBSyxFQUFFLGlCQUFpQjtnQkFDeEIsS0FBSyxFQUFFLEtBQUs7Z0JBQ1osSUFBSSxFQUFFLEdBQUc7Z0JBQ1QsSUFBSSxFQUFFLE9BQU87Z0JBQ2IsSUFBSSxFQUFFLGNBQWM7Z0JBQ3BCLFdBQVcsRUFBRSxjQUFjO2dCQUMzQixLQUFLLEVBQUUsU0FBUztnQkFDaEIsU0FBUyxFQUFFLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUM7YUFDaEc7WUFDRDtnQkFDRSxFQUFFLEVBQUUsU0FBUztnQkFDYixLQUFLLEVBQUUsZUFBZTtnQkFDdEIsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsSUFBSSxFQUFFLE9BQU87Z0JBQ2IsSUFBSSxFQUFFLGFBQWE7Z0JBQ25CLFdBQVcsRUFBRSxhQUFhO2dCQUMxQixLQUFLLEVBQUUsU0FBUztnQkFDaEIsU0FBUyxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDO2FBQ3REO1NBQ0YsQ0FBQztRQUVGLE1BQU07WUFDSixPQUFPLElBQUksQ0FBQTs7OztpQkFJRSxJQUFJLENBQUMsVUFBVTt1QkFDVCxDQUFDLENBQWMsRUFBRSxFQUFFO2dCQUNoQyxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDeEMsQ0FBQzs7S0FFSixDQUFDO1FBQ0osQ0FBQzs7WUFwR0csdURBQWlCOzs7OztJQXdHakIsaUJBQWlCOzRCQUR0QixhQUFhLENBQUMscUJBQXFCLENBQUM7Ozs7c0JBQ0wsV0FBVztpQ0FBbkIsU0FBUSxXQUFXOzs7O1lBQTNDLDZLQXFCQzs7OztRQXBCQyxNQUFNLENBQUMsTUFBTSxHQUFHO1lBQ2QsVUFBVSxDQUFDLGFBQWE7WUFDeEIsR0FBRyxDQUFBOzs7Ozs7O2lCQU9VLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQzs7S0FFOUM7U0FDRixDQUFDO1FBRUYsTUFBTTtZQUNKLE9BQU8sSUFBSSxDQUFBOzs7S0FHVixDQUFDO1FBQ0osQ0FBQzs7WUFwQkcsdURBQWlCOzs7OztJQXdCakIsZ0JBQWdCOzRCQURyQixhQUFhLENBQUMsb0JBQW9CLENBQUM7Ozs7c0JBQ0wsV0FBVztnQ0FBbkIsU0FBUSxXQUFXOzs7O1lBQTFDLDZLQXdHQzs7OztRQXZHQyxNQUFNLENBQUMsTUFBTSxHQUFHO1lBQ2QsVUFBVSxDQUFDLGFBQWE7WUFDeEIsR0FBRyxDQUFBOzs7Ozs7O2lCQU9VLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQzs7Ozs7Ozs7aUJBUWxDLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQzs7O3NCQUc3QixVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUM7Ozs7O0tBS3pEO1NBQ0YsQ0FBQztRQUVGLE1BQU07WUFDSixPQUFPLElBQUksQ0FBQTs7Ozs7Ozs7Ozs7O3VCQVlRO2dCQUNULEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFO2dCQUNyQyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRTtnQkFDckMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUU7YUFDdEM7OEJBQ2lCLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7OzhCQWdCckMsS0FBSzt5QkFDVjtnQkFDVCxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRTtnQkFDakMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUU7Z0JBQy9CLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFO2FBQ2hDO2dDQUNpQixFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRTs7Ozs7OEJBS2pDLEtBQUs7eUJBQ1Y7Z0JBQ1QsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUU7Z0JBQ2hDLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFO2dCQUMvQixFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtnQkFDaEMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUU7YUFDaEM7Z0NBQ2lCLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFOzs7Ozs7Ozs7OztxQkFXM0MsaUJBQWlCO3VCQUNmLENBQUMsV0FBVyxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLENBQUM7OEJBQ2pELFdBQVc7bUJBQ3RCLGdCQUFnQjs7Ozs7OztLQU85QixDQUFDO1FBQ0osQ0FBQzs7WUF2R0csdURBQWdCOzs7OztBQTBHdEIsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCQWtCVjtJQUNoQjtRQUNFLEVBQUUsRUFBRSxRQUFRO1FBQ1osSUFBSSxFQUFFLE1BQU07UUFDWixPQUFPLEVBQUUsbUZBQW1GO1FBQzVGLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLE9BQU8sRUFBRTtZQUNQO2dCQUNFLElBQUksRUFBRSxZQUFZO2dCQUNsQixRQUFRLEVBQUUsaUJBQWlCO2dCQUMzQixNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQzthQUNuQztZQUNEO2dCQUNFLElBQUksRUFBRSxlQUFlO2dCQUNyQixNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLDBCQUEwQixDQUFDO2FBQ2hEO1NBQ0Y7S0FDRjtJQUNEO1FBQ0UsRUFBRSxFQUFFLGFBQWE7UUFDakIsSUFBSSxFQUFFLFNBQVM7UUFDZixPQUFPLEVBQUUsNEdBQTRHO1FBQ3JILFdBQVcsRUFBRSxJQUFJO0tBQ2xCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsVUFBVTtRQUNkLElBQUksRUFBRSxPQUFPO1FBQ2IsT0FBTyxFQUFFLGdGQUFnRjtRQUN6RixXQUFXLEVBQUUsS0FBSztRQUNsQixPQUFPLEVBQUU7WUFDUDtnQkFDRSxJQUFJLEVBQUUsbUJBQW1CO2dCQUN6QixRQUFRLEVBQUUsb0JBQW9CO2dCQUM5QixNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLHlCQUF5QixDQUFDO2FBQy9DO1NBQ0Y7S0FDRjtDQUNrQjtrQkFDVDtJQUNWO1FBQ0UsSUFBSSxFQUFFLFdBQVc7UUFDakIsUUFBUSxFQUFFLGFBQWE7UUFDdkIsT0FBTyxFQUFFLGlCQUFpQjtLQUMzQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFdBQVc7UUFDakIsUUFBUSxFQUFFLGtCQUFrQjtRQUM1QixPQUFPLEVBQUUsaUJBQWlCO0tBQzNCO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsVUFBVTtRQUNoQixRQUFRLEVBQUUsaUJBQWlCO1FBQzNCLE9BQU8sRUFBRSxnQkFBZ0I7S0FDMUI7Q0FDUztnQkFDRixHQUFHLEVBQUU7SUFDYixPQUFPLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDdEMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDM0IsQ0FBQztxQkFDYyxDQUFDLENBQWMsRUFBRSxFQUFFO0lBQ2hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDcEQsQ0FBQzs7O0NBR04sQ0FBQyJ9