hys-ui 0.4.0 → 0.5.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 (92) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/components/HysAnimatedNumber/HysAnimatedNumber.vue.js +3 -3
  3. package/dist/components/HysAnimatedNumber/HysAnimatedNumber2.vue.js +440 -119
  4. package/dist/components/HysAnimatedNumber/NumberAnimationCanvas/NumberAnimationCanvas.vue.js +7 -0
  5. package/dist/components/HysAnimatedNumber/NumberAnimationCanvas/NumberAnimationCanvas2.vue.js +166 -0
  6. package/dist/components/HysAnimatedNumber/NumberDigits/NumberDigits.vue.js +7 -0
  7. package/dist/components/HysAnimatedNumber/NumberDigits/NumberDigits2.vue.js +105 -0
  8. package/dist/components/HysAnimatedNumber/animation/digital.js +186 -0
  9. package/dist/components/HysAnimatedNumber/animation/morph.js +110 -0
  10. package/dist/components/HysAnimatedNumber/animation/paint.js +34 -0
  11. package/dist/components/HysAnimatedNumber/animation/particles.js +51 -0
  12. package/dist/components/HysAnimatedNumber/animation/paths.js +165 -0
  13. package/dist/components/HysAnimatedNumber/animation/physics.js +66 -0
  14. package/dist/components/HysAnimatedNumber/animation/render.js +89 -0
  15. package/dist/components/HysAnimatedNumber/animation/reveal.js +125 -0
  16. package/dist/components/HysAnimatedNumber/animation/rolling.js +66 -0
  17. package/dist/components/HysAnimatedNumber/animation/scenarios.js +217 -0
  18. package/dist/components/HysAnimatedNumber/animation/spatial.js +112 -0
  19. package/dist/components/HysAnimatedNumber/useNumberCountdown.js +58 -0
  20. package/dist/components/HysAnimatedNumber/useNumberVisuals.js +60 -0
  21. package/dist/components/HysFormItem/HysFormItem.vue.js +1 -1
  22. package/dist/components/HysFormItem/HysFormItem2.vue.js +231 -229
  23. package/dist/components/HysInput/HysInput.vue.js +2 -2
  24. package/dist/components/HysInput/HysInput2.vue.js +327 -274
  25. package/dist/components/HysTextarea/HysTextarea.vue.js +56 -32
  26. package/dist/composables/animatedNumberDigits.js +106 -0
  27. package/dist/composables/animatedNumberFormat.js +222 -0
  28. package/dist/composables/animatedNumberTiming.js +66 -0
  29. package/dist/composables/numberAnimation.js +72 -0
  30. package/dist/composables/numberAnimationCatalog.js +301 -0
  31. package/dist/composables/numberAnimationSequence.js +45 -0
  32. package/dist/composables/textInput.js +23 -14
  33. package/dist/composables/useHysAnimatedNumber.js +264 -0
  34. package/dist/composables/useHysNumberAnimationGroup.js +23 -0
  35. package/dist/composables/useTextareaSize.js +62 -46
  36. package/dist/index.js +129 -117
  37. package/dist/style.css +1 -1
  38. package/dist/types/components/HysAnimatedNumber/HysAnimatedNumber.vue.d.ts +88 -49
  39. package/dist/types/components/HysAnimatedNumber/NumberAnimationCanvas/NumberAnimationCanvas.vue.d.ts +19 -0
  40. package/dist/types/components/HysAnimatedNumber/NumberDigits/NumberDigits.vue.d.ts +31 -0
  41. package/dist/types/components/HysAnimatedNumber/animation/digital.d.ts +3 -0
  42. package/dist/types/components/HysAnimatedNumber/animation/morph.d.ts +2 -0
  43. package/dist/types/components/HysAnimatedNumber/animation/paint.d.ts +44 -0
  44. package/dist/types/components/HysAnimatedNumber/animation/particles.d.ts +5 -0
  45. package/dist/types/components/HysAnimatedNumber/animation/paths.d.ts +12 -0
  46. package/dist/types/components/HysAnimatedNumber/animation/physics.d.ts +2 -0
  47. package/dist/types/components/HysAnimatedNumber/animation/render.d.ts +2 -0
  48. package/dist/types/components/HysAnimatedNumber/animation/reveal.d.ts +2 -0
  49. package/dist/types/components/HysAnimatedNumber/animation/rolling.d.ts +2 -0
  50. package/dist/types/components/HysAnimatedNumber/animation/scenarios.d.ts +4 -0
  51. package/dist/types/components/HysAnimatedNumber/animation/spatial.d.ts +2 -0
  52. package/dist/types/components/HysAnimatedNumber/useNumberCountdown.d.ts +8 -0
  53. package/dist/types/components/HysAnimatedNumber/useNumberVisuals.d.ts +12 -0
  54. package/dist/types/components/HysAutocomplete/HysAutocomplete.vue.d.ts +11 -2
  55. package/dist/types/components/HysAvatarGroup/HysAvatarGroup.vue.d.ts +2 -2
  56. package/dist/types/components/HysCard/HysCard.vue.d.ts +1 -1
  57. package/dist/types/components/HysCascader/HysCascader.vue.d.ts +3 -3
  58. package/dist/types/components/HysCascader/HysCascaderColumn.vue.d.ts +2 -2
  59. package/dist/types/components/HysColorPicker/HysColorPicker.vue.d.ts +2 -2
  60. package/dist/types/components/HysDatePicker/HysDatePicker.vue.d.ts +3 -3
  61. package/dist/types/components/HysDatePicker/HysDatePickerControl.vue.d.ts +5 -5
  62. package/dist/types/components/HysDateRangePicker/HysDateRangePicker.vue.d.ts +3 -3
  63. package/dist/types/components/HysDrawer/HysDrawer.vue.d.ts +1 -1
  64. package/dist/types/components/HysFormItem/HysFormItem.vue.d.ts +1 -1
  65. package/dist/types/components/HysInput/HysInput.vue.d.ts +13 -1
  66. package/dist/types/components/HysNumberInput/HysNumberInput.vue.d.ts +2 -2
  67. package/dist/types/components/HysPopover/HysPopover.vue.d.ts +1 -1
  68. package/dist/types/components/HysSearch/HysSearch.vue.d.ts +1 -1
  69. package/dist/types/components/HysSkeleton/HysSkeleton.vue.d.ts +2 -2
  70. package/dist/types/components/HysSteps/HysSteps.vue.d.ts +1 -1
  71. package/dist/types/components/HysTabs/HysTabs.vue.d.ts +1 -1
  72. package/dist/types/components/HysTagInput/HysTagInput.vue.d.ts +1 -1
  73. package/dist/types/components/HysTextarea/HysTextarea.vue.d.ts +13 -2
  74. package/dist/types/components/HysToast/HysToast.vue.d.ts +1 -1
  75. package/dist/types/components/HysTooltip/HysTooltip.vue.d.ts +1 -1
  76. package/dist/types/components/HysTour/HysTour.vue.d.ts +1 -1
  77. package/dist/types/components/HysTreeSelect/HysTreeSelect.vue.d.ts +3 -3
  78. package/dist/types/components/HysUpload/HysUpload.vue.d.ts +2 -2
  79. package/dist/types/composables/animatedNumber.d.ts +220 -0
  80. package/dist/types/composables/animatedNumberDigits.d.ts +32 -0
  81. package/dist/types/composables/animatedNumberFormat.d.ts +16 -0
  82. package/dist/types/composables/animatedNumberTiming.d.ts +21 -0
  83. package/dist/types/composables/drawer.d.ts +1 -1
  84. package/dist/types/composables/numberAnimation.d.ts +29 -0
  85. package/dist/types/composables/numberAnimationCatalog.d.ts +58 -0
  86. package/dist/types/composables/numberAnimationSequence.d.ts +13 -0
  87. package/dist/types/composables/textInput.d.ts +39 -4
  88. package/dist/types/composables/useHysAnimatedNumber.d.ts +37 -0
  89. package/dist/types/composables/useHysNumberAnimationGroup.d.ts +4 -0
  90. package/dist/types/composables/useTextareaSize.d.ts +5 -2
  91. package/dist/types/index.d.ts +12 -2
  92. package/package.json +1 -1
@@ -0,0 +1,29 @@
1
+ import type { HysNumberEffect } from "./animatedNumber";
2
+ import { type HysNumberAnimationEntry, type HysNumberAnimationName } from "./numberAnimationCatalog";
3
+ export interface HysNumberAnimationConfig {
4
+ /** 内置名称、原有效果名称或 animationPresets 中的预设名。 */
5
+ name: HysNumberAnimationName | HysNumberEffect | (string & {});
6
+ /** 效果强度 0–2。 */
7
+ strength?: number;
8
+ /** 滚动圈数或重复次数 1–12。 */
9
+ cycles?: number;
10
+ /** 数位交错量,按总时长比例指定,范围 0–0.9。 */
11
+ stagger?: number;
12
+ /** 可复现的随机种子。 */
13
+ seed?: number;
14
+ /** 为有方向的效果选择滚动轴。 */
15
+ axis?: "horizontal" | "vertical";
16
+ }
17
+ export type HysNumberAnimationItem = HysNumberAnimationConfig["name"] | HysNumberAnimationConfig;
18
+ export type HysNumberAnimation = HysNumberAnimationItem | readonly HysNumberAnimationItem[];
19
+ export type HysNumberAnimationPresets = Readonly<Record<string, HysNumberAnimation>>;
20
+ export type HysNumberDigitAnimations = Readonly<Record<string, HysNumberAnimation>>;
21
+ export interface ResolvedNumberAnimation extends Omit<HysNumberAnimationConfig, "name"> {
22
+ entry?: HysNumberAnimationEntry;
23
+ effect?: HysNumberEffect;
24
+ }
25
+ export declare function resolveNumberAnimation(animation: unknown, presets?: HysNumberAnimationPresets): ResolvedNumberAnimation[];
26
+ /** 导入可复用的动画配置,名称在实际使用时按预设表解析。 */
27
+ export declare function parseHysNumberAnimation(json: string): readonly HysNumberAnimationConfig[];
28
+ /** 导出动画配置。仅保存名称与可序列化参数。 */
29
+ export declare function stringifyHysNumberAnimation(animation: HysNumberAnimation): string;
@@ -0,0 +1,58 @@
1
+ /** Built-in effects, grouped as presented in the documentation. */
2
+ declare const categories: readonly [{
3
+ readonly id: "rolling";
4
+ readonly label: "机械滚动与计数动画";
5
+ readonly entries: readonly [readonly ["drum-roll", "数字滚筒动画", "Drum Roll"], readonly ["gear-counter", "数字齿轮滚动", "Gear Counter"], readonly ["conveyor-counter", "数字传送带动画", "Conveyor Counter"], readonly ["waterfall-counter", "数字瀑布滚动", "Waterfall Counter"], readonly ["spiral-roll", "数字螺旋滚动", "Spiral Roll"], readonly ["inertia-roll", "数字惯性滚动", "Inertia Roll"], readonly ["accelerating-roll", "数字加速滚动", "Accelerating Roll"], readonly ["decelerating-roll", "数字减速滚动", "Decelerating Roll"], readonly ["overshoot-roll", "数字回弹滚动", "Overshoot Roll"], readonly ["damped-roll", "数字阻尼滚动", "Damped Roll"], readonly ["multi-cycle-roll", "数字多圈滚动", "Multi-Cycle Roll"], readonly ["segmented-roll", "数字分段滚动", "Segmented Roll"], readonly ["step-counter", "数字阶梯计数", "Step Counter"], readonly ["jump-counter", "数字跳跃计数", "Jump Counter"], readonly ["differential-roll", "数字差速滚动", "Differential Roll"], readonly ["synchronized-roll", "数字同步滚轮", "Synchronized Roll"], readonly ["asynchronous-roll", "数字异步滚轮", "Asynchronous Roll"], readonly ["sequential-stop", "数字逐位停靠", "Sequential Stop"], readonly ["mechanical-snap", "数字机械卡位", "Mechanical Snap"], readonly ["mileage-tick", "数字里程跳表", "Mileage Tick"]];
6
+ }, {
7
+ readonly id: "spatial";
8
+ readonly label: "3D 立体与翻转动画";
9
+ readonly entries: readonly [readonly ["cube-rotate", "3D 数字立方体旋转", "Cube Rotate"], readonly ["cylinder-rotate", "3D 数字圆柱旋转", "Cylinder Rotate"], readonly ["sphere-rotate", "3D 数字球面旋转", "Sphere Rotate"], readonly ["3d-wheel", "3D 数字轮盘", "3D Wheel"], readonly ["vertical-fold", "数字上下折叠", "Vertical Fold"], readonly ["horizontal-fold", "数字左右折叠", "Horizontal Fold"], readonly ["card-flip", "数字卡片翻页", "Card Flip"], readonly ["calendar-flip", "数字日历翻页", "Calendar Flip"], readonly ["split-flap-clock", "复古翻页时钟", "Split-Flap Clock"], readonly ["blinds-flip", "数字百叶窗翻转", "Blinds Flip"], readonly ["3d-pop-out", "数字立体弹出", "3D Pop Out"], readonly ["3d-retract", "数字立体缩回", "3D Retract"], readonly ["perspective-rotate", "数字透视旋转", "Perspective Rotate"], readonly ["depth-transition", "数字空间穿梭", "Depth Transition"], readonly ["axis-flip", "数字轴向翻转", "Axis Flip"], readonly ["polyhedron-transition", "数字多面体切换", "Polyhedron Transition"], readonly ["3d-floating", "数字立体悬浮", "3D Floating"], readonly ["3d-tilt", "数字立体倾斜", "3D Tilt"], readonly ["3d-compression", "数字立体挤压", "3D Compression"], readonly ["3d-unfold", "数字立体展开", "3D Unfold"]];
10
+ }, {
11
+ readonly id: "morph";
12
+ readonly label: "数字形态变换动画";
13
+ readonly entries: readonly [readonly ["number-morph", "数字形状渐变", "Number Morph"], readonly ["path-morphing", "数字路径变形", "Path Morphing"], readonly ["outline-morph", "数字轮廓变形", "Outline Morph"], readonly ["stroke-rebuild", "数字笔画重组", "Stroke Rebuild"], readonly ["skeleton-morph", "数字骨架变换", "Skeleton Morph"], readonly ["liquid-morph", "数字液态变形", "Liquid Morph"], readonly ["clay-morph", "数字橡皮泥变形", "Clay Morph"], readonly ["melting-number", "数字融化变形", "Melting Number"], readonly ["stretch-morph", "数字拉伸变形", "Stretch Morph"], readonly ["squash-morph", "数字压缩变形", "Squash Morph"], readonly ["twist-morph", "数字扭曲变形", "Twist Morph"], readonly ["rotate-morph", "数字旋转变形", "Rotate Morph"], readonly ["fragment-morph", "数字碎片重组", "Fragment Morph"], readonly ["geometric-morph", "数字几何重构", "Geometric Morph"], readonly ["polyline-morph", "数字折线变形", "Polyline Morph"], readonly ["curve-morph", "数字曲线变形", "Curve Morph"], readonly ["smooth-morph", "数字平滑形变", "Smooth Morph"], readonly ["split-and-merge", "数字分裂与合并", "Split & Merge"], readonly ["character-blend", "数字字符融合", "Character Blend"], readonly ["contour-flow", "数字轮廓流动", "Contour Flow"]];
14
+ }, {
15
+ readonly id: "reveal";
16
+ readonly label: "数字揭示与排版动画";
17
+ readonly entries: readonly [readonly ["digit-reveal", "数字逐字揭示", "Digit Reveal"], readonly ["mask-reveal", "数字遮罩揭示", "Mask Reveal"], readonly ["wipe-reveal", "数字擦除揭示", "Wipe Reveal"], readonly ["scan-reveal", "数字扫描揭示", "Scan Reveal"], readonly ["clip-reveal", "数字裁剪揭示", "Clip Reveal"], readonly ["center-reveal", "数字中心向外展开", "Center Reveal"], readonly ["edge-converge", "数字两侧向中心收拢", "Edge Converge"], readonly ["rise-reveal", "数字从底部升起", "Rise Reveal"], readonly ["drop-reveal", "数字从顶部降落", "Drop Reveal"], readonly ["shutter-reveal", "数字百叶窗揭示", "Shutter Reveal"], readonly ["number-typewriter", "数字打字机效果", "Number Typewriter"], readonly ["handwriting-number", "数字手写绘制", "Handwriting Number"], readonly ["stroke-draw", "数字路径描绘", "Stroke Draw"], readonly ["outline-fill", "数字轮廓填充", "Outline Fill"], readonly ["progressive-fill", "数字渐进填充", "Progressive Fill"], readonly ["wave-fill", "数字波浪填充", "Wave Fill"], readonly ["shine-sweep", "数字遮罩扫光", "Shine Sweep"], readonly ["light-reveal", "数字光束揭示", "Light Reveal"], readonly ["slice-assemble", "数字切片拼接", "Slice Assemble"], readonly ["staggered-reveal", "数字交错揭示", "Staggered Reveal"]];
18
+ }, {
19
+ readonly id: "physics";
20
+ readonly label: "弹性与物理运动动画";
21
+ readonly entries: readonly [readonly ["gravity-drop", "数字重力下落", "Gravity Drop"], readonly ["free-fall", "数字自由落体", "Free Fall"], readonly ["ground-bounce", "数字落地反弹", "Ground Bounce"], readonly ["spring-stretch", "数字弹簧伸缩", "Spring Stretch"], readonly ["rubber-band", "数字橡胶回弹", "Rubber Band"], readonly ["jelly", "数字果冻抖动", "Jelly"], readonly ["squash-and-stretch", "数字弹性挤压", "Squash & Stretch"], readonly ["pendulum", "数字钟摆摆动", "Pendulum"], readonly ["swing", "数字左右摇摆", "Swing"], readonly ["inertia-slide", "数字惯性滑动", "Inertia Slide"], readonly ["magnetic-snap", "数字磁吸定位", "Magnetic Snap"], readonly ["wave-motion", "数字波浪起伏", "Wave Motion"], readonly ["pulse", "数字连续脉冲", "Pulse"], readonly ["breathing", "数字呼吸动画", "Breathing"], readonly ["heartbeat", "数字心跳动画", "Heartbeat"], readonly ["rhythmic-vibration", "数字节奏振动", "Rhythmic Vibration"], readonly ["impact", "数字冲击反馈", "Impact"], readonly ["catapult", "数字弹射入场", "Catapult"], readonly ["spin-pop", "数字旋转弹入", "Spin Pop"], readonly ["elastic-return", "数字弹性归位", "Elastic Return"]];
22
+ }, {
23
+ readonly id: "particles";
24
+ readonly label: "粒子、碎片与流体动画";
25
+ readonly entries: readonly [readonly ["particle-assemble", "数字粒子聚合", "Particle Assemble"], readonly ["particle-dissolve", "数字粒子消散", "Particle Dissolve"], readonly ["particle-rebuild", "数字粒子重组", "Particle Rebuild"], readonly ["pixel-assemble", "数字像素聚合", "Pixel Assemble"], readonly ["pixel-dissolve", "数字像素溶解", "Pixel Dissolve"], readonly ["mosaic-transition", "数字马赛克切换", "Mosaic Transition"], readonly ["fragment-scatter", "数字碎片飞散", "Fragment Scatter"], readonly ["fragment-assemble", "数字碎片拼接", "Fragment Assemble"], readonly ["sand-assemble", "数字沙粒聚合", "Sand Assemble"], readonly ["sand-fall", "数字沙粒坠落", "Sand Fall"], readonly ["smoke-reveal", "数字烟雾显现", "Smoke Reveal"], readonly ["water-ripple", "数字水波扩散", "Water Ripple"], readonly ["liquid-gather", "数字液滴汇聚", "Liquid Gather"], readonly ["liquid-flow", "数字液体流动", "Liquid Flow"], readonly ["ink-spread", "数字墨水扩散", "Ink Spread"], readonly ["ink-rebuild", "数字墨水重组", "Ink Rebuild"], readonly ["light-particle-gather", "数字光点汇聚", "Light Particle Gather"], readonly ["firefly-gather", "数字萤火虫聚合", "Firefly Gather"], readonly ["star-scatter", "数字星光散射", "Star Scatter"], readonly ["particle-burst", "数字粒子爆发", "Particle Burst"]];
26
+ }, {
27
+ readonly id: "digital";
28
+ readonly label: "科技感与赛博数字动画";
29
+ readonly entries: readonly [readonly ["seven-segment-display", "LED 七段数码管", "Seven-Segment Display"], readonly ["sixteen-segment-display", "LED 十六段数码管", "Sixteen-Segment Display"], readonly ["dot-matrix-number", "LED 点阵数字", "Dot Matrix Number"], readonly ["lcd-number", "LCD 液晶数字", "LCD Number"], readonly ["neon-number", "霓虹灯数字", "Neon Number"], readonly ["holographic-number", "全息投影数字", "Holographic Number"], readonly ["matrix-decode", "数字矩阵解码", "Matrix Decode"], readonly ["binary-decode", "数字二进制解码", "Binary Decode"], readonly ["hex-decode", "数字十六进制解码", "Hex Decode"], readonly ["character-scramble", "数字字符扰动", "Character Scramble"], readonly ["glitch", "数字故障闪烁", "Glitch"], readonly ["signal-interference", "数字信号干扰", "Signal Interference"], readonly ["rgb-split", "数字 RGB 色差", "RGB Split"], readonly ["scanline", "数字扫描线", "Scanline"], readonly ["crt-effect", "数字 CRT 复古显示", "CRT Effect"], readonly ["electronic-pulse", "数字电子脉冲", "Electronic Pulse"], readonly ["electric-flow", "数字电流流动", "Electric Flow"], readonly ["energy-charging", "数字能量充能", "Energy Charging"], readonly ["energy-discharge", "数字能量释放", "Energy Discharge"], readonly ["radar-scan", "数字雷达扫描", "Radar Scan"], readonly ["raster-transition", "数字光栅切换", "Raster Transition"], readonly ["pixel-scan", "数字像素扫描", "Pixel Scan"], readonly ["data-stream", "数字数据流切换", "Data Stream"], readonly ["code-rain", "数字代码雨", "Code Rain"], readonly ["terminal-print", "数字终端打印", "Terminal Print"], readonly ["terminal-cursor", "数字终端光标闪烁", "Terminal Cursor"], readonly ["hud-counter", "数字 HUD 仪表显示", "HUD Counter"], readonly ["halo-pulse", "数字光环脉冲", "Halo Pulse"], readonly ["laser-outline", "数字激光描边", "Laser Outline"], readonly ["grid-rebuild", "数字科技网格重组", "Grid Rebuild"]];
30
+ }, {
31
+ readonly id: "data";
32
+ readonly label: "金融、统计与数据可视化动画";
33
+ readonly entries: readonly [readonly ["amount-rise", "金额逐位增长动画"], readonly ["amount-fall", "金额逐位下降动画"], readonly ["fractional-roll", "金额小数位独立滚动"], readonly ["currency-switch", "货币符号切换动画"], readonly ["sign-flip", "正负号翻转动画"], readonly ["grouping-reflow", "数字千分位动态重排"], readonly ["carry-highlight", "数值进位强调动画"], readonly ["borrow-highlight", "数值退位强调动画"], readonly ["trend-up", "数值增长箭头联动"], readonly ["trend-down", "数值下降箭头联动"], readonly ["delta-expand", "数字差值展开动画"], readonly ["percent-change", "数字百分比变化动画"], readonly ["gain-highlight", "数字增幅强调动画"], readonly ["threshold-cross", "数字阈值突破动画"], readonly ["goal-reached", "数字目标达成动画"], readonly ["goal-exceeded", "数字目标超额动画"], readonly ["progress-fill", "数字进度填充动画"], readonly ["ring-progress", "数字环形进度联动"], readonly ["gauge-needle", "数字仪表盘指针联动"], readonly ["trend-line", "数字趋势曲线联动"], readonly ["chart-growth", "数字图表同步增长"], readonly ["ranking-swap", "数字排行榜名次切换"], readonly ["rank-rise", "数字名次跃升动画"], readonly ["rank-fall", "数字名次下降动画"], readonly ["kpi-refresh", "KPI 数值刷新动画"], readonly ["kpi-alert", "KPI 数值异常警示动画"], readonly ["kpi-peak", "KPI 数值峰值强调动画"], readonly ["kpi-trough", "KPI 数值低谷强调动画"], readonly ["live-trade", "实时交易金额跳动动画"], readonly ["live-orders", "实时订单数量增长动画"]];
34
+ }, {
35
+ readonly id: "sequence";
36
+ readonly label: "数字组合与编排动画";
37
+ readonly entries: readonly [readonly ["sequential-start", "多数字依次启动", "Sequential Start"], readonly ["wave-start", "多数字波浪启动", "Wave Start"], readonly ["staircase-start", "多数字阶梯启动", "Staircase Start"], readonly ["center-out", "多数字中心扩散", "Center Out"], readonly ["outside-in", "多数字两侧汇聚", "Outside In"], readonly ["random-start", "多数字随机启动", "Random Start"], readonly ["synchronized-stop", "多数字同步定格", "Synchronized Stop"], readonly ["staggered-stop", "多数字错峰定格", "Staggered Stop"], readonly ["alternating-roll", "多数字交替滚动", "Alternating Roll"], readonly ["relay-roll", "多数字接力滚动", "Relay Roll"], readonly ["chain-transition", "多数字链式变化", "Chain Transition"], readonly ["rhythm-sync", "多数字节奏同步", "Rhythm Sync"], readonly ["cascade", "多数字级联变化", "Cascade"], readonly ["mirror-transition", "多数字镜像变化", "Mirror Transition"], readonly ["grouped-transition", "多数字分组变化", "Grouped Transition"], readonly ["matrix-sequence", "多数字矩阵编排", "Matrix Sequence"], readonly ["path-sequence", "多数字路径编排", "Path Sequence"], readonly ["random-rearrange", "多数字随机重排", "Random Rearrange"], readonly ["row-reveal", "多数字逐行揭示", "Row Reveal"], readonly ["column-reveal", "多数字逐列揭示", "Column Reveal"]];
38
+ }, {
39
+ readonly id: "special";
40
+ readonly label: "特殊展示与创意动画";
41
+ readonly entries: readonly [readonly ["flip-clock", "数字时钟翻页动画"], readonly ["rolling-stopwatch", "数字秒表滚动动画"], readonly ["lottery-draw", "数字彩票摇号动画"], readonly ["raffle-roll", "数字抽奖滚动动画"], readonly ["countdown-sprint", "数字倒计时冲刺动画"], readonly ["milestone", "数字里程碑达成动画"], readonly ["achievement", "数字成就解锁动画"], readonly ["coin-drop", "数字金币掉落动画"], readonly ["coin-stack", "数字金币堆叠动画"], readonly ["reward-burst", "数字奖励爆发动画"], readonly ["fireworks", "数字烟花庆祝动画"], readonly ["confetti", "数字彩带庆祝动画"], readonly ["medal-pop", "数字奖牌弹出动画"], readonly ["badge-light", "数字徽章点亮动画"], readonly ["energy-meter", "数字能量槽充满动画"], readonly ["thermometer", "数字温度计升降动画"], readonly ["battery", "数字电量充放动画"], readonly ["speedometer", "数字速度表加减速动画"], readonly ["water-level", "数字水位上涨下降动画"], readonly ["scale-ticks", "数字刻度尺动态变化动画"]];
42
+ }];
43
+ type Category = (typeof categories)[number];
44
+ export type HysNumberAnimationCategory = Category["id"];
45
+ export type HysNumberAnimationName = Category["entries"][number][0];
46
+ export interface HysNumberAnimationEntry {
47
+ name: HysNumberAnimationName;
48
+ label: string;
49
+ english?: string;
50
+ category: HysNumberAnimationCategory;
51
+ variant: number;
52
+ }
53
+ export declare const hysNumberAnimationCategories: {
54
+ id: "data" | "rolling" | "spatial" | "morph" | "reveal" | "physics" | "particles" | "digital" | "sequence" | "special";
55
+ label: "机械滚动与计数动画" | "3D 立体与翻转动画" | "数字形态变换动画" | "数字揭示与排版动画" | "弹性与物理运动动画" | "粒子、碎片与流体动画" | "科技感与赛博数字动画" | "金融、统计与数据可视化动画" | "数字组合与编排动画" | "特殊展示与创意动画";
56
+ }[];
57
+ export declare const hysNumberAnimationCatalog: readonly HysNumberAnimationEntry[];
58
+ export {};
@@ -0,0 +1,13 @@
1
+ export interface HysNumberSequenceStep {
2
+ index: number;
3
+ delay: number;
4
+ duration: number;
5
+ reverse: boolean;
6
+ }
7
+ /** 将多实例编排转换为每个实例的顺序、延迟、时长和播放方向。 */
8
+ export declare function createHysNumberSequence(name: string, count: number, options?: {
9
+ duration?: number;
10
+ interval?: number;
11
+ columns?: number;
12
+ seed?: number;
13
+ }): HysNumberSequenceStep[];
@@ -1,4 +1,4 @@
1
- import type { Component, InputHTMLAttributes, TextareaHTMLAttributes } from "vue";
1
+ import type { Component, InputHTMLAttributes, StyleValue, TextareaHTMLAttributes } from "vue";
2
2
  export interface HysInputFormatInfo {
3
3
  userTyping: boolean;
4
4
  input: string;
@@ -9,8 +9,20 @@ export interface HysInputCountInfo {
9
9
  maxLength?: number;
10
10
  }
11
11
  export type HysInputCountStrategy = boolean | ((value: string) => number);
12
+ export type HysInputSize = "sm" | "md" | "lg" | "small" | "middle" | "default" | "large";
13
+ export interface HysInputModelModifiers {
14
+ lazy?: boolean;
15
+ trim?: boolean;
16
+ number?: boolean;
17
+ }
18
+ export interface HysTextareaStyle {
19
+ height?: string;
20
+ overflowY?: "auto" | "hidden";
21
+ }
12
22
  export interface HysInputProps {
13
23
  modelValue?: string | number | null;
24
+ /** Vue v-model 修饰符。lazy 延后写入模型,trim 去首尾空白,number 由 Vue 转换数值。 */
25
+ modelModifiers?: HysInputModelModifiers;
14
26
  defaultValue?: string | number | null;
15
27
  placeholder?: string;
16
28
  type?: string;
@@ -21,6 +33,12 @@ export interface HysInputProps {
21
33
  error?: string;
22
34
  status?: "error" | "warning" | "success";
23
35
  clearable?: boolean;
36
+ /** 清空开关别名,clearable 显式设置时优先。 */
37
+ allowClear?: boolean;
38
+ /** 输入框外侧的附加文字,prepend 插槽优先。 */
39
+ addonBefore?: string;
40
+ /** 输入框外侧的附加文字,append 插槽优先。 */
41
+ addonAfter?: string;
24
42
  clearIcon?: Component;
25
43
  prefixIcon?: Component;
26
44
  suffixIcon?: Component;
@@ -42,7 +60,7 @@ export interface HysInputProps {
42
60
  allowInput?: (value: string) => boolean;
43
61
  autocomplete?: string;
44
62
  name?: string;
45
- size?: "sm" | "md" | "lg";
63
+ size?: HysInputSize;
46
64
  rows?: number;
47
65
  autosize?: boolean | {
48
66
  minRows?: number;
@@ -50,27 +68,44 @@ export interface HysInputProps {
50
68
  };
51
69
  resize?: "none" | "both" | "horizontal" | "vertical";
52
70
  inputProps?: InputHTMLAttributes | TextareaHTMLAttributes;
71
+ /** 应用到原生输入元素的样式。自动高度启用时由组件管理 height 和 overflowY。 */
72
+ inputStyle?: StyleValue;
73
+ /** 原生 inputmode,用于提示移动端键盘布局。 */
74
+ inputmode?: InputHTMLAttributes["inputmode"];
75
+ /** 原生控件的 Tab 顺序。 */
76
+ tabindex?: string | number;
77
+ /** 关联的原生 form 元素 ID,可提交在表单外的输入。 */
78
+ form?: string;
79
+ /** 是否由组件交互触发表单的 change、blur 校验,默认 true。 */
80
+ validateEvent?: boolean;
53
81
  autofocus?: boolean;
54
82
  selectOnFocus?: boolean;
55
83
  bordered?: boolean;
56
84
  round?: boolean;
57
85
  }
58
86
  export interface HysInputInstance {
87
+ element: HTMLInputElement | HTMLTextAreaElement | undefined;
59
88
  input: HTMLInputElement | HTMLTextAreaElement | undefined;
60
89
  textarea: HTMLTextAreaElement | undefined;
61
90
  isComposing: boolean;
91
+ passwordVisible: boolean;
92
+ textareaStyle: HysTextareaStyle;
62
93
  focus: (options?: FocusOptions) => void;
63
94
  blur: () => void;
64
95
  select: () => void;
65
96
  clear: () => void;
66
97
  resize: () => Promise<void>;
98
+ resizeTextarea: () => Promise<void>;
67
99
  setSelectionRange: (start: number, end: number, direction?: "forward" | "backward" | "none") => void;
68
100
  scrollTo: (options: ScrollToOptions) => void;
69
101
  }
70
- export type HysTextareaProps = Omit<HysInputProps, 'type' | 'showPassword' | 'showPasswordOn' | 'passwordVisible' | 'defaultPasswordVisible'>;
71
- export interface HysTextareaInstance extends Omit<HysInputInstance, 'input'> {
102
+ export type HysTextareaProps = Omit<HysInputProps, "type" | "showPassword" | "showPasswordOn" | "passwordVisible" | "defaultPasswordVisible">;
103
+ export interface HysTextareaInstance extends Omit<HysInputInstance, "input" | "element" | "passwordVisible"> {
72
104
  input: HTMLTextAreaElement | undefined;
105
+ element: HTMLTextAreaElement | undefined;
73
106
  }
107
+ export declare function textInputSize(size?: HysInputSize): "sm" | "md" | "lg" | undefined;
108
+ export declare function modelText(value: string, modifiers?: HysInputModelModifiers): string;
74
109
  export declare function textCount(value: string, strategy?: HysInputCountStrategy): number;
75
110
  export declare function textLimit(value: string, max: number | undefined, strategy?: HysInputCountStrategy): string;
76
111
  export declare function textLengthLimit(value?: string | number): number | undefined;
@@ -0,0 +1,37 @@
1
+ import { type MaybeRefOrGetter } from "vue";
2
+ import type { HysNumberComposableOptions, HysNumberEvent, HysNumberFrame, HysNumberValue } from "./animatedNumber";
3
+ /** 在 Vue setup 中使用。与 HysAnimatedNumber 共享调度和播放控制。 */
4
+ export declare function useHysAnimatedNumber(source?: MaybeRefOrGetter<HysNumberComposableOptions>, onEvent?: (event: HysNumberEvent, frame: HysNumberFrame) => void): {
5
+ frame: Readonly<import("vue").Ref<{
6
+ readonly value: HysNumberValue;
7
+ readonly from: HysNumberValue;
8
+ readonly to: HysNumberValue;
9
+ readonly progress: number;
10
+ readonly easedProgress: number;
11
+ readonly direction: import("./animatedNumber").HysNumberDirection;
12
+ readonly status: import("./animatedNumber").HysNumberStatus;
13
+ readonly iteration: number;
14
+ }, {
15
+ readonly value: HysNumberValue;
16
+ readonly from: HysNumberValue;
17
+ readonly to: HysNumberValue;
18
+ readonly progress: number;
19
+ readonly easedProgress: number;
20
+ readonly direction: import("./animatedNumber").HysNumberDirection;
21
+ readonly status: import("./animatedNumber").HysNumberStatus;
22
+ readonly iteration: number;
23
+ }>>;
24
+ motionEnabled: import("vue").ComputedRef<boolean>;
25
+ play: () => void;
26
+ pause: () => void;
27
+ resume: () => void;
28
+ stop: () => void;
29
+ restart: () => void;
30
+ reset: () => void;
31
+ reverse: () => void;
32
+ seek: (progress: number) => void;
33
+ finishAnimation: () => void;
34
+ updateTarget: (next: HysNumberValue) => void;
35
+ sync: () => void;
36
+ hold: (value: boolean) => void;
37
+ };
@@ -0,0 +1,4 @@
1
+ import { type MaybeRefOrGetter } from "vue";
2
+ import type { HysNumberControls } from "./animatedNumber";
3
+ /** 同时控制组件实例和独立动画。空实例会被跳过。 */
4
+ export declare function useHysNumberAnimationGroup(source: MaybeRefOrGetter<readonly (HysNumberControls | null | undefined)[]>): HysNumberControls;
@@ -1,3 +1,6 @@
1
1
  import { type Ref } from "vue";
2
- import type { HysInputProps } from "./textInput";
3
- export declare function useTextareaSize(input: Ref<HTMLInputElement | HTMLTextAreaElement | undefined>, props: HysInputProps, size: Ref<string>, value: Ref<string>): () => Promise<void>;
2
+ import type { HysInputProps, HysTextareaStyle } from "./textInput";
3
+ export declare function useTextareaSize(input: Ref<HTMLInputElement | HTMLTextAreaElement | undefined>, props: HysInputProps, size: Ref<string>, value: Ref<string>): {
4
+ resize: () => Promise<void>;
5
+ textareaStyle: import("vue").ShallowRef<HysTextareaStyle, HysTextareaStyle>;
6
+ };
@@ -4,8 +4,6 @@ export type { HysAccordionKey } from './components/HysAccordion/HysAccordion.vue
4
4
  export type { HysAccordionItem } from './components/HysAccordion/HysAccordion.vue';
5
5
  export { default as HysAlert } from './components/HysAlert/HysAlert.vue';
6
6
  export { default as HysAnimatedNumber } from './components/HysAnimatedNumber/HysAnimatedNumber.vue';
7
- export type { HysAnimatedNumberContext } from './components/HysAnimatedNumber/HysAnimatedNumber.vue';
8
- export type { HysAnimatedNumberProps } from './components/HysAnimatedNumber/HysAnimatedNumber.vue';
9
7
  export { default as HysAutocomplete } from './components/HysAutocomplete/HysAutocomplete.vue';
10
8
  export { default as HysAvatar } from './components/HysAvatar/HysAvatar.vue';
11
9
  export { default as HysAvatarGroup } from './components/HysAvatarGroup/HysAvatarGroup.vue';
@@ -132,6 +130,7 @@ export type { HysInputProps, HysTextareaProps, HysInputFormatInfo, HysInputCount
132
130
  export { useHysToast, createHysToast } from './composables/useHysToast';
133
131
  export type { HysToastApi, HysToastOptions, HysToastConfig, HysToastHandle, HysToastServiceConfig, HysToastService } from './composables/useHysToast';
134
132
  export type { HysSliderValue, HysSliderStep, HysSliderMarks, HysSliderDragInfo, HysSliderInstance } from './composables/slider';
133
+ export type { HysInputSize, HysInputModelModifiers, HysTextareaStyle } from './composables/textInput';
135
134
  export type { HysSelectLabeledValue } from './composables/selectOptions';
136
135
  export type { HysAvatarProps, HysAvatarSize, HysAvatarBreakpoint, HysAvatarFit, HysAvatarLoadInfo, HysAvatarOption, HysAvatarInstance, HysAvatarGroupProps, HysAvatarGroupInstance } from './composables/avatar';
137
136
  export type { HysAutocompleteProps, HysAutocompleteRow, HysAutocompleteOption, HysAutocompleteItem, HysAutocompleteGroup, HysAutocompleteDataOption, HysAutocompleteContext, HysAutocompleteCallback, HysAutocompleteFetch, HysAutocompleteInstance } from './composables/autocomplete';
@@ -162,6 +161,17 @@ export type { HysDrawerProps, HysDrawerBeforeClose, HysDrawerPlacement, HysDrawe
162
161
  export type { HysPopupPlacement, HysPopupTrigger, HysPopupVirtualReference, HysPopupReference, HysPopupSurfaceProps, HysTooltipProps, HysPopoverProps, HysPopupSurfaceContext, HysTooltipSlots, HysPopoverSlots, HysPopupSurfaceInstance, HysTooltipInstance, HysPopoverInstance } from './composables/popupSurface';
163
162
  export type { HysUploadFile, HysUploadItem, HysUploadStatus, HysUploadListType, HysUploadChangeType, HysUploadChange, HysUploadContext, HysUploadInvalid, HysUploadError, HysUploadDataScalar, HysUploadData, HysUploadRequestOptions, HysUploadRequestResult, HysUploadLocale, HysUploadProps, HysUploadActions, HysUploadFileContext, HysUploadSlotContext, HysUploadSlots, HysUploadInstance } from './composables/upload';
164
163
  export type { HysProgressType, HysProgressStatus, HysProgressSize, HysProgressLinecap, HysProgressGapPosition, HysProgressGradientDirection, HysProgressGradientStop, HysProgressGradient, HysProgressColorStop, HysProgressColor, HysProgressSuccess, HysProgressLabelContext, HysProgressProps, HysProgressSlots, HysProgressInstance } from './composables/progress';
164
+ export { useHysAnimatedNumber } from './composables/useHysAnimatedNumber';
165
+ export { useHysNumberAnimationGroup } from './composables/useHysNumberAnimationGroup';
166
+ export { hysNumberAnimationCatalog, hysNumberAnimationCategories } from './composables/numberAnimationCatalog';
167
+ export type { HysNumberAnimationCategory, HysNumberAnimationName, HysNumberAnimationEntry } from './composables/numberAnimationCatalog';
168
+ export { parseHysNumberAnimation, stringifyHysNumberAnimation } from './composables/numberAnimation';
169
+ export type { HysNumberAnimation, HysNumberAnimationConfig, HysNumberAnimationItem, HysNumberAnimationPresets, HysNumberDigitAnimations } from './composables/numberAnimation';
170
+ export { createHysNumberSequence } from './composables/numberAnimationSequence';
171
+ export type { HysNumberSequenceStep } from './composables/numberAnimationSequence';
172
+ export type { HysNumberInterpolationContext } from './composables/animatedNumber';
173
+ export type { HysNumberComposableOptions } from './composables/animatedNumber';
174
+ export type { HysAnimatedNumberContext, HysAnimatedNumberProps, HysAnimatedNumberInstance, HysNumberValue, HysNumberDirection, HysNumberStatus, HysNumberEasing, HysNumberInterrupt, HysNumberTrigger, HysNumberEffect, HysNumberRounding, HysNumberFormat, HysNumberAnimationOptions, HysNumberFrame, HysNumberTrend, HysNumberEvent, HysNumberControls, HysNumberUnitRule, HysNumberFormatOptions, HysNumberDigitContext } from './composables/animatedNumber';
165
175
  export type { HysAlertTone, HysAlertEffect, HysAlertTransition, HysAlertCloseContext, HysAlertProps, HysAlertSlotContext, HysAlertSlots, HysAlertInstance, HysEmptyIllustration, HysEmptyProps, HysEmptySlotContext, HysEmptySlots, HysEmptyInstance } from './composables/feedback';
166
176
  export type { HysTimelineKey, HysTimelineMode, HysTimelinePosition, HysTimelineSize, HysTimelineTone, HysTimelineItem, HysTimelineFieldNames, HysTimelineProps, HysTimelineItemContext, HysTimelinePendingContext, HysTimelineSlots, HysTimelineInstance } from './composables/timeline';
167
177
  export type { HysTagInputReason, HysTagInputAddContext, HysTagInputInvalid, HysTagInputProps, HysTagInputSlotContext, HysTagInputTagContext, HysTagInputSlots, HysTagInputInstance } from './composables/tagInput';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hys-ui",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "description": "Themeable Vue 3 components with TypeScript and interactive documentation",
5
5
  "type": "module",
6
6
  "license": "MIT",