@sdata/web-vue 2.3.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.
Files changed (141) hide show
  1. package/README.md +1 -1
  2. package/dist/sd.css +117 -191
  3. package/dist/sd.min.css +1 -1
  4. package/es/_components/transition/expand-transition.vue.d.ts +2 -2
  5. package/es/_hooks/use-responsive.d.ts +2 -2
  6. package/es/_hooks/use-theme-mode.d.ts +3 -0
  7. package/es/{calendar/hooks/use-calendar-theme.js → _hooks/use-theme-mode.js} +14 -10
  8. package/es/_utils/responsive-observe.d.ts +5 -4
  9. package/es/_utils/responsive-observe.js +2 -1
  10. package/es/alert/index.d.ts +3 -3
  11. package/es/anchor/index.d.ts +3 -3
  12. package/es/avatar/index.d.ts +20 -20
  13. package/es/border-beam/border-beam.js +5 -0
  14. package/es/border-beam/border-beam.vue.d.ts +52 -0
  15. package/es/border-beam/border-beam.vue_vue_type_script_setup_true_lang.js +623 -0
  16. package/es/border-beam/index.d.ts +106 -0
  17. package/es/border-beam/index.js +10 -0
  18. package/es/border-beam/pulseDriver.d.ts +2 -0
  19. package/es/border-beam/pulseDriver.js +74 -0
  20. package/es/border-beam/style/css.js +2 -0
  21. package/es/border-beam/style/index.css +21 -0
  22. package/es/border-beam/style/index.d.ts +2 -0
  23. package/es/border-beam/style/index.js +2 -0
  24. package/es/border-beam/style/index.scss +12 -0
  25. package/es/border-beam/style/token.scss +12 -0
  26. package/es/border-beam/styles.d.ts +42 -0
  27. package/es/border-beam/styles.js +3545 -0
  28. package/es/border-beam/types.d.ts +27 -0
  29. package/es/button/index.d.ts +24 -24
  30. package/es/calendar/components/cell.vue.d.ts +26 -26
  31. package/es/calendar/components/index.vue.d.ts +1 -1
  32. package/es/calendar/components/index.vue_vue_type_script_setup_true_lang.js +3 -2
  33. package/es/calendar/index.d.ts +5 -5
  34. package/es/carousel/index.d.ts +3 -3
  35. package/es/cascader/cascader.vue.d.ts +8 -8
  36. package/es/checkbox/checkbox.d.ts +3 -3
  37. package/es/collapse/collapse-item.d.ts +5 -5
  38. package/es/collapse/index.d.ts +3 -3
  39. package/es/components.d.ts +1 -0
  40. package/es/config-provider/index.d.ts +21 -21
  41. package/es/date-picker/index.d.ts +14 -14
  42. package/es/date-picker/panels/date/index.vue.d.ts +2 -2
  43. package/es/date-picker/panels/month/index.vue.d.ts +2 -2
  44. package/es/date-picker/panels/quarter/index.vue.d.ts +2 -2
  45. package/es/date-picker/panels/week/index.vue.d.ts +2 -2
  46. package/es/date-picker/panels/year/index.vue.d.ts +2 -2
  47. package/es/date-picker/picker-panel.vue.d.ts +12 -12
  48. package/es/date-picker/picker.vue.d.ts +14 -14
  49. package/es/date-picker/range-picker.vue.d.ts +15 -15
  50. package/es/descriptions/index.d.ts +24 -24
  51. package/es/drawer/drawer.vue.d.ts +5 -5
  52. package/es/drawer/index.d.ts +15 -15
  53. package/es/dropdown/dropdown-button.vue.d.ts +4 -4
  54. package/es/dropdown/index.d.ts +15 -15
  55. package/es/ellipsis/ellipsis.vue.d.ts +7 -7
  56. package/es/ellipsis/performant-ellipsis.vue.d.ts +5 -5
  57. package/es/form/form-item.vue_vue_type_script_setup_true_lang.js +3 -3
  58. package/es/form/index.d.ts +3 -3
  59. package/es/grid/grid-col.vue_vue_type_script_setup_true_lang.js +2 -2
  60. package/es/grid/grid.vue_vue_type_script_setup_true_lang.js +10 -10
  61. package/es/icon/icon-menu/icon-menu.js +5 -0
  62. package/es/icon/icon-menu/icon-menu.vue_vue_type_script_setup_true_lang.js +52 -0
  63. package/es/icon/icon-menu/index.js +9 -0
  64. package/es/image/preview.vue.d.ts +2 -2
  65. package/es/index.css +117 -191
  66. package/es/index.d.ts +3 -1
  67. package/es/index.js +3 -2
  68. package/es/index.scss +1 -0
  69. package/es/input/index.d.ts +7 -7
  70. package/es/input/input-password.vue.d.ts +3 -3
  71. package/es/json-form/index.d.ts +9 -9
  72. package/es/json-form/json-form-item.vue_vue_type_script_setup_true_lang.js +1 -1
  73. package/es/json-form/json-form.vue.d.ts +3 -3
  74. package/es/layout/content.vue.d.ts +2 -2
  75. package/es/layout/content.vue_vue_type_script_setup_true_lang.js +8 -3
  76. package/es/layout/context.d.ts +12 -9
  77. package/es/layout/context.js +11 -3
  78. package/es/layout/footer.vue.d.ts +2 -2
  79. package/es/layout/footer.vue_vue_type_script_setup_true_lang.js +8 -3
  80. package/es/layout/header.vue.d.ts +3 -30
  81. package/es/layout/header.vue_vue_type_script_setup_true_lang.js +9 -339
  82. package/es/layout/hooks/use-has-sider.d.ts +2 -0
  83. package/es/layout/hooks/use-has-sider.js +38 -0
  84. package/es/layout/index.d.ts +91 -380
  85. package/es/layout/index.js +2 -2
  86. package/es/layout/interface.d.ts +12 -46
  87. package/es/layout/layout.vue.d.ts +4 -2
  88. package/es/layout/layout.vue_vue_type_script_setup_true_lang.js +38 -14
  89. package/es/layout/sider.vue.d.ts +47 -183
  90. package/es/layout/sider.vue_vue_type_script_setup_true_lang.js +191 -370
  91. package/es/layout/style/index.css +112 -190
  92. package/es/layout/style/index.scss +127 -239
  93. package/es/layout/style/token.scss +46 -26
  94. package/es/link/index.d.ts +6 -6
  95. package/es/list/index.d.ts +18 -18
  96. package/es/menu/base-menu.vue.d.ts +1 -1
  97. package/es/menu/base-menu.vue_vue_type_script_setup_true_lang.js +14 -14
  98. package/es/menu/item.d.ts +1 -1
  99. package/es/menu/menu.d.ts +12 -12
  100. package/es/menu/menu.js +3 -3
  101. package/es/modal/index.d.ts +15 -15
  102. package/es/modal/modal.vue.d.ts +4 -4
  103. package/es/popconfirm/index.d.ts +12 -12
  104. package/es/popover/index.d.ts +12 -12
  105. package/es/progress/index.d.ts +6 -6
  106. package/es/qr-code/index.d.ts +3 -3
  107. package/es/radio/radio.d.ts +3 -3
  108. package/es/resize-box/resize-box.vue.d.ts +4 -4
  109. package/es/resize-box/resize-box.vue_vue_type_script_setup_true_lang.js +7 -7
  110. package/es/result/index.d.ts +3 -3
  111. package/es/scrollbar/style/index.css +1 -1
  112. package/es/scrollbar/style/index.scss +4 -1
  113. package/es/sd-vue.js +3 -1
  114. package/es/select/select.d.ts +17 -17
  115. package/es/slider/index.d.ts +3 -3
  116. package/es/split/split.vue.d.ts +4 -4
  117. package/es/split/split.vue_vue_type_script_setup_true_lang.js +6 -6
  118. package/es/steps/index.d.ts +6 -6
  119. package/es/tabs/index.d.ts +6 -6
  120. package/es/tag/index.d.ts +6 -6
  121. package/es/tag/tag.vue.d.ts +2 -2
  122. package/es/textarea/textarea.vue_vue_type_script_setup_true_lang.js +2 -2
  123. package/es/theme-provider/index.d.ts +9 -9
  124. package/es/time-picker/index.d.ts +6 -6
  125. package/es/time-picker/time-picker.vue.d.ts +2 -2
  126. package/es/timeline/index.d.ts +3 -3
  127. package/es/timeline/timeline.d.ts +1 -1
  128. package/es/tooltip/index.d.ts +3 -3
  129. package/es/tour/index.d.ts +3 -3
  130. package/es/tour/tour.vue_vue_type_script_setup_true_lang.js +6 -6
  131. package/es/tree/expand-transition.vue.d.ts +2 -2
  132. package/es/tree/node-switcher.vue.d.ts +1 -1
  133. package/es/tree/tree.vue_vue_type_script_setup_true_lang.js +23 -23
  134. package/es/tree-select/tree-select.vue.d.ts +9 -9
  135. package/json/vetur-attributes.json +23 -156
  136. package/json/vetur-tags.json +12 -44
  137. package/json/web-types.json +38 -304
  138. package/package.json +5 -5
  139. package/es/calendar/hooks/use-calendar-theme.d.ts +0 -4
  140. package/es/layout/utils.d.ts +0 -1
  141. 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 {};