Snippets Collections
//html
 <div class="scroll-indicator">Scroll Position: <span id="scrollPos">0</span></div> 

   
   
 //js
const scrollPosElement = document.getElementById('scrollPos');

window.addEventListener('scroll', function() {
            const scrollTop = document.documentElement.scrollTop || window.pageYOffset;
            scrollPosElement.textContent = scrollTop;
        });
const functions = require('@google-cloud/functions-framework');

functions.http('helloHttp', (req, res) => {
 res.send(`Hello ${req.query.name || req.body.name || 'World'}!`);
});
Cannot GET /es/
Cannot GET /es/
<style>
.online {content:url('http://dl7.glitter-graphics.net/pub/123/123537ffm5m11zus.gif'); background-repeat: no-repeat; background-position: -15% 75%; z-index: 2; 
}
</style>

<style>
body{background:url("https://i.postimg.cc/v801vYV1/gradient.png") no-repeat fixed; background-size:cover;}
</style>

<style>
main {
  background-color: transparent;
  color: white;
border-radius: 15px}
</style>

<style>
nav .top {border-radius: 15px;
border: 5px outset #0d4b73;
 background-color: #0066A7;}
</style>

<style>
nav .links {background-color: transparent;}
</style>

<style>
footer {background-color: transparent;}
</style>

<style>
.profile .contact, .profile .table-section, .profile .url-info {
  border: 5px outset #004b7c;
border-radius: 15px;
}
</style>

<style>
.profile .contact .heading, .profile .table-section .heading, .home-actions .heading {
  background-color: #0066A7;
  color: white;
border-radius: 15px;
}
</style>

<style>
.profile .table-section .details-table td {
  background-color: #0066A7;
  color: white;
border-radius: 5px;
}
</style>

<style>
.col.w-40.left .contact {background-color: #0066A7;}
</style>

<style>
.col.w-40.left .url-info  {background-color: #0066A7;}
</style>

<style>
.profile .blurbs .heading, .profile .friends .heading {
  background-color: #0066A7;
  color: white;
border: 5px outset #004b7c;
border-radius: 15px;
}
</style>

<style>
.profile .friends .comments-table td {
  background-color: #0066A7;
  color: white;
border: 5px outset #004b7c;
border-radius: 15px;
</style>

<style>
.inner .comments-table {border: 1px transparent;}
</style>

<style>
main a {
  color: var(--white);
}
</style>

<style>
footer a {
  color: var(--white);
}
</style>

<style>
b .count {color: white;}
</style>

<style>
.profile .friends .person p{
 
    color: #fff;
}
</style>

<style>
.col.right .profile-info { background-color: #0066A7;
  color: white;
border: 5px outset #004b7c;
border-radius: 15px;}
</style>

<style>
.blurbs .section h4 {display: none !important;}
</style>

<style>
a:hover {
color: white;
font-style: ;
</style>
 
<style>
nav .links a:hover {
color: white;
font-style: ;
</style>

<style>
@import url('https://fonts.googleapis.com/css2?family=Comic+Neue:ital,wght@0,300;0,400;0,700;1,300;1,400;1,700&display=swap');
body{font-family: 'Comic Neue', sans-serif;font-size: 120%; }

</style>

<style>
p.thick {
  font-weight: bold;
}
</style>

<style>
td .comment-replies {background-color: #0066A7;
  color: white;
border: 5px outset #004b7c;
border-radius: 15px;}
</style>

<style>

.logo {

content:url("https://i.postimg.cc/7hxx2NCc/spaceheysims-1.png");
  height: 61px!important;
    width: 125px!important;

}

</style>

<style>main:before {
	width: 100%;
	height: 240px ;
	display: block;
	content: "";
	background-image: url('https://pbs.twimg.com/media/Fx1KAzvaYAEOIdR.jpg');
	background-position: center center;
	background-size: cover;
border-radius: 20px;
}
@media only screen and (max-width: 600px) {
	main:before{
		height: 300px;
	}
}
    </style>


<style>

.online{content:url("https://i.postimg.cc/BZdJGDB2/Plumbob-The-Sims-1-1-1.png");}

</style>
    
    <style>
    button {background-color: #0066A7;
  color: white;
border: 5px outset #004b7c;
      border-radius: 5px;}
  </style>
  
  <style>
  .profile .url-info{
background: url('https://i.pinimg.com/originals/ba/2f/3a/ba2f3a6a97bc1cf9aa19ddfc8b3f2fb5.gif'); /*replace pic here*/
background-position: center;
background-size: cover;
border: var(--borders)!important;
border-radius: var(--curve);
height: 250px;
    border-radius: 10px;
} 
.url-info p{ opacity: 0.0; }
  </style>
  
  <style>
/* replace with cd image that has transparent background. must be 150px by 150px. */
:root {
--cd-image: url('https://i.postimg.cc/sg9tNHc0/CD-Front-removebg-preview-1.png');
}
.profile-pic {
position: relative;
width: 183px;
filter: drop-shadow(0 0 0.25rem gray);
}
.profile-pic:after {
content: "";
background: url('https://fluorescent-lights.neocities.org/f0rzNHe.png'), linear-gradient(150deg, rgba(255,255,255,0.4), rgba(255,255,255,0.2), 40%, rgba(255,255,255,0.1) 0%, rgba(255,255,255,0.6));
background-size: contain, cover;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}

.profile-pic:before {
content: "";
background: var(--cd-image);
position: absolute;
top: 5px;
left: -20px;
width: 150px;
height: 150px;
background-repeat: no-repeat;
z-index: -1;
animation-name: spin;
animation-duration: 5000ms;
animation-iteration-count: infinite;
animation-timing-function: linear; 
transition: left ease 0.5s;
}
.profile-pic:hover:before {
left: -75px;
}
@keyframes spin {
    from {
        transform:rotate(0deg);
    }
    to {
        transform:rotate(360deg);
    }
}
.profile-pic .pfp-fallback {
float: right;
width: 163px;
height: 160px;
border: none;
}
.general-about .profile-pic img {
max-width: inherit;
}
</style>
  
  <style>
  .friends-grid .person img {border-radius: 200px;
  border: 5px outset #0d4b73;}
  
  td img {border-radius: 200px;
  border: 5px outset #0d4b73;}
  </style>
  
  <style>
.profile .friends .person img:not(.icon):hover {
    transform: scale(1.2);
    transition: 0.5s ease;
}
.profile .friends .person img:not(.icon) {
    transition: 0.5s ease
}
</style>
  
   <style>
td img:not(.icon):hover {
    transform: scale(1.2);
    transition: 0.5s ease;
}
td img:not(.icon) {
    transition: 0.5s ease
}
</style>
  
  <style>
/* width */
::-webkit-scrollbar {
  width: 20px;
}

/* Track */
::-webkit-scrollbar-track {
  box-shadow: inset 0 0 5px grey; 
  border-radius: 10px;
}
 
/* Handle */
::-webkit-scrollbar-thumb {
  background-color: #0066A7;
  color: white;
border: 5px outset #004b7c;
border-radius: 15px;
}

/* Handle on hover */
::-webkit-scrollbar-thumb:hover {
  background: #00416b; 
}
</style>

<style>

.contact .inner a img {

font-size: 0;

}

.contact .inner a img:before {

font-size: 1em;

display: block

}

</style>

<style>* {cursor: url("http://www.rw-designer.com/cursor-view/188882.png"), url("http://www.rw-designer.com/cursor-view/188882.png"), auto !important;}</style>
<style>
.online {content:url('http://dl7.glitter-graphics.net/pub/123/123537ffm5m11zus.gif'); background-repeat: no-repeat; background-position: -15% 75%; z-index: 2; 
}
</style>

<style>
body{background:url("https://i.postimg.cc/v801vYV1/gradient.png") no-repeat fixed; background-size:cover;}
</style>

<style>
main {
  background-color: transparent;
  color: white;
border-radius: 15px}
</style>

<style>
nav .top {border-radius: 15px;
border: 5px outset #0d4b73;
 background-color: #0066A7;}
</style>

<style>
nav .links {background-color: transparent;}
</style>

<style>
footer {background-color: transparent;}
</style>

<style>
.profile .contact, .profile .table-section, .profile .url-info {
  border: 5px outset #004b7c;
border-radius: 15px;
}
</style>

<style>
.profile .contact .heading, .profile .table-section .heading, .home-actions .heading {
  background-color: #0066A7;
  color: white;
border-radius: 15px;
}
</style>

<style>
.profile .table-section .details-table td {
  background-color: #0066A7;
  color: white;
border-radius: 5px;
}
</style>

<style>
.col.w-40.left .contact {background-color: #0066A7;}
</style>

<style>
.col.w-40.left .url-info  {background-color: #0066A7;}
</style>

<style>
.profile .blurbs .heading, .profile .friends .heading {
  background-color: #0066A7;
  color: white;
border: 5px outset #004b7c;
border-radius: 15px;
}
</style>

<style>
.profile .friends .comments-table td {
  background-color: #0066A7;
  color: white;
border: 5px outset #004b7c;
border-radius: 15px;
</style>

<style>
.inner .comments-table {border: 1px transparent;}
</style>

<style>
main a {
  color: var(--white);
}
</style>

<style>
footer a {
  color: var(--white);
}
</style>

<style>
b .count {color: white;}
</style>

<style>
.profile .friends .person p{
 
    color: #fff;
}
</style>

<style>
.col.right .profile-info { background-color: #0066A7;
  color: white;
border: 5px outset #004b7c;
border-radius: 15px;}
</style>

<style>
.blurbs .section h4 {display: none !important;}
</style>

<style>
a:hover {
color: white;
font-style: ;
</style>
 
<style>
nav .links a:hover {
color: white;
font-style: ;
</style>

<style>
@import url('https://fonts.googleapis.com/css2?family=Comic+Neue:ital,wght@0,300;0,400;0,700;1,300;1,400;1,700&display=swap');
body{font-family: 'Comic Neue', sans-serif;font-size: 120%; }

</style>

<style>
p.thick {
  font-weight: bold;
}
</style>

<style>
td .comment-replies {background-color: #0066A7;
  color: white;
border: 5px outset #004b7c;
border-radius: 15px;}
</style>

<style>

.logo {

content:url("https://i.postimg.cc/7hxx2NCc/spaceheysims-1.png");
  height: 61px!important;
    width: 125px!important;

}

</style>

<style>main:before {
	width: 100%;
	height: 240px ;
	display: block;
	content: "";
	background-image: url('https://pbs.twimg.com/media/Fx1KAzvaYAEOIdR.jpg');
	background-position: center center;
	background-size: cover;
border-radius: 20px;
}
@media only screen and (max-width: 600px) {
	main:before{
		height: 300px;
	}
}
    </style>


<style>

.online{content:url("https://i.postimg.cc/BZdJGDB2/Plumbob-The-Sims-1-1-1.png");}

</style>
    
    <style>
    button {background-color: #0066A7;
  color: white;
border: 5px outset #004b7c;
      border-radius: 5px;}
  </style>
  
  <style>
  .profile .url-info{
background: url('https://i.pinimg.com/originals/ba/2f/3a/ba2f3a6a97bc1cf9aa19ddfc8b3f2fb5.gif'); /*replace pic here*/
background-position: center;
background-size: cover;
border: var(--borders)!important;
border-radius: var(--curve);
height: 250px;
    border-radius: 10px;
} 
.url-info p{ opacity: 0.0; }
  </style>
  
  <style>
/* replace with cd image that has transparent background. must be 150px by 150px. */
:root {
--cd-image: url('https://i.postimg.cc/sg9tNHc0/CD-Front-removebg-preview-1.png');
}
.profile-pic {
position: relative;
width: 183px;
filter: drop-shadow(0 0 0.25rem gray);
}
.profile-pic:after {
content: "";
background: url('https://fluorescent-lights.neocities.org/f0rzNHe.png'), linear-gradient(150deg, rgba(255,255,255,0.4), rgba(255,255,255,0.2), 40%, rgba(255,255,255,0.1) 0%, rgba(255,255,255,0.6));
background-size: contain, cover;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}

.profile-pic:before {
content: "";
background: var(--cd-image);
position: absolute;
top: 5px;
left: -20px;
width: 150px;
height: 150px;
background-repeat: no-repeat;
z-index: -1;
animation-name: spin;
animation-duration: 5000ms;
animation-iteration-count: infinite;
animation-timing-function: linear; 
transition: left ease 0.5s;
}
.profile-pic:hover:before {
left: -75px;
}
@keyframes spin {
    from {
        transform:rotate(0deg);
    }
    to {
        transform:rotate(360deg);
    }
}
.profile-pic .pfp-fallback {
float: right;
width: 163px;
height: 160px;
border: none;
}
.general-about .profile-pic img {
max-width: inherit;
}
</style>
  
  <style>
  .friends-grid .person img {border-radius: 200px;
  border: 5px outset #0d4b73;}
  
  td img {border-radius: 200px;
  border: 5px outset #0d4b73;}
  </style>
  
  <style>
.profile .friends .person img:not(.icon):hover {
    transform: scale(1.2);
    transition: 0.5s ease;
}
.profile .friends .person img:not(.icon) {
    transition: 0.5s ease
}
</style>
  
   <style>
td img:not(.icon):hover {
    transform: scale(1.2);
    transition: 0.5s ease;
}
td img:not(.icon) {
    transition: 0.5s ease
}
</style>
  
  <style>
/* width */
::-webkit-scrollbar {
  width: 20px;
}

/* Track */
::-webkit-scrollbar-track {
  box-shadow: inset 0 0 5px grey; 
  border-radius: 10px;
}
 
/* Handle */
::-webkit-scrollbar-thumb {
  background-color: #0066A7;
  color: white;
border: 5px outset #004b7c;
border-radius: 15px;
}

/* Handle on hover */
::-webkit-scrollbar-thumb:hover {
  background: #00416b; 
}
</style>

<style>

.contact .inner a img {

font-size: 0;

}

.contact .inner a img:before {

font-size: 1em;

display: block

}

</style>

<style>* {cursor: url("http://www.rw-designer.com/cursor-view/188882.png"), url("http://www.rw-designer.com/cursor-view/188882.png"), auto !important;}</style>
<img src="<?= $section['right_image'] ?>" alt="<?php echo $section['url']['alt'];?>">


<img src="<?= $item['sub_image']['url']?>" alt="<?php echo $item['sub_image']['alt'];?>" title="<?php echo $item['sub_image']['title'];?>" class="box-img">
line#Line_6, line#Line_3, path#Vector_3, line#Line_5, #Vector_2, line#Line_4, line#Line_2 {
    animation: dash 25s linear infinite;
    animation-direction: reverse;
    stroke-dasharray: 5;
}
@-webkit-keyframes dash {
  to {
    stroke-dashoffset: 1000;
  }
}
# Drop rows with missing values
df = df.dropna()

# Fill missing values
df = df.fillna(value=0)
/* http://meyerweb.com/eric/tools/css/reset/ 
   v2.0 | 20110126
   License: none (public domain)
*/

html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed, 
figure, figcaption, footer, header, hgroup, 
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
	margin: 0;
	padding: 0;
	border: 0;
	font-size: 100%;
	font: inherit;
	vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure, 
footer, header, hgroup, menu, nav, section {
	display: block;
}
body {
	line-height: 1;
}
ol, ul {
	list-style: none;
}
blockquote, q {
	quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
	content: '';
	content: none;
}
table {
	border-collapse: collapse;
	border-spacing: 0;
}
//Service
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { RewardTypeViewModel } from '../shared/reward-type';
import { Observable } from 'rxjs';
import { RewardPostViewModel, RewardRedeemViewModel, RewardSetViewModel, RewardViewModel } from '../shared/reward';

@Injectable({
  providedIn: 'root'
})
export class RewardService {

  httpOptions = {
    headers: new HttpHeaders({
      'Content-Type': 'application/json'
    })
  };
  
  constructor(private http: HttpClient) {}
  apiUrl: string = "https://localhost:7185/api/Reward";

  //RewardType endpoints
  createRewardType(rewardType: RewardTypeViewModel): Observable<RewardTypeViewModel> {
    return this.http.post<RewardTypeViewModel>(`${this.apiUrl}/createRewardType`, rewardType, this.httpOptions);
  }

  getAllRewardTypes(): Observable<RewardTypeViewModel[]> {
    return this.http.get<RewardTypeViewModel[]>(`${this.apiUrl}/getAllRewardTypes`, this.httpOptions);
  }

  getRewardTypeById(id: number): Observable<RewardTypeViewModel> {
    return this.http.get<RewardTypeViewModel>(`${this.apiUrl}/getRewardTypeById/${id}`, this.httpOptions);
  }

  updateRewardType(rewardTypeId: number, rewardTypeName: string, rewardCriteria: string): Observable<void> {
    const body = { reward_Type_Name: rewardTypeName, reward_Criteria: rewardCriteria }; // Correctly format the body as JSON
    return this.http.put<void>(`${this.apiUrl}/updateRewardType/${rewardTypeId}`, body, this.httpOptions);
  }

  deleteRewardType(id: number): Observable<void> {
    return this.http.delete<void>(`${this.apiUrl}/deleteRewardType/${id}`, this.httpOptions);
  }

  //Reward endpoints
  getRewardById(id: number): Observable<RewardViewModel> {
    return this.http.get<RewardViewModel>(`${this.apiUrl}/getRewardById/${id}`, this.httpOptions);
  }  

  getAllRewards(): Observable<RewardViewModel[]> {
    return this.http.get<RewardViewModel[]>(`${this.apiUrl}/getAllRewards`, this.httpOptions);
  }

  setReward(reward: RewardSetViewModel): Observable<RewardViewModel> {
    return this.http.post<RewardViewModel>(`${this.apiUrl}/setReward`, reward, this.httpOptions);
  }

  redeemReward(request: RewardRedeemViewModel): Observable<any> {
    return this.http.post<any>(`${this.apiUrl}/redeemReward`, request, this.httpOptions);
  }

  postReward(request: RewardPostViewModel): Observable<any> {
    return this.http.post<any>(`${this.apiUrl}/postReward`, request, this.httpOptions);
  }

}

//Models
export class RewardViewModel{
    reward_ID!: number;
    reward_Issue_Date!: Date;
    reward_Type_ID!: number;
    isPosted!: boolean;
}

export class RewardRedeemViewModel {
    MemberId!: number;
    RewardId!: number;
}

export class RewardSetViewModel {
    reward_Issue_Date!: Date;
    reward_Type_ID!: number;
    isPosted: boolean = false;
}

export class RewardPostViewModel {
    RewardId!: number;
}

//Component
//TS
import { Component } from '@angular/core';
import { RewardViewModel } from '../shared/reward';
import { RewardService } from '../Services/reward.service';
import { CommonModule, Location } from '@angular/common';

@Component({
  selector: 'app-reward',
  standalone: true,
  imports: [CommonModule],
  templateUrl: './reward.component.html',
  styleUrl: './reward.component.css'
})
export class RewardComponent {
  unlistedRewards: RewardViewModel[] = [];
  listedRewards: RewardViewModel[] = [];

  constructor(private rewardService: RewardService, private location:Location) {}

  ngOnInit(): void {
    this.loadUnlistedRewards();

    this.loadListedRewards();
  }

  loadUnlistedRewards(): void {
    this.rewardService.getAllRewards().subscribe(rewards => {
      this.unlistedRewards = rewards.filter(reward => !reward.isPosted);
      console.log('Unlisted Rewards:', this.unlistedRewards);
    });
  }

  postReward(rewardId: number): void {
    const request = { RewardId: rewardId };
    this.rewardService.postReward(request).subscribe(() => {
      this.loadUnlistedRewards(); // Reload the unlisted rewards
    });
  }

  openSetRewardModal(): void {
    // Logic to open a modal for setting a new reward
  }

  loadListedRewards(): void {
    this.rewardService.getAllRewards().subscribe(rewards => {
      this.listedRewards = rewards.filter(reward => reward.isPosted);
      console.log('Listed Rewards:', this.listedRewards);
    });
  }

  goBack(): void {
  this.location.back();
  }
} 

//HTML
<div class="reward-container">
    <div class="back-button">
        <button class="btn btn-link" (click)="goBack()">
            <i class="bi bi-arrow-left-circle"></i>Back
        </button>
    </div>

    <div class="unlisted-reward-container">
        <div class="content">
            <div class="header">
                <h1>Unlisted Rewards</h1>
            </div>

            <button class="btn btn-primary mb-3" (click)="openSetRewardModal()">Set New Reward</button>

            <table class="table table-hover table-centered">
                <thead>
                  <tr>
                    <th>Reward ID</th>
                    <th>Issue Date</th>
                    <th>Reward Name</th>
                    <th>Posted</th>
                    <th>Actions</th>
                  </tr>
                </thead>
                <tbody>
                  <tr *ngFor="let reward of unlistedRewards">
                    <td>{{ reward.reward_ID }}</td>
                    <td>{{ reward.reward_Issue_Date | date }}</td>
                    <td>{{ reward.reward_Type_ID }}</td>
                    <td>{{ reward.isPosted }}</td>
                    <td>
                      <button (click)="postReward(reward.reward_ID)">Post Reward</button>
                    </td>
                  </tr>
                </tbody>
            </table>
        </div>
    </div>

    <br/>

    <div class="listed-reward-container">
        <div class="content">
            <div class="header">
                <h1>Listed Rewards</h1>
            </div>

            <table class="table table-hover table-centered">
                <thead>
                  <tr>
                    <th>Reward ID</th>
                    <th>Issue Date</th>
                    <th>Reward Name</th>
                    <th>Posted</th>
                  </tr>
                </thead>
                <tbody>
                  <tr *ngFor="let reward of listedRewards">
                    <td>{{ reward.reward_ID }}</td>
                    <td>{{ reward.reward_Issue_Date | date }}</td>
                    <td>{{ reward.reward_Type_ID }}</td>
                    <td>{{ reward.isPosted }}</td>
                  </tr>
                </tbody>
            </table>
        </div>
    </div>
</div>

//CSS
.reward-container {
    padding: 20px;
}

.back-button {
    position: absolute;
    top: 10px;
    left: 10px;
    margin-top: 70px;
}

.content {
    background-color: #f8f9fa;
    padding: 20px;
    border-radius: 5px;
    margin-top: 20px; /* Adjusted to move the content up */
    text-align: center; /* Center the heading */
}

.header {
    display: flex;
    justify-content: center;
    align-items: center;
    margin-bottom: 20px;
}

.table-centered th,
.table-centered td {
  text-align: center; /* Center align table contents */
}

.table-hover tbody tr:hover {
    background-color: #f1f1f1;
}

/* Custom CSS for all post images */
.post img {
    max-width: 500px; /* Limit width to 500px */
    height: auto; /* Maintain aspect ratio */
    width: 100%; /* Ensure image fills container */
    max-height: 500px; /* Limit height to 500px */
}

img {
    max-width: 500px; /* Limit width to 500px */
    height: auto; /* Maintain aspect ratio */
    width: 150%; /* Ensure image fills container */
    max-height: 500px; /* Limit height to 500px */
}

.attachment-ecomall_blog_thumb {
max-width: 350px; /* Limit width to 500px */
    height: 300px; /* Maintain aspect ratio */
    width: ; /* Ensure image fills container */
    max-height: px; /* Limit height to 500px */
}


.woocommerce .products .product a img {
    margin: ;
    box-shadow: none;
	width: 100%;
	height:250px;
    transition: 300ms ease;
}

.heading-title.product-name {
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 1;
    overflow: hidden;
    height: 43px;
    font-size: inherit;
}

.price, .wishlist_table .product-price, .products .meta-wrapper > .price {
    display: none;
    flex-wrap: wrap;
    align-items: center;
    line-height: 22px !important;
    gap: 0 6px;
}

.post_list_widget li .thumbnail, .list-posts article .entry-format figure, .ts-blogs article .thumbnail-content figure {
    overflow: hidden;
    background: floralwhite;
}

span[style="color:#b12704"] {
    display: none;
}

.post-title{
display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    overflow: hidden;
    height: 80px;
    font-size: 20px;
}

add_filter( 'woocommerce_product_single_add_to_cart_text', 'woocommerce_custom_single_add_to_cart_text' ); 
function woocommerce_custom_single_add_to_cart_text() {
    return __( 'See Prices', 'woocommerce' ); 
}

// To change add to cart text on product archives(Collection) page
add_filter( 'woocommerce_product_add_to_cart_text', 'woocommerce_custom_product_add_to_cart_text' );  
function woocommerce_custom_product_add_to_cart_text() {
    return __( 'See prices', 'woocommerce' );
}
{
  "fundRaisingId": 92,
  "fundRaisingTypeId": 16,
  "fundRaisingCategoryId": 17,
  "fundRaisingRequestForId": 121,
  "associationMemberId": 0,
  "associationId": 0,
  "title": "Fund raise for Competetion events ",
  "description": "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt.",
  "currencyCode": "EUR",
  "currencyCountryId": 82,
  "targetAmount": 65000,
  "targetEndDate": "2025-01-31T00:00:00",
  "isTaxBenefitApplicable": false,
  "applicableTaxCode": "",
  "videoUrl": null,
  "fundRaiseRejectReason": null,
  "images": [
    {
      "fundRaisingGalleryId": 115,
      "imageUrl": "https://s3.ap-south-1.amazonaws.com/myassociation-dev-objects/Profile/815b7ed1-2f32-4a53-8746-f86a20d5b400.jpg"
    },
    {
      "fundRaisingGalleryId": 116,
      "imageUrl": "https://s3.ap-south-1.amazonaws.com/myassociation-dev-objects/Profile/ef37dad7-948c-4666-8a64-872d9e81808d.jpg"
    }
  ],
  "documents": [
    {
      "fundRaisingGalleryId": 114,
      "documentUrl": "https://s3.ap-south-1.amazonaws.com/myassociation-dev-objects/Profile/file-sample_100kB (1).docx"
    }
  ],
  "beneficiaryAccountDetails": {
    "fundRaisingBeneficiaryAccountId": 63,
    "fundRaisingBeneficiaryId": 96,
    "fundRaisingId": 92,
    "name": "Dhanunjay",
    "bankName": "HDFC Bank",
    "bankAccountNumber": "1234567890123",
    "bankRoutingType": "IFSC Code",
    "bankRoutingTypeId": 46,
    "bankRoutingCode": "HDFC1234",
    "isOrgAccount": false,
    "upiId": null,
    "bankingPaymentTypeId": 170
  },
  "beneficiaryDetails": {
    "fundRaisingBeneficiaryId": 96,
    "fundRaisingId": 92,
    "name": "Ram Sharma",
    "emailId": "ram@gmail.com",
    "phoneCode": "+61",
    "phoneCountryId": 14,
    "phoneNumber": 9464646463,
    "kycType": null,
    "kycTypeId": 0,
    "kycDocumentUrl": null,
    "kycVerificationStatusId": 133,
    "kycVerificationStatus": "InReview"
  },
  "linkedAsscoiations": [
    {
      "id": 144,
      "associationId": 24,
      "name": "Hyderabad medical association",
      "logoUrl": "https://s3.ap-south-1.amazonaws.com/myassociation-dev-objects/Profile/881c29e9-99da-4b42-bd18-9411f4f1efef.jpg"
    },
    {
      "id": 146,
      "associationId": 5,
      "name": "Indian Society for Clinical Research (ISCR)",
      "logoUrl": "https://s3.ap-south-1.amazonaws.com/myassociation-dev-objects/public/download (13).png"
    },
    {
      "id": 145,
      "associationId": 7,
      "name": "Student National Medical Association",
      "logoUrl": "https://s3.ap-south-1.amazonaws.com/myassociation-dev-objects/Profile/7e7662f4-1243-4330-a610-fae79e4ea4f7.jpg"
    }
  ]
}






add_filter( 'awl_labels_hooks', 'my_awl_labels_hooks2' );

function my_awl_labels_hooks2( $hooks ) {

$hooks['before_title']['archive']['sp_wpspro_before_product_title'] = array( 'priority' => 10 );

$hooks['on_image']['archive']['sp_wpspro_before_product_thumbnail'] = array( 'priority' => 10 );

return $hooks;

}
 h1.closest('header').style.backgroundColor = `var(--color-primary)`;
function testPropagation(e) {
  e.preventDefault();
  const { target } = e;
  if (target.localName !== 'a' || target.classList.contains('btn--show-modal'))
    return;
  console.log(target);
  const url = new URL(target.href);
  console.log('url', url);
}




//Expanation of new Url()

const baseURL = 'https://www.example.com/';
const url = new URL('/path/to/page', baseURL);

console.log(url.href); // "https://www.example.com/path/to/page"






const url = new URL('https://www.example.com/path/to/page?query=123');

url.protocol = 'http';
url.hostname = 'another-example.com';
url.pathname = '/new/path';
url.searchParams.set('query', '456'); // Update the query parameter
url.hash = '#newSection';

console.log(url.href); // "http://another-example.com/new/path?query=456#newSection"







const url = new URL('https://www.example.com/path?name=David&age=30');

// Get the value of a query parameter
console.log(url.searchParams.get('name')); // "David"

// Add a new query parameter
url.searchParams.append('city', 'Berlin');

// Update an existing query parameter
url.searchParams.set('age', '31');

// Remove a query parameter
url.searchParams.delete('name');

console.log(url.href); // "https://www.example.com/path?age=31&city=Berlin"
//Models
public class Reward
{
    [Key]
    public int Reward_ID { get; set; }

    [Required]
    public DateTime Reward_Issue_Date { get; set; }

    public bool IsPosted { get; set; } // New property to track posted status

    public int Reward_Type_ID { get; set; }

    [ForeignKey(nameof(Reward_Type_ID))]
    public Reward_Type Reward_Type { get; set; }

}

public class Reward_Member
{
    [Key]
    public int Reward_Member_ID { get; set; }

    public bool IsRedeemed { get; set; } // New property to track redemption status

    public int Member_ID { get; set; }

    [ForeignKey(nameof(Member_ID))]

    public Member Member { get; set; }


    public int Reward_ID { get; set; }

    [ForeignKey(nameof(Reward_ID))]

    public Reward Reward { get; set; }
}

//ViewModels
public class RewardRedeemViewModel
{

    public int MemberId { get; set; }

    public int RewardId { get; set; }
}

public class RewardSetViewModel
{
    public DateTime Reward_Issue_Date { get; set; }

    public int Reward_Type_ID { get; set; }

    public bool IsPosted { get; set; } = false;
}

public class RewardPostViewModel
{
    public int RewardId { get; set; }
}

//Controller

[Route("api/[controller]")]
[ApiController]
public class RewardController : ControllerBase
{
  private readonly AppDbContext _appDbContext;

  public RewardController(AppDbContext appDbContext)
  {
    _appDbContext = appDbContext;
  }
  
      [HttpGet]
    [Route("getRewardById/{id}")]
    public async Task<IActionResult> GetRewardById(int id)
    {
        try
        {
            var reward = await _appDbContext.Rewards.FindAsync(id);

            if (reward == null)
            {
                return NotFound();
            }

            return Ok(reward);
        }
        catch (Exception)
        {
            return BadRequest();
        }
    }

    [HttpGet]
    [Route("getAllRewards")]
    public async Task<IActionResult> GetAllRewards()
    {
        try
        {
            var rewards = await _appDbContext.Rewards.ToListAsync();
            return Ok(rewards);
        }
        catch (Exception)
        {
            return BadRequest();
        }
    }

    [HttpPost]
    [Route("redeemReward")]
    public async Task<IActionResult> RedeemReward([FromBody] RewardRedeemViewModel request)
    {
        try
        {
            // Fetch the reward by ID
            var reward = await _appDbContext.Reward_Members
                                            .FirstOrDefaultAsync(r => r.Reward_ID == request.RewardId && r.Member_ID == request.MemberId);

            if (reward == null)
            {
                return NotFound("Reward not found or not eligible for the member.");
            }

            // Check if the reward is already redeemed
            if (reward.IsRedeemed)
            {
                return BadRequest("Reward is already redeemed.");
            }

            // Mark the reward as redeemed
            reward.IsRedeemed = true;
            _appDbContext.Entry(reward).State = EntityState.Modified;
            await _appDbContext.SaveChangesAsync();

            return Ok(new { Status = "Success", Message = "Reward redeemed successfully!" });
        }
        catch (Exception)
        {
            return BadRequest("An error occurred while redeeming the reward.");
        }
    }

    [HttpPost]
    [Route("setReward")]
    public async Task<IActionResult> SetReward(RewardSetViewModel r)
    {
        try
        {
            var reward = new Reward
            {
                Reward_Issue_Date = r.Reward_Issue_Date,
                Reward_Type_ID = r.Reward_Type_ID,
                IsPosted = r.IsPosted
            };
            _appDbContext.Rewards.Add(reward);
            await _appDbContext.SaveChangesAsync();

            return CreatedAtAction(nameof(GetRewardById), new { id = reward.Reward_ID }, reward);
        }
        catch (Exception)
        {
            return BadRequest();
        }
    }

    [HttpPost]
    [Route("postReward")]
    public async Task<IActionResult> PostReward([FromBody] RewardPostViewModel request)
    {
        try
        {
            // Fetch the reward by ID
            var reward = await _appDbContext.Rewards
                                            .FirstOrDefaultAsync(r => r.Reward_ID == request.RewardId);

            if (reward == null)
            {
                return NotFound("Reward not found.");
            }

            // Check if the reward is already posted
            if (reward.IsPosted)
            {
                return BadRequest("Reward is already posted.");
            }

            // Mark the reward as posted
            reward.IsPosted = true;
            _appDbContext.Entry(reward).State = EntityState.Modified;
            await _appDbContext.SaveChangesAsync();

            return Ok(new { Status = "Success", Message = "Reward posted successfully!" });
        }
        catch (Exception)
        {
            return BadRequest("An error occurred while posting the reward.");
        }
    }
}

//AppDbContext
var Rewards = new Reward[]
{
    new Reward { Reward_ID = 1, IsPosted = false, Reward_Issue_Date = new DateTime(2024, 4, 10), Reward_Type_ID = 1 }

};
builder.Entity<Reward>().HasData(Rewards);

var Reward_Members = new Reward_Member[]
{
    new Reward_Member{ Reward_Member_ID = 1, IsRedeemed = false, Member_ID = 1, Reward_ID = 1}
};
builder.Entity<Reward_Member>().HasData(Reward_Members);
var jwt = require('jsonwebtoken');
const userModel = require('../model/user');

function Auth (req, res, next) {

    const getUserCookies = req.cookies.userData;

    if(!getUserCookies){
        res.status(200).json({message: 'Login First'})
    }

    jwt.verify(getUserCookies.token, 'shhhhh', async function(err, decoded) {
        req.user = await userModel.findById(decoded._id);
        if (!req.user) {
            return res.status(401).json({ error: 'Invalid token. User not found.' });
          }
        next() // bar
    });
}

module.exports = Auth;


const mongoose = require('mongoose');

const userSchema = new mongoose.Schema({
   
    email:{
        type: 'string',
        required: true
    },
    password:{
        type: 'string',
        required: true
    }

  });

  const userModel = mongoose.model('User', userSchema);

  module.exports = userModel;


var express = require('express');
var router = express.Router();
const userModel = require('../model/user');
var jwt = require('jsonwebtoken');
const Auth = require('../middleware/Auth');

/* GET users listing. */
router.get('/', function(req, res, next) {
  res.send('respond with a resource');
});

const createUser = async (req,res,nexr) => {

  try {
    
    const userDatasave = new userModel({
      email: req.body.email,
      password: req.body.password
    })

    const saveUser = await userDatasave.save();

    res.status(200).json({
      status: 'success',
      saveUser: saveUser
    })

  } catch (error) {

    console.log(error.message);

    res.status(500).json({
      status: 'Server Error',
    })
    
  }

}

const checkUser = async (req,res,nexr) => {

  try {
    
    const {email, password} = req.body;
    const findUser = await userModel.findOne({email})

    if(findUser){

      if(findUser.password === password){

        var token = jwt.sign({ _id: findUser._id }, 'shhhhh', { expiresIn: '1h'});
        res.cookie('userData',{...findUser,token},{httpOnly: true});
        res.status(200).json({
          status: 'login successful',
          token
        })

      }else{

        res.status(200).json({
          status: 'Wrong Password',
        })

      }

    }else{

      res.status(200).json({
        status: 'User not Found',
      })

    }

  } catch (error) {

    console.log(error.message);

    res.status(500).json({
      status: 'Server Error',
    })
    
  }

}

const getAllUser = async (req,res,nexr) => {

  try {
    const findUser = await userModel.find({})

    res.status(200).json({
      status: 'success',
      findUser: findUser
    })

  } catch (error) {

    console.log(error.message);

    res.status(500).json({
      status: 'Server Error',
    })
    
  }

}

const userLogout = async (req,res,nexr) => {

  try {
    res.clearCookie('userData');

    res.status(200).json({
      status: 'user logged out successfully',
    })

  } catch (error) {

    console.log(error.message);

    res.status(500).json({
      status: 'Server Error',
    })
    
  }

}


router.post('/saveuser',createUser);
router.post('/loginuser',checkUser);
router.get('/getuser',Auth,getAllUser);
router.get('/logout',Auth,userLogout);


module.exports = router;


//Models
//Reward
public class Reward
{
    [Key]

    public int Reward_ID { get; set; }

    [Required]
    public string Prize { get; set; }

    [Required]
    public DateTime Reward_Issue_Date { get; set; }

    public int Member_ID { get; set; }

    [ForeignKey(nameof(Member_ID))]
    public Member Member { get; set; }

    
    public int Reward_Type_ID { get; set; }


    [ForeignKey(nameof(Reward_Type_ID))]
    public Reward_Type Reward_Type { get; set; }


    public bool IsRedeemed { get; set; } // New property to track redemption status
}

//RewardType
public class Reward_Type
{
    [Key]
    public int Reward_Type_ID { get; set; }

    [Required]
    public string Reward_Type_Name { get; set; }

    [Required]
    public string Reward_Criteria { get; set; }
}

//Reward_Member
public class Reward_Member
{
    [Key]
    public int Reward_Member_ID { get; set; }

    public int Number_Of_Qualified_Members { get; set; }

    public int Member_ID { get; set; }

    [ForeignKey(nameof(Member_ID))]

    public Member Member { get; set; }


    public int Reward_ID { get; set; }

    [ForeignKey(nameof(Reward_ID))]

    public Reward Reward { get; set; }
}

//ViewModels
//RewardViewModel
public class RewardViewModel
{
    public int MemberId { get; set; }
    public int RewardId { get; set; }
}

//AppDbContext
//Reward Seed Data
var Rewards = new Reward[]
{
    new Reward { Reward_ID = 1, Prize = "Free Gym Membership", Reward_Issue_Date = new DateTime(2024, 4, 10), Member_ID = 1, Reward_Type_ID = 1 }

};
builder.Entity<Reward>().HasData(Rewards);


//Reward_Member Seed Data
var Reward_Members = new Reward_Member[]
{
    new Reward_Member{ Reward_Member_ID = 1,Number_Of_Qualified_Members = 3,Member_ID = 1, Reward_ID = 1}
};
builder.Entity<Reward_Member>().HasData(Reward_Members);

//Controller
[Route("api/[controller]")]
[ApiController]
public class RewardController : ControllerBase
{
    private readonly AppDbContext _appDbContext;

    public RewardController(AppDbContext appDbContext)
    {
        _appDbContext = appDbContext;
    }

    [HttpPost]
    [Route("createRewardType")]
    public async Task<IActionResult> CreateRewardType(RewardTypeViewModel rt)
    {
        try
        {
            var rewardType = new Reward_Type
            {
                Reward_Type_Name = rt.Reward_Type_Name,
                Reward_Criteria = rt.Reward_Criteria
                
            };
            _appDbContext.Reward_Types.Add(rewardType);
            await _appDbContext.SaveChangesAsync();

            return CreatedAtAction(nameof(GetRewardTypeById), new { id = rewardType.Reward_Type_ID }, rewardType);
        }
        catch (Exception)
        {
            return BadRequest();
        }
    }

    [HttpGet]
    [Route("getAllRewardTypes")]
    public async Task<IActionResult> GetAllRewardTypes()
    {
        try
        {
            var rewardTypes = await _appDbContext.Reward_Types.ToListAsync();
            return Ok(rewardTypes);
        }
        catch (Exception)
        {
            return BadRequest();
        }
    }

    [HttpGet]
    [Route("getRewardTypeById/{id}")]
    public async Task<IActionResult> GetRewardTypeById(int id)
    {
        try
        {
            var rewardType = await _appDbContext.Reward_Types.FindAsync(id);

            if (rewardType == null)
            {
                return NotFound();
            }

            return Ok(rewardType);
        }
        catch (Exception)
        {
            return BadRequest();
        }
    }

    [HttpPut]
    [Route("updateRewardType/{id}")]
    public async Task<IActionResult> UpdateRewardType(int id, [FromBody] RewardTypeViewModel rt)
    {
        try
        {
            var rewardType = await _appDbContext.Reward_Types.FindAsync(id);

            if(rewardType == null)
            {
                return NotFound();
            }

            //rewardType = new Reward_Type
            //{
            //    Reward_Type_Name = rt.Reward_Type_Name,
            //    Reward_Criteria = rt.Reward_Criteria
            //};

            rewardType.Reward_Type_Name = rt.Reward_Type_Name;
            rewardType.Reward_Criteria = rt.Reward_Criteria;

            _appDbContext.Entry(rewardType).State = EntityState.Modified;
            await _appDbContext.SaveChangesAsync();

            return NoContent();
        }
        catch (Exception)
        {
            return BadRequest();
        }
    }

    [HttpDelete]
    [Route("deleteRewardType/{id}")]
    public async Task<IActionResult> DeleteRewardType(int id)
    {
        try
        {
            var rewardType = await _appDbContext.Reward_Types.FindAsync(id);

            if(rewardType == null)
            {
                return NotFound();
            }

            _appDbContext.Reward_Types.Remove(rewardType);
            await _appDbContext.SaveChangesAsync();

            return NoContent();
        }
        catch (Exception)
        {
            return BadRequest();
        }
    }



    [HttpPost]
    [Route("redeemReward")]
    public async Task<IActionResult> RedeemReward([FromBody] RewardViewModel request)
    {
        try
        {
            // Fetch the reward by ID
            var reward = await _appDbContext.Rewards
                                            .FirstOrDefaultAsync(r => r.Reward_ID == request.RewardId && r.Member_ID == request.MemberId);

            if (reward == null)
            {
                return NotFound("Reward not found or not eligible for the member.");
            }

            // Check if the reward is already redeemed
            if (reward.IsRedeemed)
            {
                return BadRequest("Reward is already redeemed.");
            }

            // Mark the reward as redeemed
            reward.IsRedeemed = true;
            _appDbContext.Entry(reward).State = EntityState.Modified;
            await _appDbContext.SaveChangesAsync();

            return Ok(new { Status = "Success", Message = "Reward redeemed successfully!" });
        }
        catch (Exception)
        {
            return BadRequest("An error occurred while redeeming the reward.");
        }
    }

    [HttpPost]
    [Route("setReward")]
    public async Task<IActionResult> SetReward(Reward r)
    {
        try
        {
            var reward = new Reward
            {
                Prize = r.Prize,
                Reward_Issue_Date = r.Reward_Issue_Date,
                Member_ID = r.Member_ID,
                Reward_Type_ID = r.Reward_Type_ID
            };
            _appDbContext.Rewards.Add(reward);
            await _appDbContext.SaveChangesAsync();

            return CreatedAtAction(nameof(GetRewardById), new { id = reward.Reward_ID }, reward);
        }
        catch (Exception)
        {
            return BadRequest();
        }
    }

    [HttpGet]
    [Route("getRewardById/{id}")]
    public async Task<IActionResult> GetRewardById(int id)
    {
        try
        {
            var reward = await _appDbContext.Reward_Types.FindAsync(id);

            if (reward == null)
            {
                return NotFound();
            }

            return Ok(reward);
        }
        catch (Exception)
        {
            return BadRequest();
        }
    }

    [HttpGet]
    [Route("getAllRewards")]
    public async Task<IActionResult> GetAllRewards()
    {
        try
        {
            var rewards = await _appDbContext.Rewards.ToListAsync();
            return Ok(rewards);
        }
        catch (Exception)
        {
            return BadRequest();
        }
    }
}
--> Collection(model)-->user.js --> userDetails.js
const mongoose = require('mongoose');

function validateEmail(email) {
    const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
    return emailRegex.test(email);
  }

const userModel = new mongoose.Schema({
    email:{
        type:String,
        require: true,
        unique: true,
        validate: {
            validator: validateEmail,
            message: 'Invalid email format',
        },
    },
    password:{
        type:String,
        require: true
    },
},
{
    timestamps: true
}
);

const userDataModel = mongoose.model('user', userModel);

module.exports = userDataModel;


const mongoose = require('mongoose');

const DetailModel = new mongoose.Schema({

    user_id:{
        type: mongoose.Schema.Types.ObjectId,
        ref:'user',
        required: true,
    },
    name:{
        type:String,
        require: true,
        validate: {
            validator: function(value) {
              const regex = /^[a-zA-Z]+$/;
              return regex.test(value);
            },
            message: 'Invalid characters in the name field. Only alphabets are allowed.'
          }
    },
    phone:{
        type:Number,
        require: true
    },
    country:{
        type:String,
        enum: ['USA', 'Canada', 'UK', 'Australia', 'India', 'Other'],
        require: true
    },
    additional_info:{
        type:String,
        require: true,
        validate: {
            validator: function(value) {
              const regex = /^[a-zA-Z0-9.,@_]+$/;
              return regex.test(value);
            },
            message: 'Invalid characters in additional_info field.'
          }
    },
    file:{
        type:String,
        required: true
    }
},
{
    timestamps: true
}
);

const userDetailModel = mongoose.model('userDetail', DetailModel);

module.exports = userDetailModel;





-->router --> user.js

var express = require('express');
var router = express.Router();
const multer = require('multer');
const fs = require('fs')
const path = require('path');
const userDataModel = require('../collection/user')
const userDetailModel = require('../collection/userDetail')

const storage = multer.diskStorage({
  destination: (req, file, cb) => {
    cb(null, 'uploads/');
  },
  filename: (req, file, cb) => {
    cb(null, `${Date.now()}_${file.originalname}`); 
  },
});

const fileFilter = (req, file, cb) => {
  const allowedMimes = ['application/pdf'];
  if (allowedMimes.includes(file.mimetype)) {
    cb(null, true);
  } else {
    cb(new Error('Invalid file type. Only PDF files are allowed.'));
  }
};

const upload = multer({
  storage: storage,
  limits: {
    fileSize: 50 * 1024 * 1024,
  },
  fileFilter: fileFilter,
});


const userRegister = async (req, res,next) => {

  try {

    const registerUser = new userDataModel({
      email: req.body.email,
      password: req.body.password,
    })

    const saveUser = await registerUser.save();

    const userid = saveUser._id;

    const userDetail = new userDetailModel({
      user_id: userid,
      name: req.body.name,
      phone: req.body.phone,
      country: req.body.country,
      additional_info: req.body.additional_info,
      file: req.file.filename,
    })

    const saveUserDetail = await userDetail.save();

    res.status(200).json({
      status:"Success",
      saveUser,
      saveUserDetail,
    })

    
  } catch (error) {
    fs.unlinkSync(req.file.path);
    if (error.name === 'ValidationError') {
      fs.unlinkSync(req.file.path);
      const validationErrors = {};
      for (const key in error.errors) {
        validationErrors[key] = error.errors[key].message;
      }
      return res.status(400).json({ errors: validationErrors });
    }
    console.error(error);
    res.status(500).send('Internal Server Error'); 
  }

}

const userList = async (req, res,next) => {

  try {

      const query = {};
      if (req.query.email) {
        query.email = { $regex: new RegExp(req.query.email, 'i') };
      }
      if (req.query.name) {
        query.name = { $regex: new RegExp(req.query.name, 'i') };
      }
      if (req.query.phone) {
        query.phone = req.query.phone;
      }
      if (req.query.country) {
        query.country = { $regex: new RegExp(req.query.country, 'i') };
      }

        const page = parseInt(req.query.page) || 1;
        const pageSize = parseInt(req.query.pageSize) || 5;

        
        const userDetails = await userDetailModel.aggregate([
          {
            $match: query,
          },
          {
            $lookup: {
              from: 'users',
              localField: 'user_id',
              foreignField: '_id',
              as: 'user',
            },
          },
          // {
          //   $unwind: '$user',
          // },
          {
            $skip: (page - 1) * pageSize,
          },
          {
            $limit: pageSize,
          },
        ]);

        res.json(userDetails);
      
  } catch (error) {
      res.status(500).send('Internal Server Error');
  }

}

const updateUser = async (req, res, next) => {
  try {
    const userId = req.params.id;

    const existingUserDetail = await userDetailModel.findOne({ user_id: userId });

    if (existingUserDetail && existingUserDetail.file) {
      const filePath = path.join('uploads/', existingUserDetail.file);
      fs.unlinkSync(filePath);
    }

    const updateUserData = await userDataModel.findByIdAndUpdate(
      userId,
      {
        email: req.body.email,
        password: req.body.password,
      },
      { new: true }
    );

    if(updateUserData === null){
      res.status(200).json({
        status: 'User Not Found',
      });
    }

    const updateUserDetail = await userDetailModel.findOneAndUpdate(
      { user_id: userId },
      {
        name: req.body.name,
        phone: req.body.phone,
        country: req.body.country,
        additional_info: req.body.additional_info,
        file: req.file.filename,
      },
      { new: true }
    );

    res.status(200).json({
      status: 'Success',
      updateUserData,
      updateUserDetail,
    });
  } catch (error) {
    fs.unlinkSync(req.file.path);
    if (error.name === 'ValidationError') {
      fs.unlinkSync(req.file.path);
      const validationErrors = {};
      for (const key in error.errors) {
        validationErrors[key] = error.errors[key].message;
      }
      return res.status(400).json({ errors: validationErrors });
    }
    console.error(error);
    res.status(500).send('Internal Server Error');
  }
};

const deleteUser = async (req, res, next) => {
  try {

    const userId = req.params.id;

    const deleteUser = await userDataModel.findByIdAndDelete(userId);

    if (!deleteUser) {
      return res.status(404).json({ status: 'Error', message: 'User not found' });
    }

    const deleteUserDetail =   userDetailModel.findOneAndDelete({ user_id: userId });

    if (deleteUserDetail.file) {
      const filePath = path.join('uploads/', deleteUserDetail.file);
      fs.unlinkSync(filePath);
    }

    res.status(200).json({
      status: 'Success',
      message: 'User deleted successfully',
    });
    
  } catch (error) {
    if (error.name === 'ValidationError') {
      const validationErrors = {};
      for (const key in error.errors) {
        validationErrors[key] = error.errors[key].message;
      }
      return res.status(400).json({ errors: validationErrors });
    }
    console.error(error);
    res.status(500).send('Internal Server Error');
  }
};

router.post("/addUser",upload.single('file'), userRegister);
router.get("/userList", userList);
router.put('/updateUser/:id', upload.single('file'), updateUser);
router.delete('/deleteUser/:id', deleteUser);


module.exports = router;


//middleware --> auth
const jwt = require('jsonwebtoken');

function Auth (req, res, next) {

    const token = req.session.token || req.cookies.token;

    if (!token) {
        return res.status(401).send({ error: 'Unauthorized' });
    }

    try {

        const payload = jwt.verify(token, "JWT_SECRET");
        req.user = payload;
        next();
        
    } catch (error) {
        res.status(401).send({ error: 'Unauthorized' });
    }

}

module.exports = Auth;



--> model --> user.js
const mongoose = require('mongoose');
const bcrypt = require('bcrypt');

const userSchema = new mongoose.Schema({
    username: 
    {
        type: 'String'
    },
    password:{
        type: 'String'
    }
  });

  userSchema.pre('save',async function (next){

    if(this.isModified('password')){
        this.password = await bcrypt.hash(this.password, 10);
    }
    next();
  })

  const userModel = mongoose.model('User', userSchema);

  module.exports = userModel;
  
  
  
  -->router --> user.js
  var express = require('express');
var router = express.Router();
var userModel = require('../model/user');
const auth = require('../middleware/auth');
const jwt = require('jsonwebtoken');
const bcrypt = require('bcrypt');
/* GET users listing. */

const CreateUser =  async (req,res,next) => {

    try {

       const createUser = new userModel({
        username: req.body.username,
        password: req.body.password
       })

       const saveData = await createUser.save();

       res.status(200).json({
        status: 'success',
        saveData
       })

      
    } catch (error) {

      res.status(500).json({
        status: 'error',
        error
      })
      
    }

}

const CheckUser = async (req,res,next) => {

  try {

    const {username , password } = req.body

    const findUser = await userModel.findOne({ username : username})

    if(findUser){

      bcrypt.compare(password, findUser.password, function(err, result) {
        // result == true
        if (result == true) {

          console.log(findUser);

          const token = jwt.sign({ _id: findUser._id }, "JWT_SECRET", { expiresIn: '1h' });
      
          res.cookie('token', token, { httpOnly: true });
          req.session.user = findUser;
      
          res.status(200).json({
            status: 'Login success',
            token
           })
          
        }else {

          res.status(500).json({
            status: 'Password Incorrect',
          })

        }
      });

    }else{

      res.status(500).json({
        status: 'User not Found',
      })

    }
    
  } catch (error) {
    
    res.status(500).json({
      status: 'error',
      error
    })

  }

}

const GetUser = async (req,res,next) => {

try {

  const page = parseInt(req.query.page);
  const limit = parseInt(req.query.limit) || 10;
  const skip = (page - 1) * limit;

  const findUser = await userModel.find().skip(skip).limit(limit);

  const userToken = req.cookies.token;
  const user = req.session.user;
  console.log("🚀 ~ GetUser ~ user:", user)

  console.log(user);

  res.status(200).json({
    status: 'Login success',
    findUser,
    userToken,
    user
   })
  
} catch (error) {
  
  res.status(500).json({
    status: 'error',
    error
  })

}

}

const logoutUser = async (req,res,next) => {

  try {
  
    res.clearCookie('token');
  
    res.send({ message: 'Logged out successfully' });
    
  } catch (error) {
    
    res.status(500).json({
      status: 'error',
      error
    })
  
  }
  
  }

router.post('/signin', CreateUser);
router.post('/logIn', CheckUser);
router.get('/getUser',auth, GetUser);
router.get('/logout',auth, logoutUser);

module.exports = router;
var express = require('express');
var router = express.Router();
var userModel = require('../model/user');
const auth = require('../middleware/auth');
const jwt = require('jsonwebtoken');
const bcrypt = require('bcrypt');
/* GET users listing. */

const CreateUser =  async (req,res,next) => {

    try {

       const createUser = new userModel({
        username: req.body.username,
        password: req.body.password
       })

       const saveData = await createUser.save();

       res.status(200).json({
        status: 'success',
        saveData
       })

      
    } catch (error) {

      res.status(500).json({
        status: 'error',
        error
      })
      
    }

}

const CheckUser = async (req,res,next) => {

  try {

    const {username , password } = req.body

    const findUser = await userModel.findOne({ username : username})

    if(findUser){

      bcrypt.compare(password, findUser.password, function(err, result) {
        // result == true
        if (result == true) {

          console.log(findUser);

          const token = jwt.sign({ _id: findUser._id }, "JWT_SECRET", { expiresIn: '1h' });
      
          res.cookie('token', token, { httpOnly: true });
          req.session.user = findUser;
      
          res.status(200).json({
            status: 'Login success',
            token
           })
          
        }else {

          res.status(500).json({
            status: 'Password Incorrect',
          })

        }
      });

    }else{

      res.status(500).json({
        status: 'User not Found',
      })

    }
    
  } catch (error) {
    
    res.status(500).json({
      status: 'error',
      error
    })

  }

}

const GetUser = async (req,res,next) => {

try {

  const page = parseInt(req.query.page);
  const limit = parseInt(req.query.limit) || 10;
  const skip = (page - 1) * limit;

  const findUser = await userModel.find().skip(skip).limit(limit);

  const userToken = req.cookies.token;
  const user = req.session.user;
  console.log("🚀 ~ GetUser ~ user:", user)

  console.log(user);

  res.status(200).json({
    status: 'Login success',
    findUser,
    userToken,
    user
   })
  
} catch (error) {
  
  res.status(500).json({
    status: 'error',
    error
  })

}

}

const logoutUser = async (req,res,next) => {

  try {
  
    res.clearCookie('token');
  
    res.send({ message: 'Logged out successfully' });
    
  } catch (error) {
    
    res.status(500).json({
      status: 'error',
      error
    })
  
  }
  
  }

router.post('/signin', CreateUser);
router.post('/logIn', CheckUser);
router.get('/getUser',auth, GetUser);
router.get('/logout',auth, logoutUser);

module.exports = router;
const mongoose = require('mongoose');
const bcrypt = require('bcrypt');

const userSchema = new mongoose.Schema({
    username: 
    {
        type: 'String'
    },
    password:{
        type: 'String'
    }
  });

  userSchema.pre('save',async function (next){

    if(this.isModified('password')){
        this.password = await bcrypt.hash(this.password, 10);
    }
    next();
  })

  const userModel = mongoose.model('User', userSchema);

  module.exports = userModel;
const jwt = require('jsonwebtoken');

function Auth (req, res, next) {

    const token = req.session.token || req.cookies.token;

    if (!token) {
        return res.status(401).send({ error: 'Unauthorized' });
    }

    try {

        const payload = jwt.verify(token, "JWT_SECRET");
        req.user = payload;
        next();
        
    } catch (error) {
        res.status(401).send({ error: 'Unauthorized' });
    }

}

module.exports = Auth;
<picture>
  <source media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/25423296/163456776-7f95b81a-f1ed-45f7-b7ab-8fa810d529fa.png">
  <source media="(prefers-color-scheme: light)" srcset="https://user-images.githubusercontent.com/25423296/163456779-a8556205-d0a5-45e2-ac17-42d089e3c3f8.png">
  <img alt="Shows an illustrated sun in light mode and a moon with stars in dark mode." src="https://user-images.githubusercontent.com/25423296/163456779-a8556205-d0a5-45e2-ac17-42d089e3c3f8.png">
</picture>
{
  "associationSubscriptionId": 0,
  "associationMembershipId": 40,
  "title": "premium member",
  "isNational": true,
  "validityInDays": 45,
  "currencyCode": "INR",
  "currencyCountryId": 1,
  "subscriptionFee": 100000,
  "totalFee": 110000,
  "tax": 10,
  "isTaxApplicable": true
}
{
  "fundRaisingId": 0,
  "fundRaisingTypeId": 17,
  "fundRaisingCategoryId": 5,
  "fundRaisingRequestForId": 122,
  "associationMemberId": 362,
  "associationId": 38,
  "title": "Fund raise for charity purpose ",
  "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.",
  "currencyCode": "INR",
  "currencyCountryId": 1,
  "targetAmount": 456778,
  "targetEndDate": "2024-09-30T08:15:20.657Z",
  "isTaxBenefitApplicable": true,
  "applicableTaxCode": "TERA3434",
  "videoUrl": null,
  "fundRaiseRejectReason": "fund raise documents must be submitted ",
  "images": [],
  "documents": [],
  "beneficiaryAccountDetails": {
    "fundRaisingBeneficiaryId": 0,
    "fundRaisingId": 0,
    "upiId": "7989824656@ybl",
    "bankingPaymentTypeId": 171
  },
  "beneficiaryDetails": {
    "fundRaisingBeneficiaryId": 0,
    "fundRaisingId": 0,
    "name": "Chukkambotla",
    "emailId": "jayanth@gmail.com",
    "phonecode": "+91",
    "phoneCountryId": 1,
    "phoneNumber": 8956895623,
    "kycType": null,
    "kycTypeId": 0,
    "kycDocumentUrl": null,
    "kycVerificationStatusId": 0,
    "kycVerificationStatus": "string"
  },
  "linkedAsscoiations": [
    {
      "id": 0,
      "associationId": 38,
      "name": "Hdfc Association ",
      "logoUrl": null
    }
  ]
}
{
  "fundRaisingId": 0,
  "fundRaisingTypeId": 17,
  "fundRaisingCategoryId": 5,
  "fundRaisingRequestForId": 122,
  "associationMemberId": 362,
  "associationId": 38,
  "title": "Fund raise for charity purpose ",
  "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.",
  "currencyCode": "INR",
  "currencyCountryId": 1,
  "targetAmount": 456778,
  "targetEndDate": "2024-09-30T08:15:20.657Z",
  "isTaxBenefitApplicable": true,
  "applicableTaxCode": "TERA3434",
  "videoUrl": null,
  "fundRaiseRejectReason": "fund raise documents must be submitted ",
  "images": [],
  "documents": [],
  "beneficiaryAccountDetails": {
    "fundRaisingBeneficiaryId": 0,
    "fundRaisingId": 0,
    "upiId": "7989824656@ybl",
    "bankingPaymentTypeId": 171
  },
  "beneficiaryDetails": {
    "fundRaisingBeneficiaryId": 0,
    "fundRaisingId": 0,
    "name": "Chukkambotla",
    "emailId": "jayanth@gmail.com",
    "phonecode": "+91",
    "phoneCountryId": 1,
    "phoneNumber": 8956895623,
    "kycType": null,
    "kycTypeId": 0,
    "kycDocumentUrl": null,
    "kycVerificationStatusId": 0,
    "kycVerificationStatus": "string"
  },
  "linkedAsscoiations": [
    {
      "id": 0,
      "associationId": 38,
      "name": "Hdfc Association ",
      "logoUrl": null
    }
  ]
}
let rawPrize = prompt("Enter your first name");

​
let b = 0;      // b contains 0

b += 1;         // b contains 1

b++;            // b contains 2

console.log(b); // Shows 2

​
const nb = Number(prompt("Enter a number:")); // nb's type is number
body {
  background: black;
}

.StyledReceipt {
  background-color: #fff;
  width: 22rem;
  position: relative;
  padding: 1rem;
  box-shadow: 0 -0.4rem 1rem -0.4rem rgba(0, 0, 0, 0.2);
}

.StyledReceipt::after {
  background-image: linear-gradient(135deg, #fff 0.5rem, transparent 0),
    linear-gradient(-135deg, #fff 0.5rem, transparent 0);
  background-position: left-bottom;
  background-repeat: repeat-x;
  background-size: 1rem;
  content: '';
  display: block;
  position: absolute;
  bottom: -1rem;
  left: 0;
  width: 100%;
  height: 1rem;
}
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';

import 'api_exceptions.dart';

enum FirebaseApiFilterType {
  isEqualTo,
  isNotEqualTo,
  isGreaterThan,
  isGreaterThanOrEqualTo,
  isLessThan,
  isLessThanOrEqualTo,
  arrayContains,
  arrayContainsAny,
  whereIn,
  whereNotIn,
  isNull,
}

class FirebaseFilterEntity {
  final String field;
  final FirebaseApiFilterType operator;
  final dynamic value;

  FirebaseFilterEntity({
    required this.field,
    required this.operator,
    required this.value,
  });
}

abstract class FirebaseApiClient {
  Future<dynamic> get(String collection,{int limit = 20 ,List<FirebaseFilterEntity>? filters});
  Future<dynamic> getById(String collection, String id);
  Future<dynamic> postWithId(String collection, {required Map<String, dynamic> params});
  Future<void> post(String collection, {required String id, required Map<String, dynamic> params});
  Future<void> putWithId(String collection, {required String id, required Map<String, dynamic> params});
  Future<void> put(String collection, {required Map<String, dynamic> params});
  Future<void> deleteDoc(String collection, String id);
}

class FirebaseApiClientImpl extends FirebaseApiClient {
  final FirebaseFirestore _client;

  FirebaseApiClientImpl(this._client);

  @override
  Future<dynamic> get(String collection,{int limit = 20 ,List<FirebaseFilterEntity>? filters}) async {
    try {
      Query query = _client.collection(collection);

      if (filters != null) {
        for (var filter in filters) {
          switch (filter.operator) {
            case FirebaseApiFilterType.isEqualTo:
              query = query.where(filter.field, isEqualTo: filter.value);
              break;
            case FirebaseApiFilterType.isNotEqualTo:
              query = query.where(filter.field, isNotEqualTo: filter.value);
              break;
            case FirebaseApiFilterType.isGreaterThan:
              query = query.where(filter.field, isGreaterThan: filter.value);
              break;
            case FirebaseApiFilterType.isGreaterThanOrEqualTo:
              query = query.where(filter.field, isGreaterThanOrEqualTo: filter.value);
              break;
            case FirebaseApiFilterType.isLessThan:
              query = query.where(filter.field, isLessThan: filter.value);
              break;
            case FirebaseApiFilterType.isLessThanOrEqualTo:
              query = query.where(filter.field, isLessThanOrEqualTo: filter.value);
              break;
            case FirebaseApiFilterType.arrayContains:
              query = query.where(filter.field, arrayContains: filter.value);
              break;
            case FirebaseApiFilterType.arrayContainsAny:
              query = query.where(filter.field, arrayContainsAny: filter.value);
              break;
            case FirebaseApiFilterType.whereIn:
              query = query.where(filter.field, whereIn: filter.value);
              break;
            case FirebaseApiFilterType.whereNotIn:
              query = query.where(filter.field, whereNotIn: filter.value);
              break;
            case FirebaseApiFilterType.isNull:
              query = query.where(filter.field, isNull: filter.value);
              break;
            default:
              throw ArgumentError('Unsupported operator: ${filter.operator}');
          }
        }
      }

      final response = await query.limit(limit).get();
      return response.docs.map((doc) => doc.data()).toList();
    } catch (e) {
      throw _handleError(e, tr('errorGettingDataCollection'));
    }
  }

  @override
  Future<dynamic> getById(String collection, String id) async {
    try {
      final response = await _client.collection(collection).doc(id).get();
      if (!response.exists) {
        throw Exception('Document with ID $id not found in collection $collection');
      }
      return response.data();
    } catch (e) {
      throw _handleError(e, tr('errorGettingDocumentById'));
    }
  }

  @override
  Future<void> put(String collection, {required Map<String, dynamic> params}) async {
    if (!params.containsKey('id')) {
      throw ArgumentError(tr('documentIdIsRequiredToUpdate'));
    }
    try {
      await _client.collection(collection).doc(params['id']).update(params);
    } catch (e) {
      throw _handleError(e, tr('errorUpdatingDocument'));
    }
  }

  @override
  Future<void> deleteDoc(String collection, String id) async {
    try {
      await _client.collection(collection).doc(id).delete();
    } catch (e) {
      throw _handleError(e, tr('errorDeletingDocument'));
    }
  }

  Exception _handleError(dynamic error, String defaultMessage) {
    if (error is FirebaseException) {
      switch (error.code) {
        case 'permission-denied':
          return UnauthorisedException();
        case 'not-found':
          return Exception(defaultMessage);
        default:
          return ExceptionWithMessage('$defaultMessage: ${error.message}');
      }
    }
    return Exception(defaultMessage);
  }

  @override
  Future<void> post(String collection, {required String id, required Map<String, dynamic> params}) async {
    try {
      await _client.collection(collection).doc(id).set(params);
    } catch (e) {
      throw _handleError(e, tr('errorPostingDataCollection'));
    }
  }


  @override
  Future<dynamic> postWithId(String collection, {required Map<String, dynamic> params}) async {
    try {
      debugPrint("Post data $collection\n$params");
      await _client.collection(collection).doc(params['id']).set(params);
      return params;
    } catch (e) {
      throw _handleError(e, tr('errorPostingDataCollection'));
    }
  }


  @override
  Future<void> putWithId(String collection, {required String id, required Map<String, dynamic> params}) async {
    try {
      await _client.collection(collection).doc(id).update(params);
    } catch (e) {
      throw _handleError(e, tr('errorUpdatingDocument'));
    }
  }
}
console.log("Hello from JavaScript!");

console.log("Let's do some math");

console.log( + 7);
4
console.log(12 / 0);

console.log("Goodbye!");

​
console.log("Hello from JavaScript!");

console.log("Let's do some math");

console.log( + 7);
4
console.log(12 / 0);

console.log("Goodbye!");

​
console.log("Hello from JavaScript!");

console.log("Let's do some math");

console.log( + 7);
4
console.log(12 / 0);

console.log("Goodbye!");

​
while IFS=';' read -r username groups; do
    # Remove whitespace
    username=$(echo "$username" | xargs)
    groups=$(echo "$groups" | xargs)

    # Create user and personal group
    if id "$username" &>/dev/null; then
        echo "User $username already exists." | tee -a "$LOG_FILE"
    else
        useradd -m -s /bin/bash -G "$groups" "$username"
        echo "User $username created." | tee -a "$LOG_FILE"
        
        # Create a random password
        password=$(openssl rand -base64 12)
        echo "$username:$password" | chpasswd
        echo "$username,$password" >> "$PASSWORD_FILE"

        # Set up home directory permissions
        chown "$username:$username" "/home/$username"
        chmod 700 "/home/$username"

        echo "User $username added to groups: $groups" | tee -a "$LOG_FILE"
    fi
done < "$USER_FILE"
    const renderTitle = () => (
      <span style={{display:'flex',justifyContent:'space-between'}}>
        <span>Name</span>
        {/* <span>Code</span> */}
        <span>Balance</span>
      </span>
    );
    const renderItem = (ledger_id,ledger_code, name, balance) => ({
      key: ledger_id,
      value: name,
      label: (
        <div
          style={{
            display: 'flex',
            justifyContent: 'space-between',
          }}
        >
          <span>
             {name}
          </span>
          {/* <span>
          {ledger_code}
          </span> */}
          <span>
             {balance}
          </span>
        </div>
      ),
    });


const handleSearch = (search, type) => {
        console.log("type====>",type);
        console.log("search====>",search);
        if(type === 'ledger'){
          fetchLedger(search).then((data) =>{
            console.log("data--newone==>",data);
            const fetchedOptions = data.map((item) => renderItem(item.ledger_id, item.ledger_code, item.value, item.current_balance));
            setLedgerList([
              {
                label: renderTitle(),
                options: fetchedOptions
              }
            ])
          })
        }
    }

    const handleChange = async(value,option, name) => {
      // const updatedData = props.dataSource.map(item => {
        console.log("value===>",value);
        console.log("option===>",option);
        console.log("option.key===>",option.key);
        console.log("name===>",name);
        if (name === 'ledger'){
          const response = await api.post(`${dotzURL}ledger/ledger-basic/`,{organization:orgId,ledger_id:option.key})
          console.log("response---->",response.data.data);
          const ledgerData = response.data.data
          setState((prevState) => ({
            ...prevState,
            ledgerId: ledgerData.id,
            name: ledgerData.value,
            code : ledgerData.ledger_code,
            balance : ledgerData.current_balance
          }));
        }
    };

-----------------------

<AutoComplete
            options={ledgerList}
            size="large"
            style={{
            width: '100%',
            }}
            onSearch={(text) => handleSearch(text, 'ledger')}
            onSelect={(value, option) => handleChange(value,option, 'ledger')}

            placeholder="Select Customer"
            defaultValue={state.name}
            autoFocus
            allowClear
        />
          class Demo{
               public static void main(String[] args){
                    system.out.printLn("Hello World");
               }
          }
     
          class Demo{
               public static void main(String[] args){
                    system.out.printLn("Hello World");
               }
          }
     
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<style>
.iconsWithHeadingTextBoxed-2 .carousel-slide .upperSection .h6 {
    font-size: 21px;
    letter-spacing: 0;
    font-weight: 700;
}
.iconsWithHeadingTextBoxed-2 .carousel-slide .upperSection .h6, .iconsWithHeadingTextBoxed-2 .carousel-slide .upperSection h3 {
    position: absolute;
    left: 50%;
    transform: translate(-50%, -50%);
    top: 70%;
    width: 100%;
    text-align: center;
    text-transform: uppercase;
}

.iconsWithHeadingTextBoxed-2 .gap {
    display: flex;
    grid-gap: 1%;
    gap: 1%;
}
.iconsWithHeadingTextBoxed-2 .carousel-slide {
    width: 100%;
    min-height: 470px;
    height: auto;
    border-radius: 15px;
    margin: 65px 10px 60px;
    box-shadow: var(--mdc-fab-box-shadow, 0 3px 5px -1px rgba(0, 0, 0, .2), 0 6px 10px 0 rgba(0, 0, 0, .14), 0 1px 18px 0 rgba(0, 0, 0, .12));
}

.iconsWithHeadingTextBoxed-2 .carousel-slide.border-yellow .upperSection .imgBox {
    border: 4px solid #f1bb31;
}
.iconsWithHeadingTextBoxed-2 .carousel-slide.border-green .upperSection .imgBox {
    border: 4px solid #c2b925;
}
.iconsWithHeadingTextBoxed-2 .carousel-slide.border-red .upperSection .imgBox {
    border: 4px solid #f07d6d;
}
.iconsWithHeadingTextBoxed-2 .carousel-slide.border-orange .upperSection .imgBox {
    border: 4px solid #f07530;
}

.iconsWithHeadingTextBoxed-2 .carousel-slide .upperSection {
    position: relative;
    height: 120px;
    border-radius: 15px 15px 0 0;
}
.iconsWithHeadingTextBoxed-2 .carousel-slide.border-orange .upperSection {
    background-color: #f07530;
}
.iconsWithHeadingTextBoxed-2 .carousel-slide.border-yellow .upperSection {
    background-color: #f1bb31;
}
.iconsWithHeadingTextBoxed-2 .carousel-slide.border-green .upperSection {
    background-color: #c2b925;
}
.iconsWithHeadingTextBoxed-2 .carousel-slide.border-red .upperSection {
    background-color: #f07d6d;
}
.iconsWithHeadingTextBoxed-2 .carousel-slide .contentSection {
    font-size: 14px;
    line-height: 1;
    font-weight: 300;
}
.iconsWithHeadingTextBoxed-2 .carousel-slide .upperSection .imgBox {
    position: absolute;
    left: 50%;
    transform: translate(-50%, -50%);
    border-radius: 50%;
    background-color: #fff;
    height: 110px;
    width: 110px;
    padding: 2px;
}
.iconsWithHeadingTextBoxed-2 .carousel-slide {
    width: 100%;
    min-height: 470px;
    height: auto;
    border-radius: 15px;
    margin: 65px 10px 60px;
    box-shadow: var(--mdc-fab-box-shadow, 0 3px 5px -1px rgba(0, 0, 0, .2), 0 6px 10px 0 rgba(0, 0, 0, .14), 0 1px 18px 0 rgba(0, 0, 0, .12));
}
.iconsWithHeadingTextBoxed-2 .carousel-slide .contentSection li {
    display: flex;
    justify-content: center;
    margin: 15px 0;
}
.iconsWithHeadingTextBoxed-2 .carousel-slide .contentSection li .data {
    flex: 85% 1;
}
.iconsWithHeadingTextBoxed-2 .carousel-slide .contentSection {
    font-size: 14px;
    line-height: 1;
    font-weight: 300;
}
.iconsWithHeadingTextBoxed-2 .carousel-slide .contentSection {
    padding: 10px;
}
.iconsWithHeadingTextBoxed-2 .carousel-slide .upperSection .h6 {
    font-size: 21px;
    letter-spacing: 0;
    font-weight: 700;
}
.icon img {
    height: 20px;
    margin-right: 10px;
}
.imgBox img {
    padding: 25px;
}
.iconsWithHeadingTextBoxed-2 .carousel-slide .upperSection {
    position: relative;
    height: 128px;
    border-radius: 15px 15px 0 0;
    margin-top: -20px;
}
.data {
    color: #4f505a;
}
.innerBox {
    padding: 100px;
}

</style>
<body>
    <div class="container">
    <div class="iconsWithHeadingTextBoxed-2">
        <div class="innerBox">
            <h2 class="sectionHeading"></h2>
            <div class="carousel-slides gap">
                <div class="border-orange carousel-slide">
                    <div class="upperSection">
                        <div class="imgBox"><span class=" lazy-load-image-background blur lazy-load-image-loaded"
                                style="color: transparent; display: inline-block;"><img alt="2 Weeks"
                                    src="https://d3l6fpccohjkcc.cloudfront.net/static/media/week2.e2571e85.svg"></span>
                        </div>
                        <h3 class="h6">2 Weeks</h3>
                        <h2></h2>
                    </div>
                    <ul class="contentSection">
                        <li>
                            <div class="icon"><img
                                    src="https://stageportfoilo.com/wp/contechtive/wp-content/uploads/2024/06/images-removebg-preview.png"
                                    alt="tick"></div>
                            <div class="data">Pre-built WordPress / WooCommerce theme incorporating brand guidelines and
                                basic layout changes.</div>
                        </li>
                        <li>
                            <div class="icon"><img
                                    src="https://stageportfoilo.com/wp/contechtive/wp-content/uploads/2024/06/images-removebg-preview.png"
                                    alt="tick"></div>
                            <div class="data">WordPress / WooCommerce app consultation and integrations (Upto 4 apps
                                from WordPress / WooCommerce App Store with UI tweaks as per brand guidelines).</div>
                        </li>
                        <li>
                            <div class="icon"><img
                                    src="https://stageportfoilo.com/wp/contechtive/wp-content/uploads/2024/06/images-removebg-preview.png"
                                    alt="tick"></div>
                            <div class="data">Data migration / Catalog Setup Support into WordPress / WooCommerce (data
                                formatting isn't included)</div>
                        </li>
                        <li>
                            <div class="icon"><img
                                    src="https://stageportfoilo.com/wp/contechtive/wp-content/uploads/2024/06/images-removebg-preview.png"
                                    alt="tick"></div>
                            <div class="data">WordPress / WooCommerce Scripts (basic complexity)</div>
                        </li>
                    </ul>
                </div>
                <div class="border-yellow carousel-slide">
                    <div class="upperSection">
                        <div class="imgBox"><span class=" lazy-load-image-background blur lazy-load-image-loaded"
                                style="color: transparent; display: inline-block;"><img alt="4 Weeks"
                                    src="https://d3l6fpccohjkcc.cloudfront.net/static/media/week4.8fda8454.svg"></span>
                        </div>
                        <h3 class="h6">4 Weeks</h3>
                        <h2></h2>
                    </div>
                    <ul class="contentSection">
                        <li>
                            <div class="icon"><img
                                    src="https://stageportfoilo.com/wp/contechtive/wp-content/uploads/2024/06/images-removebg-preview.png"
                                    alt="tick"></div>
                            <div class="data">Pre-built WordPress / WooCommerce theme incorporating brand guidelines
                                &amp; moderate layout changes + 1 new layout.</div>
                        </li>
                        <li>
                            <div class="icon"><img
                                    src="https://stageportfoilo.com/wp/contechtive/wp-content/uploads/2024/06/images-removebg-preview.png"
                                    alt="tick"></div>
                            <div class="data">WordPress / WooCommerce app consultation and integrations (Upto 8 apps
                                with UI tweaks as per brand guidelines and moderate layout changes).</div>
                        </li>
                        <li>
                            <div class="icon"><img
                                    src="https://stageportfoilo.com/wp/contechtive/wp-content/uploads/2024/06/images-removebg-preview.png"
                                    alt="tick"></div>
                            <div class="data">Data migration / Catalog Setup (includes data formatting).</div>
                        </li>
                        <li>
                            <div class="icon"><img
                                    src="https://stageportfoilo.com/wp/contechtive/wp-content/uploads/2024/06/images-removebg-preview.png"
                                    alt="tick"></div>
                            <div class="data">WordPress / WooCommerce Scripts (moderate complexity).</div>
                        </li>
                        <li>
                            <div class="icon"><img
                                    src="https://stageportfoilo.com/wp/contechtive/wp-content/uploads/2024/06/images-removebg-preview.png"
                                    alt="tick"></div>
                            <div class="data">Upto 2 clone stores (for geographical expansion - different catalog,
                                prices, shipment and tax rules).</div>
                        </li>
                    </ul>
                </div>
                <div class="border-green carousel-slide">
                    <div class="upperSection">
                        <div class="imgBox"><span class=" lazy-load-image-background blur lazy-load-image-loaded"
                                style="color: transparent; display: inline-block;"><img alt="8 Weeks"
                                    src="https://d3l6fpccohjkcc.cloudfront.net/static/media/week8.4342d9f6.svg"></span>
                        </div>
                        <h3 class="h6">8 Weeks</h3>
                        <h2></h2>
                    </div>
                    <ul class="contentSection">
                        <li>
                            <div class="icon"><img
                                    src="https://stageportfoilo.com/wp/contechtive/wp-content/uploads/2024/06/images-removebg-preview.png"
                                    alt="tick"></div>
                            <div class="data">Pre-built WordPress / WooCommerce theme incorporating your brand
                                guidelines and extensive layout changes + up to 3 new layouts.</div>
                        </li>
                        <li>
                            <div class="icon"><img
                                    src="https://stageportfoilo.com/wp/contechtive/wp-content/uploads/2024/06/images-removebg-preview.png"
                                    alt="tick"></div>
                            <div class="data">WordPress / WooCommerce app consultation and integrations (Upto 20 apps
                                from WordPress / WooCommerce App Store with UI tweaks as per brand guidelines and
                                moderate layout changes).</div>
                        </li>
                        <li>
                            <div class="icon"><img
                                    src="https://stageportfoilo.com/wp/contechtive/wp-content/uploads/2024/06/images-removebg-preview.png"
                                    alt="tick"></div>
                            <div class="data">Data migration / Catalog Setup into WordPress / WooCommerce (includes data
                                formatting and WordPress / WooCommerce scripts development for migrating data).</div>
                        </li>
                        <li>
                            <div class="icon"><img
                                    src="https://stageportfoilo.com/wp/contechtive/wp-content/uploads/2024/06/images-removebg-preview.png"
                                    alt="tick"></div>
                            <div class="data">WordPress / WooCommerce Scripts (advanced complexity).</div>
                        </li>
                        <li>
                            <div class="icon"><img
                                    src="https://stageportfoilo.com/wp/contechtive/wp-content/uploads/2024/06/images-removebg-preview.png"
                                    alt="tick"></div>
                            <div class="data">Upto 4 clone stores for your WordPress / WooCommerce store (for
                                geographical expansion - different catalog, prices, shipment and tax rules).</div>
                        </li>
                    </ul>
                </div>
                <div class="border-red carousel-slide">
                    <div class="upperSection">
                        <div class="imgBox"><span class=" lazy-load-image-background blur lazy-load-image-loaded"
                                style="color: transparent; display: inline-block;"><img alt="Not in a rush ?"
                                    src="https://d3l6fpccohjkcc.cloudfront.net/static/media/no-rush.94dc28f8.svg"></span>
                        </div>
                        <h3 class="h6">Not in a rush ?</h3>
                        <h2></h2>
                    </div>
                    <ul class="contentSection">
                        <li>
                            <div class="icon"><img
                                    src="https://stageportfoilo.com/wp/contechtive/wp-content/uploads/2024/06/images-removebg-preview.png"
                                    alt="tick"></div>
                            <div class="data">Custom WordPress / WooCommerce template (unlimited layouts).</div>
                        </li>
                        <li>
                            <div class="icon"><img
                                    src="https://stageportfoilo.com/wp/contechtive/wp-content/uploads/2024/06/images-removebg-preview.png"
                                    alt="tick"></div>
                            <div class="data">Headless architecture supported by WordPress / WooCommerce.</div>
                        </li>
                        <li>
                            <div class="icon"><img
                                    src="https://stageportfoilo.com/wp/contechtive/wp-content/uploads/2024/06/images-removebg-preview.png"
                                    alt="tick"></div>
                            <div class="data">Custom WordPress / WooCommerce App Development for any business logic not
                                supported by WordPress / WooCommerce or apps from WordPress / WooCommerce App store.
                            </div>
                        </li>
                        <li>
                            <div class="icon"><img
                                    src="https://stageportfoilo.com/wp/contechtive/wp-content/uploads/2024/06/images-removebg-preview.png"
                                    alt="tick"></div>
                            <div class="data">Unlimited clone stores for your WordPress / WooCommerce store.</div>
                        </li>
                        <li>
                            <div class="icon"><img
                                    src="https://stageportfoilo.com/wp/contechtive/wp-content/uploads/2024/06/images-removebg-preview.png"
                                    alt="tick"></div>
                            <div class="data">ADA Compliance to make your WordPress / WooCommerce store accessible.
                            </div>
                        </li>
                        <li>
                            <div class="icon"><img
                                    src="https://stageportfoilo.com/wp/contechtive/wp-content/uploads/2024/06/images-removebg-preview.png"
                                    alt="tick"></div>
                            <div class="data">Mobile Application supported by your WordPress / WooCommerce Store.</div>
                        </li>
                    </ul>
                </div>
            </div>
        </div>
    </div>
</div>
</body>

</html>
ddev magento cache:clean
ddev magento cache:flush
rm -rf var/cache/* var/page_cache/* var/view_preprocessed/* pub/static/frontend/* pub/static/adminhtml/* pub/static/_cache/*
<!DOCTYPE html>
<html class="no-js" lang="{{ locale_name }}">
    <head>
        <title>{{ head.title }}</title>
        {{{ resourceHints }}}
        {{{ head.meta_tags }}}
        {{{ head.config }}}
        {{#block "head"}} {{/block}}

        <link href="{{ head.favicon }}" rel="shortcut icon">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <script>
            {{!-- Change document class from no-js to js so we can detect this in css --}}
            document.documentElement.className = document.documentElement.className.replace('no-js', 'js');
        </script>

        {{> components/common/polyfill-script }}
        <script>window.consentManagerTranslations = `{{{langJson 'consent_manager'}}}`;</script>

        {{!-- Load Lazysizes script ASAP so images will appear --}}
        <script>
            {{!-- Only load visible elements until the onload event fires, after which preload nearby elements. --}}
            window.lazySizesConfig = window.lazySizesConfig || {};
            window.lazySizesConfig.loadMode = 1;
        </script>
        <script async src="{{cdn 'assets/dist/theme-bundle.head_async.js' resourceHint='preload' as='script'}}"></script>

        <script src="https://ajax.googleapis.com/ajax/libs/webfont/1.6.26/webfont.js"></script>

        <script>
            WebFont.load({
                custom: {
                    families: ['Karla', 'Roboto', 'Source Sans Pro']
                },
                classes: false
            });
        </script>


        {{ getFontsCollection }}
        {{{stylesheet '/assets/css/theme.css'}}}
        {{{stylesheet '/assets/css/vault.css'}}}
        {{{stylesheet '/assets/css/custom.css'}}}

        {{{head.scripts}}}

        {{~inject 'zoomSize' theme_settings.zoom_size}}
        {{~inject 'productSize' theme_settings.product_size}}
        {{~inject 'showAdminBar' theme_settings.show-admin-bar}}
        {{~inject 'genericError' (lang 'common.generic_error')}}
        {{~inject 'maintenanceModeSettings' settings.maintenance}}
        {{~inject 'adminBarLanguage' (langJson 'admin')}}
        {{~inject 'urls' urls}}
        {{~inject 'secureBaseUrl' settings.secure_base_url}}
        {{~inject 'cartId' cart_id}}
        {{~inject 'channelId' settings.channel_id}}
        {{~inject 'template' template}}
        {{~inject 'validationDictionaryJSON' (langJson 'validation_messages')}}
        {{~inject 'validationFallbackDictionaryJSON' (langJson 'validation_fallback_messages')}}
        {{~inject 'validationDefaultDictionaryJSON' (langJson 'validation_default_messages')}}
        {{~inject 'carouselArrowAndDotAriaLabel' (lang 'carousel.arrow_and_dot_aria_label')}}
        {{~inject 'carouselActiveDotAriaLabel' (lang 'carousel.active_dot_aria_label')}}
        {{~inject 'carouselContentAnnounceMessage' (lang 'carousel.content_announce_message')}}
    </head>
    <body>
      <!-- ACTIVE SHOPNAV DIM PAGE -->
      <div id="shopnav-dim-page" style="display: none;">
        <div style="top: 50%; left: 50%; display: none;" id="dialog" class="window">
          <div id="san"></div>
        </div>
        <div style="width: 2478px; font-size: 32pt; color:white; height: 1202px; display: none; opacity: 0.4;" id="mask"></div>
      </div>
      <!-- END ACTIVE SHOPNAV DIM PAGE -->
      <svg data-src="{{cdn 'img/icon-sprite.svg'}}" class="icons-svg-sprite"></svg>

      {{> components/common/header }}
      <!--{{> components/common/body }}-->
    <div class="container">
        {{{region name="add_widget_here"}}}
          {{{region name="add_Global_widget_here--global"}}}
          {{{page_content}}}
    </div>
    
    
<!--    <div class="body" data-currency-code="{{currency_selector.active_currency_code}}">-->
<!--    {{#block "hero"}} {{/block}}-->
<!--    <div class="container">-->
<!--        {{#block "page"}} {{/block}}-->
<!--    </div>-->
<!--    {{> components/common/modal/modal}}-->
<!--    {{> components/common/alert/alert-modal}}-->
<!--</div>-->



      {{> components/common/footer }}

      <script>window.__webpack_public_path__ = "{{cdn 'assets/dist/'}}";</script>
      <script src="{{cdn 'assets/dist/theme-bundle.main.js'}}"></script>
      <script>
          {{!-- Exported in app.js --}}
          window.stencilBootstrap("{{page_type}}", {{jsContext}}).load();
      </script>

      {{{footer.scripts}}}
  </body>
</html>
Now you need to actually sort the array. The first sorting algorithm you will implement is the bubble sort, which starts at the beginning of the array and 'bubbles up' unsorted values towards the end, iterating through the array until it is completely sorted.

const bubbleSort = (array) => {
  for (let i = 0; i < array.length; i++) {
    for (let j = 0; j < array.length - 1; j++) {
      console.log(array, array[j], array[j + 1]);

      if (array[j] > array[j + 1]) {
        const temp = array[j];
        array[j] = array[j + 1];
        array[j + 1] = temp;
      }
    }
  }

  return array;
}
  
  Time to implement another sorting algorithm. This time, you'll be implementing a selection sort. Selection sort works by finding the smallest value in the array, then swapping it with the first value in the array. Then, it finds the next smallest value in the array, and swaps it with the second value in the array. It continues iterating through the array until it is completely sorted.
  
const selectionSort = (array) => {
  for (let i = 0; i < array.length; i++) {
    let minIndex = i;

    for (let j = i + 1; j < array.length; j++) {
      console.log(array, array[j], array[minIndex]);
      if (array[j] < array[minIndex]) {
        minIndex = j;
      }
    }

    const temp = array[i];
    array[i] = array[minIndex];
    array[minIndex] = temp;
  }

  return array;
}

The last sorting algorithm you will implement is the insertion sort. This algorithm works by building up a sorted array at the beginning of the list. It begins the sorted array with the first element. Then it inspects the next element and swaps it backward into the sorted array until it is in a sorted position, and so on.

const insertionSort = (array) => {
  for (let i = 1; i < array.length; i++) {
    const currValue = array[i];
    let j = i - 1;

    while (j >= 0 && array[j] > currValue) {
      array[j + 1] = array[j];
      j--;
    }
    array[j + 1] = currValue;
  }
  return array;
}

To sort the elements of an array, you can use the built-in method called .sort(). 

Notice how the double digit number(10) is placed at the beginning of the array. This is because the default behavior of .sort() is to convert the numbers values to strings, and sort them alphabetically. And 10 comes before 2 alphabetically.

To fix this, you can pass a callback function to the .sort() method. The callback function has two parameters - for yours, use a and b. The parameters of a and b represent the number values in the array that will be sorted.

const sortedValues = inputValues.sort((a, b) => {
    return a - b;
  });
These young ladies have obviously already been victims of perverted voyeurs. 
It is now my job to find out who these perverts were and to punish them accordingly.

star

Thu Jul 04 2024 22:47:34 GMT+0000 (Coordinated Universal Time) https://gunsbuyerusa.com/product/polish-tantal-ak-74-for-sale/

@ak74uforsale

star

Thu Jul 04 2024 22:32:36 GMT+0000 (Coordinated Universal Time)

@davidmchale #scroll #scrollposition #pageoffset

star

Thu Jul 04 2024 19:53:57 GMT+0000 (Coordinated Universal Time) https://cloud.google.com/functions/docs/console-quickstart?hl

@Spsypg #javascript

star

Thu Jul 04 2024 18:24:23 GMT+0000 (Coordinated Universal Time) https://uxkit.digital.gob.do/es/

@linconl

star

Thu Jul 04 2024 18:09:30 GMT+0000 (Coordinated Universal Time) https://uxkit.digital.gob.do/es/

@linconl

star

Thu Jul 04 2024 18:08:53 GMT+0000 (Coordinated Universal Time)

@sunnywhateverr

star

Thu Jul 04 2024 18:08:19 GMT+0000 (Coordinated Universal Time)

@sunnywhateverr

star

Thu Jul 04 2024 17:26:06 GMT+0000 (Coordinated Universal Time)

@wasim_mm1

star

Thu Jul 04 2024 17:08:43 GMT+0000 (Coordinated Universal Time)

@imran1701

star

Thu Jul 04 2024 13:46:11 GMT+0000 (Coordinated Universal Time)

@realpygmygoat

star

Thu Jul 04 2024 10:44:12 GMT+0000 (Coordinated Universal Time) https://meyerweb.com/eric/tools/css/reset/

@WebDevSylvester #css #html

star

Thu Jul 04 2024 10:18:47 GMT+0000 (Coordinated Universal Time)

@Promakers2611

star

Thu Jul 04 2024 09:53:26 GMT+0000 (Coordinated Universal Time)

@Promakers2611

star

Thu Jul 04 2024 09:34:18 GMT+0000 (Coordinated Universal Time) https://www.pyramidions.com/mobile-app-development-chennai.html

@Steve_1

star

Thu Jul 04 2024 08:32:10 GMT+0000 (Coordinated Universal Time)

@Ranjith

star

Thu Jul 04 2024 04:18:55 GMT+0000 (Coordinated Universal Time) https://secure.helpscout.net/inboxes/a66af2abc7090990/views/4174594

@Pulak

star

Thu Jul 04 2024 01:52:08 GMT+0000 (Coordinated Universal Time)

@davidmchale #css #variables

star

Thu Jul 04 2024 01:11:04 GMT+0000 (Coordinated Universal Time)

@davidmchale #event #url #newurl

star

Wed Jul 03 2024 13:15:09 GMT+0000 (Coordinated Universal Time)

@sid_balar

star

Wed Jul 03 2024 11:52:08 GMT+0000 (Coordinated Universal Time)

@iamkatmakhafola

star

Wed Jul 03 2024 11:41:42 GMT+0000 (Coordinated Universal Time)

@sid_balar

star

Wed Jul 03 2024 11:38:23 GMT+0000 (Coordinated Universal Time)

@sid_balar

star

Wed Jul 03 2024 11:35:43 GMT+0000 (Coordinated Universal Time)

@sid_balar

star

Wed Jul 03 2024 11:35:22 GMT+0000 (Coordinated Universal Time)

@sid_balar

star

Wed Jul 03 2024 11:34:15 GMT+0000 (Coordinated Universal Time)

@sid_balar

star

Wed Jul 03 2024 10:06:48 GMT+0000 (Coordinated Universal Time) https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax

@Sanduni23

star

Wed Jul 03 2024 09:07:46 GMT+0000 (Coordinated Universal Time)

@Ranjith

star

Wed Jul 03 2024 09:02:42 GMT+0000 (Coordinated Universal Time)

@Ranjith

star

Wed Jul 03 2024 09:02:41 GMT+0000 (Coordinated Universal Time)

@Ranjith

star

Wed Jul 03 2024 08:45:48 GMT+0000 (Coordinated Universal Time) https://www.pyramidions.com/mobile-app-development-chennai.html

@Bastina_1 #mobileapp development company

star

Wed Jul 03 2024 08:35:50 GMT+0000 (Coordinated Universal Time) https://codepen.io/JohnTokio/pen/ExzqEBQ?editors

@WebDevSylvester #javascript

star

Wed Jul 03 2024 07:20:45 GMT+0000 (Coordinated Universal Time) https://codepen.io/JohnTokio/pen/ExzqEBQ

@WebDevSylvester #javascript

star

Wed Jul 03 2024 07:04:59 GMT+0000 (Coordinated Universal Time) https://thejsway.net/chapter02/

@WebDevSylvester #javascript

star

Wed Jul 03 2024 02:05:03 GMT+0000 (Coordinated Universal Time) https://stackoverflow.com/questions/73561793/create-a-responsive-receipt-cutoff-zig-zag-border

@webmaster30 #css

star

Tue Jul 02 2024 23:35:43 GMT+0000 (Coordinated Universal Time)

@Samuel1347 #flutter #dart #firebase

star

Tue Jul 02 2024 22:36:50 GMT+0000 (Coordinated Universal Time) https://codepen.io/JohnTokio/pen/ExzqEBQ?editors=1111

@WebDevSylvester #javascript

star

Tue Jul 02 2024 22:30:18 GMT+0000 (Coordinated Universal Time) https://codepen.io/JohnTokio/pen/ExzqEBQ?editors=1111

@WebDevSylvester #javascript

star

Tue Jul 02 2024 22:08:58 GMT+0000 (Coordinated Universal Time) https://codepen.io/JohnTokio/pen/ExzqEBQ?editors=1111

@WebDevSylvester #javascript

star

Tue Jul 02 2024 22:07:40 GMT+0000 (Coordinated Universal Time) undefined

@WebDevSylvester

star

Tue Jul 02 2024 21:07:09 GMT+0000 (Coordinated Universal Time)

@chrixsaint

star

Tue Jul 02 2024 17:05:36 GMT+0000 (Coordinated Universal Time)

@nashid

star

Tue Jul 02 2024 16:03:59 GMT+0000 (Coordinated Universal Time) http://localhost:5500/

@tushar1256 #java

star

Tue Jul 02 2024 16:03:38 GMT+0000 (Coordinated Universal Time) http://localhost:5500/

@tushar1256 #java

star

Tue Jul 02 2024 15:49:07 GMT+0000 (Coordinated Universal Time)

@shees

star

Tue Jul 02 2024 12:40:27 GMT+0000 (Coordinated Universal Time)

@zaki

star

Tue Jul 02 2024 12:02:17 GMT+0000 (Coordinated Universal Time)

@mubashir_aziz

star

Tue Jul 02 2024 10:39:22 GMT+0000 (Coordinated Universal Time)

@NoFox420 #javascript

star

Tue Jul 02 2024 10:01:50 GMT+0000 (Coordinated Universal Time) https://justpaste.it/LegShow

@kingtribe201

Save snippets that work with our extensions

Available in the Chrome Web Store Get Firefox Add-on Get VS Code extension