From 6e17b2058ba5a659843e73d5832d8862c798f5f3 Mon Sep 17 00:00:00 2001
From: Gui Seek <guiseek@gmail.com>
Date: Sat, 7 Dec 2024 19:08:49 -0300
Subject: [PATCH] style: cleanup - format all

---
 .github/workflows/deploy.yml                  | 22 +++++++-------
 .../src/scss/components/_layout.theme.scss    |  2 +-
 .../data-access/src/lib/providers/index.ts    | 12 ++++----
 .../feature-about/src/lib/components/index.ts |  6 ++--
 .../about-user/about-user.container.html      |  4 +--
 .../about-user/about-user.container.scss      |  1 -
 .../about-user/about-user.container.ts        |  2 ++
 .../album-card-list.component.html            |  5 +---
 .../account/skills/skills.component.html      | 27 +++++++++++++----
 .../account/skills/skills.component.scss      | 30 +++++++++++++++++++
 .../event-details/event-details.container.ts  |  9 ++++--
 .../api-interfaces/src/server/envs/env.ts     |  2 +-
 .../shared/data-source/src/lib/providers.ts   |  2 +-
 .../calendar-button.component.html            |  2 +-
 .../maps-button/maps-button.component.html    |  2 +-
 .../whats-app-button.component.html           |  2 +-
 .../youtube-button.component.html             |  2 +-
 .../youtube-button.component.ts               |  2 +-
 packages/shared/ui-global/shadow/README.md    |  3 ++
 .../shared/ui-global/shadow/ng-package.json   |  5 ++++
 packages/shared/ui-global/shadow/src/index.ts |  1 +
 .../ui-global/shadow/src/lib/shadow.pipe.ts   | 24 +++++++++++++++
 packages/shared/util-data/project.json        |  4 +--
 packages/shared/util-data/src/client.ts       |  2 +-
 packages/shared/util-data/src/client/index.ts |  2 +-
 .../util-data/src/client/providers/index.ts   |  8 ++---
 .../src/generators/use-cases/lib/index.ts     |  2 +-
 tools/plugin/dx-dev/src/utils/index.ts        |  4 +--
 tsconfig.base.json                            |  7 ++++-
 29 files changed, 141 insertions(+), 55 deletions(-)
 create mode 100644 packages/shared/ui-global/shadow/README.md
 create mode 100644 packages/shared/ui-global/shadow/ng-package.json
 create mode 100644 packages/shared/ui-global/shadow/src/index.ts
 create mode 100644 packages/shared/ui-global/shadow/src/lib/shadow.pipe.ts

diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
index ac4d6104..6e2652d8 100644
--- a/.github/workflows/deploy.yml
+++ b/.github/workflows/deploy.yml
@@ -57,17 +57,17 @@ jobs:
     timeout-minutes: 10
     steps:
       - uses: actions/checkout@v4
-  
+
       - name: Set up Docker Buildx
         uses: docker/setup-buildx-action@v2
-  
+
       - name: Log in to registry
         uses: docker/login-action@v2
         with:
           registry: https://devmx.azurecr.io/
           username: ${{ secrets.AzureAppService_ContainerUsername_947982706eed46ce985090481ab47364 }}
           password: ${{ secrets.AzureAppService_ContainerPassword_86f3c94c1b5143be904bfc1de2add431 }}
-  
+
       - name: Build and push container image to registry
         uses: docker/build-push-action@v3
         with:
@@ -83,11 +83,11 @@ jobs:
       url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}
 
     steps:
-    - name: Deploy to Azure Web App
-      id: deploy-to-webapp
-      uses: azure/webapps-deploy@v2
-      with:
-        app-name: 'devpr'
-        slot-name: 'production'
-        publish-profile: ${{ secrets.AzureAppService_PublishProfile_36a287a711bf47e6a54130170298549c }}
-        images: 'devmx.azurecr.io/${{ secrets.AzureAppService_ContainerUsername_947982706eed46ce985090481ab47364 }}/devmx-server:${{ github.sha }}'
\ No newline at end of file
+      - name: Deploy to Azure Web App
+        id: deploy-to-webapp
+        uses: azure/webapps-deploy@v2
+        with:
+          app-name: 'devpr'
+          slot-name: 'production'
+          publish-profile: ${{ secrets.AzureAppService_PublishProfile_36a287a711bf47e6a54130170298549c }}
+          images: 'devmx.azurecr.io/${{ secrets.AzureAppService_ContainerUsername_947982706eed46ce985090481ab47364 }}/devmx-server:${{ github.sha }}'
diff --git a/apps/devmx/src/scss/components/_layout.theme.scss b/apps/devmx/src/scss/components/_layout.theme.scss
index 7010ce84..0379122b 100644
--- a/apps/devmx/src/scss/components/_layout.theme.scss
+++ b/apps/devmx/src/scss/components/_layout.theme.scss
@@ -79,7 +79,7 @@
     }
   }
 
-  .mat-expansion-panel-header-title {
+  .mat-drawer-inner-container .mat-expansion-panel-header-title {
     opacity: 0.4;
   }
 
diff --git a/packages/academy/data-access/src/lib/providers/index.ts b/packages/academy/data-access/src/lib/providers/index.ts
index cb0d74fa..c964b1a5 100644
--- a/packages/academy/data-access/src/lib/providers/index.ts
+++ b/packages/academy/data-access/src/lib/providers/index.ts
@@ -1,6 +1,6 @@
-export * from './course';
-export * from './facades';
-export * from './nistitution';
-export * from './services';
-export * from './subject';
-export * from './use-cases';
+export * from './course';
+export * from './facades';
+export * from './nistitution';
+export * from './services';
+export * from './subject';
+export * from './use-cases';
diff --git a/packages/account/feature-about/src/lib/components/index.ts b/packages/account/feature-about/src/lib/components/index.ts
index bb695b28..a11cc99e 100644
--- a/packages/account/feature-about/src/lib/components/index.ts
+++ b/packages/account/feature-about/src/lib/components/index.ts
@@ -1,3 +1,3 @@
-export * from './user-presentations/user-presentations.component';
-export * from './user-events/user-events.component';
-export * from './user-skills/user-skills.component';
+export * from './user-presentations/user-presentations.component';
+export * from './user-events/user-events.component';
+export * from './user-skills/user-skills.component';
diff --git a/packages/account/feature-about/src/lib/containers/about-user/about-user.container.html b/packages/account/feature-about/src/lib/containers/about-user/about-user.container.html
index 2b13dd70..ba93de07 100644
--- a/packages/account/feature-about/src/lib/containers/about-user/about-user.container.html
+++ b/packages/account/feature-about/src/lib/containers/about-user/about-user.container.html
@@ -24,7 +24,7 @@ <h2>{{user.displayName}}</h2>
     @if (user.visibility?.email) {
     <a [href]="'mailto:' + user.contact.email">
       <devmx-icon name="message/mail" />
-      <span>{{user.contact.email}}</span>
+      <span>{{user.contact.email | shadow: 'email'}}</span>
     </a>
     }
 
@@ -33,7 +33,7 @@ <h2>{{user.displayName}}</h2>
     @if (user.visibility?.phone) {
     <a [href]="'tel://' + user.contact.phone">
       <devmx-icon name="tech/phone" />
-      <span>{{user.contact.phone}}</span>
+      <span>{{user.contact.phone | shadow:'phone'}}</span>
     </a>
     }
   </nav>
diff --git a/packages/account/feature-about/src/lib/containers/about-user/about-user.container.scss b/packages/account/feature-about/src/lib/containers/about-user/about-user.container.scss
index 36c17b87..3daa18c8 100644
--- a/packages/account/feature-about/src/lib/containers/about-user/about-user.container.scss
+++ b/packages/account/feature-about/src/lib/containers/about-user/about-user.container.scss
@@ -98,7 +98,6 @@
       }
 
       section {
-
       }
     }
   }
diff --git a/packages/account/feature-about/src/lib/containers/about-user/about-user.container.ts b/packages/account/feature-about/src/lib/containers/about-user/about-user.container.ts
index 26116906..f3e08125 100644
--- a/packages/account/feature-about/src/lib/containers/about-user/about-user.container.ts
+++ b/packages/account/feature-about/src/lib/containers/about-user/about-user.container.ts
@@ -4,6 +4,7 @@ import { MatSlideToggleModule } from '@angular/material/slide-toggle';
 import { PresentationFacade } from '@devmx/presentation-data-access';
 import { AuthenticationFacade } from '@devmx/account-data-access';
 import { IconComponent } from '@devmx/shared-ui-global/icon';
+import { ShadowPipe } from '@devmx/shared-ui-global/shadow';
 import { MatButtonModule } from '@angular/material/button';
 import { markdownToText } from '@devmx/shared-util-data';
 import { EventFacade } from '@devmx/event-data-access';
@@ -38,6 +39,7 @@ import {
     MatProgressBarModule,
     MatButtonModule,
     IconComponent,
+    ShadowPipe,
     AsyncPipe,
   ],
   standalone: true,
diff --git a/packages/account/feature-shell/src/lib/components/album-card-list/album-card-list.component.html b/packages/account/feature-shell/src/lib/components/album-card-list/album-card-list.component.html
index 61d29ca7..ea7a7e45 100644
--- a/packages/account/feature-shell/src/lib/components/album-card-list/album-card-list.component.html
+++ b/packages/account/feature-shell/src/lib/components/album-card-list/album-card-list.component.html
@@ -5,10 +5,7 @@
 
   <mat-list>
     @for (album of data(); track album.id) {
-    <a
-      mat-list-item
-      [routerLink]="['/', 'albuns', album.id]"
-    >
+    <a mat-list-item [routerLink]="['/', 'albuns', album.id]">
       <devmx-icon matListItemIcon name="photo" />
       <div matListItemTitle>{{ album.title }}</div>
       <div matListItemLine>{{ album.createdAt | date : 'longDate' }}</div>
diff --git a/packages/account/feature-shell/src/lib/containers/account/skills/skills.component.html b/packages/account/feature-shell/src/lib/containers/account/skills/skills.component.html
index bcb4d16c..719ced51 100644
--- a/packages/account/feature-shell/src/lib/containers/account/skills/skills.component.html
+++ b/packages/account/feature-shell/src/lib/containers/account/skills/skills.component.html
@@ -13,11 +13,28 @@
     [cdkDragData]="item"
     [formGroupName]="index"
   >
-    <mat-expansion-panel-header>
-      <div *cdkDragPlaceholder></div>
-      <mat-panel-title> {{ item.value.skill?.name }} </mat-panel-title>
-      <mat-panel-description class="skill-weight"> {{ item.value.weight }}% </mat-panel-description>
-      <devmx-icon name="drag/indicator" cdkDragHandle />
+    <mat-expansion-panel-header class="skill-header">
+      <div class="drag-placeholder" *cdkDragPlaceholder></div>
+
+      <mat-panel-title class="skill-title">
+        <devmx-icon name="drag/indicator" cdkDragHandle />
+
+        <span>
+          {{ item.value.skill?.name }}
+        </span>
+      </mat-panel-title>
+
+      <mat-panel-description class="skill-weight">
+        {{ item.value.weight }}%
+      </mat-panel-description>
+
+      <button
+        type="button"
+        mat-icon-button
+        (click)="form.skills.removeAt(index)"
+      >
+        <devmx-icon name="trash" />
+      </button>
     </mat-expansion-panel-header>
 
     <div>
diff --git a/packages/account/feature-shell/src/lib/containers/account/skills/skills.component.scss b/packages/account/feature-shell/src/lib/containers/account/skills/skills.component.scss
index a27e4582..ea8a3ccf 100644
--- a/packages/account/feature-shell/src/lib/containers/account/skills/skills.component.scss
+++ b/packages/account/feature-shell/src/lib/containers/account/skills/skills.component.scss
@@ -13,6 +13,36 @@
       display: flex;
       flex-direction: column;
     }
+
+    .skill-header {
+      flex: 1;
+      display: flex;
+      justify-content: space-between;
+      align-items: center;
+
+      .skill-title {
+        gap: 0.4em;
+        display: flex;
+
+        span {
+          opacity: 0.4;
+        }
+      }
+
+      .drag-placeholder {
+        transition: transform 250ms cubic-bezier(0, 0, 0.2, 1);
+        background-color: #666;
+        min-height: 60px;
+      }
+
+      .cdk-drag-handle {
+        cursor: grab;
+
+        &:active {
+          cursor: grabbing;
+        }
+      }
+    }
   }
 
   .skill-weight {
diff --git a/packages/event/feature-shell/src/lib/containers/event-details/event-details.container.ts b/packages/event/feature-shell/src/lib/containers/event-details/event-details.container.ts
index de129507..7c691f8f 100644
--- a/packages/event/feature-shell/src/lib/containers/event-details/event-details.container.ts
+++ b/packages/event/feature-shell/src/lib/containers/event-details/event-details.container.ts
@@ -1,5 +1,10 @@
 import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
-import { RSVPButtonComponent, RSVPForm, ShowEventAddressPipe, ShowEventLinkPipe } from '@devmx/event-ui-shared';
+import {
+  RSVPButtonComponent,
+  RSVPForm,
+  ShowEventAddressPipe,
+  ShowEventLinkPipe,
+} from '@devmx/event-ui-shared';
 import { MarkdownViewComponent } from '@devmx/shared-ui-global/markdown';
 import { AuthenticationFacade } from '@devmx/account-data-access';
 import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
@@ -55,7 +60,7 @@ export class EventDetailsContainer {
 
   authFacade = inject(AuthenticationFacade);
 
-  eventFacade = inject(EventFacade)
+  eventFacade = inject(EventFacade);
 
   rsvpFacade = inject(RSVPFacade);
 
diff --git a/packages/shared/api-interfaces/src/server/envs/env.ts b/packages/shared/api-interfaces/src/server/envs/env.ts
index 10bd92ec..d10f3ca9 100644
--- a/packages/shared/api-interfaces/src/server/envs/env.ts
+++ b/packages/shared/api-interfaces/src/server/envs/env.ts
@@ -11,7 +11,7 @@ export abstract class Env {
 
   abstract mongo: {
     uri: string;
-  }
+  };
 
   abstract jwt: {
     secret: string;
diff --git a/packages/shared/data-source/src/lib/providers.ts b/packages/shared/data-source/src/lib/providers.ts
index 3a89a213..2783ed7b 100644
--- a/packages/shared/data-source/src/lib/providers.ts
+++ b/packages/shared/data-source/src/lib/providers.ts
@@ -8,7 +8,7 @@ export function provideMongoURI() {
   return {
     provide: 'MONGO_URI',
     useFactory(env: Env) {
-      const { user, pass, host, port, name, } = env.db;
+      const { user, pass, host, port, name } = env.db;
       const { uri } = env.mongo;
 
       if (env.production) {
diff --git a/packages/shared/ui-global/button/src/lib/calendar-button/calendar-button.component.html b/packages/shared/ui-global/button/src/lib/calendar-button/calendar-button.component.html
index 8e8a5c67..2e1ad272 100644
--- a/packages/shared/ui-global/button/src/lib/calendar-button/calendar-button.component.html
+++ b/packages/shared/ui-global/button/src/lib/calendar-button/calendar-button.component.html
@@ -1,4 +1,4 @@
 <a mat-raised-button [href]="link()" target="_blank" rel="noopener,noreferrer">
   <devmx-icon matPreffix name="calendar" size="22" />
-  <span>{{text()}}</span>
+  <span>{{ text() }}</span>
 </a>
diff --git a/packages/shared/ui-global/button/src/lib/maps-button/maps-button.component.html b/packages/shared/ui-global/button/src/lib/maps-button/maps-button.component.html
index 427094df..71248072 100644
--- a/packages/shared/ui-global/button/src/lib/maps-button/maps-button.component.html
+++ b/packages/shared/ui-global/button/src/lib/maps-button/maps-button.component.html
@@ -1,4 +1,4 @@
 <a mat-raised-button [href]="link()" target="_blank" rel="noopener,noreferrer">
   <devmx-icon matPreffix name="transport/map-pin" size="22" />
-  <span>{{text()}}</span>
+  <span>{{ text() }}</span>
 </a>
diff --git a/packages/shared/ui-global/button/src/lib/whats-app-button/whats-app-button.component.html b/packages/shared/ui-global/button/src/lib/whats-app-button/whats-app-button.component.html
index 7647b8d5..d9235624 100644
--- a/packages/shared/ui-global/button/src/lib/whats-app-button/whats-app-button.component.html
+++ b/packages/shared/ui-global/button/src/lib/whats-app-button/whats-app-button.component.html
@@ -1,4 +1,4 @@
 <a mat-raised-button [href]="link()" target="_blank" rel="noopener,noreferrer">
   <devmx-icon matPreffix name="social/whatsapp" size="24" />
-  <span>{{text()}}</span>
+  <span>{{ text() }}</span>
 </a>
diff --git a/packages/shared/ui-global/button/src/lib/youtube-button/youtube-button.component.html b/packages/shared/ui-global/button/src/lib/youtube-button/youtube-button.component.html
index 9068f80f..e29cf6a0 100644
--- a/packages/shared/ui-global/button/src/lib/youtube-button/youtube-button.component.html
+++ b/packages/shared/ui-global/button/src/lib/youtube-button/youtube-button.component.html
@@ -1,4 +1,4 @@
 <a mat-raised-button [href]="link()" target="_blank" rel="noopener,noreferrer">
   <devmx-icon matPreffix name="social/youtube" size="22" />
-  <span>{{text()}}</span>
+  <span>{{ text() }}</span>
 </a>
diff --git a/packages/shared/ui-global/button/src/lib/youtube-button/youtube-button.component.ts b/packages/shared/ui-global/button/src/lib/youtube-button/youtube-button.component.ts
index 9436558b..3d832bc8 100644
--- a/packages/shared/ui-global/button/src/lib/youtube-button/youtube-button.component.ts
+++ b/packages/shared/ui-global/button/src/lib/youtube-button/youtube-button.component.ts
@@ -21,7 +21,7 @@ import {
 export class YoutubeButtonComponent implements AfterViewInit {
   data = input.required<EventPage>();
 
-  text = input('Abrir com YouTube')
+  text = input('Abrir com YouTube');
 
   platform = inject(Platform);
 
diff --git a/packages/shared/ui-global/shadow/README.md b/packages/shared/ui-global/shadow/README.md
new file mode 100644
index 00000000..effdde48
--- /dev/null
+++ b/packages/shared/ui-global/shadow/README.md
@@ -0,0 +1,3 @@
+# @devmx/shared-ui-global/shadow
+
+Secondary entry point of `@devmx/shared-ui-global`. It can be used by importing from `@devmx/shared-ui-global/shadow`.
diff --git a/packages/shared/ui-global/shadow/ng-package.json b/packages/shared/ui-global/shadow/ng-package.json
new file mode 100644
index 00000000..c781f0df
--- /dev/null
+++ b/packages/shared/ui-global/shadow/ng-package.json
@@ -0,0 +1,5 @@
+{
+  "lib": {
+    "entryFile": "src/index.ts"
+  }
+}
diff --git a/packages/shared/ui-global/shadow/src/index.ts b/packages/shared/ui-global/shadow/src/index.ts
new file mode 100644
index 00000000..d3bfae2b
--- /dev/null
+++ b/packages/shared/ui-global/shadow/src/index.ts
@@ -0,0 +1 @@
+export * from './lib/shadow.pipe';
diff --git a/packages/shared/ui-global/shadow/src/lib/shadow.pipe.ts b/packages/shared/ui-global/shadow/src/lib/shadow.pipe.ts
new file mode 100644
index 00000000..bc7c3f9c
--- /dev/null
+++ b/packages/shared/ui-global/shadow/src/lib/shadow.pipe.ts
@@ -0,0 +1,24 @@
+import { Pipe, PipeTransform } from '@angular/core';
+
+export type ShadowFor = 'phone' | 'email' | 'date' | 'name';
+
+@Pipe({ name: 'shadow' })
+export class ShadowPipe implements PipeTransform {
+  transform(value?: string | number, kind: ShadowFor = 'phone') {
+    if (!value) return;
+    switch (kind) {
+      default:
+      case 'phone': {
+        const obfuscated = '#'.repeat(Math.max(0, String(value).length - 6));
+        const visible = String(value).slice(-6);
+        return obfuscated + visible;
+      }
+      case 'email': {
+        const [user, domain] = String(value).split('@');
+        const shade = user[0] + '#'.repeat(user.length - 2);
+        const shadedUser = shade + user[user.length - 1];
+        return `${shadedUser}@${domain}`;
+      }
+    }
+  }
+}
diff --git a/packages/shared/util-data/project.json b/packages/shared/util-data/project.json
index 404d7f93..fc7232d0 100644
--- a/packages/shared/util-data/project.json
+++ b/packages/shared/util-data/project.json
@@ -13,9 +13,7 @@
         "main": "packages/shared/util-data/src/index.ts",
         "tsConfig": "packages/shared/util-data/tsconfig.lib.json",
         "assets": [],
-        "additionalEntryPoints": [
-          "packages/shared/util-data/src/client.ts"
-        ]
+        "additionalEntryPoints": ["packages/shared/util-data/src/client.ts"]
       }
     }
   }
diff --git a/packages/shared/util-data/src/client.ts b/packages/shared/util-data/src/client.ts
index bdd02c04..40a7340d 100644
--- a/packages/shared/util-data/src/client.ts
+++ b/packages/shared/util-data/src/client.ts
@@ -1 +1 @@
-export * from './client/index'
+export * from './client/index';
diff --git a/packages/shared/util-data/src/client/index.ts b/packages/shared/util-data/src/client/index.ts
index 5f91c8d3..254ec8d9 100644
--- a/packages/shared/util-data/src/client/index.ts
+++ b/packages/shared/util-data/src/client/index.ts
@@ -1 +1 @@
-export * from './providers';
+export * from './providers';
diff --git a/packages/shared/util-data/src/client/providers/index.ts b/packages/shared/util-data/src/client/providers/index.ts
index 11fe6fdb..20689879 100644
--- a/packages/shared/util-data/src/client/providers/index.ts
+++ b/packages/shared/util-data/src/client/providers/index.ts
@@ -1,4 +1,4 @@
-export * from './create-client-provider';
-export * from './create-facade-provider';
-export * from './create-service-provder';
-export * from './create-use-case-provider';
+export * from './create-client-provider';
+export * from './create-facade-provider';
+export * from './create-service-provder';
+export * from './create-use-case-provider';
diff --git a/tools/plugin/dx-dev/src/generators/use-cases/lib/index.ts b/tools/plugin/dx-dev/src/generators/use-cases/lib/index.ts
index 757de932..f9451963 100644
--- a/tools/plugin/dx-dev/src/generators/use-cases/lib/index.ts
+++ b/tools/plugin/dx-dev/src/generators/use-cases/lib/index.ts
@@ -1 +1 @@
-export * from './normalize-options';
+export * from './normalize-options';
diff --git a/tools/plugin/dx-dev/src/utils/index.ts b/tools/plugin/dx-dev/src/utils/index.ts
index 86dcfa53..7d3fc138 100644
--- a/tools/plugin/dx-dev/src/utils/index.ts
+++ b/tools/plugin/dx-dev/src/utils/index.ts
@@ -1,2 +1,2 @@
-export * from './get-all-names';
-export * from './pluralize';
+export * from './get-all-names';
+export * from './pluralize';
diff --git a/tsconfig.base.json b/tsconfig.base.json
index ff1d1032..91076771 100644
--- a/tsconfig.base.json
+++ b/tsconfig.base.json
@@ -230,6 +230,9 @@
       "@devmx/shared-ui-global/search": [
         "packages/shared/ui-global/search/src/index.ts"
       ],
+      "@devmx/shared-ui-global/shadow": [
+        "packages/shared/ui-global/shadow/src/index.ts"
+      ],
       "@devmx/shared-ui-global/sheet": [
         "packages/shared/ui-global/sheet/src/index.ts"
       ],
@@ -259,7 +262,9 @@
         "packages/shared/util-authn/src/types.ts"
       ],
       "@devmx/shared-util-data": ["packages/shared/util-data/src/index.ts"],
-      "@devmx/shared-util-data/client": ["packages/shared/util-data/src/client.ts"],
+      "@devmx/shared-util-data/client": [
+        "packages/shared/util-data/src/client.ts"
+      ],
       "@devmx/shared-util-errors": ["packages/shared/util-errors/src/index.ts"]
     }
   },