@humuchen/mac-ui 0.0.1

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 (125) hide show
  1. package/README.md +940 -0
  2. package/dist/favicon.svg +1 -0
  3. package/dist/mac-ui.cjs.js +12367 -0
  4. package/dist/mac-ui.cjs.js.map +1 -0
  5. package/dist/mac-ui.es.js +18444 -0
  6. package/dist/mac-ui.es.js.map +1 -0
  7. package/dist/mac-ui.umd.js +12367 -0
  8. package/dist/mac-ui.umd.js.map +1 -0
  9. package/dist/types/components/alert/index.d.ts +1 -0
  10. package/dist/types/components/alert/mac-alert.d.ts +38 -0
  11. package/dist/types/components/alert/mac-alert.stories.d.ts +15 -0
  12. package/dist/types/components/animation/animations.d.ts +97 -0
  13. package/dist/types/components/animation/index.d.ts +3 -0
  14. package/dist/types/components/animation/mac-animation.d.ts +67 -0
  15. package/dist/types/components/animation/mac-animation.stories.d.ts +9 -0
  16. package/dist/types/components/button/index.d.ts +1 -0
  17. package/dist/types/components/button/mac-button.d.ts +37 -0
  18. package/dist/types/components/button/mac-button.stories.d.ts +14 -0
  19. package/dist/types/components/card/index.d.ts +1 -0
  20. package/dist/types/components/card/mac-card.d.ts +38 -0
  21. package/dist/types/components/card/mac-card.stories.d.ts +14 -0
  22. package/dist/types/components/carousel/index.d.ts +1 -0
  23. package/dist/types/components/carousel/mac-carousel.d.ts +105 -0
  24. package/dist/types/components/carousel/mac-carousel.stories.d.ts +18 -0
  25. package/dist/types/components/checkbox/index.d.ts +2 -0
  26. package/dist/types/components/checkbox/mac-checkbox.d.ts +94 -0
  27. package/dist/types/components/checkbox/mac-checkbox.stories.d.ts +17 -0
  28. package/dist/types/components/config-provider/index.d.ts +1 -0
  29. package/dist/types/components/config-provider/mac-config-provider.d.ts +23 -0
  30. package/dist/types/components/config-provider/mac-config-provider.stories.d.ts +12 -0
  31. package/dist/types/components/confirm/index.d.ts +2 -0
  32. package/dist/types/components/confirm/mac-confirm.d.ts +86 -0
  33. package/dist/types/components/confirm/mac-confirm.stories.d.ts +15 -0
  34. package/dist/types/components/data-table/index.d.ts +2 -0
  35. package/dist/types/components/data-table/mac-data-table.d.ts +212 -0
  36. package/dist/types/components/data-table/mac-data-table.stories.d.ts +18 -0
  37. package/dist/types/components/date-picker/date-picker-utils.d.ts +13 -0
  38. package/dist/types/components/date-picker/index.d.ts +3 -0
  39. package/dist/types/components/date-picker/mac-date-picker.d.ts +72 -0
  40. package/dist/types/components/date-picker/mac-date-picker.stories.d.ts +28 -0
  41. package/dist/types/components/date-picker/mac-date-range-picker.d.ts +58 -0
  42. package/dist/types/components/date-picker/mac-date-range-picker.stories.d.ts +13 -0
  43. package/dist/types/components/descriptions/mac-descriptions.d.ts +99 -0
  44. package/dist/types/components/descriptions/mac-descriptions.stories.d.ts +21 -0
  45. package/dist/types/components/desktop/index.d.ts +2 -0
  46. package/dist/types/components/desktop/mac-desktop.d.ts +88 -0
  47. package/dist/types/components/desktop/mac-desktop.stories.d.ts +17 -0
  48. package/dist/types/components/desktop-icon/index.d.ts +1 -0
  49. package/dist/types/components/desktop-icon/mac-desktop-icon.d.ts +46 -0
  50. package/dist/types/components/desktop-icon/mac-desktop-icon.stories.d.ts +8 -0
  51. package/dist/types/components/dock/index.d.ts +2 -0
  52. package/dist/types/components/dock/mac-dock-item.d.ts +37 -0
  53. package/dist/types/components/dock/mac-dock.d.ts +74 -0
  54. package/dist/types/components/dock/mac-dock.stories.d.ts +13 -0
  55. package/dist/types/components/drawer/mac-drawer.d.ts +87 -0
  56. package/dist/types/components/drawer/mac-drawer.stories.d.ts +15 -0
  57. package/dist/types/components/dropdown/index.d.ts +2 -0
  58. package/dist/types/components/dropdown/mac-dropdown.d.ts +77 -0
  59. package/dist/types/components/dropdown/mac-dropdown.stories.d.ts +13 -0
  60. package/dist/types/components/dynamic-tags/index.d.ts +1 -0
  61. package/dist/types/components/dynamic-tags/mac-dynamic-tags.d.ts +64 -0
  62. package/dist/types/components/dynamic-tags/mac-dynamic-tags.stories.d.ts +16 -0
  63. package/dist/types/components/form/index.d.ts +3 -0
  64. package/dist/types/components/form/mac-form-item.d.ts +67 -0
  65. package/dist/types/components/form/mac-form.d.ts +64 -0
  66. package/dist/types/components/form/mac-form.stories.d.ts +18 -0
  67. package/dist/types/components/group-button/index.d.ts +2 -0
  68. package/dist/types/components/group-button/mac-group-button.d.ts +50 -0
  69. package/dist/types/components/group-button/mac-group-button.stories.d.ts +13 -0
  70. package/dist/types/components/infinite-scroll/index.d.ts +1 -0
  71. package/dist/types/components/infinite-scroll/mac-infinite-scroll.d.ts +57 -0
  72. package/dist/types/components/infinite-scroll/mac-infinite-scroll.stories.d.ts +11 -0
  73. package/dist/types/components/input/index.d.ts +1 -0
  74. package/dist/types/components/input/mac-input.d.ts +73 -0
  75. package/dist/types/components/input/mac-input.stories.d.ts +19 -0
  76. package/dist/types/components/input-number/index.d.ts +1 -0
  77. package/dist/types/components/input-number/mac-input-number.d.ts +81 -0
  78. package/dist/types/components/input-number/mac-input-number.stories.d.ts +18 -0
  79. package/dist/types/components/lazy-image/index.d.ts +1 -0
  80. package/dist/types/components/lazy-image/mac-lazy-image.d.ts +86 -0
  81. package/dist/types/components/lazy-image/mac-lazy-image.stories.d.ts +15 -0
  82. package/dist/types/components/menu/index.d.ts +2 -0
  83. package/dist/types/components/menu/mac-menu.d.ts +63 -0
  84. package/dist/types/components/menu/mac-menu.stories.d.ts +11 -0
  85. package/dist/types/components/modal/index.d.ts +1 -0
  86. package/dist/types/components/modal/mac-modal.d.ts +96 -0
  87. package/dist/types/components/modal/mac-modal.stories.d.ts +12 -0
  88. package/dist/types/components/number-animation/mac-number-animation.d.ts +64 -0
  89. package/dist/types/components/number-animation/mac-number-animation.stories.d.ts +15 -0
  90. package/dist/types/components/popconfirm/mac-popconfirm.d.ts +77 -0
  91. package/dist/types/components/popconfirm/mac-popconfirm.stories.d.ts +14 -0
  92. package/dist/types/components/progress/index.d.ts +1 -0
  93. package/dist/types/components/progress/mac-progress.d.ts +76 -0
  94. package/dist/types/components/progress/mac-progress.stories.d.ts +25 -0
  95. package/dist/types/components/radio/index.d.ts +2 -0
  96. package/dist/types/components/radio/mac-radio.d.ts +90 -0
  97. package/dist/types/components/radio/mac-radio.stories.d.ts +17 -0
  98. package/dist/types/components/rating/mac-rating.d.ts +56 -0
  99. package/dist/types/components/rating/mac-rating.stories.d.ts +15 -0
  100. package/dist/types/components/select/index.d.ts +1 -0
  101. package/dist/types/components/select/mac-select.d.ts +97 -0
  102. package/dist/types/components/select/mac-select.stories.d.ts +18 -0
  103. package/dist/types/components/split/index.d.ts +1 -0
  104. package/dist/types/components/split/mac-split.d.ts +69 -0
  105. package/dist/types/components/split/mac-split.stories.d.ts +13 -0
  106. package/dist/types/components/tabs/mac-tabs.d.ts +119 -0
  107. package/dist/types/components/tabs/mac-tabs.stories.d.ts +15 -0
  108. package/dist/types/components/tag/index.d.ts +1 -0
  109. package/dist/types/components/tag/mac-tag.d.ts +40 -0
  110. package/dist/types/components/tag/mac-tag.stories.d.ts +20 -0
  111. package/dist/types/components/text-ellipsis/mac-text-ellipsis.d.ts +47 -0
  112. package/dist/types/components/text-ellipsis/mac-text-ellipsis.stories.d.ts +15 -0
  113. package/dist/types/components/tree/index.d.ts +2 -0
  114. package/dist/types/components/tree/mac-tree.d.ts +79 -0
  115. package/dist/types/components/tree/mac-tree.stories.d.ts +12 -0
  116. package/dist/types/components/tree-select/index.d.ts +2 -0
  117. package/dist/types/components/tree-select/mac-tree-select.d.ts +59 -0
  118. package/dist/types/components/tree-select/mac-tree-select.stories.d.ts +19 -0
  119. package/dist/types/internal/base-element.d.ts +18 -0
  120. package/dist/types/internal/property-converters.d.ts +7 -0
  121. package/dist/types/mac-ui.d.ts +60 -0
  122. package/dist/types/styles/shared-styles.d.ts +2 -0
  123. package/dist/types/styles/theme.d.ts +11 -0
  124. package/dist/types/test/setup.d.ts +1 -0
  125. package/package.json +86 -0
@@ -0,0 +1,88 @@
1
+ import { BaseElement } from '../../internal/base-element';
2
+ export interface DesktopIconData {
3
+ id: string;
4
+ label: string;
5
+ color?: string;
6
+ x?: number;
7
+ y?: number;
8
+ iconSrc?: string;
9
+ }
10
+ /**
11
+ * @tag mac-desktop
12
+ * @summary 带有图标布局、拖拽管理和集成 Dock 的 macOS 风格桌面容器。
13
+ *
14
+ * @slot - 用于放置 mac-desktop-icon 元素的默认插槽。
15
+ * @slot wallpaper - 自定义壁纸内容。
16
+ * @slot dock - Dock 栏内容(mac-dock-item 元素)。
17
+ *
18
+ * @csspart base - 桌面基础容器。
19
+ * @csspart wallpaper - 壁纸层。
20
+ * @csspart dock - Dock 容器区域。
21
+ *
22
+ * @event mac-layout-change - 布局模式变化时触发。
23
+ * @event mac-icons-reorder - 图标重新排序时触发。
24
+ */
25
+ export declare class MacDesktop extends BaseElement {
26
+ static styles: import("lit").CSSResult[];
27
+ /** 布局模式 */
28
+ layout: 'vertical' | 'horizontal';
29
+ /** 网格单元大小,单位为像素 */
30
+ cellSize: number;
31
+ /** 网格间距,单位为像素 */
32
+ spacing: number;
33
+ /** 桌面边缘内边距 */
34
+ padding: number;
35
+ /** 壁纸图片 URL */
36
+ wallpaper: string;
37
+ /** 是否显示 Dock */
38
+ showDock: boolean;
39
+ private _selectionRect;
40
+ private _contextMenu;
41
+ private _desktopIcons;
42
+ private _selectedIds;
43
+ private _isSelecting;
44
+ private _selStartX;
45
+ private _selStartY;
46
+ private _isDragging;
47
+ private _draggingIcons;
48
+ private _dragPointerStartX;
49
+ private _dragPointerStartY;
50
+ private _hasDragMoved;
51
+ private _dragCleanup;
52
+ private _selDragCleanup;
53
+ firstUpdated(): void;
54
+ updated(changed: Map<string, unknown>): void;
55
+ private _getIconElements;
56
+ /**
57
+ * 通过 composedPath 在事件路径中查找 mac-desktop-icon 元素。
58
+ * 这是跨越 Shadow DOM 边界识别事件目标的最可靠方式。
59
+ */
60
+ private _findIconInComposedPath;
61
+ /** 根据当前布局模式排列图标 */
62
+ private _arrangeIcons;
63
+ private _selectIcon;
64
+ private _deselectAll;
65
+ private _applySelection;
66
+ private _startSelection;
67
+ private _updateSelectionRect;
68
+ private _endSelection;
69
+ private _checkSelectionOverlap;
70
+ private _startIconDrag;
71
+ private _showContextMenu;
72
+ private _hideContextMenu;
73
+ render(): import("lit").TemplateResult<1>;
74
+ private _onDesktopMouseDown;
75
+ private _onContextMenu;
76
+ private _onArrangeVertical;
77
+ private _onArrangeHorizontal;
78
+ private _onCleanUp;
79
+ private _onSelectAll;
80
+ connectedCallback(): void;
81
+ disconnectedCallback(): void;
82
+ private _globalClickHandler;
83
+ }
84
+ declare global {
85
+ interface HTMLElementTagNameMap {
86
+ 'mac-desktop': MacDesktop;
87
+ }
88
+ }
@@ -0,0 +1,17 @@
1
+ import type { Meta, StoryObj } from '@storybook/web-components';
2
+ import './mac-desktop';
3
+ import '../desktop-icon/mac-desktop-icon';
4
+ import '../dock/mac-dock';
5
+ import '../dock/mac-dock-item';
6
+ declare const meta: Meta;
7
+ export default meta;
8
+ type Story = StoryObj;
9
+ export declare const Basic: Story;
10
+ export declare const WithWallpaper: Story;
11
+ export declare const WithoutDock: Story;
12
+ export declare const HorizontalLayout: Story;
13
+ export declare const CustomIconImages: Story;
14
+ export declare const RightClickMenu: Story;
15
+ export declare const IconSelection: Story;
16
+ export declare const IconDrag: Story;
17
+ export declare const DenseGrid: Story;
@@ -0,0 +1 @@
1
+ export { MacDesktopIcon } from './mac-desktop-icon';
@@ -0,0 +1,46 @@
1
+ import { BaseElement } from '../../internal/base-element';
2
+ /**
3
+ * @tag mac-desktop-icon
4
+ * @summary 带有选中状态的 macOS 风格桌面图标。
5
+ *
6
+ * @slot - 图标的视觉内容(图片、svg 等)。
7
+ *
8
+ * @csspart base - 图标的基础容器。
9
+ * @csspart icon - 图标图像区域。
10
+ * @csspart label - 标签文本区域。
11
+ *
12
+ * @event mac-icon-dblclick - 双击时触发。Detail: { iconId }
13
+ */
14
+ export declare class MacDesktopIcon extends BaseElement {
15
+ /** 自增计数器,用于为未指定 iconId 的图标自动生成唯一标识 */
16
+ private static _autoIdCounter;
17
+ static styles: import("lit").CSSResult[];
18
+ /** 图标标签文本 */
19
+ label: string;
20
+ /** 图标标识符 */
21
+ iconId: string;
22
+ /** 图标是否被选中 */
23
+ selected: boolean;
24
+ /** 图标是否正在被拖拽 */
25
+ dragging: boolean;
26
+ /** 图标 X 坐标 */
27
+ x: number;
28
+ /** 图标 Y 坐标 */
29
+ y: number;
30
+ /** 默认占位符的图标颜色 */
31
+ color: string;
32
+ private _clickTimer;
33
+ private _clickCount;
34
+ connectedCallback(): void;
35
+ updated(changed: Map<string, unknown>): void;
36
+ private _updatePosition;
37
+ render(): import("lit").TemplateResult<1>;
38
+ private _handleMouseDown;
39
+ private _handleTouchStart;
40
+ private _handleClick;
41
+ }
42
+ declare global {
43
+ interface HTMLElementTagNameMap {
44
+ 'mac-desktop-icon': MacDesktopIcon;
45
+ }
46
+ }
@@ -0,0 +1,8 @@
1
+ import type { Meta, StoryObj } from '@storybook/web-components';
2
+ import './mac-desktop-icon';
3
+ declare const meta: Meta;
4
+ export default meta;
5
+ type Story = StoryObj;
6
+ export declare const Default: Story;
7
+ export declare const Selected: Story;
8
+ export declare const ColorVariants: Story;
@@ -0,0 +1,2 @@
1
+ export { MacDockItem } from './mac-dock-item';
2
+ export { MacDock } from './mac-dock';
@@ -0,0 +1,37 @@
1
+ import { BaseElement } from '../../internal/base-element';
2
+ /**
3
+ * @tag mac-dock-item
4
+ * @summary A macOS-style dock item with icon, label, and bounce animation.
5
+ *
6
+ * @slot - The icon's visual content (image, svg, etc.).
7
+ *
8
+ * @csspart base - The dock item container.
9
+ * @csspart icon - The icon image area.
10
+ * @csspart label - The tooltip label.
11
+ * @csspart indicator - The running indicator dot.
12
+ *
13
+ * @event mac-dock-item-click - Emitted on click. Detail: { itemId }
14
+ */
15
+ export declare class MacDockItem extends BaseElement {
16
+ static styles: import("lit").CSSResult[];
17
+ /** Item identifier */
18
+ itemId: string;
19
+ /** Item label (tooltip) */
20
+ label: string;
21
+ /** Icon color for default placeholder */
22
+ color: string;
23
+ /** Whether the app is running */
24
+ running: boolean;
25
+ /** Whether the icon is currently bouncing */
26
+ bouncing: boolean;
27
+ render(): import("lit").TemplateResult<1>;
28
+ connectedCallback(): void;
29
+ disconnectedCallback(): void;
30
+ private _handleClick;
31
+ private _onBounceEnd;
32
+ }
33
+ declare global {
34
+ interface HTMLElementTagNameMap {
35
+ 'mac-dock-item': MacDockItem;
36
+ }
37
+ }
@@ -0,0 +1,74 @@
1
+ import { BaseElement } from '../../internal/base-element';
2
+ /**
3
+ * @tag mac-dock
4
+ * @summary 带有液态玻璃背景、放大效果、右键菜单和拖拽移除功能的 macOS 27 Golden Gate 风格 Dock。
5
+ *
6
+ * @slot - 用于放置 mac-dock-item 元素的默认插槽。
7
+ * @slot separator - 区域之间的自定义分隔符内容。
8
+ *
9
+ * @csspart base - Dock 容器。
10
+ * @csspart glass - 液态玻璃背景层。
11
+ * @csspart items - 项目容器。
12
+ *
13
+ * @event mac-dock-item-click - 从 dock 项目转发。Detail: { itemId }
14
+ * @event mac-dock-item-remove - 项目被移除时触发。Detail: { itemId }
15
+ */
16
+ export declare class MacDock extends BaseElement {
17
+ static styles: import("lit").CSSResult[];
18
+ /** 放大比例因子(1.0 = 不放大) */
19
+ magnification: number;
20
+ /** 基础图标大小,单位为像素 */
21
+ iconSize: number;
22
+ /** 放大范围,单位为像素(影响邻近项目的光标距离) */
23
+ magnifyRange: number;
24
+ /** Dock 的位置 */
25
+ position: 'bottom' | 'left' | 'right';
26
+ private _dockItems;
27
+ private _contextMenu;
28
+ private _isHovering;
29
+ private _rafId;
30
+ private _contextMenuItem;
31
+ private _isDragging;
32
+ private _dragItem;
33
+ private _dragStartX;
34
+ private _dragStartY;
35
+ private _dragOffsetX;
36
+ private _dragOffsetY;
37
+ private _hasDragMoved;
38
+ private _dragGhost;
39
+ private _lastMoveEvent;
40
+ private _dragCleanup;
41
+ connectedCallback(): void;
42
+ disconnectedCallback(): void;
43
+ private _forwardItemClick;
44
+ private _getDockItems;
45
+ private _findDockItemInPath;
46
+ /**
47
+ * 核心放大算法:根据鼠标位置计算每个图标的缩放比例。
48
+ * 使用高斯分布,距离鼠标越近的图标放大越多,实现 macOS 风格的平滑放大效果。
49
+ */
50
+ private _applyMagnification;
51
+ private _resetMagnification;
52
+ private _onDockContextMenu;
53
+ private _globalClickHandler;
54
+ private _hideContextMenu;
55
+ private _onContextMenuOpen;
56
+ private _onContextRemoveFromDock;
57
+ private _cleanupDrag;
58
+ private _onDockMouseDown;
59
+ private _createDragGhost;
60
+ private _removeDragGhost;
61
+ private _dropIndicator;
62
+ private _findDropTarget;
63
+ private _updateDropIndicator;
64
+ private _removeDropIndicator;
65
+ private _onMouseMove;
66
+ private _onMouseEnter;
67
+ private _onMouseLeave;
68
+ render(): import("lit").TemplateResult<1>;
69
+ }
70
+ declare global {
71
+ interface HTMLElementTagNameMap {
72
+ 'mac-dock': MacDock;
73
+ }
74
+ }
@@ -0,0 +1,13 @@
1
+ import type { Meta, StoryObj } from '@storybook/web-components';
2
+ import './mac-dock';
3
+ import './mac-dock-item';
4
+ declare const meta: Meta;
5
+ export default meta;
6
+ type Story = StoryObj;
7
+ export declare const Basic: Story;
8
+ export declare const WithRunningIndicators: Story;
9
+ export declare const WithCustomIcons: Story;
10
+ export declare const NoMagnification: Story;
11
+ export declare const SmallIcons: Story;
12
+ export declare const RightClickMenu: Story;
13
+ export declare const DragToRemove: Story;
@@ -0,0 +1,87 @@
1
+ import { BaseElement } from '../../internal/base-element';
2
+ /**
3
+ * @tag mac-drawer
4
+ * @summary 一个 macOS 风格的抽屉组件,从视口边缘滑入。
5
+ *
6
+ * @slot - 默认插槽,用于抽屉内容。
7
+ * @slot header - 自定义头部内容(替换默认标题和关闭按钮)。
8
+ * @slot footer - 底部内容(例如操作按钮)。
9
+ *
10
+ * @cssproperty --md-drawer-bg - 抽屉面板背景。
11
+ * @cssproperty --md-drawer-border - 抽屉面板边框。
12
+ * @cssproperty --md-drawer-shadow - 抽屉面板阴影。
13
+ * @cssproperty --md-drawer-header-padding - 头部内边距。
14
+ * @cssproperty --md-drawer-header-border - 头部底边框。
15
+ * @cssproperty --md-drawer-title-font-size - 标题字体大小。
16
+ * @cssproperty --md-drawer-title-color - 标题文字颜色。
17
+ * @cssproperty --md-drawer-body-padding - 内容区内边距。
18
+ * @cssproperty --md-drawer-footer-padding - 底部内边距。
19
+ * @cssproperty --md-drawer-footer-border - 底部顶边框。
20
+ * @cssproperty --md-drawer-close-color - 关闭图标颜色。
21
+ * @cssproperty --md-drawer-close-hover-bg - 关闭图标悬停背景。
22
+ * @cssproperty --md-drawer-mask-bg - 遮罩层背景。
23
+ * @cssproperty --md-drawer-radius - 抽屉圆角(暴露边缘)。
24
+ *
25
+ * @event mac-drawer-open - 抽屉打开后触发。
26
+ * @event mac-drawer-close - 抽屉关闭后触发。
27
+ * @event mac-drawer-after-open - 打开动画完成后触发。
28
+ * @event mac-drawer-after-close - 关闭动画完成后触发。
29
+ */
30
+ export declare class MacDrawer extends BaseElement {
31
+ static styles: import("lit").CSSResult[];
32
+ /** 抽屉是否打开 */
33
+ open: boolean;
34
+ /** 抽屉放置方向 */
35
+ placement: 'top' | 'right' | 'bottom' | 'left';
36
+ /** 抽屉标题 */
37
+ title: string;
38
+ /** 抽屉宽度(用于左/右放置) */
39
+ width: string;
40
+ /** 抽屉高度(用于上/下放置) */
41
+ height: string;
42
+ /** 是否显示关闭按钮 */
43
+ closable: boolean;
44
+ /** 点击遮罩是否关闭抽屉 */
45
+ maskClosable: boolean;
46
+ /** 是否显示遮罩层 */
47
+ showMask: boolean | 'transparent';
48
+ /** 按 ESC 键是否关闭抽屉 */
49
+ closeOnEsc: boolean;
50
+ /** 抽屉是否可调整大小 */
51
+ resizable: boolean;
52
+ /** 调整大小时的最小宽度(左/右) */
53
+ minWidth: string;
54
+ /** 调整大小时的最大宽度(左/右) */
55
+ maxWidth: string;
56
+ /** 调整大小时的最小高度(上/下) */
57
+ minHeight: string;
58
+ /** 调整大小时的最大高度(上/下) */
59
+ maxHeight: string;
60
+ private _isOpen;
61
+ private _maskEl;
62
+ private _panelEl;
63
+ private _isResizing;
64
+ private _resizeStartX;
65
+ private _resizeStartY;
66
+ private _resizeStartSize;
67
+ private static _stylesInjected;
68
+ willUpdate(): void;
69
+ updated(changed: Map<string, unknown>): void;
70
+ disconnectedCallback(): void;
71
+ private _injectStyles;
72
+ private _applyThemeVars;
73
+ private _show;
74
+ private _hide;
75
+ private _createPortal;
76
+ private _slottedChildren;
77
+ private _removePortal;
78
+ private _close;
79
+ private _handleKeyDown;
80
+ private _onResizeStart;
81
+ render(): import("lit").TemplateResult<1>;
82
+ }
83
+ declare global {
84
+ interface HTMLElementTagNameMap {
85
+ 'mac-drawer': MacDrawer;
86
+ }
87
+ }
@@ -0,0 +1,15 @@
1
+ import type { Meta, StoryObj } from '@storybook/web-components';
2
+ import './mac-drawer';
3
+ declare const meta: Meta;
4
+ export default meta;
5
+ type Story = StoryObj;
6
+ export declare const Basic: Story;
7
+ export declare const RightPlacement: Story;
8
+ export declare const LeftPlacement: Story;
9
+ export declare const TopPlacement: Story;
10
+ export declare const BottomPlacement: Story;
11
+ export declare const Resizable: Story;
12
+ export declare const NoMask: Story;
13
+ export declare const TransparentMask: Story;
14
+ export declare const WithFooter: Story;
15
+ export declare const NoClosable: Story;
@@ -0,0 +1,2 @@
1
+ export { MacDropdown } from './mac-dropdown';
2
+ export type { DropdownItem } from './mac-dropdown';
@@ -0,0 +1,77 @@
1
+ import { BaseElement } from '../../internal/base-element';
2
+ export interface DropdownItem {
3
+ value: string;
4
+ label: string;
5
+ icon?: string;
6
+ disabled?: boolean;
7
+ danger?: boolean;
8
+ shortcut?: string;
9
+ divider?: boolean;
10
+ children?: DropdownItem[];
11
+ }
12
+ /**
13
+ * @tag mac-dropdown
14
+ * @summary 一个 macOS 风格的下拉菜单组件。
15
+ *
16
+ * @slot trigger - 触发下拉菜单打开的元素。
17
+ *
18
+ * @csspart base - 下拉菜单的基础容器。
19
+ * @csspart menu - 下拉菜单。
20
+ * @csspart item - 菜单项。
21
+ */
22
+ export declare class MacDropdown extends BaseElement {
23
+ static styles: import("lit").CSSResult[];
24
+ /** 菜单项。 */
25
+ items: DropdownItem[];
26
+ /** 下拉菜单的位置。 */
27
+ placement: 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end';
28
+ /** 当前激活/选中的值。 */
29
+ value: string;
30
+ /** 禁用下拉菜单。 */
31
+ disabled: boolean;
32
+ /** 悬停时打开下拉菜单。 */
33
+ openOnHover: boolean;
34
+ /** 悬停延迟(毫秒)。 */
35
+ hoverDelay: number;
36
+ /** 触发模式:click、contextmenu 或 both。 */
37
+ trigger: 'click' | 'contextmenu' | 'both';
38
+ private _open;
39
+ private _hoverTimeout;
40
+ private _menuEl;
41
+ private _menuId;
42
+ private _scrollHandler;
43
+ private _triggerEl;
44
+ /** 为 portal 菜单注入的样式(挂载到 body)。 */
45
+ private static _portalStylesInjected;
46
+ private static _injectPortalStyles;
47
+ connectedCallback(): void;
48
+ disconnectedCallback(): void;
49
+ private _addScrollListener;
50
+ private _removeScrollListener;
51
+ private _handleDocumentClick;
52
+ private _handleKeyDown;
53
+ private _openMenu;
54
+ private _close;
55
+ private _toggle;
56
+ private _handleTriggerClick;
57
+ private _handleContextMenu;
58
+ private _handleMouseEnter;
59
+ private _handleMouseLeave;
60
+ private _selectItem;
61
+ /**
62
+ * 根据触发元素或显式坐标计算菜单位置。
63
+ * 自动调整以保持在视口内。
64
+ */
65
+ private _calcPosition;
66
+ private _createMenu;
67
+ private _removeMenu;
68
+ private _renderItemsHTML;
69
+ private _bindMenuEvents;
70
+ private _findItem;
71
+ render(): import("lit").TemplateResult<1>;
72
+ }
73
+ declare global {
74
+ interface HTMLElementTagNameMap {
75
+ 'mac-dropdown': MacDropdown;
76
+ }
77
+ }
@@ -0,0 +1,13 @@
1
+ import type { Meta, StoryObj } from '@storybook/web-components';
2
+ import './mac-dropdown';
3
+ declare const meta: Meta;
4
+ export default meta;
5
+ type Story = StoryObj;
6
+ export declare const Basic: Story;
7
+ export declare const WithIcons: Story;
8
+ export declare const WithSubmenu: Story;
9
+ export declare const DangerItems: Story;
10
+ export declare const OpenOnHover: Story;
11
+ export declare const Placements: Story;
12
+ export declare const Disabled: Story;
13
+ export declare const ContextMenu: Story;
@@ -0,0 +1 @@
1
+ export { MacDynamicTags } from './mac-dynamic-tags';
@@ -0,0 +1,64 @@
1
+ import { BaseElement } from '../../internal/base-element';
2
+ /**
3
+ * @tag mac-dynamic-tags
4
+ * @summary 一个动态标签组件,用于添加和删除标签。
5
+ *
6
+ * @slot - 自定义标签渲染。通过 data-value 和 data-index 属性接收标签数据。
7
+ *
8
+ * @csspart container - 标签容器。
9
+ * @csspart tag - 每个标签元素。
10
+ * @csspart input - 用于添加标签的输入框。
11
+ * @csspart add-button - 输入框隐藏时显示的添加按钮。
12
+ *
13
+ * @event mac-update - 值变化时触发。Detail: { value: string[] }
14
+ * @event mac-add - 添加标签时触发。Detail: { value: string, index: number }
15
+ * @event mac-remove - 删除标签时触发。Detail: { value: string, index: number }
16
+ */
17
+ export declare class MacDynamicTags extends BaseElement {
18
+ static styles: import("lit").CSSResult[];
19
+ /** 标签的值(受控)。 */
20
+ value: string[];
21
+ /** 标签的默认值(非受控)。 */
22
+ defaultValue: string[];
23
+ /** 禁用组件。 */
24
+ disabled: boolean;
25
+ /** 标签的最大数量。 */
26
+ max?: number;
27
+ /** 标签的尺寸。 */
28
+ size?: 'sm' | 'md' | 'lg';
29
+ /** 标签的类型。 */
30
+ type: 'default' | 'primary' | 'success' | 'warning' | 'danger' | 'info';
31
+ /** 标签是否圆角。 */
32
+ round: boolean;
33
+ /** 标签是否有边框。 */
34
+ bordered: boolean;
35
+ /** 标签是否可关闭。 */
36
+ closable: boolean;
37
+ /** 输入框的占位符。 */
38
+ inputPlaceholder: string;
39
+ /** 输入框的最大长度。 */
40
+ inputMaxLength?: number;
41
+ private _inputVisible;
42
+ private _inputValue;
43
+ private _internalValue;
44
+ private _inputRef;
45
+ private get _isControlled();
46
+ private get _resolvedValue();
47
+ private get _hasSlot();
48
+ connectedCallback(): void;
49
+ willUpdate(): void;
50
+ updated(changed: Map<string | number | symbol, unknown>): void;
51
+ render(): import("lit").TemplateResult<1>;
52
+ private _showInput;
53
+ private _hideInput;
54
+ private _handleInputChange;
55
+ private _handleInputKeydown;
56
+ private _handleInputBlur;
57
+ private _addTag;
58
+ private _handleRemove;
59
+ }
60
+ declare global {
61
+ interface HTMLElementTagNameMap {
62
+ 'mac-dynamic-tags': MacDynamicTags;
63
+ }
64
+ }
@@ -0,0 +1,16 @@
1
+ import type { Meta, StoryObj } from '@storybook/web-components';
2
+ import './mac-dynamic-tags';
3
+ import '../tag/mac-tag';
4
+ declare const meta: Meta;
5
+ export default meta;
6
+ type Story = StoryObj;
7
+ export declare const Default: Story;
8
+ export declare const Types: Story;
9
+ export declare const Sizes: Story;
10
+ export declare const Round: Story;
11
+ export declare const Disabled: Story;
12
+ export declare const MaxCount: Story;
13
+ export declare const NotClosable: Story;
14
+ export declare const Unbordered: Story;
15
+ export declare const Controlled: Story;
16
+ export declare const WithMaxLength: Story;
@@ -0,0 +1,3 @@
1
+ export { MacForm } from './mac-form';
2
+ export { MacFormItem } from './mac-form-item';
3
+ export type { FormRule } from './mac-form';
@@ -0,0 +1,67 @@
1
+ import { BaseElement } from '../../internal/base-element';
2
+ import type { FormRule } from './mac-form';
3
+ /**
4
+ * @tag mac-form-item
5
+ * @summary A form item component for wrapping form controls with label and validation.
6
+ *
7
+ * @slot - The form control element.
8
+ *
9
+ * @csspart base - The form item's base container.
10
+ * @csspart label - The label element.
11
+ * @csspart content - The content wrapper.
12
+ * @csspart error - The error message element.
13
+ */
14
+ export declare class MacFormItem extends BaseElement {
15
+ static styles: import("lit").CSSResult[];
16
+ /** The item's label. */
17
+ label: string;
18
+ /** The field path in the model. */
19
+ path: string;
20
+ /** Validation rule(s). */
21
+ rule?: FormRule | FormRule[];
22
+ /** Whether the field is required. */
23
+ required: boolean;
24
+ /** Whether to show the label. */
25
+ showLabel?: boolean;
26
+ /** Whether to show feedback (error messages). */
27
+ showFeedback?: boolean;
28
+ /** The item's size. */
29
+ size?: 'sm' | 'md' | 'lg';
30
+ /** Disables the item. */
31
+ disabled: boolean;
32
+ private _errorMessage;
33
+ private _form?;
34
+ private _control?;
35
+ private _mutationObserver?;
36
+ connectedCallback(): void;
37
+ disconnectedCallback(): void;
38
+ updated(): void;
39
+ private _findForm;
40
+ private _findControl;
41
+ private _findFirstControl;
42
+ private _getValue;
43
+ private _syncValueToControl;
44
+ private _syncDisabledToControl;
45
+ private _syncSizeToControl;
46
+ private _attachListeners;
47
+ private _handleChange;
48
+ private _handleInput;
49
+ private _handleBlur;
50
+ private _updateValue;
51
+ private _setControlStatus;
52
+ /** Validates the form item. */
53
+ validate(trigger?: 'blur' | 'change' | 'input'): Promise<boolean>;
54
+ /** Resets the validation state. */
55
+ reset(): void;
56
+ private _checkType;
57
+ private get _resolvedRules();
58
+ private get _showLabel();
59
+ private get _showFeedback();
60
+ private get _labelAlign();
61
+ render(): import("lit").TemplateResult<1>;
62
+ }
63
+ declare global {
64
+ interface HTMLElementTagNameMap {
65
+ 'mac-form-item': MacFormItem;
66
+ }
67
+ }