huibo-ui 0.3.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 (839) hide show
  1. package/dist/cjs/{a11y-802de67a.js → a11y-4385c871.js} +17 -2
  2. package/dist/cjs/a11y-4385c871.js.map +1 -0
  3. package/dist/cjs/{date-helpers-904747ff.js → date-helpers-c05ef385.js} +10 -17
  4. package/dist/cjs/date-helpers-c05ef385.js.map +1 -0
  5. package/dist/cjs/hb-affix.cjs.entry.js +1 -1
  6. package/dist/cjs/hb-alert.cjs.entry.js +2 -1
  7. package/dist/cjs/hb-alert.cjs.entry.js.map +1 -1
  8. package/dist/cjs/hb-aside.cjs.entry.js +1 -1
  9. package/dist/cjs/hb-avatar.cjs.entry.js +1 -1
  10. package/dist/cjs/hb-backtop.cjs.entry.js +2 -2
  11. package/dist/cjs/hb-badge.cjs.entry.js +1 -1
  12. package/dist/cjs/hb-breadcrumb-item.cjs.entry.js +1 -1
  13. package/dist/cjs/hb-breadcrumb.cjs.entry.js +1 -1
  14. package/dist/cjs/hb-button.cjs.entry.js +2 -2
  15. package/dist/cjs/hb-calendar.cjs.entry.js +78 -10
  16. package/dist/cjs/hb-calendar.cjs.entry.js.map +1 -1
  17. package/dist/cjs/hb-card.cjs.entry.js +1 -1
  18. package/dist/cjs/hb-cascader.cjs.entry.js +306 -146
  19. package/dist/cjs/hb-cascader.cjs.entry.js.map +1 -1
  20. package/dist/cjs/hb-checkbox-group.cjs.entry.js +12 -8
  21. package/dist/cjs/hb-checkbox-group.cjs.entry.js.map +1 -1
  22. package/dist/cjs/hb-checkbox.cjs.entry.js +9 -4
  23. package/dist/cjs/hb-checkbox.cjs.entry.js.map +1 -1
  24. package/dist/cjs/hb-collapse-item.cjs.entry.js +13 -4
  25. package/dist/cjs/hb-collapse-item.cjs.entry.js.map +1 -1
  26. package/dist/cjs/hb-collapse.cjs.entry.js +20 -15
  27. package/dist/cjs/hb-collapse.cjs.entry.js.map +1 -1
  28. package/dist/cjs/hb-color-picker-panel.cjs.entry.js +2 -2
  29. package/dist/cjs/hb-color-picker.cjs.entry.js +108 -28
  30. package/dist/cjs/hb-color-picker.cjs.entry.js.map +1 -1
  31. package/dist/cjs/hb-config-provider.cjs.entry.js +1 -1
  32. package/dist/cjs/hb-container.cjs.entry.js +2 -2
  33. package/dist/cjs/hb-date-picker-pane.cjs.entry.js +2 -2
  34. package/dist/cjs/hb-date-picker.cjs.entry.js +90 -9
  35. package/dist/cjs/hb-date-picker.cjs.entry.js.map +1 -1
  36. package/dist/cjs/hb-date-range-picker.cjs.entry.js +3 -3
  37. package/dist/cjs/hb-date-time-picker.cjs.entry.js +3 -3
  38. package/dist/cjs/hb-descriptions.cjs.entry.js +2 -2
  39. package/dist/cjs/hb-descriptions.cjs.entry.js.map +1 -1
  40. package/dist/cjs/hb-dialog.cjs.entry.js +51 -12
  41. package/dist/cjs/hb-dialog.cjs.entry.js.map +1 -1
  42. package/dist/cjs/hb-divider.cjs.entry.js +2 -2
  43. package/dist/cjs/hb-drawer.cjs.entry.js +34 -4
  44. package/dist/cjs/hb-drawer.cjs.entry.js.map +1 -1
  45. package/dist/cjs/hb-dropdown.cjs.entry.js +91 -11
  46. package/dist/cjs/hb-dropdown.cjs.entry.js.map +1 -1
  47. package/dist/cjs/hb-empty.cjs.entry.js +1 -1
  48. package/dist/cjs/hb-float-button.cjs.entry.js +2 -2
  49. package/dist/cjs/hb-footer.cjs.entry.js +1 -1
  50. package/dist/cjs/hb-form-item.cjs.entry.js +61 -9
  51. package/dist/cjs/hb-form-item.cjs.entry.js.map +1 -1
  52. package/dist/cjs/hb-form.cjs.entry.js +13 -8
  53. package/dist/cjs/hb-form.cjs.entry.js.map +1 -1
  54. package/dist/cjs/hb-header.cjs.entry.js +1 -1
  55. package/dist/cjs/hb-image-preview.cjs.entry.js +13 -9
  56. package/dist/cjs/hb-image-preview.cjs.entry.js.map +1 -1
  57. package/dist/cjs/hb-image.cjs.entry.js +21 -3
  58. package/dist/cjs/hb-image.cjs.entry.js.map +1 -1
  59. package/dist/cjs/hb-input-number.cjs.entry.js +7 -7
  60. package/dist/cjs/hb-input-number.cjs.entry.js.map +1 -1
  61. package/dist/cjs/hb-input-tag.cjs.entry.js +2 -2
  62. package/dist/cjs/hb-input.cjs.entry.js +40 -3
  63. package/dist/cjs/hb-input.cjs.entry.js.map +1 -1
  64. package/dist/cjs/hb-layout.cjs.entry.js +36 -14
  65. package/dist/cjs/hb-layout.cjs.entry.js.map +1 -1
  66. package/dist/cjs/hb-link.cjs.entry.js +2 -2
  67. package/dist/cjs/hb-loading.cjs.entry.js +2 -2
  68. package/dist/cjs/hb-main.cjs.entry.js +1 -1
  69. package/dist/cjs/hb-menu-item.cjs.entry.js +14 -5
  70. package/dist/cjs/hb-menu-item.cjs.entry.js.map +1 -1
  71. package/dist/cjs/hb-menu.cjs.entry.js +3 -3
  72. package/dist/cjs/hb-menu.cjs.entry.js.map +1 -1
  73. package/dist/cjs/hb-message.cjs.entry.js +13 -4
  74. package/dist/cjs/hb-message.cjs.entry.js.map +1 -1
  75. package/dist/cjs/hb-notification.cjs.entry.js +2 -2
  76. package/dist/cjs/hb-page-header.cjs.entry.js +1 -1
  77. package/dist/cjs/hb-pagination.cjs.entry.js +24 -8
  78. package/dist/cjs/hb-pagination.cjs.entry.js.map +1 -1
  79. package/dist/cjs/hb-popconfirm.cjs.entry.js +57 -8
  80. package/dist/cjs/hb-popconfirm.cjs.entry.js.map +1 -1
  81. package/dist/cjs/hb-popover.cjs.entry.js +37 -5
  82. package/dist/cjs/hb-popover.cjs.entry.js.map +1 -1
  83. package/dist/cjs/hb-progress.cjs.entry.js +1 -1
  84. package/dist/cjs/hb-radio.cjs.entry.js +8 -3
  85. package/dist/cjs/hb-radio.cjs.entry.js.map +1 -1
  86. package/dist/cjs/hb-rate.cjs.entry.js +46 -4
  87. package/dist/cjs/hb-rate.cjs.entry.js.map +1 -1
  88. package/dist/cjs/hb-result.cjs.entry.js +1 -1
  89. package/dist/cjs/hb-row.cjs.entry.js +2 -2
  90. package/dist/cjs/hb-scrollbar.cjs.entry.js +5 -5
  91. package/dist/cjs/hb-scrollbar.cjs.entry.js.map +1 -1
  92. package/dist/cjs/hb-segmented.cjs.entry.js +50 -5
  93. package/dist/cjs/hb-segmented.cjs.entry.js.map +1 -1
  94. package/dist/cjs/hb-select.cjs.entry.js +64 -16
  95. package/dist/cjs/hb-select.cjs.entry.js.map +1 -1
  96. package/dist/cjs/hb-slider.cjs.entry.js +186 -23
  97. package/dist/cjs/hb-slider.cjs.entry.js.map +1 -1
  98. package/dist/cjs/hb-space.cjs.entry.js +2 -2
  99. package/dist/cjs/hb-statistic.cjs.entry.js +1 -1
  100. package/dist/cjs/hb-step.cjs.entry.js +1 -1
  101. package/dist/cjs/hb-steps.cjs.entry.js +30 -9
  102. package/dist/cjs/hb-steps.cjs.entry.js.map +1 -1
  103. package/dist/cjs/hb-sub-menu.cjs.entry.js +5 -5
  104. package/dist/cjs/hb-switch.cjs.entry.js +9 -4
  105. package/dist/cjs/hb-switch.cjs.entry.js.map +1 -1
  106. package/dist/cjs/hb-tab-pane.cjs.entry.js +1 -1
  107. package/dist/cjs/hb-table.cjs.entry.js +26 -17
  108. package/dist/cjs/hb-table.cjs.entry.js.map +1 -1
  109. package/dist/cjs/hb-tabs.cjs.entry.js +31 -10
  110. package/dist/cjs/hb-tabs.cjs.entry.js.map +1 -1
  111. package/dist/cjs/hb-tag.cjs.entry.js +3 -2
  112. package/dist/cjs/hb-tag.cjs.entry.js.map +1 -1
  113. package/dist/cjs/hb-text.cjs.entry.js +2 -2
  114. package/dist/cjs/hb-time-picker.cjs.entry.js +14 -9
  115. package/dist/cjs/hb-time-picker.cjs.entry.js.map +1 -1
  116. package/dist/cjs/hb-time-select.cjs.entry.js +13 -4
  117. package/dist/cjs/hb-time-select.cjs.entry.js.map +1 -1
  118. package/dist/cjs/hb-timeline.cjs.entry.js +1 -1
  119. package/dist/cjs/hb-tooltip.cjs.entry.js +43 -6
  120. package/dist/cjs/hb-tooltip.cjs.entry.js.map +1 -1
  121. package/dist/cjs/hb-transfer.cjs.entry.js +2 -2
  122. package/dist/cjs/hb-tree-select.cjs.entry.js +215 -23
  123. package/dist/cjs/hb-tree-select.cjs.entry.js.map +1 -1
  124. package/dist/cjs/hb-tree.cjs.entry.js +145 -12
  125. package/dist/cjs/hb-tree.cjs.entry.js.map +1 -1
  126. package/dist/cjs/hb-upload.cjs.entry.js +3 -3
  127. package/dist/cjs/hb-watermark.cjs.entry.js +19 -11
  128. package/dist/cjs/hb-watermark.cjs.entry.js.map +1 -1
  129. package/dist/cjs/huibo-ui.cjs.js +1 -1
  130. package/dist/cjs/loader.cjs.js +1 -1
  131. package/dist/cjs/transition-59f1da0f.js +34 -0
  132. package/dist/cjs/transition-59f1da0f.js.map +1 -0
  133. package/dist/collection/collection-manifest.json +3 -3
  134. package/dist/collection/components/Affix/Affix.js +1 -1
  135. package/dist/collection/components/Alert/Alert.js +2 -1
  136. package/dist/collection/components/Alert/Alert.js.map +1 -1
  137. package/dist/collection/components/Avatar/Avatar.js +1 -1
  138. package/dist/collection/components/Backtop/Backtop.js +2 -2
  139. package/dist/collection/components/Badge/Badge.js +1 -1
  140. package/dist/collection/components/Breadcrumb/Breadcrumb.js +1 -1
  141. package/dist/collection/components/Breadcrumb/BreadcrumbItem.js +1 -1
  142. package/dist/collection/components/Button/Button.js +2 -2
  143. package/dist/collection/components/Calendar/Calendar.js +84 -10
  144. package/dist/collection/components/Calendar/Calendar.js.map +1 -1
  145. package/dist/collection/components/Calendar/calendar.css +16 -0
  146. package/dist/collection/components/Card/Card.js +1 -1
  147. package/dist/collection/components/Cascader/Cascader.js +410 -194
  148. package/dist/collection/components/Cascader/Cascader.js.map +1 -1
  149. package/dist/collection/components/Cascader/cascader.css +170 -16
  150. package/dist/collection/components/Checkbox/Checkbox.js +9 -4
  151. package/dist/collection/components/Checkbox/Checkbox.js.map +1 -1
  152. package/dist/collection/components/Checkbox/CheckboxGroup.js +12 -8
  153. package/dist/collection/components/Checkbox/CheckboxGroup.js.map +1 -1
  154. package/dist/collection/components/Collapse/Collapse.js +20 -15
  155. package/dist/collection/components/Collapse/Collapse.js.map +1 -1
  156. package/dist/collection/components/Collapse/CollapseItem.js +33 -4
  157. package/dist/collection/components/Collapse/CollapseItem.js.map +1 -1
  158. package/dist/collection/components/ColorPicker/ColorPicker.js +109 -28
  159. package/dist/collection/components/ColorPicker/ColorPicker.js.map +1 -1
  160. package/dist/collection/components/ColorPicker/color-picker.css +21 -3
  161. package/dist/collection/components/ColorPickerPanel/ColorPickerPanel.js +2 -2
  162. package/dist/collection/components/ConfigProvider/ConfigProvider.js +1 -1
  163. package/dist/collection/components/Container/Aside.js +1 -1
  164. package/dist/collection/components/Container/Container.js +2 -2
  165. package/dist/collection/components/Container/Footer.js +1 -1
  166. package/dist/collection/components/Container/Header.js +1 -1
  167. package/dist/collection/components/Container/Main.js +1 -1
  168. package/dist/collection/components/DatePicker/DatePicker.js +94 -12
  169. package/dist/collection/components/DatePicker/DatePicker.js.map +1 -1
  170. package/dist/collection/components/DatePicker/date-picker.css +63 -2
  171. package/dist/collection/components/DatePickerPane/DatePickerPane.js +1 -1
  172. package/dist/collection/components/DateRangePicker/DateRangePicker.js +2 -2
  173. package/dist/collection/components/DateTimePicker/DateTimePicker.js +2 -2
  174. package/dist/collection/components/Descriptions/Descriptions.js +1 -1
  175. package/dist/collection/components/Descriptions/descriptions.css +52 -10
  176. package/dist/collection/components/Dialog/Dialog.js +54 -10
  177. package/dist/collection/components/Dialog/Dialog.js.map +1 -1
  178. package/dist/collection/components/Dialog/dialog.css +57 -11
  179. package/dist/collection/components/Divider/Divider.js +2 -2
  180. package/dist/collection/components/Drawer/Drawer.js +34 -3
  181. package/dist/collection/components/Drawer/Drawer.js.map +1 -1
  182. package/dist/collection/components/Drawer/drawer.css +207 -17
  183. package/dist/collection/components/Dropdown/Dropdown.js +103 -12
  184. package/dist/collection/components/Dropdown/Dropdown.js.map +1 -1
  185. package/dist/collection/components/Dropdown/dropdown.css +26 -3
  186. package/dist/collection/components/Empty/Empty.js +1 -1
  187. package/dist/collection/components/FloatButton/FloatButton.js +2 -2
  188. package/dist/collection/components/Form/Form.js +14 -9
  189. package/dist/collection/components/Form/Form.js.map +1 -1
  190. package/dist/collection/components/Form/FormItem.js +62 -10
  191. package/dist/collection/components/Form/FormItem.js.map +1 -1
  192. package/dist/collection/components/Form/form-item.css +57 -6
  193. package/dist/collection/components/Form/form.css +1 -0
  194. package/dist/collection/components/Image/Image.js +24 -3
  195. package/dist/collection/components/Image/Image.js.map +1 -1
  196. package/dist/collection/components/ImagePreview/ImagePreview.js +13 -9
  197. package/dist/collection/components/ImagePreview/ImagePreview.js.map +1 -1
  198. package/dist/collection/components/Input/Input.js +39 -2
  199. package/dist/collection/components/Input/Input.js.map +1 -1
  200. package/dist/collection/components/Input/input.css +22 -4
  201. package/dist/collection/components/InputNumber/InputNumber.js +6 -6
  202. package/dist/collection/components/InputNumber/InputNumber.js.map +1 -1
  203. package/dist/collection/components/InputNumber/input-number.css +11 -1
  204. package/dist/collection/components/InputTag/InputTag.js +2 -2
  205. package/dist/collection/components/Layout/Layout.js +87 -34
  206. package/dist/collection/components/Layout/Layout.js.map +1 -1
  207. package/dist/collection/components/Layout/Row.js +2 -2
  208. package/dist/collection/components/Layout/layout.css +1732 -71
  209. package/dist/collection/components/Link/Link.js +2 -2
  210. package/dist/collection/components/Loading/Loading.js +2 -2
  211. package/dist/collection/components/Menu/Menu.js +2 -2
  212. package/dist/collection/components/Menu/MenuItem.js +34 -5
  213. package/dist/collection/components/Menu/MenuItem.js.map +1 -1
  214. package/dist/collection/components/Menu/SubMenu.js +4 -4
  215. package/dist/collection/components/Menu/menu.css +25 -0
  216. package/dist/collection/components/Message/Message.js +13 -4
  217. package/dist/collection/components/Message/Message.js.map +1 -1
  218. package/dist/collection/components/Notification/Notification.js +2 -2
  219. package/dist/collection/components/PageHeader/PageHeader.js +1 -1
  220. package/dist/collection/components/Pagination/Pagination.js +26 -7
  221. package/dist/collection/components/Pagination/Pagination.js.map +1 -1
  222. package/dist/collection/components/Pagination/pagination.css +23 -0
  223. package/dist/collection/components/Popconfirm/Popconfirm.js +66 -7
  224. package/dist/collection/components/Popconfirm/Popconfirm.js.map +1 -1
  225. package/dist/collection/components/Popconfirm/popconfirm.css +80 -16
  226. package/dist/collection/components/Popover/Popover.js +46 -4
  227. package/dist/collection/components/Popover/Popover.js.map +1 -1
  228. package/dist/collection/components/Popover/popover.css +49 -8
  229. package/dist/collection/components/Progress/Progress.js +1 -1
  230. package/dist/collection/components/Radio/Radio.js +8 -3
  231. package/dist/collection/components/Radio/Radio.js.map +1 -1
  232. package/dist/collection/components/Rate/Rate.js +46 -4
  233. package/dist/collection/components/Rate/Rate.js.map +1 -1
  234. package/dist/collection/components/Result/Result.js +1 -1
  235. package/dist/collection/components/Scrollbar/Scrollbar.js +5 -5
  236. package/dist/collection/components/Scrollbar/Scrollbar.js.map +1 -1
  237. package/dist/collection/components/Segmented/Segmented.js +65 -6
  238. package/dist/collection/components/Segmented/Segmented.js.map +1 -1
  239. package/dist/collection/components/Select/Select.js +63 -15
  240. package/dist/collection/components/Select/Select.js.map +1 -1
  241. package/dist/collection/components/Select/select.css +50 -5
  242. package/dist/collection/components/Slider/Slider.js +218 -24
  243. package/dist/collection/components/Slider/Slider.js.map +1 -1
  244. package/dist/collection/components/Slider/slider.css +57 -7
  245. package/dist/collection/components/Space/Space.js +2 -2
  246. package/dist/collection/components/Statistic/Statistic.js +1 -1
  247. package/dist/collection/components/Steps/Step.js +1 -1
  248. package/dist/collection/components/Steps/Steps.js +35 -8
  249. package/dist/collection/components/Steps/Steps.js.map +1 -1
  250. package/dist/collection/components/Switch/Switch.js +8 -3
  251. package/dist/collection/components/Switch/Switch.js.map +1 -1
  252. package/dist/collection/components/Switch/switch.css +47 -1
  253. package/dist/collection/components/Table/Table.js +25 -16
  254. package/dist/collection/components/Table/Table.js.map +1 -1
  255. package/dist/collection/components/Table/table.css +26 -2
  256. package/dist/collection/components/Tabs/TabPane.js +1 -1
  257. package/dist/collection/components/Tabs/Tabs.js +31 -10
  258. package/dist/collection/components/Tabs/Tabs.js.map +1 -1
  259. package/dist/collection/components/Tag/Tag.js +3 -2
  260. package/dist/collection/components/Tag/Tag.js.map +1 -1
  261. package/dist/collection/components/Text/Text.js +2 -2
  262. package/dist/collection/components/TimePicker/TimePicker.js +14 -9
  263. package/dist/collection/components/TimePicker/TimePicker.js.map +1 -1
  264. package/dist/collection/components/TimeSelect/TimeSelect.js +13 -4
  265. package/dist/collection/components/TimeSelect/TimeSelect.js.map +1 -1
  266. package/dist/collection/components/Timeline/Timeline.js +1 -1
  267. package/dist/collection/components/Tooltip/Tooltip.js +52 -6
  268. package/dist/collection/components/Tooltip/Tooltip.js.map +1 -1
  269. package/dist/collection/components/Tooltip/tooltip.css +24 -2
  270. package/dist/collection/components/Transfer/Transfer.js +2 -2
  271. package/dist/collection/components/Tree/Tree.js +147 -13
  272. package/dist/collection/components/Tree/Tree.js.map +1 -1
  273. package/dist/collection/components/TreeSelect/TreeSelect.js +219 -23
  274. package/dist/collection/components/TreeSelect/TreeSelect.js.map +1 -1
  275. package/dist/collection/components/TreeSelect/tree-select.css +41 -7
  276. package/dist/collection/components/Upload/Upload.js +3 -3
  277. package/dist/collection/components/Watermark/Watermark.js +19 -11
  278. package/dist/collection/components/Watermark/Watermark.js.map +1 -1
  279. package/dist/collection/utils/a11y.js +15 -1
  280. package/dist/collection/utils/a11y.js.map +1 -1
  281. package/dist/collection/utils/date-helpers.js +9 -16
  282. package/dist/collection/utils/date-helpers.js.map +1 -1
  283. package/dist/collection/utils/transition.js +29 -0
  284. package/dist/collection/utils/transition.js.map +1 -0
  285. package/dist/components/hb-affix.js +1 -1
  286. package/dist/components/hb-alert.js +2 -1
  287. package/dist/components/hb-alert.js.map +1 -1
  288. package/dist/components/hb-aside.js +1 -1
  289. package/dist/components/hb-avatar.js +1 -1
  290. package/dist/components/hb-backtop.js +2 -2
  291. package/dist/components/hb-badge.js +1 -1
  292. package/dist/components/hb-breadcrumb-item.js +1 -1
  293. package/dist/components/hb-breadcrumb.js +1 -1
  294. package/dist/components/hb-button.js +2 -2
  295. package/dist/components/hb-calendar.js +80 -11
  296. package/dist/components/hb-calendar.js.map +1 -1
  297. package/dist/components/hb-card.js +1 -1
  298. package/dist/components/hb-cascader.js +309 -146
  299. package/dist/components/hb-cascader.js.map +1 -1
  300. package/dist/components/hb-checkbox-group.js +12 -8
  301. package/dist/components/hb-checkbox-group.js.map +1 -1
  302. package/dist/components/hb-checkbox.js +9 -4
  303. package/dist/components/hb-checkbox.js.map +1 -1
  304. package/dist/components/hb-collapse-item.js +14 -4
  305. package/dist/components/hb-collapse-item.js.map +1 -1
  306. package/dist/components/hb-collapse.js +20 -15
  307. package/dist/components/hb-collapse.js.map +1 -1
  308. package/dist/components/hb-color-picker-panel.js +2 -2
  309. package/dist/components/hb-color-picker.js +110 -29
  310. package/dist/components/hb-color-picker.js.map +1 -1
  311. package/dist/components/hb-config-provider.js +1 -1
  312. package/dist/components/hb-container.js +2 -2
  313. package/dist/components/hb-date-picker-pane.js +2 -2
  314. package/dist/components/hb-date-picker.js +92 -10
  315. package/dist/components/hb-date-picker.js.map +1 -1
  316. package/dist/components/hb-date-range-picker.js +3 -3
  317. package/dist/components/hb-date-time-picker.js +3 -3
  318. package/dist/components/hb-descriptions.js +2 -2
  319. package/dist/components/hb-descriptions.js.map +1 -1
  320. package/dist/components/hb-dialog.js +53 -13
  321. package/dist/components/hb-dialog.js.map +1 -1
  322. package/dist/components/hb-divider.js +2 -2
  323. package/dist/components/hb-drawer.js +36 -5
  324. package/dist/components/hb-drawer.js.map +1 -1
  325. package/dist/components/hb-dropdown.js +94 -12
  326. package/dist/components/hb-dropdown.js.map +1 -1
  327. package/dist/components/hb-empty.js +1 -1
  328. package/dist/components/hb-float-button.js +2 -2
  329. package/dist/components/hb-footer.js +1 -1
  330. package/dist/components/hb-form-item.js +61 -9
  331. package/dist/components/hb-form-item.js.map +1 -1
  332. package/dist/components/hb-form.js +13 -8
  333. package/dist/components/hb-form.js.map +1 -1
  334. package/dist/components/hb-header.js +1 -1
  335. package/dist/components/hb-icon.js +1 -89
  336. package/dist/components/hb-icon.js.map +1 -1
  337. package/dist/components/hb-image-preview.js +13 -9
  338. package/dist/components/hb-image-preview.js.map +1 -1
  339. package/dist/components/hb-image.js +23 -3
  340. package/dist/components/hb-image.js.map +1 -1
  341. package/dist/components/hb-input-number.js +7 -7
  342. package/dist/components/hb-input-number.js.map +1 -1
  343. package/dist/components/hb-input-tag.js +2 -2
  344. package/dist/components/hb-input.js +40 -3
  345. package/dist/components/hb-input.js.map +1 -1
  346. package/dist/components/hb-layout.js +36 -14
  347. package/dist/components/hb-layout.js.map +1 -1
  348. package/dist/components/hb-link.js +2 -2
  349. package/dist/components/hb-loading.js +2 -2
  350. package/dist/components/hb-main.js +1 -1
  351. package/dist/components/hb-menu-item.js +15 -5
  352. package/dist/components/hb-menu-item.js.map +1 -1
  353. package/dist/components/hb-menu.js +3 -3
  354. package/dist/components/hb-menu.js.map +1 -1
  355. package/dist/components/hb-message.js +13 -4
  356. package/dist/components/hb-message.js.map +1 -1
  357. package/dist/components/hb-notification.js +2 -2
  358. package/dist/components/hb-page-header.js +1 -1
  359. package/dist/components/hb-pagination.js +28 -10
  360. package/dist/components/hb-pagination.js.map +1 -1
  361. package/dist/components/hb-popconfirm.js +58 -8
  362. package/dist/components/hb-popconfirm.js.map +1 -1
  363. package/dist/components/hb-popover.js +38 -5
  364. package/dist/components/hb-popover.js.map +1 -1
  365. package/dist/components/hb-progress.js +1 -1
  366. package/dist/components/hb-radio.js +8 -3
  367. package/dist/components/hb-radio.js.map +1 -1
  368. package/dist/components/hb-rate.js +46 -4
  369. package/dist/components/hb-rate.js.map +1 -1
  370. package/dist/components/hb-result.js +1 -1
  371. package/dist/components/hb-row.js +2 -2
  372. package/dist/components/hb-scrollbar.js +5 -5
  373. package/dist/components/hb-scrollbar.js.map +1 -1
  374. package/dist/components/hb-segmented.js +54 -6
  375. package/dist/components/hb-segmented.js.map +1 -1
  376. package/dist/components/hb-select.js +64 -16
  377. package/dist/components/hb-select.js.map +1 -1
  378. package/dist/components/hb-slider.js +191 -24
  379. package/dist/components/hb-slider.js.map +1 -1
  380. package/dist/components/hb-space.js +2 -2
  381. package/dist/components/hb-statistic.js +1 -1
  382. package/dist/components/hb-step.js +1 -1
  383. package/dist/components/hb-steps.js +35 -8
  384. package/dist/components/hb-steps.js.map +1 -1
  385. package/dist/components/hb-sub-menu.js +5 -5
  386. package/dist/components/hb-switch.js +9 -4
  387. package/dist/components/hb-switch.js.map +1 -1
  388. package/dist/components/hb-tab-pane.js +1 -1
  389. package/dist/components/hb-table.js +26 -17
  390. package/dist/components/hb-table.js.map +1 -1
  391. package/dist/components/hb-tabs.js +31 -10
  392. package/dist/components/hb-tabs.js.map +1 -1
  393. package/dist/components/hb-tag.js +3 -2
  394. package/dist/components/hb-tag.js.map +1 -1
  395. package/dist/components/hb-text.js +2 -2
  396. package/dist/components/hb-time-picker.js +14 -9
  397. package/dist/components/hb-time-picker.js.map +1 -1
  398. package/dist/components/hb-time-select.js +13 -4
  399. package/dist/components/hb-time-select.js.map +1 -1
  400. package/dist/components/hb-timeline.js +1 -1
  401. package/dist/components/hb-tooltip.js +44 -6
  402. package/dist/components/hb-tooltip.js.map +1 -1
  403. package/dist/components/hb-transfer.js +2 -2
  404. package/dist/components/hb-tree-select.js +219 -24
  405. package/dist/components/hb-tree-select.js.map +1 -1
  406. package/dist/components/hb-tree.js +147 -13
  407. package/dist/components/hb-tree.js.map +1 -1
  408. package/dist/components/hb-upload.js +3 -3
  409. package/dist/components/hb-watermark.js +19 -11
  410. package/dist/components/hb-watermark.js.map +1 -1
  411. package/dist/components/{p-cc0aeb50.js → p-00aa34c8.js} +17 -3
  412. package/dist/components/p-00aa34c8.js.map +1 -0
  413. package/dist/components/p-86d92faf.js +93 -0
  414. package/dist/components/p-86d92faf.js.map +1 -0
  415. package/dist/{esm/date-helpers-e4d85a67.js → components/p-e0876aca.js} +10 -17
  416. package/dist/components/p-e0876aca.js.map +1 -0
  417. package/dist/components/p-fad66d69.js +32 -0
  418. package/dist/components/p-fad66d69.js.map +1 -0
  419. package/dist/esm/{a11y-f9ab2964.js → a11y-e4cde5b0.js} +17 -3
  420. package/dist/esm/a11y-e4cde5b0.js.map +1 -0
  421. package/dist/{components/p-cf94cbf6.js → esm/date-helpers-259ed2f1.js} +10 -17
  422. package/dist/esm/date-helpers-259ed2f1.js.map +1 -0
  423. package/dist/esm/hb-affix.entry.js +1 -1
  424. package/dist/esm/hb-alert.entry.js +2 -1
  425. package/dist/esm/hb-alert.entry.js.map +1 -1
  426. package/dist/esm/hb-aside.entry.js +1 -1
  427. package/dist/esm/hb-avatar.entry.js +1 -1
  428. package/dist/esm/hb-backtop.entry.js +2 -2
  429. package/dist/esm/hb-badge.entry.js +1 -1
  430. package/dist/esm/hb-breadcrumb-item.entry.js +1 -1
  431. package/dist/esm/hb-breadcrumb.entry.js +1 -1
  432. package/dist/esm/hb-button.entry.js +2 -2
  433. package/dist/esm/hb-calendar.entry.js +78 -10
  434. package/dist/esm/hb-calendar.entry.js.map +1 -1
  435. package/dist/esm/hb-card.entry.js +1 -1
  436. package/dist/esm/hb-cascader.entry.js +306 -146
  437. package/dist/esm/hb-cascader.entry.js.map +1 -1
  438. package/dist/esm/hb-checkbox-group.entry.js +12 -8
  439. package/dist/esm/hb-checkbox-group.entry.js.map +1 -1
  440. package/dist/esm/hb-checkbox.entry.js +9 -4
  441. package/dist/esm/hb-checkbox.entry.js.map +1 -1
  442. package/dist/esm/hb-collapse-item.entry.js +13 -4
  443. package/dist/esm/hb-collapse-item.entry.js.map +1 -1
  444. package/dist/esm/hb-collapse.entry.js +20 -15
  445. package/dist/esm/hb-collapse.entry.js.map +1 -1
  446. package/dist/esm/hb-color-picker-panel.entry.js +2 -2
  447. package/dist/esm/hb-color-picker.entry.js +108 -28
  448. package/dist/esm/hb-color-picker.entry.js.map +1 -1
  449. package/dist/esm/hb-config-provider.entry.js +1 -1
  450. package/dist/esm/hb-container.entry.js +2 -2
  451. package/dist/esm/hb-date-picker-pane.entry.js +2 -2
  452. package/dist/esm/hb-date-picker.entry.js +90 -9
  453. package/dist/esm/hb-date-picker.entry.js.map +1 -1
  454. package/dist/esm/hb-date-range-picker.entry.js +3 -3
  455. package/dist/esm/hb-date-time-picker.entry.js +3 -3
  456. package/dist/esm/hb-descriptions.entry.js +2 -2
  457. package/dist/esm/hb-descriptions.entry.js.map +1 -1
  458. package/dist/esm/hb-dialog.entry.js +51 -12
  459. package/dist/esm/hb-dialog.entry.js.map +1 -1
  460. package/dist/esm/hb-divider.entry.js +2 -2
  461. package/dist/esm/hb-drawer.entry.js +34 -4
  462. package/dist/esm/hb-drawer.entry.js.map +1 -1
  463. package/dist/esm/hb-dropdown.entry.js +91 -11
  464. package/dist/esm/hb-dropdown.entry.js.map +1 -1
  465. package/dist/esm/hb-empty.entry.js +1 -1
  466. package/dist/esm/hb-float-button.entry.js +2 -2
  467. package/dist/esm/hb-footer.entry.js +1 -1
  468. package/dist/esm/hb-form-item.entry.js +61 -9
  469. package/dist/esm/hb-form-item.entry.js.map +1 -1
  470. package/dist/esm/hb-form.entry.js +13 -8
  471. package/dist/esm/hb-form.entry.js.map +1 -1
  472. package/dist/esm/hb-header.entry.js +1 -1
  473. package/dist/esm/hb-image-preview.entry.js +13 -9
  474. package/dist/esm/hb-image-preview.entry.js.map +1 -1
  475. package/dist/esm/hb-image.entry.js +21 -3
  476. package/dist/esm/hb-image.entry.js.map +1 -1
  477. package/dist/esm/hb-input-number.entry.js +7 -7
  478. package/dist/esm/hb-input-number.entry.js.map +1 -1
  479. package/dist/esm/hb-input-tag.entry.js +2 -2
  480. package/dist/esm/hb-input.entry.js +40 -3
  481. package/dist/esm/hb-input.entry.js.map +1 -1
  482. package/dist/esm/hb-layout.entry.js +36 -14
  483. package/dist/esm/hb-layout.entry.js.map +1 -1
  484. package/dist/esm/hb-link.entry.js +2 -2
  485. package/dist/esm/hb-loading.entry.js +2 -2
  486. package/dist/esm/hb-main.entry.js +1 -1
  487. package/dist/esm/hb-menu-item.entry.js +14 -5
  488. package/dist/esm/hb-menu-item.entry.js.map +1 -1
  489. package/dist/esm/hb-menu.entry.js +3 -3
  490. package/dist/esm/hb-menu.entry.js.map +1 -1
  491. package/dist/esm/hb-message.entry.js +13 -4
  492. package/dist/esm/hb-message.entry.js.map +1 -1
  493. package/dist/esm/hb-notification.entry.js +2 -2
  494. package/dist/esm/hb-page-header.entry.js +1 -1
  495. package/dist/esm/hb-pagination.entry.js +24 -8
  496. package/dist/esm/hb-pagination.entry.js.map +1 -1
  497. package/dist/esm/hb-popconfirm.entry.js +57 -8
  498. package/dist/esm/hb-popconfirm.entry.js.map +1 -1
  499. package/dist/esm/hb-popover.entry.js +37 -5
  500. package/dist/esm/hb-popover.entry.js.map +1 -1
  501. package/dist/esm/hb-progress.entry.js +1 -1
  502. package/dist/esm/hb-radio.entry.js +8 -3
  503. package/dist/esm/hb-radio.entry.js.map +1 -1
  504. package/dist/esm/hb-rate.entry.js +46 -4
  505. package/dist/esm/hb-rate.entry.js.map +1 -1
  506. package/dist/esm/hb-result.entry.js +1 -1
  507. package/dist/esm/hb-row.entry.js +2 -2
  508. package/dist/esm/hb-scrollbar.entry.js +5 -5
  509. package/dist/esm/hb-scrollbar.entry.js.map +1 -1
  510. package/dist/esm/hb-segmented.entry.js +51 -6
  511. package/dist/esm/hb-segmented.entry.js.map +1 -1
  512. package/dist/esm/hb-select.entry.js +64 -16
  513. package/dist/esm/hb-select.entry.js.map +1 -1
  514. package/dist/esm/hb-slider.entry.js +186 -23
  515. package/dist/esm/hb-slider.entry.js.map +1 -1
  516. package/dist/esm/hb-space.entry.js +2 -2
  517. package/dist/esm/hb-statistic.entry.js +1 -1
  518. package/dist/esm/hb-step.entry.js +1 -1
  519. package/dist/esm/hb-steps.entry.js +28 -7
  520. package/dist/esm/hb-steps.entry.js.map +1 -1
  521. package/dist/esm/hb-sub-menu.entry.js +5 -5
  522. package/dist/esm/hb-switch.entry.js +9 -4
  523. package/dist/esm/hb-switch.entry.js.map +1 -1
  524. package/dist/esm/hb-tab-pane.entry.js +1 -1
  525. package/dist/esm/hb-table.entry.js +26 -17
  526. package/dist/esm/hb-table.entry.js.map +1 -1
  527. package/dist/esm/hb-tabs.entry.js +31 -10
  528. package/dist/esm/hb-tabs.entry.js.map +1 -1
  529. package/dist/esm/hb-tag.entry.js +3 -2
  530. package/dist/esm/hb-tag.entry.js.map +1 -1
  531. package/dist/esm/hb-text.entry.js +2 -2
  532. package/dist/esm/hb-time-picker.entry.js +14 -9
  533. package/dist/esm/hb-time-picker.entry.js.map +1 -1
  534. package/dist/esm/hb-time-select.entry.js +13 -4
  535. package/dist/esm/hb-time-select.entry.js.map +1 -1
  536. package/dist/esm/hb-timeline.entry.js +1 -1
  537. package/dist/esm/hb-tooltip.entry.js +43 -6
  538. package/dist/esm/hb-tooltip.entry.js.map +1 -1
  539. package/dist/esm/hb-transfer.entry.js +2 -2
  540. package/dist/esm/hb-tree-select.entry.js +215 -23
  541. package/dist/esm/hb-tree-select.entry.js.map +1 -1
  542. package/dist/esm/hb-tree.entry.js +145 -12
  543. package/dist/esm/hb-tree.entry.js.map +1 -1
  544. package/dist/esm/hb-upload.entry.js +3 -3
  545. package/dist/esm/hb-watermark.entry.js +19 -11
  546. package/dist/esm/hb-watermark.entry.js.map +1 -1
  547. package/dist/esm/huibo-ui.js +1 -1
  548. package/dist/esm/loader.js +1 -1
  549. package/dist/esm/transition-4295d789.js +32 -0
  550. package/dist/esm/transition-4295d789.js.map +1 -0
  551. package/dist/huibo-ui/huibo-ui.css +1 -1
  552. package/dist/huibo-ui/huibo-ui.esm.js +1 -1
  553. package/dist/huibo-ui/huibo-ui.esm.js.map +1 -1
  554. package/dist/huibo-ui/p-00aa34c8.js +2 -0
  555. package/dist/huibo-ui/p-00aa34c8.js.map +1 -0
  556. package/dist/huibo-ui/p-02f15843.entry.js +2 -0
  557. package/dist/huibo-ui/p-0cc1e3f3.entry.js +2 -0
  558. package/dist/huibo-ui/p-0cc1e3f3.entry.js.map +1 -0
  559. package/dist/huibo-ui/{p-f1c084c5.entry.js → p-0ddae4e9.entry.js} +2 -2
  560. package/dist/huibo-ui/{p-672076c3.entry.js → p-10f6c184.entry.js} +2 -2
  561. package/dist/huibo-ui/p-10f6c184.entry.js.map +1 -0
  562. package/dist/huibo-ui/{p-6ac242fe.entry.js → p-14c3b47b.entry.js} +2 -2
  563. package/dist/huibo-ui/{p-8c80a765.entry.js → p-15db24e9.entry.js} +2 -2
  564. package/dist/huibo-ui/{p-8b027491.entry.js → p-193efdc0.entry.js} +2 -2
  565. package/dist/huibo-ui/{p-8d925e3d.entry.js → p-1b0fbe69.entry.js} +2 -2
  566. package/dist/huibo-ui/{p-85f68526.entry.js → p-1b98152b.entry.js} +2 -2
  567. package/dist/huibo-ui/p-1b98152b.entry.js.map +1 -0
  568. package/dist/huibo-ui/p-1f6d0adb.entry.js +2 -0
  569. package/dist/huibo-ui/p-1f6d0adb.entry.js.map +1 -0
  570. package/dist/huibo-ui/{p-f374d5a3.entry.js → p-20632186.entry.js} +2 -2
  571. package/dist/huibo-ui/{p-e6f2d71d.entry.js → p-20fc554b.entry.js} +2 -2
  572. package/dist/huibo-ui/{p-64ca0980.entry.js → p-29092b85.entry.js} +2 -2
  573. package/dist/huibo-ui/p-29092b85.entry.js.map +1 -0
  574. package/dist/huibo-ui/p-2bc30b1b.entry.js +2 -0
  575. package/dist/huibo-ui/p-2bc30b1b.entry.js.map +1 -0
  576. package/dist/huibo-ui/{p-fd19813c.entry.js → p-2bcda1bb.entry.js} +2 -2
  577. package/dist/huibo-ui/{p-231a7335.entry.js → p-2ca9796a.entry.js} +2 -2
  578. package/dist/huibo-ui/p-2ca9796a.entry.js.map +1 -0
  579. package/dist/huibo-ui/{p-e0768565.entry.js → p-3042f986.entry.js} +2 -2
  580. package/dist/huibo-ui/{p-be48d2aa.entry.js → p-3dacb26b.entry.js} +2 -2
  581. package/dist/huibo-ui/{p-6a1ec3ff.entry.js → p-3deff48c.entry.js} +2 -2
  582. package/dist/huibo-ui/{p-c321c4aa.entry.js → p-412ff618.entry.js} +2 -2
  583. package/dist/huibo-ui/p-415295f3.entry.js +2 -0
  584. package/dist/huibo-ui/p-415295f3.entry.js.map +1 -0
  585. package/dist/huibo-ui/p-494e6c25.entry.js +2 -0
  586. package/dist/huibo-ui/p-494e6c25.entry.js.map +1 -0
  587. package/dist/huibo-ui/p-4d87d7f4.entry.js +2 -0
  588. package/dist/huibo-ui/p-4d87d7f4.entry.js.map +1 -0
  589. package/dist/huibo-ui/p-54a28052.entry.js +2 -0
  590. package/dist/huibo-ui/p-54a28052.entry.js.map +1 -0
  591. package/dist/huibo-ui/{p-88127de1.entry.js → p-55cd13eb.entry.js} +2 -2
  592. package/dist/huibo-ui/{p-58ebb9b3.entry.js → p-5c839288.entry.js} +2 -2
  593. package/dist/huibo-ui/p-5e253c15.entry.js +2 -0
  594. package/dist/huibo-ui/p-5e253c15.entry.js.map +1 -0
  595. package/dist/huibo-ui/p-63d68c61.entry.js +2 -0
  596. package/dist/huibo-ui/p-63d68c61.entry.js.map +1 -0
  597. package/dist/huibo-ui/{p-a042e3d0.entry.js → p-6518c435.entry.js} +2 -2
  598. package/dist/huibo-ui/p-687d8dff.entry.js +2 -0
  599. package/dist/huibo-ui/p-687d8dff.entry.js.map +1 -0
  600. package/dist/huibo-ui/p-688460ce.entry.js +2 -0
  601. package/dist/huibo-ui/p-688460ce.entry.js.map +1 -0
  602. package/dist/huibo-ui/p-69bb1dd9.entry.js +2 -0
  603. package/dist/huibo-ui/p-69bb1dd9.entry.js.map +1 -0
  604. package/dist/huibo-ui/{p-a0015341.entry.js → p-6bfeab80.entry.js} +2 -2
  605. package/dist/huibo-ui/{p-4001c08d.entry.js → p-6c23fbd1.entry.js} +2 -2
  606. package/dist/huibo-ui/p-6c23fbd1.entry.js.map +1 -0
  607. package/dist/huibo-ui/p-6c8cf248.entry.js +2 -0
  608. package/dist/huibo-ui/p-6c8cf248.entry.js.map +1 -0
  609. package/dist/huibo-ui/p-6efed295.entry.js +2 -0
  610. package/dist/huibo-ui/p-6efed295.entry.js.map +1 -0
  611. package/dist/huibo-ui/{p-8b1ae77e.entry.js → p-746a11a3.entry.js} +2 -2
  612. package/dist/huibo-ui/{p-c3e8893d.entry.js → p-79b24b83.entry.js} +2 -2
  613. package/dist/huibo-ui/p-79b24b83.entry.js.map +1 -0
  614. package/dist/huibo-ui/p-7a38b3e2.entry.js +2 -0
  615. package/dist/huibo-ui/p-7a38b3e2.entry.js.map +1 -0
  616. package/dist/huibo-ui/{p-c922d672.entry.js → p-7a682c56.entry.js} +2 -2
  617. package/dist/huibo-ui/{p-8c987d57.entry.js → p-7f65dc36.entry.js} +2 -2
  618. package/dist/huibo-ui/{p-463de26d.entry.js → p-815fc943.entry.js} +2 -2
  619. package/dist/huibo-ui/{p-d87fc21a.entry.js → p-88a6c905.entry.js} +2 -2
  620. package/dist/huibo-ui/{p-77017274.entry.js → p-89be7973.entry.js} +2 -2
  621. package/dist/huibo-ui/p-8a202bc5.entry.js +2 -0
  622. package/dist/huibo-ui/p-8a202bc5.entry.js.map +1 -0
  623. package/dist/huibo-ui/{p-315feadf.entry.js → p-8c4415ed.entry.js} +2 -2
  624. package/dist/huibo-ui/p-8c4415ed.entry.js.map +1 -0
  625. package/dist/huibo-ui/{p-9319c650.entry.js → p-950e7465.entry.js} +2 -2
  626. package/dist/huibo-ui/{p-6b381d0e.entry.js → p-96cecd21.entry.js} +2 -2
  627. package/dist/huibo-ui/p-96cecd21.entry.js.map +1 -0
  628. package/dist/huibo-ui/{p-710f38de.entry.js → p-98b513cd.entry.js} +2 -2
  629. package/dist/huibo-ui/p-98b513cd.entry.js.map +1 -0
  630. package/dist/huibo-ui/{p-5df47135.entry.js → p-a190ca89.entry.js} +2 -2
  631. package/dist/huibo-ui/{p-0e65e1bd.entry.js → p-ac18c68b.entry.js} +2 -2
  632. package/dist/huibo-ui/p-ac18c68b.entry.js.map +1 -0
  633. package/dist/huibo-ui/{p-d64b91ef.entry.js → p-ac45291c.entry.js} +2 -2
  634. package/dist/huibo-ui/p-ac45291c.entry.js.map +1 -0
  635. package/dist/huibo-ui/{p-477d8568.entry.js → p-aeae83af.entry.js} +2 -2
  636. package/dist/huibo-ui/{p-b489a526.entry.js → p-b06c8020.entry.js} +2 -2
  637. package/dist/huibo-ui/{p-dfaf7e37.entry.js → p-b105cf76.entry.js} +2 -2
  638. package/dist/huibo-ui/p-b105cf76.entry.js.map +1 -0
  639. package/dist/huibo-ui/{p-c3e665f6.entry.js → p-b38802b0.entry.js} +2 -2
  640. package/dist/huibo-ui/p-b38802b0.entry.js.map +1 -0
  641. package/dist/huibo-ui/{p-ea74fcae.entry.js → p-b3fd12c7.entry.js} +2 -2
  642. package/dist/huibo-ui/p-b3fd12c7.entry.js.map +1 -0
  643. package/dist/huibo-ui/p-b5ea18ba.entry.js +2 -0
  644. package/dist/huibo-ui/p-b5ea18ba.entry.js.map +1 -0
  645. package/dist/huibo-ui/{p-e2a8a396.entry.js → p-b6afe81e.entry.js} +2 -2
  646. package/dist/huibo-ui/{p-2b286698.entry.js → p-b7885d4a.entry.js} +2 -2
  647. package/dist/huibo-ui/p-b7900dee.entry.js +2 -0
  648. package/dist/huibo-ui/p-b7900dee.entry.js.map +1 -0
  649. package/dist/huibo-ui/p-b8c83751.entry.js +2 -0
  650. package/dist/huibo-ui/p-b8c83751.entry.js.map +1 -0
  651. package/dist/huibo-ui/p-c7713947.entry.js +2 -0
  652. package/dist/huibo-ui/p-c7713947.entry.js.map +1 -0
  653. package/dist/huibo-ui/{p-e0ab9010.entry.js → p-c869842c.entry.js} +2 -2
  654. package/dist/huibo-ui/p-c869842c.entry.js.map +1 -0
  655. package/dist/huibo-ui/{p-476527c1.entry.js → p-c8e917db.entry.js} +2 -2
  656. package/dist/huibo-ui/p-c8e917db.entry.js.map +1 -0
  657. package/dist/huibo-ui/p-cb66dbef.entry.js +2 -0
  658. package/dist/huibo-ui/p-cb66dbef.entry.js.map +1 -0
  659. package/dist/huibo-ui/p-cde83f76.entry.js +2 -0
  660. package/dist/huibo-ui/p-cde83f76.entry.js.map +1 -0
  661. package/dist/huibo-ui/{p-10c088f3.entry.js → p-d9c7c378.entry.js} +2 -2
  662. package/dist/huibo-ui/{p-332c8877.entry.js → p-dd9c6459.entry.js} +2 -2
  663. package/dist/huibo-ui/{p-80aca641.entry.js → p-dfccc7aa.entry.js} +2 -2
  664. package/dist/huibo-ui/{p-21682e92.entry.js → p-dfd144d8.entry.js} +2 -2
  665. package/dist/huibo-ui/p-e0876aca.js +2 -0
  666. package/dist/huibo-ui/p-e0876aca.js.map +1 -0
  667. package/dist/huibo-ui/p-e1773c93.entry.js +2 -0
  668. package/dist/huibo-ui/p-e1773c93.entry.js.map +1 -0
  669. package/dist/huibo-ui/{p-079a4130.entry.js → p-e3155cd7.entry.js} +2 -2
  670. package/dist/huibo-ui/{p-59b2e61c.entry.js → p-e73c357f.entry.js} +2 -2
  671. package/dist/huibo-ui/p-e73c357f.entry.js.map +1 -0
  672. package/dist/huibo-ui/{p-c1b4eacb.entry.js → p-e7c73624.entry.js} +2 -2
  673. package/dist/huibo-ui/p-e7c73624.entry.js.map +1 -0
  674. package/dist/huibo-ui/{p-d7815b4f.entry.js → p-e9e7abca.entry.js} +2 -2
  675. package/dist/huibo-ui/{p-f81ec512.entry.js → p-ea0823f3.entry.js} +2 -2
  676. package/dist/huibo-ui/p-ea0823f3.entry.js.map +1 -0
  677. package/dist/huibo-ui/{p-2e6584ea.entry.js → p-f1f2483f.entry.js} +2 -2
  678. package/dist/huibo-ui/{p-465dcb4c.entry.js → p-f2c78699.entry.js} +2 -2
  679. package/dist/huibo-ui/p-fad66d69.js +2 -0
  680. package/dist/huibo-ui/p-fad66d69.js.map +1 -0
  681. package/dist/huibo-ui/{p-4d8b1404.entry.js → p-fd6831f9.entry.js} +2 -2
  682. package/dist/huibo-ui/p-ff6bc5cc.entry.js +2 -0
  683. package/dist/huibo-ui/p-ff6bc5cc.entry.js.map +1 -0
  684. package/dist/types/components/Calendar/Calendar.d.ts +13 -1
  685. package/dist/types/components/Cascader/Cascader.d.ts +80 -90
  686. package/dist/types/components/Checkbox/Checkbox.d.ts +5 -0
  687. package/dist/types/components/Checkbox/CheckboxGroup.d.ts +1 -0
  688. package/dist/types/components/Collapse/Collapse.d.ts +2 -0
  689. package/dist/types/components/Collapse/CollapseItem.d.ts +8 -1
  690. package/dist/types/components/ColorPicker/ColorPicker.d.ts +11 -0
  691. package/dist/types/components/DatePicker/DatePicker.d.ts +14 -3
  692. package/dist/types/components/Dialog/Dialog.d.ts +13 -1
  693. package/dist/types/components/Drawer/Drawer.d.ts +4 -0
  694. package/dist/types/components/Dropdown/Dropdown.d.ts +18 -1
  695. package/dist/types/components/Form/Form.d.ts +2 -0
  696. package/dist/types/components/Form/FormItem.d.ts +10 -0
  697. package/dist/types/components/Image/Image.d.ts +6 -0
  698. package/dist/types/components/ImagePreview/ImagePreview.d.ts +5 -1
  699. package/dist/types/components/Input/Input.d.ts +9 -0
  700. package/dist/types/components/Layout/Layout.d.ts +20 -10
  701. package/dist/types/components/Menu/MenuItem.d.ts +8 -1
  702. package/dist/types/components/Message/Message.d.ts +3 -0
  703. package/dist/types/components/Pagination/Pagination.d.ts +3 -0
  704. package/dist/types/components/Popconfirm/Popconfirm.d.ts +16 -0
  705. package/dist/types/components/Popover/Popover.d.ts +14 -0
  706. package/dist/types/components/Radio/Radio.d.ts +5 -0
  707. package/dist/types/components/Rate/Rate.d.ts +7 -0
  708. package/dist/types/components/Segmented/Segmented.d.ts +18 -1
  709. package/dist/types/components/Select/Select.d.ts +11 -0
  710. package/dist/types/components/Slider/Slider.d.ts +27 -1
  711. package/dist/types/components/Steps/Steps.d.ts +14 -6
  712. package/dist/types/components/Table/Table.d.ts +8 -2
  713. package/dist/types/components/Tabs/Tabs.d.ts +6 -0
  714. package/dist/types/components/Tooltip/Tooltip.d.ts +15 -1
  715. package/dist/types/components/Tree/Tree.d.ts +24 -0
  716. package/dist/types/components/TreeSelect/TreeSelect.d.ts +26 -0
  717. package/dist/types/components/Watermark/Watermark.d.ts +7 -1
  718. package/dist/types/components.d.ts +290 -98
  719. package/dist/types/utils/a11y.d.ts +9 -0
  720. package/dist/types/utils/date-helpers.d.ts +1 -1
  721. package/dist/types/utils/transition.d.ts +27 -0
  722. package/package.json +8 -2
  723. package/readme.md +88 -73
  724. package/dist/cjs/a11y-802de67a.js.map +0 -1
  725. package/dist/cjs/date-helpers-904747ff.js.map +0 -1
  726. package/dist/components/p-cc0aeb50.js.map +0 -1
  727. package/dist/components/p-cf94cbf6.js.map +0 -1
  728. package/dist/esm/a11y-f9ab2964.js.map +0 -1
  729. package/dist/esm/date-helpers-e4d85a67.js.map +0 -1
  730. package/dist/huibo-ui/p-003cee87.entry.js +0 -2
  731. package/dist/huibo-ui/p-003cee87.entry.js.map +0 -1
  732. package/dist/huibo-ui/p-0a033738.entry.js +0 -2
  733. package/dist/huibo-ui/p-0a033738.entry.js.map +0 -1
  734. package/dist/huibo-ui/p-0bef78ac.entry.js +0 -2
  735. package/dist/huibo-ui/p-0bef78ac.entry.js.map +0 -1
  736. package/dist/huibo-ui/p-0e65e1bd.entry.js.map +0 -1
  737. package/dist/huibo-ui/p-0f189251.entry.js +0 -2
  738. package/dist/huibo-ui/p-0f189251.entry.js.map +0 -1
  739. package/dist/huibo-ui/p-1b5acd6d.entry.js +0 -2
  740. package/dist/huibo-ui/p-1b5acd6d.entry.js.map +0 -1
  741. package/dist/huibo-ui/p-231a7335.entry.js.map +0 -1
  742. package/dist/huibo-ui/p-24ad7eec.entry.js +0 -2
  743. package/dist/huibo-ui/p-24ad7eec.entry.js.map +0 -1
  744. package/dist/huibo-ui/p-315feadf.entry.js.map +0 -1
  745. package/dist/huibo-ui/p-3c7f73c8.entry.js +0 -2
  746. package/dist/huibo-ui/p-3c7f73c8.entry.js.map +0 -1
  747. package/dist/huibo-ui/p-4001c08d.entry.js.map +0 -1
  748. package/dist/huibo-ui/p-44c48246.entry.js +0 -2
  749. package/dist/huibo-ui/p-44c48246.entry.js.map +0 -1
  750. package/dist/huibo-ui/p-476527c1.entry.js.map +0 -1
  751. package/dist/huibo-ui/p-4d0dff15.entry.js +0 -2
  752. package/dist/huibo-ui/p-58d20809.entry.js +0 -2
  753. package/dist/huibo-ui/p-58d20809.entry.js.map +0 -1
  754. package/dist/huibo-ui/p-59b2e61c.entry.js.map +0 -1
  755. package/dist/huibo-ui/p-64ca0980.entry.js.map +0 -1
  756. package/dist/huibo-ui/p-672076c3.entry.js.map +0 -1
  757. package/dist/huibo-ui/p-6b381d0e.entry.js.map +0 -1
  758. package/dist/huibo-ui/p-710f38de.entry.js.map +0 -1
  759. package/dist/huibo-ui/p-756acbdb.entry.js +0 -2
  760. package/dist/huibo-ui/p-756acbdb.entry.js.map +0 -1
  761. package/dist/huibo-ui/p-75a93de3.entry.js +0 -2
  762. package/dist/huibo-ui/p-75a93de3.entry.js.map +0 -1
  763. package/dist/huibo-ui/p-769960f4.entry.js +0 -2
  764. package/dist/huibo-ui/p-769960f4.entry.js.map +0 -1
  765. package/dist/huibo-ui/p-7f6975ad.entry.js +0 -2
  766. package/dist/huibo-ui/p-7f6975ad.entry.js.map +0 -1
  767. package/dist/huibo-ui/p-85f68526.entry.js.map +0 -1
  768. package/dist/huibo-ui/p-8d615521.entry.js +0 -2
  769. package/dist/huibo-ui/p-8d615521.entry.js.map +0 -1
  770. package/dist/huibo-ui/p-953b9514.entry.js +0 -2
  771. package/dist/huibo-ui/p-953b9514.entry.js.map +0 -1
  772. package/dist/huibo-ui/p-965d4d02.entry.js +0 -2
  773. package/dist/huibo-ui/p-965d4d02.entry.js.map +0 -1
  774. package/dist/huibo-ui/p-ad6b0c6e.entry.js +0 -2
  775. package/dist/huibo-ui/p-ad6b0c6e.entry.js.map +0 -1
  776. package/dist/huibo-ui/p-c1a059d9.entry.js +0 -2
  777. package/dist/huibo-ui/p-c1a059d9.entry.js.map +0 -1
  778. package/dist/huibo-ui/p-c1b4eacb.entry.js.map +0 -1
  779. package/dist/huibo-ui/p-c3e665f6.entry.js.map +0 -1
  780. package/dist/huibo-ui/p-c3e8893d.entry.js.map +0 -1
  781. package/dist/huibo-ui/p-cc0aeb50.js +0 -2
  782. package/dist/huibo-ui/p-cc0aeb50.js.map +0 -1
  783. package/dist/huibo-ui/p-cf94cbf6.js +0 -2
  784. package/dist/huibo-ui/p-cf94cbf6.js.map +0 -1
  785. package/dist/huibo-ui/p-d3939d44.entry.js +0 -2
  786. package/dist/huibo-ui/p-d3939d44.entry.js.map +0 -1
  787. package/dist/huibo-ui/p-d64b91ef.entry.js.map +0 -1
  788. package/dist/huibo-ui/p-dd05cb2c.entry.js +0 -2
  789. package/dist/huibo-ui/p-dd05cb2c.entry.js.map +0 -1
  790. package/dist/huibo-ui/p-dfaf7e37.entry.js.map +0 -1
  791. package/dist/huibo-ui/p-e0ab9010.entry.js.map +0 -1
  792. package/dist/huibo-ui/p-e9490259.entry.js +0 -2
  793. package/dist/huibo-ui/p-e9490259.entry.js.map +0 -1
  794. package/dist/huibo-ui/p-ea74fcae.entry.js.map +0 -1
  795. package/dist/huibo-ui/p-ebd04656.entry.js +0 -2
  796. package/dist/huibo-ui/p-ebd04656.entry.js.map +0 -1
  797. package/dist/huibo-ui/p-ed0ff857.entry.js +0 -2
  798. package/dist/huibo-ui/p-ed0ff857.entry.js.map +0 -1
  799. package/dist/huibo-ui/p-f0ac7db5.entry.js +0 -2
  800. package/dist/huibo-ui/p-f0ac7db5.entry.js.map +0 -1
  801. package/dist/huibo-ui/p-f81ec512.entry.js.map +0 -1
  802. /package/dist/huibo-ui/{p-4d0dff15.entry.js.map → p-02f15843.entry.js.map} +0 -0
  803. /package/dist/huibo-ui/{p-f1c084c5.entry.js.map → p-0ddae4e9.entry.js.map} +0 -0
  804. /package/dist/huibo-ui/{p-6ac242fe.entry.js.map → p-14c3b47b.entry.js.map} +0 -0
  805. /package/dist/huibo-ui/{p-8c80a765.entry.js.map → p-15db24e9.entry.js.map} +0 -0
  806. /package/dist/huibo-ui/{p-8b027491.entry.js.map → p-193efdc0.entry.js.map} +0 -0
  807. /package/dist/huibo-ui/{p-8d925e3d.entry.js.map → p-1b0fbe69.entry.js.map} +0 -0
  808. /package/dist/huibo-ui/{p-f374d5a3.entry.js.map → p-20632186.entry.js.map} +0 -0
  809. /package/dist/huibo-ui/{p-e6f2d71d.entry.js.map → p-20fc554b.entry.js.map} +0 -0
  810. /package/dist/huibo-ui/{p-fd19813c.entry.js.map → p-2bcda1bb.entry.js.map} +0 -0
  811. /package/dist/huibo-ui/{p-e0768565.entry.js.map → p-3042f986.entry.js.map} +0 -0
  812. /package/dist/huibo-ui/{p-be48d2aa.entry.js.map → p-3dacb26b.entry.js.map} +0 -0
  813. /package/dist/huibo-ui/{p-6a1ec3ff.entry.js.map → p-3deff48c.entry.js.map} +0 -0
  814. /package/dist/huibo-ui/{p-c321c4aa.entry.js.map → p-412ff618.entry.js.map} +0 -0
  815. /package/dist/huibo-ui/{p-88127de1.entry.js.map → p-55cd13eb.entry.js.map} +0 -0
  816. /package/dist/huibo-ui/{p-58ebb9b3.entry.js.map → p-5c839288.entry.js.map} +0 -0
  817. /package/dist/huibo-ui/{p-a042e3d0.entry.js.map → p-6518c435.entry.js.map} +0 -0
  818. /package/dist/huibo-ui/{p-a0015341.entry.js.map → p-6bfeab80.entry.js.map} +0 -0
  819. /package/dist/huibo-ui/{p-8b1ae77e.entry.js.map → p-746a11a3.entry.js.map} +0 -0
  820. /package/dist/huibo-ui/{p-c922d672.entry.js.map → p-7a682c56.entry.js.map} +0 -0
  821. /package/dist/huibo-ui/{p-8c987d57.entry.js.map → p-7f65dc36.entry.js.map} +0 -0
  822. /package/dist/huibo-ui/{p-463de26d.entry.js.map → p-815fc943.entry.js.map} +0 -0
  823. /package/dist/huibo-ui/{p-d87fc21a.entry.js.map → p-88a6c905.entry.js.map} +0 -0
  824. /package/dist/huibo-ui/{p-77017274.entry.js.map → p-89be7973.entry.js.map} +0 -0
  825. /package/dist/huibo-ui/{p-9319c650.entry.js.map → p-950e7465.entry.js.map} +0 -0
  826. /package/dist/huibo-ui/{p-5df47135.entry.js.map → p-a190ca89.entry.js.map} +0 -0
  827. /package/dist/huibo-ui/{p-477d8568.entry.js.map → p-aeae83af.entry.js.map} +0 -0
  828. /package/dist/huibo-ui/{p-b489a526.entry.js.map → p-b06c8020.entry.js.map} +0 -0
  829. /package/dist/huibo-ui/{p-e2a8a396.entry.js.map → p-b6afe81e.entry.js.map} +0 -0
  830. /package/dist/huibo-ui/{p-2b286698.entry.js.map → p-b7885d4a.entry.js.map} +0 -0
  831. /package/dist/huibo-ui/{p-10c088f3.entry.js.map → p-d9c7c378.entry.js.map} +0 -0
  832. /package/dist/huibo-ui/{p-332c8877.entry.js.map → p-dd9c6459.entry.js.map} +0 -0
  833. /package/dist/huibo-ui/{p-80aca641.entry.js.map → p-dfccc7aa.entry.js.map} +0 -0
  834. /package/dist/huibo-ui/{p-21682e92.entry.js.map → p-dfd144d8.entry.js.map} +0 -0
  835. /package/dist/huibo-ui/{p-079a4130.entry.js.map → p-e3155cd7.entry.js.map} +0 -0
  836. /package/dist/huibo-ui/{p-d7815b4f.entry.js.map → p-e9e7abca.entry.js.map} +0 -0
  837. /package/dist/huibo-ui/{p-2e6584ea.entry.js.map → p-f1f2483f.entry.js.map} +0 -0
  838. /package/dist/huibo-ui/{p-465dcb4c.entry.js.map → p-f2c78699.entry.js.map} +0 -0
  839. /package/dist/huibo-ui/{p-4d8b1404.entry.js.map → p-fd6831f9.entry.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"names":["dropdownCss","HbDropdownStyle0","Dropdown","items","trigger","disabled","isOpen","hbCommand","clickOutside","createClickOutsideHandler","host","this","onClose","componentDidLoad","el","connect","disconnectedCallback","disconnect","show","hide","toggle","handleSelect","item","emit","key","render","triggerEvents","onMouseEnter","onMouseLeave","onClick","h","class","style","zIndex","String","getNextZIndex","map","divided","danger","label"],"sources":["src/components/Dropdown/dropdown.css?tag=hb-dropdown&encapsulation=shadow","src/components/Dropdown/Dropdown.tsx"],"sourcesContent":[":host {\n display: inline-block;\n position: relative;\n}\n\n.hb-dropdown__trigger {\n display: inline-block;\n cursor: pointer;\n}\n\n.hb-dropdown__menu {\n position: absolute;\n top: 100%;\n left: 0;\n min-width: 120px;\n margin-top: 4px;\n padding: 4px 0;\n background-color: var(--hb-color-bg-elevated);\n border-radius: var(--hb-border-radius-base);\n box-shadow: var(--hb-box-shadow);\n animation: hb-dropdown-fade-in 0.15s ease-out;\n}\n\n.hb-dropdown__item {\n display: flex;\n align-items: center;\n padding: 6px 16px;\n font-size: var(--hb-font-size-sm);\n color: var(--hb-color-text);\n cursor: pointer;\n white-space: nowrap;\n transition: background-color var(--hb-transition-duration);\n}\n\n.hb-dropdown__item:hover:not(.hb-dropdown__item--disabled) {\n background-color: var(--hb-color-fill-tertiary);\n color: var(--hb-color-primary);\n}\n\n.hb-dropdown__item--disabled {\n color: var(--hb-color-text-disabled);\n cursor: not-allowed;\n}\n\n.hb-dropdown__item--divided {\n margin-top: 4px;\n padding-top: 8px;\n border-top: 1px solid var(--hb-color-border-secondary);\n}\n\n.hb-dropdown__item--danger {\n color: var(--hb-color-danger);\n}\n.hb-dropdown__item--danger:hover:not(.hb-dropdown__item--disabled) {\n background-color: var(--hb-color-danger-bg);\n color: var(--hb-color-danger);\n}\n\n@keyframes hb-dropdown-fade-in {\n from { opacity: 0; transform: translateY(-4px); }\n to { opacity: 1; transform: translateY(0); }\n}\n","import { Component, h, Prop, State, Element, Event, EventEmitter } from '@stencil/core';\nimport { createClickOutsideHandler } from '../../utils/click-outside';\nimport { getNextZIndex } from '../../utils/popup-manager';\n\nexport interface DropdownItem {\n key: string;\n label: string;\n disabled?: boolean;\n divided?: boolean;\n danger?: boolean;\n}\n\n/**\n * Dropdown 下拉菜单组件\n * 将动作或菜单折叠到下拉菜单中\n */\n@Component({\n tag: 'hb-dropdown',\n styleUrl: 'dropdown.css',\n shadow: true,\n})\nexport class Dropdown {\n @Element() el: HTMLElement;\n\n /** 菜单项 */\n @Prop() items: DropdownItem[] = [];\n\n /** 触发方式 */\n @Prop() trigger: 'hover' | 'click' = 'hover';\n\n /** 是否禁用 */\n @Prop() disabled: boolean = false;\n\n @State() isOpen: boolean = false;\n\n /** 命令事件 */\n @Event() hbCommand: EventEmitter<string>;\n\n private clickOutside = createClickOutsideHandler({\n host: null as any,\n isOpen: () => this.isOpen,\n onClose: () => { this.isOpen = false; },\n });\n\n componentDidLoad() {\n this.clickOutside = createClickOutsideHandler({\n host: this.el,\n isOpen: () => this.isOpen,\n onClose: () => { this.isOpen = false; },\n });\n if (this.trigger === 'click') {\n this.clickOutside.connect();\n }\n }\n\n disconnectedCallback() {\n this.clickOutside.disconnect();\n }\n\n private show = () => {\n if (this.disabled) return;\n this.isOpen = true;\n };\n\n private hide = () => {\n this.isOpen = false;\n };\n\n private toggle = () => {\n if (this.disabled) return;\n this.isOpen = !this.isOpen;\n };\n\n private handleSelect = (item: DropdownItem) => {\n if (item.disabled) return;\n this.isOpen = false;\n this.hbCommand.emit(item.key);\n };\n\n render() {\n const triggerEvents = this.trigger === 'hover'\n ? { onMouseEnter: this.show, onMouseLeave: this.hide }\n : { onClick: this.toggle };\n\n return (\n <div class=\"hb-dropdown\" {...triggerEvents}>\n <div class=\"hb-dropdown__trigger\">\n <slot />\n </div>\n {this.isOpen && (\n <div class=\"hb-dropdown__menu\" style={{ zIndex: String(getNextZIndex()) }}>\n {this.items.map(item => (\n <div\n class={{\n 'hb-dropdown__item': true,\n 'hb-dropdown__item--disabled': item.disabled,\n 'hb-dropdown__item--divided': item.divided,\n 'hb-dropdown__item--danger': item.danger,\n }}\n onClick={() => this.handleSelect(item)}\n >\n {item.label}\n </div>\n ))}\n </div>\n )}\n </div>\n );\n }\n}\n"],"mappings":"iIAAA,MAAMA,EAAc,gwNACpB,MAAAC,EAAeD,E,MCoBFE,EAAQ,M,sFAIXC,MAAwB,GAGxBC,QAA6B,QAG7BC,SAAoB,MAEnBC,OAAkB,MAGlBC,UAEDC,aAAeC,EAA0B,CAC/CC,KAAM,KACNJ,OAAQ,IAAMK,KAAKL,OACnBM,QAAS,KAAQD,KAAKL,OAAS,KAAK,IAGtC,gBAAAO,GACEF,KAAKH,aAAeC,EAA0B,CAC5CC,KAAMC,KAAKG,GACXR,OAAQ,IAAMK,KAAKL,OACnBM,QAAS,KAAQD,KAAKL,OAAS,KAAK,IAEtC,GAAIK,KAAKP,UAAY,QAAS,CAC5BO,KAAKH,aAAaO,S,EAItB,oBAAAC,GACEL,KAAKH,aAAaS,Y,CAGZC,KAAO,KACb,GAAIP,KAAKN,SAAU,OACnBM,KAAKL,OAAS,IAAI,EAGZa,KAAO,KACbR,KAAKL,OAAS,KAAK,EAGbc,OAAS,KACf,GAAIT,KAAKN,SAAU,OACnBM,KAAKL,QAAUK,KAAKL,MAAM,EAGpBe,aAAgBC,IACtB,GAAIA,EAAKjB,SAAU,OACnBM,KAAKL,OAAS,MACdK,KAAKJ,UAAUgB,KAAKD,EAAKE,IAAI,EAG/B,MAAAC,GACE,MAAMC,EAAgBf,KAAKP,UAAY,QACnC,CAAEuB,aAAchB,KAAKO,KAAMU,aAAcjB,KAAKQ,MAC9C,CAAEU,QAASlB,KAAKS,QAEpB,OACEU,EAAA,OAAAN,IAAA,2CAAKO,MAAM,iBAAkBL,GAC3BI,EAAA,OAAAN,IAAA,2CAAKO,MAAM,wBACTD,EAAA,QAAAN,IAAA,8CAEDb,KAAKL,QACJwB,EAAA,OAAAN,IAAA,2CAAKO,MAAM,oBAAoBC,MAAO,CAAEC,OAAQC,OAAOC,OACpDxB,KAAKR,MAAMiC,KAAId,GACdQ,EAAA,OACEC,MAAO,CACL,oBAAqB,KACrB,8BAA+BT,EAAKjB,SACpC,6BAA8BiB,EAAKe,QACnC,4BAA6Bf,EAAKgB,QAEpCT,QAAS,IAAMlB,KAAKU,aAAaC,IAEhCA,EAAKiB,U","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import{r as s,g as e,h as a}from"./p-e42dfa95.js";const t={success:"✓",warning:"⚠",info:"ℹ",error:"✕",loading:"⏳"};const i=class{constructor(e){s(this,e)}get el(){return e(this)}message="";type="info";closable=false;duration=3e3;visible=true;componentDidLoad(){if(this.duration>0){setTimeout((()=>this.close()),this.duration)}}close=()=>{this.visible=false;setTimeout((()=>this.el.remove()),300)};render(){return a("div",{key:"51069b8f2a5079fcfd64bb24168907bbcfbfd869",class:{"hb-message":true,[`hb-message--${this.type}`]:true,"hb-message--visible":this.visible},role:"alert"},a("span",{key:"ad3123ae0c4eb9b8010c446bf0016d54af7b8a3a",class:"hb-message__icon"},t[this.type]),a("span",{key:"557ea0f92544ab58079a498b8f90dc774746c0a2",class:"hb-message__text"},this.message),this.closable&&a("span",{key:"e90e3380ba2b9a473d5f839983b959584948fd2a",class:"hb-message__close",onClick:this.close},"×"))}};export{i as hb_message};
2
- //# sourceMappingURL=p-953b9514.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["ICON_MAP","success","warning","info","error","loading","Message","message","type","closable","duration","visible","componentDidLoad","this","setTimeout","close","el","remove","render","h","key","class","role","onClick"],"sources":["src/components/Message/Message.tsx"],"sourcesContent":["import { Component, h, Prop, State, Element } from '@stencil/core';\n\nexport type MessageType = 'success' | 'warning' | 'info' | 'error' | 'loading';\n\nconst ICON_MAP: Record<MessageType, string> = {\n success: '✓',\n warning: '⚠',\n info: 'ℹ',\n error: '✕',\n loading: '⏳',\n};\n\n/**\n * Message 消息提示组件\n * 常用于主动操作后的反馈提示\n */\n@Component({\n tag: 'hb-message',\n shadow: true,\n})\nexport class Message {\n @Element() el: HTMLElement;\n\n /** 消息文字 */\n @Prop() message: string = '';\n\n /** 消息类型 */\n @Prop() type: MessageType = 'info';\n\n /** 是否显示关闭按钮 */\n @Prop() closable: boolean = false;\n\n /** 显示时间(毫秒),0 为不自动关闭 */\n @Prop() duration: number = 3000;\n\n @State() visible: boolean = true;\n\n componentDidLoad() {\n if (this.duration > 0) {\n setTimeout(() => this.close(), this.duration);\n }\n }\n\n private close = () => {\n this.visible = false;\n setTimeout(() => this.el.remove(), 300);\n };\n\n render() {\n return (\n <div\n class={{\n 'hb-message': true,\n [`hb-message--${this.type}`]: true,\n 'hb-message--visible': this.visible,\n }}\n role=\"alert\"\n >\n <span class=\"hb-message__icon\">{ICON_MAP[this.type]}</span>\n <span class=\"hb-message__text\">{this.message}</span>\n {this.closable && (\n <span class=\"hb-message__close\" onClick={this.close}>×</span>\n )}\n </div>\n );\n }\n}\n"],"mappings":"kDAIA,MAAMA,EAAwC,CAC5CC,QAAS,IACTC,QAAS,IACTC,KAAM,IACNC,MAAO,IACPC,QAAS,K,MAWEC,EAAO,M,iDAIVC,QAAkB,GAGlBC,KAAoB,OAGpBC,SAAoB,MAGpBC,SAAmB,IAElBC,QAAmB,KAE5B,gBAAAC,GACE,GAAIC,KAAKH,SAAW,EAAG,CACrBI,YAAW,IAAMD,KAAKE,SAASF,KAAKH,S,EAIhCK,MAAQ,KACdF,KAAKF,QAAU,MACfG,YAAW,IAAMD,KAAKG,GAAGC,UAAU,IAAI,EAGzC,MAAAC,GACE,OACEC,EAAA,OAAAC,IAAA,2CACEC,MAAO,CACL,aAAc,KACd,CAAC,eAAeR,KAAKL,QAAS,KAC9B,sBAAuBK,KAAKF,SAE9BW,KAAK,SAELH,EAAA,QAAAC,IAAA,2CAAMC,MAAM,oBAAoBrB,EAASa,KAAKL,OAC9CW,EAAA,QAAAC,IAAA,2CAAMC,MAAM,oBAAoBR,KAAKN,SACpCM,KAAKJ,UACJU,EAAA,QAAAC,IAAA,2CAAMC,MAAM,oBAAoBE,QAASV,KAAKE,OAAK,K","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import{r as e,c as i,g as t,h as o}from"./p-e42dfa95.js";import{g as a,l as n,u as r}from"./p-ecce2b5e.js";import{c as s}from"./p-cc0aeb50.js";const l='/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:host,:root{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,::backdrop,:after,:before{border:0 solid;box-sizing:border-box;margin:0;padding:0}::file-selector-button{appearance:button;background-color:#0000;border:0 solid;border-radius:0;box-sizing:border-box;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;margin:0;margin-inline-end:4px;opacity:1;padding:0}:host,html{-webkit-text-size-adjust:100%;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);line-height:1.5;tab-size:4;-webkit-tap-highlight-color:transparent}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-size:1em;font-variation-settings:var(--default-mono-font-variation-settings,normal)}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}button,input,optgroup,select,textarea{background-color:#0000;border-radius:0;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex;padding-block:0}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.container{width:100%}.hidden{display:none}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}} /*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer components;:host{display:contents}.hb-dialog-wrapper{inset:0;pointer-events:none;position:fixed}.hb-dialog-wrapper--hidden{display:none}.hb-dialog__overlay{background-color:var(--hb-color-bg-mask);inset:0;transition:opacity .3s}.hb-dialog,.hb-dialog__overlay{pointer-events:auto;position:fixed}.hb-dialog{background-color:var(--hb-dialog-bg);border-radius:var(--hb-dialog-radius);box-shadow:var(--hb-dialog-shadow);display:flex;flex-direction:column;left:50%;max-height:90vh;opacity:0;overflow:hidden;top:50%;transform:translate(-50%,-50%)scale(.9);transition:opacity .3s,transform .3s}.hb-dialog--visible{opacity:1;transform:translate(-50%,-50%)scale(1)}.hb-dialog--fullscreen{border-radius:0;height:100vh;left:0;max-height:100vh;top:0;transform:none;width:100%!important}.hb-dialog--fullscreen.hb-dialog--visible{transform:none}.hb-dialog__header{align-items:center;border-bottom:1px solid var(--hb-color-border-secondary);display:flex;justify-content:space-between;padding:var(--hb-spacing-md)var(--hb-spacing-lg)}.hb-dialog__title{color:var(--hb-color-text-primary);font-size:var(--hb-font-size-lg);font-weight:600}.hb-dialog__close{align-items:center;background:0 0;border:none;border-radius:var(--hb-border-radius-sm);color:var(--hb-color-text-secondary);cursor:pointer;display:inline-flex;font-size:18px;height:28px;justify-content:center;transition:all var(--hb-transition-duration);width:28px}.hb-dialog__close:hover{background-color:var(--hb-color-fill-tertiary);color:var(--hb-color-text-primary)}.hb-dialog__body{color:var(--hb-color-text);flex:1;font-size:var(--hb-font-size-base);overflow-y:auto;padding:var(--hb-spacing-lg)}.hb-dialog__footer{align-items:center;border-top:1px solid var(--hb-color-border-secondary);display:flex;gap:var(--hb-spacing-xs);justify-content:flex-end;padding:var(--hb-spacing-sm)var(--hb-spacing-lg)}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}';const d=l;const h=class{constructor(t){e(this,t);this.hbOpen=i(this,"hbOpen",7);this.hbClose=i(this,"hbClose",7);this.hbClosed=i(this,"hbClosed",7)}get el(){return t(this)}modelValue=false;title="";width="50%";fullscreen=false;modal=true;closeOnClickModal=true;closeOnPressEscape=true;showClose=true;destroyOnClose=false;hbOpen;hbClose;hbClosed;zIndex=0;panelRef;trap;handleVisibleChange(e){if(e){this.zIndex=a();if(this.modal)n();this.hbOpen.emit();document.addEventListener("keydown",this.handleKeyDown)}else{if(this.modal)r();document.removeEventListener("keydown",this.handleKeyDown)}}disconnectedCallback(){if(this.modelValue&&this.modal)r();document.removeEventListener("keydown",this.handleKeyDown);this.trap?.disconnect()}componentDidRender(){if(!this.panelRef)return;if(this.modelValue){if(!this.trap){this.trap=s({container:this.panelRef})}this.trap.connect()}else{this.trap?.disconnect()}}handleKeyDown=e=>{if(this.closeOnPressEscape&&e.key==="Escape"){this.close()}};close=()=>{this.modelValue=false;this.hbClose.emit();setTimeout((()=>this.hbClosed.emit()),300)};handleOverlayClick=()=>{if(this.closeOnClickModal)this.close()};render(){if(this.destroyOnClose&&!this.modelValue)return null;return o("div",{class:{"hb-dialog-wrapper":true,"hb-dialog-wrapper--hidden":!this.modelValue}},this.modal&&o("div",{class:"hb-dialog__overlay",style:{zIndex:String(this.zIndex)},onClick:this.handleOverlayClick}),o("div",{ref:e=>this.panelRef=e,class:{"hb-dialog":true,"hb-dialog--fullscreen":this.fullscreen,"hb-dialog--visible":this.modelValue},style:{zIndex:String(this.zIndex+1),width:this.fullscreen?"100%":this.width},role:"dialog","aria-modal":"true"},o("div",{class:"hb-dialog__header"},o("span",{class:"hb-dialog__title"},this.title),this.showClose&&o("button",{type:"button",class:"hb-dialog__close","aria-label":"关闭",onClick:this.close},"×")),o("div",{class:"hb-dialog__body"},o("slot",null)),o("div",{class:"hb-dialog__footer"},o("slot",{name:"footer"}))))}static get watchers(){return{modelValue:["handleVisibleChange"]}}};h.style=d;export{h as hb_dialog};
2
- //# sourceMappingURL=p-965d4d02.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["dialogCss","HbDialogStyle0","Dialog","modelValue","title","width","fullscreen","modal","closeOnClickModal","closeOnPressEscape","showClose","destroyOnClose","hbOpen","hbClose","hbClosed","zIndex","panelRef","trap","handleVisibleChange","newVal","this","getNextZIndex","lockScroll","emit","document","addEventListener","handleKeyDown","unlockScroll","removeEventListener","disconnectedCallback","disconnect","componentDidRender","createFocusTrap","container","connect","e","key","close","setTimeout","handleOverlayClick","render","h","class","style","String","onClick","ref","el","role","type","name"],"sources":["src/components/Dialog/dialog.css?tag=hb-dialog&encapsulation=shadow","src/components/Dialog/Dialog.tsx"],"sourcesContent":[":host {\n display: contents;\n}\n\n.hb-dialog-wrapper {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n pointer-events: none;\n}\n\n.hb-dialog-wrapper--hidden {\n display: none;\n}\n\n.hb-dialog__overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: var(--hb-color-bg-mask);\n transition: opacity 0.3s;\n pointer-events: auto;\n}\n\n.hb-dialog {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%) scale(0.9);\n background-color: var(--hb-dialog-bg);\n border-radius: var(--hb-dialog-radius);\n box-shadow: var(--hb-dialog-shadow);\n pointer-events: auto;\n opacity: 0;\n transition: opacity 0.3s, transform 0.3s;\n display: flex;\n flex-direction: column;\n max-height: 90vh;\n overflow: hidden;\n}\n\n.hb-dialog--visible {\n opacity: 1;\n transform: translate(-50%, -50%) scale(1);\n}\n\n.hb-dialog--fullscreen {\n width: 100% !important;\n height: 100vh;\n top: 0;\n left: 0;\n transform: none;\n border-radius: 0;\n max-height: 100vh;\n}\n.hb-dialog--fullscreen.hb-dialog--visible {\n transform: none;\n}\n\n.hb-dialog__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--hb-spacing-md) var(--hb-spacing-lg);\n border-bottom: 1px solid var(--hb-color-border-secondary);\n}\n\n.hb-dialog__title {\n font-size: var(--hb-font-size-lg);\n font-weight: 600;\n color: var(--hb-color-text-primary);\n}\n\n.hb-dialog__close {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: none;\n background: none;\n font-size: 18px;\n color: var(--hb-color-text-secondary);\n cursor: pointer;\n border-radius: var(--hb-border-radius-sm);\n transition: all var(--hb-transition-duration);\n}\n\n.hb-dialog__close:hover {\n background-color: var(--hb-color-fill-tertiary);\n color: var(--hb-color-text-primary);\n}\n\n.hb-dialog__body {\n flex: 1;\n padding: var(--hb-spacing-lg);\n overflow-y: auto;\n color: var(--hb-color-text);\n font-size: var(--hb-font-size-base);\n}\n\n.hb-dialog__footer {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: var(--hb-spacing-xs);\n padding: var(--hb-spacing-sm) var(--hb-spacing-lg);\n border-top: 1px solid var(--hb-color-border-secondary);\n}\n","import { Component, h, Prop, Event, EventEmitter, Watch, Element } from '@stencil/core';\nimport { lockScroll, unlockScroll, getNextZIndex } from '../../utils/popup-manager';\nimport { createFocusTrap, FocusTrap } from '../../utils/a11y';\n\n/**\n * Dialog 对话框组件\n * 在保留当前页面状态的情况下,告知用户并承载相关操作\n */\n@Component({\n tag: 'hb-dialog',\n styleUrl: 'dialog.css',\n shadow: true,\n})\nexport class Dialog {\n @Element() el: HTMLElement;\n\n /** 是否显示 */\n @Prop({ mutable: true }) modelValue: boolean = false;\n\n /** 标题 */\n @Prop() title: string = '';\n\n /** 宽度 */\n @Prop() width: string = '50%';\n\n /** 是否全屏 */\n @Prop() fullscreen: boolean = false;\n\n /** 是否显示遮罩 */\n @Prop() modal: boolean = true;\n\n /** 是否点击遮罩关闭 */\n @Prop() closeOnClickModal: boolean = true;\n\n /** 是否按 ESC 关闭 */\n @Prop() closeOnPressEscape: boolean = true;\n\n /** 是否显示关闭按钮 */\n @Prop() showClose: boolean = true;\n\n /** 关闭时销毁 */\n @Prop() destroyOnClose: boolean = false;\n\n /** 打开事件 */\n @Event() hbOpen: EventEmitter<void>;\n\n /** 关闭事件 */\n @Event() hbClose: EventEmitter<void>;\n\n /** 已关闭动画结束事件 */\n @Event() hbClosed: EventEmitter<void>;\n\n private zIndex: number = 0;\n private panelRef?: HTMLElement;\n private trap?: FocusTrap;\n\n @Watch('modelValue')\n handleVisibleChange(newVal: boolean) {\n if (newVal) {\n this.zIndex = getNextZIndex();\n if (this.modal) lockScroll();\n this.hbOpen.emit();\n document.addEventListener('keydown', this.handleKeyDown);\n } else {\n if (this.modal) unlockScroll();\n document.removeEventListener('keydown', this.handleKeyDown);\n }\n }\n\n disconnectedCallback() {\n if (this.modelValue && this.modal) unlockScroll();\n document.removeEventListener('keydown', this.handleKeyDown);\n this.trap?.disconnect();\n }\n\n componentDidRender() {\n if (!this.panelRef) return;\n if (this.modelValue) {\n if (!this.trap) {\n this.trap = createFocusTrap({ container: this.panelRef });\n }\n this.trap.connect();\n } else {\n this.trap?.disconnect();\n }\n }\n\n private handleKeyDown = (e: KeyboardEvent) => {\n if (this.closeOnPressEscape && e.key === 'Escape') {\n this.close();\n }\n };\n\n private close = () => {\n this.modelValue = false;\n this.hbClose.emit();\n setTimeout(() => this.hbClosed.emit(), 300);\n };\n\n private handleOverlayClick = () => {\n if (this.closeOnClickModal) this.close();\n };\n\n render() {\n if (this.destroyOnClose && !this.modelValue) return null;\n\n return (\n <div class={{ 'hb-dialog-wrapper': true, 'hb-dialog-wrapper--hidden': !this.modelValue }}>\n {this.modal && (\n <div\n class=\"hb-dialog__overlay\"\n style={{ zIndex: String(this.zIndex) }}\n onClick={this.handleOverlayClick}\n />\n )}\n <div\n ref={(el) => (this.panelRef = el as HTMLElement)}\n class={{\n 'hb-dialog': true,\n 'hb-dialog--fullscreen': this.fullscreen,\n 'hb-dialog--visible': this.modelValue,\n }}\n style={{\n zIndex: String(this.zIndex + 1),\n width: this.fullscreen ? '100%' : this.width,\n }}\n role=\"dialog\"\n aria-modal=\"true\"\n >\n <div class=\"hb-dialog__header\">\n <span class=\"hb-dialog__title\">{this.title}</span>\n {this.showClose && (\n <button type=\"button\" class=\"hb-dialog__close\" aria-label=\"关闭\" onClick={this.close}>×</button>\n )}\n </div>\n <div class=\"hb-dialog__body\">\n <slot />\n </div>\n <div class=\"hb-dialog__footer\">\n <slot name=\"footer\" />\n </div>\n </div>\n </div>\n );\n }\n}\n"],"mappings":"+IAAA,MAAMA,EAAY,krPAClB,MAAAC,EAAeD,E,MCYFE,EAAM,M,oJAIQC,WAAsB,MAGvCC,MAAgB,GAGhBC,MAAgB,MAGhBC,WAAsB,MAGtBC,MAAiB,KAGjBC,kBAA6B,KAG7BC,mBAA8B,KAG9BC,UAAqB,KAGrBC,eAA0B,MAGzBC,OAGAC,QAGAC,SAEDC,OAAiB,EACjBC,SACAC,KAGR,mBAAAC,CAAoBC,GAClB,GAAIA,EAAQ,CACVC,KAAKL,OAASM,IACd,GAAID,KAAKb,MAAOe,IAChBF,KAAKR,OAAOW,OACZC,SAASC,iBAAiB,UAAWL,KAAKM,c,KACrC,CACL,GAAIN,KAAKb,MAAOoB,IAChBH,SAASI,oBAAoB,UAAWR,KAAKM,c,EAIjD,oBAAAG,GACE,GAAIT,KAAKjB,YAAciB,KAAKb,MAAOoB,IACnCH,SAASI,oBAAoB,UAAWR,KAAKM,eAC7CN,KAAKH,MAAMa,Y,CAGb,kBAAAC,GACE,IAAKX,KAAKJ,SAAU,OACpB,GAAII,KAAKjB,WAAY,CACnB,IAAKiB,KAAKH,KAAM,CACdG,KAAKH,KAAOe,EAAgB,CAAEC,UAAWb,KAAKJ,U,CAEhDI,KAAKH,KAAKiB,S,KACL,CACLd,KAAKH,MAAMa,Y,EAIPJ,cAAiBS,IACvB,GAAIf,KAAKX,oBAAsB0B,EAAEC,MAAQ,SAAU,CACjDhB,KAAKiB,O,GAIDA,MAAQ,KACdjB,KAAKjB,WAAa,MAClBiB,KAAKP,QAAQU,OACbe,YAAW,IAAMlB,KAAKN,SAASS,QAAQ,IAAI,EAGrCgB,mBAAqB,KAC3B,GAAInB,KAAKZ,kBAAmBY,KAAKiB,OAAO,EAG1C,MAAAG,GACE,GAAIpB,KAAKT,iBAAmBS,KAAKjB,WAAY,OAAO,KAEpD,OACEsC,EAAA,OAAKC,MAAO,CAAE,oBAAqB,KAAM,6BAA8BtB,KAAKjB,aACzEiB,KAAKb,OACJkC,EAAA,OACEC,MAAM,qBACNC,MAAO,CAAE5B,OAAQ6B,OAAOxB,KAAKL,SAC7B8B,QAASzB,KAAKmB,qBAGlBE,EAAA,OACEK,IAAMC,GAAQ3B,KAAKJ,SAAW+B,EAC9BL,MAAO,CACL,YAAa,KACb,wBAAyBtB,KAAKd,WAC9B,qBAAsBc,KAAKjB,YAE7BwC,MAAO,CACL5B,OAAQ6B,OAAOxB,KAAKL,OAAS,GAC7BV,MAAOe,KAAKd,WAAa,OAASc,KAAKf,OAEzC2C,KAAK,SAAQ,aACF,QAEXP,EAAA,OAAKC,MAAM,qBACTD,EAAA,QAAMC,MAAM,oBAAoBtB,KAAKhB,OACpCgB,KAAKV,WACJ+B,EAAA,UAAQQ,KAAK,SAASP,MAAM,mBAAkB,aAAY,KAAKG,QAASzB,KAAKiB,OAAK,MAGtFI,EAAA,OAAKC,MAAM,mBACTD,EAAA,cAEFA,EAAA,OAAKC,MAAM,qBACTD,EAAA,QAAMS,KAAK,a","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import{r as t,g as e,h as i}from"./p-e42dfa95.js";import{c as o,g as a}from"./p-ecce2b5e.js";const r='/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:host,:root{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,::backdrop,:after,:before{border:0 solid;box-sizing:border-box;margin:0;padding:0}::file-selector-button{appearance:button;background-color:#0000;border:0 solid;border-radius:0;box-sizing:border-box;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;margin:0;margin-inline-end:4px;opacity:1;padding:0}:host,html{-webkit-text-size-adjust:100%;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);line-height:1.5;tab-size:4;-webkit-tap-highlight-color:transparent}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-size:1em;font-variation-settings:var(--default-mono-font-variation-settings,normal)}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}button,input,optgroup,select,textarea{background-color:#0000;border-radius:0;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex;padding-block:0}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}} /*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer components;.hb-tooltip__trigger,:host{display:inline-block}.hb-tooltip__popup{background-color:var(--hb-p-gray-800);border-radius:var(--hb-border-radius-sm);box-shadow:var(--hb-box-shadow);color:#fff;font-size:var(--hb-font-size-sm);pointer-events:auto;word-wrap:break-word;animation:hb-tooltip-fade-in .15s ease-out;line-height:1.4;max-width:300px;padding:6px 12px;position:fixed}.hb-tooltip__arrow{background-color:var(--hb-p-gray-800);height:8px;position:absolute;transform:rotate(45deg);width:8px}.hb-tooltip__content{position:relative;z-index:1}@keyframes hb-tooltip-fade-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}';const n=r;const s=class{constructor(e){t(this,e)}get el(){return e(this)}content="";placement="top";trigger="hover";disabled=false;showArrow=true;visible=false;popupStyle={};triggerRef;popupRef;hideTimer;show=()=>{if(this.disabled)return;clearTimeout(this.hideTimer);this.visible=true;requestAnimationFrame((()=>this.updatePosition()))};hide=()=>{this.hideTimer=setTimeout((()=>{this.visible=false}),100)};toggle=()=>{if(this.disabled)return;if(this.visible){this.hide()}else{this.show()}};updatePosition(){if(!this.triggerRef||!this.popupRef)return;const t=this.triggerRef.getBoundingClientRect();const{width:e,height:i}=this.popupRef.getBoundingClientRect();const r=o(t,e,i,this.placement,8);this.popupStyle={top:`${r.top}px`,left:`${r.left}px`,zIndex:String(a())}}render(){const t=this.trigger==="hover"?{onMouseEnter:this.show,onMouseLeave:this.hide}:{onClick:this.toggle};return i("div",{key:"e98d79b104fc92f63d77cbd87c490d84e0646c64",class:"hb-tooltip",...t},i("div",{key:"74088a95833070259d447d57e03a894f20d0e044",ref:t=>{this.triggerRef=t},class:"hb-tooltip__trigger"},i("slot",{key:"ce84437a1fedd763630764a5627763a4601d195e"})),this.visible&&i("div",{key:"1b5b74c439a5925c3cf10fc552369bd83354fcf4",ref:t=>{this.popupRef=t},class:"hb-tooltip__popup",style:this.popupStyle,onMouseEnter:()=>this.trigger==="hover"&&this.show(),onMouseLeave:()=>this.trigger==="hover"&&this.hide()},this.showArrow&&i("div",{key:"73b08948dcc030a487a0d0f11afbb2fb4bcbdc51",class:"hb-tooltip__arrow"}),i("div",{key:"564f396c5eb5e3cb5bffe7dc8ec956c54bfc484d",class:"hb-tooltip__content"},this.content)))}};s.style=n;export{s as hb_tooltip};
2
- //# sourceMappingURL=p-ad6b0c6e.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["tooltipCss","HbTooltipStyle0","Tooltip","content","placement","trigger","disabled","showArrow","visible","popupStyle","triggerRef","popupRef","hideTimer","show","this","clearTimeout","requestAnimationFrame","updatePosition","hide","setTimeout","toggle","triggerRect","getBoundingClientRect","width","height","pos","computePosition","top","left","zIndex","String","getNextZIndex","render","triggerEvents","onMouseEnter","onMouseLeave","onClick","h","key","class","ref","el","style"],"sources":["src/components/Tooltip/tooltip.css?tag=hb-tooltip&encapsulation=shadow","src/components/Tooltip/Tooltip.tsx"],"sourcesContent":[":host {\n display: inline-block;\n}\n\n.hb-tooltip__trigger {\n display: inline-block;\n}\n\n.hb-tooltip__popup {\n position: fixed;\n padding: 6px 12px;\n border-radius: var(--hb-border-radius-sm);\n background-color: var(--hb-p-gray-800);\n color: #fff;\n font-size: var(--hb-font-size-sm);\n line-height: 1.4;\n pointer-events: auto;\n box-shadow: var(--hb-box-shadow);\n animation: hb-tooltip-fade-in 0.15s ease-out;\n max-width: 300px;\n word-wrap: break-word;\n}\n\n.hb-tooltip__arrow {\n position: absolute;\n width: 8px;\n height: 8px;\n background-color: var(--hb-p-gray-800);\n transform: rotate(45deg);\n}\n\n.hb-tooltip__content {\n position: relative;\n z-index: 1;\n}\n\n@keyframes hb-tooltip-fade-in {\n from { opacity: 0; transform: scale(0.95); }\n to { opacity: 1; transform: scale(1); }\n}\n","import { Component, h, Prop, State, Element } from '@stencil/core';\nimport { computePosition, getNextZIndex, Placement } from '../../utils/popup-manager';\n\n/**\n * Tooltip 文字提示组件\n * 鼠标悬停或点击时显示提示文字\n */\n@Component({\n tag: 'hb-tooltip',\n styleUrl: 'tooltip.css',\n shadow: true,\n})\nexport class Tooltip {\n @Element() el: HTMLElement;\n\n /** 提示文字 */\n @Prop() content: string = '';\n\n /** 弹出位置 */\n @Prop() placement: Placement = 'top';\n\n /** 触发方式 */\n @Prop() trigger: 'hover' | 'click' = 'hover';\n\n /** 是否禁用 */\n @Prop() disabled: boolean = false;\n\n /** 是否显示箭头 */\n @Prop() showArrow: boolean = true;\n\n @State() visible: boolean = false;\n @State() popupStyle: Record<string, string> = {};\n\n private triggerRef?: HTMLElement;\n private popupRef?: HTMLDivElement;\n private hideTimer?: ReturnType<typeof setTimeout>;\n\n private show = () => {\n if (this.disabled) return;\n clearTimeout(this.hideTimer);\n this.visible = true;\n requestAnimationFrame(() => this.updatePosition());\n };\n\n private hide = () => {\n this.hideTimer = setTimeout(() => { this.visible = false; }, 100);\n };\n\n private toggle = () => {\n if (this.disabled) return;\n if (this.visible) {\n this.hide();\n } else {\n this.show();\n }\n };\n\n private updatePosition() {\n if (!this.triggerRef || !this.popupRef) return;\n const triggerRect = this.triggerRef.getBoundingClientRect();\n const { width, height } = this.popupRef.getBoundingClientRect();\n const pos = computePosition(triggerRect, width, height, this.placement, 8);\n this.popupStyle = {\n top: `${pos.top}px`,\n left: `${pos.left}px`,\n zIndex: String(getNextZIndex()),\n };\n }\n\n render() {\n const triggerEvents = this.trigger === 'hover'\n ? { onMouseEnter: this.show, onMouseLeave: this.hide }\n : { onClick: this.toggle };\n\n return (\n <div class=\"hb-tooltip\" {...triggerEvents}>\n <div\n ref={(el: any) => { this.triggerRef = el; }}\n class=\"hb-tooltip__trigger\"\n >\n <slot />\n </div>\n {this.visible && (\n <div\n ref={(el: any) => { this.popupRef = el; }}\n class=\"hb-tooltip__popup\"\n style={this.popupStyle}\n onMouseEnter={() => this.trigger === 'hover' && this.show()}\n onMouseLeave={() => this.trigger === 'hover' && this.hide()}\n >\n {this.showArrow && <div class=\"hb-tooltip__arrow\" />}\n <div class=\"hb-tooltip__content\">{this.content}</div>\n </div>\n )}\n </div>\n );\n }\n}\n"],"mappings":"6FAAA,MAAMA,EAAa,ktMACnB,MAAAC,EAAeD,E,MCWFE,EAAO,M,iDAIVC,QAAkB,GAGlBC,UAAuB,MAGvBC,QAA6B,QAG7BC,SAAoB,MAGpBC,UAAqB,KAEpBC,QAAmB,MACnBC,WAAqC,GAEtCC,WACAC,SACAC,UAEAC,KAAO,KACb,GAAIC,KAAKR,SAAU,OACnBS,aAAaD,KAAKF,WAClBE,KAAKN,QAAU,KACfQ,uBAAsB,IAAMF,KAAKG,kBAAiB,EAG5CC,KAAO,KACbJ,KAAKF,UAAYO,YAAW,KAAQL,KAAKN,QAAU,KAAK,GAAK,IAAI,EAG3DY,OAAS,KACf,GAAIN,KAAKR,SAAU,OACnB,GAAIQ,KAAKN,QAAS,CAChBM,KAAKI,M,KACA,CACLJ,KAAKD,M,GAID,cAAAI,GACN,IAAKH,KAAKJ,aAAeI,KAAKH,SAAU,OACxC,MAAMU,EAAcP,KAAKJ,WAAWY,wBACpC,MAAMC,MAAEA,EAAKC,OAAEA,GAAWV,KAAKH,SAASW,wBACxC,MAAMG,EAAMC,EAAgBL,EAAaE,EAAOC,EAAQV,KAAKV,UAAW,GACxEU,KAAKL,WAAa,CAChBkB,IAAK,GAAGF,EAAIE,QACZC,KAAM,GAAGH,EAAIG,SACbC,OAAQC,OAAOC,K,CAInB,MAAAC,GACE,MAAMC,EAAgBnB,KAAKT,UAAY,QACnC,CAAE6B,aAAcpB,KAAKD,KAAMsB,aAAcrB,KAAKI,MAC9C,CAAEkB,QAAStB,KAAKM,QAEpB,OACEiB,EAAA,OAAAC,IAAA,2CAAKC,MAAM,gBAAiBN,GAC1BI,EAAA,OAAAC,IAAA,2CACEE,IAAMC,IAAc3B,KAAKJ,WAAa+B,CAAE,EACxCF,MAAM,uBAENF,EAAA,QAAAC,IAAA,8CAEDxB,KAAKN,SACJ6B,EAAA,OAAAC,IAAA,2CACEE,IAAMC,IAAc3B,KAAKH,SAAW8B,CAAE,EACtCF,MAAM,oBACNG,MAAO5B,KAAKL,WACZyB,aAAc,IAAMpB,KAAKT,UAAY,SAAWS,KAAKD,OACrDsB,aAAc,IAAMrB,KAAKT,UAAY,SAAWS,KAAKI,QAEpDJ,KAAKP,WAAa8B,EAAA,OAAAC,IAAA,2CAAKC,MAAM,sBAC9BF,EAAA,OAAAC,IAAA,2CAAKC,MAAM,uBAAuBzB,KAAKX,U","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import{r as e,c as i,g as t,h as o}from"./p-e42dfa95.js";const r='/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:host,:root{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,::backdrop,:after,:before{border:0 solid;box-sizing:border-box;margin:0;padding:0}::file-selector-button{appearance:button;background-color:#0000;border:0 solid;border-radius:0;box-sizing:border-box;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;margin:0;margin-inline-end:4px;opacity:1;padding:0}:host,html{-webkit-text-size-adjust:100%;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);line-height:1.5;tab-size:4;-webkit-tap-highlight-color:transparent}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-size:1em;font-variation-settings:var(--default-mono-font-variation-settings,normal)}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}button,input,optgroup,select,textarea{background-color:#0000;border-radius:0;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex;padding-block:0}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}} /*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer components;:host{display:inline-block;position:relative}.hb-color-picker{display:inline-block}.hb-color-picker__trigger{align-items:center;border:1px solid var(--hb-border-color,#dcdfe6);border-radius:4px;cursor:pointer;display:inline-flex;padding:4px;transition:border-color .2s}.hb-color-picker__trigger:hover:not(.hb-color-picker--disabled){border-color:var(--hb-color-primary)}.hb-color-picker__color{border:1px solid var(--hb-border-color-lighter,#e4e7ed);border-radius:2px;height:20px;width:40px}.hb-color-picker__text{color:var(--hb-color-text-regular,#606266);font-size:14px;margin-left:8px}.hb-color-picker__dropdown{background-color:var(--hb-color-white,#fff);border:1px solid var(--hb-border-color,#dcdfe6);border-radius:4px;box-shadow:0 2px 12px #0000001a;left:0;margin-top:4px;min-width:300px;padding:12px;position:absolute;top:100%;z-index:1000}.hb-color-picker__saturation{border-radius:4px;cursor:crosshair;height:180px;overflow:hidden;position:relative;-webkit-user-select:none;user-select:none;width:100%}.hb-color-picker__saturation-bg{inset:0;position:absolute}.hb-color-picker__saturation-white{background:linear-gradient(90deg,#fff,#fff0);inset:0;position:absolute}.hb-color-picker__saturation-black{background:linear-gradient(#0000,#000);inset:0;position:absolute}.hb-color-picker__saturation-pointer{border:2px solid var(--hb-color-white,#fff);border-radius:50%;box-shadow:0 0 2px #0000004d;height:12px;position:absolute;transform:translate(-50%,-50%);width:12px}.hb-color-picker__controls{margin-top:12px}.hb-color-picker__alpha,.hb-color-picker__hue{border-radius:2px;cursor:pointer;height:12px;margin-bottom:8px;position:relative}.hb-color-picker__hue{position:relative}.hb-color-picker__hue-bar{background:linear-gradient(90deg,red,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red);border-radius:2px;height:100%}.hb-color-picker__hue-pointer{background:#fff;border:1px solid #0000004d;border-radius:2px;box-shadow:0 0 2px #0000004d;height:100%;pointer-events:none;position:absolute;top:0;transform:translate(-50%);width:4px}.hb-color-picker__alpha-bar{background-image:linear-gradient(45deg,#ccc 25%,#0000 0),linear-gradient(-45deg,#ccc 25%,#0000 0),linear-gradient(45deg,#0000 75%,#ccc 0),linear-gradient(-45deg,#0000 75%,#ccc 0);background-position:0 0,0 4px,4px -4px,-4px 0;background-size:8px 8px;border-radius:2px;height:100%}.hb-color-picker__input{margin-top:12px}.hb-color-picker__input-hex{border:1px solid var(--hb-border-color,#dcdfe6);border-radius:4px;font-size:13px;margin-bottom:8px;padding:6px 8px;width:100%}.hb-color-picker__input-rgb{display:flex;gap:8px}.hb-color-picker__input-rgb input{border:1px solid var(--hb-border-color,#dcdfe6);border-radius:4px;flex:1;font-size:13px;padding:6px 8px}.hb-color-picker__predefine{border-top:1px solid var(--hb-border-color-lighter,#e4e7ed);display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;padding-top:12px}.hb-color-picker__predefine-color{border:2px solid #0000;border-radius:4px;cursor:pointer;height:24px;transition:transform .2s;width:24px}.hb-color-picker__predefine-color:hover{transform:scale(1.1)}.hb-color-picker__predefine-color--selected{border-color:var(--hb-color-primary);transform:scale(1.1)}.hb-color-picker--disabled{cursor:not-allowed;opacity:.6}.hb-color-picker--disabled .hb-color-picker__trigger{cursor:not-allowed}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}';const a=r;const n=class{constructor(t){e(this,t);this.hbChange=i(this,"hbChange",7);this.hbActiveChange=i(this,"hbActiveChange",7)}get el(){return t(this)}modelValue;disabled=false;colorFormat="hex";showAlpha=false;predefine;isOpen=false;currentColor="#409EFF";hue=210;saturation=100;value=100;hbChange;hbActiveChange;componentDidLoad(){if(this.modelValue){this.currentColor=this.modelValue;this.updateHSVFromColor(this.modelValue)}else{this.updateHSVFromColor(this.currentColor)}document.addEventListener("click",this.handleDocumentClick)}disconnectedCallback(){document.removeEventListener("click",this.handleDocumentClick)}handleDocumentClick=e=>{if(!this.isOpen)return;const i=e.target;if(!this.el.contains(i)){this.isOpen=false}};handleValueChange(){if(this.modelValue){this.currentColor=this.modelValue;this.updateHSVFromColor(this.modelValue)}}handleTriggerClick=()=>{if(this.disabled)return;this.isOpen=!this.isOpen};handleColorSelect=e=>{this.currentColor=e;this.modelValue=e;this.hbChange.emit(e);this.hbActiveChange.emit(e)};handleSaturationClick=e=>{const i=e.currentTarget;const t=i.getBoundingClientRect();const o=e.clientX-t.left;const r=e.clientY-t.top;this.saturation=Math.max(0,Math.min(100,o/t.width*100));this.value=Math.max(0,Math.min(100,100-r/t.height*100));const a=this.hsvToHex(this.hue,this.saturation,this.value);this.handleColorSelect(a)};handleHueClick=e=>{const i=e.currentTarget;const t=i.getBoundingClientRect();const o=e.clientX-t.left;this.hue=Math.max(0,Math.min(360,o/t.width*360));const r=this.hsvToHex(this.hue,this.saturation,this.value);this.handleColorSelect(r)};handleInputChange=e=>{const i=e.target;const t=i.value;if(/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/.test(t)){this.handleColorSelect(t)}};handleRgbInputChange=(e,i)=>{const t=this.hexToRgb(this.currentColor);if(t){const o=parseInt(i,10);if(!isNaN(o)&&o>=0&&o<=255){if(e===0)t.r=o;else if(e===1)t.g=o;else if(e===2)t.b=o;const i=`#${[t.r,t.g,t.b].map((e=>{const i=e.toString(16);return i.length===1?"0"+i:i})).join("")}`;this.handleColorSelect(i)}}};hexToRgb(e){const i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null}rgbToHsv(e,i,t){e=e/255;i=i/255;t=t/255;const o=Math.max(e,i,t);const r=Math.min(e,i,t);const a=o-r;let n=0;if(a!==0){if(o===e){n=(i-t)/a%6}else if(o===i){n=(t-e)/a+2}else{n=(e-i)/a+4}}n=Math.round(n*60);if(n<0)n+=360;const s=o===0?0:Math.round(a/o*100);const l=Math.round(o*100);return{h:n,s,v:l}}hsvToRgb(e,i,t){i=i/100;t=t/100;const o=t*i;const r=o*(1-Math.abs(e/60%2-1));const a=t-o;let n=0,s=0,l=0;if(e>=0&&e<60){n=o;s=r;l=0}else if(e>=60&&e<120){n=r;s=o;l=0}else if(e>=120&&e<180){n=0;s=o;l=r}else if(e>=180&&e<240){n=0;s=r;l=o}else if(e>=240&&e<300){n=r;s=0;l=o}else if(e>=300&&e<360){n=o;s=0;l=r}return{r:Math.round((n+a)*255),g:Math.round((s+a)*255),b:Math.round((l+a)*255)}}hsvToHex(e,i,t){const o=this.hsvToRgb(e,i,t);return`#${[o.r,o.g,o.b].map((e=>{const i=e.toString(16);return i.length===1?"0"+i:i})).join("")}`}updateHSVFromColor(e){const i=this.hexToRgb(e);if(i){const e=this.rgbToHsv(i.r,i.g,i.b);this.hue=e.h;this.saturation=e.s;this.value=e.v}}render(){const e=this.hexToRgb(this.currentColor);const i=this.predefine||["#ff4500","#ff8c00","#ffd700","#90ee90","#00ced1","#1e90ff","#c71585","#000000","#ffffff","#808080"];const t=this.hsvToHex(this.hue,100,100);return o("div",{key:"3a91756cec6b901dbd98049c6dea3f13cb0125b9",class:{"hb-color-picker":true,"hb-color-picker--open":this.isOpen,"hb-color-picker--disabled":this.disabled}},o("div",{key:"60fcf367b48d726dec4626cade99ae39c10c83f7",class:"hb-color-picker__trigger",onClick:this.handleTriggerClick},o("div",{key:"9b9f4c7f1444d76f1d6df1c480949572affb4a71",class:"hb-color-picker__color",style:{backgroundColor:this.currentColor}}),o("span",{key:"ddc5c6d1d875012ad46638324b2e9a80eb50d989",class:"hb-color-picker__text"},this.currentColor)),this.isOpen&&o("div",{key:"4f96c8be969d8b37f0acba6f9ec55d0b0223485d",class:"hb-color-picker__dropdown"},o("div",{key:"6e754aa587fbe8161315ab3fedfd71ccdf7b9a7e",class:"hb-color-picker__panel"},o("div",{key:"477dbbe265a0538e3f65f0d3c03dc653cf063982",class:"hb-color-picker__saturation",onClick:this.handleSaturationClick},o("div",{key:"eff441602d0795cfb6a05b9470dcec762c47e2a2",class:"hb-color-picker__saturation-bg",style:{backgroundColor:t}}),o("div",{key:"3f3e8c420dbea347c6859f046d0398e1141de926",class:"hb-color-picker__saturation-white"}),o("div",{key:"e501004e2e2d9f585b48bcc4a90def07c39964c2",class:"hb-color-picker__saturation-black"}),o("div",{key:"b00cda534203c12195977d0933bd36b1baafab34",class:"hb-color-picker__saturation-pointer",style:{left:`${this.saturation}%`,top:`${100-this.value}%`}})),o("div",{key:"ee86c70a807d70aa292a0208a3a172b35c791325",class:"hb-color-picker__controls"},o("div",{key:"d4dda211347b9c3e4ef1dc5e28f5a6a44359a162",class:"hb-color-picker__hue",onClick:this.handleHueClick},o("div",{key:"dbab23a4059b6dd2aeada35d7434c79a61860867",class:"hb-color-picker__hue-bar"}),o("div",{key:"b612775578712beac58a487a23a25c812fb28077",class:"hb-color-picker__hue-pointer",style:{left:`${this.hue/360*100}%`}})),this.showAlpha&&o("div",{key:"1aee2cd74b0cdf27d0afcbd09384ae707a5d7485",class:"hb-color-picker__alpha"},o("div",{key:"eba46d362053e05c89a93f34dfb453a8ed2253c7",class:"hb-color-picker__alpha-bar",style:{backgroundColor:this.currentColor}}))),o("div",{key:"60f66da4a79a2eb0ce1c389d65fd30362bbb7c61",class:"hb-color-picker__input"},o("input",{key:"1411561687211e4ea149421bfaf624c7cdc45ead",type:"text",class:"hb-color-picker__input-hex",value:this.currentColor,onInput:this.handleInputChange}),e&&o("div",{key:"c24d2df8b8d04fee9eeba4d8de660d14857cdf77",class:"hb-color-picker__input-rgb"},o("input",{key:"e4dd71d86bda84168f7342b3cf0a7513f608f0e1",type:"number",min:"0",max:"255",value:e.r,onInput:e=>this.handleRgbInputChange(0,e.target.value)}),o("input",{key:"198c25b1f2fe03bae65b2a6120b226684623a5a1",type:"number",min:"0",max:"255",value:e.g,onInput:e=>this.handleRgbInputChange(1,e.target.value)}),o("input",{key:"fe0c9273a4d283f3f4bde1b8c258e0adc370b9a6",type:"number",min:"0",max:"255",value:e.b,onInput:e=>this.handleRgbInputChange(2,e.target.value)}))),this.predefine&&this.predefine.length>0&&o("div",{key:"52b711be9fd4794a42fb0c4747a53df529895932",class:"hb-color-picker__predefine"},i.map((e=>o("div",{class:{"hb-color-picker__predefine-color":true,"hb-color-picker__predefine-color--selected":e===this.currentColor},style:{backgroundColor:e},onClick:()=>this.handleColorSelect(e)})))))))}static get watchers(){return{modelValue:["handleValueChange"]}}};n.style=a;export{n as hb_color_picker};
2
- //# sourceMappingURL=p-c1a059d9.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["colorPickerCss","HbColorPickerStyle0","ColorPicker","modelValue","disabled","colorFormat","showAlpha","predefine","isOpen","currentColor","hue","saturation","value","hbChange","hbActiveChange","componentDidLoad","this","updateHSVFromColor","document","addEventListener","handleDocumentClick","disconnectedCallback","removeEventListener","e","target","el","contains","handleValueChange","handleTriggerClick","handleColorSelect","color","emit","handleSaturationClick","currentTarget","rect","getBoundingClientRect","x","clientX","left","y","clientY","top","Math","max","min","width","height","hex","hsvToHex","handleHueClick","handleInputChange","test","handleRgbInputChange","index","rgb","hexToRgb","num","parseInt","isNaN","r","g","b","map","toString","length","join","result","exec","rgbToHsv","diff","h","round","s","v","hsvToRgb","c","abs","m","hsv","render","predefinedColors","hueColor","key","class","onClick","style","backgroundColor","type","onInput"],"sources":["src/components/ColorPicker/color-picker.css?tag=hb-color-picker&encapsulation=shadow","src/components/ColorPicker/ColorPicker.tsx"],"sourcesContent":[":host {\n display: inline-block;\n position: relative;\n}\n\n.hb-color-picker {\n display: inline-block;\n}\n\n.hb-color-picker__trigger {\n display: inline-flex;\n align-items: center;\n padding: 4px;\n border: 1px solid var(--hb-border-color, #dcdfe6);\n border-radius: 4px;\n cursor: pointer;\n transition: border-color 0.2s;\n}\n\n.hb-color-picker__trigger:hover:not(.hb-color-picker--disabled) {\n border-color: var(--hb-color-primary);\n}\n\n.hb-color-picker__color {\n width: 40px;\n height: 20px;\n border-radius: 2px;\n border: 1px solid var(--hb-border-color-lighter, #e4e7ed);\n}\n\n.hb-color-picker__text {\n margin-left: 8px;\n font-size: 14px;\n color: var(--hb-color-text-regular, #606266);\n}\n\n.hb-color-picker__dropdown {\n position: absolute;\n top: 100%;\n left: 0;\n margin-top: 4px;\n background-color: var(--hb-color-white, #ffffff);\n border: 1px solid var(--hb-border-color, #dcdfe6);\n border-radius: 4px;\n box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);\n z-index: 1000;\n padding: 12px;\n min-width: 300px;\n}\n\n.hb-color-picker__saturation {\n position: relative;\n width: 100%;\n height: 180px;\n border-radius: 4px;\n overflow: hidden;\n cursor: crosshair;\n user-select: none;\n}\n\n.hb-color-picker__saturation-bg {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n /* 背景色会根据当前色相动态设置 */\n}\n\n.hb-color-picker__saturation-white {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: linear-gradient(to right, #fff, rgba(255, 255, 255, 0));\n}\n\n.hb-color-picker__saturation-black {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: linear-gradient(to top, #000, rgba(0, 0, 0, 0));\n}\n\n.hb-color-picker__saturation-pointer {\n position: absolute;\n width: 12px;\n height: 12px;\n border: 2px solid var(--hb-color-white, #ffffff);\n border-radius: 50%;\n transform: translate(-50%, -50%);\n box-shadow: 0 0 2px rgba(0, 0, 0, 0.3);\n}\n\n.hb-color-picker__controls {\n margin-top: 12px;\n}\n\n.hb-color-picker__hue,\n.hb-color-picker__alpha {\n position: relative;\n height: 12px;\n border-radius: 2px;\n margin-bottom: 8px;\n cursor: pointer;\n}\n\n.hb-color-picker__hue {\n position: relative;\n}\n\n.hb-color-picker__hue-bar {\n height: 100%;\n background: linear-gradient(to right, #f00 0%, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\n border-radius: 2px;\n}\n\n.hb-color-picker__hue-pointer {\n position: absolute;\n top: 0;\n width: 4px;\n height: 100%;\n background: #fff;\n border: 1px solid rgba(0, 0, 0, 0.3);\n border-radius: 2px;\n transform: translateX(-50%);\n box-shadow: 0 0 2px rgba(0, 0, 0, 0.3);\n pointer-events: none;\n}\n\n.hb-color-picker__alpha-bar {\n height: 100%;\n background-image: linear-gradient(45deg, #ccc 25%, transparent 25%), linear-gradient(-45deg, #ccc 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #ccc 75%), linear-gradient(-45deg, transparent 75%, #ccc 75%);\n background-size: 8px 8px;\n background-position: 0 0, 0 4px, 4px -4px, -4px 0px;\n border-radius: 2px;\n}\n\n.hb-color-picker__input {\n margin-top: 12px;\n}\n\n.hb-color-picker__input-hex {\n width: 100%;\n padding: 6px 8px;\n border: 1px solid var(--hb-border-color, #dcdfe6);\n border-radius: 4px;\n font-size: 13px;\n margin-bottom: 8px;\n}\n\n.hb-color-picker__input-rgb {\n display: flex;\n gap: 8px;\n}\n\n.hb-color-picker__input-rgb input {\n flex: 1;\n padding: 6px 8px;\n border: 1px solid var(--hb-border-color, #dcdfe6);\n border-radius: 4px;\n font-size: 13px;\n}\n\n.hb-color-picker__predefine {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px solid var(--hb-border-color-lighter, #e4e7ed);\n}\n\n.hb-color-picker__predefine-color {\n width: 24px;\n height: 24px;\n border-radius: 4px;\n cursor: pointer;\n border: 2px solid transparent;\n transition: transform 0.2s;\n}\n\n.hb-color-picker__predefine-color:hover {\n transform: scale(1.1);\n}\n\n.hb-color-picker__predefine-color--selected {\n border-color: var(--hb-color-primary);\n transform: scale(1.1);\n}\n\n.hb-color-picker--disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.hb-color-picker--disabled .hb-color-picker__trigger {\n cursor: not-allowed;\n}\n\n","import { Component, h, Prop, Event, EventEmitter, State, Element, Watch } from '@stencil/core';\n\n/**\n * ColorPicker 颜色选择器组件\n * 用于颜色选择,支持多种格式\n */\n@Component({\n tag: 'hb-color-picker',\n styleUrl: 'color-picker.css',\n shadow: true,\n})\nexport class ColorPicker {\n @Element() el: HTMLElement;\n\n /**\n * 绑定值\n */\n @Prop({ mutable: true }) modelValue?: string;\n\n /**\n * 是否禁用\n * @default false\n */\n @Prop() disabled: boolean = false;\n\n /**\n * 颜色格式\n */\n @Prop() colorFormat: 'hsl' | 'hsv' | 'hex' | 'rgb' = 'hex';\n\n /**\n * 是否显示透明度\n * @default false\n */\n @Prop() showAlpha: boolean = false;\n\n /**\n * 预定义颜色\n */\n @Prop() predefine?: string[];\n\n @State() isOpen: boolean = false;\n @State() currentColor: string = '#409EFF';\n @State() hue: number = 210; // 色相值 0-360\n @State() saturation: number = 100; // 饱和度 0-100\n @State() value: number = 100; // 明度 0-100\n\n /**\n * 值改变事件\n */\n @Event() hbChange: EventEmitter<string>;\n\n /**\n * 激活时触发\n */\n @Event() hbActiveChange: EventEmitter<string>;\n\n componentDidLoad() {\n if (this.modelValue) {\n this.currentColor = this.modelValue;\n this.updateHSVFromColor(this.modelValue);\n } else {\n this.updateHSVFromColor(this.currentColor);\n }\n document.addEventListener('click', this.handleDocumentClick);\n }\n\n disconnectedCallback() {\n document.removeEventListener('click', this.handleDocumentClick);\n }\n\n private handleDocumentClick = (e: MouseEvent) => {\n if (!this.isOpen) return;\n const target = e.target as HTMLElement;\n if (!this.el.contains(target)) {\n this.isOpen = false;\n }\n };\n\n @Watch('modelValue')\n handleValueChange() {\n if (this.modelValue) {\n this.currentColor = this.modelValue;\n this.updateHSVFromColor(this.modelValue);\n }\n }\n\n private handleTriggerClick = () => {\n if (this.disabled) return;\n this.isOpen = !this.isOpen;\n };\n\n private handleColorSelect = (color: string) => {\n this.currentColor = color;\n this.modelValue = color;\n this.hbChange.emit(color);\n this.hbActiveChange.emit(color);\n };\n\n private handleSaturationClick = (e: MouseEvent) => {\n const target = e.currentTarget as HTMLElement;\n const rect = target.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n \n // X 轴代表饱和度 (0-100%)\n this.saturation = Math.max(0, Math.min(100, (x / rect.width) * 100));\n // Y 轴代表明度 (0-100%,从上到下)\n this.value = Math.max(0, Math.min(100, 100 - (y / rect.height) * 100));\n \n const hex = this.hsvToHex(this.hue, this.saturation, this.value);\n this.handleColorSelect(hex);\n };\n\n private handleHueClick = (e: MouseEvent) => {\n const target = e.currentTarget as HTMLElement;\n const rect = target.getBoundingClientRect();\n const x = e.clientX - rect.left;\n \n // 色相值 0-360\n this.hue = Math.max(0, Math.min(360, (x / rect.width) * 360));\n \n const hex = this.hsvToHex(this.hue, this.saturation, this.value);\n this.handleColorSelect(hex);\n };\n\n private handleInputChange = (e: Event) => {\n const target = e.target as HTMLInputElement;\n const value = target.value;\n // 验证 hex 颜色格式\n if (/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/.test(value)) {\n this.handleColorSelect(value);\n }\n };\n\n private handleRgbInputChange = (index: number, value: string) => {\n const rgb = this.hexToRgb(this.currentColor);\n if (rgb) {\n const num = parseInt(value, 10);\n if (!isNaN(num) && num >= 0 && num <= 255) {\n if (index === 0) rgb.r = num;\n else if (index === 1) rgb.g = num;\n else if (index === 2) rgb.b = num;\n \n const hex = `#${[rgb.r, rgb.g, rgb.b].map(x => {\n const hex = x.toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n }).join('')}`;\n this.handleColorSelect(hex);\n }\n }\n };\n\n private hexToRgb(hex: string): { r: number; g: number; b: number } | null {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n }\n\n // RGB 转 HSV\n private rgbToHsv(r: number, g: number, b: number): { h: number; s: number; v: number } {\n r = r / 255;\n g = g / 255;\n b = b / 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const diff = max - min;\n\n let h = 0;\n if (diff !== 0) {\n if (max === r) {\n h = ((g - b) / diff) % 6;\n } else if (max === g) {\n h = (b - r) / diff + 2;\n } else {\n h = (r - g) / diff + 4;\n }\n }\n h = Math.round(h * 60);\n if (h < 0) h += 360;\n\n const s = max === 0 ? 0 : Math.round((diff / max) * 100);\n const v = Math.round(max * 100);\n\n return { h, s, v };\n }\n\n // HSV 转 RGB\n private hsvToRgb(h: number, s: number, v: number): { r: number; g: number; b: number } {\n s = s / 100;\n v = v / 100;\n\n const c = v * s;\n const x = c * (1 - Math.abs(((h / 60) % 2) - 1));\n const m = v - c;\n\n let r = 0, g = 0, b = 0;\n\n if (h >= 0 && h < 60) {\n r = c; g = x; b = 0;\n } else if (h >= 60 && h < 120) {\n r = x; g = c; b = 0;\n } else if (h >= 120 && h < 180) {\n r = 0; g = c; b = x;\n } else if (h >= 180 && h < 240) {\n r = 0; g = x; b = c;\n } else if (h >= 240 && h < 300) {\n r = x; g = 0; b = c;\n } else if (h >= 300 && h < 360) {\n r = c; g = 0; b = x;\n }\n\n return {\n r: Math.round((r + m) * 255),\n g: Math.round((g + m) * 255),\n b: Math.round((b + m) * 255)\n };\n }\n\n // HSV 转 Hex\n private hsvToHex(h: number, s: number, v: number): string {\n const rgb = this.hsvToRgb(h, s, v);\n return `#${[rgb.r, rgb.g, rgb.b].map(x => {\n const hex = x.toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n }).join('')}`;\n }\n\n // 从颜色值更新 HSV\n private updateHSVFromColor(color: string) {\n const rgb = this.hexToRgb(color);\n if (rgb) {\n const hsv = this.rgbToHsv(rgb.r, rgb.g, rgb.b);\n this.hue = hsv.h;\n this.saturation = hsv.s;\n this.value = hsv.v;\n }\n }\n\n render() {\n const rgb = this.hexToRgb(this.currentColor);\n const predefinedColors = this.predefine || [\n '#ff4500', '#ff8c00', '#ffd700', '#90ee90', '#00ced1',\n '#1e90ff', '#c71585', '#000000', '#ffffff', '#808080',\n ];\n\n // 根据当前色相生成饱和度面板的背景色\n const hueColor = this.hsvToHex(this.hue, 100, 100);\n\n return (\n <div\n class={{\n 'hb-color-picker': true,\n 'hb-color-picker--open': this.isOpen,\n 'hb-color-picker--disabled': this.disabled,\n }}\n >\n <div class=\"hb-color-picker__trigger\" onClick={this.handleTriggerClick}>\n <div class=\"hb-color-picker__color\" style={{ backgroundColor: this.currentColor }}></div>\n <span class=\"hb-color-picker__text\">{this.currentColor}</span>\n </div>\n {this.isOpen && (\n <div class=\"hb-color-picker__dropdown\">\n <div class=\"hb-color-picker__panel\">\n <div class=\"hb-color-picker__saturation\" onClick={this.handleSaturationClick}>\n <div class=\"hb-color-picker__saturation-bg\" style={{ backgroundColor: hueColor }}></div>\n <div class=\"hb-color-picker__saturation-white\"></div>\n <div class=\"hb-color-picker__saturation-black\"></div>\n <div\n class=\"hb-color-picker__saturation-pointer\"\n style={{\n left: `${this.saturation}%`,\n top: `${100 - this.value}%`,\n }}\n ></div>\n </div>\n <div class=\"hb-color-picker__controls\">\n <div class=\"hb-color-picker__hue\" onClick={this.handleHueClick}>\n <div class=\"hb-color-picker__hue-bar\"></div>\n <div\n class=\"hb-color-picker__hue-pointer\"\n style={{\n left: `${(this.hue / 360) * 100}%`,\n }}\n ></div>\n </div>\n {this.showAlpha && (\n <div class=\"hb-color-picker__alpha\">\n <div class=\"hb-color-picker__alpha-bar\" style={{ backgroundColor: this.currentColor }}></div>\n </div>\n )}\n </div>\n <div class=\"hb-color-picker__input\">\n <input\n type=\"text\"\n class=\"hb-color-picker__input-hex\"\n value={this.currentColor}\n onInput={this.handleInputChange}\n />\n {rgb && (\n <div class=\"hb-color-picker__input-rgb\">\n <input \n type=\"number\" \n min=\"0\" \n max=\"255\" \n value={rgb.r}\n onInput={(e) => this.handleRgbInputChange(0, (e.target as HTMLInputElement).value)}\n />\n <input \n type=\"number\" \n min=\"0\" \n max=\"255\" \n value={rgb.g}\n onInput={(e) => this.handleRgbInputChange(1, (e.target as HTMLInputElement).value)}\n />\n <input \n type=\"number\" \n min=\"0\" \n max=\"255\" \n value={rgb.b}\n onInput={(e) => this.handleRgbInputChange(2, (e.target as HTMLInputElement).value)}\n />\n </div>\n )}\n </div>\n {this.predefine && this.predefine.length > 0 && (\n <div class=\"hb-color-picker__predefine\">\n {predefinedColors.map((color) => (\n <div\n class={{\n 'hb-color-picker__predefine-color': true,\n 'hb-color-picker__predefine-color--selected': color === this.currentColor,\n }}\n style={{ backgroundColor: color }}\n onClick={() => this.handleColorSelect(color)}\n ></div>\n ))}\n </div>\n )}\n </div>\n </div>\n )}\n </div>\n );\n }\n}\n\n"],"mappings":"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","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["timeSelectCss","HbTimeSelectStyle0","TimeSelect","modelValue","placeholder","disabled","size","clearable","start","end","step","minTime","maxTime","isOpen","inputValue","hbChange","componentDidLoad","this","updateInputValue","document","addEventListener","handleDocumentClick","disconnectedCallback","removeEventListener","e","target","el","contains","handleValueChange","generateTimeOptions","options","startHour","startMinute","split","map","Number","endHour","endMinute","startMinutes","endMinutes","minutes","hour","Math","floor","minute","timeStr","String","padStart","push","handleInputClick","handleClear","stopPropagation","undefined","emit","handleSelect","time","render","timeOptions","showClear","h","key","class","onClick","type","value","readonly"],"sources":["src/components/TimeSelect/time-select.css?tag=hb-time-select&encapsulation=shadow","src/components/TimeSelect/TimeSelect.tsx"],"sourcesContent":[":host {\n display: inline-block;\n position: relative;\n --hb-time-select-font-size: 14px;\n --hb-time-select-height: 32px;\n --hb-time-select-border-color: var(--hb-border-color, #dcdfe6);\n --hb-time-select-border-color-hover: var(--hb-color-primary);\n --hb-time-select-bg-color: var(--hb-color-white, #ffffff);\n}\n\n.hb-time-select {\n display: inline-block;\n position: relative;\n width: 200px;\n}\n\n.hb-time-select__input-wrapper {\n position: relative;\n display: inline-block;\n width: 100%;\n cursor: pointer;\n}\n\n.hb-time-select__input {\n display: inline-block;\n width: 100%;\n height: var(--hb-time-select-height);\n line-height: var(--hb-time-select-height);\n padding: 0 30px 0 15px;\n font-size: var(--hb-time-select-font-size);\n color: var(--hb-color-text-regular, #606266);\n background-color: var(--hb-time-select-bg-color);\n border: 1px solid var(--hb-time-select-border-color);\n border-radius: 4px;\n box-sizing: border-box;\n cursor: pointer;\n outline: none;\n transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);\n}\n\n.hb-time-select__input:hover:not(:disabled) {\n border-color: var(--hb-time-select-border-color-hover);\n}\n\n.hb-time-select__suffix {\n position: absolute;\n right: 8px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n}\n\n.hb-time-select__clear {\n margin-right: 8px;\n cursor: pointer;\n font-size: 16px;\n color: var(--hb-color-text-placeholder, #c0c4cc);\n}\n\n.hb-time-select__arrow {\n font-size: 12px;\n transition: transform 0.3s;\n}\n\n.hb-time-select--open .hb-time-select__arrow {\n transform: rotate(180deg);\n}\n\n.hb-time-select__dropdown {\n position: absolute;\n top: 100%;\n left: 0;\n margin-top: 4px;\n background-color: var(--hb-time-select-bg-color);\n border: 1px solid var(--hb-time-select-border-color);\n border-radius: 4px;\n box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);\n z-index: 1000;\n min-width: 100%;\n max-height: 300px;\n overflow-y: auto;\n}\n\n.hb-time-select__menu {\n margin: 0;\n padding: 6px 0;\n list-style: none;\n}\n\n.hb-time-select__menu-item {\n padding: 8px 20px;\n font-size: var(--hb-time-select-font-size);\n color: var(--hb-color-text-regular, #606266);\n cursor: pointer;\n transition: background-color 0.2s;\n}\n\n.hb-time-select__menu-item:hover {\n background-color: var(--hb-fill-color-light, #f5f7fa);\n}\n\n.hb-time-select__menu-item--selected {\n color: var(--hb-color-primary);\n font-weight: 600;\n background-color: var(--hb-color-primary-light-9, #ecf5ff);\n}\n\n.hb-time-select--small {\n width: 180px;\n}\n\n.hb-time-select--small .hb-time-select__input {\n height: 24px;\n line-height: 24px;\n font-size: 12px;\n}\n\n.hb-time-select--large {\n width: 220px;\n}\n\n.hb-time-select--large .hb-time-select__input {\n height: 40px;\n line-height: 40px;\n font-size: 16px;\n}\n\n.hb-time-select--disabled {\n cursor: not-allowed;\n}\n\n.hb-time-select--disabled .hb-time-select__input {\n background-color: var(--hb-fill-color-light, #f5f7fa);\n border-color: var(--hb-time-select-border-color);\n color: var(--hb-color-text-disabled, #c0c4cc);\n cursor: not-allowed;\n}\n\n","import { Component, h, Prop, Event, EventEmitter, State, Element, Watch } from '@stencil/core';\n\n/**\n * TimeSelect 时间选择组件\n * 可用于时间选择\n */\n@Component({\n tag: 'hb-time-select',\n styleUrl: 'time-select.css',\n shadow: true,\n})\nexport class TimeSelect {\n @Element() el: HTMLElement;\n\n /**\n * 绑定值\n */\n @Prop({ mutable: true }) modelValue?: string;\n\n /**\n * 输入框占位文本\n */\n @Prop() placeholder: string = '请选择时间';\n\n /**\n * 是否禁用\n * @default false\n */\n @Prop() disabled: boolean = false;\n\n /**\n * 输入框尺寸\n */\n @Prop() size: 'large' | 'default' | 'small' = 'default';\n\n /**\n * 是否可清空\n * @default false\n */\n @Prop() clearable: boolean = false;\n\n /**\n * 开始时间\n * @default '09:00'\n */\n @Prop() start: string = '09:00';\n\n /**\n * 结束时间\n * @default '18:00'\n */\n @Prop() end: string = '18:00';\n\n /**\n * 间隔时间\n * @default 60\n */\n @Prop() step: number = 60;\n\n /**\n * 最小时间\n */\n @Prop() minTime?: string;\n\n /**\n * 最大时间\n */\n @Prop() maxTime?: string;\n\n @State() isOpen: boolean = false;\n @State() inputValue: string = '';\n\n /**\n * 值改变事件\n */\n @Event() hbChange: EventEmitter<string>;\n\n componentDidLoad() {\n this.updateInputValue();\n document.addEventListener('click', this.handleDocumentClick);\n }\n\n disconnectedCallback() {\n document.removeEventListener('click', this.handleDocumentClick);\n }\n\n private handleDocumentClick = (e: MouseEvent) => {\n if (!this.isOpen) return;\n const target = e.target as HTMLElement;\n if (!this.el.contains(target)) {\n this.isOpen = false;\n }\n };\n\n @Watch('modelValue')\n handleValueChange() {\n this.updateInputValue();\n }\n\n private updateInputValue() {\n this.inputValue = this.modelValue || '';\n }\n\n private generateTimeOptions(): string[] {\n const options: string[] = [];\n const [startHour, startMinute] = this.start.split(':').map(Number);\n const [endHour, endMinute] = this.end.split(':').map(Number);\n \n const startMinutes = startHour * 60 + startMinute;\n const endMinutes = endHour * 60 + endMinute;\n \n for (let minutes = startMinutes; minutes <= endMinutes; minutes += this.step) {\n const hour = Math.floor(minutes / 60);\n const minute = minutes % 60;\n const timeStr = `${String(hour).padStart(2, '0')}:${String(minute).padStart(2, '0')}`;\n \n if (this.minTime && timeStr < this.minTime) continue;\n if (this.maxTime && timeStr > this.maxTime) continue;\n \n options.push(timeStr);\n }\n \n return options;\n }\n\n private handleInputClick = () => {\n if (this.disabled) return;\n this.isOpen = !this.isOpen;\n };\n\n private handleClear = (e: Event) => {\n e.stopPropagation();\n this.modelValue = undefined;\n this.inputValue = '';\n this.isOpen = false;\n this.hbChange.emit(undefined);\n };\n\n private handleSelect = (time: string) => {\n this.modelValue = time;\n this.inputValue = time;\n this.isOpen = false;\n this.hbChange.emit(time);\n };\n\n render() {\n const timeOptions = this.generateTimeOptions();\n const showClear = this.clearable && this.modelValue;\n\n return (\n <div\n class={{\n 'hb-time-select': true,\n 'hb-time-select--open': this.isOpen,\n 'hb-time-select--disabled': this.disabled,\n [`hb-time-select--${this.size}`]: true,\n }}\n >\n <div class=\"hb-time-select__input-wrapper\" onClick={this.handleInputClick}>\n <input\n type=\"text\"\n class=\"hb-time-select__input\"\n placeholder={this.placeholder}\n value={this.inputValue}\n disabled={this.disabled}\n readonly\n />\n <span class=\"hb-time-select__suffix\">\n {showClear && (\n <span class=\"hb-time-select__clear\" onClick={this.handleClear}>\n ×\n </span>\n )}\n <span class=\"hb-time-select__arrow\">▼</span>\n </span>\n </div>\n {this.isOpen && (\n <div class=\"hb-time-select__dropdown\">\n <ul class=\"hb-time-select__menu\">\n {timeOptions.map((time) => (\n <li\n class={{\n 'hb-time-select__menu-item': true,\n 'hb-time-select__menu-item--selected': time === this.modelValue,\n }}\n onClick={() => this.handleSelect(time)}\n >\n {time}\n </li>\n ))}\n </ul>\n </div>\n )}\n </div>\n );\n }\n}\n\n"],"mappings":"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","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["rateCss","HbRateStyle0","Rate","modelValue","max","disabled","allowHalf","readonly","showScore","showText","texts","scoreTemplate","hoverValue","currentValue","hbChange","componentDidLoad","this","handleValueChange","handleClick","value","isHalf","newValue","emit","handleMouseEnter","handleMouseLeave","getDisplayValue","getText","Math","ceil","getScoreText","replace","String","render","displayValue","stars","Array","from","length","_","i","h","key","class","map","isFull","isActive","onMouseEnter","onMouseLeave","onClick","e","stopPropagation"],"sources":["src/components/Rate/rate.css?tag=hb-rate&encapsulation=shadow","src/components/Rate/Rate.tsx"],"sourcesContent":[":host {\n display: inline-block;\n --hb-rate-font-size: 20px;\n --hb-rate-color: var(--hb-color-warning, #e6a23c);\n --hb-rate-void-color: var(--hb-color-text-placeholder, #c0c4cc);\n}\n\n.hb-rate {\n display: inline-block;\n height: var(--hb-rate-font-size);\n line-height: var(--hb-rate-font-size);\n vertical-align: middle;\n}\n\n.hb-rate__item {\n position: relative;\n display: inline-block;\n font-size: var(--hb-rate-font-size);\n margin-right: 6px;\n color: var(--hb-rate-void-color);\n cursor: pointer;\n transition: transform 0.2s;\n}\n\n.hb-rate__item:hover {\n transform: scale(1.1);\n}\n\n.hb-rate__item--active {\n color: var(--hb-rate-color);\n}\n\n.hb-rate__icon {\n display: block;\n}\n\n.hb-rate__half {\n position: absolute;\n left: 0;\n top: 0;\n width: 50%;\n overflow: hidden;\n color: var(--hb-rate-void-color);\n}\n\n.hb-rate__half--active {\n color: var(--hb-rate-color);\n}\n\n.hb-rate__text {\n margin-left: 8px;\n font-size: 14px;\n color: var(--hb-color-text-regular, #606266);\n vertical-align: middle;\n}\n\n","import { Component, h, Prop, Event, EventEmitter, State, Watch } from '@stencil/core';\n\n/**\n * Rate 评分组件\n * 评分组件\n */\n@Component({\n tag: 'hb-rate',\n styleUrl: 'rate.css',\n shadow: true,\n})\nexport class Rate {\n /**\n * 绑定值\n */\n @Prop({ mutable: true }) modelValue: number = 0;\n\n /**\n * 最大分值\n * @default 5\n */\n @Prop() max: number = 5;\n\n /**\n * 是否禁用\n * @default false\n */\n @Prop() disabled: boolean = false;\n\n /**\n * 是否允许半选\n * @default false\n */\n @Prop() allowHalf: boolean = false;\n\n /**\n * 只读\n * @default false\n */\n @Prop() readonly: boolean = false;\n\n /**\n * 是否显示分数\n * @default false\n */\n @Prop() showScore: boolean = false;\n\n /**\n * 是否显示文本\n * @default false\n */\n @Prop() showText: boolean = false;\n\n /**\n * 辅助文字数组\n */\n @Prop() texts?: string[];\n\n /**\n * 分数显示模板\n */\n @Prop() scoreTemplate?: string;\n\n @State() hoverValue: number = 0;\n @State() currentValue: number = 0;\n\n /**\n * 值改变事件\n */\n @Event() hbChange: EventEmitter<number>;\n\n componentDidLoad() {\n this.currentValue = this.modelValue;\n }\n\n @Watch('modelValue')\n handleValueChange() {\n this.currentValue = this.modelValue;\n }\n\n private handleClick = (value: number, isHalf: boolean) => {\n if (this.disabled || this.readonly) return;\n \n const newValue = isHalf && this.allowHalf ? value - 0.5 : value;\n this.currentValue = newValue;\n this.modelValue = newValue;\n this.hoverValue = 0;\n this.hbChange.emit(newValue);\n };\n\n private handleMouseEnter = (value: number) => {\n if (this.disabled || this.readonly) return;\n this.hoverValue = value;\n };\n\n private handleMouseLeave = () => {\n if (this.disabled || this.readonly) return;\n this.hoverValue = 0;\n };\n\n private getDisplayValue(): number {\n return this.hoverValue || this.currentValue;\n }\n\n private getText(): string {\n const value = Math.ceil(this.currentValue);\n if (this.texts && this.texts[value - 1]) {\n return this.texts[value - 1];\n }\n return '';\n }\n\n private getScoreText(): string {\n if (this.scoreTemplate) {\n return this.scoreTemplate.replace('{value}', String(this.currentValue));\n }\n return `${this.currentValue} / ${this.max}`;\n }\n\n render() {\n const displayValue = this.getDisplayValue();\n const stars = Array.from({ length: this.max }, (_, i) => i + 1);\n\n return (\n <div class=\"hb-rate\">\n {stars.map((value) => {\n const isFull = displayValue >= value;\n const isHalf = this.allowHalf && displayValue >= value - 0.5 && displayValue < value;\n const isActive = isFull || isHalf;\n\n return (\n <span\n class={{\n 'hb-rate__item': true,\n 'hb-rate__item--active': isActive,\n 'hb-rate__item--half': isHalf,\n }}\n onMouseEnter={() => this.handleMouseEnter(value)}\n onMouseLeave={this.handleMouseLeave}\n onClick={() => this.handleClick(value, false)}\n >\n {this.allowHalf && (\n <span\n class={{\n 'hb-rate__half': true,\n 'hb-rate__half--active': isHalf,\n }}\n onClick={(e) => {\n e.stopPropagation();\n this.handleClick(value, true);\n }}\n >\n ★\n </span>\n )}\n <span class=\"hb-rate__icon\">★</span>\n </span>\n );\n })}\n {this.showScore && (\n <span class=\"hb-rate__text\">{this.getScoreText()}</span>\n )}\n {this.showText && this.getText() && (\n <span class=\"hb-rate__text\">{this.getText()}</span>\n )}\n </div>\n );\n }\n}\n\n"],"mappings":"kDAAA,MAAMA,EAAU,y4MAChB,MAAAC,EAAeD,E,MCUFE,EAAI,M,4DAIUC,WAAqB,EAMtCC,IAAc,EAMdC,SAAoB,MAMpBC,UAAqB,MAMrBC,SAAoB,MAMpBC,UAAqB,MAMrBC,SAAoB,MAKpBC,MAKAC,cAECC,WAAqB,EACrBC,aAAuB,EAKvBC,SAET,gBAAAC,GACEC,KAAKH,aAAeG,KAAKb,U,CAI3B,iBAAAc,GACED,KAAKH,aAAeG,KAAKb,U,CAGnBe,YAAc,CAACC,EAAeC,KACpC,GAAIJ,KAAKX,UAAYW,KAAKT,SAAU,OAEpC,MAAMc,EAAWD,GAAUJ,KAAKV,UAAYa,EAAQ,GAAMA,EAC1DH,KAAKH,aAAeQ,EACpBL,KAAKb,WAAakB,EAClBL,KAAKJ,WAAa,EAClBI,KAAKF,SAASQ,KAAKD,EAAS,EAGtBE,iBAAoBJ,IAC1B,GAAIH,KAAKX,UAAYW,KAAKT,SAAU,OACpCS,KAAKJ,WAAaO,CAAK,EAGjBK,iBAAmB,KACzB,GAAIR,KAAKX,UAAYW,KAAKT,SAAU,OACpCS,KAAKJ,WAAa,CAAC,EAGb,eAAAa,GACN,OAAOT,KAAKJ,YAAcI,KAAKH,Y,CAGzB,OAAAa,GACN,MAAMP,EAAQQ,KAAKC,KAAKZ,KAAKH,cAC7B,GAAIG,KAAKN,OAASM,KAAKN,MAAMS,EAAQ,GAAI,CACvC,OAAOH,KAAKN,MAAMS,EAAQ,E,CAE5B,MAAO,E,CAGD,YAAAU,GACN,GAAIb,KAAKL,cAAe,CACtB,OAAOK,KAAKL,cAAcmB,QAAQ,UAAWC,OAAOf,KAAKH,c,CAE3D,MAAO,GAAGG,KAAKH,kBAAkBG,KAAKZ,K,CAGxC,MAAA4B,GACE,MAAMC,EAAejB,KAAKS,kBAC1B,MAAMS,EAAQC,MAAMC,KAAK,CAAEC,OAAQrB,KAAKZ,MAAO,CAACkC,EAAGC,IAAMA,EAAI,IAE7D,OACEC,EAAA,OAAAC,IAAA,2CAAKC,MAAM,WACRR,EAAMS,KAAKxB,IACV,MAAMyB,EAASX,GAAgBd,EAC/B,MAAMC,EAASJ,KAAKV,WAAa2B,GAAgBd,EAAQ,IAAOc,EAAed,EAC/E,MAAM0B,EAAWD,GAAUxB,EAE3B,OACEoB,EAAA,QACEE,MAAO,CACL,gBAAiB,KACjB,wBAAyBG,EACzB,sBAAuBzB,GAEzB0B,aAAc,IAAM9B,KAAKO,iBAAiBJ,GAC1C4B,aAAc/B,KAAKQ,iBACnBwB,QAAS,IAAMhC,KAAKE,YAAYC,EAAO,QAEtCH,KAAKV,WACJkC,EAAA,QACEE,MAAO,CACL,gBAAiB,KACjB,wBAAyBtB,GAE3B4B,QAAUC,IACRA,EAAEC,kBACFlC,KAAKE,YAAYC,EAAO,KAAK,GAC9B,KAKLqB,EAAA,QAAME,MAAM,iBAAe,KACtB,IAGV1B,KAAKR,WACJgC,EAAA,QAAAC,IAAA,2CAAMC,MAAM,iBAAiB1B,KAAKa,gBAEnCb,KAAKP,UAAYO,KAAKU,WACrBc,EAAA,QAAAC,IAAA,2CAAMC,MAAM,iBAAiB1B,KAAKU,W","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["stepsCss","HbStepsStyle0","Steps","active","processStatus","alignCenter","direction","steps","componentDidLoad","items","this","el","querySelectorAll","Array","from","map","item","title","getAttribute","description","undefined","getStatus","index","getIcon","status","String","render","h","key","class","step","i","length"],"sources":["src/components/Steps/steps.css?tag=hb-steps&encapsulation=shadow","src/components/Steps/Steps.tsx"],"sourcesContent":[":host { display: block; }\n.hb-steps { display: flex; }\n.hb-steps--vertical { flex-direction: column; }\n.hb-steps__item { flex: 1; display: flex; flex-direction: column; align-items: center; position: relative; }\n.hb-steps--vertical .hb-steps__item { flex-direction: row; align-items: flex-start; gap: var(--hb-spacing-sm); padding-bottom: var(--hb-spacing-md); }\n.hb-steps__head { display: flex; align-items: center; width: 100%; }\n.hb-steps__icon {\n width: 28px; height: 28px; border-radius: 50%; display: flex; align-items: center; justify-content: center;\n font-size: var(--hb-font-size-sm); font-weight: 600; flex-shrink: 0;\n background: var(--hb-color-fill); color: var(--hb-color-text-secondary); transition: all 0.3s;\n}\n.hb-steps__item--process .hb-steps__icon { background: var(--hb-color-primary); color: #fff; }\n.hb-steps__item--finish .hb-steps__icon { background: var(--hb-color-primary); color: #fff; }\n.hb-steps__item--error .hb-steps__icon { background: var(--hb-color-danger); color: #fff; }\n.hb-steps__line { flex: 1; height: 2px; background: var(--hb-color-border-secondary); margin: 0 var(--hb-spacing-xs); }\n.hb-steps__item--finish .hb-steps__line { background: var(--hb-color-primary); }\n.hb-steps__main { text-align: center; margin-top: var(--hb-spacing-xs); }\n.hb-steps--vertical .hb-steps__main { text-align: left; }\n\n/* 对齐方式(alignCenter prop):默认 false 时图标与文字左对齐,true 时居中 */\n.hb-steps:not(.hb-steps--align-center) .hb-steps__item { align-items: flex-start; }\n.hb-steps:not(.hb-steps--align-center) .hb-steps__main { text-align: left; }\n.hb-steps__title { font-size: var(--hb-font-size-sm); font-weight: 600; }\n.hb-steps__item--process .hb-steps__title { color: var(--hb-color-primary); }\n.hb-steps__description { font-size: var(--hb-font-size-xs); color: var(--hb-color-text-secondary); margin-top: 2px; }\n","import { Component, h, Prop, State, Element } from '@stencil/core';\n\n@Component({ tag: 'hb-steps', styleUrl: 'steps.css', shadow: true })\nexport class Steps {\n @Element() el: HTMLElement;\n @Prop() active: number = 0;\n @Prop() processStatus: 'wait' | 'process' | 'finish' | 'error' = 'process';\n @Prop() alignCenter: boolean = false;\n @Prop() direction: 'horizontal' | 'vertical' = 'horizontal';\n\n @State() steps: { title: string; description?: string }[] = [];\n\n componentDidLoad() {\n const items = this.el.querySelectorAll('hb-step');\n this.steps = Array.from(items).map((item) => ({\n title: item.getAttribute('title') || '',\n description: item.getAttribute('description') || undefined,\n }));\n }\n\n private getStatus(index: number): string {\n if (index < this.active) return 'finish';\n if (index === this.active) return this.processStatus;\n return 'wait';\n }\n\n private getIcon(index: number): string {\n const status = this.getStatus(index);\n if (status === 'finish') return '✓';\n if (status === 'error') return '✕';\n return String(index + 1);\n }\n\n render() {\n return (\n <div class={{ 'hb-steps': true, [`hb-steps--${this.direction}`]: true, 'hb-steps--align-center': this.alignCenter }}>\n {this.steps.map((step, i) => (\n <div class={{ 'hb-steps__item': true, [`hb-steps__item--${this.getStatus(i)}`]: true }}>\n <div class=\"hb-steps__head\">\n <span class=\"hb-steps__icon\">{this.getIcon(i)}</span>\n {i < this.steps.length - 1 && <div class=\"hb-steps__line\"></div>}\n </div>\n <div class=\"hb-steps__main\">\n <div class=\"hb-steps__title\">{step.title}</div>\n {step.description && <div class=\"hb-steps__description\">{step.description}</div>}\n </div>\n </div>\n ))}\n </div>\n );\n }\n}\n"],"mappings":"kDAAA,MAAMA,EAAW,gkOACjB,MAAAC,EAAeD,E,MCEFE,EAAK,M,iDAERC,OAAiB,EACjBC,cAAyD,UACzDC,YAAuB,MACvBC,UAAuC,aAEtCC,MAAmD,GAE5D,gBAAAC,GACE,MAAMC,EAAQC,KAAKC,GAAGC,iBAAiB,WACvCF,KAAKH,MAAQM,MAAMC,KAAKL,GAAOM,KAAKC,IAAI,CACtCC,MAAOD,EAAKE,aAAa,UAAY,GACrCC,YAAaH,EAAKE,aAAa,gBAAkBE,a,CAI7C,SAAAC,CAAUC,GAChB,GAAIA,EAAQZ,KAAKP,OAAQ,MAAO,SAChC,GAAImB,IAAUZ,KAAKP,OAAQ,OAAOO,KAAKN,cACvC,MAAO,M,CAGD,OAAAmB,CAAQD,GACd,MAAME,EAASd,KAAKW,UAAUC,GAC9B,GAAIE,IAAW,SAAU,MAAO,IAChC,GAAIA,IAAW,QAAS,MAAO,IAC/B,OAAOC,OAAOH,EAAQ,E,CAGxB,MAAAI,GACE,OACEC,EAAA,OAAAC,IAAA,2CAAKC,MAAO,CAAE,WAAY,KAAM,CAAC,aAAanB,KAAKJ,aAAc,KAAM,yBAA0BI,KAAKL,cACnGK,KAAKH,MAAMQ,KAAI,CAACe,EAAMC,IACrBJ,EAAA,OAAKE,MAAO,CAAE,iBAAkB,KAAM,CAAC,mBAAmBnB,KAAKW,UAAUU,MAAO,OAC9EJ,EAAA,OAAKE,MAAM,kBACTF,EAAA,QAAME,MAAM,kBAAkBnB,KAAKa,QAAQQ,IAC1CA,EAAIrB,KAAKH,MAAMyB,OAAS,GAAKL,EAAA,OAAKE,MAAM,oBAE3CF,EAAA,OAAKE,MAAM,kBACTF,EAAA,OAAKE,MAAM,mBAAmBC,EAAKb,OAClCa,EAAKX,aAAeQ,EAAA,OAAKE,MAAM,yBAAyBC,EAAKX,iB","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- function e(e){return e==="Enter"||e===" "||e==="Spacebar"}const t=["a[href]","button:not([disabled])","textarea:not([disabled])","input:not([disabled])","select:not([disabled])",'[tabindex]:not([tabindex="-1"])','[contenteditable="true"]'].join(",");function n(e){return Array.from(e.querySelectorAll(t)).filter((e=>e.getAttribute("aria-hidden")!=="true"&&e.style.display!=="none"))}function r(e){const{container:t,autoFocus:r=true,returnFocusTo:o}=e;let a=false;let c=null;const i=e=>{if(e.key!=="Tab")return;const r=n(t);if(r.length===0){e.preventDefault();t.focus();return}const o=r[0];const a=r[r.length-1];const c=document.activeElement;if(e.shiftKey){if(c===o||!t.contains(c)){e.preventDefault();a.focus()}}else{if(c===a){e.preventDefault();o.focus()}}};const s=()=>{if(a)return;a=true;c=o??document.activeElement;t.addEventListener("keydown",i);if(r){const e=n(t);(e[0]??t).focus()}};const u=()=>{if(!a)return;a=false;t.removeEventListener("keydown",i);if(c&&typeof c.focus==="function"){c.focus()}c=null};return{connect:s,disconnect:u}}function o(e,t){const{activeIndex:n,itemCount:r,loop:o=true}=t;if(r<=0)return{type:"none"};const a=e=>(e+r)%r;const c=e=>Math.max(0,Math.min(e,r-1));switch(e.key){case"ArrowDown":case"ArrowRight":return{type:"navigate",index:o?a(n+1):c(n+1)};case"ArrowUp":case"ArrowLeft":return{type:"navigate",index:o?a(n-1):c(n-1)};case"Home":return{type:"navigate",index:0};case"End":return{type:"navigate",index:r-1};case"Enter":case" ":case"Spacebar":return n>=0?{type:"select",index:n}:{type:"none"};case"Escape":return{type:"close"};default:return{type:"none"}}}export{r as c,o as h,e as i};
2
- //# sourceMappingURL=p-cc0aeb50.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["isActivationKey","key","FOCUSABLE_SELECTOR","join","getFocusableElements","container","Array","from","querySelectorAll","filter","el","getAttribute","style","display","createFocusTrap","options","autoFocus","returnFocusTo","active","previouslyFocused","handleKeydown","e","focusable","length","preventDefault","focus","first","last","activeEl","document","activeElement","shiftKey","contains","connect","addEventListener","disconnect","removeEventListener","handleListKeyboard","event","activeIndex","itemCount","loop","type","clamp","idx","within","Math","max","min","index"],"sources":["src/utils/a11y.ts"],"sourcesContent":["/**\n * 无障碍(a11y)工具集\n * 统一 ARIA 属性辅助、焦点陷阱、列表键盘导航等在交互组件(Dialog / Drawer / Menu /\n * Dropdown / Select 等)中重复出现且容易写错的可访问性逻辑。\n *\n * 参考标准:WAI-ARIA Authoring Practices 1.2。\n */\n\n/** 判定按键是否为「激活」键(Enter / Space),用于自定义可聚焦元素的点击替代 */\nexport function isActivationKey(key: string | undefined): boolean {\n return key === 'Enter' || key === ' ' || key === 'Spacebar';\n}\n\n/** 查询容器内可聚焦的元素顺序(tabindex >= 0 的语义元素) */\nconst FOCUSABLE_SELECTOR = [\n 'a[href]',\n 'button:not([disabled])',\n 'textarea:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n '[contenteditable=\"true\"]',\n].join(',');\n\nexport function getFocusableElements(container: HTMLElement): HTMLElement[] {\n return Array.from(container.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR)).filter(\n (el) => el.getAttribute('aria-hidden') !== 'true' && el.style.display !== 'none',\n );\n}\n\n/** 焦点陷阱选项 */\nexport interface FocusTrapOptions {\n /** 焦点受限的容器元素 */\n container: HTMLElement;\n /** 打开时是否自动聚焦容器内首个可聚焦元素 */\n autoFocus?: boolean;\n /** 容器激活前的元素(用于关闭时归还焦点) */\n returnFocusTo?: HTMLElement | null;\n}\n\n/** 焦点陷阱句柄 */\nexport interface FocusTrap {\n /** 启用:绑定 Tab 拦截,可选自动聚焦 */\n connect: () => void;\n /** 关闭:解除拦截,归还焦点 */\n disconnect: () => void;\n}\n\n/**\n * 创建焦点陷阱(Dialog / Drawer 打开时把 Tab 循环限制在容器内)。\n * 关键点:Tab 与 Shift+Tab 在容器边界时回环到另一端,防止焦点逃逸到背景。\n * 返回句柄,组件在打开时 connect()、关闭时 disconnect()。\n */\nexport function createFocusTrap(options: FocusTrapOptions): FocusTrap {\n const { container, autoFocus = true, returnFocusTo } = options;\n let active = false;\n let previouslyFocused: HTMLElement | null = null;\n\n const handleKeydown = (e: KeyboardEvent) => {\n if (e.key !== 'Tab') return;\n const focusable = getFocusableElements(container);\n if (focusable.length === 0) {\n e.preventDefault();\n container.focus();\n return;\n }\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n const activeEl = document.activeElement;\n\n if (e.shiftKey) {\n if (activeEl === first || !container.contains(activeEl)) {\n e.preventDefault();\n last.focus();\n }\n } else {\n if (activeEl === last) {\n e.preventDefault();\n first.focus();\n }\n }\n };\n\n const connect = () => {\n if (active) return;\n active = true;\n previouslyFocused = (returnFocusTo ?? document.activeElement) as HTMLElement | null;\n container.addEventListener('keydown', handleKeydown);\n if (autoFocus) {\n const focusable = getFocusableElements(container);\n (focusable[0] ?? container).focus();\n }\n };\n\n const disconnect = () => {\n if (!active) return;\n active = false;\n container.removeEventListener('keydown', handleKeydown);\n if (previouslyFocused && typeof previouslyFocused.focus === 'function') {\n previouslyFocused.focus();\n }\n previouslyFocused = null;\n };\n\n return { connect, disconnect };\n}\n\n/** 列表键盘导航产生的动作 */\nexport type ListKeyAction =\n | { type: 'navigate'; index: number }\n | { type: 'select'; index: number }\n | { type: 'close' }\n | { type: 'none' };\n\n/** 列表键盘导航参数 */\nexport interface ListKeyboardOptions {\n /** 当前高亮项索引(-1 表示无高亮) */\n activeIndex: number;\n /** 列表项总数 */\n itemCount: number;\n /** 是否允许循环(首尾跳转) */\n loop?: boolean;\n}\n\n/**\n * 列表 / 菜单 / 下拉选项的键盘导航核心逻辑(listbox / menu / combobox 通用)。\n * 返回应执行的动作,由调用方据此更新 activeIndex / 触发选中 / 关闭。\n *\n * 支持:ArrowDown/ArrowUp(竖排)/ArrowRight/ArrowLeft(横排)移动、Home/End 跳首尾、\n * Enter/Space 选中、Escape 关闭。\n */\nexport function handleListKeyboard(event: KeyboardEvent, options: ListKeyboardOptions): ListKeyAction {\n const { activeIndex, itemCount, loop = true } = options;\n if (itemCount <= 0) return { type: 'none' };\n\n const clamp = (idx: number) => (idx + itemCount) % itemCount;\n const within = (idx: number) => Math.max(0, Math.min(idx, itemCount - 1));\n\n switch (event.key) {\n case 'ArrowDown':\n case 'ArrowRight':\n return { type: 'navigate', index: loop ? clamp(activeIndex + 1) : within(activeIndex + 1) };\n case 'ArrowUp':\n case 'ArrowLeft':\n return { type: 'navigate', index: loop ? clamp(activeIndex - 1) : within(activeIndex - 1) };\n case 'Home':\n return { type: 'navigate', index: 0 };\n case 'End':\n return { type: 'navigate', index: itemCount - 1 };\n case 'Enter':\n case ' ':\n case 'Spacebar':\n return activeIndex >= 0 ? { type: 'select', index: activeIndex } : { type: 'none' };\n case 'Escape':\n return { type: 'close' };\n default:\n return { type: 'none' };\n }\n}\n\n/**\n * 为元素批量设置 ARIA 属性(不可变:返回新映射,但直接操作 DOM 属性是 a11y 的固有需求)。\n * 组件挂载后调用一次即可,避免每次 render 重复写 setAttribute。\n */\nexport function applyAria(el: HTMLElement, attrs: Record<string, string | boolean | undefined>): void {\n Object.entries(attrs).forEach(([key, value]) => {\n if (value === undefined || value === null) {\n el.removeAttribute(`aria-${key}`);\n } else {\n el.setAttribute(`aria-${key}`, String(value));\n }\n });\n}\n"],"mappings":"SASgBA,EAAgBC,GAC9B,OAAOA,IAAQ,SAAWA,IAAQ,KAAOA,IAAQ,UACnD,CAGA,MAAMC,EAAqB,CACzB,UACA,yBACA,2BACA,wBACA,yBACA,kCACA,4BACAC,KAAK,K,SAESC,EAAqBC,GACnC,OAAOC,MAAMC,KAAKF,EAAUG,iBAA8BN,IAAqBO,QAC5EC,GAAOA,EAAGC,aAAa,iBAAmB,QAAUD,EAAGE,MAAMC,UAAY,QAE9E,C,SAyBgBC,EAAgBC,GAC9B,MAAMV,UAAEA,EAASW,UAAEA,EAAY,KAAIC,cAAEA,GAAkBF,EACvD,IAAIG,EAAS,MACb,IAAIC,EAAwC,KAE5C,MAAMC,EAAiBC,IACrB,GAAIA,EAAEpB,MAAQ,MAAO,OACrB,MAAMqB,EAAYlB,EAAqBC,GACvC,GAAIiB,EAAUC,SAAW,EAAG,CAC1BF,EAAEG,iBACFnB,EAAUoB,QACV,M,CAEF,MAAMC,EAAQJ,EAAU,GACxB,MAAMK,EAAOL,EAAUA,EAAUC,OAAS,GAC1C,MAAMK,EAAWC,SAASC,cAE1B,GAAIT,EAAEU,SAAU,CACd,GAAIH,IAAaF,IAAUrB,EAAU2B,SAASJ,GAAW,CACvDP,EAAEG,iBACFG,EAAKF,O,MAEF,CACL,GAAIG,IAAaD,EAAM,CACrBN,EAAEG,iBACFE,EAAMD,O,IAKZ,MAAMQ,EAAU,KACd,GAAIf,EAAQ,OACZA,EAAS,KACTC,EAAqBF,GAAiBY,SAASC,cAC/CzB,EAAU6B,iBAAiB,UAAWd,GACtC,GAAIJ,EAAW,CACb,MAAMM,EAAYlB,EAAqBC,IACtCiB,EAAU,IAAMjB,GAAWoB,O,GAIhC,MAAMU,EAAa,KACjB,IAAKjB,EAAQ,OACbA,EAAS,MACTb,EAAU+B,oBAAoB,UAAWhB,GACzC,GAAID,UAA4BA,EAAkBM,QAAU,WAAY,CACtEN,EAAkBM,O,CAEpBN,EAAoB,IAAI,EAG1B,MAAO,CAAEc,UAASE,aACpB,C,SA0BgBE,EAAmBC,EAAsBvB,GACvD,MAAMwB,YAAEA,EAAWC,UAAEA,EAASC,KAAEA,EAAO,MAAS1B,EAChD,GAAIyB,GAAa,EAAG,MAAO,CAAEE,KAAM,QAEnC,MAAMC,EAASC,IAAiBA,EAAMJ,GAAaA,EACnD,MAAMK,EAAUD,GAAgBE,KAAKC,IAAI,EAAGD,KAAKE,IAAIJ,EAAKJ,EAAY,IAEtE,OAAQF,EAAMrC,KACZ,IAAK,YACL,IAAK,aACH,MAAO,CAAEyC,KAAM,WAAYO,MAAOR,EAAOE,EAAMJ,EAAc,GAAKM,EAAON,EAAc,IACzF,IAAK,UACL,IAAK,YACH,MAAO,CAAEG,KAAM,WAAYO,MAAOR,EAAOE,EAAMJ,EAAc,GAAKM,EAAON,EAAc,IACzF,IAAK,OACH,MAAO,CAAEG,KAAM,WAAYO,MAAO,GACpC,IAAK,MACH,MAAO,CAAEP,KAAM,WAAYO,MAAOT,EAAY,GAChD,IAAK,QACL,IAAK,IACL,IAAK,WACH,OAAOD,GAAe,EAAI,CAAEG,KAAM,SAAUO,MAAOV,GAAgB,CAAEG,KAAM,QAC7E,IAAK,SACH,MAAO,CAAEA,KAAM,SACjB,QACE,MAAO,CAAEA,KAAM,QAErB,Q","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- function n(n,t){return n.getFullYear()===t.getFullYear()&&n.getMonth()===t.getMonth()&&n.getDate()===t.getDate()}function t(t,e,s=new Date){const o=[];const c=t.getFullYear();const r=t.getMonth();const a=new Date(c,r,1);const i=new Date(c,r+1,0);const u=a.getDay();const f=i.getDate();const d=new Date(c,r-1,0);for(let t=u-1;t>=0;t--){const a=new Date(c,r-1,d.getDate()-t);o.push({date:a,isCurrentMonth:false,isToday:n(a,s),isSelected:!!e&&n(a,e)})}for(let t=1;t<=f;t++){const a=new Date(c,r,t);o.push({date:a,isCurrentMonth:true,isToday:n(a,s),isSelected:!!e&&n(a,e)})}const D=42-o.length;for(let t=1;t<=D;t++){const a=new Date(c,r+1,t);o.push({date:a,isCurrentMonth:false,isToday:n(a,s),isSelected:!!e&&n(a,e)})}return o}function e(n,t){const e=n.getFullYear();const s=String(n.getMonth()+1).padStart(2,"0");const o=String(n.getDate()).padStart(2,"0");const c=String(n.getHours()).padStart(2,"0");const r=String(n.getMinutes()).padStart(2,"0");const a=String(n.getSeconds()).padStart(2,"0");return t.replace("YYYY",String(e)).replace("MM",s).replace("DD",o).replace("HH",c).replace("mm",r).replace("ss",a)}function s(n){if(!n)return undefined;const t=n instanceof Date?n:new Date(n);if(isNaN(t.getTime()))return undefined;return t}function o(n,t){const e=new Date(n);e.setMonth(e.getMonth()+t);return e}function c(n,t){const e=new Date(n);e.setFullYear(e.getFullYear()+t);return e}function r(n,t,e){const s=n.getFullYear();const o=e??s-s%12;const c=[];for(let n=0;n<12;n++){const e=o+n;c.push({year:e,isCurrentYearRange:e===s,isSelected:!!t&&t.getFullYear()===e})}return c}function a(n){const t=n.getFullYear();return t-t%12}const i=["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"];const u=["日","一","二","三","四","五","六"];export{i as M,u as W,o as a,c as b,a as c,r as d,e as f,t as g,n as i,s as p};
2
- //# sourceMappingURL=p-cf94cbf6.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["isSameDay","date1","date2","getFullYear","getMonth","getDate","getCalendarDays","viewDate","selectedDate","today","Date","days","year","month","firstDay","lastDay","firstDayWeek","getDay","daysInMonth","prevMonth","i","date","push","isCurrentMonth","isToday","isSelected","remainingDays","length","formatDate","format","String","padStart","day","hours","getHours","minutes","getMinutes","seconds","getSeconds","replace","parseDate","value","undefined","isNaN","getTime","addMonths","delta","result","setMonth","addYears","setFullYear","getCalendarYears","startYearBase","rangeStart","years","y","isCurrentYearRange","getYearRangeStart","MONTH_NAMES","WEEK_DAY_NAMES"],"sources":["src/utils/date-helpers.ts"],"sourcesContent":["/**\n * 日历和日期工具函数\n * 从 DatePicker / DateTimePicker / DatePickerPane 中提取的共享逻辑\n */\n\nexport interface CalendarDay {\n date: Date;\n isCurrentMonth: boolean;\n isToday: boolean;\n isSelected: boolean;\n}\n\n/** 判断两个日期是否为同一天 */\nexport function isSameDay(date1: Date, date2: Date): boolean {\n return (\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate()\n );\n}\n\n/** 生成 42 天(6 周)的日历网格数据 */\nexport function getCalendarDays(\n viewDate: Date,\n selectedDate?: Date,\n today: Date = new Date()\n): CalendarDay[] {\n const days: CalendarDay[] = [];\n const year = viewDate.getFullYear();\n const month = viewDate.getMonth();\n\n const firstDay = new Date(year, month, 1);\n const lastDay = new Date(year, month + 1, 0);\n const firstDayWeek = firstDay.getDay();\n const daysInMonth = lastDay.getDate();\n\n // 上月填充\n const prevMonth = new Date(year, month - 1, 0);\n for (let i = firstDayWeek - 1; i >= 0; i--) {\n const date = new Date(year, month - 1, prevMonth.getDate() - i);\n days.push({\n date,\n isCurrentMonth: false,\n isToday: isSameDay(date, today),\n isSelected: !!selectedDate && isSameDay(date, selectedDate),\n });\n }\n\n // 当月日期\n for (let i = 1; i <= daysInMonth; i++) {\n const date = new Date(year, month, i);\n days.push({\n date,\n isCurrentMonth: true,\n isToday: isSameDay(date, today),\n isSelected: !!selectedDate && isSameDay(date, selectedDate),\n });\n }\n\n // 下月填充(补齐 42 天)\n const remainingDays = 42 - days.length;\n for (let i = 1; i <= remainingDays; i++) {\n const date = new Date(year, month + 1, i);\n days.push({\n date,\n isCurrentMonth: false,\n isToday: isSameDay(date, today),\n isSelected: !!selectedDate && isSameDay(date, selectedDate),\n });\n }\n\n return days;\n}\n\n/**\n * 格式化日期为指定格式字符串\n * 支持:YYYY, MM, DD, HH, mm, ss\n */\nexport function formatDate(date: Date, format: string): string {\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n const hours = String(date.getHours()).padStart(2, '0');\n const minutes = String(date.getMinutes()).padStart(2, '0');\n const seconds = String(date.getSeconds()).padStart(2, '0');\n\n return format\n .replace('YYYY', String(year))\n .replace('MM', month)\n .replace('DD', day)\n .replace('HH', hours)\n .replace('mm', minutes)\n .replace('ss', seconds);\n}\n\n/** 安全解析日期值 */\nexport function parseDate(value: string | Date | undefined): Date | undefined {\n if (!value) return undefined;\n const date = value instanceof Date ? value : new Date(value);\n if (isNaN(date.getTime())) return undefined;\n return date;\n}\n\n/** 月份偏移,返回新日期对象(不可变) */\nexport function addMonths(date: Date, delta: number): Date {\n const result = new Date(date);\n result.setMonth(result.getMonth() + delta);\n return result;\n}\n\n/** 年份偏移,返回新日期对象(不可变) */\nexport function addYears(date: Date, delta: number): Date {\n const result = new Date(date);\n result.setFullYear(result.getFullYear() + delta);\n return result;\n}\n\n/**\n * 生成 years 视图的 12 年档数据(每档 12 年)。\n * 以 viewDate 所在年份向下取整到 12 的倍数作为起点。\n */\nexport interface CalendarYear {\n year: number;\n isCurrentYearRange: boolean;\n isSelected: boolean;\n}\n\nexport function getCalendarYears(\n viewDate: Date,\n selectedDate?: Date,\n startYearBase?: number\n): CalendarYear[] {\n const year = viewDate.getFullYear();\n const rangeStart = startYearBase ?? year - (year % 12);\n const years: CalendarYear[] = [];\n for (let i = 0; i < 12; i++) {\n const y = rangeStart + i;\n years.push({\n year: y,\n isCurrentYearRange: y === year,\n isSelected: !!selectedDate && selectedDate.getFullYear() === y,\n });\n }\n return years;\n}\n\n/** 获取 years 视图标题所显示的年份档区间起点 */\nexport function getYearRangeStart(viewDate: Date): number {\n const year = viewDate.getFullYear();\n return year - (year % 12);\n}\n\n/** 中文月份名称 */\nexport const MONTH_NAMES = [\n '一月', '二月', '三月', '四月', '五月', '六月',\n '七月', '八月', '九月', '十月', '十一月', '十二月',\n];\n\n/** 中文星期名称 */\nexport const WEEK_DAY_NAMES = ['日', '一', '二', '三', '四', '五', '六'];\n"],"mappings":"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","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import{r as t,c as e,g as i,h as o}from"./p-e42dfa95.js";import{h as a}from"./p-cc0aeb50.js";const r='/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:host,:root{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,::backdrop,:after,:before{border:0 solid;box-sizing:border-box;margin:0;padding:0}::file-selector-button{appearance:button;background-color:#0000;border:0 solid;border-radius:0;box-sizing:border-box;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;margin:0;margin-inline-end:4px;opacity:1;padding:0}:host,html{-webkit-text-size-adjust:100%;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);line-height:1.5;tab-size:4;-webkit-tap-highlight-color:transparent}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-size:1em;font-variation-settings:var(--default-mono-font-variation-settings,normal)}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}button,input,optgroup,select,textarea{background-color:#0000;border-radius:0;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex;padding-block:0}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}} /*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer components;:host{display:block}.hb-tabs__header{border-bottom:1px solid var(--hb-color-border-secondary);margin-bottom:var(--hb-spacing-md)}.hb-tabs__nav{display:flex;gap:var(--hb-spacing-xs)}.hb-tabs__item{align-items:center;border-bottom:2px solid #0000;color:var(--hb-color-text-secondary);cursor:pointer;display:inline-flex;font-size:var(--hb-font-size-sm);gap:4px;padding:var(--hb-spacing-xs)var(--hb-spacing-md);transition:all var(--hb-transition-duration)var(--hb-transition-function);-webkit-user-select:none;user-select:none}.hb-tabs__item--active,.hb-tabs__item:hover{color:var(--hb-color-primary)}.hb-tabs__item--active{border-bottom-color:var(--hb-color-primary)}.hb-tabs--card .hb-tabs__item{background:var(--hb-color-fill-quaternary);border:1px solid var(--hb-color-border);border-bottom:none;border-radius:var(--hb-border-radius-sm)var(--hb-border-radius-sm)0 0}.hb-tabs--card .hb-tabs__item--active{background:var(--hb-color-bg);border-bottom-color:var(--hb-color-bg);margin-bottom:-1px}.hb-tabs__item-close{align-items:center;border-radius:50%;display:inline-flex;font-size:11px;height:14px;justify-content:center;transition:background-color var(--hb-transition-duration);width:14px}.hb-tabs__item-close:hover{background-color:#0000001a}.hb-tabs__content{color:var(--hb-color-text)}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}';const n=r;const s=class{constructor(i){t(this,i);this.hbTabChange=e(this,"hbTabChange",7);this.hbTabRemove=e(this,"hbTabRemove",7)}get el(){return i(this)}modelValue="";type="line";closable=false;activeTab="";tabs=[];hbTabChange;hbTabRemove;componentDidLoad(){this.collectTabs();if(!this.modelValue&&this.tabs.length>0){this.activeTab=this.tabs[0].key;this.modelValue=this.activeTab}else{this.activeTab=this.modelValue}this.updatePaneVisibility()}handleModelValueChange(){this.activeTab=this.modelValue;this.updatePaneVisibility()}collectTabs(){const t=this.el.querySelectorAll("hb-tab-pane");const e=[];t.forEach((t=>{e.push({key:t.getAttribute("key")||"",label:t.getAttribute("label")||""})}));this.tabs=e}updatePaneVisibility(){const t=this.el.querySelectorAll("hb-tab-pane");t.forEach((t=>{const e=t.getAttribute("key")===this.activeTab;t.setAttribute("active",String(e))}))}handleTabClick=t=>{this.activeTab=t;this.modelValue=t;this.hbTabChange.emit(t);this.updatePaneVisibility();this.moveFocusToTab(t)};handleTabKeydown=(t,e)=>{const i=t.key==="ArrowLeft"||t.key==="ArrowRight"||t.key==="ArrowUp"||t.key==="ArrowDown"||t.key==="Home"||t.key==="End";if(!i)return;t.preventDefault();const o=a(t,{activeIndex:e,itemCount:this.tabs.length,loop:true});if(o.type==="navigate"&&this.tabs[o.index]){this.handleTabClick(this.tabs[o.index].key)}};moveFocusToTab(t){const e=this.tabs.findIndex((e=>e.key===t));if(e<0)return;const i=this.el.shadowRoot?.querySelectorAll(".hb-tabs__item");i?.[e]?.focus()}render(){return o("div",{key:"796e99789e8493219eebb94cc65fcbc2d7215518",class:{"hb-tabs":true,[`hb-tabs--${this.type}`]:true}},o("div",{key:"f291d1e3acc730d0243aef4514018b881748c9ef",class:"hb-tabs__header"},o("div",{key:"a3cf56bb33eafea5b36d6f38e616838b9436d58b",class:"hb-tabs__nav",role:"tablist"},this.tabs.map(((t,e)=>{const i=t.key===this.activeTab;const a=`hb-tabs__tab-${t.key}`;return o("div",{class:{"hb-tabs__item":true,"hb-tabs__item--active":i},role:"tab",id:a,"aria-selected":i?"true":"false",tabindex:i?0:-1,"aria-controls":`hb-tabs__panel-${t.key}`,onClick:()=>this.handleTabClick(t.key),onKeyDown:t=>this.handleTabKeydown(t,e)},o("span",{class:"hb-tabs__item-label"},t.label),this.closable&&o("span",{class:"hb-tabs__item-close",role:"button","aria-label":"关闭标签",tabIndex:-1,onClick:e=>{e.stopPropagation();this.hbTabRemove.emit(t.key)}},"×"))})))),o("div",{key:"45fee79ae1148bc6385bcb161c757d0226b4309c",class:"hb-tabs__content"},o("slot",{key:"cb00f1ed24d5a937e378c238097a251b45f323c6"})))}static get watchers(){return{modelValue:["handleModelValueChange"]}}};s.style=n;export{s as hb_tabs};
2
- //# sourceMappingURL=p-d3939d44.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["tabsCss","HbTabsStyle0","Tabs","modelValue","type","closable","activeTab","tabs","hbTabChange","hbTabRemove","componentDidLoad","this","collectTabs","length","key","updatePaneVisibility","handleModelValueChange","panes","el","querySelectorAll","forEach","pane","push","getAttribute","label","isActive","setAttribute","String","handleTabClick","emit","moveFocusToTab","handleTabKeydown","e","currentIndex","isArrow","preventDefault","action","handleListKeyboard","activeIndex","itemCount","loop","index","idx","findIndex","t","items","shadowRoot","focus","render","h","class","role","map","tab","selected","tabId","id","tabindex","onClick","onKeyDown","tabIndex","stopPropagation"],"sources":["src/components/Tabs/tabs.css?tag=hb-tabs&encapsulation=shadow","src/components/Tabs/Tabs.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n.hb-tabs__header {\n border-bottom: 1px solid var(--hb-color-border-secondary);\n margin-bottom: var(--hb-spacing-md);\n}\n\n.hb-tabs__nav {\n display: flex;\n gap: var(--hb-spacing-xs);\n}\n\n.hb-tabs__item {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: var(--hb-spacing-xs) var(--hb-spacing-md);\n font-size: var(--hb-font-size-sm);\n color: var(--hb-color-text-secondary);\n cursor: pointer;\n border-bottom: 2px solid transparent;\n transition: all var(--hb-transition-duration) var(--hb-transition-function);\n user-select: none;\n}\n\n.hb-tabs__item:hover {\n color: var(--hb-color-primary);\n}\n\n.hb-tabs__item--active {\n color: var(--hb-color-primary);\n border-bottom-color: var(--hb-color-primary);\n}\n\n/* ---- card 类型 ---- */\n.hb-tabs--card .hb-tabs__item {\n border: 1px solid var(--hb-color-border);\n border-bottom: none;\n border-radius: var(--hb-border-radius-sm) var(--hb-border-radius-sm) 0 0;\n background: var(--hb-color-fill-quaternary);\n}\n.hb-tabs--card .hb-tabs__item--active {\n background: var(--hb-color-bg);\n border-bottom-color: var(--hb-color-bg);\n margin-bottom: -1px;\n}\n\n.hb-tabs__item-close {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 14px;\n height: 14px;\n border-radius: 50%;\n font-size: 11px;\n transition: background-color var(--hb-transition-duration);\n}\n.hb-tabs__item-close:hover {\n background-color: rgba(0, 0, 0, 0.1);\n}\n\n.hb-tabs__content {\n color: var(--hb-color-text);\n}\n","import { Component, h, Prop, State, Element, Watch, Event, EventEmitter } from '@stencil/core';\nimport { handleListKeyboard } from '../../utils/a11y';\n\n/**\n * Tabs 标签页组件\n * 选项卡切换组件\n */\n@Component({\n tag: 'hb-tabs',\n styleUrl: 'tabs.css',\n shadow: true,\n})\nexport class Tabs {\n @Element() el: HTMLElement;\n\n /** 当前激活的标签 */\n @Prop({ mutable: true }) modelValue: string = '';\n\n /** 标签风格类型 */\n @Prop() type: 'line' | 'card' | 'border-card' = 'line';\n\n /** 是否可关闭 */\n @Prop() closable: boolean = false;\n\n @State() activeTab: string = '';\n @State() tabs: { key: string; label: string }[] = [];\n\n /** 标签切换事件 */\n @Event() hbTabChange: EventEmitter<string>;\n\n /** 标签关闭事件 */\n @Event() hbTabRemove: EventEmitter<string>;\n\n componentDidLoad() {\n this.collectTabs();\n if (!this.modelValue && this.tabs.length > 0) {\n this.activeTab = this.tabs[0].key;\n this.modelValue = this.activeTab;\n } else {\n this.activeTab = this.modelValue;\n }\n this.updatePaneVisibility();\n }\n\n @Watch('modelValue')\n handleModelValueChange() {\n this.activeTab = this.modelValue;\n this.updatePaneVisibility();\n }\n\n private collectTabs() {\n const panes = this.el.querySelectorAll('hb-tab-pane');\n const tabs: { key: string; label: string }[] = [];\n panes.forEach((pane) => {\n tabs.push({\n key: pane.getAttribute('key') || '',\n label: pane.getAttribute('label') || '',\n });\n });\n this.tabs = tabs;\n }\n\n private updatePaneVisibility() {\n const panes = this.el.querySelectorAll('hb-tab-pane');\n panes.forEach((pane) => {\n const isActive = pane.getAttribute('key') === this.activeTab;\n pane.setAttribute('active', String(isActive));\n });\n }\n\n private handleTabClick = (key: string) => {\n this.activeTab = key;\n this.modelValue = key;\n this.hbTabChange.emit(key);\n this.updatePaneVisibility();\n this.moveFocusToTab(key);\n };\n\n /** WAI-ARIA tabs:左右(横排)/上下(竖排)箭头在 tab 间切换聚焦的 tab。 */\n private handleTabKeydown = (e: KeyboardEvent, currentIndex: number) => {\n // 仅响应方向键 / Home / End;Enter/Space 由浏览器对可聚焦元素原生触发 click。\n const isArrow =\n e.key === 'ArrowLeft' || e.key === 'ArrowRight' || e.key === 'ArrowUp' || e.key === 'ArrowDown' ||\n e.key === 'Home' || e.key === 'End';\n if (!isArrow) return;\n e.preventDefault();\n const action = handleListKeyboard(e, {\n activeIndex: currentIndex,\n itemCount: this.tabs.length,\n loop: true,\n });\n if (action.type === 'navigate' && this.tabs[action.index]) {\n this.handleTabClick(this.tabs[action.index].key);\n }\n };\n\n private moveFocusToTab(key: string) {\n const idx = this.tabs.findIndex((t) => t.key === key);\n if (idx < 0) return;\n const items = this.el.shadowRoot?.querySelectorAll<HTMLElement>('.hb-tabs__item');\n items?.[idx]?.focus();\n }\n\n render() {\n return (\n <div class={{ 'hb-tabs': true, [`hb-tabs--${this.type}`]: true }}>\n <div class=\"hb-tabs__header\">\n <div class=\"hb-tabs__nav\" role=\"tablist\">\n {this.tabs.map((tab, index) => {\n const selected = tab.key === this.activeTab;\n const tabId = `hb-tabs__tab-${tab.key}`;\n return (\n <div\n class={{\n 'hb-tabs__item': true,\n 'hb-tabs__item--active': selected,\n }}\n role=\"tab\"\n id={tabId}\n aria-selected={selected ? 'true' : 'false'}\n tabindex={selected ? 0 : -1}\n aria-controls={`hb-tabs__panel-${tab.key}`}\n onClick={() => this.handleTabClick(tab.key)}\n onKeyDown={(e) => this.handleTabKeydown(e, index)}\n >\n <span class=\"hb-tabs__item-label\">{tab.label}</span>\n {this.closable && (\n <span\n class=\"hb-tabs__item-close\"\n role=\"button\"\n aria-label=\"关闭标签\"\n tabIndex={-1}\n onClick={(e) => {\n e.stopPropagation();\n this.hbTabRemove.emit(tab.key);\n }}\n >\n ×\n </span>\n )}\n </div>\n );\n })}\n </div>\n </div>\n <div class=\"hb-tabs__content\">\n <slot />\n </div>\n </div>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["menuCss","HbMenuStyle0","Menu","mode","defaultActive","collapsed","backgroundColor","textColor","activeTextColor","activeItem","hbSelect","componentDidLoad","this","syncCollapsedToChildren","handleDefaultActiveChange","handleCollapsedChange","el","querySelectorAll","forEach","sub","setAttribute","handleSelect","event","key","detail","emit","item","getAttribute","render","style","h","class","role"],"sources":["src/components/Menu/menu.css?tag=hb-menu&encapsulation=shadow","src/components/Menu/Menu.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n.hb-menu {\n list-style: none;\n margin: 0;\n padding: 4px 0;\n background-color: var(--hb-menu-bg, var(--hb-color-bg-container));\n color: var(--hb-menu-color, var(--hb-color-text));\n font-size: var(--hb-font-size-sm);\n border-right: 1px solid var(--hb-color-border-secondary);\n box-sizing: border-box;\n}\n\n/* ---- 水平模式 ---- */\n.hb-menu--horizontal {\n display: flex;\n border-right: none;\n border-bottom: 1px solid var(--hb-color-border-secondary);\n}\n\n/* ---- 折叠 ---- */\n.hb-menu--collapsed {\n width: 64px;\n}\n.hb-menu--collapsed .hb-menu-item__text,\n.hb-menu--collapsed .hb-sub-menu__label,\n.hb-menu--collapsed .hb-sub-menu__arrow {\n display: none;\n}\n\n/* 折叠态 SubMenu:图标条布局(仅显示 icon),不再就地展开 */\n.hb-sub-menu--collapsed {\n position: relative;\n}\n.hb-sub-menu--collapsed .hb-sub-menu__title {\n justify-content: center;\n padding: 0;\n}\n\n/* 折叠态浮层:绝对定位弹出在右侧 */\n.hb-sub-menu__children--popover {\n position: absolute;\n left: 100%;\n top: 0;\n margin-left: 4px;\n min-width: 160px;\n padding: 4px 0;\n background-color: var(--hb-menu-bg, var(--hb-color-bg-container));\n border: 1px solid var(--hb-color-border-secondary);\n border-radius: var(--hb-radius-sm, 4px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);\n z-index: 1000;\n white-space: nowrap;\n}\n\n/* 折叠态浮层内的 MenuItem 取消就地展开时的缩进 */\n.hb-sub-menu__children--popover .hb-menu-item {\n padding-left: var(--hb-spacing-md);\n}\n\n/* ---- MenuItem ---- */\n::slotted(hb-menu-item) {\n display: block;\n}\n\n.hb-menu-item {\n display: flex;\n align-items: center;\n gap: var(--hb-spacing-xs);\n padding: 0 var(--hb-spacing-md);\n height: var(--hb-size-default);\n line-height: var(--hb-size-default);\n cursor: pointer;\n transition: all var(--hb-transition-duration) var(--hb-transition-function);\n white-space: nowrap;\n list-style: none;\n box-sizing: border-box;\n}\n\n.hb-menu-item:hover:not(.hb-menu-item--disabled) {\n background-color: var(--hb-menu-item-hover-bg, var(--hb-color-fill-tertiary));\n}\n\n.hb-menu-item--active {\n color: var(--hb-menu-active-color, var(--hb-color-primary));\n background-color: var(--hb-menu-item-active-bg, var(--hb-color-primary-bg));\n}\n\n.hb-menu-item--disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.hb-menu-item__icon {\n display: inline-flex;\n width: 16px;\n}\n\n/* ---- SubMenu ---- */\n.hb-sub-menu {\n list-style: none;\n}\n\n.hb-sub-menu__title {\n display: flex;\n align-items: center;\n gap: var(--hb-spacing-xs);\n padding: 0 var(--hb-spacing-md);\n height: var(--hb-size-default);\n line-height: var(--hb-size-default);\n cursor: pointer;\n transition: all var(--hb-transition-duration);\n}\n\n.hb-sub-menu__title:hover {\n background-color: var(--hb-menu-item-hover-bg, var(--hb-color-fill-tertiary));\n}\n\n.hb-sub-menu__label {\n flex: 1;\n}\n\n.hb-sub-menu__arrow {\n font-size: 10px;\n transition: transform var(--hb-transition-duration);\n}\n\n.hb-sub-menu__arrow--open {\n transform: rotate(90deg);\n}\n\n.hb-sub-menu__children {\n list-style: none;\n margin: 0;\n padding: 0;\n background-color: var(--hb-menu-bg, var(--hb-color-bg-container));\n}\n\n.hb-sub-menu__children .hb-menu-item {\n padding-left: calc(var(--hb-spacing-md) + var(--hb-spacing-lg));\n}\n","import { Component, h, Prop, State, Element, Watch, Event, EventEmitter, Listen } from '@stencil/core';\n\n/**\n * Menu 导航菜单组件\n * 为页面和功能提供导航的菜单\n */\n@Component({\n tag: 'hb-menu',\n styleUrl: 'menu.css',\n shadow: true,\n})\nexport class Menu {\n @Element() el: HTMLElement;\n\n /** 模式 */\n @Prop() mode: 'horizontal' | 'vertical' = 'vertical';\n\n /** 当前激活菜单项 */\n @Prop({ mutable: true }) defaultActive: string = '';\n\n /** 是否折叠(仅垂直模式) */\n @Prop() collapsed: boolean = false;\n\n /** 背景色 */\n @Prop() backgroundColor?: string;\n\n /** 文字颜色 */\n @Prop() textColor?: string;\n\n /** 激活项文字颜色 */\n @Prop() activeTextColor?: string;\n\n @State() activeItem: string = '';\n\n /** 选中事件 */\n @Event() hbSelect: EventEmitter<string>;\n\n componentDidLoad() {\n this.activeItem = this.defaultActive;\n // 折叠态透传给子 hb-sub-menu(子组件无法继承 prop,需在 host 属性层面同步)\n this.syncCollapsedToChildren();\n }\n\n @Watch('defaultActive')\n handleDefaultActiveChange() {\n this.activeItem = this.defaultActive;\n }\n\n @Watch('collapsed')\n handleCollapsedChange() {\n this.syncCollapsedToChildren();\n }\n\n /**\n * 把 collapsed 状态同步到所有直连与嵌套的 hb-sub-menu 子节点。\n * querySelectorAll 递归匹配,因此 hb-sub-menu > hb-sub-menu(多级)也会被覆盖。\n */\n private syncCollapsedToChildren() {\n if (!this.el) return;\n this.el.querySelectorAll('hb-sub-menu').forEach((sub) => {\n sub.setAttribute('collapsed', this.collapsed ? 'true' : 'false');\n });\n }\n\n /** 监听子 hb-menu-item 派发的内部选中事件,更新激活态并向外发射公开的 hbSelect */\n @Listen('hbMenuItemSelect')\n handleSelect(event: CustomEvent<string>) {\n const key = event.detail;\n this.activeItem = key;\n this.defaultActive = key;\n this.hbSelect.emit(key);\n // 通知子组件(含嵌套在 hb-sub-menu 内的 hb-menu-item)\n this.el.querySelectorAll('hb-menu-item').forEach((item) => {\n item.setAttribute('active', item.getAttribute('key') === key ? 'true' : 'false');\n });\n }\n\n render() {\n const style: Record<string, string> = {};\n if (this.backgroundColor) style['--hb-menu-bg'] = this.backgroundColor;\n if (this.textColor) style['--hb-menu-color'] = this.textColor;\n if (this.activeTextColor) style['--hb-menu-active-color'] = this.activeTextColor;\n\n return (\n <ul\n class={{\n 'hb-menu': true,\n [`hb-menu--${this.mode}`]: true,\n 'hb-menu--collapsed': this.collapsed,\n }}\n style={style}\n role=\"menu\"\n >\n <slot />\n </ul>\n );\n }\n}\n"],"mappings":"yDAAA,MAAMA,EAAU,wkQAChB,MAAAC,EAAeD,E,MCUFE,EAAI,M,oFAIPC,KAAkC,WAGjBC,cAAwB,GAGzCC,UAAqB,MAGrBC,gBAGAC,UAGAC,gBAECC,WAAqB,GAGrBC,SAET,gBAAAC,GACEC,KAAKH,WAAaG,KAAKR,cAEvBQ,KAAKC,yB,CAIP,yBAAAC,GACEF,KAAKH,WAAaG,KAAKR,a,CAIzB,qBAAAW,GACEH,KAAKC,yB,CAOC,uBAAAA,GACN,IAAKD,KAAKI,GAAI,OACdJ,KAAKI,GAAGC,iBAAiB,eAAeC,SAASC,IAC/CA,EAAIC,aAAa,YAAaR,KAAKP,UAAY,OAAS,QAAQ,G,CAMpE,YAAAgB,CAAaC,GACX,MAAMC,EAAMD,EAAME,OAClBZ,KAAKH,WAAac,EAClBX,KAAKR,cAAgBmB,EACrBX,KAAKF,SAASe,KAAKF,GAEnBX,KAAKI,GAAGC,iBAAiB,gBAAgBC,SAASQ,IAChDA,EAAKN,aAAa,SAAUM,EAAKC,aAAa,SAAWJ,EAAM,OAAS,QAAQ,G,CAIpF,MAAAK,GACE,MAAMC,EAAgC,GACtC,GAAIjB,KAAKN,gBAAiBuB,EAAM,gBAAkBjB,KAAKN,gBACvD,GAAIM,KAAKL,UAAWsB,EAAM,mBAAqBjB,KAAKL,UACpD,GAAIK,KAAKJ,gBAAiBqB,EAAM,0BAA4BjB,KAAKJ,gBAEjE,OACEsB,EAAA,MAAAP,IAAA,2CACEQ,MAAO,CACL,UAAW,KACX,CAAC,YAAYnB,KAAKT,QAAS,KAC3B,qBAAsBS,KAAKP,WAE7BwB,MAAOA,EACPG,KAAK,QAELF,EAAA,QAAAP,IAAA,6C","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import{r as t,c as e,h as o}from"./p-e42dfa95.js";const a='/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:host,:root{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,::backdrop,:after,:before{border:0 solid;box-sizing:border-box;margin:0;padding:0}::file-selector-button{appearance:button;background-color:#0000;border:0 solid;border-radius:0;box-sizing:border-box;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;margin:0;margin-inline-end:4px;opacity:1;padding:0}:host,html{-webkit-text-size-adjust:100%;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);line-height:1.5;tab-size:4;-webkit-tap-highlight-color:transparent}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-size:1em;font-variation-settings:var(--default-mono-font-variation-settings,normal)}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}button,input,optgroup,select,textarea{background-color:#0000;border-radius:0;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex;padding-block:0}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}} /*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer components;:host{display:inline-block}.hb-tag{border:1px solid #0000;border-radius:var(--hb-tag-radius);box-sizing:border-box;font-size:var(--hb-font-size-xs);gap:var(--hb-spacing-xxs);height:22px;line-height:1;padding:0 var(--hb-spacing-xs);vertical-align:middle;white-space:nowrap}.hb-tag,.hb-tag__close,.hb-tag__content{align-items:center;display:inline-flex}.hb-tag__close{border-radius:50%;cursor:pointer;font-size:12px;height:14px;justify-content:center;line-height:1;transition:background-color var(--hb-transition-duration);width:14px}.hb-tag__close:hover{background-color:#0000001a}.hb-tag--small{font-size:11px;height:18px;padding:0 6px}.hb-tag--large{font-size:var(--hb-font-size-sm);height:28px;padding:0 var(--hb-spacing-sm)}.hb-tag--round{border-radius:999px}.hb-tag--default.hb-tag--light{background:var(--hb-tag-default-bg);color:var(--hb-tag-default-color)}.hb-tag--primary.hb-tag--light{background:var(--hb-tag-primary-bg);color:var(--hb-tag-primary-color)}.hb-tag--success.hb-tag--light{background:var(--hb-tag-success-bg);color:var(--hb-tag-success-color)}.hb-tag--warning.hb-tag--light{background:var(--hb-tag-warning-bg);color:var(--hb-tag-warning-color)}.hb-tag--danger.hb-tag--light{background:var(--hb-tag-danger-bg);color:var(--hb-tag-danger-color)}.hb-tag--info.hb-tag--light{background:var(--hb-tag-primary-bg);color:var(--hb-tag-primary-color)}.hb-tag--default.hb-tag--dark{background:var(--hb-color-text-quaternary);color:#fff}.hb-tag--primary.hb-tag--dark{background:var(--hb-color-primary);color:#fff}.hb-tag--success.hb-tag--dark{background:var(--hb-color-success);color:#fff}.hb-tag--warning.hb-tag--dark{background:var(--hb-color-warning);color:#fff}.hb-tag--danger.hb-tag--dark{background:var(--hb-color-danger);color:#fff}.hb-tag--info.hb-tag--dark{background:var(--hb-color-info);color:#fff}.hb-tag--default.hb-tag--plain{background:#fff;border-color:var(--hb-color-border);color:var(--hb-color-text)}.hb-tag--primary.hb-tag--plain{background:#fff;border-color:var(--hb-color-primary-border);color:var(--hb-color-primary)}.hb-tag--success.hb-tag--plain{background:#fff;border-color:var(--hb-color-success-border);color:var(--hb-color-success)}.hb-tag--warning.hb-tag--plain{background:#fff;border-color:var(--hb-color-warning-border);color:var(--hb-color-warning)}.hb-tag--danger.hb-tag--plain{background:#fff;border-color:var(--hb-color-danger-border);color:var(--hb-color-danger)}.hb-tag--info.hb-tag--plain{background:#fff;border-color:var(--hb-color-primary-border);color:var(--hb-color-primary)}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}';const r=a;const i=class{constructor(o){t(this,o);this.hbClose=e(this,"hbClose",7)}type="default";closable=false;effect="light";round=false;size="default";hbClose;handleClose=t=>{t.stopPropagation();this.hbClose.emit()};render(){return o("span",{key:"e8663d8679aafe8d0838e5bc247ce0023fd64234",class:{"hb-tag":true,[`hb-tag--${this.type}`]:true,[`hb-tag--${this.effect}`]:true,"hb-tag--round":this.round,[`hb-tag--${this.size}`]:true}},o("span",{key:"fb6d35fb1a76eac78bee548c74d0fb4aff560c28",class:"hb-tag__content"},o("slot",{key:"450089e1e654bc339d6f99b8d763491277fc2b0e"})),this.closable&&o("span",{key:"8c115976d98f2242543f208d054cd2493b94373a",class:"hb-tag__close",role:"button","aria-label":"移除标签",tabIndex:0,onClick:this.handleClose},"×"))}};i.style=r;export{i as hb_tag};
2
- //# sourceMappingURL=p-dd05cb2c.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["tagCss","HbTagStyle0","Tag","type","closable","effect","round","size","hbClose","handleClose","e","stopPropagation","this","emit","render","h","key","class","role","tabIndex","onClick"],"sources":["src/components/Tag/tag.css?tag=hb-tag&encapsulation=shadow","src/components/Tag/Tag.tsx"],"sourcesContent":[":host {\n display: inline-block;\n}\n\n.hb-tag {\n display: inline-flex;\n align-items: center;\n gap: var(--hb-spacing-xxs);\n padding: 0 var(--hb-spacing-xs);\n height: 22px;\n font-size: var(--hb-font-size-xs);\n line-height: 1;\n border-radius: var(--hb-tag-radius);\n border: 1px solid transparent;\n box-sizing: border-box;\n white-space: nowrap;\n vertical-align: middle;\n}\n\n.hb-tag__content {\n display: inline-flex;\n align-items: center;\n}\n\n.hb-tag__close {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 14px;\n height: 14px;\n border-radius: 50%;\n cursor: pointer;\n font-size: 12px;\n line-height: 1;\n transition: background-color var(--hb-transition-duration);\n}\n\n.hb-tag__close:hover {\n background-color: rgba(0, 0, 0, 0.1);\n}\n\n/* ---- 尺寸 ---- */\n.hb-tag--small { height: 18px; font-size: 11px; padding: 0 6px; }\n.hb-tag--large { height: 28px; font-size: var(--hb-font-size-sm); padding: 0 var(--hb-spacing-sm); }\n\n/* ---- 圆角 ---- */\n.hb-tag--round { border-radius: 999px; }\n\n/* ---- 类型:light(默认) ---- */\n.hb-tag--default.hb-tag--light { background: var(--hb-tag-default-bg); color: var(--hb-tag-default-color); }\n.hb-tag--primary.hb-tag--light { background: var(--hb-tag-primary-bg); color: var(--hb-tag-primary-color); }\n.hb-tag--success.hb-tag--light { background: var(--hb-tag-success-bg); color: var(--hb-tag-success-color); }\n.hb-tag--warning.hb-tag--light { background: var(--hb-tag-warning-bg); color: var(--hb-tag-warning-color); }\n.hb-tag--danger.hb-tag--light { background: var(--hb-tag-danger-bg); color: var(--hb-tag-danger-color); }\n.hb-tag--info.hb-tag--light { background: var(--hb-tag-primary-bg); color: var(--hb-tag-primary-color); }\n\n/* ---- 类型:dark ---- */\n.hb-tag--default.hb-tag--dark { background: var(--hb-color-text-quaternary); color: #fff; }\n.hb-tag--primary.hb-tag--dark { background: var(--hb-color-primary); color: #fff; }\n.hb-tag--success.hb-tag--dark { background: var(--hb-color-success); color: #fff; }\n.hb-tag--warning.hb-tag--dark { background: var(--hb-color-warning); color: #fff; }\n.hb-tag--danger.hb-tag--dark { background: var(--hb-color-danger); color: #fff; }\n.hb-tag--info.hb-tag--dark { background: var(--hb-color-info); color: #fff; }\n\n/* ---- 类型:plain ---- */\n.hb-tag--default.hb-tag--plain { background: #fff; color: var(--hb-color-text); border-color: var(--hb-color-border); }\n.hb-tag--primary.hb-tag--plain { background: #fff; color: var(--hb-color-primary); border-color: var(--hb-color-primary-border); }\n.hb-tag--success.hb-tag--plain { background: #fff; color: var(--hb-color-success); border-color: var(--hb-color-success-border); }\n.hb-tag--warning.hb-tag--plain { background: #fff; color: var(--hb-color-warning); border-color: var(--hb-color-warning-border); }\n.hb-tag--danger.hb-tag--plain { background: #fff; color: var(--hb-color-danger); border-color: var(--hb-color-danger-border); }\n.hb-tag--info.hb-tag--plain { background: #fff; color: var(--hb-color-primary); border-color: var(--hb-color-primary-border); }\n","import { Component, h, Prop, Event, EventEmitter } from '@stencil/core';\n\n/**\n * Tag 标签组件\n * 用于标记和选择\n */\n@Component({\n tag: 'hb-tag',\n styleUrl: 'tag.css',\n shadow: true,\n})\nexport class Tag {\n /** 标签类型 */\n @Prop() type: 'primary' | 'success' | 'warning' | 'danger' | 'info' | 'default' = 'default';\n\n /** 是否可关闭 */\n @Prop() closable: boolean = false;\n\n /** 主题效果 */\n @Prop() effect: 'dark' | 'light' | 'plain' = 'light';\n\n /** 是否圆角 */\n @Prop() round: boolean = false;\n\n /** 标签尺寸 */\n @Prop() size: 'small' | 'default' | 'large' = 'default';\n\n /** 关闭事件 */\n @Event() hbClose: EventEmitter<void>;\n\n private handleClose = (e: Event) => {\n e.stopPropagation();\n this.hbClose.emit();\n };\n\n render() {\n return (\n <span\n class={{\n 'hb-tag': true,\n [`hb-tag--${this.type}`]: true,\n [`hb-tag--${this.effect}`]: true,\n 'hb-tag--round': this.round,\n [`hb-tag--${this.size}`]: true,\n }}\n >\n <span class=\"hb-tag__content\">\n <slot />\n </span>\n {this.closable && (\n <span class=\"hb-tag__close\" role=\"button\" aria-label=\"移除标签\" tabIndex={0} onClick={this.handleClose}>\n ×\n </span>\n )}\n </span>\n );\n }\n}\n"],"mappings":"kDAAA,MAAMA,EAAS,yhQACf,MAAAC,EAAeD,E,MCUFE,EAAG,M,0DAENC,KAA0E,UAG1EC,SAAoB,MAGpBC,OAAqC,QAGrCC,MAAiB,MAGjBC,KAAsC,UAGrCC,QAEDC,YAAeC,IACrBA,EAAEC,kBACFC,KAAKJ,QAAQK,MAAM,EAGrB,MAAAC,GACE,OACEC,EAAA,QAAAC,IAAA,2CACEC,MAAO,CACL,SAAU,KACV,CAAC,WAAWL,KAAKT,QAAS,KAC1B,CAAC,WAAWS,KAAKP,UAAW,KAC5B,gBAAiBO,KAAKN,MACtB,CAAC,WAAWM,KAAKL,QAAS,OAG5BQ,EAAA,QAAAC,IAAA,2CAAMC,MAAM,mBACVF,EAAA,QAAAC,IAAA,8CAEDJ,KAAKR,UACJW,EAAA,QAAAC,IAAA,2CAAMC,MAAM,gBAAgBC,KAAK,SAAQ,aAAY,OAAOC,SAAU,EAAGC,QAASR,KAAKH,aAAW,K","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["checkboxCss","HbCheckboxStyle0","Checkbox","modelValue","value","disabled","checked","indeterminate","name","checkboxId","label","border","size","hbChange","isChecked","handleValueChange","this","updateChecked","componentDidLoad","undefined","Array","isArray","includes","handleChange","e","target","preventDefault","newValue","filter","v","emit","render","inputId","Math","random","toString","substr","h","key","class","type","id","onChange"],"sources":["src/components/Checkbox/checkbox.css?tag=hb-checkbox&encapsulation=shadow","src/components/Checkbox/Checkbox.tsx"],"sourcesContent":[":host {\n display: inline-block;\n --hb-checkbox-font-size: 14px;\n --hb-checkbox-font-size-large: 16px;\n --hb-checkbox-font-size-small: 12px;\n --hb-checkbox-color: var(--hb-color-primary);\n --hb-checkbox-border-color: var(--hb-border-color, #dcdfe6);\n --hb-checkbox-border-color-checked: var(--hb-color-primary);\n --hb-checkbox-bg-color: var(--hb-color-white, #ffffff);\n --hb-checkbox-text-color: var(--hb-color-text-regular, #606266);\n --hb-checkbox-disabled-color: var(--hb-color-text-placeholder, #c0c4cc);\n --hb-checkbox-disabled-bg-color: var(--hb-fill-color-light, #f5f7fa);\n}\n\n.hb-checkbox {\n color: var(--hb-checkbox-text-color);\n font-weight: 500;\n font-size: var(--hb-checkbox-font-size);\n position: relative;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n white-space: nowrap;\n user-select: none;\n margin-right: 30px;\n}\n\n.hb-checkbox:last-child {\n margin-right: 0;\n}\n\n.hb-checkbox__input {\n white-space: nowrap;\n cursor: pointer;\n outline: none;\n display: inline-flex;\n position: relative;\n vertical-align: middle;\n}\n\n.hb-checkbox__original {\n opacity: 0;\n outline: none;\n position: absolute;\n margin: 0;\n width: 0;\n height: 0;\n z-index: -1;\n}\n\n.hb-checkbox__inner {\n display: inline-block;\n position: relative;\n border: var(--hb-border, 1px solid var(--hb-checkbox-border-color));\n border-radius: 2px;\n box-sizing: border-box;\n width: 14px;\n height: 14px;\n background-color: var(--hb-checkbox-bg-color);\n z-index: 1;\n transition: border-color 0.25s cubic-bezier(0.71, -0.46, 0.29, 1.46),\n background-color 0.25s cubic-bezier(0.71, -0.46, 0.29, 1.46);\n}\n\n.hb-checkbox__inner::after {\n box-sizing: content-box;\n content: '';\n border: 2px solid var(--hb-color-white, #ffffff);\n border-left: 0;\n border-top: 0;\n height: 7px;\n left: 4px;\n position: absolute;\n top: 1px;\n transform: rotate(45deg) scaleY(0);\n width: 3px;\n transition: transform 0.15s ease-in 0.05s;\n transform-origin: center;\n}\n\n.hb-checkbox--checked .hb-checkbox__inner {\n background-color: var(--hb-checkbox-color);\n border-color: var(--hb-checkbox-border-color-checked);\n}\n\n.hb-checkbox--checked .hb-checkbox__inner::after {\n transform: rotate(45deg) scaleY(1);\n}\n\n.hb-checkbox__inner--indeterminate {\n background-color: var(--hb-checkbox-color);\n border-color: var(--hb-checkbox-border-color-checked);\n}\n\n.hb-checkbox__inner--indeterminate::after {\n content: '';\n position: absolute;\n display: block;\n background-color: var(--hb-color-white, #ffffff);\n height: 2px;\n transform: scaleX(0.5);\n left: 0;\n right: 0;\n top: 5px;\n}\n\n.hb-checkbox__label {\n padding-left: 8px;\n line-height: 1;\n font-size: var(--hb-checkbox-font-size);\n}\n\n.hb-checkbox--disabled {\n cursor: not-allowed;\n}\n\n.hb-checkbox--disabled .hb-checkbox__inner {\n background-color: var(--hb-checkbox-disabled-bg-color);\n border-color: var(--hb-checkbox-border-color);\n cursor: not-allowed;\n}\n\n.hb-checkbox--disabled .hb-checkbox__inner::after {\n cursor: not-allowed;\n border-color: var(--hb-checkbox-disabled-color);\n}\n\n.hb-checkbox--disabled .hb-checkbox__label {\n color: var(--hb-checkbox-disabled-color);\n cursor: not-allowed;\n}\n\n.hb-checkbox--border {\n padding: 9px 15px 9px 9px;\n border-radius: 4px;\n border: 1px solid var(--hb-checkbox-border-color);\n box-sizing: border-box;\n white-space: nowrap;\n}\n\n.hb-checkbox--border.hb-checkbox--checked {\n border-color: var(--hb-checkbox-border-color-checked);\n}\n\n.hb-checkbox--border.hb-checkbox--disabled {\n border-color: var(--hb-checkbox-border-color);\n cursor: not-allowed;\n}\n\n.hb-checkbox--small {\n font-size: var(--hb-checkbox-font-size-small);\n}\n\n.hb-checkbox--small .hb-checkbox__inner {\n width: 12px;\n height: 12px;\n}\n\n.hb-checkbox--small .hb-checkbox__label {\n padding-left: 6px;\n}\n\n.hb-checkbox--large {\n font-size: var(--hb-checkbox-font-size-large);\n}\n\n.hb-checkbox--large .hb-checkbox__inner {\n width: 16px;\n height: 16px;\n}\n\n.hb-checkbox--large .hb-checkbox__label {\n padding-left: 10px;\n}\n\n.hb-checkbox:hover:not(.hb-checkbox--disabled) .hb-checkbox__inner {\n border-color: var(--hb-checkbox-border-color-checked);\n}\n\n","import { Component, h, Prop, Event, EventEmitter, State, Watch } from '@stencil/core';\n\nexport interface CheckboxOption {\n label: string;\n value: string | number;\n disabled?: boolean;\n}\n\n/**\n * Checkbox 多选框组件\n * 一组备选项中进行多选\n */\n@Component({\n tag: 'hb-checkbox',\n styleUrl: 'checkbox.css',\n shadow: true,\n})\nexport class Checkbox {\n /**\n * 绑定值\n */\n @Prop({ mutable: true }) modelValue: boolean | (string | number)[] = false;\n\n /**\n * 当前值(用于单个 checkbox)\n */\n @Prop() value?: string | number;\n\n /**\n * 是否禁用\n * @default false\n */\n @Prop() disabled: boolean = false;\n\n /**\n * 是否选中\n * @default false\n */\n @Prop() checked: boolean = false;\n\n /**\n * 是否不确定状态\n * @default false\n */\n @Prop() indeterminate: boolean = false;\n\n /**\n * 原生 name 属性\n */\n @Prop() name?: string;\n\n /**\n * 原生 id 属性\n */\n @Prop() checkboxId?: string;\n\n /**\n * 文本标签\n */\n @Prop() label?: string;\n\n /**\n * 是否显示边框\n * @default false\n */\n @Prop() border: boolean = false;\n\n /**\n * 尺寸\n */\n @Prop() size: 'large' | 'default' | 'small' = 'default';\n\n /**\n * 值改变事件\n */\n @Event() hbChange: EventEmitter<boolean | (string | number)[]>;\n\n @State() isChecked: boolean = false;\n\n @Watch('modelValue')\n @Watch('checked')\n @Watch('value')\n handleValueChange() {\n this.updateChecked();\n }\n\n componentDidLoad() {\n this.updateChecked();\n }\n\n private updateChecked() {\n if (this.value !== undefined) {\n // 在 checkbox group 中\n const modelValue = this.modelValue as (string | number)[];\n this.isChecked = Array.isArray(modelValue) && modelValue.includes(this.value);\n } else {\n // 单个 checkbox\n this.isChecked = this.checked || (this.modelValue as boolean);\n }\n }\n\n private handleChange = (e: Event) => {\n const target = e.target as HTMLInputElement;\n \n if (this.disabled) {\n e.preventDefault();\n return;\n }\n\n if (this.value !== undefined) {\n // 在 checkbox group 中\n const modelValue = (this.modelValue as (string | number)[]) || [];\n let newValue: (string | number)[];\n \n if (target.checked) {\n newValue = [...modelValue, this.value];\n } else {\n newValue = modelValue.filter(v => v !== this.value);\n }\n \n this.modelValue = newValue;\n this.hbChange.emit(newValue);\n } else {\n // 单个 checkbox\n this.modelValue = target.checked;\n this.isChecked = target.checked;\n this.hbChange.emit(target.checked);\n }\n };\n\n render() {\n const inputId = this.checkboxId || `hb-checkbox-${Math.random().toString(36).substr(2, 9)}`;\n \n return (\n <label\n class={{\n 'hb-checkbox': true,\n 'hb-checkbox--checked': this.isChecked,\n 'hb-checkbox--disabled': this.disabled,\n 'hb-checkbox--border': this.border,\n [`hb-checkbox--${this.size}`]: true,\n }}\n >\n <span class=\"hb-checkbox__input\">\n <input\n type=\"checkbox\"\n id={inputId}\n name={this.name}\n checked={this.isChecked}\n disabled={this.disabled}\n indeterminate={this.indeterminate}\n onChange={this.handleChange}\n class=\"hb-checkbox__original\"\n />\n <span\n class={{\n 'hb-checkbox__inner': true,\n 'hb-checkbox__inner--indeterminate': this.indeterminate,\n }}\n ></span>\n </span>\n {(this.label || this.value !== undefined) && (\n <span class=\"hb-checkbox__label\">\n <slot>{this.label || this.value}</slot>\n </span>\n )}\n </label>\n );\n }\n}\n\n"],"mappings":"kDAAA,MAAMA,EAAc,ytSACpB,MAAAC,EAAeD,E,MCgBFE,EAAQ,M,4DAIMC,WAA4C,MAK7DC,MAMAC,SAAoB,MAMpBC,QAAmB,MAMnBC,cAAyB,MAKzBC,KAKAC,WAKAC,MAMAC,OAAkB,MAKlBC,KAAsC,UAKrCC,SAEAC,UAAqB,MAK9B,iBAAAC,GACEC,KAAKC,e,CAGP,gBAAAC,GACEF,KAAKC,e,CAGC,aAAAA,GACN,GAAID,KAAKZ,QAAUe,UAAW,CAE5B,MAAMhB,EAAaa,KAAKb,WACxBa,KAAKF,UAAYM,MAAMC,QAAQlB,IAAeA,EAAWmB,SAASN,KAAKZ,M,KAClE,CAELY,KAAKF,UAAYE,KAAKV,SAAYU,KAAKb,U,EAInCoB,aAAgBC,IACtB,MAAMC,EAASD,EAAEC,OAEjB,GAAIT,KAAKX,SAAU,CACjBmB,EAAEE,iBACF,M,CAGF,GAAIV,KAAKZ,QAAUe,UAAW,CAE5B,MAAMhB,EAAca,KAAKb,YAAsC,GAC/D,IAAIwB,EAEJ,GAAIF,EAAOnB,QAAS,CAClBqB,EAAW,IAAIxB,EAAYa,KAAKZ,M,KAC3B,CACLuB,EAAWxB,EAAWyB,QAAOC,GAAKA,IAAMb,KAAKZ,O,CAG/CY,KAAKb,WAAawB,EAClBX,KAAKH,SAASiB,KAAKH,E,KACd,CAELX,KAAKb,WAAasB,EAAOnB,QACzBU,KAAKF,UAAYW,EAAOnB,QACxBU,KAAKH,SAASiB,KAAKL,EAAOnB,Q,GAI9B,MAAAyB,GACE,MAAMC,EAAUhB,KAAKP,YAAc,eAAewB,KAAKC,SAASC,SAAS,IAAIC,OAAO,EAAG,KAEvF,OACEC,EAAA,SAAAC,IAAA,2CACEC,MAAO,CACL,cAAe,KACf,uBAAwBvB,KAAKF,UAC7B,wBAAyBE,KAAKX,SAC9B,sBAAuBW,KAAKL,OAC5B,CAAC,gBAAgBK,KAAKJ,QAAS,OAGjCyB,EAAA,QAAAC,IAAA,2CAAMC,MAAM,sBACVF,EAAA,SAAAC,IAAA,2CACEE,KAAK,WACLC,GAAIT,EACJxB,KAAMQ,KAAKR,KACXF,QAASU,KAAKF,UACdT,SAAUW,KAAKX,SACfE,cAAeS,KAAKT,cACpBmC,SAAU1B,KAAKO,aACfgB,MAAM,0BAERF,EAAA,QAAAC,IAAA,2CACEC,MAAO,CACL,qBAAsB,KACtB,oCAAqCvB,KAAKT,mBAI9CS,KAAKN,OAASM,KAAKZ,QAAUe,YAC7BkB,EAAA,QAAAC,IAAA,2CAAMC,MAAM,sBACVF,EAAA,QAAAC,IAAA,4CAAOtB,KAAKN,OAASM,KAAKZ,Q","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["checkboxGroupCss","HbCheckboxGroupStyle0","CheckboxGroup","modelValue","disabled","size","border","min","max","hbChange","checkboxes","componentDidLoad","this","updateCheckboxes","handleValueChange","updateCheckboxesState","handlePropsChange","Array","from","el","querySelectorAll","forEach","checkbox","addEventListener","handleCheckboxChange","value","undefined","isChecked","includes","filter","v","e","target","newValue","length","emit","render","h","key","class"],"sources":["src/components/Checkbox/checkbox-group.css?tag=hb-checkbox-group&encapsulation=shadow","src/components/Checkbox/CheckboxGroup.tsx"],"sourcesContent":[":host {\n display: inline-block;\n}\n\n.hb-checkbox-group {\n display: inline-block;\n font-size: 0;\n}\n\n::slotted(hb-checkbox) {\n margin-right: 30px;\n}\n\n::slotted(hb-checkbox:last-child) {\n margin-right: 0;\n}\n\n","import { Component, h, Prop, Event, EventEmitter, State, Watch, Element } from '@stencil/core';\n\n/**\n * CheckboxGroup 多选框组组件\n * 用于管理多个 checkbox\n */\n@Component({\n tag: 'hb-checkbox-group',\n styleUrl: 'checkbox-group.css',\n shadow: true,\n})\nexport class CheckboxGroup {\n @Element() el: HTMLElement;\n\n /**\n * 绑定值\n */\n @Prop({ mutable: true }) modelValue: (string | number)[] = [];\n\n /**\n * 是否禁用\n * @default false\n */\n @Prop() disabled: boolean = false;\n\n /**\n * 尺寸\n */\n @Prop() size: 'large' | 'default' | 'small' = 'default';\n\n /**\n * 是否显示边框\n * @default false\n */\n @Prop() border: boolean = false;\n\n /**\n * 最小选中数量\n */\n @Prop() min?: number;\n\n /**\n * 最大选中数量\n */\n @Prop() max?: number;\n\n /**\n * 值改变事件\n */\n @Event() hbChange: EventEmitter<(string | number)[]>;\n\n @State() checkboxes: HTMLHbCheckboxElement[] = [];\n\n componentDidLoad() {\n this.updateCheckboxes();\n }\n\n @Watch('modelValue')\n handleValueChange() {\n this.updateCheckboxesState();\n }\n\n @Watch('disabled')\n @Watch('size')\n @Watch('border')\n handlePropsChange() {\n this.updateCheckboxes();\n }\n\n private updateCheckboxes() {\n const checkboxes = Array.from(\n this.el.querySelectorAll('hb-checkbox')\n ) as HTMLHbCheckboxElement[];\n\n this.checkboxes = checkboxes;\n\n checkboxes.forEach((checkbox) => {\n checkbox.disabled = this.disabled || checkbox.disabled;\n checkbox.size = this.size;\n checkbox.border = this.border;\n \n // 监听checkbox变化\n checkbox.addEventListener('hbChange', this.handleCheckboxChange);\n });\n\n this.updateCheckboxesState();\n }\n\n private updateCheckboxesState() {\n this.checkboxes.forEach((checkbox) => {\n if (checkbox.value !== undefined) {\n const isChecked = this.modelValue.includes(checkbox.value);\n checkbox.modelValue = isChecked\n ? [...this.modelValue]\n : this.modelValue.filter((v) => v !== checkbox.value);\n }\n });\n }\n\n private handleCheckboxChange = (e: CustomEvent) => {\n const checkbox = e.target as HTMLHbCheckboxElement;\n const value = checkbox.value;\n\n if (value === undefined) return;\n\n let newValue: (string | number)[];\n\n if (this.modelValue.includes(value)) {\n newValue = this.modelValue.filter((v) => v !== value);\n // 取消选中后不能低于最小数量\n if (this.min !== undefined && newValue.length < this.min) {\n return;\n }\n } else {\n // 选中后不能超过最大数量\n if (this.max !== undefined && this.modelValue.length >= this.max) {\n return;\n }\n newValue = [...this.modelValue, value];\n }\n\n this.modelValue = newValue;\n this.hbChange.emit(newValue);\n };\n\n render() {\n return (\n <div\n class={{\n 'hb-checkbox-group': true,\n }}\n >\n <slot></slot>\n </div>\n );\n }\n}\n\n"],"mappings":"yDAAA,MAAMA,EAAmB,k4LACzB,MAAAC,EAAeD,E,MCUFE,EAAa,M,oFAMCC,WAAkC,GAMnDC,SAAoB,MAKpBC,KAAsC,UAMtCC,OAAkB,MAKlBC,IAKAC,IAKCC,SAEAC,WAAsC,GAE/C,gBAAAC,GACEC,KAAKC,kB,CAIP,iBAAAC,GACEF,KAAKG,uB,CAMP,iBAAAC,GACEJ,KAAKC,kB,CAGC,gBAAAA,GACN,MAAMH,EAAaO,MAAMC,KACvBN,KAAKO,GAAGC,iBAAiB,gBAG3BR,KAAKF,WAAaA,EAElBA,EAAWW,SAASC,IAClBA,EAASlB,SAAWQ,KAAKR,UAAYkB,EAASlB,SAC9CkB,EAASjB,KAAOO,KAAKP,KACrBiB,EAAShB,OAASM,KAAKN,OAGvBgB,EAASC,iBAAiB,WAAYX,KAAKY,qBAAqB,IAGlEZ,KAAKG,uB,CAGC,qBAAAA,GACNH,KAAKF,WAAWW,SAASC,IACvB,GAAIA,EAASG,QAAUC,UAAW,CAChC,MAAMC,EAAYf,KAAKT,WAAWyB,SAASN,EAASG,OACpDH,EAASnB,WAAawB,EAClB,IAAIf,KAAKT,YACTS,KAAKT,WAAW0B,QAAQC,GAAMA,IAAMR,EAASG,O,KAK/CD,qBAAwBO,IAC9B,MAAMT,EAAWS,EAAEC,OACnB,MAAMP,EAAQH,EAASG,MAEvB,GAAIA,IAAUC,UAAW,OAEzB,IAAIO,EAEJ,GAAIrB,KAAKT,WAAWyB,SAASH,GAAQ,CACnCQ,EAAWrB,KAAKT,WAAW0B,QAAQC,GAAMA,IAAML,IAE/C,GAAIb,KAAKL,MAAQmB,WAAaO,EAASC,OAAStB,KAAKL,IAAK,CACxD,M,MAEG,CAEL,GAAIK,KAAKJ,MAAQkB,WAAad,KAAKT,WAAW+B,QAAUtB,KAAKJ,IAAK,CAChE,M,CAEFyB,EAAW,IAAIrB,KAAKT,WAAYsB,E,CAGlCb,KAAKT,WAAa8B,EAClBrB,KAAKH,SAAS0B,KAAKF,EAAS,EAG9B,MAAAG,GACE,OACEC,EAAA,OAAAC,IAAA,2CACEC,MAAO,CACL,oBAAqB,OAGvBF,EAAA,QAAAC,IAAA,6C","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import{r as t,h as e}from"./p-e42dfa95.js";const i='/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:host,:root{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,::backdrop,:after,:before{border:0 solid;box-sizing:border-box;margin:0;padding:0}::file-selector-button{appearance:button;background-color:#0000;border:0 solid;border-radius:0;box-sizing:border-box;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;margin:0;margin-inline-end:4px;opacity:1;padding:0}:host,html{-webkit-text-size-adjust:100%;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);line-height:1.5;tab-size:4;-webkit-tap-highlight-color:transparent}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-size:1em;font-variation-settings:var(--default-mono-font-variation-settings,normal)}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}button,input,optgroup,select,textarea{background-color:#0000;border-radius:0;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex;padding-block:0}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.flex{display:flex}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}} /*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer components;:host{display:block}.hb-col{box-sizing:border-box;position:relative;width:100%}.hb-col-1{width:4.16667%}.hb-col-2{width:8.33333%}.hb-col-3{width:12.5%}.hb-col-4{width:16.6667%}.hb-col-5{width:20.8333%}.hb-col-6{width:25%}.hb-col-7{width:29.1667%}.hb-col-8{width:33.3333%}.hb-col-9{width:37.5%}.hb-col-10{width:41.6667%}.hb-col-11{width:45.8333%}.hb-col-12{width:50%}.hb-col-13{width:54.1667%}.hb-col-14{width:58.3333%}.hb-col-15{width:62.5%}.hb-col-16{width:66.6667%}.hb-col-17{width:70.8333%}.hb-col-18{width:75%}.hb-col-19{width:79.1667%}.hb-col-20{width:83.3333%}.hb-col-21{width:87.5%}.hb-col-22{width:91.6667%}.hb-col-23{width:95.8333%}.hb-col-24{width:100%}.hb-col-offset-1{margin-left:4.16667%}.hb-col-offset-2{margin-left:8.33333%}.hb-col-offset-3{margin-left:12.5%}.hb-col-offset-4{margin-left:16.6667%}.hb-col-offset-5{margin-left:20.8333%}.hb-col-offset-6{margin-left:25%}.hb-col-offset-7{margin-left:29.1667%}.hb-col-offset-8{margin-left:33.3333%}.hb-col-offset-9{margin-left:37.5%}.hb-col-offset-10{margin-left:41.6667%}.hb-col-offset-11{margin-left:45.8333%}.hb-col-offset-12{margin-left:50%}.hb-col-offset-13{margin-left:54.1667%}.hb-col-offset-14{margin-left:58.3333%}.hb-col-offset-15{margin-left:62.5%}.hb-col-offset-16{margin-left:66.6667%}.hb-col-offset-17{margin-left:70.8333%}.hb-col-offset-18{margin-left:75%}.hb-col-offset-19{margin-left:79.1667%}.hb-col-offset-20{margin-left:83.3333%}.hb-col-offset-21{margin-left:87.5%}.hb-col-offset-22{margin-left:91.6667%}.hb-col-offset-23{margin-left:95.8333%}.hb-col-push-1{left:4.16667%}.hb-col-push-2{left:8.33333%}.hb-col-push-3{left:12.5%}.hb-col-push-4{left:16.6667%}.hb-col-push-5{left:20.8333%}.hb-col-push-6{left:25%}.hb-col-push-7{left:29.1667%}.hb-col-push-8{left:33.3333%}.hb-col-push-9{left:37.5%}.hb-col-push-10{left:41.6667%}.hb-col-push-11{left:45.8333%}.hb-col-push-12{left:50%}.hb-col-pull-1{right:4.16667%}.hb-col-pull-2{right:8.33333%}.hb-col-pull-3{right:12.5%}.hb-col-pull-4{right:16.6667%}.hb-col-pull-5{right:20.8333%}.hb-col-pull-6{right:25%}.hb-col-pull-7{right:29.1667%}.hb-col-pull-8{right:33.3333%}.hb-col-pull-9{right:37.5%}.hb-col-pull-10{right:41.6667%}.hb-col-pull-11{right:45.8333%}.hb-col-pull-12{right:50%}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}';const o=i;const l=class{constructor(e){t(this,e)}span=24;offset=0;push=0;pull=0;xs;sm;md;lg;xl;getColClass(){const t=["hb-col"];if(this.span){t.push(`hb-col-${this.span}`)}if(this.offset){t.push(`hb-col-offset-${this.offset}`)}if(this.push){t.push(`hb-col-push-${this.push}`)}if(this.pull){t.push(`hb-col-pull-${this.pull}`)}return t.join(" ")}render(){return e("div",{key:"fc06cef5bbbcb0c108907a16b5c96fe8dc9f4f77",class:this.getColClass()},e("slot",{key:"9ca9f6e93df8c29dc901f84a39b3eed635b953bb"}))}};l.style=o;export{l as hb_layout};
2
- //# sourceMappingURL=p-e9490259.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["layoutCss","HbLayoutStyle0","Layout","span","offset","push","pull","xs","sm","md","lg","xl","getColClass","classes","this","join","render","h","key","class"],"sources":["src/components/Layout/layout.css?tag=hb-layout&encapsulation=shadow","src/components/Layout/Layout.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n.hb-col {\n position: relative;\n width: 100%;\n box-sizing: border-box;\n}\n\n/* Generate col classes for span 1-24 */\n.hb-col-1 { width: 4.16666667%; }\n.hb-col-2 { width: 8.33333333%; }\n.hb-col-3 { width: 12.5%; }\n.hb-col-4 { width: 16.66666667%; }\n.hb-col-5 { width: 20.83333333%; }\n.hb-col-6 { width: 25%; }\n.hb-col-7 { width: 29.16666667%; }\n.hb-col-8 { width: 33.33333333%; }\n.hb-col-9 { width: 37.5%; }\n.hb-col-10 { width: 41.66666667%; }\n.hb-col-11 { width: 45.83333333%; }\n.hb-col-12 { width: 50%; }\n.hb-col-13 { width: 54.16666667%; }\n.hb-col-14 { width: 58.33333333%; }\n.hb-col-15 { width: 62.5%; }\n.hb-col-16 { width: 66.66666667%; }\n.hb-col-17 { width: 70.83333333%; }\n.hb-col-18 { width: 75%; }\n.hb-col-19 { width: 79.16666667%; }\n.hb-col-20 { width: 83.33333333%; }\n.hb-col-21 { width: 87.5%; }\n.hb-col-22 { width: 91.66666667%; }\n.hb-col-23 { width: 95.83333333%; }\n.hb-col-24 { width: 100%; }\n\n/* Offset classes */\n.hb-col-offset-1 { margin-left: 4.16666667%; }\n.hb-col-offset-2 { margin-left: 8.33333333%; }\n.hb-col-offset-3 { margin-left: 12.5%; }\n.hb-col-offset-4 { margin-left: 16.66666667%; }\n.hb-col-offset-5 { margin-left: 20.83333333%; }\n.hb-col-offset-6 { margin-left: 25%; }\n.hb-col-offset-7 { margin-left: 29.16666667%; }\n.hb-col-offset-8 { margin-left: 33.33333333%; }\n.hb-col-offset-9 { margin-left: 37.5%; }\n.hb-col-offset-10 { margin-left: 41.66666667%; }\n.hb-col-offset-11 { margin-left: 45.83333333%; }\n.hb-col-offset-12 { margin-left: 50%; }\n.hb-col-offset-13 { margin-left: 54.16666667%; }\n.hb-col-offset-14 { margin-left: 58.33333333%; }\n.hb-col-offset-15 { margin-left: 62.5%; }\n.hb-col-offset-16 { margin-left: 66.66666667%; }\n.hb-col-offset-17 { margin-left: 70.83333333%; }\n.hb-col-offset-18 { margin-left: 75%; }\n.hb-col-offset-19 { margin-left: 79.16666667%; }\n.hb-col-offset-20 { margin-left: 83.33333333%; }\n.hb-col-offset-21 { margin-left: 87.5%; }\n.hb-col-offset-22 { margin-left: 91.66666667%; }\n.hb-col-offset-23 { margin-left: 95.83333333%; }\n\n/* Push classes */\n.hb-col-push-1 { left: 4.16666667%; }\n.hb-col-push-2 { left: 8.33333333%; }\n.hb-col-push-3 { left: 12.5%; }\n.hb-col-push-4 { left: 16.66666667%; }\n.hb-col-push-5 { left: 20.83333333%; }\n.hb-col-push-6 { left: 25%; }\n.hb-col-push-7 { left: 29.16666667%; }\n.hb-col-push-8 { left: 33.33333333%; }\n.hb-col-push-9 { left: 37.5%; }\n.hb-col-push-10 { left: 41.66666667%; }\n.hb-col-push-11 { left: 45.83333333%; }\n.hb-col-push-12 { left: 50%; }\n\n/* Pull classes */\n.hb-col-pull-1 { right: 4.16666667%; }\n.hb-col-pull-2 { right: 8.33333333%; }\n.hb-col-pull-3 { right: 12.5%; }\n.hb-col-pull-4 { right: 16.66666667%; }\n.hb-col-pull-5 { right: 20.83333333%; }\n.hb-col-pull-6 { right: 25%; }\n.hb-col-pull-7 { right: 29.16666667%; }\n.hb-col-pull-8 { right: 33.33333333%; }\n.hb-col-pull-9 { right: 37.5%; }\n.hb-col-pull-10 { right: 41.66666667%; }\n.hb-col-pull-11 { right: 45.83333333%; }\n.hb-col-pull-12 { right: 50%; }\n\n","import { Component, h, Prop } from '@stencil/core';\n\n/**\n * Layout 布局组件\n * 通过基础的 24 分栏,迅速简便地创建布局\n */\n@Component({\n tag: 'hb-layout',\n styleUrl: 'layout.css',\n shadow: true,\n})\nexport class Layout {\n /**\n * 栅格占据的列数\n * @default 24\n */\n @Prop() span: number = 24;\n\n /**\n * 栅格左侧的间隔格数\n * @default 0\n */\n @Prop() offset: number = 0;\n\n /**\n * 栅格向右移动格数\n * @default 0\n */\n @Prop() push: number = 0;\n\n /**\n * 栅格向左移动格数\n * @default 0\n */\n @Prop() pull: number = 0;\n\n /**\n * <768px 响应式栅格数或者栅格属性对象\n */\n @Prop() xs?: number | object;\n\n /**\n * ≥768px 响应式栅格数或者栅格属性对象\n */\n @Prop() sm?: number | object;\n\n /**\n * ≥992px 响应式栅格数或者栅格属性对象\n */\n @Prop() md?: number | object;\n\n /**\n * ≥1200px 响应式栅格数或者栅格属性对象\n */\n @Prop() lg?: number | object;\n\n /**\n * ≥1920px 响应式栅格数或者栅格属性对象\n */\n @Prop() xl?: number | object;\n\n private getColClass() {\n const classes: string[] = ['hb-col'];\n \n if (this.span) {\n classes.push(`hb-col-${this.span}`);\n }\n if (this.offset) {\n classes.push(`hb-col-offset-${this.offset}`);\n }\n if (this.push) {\n classes.push(`hb-col-push-${this.push}`);\n }\n if (this.pull) {\n classes.push(`hb-col-pull-${this.pull}`);\n }\n\n return classes.join(' ');\n }\n\n render() {\n return (\n <div class={this.getColClass()}>\n <slot></slot>\n </div>\n );\n }\n}\n\n"],"mappings":"2CAAA,MAAMA,EAAY,2uPAClB,MAAAC,EAAeD,E,MCUFE,EAAM,M,yBAKTC,KAAe,GAMfC,OAAiB,EAMjBC,KAAe,EAMfC,KAAe,EAKfC,GAKAC,GAKAC,GAKAC,GAKAC,GAEA,WAAAC,GACN,MAAMC,EAAoB,CAAC,UAE3B,GAAIC,KAAKX,KAAM,CACbU,EAAQR,KAAK,UAAUS,KAAKX,O,CAE9B,GAAIW,KAAKV,OAAQ,CACfS,EAAQR,KAAK,iBAAiBS,KAAKV,S,CAErC,GAAIU,KAAKT,KAAM,CACbQ,EAAQR,KAAK,eAAeS,KAAKT,O,CAEnC,GAAIS,KAAKR,KAAM,CACbO,EAAQR,KAAK,eAAeS,KAAKR,O,CAGnC,OAAOO,EAAQE,KAAK,I,CAGtB,MAAAC,GACE,OACEC,EAAA,OAAAC,IAAA,2CAAKC,MAAOL,KAAKF,eACfK,EAAA,QAAAC,IAAA,6C","ignoreList":[]}