PageSourceSearch

https://www.torfaen.gov.uk/_Ypj5jA_83d6275a-0056-43df-858b-3f53fd6…/landing.template.b6c20a9af2bd2319a645.mjs

js torfaen.gov.uk collected 2026-10-01 10:17:13 UTC 17,192 bytes, 539 lines download raw bytes

1"use strict";
2(self["__LOADABLE_LOADED_CHUNKS__"] = self["__LOADABLE_LOADED_CHUNKS__"] || []).push([[73896],{
3
4/***/ 67273
5(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
6
7
8// EXPORTS
9__webpack_require__.d(__webpack_exports__, {
10  A: () => (/* binding */ breadcrumb)
11});
12
13// EXTERNAL MODULE: ./node_modules/react/index.js
14var react = __webpack_require__(96540);
15// EXTERNAL MODULE: ./src/app/components/svg/iconSVG/index.ts + 4 modules
16var iconSVG = __webpack_require__(26741);
17// EXTERNAL MODULE: ./src/app/components/link/index.ts
18var components_link = __webpack_require__(75147);
19// EXTERNAL MODULE: ./node_modules/styled-components/dist/styled-components.browser.esm.js + 7 modules
20var styled_components_browser_esm = __webpack_require__(27149);
21// EXTERNAL MODULE: ./src/app/util/calcRem.ts
22var calcRem = __webpack_require__(2333);
23;// ./src/app/components/breadcrumb/breadcrumb.styled.ts
24
25
26
27
28const BreadcrumbStyled = styled_components_browser_esm/* styled */.I4.nav.withConfig({
29  displayName: "breadcrumbstyled__BreadcrumbStyled",
30  componentId: "sc-eggq7c-0"
31})(["", ";"], ({
32  theme
33}) => {
34  return (0,styled_components_browser_esm/* css */.AH)`
35      .breadcrumb__list {
36        ${theme.typeStyles.body[1]}
37        display: flex;
38        flex-wrap: wrap;
39        list-style: none;
40        gap: ${(0,calcRem/* calcRem */.g)(8)};
41      }
42
43      .breadcrumb__item {
44        display: flex;
45        align-items: center;
46        gap: ${(0,calcRem/* calcRem */.g)(4)};
47      }
48
49      .breadcrumb__link,
50      .breadcrumb__item > a {
51        color: ${theme.color.text};
52        text-decoration: underline;
53        text-underline-position: under;
54        padding-block: ${(0,calcRem/* calcRem */.g)(10)};
55        min-width: ${(0,calcRem/* calcRem */.g)(44)};
56      }
57
58      @media print {
59        display: none;
60      }
61    `;
62});
63/* harmony default export */ const breadcrumb_styled = (BreadcrumbStyled);
64
65// EXTERNAL MODULE: ./src/app/locale/util/useTranslation.hook.ts
66var useTranslation_hook = __webpack_require__(27622);
67;// ./src/app/components/breadcrumb/breadcrumb.component.tsx
68
69
70
71
72
73
74const Breadcrumb = ({
75  reverseCMS,
76  trail
77}) => {
78  const {
79    ariaLabel
80  } = (0,useTranslation_hook/* useTranslation */.B)("breadcrumb");
81  return /* @__PURE__ */ react.createElement(breadcrumb_styled, {
82    className: "breadcrumb",
83    "aria-label": ariaLabel
84  }, /* @__PURE__ */ react.createElement("ul", {
85    className: "breadcrumb__list"
86  }, reverseCMS ? `{breadcrumb}` : trail?.map((link, index) => /* @__PURE__ */ react.createElement("li", {
87    key: link.id,
88    className: "breadcrumb__item"
89  }, /* @__PURE__ */ react.createElement(components_link/* default */.A, {
90    className: "breadcrumb__link",
91    uri: link.uri
92  }
92, link.title), index + 1 < trail.length && /* @__PURE__ */ react.createElement(iconSVG/* default */.A, {
93    icon: "ChevronRight",
94    svgSize: 16
95  })))));
96};
97/* harmony default export */ const breadcrumb_component = (Breadcrumb);
98
99;// ./src/app/components/breadcrumb/index.ts
100
101
102/* harmony default export */ const breadcrumb = (breadcrumb_component);
103
104
105/***/ },
106
107/***/ 31999
108(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
109
110
111// EXPORTS
112__webpack_require__.d(__webpack_exports__, {
113  A: () => (/* binding */ composer)
114});
115
116// EXTERNAL MODULE: ./node_modules/react/index.js
117var react = __webpack_require__(96540);
118// EXTERNAL MODULE: ./node_modules/classnames/index.js
119var classnames = __webpack_require__(32485);
120var classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);
121// EXTERNAL MODULE: ./src/app/components/container/index.ts + 2 modules
122var container = __webpack_require__(16759);
123// EXTERNAL MODULE: ./node_modules/styled-components/dist/styled-components.browser.esm.js + 7 modules
124var styled_components_browser_esm = __webpack_require__(27149);
125// EXTERNAL MODULE: ./src/app/util/calcRem.ts
126var calcRem = __webpack_require__(2333);
127;// ./src/app/components/composer/composer.styled.ts
128
129
130
131
132const ComposerStyled = styled_components_browser_esm/* styled */.I4.div.withConfig({
133  displayName: "composerstyled__ComposerStyled",
134  componentId: "sc-xl21i1-0"
135})(["", ";"], ({
136  theme
137}) => {
138  return (0,styled_components_browser_esm/* css */.AH)`
139      .composer__item {
140        margin-top: ${theme.spacing.composer};
141      }
142
143      // Collapse margin if first element is a slice
144      .composer__item--slice:first-child,
145      // Collapse margin of "slice" if not surface = neutral
146      .composer__item + .composer__item--slice:not(.composer__item--alt):not(.bannerFullWidth),
147      // Collapse margin of compososer item following a "slice" that is not surface = neutral
148      .composer__item--slice:not(.composer__item--alt):not(.bannerFullWidth) + .composer__item {
149        margin-top: 0;
150      }
151
152      .composer__item--slice + .composer__item--slice {
153        margin-top: 0;
154      }
155
156      .composer__item:not(.composer__item--slice):last-child {
157        padding-bottom: ${theme.spacing.composer};
158      }
159
160      .composer__divider {
161        width: 100%;
162        height: ${(0,calcRem/* calcRem */.g)(4)};
163        background: ${theme.color.accent};
164      }
165
166      @media print {
167        .composer__item--slice + .composer__item--slice,
168        .composer__item {
169          margin-top: 1cm;
170        }
171        .composer__divider {
172          display: none;
173        }
174      }
175    `;
176});
177/* harmony default export */ const composer_styled = (ComposerStyled);
178
179;// ./src/app/components/composer/composer.component.tsx
180
181function _extends() {
182  return _extends = Object.assign ? Object.assign.bind() : function(n) {
183    for (var e = 1; e < arguments.length; e++) {
184      var t = arguments[e];
185      for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
186    }
187    return n;
188  }, _extends.apply(null, arguments);
189}
190
191
192
193
194const Composer = ({
195  components,
196  composer
197}) => {
198  return /* @__PURE__ */ react.createElement(composer_styled, {
199    className: "composer"
200  }, composer.map((item, index) => {
201    const ComposerItemComponent = components[item._type];
202    return ComposerItemComponent ? /* @__PURE__ */ react.createElement(react.Fragment, {
203      key: item._id
204    }, /* @__PURE__ */ react.createElement("div", {
205      className: classnames_default()("composer__item", item._type, {
206        ["composer__item--slice"]: item.value.isSlice,
207        // Should the component render using "neutral" surface theme
208        ["composer__item--alt"]: item.value.isSlice && index % 2 !== 0
209      })
210    }, /* @__PURE__ */ react.createElement(ComposerItemComponent, _extends({}, item.value, {
211      surface: index % 2 !== 0 ? "neutral" : "white"
212    }))), !item.value.isSlice && !["banner"].includes(item._type) && index < composer.length - 1 && /* @__PURE__ */ react.createElement(container/* default */.A, {
213      className: "composer__item"
214    }
214, /* @__PURE__ */ react.createElement("div", {
215      className: "composer__divider"
216    }))) : /* @__PURE__ */ react.createElement("div", {
217      className: "composer__item"
218    }, "No component found for ", item._type);
219  }));
220};
221/* harmony default export */ const composer_component = (Composer);
222
223;// ./src/app/components/composer/index.ts
224
225
226/* harmony default export */ const composer = (composer_component);
227
228
229/***/ },
230
231/***/ 33014
232(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
233
234
235// EXPORTS
236__webpack_require__.d(__webpack_exports__, {
237  A: () => (/* binding */ pageHero)
238});
239
240// EXTERNAL MODULE: ./node_modules/react/index.js
241var react = __webpack_require__(96540);
242// EXTERNAL MODULE: ./node_modules/react-redux/dist/react-redux.mjs
243var react_redux = __webpack_require__(45135);
244// EXTERNAL MODULE: ./node_modules/styled-components/dist/styled-components.browser.esm.js + 7 modules
245var styled_components_browser_esm = __webpack_require__(27149);
246// EXTERNAL MODULE: ./src/app/components/breadcrumb/index.ts + 2 modules
247var components_breadcrumb = __webpack_require__(67273);
248// EXTERNAL MODULE: ./src/app/components/container/index.ts + 2 modules
249var container = __webpack_require__(16759);
250// EXTERNAL MODULE: ./src/app/components/date/index.ts + 2 modules
251var components_date = __webpack_require__(36392);
252// EXTERNAL MODULE: ./src/app/components/heading/index.ts + 2 modules
253var heading = __webpack_require__(53965);
254// EXTERNAL MODULE: ./src/app/components/image/index.ts + 2 modules
255var components_image = __webpack_require__(49345);
256// EXTERNAL MODULE: ./src/app/components/surface/index.ts + 1 modules
257var surface = __webpack_require__(87332);
258// EXTERNAL MODULE: ./src/app/components/tag/index.ts + 2 modules
259var components_tag = __webpack_require__(49019);
260// EXTERNAL MODULE: ./src/app/util/mq.ts
261var mq = __webpack_require__(66190);
262// EXTERNAL MODULE: ./src/app/util/calcRem.ts
263var calcRem = __webpack_require__(2333);
264;// ./src/app/components/heroes/pageHero/pageHero.styled.ts
265
266
267
268
269
270const PageHeroStyled = styled_components_browser_esm/* styled */.I4.div.withConfig({
271  displayName: "pageHerostyled__PageHeroStyled",
272  componentId: "sc-3844l3-0"
273})(["", ";"], ({
274  theme
275}) => {
276  return (0,styled_components_browser_esm/* css */.AH)`
277      background: ${theme.color.background};
278      .hero-image {
279        height: 25vh;
280        height: 25svh;
281        @media ${(0,mq.mq)(theme.breakpoint.l)} {
282          height: 400px;
283        }
284        img {
285          display: block;
286          object-fit: cover;
287          width: 100%;
288          height: 100%;
289        }
290      }
291      .hero-content {
292        padding-block: ${(0,calcRem/* calcRem */.g)(24)} ${(0,calcRem/* calcRem */.g)(40)};
293        &:has(.breadcrumb) {
294          padding-block: ${(0,calcRem/* calcRem */.g)(14)} ${(0,calcRem/* calcRem */.g)(40)};
295        }
296        @media ${(0,mq.mq)(theme.breakpoint.l)} {
297          padding-block: ${(0,calcRem/* calcRem */.g)(24)} ${(0,calcRem/* calcRem */.g)(64)};
298          &:has(.breadcrumb) {
299            padding-block: ${(0,calcRem/* calcRem */.g)(14)} ${(0,calcRem/* calcRem */.g)(64)};
300          }
301          display: grid;
302          grid-template-columns: repeat(12, 1fr);
303          column-gap: ${(0,calcRem/* calcRem */.g)(44)};
304          > * {
305            grid-column: 1/13;
306            &.heading,
307            &.hero-content__description {
308              grid-column: 1 / 9;
309            }
310          }
311        }
312      }
313      .breadcrumb + * {
314        margin-top: ${(0,calcRem/* calcRem */.g)(14)};
315        @media ${(0,mq.mq)(theme.breakpoint.l)} {
316          margin-top: ${(0,calcRem/* calcRem */.g)(30)};
317        }
318      }
319      .tags + * {
320        margin-top: ${(0,calcRem/* calcRem */.g)(16)};
321      }
322      .heading + * {
323        margin-top: ${(0,calcRem/* calcRem */.g)(16)};
324      }
325      .hero-content__description {
326        ${theme.typeStyles.body[3]};
327      }
328
329      .tags {
330        place-self: start;
331        display: flex;
332        flex-direction: column;
333        > * {
334          place-self: start;
335          &.date {
336            background: ${theme.color.background};
337          }
338        }
339      }
340
341      @media print {
342        padding: 0;
343        background: transparent;
344        .hero-content {
345          padding: 0;
346        }
347        .hero-image {
348          display: none;
349        }
350      }
351    `;
352});
353/* harmony default export */ const pageHero_styled = (PageHeroStyled);
354
355// EXTERNAL MODULE: ./src/app/schema/images.ts
356var schema_images = __webpack_require__(31575);
357;// ./src/app/components/heroes/pageHero/pageHero.component.tsx
358
359function _extends() {
360  return _extends = Object.assign ? Object.assign.bind() : function(n) {
361    for (var e = 1; e < arguments.length; e++) {
362      var t = arguments[e];
363      for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
364    }
365    return n;
366  }, _extends.apply(null, arguments);
367}
368
369
370
371
372
373
374
375
376
377
378
379const PageHero = ({
380  breadcrumb,
381  date,
382  description,
383  image,
384  tag,
385  title
386}) => {
387  const theme = (0,styled_components_browser_esm/* useTheme */.DP)();
388  return /* @__PURE__ */ react.createElement(surface/* default */.A, {
389    surface: "neutral"
390  }
390, /* @__PURE__ */ react.createElement(pageHero_styled, null, image && /* @__PURE__ */ react.createElement("div", {
391    className: "hero-image",
392    "aria-hidden": "true"
393  }, /* @__PURE__ */ react.createElement(components_image/* default */.A, _extends({}, image, {
394    sizes: {
395      1200: schema_images/* imageSize */.R.pageHero.width,
396      [theme.breakpoint.m]: 1200,
397      default: theme.breakpoint.m
398    }
399  }))), /* @__PURE__ */ react.createElement(container/* default */.A, {
400    className: "hero-content"
401  }, /* @__PURE__ */ react.createElement(components_breadcrumb/* default */.A, breadcrumb), (tag || date) && /* @__PURE__ */ react.createElement("div", {
402    className: "tags"
403  }, tag && /* @__PURE__ */ react.createElement(components_tag/* default */.A, {
404    tag
405  }), date && /* @__PURE__ */ react.createElement(components_date/* default */.A, _extends({}, date, {
406    surface: "white"
407  }))), /* @__PURE__ */ react.createElement(heading/* default */.A, {
408    headingLevel: "h1",
409    title,
410    id: "page-content"
411  }
411), description && /* @__PURE__ */ react.createElement("div", {
412    className: "hero-content__description"
413  }, description))));
414};
415/* harmony default export */ const pageHero_component = (PageHero);
416
417// EXTERNAL MODULE: ./src/app/pageNavigation/selectors.ts
418var selectors = __webpack_require__(63409);
419;// ./src/app/components/heroes/pageHero/pageHero.container.tsx
420
421function pageHero_container_extends() {
422  return pageHero_container_extends = Object.assign ? Object.assign.bind() : function(n) {
423    for (var e = 1; e < arguments.length; e++) {
424      var t = arguments[e];
425      for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
426    }
427    return n;
428  }, pageHero_container_extends.apply(null, arguments);
429}
430
431
432
433
434const PageHeroContainer = (props) => {
435  const breadcrumb = {
436    trail: (0,react_redux/* useSelector */.d4)(selectors/* selectBreadcrumbTrail */.kv)
437  };
438  return /* @__PURE__ */ react.createElement(pageHero_component, pageHero_container_extends({}, props, {
439    breadcrumb
440  }));
441};
442/* harmony default export */ const pageHero_container = (PageHeroContainer);
443
444;// ./src/app/components/heroes/pageHero/index.ts
445
446
447/* harmony default export */ const pageHero = (pageHero_container);
448
449
450/***/ },
451
452/***/ 63409
453(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
454
455/* harmony export */ __webpack_require__.d(__webpack_exports__, {
456/* harmony export */   hU: () => (/* binding */ selectPrevNext),
457/* harmony export */   kv: () => (/* binding */ selectBreadcrumbTrail),
458/* harmony export */   ow: () => (/* binding */ selectSectionContents)
459/* harmony export */ });
460/* harmony import */ var reselect__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13527);
461
462
463const selectSlice = (state) => state.pageNavigation;
464const selectBreadcrumbTrail = (state) => state.pageNavigation?.breadcrumb ?? [];
465const selectSectionContents = (0,reselect__WEBPACK_IMPORTED_MODULE_0__/* .createSelector */ .Mz)(selectSlice, (nav) => ({
466  contents: nav?.contents ?? [],
467  currentIndex: nav?.currentIndex ?? -1
468}));
469const selectPrevNext = (0,reselect__WEBPACK_IMPORTED_MODULE_0__/* .createSelector */ .Mz)(selectSlice, (nav) => ({
470  previous: nav?.previous,
471  next: nav?.next
472}));
473
474
475/***/ },
476
477/***/ 26418
478(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
479
480// ESM COMPAT FLAG
481__webpack_require__.r(__webpack_exports__);
482
483// EXPORTS
484__webpack_require__.d(__webpack_exports__, {
485  "default": () => (/* binding */ landing_template)
486});
487
488// EXTERNAL MODULE: ./node_modules/react/index.js
489var react = __webpack_require__(96540);
490// EXTERNAL MODULE: ./src/app/components/composer/index.ts + 2 modules
491var composer = __webpack_require__(31999);
492// EXTERNAL MODULE: ./src/app/templates/layout/master/index.ts + 28 modules
493var master = __webpack_require__(37529);
494// EXTERNAL MODULE: ./src/app/components/heroes/pageHero/index.ts + 3 modules
495var pageHero = __webpack_require__(33014);
496// EXTERNAL MODULE: ./node_modules/styled-components/dist/styled-components.browser.esm.js + 7 modules
497var styled_components_browser_esm = __webpack_require__(27149);
498;// ./src/app/templates/landing/landing.styled.ts
499
500
501
502const LandingStyled = styled_components_browser_esm/* styled */.I4.div.withConfig({
503  displayName: "landingstyled__LandingStyled",
504  componentId: "sc-24i6w4-0"
505})(["", ";"], () => {
506  return (0,styled_components_browser_esm/* css */.AH)``;
507});
508/* harmony default export */ const landing_styled = (LandingStyled);
509
510// EXTERNAL MODULE: ./src/app/schema/composers/landing.composer.ts + 8 modules
511var landing_composer = __webpack_require__(86437);
512;// ./src/app/templates/landing/landing.template.tsx
513
514
515
516
517
518
519
520const Landing = ({
521  mappedEntry: {
522    content,
523    hero,
524    meta
525  }
526}) => {
527  return /* @__PURE__ */ react.createElement(master/* default */.A, {
528    meta
529  }, /* @__PURE__ */ react.createElement(landing_styled, null, /* @__PURE__ */ react.createElement(pageHero/* default */.A, hero), /* @__PURE__ */ react.createElement(composer/* default */.A, {
530    composer: content,
531    components: landing_composer/* components */.d
532  })));
533};
534/* harmony default export */ const landing_template = (Landing);
535
536
537/***/ }
538
539}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.