Compare commits
2 Commits
feat/lazy-
...
feat/manif
| Author | SHA1 | Date | |
|---|---|---|---|
|
ccc30faed9
|
|||
|
bd38c2de48
|
20
.github/workflows/protobuf-ci.yaml
vendored
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
name: Protobuf CI
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
pull_request:
|
||||||
|
types: [opened, synchronize, reopened, labeled, unlabeled]
|
||||||
|
delete:
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
pull-requests: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
buf:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: bufbuild/buf-action@v1
|
||||||
|
with:
|
||||||
|
input: schema/protobufs
|
||||||
6
.gitignore
vendored
@@ -1,4 +1,3 @@
|
|||||||
# Go
|
|
||||||
*.exe
|
*.exe
|
||||||
*.exe~
|
*.exe~
|
||||||
*.dll
|
*.dll
|
||||||
@@ -7,7 +6,4 @@
|
|||||||
*.test
|
*.test
|
||||||
*.out
|
*.out
|
||||||
go.work
|
go.work
|
||||||
*.env
|
*.env
|
||||||
|
|
||||||
# Misc
|
|
||||||
node_modules
|
|
||||||
35
Makefile
@@ -1,38 +1,13 @@
|
|||||||
#
|
|
||||||
# Dev Tools
|
|
||||||
#
|
|
||||||
|
|
||||||
.PHONY: install-tools
|
|
||||||
install-tools:
|
install-tools:
|
||||||
go install github.com/bufbuild/buf/cmd/buf@v1.27.2 && \
|
go install github.com/bufbuild/buf/cmd/buf@v1.27.2
|
||||||
go install -tags 'postgres' github.com/golang-migrate/migrate/v4/cmd/migrate@v4.17.0 && \
|
go install -tags 'postgres' github.com/golang-migrate/migrate/v4/cmd/migrate@v4.17.0
|
||||||
npm install
|
|
||||||
|
|
||||||
#
|
generate-protobufs:
|
||||||
# Code Gen
|
|
||||||
#
|
|
||||||
|
|
||||||
.PHONY: gen-protobufs
|
|
||||||
gen-protobufs:
|
|
||||||
buf generate
|
buf generate
|
||||||
|
|
||||||
.PHONY: gen-openapi
|
format:
|
||||||
gen-openapi: gen-protobufs
|
buf format -w
|
||||||
npx openapi-generator-cli generate -g openapi-yaml -i schema/openapi/services.swagger.yaml -o schema/openapi -p outputFile=openapi.yaml
|
|
||||||
|
|
||||||
#
|
|
||||||
# Linting / Formatting
|
|
||||||
#
|
|
||||||
|
|
||||||
.PHONY: format-go
|
|
||||||
format-go:
|
|
||||||
buf format -w && \
|
|
||||||
gofmt -w -s .
|
gofmt -w -s .
|
||||||
|
|
||||||
#
|
|
||||||
# Deployment
|
|
||||||
#
|
|
||||||
|
|
||||||
.PHONY: deploy-docker
|
|
||||||
deploy-docker:
|
deploy-docker:
|
||||||
docker compose -f deploy/docker/compose.yaml -f deploy/docker/compose.override.yaml up --build
|
docker compose -f deploy/docker/compose.yaml -f deploy/docker/compose.override.yaml up --build
|
||||||
@@ -55,15 +55,10 @@ In the nature of open-source software, please consider contributing and giving b
|
|||||||
* [google.golang.org/protobuf](https://pkg.go.dev/google.golang.org/protobuf)
|
* [google.golang.org/protobuf](https://pkg.go.dev/google.golang.org/protobuf)
|
||||||
* [github.com/bufbuild/protovalidate-go](https://pkg.go.dev/github.com/bufbuild/protovalidate-go)
|
* [github.com/bufbuild/protovalidate-go](https://pkg.go.dev/github.com/bufbuild/protovalidate-go)
|
||||||
|
|
||||||
* Frontend
|
|
||||||
* [github.com/sveltejs/kit](https://github.com/sveltejs/kit)
|
|
||||||
* [github.com/tailwindlabs/tailwindcss](https://github.com/tailwindlabs/tailwindcss)
|
|
||||||
|
|
||||||
* Tools
|
* Tools
|
||||||
* [plantuml.com](https://plantuml.com/)
|
* [plantuml.com](https://plantuml.com/)
|
||||||
* [github.com/bufbuild/buf/cmd/buf](https://buf.build/docs/installation)
|
* [github.com/bufbuild/buf/cmd/buf](https://buf.build/docs/installation)
|
||||||
* [github.com/golang-migrate/migrate/v4](https://pkg.go.dev/github.com/golang-migrate/migrate/v4#section-readme)
|
* [github.com/golang-migrate/migrate/v4](https://pkg.go.dev/github.com/golang-migrate/migrate/v4#section-readme)
|
||||||
* [github.com/openapitools/openapi-generator](https://github.com/openapitools/openapi-generator)
|
|
||||||
|
|
||||||
* Miscellaneous
|
* Miscellaneous
|
||||||
* [golang.org/x/crypto/bcrypt](https://pkg.go.dev/golang.org/x/crypto/bcrypt)
|
* [golang.org/x/crypto/bcrypt](https://pkg.go.dev/golang.org/x/crypto/bcrypt)
|
||||||
|
|||||||
@@ -1,16 +0,0 @@
|
|||||||
FROM node:24-slim AS base
|
|
||||||
WORKDIR /app
|
|
||||||
|
|
||||||
# Install pnpm
|
|
||||||
RUN npm install -g pnpm
|
|
||||||
|
|
||||||
# Install dependencies
|
|
||||||
COPY package.json ./
|
|
||||||
COPY pnpm-lock.yaml ./
|
|
||||||
RUN pnpm install --frozen-lockfile
|
|
||||||
|
|
||||||
# Prepare application
|
|
||||||
COPY . ./
|
|
||||||
RUN pnpm build
|
|
||||||
|
|
||||||
CMD ["pnpm", "preview", "--host", "'0.0.0.0'", "--port", "5173"]
|
|
||||||
24
deploy/kubernetes/Chart.yaml
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
name: stocklet
|
||||||
|
description: A Helm chart for Kubernetes
|
||||||
|
|
||||||
|
# A chart can be either an 'application' or a 'library' chart.
|
||||||
|
#
|
||||||
|
# Application charts are a collection of templates that can be packaged into versioned archives
|
||||||
|
# to be deployed.
|
||||||
|
#
|
||||||
|
# Library charts provide useful utilities or functions for the chart developer. They're included as
|
||||||
|
# a dependency of application charts to inject those utilities and functions into the rendering
|
||||||
|
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
|
||||||
|
type: application
|
||||||
|
|
||||||
|
# This is the chart version. This version number should be incremented each time you make changes
|
||||||
|
# to the chart and its templates, including the app version.
|
||||||
|
# Versions are expected to follow Semantic Versioning (https://semver.org/)
|
||||||
|
version: 0.1.0
|
||||||
|
|
||||||
|
# This is the version number of the application being deployed. This version number should be
|
||||||
|
# incremented each time you make changes to the application. Versions are not expected to
|
||||||
|
# follow Semantic Versioning. They should reflect the version the application is using.
|
||||||
|
# It is recommended to use it with quotes.
|
||||||
|
appVersion: "1.16.0"
|
||||||
35
deploy/kubernetes/templates/NOTES.txt
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
1. Get the application URL by running these commands:
|
||||||
|
{{- if .Values.httpRoute.enabled }}
|
||||||
|
{{- if .Values.httpRoute.hostnames }}
|
||||||
|
export APP_HOSTNAME={{ .Values.httpRoute.hostnames | first }}
|
||||||
|
{{- else }}
|
||||||
|
export APP_HOSTNAME=$(kubectl get --namespace {{(first .Values.httpRoute.parentRefs).namespace | default .Release.Namespace }} gateway/{{ (first .Values.httpRoute.parentRefs).name }} -o jsonpath="{.spec.listeners[0].hostname}")
|
||||||
|
{{- end }}
|
||||||
|
{{- if and .Values.httpRoute.rules (first .Values.httpRoute.rules).matches (first (first .Values.httpRoute.rules).matches).path.value }}
|
||||||
|
echo "Visit http://$APP_HOSTNAME{{ (first (first .Values.httpRoute.rules).matches).path.value }} to use your application"
|
||||||
|
|
||||||
|
NOTE: Your HTTPRoute depends on the listener configuration of your gateway and your HTTPRoute rules.
|
||||||
|
The rules can be set for path, method, header and query parameters.
|
||||||
|
You can check the gateway configuration with 'kubectl get --namespace {{(first .Values.httpRoute.parentRefs).namespace | default .Release.Namespace }} gateway/{{ (first .Values.httpRoute.parentRefs).name }} -o yaml'
|
||||||
|
{{- end }}
|
||||||
|
{{- else if .Values.ingress.enabled }}
|
||||||
|
{{- range $host := .Values.ingress.hosts }}
|
||||||
|
{{- range .paths }}
|
||||||
|
http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else if contains "NodePort" .Values.service.type }}
|
||||||
|
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "stocklet.fullname" . }})
|
||||||
|
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
|
||||||
|
echo http://$NODE_IP:$NODE_PORT
|
||||||
|
{{- else if contains "LoadBalancer" .Values.service.type }}
|
||||||
|
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
|
||||||
|
You can watch its status by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "stocklet.fullname" . }}'
|
||||||
|
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "stocklet.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
|
||||||
|
echo http://$SERVICE_IP:{{ .Values.service.port }}
|
||||||
|
{{- else if contains "ClusterIP" .Values.service.type }}
|
||||||
|
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "stocklet.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
|
||||||
|
export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
|
||||||
|
echo "Visit http://127.0.0.1:8080 to use your application"
|
||||||
|
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT
|
||||||
|
{{- end }}
|
||||||
62
deploy/kubernetes/templates/_helpers.tpl
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
{{/*
|
||||||
|
Expand the name of the chart.
|
||||||
|
*/}}
|
||||||
|
{{- define "stocklet.name" -}}
|
||||||
|
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create a default fully qualified app name.
|
||||||
|
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||||
|
If release name contains chart name it will be used as a full name.
|
||||||
|
*/}}
|
||||||
|
{{- define "stocklet.fullname" -}}
|
||||||
|
{{- if .Values.fullnameOverride }}
|
||||||
|
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- else }}
|
||||||
|
{{- $name := default .Chart.Name .Values.nameOverride }}
|
||||||
|
{{- if contains $name .Release.Name }}
|
||||||
|
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- else }}
|
||||||
|
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create chart name and version as used by the chart label.
|
||||||
|
*/}}
|
||||||
|
{{- define "stocklet.chart" -}}
|
||||||
|
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Common labels
|
||||||
|
*/}}
|
||||||
|
{{- define "stocklet.labels" -}}
|
||||||
|
helm.sh/chart: {{ include "stocklet.chart" . }}
|
||||||
|
{{ include "stocklet.selectorLabels" . }}
|
||||||
|
{{- if .Chart.AppVersion }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||||
|
{{- end }}
|
||||||
|
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Selector labels
|
||||||
|
*/}}
|
||||||
|
{{- define "stocklet.selectorLabels" -}}
|
||||||
|
app.kubernetes.io/name: {{ include "stocklet.name" . }}
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create the name of the service account to use
|
||||||
|
*/}}
|
||||||
|
{{- define "stocklet.serviceAccountName" -}}
|
||||||
|
{{- if .Values.serviceAccount.create }}
|
||||||
|
{{- default (include "stocklet.fullname" .) .Values.serviceAccount.name }}
|
||||||
|
{{- else }}
|
||||||
|
{{- default "default" .Values.serviceAccount.name }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
78
deploy/kubernetes/templates/deployment.yaml
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: {{ include "stocklet.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "stocklet.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
{{- if not .Values.autoscaling.enabled }}
|
||||||
|
replicas: {{ .Values.replicaCount }}
|
||||||
|
{{- end }}
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "stocklet.selectorLabels" . | nindent 6 }}
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
{{- with .Values.podAnnotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "stocklet.labels" . | nindent 8 }}
|
||||||
|
{{- with .Values.podLabels }}
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
{{- with .Values.imagePullSecrets }}
|
||||||
|
imagePullSecrets:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
serviceAccountName: {{ include "stocklet.serviceAccountName" . }}
|
||||||
|
{{- with .Values.podSecurityContext }}
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
containers:
|
||||||
|
- name: {{ .Chart.Name }}
|
||||||
|
{{- with .Values.securityContext }}
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml . | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
|
||||||
|
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: {{ .Values.service.port }}
|
||||||
|
protocol: TCP
|
||||||
|
{{- with .Values.livenessProbe }}
|
||||||
|
livenessProbe:
|
||||||
|
{{- toYaml . | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.readinessProbe }}
|
||||||
|
readinessProbe:
|
||||||
|
{{- toYaml . | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.resources }}
|
||||||
|
resources:
|
||||||
|
{{- toYaml . | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.volumeMounts }}
|
||||||
|
volumeMounts:
|
||||||
|
{{- toYaml . | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.volumes }}
|
||||||
|
volumes:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.nodeSelector }}
|
||||||
|
nodeSelector:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.affinity }}
|
||||||
|
affinity:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.tolerations }}
|
||||||
|
tolerations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
32
deploy/kubernetes/templates/hpa.yaml
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
{{- if .Values.autoscaling.enabled }}
|
||||||
|
apiVersion: autoscaling/v2
|
||||||
|
kind: HorizontalPodAutoscaler
|
||||||
|
metadata:
|
||||||
|
name: {{ include "stocklet.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "stocklet.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
scaleTargetRef:
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
name: {{ include "stocklet.fullname" . }}
|
||||||
|
minReplicas: {{ .Values.autoscaling.minReplicas }}
|
||||||
|
maxReplicas: {{ .Values.autoscaling.maxReplicas }}
|
||||||
|
metrics:
|
||||||
|
{{- if .Values.autoscaling.targetCPUUtilizationPercentage }}
|
||||||
|
- type: Resource
|
||||||
|
resource:
|
||||||
|
name: cpu
|
||||||
|
target:
|
||||||
|
type: Utilization
|
||||||
|
averageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}
|
||||||
|
- type: Resource
|
||||||
|
resource:
|
||||||
|
name: memory
|
||||||
|
target:
|
||||||
|
type: Utilization
|
||||||
|
averageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
38
deploy/kubernetes/templates/httproute.yaml
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
{{- if .Values.httpRoute.enabled -}}
|
||||||
|
{{- $fullName := include "stocklet.fullname" . -}}
|
||||||
|
{{- $svcPort := .Values.service.port -}}
|
||||||
|
apiVersion: gateway.networking.k8s.io/v1
|
||||||
|
kind: HTTPRoute
|
||||||
|
metadata:
|
||||||
|
name: {{ $fullName }}
|
||||||
|
labels:
|
||||||
|
{{- include "stocklet.labels" . | nindent 4 }}
|
||||||
|
{{- with .Values.httpRoute.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
parentRefs:
|
||||||
|
{{- with .Values.httpRoute.parentRefs }}
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.httpRoute.hostnames }}
|
||||||
|
hostnames:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
rules:
|
||||||
|
{{- range .Values.httpRoute.rules }}
|
||||||
|
{{- with .matches }}
|
||||||
|
- matches:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .filters }}
|
||||||
|
filters:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
backendRefs:
|
||||||
|
- name: {{ $fullName }}
|
||||||
|
port: {{ $svcPort }}
|
||||||
|
weight: 1
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
43
deploy/kubernetes/templates/ingress.yaml
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
{{- if .Values.ingress.enabled -}}
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: {{ include "stocklet.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "stocklet.labels" . | nindent 4 }}
|
||||||
|
{{- with .Values.ingress.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
{{- with .Values.ingress.className }}
|
||||||
|
ingressClassName: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.ingress.tls }}
|
||||||
|
tls:
|
||||||
|
{{- range .Values.ingress.tls }}
|
||||||
|
- hosts:
|
||||||
|
{{- range .hosts }}
|
||||||
|
- {{ . | quote }}
|
||||||
|
{{- end }}
|
||||||
|
secretName: {{ .secretName }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
rules:
|
||||||
|
{{- range .Values.ingress.hosts }}
|
||||||
|
- host: {{ .host | quote }}
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
{{- range .paths }}
|
||||||
|
- path: {{ .path }}
|
||||||
|
{{- with .pathType }}
|
||||||
|
pathType: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: {{ include "stocklet.fullname" $ }}
|
||||||
|
port:
|
||||||
|
number: {{ $.Values.service.port }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
15
deploy/kubernetes/templates/service.yaml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: {{ include "stocklet.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "stocklet.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
type: {{ .Values.service.type }}
|
||||||
|
ports:
|
||||||
|
- port: {{ .Values.service.port }}
|
||||||
|
targetPort: http
|
||||||
|
protocol: TCP
|
||||||
|
name: http
|
||||||
|
selector:
|
||||||
|
{{- include "stocklet.selectorLabels" . | nindent 4 }}
|
||||||
13
deploy/kubernetes/templates/serviceaccount.yaml
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{{- if .Values.serviceAccount.create -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: {{ include "stocklet.serviceAccountName" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "stocklet.labels" . | nindent 4 }}
|
||||||
|
{{- with .Values.serviceAccount.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
automountServiceAccountToken: {{ .Values.serviceAccount.automount }}
|
||||||
|
{{- end }}
|
||||||
15
deploy/kubernetes/templates/tests/test-connection.yaml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Pod
|
||||||
|
metadata:
|
||||||
|
name: "{{ include "stocklet.fullname" . }}-test-connection"
|
||||||
|
labels:
|
||||||
|
{{- include "stocklet.labels" . | nindent 4 }}
|
||||||
|
annotations:
|
||||||
|
"helm.sh/hook": test
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: wget
|
||||||
|
image: busybox
|
||||||
|
command: ['wget']
|
||||||
|
args: ['{{ include "stocklet.fullname" . }}:{{ .Values.service.port }}']
|
||||||
|
restartPolicy: Never
|
||||||
161
deploy/kubernetes/values.yaml
Normal file
@@ -0,0 +1,161 @@
|
|||||||
|
# Default values for stocklet.
|
||||||
|
# This is a YAML-formatted file.
|
||||||
|
# Declare variables to be passed into your templates.
|
||||||
|
|
||||||
|
# This will set the replicaset count more information can be found here: https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/
|
||||||
|
replicaCount: 1
|
||||||
|
|
||||||
|
# This sets the container image more information can be found here: https://kubernetes.io/docs/concepts/containers/images/
|
||||||
|
image:
|
||||||
|
repository: nginx
|
||||||
|
# This sets the pull policy for images.
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
# Overrides the image tag whose default is the chart appVersion.
|
||||||
|
tag: ""
|
||||||
|
|
||||||
|
# This is for the secrets for pulling an image from a private repository more information can be found here: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
|
||||||
|
imagePullSecrets: []
|
||||||
|
# This is to override the chart name.
|
||||||
|
nameOverride: ""
|
||||||
|
fullnameOverride: ""
|
||||||
|
|
||||||
|
# This section builds out the service account more information can be found here: https://kubernetes.io/docs/concepts/security/service-accounts/
|
||||||
|
serviceAccount:
|
||||||
|
# Specifies whether a service account should be created
|
||||||
|
create: true
|
||||||
|
# Automatically mount a ServiceAccount's API credentials?
|
||||||
|
automount: true
|
||||||
|
# Annotations to add to the service account
|
||||||
|
annotations: {}
|
||||||
|
# The name of the service account to use.
|
||||||
|
# If not set and create is true, a name is generated using the fullname template
|
||||||
|
name: ""
|
||||||
|
|
||||||
|
# This is for setting Kubernetes Annotations to a Pod.
|
||||||
|
# For more information checkout: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
|
||||||
|
podAnnotations: {}
|
||||||
|
# This is for setting Kubernetes Labels to a Pod.
|
||||||
|
# For more information checkout: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
|
||||||
|
podLabels: {}
|
||||||
|
|
||||||
|
podSecurityContext: {}
|
||||||
|
# fsGroup: 2000
|
||||||
|
|
||||||
|
securityContext: {}
|
||||||
|
# capabilities:
|
||||||
|
# drop:
|
||||||
|
# - ALL
|
||||||
|
# readOnlyRootFilesystem: true
|
||||||
|
# runAsNonRoot: true
|
||||||
|
# runAsUser: 1000
|
||||||
|
|
||||||
|
# This is for setting up a service more information can be found here: https://kubernetes.io/docs/concepts/services-networking/service/
|
||||||
|
service:
|
||||||
|
# This sets the service type more information can be found here: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
|
||||||
|
type: ClusterIP
|
||||||
|
# This sets the ports more information can be found here: https://kubernetes.io/docs/concepts/services-networking/service/#field-spec-ports
|
||||||
|
port: 80
|
||||||
|
|
||||||
|
# This block is for setting up the ingress for more information can be found here: https://kubernetes.io/docs/concepts/services-networking/ingress/
|
||||||
|
ingress:
|
||||||
|
enabled: false
|
||||||
|
className: ""
|
||||||
|
annotations: {}
|
||||||
|
# kubernetes.io/ingress.class: nginx
|
||||||
|
# kubernetes.io/tls-acme: "true"
|
||||||
|
hosts:
|
||||||
|
- host: chart-example.local
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: ImplementationSpecific
|
||||||
|
tls: []
|
||||||
|
# - secretName: chart-example-tls
|
||||||
|
# hosts:
|
||||||
|
# - chart-example.local
|
||||||
|
|
||||||
|
# -- Expose the service via gateway-api HTTPRoute
|
||||||
|
# Requires Gateway API resources and suitable controller installed within the cluster
|
||||||
|
# (see: https://gateway-api.sigs.k8s.io/guides/)
|
||||||
|
httpRoute:
|
||||||
|
# HTTPRoute enabled.
|
||||||
|
enabled: false
|
||||||
|
# HTTPRoute annotations.
|
||||||
|
annotations: {}
|
||||||
|
# Which Gateways this Route is attached to.
|
||||||
|
parentRefs:
|
||||||
|
- name: gateway
|
||||||
|
sectionName: http
|
||||||
|
# namespace: default
|
||||||
|
# Hostnames matching HTTP header.
|
||||||
|
hostnames:
|
||||||
|
- chart-example.local
|
||||||
|
# List of rules and filters applied.
|
||||||
|
rules:
|
||||||
|
- matches:
|
||||||
|
- path:
|
||||||
|
type: PathPrefix
|
||||||
|
value: /headers
|
||||||
|
# filters:
|
||||||
|
# - type: RequestHeaderModifier
|
||||||
|
# requestHeaderModifier:
|
||||||
|
# set:
|
||||||
|
# - name: My-Overwrite-Header
|
||||||
|
# value: this-is-the-only-value
|
||||||
|
# remove:
|
||||||
|
# - User-Agent
|
||||||
|
# - matches:
|
||||||
|
# - path:
|
||||||
|
# type: PathPrefix
|
||||||
|
# value: /echo
|
||||||
|
# headers:
|
||||||
|
# - name: version
|
||||||
|
# value: v2
|
||||||
|
|
||||||
|
resources: {}
|
||||||
|
# We usually recommend not to specify default resources and to leave this as a conscious
|
||||||
|
# choice for the user. This also increases chances charts run on environments with little
|
||||||
|
# resources, such as Minikube. If you do want to specify resources, uncomment the following
|
||||||
|
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
|
||||||
|
# limits:
|
||||||
|
# cpu: 100m
|
||||||
|
# memory: 128Mi
|
||||||
|
# requests:
|
||||||
|
# cpu: 100m
|
||||||
|
# memory: 128Mi
|
||||||
|
|
||||||
|
# This is to setup the liveness and readiness probes more information can be found here: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /
|
||||||
|
port: http
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /
|
||||||
|
port: http
|
||||||
|
|
||||||
|
# This section is for setting up autoscaling more information can be found here: https://kubernetes.io/docs/concepts/workloads/autoscaling/
|
||||||
|
autoscaling:
|
||||||
|
enabled: false
|
||||||
|
minReplicas: 1
|
||||||
|
maxReplicas: 100
|
||||||
|
targetCPUUtilizationPercentage: 80
|
||||||
|
# targetMemoryUtilizationPercentage: 80
|
||||||
|
|
||||||
|
# Additional volumes on the output Deployment definition.
|
||||||
|
volumes: []
|
||||||
|
# - name: foo
|
||||||
|
# secret:
|
||||||
|
# secretName: mysecret
|
||||||
|
# optional: false
|
||||||
|
|
||||||
|
# Additional volumeMounts on the output Deployment definition.
|
||||||
|
volumeMounts: []
|
||||||
|
# - name: foo
|
||||||
|
# mountPath: "/etc/foo"
|
||||||
|
# readOnly: true
|
||||||
|
|
||||||
|
nodeSelector: {}
|
||||||
|
|
||||||
|
tolerations: []
|
||||||
|
|
||||||
|
affinity: {}
|
||||||
2
go.mod
@@ -2,7 +2,7 @@ module github.com/hexolan/stocklet
|
|||||||
|
|
||||||
go 1.23.0
|
go 1.23.0
|
||||||
|
|
||||||
toolchain go1.24.3
|
toolchain go1.24.1
|
||||||
|
|
||||||
require (
|
require (
|
||||||
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.31.0-20231106192134-1baebb0a1518.2
|
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.31.0-20231106192134-1baebb0a1518.2
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
{
|
|
||||||
"$schema": "./node_modules/@openapitools/openapi-generator-cli/config.schema.json",
|
|
||||||
"spaces": 2,
|
|
||||||
"generator-cli": {
|
|
||||||
"version": "7.14.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
2352
package-lock.json
generated
@@ -1,5 +0,0 @@
|
|||||||
{
|
|
||||||
"devDependencies": {
|
|
||||||
"@openapitools/openapi-generator-cli": "^2.21.4"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
3
schema/openapi/.gitignore
vendored
@@ -1,3 +0,0 @@
|
|||||||
.openapi-generator
|
|
||||||
.openapi-generator-ignore
|
|
||||||
README.md
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
PUBLIC_API_URL=http://localhost:80/
|
|
||||||
23
web/.gitignore
vendored
@@ -1,23 +0,0 @@
|
|||||||
node_modules
|
|
||||||
|
|
||||||
# Output
|
|
||||||
.output
|
|
||||||
.vercel
|
|
||||||
.netlify
|
|
||||||
.wrangler
|
|
||||||
/.svelte-kit
|
|
||||||
/build
|
|
||||||
|
|
||||||
# OS
|
|
||||||
.DS_Store
|
|
||||||
Thumbs.db
|
|
||||||
|
|
||||||
# Env
|
|
||||||
.env
|
|
||||||
.env.*
|
|
||||||
!.env.example
|
|
||||||
!.env.test
|
|
||||||
|
|
||||||
# Vite
|
|
||||||
vite.config.js.timestamp-*
|
|
||||||
vite.config.ts.timestamp-*
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
engine-strict=true
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
# Package Managers
|
|
||||||
package-lock.json
|
|
||||||
pnpm-lock.yaml
|
|
||||||
yarn.lock
|
|
||||||
bun.lock
|
|
||||||
bun.lockb
|
|
||||||
|
|
||||||
# Miscellaneous
|
|
||||||
/static/
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
{
|
|
||||||
"useTabs": true,
|
|
||||||
"singleQuote": true,
|
|
||||||
"trailingComma": "none",
|
|
||||||
"printWidth": 100,
|
|
||||||
"plugins": ["prettier-plugin-svelte", "prettier-plugin-tailwindcss"],
|
|
||||||
"overrides": [
|
|
||||||
{
|
|
||||||
"files": "*.svelte",
|
|
||||||
"options": {
|
|
||||||
"parser": "svelte"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"tailwindStylesheet": "./src/app.css"
|
|
||||||
}
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
import prettier from 'eslint-config-prettier';
|
|
||||||
import { includeIgnoreFile } from '@eslint/compat';
|
|
||||||
import js from '@eslint/js';
|
|
||||||
import svelte from 'eslint-plugin-svelte';
|
|
||||||
import globals from 'globals';
|
|
||||||
import { fileURLToPath } from 'node:url';
|
|
||||||
import ts from 'typescript-eslint';
|
|
||||||
import svelteConfig from './svelte.config.js';
|
|
||||||
|
|
||||||
const gitignorePath = fileURLToPath(new URL('./.gitignore', import.meta.url));
|
|
||||||
|
|
||||||
export default ts.config(
|
|
||||||
includeIgnoreFile(gitignorePath),
|
|
||||||
js.configs.recommended,
|
|
||||||
...ts.configs.recommended,
|
|
||||||
...svelte.configs.recommended,
|
|
||||||
prettier,
|
|
||||||
...svelte.configs.prettier,
|
|
||||||
{
|
|
||||||
languageOptions: {
|
|
||||||
globals: { ...globals.browser, ...globals.node }
|
|
||||||
},
|
|
||||||
rules: {
|
|
||||||
// typescript-eslint strongly recommend that you do not use the no-undef lint rule on TypeScript projects.
|
|
||||||
// see: https://typescript-eslint.io/troubleshooting/faqs/eslint/#i-get-errors-from-the-no-undef-rule-about-global-variables-not-being-defined-even-though-there-are-no-typescript-errors
|
|
||||||
'no-undef': 'off'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
files: ['**/*.svelte', '**/*.svelte.ts', '**/*.svelte.js'],
|
|
||||||
languageOptions: {
|
|
||||||
parserOptions: {
|
|
||||||
projectService: true,
|
|
||||||
extraFileExtensions: ['.svelte'],
|
|
||||||
parser: ts.parser,
|
|
||||||
svelteConfig
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "web",
|
|
||||||
"private": true,
|
|
||||||
"version": "0.0.1",
|
|
||||||
"type": "module",
|
|
||||||
"scripts": {
|
|
||||||
"dev": "vite dev",
|
|
||||||
"build": "vite build",
|
|
||||||
"preview": "vite preview",
|
|
||||||
"prepare": "svelte-kit sync || echo ''",
|
|
||||||
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
|
|
||||||
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
|
|
||||||
"format": "prettier --write .",
|
|
||||||
"lint": "prettier --check . && eslint .",
|
|
||||||
"gen-openapi": "openapi-typescript ../schema/openapi/openapi.yaml -o ./src/lib/api/schema.d.ts"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@eslint/compat": "^1.2.5",
|
|
||||||
"@eslint/js": "^9.18.0",
|
|
||||||
"@sveltejs/adapter-auto": "^6.0.0",
|
|
||||||
"@sveltejs/adapter-node": "^5.2.14",
|
|
||||||
"@sveltejs/adapter-static": "^3.0.9",
|
|
||||||
"@sveltejs/kit": "^2.22.0",
|
|
||||||
"@sveltejs/vite-plugin-svelte": "^6.0.0",
|
|
||||||
"@tailwindcss/typography": "^0.5.15",
|
|
||||||
"@tailwindcss/vite": "^4.0.0",
|
|
||||||
"eslint": "^9.18.0",
|
|
||||||
"eslint-config-prettier": "^10.0.1",
|
|
||||||
"eslint-plugin-svelte": "^3.0.0",
|
|
||||||
"globals": "^16.0.0",
|
|
||||||
"openapi-typescript": "^7.8.0",
|
|
||||||
"prettier": "^3.4.2",
|
|
||||||
"prettier-plugin-svelte": "^3.3.3",
|
|
||||||
"prettier-plugin-tailwindcss": "^0.6.11",
|
|
||||||
"svelte": "^5.0.0",
|
|
||||||
"svelte-check": "^4.0.0",
|
|
||||||
"tailwindcss": "^4.0.0",
|
|
||||||
"typescript": "^5.0.0",
|
|
||||||
"typescript-eslint": "^8.20.0",
|
|
||||||
"vite": "^7.0.4"
|
|
||||||
},
|
|
||||||
"pnpm": {
|
|
||||||
"onlyBuiltDependencies": [
|
|
||||||
"esbuild"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"@lucide/svelte": "^0.540.0",
|
|
||||||
"bits-ui": "^2.11.4",
|
|
||||||
"next-translate": "^2.6.2",
|
|
||||||
"openapi-fetch": "^0.14.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
3570
web/pnpm-lock.yaml
generated
209
web/src/app.css
@@ -1,209 +0,0 @@
|
|||||||
@import 'tailwindcss';
|
|
||||||
|
|
||||||
@plugin '@tailwindcss/typography';
|
|
||||||
|
|
||||||
[data-theme='catppuccin'] {
|
|
||||||
--text-scaling: 1.067;
|
|
||||||
--base-font-color: var(--color-surface-700);
|
|
||||||
--base-font-color-dark: var(--color-surface-50);
|
|
||||||
--base-font-family: system-ui;
|
|
||||||
--base-font-size: inherit;
|
|
||||||
--base-line-height: inherit;
|
|
||||||
--base-font-weight: normal;
|
|
||||||
--base-font-style: normal;
|
|
||||||
--base-letter-spacing: 0em;
|
|
||||||
--heading-font-color: var(--color-tertiary-500);
|
|
||||||
--heading-font-color-dark: var(--color-secondary-200);
|
|
||||||
--heading-font-family: Seravek, 'Gill Sans Nova', Ubuntu, Calibri, 'DejaVu Sans', source-sans-pro, sans-serif;
|
|
||||||
--heading-font-weight: bolder;
|
|
||||||
--heading-font-style: normal;
|
|
||||||
--heading-letter-spacing: inherit;
|
|
||||||
--anchor-font-color: var(--color-secondary-600);
|
|
||||||
--anchor-font-color-dark: var(--color-tertiary-400);
|
|
||||||
--anchor-font-family: inherit;
|
|
||||||
--anchor-font-size: inherit;
|
|
||||||
--anchor-line-height: inherit;
|
|
||||||
--anchor-font-weight: normal;
|
|
||||||
--anchor-font-style: normal;
|
|
||||||
--anchor-letter-spacing: inherit;
|
|
||||||
--anchor-text-decoration: none;
|
|
||||||
--anchor-text-decoration-hover: underline;
|
|
||||||
--anchor-text-decoration-active: none;
|
|
||||||
--anchor-text-decoration-focus: none;
|
|
||||||
--spacing: 0.25rem;
|
|
||||||
--radius-base: 0.75rem;
|
|
||||||
--radius-container: 0.75rem;
|
|
||||||
--default-border-width: 2px;
|
|
||||||
--default-divide-width: 1px;
|
|
||||||
--default-ring-width: 1px;
|
|
||||||
--body-background-color: oklch(1 0 0 / 1);
|
|
||||||
--body-background-color-dark: var(--color-surface-950);
|
|
||||||
--color-primary-50: oklch(97.6% 0.02 212.47deg);
|
|
||||||
--color-primary-100: oklch(91.32% 0.04 257.13deg);
|
|
||||||
--color-primary-200: oklch(84.83% 0.07 268.85deg);
|
|
||||||
--color-primary-300: oklch(78.59% 0.11 272.12deg);
|
|
||||||
--color-primary-400: oklch(72.23% 0.14 273.55deg);
|
|
||||||
--color-primary-500: oklch(66.25% 0.18 273.14deg);
|
|
||||||
--color-primary-600: oklch(63.84% 0.17 273.48deg);
|
|
||||||
--color-primary-700: oklch(61.62% 0.15 273.47deg);
|
|
||||||
--color-primary-800: oklch(59.25% 0.14 273.88deg);
|
|
||||||
--color-primary-900: oklch(57.01% 0.12 273.81deg);
|
|
||||||
--color-primary-950: oklch(54.55% 0.11 274.23deg);
|
|
||||||
--color-primary-contrast-dark: var(--color-primary-950);
|
|
||||||
--color-primary-contrast-light: var(--color-primary-50);
|
|
||||||
--color-primary-contrast-50: var(--color-primary-contrast-dark);
|
|
||||||
--color-primary-contrast-100: var(--color-primary-contrast-dark);
|
|
||||||
--color-primary-contrast-200: var(--color-primary-contrast-dark);
|
|
||||||
--color-primary-contrast-300: var(--color-primary-contrast-dark);
|
|
||||||
--color-primary-contrast-400: var(--color-primary-contrast-light);
|
|
||||||
--color-primary-contrast-500: var(--color-primary-contrast-light);
|
|
||||||
--color-primary-contrast-600: var(--color-primary-contrast-light);
|
|
||||||
--color-primary-contrast-700: var(--color-primary-contrast-light);
|
|
||||||
--color-primary-contrast-800: var(--color-primary-contrast-light);
|
|
||||||
--color-primary-contrast-900: var(--color-primary-contrast-light);
|
|
||||||
--color-primary-contrast-950: var(--color-primary-contrast-light);
|
|
||||||
--color-secondary-50: oklch(87.05% 0.08 336.55deg);
|
|
||||||
--color-secondary-100: oklch(83.93% 0.1 336.74deg);
|
|
||||||
--color-secondary-200: oklch(80.87% 0.12 337.02deg);
|
|
||||||
--color-secondary-300: oklch(78.17% 0.13 337.85deg);
|
|
||||||
--color-secondary-400: oklch(75.29% 0.15 338.19deg);
|
|
||||||
--color-secondary-500: oklch(72.53% 0.17 338.6deg);
|
|
||||||
--color-secondary-600: oklch(66.07% 0.16 338.29deg);
|
|
||||||
--color-secondary-700: oklch(59.56% 0.14 338.49deg);
|
|
||||||
--color-secondary-800: oklch(52.62% 0.12 337.58deg);
|
|
||||||
--color-secondary-900: oklch(45.7% 0.11 337.72deg);
|
|
||||||
--color-secondary-950: oklch(38.38% 0.09 336.89deg);
|
|
||||||
--color-secondary-contrast-dark: var(--color-secondary-950);
|
|
||||||
--color-secondary-contrast-light: var(--color-secondary-50);
|
|
||||||
--color-secondary-contrast-50: var(--color-secondary-contrast-dark);
|
|
||||||
--color-secondary-contrast-100: var(--color-secondary-contrast-dark);
|
|
||||||
--color-secondary-contrast-200: var(--color-secondary-contrast-dark);
|
|
||||||
--color-secondary-contrast-300: var(--color-secondary-contrast-dark);
|
|
||||||
--color-secondary-contrast-400: var(--color-secondary-contrast-dark);
|
|
||||||
--color-secondary-contrast-500: var(--color-secondary-contrast-dark);
|
|
||||||
--color-secondary-contrast-600: var(--color-secondary-contrast-dark);
|
|
||||||
--color-secondary-contrast-700: var(--color-secondary-contrast-light);
|
|
||||||
--color-secondary-contrast-800: var(--color-secondary-contrast-light);
|
|
||||||
--color-secondary-contrast-900: var(--color-secondary-contrast-light);
|
|
||||||
--color-secondary-contrast-950: var(--color-secondary-contrast-light);
|
|
||||||
--color-tertiary-50: oklch(85.8% 0.08 182.85deg);
|
|
||||||
--color-tertiary-100: oklch(80.55% 0.09 187.22deg);
|
|
||||||
--color-tertiary-200: oklch(75.29% 0.09 190.97deg);
|
|
||||||
--color-tertiary-300: oklch(70.14% 0.1 194.28deg);
|
|
||||||
--color-tertiary-400: oklch(65.06% 0.1 197.47deg);
|
|
||||||
--color-tertiary-500: oklch(60.13% 0.1 200.95deg);
|
|
||||||
--color-tertiary-600: oklch(55.26% 0.09 199.74deg);
|
|
||||||
--color-tertiary-700: oklch(50.32% 0.08 199.32deg);
|
|
||||||
--color-tertiary-800: oklch(45.24% 0.07 197.5deg);
|
|
||||||
--color-tertiary-900: oklch(40.06% 0.06 196.51deg);
|
|
||||||
--color-tertiary-950: oklch(34.72% 0.05 193.09deg);
|
|
||||||
--color-tertiary-contrast-dark: var(--color-tertiary-950);
|
|
||||||
--color-tertiary-contrast-light: var(--color-tertiary-50);
|
|
||||||
--color-tertiary-contrast-50: var(--color-tertiary-contrast-dark);
|
|
||||||
--color-tertiary-contrast-100: var(--color-tertiary-contrast-dark);
|
|
||||||
--color-tertiary-contrast-200: var(--color-tertiary-contrast-dark);
|
|
||||||
--color-tertiary-contrast-300: var(--color-tertiary-contrast-dark);
|
|
||||||
--color-tertiary-contrast-400: var(--color-tertiary-contrast-dark);
|
|
||||||
--color-tertiary-contrast-500: var(--color-tertiary-contrast-dark);
|
|
||||||
--color-tertiary-contrast-600: var(--color-tertiary-contrast-light);
|
|
||||||
--color-tertiary-contrast-700: var(--color-tertiary-contrast-light);
|
|
||||||
--color-tertiary-contrast-800: var(--color-tertiary-contrast-light);
|
|
||||||
--color-tertiary-contrast-900: var(--color-tertiary-contrast-light);
|
|
||||||
--color-tertiary-contrast-950: var(--color-tertiary-contrast-light);
|
|
||||||
--color-success-50: oklch(85.77% 0.11 142.7deg);
|
|
||||||
--color-success-100: oklch(81.11% 0.13 141.89deg);
|
|
||||||
--color-success-200: oklch(76.23% 0.14 141.28deg);
|
|
||||||
--color-success-300: oklch(71.66% 0.16 140.48deg);
|
|
||||||
--color-success-400: oklch(66.87% 0.17 140.33deg);
|
|
||||||
--color-success-500: oklch(62.41% 0.18 140.43deg);
|
|
||||||
--color-success-600: oklch(57.85% 0.16 140.84deg);
|
|
||||||
--color-success-700: oklch(52.9% 0.14 141.79deg);
|
|
||||||
--color-success-800: oklch(48.16% 0.12 142.88deg);
|
|
||||||
--color-success-900: oklch(43% 0.1 145.42deg);
|
|
||||||
--color-success-950: oklch(38.04% 0.08 149.33deg);
|
|
||||||
--color-success-contrast-dark: var(--color-success-950);
|
|
||||||
--color-success-contrast-light: var(--color-success-50);
|
|
||||||
--color-success-contrast-50: var(--color-success-contrast-dark);
|
|
||||||
--color-success-contrast-100: var(--color-success-contrast-dark);
|
|
||||||
--color-success-contrast-200: var(--color-success-contrast-dark);
|
|
||||||
--color-success-contrast-300: var(--color-success-contrast-dark);
|
|
||||||
--color-success-contrast-400: var(--color-success-contrast-dark);
|
|
||||||
--color-success-contrast-500: var(--color-success-contrast-dark);
|
|
||||||
--color-success-contrast-600: var(--color-success-contrast-light);
|
|
||||||
--color-success-contrast-700: var(--color-success-contrast-light);
|
|
||||||
--color-success-contrast-800: var(--color-success-contrast-light);
|
|
||||||
--color-success-contrast-900: var(--color-success-contrast-light);
|
|
||||||
--color-success-contrast-950: var(--color-success-contrast-light);
|
|
||||||
--color-warning-50: oklch(91.93% 0.07 86.52deg);
|
|
||||||
--color-warning-100: oklch(87.62% 0.09 81.75deg);
|
|
||||||
--color-warning-200: oklch(83.36% 0.11 78.43deg);
|
|
||||||
--color-warning-300: oklch(79.3% 0.12 76.32deg);
|
|
||||||
--color-warning-400: oklch(75.26% 0.14 72.68deg);
|
|
||||||
--color-warning-500: oklch(71.4% 0.15 67.88deg);
|
|
||||||
--color-warning-600: oklch(65.78% 0.14 69.03deg);
|
|
||||||
--color-warning-700: oklch(60.37% 0.12 70.57deg);
|
|
||||||
--color-warning-800: oklch(54.52% 0.1 72.35deg);
|
|
||||||
--color-warning-900: oklch(48.88% 0.09 74.8deg);
|
|
||||||
--color-warning-950: oklch(42.76% 0.07 78.06deg);
|
|
||||||
--color-warning-contrast-dark: var(--color-warning-950);
|
|
||||||
--color-warning-contrast-light: var(--color-warning-50);
|
|
||||||
--color-warning-contrast-50: var(--color-warning-contrast-dark);
|
|
||||||
--color-warning-contrast-100: var(--color-warning-contrast-dark);
|
|
||||||
--color-warning-contrast-200: var(--color-warning-contrast-dark);
|
|
||||||
--color-warning-contrast-300: var(--color-warning-contrast-dark);
|
|
||||||
--color-warning-contrast-400: var(--color-warning-contrast-dark);
|
|
||||||
--color-warning-contrast-500: var(--color-warning-contrast-dark);
|
|
||||||
--color-warning-contrast-600: var(--color-warning-contrast-dark);
|
|
||||||
--color-warning-contrast-700: var(--color-warning-contrast-light);
|
|
||||||
--color-warning-contrast-800: var(--color-warning-contrast-light);
|
|
||||||
--color-warning-contrast-900: var(--color-warning-contrast-light);
|
|
||||||
--color-warning-contrast-950: var(--color-warning-contrast-light);
|
|
||||||
--color-error-50: oklch(75.56% 0.13 2.78deg);
|
|
||||||
--color-error-100: oklch(70.18% 0.16 4.89deg);
|
|
||||||
--color-error-200: oklch(65.27% 0.18 7.81deg);
|
|
||||||
--color-error-300: oklch(60.81% 0.2 10.57deg);
|
|
||||||
--color-error-400: oklch(57.47% 0.22 14.92deg);
|
|
||||||
--color-error-500: oklch(55.13% 0.22 19.72deg);
|
|
||||||
--color-error-600: oklch(50.99% 0.2 18.37deg);
|
|
||||||
--color-error-700: oklch(46.81% 0.18 16.65deg);
|
|
||||||
--color-error-800: oklch(42.42% 0.16 14.8deg);
|
|
||||||
--color-error-900: oklch(38.31% 0.14 12.11deg);
|
|
||||||
--color-error-950: oklch(34.35% 0.11 8.63deg);
|
|
||||||
--color-error-contrast-dark: var(--color-error-950);
|
|
||||||
--color-error-contrast-light: var(--color-error-50);
|
|
||||||
--color-error-contrast-50: var(--color-error-contrast-dark);
|
|
||||||
--color-error-contrast-100: var(--color-error-contrast-dark);
|
|
||||||
--color-error-contrast-200: var(--color-error-contrast-dark);
|
|
||||||
--color-error-contrast-300: var(--color-error-contrast-dark);
|
|
||||||
--color-error-contrast-400: var(--color-error-contrast-dark);
|
|
||||||
--color-error-contrast-500: var(--color-error-contrast-light);
|
|
||||||
--color-error-contrast-600: var(--color-error-contrast-light);
|
|
||||||
--color-error-contrast-700: var(--color-error-contrast-light);
|
|
||||||
--color-error-contrast-800: var(--color-error-contrast-light);
|
|
||||||
--color-error-contrast-900: var(--color-error-contrast-light);
|
|
||||||
--color-error-contrast-950: var(--color-error-contrast-light);
|
|
||||||
--color-surface-50: oklch(90.64% 0.01 267.4deg);
|
|
||||||
--color-surface-100: oklch(85.79% 0.01 271.31deg);
|
|
||||||
--color-surface-200: oklch(80.91% 0.02 274.81deg);
|
|
||||||
--color-surface-300: oklch(75.63% 0.02 276.88deg);
|
|
||||||
--color-surface-400: oklch(70.59% 0.03 278.21deg);
|
|
||||||
--color-surface-500: oklch(65.43% 0.03 278.8deg);
|
|
||||||
--color-surface-600: oklch(57.8% 0.03 280.9deg);
|
|
||||||
--color-surface-700: oklch(50.1% 0.03 280.32deg);
|
|
||||||
--color-surface-800: oklch(41.9% 0.03 282.54deg);
|
|
||||||
--color-surface-900: oklch(33.48% 0.03 281.97deg);
|
|
||||||
--color-surface-950: oklch(24.29% 0.03 283.92deg);
|
|
||||||
--color-surface-contrast-dark: var(--color-surface-950);
|
|
||||||
--color-surface-contrast-light: var(--color-surface-50);
|
|
||||||
--color-surface-contrast-50: var(--color-surface-contrast-dark);
|
|
||||||
--color-surface-contrast-100: var(--color-surface-contrast-dark);
|
|
||||||
--color-surface-contrast-200: var(--color-surface-contrast-dark);
|
|
||||||
--color-surface-contrast-300: var(--color-surface-contrast-dark);
|
|
||||||
--color-surface-contrast-400: var(--color-surface-contrast-dark);
|
|
||||||
--color-surface-contrast-500: var(--color-surface-contrast-dark);
|
|
||||||
--color-surface-contrast-600: var(--color-surface-contrast-dark);
|
|
||||||
--color-surface-contrast-700: var(--color-surface-contrast-light);
|
|
||||||
--color-surface-contrast-800: var(--color-surface-contrast-light);
|
|
||||||
--color-surface-contrast-900: var(--color-surface-contrast-light);
|
|
||||||
--color-surface-contrast-950: var(--color-surface-contrast-light);
|
|
||||||
}
|
|
||||||
13
web/src/app.d.ts
vendored
@@ -1,13 +0,0 @@
|
|||||||
// See https://svelte.dev/docs/kit/types#app.d.ts
|
|
||||||
// for information about these interfaces
|
|
||||||
declare global {
|
|
||||||
namespace App {
|
|
||||||
// interface Error {}
|
|
||||||
// interface Locals {}
|
|
||||||
// interface PageData {}
|
|
||||||
// interface PageState {}
|
|
||||||
// interface Platform {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export {};
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
||||||
%sveltekit.head%
|
|
||||||
</head>
|
|
||||||
<body data-sveltekit-preload-data="hover">
|
|
||||||
<div style="display: contents">%sveltekit.body%</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
<script lang="ts">
|
|
||||||
import LightDarkMode from './LightDarkMode.svelte';
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<footer class="border-t border-surface-200-800 bg-surface-100-900 fixed bottom-0 w-full z-10">
|
|
||||||
<div class="mx-auto flex w-full max-w-7xl items-center justify-between px-4 py-6 text-sm text-surface-700-300">
|
|
||||||
<span>Stocklet</span>
|
|
||||||
<LightDarkMode />
|
|
||||||
</div>
|
|
||||||
</footer>
|
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
<script lang="ts">
|
|
||||||
import { Label, Switch } from "bits-ui";
|
|
||||||
|
|
||||||
let checked = $state(false);
|
|
||||||
|
|
||||||
$effect(() => {
|
|
||||||
const mode = localStorage.getItem('mode') || 'light';
|
|
||||||
checked = mode === 'dark';
|
|
||||||
document.documentElement.setAttribute('data-mode', mode);
|
|
||||||
});
|
|
||||||
|
|
||||||
const onCheckedChange = (event: { checked: boolean }) => {
|
|
||||||
const mode = event.checked ? 'dark' : 'light';
|
|
||||||
document.documentElement.setAttribute('data-mode', mode);
|
|
||||||
localStorage.setItem('mode', mode);
|
|
||||||
checked = event.checked;
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<svelte:head>
|
|
||||||
<script>
|
|
||||||
const mode = localStorage.getItem('mode') || 'light';
|
|
||||||
document.documentElement.setAttribute('data-mode', mode);
|
|
||||||
</script>
|
|
||||||
</svelte:head>
|
|
||||||
|
|
||||||
<div class="flex items-center space-x-3">
|
|
||||||
<Switch.Root
|
|
||||||
id="light-dark"
|
|
||||||
checked={checked}
|
|
||||||
onCheckedChange={(change) => { onCheckedChange({ checked: change }) }}
|
|
||||||
class="focus-visible:ring-foreground focus-visible:ring-offset-background data-[state=checked]:bg-foreground data-[state=unchecked]:bg-dark-10 data-[state=unchecked]:shadow-mini-inset dark:data-[state=checked]:bg-foreground focus-visible:outline-hidden peer inline-flex h-[36px] min-h-[36px] w-[60px] shrink-0 cursor-pointer items-center rounded-full px-[3px] transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50"
|
|
||||||
>
|
|
||||||
<Switch.Thumb
|
|
||||||
class="bg-background data-[state=unchecked]:shadow-mini dark:border-background/30 dark:bg-foreground dark:shadow-popover pointer-events-none block size-[30px] shrink-0 rounded-full transition-transform data-[state=checked]:translate-x-6 data-[state=unchecked]:translate-x-0 dark:border dark:data-[state=unchecked]:border"
|
|
||||||
/>
|
|
||||||
</Switch.Root>
|
|
||||||
<Label.Root for="light-dark" class="text-sm font-medium">Light / Dark</Label.Root>
|
|
||||||
</div>
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
<script lang="ts">
|
|
||||||
import "../app.css";
|
|
||||||
|
|
||||||
import { ShoppingCart, User } from '@lucide/svelte';
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<header class="border-b border-surface-200-800 bg-surface-100-900">
|
|
||||||
<div class="mx-auto w-full max-w-7xl px-4 sm:px-6 lg:px-8">
|
|
||||||
<div class="flex h-16 items-center justify-between">
|
|
||||||
<div class="mx-12">
|
|
||||||
<a href="/" class="flex items-center gap-2 font-semibold">
|
|
||||||
<img src="/assets/logo.svg" alt="Stocklet" class="h-8 w-auto dark:hidden" />
|
|
||||||
<img src="/assets/logo-light.svg" alt="Stocklet" class="h-8 w-auto hidden dark:block" />
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="bg-transparent w-auto p-0 mx-12">
|
|
||||||
<a href="/">Home</a>
|
|
||||||
<a href="/about">About</a>
|
|
||||||
|
|
||||||
<div class="flex flex-row gap-4">
|
|
||||||
<a href="/" title="Cart">
|
|
||||||
<p>Cart</p>
|
|
||||||
<ShoppingCart class="h-6 w-6" />
|
|
||||||
</a>
|
|
||||||
<a href="/" title="User">
|
|
||||||
<p>User</p>
|
|
||||||
<User class="h-6 w-6" />
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</header>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
import createClient from "openapi-fetch";
|
|
||||||
|
|
||||||
import type { paths } from "./schema.d";
|
|
||||||
import { API_URL } from "../config";
|
|
||||||
|
|
||||||
const client = createClient<paths>({ baseUrl: API_URL });
|
|
||||||
|
|
||||||
export default client;
|
|
||||||
1614
web/src/lib/api/schema.d.ts
vendored
@@ -1 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" width="107" height="128" viewBox="0 0 107 128"><title>svelte-logo</title><path d="M94.157 22.819c-10.4-14.885-30.94-19.297-45.792-9.835L22.282 29.608A29.92 29.92 0 0 0 8.764 49.65a31.5 31.5 0 0 0 3.108 20.231 30 30 0 0 0-4.477 11.183 31.9 31.9 0 0 0 5.448 24.116c10.402 14.887 30.942 19.297 45.791 9.835l26.083-16.624A29.92 29.92 0 0 0 98.235 78.35a31.53 31.53 0 0 0-3.105-20.232 30 30 0 0 0 4.474-11.182 31.88 31.88 0 0 0-5.447-24.116" style="fill:#ff3e00"/><path d="M45.817 106.582a20.72 20.72 0 0 1-22.237-8.243 19.17 19.17 0 0 1-3.277-14.503 18 18 0 0 1 .624-2.435l.49-1.498 1.337.981a33.6 33.6 0 0 0 10.203 5.098l.97.294-.09.968a5.85 5.85 0 0 0 1.052 3.878 6.24 6.24 0 0 0 6.695 2.485 5.8 5.8 0 0 0 1.603-.704L69.27 76.28a5.43 5.43 0 0 0 2.45-3.631 5.8 5.8 0 0 0-.987-4.371 6.24 6.24 0 0 0-6.698-2.487 5.7 5.7 0 0 0-1.6.704l-9.953 6.345a19 19 0 0 1-5.296 2.326 20.72 20.72 0 0 1-22.237-8.243 19.17 19.17 0 0 1-3.277-14.502 17.99 17.99 0 0 1 8.13-12.052l26.081-16.623a19 19 0 0 1 5.3-2.329 20.72 20.72 0 0 1 22.237 8.243 19.17 19.17 0 0 1 3.277 14.503 18 18 0 0 1-.624 2.435l-.49 1.498-1.337-.98a33.6 33.6 0 0 0-10.203-5.1l-.97-.294.09-.968a5.86 5.86 0 0 0-1.052-3.878 6.24 6.24 0 0 0-6.696-2.485 5.8 5.8 0 0 0-1.602.704L37.73 51.72a5.42 5.42 0 0 0-2.449 3.63 5.79 5.79 0 0 0 .986 4.372 6.24 6.24 0 0 0 6.698 2.486 5.8 5.8 0 0 0 1.602-.704l9.952-6.342a19 19 0 0 1 5.295-2.328 20.72 20.72 0 0 1 22.237 8.242 19.17 19.17 0 0 1 3.277 14.503 18 18 0 0 1-8.13 12.053l-26.081 16.622a19 19 0 0 1-5.3 2.328" style="fill:#fff"/></svg>
|
|
||||||
|
Before Width: | Height: | Size: 1.5 KiB |
@@ -1,3 +0,0 @@
|
|||||||
import { PUBLIC_API_URL } from "$env/static/public";
|
|
||||||
|
|
||||||
export const API_URL = PUBLIC_API_URL || "http://localhost:80/v1/";
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
// place files you want to import through the `$lib` alias in this folder.
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
<script lang="ts">
|
|
||||||
import Navbar from '../components/Navbar.svelte';
|
|
||||||
import Footer from '../components/Footer.svelte';
|
|
||||||
|
|
||||||
import '../app.css';
|
|
||||||
import favicon from '$lib/assets/favicon.svg';
|
|
||||||
|
|
||||||
let { children } = $props();
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<svelte:head>
|
|
||||||
<title>Stocklet</title>
|
|
||||||
|
|
||||||
<link rel="icon" href={favicon} />
|
|
||||||
</svelte:head>
|
|
||||||
|
|
||||||
<main data-theme="catppuccin" class="min-h-screen h-full">
|
|
||||||
<div>
|
|
||||||
<Navbar />
|
|
||||||
|
|
||||||
{@render children?.()}
|
|
||||||
|
|
||||||
<Footer />
|
|
||||||
</div>
|
|
||||||
</main>
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
<script lang="ts">
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<h5 class="text-xl">Homepage</h5>
|
|
||||||
</div>
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
<script lang="ts">
|
|
||||||
import type { components } from '$lib/api/schema';
|
|
||||||
|
|
||||||
const orders: components['schemas']['v1Order'][] = [
|
|
||||||
{
|
|
||||||
id: '1',
|
|
||||||
status: 'ORDER_STATUS_PENDING',
|
|
||||||
items: {
|
|
||||||
'1': 1,
|
|
||||||
'2': 2,
|
|
||||||
},
|
|
||||||
customerId: '1',
|
|
||||||
transactionId: '1',
|
|
||||||
createdAt: Date.now().toString(),
|
|
||||||
updatedAt: Date.now().toString(),
|
|
||||||
},
|
|
||||||
];
|
|
||||||
</script>
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
<script lang="ts">
|
|
||||||
import type { PageProps } from './$types';
|
|
||||||
|
|
||||||
let { data }: PageProps = $props();
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<h1>Order ID: {data.id}</h1>
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
import type { PageLoad } from './$types';
|
|
||||||
|
|
||||||
export const load: PageLoad = ({ params }) => {
|
|
||||||
return {
|
|
||||||
id: params.id
|
|
||||||
};
|
|
||||||
};
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
<script lang="ts">
|
|
||||||
import type { PageProps } from './$types';
|
|
||||||
|
|
||||||
let { data }: PageProps = $props();
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<h1>Product ID: {data.id}</h1>
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
// import { error } from '@sveltejs/kit';
|
|
||||||
import type { PageLoad } from './$types';
|
|
||||||
|
|
||||||
export const load: PageLoad = ({ params }) => {
|
|
||||||
return {
|
|
||||||
id: params.id
|
|
||||||
};
|
|
||||||
|
|
||||||
// error(404, 'Product not found');
|
|
||||||
};
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
import { writable } from 'svelte/store';
|
|
||||||
import type { components } from "$lib/api/schema";
|
|
||||||
|
|
||||||
type AuthStore = {
|
|
||||||
profile: components["schemas"]["v1User"] | null;
|
|
||||||
tokens: components["schemas"]["v1AuthToken"] | null;
|
|
||||||
isLoading: boolean;
|
|
||||||
};
|
|
||||||
|
|
||||||
const INITIAL_AUTH_STATE: AuthStore = {
|
|
||||||
profile: null,
|
|
||||||
tokens: null,
|
|
||||||
isLoading: false
|
|
||||||
};
|
|
||||||
|
|
||||||
export const authState = writable<AuthStore>(INITIAL_AUTH_STATE);
|
|
||||||
|
|
||||||
export function setTokens(value: components["schemas"]["v1AuthToken"]): void {
|
|
||||||
authState.update((currentState) => {
|
|
||||||
return { ...currentState, tokens: value }
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
export function setProfile(value: components["schemas"]["v1User"]): void {
|
|
||||||
authState.update((currentState) => {
|
|
||||||
return { ...currentState, profile: value }
|
|
||||||
});
|
|
||||||
}
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
import { writable } from 'svelte/store';
|
|
||||||
|
|
||||||
function getInitialDark(): boolean {
|
|
||||||
if (typeof window === 'undefined') return false;
|
|
||||||
try {
|
|
||||||
const saved = localStorage.getItem('color-scheme');
|
|
||||||
if (saved === 'dark') return true;
|
|
||||||
if (saved === 'light') return false;
|
|
||||||
return window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
|
|
||||||
} catch {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export const darkMode = writable<boolean>(getInitialDark());
|
|
||||||
|
|
||||||
export function setDarkMode(value: boolean): void {
|
|
||||||
darkMode.set(value);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function toggleDarkMode(): void {
|
|
||||||
darkMode.update((v) => !v);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof window !== 'undefined') {
|
|
||||||
darkMode.subscribe((isDark) => {
|
|
||||||
const root = document.documentElement;
|
|
||||||
root.classList.toggle('dark', isDark);
|
|
||||||
try {
|
|
||||||
localStorage.setItem('color-scheme', isDark ? 'dark' : 'light');
|
|
||||||
} catch {
|
|
||||||
// ignore storage write errors
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
Before Width: | Height: | Size: 117 KiB |
|
Before Width: | Height: | Size: 32 KiB |
@@ -1,9 +0,0 @@
|
|||||||
font name: sofiapro-light
|
|
||||||
font link: https://www.fontspring.com/fonts/mostardesign/sofia-pro/sofia-pro-light
|
|
||||||
font author: Mostardesign
|
|
||||||
font author site: http://www.motyfo.com/
|
|
||||||
|
|
||||||
icon designer: N.K.Narasimhan
|
|
||||||
icon designer link: /creator/animnarsi@yahoo.com/
|
|
||||||
|
|
||||||
{"bg":"#F1E2EC","icon-gradient-0":"#8C48D2","icon-gradient-1":"#CF705A","font":"#331B2B","slogan":"#472f3f"}
|
|
||||||
@@ -1,81 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<svg
|
|
||||||
data-v-423bf9ae=""
|
|
||||||
viewBox="0 0 434 90"
|
|
||||||
class="iconLeft"
|
|
||||||
version="1.1"
|
|
||||||
id="svg4"
|
|
||||||
sodipodi:docname="logo-light.svg"
|
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg">
|
|
||||||
<sodipodi:namedview
|
|
||||||
id="namedview4"
|
|
||||||
pagecolor="#ffffff"
|
|
||||||
bordercolor="#000000"
|
|
||||||
borderopacity="0.25"
|
|
||||||
inkscape:showpageshadow="2"
|
|
||||||
inkscape:pageopacity="0.0"
|
|
||||||
inkscape:pagecheckerboard="0"
|
|
||||||
inkscape:deskcolor="#d1d1d1"
|
|
||||||
inkscape:zoom="2.8018433"
|
|
||||||
inkscape:cx="217"
|
|
||||||
inkscape:cy="44.970395"
|
|
||||||
inkscape:window-width="1920"
|
|
||||||
inkscape:window-height="1011"
|
|
||||||
inkscape:window-x="0"
|
|
||||||
inkscape:window-y="0"
|
|
||||||
inkscape:window-maximized="1"
|
|
||||||
inkscape:current-layer="svg4" />
|
|
||||||
<g
|
|
||||||
data-v-423bf9ae=""
|
|
||||||
id="7ccbf1f1-d01a-42aa-9755-e9ae79724b7b"
|
|
||||||
fill="#331B2B"
|
|
||||||
transform="matrix(5.7915059834320255,0,0,5.7915059834320255,152.75612078133662,14.999999523162842)"
|
|
||||||
style="fill:#ffffff;fill-opacity:1">
|
|
||||||
<path
|
|
||||||
d="M4.00 10.36C6.12 10.36 7.24 8.92 7.24 7.56C7.24 6.16 6.17 5.33 4.65 4.96L3.35 4.65C1.90 4.31 1.76 3.54 1.76 3.09C1.76 2.02 2.79 1.33 3.88 1.33C5.04 1.33 5.92 2.02 5.98 3.08L6.90 3.08C6.85 1.47 5.54 0.46 3.91 0.46C2.31 0.46 0.84 1.50 0.84 3.09C0.84 3.86 1.13 5.03 3.12 5.50L4.42 5.81C5.38 6.05 6.31 6.55 6.31 7.60C6.31 8.51 5.54 9.49 4.00 9.49C2.65 9.49 1.78 8.58 1.68 7.63L0.77 7.63C0.84 9.03 2.11 10.36 4.00 10.36ZM11.82 3.68L10.32 3.68L10.32 1.08L9.44 1.08L9.44 3.68L8.25 3.68L8.25 4.45L9.44 4.45L9.44 10.22L10.32 10.22L10.32 4.45L11.82 4.45ZM16.02 10.36C17.88 10.36 19.45 9.00 19.45 6.93C19.45 4.86 17.88 3.54 16.02 3.54C14.15 3.54 12.60 4.86 12.60 6.93C12.60 9.00 14.15 10.36 16.02 10.36ZM16.02 9.51C14.63 9.51 13.50 8.48 13.50 6.93C13.50 5.39 14.63 4.40 16.02 4.40C17.39 4.40 18.55 5.39 18.55 6.93C18.55 8.48 17.39 9.51 16.02 9.51ZM24.23 10.35C25.17 10.35 26.00 10.01 26.59 9.45L26.03 8.85C25.58 9.25 24.96 9.49 24.26 9.49C22.83 9.49 21.67 8.47 21.67 6.94C21.67 5.40 22.83 4.40 24.26 4.40C24.96 4.40 25.58 4.65 26.03 5.05L26.59 4.44C26.00 3.89 25.17 3.54 24.23 3.54C22.37 3.54 20.78 4.87 20.78 6.94C20.78 9.02 22.37 10.35 24.23 10.35ZM33.66 10.22L30.03 6.52L32.83 3.68L31.58 3.68L29.13 6.19L29.13 0L28.24 0L28.24 10.22L29.13 10.22L29.13 6.86L32.44 10.22ZM34.68 10.22L35.57 10.22L35.57 0L34.68 0ZM43.92 6.93C43.92 4.86 42.56 3.54 40.70 3.54C38.85 3.54 37.37 4.86 37.37 6.93C37.37 9.00 38.85 10.36 40.70 10.36C41.93 10.36 43.05 9.77 43.62 8.72L42.85 8.39C42.42 9.10 41.62 9.51 40.73 9.51C39.41 9.51 38.43 8.72 38.28 7.32L43.90 7.32C43.92 7.20 43.92 7.06 43.92 6.93ZM38.29 6.55C38.46 5.15 39.41 4.40 40.70 4.40C41.97 4.40 42.91 5.19 43.04 6.55ZM48.40 3.68L46.90 3.68L46.90 1.08L46.02 1.08L46.02 3.68L44.83 3.68L44.83 4.45L46.02 4.45L46.02 10.22L46.90 10.22L46.90 4.45L48.40 4.45Z"
|
|
||||||
id="path1"
|
|
||||||
style="fill:#ffffff;fill-opacity:1" />
|
|
||||||
</g>
|
|
||||||
<defs
|
|
||||||
data-v-423bf9ae=""
|
|
||||||
id="defs2">
|
|
||||||
<linearGradient
|
|
||||||
data-v-423bf9ae=""
|
|
||||||
gradientTransform="rotate(25)"
|
|
||||||
id="e8769ea9-6fdc-46c7-87bb-cf92f23a859c"
|
|
||||||
x1="0%"
|
|
||||||
y1="0%"
|
|
||||||
x2="100%"
|
|
||||||
y2="0%">
|
|
||||||
<stop
|
|
||||||
data-v-423bf9ae=""
|
|
||||||
offset="0%"
|
|
||||||
style="stop-color: rgb(140, 72, 210); stop-opacity: 1;"
|
|
||||||
id="stop1" />
|
|
||||||
<stop
|
|
||||||
data-v-423bf9ae=""
|
|
||||||
offset="100%"
|
|
||||||
style="stop-color: rgb(207, 112, 90); stop-opacity: 1;"
|
|
||||||
id="stop2" />
|
|
||||||
</linearGradient>
|
|
||||||
</defs>
|
|
||||||
<g
|
|
||||||
data-v-423bf9ae=""
|
|
||||||
id="7665600e-8875-4e76-bddc-4f57bcba1929"
|
|
||||||
transform="matrix(3.635041968759201,0,0,3.635041968759201,0.39221588485064274,-0.0000019073486328125)"
|
|
||||||
stroke="none"
|
|
||||||
fill="url(#e8769ea9-6fdc-46c7-87bb-cf92f23a859c)">
|
|
||||||
<path
|
|
||||||
d="M30.231 8.097h-5.692v7.71h5.692v-7.71zM37.748 8.097h-6.023v7.71h6.023v-7.71z"
|
|
||||||
id="path2" />
|
|
||||||
<path
|
|
||||||
d="M35.647 22.106c0 .249-.026.47-.055.663h2.155v-5.471H13.569a.75.75 0 01-.36-.084.651.651 0 01-.276-.275L3.207 0H0l12.768 22.77h2.266c-.028-.138-.028-.276-.028-.414 0-1.022.359-1.907 1.105-2.625.718-.719 1.575-1.078 2.598-1.078.995 0 1.852.359 2.57 1.078.746.718 1.105 1.603 1.105 2.625 0 .138 0 .276-.028.414h6.024a2.385 2.385 0 01-.083-.663c0-1.021.359-1.906 1.078-2.625.718-.718 1.574-1.078 2.569-1.078 1.023 0 1.907.36 2.626 1.078.719.718 1.077 1.603 1.077 2.624z"
|
|
||||||
id="path3" />
|
|
||||||
<path
|
|
||||||
d="M34.404 22.079a2.37 2.37 0 00-.719-1.74 2.373 2.373 0 00-1.741-.719c-.663 0-1.243.248-1.713.719a2.372 2.372 0 00-.719 1.74c0 .249.028.497.111.69.11.387.304.719.607 1.023.47.47 1.05.719 1.713.719.691 0 1.271-.249 1.741-.719.304-.305.498-.637.635-1.023.058-.193.085-.441.085-.69zM23.047 15.807v-7.71h-5.859v7.71h5.859zM15.696 8.097H9.589l4.422 7.71h1.685v-7.71zM16.221 22.328c0 .139.028.304.056.441.082.471.303.912.663 1.271.497.471 1.077.719 1.74.719.664 0 1.244-.248 1.742-.719.359-.359.58-.801.69-1.271.027-.138.027-.303.027-.441 0-.691-.248-1.271-.718-1.741-.498-.47-1.078-.719-1.742-.719-.663 0-1.243.249-1.74.719a2.384 2.384 0 00-.718 1.741z"
|
|
||||||
id="path4" />
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 5.1 KiB |
@@ -1,81 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<svg
|
|
||||||
data-v-423bf9ae=""
|
|
||||||
viewBox="0 0 434 90"
|
|
||||||
class="iconLeft"
|
|
||||||
version="1.1"
|
|
||||||
id="svg4"
|
|
||||||
sodipodi:docname="logo.svg"
|
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg">
|
|
||||||
<sodipodi:namedview
|
|
||||||
id="namedview4"
|
|
||||||
pagecolor="#ffffff"
|
|
||||||
bordercolor="#000000"
|
|
||||||
borderopacity="0.25"
|
|
||||||
inkscape:showpageshadow="2"
|
|
||||||
inkscape:pageopacity="0.0"
|
|
||||||
inkscape:pagecheckerboard="0"
|
|
||||||
inkscape:deskcolor="#d1d1d1"
|
|
||||||
inkscape:zoom="4.0852535"
|
|
||||||
inkscape:cx="149.56232"
|
|
||||||
inkscape:cy="45.040045"
|
|
||||||
inkscape:window-width="1920"
|
|
||||||
inkscape:window-height="1011"
|
|
||||||
inkscape:window-x="0"
|
|
||||||
inkscape:window-y="0"
|
|
||||||
inkscape:window-maximized="1"
|
|
||||||
inkscape:current-layer="svg4" />
|
|
||||||
<g
|
|
||||||
data-v-423bf9ae=""
|
|
||||||
id="7ccbf1f1-d01a-42aa-9755-e9ae79724b7b"
|
|
||||||
fill="#331B2B"
|
|
||||||
transform="matrix(5.7915059834320255,0,0,5.7915059834320255,152.75612078133662,14.999999523162842)"
|
|
||||||
style="fill:#000000;fill-opacity:1">
|
|
||||||
<path
|
|
||||||
d="M4.00 10.36C6.12 10.36 7.24 8.92 7.24 7.56C7.24 6.16 6.17 5.33 4.65 4.96L3.35 4.65C1.90 4.31 1.76 3.54 1.76 3.09C1.76 2.02 2.79 1.33 3.88 1.33C5.04 1.33 5.92 2.02 5.98 3.08L6.90 3.08C6.85 1.47 5.54 0.46 3.91 0.46C2.31 0.46 0.84 1.50 0.84 3.09C0.84 3.86 1.13 5.03 3.12 5.50L4.42 5.81C5.38 6.05 6.31 6.55 6.31 7.60C6.31 8.51 5.54 9.49 4.00 9.49C2.65 9.49 1.78 8.58 1.68 7.63L0.77 7.63C0.84 9.03 2.11 10.36 4.00 10.36ZM11.82 3.68L10.32 3.68L10.32 1.08L9.44 1.08L9.44 3.68L8.25 3.68L8.25 4.45L9.44 4.45L9.44 10.22L10.32 10.22L10.32 4.45L11.82 4.45ZM16.02 10.36C17.88 10.36 19.45 9.00 19.45 6.93C19.45 4.86 17.88 3.54 16.02 3.54C14.15 3.54 12.60 4.86 12.60 6.93C12.60 9.00 14.15 10.36 16.02 10.36ZM16.02 9.51C14.63 9.51 13.50 8.48 13.50 6.93C13.50 5.39 14.63 4.40 16.02 4.40C17.39 4.40 18.55 5.39 18.55 6.93C18.55 8.48 17.39 9.51 16.02 9.51ZM24.23 10.35C25.17 10.35 26.00 10.01 26.59 9.45L26.03 8.85C25.58 9.25 24.96 9.49 24.26 9.49C22.83 9.49 21.67 8.47 21.67 6.94C21.67 5.40 22.83 4.40 24.26 4.40C24.96 4.40 25.58 4.65 26.03 5.05L26.59 4.44C26.00 3.89 25.17 3.54 24.23 3.54C22.37 3.54 20.78 4.87 20.78 6.94C20.78 9.02 22.37 10.35 24.23 10.35ZM33.66 10.22L30.03 6.52L32.83 3.68L31.58 3.68L29.13 6.19L29.13 0L28.24 0L28.24 10.22L29.13 10.22L29.13 6.86L32.44 10.22ZM34.68 10.22L35.57 10.22L35.57 0L34.68 0ZM43.92 6.93C43.92 4.86 42.56 3.54 40.70 3.54C38.85 3.54 37.37 4.86 37.37 6.93C37.37 9.00 38.85 10.36 40.70 10.36C41.93 10.36 43.05 9.77 43.62 8.72L42.85 8.39C42.42 9.10 41.62 9.51 40.73 9.51C39.41 9.51 38.43 8.72 38.28 7.32L43.90 7.32C43.92 7.20 43.92 7.06 43.92 6.93ZM38.29 6.55C38.46 5.15 39.41 4.40 40.70 4.40C41.97 4.40 42.91 5.19 43.04 6.55ZM48.40 3.68L46.90 3.68L46.90 1.08L46.02 1.08L46.02 3.68L44.83 3.68L44.83 4.45L46.02 4.45L46.02 10.22L46.90 10.22L46.90 4.45L48.40 4.45Z"
|
|
||||||
id="path1"
|
|
||||||
style="fill:#000000;fill-opacity:1" />
|
|
||||||
</g>
|
|
||||||
<defs
|
|
||||||
data-v-423bf9ae=""
|
|
||||||
id="defs2">
|
|
||||||
<linearGradient
|
|
||||||
data-v-423bf9ae=""
|
|
||||||
gradientTransform="rotate(25)"
|
|
||||||
id="e8769ea9-6fdc-46c7-87bb-cf92f23a859c"
|
|
||||||
x1="0%"
|
|
||||||
y1="0%"
|
|
||||||
x2="100%"
|
|
||||||
y2="0%">
|
|
||||||
<stop
|
|
||||||
data-v-423bf9ae=""
|
|
||||||
offset="0%"
|
|
||||||
style="stop-color: rgb(140, 72, 210); stop-opacity: 1;"
|
|
||||||
id="stop1" />
|
|
||||||
<stop
|
|
||||||
data-v-423bf9ae=""
|
|
||||||
offset="100%"
|
|
||||||
style="stop-color: rgb(207, 112, 90); stop-opacity: 1;"
|
|
||||||
id="stop2" />
|
|
||||||
</linearGradient>
|
|
||||||
</defs>
|
|
||||||
<g
|
|
||||||
data-v-423bf9ae=""
|
|
||||||
id="7665600e-8875-4e76-bddc-4f57bcba1929"
|
|
||||||
transform="matrix(3.635041968759201,0,0,3.635041968759201,0.39221588485064274,-0.0000019073486328125)"
|
|
||||||
stroke="none"
|
|
||||||
fill="url(#e8769ea9-6fdc-46c7-87bb-cf92f23a859c)">
|
|
||||||
<path
|
|
||||||
d="M30.231 8.097h-5.692v7.71h5.692v-7.71zM37.748 8.097h-6.023v7.71h6.023v-7.71z"
|
|
||||||
id="path2" />
|
|
||||||
<path
|
|
||||||
d="M35.647 22.106c0 .249-.026.47-.055.663h2.155v-5.471H13.569a.75.75 0 01-.36-.084.651.651 0 01-.276-.275L3.207 0H0l12.768 22.77h2.266c-.028-.138-.028-.276-.028-.414 0-1.022.359-1.907 1.105-2.625.718-.719 1.575-1.078 2.598-1.078.995 0 1.852.359 2.57 1.078.746.718 1.105 1.603 1.105 2.625 0 .138 0 .276-.028.414h6.024a2.385 2.385 0 01-.083-.663c0-1.021.359-1.906 1.078-2.625.718-.718 1.574-1.078 2.569-1.078 1.023 0 1.907.36 2.626 1.078.719.718 1.077 1.603 1.077 2.624z"
|
|
||||||
id="path3" />
|
|
||||||
<path
|
|
||||||
d="M34.404 22.079a2.37 2.37 0 00-.719-1.74 2.373 2.373 0 00-1.741-.719c-.663 0-1.243.248-1.713.719a2.372 2.372 0 00-.719 1.74c0 .249.028.497.111.69.11.387.304.719.607 1.023.47.47 1.05.719 1.713.719.691 0 1.271-.249 1.741-.719.304-.305.498-.637.635-1.023.058-.193.085-.441.085-.69zM23.047 15.807v-7.71h-5.859v7.71h5.859zM15.696 8.097H9.589l4.422 7.71h1.685v-7.71zM16.221 22.328c0 .139.028.304.056.441.082.471.303.912.663 1.271.497.471 1.077.719 1.74.719.664 0 1.244-.248 1.742-.719.359-.359.58-.801.69-1.271.027-.138.027-.303.027-.441 0-.691-.248-1.271-.718-1.741-.498-.47-1.078-.719-1.742-.719-.663 0-1.243.249-1.74.719a2.384 2.384 0 00-.718 1.741z"
|
|
||||||
id="path4" />
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 5.1 KiB |
|
Before Width: | Height: | Size: 34 KiB |
@@ -1 +0,0 @@
|
|||||||
<svg data-v-423bf9ae="" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 434 90" class="iconLeft"><!----><!----><!----><g data-v-423bf9ae="" id="dd29e1ea-8536-46b0-b33c-374cd452669b" fill="black" transform="matrix(5.7915059834320255,0,0,5.7915059834320255,152.75612078133662,14.999999523162842)"><path d="M4.00 10.36C6.12 10.36 7.24 8.92 7.24 7.56C7.24 6.16 6.17 5.33 4.65 4.96L3.35 4.65C1.90 4.31 1.76 3.54 1.76 3.09C1.76 2.02 2.79 1.33 3.88 1.33C5.04 1.33 5.92 2.02 5.98 3.08L6.90 3.08C6.85 1.47 5.54 0.46 3.91 0.46C2.31 0.46 0.84 1.50 0.84 3.09C0.84 3.86 1.13 5.03 3.12 5.50L4.42 5.81C5.38 6.05 6.31 6.55 6.31 7.60C6.31 8.51 5.54 9.49 4.00 9.49C2.65 9.49 1.78 8.58 1.68 7.63L0.77 7.63C0.84 9.03 2.11 10.36 4.00 10.36ZM11.82 3.68L10.32 3.68L10.32 1.08L9.44 1.08L9.44 3.68L8.25 3.68L8.25 4.45L9.44 4.45L9.44 10.22L10.32 10.22L10.32 4.45L11.82 4.45ZM16.02 10.36C17.88 10.36 19.45 9.00 19.45 6.93C19.45 4.86 17.88 3.54 16.02 3.54C14.15 3.54 12.60 4.86 12.60 6.93C12.60 9.00 14.15 10.36 16.02 10.36ZM16.02 9.51C14.63 9.51 13.50 8.48 13.50 6.93C13.50 5.39 14.63 4.40 16.02 4.40C17.39 4.40 18.55 5.39 18.55 6.93C18.55 8.48 17.39 9.51 16.02 9.51ZM24.23 10.35C25.17 10.35 26.00 10.01 26.59 9.45L26.03 8.85C25.58 9.25 24.96 9.49 24.26 9.49C22.83 9.49 21.67 8.47 21.67 6.94C21.67 5.40 22.83 4.40 24.26 4.40C24.96 4.40 25.58 4.65 26.03 5.05L26.59 4.44C26.00 3.89 25.17 3.54 24.23 3.54C22.37 3.54 20.78 4.87 20.78 6.94C20.78 9.02 22.37 10.35 24.23 10.35ZM33.66 10.22L30.03 6.52L32.83 3.68L31.58 3.68L29.13 6.19L29.13 0L28.24 0L28.24 10.22L29.13 10.22L29.13 6.86L32.44 10.22ZM34.68 10.22L35.57 10.22L35.57 0L34.68 0ZM43.92 6.93C43.92 4.86 42.56 3.54 40.70 3.54C38.85 3.54 37.37 4.86 37.37 6.93C37.37 9.00 38.85 10.36 40.70 10.36C41.93 10.36 43.05 9.77 43.62 8.72L42.85 8.39C42.42 9.10 41.62 9.51 40.73 9.51C39.41 9.51 38.43 8.72 38.28 7.32L43.90 7.32C43.92 7.20 43.92 7.06 43.92 6.93ZM38.29 6.55C38.46 5.15 39.41 4.40 40.70 4.40C41.97 4.40 42.91 5.19 43.04 6.55ZM48.40 3.68L46.90 3.68L46.90 1.08L46.02 1.08L46.02 3.68L44.83 3.68L44.83 4.45L46.02 4.45L46.02 10.22L46.90 10.22L46.90 4.45L48.40 4.45Z"></path></g><!----><g data-v-423bf9ae="" id="1f868b94-934e-425c-b97d-c594a0825f88" transform="matrix(3.635041968759201,0,0,3.635041968759201,0.39221588485064274,-0.0000019073486328125)" stroke="none" fill="black"><path d="M30.231 8.097h-5.692v7.71h5.692v-7.71zM37.748 8.097h-6.023v7.71h6.023v-7.71z"></path><path d="M35.647 22.106c0 .249-.026.47-.055.663h2.155v-5.471H13.569a.75.75 0 01-.36-.084.651.651 0 01-.276-.275L3.207 0H0l12.768 22.77h2.266c-.028-.138-.028-.276-.028-.414 0-1.022.359-1.907 1.105-2.625.718-.719 1.575-1.078 2.598-1.078.995 0 1.852.359 2.57 1.078.746.718 1.105 1.603 1.105 2.625 0 .138 0 .276-.028.414h6.024a2.385 2.385 0 01-.083-.663c0-1.021.359-1.906 1.078-2.625.718-.718 1.574-1.078 2.569-1.078 1.023 0 1.907.36 2.626 1.078.719.718 1.077 1.603 1.077 2.624z"></path><path d="M34.404 22.079a2.37 2.37 0 00-.719-1.74 2.373 2.373 0 00-1.741-.719c-.663 0-1.243.248-1.713.719a2.372 2.372 0 00-.719 1.74c0 .249.028.497.111.69.11.387.304.719.607 1.023.47.47 1.05.719 1.713.719.691 0 1.271-.249 1.741-.719.304-.305.498-.637.635-1.023.058-.193.085-.441.085-.69zM23.047 15.807v-7.71h-5.859v7.71h5.859zM15.696 8.097H9.589l4.422 7.71h1.685v-7.71zM16.221 22.328c0 .139.028.304.056.441.082.471.303.912.663 1.271.497.471 1.077.719 1.74.719.664 0 1.244-.248 1.742-.719.359-.359.58-.801.69-1.271.027-.138.027-.303.027-.441 0-.691-.248-1.271-.718-1.741-.498-.47-1.078-.719-1.742-.719-.663 0-1.243.249-1.74.719a2.384 2.384 0 00-.718 1.741z"></path></g><!----></svg>
|
|
||||||
|
Before Width: | Height: | Size: 3.5 KiB |
@@ -1 +0,0 @@
|
|||||||
<svg data-v-423bf9ae="" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 434 90" class="iconLeft"><!----><!----><!----><g data-v-423bf9ae="" id="1257107e-f0fa-4ca8-afb9-859f8a88e819" fill="white" transform="matrix(5.7915059834320255,0,0,5.7915059834320255,152.75612078133662,14.999999523162842)"><path d="M4.00 10.36C6.12 10.36 7.24 8.92 7.24 7.56C7.24 6.16 6.17 5.33 4.65 4.96L3.35 4.65C1.90 4.31 1.76 3.54 1.76 3.09C1.76 2.02 2.79 1.33 3.88 1.33C5.04 1.33 5.92 2.02 5.98 3.08L6.90 3.08C6.85 1.47 5.54 0.46 3.91 0.46C2.31 0.46 0.84 1.50 0.84 3.09C0.84 3.86 1.13 5.03 3.12 5.50L4.42 5.81C5.38 6.05 6.31 6.55 6.31 7.60C6.31 8.51 5.54 9.49 4.00 9.49C2.65 9.49 1.78 8.58 1.68 7.63L0.77 7.63C0.84 9.03 2.11 10.36 4.00 10.36ZM11.82 3.68L10.32 3.68L10.32 1.08L9.44 1.08L9.44 3.68L8.25 3.68L8.25 4.45L9.44 4.45L9.44 10.22L10.32 10.22L10.32 4.45L11.82 4.45ZM16.02 10.36C17.88 10.36 19.45 9.00 19.45 6.93C19.45 4.86 17.88 3.54 16.02 3.54C14.15 3.54 12.60 4.86 12.60 6.93C12.60 9.00 14.15 10.36 16.02 10.36ZM16.02 9.51C14.63 9.51 13.50 8.48 13.50 6.93C13.50 5.39 14.63 4.40 16.02 4.40C17.39 4.40 18.55 5.39 18.55 6.93C18.55 8.48 17.39 9.51 16.02 9.51ZM24.23 10.35C25.17 10.35 26.00 10.01 26.59 9.45L26.03 8.85C25.58 9.25 24.96 9.49 24.26 9.49C22.83 9.49 21.67 8.47 21.67 6.94C21.67 5.40 22.83 4.40 24.26 4.40C24.96 4.40 25.58 4.65 26.03 5.05L26.59 4.44C26.00 3.89 25.17 3.54 24.23 3.54C22.37 3.54 20.78 4.87 20.78 6.94C20.78 9.02 22.37 10.35 24.23 10.35ZM33.66 10.22L30.03 6.52L32.83 3.68L31.58 3.68L29.13 6.19L29.13 0L28.24 0L28.24 10.22L29.13 10.22L29.13 6.86L32.44 10.22ZM34.68 10.22L35.57 10.22L35.57 0L34.68 0ZM43.92 6.93C43.92 4.86 42.56 3.54 40.70 3.54C38.85 3.54 37.37 4.86 37.37 6.93C37.37 9.00 38.85 10.36 40.70 10.36C41.93 10.36 43.05 9.77 43.62 8.72L42.85 8.39C42.42 9.10 41.62 9.51 40.73 9.51C39.41 9.51 38.43 8.72 38.28 7.32L43.90 7.32C43.92 7.20 43.92 7.06 43.92 6.93ZM38.29 6.55C38.46 5.15 39.41 4.40 40.70 4.40C41.97 4.40 42.91 5.19 43.04 6.55ZM48.40 3.68L46.90 3.68L46.90 1.08L46.02 1.08L46.02 3.68L44.83 3.68L44.83 4.45L46.02 4.45L46.02 10.22L46.90 10.22L46.90 4.45L48.40 4.45Z"></path></g><!----><g data-v-423bf9ae="" id="edef95aa-1b99-42ce-a29c-747b164bbefc" transform="matrix(3.635041968759201,0,0,3.635041968759201,0.39221588485064274,-0.0000019073486328125)" stroke="none" fill="white"><path d="M30.231 8.097h-5.692v7.71h5.692v-7.71zM37.748 8.097h-6.023v7.71h6.023v-7.71z"></path><path d="M35.647 22.106c0 .249-.026.47-.055.663h2.155v-5.471H13.569a.75.75 0 01-.36-.084.651.651 0 01-.276-.275L3.207 0H0l12.768 22.77h2.266c-.028-.138-.028-.276-.028-.414 0-1.022.359-1.907 1.105-2.625.718-.719 1.575-1.078 2.598-1.078.995 0 1.852.359 2.57 1.078.746.718 1.105 1.603 1.105 2.625 0 .138 0 .276-.028.414h6.024a2.385 2.385 0 01-.083-.663c0-1.021.359-1.906 1.078-2.625.718-.718 1.574-1.078 2.569-1.078 1.023 0 1.907.36 2.626 1.078.719.718 1.077 1.603 1.077 2.624z"></path><path d="M34.404 22.079a2.37 2.37 0 00-.719-1.74 2.373 2.373 0 00-1.741-.719c-.663 0-1.243.248-1.713.719a2.372 2.372 0 00-.719 1.74c0 .249.028.497.111.69.11.387.304.719.607 1.023.47.47 1.05.719 1.713.719.691 0 1.271-.249 1.741-.719.304-.305.498-.637.635-1.023.058-.193.085-.441.085-.69zM23.047 15.807v-7.71h-5.859v7.71h5.859zM15.696 8.097H9.589l4.422 7.71h1.685v-7.71zM16.221 22.328c0 .139.028.304.056.441.082.471.303.912.663 1.271.497.471 1.077.719 1.74.719.664 0 1.244-.248 1.742-.719.359-.359.58-.801.69-1.271.027-.138.027-.303.027-.441 0-.691-.248-1.271-.718-1.741-.498-.47-1.078-.719-1.742-.719-.663 0-1.243.249-1.74.719a2.384 2.384 0 00-.718 1.741z"></path></g><!----></svg>
|
|
||||||
|
Before Width: | Height: | Size: 3.5 KiB |
@@ -1 +0,0 @@
|
|||||||
<svg data-v-423bf9ae="" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 434 90" class="iconLeft"><!----><!----><!----><g data-v-423bf9ae="" id="7ccbf1f1-d01a-42aa-9755-e9ae79724b7b" fill="#331B2B" transform="matrix(5.7915059834320255,0,0,5.7915059834320255,152.75612078133662,14.999999523162842)"><path d="M4.00 10.36C6.12 10.36 7.24 8.92 7.24 7.56C7.24 6.16 6.17 5.33 4.65 4.96L3.35 4.65C1.90 4.31 1.76 3.54 1.76 3.09C1.76 2.02 2.79 1.33 3.88 1.33C5.04 1.33 5.92 2.02 5.98 3.08L6.90 3.08C6.85 1.47 5.54 0.46 3.91 0.46C2.31 0.46 0.84 1.50 0.84 3.09C0.84 3.86 1.13 5.03 3.12 5.50L4.42 5.81C5.38 6.05 6.31 6.55 6.31 7.60C6.31 8.51 5.54 9.49 4.00 9.49C2.65 9.49 1.78 8.58 1.68 7.63L0.77 7.63C0.84 9.03 2.11 10.36 4.00 10.36ZM11.82 3.68L10.32 3.68L10.32 1.08L9.44 1.08L9.44 3.68L8.25 3.68L8.25 4.45L9.44 4.45L9.44 10.22L10.32 10.22L10.32 4.45L11.82 4.45ZM16.02 10.36C17.88 10.36 19.45 9.00 19.45 6.93C19.45 4.86 17.88 3.54 16.02 3.54C14.15 3.54 12.60 4.86 12.60 6.93C12.60 9.00 14.15 10.36 16.02 10.36ZM16.02 9.51C14.63 9.51 13.50 8.48 13.50 6.93C13.50 5.39 14.63 4.40 16.02 4.40C17.39 4.40 18.55 5.39 18.55 6.93C18.55 8.48 17.39 9.51 16.02 9.51ZM24.23 10.35C25.17 10.35 26.00 10.01 26.59 9.45L26.03 8.85C25.58 9.25 24.96 9.49 24.26 9.49C22.83 9.49 21.67 8.47 21.67 6.94C21.67 5.40 22.83 4.40 24.26 4.40C24.96 4.40 25.58 4.65 26.03 5.05L26.59 4.44C26.00 3.89 25.17 3.54 24.23 3.54C22.37 3.54 20.78 4.87 20.78 6.94C20.78 9.02 22.37 10.35 24.23 10.35ZM33.66 10.22L30.03 6.52L32.83 3.68L31.58 3.68L29.13 6.19L29.13 0L28.24 0L28.24 10.22L29.13 10.22L29.13 6.86L32.44 10.22ZM34.68 10.22L35.57 10.22L35.57 0L34.68 0ZM43.92 6.93C43.92 4.86 42.56 3.54 40.70 3.54C38.85 3.54 37.37 4.86 37.37 6.93C37.37 9.00 38.85 10.36 40.70 10.36C41.93 10.36 43.05 9.77 43.62 8.72L42.85 8.39C42.42 9.10 41.62 9.51 40.73 9.51C39.41 9.51 38.43 8.72 38.28 7.32L43.90 7.32C43.92 7.20 43.92 7.06 43.92 6.93ZM38.29 6.55C38.46 5.15 39.41 4.40 40.70 4.40C41.97 4.40 42.91 5.19 43.04 6.55ZM48.40 3.68L46.90 3.68L46.90 1.08L46.02 1.08L46.02 3.68L44.83 3.68L44.83 4.45L46.02 4.45L46.02 10.22L46.90 10.22L46.90 4.45L48.40 4.45Z"></path></g><defs data-v-423bf9ae=""><linearGradient data-v-423bf9ae="" gradientTransform="rotate(25)" id="e8769ea9-6fdc-46c7-87bb-cf92f23a859c" x1="0%" y1="0%" x2="100%" y2="0%"><stop data-v-423bf9ae="" offset="0%" style="stop-color: rgb(140, 72, 210); stop-opacity: 1;"></stop><stop data-v-423bf9ae="" offset="100%" style="stop-color: rgb(207, 112, 90); stop-opacity: 1;"></stop></linearGradient></defs><g data-v-423bf9ae="" id="7665600e-8875-4e76-bddc-4f57bcba1929" transform="matrix(3.635041968759201,0,0,3.635041968759201,0.39221588485064274,-0.0000019073486328125)" stroke="none" fill="url(#e8769ea9-6fdc-46c7-87bb-cf92f23a859c)"><path d="M30.231 8.097h-5.692v7.71h5.692v-7.71zM37.748 8.097h-6.023v7.71h6.023v-7.71z"></path><path d="M35.647 22.106c0 .249-.026.47-.055.663h2.155v-5.471H13.569a.75.75 0 01-.36-.084.651.651 0 01-.276-.275L3.207 0H0l12.768 22.77h2.266c-.028-.138-.028-.276-.028-.414 0-1.022.359-1.907 1.105-2.625.718-.719 1.575-1.078 2.598-1.078.995 0 1.852.359 2.57 1.078.746.718 1.105 1.603 1.105 2.625 0 .138 0 .276-.028.414h6.024a2.385 2.385 0 01-.083-.663c0-1.021.359-1.906 1.078-2.625.718-.718 1.574-1.078 2.569-1.078 1.023 0 1.907.36 2.626 1.078.719.718 1.077 1.603 1.077 2.624z"></path><path d="M34.404 22.079a2.37 2.37 0 00-.719-1.74 2.373 2.373 0 00-1.741-.719c-.663 0-1.243.248-1.713.719a2.372 2.372 0 00-.719 1.74c0 .249.028.497.111.69.11.387.304.719.607 1.023.47.47 1.05.719 1.713.719.691 0 1.271-.249 1.741-.719.304-.305.498-.637.635-1.023.058-.193.085-.441.085-.69zM23.047 15.807v-7.71h-5.859v7.71h5.859zM15.696 8.097H9.589l4.422 7.71h1.685v-7.71zM16.221 22.328c0 .139.028.304.056.441.082.471.303.912.663 1.271.497.471 1.077.719 1.74.719.664 0 1.244-.248 1.742-.719.359-.359.58-.801.69-1.271.027-.138.027-.303.027-.441 0-.691-.248-1.271-.718-1.741-.498-.47-1.078-.719-1.742-.719-.663 0-1.243.249-1.74.719a2.384 2.384 0 00-.718 1.741z"></path></g><!----></svg>
|
|
||||||
|
Before Width: | Height: | Size: 3.9 KiB |
@@ -1 +0,0 @@
|
|||||||
<svg data-v-fde0c5aa="" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 300" class="iconLeft"><!----><defs data-v-fde0c5aa=""><!----></defs><rect data-v-fde0c5aa="" fill="#F1E2EC" x="0" y="0" width="300px" height="300px" class="logo-background-square"></rect><defs data-v-fde0c5aa=""><!----></defs><g data-v-fde0c5aa="" id="d7c30393-961b-4b3a-9f0c-019d46f9408e" fill="#331B2B" transform="matrix(2.902307689539151,0,0,2.902307689539151,119.52830478166314,134.96604666640133)"><path d="M4.00 10.36C6.12 10.36 7.24 8.92 7.24 7.56C7.24 6.16 6.17 5.33 4.65 4.96L3.35 4.65C1.90 4.31 1.76 3.54 1.76 3.09C1.76 2.02 2.79 1.33 3.88 1.33C5.04 1.33 5.92 2.02 5.98 3.08L6.90 3.08C6.85 1.47 5.54 0.46 3.91 0.46C2.31 0.46 0.84 1.50 0.84 3.09C0.84 3.86 1.13 5.03 3.12 5.50L4.42 5.81C5.38 6.05 6.31 6.55 6.31 7.60C6.31 8.51 5.54 9.49 4.00 9.49C2.65 9.49 1.78 8.58 1.68 7.63L0.77 7.63C0.84 9.03 2.11 10.36 4.00 10.36ZM11.82 3.68L10.32 3.68L10.32 1.08L9.44 1.08L9.44 3.68L8.25 3.68L8.25 4.45L9.44 4.45L9.44 10.22L10.32 10.22L10.32 4.45L11.82 4.45ZM16.02 10.36C17.88 10.36 19.45 9.00 19.45 6.93C19.45 4.86 17.88 3.54 16.02 3.54C14.15 3.54 12.60 4.86 12.60 6.93C12.60 9.00 14.15 10.36 16.02 10.36ZM16.02 9.51C14.63 9.51 13.50 8.48 13.50 6.93C13.50 5.39 14.63 4.40 16.02 4.40C17.39 4.40 18.55 5.39 18.55 6.93C18.55 8.48 17.39 9.51 16.02 9.51ZM24.23 10.35C25.17 10.35 26.00 10.01 26.59 9.45L26.03 8.85C25.58 9.25 24.96 9.49 24.26 9.49C22.83 9.49 21.67 8.47 21.67 6.94C21.67 5.40 22.83 4.40 24.26 4.40C24.96 4.40 25.58 4.65 26.03 5.05L26.59 4.44C26.00 3.89 25.17 3.54 24.23 3.54C22.37 3.54 20.78 4.87 20.78 6.94C20.78 9.02 22.37 10.35 24.23 10.35ZM33.66 10.22L30.03 6.52L32.83 3.68L31.58 3.68L29.13 6.19L29.13 0L28.24 0L28.24 10.22L29.13 10.22L29.13 6.86L32.44 10.22ZM34.68 10.22L35.57 10.22L35.57 0L34.68 0ZM43.92 6.93C43.92 4.86 42.56 3.54 40.70 3.54C38.85 3.54 37.37 4.86 37.37 6.93C37.37 9.00 38.85 10.36 40.70 10.36C41.93 10.36 43.05 9.77 43.62 8.72L42.85 8.39C42.42 9.10 41.62 9.51 40.73 9.51C39.41 9.51 38.43 8.72 38.28 7.32L43.90 7.32C43.92 7.20 43.92 7.06 43.92 6.93ZM38.29 6.55C38.46 5.15 39.41 4.40 40.70 4.40C41.97 4.40 42.91 5.19 43.04 6.55ZM48.40 3.68L46.90 3.68L46.90 1.08L46.02 1.08L46.02 3.68L44.83 3.68L44.83 4.45L46.02 4.45L46.02 10.22L46.90 10.22L46.90 4.45L48.40 4.45Z"></path></g><defs data-v-fde0c5aa=""><linearGradient data-v-fde0c5aa="" gradientTransform="rotate(25)" id="e769396b-e7dc-4463-997c-19b23a564bda" x1="0%" y1="0%" x2="100%" y2="0%"><stop data-v-fde0c5aa="" offset="0%" stop-color="#8C48D2" stop-opacity="1"></stop><stop data-v-fde0c5aa="" offset="100%" stop-color="#CF705A" stop-opacity="1"></stop></linearGradient></defs><g data-v-fde0c5aa="" id="278c653e-b7e8-4473-949a-a2d1c8506d27" stroke="none" fill="url(#e769396b-e7dc-4463-997c-19b23a564bda)" transform="matrix(1.821635044133282,0,0,1.821635044133282,40,127.449069999602)"><path d="M30.231 8.097h-5.692v7.71h5.692v-7.71zM37.748 8.097h-6.023v7.71h6.023v-7.71z"></path><path d="M35.647 22.106c0 .249-.026.47-.055.663h2.155v-5.471H13.569a.75.75 0 01-.36-.084.651.651 0 01-.276-.275L3.207 0H0l12.768 22.77h2.266c-.028-.138-.028-.276-.028-.414 0-1.022.359-1.907 1.105-2.625.718-.719 1.575-1.078 2.598-1.078.995 0 1.852.359 2.57 1.078.746.718 1.105 1.603 1.105 2.625 0 .138 0 .276-.028.414h6.024a2.385 2.385 0 01-.083-.663c0-1.021.359-1.906 1.078-2.625.718-.718 1.574-1.078 2.569-1.078 1.023 0 1.907.36 2.626 1.078.719.718 1.077 1.603 1.077 2.624z"></path><path d="M34.404 22.079a2.37 2.37 0 00-.719-1.74 2.373 2.373 0 00-1.741-.719c-.663 0-1.243.248-1.713.719a2.372 2.372 0 00-.719 1.74c0 .249.028.497.111.69.11.387.304.719.607 1.023.47.47 1.05.719 1.713.719.691 0 1.271-.249 1.741-.719.304-.305.498-.637.635-1.023.058-.193.085-.441.085-.69zM23.047 15.807v-7.71h-5.859v7.71h5.859zM15.696 8.097H9.589l4.422 7.71h1.685v-7.71zM16.221 22.328c0 .139.028.304.056.441.082.471.303.912.663 1.271.497.471 1.077.719 1.74.719.664 0 1.244-.248 1.742-.719.359-.359.58-.801.69-1.271.027-.138.027-.303.027-.441 0-.691-.248-1.271-.718-1.741-.498-.47-1.078-.719-1.742-.719-.663 0-1.243.249-1.74.719a2.384 2.384 0 00-.718 1.741z"></path></g><!----></svg>
|
|
||||||
|
Before Width: | Height: | Size: 4.0 KiB |
@@ -1 +0,0 @@
|
|||||||
<svg data-v-fde0c5aa="" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 300" class="font"><!----><defs data-v-fde0c5aa=""><!----></defs><rect data-v-fde0c5aa="" fill="#F1E2EC" x="0" y="0" width="300px" height="300px" class="logo-background-square"></rect><defs data-v-fde0c5aa=""><linearGradient data-v-fde0c5aa="" gradientTransform="rotate(25)" id="55d34800-f110-4512-9699-1f5d7d1d4408" x1="0%" y1="0%" x2="100%" y2="0%"><stop data-v-fde0c5aa="" offset="0%" stop-color="#8C48D2" stop-opacity="1"></stop><stop data-v-fde0c5aa="" offset="100%" stop-color="#CF705A" stop-opacity="1"></stop></linearGradient></defs><g data-v-fde0c5aa="" id="c8ec85ad-7159-4a52-a513-df3587f56c8b" fill="url(#55d34800-f110-4512-9699-1f5d7d1d4408)" transform="matrix(4.618937540760917,0,0,4.618937540760917,36.44341818171332,126.07390433175163)"><path d="M4.00 10.36C6.12 10.36 7.24 8.92 7.24 7.56C7.24 6.16 6.17 5.33 4.65 4.96L3.35 4.65C1.90 4.31 1.76 3.54 1.76 3.09C1.76 2.02 2.79 1.33 3.88 1.33C5.04 1.33 5.92 2.02 5.98 3.08L6.90 3.08C6.85 1.47 5.54 0.46 3.91 0.46C2.31 0.46 0.84 1.50 0.84 3.09C0.84 3.86 1.13 5.03 3.12 5.50L4.42 5.81C5.38 6.05 6.31 6.55 6.31 7.60C6.31 8.51 5.54 9.49 4.00 9.49C2.65 9.49 1.78 8.58 1.68 7.63L0.77 7.63C0.84 9.03 2.11 10.36 4.00 10.36ZM11.82 3.68L10.32 3.68L10.32 1.08L9.44 1.08L9.44 3.68L8.25 3.68L8.25 4.45L9.44 4.45L9.44 10.22L10.32 10.22L10.32 4.45L11.82 4.45ZM16.02 10.36C17.88 10.36 19.45 9.00 19.45 6.93C19.45 4.86 17.88 3.54 16.02 3.54C14.15 3.54 12.60 4.86 12.60 6.93C12.60 9.00 14.15 10.36 16.02 10.36ZM16.02 9.51C14.63 9.51 13.50 8.48 13.50 6.93C13.50 5.39 14.63 4.40 16.02 4.40C17.39 4.40 18.55 5.39 18.55 6.93C18.55 8.48 17.39 9.51 16.02 9.51ZM24.23 10.35C25.17 10.35 26.00 10.01 26.59 9.45L26.03 8.85C25.58 9.25 24.96 9.49 24.26 9.49C22.83 9.49 21.67 8.47 21.67 6.94C21.67 5.40 22.83 4.40 24.26 4.40C24.96 4.40 25.58 4.65 26.03 5.05L26.59 4.44C26.00 3.89 25.17 3.54 24.23 3.54C22.37 3.54 20.78 4.87 20.78 6.94C20.78 9.02 22.37 10.35 24.23 10.35ZM33.66 10.22L30.03 6.52L32.83 3.68L31.58 3.68L29.13 6.19L29.13 0L28.24 0L28.24 10.22L29.13 10.22L29.13 6.86L32.44 10.22ZM34.68 10.22L35.57 10.22L35.57 0L34.68 0ZM43.92 6.93C43.92 4.86 42.56 3.54 40.70 3.54C38.85 3.54 37.37 4.86 37.37 6.93C37.37 9.00 38.85 10.36 40.70 10.36C41.93 10.36 43.05 9.77 43.62 8.72L42.85 8.39C42.42 9.10 41.62 9.51 40.73 9.51C39.41 9.51 38.43 8.72 38.28 7.32L43.90 7.32C43.92 7.20 43.92 7.06 43.92 6.93ZM38.29 6.55C38.46 5.15 39.41 4.40 40.70 4.40C41.97 4.40 42.91 5.19 43.04 6.55ZM48.40 3.68L46.90 3.68L46.90 1.08L46.02 1.08L46.02 3.68L44.83 3.68L44.83 4.45L46.02 4.45L46.02 10.22L46.90 10.22L46.90 4.45L48.40 4.45Z"></path></g><!----><!----></svg>
|
|
||||||
|
Before Width: | Height: | Size: 2.6 KiB |
@@ -1 +0,0 @@
|
|||||||
<svg data-v-423bf9ae="" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 275.84943617686315 60" class="font"><!----><!----><!----><g data-v-423bf9ae="" id="9e49fb69-d1b0-46ae-beda-1ae5f9d0dd96" fill="black" transform="matrix(5.7915059834320255,0,0,5.7915059834320255,-4.459463019932912,-4.76837158203125e-7)"><path d="M4.00 10.36C6.12 10.36 7.24 8.92 7.24 7.56C7.24 6.16 6.17 5.33 4.65 4.96L3.35 4.65C1.90 4.31 1.76 3.54 1.76 3.09C1.76 2.02 2.79 1.33 3.88 1.33C5.04 1.33 5.92 2.02 5.98 3.08L6.90 3.08C6.85 1.47 5.54 0.46 3.91 0.46C2.31 0.46 0.84 1.50 0.84 3.09C0.84 3.86 1.13 5.03 3.12 5.50L4.42 5.81C5.38 6.05 6.31 6.55 6.31 7.60C6.31 8.51 5.54 9.49 4.00 9.49C2.65 9.49 1.78 8.58 1.68 7.63L0.77 7.63C0.84 9.03 2.11 10.36 4.00 10.36ZM11.82 3.68L10.32 3.68L10.32 1.08L9.44 1.08L9.44 3.68L8.25 3.68L8.25 4.45L9.44 4.45L9.44 10.22L10.32 10.22L10.32 4.45L11.82 4.45ZM16.02 10.36C17.88 10.36 19.45 9.00 19.45 6.93C19.45 4.86 17.88 3.54 16.02 3.54C14.15 3.54 12.60 4.86 12.60 6.93C12.60 9.00 14.15 10.36 16.02 10.36ZM16.02 9.51C14.63 9.51 13.50 8.48 13.50 6.93C13.50 5.39 14.63 4.40 16.02 4.40C17.39 4.40 18.55 5.39 18.55 6.93C18.55 8.48 17.39 9.51 16.02 9.51ZM24.23 10.35C25.17 10.35 26.00 10.01 26.59 9.45L26.03 8.85C25.58 9.25 24.96 9.49 24.26 9.49C22.83 9.49 21.67 8.47 21.67 6.94C21.67 5.40 22.83 4.40 24.26 4.40C24.96 4.40 25.58 4.65 26.03 5.05L26.59 4.44C26.00 3.89 25.17 3.54 24.23 3.54C22.37 3.54 20.78 4.87 20.78 6.94C20.78 9.02 22.37 10.35 24.23 10.35ZM33.66 10.22L30.03 6.52L32.83 3.68L31.58 3.68L29.13 6.19L29.13 0L28.24 0L28.24 10.22L29.13 10.22L29.13 6.86L32.44 10.22ZM34.68 10.22L35.57 10.22L35.57 0L34.68 0ZM43.92 6.93C43.92 4.86 42.56 3.54 40.70 3.54C38.85 3.54 37.37 4.86 37.37 6.93C37.37 9.00 38.85 10.36 40.70 10.36C41.93 10.36 43.05 9.77 43.62 8.72L42.85 8.39C42.42 9.10 41.62 9.51 40.73 9.51C39.41 9.51 38.43 8.72 38.28 7.32L43.90 7.32C43.92 7.20 43.92 7.06 43.92 6.93ZM38.29 6.55C38.46 5.15 39.41 4.40 40.70 4.40C41.97 4.40 42.91 5.19 43.04 6.55ZM48.40 3.68L46.90 3.68L46.90 1.08L46.02 1.08L46.02 3.68L44.83 3.68L44.83 4.45L46.02 4.45L46.02 10.22L46.90 10.22L46.90 4.45L48.40 4.45Z"></path></g><!----><!----></svg>
|
|
||||||
|
Before Width: | Height: | Size: 2.1 KiB |
@@ -1 +0,0 @@
|
|||||||
<svg data-v-423bf9ae="" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 275.84943617686315 60" class="font"><!----><!----><!----><g data-v-423bf9ae="" id="a893fd5a-3adf-4cc3-81b4-6b589464f3c0" fill="white" transform="matrix(5.7915059834320255,0,0,5.7915059834320255,-4.459463019932912,-4.76837158203125e-7)"><path d="M4.00 10.36C6.12 10.36 7.24 8.92 7.24 7.56C7.24 6.16 6.17 5.33 4.65 4.96L3.35 4.65C1.90 4.31 1.76 3.54 1.76 3.09C1.76 2.02 2.79 1.33 3.88 1.33C5.04 1.33 5.92 2.02 5.98 3.08L6.90 3.08C6.85 1.47 5.54 0.46 3.91 0.46C2.31 0.46 0.84 1.50 0.84 3.09C0.84 3.86 1.13 5.03 3.12 5.50L4.42 5.81C5.38 6.05 6.31 6.55 6.31 7.60C6.31 8.51 5.54 9.49 4.00 9.49C2.65 9.49 1.78 8.58 1.68 7.63L0.77 7.63C0.84 9.03 2.11 10.36 4.00 10.36ZM11.82 3.68L10.32 3.68L10.32 1.08L9.44 1.08L9.44 3.68L8.25 3.68L8.25 4.45L9.44 4.45L9.44 10.22L10.32 10.22L10.32 4.45L11.82 4.45ZM16.02 10.36C17.88 10.36 19.45 9.00 19.45 6.93C19.45 4.86 17.88 3.54 16.02 3.54C14.15 3.54 12.60 4.86 12.60 6.93C12.60 9.00 14.15 10.36 16.02 10.36ZM16.02 9.51C14.63 9.51 13.50 8.48 13.50 6.93C13.50 5.39 14.63 4.40 16.02 4.40C17.39 4.40 18.55 5.39 18.55 6.93C18.55 8.48 17.39 9.51 16.02 9.51ZM24.23 10.35C25.17 10.35 26.00 10.01 26.59 9.45L26.03 8.85C25.58 9.25 24.96 9.49 24.26 9.49C22.83 9.49 21.67 8.47 21.67 6.94C21.67 5.40 22.83 4.40 24.26 4.40C24.96 4.40 25.58 4.65 26.03 5.05L26.59 4.44C26.00 3.89 25.17 3.54 24.23 3.54C22.37 3.54 20.78 4.87 20.78 6.94C20.78 9.02 22.37 10.35 24.23 10.35ZM33.66 10.22L30.03 6.52L32.83 3.68L31.58 3.68L29.13 6.19L29.13 0L28.24 0L28.24 10.22L29.13 10.22L29.13 6.86L32.44 10.22ZM34.68 10.22L35.57 10.22L35.57 0L34.68 0ZM43.92 6.93C43.92 4.86 42.56 3.54 40.70 3.54C38.85 3.54 37.37 4.86 37.37 6.93C37.37 9.00 38.85 10.36 40.70 10.36C41.93 10.36 43.05 9.77 43.62 8.72L42.85 8.39C42.42 9.10 41.62 9.51 40.73 9.51C39.41 9.51 38.43 8.72 38.28 7.32L43.90 7.32C43.92 7.20 43.92 7.06 43.92 6.93ZM38.29 6.55C38.46 5.15 39.41 4.40 40.70 4.40C41.97 4.40 42.91 5.19 43.04 6.55ZM48.40 3.68L46.90 3.68L46.90 1.08L46.02 1.08L46.02 3.68L44.83 3.68L44.83 4.45L46.02 4.45L46.02 10.22L46.90 10.22L46.90 4.45L48.40 4.45Z"></path></g><!----><!----></svg>
|
|
||||||
|
Before Width: | Height: | Size: 2.1 KiB |
@@ -1,3 +0,0 @@
|
|||||||
# allow crawling everything by default
|
|
||||||
User-agent: *
|
|
||||||
Disallow:
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
import adapter from '@sveltejs/adapter-node';
|
|
||||||
import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
|
|
||||||
|
|
||||||
/** @type {import('@sveltejs/kit').Config} */
|
|
||||||
const config = {
|
|
||||||
// Consult https://svelte.dev/docs/kit/integrations
|
|
||||||
// for more information about preprocessors
|
|
||||||
preprocess: vitePreprocess(),
|
|
||||||
|
|
||||||
kit: {
|
|
||||||
// Use static adapter for Docker deployment
|
|
||||||
// adapter: adapter({
|
|
||||||
// pages: 'build',
|
|
||||||
// assets: 'build',
|
|
||||||
// fallback: 'index.html',
|
|
||||||
// precompress: false,
|
|
||||||
// strict: false
|
|
||||||
// })
|
|
||||||
|
|
||||||
adapter: adapter({
|
|
||||||
out: 'build',
|
|
||||||
precompress: false,
|
|
||||||
envPrefix: ''
|
|
||||||
})
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
export default config;
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
{
|
|
||||||
"extends": "./.svelte-kit/tsconfig.json",
|
|
||||||
"compilerOptions": {
|
|
||||||
"allowJs": true,
|
|
||||||
"checkJs": true,
|
|
||||||
"esModuleInterop": true,
|
|
||||||
"forceConsistentCasingInFileNames": true,
|
|
||||||
"resolveJsonModule": true,
|
|
||||||
"skipLibCheck": true,
|
|
||||||
"sourceMap": true,
|
|
||||||
"strict": true,
|
|
||||||
"moduleResolution": "bundler"
|
|
||||||
}
|
|
||||||
// Path aliases are handled by https://svelte.dev/docs/kit/configuration#alias
|
|
||||||
// except $lib which is handled by https://svelte.dev/docs/kit/configuration#files
|
|
||||||
//
|
|
||||||
// If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes
|
|
||||||
// from the referenced tsconfig.json - TypeScript does not merge them in
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
import tailwindcss from '@tailwindcss/vite';
|
|
||||||
import { sveltekit } from '@sveltejs/kit/vite';
|
|
||||||
import { defineConfig } from 'vite';
|
|
||||||
|
|
||||||
export default defineConfig({
|
|
||||||
plugins: [tailwindcss(), sveltekit()]
|
|
||||||
});
|
|
||||||