@zyacreatives/shared 2.4.3 → 2.4.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -617,3 +617,9 @@ export declare const ANALYTICS_EVENTS: {
617
617
  readonly EMPTY_STATE_VIEW: "comment_empty_state_view";
618
618
  };
619
619
  };
620
+ export type MarketplaceCategory = {
621
+ name: string;
622
+ imgUrl: string;
623
+ };
624
+ export declare const MARKETPLACE_CATEGORIES: MarketplaceCategory[];
625
+ export declare const CATEGORIES_MAP: Record<string, string[]>;
package/dist/constants.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ANALYTICS_EVENTS = exports.DEFAULT_DISCIPLINES = exports.API_ROUTES = exports.DISCOUNT_TYPES = exports.PRICING_MODELS = exports.GATEWAY_PROVIDER = exports.COUNTRY_OF_OPERATION = exports.SIGNAL_STATUS = exports.SIGNAL_INTEREST_TYPES = exports.VENTURE_STAGES = exports.NOTIFICATION_TYPES = exports.APPLICATION_STATUS = exports.LINK_TYPES = exports.ACTIVITY_TYPES = exports.POST_BADGE_TYPES = exports.PROJECT_STATUS = exports.MESSAGE_REQUEST_STATUS = exports.PRODUCT_STATUS = exports.JOB_STATUS = exports.WAGES_CURRENCY = exports.GIG_TYPE = exports.MESSAGE_TYPES = exports.JOB_LOCATIONS = exports.JOB_SECTIONS = exports.WAGE_TYPES = exports.JOB_AVAILABILITY_TYPES = exports.EMPLOYMENT_TYPE = exports.WORK_MODE = exports.JOB_TYPE = exports.POST_TYPES = exports.ACTIVITY_PARENT_TYPES = exports.INVESTOR_VERIFICATION_DOCUMENT_TYPES = exports.INVESTOR_VERIFICATION_DOCUMENT_STATUSES = exports.GEOGRAPHIC_FOCUS = exports.INVESTMENT_SIZES = exports.INVESTOR_TYPES = exports.ONBOARDING_PAGES = exports.PAYMENT_METHOD_STATUS = exports.SELLER_STATUS = exports.EXPERIENCE_LEVELS = exports.CLIENT_TYPES = exports.USER_STATUSES = exports.ROLES = void 0;
3
+ exports.CATEGORIES_MAP = exports.MARKETPLACE_CATEGORIES = exports.ANALYTICS_EVENTS = exports.DEFAULT_DISCIPLINES = exports.API_ROUTES = exports.DISCOUNT_TYPES = exports.PRICING_MODELS = exports.GATEWAY_PROVIDER = exports.COUNTRY_OF_OPERATION = exports.SIGNAL_STATUS = exports.SIGNAL_INTEREST_TYPES = exports.VENTURE_STAGES = exports.NOTIFICATION_TYPES = exports.APPLICATION_STATUS = exports.LINK_TYPES = exports.ACTIVITY_TYPES = exports.POST_BADGE_TYPES = exports.PROJECT_STATUS = exports.MESSAGE_REQUEST_STATUS = exports.PRODUCT_STATUS = exports.JOB_STATUS = exports.WAGES_CURRENCY = exports.GIG_TYPE = exports.MESSAGE_TYPES = exports.JOB_LOCATIONS = exports.JOB_SECTIONS = exports.WAGE_TYPES = exports.JOB_AVAILABILITY_TYPES = exports.EMPLOYMENT_TYPE = exports.WORK_MODE = exports.JOB_TYPE = exports.POST_TYPES = exports.ACTIVITY_PARENT_TYPES = exports.INVESTOR_VERIFICATION_DOCUMENT_TYPES = exports.INVESTOR_VERIFICATION_DOCUMENT_STATUSES = exports.GEOGRAPHIC_FOCUS = exports.INVESTMENT_SIZES = exports.INVESTOR_TYPES = exports.ONBOARDING_PAGES = exports.PAYMENT_METHOD_STATUS = exports.SELLER_STATUS = exports.EXPERIENCE_LEVELS = exports.CLIENT_TYPES = exports.USER_STATUSES = exports.ROLES = void 0;
4
4
  exports.ROLES = {
5
5
  CREATIVE: "CREATIVE",
6
6
  BRAND: "BRAND",
@@ -485,3 +485,506 @@ exports.ANALYTICS_EVENTS = {
485
485
  EMPTY_STATE_VIEW: "comment_empty_state_view",
486
486
  },
487
487
  };
488
+ exports.MARKETPLACE_CATEGORIES = [
489
+ {
490
+ name: "Templates",
491
+ imgUrl: "https://images.unsplash.com/photo-1581291518857-4e27b48ff24e?auto=format&fit=crop&w=800&q=80",
492
+ },
493
+ {
494
+ name: "Fonts",
495
+ imgUrl: "https://images.unsplash.com/photo-1516054575922-f0b8eeadec1a?auto=format&fit=crop&w=800&q=80",
496
+ },
497
+ {
498
+ name: "Graphics",
499
+ imgUrl: "https://images.unsplash.com/photo-1626785774573-4b799315345d?auto=format&fit=crop&w=800&q=80",
500
+ },
501
+ {
502
+ name: "Photos & Video",
503
+ imgUrl: "https://images.unsplash.com/photo-1516035069371-29a1b244cc32?auto=format&fit=crop&w=800&q=80",
504
+ },
505
+ {
506
+ name: "Audio",
507
+ imgUrl: "https://images.unsplash.com/photo-1598488035139-bdbb2231ce04?auto=format&fit=crop&w=800&q=80",
508
+ },
509
+ {
510
+ name: "3D & Motion",
511
+ imgUrl: "https://images.unsplash.com/photo-1618005182384-a83a8bd57fbe?auto=format&fit=crop&w=800&q=80",
512
+ },
513
+ {
514
+ name: "Presets & Tools",
515
+ imgUrl: "https://images.unsplash.com/photo-1551269901-5c5e14c25df7?auto=format&fit=crop&w=800&q=80",
516
+ },
517
+ {
518
+ name: "Content & Copy",
519
+ imgUrl: "https://images.unsplash.com/photo-1455390582262-044cdead27d8?auto=format&fit=crop&w=800&q=80",
520
+ },
521
+ {
522
+ name: "Print & Merch",
523
+ imgUrl: "https://images.unsplash.com/photo-1562157873-818bc0726f68?auto=format&fit=crop&w=800&q=80",
524
+ },
525
+ {
526
+ name: "Bundles",
527
+ imgUrl: "https://images.unsplash.com/photo-1607344645866-eea33a4ca4eb?auto=format&fit=crop&w=800&q=80",
528
+ },
529
+ {
530
+ name: "Other",
531
+ imgUrl: "https://images.unsplash.com/photo-1493612276216-ee3925520721?auto=format&fit=crop&w=800&q=80",
532
+ },
533
+ ];
534
+ exports.CATEGORIES_MAP = {
535
+ Templates: [
536
+ "Website Templates",
537
+ "Landing Page Templates",
538
+ "UI Kits",
539
+ "Design Systems",
540
+ "Wireframe Kits",
541
+ "App Templates",
542
+ "SaaS Templates",
543
+ "Portfolio Templates",
544
+ "Blog Templates",
545
+ "E-commerce Templates",
546
+ "Pitch Deck Templates",
547
+ "Presentation Templates",
548
+ "Google Slides Templates",
549
+ "Keynote Templates",
550
+ "PowerPoint Templates",
551
+ "Canva Templates",
552
+ "Email Templates",
553
+ "Newsletter Templates",
554
+ "Mailchimp Templates",
555
+ "Instagram Templates",
556
+ "TikTok Templates",
557
+ "LinkedIn Templates",
558
+ "YouTube Templates",
559
+ "Pinterest Templates",
560
+ "Story Templates",
561
+ "Carousel Templates",
562
+ "Notion Templates",
563
+ "Airtable Templates",
564
+ "Google Sheets Templates",
565
+ "Excel Templates",
566
+ "Project Management Templates",
567
+ "Content Planner Templates",
568
+ "CRM Templates",
569
+ "Device Mockups",
570
+ "Apparel Mockups",
571
+ "Packaging Mockups",
572
+ "Stationery Mockups",
573
+ "Scene Creator Mockups",
574
+ "Flat Lay Mockups",
575
+ "Branding Mockups",
576
+ "Print Mockups",
577
+ ],
578
+ Fonts: [
579
+ "Serif Fonts",
580
+ "Sans-Serif Fonts",
581
+ "Script Fonts",
582
+ "Handwritten Fonts",
583
+ "Display Fonts",
584
+ "Decorative Fonts",
585
+ "Monospace Fonts",
586
+ "Variable Fonts",
587
+ "Multilingual Fonts",
588
+ "Retro & Vintage Fonts",
589
+ "Modern Fonts",
590
+ "Grunge Fonts",
591
+ "Luxury Fonts",
592
+ "Playful Fonts",
593
+ "Bold Fonts",
594
+ "Minimal Fonts",
595
+ "Font Pairs",
596
+ "Font Bundles",
597
+ ],
598
+ Graphics: [
599
+ "Flat Illustrations",
600
+ "Isometric Illustrations",
601
+ "Hand-Drawn Illustrations",
602
+ "Character Illustrations",
603
+ "Line Art",
604
+ "Abstract Illustrations",
605
+ "Botanical Illustrations",
606
+ "Conceptual Illustrations",
607
+ "Editorial Illustrations",
608
+ "Scene Illustrations",
609
+ "Doodle Illustrations",
610
+ "Icon Sets",
611
+ "App Icons",
612
+ "Outline Icons",
613
+ "Filled Icons",
614
+ "3D Icons",
615
+ "Animated Icons",
616
+ "Social Media Icons",
617
+ "Logo Templates",
618
+ "Brand Identity Kits",
619
+ "Monogram Logos",
620
+ "Wordmark Logos",
621
+ "Mascot Logos",
622
+ "Badge Logos",
623
+ "Emblem Logos",
624
+ "Seamless Patterns",
625
+ "Geometric Patterns",
626
+ "Floral Patterns",
627
+ "Abstract Backgrounds",
628
+ "Gradient Backgrounds",
629
+ "Watercolor Backgrounds",
630
+ "Noise & Grain Textures",
631
+ "Grid & Dot Backgrounds",
632
+ "Vector Graphics",
633
+ "SVG Assets",
634
+ "Clip Art",
635
+ "Nature & Botanical Vectors",
636
+ "Business & Finance Vectors",
637
+ "People & Character Vectors",
638
+ "Data Visualization",
639
+ "Timeline Infographics",
640
+ "Process Infographics",
641
+ "Comparison Infographics",
642
+ "Statistical Infographics",
643
+ "Map Infographics",
644
+ ],
645
+ "Photos & Video": [
646
+ "Lifestyle Photos",
647
+ "Business & Corporate Photos",
648
+ "Nature & Landscape Photos",
649
+ "Architecture Photos",
650
+ "Food & Drink Photos",
651
+ "People & Portrait Photos",
652
+ "Travel Photos",
653
+ "Abstract Photos",
654
+ "Tech & Gadget Photos",
655
+ "Fashion Photos",
656
+ "Editorial Photos",
657
+ "Stock Video Footage",
658
+ "Aerial & Drone Footage",
659
+ "Cinematic Footage",
660
+ "Time-Lapse Footage",
661
+ "Slow Motion Footage",
662
+ "Looping Video",
663
+ "Nature Footage",
664
+ "Urban Footage",
665
+ "4K Footage",
666
+ "Vertical Video",
667
+ "Light Leak Overlays",
668
+ "Film Grain Overlays",
669
+ "Bokeh Overlays",
670
+ "Glitch Effects",
671
+ "Smoke & Dust Overlays",
672
+ "Lens Flare Overlays",
673
+ "Cinematic Overlays",
674
+ "GIF Stickers",
675
+ "Animated Backgrounds",
676
+ "Looping GIFs",
677
+ "Emoji Packs",
678
+ "AI-Generated Art",
679
+ "Midjourney Art",
680
+ "AI Portrait Art",
681
+ "AI Landscape Art",
682
+ "Surreal AI Art",
683
+ ],
684
+ Audio: [
685
+ "Royalty-Free Music",
686
+ "Ambient Music",
687
+ "Hip-Hop Tracks",
688
+ "Electronic Music",
689
+ "Lo-Fi Music",
690
+ "Cinematic Music",
691
+ "Acoustic Music",
692
+ "Jazz Tracks",
693
+ "Classical Music",
694
+ "Pop Tracks",
695
+ "R&B Tracks",
696
+ "Gospel Music",
697
+ "Afrobeats",
698
+ "Reggae & Dancehall",
699
+ "Trap Beats",
700
+ "Drill Beats",
701
+ "Boom Bap Beats",
702
+ "Afrobeats Instrumentals",
703
+ "Pop Beats",
704
+ "Exclusive Beats",
705
+ "Leased Beats",
706
+ "Drum Loops",
707
+ "Bass Loops",
708
+ "Melody Loops",
709
+ "Guitar Loops",
710
+ "Vocal Chops",
711
+ "Acapellas",
712
+ "Stem Packs",
713
+ "UI & UX Sounds",
714
+ "Cinematic Sound Effects",
715
+ "Nature Sound Effects",
716
+ "Foley Sound Effects",
717
+ "Game Sound Effects",
718
+ "Cartoon Sound Effects",
719
+ "Notification Sounds",
720
+ "Horror Sound Effects",
721
+ "Voiceovers",
722
+ "Narration",
723
+ "Commercial Voiceovers",
724
+ "Character Voices",
725
+ "Podcast Intros",
726
+ "YouTube Intros",
727
+ "Logo Stings",
728
+ "Ad Jingles",
729
+ "ASMR",
730
+ "White Noise",
731
+ "Rain & Nature Sounds",
732
+ "Study & Focus Sounds",
733
+ "Sleep Sounds",
734
+ "Meditation Audio",
735
+ "Binaural Beats",
736
+ "DAW Templates",
737
+ "Ableton Templates",
738
+ "FL Studio Templates",
739
+ "Logic Pro Templates",
740
+ "VST Presets",
741
+ "Mastering Presets",
742
+ ],
743
+ "3D & Motion": [
744
+ "3D Character Models",
745
+ "3D Product Models",
746
+ "3D Architecture Models",
747
+ "3D Vehicle Models",
748
+ "3D Nature Models",
749
+ "Low Poly Models",
750
+ "High Poly Models",
751
+ "Blender Assets",
752
+ "Cinema 4D Assets",
753
+ "FBX & OBJ Files",
754
+ "GLB & GLTF Files",
755
+ "3D Interior Scenes",
756
+ "3D Exterior Scenes",
757
+ "Fantasy World Environments",
758
+ "Sci-Fi Environments",
759
+ "Game Environments",
760
+ "HDRI Maps",
761
+ "Sky Maps",
762
+ "Studio Setups",
763
+ "Rigged Characters",
764
+ "Animated Characters",
765
+ "Human Characters",
766
+ "Fantasy Characters",
767
+ "Cartoon Characters",
768
+ "Game-Ready Characters",
769
+ "Walk Cycles",
770
+ "After Effects Templates",
771
+ "Premiere Pro Templates",
772
+ "Title Animations",
773
+ "Transitions",
774
+ "Lower Thirds",
775
+ "Particle Effects",
776
+ "Kinetic Typography",
777
+ "Explainer Animations",
778
+ "Sprite Sheets",
779
+ "Tilemaps",
780
+ "UI Packs",
781
+ "Pixel Art",
782
+ "Unity Assets",
783
+ "Unreal Engine Assets",
784
+ "Godot Assets",
785
+ "AR Filters",
786
+ "Instagram Filters",
787
+ "Spark AR Assets",
788
+ "VR Environments",
789
+ "WebXR Assets",
790
+ "3D Font Effects",
791
+ "Neon Text Effects",
792
+ "Metallic Text Effects",
793
+ "Retro 3D Text",
794
+ "Animated 3D Text",
795
+ ],
796
+ "Presets & Tools": [
797
+ "Lightroom Presets",
798
+ "Portrait Presets",
799
+ "Landscape Presets",
800
+ "Cinematic Presets",
801
+ "Moody Presets",
802
+ "Vintage Presets",
803
+ "Film Presets",
804
+ "Bright & Airy Presets",
805
+ "Dark & Gritty Presets",
806
+ "Mobile Lightroom Presets",
807
+ "Photoshop Actions",
808
+ "Photoshop Brushes",
809
+ "Photo Retouching Actions",
810
+ "Photo Effect Actions",
811
+ "Texture Actions",
812
+ "Double Exposure Actions",
813
+ "Colour Grading Actions",
814
+ "LUTs",
815
+ "Cinematic LUTs",
816
+ "Film Emulation LUTs",
817
+ "Drone LUTs",
818
+ "DaVinci Resolve Presets",
819
+ "Premiere Pro Presets",
820
+ "Procreate Brushes",
821
+ "Procreate Lettering Brushes",
822
+ "Procreate Watercolour Brushes",
823
+ "Procreate Inking Brushes",
824
+ "Procreate Texture Brushes",
825
+ "Procreate Stamp Sets",
826
+ "Figma UI Kits",
827
+ "Figma Component Libraries",
828
+ "Figma Plugins",
829
+ "Figma Wireframe Kits",
830
+ "Figma Flow Kits",
831
+ "Figma Variable Sets",
832
+ "Midjourney Prompt Packs",
833
+ "ChatGPT Prompt Packs",
834
+ "Stable Diffusion Prompts",
835
+ "DALL-E Prompt Packs",
836
+ "AI Marketing Prompts",
837
+ "AI Business Prompts",
838
+ "AI Writing Prompts",
839
+ "AI Image Generation Prompts",
840
+ ],
841
+ "Content & Copy": [
842
+ "Homepage Copy",
843
+ "Landing Page Copy",
844
+ "About Page Copy",
845
+ "Product Page Copy",
846
+ "SaaS Website Copy",
847
+ "Agency Website Copy",
848
+ "FAQ Copy",
849
+ "SEO Copy",
850
+ "Facebook Ad Copy",
851
+ "Google Ad Copy",
852
+ "Sales Page Copy",
853
+ "Product Descriptions",
854
+ "Taglines & Slogans",
855
+ "CTA Copy",
856
+ "Email Subject Lines",
857
+ "Welcome Email Sequences",
858
+ "Nurture Sequences",
859
+ "Sales Funnel Sequences",
860
+ "Abandoned Cart Sequences",
861
+ "Re-engagement Sequences",
862
+ "Onboarding Sequences",
863
+ "Cold Outreach Templates",
864
+ "Instagram Captions",
865
+ "LinkedIn Captions",
866
+ "Twitter/X Captions",
867
+ "TikTok Captions",
868
+ "Hashtag Packs",
869
+ "Content Calendar Templates",
870
+ "YouTube Scripts",
871
+ "TikTok Scripts",
872
+ "Podcast Scripts",
873
+ "VSL Scripts",
874
+ "Webinar Scripts",
875
+ "Ad Scripts",
876
+ "Explainer Scripts",
877
+ "Blog Post Templates",
878
+ "SEO Article Templates",
879
+ "Case Study Templates",
880
+ "Thought Leadership Templates",
881
+ "eBooks",
882
+ "Lead Magnets",
883
+ "Workbooks",
884
+ "White Papers",
885
+ "Industry Reports",
886
+ "Business Proposals",
887
+ "Contract Templates",
888
+ "Press Releases",
889
+ "Business Plans",
890
+ "Pitch Deck Copy",
891
+ "Cover Letters",
892
+ "Resumes & CVs",
893
+ "Bios & About Me",
894
+ "Fiction Templates",
895
+ "Screenplay Templates",
896
+ "Song Lyric Templates",
897
+ "Poetry Templates",
898
+ ],
899
+ "Print & Merch": [
900
+ "Abstract Wall Art",
901
+ "Botanical Wall Art",
902
+ "Portrait Wall Art",
903
+ "Typography Wall Art",
904
+ "Landscape Wall Art",
905
+ "Minimalist Wall Art",
906
+ "Boho Wall Art",
907
+ "Gallery Wall Sets",
908
+ "Black & White Prints",
909
+ "Event Posters",
910
+ "Concert Posters",
911
+ "Party Flyers",
912
+ "Retro Posters",
913
+ "Vintage Posters",
914
+ "Movie-Style Posters",
915
+ "A4 Templates",
916
+ "A3 Templates",
917
+ "US Letter Templates",
918
+ "Portrait Art",
919
+ "Fantasy Art",
920
+ "Realism Art",
921
+ "Surrealism Art",
922
+ "Watercolour Art",
923
+ "Oil Style Art",
924
+ "Concept Art",
925
+ "Business Cards",
926
+ "Letterheads",
927
+ "Greeting Cards",
928
+ "Wedding Invitations",
929
+ "Event Invitations",
930
+ "Thank You Cards",
931
+ "Notebook Covers",
932
+ "T-Shirt Designs",
933
+ "Hoodie Designs",
934
+ "Hat Designs",
935
+ "Tote Bag Designs",
936
+ "Mug Designs",
937
+ "Phone Case Designs",
938
+ "Sticker Designs",
939
+ "Print-On-Demand Designs",
940
+ "Embroidery Designs",
941
+ "Box Designs",
942
+ "Label Designs",
943
+ "Bag Designs",
944
+ "Bottle Designs",
945
+ "Pouch Designs",
946
+ "Food & Beverage Packaging",
947
+ "Cosmetics Packaging",
948
+ "Dieline Templates",
949
+ "Daily Planner Inserts",
950
+ "Weekly Planner Inserts",
951
+ "Monthly Planner Inserts",
952
+ "Habit Trackers",
953
+ "Gratitude Journals",
954
+ "Goal Setting Sheets",
955
+ "Budget Planners",
956
+ "Fabric Print Designs",
957
+ "Wallpaper Designs",
958
+ "Wrapping Paper Designs",
959
+ "Repeat Pattern Designs",
960
+ "CMYK Print-Ready Files",
961
+ ],
962
+ Bundles: [
963
+ "Design Bundles",
964
+ "Font Bundles",
965
+ "Illustration Bundles",
966
+ "Icon Bundles",
967
+ "Template Bundles",
968
+ "Mockup Bundles",
969
+ "Photo Bundles",
970
+ "Video Bundles",
971
+ "Audio Bundles",
972
+ "Preset Bundles",
973
+ "Procreate Bundles",
974
+ "Notion Bundles",
975
+ "Social Media Bundles",
976
+ "Branding Bundles",
977
+ "Print Bundles",
978
+ "Creator Packs",
979
+ "Starter Kits",
980
+ "Seasonal & Limited Edition",
981
+ ],
982
+ Other: [
983
+ "Miscellaneous",
984
+ "Consulting & Services",
985
+ "Custom Commissions",
986
+ "Memberships & Subscriptions",
987
+ "Gift Cards",
988
+ "Uncategorized",
989
+ ],
990
+ };
@@ -285,6 +285,73 @@ export declare const ProductEntitySchema: z.ZodObject<{
285
285
  updatedAt: z.ZodCoercedDate<unknown>;
286
286
  deletedAt: z.ZodNullable<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
287
287
  }, z.core.$strip>;
288
+ export declare const ProductSearchDocumentSchema: z.ZodObject<{
289
+ id: z.ZodCUID2;
290
+ sellerId: z.ZodCUID2;
291
+ sellerUsername: z.ZodString;
292
+ sellerName: z.ZodString;
293
+ sellerImageUrl: z.ZodNullable<z.ZodString>;
294
+ title: z.ZodString;
295
+ category: z.ZodString;
296
+ subcategory: z.ZodNullable<z.ZodString>;
297
+ tags: z.ZodArray<z.ZodString>;
298
+ thumbnailImgUrl: z.ZodNullable<z.ZodURL>;
299
+ currency: z.ZodEnum<{
300
+ readonly USD: "USD (United States Dollar)";
301
+ readonly EUR: "EUR (Euro)";
302
+ readonly GBP: "GBP (British Pound Sterling)";
303
+ readonly NGN: "NGN (Nigerian Naira)";
304
+ readonly CAD: "CAD (Canadian Dollar)";
305
+ readonly AUD: "AUD (Australian Dollar)";
306
+ readonly JPY: "JPY (Japanese Yen)";
307
+ readonly CHF: "CHF (Swiss Franc)";
308
+ readonly INR: "INR (Indian Rupee)";
309
+ readonly ZAR: "ZAR (South African Rand)";
310
+ }>;
311
+ price: z.ZodNullable<z.ZodNumber>;
312
+ suggestedPrice: z.ZodNullable<z.ZodNumber>;
313
+ createdAt: z.ZodCoercedDate<unknown>;
314
+ updatedAt: z.ZodCoercedDate<unknown>;
315
+ deletedAt: z.ZodNullable<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
316
+ }, z.core.$strip>;
317
+ export declare const SearchProductInpuSchema: z.ZodObject<{
318
+ queryString: z.ZodString;
319
+ cursor: z.ZodOptional<z.ZodString>;
320
+ }, z.core.$strip>;
321
+ export declare const SearchProductOutputSchema: z.ZodObject<{
322
+ products: z.ZodArray<z.ZodObject<{
323
+ id: z.ZodCUID2;
324
+ sellerId: z.ZodCUID2;
325
+ sellerUsername: z.ZodString;
326
+ sellerName: z.ZodString;
327
+ sellerImageUrl: z.ZodNullable<z.ZodString>;
328
+ title: z.ZodString;
329
+ category: z.ZodString;
330
+ subcategory: z.ZodNullable<z.ZodString>;
331
+ tags: z.ZodArray<z.ZodString>;
332
+ thumbnailImgUrl: z.ZodNullable<z.ZodURL>;
333
+ currency: z.ZodEnum<{
334
+ readonly USD: "USD (United States Dollar)";
335
+ readonly EUR: "EUR (Euro)";
336
+ readonly GBP: "GBP (British Pound Sterling)";
337
+ readonly NGN: "NGN (Nigerian Naira)";
338
+ readonly CAD: "CAD (Canadian Dollar)";
339
+ readonly AUD: "AUD (Australian Dollar)";
340
+ readonly JPY: "JPY (Japanese Yen)";
341
+ readonly CHF: "CHF (Swiss Franc)";
342
+ readonly INR: "INR (Indian Rupee)";
343
+ readonly ZAR: "ZAR (South African Rand)";
344
+ }>;
345
+ price: z.ZodNullable<z.ZodNumber>;
346
+ suggestedPrice: z.ZodNullable<z.ZodNumber>;
347
+ createdAt: z.ZodCoercedDate<unknown>;
348
+ updatedAt: z.ZodCoercedDate<unknown>;
349
+ deletedAt: z.ZodNullable<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
350
+ }, z.core.$strip>>;
351
+ nextCursor: z.ZodNullable<z.ZodOptional<z.ZodString>>;
352
+ }, z.core.$strip>;
353
+ export type SearchProductInput = z.infer<typeof SearchProductInpuSchema>;
354
+ export type SearchProductOutput = z.infer<typeof SearchProductOutputSchema>;
288
355
  export type CoverImageInput = z.infer<typeof CoverImageInputSchema>;
289
356
  export type DeliveryFileInput = z.infer<typeof DeliveryFileInputSchema>;
290
357
  export type ProductCoverImageEntity = z.infer<typeof ProductCoverImageEntitySchema>;
@@ -295,3 +362,4 @@ export type ProductServiceAndComplianceInputEntity = z.infer<typeof ProductServi
295
362
  export type UpdateProductInputEntity = z.infer<typeof UpdateProductInputSchema>;
296
363
  export type ProductEntity = z.infer<typeof ProductEntitySchema>;
297
364
  export type BaseProductEntity = z.infer<typeof BaseProductSchema>;
365
+ export type ProductSearchDocument = z.infer<typeof ProductSearchDocumentSchema>;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ProductEntitySchema = exports.UpdateProductInputSchema = exports.ProductServiceAndComplianceInputSchema = exports.CreateProductInputSchema = exports.BaseProductSchema = exports.ProductLinkSchema = exports.ProductDiscountEntitySchema = exports.ProductDeliveryFileEntitySchema = exports.ProductCoverImageEntitySchema = exports.DeliveryFileInputSchema = exports.CoverImageInputSchema = void 0;
3
+ exports.SearchProductOutputSchema = exports.SearchProductInpuSchema = exports.ProductSearchDocumentSchema = exports.ProductEntitySchema = exports.UpdateProductInputSchema = exports.ProductServiceAndComplianceInputSchema = exports.CreateProductInputSchema = exports.BaseProductSchema = exports.ProductLinkSchema = exports.ProductDiscountEntitySchema = exports.ProductDeliveryFileEntitySchema = exports.ProductCoverImageEntitySchema = exports.DeliveryFileInputSchema = exports.CoverImageInputSchema = void 0;
4
4
  const zod_openapi_1 = require("@hono/zod-openapi");
5
5
  const constants_1 = require("../constants");
6
6
  exports.CoverImageInputSchema = zod_openapi_1.z.object({
@@ -187,7 +187,9 @@ exports.ProductEntitySchema = zod_openapi_1.z
187
187
  coverImages: zod_openapi_1.z
188
188
  .array(exports.ProductCoverImageEntitySchema.extend({ url: zod_openapi_1.z.url() }))
189
189
  .default([]),
190
- productFiles: zod_openapi_1.z.array(exports.ProductDeliveryFileEntitySchema.extend({ url: zod_openapi_1.z.url() })).default([]),
190
+ productFiles: zod_openapi_1.z
191
+ .array(exports.ProductDeliveryFileEntitySchema.extend({ url: zod_openapi_1.z.url() }))
192
+ .default([]),
191
193
  productLinks: zod_openapi_1.z.array(zod_openapi_1.z.url()).default([]),
192
194
  pricingModel: zod_openapi_1.z.enum(constants_1.PRICING_MODELS),
193
195
  currency: zod_openapi_1.z.enum(constants_1.WAGES_CURRENCY),
@@ -201,3 +203,33 @@ exports.ProductEntitySchema = zod_openapi_1.z
201
203
  deletedAt: zod_openapi_1.z.coerce.date().optional().nullable(),
202
204
  })
203
205
  .openapi({ title: "ProductEntity" });
206
+ exports.ProductSearchDocumentSchema = zod_openapi_1.z.object({
207
+ id: zod_openapi_1.z.cuid2(),
208
+ sellerId: zod_openapi_1.z.cuid2(),
209
+ sellerUsername: zod_openapi_1.z.string(),
210
+ sellerName: zod_openapi_1.z.string(),
211
+ sellerImageUrl: zod_openapi_1.z.string().url().nullable(),
212
+ title: zod_openapi_1.z.string(),
213
+ category: zod_openapi_1.z.string(),
214
+ subcategory: zod_openapi_1.z.string().nullable(),
215
+ tags: zod_openapi_1.z.array(zod_openapi_1.z.string()),
216
+ thumbnailImgUrl: zod_openapi_1.z.url().nullable(),
217
+ currency: zod_openapi_1.z.enum(constants_1.WAGES_CURRENCY),
218
+ price: zod_openapi_1.z.number().nullable(),
219
+ suggestedPrice: zod_openapi_1.z.number().nullable(),
220
+ createdAt: zod_openapi_1.z.coerce.date(),
221
+ updatedAt: zod_openapi_1.z.coerce.date(),
222
+ deletedAt: zod_openapi_1.z.coerce.date().optional().nullable(),
223
+ });
224
+ exports.SearchProductInpuSchema = zod_openapi_1.z.object({
225
+ queryString: zod_openapi_1.z
226
+ .string()
227
+ .min(1, { message: "Search string cannot be empty" })
228
+ .max(200, { message: "Search string cannot exceed 200 characters" })
229
+ .openapi({ example: "typescript utility types" }),
230
+ cursor: zod_openapi_1.z.string().optional().openapi({ example: "ckj1a2b3c0000cur" }),
231
+ });
232
+ exports.SearchProductOutputSchema = zod_openapi_1.z.object({
233
+ products: zod_openapi_1.z.array(exports.ProductSearchDocumentSchema),
234
+ nextCursor: zod_openapi_1.z.string().optional().nullable(),
235
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zyacreatives/shared",
3
- "version": "2.4.3",
3
+ "version": "2.4.5",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/src/constants.ts CHANGED
@@ -589,3 +589,524 @@ export const ANALYTICS_EVENTS = {
589
589
  EMPTY_STATE_VIEW: "comment_empty_state_view",
590
590
  },
591
591
  } as const;
592
+
593
+ export type MarketplaceCategory = {
594
+ name: string;
595
+ imgUrl: string;
596
+ };
597
+
598
+ export const MARKETPLACE_CATEGORIES: MarketplaceCategory[] = [
599
+ {
600
+ name: "Templates",
601
+ imgUrl:
602
+ "https://images.unsplash.com/photo-1581291518857-4e27b48ff24e?auto=format&fit=crop&w=800&q=80",
603
+ },
604
+ {
605
+ name: "Fonts",
606
+ imgUrl:
607
+ "https://images.unsplash.com/photo-1516054575922-f0b8eeadec1a?auto=format&fit=crop&w=800&q=80",
608
+ },
609
+ {
610
+ name: "Graphics",
611
+ imgUrl:
612
+ "https://images.unsplash.com/photo-1626785774573-4b799315345d?auto=format&fit=crop&w=800&q=80",
613
+ },
614
+ {
615
+ name: "Photos & Video",
616
+ imgUrl:
617
+ "https://images.unsplash.com/photo-1516035069371-29a1b244cc32?auto=format&fit=crop&w=800&q=80",
618
+ },
619
+ {
620
+ name: "Audio",
621
+ imgUrl:
622
+ "https://images.unsplash.com/photo-1598488035139-bdbb2231ce04?auto=format&fit=crop&w=800&q=80",
623
+ },
624
+ {
625
+ name: "3D & Motion",
626
+ imgUrl:
627
+ "https://images.unsplash.com/photo-1618005182384-a83a8bd57fbe?auto=format&fit=crop&w=800&q=80",
628
+ },
629
+ {
630
+ name: "Presets & Tools",
631
+ imgUrl:
632
+ "https://images.unsplash.com/photo-1551269901-5c5e14c25df7?auto=format&fit=crop&w=800&q=80",
633
+ },
634
+ {
635
+ name: "Content & Copy",
636
+ imgUrl:
637
+ "https://images.unsplash.com/photo-1455390582262-044cdead27d8?auto=format&fit=crop&w=800&q=80",
638
+ },
639
+ {
640
+ name: "Print & Merch",
641
+ imgUrl:
642
+ "https://images.unsplash.com/photo-1562157873-818bc0726f68?auto=format&fit=crop&w=800&q=80",
643
+ },
644
+ {
645
+ name: "Bundles",
646
+ imgUrl:
647
+ "https://images.unsplash.com/photo-1607344645866-eea33a4ca4eb?auto=format&fit=crop&w=800&q=80",
648
+ },
649
+ {
650
+ name: "Other",
651
+ imgUrl:
652
+ "https://images.unsplash.com/photo-1493612276216-ee3925520721?auto=format&fit=crop&w=800&q=80",
653
+ },
654
+ ];
655
+
656
+ export const CATEGORIES_MAP: Record<string, string[]> = {
657
+ Templates: [
658
+ "Website Templates",
659
+ "Landing Page Templates",
660
+ "UI Kits",
661
+ "Design Systems",
662
+ "Wireframe Kits",
663
+ "App Templates",
664
+ "SaaS Templates",
665
+ "Portfolio Templates",
666
+ "Blog Templates",
667
+ "E-commerce Templates",
668
+ "Pitch Deck Templates",
669
+ "Presentation Templates",
670
+ "Google Slides Templates",
671
+ "Keynote Templates",
672
+ "PowerPoint Templates",
673
+ "Canva Templates",
674
+ "Email Templates",
675
+ "Newsletter Templates",
676
+ "Mailchimp Templates",
677
+ "Instagram Templates",
678
+ "TikTok Templates",
679
+ "LinkedIn Templates",
680
+ "YouTube Templates",
681
+ "Pinterest Templates",
682
+ "Story Templates",
683
+ "Carousel Templates",
684
+ "Notion Templates",
685
+ "Airtable Templates",
686
+ "Google Sheets Templates",
687
+ "Excel Templates",
688
+ "Project Management Templates",
689
+ "Content Planner Templates",
690
+ "CRM Templates",
691
+ "Device Mockups",
692
+ "Apparel Mockups",
693
+ "Packaging Mockups",
694
+ "Stationery Mockups",
695
+ "Scene Creator Mockups",
696
+ "Flat Lay Mockups",
697
+ "Branding Mockups",
698
+ "Print Mockups",
699
+ ],
700
+ Fonts: [
701
+ "Serif Fonts",
702
+ "Sans-Serif Fonts",
703
+ "Script Fonts",
704
+ "Handwritten Fonts",
705
+ "Display Fonts",
706
+ "Decorative Fonts",
707
+ "Monospace Fonts",
708
+ "Variable Fonts",
709
+ "Multilingual Fonts",
710
+ "Retro & Vintage Fonts",
711
+ "Modern Fonts",
712
+ "Grunge Fonts",
713
+ "Luxury Fonts",
714
+ "Playful Fonts",
715
+ "Bold Fonts",
716
+ "Minimal Fonts",
717
+ "Font Pairs",
718
+ "Font Bundles",
719
+ ],
720
+ Graphics: [
721
+ "Flat Illustrations",
722
+ "Isometric Illustrations",
723
+ "Hand-Drawn Illustrations",
724
+ "Character Illustrations",
725
+ "Line Art",
726
+ "Abstract Illustrations",
727
+ "Botanical Illustrations",
728
+ "Conceptual Illustrations",
729
+ "Editorial Illustrations",
730
+ "Scene Illustrations",
731
+ "Doodle Illustrations",
732
+ "Icon Sets",
733
+ "App Icons",
734
+ "Outline Icons",
735
+ "Filled Icons",
736
+ "3D Icons",
737
+ "Animated Icons",
738
+ "Social Media Icons",
739
+ "Logo Templates",
740
+ "Brand Identity Kits",
741
+ "Monogram Logos",
742
+ "Wordmark Logos",
743
+ "Mascot Logos",
744
+ "Badge Logos",
745
+ "Emblem Logos",
746
+ "Seamless Patterns",
747
+ "Geometric Patterns",
748
+ "Floral Patterns",
749
+ "Abstract Backgrounds",
750
+ "Gradient Backgrounds",
751
+ "Watercolor Backgrounds",
752
+ "Noise & Grain Textures",
753
+ "Grid & Dot Backgrounds",
754
+ "Vector Graphics",
755
+ "SVG Assets",
756
+ "Clip Art",
757
+ "Nature & Botanical Vectors",
758
+ "Business & Finance Vectors",
759
+ "People & Character Vectors",
760
+ "Data Visualization",
761
+ "Timeline Infographics",
762
+ "Process Infographics",
763
+ "Comparison Infographics",
764
+ "Statistical Infographics",
765
+ "Map Infographics",
766
+ ],
767
+ "Photos & Video": [
768
+ "Lifestyle Photos",
769
+ "Business & Corporate Photos",
770
+ "Nature & Landscape Photos",
771
+ "Architecture Photos",
772
+ "Food & Drink Photos",
773
+ "People & Portrait Photos",
774
+ "Travel Photos",
775
+ "Abstract Photos",
776
+ "Tech & Gadget Photos",
777
+ "Fashion Photos",
778
+ "Editorial Photos",
779
+ "Stock Video Footage",
780
+ "Aerial & Drone Footage",
781
+ "Cinematic Footage",
782
+ "Time-Lapse Footage",
783
+ "Slow Motion Footage",
784
+ "Looping Video",
785
+ "Nature Footage",
786
+ "Urban Footage",
787
+ "4K Footage",
788
+ "Vertical Video",
789
+ "Light Leak Overlays",
790
+ "Film Grain Overlays",
791
+ "Bokeh Overlays",
792
+ "Glitch Effects",
793
+ "Smoke & Dust Overlays",
794
+ "Lens Flare Overlays",
795
+ "Cinematic Overlays",
796
+ "GIF Stickers",
797
+ "Animated Backgrounds",
798
+ "Looping GIFs",
799
+ "Emoji Packs",
800
+ "AI-Generated Art",
801
+ "Midjourney Art",
802
+ "AI Portrait Art",
803
+ "AI Landscape Art",
804
+ "Surreal AI Art",
805
+ ],
806
+ Audio: [
807
+ "Royalty-Free Music",
808
+ "Ambient Music",
809
+ "Hip-Hop Tracks",
810
+ "Electronic Music",
811
+ "Lo-Fi Music",
812
+ "Cinematic Music",
813
+ "Acoustic Music",
814
+ "Jazz Tracks",
815
+ "Classical Music",
816
+ "Pop Tracks",
817
+ "R&B Tracks",
818
+ "Gospel Music",
819
+ "Afrobeats",
820
+ "Reggae & Dancehall",
821
+ "Trap Beats",
822
+ "Drill Beats",
823
+ "Boom Bap Beats",
824
+ "Afrobeats Instrumentals",
825
+ "Pop Beats",
826
+ "Exclusive Beats",
827
+ "Leased Beats",
828
+ "Drum Loops",
829
+ "Bass Loops",
830
+ "Melody Loops",
831
+ "Guitar Loops",
832
+ "Vocal Chops",
833
+ "Acapellas",
834
+ "Stem Packs",
835
+ "UI & UX Sounds",
836
+ "Cinematic Sound Effects",
837
+ "Nature Sound Effects",
838
+ "Foley Sound Effects",
839
+ "Game Sound Effects",
840
+ "Cartoon Sound Effects",
841
+ "Notification Sounds",
842
+ "Horror Sound Effects",
843
+ "Voiceovers",
844
+ "Narration",
845
+ "Commercial Voiceovers",
846
+ "Character Voices",
847
+ "Podcast Intros",
848
+ "YouTube Intros",
849
+ "Logo Stings",
850
+ "Ad Jingles",
851
+ "ASMR",
852
+ "White Noise",
853
+ "Rain & Nature Sounds",
854
+ "Study & Focus Sounds",
855
+ "Sleep Sounds",
856
+ "Meditation Audio",
857
+ "Binaural Beats",
858
+ "DAW Templates",
859
+ "Ableton Templates",
860
+ "FL Studio Templates",
861
+ "Logic Pro Templates",
862
+ "VST Presets",
863
+ "Mastering Presets",
864
+ ],
865
+ "3D & Motion": [
866
+ "3D Character Models",
867
+ "3D Product Models",
868
+ "3D Architecture Models",
869
+ "3D Vehicle Models",
870
+ "3D Nature Models",
871
+ "Low Poly Models",
872
+ "High Poly Models",
873
+ "Blender Assets",
874
+ "Cinema 4D Assets",
875
+ "FBX & OBJ Files",
876
+ "GLB & GLTF Files",
877
+ "3D Interior Scenes",
878
+ "3D Exterior Scenes",
879
+ "Fantasy World Environments",
880
+ "Sci-Fi Environments",
881
+ "Game Environments",
882
+ "HDRI Maps",
883
+ "Sky Maps",
884
+ "Studio Setups",
885
+ "Rigged Characters",
886
+ "Animated Characters",
887
+ "Human Characters",
888
+ "Fantasy Characters",
889
+ "Cartoon Characters",
890
+ "Game-Ready Characters",
891
+ "Walk Cycles",
892
+ "After Effects Templates",
893
+ "Premiere Pro Templates",
894
+ "Title Animations",
895
+ "Transitions",
896
+ "Lower Thirds",
897
+ "Particle Effects",
898
+ "Kinetic Typography",
899
+ "Explainer Animations",
900
+ "Sprite Sheets",
901
+ "Tilemaps",
902
+ "UI Packs",
903
+ "Pixel Art",
904
+ "Unity Assets",
905
+ "Unreal Engine Assets",
906
+ "Godot Assets",
907
+ "AR Filters",
908
+ "Instagram Filters",
909
+ "Spark AR Assets",
910
+ "VR Environments",
911
+ "WebXR Assets",
912
+ "3D Font Effects",
913
+ "Neon Text Effects",
914
+ "Metallic Text Effects",
915
+ "Retro 3D Text",
916
+ "Animated 3D Text",
917
+ ],
918
+ "Presets & Tools": [
919
+ "Lightroom Presets",
920
+ "Portrait Presets",
921
+ "Landscape Presets",
922
+ "Cinematic Presets",
923
+ "Moody Presets",
924
+ "Vintage Presets",
925
+ "Film Presets",
926
+ "Bright & Airy Presets",
927
+ "Dark & Gritty Presets",
928
+ "Mobile Lightroom Presets",
929
+ "Photoshop Actions",
930
+ "Photoshop Brushes",
931
+ "Photo Retouching Actions",
932
+ "Photo Effect Actions",
933
+ "Texture Actions",
934
+ "Double Exposure Actions",
935
+ "Colour Grading Actions",
936
+ "LUTs",
937
+ "Cinematic LUTs",
938
+ "Film Emulation LUTs",
939
+ "Drone LUTs",
940
+ "DaVinci Resolve Presets",
941
+ "Premiere Pro Presets",
942
+ "Procreate Brushes",
943
+ "Procreate Lettering Brushes",
944
+ "Procreate Watercolour Brushes",
945
+ "Procreate Inking Brushes",
946
+ "Procreate Texture Brushes",
947
+ "Procreate Stamp Sets",
948
+ "Figma UI Kits",
949
+ "Figma Component Libraries",
950
+ "Figma Plugins",
951
+ "Figma Wireframe Kits",
952
+ "Figma Flow Kits",
953
+ "Figma Variable Sets",
954
+ "Midjourney Prompt Packs",
955
+ "ChatGPT Prompt Packs",
956
+ "Stable Diffusion Prompts",
957
+ "DALL-E Prompt Packs",
958
+ "AI Marketing Prompts",
959
+ "AI Business Prompts",
960
+ "AI Writing Prompts",
961
+ "AI Image Generation Prompts",
962
+ ],
963
+ "Content & Copy": [
964
+ "Homepage Copy",
965
+ "Landing Page Copy",
966
+ "About Page Copy",
967
+ "Product Page Copy",
968
+ "SaaS Website Copy",
969
+ "Agency Website Copy",
970
+ "FAQ Copy",
971
+ "SEO Copy",
972
+ "Facebook Ad Copy",
973
+ "Google Ad Copy",
974
+ "Sales Page Copy",
975
+ "Product Descriptions",
976
+ "Taglines & Slogans",
977
+ "CTA Copy",
978
+ "Email Subject Lines",
979
+ "Welcome Email Sequences",
980
+ "Nurture Sequences",
981
+ "Sales Funnel Sequences",
982
+ "Abandoned Cart Sequences",
983
+ "Re-engagement Sequences",
984
+ "Onboarding Sequences",
985
+ "Cold Outreach Templates",
986
+ "Instagram Captions",
987
+ "LinkedIn Captions",
988
+ "Twitter/X Captions",
989
+ "TikTok Captions",
990
+ "Hashtag Packs",
991
+ "Content Calendar Templates",
992
+ "YouTube Scripts",
993
+ "TikTok Scripts",
994
+ "Podcast Scripts",
995
+ "VSL Scripts",
996
+ "Webinar Scripts",
997
+ "Ad Scripts",
998
+ "Explainer Scripts",
999
+ "Blog Post Templates",
1000
+ "SEO Article Templates",
1001
+ "Case Study Templates",
1002
+ "Thought Leadership Templates",
1003
+ "eBooks",
1004
+ "Lead Magnets",
1005
+ "Workbooks",
1006
+ "White Papers",
1007
+ "Industry Reports",
1008
+ "Business Proposals",
1009
+ "Contract Templates",
1010
+ "Press Releases",
1011
+ "Business Plans",
1012
+ "Pitch Deck Copy",
1013
+ "Cover Letters",
1014
+ "Resumes & CVs",
1015
+ "Bios & About Me",
1016
+ "Fiction Templates",
1017
+ "Screenplay Templates",
1018
+ "Song Lyric Templates",
1019
+ "Poetry Templates",
1020
+ ],
1021
+ "Print & Merch": [
1022
+ "Abstract Wall Art",
1023
+ "Botanical Wall Art",
1024
+ "Portrait Wall Art",
1025
+ "Typography Wall Art",
1026
+ "Landscape Wall Art",
1027
+ "Minimalist Wall Art",
1028
+ "Boho Wall Art",
1029
+ "Gallery Wall Sets",
1030
+ "Black & White Prints",
1031
+ "Event Posters",
1032
+ "Concert Posters",
1033
+ "Party Flyers",
1034
+ "Retro Posters",
1035
+ "Vintage Posters",
1036
+ "Movie-Style Posters",
1037
+ "A4 Templates",
1038
+ "A3 Templates",
1039
+ "US Letter Templates",
1040
+ "Portrait Art",
1041
+ "Fantasy Art",
1042
+ "Realism Art",
1043
+ "Surrealism Art",
1044
+ "Watercolour Art",
1045
+ "Oil Style Art",
1046
+ "Concept Art",
1047
+ "Business Cards",
1048
+ "Letterheads",
1049
+ "Greeting Cards",
1050
+ "Wedding Invitations",
1051
+ "Event Invitations",
1052
+ "Thank You Cards",
1053
+ "Notebook Covers",
1054
+ "T-Shirt Designs",
1055
+ "Hoodie Designs",
1056
+ "Hat Designs",
1057
+ "Tote Bag Designs",
1058
+ "Mug Designs",
1059
+ "Phone Case Designs",
1060
+ "Sticker Designs",
1061
+ "Print-On-Demand Designs",
1062
+ "Embroidery Designs",
1063
+ "Box Designs",
1064
+ "Label Designs",
1065
+ "Bag Designs",
1066
+ "Bottle Designs",
1067
+ "Pouch Designs",
1068
+ "Food & Beverage Packaging",
1069
+ "Cosmetics Packaging",
1070
+ "Dieline Templates",
1071
+ "Daily Planner Inserts",
1072
+ "Weekly Planner Inserts",
1073
+ "Monthly Planner Inserts",
1074
+ "Habit Trackers",
1075
+ "Gratitude Journals",
1076
+ "Goal Setting Sheets",
1077
+ "Budget Planners",
1078
+ "Fabric Print Designs",
1079
+ "Wallpaper Designs",
1080
+ "Wrapping Paper Designs",
1081
+ "Repeat Pattern Designs",
1082
+ "CMYK Print-Ready Files",
1083
+ ],
1084
+ Bundles: [
1085
+ "Design Bundles",
1086
+ "Font Bundles",
1087
+ "Illustration Bundles",
1088
+ "Icon Bundles",
1089
+ "Template Bundles",
1090
+ "Mockup Bundles",
1091
+ "Photo Bundles",
1092
+ "Video Bundles",
1093
+ "Audio Bundles",
1094
+ "Preset Bundles",
1095
+ "Procreate Bundles",
1096
+ "Notion Bundles",
1097
+ "Social Media Bundles",
1098
+ "Branding Bundles",
1099
+ "Print Bundles",
1100
+ "Creator Packs",
1101
+ "Starter Kits",
1102
+ "Seasonal & Limited Edition",
1103
+ ],
1104
+ Other: [
1105
+ "Miscellaneous",
1106
+ "Consulting & Services",
1107
+ "Custom Commissions",
1108
+ "Memberships & Subscriptions",
1109
+ "Gift Cards",
1110
+ "Uncategorized",
1111
+ ],
1112
+ };
@@ -242,7 +242,9 @@ export const ProductEntitySchema = z
242
242
  coverImages: z
243
243
  .array(ProductCoverImageEntitySchema.extend({ url: z.url() }))
244
244
  .default([]),
245
- productFiles: z.array(ProductDeliveryFileEntitySchema.extend({url: z.url()})).default([]),
245
+ productFiles: z
246
+ .array(ProductDeliveryFileEntitySchema.extend({ url: z.url() }))
247
+ .default([]),
246
248
  productLinks: z.array(z.url()).default([]),
247
249
 
248
250
  pricingModel: z.enum(PRICING_MODELS),
@@ -260,14 +262,49 @@ export const ProductEntitySchema = z
260
262
  })
261
263
  .openapi({ title: "ProductEntity" });
262
264
 
263
- // --- Type Exports ---
265
+ export const ProductSearchDocumentSchema = z.object({
266
+ id: z.cuid2(),
267
+ sellerId: z.cuid2(),
268
+ sellerUsername: z.string(),
269
+ sellerName: z.string(),
270
+ sellerImageUrl: z.string().url().nullable(),
271
+ title: z.string(),
272
+ category: z.string(),
273
+ subcategory: z.string().nullable(),
274
+ tags: z.array(z.string()),
275
+ thumbnailImgUrl: z.url().nullable(),
276
+ currency: z.enum(WAGES_CURRENCY),
277
+ price: z.number().nullable(),
278
+ suggestedPrice: z.number().nullable(),
279
+ createdAt: z.coerce.date(),
280
+ updatedAt: z.coerce.date(),
281
+ deletedAt: z.coerce.date().optional().nullable(),
282
+ });
283
+
284
+ export const SearchProductInpuSchema = z.object({
285
+ queryString: z
286
+ .string()
287
+ .min(1, { message: "Search string cannot be empty" })
288
+ .max(200, { message: "Search string cannot exceed 200 characters" })
289
+ .openapi({ example: "typescript utility types" }),
290
+ cursor: z.string().optional().openapi({ example: "ckj1a2b3c0000cur" }),
291
+ });
292
+
293
+ export const SearchProductOutputSchema = z.object({
294
+ products: z.array(ProductSearchDocumentSchema),
295
+ nextCursor: z.string().optional().nullable(),
296
+ });
297
+
264
298
 
299
+ export type SearchProductInput = z.infer<typeof SearchProductInpuSchema>;
300
+ export type SearchProductOutput = z.infer<typeof SearchProductOutputSchema>;
265
301
  export type CoverImageInput = z.infer<typeof CoverImageInputSchema>;
266
302
  export type DeliveryFileInput = z.infer<typeof DeliveryFileInputSchema>;
267
303
 
268
304
  export type ProductCoverImageEntity = z.infer<
269
305
  typeof ProductCoverImageEntitySchema
270
306
  >;
307
+
271
308
  export type ProductDeliveryFileEntity = z.infer<
272
309
  typeof ProductDeliveryFileEntitySchema
273
310
  >;
@@ -281,3 +318,4 @@ export type UpdateProductInputEntity = z.infer<typeof UpdateProductInputSchema>;
281
318
  export type ProductEntity = z.infer<typeof ProductEntitySchema>;
282
319
 
283
320
  export type BaseProductEntity = z.infer<typeof BaseProductSchema>;
321
+ export type ProductSearchDocument = z.infer<typeof ProductSearchDocumentSchema>;