@sdata/web-vue 2.3.1 → 2.8.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.
Files changed (119) hide show
  1. package/README.md +1 -1
  2. package/dist/sd.css +133 -187
  3. package/dist/sd.min.css +1 -1
  4. package/es/_hooks/use-responsive.d.ts +2 -2
  5. package/es/_hooks/use-theme-mode.d.ts +3 -0
  6. package/es/{calendar/hooks/use-calendar-theme.js → _hooks/use-theme-mode.js} +14 -10
  7. package/es/_utils/responsive-observe.d.ts +5 -4
  8. package/es/_utils/responsive-observe.js +2 -1
  9. package/es/alert/index.d.ts +3 -3
  10. package/es/anchor/index.d.ts +3 -3
  11. package/es/avatar/index.d.ts +20 -20
  12. package/es/border-beam/border-beam.js +5 -0
  13. package/es/border-beam/border-beam.vue.d.ts +52 -0
  14. package/es/border-beam/border-beam.vue_vue_type_script_setup_true_lang.js +623 -0
  15. package/es/border-beam/index.d.ts +106 -0
  16. package/es/border-beam/index.js +10 -0
  17. package/es/border-beam/pulseDriver.d.ts +2 -0
  18. package/es/border-beam/pulseDriver.js +74 -0
  19. package/es/border-beam/style/css.js +2 -0
  20. package/es/border-beam/style/index.css +21 -0
  21. package/es/border-beam/style/index.d.ts +2 -0
  22. package/es/border-beam/style/index.js +2 -0
  23. package/es/border-beam/style/index.scss +12 -0
  24. package/es/border-beam/style/token.scss +12 -0
  25. package/es/border-beam/styles.d.ts +42 -0
  26. package/es/border-beam/styles.js +3545 -0
  27. package/es/border-beam/types.d.ts +27 -0
  28. package/es/button/index.d.ts +24 -24
  29. package/es/calendar/components/index.vue.d.ts +1 -1
  30. package/es/calendar/components/index.vue_vue_type_script_setup_true_lang.js +3 -2
  31. package/es/calendar/index.d.ts +5 -5
  32. package/es/carousel/index.d.ts +3 -3
  33. package/es/checkbox/checkbox.d.ts +3 -3
  34. package/es/collapse/collapse-item.d.ts +5 -5
  35. package/es/collapse/index.d.ts +3 -3
  36. package/es/components.d.ts +1 -0
  37. package/es/config-provider/index.d.ts +21 -21
  38. package/es/date-picker/index.d.ts +14 -14
  39. package/es/date-picker/picker.vue.d.ts +2 -2
  40. package/es/date-picker/range-picker.vue.d.ts +2 -2
  41. package/es/descriptions/index.d.ts +24 -24
  42. package/es/drawer/index.d.ts +16 -15
  43. package/es/dropdown/index.d.ts +15 -15
  44. package/es/form/form-item.vue_vue_type_script_setup_true_lang.js +3 -3
  45. package/es/form/index.d.ts +3 -3
  46. package/es/grid/grid-col.vue_vue_type_script_setup_true_lang.js +2 -2
  47. package/es/grid/grid.vue_vue_type_script_setup_true_lang.js +10 -10
  48. package/es/icon/icon-menu/icon-menu.js +5 -0
  49. package/es/icon/icon-menu/icon-menu.vue_vue_type_script_setup_true_lang.js +52 -0
  50. package/es/icon/icon-menu/index.js +9 -0
  51. package/es/index.css +133 -187
  52. package/es/index.d.ts +4 -2
  53. package/es/index.js +3 -2
  54. package/es/index.scss +1 -0
  55. package/es/input/index.d.ts +7 -7
  56. package/es/json-form/index.d.ts +9 -9
  57. package/es/json-form/json-form-item.vue_vue_type_script_setup_true_lang.js +1 -1
  58. package/es/json-form/json-form.vue.d.ts +3 -3
  59. package/es/layout/content.vue.d.ts +2 -2
  60. package/es/layout/content.vue_vue_type_script_setup_true_lang.js +8 -3
  61. package/es/layout/context.d.ts +12 -9
  62. package/es/layout/context.js +11 -3
  63. package/es/layout/footer.vue.d.ts +2 -2
  64. package/es/layout/footer.vue_vue_type_script_setup_true_lang.js +8 -3
  65. package/es/layout/header.vue.d.ts +3 -30
  66. package/es/layout/header.vue_vue_type_script_setup_true_lang.js +9 -339
  67. package/es/layout/hooks/use-has-sider.d.ts +2 -0
  68. package/es/layout/hooks/use-has-sider.js +38 -0
  69. package/es/layout/index.d.ts +120 -371
  70. package/es/layout/index.js +2 -2
  71. package/es/layout/interface.d.ts +16 -46
  72. package/es/layout/layout.vue.d.ts +4 -2
  73. package/es/layout/layout.vue_vue_type_script_setup_true_lang.js +38 -14
  74. package/es/layout/sider.vue.d.ts +68 -178
  75. package/es/layout/sider.vue_vue_type_script_setup_true_lang.js +243 -363
  76. package/es/layout/style/index.css +128 -186
  77. package/es/layout/style/index.scss +146 -234
  78. package/es/layout/style/token.scss +46 -26
  79. package/es/link/index.d.ts +6 -6
  80. package/es/list/index.d.ts +18 -18
  81. package/es/menu/base-menu.vue.d.ts +1 -1
  82. package/es/menu/base-menu.vue_vue_type_script_setup_true_lang.js +14 -14
  83. package/es/menu/item.d.ts +1 -1
  84. package/es/menu/menu.d.ts +12 -12
  85. package/es/menu/menu.js +3 -3
  86. package/es/modal/index.d.ts +15 -15
  87. package/es/popconfirm/index.d.ts +12 -12
  88. package/es/popover/index.d.ts +12 -12
  89. package/es/progress/index.d.ts +6 -6
  90. package/es/qr-code/index.d.ts +3 -3
  91. package/es/radio/radio.d.ts +3 -3
  92. package/es/resize-box/resize-box.vue_vue_type_script_setup_true_lang.js +7 -7
  93. package/es/result/index.d.ts +3 -3
  94. package/es/scrollbar/style/index.css +1 -1
  95. package/es/scrollbar/style/index.scss +4 -1
  96. package/es/sd-vue.js +3 -1
  97. package/es/select/select.d.ts +17 -17
  98. package/es/slider/index.d.ts +3 -3
  99. package/es/split/split.vue_vue_type_script_setup_true_lang.js +6 -6
  100. package/es/steps/index.d.ts +6 -6
  101. package/es/tabs/index.d.ts +6 -6
  102. package/es/tag/index.d.ts +6 -6
  103. package/es/textarea/textarea.vue_vue_type_script_setup_true_lang.js +2 -2
  104. package/es/theme-provider/index.d.ts +9 -9
  105. package/es/time-picker/index.d.ts +6 -6
  106. package/es/timeline/index.d.ts +3 -3
  107. package/es/timeline/timeline.d.ts +1 -1
  108. package/es/tooltip/index.d.ts +3 -3
  109. package/es/tour/index.d.ts +3 -3
  110. package/es/tour/tour.vue_vue_type_script_setup_true_lang.js +6 -6
  111. package/es/tree/node-switcher.vue.d.ts +1 -1
  112. package/es/tree/tree.vue_vue_type_script_setup_true_lang.js +23 -23
  113. package/json/vetur-attributes.json +27 -153
  114. package/json/vetur-tags.json +13 -43
  115. package/json/web-types.json +43 -293
  116. package/package.json +10 -10
  117. package/es/calendar/hooks/use-calendar-theme.d.ts +0 -4
  118. package/es/layout/utils.d.ts +0 -1
  119. 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,2 @@
1
+ import type { PulseDriverConfig } from './styles';
2
+ export declare function registerPulseInstance(el: HTMLElement, config: PulseDriverConfig): () => void;
@@ -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,2 @@
1
+ import "../../style/index.css";
2
+ import "./index.css";
@@ -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,2 @@
1
+ import '../../style/index.scss';
2
+ import './index.scss';
@@ -0,0 +1,2 @@
1
+ import "../../style/index.scss";
2
+ import "./index.scss";
@@ -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 {};