@nascentdigital/funnel-ui 4.6.1 → 5.0.1

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 (68) hide show
  1. package/dist/client/fields/EmbeddedVideo/EmbeddedVideo.d.ts +2 -2
  2. package/dist/client/fields/EmbeddedVideo/EmbeddedVideo.js +3 -3
  3. package/dist/client/fields/EmbeddedVideo/vimeo/VimeoVideo.d.ts +3 -3
  4. package/dist/client/fields/EmbeddedVideo/vimeo/VimeoVideo.js +4 -3
  5. package/dist/client/fields/EmbeddedVideo/youtube/YoutubeVideo.d.ts +3 -3
  6. package/dist/client/fields/EmbeddedVideo/youtube/YoutubeVideo.js +4 -3
  7. package/dist/client/fields/LazyVideo.d.ts +6 -1
  8. package/dist/client/fields/LazyVideo.js +6 -4
  9. package/dist/client/hooks/useTouch.js +1 -0
  10. package/dist/client/interaction/paginator/Paginator.js +0 -1
  11. package/dist/server/blocks/Block.d.ts +82 -14
  12. package/dist/server/blocks/Block.js +782 -61
  13. package/dist/server/blocks/MediaLayout.d.ts +23 -4
  14. package/dist/server/blocks/MediaLayout.js +2 -12
  15. package/dist/server/blocks/RelatedPages.d.ts +2 -0
  16. package/dist/server/blocks/RelatedPages.js +4 -4
  17. package/dist/server/fields/Media.d.ts +79 -0
  18. package/dist/server/fields/Media.js +174 -0
  19. package/dist/server/fields/Visual.d.ts +7 -2
  20. package/dist/server/fields/Visual.js +9 -5
  21. package/dist/server/fields/index.d.ts +1 -0
  22. package/dist/server/fields/index.js +1 -0
  23. package/dist/server/index.d.ts +1 -0
  24. package/dist/server/index.js +1 -0
  25. package/dist/server/layouts/accordion/Accordion.d.ts +21 -0
  26. package/dist/server/layouts/accordion/Accordion.js +66 -0
  27. package/dist/server/layouts/accordion/AccordionContainer.d.ts +5 -0
  28. package/dist/server/layouts/accordion/AccordionContainer.js +18 -0
  29. package/dist/server/layouts/accordion/AccordionContext.d.ts +7 -0
  30. package/dist/server/layouts/accordion/AccordionContext.js +7 -0
  31. package/dist/server/layouts/accordion/AccordionExpander.d.ts +9 -0
  32. package/dist/server/layouts/accordion/AccordionExpander.js +72 -0
  33. package/dist/server/layouts/accordion/AccordionItem.d.ts +8 -0
  34. package/dist/server/layouts/accordion/AccordionItem.js +22 -0
  35. package/dist/server/layouts/accordion/AccordionLayout.d.ts +7 -0
  36. package/dist/server/layouts/accordion/AccordionLayout.js +26 -0
  37. package/dist/server/layouts/accordion/AccordionOptions.d.ts +3 -0
  38. package/dist/server/layouts/accordion/AccordionOptions.js +2 -0
  39. package/dist/server/layouts/accordion/index.d.ts +3 -0
  40. package/dist/server/layouts/accordion/index.js +19 -0
  41. package/dist/server/layouts/accordion/useAccordion.d.ts +1 -0
  42. package/dist/server/layouts/accordion/useAccordion.js +34 -0
  43. package/dist/server/layouts/index.d.ts +2 -1
  44. package/dist/server/layouts/index.js +2 -1
  45. package/dist/server/panels/BlockPanel.d.ts +14 -77
  46. package/dist/server/panels/BlockPanel.js +46 -702
  47. package/dist/server/panels/ListPanel.js +6 -3
  48. package/dist/server/panels/MessagePanel.js +33 -33
  49. package/dist/server/panels/VisualPanel.d.ts +58 -10
  50. package/dist/server/panels/VisualPanel.js +155 -79
  51. package/dist/server/schema/ListPanelLayout.d.ts +1 -0
  52. package/dist/server/schema/ListPanelLayout.js +1 -0
  53. package/dist/server/schema/RowRatio.d.ts +7 -0
  54. package/dist/server/schema/RowRatio.js +26 -0
  55. package/dist/server/schema/index.d.ts +1 -0
  56. package/dist/server/schema/index.js +1 -0
  57. package/dist/styles/blocks/Block-layout.css +88 -47
  58. package/dist/styles/blocks/Editorial.css +2 -2
  59. package/dist/styles/blocks/Form.css +2 -2
  60. package/dist/styles/blocks/MediaLayout.css +1 -1
  61. package/dist/styles/components/container.css +3 -24
  62. package/dist/styles/components/embed/YoutubePlayer.css +1 -1
  63. package/dist/styles/fields/Media.css +37 -0
  64. package/dist/styles/fields/_index.css +1 -0
  65. package/dist/styles/layouts/Accordion.css +29 -0
  66. package/dist/styles/layouts/_index.css +2 -1
  67. package/dist/styles/panels/VisualPanel.css +2 -1
  68. package/package.json +2 -2
@@ -28,31 +28,8 @@
28
28
  .nd-Block {
29
29
  min-height: var(--nd-block-height-min);
30
30
  }
31
- .nd-Block-root {
32
- }
33
31
 
34
32
  /* container/fullbleed */
35
- ._nd-Block-containable {
36
-
37
- /* container */
38
- &.nd-Block-root > .nd-BlockPanel {
39
- @media screen and (max-width: theme('screens.md')) {
40
- &:not(.nd-BlockPanel-fullbleed):not(.nd-BlockPanel-fullbleed-mobile) {
41
- @apply container-p;
42
- }
43
- }
44
- @media screen(md) {
45
- &:not(.nd-BlockPanel-fullbleed):not(.nd-BlockPanel-fullbleed-tablet) {
46
- @apply container-p;
47
- }
48
- }
49
- @media screen(lg) {
50
- &:not(.nd-BlockPanel-fullbleed):not(.nd-BlockPanel-fullbleed-desktop) {
51
- @apply container-p;
52
- }
53
- }
54
- }
55
- }
56
33
  ._nd-Block-fullbleed-left {
57
34
  margin-left: calc((100dvw - 100cqw) / -2);
58
35
  }
@@ -62,12 +39,16 @@
62
39
 
63
40
 
64
41
  /* row layout */
42
+ .nd-Block-row {
43
+ @apply max-md:_nd-Block-row-mobile md:_nd-Block-row-desktop;
44
+ }
45
+
65
46
  ._nd-Block-row-mobile {
66
- @apply container-p flex flex-col gap-[var(--nd-block-layout-gap-y)];
47
+ @apply flex flex-col gap-[var(--nd-block-layout-gap-y)];
67
48
  container-type: inline-size;
68
49
 
69
50
  /* fullbleed (l1 only) */
70
- &.nd-Block-root > .nd-BlockPanel {
51
+ &.nd-Block-rootContainer > .nd-BlockPanel {
71
52
  &.nd-BlockPanel-fullbleed {
72
53
  @apply _nd-Block-fullbleed-left _nd-Block-fullbleed-right;
73
54
  }
@@ -76,50 +57,44 @@
76
57
  }
77
58
  }
78
59
  }
60
+
79
61
  ._nd-Block-row-desktop {
80
- @apply container-p grid auto-cols-fr gap-[var(--nd-block-layout-gap-x)];
62
+ @apply grid auto-cols-fr gap-[var(--nd-block-layout-gap-x)];
81
63
  container-type: inline-size;
82
64
 
83
- /* row widths */
84
- &.nd-Block-items-1 {
85
- @apply grid-cols-1;
86
- }
87
- &.nd-Block-items-2 {
88
- @apply grid-cols-2;
89
- }
90
- &.nd-Block-items-3 {
91
- @apply grid-cols-3;
92
- }
93
- &.nd-Block-items-4 {
94
- @apply grid-cols-4;
95
- }
96
-
97
65
  /* row alignment */
66
+
98
67
  &.nd-Block-y-start {
99
68
  @apply items-start;
100
69
  }
70
+
101
71
  &.nd-Block-y-center {
102
72
  @apply items-center;
103
73
  }
74
+
104
75
  &.nd-Block-y-end {
105
76
  @apply items-end;
106
77
  }
107
78
 
108
- /* fullbleed (l1 only) */
109
- &.nd-Block-root > .nd-BlockPanel {
79
+ /* fullbleed (l1 OR l2) */
80
+
81
+ & > .nd-BlockPanel {
110
82
  &.nd-BlockPanel-fullbleed {
111
83
  &:first-child {
112
84
  @apply _nd-Block-fullbleed-left;
113
85
  }
86
+
114
87
  &:last-child {
115
88
  @apply _nd-Block-fullbleed-right;
116
89
  }
117
90
  }
91
+
118
92
  @media screen(md) {
119
93
  &.nd-BlockPanel-fullbleed-tablet {
120
94
  &:first-child {
121
95
  @apply _nd-Block-fullbleed-left;
122
96
  }
97
+
123
98
  &:last-child {
124
99
  @apply _nd-Block-fullbleed-right;
125
100
  }
@@ -130,6 +105,7 @@
130
105
  &:first-child {
131
106
  @apply _nd-Block-fullbleed-left;
132
107
  }
108
+
133
109
  &:last-child {
134
110
  @apply _nd-Block-fullbleed-right;
135
111
  }
@@ -137,10 +113,36 @@
137
113
  }
138
114
  }
139
115
  }
140
- .nd-Block-row {
141
- @apply max-md:_nd-Block-row-mobile md:_nd-Block-row-desktop;
116
+
117
+ .nd-Block-row-ratio-1_1 {
118
+ @apply grid-cols-[1fr,1fr];
142
119
  }
143
120
 
121
+ .nd-Block-row-ratio-1_2 {
122
+ @apply grid-cols-[1fr,2fr];
123
+ }
124
+
125
+ .nd-Block-row-ratio-1_3 {
126
+ @apply grid-cols-[1fr,3fr];
127
+ }
128
+
129
+ .nd-Block-row-ratio-2_1 {
130
+ @apply grid-cols-[2fr,1fr];
131
+ }
132
+
133
+ .nd-Block-row-ratio-2_3 {
134
+ @apply grid-cols-[2fr,3fr];
135
+ }
136
+
137
+ .nd-Block-row-ratio-3_1 {
138
+ @apply grid-cols-[3fr,1fr];
139
+ }
140
+
141
+ .nd-Block-row-ratio-3_2 {
142
+ @apply grid-cols-[3fr,2fr];
143
+ }
144
+
145
+
144
146
  /* column layout */
145
147
  ._nd-Block-column-mobile {
146
148
  @apply flex flex-col gap-[var(--nd-block-layout-gap-y)];
@@ -149,12 +151,13 @@
149
151
  @apply grid grid-cols-1 grid-flow-row gap-[var(--nd-block-layout-gap-y)];
150
152
  }
151
153
  .nd-Block-column {
152
- @apply w-full max-md:_nd-Block-column-mobile md:_nd-Block-column-desktop _nd-Block-containable;
154
+ @apply w-full max-md:_nd-Block-column-mobile md:_nd-Block-column-desktop;
153
155
  }
154
156
 
155
- /* column layout */
157
+
158
+ /* stack layout */
156
159
  .nd-Block-stack {
157
- @apply stacked _nd-Block-containable;
160
+ @apply stacked;
158
161
 
159
162
  /* z-indexing */
160
163
  > *:nth-child(1) {
@@ -186,6 +189,7 @@
186
189
  }
187
190
  }
188
191
 
192
+
189
193
  /* panel layout */
190
194
  ._nd-BlockPanel-desktop {
191
195
  @apply grid grid-cols-12;
@@ -241,4 +245,41 @@
241
245
  .nd-BlockPanel-mobileLast {
242
246
  @apply max-md:order-last;
243
247
  }
248
+
249
+ /* containers */
250
+ .nd-Block-rowWrap {
251
+ @apply container;
252
+ }
253
+ }
254
+
255
+ .nd-Block-rootContainer:not(.nd-Block-row) {
256
+
257
+ /* direct descendent */
258
+ > .nd-BlockPanel-wrap {
259
+ @media screen and (max-width: theme('screens.md')) {
260
+ &:not(:is(.nd-Block-fullbleed, .nd-Block-fullbleed-mobile)){
261
+ @apply container;
262
+ }
263
+ }
264
+
265
+ @media screen(md) {
266
+ &:not(:is(.nd-BlockPanel-fullbleed,.nd-BlockPanel-fullbleed-tablet)){
267
+ @apply container;
268
+ }
269
+ }
270
+
271
+ @media screen(lg) {
272
+ &:not(:is(.nd-BlockPanel-fullbleed,.nd-BlockPanel-fullbleed-desktop)){
273
+ @apply container;
274
+ }
275
+ }
276
+
277
+ }
278
+
279
+ /* nested */
280
+ > .nd-Block-containerWrap:not(.nd-Block-rowWrap) {
281
+ .nd-BlockPanel-wrap {
282
+ @apply container;
283
+ }
284
+ }
244
285
  }
@@ -42,7 +42,7 @@
42
42
  @apply w-full;
43
43
  }
44
44
  .nd-Editorial-headerWrap {
45
- @apply container-p relative;
45
+ @apply container relative;
46
46
  }
47
47
  .nd-Editorial-header {
48
48
  @apply flex flex-col gap-[var(--nd-editorial-header-gap)];
@@ -60,7 +60,7 @@
60
60
  margin: var(--nd-editorial-ctas-margin);
61
61
  }
62
62
  .nd-Editorial-bodyWrap {
63
- @apply container-p relative;
63
+ @apply container relative;
64
64
  }
65
65
  .nd-Editorial-visualWrap {
66
66
  @apply relative;
@@ -3,11 +3,11 @@
3
3
  .nd-Form {
4
4
 
5
5
  .nd-Form-copyWrap {
6
- @apply container-p;
6
+ @apply container;
7
7
  }
8
8
 
9
9
  .nd-Form-formWrap {
10
- @apply container-p;
10
+ @apply container;
11
11
  }
12
12
  }
13
13
  }
@@ -64,7 +64,7 @@
64
64
  /* vertical stack */
65
65
  .nd-StackLayout.nd-StackLayout-direction-vertical {
66
66
  .nd-MediaLayout-itemWrap {
67
- @apply aspect-cinema @panel-lg:aspect-cinemascope;
67
+ @apply nd-VisualPanel nd-VisualPanel-aspect-auto;
68
68
  }
69
69
  }
70
70
  }
@@ -2,57 +2,36 @@
2
2
 
3
3
  :root {
4
4
  --nd-container-size: theme('screens.xl');
5
- --nd-container-size-wide: 1800px;
6
5
  --nd-container-gutter-xs: 24px;
7
- --nd-container-gutter-wide-xs: var(--nd-container-gutter-xs);
8
6
  --nd-container-gutter-sm: 40px;
9
- --nd-container-gutter-wide-sm: var(--nd-container-gutter-sm);
10
7
  --nd-container-gutter-md: 80px;
11
- --nd-container-gutter-wide-md: var(--nd-container-gutter-md);
12
8
  --nd-container-gutter-lg: 102px;
13
- --nd-container-gutter-wide-lg: var(--nd-container-gutter-lg);
14
9
  --nd-container-gutter-xl: 102px;
15
- --nd-container-gutter-wide-xl: 80px;
16
10
 
17
11
  --nd-container-gutter: var(--nd-container-gutter-xs);
18
- --nd-container-gutter-wide: var(--nd-container-gutter-wide-xs);
19
12
  @media screen(sm) {
20
13
  --nd-container-gutter: var(--nd-container-gutter-sm);
21
- --nd-container-gutter-wide: var(--nd-container-gutter-wide-sm);
22
14
  }
23
15
  @media screen(md) {
24
16
  --nd-container-gutter: var(--nd-container-gutter-md);
25
- --nd-container-gutter-wide: var(--nd-container-gutter-wide-md);
26
17
  }
27
18
  @media screen(lg) {
28
19
  --nd-container-gutter: var(--nd-container-gutter-lg);
29
- --nd-container-gutter-wide: var(--nd-container-gutter-wide-lg);
30
20
  }
31
21
  @media screen(xl) {
32
22
  --nd-container-gutter: var(--nd-container-gutter-xl);
33
- --nd-container-gutter-wide: var(--nd-container-gutter-wide-xl);
34
23
  }
35
24
  }
36
25
 
37
26
  .container {
38
- @apply max-w-[var(--nd-container-size)] mx-auto;
39
- }
40
- .container-wide {
41
- @apply max-w-[var(--nd-container-size-wide)] mx-auto;
27
+ @apply max-w-[var(--nd-container-size)] mx-auto container-gutter;
42
28
  }
43
29
  .container-gutter {
44
30
  @apply px-[var(--nd-container-gutter)];
45
31
  }
46
- .container-gutter-wide {
47
- @apply px-[var(--nd-container-gutter-wide)];
48
- }
49
- .container-p {
50
- @apply container container-gutter;
51
- }
52
- .container-wide-p {
53
- @apply container-wide container-gutter-wide;
54
- }
55
32
  .container-none {
56
33
  @apply max-w-none px-revert;
57
34
  }
58
35
  }
36
+
37
+ /* TODO: find replace only on UI and nascentdigital , NOT: Editor!!!*/
@@ -8,7 +8,7 @@
8
8
  @apply flex flex-col justify-center;
9
9
 
10
10
  .nd-YoutubePlayer-thumbnail {
11
- @apply absolute inset-0 z-supersurface;
11
+ @apply absolute inset-0 w-full h-full object-cover z-supersurface;
12
12
  }
13
13
 
14
14
  iframe {
@@ -0,0 +1,37 @@
1
+ @layer components {
2
+
3
+ /* variables */
4
+ :root {
5
+ }
6
+
7
+
8
+ /* base */
9
+ .nd-Media {
10
+ }
11
+
12
+ /* image */
13
+ .nd-Media-image {
14
+ @apply stacked;
15
+
16
+ /* desktop (hide if mobile is enabled) */
17
+ &:has(.nd-Media-image-mobile) > .nd-Media-image-desktop {
18
+ @apply hidden md:block;
19
+ }
20
+
21
+ /* mobile */
22
+ .nd-Media-image-mobile {
23
+ @apply block md:hidden;
24
+ }
25
+ }
26
+
27
+ /* video */
28
+ .nd-Media-video {
29
+ }
30
+
31
+ /* streaming video (youtube/vimeo) */
32
+ .nd-Media-streamingVideo {
33
+ }
34
+ .nd-Media-streamingVideo-player {
35
+ @apply w-full h-full;
36
+ }
37
+ }
@@ -5,6 +5,7 @@
5
5
  @import "./Icon.css";
6
6
  @import "./LazyVideo.css";
7
7
  @import "./Link.css";
8
+ @import "./Media.css";
8
9
  @import "./Quote.css";
9
10
  @import "./RichText.css";
10
11
  @import "./Title.css";
@@ -0,0 +1,29 @@
1
+ @layer components {
2
+
3
+ :root {
4
+ }
5
+
6
+ /* list */
7
+ .nd-AccordionLayout {
8
+ }
9
+
10
+ /* item */
11
+ .nd-AccordionItem {
12
+ }
13
+ .nd-AccordionItem-expanded {
14
+ }
15
+
16
+ /* header */
17
+ .nd-AccordionItem-headerWrap {
18
+ }
19
+ .nd-AccordionItem-header {
20
+ }
21
+ .nd-AccordionItem-headerFocus {
22
+ }
23
+
24
+ /* panel */
25
+ .nd-AccordionItem-panelWrap {
26
+ }
27
+ .nd-AccordionItem-panel {
28
+ }
29
+ }
@@ -1,8 +1,9 @@
1
- @import "./Layout.css";
1
+ @import "./Accordion.css";
2
2
  @import "./BentoLayout.css";
3
3
  @import "./CardLayout.css";
4
4
  @import "./BrickLayout.css";
5
5
  @import "./FlexWrapLayout.css";
6
6
  @import "./GridLayout.css";
7
+ @import "./Layout.css";
7
8
  @import "./MasonryLayout.css";
8
9
  @import "./StackLayout.css";
@@ -9,7 +9,8 @@
9
9
 
10
10
  /* aspect ratios */
11
11
  .nd-VisualPanel-aspect-auto {
12
- --nd-visual-aspect: theme(aspectRatio.auto);
12
+ --nd-visual-aspect: unset;
13
+ --nd-visual-width: 100%;
13
14
  --nd-visual-height: auto;
14
15
  }
15
16
  .nd-VisualPanel-aspect-square {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@nascentdigital/funnel-ui",
3
3
  "description": "UI components for funnel",
4
- "version": "4.6.1",
4
+ "version": "5.0.1",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/",
7
7
  "access": "restricted"
@@ -69,5 +69,5 @@
69
69
  "react-dom": "^19",
70
70
  "ts-jest": "^29.3.2"
71
71
  },
72
- "gitHead": "4a1d18f6f87148196b5e820c0ada8f2a8111b9f6"
72
+ "gitHead": "6ac66e04e5d6d10b959826b84cf3827422ddf47b"
73
73
  }