Compare commits

...

86 commits
v0.1.4 ... main

Author SHA1 Message Date
46039dc7f1 Merge pull request 'add resume, update/cleanup' (#9) from dev into main
All checks were successful
deploy / deploy (push) Successful in 49s
Reviewed-on: #9
2024-06-17 16:44:17 -05:00
cbd39fd67b Merge branch 'main' into dev
All checks were successful
build / build (push) Successful in 59s
2024-06-17 16:44:06 -05:00
1f20d8746e
npm update
Some checks failed
build / build (push) Has been cancelled
2024-06-17 17:43:26 -04:00
85269833b6
Add resume 2024-06-17 17:43:09 -04:00
75667f275c
reformat and cleanup 2024-06-17 17:37:27 -04:00
37220934d7 Merge pull request 'change home text and cleanup' (#8) from dev into main
All checks were successful
deploy / deploy (push) Successful in 56s
Reviewed-on: #8
2024-06-17 15:15:32 -05:00
6f3c5d97ea
update home text
All checks were successful
build / build (push) Successful in 3m15s
2024-06-17 16:12:52 -04:00
0b4b40707c
remove obsolete version from compose.yaml
Some checks failed
build / build (push) Has been cancelled
2024-06-03 15:25:59 -05:00
ab666e4efe Merge pull request 'housekeeping updates' (#7) from dev into main
All checks were successful
deploy / deploy (push) Successful in 3m10s
Reviewed-on: #7
2024-03-29 14:10:44 -05:00
e70ad7c08a Merge branch 'main' into dev
All checks were successful
build / build (push) Successful in 39s
2024-02-27 19:27:39 -06:00
b03f320af3
add exception details if available
All checks were successful
build / build (push) Successful in 42s
2024-02-27 19:26:42 -06:00
ef898769ea
update exception page 2024-02-27 19:18:56 -06:00
1aad60fb8c
cleanup
All checks were successful
build / build (push) Successful in 41s
2024-02-27 19:16:57 -06:00
3ddbfd2a9b
housekeeping
All checks were successful
build / build (push) Successful in 53s
2024-02-27 19:06:16 -06:00
79f6d80b89
housekeeping
All checks were successful
build / build (push) Successful in 55s
2024-02-27 19:03:51 -06:00
83feaaab40
add script/stylesheet versioning 2024-02-27 18:38:49 -06:00
9078b50298
Recreate blazor error ui in tailwind 2024-02-27 18:17:07 -06:00
eb7a000733
remove leftover bootstrap css config 2024-02-27 17:55:03 -06:00
173aa9a3ed
add standard tailwind plugins, remove unused dev dependency 2024-02-27 17:53:40 -06:00
a7e21abe79
remove leftover authentication components 2024-02-27 17:46:59 -06:00
57e3fb1a7e
cleanup autofocus 2024-02-27 17:45:57 -06:00
5450522e37
move some styling into SimpleLayout.razor
All checks were successful
build / build (push) Successful in 40s
2024-02-25 23:33:37 -06:00
d244292ef8
add attributions page
All checks were successful
build / build (push) Successful in 55s
2024-02-25 23:27:24 -06:00
1d1aefcd96
cleanup old images after build
All checks were successful
build / build (push) Successful in 41s
2024-02-25 20:15:02 -06:00
e9a7099e25 Merge pull request 'temporarily remove contact form' (#6) from dev into main
All checks were successful
deploy / deploy (push) Successful in 47s
Reviewed-on: #6
2024-02-25 20:13:02 -06:00
6abd602a91
temporarily remove contact form
All checks were successful
build / build (push) Successful in 42s
2024-02-25 20:12:43 -06:00
5a9fbfb8e8 Merge pull request 'fix secret client' (#5) from dev into main
All checks were successful
deploy / deploy (push) Successful in 45s
Reviewed-on: #5
2024-02-25 19:57:58 -06:00
8bcba134f1
attempt to fix secret client
All checks were successful
build / build (push) Successful in 40s
2024-02-25 19:56:49 -06:00
1c984859cb
Revert "include antiforgerytoken in contactform"
This reverts commit 4dc3e92c4c.
2024-02-25 19:50:03 -06:00
4dc3e92c4c
include antiforgerytoken in contactform
All checks were successful
build / build (push) Successful in 40s
2024-02-25 19:46:29 -06:00
fde3425eda Merge pull request 'fix heroicons' (#4) from dev into main
All checks were successful
deploy / deploy (push) Successful in 48s
Reviewed-on: #4
2024-02-25 19:38:39 -06:00
552413acca
gitignore heroicons files
All checks were successful
build / build (push) Successful in 40s
2024-02-25 19:37:26 -06:00
ae1ce31905
fix libman restore
All checks were successful
build / build (push) Successful in 1m0s
2024-02-25 19:35:19 -06:00
ea84dca0a2
fix dockerfile
Some checks failed
build / build (push) Has been cancelled
2024-02-25 19:34:23 -06:00
378a4f39b6
remove heroicons project
Some checks failed
build / build (push) Failing after 4s
2024-02-25 19:32:47 -06:00
c144d40eae
Merge remote-tracking branch 'origin/dev' into dev
All checks were successful
build / build (push) Successful in 40s
2024-02-25 19:20:02 -06:00
ce772fa221
fix misalignment at certain responsive breakpoints 2024-02-25 19:19:57 -06:00
45920dc6bf Merge pull request 'remove fileprovider' (#3) from dev into main
All checks were successful
deploy / deploy (push) Successful in 45s
Reviewed-on: #3
2024-02-25 18:59:41 -06:00
f1499fa03b Merge branch 'main' into dev
All checks were successful
build / build (push) Successful in 38s
2024-02-25 18:57:13 -06:00
faaee707c3
remove fileprovider
All checks were successful
build / build (push) Successful in 39s
2024-02-25 18:56:15 -06:00
b066bc00e4 Merge pull request 'fix file provider' (#2) from dev into main
All checks were successful
deploy / deploy (push) Successful in 44s
Reviewed-on: #2
2024-02-25 18:54:23 -06:00
010cb224bb
fix file provider
All checks were successful
build / build (push) Successful in 39s
2024-02-25 18:53:59 -06:00
5ad6847d30 Merge pull request 'Merge dev into main' (#1) from dev into main
All checks were successful
deploy / deploy (push) Successful in 45s
Reviewed-on: #1
2024-02-25 18:51:10 -06:00
b14405a0fc
amend previous
All checks were successful
build / build (push) Successful in 54s
2024-02-25 18:49:50 -06:00
2478de2758
include heroicons source in project
Some checks failed
build / build (push) Failing after 38s
2024-02-25 18:47:52 -06:00
bbc0ec0eb8
fix possible race condition 2024-02-25 18:46:36 -06:00
317ae47889
Revert "test fileprovider fix"
This reverts commit a8653ec3f7.
2024-02-25 18:36:12 -06:00
a8653ec3f7
test fileprovider fix
Some checks failed
build / build (push) Failing after 28s
2024-02-25 18:33:25 -06:00
ed4af111a9
fix job name
Some checks failed
build / build (push) Failing after 13s
2024-02-25 18:24:09 -06:00
f97ffce447
test
Some checks failed
build / deploy (push) Failing after 28s
2024-02-25 18:23:33 -06:00
67eb590604
add libman.json
Some checks failed
build / deploy (push) Failing after 28s
2024-02-25 18:14:42 -06:00
fea2012b88
attempt to fix libman restore
Some checks failed
build / deploy (push) Failing after 26s
2024-02-25 18:12:54 -06:00
ea54628d8e
only include .svg in embedded resource
Some checks failed
build / deploy (push) Failing after 26s
2024-02-25 18:06:03 -06:00
365cb6289e
whitespace 2024-02-25 18:05:49 -06:00
311aafdd9b
trigger deploy on push to main
Some checks failed
build / deploy (push) Failing after 29s
2024-02-25 17:58:43 -06:00
4ec9f69429
trigger build on push to dev 2024-02-25 17:58:27 -06:00
194d08f521
use correct heroicon 2024-02-25 17:57:30 -06:00
e5a8b88d02
fix heroicons 2024-02-25 17:57:14 -06:00
2785aa0b34
remove redundant options registration, don't validate options on start if they depend on Azure App Config
All checks were successful
build / deploy (push) Successful in 38s
2024-02-25 17:42:51 -06:00
ab5d100615
only push website:latest to docker hub
All checks were successful
build / deploy (push) Successful in 38s
2024-02-25 17:35:23 -06:00
449fbadc29
fix dockerfile
All checks were successful
build / deploy (push) Successful in 52s
2024-02-25 17:32:51 -06:00
d63a09d9ab
cleanup csproj 2024-02-25 17:30:15 -06:00
3e313c4943
update build/deploy pipelines
All checks were successful
build / deploy (push) Successful in 1m0s
2024-02-25 17:26:44 -06:00
f5d6ecaecc
update dockerfile 2024-02-25 17:23:27 -06:00
61460da314
update package.json 2024-02-25 17:19:23 -06:00
96289c3c65
update dockerfile 2024-02-25 17:17:09 -06:00
4ca56ad55e
fix dockerfile
All checks were successful
build / deploy (push) Successful in 1m0s
2024-02-25 17:14:54 -06:00
37a69fd440
fix dockerfile
Some checks failed
build / deploy (push) Has been cancelled
2024-02-25 17:14:17 -06:00
9d2a5539a7
move HeroIcons to separate project 2024-02-25 17:12:10 -06:00
6a9800bb31
update .gitignore 2024-02-25 17:10:59 -06:00
950f2fed4d
whitespace
Some checks failed
build / deploy (push) Failing after 39s
2024-02-25 16:13:50 -06:00
00d41c4801
replace build pipeline with dockerized version 2024-02-25 16:13:47 -06:00
b09bafd4f6
fix build, update tailwindcss
Some checks failed
dotnet build / build (push) Failing after 9s
2024-02-25 16:10:04 -06:00
99b6b29b6f
fix dockerfile
Some checks failed
dotnet build / build (push) Failing after 9s
2024-02-25 15:34:31 -06:00
401bb59218
move web/js/ts files to web project 2024-02-25 15:33:09 -06:00
640ba83e90
fix dockerfile 2024-02-25 14:31:54 -06:00
533497c32c
fix dockerfile 2024-02-25 14:25:18 -06:00
4990d82b60
Only use package locking in docker build
Some checks failed
dotnet build / build (push) Has been cancelled
Causes builds to fail when different versions of the SDK are used
2024-02-25 14:20:28 -06:00
6ec34653bd
pass --force-evaluate to dotnet restore 2024-02-25 14:18:47 -06:00
64a57790fd
update packages.lock.json
Some checks failed
dotnet build / build (push) Failing after 28s
2024-02-25 14:14:36 -06:00
3e4b46c828
update wasm-tools workload
Some checks failed
dotnet build / build (push) Failing after 26s
2024-02-25 14:12:33 -06:00
6d88e6bbba
fix Dockerfile 2024-02-25 14:03:54 -06:00
02ac7d950e
Merge remote-tracking branch 'origin/main'
Some checks failed
dotnet build / build (push) Failing after 28s
2024-02-25 14:00:43 -06:00
a7e465c998
fix dockerfile 2024-02-25 13:17:53 -06:00
ca06255cc9 update README.md 2024-02-25 00:43:05 -06:00
e66d4cabaa
add dotnet tool manifest
Some checks failed
dotnet build / build (push) Failing after 43s
2024-02-25 00:36:25 -06:00
55 changed files with 1506 additions and 3824 deletions

View file

@ -1,76 +1,18 @@
name: dotnet build
name: build
on:
push:
branches:
- main
paths:
- 'src/**'
- 'tests/**'
- 'targets/**'
- 'package.json'
- 'pnpm-lock.yaml'
- 'tailwind.config.ts'
- 'tsconfig.json'
- '*.props'
- '*.targets'
- dev
jobs:
build:
runs-on: docker
container:
image: nseguin42/forgejo-runner:ubuntu
env:
DOCKER_HOST: tcp://0.0.0.0:2375
steps:
- uses: actions/checkout@v4
- name: install pnpm
run: npm install -g pnpm
- name: get npm cache directory
id: pnpm-cache-dir
shell: bash
run: pnpm config set store-dir .pnpm-store
- uses: actions/cache@v3
id: pnpm-cache
name: restore pnpm cache
with:
path: .pnpm-store
key: ${{ runner.os }}-pnpm-${{ hashFiles('pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-
- name: pnpm install
run: pnpm install --prefer-offline --frozen-lockfile
- uses: actions/cache/save@v3
name: save pnpm cache
if: steps.pnpm-cache.outputs.cache-hit != 'true'
with:
path: .pnpm-store
key: ${{ runner.os }}-pnpm-${{ hashFiles('pnpm-lock.yaml') }}
- uses: actions/cache@v3
id: nuget-cache
name: restore nuget cache
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }}
restore-keys: |
${{ runner.os }}-nuget-
- name: dotnet tool restore
run: dotnet tool restore
if: steps.nuget-cache.outputs.cache-hit != 'true'
- name: dotnet restore
run: dotnet restore -p:Configuration=Release --configfile nuget.config --locked-mode
if: steps.nuget-cache.outputs.cache-hit != 'true'
- name: dotnet workload restore
run: dotnet workload restore
if: steps.nuget-cache.outputs.cache-hit != 'true'
- name: dotnet workload install wasm-tools
run: dotnet workload install wasm-tools
if: steps.nuget-cache.outputs.cache-hit != 'true'
- name: save nuget cache
uses: actions/cache/save@v3
if: steps.nuget-cache.outputs.cache-hit != 'true'
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }}
- name: dotnet build
run: dotnet build --no-restore --configuration Release
- name: dotnet test
run: dotnet test
- name: docker build
run: docker build -t nseguin42/website:${{ github.sha }} .
- name: cleanup old images
run: docker image prune -f --filter "until=24h"

View file

@ -1,11 +1,8 @@
name: deploy
on:
release:
types:
- published
- edited
push:
branches:
- main
jobs:
deploy:
runs-on: docker
@ -18,8 +15,8 @@ jobs:
run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin
- uses: actions/checkout@v4
- name: docker build
run: docker build -t nseguin42/website:latest .
run: if [ -z "$(docker images -q nseguin42/website:${{ github.sha }} 2> /dev/null)" ]; then docker build -t nseguin42/website:${{ github.sha }} .; fi
- name: docker tag
run: docker tag nseguin42/website:latest nseguin42/website:${{ github.sha }}
run: docker tag nseguin42/website:${{ github.sha }} nseguin42/website:latest
- name: docker push
run: docker push nseguin42/website:latest && docker push nseguin42/website:${{ github.sha }}
run: docker push nseguin42/website:latest

881
.gitignore vendored
View file

@ -1,4 +1,4 @@
src/NSeguin.Dev.Web/wwroot/lib/**
src/NSeguin.Dev.Web/wwwroot/lib/
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
@ -490,882 +490,3 @@ $RECYCLE.BIN/
# Vim temporary swap files
*.swp
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/academic-cap.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/academic-cap.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/academic-cap.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/adjustments-horizontal.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/adjustments-horizontal.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/adjustments-horizontal.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/adjustments-vertical.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/adjustments-vertical.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/adjustments-vertical.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/archive-box.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/archive-box.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/archive-box.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/archive-box-arrow-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/archive-box-arrow-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/archive-box-arrow-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/archive-box-x-mark.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/archive-box-x-mark.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/archive-box-x-mark.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/arrow-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/arrow-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/arrow-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/arrow-down-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/arrow-down-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/arrow-down-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/arrow-down-left.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/arrow-down-left.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/arrow-down-left.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/arrow-down-on-square.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/arrow-down-on-square.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/arrow-down-on-square.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/arrow-down-on-square-stack.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/arrow-down-on-square-stack.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/arrow-down-on-square-stack.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/arrow-down-right.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/arrow-down-right.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/arrow-down-right.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/arrow-down-tray.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/arrow-down-tray.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/arrow-down-tray.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/arrow-left.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/arrow-left.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/arrow-left.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/arrow-left-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/arrow-left-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/arrow-left-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/arrow-left-on-rectangle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/arrow-left-on-rectangle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/arrow-left-on-rectangle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/arrow-long-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/arrow-long-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/arrow-long-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/arrow-long-left.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/arrow-long-left.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/arrow-long-left.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/arrow-long-right.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/arrow-long-right.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/arrow-long-right.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/arrow-long-up.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/arrow-long-up.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/arrow-long-up.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/arrow-path.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/arrow-path.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/arrow-path.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/arrow-path-rounded-square.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/arrow-path-rounded-square.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/arrow-path-rounded-square.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/arrow-right.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/arrow-right.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/arrow-right.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/arrow-right-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/arrow-right-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/arrow-right-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/arrow-right-on-rectangle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/arrow-right-on-rectangle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/arrow-right-on-rectangle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/arrow-small-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/arrow-small-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/arrow-small-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/arrow-small-left.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/arrow-small-left.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/arrow-small-left.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/arrow-small-right.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/arrow-small-right.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/arrow-small-right.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/arrow-small-up.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/arrow-small-up.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/arrow-small-up.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/arrow-top-right-on-square.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/arrow-top-right-on-square.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/arrow-top-right-on-square.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/arrow-trending-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/arrow-trending-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/arrow-trending-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/arrow-trending-up.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/arrow-trending-up.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/arrow-trending-up.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/arrow-up.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/arrow-up.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/arrow-up.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/arrow-up-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/arrow-up-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/arrow-up-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/arrow-up-left.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/arrow-up-left.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/arrow-up-left.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/arrow-up-on-square.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/arrow-up-on-square.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/arrow-up-on-square.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/arrow-up-on-square-stack.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/arrow-up-on-square-stack.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/arrow-up-on-square-stack.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/arrow-up-right.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/arrow-up-right.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/arrow-up-right.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/arrow-up-tray.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/arrow-up-tray.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/arrow-up-tray.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/arrow-uturn-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/arrow-uturn-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/arrow-uturn-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/arrow-uturn-left.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/arrow-uturn-left.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/arrow-uturn-left.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/arrow-uturn-right.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/arrow-uturn-right.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/arrow-uturn-right.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/arrow-uturn-up.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/arrow-uturn-up.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/arrow-uturn-up.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/arrows-pointing-in.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/arrows-pointing-in.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/arrows-pointing-in.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/arrows-pointing-out.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/arrows-pointing-out.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/arrows-pointing-out.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/arrows-right-left.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/arrows-right-left.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/arrows-right-left.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/arrows-up-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/arrows-up-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/arrows-up-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/at-symbol.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/at-symbol.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/at-symbol.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/backspace.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/backspace.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/backspace.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/backward.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/backward.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/backward.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/banknotes.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/banknotes.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/banknotes.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/bars-2.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/bars-2.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/bars-2.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/bars-3.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/bars-3.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/bars-3.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/bars-3-bottom-left.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/bars-3-bottom-left.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/bars-3-bottom-left.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/bars-3-bottom-right.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/bars-3-bottom-right.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/bars-3-bottom-right.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/bars-3-center-left.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/bars-3-center-left.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/bars-3-center-left.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/bars-4.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/bars-4.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/bars-4.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/bars-arrow-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/bars-arrow-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/bars-arrow-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/bars-arrow-up.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/bars-arrow-up.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/bars-arrow-up.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/battery-0.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/battery-0.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/battery-0.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/battery-50.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/battery-50.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/battery-50.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/battery-100.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/battery-100.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/battery-100.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/beaker.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/beaker.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/beaker.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/bell.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/bell.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/bell.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/bell-alert.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/bell-alert.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/bell-alert.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/bell-slash.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/bell-slash.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/bell-slash.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/bell-snooze.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/bell-snooze.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/bell-snooze.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/bolt.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/bolt.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/bolt.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/bolt-slash.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/bolt-slash.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/bolt-slash.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/book-open.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/book-open.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/book-open.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/bookmark.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/bookmark.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/bookmark.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/bookmark-slash.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/bookmark-slash.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/bookmark-slash.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/bookmark-square.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/bookmark-square.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/bookmark-square.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/briefcase.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/briefcase.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/briefcase.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/bug-ant.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/bug-ant.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/bug-ant.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/building-library.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/building-library.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/building-library.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/building-office.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/building-office.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/building-office.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/building-office-2.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/building-office-2.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/building-office-2.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/building-storefront.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/building-storefront.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/building-storefront.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/cake.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/cake.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/cake.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/calculator.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/calculator.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/calculator.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/calendar.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/calendar.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/calendar.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/calendar-days.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/calendar-days.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/calendar-days.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/camera.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/camera.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/camera.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/chart-bar.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/chart-bar.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/chart-bar.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/chart-bar-square.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/chart-bar-square.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/chart-bar-square.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/chart-pie.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/chart-pie.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/chart-pie.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/chat-bubble-bottom-center.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/chat-bubble-bottom-center.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/chat-bubble-bottom-center.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/chat-bubble-bottom-center-text.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/chat-bubble-bottom-center-text.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/chat-bubble-bottom-center-text.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/chat-bubble-left.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/chat-bubble-left.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/chat-bubble-left.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/chat-bubble-left-ellipsis.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/chat-bubble-left-ellipsis.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/chat-bubble-left-ellipsis.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/chat-bubble-left-right.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/chat-bubble-left-right.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/chat-bubble-left-right.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/chat-bubble-oval-left.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/chat-bubble-oval-left.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/chat-bubble-oval-left.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/chat-bubble-oval-left-ellipsis.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/chat-bubble-oval-left-ellipsis.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/chat-bubble-oval-left-ellipsis.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/check.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/check.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/check.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/check-badge.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/check-badge.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/check-badge.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/check-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/check-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/check-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/chevron-double-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/chevron-double-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/chevron-double-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/chevron-double-left.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/chevron-double-left.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/chevron-double-left.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/chevron-double-right.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/chevron-double-right.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/chevron-double-right.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/chevron-double-up.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/chevron-double-up.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/chevron-double-up.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/chevron-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/chevron-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/chevron-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/chevron-left.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/chevron-left.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/chevron-left.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/chevron-right.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/chevron-right.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/chevron-right.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/chevron-up.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/chevron-up.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/chevron-up.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/chevron-up-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/chevron-up-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/chevron-up-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/circle-stack.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/circle-stack.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/circle-stack.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/clipboard.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/clipboard.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/clipboard.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/clipboard-document.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/clipboard-document.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/clipboard-document.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/clipboard-document-check.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/clipboard-document-check.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/clipboard-document-check.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/clipboard-document-list.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/clipboard-document-list.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/clipboard-document-list.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/clock.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/clock.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/clock.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/cloud.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/cloud.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/cloud.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/cloud-arrow-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/cloud-arrow-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/cloud-arrow-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/cloud-arrow-up.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/cloud-arrow-up.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/cloud-arrow-up.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/code-bracket.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/code-bracket.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/code-bracket.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/code-bracket-square.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/code-bracket-square.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/code-bracket-square.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/cog.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/cog.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/cog.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/cog-6-tooth.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/cog-6-tooth.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/cog-6-tooth.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/cog-8-tooth.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/cog-8-tooth.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/cog-8-tooth.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/command-line.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/command-line.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/command-line.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/computer-desktop.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/computer-desktop.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/computer-desktop.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/cpu-chip.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/cpu-chip.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/cpu-chip.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/credit-card.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/credit-card.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/credit-card.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/cube.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/cube.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/cube.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/cube-transparent.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/cube-transparent.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/cube-transparent.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/currency-bangladeshi.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/currency-bangladeshi.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/currency-bangladeshi.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/currency-dollar.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/currency-dollar.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/currency-dollar.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/currency-euro.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/currency-euro.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/currency-euro.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/currency-pound.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/currency-pound.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/currency-pound.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/currency-rupee.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/currency-rupee.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/currency-rupee.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/currency-yen.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/currency-yen.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/currency-yen.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/cursor-arrow-rays.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/cursor-arrow-rays.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/cursor-arrow-rays.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/cursor-arrow-ripple.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/cursor-arrow-ripple.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/cursor-arrow-ripple.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/device-phone-mobile.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/device-phone-mobile.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/device-phone-mobile.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/device-tablet.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/device-tablet.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/device-tablet.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/document.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/document.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/document.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/document-arrow-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/document-arrow-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/document-arrow-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/document-arrow-up.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/document-arrow-up.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/document-arrow-up.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/document-chart-bar.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/document-chart-bar.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/document-chart-bar.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/document-check.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/document-check.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/document-check.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/document-duplicate.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/document-duplicate.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/document-duplicate.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/document-magnifying-glass.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/document-magnifying-glass.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/document-magnifying-glass.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/document-minus.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/document-minus.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/document-minus.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/document-plus.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/document-plus.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/document-plus.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/document-text.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/document-text.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/document-text.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/ellipsis-horizontal.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/ellipsis-horizontal.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/ellipsis-horizontal.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/ellipsis-horizontal-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/ellipsis-horizontal-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/ellipsis-horizontal-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/ellipsis-vertical.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/ellipsis-vertical.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/ellipsis-vertical.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/envelope.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/envelope.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/envelope.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/envelope-open.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/envelope-open.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/envelope-open.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/exclamation-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/exclamation-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/exclamation-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/exclamation-triangle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/exclamation-triangle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/exclamation-triangle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/eye.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/eye.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/eye.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/eye-dropper.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/eye-dropper.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/eye-dropper.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/eye-slash.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/eye-slash.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/eye-slash.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/face-frown.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/face-frown.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/face-frown.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/face-smile.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/face-smile.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/face-smile.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/film.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/film.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/film.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/finger-print.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/finger-print.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/finger-print.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/fire.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/fire.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/fire.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/flag.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/flag.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/flag.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/folder.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/folder.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/folder.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/folder-arrow-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/folder-arrow-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/folder-arrow-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/folder-minus.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/folder-minus.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/folder-minus.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/folder-open.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/folder-open.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/folder-open.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/folder-plus.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/folder-plus.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/folder-plus.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/forward.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/forward.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/forward.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/funnel.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/funnel.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/funnel.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/gif.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/gif.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/gif.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/gift.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/gift.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/gift.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/gift-top.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/gift-top.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/gift-top.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/globe-alt.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/globe-alt.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/globe-alt.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/globe-americas.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/globe-americas.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/globe-americas.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/globe-asia-australia.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/globe-asia-australia.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/globe-asia-australia.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/globe-europe-africa.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/globe-europe-africa.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/globe-europe-africa.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/hand-raised.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/hand-raised.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/hand-raised.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/hand-thumb-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/hand-thumb-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/hand-thumb-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/hand-thumb-up.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/hand-thumb-up.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/hand-thumb-up.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/hashtag.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/hashtag.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/hashtag.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/heart.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/heart.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/heart.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/home.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/home.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/home.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/home-modern.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/home-modern.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/home-modern.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/identification.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/identification.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/identification.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/inbox.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/inbox.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/inbox.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/inbox-arrow-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/inbox-arrow-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/inbox-arrow-down.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/inbox-stack.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/inbox-stack.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/inbox-stack.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/information-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/information-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/information-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/key.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/key.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/key.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/language.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/language.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/language.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/LICENSE
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/lifebuoy.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/lifebuoy.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/lifebuoy.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/light-bulb.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/light-bulb.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/light-bulb.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/link.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/link.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/link.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/list-bullet.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/list-bullet.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/list-bullet.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/lock-closed.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/lock-closed.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/lock-closed.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/lock-open.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/lock-open.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/lock-open.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/magnifying-glass.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/magnifying-glass.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/magnifying-glass.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/magnifying-glass-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/magnifying-glass-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/magnifying-glass-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/magnifying-glass-minus.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/magnifying-glass-minus.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/magnifying-glass-minus.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/magnifying-glass-plus.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/magnifying-glass-plus.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/magnifying-glass-plus.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/map.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/map.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/map.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/map-pin.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/map-pin.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/map-pin.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/megaphone.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/megaphone.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/megaphone.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/microphone.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/microphone.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/microphone.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/minus.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/minus.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/minus.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/minus-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/minus-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/minus-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/minus-small.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/minus-small.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/minus-small.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/moon.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/moon.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/moon.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/musical-note.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/musical-note.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/musical-note.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/newspaper.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/newspaper.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/newspaper.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/no-symbol.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/no-symbol.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/no-symbol.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/package.json
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/paint-brush.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/paint-brush.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/paint-brush.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/paper-airplane.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/paper-airplane.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/paper-airplane.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/paper-clip.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/paper-clip.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/paper-clip.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/pause.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/pause.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/pause.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/pause-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/pause-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/pause-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/pencil.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/pencil.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/pencil.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/pencil-square.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/pencil-square.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/pencil-square.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/phone.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/phone.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/phone.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/phone-arrow-down-left.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/phone-arrow-down-left.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/phone-arrow-down-left.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/phone-arrow-up-right.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/phone-arrow-up-right.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/phone-arrow-up-right.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/phone-x-mark.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/phone-x-mark.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/phone-x-mark.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/photo.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/photo.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/photo.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/play.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/play.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/play.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/play-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/play-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/play-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/play-pause.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/play-pause.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/play-pause.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/plus.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/plus.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/plus.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/plus-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/plus-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/plus-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/plus-small.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/plus-small.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/plus-small.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/power.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/power.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/power.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/presentation-chart-bar.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/presentation-chart-bar.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/presentation-chart-bar.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/presentation-chart-line.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/presentation-chart-line.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/presentation-chart-line.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/printer.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/printer.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/printer.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/puzzle-piece.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/puzzle-piece.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/puzzle-piece.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/qr-code.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/qr-code.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/qr-code.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/question-mark-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/question-mark-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/question-mark-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/queue-list.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/queue-list.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/queue-list.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/radio.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/radio.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/radio.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/README.md
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/receipt-percent.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/receipt-percent.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/receipt-percent.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/receipt-refund.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/receipt-refund.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/receipt-refund.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/rectangle-group.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/rectangle-group.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/rectangle-group.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/rectangle-stack.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/rectangle-stack.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/rectangle-stack.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/rocket-launch.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/rocket-launch.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/rocket-launch.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/rss.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/rss.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/rss.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/scale.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/scale.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/scale.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/scissors.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/scissors.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/scissors.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/server.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/server.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/server.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/server-stack.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/server-stack.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/server-stack.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/share.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/share.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/share.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/shield-check.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/shield-check.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/shield-check.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/shield-exclamation.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/shield-exclamation.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/shield-exclamation.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/shopping-bag.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/shopping-bag.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/shopping-bag.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/shopping-cart.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/shopping-cart.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/shopping-cart.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/signal.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/signal.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/signal.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/signal-slash.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/signal-slash.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/signal-slash.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/sparkles.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/sparkles.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/sparkles.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/speaker-wave.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/speaker-wave.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/speaker-wave.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/speaker-x-mark.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/speaker-x-mark.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/speaker-x-mark.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/square-2-stack.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/square-2-stack.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/square-2-stack.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/square-3-stack-3d.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/square-3-stack-3d.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/square-3-stack-3d.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/squares-2x2.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/squares-2x2.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/squares-2x2.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/squares-plus.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/squares-plus.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/squares-plus.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/star.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/star.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/star.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/stop.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/stop.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/stop.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/stop-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/stop-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/stop-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/sun.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/sun.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/sun.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/swatch.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/swatch.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/swatch.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/table-cells.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/table-cells.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/table-cells.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/tag.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/tag.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/tag.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/ticket.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/ticket.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/ticket.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/trash.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/trash.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/trash.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/trophy.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/trophy.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/trophy.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/truck.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/truck.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/truck.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/tv.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/tv.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/tv.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/user.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/user.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/user.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/user-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/user-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/user-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/user-group.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/user-group.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/user-group.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/user-minus.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/user-minus.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/user-minus.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/user-plus.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/user-plus.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/user-plus.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/users.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/users.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/users.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/variable.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/variable.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/variable.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/video-camera.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/video-camera.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/video-camera.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/video-camera-slash.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/video-camera-slash.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/video-camera-slash.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/view-columns.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/view-columns.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/view-columns.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/viewfinder-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/viewfinder-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/viewfinder-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/wallet.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/wallet.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/wallet.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/wifi.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/wifi.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/wifi.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/window.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/window.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/window.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/wrench.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/wrench.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/wrench.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/wrench-screwdriver.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/wrench-screwdriver.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/wrench-screwdriver.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/x-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/x-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/x-circle.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/20/solid/x-mark.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/outline/x-mark.svg
/src/NSeguin.Dev.Web/wwwroot/lib/heroicons/24/solid/x-mark.svg

View file

@ -21,6 +21,7 @@
<PackageVersion Include="Microsoft.Extensions.Configuration.Binder" Version="8.0.1" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.Configuration.AzureAppConfiguration" Version="7.0.0" />
<PackageVersion Include="Microsoft.Extensions.FileProviders.Embedded" Version="8.0.2" />
<PackageVersion Include="Microsoft.Extensions.Http" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.Options" Version="8.0.2" />
<PackageVersion Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="8.0.0" />
@ -29,10 +30,10 @@
<PackageVersion Include="Microsoft.Identity.Web" Version="2.17.0" />
<PackageVersion Include="Microsoft.Identity.Web.UI" Version="2.17.0" />
<PackageVersion Include="Microsoft.Web.LibraryManager.Build" Version="2.1.175" />
<PackageVersion Include="Microsoft.TypeScript.MSBuild" Version="5.3.3"/>
<PackageVersion Include="Microsoft.TypeScript.MSBuild" Version="5.3.3" />
<PackageVersion Include="StyleCop.Analyzers" Version="1.2.0-beta.507" />
<PackageVersion Include="Microsoft.CodeAnalysis.Analyzers" Version="3.3.4"/>
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="4.8.0"/>
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="4.8.0"/>
<PackageVersion Include="Microsoft.CodeAnalysis.Analyzers" Version="3.3.4" />
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="4.8.0" />
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="4.8.0" />
</ItemGroup>
</Project>

View file

@ -1,3 +1,4 @@
#syntax=docker/dockerfile:1
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
RUN apt-get update && apt-get install -y \
@ -16,50 +17,59 @@ RUN apt-get update && apt-get install nodejs -y --no-install-recommends && rm -r
# update npm and install pnpm
RUN npm install -g npm && npm install -g pnpm && npm cache clean --force
WORKDIR /app
# install wasm-tools workload
RUN dotnet workload install wasm-tools
# Copy csproj and restore as distinct layers
COPY *.sln .
COPY src/NSeguin.Dev.Web/*.csproj ./src/NSeguin.Dev.Web/
COPY src/NSeguin.Dev.Web/packages.lock.json ./src/NSeguin.Dev.Web/
COPY src/NSeguin.Dev.Web/libman.json ./src/NSeguin.Dev.Web/
COPY src/NSeguin.Dev.Web.Client/*.csproj ./src/NSeguin.Dev.Web.Client/
COPY src/NSeguin.Dev.Web.Client/packages.lock.json ./src/NSeguin.Dev.Web.Client/
COPY src/NSeguin.Dev.Web.Common/*.csproj ./src/NSeguin.Dev.Web.Common/
COPY src/NSeguin.Dev.Web.Common/packages.lock.json ./src/NSeguin.Dev.Web.Common/
COPY targets/*.targets ./targets/
COPY targets/*.props ./targets/
COPY Directory.Build.props .
COPY Directory.Build.targets .
COPY Directory.Packages.props .
COPY nuget.config ./
COPY pnpm-lock.yaml ./
COPY tailwind.config.ts ./
COPY package.json ./
COPY global.json ./
RUN dotnet tool restore
RUN dotnet restore --configfile nuget.config --locked-mode
# Copy everything else and build
COPY . ./
RUN dotnet publish ./src/NSeguin.Dev.Web/NSeguin.Dev.Web.csproj -c Release -o out /p:RestoreLockedMode=true
# Build runtime image
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtime
WORKDIR /app
COPY --from=build /app/out ./
# install dotnet tools
COPY --link .config/dotnet-tools.json .config/
RUN dotnet tool restore
# restore libman dependencies
COPY --link src/NSeguin.Dev.Web/libman.json ./src/NSeguin.Dev.Web/
RUN cd src/NSeguin.Dev.Web && dotnet libman restore
# copy and restore dotnet solution
COPY --link *.sln .
COPY --link global.json ./
COPY --link nuget.config ./
COPY --link targets/*.targets ./targets/
COPY --link targets/*.props ./targets/
COPY --link Directory.Build.props .
COPY --link Directory.Build.targets .
COPY --link Directory.Packages.props .
COPY --link src/NSeguin.Dev.Web/*.csproj ./src/NSeguin.Dev.Web/
COPY --link src/NSeguin.Dev.Web.Client/*.csproj ./src/NSeguin.Dev.Web.Client/
COPY --link src/NSeguin.Dev.Web.Common/*.csproj ./src/NSeguin.Dev.Web.Common/
COPY --link src/NSeguin.Dev.Web.HeroIcons.SourceGenerator/*.csproj ./src/NSeguin.Dev.Web.HeroIcons.SourceGenerator/
COPY --link src/NSeguin.Dev.Web/package.json ./src/NSeguin.Dev.Web/
COPY --link src/NSeguin.Dev.Web/pnpm-lock.yaml ./src/NSeguin.Dev.Web/
COPY --link src/NSeguin.Dev.Web/tailwind.config.ts ./src/NSeguin.Dev.Web/
RUN cd src/NSeguin.Dev.Web && pnpm install --frozen-lockfile
RUN dotnet restore --configfile nuget.config --locked-mode --force-evaluate
# copy everything else and build solution
COPY --link ./ .
ENV NODE_ENV=production
ENV CI=true
ENV SkipNodeBuild=true
RUN cd src/NSeguin.Dev.Web && pnpm run css:build
RUN dotnet publish -c Release -o publish /p:RestoreLockedMode=true src/NSeguin.Dev.Web/NSeguin.Dev.Web.csproj
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtime
# authenticate with Azure CLI
RUN curl -sL https://aka.ms/InstallAzureCLIDeb | bash
WORKDIR /app
COPY --from=build /app/publish .
ENTRYPOINT ["dotnet", "NSeguin.Dev.Web.dll"]

View file

@ -11,7 +11,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NSeguin.Dev.Web", "src\NSeg
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NSeguin.Dev.Web.Common", "src\NSeguin.Dev.Web.Common\NSeguin.Dev.Web.Common.csproj", "{EC472D1C-8319-4454-BE67-66DDB70C2512}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NSeguin.Dev.Web.HeroIconSourceGenerator", "src\NSeguin.Dev.Web.HeroIconSourceGenerator\NSeguin.Dev.Web.HeroIconSourceGenerator.csproj", "{8F18495F-F6A0-4144-B29F-055E03032A60}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NSeguin.Dev.Web.HeroIcons.SourceGenerator", "src\NSeguin.Dev.Web.HeroIcons.SourceGenerator\NSeguin.Dev.Web.HeroIcons.SourceGenerator.csproj", "{8F18495F-F6A0-4144-B29F-055E03032A60}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution

View file

@ -1,3 +1,5 @@
# NSeguin.Dev.Web
WIP
![release](https://git.nseguin.dev/nseguin/website/badges/release.svg)

View file

@ -1,4 +1,3 @@
version: '3.8'
services:
web:
image: nseguin42/website:latest

View file

View file

@ -1,20 +0,0 @@
{
"name": "nseguin.dev.web",
"module": "index.ts",
"type": "module",
"devDependencies": {
"bun-types": "latest",
"tailwindcss": "^3.3.6 "
},
"peerDependencies": {
"typescript": "^5.0.0"
},
"scripts": {
"css:build": "pnpm tailwindcss -i ./src/NSeguin.Dev.Web/wwwroot/css/site.css -o ./src/NSeguin.Dev.Web/wwwroot/css/styles.css -c ./tailwind.config.ts --minify",
"css:watch": "pnpm tailwindcss -i ./src/NSeguin.Dev.Web/wwwroot/css/site.css -o ./src/NSeguin.Dev.Web/wwwroot/css/styles.css -c ./tailwind.config.ts --watch"
},
"dependencies": {
"heroicons": "^2.0.18",
"tailwind-nord": "^1.3.0"
}
}

View file

@ -1,595 +0,0 @@
lockfileVersion: '6.0'
settings:
autoInstallPeers: true
excludeLinksFromLockfile: false
dependencies:
heroicons:
specifier: ^2.0.18
version: 2.0.18
tailwind-nord:
specifier: ^1.3.0
version: 1.3.0
typescript:
specifier: ^5.0.0
version: 5.3.3
devDependencies:
bun-types:
specifier: latest
version: 1.0.15
tailwindcss:
specifier: '^3.3.6 '
version: 3.3.6
packages:
/@alloc/quick-lru@5.2.0:
resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
engines: {node: '>=10'}
dev: true
/@jridgewell/gen-mapping@0.3.3:
resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==}
engines: {node: '>=6.0.0'}
dependencies:
'@jridgewell/set-array': 1.1.2
'@jridgewell/sourcemap-codec': 1.4.15
'@jridgewell/trace-mapping': 0.3.20
dev: true
/@jridgewell/resolve-uri@3.1.1:
resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==}
engines: {node: '>=6.0.0'}
dev: true
/@jridgewell/set-array@1.1.2:
resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==}
engines: {node: '>=6.0.0'}
dev: true
/@jridgewell/sourcemap-codec@1.4.15:
resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
dev: true
/@jridgewell/trace-mapping@0.3.20:
resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==}
dependencies:
'@jridgewell/resolve-uri': 3.1.1
'@jridgewell/sourcemap-codec': 1.4.15
dev: true
/@nodelib/fs.scandir@2.1.5:
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
engines: {node: '>= 8'}
dependencies:
'@nodelib/fs.stat': 2.0.5
run-parallel: 1.2.0
dev: true
/@nodelib/fs.stat@2.0.5:
resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
engines: {node: '>= 8'}
dev: true
/@nodelib/fs.walk@1.2.8:
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
engines: {node: '>= 8'}
dependencies:
'@nodelib/fs.scandir': 2.1.5
fastq: 1.15.0
dev: true
/any-promise@1.3.0:
resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
dev: true
/anymatch@3.1.3:
resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
engines: {node: '>= 8'}
dependencies:
normalize-path: 3.0.0
picomatch: 2.3.1
dev: true
/arg@5.0.2:
resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
dev: true
/balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
dev: true
/binary-extensions@2.2.0:
resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
engines: {node: '>=8'}
dev: true
/brace-expansion@1.1.11:
resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
dependencies:
balanced-match: 1.0.2
concat-map: 0.0.1
dev: true
/braces@3.0.2:
resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
engines: {node: '>=8'}
dependencies:
fill-range: 7.0.1
dev: true
/bun-types@1.0.15:
resolution: {integrity: sha512-XkEvWLV1JIhcVIpf2Lu6FXnZUxRUkQVJmgY+VT7os6Tk5X1nkXx11q4Rtu6txsqpDJZfUeZXblnnD59K+6wsVA==}
dev: true
/camelcase-css@2.0.1:
resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
engines: {node: '>= 6'}
dev: true
/chokidar@3.5.3:
resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
engines: {node: '>= 8.10.0'}
dependencies:
anymatch: 3.1.3
braces: 3.0.2
glob-parent: 5.1.2
is-binary-path: 2.1.0
is-glob: 4.0.3
normalize-path: 3.0.0
readdirp: 3.6.0
optionalDependencies:
fsevents: 2.3.3
dev: true
/commander@4.1.1:
resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
engines: {node: '>= 6'}
dev: true
/concat-map@0.0.1:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
dev: true
/cssesc@3.0.0:
resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
engines: {node: '>=4'}
hasBin: true
dev: true
/didyoumean@1.2.2:
resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
dev: true
/dlv@1.1.3:
resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
dev: true
/fast-glob@3.3.2:
resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
engines: {node: '>=8.6.0'}
dependencies:
'@nodelib/fs.stat': 2.0.5
'@nodelib/fs.walk': 1.2.8
glob-parent: 5.1.2
merge2: 1.4.1
micromatch: 4.0.5
dev: true
/fastq@1.15.0:
resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==}
dependencies:
reusify: 1.0.4
dev: true
/fill-range@7.0.1:
resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
engines: {node: '>=8'}
dependencies:
to-regex-range: 5.0.1
dev: true
/fs.realpath@1.0.0:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
dev: true
/fsevents@2.3.3:
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
os: [darwin]
requiresBuild: true
dev: true
optional: true
/function-bind@1.1.2:
resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
dev: true
/glob-parent@5.1.2:
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
engines: {node: '>= 6'}
dependencies:
is-glob: 4.0.3
dev: true
/glob-parent@6.0.2:
resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
engines: {node: '>=10.13.0'}
dependencies:
is-glob: 4.0.3
dev: true
/glob@7.1.6:
resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==}
dependencies:
fs.realpath: 1.0.0
inflight: 1.0.6
inherits: 2.0.4
minimatch: 3.1.2
once: 1.4.0
path-is-absolute: 1.0.1
dev: true
/hasown@2.0.0:
resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==}
engines: {node: '>= 0.4'}
dependencies:
function-bind: 1.1.2
dev: true
/heroicons@2.0.18:
resolution: {integrity: sha512-3iaqznaz5GJ8Mox/eDfKHo7tYKuPiZV4vbg6pB6wjJhBa7ZKQlXT1KuUnsjkEiPy/ezyiqppOX6wUqYguMIq8w==}
dev: false
/inflight@1.0.6:
resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
dependencies:
once: 1.4.0
wrappy: 1.0.2
dev: true
/inherits@2.0.4:
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
dev: true
/is-binary-path@2.1.0:
resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
engines: {node: '>=8'}
dependencies:
binary-extensions: 2.2.0
dev: true
/is-core-module@2.13.1:
resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==}
dependencies:
hasown: 2.0.0
dev: true
/is-extglob@2.1.1:
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
engines: {node: '>=0.10.0'}
dev: true
/is-glob@4.0.3:
resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
engines: {node: '>=0.10.0'}
dependencies:
is-extglob: 2.1.1
dev: true
/is-number@7.0.0:
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
engines: {node: '>=0.12.0'}
dev: true
/jiti@1.21.0:
resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==}
hasBin: true
dev: true
/lilconfig@2.1.0:
resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
engines: {node: '>=10'}
dev: true
/lilconfig@3.0.0:
resolution: {integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==}
engines: {node: '>=14'}
dev: true
/lines-and-columns@1.2.4:
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
dev: true
/merge2@1.4.1:
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
engines: {node: '>= 8'}
dev: true
/micromatch@4.0.5:
resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
engines: {node: '>=8.6'}
dependencies:
braces: 3.0.2
picomatch: 2.3.1
dev: true
/minimatch@3.1.2:
resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
dependencies:
brace-expansion: 1.1.11
dev: true
/mz@2.7.0:
resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
dependencies:
any-promise: 1.3.0
object-assign: 4.1.1
thenify-all: 1.6.0
dev: true
/nanoid@3.3.7:
resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
dev: true
/normalize-path@3.0.0:
resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
engines: {node: '>=0.10.0'}
dev: true
/object-assign@4.1.1:
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
engines: {node: '>=0.10.0'}
dev: true
/object-hash@3.0.0:
resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
engines: {node: '>= 6'}
dev: true
/once@1.4.0:
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
dependencies:
wrappy: 1.0.2
dev: true
/path-is-absolute@1.0.1:
resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
engines: {node: '>=0.10.0'}
dev: true
/path-parse@1.0.7:
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
dev: true
/picocolors@1.0.0:
resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
dev: true
/picomatch@2.3.1:
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
engines: {node: '>=8.6'}
dev: true
/pify@2.3.0:
resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
engines: {node: '>=0.10.0'}
dev: true
/pirates@4.0.6:
resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
engines: {node: '>= 6'}
dev: true
/postcss-import@15.1.0(postcss@8.4.32):
resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
engines: {node: '>=14.0.0'}
peerDependencies:
postcss: ^8.0.0
dependencies:
postcss: 8.4.32
postcss-value-parser: 4.2.0
read-cache: 1.0.0
resolve: 1.22.8
dev: true
/postcss-js@4.0.1(postcss@8.4.32):
resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
engines: {node: ^12 || ^14 || >= 16}
peerDependencies:
postcss: ^8.4.21
dependencies:
camelcase-css: 2.0.1
postcss: 8.4.32
dev: true
/postcss-load-config@4.0.2(postcss@8.4.32):
resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==}
engines: {node: '>= 14'}
peerDependencies:
postcss: '>=8.0.9'
ts-node: '>=9.0.0'
peerDependenciesMeta:
postcss:
optional: true
ts-node:
optional: true
dependencies:
lilconfig: 3.0.0
postcss: 8.4.32
yaml: 2.3.4
dev: true
/postcss-nested@6.0.1(postcss@8.4.32):
resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==}
engines: {node: '>=12.0'}
peerDependencies:
postcss: ^8.2.14
dependencies:
postcss: 8.4.32
postcss-selector-parser: 6.0.13
dev: true
/postcss-selector-parser@6.0.13:
resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==}
engines: {node: '>=4'}
dependencies:
cssesc: 3.0.0
util-deprecate: 1.0.2
dev: true
/postcss-value-parser@4.2.0:
resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
dev: true
/postcss@8.4.32:
resolution: {integrity: sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==}
engines: {node: ^10 || ^12 || >=14}
dependencies:
nanoid: 3.3.7
picocolors: 1.0.0
source-map-js: 1.0.2
dev: true
/queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
dev: true
/read-cache@1.0.0:
resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
dependencies:
pify: 2.3.0
dev: true
/readdirp@3.6.0:
resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
engines: {node: '>=8.10.0'}
dependencies:
picomatch: 2.3.1
dev: true
/resolve@1.22.8:
resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
hasBin: true
dependencies:
is-core-module: 2.13.1
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
dev: true
/reusify@1.0.4:
resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
dev: true
/run-parallel@1.2.0:
resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
dependencies:
queue-microtask: 1.2.3
dev: true
/source-map-js@1.0.2:
resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
engines: {node: '>=0.10.0'}
dev: true
/sucrase@3.34.0:
resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==}
engines: {node: '>=8'}
hasBin: true
dependencies:
'@jridgewell/gen-mapping': 0.3.3
commander: 4.1.1
glob: 7.1.6
lines-and-columns: 1.2.4
mz: 2.7.0
pirates: 4.0.6
ts-interface-checker: 0.1.13
dev: true
/supports-preserve-symlinks-flag@1.0.0:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
dev: true
/tailwind-nord@1.3.0:
resolution: {integrity: sha512-F5tdTG3n9zzctAuRqjX2sdpmwSjbYC/HQdXSg/TQIxaynO1DNvnqBaE+IhmPbQIttMvvY54KiYMDXJqMdQLi1Q==}
dev: false
/tailwindcss@3.3.6:
resolution: {integrity: sha512-AKjF7qbbLvLaPieoKeTjG1+FyNZT6KaJMJPFeQyLfIp7l82ggH1fbHJSsYIvnbTFQOlkh+gBYpyby5GT1LIdLw==}
engines: {node: '>=14.0.0'}
hasBin: true
dependencies:
'@alloc/quick-lru': 5.2.0
arg: 5.0.2
chokidar: 3.5.3
didyoumean: 1.2.2
dlv: 1.1.3
fast-glob: 3.3.2
glob-parent: 6.0.2
is-glob: 4.0.3
jiti: 1.21.0
lilconfig: 2.1.0
micromatch: 4.0.5
normalize-path: 3.0.0
object-hash: 3.0.0
picocolors: 1.0.0
postcss: 8.4.32
postcss-import: 15.1.0(postcss@8.4.32)
postcss-js: 4.0.1(postcss@8.4.32)
postcss-load-config: 4.0.2(postcss@8.4.32)
postcss-nested: 6.0.1(postcss@8.4.32)
postcss-selector-parser: 6.0.13
resolve: 1.22.8
sucrase: 3.34.0
transitivePeerDependencies:
- ts-node
dev: true
/thenify-all@1.6.0:
resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
engines: {node: '>=0.8'}
dependencies:
thenify: 3.3.1
dev: true
/thenify@3.3.1:
resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
dependencies:
any-promise: 1.3.0
dev: true
/to-regex-range@5.0.1:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
dependencies:
is-number: 7.0.0
dev: true
/ts-interface-checker@0.1.13:
resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
dev: true
/typescript@5.3.3:
resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==}
engines: {node: '>=14.17'}
hasBin: true
dev: false
/util-deprecate@1.0.2:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
dev: true
/wrappy@1.0.2:
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
dev: true
/yaml@2.3.4:
resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==}
engines: {node: '>= 14'}
dev: true

View file

@ -0,0 +1,12 @@
{
"version": 1,
"isRoot": true,
"tools": {
"microsoft.web.librarymanager.cli": {
"version": "2.1.175",
"commands": [
"libman"
]
}
}
}

View file

@ -17,20 +17,4 @@
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer"/>
<PackageReference Include="Microsoft.Extensions.Http"/>
</ItemGroup>
<ItemGroup>
<_ContentIncludedByDefault Remove="wwwroot\css\app.css"/>
<_ContentIncludedByDefault Remove="wwwroot\css\bootstrap\bootstrap.min.css"/>
<_ContentIncludedByDefault Remove="wwwroot\css\bootstrap\bootstrap.min.css.map"/>
<_ContentIncludedByDefault Remove="Components\Shared\CascadingDarkMode.razor"/>
<_ContentIncludedByDefault Remove="Components\Shared\DarkModeSwitcher.razor"/>
</ItemGroup>
<ItemGroup>
<Content Update="packages.lock.json">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
<CopyToPublishDirectory>Never</CopyToPublishDirectory>
</Content>
</ItemGroup>
</Project>

View file

@ -1,365 +0,0 @@
{
"version": 2,
"dependencies": {
"net8.0": {
"Microsoft.AspNetCore.Components.WebAssembly": {
"type": "Direct",
"requested": "[8.0.2, )",
"resolved": "8.0.2",
"contentHash": "sRcIKOItL1PUmPkUz6EO07b77wWD4gyyhX7gK7JQ/bgk7HSBT7HRmfsOB/U6x/9V6IZpe5laG2G19Nfccl6lkw==",
"dependencies": {
"Microsoft.AspNetCore.Components.Web": "8.0.2",
"Microsoft.Extensions.Configuration.Binder": "8.0.1",
"Microsoft.Extensions.Configuration.Json": "8.0.0",
"Microsoft.Extensions.Logging": "8.0.0",
"Microsoft.JSInterop.WebAssembly": "8.0.2"
}
},
"Microsoft.AspNetCore.Components.WebAssembly.DevServer": {
"type": "Direct",
"requested": "[8.0.2, )",
"resolved": "8.0.2",
"contentHash": "upzF6ckTFwTzTIh4PJ/wS5uOg4tk/OM7x1gvY/xkCBR1agDeZK7ObAcvv+h4Bs8B528H0ToTXUpeLipNPEbIrA=="
},
"Microsoft.Extensions.Http": {
"type": "Direct",
"requested": "[8.0.0, )",
"resolved": "8.0.0",
"contentHash": "cWz4caHwvx0emoYe7NkHPxII/KkTI8R/LC9qdqJqnKv2poTJ4e2qqPGQqvRoQ5kaSA4FU5IV3qFAuLuOhoqULQ==",
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Diagnostics": "8.0.0",
"Microsoft.Extensions.Logging": "8.0.0",
"Microsoft.Extensions.Logging.Abstractions": "8.0.0",
"Microsoft.Extensions.Options": "8.0.0"
}
},
"Microsoft.NET.ILLink.Tasks": {
"type": "Direct",
"requested": "[8.0.1, )",
"resolved": "8.0.1",
"contentHash": "ADdJXuKNjwZDfBmybMnpvwd5CK3gp92WkWqqeQhW4W+q4MO3Qaa9QyW2DcFLAvCDMcCWxT5hRXqGdv13oon7nA=="
},
"Microsoft.NET.Sdk.WebAssembly.Pack": {
"type": "Direct",
"requested": "[8.0.1, )",
"resolved": "8.0.1",
"contentHash": "WE5sCiA6FbpmHBA7SeIApjBhBFfHQlWTqn5N5jCTncpSHFchjsc6hyXhPjS0PqIV8eiWayNmJpN+VmV1nHFVAw=="
},
"StyleCop.Analyzers": {
"type": "Direct",
"requested": "[1.2.0-beta.507, )",
"resolved": "1.2.0-beta.507",
"contentHash": "/FtugDT66cKJJ+GGH7rNpG6UDrT4iIWz45M6lrXXHobDUFDHw+q5VgkbiR+6ffTO564ge7w6fQh/eoQhVdJO8Q==",
"dependencies": {
"StyleCop.Analyzers.Unstable": "1.2.0.507"
}
},
"Microsoft.AspNetCore.Authorization": {
"type": "Transitive",
"resolved": "8.0.2",
"contentHash": "Z4fjwzXxsdk3GpNBd1SjltifmxWD0jpS3iWCxCjeXQecoQ1+1Nbgbv1ZTbQw2uDVbuEwpfz5cTmRgocG3HBNAA==",
"dependencies": {
"Microsoft.AspNetCore.Metadata": "8.0.2",
"Microsoft.Extensions.Logging.Abstractions": "8.0.0",
"Microsoft.Extensions.Options": "8.0.2"
}
},
"Microsoft.AspNetCore.Components": {
"type": "Transitive",
"resolved": "8.0.2",
"contentHash": "ZDqYhmsnBrMMEyFC8fDHuwXz7MTpWzqegEr2+4gImKc0Zgbo7iaIiN0FAw5Lg5dovTrTvbZnPetRYTve2ca6rg==",
"dependencies": {
"Microsoft.AspNetCore.Authorization": "8.0.2",
"Microsoft.AspNetCore.Components.Analyzers": "8.0.2"
}
},
"Microsoft.AspNetCore.Components.Analyzers": {
"type": "Transitive",
"resolved": "8.0.2",
"contentHash": "wN8FAgVCiWGv0n2pUShnugPVlJxuTjLS+V7D/OsUxNaMPyoyhmVwp11+WrOCEWJ5sif5/WqTCJcVmUyi3aT/ZA=="
},
"Microsoft.AspNetCore.Components.Forms": {
"type": "Transitive",
"resolved": "8.0.2",
"contentHash": "EIlY3Mx1N+Ag2kT5DVsxAZ9b2nKt91iutGkMWlkU293sYbEQV+JpmeHKOee4JYFdk0gjDK5XrSdKzokxQ8nmxw==",
"dependencies": {
"Microsoft.AspNetCore.Components": "8.0.2"
}
},
"Microsoft.AspNetCore.Components.Web": {
"type": "Transitive",
"resolved": "8.0.2",
"contentHash": "VRgjn/vAvrPEXTroe2ulzGXNwqp2imiAeEmrtAmEK8tUC7h2WLFciHithpeo2t2nbA7uuC4bAi+4tdbBEvzDQQ==",
"dependencies": {
"Microsoft.AspNetCore.Components": "8.0.2",
"Microsoft.AspNetCore.Components.Forms": "8.0.2",
"Microsoft.Extensions.DependencyInjection": "8.0.0",
"Microsoft.Extensions.Primitives": "8.0.0",
"Microsoft.JSInterop": "8.0.2",
"System.IO.Pipelines": "8.0.0"
}
},
"Microsoft.AspNetCore.Metadata": {
"type": "Transitive",
"resolved": "8.0.2",
"contentHash": "1m54fAfHzui+0twvU6VtUApM+aUaBR3G3YZNWxGH+c62hOFkZQX/Tm5FzptADUcr8wCPvIaRPbGx77upepk7rw=="
},
"Microsoft.Extensions.Configuration.Abstractions": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "3lE/iLSutpgX1CC0NOW70FJoGARRHbyKmG7dc0klnUZ9Dd9hS6N/POPWhKhMLCEuNN5nXEY5agmlFtH562vqhQ==",
"dependencies": {
"Microsoft.Extensions.Primitives": "8.0.0"
}
},
"Microsoft.Extensions.Configuration.FileExtensions": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "McP+Lz/EKwvtCv48z0YImw+L1gi1gy5rHhNaNIY2CrjloV+XY8gydT8DjMR6zWeL13AFK+DioVpppwAuO1Gi1w==",
"dependencies": {
"Microsoft.Extensions.Configuration": "8.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.FileProviders.Abstractions": "8.0.0",
"Microsoft.Extensions.FileProviders.Physical": "8.0.0",
"Microsoft.Extensions.Primitives": "8.0.0"
}
},
"Microsoft.Extensions.Configuration.Json": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "C2wqUoh9OmRL1akaCcKSTmRU8z0kckfImG7zLNI8uyi47Lp+zd5LWAD17waPQEqCz3ioWOCrFUo+JJuoeZLOBw==",
"dependencies": {
"Microsoft.Extensions.Configuration": "8.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.Configuration.FileExtensions": "8.0.0",
"Microsoft.Extensions.FileProviders.Abstractions": "8.0.0",
"System.Text.Json": "8.0.0"
}
},
"Microsoft.Extensions.DependencyInjection": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "V8S3bsm50ig6JSyrbcJJ8bW2b9QLGouz+G1miK3UTaOWmMtFwNNNzUf4AleyDWUmTrWMLNnFSLEQtxmxgNQnNQ==",
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0"
}
},
"Microsoft.Extensions.Diagnostics": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "3PZp/YSkIXrF7QK7PfC1bkyRYwqOHpWFad8Qx+4wkuumAeXo1NHaxpS9LboNA9OvNSAu+QOVlXbMyoY+pHSqcw==",
"dependencies": {
"Microsoft.Extensions.Configuration": "8.0.0",
"Microsoft.Extensions.Diagnostics.Abstractions": "8.0.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0"
}
},
"Microsoft.Extensions.Diagnostics.Abstractions": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "JHYCQG7HmugNYUhOl368g+NMxYE/N/AiclCYRNlgCY9eVyiBkOHMwK4x60RYMxv9EL3+rmj1mqHvdCiPpC+D4Q==",
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Options": "8.0.0",
"System.Diagnostics.DiagnosticSource": "8.0.0"
}
},
"Microsoft.Extensions.FileProviders.Abstractions": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "ZbaMlhJlpisjuWbvXr4LdAst/1XxH3vZ6A0BsgTphZ2L4PGuxRLz7Jr/S7mkAAnOn78Vu0fKhEgNF5JO3zfjqQ==",
"dependencies": {
"Microsoft.Extensions.Primitives": "8.0.0"
}
},
"Microsoft.Extensions.FileProviders.Physical": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "UboiXxpPUpwulHvIAVE36Knq0VSHaAmfrFkegLyBZeaADuKezJ/AIXYAW8F5GBlGk/VaibN2k/Zn1ca8YAfVdA==",
"dependencies": {
"Microsoft.Extensions.FileProviders.Abstractions": "8.0.0",
"Microsoft.Extensions.FileSystemGlobbing": "8.0.0",
"Microsoft.Extensions.Primitives": "8.0.0"
}
},
"Microsoft.Extensions.FileSystemGlobbing": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "OK+670i7esqlQrPjdIKRbsyMCe9g5kSLpRRQGSr4Q58AOYEe/hCnfLZprh7viNisSUUQZmMrbbuDaIrP+V1ebQ=="
},
"Microsoft.Extensions.Logging": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "tvRkov9tAJ3xP51LCv3FJ2zINmv1P8Hi8lhhtcKGqM+ImiTCC84uOPEI4z8Cdq2C3o9e+Aa0Gw0rmrsJD77W+w==",
"dependencies": {
"Microsoft.Extensions.DependencyInjection": "8.0.0",
"Microsoft.Extensions.Logging.Abstractions": "8.0.0",
"Microsoft.Extensions.Options": "8.0.0"
}
},
"Microsoft.Extensions.Logging.Abstractions": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "arDBqTgFCyS0EvRV7O3MZturChstm50OJ0y9bDJvAcmEPJm0FFpFyjU/JLYyStNGGey081DvnQYlncNX5SJJGA==",
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0"
}
},
"Microsoft.Extensions.Primitives": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "bXJEZrW9ny8vjMF1JV253WeLhpEVzFo1lyaZu1vQ4ZxWUlVvknZ/+ftFgVheLubb4eZPSwwxBeqS1JkCOjxd8g=="
},
"Microsoft.JSInterop": {
"type": "Transitive",
"resolved": "8.0.2",
"contentHash": "gpzpEohjQMMYlZAqP/haXj2TeQv6p/WrVhtQCearXCz00Gr/gyFA8QlXLqVZW2XKxdQ/3eAtKKtiBFGJg39OiA=="
},
"Microsoft.JSInterop.WebAssembly": {
"type": "Transitive",
"resolved": "8.0.2",
"contentHash": "WXUfnWayu7oT1Wq1/k7yZCJvZXs9SwZZPoQtF/RUl5W8URMa+obK2DTzEaWGQF9x3F92YWdYs78mT7KR23kY3g==",
"dependencies": {
"Microsoft.JSInterop": "8.0.2"
}
},
"StyleCop.Analyzers.Unstable": {
"type": "Transitive",
"resolved": "1.2.0.507",
"contentHash": "gTY3IQdRqDJ4hbhSA3e/R48oE8b/OiKfvwkt1QdNVfrJK2gMHBV8ldaHJ885jxWZfllK66soa/sdcjh9bX49Tw=="
},
"System.Diagnostics.DiagnosticSource": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "c9xLpVz6PL9lp/djOWtk5KPDZq3cSYpmXoJQY524EOtuFl5z9ZtsotpsyrDW40U1DRnQSYvcPKEUV0X//u6gkQ=="
},
"System.IO.Pipelines": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "FHNOatmUq0sqJOkTx+UF/9YK1f180cnW5FVqnQMvYUN0elp6wFzbtPSiqbo1/ru8ICp43JM1i7kKkk6GsNGHlA=="
},
"System.Text.Encodings.Web": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ=="
},
"System.Text.Json": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "OdrZO2WjkiEG6ajEFRABTRCi/wuXQPxeV6g8xvUJqdxMvvuCCEk86zPla8UiIQJz3durtUEbNyY/3lIhS0yZvQ==",
"dependencies": {
"System.Text.Encodings.Web": "8.0.0"
}
},
"nseguin.dev.web.common": {
"type": "Project",
"dependencies": {
"Blazored.LocalStorage": "[4.5.0, )",
"CommunityToolkit.Common": "[8.2.2, )",
"CommunityToolkit.Mvvm": "[8.2.2, )",
"JetBrains.Annotations": "[2023.3.0, )",
"Microsoft.Extensions.Configuration": "[8.0.0, )",
"Microsoft.Extensions.Configuration.Binder": "[8.0.1, )",
"Microsoft.Extensions.DependencyInjection.Abstractions": "[8.0.0, )",
"Microsoft.Extensions.Options": "[8.0.2, )",
"Microsoft.Extensions.Options.ConfigurationExtensions": "[8.0.0, )",
"Microsoft.Extensions.Options.DataAnnotations": "[8.0.0, )"
}
},
"Blazored.LocalStorage": {
"type": "CentralTransitive",
"requested": "[4.5.0, )",
"resolved": "4.5.0",
"contentHash": "6nZuJwA7zNIKx83IsObiHXZb09ponJOpCClU3en+hI8ZFvrOKXeOw+H7TegQZQrvdR1n9fkrVkEBQZg8vx6ZTw==",
"dependencies": {
"Microsoft.AspNetCore.Components.Web": "8.0.0"
}
},
"CommunityToolkit.Common": {
"type": "CentralTransitive",
"requested": "[8.2.2, )",
"resolved": "8.2.2",
"contentHash": "8/enuV1R68d0hK66UO8/HQ3yEsMjxUqondiEXlA499XB3tYgIqhCM+ITe8fHfH3l4JN3gY6h21SvkJnxfaG3NQ=="
},
"CommunityToolkit.Mvvm": {
"type": "CentralTransitive",
"requested": "[8.2.2, )",
"resolved": "8.2.2",
"contentHash": "r0g0k9tGYdrnz8R7T3x5UiokDffeevzK/2P/9SBL6fqLgN8B157MIi/bVUWI1KAz6ZorZrK9AdABCWUeXZZsvA=="
},
"JetBrains.Annotations": {
"type": "CentralTransitive",
"requested": "[2023.3.0, )",
"resolved": "2023.3.0",
"contentHash": "PHfnvdBUdGaTVG9bR/GEfxgTwWM0Z97Y6X3710wiljELBISipSfF5okn/vz+C2gfO+ihoEyVPjaJwn8ZalVukA=="
},
"Microsoft.Extensions.Configuration": {
"type": "CentralTransitive",
"requested": "[8.0.0, )",
"resolved": "8.0.0",
"contentHash": "0J/9YNXTMWSZP2p2+nvl8p71zpSwokZXZuJW+VjdErkegAnFdO1XlqtA62SJtgVYHdKu3uPxJHcMR/r35HwFBA==",
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.Primitives": "8.0.0"
}
},
"Microsoft.Extensions.Configuration.Binder": {
"type": "CentralTransitive",
"requested": "[8.0.1, )",
"resolved": "8.0.1",
"contentHash": "2UKFJnLiBt7Od6nCnTqP9rTIUNhzmn9Hv1l2FchyKbz8xieB9ULwZTbQZMw+M24Qw3F5dzzH1U9PPleN0LNLOQ==",
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0"
}
},
"Microsoft.Extensions.DependencyInjection.Abstractions": {
"type": "CentralTransitive",
"requested": "[8.0.0, )",
"resolved": "8.0.0",
"contentHash": "cjWrLkJXK0rs4zofsK4bSdg+jhDLTaxrkXu4gS6Y7MAlCvRyNNgwY/lJi5RDlQOnSZweHqoyvgvbdvQsRIW+hg=="
},
"Microsoft.Extensions.Options": {
"type": "CentralTransitive",
"requested": "[8.0.2, )",
"resolved": "8.0.2",
"contentHash": "dWGKvhFybsaZpGmzkGCbNNwBD1rVlWzrZKANLW/CcbFJpCEceMCGzT7zZwHOGBCbwM0SzBuceMj5HN1LKV1QqA==",
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Primitives": "8.0.0"
}
},
"Microsoft.Extensions.Options.ConfigurationExtensions": {
"type": "CentralTransitive",
"requested": "[8.0.0, )",
"resolved": "8.0.0",
"contentHash": "0f4DMRqEd50zQh+UyJc+/HiBsZ3vhAQALgdkcQEalSH1L2isdC7Yj54M3cyo5e+BeO5fcBQ7Dxly8XiBBcvRgw==",
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.Configuration.Binder": "8.0.0",
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Options": "8.0.0",
"Microsoft.Extensions.Primitives": "8.0.0"
}
},
"Microsoft.Extensions.Options.DataAnnotations": {
"type": "CentralTransitive",
"requested": "[8.0.0, )",
"resolved": "8.0.0",
"contentHash": "z6p6q/N/hiU19A9tK7pjhXHpiYArO4oIICipxUviBEIOiDIoKRO7k6qItvw7alKcLtfHZOWmspuSKpvIvH0N8w==",
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Options": "8.0.0"
}
}
},
"net8.0/browser-wasm": {
"System.Text.Encodings.Web": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ=="
}
}
}
}

View file

@ -4,7 +4,6 @@
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<RunAOTCompilation>true</RunAOTCompilation>
<WasmStripILAfterAOT>true</WasmStripILAfterAOT>
<RootNamespace>NSeguin.Dev.Web</RootNamespace>
@ -27,14 +26,4 @@
</PackageReference>
</ItemGroup>
<ItemGroup>
<Reference Include="Microsoft.Extensions.Configuration.Abstractions">
<HintPath>..\..\..\..\..\.nuget\packages\microsoft.extensions.configuration.abstractions\8.0.0\lib\net8.0\Microsoft.Extensions.Configuration.Abstractions.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Folder Include="Components\" />
</ItemGroup>
</Project>

View file

@ -1,201 +0,0 @@
{
"version": 2,
"dependencies": {
"net8.0": {
"Blazored.LocalStorage": {
"type": "Direct",
"requested": "[4.5.0, )",
"resolved": "4.5.0",
"contentHash": "6nZuJwA7zNIKx83IsObiHXZb09ponJOpCClU3en+hI8ZFvrOKXeOw+H7TegQZQrvdR1n9fkrVkEBQZg8vx6ZTw==",
"dependencies": {
"Microsoft.AspNetCore.Components.Web": "8.0.0"
}
},
"CommunityToolkit.Common": {
"type": "Direct",
"requested": "[8.2.2, )",
"resolved": "8.2.2",
"contentHash": "8/enuV1R68d0hK66UO8/HQ3yEsMjxUqondiEXlA499XB3tYgIqhCM+ITe8fHfH3l4JN3gY6h21SvkJnxfaG3NQ=="
},
"CommunityToolkit.Mvvm": {
"type": "Direct",
"requested": "[8.2.2, )",
"resolved": "8.2.2",
"contentHash": "r0g0k9tGYdrnz8R7T3x5UiokDffeevzK/2P/9SBL6fqLgN8B157MIi/bVUWI1KAz6ZorZrK9AdABCWUeXZZsvA=="
},
"JetBrains.Annotations": {
"type": "Direct",
"requested": "[2023.3.0, )",
"resolved": "2023.3.0",
"contentHash": "PHfnvdBUdGaTVG9bR/GEfxgTwWM0Z97Y6X3710wiljELBISipSfF5okn/vz+C2gfO+ihoEyVPjaJwn8ZalVukA=="
},
"Microsoft.Extensions.Configuration": {
"type": "Direct",
"requested": "[8.0.0, )",
"resolved": "8.0.0",
"contentHash": "0J/9YNXTMWSZP2p2+nvl8p71zpSwokZXZuJW+VjdErkegAnFdO1XlqtA62SJtgVYHdKu3uPxJHcMR/r35HwFBA==",
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.Primitives": "8.0.0"
}
},
"Microsoft.Extensions.Configuration.Binder": {
"type": "Direct",
"requested": "[8.0.1, )",
"resolved": "8.0.1",
"contentHash": "2UKFJnLiBt7Od6nCnTqP9rTIUNhzmn9Hv1l2FchyKbz8xieB9ULwZTbQZMw+M24Qw3F5dzzH1U9PPleN0LNLOQ==",
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0"
}
},
"Microsoft.Extensions.DependencyInjection.Abstractions": {
"type": "Direct",
"requested": "[8.0.0, )",
"resolved": "8.0.0",
"contentHash": "cjWrLkJXK0rs4zofsK4bSdg+jhDLTaxrkXu4gS6Y7MAlCvRyNNgwY/lJi5RDlQOnSZweHqoyvgvbdvQsRIW+hg=="
},
"Microsoft.Extensions.Options": {
"type": "Direct",
"requested": "[8.0.2, )",
"resolved": "8.0.2",
"contentHash": "dWGKvhFybsaZpGmzkGCbNNwBD1rVlWzrZKANLW/CcbFJpCEceMCGzT7zZwHOGBCbwM0SzBuceMj5HN1LKV1QqA==",
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Primitives": "8.0.0"
}
},
"Microsoft.Extensions.Options.ConfigurationExtensions": {
"type": "Direct",
"requested": "[8.0.0, )",
"resolved": "8.0.0",
"contentHash": "0f4DMRqEd50zQh+UyJc+/HiBsZ3vhAQALgdkcQEalSH1L2isdC7Yj54M3cyo5e+BeO5fcBQ7Dxly8XiBBcvRgw==",
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.Configuration.Binder": "8.0.0",
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Options": "8.0.0",
"Microsoft.Extensions.Primitives": "8.0.0"
}
},
"Microsoft.Extensions.Options.DataAnnotations": {
"type": "Direct",
"requested": "[8.0.0, )",
"resolved": "8.0.0",
"contentHash": "z6p6q/N/hiU19A9tK7pjhXHpiYArO4oIICipxUviBEIOiDIoKRO7k6qItvw7alKcLtfHZOWmspuSKpvIvH0N8w==",
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Options": "8.0.0"
}
},
"Microsoft.TypeScript.MSBuild": {
"type": "Direct",
"requested": "[5.3.3, )",
"resolved": "5.3.3",
"contentHash": "sFxHtBLDgNp+vhCS0usd7F/5NfWSGJ7KiYy8YLKeQit19szQZ6oqxRYyOmQsFlZt2GLHpTkXffFqjZIDvGCdaQ=="
},
"StyleCop.Analyzers": {
"type": "Direct",
"requested": "[1.2.0-beta.507, )",
"resolved": "1.2.0-beta.507",
"contentHash": "/FtugDT66cKJJ+GGH7rNpG6UDrT4iIWz45M6lrXXHobDUFDHw+q5VgkbiR+6ffTO564ge7w6fQh/eoQhVdJO8Q==",
"dependencies": {
"StyleCop.Analyzers.Unstable": "1.2.0.507"
}
},
"Microsoft.AspNetCore.Authorization": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "OGIGJMnlWvQgcweHcv1Mq/P24Zx/brUHeEdD05NzqkSXmQSnFomTvVyCuBtCXT4JPfv2m70y1RSocmd9bIbJRg==",
"dependencies": {
"Microsoft.AspNetCore.Metadata": "8.0.0",
"Microsoft.Extensions.Logging.Abstractions": "8.0.0",
"Microsoft.Extensions.Options": "8.0.0"
}
},
"Microsoft.AspNetCore.Components": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "kqspqWo3lT+rrSd39kvrV7SZYl0znYZQbQ8SJaHjDA8ffMPV6BkfVe0i6LvxRPwq/agwSWdIDq2j4x+78Frypg==",
"dependencies": {
"Microsoft.AspNetCore.Authorization": "8.0.0",
"Microsoft.AspNetCore.Components.Analyzers": "8.0.0"
}
},
"Microsoft.AspNetCore.Components.Analyzers": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "lJMa9kQDw3vkqcMMbuicIpyax7QH6imQFbLRzVqJzrGs5LN954IPaJVkDzRCEXFVAN24Cml6g4mEF3b0D7Oa+Q=="
},
"Microsoft.AspNetCore.Components.Forms": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "iiYB/7Sl/vTURO4EiTUCmfIXujlJOl+Gh7nknCFhvFQ+kKMFFXYcrszYwLN9aQSolpswc/A9a78KL59/UIezig==",
"dependencies": {
"Microsoft.AspNetCore.Components": "8.0.0"
}
},
"Microsoft.AspNetCore.Components.Web": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "aokUKvFoNqxR6bf0+iKrDfQ79OLHWYn5UGYp5MU65/il1vuRK7MAF18oGj7QgiZJUu3cMAZjCFkHbsWLhQxCsA==",
"dependencies": {
"Microsoft.AspNetCore.Components": "8.0.0",
"Microsoft.AspNetCore.Components.Forms": "8.0.0",
"Microsoft.Extensions.DependencyInjection": "8.0.0",
"Microsoft.Extensions.Primitives": "8.0.0",
"Microsoft.JSInterop": "8.0.0",
"System.IO.Pipelines": "8.0.0"
}
},
"Microsoft.AspNetCore.Metadata": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "OmuSztiZMitRTYlbMNDkBk3BinSsVcOApSNBAsrw+KYNJh6ALarPhWLlKdtvMgrKzpyCY06xtLAjTmQLURHSlQ=="
},
"Microsoft.Extensions.Configuration.Abstractions": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "3lE/iLSutpgX1CC0NOW70FJoGARRHbyKmG7dc0klnUZ9Dd9hS6N/POPWhKhMLCEuNN5nXEY5agmlFtH562vqhQ==",
"dependencies": {
"Microsoft.Extensions.Primitives": "8.0.0"
}
},
"Microsoft.Extensions.DependencyInjection": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "V8S3bsm50ig6JSyrbcJJ8bW2b9QLGouz+G1miK3UTaOWmMtFwNNNzUf4AleyDWUmTrWMLNnFSLEQtxmxgNQnNQ==",
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0"
}
},
"Microsoft.Extensions.Logging.Abstractions": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "arDBqTgFCyS0EvRV7O3MZturChstm50OJ0y9bDJvAcmEPJm0FFpFyjU/JLYyStNGGey081DvnQYlncNX5SJJGA==",
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0"
}
},
"Microsoft.Extensions.Primitives": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "bXJEZrW9ny8vjMF1JV253WeLhpEVzFo1lyaZu1vQ4ZxWUlVvknZ/+ftFgVheLubb4eZPSwwxBeqS1JkCOjxd8g=="
},
"Microsoft.JSInterop": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "qQqASbHxWIddssdEBKUQ/49j21SEstiho6VAepPQa9eISLCBCE6wq0m3YaB6cpdF5U+AWX5F3FvDfmssql3xtw=="
},
"StyleCop.Analyzers.Unstable": {
"type": "Transitive",
"resolved": "1.2.0.507",
"contentHash": "gTY3IQdRqDJ4hbhSA3e/R48oE8b/OiKfvwkt1QdNVfrJK2gMHBV8ldaHJ885jxWZfllK66soa/sdcjh9bX49Tw=="
},
"System.IO.Pipelines": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "FHNOatmUq0sqJOkTx+UF/9YK1f180cnW5FVqnQMvYUN0elp6wFzbtPSiqbo1/ru8ICp43JM1i7kKkk6GsNGHlA=="
}
}
}
}

View file

@ -1,228 +0,0 @@
{
"version": 2,
"dependencies": {
".NETStandard,Version=v2.0": {
"Microsoft.CodeAnalysis.Analyzers": {
"type": "Direct",
"requested": "[3.3.4, )",
"resolved": "3.3.4",
"contentHash": "AxkxcPR+rheX0SmvpLVIGLhOUXAKG56a64kV9VQZ4y9gR9ZmPXnqZvHJnmwLSwzrEP6junUF11vuc+aqo5r68g=="
},
"Microsoft.CodeAnalysis.CSharp": {
"type": "Direct",
"requested": "[4.8.0, )",
"resolved": "4.8.0",
"contentHash": "+3+qfdb/aaGD8PZRCrsdobbzGs1m9u119SkkJt8e/mk3xLJz/udLtS2T6nY27OTXxBBw10HzAbC8Z9w08VyP/g==",
"dependencies": {
"Microsoft.CodeAnalysis.Common": "[4.8.0]"
}
},
"Microsoft.CodeAnalysis.CSharp.Workspaces": {
"type": "Direct",
"requested": "[4.8.0, )",
"resolved": "4.8.0",
"contentHash": "3amm4tq4Lo8/BGvg9p3BJh3S9nKq2wqCXfS7138i69TUpo/bD+XvD0hNurpEBtcNZhi1FyutiomKJqVF39ugYA==",
"dependencies": {
"Humanizer.Core": "2.14.1",
"Microsoft.CodeAnalysis.CSharp": "[4.8.0]",
"Microsoft.CodeAnalysis.Common": "[4.8.0]",
"Microsoft.CodeAnalysis.Workspaces.Common": "[4.8.0]"
}
},
"NETStandard.Library": {
"type": "Direct",
"requested": "[2.0.3, )",
"resolved": "2.0.3",
"contentHash": "st47PosZSHrjECdjeIzZQbzivYBJFv6P2nv4cj2ypdI204DO+vZ7l5raGMiX4eXMJ53RfOIg+/s4DHVZ54Nu2A==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0"
}
},
"StyleCop.Analyzers": {
"type": "Direct",
"requested": "[1.2.0-beta.507, )",
"resolved": "1.2.0-beta.507",
"contentHash": "/FtugDT66cKJJ+GGH7rNpG6UDrT4iIWz45M6lrXXHobDUFDHw+q5VgkbiR+6ffTO564ge7w6fQh/eoQhVdJO8Q==",
"dependencies": {
"StyleCop.Analyzers.Unstable": "1.2.0.507"
}
},
"Humanizer.Core": {
"type": "Transitive",
"resolved": "2.14.1",
"contentHash": "lQKvtaTDOXnoVJ20ibTuSIOf2i0uO0MPbDhd1jm238I+U/2ZnRENj0cktKZhtchBMtCUSRQ5v4xBCUbKNmyVMw=="
},
"Microsoft.Bcl.AsyncInterfaces": {
"type": "Transitive",
"resolved": "7.0.0",
"contentHash": "3aeMZ1N0lJoSyzqiP03hqemtb1BijhsJADdobn/4nsMJ8V1H+CrpuduUe4hlRdx+ikBQju1VGjMD1GJ3Sk05Eg==",
"dependencies": {
"System.Threading.Tasks.Extensions": "4.5.4"
}
},
"Microsoft.CodeAnalysis.Common": {
"type": "Transitive",
"resolved": "4.8.0",
"contentHash": "/jR+e/9aT+BApoQJABlVCKnnggGQbvGh7BKq2/wI1LamxC+LbzhcLj4Vj7gXCofl1n4E521YfF9w0WcASGg/KA==",
"dependencies": {
"Microsoft.CodeAnalysis.Analyzers": "3.3.4",
"System.Collections.Immutable": "7.0.0",
"System.Memory": "4.5.5",
"System.Reflection.Metadata": "7.0.0",
"System.Runtime.CompilerServices.Unsafe": "6.0.0",
"System.Text.Encoding.CodePages": "7.0.0",
"System.Threading.Tasks.Extensions": "4.5.4"
}
},
"Microsoft.CodeAnalysis.Workspaces.Common": {
"type": "Transitive",
"resolved": "4.8.0",
"contentHash": "LXyV+MJKsKRu3FGJA3OmSk40OUIa/dQCFLOnm5X8MNcujx7hzGu8o+zjXlb/cy5xUdZK2UKYb9YaQ2E8m9QehQ==",
"dependencies": {
"Humanizer.Core": "2.14.1",
"Microsoft.Bcl.AsyncInterfaces": "7.0.0",
"Microsoft.CodeAnalysis.Common": "[4.8.0]",
"System.Composition": "7.0.0",
"System.IO.Pipelines": "7.0.0",
"System.Threading.Channels": "7.0.0"
}
},
"Microsoft.NETCore.Platforms": {
"type": "Transitive",
"resolved": "1.1.0",
"contentHash": "kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A=="
},
"StyleCop.Analyzers.Unstable": {
"type": "Transitive",
"resolved": "1.2.0.507",
"contentHash": "gTY3IQdRqDJ4hbhSA3e/R48oE8b/OiKfvwkt1QdNVfrJK2gMHBV8ldaHJ885jxWZfllK66soa/sdcjh9bX49Tw=="
},
"System.Buffers": {
"type": "Transitive",
"resolved": "4.5.1",
"contentHash": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg=="
},
"System.Collections.Immutable": {
"type": "Transitive",
"resolved": "7.0.0",
"contentHash": "dQPcs0U1IKnBdRDBkrCTi1FoajSTBzLcVTpjO4MBCMC7f4pDOIPzgBoX8JjG7X6uZRJ8EBxsi8+DR1JuwjnzOQ==",
"dependencies": {
"System.Memory": "4.5.5",
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
}
},
"System.Composition": {
"type": "Transitive",
"resolved": "7.0.0",
"contentHash": "tRwgcAkDd85O8Aq6zHDANzQaq380cek9lbMg5Qma46u5BZXq/G+XvIYmu+UI+BIIZ9zssXLYrkTykEqxxvhcmg==",
"dependencies": {
"System.Composition.AttributedModel": "7.0.0",
"System.Composition.Convention": "7.0.0",
"System.Composition.Hosting": "7.0.0",
"System.Composition.Runtime": "7.0.0",
"System.Composition.TypedParts": "7.0.0"
}
},
"System.Composition.AttributedModel": {
"type": "Transitive",
"resolved": "7.0.0",
"contentHash": "2QzClqjElKxgI1jK1Jztnq44/8DmSuTSGGahXqQ4TdEV0h9s2KikQZIgcEqVzR7OuWDFPGLHIprBJGQEPr8fAQ=="
},
"System.Composition.Convention": {
"type": "Transitive",
"resolved": "7.0.0",
"contentHash": "IMhTlpCs4HmlD8B+J8/kWfwX7vrBBOs6xyjSTzBlYSs7W4OET4tlkR/Sg9NG8jkdJH9Mymq0qGdYS1VPqRTBnQ==",
"dependencies": {
"System.Composition.AttributedModel": "7.0.0"
}
},
"System.Composition.Hosting": {
"type": "Transitive",
"resolved": "7.0.0",
"contentHash": "eB6gwN9S+54jCTBJ5bpwMOVerKeUfGGTYCzz3QgDr1P55Gg/Wb27ShfPIhLMjmZ3MoAKu8uUSv6fcCdYJTN7Bg==",
"dependencies": {
"System.Composition.Runtime": "7.0.0"
}
},
"System.Composition.Runtime": {
"type": "Transitive",
"resolved": "7.0.0",
"contentHash": "aZJ1Zr5Txe925rbo4742XifEyW0MIni1eiUebmcrP3HwLXZ3IbXUj4MFMUH/RmnJOAQiS401leg/2Sz1MkApDw=="
},
"System.Composition.TypedParts": {
"type": "Transitive",
"resolved": "7.0.0",
"contentHash": "ZK0KNPfbtxVceTwh+oHNGUOYV2WNOHReX2AXipuvkURC7s/jPwoWfsu3SnDBDgofqbiWr96geofdQ2erm/KTHg==",
"dependencies": {
"System.Composition.AttributedModel": "7.0.0",
"System.Composition.Hosting": "7.0.0",
"System.Composition.Runtime": "7.0.0"
}
},
"System.IO.Pipelines": {
"type": "Transitive",
"resolved": "7.0.0",
"contentHash": "jRn6JYnNPW6xgQazROBLSfpdoczRw694vO5kKvMcNnpXuolEixUyw6IBuBs2Y2mlSX/LdLvyyWmfXhaI3ND1Yg==",
"dependencies": {
"System.Buffers": "4.5.1",
"System.Memory": "4.5.5",
"System.Threading.Tasks.Extensions": "4.5.4"
}
},
"System.Memory": {
"type": "Transitive",
"resolved": "4.5.5",
"contentHash": "XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==",
"dependencies": {
"System.Buffers": "4.5.1",
"System.Numerics.Vectors": "4.4.0",
"System.Runtime.CompilerServices.Unsafe": "4.5.3"
}
},
"System.Numerics.Vectors": {
"type": "Transitive",
"resolved": "4.4.0",
"contentHash": "UiLzLW+Lw6HLed1Hcg+8jSRttrbuXv7DANVj0DkL9g6EnnzbL75EB7EWsw5uRbhxd/4YdG8li5XizGWepmG3PQ=="
},
"System.Reflection.Metadata": {
"type": "Transitive",
"resolved": "7.0.0",
"contentHash": "MclTG61lsD9sYdpNz9xsKBzjsmsfCtcMZYXz/IUr2zlhaTaABonlr1ESeompTgM+Xk+IwtGYU7/voh3YWB/fWw==",
"dependencies": {
"System.Collections.Immutable": "7.0.0",
"System.Memory": "4.5.5"
}
},
"System.Runtime.CompilerServices.Unsafe": {
"type": "Transitive",
"resolved": "6.0.0",
"contentHash": "/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg=="
},
"System.Text.Encoding.CodePages": {
"type": "Transitive",
"resolved": "7.0.0",
"contentHash": "LSyCblMpvOe0N3E+8e0skHcrIhgV2huaNcjUUEa8hRtgEAm36aGkRoC8Jxlb6Ra6GSfF29ftduPNywin8XolzQ==",
"dependencies": {
"System.Memory": "4.5.5",
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
}
},
"System.Threading.Channels": {
"type": "Transitive",
"resolved": "7.0.0",
"contentHash": "qmeeYNROMsONF6ndEZcIQ+VxR4Q/TX/7uIVLJqtwIWL7dDWeh0l1UIqgo4wYyjG//5lUNhwkLDSFl+pAWO6oiA==",
"dependencies": {
"System.Threading.Tasks.Extensions": "4.5.4"
}
},
"System.Threading.Tasks.Extensions": {
"type": "Transitive",
"resolved": "4.5.4",
"contentHash": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==",
"dependencies": {
"System.Runtime.CompilerServices.Unsafe": "4.5.3"
}
}
}
}
}

View file

@ -3,10 +3,10 @@ using System.Text;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.Text;
namespace NSeguin.Dev.Web.HeroIconSourceGenerator;
namespace NSeguin.Dev.Web.HeroIcons.SourceGenerator;
[Generator]
public class HeroIconIncrementalSourceGenerator : IIncrementalGenerator
public class HeroIconsSourceGenerator : IIncrementalGenerator
{
private const string PathBase = "wwwroot/lib/heroicons/24/solid";
@ -48,7 +48,7 @@ public class HeroIconIncrementalSourceGenerator : IIncrementalGenerator
public string Code =>
$$"""
// <auto-generated/>
namespace NSeguin.Dev.Web.Components.Shared
namespace NSeguin.Dev.Web.Components.Shared.HeroIcons
{
public partial class HeroIcon
{

View file

@ -5,12 +5,9 @@
<IsPackable>false</IsPackable>
<Nullable>enable</Nullable>
<LangVersion>latest</LangVersion>
<EnforceExtendedAnalyzerRules>true</EnforceExtendedAnalyzerRules>
<IsRoslynComponent>true</IsRoslynComponent>
<RootNamespace>NSeguin.Dev.Web.HeroIconSourceGenerator</RootNamespace>
<PackageId>NSeguin.Dev.Web.HeroIconSourceGenerator</PackageId>
<PackageId>NSeguin.Dev.Web.HeroIcons.SourceGenerator</PackageId>
</PropertyGroup>
<ItemGroup>

View file

@ -1,19 +1,30 @@
<!DOCTYPE html>
@using Microsoft.AspNetCore.Mvc.ViewFeatures
@using JetBrains.Annotations
@inject IFileVersionProvider FileVersionProvider
<!DOCTYPE html>
<html lang="en">
<!--suppress HtmlRequiredTitleElement -->
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<base href="/"/>
<link rel="stylesheet" href="css/styles.css" asp-append-version="true"/>
<link rel="stylesheet" href="app.css"/>
<link rel="stylesheet" href="NSeguin.Dev.Web.styles.css"/>
<base href="@PathBase"/>
<link rel="stylesheet" href="@AddVersionToPath("css/styles.css")"/>
<link rel="stylesheet" href="@AddVersionToPath("app.css")"/>
<link rel="icon" type="image/png" href="favicon.ico"/>
<HeadOutlet/>
</head>
<body>
<Routes/>
@* ReSharper disable once Html.PathError *@
<script src="_framework/blazor.web.js"></script>
<script src="js/app.js"></script>
<script src="@AddVersionToPath("js/app.js")"></script>
</body>
</html>
@code {
private const string PathBase = "/";
private string AddVersionToPath([PathReference] string path) => FileVersionProvider.AddFileVersionToPath(PathBase, path);
}

View file

@ -1,15 +1,26 @@
@inherits LayoutComponentBase
<div class="page">
<main>
<article class="content px-4">
@Body
</article>
</main>
<div class="fixed inset-y-0 right-0 left-[40rem] hidden lg:block xl:left-[50rem] z-0">
<svg
viewBox="0 0 1080 957"
fill="none"
aria-hidden="true"
class="absolute inset-0 h-full w-full"
preserveAspectRatio="xMinYMid slice">
<path fill="#2e3440" d="M0 0h1080v957H0z"/>
</svg>
</div>
<div id="blazor-error-ui">
An unhandled error has occurred.
<a href="" class="reload">Reload</a>
<a class="dismiss">🗙</a>
</div>
<main>
<div class="px-4 py-10 sm:py-28 sm:px-6 lg:px-8 xl:py-32 xl:px-28">
<div class="mx-auto max-w-xl lg:mx-0">
<article class="px-4">
<ErrorBoundary>
@Body
</ErrorBoundary>
</article>
</div>
</div>
</main>
<BlazorErrorUI/>

View file

@ -1,92 +0,0 @@
.page {
position: relative;
display: flex;
flex-direction: column;
}
main {
flex: 1;
}
.top-row {
background-color: #f7f7f7;
border-bottom: 1px solid #d6d5d5;
justify-content: flex-end;
height: 3.5rem;
display: flex;
align-items: center;
}
.top-row ::deep a, .top-row ::deep .btn-link {
white-space: nowrap;
margin-left: 1.5rem;
text-decoration: none;
}
.top-row ::deep a:hover, .top-row ::deep .btn-link:hover {
text-decoration: underline;
}
.top-row ::deep a:first-child {
overflow: hidden;
text-overflow: ellipsis;
}
@media (max-width: 640.98px) {
.top-row {
justify-content: space-between;
}
.top-row ::deep a, .top-row ::deep .btn-link {
margin-left: 0;
}
}
@media (min-width: 641px) {
.page {
flex-direction: row;
}
.sidebar {
width: 250px;
height: 100vh;
position: sticky;
top: 0;
}
.top-row {
position: sticky;
top: 0;
z-index: 1;
}
.top-row.auth ::deep a:first-child {
flex: 1;
text-align: right;
width: 0;
}
.top-row, article {
padding-left: 2rem !important;
padding-right: 1.5rem !important;
}
}
#blazor-error-ui {
background: lightyellow;
bottom: 0;
box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
display: none;
left: 0;
padding: 0.6rem 1.25rem 0.7rem 1.25rem;
position: fixed;
width: 100%;
z-index: 1000;
}
#blazor-error-ui .dismiss {
cursor: pointer;
position: absolute;
right: 0.75rem;
top: 0.5rem;
}

View file

@ -0,0 +1,65 @@
@page "/attributions"
@using System.Text.Json
<PageTitle>Attributions</PageTitle>
<h1 class="mt-4 text-4xl md:text-5xl lg:text-6xl font-extrabold text-[2rem] leading-10 tracking-tighter">
Attributions
</h1>
<p class="mt-4 text-base text-slate-900">
The source code for this website is available on
<a href="https://www.git.nseguin.dev/nseguin/website" class="text-blue-600">Forgejo (git.nseguin.dev).</a>
</p>
<p class="mt-4 text-base text-slate-900">
It is licensed under the <a href="@LicenseUrl" class="text-blue-600">MIT License</a>.
</p>
<ul class="list-disc mt-4 text-base leading-7 text-slate-900">
@if (AttributionsList != null)
{
@foreach (var attribution in AttributionsList)
{
<li class="mt-4" key="@attribution.Name">
<h2 class="text-lg font-bold">@attribution.Name</h2>
@if (!string.IsNullOrWhiteSpace(attribution.Url?.ToString()))
{
<p class="mt-2">URL: <a href="@attribution.Url.ToString()" class="text-blue-600">@attribution.Url</a></p>
}
@if (attribution.Authors?.Any() ?? false)
{
<p class="mt-2">Author(s): @string.Join(", ", attribution.Authors)</p>
}
@if (!string.IsNullOrWhiteSpace(attribution.License))
{
<p class="mt-2">License: <a href="@attribution.LicenseUrl?.ToString()" class="text-blue-600">@attribution.License</a></p>
}
</li>
}
}
</ul>
@code {
public record Attribution(string Name, Uri Url, string? License, Uri? LicenseUrl, string[]? Authors);
private string? AttributionsJson { get; set; }
private List<Attribution>? AttributionsList { get; set; }
private string? LicenseUrl => "static/LICENSE.txt";
[Inject]
private IWebHostEnvironment HostEnvironment { get; set; }
protected override async Task OnInitializedAsync()
{
var attributionsFile = HostEnvironment.WebRootFileProvider.GetFileInfo("static/attributions.json");
using var reader = new StreamReader(attributionsFile.CreateReadStream());
AttributionsJson = await reader.ReadToEndAsync();
AttributionsList = JsonSerializer.Deserialize<List<Attribution>>(AttributionsJson);
await base.OnInitializedAsync();
}
}

View file

@ -1,42 +0,0 @@
@page "/authentication/{action}"
@using System.Security.Claims
@code{
private const string Login = "login";
private const string Logout = "logout";
public ClaimsPrincipal? User { get; private set; }
[CascadingParameter]
public required Task<AuthenticationState> AuthenticationState { get; set; }
[Parameter]
public string? Action { get; set; }
[Inject]
public required NavigationManager NavigationManager { get; set; }
private void SignOut()
{
NavigationManager.NavigateTo("MicrosoftIdentity/Account/SignOut", true);
}
private void SignIn()
{
NavigationManager.NavigateTo("MicrosoftIdentity/Account/SignIn", true);
}
protected override async Task OnInitializedAsync()
{
var authenticationState = await AuthenticationState;
User = authenticationState.User;
if (Action == Logout)
{
SignOut();
}
else if (Action == Login)
{
SignIn();
}
}
}

View file

@ -1,40 +1,49 @@
@page "/Error"
@using System.Diagnostics
@using Microsoft.AspNetCore.Diagnostics
<PageTitle>Error</PageTitle>
<h1 class="text-danger">Error.</h1>
<h2 class="text-danger">An error occurred while processing your request.</h2>
<h1 class="mt-4 text-4xl md:text-5xl lg:text-6xl font-semibold text-[2rem] leading-10 tracking-tighter">Error</h1>
<p class="text-slate text-xl mt-4">
An error occurred while processing your request.
</p>
@if (ShowRequestId)
{
<p>
<p class="text-slate text-md mt-4 mb-4">
<strong>Request ID:</strong> <code>@RequestId</code>
</p>
}
<h3>Development Mode</h3>
<p>
Swapping to <strong>Development</strong> environment will display more detailed information about the error that occurred.
</p>
<p>
<strong>The Development environment shouldn't be enabled for deployed applications.</strong>
It can result in displaying sensitive information from exceptions to end users.
For local debugging, enable the <strong>Development</strong> environment by setting the <strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to <strong>Development</strong>
and restarting the app.
</p>
@if (ShowException)
{
<p class="text-slate mt-4 mb-4">
<h2 class="text-2xl font-bold">Exception</h2>
<pre class="text-md">
<code>@(Exception?.ToString())</code>
</pre>
</p>
}
@code{
[CascadingParameter]
private HttpContext? HttpContext { get; set; }
[Inject]
private IHostEnvironment HostEnvironment { get; set; } = default!;
private Exception? Exception { get; set; }
private string? RequestId { get; set; }
private bool ShowRequestId => !string.IsNullOrEmpty(RequestId);
private bool ShowException => Exception is not null && HostEnvironment.IsDevelopment();
protected override void OnInitialized()
{
RequestId = Activity.Current?.Id ?? HttpContext?.TraceIdentifier;
Exception = HttpContext?.Features.Get<IExceptionHandlerFeature>()?.Error ?? new Exception("An error occurred while processing your request.");
}
}

View file

@ -1,40 +1,26 @@
@page "/"
@layout SimpleLayout
@using NSeguin.Dev.Web.Components.Shared.HeroIcons
@rendermode InteractiveServer
<PageTitle>Home</PageTitle>
<div class="fixed inset-y-0 right-0 left-[40rem] hidden lg:block xl:left-[50rem] z-0">
<svg
viewBox="0 0 1080 957"
fill="none"
aria-hidden="true"
class="absolute inset-0 h-full w-full"
preserveAspectRatio="xMinYMid slice">
<path fill="#2e3440" d="M0 0h1080v957H0z"/>
</svg>
</div>
<div class="px-4 py-10 sm:py-28 sm:px-6 lg:px-8 xl:py-32 xl:px-28">
<div class="mx-auto max-w-xl lg:mx-0">
<h1 class="mt-10 flex items-center text-sm font-semibold leading-6 text-brand">
<p class="mt-10 flex items-center text-sm font-semibold leading-6 text-brand">
<a href="https://git.nseguin.dev/nseguin/website">nseguin/website</a>
<small class="ml-3 rounded-full bg-brand/5 px-2 text-[0.8125rem] font-medium leading-6">
</small>
</h1>
</p>
<h1 class="mt-4 text-4xl md:text-5xl lg:text-6xl font-extrabold text-[2rem] leading-10 tracking-tighter">
<h1 class="mt-4 text-4xl md:text-5xl lg:text-6xl font-extrabold text-[2rem] leading-10 tracking-tighter">
Nick Seguin
</h1>
</h1>
<p class="mt-4 text-base leading-7 text-slate-900">
I'm a software developer based in Iowa.
<p class="mt-4 text-base leading-7 text-slate-900">
I'm a software developer based in Florida.
I'm currently working on a few projects, including this website.
Thanks for visiting!
</p>
</div>
</p>
<div class="flex">
<div class="flex">
<div class="w-full sm:w-auto">
<div class="mt-10 grid grid-cols-1 gap-x-6 gap-y-4 sm:grid-cols-3">
<a
@ -44,9 +30,9 @@
</span>
<span class="relative flex items-center gap-4 sm:flex-col">
<div class="w-6 h-6">
<HeroIcon Kind="HeroIcon.Envelope"/>
<HeroIcon Kind="HeroIcon.DocumentText"/>
</div>
Resumé
<a href="/static/resume.pdf">Resumé</a>
</span>
</a>
<a
@ -65,31 +51,18 @@
GitHub
</span>
</a>
<button
@onclick="() => ContactForm.Toggle()"
<a
href="mailto:mail@nseguin.dev"
class="group relative rounded-2xl px-6 py-4 text-sm font-semibold leading-6 text-nord-1 sm:py-6">
<span class="absolute inset-0 rounded-2xl bg-slate-50 transition group-hover:bg-slate-100 sm:group-hover:scale-105">
</span>
<span class="relative flex items-center gap-4 sm:flex-col text-black">
<div class="w-6 h-6">
<HeroIcon Kind="HeroIcon.Envelope"/>
</div>
Contact
</span>
</button>
</div>
</div>
</div>
<div class="flex">
<div class="w-full sm:w-auto">
<ContactForm Id="contact-form" @ref="ContactForm" />
</a>
</div>
</div>
</div>
@code {
public ContactForm ContactForm { get; set; }
}

View file

@ -1,34 +1,17 @@
@page "/NotFound"
@using Microsoft.AspNetCore.WebUtilities
@layout SimpleLayout
@inject NavigationManager NavigationManager
<PageTitle>Not Found</PageTitle>
<div class="fixed inset-y-0 right-0 left-[40rem] hidden lg:block xl:left-[50rem] z-0">
<svg
viewBox="0 0 1080 957"
fill="none"
aria-hidden="true"
class="absolute inset-0 h-full w-full"
preserveAspectRatio="xMinYMid slice">
<path fill="#2e3440" d="M0 0h1080v957H0z"/>
</svg>
</div>
<h1 class="mt-4 text-4xl md:text-5xl lg:text-6xl font-semibold text-[2rem] leading-10 tracking-tighter">Not Found</h1>
<p class="text-slate text-xl mt-4">
No page was found at <code>@Path</code>.
</p>
<div class="px-4 py-10 sm:py-28 sm:px-6 lg:px-8 xl:py-32 xl:px-28">
<div class="mx-auto max-w-xl lg:mx-0">
<h1 class="mt-4 text-4xl md:text-5xl lg:text-6xl font-semibold text-[2rem] leading-10 tracking-tighter">Not Found</h1>
<p class="text-slate text-xl mt-4">
No page was found at <code>@Path</code>.<br/>
</p>
<p class="text-blue-600 text-xl mt-4">
<p class="text-blue-600 text-xl mt-4">
<a href="/" aria-label="Home" class="underline">Go to home page</a>
</p>
</div>
</div>
</p>
@code {
private string Path { get; set; }

View file

@ -1,24 +1,5 @@
<CascadingAuthenticationState>
<Router AppAssembly="@typeof(Program).Assembly" AdditionalAssemblies="new[] {typeof(Client._Imports).Assembly}">
<Router AppAssembly="@typeof(Program).Assembly" AdditionalAssemblies="new[] {typeof(Client._Imports).Assembly, typeof(AsyncEventHandler).Assembly}">
<Found Context="routeData">
<AuthorizeRouteView RouteData="@routeData" DefaultLayout="@typeof(SimpleLayout)">
<NotAuthorized>
@if (context.User.Identity?.IsAuthenticated != true)
{
<RedirectToLogin/>
}
else
{
<p role="alert">You are not authorized to access this resource.</p>
}
</NotAuthorized>
</AuthorizeRouteView>
<RouteView RouteData="@routeData" DefaultLayout="@typeof(SimpleLayout)"/>
</Found>
<NotFound>
<PageTitle>Not found</PageTitle>
<LayoutView Layout="@typeof(SimpleLayout)">
<p role="alert">Sorry, there's nothing at this address.</p>
</LayoutView>
</NotFound>
</Router>
</CascadingAuthenticationState>
</Router>

View file

@ -1,14 +1,21 @@
@inject IJSRuntime JSRuntime
@code {
[Parameter]
public Func<ElementReference> GetControl { get; set; }
public Func<ElementReference>? GetControl { get; set; }
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (GetControl is null)
{
throw new ArgumentNullException(nameof(GetControl));
}
if (firstRender)
{
await JSRuntime.InvokeVoidAsync("App.scrollIntoView", GetControl(), true);
}
}
}

View file

@ -0,0 +1,11 @@
@inject IHostEnvironment HostEnvironment
<div id="blazor-error-ui"
class="bg-yellow-400 bottom-0 shadow-md fixed left-0 py-2 px-4 w-full z-50 hidden"
role="alertdialog"
tabindex="-1"
data-nosnippet>
An unhandled error has occurred.
<a href="#" class="reload underline">Reload</a>
<button class="dismiss" type="button">🗙</button>
</div>

View file

@ -1,70 +0,0 @@
using System.Collections.Concurrent;
using System.Text.RegularExpressions;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Rendering;
namespace NSeguin.Dev.Web.Components.Shared;
public partial class HeroIcon : ComponentBase
{
private const string PathBase = "wwwroot/lib/heroicons";
private static readonly ConcurrentDictionary<string, string> Cache = new();
private Task<string>? _svgTask;
[Parameter]
public HeroIconKind? Kind { get; set; }
public bool Outline { get; set; }
public bool Small { get; set; }
private string? RawSvg { get; set; }
protected override void BuildRenderTree(RenderTreeBuilder builder)
{
builder.AddMarkupContent(0, RawSvg);
}
protected override void OnParametersSet()
{
if (Small && Outline)
{
throw new InvalidOperationException(
"Small and Outline cannot be true at the same time.");
}
if (Kind is null)
{
throw new InvalidOperationException("Kind cannot be null.");
}
_svgTask = (Outline, Small) switch
{
(true, false) => Kind.Outline,
(false, true) => Kind.Small,
(false, false) => Kind.Solid,
_ => throw new InvalidOperationException("Invalid combination of parameters.")
};
if (_svgTask.IsCompletedSuccessfully)
{
RawSvg = _svgTask.Result;
}
}
protected override async Task OnInitializedAsync()
{
if (Kind is null)
{
throw new InvalidOperationException("Kind cannot be null.");
}
if (RawSvg is null && _svgTask is not null)
{
RawSvg = await _svgTask;
StateHasChanged();
}
}
}

View file

@ -1,25 +0,0 @@
namespace NSeguin.Dev.Web.Components.Shared;
public record HeroIconKind(string FileName)
{
private const string PathBase = "wwwroot/lib/heroicons";
private readonly Lazy<Task<string>> _solid = new(
() => File.ReadAllTextAsync(GetPath(FileName, false, false)));
private readonly Lazy<Task<string>> _outline = new(
() => File.ReadAllTextAsync(GetPath(FileName, false, true)));
private readonly Lazy<Task<string>> _small = new(
() => File.ReadAllTextAsync(GetPath(FileName, true, false)));
public string FileName { get; } = FileName;
internal Task<string> Solid => _solid.Value;
internal Task<string> Outline => _outline.Value;
internal Task<string> Small => _small.Value;
private static string GetPath(string fileName, bool small, bool outline)
{
return Path.Combine(PathBase, small ? "20" : "24", outline ? "outline" : "solid", fileName);
}
}

View file

@ -0,0 +1,65 @@
using System.Diagnostics;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Rendering;
namespace NSeguin.Dev.Web.Components.Shared.HeroIcons;
public partial class HeroIcon : ComponentBase
{
private Task<string>? _loadSvgTask;
private string? _rawSvg;
[Parameter] public HeroIconKind? Kind { get; set; }
[Parameter] public HeroIconVariant Variant { get; set; }
private string? RawSvg => _rawSvg;
protected override void BuildRenderTree(RenderTreeBuilder builder)
{
builder.AddMarkupContent(0, RawSvg);
}
protected override void OnParametersSet()
{
if (Kind is not { } kind)
{
throw new InvalidOperationException("Kind cannot be null.");
}
HeroIconParameters parameters = new(kind, Variant);
_loadSvgTask = parameters.GetSvgAsync();
if (_loadSvgTask.IsCompletedSuccessfully)
{
TrySetRawSvg(_loadSvgTask.Result);
}
else
{
_loadSvgTask.ContinueWith(
task => TrySetRawSvg(task.Result));
}
}
protected override async Task OnInitializedAsync()
{
if (Kind is null)
{
throw new InvalidOperationException("Kind cannot be null.");
}
if (RawSvg is null && _loadSvgTask is not null)
{
await _loadSvgTask;
}
}
private void TrySetRawSvg(string rawSvg)
{
Debug.Assert(_loadSvgTask is not null, "_loadSvgTask is not null");
if (Interlocked.CompareExchange(ref _rawSvg, _loadSvgTask.Result, null) is null)
{
StateHasChanged();
}
}
}

View file

@ -0,0 +1,3 @@
namespace NSeguin.Dev.Web.Components.Shared.HeroIcons;
public readonly record struct HeroIconKind(string FileName);

View file

@ -0,0 +1,43 @@
using System.Collections.Concurrent;
namespace NSeguin.Dev.Web.Components.Shared.HeroIcons;
internal readonly record struct HeroIconParameters(HeroIconKind Kind, HeroIconVariant Variant)
{
private const string PathBase = "wwwroot/lib/heroicons";
private static readonly ConcurrentDictionary<HeroIconParameters, string> SvgCache = new();
public Task<string> GetSvgAsync()
{
if (SvgCache.TryGetValue(this, out var svg))
{
return Task.FromResult(svg);
}
return LoadSvgAsync();
}
private static string GetPath(HeroIconVariant variant, HeroIconKind kind)
{
var pathSuffix = variant switch
{
HeroIconVariant.Solid => "24/solid",
HeroIconVariant.Outline => "24/outline",
HeroIconVariant.Small => "20/solid",
HeroIconVariant.ExtraSmall => "16/solid",
_ => throw new ArgumentOutOfRangeException(nameof(variant))
};
return Path.Combine(PathBase, pathSuffix, kind.FileName);
}
private string GetPath() => GetPath(Variant, Kind);
private async Task<string> LoadSvgAsync()
{
var path = GetPath();
var svg = await File.ReadAllTextAsync(path);
SvgCache.TryAdd(this, svg);
return svg;
}
}

View file

@ -0,0 +1,9 @@
namespace NSeguin.Dev.Web.Components.Shared.HeroIcons;
public enum HeroIconVariant
{
Solid,
Outline,
Small,
ExtraSmall
}

View file

@ -1,20 +0,0 @@
@inject NavigationManager Navigation
<AuthorizeView>
<Authorized>
Hello, @context.User.Identity?.Name!
<button class="nav-link btn btn-link" @onclick="BeginLogout">Log out</button>
</Authorized>
<NotAuthorized>
<a href="authentication/login">Log in</a>
</NotAuthorized>
</AuthorizeView>
@code{
private void BeginLogout(MouseEventArgs args)
{
Navigation.NavigateTo("authentication/logout");
}
}

View file

@ -1,10 +0,0 @@
@inject NavigationManager Navigation
@code {
protected override void OnInitialized()
{
Navigation.NavigateTo($"authentication/login?returnUrl={Uri.EscapeDataString(Navigation.Uri)}");
}
}

View file

@ -7,47 +7,58 @@
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\NSeguin.Dev.Web.Common\NSeguin.Dev.Web.Common.csproj" />
<ProjectReference Include="..\NSeguin.Dev.Web.Client\NSeguin.Dev.Web.Client.csproj" />
<ProjectReference Include="..\NSeguin.Dev.Web.HeroIconSourceGenerator\NSeguin.Dev.Web.HeroIconSourceGenerator.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false"/>
<ProjectReference Include="..\NSeguin.Dev.Web.Common\NSeguin.Dev.Web.Common.csproj"/>
<ProjectReference Include="..\NSeguin.Dev.Web.Client\NSeguin.Dev.Web.Client.csproj"/>
<ProjectReference Include="..\NSeguin.Dev.Web.HeroIcons.SourceGenerator\NSeguin.Dev.Web.HeroIcons.SourceGenerator.csproj" ReferenceOutputAssembly="false" OutputItemType="Analyzer"/>
</ItemGroup>
<ItemGroup>
<PackageReference Include="Azure.Extensions.AspNetCore.Configuration.Secrets" />
<PackageReference Include="Azure.Identity" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" />
<PackageReference Include="Microsoft.Extensions.Configuration.AzureAppConfiguration" />
<PackageReference Include="Microsoft.Identity.Web" />
<PackageReference Include="Microsoft.Identity.Web.UI" />
<PackageReference Include="Microsoft.Web.LibraryManager.Build" />
<PackageReference Include="Azure.Extensions.AspNetCore.Configuration.Secrets"/>
<PackageReference Include="Azure.Identity"/>
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer"/>
<PackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect"/>
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server"/>
<PackageReference Include="Microsoft.Extensions.Configuration.AzureAppConfiguration"/>
<PackageReference Include="Microsoft.Identity.Web"/>
<PackageReference Include="Microsoft.Identity.Web.UI"/>
<PackageReference Include="Microsoft.Web.LibraryManager.Build"/>
</ItemGroup>
<ItemGroup>
<UpToDateCheckBuilt Include="wwwroot/css/site.css" Set="Css" />
<TypeScriptCompile Include="..\..\tailwind.config.ts" Set="Css">
<UpToDateCheckBuilt Include="wwwroot/css/site.css" Set="Css"/>
<TypeScriptCompile Include="tailwind.config.ts" Set="Css">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</TypeScriptCompile>
</ItemGroup>
<ItemGroup>
<AdditionalFiles Include="wwwroot/lib/heroicons/**/*.svg" />
</ItemGroup>
<ItemGroup>
<Content Update="packages.lock.json">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
<CopyToPublishDirectory>Never</CopyToPublishDirectory>
<Content Remove="package.json"/>
<AdditionalFiles Include="package.json" CopyToOutputDirectory="Always"/>
<None Remove="pnpm-lock.yaml"/>
<AdditionalFiles Include="pnpm-lock.yaml" CopyToOutputDirectory="Always"/>
<Content Remove="libman.json"/>
<AdditionalFiles Include="libman.json" CopyToOutputDirectory="Always"/>
<Content Update="wwwroot\static\attributions.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Update="wwwroot\static\LICENSE.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<Target Name="NodeInstall" BeforeTargets="Build">
<Exec Command="pnpm install" />
<ItemGroup>
<AdditionalFiles Include="wwwroot/lib/heroicons/**/*" CopyToOutputDirectory="Always" CopyToPublishDirectory="Always"/>
</ItemGroup>
<ItemGroup>
<Folder Include="wwwroot\lib\heroicons\" />
</ItemGroup>
<Target Name="NodeInstall" BeforeTargets="TailwindBuild" Condition="'$(SkipNodeBuild)' != 'true'">
<Exec Command="pnpm install"/>
</Target>
<Target Name="TailwindBuild" BeforeTargets="Build">
<Exec Command="pnpm run css:build" />
<Target Name="TailwindBuild" BeforeTargets="Build" Condition="'$(SkipNodeBuild)' != 'true'">
<Exec Command="pnpm run css:build"/>
</Target>
</Project>

View file

@ -0,0 +1,2 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=components_005Cmodels/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>

View file

@ -1,6 +1,8 @@
using Azure.Identity;
using Microsoft.AspNetCore.Authentication.OpenIdConnect;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.FileProviders;
using Microsoft.Identity.Web;
using Microsoft.Identity.Web.UI;
using Microsoft.IdentityModel.Protocols.OpenIdConnect;
@ -30,6 +32,20 @@ builder.Services.AddRazorComponents()
.AddInteractiveServerComponents()
.AddInteractiveWebAssemblyComponents();
builder.Services.AddProblemDetails(
options =>
{
options.CustomizeProblemDetails = ctx =>
{
ctx.ProblemDetails.Extensions.TryAdd("traceId", ctx.HttpContext.TraceIdentifier);
if (ctx.HttpContext.RequestServices.GetRequiredService<IHostEnvironment>()
.IsDevelopment())
{
ctx.ProblemDetails.Extensions.TryAdd("exception", ctx.Exception?.ToString());
}
};
});
if (builder.Environment.IsStaging() || builder.Environment.IsProduction())
{
builder.Configuration.AddAzureAppConfiguration(
@ -45,7 +61,7 @@ if (builder.Environment.IsStaging() || builder.Environment.IsProduction())
}
a.Connect(connectionString)
.ConfigureKeyVault(kv => kv.SetCredential(new DefaultAzureCredential()));
.ConfigureKeyVault(kv => kv.SetCredential(new EnvironmentCredential()));
});
}
else
@ -67,16 +83,7 @@ builder.Services.Configure<OpenIdConnectOptions>(
});
builder.Services.AddTransient<IContactService, ContactService>();
builder.Services.AddOptions<MailSettings>()
.BindConfiguration("Mail")
.ValidateDataAnnotations()
.ValidateOnStart();
builder.Services.AddOptions<SmtpSettings>()
.BindConfiguration("Mail:Smtp")
.ValidateDataAnnotations()
.ValidateOnStart();
builder.Services.AddOptions<MailSettings>().BindConfiguration("Mail").ValidateDataAnnotations();
builder.Services.AddHttpLogging(
o =>
{
@ -84,7 +91,6 @@ builder.Services.AddHttpLogging(
});
builder.Services.AddNSeguinDevWebServer();
WebApplication app = builder.Build();
// Configure the HTTP request pipeline.
@ -95,8 +101,6 @@ if (app.Environment.IsDevelopment())
else
{
app.UseExceptionHandler("/Error", true);
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpLogging();
@ -109,14 +113,21 @@ app.UseAuthorization();
app.UseAntiforgery();
app.MapRazorComponents<App>()
.AddAdditionalAssemblies(typeof(Counter).Assembly)
.AddAdditionalAssemblies(typeof(AsyncEventHandler).Assembly)
.AddInteractiveServerRenderMode()
.AddInteractiveWebAssemblyRenderMode();
app.MapControllers();
app.UseExceptionHandler();
app.MapFallback(
ctx =>
{
ctx.Response.StatusCode = StatusCodes.Status404NotFound;
var headers = ctx.Request.GetTypedHeaders();
if (headers.Accept.Any(h => h.MatchesMediaType("text/html")))
{
ctx.Response.Redirect($"/NotFound?path={ctx.Request.Path}");
}
return Task.CompletedTask;
});

View file

@ -1,11 +1,10 @@
{
"version": "1.0",
"defaultProvider": "cdnjs",
"defaultDestination": "wwwroot/lib",
"libraries": [
{
"provider": "jsdelivr",
"library": "heroicons@2.0.18",
"library": "heroicons@2.1.1",
"destination": "wwwroot/lib/heroicons"
}
]

View file

@ -0,0 +1,19 @@
{
"name": "nseguin.dev.web",
"type": "module",
"peerDependencies": {
"typescript": "^5.0.0"
},
"scripts": {
"css:build": "pnpm tailwindcss -i ./wwwroot/css/site.css -o ./wwwroot/css/styles.css -c ./tailwind.config.ts --minify",
"css:watch": "pnpm tailwindcss -i ./wwwroot/css/site.css -o ./wwwroot/css/styles.css -c ./tailwind.config.ts --watch"
},
"dependencies": {
"@tailwindcss/aspect-ratio": "^0.4.2",
"@tailwindcss/container-queries": "^0.1.1",
"@tailwindcss/forms": "^0.5.7",
"@tailwindcss/typography": "^0.5.13",
"tailwind-nord": "^1.3.0",
"tailwindcss": "^3.4.4"
}
}

View file

@ -1,889 +0,0 @@
{
"version": 2,
"dependencies": {
"net8.0": {
"Azure.Extensions.AspNetCore.Configuration.Secrets": {
"type": "Direct",
"requested": "[1.3.1, )",
"resolved": "1.3.1",
"contentHash": "d5ItCzSmxo60GljWOi+QUcsGvtWHw01jyqT6cQtPZuOWCTiFKzvlzYr6XPfJ+0+wGzNKm4OcFk/3FdooXZM4dg==",
"dependencies": {
"Azure.Core": "1.37.0",
"Azure.Security.KeyVault.Secrets": "4.2.0",
"Microsoft.Extensions.Configuration": "2.1.0"
}
},
"Azure.Identity": {
"type": "Direct",
"requested": "[1.10.4, )",
"resolved": "1.10.4",
"contentHash": "hSvisZy9sld0Gik1X94od3+rRXCx+AKgi+iLH6fFdlnRZRePn7RtrqUGSsORiH2h8H2sc4NLTrnuUte1WL+QuQ==",
"dependencies": {
"Azure.Core": "1.36.0",
"Microsoft.Identity.Client": "4.56.0",
"Microsoft.Identity.Client.Extensions.Msal": "4.56.0",
"System.Memory": "4.5.4",
"System.Security.Cryptography.ProtectedData": "4.7.0",
"System.Text.Json": "4.7.2",
"System.Threading.Tasks.Extensions": "4.5.4"
}
},
"Microsoft.AspNetCore.Authentication.JwtBearer": {
"type": "Direct",
"requested": "[8.0.2, )",
"resolved": "8.0.2",
"contentHash": "7qJkk5k5jabATZZrMIQgpUB9yjDNAAApSqw+8d0FEyK1AJ4j+wv1qOMl2byUr837xbK+MjehtPnQ32yZ5Gtzlw==",
"dependencies": {
"Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.1.2"
}
},
"Microsoft.AspNetCore.Authentication.OpenIdConnect": {
"type": "Direct",
"requested": "[8.0.2, )",
"resolved": "8.0.2",
"contentHash": "UtCpLe0aGJg4DkJqImQOYUrURiDAbA+rGj8lDoW9rGeIH0/fMB9bY+lDK6uh23W2KDhH7F+qlFaWWmM5dtxdjA==",
"dependencies": {
"Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.1.2"
}
},
"Microsoft.AspNetCore.Components.WebAssembly.Server": {
"type": "Direct",
"requested": "[8.0.2, )",
"resolved": "8.0.2",
"contentHash": "jLz0lMv/sMC4qTEfydoA7sYsdg9ETGLjm06f8cTlpfo+2vYMMSwZy9HzJs1ATwhnF7xdk3Te7CUmaHzr+pFIhw=="
},
"Microsoft.Extensions.Configuration.AzureAppConfiguration": {
"type": "Direct",
"requested": "[7.0.0, )",
"resolved": "7.0.0",
"contentHash": "ef49XuB+STPg0Yw/UcDKEyom5qm9dR1klR/PLVpAX6+hRdBuQOffZfilbfTNAYT6jsn3dgRjsOtq90hYlcI9vQ==",
"dependencies": {
"Azure.Data.AppConfiguration": "1.3.0",
"Azure.Messaging.EventGrid": "4.7.0",
"Azure.Security.KeyVault.Secrets": "4.3.0",
"Microsoft.Extensions.Configuration": "6.0.1",
"Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
"Microsoft.Extensions.Logging": "6.0.0"
}
},
"Microsoft.Identity.Web": {
"type": "Direct",
"requested": "[2.17.0, )",
"resolved": "2.17.0",
"contentHash": "iNAPu3XiLpfczHkyjshd1OdvOp0aFPgCqhM3CsiIlT7A5TLH+03+kYI0DtXMns47Cmkzj87VpuFzQwe0J5ofrg==",
"dependencies": {
"Microsoft.Extensions.Http": "3.1.3",
"Microsoft.Identity.Web.Certificate": "2.17.0",
"Microsoft.Identity.Web.Certificateless": "2.17.0",
"Microsoft.Identity.Web.TokenAcquisition": "2.17.0",
"Microsoft.Identity.Web.TokenCache": "2.17.0",
"Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.3.1",
"Microsoft.IdentityModel.Validators": "7.3.1",
"System.IdentityModel.Tokens.Jwt": "7.3.1"
}
},
"Microsoft.Identity.Web.UI": {
"type": "Direct",
"requested": "[2.17.0, )",
"resolved": "2.17.0",
"contentHash": "I2q7t02znPMKIBA50nOMh8jbkMOMHAKkxfzvEwmSrUoMzRGgRSn5ofhCmLG1xbFDbQ24KFoTr8XVQnMg2eu1cQ==",
"dependencies": {
"Microsoft.Identity.Web": "2.17.0"
}
},
"Microsoft.Web.LibraryManager.Build": {
"type": "Direct",
"requested": "[2.1.175, )",
"resolved": "2.1.175",
"contentHash": "OhJ8cfzvX/rxCuEezniBQCaCqKuQtU2tNr3m3Qryu+V30lZcUrjtsg39DGZWLw6EzbJA+TUdZPfuLeEDuz3cXA==",
"dependencies": {
"System.Runtime.Loader": "4.3.0"
}
},
"StyleCop.Analyzers": {
"type": "Direct",
"requested": "[1.2.0-beta.507, )",
"resolved": "1.2.0-beta.507",
"contentHash": "/FtugDT66cKJJ+GGH7rNpG6UDrT4iIWz45M6lrXXHobDUFDHw+q5VgkbiR+6ffTO564ge7w6fQh/eoQhVdJO8Q==",
"dependencies": {
"StyleCop.Analyzers.Unstable": "1.2.0.507"
}
},
"Azure.Core": {
"type": "Transitive",
"resolved": "1.37.0",
"contentHash": "ZSWV/ftBM/c/+Eo2hlzeEWntjqNG+8TWXX/DAKjBSWIf7nEvFILQoJL7JZx5HjypDvdNUMj5J2ji8ZpFFSghSg==",
"dependencies": {
"Microsoft.Bcl.AsyncInterfaces": "1.1.1",
"System.Diagnostics.DiagnosticSource": "6.0.1",
"System.Memory.Data": "1.0.2",
"System.Numerics.Vectors": "4.5.0",
"System.Text.Encodings.Web": "4.7.2",
"System.Text.Json": "4.7.2",
"System.Threading.Tasks.Extensions": "4.5.4"
}
},
"Azure.Data.AppConfiguration": {
"type": "Transitive",
"resolved": "1.3.0",
"contentHash": "9f+HzKqf56R2clVMBbbC6u1aQiiL6ov+7e3evcrMFo+cuhKGZhPWKO7vLLun8u3pY2jQ6VJ7ltZZyvzapYZNhA==",
"dependencies": {
"Azure.Core": "1.35.0",
"Microsoft.Bcl.AsyncInterfaces": "1.1.1",
"System.Text.Json": "4.7.2"
}
},
"Azure.Messaging.EventGrid": {
"type": "Transitive",
"resolved": "4.7.0",
"contentHash": "Wm5+RY6hNoIPVLPwmr3T1ijVm5GdLVZBij93c4Brwe9iB3X8nlUYNjlnQVVJqK4QLs85nGwqBGUpB4BfYdGXVQ==",
"dependencies": {
"Azure.Core": "1.20.0",
"System.Memory.Data": "1.0.2",
"System.Text.Json": "4.6.0"
}
},
"Azure.Security.KeyVault.Certificates": {
"type": "Transitive",
"resolved": "4.5.1",
"contentHash": "fUUUhs77HPVJZ1ZqKIpCo6qrYDAeol2EzpwIK1j/14HD1DKB2EIWu0FsmtNLivpc6mPI4OA+YPfJpDzu47Azuw==",
"dependencies": {
"Azure.Core": "1.30.0",
"System.Memory": "4.5.4",
"System.Text.Json": "4.7.2",
"System.Threading.Tasks.Extensions": "4.5.4"
}
},
"Azure.Security.KeyVault.Secrets": {
"type": "Transitive",
"resolved": "4.5.0",
"contentHash": "ztr26Ai4K7AZGuw68/ffLDn+2G3WL0myjC7nY1RYkxPMnsplTPEH+Ke4RGxvSkg4kC7bJ9NwdlqpEwfDX0qhdw==",
"dependencies": {
"Azure.Core": "1.30.0",
"System.Memory": "4.5.4",
"System.Text.Json": "4.7.2",
"System.Threading.Tasks.Extensions": "4.5.4"
}
},
"Microsoft.AspNetCore.Authorization": {
"type": "Transitive",
"resolved": "8.0.2",
"contentHash": "Z4fjwzXxsdk3GpNBd1SjltifmxWD0jpS3iWCxCjeXQecoQ1+1Nbgbv1ZTbQw2uDVbuEwpfz5cTmRgocG3HBNAA==",
"dependencies": {
"Microsoft.AspNetCore.Metadata": "8.0.2",
"Microsoft.Extensions.Logging.Abstractions": "8.0.0",
"Microsoft.Extensions.Options": "8.0.2"
}
},
"Microsoft.AspNetCore.Components": {
"type": "Transitive",
"resolved": "8.0.2",
"contentHash": "ZDqYhmsnBrMMEyFC8fDHuwXz7MTpWzqegEr2+4gImKc0Zgbo7iaIiN0FAw5Lg5dovTrTvbZnPetRYTve2ca6rg==",
"dependencies": {
"Microsoft.AspNetCore.Authorization": "8.0.2",
"Microsoft.AspNetCore.Components.Analyzers": "8.0.2"
}
},
"Microsoft.AspNetCore.Components.Analyzers": {
"type": "Transitive",
"resolved": "8.0.2",
"contentHash": "wN8FAgVCiWGv0n2pUShnugPVlJxuTjLS+V7D/OsUxNaMPyoyhmVwp11+WrOCEWJ5sif5/WqTCJcVmUyi3aT/ZA=="
},
"Microsoft.AspNetCore.Components.Forms": {
"type": "Transitive",
"resolved": "8.0.2",
"contentHash": "EIlY3Mx1N+Ag2kT5DVsxAZ9b2nKt91iutGkMWlkU293sYbEQV+JpmeHKOee4JYFdk0gjDK5XrSdKzokxQ8nmxw==",
"dependencies": {
"Microsoft.AspNetCore.Components": "8.0.2"
}
},
"Microsoft.AspNetCore.Components.Web": {
"type": "Transitive",
"resolved": "8.0.2",
"contentHash": "VRgjn/vAvrPEXTroe2ulzGXNwqp2imiAeEmrtAmEK8tUC7h2WLFciHithpeo2t2nbA7uuC4bAi+4tdbBEvzDQQ==",
"dependencies": {
"Microsoft.AspNetCore.Components": "8.0.2",
"Microsoft.AspNetCore.Components.Forms": "8.0.2",
"Microsoft.Extensions.DependencyInjection": "8.0.0",
"Microsoft.Extensions.Primitives": "8.0.0",
"Microsoft.JSInterop": "8.0.2",
"System.IO.Pipelines": "8.0.0"
}
},
"Microsoft.AspNetCore.Cryptography.Internal": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "buuMMCTxFcVkOkEftb2OafYxrveNGre9KJF4Oi1DkR4rxIj6oLam7Wq3g0Fp9hNVpJteKEPiupsxYnPrD/oUGA=="
},
"Microsoft.AspNetCore.DataProtection": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "XNeup9/wVm9orvynhmhRHh1GOHbboXoCyz0jp+LcNcHWYyMEEJyZKSpyh3TNKgM9sBMIDwrj8aSVPm81GGjzNQ==",
"dependencies": {
"Microsoft.AspNetCore.Cryptography.Internal": "8.0.0",
"Microsoft.AspNetCore.DataProtection.Abstractions": "8.0.0",
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Hosting.Abstractions": "8.0.0",
"Microsoft.Extensions.Logging.Abstractions": "8.0.0",
"Microsoft.Extensions.Options": "8.0.0",
"System.Security.Cryptography.Xml": "8.0.0"
}
},
"Microsoft.AspNetCore.DataProtection.Abstractions": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "ObNtj57DXbIIVAhNSKA6/c1/EaW35Dct480dzZ9NPXZ2fw3Z5FS/xiKKC7+1R2PBwt2Vw7a2Amu1tNvBKwyFNQ=="
},
"Microsoft.AspNetCore.Metadata": {
"type": "Transitive",
"resolved": "8.0.2",
"contentHash": "1m54fAfHzui+0twvU6VtUApM+aUaBR3G3YZNWxGH+c62hOFkZQX/Tm5FzptADUcr8wCPvIaRPbGx77upepk7rw=="
},
"Microsoft.Bcl.AsyncInterfaces": {
"type": "Transitive",
"resolved": "1.1.1",
"contentHash": "yuvf07qFWFqtK3P/MRkEKLhn5r2UbSpVueRziSqj0yJQIKFwG1pq9mOayK3zE5qZCTs0CbrwL9M6R8VwqyGy2w=="
},
"Microsoft.Extensions.Caching.Abstractions": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "3KuSxeHoNYdxVYfg2IRZCThcrlJ1XJqIXkAWikCsbm5C/bCjv7G0WoKDyuR98Q+T607QT2Zl5GsbGRkENcV2yQ==",
"dependencies": {
"Microsoft.Extensions.Primitives": "8.0.0"
}
},
"Microsoft.Extensions.Caching.Memory": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "7pqivmrZDzo1ADPkRwjy+8jtRKWRCPag9qPI+p7sgu7Q4QreWhcvbiWXsbhP+yY8XSiDvZpu2/LWdBv7PnmOpQ==",
"dependencies": {
"Microsoft.Extensions.Caching.Abstractions": "8.0.0",
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Logging.Abstractions": "8.0.0",
"Microsoft.Extensions.Options": "8.0.0",
"Microsoft.Extensions.Primitives": "8.0.0"
}
},
"Microsoft.Extensions.Configuration.Abstractions": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "3lE/iLSutpgX1CC0NOW70FJoGARRHbyKmG7dc0klnUZ9Dd9hS6N/POPWhKhMLCEuNN5nXEY5agmlFtH562vqhQ==",
"dependencies": {
"Microsoft.Extensions.Primitives": "8.0.0"
}
},
"Microsoft.Extensions.Configuration.FileExtensions": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "McP+Lz/EKwvtCv48z0YImw+L1gi1gy5rHhNaNIY2CrjloV+XY8gydT8DjMR6zWeL13AFK+DioVpppwAuO1Gi1w==",
"dependencies": {
"Microsoft.Extensions.Configuration": "8.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.FileProviders.Abstractions": "8.0.0",
"Microsoft.Extensions.FileProviders.Physical": "8.0.0",
"Microsoft.Extensions.Primitives": "8.0.0"
}
},
"Microsoft.Extensions.Configuration.Json": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "C2wqUoh9OmRL1akaCcKSTmRU8z0kckfImG7zLNI8uyi47Lp+zd5LWAD17waPQEqCz3ioWOCrFUo+JJuoeZLOBw==",
"dependencies": {
"Microsoft.Extensions.Configuration": "8.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.Configuration.FileExtensions": "8.0.0",
"Microsoft.Extensions.FileProviders.Abstractions": "8.0.0",
"System.Text.Json": "8.0.0"
}
},
"Microsoft.Extensions.DependencyInjection": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "V8S3bsm50ig6JSyrbcJJ8bW2b9QLGouz+G1miK3UTaOWmMtFwNNNzUf4AleyDWUmTrWMLNnFSLEQtxmxgNQnNQ==",
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0"
}
},
"Microsoft.Extensions.Diagnostics": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "3PZp/YSkIXrF7QK7PfC1bkyRYwqOHpWFad8Qx+4wkuumAeXo1NHaxpS9LboNA9OvNSAu+QOVlXbMyoY+pHSqcw==",
"dependencies": {
"Microsoft.Extensions.Configuration": "8.0.0",
"Microsoft.Extensions.Diagnostics.Abstractions": "8.0.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0"
}
},
"Microsoft.Extensions.Diagnostics.Abstractions": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "JHYCQG7HmugNYUhOl368g+NMxYE/N/AiclCYRNlgCY9eVyiBkOHMwK4x60RYMxv9EL3+rmj1mqHvdCiPpC+D4Q==",
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Options": "8.0.0",
"System.Diagnostics.DiagnosticSource": "8.0.0"
}
},
"Microsoft.Extensions.FileProviders.Abstractions": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "ZbaMlhJlpisjuWbvXr4LdAst/1XxH3vZ6A0BsgTphZ2L4PGuxRLz7Jr/S7mkAAnOn78Vu0fKhEgNF5JO3zfjqQ==",
"dependencies": {
"Microsoft.Extensions.Primitives": "8.0.0"
}
},
"Microsoft.Extensions.FileProviders.Physical": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "UboiXxpPUpwulHvIAVE36Knq0VSHaAmfrFkegLyBZeaADuKezJ/AIXYAW8F5GBlGk/VaibN2k/Zn1ca8YAfVdA==",
"dependencies": {
"Microsoft.Extensions.FileProviders.Abstractions": "8.0.0",
"Microsoft.Extensions.FileSystemGlobbing": "8.0.0",
"Microsoft.Extensions.Primitives": "8.0.0"
}
},
"Microsoft.Extensions.FileSystemGlobbing": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "OK+670i7esqlQrPjdIKRbsyMCe9g5kSLpRRQGSr4Q58AOYEe/hCnfLZprh7viNisSUUQZmMrbbuDaIrP+V1ebQ=="
},
"Microsoft.Extensions.Hosting.Abstractions": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "AG7HWwVRdCHlaA++1oKDxLsXIBxmDpMPb3VoyOoAghEWnkUvEAdYQUwnV4jJbAaa/nMYNiEh5ByoLauZBEiovg==",
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Diagnostics.Abstractions": "8.0.0",
"Microsoft.Extensions.FileProviders.Abstractions": "8.0.0",
"Microsoft.Extensions.Logging.Abstractions": "8.0.0"
}
},
"Microsoft.Extensions.Logging": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "tvRkov9tAJ3xP51LCv3FJ2zINmv1P8Hi8lhhtcKGqM+ImiTCC84uOPEI4z8Cdq2C3o9e+Aa0Gw0rmrsJD77W+w==",
"dependencies": {
"Microsoft.Extensions.DependencyInjection": "8.0.0",
"Microsoft.Extensions.Logging.Abstractions": "8.0.0",
"Microsoft.Extensions.Options": "8.0.0"
}
},
"Microsoft.Extensions.Logging.Abstractions": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "arDBqTgFCyS0EvRV7O3MZturChstm50OJ0y9bDJvAcmEPJm0FFpFyjU/JLYyStNGGey081DvnQYlncNX5SJJGA==",
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0"
}
},
"Microsoft.Extensions.Primitives": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "bXJEZrW9ny8vjMF1JV253WeLhpEVzFo1lyaZu1vQ4ZxWUlVvknZ/+ftFgVheLubb4eZPSwwxBeqS1JkCOjxd8g=="
},
"Microsoft.Identity.Abstractions": {
"type": "Transitive",
"resolved": "5.1.0",
"contentHash": "GctoEcSJcmfw1rSmgVtH99jmawQjVGitDaSOHe+WfazPpzvf9eh+ovWbECZ8MIPL7NFzaj+d6ZwuDu3kzcy7ig=="
},
"Microsoft.Identity.Client": {
"type": "Transitive",
"resolved": "4.59.0",
"contentHash": "PbuMAe/h1/WoEqhHwJ4UhmL6pdo1ZxeesWyhKyhSF/S653c0i1XX8DSFLVia+WT1+j3ppqBYFyfrQgwatlaU+Q==",
"dependencies": {
"Microsoft.IdentityModel.Abstractions": "6.22.0",
"System.Diagnostics.DiagnosticSource": "6.0.1"
}
},
"Microsoft.Identity.Web.Certificate": {
"type": "Transitive",
"resolved": "2.17.0",
"contentHash": "Dsl8BajwWWpKqQ+Lx57q+IBMnuq92JK4PbmjkfyKtwTXPiAlFG1SqLqC5bV49UhTlpVEz7mUk6q6TJchiTbBPQ==",
"dependencies": {
"Azure.Identity": "1.10.4",
"Azure.Security.KeyVault.Certificates": "4.5.1",
"Azure.Security.KeyVault.Secrets": "4.5.0",
"Microsoft.Identity.Abstractions": "5.1.0",
"Microsoft.Identity.Web.Certificateless": "2.17.0",
"Microsoft.Identity.Web.Diagnostics": "2.17.0"
}
},
"Microsoft.Identity.Web.Certificateless": {
"type": "Transitive",
"resolved": "2.17.0",
"contentHash": "1FJtyCzzCNgMnevjPBTR8/9jgbGfkoZawl9PYj3AaLYYcpYNxOyhjYLchQWuobh4tBVntVr0fl7sE0SXBST9tg==",
"dependencies": {
"Azure.Identity": "1.10.4",
"Microsoft.Extensions.Logging.Abstractions": "2.1.0",
"Microsoft.IdentityModel.JsonWebTokens": "6.35.0",
"System.Text.Encodings.Web": "4.7.2"
}
},
"Microsoft.Identity.Web.Diagnostics": {
"type": "Transitive",
"resolved": "2.17.0",
"contentHash": "tPuJeTaJ+g1d/z3V8IgQFYvyt5euM5GiftpBiVYMIoO3R5Fliq0sJE8Jx/wurAfOO1tqaiollK6a33l22qt3kg=="
},
"Microsoft.Identity.Web.TokenAcquisition": {
"type": "Transitive",
"resolved": "2.17.0",
"contentHash": "YCy3Vxl0m8Jpt+LlFl44ojxG1IKuZLbvIcVS1fGV8lYHj3J2cXRe7+EEitNexIBrQ3Zi6piomM9TS9bjygXP4g==",
"dependencies": {
"Microsoft.AspNetCore.Authentication.JwtBearer": "8.0.0",
"Microsoft.AspNetCore.Authentication.OpenIdConnect": "8.0.0",
"Microsoft.Extensions.Http": "3.1.3",
"Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0",
"Microsoft.Identity.Abstractions": "5.1.0",
"Microsoft.Identity.Web.Certificate": "2.17.0",
"Microsoft.Identity.Web.Certificateless": "2.17.0",
"Microsoft.Identity.Web.TokenCache": "2.17.0",
"Microsoft.IdentityModel.Logging": "7.3.1",
"Microsoft.IdentityModel.LoggingExtensions": "7.3.1",
"Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.3.1",
"System.IdentityModel.Tokens.Jwt": "7.3.1"
}
},
"Microsoft.Identity.Web.TokenCache": {
"type": "Transitive",
"resolved": "2.17.0",
"contentHash": "Qmerm3BTDTMXxRb4ZPqCF1SYYfxehaY0xP/KqE2RnkT1MgrDYF6/dmhjy4ga/N5xCVo9F6u9taHFnT16nJsFvg==",
"dependencies": {
"Microsoft.AspNetCore.DataProtection": "8.0.0",
"Microsoft.Extensions.Caching.Memory": "8.0.0",
"Microsoft.Extensions.Logging": "8.0.0",
"Microsoft.Identity.Client": "4.59.0",
"Microsoft.Identity.Web.Diagnostics": "2.17.0",
"System.Security.Cryptography.Pkcs": "8.0.0",
"System.Security.Cryptography.Xml": "8.0.0"
}
},
"Microsoft.IdentityModel.Abstractions": {
"type": "Transitive",
"resolved": "7.3.1",
"contentHash": "gIw8Sr5ZpuzKFBTfJonh2F54DivTzm5IIK15QB4Y6uE30uQdEO1NnCojTC/b6sWZoZzD0sdBa6SqwMXhucD+nA=="
},
"Microsoft.IdentityModel.JsonWebTokens": {
"type": "Transitive",
"resolved": "7.3.1",
"contentHash": "mXA6AoaD5uZqtsKghgRiupBhyXNii8p9F2BjNLnDGud0tZLS5+4Fio2YAGjFXhnkc80CqgQ61X5U1gUNnDEoKQ==",
"dependencies": {
"Microsoft.IdentityModel.Tokens": "7.3.1"
}
},
"Microsoft.IdentityModel.Logging": {
"type": "Transitive",
"resolved": "7.3.1",
"contentHash": "uPt2aiRUCbcOc0Wk+dDCSClFfPNs3S3Z7fmy50MoxJ1mGmtVUDMpyRJeYzZ/16x4rL19T+g2zrzjcWoitp5+gQ==",
"dependencies": {
"Microsoft.IdentityModel.Abstractions": "7.3.1"
}
},
"Microsoft.IdentityModel.LoggingExtensions": {
"type": "Transitive",
"resolved": "7.3.1",
"contentHash": "CJGUiST+tPVssfDrjrkzwWXlN7ZMw+yuI59dYz17vyRfAW3PPkCYCnqOCHiJSO0D0isQD0C8dah++Pk9cKae1w==",
"dependencies": {
"Microsoft.Extensions.Logging.Abstractions": "2.1.1",
"Microsoft.IdentityModel.Abstractions": "7.3.1"
}
},
"Microsoft.IdentityModel.Protocols": {
"type": "Transitive",
"resolved": "7.3.1",
"contentHash": "BA+048lSJsWecQDaRYoEAtvSxb9LKv54eku1jiWHc5Giu0FG5nNgm/pKiBheOJSmXw2ZPl048HyqotDzDU6jXg==",
"dependencies": {
"Microsoft.IdentityModel.Logging": "7.3.1",
"Microsoft.IdentityModel.Tokens": "7.3.1"
}
},
"Microsoft.IdentityModel.Protocols.OpenIdConnect": {
"type": "Transitive",
"resolved": "7.3.1",
"contentHash": "TK3XOKE+7/BXciZyn71K8Csyr4zYbyo0EA/G5AUSR8wfrh3NBCwhytJeKq8QN41bJV++8xAmqesR9g/paoQ2zg==",
"dependencies": {
"Microsoft.IdentityModel.Protocols": "7.3.1",
"System.IdentityModel.Tokens.Jwt": "7.3.1"
}
},
"Microsoft.IdentityModel.Tokens": {
"type": "Transitive",
"resolved": "7.3.1",
"contentHash": "/c/p8/3CAH706c0ii5uTgSb/8M/jwyuurtdMeKTBeKFU9aA+EZrLu1M8aaS3CSlGaxoxsoaxr4/+KXykgQ4VgQ==",
"dependencies": {
"Microsoft.IdentityModel.Logging": "7.3.1"
}
},
"Microsoft.IdentityModel.Validators": {
"type": "Transitive",
"resolved": "7.3.1",
"contentHash": "O+O8W1e+ARtu/YYnDiuWw3cLsB4CoCCk15qQDjFyf6Gg+e/aHLentt8QIHbIkgzZd7o4aR6BZG5dF8vmGHB0bg==",
"dependencies": {
"Microsoft.IdentityModel.Protocols": "7.3.1",
"Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.3.1",
"Microsoft.IdentityModel.Tokens": "7.3.1",
"System.IdentityModel.Tokens.Jwt": "7.3.1"
}
},
"Microsoft.JSInterop": {
"type": "Transitive",
"resolved": "8.0.2",
"contentHash": "gpzpEohjQMMYlZAqP/haXj2TeQv6p/WrVhtQCearXCz00Gr/gyFA8QlXLqVZW2XKxdQ/3eAtKKtiBFGJg39OiA=="
},
"Microsoft.JSInterop.WebAssembly": {
"type": "Transitive",
"resolved": "8.0.2",
"contentHash": "WXUfnWayu7oT1Wq1/k7yZCJvZXs9SwZZPoQtF/RUl5W8URMa+obK2DTzEaWGQF9x3F92YWdYs78mT7KR23kY3g==",
"dependencies": {
"Microsoft.JSInterop": "8.0.2"
}
},
"Microsoft.NETCore.Platforms": {
"type": "Transitive",
"resolved": "5.0.0",
"contentHash": "VyPlqzH2wavqquTcYpkIIAQ6WdenuKoFN0BdYBbCWsclXacSOHNQn66Gt4z5NBqEYW0FAPm5rlvki9ZiCij5xQ=="
},
"Microsoft.NETCore.Targets": {
"type": "Transitive",
"resolved": "1.1.0",
"contentHash": "aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg=="
},
"StyleCop.Analyzers.Unstable": {
"type": "Transitive",
"resolved": "1.2.0.507",
"contentHash": "gTY3IQdRqDJ4hbhSA3e/R48oE8b/OiKfvwkt1QdNVfrJK2gMHBV8ldaHJ885jxWZfllK66soa/sdcjh9bX49Tw=="
},
"System.Diagnostics.DiagnosticSource": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "c9xLpVz6PL9lp/djOWtk5KPDZq3cSYpmXoJQY524EOtuFl5z9ZtsotpsyrDW40U1DRnQSYvcPKEUV0X//u6gkQ=="
},
"System.Formats.Asn1": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "AJukBuLoe3QeAF+mfaRKQb2dgyrvt340iMBHYv+VdBzCUM06IxGlvl0o/uPOS7lHnXPN6u8fFRHSHudx5aTi8w=="
},
"System.IdentityModel.Tokens.Jwt": {
"type": "Transitive",
"resolved": "7.3.1",
"contentHash": "iE8biOWyAC1NnYcZGcgXErNACvIQ6Gcmg5s28gsjVbyyYdF9NdKsYzAPAsO3KGK86EQjpToI1AO82XbG8chkzA==",
"dependencies": {
"Microsoft.IdentityModel.JsonWebTokens": "7.3.1",
"Microsoft.IdentityModel.Tokens": "7.3.1"
}
},
"System.IO": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Threading.Tasks": "4.3.0"
}
},
"System.IO.FileSystem.AccessControl": {
"type": "Transitive",
"resolved": "5.0.0",
"contentHash": "SxHB3nuNrpptVk+vZ/F+7OHEpoHUIKKMl02bUmYHQr1r+glbZQxs7pRtsf4ENO29TVm2TH3AEeep2fJcy92oYw==",
"dependencies": {
"System.Security.AccessControl": "5.0.0",
"System.Security.Principal.Windows": "5.0.0"
}
},
"System.IO.Pipelines": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "FHNOatmUq0sqJOkTx+UF/9YK1f180cnW5FVqnQMvYUN0elp6wFzbtPSiqbo1/ru8ICp43JM1i7kKkk6GsNGHlA=="
},
"System.Memory": {
"type": "Transitive",
"resolved": "4.5.4",
"contentHash": "1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw=="
},
"System.Memory.Data": {
"type": "Transitive",
"resolved": "1.0.2",
"contentHash": "JGkzeqgBsiZwKJZ1IxPNsDFZDhUvuEdX8L8BDC8N3KOj+6zMcNU28CNN59TpZE/VJYy9cP+5M+sbxtWJx3/xtw==",
"dependencies": {
"System.Text.Encodings.Web": "4.7.2",
"System.Text.Json": "4.6.0"
}
},
"System.Numerics.Vectors": {
"type": "Transitive",
"resolved": "4.5.0",
"contentHash": "QQTlPTl06J/iiDbJCiepZ4H//BVraReU4O4EoRw1U02H5TLUIT7xn3GnDp9AXPSlJUDyFs4uWjWafNX6WrAojQ=="
},
"System.Reflection": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.IO": "4.3.0",
"System.Reflection.Primitives": "4.3.0",
"System.Runtime": "4.3.0"
}
},
"System.Reflection.Primitives": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Runtime": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0"
}
},
"System.Runtime.Loader": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "DHMaRn8D8YCK2GG2pw+UzNxn/OHVfaWx7OTLBD/hPegHZZgcZh3H6seWegrC4BYwsfuGrywIuT+MQs+rPqRLTQ==",
"dependencies": {
"System.IO": "4.3.0",
"System.Reflection": "4.3.0",
"System.Runtime": "4.3.0"
}
},
"System.Security.AccessControl": {
"type": "Transitive",
"resolved": "5.0.0",
"contentHash": "dagJ1mHZO3Ani8GH0PHpPEe/oYO+rVdbQjvjJkBRNQkX4t0r1iaeGn8+/ybkSLEan3/slM0t59SVdHzuHf2jmw==",
"dependencies": {
"Microsoft.NETCore.Platforms": "5.0.0",
"System.Security.Principal.Windows": "5.0.0"
}
},
"System.Security.Cryptography.Pkcs": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "ULmp3xoOwNYjOYp4JZ2NK/6NdTgiN1GQXzVVN1njQ7LOZ0d0B9vyMnhyqbIi9Qw4JXj1JgCsitkTShboHRx7Eg==",
"dependencies": {
"System.Formats.Asn1": "8.0.0"
}
},
"System.Security.Cryptography.ProtectedData": {
"type": "Transitive",
"resolved": "4.7.0",
"contentHash": "ehYW0m9ptxpGWvE4zgqongBVWpSDU/JCFD4K7krxkQwSz/sFQjEXCUqpvencjy6DYDbn7Ig09R8GFffu8TtneQ=="
},
"System.Security.Cryptography.Xml": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "HQSFbakswZ1OXFz2Bt3AJlC6ENDqWeVpgqhf213xqQUMDifzydOHIKVb1RV4prayobvR3ETIScMaQdDF2hwGZA==",
"dependencies": {
"System.Security.Cryptography.Pkcs": "8.0.0"
}
},
"System.Security.Principal.Windows": {
"type": "Transitive",
"resolved": "5.0.0",
"contentHash": "t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA=="
},
"System.Text.Encoding": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Text.Encodings.Web": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ=="
},
"System.Text.Json": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "OdrZO2WjkiEG6ajEFRABTRCi/wuXQPxeV6g8xvUJqdxMvvuCCEk86zPla8UiIQJz3durtUEbNyY/3lIhS0yZvQ==",
"dependencies": {
"System.Text.Encodings.Web": "8.0.0"
}
},
"System.Threading.Tasks": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Threading.Tasks.Extensions": {
"type": "Transitive",
"resolved": "4.5.4",
"contentHash": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg=="
},
"nseguin.dev.web.client": {
"type": "Project",
"dependencies": {
"Microsoft.AspNetCore.Components.WebAssembly": "[8.0.2, )",
"Microsoft.AspNetCore.Components.WebAssembly.DevServer": "[8.0.2, )",
"Microsoft.Extensions.Http": "[8.0.0, )",
"NSeguin.Dev.Web.Common": "[1.0.0, )"
}
},
"nseguin.dev.web.common": {
"type": "Project",
"dependencies": {
"Blazored.LocalStorage": "[4.5.0, )",
"CommunityToolkit.Common": "[8.2.2, )",
"CommunityToolkit.Mvvm": "[8.2.2, )",
"JetBrains.Annotations": "[2023.3.0, )",
"Microsoft.Extensions.Configuration": "[8.0.0, )",
"Microsoft.Extensions.Configuration.Binder": "[8.0.1, )",
"Microsoft.Extensions.DependencyInjection.Abstractions": "[8.0.0, )",
"Microsoft.Extensions.Options": "[8.0.2, )",
"Microsoft.Extensions.Options.ConfigurationExtensions": "[8.0.0, )",
"Microsoft.Extensions.Options.DataAnnotations": "[8.0.0, )"
}
},
"Blazored.LocalStorage": {
"type": "CentralTransitive",
"requested": "[4.5.0, )",
"resolved": "4.5.0",
"contentHash": "6nZuJwA7zNIKx83IsObiHXZb09ponJOpCClU3en+hI8ZFvrOKXeOw+H7TegQZQrvdR1n9fkrVkEBQZg8vx6ZTw==",
"dependencies": {
"Microsoft.AspNetCore.Components.Web": "8.0.0"
}
},
"CommunityToolkit.Common": {
"type": "CentralTransitive",
"requested": "[8.2.2, )",
"resolved": "8.2.2",
"contentHash": "8/enuV1R68d0hK66UO8/HQ3yEsMjxUqondiEXlA499XB3tYgIqhCM+ITe8fHfH3l4JN3gY6h21SvkJnxfaG3NQ=="
},
"CommunityToolkit.Mvvm": {
"type": "CentralTransitive",
"requested": "[8.2.2, )",
"resolved": "8.2.2",
"contentHash": "r0g0k9tGYdrnz8R7T3x5UiokDffeevzK/2P/9SBL6fqLgN8B157MIi/bVUWI1KAz6ZorZrK9AdABCWUeXZZsvA=="
},
"JetBrains.Annotations": {
"type": "CentralTransitive",
"requested": "[2023.3.0, )",
"resolved": "2023.3.0",
"contentHash": "PHfnvdBUdGaTVG9bR/GEfxgTwWM0Z97Y6X3710wiljELBISipSfF5okn/vz+C2gfO+ihoEyVPjaJwn8ZalVukA=="
},
"Microsoft.AspNetCore.Components.WebAssembly": {
"type": "CentralTransitive",
"requested": "[8.0.2, )",
"resolved": "8.0.2",
"contentHash": "sRcIKOItL1PUmPkUz6EO07b77wWD4gyyhX7gK7JQ/bgk7HSBT7HRmfsOB/U6x/9V6IZpe5laG2G19Nfccl6lkw==",
"dependencies": {
"Microsoft.AspNetCore.Components.Web": "8.0.2",
"Microsoft.Extensions.Configuration.Binder": "8.0.1",
"Microsoft.Extensions.Configuration.Json": "8.0.0",
"Microsoft.Extensions.Logging": "8.0.0",
"Microsoft.JSInterop.WebAssembly": "8.0.2"
}
},
"Microsoft.AspNetCore.Components.WebAssembly.DevServer": {
"type": "CentralTransitive",
"requested": "[8.0.2, )",
"resolved": "8.0.2",
"contentHash": "upzF6ckTFwTzTIh4PJ/wS5uOg4tk/OM7x1gvY/xkCBR1agDeZK7ObAcvv+h4Bs8B528H0ToTXUpeLipNPEbIrA=="
},
"Microsoft.Extensions.Configuration": {
"type": "CentralTransitive",
"requested": "[8.0.0, )",
"resolved": "8.0.0",
"contentHash": "0J/9YNXTMWSZP2p2+nvl8p71zpSwokZXZuJW+VjdErkegAnFdO1XlqtA62SJtgVYHdKu3uPxJHcMR/r35HwFBA==",
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.Primitives": "8.0.0"
}
},
"Microsoft.Extensions.Configuration.Binder": {
"type": "CentralTransitive",
"requested": "[8.0.1, )",
"resolved": "8.0.1",
"contentHash": "2UKFJnLiBt7Od6nCnTqP9rTIUNhzmn9Hv1l2FchyKbz8xieB9ULwZTbQZMw+M24Qw3F5dzzH1U9PPleN0LNLOQ==",
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0"
}
},
"Microsoft.Extensions.DependencyInjection.Abstractions": {
"type": "CentralTransitive",
"requested": "[8.0.0, )",
"resolved": "8.0.0",
"contentHash": "cjWrLkJXK0rs4zofsK4bSdg+jhDLTaxrkXu4gS6Y7MAlCvRyNNgwY/lJi5RDlQOnSZweHqoyvgvbdvQsRIW+hg=="
},
"Microsoft.Extensions.Http": {
"type": "CentralTransitive",
"requested": "[8.0.0, )",
"resolved": "8.0.0",
"contentHash": "cWz4caHwvx0emoYe7NkHPxII/KkTI8R/LC9qdqJqnKv2poTJ4e2qqPGQqvRoQ5kaSA4FU5IV3qFAuLuOhoqULQ==",
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Diagnostics": "8.0.0",
"Microsoft.Extensions.Logging": "8.0.0",
"Microsoft.Extensions.Logging.Abstractions": "8.0.0",
"Microsoft.Extensions.Options": "8.0.0"
}
},
"Microsoft.Extensions.Options": {
"type": "CentralTransitive",
"requested": "[8.0.2, )",
"resolved": "8.0.2",
"contentHash": "dWGKvhFybsaZpGmzkGCbNNwBD1rVlWzrZKANLW/CcbFJpCEceMCGzT7zZwHOGBCbwM0SzBuceMj5HN1LKV1QqA==",
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Primitives": "8.0.0"
}
},
"Microsoft.Extensions.Options.ConfigurationExtensions": {
"type": "CentralTransitive",
"requested": "[8.0.0, )",
"resolved": "8.0.0",
"contentHash": "0f4DMRqEd50zQh+UyJc+/HiBsZ3vhAQALgdkcQEalSH1L2isdC7Yj54M3cyo5e+BeO5fcBQ7Dxly8XiBBcvRgw==",
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.Configuration.Binder": "8.0.0",
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Options": "8.0.0",
"Microsoft.Extensions.Primitives": "8.0.0"
}
},
"Microsoft.Extensions.Options.DataAnnotations": {
"type": "CentralTransitive",
"requested": "[8.0.0, )",
"resolved": "8.0.0",
"contentHash": "z6p6q/N/hiU19A9tK7pjhXHpiYArO4oIICipxUviBEIOiDIoKRO7k6qItvw7alKcLtfHZOWmspuSKpvIvH0N8w==",
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Options": "8.0.0"
}
},
"Microsoft.Identity.Client.Extensions.Msal": {
"type": "CentralTransitive",
"requested": "[4.57.0, )",
"resolved": "4.56.0",
"contentHash": "H12YAzEGK55vZ+QpxUzozhW8ZZtgPDuWvgA0JbdIR9UhMUplj29JhIgE2imuH8W2Nw9D8JKygR1uxRFtpSNcrg==",
"dependencies": {
"Microsoft.Identity.Client": "4.56.0",
"System.IO.FileSystem.AccessControl": "5.0.0",
"System.Security.Cryptography.ProtectedData": "4.5.0"
}
}
}
}
}

View file

@ -0,0 +1,939 @@
lockfileVersion: '9.0'
settings:
autoInstallPeers: true
excludeLinksFromLockfile: false
importers:
.:
dependencies:
'@tailwindcss/aspect-ratio':
specifier: ^0.4.2
version: 0.4.2(tailwindcss@3.4.4)
'@tailwindcss/container-queries':
specifier: ^0.1.1
version: 0.1.1(tailwindcss@3.4.4)
'@tailwindcss/forms':
specifier: ^0.5.7
version: 0.5.7(tailwindcss@3.4.4)
'@tailwindcss/typography':
specifier: ^0.5.13
version: 0.5.13(tailwindcss@3.4.4)
tailwind-nord:
specifier: ^1.3.0
version: 1.3.0
tailwindcss:
specifier: ^3.4.4
version: 3.4.4
typescript:
specifier: ^5.0.0
version: 5.4.5
packages:
'@alloc/quick-lru@5.2.0':
resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
engines: {node: '>=10'}
'@isaacs/cliui@8.0.2':
resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
engines: {node: '>=12'}
'@jridgewell/gen-mapping@0.3.5':
resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
engines: {node: '>=6.0.0'}
'@jridgewell/resolve-uri@3.1.2':
resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
engines: {node: '>=6.0.0'}
'@jridgewell/set-array@1.2.1':
resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
engines: {node: '>=6.0.0'}
'@jridgewell/sourcemap-codec@1.4.15':
resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
'@jridgewell/trace-mapping@0.3.25':
resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
'@nodelib/fs.scandir@2.1.5':
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
engines: {node: '>= 8'}
'@nodelib/fs.stat@2.0.5':
resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
engines: {node: '>= 8'}
'@nodelib/fs.walk@1.2.8':
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
engines: {node: '>= 8'}
'@pkgjs/parseargs@0.11.0':
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
engines: {node: '>=14'}
'@tailwindcss/aspect-ratio@0.4.2':
resolution: {integrity: sha512-8QPrypskfBa7QIMuKHg2TA7BqES6vhBrDLOv8Unb6FcFyd3TjKbc6lcmb9UPQHxfl24sXoJ41ux/H7qQQvfaSQ==}
peerDependencies:
tailwindcss: '>=2.0.0 || >=3.0.0 || >=3.0.0-alpha.1'
'@tailwindcss/container-queries@0.1.1':
resolution: {integrity: sha512-p18dswChx6WnTSaJCSGx6lTmrGzNNvm2FtXmiO6AuA1V4U5REyoqwmT6kgAsIMdjo07QdAfYXHJ4hnMtfHzWgA==}
peerDependencies:
tailwindcss: '>=3.2.0'
'@tailwindcss/forms@0.5.7':
resolution: {integrity: sha512-QE7X69iQI+ZXwldE+rzasvbJiyV/ju1FGHH0Qn2W3FKbuYtqp8LKcy6iSw79fVUT5/Vvf+0XgLCeYVG+UV6hOw==}
peerDependencies:
tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1'
'@tailwindcss/typography@0.5.13':
resolution: {integrity: sha512-ADGcJ8dX21dVVHIwTRgzrcunY6YY9uSlAHHGVKvkA+vLc5qLwEszvKts40lx7z0qc4clpjclwLeK5rVCV2P/uw==}
peerDependencies:
tailwindcss: '>=3.0.0 || insiders'
ansi-regex@5.0.1:
resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
engines: {node: '>=8'}
ansi-regex@6.0.1:
resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==}
engines: {node: '>=12'}
ansi-styles@4.3.0:
resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
engines: {node: '>=8'}
ansi-styles@6.2.1:
resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
engines: {node: '>=12'}
any-promise@1.3.0:
resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
anymatch@3.1.3:
resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
engines: {node: '>= 8'}
arg@5.0.2:
resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
binary-extensions@2.3.0:
resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
engines: {node: '>=8'}
brace-expansion@2.0.1:
resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
braces@3.0.3:
resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
engines: {node: '>=8'}
camelcase-css@2.0.1:
resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
engines: {node: '>= 6'}
chokidar@3.6.0:
resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
engines: {node: '>= 8.10.0'}
color-convert@2.0.1:
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
engines: {node: '>=7.0.0'}
color-name@1.1.4:
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
commander@4.1.1:
resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
engines: {node: '>= 6'}
cross-spawn@7.0.3:
resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
engines: {node: '>= 8'}
cssesc@3.0.0:
resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
engines: {node: '>=4'}
hasBin: true
didyoumean@1.2.2:
resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
dlv@1.1.3:
resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
eastasianwidth@0.2.0:
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
emoji-regex@9.2.2:
resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
fast-glob@3.3.2:
resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
engines: {node: '>=8.6.0'}
fastq@1.17.1:
resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
fill-range@7.1.1:
resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
engines: {node: '>=8'}
foreground-child@3.2.1:
resolution: {integrity: sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==}
engines: {node: '>=14'}
fsevents@2.3.3:
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
os: [darwin]
function-bind@1.1.2:
resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
glob-parent@5.1.2:
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
engines: {node: '>= 6'}
glob-parent@6.0.2:
resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
engines: {node: '>=10.13.0'}
glob@10.4.1:
resolution: {integrity: sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==}
engines: {node: '>=16 || 14 >=14.18'}
hasBin: true
hasown@2.0.2:
resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
engines: {node: '>= 0.4'}
is-binary-path@2.1.0:
resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
engines: {node: '>=8'}
is-core-module@2.13.1:
resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==}
is-extglob@2.1.1:
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
engines: {node: '>=0.10.0'}
is-fullwidth-code-point@3.0.0:
resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
engines: {node: '>=8'}
is-glob@4.0.3:
resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
engines: {node: '>=0.10.0'}
is-number@7.0.0:
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
engines: {node: '>=0.12.0'}
isexe@2.0.0:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
jackspeak@3.4.0:
resolution: {integrity: sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==}
engines: {node: '>=14'}
jiti@1.21.6:
resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==}
hasBin: true
lilconfig@2.1.0:
resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
engines: {node: '>=10'}
lilconfig@3.1.2:
resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==}
engines: {node: '>=14'}
lines-and-columns@1.2.4:
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
lodash.castarray@4.4.0:
resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==}
lodash.isplainobject@4.0.6:
resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==}
lodash.merge@4.6.2:
resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
lru-cache@10.2.2:
resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==}
engines: {node: 14 || >=16.14}
merge2@1.4.1:
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
engines: {node: '>= 8'}
micromatch@4.0.7:
resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==}
engines: {node: '>=8.6'}
mini-svg-data-uri@1.4.4:
resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==}
hasBin: true
minimatch@9.0.4:
resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==}
engines: {node: '>=16 || 14 >=14.17'}
minipass@7.1.2:
resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
engines: {node: '>=16 || 14 >=14.17'}
mz@2.7.0:
resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
nanoid@3.3.7:
resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
normalize-path@3.0.0:
resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
engines: {node: '>=0.10.0'}
object-assign@4.1.1:
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
engines: {node: '>=0.10.0'}
object-hash@3.0.0:
resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
engines: {node: '>= 6'}
path-key@3.1.1:
resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
engines: {node: '>=8'}
path-parse@1.0.7:
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
path-scurry@1.11.1:
resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
engines: {node: '>=16 || 14 >=14.18'}
picocolors@1.0.1:
resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==}
picomatch@2.3.1:
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
engines: {node: '>=8.6'}
pify@2.3.0:
resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
engines: {node: '>=0.10.0'}
pirates@4.0.6:
resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
engines: {node: '>= 6'}
postcss-import@15.1.0:
resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
engines: {node: '>=14.0.0'}
peerDependencies:
postcss: ^8.0.0
postcss-js@4.0.1:
resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
engines: {node: ^12 || ^14 || >= 16}
peerDependencies:
postcss: ^8.4.21
postcss-load-config@4.0.2:
resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==}
engines: {node: '>= 14'}
peerDependencies:
postcss: '>=8.0.9'
ts-node: '>=9.0.0'
peerDependenciesMeta:
postcss:
optional: true
ts-node:
optional: true
postcss-nested@6.0.1:
resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==}
engines: {node: '>=12.0'}
peerDependencies:
postcss: ^8.2.14
postcss-selector-parser@6.0.10:
resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==}
engines: {node: '>=4'}
postcss-selector-parser@6.1.0:
resolution: {integrity: sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==}
engines: {node: '>=4'}
postcss-value-parser@4.2.0:
resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
postcss@8.4.38:
resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==}
engines: {node: ^10 || ^12 || >=14}
queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
read-cache@1.0.0:
resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
readdirp@3.6.0:
resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
engines: {node: '>=8.10.0'}
resolve@1.22.8:
resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
hasBin: true
reusify@1.0.4:
resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
run-parallel@1.2.0:
resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
shebang-command@2.0.0:
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
engines: {node: '>=8'}
shebang-regex@3.0.0:
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
engines: {node: '>=8'}
signal-exit@4.1.0:
resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
engines: {node: '>=14'}
source-map-js@1.2.0:
resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==}
engines: {node: '>=0.10.0'}
string-width@4.2.3:
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
engines: {node: '>=8'}
string-width@5.1.2:
resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
engines: {node: '>=12'}
strip-ansi@6.0.1:
resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
engines: {node: '>=8'}
strip-ansi@7.1.0:
resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
engines: {node: '>=12'}
sucrase@3.35.0:
resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==}
engines: {node: '>=16 || 14 >=14.17'}
hasBin: true
supports-preserve-symlinks-flag@1.0.0:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
tailwind-nord@1.3.0:
resolution: {integrity: sha512-F5tdTG3n9zzctAuRqjX2sdpmwSjbYC/HQdXSg/TQIxaynO1DNvnqBaE+IhmPbQIttMvvY54KiYMDXJqMdQLi1Q==}
tailwindcss@3.4.4:
resolution: {integrity: sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==}
engines: {node: '>=14.0.0'}
hasBin: true
thenify-all@1.6.0:
resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
engines: {node: '>=0.8'}
thenify@3.3.1:
resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
to-regex-range@5.0.1:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
ts-interface-checker@0.1.13:
resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
typescript@5.4.5:
resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==}
engines: {node: '>=14.17'}
hasBin: true
util-deprecate@1.0.2:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
which@2.0.2:
resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
engines: {node: '>= 8'}
hasBin: true
wrap-ansi@7.0.0:
resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
engines: {node: '>=10'}
wrap-ansi@8.1.0:
resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
engines: {node: '>=12'}
yaml@2.4.5:
resolution: {integrity: sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==}
engines: {node: '>= 14'}
hasBin: true
snapshots:
'@alloc/quick-lru@5.2.0': {}
'@isaacs/cliui@8.0.2':
dependencies:
string-width: 5.1.2
string-width-cjs: string-width@4.2.3
strip-ansi: 7.1.0
strip-ansi-cjs: strip-ansi@6.0.1
wrap-ansi: 8.1.0
wrap-ansi-cjs: wrap-ansi@7.0.0
'@jridgewell/gen-mapping@0.3.5':
dependencies:
'@jridgewell/set-array': 1.2.1
'@jridgewell/sourcemap-codec': 1.4.15
'@jridgewell/trace-mapping': 0.3.25
'@jridgewell/resolve-uri@3.1.2': {}
'@jridgewell/set-array@1.2.1': {}
'@jridgewell/sourcemap-codec@1.4.15': {}
'@jridgewell/trace-mapping@0.3.25':
dependencies:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.4.15
'@nodelib/fs.scandir@2.1.5':
dependencies:
'@nodelib/fs.stat': 2.0.5
run-parallel: 1.2.0
'@nodelib/fs.stat@2.0.5': {}
'@nodelib/fs.walk@1.2.8':
dependencies:
'@nodelib/fs.scandir': 2.1.5
fastq: 1.17.1
'@pkgjs/parseargs@0.11.0':
optional: true
'@tailwindcss/aspect-ratio@0.4.2(tailwindcss@3.4.4)':
dependencies:
tailwindcss: 3.4.4
'@tailwindcss/container-queries@0.1.1(tailwindcss@3.4.4)':
dependencies:
tailwindcss: 3.4.4
'@tailwindcss/forms@0.5.7(tailwindcss@3.4.4)':
dependencies:
mini-svg-data-uri: 1.4.4
tailwindcss: 3.4.4
'@tailwindcss/typography@0.5.13(tailwindcss@3.4.4)':
dependencies:
lodash.castarray: 4.4.0
lodash.isplainobject: 4.0.6
lodash.merge: 4.6.2
postcss-selector-parser: 6.0.10
tailwindcss: 3.4.4
ansi-regex@5.0.1: {}
ansi-regex@6.0.1: {}
ansi-styles@4.3.0:
dependencies:
color-convert: 2.0.1
ansi-styles@6.2.1: {}
any-promise@1.3.0: {}
anymatch@3.1.3:
dependencies:
normalize-path: 3.0.0
picomatch: 2.3.1
arg@5.0.2: {}
balanced-match@1.0.2: {}
binary-extensions@2.3.0: {}
brace-expansion@2.0.1:
dependencies:
balanced-match: 1.0.2
braces@3.0.3:
dependencies:
fill-range: 7.1.1
camelcase-css@2.0.1: {}
chokidar@3.6.0:
dependencies:
anymatch: 3.1.3
braces: 3.0.3
glob-parent: 5.1.2
is-binary-path: 2.1.0
is-glob: 4.0.3
normalize-path: 3.0.0
readdirp: 3.6.0
optionalDependencies:
fsevents: 2.3.3
color-convert@2.0.1:
dependencies:
color-name: 1.1.4
color-name@1.1.4: {}
commander@4.1.1: {}
cross-spawn@7.0.3:
dependencies:
path-key: 3.1.1
shebang-command: 2.0.0
which: 2.0.2
cssesc@3.0.0: {}
didyoumean@1.2.2: {}
dlv@1.1.3: {}
eastasianwidth@0.2.0: {}
emoji-regex@8.0.0: {}
emoji-regex@9.2.2: {}
fast-glob@3.3.2:
dependencies:
'@nodelib/fs.stat': 2.0.5
'@nodelib/fs.walk': 1.2.8
glob-parent: 5.1.2
merge2: 1.4.1
micromatch: 4.0.7
fastq@1.17.1:
dependencies:
reusify: 1.0.4
fill-range@7.1.1:
dependencies:
to-regex-range: 5.0.1
foreground-child@3.2.1:
dependencies:
cross-spawn: 7.0.3
signal-exit: 4.1.0
fsevents@2.3.3:
optional: true
function-bind@1.1.2: {}
glob-parent@5.1.2:
dependencies:
is-glob: 4.0.3
glob-parent@6.0.2:
dependencies:
is-glob: 4.0.3
glob@10.4.1:
dependencies:
foreground-child: 3.2.1
jackspeak: 3.4.0
minimatch: 9.0.4
minipass: 7.1.2
path-scurry: 1.11.1
hasown@2.0.2:
dependencies:
function-bind: 1.1.2
is-binary-path@2.1.0:
dependencies:
binary-extensions: 2.3.0
is-core-module@2.13.1:
dependencies:
hasown: 2.0.2
is-extglob@2.1.1: {}
is-fullwidth-code-point@3.0.0: {}
is-glob@4.0.3:
dependencies:
is-extglob: 2.1.1
is-number@7.0.0: {}
isexe@2.0.0: {}
jackspeak@3.4.0:
dependencies:
'@isaacs/cliui': 8.0.2
optionalDependencies:
'@pkgjs/parseargs': 0.11.0
jiti@1.21.6: {}
lilconfig@2.1.0: {}
lilconfig@3.1.2: {}
lines-and-columns@1.2.4: {}
lodash.castarray@4.4.0: {}
lodash.isplainobject@4.0.6: {}
lodash.merge@4.6.2: {}
lru-cache@10.2.2: {}
merge2@1.4.1: {}
micromatch@4.0.7:
dependencies:
braces: 3.0.3
picomatch: 2.3.1
mini-svg-data-uri@1.4.4: {}
minimatch@9.0.4:
dependencies:
brace-expansion: 2.0.1
minipass@7.1.2: {}
mz@2.7.0:
dependencies:
any-promise: 1.3.0
object-assign: 4.1.1
thenify-all: 1.6.0
nanoid@3.3.7: {}
normalize-path@3.0.0: {}
object-assign@4.1.1: {}
object-hash@3.0.0: {}
path-key@3.1.1: {}
path-parse@1.0.7: {}
path-scurry@1.11.1:
dependencies:
lru-cache: 10.2.2
minipass: 7.1.2
picocolors@1.0.1: {}
picomatch@2.3.1: {}
pify@2.3.0: {}
pirates@4.0.6: {}
postcss-import@15.1.0(postcss@8.4.38):
dependencies:
postcss: 8.4.38
postcss-value-parser: 4.2.0
read-cache: 1.0.0
resolve: 1.22.8
postcss-js@4.0.1(postcss@8.4.38):
dependencies:
camelcase-css: 2.0.1
postcss: 8.4.38
postcss-load-config@4.0.2(postcss@8.4.38):
dependencies:
lilconfig: 3.1.2
yaml: 2.4.5
optionalDependencies:
postcss: 8.4.38
postcss-nested@6.0.1(postcss@8.4.38):
dependencies:
postcss: 8.4.38
postcss-selector-parser: 6.1.0
postcss-selector-parser@6.0.10:
dependencies:
cssesc: 3.0.0
util-deprecate: 1.0.2
postcss-selector-parser@6.1.0:
dependencies:
cssesc: 3.0.0
util-deprecate: 1.0.2
postcss-value-parser@4.2.0: {}
postcss@8.4.38:
dependencies:
nanoid: 3.3.7
picocolors: 1.0.1
source-map-js: 1.2.0
queue-microtask@1.2.3: {}
read-cache@1.0.0:
dependencies:
pify: 2.3.0
readdirp@3.6.0:
dependencies:
picomatch: 2.3.1
resolve@1.22.8:
dependencies:
is-core-module: 2.13.1
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
reusify@1.0.4: {}
run-parallel@1.2.0:
dependencies:
queue-microtask: 1.2.3
shebang-command@2.0.0:
dependencies:
shebang-regex: 3.0.0
shebang-regex@3.0.0: {}
signal-exit@4.1.0: {}
source-map-js@1.2.0: {}
string-width@4.2.3:
dependencies:
emoji-regex: 8.0.0
is-fullwidth-code-point: 3.0.0
strip-ansi: 6.0.1
string-width@5.1.2:
dependencies:
eastasianwidth: 0.2.0
emoji-regex: 9.2.2
strip-ansi: 7.1.0
strip-ansi@6.0.1:
dependencies:
ansi-regex: 5.0.1
strip-ansi@7.1.0:
dependencies:
ansi-regex: 6.0.1
sucrase@3.35.0:
dependencies:
'@jridgewell/gen-mapping': 0.3.5
commander: 4.1.1
glob: 10.4.1
lines-and-columns: 1.2.4
mz: 2.7.0
pirates: 4.0.6
ts-interface-checker: 0.1.13
supports-preserve-symlinks-flag@1.0.0: {}
tailwind-nord@1.3.0: {}
tailwindcss@3.4.4:
dependencies:
'@alloc/quick-lru': 5.2.0
arg: 5.0.2
chokidar: 3.6.0
didyoumean: 1.2.2
dlv: 1.1.3
fast-glob: 3.3.2
glob-parent: 6.0.2
is-glob: 4.0.3
jiti: 1.21.6
lilconfig: 2.1.0
micromatch: 4.0.7
normalize-path: 3.0.0
object-hash: 3.0.0
picocolors: 1.0.1
postcss: 8.4.38
postcss-import: 15.1.0(postcss@8.4.38)
postcss-js: 4.0.1(postcss@8.4.38)
postcss-load-config: 4.0.2(postcss@8.4.38)
postcss-nested: 6.0.1(postcss@8.4.38)
postcss-selector-parser: 6.1.0
resolve: 1.22.8
sucrase: 3.35.0
transitivePeerDependencies:
- ts-node
thenify-all@1.6.0:
dependencies:
thenify: 3.3.1
thenify@3.3.1:
dependencies:
any-promise: 1.3.0
to-regex-range@5.0.1:
dependencies:
is-number: 7.0.0
ts-interface-checker@0.1.13: {}
typescript@5.4.5: {}
util-deprecate@1.0.2: {}
which@2.0.2:
dependencies:
isexe: 2.0.0
wrap-ansi@7.0.0:
dependencies:
ansi-styles: 4.3.0
string-width: 4.2.3
strip-ansi: 6.0.1
wrap-ansi@8.1.0:
dependencies:
ansi-styles: 6.2.1
string-width: 5.1.2
strip-ansi: 7.1.0
yaml@2.4.5: {}

View file

@ -2,11 +2,11 @@ import type {Config} from 'tailwindcss'
export default {
content: [
'./src/NSeguin.Dev.Web/Components/Pages/**/*.{razor,cshtml}',
'./src/NSeguin.Dev.Web/Components/Layout/**/*.{razor,cshtml}',
'./src/NSeguin.Dev.Web/Components/Shared/**/*.{razor,cshtml}',
'./src/NSeguin.Dev.Web.Client/Pages/**/*.{razor,cshtml}',
'./src/NSeguin.Dev.Web.Client/Shared/**/*.{razor,cshtml}',
'./Components/Pages/**/*.{razor,cshtml}',
'./Components/Layout/**/*.{razor,cshtml}',
'./Components/Shared/**/*.{razor,cshtml}',
'../NSeguin.Dev.Web.Client/Pages/**/*.{razor,cshtml}',
'../NSeguin.Dev.Web.Client/Shared/**/*.{razor,cshtml}',
],
theme: {
colors: {
@ -145,7 +145,11 @@ export default {
}
},
plugins: [
require('tailwind-nord')
require('tailwind-nord'),
require('@tailwindcss/typography'),
require('@tailwindcss/forms'),
require('@tailwindcss/aspect-ratio'),
require('@tailwindcss/container-queries')
]
}
} satisfies Config

File diff suppressed because one or more lines are too long

View file

@ -1,9 +1,15 @@
var App = App || {};
const App = App || {};
App.setFocus = function (element) {
element.focus();
}
App.scrollIntoView = function (element, args) {
if (element === undefined) {
console.error('Element is undefined');
} else if (element === null) {
console.error('Element is null');
}
element.scrollIntoView(args);
}

View file

@ -0,0 +1,22 @@
MIT License
Copyright (c) 2023 Nicholas Seguin
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View file

@ -0,0 +1,2 @@
[
]

Binary file not shown.

View file

@ -2,9 +2,8 @@
<PropertyGroup>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<LangVersion>preview</LangVersion>
<LangVersion>latest</LangVersion>
<Deterministic>true</Deterministic>
<RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)' == 'Debug'">