@wil-works/evoke-ui 0.1.0 → 0.2.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/README.md +9 -2
- package/dist/evoke-ui.css +930 -34
- package/dist/index.mjs +1392 -448
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Fragment, Teleport, Transition, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createTextVNode, createVNode, getCurrentInstance, h, inject, mergeProps, nextTick, normalizeClass, normalizeStyle, onBeforeUnmount, onMounted, openBlock, provide, reactive, ref, renderList, renderSlot, resolveDynamicComponent, toDisplayString, unref, useAttrs, useSlots, vModelText, watch, withCtx, withDirectives, withKeys, withModifiers } from "vue";
|
|
1
|
+
import { Fragment, Teleport, Transition, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createTextVNode, createVNode, getCurrentInstance, h, inject, mergeProps, nextTick, normalizeClass, normalizeStyle, onBeforeUnmount, onMounted, onUnmounted, openBlock, provide, reactive, ref, renderList, renderSlot, resolveDynamicComponent, toDisplayString, unref, useAttrs, useSlots, vModelText, watch, withCtx, withDirectives, withKeys, withModifiers } from "vue";
|
|
2
2
|
//#region src/composables/useTheme.js
|
|
3
3
|
/**
|
|
4
4
|
* useTheme — 明暗主题管理
|
|
@@ -623,7 +623,8 @@ var DEFAULT_CONFIG = {
|
|
|
623
623
|
semantic: null,
|
|
624
624
|
radius: "default",
|
|
625
625
|
space: "default",
|
|
626
|
-
container: "default"
|
|
626
|
+
container: "default",
|
|
627
|
+
glass: false
|
|
627
628
|
};
|
|
628
629
|
var config = reactive({ ...DEFAULT_CONFIG });
|
|
629
630
|
function apply() {
|
|
@@ -729,9 +730,16 @@ function useThemeConfig() {
|
|
|
729
730
|
}
|
|
730
731
|
apply();
|
|
731
732
|
}
|
|
733
|
+
function setGlass(on) {
|
|
734
|
+
config.glass = !!on;
|
|
735
|
+
if (typeof document === "undefined") return;
|
|
736
|
+
if (config.glass) document.documentElement.setAttribute("data-ew-glass", "on");
|
|
737
|
+
else document.documentElement.removeAttribute("data-ew-glass");
|
|
738
|
+
}
|
|
732
739
|
function reset() {
|
|
733
740
|
Object.assign(config, DEFAULT_CONFIG);
|
|
734
741
|
clearApplied();
|
|
742
|
+
setGlass(false);
|
|
735
743
|
}
|
|
736
744
|
/**
|
|
737
745
|
* 应用一个风格方案(EW_STYLE_PRESETS 的 key)
|
|
@@ -748,6 +756,7 @@ function useThemeConfig() {
|
|
|
748
756
|
config,
|
|
749
757
|
setPrimary,
|
|
750
758
|
setSemantic,
|
|
759
|
+
setGlass,
|
|
751
760
|
setRadius,
|
|
752
761
|
setSpace,
|
|
753
762
|
setContainer,
|
|
@@ -1231,7 +1240,7 @@ function loadShowcaseIcons() {
|
|
|
1231
1240
|
}
|
|
1232
1241
|
//#endregion
|
|
1233
1242
|
//#region src/components/icon/index.vue
|
|
1234
|
-
var _sfc_main$
|
|
1243
|
+
var _sfc_main$24 = {
|
|
1235
1244
|
__name: "index",
|
|
1236
1245
|
props: {
|
|
1237
1246
|
/** 图标组件或图标名称(kebab-case,如 'search') */
|
|
@@ -1280,20 +1289,15 @@ var _sfc_main$21 = {
|
|
|
1280
1289
|
};
|
|
1281
1290
|
//#endregion
|
|
1282
1291
|
//#region src/components/button/index.vue
|
|
1283
|
-
var _hoisted_1$
|
|
1284
|
-
"type",
|
|
1285
|
-
"disabled",
|
|
1286
|
-
"aria-disabled"
|
|
1287
|
-
];
|
|
1288
|
-
var _hoisted_2$35 = {
|
|
1292
|
+
var _hoisted_1$45 = {
|
|
1289
1293
|
key: 0,
|
|
1290
1294
|
class: "ew-button__loading"
|
|
1291
1295
|
};
|
|
1292
|
-
var
|
|
1296
|
+
var _hoisted_2$40 = {
|
|
1293
1297
|
key: 2,
|
|
1294
1298
|
class: "ew-button__content"
|
|
1295
1299
|
};
|
|
1296
|
-
var _sfc_main$
|
|
1300
|
+
var _sfc_main$9 = {
|
|
1297
1301
|
__name: "index",
|
|
1298
1302
|
props: {
|
|
1299
1303
|
/** 视觉变体 */
|
|
@@ -1353,6 +1357,21 @@ var _sfc_main$7 = {
|
|
|
1353
1357
|
"submit",
|
|
1354
1358
|
"reset"
|
|
1355
1359
|
].includes(v)
|
|
1360
|
+
},
|
|
1361
|
+
/** 链接地址:传入时按钮渲染为 <a>,站内/外链跳转直接可用 */
|
|
1362
|
+
href: {
|
|
1363
|
+
type: String,
|
|
1364
|
+
default: void 0
|
|
1365
|
+
},
|
|
1366
|
+
/** 链接打开方式(href 存在时生效) */
|
|
1367
|
+
target: {
|
|
1368
|
+
type: String,
|
|
1369
|
+
default: void 0
|
|
1370
|
+
},
|
|
1371
|
+
/** rel 属性(href + target="_blank" 时默认 noopener) */
|
|
1372
|
+
rel: {
|
|
1373
|
+
type: String,
|
|
1374
|
+
default: void 0
|
|
1356
1375
|
}
|
|
1357
1376
|
},
|
|
1358
1377
|
emits: ["click"],
|
|
@@ -1362,6 +1381,7 @@ var _sfc_main$7 = {
|
|
|
1362
1381
|
* variant:primary 蓝色实心 / dark 墨色实心(launchos 黑胶囊 CTA)/
|
|
1363
1382
|
* soft 柔和底(remixicon 头部下载钮)/ outline / ghost
|
|
1364
1383
|
* 默认 radius-lg 圆润矩形,pill 转全圆胶囊
|
|
1384
|
+
* href 传入时渲染为 <a>(站内/外链跳转),target="_blank" 自动补 noopener
|
|
1365
1385
|
*/
|
|
1366
1386
|
const props = __props;
|
|
1367
1387
|
const emit = __emit;
|
|
@@ -1383,7 +1403,7 @@ var _sfc_main$7 = {
|
|
|
1383
1403
|
blur: (...args) => btnRef.value?.blur?.(...args)
|
|
1384
1404
|
});
|
|
1385
1405
|
return (_ctx, _cache) => {
|
|
1386
|
-
return openBlock(),
|
|
1406
|
+
return openBlock(), createBlock(resolveDynamicComponent(__props.href ? "a" : "button"), {
|
|
1387
1407
|
ref_key: "btnRef",
|
|
1388
1408
|
ref: btnRef,
|
|
1389
1409
|
class: normalizeClass([
|
|
@@ -1398,40 +1418,54 @@ var _sfc_main$7 = {
|
|
|
1398
1418
|
"is-icon-only": iconOnly.value
|
|
1399
1419
|
}
|
|
1400
1420
|
]),
|
|
1401
|
-
type: __props.nativeType,
|
|
1402
|
-
|
|
1421
|
+
type: __props.href ? void 0 : __props.nativeType,
|
|
1422
|
+
href: __props.href || void 0,
|
|
1423
|
+
target: __props.href ? __props.target || void 0 : void 0,
|
|
1424
|
+
rel: __props.href ? __props.rel || (__props.target === "_blank" ? "noopener" : void 0) : void 0,
|
|
1425
|
+
disabled: __props.href ? void 0 : __props.disabled || __props.loading,
|
|
1403
1426
|
"aria-disabled": __props.disabled || __props.loading,
|
|
1404
1427
|
onClick: handleClick
|
|
1405
|
-
},
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1428
|
+
}, {
|
|
1429
|
+
default: withCtx(() => [
|
|
1430
|
+
__props.loading ? (openBlock(), createElementBlock("span", _hoisted_1$45, [createVNode(_sfc_main$24, {
|
|
1431
|
+
name: "loading",
|
|
1432
|
+
size: iconSize.value,
|
|
1433
|
+
class: "is-rotating"
|
|
1434
|
+
}, null, 8, ["size"])])) : __props.icon ? (openBlock(), createBlock(_sfc_main$24, {
|
|
1435
|
+
key: 1,
|
|
1436
|
+
name: __props.icon,
|
|
1437
|
+
size: iconSize.value,
|
|
1438
|
+
class: "ew-button__icon"
|
|
1439
|
+
}, null, 8, ["name", "size"])) : createCommentVNode("", true),
|
|
1440
|
+
_ctx.$slots.default ? (openBlock(), createElementBlock("span", _hoisted_2$40, [renderSlot(_ctx.$slots, "default")])) : createCommentVNode("", true),
|
|
1441
|
+
__props.iconRight && !__props.loading ? (openBlock(), createBlock(_sfc_main$24, {
|
|
1442
|
+
key: 3,
|
|
1443
|
+
name: __props.iconRight,
|
|
1444
|
+
size: iconSize.value,
|
|
1445
|
+
class: "ew-button__icon ew-button__icon--right"
|
|
1446
|
+
}, null, 8, ["name", "size"])) : createCommentVNode("", true)
|
|
1447
|
+
]),
|
|
1448
|
+
_: 3
|
|
1449
|
+
}, 8, [
|
|
1450
|
+
"class",
|
|
1451
|
+
"type",
|
|
1452
|
+
"href",
|
|
1453
|
+
"target",
|
|
1454
|
+
"rel",
|
|
1455
|
+
"disabled",
|
|
1456
|
+
"aria-disabled"
|
|
1457
|
+
]);
|
|
1424
1458
|
};
|
|
1425
1459
|
}
|
|
1426
1460
|
};
|
|
1427
1461
|
//#endregion
|
|
1428
1462
|
//#region src/components/icon-button/index.vue
|
|
1429
|
-
var _hoisted_1$
|
|
1463
|
+
var _hoisted_1$44 = [
|
|
1430
1464
|
"type",
|
|
1431
1465
|
"disabled",
|
|
1432
1466
|
"aria-label"
|
|
1433
1467
|
];
|
|
1434
|
-
var _sfc_main$
|
|
1468
|
+
var _sfc_main$25 = {
|
|
1435
1469
|
__name: "index",
|
|
1436
1470
|
props: {
|
|
1437
1471
|
/** 图标名(kebab-case) */
|
|
@@ -1517,16 +1551,16 @@ var _sfc_main$22 = {
|
|
|
1517
1551
|
disabled: __props.disabled,
|
|
1518
1552
|
"aria-label": __props.ariaLabel || __props.icon,
|
|
1519
1553
|
onClick: handleClick
|
|
1520
|
-
}, [createVNode(_sfc_main$
|
|
1554
|
+
}, [createVNode(_sfc_main$24, {
|
|
1521
1555
|
name: __props.icon,
|
|
1522
1556
|
size: iconSize.value
|
|
1523
|
-
}, null, 8, ["name", "size"]), renderSlot(_ctx.$slots, "default")], 10, _hoisted_1$
|
|
1557
|
+
}, null, 8, ["name", "size"]), renderSlot(_ctx.$slots, "default")], 10, _hoisted_1$44);
|
|
1524
1558
|
};
|
|
1525
1559
|
}
|
|
1526
1560
|
};
|
|
1527
1561
|
//#endregion
|
|
1528
1562
|
//#region src/components/tag/index.vue
|
|
1529
|
-
var _sfc_main$
|
|
1563
|
+
var _sfc_main$50 = {
|
|
1530
1564
|
__name: "index",
|
|
1531
1565
|
props: {
|
|
1532
1566
|
tone: {
|
|
@@ -1587,7 +1621,7 @@ var _sfc_main$44 = {
|
|
|
1587
1621
|
`is-${__props.tone}`,
|
|
1588
1622
|
`is-${__props.variant}`
|
|
1589
1623
|
]) }, [
|
|
1590
|
-
__props.icon ? (openBlock(), createBlock(_sfc_main$
|
|
1624
|
+
__props.icon ? (openBlock(), createBlock(_sfc_main$24, {
|
|
1591
1625
|
key: 0,
|
|
1592
1626
|
name: __props.icon,
|
|
1593
1627
|
size: iconSize.value,
|
|
@@ -1600,7 +1634,7 @@ var _sfc_main$44 = {
|
|
|
1600
1634
|
class: "ew-tag__close",
|
|
1601
1635
|
"aria-label": "close",
|
|
1602
1636
|
onClick: _cache[0] || (_cache[0] = withModifiers(($event) => emit("close"), ["stop"]))
|
|
1603
|
-
}, [createVNode(_sfc_main$
|
|
1637
|
+
}, [createVNode(_sfc_main$24, {
|
|
1604
1638
|
name: "close",
|
|
1605
1639
|
size: iconSize.value - 2
|
|
1606
1640
|
}, null, 8, ["size"])])) : createCommentVNode("", true)
|
|
@@ -1610,7 +1644,7 @@ var _sfc_main$44 = {
|
|
|
1610
1644
|
};
|
|
1611
1645
|
//#endregion
|
|
1612
1646
|
//#region src/components/badge/index.vue
|
|
1613
|
-
var _sfc_main$
|
|
1647
|
+
var _sfc_main$7 = {
|
|
1614
1648
|
__name: "index",
|
|
1615
1649
|
props: {
|
|
1616
1650
|
/** 计数值(超过 max 显示 max+) */
|
|
@@ -1656,9 +1690,14 @@ var _sfc_main$6 = {
|
|
|
1656
1690
|
};
|
|
1657
1691
|
//#endregion
|
|
1658
1692
|
//#region src/components/card/index.vue
|
|
1659
|
-
var _sfc_main$
|
|
1693
|
+
var _sfc_main$10 = {
|
|
1660
1694
|
__name: "index",
|
|
1661
1695
|
props: {
|
|
1696
|
+
/** 磨砂玻璃质感:true 强制开 / false 强制关 / 缺省跟随全局(ConfigProvider 的 glass) */
|
|
1697
|
+
glass: {
|
|
1698
|
+
type: Boolean,
|
|
1699
|
+
default: void 0
|
|
1700
|
+
},
|
|
1662
1701
|
tone: {
|
|
1663
1702
|
type: String,
|
|
1664
1703
|
default: "plain",
|
|
@@ -1713,7 +1752,9 @@ var _sfc_main$8 = {
|
|
|
1713
1752
|
"is-sticker": __props.sticker,
|
|
1714
1753
|
"is-featured": __props.featured,
|
|
1715
1754
|
"is-hoverable": __props.hoverable,
|
|
1716
|
-
"is-flat": __props.flat
|
|
1755
|
+
"is-flat": __props.flat,
|
|
1756
|
+
"is-glass": __props.glass === true,
|
|
1757
|
+
"no-glass": __props.glass === false
|
|
1717
1758
|
}
|
|
1718
1759
|
]),
|
|
1719
1760
|
style: normalizeStyle(__props.customBg ? { backgroundColor: __props.customBg } : void 0)
|
|
@@ -1726,25 +1767,30 @@ var _sfc_main$8 = {
|
|
|
1726
1767
|
};
|
|
1727
1768
|
//#endregion
|
|
1728
1769
|
//#region src/components/section/index.vue
|
|
1729
|
-
var _hoisted_1$
|
|
1770
|
+
var _hoisted_1$43 = {
|
|
1730
1771
|
key: 0,
|
|
1731
1772
|
class: "ew-section__eyebrow"
|
|
1732
1773
|
};
|
|
1733
|
-
var _hoisted_2$
|
|
1774
|
+
var _hoisted_2$39 = {
|
|
1734
1775
|
key: 1,
|
|
1735
1776
|
class: "ew-section__title"
|
|
1736
1777
|
};
|
|
1737
|
-
var _hoisted_3$
|
|
1778
|
+
var _hoisted_3$32 = {
|
|
1738
1779
|
key: 2,
|
|
1739
1780
|
class: "ew-section__description"
|
|
1740
1781
|
};
|
|
1741
|
-
var _hoisted_4$
|
|
1782
|
+
var _hoisted_4$31 = {
|
|
1742
1783
|
key: 3,
|
|
1743
1784
|
class: "ew-section__body"
|
|
1744
1785
|
};
|
|
1745
|
-
var _sfc_main$
|
|
1786
|
+
var _sfc_main$43 = {
|
|
1746
1787
|
__name: "index",
|
|
1747
1788
|
props: {
|
|
1789
|
+
/** 磨砂玻璃质感:true 强制开 / false 强制关 / 缺省跟随全局(ConfigProvider 的 glass) */
|
|
1790
|
+
glass: {
|
|
1791
|
+
type: Boolean,
|
|
1792
|
+
default: void 0
|
|
1793
|
+
},
|
|
1748
1794
|
/** 眉题(自动大写字距拉开) */
|
|
1749
1795
|
eyebrow: {
|
|
1750
1796
|
type: String,
|
|
@@ -1781,45 +1827,57 @@ var _sfc_main$37 = {
|
|
|
1781
1827
|
});
|
|
1782
1828
|
return (_ctx, _cache) => {
|
|
1783
1829
|
return openBlock(), createElementBlock("section", {
|
|
1784
|
-
class: normalizeClass([
|
|
1830
|
+
class: normalizeClass([
|
|
1831
|
+
"ew-section",
|
|
1832
|
+
`is-${__props.align}`,
|
|
1833
|
+
{
|
|
1834
|
+
"is-glass": __props.glass === true,
|
|
1835
|
+
"no-glass": __props.glass === false
|
|
1836
|
+
}
|
|
1837
|
+
]),
|
|
1785
1838
|
style: normalizeStyle(sectionStyle.value)
|
|
1786
1839
|
}, [
|
|
1787
|
-
__props.eyebrow || _ctx.$slots.eyebrow ? (openBlock(), createElementBlock("div", _hoisted_1$
|
|
1788
|
-
__props.title || _ctx.$slots.title ? (openBlock(), createElementBlock("h2", _hoisted_2$
|
|
1789
|
-
__props.description || _ctx.$slots.description ? (openBlock(), createElementBlock("p", _hoisted_3$
|
|
1790
|
-
_ctx.$slots.default ? (openBlock(), createElementBlock("div", _hoisted_4$
|
|
1840
|
+
__props.eyebrow || _ctx.$slots.eyebrow ? (openBlock(), createElementBlock("div", _hoisted_1$43, [renderSlot(_ctx.$slots, "eyebrow", {}, () => [createTextVNode(toDisplayString(__props.eyebrow), 1)])])) : createCommentVNode("", true),
|
|
1841
|
+
__props.title || _ctx.$slots.title ? (openBlock(), createElementBlock("h2", _hoisted_2$39, [renderSlot(_ctx.$slots, "title", {}, () => [createTextVNode(toDisplayString(__props.title), 1)])])) : createCommentVNode("", true),
|
|
1842
|
+
__props.description || _ctx.$slots.description ? (openBlock(), createElementBlock("p", _hoisted_3$32, [renderSlot(_ctx.$slots, "description", {}, () => [createTextVNode(toDisplayString(__props.description), 1)])])) : createCommentVNode("", true),
|
|
1843
|
+
_ctx.$slots.default ? (openBlock(), createElementBlock("div", _hoisted_4$31, [renderSlot(_ctx.$slots, "default")])) : createCommentVNode("", true)
|
|
1791
1844
|
], 6);
|
|
1792
1845
|
};
|
|
1793
1846
|
}
|
|
1794
1847
|
};
|
|
1795
1848
|
//#endregion
|
|
1796
1849
|
//#region src/components/navbar/index.vue
|
|
1797
|
-
var _hoisted_1$
|
|
1798
|
-
var _hoisted_2$
|
|
1799
|
-
var _hoisted_3$
|
|
1850
|
+
var _hoisted_1$42 = { class: "ew-navbar__inner ew-container" };
|
|
1851
|
+
var _hoisted_2$38 = { class: "ew-navbar__left" };
|
|
1852
|
+
var _hoisted_3$31 = {
|
|
1800
1853
|
key: 0,
|
|
1801
1854
|
href: "/",
|
|
1802
1855
|
class: "ew-navbar__logo"
|
|
1803
1856
|
};
|
|
1804
|
-
var _hoisted_4$
|
|
1805
|
-
var _hoisted_5$
|
|
1857
|
+
var _hoisted_4$30 = ["src"];
|
|
1858
|
+
var _hoisted_5$24 = {
|
|
1806
1859
|
key: 2,
|
|
1807
1860
|
class: "ew-navbar__logo-text"
|
|
1808
1861
|
};
|
|
1809
|
-
var _hoisted_6$
|
|
1862
|
+
var _hoisted_6$15 = {
|
|
1810
1863
|
key: 0,
|
|
1811
1864
|
class: "ew-navbar__nav",
|
|
1812
1865
|
"aria-label": "主导航"
|
|
1813
1866
|
};
|
|
1814
|
-
var _hoisted_7$
|
|
1815
|
-
var _hoisted_8$
|
|
1867
|
+
var _hoisted_7$12 = { class: "ew-navbar__actions" };
|
|
1868
|
+
var _hoisted_8$11 = {
|
|
1816
1869
|
key: 0,
|
|
1817
1870
|
class: "ew-navbar__mobile",
|
|
1818
1871
|
"aria-label": "移动端导航"
|
|
1819
1872
|
};
|
|
1820
|
-
var _sfc_main$
|
|
1873
|
+
var _sfc_main$36 = {
|
|
1821
1874
|
__name: "index",
|
|
1822
1875
|
props: {
|
|
1876
|
+
/** 磨砂玻璃质感:true 强制开 / false 强制关 / 缺省跟随全局(ConfigProvider 的 glass) */
|
|
1877
|
+
glass: {
|
|
1878
|
+
type: Boolean,
|
|
1879
|
+
default: void 0
|
|
1880
|
+
},
|
|
1823
1881
|
/** 吸顶 */
|
|
1824
1882
|
sticky: {
|
|
1825
1883
|
type: Boolean,
|
|
@@ -1906,10 +1964,12 @@ var _sfc_main$30 = {
|
|
|
1906
1964
|
"is-sticky": __props.sticky,
|
|
1907
1965
|
"is-scrolled": isScrolled.value && __props.sticky,
|
|
1908
1966
|
"is-blur": __props.blur && __props.sticky,
|
|
1909
|
-
"is-hidden": hidden.value && __props.sticky
|
|
1967
|
+
"is-hidden": hidden.value && __props.sticky,
|
|
1968
|
+
"is-glass": __props.glass === true,
|
|
1969
|
+
"no-glass": __props.glass === false
|
|
1910
1970
|
}])
|
|
1911
|
-
}, [createElementVNode("div", _hoisted_1$
|
|
1912
|
-
createElementVNode("div", _hoisted_2$
|
|
1971
|
+
}, [createElementVNode("div", _hoisted_1$42, [
|
|
1972
|
+
createElementVNode("div", _hoisted_2$38, [renderSlot(_ctx.$slots, "logo", {}, () => [__props.logo ? (openBlock(), createElementBlock("a", _hoisted_3$31, [__props.logoIcon ? (openBlock(), createBlock(_sfc_main$24, {
|
|
1913
1973
|
key: 0,
|
|
1914
1974
|
name: __props.logoIcon,
|
|
1915
1975
|
size: 22
|
|
@@ -1918,12 +1978,13 @@ var _sfc_main$30 = {
|
|
|
1918
1978
|
src: __props.logoImage,
|
|
1919
1979
|
alt: "logo",
|
|
1920
1980
|
class: "ew-navbar__logo-img"
|
|
1921
|
-
}, null, 8, _hoisted_4$
|
|
1922
|
-
__props.items.length || _ctx.$slots.center ? (openBlock(), createElementBlock("nav", _hoisted_6$
|
|
1981
|
+
}, null, 8, _hoisted_4$30)) : createCommentVNode("", true), __props.logoText ? (openBlock(), createElementBlock("span", _hoisted_5$24, toDisplayString(__props.logoText), 1)) : createCommentVNode("", true)])) : createCommentVNode("", true)]), renderSlot(_ctx.$slots, "start")]),
|
|
1982
|
+
__props.items.length || _ctx.$slots.center ? (openBlock(), createElementBlock("nav", _hoisted_6$15, [renderSlot(_ctx.$slots, "center", {}, () => [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.items, (item) => {
|
|
1923
1983
|
return openBlock(), createBlock(resolveDynamicComponent(item.href ? "a" : "span"), {
|
|
1924
1984
|
key: item.label,
|
|
1925
1985
|
href: item.href,
|
|
1926
1986
|
target: item.target,
|
|
1987
|
+
rel: item.rel,
|
|
1927
1988
|
class: normalizeClass(["ew-navbar__link", { "is-active": isActive(item) }])
|
|
1928
1989
|
}, {
|
|
1929
1990
|
default: withCtx(() => [createTextVNode(toDisplayString(item.label), 1)]),
|
|
@@ -1931,10 +1992,11 @@ var _sfc_main$30 = {
|
|
|
1931
1992
|
}, 1032, [
|
|
1932
1993
|
"href",
|
|
1933
1994
|
"target",
|
|
1995
|
+
"rel",
|
|
1934
1996
|
"class"
|
|
1935
1997
|
]);
|
|
1936
1998
|
}), 128))])])) : createCommentVNode("", true),
|
|
1937
|
-
createElementVNode("div", _hoisted_7$
|
|
1999
|
+
createElementVNode("div", _hoisted_7$12, [renderSlot(_ctx.$slots, "actions"), __props.items.length || _ctx.$slots.default ? (openBlock(), createBlock(_sfc_main$25, {
|
|
1938
2000
|
key: 0,
|
|
1939
2001
|
class: "ew-navbar__burger",
|
|
1940
2002
|
icon: "menu",
|
|
@@ -1942,17 +2004,22 @@ var _sfc_main$30 = {
|
|
|
1942
2004
|
onClick: _cache[0] || (_cache[0] = ($event) => menuOpen.value = !menuOpen.value)
|
|
1943
2005
|
})) : createCommentVNode("", true)])
|
|
1944
2006
|
]), createVNode(Transition, { name: "ew-navbar-collapse" }, {
|
|
1945
|
-
default: withCtx(() => [menuOpen.value && (_ctx.$slots.default || __props.items.length) ? (openBlock(), createElementBlock("nav", _hoisted_8$
|
|
2007
|
+
default: withCtx(() => [menuOpen.value && (_ctx.$slots.default || __props.items.length) ? (openBlock(), createElementBlock("nav", _hoisted_8$11, [renderSlot(_ctx.$slots, "default"), (openBlock(true), createElementBlock(Fragment, null, renderList(__props.items, (item) => {
|
|
1946
2008
|
return openBlock(), createBlock(resolveDynamicComponent(item.href ? "a" : "span"), {
|
|
1947
2009
|
key: item.label,
|
|
1948
2010
|
href: item.href,
|
|
1949
2011
|
target: item.target,
|
|
2012
|
+
rel: item.rel,
|
|
1950
2013
|
class: "ew-navbar__mobile-link",
|
|
1951
2014
|
onClick: _cache[1] || (_cache[1] = ($event) => menuOpen.value = false)
|
|
1952
2015
|
}, {
|
|
1953
2016
|
default: withCtx(() => [createTextVNode(toDisplayString(item.label), 1)]),
|
|
1954
2017
|
_: 2
|
|
1955
|
-
}, 1032, [
|
|
2018
|
+
}, 1032, [
|
|
2019
|
+
"href",
|
|
2020
|
+
"target",
|
|
2021
|
+
"rel"
|
|
2022
|
+
]);
|
|
1956
2023
|
}), 128))])) : createCommentVNode("", true)]),
|
|
1957
2024
|
_: 3
|
|
1958
2025
|
})], 2);
|
|
@@ -1961,35 +2028,40 @@ var _sfc_main$30 = {
|
|
|
1961
2028
|
};
|
|
1962
2029
|
//#endregion
|
|
1963
2030
|
//#region src/components/footer/index.vue
|
|
1964
|
-
var _hoisted_1$
|
|
1965
|
-
var _hoisted_2$
|
|
2031
|
+
var _hoisted_1$41 = { class: "ew-container" };
|
|
2032
|
+
var _hoisted_2$37 = {
|
|
1966
2033
|
key: 0,
|
|
1967
2034
|
class: "ew-footer__main"
|
|
1968
2035
|
};
|
|
1969
|
-
var _hoisted_3$
|
|
1970
|
-
var _hoisted_4$
|
|
2036
|
+
var _hoisted_3$30 = { class: "ew-footer__brand" };
|
|
2037
|
+
var _hoisted_4$29 = {
|
|
1971
2038
|
key: 0,
|
|
1972
2039
|
class: "ew-footer__logo"
|
|
1973
2040
|
};
|
|
1974
|
-
var _hoisted_5$
|
|
2041
|
+
var _hoisted_5$23 = {
|
|
1975
2042
|
key: 1,
|
|
1976
2043
|
class: "ew-footer__slogan"
|
|
1977
2044
|
};
|
|
1978
|
-
var _hoisted_6$
|
|
2045
|
+
var _hoisted_6$14 = {
|
|
1979
2046
|
key: 2,
|
|
1980
2047
|
class: "ew-footer__social"
|
|
1981
2048
|
};
|
|
1982
|
-
var _hoisted_7$
|
|
1983
|
-
var _hoisted_8$
|
|
1984
|
-
var _hoisted_9$
|
|
1985
|
-
var _hoisted_10$
|
|
1986
|
-
var _hoisted_11$
|
|
2049
|
+
var _hoisted_7$11 = ["aria-label"];
|
|
2050
|
+
var _hoisted_8$10 = { class: "ew-footer__col-title" };
|
|
2051
|
+
var _hoisted_9$6 = { class: "ew-footer__bottom" };
|
|
2052
|
+
var _hoisted_10$4 = { class: "ew-footer__copyright" };
|
|
2053
|
+
var _hoisted_11$3 = {
|
|
1987
2054
|
key: 0,
|
|
1988
2055
|
class: "ew-footer__legal"
|
|
1989
2056
|
};
|
|
1990
|
-
var _sfc_main$
|
|
2057
|
+
var _sfc_main$22 = {
|
|
1991
2058
|
__name: "index",
|
|
1992
2059
|
props: {
|
|
2060
|
+
/** 磨砂玻璃质感:true 强制开 / false 强制关 / 缺省跟随全局(ConfigProvider 的 glass) */
|
|
2061
|
+
glass: {
|
|
2062
|
+
type: Boolean,
|
|
2063
|
+
default: void 0
|
|
2064
|
+
},
|
|
1993
2065
|
/** 链接栏 [{ title, links: [{ label, href, target }] }] */
|
|
1994
2066
|
columns: {
|
|
1995
2067
|
type: Array,
|
|
@@ -2022,16 +2094,20 @@ var _sfc_main$19 = {
|
|
|
2022
2094
|
* columns [{ title, links: [{ label, href, target }] }] 多栏链接 + 品牌区 + 底部版权条
|
|
2023
2095
|
*/
|
|
2024
2096
|
return (_ctx, _cache) => {
|
|
2025
|
-
return openBlock(), createElementBlock("footer", { class: normalizeClass(["ew-footer", {
|
|
2026
|
-
|
|
2027
|
-
|
|
2028
|
-
|
|
2097
|
+
return openBlock(), createElementBlock("footer", { class: normalizeClass(["ew-footer", {
|
|
2098
|
+
"is-soft": __props.soft,
|
|
2099
|
+
"is-glass": __props.glass === true,
|
|
2100
|
+
"no-glass": __props.glass === false
|
|
2101
|
+
}]) }, [createElementVNode("div", _hoisted_1$41, [__props.columns.length || _ctx.$slots.default ? (openBlock(), createElementBlock("div", _hoisted_2$37, [createElementVNode("div", _hoisted_3$30, [renderSlot(_ctx.$slots, "brand", {}, () => [
|
|
2102
|
+
__props.logoText ? (openBlock(), createElementBlock("div", _hoisted_4$29, toDisplayString(__props.logoText), 1)) : createCommentVNode("", true),
|
|
2103
|
+
__props.slogan ? (openBlock(), createElementBlock("p", _hoisted_5$23, toDisplayString(__props.slogan), 1)) : createCommentVNode("", true),
|
|
2104
|
+
_ctx.$slots.social ? (openBlock(), createElementBlock("div", _hoisted_6$14, [renderSlot(_ctx.$slots, "social")])) : createCommentVNode("", true)
|
|
2029
2105
|
])]), renderSlot(_ctx.$slots, "default", {}, () => [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.columns, (col) => {
|
|
2030
2106
|
return openBlock(), createElementBlock("nav", {
|
|
2031
2107
|
key: col.title,
|
|
2032
2108
|
class: "ew-footer__col",
|
|
2033
2109
|
"aria-label": col.title
|
|
2034
|
-
}, [createElementVNode("h4", _hoisted_8$
|
|
2110
|
+
}, [createElementVNode("h4", _hoisted_8$10, toDisplayString(col.title), 1), (openBlock(true), createElementBlock(Fragment, null, renderList(col.links, (link) => {
|
|
2035
2111
|
return openBlock(), createBlock(resolveDynamicComponent(link.href ? "a" : "span"), {
|
|
2036
2112
|
key: link.label,
|
|
2037
2113
|
href: link.href,
|
|
@@ -2041,45 +2117,45 @@ var _sfc_main$19 = {
|
|
|
2041
2117
|
default: withCtx(() => [createTextVNode(toDisplayString(link.label), 1)]),
|
|
2042
2118
|
_: 2
|
|
2043
2119
|
}, 1032, ["href", "target"]);
|
|
2044
|
-
}), 128))], 8, _hoisted_7$
|
|
2045
|
-
}), 128))])])) : createCommentVNode("", true), createElementVNode("div", _hoisted_9$
|
|
2120
|
+
}), 128))], 8, _hoisted_7$11);
|
|
2121
|
+
}), 128))])])) : createCommentVNode("", true), createElementVNode("div", _hoisted_9$6, [createElementVNode("span", _hoisted_10$4, toDisplayString(__props.copyright), 1), _ctx.$slots.legal ? (openBlock(), createElementBlock("div", _hoisted_11$3, [renderSlot(_ctx.$slots, "legal")])) : createCommentVNode("", true)])])], 2);
|
|
2046
2122
|
};
|
|
2047
2123
|
}
|
|
2048
2124
|
};
|
|
2049
2125
|
//#endregion
|
|
2050
2126
|
//#region src/components/hero/index.vue
|
|
2051
|
-
var _hoisted_1$
|
|
2052
|
-
var _hoisted_2$
|
|
2053
|
-
var _hoisted_3$
|
|
2127
|
+
var _hoisted_1$40 = { class: "ew-container" };
|
|
2128
|
+
var _hoisted_2$36 = { class: "ew-hero__content" };
|
|
2129
|
+
var _hoisted_3$29 = {
|
|
2054
2130
|
key: 0,
|
|
2055
2131
|
class: "ew-hero__badge",
|
|
2056
2132
|
"data-ew-hero-item": ""
|
|
2057
2133
|
};
|
|
2058
|
-
var _hoisted_4$
|
|
2134
|
+
var _hoisted_4$28 = {
|
|
2059
2135
|
class: "ew-hero__title",
|
|
2060
2136
|
"data-ew-hero-item": ""
|
|
2061
2137
|
};
|
|
2062
|
-
var _hoisted_5$
|
|
2138
|
+
var _hoisted_5$22 = {
|
|
2063
2139
|
key: 1,
|
|
2064
2140
|
class: "ew-hero__description",
|
|
2065
2141
|
"data-ew-hero-item": ""
|
|
2066
2142
|
};
|
|
2067
|
-
var _hoisted_6$
|
|
2143
|
+
var _hoisted_6$13 = {
|
|
2068
2144
|
key: 2,
|
|
2069
2145
|
class: "ew-hero__actions",
|
|
2070
2146
|
"data-ew-hero-item": ""
|
|
2071
2147
|
};
|
|
2072
|
-
var _hoisted_7$
|
|
2148
|
+
var _hoisted_7$10 = {
|
|
2073
2149
|
key: 3,
|
|
2074
2150
|
class: "ew-hero__body",
|
|
2075
2151
|
"data-ew-hero-item": ""
|
|
2076
2152
|
};
|
|
2077
|
-
var _hoisted_8$
|
|
2153
|
+
var _hoisted_8$9 = {
|
|
2078
2154
|
key: 0,
|
|
2079
2155
|
class: "ew-hero__aside",
|
|
2080
2156
|
"data-ew-hero-item": ""
|
|
2081
2157
|
};
|
|
2082
|
-
var _sfc_main$
|
|
2158
|
+
var _sfc_main$23 = {
|
|
2083
2159
|
__name: "index",
|
|
2084
2160
|
props: {
|
|
2085
2161
|
title: {
|
|
@@ -2131,13 +2207,13 @@ var _sfc_main$20 = {
|
|
|
2131
2207
|
`is-${__props.align}`,
|
|
2132
2208
|
{ "is-tinted": __props.tinted }
|
|
2133
2209
|
])
|
|
2134
|
-
}, [createElementVNode("div", _hoisted_1$
|
|
2135
|
-
_ctx.$slots.badge ? (openBlock(), createElementBlock("div", _hoisted_3$
|
|
2136
|
-
createElementVNode("h1", _hoisted_4$
|
|
2137
|
-
__props.description || _ctx.$slots.description ? (openBlock(), createElementBlock("p", _hoisted_5$
|
|
2138
|
-
_ctx.$slots.actions ? (openBlock(), createElementBlock("div", _hoisted_6$
|
|
2139
|
-
_ctx.$slots.default ? (openBlock(), createElementBlock("div", _hoisted_7$
|
|
2140
|
-
]), _ctx.$slots.aside ? (openBlock(), createElementBlock("div", _hoisted_8$
|
|
2210
|
+
}, [createElementVNode("div", _hoisted_1$40, [createElementVNode("div", { class: normalizeClass(["ew-hero__inner", { "has-aside": _ctx.$slots.aside }]) }, [createElementVNode("div", _hoisted_2$36, [
|
|
2211
|
+
_ctx.$slots.badge ? (openBlock(), createElementBlock("div", _hoisted_3$29, [renderSlot(_ctx.$slots, "badge")])) : createCommentVNode("", true),
|
|
2212
|
+
createElementVNode("h1", _hoisted_4$28, [renderSlot(_ctx.$slots, "title", {}, () => [createTextVNode(toDisplayString(__props.title), 1)])]),
|
|
2213
|
+
__props.description || _ctx.$slots.description ? (openBlock(), createElementBlock("p", _hoisted_5$22, [renderSlot(_ctx.$slots, "description", {}, () => [createTextVNode(toDisplayString(__props.description), 1)])])) : createCommentVNode("", true),
|
|
2214
|
+
_ctx.$slots.actions ? (openBlock(), createElementBlock("div", _hoisted_6$13, [renderSlot(_ctx.$slots, "actions")])) : createCommentVNode("", true),
|
|
2215
|
+
_ctx.$slots.default ? (openBlock(), createElementBlock("div", _hoisted_7$10, [renderSlot(_ctx.$slots, "default")])) : createCommentVNode("", true)
|
|
2216
|
+
]), _ctx.$slots.aside ? (openBlock(), createElementBlock("div", _hoisted_8$9, [renderSlot(_ctx.$slots, "aside")])) : createCommentVNode("", true)], 2)])], 2);
|
|
2141
2217
|
};
|
|
2142
2218
|
}
|
|
2143
2219
|
};
|
|
@@ -2172,16 +2248,16 @@ function useUncontrolled(props, { defaultValue } = {}) {
|
|
|
2172
2248
|
}
|
|
2173
2249
|
//#endregion
|
|
2174
2250
|
//#region src/components/select/index.vue
|
|
2175
|
-
var _hoisted_1$
|
|
2176
|
-
var _hoisted_2$
|
|
2177
|
-
var _hoisted_3$
|
|
2251
|
+
var _hoisted_1$39 = ["onKeydown"];
|
|
2252
|
+
var _hoisted_2$35 = ["disabled", "aria-expanded"];
|
|
2253
|
+
var _hoisted_3$28 = {
|
|
2178
2254
|
key: 0,
|
|
2179
2255
|
class: "ew-select__menu",
|
|
2180
2256
|
role: "listbox"
|
|
2181
2257
|
};
|
|
2182
|
-
var _hoisted_4$
|
|
2183
|
-
var _hoisted_5$
|
|
2184
|
-
var _sfc_main$
|
|
2258
|
+
var _hoisted_4$27 = ["aria-selected", "onClick"];
|
|
2259
|
+
var _hoisted_5$21 = { class: "ew-select__option-label" };
|
|
2260
|
+
var _sfc_main$44 = {
|
|
2185
2261
|
__name: "index",
|
|
2186
2262
|
props: {
|
|
2187
2263
|
/** 当前值(v-model) */
|
|
@@ -2301,20 +2377,20 @@ var _sfc_main$38 = {
|
|
|
2301
2377
|
"aria-expanded": open.value,
|
|
2302
2378
|
onClick: toggle
|
|
2303
2379
|
}, [
|
|
2304
|
-
selectedIcon.value ? (openBlock(), createBlock(_sfc_main$
|
|
2380
|
+
selectedIcon.value ? (openBlock(), createBlock(_sfc_main$24, {
|
|
2305
2381
|
key: 0,
|
|
2306
2382
|
name: selectedIcon.value,
|
|
2307
2383
|
size: iconSize.value,
|
|
2308
2384
|
class: "ew-select__icon"
|
|
2309
2385
|
}, null, 8, ["name", "size"])) : createCommentVNode("", true),
|
|
2310
2386
|
createElementVNode("span", { class: normalizeClass(["ew-select__label", { "is-placeholder": !selectedLabel.value }]) }, toDisplayString(selectedLabel.value || __props.placeholder), 3),
|
|
2311
|
-
createVNode(_sfc_main$
|
|
2387
|
+
createVNode(_sfc_main$24, {
|
|
2312
2388
|
name: "chevron-down",
|
|
2313
2389
|
size: caretSize.value,
|
|
2314
2390
|
class: normalizeClass(["ew-select__caret", { "is-open": open.value }])
|
|
2315
2391
|
}, null, 8, ["size", "class"])
|
|
2316
|
-
], 8, _hoisted_2$
|
|
2317
|
-
default: withCtx(() => [open.value ? (openBlock(), createElementBlock("ul", _hoisted_3$
|
|
2392
|
+
], 8, _hoisted_2$35), createVNode(Transition, { name: "ew-select-drop" }, {
|
|
2393
|
+
default: withCtx(() => [open.value ? (openBlock(), createElementBlock("ul", _hoisted_3$28, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.options, (opt) => {
|
|
2318
2394
|
return openBlock(), createElementBlock("li", {
|
|
2319
2395
|
key: opt.value,
|
|
2320
2396
|
role: "option",
|
|
@@ -2325,42 +2401,64 @@ var _sfc_main$38 = {
|
|
|
2325
2401
|
}]),
|
|
2326
2402
|
onClick: ($event) => pick(opt)
|
|
2327
2403
|
}, [
|
|
2328
|
-
opt.icon ? (openBlock(), createBlock(_sfc_main$
|
|
2404
|
+
opt.icon ? (openBlock(), createBlock(_sfc_main$24, {
|
|
2329
2405
|
key: 0,
|
|
2330
2406
|
name: opt.icon,
|
|
2331
2407
|
size: 14,
|
|
2332
2408
|
class: "ew-select__option-icon"
|
|
2333
2409
|
}, null, 8, ["name"])) : createCommentVNode("", true),
|
|
2334
|
-
createElementVNode("span", _hoisted_5$
|
|
2335
|
-
opt.value === unref(current) ? (openBlock(), createBlock(_sfc_main$
|
|
2410
|
+
createElementVNode("span", _hoisted_5$21, toDisplayString(opt.label), 1),
|
|
2411
|
+
opt.value === unref(current) ? (openBlock(), createBlock(_sfc_main$24, {
|
|
2336
2412
|
key: 1,
|
|
2337
2413
|
name: "check",
|
|
2338
2414
|
size: 14,
|
|
2339
2415
|
class: "ew-select__option-check"
|
|
2340
2416
|
})) : createCommentVNode("", true)
|
|
2341
|
-
], 10, _hoisted_4$
|
|
2417
|
+
], 10, _hoisted_4$27);
|
|
2342
2418
|
}), 128))])) : createCommentVNode("", true)]),
|
|
2343
2419
|
_: 1
|
|
2344
|
-
})], 42, _hoisted_1$
|
|
2420
|
+
})], 42, _hoisted_1$39);
|
|
2345
2421
|
};
|
|
2346
2422
|
}
|
|
2347
2423
|
};
|
|
2348
2424
|
//#endregion
|
|
2349
2425
|
//#region src/components/search-box/index.vue
|
|
2350
|
-
var _hoisted_1$
|
|
2426
|
+
var _hoisted_1$38 = {
|
|
2351
2427
|
key: 0,
|
|
2352
2428
|
class: "ew-search-box__category"
|
|
2353
2429
|
};
|
|
2354
|
-
var _hoisted_2$
|
|
2430
|
+
var _hoisted_2$34 = [
|
|
2355
2431
|
"value",
|
|
2356
2432
|
"placeholder",
|
|
2357
|
-
"aria-label"
|
|
2433
|
+
"aria-label",
|
|
2434
|
+
"aria-expanded",
|
|
2435
|
+
"onKeydown"
|
|
2358
2436
|
];
|
|
2359
|
-
var _hoisted_3$
|
|
2437
|
+
var _hoisted_3$27 = {
|
|
2360
2438
|
key: 1,
|
|
2361
2439
|
class: "ew-search-box__suffix"
|
|
2362
2440
|
};
|
|
2363
|
-
var
|
|
2441
|
+
var _hoisted_4$26 = {
|
|
2442
|
+
key: 2,
|
|
2443
|
+
class: "ew-search-box__dropdown",
|
|
2444
|
+
role: "listbox"
|
|
2445
|
+
};
|
|
2446
|
+
var _hoisted_5$20 = {
|
|
2447
|
+
key: 0,
|
|
2448
|
+
class: "ew-search-box__option is-state"
|
|
2449
|
+
};
|
|
2450
|
+
var _hoisted_6$12 = ["aria-selected"];
|
|
2451
|
+
var _hoisted_7$9 = ["onMousedown", "onMouseenter"];
|
|
2452
|
+
var _hoisted_8$8 = { class: "ew-search-box__option-title" };
|
|
2453
|
+
var _hoisted_9$5 = {
|
|
2454
|
+
key: 0,
|
|
2455
|
+
class: "ew-search-box__option-desc"
|
|
2456
|
+
};
|
|
2457
|
+
var _hoisted_10$3 = {
|
|
2458
|
+
key: 0,
|
|
2459
|
+
class: "ew-search-box__option is-state"
|
|
2460
|
+
};
|
|
2461
|
+
var _sfc_main$42 = /*@__PURE__*/ Object.assign({ inheritAttrs: false }, {
|
|
2364
2462
|
__name: "index",
|
|
2365
2463
|
props: {
|
|
2366
2464
|
/** 搜索词(v-model) */
|
|
@@ -2391,18 +2489,33 @@ var _sfc_main$36 = /*@__PURE__*/ Object.assign({ inheritAttrs: false }, {
|
|
|
2391
2489
|
ariaLabel: {
|
|
2392
2490
|
type: String,
|
|
2393
2491
|
default: ""
|
|
2492
|
+
},
|
|
2493
|
+
/** 远程搜索函数:async (keyword) => [{ title, description?, … }];传入后启用结果下拉 */
|
|
2494
|
+
remote: {
|
|
2495
|
+
type: Function,
|
|
2496
|
+
default: null
|
|
2497
|
+
},
|
|
2498
|
+
/** 远程搜索防抖(ms) */
|
|
2499
|
+
debounce: {
|
|
2500
|
+
type: Number,
|
|
2501
|
+
default: 300
|
|
2394
2502
|
}
|
|
2395
2503
|
},
|
|
2396
2504
|
emits: [
|
|
2397
2505
|
"update:modelValue",
|
|
2398
2506
|
"update:category",
|
|
2399
|
-
"search"
|
|
2507
|
+
"search",
|
|
2508
|
+
"select"
|
|
2400
2509
|
],
|
|
2401
2510
|
setup(__props, { emit: __emit }) {
|
|
2402
2511
|
/**
|
|
2403
2512
|
* EwSearchBox — 大搜索框(签名组件:分类下拉 + 搜索输入 + 后缀动作位)
|
|
2404
2513
|
* v-model(搜索词) + v-model:category(分类值);分类下拉为 EwSelect bare 嵌入
|
|
2405
2514
|
* 圆润 xl 圆角 + 藏青软阴影,穿透 attrs 到原生 input
|
|
2515
|
+
*
|
|
2516
|
+
* 远程搜索:传入 remote(async keyword => [{ title, description?, … }])后,
|
|
2517
|
+
* 输入经 debounce 防抖调用,结果以 select 下拉形态呈现;
|
|
2518
|
+
* ↑↓ 选择、Enter 确认、Esc 关闭;选中派发 select 事件并回填搜索词。
|
|
2406
2519
|
*/
|
|
2407
2520
|
const props = __props;
|
|
2408
2521
|
const emit = __emit;
|
|
@@ -2421,14 +2534,80 @@ var _sfc_main$36 = /*@__PURE__*/ Object.assign({ inheritAttrs: false }, {
|
|
|
2421
2534
|
function onInput(e) {
|
|
2422
2535
|
emit("update:modelValue", e.target.value);
|
|
2423
2536
|
emit("search", e.target.value);
|
|
2537
|
+
if (props.remote) scheduleRemote(e.target.value);
|
|
2424
2538
|
}
|
|
2425
2539
|
function onCategoryChange(v) {
|
|
2426
2540
|
categoryProxy.value = v;
|
|
2427
2541
|
emit("search", props.modelValue);
|
|
2428
2542
|
}
|
|
2543
|
+
const inputRef = ref(null);
|
|
2544
|
+
const inputFocused = ref(false);
|
|
2545
|
+
const remoteLoading = ref(false);
|
|
2546
|
+
const remoteResults = ref([]);
|
|
2547
|
+
const activeIndex = ref(-1);
|
|
2548
|
+
let debounceTimer = null;
|
|
2549
|
+
let requestSeq = 0;
|
|
2550
|
+
const panelOpen = computed(() => !!props.remote && inputFocused.value && (remoteLoading.value || remoteResults.value.length > 0));
|
|
2551
|
+
function scheduleRemote(keyword) {
|
|
2552
|
+
if (debounceTimer) clearTimeout(debounceTimer);
|
|
2553
|
+
if (!keyword) {
|
|
2554
|
+
remoteLoading.value = false;
|
|
2555
|
+
remoteResults.value = [];
|
|
2556
|
+
activeIndex.value = -1;
|
|
2557
|
+
return;
|
|
2558
|
+
}
|
|
2559
|
+
remoteLoading.value = true;
|
|
2560
|
+
debounceTimer = setTimeout(() => runRemote(keyword), props.debounce);
|
|
2561
|
+
}
|
|
2562
|
+
async function runRemote(keyword) {
|
|
2563
|
+
const seq = ++requestSeq;
|
|
2564
|
+
try {
|
|
2565
|
+
const results = await props.remote(keyword) || [];
|
|
2566
|
+
if (seq !== requestSeq) return;
|
|
2567
|
+
remoteResults.value = results;
|
|
2568
|
+
remoteLoading.value = false;
|
|
2569
|
+
activeIndex.value = results.length ? 0 : -1;
|
|
2570
|
+
} catch {
|
|
2571
|
+
if (seq !== requestSeq) return;
|
|
2572
|
+
remoteResults.value = [];
|
|
2573
|
+
remoteLoading.value = false;
|
|
2574
|
+
}
|
|
2575
|
+
}
|
|
2576
|
+
function moveActive(dir) {
|
|
2577
|
+
if (!panelOpen.value || !remoteResults.value.length) return;
|
|
2578
|
+
const total = remoteResults.value.length;
|
|
2579
|
+
activeIndex.value = ((activeIndex.value + dir) % total + total) % total;
|
|
2580
|
+
}
|
|
2581
|
+
function chooseActive() {
|
|
2582
|
+
if (panelOpen.value && remoteResults.value[activeIndex.value]) choose(remoteResults.value[activeIndex.value]);
|
|
2583
|
+
}
|
|
2584
|
+
function choose(option) {
|
|
2585
|
+
emit("select", option);
|
|
2586
|
+
emit("update:modelValue", option.title ?? "");
|
|
2587
|
+
closePanel();
|
|
2588
|
+
inputRef.value?.blur?.();
|
|
2589
|
+
}
|
|
2590
|
+
function closePanel() {
|
|
2591
|
+
inputFocused.value = false;
|
|
2592
|
+
remoteLoading.value = false;
|
|
2593
|
+
remoteResults.value = [];
|
|
2594
|
+
activeIndex.value = -1;
|
|
2595
|
+
}
|
|
2596
|
+
function onInputBlur() {
|
|
2597
|
+
setTimeout(() => {
|
|
2598
|
+
inputFocused.value = false;
|
|
2599
|
+
}, 120);
|
|
2600
|
+
}
|
|
2601
|
+
onBeforeUnmount(() => {
|
|
2602
|
+
if (debounceTimer) clearTimeout(debounceTimer);
|
|
2603
|
+
});
|
|
2429
2604
|
return (_ctx, _cache) => {
|
|
2430
|
-
return openBlock(), createElementBlock("div", { class: normalizeClass([
|
|
2431
|
-
|
|
2605
|
+
return openBlock(), createElementBlock("div", { class: normalizeClass([
|
|
2606
|
+
"ew-search-box",
|
|
2607
|
+
`ew-search-box--${__props.size}`,
|
|
2608
|
+
{ "is-remote-open": panelOpen.value }
|
|
2609
|
+
]) }, [
|
|
2610
|
+
__props.categories.length ? (openBlock(), createElementBlock("div", _hoisted_1$38, [createVNode(_sfc_main$44, {
|
|
2432
2611
|
bare: "",
|
|
2433
2612
|
"model-value": categoryProxy.value || normalizedCategories.value[0] && normalizedCategories.value[0].value,
|
|
2434
2613
|
options: normalizedCategories.value,
|
|
@@ -2439,54 +2618,83 @@ var _sfc_main$36 = /*@__PURE__*/ Object.assign({ inheritAttrs: false }, {
|
|
|
2439
2618
|
"options",
|
|
2440
2619
|
"aria-label"
|
|
2441
2620
|
])])) : createCommentVNode("", true),
|
|
2442
|
-
createVNode(_sfc_main$
|
|
2621
|
+
createVNode(_sfc_main$24, {
|
|
2443
2622
|
name: "search",
|
|
2444
2623
|
size: iconSize.value,
|
|
2445
2624
|
class: "ew-search-box__magnifier"
|
|
2446
2625
|
}, null, 8, ["size"]),
|
|
2447
|
-
createElementVNode("input", mergeProps(
|
|
2626
|
+
createElementVNode("input", mergeProps({
|
|
2627
|
+
ref_key: "inputRef",
|
|
2628
|
+
ref: inputRef
|
|
2629
|
+
}, _ctx.$attrs, {
|
|
2448
2630
|
class: "ew-search-box__input",
|
|
2449
2631
|
type: "search",
|
|
2450
2632
|
value: __props.modelValue,
|
|
2451
2633
|
placeholder: __props.placeholder,
|
|
2452
2634
|
"aria-label": __props.ariaLabel || __props.placeholder,
|
|
2453
|
-
|
|
2454
|
-
|
|
2455
|
-
|
|
2635
|
+
role: "combobox",
|
|
2636
|
+
"aria-expanded": panelOpen.value,
|
|
2637
|
+
"aria-autocomplete": "list",
|
|
2638
|
+
onInput,
|
|
2639
|
+
onFocus: _cache[0] || (_cache[0] = ($event) => inputFocused.value = true),
|
|
2640
|
+
onBlur: onInputBlur,
|
|
2641
|
+
onKeydown: [
|
|
2642
|
+
_cache[1] || (_cache[1] = withKeys(withModifiers(($event) => moveActive(1), ["prevent"]), ["down"])),
|
|
2643
|
+
_cache[2] || (_cache[2] = withKeys(withModifiers(($event) => moveActive(-1), ["prevent"]), ["up"])),
|
|
2644
|
+
withKeys(withModifiers(chooseActive, ["prevent"]), ["enter"]),
|
|
2645
|
+
withKeys(withModifiers(closePanel, ["prevent"]), ["esc"])
|
|
2646
|
+
]
|
|
2647
|
+
}), null, 16, _hoisted_2$34),
|
|
2648
|
+
_ctx.$slots.suffix ? (openBlock(), createElementBlock("div", _hoisted_3$27, [renderSlot(_ctx.$slots, "suffix")])) : createCommentVNode("", true),
|
|
2649
|
+
panelOpen.value ? (openBlock(), createElementBlock("ul", _hoisted_4$26, [remoteLoading.value ? (openBlock(), createElementBlock("li", _hoisted_5$20, [createVNode(_sfc_main$24, {
|
|
2650
|
+
name: "search",
|
|
2651
|
+
size: 14
|
|
2652
|
+
}), _cache[3] || (_cache[3] = createTextVNode(" 搜索中… ", -1))])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [(openBlock(true), createElementBlock(Fragment, null, renderList(remoteResults.value, (option, i) => {
|
|
2653
|
+
return openBlock(), createElementBlock("li", {
|
|
2654
|
+
key: i,
|
|
2655
|
+
role: "option",
|
|
2656
|
+
"aria-selected": i === activeIndex.value
|
|
2657
|
+
}, [createElementVNode("button", {
|
|
2658
|
+
type: "button",
|
|
2659
|
+
class: normalizeClass(["ew-search-box__option", { "is-active": i === activeIndex.value }]),
|
|
2660
|
+
onMousedown: withModifiers(($event) => choose(option), ["prevent"]),
|
|
2661
|
+
onMouseenter: ($event) => activeIndex.value = i
|
|
2662
|
+
}, [createElementVNode("span", _hoisted_8$8, toDisplayString(option.title), 1), option.description ? (openBlock(), createElementBlock("span", _hoisted_9$5, toDisplayString(option.description), 1)) : createCommentVNode("", true)], 42, _hoisted_7$9)], 8, _hoisted_6$12);
|
|
2663
|
+
}), 128)), !remoteResults.value.length ? (openBlock(), createElementBlock("li", _hoisted_10$3, "无匹配结果")) : createCommentVNode("", true)], 64))])) : createCommentVNode("", true)
|
|
2456
2664
|
], 2);
|
|
2457
2665
|
};
|
|
2458
2666
|
}
|
|
2459
2667
|
});
|
|
2460
2668
|
//#endregion
|
|
2461
2669
|
//#region src/components/icon-grid/index.vue
|
|
2462
|
-
var _hoisted_1$
|
|
2463
|
-
var _hoisted_2$
|
|
2670
|
+
var _hoisted_1$37 = { class: "ew-icon-grid" };
|
|
2671
|
+
var _hoisted_2$33 = {
|
|
2464
2672
|
key: 0,
|
|
2465
2673
|
class: "ew-icon-grid__search"
|
|
2466
2674
|
};
|
|
2467
|
-
var _hoisted_3$
|
|
2675
|
+
var _hoisted_3$26 = {
|
|
2468
2676
|
key: 1,
|
|
2469
2677
|
class: "ew-icon-grid__state"
|
|
2470
2678
|
};
|
|
2471
|
-
var _hoisted_4$
|
|
2472
|
-
var _hoisted_5$
|
|
2473
|
-
var _hoisted_6$
|
|
2474
|
-
var _hoisted_7$
|
|
2679
|
+
var _hoisted_4$25 = { class: "ew-icon-grid__title" };
|
|
2680
|
+
var _hoisted_5$19 = { class: "ew-icon-grid__count" };
|
|
2681
|
+
var _hoisted_6$11 = { class: "ew-icon-grid__grid" };
|
|
2682
|
+
var _hoisted_7$8 = [
|
|
2475
2683
|
"title",
|
|
2476
2684
|
"aria-label",
|
|
2477
2685
|
"onClick"
|
|
2478
2686
|
];
|
|
2479
|
-
var _hoisted_8$
|
|
2687
|
+
var _hoisted_8$7 = {
|
|
2480
2688
|
viewBox: "0 0 24 24",
|
|
2481
2689
|
"aria-hidden": "true"
|
|
2482
2690
|
};
|
|
2483
|
-
var _hoisted_9$
|
|
2691
|
+
var _hoisted_9$4 = [
|
|
2484
2692
|
"d",
|
|
2485
2693
|
"fill-rule",
|
|
2486
2694
|
"fill"
|
|
2487
2695
|
];
|
|
2488
|
-
var _hoisted_10$
|
|
2489
|
-
var _hoisted_11$
|
|
2696
|
+
var _hoisted_10$2 = { class: "ew-icon-grid__name" };
|
|
2697
|
+
var _hoisted_11$2 = {
|
|
2490
2698
|
class: "ew-icon-grid__plus",
|
|
2491
2699
|
"aria-hidden": "true"
|
|
2492
2700
|
};
|
|
@@ -2494,7 +2702,7 @@ var _hoisted_12 = {
|
|
|
2494
2702
|
key: 3,
|
|
2495
2703
|
class: "ew-icon-grid__state"
|
|
2496
2704
|
};
|
|
2497
|
-
var _sfc_main$
|
|
2705
|
+
var _sfc_main$26 = {
|
|
2498
2706
|
__name: "index",
|
|
2499
2707
|
props: {
|
|
2500
2708
|
/** 自定义图标集 [{ name, category, paths }];缺省用内置展示集 */
|
|
@@ -2606,7 +2814,7 @@ var _sfc_main$23 = {
|
|
|
2606
2814
|
}
|
|
2607
2815
|
}
|
|
2608
2816
|
return (_ctx, _cache) => {
|
|
2609
|
-
return openBlock(), createElementBlock("div", _hoisted_1$
|
|
2817
|
+
return openBlock(), createElementBlock("div", _hoisted_1$37, [__props.searchable ? (openBlock(), createElementBlock("div", _hoisted_2$33, [renderSlot(_ctx.$slots, "search", {}, () => [createVNode(_sfc_main$42, {
|
|
2610
2818
|
modelValue: keyword.value,
|
|
2611
2819
|
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => keyword.value = $event),
|
|
2612
2820
|
category: activeCategory.value,
|
|
@@ -2622,7 +2830,7 @@ var _sfc_main$23 = {
|
|
|
2622
2830
|
"category",
|
|
2623
2831
|
"categories",
|
|
2624
2832
|
"placeholder"
|
|
2625
|
-
])])])) : createCommentVNode("", true), loading.value ? (openBlock(), createElementBlock("div", _hoisted_3$
|
|
2833
|
+
])])])) : createCommentVNode("", true), loading.value ? (openBlock(), createElementBlock("div", _hoisted_3$26, [createVNode(_sfc_main$24, {
|
|
2626
2834
|
name: "loading",
|
|
2627
2835
|
size: 20,
|
|
2628
2836
|
class: "is-rotating"
|
|
@@ -2630,7 +2838,7 @@ var _sfc_main$23 = {
|
|
|
2630
2838
|
return openBlock(), createElementBlock("section", {
|
|
2631
2839
|
key: sec.key,
|
|
2632
2840
|
class: "ew-icon-grid__section"
|
|
2633
|
-
}, [createElementVNode("h3", _hoisted_4$
|
|
2841
|
+
}, [createElementVNode("h3", _hoisted_4$25, [createTextVNode(toDisplayString(sec.label) + " ", 1), createElementVNode("span", _hoisted_5$19, toDisplayString(sec.icons.length), 1)]), createElementVNode("div", _hoisted_6$11, [(openBlock(true), createElementBlock(Fragment, null, renderList(sec.icons, (icon) => {
|
|
2634
2842
|
return openBlock(), createElementBlock("button", {
|
|
2635
2843
|
key: icon.name,
|
|
2636
2844
|
type: "button",
|
|
@@ -2639,20 +2847,20 @@ var _sfc_main$23 = {
|
|
|
2639
2847
|
"aria-label": `复制图标名 ${icon.name}`,
|
|
2640
2848
|
onClick: ($event) => pick(icon)
|
|
2641
2849
|
}, [
|
|
2642
|
-
(openBlock(), createElementBlock("svg", _hoisted_8$
|
|
2850
|
+
(openBlock(), createElementBlock("svg", _hoisted_8$7, [(openBlock(true), createElementBlock(Fragment, null, renderList(icon.paths, (p, i) => {
|
|
2643
2851
|
return openBlock(), createElementBlock("path", {
|
|
2644
2852
|
key: i,
|
|
2645
2853
|
d: p.d,
|
|
2646
2854
|
"fill-rule": p.fillRule,
|
|
2647
2855
|
fill: p.fill
|
|
2648
|
-
}, null, 8, _hoisted_9$
|
|
2856
|
+
}, null, 8, _hoisted_9$4);
|
|
2649
2857
|
}), 128))])),
|
|
2650
|
-
createElementVNode("span", _hoisted_10$
|
|
2651
|
-
createElementVNode("span", _hoisted_11$
|
|
2858
|
+
createElementVNode("span", _hoisted_10$2, toDisplayString(icon.name), 1),
|
|
2859
|
+
createElementVNode("span", _hoisted_11$2, [createVNode(_sfc_main$24, {
|
|
2652
2860
|
name: copiedName.value === icon.name ? "check" : "plus",
|
|
2653
2861
|
size: 12
|
|
2654
2862
|
}, null, 8, ["name"])])
|
|
2655
|
-
], 10, _hoisted_7$
|
|
2863
|
+
], 10, _hoisted_7$8);
|
|
2656
2864
|
}), 128))])]);
|
|
2657
2865
|
}), 128)) : (openBlock(), createElementBlock("div", _hoisted_12, [createElementVNode("span", null, [_cache[3] || (_cache[3] = createTextVNode("No icons found", -1)), keyword.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [createTextVNode(" for “" + toDisplayString(keyword.value) + "”", 1)], 64)) : createCommentVNode("", true)])]))]);
|
|
2658
2866
|
};
|
|
@@ -2660,17 +2868,17 @@ var _sfc_main$23 = {
|
|
|
2660
2868
|
};
|
|
2661
2869
|
//#endregion
|
|
2662
2870
|
//#region src/components/feature-grid/index.vue
|
|
2663
|
-
var _hoisted_1$
|
|
2871
|
+
var _hoisted_1$36 = {
|
|
2664
2872
|
key: 0,
|
|
2665
2873
|
class: "ew-feature__icon"
|
|
2666
2874
|
};
|
|
2667
|
-
var _hoisted_2$
|
|
2668
|
-
var _hoisted_3$
|
|
2669
|
-
var _hoisted_4$
|
|
2875
|
+
var _hoisted_2$32 = { class: "ew-feature__text" };
|
|
2876
|
+
var _hoisted_3$25 = { class: "ew-feature__title" };
|
|
2877
|
+
var _hoisted_4$24 = {
|
|
2670
2878
|
key: 0,
|
|
2671
2879
|
class: "ew-feature__description"
|
|
2672
2880
|
};
|
|
2673
|
-
var _sfc_main$
|
|
2881
|
+
var _sfc_main$20 = {
|
|
2674
2882
|
__name: "index",
|
|
2675
2883
|
props: {
|
|
2676
2884
|
/** [{ icon, title, description }] */
|
|
@@ -2745,46 +2953,51 @@ var _sfc_main$17 = {
|
|
|
2745
2953
|
key: item.title,
|
|
2746
2954
|
class: normalizeClass(["ew-feature", `is-${__props.variant}`]),
|
|
2747
2955
|
style: normalizeStyle({ "--feature-delay": `${i * __props.stagger}ms` })
|
|
2748
|
-
}, [item.icon ? (openBlock(), createElementBlock("span", _hoisted_1$
|
|
2956
|
+
}, [item.icon ? (openBlock(), createElementBlock("span", _hoisted_1$36, [createVNode(_sfc_main$24, {
|
|
2749
2957
|
name: item.icon,
|
|
2750
2958
|
size: __props.variant === "bullets" ? 20 : 22
|
|
2751
|
-
}, null, 8, ["name", "size"])])) : createCommentVNode("", true), createElementVNode("div", _hoisted_2$
|
|
2959
|
+
}, null, 8, ["name", "size"])])) : createCommentVNode("", true), createElementVNode("div", _hoisted_2$32, [createElementVNode("h4", _hoisted_3$25, toDisplayString(item.title), 1), item.description ? (openBlock(), createElementBlock("p", _hoisted_4$24, toDisplayString(item.description), 1)) : createCommentVNode("", true)])], 6);
|
|
2752
2960
|
}), 128))], 2);
|
|
2753
2961
|
};
|
|
2754
2962
|
}
|
|
2755
2963
|
};
|
|
2756
2964
|
//#endregion
|
|
2757
2965
|
//#region src/components/pricing-card/index.vue
|
|
2758
|
-
var _hoisted_1$
|
|
2966
|
+
var _hoisted_1$35 = {
|
|
2759
2967
|
key: 0,
|
|
2760
2968
|
class: "ew-pricing-card__badge"
|
|
2761
2969
|
};
|
|
2762
|
-
var _hoisted_2$
|
|
2763
|
-
var _hoisted_3$
|
|
2970
|
+
var _hoisted_2$31 = { class: "ew-pricing-card__title" };
|
|
2971
|
+
var _hoisted_3$24 = {
|
|
2764
2972
|
key: 1,
|
|
2765
2973
|
class: "ew-pricing-card__description"
|
|
2766
2974
|
};
|
|
2767
|
-
var _hoisted_4$
|
|
2975
|
+
var _hoisted_4$23 = {
|
|
2768
2976
|
key: 2,
|
|
2769
2977
|
class: "ew-pricing-card__price-row"
|
|
2770
2978
|
};
|
|
2771
|
-
var _hoisted_5$
|
|
2772
|
-
var _hoisted_6$
|
|
2979
|
+
var _hoisted_5$18 = { class: "ew-pricing-card__price" };
|
|
2980
|
+
var _hoisted_6$10 = {
|
|
2773
2981
|
key: 0,
|
|
2774
2982
|
class: "ew-pricing-card__original"
|
|
2775
2983
|
};
|
|
2776
|
-
var _hoisted_7$
|
|
2984
|
+
var _hoisted_7$7 = {
|
|
2777
2985
|
key: 3,
|
|
2778
2986
|
class: "ew-pricing-card__note"
|
|
2779
2987
|
};
|
|
2780
|
-
var _hoisted_8$
|
|
2988
|
+
var _hoisted_8$6 = {
|
|
2781
2989
|
key: 4,
|
|
2782
2990
|
class: "ew-pricing-card__features"
|
|
2783
2991
|
};
|
|
2784
|
-
var _hoisted_9$
|
|
2785
|
-
var _sfc_main$
|
|
2992
|
+
var _hoisted_9$3 = { class: "ew-pricing-card__footer" };
|
|
2993
|
+
var _sfc_main$38 = {
|
|
2786
2994
|
__name: "index",
|
|
2787
2995
|
props: {
|
|
2996
|
+
/** 磨砂玻璃质感:true 强制开 / false 强制关 / 缺省跟随全局(ConfigProvider 的 glass) */
|
|
2997
|
+
glass: {
|
|
2998
|
+
type: Boolean,
|
|
2999
|
+
default: void 0
|
|
3000
|
+
},
|
|
2788
3001
|
title: {
|
|
2789
3002
|
type: String,
|
|
2790
3003
|
default: ""
|
|
@@ -2841,23 +3054,27 @@ var _sfc_main$32 = {
|
|
|
2841
3054
|
*/
|
|
2842
3055
|
const emit = __emit;
|
|
2843
3056
|
return (_ctx, _cache) => {
|
|
2844
|
-
return openBlock(), createElementBlock("div", { class: normalizeClass(["ew-pricing-card", {
|
|
2845
|
-
|
|
2846
|
-
|
|
2847
|
-
|
|
2848
|
-
|
|
2849
|
-
__props.
|
|
2850
|
-
|
|
3057
|
+
return openBlock(), createElementBlock("div", { class: normalizeClass(["ew-pricing-card", {
|
|
3058
|
+
"is-featured": __props.featured,
|
|
3059
|
+
"is-glass": __props.glass === true,
|
|
3060
|
+
"no-glass": __props.glass === false
|
|
3061
|
+
}]) }, [
|
|
3062
|
+
__props.badge ? (openBlock(), createElementBlock("span", _hoisted_1$35, [renderSlot(_ctx.$slots, "badge", {}, () => [createTextVNode(toDisplayString(__props.badge), 1)])])) : createCommentVNode("", true),
|
|
3063
|
+
createElementVNode("h3", _hoisted_2$31, [renderSlot(_ctx.$slots, "title", {}, () => [createTextVNode(toDisplayString(__props.title), 1)])]),
|
|
3064
|
+
__props.description || _ctx.$slots.description ? (openBlock(), createElementBlock("p", _hoisted_3$24, [renderSlot(_ctx.$slots, "description", {}, () => [createTextVNode(toDisplayString(__props.description), 1)])])) : createCommentVNode("", true),
|
|
3065
|
+
__props.price ? (openBlock(), createElementBlock("div", _hoisted_4$23, [createElementVNode("span", _hoisted_5$18, [renderSlot(_ctx.$slots, "price", {}, () => [createTextVNode(toDisplayString(__props.price), 1)])]), __props.originalPrice ? (openBlock(), createElementBlock("del", _hoisted_6$10, toDisplayString(__props.originalPrice), 1)) : createCommentVNode("", true)])) : createCommentVNode("", true),
|
|
3066
|
+
__props.offerNote || _ctx.$slots.note ? (openBlock(), createElementBlock("div", _hoisted_7$7, [renderSlot(_ctx.$slots, "note", {}, () => [createTextVNode(toDisplayString(__props.offerNote), 1)])])) : createCommentVNode("", true),
|
|
3067
|
+
__props.features.length || _ctx.$slots.features ? (openBlock(), createElementBlock("ul", _hoisted_8$6, [renderSlot(_ctx.$slots, "features", {}, () => [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.features, (item) => {
|
|
2851
3068
|
return openBlock(), createElementBlock("li", {
|
|
2852
3069
|
key: item,
|
|
2853
3070
|
class: "ew-pricing-card__feature"
|
|
2854
|
-
}, [createVNode(_sfc_main$
|
|
3071
|
+
}, [createVNode(_sfc_main$24, {
|
|
2855
3072
|
name: "check",
|
|
2856
3073
|
size: 16,
|
|
2857
3074
|
class: "ew-pricing-card__check"
|
|
2858
3075
|
}), createElementVNode("span", null, toDisplayString(item), 1)]);
|
|
2859
3076
|
}), 128))])])) : createCommentVNode("", true),
|
|
2860
|
-
createElementVNode("div", _hoisted_9$
|
|
3077
|
+
createElementVNode("div", _hoisted_9$3, [renderSlot(_ctx.$slots, "action", {}, () => [createVNode(_sfc_main$9, {
|
|
2861
3078
|
variant: __props.featured ? "primary" : "dark",
|
|
2862
3079
|
block: "",
|
|
2863
3080
|
pill: __props.pill,
|
|
@@ -2872,16 +3089,16 @@ var _sfc_main$32 = {
|
|
|
2872
3089
|
};
|
|
2873
3090
|
//#endregion
|
|
2874
3091
|
//#region src/components/faq/index.vue
|
|
2875
|
-
var _hoisted_1$
|
|
2876
|
-
var _hoisted_2$
|
|
2877
|
-
var _hoisted_3$
|
|
2878
|
-
var _hoisted_4$
|
|
3092
|
+
var _hoisted_1$34 = { class: "ew-faq" };
|
|
3093
|
+
var _hoisted_2$30 = ["aria-expanded", "onClick"];
|
|
3094
|
+
var _hoisted_3$23 = { class: "ew-faq__question-text" };
|
|
3095
|
+
var _hoisted_4$22 = {
|
|
2879
3096
|
class: "ew-faq__indicator",
|
|
2880
3097
|
"aria-hidden": "true"
|
|
2881
3098
|
};
|
|
2882
|
-
var _hoisted_5$
|
|
2883
|
-
var _hoisted_6$
|
|
2884
|
-
var _sfc_main$
|
|
3099
|
+
var _hoisted_5$17 = { class: "ew-faq__answer-wrap" };
|
|
3100
|
+
var _hoisted_6$9 = { class: "ew-faq__answer" };
|
|
3101
|
+
var _sfc_main$19 = {
|
|
2885
3102
|
__name: "index",
|
|
2886
3103
|
props: {
|
|
2887
3104
|
/** [{ question, answer }] */
|
|
@@ -2920,7 +3137,7 @@ var _sfc_main$16 = {
|
|
|
2920
3137
|
openSet.value = next;
|
|
2921
3138
|
}
|
|
2922
3139
|
return (_ctx, _cache) => {
|
|
2923
|
-
return openBlock(), createElementBlock("div", _hoisted_1$
|
|
3140
|
+
return openBlock(), createElementBlock("div", _hoisted_1$34, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.items, (item, i) => {
|
|
2924
3141
|
return openBlock(), createElementBlock("div", {
|
|
2925
3142
|
key: i,
|
|
2926
3143
|
class: normalizeClass(["ew-faq__item", { "is-open": isOpen(i) }])
|
|
@@ -2929,7 +3146,7 @@ var _sfc_main$16 = {
|
|
|
2929
3146
|
class: "ew-faq__question",
|
|
2930
3147
|
"aria-expanded": isOpen(i),
|
|
2931
3148
|
onClick: ($event) => toggle(i)
|
|
2932
|
-
}, [createElementVNode("span", _hoisted_3$
|
|
3149
|
+
}, [createElementVNode("span", _hoisted_3$23, toDisplayString(item.question), 1), createElementVNode("span", _hoisted_4$22, toDisplayString(isOpen(i) ? "−" : "+"), 1)], 8, _hoisted_2$30), createElementVNode("div", _hoisted_5$17, [createElementVNode("div", _hoisted_6$9, [renderSlot(_ctx.$slots, "answer", {
|
|
2933
3150
|
item,
|
|
2934
3151
|
index: i
|
|
2935
3152
|
}, () => [createTextVNode(toDisplayString(item.answer), 1)])])])], 2);
|
|
@@ -2939,17 +3156,17 @@ var _sfc_main$16 = {
|
|
|
2939
3156
|
};
|
|
2940
3157
|
//#endregion
|
|
2941
3158
|
//#region src/components/alert/index.vue
|
|
2942
|
-
var _hoisted_1$
|
|
3159
|
+
var _hoisted_1$33 = {
|
|
2943
3160
|
key: 0,
|
|
2944
3161
|
class: "ew-alert__icon"
|
|
2945
3162
|
};
|
|
2946
|
-
var _hoisted_2$
|
|
2947
|
-
var _hoisted_3$
|
|
3163
|
+
var _hoisted_2$29 = { class: "ew-alert__content" };
|
|
3164
|
+
var _hoisted_3$22 = {
|
|
2948
3165
|
key: 0,
|
|
2949
3166
|
class: "ew-alert__title"
|
|
2950
3167
|
};
|
|
2951
|
-
var _hoisted_4$
|
|
2952
|
-
var _hoisted_5$
|
|
3168
|
+
var _hoisted_4$21 = { class: "ew-alert__message" };
|
|
3169
|
+
var _hoisted_5$16 = {
|
|
2953
3170
|
key: 1,
|
|
2954
3171
|
class: "ew-alert__action"
|
|
2955
3172
|
};
|
|
@@ -3002,19 +3219,19 @@ var _sfc_main$1 = {
|
|
|
3002
3219
|
]),
|
|
3003
3220
|
role: "status"
|
|
3004
3221
|
}, [
|
|
3005
|
-
__props.icon || _ctx.$slots.icon ? (openBlock(), createElementBlock("span", _hoisted_1$
|
|
3222
|
+
__props.icon || _ctx.$slots.icon ? (openBlock(), createElementBlock("span", _hoisted_1$33, [renderSlot(_ctx.$slots, "icon", {}, () => [createVNode(_sfc_main$24, {
|
|
3006
3223
|
name: __props.icon,
|
|
3007
3224
|
size: __props.pill ? 16 : 18
|
|
3008
3225
|
}, null, 8, ["name", "size"])])])) : createCommentVNode("", true),
|
|
3009
|
-
createElementVNode("div", _hoisted_2$
|
|
3010
|
-
_ctx.$slots.action ? (openBlock(), createElementBlock("div", _hoisted_5$
|
|
3226
|
+
createElementVNode("div", _hoisted_2$29, [__props.title || _ctx.$slots.title ? (openBlock(), createElementBlock("strong", _hoisted_3$22, [renderSlot(_ctx.$slots, "title", {}, () => [createTextVNode(toDisplayString(__props.title), 1)])])) : createCommentVNode("", true), createElementVNode("span", _hoisted_4$21, [renderSlot(_ctx.$slots, "default")])]),
|
|
3227
|
+
_ctx.$slots.action ? (openBlock(), createElementBlock("div", _hoisted_5$16, [renderSlot(_ctx.$slots, "action")])) : createCommentVNode("", true),
|
|
3011
3228
|
__props.closable ? (openBlock(), createElementBlock("button", {
|
|
3012
3229
|
key: 2,
|
|
3013
3230
|
type: "button",
|
|
3014
3231
|
class: "ew-alert__close",
|
|
3015
3232
|
"aria-label": "关闭",
|
|
3016
3233
|
onClick: _cache[0] || (_cache[0] = ($event) => visible.value = false)
|
|
3017
|
-
}, [createVNode(_sfc_main$
|
|
3234
|
+
}, [createVNode(_sfc_main$24, {
|
|
3018
3235
|
name: "close",
|
|
3019
3236
|
size: 14
|
|
3020
3237
|
})])) : createCommentVNode("", true)
|
|
@@ -3024,24 +3241,24 @@ var _sfc_main$1 = {
|
|
|
3024
3241
|
};
|
|
3025
3242
|
//#endregion
|
|
3026
3243
|
//#region src/components/code-block/index.vue
|
|
3027
|
-
var _hoisted_1$
|
|
3028
|
-
var _hoisted_2$
|
|
3029
|
-
var _hoisted_3$
|
|
3244
|
+
var _hoisted_1$32 = { class: "ew-code-block" };
|
|
3245
|
+
var _hoisted_2$28 = { class: "ew-code-block__titlebar" };
|
|
3246
|
+
var _hoisted_3$21 = {
|
|
3030
3247
|
key: 0,
|
|
3031
3248
|
class: "ew-code-block__title"
|
|
3032
3249
|
};
|
|
3033
|
-
var _hoisted_4$
|
|
3034
|
-
var _hoisted_5$
|
|
3250
|
+
var _hoisted_4$20 = ["aria-label"];
|
|
3251
|
+
var _hoisted_5$15 = {
|
|
3035
3252
|
key: 0,
|
|
3036
3253
|
class: "ew-code-block__copy-text"
|
|
3037
3254
|
};
|
|
3038
|
-
var _hoisted_6$
|
|
3039
|
-
var _hoisted_7$
|
|
3255
|
+
var _hoisted_6$8 = { class: "ew-code-block__body" };
|
|
3256
|
+
var _hoisted_7$6 = {
|
|
3040
3257
|
key: 0,
|
|
3041
3258
|
class: "ew-code-block__prefix"
|
|
3042
3259
|
};
|
|
3043
|
-
var _hoisted_8$
|
|
3044
|
-
var _sfc_main$
|
|
3260
|
+
var _hoisted_8$5 = { class: "ew-code-block__code" };
|
|
3261
|
+
var _sfc_main$12 = {
|
|
3045
3262
|
__name: "index",
|
|
3046
3263
|
props: {
|
|
3047
3264
|
/** 代码/命令文案(亦可用默认插槽承载高亮内容) */
|
|
@@ -3083,7 +3300,7 @@ var _sfc_main$10 = {
|
|
|
3083
3300
|
if (await copy(text)) emit("copy", text);
|
|
3084
3301
|
}
|
|
3085
3302
|
return (_ctx, _cache) => {
|
|
3086
|
-
return openBlock(), createElementBlock("div", _hoisted_1$
|
|
3303
|
+
return openBlock(), createElementBlock("div", _hoisted_1$32, [createElementVNode("div", _hoisted_2$28, [
|
|
3087
3304
|
_cache[0] || (_cache[0] = createElementVNode("span", {
|
|
3088
3305
|
class: "ew-code-block__lights",
|
|
3089
3306
|
"aria-hidden": "true"
|
|
@@ -3092,25 +3309,25 @@ var _sfc_main$10 = {
|
|
|
3092
3309
|
createElementVNode("i", { class: "ew-code-block__light is-yellow" }),
|
|
3093
3310
|
createElementVNode("i", { class: "ew-code-block__light is-green" })
|
|
3094
3311
|
], -1)),
|
|
3095
|
-
__props.title || _ctx.$slots.title ? (openBlock(), createElementBlock("span", _hoisted_3$
|
|
3312
|
+
__props.title || _ctx.$slots.title ? (openBlock(), createElementBlock("span", _hoisted_3$21, [renderSlot(_ctx.$slots, "title", {}, () => [createTextVNode(toDisplayString(__props.title), 1)])])) : createCommentVNode("", true),
|
|
3096
3313
|
__props.copyable ? (openBlock(), createElementBlock("button", {
|
|
3097
3314
|
key: 1,
|
|
3098
3315
|
type: "button",
|
|
3099
3316
|
class: normalizeClass(["ew-code-block__copy", { "is-copied": unref(copied) }]),
|
|
3100
3317
|
"aria-label": unref(copied) ? "已复制" : "复制",
|
|
3101
3318
|
onClick: onCopy
|
|
3102
|
-
}, [createVNode(_sfc_main$
|
|
3319
|
+
}, [createVNode(_sfc_main$24, {
|
|
3103
3320
|
name: unref(copied) ? "check" : "copy",
|
|
3104
3321
|
size: 14
|
|
3105
|
-
}, null, 8, ["name"]), __props.showCopyText ? (openBlock(), createElementBlock("span", _hoisted_5$
|
|
3106
|
-
]), createElementVNode("div", _hoisted_6$
|
|
3322
|
+
}, null, 8, ["name"]), __props.showCopyText ? (openBlock(), createElementBlock("span", _hoisted_5$15, toDisplayString(unref(copied) ? "Copied" : "Copy"), 1)) : createCommentVNode("", true)], 10, _hoisted_4$20)) : createCommentVNode("", true)
|
|
3323
|
+
]), createElementVNode("div", _hoisted_6$8, [__props.prefix ? (openBlock(), createElementBlock("span", _hoisted_7$6, toDisplayString(__props.prefix), 1)) : createCommentVNode("", true), createElementVNode("code", _hoisted_8$5, [renderSlot(_ctx.$slots, "default", {}, () => [createTextVNode(toDisplayString(__props.code), 1)])])])]);
|
|
3107
3324
|
};
|
|
3108
3325
|
}
|
|
3109
3326
|
};
|
|
3110
3327
|
//#endregion
|
|
3111
3328
|
//#region src/components/keycap/index.vue
|
|
3112
|
-
var _hoisted_1$
|
|
3113
|
-
var _sfc_main$
|
|
3329
|
+
var _hoisted_1$31 = { class: "ew-keycap" };
|
|
3330
|
+
var _sfc_main$30 = {
|
|
3114
3331
|
__name: "index",
|
|
3115
3332
|
props: {
|
|
3116
3333
|
/** 单键字符串或组合键数组 */
|
|
@@ -3126,7 +3343,7 @@ keys: {
|
|
|
3126
3343
|
const props = __props;
|
|
3127
3344
|
const keys = computed(() => Array.isArray(props.keys) ? props.keys : String(props.keys).split(""));
|
|
3128
3345
|
return (_ctx, _cache) => {
|
|
3129
|
-
return openBlock(), createElementBlock("span", _hoisted_1$
|
|
3346
|
+
return openBlock(), createElementBlock("span", _hoisted_1$31, [(openBlock(true), createElementBlock(Fragment, null, renderList(keys.value, (k, i) => {
|
|
3130
3347
|
return openBlock(), createElementBlock("kbd", {
|
|
3131
3348
|
key: i,
|
|
3132
3349
|
class: "ew-keycap__key"
|
|
@@ -3159,18 +3376,18 @@ function onInView(el, onEnter, onFallback, options = {}) {
|
|
|
3159
3376
|
}
|
|
3160
3377
|
//#endregion
|
|
3161
3378
|
//#region src/components/statistic/index.vue
|
|
3162
|
-
var _hoisted_1$
|
|
3163
|
-
var _hoisted_2$
|
|
3379
|
+
var _hoisted_1$30 = { class: "ew-statistic__value" };
|
|
3380
|
+
var _hoisted_2$27 = {
|
|
3164
3381
|
key: 0,
|
|
3165
3382
|
class: "ew-statistic__sizer",
|
|
3166
3383
|
"aria-hidden": "true"
|
|
3167
3384
|
};
|
|
3168
|
-
var _hoisted_3$
|
|
3169
|
-
var _hoisted_4$
|
|
3385
|
+
var _hoisted_3$20 = { class: "ew-statistic__num" };
|
|
3386
|
+
var _hoisted_4$19 = {
|
|
3170
3387
|
key: 0,
|
|
3171
3388
|
class: "ew-statistic__label"
|
|
3172
3389
|
};
|
|
3173
|
-
var _sfc_main$
|
|
3390
|
+
var _sfc_main$45 = {
|
|
3174
3391
|
__name: "index",
|
|
3175
3392
|
props: {
|
|
3176
3393
|
value: {
|
|
@@ -3270,13 +3487,13 @@ var _sfc_main$39 = {
|
|
|
3270
3487
|
ref_key: "rootRef",
|
|
3271
3488
|
ref: rootRef,
|
|
3272
3489
|
class: normalizeClass(["ew-statistic", `is-${__props.align}`])
|
|
3273
|
-
}, [createElementVNode("div", _hoisted_1$
|
|
3490
|
+
}, [createElementVNode("div", _hoisted_1$30, [__props.animated && sizerText.value ? (openBlock(), createElementBlock("span", _hoisted_2$27, toDisplayString(sizerText.value), 1)) : createCommentVNode("", true), createElementVNode("span", _hoisted_3$20, [renderSlot(_ctx.$slots, "value", {}, () => [createTextVNode(toDisplayString(shown.value), 1)])])]), __props.label || _ctx.$slots.label ? (openBlock(), createElementBlock("div", _hoisted_4$19, [renderSlot(_ctx.$slots, "label", {}, () => [createTextVNode(toDisplayString(__props.label), 1)])])) : createCommentVNode("", true)], 2);
|
|
3274
3491
|
};
|
|
3275
3492
|
}
|
|
3276
3493
|
};
|
|
3277
3494
|
//#endregion
|
|
3278
3495
|
//#region src/components/theme-toggle/index.vue
|
|
3279
|
-
var _sfc_main$
|
|
3496
|
+
var _sfc_main$52 = {
|
|
3280
3497
|
__name: "index",
|
|
3281
3498
|
props: {
|
|
3282
3499
|
variant: {
|
|
@@ -3299,7 +3516,7 @@ var _sfc_main$46 = {
|
|
|
3299
3516
|
*/
|
|
3300
3517
|
const { isDark, toggleTheme } = useTheme();
|
|
3301
3518
|
return (_ctx, _cache) => {
|
|
3302
|
-
return openBlock(), createBlock(_sfc_main$
|
|
3519
|
+
return openBlock(), createBlock(_sfc_main$25, {
|
|
3303
3520
|
icon: unref(isDark) ? "sun" : "moon",
|
|
3304
3521
|
variant: __props.variant,
|
|
3305
3522
|
size: __props.size,
|
|
@@ -3319,15 +3536,15 @@ var _sfc_main$46 = {
|
|
|
3319
3536
|
};
|
|
3320
3537
|
//#endregion
|
|
3321
3538
|
//#region src/components/quote/index.vue
|
|
3322
|
-
var _hoisted_1$
|
|
3323
|
-
var _hoisted_2$
|
|
3324
|
-
var _hoisted_3$
|
|
3325
|
-
var _hoisted_4$
|
|
3539
|
+
var _hoisted_1$29 = { class: "ew-quote__text" };
|
|
3540
|
+
var _hoisted_2$26 = { class: "ew-quote__author" };
|
|
3541
|
+
var _hoisted_3$19 = { class: "ew-quote__name" };
|
|
3542
|
+
var _hoisted_4$18 = {
|
|
3326
3543
|
key: 0,
|
|
3327
3544
|
class: "ew-quote__role"
|
|
3328
3545
|
};
|
|
3329
|
-
var _hoisted_5$
|
|
3330
|
-
var _sfc_main$
|
|
3546
|
+
var _hoisted_5$14 = ["href"];
|
|
3547
|
+
var _sfc_main$41 = {
|
|
3331
3548
|
__name: "index",
|
|
3332
3549
|
props: {
|
|
3333
3550
|
quote: {
|
|
@@ -3361,26 +3578,26 @@ var _sfc_main$35 = {
|
|
|
3361
3578
|
* EwQuote — 引用/评价卡(launchos 用户评价语言)
|
|
3362
3579
|
*/
|
|
3363
3580
|
return (_ctx, _cache) => {
|
|
3364
|
-
return openBlock(), createElementBlock("figure", { class: normalizeClass(["ew-quote", { "is-sticker": __props.sticker }]) }, [createElementVNode("blockquote", _hoisted_1$
|
|
3365
|
-
createElementVNode("span", _hoisted_3$
|
|
3366
|
-
__props.role ? (openBlock(), createElementBlock("span", _hoisted_4$
|
|
3581
|
+
return openBlock(), createElementBlock("figure", { class: normalizeClass(["ew-quote", { "is-sticker": __props.sticker }]) }, [createElementVNode("blockquote", _hoisted_1$29, [renderSlot(_ctx.$slots, "default", {}, () => [createTextVNode(toDisplayString(__props.quote), 1)])]), createElementVNode("figcaption", _hoisted_2$26, [renderSlot(_ctx.$slots, "author", {}, () => [
|
|
3582
|
+
createElementVNode("span", _hoisted_3$19, toDisplayString(__props.author), 1),
|
|
3583
|
+
__props.role ? (openBlock(), createElementBlock("span", _hoisted_4$18, toDisplayString(__props.role), 1)) : createCommentVNode("", true),
|
|
3367
3584
|
__props.source && __props.sourceHref ? (openBlock(), createElementBlock("a", {
|
|
3368
3585
|
key: 1,
|
|
3369
3586
|
href: __props.sourceHref,
|
|
3370
3587
|
target: "_blank",
|
|
3371
3588
|
rel: "noopener",
|
|
3372
3589
|
class: "ew-quote__source"
|
|
3373
|
-
}, [createTextVNode(toDisplayString(__props.source) + " ", 1), createVNode(_sfc_main$
|
|
3590
|
+
}, [createTextVNode(toDisplayString(__props.source) + " ", 1), createVNode(_sfc_main$24, {
|
|
3374
3591
|
name: "external-link",
|
|
3375
3592
|
size: 12
|
|
3376
|
-
})], 8, _hoisted_5$
|
|
3593
|
+
})], 8, _hoisted_5$14)) : createCommentVNode("", true)
|
|
3377
3594
|
])])], 2);
|
|
3378
3595
|
};
|
|
3379
3596
|
}
|
|
3380
3597
|
};
|
|
3381
3598
|
//#endregion
|
|
3382
3599
|
//#region src/components/config-provider/index.vue
|
|
3383
|
-
var _sfc_main$
|
|
3600
|
+
var _sfc_main$14 = {
|
|
3384
3601
|
__name: "index",
|
|
3385
3602
|
props: {
|
|
3386
3603
|
/** 主色(hex),淡色阶自动生成 */
|
|
@@ -3421,6 +3638,11 @@ var _sfc_main$12 = {
|
|
|
3421
3638
|
global: {
|
|
3422
3639
|
type: Boolean,
|
|
3423
3640
|
default: true
|
|
3641
|
+
},
|
|
3642
|
+
/** 全局磨砂:开启后容器类组件(card/section/footer/navbar…)默认玻璃质感,组件级 glass prop 可单独覆盖 */
|
|
3643
|
+
glass: {
|
|
3644
|
+
type: Boolean,
|
|
3645
|
+
default: false
|
|
3424
3646
|
}
|
|
3425
3647
|
},
|
|
3426
3648
|
setup(__props) {
|
|
@@ -3455,6 +3677,15 @@ var _sfc_main$12 = {
|
|
|
3455
3677
|
const vars = resolveThemeVars(props);
|
|
3456
3678
|
for (const [name, value] of Object.entries(vars)) style.setProperty(name, value);
|
|
3457
3679
|
}, { immediate: true });
|
|
3680
|
+
watch(() => props.glass, (on) => {
|
|
3681
|
+
if (typeof document === "undefined") return;
|
|
3682
|
+
if (on) document.documentElement.setAttribute("data-ew-glass", "on");
|
|
3683
|
+
else document.documentElement.removeAttribute("data-ew-glass");
|
|
3684
|
+
}, { immediate: true });
|
|
3685
|
+
onUnmounted(() => {
|
|
3686
|
+
if (typeof document === "undefined") return;
|
|
3687
|
+
document.documentElement.removeAttribute("data-ew-glass");
|
|
3688
|
+
});
|
|
3458
3689
|
return (_ctx, _cache) => {
|
|
3459
3690
|
return !__props.global ? (openBlock(), createElementBlock("div", {
|
|
3460
3691
|
key: 0,
|
|
@@ -3466,9 +3697,9 @@ var _sfc_main$12 = {
|
|
|
3466
3697
|
};
|
|
3467
3698
|
//#endregion
|
|
3468
3699
|
//#region src/components/tabs/index.vue
|
|
3469
|
-
var _hoisted_1$
|
|
3470
|
-
var _hoisted_2$
|
|
3471
|
-
var _sfc_main$
|
|
3700
|
+
var _hoisted_1$28 = ["aria-selected", "onClick"];
|
|
3701
|
+
var _hoisted_2$25 = ["aria-selected", "onClick"];
|
|
3702
|
+
var _sfc_main$49 = {
|
|
3472
3703
|
__name: "index",
|
|
3473
3704
|
props: {
|
|
3474
3705
|
/** 当前值(v-model) */
|
|
@@ -3596,11 +3827,11 @@ var _sfc_main$43 = {
|
|
|
3596
3827
|
"is-disabled": item.disabled
|
|
3597
3828
|
}]),
|
|
3598
3829
|
onClick: ($event) => select(item)
|
|
3599
|
-
}, [item.icon ? (openBlock(), createBlock(_sfc_main$
|
|
3830
|
+
}, [item.icon ? (openBlock(), createBlock(_sfc_main$24, {
|
|
3600
3831
|
key: 0,
|
|
3601
3832
|
name: item.icon,
|
|
3602
3833
|
size: iconSize.value
|
|
3603
|
-
}, null, 8, ["name", "size"])) : createCommentVNode("", true), createElementVNode("span", null, toDisplayString(item.label), 1)], 10, _hoisted_1$
|
|
3834
|
+
}, null, 8, ["name", "size"])) : createCommentVNode("", true), createElementVNode("span", null, toDisplayString(item.label), 1)], 10, _hoisted_1$28);
|
|
3604
3835
|
}), 128))], 64)) : (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(__props.items, (item) => {
|
|
3605
3836
|
return openBlock(), createElementBlock("button", {
|
|
3606
3837
|
key: item.value,
|
|
@@ -3612,19 +3843,19 @@ var _sfc_main$43 = {
|
|
|
3612
3843
|
"is-disabled": item.disabled
|
|
3613
3844
|
}]),
|
|
3614
3845
|
onClick: ($event) => select(item)
|
|
3615
|
-
}, [item.icon ? (openBlock(), createBlock(_sfc_main$
|
|
3846
|
+
}, [item.icon ? (openBlock(), createBlock(_sfc_main$24, {
|
|
3616
3847
|
key: 0,
|
|
3617
3848
|
name: item.icon,
|
|
3618
3849
|
size: iconSize.value
|
|
3619
|
-
}, null, 8, ["name", "size"])) : createCommentVNode("", true), createElementVNode("span", null, toDisplayString(item.label), 1)], 10, _hoisted_2$
|
|
3850
|
+
}, null, 8, ["name", "size"])) : createCommentVNode("", true), createElementVNode("span", null, toDisplayString(item.label), 1)], 10, _hoisted_2$25);
|
|
3620
3851
|
}), 128))], 2);
|
|
3621
3852
|
};
|
|
3622
3853
|
}
|
|
3623
3854
|
};
|
|
3624
3855
|
//#endregion
|
|
3625
3856
|
//#region src/components/switch-comp/index.vue
|
|
3626
|
-
var _hoisted_1$
|
|
3627
|
-
var _sfc_main$
|
|
3857
|
+
var _hoisted_1$27 = ["aria-checked", "disabled"];
|
|
3858
|
+
var _sfc_main$46 = {
|
|
3628
3859
|
__name: "index",
|
|
3629
3860
|
props: {
|
|
3630
3861
|
/** 当前状态(v-model) */
|
|
@@ -3680,13 +3911,13 @@ var _sfc_main$40 = {
|
|
|
3680
3911
|
"aria-checked": unref(checked),
|
|
3681
3912
|
disabled: __props.disabled,
|
|
3682
3913
|
onClick: toggle
|
|
3683
|
-
}, [..._cache[0] || (_cache[0] = [createElementVNode("span", { class: "ew-switch__knob" }, null, -1)])], 10, _hoisted_1$
|
|
3914
|
+
}, [..._cache[0] || (_cache[0] = [createElementVNode("span", { class: "ew-switch__knob" }, null, -1)])], 10, _hoisted_1$27);
|
|
3684
3915
|
};
|
|
3685
3916
|
}
|
|
3686
3917
|
};
|
|
3687
3918
|
//#endregion
|
|
3688
3919
|
//#region src/components/container/index.vue
|
|
3689
|
-
var _sfc_main$
|
|
3920
|
+
var _sfc_main$16 = /*@__PURE__*/ Object.assign({ name: "EwContainer" }, {
|
|
3690
3921
|
__name: "index",
|
|
3691
3922
|
props: {
|
|
3692
3923
|
width: {
|
|
@@ -3715,12 +3946,12 @@ var _sfc_main$14 = /*@__PURE__*/ Object.assign({ name: "EwContainer" }, {
|
|
|
3715
3946
|
});
|
|
3716
3947
|
//#endregion
|
|
3717
3948
|
//#region src/components/avatar/index.vue
|
|
3718
|
-
var _hoisted_1$
|
|
3719
|
-
var _hoisted_2$
|
|
3949
|
+
var _hoisted_1$26 = ["src", "alt"];
|
|
3950
|
+
var _hoisted_2$24 = {
|
|
3720
3951
|
key: 2,
|
|
3721
3952
|
class: "ew-avatar__fallback"
|
|
3722
3953
|
};
|
|
3723
|
-
var _sfc_main$
|
|
3954
|
+
var _sfc_main$5 = {
|
|
3724
3955
|
__name: "index",
|
|
3725
3956
|
props: {
|
|
3726
3957
|
src: {
|
|
@@ -3791,18 +4022,18 @@ var _sfc_main$4 = {
|
|
|
3791
4022
|
alt: __props.alt || __props.name,
|
|
3792
4023
|
class: "ew-avatar__img",
|
|
3793
4024
|
onError: _cache[0] || (_cache[0] = ($event) => imgFailed.value = true)
|
|
3794
|
-
}, null, 40, _hoisted_1$
|
|
4025
|
+
}, null, 40, _hoisted_1$26)) : __props.icon ? (openBlock(), createBlock(_sfc_main$24, {
|
|
3795
4026
|
key: 1,
|
|
3796
4027
|
name: __props.icon,
|
|
3797
4028
|
size: iconSize.value
|
|
3798
|
-
}, null, 8, ["name", "size"])) : (openBlock(), createElementBlock("span", _hoisted_2$
|
|
4029
|
+
}, null, 8, ["name", "size"])) : (openBlock(), createElementBlock("span", _hoisted_2$24, toDisplayString(initials.value), 1))], 6);
|
|
3799
4030
|
};
|
|
3800
4031
|
}
|
|
3801
4032
|
};
|
|
3802
4033
|
//#endregion
|
|
3803
4034
|
//#region src/components/avatar/group.vue
|
|
3804
|
-
var _hoisted_1$
|
|
3805
|
-
var _sfc_main$
|
|
4035
|
+
var _hoisted_1$25 = { class: "ew-avatar-group" };
|
|
4036
|
+
var _sfc_main$6 = {
|
|
3806
4037
|
__name: "group",
|
|
3807
4038
|
props: {
|
|
3808
4039
|
items: {
|
|
@@ -3835,9 +4066,9 @@ var _sfc_main$5 = {
|
|
|
3835
4066
|
};
|
|
3836
4067
|
});
|
|
3837
4068
|
return (_ctx, _cache) => {
|
|
3838
|
-
return openBlock(), createElementBlock("div", _hoisted_1$
|
|
4069
|
+
return openBlock(), createElementBlock("div", _hoisted_1$25, [
|
|
3839
4070
|
(openBlock(true), createElementBlock(Fragment, null, renderList(shown.value, (item, i) => {
|
|
3840
|
-
return openBlock(), createBlock(_sfc_main$
|
|
4071
|
+
return openBlock(), createBlock(_sfc_main$5, mergeProps({ key: item.src || item.name || i }, { ref_for: true }, item, { style: { zIndex: shown.value.length - i } }), null, 16, ["style"]);
|
|
3841
4072
|
}), 128)),
|
|
3842
4073
|
renderSlot(_ctx.$slots, "default"),
|
|
3843
4074
|
overflow.value > 0 ? (openBlock(), createElementBlock("span", {
|
|
@@ -3851,18 +4082,18 @@ var _sfc_main$5 = {
|
|
|
3851
4082
|
};
|
|
3852
4083
|
//#endregion
|
|
3853
4084
|
//#region src/components/timeline/index.vue
|
|
3854
|
-
var _hoisted_1$
|
|
3855
|
-
var _hoisted_2$
|
|
3856
|
-
var _hoisted_3$
|
|
4085
|
+
var _hoisted_1$24 = { class: "ew-timeline" };
|
|
4086
|
+
var _hoisted_2$23 = { class: "ew-timeline__meta" };
|
|
4087
|
+
var _hoisted_3$18 = {
|
|
3857
4088
|
key: 0,
|
|
3858
4089
|
class: "ew-timeline__date"
|
|
3859
4090
|
};
|
|
3860
|
-
var _hoisted_4$
|
|
3861
|
-
var _hoisted_5$
|
|
4091
|
+
var _hoisted_4$17 = { class: "ew-timeline__title" };
|
|
4092
|
+
var _hoisted_5$13 = {
|
|
3862
4093
|
key: 0,
|
|
3863
4094
|
class: "ew-timeline__description"
|
|
3864
4095
|
};
|
|
3865
|
-
var _sfc_main$
|
|
4096
|
+
var _sfc_main$53 = {
|
|
3866
4097
|
__name: "index",
|
|
3867
4098
|
props: {
|
|
3868
4099
|
items: {
|
|
@@ -3881,7 +4112,7 @@ var _sfc_main$47 = {
|
|
|
3881
4112
|
* items:[{ date?, tag?, tagTone?, title, description? }],最新一条默认高亮圆点
|
|
3882
4113
|
*/
|
|
3883
4114
|
return (_ctx, _cache) => {
|
|
3884
|
-
return openBlock(), createElementBlock("div", _hoisted_1$
|
|
4115
|
+
return openBlock(), createElementBlock("div", _hoisted_1$24, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.items, (item, i) => {
|
|
3885
4116
|
return openBlock(), createElementBlock("div", {
|
|
3886
4117
|
key: i,
|
|
3887
4118
|
class: normalizeClass(["ew-timeline__item", { "is-latest": i === 0 && __props.highlightLatest }])
|
|
@@ -3890,7 +4121,7 @@ var _sfc_main$47 = {
|
|
|
3890
4121
|
class: "ew-timeline__dot",
|
|
3891
4122
|
"aria-hidden": "true"
|
|
3892
4123
|
}, null, -1)),
|
|
3893
|
-
createElementVNode("div", _hoisted_2$
|
|
4124
|
+
createElementVNode("div", _hoisted_2$23, [item.date ? (openBlock(), createElementBlock("span", _hoisted_3$18, toDisplayString(item.date), 1)) : createCommentVNode("", true), item.tag ? (openBlock(), createBlock(_sfc_main$50, {
|
|
3894
4125
|
key: 1,
|
|
3895
4126
|
tone: item.tagTone || "primary",
|
|
3896
4127
|
size: "small"
|
|
@@ -3898,11 +4129,11 @@ var _sfc_main$47 = {
|
|
|
3898
4129
|
default: withCtx(() => [createTextVNode(toDisplayString(item.tag), 1)]),
|
|
3899
4130
|
_: 2
|
|
3900
4131
|
}, 1032, ["tone"])) : createCommentVNode("", true)]),
|
|
3901
|
-
createElementVNode("h4", _hoisted_4$
|
|
4132
|
+
createElementVNode("h4", _hoisted_4$17, [renderSlot(_ctx.$slots, "title", {
|
|
3902
4133
|
item,
|
|
3903
4134
|
index: i
|
|
3904
4135
|
}, () => [createTextVNode(toDisplayString(item.title), 1)])]),
|
|
3905
|
-
item.description ? (openBlock(), createElementBlock("p", _hoisted_5$
|
|
4136
|
+
item.description ? (openBlock(), createElementBlock("p", _hoisted_5$13, [renderSlot(_ctx.$slots, "description", {
|
|
3906
4137
|
item,
|
|
3907
4138
|
index: i
|
|
3908
4139
|
}, () => [createTextVNode(toDisplayString(item.description), 1)])])) : createCommentVNode("", true)
|
|
@@ -3913,31 +4144,31 @@ var _sfc_main$47 = {
|
|
|
3913
4144
|
};
|
|
3914
4145
|
//#endregion
|
|
3915
4146
|
//#region src/components/comparison-table/index.vue
|
|
3916
|
-
var _hoisted_1$
|
|
3917
|
-
var _hoisted_2$
|
|
4147
|
+
var _hoisted_1$23 = { class: "ew-comparison-table" };
|
|
4148
|
+
var _hoisted_2$22 = {
|
|
3918
4149
|
class: "ew-comparison-table__feature-col",
|
|
3919
4150
|
scope: "col"
|
|
3920
4151
|
};
|
|
3921
|
-
var _hoisted_3$
|
|
3922
|
-
var _hoisted_4$
|
|
4152
|
+
var _hoisted_3$17 = { class: "ew-comparison-table__col-label" };
|
|
4153
|
+
var _hoisted_4$16 = {
|
|
3923
4154
|
key: 0,
|
|
3924
4155
|
class: "ew-comparison-table__col-note"
|
|
3925
4156
|
};
|
|
3926
|
-
var _hoisted_5$
|
|
3927
|
-
var _hoisted_6$
|
|
3928
|
-
var _hoisted_7$
|
|
4157
|
+
var _hoisted_5$12 = { class: "ew-comparison-table__feature-col" };
|
|
4158
|
+
var _hoisted_6$7 = { class: "ew-comparison-table__feature-label" };
|
|
4159
|
+
var _hoisted_7$5 = {
|
|
3929
4160
|
key: 0,
|
|
3930
4161
|
class: "ew-comparison-table__feature-desc"
|
|
3931
4162
|
};
|
|
3932
|
-
var _hoisted_8$
|
|
4163
|
+
var _hoisted_8$4 = {
|
|
3933
4164
|
key: 1,
|
|
3934
4165
|
class: "ew-comparison-table__dash"
|
|
3935
4166
|
};
|
|
3936
|
-
var _hoisted_9$
|
|
4167
|
+
var _hoisted_9$2 = {
|
|
3937
4168
|
key: 2,
|
|
3938
4169
|
class: "ew-comparison-table__text"
|
|
3939
4170
|
};
|
|
3940
|
-
var _sfc_main$
|
|
4171
|
+
var _sfc_main$13 = {
|
|
3941
4172
|
__name: "index",
|
|
3942
4173
|
props: {
|
|
3943
4174
|
columns: {
|
|
@@ -3960,23 +4191,23 @@ var _sfc_main$11 = {
|
|
|
3960
4191
|
* rows:[{ label, description?, values: (boolean|string)[] }] — true 勾 / false 破折号 / 字符串直出
|
|
3961
4192
|
*/
|
|
3962
4193
|
return (_ctx, _cache) => {
|
|
3963
|
-
return openBlock(), createElementBlock("div", _hoisted_1$
|
|
4194
|
+
return openBlock(), createElementBlock("div", _hoisted_1$23, [createElementVNode("table", null, [createElementVNode("thead", null, [createElementVNode("tr", null, [createElementVNode("th", _hoisted_2$22, [renderSlot(_ctx.$slots, "feature-head", {}, () => [createTextVNode(toDisplayString(__props.featureHead), 1)])]), (openBlock(true), createElementBlock(Fragment, null, renderList(__props.columns, (col) => {
|
|
3964
4195
|
return openBlock(), createElementBlock("th", {
|
|
3965
4196
|
key: col.label,
|
|
3966
4197
|
scope: "col",
|
|
3967
4198
|
class: normalizeClass({ "is-featured": col.featured })
|
|
3968
|
-
}, [createElementVNode("span", _hoisted_3$
|
|
4199
|
+
}, [createElementVNode("span", _hoisted_3$17, toDisplayString(col.label), 1), col.note ? (openBlock(), createElementBlock("span", _hoisted_4$16, toDisplayString(col.note), 1)) : createCommentVNode("", true)], 2);
|
|
3969
4200
|
}), 128))])]), createElementVNode("tbody", null, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.rows, (row, i) => {
|
|
3970
|
-
return openBlock(), createElementBlock("tr", { key: row.label }, [createElementVNode("td", _hoisted_5$
|
|
4201
|
+
return openBlock(), createElementBlock("tr", { key: row.label }, [createElementVNode("td", _hoisted_5$12, [createElementVNode("span", _hoisted_6$7, toDisplayString(row.label), 1), row.description ? (openBlock(), createElementBlock("span", _hoisted_7$5, toDisplayString(row.description), 1)) : createCommentVNode("", true)]), (openBlock(true), createElementBlock(Fragment, null, renderList(__props.columns, (col, j) => {
|
|
3971
4202
|
return openBlock(), createElementBlock("td", {
|
|
3972
4203
|
key: j,
|
|
3973
4204
|
class: normalizeClass({ "is-featured": col.featured })
|
|
3974
|
-
}, [row.values[j] === true ? (openBlock(), createBlock(_sfc_main$
|
|
4205
|
+
}, [row.values[j] === true ? (openBlock(), createBlock(_sfc_main$24, {
|
|
3975
4206
|
key: 0,
|
|
3976
4207
|
name: "check",
|
|
3977
4208
|
size: 16,
|
|
3978
4209
|
class: "ew-comparison-table__check"
|
|
3979
|
-
})) : row.values[j] === false ? (openBlock(), createElementBlock("span", _hoisted_8$
|
|
4210
|
+
})) : row.values[j] === false ? (openBlock(), createElementBlock("span", _hoisted_8$4, "—")) : (openBlock(), createElementBlock("span", _hoisted_9$2, toDisplayString(row.values[j]), 1))], 2);
|
|
3980
4211
|
}), 128))]);
|
|
3981
4212
|
}), 128))])])]);
|
|
3982
4213
|
};
|
|
@@ -3984,20 +4215,20 @@ var _sfc_main$11 = {
|
|
|
3984
4215
|
};
|
|
3985
4216
|
//#endregion
|
|
3986
4217
|
//#region src/components/cta/index.vue
|
|
3987
|
-
var _hoisted_1$
|
|
3988
|
-
var _hoisted_2$
|
|
4218
|
+
var _hoisted_1$22 = { class: "ew-cta__title" };
|
|
4219
|
+
var _hoisted_2$21 = {
|
|
3989
4220
|
key: 0,
|
|
3990
4221
|
class: "ew-cta__description"
|
|
3991
4222
|
};
|
|
3992
|
-
var _hoisted_3$
|
|
4223
|
+
var _hoisted_3$16 = {
|
|
3993
4224
|
key: 1,
|
|
3994
4225
|
class: "ew-cta__actions"
|
|
3995
4226
|
};
|
|
3996
|
-
var _hoisted_4$
|
|
4227
|
+
var _hoisted_4$15 = {
|
|
3997
4228
|
key: 2,
|
|
3998
4229
|
class: "ew-cta__body"
|
|
3999
4230
|
};
|
|
4000
|
-
var _sfc_main$
|
|
4231
|
+
var _sfc_main$17 = {
|
|
4001
4232
|
__name: "index",
|
|
4002
4233
|
props: {
|
|
4003
4234
|
title: {
|
|
@@ -4028,15 +4259,15 @@ var _sfc_main$15 = {
|
|
|
4028
4259
|
* EwCta — 行动召唤区(官网转化收尾)
|
|
4029
4260
|
*/
|
|
4030
4261
|
return (_ctx, _cache) => {
|
|
4031
|
-
return openBlock(), createElementBlock("section", { class: normalizeClass(["ew-cta", { "is-tinted": __props.tinted }]) }, [createVNode(_sfc_main$
|
|
4262
|
+
return openBlock(), createElementBlock("section", { class: normalizeClass(["ew-cta", { "is-tinted": __props.tinted }]) }, [createVNode(_sfc_main$16, {
|
|
4032
4263
|
width: __props.container,
|
|
4033
4264
|
class: "ew-cta__inner"
|
|
4034
4265
|
}, {
|
|
4035
4266
|
default: withCtx(() => [
|
|
4036
|
-
createElementVNode("h2", _hoisted_1$
|
|
4037
|
-
__props.description || _ctx.$slots.description ? (openBlock(), createElementBlock("p", _hoisted_2$
|
|
4038
|
-
_ctx.$slots.actions ? (openBlock(), createElementBlock("div", _hoisted_3$
|
|
4039
|
-
_ctx.$slots.default ? (openBlock(), createElementBlock("div", _hoisted_4$
|
|
4267
|
+
createElementVNode("h2", _hoisted_1$22, [renderSlot(_ctx.$slots, "title", {}, () => [createTextVNode(toDisplayString(__props.title), 1)])]),
|
|
4268
|
+
__props.description || _ctx.$slots.description ? (openBlock(), createElementBlock("p", _hoisted_2$21, [renderSlot(_ctx.$slots, "description", {}, () => [createTextVNode(toDisplayString(__props.description), 1)])])) : createCommentVNode("", true),
|
|
4269
|
+
_ctx.$slots.actions ? (openBlock(), createElementBlock("div", _hoisted_3$16, [renderSlot(_ctx.$slots, "actions")])) : createCommentVNode("", true),
|
|
4270
|
+
_ctx.$slots.default ? (openBlock(), createElementBlock("div", _hoisted_4$15, [renderSlot(_ctx.$slots, "default")])) : createCommentVNode("", true)
|
|
4040
4271
|
]),
|
|
4041
4272
|
_: 3
|
|
4042
4273
|
}, 8, ["width"])], 2);
|
|
@@ -4045,12 +4276,12 @@ var _sfc_main$15 = {
|
|
|
4045
4276
|
};
|
|
4046
4277
|
//#endregion
|
|
4047
4278
|
//#region src/components/newsletter/index.vue
|
|
4048
|
-
var _hoisted_1$
|
|
4049
|
-
var _hoisted_2$
|
|
4279
|
+
var _hoisted_1$21 = ["placeholder", "aria-label"];
|
|
4280
|
+
var _hoisted_2$20 = {
|
|
4050
4281
|
key: 1,
|
|
4051
4282
|
class: "ew-newsletter__done"
|
|
4052
4283
|
};
|
|
4053
|
-
var _sfc_main$
|
|
4284
|
+
var _sfc_main$37 = {
|
|
4054
4285
|
__name: "index",
|
|
4055
4286
|
props: {
|
|
4056
4287
|
placeholder: {
|
|
@@ -4092,7 +4323,7 @@ var _sfc_main$31 = {
|
|
|
4092
4323
|
class: normalizeClass(["ew-newsletter", { "is-subscribed": subscribed.value }]),
|
|
4093
4324
|
onSubmit: withModifiers(onSubmit, ["prevent"])
|
|
4094
4325
|
}, [!subscribed.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
|
|
4095
|
-
createVNode(_sfc_main$
|
|
4326
|
+
createVNode(_sfc_main$24, {
|
|
4096
4327
|
name: "mail",
|
|
4097
4328
|
size: 18,
|
|
4098
4329
|
class: "ew-newsletter__icon"
|
|
@@ -4104,13 +4335,13 @@ var _sfc_main$31 = {
|
|
|
4104
4335
|
required: "",
|
|
4105
4336
|
placeholder: __props.placeholder,
|
|
4106
4337
|
"aria-label": __props.placeholder
|
|
4107
|
-
}, null, 8, _hoisted_1$
|
|
4338
|
+
}, null, 8, _hoisted_1$21), [[
|
|
4108
4339
|
vModelText,
|
|
4109
4340
|
email.value,
|
|
4110
4341
|
void 0,
|
|
4111
4342
|
{ trim: true }
|
|
4112
4343
|
]]),
|
|
4113
|
-
createVNode(_sfc_main$
|
|
4344
|
+
createVNode(_sfc_main$9, {
|
|
4114
4345
|
type: "submit",
|
|
4115
4346
|
pill: __props.pill,
|
|
4116
4347
|
loading: loading.value,
|
|
@@ -4123,7 +4354,7 @@ var _sfc_main$31 = {
|
|
|
4123
4354
|
"loading",
|
|
4124
4355
|
"disabled"
|
|
4125
4356
|
])
|
|
4126
|
-
], 64)) : (openBlock(), createElementBlock("span", _hoisted_2$
|
|
4357
|
+
], 64)) : (openBlock(), createElementBlock("span", _hoisted_2$20, [createVNode(_sfc_main$24, {
|
|
4127
4358
|
name: "check",
|
|
4128
4359
|
size: 16,
|
|
4129
4360
|
class: "ew-newsletter__done-icon"
|
|
@@ -4133,13 +4364,13 @@ var _sfc_main$31 = {
|
|
|
4133
4364
|
};
|
|
4134
4365
|
//#endregion
|
|
4135
4366
|
//#region src/components/logo-cloud/index.vue
|
|
4136
|
-
var _hoisted_1$
|
|
4137
|
-
var _hoisted_2$
|
|
4367
|
+
var _hoisted_1$20 = { class: "ew-logo-cloud" };
|
|
4368
|
+
var _hoisted_2$19 = {
|
|
4138
4369
|
key: 0,
|
|
4139
4370
|
class: "ew-logo-cloud__title"
|
|
4140
4371
|
};
|
|
4141
|
-
var _hoisted_3$
|
|
4142
|
-
var _sfc_main$
|
|
4372
|
+
var _hoisted_3$15 = { class: "ew-logo-cloud__label" };
|
|
4373
|
+
var _sfc_main$32 = {
|
|
4143
4374
|
__name: "index",
|
|
4144
4375
|
props: {
|
|
4145
4376
|
items: {
|
|
@@ -4166,35 +4397,35 @@ var _sfc_main$27 = {
|
|
|
4166
4397
|
const iconSize = computed(() => 20);
|
|
4167
4398
|
const gridStyle = computed(() => props.columns ? { gridTemplateColumns: `repeat(${Number(props.columns)}, 1fr)` } : void 0);
|
|
4168
4399
|
return (_ctx, _cache) => {
|
|
4169
|
-
return openBlock(), createElementBlock("div", _hoisted_1$
|
|
4400
|
+
return openBlock(), createElementBlock("div", _hoisted_1$20, [__props.title || _ctx.$slots.title ? (openBlock(), createElementBlock("p", _hoisted_2$19, [renderSlot(_ctx.$slots, "title", {}, () => [createTextVNode(toDisplayString(__props.title), 1)])])) : createCommentVNode("", true), createElementVNode("div", {
|
|
4170
4401
|
class: "ew-logo-cloud__grid",
|
|
4171
4402
|
style: normalizeStyle(gridStyle.value)
|
|
4172
4403
|
}, [(openBlock(true), createElementBlock(Fragment, null, renderList(normalizedItems.value, (item, i) => {
|
|
4173
4404
|
return openBlock(), createElementBlock("div", {
|
|
4174
4405
|
key: i,
|
|
4175
4406
|
class: "ew-logo-cloud__item"
|
|
4176
|
-
}, [item.icon ? (openBlock(), createBlock(_sfc_main$
|
|
4407
|
+
}, [item.icon ? (openBlock(), createBlock(_sfc_main$24, {
|
|
4177
4408
|
key: 0,
|
|
4178
4409
|
name: item.icon,
|
|
4179
4410
|
size: iconSize.value
|
|
4180
|
-
}, null, 8, ["name", "size"])) : createCommentVNode("", true), createElementVNode("span", _hoisted_3$
|
|
4411
|
+
}, null, 8, ["name", "size"])) : createCommentVNode("", true), createElementVNode("span", _hoisted_3$15, toDisplayString(item.label), 1)]);
|
|
4181
4412
|
}), 128))], 4)]);
|
|
4182
4413
|
};
|
|
4183
4414
|
}
|
|
4184
4415
|
};
|
|
4185
4416
|
//#endregion
|
|
4186
4417
|
//#region src/components/video/index.vue
|
|
4187
|
-
var _hoisted_1$
|
|
4188
|
-
var _hoisted_2$
|
|
4189
|
-
var _hoisted_3$
|
|
4418
|
+
var _hoisted_1$19 = { class: "ew-video" };
|
|
4419
|
+
var _hoisted_2$18 = ["poster", "src"];
|
|
4420
|
+
var _hoisted_3$14 = {
|
|
4190
4421
|
key: 2,
|
|
4191
4422
|
class: "ew-video__placeholder"
|
|
4192
4423
|
};
|
|
4193
|
-
var _hoisted_4$
|
|
4424
|
+
var _hoisted_4$14 = {
|
|
4194
4425
|
key: 0,
|
|
4195
4426
|
class: "ew-video__caption"
|
|
4196
4427
|
};
|
|
4197
|
-
var _sfc_main$
|
|
4428
|
+
var _sfc_main$54 = {
|
|
4198
4429
|
__name: "index",
|
|
4199
4430
|
props: {
|
|
4200
4431
|
/** 视频地址 */
|
|
@@ -4239,7 +4470,7 @@ var _sfc_main$48 = {
|
|
|
4239
4470
|
};
|
|
4240
4471
|
const frameStyle = computed(() => ({ paddingTop: RATIO[props.aspect] }));
|
|
4241
4472
|
return (_ctx, _cache) => {
|
|
4242
|
-
return openBlock(), createElementBlock("figure", _hoisted_1$
|
|
4473
|
+
return openBlock(), createElementBlock("figure", _hoisted_1$19, [createElementVNode("div", {
|
|
4243
4474
|
class: "ew-video__frame",
|
|
4244
4475
|
style: normalizeStyle(frameStyle.value)
|
|
4245
4476
|
}, [_ctx.$slots.default ? renderSlot(_ctx.$slots, "default", {}, void 0, void 0, 0) : __props.src ? (openBlock(), createElementBlock("video", {
|
|
@@ -4250,21 +4481,21 @@ var _sfc_main$48 = {
|
|
|
4250
4481
|
src: __props.src,
|
|
4251
4482
|
onPlay: _cache[0] || (_cache[0] = ($event) => emit("play")),
|
|
4252
4483
|
onPause: _cache[1] || (_cache[1] = ($event) => emit("pause"))
|
|
4253
|
-
}, null, 40, _hoisted_2$
|
|
4484
|
+
}, null, 40, _hoisted_2$18)) : (openBlock(), createElementBlock("div", _hoisted_3$14, [createVNode(_sfc_main$24, {
|
|
4254
4485
|
name: "play-fill",
|
|
4255
4486
|
size: 28
|
|
4256
|
-
}), _cache[2] || (_cache[2] = createElementVNode("span", null, "视频占位", -1))]))], 4), __props.caption || _ctx.$slots.caption ? (openBlock(), createElementBlock("figcaption", _hoisted_4$
|
|
4487
|
+
}), _cache[2] || (_cache[2] = createElementVNode("span", null, "视频占位", -1))]))], 4), __props.caption || _ctx.$slots.caption ? (openBlock(), createElementBlock("figcaption", _hoisted_4$14, [renderSlot(_ctx.$slots, "caption", {}, () => [createTextVNode(toDisplayString(__props.caption), 1)])])) : createCommentVNode("", true)]);
|
|
4257
4488
|
};
|
|
4258
4489
|
}
|
|
4259
4490
|
};
|
|
4260
4491
|
//#endregion
|
|
4261
4492
|
//#region src/components/audio/index.vue
|
|
4262
|
-
var _hoisted_1$
|
|
4263
|
-
var _hoisted_2$
|
|
4264
|
-
var _hoisted_3$
|
|
4265
|
-
var _hoisted_4$
|
|
4266
|
-
var _hoisted_5$
|
|
4267
|
-
var _sfc_main$
|
|
4493
|
+
var _hoisted_1$18 = { class: "ew-audio" };
|
|
4494
|
+
var _hoisted_2$17 = { class: "ew-audio__badge" };
|
|
4495
|
+
var _hoisted_3$13 = { class: "ew-audio__body" };
|
|
4496
|
+
var _hoisted_4$13 = { class: "ew-audio__title" };
|
|
4497
|
+
var _hoisted_5$11 = ["src"];
|
|
4498
|
+
var _sfc_main$4 = {
|
|
4268
4499
|
__name: "index",
|
|
4269
4500
|
props: {
|
|
4270
4501
|
/** 音频地址 */
|
|
@@ -4283,48 +4514,48 @@ var _sfc_main$3 = {
|
|
|
4283
4514
|
* 标题行 + 原生播放控件;src 缺省时可用插槽承载自定义播放器
|
|
4284
4515
|
*/
|
|
4285
4516
|
return (_ctx, _cache) => {
|
|
4286
|
-
return openBlock(), createElementBlock("div", _hoisted_1$
|
|
4517
|
+
return openBlock(), createElementBlock("div", _hoisted_1$18, [createElementVNode("span", _hoisted_2$17, [createVNode(_sfc_main$24, {
|
|
4287
4518
|
name: "music",
|
|
4288
4519
|
size: 18
|
|
4289
|
-
})]), createElementVNode("div", _hoisted_3$
|
|
4520
|
+
})]), createElementVNode("div", _hoisted_3$13, [createElementVNode("div", _hoisted_4$13, [renderSlot(_ctx.$slots, "title", {}, () => [createTextVNode(toDisplayString(__props.title), 1)])]), __props.src ? (openBlock(), createElementBlock("audio", {
|
|
4290
4521
|
key: 0,
|
|
4291
4522
|
controls: "",
|
|
4292
4523
|
preload: "metadata",
|
|
4293
4524
|
src: __props.src,
|
|
4294
4525
|
class: "ew-audio__player"
|
|
4295
|
-
}, null, 8, _hoisted_5$
|
|
4526
|
+
}, null, 8, _hoisted_5$11)) : renderSlot(_ctx.$slots, "default", {}, void 0, void 0, 1)])]);
|
|
4296
4527
|
};
|
|
4297
4528
|
}
|
|
4298
4529
|
};
|
|
4299
4530
|
//#endregion
|
|
4300
4531
|
//#region src/components/contact-form/index.vue
|
|
4301
|
-
var _hoisted_1$
|
|
4302
|
-
var _hoisted_2$
|
|
4303
|
-
var _hoisted_3$
|
|
4532
|
+
var _hoisted_1$17 = { class: "ew-contact-form__row" };
|
|
4533
|
+
var _hoisted_2$16 = { class: "ew-contact-form__field" };
|
|
4534
|
+
var _hoisted_3$12 = {
|
|
4304
4535
|
key: 0,
|
|
4305
4536
|
class: "ew-contact-form__error"
|
|
4306
4537
|
};
|
|
4307
|
-
var _hoisted_4$
|
|
4308
|
-
var _hoisted_5$
|
|
4538
|
+
var _hoisted_4$12 = { class: "ew-contact-form__field" };
|
|
4539
|
+
var _hoisted_5$10 = {
|
|
4309
4540
|
key: 0,
|
|
4310
4541
|
class: "ew-contact-form__error"
|
|
4311
4542
|
};
|
|
4312
|
-
var _hoisted_6$
|
|
4313
|
-
var _hoisted_7$
|
|
4543
|
+
var _hoisted_6$6 = { class: "ew-contact-form__field" };
|
|
4544
|
+
var _hoisted_7$4 = {
|
|
4314
4545
|
key: 0,
|
|
4315
4546
|
class: "ew-contact-form__error"
|
|
4316
4547
|
};
|
|
4317
|
-
var _hoisted_8 = { class: "ew-contact-form__footer" };
|
|
4318
|
-
var _hoisted_9 = {
|
|
4548
|
+
var _hoisted_8$3 = { class: "ew-contact-form__footer" };
|
|
4549
|
+
var _hoisted_9$1 = {
|
|
4319
4550
|
key: 0,
|
|
4320
4551
|
class: "ew-contact-form__hint"
|
|
4321
4552
|
};
|
|
4322
|
-
var _hoisted_10 = {
|
|
4553
|
+
var _hoisted_10$1 = {
|
|
4323
4554
|
key: 1,
|
|
4324
4555
|
class: "ew-contact-form__done"
|
|
4325
4556
|
};
|
|
4326
|
-
var _hoisted_11 = { class: "ew-contact-form__done-text" };
|
|
4327
|
-
var _sfc_main$
|
|
4557
|
+
var _hoisted_11$1 = { class: "ew-contact-form__done-text" };
|
|
4558
|
+
var _sfc_main$15 = {
|
|
4328
4559
|
__name: "index",
|
|
4329
4560
|
props: {
|
|
4330
4561
|
buttonText: {
|
|
@@ -4382,7 +4613,7 @@ var _sfc_main$13 = {
|
|
|
4382
4613
|
novalidate: "",
|
|
4383
4614
|
onSubmit: withModifiers(onSubmit, ["prevent"])
|
|
4384
4615
|
}, [!sent.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
|
|
4385
|
-
createElementVNode("div", _hoisted_1$
|
|
4616
|
+
createElementVNode("div", _hoisted_1$17, [createElementVNode("div", _hoisted_2$16, [
|
|
4386
4617
|
_cache[6] || (_cache[6] = createElementVNode("label", {
|
|
4387
4618
|
class: "ew-contact-form__label",
|
|
4388
4619
|
for: "ew-contact-name"
|
|
@@ -4400,8 +4631,8 @@ var _sfc_main$13 = {
|
|
|
4400
4631
|
void 0,
|
|
4401
4632
|
{ trim: true }
|
|
4402
4633
|
]]),
|
|
4403
|
-
errors.name ? (openBlock(), createElementBlock("span", _hoisted_3$
|
|
4404
|
-
]), createElementVNode("div", _hoisted_4$
|
|
4634
|
+
errors.name ? (openBlock(), createElementBlock("span", _hoisted_3$12, "请填写称呼")) : createCommentVNode("", true)
|
|
4635
|
+
]), createElementVNode("div", _hoisted_4$12, [
|
|
4405
4636
|
_cache[7] || (_cache[7] = createElementVNode("label", {
|
|
4406
4637
|
class: "ew-contact-form__label",
|
|
4407
4638
|
for: "ew-contact-email"
|
|
@@ -4419,9 +4650,9 @@ var _sfc_main$13 = {
|
|
|
4419
4650
|
void 0,
|
|
4420
4651
|
{ trim: true }
|
|
4421
4652
|
]]),
|
|
4422
|
-
errors.email ? (openBlock(), createElementBlock("span", _hoisted_5$
|
|
4653
|
+
errors.email ? (openBlock(), createElementBlock("span", _hoisted_5$10, "邮箱格式不正确")) : createCommentVNode("", true)
|
|
4423
4654
|
])]),
|
|
4424
|
-
createElementVNode("div", _hoisted_6$
|
|
4655
|
+
createElementVNode("div", _hoisted_6$6, [
|
|
4425
4656
|
_cache[8] || (_cache[8] = createElementVNode("label", {
|
|
4426
4657
|
class: "ew-contact-form__label",
|
|
4427
4658
|
for: "ew-contact-message"
|
|
@@ -4439,23 +4670,23 @@ var _sfc_main$13 = {
|
|
|
4439
4670
|
void 0,
|
|
4440
4671
|
{ trim: true }
|
|
4441
4672
|
]]),
|
|
4442
|
-
errors.message ? (openBlock(), createElementBlock("span", _hoisted_7$
|
|
4673
|
+
errors.message ? (openBlock(), createElementBlock("span", _hoisted_7$4, "留言不能为空")) : createCommentVNode("", true)
|
|
4443
4674
|
]),
|
|
4444
|
-
createElementVNode("div", _hoisted_8, [createVNode(_sfc_main$
|
|
4675
|
+
createElementVNode("div", _hoisted_8$3, [createVNode(_sfc_main$9, {
|
|
4445
4676
|
type: "submit",
|
|
4446
4677
|
loading: loading.value
|
|
4447
4678
|
}, {
|
|
4448
4679
|
default: withCtx(() => [createTextVNode(toDisplayString(__props.buttonText), 1)]),
|
|
4449
4680
|
_: 1
|
|
4450
|
-
}, 8, ["loading"]), _ctx.$slots.hint ? (openBlock(), createElementBlock("span", _hoisted_9, [renderSlot(_ctx.$slots, "hint")])) : createCommentVNode("", true)])
|
|
4451
|
-
], 64)) : (openBlock(), createElementBlock("div", _hoisted_10, [
|
|
4452
|
-
createVNode(_sfc_main$
|
|
4681
|
+
}, 8, ["loading"]), _ctx.$slots.hint ? (openBlock(), createElementBlock("span", _hoisted_9$1, [renderSlot(_ctx.$slots, "hint")])) : createCommentVNode("", true)])
|
|
4682
|
+
], 64)) : (openBlock(), createElementBlock("div", _hoisted_10$1, [
|
|
4683
|
+
createVNode(_sfc_main$24, {
|
|
4453
4684
|
name: "check",
|
|
4454
4685
|
size: 18,
|
|
4455
4686
|
class: "ew-contact-form__done-icon"
|
|
4456
4687
|
}),
|
|
4457
|
-
createElementVNode("div", _hoisted_11, [renderSlot(_ctx.$slots, "sent", {}, () => [createTextVNode(toDisplayString(__props.sentText), 1)])]),
|
|
4458
|
-
createVNode(_sfc_main$
|
|
4688
|
+
createElementVNode("div", _hoisted_11$1, [renderSlot(_ctx.$slots, "sent", {}, () => [createTextVNode(toDisplayString(__props.sentText), 1)])]),
|
|
4689
|
+
createVNode(_sfc_main$9, {
|
|
4459
4690
|
variant: "ghost",
|
|
4460
4691
|
size: "small",
|
|
4461
4692
|
onClick: reset
|
|
@@ -4469,19 +4700,51 @@ var _sfc_main$13 = {
|
|
|
4469
4700
|
};
|
|
4470
4701
|
//#endregion
|
|
4471
4702
|
//#region src/components/carousel/index.vue
|
|
4472
|
-
var _hoisted_1$
|
|
4473
|
-
var _hoisted_2$
|
|
4703
|
+
var _hoisted_1$16 = ["src", "alt"];
|
|
4704
|
+
var _hoisted_2$15 = {
|
|
4705
|
+
key: 1,
|
|
4706
|
+
class: "ew-carousel__banner"
|
|
4707
|
+
};
|
|
4708
|
+
var _hoisted_3$11 = ["src", "alt"];
|
|
4709
|
+
var _hoisted_4$11 = {
|
|
4710
|
+
key: 0,
|
|
4711
|
+
class: "ew-carousel__caption"
|
|
4712
|
+
};
|
|
4713
|
+
var _hoisted_5$9 = {
|
|
4714
|
+
key: 0,
|
|
4715
|
+
class: "ew-carousel__caption-title"
|
|
4716
|
+
};
|
|
4717
|
+
var _hoisted_6$5 = {
|
|
4718
|
+
key: 1,
|
|
4719
|
+
class: "ew-carousel__caption-desc"
|
|
4720
|
+
};
|
|
4721
|
+
var _hoisted_7$3 = {
|
|
4474
4722
|
key: 2,
|
|
4475
4723
|
class: "ew-carousel__dots"
|
|
4476
4724
|
};
|
|
4477
|
-
var
|
|
4478
|
-
var _sfc_main$
|
|
4725
|
+
var _hoisted_8$2 = ["aria-label", "onClick"];
|
|
4726
|
+
var _sfc_main$11 = {
|
|
4479
4727
|
__name: "index",
|
|
4480
4728
|
props: {
|
|
4481
4729
|
items: {
|
|
4482
4730
|
type: Array,
|
|
4483
4731
|
default: () => []
|
|
4484
4732
|
},
|
|
4733
|
+
/** 形态:default 自定义插槽 / image 纯图片 / banner 图片+文字注释 */
|
|
4734
|
+
variant: {
|
|
4735
|
+
type: String,
|
|
4736
|
+
default: "default",
|
|
4737
|
+
validator: (v) => [
|
|
4738
|
+
"default",
|
|
4739
|
+
"image",
|
|
4740
|
+
"banner"
|
|
4741
|
+
].includes(v)
|
|
4742
|
+
},
|
|
4743
|
+
/** image / banner 形态的画幅比例(CSS aspect-ratio 值) */
|
|
4744
|
+
aspect: {
|
|
4745
|
+
type: String,
|
|
4746
|
+
default: "16 / 9"
|
|
4747
|
+
},
|
|
4485
4748
|
/** 自动轮播间隔 ms(0 关闭) */
|
|
4486
4749
|
autoplay: {
|
|
4487
4750
|
type: Number,
|
|
@@ -4495,13 +4758,21 @@ var _sfc_main$9 = {
|
|
|
4495
4758
|
setup(__props) {
|
|
4496
4759
|
/**
|
|
4497
4760
|
* EwCarousel — 轮播(评价墙、案例展示、横幅)
|
|
4498
|
-
*
|
|
4761
|
+
* 三种形态(variant):
|
|
4762
|
+
* - default:items 提供数据,#item 作用域插槽自定义每张内容
|
|
4763
|
+
* - image:纯图片轮播,items 项 { src, alt? },aspect 控制画幅
|
|
4764
|
+
* - banner:图片 + 文字注释,items 项 { src, title?, desc?, alt? },注释带渐变遮罩贴底
|
|
4765
|
+
* autoplay 毫秒数(0 关闭),hover 暂停
|
|
4499
4766
|
*/
|
|
4500
4767
|
const props = __props;
|
|
4501
4768
|
const index = ref(0);
|
|
4502
4769
|
const paused = ref(false);
|
|
4503
4770
|
let timer = null;
|
|
4504
4771
|
const count = computed(() => props.items.length);
|
|
4772
|
+
const viewportStyle = computed(() => {
|
|
4773
|
+
if (props.variant === "default") return null;
|
|
4774
|
+
return { aspectRatio: props.aspect };
|
|
4775
|
+
});
|
|
4505
4776
|
function go(i) {
|
|
4506
4777
|
if (!count.value) return;
|
|
4507
4778
|
index.value = (i % count.value + count.value) % count.value;
|
|
@@ -4525,29 +4796,43 @@ var _sfc_main$9 = {
|
|
|
4525
4796
|
onBeforeUnmount(teardownTimer);
|
|
4526
4797
|
return (_ctx, _cache) => {
|
|
4527
4798
|
return openBlock(), createElementBlock("div", {
|
|
4528
|
-
class: "ew-carousel",
|
|
4799
|
+
class: normalizeClass(["ew-carousel", { "is-media": __props.variant !== "default" }]),
|
|
4529
4800
|
onMouseenter: _cache[2] || (_cache[2] = ($event) => paused.value = true),
|
|
4530
4801
|
onMouseleave: _cache[3] || (_cache[3] = ($event) => paused.value = false)
|
|
4531
4802
|
}, [
|
|
4532
|
-
createElementVNode("div",
|
|
4803
|
+
createElementVNode("div", {
|
|
4804
|
+
class: "ew-carousel__viewport",
|
|
4805
|
+
style: normalizeStyle(viewportStyle.value)
|
|
4806
|
+
}, [createElementVNode("div", {
|
|
4533
4807
|
class: "ew-carousel__track",
|
|
4534
4808
|
style: normalizeStyle({ transform: `translateX(-${index.value * 100}%)` })
|
|
4535
4809
|
}, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.items, (item, i) => {
|
|
4536
4810
|
return openBlock(), createElementBlock("div", {
|
|
4537
4811
|
key: i,
|
|
4538
4812
|
class: "ew-carousel__slide"
|
|
4539
|
-
}, [
|
|
4813
|
+
}, [__props.variant === "image" ? (openBlock(), createElementBlock("img", {
|
|
4814
|
+
key: 0,
|
|
4815
|
+
class: "ew-carousel__img",
|
|
4816
|
+
src: item.src,
|
|
4817
|
+
alt: item.alt || "",
|
|
4818
|
+
loading: "lazy"
|
|
4819
|
+
}, null, 8, _hoisted_1$16)) : __props.variant === "banner" ? (openBlock(), createElementBlock("div", _hoisted_2$15, [createElementVNode("img", {
|
|
4820
|
+
class: "ew-carousel__img",
|
|
4821
|
+
src: item.src,
|
|
4822
|
+
alt: item.alt || "",
|
|
4823
|
+
loading: "lazy"
|
|
4824
|
+
}, null, 8, _hoisted_3$11), item.title || item.desc ? (openBlock(), createElementBlock("div", _hoisted_4$11, [item.title ? (openBlock(), createElementBlock("h3", _hoisted_5$9, toDisplayString(item.title), 1)) : createCommentVNode("", true), item.desc ? (openBlock(), createElementBlock("p", _hoisted_6$5, toDisplayString(item.desc), 1)) : createCommentVNode("", true)])) : createCommentVNode("", true)])) : renderSlot(_ctx.$slots, "item", {
|
|
4540
4825
|
item,
|
|
4541
4826
|
index: i
|
|
4542
|
-
}, () => [createTextVNode(toDisplayString(item), 1)])]);
|
|
4543
|
-
}), 128))], 4)]),
|
|
4827
|
+
}, () => [createTextVNode(toDisplayString(item), 1)], void 0, 2)]);
|
|
4828
|
+
}), 128))], 4)], 4),
|
|
4544
4829
|
__props.items.length > 1 ? (openBlock(), createElementBlock("button", {
|
|
4545
4830
|
key: 0,
|
|
4546
4831
|
type: "button",
|
|
4547
4832
|
class: "ew-carousel__arrow is-prev",
|
|
4548
4833
|
"aria-label": "上一张",
|
|
4549
4834
|
onClick: _cache[0] || (_cache[0] = ($event) => step(-1))
|
|
4550
|
-
}, [createVNode(_sfc_main$
|
|
4835
|
+
}, [createVNode(_sfc_main$24, {
|
|
4551
4836
|
name: "chevron-left",
|
|
4552
4837
|
size: 18
|
|
4553
4838
|
})])) : createCommentVNode("", true),
|
|
@@ -4557,40 +4842,45 @@ var _sfc_main$9 = {
|
|
|
4557
4842
|
class: "ew-carousel__arrow is-next",
|
|
4558
4843
|
"aria-label": "下一张",
|
|
4559
4844
|
onClick: _cache[1] || (_cache[1] = ($event) => step(1))
|
|
4560
|
-
}, [createVNode(_sfc_main$
|
|
4845
|
+
}, [createVNode(_sfc_main$24, {
|
|
4561
4846
|
name: "chevron-right",
|
|
4562
4847
|
size: 18
|
|
4563
4848
|
})])) : createCommentVNode("", true),
|
|
4564
|
-
__props.items.length > 1 && __props.dots ? (openBlock(), createElementBlock("div",
|
|
4849
|
+
__props.items.length > 1 && __props.dots ? (openBlock(), createElementBlock("div", _hoisted_7$3, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.items, (_, i) => {
|
|
4565
4850
|
return openBlock(), createElementBlock("button", {
|
|
4566
4851
|
key: i,
|
|
4567
4852
|
type: "button",
|
|
4568
4853
|
class: normalizeClass(["ew-carousel__dot", { "is-active": i === index.value }]),
|
|
4569
4854
|
"aria-label": `第 ${i + 1} 张`,
|
|
4570
4855
|
onClick: ($event) => go(i)
|
|
4571
|
-
}, null, 10,
|
|
4856
|
+
}, null, 10, _hoisted_8$2);
|
|
4572
4857
|
}), 128))])) : createCommentVNode("", true)
|
|
4573
|
-
],
|
|
4858
|
+
], 34);
|
|
4574
4859
|
};
|
|
4575
4860
|
}
|
|
4576
4861
|
};
|
|
4577
4862
|
//#endregion
|
|
4578
4863
|
//#region src/components/article-card/index.vue
|
|
4579
|
-
var _hoisted_1$
|
|
4580
|
-
var _hoisted_2$
|
|
4581
|
-
var _hoisted_3$
|
|
4582
|
-
var _hoisted_4$
|
|
4864
|
+
var _hoisted_1$15 = ["src", "alt"];
|
|
4865
|
+
var _hoisted_2$14 = { class: "ew-article-card__body" };
|
|
4866
|
+
var _hoisted_3$10 = { class: "ew-article-card__meta" };
|
|
4867
|
+
var _hoisted_4$10 = {
|
|
4583
4868
|
key: 0,
|
|
4584
4869
|
class: "ew-article-card__date"
|
|
4585
4870
|
};
|
|
4586
|
-
var _hoisted_5$
|
|
4587
|
-
var _hoisted_6$
|
|
4871
|
+
var _hoisted_5$8 = { class: "ew-article-card__title" };
|
|
4872
|
+
var _hoisted_6$4 = {
|
|
4588
4873
|
key: 0,
|
|
4589
4874
|
class: "ew-article-card__excerpt"
|
|
4590
4875
|
};
|
|
4591
|
-
var _sfc_main$
|
|
4876
|
+
var _sfc_main$3 = {
|
|
4592
4877
|
__name: "index",
|
|
4593
4878
|
props: {
|
|
4879
|
+
/** 磨砂玻璃质感:true 强制开 / false 强制关 / 缺省跟随全局(ConfigProvider 的 glass) */
|
|
4880
|
+
glass: {
|
|
4881
|
+
type: Boolean,
|
|
4882
|
+
default: void 0
|
|
4883
|
+
},
|
|
4594
4884
|
title: {
|
|
4595
4885
|
type: String,
|
|
4596
4886
|
default: ""
|
|
@@ -4639,7 +4929,11 @@ var _sfc_main$2 = {
|
|
|
4639
4929
|
const coverStyle = computed(() => props.cover ? void 0 : { background: "linear-gradient(135deg, var(--ew-fill-1), var(--ew-bg-soft))" });
|
|
4640
4930
|
return (_ctx, _cache) => {
|
|
4641
4931
|
return openBlock(), createBlock(resolveDynamicComponent(__props.tag), {
|
|
4642
|
-
class: normalizeClass(["ew-article-card", {
|
|
4932
|
+
class: normalizeClass(["ew-article-card", {
|
|
4933
|
+
"is-hoverable": __props.hoverable,
|
|
4934
|
+
"is-glass": __props.glass === true,
|
|
4935
|
+
"no-glass": __props.glass === false
|
|
4936
|
+
}]),
|
|
4643
4937
|
href: __props.tag === "a" ? __props.href : void 0
|
|
4644
4938
|
}, {
|
|
4645
4939
|
default: withCtx(() => [createElementVNode("div", {
|
|
@@ -4650,20 +4944,20 @@ var _sfc_main$2 = {
|
|
|
4650
4944
|
src: __props.cover,
|
|
4651
4945
|
alt: __props.title,
|
|
4652
4946
|
loading: "lazy"
|
|
4653
|
-
}, null, 8, _hoisted_1$
|
|
4947
|
+
}, null, 8, _hoisted_1$15)) : __props.icon ? (openBlock(), createBlock(_sfc_main$24, {
|
|
4654
4948
|
key: 1,
|
|
4655
4949
|
name: __props.icon,
|
|
4656
4950
|
size: 28,
|
|
4657
4951
|
class: "ew-article-card__cover-icon"
|
|
4658
|
-
}, null, 8, ["name"])) : createCommentVNode("", true)], 4), createElementVNode("div", _hoisted_2$
|
|
4659
|
-
createElementVNode("div", _hoisted_3$
|
|
4952
|
+
}, null, 8, ["name"])) : createCommentVNode("", true)], 4), createElementVNode("div", _hoisted_2$14, [
|
|
4953
|
+
createElementVNode("div", _hoisted_3$10, [__props.date ? (openBlock(), createElementBlock("span", _hoisted_4$10, toDisplayString(__props.date), 1)) : createCommentVNode("", true), (openBlock(true), createElementBlock(Fragment, null, renderList(__props.tags, (t) => {
|
|
4660
4954
|
return openBlock(), createElementBlock("span", {
|
|
4661
4955
|
key: t,
|
|
4662
4956
|
class: "ew-article-card__tag"
|
|
4663
4957
|
}, toDisplayString(t), 1);
|
|
4664
4958
|
}), 128))]),
|
|
4665
|
-
createElementVNode("h4", _hoisted_5$
|
|
4666
|
-
__props.excerpt || _ctx.$slots.excerpt ? (openBlock(), createElementBlock("p", _hoisted_6$
|
|
4959
|
+
createElementVNode("h4", _hoisted_5$8, [renderSlot(_ctx.$slots, "title", {}, () => [createTextVNode(toDisplayString(__props.title), 1)])]),
|
|
4960
|
+
__props.excerpt || _ctx.$slots.excerpt ? (openBlock(), createElementBlock("p", _hoisted_6$4, [renderSlot(_ctx.$slots, "excerpt", {}, () => [createTextVNode(toDisplayString(__props.excerpt), 1)])])) : createCommentVNode("", true)
|
|
4667
4961
|
])]),
|
|
4668
4962
|
_: 3
|
|
4669
4963
|
}, 8, ["class", "href"]);
|
|
@@ -4672,26 +4966,31 @@ var _sfc_main$2 = {
|
|
|
4672
4966
|
};
|
|
4673
4967
|
//#endregion
|
|
4674
4968
|
//#region src/components/profile-card/index.vue
|
|
4675
|
-
var _hoisted_1$
|
|
4676
|
-
var _hoisted_2$
|
|
4969
|
+
var _hoisted_1$14 = { class: "ew-profile-card__name" };
|
|
4970
|
+
var _hoisted_2$13 = {
|
|
4677
4971
|
key: 0,
|
|
4678
4972
|
class: "ew-profile-card__role"
|
|
4679
4973
|
};
|
|
4680
|
-
var _hoisted_3$
|
|
4974
|
+
var _hoisted_3$9 = {
|
|
4681
4975
|
key: 1,
|
|
4682
4976
|
class: "ew-profile-card__bio"
|
|
4683
4977
|
};
|
|
4684
|
-
var _hoisted_4$
|
|
4978
|
+
var _hoisted_4$9 = {
|
|
4685
4979
|
key: 2,
|
|
4686
4980
|
class: "ew-profile-card__stats"
|
|
4687
4981
|
};
|
|
4688
|
-
var _hoisted_5$
|
|
4982
|
+
var _hoisted_5$7 = {
|
|
4689
4983
|
key: 3,
|
|
4690
4984
|
class: "ew-profile-card__social"
|
|
4691
4985
|
};
|
|
4692
|
-
var _sfc_main$
|
|
4986
|
+
var _sfc_main$39 = {
|
|
4693
4987
|
__name: "index",
|
|
4694
4988
|
props: {
|
|
4989
|
+
/** 磨砂玻璃质感:true 强制开 / false 强制关 / 缺省跟随全局(ConfigProvider 的 glass) */
|
|
4990
|
+
glass: {
|
|
4991
|
+
type: Boolean,
|
|
4992
|
+
default: void 0
|
|
4993
|
+
},
|
|
4695
4994
|
name: {
|
|
4696
4995
|
type: String,
|
|
4697
4996
|
default: ""
|
|
@@ -4725,8 +5024,12 @@ var _sfc_main$33 = {
|
|
|
4725
5024
|
* 头像 + 姓名 + 角色 + 简介 + 可选数据行与社交链接行
|
|
4726
5025
|
*/
|
|
4727
5026
|
return (_ctx, _cache) => {
|
|
4728
|
-
return openBlock(), createElementBlock("div", { class: normalizeClass(["ew-profile-card", {
|
|
4729
|
-
|
|
5027
|
+
return openBlock(), createElementBlock("div", { class: normalizeClass(["ew-profile-card", {
|
|
5028
|
+
"is-plain": __props.plain,
|
|
5029
|
+
"is-glass": __props.glass === true,
|
|
5030
|
+
"no-glass": __props.glass === false
|
|
5031
|
+
}]) }, [
|
|
5032
|
+
createVNode(_sfc_main$5, {
|
|
4730
5033
|
src: __props.avatar,
|
|
4731
5034
|
name: __props.name,
|
|
4732
5035
|
size: __props.avatarSize,
|
|
@@ -4736,17 +5039,592 @@ var _sfc_main$33 = {
|
|
|
4736
5039
|
"name",
|
|
4737
5040
|
"size"
|
|
4738
5041
|
]),
|
|
4739
|
-
createElementVNode("h3", _hoisted_1$
|
|
4740
|
-
__props.role || _ctx.$slots.role ? (openBlock(), createElementBlock("p", _hoisted_2$
|
|
4741
|
-
__props.bio || _ctx.$slots.bio ? (openBlock(), createElementBlock("p", _hoisted_3$
|
|
4742
|
-
_ctx.$slots.stats ? (openBlock(), createElementBlock("div", _hoisted_4$
|
|
4743
|
-
_ctx.$slots.social ? (openBlock(), createElementBlock("div", _hoisted_5$
|
|
5042
|
+
createElementVNode("h3", _hoisted_1$14, [renderSlot(_ctx.$slots, "name", {}, () => [createTextVNode(toDisplayString(__props.name), 1)])]),
|
|
5043
|
+
__props.role || _ctx.$slots.role ? (openBlock(), createElementBlock("p", _hoisted_2$13, [renderSlot(_ctx.$slots, "role", {}, () => [createTextVNode(toDisplayString(__props.role), 1)])])) : createCommentVNode("", true),
|
|
5044
|
+
__props.bio || _ctx.$slots.bio ? (openBlock(), createElementBlock("p", _hoisted_3$9, [renderSlot(_ctx.$slots, "bio", {}, () => [createTextVNode(toDisplayString(__props.bio), 1)])])) : createCommentVNode("", true),
|
|
5045
|
+
_ctx.$slots.stats ? (openBlock(), createElementBlock("div", _hoisted_4$9, [renderSlot(_ctx.$slots, "stats")])) : createCommentVNode("", true),
|
|
5046
|
+
_ctx.$slots.social ? (openBlock(), createElementBlock("div", _hoisted_5$7, [renderSlot(_ctx.$slots, "social")])) : createCommentVNode("", true)
|
|
4744
5047
|
], 2);
|
|
4745
5048
|
};
|
|
4746
5049
|
}
|
|
4747
5050
|
};
|
|
4748
5051
|
//#endregion
|
|
4749
|
-
//#region src/components/
|
|
5052
|
+
//#region src/components/article/index.vue
|
|
5053
|
+
var _hoisted_1$13 = { class: "ew-article" };
|
|
5054
|
+
var _hoisted_2$12 = { class: "ew-article__header" };
|
|
5055
|
+
var _hoisted_3$8 = {
|
|
5056
|
+
key: 0,
|
|
5057
|
+
class: "ew-article__eyebrow"
|
|
5058
|
+
};
|
|
5059
|
+
var _hoisted_4$8 = { class: "ew-article__title" };
|
|
5060
|
+
var _hoisted_5$6 = {
|
|
5061
|
+
key: 1,
|
|
5062
|
+
class: "ew-article__description"
|
|
5063
|
+
};
|
|
5064
|
+
var _hoisted_6$3 = {
|
|
5065
|
+
key: 2,
|
|
5066
|
+
class: "ew-article__meta"
|
|
5067
|
+
};
|
|
5068
|
+
var _hoisted_7$2 = {
|
|
5069
|
+
key: 1,
|
|
5070
|
+
class: "ew-article__author"
|
|
5071
|
+
};
|
|
5072
|
+
var _hoisted_8$1 = {
|
|
5073
|
+
key: 2,
|
|
5074
|
+
class: "ew-article__date"
|
|
5075
|
+
};
|
|
5076
|
+
var _hoisted_9 = {
|
|
5077
|
+
key: 3,
|
|
5078
|
+
class: "ew-article__read"
|
|
5079
|
+
};
|
|
5080
|
+
var _hoisted_10 = { class: "ew-article__body" };
|
|
5081
|
+
var _hoisted_11 = {
|
|
5082
|
+
key: 0,
|
|
5083
|
+
class: "ew-article__footer"
|
|
5084
|
+
};
|
|
5085
|
+
var _sfc_main$2 = {
|
|
5086
|
+
__name: "index",
|
|
5087
|
+
props: {
|
|
5088
|
+
/** 标题 */
|
|
5089
|
+
title: {
|
|
5090
|
+
type: String,
|
|
5091
|
+
default: ""
|
|
5092
|
+
},
|
|
5093
|
+
/** 摘要(标题下的导语) */
|
|
5094
|
+
description: {
|
|
5095
|
+
type: String,
|
|
5096
|
+
default: ""
|
|
5097
|
+
},
|
|
5098
|
+
/** 眉题(小 uppercase 字距标签) */
|
|
5099
|
+
eyebrow: {
|
|
5100
|
+
type: String,
|
|
5101
|
+
default: ""
|
|
5102
|
+
},
|
|
5103
|
+
author: {
|
|
5104
|
+
type: String,
|
|
5105
|
+
default: ""
|
|
5106
|
+
},
|
|
5107
|
+
avatar: {
|
|
5108
|
+
type: String,
|
|
5109
|
+
default: ""
|
|
5110
|
+
},
|
|
5111
|
+
date: {
|
|
5112
|
+
type: String,
|
|
5113
|
+
default: ""
|
|
5114
|
+
},
|
|
5115
|
+
/** 阅读时长(如 '8 min') */
|
|
5116
|
+
readTime: {
|
|
5117
|
+
type: String,
|
|
5118
|
+
default: ""
|
|
5119
|
+
},
|
|
5120
|
+
tags: {
|
|
5121
|
+
type: Array,
|
|
5122
|
+
default: () => []
|
|
5123
|
+
}
|
|
5124
|
+
},
|
|
5125
|
+
setup(__props) {
|
|
5126
|
+
/**
|
|
5127
|
+
* EwArticle — 文章内容(长文阅读排版)
|
|
5128
|
+
* 页头:眉题 + 标题 + 摘要 + 元信息行(头像/作者/日期/阅读时长/标签);
|
|
5129
|
+
* 正文插槽自带阅读排版(标题刻度、1.85 行高、引用块、列表、行内代码、图片圆角),
|
|
5130
|
+
* 排版全部以 .ew-article__body 作用域类收敛,不外溢。
|
|
5131
|
+
*/
|
|
5132
|
+
return (_ctx, _cache) => {
|
|
5133
|
+
return openBlock(), createElementBlock("article", _hoisted_1$13, [
|
|
5134
|
+
createElementVNode("header", _hoisted_2$12, [
|
|
5135
|
+
__props.eyebrow || _ctx.$slots.eyebrow ? (openBlock(), createElementBlock("p", _hoisted_3$8, [renderSlot(_ctx.$slots, "eyebrow", {}, () => [createTextVNode(toDisplayString(__props.eyebrow), 1)])])) : createCommentVNode("", true),
|
|
5136
|
+
createElementVNode("h1", _hoisted_4$8, [renderSlot(_ctx.$slots, "title", {}, () => [createTextVNode(toDisplayString(__props.title), 1)])]),
|
|
5137
|
+
__props.description || _ctx.$slots.description ? (openBlock(), createElementBlock("p", _hoisted_5$6, [renderSlot(_ctx.$slots, "description", {}, () => [createTextVNode(toDisplayString(__props.description), 1)])])) : createCommentVNode("", true),
|
|
5138
|
+
__props.author || __props.date || __props.readTime || __props.tags.length ? (openBlock(), createElementBlock("div", _hoisted_6$3, [
|
|
5139
|
+
__props.author && __props.avatar ? (openBlock(), createBlock(_sfc_main$5, {
|
|
5140
|
+
key: 0,
|
|
5141
|
+
src: __props.avatar,
|
|
5142
|
+
name: __props.author,
|
|
5143
|
+
size: 28,
|
|
5144
|
+
class: "ew-article__avatar"
|
|
5145
|
+
}, null, 8, ["src", "name"])) : createCommentVNode("", true),
|
|
5146
|
+
__props.author ? (openBlock(), createElementBlock("span", _hoisted_7$2, toDisplayString(__props.author), 1)) : createCommentVNode("", true),
|
|
5147
|
+
__props.date ? (openBlock(), createElementBlock("span", _hoisted_8$1, toDisplayString(__props.date), 1)) : createCommentVNode("", true),
|
|
5148
|
+
__props.readTime ? (openBlock(), createElementBlock("span", _hoisted_9, toDisplayString(__props.readTime), 1)) : createCommentVNode("", true),
|
|
5149
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(__props.tags, (tag) => {
|
|
5150
|
+
return openBlock(), createElementBlock("span", {
|
|
5151
|
+
key: tag,
|
|
5152
|
+
class: "ew-article__tag"
|
|
5153
|
+
}, toDisplayString(tag), 1);
|
|
5154
|
+
}), 128))
|
|
5155
|
+
])) : createCommentVNode("", true)
|
|
5156
|
+
]),
|
|
5157
|
+
createElementVNode("div", _hoisted_10, [renderSlot(_ctx.$slots, "default")]),
|
|
5158
|
+
_ctx.$slots.footer ? (openBlock(), createElementBlock("footer", _hoisted_11, [renderSlot(_ctx.$slots, "footer")])) : createCommentVNode("", true)
|
|
5159
|
+
]);
|
|
5160
|
+
};
|
|
5161
|
+
}
|
|
5162
|
+
};
|
|
5163
|
+
//#endregion
|
|
5164
|
+
//#region src/components/exec-card/index.vue
|
|
5165
|
+
var _hoisted_1$12 = { class: "ew-exec-card__stage" };
|
|
5166
|
+
var _hoisted_2$11 = ["src", "alt"];
|
|
5167
|
+
var _hoisted_3$7 = ["aria-label"];
|
|
5168
|
+
var _hoisted_4$7 = { class: "ew-exec-card__body" };
|
|
5169
|
+
var _hoisted_5$5 = { class: "ew-exec-card__name" };
|
|
5170
|
+
var _hoisted_6$2 = {
|
|
5171
|
+
key: 0,
|
|
5172
|
+
class: "ew-exec-card__role"
|
|
5173
|
+
};
|
|
5174
|
+
var _hoisted_7$1 = {
|
|
5175
|
+
key: 1,
|
|
5176
|
+
class: "ew-exec-card__description"
|
|
5177
|
+
};
|
|
5178
|
+
var _hoisted_8 = {
|
|
5179
|
+
key: 2,
|
|
5180
|
+
class: "ew-exec-card__actions"
|
|
5181
|
+
};
|
|
5182
|
+
var _sfc_main$18 = {
|
|
5183
|
+
__name: "index",
|
|
5184
|
+
props: {
|
|
5185
|
+
/** 磨砂玻璃质感:true 强制开 / false 强制关 / 缺省跟随全局(ConfigProvider 的 glass) */
|
|
5186
|
+
glass: {
|
|
5187
|
+
type: Boolean,
|
|
5188
|
+
default: void 0
|
|
5189
|
+
},
|
|
5190
|
+
name: {
|
|
5191
|
+
type: String,
|
|
5192
|
+
default: ""
|
|
5193
|
+
},
|
|
5194
|
+
/** 职务/头衔(展示型小标签排版) */
|
|
5195
|
+
role: {
|
|
5196
|
+
type: String,
|
|
5197
|
+
default: ""
|
|
5198
|
+
},
|
|
5199
|
+
description: {
|
|
5200
|
+
type: String,
|
|
5201
|
+
default: ""
|
|
5202
|
+
},
|
|
5203
|
+
/** 人物半身图(建议透明背景 PNG,人物居中、底部裁切) */
|
|
5204
|
+
image: {
|
|
5205
|
+
type: String,
|
|
5206
|
+
default: ""
|
|
5207
|
+
},
|
|
5208
|
+
/** 人物舞台高度(px) */
|
|
5209
|
+
portraitHeight: {
|
|
5210
|
+
type: Number,
|
|
5211
|
+
default: 190
|
|
5212
|
+
}
|
|
5213
|
+
},
|
|
5214
|
+
setup(__props) {
|
|
5215
|
+
/**
|
|
5216
|
+
* EwExecCard — 高管/团队介绍卡
|
|
5217
|
+
* 为「透明背景半身人物图」设计:人物图锚定在渐变舞台底边,像从卡片里走出来;
|
|
5218
|
+
* 未传 image 时渲染内置人物剪影占位。展示型 title 用强字距展示体。
|
|
5219
|
+
* props:name / role / description / image / portraitHeight(舞台高度,px)
|
|
5220
|
+
*/
|
|
5221
|
+
return (_ctx, _cache) => {
|
|
5222
|
+
return openBlock(), createElementBlock("div", {
|
|
5223
|
+
class: normalizeClass(["ew-exec-card", {
|
|
5224
|
+
"is-glass": __props.glass === true,
|
|
5225
|
+
"no-glass": __props.glass === false
|
|
5226
|
+
}]),
|
|
5227
|
+
style: normalizeStyle({ "--ew-exec-portrait-h": `${__props.portraitHeight}px` })
|
|
5228
|
+
}, [createElementVNode("div", _hoisted_1$12, [__props.image ? (openBlock(), createElementBlock("img", {
|
|
5229
|
+
key: 0,
|
|
5230
|
+
src: __props.image,
|
|
5231
|
+
alt: __props.name,
|
|
5232
|
+
class: "ew-exec-card__portrait",
|
|
5233
|
+
loading: "lazy"
|
|
5234
|
+
}, null, 8, _hoisted_2$11)) : (openBlock(), createElementBlock("svg", {
|
|
5235
|
+
key: 1,
|
|
5236
|
+
class: "ew-exec-card__portrait",
|
|
5237
|
+
viewBox: "0 0 240 200",
|
|
5238
|
+
role: "img",
|
|
5239
|
+
"aria-label": __props.name
|
|
5240
|
+
}, [..._cache[0] || (_cache[0] = [createElementVNode("circle", {
|
|
5241
|
+
cx: "120",
|
|
5242
|
+
cy: "86",
|
|
5243
|
+
r: "44",
|
|
5244
|
+
fill: "currentColor",
|
|
5245
|
+
opacity: "0.35"
|
|
5246
|
+
}, null, -1), createElementVNode("path", {
|
|
5247
|
+
d: "M40 200c0-44 36-72 80-72s80 28 80 72",
|
|
5248
|
+
fill: "currentColor",
|
|
5249
|
+
opacity: "0.35"
|
|
5250
|
+
}, null, -1)])], 8, _hoisted_3$7))]), createElementVNode("div", _hoisted_4$7, [
|
|
5251
|
+
createElementVNode("h3", _hoisted_5$5, [renderSlot(_ctx.$slots, "name", {}, () => [createTextVNode(toDisplayString(__props.name), 1)])]),
|
|
5252
|
+
__props.role || _ctx.$slots.role ? (openBlock(), createElementBlock("p", _hoisted_6$2, [renderSlot(_ctx.$slots, "role", {}, () => [createTextVNode(toDisplayString(__props.role), 1)])])) : createCommentVNode("", true),
|
|
5253
|
+
__props.description || _ctx.$slots.default ? (openBlock(), createElementBlock("p", _hoisted_7$1, [renderSlot(_ctx.$slots, "default", {}, () => [createTextVNode(toDisplayString(__props.description), 1)])])) : createCommentVNode("", true),
|
|
5254
|
+
_ctx.$slots.actions ? (openBlock(), createElementBlock("div", _hoisted_8, [renderSlot(_ctx.$slots, "actions")])) : createCommentVNode("", true)
|
|
5255
|
+
])], 6);
|
|
5256
|
+
};
|
|
5257
|
+
}
|
|
5258
|
+
};
|
|
5259
|
+
//#endregion
|
|
5260
|
+
//#region src/components/image-preview/index.vue
|
|
5261
|
+
var _hoisted_1$11 = ["aria-label"];
|
|
5262
|
+
var _hoisted_2$10 = { class: "ew-image-preview__stage" };
|
|
5263
|
+
var _hoisted_3$6 = ["src", "alt"];
|
|
5264
|
+
var _hoisted_4$6 = {
|
|
5265
|
+
key: 0,
|
|
5266
|
+
class: "ew-image-preview__caption"
|
|
5267
|
+
};
|
|
5268
|
+
var _hoisted_5$4 = { key: 0 };
|
|
5269
|
+
var _sfc_main$27 = {
|
|
5270
|
+
__name: "index",
|
|
5271
|
+
props: {
|
|
5272
|
+
/** 可见性(v-model) */
|
|
5273
|
+
modelValue: {
|
|
5274
|
+
type: Boolean,
|
|
5275
|
+
default: false
|
|
5276
|
+
},
|
|
5277
|
+
/** 图片列表:url 字符串或 { src, alt } */
|
|
5278
|
+
images: {
|
|
5279
|
+
type: Array,
|
|
5280
|
+
default: () => []
|
|
5281
|
+
},
|
|
5282
|
+
/** 当前下标(v-model:index) */
|
|
5283
|
+
index: {
|
|
5284
|
+
type: Number,
|
|
5285
|
+
default: 0
|
|
5286
|
+
},
|
|
5287
|
+
/** Esc 关闭 */
|
|
5288
|
+
escClose: {
|
|
5289
|
+
type: Boolean,
|
|
5290
|
+
default: true
|
|
5291
|
+
}
|
|
5292
|
+
},
|
|
5293
|
+
emits: [
|
|
5294
|
+
"update:modelValue",
|
|
5295
|
+
"update:index",
|
|
5296
|
+
"open",
|
|
5297
|
+
"close",
|
|
5298
|
+
"change"
|
|
5299
|
+
],
|
|
5300
|
+
setup(__props, { emit: __emit }) {
|
|
5301
|
+
/**
|
|
5302
|
+
* EwImagePreview — 图片预览灯箱
|
|
5303
|
+
* 全屏遮罩 + 居中大图;Esc / 点击遮罩 / 关闭按钮关闭;
|
|
5304
|
+
* 多图时支持左右箭头与键盘 ← → 切换,右下角显示计数;
|
|
5305
|
+
* 打开期间锁定页面滚动,关闭后恢复。
|
|
5306
|
+
* v-model(可见) + v-model:index(当前下标);images: [{ src, alt }] 或 url 字符串
|
|
5307
|
+
*/
|
|
5308
|
+
const props = __props;
|
|
5309
|
+
const emit = __emit;
|
|
5310
|
+
const count = computed(() => props.images.length);
|
|
5311
|
+
const visible = computed(() => props.modelValue);
|
|
5312
|
+
const normalized = computed(() => props.images.map((img) => typeof img === "string" ? {
|
|
5313
|
+
src: img,
|
|
5314
|
+
alt: ""
|
|
5315
|
+
} : img));
|
|
5316
|
+
const current = computed(() => normalized.value[props.index]);
|
|
5317
|
+
function close() {
|
|
5318
|
+
emit("update:modelValue", false);
|
|
5319
|
+
emit("close");
|
|
5320
|
+
}
|
|
5321
|
+
function step(dir) {
|
|
5322
|
+
if (count.value < 2) return;
|
|
5323
|
+
const next = ((props.index + dir) % count.value + count.value) % count.value;
|
|
5324
|
+
emit("update:index", next);
|
|
5325
|
+
emit("change", next);
|
|
5326
|
+
}
|
|
5327
|
+
function onKeydown(e) {
|
|
5328
|
+
if (e.key === "Escape" && props.escClose) close();
|
|
5329
|
+
else if (e.key === "ArrowLeft") step(-1);
|
|
5330
|
+
else if (e.key === "ArrowRight") step(1);
|
|
5331
|
+
}
|
|
5332
|
+
watch(() => props.modelValue, (visible) => {
|
|
5333
|
+
if (typeof document === "undefined") return;
|
|
5334
|
+
if (visible) {
|
|
5335
|
+
document.addEventListener("keydown", onKeydown);
|
|
5336
|
+
document.body.style.overflow = "hidden";
|
|
5337
|
+
emit("open");
|
|
5338
|
+
} else {
|
|
5339
|
+
document.removeEventListener("keydown", onKeydown);
|
|
5340
|
+
document.body.style.overflow = "";
|
|
5341
|
+
}
|
|
5342
|
+
});
|
|
5343
|
+
onBeforeUnmount(() => {
|
|
5344
|
+
if (typeof document === "undefined") return;
|
|
5345
|
+
document.removeEventListener("keydown", onKeydown);
|
|
5346
|
+
document.body.style.overflow = "";
|
|
5347
|
+
});
|
|
5348
|
+
return (_ctx, _cache) => {
|
|
5349
|
+
return openBlock(), createBlock(Teleport, { to: "body" }, [createVNode(Transition, { name: "ew-image-preview" }, {
|
|
5350
|
+
default: withCtx(() => [visible.value ? (openBlock(), createElementBlock("div", {
|
|
5351
|
+
key: 0,
|
|
5352
|
+
class: "ew-image-preview",
|
|
5353
|
+
role: "dialog",
|
|
5354
|
+
"aria-modal": "true",
|
|
5355
|
+
"aria-label": `图片预览(${__props.index + 1} / ${count.value})`,
|
|
5356
|
+
onClick: withModifiers(close, ["self"])
|
|
5357
|
+
}, [
|
|
5358
|
+
createElementVNode("button", {
|
|
5359
|
+
type: "button",
|
|
5360
|
+
class: "ew-image-preview__close",
|
|
5361
|
+
"aria-label": "关闭预览",
|
|
5362
|
+
onClick: close
|
|
5363
|
+
}, [createVNode(_sfc_main$24, {
|
|
5364
|
+
name: "close",
|
|
5365
|
+
size: 16
|
|
5366
|
+
})]),
|
|
5367
|
+
count.value > 1 ? (openBlock(), createElementBlock("button", {
|
|
5368
|
+
key: 0,
|
|
5369
|
+
type: "button",
|
|
5370
|
+
class: "ew-image-preview__arrow is-prev",
|
|
5371
|
+
"aria-label": "上一张",
|
|
5372
|
+
onClick: _cache[0] || (_cache[0] = withModifiers(($event) => step(-1), ["stop"]))
|
|
5373
|
+
}, [createVNode(_sfc_main$24, {
|
|
5374
|
+
name: "chevron-left",
|
|
5375
|
+
size: 20
|
|
5376
|
+
})])) : createCommentVNode("", true),
|
|
5377
|
+
createElementVNode("figure", _hoisted_2$10, [createElementVNode("img", {
|
|
5378
|
+
src: current.value?.src,
|
|
5379
|
+
alt: current.value?.alt || "",
|
|
5380
|
+
class: "ew-image-preview__img"
|
|
5381
|
+
}, null, 8, _hoisted_3$6), current.value?.alt || count.value > 1 ? (openBlock(), createElementBlock("figcaption", _hoisted_4$6, [createElementVNode("span", null, toDisplayString(current.value?.alt), 1), count.value > 1 ? (openBlock(), createElementBlock("span", _hoisted_5$4, toDisplayString(__props.index + 1) + " / " + toDisplayString(count.value), 1)) : createCommentVNode("", true)])) : createCommentVNode("", true)]),
|
|
5382
|
+
count.value > 1 ? (openBlock(), createElementBlock("button", {
|
|
5383
|
+
key: 1,
|
|
5384
|
+
type: "button",
|
|
5385
|
+
class: "ew-image-preview__arrow is-next",
|
|
5386
|
+
"aria-label": "下一张",
|
|
5387
|
+
onClick: _cache[1] || (_cache[1] = withModifiers(($event) => step(1), ["stop"]))
|
|
5388
|
+
}, [createVNode(_sfc_main$24, {
|
|
5389
|
+
name: "chevron-right",
|
|
5390
|
+
size: 20
|
|
5391
|
+
})])) : createCommentVNode("", true)
|
|
5392
|
+
], 8, _hoisted_1$11)) : createCommentVNode("", true)]),
|
|
5393
|
+
_: 1
|
|
5394
|
+
})]);
|
|
5395
|
+
};
|
|
5396
|
+
}
|
|
5397
|
+
};
|
|
5398
|
+
//#endregion
|
|
5399
|
+
//#region src/components/image-wall/index.vue
|
|
5400
|
+
var _hoisted_1$10 = ["aria-label", "onClick"];
|
|
5401
|
+
var _hoisted_2$9 = ["src", "alt"];
|
|
5402
|
+
var _sfc_main$28 = {
|
|
5403
|
+
__name: "index",
|
|
5404
|
+
props: {
|
|
5405
|
+
/** 图片列表:url 字符串或 { src, alt } */
|
|
5406
|
+
images: {
|
|
5407
|
+
type: Array,
|
|
5408
|
+
default: () => []
|
|
5409
|
+
},
|
|
5410
|
+
/** 列数 */
|
|
5411
|
+
columns: {
|
|
5412
|
+
type: Number,
|
|
5413
|
+
default: 3
|
|
5414
|
+
},
|
|
5415
|
+
/** 间距(px) */
|
|
5416
|
+
gap: {
|
|
5417
|
+
type: Number,
|
|
5418
|
+
default: 14
|
|
5419
|
+
},
|
|
5420
|
+
/** 点击图片是否打开预览(false 时仅派发 select 事件) */
|
|
5421
|
+
preview: {
|
|
5422
|
+
type: Boolean,
|
|
5423
|
+
default: true
|
|
5424
|
+
},
|
|
5425
|
+
/** 网格圆角(px) */
|
|
5426
|
+
radius: {
|
|
5427
|
+
type: Number,
|
|
5428
|
+
default: 12
|
|
5429
|
+
}
|
|
5430
|
+
},
|
|
5431
|
+
emits: ["select"],
|
|
5432
|
+
setup(__props, { emit: __emit }) {
|
|
5433
|
+
/**
|
|
5434
|
+
* EwImageWall — 图片墙
|
|
5435
|
+
* 均匀网格图片墙,点击任意图片打开 EwImagePreview 灯箱预览(可关)。
|
|
5436
|
+
* images 项:字符串 url 或 { src, alt };columns 列数;preview=false 时仅发出 select 事件。
|
|
5437
|
+
*/
|
|
5438
|
+
const props = __props;
|
|
5439
|
+
const emit = __emit;
|
|
5440
|
+
const previewVisible = ref(false);
|
|
5441
|
+
const previewIndex = ref(0);
|
|
5442
|
+
const normalized = computed(() => props.images.map((img) => typeof img === "string" ? {
|
|
5443
|
+
src: img,
|
|
5444
|
+
alt: ""
|
|
5445
|
+
} : img));
|
|
5446
|
+
const gridStyle = computed(() => ({
|
|
5447
|
+
gridTemplateColumns: `repeat(${props.columns}, 1fr)`,
|
|
5448
|
+
gap: `${props.gap}px`
|
|
5449
|
+
}));
|
|
5450
|
+
function open(i) {
|
|
5451
|
+
previewIndex.value = i;
|
|
5452
|
+
emit("select", normalized.value[i], i);
|
|
5453
|
+
if (props.preview) previewVisible.value = true;
|
|
5454
|
+
}
|
|
5455
|
+
return (_ctx, _cache) => {
|
|
5456
|
+
return openBlock(), createElementBlock("div", {
|
|
5457
|
+
class: "ew-image-wall",
|
|
5458
|
+
style: normalizeStyle(gridStyle.value)
|
|
5459
|
+
}, [(openBlock(true), createElementBlock(Fragment, null, renderList(normalized.value, (img, i) => {
|
|
5460
|
+
return openBlock(), createElementBlock("button", {
|
|
5461
|
+
key: i,
|
|
5462
|
+
type: "button",
|
|
5463
|
+
class: "ew-image-wall__item",
|
|
5464
|
+
style: normalizeStyle({ "--ew-image-wall-radius": `${__props.radius}px` }),
|
|
5465
|
+
"aria-label": img.alt || `查看第 ${i + 1} 张图片`,
|
|
5466
|
+
onClick: ($event) => open(i)
|
|
5467
|
+
}, [createElementVNode("img", {
|
|
5468
|
+
src: img.src,
|
|
5469
|
+
alt: img.alt || "",
|
|
5470
|
+
loading: "lazy"
|
|
5471
|
+
}, null, 8, _hoisted_2$9)], 12, _hoisted_1$10);
|
|
5472
|
+
}), 128)), __props.preview ? (openBlock(), createBlock(_sfc_main$27, {
|
|
5473
|
+
key: 0,
|
|
5474
|
+
modelValue: previewVisible.value,
|
|
5475
|
+
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => previewVisible.value = $event),
|
|
5476
|
+
index: previewIndex.value,
|
|
5477
|
+
"onUpdate:index": _cache[1] || (_cache[1] = ($event) => previewIndex.value = $event),
|
|
5478
|
+
images: normalized.value
|
|
5479
|
+
}, null, 8, [
|
|
5480
|
+
"modelValue",
|
|
5481
|
+
"index",
|
|
5482
|
+
"images"
|
|
5483
|
+
])) : createCommentVNode("", true)], 4);
|
|
5484
|
+
};
|
|
5485
|
+
}
|
|
5486
|
+
};
|
|
5487
|
+
//#endregion
|
|
5488
|
+
//#region src/components/modal/index.vue
|
|
5489
|
+
var _hoisted_1$9 = ["aria-label"];
|
|
5490
|
+
var _hoisted_2$8 = {
|
|
5491
|
+
key: 0,
|
|
5492
|
+
class: "ew-modal__header"
|
|
5493
|
+
};
|
|
5494
|
+
var _hoisted_3$5 = { class: "ew-modal__title" };
|
|
5495
|
+
var _hoisted_4$5 = { class: "ew-modal__body" };
|
|
5496
|
+
var _hoisted_5$3 = {
|
|
5497
|
+
key: 1,
|
|
5498
|
+
class: "ew-modal__footer"
|
|
5499
|
+
};
|
|
5500
|
+
var _sfc_main$34 = {
|
|
5501
|
+
__name: "index",
|
|
5502
|
+
props: {
|
|
5503
|
+
/** 可见性(v-model) */
|
|
5504
|
+
modelValue: {
|
|
5505
|
+
type: Boolean,
|
|
5506
|
+
default: false
|
|
5507
|
+
},
|
|
5508
|
+
title: {
|
|
5509
|
+
type: String,
|
|
5510
|
+
default: ""
|
|
5511
|
+
},
|
|
5512
|
+
/** 面板宽度(数字按 px) */
|
|
5513
|
+
width: {
|
|
5514
|
+
type: [String, Number],
|
|
5515
|
+
default: "560px"
|
|
5516
|
+
},
|
|
5517
|
+
/** 点击遮罩关闭 */
|
|
5518
|
+
overlayClose: {
|
|
5519
|
+
type: Boolean,
|
|
5520
|
+
default: true
|
|
5521
|
+
},
|
|
5522
|
+
/** Esc 关闭 */
|
|
5523
|
+
escClose: {
|
|
5524
|
+
type: Boolean,
|
|
5525
|
+
default: true
|
|
5526
|
+
},
|
|
5527
|
+
/** 打开期间锁定页面滚动 */
|
|
5528
|
+
lockScroll: {
|
|
5529
|
+
type: Boolean,
|
|
5530
|
+
default: true
|
|
5531
|
+
},
|
|
5532
|
+
/** 右上角关闭按钮 */
|
|
5533
|
+
showClose: {
|
|
5534
|
+
type: Boolean,
|
|
5535
|
+
default: true
|
|
5536
|
+
}
|
|
5537
|
+
},
|
|
5538
|
+
emits: [
|
|
5539
|
+
"update:modelValue",
|
|
5540
|
+
"open",
|
|
5541
|
+
"opened",
|
|
5542
|
+
"close",
|
|
5543
|
+
"closed"
|
|
5544
|
+
],
|
|
5545
|
+
setup(__props, { emit: __emit }) {
|
|
5546
|
+
/**
|
|
5547
|
+
* EwModal — 弹出层
|
|
5548
|
+
* 遮罩 + 居中面板;Teleport 到 body;Esc / 遮罩点击 / 关闭按钮关闭(均可配);
|
|
5549
|
+
* 打开期间锁定页面滚动,打开时焦点移入面板、关闭后归还触发元素;
|
|
5550
|
+
* 事件:update:modelValue / open / opened / close / closed。
|
|
5551
|
+
* 典型用法:弹出层 + 表单(邮箱验证、订阅、邀请)。
|
|
5552
|
+
*/
|
|
5553
|
+
const props = __props;
|
|
5554
|
+
const emit = __emit;
|
|
5555
|
+
const panelRef = ref(null);
|
|
5556
|
+
let lastFocused = null;
|
|
5557
|
+
const visible = computed(() => props.modelValue);
|
|
5558
|
+
const panelStyle = computed(() => ({ width: typeof props.width === "number" ? `${props.width}px` : props.width }));
|
|
5559
|
+
function close() {
|
|
5560
|
+
emit("update:modelValue", false);
|
|
5561
|
+
emit("close");
|
|
5562
|
+
}
|
|
5563
|
+
function onOverlayClick() {
|
|
5564
|
+
if (props.overlayClose) close();
|
|
5565
|
+
}
|
|
5566
|
+
function onKeydown(e) {
|
|
5567
|
+
if (e.key === "Escape" && props.escClose) close();
|
|
5568
|
+
}
|
|
5569
|
+
watch(visible, (show) => {
|
|
5570
|
+
if (typeof document === "undefined") return;
|
|
5571
|
+
if (show) {
|
|
5572
|
+
lastFocused = document.activeElement;
|
|
5573
|
+
emit("open");
|
|
5574
|
+
if (props.lockScroll) document.body.style.overflow = "hidden";
|
|
5575
|
+
document.addEventListener("keydown", onKeydown);
|
|
5576
|
+
nextTick(() => panelRef.value?.focus?.());
|
|
5577
|
+
} else {
|
|
5578
|
+
if (props.lockScroll) document.body.style.overflow = "";
|
|
5579
|
+
document.removeEventListener("keydown", onKeydown);
|
|
5580
|
+
nextTick(() => lastFocused?.focus?.());
|
|
5581
|
+
}
|
|
5582
|
+
});
|
|
5583
|
+
onBeforeUnmount(() => {
|
|
5584
|
+
if (typeof document === "undefined") return;
|
|
5585
|
+
document.removeEventListener("keydown", onKeydown);
|
|
5586
|
+
if (props.lockScroll) document.body.style.overflow = "";
|
|
5587
|
+
});
|
|
5588
|
+
return (_ctx, _cache) => {
|
|
5589
|
+
return openBlock(), createBlock(Teleport, { to: "body" }, [createVNode(Transition, {
|
|
5590
|
+
name: "ew-modal",
|
|
5591
|
+
onAfterEnter: _cache[0] || (_cache[0] = ($event) => emit("opened")),
|
|
5592
|
+
onAfterLeave: _cache[1] || (_cache[1] = ($event) => emit("closed"))
|
|
5593
|
+
}, {
|
|
5594
|
+
default: withCtx(() => [visible.value ? (openBlock(), createElementBlock("div", {
|
|
5595
|
+
key: 0,
|
|
5596
|
+
class: "ew-modal",
|
|
5597
|
+
onClick: withModifiers(onOverlayClick, ["self"])
|
|
5598
|
+
}, [createElementVNode("div", {
|
|
5599
|
+
ref_key: "panelRef",
|
|
5600
|
+
ref: panelRef,
|
|
5601
|
+
class: "ew-modal__panel",
|
|
5602
|
+
role: "dialog",
|
|
5603
|
+
"aria-modal": "true",
|
|
5604
|
+
"aria-label": __props.title || "对话框",
|
|
5605
|
+
style: normalizeStyle(panelStyle.value),
|
|
5606
|
+
tabindex: "-1"
|
|
5607
|
+
}, [
|
|
5608
|
+
__props.title || _ctx.$slots.header || __props.showClose ? (openBlock(), createElementBlock("header", _hoisted_2$8, [renderSlot(_ctx.$slots, "header", {}, () => [createElementVNode("h2", _hoisted_3$5, toDisplayString(__props.title), 1)]), __props.showClose ? (openBlock(), createElementBlock("button", {
|
|
5609
|
+
key: 0,
|
|
5610
|
+
type: "button",
|
|
5611
|
+
class: "ew-modal__close",
|
|
5612
|
+
"aria-label": "关闭",
|
|
5613
|
+
onClick: close
|
|
5614
|
+
}, [createVNode(_sfc_main$24, {
|
|
5615
|
+
name: "close",
|
|
5616
|
+
size: 14
|
|
5617
|
+
})])) : createCommentVNode("", true)])) : createCommentVNode("", true),
|
|
5618
|
+
createElementVNode("div", _hoisted_4$5, [renderSlot(_ctx.$slots, "default")]),
|
|
5619
|
+
_ctx.$slots.footer ? (openBlock(), createElementBlock("footer", _hoisted_5$3, [renderSlot(_ctx.$slots, "footer")])) : createCommentVNode("", true)
|
|
5620
|
+
], 12, _hoisted_1$9)])) : createCommentVNode("", true)]),
|
|
5621
|
+
_: 3
|
|
5622
|
+
})]);
|
|
5623
|
+
};
|
|
5624
|
+
}
|
|
5625
|
+
};
|
|
5626
|
+
//#endregion
|
|
5627
|
+
//#region src/components/marquee/index.vue
|
|
4750
5628
|
var _hoisted_1$8 = { class: "ew-marquee__track" };
|
|
4751
5629
|
var _hoisted_2$7 = ["aria-hidden"];
|
|
4752
5630
|
var _hoisted_3$4 = { class: "ew-marquee__group" };
|
|
@@ -4754,7 +5632,7 @@ var _hoisted_4$4 = {
|
|
|
4754
5632
|
class: "ew-marquee__group",
|
|
4755
5633
|
"aria-hidden": "true"
|
|
4756
5634
|
};
|
|
4757
|
-
var _sfc_main$
|
|
5635
|
+
var _sfc_main$33 = {
|
|
4758
5636
|
__name: "index",
|
|
4759
5637
|
props: {
|
|
4760
5638
|
/** 文本模式的词条(传入后若没有默认插槽则启用文本模式) */
|
|
@@ -4831,7 +5709,7 @@ var _sfc_main$28 = {
|
|
|
4831
5709
|
class: "ew-marquee__group",
|
|
4832
5710
|
"aria-hidden": g === 2 ? "true" : void 0
|
|
4833
5711
|
}, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.items, (w, i) => {
|
|
4834
|
-
return openBlock(), createElementBlock(Fragment, { key: i }, [createElementVNode("span", { class: normalizeClass(["ew-marquee__text", { "is-outline": __props.alternateOutline && i % 2 === 1 }]) }, toDisplayString(w), 3), __props.separator ? (openBlock(), createBlock(_sfc_main$
|
|
5712
|
+
return openBlock(), createElementBlock(Fragment, { key: i }, [createElementVNode("span", { class: normalizeClass(["ew-marquee__text", { "is-outline": __props.alternateOutline && i % 2 === 1 }]) }, toDisplayString(w), 3), __props.separator ? (openBlock(), createBlock(_sfc_main$24, {
|
|
4835
5713
|
key: 0,
|
|
4836
5714
|
name: __props.separator,
|
|
4837
5715
|
size: separatorSize.value,
|
|
@@ -4846,6 +5724,66 @@ var _sfc_main$28 = {
|
|
|
4846
5724
|
}
|
|
4847
5725
|
};
|
|
4848
5726
|
//#endregion
|
|
5727
|
+
//#region src/components/border-beam/index.vue
|
|
5728
|
+
var _sfc_main$8 = {
|
|
5729
|
+
__name: "index",
|
|
5730
|
+
props: {
|
|
5731
|
+
/** 光带宽度(px) */
|
|
5732
|
+
width: {
|
|
5733
|
+
type: Number,
|
|
5734
|
+
default: 2
|
|
5735
|
+
},
|
|
5736
|
+
/** 一圈时长(ms,越小越快) */
|
|
5737
|
+
duration: {
|
|
5738
|
+
type: Number,
|
|
5739
|
+
default: 6e3
|
|
5740
|
+
},
|
|
5741
|
+
/** 起始延迟(ms) */
|
|
5742
|
+
delay: {
|
|
5743
|
+
type: Number,
|
|
5744
|
+
default: 0
|
|
5745
|
+
},
|
|
5746
|
+
/** 流光渐变起点色(默认透明,扫到位置时显现) */
|
|
5747
|
+
colorFrom: {
|
|
5748
|
+
type: String,
|
|
5749
|
+
default: "transparent"
|
|
5750
|
+
},
|
|
5751
|
+
/** 流光渐变主色(缺省取 --ew-color-primary) */
|
|
5752
|
+
colorTo: {
|
|
5753
|
+
type: String,
|
|
5754
|
+
default: ""
|
|
5755
|
+
},
|
|
5756
|
+
/** 反向扫动 */
|
|
5757
|
+
reverse: {
|
|
5758
|
+
type: Boolean,
|
|
5759
|
+
default: false
|
|
5760
|
+
}
|
|
5761
|
+
},
|
|
5762
|
+
setup(__props) {
|
|
5763
|
+
/**
|
|
5764
|
+
* EwBorderBeam — 边框流光
|
|
5765
|
+
* 包住任意内容,一道流光沿边框循环扫过(主色渐变,方向/速度/宽度可调)。
|
|
5766
|
+
* 依赖 CSS @property 插值角度;不支持的浏览器自动退化为静态渐变细环。
|
|
5767
|
+
* 圆角跟随宿主:给本组件根元素设置 border-radius 即可(ring 会同步取圆角)。
|
|
5768
|
+
*/
|
|
5769
|
+
const props = __props;
|
|
5770
|
+
const rootStyle = computed(() => ({
|
|
5771
|
+
"--ew-beam-width": `${props.width}px`,
|
|
5772
|
+
"--ew-beam-duration": `${props.duration}ms`,
|
|
5773
|
+
"--ew-beam-delay": `${props.delay}ms`,
|
|
5774
|
+
"--ew-beam-from": props.colorFrom || "transparent",
|
|
5775
|
+
"--ew-beam-to": props.colorTo || "var(--ew-color-primary)",
|
|
5776
|
+
"--ew-beam-direction": props.reverse ? "reverse" : "normal"
|
|
5777
|
+
}));
|
|
5778
|
+
return (_ctx, _cache) => {
|
|
5779
|
+
return openBlock(), createElementBlock("div", {
|
|
5780
|
+
class: "ew-border-beam",
|
|
5781
|
+
style: normalizeStyle(rootStyle.value)
|
|
5782
|
+
}, [renderSlot(_ctx.$slots, "default")], 4);
|
|
5783
|
+
};
|
|
5784
|
+
}
|
|
5785
|
+
};
|
|
5786
|
+
//#endregion
|
|
4849
5787
|
//#region src/components/input/index.vue
|
|
4850
5788
|
var _hoisted_1$7 = [
|
|
4851
5789
|
"value",
|
|
@@ -4857,7 +5795,7 @@ var _hoisted_2$6 = {
|
|
|
4857
5795
|
key: 2,
|
|
4858
5796
|
class: "ew-input__suffix"
|
|
4859
5797
|
};
|
|
4860
|
-
var _sfc_main$
|
|
5798
|
+
var _sfc_main$29 = /*@__PURE__*/ Object.assign({
|
|
4861
5799
|
inheritAttrs: false,
|
|
4862
5800
|
name: "EwInput"
|
|
4863
5801
|
}, {
|
|
@@ -4941,7 +5879,7 @@ var _sfc_main$24 = /*@__PURE__*/ Object.assign({
|
|
|
4941
5879
|
"is-error": __props.error
|
|
4942
5880
|
}
|
|
4943
5881
|
]) }, [
|
|
4944
|
-
__props.icon ? (openBlock(), createBlock(_sfc_main$
|
|
5882
|
+
__props.icon ? (openBlock(), createBlock(_sfc_main$24, {
|
|
4945
5883
|
key: 0,
|
|
4946
5884
|
name: __props.icon,
|
|
4947
5885
|
size: iconSize.value,
|
|
@@ -4961,7 +5899,7 @@ var _sfc_main$24 = /*@__PURE__*/ Object.assign({
|
|
|
4961
5899
|
class: "ew-input__clear",
|
|
4962
5900
|
"aria-label": "清空",
|
|
4963
5901
|
onClick: clear
|
|
4964
|
-
}, [createVNode(_sfc_main$
|
|
5902
|
+
}, [createVNode(_sfc_main$24, {
|
|
4965
5903
|
name: "close",
|
|
4966
5904
|
size: 12
|
|
4967
5905
|
})])) : createCommentVNode("", true),
|
|
@@ -4983,7 +5921,7 @@ var _hoisted_2$5 = {
|
|
|
4983
5921
|
key: 0,
|
|
4984
5922
|
class: "ew-textarea__count"
|
|
4985
5923
|
};
|
|
4986
|
-
var _sfc_main$
|
|
5924
|
+
var _sfc_main$51 = /*@__PURE__*/ Object.assign({
|
|
4987
5925
|
inheritAttrs: false,
|
|
4988
5926
|
name: "EwTextarea"
|
|
4989
5927
|
}, {
|
|
@@ -5070,7 +6008,7 @@ var _hoisted_5$2 = {
|
|
|
5070
6008
|
key: 2,
|
|
5071
6009
|
class: "ew-field__hint"
|
|
5072
6010
|
};
|
|
5073
|
-
var _sfc_main$
|
|
6011
|
+
var _sfc_main$21 = {
|
|
5074
6012
|
__name: "index",
|
|
5075
6013
|
props: {
|
|
5076
6014
|
label: {
|
|
@@ -5135,7 +6073,7 @@ var _hoisted_1$4 = {
|
|
|
5135
6073
|
key: 0,
|
|
5136
6074
|
class: "ew-pull-refresh__spinner"
|
|
5137
6075
|
};
|
|
5138
|
-
var _sfc_main$
|
|
6076
|
+
var _sfc_main$40 = /*@__PURE__*/ Object.assign({ name: "EwPullRefresh" }, {
|
|
5139
6077
|
__name: "index",
|
|
5140
6078
|
props: {
|
|
5141
6079
|
/** 刷新中状态(v-model):置 true 进入 loading,加载完成置 false 自动展示成功态后收回 */
|
|
@@ -5329,7 +6267,7 @@ var _sfc_main$34 = /*@__PURE__*/ Object.assign({ name: "EwPullRefresh" }, {
|
|
|
5329
6267
|
//#region src/components/load-more/index.vue
|
|
5330
6268
|
var _hoisted_1$3 = ["disabled"];
|
|
5331
6269
|
var _hoisted_2$3 = { class: "ew-load-more__text" };
|
|
5332
|
-
var _sfc_main$
|
|
6270
|
+
var _sfc_main$31 = /*@__PURE__*/ Object.assign({ name: "EwLoadMore" }, {
|
|
5333
6271
|
__name: "index",
|
|
5334
6272
|
props: {
|
|
5335
6273
|
/** 列表状态(v-model:status):idle | loading | noMore | error */
|
|
@@ -5622,7 +6560,7 @@ var _sfc_main = /*@__PURE__*/ Object.assign({ name: "EwActionSheet" }, {
|
|
|
5622
6560
|
});
|
|
5623
6561
|
//#endregion
|
|
5624
6562
|
//#region src/components/tabbar/index.vue
|
|
5625
|
-
var _sfc_main$
|
|
6563
|
+
var _sfc_main$47 = /*@__PURE__*/ Object.assign({ name: "EwTabbar" }, {
|
|
5626
6564
|
__name: "index",
|
|
5627
6565
|
props: {
|
|
5628
6566
|
/** 当前激活项的 name(未设置 name 时为索引) */
|
|
@@ -5731,7 +6669,7 @@ var _hoisted_7 = {
|
|
|
5731
6669
|
key: 1,
|
|
5732
6670
|
class: "ew-tabbar-item__badge is-inline"
|
|
5733
6671
|
};
|
|
5734
|
-
var _sfc_main$
|
|
6672
|
+
var _sfc_main$48 = /*@__PURE__*/ Object.assign({ name: "EwTabbarItem" }, {
|
|
5735
6673
|
__name: "item",
|
|
5736
6674
|
props: {
|
|
5737
6675
|
/** 标识,缺省用注册顺序索引 */
|
|
@@ -5786,7 +6724,7 @@ var _sfc_main$42 = /*@__PURE__*/ Object.assign({ name: "EwTabbarItem" }, {
|
|
|
5786
6724
|
role: "tab",
|
|
5787
6725
|
"aria-selected": isActive.value,
|
|
5788
6726
|
onClick
|
|
5789
|
-
}, [hasIcon.value ? (openBlock(), createElementBlock("div", _hoisted_2$1, [renderSlot(_ctx.$slots, "icon", { active: isActive.value }, () => [__props.icon ? (openBlock(), createBlock(_sfc_main$
|
|
6727
|
+
}, [hasIcon.value ? (openBlock(), createElementBlock("div", _hoisted_2$1, [renderSlot(_ctx.$slots, "icon", { active: isActive.value }, () => [__props.icon ? (openBlock(), createBlock(_sfc_main$24, {
|
|
5790
6728
|
key: 0,
|
|
5791
6729
|
name: __props.icon
|
|
5792
6730
|
}, null, 8, ["name"])) : createCommentVNode("", true)]), __props.dot ? (openBlock(), createElementBlock("i", _hoisted_3$1)) : showBadge.value ? (openBlock(), createElementBlock("span", _hoisted_4$1, toDisplayString(__props.badge), 1)) : createCommentVNode("", true)])) : createCommentVNode("", true), createElementVNode("div", _hoisted_5, [renderSlot(_ctx.$slots, "default"), !hasIcon.value && __props.dot ? (openBlock(), createElementBlock("i", _hoisted_6)) : !hasIcon.value && showBadge.value ? (openBlock(), createElementBlock("span", _hoisted_7, toDisplayString(__props.badge), 1)) : createCommentVNode("", true)])], 10, _hoisted_1$1);
|
|
@@ -5809,7 +6747,7 @@ var _hoisted_4 = {
|
|
|
5809
6747
|
key: 0,
|
|
5810
6748
|
class: "ew-nav-bar__text"
|
|
5811
6749
|
};
|
|
5812
|
-
var _sfc_main$
|
|
6750
|
+
var _sfc_main$35 = /*@__PURE__*/ Object.assign({ name: "EwNavBar" }, {
|
|
5813
6751
|
__name: "index",
|
|
5814
6752
|
props: {
|
|
5815
6753
|
/** 标题文本(title 插槽可替换) */
|
|
@@ -5871,7 +6809,7 @@ var _sfc_main$29 = /*@__PURE__*/ Object.assign({ name: "EwNavBar" }, {
|
|
|
5871
6809
|
createElementVNode("div", {
|
|
5872
6810
|
class: "ew-nav-bar__side is-left",
|
|
5873
6811
|
onClick: _cache[0] || (_cache[0] = ($event) => emit("click-left"))
|
|
5874
|
-
}, [renderSlot(_ctx.$slots, "left", {}, () => [__props.leftArrow ? (openBlock(), createBlock(_sfc_main$
|
|
6812
|
+
}, [renderSlot(_ctx.$slots, "left", {}, () => [__props.leftArrow ? (openBlock(), createBlock(_sfc_main$24, {
|
|
5875
6813
|
key: 0,
|
|
5876
6814
|
name: "arrow-left",
|
|
5877
6815
|
size: 18
|
|
@@ -5888,55 +6826,61 @@ var _sfc_main$29 = /*@__PURE__*/ Object.assign({ name: "EwNavBar" }, {
|
|
|
5888
6826
|
//#endregion
|
|
5889
6827
|
//#region src/index.js
|
|
5890
6828
|
var components = {
|
|
5891
|
-
EwIcon: _sfc_main$
|
|
5892
|
-
EwButton: _sfc_main$
|
|
5893
|
-
EwIconButton: _sfc_main$
|
|
5894
|
-
EwTag: _sfc_main$
|
|
5895
|
-
EwBadge: _sfc_main$
|
|
5896
|
-
EwCard: _sfc_main$
|
|
5897
|
-
EwSection: _sfc_main$
|
|
5898
|
-
EwNavbar: _sfc_main$
|
|
5899
|
-
EwFooter: _sfc_main$
|
|
5900
|
-
EwHero: _sfc_main$
|
|
5901
|
-
EwSearchBox: _sfc_main$
|
|
5902
|
-
EwIconGrid: _sfc_main$
|
|
5903
|
-
EwFeatureGrid: _sfc_main$
|
|
5904
|
-
EwPricingCard: _sfc_main$
|
|
5905
|
-
EwFaq: _sfc_main$
|
|
6829
|
+
EwIcon: _sfc_main$24,
|
|
6830
|
+
EwButton: _sfc_main$9,
|
|
6831
|
+
EwIconButton: _sfc_main$25,
|
|
6832
|
+
EwTag: _sfc_main$50,
|
|
6833
|
+
EwBadge: _sfc_main$7,
|
|
6834
|
+
EwCard: _sfc_main$10,
|
|
6835
|
+
EwSection: _sfc_main$43,
|
|
6836
|
+
EwNavbar: _sfc_main$36,
|
|
6837
|
+
EwFooter: _sfc_main$22,
|
|
6838
|
+
EwHero: _sfc_main$23,
|
|
6839
|
+
EwSearchBox: _sfc_main$42,
|
|
6840
|
+
EwIconGrid: _sfc_main$26,
|
|
6841
|
+
EwFeatureGrid: _sfc_main$20,
|
|
6842
|
+
EwPricingCard: _sfc_main$38,
|
|
6843
|
+
EwFaq: _sfc_main$19,
|
|
5906
6844
|
EwAlert: _sfc_main$1,
|
|
5907
|
-
EwCodeBlock: _sfc_main$
|
|
5908
|
-
EwKeycap: _sfc_main$
|
|
5909
|
-
EwStatistic: _sfc_main$
|
|
5910
|
-
EwThemeToggle: _sfc_main$
|
|
5911
|
-
EwQuote: _sfc_main$
|
|
5912
|
-
EwConfigProvider: _sfc_main$
|
|
5913
|
-
EwTabs: _sfc_main$
|
|
5914
|
-
EwSwitch: _sfc_main$
|
|
5915
|
-
EwContainer: _sfc_main$
|
|
5916
|
-
EwAvatar: _sfc_main$
|
|
5917
|
-
EwAvatarGroup: _sfc_main$
|
|
5918
|
-
EwTimeline: _sfc_main$
|
|
5919
|
-
EwComparisonTable: _sfc_main$
|
|
5920
|
-
EwCta: _sfc_main$
|
|
5921
|
-
EwNewsletter: _sfc_main$
|
|
5922
|
-
EwLogoCloud: _sfc_main$
|
|
5923
|
-
EwVideo: _sfc_main$
|
|
5924
|
-
EwAudio: _sfc_main$
|
|
5925
|
-
EwContactForm: _sfc_main$
|
|
5926
|
-
EwCarousel: _sfc_main$
|
|
5927
|
-
EwArticleCard: _sfc_main$
|
|
5928
|
-
EwProfileCard: _sfc_main$
|
|
5929
|
-
|
|
5930
|
-
|
|
5931
|
-
|
|
5932
|
-
|
|
5933
|
-
|
|
5934
|
-
|
|
5935
|
-
|
|
6845
|
+
EwCodeBlock: _sfc_main$12,
|
|
6846
|
+
EwKeycap: _sfc_main$30,
|
|
6847
|
+
EwStatistic: _sfc_main$45,
|
|
6848
|
+
EwThemeToggle: _sfc_main$52,
|
|
6849
|
+
EwQuote: _sfc_main$41,
|
|
6850
|
+
EwConfigProvider: _sfc_main$14,
|
|
6851
|
+
EwTabs: _sfc_main$49,
|
|
6852
|
+
EwSwitch: _sfc_main$46,
|
|
6853
|
+
EwContainer: _sfc_main$16,
|
|
6854
|
+
EwAvatar: _sfc_main$5,
|
|
6855
|
+
EwAvatarGroup: _sfc_main$6,
|
|
6856
|
+
EwTimeline: _sfc_main$53,
|
|
6857
|
+
EwComparisonTable: _sfc_main$13,
|
|
6858
|
+
EwCta: _sfc_main$17,
|
|
6859
|
+
EwNewsletter: _sfc_main$37,
|
|
6860
|
+
EwLogoCloud: _sfc_main$32,
|
|
6861
|
+
EwVideo: _sfc_main$54,
|
|
6862
|
+
EwAudio: _sfc_main$4,
|
|
6863
|
+
EwContactForm: _sfc_main$15,
|
|
6864
|
+
EwCarousel: _sfc_main$11,
|
|
6865
|
+
EwArticleCard: _sfc_main$3,
|
|
6866
|
+
EwProfileCard: _sfc_main$39,
|
|
6867
|
+
EwArticle: _sfc_main$2,
|
|
6868
|
+
EwExecCard: _sfc_main$18,
|
|
6869
|
+
EwImageWall: _sfc_main$28,
|
|
6870
|
+
EwImagePreview: _sfc_main$27,
|
|
6871
|
+
EwModal: _sfc_main$34,
|
|
6872
|
+
EwMarquee: _sfc_main$33,
|
|
6873
|
+
EwBorderBeam: _sfc_main$8,
|
|
6874
|
+
EwInput: _sfc_main$29,
|
|
6875
|
+
EwTextarea: _sfc_main$51,
|
|
6876
|
+
EwSelect: _sfc_main$44,
|
|
6877
|
+
EwField: _sfc_main$21,
|
|
6878
|
+
EwPullRefresh: _sfc_main$40,
|
|
6879
|
+
EwLoadMore: _sfc_main$31,
|
|
5936
6880
|
EwActionSheet: _sfc_main,
|
|
5937
|
-
EwTabbar: _sfc_main$
|
|
5938
|
-
EwTabbarItem: _sfc_main$
|
|
5939
|
-
EwNavBar: _sfc_main$
|
|
6881
|
+
EwTabbar: _sfc_main$47,
|
|
6882
|
+
EwTabbarItem: _sfc_main$48,
|
|
6883
|
+
EwNavBar: _sfc_main$35
|
|
5940
6884
|
};
|
|
5941
6885
|
function install(app) {
|
|
5942
6886
|
for (const [name, comp] of Object.entries(components)) app.component(name, comp);
|
|
@@ -5945,4 +6889,4 @@ function install(app) {
|
|
|
5945
6889
|
}
|
|
5946
6890
|
var src_default = { install };
|
|
5947
6891
|
//#endregion
|
|
5948
|
-
export { EW_COLOR_PRESETS, EW_CONTAINER_PRESETS, EW_PALETTE_PRESETS, EW_RADIUS_PRESETS, EW_SPACE_PRESETS, EW_STYLE_PRESETS, _sfc_main as EwActionSheet, _sfc_main$1 as EwAlert, _sfc_main$2 as
|
|
6892
|
+
export { EW_COLOR_PRESETS, EW_CONTAINER_PRESETS, EW_PALETTE_PRESETS, EW_RADIUS_PRESETS, EW_SPACE_PRESETS, EW_STYLE_PRESETS, _sfc_main as EwActionSheet, _sfc_main$1 as EwAlert, _sfc_main$2 as EwArticle, _sfc_main$3 as EwArticleCard, _sfc_main$4 as EwAudio, _sfc_main$5 as EwAvatar, _sfc_main$6 as EwAvatarGroup, _sfc_main$7 as EwBadge, _sfc_main$8 as EwBorderBeam, _sfc_main$9 as EwButton, _sfc_main$10 as EwCard, _sfc_main$11 as EwCarousel, _sfc_main$12 as EwCodeBlock, _sfc_main$13 as EwComparisonTable, _sfc_main$14 as EwConfigProvider, _sfc_main$15 as EwContactForm, _sfc_main$16 as EwContainer, _sfc_main$17 as EwCta, _sfc_main$18 as EwExecCard, _sfc_main$19 as EwFaq, _sfc_main$20 as EwFeatureGrid, _sfc_main$21 as EwField, _sfc_main$22 as EwFooter, _sfc_main$23 as EwHero, _sfc_main$24 as EwIcon, _sfc_main$25 as EwIconButton, _sfc_main$26 as EwIconGrid, _sfc_main$27 as EwImagePreview, _sfc_main$28 as EwImageWall, _sfc_main$29 as EwInput, _sfc_main$30 as EwKeycap, _sfc_main$31 as EwLoadMore, _sfc_main$32 as EwLogoCloud, _sfc_main$33 as EwMarquee, _sfc_main$34 as EwModal, _sfc_main$35 as EwNavBar, _sfc_main$36 as EwNavbar, _sfc_main$37 as EwNewsletter, _sfc_main$38 as EwPricingCard, _sfc_main$39 as EwProfileCard, _sfc_main$40 as EwPullRefresh, _sfc_main$41 as EwQuote, _sfc_main$42 as EwSearchBox, _sfc_main$43 as EwSection, _sfc_main$44 as EwSelect, _sfc_main$45 as EwStatistic, _sfc_main$46 as EwSwitch, _sfc_main$47 as EwTabbar, _sfc_main$48 as EwTabbarItem, _sfc_main$49 as EwTabs, _sfc_main$50 as EwTag, _sfc_main$51 as EwTextarea, _sfc_main$52 as EwThemeToggle, _sfc_main$53 as EwTimeline, _sfc_main$54 as EwVideo, components, src_default as default, ensureViewportFit, getIconByName, getIconNames, hasIcon, initTheme, install, loadShowcaseIcons, registerIcons, resolveThemeVars, useCopy, useSafeArea, useTheme, useThemeConfig, revealDirective as vReveal };
|