@courtneyring/components-library 1.0.31 → 1.0.32
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/dist/AccordionItem-CDN4L4a7.js +40 -0
- package/dist/assets/AccordionItem.css +1 -1
- package/dist/assets/Background.css +1 -1
- package/dist/assets/Banner.css +1 -1
- package/dist/assets/Button.css +1 -1
- package/dist/assets/Container.css +1 -1
- package/dist/assets/Countdown.css +1 -1
- package/dist/assets/Fifty.css +1 -1
- package/dist/assets/FloatingWordsHero.css +1 -1
- package/dist/assets/Footer.css +1 -1
- package/dist/assets/GenericOverlay.css +1 -1
- package/dist/assets/IconDetail.css +1 -1
- package/dist/assets/ImageTextBlock.css +1 -1
- package/dist/assets/List.css +1 -1
- package/dist/assets/Map.css +1 -1
- package/dist/assets/MenuButton.css +1 -1
- package/dist/assets/Navbar.css +1 -1
- package/dist/assets/Note.css +1 -1
- package/dist/assets/OverlayHero.css +1 -1
- package/dist/assets/PageContainer.css +1 -1
- package/dist/assets/PinnedImage.css +1 -1
- package/dist/assets/PromoGroup.css +1 -1
- package/dist/assets/RSVPEmbed.css +1 -1
- package/dist/assets/Schedule.css +1 -1
- package/dist/assets/TextBlock.css +1 -1
- package/dist/components/Accordion/Accordion.js +21 -14
- package/dist/components/Accordion/AccordionItem.js +1 -1
- package/dist/components/Background/Background.js +6 -6
- package/dist/components/Banner/Banner.js +15 -15
- package/dist/components/Button/Button.js +29 -29
- package/dist/components/ButtonGroup/ButtonGroup.js +5 -4
- package/dist/components/Container/Container.js +13 -11
- package/dist/components/Countdown/Countdown.js +1 -1
- package/dist/components/Fifty/Fifty.js +24 -23
- package/dist/components/FloatingWordsHero/FloatingWordsHero.js +55 -25
- package/dist/components/Footer/Footer.js +6 -6
- package/dist/components/GenericOverlay/GenericOverlay.js +14 -14
- package/dist/components/IconDetail/IconDetail.js +3 -3
- package/dist/components/ImageTextBlock/ImageTextBlock.js +24 -23
- package/dist/components/List/List.js +12 -12
- package/dist/components/Map/Map.js +25 -23
- package/dist/components/MenuButton/MenuButton.js +21 -21
- package/dist/components/Navbar/Navbar.js +40 -40
- package/dist/components/Note/Note.js +14 -14
- package/dist/components/OverlayHero/OverlayHero.js +63 -21
- package/dist/components/PageContainer/PageContainer.js +6 -6
- package/dist/components/PinnedImage/PinnedImage.js +36 -36
- package/dist/components/PromoGroup/PromoGroup.js +46 -44
- package/dist/components/RSVPEmbed/RSVPEmbed.js +3 -3
- package/dist/components/Schedule/Schedule.js +12 -12
- package/dist/components/TextBlock/TextBlock.js +18 -18
- package/dist/components/Toolbar/Toolbar.js +16 -16
- package/dist/hooks/useImageReveal 4.js +55 -0
- package/dist/hooks/useImageReveal.js +55 -0
- package/dist/hooks/{useResize 2.js → useResize 4.js } +11 -7
- package/dist/hooks/useResize.js +11 -7
- package/dist/index 2.js +50 -0
- package/dist/index-BmTo-IS6 4.js +2018 -0
- package/dist/index-DyQs5aC7 4.js +388 -0
- package/dist/index-K0WrPJ_C 4.js +29 -0
- package/dist/index.modern-DPbS1w7M 4.js +1443 -0
- package/dist/presets/{animations 3.js → animations 4.js } +7 -2
- package/dist/presets/animations.js +7 -2
- package/package.json +3 -2
- package/src/styles/_fonts.scss +4 -7
- package/src/styles/_reveal.scss +93 -0
- package/src/styles/_sizes.scss +1 -0
- package/dist/AccordionItem-BlVXPxrh.js +0 -40
- /package/dist/hooks/{useActiveSection 2.js → useActiveSection 4.js} +0 -0
- /package/dist/hooks/{useFadeIn 2.js → useFadeIn 4.js} +0 -0
- /package/dist/hooks/{useNavColor 2.js → useNavColor 4.js} +0 -0
- /package/dist/hooks/{useRepeatable 2.js → useRepeatable 4.js} +0 -0
- /package/dist/hooks/{useResponsive 2.js → useResponsive 4.js} +0 -0
- /package/dist/hooks/{useReveal 2.js → useReveal 4.js} +0 -0
- /package/dist/hooks/{useStagger 2.js → useStagger 4.js} +0 -0
- /package/dist/{index-B2JRaoNz 2.js → index-B2JRaoNz 4.js} +0 -0
- /package/dist/utils/{breakpoints 3.js → breakpoints 4.js} +0 -0
- /package/dist/utils/{gsapSetup 3.js → gsapSetup 4.js} +0 -0
- /package/dist/utils/{parse 3.js → parse 4.js} +0 -0
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsxs as
|
|
2
|
+
import { jsxs as s, jsx as i } from "react/jsx-runtime";
|
|
3
3
|
import { Fragment as n } from "react";
|
|
4
|
-
import '../../assets/Schedule.css';const a = "
|
|
4
|
+
import '../../assets/Schedule.css';const a = "_schedule_1hj0g_2", m = "_timeline_1hj0g_79", r = "_time_1hj0g_79", h = "_dot_1hj0g_92", o = "_diagram_1hj0g_100", _ = "_line_1hj0g_106", e = {
|
|
5
5
|
schedule: a,
|
|
6
6
|
timeline: m,
|
|
7
7
|
time: r,
|
|
8
|
-
dot:
|
|
9
|
-
diagram:
|
|
10
|
-
line:
|
|
11
|
-
}, p = ({ slots:
|
|
12
|
-
/* @__PURE__ */ i("h3", { children:
|
|
13
|
-
/* @__PURE__ */ i("div", { className: e.timeline, children:
|
|
14
|
-
/* @__PURE__ */ i("div", { className: e.time, children:
|
|
15
|
-
/* @__PURE__ */
|
|
8
|
+
dot: h,
|
|
9
|
+
diagram: o,
|
|
10
|
+
line: _
|
|
11
|
+
}, p = ({ slots: d, header: t }) => /* @__PURE__ */ s("div", { className: e.schedule, children: [
|
|
12
|
+
/* @__PURE__ */ i("h3", { children: t }),
|
|
13
|
+
/* @__PURE__ */ i("div", { className: e.timeline, children: d.map((c, l) => /* @__PURE__ */ s(n, { children: [
|
|
14
|
+
/* @__PURE__ */ i("div", { className: e.time, children: c.time }),
|
|
15
|
+
/* @__PURE__ */ s("div", { className: e.diagram, children: [
|
|
16
16
|
/* @__PURE__ */ i("span", { className: e.line }),
|
|
17
17
|
/* @__PURE__ */ i("div", { className: e.dot })
|
|
18
18
|
] }),
|
|
19
|
-
/* @__PURE__ */ i("div", { className: e.description, children:
|
|
20
|
-
] },
|
|
19
|
+
/* @__PURE__ */ i("div", { className: e.description, children: c.description })
|
|
20
|
+
] }, l)) })
|
|
21
21
|
] });
|
|
22
22
|
export {
|
|
23
23
|
p as default
|
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsxs as
|
|
3
|
-
import { createElement as
|
|
4
|
-
import
|
|
2
|
+
import { jsxs as l, jsx as c } from "react/jsx-runtime";
|
|
3
|
+
import { createElement as d } from "react";
|
|
4
|
+
import n from "../../utils/parse.js";
|
|
5
5
|
import m from "../IconDetail/IconDetail.js";
|
|
6
|
-
import '../../assets/TextBlock.css';const
|
|
7
|
-
title:
|
|
8
|
-
blocks:
|
|
9
|
-
block:
|
|
10
|
-
blockHeader:
|
|
11
|
-
description:
|
|
12
|
-
},
|
|
13
|
-
/* @__PURE__ */ c("h2", { className: e.title, children:
|
|
14
|
-
/* @__PURE__ */ c("div", { className: e.blocks, children:
|
|
6
|
+
import '../../assets/TextBlock.css';const b = "_title_wzjzb_1", _ = "_blocks_wzjzb_47", p = "_block_wzjzb_47", k = "_blockHeader_wzjzb_58", h = "_description_wzjzb_87", e = {
|
|
7
|
+
title: b,
|
|
8
|
+
blocks: _,
|
|
9
|
+
block: p,
|
|
10
|
+
blockHeader: k,
|
|
11
|
+
description: h
|
|
12
|
+
}, f = ({ header: t, blocks: i }) => /* @__PURE__ */ l("div", { className: e.container, children: [
|
|
13
|
+
/* @__PURE__ */ c("h2", { className: e.title, children: t }),
|
|
14
|
+
/* @__PURE__ */ c("div", { className: e.blocks, children: i.map((s, o) => (
|
|
15
15
|
// <div className={styles.block} key={`block-${idx}`}>
|
|
16
|
-
/* @__PURE__ */
|
|
17
|
-
/* @__PURE__ */ c("h3", { className: e.blockHeader, children:
|
|
18
|
-
/* @__PURE__ */
|
|
19
|
-
/* @__PURE__ */ c("div", { className: e.description, children:
|
|
20
|
-
/* @__PURE__ */ c("div", { className: e.details, children:
|
|
16
|
+
/* @__PURE__ */ l("div", { className: e.block, children: [
|
|
17
|
+
/* @__PURE__ */ c("h3", { className: e.blockHeader, children: s.header }),
|
|
18
|
+
/* @__PURE__ */ l("div", { className: e.content, children: [
|
|
19
|
+
/* @__PURE__ */ c("div", { className: e.description, children: n(s.description) }),
|
|
20
|
+
/* @__PURE__ */ c("div", { className: e.details, children: s.details && s.details.map((a, r) => /* @__PURE__ */ d(m, { ...a, key: r })) })
|
|
21
21
|
] })
|
|
22
22
|
] }, `block-${o}`)
|
|
23
23
|
)) })
|
|
24
24
|
] });
|
|
25
25
|
export {
|
|
26
|
-
|
|
26
|
+
f as default
|
|
27
27
|
};
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsxs as
|
|
2
|
+
import { jsxs as o, jsx as u, Fragment as f } from "react/jsx-runtime";
|
|
3
3
|
import x from "../../hooks/useResize.js";
|
|
4
|
-
import { useState as
|
|
5
|
-
import '../../assets/Toolbar.css';const b = "_toolbar_17thg_1",
|
|
4
|
+
import { useState as a, useEffect as d } from "react";
|
|
5
|
+
import '../../assets/Toolbar.css';const b = "_toolbar_17thg_1", k = {
|
|
6
6
|
toolbar: b
|
|
7
7
|
}, y = () => {
|
|
8
|
-
const [
|
|
8
|
+
const [e, n] = a(!0), [l, c] = a(0), r = x(), h = {
|
|
9
9
|
xxl: 1600,
|
|
10
10
|
// 1600
|
|
11
11
|
xl: 1200,
|
|
@@ -20,28 +20,28 @@ import '../../assets/Toolbar.css';const b = "_toolbar_17thg_1", v = {
|
|
|
20
20
|
// 390
|
|
21
21
|
xxs: 0
|
|
22
22
|
// 0
|
|
23
|
-
},
|
|
24
|
-
t.code === "KeyI" && (t.preventDefault(), t.stopPropagation(),
|
|
23
|
+
}, s = (t) => {
|
|
24
|
+
t.code === "KeyI" && (t.preventDefault(), t.stopPropagation(), n(!e));
|
|
25
25
|
};
|
|
26
|
-
return
|
|
26
|
+
return d(() => (window.addEventListener("keyup", s), () => window.removeEventListener("keyup", s)), [e]), d(() => {
|
|
27
27
|
const t = window.innerWidth;
|
|
28
|
-
let
|
|
28
|
+
let i = "xxs";
|
|
29
29
|
for (const [p, m] of Object.entries(h))
|
|
30
30
|
if (t >= m) {
|
|
31
|
-
|
|
31
|
+
i = p;
|
|
32
32
|
break;
|
|
33
33
|
}
|
|
34
|
-
c(
|
|
35
|
-
}, []),
|
|
36
|
-
/* @__PURE__ */
|
|
34
|
+
c(i);
|
|
35
|
+
}, []), e ? /* @__PURE__ */ o("div", { className: k.toolbar, onClick: () => n(!e), children: [
|
|
36
|
+
/* @__PURE__ */ o("div", { children: [
|
|
37
37
|
"Width: ",
|
|
38
|
-
|
|
38
|
+
r.innerWidth
|
|
39
39
|
] }),
|
|
40
|
-
/* @__PURE__ */
|
|
40
|
+
/* @__PURE__ */ o("div", { children: [
|
|
41
41
|
"Height: ",
|
|
42
|
-
|
|
42
|
+
r.innerHeight
|
|
43
43
|
] }),
|
|
44
|
-
/* @__PURE__ */
|
|
44
|
+
/* @__PURE__ */ o("div", { children: [
|
|
45
45
|
"Breakpoint: ",
|
|
46
46
|
l
|
|
47
47
|
] })
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { useRef as d, useEffect as g } from "react";
|
|
2
|
+
import { g as r } from "../index-BmTo-IS6.js";
|
|
3
|
+
import { S as n } from "../ScrollTrigger-6HnikosL.js";
|
|
4
|
+
function T(s = {}) {
|
|
5
|
+
const t = d(null);
|
|
6
|
+
return g(() => {
|
|
7
|
+
const o = t.current;
|
|
8
|
+
if (!o) return;
|
|
9
|
+
const {
|
|
10
|
+
start: i = "top 85%",
|
|
11
|
+
once: c = !0,
|
|
12
|
+
duration: a = 2,
|
|
13
|
+
ease: l = "power2.out",
|
|
14
|
+
color: u = "#ffffff"
|
|
15
|
+
} = s, f = window.matchMedia(
|
|
16
|
+
"(prefers-reduced-motion: reduce)"
|
|
17
|
+
).matches, e = document.createElement("div");
|
|
18
|
+
e.style.cssText = `
|
|
19
|
+
position: absolute;
|
|
20
|
+
inset: 0;
|
|
21
|
+
background: ${u};
|
|
22
|
+
z-index: 1;
|
|
23
|
+
pointer-events: none;
|
|
24
|
+
`, o.style.position = "relative", o.appendChild(e);
|
|
25
|
+
const m = r.context(() => {
|
|
26
|
+
if (f) {
|
|
27
|
+
e.remove();
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
r.fromTo(
|
|
31
|
+
e,
|
|
32
|
+
{ opacity: 1 },
|
|
33
|
+
{
|
|
34
|
+
opacity: 0,
|
|
35
|
+
duration: a,
|
|
36
|
+
ease: l,
|
|
37
|
+
scrollTrigger: {
|
|
38
|
+
trigger: o,
|
|
39
|
+
start: i,
|
|
40
|
+
toggleActions: c ? "play none none none" : "play none none reverse"
|
|
41
|
+
},
|
|
42
|
+
onComplete: () => e.remove()
|
|
43
|
+
}
|
|
44
|
+
);
|
|
45
|
+
});
|
|
46
|
+
window.addEventListener("load", () => n.refresh());
|
|
47
|
+
const p = setTimeout(() => n.refresh(), 500);
|
|
48
|
+
return () => {
|
|
49
|
+
m.revert(), e.remove(), clearTimeout(p);
|
|
50
|
+
};
|
|
51
|
+
}, []), t;
|
|
52
|
+
}
|
|
53
|
+
export {
|
|
54
|
+
T as useImageReveal
|
|
55
|
+
};
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { useRef as d, useEffect as g } from "react";
|
|
2
|
+
import { g as r } from "../index-BmTo-IS6.js";
|
|
3
|
+
import { S as n } from "../ScrollTrigger-6HnikosL.js";
|
|
4
|
+
function T(s = {}) {
|
|
5
|
+
const t = d(null);
|
|
6
|
+
return g(() => {
|
|
7
|
+
const o = t.current;
|
|
8
|
+
if (!o) return;
|
|
9
|
+
const {
|
|
10
|
+
start: i = "top 85%",
|
|
11
|
+
once: c = !0,
|
|
12
|
+
duration: a = 2,
|
|
13
|
+
ease: l = "power2.out",
|
|
14
|
+
color: u = "#ffffff"
|
|
15
|
+
} = s, f = window.matchMedia(
|
|
16
|
+
"(prefers-reduced-motion: reduce)"
|
|
17
|
+
).matches, e = document.createElement("div");
|
|
18
|
+
e.style.cssText = `
|
|
19
|
+
position: absolute;
|
|
20
|
+
inset: 0;
|
|
21
|
+
background: ${u};
|
|
22
|
+
z-index: 1;
|
|
23
|
+
pointer-events: none;
|
|
24
|
+
`, o.style.position = "relative", o.appendChild(e);
|
|
25
|
+
const m = r.context(() => {
|
|
26
|
+
if (f) {
|
|
27
|
+
e.remove();
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
r.fromTo(
|
|
31
|
+
e,
|
|
32
|
+
{ opacity: 1 },
|
|
33
|
+
{
|
|
34
|
+
opacity: 0,
|
|
35
|
+
duration: a,
|
|
36
|
+
ease: l,
|
|
37
|
+
scrollTrigger: {
|
|
38
|
+
trigger: o,
|
|
39
|
+
start: i,
|
|
40
|
+
toggleActions: c ? "play none none none" : "play none none reverse"
|
|
41
|
+
},
|
|
42
|
+
onComplete: () => e.remove()
|
|
43
|
+
}
|
|
44
|
+
);
|
|
45
|
+
});
|
|
46
|
+
window.addEventListener("load", () => n.refresh());
|
|
47
|
+
const p = setTimeout(() => n.refresh(), 500);
|
|
48
|
+
return () => {
|
|
49
|
+
m.revert(), e.remove(), clearTimeout(p);
|
|
50
|
+
};
|
|
51
|
+
}, []), t;
|
|
52
|
+
}
|
|
53
|
+
export {
|
|
54
|
+
T as useImageReveal
|
|
55
|
+
};
|
|
@@ -1,19 +1,23 @@
|
|
|
1
1
|
import { useState as t, useEffect as r } from "react";
|
|
2
|
-
const
|
|
3
|
-
const [
|
|
4
|
-
innerWidth:
|
|
5
|
-
innerHeight:
|
|
2
|
+
const s = () => {
|
|
3
|
+
const [i, e] = t({
|
|
4
|
+
innerWidth: void 0,
|
|
5
|
+
innerHeight: void 0
|
|
6
6
|
});
|
|
7
7
|
return r(() => {
|
|
8
|
+
e({
|
|
9
|
+
innerWidth: window.innerWidth,
|
|
10
|
+
innerHeight: window.innerHeight
|
|
11
|
+
});
|
|
8
12
|
const n = () => {
|
|
9
|
-
|
|
13
|
+
e({
|
|
10
14
|
innerWidth: window.innerWidth,
|
|
11
15
|
innerHeight: window.innerHeight
|
|
12
16
|
});
|
|
13
17
|
};
|
|
14
18
|
return window.addEventListener("resize", n), () => window.removeEventListener("resize", n);
|
|
15
|
-
}, [
|
|
19
|
+
}, []), i;
|
|
16
20
|
};
|
|
17
21
|
export {
|
|
18
|
-
|
|
22
|
+
s as default
|
|
19
23
|
};
|
package/dist/hooks/useResize.js
CHANGED
|
@@ -1,19 +1,23 @@
|
|
|
1
1
|
import { useState as t, useEffect as r } from "react";
|
|
2
|
-
const
|
|
3
|
-
const [
|
|
4
|
-
innerWidth:
|
|
5
|
-
innerHeight:
|
|
2
|
+
const s = () => {
|
|
3
|
+
const [i, e] = t({
|
|
4
|
+
innerWidth: void 0,
|
|
5
|
+
innerHeight: void 0
|
|
6
6
|
});
|
|
7
7
|
return r(() => {
|
|
8
|
+
e({
|
|
9
|
+
innerWidth: window.innerWidth,
|
|
10
|
+
innerHeight: window.innerHeight
|
|
11
|
+
});
|
|
8
12
|
const n = () => {
|
|
9
|
-
|
|
13
|
+
e({
|
|
10
14
|
innerWidth: window.innerWidth,
|
|
11
15
|
innerHeight: window.innerHeight
|
|
12
16
|
});
|
|
13
17
|
};
|
|
14
18
|
return window.addEventListener("resize", n), () => window.removeEventListener("resize", n);
|
|
15
|
-
}, [
|
|
19
|
+
}, []), i;
|
|
16
20
|
};
|
|
17
21
|
export {
|
|
18
|
-
|
|
22
|
+
s as default
|
|
19
23
|
};
|
package/dist/index 2.js
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { default as r } from "./components/PromoGroup/PromoGroup.js";
|
|
2
|
+
import { default as t } from "./components/Background/Background.js";
|
|
3
|
+
import { default as l } from "./components/Banner/Banner.js";
|
|
4
|
+
import { default as d } from "./components/Button/Button.js";
|
|
5
|
+
import { default as p } from "./components/Container/Container.js";
|
|
6
|
+
import { default as s } from "./components/Fifty/Fifty.js";
|
|
7
|
+
import { default as c } from "./components/Footer/Footer.js";
|
|
8
|
+
import { default as B } from "./components/ImageTextBlock/ImageTextBlock.js";
|
|
9
|
+
import { default as y } from "./components/OverlayHero/OverlayHero.js";
|
|
10
|
+
import { default as g } from "./components/Note/Note.js";
|
|
11
|
+
import { default as F } from "./components/MenuButton/MenuButton.js";
|
|
12
|
+
import { default as S } from "./components/Navbar/Navbar.js";
|
|
13
|
+
import { default as C } from "./components/IconDetail/IconDetail.js";
|
|
14
|
+
import { default as H } from "./components/Overlay/Overlay.js";
|
|
15
|
+
import { default as M } from "./components/GenericOverlay/GenericOverlay.js";
|
|
16
|
+
import { default as P } from "./components/Toolbar/Toolbar.js";
|
|
17
|
+
import { default as w } from "./components/TextBlock/TextBlock.js";
|
|
18
|
+
import { default as D } from "./components/RSVPEmbed/RSVPEmbed.js";
|
|
19
|
+
import { default as R } from "./components/Accordion/Accordion.js";
|
|
20
|
+
import { default as W } from "./components/Schedule/Schedule.js";
|
|
21
|
+
import { default as q } from "./components/Countdown/Countdown.js";
|
|
22
|
+
import { default as J } from "./components/FloatingWordsHero/FloatingWordsHero.js";
|
|
23
|
+
import { default as L } from "./components/Map/Map.js";
|
|
24
|
+
import { default as U } from "./components/Spacer/Spacer.js";
|
|
25
|
+
export {
|
|
26
|
+
R as Accordion,
|
|
27
|
+
t as Background,
|
|
28
|
+
l as Banner,
|
|
29
|
+
d as Button,
|
|
30
|
+
p as Container,
|
|
31
|
+
q as Countdown,
|
|
32
|
+
s as Fifty,
|
|
33
|
+
J as FloatingWordsHero,
|
|
34
|
+
c as Footer,
|
|
35
|
+
M as GenericOverlay,
|
|
36
|
+
C as IconDetail,
|
|
37
|
+
B as ImageTextBlock,
|
|
38
|
+
L as Map,
|
|
39
|
+
F as MenuButton,
|
|
40
|
+
S as Navbar,
|
|
41
|
+
g as Note,
|
|
42
|
+
H as Overlay,
|
|
43
|
+
y as OverlayHero,
|
|
44
|
+
r as PromoGroup,
|
|
45
|
+
D as RSVPEmbed,
|
|
46
|
+
W as Schedule,
|
|
47
|
+
U as Spacer,
|
|
48
|
+
w as TextBlock,
|
|
49
|
+
P as Toolbar
|
|
50
|
+
};
|