@roottale/cms-renderer-next 0.44.0 → 0.45.0
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.
- package/CHANGELOG.md +21 -0
- package/dist/{chunk-75LHSTKC.js → chunk-45KYMMDY.js} +68 -17
- package/dist/chunk-45KYMMDY.js.map +1 -0
- package/dist/{chunk-4LQPZDXZ.js → chunk-6MFHA555.js} +24 -6
- package/dist/chunk-6MFHA555.js.map +1 -0
- package/dist/chunk-FZK3EXYZ.js +103 -0
- package/dist/chunk-FZK3EXYZ.js.map +1 -0
- package/dist/{chunk-6PDZSFVZ.js → chunk-GUV5WHD5.js} +33 -2
- package/dist/chunk-GUV5WHD5.js.map +1 -0
- package/dist/chunk-LEHHSI6G.js +64 -0
- package/dist/chunk-LEHHSI6G.js.map +1 -0
- package/dist/chunk-OMXEU4LS.js +414 -0
- package/dist/chunk-OMXEU4LS.js.map +1 -0
- package/dist/chunk-YLSQAT6B.js +59 -0
- package/dist/chunk-YLSQAT6B.js.map +1 -0
- package/dist/{chunk-WWS43XCT.js → chunk-Z3ZSCPG4.js} +82 -20
- package/dist/chunk-Z3ZSCPG4.js.map +1 -0
- package/dist/concerns-client.d.ts +1 -1
- package/dist/contact-map-client.d.ts +27 -0
- package/dist/contact-map-client.js +8 -0
- package/dist/contact-map-client.js.map +1 -0
- package/dist/expertise-client.d.ts +7 -1
- package/dist/expertise-client.js +2 -1
- package/dist/hero-carousel-client.d.ts +18 -2
- package/dist/hero-carousel-client.js +2 -1
- package/dist/routes.js +1 -1
- package/dist/server.js +8 -5
- package/dist/{site-config-BHcVF993.d.ts → site-config-kqurIH-k.d.ts} +38 -0
- package/dist/spaces-client.d.ts +1 -1
- package/dist/team-expanding-stage-client.d.ts +35 -0
- package/dist/team-expanding-stage-client.js +8 -0
- package/dist/team-expanding-stage-client.js.map +1 -0
- package/dist/templates.css +457 -5
- package/dist/templates.d.ts +26 -3
- package/dist/templates.js +13 -6
- package/dist/templates.js.map +1 -1
- package/dist/ui-react-motion-client.d.ts +1 -0
- package/dist/ui-react-motion-client.js +3 -1
- package/dist/validate.js +1 -1
- package/package.json +4 -4
- package/dist/chunk-4LQPZDXZ.js.map +0 -1
- package/dist/chunk-6PDZSFVZ.js.map +0 -1
- package/dist/chunk-75LHSTKC.js.map +0 -1
- package/dist/chunk-F3G6RVIR.js +0 -220
- package/dist/chunk-F3G6RVIR.js.map +0 -1
- package/dist/chunk-WWS43XCT.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# @roottale/cms-renderer-next
|
|
2
2
|
|
|
3
|
+
## 0.45.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 21639a9: `kinetic/CountUpStat`(뷰포트 진입 시 목표값까지 rAF 카운트업, `prefers-reduced-motion` 즉시-표시)을 `./count-up-stat` 서브패스로 공개합니다(ADR-0086 P2 D3 — 구 룰 `docs/design/b2b-component-library.md` §2.2 "카운트업 모션 금지(정직성)"를 supersede). `cms-renderer-next` 의 trust 섹션(`stat-band`/`dashboard` variant)이 이 컴포넌트를 소비해 지표 숫자를 카운트업으로 렌더합니다 — 선행 숫자를 못 찾는 값(전화번호 등 자유 텍스트)은 기존 정적 렌더로 그대로 폴백합니다.
|
|
8
|
+
- 21639a9: hero `carousel` 배경 전환에 `transition: "slide" | "curtain"` prop을 추가합니다(clip-path 와이프 + 신 스윕, chambarun 이식 — ADR-0086 P2 D3). autoplay는 hover·focus-within·재생/일시정지 버튼·Page Visibility 4가지 사유로 정지합니다.
|
|
9
|
+
|
|
10
|
+
`team` `expanding-stage` variant를 실모션 client island(`TeamExpandingStageClient`)로 배선합니다 — hover/focus로 인물 패널이 확장되고, 접힌 상태에서도 자격·경력·CTA가 DOM에 그대로 남아 스크린리더가 읽을 수 있습니다.
|
|
11
|
+
|
|
12
|
+
contact 지도 블록에 `map.mapLoad: "lazy" | "click"`(기본 "lazy", additive)을 추가합니다 — `"click"`이면 실지도 iframe을 즉시 그리지 않고 정적 프리뷰(주소·지도 열기 버튼)만 먼저 렌더한 뒤 클릭 시에만 마운트합니다.
|
|
13
|
+
|
|
14
|
+
`expertise` `tab-stage`·hero carousel 탭 목록에 공용 `use-roving-tablist` 훅(WAI-ARIA APG tablist 키보드 계약 — Arrow/Home/End, 단일 tab stop)을 적용합니다.
|
|
15
|
+
|
|
16
|
+
- d9f671b: `SiteConfig`에 optional `schemaVersion` 필드와 `SITE_CONFIG_SCHEMA_VERSION` 상수·`resolveSiteConfigSchemaVersion` 헬퍼를 추가해 업종 템플릿 팩과 renderer 사이의 버전 계약을 표현합니다(ADR-0086 D2). 필드 미지정 시 버전 1로 해석해 기존 고객 `site.config.ts`는 그대로 동작합니다.
|
|
17
|
+
|
|
18
|
+
### Patch Changes
|
|
19
|
+
|
|
20
|
+
- Updated dependencies [23aa6ae]
|
|
21
|
+
- @roottale/cms-client@0.45.0
|
|
22
|
+
- @roottale/cms-core@0.45.0
|
|
23
|
+
|
|
3
24
|
## 0.44.0
|
|
4
25
|
|
|
5
26
|
### Minor Changes
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
BeforeAfterSlider
|
|
3
3
|
} from "./chunk-U5AKACPN.js";
|
|
4
|
+
import {
|
|
5
|
+
ContactMapClickToLoad
|
|
6
|
+
} from "./chunk-LEHHSI6G.js";
|
|
4
7
|
import {
|
|
5
8
|
ExpertiseTabStage
|
|
6
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-6MFHA555.js";
|
|
10
|
+
import {
|
|
11
|
+
TeamExpandingStageClient
|
|
12
|
+
} from "./chunk-FZK3EXYZ.js";
|
|
7
13
|
import {
|
|
8
14
|
SpacesStage
|
|
9
15
|
} from "./chunk-K62RR4UQ.js";
|
|
@@ -12,10 +18,11 @@ import {
|
|
|
12
18
|
} from "./chunk-H46JUIHZ.js";
|
|
13
19
|
import {
|
|
14
20
|
AnimateOnScroll,
|
|
21
|
+
CountUpStat,
|
|
15
22
|
Marquee,
|
|
16
23
|
StaggerGroup,
|
|
17
24
|
StaggerItem
|
|
18
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-Z3ZSCPG4.js";
|
|
19
26
|
import {
|
|
20
27
|
collectCategories,
|
|
21
28
|
collectCategoriesWithCounts,
|
|
@@ -25,10 +32,10 @@ import {
|
|
|
25
32
|
} from "./chunk-FUA5H6JE.js";
|
|
26
33
|
import {
|
|
27
34
|
SectionSchema
|
|
28
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-GUV5WHD5.js";
|
|
29
36
|
import {
|
|
30
37
|
HeroCarouselViewport
|
|
31
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-OMXEU4LS.js";
|
|
32
39
|
|
|
33
40
|
// src/server.tsx
|
|
34
41
|
import {
|
|
@@ -307,6 +314,29 @@ function RootTaleLeadForm(props) {
|
|
|
307
314
|
|
|
308
315
|
// src/templates/sections.tsx
|
|
309
316
|
import { isAllowedEmbedSrc, isAllowedMapEmbedSrc } from "@roottale/cms-core";
|
|
317
|
+
|
|
318
|
+
// src/templates/metric-value.ts
|
|
319
|
+
var LEADING_NUMBER_PATTERN = /^(\d[\d,]*)(\.(\d+))?/;
|
|
320
|
+
function parseMetricValue(raw) {
|
|
321
|
+
const match = LEADING_NUMBER_PATTERN.exec(raw);
|
|
322
|
+
if (!match) {
|
|
323
|
+
return null;
|
|
324
|
+
}
|
|
325
|
+
const [matched, integerPart, , fractionPart] = match;
|
|
326
|
+
const integerLiteral = (integerPart ?? "").replace(/,/g, "");
|
|
327
|
+
const numericLiteral = fractionPart ? `${integerLiteral}.${fractionPart}` : integerLiteral;
|
|
328
|
+
const value = Number(numericLiteral);
|
|
329
|
+
if (!Number.isFinite(value)) {
|
|
330
|
+
return null;
|
|
331
|
+
}
|
|
332
|
+
return {
|
|
333
|
+
value,
|
|
334
|
+
decimals: fractionPart?.length ?? 0,
|
|
335
|
+
suffix: raw.slice(matched.length)
|
|
336
|
+
};
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
// src/templates/sections.tsx
|
|
310
340
|
import { Fragment as Fragment2, jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
311
341
|
function sectionThemeStyle(theme) {
|
|
312
342
|
if (!theme) return void 0;
|
|
@@ -373,6 +403,7 @@ function TemplateHeroCarousel(section) {
|
|
|
373
403
|
slides,
|
|
374
404
|
autoplay,
|
|
375
405
|
intervalMs,
|
|
406
|
+
transition,
|
|
376
407
|
proofMetrics,
|
|
377
408
|
scrim
|
|
378
409
|
} = section.props;
|
|
@@ -392,7 +423,8 @@ function TemplateHeroCarousel(section) {
|
|
|
392
423
|
slides: safeSlides,
|
|
393
424
|
autoplay: autoplay ?? true,
|
|
394
425
|
intervalMs: intervalMs ?? 6e3,
|
|
395
|
-
scrim
|
|
426
|
+
scrim,
|
|
427
|
+
transition
|
|
396
428
|
}
|
|
397
429
|
) : null,
|
|
398
430
|
/* @__PURE__ */ jsxs2("div", { className: "rt-tpl-container rt-tpl-hero-carousel-overlay", children: [
|
|
@@ -1027,6 +1059,20 @@ function TemplateCtaBanner(section) {
|
|
|
1027
1059
|
}
|
|
1028
1060
|
);
|
|
1029
1061
|
}
|
|
1062
|
+
function TrustMetricValue({ value }) {
|
|
1063
|
+
const parsed = parseMetricValue(value);
|
|
1064
|
+
if (!parsed) {
|
|
1065
|
+
return /* @__PURE__ */ jsx2(Fragment2, { children: value });
|
|
1066
|
+
}
|
|
1067
|
+
return /* @__PURE__ */ jsx2(
|
|
1068
|
+
CountUpStat,
|
|
1069
|
+
{
|
|
1070
|
+
value: parsed.value,
|
|
1071
|
+
decimals: parsed.decimals,
|
|
1072
|
+
suffix: parsed.suffix
|
|
1073
|
+
}
|
|
1074
|
+
);
|
|
1075
|
+
}
|
|
1030
1076
|
function TrustCredentialIcon() {
|
|
1031
1077
|
return /* @__PURE__ */ jsxs2(
|
|
1032
1078
|
"svg",
|
|
@@ -1056,9 +1102,9 @@ function TemplateTrust(section) {
|
|
|
1056
1102
|
children: /* @__PURE__ */ jsxs2("div", { className: "rt-tpl-container rt-tpl-trust-inner", children: [
|
|
1057
1103
|
heading ? /* @__PURE__ */ jsx2("h2", { className: "rt-tpl-heading", children: heading }) : null,
|
|
1058
1104
|
section.variant === "stat-band" ? (
|
|
1059
|
-
// 수치 밴드 진입 시 fade-up(C8)
|
|
1060
|
-
//
|
|
1061
|
-
//
|
|
1105
|
+
// 수치 밴드 진입 시 fade-up(C8) + 지표 숫자 카운트업(ADR-0086 D3로
|
|
1106
|
+
// 채택(구 룰 supersede, 2026-07-17)). reduce·SSR 시 <div> 그대로
|
|
1107
|
+
// (마크업 불변) + CountUpStat 자체도 mount 전엔 최종값 정적 표시.
|
|
1062
1108
|
/* @__PURE__ */ jsx2(AnimateOnScroll, { as: "div", variant: "fade-up", className: "rt-tpl-trust-stat-band", children: (metrics ?? []).map((metric) => /* @__PURE__ */ jsxs2(
|
|
1063
1109
|
"div",
|
|
1064
1110
|
{
|
|
@@ -1066,7 +1112,7 @@ function TemplateTrust(section) {
|
|
|
1066
1112
|
"data-variant": "band-item",
|
|
1067
1113
|
children: [
|
|
1068
1114
|
/* @__PURE__ */ jsxs2("span", { className: "rt-stat__value", children: [
|
|
1069
|
-
metric.value,
|
|
1115
|
+
/* @__PURE__ */ jsx2(TrustMetricValue, { value: metric.value }),
|
|
1070
1116
|
metric.unit ? /* @__PURE__ */ jsx2("span", { className: "rt-stat__unit", children: metric.unit }) : null
|
|
1071
1117
|
] }),
|
|
1072
1118
|
/* @__PURE__ */ jsx2("span", { className: "rt-stat__label", children: metric.label }),
|
|
@@ -1192,7 +1238,7 @@ function TemplateTrust(section) {
|
|
|
1192
1238
|
}
|
|
1193
1239
|
) : null,
|
|
1194
1240
|
/* @__PURE__ */ jsxs2("span", { className: "rt-stat__value", children: [
|
|
1195
|
-
metric.value,
|
|
1241
|
+
/* @__PURE__ */ jsx2(TrustMetricValue, { value: metric.value }),
|
|
1196
1242
|
metric.unit ? /* @__PURE__ */ jsx2("span", { className: "rt-stat__unit", children: metric.unit }) : null
|
|
1197
1243
|
] }),
|
|
1198
1244
|
/* @__PURE__ */ jsx2("span", { className: "rt-stat__label", children: metric.label }),
|
|
@@ -1497,11 +1543,7 @@ function TemplateTeamExpandingStage(section) {
|
|
|
1497
1543
|
children: /* @__PURE__ */ jsxs2("div", { className: "rt-tpl-container", children: [
|
|
1498
1544
|
heading ? /* @__PURE__ */ jsx2("h2", { className: "rt-tpl-heading", children: heading }) : null,
|
|
1499
1545
|
description ? /* @__PURE__ */ jsx2("p", { className: "rt-tpl-section-desc", children: description }) : null,
|
|
1500
|
-
/* @__PURE__ */ jsx2(
|
|
1501
|
-
/* @__PURE__ */ jsx2("span", { className: "rt-tpl-team-expanding-index", "aria-hidden": "true", children: String(index + 1).padStart(2, "0") }),
|
|
1502
|
-
/* @__PURE__ */ jsx2(TeamMemberPhoto, { member }),
|
|
1503
|
-
/* @__PURE__ */ jsx2(TeamMemberBody, { member })
|
|
1504
|
-
] }) }, member.name)) })
|
|
1546
|
+
/* @__PURE__ */ jsx2(TeamExpandingStageClient, { members })
|
|
1505
1547
|
] })
|
|
1506
1548
|
}
|
|
1507
1549
|
);
|
|
@@ -1561,6 +1603,7 @@ function ContactMapBlock({
|
|
|
1561
1603
|
const liveMap = Boolean(
|
|
1562
1604
|
embedUrl && (isAllowedMapEmbedSrc(embedUrl) || isAllowedEmbedSrc(embedUrl))
|
|
1563
1605
|
);
|
|
1606
|
+
const clickToLoad = liveMap && embedUrl && (map?.mapLoad ?? "lazy") === "click";
|
|
1564
1607
|
return /* @__PURE__ */ jsxs2("div", { className: "rt-tpl-contact-map-block", "data-provider": map?.provider, children: [
|
|
1565
1608
|
map?.facadeImageSrc && !liveMap ? /* @__PURE__ */ jsxs2("figure", { className: "rt-tpl-contact-map-facade", children: [
|
|
1566
1609
|
/* @__PURE__ */ jsx2(
|
|
@@ -1573,7 +1616,15 @@ function ContactMapBlock({
|
|
|
1573
1616
|
),
|
|
1574
1617
|
externalUrl ? /* @__PURE__ */ jsx2("figcaption", { children: /* @__PURE__ */ jsx2("a", { href: externalUrl, target: "_blank", rel: "noopener noreferrer", children: "\uC9C0\uB3C4 \uD06C\uAC8C \uBCF4\uAE30" }) }) : null
|
|
1575
1618
|
] }) : null,
|
|
1576
|
-
|
|
1619
|
+
clickToLoad ? /* @__PURE__ */ jsx2(
|
|
1620
|
+
ContactMapClickToLoad,
|
|
1621
|
+
{
|
|
1622
|
+
embedUrl,
|
|
1623
|
+
externalUrl,
|
|
1624
|
+
facadeImageSrc: map?.facadeImageSrc,
|
|
1625
|
+
facadeImageAlt: map?.facadeImageAlt
|
|
1626
|
+
}
|
|
1627
|
+
) : embedUrl ? /* @__PURE__ */ jsx2(ContactMap, { url: embedUrl }) : null
|
|
1577
1628
|
] });
|
|
1578
1629
|
}
|
|
1579
1630
|
function ContactActions({
|
|
@@ -3473,4 +3524,4 @@ export {
|
|
|
3473
3524
|
RootTalePage,
|
|
3474
3525
|
RenderTiptap
|
|
3475
3526
|
};
|
|
3476
|
-
//# sourceMappingURL=chunk-
|
|
3527
|
+
//# sourceMappingURL=chunk-45KYMMDY.js.map
|