@aloudata/aloudata-design 3.0.20 → 3.0.22

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 (218) hide show
  1. package/README.md +145 -59
  2. package/dist/Alert/index.js +1 -1
  3. package/dist/Alert/index.js.map +1 -1
  4. package/dist/App/index.d.ts +3 -0
  5. package/dist/App/index.js +12 -10
  6. package/dist/App/index.js.map +1 -1
  7. package/dist/Avatar/component/Avatar/index.js +2 -2
  8. package/dist/Avatar/component/Avatar/index.js.map +1 -1
  9. package/dist/Avatar/component/Avatar/type.js +3 -3
  10. package/dist/Avatar/component/Avatar/type.js.map +1 -1
  11. package/dist/Badge/index.js +5 -5
  12. package/dist/Badge/index.js.map +1 -1
  13. package/dist/Breadcrumb/index.js +4 -4
  14. package/dist/Breadcrumb/index.js.map +1 -1
  15. package/dist/Button/index.js +8 -8
  16. package/dist/Button/index.js.map +1 -1
  17. package/dist/Card/index.js +1 -1
  18. package/dist/Card/index.js.map +1 -1
  19. package/dist/Checkbox/index.js +3 -3
  20. package/dist/Checkbox/index.js.map +1 -1
  21. package/dist/Collapse/index.js +1 -1
  22. package/dist/Collapse/index.js.map +1 -1
  23. package/dist/ColorPicker/ComplexColorPicker/ColorAlphaInput.js +1 -1
  24. package/dist/ColorPicker/ComplexColorPicker/ColorAlphaInput.js.map +1 -1
  25. package/dist/ColorPicker/ComplexColorPicker/ColorHsbInput.js +1 -1
  26. package/dist/ColorPicker/ComplexColorPicker/ColorHsbInput.js.map +1 -1
  27. package/dist/ColorPicker/ComplexColorPicker/ColorRgbInput.js +1 -1
  28. package/dist/ColorPicker/ComplexColorPicker/ColorRgbInput.js.map +1 -1
  29. package/dist/ColorPicker/ComplexColorPicker/index.js +2 -2
  30. package/dist/ColorPicker/ComplexColorPicker/index.js.map +1 -1
  31. package/dist/ColorPicker/index.js +11 -11
  32. package/dist/ColorPicker/index.js.map +1 -1
  33. package/dist/ColorPicker/util.d.ts +1 -1
  34. package/dist/ColorPicker/util.js.map +1 -1
  35. package/dist/DataPreviewTable/components/Body/Cell.js +2 -2
  36. package/dist/DataPreviewTable/components/Body/Cell.js.map +1 -1
  37. package/dist/DataPreviewTable/components/Body/index.js +1 -1
  38. package/dist/DataPreviewTable/components/Body/index.js.map +1 -1
  39. package/dist/DataPreviewTable/components/DragBar/index.js +1 -1
  40. package/dist/DataPreviewTable/components/DragBar/index.js.map +1 -1
  41. package/dist/DataPreviewTable/components/Header/index.js +3 -3
  42. package/dist/DataPreviewTable/components/Header/index.js.map +1 -1
  43. package/dist/DataPreviewTable/index.js +1 -1
  44. package/dist/DataPreviewTable/index.js.map +1 -1
  45. package/dist/Divider/index.js +1 -1
  46. package/dist/Divider/index.js.map +1 -1
  47. package/dist/Drawer/index.js +3 -3
  48. package/dist/Drawer/index.js.map +1 -1
  49. package/dist/Dropdown/index.d.ts +5 -0
  50. package/dist/Dropdown/index.js +3 -1
  51. package/dist/Dropdown/index.js.map +1 -1
  52. package/dist/Empty/image/Data.js +16 -16
  53. package/dist/Empty/image/Data.js.map +1 -1
  54. package/dist/Empty/image/User.js +16 -16
  55. package/dist/Empty/image/User.js.map +1 -1
  56. package/dist/Empty/image/WorkBook.js +17 -17
  57. package/dist/Empty/image/WorkBook.js.map +1 -1
  58. package/dist/Form/index.js +2 -2
  59. package/dist/Form/index.js.map +1 -1
  60. package/dist/Icon/components/SortAscendingOrderColor.js +1 -1
  61. package/dist/Icon/components/SortAscendingOrderColor.js.map +1 -1
  62. package/dist/Icon/components/SortDescendingOrderColor.js +1 -1
  63. package/dist/Icon/components/SortDescendingOrderColor.js.map +1 -1
  64. package/dist/Icon/components/User.js +2 -2
  65. package/dist/Icon/components/User.js.map +1 -1
  66. package/dist/Icon/components/UserGroup.js +2 -2
  67. package/dist/Icon/components/UserGroup.js.map +1 -1
  68. package/dist/Input/components/Input/index.js +3 -4
  69. package/dist/Input/components/Input/index.js.map +1 -1
  70. package/dist/Input/components/TextArea/index.js +3 -3
  71. package/dist/Input/components/TextArea/index.js.map +1 -1
  72. package/dist/InputNumber/index.js +4 -4
  73. package/dist/InputNumber/index.js.map +1 -1
  74. package/dist/LogicTree/components/LogicItem/index.js +2 -2
  75. package/dist/LogicTree/components/LogicItem/index.js.map +1 -1
  76. package/dist/MemberPicker/components/SelectedMemberTags.js +1 -1
  77. package/dist/MemberPicker/components/SelectedMemberTags.js.map +1 -1
  78. package/dist/Modal/index.js +8 -8
  79. package/dist/Modal/index.js.map +1 -1
  80. package/dist/Popconfirm/index.js +1 -1
  81. package/dist/Popconfirm/index.js.map +1 -1
  82. package/dist/Popover/index.js +2 -2
  83. package/dist/Popover/index.js.map +1 -1
  84. package/dist/Progress/index.js +1 -1
  85. package/dist/Progress/index.js.map +1 -1
  86. package/dist/RenameInput/index.js +4 -4
  87. package/dist/RenameInput/index.js.map +1 -1
  88. package/dist/Result/index.js +4 -4
  89. package/dist/Result/index.js.map +1 -1
  90. package/dist/Select/BaseSelect.js +2 -1
  91. package/dist/Select/BaseSelect.js.map +1 -1
  92. package/dist/Select/components/Suffix.js +3 -3
  93. package/dist/Select/components/Suffix.js.map +1 -1
  94. package/dist/Slider/index.js +4 -4
  95. package/dist/Slider/index.js.map +1 -1
  96. package/dist/Spin/CustomIcon/index.js +2 -2
  97. package/dist/Spin/CustomIcon/index.js.map +1 -1
  98. package/dist/StatusLight/index.js +15 -15
  99. package/dist/StatusLight/index.js.map +1 -1
  100. package/dist/Steps/index.js +6 -6
  101. package/dist/Steps/index.js.map +1 -1
  102. package/dist/Switch/index.js +3 -3
  103. package/dist/Switch/index.js.map +1 -1
  104. package/dist/Table/components/Header.js +3 -3
  105. package/dist/Table/components/Header.js.map +1 -1
  106. package/dist/Tabs/index.js +9 -9
  107. package/dist/Tabs/index.js.map +1 -1
  108. package/dist/Tag/index.js +11 -11
  109. package/dist/Tag/index.js.map +1 -1
  110. package/dist/TextLink/index.js +2 -2
  111. package/dist/TextLink/index.js.map +1 -1
  112. package/dist/Tooltip/index.js +3 -3
  113. package/dist/Tooltip/index.js.map +1 -1
  114. package/dist/Tour/index.js +1 -1
  115. package/dist/Tour/index.js.map +1 -1
  116. package/dist/Tree/Tree2.js +2 -2
  117. package/dist/Tree/Tree2.js.map +1 -1
  118. package/dist/Typography/index.js +1 -1
  119. package/dist/Typography/index.js.map +1 -1
  120. package/dist/User/index.js +1 -1
  121. package/dist/User/index.js.map +1 -1
  122. package/dist/Watermark/index.js +2 -1
  123. package/dist/Watermark/index.js.map +1 -1
  124. package/dist/aloudata-design.css +1 -1
  125. package/dist/index.d.ts +2 -2
  126. package/dist/index.js +11 -5
  127. package/dist/message/index.js +1 -1
  128. package/dist/message/index.js.map +1 -1
  129. package/dist/notification/index.js +5 -5
  130. package/dist/notification/index.js.map +1 -1
  131. package/dist/theme/contract/baselineResolvedTokenValueManifest.d.ts +22 -0
  132. package/dist/theme/contract/darkResolvedTokenValueManifest.d.ts +5 -0
  133. package/dist/theme/contract/darkResolvedTokenValueManifest.js +2 -0
  134. package/dist/theme/contract/resolvedTokenValueManifest.d.ts +3 -0
  135. package/dist/theme/contract/resolvedTokenValueManifest.js +2 -0
  136. package/dist/theme/contract/shadowGeneratorSpecification.d.ts +37 -0
  137. package/dist/theme/contract/shadowGeneratorSpecification.js +2 -0
  138. package/dist/theme/contract/tokenCssBridge.d.ts +60 -0
  139. package/dist/theme/contract/tokenCssBridge.js +2 -0
  140. package/dist/theme/contract/tokenOutputContract.d.ts +35 -0
  141. package/dist/theme/contract/tokenOutputContract.js +198 -0
  142. package/dist/theme/contract/tokenOutputContract.js.map +1 -0
  143. package/dist/theme/generator/acceptedColorValues.d.ts +97 -0
  144. package/dist/theme/generator/acceptedColorValues.js +2 -0
  145. package/dist/theme/generator/baselineTokenValueDelivery.d.ts +21 -0
  146. package/dist/theme/generator/baselineTokenValueDelivery.js +2 -0
  147. package/dist/theme/generator/cssArtifactEmitter.d.ts +62 -0
  148. package/dist/theme/generator/cssArtifactEmitter.js +2 -0
  149. package/dist/theme/generator/generator.d.ts +41 -0
  150. package/dist/theme/generator/generator.js +2 -0
  151. package/dist/theme/generator/generatorDiff.d.ts +53 -0
  152. package/dist/theme/generator/generatorDiff.js +2 -0
  153. package/dist/theme/generator/generatorEmitter.d.ts +73 -0
  154. package/dist/theme/generator/generatorEmitter.js +2 -0
  155. package/dist/theme/generator/generatorMappingStrategy.d.ts +43 -0
  156. package/dist/theme/generator/generatorMappingStrategy.js +2 -0
  157. package/dist/theme/generator/generatorOutputSchema.d.ts +80 -0
  158. package/dist/theme/generator/generatorOutputSchema.js +2 -0
  159. package/dist/theme/generator/minimalAcceptedColorValues.d.ts +27 -0
  160. package/dist/theme/generator/minimalAcceptedColorValues.js +2 -0
  161. package/dist/theme/generator/valueResolver.d.ts +64 -0
  162. package/dist/theme/generator/valueResolver.js +2 -0
  163. package/dist/theme/governance/migrationMappingRegistry.d.ts +22 -0
  164. package/dist/theme/governance/migrationMappingRegistry.js +459 -0
  165. package/dist/theme/governance/migrationMappingRegistry.js.map +1 -0
  166. package/dist/theme/governance/reviewGate.d.ts +33 -0
  167. package/dist/theme/governance/reviewGate.js +116 -0
  168. package/dist/theme/governance/reviewGate.js.map +1 -0
  169. package/dist/theme/governance/validateMigrationMapping.d.ts +50 -0
  170. package/dist/theme/governance/validateMigrationMapping.js +157 -0
  171. package/dist/theme/governance/validateMigrationMapping.js.map +1 -0
  172. package/dist/theme/index.d.ts +16 -5
  173. package/dist/theme/index.js +10 -4
  174. package/dist/theme/runtime/colorValueMode/dark.d.ts +1 -0
  175. package/dist/theme/runtime/colorValueMode/dark.js +2 -0
  176. package/dist/theme/runtime/colorValueMode/generated/darkBaselineDeclarations.d.ts +3 -0
  177. package/dist/theme/runtime/colorValueMode/generated/darkBaselineDeclarations.js +125 -0
  178. package/dist/theme/runtime/colorValueMode/generated/darkBaselineDeclarations.js.map +1 -0
  179. package/dist/theme/runtime/colorValueMode/generated/v3BaselineDeclarations.d.ts +3 -0
  180. package/dist/theme/runtime/colorValueMode/generated/v3BaselineDeclarations.js +125 -0
  181. package/dist/theme/runtime/colorValueMode/generated/v3BaselineDeclarations.js.map +1 -0
  182. package/dist/theme/runtime/colorValueMode/index.d.ts +6 -0
  183. package/dist/theme/runtime/colorValueMode/index.js +55 -0
  184. package/dist/theme/runtime/colorValueMode/index.js.map +1 -0
  185. package/dist/theme/runtime/colorValueMode/registry.d.ts +38 -0
  186. package/dist/theme/runtime/colorValueMode/registry.js +46 -0
  187. package/dist/theme/runtime/colorValueMode/registry.js.map +1 -0
  188. package/dist/theme/runtime/colorValueMode/v3.d.ts +1 -0
  189. package/dist/theme/runtime/colorValueMode/v3.js +2 -0
  190. package/dist/theme/runtime/colorValueMode.d.ts +2 -0
  191. package/dist/theme/{createTheme.js → runtime/createTheme.js} +1 -1
  192. package/dist/theme/runtime/createTheme.js.map +1 -0
  193. package/dist/theme/{defaultTheme.js → runtime/defaultTheme.js} +1 -1
  194. package/dist/theme/runtime/defaultTheme.js.map +1 -0
  195. package/dist/theme/{initAldTheme.js → runtime/initAldTheme.js} +6 -1
  196. package/dist/theme/runtime/initAldTheme.js.map +1 -0
  197. package/dist/theme/runtime/integrationController.d.ts +26 -0
  198. package/dist/theme/runtime/integrationController.js +2 -0
  199. package/dist/theme/runtime/runtimeAdapter.d.ts +31 -0
  200. package/dist/theme/runtime/runtimeAdapter.js +2 -0
  201. package/dist/theme/{themeToCssVars.js → runtime/themeToCssVars.js} +1 -1
  202. package/dist/theme/runtime/themeToCssVars.js.map +1 -0
  203. package/dist/theme/{tokenMap.js → runtime/tokenMap.js} +1 -1
  204. package/dist/theme/runtime/tokenMap.js.map +1 -0
  205. package/dist/theme/runtime/types.js +2 -0
  206. package/package.json +20 -3
  207. package/dist/theme/createTheme.js.map +0 -1
  208. package/dist/theme/defaultTheme.js.map +0 -1
  209. package/dist/theme/initAldTheme.js.map +0 -1
  210. package/dist/theme/themeToCssVars.js.map +0 -1
  211. package/dist/theme/tokenMap.js.map +0 -1
  212. /package/dist/theme/{types.js → contract/baselineResolvedTokenValueManifest.js} +0 -0
  213. /package/dist/theme/{createTheme.d.ts → runtime/createTheme.d.ts} +0 -0
  214. /package/dist/theme/{defaultTheme.d.ts → runtime/defaultTheme.d.ts} +0 -0
  215. /package/dist/theme/{initAldTheme.d.ts → runtime/initAldTheme.d.ts} +0 -0
  216. /package/dist/theme/{themeToCssVars.d.ts → runtime/themeToCssVars.d.ts} +0 -0
  217. /package/dist/theme/{tokenMap.d.ts → runtime/tokenMap.d.ts} +0 -0
  218. /package/dist/theme/{types.d.ts → runtime/types.d.ts} +0 -0
package/README.md CHANGED
@@ -4,6 +4,22 @@
4
4
 
5
5
  本文档用于介绍组件库开发相关的规范以及组件库开发过程中的注意事项。
6
6
 
7
+ ## Color Governance Documentation
8
+
9
+ Color System Governance 的唯一入口:`docs/color-system/README.md`
10
+
11
+ ## Business Project CSS Consumption
12
+
13
+ Business Project 应通过正式 CSS Consumer Entry 消费 ALD 的 CSS Variables Public Web Surface:
14
+
15
+ ```css
16
+ @import '@aloudata/aloudata-design/css';
17
+ ```
18
+
19
+ 该入口只提供已交付的 CSS Variables Public Web Surface;不提供 Dynamic Brand API、Runtime API、`createTheme()` 或 `initAldTheme()`。不要依赖 `dist` 内部路径或其他未声明 package subpath。
20
+
21
+ Component consumption and CSS Variables consumption are independent public delivery surfaces. Using one does not grant access to the other.
22
+
7
23
  ## 环境配置
8
24
 
9
25
  组件库开发过程中,需要满足以下条件:
@@ -36,7 +52,7 @@ Node version >= 16.0.0
36
52
  ```
37
53
 
38
54
  #### 组件测试
39
-
55
+
40
56
  ```bash
41
57
  yarn run test //单元测试
42
58
  ```
@@ -47,7 +63,7 @@ Node version >= 16.0.0
47
63
  yarn run build //打包
48
64
  ```
49
65
 
50
- #### 组件本地link
66
+ #### 组件本地 link
51
67
 
52
68
  ```bash
53
69
  npm link //将组件库link到本地npm
@@ -67,7 +83,7 @@ Node version >= 16.0.0
67
83
  ├── dist --> 组件打包生成的组件目录
68
84
  ├── src --> 组件目录
69
85
  ├── tsconfig.json --> tsconfig ts配置文件
70
- ├── .editorconfig
86
+ ├── .editorconfig
71
87
  ├── .eslintrc.js --> eslint ts等校验规则配置
72
88
  ├── .fatherrc.ts ---> father组件打包配置
73
89
  ├── .prettierrc.js ---> prettier 代码格式化配置
@@ -83,33 +99,33 @@ Node version >= 16.0.0
83
99
 
84
100
  ### 3 代码风格
85
101
 
86
- 我们使用eslint+stylelint+prettier 来统一代码风格,同时**需要对vscode做一定的配置**,具体[配置参考](https://docs.dingtalk.com/i/nodes/mM3zoYAw1Rr8D5Nong2XWnZ07y9NpXxD?dontjump=true&iframeQuery=utm_source%3Dportal%26utm_medium%3Dportal_space_file_tree&navQuery=spaceId%3Da0gX104nML97WzeJ&nav=spaces)
102
+ 我们使用 eslint+stylelint+prettier 来统一代码风格,同时**需要对 vscode 做一定的配置**,具体[配置参考](https://docs.dingtalk.com/i/nodes/mM3zoYAw1Rr8D5Nong2XWnZ07y9NpXxD?dontjump=true&iframeQuery=utm_source%3Dportal%26utm_medium%3Dportal_space_file_tree&navQuery=spaceId%3Da0gX104nML97WzeJ&nav=spaces)
87
103
 
88
- ts文件使用 *eslint* 校验, 配置文件 .eslintrc.js [查看规则](https://cn.eslint.org/docs/rules/)
89
- less文件使用 *stylelint* 校验, 配置文件 .stylelintrc.json [查看规则](https://stylelint.bootcss.com/user-guide/rules/list)
90
- 使用 *prettier* 格式化代码,配置文件 .prettierrc.js
104
+ ts 文件使用 _eslint_ 校验, 配置文件 .eslintrc.js [查看规则](https://cn.eslint.org/docs/rules/)
105
+ less 文件使用 _stylelint_ 校验, 配置文件 .stylelintrc.json [查看规则](https://stylelint.bootcss.com/user-guide/rules/list)
106
+ 使用 _prettier_ 格式化代码,配置文件 .prettierrc.js
91
107
 
92
108
  ## 组件开发指南(必读)
93
109
 
94
110
  ### 了解组件分类
95
111
 
96
112
  1. 毛坯组件
97
- 原始的未做任何修改的antd组件
113
+ 原始的未做任何修改的 antd 组件
98
114
  2. 简装组件
99
115
  是指在毛坯组件的基础上,只简单了修改了一些颜色、样式等的组件
100
116
  3. 精装组件
101
- 所谓精装组件,是指设计师精心设计过组件应用场景和UI的组件,可能基于antd,也可以完全自定义
117
+ 所谓精装组件,是指设计师精心设计过组件应用场景和 UI 的组件,可能基于 antd,也可以完全自定义
102
118
 
103
119
  ### 单元测试
104
120
 
105
- 组件开发过程中需要写单测的,建议先写单测,然后进行开发。[了解TDD](https://baike.baidu.com/item/TDD/9064369)
121
+ 组件开发过程中需要写单测的,建议先写单测,然后进行开发。[了解 TDD](https://baike.baidu.com/item/TDD/9064369)
106
122
 
107
123
  哪些情况需要写单元测试:
108
124
 
109
- 1. 如果是基于antd的组件,但凡组件有api接口变动,必须要写单元测试
110
- 2. 非基于antd的组件,必须要写单元测试
111
- 3. 单元测试需要覆盖组件每一个api接口的各个状态
112
- 4. 单元测试文件以 *.test.tsx* 结尾
125
+ 1. 如果是基于 antd 的组件,但凡组件有 api 接口变动,必须要写单元测试
126
+ 2. 非基于 antd 的组件,必须要写单元测试
127
+ 3. 单元测试需要覆盖组件每一个 api 接口的各个状态
128
+ 4. 单元测试文件以 _.test.tsx_ 结尾
113
129
 
114
130
  单元测试参考资料:
115
131
 
@@ -118,28 +134,28 @@ less文件使用 *stylelint* 校验, 配置文件 .stylelintrc.json [查看规
118
134
 
119
135
  ### 组件开发注意事项
120
136
 
121
- 组件开发支持两种模式,基于antd开发和其它自定义开发。
137
+ 组件开发支持两种模式,基于 antd 开发和其它自定义开发。
122
138
 
123
- **基于antd开发:** 在业务满足的情况下,建议基于antd开发或者rc组件开发。方式是把antd组件引用过来,然后做升级修改之后,再作为ald组件暴露出去
139
+ **基于 antd 开发:** 在业务满足的情况下,建议基于 antd 开发或者 rc 组件开发。方式是把 antd 组件引用过来,然后做升级修改之后,再作为 ald 组件暴露出去
124
140
 
125
- **自定义开发:** 当antd组件不满足业务的时候,可以自定义开发,允许引用其它基础组件进行二次开发或者完全自定义组件进行开发。通常是精装组件。
141
+ **自定义开发:** 当 antd 组件不满足业务的时候,可以自定义开发,允许引用其它基础组件进行二次开发或者完全自定义组件进行开发。通常是精装组件。
126
142
 
127
143
  组件开发有以下几个**必须要注意**的点
128
144
 
129
- 1. 组件样式要和组件类进行分离,即在组件开发的过程中,不允许引用css、less等样式组件。样式单独写在style文件夹下。
130
- 2. 组件文档内的api接口展示,是获取组件属性props的接口interface定义来实现的(自定义md表格除外)。组件库脚手架对于组件接口interface有处理,即凡是接口来自于外部库引入的部分,不会被文档api识别,即无法展示。interface接口的每一个想要暴露的属性,都必须要写注释,主要包括类型、描述、默认值等。
131
- 3. 组件简装及以上,必须要写demo样例,用于展示已经支持的样式及功能
132
- 4. 精装组件必须要写单元测试。每一个组件的属性,都要在测例中进行测试,保证在组件的的维护修改过程中,不会出现bug。
133
- 5. 组件由ts编写,必须对外暴露所有可能在业务使用过程中需要的ts类型。
134
- 6. 组件库不使用css-module,请考虑权重问题,禁止出现 **!important** 这样的样式
145
+ 1. 组件样式要和组件类进行分离,即在组件开发的过程中,不允许引用 css、less 等样式组件。样式单独写在 style 文件夹下。
146
+ 2. 组件文档内的 api 接口展示,是获取组件属性 props 的接口 interface 定义来实现的(自定义 md 表格除外)。组件库脚手架对于组件接口 interface 有处理,即凡是接口来自于外部库引入的部分,不会被文档 api 识别,即无法展示。interface 接口的每一个想要暴露的属性,都必须要写注释,主要包括类型、描述、默认值等。
147
+ 3. 组件简装及以上,必须要写 demo 样例,用于展示已经支持的样式及功能
148
+ 4. 精装组件必须要写单元测试。每一个组件的属性,都要在测例中进行测试,保证在组件的的维护修改过程中,不会出现 bug。
149
+ 5. 组件由 ts 编写,必须对外暴露所有可能在业务使用过程中需要的 ts 类型。
150
+ 6. 组件库不使用 css-module,请考虑权重问题,禁止出现 **!important** 这样的样式
135
151
 
136
152
  ### 组件库文档编写注意事项
137
153
 
138
- #### 文档前文frontMatter编写
154
+ #### 文档前文 frontMatter 编写
139
155
 
140
156
  在组件库官网展示的时候,会根据文档头部的信息,对文档进行分类,我们当前的计划是分成三类:设计、文档、组件;
141
157
 
142
- 在文档头部,使用YAML预发进行编写,用于描述组件的文档的信息,如:
158
+ 在文档头部,使用 YAML 预发进行编写,用于描述组件的文档的信息,如:
143
159
 
144
160
  ```yaml
145
161
  ---
@@ -154,39 +170,39 @@ group:
154
170
 
155
171
  具体参考:[FrontMatter](https://d.umijs.org/zh-CN/config/frontmatter)
156
172
 
157
- #### 组件场景用例demo展示
173
+ #### 组件场景用例 demo 展示
158
174
 
159
- 每个简装以上组件都需要展示场景用例,写在src/**/demos/文件夹下
160
- demo项目中,像在业务中使用aloudata-design一样,脚手架会自动关联项目到node-modules下。(建议先build一下,然后再进行demo展示)
161
- 在组件的md文档中使用code引入用例,在文档中展示用例,如:
162
-
163
- ```jsx
164
- <code src="./demos/single/index.tsx" title="单项选择"/>
165
- ```
175
+ 每个简装以上组件都需要展示场景用例,写在 src/\*\*/demos/文件夹下
176
+ demo 项目中,像在业务中使用 aloudata-design 一样,脚手架会自动关联项目到 node-modules 下。(建议先 build 一下,然后再进行 demo 展示)
177
+ 在组件的 md 文档中使用 code 引入用例,在文档中展示用例,如:
178
+
179
+ ```jsx
180
+ <code src="./demos/single/index.tsx" title="单项选择" />
181
+ ```
166
182
 
167
- 关于demo的配置,即code的用法,请参考[demo配置](https://d.umijs.org/zh-CN/config/frontmatter#demo-%E9%85%8D%E7%BD%AE%E9%A1%B9)
183
+ 关于 demo 的配置,即 code 的用法,请参考[demo 配置](https://d.umijs.org/zh-CN/config/frontmatter#demo-%E9%85%8D%E7%BD%AE%E9%A1%B9)
168
184
 
169
- #### 组件api展示
185
+ #### 组件 api 展示
170
186
 
171
- api展示为表格形势,可以使用**API**标签,如:
187
+ api 展示为表格形势,可以使用**API**标签,如:
172
188
 
173
189
  ```jsx
174
- <API src="/path/to/your/component.tsx" hideTitle></API>
190
+ <API src="/path/to/your/component.tsx" hideTitle></API>
175
191
  ```
176
192
 
177
193
  参考文档:[API](https://d.umijs.org/zh-CN/guide/advanced#%E5%9C%A8%E6%96%87%E6%A1%A3%E4%B8%AD%E5%B1%95%E7%A4%BA-api)
178
194
 
179
- 也可以自己使用md语法写表格
180
-
181
- ```md
182
- | 属性 | 描述 | 类型 | 默认值 |
183
- | ---- | ---- | ---- | ---- |
184
- | value | 某个值 | string | 当前选中的值 |
185
- ```
195
+ 也可以自己使用 md 语法写表格
196
+
197
+ ```md
198
+ | 属性 | 描述 | 类型 | 默认值 |
199
+ | ----- | ------ | ------ | ------------ |
200
+ | value | 某个值 | string | 当前选中的值 |
201
+ ```
186
202
 
187
203
  ### 关于组件模板创建
188
204
 
189
- 使用 *npm run cmt* 创建的组件模板只是做一个参考,需要自己根据实际需求进行修改
205
+ 使用 _npm run cmt_ 创建的组件模板只是做一个参考,需要自己根据实际需求进行修改
190
206
 
191
207
  ## 关于组件库打包
192
208
 
@@ -196,8 +212,8 @@ api展示为表格形势,可以使用**API**标签,如:
196
212
  npm run build
197
213
  ```
198
214
 
199
- 组件打包的入口在src/index.tsx,必须在文件总暴露出来,组件才会被打包。
200
- 组件打包使用umi框架的 [falter](https://github.com/umijs/father) 打包工具, 具体配置在 .fatherrc.ts中。打包后会生成lib目录,es目录。
215
+ 组件打包的入口在 src/index.tsx,必须在文件总暴露出来,组件才会被打包。
216
+ 组件打包使用 umi 框架的 [falter](https://github.com/umijs/father) 打包工具, 具体配置在 .fatherrc.ts 中。打包后会生成 lib 目录,es 目录。
201
217
 
202
218
  ### 二、官方网站打包
203
219
 
@@ -205,24 +221,94 @@ api展示为表格形势,可以使用**API**标签,如:
205
221
  npm run docs:build
206
222
  ```
207
223
 
208
- 官网打包我们默认使用dumi站点模式,会分为设计、文档、组件三个版块,其中设计和文档版块的内容在docs目录下,组件版块的内容在src/**/*.test.md文件中。
224
+ 官网打包我们默认使用 dumi 站点模式,会分为设计、文档、组件三个版块,其中设计和文档版块的内容在 docs 目录下,组件版块的内容在 src/\*_/_.test.md 文件中。
209
225
 
210
226
  1. 设计部分用于描述组件的设计理念,内容由设计师提供,可以是链接,也可以是资料等。
211
227
  2. 文档用于描述组件库开发的一些信息等。
212
- 3. 组件用于展示组件的使用场景用例,组件的一些信息,组件的api接口等
228
+ 3. 组件用于展示组件的使用场景用例,组件的一些信息,组件的 api 接口等
229
+
230
+ ## CSS Variables 与组件消费边界
231
+
232
+ CSS Variables Public Web Surface 与组件按需引用属于不同 Consumer Entry。
233
+
234
+ ### Component Consumption
235
+
236
+ 组件消费用于:
237
+
238
+ - React Component API。
239
+ - Component style assets。
240
+ - Component-level usage。
241
+
242
+ 组件消费继续遵循组件按需引用规范。
243
+
244
+ ### CSS Variables Consumption
245
+
246
+ CSS Variables Consumption 用于:
247
+
248
+ - Design System Color Foundation Public Web Surface。
249
+
250
+ Business Project 应通过正式 CSS Consumer Entry 消费已交付 CSS Variables:
251
+
252
+ ```css
253
+ @import '@aloudata/aloudata-design/css';
254
+ ```
255
+
256
+ 该入口不提供:
257
+
258
+ - Component API。
259
+ - Dynamic Brand API。
260
+ - Runtime API。
261
+ - `createTheme()`。
262
+ - `initAldTheme()`。
263
+
264
+ ### Boundary
265
+
266
+ Business Project 不应:
267
+
268
+ - 通过组件 Less / style 文件消费 CSS Variables Public Web Surface。
269
+ - 依赖 `dist` 内部路径。
270
+ - 使用未声明 package subpath。
271
+ - 直接访问 Runtime、Generator 或 Token Output Contract。
272
+
273
+ CSS Entry 解决如何消费已交付 CSS output;它不解决如何生成 Dynamic Brand output。它不会开放 `createTheme()`、`initAldTheme()` 或任何 Brand runtime capability。
274
+
275
+ ## Component On-demand Import
276
+
277
+ 以下配置仅用于 React Component 按需引用。该消费方式属于 Component Consumption,不属于 CSS Variables Public Web Surface Consumption。
278
+
279
+ 组件按需引用用于:
280
+
281
+ - React Component API。
282
+ - Component style assets。
283
+ - Component-level usage。
284
+
285
+ CSS Variables Public Web Surface 应使用:
286
+
287
+ ```css
288
+ @import '@aloudata/aloudata-design/css';
289
+ ```
290
+
291
+ 不要通过以下方式消费 CSS Variables Public Web Surface:
292
+
293
+ - Component style import。
294
+ - Less 文件。
295
+ - `babel-plugin-import` style path。
296
+ - `dist` 内部文件路径。
297
+
298
+ Component API 与 CSS Variables Public Surface 是两个独立的 Public Delivery Surface。
213
299
 
214
300
  ## 按需引用
215
301
 
216
302
  ```js
217
303
  [
218
- 'import',
219
- {
220
- libraryName: '@aloudata/aloudata-design',
221
- libraryDirectory: 'dist',
222
- style:(name)=>{
223
- return `${name}/style/index.less`
224
- },
225
- camel2DashComponentName: false,
304
+ 'import',
305
+ {
306
+ libraryName: '@aloudata/aloudata-design',
307
+ libraryDirectory: 'dist',
308
+ style: (name) => {
309
+ return `${name}/style/index.less`;
226
310
  },
227
- ]
228
- ```
311
+ camel2DashComponentName: false,
312
+ },
313
+ ];
314
+ ```
@@ -85,7 +85,7 @@ function Alert(props) {
85
85
  }),
86
86
  closable && /* @__PURE__ */ jsx("button", {
87
87
  type: "button",
88
- className: "ald-alert-close-icon tw-flex tw-cursor-pointer tw-items-center tw-self-start tw-border-0 tw-bg-transparent tw-p-0 tw-pt-0.5",
88
+ className: "ald-alert-close-icon tw-flex tw-cursor-pointer tw-items-center tw-self-start tw-border-0 tw-bg-[var(--action-ghost-normal)] tw-p-0 tw-pt-0.5",
89
89
  onClick: (e) => {
90
90
  setClosed(true);
91
91
  onClose?.(e);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/Alert/index.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport {\n AttentionTriangleFill,\n CheckCircleFill,\n CloseCircleFill,\n CloseLightLine,\n InformationCircleFill,\n} from '../Icon';\nimport { cn } from '../lib/utils';\n\nexport interface AlertProps {\n type?: 'success' | 'info' | 'warning' | 'error' | 'none';\n message?: React.ReactNode;\n description?: React.ReactNode;\n closable?: boolean;\n onClose?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n afterClose?: () => void;\n showIcon?: boolean;\n icon?: React.ReactNode;\n banner?: boolean;\n action?: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n}\n\nconst typeConfig: Record<\n string,\n { bg: string; border: string; icon: React.ReactNode; titleColor: string }\n> = {\n success: {\n bg: 'tw-bg-[var(--background-positive-subtle)]',\n border: 'tw-border-[var(--border-positive-subtle)]',\n titleColor: 'tw-text-[var(--content-positive-primary)]',\n icon: (\n <CheckCircleFill size={16} color=\"var(--content-positive-secondary)\" />\n ),\n },\n info: {\n bg: 'tw-bg-[var(--background-informative-subtle)]',\n border: 'tw-border-[var(--border-informative-subtle)]',\n titleColor: 'tw-text-[var(--content-informative-primary)]',\n icon: (\n <InformationCircleFill\n size={16}\n color=\"var(--content-informative-secondary)\"\n />\n ),\n },\n warning: {\n bg: 'tw-bg-[var(--background-warning-subtle)]',\n border: 'tw-border-[var(--border-warning-subtle)]',\n titleColor: 'tw-text-[var(--content-warning-primary)]',\n icon: (\n <AttentionTriangleFill\n size={16}\n color=\"var(--content-warning-secondary)\"\n />\n ),\n },\n error: {\n bg: 'tw-bg-[var(--background-negative-subtle)]',\n border: 'tw-border-[var(--border-negative-subtle)]',\n titleColor: 'tw-text-[var(--content-negative-primary)]',\n icon: (\n <CloseCircleFill size={16} color=\"var(--content-negative-secondary)\" />\n ),\n },\n none: {\n bg: 'tw-bg-[var(--background-neutral-subtle)]',\n border: 'tw-border-[var(--border-neutral-subtle)]',\n titleColor: 'tw-text-[var(--content-primary)]',\n icon: <InformationCircleFill size={16} color=\"var(--content-secondary)\" />,\n },\n};\n\nfunction Alert(props: AlertProps) {\n const {\n type = 'info',\n message,\n description,\n closable,\n onClose,\n afterClose,\n showIcon = true,\n icon,\n banner,\n action,\n className,\n style,\n } = props;\n\n const [closed, setClosed] = useState(false);\n\n if (closed) return null;\n\n const config = typeConfig[type] || typeConfig.info;\n\n return (\n <div\n className={cn(\n 'ald-alert tw-flex tw-items-start tw-gap-2 tw-rounded-r-75 tw-border tw-border-solid tw-p-3',\n banner && 'ald-alert-banner !tw-rounded-none',\n config.bg,\n config.border,\n className,\n )}\n style={style}\n role=\"alert\"\n >\n {showIcon && (\n <span className=\"ald-alert-icon tw-flex tw-items-center tw-pt-0.5\">\n {icon || config.icon}\n </span>\n )}\n <div className=\"ald-alert-content tw-min-w-0 tw-flex-1\">\n {message && (\n <div\n className={cn(\n 'ald-alert-message tw-text-sm tw-font-medium tw-leading-5',\n config.titleColor,\n )}\n >\n {message}\n </div>\n )}\n {description && (\n <div\n className=\"ald-alert-description tw-mt-1 tw-text-sm tw-font-normal tw-leading-5 tw-text-[var(--content-secondary)]\"\n style={{ fontFeatureSettings: \"'liga' off, 'clig' off\" }}\n >\n {description}\n </div>\n )}\n </div>\n {action && <div className=\"ald-alert-action\">{action}</div>}\n {closable && (\n <button\n type=\"button\"\n className=\"ald-alert-close-icon tw-flex tw-cursor-pointer tw-items-center tw-self-start tw-border-0 tw-bg-transparent tw-p-0 tw-pt-0.5\"\n onClick={(e) => {\n setClosed(true);\n onClose?.(e);\n afterClose?.();\n }}\n >\n <CloseLightLine size={16} color=\"var(--content-secondary)\" />\n </button>\n )}\n </div>\n );\n}\n\nexport default Alert;\n"],"mappings":";;;;;;;;;AAyBA,IAAM,aAGF;CACF,SAAS;EACP,IAAI;EACJ,QAAQ;EACR,YAAY;EACZ,MACE,oBAAC,QAAD;GAAiB,MAAM;GAAI,OAAM;GAAsC,CAAA;EAE1E;CACD,MAAM;EACJ,IAAI;EACJ,QAAQ;EACR,YAAY;EACZ,MACE,oBAAC,QAAD;GACE,MAAM;GACN,OAAM;GACN,CAAA;EAEL;CACD,SAAS;EACP,IAAI;EACJ,QAAQ;EACR,YAAY;EACZ,MACE,oBAAC,MAAD;GACE,MAAM;GACN,OAAM;GACN,CAAA;EAEL;CACD,OAAO;EACL,IAAI;EACJ,QAAQ;EACR,YAAY;EACZ,MACE,oBAAC,QAAD;GAAiB,MAAM;GAAI,OAAM;GAAsC,CAAA;EAE1E;CACD,MAAM;EACJ,IAAI;EACJ,QAAQ;EACR,YAAY;EACZ,MAAM,oBAAC,QAAD;GAAuB,MAAM;GAAI,OAAM;GAA6B,CAAA;EAC3E;CACF;AAED,SAAS,MAAM,OAAmB;CAChC,MAAM,EACJ,OAAO,QACP,SACA,aACA,UACA,SACA,YACA,WAAW,MACX,MACA,QACA,QACA,WACA,UACE;CAEJ,MAAM,CAAC,QAAQ,aAAa,SAAS,MAAM;AAE3C,KAAI,OAAQ,QAAO;CAEnB,MAAM,SAAS,WAAW,SAAS,WAAW;AAE9C,QACE,qBAAC,OAAD;EACE,WAAW,GACT,8FACA,UAAU,qCACV,OAAO,IACP,OAAO,QACP,UACD;EACM;EACP,MAAK;YATP;GAWG,YACC,oBAAC,QAAD;IAAM,WAAU;cACb,QAAQ,OAAO;IACX,CAAA;GAET,qBAAC,OAAD;IAAK,WAAU;cAAf,CACG,WACC,oBAAC,OAAD;KACE,WAAW,GACT,4DACA,OAAO,WACR;eAEA;KACG,CAAA,EAEP,eACC,oBAAC,OAAD;KACE,WAAU;KACV,OAAO,EAAE,qBAAqB,0BAA0B;eAEvD;KACG,CAAA,CAEJ;;GACL,UAAU,oBAAC,OAAD;IAAK,WAAU;cAAoB;IAAa,CAAA;GAC1D,YACC,oBAAC,UAAD;IACE,MAAK;IACL,WAAU;IACV,UAAU,MAAM;AACd,eAAU,KAAK;AACf,eAAU,EAAE;AACZ,mBAAc;;cAGhB,oBAAC,QAAD;KAAgB,MAAM;KAAI,OAAM;KAA6B,CAAA;IACtD,CAAA;GAEP"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/Alert/index.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport {\n AttentionTriangleFill,\n CheckCircleFill,\n CloseCircleFill,\n CloseLightLine,\n InformationCircleFill,\n} from '../Icon';\nimport { cn } from '../lib/utils';\n\nexport interface AlertProps {\n type?: 'success' | 'info' | 'warning' | 'error' | 'none';\n message?: React.ReactNode;\n description?: React.ReactNode;\n closable?: boolean;\n onClose?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n afterClose?: () => void;\n showIcon?: boolean;\n icon?: React.ReactNode;\n banner?: boolean;\n action?: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n}\n\nconst typeConfig: Record<\n string,\n { bg: string; border: string; icon: React.ReactNode; titleColor: string }\n> = {\n success: {\n bg: 'tw-bg-[var(--background-positive-subtle)]',\n border: 'tw-border-[var(--border-positive-subtle)]',\n titleColor: 'tw-text-[var(--content-positive-primary)]',\n icon: (\n <CheckCircleFill size={16} color=\"var(--content-positive-secondary)\" />\n ),\n },\n info: {\n bg: 'tw-bg-[var(--background-informative-subtle)]',\n border: 'tw-border-[var(--border-informative-subtle)]',\n titleColor: 'tw-text-[var(--content-informative-primary)]',\n icon: (\n <InformationCircleFill\n size={16}\n color=\"var(--content-informative-secondary)\"\n />\n ),\n },\n warning: {\n bg: 'tw-bg-[var(--background-warning-subtle)]',\n border: 'tw-border-[var(--border-warning-subtle)]',\n titleColor: 'tw-text-[var(--content-warning-primary)]',\n icon: (\n <AttentionTriangleFill\n size={16}\n color=\"var(--content-warning-secondary)\"\n />\n ),\n },\n error: {\n bg: 'tw-bg-[var(--background-negative-subtle)]',\n border: 'tw-border-[var(--border-negative-subtle)]',\n titleColor: 'tw-text-[var(--content-negative-primary)]',\n icon: (\n <CloseCircleFill size={16} color=\"var(--content-negative-secondary)\" />\n ),\n },\n none: {\n bg: 'tw-bg-[var(--background-neutral-subtle)]',\n border: 'tw-border-[var(--border-neutral-subtle)]',\n titleColor: 'tw-text-[var(--content-primary)]',\n icon: <InformationCircleFill size={16} color=\"var(--content-secondary)\" />,\n },\n};\n\nfunction Alert(props: AlertProps) {\n const {\n type = 'info',\n message,\n description,\n closable,\n onClose,\n afterClose,\n showIcon = true,\n icon,\n banner,\n action,\n className,\n style,\n } = props;\n\n const [closed, setClosed] = useState(false);\n\n if (closed) return null;\n\n const config = typeConfig[type] || typeConfig.info;\n\n return (\n <div\n className={cn(\n 'ald-alert tw-flex tw-items-start tw-gap-2 tw-rounded-r-75 tw-border tw-border-solid tw-p-3',\n banner && 'ald-alert-banner !tw-rounded-none',\n config.bg,\n config.border,\n className,\n )}\n style={style}\n role=\"alert\"\n >\n {showIcon && (\n <span className=\"ald-alert-icon tw-flex tw-items-center tw-pt-0.5\">\n {icon || config.icon}\n </span>\n )}\n <div className=\"ald-alert-content tw-min-w-0 tw-flex-1\">\n {message && (\n <div\n className={cn(\n 'ald-alert-message tw-text-sm tw-font-medium tw-leading-5',\n config.titleColor,\n )}\n >\n {message}\n </div>\n )}\n {description && (\n <div\n className=\"ald-alert-description tw-mt-1 tw-text-sm tw-font-normal tw-leading-5 tw-text-[var(--content-secondary)]\"\n style={{ fontFeatureSettings: \"'liga' off, 'clig' off\" }}\n >\n {description}\n </div>\n )}\n </div>\n {action && <div className=\"ald-alert-action\">{action}</div>}\n {closable && (\n <button\n type=\"button\"\n className=\"ald-alert-close-icon tw-flex tw-cursor-pointer tw-items-center tw-self-start tw-border-0 tw-bg-[var(--action-ghost-normal)] tw-p-0 tw-pt-0.5\"\n onClick={(e) => {\n setClosed(true);\n onClose?.(e);\n afterClose?.();\n }}\n >\n <CloseLightLine size={16} color=\"var(--content-secondary)\" />\n </button>\n )}\n </div>\n );\n}\n\nexport default Alert;\n"],"mappings":";;;;;;;;;AAyBA,IAAM,aAGF;CACF,SAAS;EACP,IAAI;EACJ,QAAQ;EACR,YAAY;EACZ,MACE,oBAAC,QAAD;GAAiB,MAAM;GAAI,OAAM;GAAsC,CAAA;EAE1E;CACD,MAAM;EACJ,IAAI;EACJ,QAAQ;EACR,YAAY;EACZ,MACE,oBAAC,QAAD;GACE,MAAM;GACN,OAAM;GACN,CAAA;EAEL;CACD,SAAS;EACP,IAAI;EACJ,QAAQ;EACR,YAAY;EACZ,MACE,oBAAC,MAAD;GACE,MAAM;GACN,OAAM;GACN,CAAA;EAEL;CACD,OAAO;EACL,IAAI;EACJ,QAAQ;EACR,YAAY;EACZ,MACE,oBAAC,QAAD;GAAiB,MAAM;GAAI,OAAM;GAAsC,CAAA;EAE1E;CACD,MAAM;EACJ,IAAI;EACJ,QAAQ;EACR,YAAY;EACZ,MAAM,oBAAC,QAAD;GAAuB,MAAM;GAAI,OAAM;GAA6B,CAAA;EAC3E;CACF;AAED,SAAS,MAAM,OAAmB;CAChC,MAAM,EACJ,OAAO,QACP,SACA,aACA,UACA,SACA,YACA,WAAW,MACX,MACA,QACA,QACA,WACA,UACE;CAEJ,MAAM,CAAC,QAAQ,aAAa,SAAS,MAAM;AAE3C,KAAI,OAAQ,QAAO;CAEnB,MAAM,SAAS,WAAW,SAAS,WAAW;AAE9C,QACE,qBAAC,OAAD;EACE,WAAW,GACT,8FACA,UAAU,qCACV,OAAO,IACP,OAAO,QACP,UACD;EACM;EACP,MAAK;YATP;GAWG,YACC,oBAAC,QAAD;IAAM,WAAU;cACb,QAAQ,OAAO;IACX,CAAA;GAET,qBAAC,OAAD;IAAK,WAAU;cAAf,CACG,WACC,oBAAC,OAAD;KACE,WAAW,GACT,4DACA,OAAO,WACR;eAEA;KACG,CAAA,EAEP,eACC,oBAAC,OAAD;KACE,WAAU;KACV,OAAO,EAAE,qBAAqB,0BAA0B;eAEvD;KACG,CAAA,CAEJ;;GACL,UAAU,oBAAC,OAAD;IAAK,WAAU;cAAoB;IAAa,CAAA;GAC1D,YACC,oBAAC,UAAD;IACE,MAAK;IACL,WAAU;IACV,UAAU,MAAM;AACd,eAAU,KAAK;AACf,eAAU,EAAE;AACZ,mBAAc;;cAGhB,oBAAC,QAAD;KAAgB,MAAM;KAAI,OAAM;KAA6B,CAAA;IACtD,CAAA;GAEP"}
@@ -3,6 +3,9 @@ interface AppProps {
3
3
  children?: React.ReactNode;
4
4
  className?: string;
5
5
  style?: React.CSSProperties;
6
+ /** z-index used by the global message and notification containers. */
7
+ overlayZIndex?: number;
6
8
  }
9
+ export declare const DEFAULT_OVERLAY_Z_INDEX = 11000;
7
10
  declare const AldApp: React.FC<AppProps>;
8
11
  export default AldApp;
package/dist/App/index.js CHANGED
@@ -4,22 +4,24 @@ import { jsx, jsxs } from "react/jsx-runtime";
4
4
  import { createPortal } from "react-dom";
5
5
  import { ToastContainer } from "react-toastify";
6
6
  //#region src/App/index.tsx
7
- var BodyPortal = ({ children }) => {
7
+ var DEFAULT_OVERLAY_Z_INDEX = 11e3;
8
+ var OverlayPortal = ({ children }) => {
8
9
  if (typeof document === "undefined") return null;
9
10
  return createPortal(children, document.body);
10
11
  };
11
- var AldApp = ({ children, className, ...restProps }) => {
12
+ var AldApp = ({ children, className, style, overlayZIndex = DEFAULT_OVERLAY_Z_INDEX, ...restProps }) => {
12
13
  return /* @__PURE__ */ jsxs("div", {
13
14
  className: cn("ald-app", className),
15
+ style,
14
16
  ...restProps,
15
- children: [
16
- /* @__PURE__ */ jsx(ToastContainer, {
17
- containerId: "message-container",
18
- limit: 1
19
- }),
20
- /* @__PURE__ */ jsx(BodyPortal, { children: /* @__PURE__ */ jsx(ToastContainer, { containerId: "notification-container" }) }),
21
- children
22
- ]
17
+ children: [/* @__PURE__ */ jsxs(OverlayPortal, { children: [/* @__PURE__ */ jsx(ToastContainer, {
18
+ containerId: "message-container",
19
+ limit: 1,
20
+ style: { zIndex: overlayZIndex }
21
+ }), /* @__PURE__ */ jsx(ToastContainer, {
22
+ containerId: "notification-container",
23
+ style: { zIndex: overlayZIndex }
24
+ })] }), children]
23
25
  });
24
26
  };
25
27
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/App/index.tsx"],"sourcesContent":["import React from 'react';\nimport { createPortal } from 'react-dom';\nimport { ToastContainer } from 'react-toastify';\nimport { cn } from '../lib/utils';\n\ninterface AppProps {\n children?: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n}\n\nconst BodyPortal: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n if (typeof document === 'undefined') return null;\n return createPortal(children, document.body);\n};\n\nconst AldApp: React.FC<AppProps> = ({ children, className, ...restProps }) => {\n return (\n <div className={cn('ald-app', className)} {...restProps}>\n <ToastContainer containerId={'message-container'} limit={1} />\n <BodyPortal>\n <ToastContainer containerId={'notification-container'} />\n </BodyPortal>\n {children}\n </div>\n );\n};\n\nexport default AldApp;\n"],"mappings":";;;;;;AAWA,IAAM,cAAuD,EAAE,eAAe;AAC5E,KAAI,OAAO,aAAa,YAAa,QAAO;AAC5C,QAAO,aAAa,UAAU,SAAS,KAAK;;AAG9C,IAAM,UAA8B,EAAE,UAAU,WAAW,GAAG,gBAAgB;AAC5E,QACE,qBAAC,OAAD;EAAK,WAAW,GAAG,WAAW,UAAU;EAAE,GAAI;YAA9C;GACE,oBAAC,gBAAD;IAAgB,aAAa;IAAqB,OAAO;IAAK,CAAA;GAC9D,oBAAC,YAAD,EAAA,UACE,oBAAC,gBAAD,EAAgB,aAAa,0BAA4B,CAAA,EAC9C,CAAA;GACZ;GACG"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/App/index.tsx"],"sourcesContent":["import React from 'react';\nimport { createPortal } from 'react-dom';\nimport { ToastContainer } from 'react-toastify';\nimport { cn } from '../lib/utils';\n\ninterface AppProps {\n children?: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n /** z-index used by the global message and notification containers. */\n overlayZIndex?: number;\n}\n\nexport const DEFAULT_OVERLAY_Z_INDEX = 11000;\n\nconst OverlayPortal: React.FC<{ children: React.ReactNode }> = ({\n children,\n}) => {\n if (typeof document === 'undefined') return null;\n return createPortal(children, document.body);\n};\n\nconst AldApp: React.FC<AppProps> = ({\n children,\n className,\n style,\n overlayZIndex = DEFAULT_OVERLAY_Z_INDEX,\n ...restProps\n}) => {\n return (\n <div className={cn('ald-app', className)} style={style} {...restProps}>\n <OverlayPortal>\n <ToastContainer\n containerId={'message-container'}\n limit={1}\n style={{ zIndex: overlayZIndex }}\n />\n <ToastContainer\n containerId={'notification-container'}\n style={{ zIndex: overlayZIndex }}\n />\n </OverlayPortal>\n {children}\n </div>\n );\n};\n\nexport default AldApp;\n"],"mappings":";;;;;;AAaA,IAAa,0BAA0B;AAEvC,IAAM,iBAA0D,EAC9D,eACI;AACJ,KAAI,OAAO,aAAa,YAAa,QAAO;AAC5C,QAAO,aAAa,UAAU,SAAS,KAAK;;AAG9C,IAAM,UAA8B,EAClC,UACA,WACA,OACA,gBAAgB,yBAChB,GAAG,gBACC;AACJ,QACE,qBAAC,OAAD;EAAK,WAAW,GAAG,WAAW,UAAU;EAAS;EAAO,GAAI;YAA5D,CACE,qBAAC,eAAD,EAAA,UAAA,CACE,oBAAC,gBAAD;GACE,aAAa;GACb,OAAO;GACP,OAAO,EAAE,QAAQ,eAAe;GAChC,CAAA,EACF,oBAAC,gBAAD;GACE,aAAa;GACb,OAAO,EAAE,QAAQ,eAAe;GAChC,CAAA,CACY,EAAA,CAAA,EACf,SACG"}
@@ -60,13 +60,13 @@ var Avatar = (props) => {
60
60
  shape
61
61
  ]);
62
62
  return /* @__PURE__ */ jsx("span", {
63
- className: cn("ald-avatar tw-inline-flex tw-items-center tw-justify-center tw-overflow-hidden tw-border-0", type === "team" ? "tw-text-[var(--non-semantic-content-green-primary)]" : "tw-text-[var(--non-semantic-content-blue-primary)]", shape === "circle" ? "tw-rounded-full" : "tw-rounded-r-50", !icon && _.isEmpty(children) && "ald-avatar-default", className),
63
+ className: cn("ald-avatar tw-inline-flex tw-items-center tw-justify-center tw-overflow-hidden tw-border-0", type === "team" ? "tw-text-[var(--content-positive-primary)]" : "tw-text-[var(--content-informative-primary)]", shape === "circle" ? "tw-rounded-full" : "tw-rounded-r-50", !icon && _.isEmpty(children) && "ald-avatar-default", className),
64
64
  style: {
65
65
  width: sizeVal,
66
66
  height: sizeVal,
67
67
  fontSize: sizeVal * .4,
68
68
  lineHeight: `${sizeVal}px`,
69
- backgroundColor: !icon && _.isEmpty(children) && (!src || imgError) ? "white" : AVATAR_TYPE_TO_BG_COLOR[type] || "var(--non-semantic-background-blue-muted)",
69
+ backgroundColor: !icon && _.isEmpty(children) && (!src || imgError) ? "var(--background-default)" : AVATAR_TYPE_TO_BG_COLOR[type] || "var(--background-informative-muted)",
70
70
  ...style
71
71
  },
72
72
  onClick,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../src/Avatar/component/Avatar/index.tsx"],"sourcesContent":["import _ from 'lodash';\nimport * as React from 'react';\nimport { useCallback, useMemo, useState } from 'react';\nimport { User } from '../../../Icon';\nimport { cn } from '../../../lib/utils';\nimport { getFontSize } from './helper';\nimport { AVATAR_SIZE_MAP, AVATAR_TYPE_TO_BG_COLOR, TAvatarSize } from './type';\n\nexport interface IAvatarProps {\n shape?: 'circle' | 'square';\n gap?: number;\n src?: React.ReactNode;\n srcSet?: string;\n draggable?: boolean;\n icon?: React.ReactNode;\n alt?: string;\n crossOrigin?: '' | 'anonymous' | 'use-credentials';\n onClick?: (e?: React.MouseEvent<HTMLElement>) => void;\n onError?: () => boolean;\n size?: TAvatarSize;\n type?: 'user' | 'team' | 'count';\n className?: string;\n style?: React.CSSProperties;\n children?: React.ReactNode;\n}\n\nconst ZERO = 0;\n\nconst Avatar = (props: IAvatarProps) => {\n const {\n size = 'middle',\n children,\n src,\n srcSet,\n draggable,\n icon,\n shape = 'circle',\n alt,\n crossOrigin,\n type = 'user',\n onClick,\n onError,\n className,\n style,\n } = props;\n\n const [imgError, setImgError] = useState(false);\n\n const getSize = useCallback(() => {\n if (typeof size === 'number') return size;\n return AVATAR_SIZE_MAP[size] || 32;\n }, [size]);\n\n const getChildren = useCallback(() => {\n if (_.isEmpty(children)) return null;\n if (typeof children === 'string') return children[ZERO].toLocaleUpperCase();\n return children;\n }, [children]);\n\n const sizeVal = getSize();\n\n const innerContent = useMemo(() => {\n if (src && !imgError) {\n if (typeof src === 'string') {\n return (\n <img\n src={src}\n srcSet={srcSet}\n draggable={draggable}\n crossOrigin={crossOrigin}\n alt={alt}\n className=\"tw-size-full tw-object-cover\"\n style={shape === 'circle' ? { borderRadius: '50%' } : undefined}\n onError={() => {\n const result = onError?.();\n if (result !== false) setImgError(true);\n }}\n />\n );\n }\n return src;\n }\n\n if (icon) return icon;\n\n if (!_.isEmpty(children)) {\n return (\n <div className=\"tw-flex tw-size-full tw-items-center tw-justify-center\">\n <span style={getFontSize(sizeVal)}>{getChildren()}</span>\n </div>\n );\n }\n\n return <User size={sizeVal} />;\n }, [\n src,\n icon,\n children,\n sizeVal,\n getChildren,\n imgError,\n alt,\n srcSet,\n draggable,\n crossOrigin,\n onError,\n shape,\n ]);\n\n return (\n <span\n className={cn(\n 'ald-avatar tw-inline-flex tw-items-center tw-justify-center tw-overflow-hidden tw-border-0',\n type === 'team'\n ? 'tw-text-[var(--non-semantic-content-green-primary)]'\n : 'tw-text-[var(--non-semantic-content-blue-primary)]',\n shape === 'circle' ? 'tw-rounded-full' : 'tw-rounded-r-50',\n !icon && _.isEmpty(children) && 'ald-avatar-default',\n className,\n )}\n style={{\n width: sizeVal,\n height: sizeVal,\n fontSize: sizeVal * 0.4,\n lineHeight: `${sizeVal}px`,\n backgroundColor:\n !icon && _.isEmpty(children) && (!src || imgError)\n ? 'white'\n : AVATAR_TYPE_TO_BG_COLOR[type] ||\n 'var(--non-semantic-background-blue-muted)',\n ...style,\n }}\n onClick={onClick}\n >\n {innerContent}\n </span>\n );\n};\n\nexport default Avatar;\n"],"mappings":";;;;;;;;AA0BA,IAAM,OAAO;AAEb,IAAM,UAAU,UAAwB;CACtC,MAAM,EACJ,OAAO,UACP,UACA,KACA,QACA,WACA,MACA,QAAQ,UACR,KACA,aACA,OAAO,QACP,SACA,SACA,WACA,UACE;CAEJ,MAAM,CAAC,UAAU,eAAe,SAAS,MAAM;CAE/C,MAAM,UAAU,kBAAkB;AAChC,MAAI,OAAO,SAAS,SAAU,QAAO;AACrC,SAAO,gBAAgB,SAAS;IAC/B,CAAC,KAAK,CAAC;CAEV,MAAM,cAAc,kBAAkB;AACpC,MAAI,EAAE,QAAQ,SAAS,CAAE,QAAO;AAChC,MAAI,OAAO,aAAa,SAAU,QAAO,SAAS,MAAM,mBAAmB;AAC3E,SAAO;IACN,CAAC,SAAS,CAAC;CAEd,MAAM,UAAU,SAAS;CAEzB,MAAM,eAAe,cAAc;AACjC,MAAI,OAAO,CAAC,UAAU;AACpB,OAAI,OAAO,QAAQ,SACjB,QACE,oBAAC,OAAD;IACO;IACG;IACG;IACE;IACR;IACL,WAAU;IACV,OAAO,UAAU,WAAW,EAAE,cAAc,OAAO,GAAG;IACtD,eAAe;AAEb,SADe,WAAW,KACX,MAAO,aAAY,KAAK;;IAEzC,CAAA;AAGN,UAAO;;AAGT,MAAI,KAAM,QAAO;AAEjB,MAAI,CAAC,EAAE,QAAQ,SAAS,CACtB,QACE,oBAAC,OAAD;GAAK,WAAU;aACb,oBAAC,QAAD;IAAM,OAAO,YAAY,QAAQ;cAAG,aAAa;IAAQ,CAAA;GACrD,CAAA;AAIV,SAAO,oBAAC,MAAD,EAAM,MAAM,SAAW,CAAA;IAC7B;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;AAEF,QACE,oBAAC,QAAD;EACE,WAAW,GACT,8FACA,SAAS,SACL,wDACA,sDACJ,UAAU,WAAW,oBAAoB,mBACzC,CAAC,QAAQ,EAAE,QAAQ,SAAS,IAAI,sBAChC,UACD;EACD,OAAO;GACL,OAAO;GACP,QAAQ;GACR,UAAU,UAAU;GACpB,YAAY,GAAG,QAAQ;GACvB,iBACE,CAAC,QAAQ,EAAE,QAAQ,SAAS,KAAK,CAAC,OAAO,YACrC,UACA,wBAAwB,SACxB;GACN,GAAG;GACJ;EACQ;YAER;EACI,CAAA"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../src/Avatar/component/Avatar/index.tsx"],"sourcesContent":["import _ from 'lodash';\nimport * as React from 'react';\nimport { useCallback, useMemo, useState } from 'react';\nimport { User } from '../../../Icon';\nimport { cn } from '../../../lib/utils';\nimport { getFontSize } from './helper';\nimport { AVATAR_SIZE_MAP, AVATAR_TYPE_TO_BG_COLOR, TAvatarSize } from './type';\n\nexport interface IAvatarProps {\n shape?: 'circle' | 'square';\n gap?: number;\n src?: React.ReactNode;\n srcSet?: string;\n draggable?: boolean;\n icon?: React.ReactNode;\n alt?: string;\n crossOrigin?: '' | 'anonymous' | 'use-credentials';\n onClick?: (e?: React.MouseEvent<HTMLElement>) => void;\n onError?: () => boolean;\n size?: TAvatarSize;\n type?: 'user' | 'team' | 'count';\n className?: string;\n style?: React.CSSProperties;\n children?: React.ReactNode;\n}\n\nconst ZERO = 0;\n\nconst Avatar = (props: IAvatarProps) => {\n const {\n size = 'middle',\n children,\n src,\n srcSet,\n draggable,\n icon,\n shape = 'circle',\n alt,\n crossOrigin,\n type = 'user',\n onClick,\n onError,\n className,\n style,\n } = props;\n\n const [imgError, setImgError] = useState(false);\n\n const getSize = useCallback(() => {\n if (typeof size === 'number') return size;\n return AVATAR_SIZE_MAP[size] || 32;\n }, [size]);\n\n const getChildren = useCallback(() => {\n if (_.isEmpty(children)) return null;\n if (typeof children === 'string') return children[ZERO].toLocaleUpperCase();\n return children;\n }, [children]);\n\n const sizeVal = getSize();\n\n const innerContent = useMemo(() => {\n if (src && !imgError) {\n if (typeof src === 'string') {\n return (\n <img\n src={src}\n srcSet={srcSet}\n draggable={draggable}\n crossOrigin={crossOrigin}\n alt={alt}\n className=\"tw-size-full tw-object-cover\"\n style={shape === 'circle' ? { borderRadius: '50%' } : undefined}\n onError={() => {\n const result = onError?.();\n if (result !== false) setImgError(true);\n }}\n />\n );\n }\n return src;\n }\n\n if (icon) return icon;\n\n if (!_.isEmpty(children)) {\n return (\n <div className=\"tw-flex tw-size-full tw-items-center tw-justify-center\">\n <span style={getFontSize(sizeVal)}>{getChildren()}</span>\n </div>\n );\n }\n\n return <User size={sizeVal} />;\n }, [\n src,\n icon,\n children,\n sizeVal,\n getChildren,\n imgError,\n alt,\n srcSet,\n draggable,\n crossOrigin,\n onError,\n shape,\n ]);\n\n return (\n <span\n className={cn(\n 'ald-avatar tw-inline-flex tw-items-center tw-justify-center tw-overflow-hidden tw-border-0',\n type === 'team'\n ? 'tw-text-[var(--content-positive-primary)]'\n : 'tw-text-[var(--content-informative-primary)]',\n shape === 'circle' ? 'tw-rounded-full' : 'tw-rounded-r-50',\n !icon && _.isEmpty(children) && 'ald-avatar-default',\n className,\n )}\n style={{\n width: sizeVal,\n height: sizeVal,\n fontSize: sizeVal * 0.4,\n lineHeight: `${sizeVal}px`,\n backgroundColor:\n !icon && _.isEmpty(children) && (!src || imgError)\n ? 'var(--background-default)'\n : AVATAR_TYPE_TO_BG_COLOR[type] ||\n 'var(--background-informative-muted)',\n ...style,\n }}\n onClick={onClick}\n >\n {innerContent}\n </span>\n );\n};\n\nexport default Avatar;\n"],"mappings":";;;;;;;;AA0BA,IAAM,OAAO;AAEb,IAAM,UAAU,UAAwB;CACtC,MAAM,EACJ,OAAO,UACP,UACA,KACA,QACA,WACA,MACA,QAAQ,UACR,KACA,aACA,OAAO,QACP,SACA,SACA,WACA,UACE;CAEJ,MAAM,CAAC,UAAU,eAAe,SAAS,MAAM;CAE/C,MAAM,UAAU,kBAAkB;AAChC,MAAI,OAAO,SAAS,SAAU,QAAO;AACrC,SAAO,gBAAgB,SAAS;IAC/B,CAAC,KAAK,CAAC;CAEV,MAAM,cAAc,kBAAkB;AACpC,MAAI,EAAE,QAAQ,SAAS,CAAE,QAAO;AAChC,MAAI,OAAO,aAAa,SAAU,QAAO,SAAS,MAAM,mBAAmB;AAC3E,SAAO;IACN,CAAC,SAAS,CAAC;CAEd,MAAM,UAAU,SAAS;CAEzB,MAAM,eAAe,cAAc;AACjC,MAAI,OAAO,CAAC,UAAU;AACpB,OAAI,OAAO,QAAQ,SACjB,QACE,oBAAC,OAAD;IACO;IACG;IACG;IACE;IACR;IACL,WAAU;IACV,OAAO,UAAU,WAAW,EAAE,cAAc,OAAO,GAAG;IACtD,eAAe;AAEb,SADe,WAAW,KACX,MAAO,aAAY,KAAK;;IAEzC,CAAA;AAGN,UAAO;;AAGT,MAAI,KAAM,QAAO;AAEjB,MAAI,CAAC,EAAE,QAAQ,SAAS,CACtB,QACE,oBAAC,OAAD;GAAK,WAAU;aACb,oBAAC,QAAD;IAAM,OAAO,YAAY,QAAQ;cAAG,aAAa;IAAQ,CAAA;GACrD,CAAA;AAIV,SAAO,oBAAC,MAAD,EAAM,MAAM,SAAW,CAAA;IAC7B;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;AAEF,QACE,oBAAC,QAAD;EACE,WAAW,GACT,8FACA,SAAS,SACL,8CACA,gDACJ,UAAU,WAAW,oBAAoB,mBACzC,CAAC,QAAQ,EAAE,QAAQ,SAAS,IAAI,sBAChC,UACD;EACD,OAAO;GACL,OAAO;GACP,QAAQ;GACR,UAAU,UAAU;GACpB,YAAY,GAAG,QAAQ;GACvB,iBACE,CAAC,QAAQ,EAAE,QAAQ,SAAS,KAAK,CAAC,OAAO,YACrC,8BACA,wBAAwB,SACxB;GACN,GAAG;GACJ;EACQ;YAER;EACI,CAAA"}
@@ -15,9 +15,9 @@ var AVATAR_SIZE_TO_FONT_SIZE = {
15
15
  [64]: 24
16
16
  };
17
17
  var AVATAR_TYPE_TO_BG_COLOR = {
18
- user: "var(--non-semantic-background-blue-muted)",
19
- team: "var(--non-semantic-background-green-muted)",
20
- count: "var(--non-semantic-background-grey-muted)"
18
+ user: "var(--background-informative-muted)",
19
+ team: "var(--background-positive-muted)",
20
+ count: "var(--background-neutral-muted)"
21
21
  };
22
22
  //#endregion
23
23
  export { AVATAR_SIZE_MAP, AVATAR_SIZE_TO_FONT_SIZE, AVATAR_TYPE_TO_BG_COLOR };
@@ -1 +1 @@
1
- {"version":3,"file":"type.js","names":[],"sources":["../../../../src/Avatar/component/Avatar/type.ts"],"sourcesContent":["export type TAvatarSize = 'large' | 'middle' | 'small' | number;\n\nexport interface GroupProps {\n maxCount?: number;\n maxStyle?: React.CSSProperties;\n maxPopoverPlacement?: 'top' | 'bottom';\n size?: TAvatarSize;\n className?: string;\n style?: React.CSSProperties;\n children?: React.ReactNode;\n}\nexport const AVATAR_SIZE_MAP = {\n large: 40,\n middle: 32,\n small: 28,\n};\n\nexport const AVATAR_SIZE_TO_FONT_SIZE = {\n [16]: 8,\n [20]: 10,\n [24]: 10,\n [28]: 12,\n [32]: 12,\n [40]: 14,\n [48]: 16,\n [64]: 24,\n};\n\nexport const AVATAR_TYPE_TO_BG_COLOR = {\n user: 'var(--non-semantic-background-blue-muted)',\n team: 'var(--non-semantic-background-green-muted)',\n count: 'var(--non-semantic-background-grey-muted)',\n};\n"],"mappings":";AAWA,IAAa,kBAAkB;CAC7B,OAAO;CACP,QAAQ;CACR,OAAO;CACR;AAED,IAAa,2BAA2B;EACrC,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;CACP;AAED,IAAa,0BAA0B;CACrC,MAAM;CACN,MAAM;CACN,OAAO;CACR"}
1
+ {"version":3,"file":"type.js","names":[],"sources":["../../../../src/Avatar/component/Avatar/type.ts"],"sourcesContent":["export type TAvatarSize = 'large' | 'middle' | 'small' | number;\n\nexport interface GroupProps {\n maxCount?: number;\n maxStyle?: React.CSSProperties;\n maxPopoverPlacement?: 'top' | 'bottom';\n size?: TAvatarSize;\n className?: string;\n style?: React.CSSProperties;\n children?: React.ReactNode;\n}\nexport const AVATAR_SIZE_MAP = {\n large: 40,\n middle: 32,\n small: 28,\n};\n\nexport const AVATAR_SIZE_TO_FONT_SIZE = {\n [16]: 8,\n [20]: 10,\n [24]: 10,\n [28]: 12,\n [32]: 12,\n [40]: 14,\n [48]: 16,\n [64]: 24,\n};\n\nexport const AVATAR_TYPE_TO_BG_COLOR = {\n user: 'var(--background-informative-muted)',\n team: 'var(--background-positive-muted)',\n count: 'var(--background-neutral-muted)',\n};\n"],"mappings":";AAWA,IAAa,kBAAkB;CAC7B,OAAO;CACP,QAAQ;CACR,OAAO;CACR;AAED,IAAa,2BAA2B;EACrC,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;CACP;AAED,IAAa,0BAA0B;CACrC,MAAM;CACN,MAAM;CACN,OAAO;CACR"}
@@ -17,11 +17,11 @@ var badgeVariants = cva("ald-badge tw-inline-flex tw-cursor-default tw-items-cen
17
17
  large: "ald-badge-large tw-[font-feature-settings:\"liga\"_off,\"clig\"_off] tw-h-[var(--2xs)] tw-min-w-[var(--2xs)] tw-gap-[var(--component-gap-xs)] tw-px-[var(--component-padding-sm)] tw-text-sm tw-font-normal tw-leading-5"
18
18
  },
19
19
  status: {
20
- default: "ald-badge-default tw-bg-[var(--non-semantic-background-grey-muted)] tw-text-[var(--non-semantic-content-grey-primary)]",
21
- success: "ald-badge-success tw-bg-[var(--non-semantic-background-green-muted)] tw-text-[var(--non-semantic-content-green-primary)]",
22
- error: "ald-badge-error tw-bg-[var(--non-semantic-background-red-muted)] tw-text-[var(--non-semantic-content-red-primary)]",
23
- info: "ald-badge-info tw-bg-[var(--non-semantic-background-blue-muted)] tw-text-[var(--non-semantic-content-blue-primary)]",
24
- warning: "ald-badge-warning tw-bg-[var(--non-semantic-background-orange-muted)] tw-text-[var(--non-semantic-content-orange-primary)]"
20
+ default: "ald-badge-default tw-bg-[var(--background-neutral-muted)] tw-text-[var(--content-primary)]",
21
+ success: "ald-badge-success tw-bg-[var(--background-positive-muted)] tw-text-[var(--content-positive-primary)]",
22
+ error: "ald-badge-error tw-bg-[var(--background-negative-muted)] tw-text-[var(--content-negative-primary)]",
23
+ info: "ald-badge-info tw-bg-[var(--background-informative-muted)] tw-text-[var(--content-informative-primary)]",
24
+ warning: "ald-badge-warning tw-bg-[var(--background-warning-muted)] tw-text-[var(--content-warning-primary)]"
25
25
  },
26
26
  clickable: {
27
27
  true: "ald-badge-clickable tw-cursor-pointer",
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/Badge/index.tsx"],"sourcesContent":["import { cva } from 'class-variance-authority';\nimport React from 'react';\nimport { cn } from '../lib/utils';\n\nexport interface BadgeProps {\n /**\n * 展示的文本内容\n */\n count: string | number;\n /**\n * 状态\n */\n status?: 'success' | 'error' | 'default' | 'info' | 'warning';\n /**\n * 大小\n */\n size?: 'default' | 'large';\n className?: string;\n style?: React.CSSProperties;\n onClick?: React.MouseEventHandler;\n}\n\nconst STATUS_DOT_COLORS: Record<string, string> = {\n default: 'tw-bg-[var(--content-secondary)]',\n success: 'tw-bg-[var(--content-positive-secondary)]',\n error: 'tw-bg-[var(--content-negative-secondary)]',\n info: 'tw-bg-[var(--content-informative-secondary)]',\n warning: 'tw-bg-[var(--content-warning-secondary)]',\n};\n\nconst badgeVariants = cva(\n 'ald-badge tw-inline-flex tw-cursor-default tw-items-center tw-justify-center tw-rounded-[99px]',\n {\n variants: {\n size: {\n default:\n 'tw-[font-feature-settings:\"liga\"_off,\"clig\"_off] tw-h-[var(--3xs)] tw-min-w-[var(--3xs)] tw-gap-[var(--component-gap-xs)] tw-px-[var(--component-padding-xs)] tw-text-xs tw-font-normal tw-leading-4',\n large:\n 'ald-badge-large tw-[font-feature-settings:\"liga\"_off,\"clig\"_off] tw-h-[var(--2xs)] tw-min-w-[var(--2xs)] tw-gap-[var(--component-gap-xs)] tw-px-[var(--component-padding-sm)] tw-text-sm tw-font-normal tw-leading-5',\n },\n status: {\n default:\n 'ald-badge-default tw-bg-[var(--non-semantic-background-grey-muted)] tw-text-[var(--non-semantic-content-grey-primary)]',\n success:\n 'ald-badge-success tw-bg-[var(--non-semantic-background-green-muted)] tw-text-[var(--non-semantic-content-green-primary)]',\n error:\n 'ald-badge-error tw-bg-[var(--non-semantic-background-red-muted)] tw-text-[var(--non-semantic-content-red-primary)]',\n info: 'ald-badge-info tw-bg-[var(--non-semantic-background-blue-muted)] tw-text-[var(--non-semantic-content-blue-primary)]',\n warning:\n 'ald-badge-warning tw-bg-[var(--non-semantic-background-orange-muted)] tw-text-[var(--non-semantic-content-orange-primary)]',\n },\n clickable: {\n true: 'ald-badge-clickable tw-cursor-pointer',\n false: '',\n },\n },\n defaultVariants: {\n size: 'default',\n status: 'default',\n clickable: false,\n },\n },\n);\n\nexport default function Badge(props: BadgeProps) {\n const {\n count,\n status = 'default',\n size,\n className,\n style,\n onClick,\n ...rest\n } = props;\n\n const isDot = count === '' || count === undefined;\n\n if (isDot) {\n return (\n <div\n {...rest}\n className={cn(\n 'ald-badge ald-badge-dot tw-flex tw-aspect-square tw-items-start tw-rounded-full',\n STATUS_DOT_COLORS[status],\n typeof onClick === 'function' && 'tw-cursor-pointer',\n className,\n )}\n style={{ width: 8, height: 8, gap: 8, ...style }}\n onClick={onClick}\n />\n );\n }\n\n const isNumeric =\n typeof count === 'number' ||\n (typeof count === 'string' && /^[+-]?\\d+$/.test(count.trim()));\n\n return (\n <div\n {...rest}\n className={cn(\n badgeVariants({\n size: size || 'default',\n status,\n clickable: typeof onClick === 'function',\n }),\n className,\n )}\n style={isNumeric ? { fontFamily: 'monospace', ...style } : style}\n onClick={onClick}\n >\n {count}\n </div>\n );\n}\n"],"mappings":";;;;;AAsBA,IAAM,oBAA4C;CAChD,SAAS;CACT,SAAS;CACT,OAAO;CACP,MAAM;CACN,SAAS;CACV;AAED,IAAM,gBAAgB,IACpB,kGACA;CACE,UAAU;EACR,MAAM;GACJ,SACE;GACF,OACE;GACH;EACD,QAAQ;GACN,SACE;GACF,SACE;GACF,OACE;GACF,MAAM;GACN,SACE;GACH;EACD,WAAW;GACT,MAAM;GACN,OAAO;GACR;EACF;CACD,iBAAiB;EACf,MAAM;EACN,QAAQ;EACR,WAAW;EACZ;CACF,CACF;AAED,SAAwB,MAAM,OAAmB;CAC/C,MAAM,EACJ,OACA,SAAS,WACT,MACA,WACA,OACA,SACA,GAAG,SACD;AAIJ,KAFc,UAAU,MAAM,UAAU,OAGtC,QACE,oBAAC,OAAD;EACE,GAAI;EACJ,WAAW,GACT,mFACA,kBAAkB,SAClB,OAAO,YAAY,cAAc,qBACjC,UACD;EACD,OAAO;GAAE,OAAO;GAAG,QAAQ;GAAG,KAAK;GAAG,GAAG;GAAO;EACvC;EACT,CAAA;CAIN,MAAM,YACJ,OAAO,UAAU,YAChB,OAAO,UAAU,YAAY,aAAa,KAAK,MAAM,MAAM,CAAC;AAE/D,QACE,oBAAC,OAAD;EACE,GAAI;EACJ,WAAW,GACT,cAAc;GACZ,MAAM,QAAQ;GACd;GACA,WAAW,OAAO,YAAY;GAC/B,CAAC,EACF,UACD;EACD,OAAO,YAAY;GAAE,YAAY;GAAa,GAAG;GAAO,GAAG;EAClD;YAER;EACG,CAAA"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/Badge/index.tsx"],"sourcesContent":["import { cva } from 'class-variance-authority';\nimport React from 'react';\nimport { cn } from '../lib/utils';\n\nexport interface BadgeProps {\n /**\n * 展示的文本内容\n */\n count: string | number;\n /**\n * 状态\n */\n status?: 'success' | 'error' | 'default' | 'info' | 'warning';\n /**\n * 大小\n */\n size?: 'default' | 'large';\n className?: string;\n style?: React.CSSProperties;\n onClick?: React.MouseEventHandler;\n}\n\nconst STATUS_DOT_COLORS: Record<string, string> = {\n default: 'tw-bg-[var(--content-secondary)]',\n success: 'tw-bg-[var(--content-positive-secondary)]',\n error: 'tw-bg-[var(--content-negative-secondary)]',\n info: 'tw-bg-[var(--content-informative-secondary)]',\n warning: 'tw-bg-[var(--content-warning-secondary)]',\n};\n\nconst badgeVariants = cva(\n 'ald-badge tw-inline-flex tw-cursor-default tw-items-center tw-justify-center tw-rounded-[99px]',\n {\n variants: {\n size: {\n default:\n 'tw-[font-feature-settings:\"liga\"_off,\"clig\"_off] tw-h-[var(--3xs)] tw-min-w-[var(--3xs)] tw-gap-[var(--component-gap-xs)] tw-px-[var(--component-padding-xs)] tw-text-xs tw-font-normal tw-leading-4',\n large:\n 'ald-badge-large tw-[font-feature-settings:\"liga\"_off,\"clig\"_off] tw-h-[var(--2xs)] tw-min-w-[var(--2xs)] tw-gap-[var(--component-gap-xs)] tw-px-[var(--component-padding-sm)] tw-text-sm tw-font-normal tw-leading-5',\n },\n status: {\n default:\n 'ald-badge-default tw-bg-[var(--background-neutral-muted)] tw-text-[var(--content-primary)]',\n success:\n 'ald-badge-success tw-bg-[var(--background-positive-muted)] tw-text-[var(--content-positive-primary)]',\n error:\n 'ald-badge-error tw-bg-[var(--background-negative-muted)] tw-text-[var(--content-negative-primary)]',\n info: 'ald-badge-info tw-bg-[var(--background-informative-muted)] tw-text-[var(--content-informative-primary)]',\n warning:\n 'ald-badge-warning tw-bg-[var(--background-warning-muted)] tw-text-[var(--content-warning-primary)]',\n },\n clickable: {\n true: 'ald-badge-clickable tw-cursor-pointer',\n false: '',\n },\n },\n defaultVariants: {\n size: 'default',\n status: 'default',\n clickable: false,\n },\n },\n);\n\nexport default function Badge(props: BadgeProps) {\n const {\n count,\n status = 'default',\n size,\n className,\n style,\n onClick,\n ...rest\n } = props;\n\n const isDot = count === '' || count === undefined;\n\n if (isDot) {\n return (\n <div\n {...rest}\n className={cn(\n 'ald-badge ald-badge-dot tw-flex tw-aspect-square tw-items-start tw-rounded-full',\n STATUS_DOT_COLORS[status],\n typeof onClick === 'function' && 'tw-cursor-pointer',\n className,\n )}\n style={{ width: 8, height: 8, gap: 8, ...style }}\n onClick={onClick}\n />\n );\n }\n\n const isNumeric =\n typeof count === 'number' ||\n (typeof count === 'string' && /^[+-]?\\d+$/.test(count.trim()));\n\n return (\n <div\n {...rest}\n className={cn(\n badgeVariants({\n size: size || 'default',\n status,\n clickable: typeof onClick === 'function',\n }),\n className,\n )}\n style={isNumeric ? { fontFamily: 'monospace', ...style } : style}\n onClick={onClick}\n >\n {count}\n </div>\n );\n}\n"],"mappings":";;;;;AAsBA,IAAM,oBAA4C;CAChD,SAAS;CACT,SAAS;CACT,OAAO;CACP,MAAM;CACN,SAAS;CACV;AAED,IAAM,gBAAgB,IACpB,kGACA;CACE,UAAU;EACR,MAAM;GACJ,SACE;GACF,OACE;GACH;EACD,QAAQ;GACN,SACE;GACF,SACE;GACF,OACE;GACF,MAAM;GACN,SACE;GACH;EACD,WAAW;GACT,MAAM;GACN,OAAO;GACR;EACF;CACD,iBAAiB;EACf,MAAM;EACN,QAAQ;EACR,WAAW;EACZ;CACF,CACF;AAED,SAAwB,MAAM,OAAmB;CAC/C,MAAM,EACJ,OACA,SAAS,WACT,MACA,WACA,OACA,SACA,GAAG,SACD;AAIJ,KAFc,UAAU,MAAM,UAAU,OAGtC,QACE,oBAAC,OAAD;EACE,GAAI;EACJ,WAAW,GACT,mFACA,kBAAkB,SAClB,OAAO,YAAY,cAAc,qBACjC,UACD;EACD,OAAO;GAAE,OAAO;GAAG,QAAQ;GAAG,KAAK;GAAG,GAAG;GAAO;EACvC;EACT,CAAA;CAIN,MAAM,YACJ,OAAO,UAAU,YAChB,OAAO,UAAU,YAAY,aAAa,KAAK,MAAM,MAAM,CAAC;AAE/D,QACE,oBAAC,OAAD;EACE,GAAI;EACJ,WAAW,GACT,cAAc;GACZ,MAAM,QAAQ;GACd;GACA,WAAW,OAAO,YAAY;GAC/B,CAAC,EACF,UACD;EACD,OAAO,YAAY;GAAE,YAAY;GAAa,GAAG;GAAO,GAAG;EAClD;YAER;EACG,CAAA"}
@@ -25,9 +25,9 @@ var Breadcrumb = (props) => {
25
25
  if (items) return items.map((item, index) => {
26
26
  const isLast = index === items.length - 1;
27
27
  return /* @__PURE__ */ jsxs(React.Fragment, { children: [/* @__PURE__ */ jsx("span", {
28
- className: cn("ald-breadcrumb-item tw-cursor-pointer tw-text-sm [&_a]:tw-text-[var(--alias-colors-link-default)] [&_a:hover]:tw-text-[var(--alias-colors-link-hover)]", isLast ? "tw-text-[var(--content-primary)]" : "tw-text-[var(--content-tertiary)] hover:tw-text-[var(--content-primary)]", item.className),
28
+ className: cn("ald-breadcrumb-item tw-cursor-pointer tw-text-sm [&_a:hover]:tw-text-[var(--content-brand-primary)] [&_a]:tw-text-[var(--content-brand-secondary)]", isLast ? "tw-text-[var(--content-primary)]" : "tw-text-[var(--content-tertiary)] hover:tw-text-[var(--content-primary)]", item.className),
29
29
  children: item.href ? /* @__PURE__ */ jsx("a", {
30
- className: "ald-breadcrumb-link tw-text-[var(--alias-colors-link-default)] hover:tw-text-[var(--alias-colors-link-hover)]",
30
+ className: "ald-breadcrumb-link tw-text-[var(--content-brand-secondary)] hover:tw-text-[var(--content-brand-primary)]",
31
31
  href: item.href,
32
32
  onClick: item.onClick,
33
33
  children: item.title
@@ -58,10 +58,10 @@ var Breadcrumb = (props) => {
58
58
  var BreadcrumbItem = (props) => {
59
59
  const { className, children, href, onClick, ...rest } = props;
60
60
  return /* @__PURE__ */ jsx("span", {
61
- className: cn("ald-breadcrumb-item tw-cursor-pointer tw-text-sm [&_a]:tw-text-[var(--alias-colors-link-default)] [&_a:hover]:tw-text-[var(--alias-colors-link-hover)]", rest["data-last"] === "true" ? "tw-text-[var(--content-primary)]" : "tw-text-[var(--content-tertiary)] hover:tw-text-[var(--content-primary)]", className),
61
+ className: cn("ald-breadcrumb-item tw-cursor-pointer tw-text-sm [&_a:hover]:tw-text-[var(--content-brand-primary)] [&_a]:tw-text-[var(--content-brand-secondary)]", rest["data-last"] === "true" ? "tw-text-[var(--content-primary)]" : "tw-text-[var(--content-tertiary)] hover:tw-text-[var(--content-primary)]", className),
62
62
  onClick,
63
63
  children: href ? /* @__PURE__ */ jsx("a", {
64
- className: "ald-breadcrumb-link tw-text-[var(--alias-colors-link-default)] hover:tw-text-[var(--alias-colors-link-hover)]",
64
+ className: "ald-breadcrumb-link tw-text-[var(--content-brand-secondary)] hover:tw-text-[var(--content-brand-primary)]",
65
65
  href,
66
66
  children
67
67
  }) : children
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/Breadcrumb/index.tsx"],"sourcesContent":["import React from 'react';\nimport { cn } from '../lib/utils';\n\nconst DefaultSeparator = () => (\n <span className=\"default-separator tw-mx-1 tw-inline-flex tw-items-center tw-text-[var(--content-tertiary)]\">\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M6 3.5L10.5 8L6 12.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </span>\n);\n\nexport interface BreadcrumbProps {\n className?: string;\n style?: React.CSSProperties;\n separator?: React.ReactNode;\n items?: Array<{\n title: React.ReactNode;\n href?: string;\n onClick?: (e: React.MouseEvent) => void;\n className?: string;\n }>;\n children?: React.ReactNode;\n}\n\nexport interface BreadcrumbItemProps {\n className?: string;\n children?: React.ReactNode;\n href?: string;\n onClick?: (e: React.MouseEvent) => void;\n}\n\ninterface IBreadcrumbItemInterface extends React.FC<BreadcrumbItemProps> {\n __ANT_BREADCRUMB_ITEM: boolean;\n}\n\nconst Breadcrumb = (props: BreadcrumbProps) => {\n const {\n className,\n style,\n separator = <DefaultSeparator />,\n items,\n children,\n } = props;\n\n const renderItems = () => {\n if (items) {\n return items.map((item, index) => {\n const isLast = index === items.length - 1;\n return (\n <React.Fragment key={index}>\n <span\n className={cn(\n 'ald-breadcrumb-item tw-cursor-pointer tw-text-sm [&_a]:tw-text-[var(--alias-colors-link-default)] [&_a:hover]:tw-text-[var(--alias-colors-link-hover)]',\n isLast\n ? 'tw-text-[var(--content-primary)]'\n : 'tw-text-[var(--content-tertiary)] hover:tw-text-[var(--content-primary)]',\n item.className,\n )}\n >\n {item.href ? (\n <a\n className=\"ald-breadcrumb-link tw-text-[var(--alias-colors-link-default)] hover:tw-text-[var(--alias-colors-link-hover)]\"\n href={item.href}\n onClick={item.onClick}\n >\n {item.title}\n </a>\n ) : (\n <span onClick={item.onClick}>{item.title}</span>\n )}\n </span>\n {separator !== null && !isLast && (\n <span className=\"ald-breadcrumb-separator tw-inline-flex tw-items-center\">\n {separator}\n </span>\n )}\n </React.Fragment>\n );\n });\n }\n\n const childArray = React.Children.toArray(children);\n return childArray.map((child, index) => {\n const isLast = index === childArray.length - 1;\n return (\n <React.Fragment key={index}>\n {React.isValidElement(child)\n ? React.cloneElement(child as React.ReactElement, {\n 'data-last': isLast ? 'true' : undefined,\n })\n : child}\n {separator !== null && !isLast && (\n <span className=\"ald-breadcrumb-separator tw-inline-flex tw-items-center\">\n {separator}\n </span>\n )}\n </React.Fragment>\n );\n });\n };\n\n return (\n <nav\n className={cn(\n 'ald-breadcrumb tw-flex tw-items-center tw-text-sm',\n className,\n )}\n style={style}\n >\n {renderItems()}\n </nav>\n );\n};\n\nconst BreadcrumbItem: IBreadcrumbItemInterface = (\n props: BreadcrumbItemProps & { 'data-last'?: string },\n) => {\n const { className, children, href, onClick, ...rest } = props;\n const isLast = rest['data-last'] === 'true';\n return (\n <span\n className={cn(\n 'ald-breadcrumb-item tw-cursor-pointer tw-text-sm [&_a]:tw-text-[var(--alias-colors-link-default)] [&_a:hover]:tw-text-[var(--alias-colors-link-hover)]',\n isLast\n ? 'tw-text-[var(--content-primary)]'\n : 'tw-text-[var(--content-tertiary)] hover:tw-text-[var(--content-primary)]',\n className,\n )}\n onClick={onClick}\n >\n {href ? (\n <a\n className=\"ald-breadcrumb-link tw-text-[var(--alias-colors-link-default)] hover:tw-text-[var(--alias-colors-link-hover)]\"\n href={href}\n >\n {children}\n </a>\n ) : (\n children\n )}\n </span>\n );\n};\n\nBreadcrumbItem.__ANT_BREADCRUMB_ITEM = true;\n\nBreadcrumb.Item = BreadcrumbItem;\n\nexport default Breadcrumb;\n"],"mappings":";;;;AAGA,IAAM,yBACJ,oBAAC,QAAD;CAAM,WAAU;WACd,oBAAC,OAAD;EACE,OAAM;EACN,QAAO;EACP,SAAQ;EACR,MAAK;EACL,OAAM;YAEN,oBAAC,QAAD;GACE,GAAE;GACF,QAAO;GACP,aAAY;GACZ,eAAc;GACd,gBAAe;GACf,CAAA;EACE,CAAA;CACD,CAAA;AA2BT,IAAM,cAAc,UAA2B;CAC7C,MAAM,EACJ,WACA,OACA,YAAY,oBAAC,kBAAD,EAAoB,CAAA,EAChC,OACA,aACE;CAEJ,MAAM,oBAAoB;AACxB,MAAI,MACF,QAAO,MAAM,KAAK,MAAM,UAAU;GAChC,MAAM,SAAS,UAAU,MAAM,SAAS;AACxC,UACE,qBAAC,MAAM,UAAP,EAAA,UAAA,CACE,oBAAC,QAAD;IACE,WAAW,GACT,0JACA,SACI,qCACA,4EACJ,KAAK,UACN;cAEA,KAAK,OACJ,oBAAC,KAAD;KACE,WAAU;KACV,MAAM,KAAK;KACX,SAAS,KAAK;eAEb,KAAK;KACJ,CAAA,GAEJ,oBAAC,QAAD;KAAM,SAAS,KAAK;eAAU,KAAK;KAAa,CAAA;IAE7C,CAAA,EACN,cAAc,QAAQ,CAAC,UACtB,oBAAC,QAAD;IAAM,WAAU;cACb;IACI,CAAA,CAEM,EAAA,EA3BI,MA2BJ;IAEnB;EAGJ,MAAM,aAAa,MAAM,SAAS,QAAQ,SAAS;AACnD,SAAO,WAAW,KAAK,OAAO,UAAU;GACtC,MAAM,SAAS,UAAU,WAAW,SAAS;AAC7C,UACE,qBAAC,MAAM,UAAP,EAAA,UAAA,CACG,MAAM,eAAe,MAAM,GACxB,MAAM,aAAa,OAA6B,EAC9C,aAAa,SAAS,SAAS,QAChC,CAAC,GACF,OACH,cAAc,QAAQ,CAAC,UACtB,oBAAC,QAAD;IAAM,WAAU;cACb;IACI,CAAA,CAEM,EAAA,EAXI,MAWJ;IAEnB;;AAGJ,QACE,oBAAC,OAAD;EACE,WAAW,GACT,qDACA,UACD;EACM;YAEN,aAAa;EACV,CAAA;;AAIV,IAAM,kBACJ,UACG;CACH,MAAM,EAAE,WAAW,UAAU,MAAM,SAAS,GAAG,SAAS;AAExD,QACE,oBAAC,QAAD;EACE,WAAW,GACT,0JAJS,KAAK,iBAAiB,SAM3B,qCACA,4EACJ,UACD;EACQ;YAER,OACC,oBAAC,KAAD;GACE,WAAU;GACJ;GAEL;GACC,CAAA,GAEJ;EAEG,CAAA;;AAIX,eAAe,wBAAwB;AAEvC,WAAW,OAAO"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/Breadcrumb/index.tsx"],"sourcesContent":["import React from 'react';\nimport { cn } from '../lib/utils';\n\nconst DefaultSeparator = () => (\n <span className=\"default-separator tw-mx-1 tw-inline-flex tw-items-center tw-text-[var(--content-tertiary)]\">\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M6 3.5L10.5 8L6 12.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </span>\n);\n\nexport interface BreadcrumbProps {\n className?: string;\n style?: React.CSSProperties;\n separator?: React.ReactNode;\n items?: Array<{\n title: React.ReactNode;\n href?: string;\n onClick?: (e: React.MouseEvent) => void;\n className?: string;\n }>;\n children?: React.ReactNode;\n}\n\nexport interface BreadcrumbItemProps {\n className?: string;\n children?: React.ReactNode;\n href?: string;\n onClick?: (e: React.MouseEvent) => void;\n}\n\ninterface IBreadcrumbItemInterface extends React.FC<BreadcrumbItemProps> {\n __ANT_BREADCRUMB_ITEM: boolean;\n}\n\nconst Breadcrumb = (props: BreadcrumbProps) => {\n const {\n className,\n style,\n separator = <DefaultSeparator />,\n items,\n children,\n } = props;\n\n const renderItems = () => {\n if (items) {\n return items.map((item, index) => {\n const isLast = index === items.length - 1;\n return (\n <React.Fragment key={index}>\n <span\n className={cn(\n 'ald-breadcrumb-item tw-cursor-pointer tw-text-sm [&_a:hover]:tw-text-[var(--content-brand-primary)] [&_a]:tw-text-[var(--content-brand-secondary)]',\n isLast\n ? 'tw-text-[var(--content-primary)]'\n : 'tw-text-[var(--content-tertiary)] hover:tw-text-[var(--content-primary)]',\n item.className,\n )}\n >\n {item.href ? (\n <a\n className=\"ald-breadcrumb-link tw-text-[var(--content-brand-secondary)] hover:tw-text-[var(--content-brand-primary)]\"\n href={item.href}\n onClick={item.onClick}\n >\n {item.title}\n </a>\n ) : (\n <span onClick={item.onClick}>{item.title}</span>\n )}\n </span>\n {separator !== null && !isLast && (\n <span className=\"ald-breadcrumb-separator tw-inline-flex tw-items-center\">\n {separator}\n </span>\n )}\n </React.Fragment>\n );\n });\n }\n\n const childArray = React.Children.toArray(children);\n return childArray.map((child, index) => {\n const isLast = index === childArray.length - 1;\n return (\n <React.Fragment key={index}>\n {React.isValidElement(child)\n ? React.cloneElement(child as React.ReactElement, {\n 'data-last': isLast ? 'true' : undefined,\n })\n : child}\n {separator !== null && !isLast && (\n <span className=\"ald-breadcrumb-separator tw-inline-flex tw-items-center\">\n {separator}\n </span>\n )}\n </React.Fragment>\n );\n });\n };\n\n return (\n <nav\n className={cn(\n 'ald-breadcrumb tw-flex tw-items-center tw-text-sm',\n className,\n )}\n style={style}\n >\n {renderItems()}\n </nav>\n );\n};\n\nconst BreadcrumbItem: IBreadcrumbItemInterface = (\n props: BreadcrumbItemProps & { 'data-last'?: string },\n) => {\n const { className, children, href, onClick, ...rest } = props;\n const isLast = rest['data-last'] === 'true';\n return (\n <span\n className={cn(\n 'ald-breadcrumb-item tw-cursor-pointer tw-text-sm [&_a:hover]:tw-text-[var(--content-brand-primary)] [&_a]:tw-text-[var(--content-brand-secondary)]',\n isLast\n ? 'tw-text-[var(--content-primary)]'\n : 'tw-text-[var(--content-tertiary)] hover:tw-text-[var(--content-primary)]',\n className,\n )}\n onClick={onClick}\n >\n {href ? (\n <a\n className=\"ald-breadcrumb-link tw-text-[var(--content-brand-secondary)] hover:tw-text-[var(--content-brand-primary)]\"\n href={href}\n >\n {children}\n </a>\n ) : (\n children\n )}\n </span>\n );\n};\n\nBreadcrumbItem.__ANT_BREADCRUMB_ITEM = true;\n\nBreadcrumb.Item = BreadcrumbItem;\n\nexport default Breadcrumb;\n"],"mappings":";;;;AAGA,IAAM,yBACJ,oBAAC,QAAD;CAAM,WAAU;WACd,oBAAC,OAAD;EACE,OAAM;EACN,QAAO;EACP,SAAQ;EACR,MAAK;EACL,OAAM;YAEN,oBAAC,QAAD;GACE,GAAE;GACF,QAAO;GACP,aAAY;GACZ,eAAc;GACd,gBAAe;GACf,CAAA;EACE,CAAA;CACD,CAAA;AA2BT,IAAM,cAAc,UAA2B;CAC7C,MAAM,EACJ,WACA,OACA,YAAY,oBAAC,kBAAD,EAAoB,CAAA,EAChC,OACA,aACE;CAEJ,MAAM,oBAAoB;AACxB,MAAI,MACF,QAAO,MAAM,KAAK,MAAM,UAAU;GAChC,MAAM,SAAS,UAAU,MAAM,SAAS;AACxC,UACE,qBAAC,MAAM,UAAP,EAAA,UAAA,CACE,oBAAC,QAAD;IACE,WAAW,GACT,sJACA,SACI,qCACA,4EACJ,KAAK,UACN;cAEA,KAAK,OACJ,oBAAC,KAAD;KACE,WAAU;KACV,MAAM,KAAK;KACX,SAAS,KAAK;eAEb,KAAK;KACJ,CAAA,GAEJ,oBAAC,QAAD;KAAM,SAAS,KAAK;eAAU,KAAK;KAAa,CAAA;IAE7C,CAAA,EACN,cAAc,QAAQ,CAAC,UACtB,oBAAC,QAAD;IAAM,WAAU;cACb;IACI,CAAA,CAEM,EAAA,EA3BI,MA2BJ;IAEnB;EAGJ,MAAM,aAAa,MAAM,SAAS,QAAQ,SAAS;AACnD,SAAO,WAAW,KAAK,OAAO,UAAU;GACtC,MAAM,SAAS,UAAU,WAAW,SAAS;AAC7C,UACE,qBAAC,MAAM,UAAP,EAAA,UAAA,CACG,MAAM,eAAe,MAAM,GACxB,MAAM,aAAa,OAA6B,EAC9C,aAAa,SAAS,SAAS,QAChC,CAAC,GACF,OACH,cAAc,QAAQ,CAAC,UACtB,oBAAC,QAAD;IAAM,WAAU;cACb;IACI,CAAA,CAEM,EAAA,EAXI,MAWJ;IAEnB;;AAGJ,QACE,oBAAC,OAAD;EACE,WAAW,GACT,qDACA,UACD;EACM;YAEN,aAAa;EACV,CAAA;;AAIV,IAAM,kBACJ,UACG;CACH,MAAM,EAAE,WAAW,UAAU,MAAM,SAAS,GAAG,SAAS;AAExD,QACE,oBAAC,QAAD;EACE,WAAW,GACT,sJAJS,KAAK,iBAAiB,SAM3B,qCACA,4EACJ,UACD;EACQ;YAER,OACC,oBAAC,KAAD;GACE,WAAU;GACJ;GAEL;GACC,CAAA,GAEJ;EAEG,CAAA;;AAIX,eAAe,wBAAwB;AAEvC,WAAW,OAAO"}