@slicemachine/adapter-next 0.3.18-dev-next-release.2 → 0.3.18-dev-next-release.4

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 (44) 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/plugin.cjs +18 -2
  10. package/dist/plugin.cjs.map +1 -1
  11. package/dist/plugin.js +19 -3
  12. package/dist/plugin.js.map +1 -1
  13. package/dist/sliceTemplates/AlternateGrid/index.cjs +4 -505
  14. package/dist/sliceTemplates/AlternateGrid/index.cjs.map +1 -1
  15. package/dist/sliceTemplates/AlternateGrid/index.d.ts +2 -3
  16. package/dist/sliceTemplates/AlternateGrid/index.js +4 -505
  17. package/dist/sliceTemplates/AlternateGrid/index.js.map +1 -1
  18. package/dist/sliceTemplates/CallToAction/index.cjs +4 -291
  19. package/dist/sliceTemplates/CallToAction/index.cjs.map +1 -1
  20. package/dist/sliceTemplates/CallToAction/index.d.ts +2 -3
  21. package/dist/sliceTemplates/CallToAction/index.js +4 -291
  22. package/dist/sliceTemplates/CallToAction/index.js.map +1 -1
  23. package/dist/sliceTemplates/CustomerLogos/index.cjs +3 -275
  24. package/dist/sliceTemplates/CustomerLogos/index.cjs.map +1 -1
  25. package/dist/sliceTemplates/CustomerLogos/index.d.ts +2 -3
  26. package/dist/sliceTemplates/CustomerLogos/index.js +3 -275
  27. package/dist/sliceTemplates/CustomerLogos/index.js.map +1 -1
  28. package/dist/sliceTemplates/Hero/index.cjs +4 -517
  29. package/dist/sliceTemplates/Hero/index.cjs.map +1 -1
  30. package/dist/sliceTemplates/Hero/index.d.ts +2 -3
  31. package/dist/sliceTemplates/Hero/index.js +4 -517
  32. package/dist/sliceTemplates/Hero/index.js.map +1 -1
  33. package/package.json +3 -3
  34. package/src/plugin.ts +22 -2
  35. package/src/sliceTemplates/AlternateGrid/index.ts +5 -510
  36. package/src/sliceTemplates/CallToAction/index.ts +4 -298
  37. package/src/sliceTemplates/CustomerLogos/index.ts +3 -282
  38. package/src/sliceTemplates/Hero/index.ts +4 -524
  39. package/dist/hooks/sliceTemplateLibrary-read.cjs +0 -39
  40. package/dist/hooks/sliceTemplateLibrary-read.cjs.map +0 -1
  41. package/dist/hooks/sliceTemplateLibrary-read.d.ts +0 -3
  42. package/dist/hooks/sliceTemplateLibrary-read.js +0 -39
  43. package/dist/hooks/sliceTemplateLibrary-read.js.map +0 -1
  44. package/src/hooks/sliceTemplateLibrary-read.ts +0 -59
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
- };