diff --git a/.dockerignore b/.dockerignore index a1226de..ff9c3f2 100644 --- a/.dockerignore +++ b/.dockerignore @@ -5,3 +5,4 @@ node_modules **/node_modules **/**/node_modules **/dist + diff --git a/.gitignore b/.gitignore index 4461d6b..3479b81 100644 --- a/.gitignore +++ b/.gitignore @@ -70,4 +70,5 @@ Thumbs.db dist/ -docker-compose.local.yml \ No newline at end of file +docker-compose.local.yml + diff --git a/census/README.md b/census/README.md new file mode 100644 index 0000000..e69de29 diff --git a/census/api/.env.example b/census/api/.env.example index 276b3f8..2a2ae24 100644 --- a/census/api/.env.example +++ b/census/api/.env.example @@ -1,9 +1,5 @@ -TWITCH_CLIENT_ID= -TWITCH_CLIENT_SECRET= -TWITCH_USERNAME= - -REDIS_HOST=localhost -REDIS_PORT=6379 +TWITCH_CLIENT_ID=itag8f5m4r3ynbtrz933d7qh7c6ffq +TWITCH_CLIENT_SECRET=exs4bkvzrlvfq6m2n0gez519zzv4a2 HOST=localhost PORT=35523 @@ -14,11 +10,8 @@ POSTGRES_DB=db01 POSTGRES_HOST=localhost UI_URL=http://localhost:5173 - -JWT_SECRET=bed840003446895cfee9182afad1c9adace070b0b54cdfdc640d61b981b5a5aeb3af9519785d5935b8de0f25469b782701b2276a22df329a971c3065bd59a565 -COMMAND_PREFIX=$ -CHANNELS_TO_LISTEN_TO= +JWT_SECRET= STORAGE_ACCOUNT_NAME= STORAGE_ACCOUNT_KEY= -CONTAINER_NAME= \ No newline at end of file +CONTAINER_NAME=snapshots diff --git a/census/api/Dockerfile b/census/api/Dockerfile index 92868e1..ba40852 100644 --- a/census/api/Dockerfile +++ b/census/api/Dockerfile @@ -8,7 +8,7 @@ COPY . . FROM base AS build RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile -RUN pnpm --filter=@critter/api --prod deploy /prod/api +RUN pnpm --filter=@alveusgg/census-api --prod deploy /prod/api FROM base COPY --from=build /prod/api /prod/api diff --git a/census/api/assets/shiny/s1.zip b/census/api/assets/shiny/s1.zip new file mode 100644 index 0000000..50c3085 Binary files /dev/null and b/census/api/assets/shiny/s1.zip differ diff --git a/census/api/assets/shiny/s1/1012092.png b/census/api/assets/shiny/s1/1012092.png new file mode 100644 index 0000000..476e7af Binary files /dev/null and b/census/api/assets/shiny/s1/1012092.png differ diff --git a/census/api/assets/shiny/s1/index.json b/census/api/assets/shiny/s1/index.json new file mode 100644 index 0000000..befbc1c --- /dev/null +++ b/census/api/assets/shiny/s1/index.json @@ -0,0 +1,12 @@ +{ + "season": 1, + "from": "2024-01-01", + "to": "2024-03-31", + "shiny": [ + { + "name": "Shiny", + "iNatId": 1012082, + "image": "1012082.png" + } + ] +} \ No newline at end of file diff --git a/census/api/drizzle/0002_third_cloak.sql b/census/api/drizzle/0002_third_cloak.sql new file mode 100644 index 0000000..a52de7c --- /dev/null +++ b/census/api/drizzle/0002_third_cloak.sql @@ -0,0 +1,75 @@ +CREATE TABLE IF NOT EXISTS "achievements" ( + "id" serial PRIMARY KEY NOT NULL, + "username" text NOT NULL, + "type" text NOT NULL, + "points" integer NOT NULL, + "created_at" timestamp DEFAULT now() NOT NULL, + "revoked" boolean DEFAULT false NOT NULL +); +--> statement-breakpoint +CREATE TABLE IF NOT EXISTS "events" ( + "id" serial PRIMARY KEY NOT NULL, + "username" text NOT NULL, + "type" text NOT NULL, + "created_at" timestamp DEFAULT now() NOT NULL, + "payload" json NOT NULL +); +--> statement-breakpoint +CREATE TABLE IF NOT EXISTS "notifications" ( + "id" serial PRIMARY KEY NOT NULL, + "username" text NOT NULL, + "type" text NOT NULL, + "read" boolean DEFAULT false NOT NULL, + "created_at" timestamp DEFAULT now() NOT NULL, + "payload" json NOT NULL +); +--> statement-breakpoint +ALTER TABLE "roles" RENAME TO "users";--> statement-breakpoint +ALTER TABLE "captures" DROP CONSTRAINT "clip_url_unique_idx";--> statement-breakpoint +ALTER TABLE "identifications" DROP CONSTRAINT "identifications_suggested_by_roles_username_fk"; +--> statement-breakpoint +ALTER TABLE "identifications" DROP CONSTRAINT "identifications_confirmed_by_roles_username_fk"; +--> statement-breakpoint +ALTER TABLE "captures" ADD COLUMN "clip_id" text NOT NULL;--> statement-breakpoint +ALTER TABLE "captures" ADD COLUMN "clip_metadata" json NOT NULL;--> statement-breakpoint +ALTER TABLE "identifications" ADD COLUMN "accessory_for" integer;--> statement-breakpoint +ALTER TABLE "users" ADD COLUMN "points" integer DEFAULT 0 NOT NULL;--> statement-breakpoint +DO $$ BEGIN + ALTER TABLE "achievements" ADD CONSTRAINT "achievements_username_users_username_fk" FOREIGN KEY ("username") REFERENCES "public"."users"("username") ON DELETE no action ON UPDATE no action; +EXCEPTION + WHEN duplicate_object THEN null; +END $$; +--> statement-breakpoint +DO $$ BEGIN + ALTER TABLE "events" ADD CONSTRAINT "events_username_users_username_fk" FOREIGN KEY ("username") REFERENCES "public"."users"("username") ON DELETE no action ON UPDATE no action; +EXCEPTION + WHEN duplicate_object THEN null; +END $$; +--> statement-breakpoint +DO $$ BEGIN + ALTER TABLE "notifications" ADD CONSTRAINT "notifications_username_users_username_fk" FOREIGN KEY ("username") REFERENCES "public"."users"("username") ON DELETE no action ON UPDATE no action; +EXCEPTION + WHEN duplicate_object THEN null; +END $$; +--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "username_achievements_idx" ON "achievements" USING btree ("username");--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "type_achievements_idx" ON "achievements" USING btree ("type");--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "points_achievements_idx" ON "achievements" USING btree ("points");--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "username_events_idx" ON "events" USING btree ("username");--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "type_events_idx" ON "events" USING btree ("type");--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "username_notifications_idx" ON "notifications" USING btree ("username");--> statement-breakpoint +DO $$ BEGIN + ALTER TABLE "identifications" ADD CONSTRAINT "identifications_suggested_by_users_username_fk" FOREIGN KEY ("suggested_by") REFERENCES "public"."users"("username") ON DELETE no action ON UPDATE no action; +EXCEPTION + WHEN duplicate_object THEN null; +END $$; +--> statement-breakpoint +DO $$ BEGIN + ALTER TABLE "identifications" ADD CONSTRAINT "identifications_confirmed_by_users_username_fk" FOREIGN KEY ("confirmed_by") REFERENCES "public"."users"("username") ON DELETE no action ON UPDATE no action; +EXCEPTION + WHEN duplicate_object THEN null; +END $$; +--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "clip_id_idx" ON "captures" USING btree ("clip_id");--> statement-breakpoint +ALTER TABLE "captures" DROP COLUMN IF EXISTS "clip_url";--> statement-breakpoint +ALTER TABLE "captures" ADD CONSTRAINT "captures_clip_id_unique" UNIQUE("clip_id"); \ No newline at end of file diff --git a/census/api/drizzle/0003_tearful_tusk.sql b/census/api/drizzle/0003_tearful_tusk.sql new file mode 100644 index 0000000..0b5b749 --- /dev/null +++ b/census/api/drizzle/0003_tearful_tusk.sql @@ -0,0 +1,6 @@ +ALTER TYPE "capture_status" ADD VALUE 'draft';--> statement-breakpoint +ALTER TABLE "images" RENAME COLUMN "bounding_boxes" TO "bounding_box";--> statement-breakpoint +ALTER TABLE "images" ALTER COLUMN "bounding_box" DROP DEFAULT;--> statement-breakpoint +ALTER TABLE "observations" ALTER COLUMN "nickname" DROP NOT NULL;--> statement-breakpoint +ALTER TABLE "observations" ADD COLUMN "removed" boolean DEFAULT false NOT NULL;--> statement-breakpoint +ALTER TABLE "observations" ADD COLUMN "moderated" json DEFAULT '[]'::json NOT NULL; \ No newline at end of file diff --git a/census/api/drizzle/0004_black_preak.sql b/census/api/drizzle/0004_black_preak.sql new file mode 100644 index 0000000..f354208 --- /dev/null +++ b/census/api/drizzle/0004_black_preak.sql @@ -0,0 +1 @@ +ALTER TABLE "observations" DROP CONSTRAINT "discord_thread_id_unique_idx"; \ No newline at end of file diff --git a/census/api/drizzle/0005_gigantic_edwin_jarvis.sql b/census/api/drizzle/0005_gigantic_edwin_jarvis.sql new file mode 100644 index 0000000..ec305e2 --- /dev/null +++ b/census/api/drizzle/0005_gigantic_edwin_jarvis.sql @@ -0,0 +1,2 @@ +ALTER TABLE "images" ADD COLUMN "width" integer NOT NULL;--> statement-breakpoint +ALTER TABLE "images" ADD COLUMN "height" integer NOT NULL; \ No newline at end of file diff --git a/census/api/drizzle/0006_regular_wiccan.sql b/census/api/drizzle/0006_regular_wiccan.sql new file mode 100644 index 0000000..6cbfb99 --- /dev/null +++ b/census/api/drizzle/0006_regular_wiccan.sql @@ -0,0 +1 @@ +ALTER TABLE "images" RENAME COLUMN "frame" TO "timestamp"; \ No newline at end of file diff --git a/census/api/drizzle/0007_stale_albert_cleary.sql b/census/api/drizzle/0007_stale_albert_cleary.sql new file mode 100644 index 0000000..863fd81 --- /dev/null +++ b/census/api/drizzle/0007_stale_albert_cleary.sql @@ -0,0 +1 @@ +ALTER TABLE "images" ALTER COLUMN "timestamp" SET DATA TYPE numeric; \ No newline at end of file diff --git a/census/api/drizzle/0008_aromatic_kree.sql b/census/api/drizzle/0008_aromatic_kree.sql new file mode 100644 index 0000000..b3501dc --- /dev/null +++ b/census/api/drizzle/0008_aromatic_kree.sql @@ -0,0 +1 @@ +ALTER TABLE "achievements" ADD COLUMN "redeemed" boolean DEFAULT false NOT NULL; \ No newline at end of file diff --git a/census/api/drizzle/0009_thin_carnage.sql b/census/api/drizzle/0009_thin_carnage.sql new file mode 100644 index 0000000..cadb2f7 --- /dev/null +++ b/census/api/drizzle/0009_thin_carnage.sql @@ -0,0 +1,13 @@ +ALTER TABLE "achievements" ADD COLUMN "identification_id" integer;--> statement-breakpoint +ALTER TABLE "achievements" ADD COLUMN "observation_id" integer;--> statement-breakpoint +DO $$ BEGIN + ALTER TABLE "achievements" ADD CONSTRAINT "achievements_identification_id_identifications_id_fk" FOREIGN KEY ("identification_id") REFERENCES "public"."identifications"("id") ON DELETE no action ON UPDATE no action; +EXCEPTION + WHEN duplicate_object THEN null; +END $$; +--> statement-breakpoint +DO $$ BEGIN + ALTER TABLE "achievements" ADD CONSTRAINT "achievements_observation_id_observations_id_fk" FOREIGN KEY ("observation_id") REFERENCES "public"."observations"("id") ON DELETE no action ON UPDATE no action; +EXCEPTION + WHEN duplicate_object THEN null; +END $$; diff --git a/census/api/drizzle/0010_dazzling_green_goblin.sql b/census/api/drizzle/0010_dazzling_green_goblin.sql new file mode 100644 index 0000000..dddfd16 --- /dev/null +++ b/census/api/drizzle/0010_dazzling_green_goblin.sql @@ -0,0 +1,7 @@ +ALTER TABLE "observations" ADD COLUMN "observed_at" timestamp NOT NULL;--> statement-breakpoint +ALTER TABLE "observations" ADD COLUMN "observed_by" text NOT NULL;--> statement-breakpoint +DO $$ BEGIN + ALTER TABLE "observations" ADD CONSTRAINT "observations_observed_by_users_username_fk" FOREIGN KEY ("observed_by") REFERENCES "public"."users"("username") ON DELETE no action ON UPDATE no action; +EXCEPTION + WHEN duplicate_object THEN null; +END $$; diff --git a/census/api/drizzle/meta/0002_snapshot.json b/census/api/drizzle/meta/0002_snapshot.json new file mode 100644 index 0000000..1c3b654 --- /dev/null +++ b/census/api/drizzle/meta/0002_snapshot.json @@ -0,0 +1,826 @@ +{ + "id": "76a12d93-4aa7-481a-a555-892d15cf3ed4", + "prevId": "ae6afc04-56d7-4801-89ae-88e9a7121a59", + "version": "7", + "dialect": "postgresql", + "tables": { + "public.achievements": { + "name": "achievements", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "points": { + "name": "points", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "revoked": { + "name": "revoked", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + } + }, + "indexes": { + "username_achievements_idx": { + "name": "username_achievements_idx", + "columns": [ + { + "expression": "username", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "type_achievements_idx": { + "name": "type_achievements_idx", + "columns": [ + { + "expression": "type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "points_achievements_idx": { + "name": "points_achievements_idx", + "columns": [ + { + "expression": "points", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "achievements_username_users_username_fk": { + "name": "achievements_username_users_username_fk", + "tableFrom": "achievements", + "tableTo": "users", + "columnsFrom": [ + "username" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.captures": { + "name": "captures", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "captured_at": { + "name": "captured_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true + }, + "captured_by": { + "name": "captured_by", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "capture_status", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'pending'" + }, + "feed_id": { + "name": "feed_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "start_capture_at": { + "name": "start_capture_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true + }, + "end_capture_at": { + "name": "end_capture_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true + }, + "video_url": { + "name": "video_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "clip_id": { + "name": "clip_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "clip_metadata": { + "name": "clip_metadata", + "type": "json", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "clip_id_idx": { + "name": "clip_id_idx", + "columns": [ + { + "expression": "clip_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "captures_feed_id_feeds_id_fk": { + "name": "captures_feed_id_feeds_id_fk", + "tableFrom": "captures", + "tableTo": "feeds", + "columnsFrom": [ + "feed_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "captures_clip_id_unique": { + "name": "captures_clip_id_unique", + "nullsNotDistinct": false, + "columns": [ + "clip_id" + ] + } + } + }, + "public.events": { + "name": "events", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "payload": { + "name": "payload", + "type": "json", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "username_events_idx": { + "name": "username_events_idx", + "columns": [ + { + "expression": "username", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "type_events_idx": { + "name": "type_events_idx", + "columns": [ + { + "expression": "type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "events_username_users_username_fk": { + "name": "events_username_users_username_fk", + "tableFrom": "events", + "tableTo": "users", + "columnsFrom": [ + "username" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.feeds": { + "name": "feeds", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "key": { + "name": "key", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "status", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'offline'" + }, + "last_seen_at": { + "name": "last_seen_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "fallback_feed_id": { + "name": "fallback_feed_id", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.identifications": { + "name": "identifications", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "nickname": { + "name": "nickname", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "source_id": { + "name": "source_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "observation_id": { + "name": "observation_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "suggested_by": { + "name": "suggested_by", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "confirmed_by": { + "name": "confirmed_by", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "alternate_for": { + "name": "alternate_for", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "accessory_for": { + "name": "accessory_for", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "upvotes": { + "name": "upvotes", + "type": "json", + "primaryKey": false, + "notNull": true, + "default": "'[]'::json" + }, + "downvotes": { + "name": "downvotes", + "type": "json", + "primaryKey": false, + "notNull": true, + "default": "'[]'::json" + } + }, + "indexes": { + "source_idx": { + "name": "source_idx", + "columns": [ + { + "expression": "source_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "identifications_observation_id_observations_id_fk": { + "name": "identifications_observation_id_observations_id_fk", + "tableFrom": "identifications", + "tableTo": "observations", + "columnsFrom": [ + "observation_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "identifications_suggested_by_users_username_fk": { + "name": "identifications_suggested_by_users_username_fk", + "tableFrom": "identifications", + "tableTo": "users", + "columnsFrom": [ + "suggested_by" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "identifications_confirmed_by_users_username_fk": { + "name": "identifications_confirmed_by_users_username_fk", + "tableFrom": "identifications", + "tableTo": "users", + "columnsFrom": [ + "confirmed_by" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.images": { + "name": "images", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "url": { + "name": "url", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "frame": { + "name": "frame", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "observation_id": { + "name": "observation_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "identification_id": { + "name": "identification_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "bounding_boxes": { + "name": "bounding_boxes", + "type": "json", + "primaryKey": false, + "notNull": true, + "default": "'[]'::json" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.notifications": { + "name": "notifications", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "read": { + "name": "read", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "payload": { + "name": "payload", + "type": "json", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "username_notifications_idx": { + "name": "username_notifications_idx", + "columns": [ + { + "expression": "username", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "notifications_username_users_username_fk": { + "name": "notifications_username_users_username_fk", + "tableFrom": "notifications", + "tableTo": "users", + "columnsFrom": [ + "username" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.observations": { + "name": "observations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "nickname": { + "name": "nickname", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "capture_id": { + "name": "capture_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "discord_thread_id": { + "name": "discord_thread_id", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": { + "observations_capture_id_captures_id_fk": { + "name": "observations_capture_id_captures_id_fk", + "tableFrom": "observations", + "tableTo": "captures", + "columnsFrom": [ + "capture_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "discord_thread_id_unique_idx": { + "name": "discord_thread_id_unique_idx", + "nullsNotDistinct": true, + "columns": [ + "discord_thread_id" + ] + } + } + }, + "public.tag_assignments": { + "name": "tag_assignments", + "schema": "", + "columns": { + "tag_id": { + "name": "tag_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "identification_id": { + "name": "identification_id", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "tag_assignments_tag_id_tags_id_fk": { + "name": "tag_assignments_tag_id_tags_id_fk", + "tableFrom": "tag_assignments", + "tableTo": "tags", + "columnsFrom": [ + "tag_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "tag_assignments_identification_id_identifications_id_fk": { + "name": "tag_assignments_identification_id_identifications_id_fk", + "tableFrom": "tag_assignments", + "tableTo": "identifications", + "columnsFrom": [ + "identification_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.tags": { + "name": "tags", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "tag_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.users": { + "name": "users", + "schema": "", + "columns": { + "username": { + "name": "username", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "role": { + "name": "role", + "type": "role", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "points": { + "name": "points", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + } + }, + "enums": { + "public.capture_status": { + "name": "capture_status", + "schema": "public", + "values": [ + "pending", + "processing", + "complete", + "archived" + ] + }, + "public.status": { + "name": "status", + "schema": "public", + "values": [ + "offline", + "unhealthy", + "healthy" + ] + }, + "public.role": { + "name": "role", + "schema": "public", + "values": [ + "capturer", + "member", + "expert", + "moderator", + "researcher", + "admin" + ] + }, + "public.tag_type": { + "name": "tag_type", + "schema": "public", + "values": [ + "generic", + "event", + "campaign" + ] + } + }, + "schemas": {}, + "sequences": {}, + "_meta": { + "columns": {}, + "schemas": {}, + "tables": {} + } +} \ No newline at end of file diff --git a/census/api/drizzle/meta/0003_snapshot.json b/census/api/drizzle/meta/0003_snapshot.json new file mode 100644 index 0000000..8dae601 --- /dev/null +++ b/census/api/drizzle/meta/0003_snapshot.json @@ -0,0 +1,840 @@ +{ + "id": "3e015984-9bfb-40d3-ad43-962476e8f938", + "prevId": "76a12d93-4aa7-481a-a555-892d15cf3ed4", + "version": "7", + "dialect": "postgresql", + "tables": { + "public.achievements": { + "name": "achievements", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "points": { + "name": "points", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "revoked": { + "name": "revoked", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + } + }, + "indexes": { + "username_achievements_idx": { + "name": "username_achievements_idx", + "columns": [ + { + "expression": "username", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "type_achievements_idx": { + "name": "type_achievements_idx", + "columns": [ + { + "expression": "type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "points_achievements_idx": { + "name": "points_achievements_idx", + "columns": [ + { + "expression": "points", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "achievements_username_users_username_fk": { + "name": "achievements_username_users_username_fk", + "tableFrom": "achievements", + "tableTo": "users", + "columnsFrom": [ + "username" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.captures": { + "name": "captures", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "captured_at": { + "name": "captured_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true + }, + "captured_by": { + "name": "captured_by", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "capture_status", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'pending'" + }, + "feed_id": { + "name": "feed_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "start_capture_at": { + "name": "start_capture_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true + }, + "end_capture_at": { + "name": "end_capture_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true + }, + "video_url": { + "name": "video_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "clip_id": { + "name": "clip_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "clip_metadata": { + "name": "clip_metadata", + "type": "json", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "clip_id_idx": { + "name": "clip_id_idx", + "columns": [ + { + "expression": "clip_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "captures_feed_id_feeds_id_fk": { + "name": "captures_feed_id_feeds_id_fk", + "tableFrom": "captures", + "tableTo": "feeds", + "columnsFrom": [ + "feed_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "captures_clip_id_unique": { + "name": "captures_clip_id_unique", + "nullsNotDistinct": false, + "columns": [ + "clip_id" + ] + } + } + }, + "public.events": { + "name": "events", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "payload": { + "name": "payload", + "type": "json", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "username_events_idx": { + "name": "username_events_idx", + "columns": [ + { + "expression": "username", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "type_events_idx": { + "name": "type_events_idx", + "columns": [ + { + "expression": "type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "events_username_users_username_fk": { + "name": "events_username_users_username_fk", + "tableFrom": "events", + "tableTo": "users", + "columnsFrom": [ + "username" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.feeds": { + "name": "feeds", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "key": { + "name": "key", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "status", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'offline'" + }, + "last_seen_at": { + "name": "last_seen_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "fallback_feed_id": { + "name": "fallback_feed_id", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.identifications": { + "name": "identifications", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "nickname": { + "name": "nickname", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "source_id": { + "name": "source_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "observation_id": { + "name": "observation_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "suggested_by": { + "name": "suggested_by", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "confirmed_by": { + "name": "confirmed_by", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "alternate_for": { + "name": "alternate_for", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "accessory_for": { + "name": "accessory_for", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "upvotes": { + "name": "upvotes", + "type": "json", + "primaryKey": false, + "notNull": true, + "default": "'[]'::json" + }, + "downvotes": { + "name": "downvotes", + "type": "json", + "primaryKey": false, + "notNull": true, + "default": "'[]'::json" + } + }, + "indexes": { + "source_idx": { + "name": "source_idx", + "columns": [ + { + "expression": "source_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "identifications_observation_id_observations_id_fk": { + "name": "identifications_observation_id_observations_id_fk", + "tableFrom": "identifications", + "tableTo": "observations", + "columnsFrom": [ + "observation_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "identifications_suggested_by_users_username_fk": { + "name": "identifications_suggested_by_users_username_fk", + "tableFrom": "identifications", + "tableTo": "users", + "columnsFrom": [ + "suggested_by" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "identifications_confirmed_by_users_username_fk": { + "name": "identifications_confirmed_by_users_username_fk", + "tableFrom": "identifications", + "tableTo": "users", + "columnsFrom": [ + "confirmed_by" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.images": { + "name": "images", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "url": { + "name": "url", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "frame": { + "name": "frame", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "observation_id": { + "name": "observation_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "identification_id": { + "name": "identification_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "bounding_box": { + "name": "bounding_box", + "type": "json", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.notifications": { + "name": "notifications", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "read": { + "name": "read", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "payload": { + "name": "payload", + "type": "json", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "username_notifications_idx": { + "name": "username_notifications_idx", + "columns": [ + { + "expression": "username", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "notifications_username_users_username_fk": { + "name": "notifications_username_users_username_fk", + "tableFrom": "notifications", + "tableTo": "users", + "columnsFrom": [ + "username" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.observations": { + "name": "observations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "nickname": { + "name": "nickname", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "capture_id": { + "name": "capture_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "removed": { + "name": "removed", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "moderated": { + "name": "moderated", + "type": "json", + "primaryKey": false, + "notNull": true, + "default": "'[]'::json" + }, + "discord_thread_id": { + "name": "discord_thread_id", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": { + "observations_capture_id_captures_id_fk": { + "name": "observations_capture_id_captures_id_fk", + "tableFrom": "observations", + "tableTo": "captures", + "columnsFrom": [ + "capture_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "discord_thread_id_unique_idx": { + "name": "discord_thread_id_unique_idx", + "nullsNotDistinct": true, + "columns": [ + "discord_thread_id" + ] + } + } + }, + "public.tag_assignments": { + "name": "tag_assignments", + "schema": "", + "columns": { + "tag_id": { + "name": "tag_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "identification_id": { + "name": "identification_id", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "tag_assignments_tag_id_tags_id_fk": { + "name": "tag_assignments_tag_id_tags_id_fk", + "tableFrom": "tag_assignments", + "tableTo": "tags", + "columnsFrom": [ + "tag_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "tag_assignments_identification_id_identifications_id_fk": { + "name": "tag_assignments_identification_id_identifications_id_fk", + "tableFrom": "tag_assignments", + "tableTo": "identifications", + "columnsFrom": [ + "identification_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.tags": { + "name": "tags", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "tag_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.users": { + "name": "users", + "schema": "", + "columns": { + "username": { + "name": "username", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "role": { + "name": "role", + "type": "role", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "points": { + "name": "points", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + } + }, + "enums": { + "public.capture_status": { + "name": "capture_status", + "schema": "public", + "values": [ + "draft", + "pending", + "processing", + "complete", + "archived" + ] + }, + "public.status": { + "name": "status", + "schema": "public", + "values": [ + "offline", + "unhealthy", + "healthy" + ] + }, + "public.role": { + "name": "role", + "schema": "public", + "values": [ + "capturer", + "member", + "expert", + "moderator", + "researcher", + "admin" + ] + }, + "public.tag_type": { + "name": "tag_type", + "schema": "public", + "values": [ + "generic", + "event", + "campaign" + ] + } + }, + "schemas": {}, + "sequences": {}, + "_meta": { + "columns": {}, + "schemas": {}, + "tables": {} + } +} \ No newline at end of file diff --git a/census/api/drizzle/meta/0004_snapshot.json b/census/api/drizzle/meta/0004_snapshot.json new file mode 100644 index 0000000..738ac7b --- /dev/null +++ b/census/api/drizzle/meta/0004_snapshot.json @@ -0,0 +1,832 @@ +{ + "id": "facad827-b37a-4b52-b475-2bc09acf3f34", + "prevId": "3e015984-9bfb-40d3-ad43-962476e8f938", + "version": "7", + "dialect": "postgresql", + "tables": { + "public.achievements": { + "name": "achievements", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "points": { + "name": "points", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "revoked": { + "name": "revoked", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + } + }, + "indexes": { + "username_achievements_idx": { + "name": "username_achievements_idx", + "columns": [ + { + "expression": "username", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "type_achievements_idx": { + "name": "type_achievements_idx", + "columns": [ + { + "expression": "type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "points_achievements_idx": { + "name": "points_achievements_idx", + "columns": [ + { + "expression": "points", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "achievements_username_users_username_fk": { + "name": "achievements_username_users_username_fk", + "tableFrom": "achievements", + "tableTo": "users", + "columnsFrom": [ + "username" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.captures": { + "name": "captures", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "captured_at": { + "name": "captured_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true + }, + "captured_by": { + "name": "captured_by", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "capture_status", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'pending'" + }, + "feed_id": { + "name": "feed_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "start_capture_at": { + "name": "start_capture_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true + }, + "end_capture_at": { + "name": "end_capture_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true + }, + "video_url": { + "name": "video_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "clip_id": { + "name": "clip_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "clip_metadata": { + "name": "clip_metadata", + "type": "json", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "clip_id_idx": { + "name": "clip_id_idx", + "columns": [ + { + "expression": "clip_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "captures_feed_id_feeds_id_fk": { + "name": "captures_feed_id_feeds_id_fk", + "tableFrom": "captures", + "tableTo": "feeds", + "columnsFrom": [ + "feed_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "captures_clip_id_unique": { + "name": "captures_clip_id_unique", + "nullsNotDistinct": false, + "columns": [ + "clip_id" + ] + } + } + }, + "public.events": { + "name": "events", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "payload": { + "name": "payload", + "type": "json", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "username_events_idx": { + "name": "username_events_idx", + "columns": [ + { + "expression": "username", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "type_events_idx": { + "name": "type_events_idx", + "columns": [ + { + "expression": "type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "events_username_users_username_fk": { + "name": "events_username_users_username_fk", + "tableFrom": "events", + "tableTo": "users", + "columnsFrom": [ + "username" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.feeds": { + "name": "feeds", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "key": { + "name": "key", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "status", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'offline'" + }, + "last_seen_at": { + "name": "last_seen_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "fallback_feed_id": { + "name": "fallback_feed_id", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.identifications": { + "name": "identifications", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "nickname": { + "name": "nickname", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "source_id": { + "name": "source_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "observation_id": { + "name": "observation_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "suggested_by": { + "name": "suggested_by", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "confirmed_by": { + "name": "confirmed_by", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "alternate_for": { + "name": "alternate_for", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "accessory_for": { + "name": "accessory_for", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "upvotes": { + "name": "upvotes", + "type": "json", + "primaryKey": false, + "notNull": true, + "default": "'[]'::json" + }, + "downvotes": { + "name": "downvotes", + "type": "json", + "primaryKey": false, + "notNull": true, + "default": "'[]'::json" + } + }, + "indexes": { + "source_idx": { + "name": "source_idx", + "columns": [ + { + "expression": "source_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "identifications_observation_id_observations_id_fk": { + "name": "identifications_observation_id_observations_id_fk", + "tableFrom": "identifications", + "tableTo": "observations", + "columnsFrom": [ + "observation_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "identifications_suggested_by_users_username_fk": { + "name": "identifications_suggested_by_users_username_fk", + "tableFrom": "identifications", + "tableTo": "users", + "columnsFrom": [ + "suggested_by" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "identifications_confirmed_by_users_username_fk": { + "name": "identifications_confirmed_by_users_username_fk", + "tableFrom": "identifications", + "tableTo": "users", + "columnsFrom": [ + "confirmed_by" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.images": { + "name": "images", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "url": { + "name": "url", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "frame": { + "name": "frame", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "observation_id": { + "name": "observation_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "identification_id": { + "name": "identification_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "bounding_box": { + "name": "bounding_box", + "type": "json", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.notifications": { + "name": "notifications", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "read": { + "name": "read", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "payload": { + "name": "payload", + "type": "json", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "username_notifications_idx": { + "name": "username_notifications_idx", + "columns": [ + { + "expression": "username", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "notifications_username_users_username_fk": { + "name": "notifications_username_users_username_fk", + "tableFrom": "notifications", + "tableTo": "users", + "columnsFrom": [ + "username" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.observations": { + "name": "observations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "nickname": { + "name": "nickname", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "capture_id": { + "name": "capture_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "removed": { + "name": "removed", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "moderated": { + "name": "moderated", + "type": "json", + "primaryKey": false, + "notNull": true, + "default": "'[]'::json" + }, + "discord_thread_id": { + "name": "discord_thread_id", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": { + "observations_capture_id_captures_id_fk": { + "name": "observations_capture_id_captures_id_fk", + "tableFrom": "observations", + "tableTo": "captures", + "columnsFrom": [ + "capture_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.tag_assignments": { + "name": "tag_assignments", + "schema": "", + "columns": { + "tag_id": { + "name": "tag_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "identification_id": { + "name": "identification_id", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "tag_assignments_tag_id_tags_id_fk": { + "name": "tag_assignments_tag_id_tags_id_fk", + "tableFrom": "tag_assignments", + "tableTo": "tags", + "columnsFrom": [ + "tag_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "tag_assignments_identification_id_identifications_id_fk": { + "name": "tag_assignments_identification_id_identifications_id_fk", + "tableFrom": "tag_assignments", + "tableTo": "identifications", + "columnsFrom": [ + "identification_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.tags": { + "name": "tags", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "tag_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.users": { + "name": "users", + "schema": "", + "columns": { + "username": { + "name": "username", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "role": { + "name": "role", + "type": "role", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "points": { + "name": "points", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + } + }, + "enums": { + "public.capture_status": { + "name": "capture_status", + "schema": "public", + "values": [ + "draft", + "pending", + "processing", + "complete", + "archived" + ] + }, + "public.status": { + "name": "status", + "schema": "public", + "values": [ + "offline", + "unhealthy", + "healthy" + ] + }, + "public.role": { + "name": "role", + "schema": "public", + "values": [ + "capturer", + "member", + "expert", + "moderator", + "researcher", + "admin" + ] + }, + "public.tag_type": { + "name": "tag_type", + "schema": "public", + "values": [ + "generic", + "event", + "campaign" + ] + } + }, + "schemas": {}, + "sequences": {}, + "_meta": { + "columns": {}, + "schemas": {}, + "tables": {} + } +} \ No newline at end of file diff --git a/census/api/drizzle/meta/0005_snapshot.json b/census/api/drizzle/meta/0005_snapshot.json new file mode 100644 index 0000000..e9b37c6 --- /dev/null +++ b/census/api/drizzle/meta/0005_snapshot.json @@ -0,0 +1,844 @@ +{ + "id": "90a871a6-de29-466a-99a6-66abd94ff872", + "prevId": "facad827-b37a-4b52-b475-2bc09acf3f34", + "version": "7", + "dialect": "postgresql", + "tables": { + "public.achievements": { + "name": "achievements", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "points": { + "name": "points", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "revoked": { + "name": "revoked", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + } + }, + "indexes": { + "username_achievements_idx": { + "name": "username_achievements_idx", + "columns": [ + { + "expression": "username", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "type_achievements_idx": { + "name": "type_achievements_idx", + "columns": [ + { + "expression": "type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "points_achievements_idx": { + "name": "points_achievements_idx", + "columns": [ + { + "expression": "points", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "achievements_username_users_username_fk": { + "name": "achievements_username_users_username_fk", + "tableFrom": "achievements", + "tableTo": "users", + "columnsFrom": [ + "username" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.captures": { + "name": "captures", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "captured_at": { + "name": "captured_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true + }, + "captured_by": { + "name": "captured_by", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "capture_status", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'pending'" + }, + "feed_id": { + "name": "feed_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "start_capture_at": { + "name": "start_capture_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true + }, + "end_capture_at": { + "name": "end_capture_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true + }, + "video_url": { + "name": "video_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "clip_id": { + "name": "clip_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "clip_metadata": { + "name": "clip_metadata", + "type": "json", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "clip_id_idx": { + "name": "clip_id_idx", + "columns": [ + { + "expression": "clip_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "captures_feed_id_feeds_id_fk": { + "name": "captures_feed_id_feeds_id_fk", + "tableFrom": "captures", + "tableTo": "feeds", + "columnsFrom": [ + "feed_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "captures_clip_id_unique": { + "name": "captures_clip_id_unique", + "nullsNotDistinct": false, + "columns": [ + "clip_id" + ] + } + } + }, + "public.events": { + "name": "events", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "payload": { + "name": "payload", + "type": "json", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "username_events_idx": { + "name": "username_events_idx", + "columns": [ + { + "expression": "username", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "type_events_idx": { + "name": "type_events_idx", + "columns": [ + { + "expression": "type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "events_username_users_username_fk": { + "name": "events_username_users_username_fk", + "tableFrom": "events", + "tableTo": "users", + "columnsFrom": [ + "username" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.feeds": { + "name": "feeds", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "key": { + "name": "key", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "status", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'offline'" + }, + "last_seen_at": { + "name": "last_seen_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "fallback_feed_id": { + "name": "fallback_feed_id", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.identifications": { + "name": "identifications", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "nickname": { + "name": "nickname", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "source_id": { + "name": "source_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "observation_id": { + "name": "observation_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "suggested_by": { + "name": "suggested_by", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "confirmed_by": { + "name": "confirmed_by", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "alternate_for": { + "name": "alternate_for", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "accessory_for": { + "name": "accessory_for", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "upvotes": { + "name": "upvotes", + "type": "json", + "primaryKey": false, + "notNull": true, + "default": "'[]'::json" + }, + "downvotes": { + "name": "downvotes", + "type": "json", + "primaryKey": false, + "notNull": true, + "default": "'[]'::json" + } + }, + "indexes": { + "source_idx": { + "name": "source_idx", + "columns": [ + { + "expression": "source_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "identifications_observation_id_observations_id_fk": { + "name": "identifications_observation_id_observations_id_fk", + "tableFrom": "identifications", + "tableTo": "observations", + "columnsFrom": [ + "observation_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "identifications_suggested_by_users_username_fk": { + "name": "identifications_suggested_by_users_username_fk", + "tableFrom": "identifications", + "tableTo": "users", + "columnsFrom": [ + "suggested_by" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "identifications_confirmed_by_users_username_fk": { + "name": "identifications_confirmed_by_users_username_fk", + "tableFrom": "identifications", + "tableTo": "users", + "columnsFrom": [ + "confirmed_by" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.images": { + "name": "images", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "url": { + "name": "url", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "frame": { + "name": "frame", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "width": { + "name": "width", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "height": { + "name": "height", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "observation_id": { + "name": "observation_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "identification_id": { + "name": "identification_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "bounding_box": { + "name": "bounding_box", + "type": "json", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.notifications": { + "name": "notifications", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "read": { + "name": "read", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "payload": { + "name": "payload", + "type": "json", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "username_notifications_idx": { + "name": "username_notifications_idx", + "columns": [ + { + "expression": "username", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "notifications_username_users_username_fk": { + "name": "notifications_username_users_username_fk", + "tableFrom": "notifications", + "tableTo": "users", + "columnsFrom": [ + "username" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.observations": { + "name": "observations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "nickname": { + "name": "nickname", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "capture_id": { + "name": "capture_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "removed": { + "name": "removed", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "moderated": { + "name": "moderated", + "type": "json", + "primaryKey": false, + "notNull": true, + "default": "'[]'::json" + }, + "discord_thread_id": { + "name": "discord_thread_id", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": { + "observations_capture_id_captures_id_fk": { + "name": "observations_capture_id_captures_id_fk", + "tableFrom": "observations", + "tableTo": "captures", + "columnsFrom": [ + "capture_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.tag_assignments": { + "name": "tag_assignments", + "schema": "", + "columns": { + "tag_id": { + "name": "tag_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "identification_id": { + "name": "identification_id", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "tag_assignments_tag_id_tags_id_fk": { + "name": "tag_assignments_tag_id_tags_id_fk", + "tableFrom": "tag_assignments", + "tableTo": "tags", + "columnsFrom": [ + "tag_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "tag_assignments_identification_id_identifications_id_fk": { + "name": "tag_assignments_identification_id_identifications_id_fk", + "tableFrom": "tag_assignments", + "tableTo": "identifications", + "columnsFrom": [ + "identification_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.tags": { + "name": "tags", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "tag_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.users": { + "name": "users", + "schema": "", + "columns": { + "username": { + "name": "username", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "role": { + "name": "role", + "type": "role", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "points": { + "name": "points", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + } + }, + "enums": { + "public.capture_status": { + "name": "capture_status", + "schema": "public", + "values": [ + "draft", + "pending", + "processing", + "complete", + "archived" + ] + }, + "public.status": { + "name": "status", + "schema": "public", + "values": [ + "offline", + "unhealthy", + "healthy" + ] + }, + "public.role": { + "name": "role", + "schema": "public", + "values": [ + "capturer", + "member", + "expert", + "moderator", + "researcher", + "admin" + ] + }, + "public.tag_type": { + "name": "tag_type", + "schema": "public", + "values": [ + "generic", + "event", + "campaign" + ] + } + }, + "schemas": {}, + "sequences": {}, + "_meta": { + "columns": {}, + "schemas": {}, + "tables": {} + } +} \ No newline at end of file diff --git a/census/api/drizzle/meta/0006_snapshot.json b/census/api/drizzle/meta/0006_snapshot.json new file mode 100644 index 0000000..c234ca4 --- /dev/null +++ b/census/api/drizzle/meta/0006_snapshot.json @@ -0,0 +1,844 @@ +{ + "id": "815fc6b9-974f-46a4-b0bc-08eff6e2d63a", + "prevId": "90a871a6-de29-466a-99a6-66abd94ff872", + "version": "7", + "dialect": "postgresql", + "tables": { + "public.achievements": { + "name": "achievements", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "points": { + "name": "points", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "revoked": { + "name": "revoked", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + } + }, + "indexes": { + "username_achievements_idx": { + "name": "username_achievements_idx", + "columns": [ + { + "expression": "username", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "type_achievements_idx": { + "name": "type_achievements_idx", + "columns": [ + { + "expression": "type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "points_achievements_idx": { + "name": "points_achievements_idx", + "columns": [ + { + "expression": "points", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "achievements_username_users_username_fk": { + "name": "achievements_username_users_username_fk", + "tableFrom": "achievements", + "tableTo": "users", + "columnsFrom": [ + "username" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.captures": { + "name": "captures", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "captured_at": { + "name": "captured_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true + }, + "captured_by": { + "name": "captured_by", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "capture_status", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'pending'" + }, + "feed_id": { + "name": "feed_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "start_capture_at": { + "name": "start_capture_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true + }, + "end_capture_at": { + "name": "end_capture_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true + }, + "video_url": { + "name": "video_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "clip_id": { + "name": "clip_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "clip_metadata": { + "name": "clip_metadata", + "type": "json", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "clip_id_idx": { + "name": "clip_id_idx", + "columns": [ + { + "expression": "clip_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "captures_feed_id_feeds_id_fk": { + "name": "captures_feed_id_feeds_id_fk", + "tableFrom": "captures", + "tableTo": "feeds", + "columnsFrom": [ + "feed_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "captures_clip_id_unique": { + "name": "captures_clip_id_unique", + "nullsNotDistinct": false, + "columns": [ + "clip_id" + ] + } + } + }, + "public.events": { + "name": "events", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "payload": { + "name": "payload", + "type": "json", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "username_events_idx": { + "name": "username_events_idx", + "columns": [ + { + "expression": "username", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "type_events_idx": { + "name": "type_events_idx", + "columns": [ + { + "expression": "type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "events_username_users_username_fk": { + "name": "events_username_users_username_fk", + "tableFrom": "events", + "tableTo": "users", + "columnsFrom": [ + "username" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.feeds": { + "name": "feeds", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "key": { + "name": "key", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "status", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'offline'" + }, + "last_seen_at": { + "name": "last_seen_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "fallback_feed_id": { + "name": "fallback_feed_id", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.identifications": { + "name": "identifications", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "nickname": { + "name": "nickname", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "source_id": { + "name": "source_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "observation_id": { + "name": "observation_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "suggested_by": { + "name": "suggested_by", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "confirmed_by": { + "name": "confirmed_by", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "alternate_for": { + "name": "alternate_for", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "accessory_for": { + "name": "accessory_for", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "upvotes": { + "name": "upvotes", + "type": "json", + "primaryKey": false, + "notNull": true, + "default": "'[]'::json" + }, + "downvotes": { + "name": "downvotes", + "type": "json", + "primaryKey": false, + "notNull": true, + "default": "'[]'::json" + } + }, + "indexes": { + "source_idx": { + "name": "source_idx", + "columns": [ + { + "expression": "source_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "identifications_observation_id_observations_id_fk": { + "name": "identifications_observation_id_observations_id_fk", + "tableFrom": "identifications", + "tableTo": "observations", + "columnsFrom": [ + "observation_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "identifications_suggested_by_users_username_fk": { + "name": "identifications_suggested_by_users_username_fk", + "tableFrom": "identifications", + "tableTo": "users", + "columnsFrom": [ + "suggested_by" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "identifications_confirmed_by_users_username_fk": { + "name": "identifications_confirmed_by_users_username_fk", + "tableFrom": "identifications", + "tableTo": "users", + "columnsFrom": [ + "confirmed_by" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.images": { + "name": "images", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "url": { + "name": "url", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "timestamp": { + "name": "timestamp", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "width": { + "name": "width", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "height": { + "name": "height", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "observation_id": { + "name": "observation_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "identification_id": { + "name": "identification_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "bounding_box": { + "name": "bounding_box", + "type": "json", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.notifications": { + "name": "notifications", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "read": { + "name": "read", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "payload": { + "name": "payload", + "type": "json", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "username_notifications_idx": { + "name": "username_notifications_idx", + "columns": [ + { + "expression": "username", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "notifications_username_users_username_fk": { + "name": "notifications_username_users_username_fk", + "tableFrom": "notifications", + "tableTo": "users", + "columnsFrom": [ + "username" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.observations": { + "name": "observations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "nickname": { + "name": "nickname", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "capture_id": { + "name": "capture_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "removed": { + "name": "removed", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "moderated": { + "name": "moderated", + "type": "json", + "primaryKey": false, + "notNull": true, + "default": "'[]'::json" + }, + "discord_thread_id": { + "name": "discord_thread_id", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": { + "observations_capture_id_captures_id_fk": { + "name": "observations_capture_id_captures_id_fk", + "tableFrom": "observations", + "tableTo": "captures", + "columnsFrom": [ + "capture_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.tag_assignments": { + "name": "tag_assignments", + "schema": "", + "columns": { + "tag_id": { + "name": "tag_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "identification_id": { + "name": "identification_id", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "tag_assignments_tag_id_tags_id_fk": { + "name": "tag_assignments_tag_id_tags_id_fk", + "tableFrom": "tag_assignments", + "tableTo": "tags", + "columnsFrom": [ + "tag_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "tag_assignments_identification_id_identifications_id_fk": { + "name": "tag_assignments_identification_id_identifications_id_fk", + "tableFrom": "tag_assignments", + "tableTo": "identifications", + "columnsFrom": [ + "identification_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.tags": { + "name": "tags", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "tag_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.users": { + "name": "users", + "schema": "", + "columns": { + "username": { + "name": "username", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "role": { + "name": "role", + "type": "role", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "points": { + "name": "points", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + } + }, + "enums": { + "public.capture_status": { + "name": "capture_status", + "schema": "public", + "values": [ + "draft", + "pending", + "processing", + "complete", + "archived" + ] + }, + "public.status": { + "name": "status", + "schema": "public", + "values": [ + "offline", + "unhealthy", + "healthy" + ] + }, + "public.role": { + "name": "role", + "schema": "public", + "values": [ + "capturer", + "member", + "expert", + "moderator", + "researcher", + "admin" + ] + }, + "public.tag_type": { + "name": "tag_type", + "schema": "public", + "values": [ + "generic", + "event", + "campaign" + ] + } + }, + "schemas": {}, + "sequences": {}, + "_meta": { + "columns": {}, + "schemas": {}, + "tables": {} + } +} \ No newline at end of file diff --git a/census/api/drizzle/meta/0007_snapshot.json b/census/api/drizzle/meta/0007_snapshot.json new file mode 100644 index 0000000..c70fe75 --- /dev/null +++ b/census/api/drizzle/meta/0007_snapshot.json @@ -0,0 +1,844 @@ +{ + "id": "e4d6f9d5-b755-4361-9fe6-a48243023300", + "prevId": "815fc6b9-974f-46a4-b0bc-08eff6e2d63a", + "version": "7", + "dialect": "postgresql", + "tables": { + "public.achievements": { + "name": "achievements", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "points": { + "name": "points", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "revoked": { + "name": "revoked", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + } + }, + "indexes": { + "username_achievements_idx": { + "name": "username_achievements_idx", + "columns": [ + { + "expression": "username", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "type_achievements_idx": { + "name": "type_achievements_idx", + "columns": [ + { + "expression": "type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "points_achievements_idx": { + "name": "points_achievements_idx", + "columns": [ + { + "expression": "points", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "achievements_username_users_username_fk": { + "name": "achievements_username_users_username_fk", + "tableFrom": "achievements", + "tableTo": "users", + "columnsFrom": [ + "username" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.captures": { + "name": "captures", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "captured_at": { + "name": "captured_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true + }, + "captured_by": { + "name": "captured_by", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "capture_status", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'pending'" + }, + "feed_id": { + "name": "feed_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "start_capture_at": { + "name": "start_capture_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true + }, + "end_capture_at": { + "name": "end_capture_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true + }, + "video_url": { + "name": "video_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "clip_id": { + "name": "clip_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "clip_metadata": { + "name": "clip_metadata", + "type": "json", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "clip_id_idx": { + "name": "clip_id_idx", + "columns": [ + { + "expression": "clip_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "captures_feed_id_feeds_id_fk": { + "name": "captures_feed_id_feeds_id_fk", + "tableFrom": "captures", + "tableTo": "feeds", + "columnsFrom": [ + "feed_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "captures_clip_id_unique": { + "name": "captures_clip_id_unique", + "nullsNotDistinct": false, + "columns": [ + "clip_id" + ] + } + } + }, + "public.events": { + "name": "events", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "payload": { + "name": "payload", + "type": "json", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "username_events_idx": { + "name": "username_events_idx", + "columns": [ + { + "expression": "username", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "type_events_idx": { + "name": "type_events_idx", + "columns": [ + { + "expression": "type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "events_username_users_username_fk": { + "name": "events_username_users_username_fk", + "tableFrom": "events", + "tableTo": "users", + "columnsFrom": [ + "username" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.feeds": { + "name": "feeds", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "key": { + "name": "key", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "status", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'offline'" + }, + "last_seen_at": { + "name": "last_seen_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "fallback_feed_id": { + "name": "fallback_feed_id", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.identifications": { + "name": "identifications", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "nickname": { + "name": "nickname", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "source_id": { + "name": "source_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "observation_id": { + "name": "observation_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "suggested_by": { + "name": "suggested_by", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "confirmed_by": { + "name": "confirmed_by", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "alternate_for": { + "name": "alternate_for", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "accessory_for": { + "name": "accessory_for", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "upvotes": { + "name": "upvotes", + "type": "json", + "primaryKey": false, + "notNull": true, + "default": "'[]'::json" + }, + "downvotes": { + "name": "downvotes", + "type": "json", + "primaryKey": false, + "notNull": true, + "default": "'[]'::json" + } + }, + "indexes": { + "source_idx": { + "name": "source_idx", + "columns": [ + { + "expression": "source_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "identifications_observation_id_observations_id_fk": { + "name": "identifications_observation_id_observations_id_fk", + "tableFrom": "identifications", + "tableTo": "observations", + "columnsFrom": [ + "observation_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "identifications_suggested_by_users_username_fk": { + "name": "identifications_suggested_by_users_username_fk", + "tableFrom": "identifications", + "tableTo": "users", + "columnsFrom": [ + "suggested_by" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "identifications_confirmed_by_users_username_fk": { + "name": "identifications_confirmed_by_users_username_fk", + "tableFrom": "identifications", + "tableTo": "users", + "columnsFrom": [ + "confirmed_by" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.images": { + "name": "images", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "url": { + "name": "url", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "timestamp": { + "name": "timestamp", + "type": "numeric", + "primaryKey": false, + "notNull": true + }, + "width": { + "name": "width", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "height": { + "name": "height", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "observation_id": { + "name": "observation_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "identification_id": { + "name": "identification_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "bounding_box": { + "name": "bounding_box", + "type": "json", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.notifications": { + "name": "notifications", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "read": { + "name": "read", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "payload": { + "name": "payload", + "type": "json", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "username_notifications_idx": { + "name": "username_notifications_idx", + "columns": [ + { + "expression": "username", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "notifications_username_users_username_fk": { + "name": "notifications_username_users_username_fk", + "tableFrom": "notifications", + "tableTo": "users", + "columnsFrom": [ + "username" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.observations": { + "name": "observations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "nickname": { + "name": "nickname", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "capture_id": { + "name": "capture_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "removed": { + "name": "removed", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "moderated": { + "name": "moderated", + "type": "json", + "primaryKey": false, + "notNull": true, + "default": "'[]'::json" + }, + "discord_thread_id": { + "name": "discord_thread_id", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": { + "observations_capture_id_captures_id_fk": { + "name": "observations_capture_id_captures_id_fk", + "tableFrom": "observations", + "tableTo": "captures", + "columnsFrom": [ + "capture_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.tag_assignments": { + "name": "tag_assignments", + "schema": "", + "columns": { + "tag_id": { + "name": "tag_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "identification_id": { + "name": "identification_id", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "tag_assignments_tag_id_tags_id_fk": { + "name": "tag_assignments_tag_id_tags_id_fk", + "tableFrom": "tag_assignments", + "tableTo": "tags", + "columnsFrom": [ + "tag_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "tag_assignments_identification_id_identifications_id_fk": { + "name": "tag_assignments_identification_id_identifications_id_fk", + "tableFrom": "tag_assignments", + "tableTo": "identifications", + "columnsFrom": [ + "identification_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.tags": { + "name": "tags", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "tag_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.users": { + "name": "users", + "schema": "", + "columns": { + "username": { + "name": "username", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "role": { + "name": "role", + "type": "role", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "points": { + "name": "points", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + } + }, + "enums": { + "public.capture_status": { + "name": "capture_status", + "schema": "public", + "values": [ + "draft", + "pending", + "processing", + "complete", + "archived" + ] + }, + "public.status": { + "name": "status", + "schema": "public", + "values": [ + "offline", + "unhealthy", + "healthy" + ] + }, + "public.role": { + "name": "role", + "schema": "public", + "values": [ + "capturer", + "member", + "expert", + "moderator", + "researcher", + "admin" + ] + }, + "public.tag_type": { + "name": "tag_type", + "schema": "public", + "values": [ + "generic", + "event", + "campaign" + ] + } + }, + "schemas": {}, + "sequences": {}, + "_meta": { + "columns": {}, + "schemas": {}, + "tables": {} + } +} \ No newline at end of file diff --git a/census/api/drizzle/meta/0008_snapshot.json b/census/api/drizzle/meta/0008_snapshot.json new file mode 100644 index 0000000..5fb3412 --- /dev/null +++ b/census/api/drizzle/meta/0008_snapshot.json @@ -0,0 +1,851 @@ +{ + "id": "8ba651d8-94be-47f1-9090-b0b66496b359", + "prevId": "e4d6f9d5-b755-4361-9fe6-a48243023300", + "version": "7", + "dialect": "postgresql", + "tables": { + "public.achievements": { + "name": "achievements", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "points": { + "name": "points", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "redeemed": { + "name": "redeemed", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "revoked": { + "name": "revoked", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + } + }, + "indexes": { + "username_achievements_idx": { + "name": "username_achievements_idx", + "columns": [ + { + "expression": "username", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "type_achievements_idx": { + "name": "type_achievements_idx", + "columns": [ + { + "expression": "type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "points_achievements_idx": { + "name": "points_achievements_idx", + "columns": [ + { + "expression": "points", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "achievements_username_users_username_fk": { + "name": "achievements_username_users_username_fk", + "tableFrom": "achievements", + "tableTo": "users", + "columnsFrom": [ + "username" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.captures": { + "name": "captures", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "captured_at": { + "name": "captured_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true + }, + "captured_by": { + "name": "captured_by", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "capture_status", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'pending'" + }, + "feed_id": { + "name": "feed_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "start_capture_at": { + "name": "start_capture_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true + }, + "end_capture_at": { + "name": "end_capture_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true + }, + "video_url": { + "name": "video_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "clip_id": { + "name": "clip_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "clip_metadata": { + "name": "clip_metadata", + "type": "json", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "clip_id_idx": { + "name": "clip_id_idx", + "columns": [ + { + "expression": "clip_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "captures_feed_id_feeds_id_fk": { + "name": "captures_feed_id_feeds_id_fk", + "tableFrom": "captures", + "tableTo": "feeds", + "columnsFrom": [ + "feed_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "captures_clip_id_unique": { + "name": "captures_clip_id_unique", + "nullsNotDistinct": false, + "columns": [ + "clip_id" + ] + } + } + }, + "public.events": { + "name": "events", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "payload": { + "name": "payload", + "type": "json", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "username_events_idx": { + "name": "username_events_idx", + "columns": [ + { + "expression": "username", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "type_events_idx": { + "name": "type_events_idx", + "columns": [ + { + "expression": "type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "events_username_users_username_fk": { + "name": "events_username_users_username_fk", + "tableFrom": "events", + "tableTo": "users", + "columnsFrom": [ + "username" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.feeds": { + "name": "feeds", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "key": { + "name": "key", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "status", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'offline'" + }, + "last_seen_at": { + "name": "last_seen_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "fallback_feed_id": { + "name": "fallback_feed_id", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.identifications": { + "name": "identifications", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "nickname": { + "name": "nickname", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "source_id": { + "name": "source_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "observation_id": { + "name": "observation_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "suggested_by": { + "name": "suggested_by", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "confirmed_by": { + "name": "confirmed_by", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "alternate_for": { + "name": "alternate_for", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "accessory_for": { + "name": "accessory_for", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "upvotes": { + "name": "upvotes", + "type": "json", + "primaryKey": false, + "notNull": true, + "default": "'[]'::json" + }, + "downvotes": { + "name": "downvotes", + "type": "json", + "primaryKey": false, + "notNull": true, + "default": "'[]'::json" + } + }, + "indexes": { + "source_idx": { + "name": "source_idx", + "columns": [ + { + "expression": "source_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "identifications_observation_id_observations_id_fk": { + "name": "identifications_observation_id_observations_id_fk", + "tableFrom": "identifications", + "tableTo": "observations", + "columnsFrom": [ + "observation_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "identifications_suggested_by_users_username_fk": { + "name": "identifications_suggested_by_users_username_fk", + "tableFrom": "identifications", + "tableTo": "users", + "columnsFrom": [ + "suggested_by" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "identifications_confirmed_by_users_username_fk": { + "name": "identifications_confirmed_by_users_username_fk", + "tableFrom": "identifications", + "tableTo": "users", + "columnsFrom": [ + "confirmed_by" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.images": { + "name": "images", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "url": { + "name": "url", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "timestamp": { + "name": "timestamp", + "type": "numeric", + "primaryKey": false, + "notNull": true + }, + "width": { + "name": "width", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "height": { + "name": "height", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "observation_id": { + "name": "observation_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "identification_id": { + "name": "identification_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "bounding_box": { + "name": "bounding_box", + "type": "json", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.notifications": { + "name": "notifications", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "read": { + "name": "read", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "payload": { + "name": "payload", + "type": "json", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "username_notifications_idx": { + "name": "username_notifications_idx", + "columns": [ + { + "expression": "username", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "notifications_username_users_username_fk": { + "name": "notifications_username_users_username_fk", + "tableFrom": "notifications", + "tableTo": "users", + "columnsFrom": [ + "username" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.observations": { + "name": "observations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "nickname": { + "name": "nickname", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "capture_id": { + "name": "capture_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "removed": { + "name": "removed", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "moderated": { + "name": "moderated", + "type": "json", + "primaryKey": false, + "notNull": true, + "default": "'[]'::json" + }, + "discord_thread_id": { + "name": "discord_thread_id", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": { + "observations_capture_id_captures_id_fk": { + "name": "observations_capture_id_captures_id_fk", + "tableFrom": "observations", + "tableTo": "captures", + "columnsFrom": [ + "capture_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.tag_assignments": { + "name": "tag_assignments", + "schema": "", + "columns": { + "tag_id": { + "name": "tag_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "identification_id": { + "name": "identification_id", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "tag_assignments_tag_id_tags_id_fk": { + "name": "tag_assignments_tag_id_tags_id_fk", + "tableFrom": "tag_assignments", + "tableTo": "tags", + "columnsFrom": [ + "tag_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "tag_assignments_identification_id_identifications_id_fk": { + "name": "tag_assignments_identification_id_identifications_id_fk", + "tableFrom": "tag_assignments", + "tableTo": "identifications", + "columnsFrom": [ + "identification_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.tags": { + "name": "tags", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "tag_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.users": { + "name": "users", + "schema": "", + "columns": { + "username": { + "name": "username", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "role": { + "name": "role", + "type": "role", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "points": { + "name": "points", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + } + }, + "enums": { + "public.capture_status": { + "name": "capture_status", + "schema": "public", + "values": [ + "draft", + "pending", + "processing", + "complete", + "archived" + ] + }, + "public.status": { + "name": "status", + "schema": "public", + "values": [ + "offline", + "unhealthy", + "healthy" + ] + }, + "public.role": { + "name": "role", + "schema": "public", + "values": [ + "capturer", + "member", + "expert", + "moderator", + "researcher", + "admin" + ] + }, + "public.tag_type": { + "name": "tag_type", + "schema": "public", + "values": [ + "generic", + "event", + "campaign" + ] + } + }, + "schemas": {}, + "sequences": {}, + "_meta": { + "columns": {}, + "schemas": {}, + "tables": {} + } +} \ No newline at end of file diff --git a/census/api/drizzle/meta/0009_snapshot.json b/census/api/drizzle/meta/0009_snapshot.json new file mode 100644 index 0000000..f414ce2 --- /dev/null +++ b/census/api/drizzle/meta/0009_snapshot.json @@ -0,0 +1,889 @@ +{ + "id": "ee234845-1a2b-4ce9-8964-a71d060f36c9", + "prevId": "8ba651d8-94be-47f1-9090-b0b66496b359", + "version": "7", + "dialect": "postgresql", + "tables": { + "public.achievements": { + "name": "achievements", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "identification_id": { + "name": "identification_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "observation_id": { + "name": "observation_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "points": { + "name": "points", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "redeemed": { + "name": "redeemed", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "revoked": { + "name": "revoked", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + } + }, + "indexes": { + "username_achievements_idx": { + "name": "username_achievements_idx", + "columns": [ + { + "expression": "username", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "type_achievements_idx": { + "name": "type_achievements_idx", + "columns": [ + { + "expression": "type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "points_achievements_idx": { + "name": "points_achievements_idx", + "columns": [ + { + "expression": "points", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "achievements_username_users_username_fk": { + "name": "achievements_username_users_username_fk", + "tableFrom": "achievements", + "tableTo": "users", + "columnsFrom": [ + "username" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "achievements_identification_id_identifications_id_fk": { + "name": "achievements_identification_id_identifications_id_fk", + "tableFrom": "achievements", + "tableTo": "identifications", + "columnsFrom": [ + "identification_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "achievements_observation_id_observations_id_fk": { + "name": "achievements_observation_id_observations_id_fk", + "tableFrom": "achievements", + "tableTo": "observations", + "columnsFrom": [ + "observation_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.captures": { + "name": "captures", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "captured_at": { + "name": "captured_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true + }, + "captured_by": { + "name": "captured_by", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "capture_status", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'pending'" + }, + "feed_id": { + "name": "feed_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "start_capture_at": { + "name": "start_capture_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true + }, + "end_capture_at": { + "name": "end_capture_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true + }, + "video_url": { + "name": "video_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "clip_id": { + "name": "clip_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "clip_metadata": { + "name": "clip_metadata", + "type": "json", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "clip_id_idx": { + "name": "clip_id_idx", + "columns": [ + { + "expression": "clip_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "captures_feed_id_feeds_id_fk": { + "name": "captures_feed_id_feeds_id_fk", + "tableFrom": "captures", + "tableTo": "feeds", + "columnsFrom": [ + "feed_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "captures_clip_id_unique": { + "name": "captures_clip_id_unique", + "nullsNotDistinct": false, + "columns": [ + "clip_id" + ] + } + } + }, + "public.events": { + "name": "events", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "payload": { + "name": "payload", + "type": "json", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "username_events_idx": { + "name": "username_events_idx", + "columns": [ + { + "expression": "username", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "type_events_idx": { + "name": "type_events_idx", + "columns": [ + { + "expression": "type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "events_username_users_username_fk": { + "name": "events_username_users_username_fk", + "tableFrom": "events", + "tableTo": "users", + "columnsFrom": [ + "username" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.feeds": { + "name": "feeds", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "key": { + "name": "key", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "status", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'offline'" + }, + "last_seen_at": { + "name": "last_seen_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "fallback_feed_id": { + "name": "fallback_feed_id", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.identifications": { + "name": "identifications", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "nickname": { + "name": "nickname", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "source_id": { + "name": "source_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "observation_id": { + "name": "observation_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "suggested_by": { + "name": "suggested_by", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "confirmed_by": { + "name": "confirmed_by", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "alternate_for": { + "name": "alternate_for", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "accessory_for": { + "name": "accessory_for", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "upvotes": { + "name": "upvotes", + "type": "json", + "primaryKey": false, + "notNull": true, + "default": "'[]'::json" + }, + "downvotes": { + "name": "downvotes", + "type": "json", + "primaryKey": false, + "notNull": true, + "default": "'[]'::json" + } + }, + "indexes": { + "source_idx": { + "name": "source_idx", + "columns": [ + { + "expression": "source_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "identifications_observation_id_observations_id_fk": { + "name": "identifications_observation_id_observations_id_fk", + "tableFrom": "identifications", + "tableTo": "observations", + "columnsFrom": [ + "observation_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "identifications_suggested_by_users_username_fk": { + "name": "identifications_suggested_by_users_username_fk", + "tableFrom": "identifications", + "tableTo": "users", + "columnsFrom": [ + "suggested_by" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "identifications_confirmed_by_users_username_fk": { + "name": "identifications_confirmed_by_users_username_fk", + "tableFrom": "identifications", + "tableTo": "users", + "columnsFrom": [ + "confirmed_by" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.images": { + "name": "images", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "url": { + "name": "url", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "timestamp": { + "name": "timestamp", + "type": "numeric", + "primaryKey": false, + "notNull": true + }, + "width": { + "name": "width", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "height": { + "name": "height", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "observation_id": { + "name": "observation_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "identification_id": { + "name": "identification_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "bounding_box": { + "name": "bounding_box", + "type": "json", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.notifications": { + "name": "notifications", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "read": { + "name": "read", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "payload": { + "name": "payload", + "type": "json", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "username_notifications_idx": { + "name": "username_notifications_idx", + "columns": [ + { + "expression": "username", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "notifications_username_users_username_fk": { + "name": "notifications_username_users_username_fk", + "tableFrom": "notifications", + "tableTo": "users", + "columnsFrom": [ + "username" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.observations": { + "name": "observations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "nickname": { + "name": "nickname", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "capture_id": { + "name": "capture_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "removed": { + "name": "removed", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "moderated": { + "name": "moderated", + "type": "json", + "primaryKey": false, + "notNull": true, + "default": "'[]'::json" + }, + "discord_thread_id": { + "name": "discord_thread_id", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": { + "observations_capture_id_captures_id_fk": { + "name": "observations_capture_id_captures_id_fk", + "tableFrom": "observations", + "tableTo": "captures", + "columnsFrom": [ + "capture_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.tag_assignments": { + "name": "tag_assignments", + "schema": "", + "columns": { + "tag_id": { + "name": "tag_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "identification_id": { + "name": "identification_id", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "tag_assignments_tag_id_tags_id_fk": { + "name": "tag_assignments_tag_id_tags_id_fk", + "tableFrom": "tag_assignments", + "tableTo": "tags", + "columnsFrom": [ + "tag_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "tag_assignments_identification_id_identifications_id_fk": { + "name": "tag_assignments_identification_id_identifications_id_fk", + "tableFrom": "tag_assignments", + "tableTo": "identifications", + "columnsFrom": [ + "identification_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.tags": { + "name": "tags", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "tag_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.users": { + "name": "users", + "schema": "", + "columns": { + "username": { + "name": "username", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "role": { + "name": "role", + "type": "role", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "points": { + "name": "points", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + } + }, + "enums": { + "public.capture_status": { + "name": "capture_status", + "schema": "public", + "values": [ + "draft", + "pending", + "processing", + "complete", + "archived" + ] + }, + "public.status": { + "name": "status", + "schema": "public", + "values": [ + "offline", + "unhealthy", + "healthy" + ] + }, + "public.role": { + "name": "role", + "schema": "public", + "values": [ + "capturer", + "member", + "expert", + "moderator", + "researcher", + "admin" + ] + }, + "public.tag_type": { + "name": "tag_type", + "schema": "public", + "values": [ + "generic", + "event", + "campaign" + ] + } + }, + "schemas": {}, + "sequences": {}, + "_meta": { + "columns": {}, + "schemas": {}, + "tables": {} + } +} \ No newline at end of file diff --git a/census/api/drizzle/meta/0010_snapshot.json b/census/api/drizzle/meta/0010_snapshot.json new file mode 100644 index 0000000..ad48622 --- /dev/null +++ b/census/api/drizzle/meta/0010_snapshot.json @@ -0,0 +1,914 @@ +{ + "id": "a1c0fc51-00dd-4c46-9e5e-e58e5019f956", + "prevId": "ee234845-1a2b-4ce9-8964-a71d060f36c9", + "version": "7", + "dialect": "postgresql", + "tables": { + "public.achievements": { + "name": "achievements", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "identification_id": { + "name": "identification_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "observation_id": { + "name": "observation_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "points": { + "name": "points", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "redeemed": { + "name": "redeemed", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "revoked": { + "name": "revoked", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + } + }, + "indexes": { + "username_achievements_idx": { + "name": "username_achievements_idx", + "columns": [ + { + "expression": "username", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "type_achievements_idx": { + "name": "type_achievements_idx", + "columns": [ + { + "expression": "type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "points_achievements_idx": { + "name": "points_achievements_idx", + "columns": [ + { + "expression": "points", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "achievements_username_users_username_fk": { + "name": "achievements_username_users_username_fk", + "tableFrom": "achievements", + "tableTo": "users", + "columnsFrom": [ + "username" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "achievements_identification_id_identifications_id_fk": { + "name": "achievements_identification_id_identifications_id_fk", + "tableFrom": "achievements", + "tableTo": "identifications", + "columnsFrom": [ + "identification_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "achievements_observation_id_observations_id_fk": { + "name": "achievements_observation_id_observations_id_fk", + "tableFrom": "achievements", + "tableTo": "observations", + "columnsFrom": [ + "observation_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.captures": { + "name": "captures", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "captured_at": { + "name": "captured_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true + }, + "captured_by": { + "name": "captured_by", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "capture_status", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'pending'" + }, + "feed_id": { + "name": "feed_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "start_capture_at": { + "name": "start_capture_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true + }, + "end_capture_at": { + "name": "end_capture_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true + }, + "video_url": { + "name": "video_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "clip_id": { + "name": "clip_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "clip_metadata": { + "name": "clip_metadata", + "type": "json", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "clip_id_idx": { + "name": "clip_id_idx", + "columns": [ + { + "expression": "clip_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "captures_feed_id_feeds_id_fk": { + "name": "captures_feed_id_feeds_id_fk", + "tableFrom": "captures", + "tableTo": "feeds", + "columnsFrom": [ + "feed_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "captures_clip_id_unique": { + "name": "captures_clip_id_unique", + "nullsNotDistinct": false, + "columns": [ + "clip_id" + ] + } + } + }, + "public.events": { + "name": "events", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "payload": { + "name": "payload", + "type": "json", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "username_events_idx": { + "name": "username_events_idx", + "columns": [ + { + "expression": "username", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "type_events_idx": { + "name": "type_events_idx", + "columns": [ + { + "expression": "type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "events_username_users_username_fk": { + "name": "events_username_users_username_fk", + "tableFrom": "events", + "tableTo": "users", + "columnsFrom": [ + "username" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.feeds": { + "name": "feeds", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "key": { + "name": "key", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "status", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'offline'" + }, + "last_seen_at": { + "name": "last_seen_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "fallback_feed_id": { + "name": "fallback_feed_id", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.identifications": { + "name": "identifications", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "nickname": { + "name": "nickname", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "source_id": { + "name": "source_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "observation_id": { + "name": "observation_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "suggested_by": { + "name": "suggested_by", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "confirmed_by": { + "name": "confirmed_by", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "alternate_for": { + "name": "alternate_for", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "accessory_for": { + "name": "accessory_for", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "upvotes": { + "name": "upvotes", + "type": "json", + "primaryKey": false, + "notNull": true, + "default": "'[]'::json" + }, + "downvotes": { + "name": "downvotes", + "type": "json", + "primaryKey": false, + "notNull": true, + "default": "'[]'::json" + } + }, + "indexes": { + "source_idx": { + "name": "source_idx", + "columns": [ + { + "expression": "source_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "identifications_observation_id_observations_id_fk": { + "name": "identifications_observation_id_observations_id_fk", + "tableFrom": "identifications", + "tableTo": "observations", + "columnsFrom": [ + "observation_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "identifications_suggested_by_users_username_fk": { + "name": "identifications_suggested_by_users_username_fk", + "tableFrom": "identifications", + "tableTo": "users", + "columnsFrom": [ + "suggested_by" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "identifications_confirmed_by_users_username_fk": { + "name": "identifications_confirmed_by_users_username_fk", + "tableFrom": "identifications", + "tableTo": "users", + "columnsFrom": [ + "confirmed_by" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.images": { + "name": "images", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "url": { + "name": "url", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "timestamp": { + "name": "timestamp", + "type": "numeric", + "primaryKey": false, + "notNull": true + }, + "width": { + "name": "width", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "height": { + "name": "height", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "observation_id": { + "name": "observation_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "identification_id": { + "name": "identification_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "bounding_box": { + "name": "bounding_box", + "type": "json", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.notifications": { + "name": "notifications", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "read": { + "name": "read", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "payload": { + "name": "payload", + "type": "json", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "username_notifications_idx": { + "name": "username_notifications_idx", + "columns": [ + { + "expression": "username", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "notifications_username_users_username_fk": { + "name": "notifications_username_users_username_fk", + "tableFrom": "notifications", + "tableTo": "users", + "columnsFrom": [ + "username" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.observations": { + "name": "observations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "nickname": { + "name": "nickname", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "capture_id": { + "name": "capture_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "observed_at": { + "name": "observed_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true + }, + "observed_by": { + "name": "observed_by", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "removed": { + "name": "removed", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "moderated": { + "name": "moderated", + "type": "json", + "primaryKey": false, + "notNull": true, + "default": "'[]'::json" + }, + "discord_thread_id": { + "name": "discord_thread_id", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": { + "observations_capture_id_captures_id_fk": { + "name": "observations_capture_id_captures_id_fk", + "tableFrom": "observations", + "tableTo": "captures", + "columnsFrom": [ + "capture_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "observations_observed_by_users_username_fk": { + "name": "observations_observed_by_users_username_fk", + "tableFrom": "observations", + "tableTo": "users", + "columnsFrom": [ + "observed_by" + ], + "columnsTo": [ + "username" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.tag_assignments": { + "name": "tag_assignments", + "schema": "", + "columns": { + "tag_id": { + "name": "tag_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "identification_id": { + "name": "identification_id", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "tag_assignments_tag_id_tags_id_fk": { + "name": "tag_assignments_tag_id_tags_id_fk", + "tableFrom": "tag_assignments", + "tableTo": "tags", + "columnsFrom": [ + "tag_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "tag_assignments_identification_id_identifications_id_fk": { + "name": "tag_assignments_identification_id_identifications_id_fk", + "tableFrom": "tag_assignments", + "tableTo": "identifications", + "columnsFrom": [ + "identification_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.tags": { + "name": "tags", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "tag_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.users": { + "name": "users", + "schema": "", + "columns": { + "username": { + "name": "username", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "role": { + "name": "role", + "type": "role", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "points": { + "name": "points", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + } + }, + "enums": { + "public.capture_status": { + "name": "capture_status", + "schema": "public", + "values": [ + "draft", + "pending", + "processing", + "complete", + "archived" + ] + }, + "public.status": { + "name": "status", + "schema": "public", + "values": [ + "offline", + "unhealthy", + "healthy" + ] + }, + "public.role": { + "name": "role", + "schema": "public", + "values": [ + "capturer", + "member", + "expert", + "moderator", + "researcher", + "admin" + ] + }, + "public.tag_type": { + "name": "tag_type", + "schema": "public", + "values": [ + "generic", + "event", + "campaign" + ] + } + }, + "schemas": {}, + "sequences": {}, + "_meta": { + "columns": {}, + "schemas": {}, + "tables": {} + } +} \ No newline at end of file diff --git a/census/api/drizzle/meta/_journal.json b/census/api/drizzle/meta/_journal.json index 2d0fa09..2682835 100644 --- a/census/api/drizzle/meta/_journal.json +++ b/census/api/drizzle/meta/_journal.json @@ -15,6 +15,69 @@ "when": 1726850045487, "tag": "0001_lucky_captain_stacy", "breakpoints": true + }, + { + "idx": 2, + "version": "7", + "when": 1729972994349, + "tag": "0002_third_cloak", + "breakpoints": true + }, + { + "idx": 3, + "version": "7", + "when": 1730154405334, + "tag": "0003_tearful_tusk", + "breakpoints": true + }, + { + "idx": 4, + "version": "7", + "when": 1730154432881, + "tag": "0004_black_preak", + "breakpoints": true + }, + { + "idx": 5, + "version": "7", + "when": 1730480767684, + "tag": "0005_gigantic_edwin_jarvis", + "breakpoints": true + }, + { + "idx": 6, + "version": "7", + "when": 1730583762309, + "tag": "0006_regular_wiccan", + "breakpoints": true + }, + { + "idx": 7, + "version": "7", + "when": 1730583951985, + "tag": "0007_stale_albert_cleary", + "breakpoints": true + }, + { + "idx": 8, + "version": "7", + "when": 1730742033175, + "tag": "0008_aromatic_kree", + "breakpoints": true + }, + { + "idx": 9, + "version": "7", + "when": 1730758774883, + "tag": "0009_thin_carnage", + "breakpoints": true + }, + { + "idx": 10, + "version": "7", + "when": 1730759232753, + "tag": "0010_dazzling_green_goblin", + "breakpoints": true } ] } \ No newline at end of file diff --git a/census/api/package.json b/census/api/package.json index dff6596..9f9edda 100644 --- a/census/api/package.json +++ b/census/api/package.json @@ -6,24 +6,31 @@ "main": "src/index.ts", "types": "src/index.ts", "dependencies": { - "@azure/storage-blob": "^12.24.0", + "@alveusgg/census-levels": "workspace:*", "@alveusgg/node": "workspace:*", + "@azure/storage-blob": "^12.24.0", "@fastify/cors": "^9.0.1", "@inquirer/prompts": "^5.5.0", "@trpc/client": "11.0.0-rc.490", "@trpc/server": "11.0.0-rc.490", + "@twurple/api": "^7.2.0", "@twurple/auth": "^7.1.0", "@twurple/chat": "^7.1.0", + "@types/yauzl": "^2.10.3", "date-fns": "^3.6.0", "debug": "^4.3.6", "dotenv": "^16.4.5", "drizzle-orm": "^0.33.0", + "env-paths": "^3.0.0", + "extract-zip": "^2.0.1", "fastify": "^4.28.1", + "fluent-ffmpeg": "^2.1.3", "ioredis": "^5.4.1", "npm": "^10.8.3", "oslo": "^1.2.1", "postgres": "^3.4.4", "tsx": "^4.19.0", + "yauzl": "^3.1.3", "zod": "^3.23.8" }, "scripts": { @@ -38,6 +45,7 @@ "license": "ISC", "devDependencies": { "@types/debug": "^4.1.12", + "@types/fluent-ffmpeg": "^2.1.27", "@types/node": "^22.5.1", "drizzle-kit": "^0.24.2" } diff --git a/census/api/src/api/capture.ts b/census/api/src/api/capture.ts index 5f715e3..177875c 100644 --- a/census/api/src/api/capture.ts +++ b/census/api/src/api/capture.ts @@ -1,14 +1,15 @@ import { z } from 'zod'; import { subscribeToChanges } from '../db/listen.js'; -import { createCapture, getCapture } from '../services/capture/index.js'; -import { editorProcedure, procedure, router } from '../trpc/trpc.js'; +import { completeCaptureRequest, createFromClip, getCapture } from '../services/capture/index.js'; +import { downloadClip } from '../services/twitch/clips.js'; +import { procedure, router } from '../trpc/trpc.js'; export default router({ capture: procedure.input(z.object({ id: z.number() })).query(async ({ input }) => { return getCapture(input.id); }), live: { - capture: procedure.input(z.object({ id: z.number() })).subscription(async function* ({ ctx, input }) { + capture: procedure.input(z.object({ id: z.number() })).subscription(async function* ({ input }) { const capture = await getCapture(input.id); if (capture.status === 'complete') return; @@ -20,28 +21,25 @@ export default router({ }) }, - snapshotToCapture: editorProcedure - .input( - z.object({ - snapshotId: z.number(), - name: z.string().optional(), - images: z.array( - z.object({ - url: z.string(), - boundingBoxes: z.array( - z.object({ - id: z.string(), - x: z.number(), - y: z.number(), - width: z.number(), - height: z.number() - }) - ) - }) - ) - }) - ) + createFromClip: procedure + .input(z.object({ id: z.string(), userIsVerySureItIsNeeded: z.boolean().optional() })) .mutation(async ({ input }) => { - return createCapture(input); - }) + const clip = await createFromClip(input.id, input.userIsVerySureItIsNeeded); + + if (clip.result === 'success') { + downloadClip(input.id).then(url => { + completeCaptureRequest(clip.capture.id, url); + }); + } + return clip; + }), + + addPoints: procedure.input(z.object({ points: z.number() })).mutation(async ({ input, ctx }) => { + points += input.points; + ctx.points(points); + await new Promise(resolve => setTimeout(resolve, 300)); + return { hello: 'world' }; + }) }); + +let points = 0; diff --git a/census/api/src/api/chat.ts b/census/api/src/api/chat.ts deleted file mode 100644 index 4b3b971..0000000 --- a/census/api/src/api/chat.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { status } from '../services/chat/index.js'; -import { moderatorProcedure, router } from '../trpc/trpc.js'; - -export default router({ - status: moderatorProcedure.query(async () => { - return status; - }) -}); diff --git a/census/api/src/api/feed.ts b/census/api/src/api/feed.ts index 774c7bf..6191789 100644 --- a/census/api/src/api/feed.ts +++ b/census/api/src/api/feed.ts @@ -1,8 +1,8 @@ import z from 'zod'; import { subscribeToChanges } from '../db/listen.js'; -import { completeCaptureRequest, getCapture } from '../services/snapshot/index.js'; -import { getCreateOnlySasURL } from '../services/snapshot/storage.js'; +import { completeCaptureRequest, getCapture } from '../services/capture/index.js'; import { integrationProcedure, router } from '../trpc/trpc.js'; +import { getCreateOnlySasURL } from '../utils/storage.js'; export default router({ subscribeToRequestsForFeed: integrationProcedure diff --git a/census/api/src/api/identification.ts b/census/api/src/api/identification.ts new file mode 100644 index 0000000..57a557f --- /dev/null +++ b/census/api/src/api/identification.ts @@ -0,0 +1,18 @@ +import { z } from 'zod'; +import { recordAchievement } from '../services/points/achievement.js'; +import { procedure, router } from '../trpc/trpc'; + +export default router({ + vote: procedure + .input( + z.object({ + id: z.string(), + vote: z.enum(['up', 'down']), + comment: z.string().optional() + }) + ) + .mutation(async ({ input, ctx }) => { + const points = await recordAchievement('vote', ctx.user); + ctx.points(points); + }) +}); diff --git a/census/api/src/api/index.ts b/census/api/src/api/index.ts index ded7206..187b1d9 100644 --- a/census/api/src/api/index.ts +++ b/census/api/src/api/index.ts @@ -1,14 +1,13 @@ import { router } from '../trpc/trpc.js'; import capture from './capture.js'; -import chat from './chat.js'; import feed from './feed.js'; import me from './me.js'; import observation from './observation.js'; - +import twitch from './twitch.js'; export default router({ me, feed, capture, - chat, - observation + observation, + twitch }); diff --git a/census/api/src/api/me.ts b/census/api/src/api/me.ts index 4a2dc83..9c7524b 100644 --- a/census/api/src/api/me.ts +++ b/census/api/src/api/me.ts @@ -1,8 +1,41 @@ +import { z } from 'zod'; import { getPermissions } from '../services/auth/role.js'; +import { + getAllAchievements, + getPendingAchievements, + redeemAchievementAndAwardPoints, + redeemAll +} from '../services/points/achievement.js'; +import { getPointsForUser } from '../services/points/points.js'; import { procedure, router } from '../trpc/trpc.js'; import { useUser } from '../utils/env/env.js'; export default router({ + points: procedure.query(async () => { + const user = useUser(); + return getPointsForUser(user.id); + }), + achievements: { + pending: procedure.query(async () => { + const user = useUser(); + return getPendingAchievements(user.id); + }), + all: procedure.query(async () => { + const user = useUser(); + return getAllAchievements(user.id); + }), + redeem: procedure.input(z.number()).mutation(async ({ input, ctx }) => { + const user = useUser(); + const points = await redeemAchievementAndAwardPoints(user.id, input); + ctx.points(points); + }), + redeemAll: procedure.mutation(async ({ ctx }) => { + const user = useUser(); + const points = await redeemAll(user.id); + ctx.points(points); + ctx.achievements(); + }) + }, permissions: procedure.query(async () => { const user = useUser(); return getPermissions(user.id); diff --git a/census/api/src/api/observation.ts b/census/api/src/api/observation.ts index ceea186..5ca38a1 100644 --- a/census/api/src/api/observation.ts +++ b/census/api/src/api/observation.ts @@ -1,15 +1,11 @@ import { z } from 'zod'; -import { getTaxaFromPartialSearch } from '../services/inat/index.js'; +import { createObservationsFromCapture, ObservationPayload } from '../services/observations/observations.js'; import { editorProcedure, router } from '../trpc/trpc.js'; export default router({ - search: editorProcedure - .input( - z.object({ - search: z.string() - }) - ) - .query(async ({ input }) => { - return await getTaxaFromPartialSearch(input.search); + createObservationsFromCapture: editorProcedure + .input(z.object({ captureId: z.number(), observations: z.array(ObservationPayload) })) + .mutation(async ({ input }) => { + return await createObservationsFromCapture(input.captureId, input.observations); }) }); diff --git a/census/api/src/api/twitch.ts b/census/api/src/api/twitch.ts new file mode 100644 index 0000000..4bc6b22 --- /dev/null +++ b/census/api/src/api/twitch.ts @@ -0,0 +1,11 @@ +import { z } from 'zod'; +import { getClip, getVOD } from '../services/twitch'; +import { procedure, router } from '../trpc/trpc'; +export default router({ + clip: procedure.input(z.object({ id: z.string() })).query(async ({ input }) => { + return getClip(input.id); + }), + vod: procedure.input(z.object({ id: z.string() })).query(async ({ input }) => { + return getVOD(input.id); + }) +}); diff --git a/census/api/src/db/listen.ts b/census/api/src/db/listen.ts index 31ea858..ada9e74 100644 --- a/census/api/src/db/listen.ts +++ b/census/api/src/db/listen.ts @@ -47,7 +47,6 @@ interface Change { export const listen = async (row: Row | null, info: ReplicationEvent) => { if (!row || !row.id) { - console.warn('No row or id', row, info); return; } diff --git a/census/api/src/db/schema/index.ts b/census/api/src/db/schema/index.ts index 7412a37..c912b45 100644 --- a/census/api/src/db/schema/index.ts +++ b/census/api/src/db/schema/index.ts @@ -1,5 +1,6 @@ import { relations } from 'drizzle-orm'; -import { index, integer, json, pgEnum, pgTable, serial, text, timestamp } from 'drizzle-orm/pg-core'; +import { boolean, index, integer, json, numeric, pgEnum, pgTable, serial, text, timestamp } from 'drizzle-orm/pg-core'; +import { z } from 'zod'; export const feedStatusEnum = pgEnum('status', ['offline', 'unhealthy', 'healthy']); @@ -20,54 +21,74 @@ export const feedsRelations = relations(feeds, ({ one }) => ({ export const roleEnum = pgEnum('role', ['capturer', 'member', 'expert', 'moderator', 'researcher', 'admin']); -export const roles = pgTable('roles', { +export const users = pgTable('users', { username: text('username').primaryKey(), - role: roleEnum('role').notNull() + role: roleEnum('role').notNull(), + + points: integer('points').default(0).notNull() }); -export const captureStatusEnum = pgEnum('capture_status', ['pending', 'processing', 'complete', 'archived']); +export const captureStatusEnum = pgEnum('capture_status', ['draft', 'pending', 'processing', 'complete', 'archived']); -export const captures = pgTable('captures', { - id: serial('id').primaryKey(), - capturedAt: timestamp('captured_at').notNull(), - capturedBy: text('captured_by').notNull(), +export const captures = pgTable( + 'captures', + { + id: serial('id').primaryKey(), + capturedAt: timestamp('captured_at').notNull(), + capturedBy: text('captured_by').notNull(), - status: captureStatusEnum('status').default('pending').notNull(), - feedId: text('feed_id') - .notNull() - .references(() => feeds.id), - startCaptureAt: timestamp('start_capture_at').notNull(), - endCaptureAt: timestamp('end_capture_at').notNull(), + status: captureStatusEnum('status').default('pending').notNull(), + feedId: text('feed_id') + .notNull() + .references(() => feeds.id), + startCaptureAt: timestamp('start_capture_at').notNull(), + endCaptureAt: timestamp('end_capture_at').notNull(), - videoUrl: text('video_url'), - clipUrl: text('clip_url').unique('clip_url_unique_idx', { nulls: 'not distinct' }) -}); + videoUrl: text('video_url'), + clipId: text('clip_id').unique().notNull(), + clipMetadata: json('clip_metadata').$type<{ views: number; thumbnail: string }>().notNull() + }, + table => ({ + clipIdIdx: index('clip_id_idx').on(table.clipId) + }) +); -export const capturesRelations = relations(captures, ({ one }) => ({ +export type Capture = typeof captures.$inferSelect; + +export const capturesRelations = relations(captures, ({ one, many }) => ({ feed: one(feeds, { fields: [captures.feedId], references: [feeds.id] }), - capturer: one(roles, { + capturer: one(users, { fields: [captures.capturedBy], - references: [roles.username] - }) + references: [users.username] + }), + observations: many(observations) })); export const observations = pgTable('observations', { id: serial('id').primaryKey(), - nickname: text('nickname').notNull(), + nickname: text('nickname'), captureId: integer('capture_id') .references(() => captures.id) .notNull(), - discordThreadId: text('discord_thread_id').unique('discord_thread_id_unique_idx', { nulls: 'not distinct' }) + observedAt: timestamp('observed_at').notNull(), + observedBy: text('observed_by') + .notNull() + .references(() => users.username), + + removed: boolean('removed').default(false).notNull(), + moderated: json('moderated').$type<{ username: string; type: string; message: string }[]>().default([]).notNull(), + discordThreadId: text('discord_thread_id') }); -export const observationsRelations = relations(observations, ({ one }) => ({ +export const observationsRelations = relations(observations, ({ one, many }) => ({ capture: one(captures, { fields: [observations.captureId], references: [captures.id] - }) + }), + images: many(images) })); export const identifications = pgTable( @@ -83,9 +104,10 @@ export const identifications = pgTable( .notNull(), suggestedBy: text('suggested_by') .notNull() - .references(() => roles.username), - confirmedBy: text('confirmed_by').references(() => roles.username), - alternateFor: integer('alternate_for'), + .references(() => users.username), + confirmedBy: text('confirmed_by').references(() => users.username), + alternateForId: integer('alternate_for'), + accessoryForId: integer('accessory_for'), upvotes: json('upvotes').$type().default([]).notNull(), downvotes: json('downvotes').$type().default([]).notNull() @@ -130,36 +152,45 @@ export const identificationsRelations = relations(identifications, ({ one, many fields: [identifications.observationId], references: [observations.id] }), - confirmer: one(roles, { + confirmer: one(users, { fields: [identifications.confirmedBy], - references: [roles.username] + references: [users.username] }), - suggester: one(roles, { + suggester: one(users, { fields: [identifications.suggestedBy], - references: [roles.username] + references: [users.username] }), alternateFor: one(identifications, { - fields: [identifications.alternateFor], + fields: [identifications.alternateForId], + references: [identifications.id] + }), + accessoryFor: one(identifications, { + fields: [identifications.accessoryForId], references: [identifications.id] }), + accessoryIdentifications: many(identifications), tags: many(tagAssignments) })); -export interface BoundingBox { - id: string; - x: number; - y: number; - width: number; - height: number; -} +export const BoundingBox = z.object({ + id: z.string(), + x: z.number(), + y: z.number(), + width: z.number(), + height: z.number() +}); + +export type BoundingBox = z.infer; export const images = pgTable('images', { id: serial('id').primaryKey(), url: text('url').notNull(), - frame: integer('frame').notNull(), + timestamp: numeric('timestamp').notNull(), + width: integer('width').notNull(), + height: integer('height').notNull(), observationId: integer('observation_id').notNull(), identificationId: integer('identification_id'), - boundingBoxes: json('bounding_boxes').$type().default([]).notNull() + boundingBox: json('bounding_box').$type().notNull() }); export const imagesRelations = relations(images, ({ one }) => ({ @@ -172,3 +203,78 @@ export const imagesRelations = relations(images, ({ one }) => ({ references: [identifications.id] }) })); + +export const achievements = pgTable( + 'achievements', + { + id: serial('id').primaryKey(), + username: text('username') + .notNull() + .references(() => users.username), + type: text('type').notNull(), + identificationId: integer('identification_id').references(() => identifications.id), + observationId: integer('observation_id').references(() => observations.id), + + points: integer('points').notNull(), + createdAt: timestamp('created_at').defaultNow().notNull(), + redeemed: boolean('redeemed').default(false).notNull(), + revoked: boolean('revoked').default(false).notNull() + }, + table => { + return { + usernameIdx: index('username_achievements_idx').on(table.username), + typeIdx: index('type_achievements_idx').on(table.type), + pointsIdx: index('points_achievements_idx').on(table.points) + }; + } +); + +export const achievementsRelations = relations(achievements, ({ one }) => ({ + identification: one(identifications, { + fields: [achievements.identificationId], + references: [identifications.id] + }), + observation: one(observations, { + fields: [achievements.observationId], + references: [observations.id] + }) +})); + +export const events = pgTable( + 'events', + { + id: serial('id').primaryKey(), + username: text('username') + .notNull() + .references(() => users.username), + type: text('type').notNull(), + createdAt: timestamp('created_at').defaultNow().notNull(), + payload: json('payload').notNull() + }, + table => { + return { + usernameIdx: index('username_events_idx').on(table.username), + typeIdx: index('type_events_idx').on(table.type) + }; + } +); + +export const notifications = pgTable( + 'notifications', + { + id: serial('id').primaryKey(), + username: text('username') + .notNull() + .references(() => users.username), + type: text('type').notNull(), + read: boolean('read').default(false).notNull(), + createdAt: timestamp('created_at').defaultNow().notNull(), + + payload: json('payload').notNull() + }, + table => { + return { + usernameIdx: index('username_notifications_idx').on(table.username) + }; + } +); diff --git a/census/api/src/db/transaction.ts b/census/api/src/db/transaction.ts new file mode 100644 index 0000000..0de4bd0 --- /dev/null +++ b/census/api/src/db/transaction.ts @@ -0,0 +1,19 @@ +import { createStore } from '@alveusgg/node'; +import { ExtractTablesWithRelations } from 'drizzle-orm'; +import { PgTransaction } from 'drizzle-orm/pg-core'; +import { PostgresJsQueryResultHKT } from 'drizzle-orm/postgres-js'; +import { useEnvironment } from '../utils/env/env'; +import * as schema from './schema'; + +const TransactionStore = + createStore>>( + 'transaction' + ); +export const [withTransaction, useRawTransaction] = TransactionStore; +export const useDB = () => { + try { + return useRawTransaction(); + } catch { + return useEnvironment().db; + } +}; diff --git a/census/api/src/index.ts b/census/api/src/index.ts index 03f41a9..243992f 100644 --- a/census/api/src/index.ts +++ b/census/api/src/index.ts @@ -5,11 +5,8 @@ import cors from '@fastify/cors'; import { fastifyTRPCPlugin, FastifyTRPCPluginOptions } from '@trpc/server/adapters/fastify'; import fastify from 'fastify'; import router from './api/index.js'; -import { start } from './services/chat/index.js'; -import { createContext } from './trpc/context.js'; - import authRouter from './services/auth/router.js'; -import adminRouter from './services/chat/auth/router.js'; +import { createContext } from './trpc/context.js'; // Export type router type signature, // NOT the router itself. export type AppRouter = typeof router; @@ -22,9 +19,11 @@ import { createEnvironment, withEnvironment } from './utils/env/env.js'; await withEnvironment(environment, async () => { const options = { maxParamLength: 5000 }; const server = fastify(options); - await server.register(cors); + await server.register(cors, { + allowedHeaders: ['authorization', 'content-type'], + exposedHeaders: ['X-Census-Points', 'X-Census-Achievements'] + }); await server.register(authRouter); - await server.register(adminRouter); await server.register(fastifyTRPCPlugin, { trpcOptions: { router, @@ -38,8 +37,6 @@ import { createEnvironment, withEnvironment } from './utils/env/env.js'; process.exit(1); } console.log(`Server listening on ${address}`); - - await start(); }); }); } catch (err) { diff --git a/census/api/src/scripts/api.ts b/census/api/src/scripts/api.ts index f50a156..8366177 100644 --- a/census/api/src/scripts/api.ts +++ b/census/api/src/scripts/api.ts @@ -2,7 +2,7 @@ import { config } from 'dotenv'; config(); import { input } from '@inquirer/prompts'; -import { roles } from '../db/schema/index.js'; +import { users } from '../db/schema/index.js'; import { createEnvironment } from '../utils/env/env.js'; const seed = async () => { @@ -11,7 +11,7 @@ const seed = async () => { message: 'What is your twitch username?' }); - await environment.db.insert(roles).values({ + await environment.db.insert(users).values({ role: 'admin', username }); diff --git a/census/api/src/services/auth/role.ts b/census/api/src/services/auth/role.ts index d06860a..228473e 100644 --- a/census/api/src/services/auth/role.ts +++ b/census/api/src/services/auth/role.ts @@ -1,10 +1,10 @@ import { eq } from 'drizzle-orm'; -import { roles } from '../../db/schema/index.js'; +import { users } from '../../db/schema/index.js'; import { useEnvironment } from '../../utils/env/env.js'; export const getPermissions = async (userId: string) => { const env = useEnvironment(); - const [role] = await env.db.select().from(roles).where(eq(roles.username, userId)); + const [user] = await env.db.select().from(users).where(eq(users.username, userId)); const permissions = { editor: false, @@ -12,9 +12,9 @@ export const getPermissions = async (userId: string) => { administrate: false }; - if (!role) return permissions; + if (!user) return permissions; - if (role.role === 'admin') { + if (user.role === 'admin') { permissions.editor = true; permissions.moderator = true; permissions.administrate = true; @@ -22,13 +22,13 @@ export const getPermissions = async (userId: string) => { return permissions; } - if (role.role === 'moderator') { + if (user.role === 'moderator') { permissions.editor = true; permissions.moderator = true; return permissions; } - if (role.role === 'capturer') { + if (user.role === 'capturer') { permissions.editor = true; return permissions; } diff --git a/census/api/src/services/auth/router.ts b/census/api/src/services/auth/router.ts index 71ebfe2..84922ed 100644 --- a/census/api/src/services/auth/router.ts +++ b/census/api/src/services/auth/router.ts @@ -14,27 +14,27 @@ const TwitchRedirectResponse = z.object({ const SignInRequest = z.object({ from: z.string().optional() }); +const cache = new Map(); export default async function register(router: FastifyInstance) { router.get('/auth/signin', async (request, reply) => { - const { redis } = useEnvironment(); const key = crypto.randomUUID(); const state: { key: string; from?: string } = { key }; const { from } = SignInRequest.parse(request.query); if (from) state.from = from; - redis.set(key, JSON.stringify(state), 'EX', 10 * 60); + cache.set(key, JSON.stringify(state)); const url = createSignInRequest('/auth/redirect', key); return reply.redirect(url); }); router.get('/auth/redirect', async (request, reply) => { - const { redis, variables } = useEnvironment(); + const { variables } = useEnvironment(); const query = TwitchRedirectResponse.parse(request.query); - const state = await redis.get(query.state); + const state = cache.get(query.state); if (!state) throw new Error('Login expired or invalid.'); const token = await exchangeCodeForToken('/auth/redirect', query.code); @@ -55,7 +55,7 @@ export default async function register(router: FastifyInstance) { params.set('token', jwt); if (from) params.set('from', from); - redis.del(query.state); + cache.delete(query.state); return reply.redirect(`${variables.UI_URL}/auth/redirect?${params.toString()}`); }); diff --git a/census/api/src/services/capture/index.ts b/census/api/src/services/capture/index.ts index 1db4081..7d3245b 100644 --- a/census/api/src/services/capture/index.ts +++ b/census/api/src/services/capture/index.ts @@ -1,48 +1,197 @@ -import { eq } from 'drizzle-orm'; -import { BoundingBox, captures } from '../../db/schema/index.js'; -import { useEnvironment } from '../../utils/env/env.js'; - -interface Images { - url: string; - boundingBoxes: BoundingBox[]; -} - -interface CreateCaptureInput { - snapshotId: number; - images: Images[]; - name?: string; -} - -export const createCapture = async (input: CreateCaptureInput) => { - // const { db } = useEnvironment(); - // const snapshot = await db.query.snapshots.findFirst({ - // where: eq(snapshots.id, input.snapshotId) - // }); - // if (!snapshot) throw new Error('Snapshot not found'); - // return await db.transaction(async tx => { - // const [capture] = await tx - // .insert(captures) - // .values({ - // createdAt: snapshot.createdAt, - // createdBy: snapshot.createdBy, - // name: input.name - // }) - // .returning(); - // await tx - // .insert(images) - // .values( - // input.images.map(image => ({ url: image.url, captureId: capture.id, boundingBoxes: image.boundingBoxes })) - // ); - // await tx.update(snapshots).set({ captureId: capture.id }).where(eq(snapshots.id, input.snapshotId)); - // return capture; - // }); +import { and, eq, gte, lte, or } from 'drizzle-orm'; +import { Capture, captures } from '../../db/schema/index.js'; +import { useDB } from '../../db/transaction.js'; +import { useUser } from '../../utils/env/env.js'; +import { getClip } from '../twitch/index.js'; + +interface ClipAlreadyUsedResult { + result: 'error'; + type: 'clip_already_used'; + capture: Capture; +} + +interface ClipOverlapsWithOtherCaptureResult { + result: 'error'; + type: 'clip_overlaps_with_other_capture'; + captures: Capture[]; +} + +interface ClipIncludedInOtherCaptureResult { + result: 'error'; + type: 'clip_included_in_other_capture'; + captures: Capture[]; +} + +interface ClipContainsOtherCaptureResult { + result: 'error'; + type: 'clip_contains_other_capture'; + captures: Capture[]; +} + +export interface ClipNotFoundResult { + result: 'error'; + type: 'clip_not_found'; +} + +export interface ClipNotProcessedResult { + result: 'error'; + type: 'clip_not_processed'; +} + +export interface VODNotFoundResult { + result: 'error'; + type: 'vod_not_found'; +} + +interface SuccessResult { + result: 'success'; + capture: Capture; +} + +type CreateFromClipResult = + | ClipAlreadyUsedResult + | ClipOverlapsWithOtherCaptureResult + | ClipIncludedInOtherCaptureResult + | ClipContainsOtherCaptureResult + | ClipNotFoundResult + | ClipNotProcessedResult + | VODNotFoundResult + | SuccessResult; + +export const createFromClip = async ( + id: string, + userIsVerySureItIsNeeded: boolean = false +): Promise => { + const db = useDB(); + const existing = await getCaptureByClipId(id); + + // The clip has already been used in a capture, so we can't use it again + // The website redirects to the capture included in the error + if (existing) { + return { + result: 'error', + type: 'clip_already_used', + capture: existing + }; + } + + // This can fail if the clip is deleted from twitch or the vod isn't available + const result = await getClip(id); + if (result.result === 'error') { + // error could be clip_not_found, clip_not_processed, or vod_not_found + return result; + } + const clip = result.clip; + // If the clip is fully encompassed by another capture (e.g. it's a shorter clip of a longer clip) we can't use it + // The website redirects to the capture included in the error + const encompassing = await getEncompassingCaptures(clip.startDate, clip.endDate); + if (encompassing.length > 0) { + return { + result: 'error', + type: 'clip_included_in_other_capture', + captures: encompassing + }; + } + + // If the clip overlaps with another capture (e.g. part of this clip overlaps with another clip) we _may_ not want to use it + // The website will show a warning and the existing captures, and let the user decide if they want to use it anyway + const overlapping = await getOverlappingCaptures(clip.startDate, clip.endDate); + if (overlapping.length > 0 && !userIsVerySureItIsNeeded) { + return { + result: 'error', + type: 'clip_overlaps_with_other_capture', + captures: overlapping + }; + } + + // If the clip includes other captures (e.g. it's a longer clip that includes multiple other clips) we _may_ not want to use it + // The website will show a warning and the existing captures, and let the user decide if they want to use it anyway + const encompassed = await getEncompassedByCaptures(clip.startDate, clip.endDate); + if (encompassed.length > 0 && !userIsVerySureItIsNeeded) { + return { + result: 'error', + type: 'clip_contains_other_capture', + captures: encompassed + }; + } + + const user = useUser(); + // If we've made it this far, we can create the capture + const [capture] = await db + .insert(captures) + .values({ + clipId: id, + startCaptureAt: clip.startDate, + endCaptureAt: clip.endDate, + capturedAt: new Date(), + capturedBy: user.id, + feedId: 'pollinator', + clipMetadata: { views: clip.views, thumbnail: clip.thumbnailUrl } + }) + .returning(); + + return { + result: 'success', + capture + }; }; export const getCapture = async (id: number) => { - const { db } = useEnvironment(); + const db = useDB(); const capture = await db.query.captures.findFirst({ - where: eq(captures.id, id) + where: eq(captures.id, id), + with: { + observations: { + with: { + images: true + } + } + } }); if (!capture) throw new Error('Capture not found'); return capture; }; + +export const getCaptureByClipId = async (id: string) => { + const db = useDB(); + return await db.query.captures.findFirst({ + where: eq(captures.clipId, id) + }); +}; + +// Returns captures that fully contain the given date range +export const getEncompassingCaptures = async (startDate: Date, endDate: Date) => { + const db = useDB(); + return await db.query.captures.findMany({ + where: and(lte(captures.startCaptureAt, startDate), gte(captures.endCaptureAt, endDate)) + }); +}; + +// Returns captures that are fully encompassed by the given date range +export const getEncompassedByCaptures = async (startDate: Date, endDate: Date) => { + const db = useDB(); + return await db.query.captures.findMany({ + where: and(gte(captures.startCaptureAt, startDate), lte(captures.endCaptureAt, endDate)) + }); +}; + +// Returns captures that have to start or end date within their date ranges +export const getOverlappingCaptures = async (startDate: Date, endDate: Date) => { + const db = useDB(); + return await db.query.captures.findMany({ + where: or( + and(gte(captures.endCaptureAt, startDate), lte(captures.startCaptureAt, startDate)), + and(gte(captures.startCaptureAt, endDate), lte(captures.endCaptureAt, endDate)) + ) + }); +}; + +export const processingCaptureRequest = async (id: number) => { + const db = useDB(); + await db.update(captures).set({ status: 'processing' }).where(eq(captures.id, id)); +}; + +export const completeCaptureRequest = async (id: number, videoUrl: string) => { + const db = useDB(); + await db.update(captures).set({ status: 'complete', videoUrl }).where(eq(captures.id, id)); +}; diff --git a/census/api/src/services/chat/auth/router.ts b/census/api/src/services/chat/auth/router.ts deleted file mode 100644 index a34dd21..0000000 --- a/census/api/src/services/chat/auth/router.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { FastifyInstance } from 'fastify'; -import { z } from 'zod'; -import { useEnvironment } from '../../../utils/env/env.js'; -import { createSignInRequest, exchangeCodeForToken, getUserInformation, validateToken } from '../../auth/auth.js'; -import { start, status } from '../index.js'; -import { saveToken } from './token.js'; - -const TwitchRedirectResponse = z.object({ - code: z.string(), - scope: z.string() -}); - -export default async function register(router: FastifyInstance) { - router.get('/admin/signin', async (_, reply) => { - const url = createSignInRequest('/admin/redirect', crypto.randomUUID()); - return reply.redirect(url); - }); - - router.get('/admin/redirect', async (request, reply) => { - const env = useEnvironment(); - const query = TwitchRedirectResponse.parse(request.query); - const token = await exchangeCodeForToken('/admin/redirect', query.code); - if (!(await validateToken(token.accessToken))) { - throw new Error('Invalid token'); - } - - const user = await getUserInformation(token.accessToken); - if (user.login !== env.variables.TWITCH_USERNAME) { - throw new Error('Invalid user'); - } - - await saveToken(token); - - if (status.status === 'offline:not_authenticated') { - await start(); - } - return reply.send(`Thank you for signing in!`); - }); -} diff --git a/census/api/src/services/chat/auth/token.ts b/census/api/src/services/chat/auth/token.ts deleted file mode 100644 index a0c43b6..0000000 --- a/census/api/src/services/chat/auth/token.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { z } from 'zod'; -import { useEnvironment } from '../../../utils/env/env.js'; - -const TwitchAccessToken = z.object({ - accessToken: z.string(), - refreshToken: z.string().nullable(), - expiresIn: z.number().nullable(), - scope: z.array(z.string()), - obtainmentTimestamp: z.number() -}); - -export const saveToken = async (token: z.infer) => { - const env = useEnvironment(); - await env.redis.set('twitch:token', JSON.stringify(token)); -}; - -export const restoreToken = async () => { - const env = useEnvironment(); - const token = await env.redis.get('twitch:token'); - if (!token) return; - - const parsed = TwitchAccessToken.safeParse(JSON.parse(token)); - if (!parsed.success) { - console.warn(`Invalid token in redis: ${token}`); - return; - } - return parsed.data; -}; diff --git a/census/api/src/services/chat/index.ts b/census/api/src/services/chat/index.ts deleted file mode 100644 index f06a474..0000000 --- a/census/api/src/services/chat/index.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { RefreshingAuthProvider } from '@twurple/auth'; -import { ChatClient } from '@twurple/chat'; -import { useEnvironment } from '../../utils/env/env.js'; -import { getPermissions } from '../auth/role.js'; -import { createCaptureRequest } from '../snapshot/index.js'; -import { restoreToken, saveToken } from './auth/token.js'; -interface Status { - status: 'pending' | 'offline:not_authenticated' | 'offline' | 'online'; - channels: string[]; - commands: string[]; -} - -const handler: Record Promise> = { - capture: async (chat: ChatClient, channel: string, user: string) => { - const env = useEnvironment(); - const permissions = await getPermissions(user); - - if (!permissions.editor) { - return; - } - - const request = await createCaptureRequest('twitch', user, 30, 30); - chat.say(channel, `@${user} Critter captured! ${env.variables.UI_URL}/s/${request.id}`); - } -}; - -export const status: Status = { - status: 'pending', - channels: [], - commands: Object.keys(handler) -}; - -export const start = async () => { - const env = useEnvironment(); - - const token = await restoreToken(); - if (!token) { - status.status = 'offline:not_authenticated'; - return; - } - - const auth = new RefreshingAuthProvider({ - clientId: env.variables.TWITCH_CLIENT_ID, - clientSecret: env.variables.TWITCH_CLIENT_SECRET - }); - - auth.onRefresh((_, token) => saveToken(token)); - await auth.addUserForToken(token, ['chat']); - - const chat = new ChatClient({ authProvider: auth, channels: env.variables.CHANNELS_TO_LISTEN_TO }); - status.channels = env.variables.CHANNELS_TO_LISTEN_TO; - chat.onConnect(() => (status.status = 'online')); - - chat.onDisconnect(() => (status.status = 'offline')); - - chat.connect(); - - chat.onMessage(async (channel, user, message) => { - const env = useEnvironment(); - if (!message.startsWith(env.variables.COMMAND_PREFIX)) return; - - for (const command of status.commands) { - if (message.startsWith(`${env.variables.COMMAND_PREFIX}${command}`)) { - await handler[command](chat, channel, user, message); - } - } - }); -}; diff --git a/census/api/src/services/identifications/identifications.ts b/census/api/src/services/identifications/identifications.ts new file mode 100644 index 0000000..e69de29 diff --git a/census/api/src/services/observations/observations.ts b/census/api/src/services/observations/observations.ts new file mode 100644 index 0000000..ba3ad17 --- /dev/null +++ b/census/api/src/services/observations/observations.ts @@ -0,0 +1,154 @@ +import { eq } from 'drizzle-orm'; +import { ReadableStream } from 'node:stream/web'; +import { Readable } from 'stream'; +import { BoundingBox, images, observations } from '../../db/schema'; +import { useDB, withTransaction } from '../../db/transaction'; +import { getTemporaryFile, TemporaryFile } from '../../utils/tmp'; +import { getCapture } from '../capture'; + +const Selection = z.object({ + timestamp: z.number(), + boundingBox: BoundingBox +}); + +export type Selection = z.infer; + +export const ObservationPayload = z.array(Selection); + +export type ObservationPayload = z.infer; + +export const getObservation = async (id: number) => { + const db = useDB(); + return await db.query.observations.findFirst({ + where: eq(observations.id, id), + with: { images: true, capture: true } + }); +}; + +export const createObservationsFromCapture = async (captureId: number, observations: ObservationPayload[]) => { + const db = useDB(); + + return await db.transaction(async tx => + withTransaction(tx, async () => { + return await Promise.all( + observations.map(async selections => { + return await createObservations(captureId, selections); + }) + ); + }) + ); +}; + +const createObservations = async (captureId: number, selections: Selection[], nickname?: string) => { + const db = useDB(); + const user = useUser(); + + const capture = await getCapture(captureId); + const [observation] = await db + .insert(observations) + .values({ + captureId, + nickname, + observedAt: new Date(), + observedBy: user.id + }) + .returning(); + + if (!capture.videoUrl) throw new Error('Capture has no video URL'); + const video = await downloadVideo(capture.videoUrl); + const stats = await getStreamStats(video.path); + const width = stats.width; + const height = stats.height; + if (!width || !height) throw new Error('Failed to get stream stats'); + + await Promise.all( + selections.map(async ({ timestamp, boundingBox }) => { + const url = await getFrameFromVideo(video, stats, timestamp); + + await db.insert(images).values({ + observationId: observation.id, + timestamp: timestamp.toString(), + url, + width, + height, + boundingBox: scaleBoundingBox(boundingBox, width, height) + }); + }) + ); + + return await getObservation(observation.id); +}; + +const scaleBoundingBox = (boundingBox: BoundingBox, width: number, height: number) => { + return { + ...boundingBox, + x: Math.round(boundingBox.x * width), + y: Math.round(boundingBox.y * height), + width: Math.round(boundingBox.width * width), + height: Math.round(boundingBox.height * height) + }; +}; +/* +`ffmpeg -accurate_seek -ss {frame * 60} -i input.mp4 -frames:v 1 frame.png` +*/ + +export const getFrameFromVideo = async (video: TemporaryFile, stats: ffmpeg.FfprobeStream, timestamp: number) => { + const { storage } = useEnvironment(); + const frame = await extractFrameFromVideo(video, timestamp, stats); + const blobClient = storage.getBlockBlobClient(frame.name); + await blobClient.uploadFile(frame.path); + return blobClient.url; +}; + +export const downloadVideo = async (videoUrl: string) => { + // The container has a limited amount of local storage, so we need to download the video to a temporary file + // but not keep it around for too long. + const url = new URL(videoUrl); + const existing = getTemporaryFile(url.pathname); + if (existing) return await existing; + + const response = await fetch(url); + if (!response.ok || !response.body) throw new Error('Failed to download video'); + const file = TemporaryFile.create(url.pathname, 120 * 1000, async file => { + await writeFile(file.path, Readable.fromWeb(response.body as ReadableStream)); + }); + return file; +}; + +import { randomUUID } from 'crypto'; +import ffmpeg from 'fluent-ffmpeg'; +import { writeFile } from 'fs/promises'; +import { z } from 'zod'; +import { useEnvironment, useUser } from '../../utils/env/env'; + +export const extractFrameFromVideo = async (video: TemporaryFile, timestamp: number, stats: ffmpeg.FfprobeStream) => { + if (!stats.avg_frame_rate) throw new Error('Failed to get frame rate'); + return await takeScreenshot(video, timestamp, `${stats.width}x${stats.height}`); +}; + +export const getStreamStats = async (videoPath: string) => { + return new Promise((resolve, reject) => { + ffmpeg.ffprobe(videoPath, (err, data) => { + if (err) reject(err); + resolve(data.streams[0]); + }); + }); +}; +export const takeScreenshot = async (video: TemporaryFile, timestamps: number, size: string) => { + return new Promise((resolve, reject) => { + return TemporaryFile.create(`${randomUUID()}.png`, 120 * 1000, async file => { + ffmpeg(video.path) + .screenshot({ + timestamps: [timestamps], + folder: file.dir, + filename: file.name, + size + }) + .on('end', () => resolve(file)) + .on('error', err => { + console.error('Failed to take screenshot', err); + reject(err); + }); + }); + }); +}; diff --git a/census/api/src/services/points/achievement.ts b/census/api/src/services/points/achievement.ts new file mode 100644 index 0000000..ff478e3 --- /dev/null +++ b/census/api/src/services/points/achievement.ts @@ -0,0 +1,108 @@ +import { and, eq, inArray } from 'drizzle-orm'; +import { achievements } from '../../db/schema'; +import { useDB, withTransaction } from '../../db/transaction'; +import { addPoints, removePoints } from './points'; + +type AchievementDetails = { points: number }; +type Registry = Record; + +const registry = { + vote: { points: 1 } +} satisfies Registry; + +export type Achievements = keyof typeof registry; + +export const recordAchievement = async (action: Achievements, username: string) => { + const details = registry[action]; + if (!details) throw new Error(`Invalid action: ${action}`); + await addAchievement(action, username, details.points); +}; + +export const redeemAchievementAndAwardPoints = async (username: string, id: number) => { + const db = useDB(); + return await db.transaction(async tx => + withTransaction(tx, async () => { + const achievement = await redeemAchievement(username, id); + return await addPoints(achievement.username, achievement.points); + }) + ); +}; + +export const redeemAll = async (username: string) => { + const db = useDB(); + return await db.transaction(async tx => + withTransaction(tx, async () => { + const pending = await tx + .select({ id: achievements.id, points: achievements.points }) + .from(achievements) + .where( + and(eq(achievements.username, username), eq(achievements.redeemed, false), eq(achievements.revoked, false)) + ); + + await tx + .update(achievements) + .set({ redeemed: true }) + .where( + inArray( + achievements.id, + pending.map(p => p.id) + ) + ); + + const points = pending.reduce((acc, curr) => acc + curr.points, 0); + return await addPoints(username, points); + }) + ); +}; + +export const revokeAchievement = async (id: number) => { + const db = useDB(); + await db.transaction(async tx => + withTransaction(tx, async () => { + const entry = await getAchievement(id); + await removeAchievement(id); + await removePoints(entry.username, entry.points); + }) + ); +}; + +const addAchievement = async (action: Achievements, username: string, points: number) => { + const db = useDB(); + await db.insert(achievements).values({ type: action, username, points }); +}; + +const redeemAchievement = async (username: string, id: number) => { + const db = useDB(); + const [entry] = await db.update(achievements).set({ redeemed: true }).where(eq(achievements.id, id)).returning(); + if (!entry) throw new Error(`Achievement not found: ${id}`); + if (entry.username !== username) throw new Error(`Achievement not owned by user: ${id}`); + return entry; +}; + +export const getPendingAchievements = async (username: string) => { + const db = useDB(); + return await db.query.achievements.findMany({ + where: and(eq(achievements.username, username), eq(achievements.redeemed, false), eq(achievements.revoked, false)), + with: { + identification: true, + observation: true + } + }); +}; + +export const getAllAchievements = async (username: string) => { + const db = useDB(); + return await db.query.achievements.findMany({ where: eq(achievements.username, username) }); +}; + +const getAchievement = async (id: number) => { + const db = useDB(); + const entry = await db.query.achievements.findFirst({ where: eq(achievements.id, id) }); + if (!entry) throw new Error(`Achievement not found: ${id}`); + return entry; +}; + +const removeAchievement = async (id: number) => { + const db = useDB(); + await db.update(achievements).set({ revoked: true }).where(eq(achievements.id, id)); +}; diff --git a/census/api/src/services/points/level.ts b/census/api/src/services/points/level.ts new file mode 100644 index 0000000..7c5c507 --- /dev/null +++ b/census/api/src/services/points/level.ts @@ -0,0 +1,25 @@ +import { levels } from '@alveusgg/census-levels'; + +export type Level = keyof typeof levels; +export const hasReachedLevel = (minimumLevel: Level, points: number) => { + const level = levels[minimumLevel]; + if (!level) throw new Error(`Unknown level: ${minimumLevel}`); + return level.points <= points; +}; + +export const getLevels = () => levels; + +// Returns the current level for the given points. +export const getLevelForPoints = (points: number) => { + const entries = Object.keys(levels) as Level[]; + for (const level of entries.reverse()) { + if (hasReachedLevel(level, points)) return level; + } + throw new Error('No level reached'); +}; + +export const didLevelUp = (previous: number, current: number) => { + const previousLevel = getLevelForPoints(previous); + const currentLevel = getLevelForPoints(current); + return previousLevel !== currentLevel; +}; diff --git a/census/api/src/services/points/points.ts b/census/api/src/services/points/points.ts new file mode 100644 index 0000000..59fc421 --- /dev/null +++ b/census/api/src/services/points/points.ts @@ -0,0 +1,29 @@ +import { eq, sql } from 'drizzle-orm'; +import { users } from '../../db/schema'; +import { useDB } from '../../db/transaction'; + +export const getPointsForUser = async (username: string) => { + const db = useDB(); + const user = await db.query.users.findFirst({ where: eq(users.username, username), columns: { points: true } }); + if (!user) throw new Error(`User not found: ${username}`); + return user.points; +}; + +export const addPoints = async (username: string, points: number) => { + const db = useDB(); + const [user] = await db + .update(users) + .set({ points: sql`${users.points} + ${points}` }) + .where(eq(users.username, username)) + .returning({ points: users.points }); + return user.points; +}; + +export const removePoints = async (username: string, points: number) => { + const db = useDB(); + return await db + .update(users) + .set({ points: sql`${users.points} - ${points}` }) + .where(eq(users.username, username)) + .returning({ points: users.points }); +}; diff --git a/census/api/src/services/snapshot/index.ts b/census/api/src/services/snapshot/index.ts deleted file mode 100644 index 924427f..0000000 --- a/census/api/src/services/snapshot/index.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { addSeconds, subSeconds } from 'date-fns'; -import { eq } from 'drizzle-orm'; -import { captures } from '../../db/schema/index.js'; -import { useEnvironment } from '../../utils/env/env.js'; - -export const createCaptureRequest = async (feedId: string, username: string, duration: number, rewind: number) => { - const { db } = useEnvironment(); - const startCaptureAt = subSeconds(new Date(), rewind); - const endCaptureAt = addSeconds(startCaptureAt, duration); - const [request] = await db - .insert(captures) - .values({ - feedId, - capturedAt: new Date(), - capturedBy: username, - startCaptureAt, - endCaptureAt - }) - .returning(); - return request; -}; - -export const getCapture = async (id: number) => { - const { db } = useEnvironment(); - const [request] = await db.select().from(captures).where(eq(captures.id, id)); - return request; -}; - -export const processingCaptureRequest = async (id: number) => { - const { db } = useEnvironment(); - await db.update(captures).set({ status: 'processing' }).where(eq(captures.id, id)); -}; - -export const completeCaptureRequest = async (id: number, videoUrl: string) => { - const { db } = useEnvironment(); - await db.update(captures).set({ status: 'complete', videoUrl }).where(eq(captures.id, id)); -}; diff --git a/census/api/src/services/special/index.ts b/census/api/src/services/special/index.ts new file mode 100644 index 0000000..f06ba53 --- /dev/null +++ b/census/api/src/services/special/index.ts @@ -0,0 +1,81 @@ +import { readdir, readFile, stat } from 'node:fs/promises'; +import { join } from 'node:path'; +import { cwd } from 'node:process'; +import { useEnvironment } from '../../utils/env/env'; + +interface Shiny { + iNatId: number; + name: string; + image: string; +} + +interface Season { + meta: { + root: string; + }; + + season: number; + from: string; + to: string; + + shinys: Shiny[]; +} + +export const getSeasonForCurrentDate = async () => { + const seasons = await getSeasons(); + return seasons.find(s => { + const from = new Date(s.from); + const to = new Date(s.to); + return from <= new Date() && to >= new Date(); + }); +}; + +export const getSeasons = async () => { + const { variables } = useEnvironment(); + const seasons = await readdir(variables.ASSETS_PATH); + if (!seasons.length) { + throw new Error('No seasons found'); + } + + return Promise.all( + seasons.map(async path => { + const root = join(cwd(), variables.ASSETS_PATH, path, 'shiny'); + + // Check for unencrypted folder + if (await isUnzipped(root)) { + return parseSeason(root); + } + + await unzip(root); + return parseSeason(root); + }) + ); +}; + +export const parseSeason = async (root: string) => { + const local = await readFile(join(root, 'index.json'), 'utf8'); + const season = JSON.parse(local) as Omit; + return { + ...season, + meta: { root } + }; +}; + +export const isUnzipped = async (root: string) => { + const { variables } = useEnvironment(); + if (variables.NODE_ENV !== 'development') { + // Should never happen in production + return false; + } + + try { + const folder = await stat(root); + return folder.isDirectory(); + } catch (error) { + return false; + } +}; + +export const unzip = async (root: string) => { + console.log('Unzipping', root); +}; diff --git a/census/api/src/services/twitch/clips.ts b/census/api/src/services/twitch/clips.ts new file mode 100644 index 0000000..6a8db44 --- /dev/null +++ b/census/api/src/services/twitch/clips.ts @@ -0,0 +1,15 @@ +import { randomUUID } from 'crypto'; +import { useEnvironment } from '../../utils/env/env'; +import { TemporaryFile } from '../../utils/tmp'; +import { runTwitchDownloader } from './utils'; +export const downloadClip = async (id: string) => { + const { storage } = useEnvironment(); + const file = await TemporaryFile.create(`${id}-${randomUUID()}.mp4`, 5 * 60, async file => { + await runTwitchDownloader(['clipdownload', '--id', id, '--output', file.path]); + }); + + const client = storage.getBlockBlobClient(file.name); + await client.uploadFile(file.path); + const url = `https://${storage.accountName}.blob.core.windows.net/${storage.containerName}/${file.name}`; + return url; +}; diff --git a/census/api/src/services/twitch/index.ts b/census/api/src/services/twitch/index.ts new file mode 100644 index 0000000..eda3a98 --- /dev/null +++ b/census/api/src/services/twitch/index.ts @@ -0,0 +1,55 @@ +import { addSeconds, isAfter, subMinutes } from 'date-fns'; +import { useEnvironment } from '../../utils/env/env'; +import { ClipNotFoundResult, ClipNotProcessedResult, VODNotFoundResult } from '../capture'; + +type ClipSuccessResult = { + result: 'success'; + clip: { + id: string; + title: string; + embedUrl: string; + thumbnailUrl: string; + startDate: Date; + endDate: Date; + views: number; + }; +}; +type ClipResult = ClipNotFoundResult | ClipNotProcessedResult | VODNotFoundResult | ClipSuccessResult; + +export const getClip = async (id: string): Promise => { + const { twitch } = useEnvironment(); + const clip = await twitch.clips.getClipById(id); + if (!clip || !clip.id || !clip.creationDate) return { result: 'error', type: 'clip_not_found' }; + if (isAfter(clip.creationDate, subMinutes(new Date(), 15))) return { result: 'error', type: 'clip_not_processed' }; + if (!clip.videoId || !clip.vodOffset) return { result: 'error', type: 'vod_not_found' }; + const vod = await getVOD(clip.videoId); + + const vodStartDate = new Date(vod.publishedAt); + const startDate = addSeconds(vodStartDate, clip.vodOffset); + const endDate = addSeconds(startDate, clip.duration); + + const result = { + id, + title: clip.title, + embedUrl: clip.embedUrl, + thumbnailUrl: clip.thumbnailUrl, + startDate, + endDate, + views: clip.views + }; + return { result: 'success', clip: result }; +}; + +export const getVOD = async (id: string) => { + const { twitch } = useEnvironment(); + const vod = await twitch.videos.getVideoById(id); + if (!vod) throw new Error('VOD not found'); + + return { + id, + title: vod.title, + durationInSeconds: vod.durationInSeconds, + publishedAt: vod.publishDate, + views: vod.views + }; +}; diff --git a/census/api/src/services/twitch/utils.ts b/census/api/src/services/twitch/utils.ts new file mode 100644 index 0000000..9ec8062 --- /dev/null +++ b/census/api/src/services/twitch/utils.ts @@ -0,0 +1,128 @@ +import init from 'env-paths'; +import extract from 'extract-zip'; +import { spawn } from 'node:child_process'; +import { createWriteStream } from 'node:fs'; +import { chmod, mkdir, stat } from 'node:fs/promises'; +import { join } from 'node:path'; +import { pipeline } from 'node:stream/promises'; +import { Readable } from 'stream'; +import { ReadableStream } from 'stream/web'; +import { z } from 'zod'; +import { useEnvironment } from '../../utils/env/env'; + +const paths = init('twitchqna'); + +const zipLocation = join(paths.cache, 'chatdownloader.zip'); +const binaryLocation = join(paths.cache, 'TwitchDownloaderCLI'); + +export const checkForBinary = async () => { + try { + await stat(binaryLocation); + return true; + } catch { + return false; + } +}; + +const GitHubReleaseResponse = z.object({ + assets: z.array( + z.object({ + browser_download_url: z.string(), + name: z.string() + }) + ), + name: z.string() +}); + +const getOS = (platform: NodeJS.Platform) => { + switch (platform) { + case 'darwin': + return 'MacOS'; + case 'win32': + return 'Windows'; + case 'linux': + return 'Linux'; + default: + throw new Error(`Unsupported platform: ${platform}`); + } +}; + +const getArch = (arch: NodeJS.Architecture) => { + switch (arch) { + case 'x64': + return '-x64'; + case 'arm': + return 'Arm'; + case 'arm64': + return 'Arm64'; + default: + throw new Error(`Unsupported architecture: ${arch}`); + } +}; + +export const getAppropriateBinary = async () => { + const url = `https://api.github.com/repos/lay295/TwitchDownloader/releases/latest`; + const response = await fetch(url); + const json = await response.json(); + const data = GitHubReleaseResponse.parse(json); + + const asset = data.assets.find(asset => { + const filename = asset.name.match(/(?<=-)(.*)(?=.zip)/)?.[0]; + if (!filename) throw new Error(`Invalid filename: ${asset.name}`); + const [, architecture] = filename.split('-'); + return architecture === `${getOS(process.platform)}${getArch(process.arch)}`; + }); + if (!asset) { + throw new Error(`No binary found for ${getOS(process.platform)}${getArch(process.arch)}`); + } + + return asset; +}; + +export const downloadBinary = async () => { + const asset = await getAppropriateBinary(); + const response = await fetch(asset.browser_download_url); + if (!response.ok) { + throw new Error(`Unexpected response ${response.statusText}`); + } + + if (!response.body) { + throw new Error(`No response body`); + } + + await mkdir(paths.cache, { recursive: true }); + const writeStream = createWriteStream(zipLocation); + await pipeline(Readable.fromWeb(response.body as ReadableStream), writeStream); + await extract(zipLocation, { dir: paths.cache }); +}; + +const runBinary = async (args: string[]) => { + return new Promise(async (resolve, reject) => { + await chmod(binaryLocation, '755'); + + const cli = spawn(binaryLocation, args, { stdio: 'pipe' }); + cli.on('close', code => { + if (code === 0) { + resolve(); + } else { + reject(new Error(`TwitchDownloaderCLI exited with code ${code}`)); + } + }); + cli.on('error', err => { + reject(err); + }); + }); +}; + +export const runTwitchDownloader = async (args: string[]) => { + const { variables } = useEnvironment(); + if (variables.NODE_ENV !== 'development') { + throw new Error('TwitchDownloaderCLI is not available in production'); + } + const hasBinary = await checkForBinary(); + if (!hasBinary) { + await downloadBinary(); + } + + await runBinary(args); +}; diff --git a/census/api/src/trpc/context.ts b/census/api/src/trpc/context.ts index 08a7cff..bf1e47e 100644 --- a/census/api/src/trpc/context.ts +++ b/census/api/src/trpc/context.ts @@ -1,16 +1,21 @@ import { CreateFastifyContextOptions } from '@trpc/server/adapters/fastify'; -import { useEnvironment } from '../utils/env/env.js'; export function createContext({ req, res, info }: CreateFastifyContextOptions) { - const env = useEnvironment(); const headers = req.headers; - const authorization = headers.authorization ?? info.connectionParams?.Authorization; + const authorization = headers.authorization ?? info.connectionParams?.authorization; + const points = (number: number) => { + res.header('x-census-points', number.toString()); + }; + const achievements = () => { + res.header('x-census-achievements', new Date().toISOString()); + }; return { - ...env, authorization, req, - res + res, + points, + achievements }; } export type Context = Awaited>; diff --git a/census/api/src/trpc/trpc.ts b/census/api/src/trpc/trpc.ts index dc6ac15..75923fe 100644 --- a/census/api/src/trpc/trpc.ts +++ b/census/api/src/trpc/trpc.ts @@ -2,8 +2,9 @@ import { initTRPC } from '@trpc/server'; import { eq } from 'drizzle-orm'; import { validateJWT } from 'oslo/jwt'; import { feeds } from '../db/schema/index.js'; +import { useDB } from '../db/transaction.js'; import { getPermissions } from '../services/auth/role.js'; -import { useUser, withUser } from '../utils/env/env.js'; +import { useEnvironment, useUser, withUser } from '../utils/env/env.js'; import { createContext } from './context.js'; const t = initTRPC.context().create(); @@ -19,7 +20,8 @@ export const procedure = t.procedure.use(async ({ ctx, next }) => { throw new Error('Unauthorized'); } - const decoded = await validateJWT('HS256', ctx.variables.JWT_SECRET, token); + const { variables } = useEnvironment(); + const decoded = await validateJWT('HS256', variables.JWT_SECRET, token); if (!decoded.subject) throw new Error('Unauthorized'); return withUser({ id: decoded.subject }, next); }); @@ -62,7 +64,8 @@ export const integrationProcedure = t.procedure.use(async ({ ctx, next }) => { const decoded = Buffer.from(token, 'base64').toString('utf-8'); const [username, password] = decoded.split(':'); - const [feed] = await ctx.db.select().from(feeds).where(eq(feeds.id, username)); + const db = useDB(); + const [feed] = await db.select().from(feeds).where(eq(feeds.id, username)); if (!feed || feed.key !== password) { throw new Error('Unauthorized'); } diff --git a/census/api/src/utils/env/config.ts b/census/api/src/utils/env/config.ts index 6b0fcb5..1fa8bb6 100644 --- a/census/api/src/utils/env/config.ts +++ b/census/api/src/utils/env/config.ts @@ -1,22 +1,17 @@ import { ContainerClient, StorageSharedKeyCredential } from '@azure/storage-blob'; -import { Redis, RedisOptions } from 'ioredis'; +import { ApiClient } from '@twurple/api'; +import { AppTokenAuthProvider } from '@twurple/auth'; import z from 'zod'; import { initialise } from '../../db/db.js'; export const config = z.object({ TWITCH_CLIENT_ID: z.string(), TWITCH_CLIENT_SECRET: z.string(), - TWITCH_USERNAME: z.string(), NODE_ENV: z.enum(['development', 'production']).default('development'), HOST: z.string(), PORT: z.coerce.number(), - REDIS_HOST: z.string(), - REDIS_PORT: z.string(), - REDIS_PASSWORD: z.string().optional(), - REDIS_SSL: z.coerce.boolean().default(false), - POSTGRES_HOST: z.string(), POSTGRES_USER: z.string(), POSTGRES_PASSWORD: z.string(), @@ -30,22 +25,13 @@ export const config = z.object({ STORAGE_ACCOUNT_KEY: z.string(), CONTAINER_NAME: z.string(), - CHANNELS_TO_LISTEN_TO: z.string().transform(value => value.split(',')), + ASSETS_PATH: z.string().default('./assets'), + ASSETS_PASSWORD: z.string().optional(), - COMMAND_PREFIX: z.string().default('!'), JWT_SECRET: z.string().transform(value => Buffer.from(value, 'hex')) }); export const services = async (variables: z.infer) => { - const options: RedisOptions = {}; - if (variables.REDIS_PASSWORD) { - options.password = variables.REDIS_PASSWORD; - } - if (variables.REDIS_SSL) { - options.tls = { rejectUnauthorized: false }; - } - - const redis = new Redis(Number(variables.REDIS_PORT), variables.REDIS_HOST, options); const database = await initialise( variables.POSTGRES_HOST, variables.POSTGRES_USER, @@ -59,10 +45,14 @@ export const services = async (variables: z.infer) => { new StorageSharedKeyCredential(variables.STORAGE_ACCOUNT_NAME, variables.STORAGE_ACCOUNT_KEY) ); + const twitch = new ApiClient({ + authProvider: new AppTokenAuthProvider(variables.TWITCH_CLIENT_ID, variables.TWITCH_CLIENT_SECRET) + }); + return { - redis, db: database.db, postgres: database.client, - storage + storage, + twitch }; }; diff --git a/census/api/src/utils/env/env.ts b/census/api/src/utils/env/env.ts index 7a90fa2..630ab14 100644 --- a/census/api/src/utils/env/env.ts +++ b/census/api/src/utils/env/env.ts @@ -9,7 +9,7 @@ export const createEnvironment = async () => { }; }; -import { createStore } from '@critter/node'; +import { createStore } from '@alveusgg/node'; const EnvironmentStore = createStore('environment'); export const [withEnvironment, useEnvironment] = EnvironmentStore; diff --git a/census/api/src/utils/storage.ts b/census/api/src/utils/storage.ts new file mode 100644 index 0000000..9e461f4 --- /dev/null +++ b/census/api/src/utils/storage.ts @@ -0,0 +1,18 @@ +import { ContainerSASPermissions } from '@azure/storage-blob'; +import { addMinutes } from 'date-fns'; +import { useEnvironment } from './env/env.js'; + +export const getCreateOnlySasURL = async () => { + const { storage } = useEnvironment(); + return await storage.generateSasUrl({ + startsOn: new Date(), + expiresOn: addMinutes(new Date(), 2), + permissions: ContainerSASPermissions.from({ create: true }) + }); +}; + +export const uploadFile = async (name: string, path: string) => { + const { storage } = useEnvironment(); + const blobClient = storage.getBlockBlobClient(name); + await blobClient.uploadFile(path); +}; diff --git a/census/api/src/utils/tmp.ts b/census/api/src/utils/tmp.ts new file mode 100644 index 0000000..e22a535 --- /dev/null +++ b/census/api/src/utils/tmp.ts @@ -0,0 +1,90 @@ +import { mkdirSync } from 'fs'; +import { unlink } from 'fs/promises'; +import { tmpdir } from 'os'; +import { join } from 'path'; + +const Cache = new Map>(); + +export const getTemporaryFile = (filename: string) => { + if (Cache.has(filename)) return Cache.get(filename); +}; + +export class TemporaryFile { + private createdAt?: Date; + private ttl: number; + dir: string; + path: string; + name: string; + constructor(name: string, dir: string, path: string, ttl: number) { + this.ttl = ttl; + this.name = name; + this.dir = dir; + this.path = path; + } + + static async create(filename: string, ttl: number, createCallbackFn: (file: TemporaryFile) => Promise) { + const name = filename.replace(/\//g, '_'); + const dir = join(tmpdir(), 'census'); + mkdirSync(dir, { recursive: true }); + const path = join(dir, name); + const file = new TemporaryFile(name, dir, path, ttl); + + // The reason we do this weird createCallbackFn is because we want to avoid a race condition where + // the file is created but not yet written to. During this time, other requests for the same file + // will redo work because it's not found in the cache yet. + + // This avoids that by caching the promise instead of the file object and having that promise wait for the file to be written. + + const promise = createCallbackFn(file) + .then(() => file) + .catch(async err => { + console.error(err); + await file.delete(); + throw err; + }); + Cache.set(path, promise); + return promise; + } + + static async createMany( + filenames: string[], + ttl: number, + createCallbackFn: (result: Record) => Promise + ) { + const record: Record = {}; + filenames.forEach(filename => { + const name = filename.replace(/\//g, '_'); + const dir = join(tmpdir(), 'census'); + mkdirSync(dir, { recursive: true }); + const path = join(dir, name); + const file = new TemporaryFile(name, dir, path, ttl); + record[filename] = file; + }); + + for (const filename of filenames) { + const promise = createCallbackFn(record).then(() => record[filename]); + Cache.set(record[filename].path, promise); + } + + return Promise.all(Object.values(record).map(file => Cache.get(file.path))); + } + + expired() { + if (!this.createdAt) return false; + return this.createdAt.getTime() + this.ttl < Date.now(); + } + + async delete() { + await unlink(this.path); + Cache.delete(this.path); + } +} + +setInterval(() => { + Cache.forEach(async promise => { + const file = await promise; + if (file.expired()) { + await file.delete(); + } + }); +}, 30 * 1000); diff --git a/census/docker-compose.yml b/census/docker-compose.yml new file mode 100644 index 0000000..14df767 --- /dev/null +++ b/census/docker-compose.yml @@ -0,0 +1,20 @@ +version: '3.8' + +services: + db: + image: postgres:latest + environment: + POSTGRES_USER: myuser + POSTGRES_PASSWORD: mypassword + POSTGRES_DB: db01 + ports: + - '5432:5432' + volumes: + - pgdata:/var/lib/postgresql/data + command: + - postgres + - -c + - wal_level=logical +volumes: + dragonflydata: + pgdata: diff --git a/census/levels/index.ts b/census/levels/index.ts new file mode 100644 index 0000000..e0a8e8d --- /dev/null +++ b/census/levels/index.ts @@ -0,0 +1,22 @@ +export const levels = { + newcomer: { + number: 1, + points: 0, + name: 'Newcomer' + }, + rookie: { + number: 2, + points: 10, + name: 'Rookie' + }, + veteran: { + number: 3, + points: 50, + name: 'Veteran' + }, + expert: { + number: 4, + points: 100, + name: 'Expert' + } +}; diff --git a/census/levels/package.json b/census/levels/package.json new file mode 100644 index 0000000..9522e84 --- /dev/null +++ b/census/levels/package.json @@ -0,0 +1,5 @@ +{ + "name": "@alveusgg/census-levels", + "private": true, + "type": "module" +} \ No newline at end of file diff --git a/docs/tsconfig.json b/census/levels/tsconfig.json similarity index 64% rename from docs/tsconfig.json rename to census/levels/tsconfig.json index d2636aa..6f26d99 100644 --- a/docs/tsconfig.json +++ b/census/levels/tsconfig.json @@ -1,18 +1,16 @@ { "compilerOptions": { - "target": "ES2020", - "useDefineForClassFields": true, - "lib": ["ES2020", "DOM", "DOM.Iterable"], + "target": "ES2022", + "lib": ["ES2023"], "module": "ESNext", "skipLibCheck": true, /* Bundler mode */ "moduleResolution": "bundler", "allowImportingTsExtensions": true, - "resolveJsonModule": true, "isolatedModules": true, + "moduleDetection": "force", "noEmit": true, - "jsx": "react-jsx", /* Linting */ "strict": true, @@ -20,5 +18,5 @@ "noUnusedParameters": true, "noFallthroughCasesInSwitch": true }, - "include": ["**/*.ts", "**/*.tsx"] + "include": ["index.ts"] } diff --git a/census/website/package.json b/census/website/package.json index c172322..1e62a6d 100644 --- a/census/website/package.json +++ b/census/website/package.json @@ -5,20 +5,25 @@ "type": "module", "scripts": { "preinstall": "npx only-allow pnpm", - "start": "vite", + "start": "concurrently \"pnpm run ipx:local\" \"vite\"", "build": "tsc -b && vite build", + "ipx:local": "IPX_HTTP_ALLOW_ALL_DOMAINS=true IPX_HTTP_MAX_AGE=86400 ipx serve --port 2209", "lint": "eslint ." }, "dependencies": { - "@azure/msal-browser": "^3.21.0", - "@alveusgg/census-api": "workspace:*", "@alveusgg/backstage": "workspace:*", + "@alveusgg/census-api": "workspace:*", + "@alveusgg/census-levels": "workspace:*", + "@azure/msal-browser": "^3.21.0", "@hookform/resolvers": "^3.9.0", "@microsoft/applicationinsights-react-js": "^17.3.1", "@microsoft/applicationinsights-web": "^3.3.1", + "@radix-ui/react-dialog": "^1.1.2", "@radix-ui/react-icons": "^1.3.0", "@radix-ui/react-popover": "^1.1.1", + "@radix-ui/react-portal": "^1.1.2", "@radix-ui/react-slider": "^1.2.0", + "@radix-ui/react-slot": "^1.1.0", "@radix-ui/react-tooltip": "^1.1.2", "@react-av/controls": "^0.0.5", "@react-av/core": "^0.0.4", @@ -37,6 +42,7 @@ "date-fns": "^3.6.0", "date-fns-tz": "^3.1.3", "framer-motion": "^11.3.29", + "immer": "^10.1.1", "lucide-react": "^0.438.0", "next-themes": "^0.3.0", "oslo": "^1.2.1", @@ -47,6 +53,8 @@ "react-markdown": "^9.0.1", "react-router": "^6.26.1", "react-router-dom": "^6.26.1", + "react-swipeable": "^7.0.1", + "react-use": "^17.5.1", "sonner": "^1.5.0", "tailwind-merge": "^2.5.2", "tailwindcss-animate": "^1.0.7", @@ -61,16 +69,19 @@ "@types/react-dom": "^18.3.0", "@vitejs/plugin-react": "^4.3.1", "autoprefixer": "^10.4.20", + "concurrently": "^9.0.1", "eslint": "^9.9.0", "eslint-plugin-react-hooks": "^5.1.0-rc.0", "eslint-plugin-react-refresh": "^0.4.9", "globals": "^15.9.0", + "ipx": "^3.0.1", "postcss": "^8.4.41", "tailwind-scrollbar": "^3.1.0", "tailwindcss": "^3.4.10", "ts-essentials": "^10.0.2", "typescript": "^5.5.3", "typescript-eslint": "^8.0.1", - "vite": "^5.4.1" + "vite": "^5.4.1", + "vite-plugin-run": "^0.6.0" } } \ No newline at end of file diff --git a/census/website/src/components/animation/AnimateHeight.tsx b/census/website/src/components/animation/AnimateHeight.tsx new file mode 100644 index 0000000..a90740f --- /dev/null +++ b/census/website/src/components/animation/AnimateHeight.tsx @@ -0,0 +1,19 @@ +import { Slot } from '@radix-ui/react-slot'; +import { useMeasure } from '@uidotdev/usehooks'; +import { motion } from 'framer-motion'; +import { ComponentProps, FC } from 'react'; + +export const AutoAnimatedContainer: FC> = ({ children, ...props }) => { + const [ref, { height }] = useMeasure(); + return ( + 0 ? height : undefined }} + transition={{ type: 'spring', bounce: 0, duration: 0.8 }} + style={{ overflow: 'hidden', position: 'relative' }} + > + + {children} + + + ); +}; diff --git a/census/website/src/components/animation/Counter.tsx b/census/website/src/components/animation/Counter.tsx new file mode 100644 index 0000000..a13756b --- /dev/null +++ b/census/website/src/components/animation/Counter.tsx @@ -0,0 +1,34 @@ +import { useAnimate } from 'framer-motion'; +import { ComponentProps, FC, useEffect, useRef } from 'react'; + +interface CounterProps { + duration: number; + children: number; + delay?: number; +} + +export const Counter: FC> = ({ children, duration, delay = 0, ...props }) => { + const ref = useRef(null); + const [, animate] = useAnimate(); + + useEffect(() => { + if (!ref.current) return; + const initial = ref.current.textContent; + const number = Number(initial); + if (!initial || isNaN(number)) { + ref.current.textContent = children.toString(); + return; + } + + animate(number, children, { + duration, + onUpdate: value => { + if (!ref.current) return; + ref.current.textContent = Math.round(value).toString(); + }, + delay + }); + }, [children]); + + return

; +}; diff --git a/census/website/src/components/assets/icons/Corner.tsx b/census/website/src/components/assets/icons/Corner.tsx index 7dc120f..576c194 100644 --- a/census/website/src/components/assets/icons/Corner.tsx +++ b/census/website/src/components/assets/icons/Corner.tsx @@ -4,7 +4,7 @@ export const Corner: FC> = props => ( diff --git a/census/website/src/components/assets/images/Img.tsx b/census/website/src/components/assets/images/Img.tsx new file mode 100644 index 0000000..61b6bc5 --- /dev/null +++ b/census/website/src/components/assets/images/Img.tsx @@ -0,0 +1,103 @@ +import { Variables } from '@/services/backstage/config'; +import { useVariable } from '@alveusgg/backstage'; +import { ComponentProps, FC } from 'react'; + +type Format = 'jpg' | 'jpeg' | 'png' | 'webp' | 'avif' | 'gif' | 'heif' | 'tiff'; +type Fit = 'cover' | 'contain' | 'fill' | 'inside' | 'outside'; + +interface IpxOptions { + width?: number; + height?: number; + extract?: { + x: number; + y: number; + width: number; + height: number; + }; + + /** + * 0-100 + */ + quality?: number; + format?: Format; + position?: 'top' | 'right top' | 'right' | 'right bottom' | 'bottom' | 'left bottom' | 'left' | 'left top'; + gravity?: 'centre' | 'north' | 'east' | 'south' | 'west' | 'northeast' | 'southeast' | 'southwest' | 'northwest'; + sharpen?: number; + + /** + * cover: (default) Preserving aspect ratio, attempt to ensure the image covers both provided dimensions by cropping/clipping to fit. + * + * contain: Preserving aspect ratio, contain within both provided dimensions using "letterboxing" where necessary. + * + * fill: Ignore the aspect ratio of the input and stretch to both provided dimensions. + * + * inside: Preserving aspect ratio, resize the image to be as large as possible while ensuring its dimensions are less than or equal to both those specified. + * + * outside: Preserving aspect ratio, resize the image to be as small as possible while ensuring its dimensions are greater than or equal to both those specified. + * + * @link https://sharp.pixelplumbing.com/api-resize#resize + */ + fit?: Fit; + + blur?: number; +} + +export interface ImgProps { + options: IpxOptions; +} + +const constructIpxUrl = (options: IpxOptions, base: string, src: string) => { + const flags: string[] = []; + + if (options.quality) { + flags.push(`quality_${options.quality}`); + } + + if (options.format) { + flags.push(`format_${options.format}`); + } + + if (options.position) { + flags.push(`position_${options.position}`); + } + + if (options.gravity) { + flags.push(`gravity_${options.gravity}`); + } + + if (options.blur) { + flags.push(`blur_${options.blur}`); + } + + if (options.extract) { + flags.push(`extract_${options.extract.x}_${options.extract.y}_${options.extract.width}_${options.extract.height}`); + } + + if (options.width || options.height) { + if (options.width && options.height) { + flags.push(`s_${options.width}x${options.height}`); + } else if (options.width) { + flags.push(`width_${options.width}`); + } else if (options.height) { + flags.push(`height_${options.height}`); + } + } + + if (options.fit) { + flags.push(`fit_${options.fit}`); + } + + if (options.sharpen) { + flags.push(`sharpen_${options.sharpen}`); + } + + return `${base}/${flags.join(',')}/${src}`; +}; + +export const Img: FC> = ({ src, options, ...props }) => { + const ipxBaseUrl = useVariable('ipxBaseUrl'); + if (!ipxBaseUrl) throw new Error('ipxBaseUrl is not set'); + if (!src) throw new Error('src is required'); + + return ; +}; diff --git a/census/website/src/components/assets/images/Square.tsx b/census/website/src/components/assets/images/Square.tsx new file mode 100644 index 0000000..9ab545a --- /dev/null +++ b/census/website/src/components/assets/images/Square.tsx @@ -0,0 +1,34 @@ +import { ComponentProps, FC } from 'react'; +import { Img, ImgProps } from './Img'; + +const make = (extract: { x: number; y: number; width: number; height: number }) => { + if (extract.height > extract.width) { + return { + y: extract.y, + x: Math.round(extract.x + (extract.width - extract.height) / 2), + height: extract.height, + width: extract.height + }; + } + + if (extract.width > extract.height) { + return { + x: extract.x, + y: Math.round(extract.y + (extract.height - extract.width) / 2), + height: extract.width, + width: extract.width + }; + } + + return extract; +}; + +/** + * A custom version of Img that ensures the image is square. + */ +export const Square: FC< + (ImgProps & { options: { extract: { x: number; y: number; width: number; height: number } } }) & ComponentProps<'img'> +> = ({ src, options, ...props }) => { + const extract = make(options.extract); + return ; +}; diff --git a/census/website/src/components/assets/logos/CritterCaptureClubLogo.tsx b/census/website/src/components/assets/logos/CritterCaptureClubLogo.tsx index 3f893a8..525c800 100644 --- a/census/website/src/components/assets/logos/CritterCaptureClubLogo.tsx +++ b/census/website/src/components/assets/logos/CritterCaptureClubLogo.tsx @@ -2,197 +2,213 @@ import { FC, SVGAttributes } from 'react'; export const CritterCaptureClubLogo: FC> = ({ ...props }) => { return ( - + + + + + diff --git a/census/website/src/components/assets/logos/SimpleAlveus.tsx b/census/website/src/components/assets/logos/SimpleAlveus.tsx new file mode 100644 index 0000000..f3e3477 --- /dev/null +++ b/census/website/src/components/assets/logos/SimpleAlveus.tsx @@ -0,0 +1,44 @@ +import { FC, SVGAttributes } from 'react'; + +export const SimpleAlveus: FC> = ({ ...props }) => { + return ( + + + + + + + + + + + + + + + + ); +}; diff --git a/census/website/src/components/assets/logos/Wordmark.tsx b/census/website/src/components/assets/logos/Wordmark.tsx index 5fb2440..26b6dcc 100644 --- a/census/website/src/components/assets/logos/Wordmark.tsx +++ b/census/website/src/components/assets/logos/Wordmark.tsx @@ -1,127 +1,95 @@ -import { FC, SVGAttributes } from 'react'; +import { ComponentProps, FC } from 'react'; -export const Wordmark: FC> = ({ ...props }) => { +export const Wordmark: FC> = ({ ...props }) => { return ( - + - - - - ); diff --git a/census/website/src/components/button/button.ts b/census/website/src/components/button/button.ts deleted file mode 100644 index 7ac738f..0000000 --- a/census/website/src/components/button/button.ts +++ /dev/null @@ -1,18 +0,0 @@ -export const variants = { - light: 'bg-neutral-100 hover:bg-neutral-200 text-neutral-800', - ghost: 'hover:bg-accent-900 hover:bg-opacity-5 text-accent-800', - dark: 'bg-neutral-800 hover:bg-neutral-700 text-white', - primary: 'bg-accent-300 hover:bg-accent-400 text-accent-950', - secondary: 'bg-purple-500 hover:bg-purple-600 text-white', - danger: 'bg-red-500 hover:bg-red-600 text-white' -}; - -export interface ButtonProps { - loading?: boolean; - variant?: keyof typeof variants | false; - - disabled?: string | boolean; - - shortcut?: string; - onShortcut?: () => void; -} diff --git a/census/website/src/components/button/juicy/index.tsx b/census/website/src/components/button/juicy/index.tsx deleted file mode 100644 index 21edecc..0000000 --- a/census/website/src/components/button/juicy/index.tsx +++ /dev/null @@ -1,89 +0,0 @@ -import { cn } from '@/utils/cn'; -import { ButtonHTMLAttributes, FC, PropsWithChildren, useEffect, useRef } from 'react'; -import { Loader } from '../../loaders/Loader'; -import { ButtonProps, variants } from '../button'; - -export const Button: FC< - PropsWithChildren, 'disabled'> & {}> -> = ({ - children, - variant = 'primary', - type = 'button', - loading, - className, - disabled, - shortcut, - onShortcut, - ...props -}) => { - const ref = useRef(null); - - useEffect(() => { - if (!shortcut || disabled) return; - const abortController = new AbortController(); - - window.addEventListener( - 'keydown', - (e: KeyboardEvent) => { - if (e.key.toLowerCase() === shortcut.toLowerCase() && e.metaKey) { - e.preventDefault(); - e.stopPropagation(); - - const button = ref.current; - if (!button) return; - button.setAttribute('data-pressed', 'true'); - button.click(); - onShortcut?.(); - setTimeout(() => { - button.removeAttribute('data-pressed'); - }, 150); - } - }, - { signal: abortController.signal } - ); - return () => { - abortController.abort(); - }; - }, [shortcut, disabled]); - - return ( - - - - )} - {children} - {shortcut && ( - - {navigator.userAgent.includes('Mac OS X') ? ( - ⌘ - ) : ( - CTRL+ - )} - {shortcut} - - )} - - ); -}; diff --git a/census/website/src/components/controls/Dock.tsx b/census/website/src/components/controls/Dock.tsx deleted file mode 100644 index e8a642c..0000000 --- a/census/website/src/components/controls/Dock.tsx +++ /dev/null @@ -1,106 +0,0 @@ -import { Spinner } from '@/components/loaders/Spinner'; -import { Variables } from '@/services/backstage/config'; -import { useVariable } from '@alveusgg/backstage'; -import { AnimatePresence, motion } from 'framer-motion'; -import { FC, PropsWithChildren, ReactNode, useEffect } from 'react'; - -interface DockProps { - actions?: ReactNode; -} - -export const Dock: FC> = ({ actions, children }) => { - return ( -

- - {actions && ( - - {actions} - - )} - -
- {children} -
-
- ); -}; - -export const PendingIndicator: FC = () => { - return ( -
- -
- ); -}; - -interface DockKeyNavigatorProps { - length: number; - index?: number; - setIndex: (index: number) => void; -} -export const DockKeyNavigator: FC = ({ length, index, setIndex }) => { - useEffect(() => { - const abortController = new AbortController(); - - window.addEventListener( - 'keydown', - e => { - if (e.key === 'ArrowLeft') { - if (index === undefined) { - if (length === 0) return; - setIndex(length - 1); - return; - } - const newIndex = index - 1; - if (newIndex < 0) { - setIndex(length - 1); - } else { - setIndex(newIndex); - } - } - - if (e.key === 'ArrowRight') { - if (index === undefined) { - if (length === 0) return; - setIndex(0); - return; - } - const newIndex = index + 1; - if (newIndex >= length) { - setIndex(0); - } else { - setIndex(newIndex); - } - } - }, - { signal: abortController.signal } - ); - - return () => { - abortController.abort(); - }; - }, [length, index, setIndex]); - - return null; -}; - -interface PreloadImagesProps { - images: string[]; -} - -export const PreloadImages: FC = ({ images }) => { - const imageResizeCDNUrl = useVariable('imageResizeCDNUrl'); - - return ( -
- {images.map(image => ( - - ))} -
- ); -}; diff --git a/census/website/src/components/controls/button/button.ts b/census/website/src/components/controls/button/button.ts new file mode 100644 index 0000000..76b5cdf --- /dev/null +++ b/census/website/src/components/controls/button/button.ts @@ -0,0 +1,16 @@ +export const variants = { + primary: 'bg-accent-400 hover:bg-accent-500 text-accent-950', + custom: 'bg-custom hover:bg-custom-darker text-white', + danger: 'bg-red-500 hover:bg-red-600 text-white', + alveus: 'bg-alveus hover:bg-alveus-darker text-white' +}; + +export interface ButtonProps { + loading?: boolean; + variant?: keyof typeof variants | false; + + disabled?: string | boolean; + + shortcut?: string; + onShortcut?: () => void; +} diff --git a/census/website/src/components/controls/button/juicy/index.tsx b/census/website/src/components/controls/button/juicy/index.tsx new file mode 100644 index 0000000..5d87418 --- /dev/null +++ b/census/website/src/components/controls/button/juicy/index.tsx @@ -0,0 +1,84 @@ +import { cn } from '@/utils/cn'; +import { ButtonHTMLAttributes, forwardRef, PropsWithChildren, useEffect } from 'react'; +import { Loader } from '../../../loaders/Loader'; +import { ButtonProps, variants } from '../button'; + +export const Button = forwardRef< + HTMLButtonElement, + PropsWithChildren, 'disabled'> & {}> +>( + ( + { children, variant = 'primary', type = 'button', loading, className, disabled, shortcut, onShortcut, ...props }, + ref + ) => { + useEffect(() => { + if (!shortcut || disabled) return; + const abortController = new AbortController(); + + window.addEventListener( + 'keydown', + (e: KeyboardEvent) => { + if (e.key.toLowerCase() === shortcut.toLowerCase() && e.metaKey) { + e.preventDefault(); + e.stopPropagation(); + + // const button = ref.current; + // if (!button) return; + // button.setAttribute('data-pressed', 'true'); + // button.click(); + // onShortcut?.(); + // setTimeout(() => { + // button.removeAttribute('data-pressed'); + // }, 150); + } + }, + { signal: abortController.signal } + ); + return () => { + abortController.abort(); + }; + }, [shortcut, disabled]); + + return ( + + ); + } +); diff --git a/census/website/src/components/button/paper/index.tsx b/census/website/src/components/controls/button/paper/index.tsx similarity index 94% rename from census/website/src/components/button/paper/index.tsx rename to census/website/src/components/controls/button/paper/index.tsx index f0a3725..36b52d1 100644 --- a/census/website/src/components/button/paper/index.tsx +++ b/census/website/src/components/controls/button/paper/index.tsx @@ -1,7 +1,7 @@ import { cn } from '@/utils/cn'; import { ButtonHTMLAttributes, FC, PropsWithChildren } from 'react'; import { LinkProps, Link as RouterLink } from 'react-router-dom'; -import { Loader } from '../../loaders/Loader'; +import { Loader } from '../../../loaders/Loader'; import { ButtonProps, variants } from '../button'; export type PaperButtonProps = ButtonProps & Omit, 'disabled'> & {}; @@ -9,7 +9,7 @@ export type PaperButtonProps = ButtonProps & Omit> = ({ children, className, - variant = 'ghost', + variant = 'alveus', type = 'button', disabled, loading, @@ -46,7 +46,7 @@ export const Link: FC> = ({ children, className, disabled, - variant = 'ghost', + variant = 'alveus', ...props }) => { return ( diff --git a/census/website/src/components/editor/CustomSelectionColor.tsx b/census/website/src/components/editor/CustomSelectionColor.tsx new file mode 100644 index 0000000..6210390 --- /dev/null +++ b/census/website/src/components/editor/CustomSelectionColor.tsx @@ -0,0 +1,10 @@ +import { getColorForId } from '@/services/video/utils'; +import { FC, PropsWithChildren } from 'react'; + +export const CustomSelectionColor: FC> = ({ id, children }) => { + return ( +
+ {children} +
+ ); +}; diff --git a/census/website/src/components/editor/SelectedSubjectHighlight.tsx b/census/website/src/components/editor/SelectedSubjectHighlight.tsx new file mode 100644 index 0000000..9b6e7b6 --- /dev/null +++ b/census/website/src/components/editor/SelectedSubjectHighlight.tsx @@ -0,0 +1,17 @@ +import { useEditor } from '@/services/video/hooks'; +import { AnimatePresence, motion } from 'framer-motion'; + +export const SelectedSubjectHighlight = () => { + const selectedSubjectId = useEditor(state => state.selectedSubjectId); + return ( + + + + ); +}; diff --git a/census/website/src/components/editor/SubjectSelectionInput.tsx b/census/website/src/components/editor/SubjectSelectionInput.tsx new file mode 100644 index 0000000..4a6898d --- /dev/null +++ b/census/website/src/components/editor/SubjectSelectionInput.tsx @@ -0,0 +1,25 @@ +import { useEditor } from '@/services/video/hooks'; +import * as Media from '@react-av/core'; +import { SelectionInput } from '../inputs/SelectionInput'; + +export const SubjectSelectionInput = () => { + const [time] = Media.useMediaCurrentTimeFine(); + const [playing] = Media.useMediaPlaying(); + const { selections, updateSelection, selectedSubjectId } = useEditor(state => state); + + if (playing) return null; + return ( +
+ { + selections.forEach(selection => { + updateSelection(time, selection.subjectId, selection.boundingBox); + }); + }} + /> +
+ ); +}; diff --git a/census/website/src/components/editor/SubjectToggle.tsx b/census/website/src/components/editor/SubjectToggle.tsx new file mode 100644 index 0000000..3ca33c7 --- /dev/null +++ b/census/website/src/components/editor/SubjectToggle.tsx @@ -0,0 +1,31 @@ +import { useEditor } from '@/services/video/hooks'; +import { Button } from '../controls/button/juicy'; +import { CustomSelectionColor } from './CustomSelectionColor'; + +export const SubjectToggle = () => { + const { subjects, selectedSubjectId, selectSubject, createNewSubject } = useEditor(state => ({ + subjects: state.subjects, + selectedSubjectId: state.selectedSubjectId, + selectSubject: state.selectSubject, + createNewSubject: state.createNewSubject + })); + return ( +
+ {subjects.map(subject => { + const toggled = selectedSubjectId === subject.id; + return ( + + + + ); + })} + {subjects.length < 3 && ( + + )} +
+ ); +}; diff --git a/census/website/src/components/editor/VideoContainer.tsx b/census/website/src/components/editor/VideoContainer.tsx new file mode 100644 index 0000000..17356c1 --- /dev/null +++ b/census/website/src/components/editor/VideoContainer.tsx @@ -0,0 +1,24 @@ +import { cn } from '@/utils/cn'; +import * as Media from '@react-av/core'; +import { useMeasure } from '@uidotdev/usehooks'; +import { FC, PropsWithChildren } from 'react'; + +export const VideoContainer: FC = ({ children }) => { + const [ref, { height, width }] = useMeasure(); + + return ( +
+
+ height ? 'h-full' : 'w-full')} + > + {children} + +
+
+ ); +}; diff --git a/census/website/src/components/editor/video/FramePreviews.tsx b/census/website/src/components/editor/video/FramePreviews.tsx new file mode 100644 index 0000000..e8c83b3 --- /dev/null +++ b/census/website/src/components/editor/video/FramePreviews.tsx @@ -0,0 +1,46 @@ +import { getColorForId } from '@/services/video/utils'; + +import { useEditor } from '@/services/video/hooks'; +import * as Media from '@react-av/core'; + +export const FramePreviews = () => { + const duration = Media.useMediaDuration(); + const [, setTime] = Media.useMediaCurrentTimeFine(); + const [, setPlaying] = Media.useMediaPlaying(); + + const selections = useEditor(state => state.selections); + const frames = Object.entries(selections); + + return frames.map(([key, selection]) => { + const time = Number(key); + return ( + + ); + }); +}; diff --git a/census/website/src/components/editor/video/PlaybackBar.tsx b/census/website/src/components/editor/video/PlaybackBar.tsx new file mode 100644 index 0000000..d0a5fc7 --- /dev/null +++ b/census/website/src/components/editor/video/PlaybackBar.tsx @@ -0,0 +1,34 @@ +import * as Slider from '@radix-ui/react-slider'; +import * as Controls from '@react-av/controls'; +import * as Media from '@react-av/core'; +import { ProgressBarRoot } from '@react-av/sliders'; +import { FramePreviews } from './FramePreviews'; +import { Playhead } from './Playhead'; +import { Second } from './Ticks'; + +export const PlaybackBar = () => { + const duration = Media.useMediaDuration(); + const state = Media.useMediaReadyState(); + + return ( +
+
+ + + {state !== Media.MediaReadyState.HAVE_NOTHING && ( +
+ + + + + + + {new Array(Math.ceil(duration)).fill(null).map((_, i) => ( + + ))} +
+ )} +
+
+ ); +}; diff --git a/census/website/src/components/editor/video/Playhead.tsx b/census/website/src/components/editor/video/Playhead.tsx new file mode 100644 index 0000000..f964eb0 --- /dev/null +++ b/census/website/src/components/editor/video/Playhead.tsx @@ -0,0 +1,14 @@ +import * as Slider from '@radix-ui/react-slider'; + +export const Playhead = () => { + return ( + + + + + + ); +}; diff --git a/census/website/src/components/editor/video/Ticks.tsx b/census/website/src/components/editor/video/Ticks.tsx new file mode 100644 index 0000000..e1742be --- /dev/null +++ b/census/website/src/components/editor/video/Ticks.tsx @@ -0,0 +1,68 @@ +import { cn } from '@/utils/cn'; +import * as Media from '@react-av/core'; +import { format } from 'date-fns'; +import { HTMLMotionProps, motion } from 'framer-motion'; +import { FC, HTMLAttributes } from 'react'; +export const Tick: FC> = ({ className, ...props }) => { + return ( + + ); +}; + +export const SubTick: FC> = ({ className, ...props }) => { + return ( + + ); +}; + +interface SecondProps extends HTMLAttributes { + /** + * The start time of the second, i.e. 00:00 - 00:01 would be 0. + */ + second: number; +} + +const ZeroWidthSpace = '\u200B'; + +/* + This component is used to display a second in the timeline. + It is used to display the time of the second and the tick marks. + It uses the container query to determine the screen size and the visibility of the tick marks and the time. + + The time is displayed in the format mm:ss. + If the second is the start of the end, always show it. +*/ +export const Second: FC = ({ second }) => { + const duration = Media.useMediaDuration(); + const proportion = second / duration; + return ( +
+
+ + {format(new Date(new Date().setMinutes(Math.floor(second / 60))).setSeconds(second % 60), 'mm:ss')} + +

{ZeroWidthSpace}

+
+ +
+ + + +
+
+ ); +}; diff --git a/census/website/src/components/icons/Si12hrClock.tsx b/census/website/src/components/icons/Si12hrClock.tsx new file mode 100644 index 0000000..2f6e0e9 --- /dev/null +++ b/census/website/src/components/icons/Si12hrClock.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const Si12hrClock = (props: SVGProps) => ( + + + +); +export default Si12hrClock; diff --git a/census/website/src/components/icons/Si16Plus.tsx b/census/website/src/components/icons/Si16Plus.tsx new file mode 100644 index 0000000..4484934 --- /dev/null +++ b/census/website/src/components/icons/Si16Plus.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const Si16Plus = (props: SVGProps) => ( + + + +); +export default Si16Plus; diff --git a/census/website/src/components/icons/Si18Plus.tsx b/census/website/src/components/icons/Si18Plus.tsx new file mode 100644 index 0000000..8dcb624 --- /dev/null +++ b/census/website/src/components/icons/Si18Plus.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const Si18Plus = (props: SVGProps) => ( + + + +); +export default Si18Plus; diff --git a/census/website/src/components/icons/Si24hrClock.tsx b/census/website/src/components/icons/Si24hrClock.tsx new file mode 100644 index 0000000..e068f03 --- /dev/null +++ b/census/website/src/components/icons/Si24hrClock.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const Si24hrClock = (props: SVGProps) => ( + + + +); +export default Si24hrClock; diff --git a/census/website/src/components/icons/Si2mDistance.tsx b/census/website/src/components/icons/Si2mDistance.tsx new file mode 100644 index 0000000..1f5666e --- /dev/null +++ b/census/website/src/components/icons/Si2mDistance.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const Si2mDistance = (props: SVGProps) => ( + + + +); +export default Si2mDistance; diff --git a/census/website/src/components/icons/Si3dRotate.tsx b/census/website/src/components/icons/Si3dRotate.tsx new file mode 100644 index 0000000..0c290eb --- /dev/null +++ b/census/website/src/components/icons/Si3dRotate.tsx @@ -0,0 +1,26 @@ +import type { SVGProps } from 'react'; +const Si3dRotate = (props: SVGProps) => ( + + + + + + + +); +export default Si3dRotate; diff --git a/census/website/src/components/icons/Si4g.tsx b/census/website/src/components/icons/Si4g.tsx new file mode 100644 index 0000000..d9832a5 --- /dev/null +++ b/census/website/src/components/icons/Si4g.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const Si4g = (props: SVGProps) => ( + + + +); +export default Si4g; diff --git a/census/website/src/components/icons/Si4k.tsx b/census/website/src/components/icons/Si4k.tsx new file mode 100644 index 0000000..ee0a8dd --- /dev/null +++ b/census/website/src/components/icons/Si4k.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const Si4k = (props: SVGProps) => ( + + + +); +export default Si4k; diff --git a/census/website/src/components/icons/Si5g.tsx b/census/website/src/components/icons/Si5g.tsx new file mode 100644 index 0000000..7bc045a --- /dev/null +++ b/census/website/src/components/icons/Si5g.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const Si5g = (props: SVGProps) => ( + + + +); +export default Si5g; diff --git a/census/website/src/components/icons/Si90Degrees.tsx b/census/website/src/components/icons/Si90Degrees.tsx new file mode 100644 index 0000000..c2f8c88 --- /dev/null +++ b/census/website/src/components/icons/Si90Degrees.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const Si90Degrees = (props: SVGProps) => ( + + + +); +export default Si90Degrees; diff --git a/census/website/src/components/icons/SiAZSort.tsx b/census/website/src/components/icons/SiAZSort.tsx new file mode 100644 index 0000000..95e1619 --- /dev/null +++ b/census/website/src/components/icons/SiAZSort.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiAZSort = (props: SVGProps) => ( + + + +); +export default SiAZSort; diff --git a/census/website/src/components/icons/SiAccessibility.tsx b/census/website/src/components/icons/SiAccessibility.tsx new file mode 100644 index 0000000..23432ef --- /dev/null +++ b/census/website/src/components/icons/SiAccessibility.tsx @@ -0,0 +1,19 @@ +import type { SVGProps } from 'react'; +const SiAccessibility = (props: SVGProps) => ( + + + + +); +export default SiAccessibility; diff --git a/census/website/src/components/icons/SiAcorn.tsx b/census/website/src/components/icons/SiAcorn.tsx new file mode 100644 index 0000000..7bd54b9 --- /dev/null +++ b/census/website/src/components/icons/SiAcorn.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiAcorn = (props: SVGProps) => ( + + + +); +export default SiAcorn; diff --git a/census/website/src/components/icons/SiActivity.tsx b/census/website/src/components/icons/SiActivity.tsx new file mode 100644 index 0000000..bd3f463 --- /dev/null +++ b/census/website/src/components/icons/SiActivity.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiActivity = (props: SVGProps) => ( + + + +); +export default SiActivity; diff --git a/census/website/src/components/icons/SiAddVideo.tsx b/census/website/src/components/icons/SiAddVideo.tsx new file mode 100644 index 0000000..0802e33 --- /dev/null +++ b/census/website/src/components/icons/SiAddVideo.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiAddVideo = (props: SVGProps) => ( + + + +); +export default SiAddVideo; diff --git a/census/website/src/components/icons/SiAerial.tsx b/census/website/src/components/icons/SiAerial.tsx new file mode 100644 index 0000000..5789f5f --- /dev/null +++ b/census/website/src/components/icons/SiAerial.tsx @@ -0,0 +1,47 @@ +import type { SVGProps } from 'react'; +const SiAerial = (props: SVGProps) => ( + + + + + + + + +); +export default SiAerial; diff --git a/census/website/src/components/icons/SiAirTrafficControl.tsx b/census/website/src/components/icons/SiAirTrafficControl.tsx new file mode 100644 index 0000000..d86a6c0 --- /dev/null +++ b/census/website/src/components/icons/SiAirTrafficControl.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiAirTrafficControl = (props: SVGProps) => ( + + + +); +export default SiAirTrafficControl; diff --git a/census/website/src/components/icons/SiAirplayToTv.tsx b/census/website/src/components/icons/SiAirplayToTv.tsx new file mode 100644 index 0000000..eb73e13 --- /dev/null +++ b/census/website/src/components/icons/SiAirplayToTv.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiAirplayToTv = (props: SVGProps) => ( + + + + +); +export default SiAirplayToTv; diff --git a/census/website/src/components/icons/SiAirpods.tsx b/census/website/src/components/icons/SiAirpods.tsx new file mode 100644 index 0000000..34a2665 --- /dev/null +++ b/census/website/src/components/icons/SiAirpods.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiAirpods = (props: SVGProps) => ( + + + + +); +export default SiAirpods; diff --git a/census/website/src/components/icons/SiAirpodsCase.tsx b/census/website/src/components/icons/SiAirpodsCase.tsx new file mode 100644 index 0000000..d5a6253 --- /dev/null +++ b/census/website/src/components/icons/SiAirpodsCase.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiAirpodsCase = (props: SVGProps) => ( + + + +); +export default SiAirpodsCase; diff --git a/census/website/src/components/icons/SiAlarm.tsx b/census/website/src/components/icons/SiAlarm.tsx new file mode 100644 index 0000000..d33df7a --- /dev/null +++ b/census/website/src/components/icons/SiAlarm.tsx @@ -0,0 +1,30 @@ +import type { SVGProps } from 'react'; +const SiAlarm = (props: SVGProps) => ( + + + + + + + + +); +export default SiAlarm; diff --git a/census/website/src/components/icons/SiAlarmWarning.tsx b/census/website/src/components/icons/SiAlarmWarning.tsx new file mode 100644 index 0000000..485733f --- /dev/null +++ b/census/website/src/components/icons/SiAlarmWarning.tsx @@ -0,0 +1,30 @@ +import type { SVGProps } from 'react'; +const SiAlarmWarning = (props: SVGProps) => ( + + + + + + + + + +); +export default SiAlarmWarning; diff --git a/census/website/src/components/icons/SiAlert.tsx b/census/website/src/components/icons/SiAlert.tsx new file mode 100644 index 0000000..75e5ccc --- /dev/null +++ b/census/website/src/components/icons/SiAlert.tsx @@ -0,0 +1,15 @@ +import type { SVGProps } from 'react'; +const SiAlert = (props: SVGProps) => ( + + + + + +); +export default SiAlert; diff --git a/census/website/src/components/icons/SiAlien.tsx b/census/website/src/components/icons/SiAlien.tsx new file mode 100644 index 0000000..550082e --- /dev/null +++ b/census/website/src/components/icons/SiAlien.tsx @@ -0,0 +1,18 @@ +import type { SVGProps } from 'react'; +const SiAlien = (props: SVGProps) => ( + + + + + +); +export default SiAlien; diff --git a/census/website/src/components/icons/SiAlien2.tsx b/census/website/src/components/icons/SiAlien2.tsx new file mode 100644 index 0000000..e3c4ace --- /dev/null +++ b/census/website/src/components/icons/SiAlien2.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiAlien2 = (props: SVGProps) => ( + + + + + +); +export default SiAlien2; diff --git a/census/website/src/components/icons/SiAlignArrowDown.tsx b/census/website/src/components/icons/SiAlignArrowDown.tsx new file mode 100644 index 0000000..394e746 --- /dev/null +++ b/census/website/src/components/icons/SiAlignArrowDown.tsx @@ -0,0 +1,15 @@ +import type { SVGProps } from 'react'; +const SiAlignArrowDown = (props: SVGProps) => ( + + + + + +); +export default SiAlignArrowDown; diff --git a/census/website/src/components/icons/SiAlignArrowLeft.tsx b/census/website/src/components/icons/SiAlignArrowLeft.tsx new file mode 100644 index 0000000..dfff225 --- /dev/null +++ b/census/website/src/components/icons/SiAlignArrowLeft.tsx @@ -0,0 +1,15 @@ +import type { SVGProps } from 'react'; +const SiAlignArrowLeft = (props: SVGProps) => ( + + + + + +); +export default SiAlignArrowLeft; diff --git a/census/website/src/components/icons/SiAlignArrowRight.tsx b/census/website/src/components/icons/SiAlignArrowRight.tsx new file mode 100644 index 0000000..b9ff28f --- /dev/null +++ b/census/website/src/components/icons/SiAlignArrowRight.tsx @@ -0,0 +1,15 @@ +import type { SVGProps } from 'react'; +const SiAlignArrowRight = (props: SVGProps) => ( + + + + + +); +export default SiAlignArrowRight; diff --git a/census/website/src/components/icons/SiAlignArrowUp.tsx b/census/website/src/components/icons/SiAlignArrowUp.tsx new file mode 100644 index 0000000..125bdca --- /dev/null +++ b/census/website/src/components/icons/SiAlignArrowUp.tsx @@ -0,0 +1,15 @@ +import type { SVGProps } from 'react'; +const SiAlignArrowUp = (props: SVGProps) => ( + + + + + +); +export default SiAlignArrowUp; diff --git a/census/website/src/components/icons/SiAlignBottom.tsx b/census/website/src/components/icons/SiAlignBottom.tsx new file mode 100644 index 0000000..eb8a4b1 --- /dev/null +++ b/census/website/src/components/icons/SiAlignBottom.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiAlignBottom = (props: SVGProps) => ( + + + + +); +export default SiAlignBottom; diff --git a/census/website/src/components/icons/SiAlignCentreHorizontal.tsx b/census/website/src/components/icons/SiAlignCentreHorizontal.tsx new file mode 100644 index 0000000..0069d1c --- /dev/null +++ b/census/website/src/components/icons/SiAlignCentreHorizontal.tsx @@ -0,0 +1,26 @@ +import type { SVGProps } from 'react'; +const SiAlignCentreHorizontal = (props: SVGProps) => ( + + + + + + + +); +export default SiAlignCentreHorizontal; diff --git a/census/website/src/components/icons/SiAlignCentreVertical.tsx b/census/website/src/components/icons/SiAlignCentreVertical.tsx new file mode 100644 index 0000000..e6c8532 --- /dev/null +++ b/census/website/src/components/icons/SiAlignCentreVertical.tsx @@ -0,0 +1,26 @@ +import type { SVGProps } from 'react'; +const SiAlignCentreVertical = (props: SVGProps) => ( + + + + + + + +); +export default SiAlignCentreVertical; diff --git a/census/website/src/components/icons/SiAlignHorizontalCenter.tsx b/census/website/src/components/icons/SiAlignHorizontalCenter.tsx new file mode 100644 index 0000000..030eee5 --- /dev/null +++ b/census/website/src/components/icons/SiAlignHorizontalCenter.tsx @@ -0,0 +1,15 @@ +import type { SVGProps } from 'react'; +const SiAlignHorizontalCenter = (props: SVGProps) => ( + + + + + +); +export default SiAlignHorizontalCenter; diff --git a/census/website/src/components/icons/SiAlignLeft.tsx b/census/website/src/components/icons/SiAlignLeft.tsx new file mode 100644 index 0000000..d1e57de --- /dev/null +++ b/census/website/src/components/icons/SiAlignLeft.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiAlignLeft = (props: SVGProps) => ( + + + + +); +export default SiAlignLeft; diff --git a/census/website/src/components/icons/SiAlignRight.tsx b/census/website/src/components/icons/SiAlignRight.tsx new file mode 100644 index 0000000..6b26d8b --- /dev/null +++ b/census/website/src/components/icons/SiAlignRight.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiAlignRight = (props: SVGProps) => ( + + + + +); +export default SiAlignRight; diff --git a/census/website/src/components/icons/SiAlignTop.tsx b/census/website/src/components/icons/SiAlignTop.tsx new file mode 100644 index 0000000..c3d6c60 --- /dev/null +++ b/census/website/src/components/icons/SiAlignTop.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiAlignTop = (props: SVGProps) => ( + + + + +); +export default SiAlignTop; diff --git a/census/website/src/components/icons/SiAlignVerticalCenter.tsx b/census/website/src/components/icons/SiAlignVerticalCenter.tsx new file mode 100644 index 0000000..29e3aef --- /dev/null +++ b/census/website/src/components/icons/SiAlignVerticalCenter.tsx @@ -0,0 +1,15 @@ +import type { SVGProps } from 'react'; +const SiAlignVerticalCenter = (props: SVGProps) => ( + + + + + +); +export default SiAlignVerticalCenter; diff --git a/census/website/src/components/icons/SiAltKey.tsx b/census/website/src/components/icons/SiAltKey.tsx new file mode 100644 index 0000000..84f6f42 --- /dev/null +++ b/census/website/src/components/icons/SiAltKey.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiAltKey = (props: SVGProps) => ( + + + +); +export default SiAltKey; diff --git a/census/website/src/components/icons/SiAnchor.tsx b/census/website/src/components/icons/SiAnchor.tsx new file mode 100644 index 0000000..f49cfc4 --- /dev/null +++ b/census/website/src/components/icons/SiAnchor.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiAnchor = (props: SVGProps) => ( + + + + + + +); +export default SiAnchor; diff --git a/census/website/src/components/icons/SiAngle.tsx b/census/website/src/components/icons/SiAngle.tsx new file mode 100644 index 0000000..fc44154 --- /dev/null +++ b/census/website/src/components/icons/SiAngle.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiAngle = (props: SVGProps) => ( + + + + +); +export default SiAngle; diff --git a/census/website/src/components/icons/SiAnimationEnter.tsx b/census/website/src/components/icons/SiAnimationEnter.tsx new file mode 100644 index 0000000..8a3cfde --- /dev/null +++ b/census/website/src/components/icons/SiAnimationEnter.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiAnimationEnter = (props: SVGProps) => ( + + + +); +export default SiAnimationEnter; diff --git a/census/website/src/components/icons/SiAnimationExit.tsx b/census/website/src/components/icons/SiAnimationExit.tsx new file mode 100644 index 0000000..84fa69a --- /dev/null +++ b/census/website/src/components/icons/SiAnimationExit.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiAnimationExit = (props: SVGProps) => ( + + + +); +export default SiAnimationExit; diff --git a/census/website/src/components/icons/SiAnnotation.tsx b/census/website/src/components/icons/SiAnnotation.tsx new file mode 100644 index 0000000..fecabe4 --- /dev/null +++ b/census/website/src/components/icons/SiAnnotation.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiAnnotation = (props: SVGProps) => ( + + + +); +export default SiAnnotation; diff --git a/census/website/src/components/icons/SiAnnotationDots.tsx b/census/website/src/components/icons/SiAnnotationDots.tsx new file mode 100644 index 0000000..0d547d0 --- /dev/null +++ b/census/website/src/components/icons/SiAnnotationDots.tsx @@ -0,0 +1,31 @@ +import type { SVGProps } from 'react'; +const SiAnnotationDots = (props: SVGProps) => ( + + + + + + +); +export default SiAnnotationDots; diff --git a/census/website/src/components/icons/SiAnnotationWarning.tsx b/census/website/src/components/icons/SiAnnotationWarning.tsx new file mode 100644 index 0000000..b86720d --- /dev/null +++ b/census/website/src/components/icons/SiAnnotationWarning.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiAnnotationWarning = (props: SVGProps) => ( + + + + + +); +export default SiAnnotationWarning; diff --git a/census/website/src/components/icons/SiAnnouncement.tsx b/census/website/src/components/icons/SiAnnouncement.tsx new file mode 100644 index 0000000..6790f6a --- /dev/null +++ b/census/website/src/components/icons/SiAnnouncement.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiAnnouncement = (props: SVGProps) => ( + + + + + +); +export default SiAnnouncement; diff --git a/census/website/src/components/icons/SiAppStore.tsx b/census/website/src/components/icons/SiAppStore.tsx new file mode 100644 index 0000000..e5240f7 --- /dev/null +++ b/census/website/src/components/icons/SiAppStore.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiAppStore = (props: SVGProps) => ( + + + +); +export default SiAppStore; diff --git a/census/website/src/components/icons/SiApple.tsx b/census/website/src/components/icons/SiApple.tsx new file mode 100644 index 0000000..66fdb6a --- /dev/null +++ b/census/website/src/components/icons/SiApple.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiApple = (props: SVGProps) => ( + + + + +); +export default SiApple; diff --git a/census/website/src/components/icons/SiApple2.tsx b/census/website/src/components/icons/SiApple2.tsx new file mode 100644 index 0000000..f18cf75 --- /dev/null +++ b/census/website/src/components/icons/SiApple2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiApple2 = (props: SVGProps) => ( + + + +); +export default SiApple2; diff --git a/census/website/src/components/icons/SiApplePay.tsx b/census/website/src/components/icons/SiApplePay.tsx new file mode 100644 index 0000000..f68fe08 --- /dev/null +++ b/census/website/src/components/icons/SiApplePay.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiApplePay = (props: SVGProps) => ( + + + + + +); +export default SiApplePay; diff --git a/census/website/src/components/icons/SiAppleWatch.tsx b/census/website/src/components/icons/SiAppleWatch.tsx new file mode 100644 index 0000000..360e981 --- /dev/null +++ b/census/website/src/components/icons/SiAppleWatch.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiAppleWatch = (props: SVGProps) => ( + + + + + +); +export default SiAppleWatch; diff --git a/census/website/src/components/icons/SiAppleWatchUltra.tsx b/census/website/src/components/icons/SiAppleWatchUltra.tsx new file mode 100644 index 0000000..171fce7 --- /dev/null +++ b/census/website/src/components/icons/SiAppleWatchUltra.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiAppleWatchUltra = (props: SVGProps) => ( + + + +); +export default SiAppleWatchUltra; diff --git a/census/website/src/components/icons/SiApps.tsx b/census/website/src/components/icons/SiApps.tsx new file mode 100644 index 0000000..998780d --- /dev/null +++ b/census/website/src/components/icons/SiApps.tsx @@ -0,0 +1,29 @@ +import type { SVGProps } from 'react'; +const SiApps = (props: SVGProps) => ( + + + + + + + +); +export default SiApps; diff --git a/census/website/src/components/icons/SiAquarius.tsx b/census/website/src/components/icons/SiAquarius.tsx new file mode 100644 index 0000000..3dbf080 --- /dev/null +++ b/census/website/src/components/icons/SiAquarius.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiAquarius = (props: SVGProps) => ( + + + + +); +export default SiAquarius; diff --git a/census/website/src/components/icons/SiArcheryArrow.tsx b/census/website/src/components/icons/SiArcheryArrow.tsx new file mode 100644 index 0000000..4019517 --- /dev/null +++ b/census/website/src/components/icons/SiArcheryArrow.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiArcheryArrow = (props: SVGProps) => ( + + + +); +export default SiArcheryArrow; diff --git a/census/website/src/components/icons/SiArchive.tsx b/census/website/src/components/icons/SiArchive.tsx new file mode 100644 index 0000000..f9403e5 --- /dev/null +++ b/census/website/src/components/icons/SiArchive.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiArchive = (props: SVGProps) => ( + + + + + +); +export default SiArchive; diff --git a/census/website/src/components/icons/SiArchiveArrowDown.tsx b/census/website/src/components/icons/SiArchiveArrowDown.tsx new file mode 100644 index 0000000..aff9bc1 --- /dev/null +++ b/census/website/src/components/icons/SiArchiveArrowDown.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiArchiveArrowDown = (props: SVGProps) => ( + + + +); +export default SiArchiveArrowDown; diff --git a/census/website/src/components/icons/SiArchiveArrowUp.tsx b/census/website/src/components/icons/SiArchiveArrowUp.tsx new file mode 100644 index 0000000..254ed1b --- /dev/null +++ b/census/website/src/components/icons/SiArchiveArrowUp.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiArchiveArrowUp = (props: SVGProps) => ( + + + +); +export default SiArchiveArrowUp; diff --git a/census/website/src/components/icons/SiArchiveCheck.tsx b/census/website/src/components/icons/SiArchiveCheck.tsx new file mode 100644 index 0000000..16b90e8 --- /dev/null +++ b/census/website/src/components/icons/SiArchiveCheck.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiArchiveCheck = (props: SVGProps) => ( + + + +); +export default SiArchiveCheck; diff --git a/census/website/src/components/icons/SiArchiveMinus.tsx b/census/website/src/components/icons/SiArchiveMinus.tsx new file mode 100644 index 0000000..ae3e38e --- /dev/null +++ b/census/website/src/components/icons/SiArchiveMinus.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiArchiveMinus = (props: SVGProps) => ( + + + +); +export default SiArchiveMinus; diff --git a/census/website/src/components/icons/SiArchivePlus.tsx b/census/website/src/components/icons/SiArchivePlus.tsx new file mode 100644 index 0000000..67fd36f --- /dev/null +++ b/census/website/src/components/icons/SiArchivePlus.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiArchivePlus = (props: SVGProps) => ( + + + +); +export default SiArchivePlus; diff --git a/census/website/src/components/icons/SiArchiveStack.tsx b/census/website/src/components/icons/SiArchiveStack.tsx new file mode 100644 index 0000000..3e19b94 --- /dev/null +++ b/census/website/src/components/icons/SiArchiveStack.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiArchiveStack = (props: SVGProps) => ( + + + +); +export default SiArchiveStack; diff --git a/census/website/src/components/icons/SiAries.tsx b/census/website/src/components/icons/SiAries.tsx new file mode 100644 index 0000000..f800cef --- /dev/null +++ b/census/website/src/components/icons/SiAries.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiAries = (props: SVGProps) => ( + + + + +); +export default SiAries; diff --git a/census/website/src/components/icons/SiArrowDown.tsx b/census/website/src/components/icons/SiArrowDown.tsx new file mode 100644 index 0000000..aa8d87d --- /dev/null +++ b/census/website/src/components/icons/SiArrowDown.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiArrowDown = (props: SVGProps) => ( + + + + +); +export default SiArrowDown; diff --git a/census/website/src/components/icons/SiArrowDownCircle.tsx b/census/website/src/components/icons/SiArrowDownCircle.tsx new file mode 100644 index 0000000..ca76499 --- /dev/null +++ b/census/website/src/components/icons/SiArrowDownCircle.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiArrowDownCircle = (props: SVGProps) => ( + + + + + +); +export default SiArrowDownCircle; diff --git a/census/website/src/components/icons/SiArrowDownLeft.tsx b/census/website/src/components/icons/SiArrowDownLeft.tsx new file mode 100644 index 0000000..107a8a8 --- /dev/null +++ b/census/website/src/components/icons/SiArrowDownLeft.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiArrowDownLeft = (props: SVGProps) => ( + + + + +); +export default SiArrowDownLeft; diff --git a/census/website/src/components/icons/SiArrowDownLeftCircle.tsx b/census/website/src/components/icons/SiArrowDownLeftCircle.tsx new file mode 100644 index 0000000..2b465cb --- /dev/null +++ b/census/website/src/components/icons/SiArrowDownLeftCircle.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiArrowDownLeftCircle = (props: SVGProps) => ( + + + + + +); +export default SiArrowDownLeftCircle; diff --git a/census/website/src/components/icons/SiArrowDownRight.tsx b/census/website/src/components/icons/SiArrowDownRight.tsx new file mode 100644 index 0000000..3eeb430 --- /dev/null +++ b/census/website/src/components/icons/SiArrowDownRight.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiArrowDownRight = (props: SVGProps) => ( + + + + +); +export default SiArrowDownRight; diff --git a/census/website/src/components/icons/SiArrowDownRightCircle.tsx b/census/website/src/components/icons/SiArrowDownRightCircle.tsx new file mode 100644 index 0000000..2bf7ee5 --- /dev/null +++ b/census/website/src/components/icons/SiArrowDownRightCircle.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiArrowDownRightCircle = (props: SVGProps) => ( + + + + + +); +export default SiArrowDownRightCircle; diff --git a/census/website/src/components/icons/SiArrowLeft.tsx b/census/website/src/components/icons/SiArrowLeft.tsx new file mode 100644 index 0000000..84d32ac --- /dev/null +++ b/census/website/src/components/icons/SiArrowLeft.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiArrowLeft = (props: SVGProps) => ( + + + + +); +export default SiArrowLeft; diff --git a/census/website/src/components/icons/SiArrowLeftCircle.tsx b/census/website/src/components/icons/SiArrowLeftCircle.tsx new file mode 100644 index 0000000..39be204 --- /dev/null +++ b/census/website/src/components/icons/SiArrowLeftCircle.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiArrowLeftCircle = (props: SVGProps) => ( + + + +); +export default SiArrowLeftCircle; diff --git a/census/website/src/components/icons/SiArrowRight.tsx b/census/website/src/components/icons/SiArrowRight.tsx new file mode 100644 index 0000000..e4085f8 --- /dev/null +++ b/census/website/src/components/icons/SiArrowRight.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiArrowRight = (props: SVGProps) => ( + + + + +); +export default SiArrowRight; diff --git a/census/website/src/components/icons/SiArrowRightCircle.tsx b/census/website/src/components/icons/SiArrowRightCircle.tsx new file mode 100644 index 0000000..89168ed --- /dev/null +++ b/census/website/src/components/icons/SiArrowRightCircle.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiArrowRightCircle = (props: SVGProps) => ( + + + +); +export default SiArrowRightCircle; diff --git a/census/website/src/components/icons/SiArrowUp.tsx b/census/website/src/components/icons/SiArrowUp.tsx new file mode 100644 index 0000000..6c9d8d2 --- /dev/null +++ b/census/website/src/components/icons/SiArrowUp.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiArrowUp = (props: SVGProps) => ( + + + + +); +export default SiArrowUp; diff --git a/census/website/src/components/icons/SiArrowUpCircle.tsx b/census/website/src/components/icons/SiArrowUpCircle.tsx new file mode 100644 index 0000000..d1c1eed --- /dev/null +++ b/census/website/src/components/icons/SiArrowUpCircle.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiArrowUpCircle = (props: SVGProps) => ( + + + + + +); +export default SiArrowUpCircle; diff --git a/census/website/src/components/icons/SiArrowUpLeft.tsx b/census/website/src/components/icons/SiArrowUpLeft.tsx new file mode 100644 index 0000000..503b2a8 --- /dev/null +++ b/census/website/src/components/icons/SiArrowUpLeft.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiArrowUpLeft = (props: SVGProps) => ( + + + + +); +export default SiArrowUpLeft; diff --git a/census/website/src/components/icons/SiArrowUpLeftCircle.tsx b/census/website/src/components/icons/SiArrowUpLeftCircle.tsx new file mode 100644 index 0000000..e6b2228 --- /dev/null +++ b/census/website/src/components/icons/SiArrowUpLeftCircle.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiArrowUpLeftCircle = (props: SVGProps) => ( + + + + + +); +export default SiArrowUpLeftCircle; diff --git a/census/website/src/components/icons/SiArrowUpRight.tsx b/census/website/src/components/icons/SiArrowUpRight.tsx new file mode 100644 index 0000000..1e3b2b8 --- /dev/null +++ b/census/website/src/components/icons/SiArrowUpRight.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiArrowUpRight = (props: SVGProps) => ( + + + + +); +export default SiArrowUpRight; diff --git a/census/website/src/components/icons/SiArrowUpRightCircle.tsx b/census/website/src/components/icons/SiArrowUpRightCircle.tsx new file mode 100644 index 0000000..d66a747 --- /dev/null +++ b/census/website/src/components/icons/SiArrowUpRightCircle.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiArrowUpRightCircle = (props: SVGProps) => ( + + + + + +); +export default SiArrowUpRightCircle; diff --git a/census/website/src/components/icons/SiArrows.tsx b/census/website/src/components/icons/SiArrows.tsx new file mode 100644 index 0000000..8ebf4e9 --- /dev/null +++ b/census/website/src/components/icons/SiArrows.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiArrows = (props: SVGProps) => ( + + + +); +export default SiArrows; diff --git a/census/website/src/components/icons/SiAspectRatio.tsx b/census/website/src/components/icons/SiAspectRatio.tsx new file mode 100644 index 0000000..d5f59b0 --- /dev/null +++ b/census/website/src/components/icons/SiAspectRatio.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiAspectRatio = (props: SVGProps) => ( + + + +); +export default SiAspectRatio; diff --git a/census/website/src/components/icons/SiAsterisk.tsx b/census/website/src/components/icons/SiAsterisk.tsx new file mode 100644 index 0000000..df34deb --- /dev/null +++ b/census/website/src/components/icons/SiAsterisk.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiAsterisk = (props: SVGProps) => ( + + + + + +); +export default SiAsterisk; diff --git a/census/website/src/components/icons/SiAstronomy.tsx b/census/website/src/components/icons/SiAstronomy.tsx new file mode 100644 index 0000000..f2b9951 --- /dev/null +++ b/census/website/src/components/icons/SiAstronomy.tsx @@ -0,0 +1,34 @@ +import type { SVGProps } from 'react'; +const SiAstronomy = (props: SVGProps) => ( + + + + + + + + + +); +export default SiAstronomy; diff --git a/census/website/src/components/icons/SiAtSign.tsx b/census/website/src/components/icons/SiAtSign.tsx new file mode 100644 index 0000000..b25030e --- /dev/null +++ b/census/website/src/components/icons/SiAtSign.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiAtSign = (props: SVGProps) => ( + + + + +); +export default SiAtSign; diff --git a/census/website/src/components/icons/SiAvatarCheckSquare.tsx b/census/website/src/components/icons/SiAvatarCheckSquare.tsx new file mode 100644 index 0000000..e02bd36 --- /dev/null +++ b/census/website/src/components/icons/SiAvatarCheckSquare.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiAvatarCheckSquare = (props: SVGProps) => ( + + + +); +export default SiAvatarCheckSquare; diff --git a/census/website/src/components/icons/SiAvatarHexagonal.tsx b/census/website/src/components/icons/SiAvatarHexagonal.tsx new file mode 100644 index 0000000..30b508d --- /dev/null +++ b/census/website/src/components/icons/SiAvatarHexagonal.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiAvatarHexagonal = (props: SVGProps) => ( + + + +); +export default SiAvatarHexagonal; diff --git a/census/website/src/components/icons/SiAvatarSquare.tsx b/census/website/src/components/icons/SiAvatarSquare.tsx new file mode 100644 index 0000000..9cf3130 --- /dev/null +++ b/census/website/src/components/icons/SiAvatarSquare.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiAvatarSquare = (props: SVGProps) => ( + + + +); +export default SiAvatarSquare; diff --git a/census/website/src/components/icons/SiAward.tsx b/census/website/src/components/icons/SiAward.tsx new file mode 100644 index 0000000..bddeecb --- /dev/null +++ b/census/website/src/components/icons/SiAward.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiAward = (props: SVGProps) => ( + + + + +); +export default SiAward; diff --git a/census/website/src/components/icons/SiAxe.tsx b/census/website/src/components/icons/SiAxe.tsx new file mode 100644 index 0000000..1072d1e --- /dev/null +++ b/census/website/src/components/icons/SiAxe.tsx @@ -0,0 +1,23 @@ +import type { SVGProps } from 'react'; +const SiAxe = (props: SVGProps) => ( + + + + + + + + + + + + + +); +export default SiAxe; diff --git a/census/website/src/components/icons/SiAxes.tsx b/census/website/src/components/icons/SiAxes.tsx new file mode 100644 index 0000000..151a698 --- /dev/null +++ b/census/website/src/components/icons/SiAxes.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiAxes = (props: SVGProps) => ( + + + +); +export default SiAxes; diff --git a/census/website/src/components/icons/SiBack.tsx b/census/website/src/components/icons/SiBack.tsx new file mode 100644 index 0000000..8969e36 --- /dev/null +++ b/census/website/src/components/icons/SiBack.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBack = (props: SVGProps) => ( + + + +); +export default SiBack; diff --git a/census/website/src/components/icons/SiBackpack.tsx b/census/website/src/components/icons/SiBackpack.tsx new file mode 100644 index 0000000..a9fbea5 --- /dev/null +++ b/census/website/src/components/icons/SiBackpack.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiBackpack = (props: SVGProps) => ( + + + + + +); +export default SiBackpack; diff --git a/census/website/src/components/icons/SiBacteria.tsx b/census/website/src/components/icons/SiBacteria.tsx new file mode 100644 index 0000000..5a8e36a --- /dev/null +++ b/census/website/src/components/icons/SiBacteria.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiBacteria = (props: SVGProps) => ( + + + + +); +export default SiBacteria; diff --git a/census/website/src/components/icons/SiBadge.tsx b/census/website/src/components/icons/SiBadge.tsx new file mode 100644 index 0000000..746c615 --- /dev/null +++ b/census/website/src/components/icons/SiBadge.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiBadge = (props: SVGProps) => ( + + + + +); +export default SiBadge; diff --git a/census/website/src/components/icons/SiBadge2.tsx b/census/website/src/components/icons/SiBadge2.tsx new file mode 100644 index 0000000..683205a --- /dev/null +++ b/census/website/src/components/icons/SiBadge2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBadge2 = (props: SVGProps) => ( + + + +); +export default SiBadge2; diff --git a/census/website/src/components/icons/SiBaguette.tsx b/census/website/src/components/icons/SiBaguette.tsx new file mode 100644 index 0000000..6cf34e1 --- /dev/null +++ b/census/website/src/components/icons/SiBaguette.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiBaguette = (props: SVGProps) => ( + + + + + + +); +export default SiBaguette; diff --git a/census/website/src/components/icons/SiBaht.tsx b/census/website/src/components/icons/SiBaht.tsx new file mode 100644 index 0000000..7e74c72 --- /dev/null +++ b/census/website/src/components/icons/SiBaht.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBaht = (props: SVGProps) => ( + + + +); +export default SiBaht; diff --git a/census/website/src/components/icons/SiBalanceSheet.tsx b/census/website/src/components/icons/SiBalanceSheet.tsx new file mode 100644 index 0000000..a5bf2b0 --- /dev/null +++ b/census/website/src/components/icons/SiBalanceSheet.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiBalanceSheet = (props: SVGProps) => ( + + + + + +); +export default SiBalanceSheet; diff --git a/census/website/src/components/icons/SiBall.tsx b/census/website/src/components/icons/SiBall.tsx new file mode 100644 index 0000000..f73076c --- /dev/null +++ b/census/website/src/components/icons/SiBall.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBall = (props: SVGProps) => ( + + + +); +export default SiBall; diff --git a/census/website/src/components/icons/SiBallRolling.tsx b/census/website/src/components/icons/SiBallRolling.tsx new file mode 100644 index 0000000..b5a950f --- /dev/null +++ b/census/website/src/components/icons/SiBallRolling.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBallRolling = (props: SVGProps) => ( + + + +); +export default SiBallRolling; diff --git a/census/website/src/components/icons/SiBallRollingFast.tsx b/census/website/src/components/icons/SiBallRollingFast.tsx new file mode 100644 index 0000000..21e3edd --- /dev/null +++ b/census/website/src/components/icons/SiBallRollingFast.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBallRollingFast = (props: SVGProps) => ( + + + +); +export default SiBallRollingFast; diff --git a/census/website/src/components/icons/SiBalloon.tsx b/census/website/src/components/icons/SiBalloon.tsx new file mode 100644 index 0000000..e0ef14c --- /dev/null +++ b/census/website/src/components/icons/SiBalloon.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBalloon = (props: SVGProps) => ( + + + +); +export default SiBalloon; diff --git a/census/website/src/components/icons/SiBalloons.tsx b/census/website/src/components/icons/SiBalloons.tsx new file mode 100644 index 0000000..c1c76c0 --- /dev/null +++ b/census/website/src/components/icons/SiBalloons.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBalloons = (props: SVGProps) => ( + + + +); +export default SiBalloons; diff --git a/census/website/src/components/icons/SiBallot.tsx b/census/website/src/components/icons/SiBallot.tsx new file mode 100644 index 0000000..d276c1c --- /dev/null +++ b/census/website/src/components/icons/SiBallot.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiBallot = (props: SVGProps) => ( + + + + + +); +export default SiBallot; diff --git a/census/website/src/components/icons/SiBallotBox.tsx b/census/website/src/components/icons/SiBallotBox.tsx new file mode 100644 index 0000000..9787e83 --- /dev/null +++ b/census/website/src/components/icons/SiBallotBox.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiBallotBox = (props: SVGProps) => ( + + + + + +); +export default SiBallotBox; diff --git a/census/website/src/components/icons/SiBanana.tsx b/census/website/src/components/icons/SiBanana.tsx new file mode 100644 index 0000000..2c60717 --- /dev/null +++ b/census/website/src/components/icons/SiBanana.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBanana = (props: SVGProps) => ( + + + +); +export default SiBanana; diff --git a/census/website/src/components/icons/SiBandAid.tsx b/census/website/src/components/icons/SiBandAid.tsx new file mode 100644 index 0000000..85379de --- /dev/null +++ b/census/website/src/components/icons/SiBandAid.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiBandAid = (props: SVGProps) => ( + + + + +); +export default SiBandAid; diff --git a/census/website/src/components/icons/SiBandages.tsx b/census/website/src/components/icons/SiBandages.tsx new file mode 100644 index 0000000..0a7b138 --- /dev/null +++ b/census/website/src/components/icons/SiBandages.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBandages = (props: SVGProps) => ( + + + +); +export default SiBandages; diff --git a/census/website/src/components/icons/SiBank.tsx b/census/website/src/components/icons/SiBank.tsx new file mode 100644 index 0000000..d0f5a1a --- /dev/null +++ b/census/website/src/components/icons/SiBank.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiBank = (props: SVGProps) => ( + + + + + +); +export default SiBank; diff --git a/census/website/src/components/icons/SiBankNote.tsx b/census/website/src/components/icons/SiBankNote.tsx new file mode 100644 index 0000000..0b2ed47 --- /dev/null +++ b/census/website/src/components/icons/SiBankNote.tsx @@ -0,0 +1,17 @@ +import type { SVGProps } from 'react'; +const SiBankNote = (props: SVGProps) => ( + + + + +); +export default SiBankNote; diff --git a/census/website/src/components/icons/SiBarcode.tsx b/census/website/src/components/icons/SiBarcode.tsx new file mode 100644 index 0000000..a8be989 --- /dev/null +++ b/census/website/src/components/icons/SiBarcode.tsx @@ -0,0 +1,37 @@ +import type { SVGProps } from 'react'; +const SiBarcode = (props: SVGProps) => ( + + + + + + + + + +); +export default SiBarcode; diff --git a/census/website/src/components/icons/SiBarcode2.tsx b/census/website/src/components/icons/SiBarcode2.tsx new file mode 100644 index 0000000..42ed31d --- /dev/null +++ b/census/website/src/components/icons/SiBarcode2.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiBarcode2 = (props: SVGProps) => ( + + + + + + + +); +export default SiBarcode2; diff --git a/census/website/src/components/icons/SiBaseball.tsx b/census/website/src/components/icons/SiBaseball.tsx new file mode 100644 index 0000000..b763d5b --- /dev/null +++ b/census/website/src/components/icons/SiBaseball.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiBaseball = (props: SVGProps) => ( + + + + + +); +export default SiBaseball; diff --git a/census/website/src/components/icons/SiBath.tsx b/census/website/src/components/icons/SiBath.tsx new file mode 100644 index 0000000..c49d0ce --- /dev/null +++ b/census/website/src/components/icons/SiBath.tsx @@ -0,0 +1,41 @@ +import type { SVGProps } from 'react'; +const SiBath = (props: SVGProps) => ( + + + + + + + + + + + + + +); +export default SiBath; diff --git a/census/website/src/components/icons/SiBattery.tsx b/census/website/src/components/icons/SiBattery.tsx new file mode 100644 index 0000000..c661d35 --- /dev/null +++ b/census/website/src/components/icons/SiBattery.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiBattery = (props: SVGProps) => ( + + + + +); +export default SiBattery; diff --git a/census/website/src/components/icons/SiBatteryCharging.tsx b/census/website/src/components/icons/SiBatteryCharging.tsx new file mode 100644 index 0000000..12a2288 --- /dev/null +++ b/census/website/src/components/icons/SiBatteryCharging.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiBatteryCharging = (props: SVGProps) => ( + + + + + +); +export default SiBatteryCharging; diff --git a/census/website/src/components/icons/SiBatteryError.tsx b/census/website/src/components/icons/SiBatteryError.tsx new file mode 100644 index 0000000..ca6e96b --- /dev/null +++ b/census/website/src/components/icons/SiBatteryError.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiBatteryError = (props: SVGProps) => ( + + + +); +export default SiBatteryError; diff --git a/census/website/src/components/icons/SiBatteryFull.tsx b/census/website/src/components/icons/SiBatteryFull.tsx new file mode 100644 index 0000000..e493ab6 --- /dev/null +++ b/census/website/src/components/icons/SiBatteryFull.tsx @@ -0,0 +1,23 @@ +import type { SVGProps } from 'react'; +const SiBatteryFull = (props: SVGProps) => ( + + + + + + + +); +export default SiBatteryFull; diff --git a/census/website/src/components/icons/SiBatteryLow.tsx b/census/website/src/components/icons/SiBatteryLow.tsx new file mode 100644 index 0000000..07cf71e --- /dev/null +++ b/census/website/src/components/icons/SiBatteryLow.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiBatteryLow = (props: SVGProps) => ( + + + + + +); +export default SiBatteryLow; diff --git a/census/website/src/components/icons/SiBatteryMedium.tsx b/census/website/src/components/icons/SiBatteryMedium.tsx new file mode 100644 index 0000000..3fef16a --- /dev/null +++ b/census/website/src/components/icons/SiBatteryMedium.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiBatteryMedium = (props: SVGProps) => ( + + + + + + +); +export default SiBatteryMedium; diff --git a/census/website/src/components/icons/SiBbq.tsx b/census/website/src/components/icons/SiBbq.tsx new file mode 100644 index 0000000..2e26ce0 --- /dev/null +++ b/census/website/src/components/icons/SiBbq.tsx @@ -0,0 +1,32 @@ +import type { SVGProps } from 'react'; +const SiBbq = (props: SVGProps) => ( + + + + + + + + + + +); +export default SiBbq; diff --git a/census/website/src/components/icons/SiBeach.tsx b/census/website/src/components/icons/SiBeach.tsx new file mode 100644 index 0000000..05a0b99 --- /dev/null +++ b/census/website/src/components/icons/SiBeach.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiBeach = (props: SVGProps) => ( + + + + + +); +export default SiBeach; diff --git a/census/website/src/components/icons/SiBeach2.tsx b/census/website/src/components/icons/SiBeach2.tsx new file mode 100644 index 0000000..36e5d7c --- /dev/null +++ b/census/website/src/components/icons/SiBeach2.tsx @@ -0,0 +1,42 @@ +import type { SVGProps } from 'react'; +const SiBeach2 = (props: SVGProps) => ( + + + + + + + + +); +export default SiBeach2; diff --git a/census/website/src/components/icons/SiBed.tsx b/census/website/src/components/icons/SiBed.tsx new file mode 100644 index 0000000..63aacbc --- /dev/null +++ b/census/website/src/components/icons/SiBed.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiBed = (props: SVGProps) => ( + + + + +); +export default SiBed; diff --git a/census/website/src/components/icons/SiBeer.tsx b/census/website/src/components/icons/SiBeer.tsx new file mode 100644 index 0000000..25c9f64 --- /dev/null +++ b/census/website/src/components/icons/SiBeer.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiBeer = (props: SVGProps) => ( + + + + +); +export default SiBeer; diff --git a/census/website/src/components/icons/SiBell.tsx b/census/website/src/components/icons/SiBell.tsx new file mode 100644 index 0000000..46db418 --- /dev/null +++ b/census/website/src/components/icons/SiBell.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiBell = (props: SVGProps) => ( + + + + +); +export default SiBell; diff --git a/census/website/src/components/icons/SiBellCheck.tsx b/census/website/src/components/icons/SiBellCheck.tsx new file mode 100644 index 0000000..6434e62 --- /dev/null +++ b/census/website/src/components/icons/SiBellCheck.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiBellCheck = (props: SVGProps) => ( + + + + + +); +export default SiBellCheck; diff --git a/census/website/src/components/icons/SiBellCross.tsx b/census/website/src/components/icons/SiBellCross.tsx new file mode 100644 index 0000000..4f118f2 --- /dev/null +++ b/census/website/src/components/icons/SiBellCross.tsx @@ -0,0 +1,34 @@ +import type { SVGProps } from 'react'; +const SiBellCross = (props: SVGProps) => ( + + + + + + +); +export default SiBellCross; diff --git a/census/website/src/components/icons/SiBellOff.tsx b/census/website/src/components/icons/SiBellOff.tsx new file mode 100644 index 0000000..727c0a0 --- /dev/null +++ b/census/website/src/components/icons/SiBellOff.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiBellOff = (props: SVGProps) => ( + + + + + +); +export default SiBellOff; diff --git a/census/website/src/components/icons/SiBellRinging.tsx b/census/website/src/components/icons/SiBellRinging.tsx new file mode 100644 index 0000000..6c377fd --- /dev/null +++ b/census/website/src/components/icons/SiBellRinging.tsx @@ -0,0 +1,34 @@ +import type { SVGProps } from 'react'; +const SiBellRinging = (props: SVGProps) => ( + + + + + + +); +export default SiBellRinging; diff --git a/census/website/src/components/icons/SiBellSnooze.tsx b/census/website/src/components/icons/SiBellSnooze.tsx new file mode 100644 index 0000000..3f63ee6 --- /dev/null +++ b/census/website/src/components/icons/SiBellSnooze.tsx @@ -0,0 +1,34 @@ +import type { SVGProps } from 'react'; +const SiBellSnooze = (props: SVGProps) => ( + + + + + + +); +export default SiBellSnooze; diff --git a/census/website/src/components/icons/SiBezierCurve.tsx b/census/website/src/components/icons/SiBezierCurve.tsx new file mode 100644 index 0000000..015b95a --- /dev/null +++ b/census/website/src/components/icons/SiBezierCurve.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBezierCurve = (props: SVGProps) => ( + + + +); +export default SiBezierCurve; diff --git a/census/website/src/components/icons/SiBicycle.tsx b/census/website/src/components/icons/SiBicycle.tsx new file mode 100644 index 0000000..4ca296d --- /dev/null +++ b/census/website/src/components/icons/SiBicycle.tsx @@ -0,0 +1,33 @@ +import type { SVGProps } from 'react'; +const SiBicycle = (props: SVGProps) => ( + + + + + + + +); +export default SiBicycle; diff --git a/census/website/src/components/icons/SiBinary.tsx b/census/website/src/components/icons/SiBinary.tsx new file mode 100644 index 0000000..ec0cdb7 --- /dev/null +++ b/census/website/src/components/icons/SiBinary.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBinary = (props: SVGProps) => ( + + + +); +export default SiBinary; diff --git a/census/website/src/components/icons/SiBinoculars.tsx b/census/website/src/components/icons/SiBinoculars.tsx new file mode 100644 index 0000000..b822406 --- /dev/null +++ b/census/website/src/components/icons/SiBinoculars.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBinoculars = (props: SVGProps) => ( + + + +); +export default SiBinoculars; diff --git a/census/website/src/components/icons/SiBird.tsx b/census/website/src/components/icons/SiBird.tsx new file mode 100644 index 0000000..f56c664 --- /dev/null +++ b/census/website/src/components/icons/SiBird.tsx @@ -0,0 +1,16 @@ +import type { SVGProps } from 'react'; +const SiBird = (props: SVGProps) => ( + + + + +); +export default SiBird; diff --git a/census/website/src/components/icons/SiBird2.tsx b/census/website/src/components/icons/SiBird2.tsx new file mode 100644 index 0000000..ea324d7 --- /dev/null +++ b/census/website/src/components/icons/SiBird2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBird2 = (props: SVGProps) => ( + + + +); +export default SiBird2; diff --git a/census/website/src/components/icons/SiBirdHouse.tsx b/census/website/src/components/icons/SiBirdHouse.tsx new file mode 100644 index 0000000..c22ac59 --- /dev/null +++ b/census/website/src/components/icons/SiBirdHouse.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBirdHouse = (props: SVGProps) => ( + + + +); +export default SiBirdHouse; diff --git a/census/website/src/components/icons/SiBitcoin.tsx b/census/website/src/components/icons/SiBitcoin.tsx new file mode 100644 index 0000000..a7cc021 --- /dev/null +++ b/census/website/src/components/icons/SiBitcoin.tsx @@ -0,0 +1,17 @@ +import type { SVGProps } from 'react'; +const SiBitcoin = (props: SVGProps) => ( + + + + + + + +); +export default SiBitcoin; diff --git a/census/website/src/components/icons/SiBlindsClosed.tsx b/census/website/src/components/icons/SiBlindsClosed.tsx new file mode 100644 index 0000000..f515664 --- /dev/null +++ b/census/website/src/components/icons/SiBlindsClosed.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiBlindsClosed = (props: SVGProps) => ( + + + + + +); +export default SiBlindsClosed; diff --git a/census/website/src/components/icons/SiBlindsOpen.tsx b/census/website/src/components/icons/SiBlindsOpen.tsx new file mode 100644 index 0000000..93e6e7c --- /dev/null +++ b/census/website/src/components/icons/SiBlindsOpen.tsx @@ -0,0 +1,18 @@ +import type { SVGProps } from 'react'; +const SiBlindsOpen = (props: SVGProps) => ( + + + + + +); +export default SiBlindsOpen; diff --git a/census/website/src/components/icons/SiBlockInside.tsx b/census/website/src/components/icons/SiBlockInside.tsx new file mode 100644 index 0000000..b9ab4cc --- /dev/null +++ b/census/website/src/components/icons/SiBlockInside.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiBlockInside = (props: SVGProps) => ( + + + +); +export default SiBlockInside; diff --git a/census/website/src/components/icons/SiBlockOutside.tsx b/census/website/src/components/icons/SiBlockOutside.tsx new file mode 100644 index 0000000..8305c07 --- /dev/null +++ b/census/website/src/components/icons/SiBlockOutside.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBlockOutside = (props: SVGProps) => ( + + + +); +export default SiBlockOutside; diff --git a/census/website/src/components/icons/SiBlockquote.tsx b/census/website/src/components/icons/SiBlockquote.tsx new file mode 100644 index 0000000..142281f --- /dev/null +++ b/census/website/src/components/icons/SiBlockquote.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiBlockquote = (props: SVGProps) => ( + + + + +); +export default SiBlockquote; diff --git a/census/website/src/components/icons/SiBluetooth.tsx b/census/website/src/components/icons/SiBluetooth.tsx new file mode 100644 index 0000000..f91aa17 --- /dev/null +++ b/census/website/src/components/icons/SiBluetooth.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiBluetooth = (props: SVGProps) => ( + + + + + + +); +export default SiBluetooth; diff --git a/census/website/src/components/icons/SiBoat.tsx b/census/website/src/components/icons/SiBoat.tsx new file mode 100644 index 0000000..cf0ef1f --- /dev/null +++ b/census/website/src/components/icons/SiBoat.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiBoat = (props: SVGProps) => ( + + + + + +); +export default SiBoat; diff --git a/census/website/src/components/icons/SiBold.tsx b/census/website/src/components/icons/SiBold.tsx new file mode 100644 index 0000000..6349e4f --- /dev/null +++ b/census/website/src/components/icons/SiBold.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiBold = (props: SVGProps) => ( + + + + +); +export default SiBold; diff --git a/census/website/src/components/icons/SiBolt.tsx b/census/website/src/components/icons/SiBolt.tsx new file mode 100644 index 0000000..5023388 --- /dev/null +++ b/census/website/src/components/icons/SiBolt.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBolt = (props: SVGProps) => ( + + + +); +export default SiBolt; diff --git a/census/website/src/components/icons/SiBone.tsx b/census/website/src/components/icons/SiBone.tsx new file mode 100644 index 0000000..c0ec9ce --- /dev/null +++ b/census/website/src/components/icons/SiBone.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiBone = (props: SVGProps) => ( + + + +); +export default SiBone; diff --git a/census/website/src/components/icons/SiBoneBroken.tsx b/census/website/src/components/icons/SiBoneBroken.tsx new file mode 100644 index 0000000..5483813 --- /dev/null +++ b/census/website/src/components/icons/SiBoneBroken.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBoneBroken = (props: SVGProps) => ( + + + +); +export default SiBoneBroken; diff --git a/census/website/src/components/icons/SiBonfire.tsx b/census/website/src/components/icons/SiBonfire.tsx new file mode 100644 index 0000000..7e16c1b --- /dev/null +++ b/census/website/src/components/icons/SiBonfire.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBonfire = (props: SVGProps) => ( + + + +); +export default SiBonfire; diff --git a/census/website/src/components/icons/SiBook.tsx b/census/website/src/components/icons/SiBook.tsx new file mode 100644 index 0000000..ca130be --- /dev/null +++ b/census/website/src/components/icons/SiBook.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiBook = (props: SVGProps) => ( + + + + +); +export default SiBook; diff --git a/census/website/src/components/icons/SiBook2.tsx b/census/website/src/components/icons/SiBook2.tsx new file mode 100644 index 0000000..5420230 --- /dev/null +++ b/census/website/src/components/icons/SiBook2.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiBook2 = (props: SVGProps) => ( + + + + +); +export default SiBook2; diff --git a/census/website/src/components/icons/SiBookOpen.tsx b/census/website/src/components/icons/SiBookOpen.tsx new file mode 100644 index 0000000..2af94d4 --- /dev/null +++ b/census/website/src/components/icons/SiBookOpen.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiBookOpen = (props: SVGProps) => ( + + + + + +); +export default SiBookOpen; diff --git a/census/website/src/components/icons/SiBookmark.tsx b/census/website/src/components/icons/SiBookmark.tsx new file mode 100644 index 0000000..a168406 --- /dev/null +++ b/census/website/src/components/icons/SiBookmark.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBookmark = (props: SVGProps) => ( + + + +); +export default SiBookmark; diff --git a/census/website/src/components/icons/SiBookmark2.tsx b/census/website/src/components/icons/SiBookmark2.tsx new file mode 100644 index 0000000..08bba4f --- /dev/null +++ b/census/website/src/components/icons/SiBookmark2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBookmark2 = (props: SVGProps) => ( + + + +); +export default SiBookmark2; diff --git a/census/website/src/components/icons/SiBooks.tsx b/census/website/src/components/icons/SiBooks.tsx new file mode 100644 index 0000000..b344d6b --- /dev/null +++ b/census/website/src/components/icons/SiBooks.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiBooks = (props: SVGProps) => ( + + + +); +export default SiBooks; diff --git a/census/website/src/components/icons/SiBorderBottom.tsx b/census/website/src/components/icons/SiBorderBottom.tsx new file mode 100644 index 0000000..11cb110 --- /dev/null +++ b/census/website/src/components/icons/SiBorderBottom.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBorderBottom = (props: SVGProps) => ( + + + +); +export default SiBorderBottom; diff --git a/census/website/src/components/icons/SiBorderCentre.tsx b/census/website/src/components/icons/SiBorderCentre.tsx new file mode 100644 index 0000000..6b07c20 --- /dev/null +++ b/census/website/src/components/icons/SiBorderCentre.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBorderCentre = (props: SVGProps) => ( + + + +); +export default SiBorderCentre; diff --git a/census/website/src/components/icons/SiBorderLeft.tsx b/census/website/src/components/icons/SiBorderLeft.tsx new file mode 100644 index 0000000..f16fc0b --- /dev/null +++ b/census/website/src/components/icons/SiBorderLeft.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBorderLeft = (props: SVGProps) => ( + + + +); +export default SiBorderLeft; diff --git a/census/website/src/components/icons/SiBorderRadiusBottomLeft.tsx b/census/website/src/components/icons/SiBorderRadiusBottomLeft.tsx new file mode 100644 index 0000000..58cdf8c --- /dev/null +++ b/census/website/src/components/icons/SiBorderRadiusBottomLeft.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBorderRadiusBottomLeft = (props: SVGProps) => ( + + + +); +export default SiBorderRadiusBottomLeft; diff --git a/census/website/src/components/icons/SiBorderRadiusBottomRight.tsx b/census/website/src/components/icons/SiBorderRadiusBottomRight.tsx new file mode 100644 index 0000000..b63ce95 --- /dev/null +++ b/census/website/src/components/icons/SiBorderRadiusBottomRight.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBorderRadiusBottomRight = (props: SVGProps) => ( + + + +); +export default SiBorderRadiusBottomRight; diff --git a/census/website/src/components/icons/SiBorderRadiusTopLeft.tsx b/census/website/src/components/icons/SiBorderRadiusTopLeft.tsx new file mode 100644 index 0000000..eb103ac --- /dev/null +++ b/census/website/src/components/icons/SiBorderRadiusTopLeft.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBorderRadiusTopLeft = (props: SVGProps) => ( + + + +); +export default SiBorderRadiusTopLeft; diff --git a/census/website/src/components/icons/SiBorderRadiusTopRight.tsx b/census/website/src/components/icons/SiBorderRadiusTopRight.tsx new file mode 100644 index 0000000..b128a8a --- /dev/null +++ b/census/website/src/components/icons/SiBorderRadiusTopRight.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBorderRadiusTopRight = (props: SVGProps) => ( + + + +); +export default SiBorderRadiusTopRight; diff --git a/census/website/src/components/icons/SiBorderRight.tsx b/census/website/src/components/icons/SiBorderRight.tsx new file mode 100644 index 0000000..3aef8a1 --- /dev/null +++ b/census/website/src/components/icons/SiBorderRight.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBorderRight = (props: SVGProps) => ( + + + +); +export default SiBorderRight; diff --git a/census/website/src/components/icons/SiBorderTop.tsx b/census/website/src/components/icons/SiBorderTop.tsx new file mode 100644 index 0000000..9ec4087 --- /dev/null +++ b/census/website/src/components/icons/SiBorderTop.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBorderTop = (props: SVGProps) => ( + + + +); +export default SiBorderTop; diff --git a/census/website/src/components/icons/SiBorders.tsx b/census/website/src/components/icons/SiBorders.tsx new file mode 100644 index 0000000..eb43a10 --- /dev/null +++ b/census/website/src/components/icons/SiBorders.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBorders = (props: SVGProps) => ( + + + +); +export default SiBorders; diff --git a/census/website/src/components/icons/SiBottle.tsx b/census/website/src/components/icons/SiBottle.tsx new file mode 100644 index 0000000..6f6120d --- /dev/null +++ b/census/website/src/components/icons/SiBottle.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBottle = (props: SVGProps) => ( + + + +); +export default SiBottle; diff --git a/census/website/src/components/icons/SiBounceLeft.tsx b/census/website/src/components/icons/SiBounceLeft.tsx new file mode 100644 index 0000000..aefcece --- /dev/null +++ b/census/website/src/components/icons/SiBounceLeft.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBounceLeft = (props: SVGProps) => ( + + + +); +export default SiBounceLeft; diff --git a/census/website/src/components/icons/SiBounceRight.tsx b/census/website/src/components/icons/SiBounceRight.tsx new file mode 100644 index 0000000..3d950ae --- /dev/null +++ b/census/website/src/components/icons/SiBounceRight.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBounceRight = (props: SVGProps) => ( + + + +); +export default SiBounceRight; diff --git a/census/website/src/components/icons/SiBowl.tsx b/census/website/src/components/icons/SiBowl.tsx new file mode 100644 index 0000000..895c496 --- /dev/null +++ b/census/website/src/components/icons/SiBowl.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiBowl = (props: SVGProps) => ( + + + + +); +export default SiBowl; diff --git a/census/website/src/components/icons/SiBowling.tsx b/census/website/src/components/icons/SiBowling.tsx new file mode 100644 index 0000000..2247447 --- /dev/null +++ b/census/website/src/components/icons/SiBowling.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBowling = (props: SVGProps) => ( + + + +); +export default SiBowling; diff --git a/census/website/src/components/icons/SiBox.tsx b/census/website/src/components/icons/SiBox.tsx new file mode 100644 index 0000000..52c4956 --- /dev/null +++ b/census/website/src/components/icons/SiBox.tsx @@ -0,0 +1,23 @@ +import type { SVGProps } from 'react'; +const SiBox = (props: SVGProps) => ( + + + + + + + +); +export default SiBox; diff --git a/census/website/src/components/icons/SiBoxCheck.tsx b/census/website/src/components/icons/SiBoxCheck.tsx new file mode 100644 index 0000000..dd09196 --- /dev/null +++ b/census/website/src/components/icons/SiBoxCheck.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBoxCheck = (props: SVGProps) => ( + + + +); +export default SiBoxCheck; diff --git a/census/website/src/components/icons/SiBoxCross.tsx b/census/website/src/components/icons/SiBoxCross.tsx new file mode 100644 index 0000000..a4c97fb --- /dev/null +++ b/census/website/src/components/icons/SiBoxCross.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBoxCross = (props: SVGProps) => ( + + + +); +export default SiBoxCross; diff --git a/census/website/src/components/icons/SiBoxes.tsx b/census/website/src/components/icons/SiBoxes.tsx new file mode 100644 index 0000000..3f58cf4 --- /dev/null +++ b/census/website/src/components/icons/SiBoxes.tsx @@ -0,0 +1,34 @@ +import type { SVGProps } from 'react'; +const SiBoxes = (props: SVGProps) => ( + + + + + + +); +export default SiBoxes; diff --git a/census/website/src/components/icons/SiBraces.tsx b/census/website/src/components/icons/SiBraces.tsx new file mode 100644 index 0000000..e202c34 --- /dev/null +++ b/census/website/src/components/icons/SiBraces.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBraces = (props: SVGProps) => ( + + + +); +export default SiBraces; diff --git a/census/website/src/components/icons/SiBracesWithDots.tsx b/census/website/src/components/icons/SiBracesWithDots.tsx new file mode 100644 index 0000000..994dd0f --- /dev/null +++ b/census/website/src/components/icons/SiBracesWithDots.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBracesWithDots = (props: SVGProps) => ( + + + +); +export default SiBracesWithDots; diff --git a/census/website/src/components/icons/SiBrain.tsx b/census/website/src/components/icons/SiBrain.tsx new file mode 100644 index 0000000..47b37d3 --- /dev/null +++ b/census/website/src/components/icons/SiBrain.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBrain = (props: SVGProps) => ( + + + +); +export default SiBrain; diff --git a/census/website/src/components/icons/SiBread.tsx b/census/website/src/components/icons/SiBread.tsx new file mode 100644 index 0000000..48d12d6 --- /dev/null +++ b/census/website/src/components/icons/SiBread.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBread = (props: SVGProps) => ( + + + +); +export default SiBread; diff --git a/census/website/src/components/icons/SiBrickWall.tsx b/census/website/src/components/icons/SiBrickWall.tsx new file mode 100644 index 0000000..a563461 --- /dev/null +++ b/census/website/src/components/icons/SiBrickWall.tsx @@ -0,0 +1,47 @@ +import type { SVGProps } from 'react'; +const SiBrickWall = (props: SVGProps) => ( + + + + + + + + + + + + + + + + + + + +); +export default SiBrickWall; diff --git a/census/website/src/components/icons/SiBridge.tsx b/census/website/src/components/icons/SiBridge.tsx new file mode 100644 index 0000000..89f6720 --- /dev/null +++ b/census/website/src/components/icons/SiBridge.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBridge = (props: SVGProps) => ( + + + +); +export default SiBridge; diff --git a/census/website/src/components/icons/SiBriefcase.tsx b/census/website/src/components/icons/SiBriefcase.tsx new file mode 100644 index 0000000..b8f515a --- /dev/null +++ b/census/website/src/components/icons/SiBriefcase.tsx @@ -0,0 +1,23 @@ +import type { SVGProps } from 'react'; +const SiBriefcase = (props: SVGProps) => ( + + + + + + + +); +export default SiBriefcase; diff --git a/census/website/src/components/icons/SiBriefcase2.tsx b/census/website/src/components/icons/SiBriefcase2.tsx new file mode 100644 index 0000000..db533e4 --- /dev/null +++ b/census/website/src/components/icons/SiBriefcase2.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiBriefcase2 = (props: SVGProps) => ( + + + + +); +export default SiBriefcase2; diff --git a/census/website/src/components/icons/SiBrightnessHigh.tsx b/census/website/src/components/icons/SiBrightnessHigh.tsx new file mode 100644 index 0000000..252956e --- /dev/null +++ b/census/website/src/components/icons/SiBrightnessHigh.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBrightnessHigh = (props: SVGProps) => ( + + + +); +export default SiBrightnessHigh; diff --git a/census/website/src/components/icons/SiBrightnessLow.tsx b/census/website/src/components/icons/SiBrightnessLow.tsx new file mode 100644 index 0000000..70f2811 --- /dev/null +++ b/census/website/src/components/icons/SiBrightnessLow.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBrightnessLow = (props: SVGProps) => ( + + + +); +export default SiBrightnessLow; diff --git a/census/website/src/components/icons/SiBrightnessMedium.tsx b/census/website/src/components/icons/SiBrightnessMedium.tsx new file mode 100644 index 0000000..2b3a140 --- /dev/null +++ b/census/website/src/components/icons/SiBrightnessMedium.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBrightnessMedium = (props: SVGProps) => ( + + + +); +export default SiBrightnessMedium; diff --git a/census/website/src/components/icons/SiBringForward.tsx b/census/website/src/components/icons/SiBringForward.tsx new file mode 100644 index 0000000..0d23693 --- /dev/null +++ b/census/website/src/components/icons/SiBringForward.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBringForward = (props: SVGProps) => ( + + + +); +export default SiBringForward; diff --git a/census/website/src/components/icons/SiBroadcast.tsx b/census/website/src/components/icons/SiBroadcast.tsx new file mode 100644 index 0000000..e00a254 --- /dev/null +++ b/census/website/src/components/icons/SiBroadcast.tsx @@ -0,0 +1,41 @@ +import type { SVGProps } from 'react'; +const SiBroadcast = (props: SVGProps) => ( + + + + + + + + +); +export default SiBroadcast; diff --git a/census/website/src/components/icons/SiBrowser.tsx b/census/website/src/components/icons/SiBrowser.tsx new file mode 100644 index 0000000..94c83ef --- /dev/null +++ b/census/website/src/components/icons/SiBrowser.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiBrowser = (props: SVGProps) => ( + + + + +); +export default SiBrowser; diff --git a/census/website/src/components/icons/SiBrowserCursor.tsx b/census/website/src/components/icons/SiBrowserCursor.tsx new file mode 100644 index 0000000..a71fa1c --- /dev/null +++ b/census/website/src/components/icons/SiBrowserCursor.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBrowserCursor = (props: SVGProps) => ( + + + +); +export default SiBrowserCursor; diff --git a/census/website/src/components/icons/SiBrowserError.tsx b/census/website/src/components/icons/SiBrowserError.tsx new file mode 100644 index 0000000..0b46cc5 --- /dev/null +++ b/census/website/src/components/icons/SiBrowserError.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBrowserError = (props: SVGProps) => ( + + + +); +export default SiBrowserError; diff --git a/census/website/src/components/icons/SiBrowserHistory.tsx b/census/website/src/components/icons/SiBrowserHistory.tsx new file mode 100644 index 0000000..ac24af1 --- /dev/null +++ b/census/website/src/components/icons/SiBrowserHistory.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBrowserHistory = (props: SVGProps) => ( + + + +); +export default SiBrowserHistory; diff --git a/census/website/src/components/icons/SiBrowserTabs.tsx b/census/website/src/components/icons/SiBrowserTabs.tsx new file mode 100644 index 0000000..5567233 --- /dev/null +++ b/census/website/src/components/icons/SiBrowserTabs.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBrowserTabs = (props: SVGProps) => ( + + + +); +export default SiBrowserTabs; diff --git a/census/website/src/components/icons/SiBug.tsx b/census/website/src/components/icons/SiBug.tsx new file mode 100644 index 0000000..2a375f2 --- /dev/null +++ b/census/website/src/components/icons/SiBug.tsx @@ -0,0 +1,49 @@ +import type { SVGProps } from 'react'; +const SiBug = (props: SVGProps) => ( + + + + + + + + + +); +export default SiBug; diff --git a/census/website/src/components/icons/SiBug2.tsx b/census/website/src/components/icons/SiBug2.tsx new file mode 100644 index 0000000..68b2173 --- /dev/null +++ b/census/website/src/components/icons/SiBug2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBug2 = (props: SVGProps) => ( + + + +); +export default SiBug2; diff --git a/census/website/src/components/icons/SiBuilding.tsx b/census/website/src/components/icons/SiBuilding.tsx new file mode 100644 index 0000000..2083d03 --- /dev/null +++ b/census/website/src/components/icons/SiBuilding.tsx @@ -0,0 +1,23 @@ +import type { SVGProps } from 'react'; +const SiBuilding = (props: SVGProps) => ( + + + + + + + +); +export default SiBuilding; diff --git a/census/website/src/components/icons/SiBuilding01.tsx b/census/website/src/components/icons/SiBuilding01.tsx new file mode 100644 index 0000000..96b03ee --- /dev/null +++ b/census/website/src/components/icons/SiBuilding01.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBuilding01 = (props: SVGProps) => ( + + + +); +export default SiBuilding01; diff --git a/census/website/src/components/icons/SiBuilding2.tsx b/census/website/src/components/icons/SiBuilding2.tsx new file mode 100644 index 0000000..389f28d --- /dev/null +++ b/census/website/src/components/icons/SiBuilding2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBuilding2 = (props: SVGProps) => ( + + + +); +export default SiBuilding2; diff --git a/census/website/src/components/icons/SiBuildingMonument.tsx b/census/website/src/components/icons/SiBuildingMonument.tsx new file mode 100644 index 0000000..99a11ff --- /dev/null +++ b/census/website/src/components/icons/SiBuildingMonument.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBuildingMonument = (props: SVGProps) => ( + + + +); +export default SiBuildingMonument; diff --git a/census/website/src/components/icons/SiBuildingStore.tsx b/census/website/src/components/icons/SiBuildingStore.tsx new file mode 100644 index 0000000..f8a0627 --- /dev/null +++ b/census/website/src/components/icons/SiBuildingStore.tsx @@ -0,0 +1,41 @@ +import type { SVGProps } from 'react'; +const SiBuildingStore = (props: SVGProps) => ( + + + + + + + +); +export default SiBuildingStore; diff --git a/census/website/src/components/icons/SiBuildings.tsx b/census/website/src/components/icons/SiBuildings.tsx new file mode 100644 index 0000000..c5f1367 --- /dev/null +++ b/census/website/src/components/icons/SiBuildings.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBuildings = (props: SVGProps) => ( + + + +); +export default SiBuildings; diff --git a/census/website/src/components/icons/SiBulbCheck.tsx b/census/website/src/components/icons/SiBulbCheck.tsx new file mode 100644 index 0000000..733433b --- /dev/null +++ b/census/website/src/components/icons/SiBulbCheck.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBulbCheck = (props: SVGProps) => ( + + + +); +export default SiBulbCheck; diff --git a/census/website/src/components/icons/SiBulbCross.tsx b/census/website/src/components/icons/SiBulbCross.tsx new file mode 100644 index 0000000..a0620d3 --- /dev/null +++ b/census/website/src/components/icons/SiBulbCross.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBulbCross = (props: SVGProps) => ( + + + +); +export default SiBulbCross; diff --git a/census/website/src/components/icons/SiBunting.tsx b/census/website/src/components/icons/SiBunting.tsx new file mode 100644 index 0000000..053c620 --- /dev/null +++ b/census/website/src/components/icons/SiBunting.tsx @@ -0,0 +1,50 @@ +import type { SVGProps } from 'react'; +const SiBunting = (props: SVGProps) => ( + + + + + + + + + + +); +export default SiBunting; diff --git a/census/website/src/components/icons/SiBunting2.tsx b/census/website/src/components/icons/SiBunting2.tsx new file mode 100644 index 0000000..5a2be27 --- /dev/null +++ b/census/website/src/components/icons/SiBunting2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiBunting2 = (props: SVGProps) => ( + + + +); +export default SiBunting2; diff --git a/census/website/src/components/icons/SiBurger.tsx b/census/website/src/components/icons/SiBurger.tsx new file mode 100644 index 0000000..337ec1e --- /dev/null +++ b/census/website/src/components/icons/SiBurger.tsx @@ -0,0 +1,28 @@ +import type { SVGProps } from 'react'; +const SiBurger = (props: SVGProps) => ( + + + + + + + + + + + + +); +export default SiBurger; diff --git a/census/website/src/components/icons/SiBus.tsx b/census/website/src/components/icons/SiBus.tsx new file mode 100644 index 0000000..5f74383 --- /dev/null +++ b/census/website/src/components/icons/SiBus.tsx @@ -0,0 +1,43 @@ +import type { SVGProps } from 'react'; +const SiBus = (props: SVGProps) => ( + + + + + + + + + + + +); +export default SiBus; diff --git a/census/website/src/components/icons/SiButterfly.tsx b/census/website/src/components/icons/SiButterfly.tsx new file mode 100644 index 0000000..499bd42 --- /dev/null +++ b/census/website/src/components/icons/SiButterfly.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiButterfly = (props: SVGProps) => ( + + + +); +export default SiButterfly; diff --git a/census/website/src/components/icons/SiCabinet.tsx b/census/website/src/components/icons/SiCabinet.tsx new file mode 100644 index 0000000..b9bd10d --- /dev/null +++ b/census/website/src/components/icons/SiCabinet.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiCabinet = (props: SVGProps) => ( + + + +); +export default SiCabinet; diff --git a/census/website/src/components/icons/SiCabinet2.tsx b/census/website/src/components/icons/SiCabinet2.tsx new file mode 100644 index 0000000..686beef --- /dev/null +++ b/census/website/src/components/icons/SiCabinet2.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiCabinet2 = (props: SVGProps) => ( + + + +); +export default SiCabinet2; diff --git a/census/website/src/components/icons/SiCableCar.tsx b/census/website/src/components/icons/SiCableCar.tsx new file mode 100644 index 0000000..36bf346 --- /dev/null +++ b/census/website/src/components/icons/SiCableCar.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiCableCar = (props: SVGProps) => ( + + + +); +export default SiCableCar; diff --git a/census/website/src/components/icons/SiCactus.tsx b/census/website/src/components/icons/SiCactus.tsx new file mode 100644 index 0000000..af8ab0b --- /dev/null +++ b/census/website/src/components/icons/SiCactus.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiCactus = (props: SVGProps) => ( + + + +); +export default SiCactus; diff --git a/census/website/src/components/icons/SiCake.tsx b/census/website/src/components/icons/SiCake.tsx new file mode 100644 index 0000000..33a8c05 --- /dev/null +++ b/census/website/src/components/icons/SiCake.tsx @@ -0,0 +1,29 @@ +import type { SVGProps } from 'react'; +const SiCake = (props: SVGProps) => ( + + + + + + + +); +export default SiCake; diff --git a/census/website/src/components/icons/SiCakeSlice.tsx b/census/website/src/components/icons/SiCakeSlice.tsx new file mode 100644 index 0000000..d0f36a8 --- /dev/null +++ b/census/website/src/components/icons/SiCakeSlice.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiCakeSlice = (props: SVGProps) => ( + + + +); +export default SiCakeSlice; diff --git a/census/website/src/components/icons/SiCalculator.tsx b/census/website/src/components/icons/SiCalculator.tsx new file mode 100644 index 0000000..d232275 --- /dev/null +++ b/census/website/src/components/icons/SiCalculator.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiCalculator = (props: SVGProps) => ( + + + +); +export default SiCalculator; diff --git a/census/website/src/components/icons/SiCalculator2.tsx b/census/website/src/components/icons/SiCalculator2.tsx new file mode 100644 index 0000000..496448e --- /dev/null +++ b/census/website/src/components/icons/SiCalculator2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiCalculator2 = (props: SVGProps) => ( + + + +); +export default SiCalculator2; diff --git a/census/website/src/components/icons/SiCalendar.tsx b/census/website/src/components/icons/SiCalendar.tsx new file mode 100644 index 0000000..e892a07 --- /dev/null +++ b/census/website/src/components/icons/SiCalendar.tsx @@ -0,0 +1,16 @@ +import type { SVGProps } from 'react'; +const SiCalendar = (props: SVGProps) => ( + + + + + + +); +export default SiCalendar; diff --git a/census/website/src/components/icons/SiCalendarCheck.tsx b/census/website/src/components/icons/SiCalendarCheck.tsx new file mode 100644 index 0000000..14a3f3a --- /dev/null +++ b/census/website/src/components/icons/SiCalendarCheck.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiCalendarCheck = (props: SVGProps) => ( + + + +); +export default SiCalendarCheck; diff --git a/census/website/src/components/icons/SiCalendarCross.tsx b/census/website/src/components/icons/SiCalendarCross.tsx new file mode 100644 index 0000000..ba0e05f --- /dev/null +++ b/census/website/src/components/icons/SiCalendarCross.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiCalendarCross = (props: SVGProps) => ( + + + +); +export default SiCalendarCross; diff --git a/census/website/src/components/icons/SiCalendarMinus.tsx b/census/website/src/components/icons/SiCalendarMinus.tsx new file mode 100644 index 0000000..65ebb14 --- /dev/null +++ b/census/website/src/components/icons/SiCalendarMinus.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiCalendarMinus = (props: SVGProps) => ( + + + +); +export default SiCalendarMinus; diff --git a/census/website/src/components/icons/SiCalendarPlus.tsx b/census/website/src/components/icons/SiCalendarPlus.tsx new file mode 100644 index 0000000..0e872f6 --- /dev/null +++ b/census/website/src/components/icons/SiCalendarPlus.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiCalendarPlus = (props: SVGProps) => ( + + + +); +export default SiCalendarPlus; diff --git a/census/website/src/components/icons/SiCalendarTimer.tsx b/census/website/src/components/icons/SiCalendarTimer.tsx new file mode 100644 index 0000000..01d255c --- /dev/null +++ b/census/website/src/components/icons/SiCalendarTimer.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiCalendarTimer = (props: SVGProps) => ( + + + +); +export default SiCalendarTimer; diff --git a/census/website/src/components/icons/SiCamera.tsx b/census/website/src/components/icons/SiCamera.tsx new file mode 100644 index 0000000..6c8d1d2 --- /dev/null +++ b/census/website/src/components/icons/SiCamera.tsx @@ -0,0 +1,18 @@ +import type { SVGProps } from 'react'; +const SiCamera = (props: SVGProps) => ( + + + + +); +export default SiCamera; diff --git a/census/website/src/components/icons/SiCameraError.tsx b/census/website/src/components/icons/SiCameraError.tsx new file mode 100644 index 0000000..5fb1735 --- /dev/null +++ b/census/website/src/components/icons/SiCameraError.tsx @@ -0,0 +1,12 @@ +import type { SVGProps } from 'react'; +const SiCameraError = (props: SVGProps) => ( + + + +); +export default SiCameraError; diff --git a/census/website/src/components/icons/SiCameraError2.tsx b/census/website/src/components/icons/SiCameraError2.tsx new file mode 100644 index 0000000..c3b2a39 --- /dev/null +++ b/census/website/src/components/icons/SiCameraError2.tsx @@ -0,0 +1,12 @@ +import type { SVGProps } from 'react'; +const SiCameraError2 = (props: SVGProps) => ( + + + +); +export default SiCameraError2; diff --git a/census/website/src/components/icons/SiCameraGrid.tsx b/census/website/src/components/icons/SiCameraGrid.tsx new file mode 100644 index 0000000..649bc14 --- /dev/null +++ b/census/website/src/components/icons/SiCameraGrid.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiCameraGrid = (props: SVGProps) => ( + + + +); +export default SiCameraGrid; diff --git a/census/website/src/components/icons/SiCameraMinus.tsx b/census/website/src/components/icons/SiCameraMinus.tsx new file mode 100644 index 0000000..d67e7df --- /dev/null +++ b/census/website/src/components/icons/SiCameraMinus.tsx @@ -0,0 +1,12 @@ +import type { SVGProps } from 'react'; +const SiCameraMinus = (props: SVGProps) => ( + + + +); +export default SiCameraMinus; diff --git a/census/website/src/components/icons/SiCameraOff.tsx b/census/website/src/components/icons/SiCameraOff.tsx new file mode 100644 index 0000000..c7c6cb7 --- /dev/null +++ b/census/website/src/components/icons/SiCameraOff.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiCameraOff = (props: SVGProps) => ( + + + +); +export default SiCameraOff; diff --git a/census/website/src/components/icons/SiCameraPlus.tsx b/census/website/src/components/icons/SiCameraPlus.tsx new file mode 100644 index 0000000..4b61d5d --- /dev/null +++ b/census/website/src/components/icons/SiCameraPlus.tsx @@ -0,0 +1,12 @@ +import type { SVGProps } from 'react'; +const SiCameraPlus = (props: SVGProps) => ( + + + +); +export default SiCameraPlus; diff --git a/census/website/src/components/icons/SiCameraTripod.tsx b/census/website/src/components/icons/SiCameraTripod.tsx new file mode 100644 index 0000000..bd10d62 --- /dev/null +++ b/census/website/src/components/icons/SiCameraTripod.tsx @@ -0,0 +1,23 @@ +import type { SVGProps } from 'react'; +const SiCameraTripod = (props: SVGProps) => ( + + + + + + + +); +export default SiCameraTripod; diff --git a/census/website/src/components/icons/SiCancer.tsx b/census/website/src/components/icons/SiCancer.tsx new file mode 100644 index 0000000..aa1633b --- /dev/null +++ b/census/website/src/components/icons/SiCancer.tsx @@ -0,0 +1,34 @@ +import type { SVGProps } from 'react'; +const SiCancer = (props: SVGProps) => ( + + + + + + +); +export default SiCancer; diff --git a/census/website/src/components/icons/SiCapricorn.tsx b/census/website/src/components/icons/SiCapricorn.tsx new file mode 100644 index 0000000..c89c6d9 --- /dev/null +++ b/census/website/src/components/icons/SiCapricorn.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiCapricorn = (props: SVGProps) => ( + + + + +); +export default SiCapricorn; diff --git a/census/website/src/components/icons/SiCaptions.tsx b/census/website/src/components/icons/SiCaptions.tsx new file mode 100644 index 0000000..cd75f30 --- /dev/null +++ b/census/website/src/components/icons/SiCaptions.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiCaptions = (props: SVGProps) => ( + + + +); +export default SiCaptions; diff --git a/census/website/src/components/icons/SiCar.tsx b/census/website/src/components/icons/SiCar.tsx new file mode 100644 index 0000000..1535427 --- /dev/null +++ b/census/website/src/components/icons/SiCar.tsx @@ -0,0 +1,34 @@ +import type { SVGProps } from 'react'; +const SiCar = (props: SVGProps) => ( + + + + + + + + +); +export default SiCar; diff --git a/census/website/src/components/icons/SiCar2.tsx b/census/website/src/components/icons/SiCar2.tsx new file mode 100644 index 0000000..9fddaab --- /dev/null +++ b/census/website/src/components/icons/SiCar2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiCar2 = (props: SVGProps) => ( + + + +); +export default SiCar2; diff --git a/census/website/src/components/icons/SiCarBattery.tsx b/census/website/src/components/icons/SiCarBattery.tsx new file mode 100644 index 0000000..26378bc --- /dev/null +++ b/census/website/src/components/icons/SiCarBattery.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiCarBattery = (props: SVGProps) => ( + + + + +); +export default SiCarBattery; diff --git a/census/website/src/components/icons/SiCarDashboard.tsx b/census/website/src/components/icons/SiCarDashboard.tsx new file mode 100644 index 0000000..6c90cfa --- /dev/null +++ b/census/website/src/components/icons/SiCarDashboard.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiCarDashboard = (props: SVGProps) => ( + + + + + +); +export default SiCarDashboard; diff --git a/census/website/src/components/icons/SiCarDoor.tsx b/census/website/src/components/icons/SiCarDoor.tsx new file mode 100644 index 0000000..c29e08f --- /dev/null +++ b/census/website/src/components/icons/SiCarDoor.tsx @@ -0,0 +1,18 @@ +import type { SVGProps } from 'react'; +const SiCarDoor = (props: SVGProps) => ( + + + + + +); +export default SiCarDoor; diff --git a/census/website/src/components/icons/SiCarEngine.tsx b/census/website/src/components/icons/SiCarEngine.tsx new file mode 100644 index 0000000..09b79fc --- /dev/null +++ b/census/website/src/components/icons/SiCarEngine.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiCarEngine = (props: SVGProps) => ( + + + + + + +); +export default SiCarEngine; diff --git a/census/website/src/components/icons/SiCarGearStick.tsx b/census/website/src/components/icons/SiCarGearStick.tsx new file mode 100644 index 0000000..f4bf9e2 --- /dev/null +++ b/census/website/src/components/icons/SiCarGearStick.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiCarGearStick = (props: SVGProps) => ( + + + + + + +); +export default SiCarGearStick; diff --git a/census/website/src/components/icons/SiCaratDown.tsx b/census/website/src/components/icons/SiCaratDown.tsx new file mode 100644 index 0000000..2f82e31 --- /dev/null +++ b/census/website/src/components/icons/SiCaratDown.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiCaratDown = (props: SVGProps) => ( + + + +); +export default SiCaratDown; diff --git a/census/website/src/components/icons/SiCaratLeft.tsx b/census/website/src/components/icons/SiCaratLeft.tsx new file mode 100644 index 0000000..6a98d50 --- /dev/null +++ b/census/website/src/components/icons/SiCaratLeft.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiCaratLeft = (props: SVGProps) => ( + + + +); +export default SiCaratLeft; diff --git a/census/website/src/components/icons/SiCaratRight.tsx b/census/website/src/components/icons/SiCaratRight.tsx new file mode 100644 index 0000000..f0a75f0 --- /dev/null +++ b/census/website/src/components/icons/SiCaratRight.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiCaratRight = (props: SVGProps) => ( + + + +); +export default SiCaratRight; diff --git a/census/website/src/components/icons/SiCaratUp.tsx b/census/website/src/components/icons/SiCaratUp.tsx new file mode 100644 index 0000000..42eaa75 --- /dev/null +++ b/census/website/src/components/icons/SiCaratUp.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiCaratUp = (props: SVGProps) => ( + + + +); +export default SiCaratUp; diff --git a/census/website/src/components/icons/SiCards.tsx b/census/website/src/components/icons/SiCards.tsx new file mode 100644 index 0000000..543357f --- /dev/null +++ b/census/website/src/components/icons/SiCards.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiCards = (props: SVGProps) => ( + + + + +); +export default SiCards; diff --git a/census/website/src/components/icons/SiCards2.tsx b/census/website/src/components/icons/SiCards2.tsx new file mode 100644 index 0000000..ad9944f --- /dev/null +++ b/census/website/src/components/icons/SiCards2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiCards2 = (props: SVGProps) => ( + + + +); +export default SiCards2; diff --git a/census/website/src/components/icons/SiCart.tsx b/census/website/src/components/icons/SiCart.tsx new file mode 100644 index 0000000..22671ed --- /dev/null +++ b/census/website/src/components/icons/SiCart.tsx @@ -0,0 +1,18 @@ +import type { SVGProps } from 'react'; +const SiCart = (props: SVGProps) => ( + + + + + +); +export default SiCart; diff --git a/census/website/src/components/icons/SiCassette.tsx b/census/website/src/components/icons/SiCassette.tsx new file mode 100644 index 0000000..71c639b --- /dev/null +++ b/census/website/src/components/icons/SiCassette.tsx @@ -0,0 +1,33 @@ +import type { SVGProps } from 'react'; +const SiCassette = (props: SVGProps) => ( + + + + + + + +); +export default SiCassette; diff --git a/census/website/src/components/icons/SiCat.tsx b/census/website/src/components/icons/SiCat.tsx new file mode 100644 index 0000000..f580d36 --- /dev/null +++ b/census/website/src/components/icons/SiCat.tsx @@ -0,0 +1,25 @@ +import type { SVGProps } from 'react'; +const SiCat = (props: SVGProps) => ( + + + + + +); +export default SiCat; diff --git a/census/website/src/components/icons/SiCatPaw.tsx b/census/website/src/components/icons/SiCatPaw.tsx new file mode 100644 index 0000000..0924e0d --- /dev/null +++ b/census/website/src/components/icons/SiCatPaw.tsx @@ -0,0 +1,40 @@ +import type { SVGProps } from 'react'; +const SiCatPaw = (props: SVGProps) => ( + + + + + + +); +export default SiCatPaw; diff --git a/census/website/src/components/icons/SiCctv.tsx b/census/website/src/components/icons/SiCctv.tsx new file mode 100644 index 0000000..7ce6cf4 --- /dev/null +++ b/census/website/src/components/icons/SiCctv.tsx @@ -0,0 +1,18 @@ +import type { SVGProps } from 'react'; +const SiCctv = (props: SVGProps) => ( + + + + + +); +export default SiCctv; diff --git a/census/website/src/components/icons/SiCelsius.tsx b/census/website/src/components/icons/SiCelsius.tsx new file mode 100644 index 0000000..08794b1 --- /dev/null +++ b/census/website/src/components/icons/SiCelsius.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiCelsius = (props: SVGProps) => ( + + + + +); +export default SiCelsius; diff --git a/census/website/src/components/icons/SiCent.tsx b/census/website/src/components/icons/SiCent.tsx new file mode 100644 index 0000000..fefee7e --- /dev/null +++ b/census/website/src/components/icons/SiCent.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiCent = (props: SVGProps) => ( + + + + +); +export default SiCent; diff --git a/census/website/src/components/icons/SiCenter.tsx b/census/website/src/components/icons/SiCenter.tsx new file mode 100644 index 0000000..62ba70f --- /dev/null +++ b/census/website/src/components/icons/SiCenter.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiCenter = (props: SVGProps) => ( + + + +); +export default SiCenter; diff --git a/census/website/src/components/icons/SiChart.tsx b/census/website/src/components/icons/SiChart.tsx new file mode 100644 index 0000000..af5dcbe --- /dev/null +++ b/census/website/src/components/icons/SiChart.tsx @@ -0,0 +1,16 @@ +import type { SVGProps } from 'react'; +const SiChart = (props: SVGProps) => ( + + + + + + +); +export default SiChart; diff --git a/census/website/src/components/icons/SiChartDecrease.tsx b/census/website/src/components/icons/SiChartDecrease.tsx new file mode 100644 index 0000000..2c1ae0f --- /dev/null +++ b/census/website/src/components/icons/SiChartDecrease.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiChartDecrease = (props: SVGProps) => ( + + + +); +export default SiChartDecrease; diff --git a/census/website/src/components/icons/SiChartIncrease.tsx b/census/website/src/components/icons/SiChartIncrease.tsx new file mode 100644 index 0000000..8a7e544 --- /dev/null +++ b/census/website/src/components/icons/SiChartIncrease.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiChartIncrease = (props: SVGProps) => ( + + + +); +export default SiChartIncrease; diff --git a/census/website/src/components/icons/SiCheck.tsx b/census/website/src/components/icons/SiCheck.tsx new file mode 100644 index 0000000..77d7d14 --- /dev/null +++ b/census/website/src/components/icons/SiCheck.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiCheck = (props: SVGProps) => ( + + + +); +export default SiCheck; diff --git a/census/website/src/components/icons/SiCheck2.tsx b/census/website/src/components/icons/SiCheck2.tsx new file mode 100644 index 0000000..53944cd --- /dev/null +++ b/census/website/src/components/icons/SiCheck2.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiCheck2 = (props: SVGProps) => ( + + + +); +export default SiCheck2; diff --git a/census/website/src/components/icons/SiCheckCircle.tsx b/census/website/src/components/icons/SiCheckCircle.tsx new file mode 100644 index 0000000..dff074b --- /dev/null +++ b/census/website/src/components/icons/SiCheckCircle.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiCheckCircle = (props: SVGProps) => ( + + + + +); +export default SiCheckCircle; diff --git a/census/website/src/components/icons/SiCheckList.tsx b/census/website/src/components/icons/SiCheckList.tsx new file mode 100644 index 0000000..fa47893 --- /dev/null +++ b/census/website/src/components/icons/SiCheckList.tsx @@ -0,0 +1,28 @@ +import type { SVGProps } from 'react'; +const SiChecklist = (props: SVGProps) => ( + + + + + + + + + +); +export default SiChecklist; diff --git a/census/website/src/components/icons/SiCheckmark.tsx b/census/website/src/components/icons/SiCheckmark.tsx new file mode 100644 index 0000000..5248181 --- /dev/null +++ b/census/website/src/components/icons/SiCheckmark.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiCheckmark = (props: SVGProps) => ( + + + +); +export default SiCheckmark; diff --git a/census/website/src/components/icons/SiCheese.tsx b/census/website/src/components/icons/SiCheese.tsx new file mode 100644 index 0000000..dbb9d8f --- /dev/null +++ b/census/website/src/components/icons/SiCheese.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiCheese = (props: SVGProps) => ( + + + + +); +export default SiCheese; diff --git a/census/website/src/components/icons/SiChefsHat.tsx b/census/website/src/components/icons/SiChefsHat.tsx new file mode 100644 index 0000000..9d510f3 --- /dev/null +++ b/census/website/src/components/icons/SiChefsHat.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiChefsHat = (props: SVGProps) => ( + + + +); +export default SiChefsHat; diff --git a/census/website/src/components/icons/SiChemicalBottle.tsx b/census/website/src/components/icons/SiChemicalBottle.tsx new file mode 100644 index 0000000..f68096c --- /dev/null +++ b/census/website/src/components/icons/SiChemicalBottle.tsx @@ -0,0 +1,11 @@ +import type { SVGProps } from 'react'; +const SiChemicalBottle = (props: SVGProps) => ( + + + + +); +export default SiChemicalBottle; diff --git a/census/website/src/components/icons/SiChemicalTube.tsx b/census/website/src/components/icons/SiChemicalTube.tsx new file mode 100644 index 0000000..2925cb6 --- /dev/null +++ b/census/website/src/components/icons/SiChemicalTube.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiChemicalTube = (props: SVGProps) => ( + + + + +); +export default SiChemicalTube; diff --git a/census/website/src/components/icons/SiChemicalTube2.tsx b/census/website/src/components/icons/SiChemicalTube2.tsx new file mode 100644 index 0000000..d6940eb --- /dev/null +++ b/census/website/src/components/icons/SiChemicalTube2.tsx @@ -0,0 +1,11 @@ +import type { SVGProps } from 'react'; +const SiChemicalTube2 = (props: SVGProps) => ( + + + + +); +export default SiChemicalTube2; diff --git a/census/website/src/components/icons/SiCherry.tsx b/census/website/src/components/icons/SiCherry.tsx new file mode 100644 index 0000000..c32f1fb --- /dev/null +++ b/census/website/src/components/icons/SiCherry.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiCherry = (props: SVGProps) => ( + + + +); +export default SiCherry; diff --git a/census/website/src/components/icons/SiChevronDown.tsx b/census/website/src/components/icons/SiChevronDown.tsx new file mode 100644 index 0000000..23140fa --- /dev/null +++ b/census/website/src/components/icons/SiChevronDown.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiChevronDown = (props: SVGProps) => ( + + + +); +export default SiChevronDown; diff --git a/census/website/src/components/icons/SiChevronDownSquare.tsx b/census/website/src/components/icons/SiChevronDownSquare.tsx new file mode 100644 index 0000000..5444ccc --- /dev/null +++ b/census/website/src/components/icons/SiChevronDownSquare.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiChevronDownSquare = (props: SVGProps) => ( + + + +); +export default SiChevronDownSquare; diff --git a/census/website/src/components/icons/SiChevronLeft.tsx b/census/website/src/components/icons/SiChevronLeft.tsx new file mode 100644 index 0000000..dc2838d --- /dev/null +++ b/census/website/src/components/icons/SiChevronLeft.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiChevronLeft = (props: SVGProps) => ( + + + +); +export default SiChevronLeft; diff --git a/census/website/src/components/icons/SiChevronLeftSquare.tsx b/census/website/src/components/icons/SiChevronLeftSquare.tsx new file mode 100644 index 0000000..6c12ec4 --- /dev/null +++ b/census/website/src/components/icons/SiChevronLeftSquare.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiChevronLeftSquare = (props: SVGProps) => ( + + + +); +export default SiChevronLeftSquare; diff --git a/census/website/src/components/icons/SiChevronRight.tsx b/census/website/src/components/icons/SiChevronRight.tsx new file mode 100644 index 0000000..ed19735 --- /dev/null +++ b/census/website/src/components/icons/SiChevronRight.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiChevronRight = (props: SVGProps) => ( + + + +); +export default SiChevronRight; diff --git a/census/website/src/components/icons/SiChevronRightSquare.tsx b/census/website/src/components/icons/SiChevronRightSquare.tsx new file mode 100644 index 0000000..da4b4c7 --- /dev/null +++ b/census/website/src/components/icons/SiChevronRightSquare.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiChevronRightSquare = (props: SVGProps) => ( + + + +); +export default SiChevronRightSquare; diff --git a/census/website/src/components/icons/SiChevronUp.tsx b/census/website/src/components/icons/SiChevronUp.tsx new file mode 100644 index 0000000..7629841 --- /dev/null +++ b/census/website/src/components/icons/SiChevronUp.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiChevronUp = (props: SVGProps) => ( + + + +); +export default SiChevronUp; diff --git a/census/website/src/components/icons/SiChevronUpSquare.tsx b/census/website/src/components/icons/SiChevronUpSquare.tsx new file mode 100644 index 0000000..e15393f --- /dev/null +++ b/census/website/src/components/icons/SiChevronUpSquare.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiChevronUpSquare = (props: SVGProps) => ( + + + +); +export default SiChevronUpSquare; diff --git a/census/website/src/components/icons/SiChicken.tsx b/census/website/src/components/icons/SiChicken.tsx new file mode 100644 index 0000000..6f9471d --- /dev/null +++ b/census/website/src/components/icons/SiChicken.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiChicken = (props: SVGProps) => ( + + + +); +export default SiChicken; diff --git a/census/website/src/components/icons/SiChilli.tsx b/census/website/src/components/icons/SiChilli.tsx new file mode 100644 index 0000000..a541d2f --- /dev/null +++ b/census/website/src/components/icons/SiChilli.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiChilli = (props: SVGProps) => ( + + + +); +export default SiChilli; diff --git a/census/website/src/components/icons/SiChristmasTree.tsx b/census/website/src/components/icons/SiChristmasTree.tsx new file mode 100644 index 0000000..d542f2d --- /dev/null +++ b/census/website/src/components/icons/SiChristmasTree.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiChristmasTree = (props: SVGProps) => ( + + + +); +export default SiChristmasTree; diff --git a/census/website/src/components/icons/SiCircle.tsx b/census/website/src/components/icons/SiCircle.tsx new file mode 100644 index 0000000..26d50a7 --- /dev/null +++ b/census/website/src/components/icons/SiCircle.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiCircle = (props: SVGProps) => ( + + + +); +export default SiCircle; diff --git a/census/website/src/components/icons/SiCircleDotted.tsx b/census/website/src/components/icons/SiCircleDotted.tsx new file mode 100644 index 0000000..2b2ac9a --- /dev/null +++ b/census/website/src/components/icons/SiCircleDotted.tsx @@ -0,0 +1,12 @@ +import type { SVGProps } from 'react'; +const SiCircleDotted = (props: SVGProps) => ( + + + +); +export default SiCircleDotted; diff --git a/census/website/src/components/icons/SiCircleIntersect.tsx b/census/website/src/components/icons/SiCircleIntersect.tsx new file mode 100644 index 0000000..7fa3800 --- /dev/null +++ b/census/website/src/components/icons/SiCircleIntersect.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiCircleIntersect = (props: SVGProps) => ( + + + + +); +export default SiCircleIntersect; diff --git a/census/website/src/components/icons/SiCirclePlus.tsx b/census/website/src/components/icons/SiCirclePlus.tsx new file mode 100644 index 0000000..a345a6c --- /dev/null +++ b/census/website/src/components/icons/SiCirclePlus.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiCirclePlus = (props: SVGProps) => ( + + + +); +export default SiCirclePlus; diff --git a/census/website/src/components/icons/SiCircleTwoPoints.tsx b/census/website/src/components/icons/SiCircleTwoPoints.tsx new file mode 100644 index 0000000..eba786e --- /dev/null +++ b/census/website/src/components/icons/SiCircleTwoPoints.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiCircleTwoPoints = (props: SVGProps) => ( + + + +); +export default SiCircleTwoPoints; diff --git a/census/website/src/components/icons/SiCitrus.tsx b/census/website/src/components/icons/SiCitrus.tsx new file mode 100644 index 0000000..e308ce0 --- /dev/null +++ b/census/website/src/components/icons/SiCitrus.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiCitrus = (props: SVGProps) => ( + + + +); +export default SiCitrus; diff --git a/census/website/src/components/icons/SiClean.tsx b/census/website/src/components/icons/SiClean.tsx new file mode 100644 index 0000000..692f124 --- /dev/null +++ b/census/website/src/components/icons/SiClean.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiClean = (props: SVGProps) => ( + + + +); +export default SiClean; diff --git a/census/website/src/components/icons/SiCleanPower.tsx b/census/website/src/components/icons/SiCleanPower.tsx new file mode 100644 index 0000000..f74cb75 --- /dev/null +++ b/census/website/src/components/icons/SiCleanPower.tsx @@ -0,0 +1,18 @@ +import type { SVGProps } from 'react'; +const SiCleanPower = (props: SVGProps) => ( + + + + + +); +export default SiCleanPower; diff --git a/census/website/src/components/icons/SiClickPulse.tsx b/census/website/src/components/icons/SiClickPulse.tsx new file mode 100644 index 0000000..1132d9d --- /dev/null +++ b/census/website/src/components/icons/SiClickPulse.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiClickPulse = (props: SVGProps) => ( + + + +); +export default SiClickPulse; diff --git a/census/website/src/components/icons/SiClickableArea.tsx b/census/website/src/components/icons/SiClickableArea.tsx new file mode 100644 index 0000000..f50bda4 --- /dev/null +++ b/census/website/src/components/icons/SiClickableArea.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiClickableArea = (props: SVGProps) => ( + + + + +); +export default SiClickableArea; diff --git a/census/website/src/components/icons/SiClipboard.tsx b/census/website/src/components/icons/SiClipboard.tsx new file mode 100644 index 0000000..aae7696 --- /dev/null +++ b/census/website/src/components/icons/SiClipboard.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiClipboard = (props: SVGProps) => ( + + + + + + +); +export default SiClipboard; diff --git a/census/website/src/components/icons/SiClock.tsx b/census/website/src/components/icons/SiClock.tsx new file mode 100644 index 0000000..3a1ecc8 --- /dev/null +++ b/census/website/src/components/icons/SiClock.tsx @@ -0,0 +1,8 @@ +import type { SVGProps } from 'react'; +const SiClock = (props: SVGProps) => ( + + + + +); +export default SiClock; diff --git a/census/website/src/components/icons/SiClose.tsx b/census/website/src/components/icons/SiClose.tsx new file mode 100644 index 0000000..eb4ee80 --- /dev/null +++ b/census/website/src/components/icons/SiClose.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiClose = (props: SVGProps) => ( + + + + +); +export default SiClose; diff --git a/census/website/src/components/icons/SiCloseCircle.tsx b/census/website/src/components/icons/SiCloseCircle.tsx new file mode 100644 index 0000000..230fcb3 --- /dev/null +++ b/census/website/src/components/icons/SiCloseCircle.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiCloseCircle = (props: SVGProps) => ( + + + + + +); +export default SiCloseCircle; diff --git a/census/website/src/components/icons/SiClosedCaptions.tsx b/census/website/src/components/icons/SiClosedCaptions.tsx new file mode 100644 index 0000000..51e0ad4 --- /dev/null +++ b/census/website/src/components/icons/SiClosedCaptions.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiClosedCaptions = (props: SVGProps) => ( + + + +); +export default SiClosedCaptions; diff --git a/census/website/src/components/icons/SiClosedCaptionsOff.tsx b/census/website/src/components/icons/SiClosedCaptionsOff.tsx new file mode 100644 index 0000000..ab12a6a --- /dev/null +++ b/census/website/src/components/icons/SiClosedCaptionsOff.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiClosedCaptionsOff = (props: SVGProps) => ( + + + +); +export default SiClosedCaptionsOff; diff --git a/census/website/src/components/icons/SiCloset.tsx b/census/website/src/components/icons/SiCloset.tsx new file mode 100644 index 0000000..10d551c --- /dev/null +++ b/census/website/src/components/icons/SiCloset.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiCloset = (props: SVGProps) => ( + + + +); +export default SiCloset; diff --git a/census/website/src/components/icons/SiCloud.tsx b/census/website/src/components/icons/SiCloud.tsx new file mode 100644 index 0000000..ae82f88 --- /dev/null +++ b/census/website/src/components/icons/SiCloud.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiCloud = (props: SVGProps) => ( + + + +); +export default SiCloud; diff --git a/census/website/src/components/icons/SiClubs.tsx b/census/website/src/components/icons/SiClubs.tsx new file mode 100644 index 0000000..8db8061 --- /dev/null +++ b/census/website/src/components/icons/SiClubs.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiClubs = (props: SVGProps) => ( + + + +); +export default SiClubs; diff --git a/census/website/src/components/icons/SiCoatHanger.tsx b/census/website/src/components/icons/SiCoatHanger.tsx new file mode 100644 index 0000000..dfe543c --- /dev/null +++ b/census/website/src/components/icons/SiCoatHanger.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiCoatHanger = (props: SVGProps) => ( + + + + +); +export default SiCoatHanger; diff --git a/census/website/src/components/icons/SiCocktail.tsx b/census/website/src/components/icons/SiCocktail.tsx new file mode 100644 index 0000000..6effaea --- /dev/null +++ b/census/website/src/components/icons/SiCocktail.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiCocktail = (props: SVGProps) => ( + + + + + +); +export default SiCocktail; diff --git a/census/website/src/components/icons/SiCode.tsx b/census/website/src/components/icons/SiCode.tsx new file mode 100644 index 0000000..b4f02e3 --- /dev/null +++ b/census/website/src/components/icons/SiCode.tsx @@ -0,0 +1,24 @@ +import type { SVGProps } from 'react'; +const SiCode = (props: SVGProps) => ( + + + + +); +export default SiCode; diff --git a/census/website/src/components/icons/SiCode2.tsx b/census/website/src/components/icons/SiCode2.tsx new file mode 100644 index 0000000..b9d5fe0 --- /dev/null +++ b/census/website/src/components/icons/SiCode2.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiCode2 = (props: SVGProps) => ( + + + + +); +export default SiCode2; diff --git a/census/website/src/components/icons/SiCode3.tsx b/census/website/src/components/icons/SiCode3.tsx new file mode 100644 index 0000000..4a1d5de --- /dev/null +++ b/census/website/src/components/icons/SiCode3.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiCode3 = (props: SVGProps) => ( + + + +); +export default SiCode3; diff --git a/census/website/src/components/icons/SiCoffeeMachine.tsx b/census/website/src/components/icons/SiCoffeeMachine.tsx new file mode 100644 index 0000000..b5fdde3 --- /dev/null +++ b/census/website/src/components/icons/SiCoffeeMachine.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiCoffeeMachine = (props: SVGProps) => ( + + + +); +export default SiCoffeeMachine; diff --git a/census/website/src/components/icons/SiCoffin.tsx b/census/website/src/components/icons/SiCoffin.tsx new file mode 100644 index 0000000..0fcba1a --- /dev/null +++ b/census/website/src/components/icons/SiCoffin.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiCoffin = (props: SVGProps) => ( + + + +); +export default SiCoffin; diff --git a/census/website/src/components/icons/SiCog.tsx b/census/website/src/components/icons/SiCog.tsx new file mode 100644 index 0000000..01c782d --- /dev/null +++ b/census/website/src/components/icons/SiCog.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiCog = (props: SVGProps) => ( + + + +); +export default SiCog; diff --git a/census/website/src/components/icons/SiCoins.tsx b/census/website/src/components/icons/SiCoins.tsx new file mode 100644 index 0000000..a298e48 --- /dev/null +++ b/census/website/src/components/icons/SiCoins.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiCoins = (props: SVGProps) => ( + + + + +); +export default SiCoins; diff --git a/census/website/src/components/icons/SiColorSwatch.tsx b/census/website/src/components/icons/SiColorSwatch.tsx new file mode 100644 index 0000000..3c83408 --- /dev/null +++ b/census/website/src/components/icons/SiColorSwatch.tsx @@ -0,0 +1,26 @@ +import type { SVGProps } from 'react'; +const SiColorSwatch = (props: SVGProps) => ( + + + + + +); +export default SiColorSwatch; diff --git a/census/website/src/components/icons/SiColumns.tsx b/census/website/src/components/icons/SiColumns.tsx new file mode 100644 index 0000000..be45f90 --- /dev/null +++ b/census/website/src/components/icons/SiColumns.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiColumns = (props: SVGProps) => ( + + + + +); +export default SiColumns; diff --git a/census/website/src/components/icons/SiColumns2.tsx b/census/website/src/components/icons/SiColumns2.tsx new file mode 100644 index 0000000..30a664e --- /dev/null +++ b/census/website/src/components/icons/SiColumns2.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiColumns2 = (props: SVGProps) => ( + + + + + +); +export default SiColumns2; diff --git a/census/website/src/components/icons/SiColumnsHorizontal.tsx b/census/website/src/components/icons/SiColumnsHorizontal.tsx new file mode 100644 index 0000000..9ce557e --- /dev/null +++ b/census/website/src/components/icons/SiColumnsHorizontal.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiColumnsHorizontal = (props: SVGProps) => ( + + + + +); +export default SiColumnsHorizontal; diff --git a/census/website/src/components/icons/SiColumnsVertical.tsx b/census/website/src/components/icons/SiColumnsVertical.tsx new file mode 100644 index 0000000..91fdd8a --- /dev/null +++ b/census/website/src/components/icons/SiColumnsVertical.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiColumnsVertical = (props: SVGProps) => ( + + + + +); +export default SiColumnsVertical; diff --git a/census/website/src/components/icons/SiCommand.tsx b/census/website/src/components/icons/SiCommand.tsx new file mode 100644 index 0000000..64e2d49 --- /dev/null +++ b/census/website/src/components/icons/SiCommand.tsx @@ -0,0 +1,41 @@ +import type { SVGProps } from 'react'; +const SiCommand = (props: SVGProps) => ( + + + + + + + +); +export default SiCommand; diff --git a/census/website/src/components/icons/SiCommentCheck.tsx b/census/website/src/components/icons/SiCommentCheck.tsx new file mode 100644 index 0000000..d80c6d0 --- /dev/null +++ b/census/website/src/components/icons/SiCommentCheck.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiCommentCheck = (props: SVGProps) => ( + + + +); +export default SiCommentCheck; diff --git a/census/website/src/components/icons/SiCommentLove.tsx b/census/website/src/components/icons/SiCommentLove.tsx new file mode 100644 index 0000000..3687e97 --- /dev/null +++ b/census/website/src/components/icons/SiCommentLove.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiCommentLove = (props: SVGProps) => ( + + + +); +export default SiCommentLove; diff --git a/census/website/src/components/icons/SiCompass.tsx b/census/website/src/components/icons/SiCompass.tsx new file mode 100644 index 0000000..bf90a0f --- /dev/null +++ b/census/website/src/components/icons/SiCompass.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiCompass = (props: SVGProps) => ( + + + + +); +export default SiCompass; diff --git a/census/website/src/components/icons/SiComponents.tsx b/census/website/src/components/icons/SiComponents.tsx new file mode 100644 index 0000000..a9e00e4 --- /dev/null +++ b/census/website/src/components/icons/SiComponents.tsx @@ -0,0 +1,34 @@ +import type { SVGProps } from 'react'; +const SiComponents = (props: SVGProps) => ( + + + + + + +); +export default SiComponents; diff --git a/census/website/src/components/icons/SiCone.tsx b/census/website/src/components/icons/SiCone.tsx new file mode 100644 index 0000000..e824258 --- /dev/null +++ b/census/website/src/components/icons/SiCone.tsx @@ -0,0 +1,15 @@ +import type { SVGProps } from 'react'; +const SiCone = (props: SVGProps) => ( + + + + + +); +export default SiCone; diff --git a/census/website/src/components/icons/SiCone2.tsx b/census/website/src/components/icons/SiCone2.tsx new file mode 100644 index 0000000..c0fe1c8 --- /dev/null +++ b/census/website/src/components/icons/SiCone2.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiCone2 = (props: SVGProps) => ( + + + + +); +export default SiCone2; diff --git a/census/website/src/components/icons/SiConstruction.tsx b/census/website/src/components/icons/SiConstruction.tsx new file mode 100644 index 0000000..d6968ff --- /dev/null +++ b/census/website/src/components/icons/SiConstruction.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiConstruction = (props: SVGProps) => ( + + + +); +export default SiConstruction; diff --git a/census/website/src/components/icons/SiContacts.tsx b/census/website/src/components/icons/SiContacts.tsx new file mode 100644 index 0000000..b8f5522 --- /dev/null +++ b/census/website/src/components/icons/SiContacts.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiContacts = (props: SVGProps) => ( + + + +); +export default SiContacts; diff --git a/census/website/src/components/icons/SiContract.tsx b/census/website/src/components/icons/SiContract.tsx new file mode 100644 index 0000000..4e9c0c7 --- /dev/null +++ b/census/website/src/components/icons/SiContract.tsx @@ -0,0 +1,30 @@ +import type { SVGProps } from 'react'; +const SiContract = (props: SVGProps) => ( + + + + + + + + +); +export default SiContract; diff --git a/census/website/src/components/icons/SiContrast.tsx b/census/website/src/components/icons/SiContrast.tsx new file mode 100644 index 0000000..5bdc7bd --- /dev/null +++ b/census/website/src/components/icons/SiContrast.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiContrast = (props: SVGProps) => ( + + + +); +export default SiContrast; diff --git a/census/website/src/components/icons/SiCookie.tsx b/census/website/src/components/icons/SiCookie.tsx new file mode 100644 index 0000000..4ba2a2b --- /dev/null +++ b/census/website/src/components/icons/SiCookie.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiCookie = (props: SVGProps) => ( + + + +); +export default SiCookie; diff --git a/census/website/src/components/icons/SiCopy.tsx b/census/website/src/components/icons/SiCopy.tsx new file mode 100644 index 0000000..e4bf682 --- /dev/null +++ b/census/website/src/components/icons/SiCopy.tsx @@ -0,0 +1,24 @@ +import type { SVGProps } from 'react'; +const SiCopy = (props: SVGProps) => ( + + + + +); +export default SiCopy; diff --git a/census/website/src/components/icons/SiCornerFlag.tsx b/census/website/src/components/icons/SiCornerFlag.tsx new file mode 100644 index 0000000..05a660e --- /dev/null +++ b/census/website/src/components/icons/SiCornerFlag.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiCornerFlag = (props: SVGProps) => ( + + + + + +); +export default SiCornerFlag; diff --git a/census/website/src/components/icons/SiCpu.tsx b/census/website/src/components/icons/SiCpu.tsx new file mode 100644 index 0000000..7541394 --- /dev/null +++ b/census/website/src/components/icons/SiCpu.tsx @@ -0,0 +1,39 @@ +import type { SVGProps } from 'react'; +const SiCpu = (props: SVGProps) => ( + + + + + + + + + + + +); +export default SiCpu; diff --git a/census/website/src/components/icons/SiCrackedEgg.tsx b/census/website/src/components/icons/SiCrackedEgg.tsx new file mode 100644 index 0000000..4f24425 --- /dev/null +++ b/census/website/src/components/icons/SiCrackedEgg.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiCrackedEgg = (props: SVGProps) => ( + + + +); +export default SiCrackedEgg; diff --git a/census/website/src/components/icons/SiCreditCard.tsx b/census/website/src/components/icons/SiCreditCard.tsx new file mode 100644 index 0000000..bb31905 --- /dev/null +++ b/census/website/src/components/icons/SiCreditCard.tsx @@ -0,0 +1,16 @@ +import type { SVGProps } from 'react'; +const SiCreditCard = (props: SVGProps) => ( + + + + + + +); +export default SiCreditCard; diff --git a/census/website/src/components/icons/SiCreditCardPlus.tsx b/census/website/src/components/icons/SiCreditCardPlus.tsx new file mode 100644 index 0000000..30f8767 --- /dev/null +++ b/census/website/src/components/icons/SiCreditCardPlus.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiCreditCardPlus = (props: SVGProps) => ( + + + +); +export default SiCreditCardPlus; diff --git a/census/website/src/components/icons/SiCrop.tsx b/census/website/src/components/icons/SiCrop.tsx new file mode 100644 index 0000000..3ae189c --- /dev/null +++ b/census/website/src/components/icons/SiCrop.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiCrop = (props: SVGProps) => ( + + + + +); +export default SiCrop; diff --git a/census/website/src/components/icons/SiCrosshair.tsx b/census/website/src/components/icons/SiCrosshair.tsx new file mode 100644 index 0000000..e4dc292 --- /dev/null +++ b/census/website/src/components/icons/SiCrosshair.tsx @@ -0,0 +1,17 @@ +import type { SVGProps } from 'react'; +const SiCrosshair = (props: SVGProps) => ( + + + + + + + +); +export default SiCrosshair; diff --git a/census/website/src/components/icons/SiCrosshair2.tsx b/census/website/src/components/icons/SiCrosshair2.tsx new file mode 100644 index 0000000..239a980 --- /dev/null +++ b/census/website/src/components/icons/SiCrosshair2.tsx @@ -0,0 +1,15 @@ +import type { SVGProps } from 'react'; +const SiCrosshair2 = (props: SVGProps) => ( + + + + + +); +export default SiCrosshair2; diff --git a/census/website/src/components/icons/SiCrowd.tsx b/census/website/src/components/icons/SiCrowd.tsx new file mode 100644 index 0000000..6dcec74 --- /dev/null +++ b/census/website/src/components/icons/SiCrowd.tsx @@ -0,0 +1,81 @@ +import type { SVGProps } from 'react'; +const SiCrowd = (props: SVGProps) => ( + + + + + + + + + + + +); +export default SiCrowd; diff --git a/census/website/src/components/icons/SiCrown.tsx b/census/website/src/components/icons/SiCrown.tsx new file mode 100644 index 0000000..0ba8c43 --- /dev/null +++ b/census/website/src/components/icons/SiCrown.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiCrown = (props: SVGProps) => ( + + + +); +export default SiCrown; diff --git a/census/website/src/components/icons/SiCrown2.tsx b/census/website/src/components/icons/SiCrown2.tsx new file mode 100644 index 0000000..b3278a2 --- /dev/null +++ b/census/website/src/components/icons/SiCrown2.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiCrown2 = (props: SVGProps) => ( + + + + +); +export default SiCrown2; diff --git a/census/website/src/components/icons/SiCrownGlow.tsx b/census/website/src/components/icons/SiCrownGlow.tsx new file mode 100644 index 0000000..de9412e --- /dev/null +++ b/census/website/src/components/icons/SiCrownGlow.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiCrownGlow = (props: SVGProps) => ( + + + +); +export default SiCrownGlow; diff --git a/census/website/src/components/icons/SiCrucifix.tsx b/census/website/src/components/icons/SiCrucifix.tsx new file mode 100644 index 0000000..d2009f5 --- /dev/null +++ b/census/website/src/components/icons/SiCrucifix.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiCrucifix = (props: SVGProps) => ( + + + +); +export default SiCrucifix; diff --git a/census/website/src/components/icons/SiCss.tsx b/census/website/src/components/icons/SiCss.tsx new file mode 100644 index 0000000..1e91b3f --- /dev/null +++ b/census/website/src/components/icons/SiCss.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiCss = (props: SVGProps) => ( + + + +); +export default SiCss; diff --git a/census/website/src/components/icons/SiCubeShape.tsx b/census/website/src/components/icons/SiCubeShape.tsx new file mode 100644 index 0000000..c81b2c7 --- /dev/null +++ b/census/website/src/components/icons/SiCubeShape.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiCubeShape = (props: SVGProps) => ( + + + +); +export default SiCubeShape; diff --git a/census/website/src/components/icons/SiCupStraw.tsx b/census/website/src/components/icons/SiCupStraw.tsx new file mode 100644 index 0000000..4e94987 --- /dev/null +++ b/census/website/src/components/icons/SiCupStraw.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiCupStraw = (props: SVGProps) => ( + + + +); +export default SiCupStraw; diff --git a/census/website/src/components/icons/SiCursor.tsx b/census/website/src/components/icons/SiCursor.tsx new file mode 100644 index 0000000..2099786 --- /dev/null +++ b/census/website/src/components/icons/SiCursor.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiCursor = (props: SVGProps) => ( + + + + +); +export default SiCursor; diff --git a/census/website/src/components/icons/SiCursorClick.tsx b/census/website/src/components/icons/SiCursorClick.tsx new file mode 100644 index 0000000..c85da74 --- /dev/null +++ b/census/website/src/components/icons/SiCursorClick.tsx @@ -0,0 +1,36 @@ +import type { SVGProps } from 'react'; +const SiCursorClick = (props: SVGProps) => ( + + + + + + + + +); +export default SiCursorClick; diff --git a/census/website/src/components/icons/SiCursorText.tsx b/census/website/src/components/icons/SiCursorText.tsx new file mode 100644 index 0000000..7feebf1 --- /dev/null +++ b/census/website/src/components/icons/SiCursorText.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiCursorText = (props: SVGProps) => ( + + + + + + +); +export default SiCursorText; diff --git a/census/website/src/components/icons/SiDashboard.tsx b/census/website/src/components/icons/SiDashboard.tsx new file mode 100644 index 0000000..7776a48 --- /dev/null +++ b/census/website/src/components/icons/SiDashboard.tsx @@ -0,0 +1,15 @@ +import type { SVGProps } from 'react'; +const SiDashboard = (props: SVGProps) => ( + + + + + +); +export default SiDashboard; diff --git a/census/website/src/components/icons/SiDataTransfer.tsx b/census/website/src/components/icons/SiDataTransfer.tsx new file mode 100644 index 0000000..0542f60 --- /dev/null +++ b/census/website/src/components/icons/SiDataTransfer.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiDataTransfer = (props: SVGProps) => ( + + + +); +export default SiDataTransfer; diff --git a/census/website/src/components/icons/SiDataTransferCheck.tsx b/census/website/src/components/icons/SiDataTransferCheck.tsx new file mode 100644 index 0000000..f6e698b --- /dev/null +++ b/census/website/src/components/icons/SiDataTransferCheck.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiDataTransferCheck = (props: SVGProps) => ( + + + +); +export default SiDataTransferCheck; diff --git a/census/website/src/components/icons/SiDataTransferError.tsx b/census/website/src/components/icons/SiDataTransferError.tsx new file mode 100644 index 0000000..8f0a095 --- /dev/null +++ b/census/website/src/components/icons/SiDataTransferError.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiDataTransferError = (props: SVGProps) => ( + + + +); +export default SiDataTransferError; diff --git a/census/website/src/components/icons/SiDatabase.tsx b/census/website/src/components/icons/SiDatabase.tsx new file mode 100644 index 0000000..b250e5a --- /dev/null +++ b/census/website/src/components/icons/SiDatabase.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiDatabase = (props: SVGProps) => ( + + + + + +); +export default SiDatabase; diff --git a/census/website/src/components/icons/SiDatabaseCheck.tsx b/census/website/src/components/icons/SiDatabaseCheck.tsx new file mode 100644 index 0000000..c9d8eb6 --- /dev/null +++ b/census/website/src/components/icons/SiDatabaseCheck.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiDatabaseCheck = (props: SVGProps) => ( + + + +); +export default SiDatabaseCheck; diff --git a/census/website/src/components/icons/SiDatabaseCross.tsx b/census/website/src/components/icons/SiDatabaseCross.tsx new file mode 100644 index 0000000..d737568 --- /dev/null +++ b/census/website/src/components/icons/SiDatabaseCross.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiDatabaseCross = (props: SVGProps) => ( + + + +); +export default SiDatabaseCross; diff --git a/census/website/src/components/icons/SiDatabaseError.tsx b/census/website/src/components/icons/SiDatabaseError.tsx new file mode 100644 index 0000000..a5ec405 --- /dev/null +++ b/census/website/src/components/icons/SiDatabaseError.tsx @@ -0,0 +1,37 @@ +import type { SVGProps } from 'react'; +const SiDatabaseError = (props: SVGProps) => ( + + + + + + + + + +); +export default SiDatabaseError; diff --git a/census/website/src/components/icons/SiDatabaseMinus.tsx b/census/website/src/components/icons/SiDatabaseMinus.tsx new file mode 100644 index 0000000..bf8d60a --- /dev/null +++ b/census/website/src/components/icons/SiDatabaseMinus.tsx @@ -0,0 +1,29 @@ +import type { SVGProps } from 'react'; +const SiDatabaseMinus = (props: SVGProps) => ( + + + + + + + +); +export default SiDatabaseMinus; diff --git a/census/website/src/components/icons/SiDatabasePlus.tsx b/census/website/src/components/icons/SiDatabasePlus.tsx new file mode 100644 index 0000000..a036d0e --- /dev/null +++ b/census/website/src/components/icons/SiDatabasePlus.tsx @@ -0,0 +1,30 @@ +import type { SVGProps } from 'react'; +const SiDatabasePlus = (props: SVGProps) => ( + + + + + + + + +); +export default SiDatabasePlus; diff --git a/census/website/src/components/icons/SiDeathstar.tsx b/census/website/src/components/icons/SiDeathstar.tsx new file mode 100644 index 0000000..c36fe06 --- /dev/null +++ b/census/website/src/components/icons/SiDeathstar.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiDeathstar = (props: SVGProps) => ( + + + + + +); +export default SiDeathstar; diff --git a/census/website/src/components/icons/SiDeer.tsx b/census/website/src/components/icons/SiDeer.tsx new file mode 100644 index 0000000..b4f90d4 --- /dev/null +++ b/census/website/src/components/icons/SiDeer.tsx @@ -0,0 +1,25 @@ +import type { SVGProps } from 'react'; +const SiDeer = (props: SVGProps) => ( + + + + + +); +export default SiDeer; diff --git a/census/website/src/components/icons/SiDelete.tsx b/census/website/src/components/icons/SiDelete.tsx new file mode 100644 index 0000000..0db7e27 --- /dev/null +++ b/census/website/src/components/icons/SiDelete.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiDelete = (props: SVGProps) => ( + + + +); +export default SiDelete; diff --git a/census/website/src/components/icons/SiDevices.tsx b/census/website/src/components/icons/SiDevices.tsx new file mode 100644 index 0000000..a732620 --- /dev/null +++ b/census/website/src/components/icons/SiDevices.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiDevices = (props: SVGProps) => ( + + + +); +export default SiDevices; diff --git a/census/website/src/components/icons/SiDevices2.tsx b/census/website/src/components/icons/SiDevices2.tsx new file mode 100644 index 0000000..964dac4 --- /dev/null +++ b/census/website/src/components/icons/SiDevices2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiDevices2 = (props: SVGProps) => ( + + + +); +export default SiDevices2; diff --git a/census/website/src/components/icons/SiDialPad.tsx b/census/website/src/components/icons/SiDialPad.tsx new file mode 100644 index 0000000..35674a9 --- /dev/null +++ b/census/website/src/components/icons/SiDialPad.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiDialPad = (props: SVGProps) => ( + + + + + + + + + + +); +export default SiDialPad; diff --git a/census/website/src/components/icons/SiDiamond.tsx b/census/website/src/components/icons/SiDiamond.tsx new file mode 100644 index 0000000..c74da4a --- /dev/null +++ b/census/website/src/components/icons/SiDiamond.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiDiamond = (props: SVGProps) => ( + + + +); +export default SiDiamond; diff --git a/census/website/src/components/icons/SiDiamonds.tsx b/census/website/src/components/icons/SiDiamonds.tsx new file mode 100644 index 0000000..2da3837 --- /dev/null +++ b/census/website/src/components/icons/SiDiamonds.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiDiamonds = (props: SVGProps) => ( + + + +); +export default SiDiamonds; diff --git a/census/website/src/components/icons/SiDice1.tsx b/census/website/src/components/icons/SiDice1.tsx new file mode 100644 index 0000000..2aedefc --- /dev/null +++ b/census/website/src/components/icons/SiDice1.tsx @@ -0,0 +1,19 @@ +import type { SVGProps } from 'react'; +const SiDice1 = (props: SVGProps) => ( + + + + +); +export default SiDice1; diff --git a/census/website/src/components/icons/SiDice2.tsx b/census/website/src/components/icons/SiDice2.tsx new file mode 100644 index 0000000..4ec9a08 --- /dev/null +++ b/census/website/src/components/icons/SiDice2.tsx @@ -0,0 +1,25 @@ +import type { SVGProps } from 'react'; +const SiDice2 = (props: SVGProps) => ( + + + + + +); +export default SiDice2; diff --git a/census/website/src/components/icons/SiDice3.tsx b/census/website/src/components/icons/SiDice3.tsx new file mode 100644 index 0000000..407ee58 --- /dev/null +++ b/census/website/src/components/icons/SiDice3.tsx @@ -0,0 +1,31 @@ +import type { SVGProps } from 'react'; +const SiDice3 = (props: SVGProps) => ( + + + + + + +); +export default SiDice3; diff --git a/census/website/src/components/icons/SiDice4.tsx b/census/website/src/components/icons/SiDice4.tsx new file mode 100644 index 0000000..dfb1d59 --- /dev/null +++ b/census/website/src/components/icons/SiDice4.tsx @@ -0,0 +1,37 @@ +import type { SVGProps } from 'react'; +const SiDice4 = (props: SVGProps) => ( + + + + + + + +); +export default SiDice4; diff --git a/census/website/src/components/icons/SiDice5.tsx b/census/website/src/components/icons/SiDice5.tsx new file mode 100644 index 0000000..5ed7a8c --- /dev/null +++ b/census/website/src/components/icons/SiDice5.tsx @@ -0,0 +1,43 @@ +import type { SVGProps } from 'react'; +const SiDice5 = (props: SVGProps) => ( + + + + + + + + +); +export default SiDice5; diff --git a/census/website/src/components/icons/SiDice6.tsx b/census/website/src/components/icons/SiDice6.tsx new file mode 100644 index 0000000..142efb3 --- /dev/null +++ b/census/website/src/components/icons/SiDice6.tsx @@ -0,0 +1,49 @@ +import type { SVGProps } from 'react'; +const SiDice6 = (props: SVGProps) => ( + + + + + + + + + +); +export default SiDice6; diff --git a/census/website/src/components/icons/SiDimensions.tsx b/census/website/src/components/icons/SiDimensions.tsx new file mode 100644 index 0000000..e9f2bd4 --- /dev/null +++ b/census/website/src/components/icons/SiDimensions.tsx @@ -0,0 +1,43 @@ +import type { SVGProps } from 'react'; +const SiDimensions = (props: SVGProps) => ( + + + + + + + + + +); +export default SiDimensions; diff --git a/census/website/src/components/icons/SiDirections.tsx b/census/website/src/components/icons/SiDirections.tsx new file mode 100644 index 0000000..3ef1778 --- /dev/null +++ b/census/website/src/components/icons/SiDirections.tsx @@ -0,0 +1,29 @@ +import type { SVGProps } from 'react'; +const SiDirections = (props: SVGProps) => ( + + + + + + + +); +export default SiDirections; diff --git a/census/website/src/components/icons/SiDirectorChair.tsx b/census/website/src/components/icons/SiDirectorChair.tsx new file mode 100644 index 0000000..64f2a74 --- /dev/null +++ b/census/website/src/components/icons/SiDirectorChair.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiDirectorChair = (props: SVGProps) => ( + + + +); +export default SiDirectorChair; diff --git a/census/website/src/components/icons/SiDisability.tsx b/census/website/src/components/icons/SiDisability.tsx new file mode 100644 index 0000000..c5acd41 --- /dev/null +++ b/census/website/src/components/icons/SiDisability.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiDisability = (props: SVGProps) => ( + + + +); +export default SiDisability; diff --git a/census/website/src/components/icons/SiDisability2.tsx b/census/website/src/components/icons/SiDisability2.tsx new file mode 100644 index 0000000..58f6453 --- /dev/null +++ b/census/website/src/components/icons/SiDisability2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiDisability2 = (props: SVGProps) => ( + + + +); +export default SiDisability2; diff --git a/census/website/src/components/icons/SiDiscord.tsx b/census/website/src/components/icons/SiDiscord.tsx new file mode 100644 index 0000000..6d24126 --- /dev/null +++ b/census/website/src/components/icons/SiDiscord.tsx @@ -0,0 +1,25 @@ +import type { SVGProps } from 'react'; +const SiDiscord = (props: SVGProps) => ( + + + + + +); +export default SiDiscord; diff --git a/census/website/src/components/icons/SiDna.tsx b/census/website/src/components/icons/SiDna.tsx new file mode 100644 index 0000000..f66a2aa --- /dev/null +++ b/census/website/src/components/icons/SiDna.tsx @@ -0,0 +1,31 @@ +import type { SVGProps } from 'react'; +const SiDna = (props: SVGProps) => ( + + + + + + + + + +); +export default SiDna; diff --git a/census/website/src/components/icons/SiDna2.tsx b/census/website/src/components/icons/SiDna2.tsx new file mode 100644 index 0000000..11f2c91 --- /dev/null +++ b/census/website/src/components/icons/SiDna2.tsx @@ -0,0 +1,17 @@ +import type { SVGProps } from 'react'; +const SiDna2 = (props: SVGProps) => ( + + + + + + + +); +export default SiDna2; diff --git a/census/website/src/components/icons/SiDoc.tsx b/census/website/src/components/icons/SiDoc.tsx new file mode 100644 index 0000000..352d815 --- /dev/null +++ b/census/website/src/components/icons/SiDoc.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiDoc = (props: SVGProps) => ( + + + + + +); +export default SiDoc; diff --git a/census/website/src/components/icons/SiDocumentShield.tsx b/census/website/src/components/icons/SiDocumentShield.tsx new file mode 100644 index 0000000..7cc747d --- /dev/null +++ b/census/website/src/components/icons/SiDocumentShield.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiDocumentShield = (props: SVGProps) => ( + + + +); +export default SiDocumentShield; diff --git a/census/website/src/components/icons/SiDog.tsx b/census/website/src/components/icons/SiDog.tsx new file mode 100644 index 0000000..e369a70 --- /dev/null +++ b/census/website/src/components/icons/SiDog.tsx @@ -0,0 +1,19 @@ +import type { SVGProps } from 'react'; +const SiDog = (props: SVGProps) => ( + + + + +); +export default SiDog; diff --git a/census/website/src/components/icons/SiDogecoin.tsx b/census/website/src/components/icons/SiDogecoin.tsx new file mode 100644 index 0000000..7f65391 --- /dev/null +++ b/census/website/src/components/icons/SiDogecoin.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiDogecoin = (props: SVGProps) => ( + + + + + +); +export default SiDogecoin; diff --git a/census/website/src/components/icons/SiDogecoin2.tsx b/census/website/src/components/icons/SiDogecoin2.tsx new file mode 100644 index 0000000..7b4cf00 --- /dev/null +++ b/census/website/src/components/icons/SiDogecoin2.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiDogecoin2 = (props: SVGProps) => ( + + + + +); +export default SiDogecoin2; diff --git a/census/website/src/components/icons/SiDollar.tsx b/census/website/src/components/icons/SiDollar.tsx new file mode 100644 index 0000000..c0cc4b1 --- /dev/null +++ b/census/website/src/components/icons/SiDollar.tsx @@ -0,0 +1,24 @@ +import type { SVGProps } from 'react'; +const SiDollar = (props: SVGProps) => ( + + + + + + +); +export default SiDollar; diff --git a/census/website/src/components/icons/SiDollar2.tsx b/census/website/src/components/icons/SiDollar2.tsx new file mode 100644 index 0000000..959fca0 --- /dev/null +++ b/census/website/src/components/icons/SiDollar2.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiDollar2 = (props: SVGProps) => ( + + + + +); +export default SiDollar2; diff --git a/census/website/src/components/icons/SiDoor.tsx b/census/website/src/components/icons/SiDoor.tsx new file mode 100644 index 0000000..e15e8ed --- /dev/null +++ b/census/website/src/components/icons/SiDoor.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiDoor = (props: SVGProps) => ( + + + + + +); +export default SiDoor; diff --git a/census/website/src/components/icons/SiDoorEnter.tsx b/census/website/src/components/icons/SiDoorEnter.tsx new file mode 100644 index 0000000..a9bfb63 --- /dev/null +++ b/census/website/src/components/icons/SiDoorEnter.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiDoorEnter = (props: SVGProps) => ( + + + + + + +); +export default SiDoorEnter; diff --git a/census/website/src/components/icons/SiDoorExit.tsx b/census/website/src/components/icons/SiDoorExit.tsx new file mode 100644 index 0000000..f04c23e --- /dev/null +++ b/census/website/src/components/icons/SiDoorExit.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiDoorExit = (props: SVGProps) => ( + + + + + + +); +export default SiDoorExit; diff --git a/census/website/src/components/icons/SiDoorLock.tsx b/census/website/src/components/icons/SiDoorLock.tsx new file mode 100644 index 0000000..8207a08 --- /dev/null +++ b/census/website/src/components/icons/SiDoorLock.tsx @@ -0,0 +1,28 @@ +import type { SVGProps } from 'react'; +const SiDoorLock = (props: SVGProps) => ( + + + + + + +); +export default SiDoorLock; diff --git a/census/website/src/components/icons/SiDoorOpen.tsx b/census/website/src/components/icons/SiDoorOpen.tsx new file mode 100644 index 0000000..8260985 --- /dev/null +++ b/census/website/src/components/icons/SiDoorOpen.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiDoorOpen = (props: SVGProps) => ( + + + +); +export default SiDoorOpen; diff --git a/census/website/src/components/icons/SiDots.tsx b/census/website/src/components/icons/SiDots.tsx new file mode 100644 index 0000000..d01f79b --- /dev/null +++ b/census/website/src/components/icons/SiDots.tsx @@ -0,0 +1,60 @@ +import type { SVGProps } from 'react'; +const SiDots = (props: SVGProps) => ( + + + + + + + + + + + +); +export default SiDots; diff --git a/census/website/src/components/icons/SiDotsHorizontal.tsx b/census/website/src/components/icons/SiDotsHorizontal.tsx new file mode 100644 index 0000000..5605adf --- /dev/null +++ b/census/website/src/components/icons/SiDotsHorizontal.tsx @@ -0,0 +1,18 @@ +import type { SVGProps } from 'react'; +const SiDotsHorizontal = (props: SVGProps) => ( + + + + + +); +export default SiDotsHorizontal; diff --git a/census/website/src/components/icons/SiDotsHorizontalCircle.tsx b/census/website/src/components/icons/SiDotsHorizontalCircle.tsx new file mode 100644 index 0000000..ad65b14 --- /dev/null +++ b/census/website/src/components/icons/SiDotsHorizontalCircle.tsx @@ -0,0 +1,31 @@ +import type { SVGProps } from 'react'; +const SiDotsHorizontalCircle = (props: SVGProps) => ( + + + + + + +); +export default SiDotsHorizontalCircle; diff --git a/census/website/src/components/icons/SiDotsVertical.tsx b/census/website/src/components/icons/SiDotsVertical.tsx new file mode 100644 index 0000000..6aab5bb --- /dev/null +++ b/census/website/src/components/icons/SiDotsVertical.tsx @@ -0,0 +1,18 @@ +import type { SVGProps } from 'react'; +const SiDotsVertical = (props: SVGProps) => ( + + + + + +); +export default SiDotsVertical; diff --git a/census/website/src/components/icons/SiDotsVerticalCircle.tsx b/census/website/src/components/icons/SiDotsVerticalCircle.tsx new file mode 100644 index 0000000..3fd6ab4 --- /dev/null +++ b/census/website/src/components/icons/SiDotsVerticalCircle.tsx @@ -0,0 +1,31 @@ +import type { SVGProps } from 'react'; +const SiDotsVerticalCircle = (props: SVGProps) => ( + + + + + + +); +export default SiDotsVerticalCircle; diff --git a/census/website/src/components/icons/SiDottedCircleLeft.tsx b/census/website/src/components/icons/SiDottedCircleLeft.tsx new file mode 100644 index 0000000..8cc6fe6 --- /dev/null +++ b/census/website/src/components/icons/SiDottedCircleLeft.tsx @@ -0,0 +1,34 @@ +import type { SVGProps } from 'react'; +const SiDottedCircleLeft = (props: SVGProps) => ( + + + + + + +); +export default SiDottedCircleLeft; diff --git a/census/website/src/components/icons/SiDottedCircleRight.tsx b/census/website/src/components/icons/SiDottedCircleRight.tsx new file mode 100644 index 0000000..7ed2b57 --- /dev/null +++ b/census/website/src/components/icons/SiDottedCircleRight.tsx @@ -0,0 +1,34 @@ +import type { SVGProps } from 'react'; +const SiDottedCircleRight = (props: SVGProps) => ( + + + + + + +); +export default SiDottedCircleRight; diff --git a/census/website/src/components/icons/SiDoubleBed.tsx b/census/website/src/components/icons/SiDoubleBed.tsx new file mode 100644 index 0000000..e6cafcc --- /dev/null +++ b/census/website/src/components/icons/SiDoubleBed.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiDoubleBed = (props: SVGProps) => ( + + + +); +export default SiDoubleBed; diff --git a/census/website/src/components/icons/SiDoubleChatBubble.tsx b/census/website/src/components/icons/SiDoubleChatBubble.tsx new file mode 100644 index 0000000..d087b8d --- /dev/null +++ b/census/website/src/components/icons/SiDoubleChatBubble.tsx @@ -0,0 +1,17 @@ +import type { SVGProps } from 'react'; +const SiDoubleChatBubble = (props: SVGProps) => ( + + + + +); +export default SiDoubleChatBubble; diff --git a/census/website/src/components/icons/SiDoubleChevronDown.tsx b/census/website/src/components/icons/SiDoubleChevronDown.tsx new file mode 100644 index 0000000..1c62093 --- /dev/null +++ b/census/website/src/components/icons/SiDoubleChevronDown.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiDoubleChevronDown = (props: SVGProps) => ( + + + + +); +export default SiDoubleChevronDown; diff --git a/census/website/src/components/icons/SiDoubleChevronLeft.tsx b/census/website/src/components/icons/SiDoubleChevronLeft.tsx new file mode 100644 index 0000000..244f7b7 --- /dev/null +++ b/census/website/src/components/icons/SiDoubleChevronLeft.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiDoubleChevronLeft = (props: SVGProps) => ( + + + + +); +export default SiDoubleChevronLeft; diff --git a/census/website/src/components/icons/SiDoubleChevronRight.tsx b/census/website/src/components/icons/SiDoubleChevronRight.tsx new file mode 100644 index 0000000..1167905 --- /dev/null +++ b/census/website/src/components/icons/SiDoubleChevronRight.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiDoubleChevronRight = (props: SVGProps) => ( + + + + +); +export default SiDoubleChevronRight; diff --git a/census/website/src/components/icons/SiDoubleChevronUp.tsx b/census/website/src/components/icons/SiDoubleChevronUp.tsx new file mode 100644 index 0000000..1916c84 --- /dev/null +++ b/census/website/src/components/icons/SiDoubleChevronUp.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiDoubleChevronUp = (props: SVGProps) => ( + + + + +); +export default SiDoubleChevronUp; diff --git a/census/website/src/components/icons/SiDownload.tsx b/census/website/src/components/icons/SiDownload.tsx new file mode 100644 index 0000000..46a373a --- /dev/null +++ b/census/website/src/components/icons/SiDownload.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiDownload = (props: SVGProps) => ( + + + + + +); +export default SiDownload; diff --git a/census/website/src/components/icons/SiDownloadCloud.tsx b/census/website/src/components/icons/SiDownloadCloud.tsx new file mode 100644 index 0000000..54acce3 --- /dev/null +++ b/census/website/src/components/icons/SiDownloadCloud.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiDownloadCloud = (props: SVGProps) => ( + + + + + +); +export default SiDownloadCloud; diff --git a/census/website/src/components/icons/SiDownstairs.tsx b/census/website/src/components/icons/SiDownstairs.tsx new file mode 100644 index 0000000..ab4bed9 --- /dev/null +++ b/census/website/src/components/icons/SiDownstairs.tsx @@ -0,0 +1,28 @@ +import type { SVGProps } from 'react'; +const SiDownstairs = (props: SVGProps) => ( + + + + + + + + + + + + +); +export default SiDownstairs; diff --git a/census/website/src/components/icons/SiDress.tsx b/census/website/src/components/icons/SiDress.tsx new file mode 100644 index 0000000..2b73778 --- /dev/null +++ b/census/website/src/components/icons/SiDress.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiDress = (props: SVGProps) => ( + + + +); +export default SiDress; diff --git a/census/website/src/components/icons/SiDribbble.tsx b/census/website/src/components/icons/SiDribbble.tsx new file mode 100644 index 0000000..bcf19ab --- /dev/null +++ b/census/website/src/components/icons/SiDribbble.tsx @@ -0,0 +1,34 @@ +import type { SVGProps } from 'react'; +const SiDribbble = (props: SVGProps) => ( + + + + + + +); +export default SiDribbble; diff --git a/census/website/src/components/icons/SiDrill.tsx b/census/website/src/components/icons/SiDrill.tsx new file mode 100644 index 0000000..21c20dc --- /dev/null +++ b/census/website/src/components/icons/SiDrill.tsx @@ -0,0 +1,28 @@ +import type { SVGProps } from 'react'; +const SiDrill = (props: SVGProps) => ( + + + + + + +); +export default SiDrill; diff --git a/census/website/src/components/icons/SiDrink.tsx b/census/website/src/components/icons/SiDrink.tsx new file mode 100644 index 0000000..0c72dd8 --- /dev/null +++ b/census/website/src/components/icons/SiDrink.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiDrink = (props: SVGProps) => ( + + + + +); +export default SiDrink; diff --git a/census/website/src/components/icons/SiDrone.tsx b/census/website/src/components/icons/SiDrone.tsx new file mode 100644 index 0000000..832fdcc --- /dev/null +++ b/census/website/src/components/icons/SiDrone.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiDrone = (props: SVGProps) => ( + + + +); +export default SiDrone; diff --git a/census/website/src/components/icons/SiDropbox.tsx b/census/website/src/components/icons/SiDropbox.tsx new file mode 100644 index 0000000..203a677 --- /dev/null +++ b/census/website/src/components/icons/SiDropbox.tsx @@ -0,0 +1,48 @@ +import type { SVGProps } from 'react'; +const SiDropbox = (props: SVGProps) => ( + + + + + + + + +); +export default SiDropbox; diff --git a/census/website/src/components/icons/SiDropdown.tsx b/census/website/src/components/icons/SiDropdown.tsx new file mode 100644 index 0000000..f16669d --- /dev/null +++ b/census/website/src/components/icons/SiDropdown.tsx @@ -0,0 +1,18 @@ +import type { SVGProps } from 'react'; +const SiDropdown = (props: SVGProps) => ( + + + + + +); +export default SiDropdown; diff --git a/census/website/src/components/icons/SiDroplet.tsx b/census/website/src/components/icons/SiDroplet.tsx new file mode 100644 index 0000000..be15309 --- /dev/null +++ b/census/website/src/components/icons/SiDroplet.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiDroplet = (props: SVGProps) => ( + + + +); +export default SiDroplet; diff --git a/census/website/src/components/icons/SiDropletOff.tsx b/census/website/src/components/icons/SiDropletOff.tsx new file mode 100644 index 0000000..d36afe9 --- /dev/null +++ b/census/website/src/components/icons/SiDropletOff.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiDropletOff = (props: SVGProps) => ( + + + +); +export default SiDropletOff; diff --git a/census/website/src/components/icons/SiDroplets.tsx b/census/website/src/components/icons/SiDroplets.tsx new file mode 100644 index 0000000..e39e51c --- /dev/null +++ b/census/website/src/components/icons/SiDroplets.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiDroplets = (props: SVGProps) => ( + + + + +); +export default SiDroplets; diff --git a/census/website/src/components/icons/SiDrums.tsx b/census/website/src/components/icons/SiDrums.tsx new file mode 100644 index 0000000..c0633cc --- /dev/null +++ b/census/website/src/components/icons/SiDrums.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiDrums = (props: SVGProps) => ( + + + + + + +); +export default SiDrums; diff --git a/census/website/src/components/icons/SiDrums2.tsx b/census/website/src/components/icons/SiDrums2.tsx new file mode 100644 index 0000000..ebc9bb5 --- /dev/null +++ b/census/website/src/components/icons/SiDrums2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiDrums2 = (props: SVGProps) => ( + + + +); +export default SiDrums2; diff --git a/census/website/src/components/icons/SiDumbell.tsx b/census/website/src/components/icons/SiDumbell.tsx new file mode 100644 index 0000000..c3fe7ee --- /dev/null +++ b/census/website/src/components/icons/SiDumbell.tsx @@ -0,0 +1,26 @@ +import type { SVGProps } from 'react'; +const SiDumbell = (props: SVGProps) => ( + + + + + + + +); +export default SiDumbell; diff --git a/census/website/src/components/icons/SiEar.tsx b/census/website/src/components/icons/SiEar.tsx new file mode 100644 index 0000000..20990e8 --- /dev/null +++ b/census/website/src/components/icons/SiEar.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiEar = (props: SVGProps) => ( + + + +); +export default SiEar; diff --git a/census/website/src/components/icons/SiEarOff.tsx b/census/website/src/components/icons/SiEarOff.tsx new file mode 100644 index 0000000..c8f1ca0 --- /dev/null +++ b/census/website/src/components/icons/SiEarOff.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiEarOff = (props: SVGProps) => ( + + + +); +export default SiEarOff; diff --git a/census/website/src/components/icons/SiEaseInControl.tsx b/census/website/src/components/icons/SiEaseInControl.tsx new file mode 100644 index 0000000..0916445 --- /dev/null +++ b/census/website/src/components/icons/SiEaseInControl.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiEaseInControl = (props: SVGProps) => ( + + + +); +export default SiEaseInControl; diff --git a/census/website/src/components/icons/SiEaseOutControl.tsx b/census/website/src/components/icons/SiEaseOutControl.tsx new file mode 100644 index 0000000..75efc3d --- /dev/null +++ b/census/website/src/components/icons/SiEaseOutControl.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiEaseOutControl = (props: SVGProps) => ( + + + +); +export default SiEaseOutControl; diff --git a/census/website/src/components/icons/SiEast.tsx b/census/website/src/components/icons/SiEast.tsx new file mode 100644 index 0000000..ad7d9ce --- /dev/null +++ b/census/website/src/components/icons/SiEast.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiEast = (props: SVGProps) => ( + + + + +); +export default SiEast; diff --git a/census/website/src/components/icons/SiEdit.tsx b/census/website/src/components/icons/SiEdit.tsx new file mode 100644 index 0000000..fb1d021 --- /dev/null +++ b/census/website/src/components/icons/SiEdit.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiEdit = (props: SVGProps) => ( + + + + +); +export default SiEdit; diff --git a/census/website/src/components/icons/SiEditShape.tsx b/census/website/src/components/icons/SiEditShape.tsx new file mode 100644 index 0000000..afb6b60 --- /dev/null +++ b/census/website/src/components/icons/SiEditShape.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiEditShape = (props: SVGProps) => ( + + + +); +export default SiEditShape; diff --git a/census/website/src/components/icons/SiEducation.tsx b/census/website/src/components/icons/SiEducation.tsx new file mode 100644 index 0000000..d990710 --- /dev/null +++ b/census/website/src/components/icons/SiEducation.tsx @@ -0,0 +1,26 @@ +import type { SVGProps } from 'react'; +const SiEducation = (props: SVGProps) => ( + + + + + +); +export default SiEducation; diff --git a/census/website/src/components/icons/SiEggTimer.tsx b/census/website/src/components/icons/SiEggTimer.tsx new file mode 100644 index 0000000..a67d0ac --- /dev/null +++ b/census/website/src/components/icons/SiEggTimer.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiEggTimer = (props: SVGProps) => ( + + + +); +export default SiEggTimer; diff --git a/census/website/src/components/icons/SiElectricBike.tsx b/census/website/src/components/icons/SiElectricBike.tsx new file mode 100644 index 0000000..7db6413 --- /dev/null +++ b/census/website/src/components/icons/SiElectricBike.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiElectricBike = (props: SVGProps) => ( + + + +); +export default SiElectricBike; diff --git a/census/website/src/components/icons/SiElectricScooter.tsx b/census/website/src/components/icons/SiElectricScooter.tsx new file mode 100644 index 0000000..81e024f --- /dev/null +++ b/census/website/src/components/icons/SiElectricScooter.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiElectricScooter = (props: SVGProps) => ( + + + +); +export default SiElectricScooter; diff --git a/census/website/src/components/icons/SiEmailError.tsx b/census/website/src/components/icons/SiEmailError.tsx new file mode 100644 index 0000000..7caaca8 --- /dev/null +++ b/census/website/src/components/icons/SiEmailError.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiEmailError = (props: SVGProps) => ( + + + + + + +); +export default SiEmailError; diff --git a/census/website/src/components/icons/SiEmailMinus.tsx b/census/website/src/components/icons/SiEmailMinus.tsx new file mode 100644 index 0000000..2633e45 --- /dev/null +++ b/census/website/src/components/icons/SiEmailMinus.tsx @@ -0,0 +1,18 @@ +import type { SVGProps } from 'react'; +const SiEmailMinus = (props: SVGProps) => ( + + + + + +); +export default SiEmailMinus; diff --git a/census/website/src/components/icons/SiEmailPlus.tsx b/census/website/src/components/icons/SiEmailPlus.tsx new file mode 100644 index 0000000..2f5d967 --- /dev/null +++ b/census/website/src/components/icons/SiEmailPlus.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiEmailPlus = (props: SVGProps) => ( + + + + + + +); +export default SiEmailPlus; diff --git a/census/website/src/components/icons/SiEmojiAngry.tsx b/census/website/src/components/icons/SiEmojiAngry.tsx new file mode 100644 index 0000000..e3f1e1c --- /dev/null +++ b/census/website/src/components/icons/SiEmojiAngry.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiEmojiAngry = (props: SVGProps) => ( + + + +); +export default SiEmojiAngry; diff --git a/census/website/src/components/icons/SiEmojiError.tsx b/census/website/src/components/icons/SiEmojiError.tsx new file mode 100644 index 0000000..3cb24fb --- /dev/null +++ b/census/website/src/components/icons/SiEmojiError.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiEmojiError = (props: SVGProps) => ( + + + +); +export default SiEmojiError; diff --git a/census/website/src/components/icons/SiEmojiHappy.tsx b/census/website/src/components/icons/SiEmojiHappy.tsx new file mode 100644 index 0000000..4547588 --- /dev/null +++ b/census/website/src/components/icons/SiEmojiHappy.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiEmojiHappy = (props: SVGProps) => ( + + + + + + +); +export default SiEmojiHappy; diff --git a/census/website/src/components/icons/SiEmojiMinus.tsx b/census/website/src/components/icons/SiEmojiMinus.tsx new file mode 100644 index 0000000..4446d30 --- /dev/null +++ b/census/website/src/components/icons/SiEmojiMinus.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiEmojiMinus = (props: SVGProps) => ( + + + +); +export default SiEmojiMinus; diff --git a/census/website/src/components/icons/SiEmojiNeutral.tsx b/census/website/src/components/icons/SiEmojiNeutral.tsx new file mode 100644 index 0000000..fbc64fe --- /dev/null +++ b/census/website/src/components/icons/SiEmojiNeutral.tsx @@ -0,0 +1,26 @@ +import type { SVGProps } from 'react'; +const SiEmojiNeutral = (props: SVGProps) => ( + + + + + + +); +export default SiEmojiNeutral; diff --git a/census/website/src/components/icons/SiEmojiPlus.tsx b/census/website/src/components/icons/SiEmojiPlus.tsx new file mode 100644 index 0000000..8f2153e --- /dev/null +++ b/census/website/src/components/icons/SiEmojiPlus.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiEmojiPlus = (props: SVGProps) => ( + + + +); +export default SiEmojiPlus; diff --git a/census/website/src/components/icons/SiEmojiSad.tsx b/census/website/src/components/icons/SiEmojiSad.tsx new file mode 100644 index 0000000..6581f43 --- /dev/null +++ b/census/website/src/components/icons/SiEmojiSad.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiEmojiSad = (props: SVGProps) => ( + + + + + + +); +export default SiEmojiSad; diff --git a/census/website/src/components/icons/SiEmojiXEyes.tsx b/census/website/src/components/icons/SiEmojiXEyes.tsx new file mode 100644 index 0000000..a446c93 --- /dev/null +++ b/census/website/src/components/icons/SiEmojiXEyes.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiEmojiXEyes = (props: SVGProps) => ( + + + +); +export default SiEmojiXEyes; diff --git a/census/website/src/components/icons/SiEnterKey.tsx b/census/website/src/components/icons/SiEnterKey.tsx new file mode 100644 index 0000000..46ef77f --- /dev/null +++ b/census/website/src/components/icons/SiEnterKey.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiEnterKey = (props: SVGProps) => ( + + + +); +export default SiEnterKey; diff --git a/census/website/src/components/icons/SiEraser.tsx b/census/website/src/components/icons/SiEraser.tsx new file mode 100644 index 0000000..6921ba7 --- /dev/null +++ b/census/website/src/components/icons/SiEraser.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiEraser = (props: SVGProps) => ( + + + + +); +export default SiEraser; diff --git a/census/website/src/components/icons/SiEscKey.tsx b/census/website/src/components/icons/SiEscKey.tsx new file mode 100644 index 0000000..3db3661 --- /dev/null +++ b/census/website/src/components/icons/SiEscKey.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiEscKey = (props: SVGProps) => ( + + + +); +export default SiEscKey; diff --git a/census/website/src/components/icons/SiEthereum.tsx b/census/website/src/components/icons/SiEthereum.tsx new file mode 100644 index 0000000..a8255f1 --- /dev/null +++ b/census/website/src/components/icons/SiEthereum.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiEthereum = (props: SVGProps) => ( + + + +); +export default SiEthereum; diff --git a/census/website/src/components/icons/SiEuro.tsx b/census/website/src/components/icons/SiEuro.tsx new file mode 100644 index 0000000..b28e6fe --- /dev/null +++ b/census/website/src/components/icons/SiEuro.tsx @@ -0,0 +1,15 @@ +import type { SVGProps } from 'react'; +const SiEuro = (props: SVGProps) => ( + + + + + +); +export default SiEuro; diff --git a/census/website/src/components/icons/SiExport.tsx b/census/website/src/components/icons/SiExport.tsx new file mode 100644 index 0000000..62494c8 --- /dev/null +++ b/census/website/src/components/icons/SiExport.tsx @@ -0,0 +1,15 @@ +import type { SVGProps } from 'react'; +const SiExport = (props: SVGProps) => ( + + + + + +); +export default SiExport; diff --git a/census/website/src/components/icons/SiEye.tsx b/census/website/src/components/icons/SiEye.tsx new file mode 100644 index 0000000..ed79db0 --- /dev/null +++ b/census/website/src/components/icons/SiEye.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiEye = (props: SVGProps) => ( + + + + +); +export default SiEye; diff --git a/census/website/src/components/icons/SiEyeDropper.tsx b/census/website/src/components/icons/SiEyeDropper.tsx new file mode 100644 index 0000000..9146e78 --- /dev/null +++ b/census/website/src/components/icons/SiEyeDropper.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiEyeDropper = (props: SVGProps) => ( + + + + + +); +export default SiEyeDropper; diff --git a/census/website/src/components/icons/SiEyeLock.tsx b/census/website/src/components/icons/SiEyeLock.tsx new file mode 100644 index 0000000..363874d --- /dev/null +++ b/census/website/src/components/icons/SiEyeLock.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiEyeLock = (props: SVGProps) => ( + + + +); +export default SiEyeLock; diff --git a/census/website/src/components/icons/SiEyeOff.tsx b/census/website/src/components/icons/SiEyeOff.tsx new file mode 100644 index 0000000..6d3cb79 --- /dev/null +++ b/census/website/src/components/icons/SiEyeOff.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiEyeOff = (props: SVGProps) => ( + + + + + +); +export default SiEyeOff; diff --git a/census/website/src/components/icons/SiFace.tsx b/census/website/src/components/icons/SiFace.tsx new file mode 100644 index 0000000..7f25bef --- /dev/null +++ b/census/website/src/components/icons/SiFace.tsx @@ -0,0 +1,39 @@ +import type { SVGProps } from 'react'; +const SiFace = (props: SVGProps) => ( + + + + + + + +); +export default SiFace; diff --git a/census/website/src/components/icons/SiFaceAngel.tsx b/census/website/src/components/icons/SiFaceAngel.tsx new file mode 100644 index 0000000..9264469 --- /dev/null +++ b/census/website/src/components/icons/SiFaceAngel.tsx @@ -0,0 +1,26 @@ +import type { SVGProps } from 'react'; +const SiFaceAngel = (props: SVGProps) => ( + + + + + + + +); +export default SiFaceAngel; diff --git a/census/website/src/components/icons/SiFaceBigSmile.tsx b/census/website/src/components/icons/SiFaceBigSmile.tsx new file mode 100644 index 0000000..42ab629 --- /dev/null +++ b/census/website/src/components/icons/SiFaceBigSmile.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiFaceBigSmile = (props: SVGProps) => ( + + + +); +export default SiFaceBigSmile; diff --git a/census/website/src/components/icons/SiFaceBigSmile2.tsx b/census/website/src/components/icons/SiFaceBigSmile2.tsx new file mode 100644 index 0000000..298fa31 --- /dev/null +++ b/census/website/src/components/icons/SiFaceBigSmile2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiFaceBigSmile2 = (props: SVGProps) => ( + + + +); +export default SiFaceBigSmile2; diff --git a/census/website/src/components/icons/SiFaceCheck.tsx b/census/website/src/components/icons/SiFaceCheck.tsx new file mode 100644 index 0000000..dbb02b2 --- /dev/null +++ b/census/website/src/components/icons/SiFaceCheck.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiFaceCheck = (props: SVGProps) => ( + + + + +); +export default SiFaceCheck; diff --git a/census/website/src/components/icons/SiFaceCry.tsx b/census/website/src/components/icons/SiFaceCry.tsx new file mode 100644 index 0000000..dcc832b --- /dev/null +++ b/census/website/src/components/icons/SiFaceCry.tsx @@ -0,0 +1,26 @@ +import type { SVGProps } from 'react'; +const SiFaceCry = (props: SVGProps) => ( + + + + + + + +); +export default SiFaceCry; diff --git a/census/website/src/components/icons/SiFaceId.tsx b/census/website/src/components/icons/SiFaceId.tsx new file mode 100644 index 0000000..3215a1d --- /dev/null +++ b/census/website/src/components/icons/SiFaceId.tsx @@ -0,0 +1,53 @@ +import type { SVGProps } from 'react'; +const SiFaceId = (props: SVGProps) => ( + + + + + + + + + +); +export default SiFaceId; diff --git a/census/website/src/components/icons/SiFaceIdError.tsx b/census/website/src/components/icons/SiFaceIdError.tsx new file mode 100644 index 0000000..3b495e4 --- /dev/null +++ b/census/website/src/components/icons/SiFaceIdError.tsx @@ -0,0 +1,53 @@ +import type { SVGProps } from 'react'; +const SiFaceIdError = (props: SVGProps) => ( + + + + + + + + + +); +export default SiFaceIdError; diff --git a/census/website/src/components/icons/SiFaceLaughing.tsx b/census/website/src/components/icons/SiFaceLaughing.tsx new file mode 100644 index 0000000..a37a085 --- /dev/null +++ b/census/website/src/components/icons/SiFaceLaughing.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiFaceLaughing = (props: SVGProps) => ( + + + +); +export default SiFaceLaughing; diff --git a/census/website/src/components/icons/SiFaceLove.tsx b/census/website/src/components/icons/SiFaceLove.tsx new file mode 100644 index 0000000..1947147 --- /dev/null +++ b/census/website/src/components/icons/SiFaceLove.tsx @@ -0,0 +1,26 @@ +import type { SVGProps } from 'react'; +const SiFaceLove = (props: SVGProps) => ( + + + + + + + +); +export default SiFaceLove; diff --git a/census/website/src/components/icons/SiFaceSad.tsx b/census/website/src/components/icons/SiFaceSad.tsx new file mode 100644 index 0000000..fb02816 --- /dev/null +++ b/census/website/src/components/icons/SiFaceSad.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiFaceSad = (props: SVGProps) => ( + + + + + + +); +export default SiFaceSad; diff --git a/census/website/src/components/icons/SiFaceSad2.tsx b/census/website/src/components/icons/SiFaceSad2.tsx new file mode 100644 index 0000000..b8640e7 --- /dev/null +++ b/census/website/src/components/icons/SiFaceSad2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiFaceSad2 = (props: SVGProps) => ( + + + +); +export default SiFaceSad2; diff --git a/census/website/src/components/icons/SiFaceShock.tsx b/census/website/src/components/icons/SiFaceShock.tsx new file mode 100644 index 0000000..ff393ad --- /dev/null +++ b/census/website/src/components/icons/SiFaceShock.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiFaceShock = (props: SVGProps) => ( + + + + + + +); +export default SiFaceShock; diff --git a/census/website/src/components/icons/SiFaceSmile.tsx b/census/website/src/components/icons/SiFaceSmile.tsx new file mode 100644 index 0000000..ee8006f --- /dev/null +++ b/census/website/src/components/icons/SiFaceSmile.tsx @@ -0,0 +1,32 @@ +import type { SVGProps } from 'react'; +const SiFaceSmile = (props: SVGProps) => ( + + + + + + +); +export default SiFaceSmile; diff --git a/census/website/src/components/icons/SiFaceStraight.tsx b/census/website/src/components/icons/SiFaceStraight.tsx new file mode 100644 index 0000000..d614ea4 --- /dev/null +++ b/census/website/src/components/icons/SiFaceStraight.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiFaceStraight = (props: SVGProps) => ( + + + + + + +); +export default SiFaceStraight; diff --git a/census/website/src/components/icons/SiFaceSweat.tsx b/census/website/src/components/icons/SiFaceSweat.tsx new file mode 100644 index 0000000..e23f6d7 --- /dev/null +++ b/census/website/src/components/icons/SiFaceSweat.tsx @@ -0,0 +1,37 @@ +import type { SVGProps } from 'react'; +const SiFaceSweat = (props: SVGProps) => ( + + + + + + + +); +export default SiFaceSweat; diff --git a/census/website/src/components/icons/SiFaceUpsideDown.tsx b/census/website/src/components/icons/SiFaceUpsideDown.tsx new file mode 100644 index 0000000..856def1 --- /dev/null +++ b/census/website/src/components/icons/SiFaceUpsideDown.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiFaceUpsideDown = (props: SVGProps) => ( + + + + + + +); +export default SiFaceUpsideDown; diff --git a/census/website/src/components/icons/SiFaceWhistle.tsx b/census/website/src/components/icons/SiFaceWhistle.tsx new file mode 100644 index 0000000..3738ef6 --- /dev/null +++ b/census/website/src/components/icons/SiFaceWhistle.tsx @@ -0,0 +1,25 @@ +import type { SVGProps } from 'react'; +const SiFaceWhistle = (props: SVGProps) => ( + + + + + + +); +export default SiFaceWhistle; diff --git a/census/website/src/components/icons/SiFaceYawn.tsx b/census/website/src/components/icons/SiFaceYawn.tsx new file mode 100644 index 0000000..319f08c --- /dev/null +++ b/census/website/src/components/icons/SiFaceYawn.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiFaceYawn = (props: SVGProps) => ( + + + +); +export default SiFaceYawn; diff --git a/census/website/src/components/icons/SiFacebook.tsx b/census/website/src/components/icons/SiFacebook.tsx new file mode 100644 index 0000000..b190045 --- /dev/null +++ b/census/website/src/components/icons/SiFacebook.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiFacebook = (props: SVGProps) => ( + + + + + +); +export default SiFacebook; diff --git a/census/website/src/components/icons/SiFahrenheit.tsx b/census/website/src/components/icons/SiFahrenheit.tsx new file mode 100644 index 0000000..d6e8112 --- /dev/null +++ b/census/website/src/components/icons/SiFahrenheit.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiFahrenheit = (props: SVGProps) => ( + + + + + +); +export default SiFahrenheit; diff --git a/census/website/src/components/icons/SiFan.tsx b/census/website/src/components/icons/SiFan.tsx new file mode 100644 index 0000000..65f3852 --- /dev/null +++ b/census/website/src/components/icons/SiFan.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiFan = (props: SVGProps) => ( + + + + +); +export default SiFan; diff --git a/census/website/src/components/icons/SiFan2.tsx b/census/website/src/components/icons/SiFan2.tsx new file mode 100644 index 0000000..721f18b --- /dev/null +++ b/census/website/src/components/icons/SiFan2.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiFan2 = (props: SVGProps) => ( + + + + +); +export default SiFan2; diff --git a/census/website/src/components/icons/SiFastForward.tsx b/census/website/src/components/icons/SiFastForward.tsx new file mode 100644 index 0000000..cdf82c4 --- /dev/null +++ b/census/website/src/components/icons/SiFastForward.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiFastForward = (props: SVGProps) => ( + + + + +); +export default SiFastForward; diff --git a/census/website/src/components/icons/SiFastTrain.tsx b/census/website/src/components/icons/SiFastTrain.tsx new file mode 100644 index 0000000..dd529a5 --- /dev/null +++ b/census/website/src/components/icons/SiFastTrain.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiFastTrain = (props: SVGProps) => ( + + + + + +); +export default SiFastTrain; diff --git a/census/website/src/components/icons/SiFaucet.tsx b/census/website/src/components/icons/SiFaucet.tsx new file mode 100644 index 0000000..2141cdf --- /dev/null +++ b/census/website/src/components/icons/SiFaucet.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiFaucet = (props: SVGProps) => ( + + + +); +export default SiFaucet; diff --git a/census/website/src/components/icons/SiFeather.tsx b/census/website/src/components/icons/SiFeather.tsx new file mode 100644 index 0000000..a238f11 --- /dev/null +++ b/census/website/src/components/icons/SiFeather.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiFeather = (props: SVGProps) => ( + + + + +); +export default SiFeather; diff --git a/census/website/src/components/icons/SiFemale.tsx b/census/website/src/components/icons/SiFemale.tsx new file mode 100644 index 0000000..c766fd7 --- /dev/null +++ b/census/website/src/components/icons/SiFemale.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiFemale = (props: SVGProps) => ( + + + +); +export default SiFemale; diff --git a/census/website/src/components/icons/SiFemale2.tsx b/census/website/src/components/icons/SiFemale2.tsx new file mode 100644 index 0000000..b086e5e --- /dev/null +++ b/census/website/src/components/icons/SiFemale2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiFemale2 = (props: SVGProps) => ( + + + +); +export default SiFemale2; diff --git a/census/website/src/components/icons/SiFigma.tsx b/census/website/src/components/icons/SiFigma.tsx new file mode 100644 index 0000000..11be996 --- /dev/null +++ b/census/website/src/components/icons/SiFigma.tsx @@ -0,0 +1,41 @@ +import type { SVGProps } from 'react'; +const SiFigma = (props: SVGProps) => ( + + + + + + + +); +export default SiFigma; diff --git a/census/website/src/components/icons/SiFile.tsx b/census/website/src/components/icons/SiFile.tsx new file mode 100644 index 0000000..d31685a --- /dev/null +++ b/census/website/src/components/icons/SiFile.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiFile = (props: SVGProps) => ( + + + + +); +export default SiFile; diff --git a/census/website/src/components/icons/SiFile2.tsx b/census/website/src/components/icons/SiFile2.tsx new file mode 100644 index 0000000..215d9f9 --- /dev/null +++ b/census/website/src/components/icons/SiFile2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiFile2 = (props: SVGProps) => ( + + + +); +export default SiFile2; diff --git a/census/website/src/components/icons/SiFileCheckmark.tsx b/census/website/src/components/icons/SiFileCheckmark.tsx new file mode 100644 index 0000000..8fa4614 --- /dev/null +++ b/census/website/src/components/icons/SiFileCheckmark.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiFileCheckmark = (props: SVGProps) => ( + + + +); +export default SiFileCheckmark; diff --git a/census/website/src/components/icons/SiFileCode.tsx b/census/website/src/components/icons/SiFileCode.tsx new file mode 100644 index 0000000..1337a9a --- /dev/null +++ b/census/website/src/components/icons/SiFileCode.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiFileCode = (props: SVGProps) => ( + + + +); +export default SiFileCode; diff --git a/census/website/src/components/icons/SiFileDownload2.tsx b/census/website/src/components/icons/SiFileDownload2.tsx new file mode 100644 index 0000000..61831c5 --- /dev/null +++ b/census/website/src/components/icons/SiFileDownload2.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiFileDownload2 = (props: SVGProps) => ( + + + + + +); +export default SiFileDownload2; diff --git a/census/website/src/components/icons/SiFileError.tsx b/census/website/src/components/icons/SiFileError.tsx new file mode 100644 index 0000000..9a811b5 --- /dev/null +++ b/census/website/src/components/icons/SiFileError.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiFileError = (props: SVGProps) => ( + + + +); +export default SiFileError; diff --git a/census/website/src/components/icons/SiFileImportant.tsx b/census/website/src/components/icons/SiFileImportant.tsx new file mode 100644 index 0000000..c1eb5ae --- /dev/null +++ b/census/website/src/components/icons/SiFileImportant.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiFileImportant = (props: SVGProps) => ( + + + + + +); +export default SiFileImportant; diff --git a/census/website/src/components/icons/SiFileMinus.tsx b/census/website/src/components/icons/SiFileMinus.tsx new file mode 100644 index 0000000..4bbeb6f --- /dev/null +++ b/census/website/src/components/icons/SiFileMinus.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiFileMinus = (props: SVGProps) => ( + + + + + +); +export default SiFileMinus; diff --git a/census/website/src/components/icons/SiFileMinus2.tsx b/census/website/src/components/icons/SiFileMinus2.tsx new file mode 100644 index 0000000..3eb2c59 --- /dev/null +++ b/census/website/src/components/icons/SiFileMinus2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiFileMinus2 = (props: SVGProps) => ( + + + +); +export default SiFileMinus2; diff --git a/census/website/src/components/icons/SiFilePlus.tsx b/census/website/src/components/icons/SiFilePlus.tsx new file mode 100644 index 0000000..f1eb052 --- /dev/null +++ b/census/website/src/components/icons/SiFilePlus.tsx @@ -0,0 +1,16 @@ +import type { SVGProps } from 'react'; +const SiFilePlus = (props: SVGProps) => ( + + + + + + +); +export default SiFilePlus; diff --git a/census/website/src/components/icons/SiFilePlus2.tsx b/census/website/src/components/icons/SiFilePlus2.tsx new file mode 100644 index 0000000..c5dbd7b --- /dev/null +++ b/census/website/src/components/icons/SiFilePlus2.tsx @@ -0,0 +1,15 @@ +import type { SVGProps } from 'react'; +const SiFilePlus2 = (props: SVGProps) => ( + + + + + +); +export default SiFilePlus2; diff --git a/census/website/src/components/icons/SiFileScan.tsx b/census/website/src/components/icons/SiFileScan.tsx new file mode 100644 index 0000000..d257294 --- /dev/null +++ b/census/website/src/components/icons/SiFileScan.tsx @@ -0,0 +1,18 @@ +import type { SVGProps } from 'react'; +const SiFileScan = (props: SVGProps) => ( + + + + + +); +export default SiFileScan; diff --git a/census/website/src/components/icons/SiFileSearch.tsx b/census/website/src/components/icons/SiFileSearch.tsx new file mode 100644 index 0000000..da1889e --- /dev/null +++ b/census/website/src/components/icons/SiFileSearch.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiFileSearch = (props: SVGProps) => ( + + + +); +export default SiFileSearch; diff --git a/census/website/src/components/icons/SiFileShare.tsx b/census/website/src/components/icons/SiFileShare.tsx new file mode 100644 index 0000000..eca1113 --- /dev/null +++ b/census/website/src/components/icons/SiFileShare.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiFileShare = (props: SVGProps) => ( + + + +); +export default SiFileShare; diff --git a/census/website/src/components/icons/SiFileText.tsx b/census/website/src/components/icons/SiFileText.tsx new file mode 100644 index 0000000..ab3ac58 --- /dev/null +++ b/census/website/src/components/icons/SiFileText.tsx @@ -0,0 +1,16 @@ +import type { SVGProps } from 'react'; +const SiFileText = (props: SVGProps) => ( + + + + + + +); +export default SiFileText; diff --git a/census/website/src/components/icons/SiFileText2.tsx b/census/website/src/components/icons/SiFileText2.tsx new file mode 100644 index 0000000..d98b812 --- /dev/null +++ b/census/website/src/components/icons/SiFileText2.tsx @@ -0,0 +1,15 @@ +import type { SVGProps } from 'react'; +const SiFileText2 = (props: SVGProps) => ( + + + + + +); +export default SiFileText2; diff --git a/census/website/src/components/icons/SiFileUser.tsx b/census/website/src/components/icons/SiFileUser.tsx new file mode 100644 index 0000000..443f59c --- /dev/null +++ b/census/website/src/components/icons/SiFileUser.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiFileUser = (props: SVGProps) => ( + + + +); +export default SiFileUser; diff --git a/census/website/src/components/icons/SiFiles.tsx b/census/website/src/components/icons/SiFiles.tsx new file mode 100644 index 0000000..6ce00d5 --- /dev/null +++ b/census/website/src/components/icons/SiFiles.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiFiles = (props: SVGProps) => ( + + + +); +export default SiFiles; diff --git a/census/website/src/components/icons/SiFilm.tsx b/census/website/src/components/icons/SiFilm.tsx new file mode 100644 index 0000000..e85bb23 --- /dev/null +++ b/census/website/src/components/icons/SiFilm.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiFilm = (props: SVGProps) => ( + + + + + + + + + + +); +export default SiFilm; diff --git a/census/website/src/components/icons/SiFilter.tsx b/census/website/src/components/icons/SiFilter.tsx new file mode 100644 index 0000000..0a3efb6 --- /dev/null +++ b/census/website/src/components/icons/SiFilter.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiFilter = (props: SVGProps) => ( + + + +); +export default SiFilter; diff --git a/census/website/src/components/icons/SiFilter2.tsx b/census/website/src/components/icons/SiFilter2.tsx new file mode 100644 index 0000000..ecaa99c --- /dev/null +++ b/census/website/src/components/icons/SiFilter2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiFilter2 = (props: SVGProps) => ( + + + +); +export default SiFilter2; diff --git a/census/website/src/components/icons/SiFilters.tsx b/census/website/src/components/icons/SiFilters.tsx new file mode 100644 index 0000000..d6df2cb --- /dev/null +++ b/census/website/src/components/icons/SiFilters.tsx @@ -0,0 +1,18 @@ +import type { SVGProps } from 'react'; +const SiFilters = (props: SVGProps) => ( + + + + + +); +export default SiFilters; diff --git a/census/website/src/components/icons/SiFilters2.tsx b/census/website/src/components/icons/SiFilters2.tsx new file mode 100644 index 0000000..8fc53c2 --- /dev/null +++ b/census/website/src/components/icons/SiFilters2.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiFilters2 = (props: SVGProps) => ( + + + + + +); +export default SiFilters2; diff --git a/census/website/src/components/icons/SiFinder.tsx b/census/website/src/components/icons/SiFinder.tsx new file mode 100644 index 0000000..7263c3f --- /dev/null +++ b/census/website/src/components/icons/SiFinder.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiFinder = (props: SVGProps) => ( + + + +); +export default SiFinder; diff --git a/census/website/src/components/icons/SiFingerCross.tsx b/census/website/src/components/icons/SiFingerCross.tsx new file mode 100644 index 0000000..c1b460e --- /dev/null +++ b/census/website/src/components/icons/SiFingerCross.tsx @@ -0,0 +1,15 @@ +import type { SVGProps } from 'react'; +const SiFingerCross = (props: SVGProps) => ( + + + + + +); +export default SiFingerCross; diff --git a/census/website/src/components/icons/SiFingerPoint.tsx b/census/website/src/components/icons/SiFingerPoint.tsx new file mode 100644 index 0000000..b7d684b --- /dev/null +++ b/census/website/src/components/icons/SiFingerPoint.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiFingerPoint = (props: SVGProps) => ( + + + + +); +export default SiFingerPoint; diff --git a/census/website/src/components/icons/SiFingerSwipe.tsx b/census/website/src/components/icons/SiFingerSwipe.tsx new file mode 100644 index 0000000..40e4d0a --- /dev/null +++ b/census/website/src/components/icons/SiFingerSwipe.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiFingerSwipe = (props: SVGProps) => ( + + + + +); +export default SiFingerSwipe; diff --git a/census/website/src/components/icons/SiFingerTap.tsx b/census/website/src/components/icons/SiFingerTap.tsx new file mode 100644 index 0000000..135389e --- /dev/null +++ b/census/website/src/components/icons/SiFingerTap.tsx @@ -0,0 +1,23 @@ +import type { SVGProps } from 'react'; +const SiFingerTap = (props: SVGProps) => ( + + + + + + + +); +export default SiFingerTap; diff --git a/census/website/src/components/icons/SiFingerTap2.tsx b/census/website/src/components/icons/SiFingerTap2.tsx new file mode 100644 index 0000000..e57804d --- /dev/null +++ b/census/website/src/components/icons/SiFingerTap2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiFingerTap2 = (props: SVGProps) => ( + + + +); +export default SiFingerTap2; diff --git a/census/website/src/components/icons/SiFingerprint.tsx b/census/website/src/components/icons/SiFingerprint.tsx new file mode 100644 index 0000000..29281af --- /dev/null +++ b/census/website/src/components/icons/SiFingerprint.tsx @@ -0,0 +1,49 @@ +import type { SVGProps } from 'react'; +const SiFingerprint = (props: SVGProps) => ( + + + + + + + + + +); +export default SiFingerprint; diff --git a/census/website/src/components/icons/SiFingerprint2.tsx b/census/website/src/components/icons/SiFingerprint2.tsx new file mode 100644 index 0000000..ed88c5e --- /dev/null +++ b/census/website/src/components/icons/SiFingerprint2.tsx @@ -0,0 +1,30 @@ +import type { SVGProps } from 'react'; +const SiFingerprint2 = (props: SVGProps) => ( + + + + + + + + +); +export default SiFingerprint2; diff --git a/census/website/src/components/icons/SiFire.tsx b/census/website/src/components/icons/SiFire.tsx new file mode 100644 index 0000000..4d9b5c7 --- /dev/null +++ b/census/website/src/components/icons/SiFire.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiFire = (props: SVGProps) => ( + + + +); +export default SiFire; diff --git a/census/website/src/components/icons/SiFish.tsx b/census/website/src/components/icons/SiFish.tsx new file mode 100644 index 0000000..5c7ddcd --- /dev/null +++ b/census/website/src/components/icons/SiFish.tsx @@ -0,0 +1,19 @@ +import type { SVGProps } from 'react'; +const SiFish = (props: SVGProps) => ( + + + + +); +export default SiFish; diff --git a/census/website/src/components/icons/SiFishes.tsx b/census/website/src/components/icons/SiFishes.tsx new file mode 100644 index 0000000..1ed33bb --- /dev/null +++ b/census/website/src/components/icons/SiFishes.tsx @@ -0,0 +1,26 @@ +import type { SVGProps } from 'react'; +const SiFishes = (props: SVGProps) => ( + + + + + +); +export default SiFishes; diff --git a/census/website/src/components/icons/SiFlag.tsx b/census/website/src/components/icons/SiFlag.tsx new file mode 100644 index 0000000..5ca2ff1 --- /dev/null +++ b/census/website/src/components/icons/SiFlag.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiFlag = (props: SVGProps) => ( + + + +); +export default SiFlag; diff --git a/census/website/src/components/icons/SiFlagPriority.tsx b/census/website/src/components/icons/SiFlagPriority.tsx new file mode 100644 index 0000000..c44a3c4 --- /dev/null +++ b/census/website/src/components/icons/SiFlagPriority.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiFlagPriority = (props: SVGProps) => ( + + + + +); +export default SiFlagPriority; diff --git a/census/website/src/components/icons/SiFlagPriority2.tsx b/census/website/src/components/icons/SiFlagPriority2.tsx new file mode 100644 index 0000000..4680fb0 --- /dev/null +++ b/census/website/src/components/icons/SiFlagPriority2.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiFlagPriority2 = (props: SVGProps) => ( + + + + +); +export default SiFlagPriority2; diff --git a/census/website/src/components/icons/SiFlagPriority3.tsx b/census/website/src/components/icons/SiFlagPriority3.tsx new file mode 100644 index 0000000..8db632d --- /dev/null +++ b/census/website/src/components/icons/SiFlagPriority3.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiFlagPriority3 = (props: SVGProps) => ( + + + + +); +export default SiFlagPriority3; diff --git a/census/website/src/components/icons/SiFlashlight.tsx b/census/website/src/components/icons/SiFlashlight.tsx new file mode 100644 index 0000000..254deb4 --- /dev/null +++ b/census/website/src/components/icons/SiFlashlight.tsx @@ -0,0 +1,11 @@ +import type { SVGProps } from 'react'; +const SiFlashlight = (props: SVGProps) => ( + + + + +); +export default SiFlashlight; diff --git a/census/website/src/components/icons/SiFlipHorizontal.tsx b/census/website/src/components/icons/SiFlipHorizontal.tsx new file mode 100644 index 0000000..429673e --- /dev/null +++ b/census/website/src/components/icons/SiFlipHorizontal.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiFlipHorizontal = (props: SVGProps) => ( + + + +); +export default SiFlipHorizontal; diff --git a/census/website/src/components/icons/SiFlipHorizontally.tsx b/census/website/src/components/icons/SiFlipHorizontally.tsx new file mode 100644 index 0000000..f261429 --- /dev/null +++ b/census/website/src/components/icons/SiFlipHorizontally.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiFlipHorizontally = (props: SVGProps) => ( + + + + + +); +export default SiFlipHorizontally; diff --git a/census/website/src/components/icons/SiFlipVertical.tsx b/census/website/src/components/icons/SiFlipVertical.tsx new file mode 100644 index 0000000..c4521bf --- /dev/null +++ b/census/website/src/components/icons/SiFlipVertical.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiFlipVertical = (props: SVGProps) => ( + + + +); +export default SiFlipVertical; diff --git a/census/website/src/components/icons/SiFlipVertically.tsx b/census/website/src/components/icons/SiFlipVertically.tsx new file mode 100644 index 0000000..453c5ac --- /dev/null +++ b/census/website/src/components/icons/SiFlipVertically.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiFlipVertically = (props: SVGProps) => ( + + + + + +); +export default SiFlipVertically; diff --git a/census/website/src/components/icons/SiFloatCenter.tsx b/census/website/src/components/icons/SiFloatCenter.tsx new file mode 100644 index 0000000..ffbdf7d --- /dev/null +++ b/census/website/src/components/icons/SiFloatCenter.tsx @@ -0,0 +1,19 @@ +import type { SVGProps } from 'react'; +const SiFloatCenter = (props: SVGProps) => ( + + + + + + + + + +); +export default SiFloatCenter; diff --git a/census/website/src/components/icons/SiFloatLeft.tsx b/census/website/src/components/icons/SiFloatLeft.tsx new file mode 100644 index 0000000..997f490 --- /dev/null +++ b/census/website/src/components/icons/SiFloatLeft.tsx @@ -0,0 +1,17 @@ +import type { SVGProps } from 'react'; +const SiFloatLeft = (props: SVGProps) => ( + + + + + + + +); +export default SiFloatLeft; diff --git a/census/website/src/components/icons/SiFloatRight.tsx b/census/website/src/components/icons/SiFloatRight.tsx new file mode 100644 index 0000000..16eac95 --- /dev/null +++ b/census/website/src/components/icons/SiFloatRight.tsx @@ -0,0 +1,17 @@ +import type { SVGProps } from 'react'; +const SiFloatRight = (props: SVGProps) => ( + + + + + + + +); +export default SiFloatRight; diff --git a/census/website/src/components/icons/SiFloorplan.tsx b/census/website/src/components/icons/SiFloorplan.tsx new file mode 100644 index 0000000..de0fab7 --- /dev/null +++ b/census/website/src/components/icons/SiFloorplan.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiFloorplan = (props: SVGProps) => ( + + + +); +export default SiFloorplan; diff --git a/census/website/src/components/icons/SiFloppyDisc.tsx b/census/website/src/components/icons/SiFloppyDisc.tsx new file mode 100644 index 0000000..2a8fd91 --- /dev/null +++ b/census/website/src/components/icons/SiFloppyDisc.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiFloppyDisc = (props: SVGProps) => ( + + + + + +); +export default SiFloppyDisc; diff --git a/census/website/src/components/icons/SiFlower.tsx b/census/website/src/components/icons/SiFlower.tsx new file mode 100644 index 0000000..cf72c74 --- /dev/null +++ b/census/website/src/components/icons/SiFlower.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiFlower = (props: SVGProps) => ( + + + + +); +export default SiFlower; diff --git a/census/website/src/components/icons/SiFlower2.tsx b/census/website/src/components/icons/SiFlower2.tsx new file mode 100644 index 0000000..f25fff4 --- /dev/null +++ b/census/website/src/components/icons/SiFlower2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiFlower2 = (props: SVGProps) => ( + + + +); +export default SiFlower2; diff --git a/census/website/src/components/icons/SiFlowers.tsx b/census/website/src/components/icons/SiFlowers.tsx new file mode 100644 index 0000000..e2b5afd --- /dev/null +++ b/census/website/src/components/icons/SiFlowers.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiFlowers = (props: SVGProps) => ( + + + + + + +); +export default SiFlowers; diff --git a/census/website/src/components/icons/SiFolder.tsx b/census/website/src/components/icons/SiFolder.tsx new file mode 100644 index 0000000..0a0d0be --- /dev/null +++ b/census/website/src/components/icons/SiFolder.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiFolder = (props: SVGProps) => ( + + + + +); +export default SiFolder; diff --git a/census/website/src/components/icons/SiFolderCheck.tsx b/census/website/src/components/icons/SiFolderCheck.tsx new file mode 100644 index 0000000..845d474 --- /dev/null +++ b/census/website/src/components/icons/SiFolderCheck.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiFolderCheck = (props: SVGProps) => ( + + + + + +); +export default SiFolderCheck; diff --git a/census/website/src/components/icons/SiFolderCross.tsx b/census/website/src/components/icons/SiFolderCross.tsx new file mode 100644 index 0000000..7c23674 --- /dev/null +++ b/census/website/src/components/icons/SiFolderCross.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiFolderCross = (props: SVGProps) => ( + + + +); +export default SiFolderCross; diff --git a/census/website/src/components/icons/SiFolderDown.tsx b/census/website/src/components/icons/SiFolderDown.tsx new file mode 100644 index 0000000..38287d6 --- /dev/null +++ b/census/website/src/components/icons/SiFolderDown.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiFolderDown = (props: SVGProps) => ( + + + +); +export default SiFolderDown; diff --git a/census/website/src/components/icons/SiFolderImportant.tsx b/census/website/src/components/icons/SiFolderImportant.tsx new file mode 100644 index 0000000..8e63edb --- /dev/null +++ b/census/website/src/components/icons/SiFolderImportant.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiFolderImportant = (props: SVGProps) => ( + + + + + +); +export default SiFolderImportant; diff --git a/census/website/src/components/icons/SiFolderMinus.tsx b/census/website/src/components/icons/SiFolderMinus.tsx new file mode 100644 index 0000000..162f7ab --- /dev/null +++ b/census/website/src/components/icons/SiFolderMinus.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiFolderMinus = (props: SVGProps) => ( + + + + + +); +export default SiFolderMinus; diff --git a/census/website/src/components/icons/SiFolderOpen.tsx b/census/website/src/components/icons/SiFolderOpen.tsx new file mode 100644 index 0000000..5ebfb67 --- /dev/null +++ b/census/website/src/components/icons/SiFolderOpen.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiFolderOpen = (props: SVGProps) => ( + + + +); +export default SiFolderOpen; diff --git a/census/website/src/components/icons/SiFolderOpen2.tsx b/census/website/src/components/icons/SiFolderOpen2.tsx new file mode 100644 index 0000000..13771f8 --- /dev/null +++ b/census/website/src/components/icons/SiFolderOpen2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiFolderOpen2 = (props: SVGProps) => ( + + + +); +export default SiFolderOpen2; diff --git a/census/website/src/components/icons/SiFolderOpenCheck.tsx b/census/website/src/components/icons/SiFolderOpenCheck.tsx new file mode 100644 index 0000000..49a0806 --- /dev/null +++ b/census/website/src/components/icons/SiFolderOpenCheck.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiFolderOpenCheck = (props: SVGProps) => ( + + + +); +export default SiFolderOpenCheck; diff --git a/census/website/src/components/icons/SiFolderPerson.tsx b/census/website/src/components/icons/SiFolderPerson.tsx new file mode 100644 index 0000000..c2dcb4b --- /dev/null +++ b/census/website/src/components/icons/SiFolderPerson.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiFolderPerson = (props: SVGProps) => ( + + + +); +export default SiFolderPerson; diff --git a/census/website/src/components/icons/SiFolderPlus.tsx b/census/website/src/components/icons/SiFolderPlus.tsx new file mode 100644 index 0000000..6b731a0 --- /dev/null +++ b/census/website/src/components/icons/SiFolderPlus.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiFolderPlus = (props: SVGProps) => ( + + + + + + +); +export default SiFolderPlus; diff --git a/census/website/src/components/icons/SiFolderSearch.tsx b/census/website/src/components/icons/SiFolderSearch.tsx new file mode 100644 index 0000000..26fe40c --- /dev/null +++ b/census/website/src/components/icons/SiFolderSearch.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiFolderSearch = (props: SVGProps) => ( + + + +); +export default SiFolderSearch; diff --git a/census/website/src/components/icons/SiFolderShare.tsx b/census/website/src/components/icons/SiFolderShare.tsx new file mode 100644 index 0000000..0c83c60 --- /dev/null +++ b/census/website/src/components/icons/SiFolderShare.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiFolderShare = (props: SVGProps) => ( + + + +); +export default SiFolderShare; diff --git a/census/website/src/components/icons/SiFolderStar.tsx b/census/website/src/components/icons/SiFolderStar.tsx new file mode 100644 index 0000000..55907f2 --- /dev/null +++ b/census/website/src/components/icons/SiFolderStar.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiFolderStar = (props: SVGProps) => ( + + + +); +export default SiFolderStar; diff --git a/census/website/src/components/icons/SiFolderUp.tsx b/census/website/src/components/icons/SiFolderUp.tsx new file mode 100644 index 0000000..20170db --- /dev/null +++ b/census/website/src/components/icons/SiFolderUp.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiFolderUp = (props: SVGProps) => ( + + + +); +export default SiFolderUp; diff --git a/census/website/src/components/icons/SiFolderZip.tsx b/census/website/src/components/icons/SiFolderZip.tsx new file mode 100644 index 0000000..951d650 --- /dev/null +++ b/census/website/src/components/icons/SiFolderZip.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiFolderZip = (props: SVGProps) => ( + + + +); +export default SiFolderZip; diff --git a/census/website/src/components/icons/SiFontFamily.tsx b/census/website/src/components/icons/SiFontFamily.tsx new file mode 100644 index 0000000..072b39b --- /dev/null +++ b/census/website/src/components/icons/SiFontFamily.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiFontFamily = (props: SVGProps) => ( + + + + +); +export default SiFontFamily; diff --git a/census/website/src/components/icons/SiFontSize.tsx b/census/website/src/components/icons/SiFontSize.tsx new file mode 100644 index 0000000..3d04089 --- /dev/null +++ b/census/website/src/components/icons/SiFontSize.tsx @@ -0,0 +1,29 @@ +import type { SVGProps } from 'react'; +const SiFontSize = (props: SVGProps) => ( + + + + + + + +); +export default SiFontSize; diff --git a/census/website/src/components/icons/SiFoodCan.tsx b/census/website/src/components/icons/SiFoodCan.tsx new file mode 100644 index 0000000..61b520d --- /dev/null +++ b/census/website/src/components/icons/SiFoodCan.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiFoodCan = (props: SVGProps) => ( + + + +); +export default SiFoodCan; diff --git a/census/website/src/components/icons/SiForbid.tsx b/census/website/src/components/icons/SiForbid.tsx new file mode 100644 index 0000000..abe3905 --- /dev/null +++ b/census/website/src/components/icons/SiForbid.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiForbid = (props: SVGProps) => ( + + + + +); +export default SiForbid; diff --git a/census/website/src/components/icons/SiForbid2.tsx b/census/website/src/components/icons/SiForbid2.tsx new file mode 100644 index 0000000..f982bfb --- /dev/null +++ b/census/website/src/components/icons/SiForbid2.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiForbid2 = (props: SVGProps) => ( + + + + +); +export default SiForbid2; diff --git a/census/website/src/components/icons/SiFork.tsx b/census/website/src/components/icons/SiFork.tsx new file mode 100644 index 0000000..0acf37c --- /dev/null +++ b/census/website/src/components/icons/SiFork.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiFork = (props: SVGProps) => ( + + + +); +export default SiFork; diff --git a/census/website/src/components/icons/SiFork2.tsx b/census/website/src/components/icons/SiFork2.tsx new file mode 100644 index 0000000..54b17c6 --- /dev/null +++ b/census/website/src/components/icons/SiFork2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiFork2 = (props: SVGProps) => ( + + + +); +export default SiFork2; diff --git a/census/website/src/components/icons/SiForward.tsx b/census/website/src/components/icons/SiForward.tsx new file mode 100644 index 0000000..2fee193 --- /dev/null +++ b/census/website/src/components/icons/SiForward.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiForward = (props: SVGProps) => ( + + + +); +export default SiForward; diff --git a/census/website/src/components/icons/SiFountainPen.tsx b/census/website/src/components/icons/SiFountainPen.tsx new file mode 100644 index 0000000..b669e16 --- /dev/null +++ b/census/website/src/components/icons/SiFountainPen.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiFountainPen = (props: SVGProps) => ( + + + + + +); +export default SiFountainPen; diff --git a/census/website/src/components/icons/SiFrame.tsx b/census/website/src/components/icons/SiFrame.tsx new file mode 100644 index 0000000..9943e83 --- /dev/null +++ b/census/website/src/components/icons/SiFrame.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiFrame = (props: SVGProps) => ( + + + + +); +export default SiFrame; diff --git a/census/website/src/components/icons/SiFramer.tsx b/census/website/src/components/icons/SiFramer.tsx new file mode 100644 index 0000000..1e98002 --- /dev/null +++ b/census/website/src/components/icons/SiFramer.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiFramer = (props: SVGProps) => ( + + + + +); +export default SiFramer; diff --git a/census/website/src/components/icons/SiFryingPan.tsx b/census/website/src/components/icons/SiFryingPan.tsx new file mode 100644 index 0000000..5f7a4fd --- /dev/null +++ b/census/website/src/components/icons/SiFryingPan.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiFryingPan = (props: SVGProps) => ( + + + + +); +export default SiFryingPan; diff --git a/census/website/src/components/icons/SiFullscreen.tsx b/census/website/src/components/icons/SiFullscreen.tsx new file mode 100644 index 0000000..cad1ddc --- /dev/null +++ b/census/website/src/components/icons/SiFullscreen.tsx @@ -0,0 +1,41 @@ +import type { SVGProps } from 'react'; +const SiFullscreen = (props: SVGProps) => ( + + + + + + + +); +export default SiFullscreen; diff --git a/census/website/src/components/icons/SiGalleryHorizontal.tsx b/census/website/src/components/icons/SiGalleryHorizontal.tsx new file mode 100644 index 0000000..87d78be --- /dev/null +++ b/census/website/src/components/icons/SiGalleryHorizontal.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiGalleryHorizontal = (props: SVGProps) => ( + + + +); +export default SiGalleryHorizontal; diff --git a/census/website/src/components/icons/SiGalleryVertical.tsx b/census/website/src/components/icons/SiGalleryVertical.tsx new file mode 100644 index 0000000..8866ffa --- /dev/null +++ b/census/website/src/components/icons/SiGalleryVertical.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiGalleryVertical = (props: SVGProps) => ( + + + +); +export default SiGalleryVertical; diff --git a/census/website/src/components/icons/SiGalleryView.tsx b/census/website/src/components/icons/SiGalleryView.tsx new file mode 100644 index 0000000..bafa5bd --- /dev/null +++ b/census/website/src/components/icons/SiGalleryView.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiGalleryView = (props: SVGProps) => ( + + + + + +); +export default SiGalleryView; diff --git a/census/website/src/components/icons/SiGamePad.tsx b/census/website/src/components/icons/SiGamePad.tsx new file mode 100644 index 0000000..53f4127 --- /dev/null +++ b/census/website/src/components/icons/SiGamePad.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiGamePad = (props: SVGProps) => ( + + + +); +export default SiGamePad; diff --git a/census/website/src/components/icons/SiGaming.tsx b/census/website/src/components/icons/SiGaming.tsx new file mode 100644 index 0000000..f118e87 --- /dev/null +++ b/census/website/src/components/icons/SiGaming.tsx @@ -0,0 +1,26 @@ +import type { SVGProps } from 'react'; +const SiGaming = (props: SVGProps) => ( + + + + + + +); +export default SiGaming; diff --git a/census/website/src/components/icons/SiGarage.tsx b/census/website/src/components/icons/SiGarage.tsx new file mode 100644 index 0000000..384cce2 --- /dev/null +++ b/census/website/src/components/icons/SiGarage.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiGarage = (props: SVGProps) => ( + + + + +); +export default SiGarage; diff --git a/census/website/src/components/icons/SiGardenHose.tsx b/census/website/src/components/icons/SiGardenHose.tsx new file mode 100644 index 0000000..38f4f32 --- /dev/null +++ b/census/website/src/components/icons/SiGardenHose.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiGardenHose = (props: SVGProps) => ( + + + +); +export default SiGardenHose; diff --git a/census/website/src/components/icons/SiGauge.tsx b/census/website/src/components/icons/SiGauge.tsx new file mode 100644 index 0000000..f6f73fa --- /dev/null +++ b/census/website/src/components/icons/SiGauge.tsx @@ -0,0 +1,26 @@ +import type { SVGProps } from 'react'; +const SiGauge = (props: SVGProps) => ( + + + + + + + +); +export default SiGauge; diff --git a/census/website/src/components/icons/SiGavel.tsx b/census/website/src/components/icons/SiGavel.tsx new file mode 100644 index 0000000..841785b --- /dev/null +++ b/census/website/src/components/icons/SiGavel.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiGavel = (props: SVGProps) => ( + + + + + + +); +export default SiGavel; diff --git a/census/website/src/components/icons/SiGbp.tsx b/census/website/src/components/icons/SiGbp.tsx new file mode 100644 index 0000000..b032796 --- /dev/null +++ b/census/website/src/components/icons/SiGbp.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiGbp = (props: SVGProps) => ( + + + + +); +export default SiGbp; diff --git a/census/website/src/components/icons/SiGemini.tsx b/census/website/src/components/icons/SiGemini.tsx new file mode 100644 index 0000000..2c4a293 --- /dev/null +++ b/census/website/src/components/icons/SiGemini.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiGemini = (props: SVGProps) => ( + + + + + + +); +export default SiGemini; diff --git a/census/website/src/components/icons/SiGenerateAi.tsx b/census/website/src/components/icons/SiGenerateAi.tsx new file mode 100644 index 0000000..42d162f --- /dev/null +++ b/census/website/src/components/icons/SiGenerateAi.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiGenerateAi = (props: SVGProps) => ( + + + +); +export default SiGenerateAi; diff --git a/census/website/src/components/icons/SiGhost.tsx b/census/website/src/components/icons/SiGhost.tsx new file mode 100644 index 0000000..7da27af --- /dev/null +++ b/census/website/src/components/icons/SiGhost.tsx @@ -0,0 +1,25 @@ +import type { SVGProps } from 'react'; +const SiGhost = (props: SVGProps) => ( + + + + + +); +export default SiGhost; diff --git a/census/website/src/components/icons/SiGif.tsx b/census/website/src/components/icons/SiGif.tsx new file mode 100644 index 0000000..ffd1d4c --- /dev/null +++ b/census/website/src/components/icons/SiGif.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiGif = (props: SVGProps) => ( + + + + + +); +export default SiGif; diff --git a/census/website/src/components/icons/SiGift.tsx b/census/website/src/components/icons/SiGift.tsx new file mode 100644 index 0000000..b13ab9e --- /dev/null +++ b/census/website/src/components/icons/SiGift.tsx @@ -0,0 +1,23 @@ +import type { SVGProps } from 'react'; +const SiGift = (props: SVGProps) => ( + + + + + + + +); +export default SiGift; diff --git a/census/website/src/components/icons/SiGitBranch.tsx b/census/website/src/components/icons/SiGitBranch.tsx new file mode 100644 index 0000000..ac06560 --- /dev/null +++ b/census/website/src/components/icons/SiGitBranch.tsx @@ -0,0 +1,35 @@ +import type { SVGProps } from 'react'; +const SiGitBranch = (props: SVGProps) => ( + + + + + + + +); +export default SiGitBranch; diff --git a/census/website/src/components/icons/SiGitCommit.tsx b/census/website/src/components/icons/SiGitCommit.tsx new file mode 100644 index 0000000..437eb58 --- /dev/null +++ b/census/website/src/components/icons/SiGitCommit.tsx @@ -0,0 +1,15 @@ +import type { SVGProps } from 'react'; +const SiGitCommit = (props: SVGProps) => ( + + + + + +); +export default SiGitCommit; diff --git a/census/website/src/components/icons/SiGitDiff.tsx b/census/website/src/components/icons/SiGitDiff.tsx new file mode 100644 index 0000000..2707a4c --- /dev/null +++ b/census/website/src/components/icons/SiGitDiff.tsx @@ -0,0 +1,48 @@ +import type { SVGProps } from 'react'; +const SiGitDiff = (props: SVGProps) => ( + + + + + + + + +); +export default SiGitDiff; diff --git a/census/website/src/components/icons/SiGitFork.tsx b/census/website/src/components/icons/SiGitFork.tsx new file mode 100644 index 0000000..f198688 --- /dev/null +++ b/census/website/src/components/icons/SiGitFork.tsx @@ -0,0 +1,34 @@ +import type { SVGProps } from 'react'; +const SiGitFork = (props: SVGProps) => ( + + + + + + +); +export default SiGitFork; diff --git a/census/website/src/components/icons/SiGitMerge.tsx b/census/website/src/components/icons/SiGitMerge.tsx new file mode 100644 index 0000000..b3f029e --- /dev/null +++ b/census/website/src/components/icons/SiGitMerge.tsx @@ -0,0 +1,34 @@ +import type { SVGProps } from 'react'; +const SiGitMerge = (props: SVGProps) => ( + + + + + + +); +export default SiGitMerge; diff --git a/census/website/src/components/icons/SiGitPullRequest.tsx b/census/website/src/components/icons/SiGitPullRequest.tsx new file mode 100644 index 0000000..de07591 --- /dev/null +++ b/census/website/src/components/icons/SiGitPullRequest.tsx @@ -0,0 +1,42 @@ +import type { SVGProps } from 'react'; +const SiGitPullRequest = (props: SVGProps) => ( + + + + + + + + +); +export default SiGitPullRequest; diff --git a/census/website/src/components/icons/SiGithub.tsx b/census/website/src/components/icons/SiGithub.tsx new file mode 100644 index 0000000..b820186 --- /dev/null +++ b/census/website/src/components/icons/SiGithub.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiGithub = (props: SVGProps) => ( + + + +); +export default SiGithub; diff --git a/census/website/src/components/icons/SiGiving.tsx b/census/website/src/components/icons/SiGiving.tsx new file mode 100644 index 0000000..ed58837 --- /dev/null +++ b/census/website/src/components/icons/SiGiving.tsx @@ -0,0 +1,36 @@ +import type { SVGProps } from 'react'; +const SiGiving = (props: SVGProps) => ( + + + + + + +); +export default SiGiving; diff --git a/census/website/src/components/icons/SiGivingMoney.tsx b/census/website/src/components/icons/SiGivingMoney.tsx new file mode 100644 index 0000000..c391853 --- /dev/null +++ b/census/website/src/components/icons/SiGivingMoney.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiGivingMoney = (props: SVGProps) => ( + + + +); +export default SiGivingMoney; diff --git a/census/website/src/components/icons/SiGlassSpill.tsx b/census/website/src/components/icons/SiGlassSpill.tsx new file mode 100644 index 0000000..4036ade --- /dev/null +++ b/census/website/src/components/icons/SiGlassSpill.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiGlassSpill = (props: SVGProps) => ( + + + +); +export default SiGlassSpill; diff --git a/census/website/src/components/icons/SiGlobe.tsx b/census/website/src/components/icons/SiGlobe.tsx new file mode 100644 index 0000000..ed5da40 --- /dev/null +++ b/census/website/src/components/icons/SiGlobe.tsx @@ -0,0 +1,23 @@ +import type { SVGProps } from 'react'; +const SiGlobe = (props: SVGProps) => ( + + + + + +); +export default SiGlobe; diff --git a/census/website/src/components/icons/SiGmail.tsx b/census/website/src/components/icons/SiGmail.tsx new file mode 100644 index 0000000..6d608dd --- /dev/null +++ b/census/website/src/components/icons/SiGmail.tsx @@ -0,0 +1,34 @@ +import type { SVGProps } from 'react'; +const SiGmail = (props: SVGProps) => ( + + + + + + +); +export default SiGmail; diff --git a/census/website/src/components/icons/SiGoldenGateBridge.tsx b/census/website/src/components/icons/SiGoldenGateBridge.tsx new file mode 100644 index 0000000..25bdc3c --- /dev/null +++ b/census/website/src/components/icons/SiGoldenGateBridge.tsx @@ -0,0 +1,34 @@ +import type { SVGProps } from 'react'; +const SiGoldenGateBridge = (props: SVGProps) => ( + + + + + + + + + +); +export default SiGoldenGateBridge; diff --git a/census/website/src/components/icons/SiGolf.tsx b/census/website/src/components/icons/SiGolf.tsx new file mode 100644 index 0000000..3f89de4 --- /dev/null +++ b/census/website/src/components/icons/SiGolf.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiGolf = (props: SVGProps) => ( + + + + +); +export default SiGolf; diff --git a/census/website/src/components/icons/SiGolfBall.tsx b/census/website/src/components/icons/SiGolfBall.tsx new file mode 100644 index 0000000..4bad9e1 --- /dev/null +++ b/census/website/src/components/icons/SiGolfBall.tsx @@ -0,0 +1,62 @@ +import type { SVGProps } from 'react'; +const SiGolfBall = (props: SVGProps) => ( + + + + + + + + + + + +); +export default SiGolfBall; diff --git a/census/website/src/components/icons/SiGoogle.tsx b/census/website/src/components/icons/SiGoogle.tsx new file mode 100644 index 0000000..64dd64a --- /dev/null +++ b/census/website/src/components/icons/SiGoogle.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiGoogle = (props: SVGProps) => ( + + + +); +export default SiGoogle; diff --git a/census/website/src/components/icons/SiGoogleDrive.tsx b/census/website/src/components/icons/SiGoogleDrive.tsx new file mode 100644 index 0000000..111b154 --- /dev/null +++ b/census/website/src/components/icons/SiGoogleDrive.tsx @@ -0,0 +1,28 @@ +import type { SVGProps } from 'react'; +const SiGoogleDrive = (props: SVGProps) => ( + + + + + + +); +export default SiGoogleDrive; diff --git a/census/website/src/components/icons/SiGpt.tsx b/census/website/src/components/icons/SiGpt.tsx new file mode 100644 index 0000000..af0514f --- /dev/null +++ b/census/website/src/components/icons/SiGpt.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiGpt = (props: SVGProps) => ( + + + +); +export default SiGpt; diff --git a/census/website/src/components/icons/SiGradient.tsx b/census/website/src/components/icons/SiGradient.tsx new file mode 100644 index 0000000..b2104ab --- /dev/null +++ b/census/website/src/components/icons/SiGradient.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiGradient = (props: SVGProps) => ( + + + +); +export default SiGradient; diff --git a/census/website/src/components/icons/SiGrapes.tsx b/census/website/src/components/icons/SiGrapes.tsx new file mode 100644 index 0000000..4327a28 --- /dev/null +++ b/census/website/src/components/icons/SiGrapes.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiGrapes = (props: SVGProps) => ( + + + +); +export default SiGrapes; diff --git a/census/website/src/components/icons/SiGravestone.tsx b/census/website/src/components/icons/SiGravestone.tsx new file mode 100644 index 0000000..fe55fae --- /dev/null +++ b/census/website/src/components/icons/SiGravestone.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiGravestone = (props: SVGProps) => ( + + + +); +export default SiGravestone; diff --git a/census/website/src/components/icons/SiGrid.tsx b/census/website/src/components/icons/SiGrid.tsx new file mode 100644 index 0000000..e90ad34 --- /dev/null +++ b/census/website/src/components/icons/SiGrid.tsx @@ -0,0 +1,34 @@ +import type { SVGProps } from 'react'; +const SiGrid = (props: SVGProps) => ( + + + + + + +); +export default SiGrid; diff --git a/census/website/src/components/icons/SiGrid2.tsx b/census/website/src/components/icons/SiGrid2.tsx new file mode 100644 index 0000000..48d1bef --- /dev/null +++ b/census/website/src/components/icons/SiGrid2.tsx @@ -0,0 +1,29 @@ +import type { SVGProps } from 'react'; +const SiGrid2 = (props: SVGProps) => ( + + + + + + + + + + + + + +); +export default SiGrid2; diff --git a/census/website/src/components/icons/SiGrid3.tsx b/census/website/src/components/icons/SiGrid3.tsx new file mode 100644 index 0000000..4328e1b --- /dev/null +++ b/census/website/src/components/icons/SiGrid3.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiGrid3 = (props: SVGProps) => ( + + + +); +export default SiGrid3; diff --git a/census/website/src/components/icons/SiGridMasonry.tsx b/census/website/src/components/icons/SiGridMasonry.tsx new file mode 100644 index 0000000..f4579dc --- /dev/null +++ b/census/website/src/components/icons/SiGridMasonry.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiGridMasonry = (props: SVGProps) => ( + + + + + +); +export default SiGridMasonry; diff --git a/census/website/src/components/icons/SiGridMasonry2.tsx b/census/website/src/components/icons/SiGridMasonry2.tsx new file mode 100644 index 0000000..3cc9c2e --- /dev/null +++ b/census/website/src/components/icons/SiGridMasonry2.tsx @@ -0,0 +1,16 @@ +import type { SVGProps } from 'react'; +const SiGridMasonry2 = (props: SVGProps) => ( + + + + + + +); +export default SiGridMasonry2; diff --git a/census/website/src/components/icons/SiGuitar.tsx b/census/website/src/components/icons/SiGuitar.tsx new file mode 100644 index 0000000..ccc23f0 --- /dev/null +++ b/census/website/src/components/icons/SiGuitar.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiGuitar = (props: SVGProps) => ( + + + +); +export default SiGuitar; diff --git a/census/website/src/components/icons/SiGun.tsx b/census/website/src/components/icons/SiGun.tsx new file mode 100644 index 0000000..4303eb1 --- /dev/null +++ b/census/website/src/components/icons/SiGun.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiGun = (props: SVGProps) => ( + + + + +); +export default SiGun; diff --git a/census/website/src/components/icons/SiH1.tsx b/census/website/src/components/icons/SiH1.tsx new file mode 100644 index 0000000..cfc0e2e --- /dev/null +++ b/census/website/src/components/icons/SiH1.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiH1 = (props: SVGProps) => ( + + + +); +export default SiH1; diff --git a/census/website/src/components/icons/SiH2.tsx b/census/website/src/components/icons/SiH2.tsx new file mode 100644 index 0000000..66301f7 --- /dev/null +++ b/census/website/src/components/icons/SiH2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiH2 = (props: SVGProps) => ( + + + +); +export default SiH2; diff --git a/census/website/src/components/icons/SiH3.tsx b/census/website/src/components/icons/SiH3.tsx new file mode 100644 index 0000000..92827a2 --- /dev/null +++ b/census/website/src/components/icons/SiH3.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiH3 = (props: SVGProps) => ( + + + +); +export default SiH3; diff --git a/census/website/src/components/icons/SiHairClippers.tsx b/census/website/src/components/icons/SiHairClippers.tsx new file mode 100644 index 0000000..1c2e03e --- /dev/null +++ b/census/website/src/components/icons/SiHairClippers.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiHairClippers = (props: SVGProps) => ( + + + +); +export default SiHairClippers; diff --git a/census/website/src/components/icons/SiHairPin.tsx b/census/website/src/components/icons/SiHairPin.tsx new file mode 100644 index 0000000..05bab99 --- /dev/null +++ b/census/website/src/components/icons/SiHairPin.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiHairPin = (props: SVGProps) => ( + + + +); +export default SiHairPin; diff --git a/census/website/src/components/icons/SiHairdryer.tsx b/census/website/src/components/icons/SiHairdryer.tsx new file mode 100644 index 0000000..230f02c --- /dev/null +++ b/census/website/src/components/icons/SiHairdryer.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiHairdryer = (props: SVGProps) => ( + + + +); +export default SiHairdryer; diff --git a/census/website/src/components/icons/SiHalfCircleBottom.tsx b/census/website/src/components/icons/SiHalfCircleBottom.tsx new file mode 100644 index 0000000..8bb9fe7 --- /dev/null +++ b/census/website/src/components/icons/SiHalfCircleBottom.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiHalfCircleBottom = (props: SVGProps) => ( + + + +); +export default SiHalfCircleBottom; diff --git a/census/website/src/components/icons/SiHalfCircleTop.tsx b/census/website/src/components/icons/SiHalfCircleTop.tsx new file mode 100644 index 0000000..c186533 --- /dev/null +++ b/census/website/src/components/icons/SiHalfCircleTop.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiHalfCircleTop = (props: SVGProps) => ( + + + +); +export default SiHalfCircleTop; diff --git a/census/website/src/components/icons/SiHammer.tsx b/census/website/src/components/icons/SiHammer.tsx new file mode 100644 index 0000000..586ee97 --- /dev/null +++ b/census/website/src/components/icons/SiHammer.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiHammer = (props: SVGProps) => ( + + + +); +export default SiHammer; diff --git a/census/website/src/components/icons/SiHand.tsx b/census/website/src/components/icons/SiHand.tsx new file mode 100644 index 0000000..eecc2c9 --- /dev/null +++ b/census/website/src/components/icons/SiHand.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiHand = (props: SVGProps) => ( + + + +); +export default SiHand; diff --git a/census/website/src/components/icons/SiHandImportant.tsx b/census/website/src/components/icons/SiHandImportant.tsx new file mode 100644 index 0000000..991a2cd --- /dev/null +++ b/census/website/src/components/icons/SiHandImportant.tsx @@ -0,0 +1,15 @@ +import type { SVGProps } from 'react'; +const SiHandImportant = (props: SVGProps) => ( + + + + + +); +export default SiHandImportant; diff --git a/census/website/src/components/icons/SiHandLock.tsx b/census/website/src/components/icons/SiHandLock.tsx new file mode 100644 index 0000000..f345982 --- /dev/null +++ b/census/website/src/components/icons/SiHandLock.tsx @@ -0,0 +1,17 @@ +import type { SVGProps } from 'react'; +const SiHandLock = (props: SVGProps) => ( + + + + +); +export default SiHandLock; diff --git a/census/website/src/components/icons/SiHandMinus.tsx b/census/website/src/components/icons/SiHandMinus.tsx new file mode 100644 index 0000000..5b3acd6 --- /dev/null +++ b/census/website/src/components/icons/SiHandMinus.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiHandMinus = (props: SVGProps) => ( + + + +); +export default SiHandMinus; diff --git a/census/website/src/components/icons/SiHandPlus.tsx b/census/website/src/components/icons/SiHandPlus.tsx new file mode 100644 index 0000000..a066a5d --- /dev/null +++ b/census/website/src/components/icons/SiHandPlus.tsx @@ -0,0 +1,17 @@ +import type { SVGProps } from 'react'; +const SiHandPlus = (props: SVGProps) => ( + + + + +); +export default SiHandPlus; diff --git a/census/website/src/components/icons/SiHardDrive.tsx b/census/website/src/components/icons/SiHardDrive.tsx new file mode 100644 index 0000000..58e8f3e --- /dev/null +++ b/census/website/src/components/icons/SiHardDrive.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiHardDrive = (props: SVGProps) => ( + + + + + + +); +export default SiHardDrive; diff --git a/census/website/src/components/icons/SiHardDrive2.tsx b/census/website/src/components/icons/SiHardDrive2.tsx new file mode 100644 index 0000000..f89b4b5 --- /dev/null +++ b/census/website/src/components/icons/SiHardDrive2.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiHardDrive2 = (props: SVGProps) => ( + + + + + + +); +export default SiHardDrive2; diff --git a/census/website/src/components/icons/SiHardDriveStorage.tsx b/census/website/src/components/icons/SiHardDriveStorage.tsx new file mode 100644 index 0000000..0cb8448 --- /dev/null +++ b/census/website/src/components/icons/SiHardDriveStorage.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiHardDriveStorage = (props: SVGProps) => ( + + + +); +export default SiHardDriveStorage; diff --git a/census/website/src/components/icons/SiHashtag.tsx b/census/website/src/components/icons/SiHashtag.tsx new file mode 100644 index 0000000..a4e275c --- /dev/null +++ b/census/website/src/components/icons/SiHashtag.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiHashtag = (props: SVGProps) => ( + + + + + + +); +export default SiHashtag; diff --git a/census/website/src/components/icons/SiHat.tsx b/census/website/src/components/icons/SiHat.tsx new file mode 100644 index 0000000..ec2e3b1 --- /dev/null +++ b/census/website/src/components/icons/SiHat.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiHat = (props: SVGProps) => ( + + + +); +export default SiHat; diff --git a/census/website/src/components/icons/SiHeading.tsx b/census/website/src/components/icons/SiHeading.tsx new file mode 100644 index 0000000..b9bb68b --- /dev/null +++ b/census/website/src/components/icons/SiHeading.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiHeading = (props: SVGProps) => ( + + + +); +export default SiHeading; diff --git a/census/website/src/components/icons/SiHeadphones.tsx b/census/website/src/components/icons/SiHeadphones.tsx new file mode 100644 index 0000000..11c10a9 --- /dev/null +++ b/census/website/src/components/icons/SiHeadphones.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiHeadphones = (props: SVGProps) => ( + + + + + +); +export default SiHeadphones; diff --git a/census/website/src/components/icons/SiHeadphones2.tsx b/census/website/src/components/icons/SiHeadphones2.tsx new file mode 100644 index 0000000..cfa25e4 --- /dev/null +++ b/census/website/src/components/icons/SiHeadphones2.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiHeadphones2 = (props: SVGProps) => ( + + + + + +); +export default SiHeadphones2; diff --git a/census/website/src/components/icons/SiHeadphones3.tsx b/census/website/src/components/icons/SiHeadphones3.tsx new file mode 100644 index 0000000..5618be4 --- /dev/null +++ b/census/website/src/components/icons/SiHeadphones3.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiHeadphones3 = (props: SVGProps) => ( + + + +); +export default SiHeadphones3; diff --git a/census/website/src/components/icons/SiHeadset.tsx b/census/website/src/components/icons/SiHeadset.tsx new file mode 100644 index 0000000..260d475 --- /dev/null +++ b/census/website/src/components/icons/SiHeadset.tsx @@ -0,0 +1,30 @@ +import type { SVGProps } from 'react'; +const SiHeadset = (props: SVGProps) => ( + + + + + + +); +export default SiHeadset; diff --git a/census/website/src/components/icons/SiHealth.tsx b/census/website/src/components/icons/SiHealth.tsx new file mode 100644 index 0000000..237651e --- /dev/null +++ b/census/website/src/components/icons/SiHealth.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiHealth = (props: SVGProps) => ( + + + + +); +export default SiHealth; diff --git a/census/website/src/components/icons/SiHeart.tsx b/census/website/src/components/icons/SiHeart.tsx new file mode 100644 index 0000000..d3a99ce --- /dev/null +++ b/census/website/src/components/icons/SiHeart.tsx @@ -0,0 +1,15 @@ +import type { SVGProps } from 'react'; +const SiHeart = (props: SVGProps) => ( + + + +); +export default SiHeart; diff --git a/census/website/src/components/icons/SiHeartMinus.tsx b/census/website/src/components/icons/SiHeartMinus.tsx new file mode 100644 index 0000000..5dba2d7 --- /dev/null +++ b/census/website/src/components/icons/SiHeartMinus.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiHeartMinus = (props: SVGProps) => ( + + + +); +export default SiHeartMinus; diff --git a/census/website/src/components/icons/SiHeartPlus.tsx b/census/website/src/components/icons/SiHeartPlus.tsx new file mode 100644 index 0000000..b3c7b70 --- /dev/null +++ b/census/website/src/components/icons/SiHeartPlus.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiHeartPlus = (props: SVGProps) => ( + + + +); +export default SiHeartPlus; diff --git a/census/website/src/components/icons/SiHeartRate.tsx b/census/website/src/components/icons/SiHeartRate.tsx new file mode 100644 index 0000000..e719d46 --- /dev/null +++ b/census/website/src/components/icons/SiHeartRate.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiHeartRate = (props: SVGProps) => ( + + + +); +export default SiHeartRate; diff --git a/census/website/src/components/icons/SiHearts.tsx b/census/website/src/components/icons/SiHearts.tsx new file mode 100644 index 0000000..ca2f164 --- /dev/null +++ b/census/website/src/components/icons/SiHearts.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiHearts = (props: SVGProps) => ( + + + +); +export default SiHearts; diff --git a/census/website/src/components/icons/SiHeight.tsx b/census/website/src/components/icons/SiHeight.tsx new file mode 100644 index 0000000..964a935 --- /dev/null +++ b/census/website/src/components/icons/SiHeight.tsx @@ -0,0 +1,34 @@ +import type { SVGProps } from 'react'; +const SiHeight = (props: SVGProps) => ( + + + + + + +); +export default SiHeight; diff --git a/census/website/src/components/icons/SiHelicopter.tsx b/census/website/src/components/icons/SiHelicopter.tsx new file mode 100644 index 0000000..67be580 --- /dev/null +++ b/census/website/src/components/icons/SiHelicopter.tsx @@ -0,0 +1,30 @@ +import type { SVGProps } from 'react'; +const SiHelicopter = (props: SVGProps) => ( + + + + + + + + +); +export default SiHelicopter; diff --git a/census/website/src/components/icons/SiHelp.tsx b/census/website/src/components/icons/SiHelp.tsx new file mode 100644 index 0000000..f9b8f6b --- /dev/null +++ b/census/website/src/components/icons/SiHelp.tsx @@ -0,0 +1,28 @@ +import type { SVGProps } from 'react'; +const SiHelp = (props: SVGProps) => ( + + + + + + + + +); +export default SiHelp; diff --git a/census/website/src/components/icons/SiHelpCircle.tsx b/census/website/src/components/icons/SiHelpCircle.tsx new file mode 100644 index 0000000..560e9a0 --- /dev/null +++ b/census/website/src/components/icons/SiHelpCircle.tsx @@ -0,0 +1,26 @@ +import type { SVGProps } from 'react'; +const SiHelpCircle = (props: SVGProps) => ( + + + + + +); +export default SiHelpCircle; diff --git a/census/website/src/components/icons/SiHideKeyboard.tsx b/census/website/src/components/icons/SiHideKeyboard.tsx new file mode 100644 index 0000000..9698e50 --- /dev/null +++ b/census/website/src/components/icons/SiHideKeyboard.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiHideKeyboard = (props: SVGProps) => ( + + + +); +export default SiHideKeyboard; diff --git a/census/website/src/components/icons/SiHighlighter.tsx b/census/website/src/components/icons/SiHighlighter.tsx new file mode 100644 index 0000000..e6cb159 --- /dev/null +++ b/census/website/src/components/icons/SiHighlighter.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiHighlighter = (props: SVGProps) => ( + + + +); +export default SiHighlighter; diff --git a/census/website/src/components/icons/SiHighlighter2.tsx b/census/website/src/components/icons/SiHighlighter2.tsx new file mode 100644 index 0000000..71adeb0 --- /dev/null +++ b/census/website/src/components/icons/SiHighlighter2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiHighlighter2 = (props: SVGProps) => ( + + + +); +export default SiHighlighter2; diff --git a/census/website/src/components/icons/SiHome.tsx b/census/website/src/components/icons/SiHome.tsx new file mode 100644 index 0000000..3dcacb4 --- /dev/null +++ b/census/website/src/components/icons/SiHome.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiHome = (props: SVGProps) => ( + + + + +); +export default SiHome; diff --git a/census/website/src/components/icons/SiHomeWifi.tsx b/census/website/src/components/icons/SiHomeWifi.tsx new file mode 100644 index 0000000..de5dabd --- /dev/null +++ b/census/website/src/components/icons/SiHomeWifi.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiHomeWifi = (props: SVGProps) => ( + + + +); +export default SiHomeWifi; diff --git a/census/website/src/components/icons/SiHook.tsx b/census/website/src/components/icons/SiHook.tsx new file mode 100644 index 0000000..b1b4042 --- /dev/null +++ b/census/website/src/components/icons/SiHook.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiHook = (props: SVGProps) => ( + + + +); +export default SiHook; diff --git a/census/website/src/components/icons/SiHourglass.tsx b/census/website/src/components/icons/SiHourglass.tsx new file mode 100644 index 0000000..0c0ab4a --- /dev/null +++ b/census/website/src/components/icons/SiHourglass.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiHourglass = (props: SVGProps) => ( + + + + + +); +export default SiHourglass; diff --git a/census/website/src/components/icons/SiHubspot.tsx b/census/website/src/components/icons/SiHubspot.tsx new file mode 100644 index 0000000..a318aba --- /dev/null +++ b/census/website/src/components/icons/SiHubspot.tsx @@ -0,0 +1,34 @@ +import type { SVGProps } from 'react'; +const SiHubspot = (props: SVGProps) => ( + + + + + + + + + +); +export default SiHubspot; diff --git a/census/website/src/components/icons/SiHumidityHigh.tsx b/census/website/src/components/icons/SiHumidityHigh.tsx new file mode 100644 index 0000000..7b8931a --- /dev/null +++ b/census/website/src/components/icons/SiHumidityHigh.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiHumidityHigh = (props: SVGProps) => ( + + + +); +export default SiHumidityHigh; diff --git a/census/website/src/components/icons/SiHumidityLow.tsx b/census/website/src/components/icons/SiHumidityLow.tsx new file mode 100644 index 0000000..d9a75f9 --- /dev/null +++ b/census/website/src/components/icons/SiHumidityLow.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiHumidityLow = (props: SVGProps) => ( + + + +); +export default SiHumidityLow; diff --git a/census/website/src/components/icons/SiHumiditySensor.tsx b/census/website/src/components/icons/SiHumiditySensor.tsx new file mode 100644 index 0000000..552a4f3 --- /dev/null +++ b/census/website/src/components/icons/SiHumiditySensor.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiHumiditySensor = (props: SVGProps) => ( + + + +); +export default SiHumiditySensor; diff --git a/census/website/src/components/icons/SiIce.tsx b/census/website/src/components/icons/SiIce.tsx new file mode 100644 index 0000000..68959ef --- /dev/null +++ b/census/website/src/components/icons/SiIce.tsx @@ -0,0 +1,50 @@ +import type { SVGProps } from 'react'; +const SiIce = (props: SVGProps) => ( + + + + + + + + + + +); +export default SiIce; diff --git a/census/website/src/components/icons/SiIceCream.tsx b/census/website/src/components/icons/SiIceCream.tsx new file mode 100644 index 0000000..bf48e88 --- /dev/null +++ b/census/website/src/components/icons/SiIceCream.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiIceCream = (props: SVGProps) => ( + + + + +); +export default SiIceCream; diff --git a/census/website/src/components/icons/SiIceCream2.tsx b/census/website/src/components/icons/SiIceCream2.tsx new file mode 100644 index 0000000..ce9b3f8 --- /dev/null +++ b/census/website/src/components/icons/SiIceCream2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiIceCream2 = (props: SVGProps) => ( + + + +); +export default SiIceCream2; diff --git a/census/website/src/components/icons/SiIdCard.tsx b/census/website/src/components/icons/SiIdCard.tsx new file mode 100644 index 0000000..7febdae --- /dev/null +++ b/census/website/src/components/icons/SiIdCard.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiIdCard = (props: SVGProps) => ( + + + +); +export default SiIdCard; diff --git a/census/website/src/components/icons/SiInbox.tsx b/census/website/src/components/icons/SiInbox.tsx new file mode 100644 index 0000000..3923639 --- /dev/null +++ b/census/website/src/components/icons/SiInbox.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiInbox = (props: SVGProps) => ( + + + + +); +export default SiInbox; diff --git a/census/website/src/components/icons/SiIncognito.tsx b/census/website/src/components/icons/SiIncognito.tsx new file mode 100644 index 0000000..9eb1d0d --- /dev/null +++ b/census/website/src/components/icons/SiIncognito.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiIncognito = (props: SVGProps) => ( + + + +); +export default SiIncognito; diff --git a/census/website/src/components/icons/SiIndentLeft.tsx b/census/website/src/components/icons/SiIndentLeft.tsx new file mode 100644 index 0000000..8fc90d8 --- /dev/null +++ b/census/website/src/components/icons/SiIndentLeft.tsx @@ -0,0 +1,17 @@ +import type { SVGProps } from 'react'; +const SiIndentLeft = (props: SVGProps) => ( + + + + + + + +); +export default SiIndentLeft; diff --git a/census/website/src/components/icons/SiIndentRight.tsx b/census/website/src/components/icons/SiIndentRight.tsx new file mode 100644 index 0000000..a2137b5 --- /dev/null +++ b/census/website/src/components/icons/SiIndentRight.tsx @@ -0,0 +1,17 @@ +import type { SVGProps } from 'react'; +const SiIndentRight = (props: SVGProps) => ( + + + + + + + +); +export default SiIndentRight; diff --git a/census/website/src/components/icons/SiInfinity.tsx b/census/website/src/components/icons/SiInfinity.tsx new file mode 100644 index 0000000..8dcfa5a --- /dev/null +++ b/census/website/src/components/icons/SiInfinity.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiInfinity = (props: SVGProps) => ( + + + +); +export default SiInfinity; diff --git a/census/website/src/components/icons/SiInformation.tsx b/census/website/src/components/icons/SiInformation.tsx new file mode 100644 index 0000000..04a3eec --- /dev/null +++ b/census/website/src/components/icons/SiInformation.tsx @@ -0,0 +1,17 @@ +import type { SVGProps } from 'react'; +const SiInformation = (props: SVGProps) => ( + + + + + +); +export default SiInformation; diff --git a/census/website/src/components/icons/SiIngredients.tsx b/census/website/src/components/icons/SiIngredients.tsx new file mode 100644 index 0000000..fb411bc --- /dev/null +++ b/census/website/src/components/icons/SiIngredients.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiIngredients = (props: SVGProps) => ( + + + +); +export default SiIngredients; diff --git a/census/website/src/components/icons/SiInputCheck.tsx b/census/website/src/components/icons/SiInputCheck.tsx new file mode 100644 index 0000000..44db409 --- /dev/null +++ b/census/website/src/components/icons/SiInputCheck.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiInputCheck = (props: SVGProps) => ( + + + +); +export default SiInputCheck; diff --git a/census/website/src/components/icons/SiInputCross.tsx b/census/website/src/components/icons/SiInputCross.tsx new file mode 100644 index 0000000..7439f69 --- /dev/null +++ b/census/website/src/components/icons/SiInputCross.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiInputCross = (props: SVGProps) => ( + + + +); +export default SiInputCross; diff --git a/census/website/src/components/icons/SiInputCursor.tsx b/census/website/src/components/icons/SiInputCursor.tsx new file mode 100644 index 0000000..f8ffad4 --- /dev/null +++ b/census/website/src/components/icons/SiInputCursor.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiInputCursor = (props: SVGProps) => ( + + + +); +export default SiInputCursor; diff --git a/census/website/src/components/icons/SiInputField.tsx b/census/website/src/components/icons/SiInputField.tsx new file mode 100644 index 0000000..3384451 --- /dev/null +++ b/census/website/src/components/icons/SiInputField.tsx @@ -0,0 +1,16 @@ +import type { SVGProps } from 'react'; +const SiInputField = (props: SVGProps) => ( + + + + + + +); +export default SiInputField; diff --git a/census/website/src/components/icons/SiInsertColumn.tsx b/census/website/src/components/icons/SiInsertColumn.tsx new file mode 100644 index 0000000..113d9a6 --- /dev/null +++ b/census/website/src/components/icons/SiInsertColumn.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiInsertColumn = (props: SVGProps) => ( + + + +); +export default SiInsertColumn; diff --git a/census/website/src/components/icons/SiInsertRow.tsx b/census/website/src/components/icons/SiInsertRow.tsx new file mode 100644 index 0000000..17303b9 --- /dev/null +++ b/census/website/src/components/icons/SiInsertRow.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiInsertRow = (props: SVGProps) => ( + + + +); +export default SiInsertRow; diff --git a/census/website/src/components/icons/SiInstagram.tsx b/census/website/src/components/icons/SiInstagram.tsx new file mode 100644 index 0000000..98e1b01 --- /dev/null +++ b/census/website/src/components/icons/SiInstagram.tsx @@ -0,0 +1,26 @@ +import type { SVGProps } from 'react'; +const SiInstagram = (props: SVGProps) => ( + + + + + +); +export default SiInstagram; diff --git a/census/website/src/components/icons/SiIphone.tsx b/census/website/src/components/icons/SiIphone.tsx new file mode 100644 index 0000000..f714822 --- /dev/null +++ b/census/website/src/components/icons/SiIphone.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiIphone = (props: SVGProps) => ( + + + + +); +export default SiIphone; diff --git a/census/website/src/components/icons/SiIphone2.tsx b/census/website/src/components/icons/SiIphone2.tsx new file mode 100644 index 0000000..b5b962d --- /dev/null +++ b/census/website/src/components/icons/SiIphone2.tsx @@ -0,0 +1,19 @@ +import type { SVGProps } from 'react'; +const SiIphone2 = (props: SVGProps) => ( + + + + +); +export default SiIphone2; diff --git a/census/website/src/components/icons/SiIphone3.tsx b/census/website/src/components/icons/SiIphone3.tsx new file mode 100644 index 0000000..4102426 --- /dev/null +++ b/census/website/src/components/icons/SiIphone3.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiIphone3 = (props: SVGProps) => ( + + + +); +export default SiIphone3; diff --git a/census/website/src/components/icons/SiIphoneDualCamera.tsx b/census/website/src/components/icons/SiIphoneDualCamera.tsx new file mode 100644 index 0000000..4de9249 --- /dev/null +++ b/census/website/src/components/icons/SiIphoneDualCamera.tsx @@ -0,0 +1,19 @@ +import type { SVGProps } from 'react'; +const SiIphoneDualCamera = (props: SVGProps) => ( + + + + +); +export default SiIphoneDualCamera; diff --git a/census/website/src/components/icons/SiIphoneProCamera.tsx b/census/website/src/components/icons/SiIphoneProCamera.tsx new file mode 100644 index 0000000..132f1bc --- /dev/null +++ b/census/website/src/components/icons/SiIphoneProCamera.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiIphoneProCamera = (props: SVGProps) => ( + + + +); +export default SiIphoneProCamera; diff --git a/census/website/src/components/icons/SiIron.tsx b/census/website/src/components/icons/SiIron.tsx new file mode 100644 index 0000000..d4ba872 --- /dev/null +++ b/census/website/src/components/icons/SiIron.tsx @@ -0,0 +1,40 @@ +import type { SVGProps } from 'react'; +const SiIron = (props: SVGProps) => ( + + + + + + + + +); +export default SiIron; diff --git a/census/website/src/components/icons/SiItalic.tsx b/census/website/src/components/icons/SiItalic.tsx new file mode 100644 index 0000000..a05f2b2 --- /dev/null +++ b/census/website/src/components/icons/SiItalic.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiItalic = (props: SVGProps) => ( + + + +); +export default SiItalic; diff --git a/census/website/src/components/icons/SiJetski.tsx b/census/website/src/components/icons/SiJetski.tsx new file mode 100644 index 0000000..9162676 --- /dev/null +++ b/census/website/src/components/icons/SiJetski.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiJetski = (props: SVGProps) => ( + + + +); +export default SiJetski; diff --git a/census/website/src/components/icons/SiJpg.tsx b/census/website/src/components/icons/SiJpg.tsx new file mode 100644 index 0000000..b37d131 --- /dev/null +++ b/census/website/src/components/icons/SiJpg.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiJpg = (props: SVGProps) => ( + + + + + +); +export default SiJpg; diff --git a/census/website/src/components/icons/SiKerning.tsx b/census/website/src/components/icons/SiKerning.tsx new file mode 100644 index 0000000..0be1f72 --- /dev/null +++ b/census/website/src/components/icons/SiKerning.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiKerning = (props: SVGProps) => ( + + + +); +export default SiKerning; diff --git a/census/website/src/components/icons/SiKettle.tsx b/census/website/src/components/icons/SiKettle.tsx new file mode 100644 index 0000000..8d47691 --- /dev/null +++ b/census/website/src/components/icons/SiKettle.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiKettle = (props: SVGProps) => ( + + + + +); +export default SiKettle; diff --git a/census/website/src/components/icons/SiKettle2.tsx b/census/website/src/components/icons/SiKettle2.tsx new file mode 100644 index 0000000..889a203 --- /dev/null +++ b/census/website/src/components/icons/SiKettle2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiKettle2 = (props: SVGProps) => ( + + + +); +export default SiKettle2; diff --git a/census/website/src/components/icons/SiKey.tsx b/census/website/src/components/icons/SiKey.tsx new file mode 100644 index 0000000..f7a326f --- /dev/null +++ b/census/website/src/components/icons/SiKey.tsx @@ -0,0 +1,17 @@ +import type { SVGProps } from 'react'; +const SiKey = (props: SVGProps) => ( + + + + +); +export default SiKey; diff --git a/census/website/src/components/icons/SiKeySquare.tsx b/census/website/src/components/icons/SiKeySquare.tsx new file mode 100644 index 0000000..863ea69 --- /dev/null +++ b/census/website/src/components/icons/SiKeySquare.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiKeySquare = (props: SVGProps) => ( + + + +); +export default SiKeySquare; diff --git a/census/website/src/components/icons/SiKeyboard.tsx b/census/website/src/components/icons/SiKeyboard.tsx new file mode 100644 index 0000000..d8c085f --- /dev/null +++ b/census/website/src/components/icons/SiKeyboard.tsx @@ -0,0 +1,50 @@ +import type { SVGProps } from 'react'; +const SiKeyboard = (props: SVGProps) => ( + + + + + + + + + + +); +export default SiKeyboard; diff --git a/census/website/src/components/icons/SiKeyboard2.tsx b/census/website/src/components/icons/SiKeyboard2.tsx new file mode 100644 index 0000000..2a8625f --- /dev/null +++ b/census/website/src/components/icons/SiKeyboard2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiKeyboard2 = (props: SVGProps) => ( + + + +); +export default SiKeyboard2; diff --git a/census/website/src/components/icons/SiKeyhole.tsx b/census/website/src/components/icons/SiKeyhole.tsx new file mode 100644 index 0000000..285c711 --- /dev/null +++ b/census/website/src/components/icons/SiKeyhole.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiKeyhole = (props: SVGProps) => ( + + + +); +export default SiKeyhole; diff --git a/census/website/src/components/icons/SiKeys.tsx b/census/website/src/components/icons/SiKeys.tsx new file mode 100644 index 0000000..414969b --- /dev/null +++ b/census/website/src/components/icons/SiKeys.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiKeys = (props: SVGProps) => ( + + + + + +); +export default SiKeys; diff --git a/census/website/src/components/icons/SiKiosk.tsx b/census/website/src/components/icons/SiKiosk.tsx new file mode 100644 index 0000000..ace9d29 --- /dev/null +++ b/census/website/src/components/icons/SiKiosk.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiKiosk = (props: SVGProps) => ( + + + +); +export default SiKiosk; diff --git a/census/website/src/components/icons/SiKnife.tsx b/census/website/src/components/icons/SiKnife.tsx new file mode 100644 index 0000000..17b9f12 --- /dev/null +++ b/census/website/src/components/icons/SiKnife.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiKnife = (props: SVGProps) => ( + + + +); +export default SiKnife; diff --git a/census/website/src/components/icons/SiKnife2.tsx b/census/website/src/components/icons/SiKnife2.tsx new file mode 100644 index 0000000..340b491 --- /dev/null +++ b/census/website/src/components/icons/SiKnife2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiKnife2 = (props: SVGProps) => ( + + + +); +export default SiKnife2; diff --git a/census/website/src/components/icons/SiLadder.tsx b/census/website/src/components/icons/SiLadder.tsx new file mode 100644 index 0000000..9dc8e65 --- /dev/null +++ b/census/website/src/components/icons/SiLadder.tsx @@ -0,0 +1,24 @@ +import type { SVGProps } from 'react'; +const SiLadder = (props: SVGProps) => ( + + + + + + + + +); +export default SiLadder; diff --git a/census/website/src/components/icons/SiLadder2.tsx b/census/website/src/components/icons/SiLadder2.tsx new file mode 100644 index 0000000..3534cbc --- /dev/null +++ b/census/website/src/components/icons/SiLadder2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiLadder2 = (props: SVGProps) => ( + + + +); +export default SiLadder2; diff --git a/census/website/src/components/icons/SiLamp.tsx b/census/website/src/components/icons/SiLamp.tsx new file mode 100644 index 0000000..3979faa --- /dev/null +++ b/census/website/src/components/icons/SiLamp.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiLamp = (props: SVGProps) => ( + + + + +); +export default SiLamp; diff --git a/census/website/src/components/icons/SiLampCeiling.tsx b/census/website/src/components/icons/SiLampCeiling.tsx new file mode 100644 index 0000000..72c15f0 --- /dev/null +++ b/census/website/src/components/icons/SiLampCeiling.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiLampCeiling = (props: SVGProps) => ( + + + +); +export default SiLampCeiling; diff --git a/census/website/src/components/icons/SiLandscape.tsx b/census/website/src/components/icons/SiLandscape.tsx new file mode 100644 index 0000000..0005766 --- /dev/null +++ b/census/website/src/components/icons/SiLandscape.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiLandscape = (props: SVGProps) => ( + + + +); +export default SiLandscape; diff --git a/census/website/src/components/icons/SiLanguage.tsx b/census/website/src/components/icons/SiLanguage.tsx new file mode 100644 index 0000000..3b02514 --- /dev/null +++ b/census/website/src/components/icons/SiLanguage.tsx @@ -0,0 +1,30 @@ +import type { SVGProps } from 'react'; +const SiLanguage = (props: SVGProps) => ( + + + + + + + + +); +export default SiLanguage; diff --git a/census/website/src/components/icons/SiLanguage2.tsx b/census/website/src/components/icons/SiLanguage2.tsx new file mode 100644 index 0000000..633fa97 --- /dev/null +++ b/census/website/src/components/icons/SiLanguage2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiLanguage2 = (props: SVGProps) => ( + + + +); +export default SiLanguage2; diff --git a/census/website/src/components/icons/SiLanguages.tsx b/census/website/src/components/icons/SiLanguages.tsx new file mode 100644 index 0000000..ef917ed --- /dev/null +++ b/census/website/src/components/icons/SiLanguages.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiLanguages = (props: SVGProps) => ( + + + + + +); +export default SiLanguages; diff --git a/census/website/src/components/icons/SiLaptop.tsx b/census/website/src/components/icons/SiLaptop.tsx new file mode 100644 index 0000000..40e4152 --- /dev/null +++ b/census/website/src/components/icons/SiLaptop.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiLaptop = (props: SVGProps) => ( + + + + +); +export default SiLaptop; diff --git a/census/website/src/components/icons/SiLaptop2.tsx b/census/website/src/components/icons/SiLaptop2.tsx new file mode 100644 index 0000000..65d2169 --- /dev/null +++ b/census/website/src/components/icons/SiLaptop2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiLaptop2 = (props: SVGProps) => ( + + + +); +export default SiLaptop2; diff --git a/census/website/src/components/icons/SiLaptopAndPhone.tsx b/census/website/src/components/icons/SiLaptopAndPhone.tsx new file mode 100644 index 0000000..deaa2ed --- /dev/null +++ b/census/website/src/components/icons/SiLaptopAndPhone.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiLaptopAndPhone = (props: SVGProps) => ( + + + +); +export default SiLaptopAndPhone; diff --git a/census/website/src/components/icons/SiLaptopCheck.tsx b/census/website/src/components/icons/SiLaptopCheck.tsx new file mode 100644 index 0000000..8aa97b8 --- /dev/null +++ b/census/website/src/components/icons/SiLaptopCheck.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiLaptopCheck = (props: SVGProps) => ( + + + +); +export default SiLaptopCheck; diff --git a/census/website/src/components/icons/SiLaptopError.tsx b/census/website/src/components/icons/SiLaptopError.tsx new file mode 100644 index 0000000..188157e --- /dev/null +++ b/census/website/src/components/icons/SiLaptopError.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiLaptopError = (props: SVGProps) => ( + + + +); +export default SiLaptopError; diff --git a/census/website/src/components/icons/SiLasso.tsx b/census/website/src/components/icons/SiLasso.tsx new file mode 100644 index 0000000..7e5f581 --- /dev/null +++ b/census/website/src/components/icons/SiLasso.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiLasso = (props: SVGProps) => ( + + + +); +export default SiLasso; diff --git a/census/website/src/components/icons/SiLayer1.tsx b/census/website/src/components/icons/SiLayer1.tsx new file mode 100644 index 0000000..ae18960 --- /dev/null +++ b/census/website/src/components/icons/SiLayer1.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiLayer1 = (props: SVGProps) => ( + + + +); +export default SiLayer1; diff --git a/census/website/src/components/icons/SiLayer2.tsx b/census/website/src/components/icons/SiLayer2.tsx new file mode 100644 index 0000000..a940e10 --- /dev/null +++ b/census/website/src/components/icons/SiLayer2.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiLayer2 = (props: SVGProps) => ( + + + + +); +export default SiLayer2; diff --git a/census/website/src/components/icons/SiLayer3.tsx b/census/website/src/components/icons/SiLayer3.tsx new file mode 100644 index 0000000..a9a2d45 --- /dev/null +++ b/census/website/src/components/icons/SiLayer3.tsx @@ -0,0 +1,18 @@ +import type { SVGProps } from 'react'; +const SiLayer3 = (props: SVGProps) => ( + + + + + +); +export default SiLayer3; diff --git a/census/website/src/components/icons/SiLayers.tsx b/census/website/src/components/icons/SiLayers.tsx new file mode 100644 index 0000000..f726343 --- /dev/null +++ b/census/website/src/components/icons/SiLayers.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiLayers = (props: SVGProps) => ( + + + + +); +export default SiLayers; diff --git a/census/website/src/components/icons/SiLayoutBottom.tsx b/census/website/src/components/icons/SiLayoutBottom.tsx new file mode 100644 index 0000000..ba00d97 --- /dev/null +++ b/census/website/src/components/icons/SiLayoutBottom.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiLayoutBottom = (props: SVGProps) => ( + + + + +); +export default SiLayoutBottom; diff --git a/census/website/src/components/icons/SiLayoutLeft.tsx b/census/website/src/components/icons/SiLayoutLeft.tsx new file mode 100644 index 0000000..0083752 --- /dev/null +++ b/census/website/src/components/icons/SiLayoutLeft.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiLayoutLeft = (props: SVGProps) => ( + + + + +); +export default SiLayoutLeft; diff --git a/census/website/src/components/icons/SiLayoutRight.tsx b/census/website/src/components/icons/SiLayoutRight.tsx new file mode 100644 index 0000000..d25a40a --- /dev/null +++ b/census/website/src/components/icons/SiLayoutRight.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiLayoutRight = (props: SVGProps) => ( + + + + +); +export default SiLayoutRight; diff --git a/census/website/src/components/icons/SiLayoutTop.tsx b/census/website/src/components/icons/SiLayoutTop.tsx new file mode 100644 index 0000000..d039104 --- /dev/null +++ b/census/website/src/components/icons/SiLayoutTop.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiLayoutTop = (props: SVGProps) => ( + + + + +); +export default SiLayoutTop; diff --git a/census/website/src/components/icons/SiLeaderboard.tsx b/census/website/src/components/icons/SiLeaderboard.tsx new file mode 100644 index 0000000..59dda41 --- /dev/null +++ b/census/website/src/components/icons/SiLeaderboard.tsx @@ -0,0 +1,28 @@ +import type { SVGProps } from 'react'; +const SiLeaderboard = (props: SVGProps) => ( + + + + + + +); +export default SiLeaderboard; diff --git a/census/website/src/components/icons/SiLeaf.tsx b/census/website/src/components/icons/SiLeaf.tsx new file mode 100644 index 0000000..a400b2c --- /dev/null +++ b/census/website/src/components/icons/SiLeaf.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiLeaf = (props: SVGProps) => ( + + + + +); +export default SiLeaf; diff --git a/census/website/src/components/icons/SiLeaf2.tsx b/census/website/src/components/icons/SiLeaf2.tsx new file mode 100644 index 0000000..193f81c --- /dev/null +++ b/census/website/src/components/icons/SiLeaf2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiLeaf2 = (props: SVGProps) => ( + + + +); +export default SiLeaf2; diff --git a/census/website/src/components/icons/SiLeaf3.tsx b/census/website/src/components/icons/SiLeaf3.tsx new file mode 100644 index 0000000..94fe392 --- /dev/null +++ b/census/website/src/components/icons/SiLeaf3.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiLeaf3 = (props: SVGProps) => ( + + + +); +export default SiLeaf3; diff --git a/census/website/src/components/icons/SiLego.tsx b/census/website/src/components/icons/SiLego.tsx new file mode 100644 index 0000000..8b39c8a --- /dev/null +++ b/census/website/src/components/icons/SiLego.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiLego = (props: SVGProps) => ( + + + +); +export default SiLego; diff --git a/census/website/src/components/icons/SiLeo.tsx b/census/website/src/components/icons/SiLeo.tsx new file mode 100644 index 0000000..18b750c --- /dev/null +++ b/census/website/src/components/icons/SiLeo.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiLeo = (props: SVGProps) => ( + + + + +); +export default SiLeo; diff --git a/census/website/src/components/icons/SiLetterACircle.tsx b/census/website/src/components/icons/SiLetterACircle.tsx new file mode 100644 index 0000000..2c26407 --- /dev/null +++ b/census/website/src/components/icons/SiLetterACircle.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiLetterACircle = (props: SVGProps) => ( + + + + + +); +export default SiLetterACircle; diff --git a/census/website/src/components/icons/SiLetterBCircle.tsx b/census/website/src/components/icons/SiLetterBCircle.tsx new file mode 100644 index 0000000..03d928f --- /dev/null +++ b/census/website/src/components/icons/SiLetterBCircle.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiLetterBCircle = (props: SVGProps) => ( + + + + + +); +export default SiLetterBCircle; diff --git a/census/website/src/components/icons/SiLetterCCircle.tsx b/census/website/src/components/icons/SiLetterCCircle.tsx new file mode 100644 index 0000000..39157aa --- /dev/null +++ b/census/website/src/components/icons/SiLetterCCircle.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiLetterCCircle = (props: SVGProps) => ( + + + + +); +export default SiLetterCCircle; diff --git a/census/website/src/components/icons/SiLetterSpacing.tsx b/census/website/src/components/icons/SiLetterSpacing.tsx new file mode 100644 index 0000000..28dd105 --- /dev/null +++ b/census/website/src/components/icons/SiLetterSpacing.tsx @@ -0,0 +1,37 @@ +import type { SVGProps } from 'react'; +const SiLetterSpacing = (props: SVGProps) => ( + + + + + + + + + +); +export default SiLetterSpacing; diff --git a/census/website/src/components/icons/SiLibra.tsx b/census/website/src/components/icons/SiLibra.tsx new file mode 100644 index 0000000..76db99d --- /dev/null +++ b/census/website/src/components/icons/SiLibra.tsx @@ -0,0 +1,16 @@ +import type { SVGProps } from 'react'; +const SiLibra = (props: SVGProps) => ( + + + + + + +); +export default SiLibra; diff --git a/census/website/src/components/icons/SiLifeJacket.tsx b/census/website/src/components/icons/SiLifeJacket.tsx new file mode 100644 index 0000000..7a25b39 --- /dev/null +++ b/census/website/src/components/icons/SiLifeJacket.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiLifeJacket = (props: SVGProps) => ( + + + +); +export default SiLifeJacket; diff --git a/census/website/src/components/icons/SiLightBulb.tsx b/census/website/src/components/icons/SiLightBulb.tsx new file mode 100644 index 0000000..53770f2 --- /dev/null +++ b/census/website/src/components/icons/SiLightBulb.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiLightBulb = (props: SVGProps) => ( + + + + +); +export default SiLightBulb; diff --git a/census/website/src/components/icons/SiLightCeiling.tsx b/census/website/src/components/icons/SiLightCeiling.tsx new file mode 100644 index 0000000..b105e03 --- /dev/null +++ b/census/website/src/components/icons/SiLightCeiling.tsx @@ -0,0 +1,26 @@ +import type { SVGProps } from 'react'; +const SiLightCeiling = (props: SVGProps) => ( + + + + + + + +); +export default SiLightCeiling; diff --git a/census/website/src/components/icons/SiLightOff.tsx b/census/website/src/components/icons/SiLightOff.tsx new file mode 100644 index 0000000..28ef1da --- /dev/null +++ b/census/website/src/components/icons/SiLightOff.tsx @@ -0,0 +1,18 @@ +import type { SVGProps } from 'react'; +const SiLightOff = (props: SVGProps) => ( + + + + + +); +export default SiLightOff; diff --git a/census/website/src/components/icons/SiLightSwitch.tsx b/census/website/src/components/icons/SiLightSwitch.tsx new file mode 100644 index 0000000..858fa03 --- /dev/null +++ b/census/website/src/components/icons/SiLightSwitch.tsx @@ -0,0 +1,18 @@ +import type { SVGProps } from 'react'; +const SiLightSwitch = (props: SVGProps) => ( + + + + + +); +export default SiLightSwitch; diff --git a/census/website/src/components/icons/SiLightning.tsx b/census/website/src/components/icons/SiLightning.tsx new file mode 100644 index 0000000..b218830 --- /dev/null +++ b/census/website/src/components/icons/SiLightning.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiLightning = (props: SVGProps) => ( + + + + +); +export default SiLightning; diff --git a/census/website/src/components/icons/SiLineHeight.tsx b/census/website/src/components/icons/SiLineHeight.tsx new file mode 100644 index 0000000..e5a7e2a --- /dev/null +++ b/census/website/src/components/icons/SiLineHeight.tsx @@ -0,0 +1,36 @@ +import type { SVGProps } from 'react'; +const SiLineHeight = (props: SVGProps) => ( + + + + + + + + +); +export default SiLineHeight; diff --git a/census/website/src/components/icons/SiLineHeight2.tsx b/census/website/src/components/icons/SiLineHeight2.tsx new file mode 100644 index 0000000..5a50689 --- /dev/null +++ b/census/website/src/components/icons/SiLineHeight2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiLineHeight2 = (props: SVGProps) => ( + + + +); +export default SiLineHeight2; diff --git a/census/website/src/components/icons/SiLink.tsx b/census/website/src/components/icons/SiLink.tsx new file mode 100644 index 0000000..856c086 --- /dev/null +++ b/census/website/src/components/icons/SiLink.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiLink = (props: SVGProps) => ( + + + + + +); +export default SiLink; diff --git a/census/website/src/components/icons/SiLinkBreak.tsx b/census/website/src/components/icons/SiLinkBreak.tsx new file mode 100644 index 0000000..6c85733 --- /dev/null +++ b/census/website/src/components/icons/SiLinkBreak.tsx @@ -0,0 +1,24 @@ +import type { SVGProps } from 'react'; +const SiLinkBreak = (props: SVGProps) => ( + + + + + + + + +); +export default SiLinkBreak; diff --git a/census/website/src/components/icons/SiLinked.tsx b/census/website/src/components/icons/SiLinked.tsx new file mode 100644 index 0000000..a830fec --- /dev/null +++ b/census/website/src/components/icons/SiLinked.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiLinked = (props: SVGProps) => ( + + + + +); +export default SiLinked; diff --git a/census/website/src/components/icons/SiLinkedin.tsx b/census/website/src/components/icons/SiLinkedin.tsx new file mode 100644 index 0000000..1fd0548 --- /dev/null +++ b/census/website/src/components/icons/SiLinkedin.tsx @@ -0,0 +1,23 @@ +import type { SVGProps } from 'react'; +const SiLinkedin = (props: SVGProps) => ( + + + + + + + +); +export default SiLinkedin; diff --git a/census/website/src/components/icons/SiLivestream.tsx b/census/website/src/components/icons/SiLivestream.tsx new file mode 100644 index 0000000..5694f4f --- /dev/null +++ b/census/website/src/components/icons/SiLivestream.tsx @@ -0,0 +1,40 @@ +import type { SVGProps } from 'react'; +const SiLivestream = (props: SVGProps) => ( + + + + + + + +); +export default SiLivestream; diff --git a/census/website/src/components/icons/SiLoading.tsx b/census/website/src/components/icons/SiLoading.tsx new file mode 100644 index 0000000..9d74051 --- /dev/null +++ b/census/website/src/components/icons/SiLoading.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiLoading = (props: SVGProps) => ( + + + +); +export default SiLoading; diff --git a/census/website/src/components/icons/SiLocation.tsx b/census/website/src/components/icons/SiLocation.tsx new file mode 100644 index 0000000..5be1815 --- /dev/null +++ b/census/website/src/components/icons/SiLocation.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiLocation = (props: SVGProps) => ( + + + +); +export default SiLocation; diff --git a/census/website/src/components/icons/SiLock.tsx b/census/website/src/components/icons/SiLock.tsx new file mode 100644 index 0000000..464dea7 --- /dev/null +++ b/census/website/src/components/icons/SiLock.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiLock = (props: SVGProps) => ( + + + + +); +export default SiLock; diff --git a/census/website/src/components/icons/SiLockBorder.tsx b/census/website/src/components/icons/SiLockBorder.tsx new file mode 100644 index 0000000..41dec32 --- /dev/null +++ b/census/website/src/components/icons/SiLockBorder.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiLockBorder = (props: SVGProps) => ( + + + +); +export default SiLockBorder; diff --git a/census/website/src/components/icons/SiLockUnlocked.tsx b/census/website/src/components/icons/SiLockUnlocked.tsx new file mode 100644 index 0000000..9fd0ec1 --- /dev/null +++ b/census/website/src/components/icons/SiLockUnlocked.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiLockUnlocked = (props: SVGProps) => ( + + + + +); +export default SiLockUnlocked; diff --git a/census/website/src/components/icons/SiLogIn.tsx b/census/website/src/components/icons/SiLogIn.tsx new file mode 100644 index 0000000..30c78c6 --- /dev/null +++ b/census/website/src/components/icons/SiLogIn.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiLogIn = (props: SVGProps) => ( + + + + + +); +export default SiLogIn; diff --git a/census/website/src/components/icons/SiLogOut.tsx b/census/website/src/components/icons/SiLogOut.tsx new file mode 100644 index 0000000..ec454a7 --- /dev/null +++ b/census/website/src/components/icons/SiLogOut.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiLogOut = (props: SVGProps) => ( + + + + + +); +export default SiLogOut; diff --git a/census/website/src/components/icons/SiLove.tsx b/census/website/src/components/icons/SiLove.tsx new file mode 100644 index 0000000..ecd1461 --- /dev/null +++ b/census/website/src/components/icons/SiLove.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiLove = (props: SVGProps) => ( + + + + +); +export default SiLove; diff --git a/census/website/src/components/icons/SiLuggageCarousel.tsx b/census/website/src/components/icons/SiLuggageCarousel.tsx new file mode 100644 index 0000000..108e1b4 --- /dev/null +++ b/census/website/src/components/icons/SiLuggageCarousel.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiLuggageCarousel = (props: SVGProps) => ( + + + +); +export default SiLuggageCarousel; diff --git a/census/website/src/components/icons/SiLungs.tsx b/census/website/src/components/icons/SiLungs.tsx new file mode 100644 index 0000000..fc4594e --- /dev/null +++ b/census/website/src/components/icons/SiLungs.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiLungs = (props: SVGProps) => ( + + + +); +export default SiLungs; diff --git a/census/website/src/components/icons/SiMagicHat.tsx b/census/website/src/components/icons/SiMagicHat.tsx new file mode 100644 index 0000000..6c58ae6 --- /dev/null +++ b/census/website/src/components/icons/SiMagicHat.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiMagicHat = (props: SVGProps) => ( + + + + + +); +export default SiMagicHat; diff --git a/census/website/src/components/icons/SiMagicMouse.tsx b/census/website/src/components/icons/SiMagicMouse.tsx new file mode 100644 index 0000000..de01e59 --- /dev/null +++ b/census/website/src/components/icons/SiMagicMouse.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiMagicMouse = (props: SVGProps) => ( + + + + +); +export default SiMagicMouse; diff --git a/census/website/src/components/icons/SiMagnet.tsx b/census/website/src/components/icons/SiMagnet.tsx new file mode 100644 index 0000000..bbc3ba2 --- /dev/null +++ b/census/website/src/components/icons/SiMagnet.tsx @@ -0,0 +1,15 @@ +import type { SVGProps } from 'react'; +const SiMagnet = (props: SVGProps) => ( + + + + + +); +export default SiMagnet; diff --git a/census/website/src/components/icons/SiMagnetBolt.tsx b/census/website/src/components/icons/SiMagnetBolt.tsx new file mode 100644 index 0000000..bc08825 --- /dev/null +++ b/census/website/src/components/icons/SiMagnetBolt.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiMagnetBolt = (props: SVGProps) => ( + + + + + + +); +export default SiMagnetBolt; diff --git a/census/website/src/components/icons/SiMail.tsx b/census/website/src/components/icons/SiMail.tsx new file mode 100644 index 0000000..e7d34a4 --- /dev/null +++ b/census/website/src/components/icons/SiMail.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiMail = (props: SVGProps) => ( + + + + +); +export default SiMail; diff --git a/census/website/src/components/icons/SiMailOpen.tsx b/census/website/src/components/icons/SiMailOpen.tsx new file mode 100644 index 0000000..6648de3 --- /dev/null +++ b/census/website/src/components/icons/SiMailOpen.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiMailOpen = (props: SVGProps) => ( + + + + +); +export default SiMailOpen; diff --git a/census/website/src/components/icons/SiMailOpenCross.tsx b/census/website/src/components/icons/SiMailOpenCross.tsx new file mode 100644 index 0000000..aaf11b9 --- /dev/null +++ b/census/website/src/components/icons/SiMailOpenCross.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiMailOpenCross = (props: SVGProps) => ( + + + +); +export default SiMailOpenCross; diff --git a/census/website/src/components/icons/SiMailOpenTick.tsx b/census/website/src/components/icons/SiMailOpenTick.tsx new file mode 100644 index 0000000..17f6c12 --- /dev/null +++ b/census/website/src/components/icons/SiMailOpenTick.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiMailOpenTick = (props: SVGProps) => ( + + + +); +export default SiMailOpenTick; diff --git a/census/website/src/components/icons/SiMailbox.tsx b/census/website/src/components/icons/SiMailbox.tsx new file mode 100644 index 0000000..d6d2571 --- /dev/null +++ b/census/website/src/components/icons/SiMailbox.tsx @@ -0,0 +1,26 @@ +import type { SVGProps } from 'react'; +const SiMailbox = (props: SVGProps) => ( + + + + + + + +); +export default SiMailbox; diff --git a/census/website/src/components/icons/SiMale.tsx b/census/website/src/components/icons/SiMale.tsx new file mode 100644 index 0000000..458317d --- /dev/null +++ b/census/website/src/components/icons/SiMale.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiMale = (props: SVGProps) => ( + + + +); +export default SiMale; diff --git a/census/website/src/components/icons/SiMale2.tsx b/census/website/src/components/icons/SiMale2.tsx new file mode 100644 index 0000000..73e9d76 --- /dev/null +++ b/census/website/src/components/icons/SiMale2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiMale2 = (props: SVGProps) => ( + + + +); +export default SiMale2; diff --git a/census/website/src/components/icons/SiMap.tsx b/census/website/src/components/icons/SiMap.tsx new file mode 100644 index 0000000..c31c00b --- /dev/null +++ b/census/website/src/components/icons/SiMap.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiMap = (props: SVGProps) => ( + + + + + +); +export default SiMap; diff --git a/census/website/src/components/icons/SiMap2.tsx b/census/website/src/components/icons/SiMap2.tsx new file mode 100644 index 0000000..388950b --- /dev/null +++ b/census/website/src/components/icons/SiMap2.tsx @@ -0,0 +1,50 @@ +import type { SVGProps } from 'react'; +const SiMap2 = (props: SVGProps) => ( + + + + + + + + + + + + + + + + +); +export default SiMap2; diff --git a/census/website/src/components/icons/SiMask.tsx b/census/website/src/components/icons/SiMask.tsx new file mode 100644 index 0000000..a4f2623 --- /dev/null +++ b/census/website/src/components/icons/SiMask.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiMask = (props: SVGProps) => ( + + + +); +export default SiMask; diff --git a/census/website/src/components/icons/SiMask2.tsx b/census/website/src/components/icons/SiMask2.tsx new file mode 100644 index 0000000..48159a2 --- /dev/null +++ b/census/website/src/components/icons/SiMask2.tsx @@ -0,0 +1,16 @@ +import type { SVGProps } from 'react'; +const SiMask2 = (props: SVGProps) => ( + + + + +); +export default SiMask2; diff --git a/census/website/src/components/icons/SiMaximize.tsx b/census/website/src/components/icons/SiMaximize.tsx new file mode 100644 index 0000000..f62f557 --- /dev/null +++ b/census/website/src/components/icons/SiMaximize.tsx @@ -0,0 +1,34 @@ +import type { SVGProps } from 'react'; +const SiMaximize = (props: SVGProps) => ( + + + + + + +); +export default SiMaximize; diff --git a/census/website/src/components/icons/SiMaximize2.tsx b/census/website/src/components/icons/SiMaximize2.tsx new file mode 100644 index 0000000..d5526ce --- /dev/null +++ b/census/website/src/components/icons/SiMaximize2.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiMaximize2 = (props: SVGProps) => ( + + + + + + +); +export default SiMaximize2; diff --git a/census/website/src/components/icons/SiMedical.tsx b/census/website/src/components/icons/SiMedical.tsx new file mode 100644 index 0000000..bf3b617 --- /dev/null +++ b/census/website/src/components/icons/SiMedical.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiMedical = (props: SVGProps) => ( + + + +); +export default SiMedical; diff --git a/census/website/src/components/icons/SiMenu.tsx b/census/website/src/components/icons/SiMenu.tsx new file mode 100644 index 0000000..26c399d --- /dev/null +++ b/census/website/src/components/icons/SiMenu.tsx @@ -0,0 +1,9 @@ +import type { SVGProps } from 'react'; +const SiMenu = (props: SVGProps) => ( + + + + + +); +export default SiMenu; diff --git a/census/website/src/components/icons/SiMenu2.tsx b/census/website/src/components/icons/SiMenu2.tsx new file mode 100644 index 0000000..ac7412c --- /dev/null +++ b/census/website/src/components/icons/SiMenu2.tsx @@ -0,0 +1,15 @@ +import type { SVGProps } from 'react'; +const SiMenu2 = (props: SVGProps) => ( + + + + + +); +export default SiMenu2; diff --git a/census/website/src/components/icons/SiMerge.tsx b/census/website/src/components/icons/SiMerge.tsx new file mode 100644 index 0000000..b7f72bb --- /dev/null +++ b/census/website/src/components/icons/SiMerge.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiMerge = (props: SVGProps) => ( + + + +); +export default SiMerge; diff --git a/census/website/src/components/icons/SiMessage.tsx b/census/website/src/components/icons/SiMessage.tsx new file mode 100644 index 0000000..9884c9c --- /dev/null +++ b/census/website/src/components/icons/SiMessage.tsx @@ -0,0 +1,31 @@ +import type { SVGProps } from 'react'; +const SiMessage = (props: SVGProps) => ( + + + + + + +); +export default SiMessage; diff --git a/census/website/src/components/icons/SiMicError.tsx b/census/website/src/components/icons/SiMicError.tsx new file mode 100644 index 0000000..d6467b0 --- /dev/null +++ b/census/website/src/components/icons/SiMicError.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiMicError = (props: SVGProps) => ( + + + +); +export default SiMicError; diff --git a/census/website/src/components/icons/SiMicMinus.tsx b/census/website/src/components/icons/SiMicMinus.tsx new file mode 100644 index 0000000..8b4725f --- /dev/null +++ b/census/website/src/components/icons/SiMicMinus.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiMicMinus = (props: SVGProps) => ( + + + +); +export default SiMicMinus; diff --git a/census/website/src/components/icons/SiMicPlus.tsx b/census/website/src/components/icons/SiMicPlus.tsx new file mode 100644 index 0000000..29bd2ea --- /dev/null +++ b/census/website/src/components/icons/SiMicPlus.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiMicPlus = (props: SVGProps) => ( + + + +); +export default SiMicPlus; diff --git a/census/website/src/components/icons/SiMicrochip.tsx b/census/website/src/components/icons/SiMicrochip.tsx new file mode 100644 index 0000000..4081ae5 --- /dev/null +++ b/census/website/src/components/icons/SiMicrochip.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiMicrochip = (props: SVGProps) => ( + + + + +); +export default SiMicrochip; diff --git a/census/website/src/components/icons/SiMicrophone.tsx b/census/website/src/components/icons/SiMicrophone.tsx new file mode 100644 index 0000000..f077a91 --- /dev/null +++ b/census/website/src/components/icons/SiMicrophone.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiMicrophone = (props: SVGProps) => ( + + + + + +); +export default SiMicrophone; diff --git a/census/website/src/components/icons/SiMicrophone2.tsx b/census/website/src/components/icons/SiMicrophone2.tsx new file mode 100644 index 0000000..5d43983 --- /dev/null +++ b/census/website/src/components/icons/SiMicrophone2.tsx @@ -0,0 +1,35 @@ +import type { SVGProps } from 'react'; +const SiMicrophone2 = (props: SVGProps) => ( + + + + + + + +); +export default SiMicrophone2; diff --git a/census/website/src/components/icons/SiMicrophoneMute.tsx b/census/website/src/components/icons/SiMicrophoneMute.tsx new file mode 100644 index 0000000..5e26e59 --- /dev/null +++ b/census/website/src/components/icons/SiMicrophoneMute.tsx @@ -0,0 +1,28 @@ +import type { SVGProps } from 'react'; +const SiMicrophoneMute = (props: SVGProps) => ( + + + + + + +); +export default SiMicrophoneMute; diff --git a/census/website/src/components/icons/SiMicroscope.tsx b/census/website/src/components/icons/SiMicroscope.tsx new file mode 100644 index 0000000..e0846d0 --- /dev/null +++ b/census/website/src/components/icons/SiMicroscope.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiMicroscope = (props: SVGProps) => ( + + + +); +export default SiMicroscope; diff --git a/census/website/src/components/icons/SiMicrowave.tsx b/census/website/src/components/icons/SiMicrowave.tsx new file mode 100644 index 0000000..11f392f --- /dev/null +++ b/census/website/src/components/icons/SiMicrowave.tsx @@ -0,0 +1,24 @@ +import type { SVGProps } from 'react'; +const SiMicrowave = (props: SVGProps) => ( + + + + + + + + +); +export default SiMicrowave; diff --git a/census/website/src/components/icons/SiMilk.tsx b/census/website/src/components/icons/SiMilk.tsx new file mode 100644 index 0000000..e86f78e --- /dev/null +++ b/census/website/src/components/icons/SiMilk.tsx @@ -0,0 +1,15 @@ +import type { SVGProps } from 'react'; +const SiMilk = (props: SVGProps) => ( + + + + + +); +export default SiMilk; diff --git a/census/website/src/components/icons/SiMiniFridge.tsx b/census/website/src/components/icons/SiMiniFridge.tsx new file mode 100644 index 0000000..31f961f --- /dev/null +++ b/census/website/src/components/icons/SiMiniFridge.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiMiniFridge = (props: SVGProps) => ( + + + +); +export default SiMiniFridge; diff --git a/census/website/src/components/icons/SiMinimize.tsx b/census/website/src/components/icons/SiMinimize.tsx new file mode 100644 index 0000000..4e6d8dd --- /dev/null +++ b/census/website/src/components/icons/SiMinimize.tsx @@ -0,0 +1,34 @@ +import type { SVGProps } from 'react'; +const SiMinimize = (props: SVGProps) => ( + + + + + + +); +export default SiMinimize; diff --git a/census/website/src/components/icons/SiMinimize2.tsx b/census/website/src/components/icons/SiMinimize2.tsx new file mode 100644 index 0000000..059add4 --- /dev/null +++ b/census/website/src/components/icons/SiMinimize2.tsx @@ -0,0 +1,34 @@ +import type { SVGProps } from 'react'; +const SiMinimize2 = (props: SVGProps) => ( + + + + + + +); +export default SiMinimize2; diff --git a/census/website/src/components/icons/SiMinus.tsx b/census/website/src/components/icons/SiMinus.tsx new file mode 100644 index 0000000..25deb20 --- /dev/null +++ b/census/website/src/components/icons/SiMinus.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiMinus = (props: SVGProps) => ( + + + +); +export default SiMinus; diff --git a/census/website/src/components/icons/SiMinusCircle.tsx b/census/website/src/components/icons/SiMinusCircle.tsx new file mode 100644 index 0000000..b18a64d --- /dev/null +++ b/census/website/src/components/icons/SiMinusCircle.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiMinusCircle = (props: SVGProps) => ( + + + + +); +export default SiMinusCircle; diff --git a/census/website/src/components/icons/SiMirror.tsx b/census/website/src/components/icons/SiMirror.tsx new file mode 100644 index 0000000..1e32ab4 --- /dev/null +++ b/census/website/src/components/icons/SiMirror.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiMirror = (props: SVGProps) => ( + + + + + +); +export default SiMirror; diff --git a/census/website/src/components/icons/SiMirror2.tsx b/census/website/src/components/icons/SiMirror2.tsx new file mode 100644 index 0000000..b10b213 --- /dev/null +++ b/census/website/src/components/icons/SiMirror2.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiMirror2 = (props: SVGProps) => ( + + + +); +export default SiMirror2; diff --git a/census/website/src/components/icons/SiMirrorHorizontal.tsx b/census/website/src/components/icons/SiMirrorHorizontal.tsx new file mode 100644 index 0000000..b78f9d6 --- /dev/null +++ b/census/website/src/components/icons/SiMirrorHorizontal.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiMirrorHorizontal = (props: SVGProps) => ( + + + +); +export default SiMirrorHorizontal; diff --git a/census/website/src/components/icons/SiMoney.tsx b/census/website/src/components/icons/SiMoney.tsx new file mode 100644 index 0000000..f6f2460 --- /dev/null +++ b/census/website/src/components/icons/SiMoney.tsx @@ -0,0 +1,48 @@ +import type { SVGProps } from 'react'; +const SiMoney = (props: SVGProps) => ( + + + + + + + + +); +export default SiMoney; diff --git a/census/website/src/components/icons/SiMoneyBag.tsx b/census/website/src/components/icons/SiMoneyBag.tsx new file mode 100644 index 0000000..6a3de6e --- /dev/null +++ b/census/website/src/components/icons/SiMoneyBag.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiMoneyBag = (props: SVGProps) => ( + + + +); +export default SiMoneyBag; diff --git a/census/website/src/components/icons/SiMonitor.tsx b/census/website/src/components/icons/SiMonitor.tsx new file mode 100644 index 0000000..b34c4fa --- /dev/null +++ b/census/website/src/components/icons/SiMonitor.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiMonitor = (props: SVGProps) => ( + + + + +); +export default SiMonitor; diff --git a/census/website/src/components/icons/SiMonitor2.tsx b/census/website/src/components/icons/SiMonitor2.tsx new file mode 100644 index 0000000..8c01fde --- /dev/null +++ b/census/website/src/components/icons/SiMonitor2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiMonitor2 = (props: SVGProps) => ( + + + +); +export default SiMonitor2; diff --git a/census/website/src/components/icons/SiMoon.tsx b/census/website/src/components/icons/SiMoon.tsx new file mode 100644 index 0000000..a43bd8b --- /dev/null +++ b/census/website/src/components/icons/SiMoon.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiMoon = (props: SVGProps) => ( + + + + +); +export default SiMoon; diff --git a/census/website/src/components/icons/SiMoon2.tsx b/census/website/src/components/icons/SiMoon2.tsx new file mode 100644 index 0000000..9c3b14c --- /dev/null +++ b/census/website/src/components/icons/SiMoon2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiMoon2 = (props: SVGProps) => ( + + + +); +export default SiMoon2; diff --git a/census/website/src/components/icons/SiMotionSensor.tsx b/census/website/src/components/icons/SiMotionSensor.tsx new file mode 100644 index 0000000..72ffbfe --- /dev/null +++ b/census/website/src/components/icons/SiMotionSensor.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiMotionSensor = (props: SVGProps) => ( + + + +); +export default SiMotionSensor; diff --git a/census/website/src/components/icons/SiMountain.tsx b/census/website/src/components/icons/SiMountain.tsx new file mode 100644 index 0000000..957a392 --- /dev/null +++ b/census/website/src/components/icons/SiMountain.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiMountain = (props: SVGProps) => ( + + + + +); +export default SiMountain; diff --git a/census/website/src/components/icons/SiMouse.tsx b/census/website/src/components/icons/SiMouse.tsx new file mode 100644 index 0000000..be3e0df --- /dev/null +++ b/census/website/src/components/icons/SiMouse.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiMouse = (props: SVGProps) => ( + + + + +); +export default SiMouse; diff --git a/census/website/src/components/icons/SiMove.tsx b/census/website/src/components/icons/SiMove.tsx new file mode 100644 index 0000000..c3d4906 --- /dev/null +++ b/census/website/src/components/icons/SiMove.tsx @@ -0,0 +1,36 @@ +import type { SVGProps } from 'react'; +const SiMove = (props: SVGProps) => ( + + + + + + + + +); +export default SiMove; diff --git a/census/website/src/components/icons/SiMug.tsx b/census/website/src/components/icons/SiMug.tsx new file mode 100644 index 0000000..202125f --- /dev/null +++ b/census/website/src/components/icons/SiMug.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiMug = (props: SVGProps) => ( + + + + + +); +export default SiMug; diff --git a/census/website/src/components/icons/SiMug2.tsx b/census/website/src/components/icons/SiMug2.tsx new file mode 100644 index 0000000..a8acde0 --- /dev/null +++ b/census/website/src/components/icons/SiMug2.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiMug2 = (props: SVGProps) => ( + + + + +); +export default SiMug2; diff --git a/census/website/src/components/icons/SiMug3.tsx b/census/website/src/components/icons/SiMug3.tsx new file mode 100644 index 0000000..c92a2e4 --- /dev/null +++ b/census/website/src/components/icons/SiMug3.tsx @@ -0,0 +1,35 @@ +import type { SVGProps } from 'react'; +const SiMug3 = (props: SVGProps) => ( + + + + + + + +); +export default SiMug3; diff --git a/census/website/src/components/icons/SiMultipleFolders.tsx b/census/website/src/components/icons/SiMultipleFolders.tsx new file mode 100644 index 0000000..e602e7c --- /dev/null +++ b/census/website/src/components/icons/SiMultipleFolders.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiMultipleFolders = (props: SVGProps) => ( + + + +); +export default SiMultipleFolders; diff --git a/census/website/src/components/icons/SiMusic.tsx b/census/website/src/components/icons/SiMusic.tsx new file mode 100644 index 0000000..baea8d6 --- /dev/null +++ b/census/website/src/components/icons/SiMusic.tsx @@ -0,0 +1,31 @@ +import type { SVGProps } from 'react'; +const SiMusic = (props: SVGProps) => ( + + + + + +); +export default SiMusic; diff --git a/census/website/src/components/icons/SiMusicNote.tsx b/census/website/src/components/icons/SiMusicNote.tsx new file mode 100644 index 0000000..f622175 --- /dev/null +++ b/census/website/src/components/icons/SiMusicNote.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiMusicNote = (props: SVGProps) => ( + + + +); +export default SiMusicNote; diff --git a/census/website/src/components/icons/SiNavigation.tsx b/census/website/src/components/icons/SiNavigation.tsx new file mode 100644 index 0000000..a5beaf5 --- /dev/null +++ b/census/website/src/components/icons/SiNavigation.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiNavigation = (props: SVGProps) => ( + + + +); +export default SiNavigation; diff --git a/census/website/src/components/icons/SiNeedle.tsx b/census/website/src/components/icons/SiNeedle.tsx new file mode 100644 index 0000000..28d93df --- /dev/null +++ b/census/website/src/components/icons/SiNeedle.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiNeedle = (props: SVGProps) => ( + + + +); +export default SiNeedle; diff --git a/census/website/src/components/icons/SiNetwork.tsx b/census/website/src/components/icons/SiNetwork.tsx new file mode 100644 index 0000000..0aec658 --- /dev/null +++ b/census/website/src/components/icons/SiNetwork.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiNetwork = (props: SVGProps) => ( + + + +); +export default SiNetwork; diff --git a/census/website/src/components/icons/SiNew.tsx b/census/website/src/components/icons/SiNew.tsx new file mode 100644 index 0000000..6258f99 --- /dev/null +++ b/census/website/src/components/icons/SiNew.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiNew = (props: SVGProps) => ( + + + +); +export default SiNew; diff --git a/census/website/src/components/icons/SiNewHire.tsx b/census/website/src/components/icons/SiNewHire.tsx new file mode 100644 index 0000000..4bff99d --- /dev/null +++ b/census/website/src/components/icons/SiNewHire.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiNewHire = (props: SVGProps) => ( + + + +); +export default SiNewHire; diff --git a/census/website/src/components/icons/SiNewWindow.tsx b/census/website/src/components/icons/SiNewWindow.tsx new file mode 100644 index 0000000..42dd313 --- /dev/null +++ b/census/website/src/components/icons/SiNewWindow.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiNewWindow = (props: SVGProps) => ( + + + +); +export default SiNewWindow; diff --git a/census/website/src/components/icons/SiNewspaper.tsx b/census/website/src/components/icons/SiNewspaper.tsx new file mode 100644 index 0000000..e93b59e --- /dev/null +++ b/census/website/src/components/icons/SiNewspaper.tsx @@ -0,0 +1,29 @@ +import type { SVGProps } from 'react'; +const SiNewspaper = (props: SVGProps) => ( + + + + + + + +); +export default SiNewspaper; diff --git a/census/website/src/components/icons/SiNintendoSwitch.tsx b/census/website/src/components/icons/SiNintendoSwitch.tsx new file mode 100644 index 0000000..303e012 --- /dev/null +++ b/census/website/src/components/icons/SiNintendoSwitch.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiNintendoSwitch = (props: SVGProps) => ( + + + +); +export default SiNintendoSwitch; diff --git a/census/website/src/components/icons/SiNoAvatar.tsx b/census/website/src/components/icons/SiNoAvatar.tsx new file mode 100644 index 0000000..9c71743 --- /dev/null +++ b/census/website/src/components/icons/SiNoAvatar.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiNoAvatar = (props: SVGProps) => ( + + + +); +export default SiNoAvatar; diff --git a/census/website/src/components/icons/SiNoAvatarSquare.tsx b/census/website/src/components/icons/SiNoAvatarSquare.tsx new file mode 100644 index 0000000..e810a7d --- /dev/null +++ b/census/website/src/components/icons/SiNoAvatarSquare.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiNoAvatarSquare = (props: SVGProps) => ( + + + +); +export default SiNoAvatarSquare; diff --git a/census/website/src/components/icons/SiNoBluetooth.tsx b/census/website/src/components/icons/SiNoBluetooth.tsx new file mode 100644 index 0000000..18c8581 --- /dev/null +++ b/census/website/src/components/icons/SiNoBluetooth.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiNoBluetooth = (props: SVGProps) => ( + + + +); +export default SiNoBluetooth; diff --git a/census/website/src/components/icons/SiNoBugs.tsx b/census/website/src/components/icons/SiNoBugs.tsx new file mode 100644 index 0000000..20a4d0a --- /dev/null +++ b/census/website/src/components/icons/SiNoBugs.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiNoBugs = (props: SVGProps) => ( + + + +); +export default SiNoBugs; diff --git a/census/website/src/components/icons/SiNoLocation.tsx b/census/website/src/components/icons/SiNoLocation.tsx new file mode 100644 index 0000000..3be8646 --- /dev/null +++ b/census/website/src/components/icons/SiNoLocation.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiNoLocation = (props: SVGProps) => ( + + + + + +); +export default SiNoLocation; diff --git a/census/website/src/components/icons/SiNoParking.tsx b/census/website/src/components/icons/SiNoParking.tsx new file mode 100644 index 0000000..6c7e6d0 --- /dev/null +++ b/census/website/src/components/icons/SiNoParking.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiNoParking = (props: SVGProps) => ( + + + + + +); +export default SiNoParking; diff --git a/census/website/src/components/icons/SiNoPin.tsx b/census/website/src/components/icons/SiNoPin.tsx new file mode 100644 index 0000000..1d136b5 --- /dev/null +++ b/census/website/src/components/icons/SiNoPin.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiNoPin = (props: SVGProps) => ( + + + + + +); +export default SiNoPin; diff --git a/census/website/src/components/icons/SiNoSmoking.tsx b/census/website/src/components/icons/SiNoSmoking.tsx new file mode 100644 index 0000000..0ced303 --- /dev/null +++ b/census/website/src/components/icons/SiNoSmoking.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiNoSmoking = (props: SVGProps) => ( + + + +); +export default SiNoSmoking; diff --git a/census/website/src/components/icons/SiNoWeed.tsx b/census/website/src/components/icons/SiNoWeed.tsx new file mode 100644 index 0000000..6d7d60d --- /dev/null +++ b/census/website/src/components/icons/SiNoWeed.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiNoWeed = (props: SVGProps) => ( + + + +); +export default SiNoWeed; diff --git a/census/website/src/components/icons/SiNordvpn.tsx b/census/website/src/components/icons/SiNordvpn.tsx new file mode 100644 index 0000000..a378374 --- /dev/null +++ b/census/website/src/components/icons/SiNordvpn.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiNordvpn = (props: SVGProps) => ( + + + +); +export default SiNordvpn; diff --git a/census/website/src/components/icons/SiNorth.tsx b/census/website/src/components/icons/SiNorth.tsx new file mode 100644 index 0000000..4e1b5e0 --- /dev/null +++ b/census/website/src/components/icons/SiNorth.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiNorth = (props: SVGProps) => ( + + + + +); +export default SiNorth; diff --git a/census/website/src/components/icons/SiNose.tsx b/census/website/src/components/icons/SiNose.tsx new file mode 100644 index 0000000..665ae5b --- /dev/null +++ b/census/website/src/components/icons/SiNose.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiNose = (props: SVGProps) => ( + + + +); +export default SiNose; diff --git a/census/website/src/components/icons/SiNoseBleed.tsx b/census/website/src/components/icons/SiNoseBleed.tsx new file mode 100644 index 0000000..5fb0be5 --- /dev/null +++ b/census/website/src/components/icons/SiNoseBleed.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiNoseBleed = (props: SVGProps) => ( + + + +); +export default SiNoseBleed; diff --git a/census/website/src/components/icons/SiNotebook.tsx b/census/website/src/components/icons/SiNotebook.tsx new file mode 100644 index 0000000..0c1ac61 --- /dev/null +++ b/census/website/src/components/icons/SiNotebook.tsx @@ -0,0 +1,28 @@ +import type { SVGProps } from 'react'; +const SiNotebook = (props: SVGProps) => ( + + + + + + +); +export default SiNotebook; diff --git a/census/website/src/components/icons/SiNuclear.tsx b/census/website/src/components/icons/SiNuclear.tsx new file mode 100644 index 0000000..5105836 --- /dev/null +++ b/census/website/src/components/icons/SiNuclear.tsx @@ -0,0 +1,33 @@ +import type { SVGProps } from 'react'; +const SiNuclear = (props: SVGProps) => ( + + + + + + +); +export default SiNuclear; diff --git a/census/website/src/components/icons/SiNumberedList.tsx b/census/website/src/components/icons/SiNumberedList.tsx new file mode 100644 index 0000000..8dfe26f --- /dev/null +++ b/census/website/src/components/icons/SiNumberedList.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiNumberedList = (props: SVGProps) => ( + + + +); +export default SiNumberedList; diff --git a/census/website/src/components/icons/SiNut.tsx b/census/website/src/components/icons/SiNut.tsx new file mode 100644 index 0000000..d292ddf --- /dev/null +++ b/census/website/src/components/icons/SiNut.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiNut = (props: SVGProps) => ( + + + + +); +export default SiNut; diff --git a/census/website/src/components/icons/SiOctagon.tsx b/census/website/src/components/icons/SiOctagon.tsx new file mode 100644 index 0000000..9cff2ad --- /dev/null +++ b/census/website/src/components/icons/SiOctagon.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiOctagon = (props: SVGProps) => ( + + + +); +export default SiOctagon; diff --git a/census/website/src/components/icons/SiOneFinger.tsx b/census/website/src/components/icons/SiOneFinger.tsx new file mode 100644 index 0000000..8952f97 --- /dev/null +++ b/census/website/src/components/icons/SiOneFinger.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiOneFinger = (props: SVGProps) => ( + + + +); +export default SiOneFinger; diff --git a/census/website/src/components/icons/SiOnion.tsx b/census/website/src/components/icons/SiOnion.tsx new file mode 100644 index 0000000..849c4aa --- /dev/null +++ b/census/website/src/components/icons/SiOnion.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiOnion = (props: SVGProps) => ( + + + +); +export default SiOnion; diff --git a/census/website/src/components/icons/SiOpenPane.tsx b/census/website/src/components/icons/SiOpenPane.tsx new file mode 100644 index 0000000..13be907 --- /dev/null +++ b/census/website/src/components/icons/SiOpenPane.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiOpenPane = (props: SVGProps) => ( + + + +); +export default SiOpenPane; diff --git a/census/website/src/components/icons/SiOption.tsx b/census/website/src/components/icons/SiOption.tsx new file mode 100644 index 0000000..d4e8034 --- /dev/null +++ b/census/website/src/components/icons/SiOption.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiOption = (props: SVGProps) => ( + + + + +); +export default SiOption; diff --git a/census/website/src/components/icons/SiOrbit.tsx b/census/website/src/components/icons/SiOrbit.tsx new file mode 100644 index 0000000..9150a68 --- /dev/null +++ b/census/website/src/components/icons/SiOrbit.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiOrbit = (props: SVGProps) => ( + + + +); +export default SiOrbit; diff --git a/census/website/src/components/icons/SiOrderedList.tsx b/census/website/src/components/icons/SiOrderedList.tsx new file mode 100644 index 0000000..42d1f7f --- /dev/null +++ b/census/website/src/components/icons/SiOrderedList.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiOrderedList = (props: SVGProps) => ( + + + + + +); +export default SiOrderedList; diff --git a/census/website/src/components/icons/SiPackage.tsx b/census/website/src/components/icons/SiPackage.tsx new file mode 100644 index 0000000..5ecac8d --- /dev/null +++ b/census/website/src/components/icons/SiPackage.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiPackage = (props: SVGProps) => ( + + + +); +export default SiPackage; diff --git a/census/website/src/components/icons/SiPadding.tsx b/census/website/src/components/icons/SiPadding.tsx new file mode 100644 index 0000000..3205646 --- /dev/null +++ b/census/website/src/components/icons/SiPadding.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiPadding = (props: SVGProps) => ( + + + + +); +export default SiPadding; diff --git a/census/website/src/components/icons/SiPageFlip.tsx b/census/website/src/components/icons/SiPageFlip.tsx new file mode 100644 index 0000000..8a39462 --- /dev/null +++ b/census/website/src/components/icons/SiPageFlip.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiPageFlip = (props: SVGProps) => ( + + + + +); +export default SiPageFlip; diff --git a/census/website/src/components/icons/SiPaintbrush.tsx b/census/website/src/components/icons/SiPaintbrush.tsx new file mode 100644 index 0000000..a0cf0cd --- /dev/null +++ b/census/website/src/components/icons/SiPaintbrush.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiPaintbrush = (props: SVGProps) => ( + + + + +); +export default SiPaintbrush; diff --git a/census/website/src/components/icons/SiPaintbrush2.tsx b/census/website/src/components/icons/SiPaintbrush2.tsx new file mode 100644 index 0000000..184d47f --- /dev/null +++ b/census/website/src/components/icons/SiPaintbrush2.tsx @@ -0,0 +1,28 @@ +import type { SVGProps } from 'react'; +const SiPaintbrush2 = (props: SVGProps) => ( + + + + + + +); +export default SiPaintbrush2; diff --git a/census/website/src/components/icons/SiPaintbrush3.tsx b/census/website/src/components/icons/SiPaintbrush3.tsx new file mode 100644 index 0000000..8092a35 --- /dev/null +++ b/census/website/src/components/icons/SiPaintbrush3.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiPaintbrush3 = (props: SVGProps) => ( + + + +); +export default SiPaintbrush3; diff --git a/census/website/src/components/icons/SiPaintbucket.tsx b/census/website/src/components/icons/SiPaintbucket.tsx new file mode 100644 index 0000000..218d3d1 --- /dev/null +++ b/census/website/src/components/icons/SiPaintbucket.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiPaintbucket = (props: SVGProps) => ( + + + + +); +export default SiPaintbucket; diff --git a/census/website/src/components/icons/SiPaintbucket2.tsx b/census/website/src/components/icons/SiPaintbucket2.tsx new file mode 100644 index 0000000..ab7680b --- /dev/null +++ b/census/website/src/components/icons/SiPaintbucket2.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiPaintbucket2 = (props: SVGProps) => ( + + + + + +); +export default SiPaintbucket2; diff --git a/census/website/src/components/icons/SiPaintbucket3.tsx b/census/website/src/components/icons/SiPaintbucket3.tsx new file mode 100644 index 0000000..346e53e --- /dev/null +++ b/census/website/src/components/icons/SiPaintbucket3.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiPaintbucket3 = (props: SVGProps) => ( + + + + + + + + + + + +); +export default SiPaintbucket3; diff --git a/census/website/src/components/icons/SiPaperclip.tsx b/census/website/src/components/icons/SiPaperclip.tsx new file mode 100644 index 0000000..6c4dd52 --- /dev/null +++ b/census/website/src/components/icons/SiPaperclip.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiPaperclip = (props: SVGProps) => ( + + + +); +export default SiPaperclip; diff --git a/census/website/src/components/icons/SiParenthesis.tsx b/census/website/src/components/icons/SiParenthesis.tsx new file mode 100644 index 0000000..173bee7 --- /dev/null +++ b/census/website/src/components/icons/SiParenthesis.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiParenthesis = (props: SVGProps) => ( + + + + +); +export default SiParenthesis; diff --git a/census/website/src/components/icons/SiParking.tsx b/census/website/src/components/icons/SiParking.tsx new file mode 100644 index 0000000..7e8f972 --- /dev/null +++ b/census/website/src/components/icons/SiParking.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiParking = (props: SVGProps) => ( + + + + +); +export default SiParking; diff --git a/census/website/src/components/icons/SiParty.tsx b/census/website/src/components/icons/SiParty.tsx new file mode 100644 index 0000000..3534a10 --- /dev/null +++ b/census/website/src/components/icons/SiParty.tsx @@ -0,0 +1,47 @@ +import type { SVGProps } from 'react'; +const SiParty = (props: SVGProps) => ( + + + + + + + + +); +export default SiParty; diff --git a/census/website/src/components/icons/SiPassport.tsx b/census/website/src/components/icons/SiPassport.tsx new file mode 100644 index 0000000..089ee3e --- /dev/null +++ b/census/website/src/components/icons/SiPassport.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiPassport = (props: SVGProps) => ( + + + + + +); +export default SiPassport; diff --git a/census/website/src/components/icons/SiPassword.tsx b/census/website/src/components/icons/SiPassword.tsx new file mode 100644 index 0000000..cb28957 --- /dev/null +++ b/census/website/src/components/icons/SiPassword.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiPassword = (props: SVGProps) => ( + + + + + +); +export default SiPassword; diff --git a/census/website/src/components/icons/SiPause.tsx b/census/website/src/components/icons/SiPause.tsx new file mode 100644 index 0000000..d3bb03e --- /dev/null +++ b/census/website/src/components/icons/SiPause.tsx @@ -0,0 +1,8 @@ +import type { SVGProps } from 'react'; +const SiPause = (props: SVGProps) => ( + + + + +); +export default SiPause; diff --git a/census/website/src/components/icons/SiPawn.tsx b/census/website/src/components/icons/SiPawn.tsx new file mode 100644 index 0000000..6cf076c --- /dev/null +++ b/census/website/src/components/icons/SiPawn.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiPawn = (props: SVGProps) => ( + + + + + + +); +export default SiPawn; diff --git a/census/website/src/components/icons/SiPdf.tsx b/census/website/src/components/icons/SiPdf.tsx new file mode 100644 index 0000000..ad4606b --- /dev/null +++ b/census/website/src/components/icons/SiPdf.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiPdf = (props: SVGProps) => ( + + + + + +); +export default SiPdf; diff --git a/census/website/src/components/icons/SiPeace.tsx b/census/website/src/components/icons/SiPeace.tsx new file mode 100644 index 0000000..c123512 --- /dev/null +++ b/census/website/src/components/icons/SiPeace.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiPeace = (props: SVGProps) => ( + + + + +); +export default SiPeace; diff --git a/census/website/src/components/icons/SiPen.tsx b/census/website/src/components/icons/SiPen.tsx new file mode 100644 index 0000000..c02c418 --- /dev/null +++ b/census/website/src/components/icons/SiPen.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiPen = (props: SVGProps) => ( + + + +); +export default SiPen; diff --git a/census/website/src/components/icons/SiPenTool.tsx b/census/website/src/components/icons/SiPenTool.tsx new file mode 100644 index 0000000..7457c27 --- /dev/null +++ b/census/website/src/components/icons/SiPenTool.tsx @@ -0,0 +1,15 @@ +import type { SVGProps } from 'react'; +const SiPenTool = (props: SVGProps) => ( + + + + + +); +export default SiPenTool; diff --git a/census/website/src/components/icons/SiPenTool2.tsx b/census/website/src/components/icons/SiPenTool2.tsx new file mode 100644 index 0000000..3346772 --- /dev/null +++ b/census/website/src/components/icons/SiPenTool2.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiPenTool2 = (props: SVGProps) => ( + + + + + +); +export default SiPenTool2; diff --git a/census/website/src/components/icons/SiPencil.tsx b/census/website/src/components/icons/SiPencil.tsx new file mode 100644 index 0000000..7a5e23c --- /dev/null +++ b/census/website/src/components/icons/SiPencil.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiPencil = (props: SVGProps) => ( + + + + +); +export default SiPencil; diff --git a/census/website/src/components/icons/SiPencil2.tsx b/census/website/src/components/icons/SiPencil2.tsx new file mode 100644 index 0000000..a92b7c2 --- /dev/null +++ b/census/website/src/components/icons/SiPencil2.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiPencil2 = (props: SVGProps) => ( + + + + + +); +export default SiPencil2; diff --git a/census/website/src/components/icons/SiPencilBook.tsx b/census/website/src/components/icons/SiPencilBook.tsx new file mode 100644 index 0000000..20effa4 --- /dev/null +++ b/census/website/src/components/icons/SiPencilBook.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiPencilBook = (props: SVGProps) => ( + + + +); +export default SiPencilBook; diff --git a/census/website/src/components/icons/SiPencilInCircle.tsx b/census/website/src/components/icons/SiPencilInCircle.tsx new file mode 100644 index 0000000..5b4fb57 --- /dev/null +++ b/census/website/src/components/icons/SiPencilInCircle.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiPencilInCircle = (props: SVGProps) => ( + + + +); +export default SiPencilInCircle; diff --git a/census/website/src/components/icons/SiPencilWifi.tsx b/census/website/src/components/icons/SiPencilWifi.tsx new file mode 100644 index 0000000..44005df --- /dev/null +++ b/census/website/src/components/icons/SiPencilWifi.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiPencilWifi = (props: SVGProps) => ( + + + +); +export default SiPencilWifi; diff --git a/census/website/src/components/icons/SiPeople.tsx b/census/website/src/components/icons/SiPeople.tsx new file mode 100644 index 0000000..204f6ea --- /dev/null +++ b/census/website/src/components/icons/SiPeople.tsx @@ -0,0 +1,34 @@ +import type { SVGProps } from 'react'; +const SiPeople = (props: SVGProps) => ( + + + + + + +); +export default SiPeople; diff --git a/census/website/src/components/icons/SiPepper.tsx b/census/website/src/components/icons/SiPepper.tsx new file mode 100644 index 0000000..3d6c868 --- /dev/null +++ b/census/website/src/components/icons/SiPepper.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiPepper = (props: SVGProps) => ( + + + +); +export default SiPepper; diff --git a/census/website/src/components/icons/SiPercentage.tsx b/census/website/src/components/icons/SiPercentage.tsx new file mode 100644 index 0000000..a3728a5 --- /dev/null +++ b/census/website/src/components/icons/SiPercentage.tsx @@ -0,0 +1,23 @@ +import type { SVGProps } from 'react'; +const SiPercentage = (props: SVGProps) => ( + + + + + +); +export default SiPercentage; diff --git a/census/website/src/components/icons/SiPeriodicTable.tsx b/census/website/src/components/icons/SiPeriodicTable.tsx new file mode 100644 index 0000000..76bae2e --- /dev/null +++ b/census/website/src/components/icons/SiPeriodicTable.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiPeriodicTable = (props: SVGProps) => ( + + + + +); +export default SiPeriodicTable; diff --git a/census/website/src/components/icons/SiPerson.tsx b/census/website/src/components/icons/SiPerson.tsx new file mode 100644 index 0000000..3331351 --- /dev/null +++ b/census/website/src/components/icons/SiPerson.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiPerson = (props: SVGProps) => ( + + + + +); +export default SiPerson; diff --git a/census/website/src/components/icons/SiPersonCheck.tsx b/census/website/src/components/icons/SiPersonCheck.tsx new file mode 100644 index 0000000..246cab9 --- /dev/null +++ b/census/website/src/components/icons/SiPersonCheck.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiPersonCheck = (props: SVGProps) => ( + + + +); +export default SiPersonCheck; diff --git a/census/website/src/components/icons/SiPersonCross.tsx b/census/website/src/components/icons/SiPersonCross.tsx new file mode 100644 index 0000000..4ca514a --- /dev/null +++ b/census/website/src/components/icons/SiPersonCross.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiPersonCross = (props: SVGProps) => ( + + + +); +export default SiPersonCross; diff --git a/census/website/src/components/icons/SiPersonHeart.tsx b/census/website/src/components/icons/SiPersonHeart.tsx new file mode 100644 index 0000000..289f392 --- /dev/null +++ b/census/website/src/components/icons/SiPersonHeart.tsx @@ -0,0 +1,28 @@ +import type { SVGProps } from 'react'; +const SiPersonHeart = (props: SVGProps) => ( + + + + + +); +export default SiPersonHeart; diff --git a/census/website/src/components/icons/SiPersonWithLuggage.tsx b/census/website/src/components/icons/SiPersonWithLuggage.tsx new file mode 100644 index 0000000..08308c3 --- /dev/null +++ b/census/website/src/components/icons/SiPersonWithLuggage.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiPersonWithLuggage = (props: SVGProps) => ( + + + +); +export default SiPersonWithLuggage; diff --git a/census/website/src/components/icons/SiPetrol.tsx b/census/website/src/components/icons/SiPetrol.tsx new file mode 100644 index 0000000..1f0b43e --- /dev/null +++ b/census/website/src/components/icons/SiPetrol.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiPetrol = (props: SVGProps) => ( + + + + + + +); +export default SiPetrol; diff --git a/census/website/src/components/icons/SiPharmacy.tsx b/census/website/src/components/icons/SiPharmacy.tsx new file mode 100644 index 0000000..99d3242 --- /dev/null +++ b/census/website/src/components/icons/SiPharmacy.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiPharmacy = (props: SVGProps) => ( + + + +); +export default SiPharmacy; diff --git a/census/website/src/components/icons/SiPhone.tsx b/census/website/src/components/icons/SiPhone.tsx new file mode 100644 index 0000000..0a7b3c4 --- /dev/null +++ b/census/website/src/components/icons/SiPhone.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiPhone = (props: SVGProps) => ( + + + +); +export default SiPhone; diff --git a/census/website/src/components/icons/SiPhoneCall.tsx b/census/website/src/components/icons/SiPhoneCall.tsx new file mode 100644 index 0000000..11cd37e --- /dev/null +++ b/census/website/src/components/icons/SiPhoneCall.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiPhoneCall = (props: SVGProps) => ( + + + + +); +export default SiPhoneCall; diff --git a/census/website/src/components/icons/SiPhoneCallCross.tsx b/census/website/src/components/icons/SiPhoneCallCross.tsx new file mode 100644 index 0000000..3ef8953 --- /dev/null +++ b/census/website/src/components/icons/SiPhoneCallCross.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiPhoneCallCross = (props: SVGProps) => ( + + + + + +); +export default SiPhoneCallCross; diff --git a/census/website/src/components/icons/SiPhoneCallForward.tsx b/census/website/src/components/icons/SiPhoneCallForward.tsx new file mode 100644 index 0000000..3276cce --- /dev/null +++ b/census/website/src/components/icons/SiPhoneCallForward.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiPhoneCallForward = (props: SVGProps) => ( + + + + +); +export default SiPhoneCallForward; diff --git a/census/website/src/components/icons/SiPhoneCallHangUp.tsx b/census/website/src/components/icons/SiPhoneCallHangUp.tsx new file mode 100644 index 0000000..a26e99c --- /dev/null +++ b/census/website/src/components/icons/SiPhoneCallHangUp.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiPhoneCallHangUp = (props: SVGProps) => ( + + + + +); +export default SiPhoneCallHangUp; diff --git a/census/website/src/components/icons/SiPhoneCallIncoming.tsx b/census/website/src/components/icons/SiPhoneCallIncoming.tsx new file mode 100644 index 0000000..5cda32e --- /dev/null +++ b/census/website/src/components/icons/SiPhoneCallIncoming.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiPhoneCallIncoming = (props: SVGProps) => ( + + + + + +); +export default SiPhoneCallIncoming; diff --git a/census/website/src/components/icons/SiPhoneCallOutgoing.tsx b/census/website/src/components/icons/SiPhoneCallOutgoing.tsx new file mode 100644 index 0000000..132ccb2 --- /dev/null +++ b/census/website/src/components/icons/SiPhoneCallOutgoing.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiPhoneCallOutgoing = (props: SVGProps) => ( + + + + + +); +export default SiPhoneCallOutgoing; diff --git a/census/website/src/components/icons/SiPhoneCheck.tsx b/census/website/src/components/icons/SiPhoneCheck.tsx new file mode 100644 index 0000000..3145b65 --- /dev/null +++ b/census/website/src/components/icons/SiPhoneCheck.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiPhoneCheck = (props: SVGProps) => ( + + + +); +export default SiPhoneCheck; diff --git a/census/website/src/components/icons/SiPhoneSignal.tsx b/census/website/src/components/icons/SiPhoneSignal.tsx new file mode 100644 index 0000000..3b65d1c --- /dev/null +++ b/census/website/src/components/icons/SiPhoneSignal.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiPhoneSignal = (props: SVGProps) => ( + + + +); +export default SiPhoneSignal; diff --git a/census/website/src/components/icons/SiPhoto.tsx b/census/website/src/components/icons/SiPhoto.tsx new file mode 100644 index 0000000..429ef39 --- /dev/null +++ b/census/website/src/components/icons/SiPhoto.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiPhoto = (props: SVGProps) => ( + + + +); +export default SiPhoto; diff --git a/census/website/src/components/icons/SiPhotoError.tsx b/census/website/src/components/icons/SiPhotoError.tsx new file mode 100644 index 0000000..adb9b91 --- /dev/null +++ b/census/website/src/components/icons/SiPhotoError.tsx @@ -0,0 +1,28 @@ +import type { SVGProps } from 'react'; +const SiPhotoError = (props: SVGProps) => ( + + + + + + +); +export default SiPhotoError; diff --git a/census/website/src/components/icons/SiPhotoFilm.tsx b/census/website/src/components/icons/SiPhotoFilm.tsx new file mode 100644 index 0000000..3a29d1f --- /dev/null +++ b/census/website/src/components/icons/SiPhotoFilm.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiPhotoFilm = (props: SVGProps) => ( + + + +); +export default SiPhotoFilm; diff --git a/census/website/src/components/icons/SiPhotoFrame.tsx b/census/website/src/components/icons/SiPhotoFrame.tsx new file mode 100644 index 0000000..e53f5c5 --- /dev/null +++ b/census/website/src/components/icons/SiPhotoFrame.tsx @@ -0,0 +1,30 @@ +import type { SVGProps } from 'react'; +const SiPhotoFrame = (props: SVGProps) => ( + + + + + + +); +export default SiPhotoFrame; diff --git a/census/website/src/components/icons/SiPhotoHide.tsx b/census/website/src/components/icons/SiPhotoHide.tsx new file mode 100644 index 0000000..f6228c9 --- /dev/null +++ b/census/website/src/components/icons/SiPhotoHide.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiPhotoHide = (props: SVGProps) => ( + + + + + +); +export default SiPhotoHide; diff --git a/census/website/src/components/icons/SiPhotoLens.tsx b/census/website/src/components/icons/SiPhotoLens.tsx new file mode 100644 index 0000000..c31d39e --- /dev/null +++ b/census/website/src/components/icons/SiPhotoLens.tsx @@ -0,0 +1,24 @@ +import type { SVGProps } from 'react'; +const SiPhotoLens = (props: SVGProps) => ( + + + + + + + + +); +export default SiPhotoLens; diff --git a/census/website/src/components/icons/SiPhotoMinus.tsx b/census/website/src/components/icons/SiPhotoMinus.tsx new file mode 100644 index 0000000..805c86d --- /dev/null +++ b/census/website/src/components/icons/SiPhotoMinus.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiPhotoMinus = (props: SVGProps) => ( + + + + +); +export default SiPhotoMinus; diff --git a/census/website/src/components/icons/SiPhotoPlus.tsx b/census/website/src/components/icons/SiPhotoPlus.tsx new file mode 100644 index 0000000..61a450f --- /dev/null +++ b/census/website/src/components/icons/SiPhotoPlus.tsx @@ -0,0 +1,15 @@ +import type { SVGProps } from 'react'; +const SiPhotoPlus = (props: SVGProps) => ( + + + + + +); +export default SiPhotoPlus; diff --git a/census/website/src/components/icons/SiPhotoshop.tsx b/census/website/src/components/icons/SiPhotoshop.tsx new file mode 100644 index 0000000..3c57905 --- /dev/null +++ b/census/website/src/components/icons/SiPhotoshop.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiPhotoshop = (props: SVGProps) => ( + + + + + +); +export default SiPhotoshop; diff --git a/census/website/src/components/icons/SiPianoKeys.tsx b/census/website/src/components/icons/SiPianoKeys.tsx new file mode 100644 index 0000000..b6b2fa8 --- /dev/null +++ b/census/website/src/components/icons/SiPianoKeys.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiPianoKeys = (props: SVGProps) => ( + + + +); +export default SiPianoKeys; diff --git a/census/website/src/components/icons/SiPictureInPicture.tsx b/census/website/src/components/icons/SiPictureInPicture.tsx new file mode 100644 index 0000000..8acc5b9 --- /dev/null +++ b/census/website/src/components/icons/SiPictureInPicture.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiPictureInPicture = (props: SVGProps) => ( + + + + +); +export default SiPictureInPicture; diff --git a/census/website/src/components/icons/SiPieChart.tsx b/census/website/src/components/icons/SiPieChart.tsx new file mode 100644 index 0000000..cd8e04c --- /dev/null +++ b/census/website/src/components/icons/SiPieChart.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiPieChart = (props: SVGProps) => ( + + + + +); +export default SiPieChart; diff --git a/census/website/src/components/icons/SiPiggybank.tsx b/census/website/src/components/icons/SiPiggybank.tsx new file mode 100644 index 0000000..e7f5be9 --- /dev/null +++ b/census/website/src/components/icons/SiPiggybank.tsx @@ -0,0 +1,19 @@ +import type { SVGProps } from 'react'; +const SiPiggybank = (props: SVGProps) => ( + + + + + + +); +export default SiPiggybank; diff --git a/census/website/src/components/icons/SiPill.tsx b/census/website/src/components/icons/SiPill.tsx new file mode 100644 index 0000000..322ca35 --- /dev/null +++ b/census/website/src/components/icons/SiPill.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiPill = (props: SVGProps) => ( + + + + +); +export default SiPill; diff --git a/census/website/src/components/icons/SiPill2.tsx b/census/website/src/components/icons/SiPill2.tsx new file mode 100644 index 0000000..f400baf --- /dev/null +++ b/census/website/src/components/icons/SiPill2.tsx @@ -0,0 +1,11 @@ +import type { SVGProps } from 'react'; +const SiPill2 = (props: SVGProps) => ( + + + + +); +export default SiPill2; diff --git a/census/website/src/components/icons/SiPills.tsx b/census/website/src/components/icons/SiPills.tsx new file mode 100644 index 0000000..904e519 --- /dev/null +++ b/census/website/src/components/icons/SiPills.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiPills = (props: SVGProps) => ( + + + + + +); +export default SiPills; diff --git a/census/website/src/components/icons/SiPin.tsx b/census/website/src/components/icons/SiPin.tsx new file mode 100644 index 0000000..7c0e92c --- /dev/null +++ b/census/website/src/components/icons/SiPin.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiPin = (props: SVGProps) => ( + + + + +); +export default SiPin; diff --git a/census/website/src/components/icons/SiPinOnMap.tsx b/census/website/src/components/icons/SiPinOnMap.tsx new file mode 100644 index 0000000..3f3c2e8 --- /dev/null +++ b/census/website/src/components/icons/SiPinOnMap.tsx @@ -0,0 +1,19 @@ +import type { SVGProps } from 'react'; +const SiPinOnMap = (props: SVGProps) => ( + + + + +); +export default SiPinOnMap; diff --git a/census/website/src/components/icons/SiPinTack.tsx b/census/website/src/components/icons/SiPinTack.tsx new file mode 100644 index 0000000..12460ac --- /dev/null +++ b/census/website/src/components/icons/SiPinTack.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiPinTack = (props: SVGProps) => ( + + + + +); +export default SiPinTack; diff --git a/census/website/src/components/icons/SiPinTack2.tsx b/census/website/src/components/icons/SiPinTack2.tsx new file mode 100644 index 0000000..15cf5dd --- /dev/null +++ b/census/website/src/components/icons/SiPinTack2.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiPinTack2 = (props: SVGProps) => ( + + + + + +); +export default SiPinTack2; diff --git a/census/website/src/components/icons/SiPinTack3.tsx b/census/website/src/components/icons/SiPinTack3.tsx new file mode 100644 index 0000000..6a5ba35 --- /dev/null +++ b/census/website/src/components/icons/SiPinTack3.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiPinTack3 = (props: SVGProps) => ( + + + +); +export default SiPinTack3; diff --git a/census/website/src/components/icons/SiPipe.tsx b/census/website/src/components/icons/SiPipe.tsx new file mode 100644 index 0000000..852ca94 --- /dev/null +++ b/census/website/src/components/icons/SiPipe.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiPipe = (props: SVGProps) => ( + + + +); +export default SiPipe; diff --git a/census/website/src/components/icons/SiPisces.tsx b/census/website/src/components/icons/SiPisces.tsx new file mode 100644 index 0000000..4ec78c9 --- /dev/null +++ b/census/website/src/components/icons/SiPisces.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiPisces = (props: SVGProps) => ( + + + + + +); +export default SiPisces; diff --git a/census/website/src/components/icons/SiPizza.tsx b/census/website/src/components/icons/SiPizza.tsx new file mode 100644 index 0000000..ea50098 --- /dev/null +++ b/census/website/src/components/icons/SiPizza.tsx @@ -0,0 +1,39 @@ +import type { SVGProps } from 'react'; +const SiPizza = (props: SVGProps) => ( + + + + + + + +); +export default SiPizza; diff --git a/census/website/src/components/icons/SiPizza2.tsx b/census/website/src/components/icons/SiPizza2.tsx new file mode 100644 index 0000000..1ec5df6 --- /dev/null +++ b/census/website/src/components/icons/SiPizza2.tsx @@ -0,0 +1,35 @@ +import type { SVGProps } from 'react'; +const SiPizza2 = (props: SVGProps) => ( + + + + + + + +); +export default SiPizza2; diff --git a/census/website/src/components/icons/SiPlane.tsx b/census/website/src/components/icons/SiPlane.tsx new file mode 100644 index 0000000..e24833d --- /dev/null +++ b/census/website/src/components/icons/SiPlane.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiPlane = (props: SVGProps) => ( + + + +); +export default SiPlane; diff --git a/census/website/src/components/icons/SiPlane2.tsx b/census/website/src/components/icons/SiPlane2.tsx new file mode 100644 index 0000000..6f2d42d --- /dev/null +++ b/census/website/src/components/icons/SiPlane2.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiPlane2 = (props: SVGProps) => ( + + + +); +export default SiPlane2; diff --git a/census/website/src/components/icons/SiPlaneLanding.tsx b/census/website/src/components/icons/SiPlaneLanding.tsx new file mode 100644 index 0000000..7f794a6 --- /dev/null +++ b/census/website/src/components/icons/SiPlaneLanding.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiPlaneLanding = (props: SVGProps) => ( + + + +); +export default SiPlaneLanding; diff --git a/census/website/src/components/icons/SiPlaneTakeOff.tsx b/census/website/src/components/icons/SiPlaneTakeOff.tsx new file mode 100644 index 0000000..e2eb4d2 --- /dev/null +++ b/census/website/src/components/icons/SiPlaneTakeOff.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiPlaneTakeOff = (props: SVGProps) => ( + + + +); +export default SiPlaneTakeOff; diff --git a/census/website/src/components/icons/SiPlanet.tsx b/census/website/src/components/icons/SiPlanet.tsx new file mode 100644 index 0000000..d04cdd0 --- /dev/null +++ b/census/website/src/components/icons/SiPlanet.tsx @@ -0,0 +1,26 @@ +import type { SVGProps } from 'react'; +const SiPlanet = (props: SVGProps) => ( + + + + + +); +export default SiPlanet; diff --git a/census/website/src/components/icons/SiPlay.tsx b/census/website/src/components/icons/SiPlay.tsx new file mode 100644 index 0000000..8a1d396 --- /dev/null +++ b/census/website/src/components/icons/SiPlay.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiPlay = (props: SVGProps) => ( + + + +); +export default SiPlay; diff --git a/census/website/src/components/icons/SiPlug.tsx b/census/website/src/components/icons/SiPlug.tsx new file mode 100644 index 0000000..9400313 --- /dev/null +++ b/census/website/src/components/icons/SiPlug.tsx @@ -0,0 +1,28 @@ +import type { SVGProps } from 'react'; +const SiPlug = (props: SVGProps) => ( + + + + + + +); +export default SiPlug; diff --git a/census/website/src/components/icons/SiPlugIn.tsx b/census/website/src/components/icons/SiPlugIn.tsx new file mode 100644 index 0000000..ae3e2a4 --- /dev/null +++ b/census/website/src/components/icons/SiPlugIn.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiPlugIn = (props: SVGProps) => ( + + + +); +export default SiPlugIn; diff --git a/census/website/src/components/icons/SiPlugOff.tsx b/census/website/src/components/icons/SiPlugOff.tsx new file mode 100644 index 0000000..0825450 --- /dev/null +++ b/census/website/src/components/icons/SiPlugOff.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiPlugOff = (props: SVGProps) => ( + + + + + + +); +export default SiPlugOff; diff --git a/census/website/src/components/icons/SiPlugOn.tsx b/census/website/src/components/icons/SiPlugOn.tsx new file mode 100644 index 0000000..7a596a0 --- /dev/null +++ b/census/website/src/components/icons/SiPlugOn.tsx @@ -0,0 +1,15 @@ +import type { SVGProps } from 'react'; +const SiPlugOn = (props: SVGProps) => ( + + + + + +); +export default SiPlugOn; diff --git a/census/website/src/components/icons/SiPlus.tsx b/census/website/src/components/icons/SiPlus.tsx new file mode 100644 index 0000000..50b3c46 --- /dev/null +++ b/census/website/src/components/icons/SiPlus.tsx @@ -0,0 +1,8 @@ +import type { SVGProps } from 'react'; +const SiPlus = (props: SVGProps) => ( + + + + +); +export default SiPlus; diff --git a/census/website/src/components/icons/SiPlusCircle.tsx b/census/website/src/components/icons/SiPlusCircle.tsx new file mode 100644 index 0000000..7b4c8fa --- /dev/null +++ b/census/website/src/components/icons/SiPlusCircle.tsx @@ -0,0 +1,15 @@ +import type { SVGProps } from 'react'; +const SiPlusCircle = (props: SVGProps) => ( + + + + + +); +export default SiPlusCircle; diff --git a/census/website/src/components/icons/SiPlusMinus.tsx b/census/website/src/components/icons/SiPlusMinus.tsx new file mode 100644 index 0000000..c97ebe2 --- /dev/null +++ b/census/website/src/components/icons/SiPlusMinus.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiPlusMinus = (props: SVGProps) => ( + + + +); +export default SiPlusMinus; diff --git a/census/website/src/components/icons/SiPng.tsx b/census/website/src/components/icons/SiPng.tsx new file mode 100644 index 0000000..dbc06d3 --- /dev/null +++ b/census/website/src/components/icons/SiPng.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiPng = (props: SVGProps) => ( + + + + + +); +export default SiPng; diff --git a/census/website/src/components/icons/SiPokeball.tsx b/census/website/src/components/icons/SiPokeball.tsx new file mode 100644 index 0000000..491c081 --- /dev/null +++ b/census/website/src/components/icons/SiPokeball.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiPokeball = (props: SVGProps) => ( + + + +); +export default SiPokeball; diff --git a/census/website/src/components/icons/SiPolaroids.tsx b/census/website/src/components/icons/SiPolaroids.tsx new file mode 100644 index 0000000..181041f --- /dev/null +++ b/census/website/src/components/icons/SiPolaroids.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiPolaroids = (props: SVGProps) => ( + + + +); +export default SiPolaroids; diff --git a/census/website/src/components/icons/SiPoll.tsx b/census/website/src/components/icons/SiPoll.tsx new file mode 100644 index 0000000..8192d6c --- /dev/null +++ b/census/website/src/components/icons/SiPoll.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiPoll = (props: SVGProps) => ( + + + +); +export default SiPoll; diff --git a/census/website/src/components/icons/SiPolywork.tsx b/census/website/src/components/icons/SiPolywork.tsx new file mode 100644 index 0000000..4fc2457 --- /dev/null +++ b/census/website/src/components/icons/SiPolywork.tsx @@ -0,0 +1,62 @@ +import type { SVGProps } from 'react'; +const SiPolywork = (props: SVGProps) => ( + + + + + + + + + + +); +export default SiPolywork; diff --git a/census/website/src/components/icons/SiPoo.tsx b/census/website/src/components/icons/SiPoo.tsx new file mode 100644 index 0000000..2773a4d --- /dev/null +++ b/census/website/src/components/icons/SiPoo.tsx @@ -0,0 +1,18 @@ +import type { SVGProps } from 'react'; +const SiPoo = (props: SVGProps) => ( + + + + + +); +export default SiPoo; diff --git a/census/website/src/components/icons/SiPopcorn.tsx b/census/website/src/components/icons/SiPopcorn.tsx new file mode 100644 index 0000000..d45aa8b --- /dev/null +++ b/census/website/src/components/icons/SiPopcorn.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiPopcorn = (props: SVGProps) => ( + + + +); +export default SiPopcorn; diff --git a/census/website/src/components/icons/SiPortrait.tsx b/census/website/src/components/icons/SiPortrait.tsx new file mode 100644 index 0000000..22540db --- /dev/null +++ b/census/website/src/components/icons/SiPortrait.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiPortrait = (props: SVGProps) => ( + + + +); +export default SiPortrait; diff --git a/census/website/src/components/icons/SiPot.tsx b/census/website/src/components/icons/SiPot.tsx new file mode 100644 index 0000000..b0e77f8 --- /dev/null +++ b/census/website/src/components/icons/SiPot.tsx @@ -0,0 +1,19 @@ +import type { SVGProps } from 'react'; +const SiPot = (props: SVGProps) => ( + + + + + + + + + +); +export default SiPot; diff --git a/census/website/src/components/icons/SiPot2.tsx b/census/website/src/components/icons/SiPot2.tsx new file mode 100644 index 0000000..dd7aa46 --- /dev/null +++ b/census/website/src/components/icons/SiPot2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiPot2 = (props: SVGProps) => ( + + + +); +export default SiPot2; diff --git a/census/website/src/components/icons/SiPower.tsx b/census/website/src/components/icons/SiPower.tsx new file mode 100644 index 0000000..40a5c80 --- /dev/null +++ b/census/website/src/components/icons/SiPower.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiPower = (props: SVGProps) => ( + + + + +); +export default SiPower; diff --git a/census/website/src/components/icons/SiPowerPlant.tsx b/census/website/src/components/icons/SiPowerPlant.tsx new file mode 100644 index 0000000..ead4164 --- /dev/null +++ b/census/website/src/components/icons/SiPowerPlant.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiPowerPlant = (props: SVGProps) => ( + + + +); +export default SiPowerPlant; diff --git a/census/website/src/components/icons/SiPram.tsx b/census/website/src/components/icons/SiPram.tsx new file mode 100644 index 0000000..8c5fabf --- /dev/null +++ b/census/website/src/components/icons/SiPram.tsx @@ -0,0 +1,18 @@ +import type { SVGProps } from 'react'; +const SiPram = (props: SVGProps) => ( + + + + + +); +export default SiPram; diff --git a/census/website/src/components/icons/SiPresentation.tsx b/census/website/src/components/icons/SiPresentation.tsx new file mode 100644 index 0000000..baddd63 --- /dev/null +++ b/census/website/src/components/icons/SiPresentation.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiPresentation = (props: SVGProps) => ( + + + + +); +export default SiPresentation; diff --git a/census/website/src/components/icons/SiPress.tsx b/census/website/src/components/icons/SiPress.tsx new file mode 100644 index 0000000..e9afd53 --- /dev/null +++ b/census/website/src/components/icons/SiPress.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiPress = (props: SVGProps) => ( + + + + +); +export default SiPress; diff --git a/census/website/src/components/icons/SiPrint.tsx b/census/website/src/components/icons/SiPrint.tsx new file mode 100644 index 0000000..8e3ad90 --- /dev/null +++ b/census/website/src/components/icons/SiPrint.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiPrint = (props: SVGProps) => ( + + + + + +); +export default SiPrint; diff --git a/census/website/src/components/icons/SiPrivateWifi.tsx b/census/website/src/components/icons/SiPrivateWifi.tsx new file mode 100644 index 0000000..f9dcd0b --- /dev/null +++ b/census/website/src/components/icons/SiPrivateWifi.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiPrivateWifi = (props: SVGProps) => ( + + + +); +export default SiPrivateWifi; diff --git a/census/website/src/components/icons/SiProjector.tsx b/census/website/src/components/icons/SiProjector.tsx new file mode 100644 index 0000000..8f298e0 --- /dev/null +++ b/census/website/src/components/icons/SiProjector.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiProjector = (props: SVGProps) => ( + + + + + +); +export default SiProjector; diff --git a/census/website/src/components/icons/SiProjector2.tsx b/census/website/src/components/icons/SiProjector2.tsx new file mode 100644 index 0000000..42d7401 --- /dev/null +++ b/census/website/src/components/icons/SiProjector2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiProjector2 = (props: SVGProps) => ( + + + +); +export default SiProjector2; diff --git a/census/website/src/components/icons/SiPuzzle.tsx b/census/website/src/components/icons/SiPuzzle.tsx new file mode 100644 index 0000000..0222294 --- /dev/null +++ b/census/website/src/components/icons/SiPuzzle.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiPuzzle = (props: SVGProps) => ( + + + +); +export default SiPuzzle; diff --git a/census/website/src/components/icons/SiPyramid.tsx b/census/website/src/components/icons/SiPyramid.tsx new file mode 100644 index 0000000..c1c4a46 --- /dev/null +++ b/census/website/src/components/icons/SiPyramid.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiPyramid = (props: SVGProps) => ( + + + + +); +export default SiPyramid; diff --git a/census/website/src/components/icons/SiQrCode.tsx b/census/website/src/components/icons/SiQrCode.tsx new file mode 100644 index 0000000..a99c7bd --- /dev/null +++ b/census/website/src/components/icons/SiQrCode.tsx @@ -0,0 +1,55 @@ +import type { SVGProps } from 'react'; +const SiQrCode = (props: SVGProps) => ( + + + + + + + + + +); +export default SiQrCode; diff --git a/census/website/src/components/icons/SiQrCode2.tsx b/census/website/src/components/icons/SiQrCode2.tsx new file mode 100644 index 0000000..f267d53 --- /dev/null +++ b/census/website/src/components/icons/SiQrCode2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiQrCode2 = (props: SVGProps) => ( + + + +); +export default SiQrCode2; diff --git a/census/website/src/components/icons/SiQrScan.tsx b/census/website/src/components/icons/SiQrScan.tsx new file mode 100644 index 0000000..5dce734 --- /dev/null +++ b/census/website/src/components/icons/SiQrScan.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiQrScan = (props: SVGProps) => ( + + + +); +export default SiQrScan; diff --git a/census/website/src/components/icons/SiQuestionMark.tsx b/census/website/src/components/icons/SiQuestionMark.tsx new file mode 100644 index 0000000..85d6d0b --- /dev/null +++ b/census/website/src/components/icons/SiQuestionMark.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiQuestionMark = (props: SVGProps) => ( + + + +); +export default SiQuestionMark; diff --git a/census/website/src/components/icons/SiQuestionMarkCircle.tsx b/census/website/src/components/icons/SiQuestionMarkCircle.tsx new file mode 100644 index 0000000..66d0e0e --- /dev/null +++ b/census/website/src/components/icons/SiQuestionMarkCircle.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiQuestionMarkCircle = (props: SVGProps) => ( + + + +); +export default SiQuestionMarkCircle; diff --git a/census/website/src/components/icons/SiQuote.tsx b/census/website/src/components/icons/SiQuote.tsx new file mode 100644 index 0000000..ef67ffe --- /dev/null +++ b/census/website/src/components/icons/SiQuote.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiQuote = (props: SVGProps) => ( + + + + +); +export default SiQuote; diff --git a/census/website/src/components/icons/SiRadiation.tsx b/census/website/src/components/icons/SiRadiation.tsx new file mode 100644 index 0000000..9672249 --- /dev/null +++ b/census/website/src/components/icons/SiRadiation.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiRadiation = (props: SVGProps) => ( + + + +); +export default SiRadiation; diff --git a/census/website/src/components/icons/SiRadio.tsx b/census/website/src/components/icons/SiRadio.tsx new file mode 100644 index 0000000..86a3b2e --- /dev/null +++ b/census/website/src/components/icons/SiRadio.tsx @@ -0,0 +1,29 @@ +import type { SVGProps } from 'react'; +const SiRadio = (props: SVGProps) => ( + + + + + + + +); +export default SiRadio; diff --git a/census/website/src/components/icons/SiRain.tsx b/census/website/src/components/icons/SiRain.tsx new file mode 100644 index 0000000..3bcc0c0 --- /dev/null +++ b/census/website/src/components/icons/SiRain.tsx @@ -0,0 +1,34 @@ +import type { SVGProps } from 'react'; +const SiRain = (props: SVGProps) => ( + + + + + + +); +export default SiRain; diff --git a/census/website/src/components/icons/SiRazor.tsx b/census/website/src/components/icons/SiRazor.tsx new file mode 100644 index 0000000..0b23388 --- /dev/null +++ b/census/website/src/components/icons/SiRazor.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiRazor = (props: SVGProps) => ( + + + + + +); +export default SiRazor; diff --git a/census/website/src/components/icons/SiReceipt.tsx b/census/website/src/components/icons/SiReceipt.tsx new file mode 100644 index 0000000..6f2ece9 --- /dev/null +++ b/census/website/src/components/icons/SiReceipt.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiReceipt = (props: SVGProps) => ( + + + +); +export default SiReceipt; diff --git a/census/website/src/components/icons/SiReceiveMoney.tsx b/census/website/src/components/icons/SiReceiveMoney.tsx new file mode 100644 index 0000000..859301b --- /dev/null +++ b/census/website/src/components/icons/SiReceiveMoney.tsx @@ -0,0 +1,23 @@ +import type { SVGProps } from 'react'; +const SiReceiveMoney = (props: SVGProps) => ( + + + + + + + +); +export default SiReceiveMoney; diff --git a/census/website/src/components/icons/SiReddit.tsx b/census/website/src/components/icons/SiReddit.tsx new file mode 100644 index 0000000..7636279 --- /dev/null +++ b/census/website/src/components/icons/SiReddit.tsx @@ -0,0 +1,53 @@ +import type { SVGProps } from 'react'; +const SiReddit = (props: SVGProps) => ( + + + + + + + + + +); +export default SiReddit; diff --git a/census/website/src/components/icons/SiRedo.tsx b/census/website/src/components/icons/SiRedo.tsx new file mode 100644 index 0000000..388f1ee --- /dev/null +++ b/census/website/src/components/icons/SiRedo.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiRedo = (props: SVGProps) => ( + + + + +); +export default SiRedo; diff --git a/census/website/src/components/icons/SiRefresh.tsx b/census/website/src/components/icons/SiRefresh.tsx new file mode 100644 index 0000000..082e364 --- /dev/null +++ b/census/website/src/components/icons/SiRefresh.tsx @@ -0,0 +1,34 @@ +import type { SVGProps } from 'react'; +const SiRefresh = (props: SVGProps) => ( + + + + + + +); +export default SiRefresh; diff --git a/census/website/src/components/icons/SiRefresh2.tsx b/census/website/src/components/icons/SiRefresh2.tsx new file mode 100644 index 0000000..6917821 --- /dev/null +++ b/census/website/src/components/icons/SiRefresh2.tsx @@ -0,0 +1,34 @@ +import type { SVGProps } from 'react'; +const SiRefresh2 = (props: SVGProps) => ( + + + + + + +); +export default SiRefresh2; diff --git a/census/website/src/components/icons/SiRefresh3.tsx b/census/website/src/components/icons/SiRefresh3.tsx new file mode 100644 index 0000000..88f225c --- /dev/null +++ b/census/website/src/components/icons/SiRefresh3.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiRefresh3 = (props: SVGProps) => ( + + + + +); +export default SiRefresh3; diff --git a/census/website/src/components/icons/SiRepeat.tsx b/census/website/src/components/icons/SiRepeat.tsx new file mode 100644 index 0000000..0c87d03 --- /dev/null +++ b/census/website/src/components/icons/SiRepeat.tsx @@ -0,0 +1,34 @@ +import type { SVGProps } from 'react'; +const SiRepeat = (props: SVGProps) => ( + + + + + + +); +export default SiRepeat; diff --git a/census/website/src/components/icons/SiReply.tsx b/census/website/src/components/icons/SiReply.tsx new file mode 100644 index 0000000..b6cb782 --- /dev/null +++ b/census/website/src/components/icons/SiReply.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiReply = (props: SVGProps) => ( + + + +); +export default SiReply; diff --git a/census/website/src/components/icons/SiReportsChart.tsx b/census/website/src/components/icons/SiReportsChart.tsx new file mode 100644 index 0000000..7836d38 --- /dev/null +++ b/census/website/src/components/icons/SiReportsChart.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiReportsChart = (props: SVGProps) => ( + + + +); +export default SiReportsChart; diff --git a/census/website/src/components/icons/SiRewind.tsx b/census/website/src/components/icons/SiRewind.tsx new file mode 100644 index 0000000..d770622 --- /dev/null +++ b/census/website/src/components/icons/SiRewind.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiRewind = (props: SVGProps) => ( + + + + +); +export default SiRewind; diff --git a/census/website/src/components/icons/SiRobot.tsx b/census/website/src/components/icons/SiRobot.tsx new file mode 100644 index 0000000..d64f9cf --- /dev/null +++ b/census/website/src/components/icons/SiRobot.tsx @@ -0,0 +1,29 @@ +import type { SVGProps } from 'react'; +const SiRobot = (props: SVGProps) => ( + + + + + + + +); +export default SiRobot; diff --git a/census/website/src/components/icons/SiRocket.tsx b/census/website/src/components/icons/SiRocket.tsx new file mode 100644 index 0000000..b10b98a --- /dev/null +++ b/census/website/src/components/icons/SiRocket.tsx @@ -0,0 +1,48 @@ +import type { SVGProps } from 'react'; +const SiRocket = (props: SVGProps) => ( + + + + + + + + +); +export default SiRocket; diff --git a/census/website/src/components/icons/SiRockingChair.tsx b/census/website/src/components/icons/SiRockingChair.tsx new file mode 100644 index 0000000..501faa7 --- /dev/null +++ b/census/website/src/components/icons/SiRockingChair.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiRockingChair = (props: SVGProps) => ( + + + +); +export default SiRockingChair; diff --git a/census/website/src/components/icons/SiRollercoaster.tsx b/census/website/src/components/icons/SiRollercoaster.tsx new file mode 100644 index 0000000..a95cf3c --- /dev/null +++ b/census/website/src/components/icons/SiRollercoaster.tsx @@ -0,0 +1,16 @@ +import type { SVGProps } from 'react'; +const SiRollercoaster = (props: SVGProps) => ( + + + + + + + + + +); +export default SiRollercoaster; diff --git a/census/website/src/components/icons/SiRotate.tsx b/census/website/src/components/icons/SiRotate.tsx new file mode 100644 index 0000000..2671359 --- /dev/null +++ b/census/website/src/components/icons/SiRotate.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiRotate = (props: SVGProps) => ( + + + + +); +export default SiRotate; diff --git a/census/website/src/components/icons/SiRotate2.tsx b/census/website/src/components/icons/SiRotate2.tsx new file mode 100644 index 0000000..7797e84 --- /dev/null +++ b/census/website/src/components/icons/SiRotate2.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiRotate2 = (props: SVGProps) => ( + + + + +); +export default SiRotate2; diff --git a/census/website/src/components/icons/SiRotateAntiClockwise.tsx b/census/website/src/components/icons/SiRotateAntiClockwise.tsx new file mode 100644 index 0000000..00cb469 --- /dev/null +++ b/census/website/src/components/icons/SiRotateAntiClockwise.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiRotateAntiClockwise = (props: SVGProps) => ( + + + +); +export default SiRotateAntiClockwise; diff --git a/census/website/src/components/icons/SiRotateClockwise.tsx b/census/website/src/components/icons/SiRotateClockwise.tsx new file mode 100644 index 0000000..3188411 --- /dev/null +++ b/census/website/src/components/icons/SiRotateClockwise.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiRotateClockwise = (props: SVGProps) => ( + + + +); +export default SiRotateClockwise; diff --git a/census/website/src/components/icons/SiRoundedCornersBl.tsx b/census/website/src/components/icons/SiRoundedCornersBl.tsx new file mode 100644 index 0000000..35c9c02 --- /dev/null +++ b/census/website/src/components/icons/SiRoundedCornersBl.tsx @@ -0,0 +1,55 @@ +import type { SVGProps } from 'react'; +const SiRoundedCornersBl = (props: SVGProps) => ( + + + + + + + + + + +); +export default SiRoundedCornersBl; diff --git a/census/website/src/components/icons/SiRoundedCornersBr.tsx b/census/website/src/components/icons/SiRoundedCornersBr.tsx new file mode 100644 index 0000000..32aa9f8 --- /dev/null +++ b/census/website/src/components/icons/SiRoundedCornersBr.tsx @@ -0,0 +1,55 @@ +import type { SVGProps } from 'react'; +const SiRoundedCornersBr = (props: SVGProps) => ( + + + + + + + + + + +); +export default SiRoundedCornersBr; diff --git a/census/website/src/components/icons/SiRoundedCornersTl.tsx b/census/website/src/components/icons/SiRoundedCornersTl.tsx new file mode 100644 index 0000000..6278ee7 --- /dev/null +++ b/census/website/src/components/icons/SiRoundedCornersTl.tsx @@ -0,0 +1,55 @@ +import type { SVGProps } from 'react'; +const SiRoundedCornersTl = (props: SVGProps) => ( + + + + + + + + + + +); +export default SiRoundedCornersTl; diff --git a/census/website/src/components/icons/SiRoundedCornersTr.tsx b/census/website/src/components/icons/SiRoundedCornersTr.tsx new file mode 100644 index 0000000..510d65c --- /dev/null +++ b/census/website/src/components/icons/SiRoundedCornersTr.tsx @@ -0,0 +1,55 @@ +import type { SVGProps } from 'react'; +const SiRoundedCornersTr = (props: SVGProps) => ( + + + + + + + + + + +); +export default SiRoundedCornersTr; diff --git a/census/website/src/components/icons/SiRoute.tsx b/census/website/src/components/icons/SiRoute.tsx new file mode 100644 index 0000000..bf02fa0 --- /dev/null +++ b/census/website/src/components/icons/SiRoute.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiRoute = (props: SVGProps) => ( + + + + + +); +export default SiRoute; diff --git a/census/website/src/components/icons/SiRouter.tsx b/census/website/src/components/icons/SiRouter.tsx new file mode 100644 index 0000000..2a1aa52 --- /dev/null +++ b/census/website/src/components/icons/SiRouter.tsx @@ -0,0 +1,40 @@ +import type { SVGProps } from 'react'; +const SiRouter = (props: SVGProps) => ( + + + + + + + + +); +export default SiRouter; diff --git a/census/website/src/components/icons/SiRows.tsx b/census/website/src/components/icons/SiRows.tsx new file mode 100644 index 0000000..640e4eb --- /dev/null +++ b/census/website/src/components/icons/SiRows.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiRows = (props: SVGProps) => ( + + + + +); +export default SiRows; diff --git a/census/website/src/components/icons/SiRows2.tsx b/census/website/src/components/icons/SiRows2.tsx new file mode 100644 index 0000000..bba5acb --- /dev/null +++ b/census/website/src/components/icons/SiRows2.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiRows2 = (props: SVGProps) => ( + + + + + +); +export default SiRows2; diff --git a/census/website/src/components/icons/SiRssFeed.tsx b/census/website/src/components/icons/SiRssFeed.tsx new file mode 100644 index 0000000..c662724 --- /dev/null +++ b/census/website/src/components/icons/SiRssFeed.tsx @@ -0,0 +1,26 @@ +import type { SVGProps } from 'react'; +const SiRssFeed = (props: SVGProps) => ( + + + + + +); +export default SiRssFeed; diff --git a/census/website/src/components/icons/SiRucksack.tsx b/census/website/src/components/icons/SiRucksack.tsx new file mode 100644 index 0000000..23162f8 --- /dev/null +++ b/census/website/src/components/icons/SiRucksack.tsx @@ -0,0 +1,28 @@ +import type { SVGProps } from 'react'; +const SiRucksack = (props: SVGProps) => ( + + + + + + +); +export default SiRucksack; diff --git a/census/website/src/components/icons/SiRuler.tsx b/census/website/src/components/icons/SiRuler.tsx new file mode 100644 index 0000000..3de6169 --- /dev/null +++ b/census/website/src/components/icons/SiRuler.tsx @@ -0,0 +1,48 @@ +import type { SVGProps } from 'react'; +const SiRuler = (props: SVGProps) => ( + + + + + + + + +); +export default SiRuler; diff --git a/census/website/src/components/icons/SiRuler2.tsx b/census/website/src/components/icons/SiRuler2.tsx new file mode 100644 index 0000000..c00d018 --- /dev/null +++ b/census/website/src/components/icons/SiRuler2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiRuler2 = (props: SVGProps) => ( + + + +); +export default SiRuler2; diff --git a/census/website/src/components/icons/SiRulerAdd.tsx b/census/website/src/components/icons/SiRulerAdd.tsx new file mode 100644 index 0000000..ea69aa9 --- /dev/null +++ b/census/website/src/components/icons/SiRulerAdd.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiRulerAdd = (props: SVGProps) => ( + + + +); +export default SiRulerAdd; diff --git a/census/website/src/components/icons/SiRulerMinus.tsx b/census/website/src/components/icons/SiRulerMinus.tsx new file mode 100644 index 0000000..5d01749 --- /dev/null +++ b/census/website/src/components/icons/SiRulerMinus.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiRulerMinus = (props: SVGProps) => ( + + + +); +export default SiRulerMinus; diff --git a/census/website/src/components/icons/SiRupee.tsx b/census/website/src/components/icons/SiRupee.tsx new file mode 100644 index 0000000..70a2f2d --- /dev/null +++ b/census/website/src/components/icons/SiRupee.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiRupee = (props: SVGProps) => ( + + + +); +export default SiRupee; diff --git a/census/website/src/components/icons/SiSafe.tsx b/census/website/src/components/icons/SiSafe.tsx new file mode 100644 index 0000000..c0d3d65 --- /dev/null +++ b/census/website/src/components/icons/SiSafe.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiSafe = (props: SVGProps) => ( + + + + + + +); +export default SiSafe; diff --git a/census/website/src/components/icons/SiSafeFlash.tsx b/census/website/src/components/icons/SiSafeFlash.tsx new file mode 100644 index 0000000..f8c3073 --- /dev/null +++ b/census/website/src/components/icons/SiSafeFlash.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiSafeFlash = (props: SVGProps) => ( + + + +); +export default SiSafeFlash; diff --git a/census/website/src/components/icons/SiSafetyPin.tsx b/census/website/src/components/icons/SiSafetyPin.tsx new file mode 100644 index 0000000..9e4f79d --- /dev/null +++ b/census/website/src/components/icons/SiSafetyPin.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiSafetyPin = (props: SVGProps) => ( + + + +); +export default SiSafetyPin; diff --git a/census/website/src/components/icons/SiSagittarius.tsx b/census/website/src/components/icons/SiSagittarius.tsx new file mode 100644 index 0000000..467f5dc --- /dev/null +++ b/census/website/src/components/icons/SiSagittarius.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiSagittarius = (props: SVGProps) => ( + + + + + +); +export default SiSagittarius; diff --git a/census/website/src/components/icons/SiSalesforce.tsx b/census/website/src/components/icons/SiSalesforce.tsx new file mode 100644 index 0000000..e46050a --- /dev/null +++ b/census/website/src/components/icons/SiSalesforce.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiSalesforce = (props: SVGProps) => ( + + + +); +export default SiSalesforce; diff --git a/census/website/src/components/icons/SiSalt.tsx b/census/website/src/components/icons/SiSalt.tsx new file mode 100644 index 0000000..1d2f19a --- /dev/null +++ b/census/website/src/components/icons/SiSalt.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiSalt = (props: SVGProps) => ( + + + +); +export default SiSalt; diff --git a/census/website/src/components/icons/SiSatellite.tsx b/census/website/src/components/icons/SiSatellite.tsx new file mode 100644 index 0000000..f4041de --- /dev/null +++ b/census/website/src/components/icons/SiSatellite.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiSatellite = (props: SVGProps) => ( + + + + + +); +export default SiSatellite; diff --git a/census/website/src/components/icons/SiScale.tsx b/census/website/src/components/icons/SiScale.tsx new file mode 100644 index 0000000..ebee8ed --- /dev/null +++ b/census/website/src/components/icons/SiScale.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiScale = (props: SVGProps) => ( + + + +); +export default SiScale; diff --git a/census/website/src/components/icons/SiScaleTool.tsx b/census/website/src/components/icons/SiScaleTool.tsx new file mode 100644 index 0000000..aa1fbef --- /dev/null +++ b/census/website/src/components/icons/SiScaleTool.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiScaleTool = (props: SVGProps) => ( + + + +); +export default SiScaleTool; diff --git a/census/website/src/components/icons/SiScales.tsx b/census/website/src/components/icons/SiScales.tsx new file mode 100644 index 0000000..dc912f2 --- /dev/null +++ b/census/website/src/components/icons/SiScales.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiScales = (props: SVGProps) => ( + + + + +); +export default SiScales; diff --git a/census/website/src/components/icons/SiScan.tsx b/census/website/src/components/icons/SiScan.tsx new file mode 100644 index 0000000..1d66a95 --- /dev/null +++ b/census/website/src/components/icons/SiScan.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiScan = (props: SVGProps) => ( + + + +); +export default SiScan; diff --git a/census/website/src/components/icons/SiScanMinus.tsx b/census/website/src/components/icons/SiScanMinus.tsx new file mode 100644 index 0000000..33b4769 --- /dev/null +++ b/census/website/src/components/icons/SiScanMinus.tsx @@ -0,0 +1,35 @@ +import type { SVGProps } from 'react'; +const SiScanMinus = (props: SVGProps) => ( + + + + + + + +); +export default SiScanMinus; diff --git a/census/website/src/components/icons/SiScanPlus.tsx b/census/website/src/components/icons/SiScanPlus.tsx new file mode 100644 index 0000000..11dcbf8 --- /dev/null +++ b/census/website/src/components/icons/SiScanPlus.tsx @@ -0,0 +1,36 @@ +import type { SVGProps } from 'react'; +const SiScanPlus = (props: SVGProps) => ( + + + + + + + + +); +export default SiScanPlus; diff --git a/census/website/src/components/icons/SiScissors.tsx b/census/website/src/components/icons/SiScissors.tsx new file mode 100644 index 0000000..54e11bf --- /dev/null +++ b/census/website/src/components/icons/SiScissors.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiScissors = (props: SVGProps) => ( + + + + + + +); +export default SiScissors; diff --git a/census/website/src/components/icons/SiScooter.tsx b/census/website/src/components/icons/SiScooter.tsx new file mode 100644 index 0000000..883a219 --- /dev/null +++ b/census/website/src/components/icons/SiScooter.tsx @@ -0,0 +1,32 @@ +import type { SVGProps } from 'react'; +const SiScooter = (props: SVGProps) => ( + + + + + + +); +export default SiScooter; diff --git a/census/website/src/components/icons/SiScrew.tsx b/census/website/src/components/icons/SiScrew.tsx new file mode 100644 index 0000000..9a6128d --- /dev/null +++ b/census/website/src/components/icons/SiScrew.tsx @@ -0,0 +1,15 @@ +import type { SVGProps } from 'react'; +const SiScrew = (props: SVGProps) => ( + + + + + +); +export default SiScrew; diff --git a/census/website/src/components/icons/SiScrewdriver.tsx b/census/website/src/components/icons/SiScrewdriver.tsx new file mode 100644 index 0000000..7e97856 --- /dev/null +++ b/census/website/src/components/icons/SiScrewdriver.tsx @@ -0,0 +1,18 @@ +import type { SVGProps } from 'react'; +const SiScrewdriver = (props: SVGProps) => ( + + + + + +); +export default SiScrewdriver; diff --git a/census/website/src/components/icons/SiScroll.tsx b/census/website/src/components/icons/SiScroll.tsx new file mode 100644 index 0000000..bf7d119 --- /dev/null +++ b/census/website/src/components/icons/SiScroll.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiScroll = (props: SVGProps) => ( + + + +); +export default SiScroll; diff --git a/census/website/src/components/icons/SiScrubber.tsx b/census/website/src/components/icons/SiScrubber.tsx new file mode 100644 index 0000000..6b148d9 --- /dev/null +++ b/census/website/src/components/icons/SiScrubber.tsx @@ -0,0 +1,15 @@ +import type { SVGProps } from 'react'; +const SiScrubber = (props: SVGProps) => ( + + + + + +); +export default SiScrubber; diff --git a/census/website/src/components/icons/SiSdCard.tsx b/census/website/src/components/icons/SiSdCard.tsx new file mode 100644 index 0000000..486c736 --- /dev/null +++ b/census/website/src/components/icons/SiSdCard.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiSdCard = (props: SVGProps) => ( + + + +); +export default SiSdCard; diff --git a/census/website/src/components/icons/SiSearch.tsx b/census/website/src/components/icons/SiSearch.tsx new file mode 100644 index 0000000..ab67207 --- /dev/null +++ b/census/website/src/components/icons/SiSearch.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiSearch = (props: SVGProps) => ( + + + +); +export default SiSearch; diff --git a/census/website/src/components/icons/SiSearchArea.tsx b/census/website/src/components/icons/SiSearchArea.tsx new file mode 100644 index 0000000..be86500 --- /dev/null +++ b/census/website/src/components/icons/SiSearchArea.tsx @@ -0,0 +1,38 @@ +import type { SVGProps } from 'react'; +const SiSearchArea = (props: SVGProps) => ( + + + + + + + +); +export default SiSearchArea; diff --git a/census/website/src/components/icons/SiSearchField.tsx b/census/website/src/components/icons/SiSearchField.tsx new file mode 100644 index 0000000..1e98bce --- /dev/null +++ b/census/website/src/components/icons/SiSearchField.tsx @@ -0,0 +1,24 @@ +import type { SVGProps } from 'react'; +const SiSearchField = (props: SVGProps) => ( + + + + + +); +export default SiSearchField; diff --git a/census/website/src/components/icons/SiSearchGlobe.tsx b/census/website/src/components/icons/SiSearchGlobe.tsx new file mode 100644 index 0000000..c1e8221 --- /dev/null +++ b/census/website/src/components/icons/SiSearchGlobe.tsx @@ -0,0 +1,17 @@ +import type { SVGProps } from 'react'; +const SiSearchGlobe = (props: SVGProps) => ( + + + + +); +export default SiSearchGlobe; diff --git a/census/website/src/components/icons/SiSearchWindow.tsx b/census/website/src/components/icons/SiSearchWindow.tsx new file mode 100644 index 0000000..cd838fe --- /dev/null +++ b/census/website/src/components/icons/SiSearchWindow.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiSearchWindow = (props: SVGProps) => ( + + + +); +export default SiSearchWindow; diff --git a/census/website/src/components/icons/SiSeedlings.tsx b/census/website/src/components/icons/SiSeedlings.tsx new file mode 100644 index 0000000..d413bf1 --- /dev/null +++ b/census/website/src/components/icons/SiSeedlings.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiSeedlings = (props: SVGProps) => ( + + + +); +export default SiSeedlings; diff --git a/census/website/src/components/icons/SiSeeds.tsx b/census/website/src/components/icons/SiSeeds.tsx new file mode 100644 index 0000000..bdc242b --- /dev/null +++ b/census/website/src/components/icons/SiSeeds.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiSeeds = (props: SVGProps) => ( + + + +); +export default SiSeeds; diff --git a/census/website/src/components/icons/SiSelectFrame.tsx b/census/website/src/components/icons/SiSelectFrame.tsx new file mode 100644 index 0000000..fe1ae44 --- /dev/null +++ b/census/website/src/components/icons/SiSelectFrame.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiSelectFrame = (props: SVGProps) => ( + + + +); +export default SiSelectFrame; diff --git a/census/website/src/components/icons/SiSend.tsx b/census/website/src/components/icons/SiSend.tsx new file mode 100644 index 0000000..0558104 --- /dev/null +++ b/census/website/src/components/icons/SiSend.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiSend = (props: SVGProps) => ( + + + + +); +export default SiSend; diff --git a/census/website/src/components/icons/SiSendMoney.tsx b/census/website/src/components/icons/SiSendMoney.tsx new file mode 100644 index 0000000..24e84d4 --- /dev/null +++ b/census/website/src/components/icons/SiSendMoney.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiSendMoney = (props: SVGProps) => ( + + + + + +); +export default SiSendMoney; diff --git a/census/website/src/components/icons/SiSendMoney2.tsx b/census/website/src/components/icons/SiSendMoney2.tsx new file mode 100644 index 0000000..6d223b0 --- /dev/null +++ b/census/website/src/components/icons/SiSendMoney2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiSendMoney2 = (props: SVGProps) => ( + + + +); +export default SiSendMoney2; diff --git a/census/website/src/components/icons/SiSendToBack.tsx b/census/website/src/components/icons/SiSendToBack.tsx new file mode 100644 index 0000000..e0ed9a8 --- /dev/null +++ b/census/website/src/components/icons/SiSendToBack.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiSendToBack = (props: SVGProps) => ( + + + + +); +export default SiSendToBack; diff --git a/census/website/src/components/icons/SiSendToBack2.tsx b/census/website/src/components/icons/SiSendToBack2.tsx new file mode 100644 index 0000000..c96c07d --- /dev/null +++ b/census/website/src/components/icons/SiSendToBack2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiSendToBack2 = (props: SVGProps) => ( + + + +); +export default SiSendToBack2; diff --git a/census/website/src/components/icons/SiSendToFront.tsx b/census/website/src/components/icons/SiSendToFront.tsx new file mode 100644 index 0000000..00f114c --- /dev/null +++ b/census/website/src/components/icons/SiSendToFront.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiSendToFront = (props: SVGProps) => ( + + + + +); +export default SiSendToFront; diff --git a/census/website/src/components/icons/SiServer.tsx b/census/website/src/components/icons/SiServer.tsx new file mode 100644 index 0000000..734af98 --- /dev/null +++ b/census/website/src/components/icons/SiServer.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiServer = (props: SVGProps) => ( + + + + + + +); +export default SiServer; diff --git a/census/website/src/components/icons/SiServiceBell.tsx b/census/website/src/components/icons/SiServiceBell.tsx new file mode 100644 index 0000000..0b6f819 --- /dev/null +++ b/census/website/src/components/icons/SiServiceBell.tsx @@ -0,0 +1,18 @@ +import type { SVGProps } from 'react'; +const SiServiceBell = (props: SVGProps) => ( + + + + + +); +export default SiServiceBell; diff --git a/census/website/src/components/icons/SiSettings.tsx b/census/website/src/components/icons/SiSettings.tsx new file mode 100644 index 0000000..57f60fc --- /dev/null +++ b/census/website/src/components/icons/SiSettings.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiSettings = (props: SVGProps) => ( + + + + +); +export default SiSettings; diff --git a/census/website/src/components/icons/SiSettings2.tsx b/census/website/src/components/icons/SiSettings2.tsx new file mode 100644 index 0000000..42ca01e --- /dev/null +++ b/census/website/src/components/icons/SiSettings2.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiSettings2 = (props: SVGProps) => ( + + + + +); +export default SiSettings2; diff --git a/census/website/src/components/icons/SiSettingsSliders.tsx b/census/website/src/components/icons/SiSettingsSliders.tsx new file mode 100644 index 0000000..1c5c448 --- /dev/null +++ b/census/website/src/components/icons/SiSettingsSliders.tsx @@ -0,0 +1,28 @@ +import type { SVGProps } from 'react'; +const SiSettingsSliders = (props: SVGProps) => ( + + + + + + + + +); +export default SiSettingsSliders; diff --git a/census/website/src/components/icons/SiSewer.tsx b/census/website/src/components/icons/SiSewer.tsx new file mode 100644 index 0000000..f90b346 --- /dev/null +++ b/census/website/src/components/icons/SiSewer.tsx @@ -0,0 +1,23 @@ +import type { SVGProps } from 'react'; +const SiSewer = (props: SVGProps) => ( + + + + + + + +); +export default SiSewer; diff --git a/census/website/src/components/icons/SiShape.tsx b/census/website/src/components/icons/SiShape.tsx new file mode 100644 index 0000000..342ef08 --- /dev/null +++ b/census/website/src/components/icons/SiShape.tsx @@ -0,0 +1,38 @@ +import type { SVGProps } from 'react'; +const SiShape = (props: SVGProps) => ( + + + + + + + + + + +); +export default SiShape; diff --git a/census/website/src/components/icons/SiShapeRotate.tsx b/census/website/src/components/icons/SiShapeRotate.tsx new file mode 100644 index 0000000..a38d055 --- /dev/null +++ b/census/website/src/components/icons/SiShapeRotate.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiShapeRotate = (props: SVGProps) => ( + + + + + +); +export default SiShapeRotate; diff --git a/census/website/src/components/icons/SiShapes.tsx b/census/website/src/components/icons/SiShapes.tsx new file mode 100644 index 0000000..e2c05f2 --- /dev/null +++ b/census/website/src/components/icons/SiShapes.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiShapes = (props: SVGProps) => ( + + + +); +export default SiShapes; diff --git a/census/website/src/components/icons/SiShare.tsx b/census/website/src/components/icons/SiShare.tsx new file mode 100644 index 0000000..45ff860 --- /dev/null +++ b/census/website/src/components/icons/SiShare.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiShare = (props: SVGProps) => ( + + + + + +); +export default SiShare; diff --git a/census/website/src/components/icons/SiShare2.tsx b/census/website/src/components/icons/SiShare2.tsx new file mode 100644 index 0000000..e1dcc2a --- /dev/null +++ b/census/website/src/components/icons/SiShare2.tsx @@ -0,0 +1,29 @@ +import type { SVGProps } from 'react'; +const SiShare2 = (props: SVGProps) => ( + + + + + + + +); +export default SiShare2; diff --git a/census/website/src/components/icons/SiShare3.tsx b/census/website/src/components/icons/SiShare3.tsx new file mode 100644 index 0000000..c5676a4 --- /dev/null +++ b/census/website/src/components/icons/SiShare3.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiShare3 = (props: SVGProps) => ( + + + +); +export default SiShare3; diff --git a/census/website/src/components/icons/SiShield.tsx b/census/website/src/components/icons/SiShield.tsx new file mode 100644 index 0000000..de410bb --- /dev/null +++ b/census/website/src/components/icons/SiShield.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiShield = (props: SVGProps) => ( + + + +); +export default SiShield; diff --git a/census/website/src/components/icons/SiShieldCross.tsx b/census/website/src/components/icons/SiShieldCross.tsx new file mode 100644 index 0000000..9852241 --- /dev/null +++ b/census/website/src/components/icons/SiShieldCross.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiShieldCross = (props: SVGProps) => ( + + + + + +); +export default SiShieldCross; diff --git a/census/website/src/components/icons/SiShieldLock.tsx b/census/website/src/components/icons/SiShieldLock.tsx new file mode 100644 index 0000000..fb4cd29 --- /dev/null +++ b/census/website/src/components/icons/SiShieldLock.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiShieldLock = (props: SVGProps) => ( + + + + + +); +export default SiShieldLock; diff --git a/census/website/src/components/icons/SiShieldTick.tsx b/census/website/src/components/icons/SiShieldTick.tsx new file mode 100644 index 0000000..e9fcfd6 --- /dev/null +++ b/census/website/src/components/icons/SiShieldTick.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiShieldTick = (props: SVGProps) => ( + + + + +); +export default SiShieldTick; diff --git a/census/website/src/components/icons/SiShieldUnlock.tsx b/census/website/src/components/icons/SiShieldUnlock.tsx new file mode 100644 index 0000000..12245c8 --- /dev/null +++ b/census/website/src/components/icons/SiShieldUnlock.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiShieldUnlock = (props: SVGProps) => ( + + + + + +); +export default SiShieldUnlock; diff --git a/census/website/src/components/icons/SiShieldWarning.tsx b/census/website/src/components/icons/SiShieldWarning.tsx new file mode 100644 index 0000000..0c826f5 --- /dev/null +++ b/census/website/src/components/icons/SiShieldWarning.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiShieldWarning = (props: SVGProps) => ( + + + + + +); +export default SiShieldWarning; diff --git a/census/website/src/components/icons/SiShipment.tsx b/census/website/src/components/icons/SiShipment.tsx new file mode 100644 index 0000000..efd0d5e --- /dev/null +++ b/census/website/src/components/icons/SiShipment.tsx @@ -0,0 +1,15 @@ +import type { SVGProps } from 'react'; +const SiShipment = (props: SVGProps) => ( + + + + + +); +export default SiShipment; diff --git a/census/website/src/components/icons/SiShipmentCheck.tsx b/census/website/src/components/icons/SiShipmentCheck.tsx new file mode 100644 index 0000000..306d78e --- /dev/null +++ b/census/website/src/components/icons/SiShipmentCheck.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiShipmentCheck = (props: SVGProps) => ( + + + +); +export default SiShipmentCheck; diff --git a/census/website/src/components/icons/SiShipmentCross.tsx b/census/website/src/components/icons/SiShipmentCross.tsx new file mode 100644 index 0000000..8adc0db --- /dev/null +++ b/census/website/src/components/icons/SiShipmentCross.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiShipmentCross = (props: SVGProps) => ( + + + +); +export default SiShipmentCross; diff --git a/census/website/src/components/icons/SiShirt.tsx b/census/website/src/components/icons/SiShirt.tsx new file mode 100644 index 0000000..3655b4c --- /dev/null +++ b/census/website/src/components/icons/SiShirt.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiShirt = (props: SVGProps) => ( + + + +); +export default SiShirt; diff --git a/census/website/src/components/icons/SiShirt1.tsx b/census/website/src/components/icons/SiShirt1.tsx new file mode 100644 index 0000000..6816a0a --- /dev/null +++ b/census/website/src/components/icons/SiShirt1.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiShirt1 = (props: SVGProps) => ( + + + +); +export default SiShirt1; diff --git a/census/website/src/components/icons/SiShopSign.tsx b/census/website/src/components/icons/SiShopSign.tsx new file mode 100644 index 0000000..5224a24 --- /dev/null +++ b/census/website/src/components/icons/SiShopSign.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiShopSign = (props: SVGProps) => ( + + + + +); +export default SiShopSign; diff --git a/census/website/src/components/icons/SiShoppingBag.tsx b/census/website/src/components/icons/SiShoppingBag.tsx new file mode 100644 index 0000000..4b9d1d2 --- /dev/null +++ b/census/website/src/components/icons/SiShoppingBag.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiShoppingBag = (props: SVGProps) => ( + + + + + +); +export default SiShoppingBag; diff --git a/census/website/src/components/icons/SiShoppingBasket.tsx b/census/website/src/components/icons/SiShoppingBasket.tsx new file mode 100644 index 0000000..3d6f159 --- /dev/null +++ b/census/website/src/components/icons/SiShoppingBasket.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiShoppingBasket = (props: SVGProps) => ( + + + + + +); +export default SiShoppingBasket; diff --git a/census/website/src/components/icons/SiShoppingBasketCheck.tsx b/census/website/src/components/icons/SiShoppingBasketCheck.tsx new file mode 100644 index 0000000..6e8bdd2 --- /dev/null +++ b/census/website/src/components/icons/SiShoppingBasketCheck.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiShoppingBasketCheck = (props: SVGProps) => ( + + + +); +export default SiShoppingBasketCheck; diff --git a/census/website/src/components/icons/SiShoppingBasketCross.tsx b/census/website/src/components/icons/SiShoppingBasketCross.tsx new file mode 100644 index 0000000..d8b338e --- /dev/null +++ b/census/website/src/components/icons/SiShoppingBasketCross.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiShoppingBasketCross = (props: SVGProps) => ( + + + +); +export default SiShoppingBasketCross; diff --git a/census/website/src/components/icons/SiShoppingCart.tsx b/census/website/src/components/icons/SiShoppingCart.tsx new file mode 100644 index 0000000..2073ae9 --- /dev/null +++ b/census/website/src/components/icons/SiShoppingCart.tsx @@ -0,0 +1,15 @@ +import type { SVGProps } from 'react'; +const SiShoppingCart = (props: SVGProps) => ( + + + + + +); +export default SiShoppingCart; diff --git a/census/website/src/components/icons/SiShorts.tsx b/census/website/src/components/icons/SiShorts.tsx new file mode 100644 index 0000000..850896e --- /dev/null +++ b/census/website/src/components/icons/SiShorts.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiShorts = (props: SVGProps) => ( + + + +); +export default SiShorts; diff --git a/census/website/src/components/icons/SiShouting.tsx b/census/website/src/components/icons/SiShouting.tsx new file mode 100644 index 0000000..c56c1b6 --- /dev/null +++ b/census/website/src/components/icons/SiShouting.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiShouting = (props: SVGProps) => ( + + + +); +export default SiShouting; diff --git a/census/website/src/components/icons/SiShower.tsx b/census/website/src/components/icons/SiShower.tsx new file mode 100644 index 0000000..a921b50 --- /dev/null +++ b/census/website/src/components/icons/SiShower.tsx @@ -0,0 +1,35 @@ +import type { SVGProps } from 'react'; +const SiShower = (props: SVGProps) => ( + + + + + + + +); +export default SiShower; diff --git a/census/website/src/components/icons/SiShower2.tsx b/census/website/src/components/icons/SiShower2.tsx new file mode 100644 index 0000000..aaf67a3 --- /dev/null +++ b/census/website/src/components/icons/SiShower2.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiShower2 = (props: SVGProps) => ( + + + +); +export default SiShower2; diff --git a/census/website/src/components/icons/SiShuffle.tsx b/census/website/src/components/icons/SiShuffle.tsx new file mode 100644 index 0000000..4d9f797 --- /dev/null +++ b/census/website/src/components/icons/SiShuffle.tsx @@ -0,0 +1,34 @@ +import type { SVGProps } from 'react'; +const SiShuffle = (props: SVGProps) => ( + + + + + + +); +export default SiShuffle; diff --git a/census/website/src/components/icons/SiSideProfile.tsx b/census/website/src/components/icons/SiSideProfile.tsx new file mode 100644 index 0000000..f4fb64e --- /dev/null +++ b/census/website/src/components/icons/SiSideProfile.tsx @@ -0,0 +1,19 @@ +import type { SVGProps } from 'react'; +const SiSideProfile = (props: SVGProps) => ( + + + + +); +export default SiSideProfile; diff --git a/census/website/src/components/icons/SiSidebar.tsx b/census/website/src/components/icons/SiSidebar.tsx new file mode 100644 index 0000000..44b62b9 --- /dev/null +++ b/census/website/src/components/icons/SiSidebar.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiSidebar = (props: SVGProps) => ( + + + +); +export default SiSidebar; diff --git a/census/website/src/components/icons/SiSign.tsx b/census/website/src/components/icons/SiSign.tsx new file mode 100644 index 0000000..e39d3d3 --- /dev/null +++ b/census/website/src/components/icons/SiSign.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiSign = (props: SVGProps) => ( + + + +); +export default SiSign; diff --git a/census/website/src/components/icons/SiSignage.tsx b/census/website/src/components/icons/SiSignage.tsx new file mode 100644 index 0000000..367c095 --- /dev/null +++ b/census/website/src/components/icons/SiSignage.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiSignage = (props: SVGProps) => ( + + + +); +export default SiSignage; diff --git a/census/website/src/components/icons/SiSingleBed.tsx b/census/website/src/components/icons/SiSingleBed.tsx new file mode 100644 index 0000000..83286ca --- /dev/null +++ b/census/website/src/components/icons/SiSingleBed.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiSingleBed = (props: SVGProps) => ( + + + +); +export default SiSingleBed; diff --git a/census/website/src/components/icons/SiSkateboard.tsx b/census/website/src/components/icons/SiSkateboard.tsx new file mode 100644 index 0000000..e421a29 --- /dev/null +++ b/census/website/src/components/icons/SiSkateboard.tsx @@ -0,0 +1,28 @@ +import type { SVGProps } from 'react'; +const SiSkateboard = (props: SVGProps) => ( + + + + + + +); +export default SiSkateboard; diff --git a/census/website/src/components/icons/SiSketch.tsx b/census/website/src/components/icons/SiSketch.tsx new file mode 100644 index 0000000..75f9914 --- /dev/null +++ b/census/website/src/components/icons/SiSketch.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiSketch = (props: SVGProps) => ( + + + +); +export default SiSketch; diff --git a/census/website/src/components/icons/SiSkew.tsx b/census/website/src/components/icons/SiSkew.tsx new file mode 100644 index 0000000..eca669c --- /dev/null +++ b/census/website/src/components/icons/SiSkew.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiSkew = (props: SVGProps) => ( + + + +); +export default SiSkew; diff --git a/census/website/src/components/icons/SiSkiMask.tsx b/census/website/src/components/icons/SiSkiMask.tsx new file mode 100644 index 0000000..9d21123 --- /dev/null +++ b/census/website/src/components/icons/SiSkiMask.tsx @@ -0,0 +1,34 @@ +import type { SVGProps } from 'react'; +const SiSkiMask = (props: SVGProps) => ( + + + + + + +); +export default SiSkiMask; diff --git a/census/website/src/components/icons/SiSkipBack.tsx b/census/website/src/components/icons/SiSkipBack.tsx new file mode 100644 index 0000000..d6ecf9d --- /dev/null +++ b/census/website/src/components/icons/SiSkipBack.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiSkipBack = (props: SVGProps) => ( + + + + +); +export default SiSkipBack; diff --git a/census/website/src/components/icons/SiSkipForward.tsx b/census/website/src/components/icons/SiSkipForward.tsx new file mode 100644 index 0000000..f26dcee --- /dev/null +++ b/census/website/src/components/icons/SiSkipForward.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiSkipForward = (props: SVGProps) => ( + + + + +); +export default SiSkipForward; diff --git a/census/website/src/components/icons/SiSkull.tsx b/census/website/src/components/icons/SiSkull.tsx new file mode 100644 index 0000000..3bffcbb --- /dev/null +++ b/census/website/src/components/icons/SiSkull.tsx @@ -0,0 +1,29 @@ +import type { SVGProps } from 'react'; +const SiSkull = (props: SVGProps) => ( + + + + + + + +); +export default SiSkull; diff --git a/census/website/src/components/icons/SiSlash.tsx b/census/website/src/components/icons/SiSlash.tsx new file mode 100644 index 0000000..7a10943 --- /dev/null +++ b/census/website/src/components/icons/SiSlash.tsx @@ -0,0 +1,31 @@ +import type { SVGProps } from 'react'; +const SiSlash = (props: SVGProps) => ( + + + + + + +); +export default SiSlash; diff --git a/census/website/src/components/icons/SiSlice.tsx b/census/website/src/components/icons/SiSlice.tsx new file mode 100644 index 0000000..86ff502 --- /dev/null +++ b/census/website/src/components/icons/SiSlice.tsx @@ -0,0 +1,17 @@ +import type { SVGProps } from 'react'; +const SiSlice = (props: SVGProps) => ( + + + + + + + +); +export default SiSlice; diff --git a/census/website/src/components/icons/SiSlideMenu.tsx b/census/website/src/components/icons/SiSlideMenu.tsx new file mode 100644 index 0000000..4fb1d3a --- /dev/null +++ b/census/website/src/components/icons/SiSlideMenu.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiSlideMenu = (props: SVGProps) => ( + + + + +); +export default SiSlideMenu; diff --git a/census/website/src/components/icons/SiSlidersHorizontal.tsx b/census/website/src/components/icons/SiSlidersHorizontal.tsx new file mode 100644 index 0000000..9f7c243 --- /dev/null +++ b/census/website/src/components/icons/SiSlidersHorizontal.tsx @@ -0,0 +1,15 @@ +import type { SVGProps } from 'react'; +const SiSlidersHorizontal = (props: SVGProps) => ( + + + + + + + + + + + +); +export default SiSlidersHorizontal; diff --git a/census/website/src/components/icons/SiSlidersVertical.tsx b/census/website/src/components/icons/SiSlidersVertical.tsx new file mode 100644 index 0000000..8553174 --- /dev/null +++ b/census/website/src/components/icons/SiSlidersVertical.tsx @@ -0,0 +1,51 @@ +import type { SVGProps } from 'react'; +const SiSlidersVertical = (props: SVGProps) => ( + + + + + + + + + + + +); +export default SiSlidersVertical; diff --git a/census/website/src/components/icons/SiSlideshow.tsx b/census/website/src/components/icons/SiSlideshow.tsx new file mode 100644 index 0000000..dec04aa --- /dev/null +++ b/census/website/src/components/icons/SiSlideshow.tsx @@ -0,0 +1,15 @@ +import type { SVGProps } from 'react'; +const SiSlideshow = (props: SVGProps) => ( + + + + + +); +export default SiSlideshow; diff --git a/census/website/src/components/icons/SiSmartphone.tsx b/census/website/src/components/icons/SiSmartphone.tsx new file mode 100644 index 0000000..9559dfa --- /dev/null +++ b/census/website/src/components/icons/SiSmartphone.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiSmartphone = (props: SVGProps) => ( + + + + + +); +export default SiSmartphone; diff --git a/census/website/src/components/icons/SiSmoking.tsx b/census/website/src/components/icons/SiSmoking.tsx new file mode 100644 index 0000000..7dbf98a --- /dev/null +++ b/census/website/src/components/icons/SiSmoking.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiSmoking = (props: SVGProps) => ( + + + +); +export default SiSmoking; diff --git a/census/website/src/components/icons/SiSnail.tsx b/census/website/src/components/icons/SiSnail.tsx new file mode 100644 index 0000000..359fbf9 --- /dev/null +++ b/census/website/src/components/icons/SiSnail.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiSnail = (props: SVGProps) => ( + + + +); +export default SiSnail; diff --git a/census/website/src/components/icons/SiSnapchat.tsx b/census/website/src/components/icons/SiSnapchat.tsx new file mode 100644 index 0000000..6b98b2f --- /dev/null +++ b/census/website/src/components/icons/SiSnapchat.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiSnapchat = (props: SVGProps) => ( + + + +); +export default SiSnapchat; diff --git a/census/website/src/components/icons/SiSneaker.tsx b/census/website/src/components/icons/SiSneaker.tsx new file mode 100644 index 0000000..a91e2c1 --- /dev/null +++ b/census/website/src/components/icons/SiSneaker.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiSneaker = (props: SVGProps) => ( + + + +); +export default SiSneaker; diff --git a/census/website/src/components/icons/SiSnorkel.tsx b/census/website/src/components/icons/SiSnorkel.tsx new file mode 100644 index 0000000..03aa255 --- /dev/null +++ b/census/website/src/components/icons/SiSnorkel.tsx @@ -0,0 +1,17 @@ +import type { SVGProps } from 'react'; +const SiSnorkel = (props: SVGProps) => ( + + + + +); +export default SiSnorkel; diff --git a/census/website/src/components/icons/SiSnowMobile.tsx b/census/website/src/components/icons/SiSnowMobile.tsx new file mode 100644 index 0000000..b0da565 --- /dev/null +++ b/census/website/src/components/icons/SiSnowMobile.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiSnowMobile = (props: SVGProps) => ( + + + +); +export default SiSnowMobile; diff --git a/census/website/src/components/icons/SiSoapPump.tsx b/census/website/src/components/icons/SiSoapPump.tsx new file mode 100644 index 0000000..741f0d4 --- /dev/null +++ b/census/website/src/components/icons/SiSoapPump.tsx @@ -0,0 +1,18 @@ +import type { SVGProps } from 'react'; +const SiSoapPump = (props: SVGProps) => ( + + + + + +); +export default SiSoapPump; diff --git a/census/website/src/components/icons/SiSoccerPitch.tsx b/census/website/src/components/icons/SiSoccerPitch.tsx new file mode 100644 index 0000000..db9a2af --- /dev/null +++ b/census/website/src/components/icons/SiSoccerPitch.tsx @@ -0,0 +1,30 @@ +import type { SVGProps } from 'react'; +const SiSoccerPitch = (props: SVGProps) => ( + + + + + + + + +); +export default SiSoccerPitch; diff --git a/census/website/src/components/icons/SiSolarPanels.tsx b/census/website/src/components/icons/SiSolarPanels.tsx new file mode 100644 index 0000000..29b75bc --- /dev/null +++ b/census/website/src/components/icons/SiSolarPanels.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiSolarPanels = (props: SVGProps) => ( + + + +); +export default SiSolarPanels; diff --git a/census/website/src/components/icons/SiSombrero.tsx b/census/website/src/components/icons/SiSombrero.tsx new file mode 100644 index 0000000..72f958f --- /dev/null +++ b/census/website/src/components/icons/SiSombrero.tsx @@ -0,0 +1,28 @@ +import type { SVGProps } from 'react'; +const SiSombrero = (props: SVGProps) => ( + + + + + + +); +export default SiSombrero; diff --git a/census/website/src/components/icons/SiSortAscending.tsx b/census/website/src/components/icons/SiSortAscending.tsx new file mode 100644 index 0000000..33917c1 --- /dev/null +++ b/census/website/src/components/icons/SiSortAscending.tsx @@ -0,0 +1,29 @@ +import type { SVGProps } from 'react'; +const SiSortAscending = (props: SVGProps) => ( + + + + + + + +); +export default SiSortAscending; diff --git a/census/website/src/components/icons/SiSortDescending.tsx b/census/website/src/components/icons/SiSortDescending.tsx new file mode 100644 index 0000000..e4da2b2 --- /dev/null +++ b/census/website/src/components/icons/SiSortDescending.tsx @@ -0,0 +1,23 @@ +import type { SVGProps } from 'react'; +const SiSortDescending = (props: SVGProps) => ( + + + + + + + +); +export default SiSortDescending; diff --git a/census/website/src/components/icons/SiSos.tsx b/census/website/src/components/icons/SiSos.tsx new file mode 100644 index 0000000..e38c1ed --- /dev/null +++ b/census/website/src/components/icons/SiSos.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiSos = (props: SVGProps) => ( + + + +); +export default SiSos; diff --git a/census/website/src/components/icons/SiSoundcloud.tsx b/census/website/src/components/icons/SiSoundcloud.tsx new file mode 100644 index 0000000..07a2009 --- /dev/null +++ b/census/website/src/components/icons/SiSoundcloud.tsx @@ -0,0 +1,16 @@ +import type { SVGProps } from 'react'; +const SiSoundcloud = (props: SVGProps) => ( + + + + + + +); +export default SiSoundcloud; diff --git a/census/website/src/components/icons/SiSouth.tsx b/census/website/src/components/icons/SiSouth.tsx new file mode 100644 index 0000000..2fef5c2 --- /dev/null +++ b/census/website/src/components/icons/SiSouth.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiSouth = (props: SVGProps) => ( + + + + +); +export default SiSouth; diff --git a/census/website/src/components/icons/SiSpacingHorizontal.tsx b/census/website/src/components/icons/SiSpacingHorizontal.tsx new file mode 100644 index 0000000..87a8c3c --- /dev/null +++ b/census/website/src/components/icons/SiSpacingHorizontal.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiSpacingHorizontal = (props: SVGProps) => ( + + + + + +); +export default SiSpacingHorizontal; diff --git a/census/website/src/components/icons/SiSpades.tsx b/census/website/src/components/icons/SiSpades.tsx new file mode 100644 index 0000000..7376795 --- /dev/null +++ b/census/website/src/components/icons/SiSpades.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiSpades = (props: SVGProps) => ( + + + +); +export default SiSpades; diff --git a/census/website/src/components/icons/SiSparkles.tsx b/census/website/src/components/icons/SiSparkles.tsx new file mode 100644 index 0000000..dc27a8c --- /dev/null +++ b/census/website/src/components/icons/SiSparkles.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiSparkles = (props: SVGProps) => ( + + + + +); +export default SiSparkles; diff --git a/census/website/src/components/icons/SiSparkles2.tsx b/census/website/src/components/icons/SiSparkles2.tsx new file mode 100644 index 0000000..5683260 --- /dev/null +++ b/census/website/src/components/icons/SiSparkles2.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiSparkles2 = (props: SVGProps) => ( + + + + + +); +export default SiSparkles2; diff --git a/census/website/src/components/icons/SiSpeaker.tsx b/census/website/src/components/icons/SiSpeaker.tsx new file mode 100644 index 0000000..ceeca35 --- /dev/null +++ b/census/website/src/components/icons/SiSpeaker.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiSpeaker = (props: SVGProps) => ( + + + +); +export default SiSpeaker; diff --git a/census/website/src/components/icons/SiSpeaker2.tsx b/census/website/src/components/icons/SiSpeaker2.tsx new file mode 100644 index 0000000..2f2fc26 --- /dev/null +++ b/census/website/src/components/icons/SiSpeaker2.tsx @@ -0,0 +1,26 @@ +import type { SVGProps } from 'react'; +const SiSpeaker2 = (props: SVGProps) => ( + + + + + +); +export default SiSpeaker2; diff --git a/census/website/src/components/icons/SiSpeakerMute.tsx b/census/website/src/components/icons/SiSpeakerMute.tsx new file mode 100644 index 0000000..6ec1d23 --- /dev/null +++ b/census/website/src/components/icons/SiSpeakerMute.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiSpeakerMute = (props: SVGProps) => ( + + + + + +); +export default SiSpeakerMute; diff --git a/census/website/src/components/icons/SiSpeakerMute2.tsx b/census/website/src/components/icons/SiSpeakerMute2.tsx new file mode 100644 index 0000000..30523ba --- /dev/null +++ b/census/website/src/components/icons/SiSpeakerMute2.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiSpeakerMute2 = (props: SVGProps) => ( + + + + +); +export default SiSpeakerMute2; diff --git a/census/website/src/components/icons/SiSpeakerOff.tsx b/census/website/src/components/icons/SiSpeakerOff.tsx new file mode 100644 index 0000000..434b906 --- /dev/null +++ b/census/website/src/components/icons/SiSpeakerOff.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiSpeakerOff = (props: SVGProps) => ( + + + +); +export default SiSpeakerOff; diff --git a/census/website/src/components/icons/SiSpeakerVolumeHigh.tsx b/census/website/src/components/icons/SiSpeakerVolumeHigh.tsx new file mode 100644 index 0000000..5b70553 --- /dev/null +++ b/census/website/src/components/icons/SiSpeakerVolumeHigh.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiSpeakerVolumeHigh = (props: SVGProps) => ( + + + + + +); +export default SiSpeakerVolumeHigh; diff --git a/census/website/src/components/icons/SiSpeakerVolumeLow.tsx b/census/website/src/components/icons/SiSpeakerVolumeLow.tsx new file mode 100644 index 0000000..ba18f26 --- /dev/null +++ b/census/website/src/components/icons/SiSpeakerVolumeLow.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiSpeakerVolumeLow = (props: SVGProps) => ( + + + + +); +export default SiSpeakerVolumeLow; diff --git a/census/website/src/components/icons/SiSpectacles.tsx b/census/website/src/components/icons/SiSpectacles.tsx new file mode 100644 index 0000000..98a8e2d --- /dev/null +++ b/census/website/src/components/icons/SiSpectacles.tsx @@ -0,0 +1,35 @@ +import type { SVGProps } from 'react'; +const SiSpectacles = (props: SVGProps) => ( + + + + + + + +); +export default SiSpectacles; diff --git a/census/website/src/components/icons/SiSpectacles2.tsx b/census/website/src/components/icons/SiSpectacles2.tsx new file mode 100644 index 0000000..51008d4 --- /dev/null +++ b/census/website/src/components/icons/SiSpectacles2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiSpectacles2 = (props: SVGProps) => ( + + + +); +export default SiSpectacles2; diff --git a/census/website/src/components/icons/SiSpeechBubble.tsx b/census/website/src/components/icons/SiSpeechBubble.tsx new file mode 100644 index 0000000..7e62320 --- /dev/null +++ b/census/website/src/components/icons/SiSpeechBubble.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiSpeechBubble = (props: SVGProps) => ( + + + +); +export default SiSpeechBubble; diff --git a/census/website/src/components/icons/SiSpeechBubbleMinus.tsx b/census/website/src/components/icons/SiSpeechBubbleMinus.tsx new file mode 100644 index 0000000..a1ce555 --- /dev/null +++ b/census/website/src/components/icons/SiSpeechBubbleMinus.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiSpeechBubbleMinus = (props: SVGProps) => ( + + + + +); +export default SiSpeechBubbleMinus; diff --git a/census/website/src/components/icons/SiSpeechBubblePlus.tsx b/census/website/src/components/icons/SiSpeechBubblePlus.tsx new file mode 100644 index 0000000..4aa443b --- /dev/null +++ b/census/website/src/components/icons/SiSpeechBubblePlus.tsx @@ -0,0 +1,15 @@ +import type { SVGProps } from 'react'; +const SiSpeechBubblePlus = (props: SVGProps) => ( + + + + + +); +export default SiSpeechBubblePlus; diff --git a/census/website/src/components/icons/SiSpeechImportant.tsx b/census/website/src/components/icons/SiSpeechImportant.tsx new file mode 100644 index 0000000..0c81ed6 --- /dev/null +++ b/census/website/src/components/icons/SiSpeechImportant.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiSpeechImportant = (props: SVGProps) => ( + + + + + +); +export default SiSpeechImportant; diff --git a/census/website/src/components/icons/SiSpeedFast.tsx b/census/website/src/components/icons/SiSpeedFast.tsx new file mode 100644 index 0000000..4fe14a1 --- /dev/null +++ b/census/website/src/components/icons/SiSpeedFast.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiSpeedFast = (props: SVGProps) => ( + + + +); +export default SiSpeedFast; diff --git a/census/website/src/components/icons/SiSpeedGauge.tsx b/census/website/src/components/icons/SiSpeedGauge.tsx new file mode 100644 index 0000000..71a2086 --- /dev/null +++ b/census/website/src/components/icons/SiSpeedGauge.tsx @@ -0,0 +1,15 @@ +import type { SVGProps } from 'react'; +const SiSpeedGauge = (props: SVGProps) => ( + + + + + +); +export default SiSpeedGauge; diff --git a/census/website/src/components/icons/SiSpeedSlow.tsx b/census/website/src/components/icons/SiSpeedSlow.tsx new file mode 100644 index 0000000..cd1473d --- /dev/null +++ b/census/website/src/components/icons/SiSpeedSlow.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiSpeedSlow = (props: SVGProps) => ( + + + +); +export default SiSpeedSlow; diff --git a/census/website/src/components/icons/SiSphere.tsx b/census/website/src/components/icons/SiSphere.tsx new file mode 100644 index 0000000..a66912e --- /dev/null +++ b/census/website/src/components/icons/SiSphere.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiSphere = (props: SVGProps) => ( + + + +); +export default SiSphere; diff --git a/census/website/src/components/icons/SiSpider.tsx b/census/website/src/components/icons/SiSpider.tsx new file mode 100644 index 0000000..75919ba --- /dev/null +++ b/census/website/src/components/icons/SiSpider.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiSpider = (props: SVGProps) => ( + + + +); +export default SiSpider; diff --git a/census/website/src/components/icons/SiSpinner.tsx b/census/website/src/components/icons/SiSpinner.tsx new file mode 100644 index 0000000..193709e --- /dev/null +++ b/census/website/src/components/icons/SiSpinner.tsx @@ -0,0 +1,38 @@ +import type { SVGProps } from 'react'; +const SiSpinner = (props: SVGProps) => ( + + + + + + + + + + +); +export default SiSpinner; diff --git a/census/website/src/components/icons/SiSplitCellsHorizontal.tsx b/census/website/src/components/icons/SiSplitCellsHorizontal.tsx new file mode 100644 index 0000000..8e0825e --- /dev/null +++ b/census/website/src/components/icons/SiSplitCellsHorizontal.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiSplitCellsHorizontal = (props: SVGProps) => ( + + + +); +export default SiSplitCellsHorizontal; diff --git a/census/website/src/components/icons/SiSplitCellsVertical.tsx b/census/website/src/components/icons/SiSplitCellsVertical.tsx new file mode 100644 index 0000000..3f572d7 --- /dev/null +++ b/census/website/src/components/icons/SiSplitCellsVertical.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiSplitCellsVertical = (props: SVGProps) => ( + + + +); +export default SiSplitCellsVertical; diff --git a/census/website/src/components/icons/SiSpoon.tsx b/census/website/src/components/icons/SiSpoon.tsx new file mode 100644 index 0000000..39ec8ee --- /dev/null +++ b/census/website/src/components/icons/SiSpoon.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiSpoon = (props: SVGProps) => ( + + + + +); +export default SiSpoon; diff --git a/census/website/src/components/icons/SiSpoon2.tsx b/census/website/src/components/icons/SiSpoon2.tsx new file mode 100644 index 0000000..b44dff6 --- /dev/null +++ b/census/website/src/components/icons/SiSpoon2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiSpoon2 = (props: SVGProps) => ( + + + +); +export default SiSpoon2; diff --git a/census/website/src/components/icons/SiSpotify.tsx b/census/website/src/components/icons/SiSpotify.tsx new file mode 100644 index 0000000..ec5e057 --- /dev/null +++ b/census/website/src/components/icons/SiSpotify.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiSpotify = (props: SVGProps) => ( + + + + +); +export default SiSpotify; diff --git a/census/website/src/components/icons/SiSprayPaint.tsx b/census/website/src/components/icons/SiSprayPaint.tsx new file mode 100644 index 0000000..d35101f --- /dev/null +++ b/census/website/src/components/icons/SiSprayPaint.tsx @@ -0,0 +1,36 @@ +import type { SVGProps } from 'react'; +const SiSprayPaint = (props: SVGProps) => ( + + + + + + + + +); +export default SiSprayPaint; diff --git a/census/website/src/components/icons/SiSpreadsheet.tsx b/census/website/src/components/icons/SiSpreadsheet.tsx new file mode 100644 index 0000000..4eef712 --- /dev/null +++ b/census/website/src/components/icons/SiSpreadsheet.tsx @@ -0,0 +1,30 @@ +import type { SVGProps } from 'react'; +const SiSpreadsheet = (props: SVGProps) => ( + + + + + + + + +); +export default SiSpreadsheet; diff --git a/census/website/src/components/icons/SiSquare.tsx b/census/website/src/components/icons/SiSquare.tsx new file mode 100644 index 0000000..5620dd8 --- /dev/null +++ b/census/website/src/components/icons/SiSquare.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiSquare = (props: SVGProps) => ( + + + +); +export default SiSquare; diff --git a/census/website/src/components/icons/SiSquareCheck.tsx b/census/website/src/components/icons/SiSquareCheck.tsx new file mode 100644 index 0000000..805cd14 --- /dev/null +++ b/census/website/src/components/icons/SiSquareCheck.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiSquareCheck = (props: SVGProps) => ( + + + + +); +export default SiSquareCheck; diff --git a/census/website/src/components/icons/SiSquareCross.tsx b/census/website/src/components/icons/SiSquareCross.tsx new file mode 100644 index 0000000..3e57f66 --- /dev/null +++ b/census/website/src/components/icons/SiSquareCross.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiSquareCross = (props: SVGProps) => ( + + + + + +); +export default SiSquareCross; diff --git a/census/website/src/components/icons/SiSquareFrame.tsx b/census/website/src/components/icons/SiSquareFrame.tsx new file mode 100644 index 0000000..c25908d --- /dev/null +++ b/census/website/src/components/icons/SiSquareFrame.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiSquareFrame = (props: SVGProps) => ( + + + + +); +export default SiSquareFrame; diff --git a/census/website/src/components/icons/SiSquareInterface.tsx b/census/website/src/components/icons/SiSquareInterface.tsx new file mode 100644 index 0000000..79bab45 --- /dev/null +++ b/census/website/src/components/icons/SiSquareInterface.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiSquareInterface = (props: SVGProps) => ( + + + +); +export default SiSquareInterface; diff --git a/census/website/src/components/icons/SiSquareIntersect.tsx b/census/website/src/components/icons/SiSquareIntersect.tsx new file mode 100644 index 0000000..27f0e27 --- /dev/null +++ b/census/website/src/components/icons/SiSquareIntersect.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiSquareIntersect = (props: SVGProps) => ( + + + + +); +export default SiSquareIntersect; diff --git a/census/website/src/components/icons/SiSquareMinus.tsx b/census/website/src/components/icons/SiSquareMinus.tsx new file mode 100644 index 0000000..0bebf8a --- /dev/null +++ b/census/website/src/components/icons/SiSquareMinus.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiSquareMinus = (props: SVGProps) => ( + + + + +); +export default SiSquareMinus; diff --git a/census/website/src/components/icons/SiSquarePlus.tsx b/census/website/src/components/icons/SiSquarePlus.tsx new file mode 100644 index 0000000..7e05336 --- /dev/null +++ b/census/website/src/components/icons/SiSquarePlus.tsx @@ -0,0 +1,15 @@ +import type { SVGProps } from 'react'; +const SiSquarePlus = (props: SVGProps) => ( + + + + + +); +export default SiSquarePlus; diff --git a/census/website/src/components/icons/SiStackOverflow.tsx b/census/website/src/components/icons/SiStackOverflow.tsx new file mode 100644 index 0000000..b52faac --- /dev/null +++ b/census/website/src/components/icons/SiStackOverflow.tsx @@ -0,0 +1,42 @@ +import type { SVGProps } from 'react'; +const SiStackOverflow = (props: SVGProps) => ( + + + + + + + + + + + + + + +); +export default SiStackOverflow; diff --git a/census/website/src/components/icons/SiStairs.tsx b/census/website/src/components/icons/SiStairs.tsx new file mode 100644 index 0000000..c798a8b --- /dev/null +++ b/census/website/src/components/icons/SiStairs.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiStairs = (props: SVGProps) => ( + + + +); +export default SiStairs; diff --git a/census/website/src/components/icons/SiStairs2.tsx b/census/website/src/components/icons/SiStairs2.tsx new file mode 100644 index 0000000..8eb50dc --- /dev/null +++ b/census/website/src/components/icons/SiStairs2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiStairs2 = (props: SVGProps) => ( + + + +); +export default SiStairs2; diff --git a/census/website/src/components/icons/SiStamp.tsx b/census/website/src/components/icons/SiStamp.tsx new file mode 100644 index 0000000..99f12a5 --- /dev/null +++ b/census/website/src/components/icons/SiStamp.tsx @@ -0,0 +1,28 @@ +import type { SVGProps } from 'react'; +const SiStamp = (props: SVGProps) => ( + + + + + + + + + + + + +); +export default SiStamp; diff --git a/census/website/src/components/icons/SiStar.tsx b/census/website/src/components/icons/SiStar.tsx new file mode 100644 index 0000000..fb4d11e --- /dev/null +++ b/census/website/src/components/icons/SiStar.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiStar = (props: SVGProps) => ( + + + +); +export default SiStar; diff --git a/census/website/src/components/icons/SiSteeringWheel.tsx b/census/website/src/components/icons/SiSteeringWheel.tsx new file mode 100644 index 0000000..75ccc10 --- /dev/null +++ b/census/website/src/components/icons/SiSteeringWheel.tsx @@ -0,0 +1,34 @@ +import type { SVGProps } from 'react'; +const SiSteeringWheel = (props: SVGProps) => ( + + + + + + +); +export default SiSteeringWheel; diff --git a/census/website/src/components/icons/SiStethoscope.tsx b/census/website/src/components/icons/SiStethoscope.tsx new file mode 100644 index 0000000..0406653 --- /dev/null +++ b/census/website/src/components/icons/SiStethoscope.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiStethoscope = (props: SVGProps) => ( + + + + +); +export default SiStethoscope; diff --git a/census/website/src/components/icons/SiSticker.tsx b/census/website/src/components/icons/SiSticker.tsx new file mode 100644 index 0000000..24463f4 --- /dev/null +++ b/census/website/src/components/icons/SiSticker.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiSticker = (props: SVGProps) => ( + + + + +); +export default SiSticker; diff --git a/census/website/src/components/icons/SiStickyNote.tsx b/census/website/src/components/icons/SiStickyNote.tsx new file mode 100644 index 0000000..a33cddf --- /dev/null +++ b/census/website/src/components/icons/SiStickyNote.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiStickyNote = (props: SVGProps) => ( + + + +); +export default SiStickyNote; diff --git a/census/website/src/components/icons/SiStiletto.tsx b/census/website/src/components/icons/SiStiletto.tsx new file mode 100644 index 0000000..22173b8 --- /dev/null +++ b/census/website/src/components/icons/SiStiletto.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiStiletto = (props: SVGProps) => ( + + + +); +export default SiStiletto; diff --git a/census/website/src/components/icons/SiStop.tsx b/census/website/src/components/icons/SiStop.tsx new file mode 100644 index 0000000..465a90f --- /dev/null +++ b/census/website/src/components/icons/SiStop.tsx @@ -0,0 +1,17 @@ +import type { SVGProps } from 'react'; +const SiStop = (props: SVGProps) => ( + + + +); +export default SiStop; diff --git a/census/website/src/components/icons/SiStreamToTv.tsx b/census/website/src/components/icons/SiStreamToTv.tsx new file mode 100644 index 0000000..b18566d --- /dev/null +++ b/census/website/src/components/icons/SiStreamToTv.tsx @@ -0,0 +1,31 @@ +import type { SVGProps } from 'react'; +const SiStreamToTv = (props: SVGProps) => ( + + + + + + +); +export default SiStreamToTv; diff --git a/census/website/src/components/icons/SiStreamToTv2.tsx b/census/website/src/components/icons/SiStreamToTv2.tsx new file mode 100644 index 0000000..248b448 --- /dev/null +++ b/census/website/src/components/icons/SiStreamToTv2.tsx @@ -0,0 +1,28 @@ +import type { SVGProps } from 'react'; +const SiStreamToTv2 = (props: SVGProps) => ( + + + + + + +); +export default SiStreamToTv2; diff --git a/census/website/src/components/icons/SiStrikethrough.tsx b/census/website/src/components/icons/SiStrikethrough.tsx new file mode 100644 index 0000000..d44b4d4 --- /dev/null +++ b/census/website/src/components/icons/SiStrikethrough.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiStrikethrough = (props: SVGProps) => ( + + + + + +); +export default SiStrikethrough; diff --git a/census/website/src/components/icons/SiSubscription.tsx b/census/website/src/components/icons/SiSubscription.tsx new file mode 100644 index 0000000..b93d472 --- /dev/null +++ b/census/website/src/components/icons/SiSubscription.tsx @@ -0,0 +1,34 @@ +import type { SVGProps } from 'react'; +const SiSubscription = (props: SVGProps) => ( + + + + + + +); +export default SiSubscription; diff --git a/census/website/src/components/icons/SiSubstitute.tsx b/census/website/src/components/icons/SiSubstitute.tsx new file mode 100644 index 0000000..374c072 --- /dev/null +++ b/census/website/src/components/icons/SiSubstitute.tsx @@ -0,0 +1,36 @@ +import type { SVGProps } from 'react'; +const SiSubstitute = (props: SVGProps) => ( + + + + + + + + +); +export default SiSubstitute; diff --git a/census/website/src/components/icons/SiSun.tsx b/census/website/src/components/icons/SiSun.tsx new file mode 100644 index 0000000..0de173b --- /dev/null +++ b/census/website/src/components/icons/SiSun.tsx @@ -0,0 +1,59 @@ +import type { SVGProps } from 'react'; +const SiSun = (props: SVGProps) => ( + + + + + + + + + + + +); +export default SiSun; diff --git a/census/website/src/components/icons/SiSunrise.tsx b/census/website/src/components/icons/SiSunrise.tsx new file mode 100644 index 0000000..fdcf824 --- /dev/null +++ b/census/website/src/components/icons/SiSunrise.tsx @@ -0,0 +1,58 @@ +import type { SVGProps } from 'react'; +const SiSunrise = (props: SVGProps) => ( + + + + + + + + + + + + +); +export default SiSunrise; diff --git a/census/website/src/components/icons/SiSunrise2.tsx b/census/website/src/components/icons/SiSunrise2.tsx new file mode 100644 index 0000000..024fd03 --- /dev/null +++ b/census/website/src/components/icons/SiSunrise2.tsx @@ -0,0 +1,44 @@ +import type { SVGProps } from 'react'; +const SiSunrise2 = (props: SVGProps) => ( + + + + + + + + + + +); +export default SiSunrise2; diff --git a/census/website/src/components/icons/SiSvg.tsx b/census/website/src/components/icons/SiSvg.tsx new file mode 100644 index 0000000..e1a1a76 --- /dev/null +++ b/census/website/src/components/icons/SiSvg.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiSvg = (props: SVGProps) => ( + + + + + +); +export default SiSvg; diff --git a/census/website/src/components/icons/SiSwap.tsx b/census/website/src/components/icons/SiSwap.tsx new file mode 100644 index 0000000..8e390cb --- /dev/null +++ b/census/website/src/components/icons/SiSwap.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiSwap = (props: SVGProps) => ( + + + + +); +export default SiSwap; diff --git a/census/website/src/components/icons/SiSweep.tsx b/census/website/src/components/icons/SiSweep.tsx new file mode 100644 index 0000000..1ba0534 --- /dev/null +++ b/census/website/src/components/icons/SiSweep.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiSweep = (props: SVGProps) => ( + + + +); +export default SiSweep; diff --git a/census/website/src/components/icons/SiSwissArmyKnife.tsx b/census/website/src/components/icons/SiSwissArmyKnife.tsx new file mode 100644 index 0000000..33712b4 --- /dev/null +++ b/census/website/src/components/icons/SiSwissArmyKnife.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiSwissArmyKnife = (props: SVGProps) => ( + + + +); +export default SiSwissArmyKnife; diff --git a/census/website/src/components/icons/SiSwitch.tsx b/census/website/src/components/icons/SiSwitch.tsx new file mode 100644 index 0000000..ea05f2f --- /dev/null +++ b/census/website/src/components/icons/SiSwitch.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiSwitch = (props: SVGProps) => ( + + + + + + +); +export default SiSwitch; diff --git a/census/website/src/components/icons/SiSwitch2.tsx b/census/website/src/components/icons/SiSwitch2.tsx new file mode 100644 index 0000000..5e6570e --- /dev/null +++ b/census/website/src/components/icons/SiSwitch2.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiSwitch2 = (props: SVGProps) => ( + + + + + + +); +export default SiSwitch2; diff --git a/census/website/src/components/icons/SiTShirt.tsx b/census/website/src/components/icons/SiTShirt.tsx new file mode 100644 index 0000000..27b5ede --- /dev/null +++ b/census/website/src/components/icons/SiTShirt.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiTShirt = (props: SVGProps) => ( + + + +); +export default SiTShirt; diff --git a/census/website/src/components/icons/SiTableColumns.tsx b/census/website/src/components/icons/SiTableColumns.tsx new file mode 100644 index 0000000..d856113 --- /dev/null +++ b/census/website/src/components/icons/SiTableColumns.tsx @@ -0,0 +1,15 @@ +import type { SVGProps } from 'react'; +const SiTableColumns = (props: SVGProps) => ( + + + + + +); +export default SiTableColumns; diff --git a/census/website/src/components/icons/SiTableRows.tsx b/census/website/src/components/icons/SiTableRows.tsx new file mode 100644 index 0000000..e93a1eb --- /dev/null +++ b/census/website/src/components/icons/SiTableRows.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiTableRows = (props: SVGProps) => ( + + + + + +); +export default SiTableRows; diff --git a/census/website/src/components/icons/SiTablet.tsx b/census/website/src/components/icons/SiTablet.tsx new file mode 100644 index 0000000..b6f0ff0 --- /dev/null +++ b/census/website/src/components/icons/SiTablet.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiTablet = (props: SVGProps) => ( + + + + +); +export default SiTablet; diff --git a/census/website/src/components/icons/SiTabletDrawing.tsx b/census/website/src/components/icons/SiTabletDrawing.tsx new file mode 100644 index 0000000..9d2a54d --- /dev/null +++ b/census/website/src/components/icons/SiTabletDrawing.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiTabletDrawing = (props: SVGProps) => ( + + + +); +export default SiTabletDrawing; diff --git a/census/website/src/components/icons/SiTag.tsx b/census/website/src/components/icons/SiTag.tsx new file mode 100644 index 0000000..5484df4 --- /dev/null +++ b/census/website/src/components/icons/SiTag.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiTag = (props: SVGProps) => ( + + + + +); +export default SiTag; diff --git a/census/website/src/components/icons/SiTag2.tsx b/census/website/src/components/icons/SiTag2.tsx new file mode 100644 index 0000000..e093d13 --- /dev/null +++ b/census/website/src/components/icons/SiTag2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiTag2 = (props: SVGProps) => ( + + + +); +export default SiTag2; diff --git a/census/website/src/components/icons/SiTagAdd.tsx b/census/website/src/components/icons/SiTagAdd.tsx new file mode 100644 index 0000000..3e68c9e --- /dev/null +++ b/census/website/src/components/icons/SiTagAdd.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiTagAdd = (props: SVGProps) => ( + + + + + + +); +export default SiTagAdd; diff --git a/census/website/src/components/icons/SiTapLeft.tsx b/census/website/src/components/icons/SiTapLeft.tsx new file mode 100644 index 0000000..66ea75a --- /dev/null +++ b/census/website/src/components/icons/SiTapLeft.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiTapLeft = (props: SVGProps) => ( + + + +); +export default SiTapLeft; diff --git a/census/website/src/components/icons/SiTapRight.tsx b/census/website/src/components/icons/SiTapRight.tsx new file mode 100644 index 0000000..a063024 --- /dev/null +++ b/census/website/src/components/icons/SiTapRight.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiTapRight = (props: SVGProps) => ( + + + +); +export default SiTapRight; diff --git a/census/website/src/components/icons/SiTarget.tsx b/census/website/src/components/icons/SiTarget.tsx new file mode 100644 index 0000000..150a274 --- /dev/null +++ b/census/website/src/components/icons/SiTarget.tsx @@ -0,0 +1,33 @@ +import type { SVGProps } from 'react'; +const SiTarget = (props: SVGProps) => ( + + + + + +); +export default SiTarget; diff --git a/census/website/src/components/icons/SiTaurus.tsx b/census/website/src/components/icons/SiTaurus.tsx new file mode 100644 index 0000000..4cbef35 --- /dev/null +++ b/census/website/src/components/icons/SiTaurus.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiTaurus = (props: SVGProps) => ( + + + + + +); +export default SiTaurus; diff --git a/census/website/src/components/icons/SiTelegram.tsx b/census/website/src/components/icons/SiTelegram.tsx new file mode 100644 index 0000000..da2505d --- /dev/null +++ b/census/website/src/components/icons/SiTelegram.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiTelegram = (props: SVGProps) => ( + + + +); +export default SiTelegram; diff --git a/census/website/src/components/icons/SiTelescope.tsx b/census/website/src/components/icons/SiTelescope.tsx new file mode 100644 index 0000000..96e1154 --- /dev/null +++ b/census/website/src/components/icons/SiTelescope.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiTelescope = (props: SVGProps) => ( + + + +); +export default SiTelescope; diff --git a/census/website/src/components/icons/SiTemperature.tsx b/census/website/src/components/icons/SiTemperature.tsx new file mode 100644 index 0000000..ebd25b8 --- /dev/null +++ b/census/website/src/components/icons/SiTemperature.tsx @@ -0,0 +1,17 @@ +import type { SVGProps } from 'react'; +const SiTemperature = (props: SVGProps) => ( + + + + + + + +); +export default SiTemperature; diff --git a/census/website/src/components/icons/SiTemperatureHigh.tsx b/census/website/src/components/icons/SiTemperatureHigh.tsx new file mode 100644 index 0000000..95ad9d9 --- /dev/null +++ b/census/website/src/components/icons/SiTemperatureHigh.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiTemperatureHigh = (props: SVGProps) => ( + + + +); +export default SiTemperatureHigh; diff --git a/census/website/src/components/icons/SiTemperatureLow.tsx b/census/website/src/components/icons/SiTemperatureLow.tsx new file mode 100644 index 0000000..bfa9512 --- /dev/null +++ b/census/website/src/components/icons/SiTemperatureLow.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiTemperatureLow = (props: SVGProps) => ( + + + +); +export default SiTemperatureLow; diff --git a/census/website/src/components/icons/SiTent.tsx b/census/website/src/components/icons/SiTent.tsx new file mode 100644 index 0000000..301259b --- /dev/null +++ b/census/website/src/components/icons/SiTent.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiTent = (props: SVGProps) => ( + + + +); +export default SiTent; diff --git a/census/website/src/components/icons/SiTepee.tsx b/census/website/src/components/icons/SiTepee.tsx new file mode 100644 index 0000000..ec2c5ad --- /dev/null +++ b/census/website/src/components/icons/SiTepee.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiTepee = (props: SVGProps) => ( + + + + + + +); +export default SiTepee; diff --git a/census/website/src/components/icons/SiText.tsx b/census/website/src/components/icons/SiText.tsx new file mode 100644 index 0000000..302a8bc --- /dev/null +++ b/census/website/src/components/icons/SiText.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiText = (props: SVGProps) => ( + + + + +); +export default SiText; diff --git a/census/website/src/components/icons/SiTextAlignCenter.tsx b/census/website/src/components/icons/SiTextAlignCenter.tsx new file mode 100644 index 0000000..4df094a --- /dev/null +++ b/census/website/src/components/icons/SiTextAlignCenter.tsx @@ -0,0 +1,9 @@ +import type { SVGProps } from 'react'; +const SiTextAlignCenter = (props: SVGProps) => ( + + + + + +); +export default SiTextAlignCenter; diff --git a/census/website/src/components/icons/SiTextAlignJustified.tsx b/census/website/src/components/icons/SiTextAlignJustified.tsx new file mode 100644 index 0000000..246d839 --- /dev/null +++ b/census/website/src/components/icons/SiTextAlignJustified.tsx @@ -0,0 +1,9 @@ +import type { SVGProps } from 'react'; +const SiTextAlignJustified = (props: SVGProps) => ( + + + + + +); +export default SiTextAlignJustified; diff --git a/census/website/src/components/icons/SiTextAlignLeft.tsx b/census/website/src/components/icons/SiTextAlignLeft.tsx new file mode 100644 index 0000000..62a5b81 --- /dev/null +++ b/census/website/src/components/icons/SiTextAlignLeft.tsx @@ -0,0 +1,9 @@ +import type { SVGProps } from 'react'; +const SiTextAlignLeft = (props: SVGProps) => ( + + + + + +); +export default SiTextAlignLeft; diff --git a/census/website/src/components/icons/SiTextAlignRight.tsx b/census/website/src/components/icons/SiTextAlignRight.tsx new file mode 100644 index 0000000..68b5ee2 --- /dev/null +++ b/census/website/src/components/icons/SiTextAlignRight.tsx @@ -0,0 +1,9 @@ +import type { SVGProps } from 'react'; +const SiTextAlignRight = (props: SVGProps) => ( + + + + + +); +export default SiTextAlignRight; diff --git a/census/website/src/components/icons/SiTextCapitalise.tsx b/census/website/src/components/icons/SiTextCapitalise.tsx new file mode 100644 index 0000000..1f3ef87 --- /dev/null +++ b/census/website/src/components/icons/SiTextCapitalise.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiTextCapitalise = (props: SVGProps) => ( + + + + + + +); +export default SiTextCapitalise; diff --git a/census/website/src/components/icons/SiTextLowercase.tsx b/census/website/src/components/icons/SiTextLowercase.tsx new file mode 100644 index 0000000..d89fecd --- /dev/null +++ b/census/website/src/components/icons/SiTextLowercase.tsx @@ -0,0 +1,28 @@ +import type { SVGProps } from 'react'; +const SiTextLowercase = (props: SVGProps) => ( + + + + + + +); +export default SiTextLowercase; diff --git a/census/website/src/components/icons/SiTextUppercase.tsx b/census/website/src/components/icons/SiTextUppercase.tsx new file mode 100644 index 0000000..2fbf94e --- /dev/null +++ b/census/website/src/components/icons/SiTextUppercase.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiTextUppercase = (props: SVGProps) => ( + + + + + + +); +export default SiTextUppercase; diff --git a/census/website/src/components/icons/SiThumbsDown.tsx b/census/website/src/components/icons/SiThumbsDown.tsx new file mode 100644 index 0000000..d2b6cfe --- /dev/null +++ b/census/website/src/components/icons/SiThumbsDown.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiThumbsDown = (props: SVGProps) => ( + + + + +); +export default SiThumbsDown; diff --git a/census/website/src/components/icons/SiThumbsUp.tsx b/census/website/src/components/icons/SiThumbsUp.tsx new file mode 100644 index 0000000..50c377b --- /dev/null +++ b/census/website/src/components/icons/SiThumbsUp.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiThumbsUp = (props: SVGProps) => ( + + + + +); +export default SiThumbsUp; diff --git a/census/website/src/components/icons/SiTicket.tsx b/census/website/src/components/icons/SiTicket.tsx new file mode 100644 index 0000000..751c9d3 --- /dev/null +++ b/census/website/src/components/icons/SiTicket.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiTicket = (props: SVGProps) => ( + + + +); +export default SiTicket; diff --git a/census/website/src/components/icons/SiTickets.tsx b/census/website/src/components/icons/SiTickets.tsx new file mode 100644 index 0000000..eac2ea2 --- /dev/null +++ b/census/website/src/components/icons/SiTickets.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiTickets = (props: SVGProps) => ( + + + +); +export default SiTickets; diff --git a/census/website/src/components/icons/SiTiktok.tsx b/census/website/src/components/icons/SiTiktok.tsx new file mode 100644 index 0000000..b7dfd1d --- /dev/null +++ b/census/website/src/components/icons/SiTiktok.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiTiktok = (props: SVGProps) => ( + + + + +); +export default SiTiktok; diff --git a/census/website/src/components/icons/SiTimer.tsx b/census/website/src/components/icons/SiTimer.tsx new file mode 100644 index 0000000..d33bebf --- /dev/null +++ b/census/website/src/components/icons/SiTimer.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiTimer = (props: SVGProps) => ( + + + + + + +); +export default SiTimer; diff --git a/census/website/src/components/icons/SiTimer2.tsx b/census/website/src/components/icons/SiTimer2.tsx new file mode 100644 index 0000000..8a7a055 --- /dev/null +++ b/census/website/src/components/icons/SiTimer2.tsx @@ -0,0 +1,16 @@ +import type { SVGProps } from 'react'; +const SiTimer2 = (props: SVGProps) => ( + + + + + + +); +export default SiTimer2; diff --git a/census/website/src/components/icons/SiTimer3.tsx b/census/website/src/components/icons/SiTimer3.tsx new file mode 100644 index 0000000..72ea3c5 --- /dev/null +++ b/census/website/src/components/icons/SiTimer3.tsx @@ -0,0 +1,24 @@ +import type { SVGProps } from 'react'; +const SiTimer3 = (props: SVGProps) => ( + + + + + + + + +); +export default SiTimer3; diff --git a/census/website/src/components/icons/SiTimer4.tsx b/census/website/src/components/icons/SiTimer4.tsx new file mode 100644 index 0000000..8126d58 --- /dev/null +++ b/census/website/src/components/icons/SiTimer4.tsx @@ -0,0 +1,24 @@ +import type { SVGProps } from 'react'; +const SiTimer4 = (props: SVGProps) => ( + + + + + + + + +); +export default SiTimer4; diff --git a/census/website/src/components/icons/SiTimerCheckmark.tsx b/census/website/src/components/icons/SiTimerCheckmark.tsx new file mode 100644 index 0000000..6df8bdb --- /dev/null +++ b/census/website/src/components/icons/SiTimerCheckmark.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiTimerCheckmark = (props: SVGProps) => ( + + + +); +export default SiTimerCheckmark; diff --git a/census/website/src/components/icons/SiTimerSnooze.tsx b/census/website/src/components/icons/SiTimerSnooze.tsx new file mode 100644 index 0000000..d6847bf --- /dev/null +++ b/census/website/src/components/icons/SiTimerSnooze.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiTimerSnooze = (props: SVGProps) => ( + + + +); +export default SiTimerSnooze; diff --git a/census/website/src/components/icons/SiToggleLeft.tsx b/census/website/src/components/icons/SiToggleLeft.tsx new file mode 100644 index 0000000..a86eaf6 --- /dev/null +++ b/census/website/src/components/icons/SiToggleLeft.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiToggleLeft = (props: SVGProps) => ( + + + + +); +export default SiToggleLeft; diff --git a/census/website/src/components/icons/SiToggleRight.tsx b/census/website/src/components/icons/SiToggleRight.tsx new file mode 100644 index 0000000..ba852e9 --- /dev/null +++ b/census/website/src/components/icons/SiToggleRight.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiToggleRight = (props: SVGProps) => ( + + + + +); +export default SiToggleRight; diff --git a/census/website/src/components/icons/SiToiletRoll.tsx b/census/website/src/components/icons/SiToiletRoll.tsx new file mode 100644 index 0000000..eb59525 --- /dev/null +++ b/census/website/src/components/icons/SiToiletRoll.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiToiletRoll = (props: SVGProps) => ( + + + + + + +); +export default SiToiletRoll; diff --git a/census/website/src/components/icons/SiTomahawk.tsx b/census/website/src/components/icons/SiTomahawk.tsx new file mode 100644 index 0000000..5c7c8e4 --- /dev/null +++ b/census/website/src/components/icons/SiTomahawk.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiTomahawk = (props: SVGProps) => ( + + + +); +export default SiTomahawk; diff --git a/census/website/src/components/icons/SiToolbox.tsx b/census/website/src/components/icons/SiToolbox.tsx new file mode 100644 index 0000000..994518b --- /dev/null +++ b/census/website/src/components/icons/SiToolbox.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiToolbox = (props: SVGProps) => ( + + + +); +export default SiToolbox; diff --git a/census/website/src/components/icons/SiTooth.tsx b/census/website/src/components/icons/SiTooth.tsx new file mode 100644 index 0000000..5a8ce4f --- /dev/null +++ b/census/website/src/components/icons/SiTooth.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiTooth = (props: SVGProps) => ( + + + +); +export default SiTooth; diff --git a/census/website/src/components/icons/SiToothPain.tsx b/census/website/src/components/icons/SiToothPain.tsx new file mode 100644 index 0000000..05ccbeb --- /dev/null +++ b/census/website/src/components/icons/SiToothPain.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiToothPain = (props: SVGProps) => ( + + + +); +export default SiToothPain; diff --git a/census/website/src/components/icons/SiToothbrush.tsx b/census/website/src/components/icons/SiToothbrush.tsx new file mode 100644 index 0000000..ebbfff9 --- /dev/null +++ b/census/website/src/components/icons/SiToothbrush.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiToothbrush = (props: SVGProps) => ( + + + +); +export default SiToothbrush; diff --git a/census/website/src/components/icons/SiTopHat.tsx b/census/website/src/components/icons/SiTopHat.tsx new file mode 100644 index 0000000..3e873b1 --- /dev/null +++ b/census/website/src/components/icons/SiTopHat.tsx @@ -0,0 +1,26 @@ +import type { SVGProps } from 'react'; +const SiTopHat = (props: SVGProps) => ( + + + + + + + +); +export default SiTopHat; diff --git a/census/website/src/components/icons/SiToys.tsx b/census/website/src/components/icons/SiToys.tsx new file mode 100644 index 0000000..8fca65b --- /dev/null +++ b/census/website/src/components/icons/SiToys.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiToys = (props: SVGProps) => ( + + + +); +export default SiToys; diff --git a/census/website/src/components/icons/SiTrafficLights.tsx b/census/website/src/components/icons/SiTrafficLights.tsx new file mode 100644 index 0000000..619cce7 --- /dev/null +++ b/census/website/src/components/icons/SiTrafficLights.tsx @@ -0,0 +1,59 @@ +import type { SVGProps } from 'react'; +const SiTrafficLights = (props: SVGProps) => ( + + + + + + + + + + +); +export default SiTrafficLights; diff --git a/census/website/src/components/icons/SiTrailer.tsx b/census/website/src/components/icons/SiTrailer.tsx new file mode 100644 index 0000000..44133cb --- /dev/null +++ b/census/website/src/components/icons/SiTrailer.tsx @@ -0,0 +1,47 @@ +import type { SVGProps } from 'react'; +const SiTrailer = (props: SVGProps) => ( + + + + + + + + + + + + + + + +); +export default SiTrailer; diff --git a/census/website/src/components/icons/SiTrain.tsx b/census/website/src/components/icons/SiTrain.tsx new file mode 100644 index 0000000..c16fa49 --- /dev/null +++ b/census/website/src/components/icons/SiTrain.tsx @@ -0,0 +1,26 @@ +import type { SVGProps } from 'react'; +const SiTrain = (props: SVGProps) => ( + + + + + + + +); +export default SiTrain; diff --git a/census/website/src/components/icons/SiTrainArriving.tsx b/census/website/src/components/icons/SiTrainArriving.tsx new file mode 100644 index 0000000..d803e8c --- /dev/null +++ b/census/website/src/components/icons/SiTrainArriving.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiTrainArriving = (props: SVGProps) => ( + + + +); +export default SiTrainArriving; diff --git a/census/website/src/components/icons/SiTrainDeparting.tsx b/census/website/src/components/icons/SiTrainDeparting.tsx new file mode 100644 index 0000000..27b250e --- /dev/null +++ b/census/website/src/components/icons/SiTrainDeparting.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiTrainDeparting = (props: SVGProps) => ( + + + +); +export default SiTrainDeparting; diff --git a/census/website/src/components/icons/SiTrampoline.tsx b/census/website/src/components/icons/SiTrampoline.tsx new file mode 100644 index 0000000..7ddbb23 --- /dev/null +++ b/census/website/src/components/icons/SiTrampoline.tsx @@ -0,0 +1,16 @@ +import type { SVGProps } from 'react'; +const SiTrampoline = (props: SVGProps) => ( + + + + + + +); +export default SiTrampoline; diff --git a/census/website/src/components/icons/SiTrash.tsx b/census/website/src/components/icons/SiTrash.tsx new file mode 100644 index 0000000..6d6ff07 --- /dev/null +++ b/census/website/src/components/icons/SiTrash.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiTrash = (props: SVGProps) => ( + + + + + +); +export default SiTrash; diff --git a/census/website/src/components/icons/SiTrash2.tsx b/census/website/src/components/icons/SiTrash2.tsx new file mode 100644 index 0000000..325186f --- /dev/null +++ b/census/website/src/components/icons/SiTrash2.tsx @@ -0,0 +1,23 @@ +import type { SVGProps } from 'react'; +const SiTrash2 = (props: SVGProps) => ( + + + + + + + +); +export default SiTrash2; diff --git a/census/website/src/components/icons/SiTrashCan.tsx b/census/website/src/components/icons/SiTrashCan.tsx new file mode 100644 index 0000000..ddc3e74 --- /dev/null +++ b/census/website/src/components/icons/SiTrashCan.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiTrashCan = (props: SVGProps) => ( + + + + +); +export default SiTrashCan; diff --git a/census/website/src/components/icons/SiTree.tsx b/census/website/src/components/icons/SiTree.tsx new file mode 100644 index 0000000..e280dfc --- /dev/null +++ b/census/website/src/components/icons/SiTree.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiTree = (props: SVGProps) => ( + + + +); +export default SiTree; diff --git a/census/website/src/components/icons/SiTree2.tsx b/census/website/src/components/icons/SiTree2.tsx new file mode 100644 index 0000000..62167b9 --- /dev/null +++ b/census/website/src/components/icons/SiTree2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiTree2 = (props: SVGProps) => ( + + + +); +export default SiTree2; diff --git a/census/website/src/components/icons/SiTrees.tsx b/census/website/src/components/icons/SiTrees.tsx new file mode 100644 index 0000000..9e9e1f9 --- /dev/null +++ b/census/website/src/components/icons/SiTrees.tsx @@ -0,0 +1,23 @@ +import type { SVGProps } from 'react'; +const SiTrees = (props: SVGProps) => ( + + + + + + + +); +export default SiTrees; diff --git a/census/website/src/components/icons/SiTrendingDown.tsx b/census/website/src/components/icons/SiTrendingDown.tsx new file mode 100644 index 0000000..4facac3 --- /dev/null +++ b/census/website/src/components/icons/SiTrendingDown.tsx @@ -0,0 +1,41 @@ +import type { SVGProps } from 'react'; +const SiTrendingDown = (props: SVGProps) => ( + + + + + + + +); +export default SiTrendingDown; diff --git a/census/website/src/components/icons/SiTrendingUp.tsx b/census/website/src/components/icons/SiTrendingUp.tsx new file mode 100644 index 0000000..0c19a69 --- /dev/null +++ b/census/website/src/components/icons/SiTrendingUp.tsx @@ -0,0 +1,41 @@ +import type { SVGProps } from 'react'; +const SiTrendingUp = (props: SVGProps) => ( + + + + + + + +); +export default SiTrendingUp; diff --git a/census/website/src/components/icons/SiTriangle.tsx b/census/website/src/components/icons/SiTriangle.tsx new file mode 100644 index 0000000..ec2f2a2 --- /dev/null +++ b/census/website/src/components/icons/SiTriangle.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiTriangle = (props: SVGProps) => ( + + + +); +export default SiTriangle; diff --git a/census/website/src/components/icons/SiTriangleCircle.tsx b/census/website/src/components/icons/SiTriangleCircle.tsx new file mode 100644 index 0000000..cef1681 --- /dev/null +++ b/census/website/src/components/icons/SiTriangleCircle.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiTriangleCircle = (props: SVGProps) => ( + + + + + + + + + + + +); +export default SiTriangleCircle; diff --git a/census/website/src/components/icons/SiTriangleRuler.tsx b/census/website/src/components/icons/SiTriangleRuler.tsx new file mode 100644 index 0000000..5a699f7 --- /dev/null +++ b/census/website/src/components/icons/SiTriangleRuler.tsx @@ -0,0 +1,30 @@ +import type { SVGProps } from 'react'; +const SiTriangleRuler = (props: SVGProps) => ( + + + + + + + + +); +export default SiTriangleRuler; diff --git a/census/website/src/components/icons/SiTrolly.tsx b/census/website/src/components/icons/SiTrolly.tsx new file mode 100644 index 0000000..07b670b --- /dev/null +++ b/census/website/src/components/icons/SiTrolly.tsx @@ -0,0 +1,29 @@ +import type { SVGProps } from 'react'; +const SiTrolly = (props: SVGProps) => ( + + + + + + + +); +export default SiTrolly; diff --git a/census/website/src/components/icons/SiTrophy.tsx b/census/website/src/components/icons/SiTrophy.tsx new file mode 100644 index 0000000..5a0d9d7 --- /dev/null +++ b/census/website/src/components/icons/SiTrophy.tsx @@ -0,0 +1,29 @@ +import type { SVGProps } from 'react'; +const SiTrophy = (props: SVGProps) => ( + + + + + + + +); +export default SiTrophy; diff --git a/census/website/src/components/icons/SiTrousers.tsx b/census/website/src/components/icons/SiTrousers.tsx new file mode 100644 index 0000000..fcc8b1f --- /dev/null +++ b/census/website/src/components/icons/SiTrousers.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiTrousers = (props: SVGProps) => ( + + + +); +export default SiTrousers; diff --git a/census/website/src/components/icons/SiTruck.tsx b/census/website/src/components/icons/SiTruck.tsx new file mode 100644 index 0000000..a873e78 --- /dev/null +++ b/census/website/src/components/icons/SiTruck.tsx @@ -0,0 +1,34 @@ +import type { SVGProps } from 'react'; +const SiTruck = (props: SVGProps) => ( + + + + + + +); +export default SiTruck; diff --git a/census/website/src/components/icons/SiTruck2.tsx b/census/website/src/components/icons/SiTruck2.tsx new file mode 100644 index 0000000..082d704 --- /dev/null +++ b/census/website/src/components/icons/SiTruck2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiTruck2 = (props: SVGProps) => ( + + + +); +export default SiTruck2; diff --git a/census/website/src/components/icons/SiTurnVolumeHigh.tsx b/census/website/src/components/icons/SiTurnVolumeHigh.tsx new file mode 100644 index 0000000..c829e8e --- /dev/null +++ b/census/website/src/components/icons/SiTurnVolumeHigh.tsx @@ -0,0 +1,42 @@ +import type { SVGProps } from 'react'; +const SiTurnVolumeHigh = (props: SVGProps) => ( + + + + + + + + +); +export default SiTurnVolumeHigh; diff --git a/census/website/src/components/icons/SiTurnVolumeLow.tsx b/census/website/src/components/icons/SiTurnVolumeLow.tsx new file mode 100644 index 0000000..293bba9 --- /dev/null +++ b/census/website/src/components/icons/SiTurnVolumeLow.tsx @@ -0,0 +1,42 @@ +import type { SVGProps } from 'react'; +const SiTurnVolumeLow = (props: SVGProps) => ( + + + + + + + + +); +export default SiTurnVolumeLow; diff --git a/census/website/src/components/icons/SiTurntable.tsx b/census/website/src/components/icons/SiTurntable.tsx new file mode 100644 index 0000000..b04cf53 --- /dev/null +++ b/census/website/src/components/icons/SiTurntable.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiTurntable = (props: SVGProps) => ( + + + + + +); +export default SiTurntable; diff --git a/census/website/src/components/icons/SiTwitch.tsx b/census/website/src/components/icons/SiTwitch.tsx new file mode 100644 index 0000000..c04885d --- /dev/null +++ b/census/website/src/components/icons/SiTwitch.tsx @@ -0,0 +1,15 @@ +import type { SVGProps } from 'react'; +const SiTwitch = (props: SVGProps) => ( + + + + + +); +export default SiTwitch; diff --git a/census/website/src/components/icons/SiTwitter.tsx b/census/website/src/components/icons/SiTwitter.tsx new file mode 100644 index 0000000..53c69bd --- /dev/null +++ b/census/website/src/components/icons/SiTwitter.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiTwitter = (props: SVGProps) => ( + + + +); +export default SiTwitter; diff --git a/census/website/src/components/icons/SiTwoCheckmarks.tsx b/census/website/src/components/icons/SiTwoCheckmarks.tsx new file mode 100644 index 0000000..8d9bd0f --- /dev/null +++ b/census/website/src/components/icons/SiTwoCheckmarks.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiTwoCheckmarks = (props: SVGProps) => ( + + + +); +export default SiTwoCheckmarks; diff --git a/census/website/src/components/icons/SiTwoChillis.tsx b/census/website/src/components/icons/SiTwoChillis.tsx new file mode 100644 index 0000000..2072f9b --- /dev/null +++ b/census/website/src/components/icons/SiTwoChillis.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiTwoChillis = (props: SVGProps) => ( + + + +); +export default SiTwoChillis; diff --git a/census/website/src/components/icons/SiTwoFingers.tsx b/census/website/src/components/icons/SiTwoFingers.tsx new file mode 100644 index 0000000..d68a762 --- /dev/null +++ b/census/website/src/components/icons/SiTwoFingers.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiTwoFingers = (props: SVGProps) => ( + + + +); +export default SiTwoFingers; diff --git a/census/website/src/components/icons/SiTwoHearts.tsx b/census/website/src/components/icons/SiTwoHearts.tsx new file mode 100644 index 0000000..543e697 --- /dev/null +++ b/census/website/src/components/icons/SiTwoHearts.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiTwoHearts = (props: SVGProps) => ( + + + +); +export default SiTwoHearts; diff --git a/census/website/src/components/icons/SiUaeDirham.tsx b/census/website/src/components/icons/SiUaeDirham.tsx new file mode 100644 index 0000000..90fe04b --- /dev/null +++ b/census/website/src/components/icons/SiUaeDirham.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiUaeDirham = (props: SVGProps) => ( + + + +); +export default SiUaeDirham; diff --git a/census/website/src/components/icons/SiUfo.tsx b/census/website/src/components/icons/SiUfo.tsx new file mode 100644 index 0000000..ab19001 --- /dev/null +++ b/census/website/src/components/icons/SiUfo.tsx @@ -0,0 +1,41 @@ +import type { SVGProps } from 'react'; +const SiUfo = (props: SVGProps) => ( + + + + + + + +); +export default SiUfo; diff --git a/census/website/src/components/icons/SiUfo2.tsx b/census/website/src/components/icons/SiUfo2.tsx new file mode 100644 index 0000000..c9fdef2 --- /dev/null +++ b/census/website/src/components/icons/SiUfo2.tsx @@ -0,0 +1,34 @@ +import type { SVGProps } from 'react'; +const SiUfo2 = (props: SVGProps) => ( + + + + + + +); +export default SiUfo2; diff --git a/census/website/src/components/icons/SiUiBottom.tsx b/census/website/src/components/icons/SiUiBottom.tsx new file mode 100644 index 0000000..9e9fb1b --- /dev/null +++ b/census/website/src/components/icons/SiUiBottom.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiUiBottom = (props: SVGProps) => ( + + + + +); +export default SiUiBottom; diff --git a/census/website/src/components/icons/SiUmbrella.tsx b/census/website/src/components/icons/SiUmbrella.tsx new file mode 100644 index 0000000..b0d1916 --- /dev/null +++ b/census/website/src/components/icons/SiUmbrella.tsx @@ -0,0 +1,35 @@ +import type { SVGProps } from 'react'; +const SiUmbrella = (props: SVGProps) => ( + + + + + + + +); +export default SiUmbrella; diff --git a/census/website/src/components/icons/SiUmbrella2.tsx b/census/website/src/components/icons/SiUmbrella2.tsx new file mode 100644 index 0000000..52d6965 --- /dev/null +++ b/census/website/src/components/icons/SiUmbrella2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiUmbrella2 = (props: SVGProps) => ( + + + +); +export default SiUmbrella2; diff --git a/census/website/src/components/icons/SiUnderline.tsx b/census/website/src/components/icons/SiUnderline.tsx new file mode 100644 index 0000000..0bc943d --- /dev/null +++ b/census/website/src/components/icons/SiUnderline.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiUnderline = (props: SVGProps) => ( + + + + +); +export default SiUnderline; diff --git a/census/website/src/components/icons/SiUndo.tsx b/census/website/src/components/icons/SiUndo.tsx new file mode 100644 index 0000000..52e1651 --- /dev/null +++ b/census/website/src/components/icons/SiUndo.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiUndo = (props: SVGProps) => ( + + + + +); +export default SiUndo; diff --git a/census/website/src/components/icons/SiUnion.tsx b/census/website/src/components/icons/SiUnion.tsx new file mode 100644 index 0000000..c689185 --- /dev/null +++ b/census/website/src/components/icons/SiUnion.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiUnion = (props: SVGProps) => ( + + + +); +export default SiUnion; diff --git a/census/website/src/components/icons/SiUnionMask.tsx b/census/website/src/components/icons/SiUnionMask.tsx new file mode 100644 index 0000000..edc709d --- /dev/null +++ b/census/website/src/components/icons/SiUnionMask.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiUnionMask = (props: SVGProps) => ( + + + +); +export default SiUnionMask; diff --git a/census/website/src/components/icons/SiUnorderedList.tsx b/census/website/src/components/icons/SiUnorderedList.tsx new file mode 100644 index 0000000..f387f3c --- /dev/null +++ b/census/website/src/components/icons/SiUnorderedList.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiUnorderedList = (props: SVGProps) => ( + + + + + + + + +); +export default SiUnorderedList; diff --git a/census/website/src/components/icons/SiUnpin.tsx b/census/website/src/components/icons/SiUnpin.tsx new file mode 100644 index 0000000..3670b7e --- /dev/null +++ b/census/website/src/components/icons/SiUnpin.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiUnpin = (props: SVGProps) => ( + + + +); +export default SiUnpin; diff --git a/census/website/src/components/icons/SiUnreadMessage.tsx b/census/website/src/components/icons/SiUnreadMessage.tsx new file mode 100644 index 0000000..8575422 --- /dev/null +++ b/census/website/src/components/icons/SiUnreadMessage.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiUnreadMessage = (props: SVGProps) => ( + + + +); +export default SiUnreadMessage; diff --git a/census/website/src/components/icons/SiUpload.tsx b/census/website/src/components/icons/SiUpload.tsx new file mode 100644 index 0000000..064f111 --- /dev/null +++ b/census/website/src/components/icons/SiUpload.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiUpload = (props: SVGProps) => ( + + + + + +); +export default SiUpload; diff --git a/census/website/src/components/icons/SiUploadCloud.tsx b/census/website/src/components/icons/SiUploadCloud.tsx new file mode 100644 index 0000000..fe98ceb --- /dev/null +++ b/census/website/src/components/icons/SiUploadCloud.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiUploadCloud = (props: SVGProps) => ( + + + + + +); +export default SiUploadCloud; diff --git a/census/website/src/components/icons/SiUpstairs.tsx b/census/website/src/components/icons/SiUpstairs.tsx new file mode 100644 index 0000000..e424bbe --- /dev/null +++ b/census/website/src/components/icons/SiUpstairs.tsx @@ -0,0 +1,21 @@ +import type { SVGProps } from 'react'; +const SiUpstairs = (props: SVGProps) => ( + + + + + +); +export default SiUpstairs; diff --git a/census/website/src/components/icons/SiUsb.tsx b/census/website/src/components/icons/SiUsb.tsx new file mode 100644 index 0000000..603974e --- /dev/null +++ b/census/website/src/components/icons/SiUsb.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiUsb = (props: SVGProps) => ( + + + + +); +export default SiUsb; diff --git a/census/website/src/components/icons/SiUser.tsx b/census/website/src/components/icons/SiUser.tsx new file mode 100644 index 0000000..6fe192b --- /dev/null +++ b/census/website/src/components/icons/SiUser.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiUser = (props: SVGProps) => ( + + + + +); +export default SiUser; diff --git a/census/website/src/components/icons/SiUserCheck.tsx b/census/website/src/components/icons/SiUserCheck.tsx new file mode 100644 index 0000000..f3a7cb6 --- /dev/null +++ b/census/website/src/components/icons/SiUserCheck.tsx @@ -0,0 +1,29 @@ +import type { SVGProps } from 'react'; +const SiUserCheck = (props: SVGProps) => ( + + + + + +); +export default SiUserCheck; diff --git a/census/website/src/components/icons/SiUserCircle.tsx b/census/website/src/components/icons/SiUserCircle.tsx new file mode 100644 index 0000000..4657f70 --- /dev/null +++ b/census/website/src/components/icons/SiUserCircle.tsx @@ -0,0 +1,18 @@ +import type { SVGProps } from 'react'; +const SiUserCircle = (props: SVGProps) => ( + + + + + +); +export default SiUserCircle; diff --git a/census/website/src/components/icons/SiUserCircleCheck.tsx b/census/website/src/components/icons/SiUserCircleCheck.tsx new file mode 100644 index 0000000..02bb1da --- /dev/null +++ b/census/website/src/components/icons/SiUserCircleCheck.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiUserCircleCheck = (props: SVGProps) => ( + + + +); +export default SiUserCircleCheck; diff --git a/census/website/src/components/icons/SiUserCircleCross.tsx b/census/website/src/components/icons/SiUserCircleCross.tsx new file mode 100644 index 0000000..570f965 --- /dev/null +++ b/census/website/src/components/icons/SiUserCircleCross.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiUserCircleCross = (props: SVGProps) => ( + + + +); +export default SiUserCircleCross; diff --git a/census/website/src/components/icons/SiUserCircleMinus.tsx b/census/website/src/components/icons/SiUserCircleMinus.tsx new file mode 100644 index 0000000..fbfe7b9 --- /dev/null +++ b/census/website/src/components/icons/SiUserCircleMinus.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiUserCircleMinus = (props: SVGProps) => ( + + + +); +export default SiUserCircleMinus; diff --git a/census/website/src/components/icons/SiUserCirclePlus.tsx b/census/website/src/components/icons/SiUserCirclePlus.tsx new file mode 100644 index 0000000..b533725 --- /dev/null +++ b/census/website/src/components/icons/SiUserCirclePlus.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiUserCirclePlus = (props: SVGProps) => ( + + + +); +export default SiUserCirclePlus; diff --git a/census/website/src/components/icons/SiUserCross.tsx b/census/website/src/components/icons/SiUserCross.tsx new file mode 100644 index 0000000..617f026 --- /dev/null +++ b/census/website/src/components/icons/SiUserCross.tsx @@ -0,0 +1,36 @@ +import type { SVGProps } from 'react'; +const SiUserCross = (props: SVGProps) => ( + + + + + + +); +export default SiUserCross; diff --git a/census/website/src/components/icons/SiUserMinus.tsx b/census/website/src/components/icons/SiUserMinus.tsx new file mode 100644 index 0000000..4900990 --- /dev/null +++ b/census/website/src/components/icons/SiUserMinus.tsx @@ -0,0 +1,23 @@ +import type { SVGProps } from 'react'; +const SiUserMinus = (props: SVGProps) => ( + + + + + +); +export default SiUserMinus; diff --git a/census/website/src/components/icons/SiUserPlus.tsx b/census/website/src/components/icons/SiUserPlus.tsx new file mode 100644 index 0000000..dbb0e0b --- /dev/null +++ b/census/website/src/components/icons/SiUserPlus.tsx @@ -0,0 +1,24 @@ +import type { SVGProps } from 'react'; +const SiUserPlus = (props: SVGProps) => ( + + + + + + +); +export default SiUserPlus; diff --git a/census/website/src/components/icons/SiUsers.tsx b/census/website/src/components/icons/SiUsers.tsx new file mode 100644 index 0000000..c7d2df1 --- /dev/null +++ b/census/website/src/components/icons/SiUsers.tsx @@ -0,0 +1,36 @@ +import type { SVGProps } from 'react'; +const SiUsers = (props: SVGProps) => ( + + + + + + +); +export default SiUsers; diff --git a/census/website/src/components/icons/SiUsersCheck.tsx b/census/website/src/components/icons/SiUsersCheck.tsx new file mode 100644 index 0000000..3dd6eab --- /dev/null +++ b/census/website/src/components/icons/SiUsersCheck.tsx @@ -0,0 +1,34 @@ +import type { SVGProps } from 'react'; +const SiUsersCheck = (props: SVGProps) => ( + + + + + + +); +export default SiUsersCheck; diff --git a/census/website/src/components/icons/SiUsersCross.tsx b/census/website/src/components/icons/SiUsersCross.tsx new file mode 100644 index 0000000..192d468 --- /dev/null +++ b/census/website/src/components/icons/SiUsersCross.tsx @@ -0,0 +1,41 @@ +import type { SVGProps } from 'react'; +const SiUsersCross = (props: SVGProps) => ( + + + + + + + +); +export default SiUsersCross; diff --git a/census/website/src/components/icons/SiUsersMinus.tsx b/census/website/src/components/icons/SiUsersMinus.tsx new file mode 100644 index 0000000..8e7b33c --- /dev/null +++ b/census/website/src/components/icons/SiUsersMinus.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiUsersMinus = (props: SVGProps) => ( + + + +); +export default SiUsersMinus; diff --git a/census/website/src/components/icons/SiUsersPlus.tsx b/census/website/src/components/icons/SiUsersPlus.tsx new file mode 100644 index 0000000..d1e3444 --- /dev/null +++ b/census/website/src/components/icons/SiUsersPlus.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiUsersPlus = (props: SVGProps) => ( + + + +); +export default SiUsersPlus; diff --git a/census/website/src/components/icons/SiVaccine.tsx b/census/website/src/components/icons/SiVaccine.tsx new file mode 100644 index 0000000..7d74eef --- /dev/null +++ b/census/website/src/components/icons/SiVaccine.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiVaccine = (props: SVGProps) => ( + + + + + +); +export default SiVaccine; diff --git a/census/website/src/components/icons/SiVanity.tsx b/census/website/src/components/icons/SiVanity.tsx new file mode 100644 index 0000000..2818c7d --- /dev/null +++ b/census/website/src/components/icons/SiVanity.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiVanity = (props: SVGProps) => ( + + + +); +export default SiVanity; diff --git a/census/website/src/components/icons/SiVase.tsx b/census/website/src/components/icons/SiVase.tsx new file mode 100644 index 0000000..4008c22 --- /dev/null +++ b/census/website/src/components/icons/SiVase.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiVase = (props: SVGProps) => ( + + + + +); +export default SiVase; diff --git a/census/website/src/components/icons/SiVegan.tsx b/census/website/src/components/icons/SiVegan.tsx new file mode 100644 index 0000000..5248d01 --- /dev/null +++ b/census/website/src/components/icons/SiVegan.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiVegan = (props: SVGProps) => ( + + + +); +export default SiVegan; diff --git a/census/website/src/components/icons/SiVerified.tsx b/census/website/src/components/icons/SiVerified.tsx new file mode 100644 index 0000000..3383bf6 --- /dev/null +++ b/census/website/src/components/icons/SiVerified.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiVerified = (props: SVGProps) => ( + + + +); +export default SiVerified; diff --git a/census/website/src/components/icons/SiVest.tsx b/census/website/src/components/icons/SiVest.tsx new file mode 100644 index 0000000..5bcec4a --- /dev/null +++ b/census/website/src/components/icons/SiVest.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiVest = (props: SVGProps) => ( + + + +); +export default SiVest; diff --git a/census/website/src/components/icons/SiVgaCable.tsx b/census/website/src/components/icons/SiVgaCable.tsx new file mode 100644 index 0000000..9504d41 --- /dev/null +++ b/census/website/src/components/icons/SiVgaCable.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiVgaCable = (props: SVGProps) => ( + + + +); +export default SiVgaCable; diff --git a/census/website/src/components/icons/SiVibrate.tsx b/census/website/src/components/icons/SiVibrate.tsx new file mode 100644 index 0000000..51a3b3b --- /dev/null +++ b/census/website/src/components/icons/SiVibrate.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiVibrate = (props: SVGProps) => ( + + + +); +export default SiVibrate; diff --git a/census/website/src/components/icons/SiViceGrip.tsx b/census/website/src/components/icons/SiViceGrip.tsx new file mode 100644 index 0000000..d7a10fe --- /dev/null +++ b/census/website/src/components/icons/SiViceGrip.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiViceGrip = (props: SVGProps) => ( + + + +); +export default SiViceGrip; diff --git a/census/website/src/components/icons/SiVideo.tsx b/census/website/src/components/icons/SiVideo.tsx new file mode 100644 index 0000000..c048dd1 --- /dev/null +++ b/census/website/src/components/icons/SiVideo.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiVideo = (props: SVGProps) => ( + + + + +); +export default SiVideo; diff --git a/census/website/src/components/icons/SiVideoCamera.tsx b/census/website/src/components/icons/SiVideoCamera.tsx new file mode 100644 index 0000000..6f35747 --- /dev/null +++ b/census/website/src/components/icons/SiVideoCamera.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiVideoCamera = (props: SVGProps) => ( + + + +); +export default SiVideoCamera; diff --git a/census/website/src/components/icons/SiVideoCamera2.tsx b/census/website/src/components/icons/SiVideoCamera2.tsx new file mode 100644 index 0000000..b03df85 --- /dev/null +++ b/census/website/src/components/icons/SiVideoCamera2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiVideoCamera2 = (props: SVGProps) => ( + + + +); +export default SiVideoCamera2; diff --git a/census/website/src/components/icons/SiVideoCameraOff.tsx b/census/website/src/components/icons/SiVideoCameraOff.tsx new file mode 100644 index 0000000..aca705e --- /dev/null +++ b/census/website/src/components/icons/SiVideoCameraOff.tsx @@ -0,0 +1,12 @@ +import type { SVGProps } from 'react'; +const SiVideoCameraOff = (props: SVGProps) => ( + + + +); +export default SiVideoCameraOff; diff --git a/census/website/src/components/icons/SiVideoCameraOff2.tsx b/census/website/src/components/icons/SiVideoCameraOff2.tsx new file mode 100644 index 0000000..9915868 --- /dev/null +++ b/census/website/src/components/icons/SiVideoCameraOff2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiVideoCameraOff2 = (props: SVGProps) => ( + + + +); +export default SiVideoCameraOff2; diff --git a/census/website/src/components/icons/SiVirgo.tsx b/census/website/src/components/icons/SiVirgo.tsx new file mode 100644 index 0000000..6b655da --- /dev/null +++ b/census/website/src/components/icons/SiVirgo.tsx @@ -0,0 +1,34 @@ +import type { SVGProps } from 'react'; +const SiVirgo = (props: SVGProps) => ( + + + + + + +); +export default SiVirgo; diff --git a/census/website/src/components/icons/SiVirus.tsx b/census/website/src/components/icons/SiVirus.tsx new file mode 100644 index 0000000..ade3458 --- /dev/null +++ b/census/website/src/components/icons/SiVirus.tsx @@ -0,0 +1,101 @@ +import type { SVGProps } from 'react'; +const SiVirus = (props: SVGProps) => ( + + + + + + + + + + + + + + + + + + + +); +export default SiVirus; diff --git a/census/website/src/components/icons/SiVoiceId.tsx b/census/website/src/components/icons/SiVoiceId.tsx new file mode 100644 index 0000000..452456d --- /dev/null +++ b/census/website/src/components/icons/SiVoiceId.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiVoiceId = (props: SVGProps) => ( + + + +); +export default SiVoiceId; diff --git a/census/website/src/components/icons/SiVoiceId2.tsx b/census/website/src/components/icons/SiVoiceId2.tsx new file mode 100644 index 0000000..893ce7e --- /dev/null +++ b/census/website/src/components/icons/SiVoiceId2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiVoiceId2 = (props: SVGProps) => ( + + + +); +export default SiVoiceId2; diff --git a/census/website/src/components/icons/SiVoicemail.tsx b/census/website/src/components/icons/SiVoicemail.tsx new file mode 100644 index 0000000..018f34d --- /dev/null +++ b/census/website/src/components/icons/SiVoicemail.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiVoicemail = (props: SVGProps) => ( + + + +); +export default SiVoicemail; diff --git a/census/website/src/components/icons/SiVolcano.tsx b/census/website/src/components/icons/SiVolcano.tsx new file mode 100644 index 0000000..3159183 --- /dev/null +++ b/census/website/src/components/icons/SiVolcano.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiVolcano = (props: SVGProps) => ( + + + + + + +); +export default SiVolcano; diff --git a/census/website/src/components/icons/SiVpn.tsx b/census/website/src/components/icons/SiVpn.tsx new file mode 100644 index 0000000..ff09ee1 --- /dev/null +++ b/census/website/src/components/icons/SiVpn.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiVpn = (props: SVGProps) => ( + + + +); +export default SiVpn; diff --git a/census/website/src/components/icons/SiVr.tsx b/census/website/src/components/icons/SiVr.tsx new file mode 100644 index 0000000..395123e --- /dev/null +++ b/census/website/src/components/icons/SiVr.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiVr = (props: SVGProps) => ( + + + + +); +export default SiVr; diff --git a/census/website/src/components/icons/SiVr2.tsx b/census/website/src/components/icons/SiVr2.tsx new file mode 100644 index 0000000..10a4df6 --- /dev/null +++ b/census/website/src/components/icons/SiVr2.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiVr2 = (props: SVGProps) => ( + + + +); +export default SiVr2; diff --git a/census/website/src/components/icons/SiWaist.tsx b/census/website/src/components/icons/SiWaist.tsx new file mode 100644 index 0000000..1023fbb --- /dev/null +++ b/census/website/src/components/icons/SiWaist.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiWaist = (props: SVGProps) => ( + + + +); +export default SiWaist; diff --git a/census/website/src/components/icons/SiWallSocketUk.tsx b/census/website/src/components/icons/SiWallSocketUk.tsx new file mode 100644 index 0000000..766f2cb --- /dev/null +++ b/census/website/src/components/icons/SiWallSocketUk.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiWallSocketUk = (props: SVGProps) => ( + + + + + + +); +export default SiWallSocketUk; diff --git a/census/website/src/components/icons/SiWallSocketUsa.tsx b/census/website/src/components/icons/SiWallSocketUsa.tsx new file mode 100644 index 0000000..a90bf60 --- /dev/null +++ b/census/website/src/components/icons/SiWallSocketUsa.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiWallSocketUsa = (props: SVGProps) => ( + + + + + + +); +export default SiWallSocketUsa; diff --git a/census/website/src/components/icons/SiWallet.tsx b/census/website/src/components/icons/SiWallet.tsx new file mode 100644 index 0000000..65e4d88 --- /dev/null +++ b/census/website/src/components/icons/SiWallet.tsx @@ -0,0 +1,26 @@ +import type { SVGProps } from 'react'; +const SiWallet = (props: SVGProps) => ( + + + + + +); +export default SiWallet; diff --git a/census/website/src/components/icons/SiWallpaper.tsx b/census/website/src/components/icons/SiWallpaper.tsx new file mode 100644 index 0000000..b0f84db --- /dev/null +++ b/census/website/src/components/icons/SiWallpaper.tsx @@ -0,0 +1,29 @@ +import type { SVGProps } from 'react'; +const SiWallpaper = (props: SVGProps) => ( + + + + + + + +); +export default SiWallpaper; diff --git a/census/website/src/components/icons/SiWand.tsx b/census/website/src/components/icons/SiWand.tsx new file mode 100644 index 0000000..55578b3 --- /dev/null +++ b/census/website/src/components/icons/SiWand.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiWand = (props: SVGProps) => ( + + + + +); +export default SiWand; diff --git a/census/website/src/components/icons/SiWarningTriangle.tsx b/census/website/src/components/icons/SiWarningTriangle.tsx new file mode 100644 index 0000000..2c2465b --- /dev/null +++ b/census/website/src/components/icons/SiWarningTriangle.tsx @@ -0,0 +1,15 @@ +import type { SVGProps } from 'react'; +const SiWarningTriangle = (props: SVGProps) => ( + + + + + +); +export default SiWarningTriangle; diff --git a/census/website/src/components/icons/SiWasher.tsx b/census/website/src/components/icons/SiWasher.tsx new file mode 100644 index 0000000..dd99ee7 --- /dev/null +++ b/census/website/src/components/icons/SiWasher.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiWasher = (props: SVGProps) => ( + + + + +); +export default SiWasher; diff --git a/census/website/src/components/icons/SiWaves.tsx b/census/website/src/components/icons/SiWaves.tsx new file mode 100644 index 0000000..9804c0f --- /dev/null +++ b/census/website/src/components/icons/SiWaves.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiWaves = (props: SVGProps) => ( + + + +); +export default SiWaves; diff --git a/census/website/src/components/icons/SiWeed.tsx b/census/website/src/components/icons/SiWeed.tsx new file mode 100644 index 0000000..8cdbd38 --- /dev/null +++ b/census/website/src/components/icons/SiWeed.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiWeed = (props: SVGProps) => ( + + + +); +export default SiWeed; diff --git a/census/website/src/components/icons/SiWest.tsx b/census/website/src/components/icons/SiWest.tsx new file mode 100644 index 0000000..0803b58 --- /dev/null +++ b/census/website/src/components/icons/SiWest.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiWest = (props: SVGProps) => ( + + + + +); +export default SiWest; diff --git a/census/website/src/components/icons/SiWheat.tsx b/census/website/src/components/icons/SiWheat.tsx new file mode 100644 index 0000000..4de5005 --- /dev/null +++ b/census/website/src/components/icons/SiWheat.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiWheat = (props: SVGProps) => ( + + + +); +export default SiWheat; diff --git a/census/website/src/components/icons/SiWheel.tsx b/census/website/src/components/icons/SiWheel.tsx new file mode 100644 index 0000000..e640f5a --- /dev/null +++ b/census/website/src/components/icons/SiWheel.tsx @@ -0,0 +1,26 @@ +import type { SVGProps } from 'react'; +const SiWheel = (props: SVGProps) => ( + + + + + + + + + + +); +export default SiWheel; diff --git a/census/website/src/components/icons/SiWhistle.tsx b/census/website/src/components/icons/SiWhistle.tsx new file mode 100644 index 0000000..242e4ec --- /dev/null +++ b/census/website/src/components/icons/SiWhistle.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiWhistle = (props: SVGProps) => ( + + + +); +export default SiWhistle; diff --git a/census/website/src/components/icons/SiWidth.tsx b/census/website/src/components/icons/SiWidth.tsx new file mode 100644 index 0000000..425b517 --- /dev/null +++ b/census/website/src/components/icons/SiWidth.tsx @@ -0,0 +1,22 @@ +import type { SVGProps } from 'react'; +const SiWidth = (props: SVGProps) => ( + + + + + + +); +export default SiWidth; diff --git a/census/website/src/components/icons/SiWifi.tsx b/census/website/src/components/icons/SiWifi.tsx new file mode 100644 index 0000000..67696a2 --- /dev/null +++ b/census/website/src/components/icons/SiWifi.tsx @@ -0,0 +1,28 @@ +import type { SVGProps } from 'react'; +const SiWifi = (props: SVGProps) => ( + + + + + + +); +export default SiWifi; diff --git a/census/website/src/components/icons/SiWifiHigh.tsx b/census/website/src/components/icons/SiWifiHigh.tsx new file mode 100644 index 0000000..06ba578 --- /dev/null +++ b/census/website/src/components/icons/SiWifiHigh.tsx @@ -0,0 +1,18 @@ +import type { SVGProps } from 'react'; +const SiWifiHigh = (props: SVGProps) => ( + + + + + +); +export default SiWifiHigh; diff --git a/census/website/src/components/icons/SiWifiLow.tsx b/census/website/src/components/icons/SiWifiLow.tsx new file mode 100644 index 0000000..3b7ccc4 --- /dev/null +++ b/census/website/src/components/icons/SiWifiLow.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiWifiLow = (props: SVGProps) => ( + + + +); +export default SiWifiLow; diff --git a/census/website/src/components/icons/SiWifiMedium.tsx b/census/website/src/components/icons/SiWifiMedium.tsx new file mode 100644 index 0000000..453a147 --- /dev/null +++ b/census/website/src/components/icons/SiWifiMedium.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiWifiMedium = (props: SVGProps) => ( + + + + +); +export default SiWifiMedium; diff --git a/census/website/src/components/icons/SiWifiNoConnection.tsx b/census/website/src/components/icons/SiWifiNoConnection.tsx new file mode 100644 index 0000000..a2d2f88 --- /dev/null +++ b/census/website/src/components/icons/SiWifiNoConnection.tsx @@ -0,0 +1,35 @@ +import type { SVGProps } from 'react'; +const SiWifiNoConnection = (props: SVGProps) => ( + + + + + + + +); +export default SiWifiNoConnection; diff --git a/census/website/src/components/icons/SiWind.tsx b/census/website/src/components/icons/SiWind.tsx new file mode 100644 index 0000000..d295170 --- /dev/null +++ b/census/website/src/components/icons/SiWind.tsx @@ -0,0 +1,24 @@ +import type { SVGProps } from 'react'; +const SiWind = (props: SVGProps) => ( + + + + + + + + +); +export default SiWind; diff --git a/census/website/src/components/icons/SiWindPower.tsx b/census/website/src/components/icons/SiWindPower.tsx new file mode 100644 index 0000000..8e7ce2e --- /dev/null +++ b/census/website/src/components/icons/SiWindPower.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiWindPower = (props: SVGProps) => ( + + + + +); +export default SiWindPower; diff --git a/census/website/src/components/icons/SiWindowCross.tsx b/census/website/src/components/icons/SiWindowCross.tsx new file mode 100644 index 0000000..42eef8e --- /dev/null +++ b/census/website/src/components/icons/SiWindowCross.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiWindowCross = (props: SVGProps) => ( + + + +); +export default SiWindowCross; diff --git a/census/website/src/components/icons/SiWindowError.tsx b/census/website/src/components/icons/SiWindowError.tsx new file mode 100644 index 0000000..b432a7c --- /dev/null +++ b/census/website/src/components/icons/SiWindowError.tsx @@ -0,0 +1,12 @@ +import type { SVGProps } from 'react'; +const SiWindowError = (props: SVGProps) => ( + + + +); +export default SiWindowError; diff --git a/census/website/src/components/icons/SiWindowExpand.tsx b/census/website/src/components/icons/SiWindowExpand.tsx new file mode 100644 index 0000000..b506aa7 --- /dev/null +++ b/census/website/src/components/icons/SiWindowExpand.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiWindowExpand = (props: SVGProps) => ( + + + +); +export default SiWindowExpand; diff --git a/census/website/src/components/icons/SiWindowLock.tsx b/census/website/src/components/icons/SiWindowLock.tsx new file mode 100644 index 0000000..967b2b4 --- /dev/null +++ b/census/website/src/components/icons/SiWindowLock.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiWindowLock = (props: SVGProps) => ( + + + +); +export default SiWindowLock; diff --git a/census/website/src/components/icons/SiWindowMinimise.tsx b/census/website/src/components/icons/SiWindowMinimise.tsx new file mode 100644 index 0000000..358101b --- /dev/null +++ b/census/website/src/components/icons/SiWindowMinimise.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiWindowMinimise = (props: SVGProps) => ( + + + +); +export default SiWindowMinimise; diff --git a/census/website/src/components/icons/SiWindows.tsx b/census/website/src/components/icons/SiWindows.tsx new file mode 100644 index 0000000..492b16c --- /dev/null +++ b/census/website/src/components/icons/SiWindows.tsx @@ -0,0 +1,15 @@ +import type { SVGProps } from 'react'; +const SiWindows = (props: SVGProps) => ( + + + + + +); +export default SiWindows; diff --git a/census/website/src/components/icons/SiWine.tsx b/census/website/src/components/icons/SiWine.tsx new file mode 100644 index 0000000..7026fd4 --- /dev/null +++ b/census/website/src/components/icons/SiWine.tsx @@ -0,0 +1,16 @@ +import type { SVGProps } from 'react'; +const SiWine = (props: SVGProps) => ( + + + + + + +); +export default SiWine; diff --git a/census/website/src/components/icons/SiWink.tsx b/census/website/src/components/icons/SiWink.tsx new file mode 100644 index 0000000..851f095 --- /dev/null +++ b/census/website/src/components/icons/SiWink.tsx @@ -0,0 +1,31 @@ +import type { SVGProps } from 'react'; +const SiWink = (props: SVGProps) => ( + + + + + + +); +export default SiWink; diff --git a/census/website/src/components/icons/SiWiper.tsx b/census/website/src/components/icons/SiWiper.tsx new file mode 100644 index 0000000..e141318 --- /dev/null +++ b/census/website/src/components/icons/SiWiper.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiWiper = (props: SVGProps) => ( + + + +); +export default SiWiper; diff --git a/census/website/src/components/icons/SiWirelessHeadphones.tsx b/census/website/src/components/icons/SiWirelessHeadphones.tsx new file mode 100644 index 0000000..5ab8697 --- /dev/null +++ b/census/website/src/components/icons/SiWirelessHeadphones.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiWirelessHeadphones = (props: SVGProps) => ( + + + +); +export default SiWirelessHeadphones; diff --git a/census/website/src/components/icons/SiWishList.tsx b/census/website/src/components/icons/SiWishList.tsx new file mode 100644 index 0000000..758f3fc --- /dev/null +++ b/census/website/src/components/icons/SiWishList.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiWishList = (props: SVGProps) => ( + + + +); +export default SiWishList; diff --git a/census/website/src/components/icons/SiWorld.tsx b/census/website/src/components/icons/SiWorld.tsx new file mode 100644 index 0000000..3a22364 --- /dev/null +++ b/census/website/src/components/icons/SiWorld.tsx @@ -0,0 +1,27 @@ +import type { SVGProps } from 'react'; +const SiWorld = (props: SVGProps) => ( + + + + + +); +export default SiWorld; diff --git a/census/website/src/components/icons/SiWrapText.tsx b/census/website/src/components/icons/SiWrapText.tsx new file mode 100644 index 0000000..b923432 --- /dev/null +++ b/census/website/src/components/icons/SiWrapText.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiWrapText = (props: SVGProps) => ( + + + +); +export default SiWrapText; diff --git a/census/website/src/components/icons/SiWrench.tsx b/census/website/src/components/icons/SiWrench.tsx new file mode 100644 index 0000000..891462c --- /dev/null +++ b/census/website/src/components/icons/SiWrench.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiWrench = (props: SVGProps) => ( + + + +); +export default SiWrench; diff --git a/census/website/src/components/icons/SiWrench2.tsx b/census/website/src/components/icons/SiWrench2.tsx new file mode 100644 index 0000000..06b11ac --- /dev/null +++ b/census/website/src/components/icons/SiWrench2.tsx @@ -0,0 +1,10 @@ +import type { SVGProps } from 'react'; +const SiWrench2 = (props: SVGProps) => ( + + + +); +export default SiWrench2; diff --git a/census/website/src/components/icons/SiWriteNote.tsx b/census/website/src/components/icons/SiWriteNote.tsx new file mode 100644 index 0000000..8f04de2 --- /dev/null +++ b/census/website/src/components/icons/SiWriteNote.tsx @@ -0,0 +1,20 @@ +import type { SVGProps } from 'react'; +const SiWriteNote = (props: SVGProps) => ( + + + + + + + +); +export default SiWriteNote; diff --git a/census/website/src/components/icons/SiWww.tsx b/census/website/src/components/icons/SiWww.tsx new file mode 100644 index 0000000..267e779 --- /dev/null +++ b/census/website/src/components/icons/SiWww.tsx @@ -0,0 +1,13 @@ +import type { SVGProps } from 'react'; +const SiWww = (props: SVGProps) => ( + + + +); +export default SiWww; diff --git a/census/website/src/components/icons/SiXAxis.tsx b/census/website/src/components/icons/SiXAxis.tsx new file mode 100644 index 0000000..3300618 --- /dev/null +++ b/census/website/src/components/icons/SiXAxis.tsx @@ -0,0 +1,17 @@ +import type { SVGProps } from 'react'; +const SiXAxis = (props: SVGProps) => ( + + + + + + + +); +export default SiXAxis; diff --git a/census/website/src/components/icons/SiXls.tsx b/census/website/src/components/icons/SiXls.tsx new file mode 100644 index 0000000..3e45194 --- /dev/null +++ b/census/website/src/components/icons/SiXls.tsx @@ -0,0 +1,34 @@ +import type { SVGProps } from 'react'; +const SiXls = (props: SVGProps) => ( + + + + + + +); +export default SiXls; diff --git a/census/website/src/components/icons/SiYAxis.tsx b/census/website/src/components/icons/SiYAxis.tsx new file mode 100644 index 0000000..e727135 --- /dev/null +++ b/census/website/src/components/icons/SiYAxis.tsx @@ -0,0 +1,41 @@ +import type { SVGProps } from 'react'; +const SiYAxis = (props: SVGProps) => ( + + + + + + + +); +export default SiYAxis; diff --git a/census/website/src/components/icons/SiYen.tsx b/census/website/src/components/icons/SiYen.tsx new file mode 100644 index 0000000..7ed6a10 --- /dev/null +++ b/census/website/src/components/icons/SiYen.tsx @@ -0,0 +1,14 @@ +import type { SVGProps } from 'react'; +const SiYen = (props: SVGProps) => ( + + + + +); +export default SiYen; diff --git a/census/website/src/components/icons/SiYinYang.tsx b/census/website/src/components/icons/SiYinYang.tsx new file mode 100644 index 0000000..8c26a90 --- /dev/null +++ b/census/website/src/components/icons/SiYinYang.tsx @@ -0,0 +1,29 @@ +import type { SVGProps } from 'react'; +const SiYinYang = (props: SVGProps) => ( + + + + + + +); +export default SiYinYang; diff --git a/census/website/src/components/icons/SiZipFile.tsx b/census/website/src/components/icons/SiZipFile.tsx new file mode 100644 index 0000000..c133064 --- /dev/null +++ b/census/website/src/components/icons/SiZipFile.tsx @@ -0,0 +1,17 @@ +import type { SVGProps } from 'react'; +const SiZipFile = (props: SVGProps) => ( + + + + + + + +); +export default SiZipFile; diff --git a/census/website/src/components/icons/SiZipFile2.tsx b/census/website/src/components/icons/SiZipFile2.tsx new file mode 100644 index 0000000..0f60b2a --- /dev/null +++ b/census/website/src/components/icons/SiZipFile2.tsx @@ -0,0 +1,37 @@ +import type { SVGProps } from 'react'; +const SiZipFile2 = (props: SVGProps) => ( + + + + + + + +); +export default SiZipFile2; diff --git a/census/website/src/components/icons/SiZoomIn.tsx b/census/website/src/components/icons/SiZoomIn.tsx new file mode 100644 index 0000000..1395002 --- /dev/null +++ b/census/website/src/components/icons/SiZoomIn.tsx @@ -0,0 +1,24 @@ +import type { SVGProps } from 'react'; +const SiZoomIn = (props: SVGProps) => ( + + + + + + +); +export default SiZoomIn; diff --git a/census/website/src/components/icons/SiZoomOut.tsx b/census/website/src/components/icons/SiZoomOut.tsx new file mode 100644 index 0000000..839843d --- /dev/null +++ b/census/website/src/components/icons/SiZoomOut.tsx @@ -0,0 +1,23 @@ +import type { SVGProps } from 'react'; +const SiZoomOut = (props: SVGProps) => ( + + + + + +); +export default SiZoomOut; diff --git a/census/website/src/components/icons/_README.md b/census/website/src/components/icons/_README.md new file mode 100644 index 0000000..4fcbb79 --- /dev/null +++ b/census/website/src/components/icons/_README.md @@ -0,0 +1,9 @@ +This is a custom, not open source icon set that should be the preferred icon set for projects. +To see all of the icons and search for specific ones see here: https://iconic.app + +## How to use + +1. Go to https://iconic.app and search for the icon you want +2. Note the name of the icon, e.g. `a-z-sort` or `battery-charging`. +3. Import the icon from this folder into your component, e.g. `import SiAZSort from '@/icons/SiYen';` or `import SiBatteryCharging from '@/icons/SiBatteryCharging';` +4. Use the icon in your component, e.g. `` or ``. It's just a svg component under the hood so you can control it in anyway you would any other svg component. I recommend changing the size of the icon by using font-size, e.g. ``. This means it'll be more consistent with the rest of the app and you can change the size of all icons at once by changing the font-size of the parent element. diff --git a/census/website/src/components/inputs/SelectionInput.tsx b/census/website/src/components/inputs/SelectionInput.tsx new file mode 100644 index 0000000..52cef01 --- /dev/null +++ b/census/website/src/components/inputs/SelectionInput.tsx @@ -0,0 +1,322 @@ +import type { BoundingBox, Selection } from '@/services/video/CaptureEditorProvider'; +import { getColorForId } from '@/services/video/utils'; +import { cn } from '@/utils/cn'; +import { AnimatePresence, motion } from 'framer-motion'; +import { ComponentProps, FC, forwardRef, HTMLAttributes, useEffect, useRef } from 'react'; +import { Corner } from '../assets/icons/Corner'; +import { Trash } from '../assets/icons/Trash'; + +interface SelectionInputProps { + currentSubjectId: number; +} + +interface WorkingCopy { + origin: { + canvas: { + x: number; + y: number; + }; + inner?: { + x: number; + y: number; + }; + }; + state: 'drawing' | 'editing'; +} + +type SelectionWorkingCopy = WorkingCopy & Selection; + +export interface InputProps { + onChange: (value: T) => void; + value: T; +} + +export const SelectionInput: FC< + SelectionInputProps & InputProps & Omit, 'onChange'> +> = ({ currentSubjectId, onChange, value, className, ...props }) => { + const pending = useRef(null); + const pendingBoxRef = useRef(null); + + const containerRef = useRef(null); + + useEffect(() => { + const node = containerRef.current; + if (!node) return; + + const abortController = new AbortController(); + + node.addEventListener('contextmenu', e => { + if (!pending.current || !pendingBoxRef.current) return; + + pendingBoxRef.current.style.opacity = '0'; + pending.current = null; + applyBoundingBoxToElement(pendingBoxRef.current); + + e.stopPropagation(); + e.preventDefault(); + }); + + node.addEventListener( + 'mousedown', + e => { + if (pending.current) { + return; + } + const rect = node.getBoundingClientRect(); + // Boxes are normalised to be 0-1 for all dimensions + const origin = { + x: (e.clientX - rect.left) / rect.width, + y: (e.clientY - rect.top) / rect.height + }; + + try { + pending.current = { + subjectId: currentSubjectId, + boundingBox: { + id: crypto.randomUUID(), + x: origin.x, + y: origin.y, + width: 0, + height: 0 + }, + origin: { + canvas: origin + }, + state: 'drawing' + }; + } finally { + if (!pending.current || !pendingBoxRef.current) return; + pendingBoxRef.current!.style.opacity = '1'; + applyBoundingBoxToElement(pendingBoxRef.current, pending.current.boundingBox); + e.stopPropagation(); + e.preventDefault(); + } + }, + { signal: abortController.signal } + ); + + node.addEventListener( + 'mousemove', + e => { + const box = pending.current; + if (!box) return; + + const rect = node.getBoundingClientRect(); + try { + const point = { + x: Math.min(1, Math.max(0, (e.clientX - rect.left) / rect.width)), + y: Math.min(1, Math.max(0, (e.clientY - rect.top) / rect.height)) + }; + + if (box.origin.inner && box.state === 'editing') { + // If it was grabbed from the inside, then we want to update the position. + pending.current = updateBoxPositionFromMousePosition(box, point.x, point.y); + return; + } + + // Otherwise, we are in resize mode. + pending.current = updateBoxSizeFromMousePosition(box, point.x, point.y); + } finally { + if (!pending.current || !pendingBoxRef.current) return; + applyBoundingBoxToElement(pendingBoxRef.current, pending.current.boundingBox); + } + }, + { signal: abortController.signal } + ); + node.addEventListener( + 'mouseup', + () => { + try { + if (!pending.current) return; + if (pending.current.boundingBox.width < 0.05 || pending.current.boundingBox.height < 0.05) { + // If the box is too small, we should remove it. + return; + } + + if (!value) return [pending.current!]; + onChange([...value.filter(box => box.boundingBox.id !== pending.current?.boundingBox.id), pending.current]); + } finally { + if (!pending.current || !pendingBoxRef.current) return; + const clickedBoxElement = node.querySelector(`[data-id="${pending.current.boundingBox.id}"]`); + if (clickedBoxElement) { + clickedBoxElement.style.opacity = '1'; + } + pendingBoxRef.current!.style.opacity = '0'; + pending.current = null; + applyBoundingBoxToElement(pendingBoxRef.current); + } + }, + { signal: abortController.signal } + ); + + return () => abortController.abort(); + }, [onChange, value]); + + return ( + <> +
+ {value.map(box => ( + + { + e.stopPropagation(); + e.preventDefault(); + }} + > + + + + ))} +
+
+ +
+ + ); +}; + +const getStyleForBox = (box: BoundingBox) => { + return { + left: `${box.x * 100}%`, + top: `${box.y * 100}%`, + width: `${box.width * 100}%`, + height: `${box.height * 100}%` + }; +}; + +const applyBoundingBoxToElement = (element: HTMLDivElement, box?: BoundingBox) => { + if (!box) { + const reset = getStyleForBox({ id: 'empty', x: 0, y: 0, width: 0, height: 0 }); + Object.assign(element.style, reset); + return; + } + const style = getStyleForBox(box); + Object.assign(element.style, style); +}; + +const updateBoxPositionFromMousePosition = ( + selection: SelectionWorkingCopy, + x: number, + y: number +): SelectionWorkingCopy => { + if (!selection.origin.inner) { + throw new Error('Box origin inner is undefined'); + } + return { + ...selection, + boundingBox: { + ...selection.boundingBox, + x: Math.min(1 - selection.boundingBox.width, Math.max(0, x - selection.origin.inner.x)), + y: Math.min(1 - selection.boundingBox.height, Math.max(0, y - selection.origin.inner.y)) + } + }; +}; + +const updateBoxSizeFromMousePosition = ( + selection: SelectionWorkingCopy, + x: number, + y: number +): SelectionWorkingCopy => { + const newX = Math.min(selection.origin.canvas.x, x); + const newY = Math.min(selection.origin.canvas.y, y); + + const newWidth = Math.min(1, Math.max(0, Math.abs(x - selection.origin.canvas.x))); + const newHeight = Math.min(1, Math.max(0, Math.abs(y - selection.origin.canvas.y))); + + return { + ...selection, + boundingBox: { + ...selection.boundingBox, + x: newX, + y: newY, + width: newWidth, + height: newHeight + } + }; +}; + +interface BoundingBoxProps extends HTMLAttributes { + offset?: number; +} +const BoundingBox = forwardRef( + ({ children, className, offset = 6, ...props }, ref) => { + return ( +
+ {children} + + + + + + + + + + + + +
+ ); + } +); + +interface BoundingBoxViewProps extends HTMLAttributes { + boxes: Selection[]; +} + +export const BoundingBoxView: FC = ({ boxes, className, ...props }) => { + return ( +
+ + {boxes.map(box => ( + + ))} + +
+ ); +}; diff --git a/census/website/src/components/layout/LayoutProvider.tsx b/census/website/src/components/layout/LayoutProvider.tsx new file mode 100644 index 0000000..622974b --- /dev/null +++ b/census/website/src/components/layout/LayoutProvider.tsx @@ -0,0 +1,32 @@ +import { createContext, Dispatch, FC, PropsWithChildren, SetStateAction, useContext, useMemo, useState } from 'react'; + +interface LayoutStore { + sidebar: [boolean, Dispatch>]; + achievements: [boolean, Dispatch>]; +} +const LayoutContext = createContext(null); + +export const LayoutProvider: FC = ({ children }) => { + const sidebar = useState(false); + const achievements = useState(false); + const context = useMemo(() => ({ sidebar, achievements }), [sidebar, achievements]); + return {children}; +}; + +export const useLayout = () => { + const context = useContext(LayoutContext); + if (!context) { + throw new Error('useLayout must be used within a LayoutProvider'); + } + return context; +}; + +export const useSidebar = () => { + const { sidebar } = useLayout(); + return sidebar; +}; + +export const useAchievements = () => { + const { achievements } = useLayout(); + return achievements; +}; diff --git a/census/website/src/components/modal/Dialog.tsx b/census/website/src/components/modal/Dialog.tsx new file mode 100644 index 0000000..d45a2f6 --- /dev/null +++ b/census/website/src/components/modal/Dialog.tsx @@ -0,0 +1,97 @@ +'use client'; + +import * as DialogPrimitive from '@radix-ui/react-dialog'; +import { Cross2Icon } from '@radix-ui/react-icons'; +import * as React from 'react'; + +import { cn } from '@/utils/cn'; + +const Dialog = DialogPrimitive.Root; + +const DialogTrigger = DialogPrimitive.Trigger; + +const DialogPortal = DialogPrimitive.Portal; + +const DialogClose = DialogPrimitive.Close; + +const DialogOverlay = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +DialogOverlay.displayName = DialogPrimitive.Overlay.displayName; + +const DialogContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + + + {children} + + + Close + + + +)); +DialogContent.displayName = DialogPrimitive.Content.displayName; + +const DialogHeader = ({ className, ...props }: React.HTMLAttributes) => ( +
+); +DialogHeader.displayName = 'DialogHeader'; + +const DialogFooter = ({ className, ...props }: React.HTMLAttributes) => ( +
+); +DialogFooter.displayName = 'DialogFooter'; + +const DialogTitle = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +DialogTitle.displayName = DialogPrimitive.Title.displayName; + +const DialogDescription = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +DialogDescription.displayName = DialogPrimitive.Description.displayName; + +export { + Dialog, + DialogClose, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogOverlay, + DialogPortal, + DialogTitle, + DialogTrigger +}; diff --git a/census/website/src/components/modal/Modal.tsx b/census/website/src/components/modal/Modal.tsx new file mode 100644 index 0000000..8693b7d --- /dev/null +++ b/census/website/src/components/modal/Modal.tsx @@ -0,0 +1,32 @@ +import { cn } from '@/utils/cn'; +import * as DialogPrimitive from '@radix-ui/react-dialog'; +import { ComponentPropsWithoutRef, FC } from 'react'; +import { Dialog, DialogContent, DialogOverlay, DialogPortal } from './Dialog'; + +import { ModalProps } from './useModal'; + +type ModalComponentProps = ModalProps & ComponentPropsWithoutRef; + +export const Modal: FC = ({ children, className, close, isOpen, ...props }) => { + return ( + { + if (!state) close(); + }} + > + + + + {children} + + + + ); +}; diff --git a/census/website/src/components/modal/useModal.ts b/census/website/src/components/modal/useModal.ts new file mode 100644 index 0000000..b9907db --- /dev/null +++ b/census/website/src/components/modal/useModal.ts @@ -0,0 +1,31 @@ +import { useState } from 'react'; + +export interface ModalProps { + isOpen: boolean; + open: (props?: T) => void; + close: () => void; + toggle: (props?: T) => void; + props?: T; +} + +export function useModal(initial: boolean = false): ModalProps { + const [props, setProps] = useState(); + const [isOpen, setIsOpen] = useState(!!props || initial); + + const open = (props?: T) => { + if (props) setProps(props); + setIsOpen(true); + }; + + const close = () => { + setProps(undefined as unknown as T); + setIsOpen(false); + }; + + const toggle = (props?: T) => { + if (isOpen) close(); + else open(props); + }; + + return { isOpen, open, close, toggle, props }; +} diff --git a/census/website/src/components/points/PointDestination.tsx b/census/website/src/components/points/PointDestination.tsx new file mode 100644 index 0000000..55f1cf1 --- /dev/null +++ b/census/website/src/components/points/PointDestination.tsx @@ -0,0 +1,28 @@ +import { useActions } from '@/services/points/PointsProvider'; +import { cn } from '@/utils/cn'; +import { motion } from 'framer-motion'; + +export const PointDestination = () => { + const actions = useActions(); + + return ( +
+ {actions.map(action => ( + +

+ + + {action.value} +

+
+ ))} +
+ ); +}; diff --git a/census/website/src/components/points/PointOrigin.tsx b/census/website/src/components/points/PointOrigin.tsx new file mode 100644 index 0000000..c016dee --- /dev/null +++ b/census/website/src/components/points/PointOrigin.tsx @@ -0,0 +1,36 @@ +import { cn } from '@/utils/cn'; +import { motion } from 'framer-motion'; +import { FC, PropsWithChildren, RefObject } from 'react'; + +export interface PointOriginProps { + id: string; + bubbleRef: RefObject; + textRef: RefObject; +} + +export const PointOrigin: FC> = ({ children, id, bubbleRef, textRef }) => { + return ( +
+ {children} +
+ +

+ + + 0 +

+
+
+
+ ); +}; diff --git a/census/website/src/components/points/hooks.ts b/census/website/src/components/points/hooks.ts new file mode 100644 index 0000000..e917735 --- /dev/null +++ b/census/website/src/components/points/hooks.ts @@ -0,0 +1,44 @@ +import { sleep } from '@/lib/animate'; +import { useBankPoints } from '@/services/points/PointsProvider'; +import { animate } from 'framer-motion'; +import { useCallback, useMemo, useRef, useState } from 'react'; + +export const usePointAction = () => { + const bankPoints = useBankPoints(); + const [id] = useState(() => crypto.randomUUID()); + const textRef = useRef(null); + const bubbleRef = useRef(null); + const exhaustedRef = useRef(false); + + const add = useCallback( + async (value: number) => { + if (!bubbleRef.current) throw new Error('bubble ref is not set'); + if (exhaustedRef.current) return; + exhaustedRef.current = true; + + await animate(bubbleRef.current, { opacity: 0, top: -15, scale: 0.5 }); + await animate(bubbleRef.current, { opacity: 1, top: -30, scale: 1 }); + await Promise.all([ + animate(0, value, { + duration: 1, + onUpdate(value) { + if (!textRef.current) return; + textRef.current.textContent = Math.round(value).toString(); + } + }), + animate(bubbleRef.current, { scale: 1.3 }, { duration: 1 }) + ]); + + await animate(bubbleRef.current, { scale: 0.9 }, { duration: 0.1 }); + await animate(bubbleRef.current, { scale: 1 }, { duration: 0.1 }); + + await sleep(200); + bankPoints(id, value); + await sleep(100); + bubbleRef.current?.remove(); + }, + [id, animate, bubbleRef, textRef, bankPoints] + ); + + return useMemo(() => ({ add, id, bubbleRef, textRef }), [add, id, bubbleRef, textRef]); +}; diff --git a/census/website/src/index.css b/census/website/src/index.css index 230eb21..b0b5c74 100644 --- a/census/website/src/index.css +++ b/census/website/src/index.css @@ -1,5 +1,5 @@ @import url('https://fonts.googleapis.com/css2?family=Nunito:wght@400;500;600;700;800;&display=swap'); - +@import url('https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;500;600;700;&display=swap'); @tailwind base; @tailwind components; @tailwind utilities; @@ -9,13 +9,13 @@ html { } :root { - --accent-color-50: 254 251 236; - --accent-color-100: 253 242 200; - --accent-color-200: 250 229 141; - --accent-color-300: 247 207 70; - --accent-color-400: 245 191 42; - --accent-color-500: 239 158 17; - --accent-color-600: 212 121 11; + --accent-color-50: 255 254 245; + --accent-color-100: 253 251 237; + --accent-color-200: 249 242 215; + --accent-color-300: 247 229 188; + --accent-color-400: 247 207 70; + --accent-color-500: 245 191 42; + --accent-color-600: 239 158 17; --accent-color-700: 176 85 13; --accent-color-800: 143 66 17; --accent-color-900: 120 55 12; diff --git a/census/website/src/layouts/Breadcrumbs.tsx b/census/website/src/layouts/Breadcrumbs.tsx new file mode 100644 index 0000000..a296683 --- /dev/null +++ b/census/website/src/layouts/Breadcrumbs.tsx @@ -0,0 +1,40 @@ +import * as Portal from '@radix-ui/react-portal'; +import { useSuspenseQuery } from '@tanstack/react-query'; +import { FC, PropsWithChildren } from 'react'; + +const id = 'breadcrumbs'; +export const Breadcrumbs: FC = ({ children }) => { + /* + I know this looks and works in a crazy way, but I really wanted + to hoist the breadcrumbs up to the header from anywhere for better UX & DX. + + Portals make this easy, but they require a container and on the first render + the breadcrumbs don't exist, so we have to wait until they do. This takes such + a small amount of time in practice but it could add a flash if it wasn't for + suspense. + */ + const element = useSuspenseQuery({ + queryKey: [id], + queryFn: async () => { + const element = document.getElementById(id); + if (element) return element; + + return new Promise(resolve => { + const interval = setInterval(() => { + const element = document.getElementById(id); + if (element) { + resolve(element); + clearInterval(interval); + } + }, 10); + }); + }, + staleTime: Infinity + }); + + return ( + + {children} + + ); +}; diff --git a/census/website/src/layouts/Header.tsx b/census/website/src/layouts/Header.tsx new file mode 100644 index 0000000..cfef597 --- /dev/null +++ b/census/website/src/layouts/Header.tsx @@ -0,0 +1,25 @@ +import { Button } from '@/components/controls/button/juicy'; +import SiTwitch from '@/components/icons/SiTwitch'; +import { useModal } from '@/components/modal/useModal'; +import { CreateFromClipModal } from '@/pages/captures/create/CreateFromClipModal'; +import { MenuTrigger } from './sidebars/Menu'; + +export const Header = () => { + const createFromClipModalProps = useModal(); + + return ( +
+ +
+ + +
+
+ +
+
+ ); +}; diff --git a/census/website/src/layouts/Main.tsx b/census/website/src/layouts/Main.tsx index fc946d2..5bd9d87 100644 --- a/census/website/src/layouts/Main.tsx +++ b/census/website/src/layouts/Main.tsx @@ -1,85 +1,31 @@ -import { Button, Link } from '@/components/button/paper'; - -import { Binoculars } from '../components/assets/icons/Binoculars'; -import { Picture } from '../components/assets/icons/Picture'; - -import { SignOut } from '../components/assets/icons/SignOut'; -import { CritterCaptureClubLogo } from '../components/assets/logos/CritterCaptureClubLogo'; - -import { Menu, MenuItem } from '../components/menu/Menu'; - -import { Docs } from '@/components/assets/icons/Docs'; -import { Wordmark } from '@/components/assets/logos/Wordmark'; -import { Loading } from '@/components/loaders/Loading'; -import { Variables } from '@/services/backstage/config'; -import { usePermissions } from '@/services/permissions/hooks'; -import { useVariable } from '@alveusgg/backstage'; +import { LayoutProvider } from '@/components/layout/LayoutProvider'; +import { PointsProvider } from '@/services/points/PointsProvider'; +import { AnimatePresence } from 'framer-motion'; import { Suspense } from 'react'; import { Outlet } from 'react-router'; +import { Header } from './Header'; +import { Achievements } from './sidebars/Achivements'; +import { Menu } from './sidebars/Menu'; export const Main = () => { - const { editor } = usePermissions(); - const docsUrl = useVariable('docsUrl'); return ( -
- {!editor && ( -
-
- -
- - - Sign out - -
-
-
- )} -
- {editor && ( - - - - - - - - - - - - - - Pending screenshots - - -
- {docsUrl && ( - - - - Documentation - - - )} - - - - Sign out - - -
- )} - }> - - -
-
+ + +
+ +
+
+ +
+ +
+
+
+ + + +
+
+
); }; diff --git a/census/website/src/layouts/sidebars/Achivements.tsx b/census/website/src/layouts/sidebars/Achivements.tsx new file mode 100644 index 0000000..cf5bf94 --- /dev/null +++ b/census/website/src/layouts/sidebars/Achivements.tsx @@ -0,0 +1,158 @@ +import { Counter } from '@/components/animation/Counter'; +import { Button } from '@/components/controls/button/juicy'; +import { useAchievements } from '@/components/layout/LayoutProvider'; +import { usePointAction } from '@/components/points/hooks'; +import { PointDestination } from '@/components/points/PointDestination'; +import { PointOrigin } from '@/components/points/PointOrigin'; +import { + usePatchAchievement, + usePendingAchievements, + usePoints, + useRedeemAchievement, + useRedeemAllAchievements +} from '@/services/api/me'; +import { cn } from '@/utils/cn'; +import { AnimatePresence, HTMLMotionProps, motion, useAnimate } from 'framer-motion'; +import { FC, PropsWithChildren, useRef } from 'react'; + +export const Achievements = () => { + const [open, setOpen] = useAchievements(); + const points = usePoints(); + const pending = usePendingAchievements(); + + const redeemAll = useRedeemAllAchievements(); + + return ( + +
+ +
+ +
+ + {points.data} + +
+
+
+ {pending.data.length > 0 && ( +
+

achievements

+ + +
+ )} + + {pending.data.length > 0 ? ( + pending.data.map(achievement => ( + +
+

{'Red Paper Wasp'}

+ {achievement.points} pts +
+

+ {achievement.observation?.observedBy} has confirmed + your id. +

+
+ )) + ) : ( + + no achievements to redeem + + )} +
+
+
+
+ ); +}; + +interface AchievementProps { + id: number; + points: number; +} + +const Achievement: FC, 'id'>>> = ({ + id, + points, + children, + className, + ...props +}) => { + const action = usePointAction(); + const redeem = useRedeemAchievement(); + const patch = usePatchAchievement(); + const [redeemedRef, animate] = useAnimate(); + const containerRef = useRef(null); + + const handleRedeem = async () => { + if (!containerRef.current) throw new Error('No container ref'); + await animate(containerRef.current, { opacity: 0.5 }, { duration: 0.2 }); + await Promise.all([redeem.mutateAsync(id), action.add(points)]); + await animate(redeemedRef.current, { opacity: 1, top: 0, rotate: 2, zIndex: 10 }); + await new Promise(resolve => setTimeout(resolve, 1500)); + patch(id); + }; + + return ( + + + redeemed + + +
{children}
+
+
+ ); +}; diff --git a/census/website/src/layouts/sidebars/Menu.tsx b/census/website/src/layouts/sidebars/Menu.tsx new file mode 100644 index 0000000..221634c --- /dev/null +++ b/census/website/src/layouts/sidebars/Menu.tsx @@ -0,0 +1,109 @@ +import { SimpleAlveus } from '@/components/assets/logos/SimpleAlveus'; +import { Wordmark } from '@/components/assets/logos/Wordmark'; +import { Button } from '@/components/controls/button/juicy'; +import SiHome from '@/components/icons/SiHome'; +import SiLogOut from '@/components/icons/SiLogOut'; +import SiMenu from '@/components/icons/SiMenu'; +import SiUser from '@/components/icons/SiUser'; +import { useSidebar } from '@/components/layout/LayoutProvider'; +import { cn } from '@/utils/cn'; +import { AnimatePresence, HTMLMotionProps, motion } from 'framer-motion'; +import { ComponentProps, FC } from 'react'; + +export const MenuTrigger = () => { + const [, setOpen] = useSidebar(); + return ( + + ); +}; + +export const Menu = () => { + const [open, setOpen] = useSidebar(); + return ( + + +
+
+ + + {open && ( + + + + )} + +
+
+ + + home + +
+
+ + + profile + + + + sign out + +
+
+
+
+ ); +}; + +export const MenuItem: FC> = ({ className, ...props }) => { + const [open] = useSidebar(); + return ( + + + +
+
+ + +
+
- - -
-
- - - {}} - onPointerLeaveCapture={() => {}} - /> - - - - - -
-
- - ); -}; - -import * as Slider from '@radix-ui/react-slider'; -import { ProgressBarRoot } from '@react-av/sliders'; - -export const Playhead = () => { - return ( - - - - - - ); -}; - -export const Metadata = () => { - const duration = Media.useMediaDuration(); - - return ( -
-
- -
- - - - - {new Array(Math.ceil(duration)).fill(null).map((_, i) => ( - - ))} -
-
-
- - - - - - - -
-
- ); -}; - -export const Tick: FC> = ({ className, ...props }) => { - return ( - - ); -}; - -export const SubTick: FC> = ({ className, ...props }) => { - return ( - - ); -}; - -interface SecondProps extends HTMLAttributes { - /** - * The start time of the second, i.e. 00:00 - 00:01 would be 0. - */ - second: number; -} - -const ZeroWidthSpace = '\u200B'; - -/* - This component is used to display a second in the timeline. - It is used to display the time of the second and the tick marks. - It uses the container query to determine the screen size and the visibility of the tick marks and the time. - - The time is displayed in the format mm:ss. - If the second is the start of the end, always show it. -*/ -export const Second: FC = ({ second }) => { - const duration = Media.useMediaDuration(); - const proportion = second / duration; - return ( -
-
- - {format(new Date(new Date().setMinutes(Math.floor(second / 60))).setSeconds(second % 60), 'mm:ss')} - -

{ZeroWidthSpace}

-
- -
- - - -
+ +
); }; diff --git a/census/website/src/pages/captures/ReadOnly.tsx b/census/website/src/pages/captures/ReadOnly.tsx index 3474718..d36802b 100644 --- a/census/website/src/pages/captures/ReadOnly.tsx +++ b/census/website/src/pages/captures/ReadOnly.tsx @@ -1,57 +1,33 @@ -import { Note } from '@/components/containers/Note'; -import { Timestamp } from '@/components/text/Timestamp'; +import { Square } from '@/components/assets/images/Square'; +import { Breadcrumbs } from '@/layouts/Breadcrumbs'; import { useCapture } from '@/services/api/capture'; -import * as Media from '@react-av/core'; import { FC } from 'react'; -import { Dock } from '../../components/controls/Dock'; import { CaptureProps } from './Capture'; export const ReadOnly: FC = ({ id }) => { - const snapshot = useCapture(id); + const capture = useCapture(id); return ( -
- -
-
- - - {snapshot.data.videoUrl && ( - {}} - onPointerLeaveCapture={() => {}} - /> - )} - - -

Hello

-
-
+
+ +

home

+ • +

captures

+
+

Saved!

+ {capture.data.observations.map(observation => ( +
+ {observation.images.map(image => ( + + ))}
-
- - {/* */} - {/* {snapshot.data.images.map((image, i) => { - return ( - - setIndex(i)} /> - - ); - })} */} - + ))}
); }; diff --git a/census/website/src/pages/captures/create/CreateFromClipModal.tsx b/census/website/src/pages/captures/create/CreateFromClipModal.tsx new file mode 100644 index 0000000..7e771a0 --- /dev/null +++ b/census/website/src/pages/captures/create/CreateFromClipModal.tsx @@ -0,0 +1,138 @@ +import { AutoAnimatedContainer } from '@/components/animation/AnimateHeight'; +import { Button } from '@/components/controls/button/paper'; +import { Form } from '@/components/forms/Form'; +import SiEnterKey from '@/components/icons/SiEnterKey'; +import SiTwitch from '@/components/icons/SiTwitch'; +import { Loader } from '@/components/loaders/Loader'; +import { Modal } from '@/components/modal/Modal'; +import { ModalProps } from '@/components/modal/useModal'; +import { useCapture, useCreateCaptureFromClip } from '@/services/api/capture'; +import { zodResolver } from '@hookform/resolvers/zod'; +import { FC, Suspense, useEffect } from 'react'; +import { useForm } from 'react-hook-form'; +import { useNavigate } from 'react-router'; +import { z } from 'zod'; + +const CreateFromClipFormFields = z.object({ + url: z.string().url() +}); + +type CreateFromClipFormFields = z.infer; + +export const CreateFromClipModal: FC = props => { + const methods = useForm({ + resolver: zodResolver(CreateFromClipFormFields) + }); + + const createClip = useCreateCaptureFromClip(); + const onSubmit = async (data: CreateFromClipFormFields) => { + const url = new URL(data.url); + const id = url.pathname.split('/').pop(); + if (!id) throw new Error('Invalid clip URL'); + await createClip.mutateAsync({ id }); + }; + + const navigate = useNavigate(); + + return ( + + +
+
alert(`Error: ${error.message}`)} + > + + + + + {createClip.data && createClip.data.result === 'success' && ( +
+