@slicemachine/adapter-next 0.3.18-dev-next-release.1 → 0.3.18-dev-next-release.3

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.
Files changed (49) hide show
  1. package/dist/AlternateGrid/javascript.jsx +247 -0
  2. package/dist/AlternateGrid/typescript.tsx +244 -0
  3. package/dist/CallToAction/javascript.jsx +135 -0
  4. package/dist/CallToAction/typescript.tsx +137 -0
  5. package/dist/CustomerLogos/javascript.jsx +129 -0
  6. package/dist/CustomerLogos/typescript.tsx +128 -0
  7. package/dist/Hero/javascript.jsx +207 -0
  8. package/dist/Hero/typescript.tsx +204 -0
  9. package/dist/hooks/project-init.cjs +12 -12
  10. package/dist/hooks/project-init.cjs.map +1 -1
  11. package/dist/hooks/project-init.js +12 -12
  12. package/dist/hooks/project-init.js.map +1 -1
  13. package/dist/plugin.cjs +18 -2
  14. package/dist/plugin.cjs.map +1 -1
  15. package/dist/plugin.js +19 -3
  16. package/dist/plugin.js.map +1 -1
  17. package/dist/sliceTemplates/AlternateGrid/index.cjs +4 -505
  18. package/dist/sliceTemplates/AlternateGrid/index.cjs.map +1 -1
  19. package/dist/sliceTemplates/AlternateGrid/index.d.ts +2 -3
  20. package/dist/sliceTemplates/AlternateGrid/index.js +4 -505
  21. package/dist/sliceTemplates/AlternateGrid/index.js.map +1 -1
  22. package/dist/sliceTemplates/CallToAction/index.cjs +4 -291
  23. package/dist/sliceTemplates/CallToAction/index.cjs.map +1 -1
  24. package/dist/sliceTemplates/CallToAction/index.d.ts +2 -3
  25. package/dist/sliceTemplates/CallToAction/index.js +4 -291
  26. package/dist/sliceTemplates/CallToAction/index.js.map +1 -1
  27. package/dist/sliceTemplates/CustomerLogos/index.cjs +3 -275
  28. package/dist/sliceTemplates/CustomerLogos/index.cjs.map +1 -1
  29. package/dist/sliceTemplates/CustomerLogos/index.d.ts +2 -3
  30. package/dist/sliceTemplates/CustomerLogos/index.js +3 -275
  31. package/dist/sliceTemplates/CustomerLogos/index.js.map +1 -1
  32. package/dist/sliceTemplates/Hero/index.cjs +4 -517
  33. package/dist/sliceTemplates/Hero/index.cjs.map +1 -1
  34. package/dist/sliceTemplates/Hero/index.d.ts +2 -3
  35. package/dist/sliceTemplates/Hero/index.js +4 -517
  36. package/dist/sliceTemplates/Hero/index.js.map +1 -1
  37. package/package.json +3 -3
  38. package/src/hooks/project-init.ts +12 -12
  39. package/src/plugin.ts +22 -2
  40. package/src/sliceTemplates/AlternateGrid/index.ts +5 -510
  41. package/src/sliceTemplates/CallToAction/index.ts +4 -298
  42. package/src/sliceTemplates/CustomerLogos/index.ts +3 -282
  43. package/src/sliceTemplates/Hero/index.ts +4 -524
  44. package/dist/hooks/sliceTemplateLibrary-read.cjs +0 -39
  45. package/dist/hooks/sliceTemplateLibrary-read.cjs.map +0 -1
  46. package/dist/hooks/sliceTemplateLibrary-read.d.ts +0 -3
  47. package/dist/hooks/sliceTemplateLibrary-read.js +0 -39
  48. package/dist/hooks/sliceTemplateLibrary-read.js.map +0 -1
  49. package/src/hooks/sliceTemplateLibrary-read.ts +0 -59
@@ -332,7 +332,7 @@ const createPreviewRoute = async ({
332
332
  export async function GET(request: NextRequest) {
333
333
  const client = createClient();
334
334
 
335
- await redirectToPreviewURL({ client, request });
335
+ return await redirectToPreviewURL({ client, request });
336
336
  }
337
337
  `;
338
338
  } else {
@@ -344,7 +344,7 @@ const createPreviewRoute = async ({
344
344
  export async function GET(request) {
345
345
  const client = createClient();
346
346
 
347
- await redirectToPreviewURL({ client, request });
347
+ return await redirectToPreviewURL({ client, request });
348
348
  }
349
349
  `;
350
350
  }
@@ -356,12 +356,12 @@ const createPreviewRoute = async ({
356
356
 
357
357
  import { createClient } from "../../prismicio";
358
358
 
359
- export default async (req: NextApiRequest, res: NextApiResponse) => {
359
+ export default async function handler(req: NextApiRequest, res: NextApiResponse) {
360
360
  const client = createClient({ req });
361
361
 
362
362
  await setPreviewData({ req, res });
363
363
 
364
- await redirectToPreviewURL({ req, res, client });
364
+ return await redirectToPreviewURL({ req, res, client });
365
365
  };
366
366
  `;
367
367
  } else {
@@ -370,12 +370,12 @@ const createPreviewRoute = async ({
370
370
 
371
371
  import { createClient } from "../../prismicio";
372
372
 
373
- export default async (req, res) => {
373
+ export default async function handler(req, res) {
374
374
  const client = createClient({ req });
375
375
 
376
376
  await setPreviewData({ req, res });
377
377
 
378
- await redirectToPreviewURL({ req, res, client });
378
+ return await redirectToPreviewURL({ req, res, client });
379
379
  };
380
380
  `;
381
381
  }
@@ -422,8 +422,8 @@ const createExitPreviewRoute = async ({
422
422
  contents = source`
423
423
  import { exitPreview } from "@prismicio/next";
424
424
 
425
- export async function GET() {
426
- return await exitPreview();
425
+ export function GET() {
426
+ return exitPreview();
427
427
  }
428
428
  `;
429
429
  } else {
@@ -432,16 +432,16 @@ const createExitPreviewRoute = async ({
432
432
  import { NextApiRequest, NextApiResponse } from "next";
433
433
  import { exitPreview } from "@prismicio/next";
434
434
 
435
- export async function handler(req: NextApiRequest, res: NextApiResponse) {
436
- return await exitPreview({ req, res });
435
+ export default function handler(req: NextApiRequest, res: NextApiResponse) {
436
+ return exitPreview({ req, res });
437
437
  }
438
438
  `;
439
439
  } else {
440
440
  contents = source`
441
441
  import { exitPreview } from "@prismicio/next";
442
442
 
443
- export async function handler(req, res) {
444
- return await exitPreview({ req, res });
443
+ export default function handler(req, res) {
444
+ return exitPreview({ req, res });
445
445
  }
446
446
  `;
447
447
  }
package/src/plugin.ts CHANGED
@@ -1,3 +1,6 @@
1
+ import path from "node:path";
2
+ import { fileURLToPath } from "node:url";
3
+
1
4
  import { defineSliceMachinePlugin } from "@slicemachine/plugin-kit";
2
5
  import {
3
6
  deleteCustomTypeDirectory,
@@ -10,6 +13,7 @@ import {
10
13
  readSliceFile,
11
14
  readSliceLibrary,
12
15
  readSliceModel,
16
+ readSliceTemplateLibrary,
13
17
  renameCustomType,
14
18
  renameSlice,
15
19
  upsertGlobalTypeScriptTypes,
@@ -29,9 +33,14 @@ import { documentationRead } from "./hooks/documentation-read";
29
33
  import { projectInit } from "./hooks/project-init";
30
34
  import { sliceCreate } from "./hooks/slice-create";
31
35
  import { sliceSimulatorSetupRead } from "./hooks/sliceSimulator-setup-read";
32
- import { sliceTemplateLibraryRead } from "./hooks/sliceTemplateLibrary-read";
33
36
  import { snippetRead } from "./hooks/snippet-read";
34
37
 
38
+ // Slice Template Library
39
+ import * as Hero from "./sliceTemplates/Hero";
40
+ import * as CallToAction from "./sliceTemplates/CallToAction";
41
+ import * as AlternateGrid from "./sliceTemplates/AlternateGrid";
42
+ import * as CustomerLogos from "./sliceTemplates/CustomerLogos";
43
+
35
44
  export const plugin = defineSliceMachinePlugin<PluginOptions>({
36
45
  meta: {
37
46
  name: pkgName,
@@ -160,7 +169,18 @@ export const plugin = defineSliceMachinePlugin<PluginOptions>({
160
169
  // slice-template-library:*
161
170
  ////////////////////////////////////////////////////////////////
162
171
 
163
- hook("slice-template-library:read", sliceTemplateLibraryRead);
172
+ hook("slice-template-library:read", async (data, context) => {
173
+ return await readSliceTemplateLibrary({
174
+ ...data,
175
+ ...context,
176
+ dirName: path.dirname(fileURLToPath(new URL(import.meta.url))),
177
+ templates: [Hero, CustomerLogos, AlternateGrid, CallToAction],
178
+ componentFileNames: {
179
+ js: "javascript.jsx",
180
+ ts: "javascript.tsx",
181
+ },
182
+ });
183
+ });
164
184
 
165
185
  ////////////////////////////////////////////////////////////////
166
186
  // custom-type:*
@@ -1,7 +1,10 @@
1
1
  import { SharedSliceContent } from "@prismicio/types-internal/lib/content";
2
2
  import { SharedSlice } from "@prismicio/types-internal/lib/customtypes";
3
- import { stripIndent } from "common-tags";
4
- import { pascalCase } from "../../lib/pascalCase";
3
+
4
+ export const screenshotPaths = {
5
+ default: "AlternateGrid/screenshot-default.png",
6
+ imageRight: "AlternateGrid/screenshot-imageRight.png",
7
+ };
5
8
 
6
9
  export const mocks: SharedSliceContent[] = [
7
10
  {
@@ -436,511 +439,3 @@ export const model: SharedSlice = {
436
439
  },
437
440
  ],
438
441
  };
439
-
440
- export const screenshotPaths = {
441
- default: "AlternateGrid/screenshot-default.png",
442
- imageRight: "AlternateGrid/screenshot-imageRight.png",
443
- };
444
-
445
- export const createComponentContents = (
446
- model: SharedSlice,
447
- isTypeScriptProject: boolean,
448
- ): string => {
449
- const pascalName = pascalCase(model.name);
450
- if (isTypeScriptProject) {
451
- return stripIndent`
452
- import { Content, isFilled } from "@prismicio/client";
453
- import { PrismicNextImage } from "@prismicio/next";
454
- import { SliceComponentProps, PrismicRichText } from "@prismicio/react";
455
-
456
- /**
457
- * Props for \`${pascalName}\`.
458
- */
459
- export type ${pascalName}Props = SliceComponentProps<Content.${pascalName}Slice>;
460
-
461
- /**
462
- * Component for "${model.name}" Slices.
463
- */
464
- const ${pascalName} = ({ slice }: ${pascalName}Props): JSX.Element => {
465
- return (
466
- <section
467
- data-slice-type={slice.slice_type}
468
- data-slice-variation={slice.variation}
469
- className="es-bounded es-alternate-grid"
470
- >
471
- <div
472
- className={\`
473
- es-bounded__content
474
- es-alternate-grid__content
475
- \${isFilled.image(slice.primary.image)
476
- ? "es-alternate-grid__content--with-image"
477
- : ""
478
- }
479
- \`}
480
- >
481
- {isFilled.image(slice.primary.image) && (
482
- <PrismicNextImage
483
- field={slice.primary.image}
484
- className={\`
485
- es-alternate-grid__image
486
- \${slice.variation === "imageRight"
487
- ? "es-alternate-grid__image--right"
488
- : "es-alternate-grid__image--left"
489
- }
490
- \`}
491
- />
492
- )}
493
- <div className="es-alternate-grid__primary-content">
494
- <div className="es-alternate-grid__primary-content__intro">
495
- {isFilled.keyText(slice.primary.eyebrowHeadline) && (
496
- <p className="es-alternate-grid__primary-content__intro__eyebrow">
497
- {slice.primary.eyebrowHeadline}
498
- </p>
499
- )}
500
- {isFilled.richText(slice.primary.title) && (
501
- <div className="es-alternate-grid__primary-content__intro__headline">
502
- <PrismicRichText field={slice.primary.title} />
503
- </div>
504
- )}
505
- {isFilled.richText(slice.primary.description) && (
506
- <div className="es-alternate-grid__primary-content__intro__description">
507
- <PrismicRichText field={slice.primary.description} />
508
- </div>
509
- )}
510
- </div>
511
- {slice.items.length > 0 && (
512
- <div className="es-alternate-grid__primary-content__items">
513
- {slice.items.map((item, i) => (
514
- <div key={\`item-\${i + 1}\`} className="es-alternate-grid__item">
515
- {isFilled.richText(item.title) && (
516
- <div className="es-alternate-grid__item__heading">
517
- <PrismicRichText field={item.title} />
518
- </div>
519
- )}
520
- {isFilled.richText(item.description) && (
521
- <div className="es-alternate-grid__item__description">
522
- <PrismicRichText field={item.description} />
523
- </div>
524
- )}
525
- </div>
526
- ))}
527
- </div>
528
- )}
529
- </div>
530
- </div>
531
- <style>
532
- {\`
533
- .es-bounded {
534
- margin: 0px;
535
- min-width: 0px;
536
- position: relative;
537
- padding: 8vw 1.25rem;
538
- }
539
-
540
- .es-bounded-content {
541
- min-width: 0px;
542
- max-width: 90%;
543
- margin: 0px auto;
544
- }
545
-
546
- .es-alternate-grid {
547
- font-family: system-ui, sans-serif;
548
- background-color: #fff;
549
- color: #333;
550
- }
551
-
552
- .es-alternate-grid__content {
553
- display: grid;
554
- gap: 1.5rem;
555
- grid-auto-flow: dense;
556
- }
557
-
558
- @media (min-width: 640px) {
559
- .es-alternate-grid__content--with-image {
560
- grid-template-columns: repeat(2, 1fr);
561
- }
562
- }
563
-
564
- @media (min-width: 1200px) {
565
- .es-alternate-grid__content--with-image {
566
- grid-template-columns: repeat(2, 1fr);
567
- }
568
- }
569
-
570
- .es-alternate-grid__image {
571
- width: auto;
572
- height: auto;
573
- max-width: 100%;
574
- align-self: center;
575
- }
576
-
577
- .es-alternate-grid__image--left {
578
- order: 1;
579
- }
580
-
581
- .es-alternate-grid__image--left + div {
582
- order: 2;
583
- }
584
-
585
- .es-alternate-grid__image--right{
586
- order: 2;
587
- }
588
-
589
- .es-alternate-grid__image--right + div {
590
- order: 1;
591
- }
592
-
593
- .es-alternate-grid__primary-content {
594
- display: grid;
595
- gap: 2rem;
596
- }
597
-
598
- .es-alternate-grid__primary-content__intro {
599
- display: grid;
600
- gap: 0.5rem;
601
- }
602
-
603
- .es-alternate-grid__primary-content__intro__eyebrow {
604
- color: #8592e0;
605
- font-size: 1.15rem;
606
- font-weight: 500;
607
- margin: 0;
608
- }
609
-
610
- .es-alternate-grid__primary-content__intro__headline {
611
- font-size: 1.625rem;
612
- font-weight: 700;
613
- }
614
-
615
- .es-alternate-grid__primary-content__intro__headline > * {
616
- margin: 0;
617
- }
618
-
619
- @media (min-width: 640px) {
620
- .es-alternate-grid__primary-content__intro__headline {
621
- font-size: 2rem;
622
- }
623
- }
624
-
625
- @media (min-width: 1024px) {
626
- .es-alternate-grid__primary-content__intro__headline {
627
- font-size: 2.5rem;
628
- }
629
- }
630
-
631
- @media (min-width: 1200px) {
632
- .es-alternate-grid__primary-content__intro__headline {
633
- font-size: 2.75rem;
634
- }
635
- }
636
-
637
- .es-alternate-grid__primary-content__intro__description {
638
- font-size: 1.15rem;
639
- max-width: 38rem;
640
- }
641
-
642
- .es-alternate-grid__primary-content__intro__description > p {
643
- margin: 0;
644
- }
645
-
646
- @media (min-width: 1200px) {
647
- .es-alternate-grid__primary-content__intro__description {
648
- font-size: 1.4rem;
649
- }
650
- }
651
-
652
- .es-alternate-grid__primary-content__items {
653
- display: grid;
654
- gap: 2rem;
655
- }
656
-
657
- @media (min-width: 640px) {
658
- .es-alternate-grid__primary-content__items {
659
- grid-template-columns: repeat(2, 1fr);
660
- }
661
- }
662
-
663
- .es-alternate-grid__item {
664
- display: grid;
665
- align-content: start;
666
- }
667
-
668
- .es-alternate-grid__item__icon {
669
- max-height: 3rem;
670
- }
671
-
672
- .es-alternate-grid__item__heading {
673
- font-weight: 700;
674
- font-size: 1.17rem;
675
- margin-top: 0;
676
- margin-bottom: .5rem;
677
- }
678
-
679
- .es-alternate-grid__item__heading > * {
680
- margin: 0;
681
- }
682
-
683
- .es-alternate-grid__item__description {
684
- font-size: 0.9rem;
685
- }
686
-
687
- .es-alternate-grid__item__description > * {
688
- margin: 0;
689
- }
690
- \`}
691
- </style>
692
- </section>
693
- );
694
- };
695
-
696
- export default ${pascalName};
697
-
698
- `;
699
- }
700
-
701
- return stripIndent`
702
- import { isFilled } from "@prismicio/client";
703
- import { PrismicNextImage } from "@prismicio/next";
704
- import { PrismicRichText } from "@prismicio/react";
705
-
706
- /**
707
- * @typedef {import("@prismicio/client").Content.${pascalName}Slice} ${pascalName}Slice
708
- * @typedef {import("@prismicio/react").SliceComponentProps<${pascalName}Slice>} ${pascalName}Props
709
- * @param {${pascalName}Props}
710
- */
711
- const ${pascalName} = ({ slice }) => {
712
- return (
713
- <section
714
- data-slice-type={slice.slice_type}
715
- data-slice-variation={slice.variation}
716
- className="es-bounded es-alternate-grid"
717
- >
718
- <div
719
- className={\`
720
- es-bounded__content
721
- es-alternate-grid__content
722
- \${isFilled.image(slice.primary.image)
723
- ? "es-alternate-grid__content--with-image"
724
- : ""
725
- }
726
- \`}
727
- >
728
- {isFilled.image(slice.primary.image) && (
729
- <PrismicNextImage
730
- field={slice.primary.image}
731
- className={\`
732
- es-alternate-grid__image
733
- \${slice.variation === "imageRight"
734
- ? "es-alternate-grid__image--right"
735
- : "es-alternate-grid__image--left"
736
- }
737
- \`}
738
- />
739
- )}
740
- <div className="es-alternate-grid__primary-content">
741
- <div className="es-alternate-grid__primary-content__intro">
742
- {isFilled.keyText(slice.primary.eyebrowHeadline) && (
743
- <p className="es-alternate-grid__primary-content__intro__eyebrow">
744
- {slice.primary.eyebrowHeadline}
745
- </p>
746
- )}
747
- {isFilled.richText(slice.primary.title) && (
748
- <div className="es-alternate-grid__primary-content__intro__headline">
749
- <PrismicRichText field={slice.primary.title} />
750
- </div>
751
- )}
752
- {isFilled.richText(slice.primary.description) && (
753
- <div className="es-alternate-grid__primary-content__intro__description">
754
- <PrismicRichText field={slice.primary.description} />
755
- </div>
756
- )}
757
- </div>
758
- {slice.items.length > 0 && (
759
- <div className="es-alternate-grid__primary-content__items">
760
- {slice.items.map((item, i) => (
761
- <div key={\`item-\${i + 1}\`} className="es-alternate-grid__item">
762
- {isFilled.richText(item.title) && (
763
- <div className="es-alternate-grid__item__heading">
764
- <PrismicRichText field={item.title} />
765
- </div>
766
- )}
767
- {isFilled.richText(item.description) && (
768
- <div className="es-alternate-grid__item__description">
769
- <PrismicRichText field={item.description} />
770
- </div>
771
- )}
772
- </div>
773
- ))}
774
- </div>
775
- )}
776
- </div>
777
- </div>
778
- <style>
779
- {\`
780
- .es-bounded {
781
- margin: 0px;
782
- min-width: 0px;
783
- position: relative;
784
- padding: 8vw 1.25rem;
785
- }
786
-
787
- .es-bounded-content {
788
- min-width: 0px;
789
- max-width: 90%;
790
- margin: 0px auto;
791
- }
792
-
793
- .es-alternate-grid {
794
- font-family: system-ui, sans-serif;
795
- background-color: #fff;
796
- color: #333;
797
- }
798
-
799
- .es-alternate-grid__content {
800
- display: grid;
801
- gap: 1.5rem;
802
- grid-auto-flow: dense;
803
- }
804
-
805
- @media (min-width: 640px) {
806
- .es-alternate-grid__content--with-image {
807
- grid-template-columns: repeat(2, 1fr);
808
- }
809
- }
810
-
811
- @media (min-width: 1200px) {
812
- .es-alternate-grid__content--with-image {
813
- grid-template-columns: repeat(2, 1fr);
814
- }
815
- }
816
-
817
- .es-alternate-grid__image {
818
- width: auto;
819
- height: auto;
820
- max-width: 100%;
821
- align-self: center;
822
- }
823
-
824
- .es-alternate-grid__image--left {
825
- order: 1;
826
- }
827
-
828
- .es-alternate-grid__image--left + div {
829
- order: 2;
830
- }
831
-
832
- .es-alternate-grid__image--right{
833
- order: 2;
834
- }
835
-
836
- .es-alternate-grid__image--right + div {
837
- order: 1;
838
- }
839
-
840
- .es-alternate-grid__primary-content {
841
- display: grid;
842
- gap: 2rem;
843
- }
844
-
845
- .es-alternate-grid__primary-content__intro {
846
- display: grid;
847
- gap: 0.5rem;
848
- }
849
-
850
- .es-alternate-grid__primary-content__intro__eyebrow {
851
- color: #8592e0;
852
- font-size: 1.15rem;
853
- font-weight: 500;
854
- margin: 0;
855
- }
856
-
857
- .es-alternate-grid__primary-content__intro__headline {
858
- font-size: 1.625rem;
859
- font-weight: 700;
860
- }
861
-
862
- .es-alternate-grid__primary-content__intro__headline > * {
863
- margin: 0;
864
- }
865
-
866
- @media (min-width: 640px) {
867
- .es-alternate-grid__primary-content__intro__headline {
868
- font-size: 2rem;
869
- }
870
- }
871
-
872
- @media (min-width: 1024px) {
873
- .es-alternate-grid__primary-content__intro__headline {
874
- font-size: 2.5rem;
875
- }
876
- }
877
-
878
- @media (min-width: 1200px) {
879
- .es-alternate-grid__primary-content__intro__headline {
880
- font-size: 2.75rem;
881
- }
882
- }
883
-
884
- .es-alternate-grid__primary-content__intro__description {
885
- font-size: 1.15rem;
886
- max-width: 38rem;
887
- }
888
-
889
- .es-alternate-grid__primary-content__intro__description > p {
890
- margin: 0;
891
- }
892
-
893
- @media (min-width: 1200px) {
894
- .es-alternate-grid__primary-content__intro__description {
895
- font-size: 1.4rem;
896
- }
897
- }
898
-
899
- .es-alternate-grid__primary-content__items {
900
- display: grid;
901
- gap: 2rem;
902
- }
903
-
904
- @media (min-width: 640px) {
905
- .es-alternate-grid__primary-content__items {
906
- grid-template-columns: repeat(2, 1fr);
907
- }
908
- }
909
-
910
- .es-alternate-grid__item {
911
- display: grid;
912
- align-content: start;
913
- }
914
-
915
- .es-alternate-grid__item__icon {
916
- max-height: 3rem;
917
- }
918
-
919
- .es-alternate-grid__item__heading {
920
- font-weight: 700;
921
- font-size: 1.17rem;
922
- margin-top: 0;
923
- margin-bottom: .5rem;
924
- }
925
-
926
- .es-alternate-grid__item__heading > * {
927
- margin: 0;
928
- }
929
-
930
- .es-alternate-grid__item__description {
931
- font-size: 0.9rem;
932
- }
933
-
934
- .es-alternate-grid__item__description > * {
935
- margin: 0;
936
- }
937
- \`}
938
- </style>
939
- </section>
940
- );
941
- };
942
-
943
- export default ${pascalName};
944
-
945
- `;
946
- };