@sdata/web-vue 2.2.1 → 2.6.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 +1 -1
- package/dist/sd.css +117 -191
- package/dist/sd.min.css +1 -1
- package/es/_components/picker/input-range.vue.d.ts +2 -2
- package/es/_components/transition/expand-transition.vue.d.ts +2 -2
- package/es/_hooks/use-responsive.d.ts +2 -2
- package/es/_hooks/use-theme-mode.d.ts +3 -0
- package/es/{calendar/hooks/use-calendar-theme.js → _hooks/use-theme-mode.js} +14 -10
- package/es/_utils/date.d.ts +10 -9
- package/es/_utils/date.js +23 -7
- package/es/_utils/responsive-observe.d.ts +5 -4
- package/es/_utils/responsive-observe.js +2 -1
- package/es/alert/index.d.ts +3 -3
- package/es/anchor/anchor.vue.d.ts +52 -2
- package/es/anchor/anchor.vue_vue_type_script_setup_true_lang.js +75 -15
- package/es/anchor/index.d.ts +78 -3
- package/es/avatar/index.d.ts +20 -20
- package/es/border-beam/border-beam.js +5 -0
- package/es/border-beam/border-beam.vue.d.ts +52 -0
- package/es/border-beam/border-beam.vue_vue_type_script_setup_true_lang.js +623 -0
- package/es/border-beam/index.d.ts +106 -0
- package/es/border-beam/index.js +10 -0
- package/es/border-beam/pulseDriver.d.ts +2 -0
- package/es/border-beam/pulseDriver.js +74 -0
- package/es/border-beam/style/css.js +2 -0
- package/es/border-beam/style/index.css +21 -0
- package/es/border-beam/style/index.d.ts +2 -0
- package/es/border-beam/style/index.js +2 -0
- package/es/border-beam/style/index.scss +12 -0
- package/es/border-beam/style/token.scss +12 -0
- package/es/border-beam/styles.d.ts +42 -0
- package/es/border-beam/styles.js +3545 -0
- package/es/border-beam/types.d.ts +27 -0
- package/es/button/button.vue.d.ts +16 -3
- package/es/button/button.vue_vue_type_script_setup_true_lang.js +39 -9
- package/es/button/index.d.ts +43 -24
- package/es/button/interface.d.ts +1 -0
- package/es/calendar/components/cell.vue.d.ts +26 -26
- package/es/calendar/components/index.vue.d.ts +1 -1
- package/es/calendar/components/index.vue_vue_type_script_setup_true_lang.js +3 -2
- package/es/calendar/index.d.ts +5 -5
- package/es/carousel/index.d.ts +3 -3
- package/es/cascader/cascader.vue.d.ts +8 -8
- package/es/checkbox/checkbox.d.ts +3 -3
- package/es/collapse/collapse-item.d.ts +5 -5
- package/es/collapse/index.d.ts +3 -3
- package/es/components.d.ts +1 -0
- package/es/config-provider/config-provider.vue.d.ts +9 -0
- package/es/config-provider/config-provider.vue_vue_type_script_setup_true_lang.js +10 -1
- package/es/config-provider/context.d.ts +1 -0
- package/es/config-provider/index.d.ts +36 -21
- package/es/copy/copy.vue_vue_type_script_setup_true_lang.js +1 -0
- package/es/date-picker/hooks/use-cell-class-name.d.ts +1 -0
- package/es/date-picker/hooks/use-cell-class-name.js +3 -2
- package/es/date-picker/hooks/use-header-value.d.ts +2 -0
- package/es/date-picker/hooks/use-header-value.js +23 -19
- package/es/date-picker/hooks/use-picker-state.d.ts +2 -0
- package/es/date-picker/hooks/use-picker-state.js +3 -3
- package/es/date-picker/hooks/use-range-header-value.d.ts +2 -0
- package/es/date-picker/hooks/use-range-header-value.js +5 -1
- package/es/date-picker/hooks/use-range-picker-state.d.ts +2 -0
- package/es/date-picker/hooks/use-range-picker-state.js +3 -3
- package/es/date-picker/hooks/use-value-format.d.ts +5 -3
- package/es/date-picker/hooks/use-value-format.js +10 -8
- package/es/date-picker/index.d.ts +1373 -12
- package/es/date-picker/interface.d.ts +7 -0
- package/es/date-picker/panels/body.vue.d.ts +24 -6
- package/es/date-picker/panels/body.vue_vue_type_script_setup_true_lang.js +13 -12
- package/es/date-picker/panels/date/index.vue.d.ts +26 -8
- package/es/date-picker/panels/date/index.vue_vue_type_script_setup_true_lang.js +18 -9
- package/es/date-picker/panels/header.vue_vue_type_script_setup_true_lang.js +13 -20
- package/es/date-picker/panels/month/index.vue.d.ts +13 -8
- package/es/date-picker/panels/month/index.vue_vue_type_script_setup_true_lang.js +6 -6
- package/es/date-picker/panels/quarter/index.vue.d.ts +13 -8
- package/es/date-picker/panels/quarter/index.vue_vue_type_script_setup_true_lang.js +6 -6
- package/es/date-picker/panels/shortcuts.vue_vue_type_script_setup_true_lang.js +2 -6
- package/es/date-picker/panels/week/index.vue.d.ts +13 -1
- package/es/date-picker/panels/week/index.vue_vue_type_script_setup_true_lang.js +5 -2
- package/es/date-picker/panels/year/index.vue.d.ts +13 -8
- package/es/date-picker/panels/year/index.vue_vue_type_script_setup_true_lang.js +25 -15
- package/es/date-picker/picker-panel.vue.d.ts +56 -14
- package/es/date-picker/picker-panel.vue_vue_type_script_setup_true_lang.js +36 -19
- package/es/date-picker/picker.vue.d.ts +951 -3
- package/es/date-picker/picker.vue_vue_type_script_setup_true_lang.js +91 -29
- package/es/date-picker/range-picker-panel.vue.d.ts +77 -15
- package/es/date-picker/range-picker-panel.vue_vue_type_script_setup_true_lang.js +52 -28
- package/es/date-picker/range-picker.vue.d.ts +1348 -4
- package/es/date-picker/range-picker.vue_vue_type_script_setup_true_lang.js +114 -34
- package/es/descriptions/index.d.ts +24 -24
- package/es/drawer/drawer.vue.d.ts +5 -5
- package/es/drawer/index.d.ts +15 -15
- package/es/dropdown/dropdown-button.vue.d.ts +4 -4
- package/es/dropdown/index.d.ts +15 -15
- package/es/ellipsis/ellipsis.vue.d.ts +7 -7
- package/es/ellipsis/performant-ellipsis.vue.d.ts +5 -5
- package/es/form/form-item.vue_vue_type_script_setup_true_lang.js +3 -3
- package/es/form/index.d.ts +3 -3
- package/es/grid/grid-col.vue_vue_type_script_setup_true_lang.js +2 -2
- package/es/grid/grid.vue_vue_type_script_setup_true_lang.js +10 -10
- package/es/icon/icon-menu/icon-menu.js +5 -0
- package/es/icon/icon-menu/icon-menu.vue_vue_type_script_setup_true_lang.js +52 -0
- package/es/icon/icon-menu/index.js +9 -0
- package/es/image/preview-toolbar.vue.d.ts +2 -3
- package/es/image/preview-toolbar.vue_vue_type_script_setup_true_lang.js +2 -3
- package/es/image/preview.vue.d.ts +2 -2
- package/es/index.css +117 -191
- package/es/index.d.ts +3 -1
- package/es/index.js +3 -2
- package/es/index.scss +1 -0
- package/es/input/index.d.ts +7 -7
- package/es/input/input-password.vue.d.ts +3 -3
- package/es/json-form/index.d.ts +9 -9
- package/es/json-form/json-form-item.vue_vue_type_script_setup_true_lang.js +1 -1
- package/es/json-form/json-form.vue.d.ts +3 -3
- package/es/layout/content.vue.d.ts +2 -2
- package/es/layout/content.vue_vue_type_script_setup_true_lang.js +8 -3
- package/es/layout/context.d.ts +12 -9
- package/es/layout/context.js +11 -3
- package/es/layout/footer.vue.d.ts +2 -2
- package/es/layout/footer.vue_vue_type_script_setup_true_lang.js +8 -3
- package/es/layout/header.vue.d.ts +3 -30
- package/es/layout/header.vue_vue_type_script_setup_true_lang.js +9 -339
- package/es/layout/hooks/use-has-sider.d.ts +2 -0
- package/es/layout/hooks/use-has-sider.js +38 -0
- package/es/layout/index.d.ts +91 -380
- package/es/layout/index.js +2 -2
- package/es/layout/interface.d.ts +12 -46
- package/es/layout/layout.vue.d.ts +4 -2
- package/es/layout/layout.vue_vue_type_script_setup_true_lang.js +38 -14
- package/es/layout/sider.vue.d.ts +47 -183
- package/es/layout/sider.vue_vue_type_script_setup_true_lang.js +191 -370
- package/es/layout/style/index.css +112 -190
- package/es/layout/style/index.scss +127 -239
- package/es/layout/style/token.scss +46 -26
- package/es/link/index.d.ts +6 -6
- package/es/list/index.d.ts +18 -18
- package/es/locale/interface.d.ts +2 -0
- package/es/locale/lang/ar-eg.js +46 -0
- package/es/locale/lang/de-de.js +46 -0
- package/es/locale/lang/es-es.js +46 -0
- package/es/locale/lang/fr-fr.js +46 -0
- package/es/locale/lang/id-id.js +46 -0
- package/es/locale/lang/it-it.js +46 -0
- package/es/locale/lang/km-kh.js +46 -0
- package/es/locale/lang/ko-kr.js +46 -0
- package/es/locale/lang/ms-my.js +46 -0
- package/es/locale/lang/pt-pt.js +46 -0
- package/es/locale/lang/th-th.js +46 -0
- package/es/locale/lang/vi-vn.js +46 -0
- package/es/mention/mention.js +2 -0
- package/es/menu/base-menu.vue.d.ts +1 -1
- package/es/menu/base-menu.vue_vue_type_script_setup_true_lang.js +14 -14
- package/es/menu/item.d.ts +1 -1
- package/es/menu/menu.d.ts +12 -12
- package/es/menu/menu.js +3 -3
- package/es/menu/sub-menu-pop.vue_vue_type_script_setup_true_lang.js +3 -4
- package/es/modal/index.d.ts +22 -20
- package/es/modal/index.js +47 -11
- package/es/modal/interface.d.ts +5 -0
- package/es/modal/modal.vue.d.ts +4 -4
- package/es/popconfirm/index.d.ts +12 -12
- package/es/popover/index.d.ts +12 -12
- package/es/progress/index.d.ts +6 -6
- package/es/qr-code/index.d.ts +3 -3
- package/es/radio/radio.d.ts +3 -3
- package/es/resize-box/resize-box.vue.d.ts +4 -4
- package/es/resize-box/resize-box.vue_vue_type_script_setup_true_lang.js +7 -7
- package/es/result/index.d.ts +3 -3
- package/es/scrollbar/style/index.css +1 -1
- package/es/scrollbar/style/index.scss +4 -1
- package/es/sd-vue.js +3 -1
- package/es/select/select.d.ts +17 -17
- package/es/slider/index.d.ts +3 -3
- package/es/split/split.vue.d.ts +4 -4
- package/es/split/split.vue_vue_type_script_setup_true_lang.js +6 -6
- package/es/steps/index.d.ts +6 -6
- package/es/tabs/index.d.ts +6 -6
- package/es/tag/index.d.ts +6 -6
- package/es/tag/tag.vue.d.ts +2 -2
- package/es/textarea/textarea.vue_vue_type_script_setup_true_lang.js +4 -4
- package/es/theme-provider/index.d.ts +9 -9
- package/es/time-picker/index.d.ts +6 -6
- package/es/time-picker/time-picker.vue.d.ts +2 -2
- package/es/timeline/index.d.ts +3 -3
- package/es/timeline/timeline.d.ts +1 -1
- package/es/tooltip/index.d.ts +3 -3
- package/es/tour/index.d.ts +3 -3
- package/es/tour/tour.vue_vue_type_script_setup_true_lang.js +6 -6
- package/es/tree/base-node.vue_vue_type_script_setup_true_lang.js +6 -21
- package/es/tree/expand-transition.vue.d.ts +2 -2
- package/es/tree/node-switcher.vue.d.ts +1 -12
- package/es/tree/node-switcher.vue_vue_type_script_lang.js +1 -5
- package/es/tree/tree.vue_vue_type_script_setup_true_lang.js +23 -23
- package/es/tree-select/tree-select.vue.d.ts +9 -9
- package/es/trigger/trigger.js +2 -1
- package/es/verification-code/verification-code.js +17 -7
- package/json/vetur-attributes.json +76 -156
- package/json/vetur-tags.json +26 -44
- package/json/web-types.json +150 -304
- package/package.json +5 -5
- package/es/_components/render-function.d.ts +0 -14
- package/es/_components/render-function.js +0 -14
- package/es/calendar/hooks/use-calendar-theme.d.ts +0 -4
- package/es/layout/utils.d.ts +0 -1
- package/es/layout/utils.js +0 -11
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import type { App } from 'vue';
|
|
2
|
+
import type { SDOptions } from '../_utils/types';
|
|
3
|
+
import _BorderBeam from './border-beam.vue';
|
|
4
|
+
export type { BorderBeamSize, BorderBeamTheme, BorderBeamColorVariant, BorderBeamFlowPreset, BorderBeamFlowPoint, BorderBeamFlowCoordinate, BorderBeamExposed, SizeConfig, ThemeColors, } from './types';
|
|
5
|
+
declare const BorderBeam: {
|
|
6
|
+
new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<Readonly<{
|
|
7
|
+
size?: import("./types").BorderBeamSize;
|
|
8
|
+
colorVariant?: import("./types").BorderBeamColorVariant;
|
|
9
|
+
theme?: import("./types").BorderBeamTheme;
|
|
10
|
+
staticColors?: boolean;
|
|
11
|
+
duration?: number;
|
|
12
|
+
active?: boolean;
|
|
13
|
+
borderRadius?: number;
|
|
14
|
+
brightness?: number;
|
|
15
|
+
saturation?: number;
|
|
16
|
+
hueRange?: number;
|
|
17
|
+
strength?: number;
|
|
18
|
+
density?: number;
|
|
19
|
+
}> & Readonly<{
|
|
20
|
+
onActivate?: (() => any) | undefined;
|
|
21
|
+
onDeactivate?: (() => any) | undefined;
|
|
22
|
+
}>, import("./types").BorderBeamExposed, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
23
|
+
activate: () => any;
|
|
24
|
+
deactivate: () => any;
|
|
25
|
+
}, import("vue").PublicProps, {
|
|
26
|
+
size: import("./types").BorderBeamSize;
|
|
27
|
+
active: boolean;
|
|
28
|
+
colorVariant: import("./types").BorderBeamColorVariant;
|
|
29
|
+
theme: import("./types").BorderBeamTheme;
|
|
30
|
+
staticColors: boolean;
|
|
31
|
+
hueRange: number;
|
|
32
|
+
strength: number;
|
|
33
|
+
density: number;
|
|
34
|
+
}, false, {}, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
|
|
35
|
+
P: {};
|
|
36
|
+
B: {};
|
|
37
|
+
D: {};
|
|
38
|
+
C: {};
|
|
39
|
+
M: {};
|
|
40
|
+
Defaults: {};
|
|
41
|
+
}, Readonly<{
|
|
42
|
+
size?: import("./types").BorderBeamSize;
|
|
43
|
+
colorVariant?: import("./types").BorderBeamColorVariant;
|
|
44
|
+
theme?: import("./types").BorderBeamTheme;
|
|
45
|
+
staticColors?: boolean;
|
|
46
|
+
duration?: number;
|
|
47
|
+
active?: boolean;
|
|
48
|
+
borderRadius?: number;
|
|
49
|
+
brightness?: number;
|
|
50
|
+
saturation?: number;
|
|
51
|
+
hueRange?: number;
|
|
52
|
+
strength?: number;
|
|
53
|
+
density?: number;
|
|
54
|
+
}> & Readonly<{
|
|
55
|
+
onActivate?: (() => any) | undefined;
|
|
56
|
+
onDeactivate?: (() => any) | undefined;
|
|
57
|
+
}>, import("./types").BorderBeamExposed, {}, {}, {}, {
|
|
58
|
+
size: import("./types").BorderBeamSize;
|
|
59
|
+
active: boolean;
|
|
60
|
+
colorVariant: import("./types").BorderBeamColorVariant;
|
|
61
|
+
theme: import("./types").BorderBeamTheme;
|
|
62
|
+
staticColors: boolean;
|
|
63
|
+
hueRange: number;
|
|
64
|
+
strength: number;
|
|
65
|
+
density: number;
|
|
66
|
+
}>;
|
|
67
|
+
__isFragment?: never;
|
|
68
|
+
__isTeleport?: never;
|
|
69
|
+
__isSuspense?: never;
|
|
70
|
+
} & import("vue").ComponentOptionsBase<Readonly<{
|
|
71
|
+
size?: import("./types").BorderBeamSize;
|
|
72
|
+
colorVariant?: import("./types").BorderBeamColorVariant;
|
|
73
|
+
theme?: import("./types").BorderBeamTheme;
|
|
74
|
+
staticColors?: boolean;
|
|
75
|
+
duration?: number;
|
|
76
|
+
active?: boolean;
|
|
77
|
+
borderRadius?: number;
|
|
78
|
+
brightness?: number;
|
|
79
|
+
saturation?: number;
|
|
80
|
+
hueRange?: number;
|
|
81
|
+
strength?: number;
|
|
82
|
+
density?: number;
|
|
83
|
+
}> & Readonly<{
|
|
84
|
+
onActivate?: (() => any) | undefined;
|
|
85
|
+
onDeactivate?: (() => any) | undefined;
|
|
86
|
+
}>, import("./types").BorderBeamExposed, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
87
|
+
activate: () => any;
|
|
88
|
+
deactivate: () => any;
|
|
89
|
+
}, string, {
|
|
90
|
+
size: import("./types").BorderBeamSize;
|
|
91
|
+
active: boolean;
|
|
92
|
+
colorVariant: import("./types").BorderBeamColorVariant;
|
|
93
|
+
theme: import("./types").BorderBeamTheme;
|
|
94
|
+
staticColors: boolean;
|
|
95
|
+
hueRange: number;
|
|
96
|
+
strength: number;
|
|
97
|
+
density: number;
|
|
98
|
+
}, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & (new () => {
|
|
99
|
+
$slots: {
|
|
100
|
+
default?: (props: {}) => any;
|
|
101
|
+
};
|
|
102
|
+
}) & {
|
|
103
|
+
install: (app: App, options?: SDOptions) => void;
|
|
104
|
+
};
|
|
105
|
+
export type BorderBeamInstance = InstanceType<typeof _BorderBeam>;
|
|
106
|
+
export default BorderBeam;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { getComponentPrefix, setGlobalConfig } from "../_utils/global-config.js";
|
|
2
|
+
import border_beam_default from "./border-beam.js";
|
|
3
|
+
//#region components/border-beam/index.ts
|
|
4
|
+
var BorderBeam = Object.assign(border_beam_default, { install: (app, options) => {
|
|
5
|
+
setGlobalConfig(app, options);
|
|
6
|
+
const componentPrefix = getComponentPrefix(options);
|
|
7
|
+
app.component(componentPrefix + border_beam_default.name, border_beam_default);
|
|
8
|
+
} });
|
|
9
|
+
//#endregion
|
|
10
|
+
export { BorderBeam as default };
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
//#region components/border-beam/pulseDriver.ts
|
|
2
|
+
var instances = /* @__PURE__ */ new Set();
|
|
3
|
+
var rafId = null;
|
|
4
|
+
var lastFrame = 0;
|
|
5
|
+
var FRAME_INTERVAL = 1e3 / 30 - 2;
|
|
6
|
+
var TWO_PI = Math.PI * 2;
|
|
7
|
+
/**
|
|
8
|
+
* Cosine ease-in-out factor in [0, 1]: 0 at phase 0/1, 1 at phase 0.5.
|
|
9
|
+
* @param phase
|
|
10
|
+
*/
|
|
11
|
+
function pingPong(phase) {
|
|
12
|
+
return (1 - Math.cos(TWO_PI * phase)) / 2;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
*
|
|
16
|
+
* @param ts
|
|
17
|
+
*/
|
|
18
|
+
function frame(ts) {
|
|
19
|
+
rafId = requestAnimationFrame(frame);
|
|
20
|
+
if (ts - lastFrame < FRAME_INTERVAL) return;
|
|
21
|
+
lastFrame = ts;
|
|
22
|
+
const tSec = ts / 1e3;
|
|
23
|
+
instances.forEach(({ el, config }) => {
|
|
24
|
+
for (const osc of config.oscillators) {
|
|
25
|
+
const phase = (tSec - osc.delay) / osc.period;
|
|
26
|
+
const value = osc.a + (osc.b - osc.a) * pingPong(phase);
|
|
27
|
+
el.style.setProperty(osc.prop, osc.unit === "px" ? `${value.toFixed(2)}px` : value.toFixed(4));
|
|
28
|
+
}
|
|
29
|
+
if (config.hue) {
|
|
30
|
+
const { prop, range, period, continuous } = config.hue;
|
|
31
|
+
const value = continuous ? tSec / period % 1 * range : -range + 2 * range * pingPong(tSec / period);
|
|
32
|
+
el.style.setProperty(prop, `${value.toFixed(2)}deg`);
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
*
|
|
38
|
+
*/
|
|
39
|
+
function startLoop() {
|
|
40
|
+
if (rafId == null) {
|
|
41
|
+
lastFrame = 0;
|
|
42
|
+
rafId = requestAnimationFrame(frame);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
*
|
|
47
|
+
*/
|
|
48
|
+
function stopLoopIfIdle() {
|
|
49
|
+
if (instances.size === 0 && rafId != null) {
|
|
50
|
+
cancelAnimationFrame(rafId);
|
|
51
|
+
rafId = null;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Register an element to be driven by the shared pulse loop.
|
|
56
|
+
* @param el
|
|
57
|
+
* @param config
|
|
58
|
+
* @returns a cleanup function that unregisters the instance (and stops the
|
|
59
|
+
* shared loop once no instances remain).
|
|
60
|
+
*/
|
|
61
|
+
function registerPulseInstance(el, config) {
|
|
62
|
+
const instance = {
|
|
63
|
+
el,
|
|
64
|
+
config
|
|
65
|
+
};
|
|
66
|
+
instances.add(instance);
|
|
67
|
+
startLoop();
|
|
68
|
+
return () => {
|
|
69
|
+
instances.delete(instance);
|
|
70
|
+
stopLoopIfIdle();
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
//#endregion
|
|
74
|
+
export { registerPulseInstance };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/******** borderSize *******/
|
|
2
|
+
/******** borderStyle *******/
|
|
3
|
+
/******** radius *******/
|
|
4
|
+
/******** shadow distance *******/
|
|
5
|
+
/******** size *******/
|
|
6
|
+
/******** spacing *******/
|
|
7
|
+
/******** shadow *******/
|
|
8
|
+
/******** opacity *******/
|
|
9
|
+
/******** fontSize *******/
|
|
10
|
+
/******** fontWeight ********/
|
|
11
|
+
/******** Primary *******/
|
|
12
|
+
/******** success *******/
|
|
13
|
+
/******** warning *******/
|
|
14
|
+
/******** danger *******/
|
|
15
|
+
/******** link *******/
|
|
16
|
+
/******** radius *******/
|
|
17
|
+
/********* icon hover *********/
|
|
18
|
+
.sd-border-beam {
|
|
19
|
+
position: relative;
|
|
20
|
+
display: inline-flex;
|
|
21
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
@use './token.scss';
|
|
2
|
+
|
|
3
|
+
$border-beam-prefix-cls: 'sd-border-beam';
|
|
4
|
+
|
|
5
|
+
// BorderBeam 的动态 CSS 由 JS 生成并注入 document.head
|
|
6
|
+
// 此 SCSS 文件仅提供 wrapper 结构类
|
|
7
|
+
// 动画、渐变、mask 等视觉效果全部由 border-beam/styles.ts 生成
|
|
8
|
+
|
|
9
|
+
.#{$border-beam-prefix-cls} {
|
|
10
|
+
position: relative;
|
|
11
|
+
display: inline-flex;
|
|
12
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
@use '@style/theme/index.scss' as global;
|
|
2
|
+
|
|
3
|
+
@forward '@style/theme/index.scss';
|
|
4
|
+
|
|
5
|
+
// BorderBeam 的视觉效果完全由 JS 动态生成 CSS 驱动
|
|
6
|
+
// SCSS token 层仅保留结构属性和预设圆角
|
|
7
|
+
|
|
8
|
+
$border-beam-border-radius-sm: 32px;
|
|
9
|
+
$border-beam-border-radius-md: 16px;
|
|
10
|
+
$border-beam-border-radius-line: 16px;
|
|
11
|
+
$border-beam-border-radius-pulse-outside: 16px;
|
|
12
|
+
$border-beam-border-radius-pulse-inner: 16px;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { SizeConfig, ThemeColors, BorderBeamColorVariant, BorderBeamSize } from './types';
|
|
2
|
+
export declare const sizePresets: Record<BorderBeamSize, SizeConfig>;
|
|
3
|
+
export declare const sizeThemePresets: Record<BorderBeamSize, Record<'dark' | 'light', ThemeColors>>;
|
|
4
|
+
export declare const themeColors: Record<'dark' | 'light', ThemeColors>;
|
|
5
|
+
export interface PulseOscillatorDef {
|
|
6
|
+
prop: string;
|
|
7
|
+
a: number;
|
|
8
|
+
b: number;
|
|
9
|
+
period: number;
|
|
10
|
+
delay: number;
|
|
11
|
+
unit: '' | 'px';
|
|
12
|
+
}
|
|
13
|
+
export interface PulseDriverConfig {
|
|
14
|
+
oscillators: PulseOscillatorDef[];
|
|
15
|
+
hue: {
|
|
16
|
+
prop: string;
|
|
17
|
+
range: number;
|
|
18
|
+
period: number;
|
|
19
|
+
continuous?: boolean;
|
|
20
|
+
} | null;
|
|
21
|
+
}
|
|
22
|
+
export declare function getPulseDriverConfig(size: BorderBeamSize, theme: 'dark' | 'light', duration: number, hueRange: number, staticColors: boolean, id: string): PulseDriverConfig | null;
|
|
23
|
+
interface GenerateStylesOptions {
|
|
24
|
+
id: string;
|
|
25
|
+
borderRadius: number;
|
|
26
|
+
borderWidth: number;
|
|
27
|
+
duration: number;
|
|
28
|
+
strokeOpacity: number;
|
|
29
|
+
innerOpacity: number;
|
|
30
|
+
bloomOpacity: number;
|
|
31
|
+
innerShadow: string;
|
|
32
|
+
size: BorderBeamSize;
|
|
33
|
+
colorVariant: BorderBeamColorVariant;
|
|
34
|
+
staticColors: boolean;
|
|
35
|
+
brightness: number;
|
|
36
|
+
saturation: number;
|
|
37
|
+
hueRange: number;
|
|
38
|
+
theme: 'dark' | 'light';
|
|
39
|
+
hairlineOpacity?: number;
|
|
40
|
+
}
|
|
41
|
+
export declare function generateBeamCSS(options: GenerateStylesOptions): string;
|
|
42
|
+
export {};
|