@xanui/ui 1.2.5 → 1.2.7

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 (331) hide show
  1. package/Accordion/index.cjs +5 -5
  2. package/Accordion/index.cjs.map +1 -1
  3. package/Accordion/index.d.ts +3 -3
  4. package/Accordion/index.js +5 -5
  5. package/Accordion/index.js.map +1 -1
  6. package/Alert/index.cjs +19 -17
  7. package/Alert/index.cjs.map +1 -1
  8. package/Alert/index.d.ts +4 -4
  9. package/Alert/index.js +19 -17
  10. package/Alert/index.js.map +1 -1
  11. package/Autocomplete/index.cjs +2 -2
  12. package/Autocomplete/index.cjs.map +1 -1
  13. package/Autocomplete/index.d.ts +7 -7
  14. package/Autocomplete/index.js +2 -2
  15. package/Autocomplete/index.js.map +1 -1
  16. package/Avatar/index.cjs +2 -2
  17. package/Avatar/index.cjs.map +1 -1
  18. package/Avatar/index.d.ts +2 -2
  19. package/Avatar/index.js +2 -2
  20. package/Avatar/index.js.map +1 -1
  21. package/AvatarBox/index.cjs +19 -0
  22. package/AvatarBox/index.cjs.map +1 -0
  23. package/AvatarBox/index.d.ts +19 -0
  24. package/AvatarBox/index.js +17 -0
  25. package/AvatarBox/index.js.map +1 -0
  26. package/AvatarPicker/index.cjs +80 -0
  27. package/AvatarPicker/index.cjs.map +1 -0
  28. package/AvatarPicker/index.d.ts +27 -0
  29. package/AvatarPicker/index.js +78 -0
  30. package/AvatarPicker/index.js.map +1 -0
  31. package/Badge/index.cjs +1 -1
  32. package/Badge/index.cjs.map +1 -1
  33. package/Badge/index.d.ts +4 -4
  34. package/Badge/index.js +1 -1
  35. package/Badge/index.js.map +1 -1
  36. package/Box/index.d.ts +2 -2
  37. package/Button/index.cjs +5 -3
  38. package/Button/index.cjs.map +1 -1
  39. package/Button/index.d.ts +2 -2
  40. package/Button/index.js +5 -3
  41. package/Button/index.js.map +1 -1
  42. package/ButtonGroup/index.cjs +3 -2
  43. package/ButtonGroup/index.cjs.map +1 -1
  44. package/ButtonGroup/index.d.ts +2 -2
  45. package/ButtonGroup/index.js +3 -2
  46. package/ButtonGroup/index.js.map +1 -1
  47. package/Calendar/index.cjs +10 -10
  48. package/Calendar/index.cjs.map +1 -1
  49. package/Calendar/index.js +10 -10
  50. package/Calendar/index.js.map +1 -1
  51. package/CalendarInput/index.cjs +1 -1
  52. package/CalendarInput/index.cjs.map +1 -1
  53. package/CalendarInput/index.js +1 -1
  54. package/CalendarInput/index.js.map +1 -1
  55. package/Carousel/index.cjs +231 -0
  56. package/Carousel/index.cjs.map +1 -0
  57. package/Carousel/index.d.ts +28 -0
  58. package/Carousel/index.js +229 -0
  59. package/Carousel/index.js.map +1 -0
  60. package/Checkbox/index.cjs +2 -2
  61. package/Checkbox/index.cjs.map +1 -1
  62. package/Checkbox/index.d.ts +2 -2
  63. package/Checkbox/index.js +2 -2
  64. package/Checkbox/index.js.map +1 -1
  65. package/Chip/index.cjs +3 -3
  66. package/Chip/index.cjs.map +1 -1
  67. package/Chip/index.d.ts +2 -2
  68. package/Chip/index.js +3 -3
  69. package/Chip/index.js.map +1 -1
  70. package/CircleProgress/index.cjs +10 -10
  71. package/CircleProgress/index.cjs.map +1 -1
  72. package/CircleProgress/index.d.ts +2 -2
  73. package/CircleProgress/index.js +10 -10
  74. package/CircleProgress/index.js.map +1 -1
  75. package/ClickOutside/index.cjs +3 -12
  76. package/ClickOutside/index.cjs.map +1 -1
  77. package/ClickOutside/index.d.ts +3 -3
  78. package/ClickOutside/index.js +4 -13
  79. package/ClickOutside/index.js.map +1 -1
  80. package/Collaps/index.cjs +5 -5
  81. package/Collaps/index.cjs.map +1 -1
  82. package/Collaps/index.d.ts +2 -2
  83. package/Collaps/index.js +5 -5
  84. package/Collaps/index.js.map +1 -1
  85. package/Container/index.d.ts +2 -2
  86. package/DataFilter/index.d.ts +2 -2
  87. package/DataFilter/options/DateFilter.cjs +3 -3
  88. package/DataFilter/options/DateFilter.cjs.map +1 -1
  89. package/DataFilter/options/DateFilter.js +3 -3
  90. package/DataFilter/options/DateFilter.js.map +1 -1
  91. package/DataFilter/options/DateRangeFilter.cjs +2 -2
  92. package/DataFilter/options/DateRangeFilter.cjs.map +1 -1
  93. package/DataFilter/options/DateRangeFilter.js +2 -2
  94. package/DataFilter/options/DateRangeFilter.js.map +1 -1
  95. package/DataFilter/options/MultiSelectFilter.cjs +3 -3
  96. package/DataFilter/options/MultiSelectFilter.cjs.map +1 -1
  97. package/DataFilter/options/MultiSelectFilter.js +3 -3
  98. package/DataFilter/options/MultiSelectFilter.js.map +1 -1
  99. package/DataFilter/options/NumberFilter.cjs +2 -2
  100. package/DataFilter/options/NumberFilter.cjs.map +1 -1
  101. package/DataFilter/options/NumberFilter.js +2 -2
  102. package/DataFilter/options/NumberFilter.js.map +1 -1
  103. package/DataFilter/options/NumberRangeFilter.cjs +2 -2
  104. package/DataFilter/options/NumberRangeFilter.cjs.map +1 -1
  105. package/DataFilter/options/NumberRangeFilter.js +2 -2
  106. package/DataFilter/options/NumberRangeFilter.js.map +1 -1
  107. package/DataFilter/options/SelectFilter.cjs +3 -3
  108. package/DataFilter/options/SelectFilter.cjs.map +1 -1
  109. package/DataFilter/options/SelectFilter.js +3 -3
  110. package/DataFilter/options/SelectFilter.js.map +1 -1
  111. package/DataFilter/options/TextFilter.cjs +2 -2
  112. package/DataFilter/options/TextFilter.cjs.map +1 -1
  113. package/DataFilter/options/TextFilter.js +2 -2
  114. package/DataFilter/options/TextFilter.js.map +1 -1
  115. package/Datatable/FilterBox.cjs +2 -2
  116. package/Datatable/FilterBox.cjs.map +1 -1
  117. package/Datatable/FilterBox.js +2 -2
  118. package/Datatable/FilterBox.js.map +1 -1
  119. package/Datatable/Row.cjs +2 -2
  120. package/Datatable/Row.cjs.map +1 -1
  121. package/Datatable/Row.js +2 -2
  122. package/Datatable/Row.js.map +1 -1
  123. package/Datatable/SelectedBox.cjs +2 -2
  124. package/Datatable/SelectedBox.cjs.map +1 -1
  125. package/Datatable/SelectedBox.js +2 -2
  126. package/Datatable/SelectedBox.js.map +1 -1
  127. package/Datatable/Table.cjs +1 -1
  128. package/Datatable/Table.cjs.map +1 -1
  129. package/Datatable/Table.js +1 -1
  130. package/Datatable/Table.js.map +1 -1
  131. package/Datatable/TableHead.cjs +3 -3
  132. package/Datatable/TableHead.cjs.map +1 -1
  133. package/Datatable/TableHead.js +3 -3
  134. package/Datatable/TableHead.js.map +1 -1
  135. package/Datatable/index.cjs +1 -1
  136. package/Datatable/index.cjs.map +1 -1
  137. package/Datatable/index.d.ts +2 -2
  138. package/Datatable/index.js +1 -1
  139. package/Datatable/index.js.map +1 -1
  140. package/Divider/index.cjs +3 -3
  141. package/Divider/index.cjs.map +1 -1
  142. package/Divider/index.d.ts +2 -2
  143. package/Divider/index.js +3 -3
  144. package/Divider/index.js.map +1 -1
  145. package/Drawer/index.cjs +2 -2
  146. package/Drawer/index.cjs.map +1 -1
  147. package/Drawer/index.js +2 -2
  148. package/Drawer/index.js.map +1 -1
  149. package/FilePicker/index.cjs +115 -0
  150. package/FilePicker/index.cjs.map +1 -0
  151. package/FilePicker/index.d.ts +23 -0
  152. package/FilePicker/index.js +113 -0
  153. package/FilePicker/index.js.map +1 -0
  154. package/Form/index.cjs +1 -1
  155. package/Form/index.cjs.map +1 -1
  156. package/Form/index.d.ts +2 -2
  157. package/Form/index.js +1 -1
  158. package/Form/index.js.map +1 -1
  159. package/GalleryPicker/index.cjs +88 -0
  160. package/GalleryPicker/index.cjs.map +1 -0
  161. package/GalleryPicker/index.d.ts +26 -0
  162. package/GalleryPicker/index.js +86 -0
  163. package/GalleryPicker/index.js.map +1 -0
  164. package/GridContainer/index.d.ts +2 -2
  165. package/GridItem/index.d.ts +2 -2
  166. package/IconButton/index.cjs +6 -3
  167. package/IconButton/index.cjs.map +1 -1
  168. package/IconButton/index.d.ts +2 -2
  169. package/IconButton/index.js +6 -3
  170. package/IconButton/index.js.map +1 -1
  171. package/Image/index.cjs +2 -14
  172. package/Image/index.cjs.map +1 -1
  173. package/Image/index.d.ts +3 -5
  174. package/Image/index.js +3 -15
  175. package/Image/index.js.map +1 -1
  176. package/Input/index.cjs +10 -10
  177. package/Input/index.cjs.map +1 -1
  178. package/Input/index.d.ts +14 -14
  179. package/Input/index.js +10 -10
  180. package/Input/index.js.map +1 -1
  181. package/InputNumber/index.d.ts +2 -2
  182. package/Label/index.cjs +1 -1
  183. package/Label/index.cjs.map +1 -1
  184. package/Label/index.d.ts +2 -2
  185. package/Label/index.js +1 -1
  186. package/Label/index.js.map +1 -1
  187. package/Layer/index.cjs +12 -13
  188. package/Layer/index.cjs.map +1 -1
  189. package/Layer/index.d.ts +5 -5
  190. package/Layer/index.js +13 -14
  191. package/Layer/index.js.map +1 -1
  192. package/LineProgress/index.cjs +6 -6
  193. package/LineProgress/index.cjs.map +1 -1
  194. package/LineProgress/index.d.ts +2 -2
  195. package/LineProgress/index.js +6 -6
  196. package/LineProgress/index.js.map +1 -1
  197. package/Link/index.cjs +41 -0
  198. package/Link/index.cjs.map +1 -0
  199. package/Link/index.d.ts +17 -0
  200. package/Link/index.js +39 -0
  201. package/Link/index.js.map +1 -0
  202. package/List/index.cjs +1 -1
  203. package/List/index.cjs.map +1 -1
  204. package/List/index.d.ts +2 -2
  205. package/List/index.js +1 -1
  206. package/List/index.js.map +1 -1
  207. package/ListItem/index.cjs +8 -8
  208. package/ListItem/index.cjs.map +1 -1
  209. package/ListItem/index.d.ts +2 -2
  210. package/ListItem/index.js +8 -8
  211. package/ListItem/index.js.map +1 -1
  212. package/LoadingBox/index.cjs +2 -2
  213. package/LoadingBox/index.cjs.map +1 -1
  214. package/LoadingBox/index.d.ts +2 -2
  215. package/LoadingBox/index.js +2 -2
  216. package/LoadingBox/index.js.map +1 -1
  217. package/Menu/index.cjs +25 -14
  218. package/Menu/index.cjs.map +1 -1
  219. package/Menu/index.d.ts +6 -4
  220. package/Menu/index.js +25 -14
  221. package/Menu/index.js.map +1 -1
  222. package/Modal/index.cjs +5 -5
  223. package/Modal/index.cjs.map +1 -1
  224. package/Modal/index.js +5 -5
  225. package/Modal/index.js.map +1 -1
  226. package/Option/index.d.ts +2 -2
  227. package/PasswordInput/index.cjs +21 -0
  228. package/PasswordInput/index.cjs.map +1 -0
  229. package/PasswordInput/index.d.ts +11 -0
  230. package/PasswordInput/index.js +19 -0
  231. package/PasswordInput/index.js.map +1 -0
  232. package/Portal/index.cjs +1 -1
  233. package/Portal/index.cjs.map +1 -1
  234. package/Portal/index.d.ts +3 -3
  235. package/Portal/index.js +1 -1
  236. package/Portal/index.js.map +1 -1
  237. package/Radio/index.d.ts +2 -2
  238. package/RangeSlider/index.cjs +158 -0
  239. package/RangeSlider/index.cjs.map +1 -0
  240. package/RangeSlider/index.d.ts +24 -0
  241. package/RangeSlider/index.js +156 -0
  242. package/RangeSlider/index.js.map +1 -0
  243. package/Scrollbar/index.cjs +6 -6
  244. package/Scrollbar/index.cjs.map +1 -1
  245. package/Scrollbar/index.d.ts +3 -3
  246. package/Scrollbar/index.js +6 -6
  247. package/Scrollbar/index.js.map +1 -1
  248. package/Select/index.cjs +2 -2
  249. package/Select/index.cjs.map +1 -1
  250. package/Select/index.d.ts +5 -5
  251. package/Select/index.js +2 -2
  252. package/Select/index.js.map +1 -1
  253. package/Skeleton/index.cjs +7 -5
  254. package/Skeleton/index.cjs.map +1 -1
  255. package/Skeleton/index.js +7 -5
  256. package/Skeleton/index.js.map +1 -1
  257. package/Stack/index.d.ts +2 -2
  258. package/Switch/index.cjs +2 -2
  259. package/Switch/index.cjs.map +1 -1
  260. package/Switch/index.d.ts +3 -3
  261. package/Switch/index.js +2 -2
  262. package/Switch/index.js.map +1 -1
  263. package/Tab/index.cjs +23 -2
  264. package/Tab/index.cjs.map +1 -1
  265. package/Tab/index.d.ts +2 -2
  266. package/Tab/index.js +25 -4
  267. package/Tab/index.js.map +1 -1
  268. package/Table/index.cjs +9 -9
  269. package/Table/index.cjs.map +1 -1
  270. package/Table/index.d.ts +2 -2
  271. package/Table/index.js +9 -9
  272. package/Table/index.js.map +1 -1
  273. package/TableBody/index.d.ts +2 -2
  274. package/TableCell/index.cjs +1 -1
  275. package/TableCell/index.cjs.map +1 -1
  276. package/TableCell/index.d.ts +2 -2
  277. package/TableCell/index.js +1 -1
  278. package/TableCell/index.js.map +1 -1
  279. package/TableFooter/index.d.ts +2 -2
  280. package/TableHead/index.d.ts +2 -2
  281. package/TablePagination/index.cjs +2 -2
  282. package/TablePagination/index.cjs.map +1 -1
  283. package/TablePagination/index.d.ts +2 -2
  284. package/TablePagination/index.js +2 -2
  285. package/TablePagination/index.js.map +1 -1
  286. package/TableRow/index.d.ts +2 -2
  287. package/Tabs/context.cjs +11 -0
  288. package/Tabs/context.cjs.map +1 -0
  289. package/Tabs/context.js +8 -0
  290. package/Tabs/context.js.map +1 -0
  291. package/Tabs/index.cjs +83 -168
  292. package/Tabs/index.cjs.map +1 -1
  293. package/Tabs/index.d.ts +4 -22
  294. package/Tabs/index.js +86 -171
  295. package/Tabs/index.js.map +1 -1
  296. package/Tabs/types.d.ts +16 -0
  297. package/Text/index.cjs +1 -1
  298. package/Text/index.cjs.map +1 -1
  299. package/Text/index.d.ts +2 -2
  300. package/Text/index.js +1 -1
  301. package/Text/index.js.map +1 -1
  302. package/Toast/index.cjs +15 -16
  303. package/Toast/index.cjs.map +1 -1
  304. package/Toast/index.js +16 -17
  305. package/Toast/index.js.map +1 -1
  306. package/Tooltip/index.cjs +2 -2
  307. package/Tooltip/index.cjs.map +1 -1
  308. package/Tooltip/index.js +2 -2
  309. package/Tooltip/index.js.map +1 -1
  310. package/ViewBox/index.d.ts +2 -2
  311. package/index.cjs +124 -110
  312. package/index.cjs.map +1 -1
  313. package/index.d.ts +8 -1
  314. package/index.js +8 -1
  315. package/index.js.map +1 -1
  316. package/package.json +3 -4
  317. package/readme.md +1 -1
  318. package/useBlurCss/index.cjs +1 -2
  319. package/useBlurCss/index.cjs.map +1 -1
  320. package/useBlurCss/index.js +1 -2
  321. package/useBlurCss/index.js.map +1 -1
  322. package/useContextMenu/index.cjs +2 -2
  323. package/useContextMenu/index.cjs.map +1 -1
  324. package/useContextMenu/index.d.ts +1 -1
  325. package/useContextMenu/index.js +2 -2
  326. package/useContextMenu/index.js.map +1 -1
  327. package/Paper/index.cjs +0 -16
  328. package/Paper/index.cjs.map +0 -1
  329. package/Paper/index.d.ts +0 -8
  330. package/Paper/index.js +0 -14
  331. package/Paper/index.js.map +0 -1
package/Badge/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import React, { ReactElement } from 'react';
1
+ import React__default, { ReactElement } from 'react';
2
2
  import { TagComponentType, TagProps, useBreakpointPropsType, UseColorTemplateColor, TransitionProps } from '@xanui/core';
3
3
 
4
4
  type BadgeProps<T extends TagComponentType = "div"> = Omit<TagProps<T>, "baseClass" | "content"> & {
@@ -13,11 +13,11 @@ type BadgeProps<T extends TagComponentType = "div"> = Omit<TagProps<T>, "baseCla
13
13
  content?: Omit<TagProps<"span">, "children">;
14
14
  };
15
15
  refs?: {
16
- content?: React.Ref<any>;
17
- transition?: React.Ref<any>;
16
+ content?: React__default.Ref<any>;
17
+ transition?: React__default.Ref<any>;
18
18
  };
19
19
  };
20
- declare const Badge: React.ForwardRefExoticComponent<Omit<BadgeProps<TagComponentType>, "ref"> & React.RefAttributes<any>>;
20
+ declare const Badge: React__default.ForwardRefExoticComponent<Omit<BadgeProps<TagComponentType>, "ref"> & React__default.RefAttributes<any>>;
21
21
 
22
22
  export { Badge as default };
23
23
  export type { BadgeProps };
package/Badge/index.js CHANGED
@@ -89,7 +89,7 @@ const Badge = React.forwardRef((_a, ref) => {
89
89
  else {
90
90
  template = {};
91
91
  }
92
- const _badge = jsx(Tag, Object.assign({}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.content, { ref: refs === null || refs === void 0 ? void 0 : refs.content, component: 'span', baseClass: 'badge-content', sxr: Object.assign(Object.assign({ position: "absolute", zIndex: 1, display: 'flex', justifyContent: "center", alignItems: 'center' }, template.primary), _css), children: content }));
92
+ const _badge = jsx(Tag, Object.assign({}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.content, { ref: refs === null || refs === void 0 ? void 0 : refs.content, component: 'span', baseClass: 'badge-content', sxr: Object.assign(Object.assign({ position: "absolute", zIndex: 1, display: 'flex', justifyContent: "center", alignItems: 'center' }, template.main), _css), children: content }));
93
93
  return (jsxs(Tag, Object.assign({}, props, { position: "relative", display: "inline-block", baseClass: 'badge', ref: ref, children: [!disableTransition ? (jsx(Transition, Object.assign({ open: content !== undefined && visible }, slotProps === null || slotProps === void 0 ? void 0 : slotProps.transition, { variant: () => {
94
94
  return {
95
95
  from: {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/Badge/index.tsx"],"sourcesContent":["\"use client\"\nimport React, { ReactElement } from 'react';\nimport { Tag, TagProps, TagComponentType, Transition, useInterface, UseColorTemplateColor, useColorTemplate, useBreakpointPropsType, useBreakpointProps, TransitionProps } from '@xanui/core';\n\nexport type BadgeProps<T extends TagComponentType = \"div\"> = Omit<TagProps<T>, \"baseClass\" | \"content\"> & {\n content?: useBreakpointPropsType<number | string | ReactElement>;\n color?: useBreakpointPropsType<UseColorTemplateColor>;\n placement?: useBreakpointPropsType<\"left-top\" | \"left-bottom\" | \"right-top\" | \"right-bottom\">;\n visible?: useBreakpointPropsType<boolean>;\n disableTransition?: boolean;\n disableSpace?: boolean;\n slotProps?: {\n transition?: Omit<TransitionProps, \"open\">;\n content?: Omit<TagProps<\"span\">, \"children\">;\n },\n refs?: {\n content?: React.Ref<any>;\n transition?: React.Ref<any>;\n };\n}\n\nconst Badge = React.forwardRef(<T extends TagComponentType = \"div\">({ children, content, refs, ...rest }: BadgeProps<T>, ref: React.Ref<any>) => {\n let [{ color, placement, visible, slotProps, disableTransition, disableSpace, ...props }] = useInterface<any>(\"Badge\", rest, {})\n color ??= \"danger\"\n visible ??= true\n placement ??= \"right-top\"\n disableTransition ??= false\n disableSpace ??= false\n\n const _p: any = {}\n\n _p.content = content\n _p.color = color\n _p.placement = placement\n _p.visible = visible\n _p.disableTransition = disableTransition ?? false\n\n const p: any = useBreakpointProps(_p)\n\n content = p.content\n color = p.color\n placement = p.placement\n visible = p.visible\n disableTransition = p.disableTransition\n\n const isReactElement = React.isValidElement(content);\n\n let template: any = useColorTemplate(color, \"fill\")\n let _css: any = {\n position: \"absolute\",\n }\n\n let translate = ''\n\n switch (placement) {\n case \"right-top\":\n _css.top = 0;\n _css.right = 0;\n if (!disableSpace) {\n translate = \"translate(50%, -50%)\";\n }\n break;\n case \"right-bottom\":\n _css.bottom = 0;\n _css.right = 0;\n if (!disableSpace) {\n translate = \"translate(50%, 50%)\";\n }\n break;\n case \"left-top\":\n _css.top = 0;\n _css.left = 0;\n if (!disableSpace) {\n translate = \"translate(-50%, -50%)\";\n }\n break;\n case \"left-bottom\":\n _css.bottom = 0;\n _css.left = 0;\n if (!disableSpace) {\n translate = \"translate(-50%, 50%)\";\n }\n break;\n }\n\n if (disableTransition) {\n _css.transform = translate\n }\n\n if (!isReactElement) {\n _css.userSelect = \"none\"\n _css.pointerEvents = \"none\"\n _css.fontSize = \"small\"\n _css.lineHeight = 1\n _css.fontWeight = 500\n _css.radius = 2\n\n if (typeof content === 'number') {\n if (content > 99) {\n content = \"99+\"\n }\n }\n\n if (content !== undefined) {\n _css.minWidth = 16\n _css.height = 16\n _css.p = .8\n _css.px = .4\n } else {\n _css.width = 8\n _css.height = 8\n }\n } else {\n template = {}\n }\n\n const _badge = <Tag\n {...slotProps?.content}\n ref={refs?.content}\n component='span'\n baseClass='badge-content'\n sxr={{\n position: \"absolute\",\n zIndex: 1,\n display: 'flex',\n justifyContent: \"center\",\n alignItems: 'center',\n ...template.primary,\n ..._css,\n }}\n >\n {content}\n </Tag>\n\n return (\n <Tag\n {...props}\n position=\"relative\"\n display=\"inline-block\"\n baseClass='badge'\n ref={ref}\n >\n {\n !disableTransition ? (<Transition\n open={content !== undefined && visible}\n {...slotProps?.transition}\n variant={() => {\n return {\n from: {\n opacity: 0,\n transform: `scale(0) ${translate}`.trim(),\n },\n to: {\n opacity: 1,\n transform: `scale(1) ${translate}`.trim(),\n },\n }\n }}\n ref={refs?.transition}\n >\n {_badge}\n </Transition>) : <>{_badge}</>\n }\n\n {children}\n </Tag>\n )\n})\n\nexport default Badge\n\n"],"names":[],"mappings":";;;;;;AAqBA;;AACI;;;;;;;AASA;AACA;AACA;AACA;;AAGA;AAEA;AACA;AACA;AACA;AACA;;;AAKA;AACI;;;;AAMA;AACI;AACA;;;;;AAKJ;AACI;AACA;;;;;AAKJ;AACI;AACA;;;;;AAKJ;AACI;AACA;;;;;;;AAQJ;;;AAIA;AACA;AACA;AACA;AACA;AACA;AAEA;AACI;;;;AAKJ;AACI;AACA;AACA;AACA;;;AAEA;AACA;;;;;;AAMR;;;AAgCwB;AACI;AACA;AACH;AACD;AACI;AACA;AACH;;;AAY7B;;"}
1
+ {"version":3,"file":"index.js","sources":["../../src/Badge/index.tsx"],"sourcesContent":["\"use client\"\nimport React, { ReactElement } from 'react';\nimport { Tag, TagProps, TagComponentType, Transition, useInterface, UseColorTemplateColor, useColorTemplate, useBreakpointPropsType, useBreakpointProps, TransitionProps } from '@xanui/core';\n\nexport type BadgeProps<T extends TagComponentType = \"div\"> = Omit<TagProps<T>, \"baseClass\" | \"content\"> & {\n content?: useBreakpointPropsType<number | string | ReactElement>;\n color?: useBreakpointPropsType<UseColorTemplateColor>;\n placement?: useBreakpointPropsType<\"left-top\" | \"left-bottom\" | \"right-top\" | \"right-bottom\">;\n visible?: useBreakpointPropsType<boolean>;\n disableTransition?: boolean;\n disableSpace?: boolean;\n slotProps?: {\n transition?: Omit<TransitionProps, \"open\">;\n content?: Omit<TagProps<\"span\">, \"children\">;\n },\n refs?: {\n content?: React.Ref<any>;\n transition?: React.Ref<any>;\n };\n}\n\nconst Badge = React.forwardRef(<T extends TagComponentType = \"div\">({ children, content, refs, ...rest }: BadgeProps<T>, ref: React.Ref<any>) => {\n let [{ color, placement, visible, slotProps, disableTransition, disableSpace, ...props }] = useInterface<any>(\"Badge\", rest, {})\n color ??= \"danger\"\n visible ??= true\n placement ??= \"right-top\"\n disableTransition ??= false\n disableSpace ??= false\n\n const _p: any = {}\n\n _p.content = content\n _p.color = color\n _p.placement = placement\n _p.visible = visible\n _p.disableTransition = disableTransition ?? false\n\n const p: any = useBreakpointProps(_p)\n\n content = p.content\n color = p.color\n placement = p.placement\n visible = p.visible\n disableTransition = p.disableTransition\n\n const isReactElement = React.isValidElement(content);\n\n let template: any = useColorTemplate(color, \"fill\")\n let _css: any = {\n position: \"absolute\",\n }\n\n let translate = ''\n\n switch (placement) {\n case \"right-top\":\n _css.top = 0;\n _css.right = 0;\n if (!disableSpace) {\n translate = \"translate(50%, -50%)\";\n }\n break;\n case \"right-bottom\":\n _css.bottom = 0;\n _css.right = 0;\n if (!disableSpace) {\n translate = \"translate(50%, 50%)\";\n }\n break;\n case \"left-top\":\n _css.top = 0;\n _css.left = 0;\n if (!disableSpace) {\n translate = \"translate(-50%, -50%)\";\n }\n break;\n case \"left-bottom\":\n _css.bottom = 0;\n _css.left = 0;\n if (!disableSpace) {\n translate = \"translate(-50%, 50%)\";\n }\n break;\n }\n\n if (disableTransition) {\n _css.transform = translate\n }\n\n if (!isReactElement) {\n _css.userSelect = \"none\"\n _css.pointerEvents = \"none\"\n _css.fontSize = \"small\"\n _css.lineHeight = 1\n _css.fontWeight = 500\n _css.radius = 2\n\n if (typeof content === 'number') {\n if (content > 99) {\n content = \"99+\"\n }\n }\n\n if (content !== undefined) {\n _css.minWidth = 16\n _css.height = 16\n _css.p = .8\n _css.px = .4\n } else {\n _css.width = 8\n _css.height = 8\n }\n } else {\n template = {}\n }\n\n const _badge = <Tag\n {...slotProps?.content}\n ref={refs?.content}\n component='span'\n baseClass='badge-content'\n sxr={{\n position: \"absolute\",\n zIndex: 1,\n display: 'flex',\n justifyContent: \"center\",\n alignItems: 'center',\n ...template.main,\n ..._css,\n }}\n >\n {content}\n </Tag>\n\n return (\n <Tag\n {...props}\n position=\"relative\"\n display=\"inline-block\"\n baseClass='badge'\n ref={ref}\n >\n {\n !disableTransition ? (<Transition\n open={content !== undefined && visible}\n {...slotProps?.transition}\n variant={() => {\n return {\n from: {\n opacity: 0,\n transform: `scale(0) ${translate}`.trim(),\n },\n to: {\n opacity: 1,\n transform: `scale(1) ${translate}`.trim(),\n },\n }\n }}\n ref={refs?.transition}\n >\n {_badge}\n </Transition>) : <>{_badge}</>\n }\n\n {children}\n </Tag>\n )\n})\n\nexport default Badge\n\n"],"names":[],"mappings":";;;;;;AAqBA;;AACI;;;;;;;AASA;AACA;AACA;AACA;;AAGA;AAEA;AACA;AACA;AACA;AACA;;;AAKA;AACI;;;;AAMA;AACI;AACA;;;;;AAKJ;AACI;AACA;;;;;AAKJ;AACI;AACA;;;;;AAKJ;AACI;AACA;;;;;;;AAQJ;;;AAIA;AACA;AACA;AACA;AACA;AACA;AAEA;AACI;;;;AAKJ;AACI;AACA;AACA;AACA;;;AAEA;AACA;;;;;;AAMR;;;AAgCwB;AACI;AACA;AACH;AACD;AACI;AACA;AACH;;;AAY7B;;"}
package/Box/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- import React from 'react';
1
+ import React__default from 'react';
2
2
  import { TagComponentType, TagProps } from '@xanui/core';
3
3
 
4
4
  type BoxProps<T extends TagComponentType = "div"> = TagProps<T>;
5
- declare const Box: React.ForwardRefExoticComponent<Omit<BoxProps<TagComponentType>, "ref"> & React.RefAttributes<any>>;
5
+ declare const Box: React__default.ForwardRefExoticComponent<Omit<BoxProps<TagComponentType>, "ref"> & React__default.RefAttributes<any>>;
6
6
 
7
7
  export { Box as default };
8
8
  export type { BoxProps };
package/Button/index.cjs CHANGED
@@ -14,7 +14,7 @@ const Button = React.forwardRef((_a, ref) => {
14
14
  var { children, skeleton } = _a, rest = tslib.__rest(_a, ["children", "skeleton"]);
15
15
  let [_d] = core.useInterface('Button', rest, {
16
16
  variant: "fill",
17
- color: "brand",
17
+ color: "primary",
18
18
  corner: "rounded",
19
19
  size: "medium"
20
20
  }), { variant, startIcon, endIcon, color, corner, size, loading, direction, slotProps, disabled } = _d, _props = tslib.__rest(_d, ["variant", "startIcon", "endIcon", "color", "corner", "size", "loading", "direction", "slotProps", "disabled"]);
@@ -77,7 +77,9 @@ const Button = React.forwardRef((_a, ref) => {
77
77
  if (skeleton) {
78
78
  return jsxRuntime.jsx(index, Object.assign({}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.skeleton, { height: _size.height, animation: "wave", sx: Object.assign(Object.assign(Object.assign({}, (_b = slotProps === null || slotProps === void 0 ? void 0 : slotProps.skeleton) === null || _b === void 0 ? void 0 : _b.sx), _size), cornerCss) }));
79
79
  }
80
- return (jsxRuntime.jsxs(core.Tag, Object.assign({ component: 'button', baseClass: 'button' }, _props, { sxr: Object.assign(Object.assign(Object.assign({ flexShrink: "0", whiteSpace: "nowrap", cursor: "pointer", display: "flex", textTransform: "uppercase", flexDirection: direction, alignItems: "center", justifyContent: "center", position: "relative", overflow: "hidden", userSelect: "none", fontWeight: 500 }, _size), cornerCss), template.primary), hover: Object.assign(Object.assign({}, template.secondary), ((_props === null || _props === void 0 ? void 0 : _props.hover) || {})), disabled: (_c = disabled !== null && disabled !== void 0 ? disabled : loading) !== null && _c !== void 0 ? _c : false, ref: ref, children: [loading && jsxRuntime.jsx(core.Tag, { baseClass: 'button-loading-container', sxr: {
80
+ return (jsxRuntime.jsxs(core.Tag, Object.assign({ component: 'button', baseClass: 'button' }, _props, { sxr: Object.assign(Object.assign(Object.assign({ flexShrink: "0", whiteSpace: "nowrap", cursor: "pointer", display: "flex", textTransform: "uppercase", flexDirection: direction, alignItems: "center", justifyContent: "center", position: "relative", overflow: "hidden", userSelect: "none", fontWeight: 500, "&:active": {
81
+ transform: variant !== "text" ? "scale(0.99)" : undefined
82
+ } }, _size), cornerCss), template.main), hover: Object.assign(Object.assign({}, template.hover), ((_props === null || _props === void 0 ? void 0 : _props.hover) || {})), disabled: (_c = disabled !== null && disabled !== void 0 ? disabled : loading) !== null && _c !== void 0 ? _c : false, ref: ref, children: [loading && jsxRuntime.jsx(core.Tag, { baseClass: 'button-loading-container', sxr: {
81
83
  position: "absolute",
82
84
  top: 0,
83
85
  left: 0,
@@ -87,7 +89,7 @@ const Button = React.forwardRef((_a, ref) => {
87
89
  display: "flex",
88
90
  justifyContent: "center",
89
91
  alignItems: "center",
90
- }, children: jsxRuntime.jsx(index$2, Object.assign({}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.loading, { color: color === 'default' ? `brand` : "default", size: progressSizes[size], className: 'button-loading-progress' })) }), startIcon && jsxRuntime.jsx(core.Tag, { baseClass: 'button-start-icon', component: 'span', display: "inline-block", flexShrink: 0, children: startIcon }), children, endIcon && jsxRuntime.jsx(core.Tag, { baseClass: 'button-end-icon', component: 'span', display: "inline-block", flexShrink: 0, children: endIcon })] })));
92
+ }, children: jsxRuntime.jsx(index$2, Object.assign({}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.loading, { color: color === 'surface' ? `primary` : 'surface', size: progressSizes[size], className: 'button-loading-progress' })) }), startIcon && jsxRuntime.jsx(core.Tag, { baseClass: 'button-start-icon', component: 'span', display: "inline-block", flexShrink: 0, children: startIcon }), children, endIcon && jsxRuntime.jsx(core.Tag, { baseClass: 'button-end-icon', component: 'span', display: "inline-block", flexShrink: 0, children: endIcon })] })));
91
93
  });
92
94
 
93
95
  module.exports = Button;
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../src/Button/index.tsx"],"sourcesContent":["\"use client\";\nimport React, { ReactElement } from 'react';\nimport { Tag, TagProps, TagComponentType, useInterface, useColorTemplate, UseColorTemplateColor, UseColorTemplateType, useBreakpointProps, useBreakpointPropsType } from '@xanui/core';\nimport useCorner, { UseCornerTypes } from '../useCorner'\nimport CircleProgress, { CircleProgressProps } from '../CircleProgress'\nimport Skeleton, { SkeletonProps } from '../Skeleton';\n\n\nexport type ButtonProps<T extends TagComponentType = 'button'> = Omit<TagProps<T>, \"color\" | \"size\" | \"direction\"> & {\n startIcon?: useBreakpointPropsType<ReactElement>;\n endIcon?: useBreakpointPropsType<ReactElement>;\n color?: useBreakpointPropsType<UseColorTemplateColor>;\n variant?: useBreakpointPropsType<UseColorTemplateType>;\n corner?: useBreakpointPropsType<UseCornerTypes>;\n size?: useBreakpointPropsType<\"small\" | \"medium\" | \"large\">;\n direction?: useBreakpointPropsType<\"row\" | \"column\">;\n loading?: boolean;\n skeleton?: boolean;\n slotProps?: {\n loading?: Omit<CircleProgressProps, \"color\" | \"hideTrack\" | \"size\">;\n skeleton?: Omit<SkeletonProps, \"height\" | \"width\" | \"loading\" | \"children\">\n }\n}\n\n\nconst Button = React.forwardRef(<T extends TagComponentType = 'button'>({ children, skeleton, ...rest }: ButtonProps<T>, ref: React.Ref<any>) => {\n let [{ variant, startIcon, endIcon, color, corner, size, loading, direction, slotProps, disabled, ..._props }] = useInterface<any>('Button', rest, {\n variant: \"fill\",\n color: \"brand\",\n corner: \"rounded\",\n size: \"medium\"\n })\n\n const _p: any = {}\n if (startIcon) _p.startIcon = startIcon\n if (endIcon) _p.endIcon = endIcon\n if (color) _p.color = color\n if (variant) _p.variant = variant\n if (corner) _p.corner = corner\n if (size) _p.size = size\n if (direction) _p.direction = direction\n const p: any = useBreakpointProps(_p)\n\n startIcon = p.startIcon\n endIcon = p.endIcon\n color = p.color\n variant = p.variant\n corner = p.corner\n size = p.size\n direction = p.direction || \"row\"\n\n const template = useColorTemplate(color, variant)\n const cornerCss = useCorner(corner)\n\n const sizes: any = {\n small: {\n height: 38,\n px: (startIcon || endIcon) ? 1 : 1.5,\n gap: .5,\n fontSize: 'button'\n },\n medium: {\n height: 44,\n px: (startIcon || endIcon) ? 1.5 : 2,\n gap: 1,\n fontSize: 'button'\n },\n large: {\n height: 52,\n px: (startIcon || endIcon) ? 2 : 3,\n gap: 1,\n fontSize: \"text\"\n }\n }\n\n const progressSizes: any = {\n small: 20,\n medium: 25,\n large: 30\n }\n\n let _size = (sizes[size as any] || {})\n if (direction === 'column') {\n delete _size.height\n _size.gap = .5\n _size.py = 1\n }\n\n if (skeleton) {\n return <Skeleton\n {...slotProps?.skeleton}\n height={_size.height}\n animation={\"wave\"}\n sx={{\n ...slotProps?.skeleton?.sx,\n ..._size,\n ...cornerCss,\n }}\n />\n }\n\n return (\n <Tag\n component='button'\n baseClass='button'\n {..._props}\n sxr={{\n flexShrink: \"0\",\n whiteSpace: \"nowrap\",\n cursor: \"pointer\",\n display: \"flex\",\n textTransform: \"uppercase\",\n flexDirection: direction,\n alignItems: \"center\",\n justifyContent: \"center\",\n position: \"relative\",\n overflow: \"hidden\",\n userSelect: \"none\",\n fontWeight: 500,\n ..._size,\n ...cornerCss,\n ...template.primary,\n\n }}\n hover={{\n ...template.secondary,\n ...((_props as any)?.hover || {})\n }}\n disabled={disabled ?? loading ?? false}\n ref={ref}\n >\n {loading && <Tag\n baseClass='button-loading-container'\n sxr={{\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 1,\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n }}\n >\n <CircleProgress\n {...slotProps?.loading}\n color={color === 'default' ? `brand` : \"default\"}\n size={progressSizes[size]}\n className='button-loading-progress'\n />\n </Tag>}\n {startIcon && <Tag\n baseClass='button-start-icon'\n component='span'\n display=\"inline-block\"\n flexShrink={0}\n >{startIcon}</Tag>}\n {children}\n {endIcon && <Tag\n baseClass='button-end-icon'\n component='span'\n display=\"inline-block\"\n flexShrink={0}\n >{endIcon}</Tag>}\n </Tag>\n )\n})\n\nexport default Button\n"],"names":[],"mappings":";;;;;;;;;;;AAyBA;;;AACI;AACI;AACA;AACA;AACA;;;AAIJ;AAAe;AACf;AAAa;AACb;AAAW;AACX;AAAa;AACb;AAAY;AACZ;AAAU;AACV;AAAe;AACf;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AAEA;AACI;AACI;AACA;AACA;AACA;AACH;AACD;AACI;AACA;AACA;AACA;AACH;AACD;AACI;AACA;AACA;AACA;AACH;;AAGL;AACI;AACA;AACA;;;AAIJ;;AAEI;AACA;;;AAIA;;;AA6CY;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACH;AAwBjB;;"}
1
+ {"version":3,"file":"index.cjs","sources":["../../src/Button/index.tsx"],"sourcesContent":["\"use client\";\nimport React, { ReactElement } from 'react';\nimport { Tag, TagProps, TagComponentType, useInterface, useColorTemplate, UseColorTemplateColor, UseColorTemplateType, useBreakpointProps, useBreakpointPropsType } from '@xanui/core';\nimport useCorner, { UseCornerTypes } from '../useCorner'\nimport CircleProgress, { CircleProgressProps } from '../CircleProgress'\nimport Skeleton, { SkeletonProps } from '../Skeleton';\n\n\nexport type ButtonProps<T extends TagComponentType = 'button'> = Omit<TagProps<T>, \"color\" | \"size\" | \"direction\"> & {\n startIcon?: useBreakpointPropsType<ReactElement>;\n endIcon?: useBreakpointPropsType<ReactElement>;\n color?: useBreakpointPropsType<UseColorTemplateColor>;\n variant?: useBreakpointPropsType<UseColorTemplateType>;\n corner?: useBreakpointPropsType<UseCornerTypes>;\n size?: useBreakpointPropsType<\"small\" | \"medium\" | \"large\">;\n direction?: useBreakpointPropsType<\"row\" | \"column\">;\n loading?: boolean;\n skeleton?: boolean;\n slotProps?: {\n loading?: Omit<CircleProgressProps, \"color\" | \"hideTrack\" | \"size\">;\n skeleton?: Omit<SkeletonProps, \"height\" | \"width\" | \"loading\" | \"children\">\n }\n}\n\n\nconst Button = React.forwardRef(<T extends TagComponentType = 'button'>({ children, skeleton, ...rest }: ButtonProps<T>, ref: React.Ref<any>) => {\n let [{ variant, startIcon, endIcon, color, corner, size, loading, direction, slotProps, disabled, ..._props }] = useInterface<any>('Button', rest, {\n variant: \"fill\",\n color: \"primary\",\n corner: \"rounded\",\n size: \"medium\"\n })\n\n const _p: any = {}\n if (startIcon) _p.startIcon = startIcon\n if (endIcon) _p.endIcon = endIcon\n if (color) _p.color = color\n if (variant) _p.variant = variant\n if (corner) _p.corner = corner\n if (size) _p.size = size\n if (direction) _p.direction = direction\n const p: any = useBreakpointProps(_p)\n\n startIcon = p.startIcon\n endIcon = p.endIcon\n color = p.color\n variant = p.variant\n corner = p.corner\n size = p.size\n direction = p.direction || \"row\"\n\n const template = useColorTemplate(color, variant)\n const cornerCss = useCorner(corner)\n\n const sizes: any = {\n small: {\n height: 38,\n px: (startIcon || endIcon) ? 1 : 1.5,\n gap: .5,\n fontSize: 'button'\n },\n medium: {\n height: 44,\n px: (startIcon || endIcon) ? 1.5 : 2,\n gap: 1,\n fontSize: 'button'\n },\n large: {\n height: 52,\n px: (startIcon || endIcon) ? 2 : 3,\n gap: 1,\n fontSize: \"text\"\n }\n }\n\n const progressSizes: any = {\n small: 20,\n medium: 25,\n large: 30\n }\n\n let _size = (sizes[size as any] || {})\n if (direction === 'column') {\n delete _size.height\n _size.gap = .5\n _size.py = 1\n }\n\n if (skeleton) {\n return <Skeleton\n {...slotProps?.skeleton}\n height={_size.height}\n animation={\"wave\"}\n sx={{\n ...slotProps?.skeleton?.sx,\n ..._size,\n ...cornerCss,\n }}\n />\n }\n\n return (\n <Tag\n component='button'\n baseClass='button'\n {..._props}\n sxr={{\n flexShrink: \"0\",\n whiteSpace: \"nowrap\",\n cursor: \"pointer\",\n display: \"flex\",\n textTransform: \"uppercase\",\n flexDirection: direction,\n alignItems: \"center\",\n justifyContent: \"center\",\n position: \"relative\",\n overflow: \"hidden\",\n userSelect: \"none\",\n fontWeight: 500,\n \"&:active\": {\n transform: variant !== \"text\" ? \"scale(0.99)\" : undefined\n },\n ..._size,\n ...cornerCss,\n ...template.main,\n\n }}\n hover={{\n ...template.hover,\n ...((_props as any)?.hover || {})\n }}\n disabled={disabled ?? loading ?? false}\n ref={ref}\n >\n {loading && <Tag\n baseClass='button-loading-container'\n sxr={{\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 1,\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n }}\n >\n <CircleProgress\n {...slotProps?.loading}\n color={color === 'surface' ? `primary` : 'surface'}\n size={progressSizes[size]}\n className='button-loading-progress'\n />\n </Tag>}\n {startIcon && <Tag\n baseClass='button-start-icon'\n component='span'\n display=\"inline-block\"\n flexShrink={0}\n >{startIcon}</Tag>}\n {children}\n {endIcon && <Tag\n baseClass='button-end-icon'\n component='span'\n display=\"inline-block\"\n flexShrink={0}\n >{endIcon}</Tag>}\n </Tag>\n )\n})\n\nexport default Button\n"],"names":[],"mappings":";;;;;;;;;;;AAyBA;;;AACI;AACI;AACA;AACA;AACA;;;AAIJ;AAAe;AACf;AAAa;AACb;AAAW;AACX;AAAa;AACb;AAAY;AACZ;AAAU;AACV;AAAe;AACf;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AAEA;AACI;AACI;AACA;AACA;AACA;AACH;AACD;AACI;AACA;AACA;AACA;AACH;AACD;AACI;AACA;AACA;AACA;AACH;;AAGL;AACI;AACA;AACA;;;AAIJ;;AAEI;AACA;;;AAIA;;AAYJ;;;AAoCgB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACH;AAwBjB;;"}
package/Button/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import React, { ReactElement } from 'react';
1
+ import React__default, { ReactElement } from 'react';
2
2
  import { TagComponentType, TagProps, useBreakpointPropsType, UseColorTemplateColor, UseColorTemplateType } from '@xanui/core';
3
3
  import { UseCornerTypes } from '../useCorner/index.js';
4
4
  import { CircleProgressProps } from '../CircleProgress/index.js';
@@ -19,7 +19,7 @@ type ButtonProps<T extends TagComponentType = 'button'> = Omit<TagProps<T>, "col
19
19
  skeleton?: Omit<SkeletonProps, "height" | "width" | "loading" | "children">;
20
20
  };
21
21
  };
22
- declare const Button: React.ForwardRefExoticComponent<Omit<ButtonProps<TagComponentType>, "ref"> & React.RefAttributes<any>>;
22
+ declare const Button: React__default.ForwardRefExoticComponent<Omit<ButtonProps<TagComponentType>, "ref"> & React__default.RefAttributes<any>>;
23
23
 
24
24
  export { Button as default };
25
25
  export type { ButtonProps };
package/Button/index.js CHANGED
@@ -12,7 +12,7 @@ const Button = React.forwardRef((_a, ref) => {
12
12
  var { children, skeleton } = _a, rest = __rest(_a, ["children", "skeleton"]);
13
13
  let [_d] = useInterface('Button', rest, {
14
14
  variant: "fill",
15
- color: "brand",
15
+ color: "primary",
16
16
  corner: "rounded",
17
17
  size: "medium"
18
18
  }), { variant, startIcon, endIcon, color, corner, size, loading, direction, slotProps, disabled } = _d, _props = __rest(_d, ["variant", "startIcon", "endIcon", "color", "corner", "size", "loading", "direction", "slotProps", "disabled"]);
@@ -75,7 +75,9 @@ const Button = React.forwardRef((_a, ref) => {
75
75
  if (skeleton) {
76
76
  return jsx(Skeleton, Object.assign({}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.skeleton, { height: _size.height, animation: "wave", sx: Object.assign(Object.assign(Object.assign({}, (_b = slotProps === null || slotProps === void 0 ? void 0 : slotProps.skeleton) === null || _b === void 0 ? void 0 : _b.sx), _size), cornerCss) }));
77
77
  }
78
- return (jsxs(Tag, Object.assign({ component: 'button', baseClass: 'button' }, _props, { sxr: Object.assign(Object.assign(Object.assign({ flexShrink: "0", whiteSpace: "nowrap", cursor: "pointer", display: "flex", textTransform: "uppercase", flexDirection: direction, alignItems: "center", justifyContent: "center", position: "relative", overflow: "hidden", userSelect: "none", fontWeight: 500 }, _size), cornerCss), template.primary), hover: Object.assign(Object.assign({}, template.secondary), ((_props === null || _props === void 0 ? void 0 : _props.hover) || {})), disabled: (_c = disabled !== null && disabled !== void 0 ? disabled : loading) !== null && _c !== void 0 ? _c : false, ref: ref, children: [loading && jsx(Tag, { baseClass: 'button-loading-container', sxr: {
78
+ return (jsxs(Tag, Object.assign({ component: 'button', baseClass: 'button' }, _props, { sxr: Object.assign(Object.assign(Object.assign({ flexShrink: "0", whiteSpace: "nowrap", cursor: "pointer", display: "flex", textTransform: "uppercase", flexDirection: direction, alignItems: "center", justifyContent: "center", position: "relative", overflow: "hidden", userSelect: "none", fontWeight: 500, "&:active": {
79
+ transform: variant !== "text" ? "scale(0.99)" : undefined
80
+ } }, _size), cornerCss), template.main), hover: Object.assign(Object.assign({}, template.hover), ((_props === null || _props === void 0 ? void 0 : _props.hover) || {})), disabled: (_c = disabled !== null && disabled !== void 0 ? disabled : loading) !== null && _c !== void 0 ? _c : false, ref: ref, children: [loading && jsx(Tag, { baseClass: 'button-loading-container', sxr: {
79
81
  position: "absolute",
80
82
  top: 0,
81
83
  left: 0,
@@ -85,7 +87,7 @@ const Button = React.forwardRef((_a, ref) => {
85
87
  display: "flex",
86
88
  justifyContent: "center",
87
89
  alignItems: "center",
88
- }, children: jsx(CircleProgress, Object.assign({}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.loading, { color: color === 'default' ? `brand` : "default", size: progressSizes[size], className: 'button-loading-progress' })) }), startIcon && jsx(Tag, { baseClass: 'button-start-icon', component: 'span', display: "inline-block", flexShrink: 0, children: startIcon }), children, endIcon && jsx(Tag, { baseClass: 'button-end-icon', component: 'span', display: "inline-block", flexShrink: 0, children: endIcon })] })));
90
+ }, children: jsx(CircleProgress, Object.assign({}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.loading, { color: color === 'surface' ? `primary` : 'surface', size: progressSizes[size], className: 'button-loading-progress' })) }), startIcon && jsx(Tag, { baseClass: 'button-start-icon', component: 'span', display: "inline-block", flexShrink: 0, children: startIcon }), children, endIcon && jsx(Tag, { baseClass: 'button-end-icon', component: 'span', display: "inline-block", flexShrink: 0, children: endIcon })] })));
89
91
  });
90
92
 
91
93
  export { Button as default };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/Button/index.tsx"],"sourcesContent":["\"use client\";\nimport React, { ReactElement } from 'react';\nimport { Tag, TagProps, TagComponentType, useInterface, useColorTemplate, UseColorTemplateColor, UseColorTemplateType, useBreakpointProps, useBreakpointPropsType } from '@xanui/core';\nimport useCorner, { UseCornerTypes } from '../useCorner'\nimport CircleProgress, { CircleProgressProps } from '../CircleProgress'\nimport Skeleton, { SkeletonProps } from '../Skeleton';\n\n\nexport type ButtonProps<T extends TagComponentType = 'button'> = Omit<TagProps<T>, \"color\" | \"size\" | \"direction\"> & {\n startIcon?: useBreakpointPropsType<ReactElement>;\n endIcon?: useBreakpointPropsType<ReactElement>;\n color?: useBreakpointPropsType<UseColorTemplateColor>;\n variant?: useBreakpointPropsType<UseColorTemplateType>;\n corner?: useBreakpointPropsType<UseCornerTypes>;\n size?: useBreakpointPropsType<\"small\" | \"medium\" | \"large\">;\n direction?: useBreakpointPropsType<\"row\" | \"column\">;\n loading?: boolean;\n skeleton?: boolean;\n slotProps?: {\n loading?: Omit<CircleProgressProps, \"color\" | \"hideTrack\" | \"size\">;\n skeleton?: Omit<SkeletonProps, \"height\" | \"width\" | \"loading\" | \"children\">\n }\n}\n\n\nconst Button = React.forwardRef(<T extends TagComponentType = 'button'>({ children, skeleton, ...rest }: ButtonProps<T>, ref: React.Ref<any>) => {\n let [{ variant, startIcon, endIcon, color, corner, size, loading, direction, slotProps, disabled, ..._props }] = useInterface<any>('Button', rest, {\n variant: \"fill\",\n color: \"brand\",\n corner: \"rounded\",\n size: \"medium\"\n })\n\n const _p: any = {}\n if (startIcon) _p.startIcon = startIcon\n if (endIcon) _p.endIcon = endIcon\n if (color) _p.color = color\n if (variant) _p.variant = variant\n if (corner) _p.corner = corner\n if (size) _p.size = size\n if (direction) _p.direction = direction\n const p: any = useBreakpointProps(_p)\n\n startIcon = p.startIcon\n endIcon = p.endIcon\n color = p.color\n variant = p.variant\n corner = p.corner\n size = p.size\n direction = p.direction || \"row\"\n\n const template = useColorTemplate(color, variant)\n const cornerCss = useCorner(corner)\n\n const sizes: any = {\n small: {\n height: 38,\n px: (startIcon || endIcon) ? 1 : 1.5,\n gap: .5,\n fontSize: 'button'\n },\n medium: {\n height: 44,\n px: (startIcon || endIcon) ? 1.5 : 2,\n gap: 1,\n fontSize: 'button'\n },\n large: {\n height: 52,\n px: (startIcon || endIcon) ? 2 : 3,\n gap: 1,\n fontSize: \"text\"\n }\n }\n\n const progressSizes: any = {\n small: 20,\n medium: 25,\n large: 30\n }\n\n let _size = (sizes[size as any] || {})\n if (direction === 'column') {\n delete _size.height\n _size.gap = .5\n _size.py = 1\n }\n\n if (skeleton) {\n return <Skeleton\n {...slotProps?.skeleton}\n height={_size.height}\n animation={\"wave\"}\n sx={{\n ...slotProps?.skeleton?.sx,\n ..._size,\n ...cornerCss,\n }}\n />\n }\n\n return (\n <Tag\n component='button'\n baseClass='button'\n {..._props}\n sxr={{\n flexShrink: \"0\",\n whiteSpace: \"nowrap\",\n cursor: \"pointer\",\n display: \"flex\",\n textTransform: \"uppercase\",\n flexDirection: direction,\n alignItems: \"center\",\n justifyContent: \"center\",\n position: \"relative\",\n overflow: \"hidden\",\n userSelect: \"none\",\n fontWeight: 500,\n ..._size,\n ...cornerCss,\n ...template.primary,\n\n }}\n hover={{\n ...template.secondary,\n ...((_props as any)?.hover || {})\n }}\n disabled={disabled ?? loading ?? false}\n ref={ref}\n >\n {loading && <Tag\n baseClass='button-loading-container'\n sxr={{\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 1,\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n }}\n >\n <CircleProgress\n {...slotProps?.loading}\n color={color === 'default' ? `brand` : \"default\"}\n size={progressSizes[size]}\n className='button-loading-progress'\n />\n </Tag>}\n {startIcon && <Tag\n baseClass='button-start-icon'\n component='span'\n display=\"inline-block\"\n flexShrink={0}\n >{startIcon}</Tag>}\n {children}\n {endIcon && <Tag\n baseClass='button-end-icon'\n component='span'\n display=\"inline-block\"\n flexShrink={0}\n >{endIcon}</Tag>}\n </Tag>\n )\n})\n\nexport default Button\n"],"names":[],"mappings":";;;;;;;;;AAyBA;;;AACI;AACI;AACA;AACA;AACA;;;AAIJ;AAAe;AACf;AAAa;AACb;AAAW;AACX;AAAa;AACb;AAAY;AACZ;AAAU;AACV;AAAe;AACf;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AAEA;AACI;AACI;AACA;AACA;AACA;AACH;AACD;AACI;AACA;AACA;AACA;AACH;AACD;AACI;AACA;AACA;AACA;AACH;;AAGL;AACI;AACA;AACA;;;AAIJ;;AAEI;AACA;;;AAIA;;;AA6CY;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACH;AAwBjB;;"}
1
+ {"version":3,"file":"index.js","sources":["../../src/Button/index.tsx"],"sourcesContent":["\"use client\";\nimport React, { ReactElement } from 'react';\nimport { Tag, TagProps, TagComponentType, useInterface, useColorTemplate, UseColorTemplateColor, UseColorTemplateType, useBreakpointProps, useBreakpointPropsType } from '@xanui/core';\nimport useCorner, { UseCornerTypes } from '../useCorner'\nimport CircleProgress, { CircleProgressProps } from '../CircleProgress'\nimport Skeleton, { SkeletonProps } from '../Skeleton';\n\n\nexport type ButtonProps<T extends TagComponentType = 'button'> = Omit<TagProps<T>, \"color\" | \"size\" | \"direction\"> & {\n startIcon?: useBreakpointPropsType<ReactElement>;\n endIcon?: useBreakpointPropsType<ReactElement>;\n color?: useBreakpointPropsType<UseColorTemplateColor>;\n variant?: useBreakpointPropsType<UseColorTemplateType>;\n corner?: useBreakpointPropsType<UseCornerTypes>;\n size?: useBreakpointPropsType<\"small\" | \"medium\" | \"large\">;\n direction?: useBreakpointPropsType<\"row\" | \"column\">;\n loading?: boolean;\n skeleton?: boolean;\n slotProps?: {\n loading?: Omit<CircleProgressProps, \"color\" | \"hideTrack\" | \"size\">;\n skeleton?: Omit<SkeletonProps, \"height\" | \"width\" | \"loading\" | \"children\">\n }\n}\n\n\nconst Button = React.forwardRef(<T extends TagComponentType = 'button'>({ children, skeleton, ...rest }: ButtonProps<T>, ref: React.Ref<any>) => {\n let [{ variant, startIcon, endIcon, color, corner, size, loading, direction, slotProps, disabled, ..._props }] = useInterface<any>('Button', rest, {\n variant: \"fill\",\n color: \"primary\",\n corner: \"rounded\",\n size: \"medium\"\n })\n\n const _p: any = {}\n if (startIcon) _p.startIcon = startIcon\n if (endIcon) _p.endIcon = endIcon\n if (color) _p.color = color\n if (variant) _p.variant = variant\n if (corner) _p.corner = corner\n if (size) _p.size = size\n if (direction) _p.direction = direction\n const p: any = useBreakpointProps(_p)\n\n startIcon = p.startIcon\n endIcon = p.endIcon\n color = p.color\n variant = p.variant\n corner = p.corner\n size = p.size\n direction = p.direction || \"row\"\n\n const template = useColorTemplate(color, variant)\n const cornerCss = useCorner(corner)\n\n const sizes: any = {\n small: {\n height: 38,\n px: (startIcon || endIcon) ? 1 : 1.5,\n gap: .5,\n fontSize: 'button'\n },\n medium: {\n height: 44,\n px: (startIcon || endIcon) ? 1.5 : 2,\n gap: 1,\n fontSize: 'button'\n },\n large: {\n height: 52,\n px: (startIcon || endIcon) ? 2 : 3,\n gap: 1,\n fontSize: \"text\"\n }\n }\n\n const progressSizes: any = {\n small: 20,\n medium: 25,\n large: 30\n }\n\n let _size = (sizes[size as any] || {})\n if (direction === 'column') {\n delete _size.height\n _size.gap = .5\n _size.py = 1\n }\n\n if (skeleton) {\n return <Skeleton\n {...slotProps?.skeleton}\n height={_size.height}\n animation={\"wave\"}\n sx={{\n ...slotProps?.skeleton?.sx,\n ..._size,\n ...cornerCss,\n }}\n />\n }\n\n return (\n <Tag\n component='button'\n baseClass='button'\n {..._props}\n sxr={{\n flexShrink: \"0\",\n whiteSpace: \"nowrap\",\n cursor: \"pointer\",\n display: \"flex\",\n textTransform: \"uppercase\",\n flexDirection: direction,\n alignItems: \"center\",\n justifyContent: \"center\",\n position: \"relative\",\n overflow: \"hidden\",\n userSelect: \"none\",\n fontWeight: 500,\n \"&:active\": {\n transform: variant !== \"text\" ? \"scale(0.99)\" : undefined\n },\n ..._size,\n ...cornerCss,\n ...template.main,\n\n }}\n hover={{\n ...template.hover,\n ...((_props as any)?.hover || {})\n }}\n disabled={disabled ?? loading ?? false}\n ref={ref}\n >\n {loading && <Tag\n baseClass='button-loading-container'\n sxr={{\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 1,\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n }}\n >\n <CircleProgress\n {...slotProps?.loading}\n color={color === 'surface' ? `primary` : 'surface'}\n size={progressSizes[size]}\n className='button-loading-progress'\n />\n </Tag>}\n {startIcon && <Tag\n baseClass='button-start-icon'\n component='span'\n display=\"inline-block\"\n flexShrink={0}\n >{startIcon}</Tag>}\n {children}\n {endIcon && <Tag\n baseClass='button-end-icon'\n component='span'\n display=\"inline-block\"\n flexShrink={0}\n >{endIcon}</Tag>}\n </Tag>\n )\n})\n\nexport default Button\n"],"names":[],"mappings":";;;;;;;;;AAyBA;;;AACI;AACI;AACA;AACA;AACA;;;AAIJ;AAAe;AACf;AAAa;AACb;AAAW;AACX;AAAa;AACb;AAAY;AACZ;AAAU;AACV;AAAe;AACf;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AAEA;AACI;AACI;AACA;AACA;AACA;AACH;AACD;AACI;AACA;AACA;AACA;AACH;AACD;AACI;AACA;AACA;AACA;AACH;;AAGL;AACI;AACA;AACA;;;AAIJ;;AAEI;AACA;;;AAIA;;AAYJ;;;AAoCgB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACH;AAwBjB;;"}
@@ -11,7 +11,7 @@ const ButtonGroup = React.forwardRef((_a, ref) => {
11
11
  let [_b] = core.useInterface("ButtonGroup", rest, {
12
12
  size: "medium",
13
13
  variant: "outline",
14
- color: "default"
14
+ color: 'surface'
15
15
  }), { color, variant, size } = _b, props = tslib.__rest(_b, ["color", "variant", "size"]);
16
16
  const _p = {};
17
17
  if (color)
@@ -29,7 +29,7 @@ const ButtonGroup = React.forwardRef((_a, ref) => {
29
29
  height: 52,
30
30
  }
31
31
  };
32
- let borderColor = color === 'default' ? 'divider.secondary' : `${color}.secondary`;
32
+ let borderColor = `${color}.divider`;
33
33
  return (jsxRuntime.jsx(core.Tag, Object.assign({}, props, sizes[size], { sxr: {
34
34
  display: "inline-flex",
35
35
  flexWrap: "nowrap",
@@ -38,6 +38,7 @@ const ButtonGroup = React.forwardRef((_a, ref) => {
38
38
  border: "1px solid",
39
39
  borderColor: borderColor,
40
40
  '& button, & button:hover': {
41
+ border: 0,
41
42
  borderRight: "1px solid",
42
43
  borderColor: borderColor
43
44
  },
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../src/ButtonGroup/index.tsx"],"sourcesContent":["\"use client\"\nimport React, { ReactElement, Children, cloneElement } from 'react';\nimport { Tag, TagProps, TagComponentType, useInterface, UseColorTemplateColor, UseColorTemplateType, useBreakpointPropsType, useBreakpointProps } from '@xanui/core';\nimport { ButtonProps } from '../Button';\n\nexport type ButtonGroupProps<T extends TagComponentType = \"div\"> = Omit<TagProps<T>, 'children' | \"size\"> & {\n children?: ReactElement<ButtonProps> | ReactElement<ButtonProps>[];\n color?: useBreakpointPropsType<UseColorTemplateColor>;\n variant?: useBreakpointPropsType<UseColorTemplateType>;\n size?: useBreakpointPropsType<\"small\" | \"medium\" | \"large\">;\n}\n\nconst ButtonGroup = React.forwardRef(<T extends TagComponentType = \"div\">({ children, ...rest }: ButtonGroupProps<T>, ref: React.Ref<any>) => {\n let [{ color, variant, size, ...props }] = useInterface<any>(\"ButtonGroup\", rest, {\n size: \"medium\",\n variant: \"outline\",\n color: \"default\"\n })\n const _p: any = {}\n if (color) _p.color = color\n const p: any = useBreakpointProps(_p)\n color = p.color\n\n const sizes: any = {\n small: {\n height: 40,\n },\n medium: {\n height: 46,\n },\n large: {\n height: 52,\n }\n }\n\n let borderColor = color === 'default' ? 'divider.secondary' : `${color}.secondary`\n\n return (\n <Tag\n {...props}\n {...sizes[size]}\n sxr={{\n display: \"inline-flex\",\n flexWrap: \"nowrap\",\n overflow: \"hidden\",\n radius: 1,\n border: \"1px solid\",\n borderColor: borderColor,\n '& button, & button:hover': {\n borderRight: \"1px solid\",\n borderColor: borderColor\n },\n \"& button:last-child, & button:last-child:hover\": {\n borderRight: \"none\"\n }\n }}\n baseClass='button-group'\n ref={ref}\n >\n {Children.map(children, (child: any) => {\n return cloneElement(child, {\n flex: \"0 0 auto\",\n color,\n variant,\n size,\n corner: \"squar\",\n })\n })}\n </Tag>\n )\n})\n\nexport default ButtonGroup\n\n\n"],"names":[],"mappings":";;;;;;;;AAYA;AAA0E;AACtE;AACI;AACA;AACA;AACH;;AAED;AAAW;AACX;AACA;AAEA;AACI;AACI;AACH;AACD;AACI;AACH;AACD;AACI;AACH;;AAGL;AAEA;AAKY;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACA;AACH;AACD;AACI;AACH;AACJ;;AAMO;;;;AAIA;AACH;;AAIjB;;"}
1
+ {"version":3,"file":"index.cjs","sources":["../../src/ButtonGroup/index.tsx"],"sourcesContent":["\"use client\"\nimport React, { ReactElement, Children, cloneElement } from 'react';\nimport { Tag, TagProps, TagComponentType, useInterface, UseColorTemplateColor, UseColorTemplateType, useBreakpointPropsType, useBreakpointProps } from '@xanui/core';\nimport { ButtonProps } from '../Button';\n\nexport type ButtonGroupProps<T extends TagComponentType = \"div\"> = Omit<TagProps<T>, 'children' | \"size\"> & {\n children?: ReactElement<ButtonProps> | ReactElement<ButtonProps>[];\n color?: useBreakpointPropsType<UseColorTemplateColor>;\n variant?: useBreakpointPropsType<UseColorTemplateType>;\n size?: useBreakpointPropsType<\"small\" | \"medium\" | \"large\">;\n}\n\nconst ButtonGroup = React.forwardRef(<T extends TagComponentType = \"div\">({ children, ...rest }: ButtonGroupProps<T>, ref: React.Ref<any>) => {\n let [{ color, variant, size, ...props }] = useInterface<any>(\"ButtonGroup\", rest, {\n size: \"medium\",\n variant: \"outline\",\n color: 'surface'\n })\n const _p: any = {}\n if (color) _p.color = color\n const p: any = useBreakpointProps(_p)\n color = p.color\n\n const sizes: any = {\n small: {\n height: 40,\n },\n medium: {\n height: 46,\n },\n large: {\n height: 52,\n }\n }\n\n let borderColor = `${color}.divider`\n\n return (\n <Tag\n {...props}\n {...sizes[size]}\n sxr={{\n display: \"inline-flex\",\n flexWrap: \"nowrap\",\n overflow: \"hidden\",\n radius: 1,\n border: \"1px solid\",\n borderColor: borderColor,\n '& button, & button:hover': {\n border: 0,\n borderRight: \"1px solid\",\n borderColor: borderColor\n },\n \"& button:last-child, & button:last-child:hover\": {\n borderRight: \"none\"\n }\n }}\n baseClass='button-group'\n ref={ref}\n >\n {Children.map(children, (child: any) => {\n return cloneElement(child, {\n flex: \"0 0 auto\",\n color,\n variant,\n size,\n corner: \"squar\",\n })\n })}\n </Tag>\n )\n})\n\nexport default ButtonGroup\n\n\n"],"names":[],"mappings":";;;;;;;;AAYA;AAA0E;AACtE;AACI;AACA;AACA;AACH;;AAED;AAAW;AACX;AACA;AAEA;AACI;AACI;AACH;AACD;AACI;AACH;AACD;AACI;AACH;;AAGL;AAEA;AAKY;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACA;AACA;AACH;AACD;AACI;AACH;AACJ;;AAMO;;;;AAIA;AACH;;AAIjB;;"}
@@ -1,4 +1,4 @@
1
- import React, { ReactElement } from 'react';
1
+ import React__default, { ReactElement } from 'react';
2
2
  import { TagComponentType, TagProps, useBreakpointPropsType, UseColorTemplateColor, UseColorTemplateType } from '@xanui/core';
3
3
  import { ButtonProps } from '../Button/index.js';
4
4
 
@@ -8,7 +8,7 @@ type ButtonGroupProps<T extends TagComponentType = "div"> = Omit<TagProps<T>, 'c
8
8
  variant?: useBreakpointPropsType<UseColorTemplateType>;
9
9
  size?: useBreakpointPropsType<"small" | "medium" | "large">;
10
10
  };
11
- declare const ButtonGroup: React.ForwardRefExoticComponent<Omit<ButtonGroupProps<TagComponentType>, "ref"> & React.RefAttributes<any>>;
11
+ declare const ButtonGroup: React__default.ForwardRefExoticComponent<Omit<ButtonGroupProps<TagComponentType>, "ref"> & React__default.RefAttributes<any>>;
12
12
 
13
13
  export { ButtonGroup as default };
14
14
  export type { ButtonGroupProps };
@@ -9,7 +9,7 @@ const ButtonGroup = React.forwardRef((_a, ref) => {
9
9
  let [_b] = useInterface("ButtonGroup", rest, {
10
10
  size: "medium",
11
11
  variant: "outline",
12
- color: "default"
12
+ color: 'surface'
13
13
  }), { color, variant, size } = _b, props = __rest(_b, ["color", "variant", "size"]);
14
14
  const _p = {};
15
15
  if (color)
@@ -27,7 +27,7 @@ const ButtonGroup = React.forwardRef((_a, ref) => {
27
27
  height: 52,
28
28
  }
29
29
  };
30
- let borderColor = color === 'default' ? 'divider.secondary' : `${color}.secondary`;
30
+ let borderColor = `${color}.divider`;
31
31
  return (jsx(Tag, Object.assign({}, props, sizes[size], { sxr: {
32
32
  display: "inline-flex",
33
33
  flexWrap: "nowrap",
@@ -36,6 +36,7 @@ const ButtonGroup = React.forwardRef((_a, ref) => {
36
36
  border: "1px solid",
37
37
  borderColor: borderColor,
38
38
  '& button, & button:hover': {
39
+ border: 0,
39
40
  borderRight: "1px solid",
40
41
  borderColor: borderColor
41
42
  },
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/ButtonGroup/index.tsx"],"sourcesContent":["\"use client\"\nimport React, { ReactElement, Children, cloneElement } from 'react';\nimport { Tag, TagProps, TagComponentType, useInterface, UseColorTemplateColor, UseColorTemplateType, useBreakpointPropsType, useBreakpointProps } from '@xanui/core';\nimport { ButtonProps } from '../Button';\n\nexport type ButtonGroupProps<T extends TagComponentType = \"div\"> = Omit<TagProps<T>, 'children' | \"size\"> & {\n children?: ReactElement<ButtonProps> | ReactElement<ButtonProps>[];\n color?: useBreakpointPropsType<UseColorTemplateColor>;\n variant?: useBreakpointPropsType<UseColorTemplateType>;\n size?: useBreakpointPropsType<\"small\" | \"medium\" | \"large\">;\n}\n\nconst ButtonGroup = React.forwardRef(<T extends TagComponentType = \"div\">({ children, ...rest }: ButtonGroupProps<T>, ref: React.Ref<any>) => {\n let [{ color, variant, size, ...props }] = useInterface<any>(\"ButtonGroup\", rest, {\n size: \"medium\",\n variant: \"outline\",\n color: \"default\"\n })\n const _p: any = {}\n if (color) _p.color = color\n const p: any = useBreakpointProps(_p)\n color = p.color\n\n const sizes: any = {\n small: {\n height: 40,\n },\n medium: {\n height: 46,\n },\n large: {\n height: 52,\n }\n }\n\n let borderColor = color === 'default' ? 'divider.secondary' : `${color}.secondary`\n\n return (\n <Tag\n {...props}\n {...sizes[size]}\n sxr={{\n display: \"inline-flex\",\n flexWrap: \"nowrap\",\n overflow: \"hidden\",\n radius: 1,\n border: \"1px solid\",\n borderColor: borderColor,\n '& button, & button:hover': {\n borderRight: \"1px solid\",\n borderColor: borderColor\n },\n \"& button:last-child, & button:last-child:hover\": {\n borderRight: \"none\"\n }\n }}\n baseClass='button-group'\n ref={ref}\n >\n {Children.map(children, (child: any) => {\n return cloneElement(child, {\n flex: \"0 0 auto\",\n color,\n variant,\n size,\n corner: \"squar\",\n })\n })}\n </Tag>\n )\n})\n\nexport default ButtonGroup\n\n\n"],"names":[],"mappings":";;;;;;AAYA;AAA0E;AACtE;AACI;AACA;AACA;AACH;;AAED;AAAW;AACX;AACA;AAEA;AACI;AACI;AACH;AACD;AACI;AACH;AACD;AACI;AACH;;AAGL;AAEA;AAKY;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACA;AACH;AACD;AACI;AACH;AACJ;;AAMO;;;;AAIA;AACH;;AAIjB;;"}
1
+ {"version":3,"file":"index.js","sources":["../../src/ButtonGroup/index.tsx"],"sourcesContent":["\"use client\"\nimport React, { ReactElement, Children, cloneElement } from 'react';\nimport { Tag, TagProps, TagComponentType, useInterface, UseColorTemplateColor, UseColorTemplateType, useBreakpointPropsType, useBreakpointProps } from '@xanui/core';\nimport { ButtonProps } from '../Button';\n\nexport type ButtonGroupProps<T extends TagComponentType = \"div\"> = Omit<TagProps<T>, 'children' | \"size\"> & {\n children?: ReactElement<ButtonProps> | ReactElement<ButtonProps>[];\n color?: useBreakpointPropsType<UseColorTemplateColor>;\n variant?: useBreakpointPropsType<UseColorTemplateType>;\n size?: useBreakpointPropsType<\"small\" | \"medium\" | \"large\">;\n}\n\nconst ButtonGroup = React.forwardRef(<T extends TagComponentType = \"div\">({ children, ...rest }: ButtonGroupProps<T>, ref: React.Ref<any>) => {\n let [{ color, variant, size, ...props }] = useInterface<any>(\"ButtonGroup\", rest, {\n size: \"medium\",\n variant: \"outline\",\n color: 'surface'\n })\n const _p: any = {}\n if (color) _p.color = color\n const p: any = useBreakpointProps(_p)\n color = p.color\n\n const sizes: any = {\n small: {\n height: 40,\n },\n medium: {\n height: 46,\n },\n large: {\n height: 52,\n }\n }\n\n let borderColor = `${color}.divider`\n\n return (\n <Tag\n {...props}\n {...sizes[size]}\n sxr={{\n display: \"inline-flex\",\n flexWrap: \"nowrap\",\n overflow: \"hidden\",\n radius: 1,\n border: \"1px solid\",\n borderColor: borderColor,\n '& button, & button:hover': {\n border: 0,\n borderRight: \"1px solid\",\n borderColor: borderColor\n },\n \"& button:last-child, & button:last-child:hover\": {\n borderRight: \"none\"\n }\n }}\n baseClass='button-group'\n ref={ref}\n >\n {Children.map(children, (child: any) => {\n return cloneElement(child, {\n flex: \"0 0 auto\",\n color,\n variant,\n size,\n corner: \"squar\",\n })\n })}\n </Tag>\n )\n})\n\nexport default ButtonGroup\n\n\n"],"names":[],"mappings":";;;;;;AAYA;AAA0E;AACtE;AACI;AACA;AACA;AACH;;AAED;AAAW;AACX;AACA;AAEA;AACI;AACI;AACH;AACD;AACI;AACH;AACD;AACI;AACH;;AAGL;AAEA;AAKY;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACA;AACA;AACH;AACD;AACI;AACH;AACJ;;AAMO;;;;AAIA;AACH;;AAIjB;;"}
@@ -22,7 +22,7 @@ const ShowYears = ({ color, year, today, onClick }) => {
22
22
  years.push(jsxRuntime.jsx(index$1, { sx: {
23
23
  width: 50,
24
24
  p: .1
25
- }, className: 'calender-year-item', children: jsxRuntime.jsx(index$4, { color: selected ? color : "default", className: 'calender-year-button', size: 'small', corner: "circle", ref: selected ? selectedRef : null, onClick: () => onClick(y), variant: selected ? "fill" : "text", children: y }) }, y));
25
+ }, className: 'calender-year-item', children: jsxRuntime.jsx(index$4, { color: selected ? color : 'surface', className: 'calender-year-button', size: 'small', corner: "circle", ref: selected ? selectedRef : null, onClick: () => onClick(y), variant: selected ? "fill" : "text", children: y }) }, y));
26
26
  }
27
27
  React.useEffect(() => {
28
28
  if (selectedRef === null || selectedRef === void 0 ? void 0 : selectedRef.current) {
@@ -45,7 +45,7 @@ const Calendar = (_a) => {
45
45
  if (color)
46
46
  _p.color = color;
47
47
  const p = core.useBreakpointProps(_p);
48
- color = p.color || "brand";
48
+ color = p.color || "primary";
49
49
  let [viewMode, setViewMode] = React.useState(p.VMode || "day");
50
50
  let [selectedDate, setSelectedDate] = React.useState(new Date());
51
51
  selectedDate = value instanceof Date ? value : selectedDate;
@@ -68,7 +68,7 @@ const Calendar = (_a) => {
68
68
  height: btnWidth,
69
69
  alignItems: "center",
70
70
  justifyContent: "center"
71
- }, children: jsxRuntime.jsx(index$3, { variant: "text", color: "default", disabled: true, children: k }) }, "dayname-" + i));
71
+ }, children: jsxRuntime.jsx(index$3, { variant: "text", color: "surface", disabled: true, children: k }) }, "dayname-" + i));
72
72
  }
73
73
  rows.push(jsxRuntime.jsx(index$1, { flexRow: true, className: 'calender-day-row', children: row }, "header"));
74
74
  let date = 1;
@@ -93,7 +93,7 @@ const Calendar = (_a) => {
93
93
  if (isToday) {
94
94
  css = {
95
95
  variant: "fill",
96
- color: "default"
96
+ color: "surface"
97
97
  };
98
98
  }
99
99
  if (isSelected) {
@@ -107,7 +107,7 @@ const Calendar = (_a) => {
107
107
  height: btnWidth,
108
108
  alignItems: "center",
109
109
  justifyContent: "center"
110
- }, className: 'calender-day-item', children: jsxRuntime.jsx(index$3, Object.assign({ className: 'calender-day-button', variant: isSelected ? "fill" : "text", color: isToday ? color : "default" }, css, { "data-value": date, onClick: (e) => {
110
+ }, className: 'calender-day-item', children: jsxRuntime.jsx(index$3, Object.assign({ className: 'calender-day-button', variant: isSelected ? "fill" : "text", color: isToday ? color : "surface" }, css, { "data-value": date, onClick: (e) => {
111
111
  let d = e.target.getAttribute("data-value");
112
112
  if (!d)
113
113
  return;
@@ -127,13 +127,13 @@ const Calendar = (_a) => {
127
127
  const monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
128
128
  for (let m = 0; m < monthNames.length; m++) {
129
129
  const selected = currentDate.getMonth() === m;
130
- months.push(jsxRuntime.jsx(index$1, { width: "50%", alignItems: "center", justifyContent: "center", p: .1, className: 'calender-months-item', children: jsxRuntime.jsx(index$4, { color: selected ? color : "default", className: 'calender-month-button', size: 'small', corner: "circle", variant: selected ? "fill" : 'text', onClick: () => {
130
+ months.push(jsxRuntime.jsx(index$1, { width: "50%", alignItems: "center", justifyContent: "center", p: .1, className: 'calender-months-item', children: jsxRuntime.jsx(index$4, { color: selected ? color : 'surface', className: 'calender-month-button', size: 'small', corner: "circle", variant: selected ? "fill" : 'text', onClick: () => {
131
131
  const v = new Date(currentDate.getFullYear(), m);
132
132
  setCurrentDate(v);
133
133
  setViewMode("day");
134
134
  onButtonClick && onButtonClick("month", v);
135
135
  }, sx: {
136
- color: selected ? "brand.text" : "text.primary"
136
+ color: selected ? "primary.contrast" : "surface.contrast"
137
137
  }, children: monthNames[m] }) }, m));
138
138
  }
139
139
  return (jsxRuntime.jsx(index$1, { className: 'calender-months', sx: {
@@ -160,12 +160,12 @@ const Calendar = (_a) => {
160
160
  view = (jsxRuntime.jsx(jsxRuntime.Fragment, { children: showCalendar() }));
161
161
  break;
162
162
  }
163
- return (jsxRuntime.jsx(index, { className: 'calender-root', maxHeight: 308, width: 250, radius: 1, bgcolor: "background.secondary", startContent: jsxRuntime.jsxs(index$1, { className: 'calender-header', flexRow: true, alignItems: "center", justifyContent: "space-between", p: 1, children: [jsxRuntime.jsx(index$2, { fontWeight: "bold", cursor: "pointer", onClick: () => setViewMode(viewMode !== 'day' ? "day" : "year"), flex: 1, children: currentDate.toLocaleDateString(undefined, { year: 'numeric', month: 'long' }) }), jsxRuntime.jsx(index$3, { color: "default", variant: 'text', size: 28, onClick: () => {
163
+ return (jsxRuntime.jsx(index, { className: 'calender-root', maxHeight: 308, width: 250, radius: 1, bgcolor: "surface.lighter", startContent: jsxRuntime.jsxs(index$1, { className: 'calender-header', flexRow: true, alignItems: "center", justifyContent: "space-between", p: 1, children: [jsxRuntime.jsx(index$2, { fontWeight: "bold", cursor: "pointer", onClick: () => setViewMode(viewMode !== 'day' ? "day" : "year"), flex: 1, children: currentDate.toLocaleDateString(undefined, { year: 'numeric', month: 'long' }) }), jsxRuntime.jsx(index$3, { color: "surface", variant: 'text', size: 28, onClick: () => {
164
164
  setCurrentDate(new Date());
165
165
  onChange ? onChange(new Date()) : setSelectedDate(new Date());
166
- }, children: jsxRuntime.jsx(ResetIcon, { fontSize: 20 }) }), jsxRuntime.jsx(index$3, { color: "default", variant: 'text', size: 28, onClick: () => {
166
+ }, children: jsxRuntime.jsx(ResetIcon, { fontSize: 20 }) }), jsxRuntime.jsx(index$3, { color: "surface", variant: 'text', size: 28, onClick: () => {
167
167
  setCurrentDate(new Date(currentDate.getFullYear(), currentDate.getMonth() - 1, 1));
168
- }, children: jsxRuntime.jsx(IconKeyboardArrowLeft, {}) }), jsxRuntime.jsx(index$3, { color: "default", variant: 'text', size: 28, onClick: () => {
168
+ }, children: jsxRuntime.jsx(IconKeyboardArrowLeft, {}) }), jsxRuntime.jsx(index$3, { color: "surface", variant: 'text', size: 28, onClick: () => {
169
169
  setCurrentDate(new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 1));
170
170
  }, children: jsxRuntime.jsx(IconKeyboardArrowRight, {}) })] }), children: jsxRuntime.jsx(index$1, { height: "100%", p: .5, className: 'calender-container', children: view }) }));
171
171
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../src/Calendar/index.tsx"],"sourcesContent":["\"use client\";\nimport { useEffect, useRef, useState } from 'react';\nimport Stack from '../Stack'\nimport IconButton from '../IconButton';\nimport IconKeyboardArrowRight from '@xanui/icons/KeyboardArrowRight';\nimport IconKeyboardArrowLeft from '@xanui/icons/KeyboardArrowLeft';\nimport Text from '../Text';\nimport Button from '../Button';\nimport ResetIcon from '@xanui/icons/Replay';\nimport ViewBox from '../ViewBox';\nimport { UseColorTemplateColor, useInterface, useBreakpointPropsType, useBreakpointProps } from '@xanui/core';\n\nexport type CalendarProps = {\n value?: Date | null;\n onChange?: (date: Date | null) => void;\n viewMode?: useBreakpointPropsType<\"year\" | \"month\" | \"day\">;\n onButtonClick?: (mode: CalendarProps[\"viewMode\"], value: CalendarProps[\"value\"]) => void;\n color?: useBreakpointPropsType<UseColorTemplateColor>;\n}\n\n\nconst ShowYears = ({ color, year, today, onClick }: any) => {\n let years: any[] = []\n const selectedRef: any = useRef(null)\n for (let y = 1900; y < today.getFullYear() + 40; y++) {\n const selected = year == y\n years.push(<Stack\n key={y}\n sx={{\n width: 50,\n p: .1\n }}\n className='calender-year-item'\n >\n <Button\n color={selected ? color : \"default\"}\n className='calender-year-button'\n size='small'\n corner=\"circle\"\n ref={selected ? selectedRef : null}\n onClick={() => onClick(y)}\n variant={selected ? \"fill\" : \"text\"}\n >\n {y}\n </Button>\n </Stack>)\n }\n\n useEffect(() => {\n if (selectedRef?.current) {\n selectedRef?.current.scrollIntoView({ behavior: \"smooth\", block: \"center\", inline: \"nearest\" })\n }\n }, [])\n\n return (\n <Stack\n sx={{\n flexWrap: \"wrap\",\n flexDirection: \"row\",\n overflow: \"hidden\",\n overflowY: \"auto\"\n }}\n className='calender-years'\n >\n {years}\n </Stack>\n )\n}\n\n\nconst Calendar = ({ value, ...rest }: CalendarProps) => {\n let [{ onChange, viewMode: VMode, onButtonClick, color }] = useInterface<any>(\"Calender\", rest, {})\n const _p: any = {}\n if (VMode) _p.VMode = VMode\n if (color) _p.color = color\n const p: any = useBreakpointProps(_p)\n color = p.color || \"brand\"\n\n let [viewMode, setViewMode] = useState<any>(p.VMode || \"day\");\n let [selectedDate, setSelectedDate] = useState(new Date());\n selectedDate = value instanceof Date ? value : selectedDate\n const [currentDate, setCurrentDate] = useState(selectedDate);\n const year = currentDate.getFullYear()\n const month = currentDate.getMonth()\n const daysInMonth = 32 - new Date(year, month, 32).getDate()\n const today = new Date();\n const btnWidth = 36\n const boxWidth = btnWidth * 7\n\n const showCalendar = () => {\n\n let firstDay = (new Date(year, month)).getDay();\n let rows = []\n let row = []\n\n const dayNames = ['S', 'M', 'T', 'W', 'T', 'F', 'S'];\n for (let i = 0; i < dayNames.length; i++) {\n const k = dayNames[i];\n row.push(<Stack\n key={\"dayname-\" + i}\n sx={{\n width: btnWidth,\n height: btnWidth,\n alignItems: \"center\",\n justifyContent: \"center\"\n }}\n >\n <IconButton\n variant={\"text\"}\n color=\"default\"\n disabled\n >\n {k}\n </IconButton>\n </Stack>)\n }\n\n rows.push(<Stack flexRow key={\"header\"} className='calender-day-row'>\n {row}\n </Stack>);\n\n let date = 1;\n for (let i = 0; i < 6; i++) {\n let row = []\n for (let j = 0; j < 7; j++) {\n if (i === 0 && j < firstDay) {\n row.push(<Stack\n alignItems=\"center\"\n justifyContent=\"center\"\n key={date + j + i}\n sx={{\n width: btnWidth,\n height: btnWidth,\n alignItems: \"center\",\n justifyContent: \"center\"\n }}\n >\n\n </Stack>)\n } else if (date > daysInMonth) {\n break;\n } else {\n let isToday = date === today.getDate() && year === today.getFullYear() && month === today.getMonth()\n let isSelected = date === selectedDate.getDate() && year === selectedDate.getFullYear() && month === selectedDate.getMonth()\n\n let css: any = {}\n if (isToday) {\n css = {\n variant: \"fill\",\n color: \"default\"\n }\n }\n\n if (isSelected) {\n css = {\n variant: \"fill\",\n color: color\n }\n }\n\n row.push(<Stack\n sx={{\n width: btnWidth,\n height: btnWidth,\n alignItems: \"center\",\n justifyContent: \"center\"\n }}\n key={date + j + i}\n className='calender-day-item'\n >\n <IconButton\n className='calender-day-button'\n variant={isSelected ? \"fill\" : \"text\"}\n color={isToday ? color : \"default\"}\n {...css}\n data-value={date}\n onClick={(e: any) => {\n let d = e.target.getAttribute(\"data-value\")\n if (!d) return\n let selectedDate = new Date(year, month, parseInt(d))\n onChange ? onChange(selectedDate) : setSelectedDate(selectedDate)\n onButtonClick && onButtonClick(\"day\", selectedDate)\n }}\n >\n {date}\n </IconButton>\n </Stack>)\n date++;\n }\n }\n rows.push(<Stack flexRow key={\"row\" + i} className='calender-day-row'>\n {row}\n </Stack>);\n }\n return rows\n }\n\n const showMonth = () => {\n let months: any[] = []\n const monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\n for (let m = 0; m < monthNames.length; m++) {\n const selected = currentDate.getMonth() === m\n\n months.push(<Stack\n key={m}\n width={\"50%\"}\n alignItems=\"center\"\n justifyContent=\"center\"\n p={.1}\n className='calender-months-item'\n >\n <Button\n color={selected ? color : \"default\"}\n className='calender-month-button'\n size='small'\n corner=\"circle\"\n variant={selected ? \"fill\" : 'text'}\n onClick={() => {\n const v = new Date(currentDate.getFullYear(), m)\n setCurrentDate(v)\n setViewMode(\"day\")\n onButtonClick && onButtonClick(\"month\", v)\n }}\n sx={{\n color: selected ? \"brand.text\" : \"text.primary\"\n }}\n >\n {monthNames[m]}\n </Button>\n </Stack>)\n }\n\n return (\n <Stack\n className='calender-months'\n sx={{\n flexWrap: \"wrap\",\n overflow: \"hidden\",\n overflowY: \"auto\",\n flexDirection: \"row\"\n }}\n >\n {months}\n </Stack>\n )\n }\n\n let view: any = null\n switch (viewMode) {\n case \"year\":\n view = <ShowYears\n color={color}\n today={today}\n year={year}\n boxWidth={boxWidth}\n onClick={(y: any) => {\n currentDate.setFullYear(y)\n setCurrentDate(currentDate)\n setViewMode(\"month\")\n onButtonClick && onButtonClick(\"year\", currentDate)\n }}\n />\n break;\n case \"month\":\n view = showMonth()\n break;\n default:\n view = (<>\n\n {showCalendar()}\n </>\n )\n break;\n }\n\n return (\n <ViewBox\n className='calender-root'\n maxHeight={308}\n width={250}\n radius={1}\n bgcolor=\"background.secondary\"\n startContent={\n <Stack className='calender-header' flexRow alignItems=\"center\" justifyContent=\"space-between\" p={1}>\n <Text\n fontWeight=\"bold\"\n cursor=\"pointer\"\n onClick={() => setViewMode(viewMode !== 'day' ? \"day\" : \"year\")}\n flex={1}\n >\n {currentDate.toLocaleDateString(undefined, { year: 'numeric', month: 'long' })}\n </Text>\n <IconButton\n color=\"default\"\n variant='text'\n size={28}\n onClick={() => {\n setCurrentDate(new Date())\n onChange ? onChange(new Date()) : setSelectedDate(new Date())\n }}\n >\n <ResetIcon fontSize={20} />\n </IconButton>\n <IconButton\n color=\"default\"\n variant='text'\n size={28}\n onClick={() => {\n setCurrentDate(new Date(currentDate.getFullYear(), currentDate.getMonth() - 1, 1))\n }}\n >\n <IconKeyboardArrowLeft />\n </IconButton>\n <IconButton\n color=\"default\"\n variant='text'\n size={28}\n onClick={() => {\n setCurrentDate(new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 1))\n }}\n >\n <IconKeyboardArrowRight />\n </IconButton>\n </Stack>\n }\n >\n <Stack height=\"100%\" p={.5} className='calender-container'>\n {view}\n </Stack>\n </ViewBox>\n );\n};\n\nexport default Calendar;"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAqBA;;AAEI;AACA;AACI;AACA;AAGQ;AACA;AACH;;;;;;;AAuBT;AAGY;AACA;AACA;AACA;AACH;AAMb;AAGA;AAAkB;;;AAGd;AAAW;AACX;AAAW;AACX;AACA;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAII;;;AAIA;AACA;AACI;AACA;AAGQ;AACA;AACA;AACA;;;AAaZ;;AAKA;;AAEI;;AAEQ;AAKQ;AACA;AACA;AACA;AACH;;AAIF;;;;;;;;AAQC;AACI;AACA;;;;AAKJ;AACI;AACA;;;AAIR;AAEQ;AACA;AACA;AACA;;;AAaI;;AACA;AACA;AACA;;AAMZ;;;AAGR;;AAIJ;AACJ;;;;AAKI;;AAGI;AAeY;;;AAGA;;;;;;AAeJ;AACA;AACA;AACA;;AAMhB;;;AAII;;AAOY;;;AAGA;AACJ;;AAGR;;;AAGA;AACI;;;;AA8BgB;AACA;AACJ;AASI;;AAUA;;AAa5B;;"}
1
+ {"version":3,"file":"index.cjs","sources":["../../src/Calendar/index.tsx"],"sourcesContent":["\"use client\";\nimport { useEffect, useRef, useState } from 'react';\nimport Stack from '../Stack'\nimport IconButton from '../IconButton';\nimport IconKeyboardArrowRight from '@xanui/icons/KeyboardArrowRight';\nimport IconKeyboardArrowLeft from '@xanui/icons/KeyboardArrowLeft';\nimport Text from '../Text';\nimport Button from '../Button';\nimport ResetIcon from '@xanui/icons/Replay';\nimport ViewBox from '../ViewBox';\nimport { UseColorTemplateColor, useInterface, useBreakpointPropsType, useBreakpointProps } from '@xanui/core';\n\nexport type CalendarProps = {\n value?: Date | null;\n onChange?: (date: Date | null) => void;\n viewMode?: useBreakpointPropsType<\"year\" | \"month\" | \"day\">;\n onButtonClick?: (mode: CalendarProps[\"viewMode\"], value: CalendarProps[\"value\"]) => void;\n color?: useBreakpointPropsType<UseColorTemplateColor>;\n}\n\n\nconst ShowYears = ({ color, year, today, onClick }: any) => {\n let years: any[] = []\n const selectedRef: any = useRef(null)\n for (let y = 1900; y < today.getFullYear() + 40; y++) {\n const selected = year == y\n years.push(<Stack\n key={y}\n sx={{\n width: 50,\n p: .1\n }}\n className='calender-year-item'\n >\n <Button\n color={selected ? color : 'surface'}\n className='calender-year-button'\n size='small'\n corner=\"circle\"\n ref={selected ? selectedRef : null}\n onClick={() => onClick(y)}\n variant={selected ? \"fill\" : \"text\"}\n >\n {y}\n </Button>\n </Stack>)\n }\n\n useEffect(() => {\n if (selectedRef?.current) {\n selectedRef?.current.scrollIntoView({ behavior: \"smooth\", block: \"center\", inline: \"nearest\" })\n }\n }, [])\n\n return (\n <Stack\n sx={{\n flexWrap: \"wrap\",\n flexDirection: \"row\",\n overflow: \"hidden\",\n overflowY: \"auto\"\n }}\n className='calender-years'\n >\n {years}\n </Stack>\n )\n}\n\n\nconst Calendar = ({ value, ...rest }: CalendarProps) => {\n let [{ onChange, viewMode: VMode, onButtonClick, color }] = useInterface<any>(\"Calender\", rest, {})\n const _p: any = {}\n if (VMode) _p.VMode = VMode\n if (color) _p.color = color\n const p: any = useBreakpointProps(_p)\n color = p.color || \"primary\"\n\n let [viewMode, setViewMode] = useState<any>(p.VMode || \"day\");\n let [selectedDate, setSelectedDate] = useState(new Date());\n selectedDate = value instanceof Date ? value : selectedDate\n const [currentDate, setCurrentDate] = useState(selectedDate);\n const year = currentDate.getFullYear()\n const month = currentDate.getMonth()\n const daysInMonth = 32 - new Date(year, month, 32).getDate()\n const today = new Date();\n const btnWidth = 36\n const boxWidth = btnWidth * 7\n\n const showCalendar = () => {\n\n let firstDay = (new Date(year, month)).getDay();\n let rows = []\n let row = []\n\n const dayNames = ['S', 'M', 'T', 'W', 'T', 'F', 'S'];\n for (let i = 0; i < dayNames.length; i++) {\n const k = dayNames[i];\n row.push(<Stack\n key={\"dayname-\" + i}\n sx={{\n width: btnWidth,\n height: btnWidth,\n alignItems: \"center\",\n justifyContent: \"center\"\n }}\n >\n <IconButton\n variant={\"text\"}\n color=\"surface\"\n disabled\n >\n {k}\n </IconButton>\n </Stack>)\n }\n\n rows.push(<Stack flexRow key={\"header\"} className='calender-day-row'>\n {row}\n </Stack>);\n\n let date = 1;\n for (let i = 0; i < 6; i++) {\n let row = []\n for (let j = 0; j < 7; j++) {\n if (i === 0 && j < firstDay) {\n row.push(<Stack\n alignItems=\"center\"\n justifyContent=\"center\"\n key={date + j + i}\n sx={{\n width: btnWidth,\n height: btnWidth,\n alignItems: \"center\",\n justifyContent: \"center\"\n }}\n >\n\n </Stack>)\n } else if (date > daysInMonth) {\n break;\n } else {\n let isToday = date === today.getDate() && year === today.getFullYear() && month === today.getMonth()\n let isSelected = date === selectedDate.getDate() && year === selectedDate.getFullYear() && month === selectedDate.getMonth()\n\n let css: any = {}\n if (isToday) {\n css = {\n variant: \"fill\",\n color: \"surface\"\n }\n }\n\n if (isSelected) {\n css = {\n variant: \"fill\",\n color: color\n }\n }\n\n row.push(<Stack\n sx={{\n width: btnWidth,\n height: btnWidth,\n alignItems: \"center\",\n justifyContent: \"center\"\n }}\n key={date + j + i}\n className='calender-day-item'\n >\n <IconButton\n className='calender-day-button'\n variant={isSelected ? \"fill\" : \"text\"}\n color={isToday ? color : \"surface\"}\n {...css}\n data-value={date}\n onClick={(e: any) => {\n let d = e.target.getAttribute(\"data-value\")\n if (!d) return\n let selectedDate = new Date(year, month, parseInt(d))\n onChange ? onChange(selectedDate) : setSelectedDate(selectedDate)\n onButtonClick && onButtonClick(\"day\", selectedDate)\n }}\n >\n {date}\n </IconButton>\n </Stack>)\n date++;\n }\n }\n rows.push(<Stack flexRow key={\"row\" + i} className='calender-day-row'>\n {row}\n </Stack>);\n }\n return rows\n }\n\n const showMonth = () => {\n let months: any[] = []\n const monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\n for (let m = 0; m < monthNames.length; m++) {\n const selected = currentDate.getMonth() === m\n\n months.push(<Stack\n key={m}\n width={\"50%\"}\n alignItems=\"center\"\n justifyContent=\"center\"\n p={.1}\n className='calender-months-item'\n >\n <Button\n color={selected ? color : 'surface'}\n className='calender-month-button'\n size='small'\n corner=\"circle\"\n variant={selected ? \"fill\" : 'text'}\n onClick={() => {\n const v = new Date(currentDate.getFullYear(), m)\n setCurrentDate(v)\n setViewMode(\"day\")\n onButtonClick && onButtonClick(\"month\", v)\n }}\n sx={{\n color: selected ? \"primary.contrast\" : \"surface.contrast\"\n }}\n >\n {monthNames[m]}\n </Button>\n </Stack>)\n }\n\n return (\n <Stack\n className='calender-months'\n sx={{\n flexWrap: \"wrap\",\n overflow: \"hidden\",\n overflowY: \"auto\",\n flexDirection: \"row\"\n }}\n >\n {months}\n </Stack>\n )\n }\n\n let view: any = null\n switch (viewMode) {\n case \"year\":\n view = <ShowYears\n color={color}\n today={today}\n year={year}\n boxWidth={boxWidth}\n onClick={(y: any) => {\n currentDate.setFullYear(y)\n setCurrentDate(currentDate)\n setViewMode(\"month\")\n onButtonClick && onButtonClick(\"year\", currentDate)\n }}\n />\n break;\n case \"month\":\n view = showMonth()\n break;\n default:\n view = (<>\n\n {showCalendar()}\n </>\n )\n break;\n }\n\n return (\n <ViewBox\n className='calender-root'\n maxHeight={308}\n width={250}\n radius={1}\n bgcolor=\"surface.lighter\"\n startContent={\n <Stack className='calender-header' flexRow alignItems=\"center\" justifyContent=\"space-between\" p={1}>\n <Text\n fontWeight=\"bold\"\n cursor=\"pointer\"\n onClick={() => setViewMode(viewMode !== 'day' ? \"day\" : \"year\")}\n flex={1}\n >\n {currentDate.toLocaleDateString(undefined, { year: 'numeric', month: 'long' })}\n </Text>\n <IconButton\n color=\"surface\"\n variant='text'\n size={28}\n onClick={() => {\n setCurrentDate(new Date())\n onChange ? onChange(new Date()) : setSelectedDate(new Date())\n }}\n >\n <ResetIcon fontSize={20} />\n </IconButton>\n <IconButton\n color=\"surface\"\n variant='text'\n size={28}\n onClick={() => {\n setCurrentDate(new Date(currentDate.getFullYear(), currentDate.getMonth() - 1, 1))\n }}\n >\n <IconKeyboardArrowLeft />\n </IconButton>\n <IconButton\n color=\"surface\"\n variant='text'\n size={28}\n onClick={() => {\n setCurrentDate(new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 1))\n }}\n >\n <IconKeyboardArrowRight />\n </IconButton>\n </Stack>\n }\n >\n <Stack height=\"100%\" p={.5} className='calender-container'>\n {view}\n </Stack>\n </ViewBox>\n );\n};\n\nexport default Calendar;"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAqBA;;AAEI;AACA;AACI;AACA;AAGQ;AACA;AACH;;;;;;;AAuBT;AAGY;AACA;AACA;AACA;AACH;AAMb;AAGA;AAAkB;;;AAGd;AAAW;AACX;AAAW;AACX;AACA;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAII;;;AAIA;AACA;AACI;AACA;AAGQ;AACA;AACA;AACA;;;AAaZ;;AAKA;;AAEI;;AAEQ;AAKQ;AACA;AACA;AACA;AACH;;AAIF;;;;;;;;AAQC;AACI;AACA;;;;AAKJ;AACI;AACA;;;AAIR;AAEQ;AACA;AACA;AACA;;;AAaI;;AACA;AACA;AACA;;AAMZ;;;AAGR;;AAIJ;AACJ;;;;AAKI;;AAGI;AAeY;;;AAGA;;;;;;AAeJ;AACA;AACA;AACA;;AAMhB;;;AAII;;AAOY;;;AAGA;AACJ;;AAGR;;;AAGA;AACI;;;;AA8BgB;AACA;AACJ;AASI;;AAUA;;AAa5B;;"}
package/Calendar/index.js CHANGED
@@ -20,7 +20,7 @@ const ShowYears = ({ color, year, today, onClick }) => {
20
20
  years.push(jsx(Stack, { sx: {
21
21
  width: 50,
22
22
  p: .1
23
- }, className: 'calender-year-item', children: jsx(Button, { color: selected ? color : "default", className: 'calender-year-button', size: 'small', corner: "circle", ref: selected ? selectedRef : null, onClick: () => onClick(y), variant: selected ? "fill" : "text", children: y }) }, y));
23
+ }, className: 'calender-year-item', children: jsx(Button, { color: selected ? color : 'surface', className: 'calender-year-button', size: 'small', corner: "circle", ref: selected ? selectedRef : null, onClick: () => onClick(y), variant: selected ? "fill" : "text", children: y }) }, y));
24
24
  }
25
25
  useEffect(() => {
26
26
  if (selectedRef === null || selectedRef === void 0 ? void 0 : selectedRef.current) {
@@ -43,7 +43,7 @@ const Calendar = (_a) => {
43
43
  if (color)
44
44
  _p.color = color;
45
45
  const p = useBreakpointProps(_p);
46
- color = p.color || "brand";
46
+ color = p.color || "primary";
47
47
  let [viewMode, setViewMode] = useState(p.VMode || "day");
48
48
  let [selectedDate, setSelectedDate] = useState(new Date());
49
49
  selectedDate = value instanceof Date ? value : selectedDate;
@@ -66,7 +66,7 @@ const Calendar = (_a) => {
66
66
  height: btnWidth,
67
67
  alignItems: "center",
68
68
  justifyContent: "center"
69
- }, children: jsx(IconButton, { variant: "text", color: "default", disabled: true, children: k }) }, "dayname-" + i));
69
+ }, children: jsx(IconButton, { variant: "text", color: "surface", disabled: true, children: k }) }, "dayname-" + i));
70
70
  }
71
71
  rows.push(jsx(Stack, { flexRow: true, className: 'calender-day-row', children: row }, "header"));
72
72
  let date = 1;
@@ -91,7 +91,7 @@ const Calendar = (_a) => {
91
91
  if (isToday) {
92
92
  css = {
93
93
  variant: "fill",
94
- color: "default"
94
+ color: "surface"
95
95
  };
96
96
  }
97
97
  if (isSelected) {
@@ -105,7 +105,7 @@ const Calendar = (_a) => {
105
105
  height: btnWidth,
106
106
  alignItems: "center",
107
107
  justifyContent: "center"
108
- }, className: 'calender-day-item', children: jsx(IconButton, Object.assign({ className: 'calender-day-button', variant: isSelected ? "fill" : "text", color: isToday ? color : "default" }, css, { "data-value": date, onClick: (e) => {
108
+ }, className: 'calender-day-item', children: jsx(IconButton, Object.assign({ className: 'calender-day-button', variant: isSelected ? "fill" : "text", color: isToday ? color : "surface" }, css, { "data-value": date, onClick: (e) => {
109
109
  let d = e.target.getAttribute("data-value");
110
110
  if (!d)
111
111
  return;
@@ -125,13 +125,13 @@ const Calendar = (_a) => {
125
125
  const monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
126
126
  for (let m = 0; m < monthNames.length; m++) {
127
127
  const selected = currentDate.getMonth() === m;
128
- months.push(jsx(Stack, { width: "50%", alignItems: "center", justifyContent: "center", p: .1, className: 'calender-months-item', children: jsx(Button, { color: selected ? color : "default", className: 'calender-month-button', size: 'small', corner: "circle", variant: selected ? "fill" : 'text', onClick: () => {
128
+ months.push(jsx(Stack, { width: "50%", alignItems: "center", justifyContent: "center", p: .1, className: 'calender-months-item', children: jsx(Button, { color: selected ? color : 'surface', className: 'calender-month-button', size: 'small', corner: "circle", variant: selected ? "fill" : 'text', onClick: () => {
129
129
  const v = new Date(currentDate.getFullYear(), m);
130
130
  setCurrentDate(v);
131
131
  setViewMode("day");
132
132
  onButtonClick && onButtonClick("month", v);
133
133
  }, sx: {
134
- color: selected ? "brand.text" : "text.primary"
134
+ color: selected ? "primary.contrast" : "surface.contrast"
135
135
  }, children: monthNames[m] }) }, m));
136
136
  }
137
137
  return (jsx(Stack, { className: 'calender-months', sx: {
@@ -158,12 +158,12 @@ const Calendar = (_a) => {
158
158
  view = (jsx(Fragment, { children: showCalendar() }));
159
159
  break;
160
160
  }
161
- return (jsx(ViewBox, { className: 'calender-root', maxHeight: 308, width: 250, radius: 1, bgcolor: "background.secondary", startContent: jsxs(Stack, { className: 'calender-header', flexRow: true, alignItems: "center", justifyContent: "space-between", p: 1, children: [jsx(Text, { fontWeight: "bold", cursor: "pointer", onClick: () => setViewMode(viewMode !== 'day' ? "day" : "year"), flex: 1, children: currentDate.toLocaleDateString(undefined, { year: 'numeric', month: 'long' }) }), jsx(IconButton, { color: "default", variant: 'text', size: 28, onClick: () => {
161
+ return (jsx(ViewBox, { className: 'calender-root', maxHeight: 308, width: 250, radius: 1, bgcolor: "surface.lighter", startContent: jsxs(Stack, { className: 'calender-header', flexRow: true, alignItems: "center", justifyContent: "space-between", p: 1, children: [jsx(Text, { fontWeight: "bold", cursor: "pointer", onClick: () => setViewMode(viewMode !== 'day' ? "day" : "year"), flex: 1, children: currentDate.toLocaleDateString(undefined, { year: 'numeric', month: 'long' }) }), jsx(IconButton, { color: "surface", variant: 'text', size: 28, onClick: () => {
162
162
  setCurrentDate(new Date());
163
163
  onChange ? onChange(new Date()) : setSelectedDate(new Date());
164
- }, children: jsx(ResetIcon, { fontSize: 20 }) }), jsx(IconButton, { color: "default", variant: 'text', size: 28, onClick: () => {
164
+ }, children: jsx(ResetIcon, { fontSize: 20 }) }), jsx(IconButton, { color: "surface", variant: 'text', size: 28, onClick: () => {
165
165
  setCurrentDate(new Date(currentDate.getFullYear(), currentDate.getMonth() - 1, 1));
166
- }, children: jsx(IconKeyboardArrowLeft, {}) }), jsx(IconButton, { color: "default", variant: 'text', size: 28, onClick: () => {
166
+ }, children: jsx(IconKeyboardArrowLeft, {}) }), jsx(IconButton, { color: "surface", variant: 'text', size: 28, onClick: () => {
167
167
  setCurrentDate(new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 1));
168
168
  }, children: jsx(IconKeyboardArrowRight, {}) })] }), children: jsx(Stack, { height: "100%", p: .5, className: 'calender-container', children: view }) }));
169
169
  };