@xanui/ui 1.2.9 → 1.2.11

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 (209) hide show
  1. package/Accordion/index.cjs +3 -3
  2. package/Accordion/index.cjs.map +1 -1
  3. package/Accordion/index.js +3 -3
  4. package/Accordion/index.js.map +1 -1
  5. package/Alert/index.cjs +8 -8
  6. package/Alert/index.cjs.map +1 -1
  7. package/Alert/index.js +8 -8
  8. package/Alert/index.js.map +1 -1
  9. package/Autocomplete/index.cjs +2 -2
  10. package/Autocomplete/index.cjs.map +1 -1
  11. package/Autocomplete/index.d.ts +1 -1
  12. package/Autocomplete/index.js +2 -2
  13. package/Autocomplete/index.js.map +1 -1
  14. package/Avatar/index.cjs +2 -2
  15. package/Avatar/index.cjs.map +1 -1
  16. package/Avatar/index.js +2 -2
  17. package/Avatar/index.js.map +1 -1
  18. package/AvatarBox/index.cjs +1 -1
  19. package/AvatarBox/index.cjs.map +1 -1
  20. package/AvatarBox/index.js +1 -1
  21. package/AvatarBox/index.js.map +1 -1
  22. package/AvatarPicker/index.cjs +3 -3
  23. package/AvatarPicker/index.cjs.map +1 -1
  24. package/AvatarPicker/index.d.ts +1 -1
  25. package/AvatarPicker/index.js +3 -3
  26. package/AvatarPicker/index.js.map +1 -1
  27. package/Badge/index.cjs +1 -1
  28. package/Badge/index.cjs.map +1 -1
  29. package/Badge/index.js +1 -1
  30. package/Badge/index.js.map +1 -1
  31. package/Button/index.cjs +1 -1
  32. package/Button/index.cjs.map +1 -1
  33. package/Button/index.js +1 -1
  34. package/Button/index.js.map +1 -1
  35. package/ButtonGroup/index.cjs +1 -1
  36. package/ButtonGroup/index.cjs.map +1 -1
  37. package/ButtonGroup/index.js +1 -1
  38. package/ButtonGroup/index.js.map +1 -1
  39. package/Calendar/index.cjs +9 -9
  40. package/Calendar/index.cjs.map +1 -1
  41. package/Calendar/index.js +9 -9
  42. package/Calendar/index.js.map +1 -1
  43. package/CalendarInput/index.cjs +1 -1
  44. package/CalendarInput/index.cjs.map +1 -1
  45. package/CalendarInput/index.js +1 -1
  46. package/CalendarInput/index.js.map +1 -1
  47. package/Card/index.cjs +4 -4
  48. package/Card/index.cjs.map +1 -1
  49. package/Card/index.d.ts +1 -1
  50. package/Card/index.js +4 -4
  51. package/Card/index.js.map +1 -1
  52. package/Checkbox/index.cjs +1 -1
  53. package/Checkbox/index.cjs.map +1 -1
  54. package/Checkbox/index.js +1 -1
  55. package/Checkbox/index.js.map +1 -1
  56. package/CircleProgress/index.cjs +7 -7
  57. package/CircleProgress/index.cjs.map +1 -1
  58. package/CircleProgress/index.js +7 -7
  59. package/CircleProgress/index.js.map +1 -1
  60. package/DataFilter/options/DateFilter.cjs +2 -2
  61. package/DataFilter/options/DateFilter.cjs.map +1 -1
  62. package/DataFilter/options/DateFilter.js +2 -2
  63. package/DataFilter/options/DateFilter.js.map +1 -1
  64. package/DataFilter/options/DateRangeFilter.cjs +1 -1
  65. package/DataFilter/options/DateRangeFilter.cjs.map +1 -1
  66. package/DataFilter/options/DateRangeFilter.js +1 -1
  67. package/DataFilter/options/DateRangeFilter.js.map +1 -1
  68. package/DataFilter/options/MultiSelectFilter.cjs +2 -2
  69. package/DataFilter/options/MultiSelectFilter.cjs.map +1 -1
  70. package/DataFilter/options/MultiSelectFilter.js +2 -2
  71. package/DataFilter/options/MultiSelectFilter.js.map +1 -1
  72. package/DataFilter/options/NumberFilter.cjs +1 -1
  73. package/DataFilter/options/NumberFilter.cjs.map +1 -1
  74. package/DataFilter/options/NumberFilter.js +1 -1
  75. package/DataFilter/options/NumberFilter.js.map +1 -1
  76. package/DataFilter/options/NumberRangeFilter.cjs +1 -1
  77. package/DataFilter/options/NumberRangeFilter.cjs.map +1 -1
  78. package/DataFilter/options/NumberRangeFilter.js +1 -1
  79. package/DataFilter/options/NumberRangeFilter.js.map +1 -1
  80. package/DataFilter/options/SelectFilter.cjs +2 -2
  81. package/DataFilter/options/SelectFilter.cjs.map +1 -1
  82. package/DataFilter/options/SelectFilter.js +2 -2
  83. package/DataFilter/options/SelectFilter.js.map +1 -1
  84. package/DataFilter/options/TextFilter.cjs +1 -1
  85. package/DataFilter/options/TextFilter.cjs.map +1 -1
  86. package/DataFilter/options/TextFilter.js +1 -1
  87. package/DataFilter/options/TextFilter.js.map +1 -1
  88. package/Datatable/FilterBox.cjs +2 -2
  89. package/Datatable/FilterBox.cjs.map +1 -1
  90. package/Datatable/FilterBox.js +2 -2
  91. package/Datatable/FilterBox.js.map +1 -1
  92. package/Datatable/Row.cjs +1 -1
  93. package/Datatable/Row.cjs.map +1 -1
  94. package/Datatable/Row.js +1 -1
  95. package/Datatable/Row.js.map +1 -1
  96. package/Datatable/SelectedBox.cjs +1 -1
  97. package/Datatable/SelectedBox.cjs.map +1 -1
  98. package/Datatable/SelectedBox.js +1 -1
  99. package/Datatable/SelectedBox.js.map +1 -1
  100. package/Datatable/Table.cjs +1 -1
  101. package/Datatable/Table.cjs.map +1 -1
  102. package/Datatable/Table.js +1 -1
  103. package/Datatable/Table.js.map +1 -1
  104. package/Datatable/TableHead.cjs +3 -3
  105. package/Datatable/TableHead.cjs.map +1 -1
  106. package/Datatable/TableHead.js +3 -3
  107. package/Datatable/TableHead.js.map +1 -1
  108. package/Datatable/index.cjs +1 -1
  109. package/Datatable/index.cjs.map +1 -1
  110. package/Datatable/index.js +1 -1
  111. package/Datatable/index.js.map +1 -1
  112. package/Divider/index.cjs +3 -3
  113. package/Divider/index.cjs.map +1 -1
  114. package/Divider/index.js +3 -3
  115. package/Divider/index.js.map +1 -1
  116. package/Drawer/index.cjs +1 -1
  117. package/Drawer/index.cjs.map +1 -1
  118. package/Drawer/index.js +1 -1
  119. package/Drawer/index.js.map +1 -1
  120. package/FilePicker/index.d.ts +1 -1
  121. package/Form/index.cjs +1 -1
  122. package/Form/index.cjs.map +1 -1
  123. package/Form/index.js +1 -1
  124. package/Form/index.js.map +1 -1
  125. package/GalleryPicker/index.cjs +5 -5
  126. package/GalleryPicker/index.cjs.map +1 -1
  127. package/GalleryPicker/index.d.ts +1 -1
  128. package/GalleryPicker/index.js +5 -5
  129. package/GalleryPicker/index.js.map +1 -1
  130. package/Input/index.cjs +7 -7
  131. package/Input/index.cjs.map +1 -1
  132. package/Input/index.d.ts +1 -1
  133. package/Input/index.js +7 -7
  134. package/Input/index.js.map +1 -1
  135. package/Label/index.cjs +1 -1
  136. package/Label/index.cjs.map +1 -1
  137. package/Label/index.js +1 -1
  138. package/Label/index.js.map +1 -1
  139. package/LineProgress/index.cjs +2 -2
  140. package/LineProgress/index.cjs.map +1 -1
  141. package/LineProgress/index.js +2 -2
  142. package/LineProgress/index.js.map +1 -1
  143. package/ListItem/index.cjs +2 -2
  144. package/ListItem/index.cjs.map +1 -1
  145. package/ListItem/index.js +2 -2
  146. package/ListItem/index.js.map +1 -1
  147. package/Menu/index.cjs +1 -1
  148. package/Menu/index.cjs.map +1 -1
  149. package/Menu/index.js +1 -1
  150. package/Menu/index.js.map +1 -1
  151. package/Modal/index.cjs +1 -1
  152. package/Modal/index.cjs.map +1 -1
  153. package/Modal/index.js +1 -1
  154. package/Modal/index.js.map +1 -1
  155. package/PasswordInput/index.cjs +1 -1
  156. package/PasswordInput/index.cjs.map +1 -1
  157. package/PasswordInput/index.js +1 -1
  158. package/PasswordInput/index.js.map +1 -1
  159. package/RangeSlider/index.cjs +2 -2
  160. package/RangeSlider/index.cjs.map +1 -1
  161. package/RangeSlider/index.js +2 -2
  162. package/RangeSlider/index.js.map +1 -1
  163. package/Skeleton/index.cjs +1 -1
  164. package/Skeleton/index.cjs.map +1 -1
  165. package/Skeleton/index.js +1 -1
  166. package/Skeleton/index.js.map +1 -1
  167. package/Switch/index.cjs +1 -1
  168. package/Switch/index.cjs.map +1 -1
  169. package/Switch/index.d.ts +1 -1
  170. package/Switch/index.js +1 -1
  171. package/Switch/index.js.map +1 -1
  172. package/Tab/index.cjs +1 -1
  173. package/Tab/index.cjs.map +1 -1
  174. package/Tab/index.js +1 -1
  175. package/Tab/index.js.map +1 -1
  176. package/Table/index.cjs +4 -4
  177. package/Table/index.cjs.map +1 -1
  178. package/Table/index.js +4 -4
  179. package/Table/index.js.map +1 -1
  180. package/TableCell/index.cjs +1 -1
  181. package/TableCell/index.cjs.map +1 -1
  182. package/TableCell/index.js +1 -1
  183. package/TableCell/index.js.map +1 -1
  184. package/TablePagination/index.cjs +2 -2
  185. package/TablePagination/index.cjs.map +1 -1
  186. package/TablePagination/index.js +2 -2
  187. package/TablePagination/index.js.map +1 -1
  188. package/Tabs/index.cjs +1 -1
  189. package/Tabs/index.cjs.map +1 -1
  190. package/Tabs/index.js +1 -1
  191. package/Tabs/index.js.map +1 -1
  192. package/Text/index.cjs +1 -1
  193. package/Text/index.cjs.map +1 -1
  194. package/Text/index.js +1 -1
  195. package/Text/index.js.map +1 -1
  196. package/Tooltip/index.cjs +2 -2
  197. package/Tooltip/index.cjs.map +1 -1
  198. package/Tooltip/index.js +2 -2
  199. package/Tooltip/index.js.map +1 -1
  200. package/package.json +2 -2
  201. package/readme.md +4 -4
  202. package/useBlurCss/index.cjs +1 -1
  203. package/useBlurCss/index.cjs.map +1 -1
  204. package/useBlurCss/index.js +1 -1
  205. package/useBlurCss/index.js.map +1 -1
  206. package/useContextMenu/index.cjs +1 -1
  207. package/useContextMenu/index.cjs.map +1 -1
  208. package/useContextMenu/index.js +1 -1
  209. package/useContextMenu/index.js.map +1 -1
@@ -83,12 +83,12 @@ const Accordion = React.forwardRef((_a, ref) => {
83
83
  itemsx.cursor = "initial!important";
84
84
  }
85
85
  return (jsxRuntime.jsx(core.Tag, Object.assign({}, rootProps, { sxr: {
86
- bgcolor: "surface.main"
86
+ bgcolor: "default.base"
87
87
  }, baseClass: 'accordion', classNames: [{ "accordion-expanded": expand }, ...(classNames || [])], ref: ref, children: jsxRuntime.jsxs(index, Object.assign({ component: 'div' }, slotProps === null || slotProps === void 0 ? void 0 : slotProps.header, { color: color, variant: variant, hoverColor: hoverColor, hoverVariant: hoverVariant, className: 'accoutdion-header', children: [jsxRuntime.jsx(index$1, Object.assign({ minHeight: 55, radius: 0, component: 'div' }, slotProps === null || slotProps === void 0 ? void 0 : slotProps.headerContent, itemsx, { subtitle: subtitle, selected: expand, onClick: () => onClick && onClick(), className: "accordion-header-content", children: title })), jsxRuntime.jsx(index$2, Object.assign({}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.collaps, { open: expand, className: "accordion-collaps", children: jsxRuntime.jsx(core.Tag, Object.assign({}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.content, { sxr: {
88
- color: "surface.contrast",
88
+ color: "default.contrast",
89
89
  p: 2,
90
90
  py: 1,
91
- bgcolor: "surface.main"
91
+ bgcolor: "default.base"
92
92
  }, baseClass: 'accordion-content', children: children })) }))] })) })));
93
93
  });
94
94
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../src/Accordion/index.tsx"],"sourcesContent":["\"use client\";\nimport React, { ReactElement, useState } from 'react';\nimport { Tag, TagProps, useInterface, UseColorTemplateColor, UseColorTemplateType, TagComponentType, useBreakpointPropsType, useBreakpointProps } from '@xanui/core';\nimport ExpandIcon from \"@xanui/icons/ExpandMore\";\nimport Collaps from '../Collaps';\nimport List from '../List';\nimport ListItem from '../ListItem';\nimport type { CollapsProps } from '../Collaps';\nimport type { ListProps } from '../List';\nimport type { ListItemProps } from '../ListItem';\n\nexport type AccordionProps<T extends TagComponentType = \"div\"> = Omit<TagProps<T>, \"color\"> & {\n expand?: boolean;\n defaultExpand?: boolean;\n onClick?: () => void;\n title: useBreakpointPropsType<ReactElement | string>;\n subtitle?: useBreakpointPropsType<ReactElement | string>;\n startIcon?: useBreakpointPropsType<ReactElement>;\n endIcon?: useBreakpointPropsType<ReactElement>;\n expandIcon?: useBreakpointPropsType<ReactElement>;\n expandIconPlacement?: useBreakpointPropsType<\"start\" | \"end\">;\n expandAction?: useBreakpointPropsType<\"header\" | \"icon\">;\n color?: useBreakpointPropsType<UseColorTemplateColor>;\n variant?: useBreakpointPropsType<UseColorTemplateType>;\n hoverColor?: useBreakpointPropsType<UseColorTemplateColor>;\n hoverVariant?: useBreakpointPropsType<UseColorTemplateType>;\n\n slotProps?: {\n header?: Omit<ListProps, \"children\" | \"color\" | \"variant\" | \"hoverColor\" | \"hoverVariant\" | \"className\">;\n headerContent?: Omit<ListItemProps, \"children\" | \"subtitle\" | \"selected\" | \"startIcon\" | \"endIcon\" | \"onClick\" | \"className\">\n collaps?: Omit<CollapsProps, \"children\" | \"open\">;\n content?: Omit<TagProps, \"children\">;\n expandIconContainer?: Omit<TagProps<\"div\">, 'children' | 'className'>;\n }\n}\n\nconst Accordion = React.forwardRef(<T extends TagComponentType = \"div\">({ children, title, subtitle, defaultExpand, ...rest }: AccordionProps<T>, ref: React.Ref<any>) => {\n const [_expand, setExpand] = useState(defaultExpand || false)\n let [{\n expand,\n onClick,\n color,\n variant,\n hoverColor,\n hoverVariant,\n expandIcon,\n expandIconPlacement,\n startIcon,\n endIcon,\n expandAction,\n classNames,\n slotProps,\n ...rootProps\n }] = useInterface<any>(\"Accordion\", rest, {\n onClick: () => setExpand(!_expand) as any,\n color: \"primary\",\n variant: \"ghost\"\n })\n\n const _p: any = {}\n if (title) _p.title = title\n if (subtitle) _p.subtitle = subtitle\n if (startIcon) _p.startIcon = startIcon\n if (endIcon) _p.endIcon = endIcon\n if (expandIcon) _p.expandIcon = expandIcon\n if (expandIconPlacement) _p.expandIconPlacement = expandIconPlacement\n if (expandAction) _p.expandAction = expandAction\n if (color) _p.color = color\n if (variant) _p.variant = variant\n if (hoverColor) _p.hoverColor = hoverColor\n if (hoverVariant) _p.hoverVariant = hoverVariant\n\n const p: any = useBreakpointProps(_p)\n\n title = p.title\n subtitle = p.subtitle\n startIcon = p.startIcon\n endIcon = p.endIcon\n expandIcon = p.expandIcon\n expandIconPlacement = p.expandIconPlacement\n expandAction = p.expandAction\n color = p.color\n variant = p.variant\n hoverColor = p.hoverColor\n hoverVariant = p.hoverVariant\n\n expand = expand === undefined ? _expand : expand\n expandIcon = expandIcon ? <Tag\n cursor=\"pointer\"\n {...slotProps?.expandIconContainer}\n onClick={expandAction === 'icon' && onClick ? () => onClick() : () => { }}\n className='expand-icon-container'\n >\n {expandIcon}\n </Tag> : <Tag\n transform={`rotate(${expand ? 0 : -180}deg)`}\n transition=\"transform .4s\"\n cursor=\"pointer\"\n {...slotProps?.expandIconContainer}\n onClick={expandAction === 'icon' && onClick ? () => onClick() : () => { }}\n className='expand-icon-container'\n >\n <ExpandIcon />\n </Tag>\n\n let itemsx: any = {}\n\n if (expandIconPlacement === 'start') {\n itemsx = {\n startIcon: <Tag\n className='start-icon-container'\n sxr={{\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 1\n }}\n >\n {expandIcon}\n {startIcon}\n </Tag>,\n endIcon\n }\n\n } else {\n itemsx = {\n endIcon: <Tag\n className='end-icon-container'\n sxr={{\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 1\n }}\n >\n {endIcon}\n {expandIcon}\n </Tag>,\n startIcon\n }\n }\n\n if (expandAction === 'icon') {\n itemsx.onClick = () => { }\n itemsx.cursor = \"initial!important\"\n }\n\n return (\n <Tag\n {...rootProps}\n sxr={{\n bgcolor: \"surface.main\"\n }}\n baseClass='accordion'\n classNames={[{ \"accordion-expanded\": expand }, ...(classNames || [])]}\n ref={ref}\n >\n <List\n component='div'\n {...slotProps?.header}\n color={color}\n variant={variant}\n hoverColor={hoverColor}\n hoverVariant={hoverVariant}\n className='accoutdion-header'\n >\n <ListItem\n minHeight={55}\n radius={0}\n component='div'\n {...slotProps?.headerContent}\n {...itemsx}\n subtitle={subtitle}\n selected={expand}\n onClick={() => onClick && onClick()}\n className=\"accordion-header-content\"\n >{title}</ListItem>\n <Collaps\n {...slotProps?.collaps}\n open={expand}\n className=\"accordion-collaps\"\n >\n <Tag\n {...slotProps?.content}\n sxr={{\n color: \"surface.contrast\",\n p: 2,\n py: 1,\n bgcolor: \"surface.main\"\n }}\n baseClass='accordion-content'\n >\n {children}\n </Tag>\n </Collaps>\n </List>\n </Tag>\n )\n})\nexport default Accordion\n\n\n"],"names":[],"mappings":";;;;;;;;;;;;AAoCA;AAAwE;AACpE;AACA;;AAiBI;AACA;AACH;;AAGD;AAAW;AACX;AAAc;AACd;AAAe;AACf;AAAa;AACb;AAAgB;AAChB;AAAyB;AACzB;AAAkB;AAClB;AAAW;AACX;AAAa;AACb;AAAgB;AAChB;AAAkB;AAElB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;AAqBA;AACI;;AAIY;AACA;AACA;AACA;;;;;;AAUZ;;AAIY;AACA;AACA;AACA;;;;;AAUhB;AACI;AACA;;AAGJ;AAIY;AACH;AAiCe;AACA;AACA;AACA;;AAU5B;;"}
1
+ {"version":3,"file":"index.cjs","sources":["../../src/Accordion/index.tsx"],"sourcesContent":["\"use client\";\nimport React, { ReactElement, useState } from 'react';\nimport { Tag, TagProps, useInterface, UseColorTemplateColor, UseColorTemplateType, TagComponentType, useBreakpointPropsType, useBreakpointProps } from '@xanui/core';\nimport ExpandIcon from \"@xanui/icons/ExpandMore\";\nimport Collaps from '../Collaps';\nimport List from '../List';\nimport ListItem from '../ListItem';\nimport type { CollapsProps } from '../Collaps';\nimport type { ListProps } from '../List';\nimport type { ListItemProps } from '../ListItem';\n\nexport type AccordionProps<T extends TagComponentType = \"div\"> = Omit<TagProps<T>, \"color\"> & {\n expand?: boolean;\n defaultExpand?: boolean;\n onClick?: () => void;\n title: useBreakpointPropsType<ReactElement | string>;\n subtitle?: useBreakpointPropsType<ReactElement | string>;\n startIcon?: useBreakpointPropsType<ReactElement>;\n endIcon?: useBreakpointPropsType<ReactElement>;\n expandIcon?: useBreakpointPropsType<ReactElement>;\n expandIconPlacement?: useBreakpointPropsType<\"start\" | \"end\">;\n expandAction?: useBreakpointPropsType<\"header\" | \"icon\">;\n color?: useBreakpointPropsType<UseColorTemplateColor>;\n variant?: useBreakpointPropsType<UseColorTemplateType>;\n hoverColor?: useBreakpointPropsType<UseColorTemplateColor>;\n hoverVariant?: useBreakpointPropsType<UseColorTemplateType>;\n\n slotProps?: {\n header?: Omit<ListProps, \"children\" | \"color\" | \"variant\" | \"hoverColor\" | \"hoverVariant\" | \"className\">;\n headerContent?: Omit<ListItemProps, \"children\" | \"subtitle\" | \"selected\" | \"startIcon\" | \"endIcon\" | \"onClick\" | \"className\">\n collaps?: Omit<CollapsProps, \"children\" | \"open\">;\n content?: Omit<TagProps, \"children\">;\n expandIconContainer?: Omit<TagProps<\"div\">, 'children' | 'className'>;\n }\n}\n\nconst Accordion = React.forwardRef(<T extends TagComponentType = \"div\">({ children, title, subtitle, defaultExpand, ...rest }: AccordionProps<T>, ref: React.Ref<any>) => {\n const [_expand, setExpand] = useState(defaultExpand || false)\n let [{\n expand,\n onClick,\n color,\n variant,\n hoverColor,\n hoverVariant,\n expandIcon,\n expandIconPlacement,\n startIcon,\n endIcon,\n expandAction,\n classNames,\n slotProps,\n ...rootProps\n }] = useInterface<any>(\"Accordion\", rest, {\n onClick: () => setExpand(!_expand) as any,\n color: \"primary\",\n variant: \"ghost\"\n })\n\n const _p: any = {}\n if (title) _p.title = title\n if (subtitle) _p.subtitle = subtitle\n if (startIcon) _p.startIcon = startIcon\n if (endIcon) _p.endIcon = endIcon\n if (expandIcon) _p.expandIcon = expandIcon\n if (expandIconPlacement) _p.expandIconPlacement = expandIconPlacement\n if (expandAction) _p.expandAction = expandAction\n if (color) _p.color = color\n if (variant) _p.variant = variant\n if (hoverColor) _p.hoverColor = hoverColor\n if (hoverVariant) _p.hoverVariant = hoverVariant\n\n const p: any = useBreakpointProps(_p)\n\n title = p.title\n subtitle = p.subtitle\n startIcon = p.startIcon\n endIcon = p.endIcon\n expandIcon = p.expandIcon\n expandIconPlacement = p.expandIconPlacement\n expandAction = p.expandAction\n color = p.color\n variant = p.variant\n hoverColor = p.hoverColor\n hoverVariant = p.hoverVariant\n\n expand = expand === undefined ? _expand : expand\n expandIcon = expandIcon ? <Tag\n cursor=\"pointer\"\n {...slotProps?.expandIconContainer}\n onClick={expandAction === 'icon' && onClick ? () => onClick() : () => { }}\n className='expand-icon-container'\n >\n {expandIcon}\n </Tag> : <Tag\n transform={`rotate(${expand ? 0 : -180}deg)`}\n transition=\"transform .4s\"\n cursor=\"pointer\"\n {...slotProps?.expandIconContainer}\n onClick={expandAction === 'icon' && onClick ? () => onClick() : () => { }}\n className='expand-icon-container'\n >\n <ExpandIcon />\n </Tag>\n\n let itemsx: any = {}\n\n if (expandIconPlacement === 'start') {\n itemsx = {\n startIcon: <Tag\n className='start-icon-container'\n sxr={{\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 1\n }}\n >\n {expandIcon}\n {startIcon}\n </Tag>,\n endIcon\n }\n\n } else {\n itemsx = {\n endIcon: <Tag\n className='end-icon-container'\n sxr={{\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 1\n }}\n >\n {endIcon}\n {expandIcon}\n </Tag>,\n startIcon\n }\n }\n\n if (expandAction === 'icon') {\n itemsx.onClick = () => { }\n itemsx.cursor = \"initial!important\"\n }\n\n return (\n <Tag\n {...rootProps}\n sxr={{\n bgcolor: \"default.base\"\n }}\n baseClass='accordion'\n classNames={[{ \"accordion-expanded\": expand }, ...(classNames || [])]}\n ref={ref}\n >\n <List\n component='div'\n {...slotProps?.header}\n color={color}\n variant={variant}\n hoverColor={hoverColor}\n hoverVariant={hoverVariant}\n className='accoutdion-header'\n >\n <ListItem\n minHeight={55}\n radius={0}\n component='div'\n {...slotProps?.headerContent}\n {...itemsx}\n subtitle={subtitle}\n selected={expand}\n onClick={() => onClick && onClick()}\n className=\"accordion-header-content\"\n >{title}</ListItem>\n <Collaps\n {...slotProps?.collaps}\n open={expand}\n className=\"accordion-collaps\"\n >\n <Tag\n {...slotProps?.content}\n sxr={{\n color: \"default.contrast\",\n p: 2,\n py: 1,\n bgcolor: \"default.base\"\n }}\n baseClass='accordion-content'\n >\n {children}\n </Tag>\n </Collaps>\n </List>\n </Tag>\n )\n})\nexport default Accordion\n\n\n"],"names":[],"mappings":";;;;;;;;;;;;AAoCA;AAAwE;AACpE;AACA;;AAiBI;AACA;AACH;;AAGD;AAAW;AACX;AAAc;AACd;AAAe;AACf;AAAa;AACb;AAAgB;AAChB;AAAyB;AACzB;AAAkB;AAClB;AAAW;AACX;AAAa;AACb;AAAgB;AAChB;AAAkB;AAElB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;AAqBA;AACI;;AAIY;AACA;AACA;AACA;;;;;;AAUZ;;AAIY;AACA;AACA;AACA;;;;;AAUhB;AACI;AACA;;AAGJ;AAIY;AACH;AAiCe;AACA;AACA;AACA;;AAU5B;;"}
@@ -81,12 +81,12 @@ const Accordion = React.forwardRef((_a, ref) => {
81
81
  itemsx.cursor = "initial!important";
82
82
  }
83
83
  return (jsx(Tag, Object.assign({}, rootProps, { sxr: {
84
- bgcolor: "surface.main"
84
+ bgcolor: "default.base"
85
85
  }, baseClass: 'accordion', classNames: [{ "accordion-expanded": expand }, ...(classNames || [])], ref: ref, children: jsxs(List, Object.assign({ component: 'div' }, slotProps === null || slotProps === void 0 ? void 0 : slotProps.header, { color: color, variant: variant, hoverColor: hoverColor, hoverVariant: hoverVariant, className: 'accoutdion-header', children: [jsx(ListItem, Object.assign({ minHeight: 55, radius: 0, component: 'div' }, slotProps === null || slotProps === void 0 ? void 0 : slotProps.headerContent, itemsx, { subtitle: subtitle, selected: expand, onClick: () => onClick && onClick(), className: "accordion-header-content", children: title })), jsx(Collaps, Object.assign({}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.collaps, { open: expand, className: "accordion-collaps", children: jsx(Tag, Object.assign({}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.content, { sxr: {
86
- color: "surface.contrast",
86
+ color: "default.contrast",
87
87
  p: 2,
88
88
  py: 1,
89
- bgcolor: "surface.main"
89
+ bgcolor: "default.base"
90
90
  }, baseClass: 'accordion-content', children: children })) }))] })) })));
91
91
  });
92
92
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/Accordion/index.tsx"],"sourcesContent":["\"use client\";\nimport React, { ReactElement, useState } from 'react';\nimport { Tag, TagProps, useInterface, UseColorTemplateColor, UseColorTemplateType, TagComponentType, useBreakpointPropsType, useBreakpointProps } from '@xanui/core';\nimport ExpandIcon from \"@xanui/icons/ExpandMore\";\nimport Collaps from '../Collaps';\nimport List from '../List';\nimport ListItem from '../ListItem';\nimport type { CollapsProps } from '../Collaps';\nimport type { ListProps } from '../List';\nimport type { ListItemProps } from '../ListItem';\n\nexport type AccordionProps<T extends TagComponentType = \"div\"> = Omit<TagProps<T>, \"color\"> & {\n expand?: boolean;\n defaultExpand?: boolean;\n onClick?: () => void;\n title: useBreakpointPropsType<ReactElement | string>;\n subtitle?: useBreakpointPropsType<ReactElement | string>;\n startIcon?: useBreakpointPropsType<ReactElement>;\n endIcon?: useBreakpointPropsType<ReactElement>;\n expandIcon?: useBreakpointPropsType<ReactElement>;\n expandIconPlacement?: useBreakpointPropsType<\"start\" | \"end\">;\n expandAction?: useBreakpointPropsType<\"header\" | \"icon\">;\n color?: useBreakpointPropsType<UseColorTemplateColor>;\n variant?: useBreakpointPropsType<UseColorTemplateType>;\n hoverColor?: useBreakpointPropsType<UseColorTemplateColor>;\n hoverVariant?: useBreakpointPropsType<UseColorTemplateType>;\n\n slotProps?: {\n header?: Omit<ListProps, \"children\" | \"color\" | \"variant\" | \"hoverColor\" | \"hoverVariant\" | \"className\">;\n headerContent?: Omit<ListItemProps, \"children\" | \"subtitle\" | \"selected\" | \"startIcon\" | \"endIcon\" | \"onClick\" | \"className\">\n collaps?: Omit<CollapsProps, \"children\" | \"open\">;\n content?: Omit<TagProps, \"children\">;\n expandIconContainer?: Omit<TagProps<\"div\">, 'children' | 'className'>;\n }\n}\n\nconst Accordion = React.forwardRef(<T extends TagComponentType = \"div\">({ children, title, subtitle, defaultExpand, ...rest }: AccordionProps<T>, ref: React.Ref<any>) => {\n const [_expand, setExpand] = useState(defaultExpand || false)\n let [{\n expand,\n onClick,\n color,\n variant,\n hoverColor,\n hoverVariant,\n expandIcon,\n expandIconPlacement,\n startIcon,\n endIcon,\n expandAction,\n classNames,\n slotProps,\n ...rootProps\n }] = useInterface<any>(\"Accordion\", rest, {\n onClick: () => setExpand(!_expand) as any,\n color: \"primary\",\n variant: \"ghost\"\n })\n\n const _p: any = {}\n if (title) _p.title = title\n if (subtitle) _p.subtitle = subtitle\n if (startIcon) _p.startIcon = startIcon\n if (endIcon) _p.endIcon = endIcon\n if (expandIcon) _p.expandIcon = expandIcon\n if (expandIconPlacement) _p.expandIconPlacement = expandIconPlacement\n if (expandAction) _p.expandAction = expandAction\n if (color) _p.color = color\n if (variant) _p.variant = variant\n if (hoverColor) _p.hoverColor = hoverColor\n if (hoverVariant) _p.hoverVariant = hoverVariant\n\n const p: any = useBreakpointProps(_p)\n\n title = p.title\n subtitle = p.subtitle\n startIcon = p.startIcon\n endIcon = p.endIcon\n expandIcon = p.expandIcon\n expandIconPlacement = p.expandIconPlacement\n expandAction = p.expandAction\n color = p.color\n variant = p.variant\n hoverColor = p.hoverColor\n hoverVariant = p.hoverVariant\n\n expand = expand === undefined ? _expand : expand\n expandIcon = expandIcon ? <Tag\n cursor=\"pointer\"\n {...slotProps?.expandIconContainer}\n onClick={expandAction === 'icon' && onClick ? () => onClick() : () => { }}\n className='expand-icon-container'\n >\n {expandIcon}\n </Tag> : <Tag\n transform={`rotate(${expand ? 0 : -180}deg)`}\n transition=\"transform .4s\"\n cursor=\"pointer\"\n {...slotProps?.expandIconContainer}\n onClick={expandAction === 'icon' && onClick ? () => onClick() : () => { }}\n className='expand-icon-container'\n >\n <ExpandIcon />\n </Tag>\n\n let itemsx: any = {}\n\n if (expandIconPlacement === 'start') {\n itemsx = {\n startIcon: <Tag\n className='start-icon-container'\n sxr={{\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 1\n }}\n >\n {expandIcon}\n {startIcon}\n </Tag>,\n endIcon\n }\n\n } else {\n itemsx = {\n endIcon: <Tag\n className='end-icon-container'\n sxr={{\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 1\n }}\n >\n {endIcon}\n {expandIcon}\n </Tag>,\n startIcon\n }\n }\n\n if (expandAction === 'icon') {\n itemsx.onClick = () => { }\n itemsx.cursor = \"initial!important\"\n }\n\n return (\n <Tag\n {...rootProps}\n sxr={{\n bgcolor: \"surface.main\"\n }}\n baseClass='accordion'\n classNames={[{ \"accordion-expanded\": expand }, ...(classNames || [])]}\n ref={ref}\n >\n <List\n component='div'\n {...slotProps?.header}\n color={color}\n variant={variant}\n hoverColor={hoverColor}\n hoverVariant={hoverVariant}\n className='accoutdion-header'\n >\n <ListItem\n minHeight={55}\n radius={0}\n component='div'\n {...slotProps?.headerContent}\n {...itemsx}\n subtitle={subtitle}\n selected={expand}\n onClick={() => onClick && onClick()}\n className=\"accordion-header-content\"\n >{title}</ListItem>\n <Collaps\n {...slotProps?.collaps}\n open={expand}\n className=\"accordion-collaps\"\n >\n <Tag\n {...slotProps?.content}\n sxr={{\n color: \"surface.contrast\",\n p: 2,\n py: 1,\n bgcolor: \"surface.main\"\n }}\n baseClass='accordion-content'\n >\n {children}\n </Tag>\n </Collaps>\n </List>\n </Tag>\n )\n})\nexport default Accordion\n\n\n"],"names":[],"mappings":";;;;;;;;;;AAoCA;AAAwE;AACpE;AACA;;AAiBI;AACA;AACH;;AAGD;AAAW;AACX;AAAc;AACd;AAAe;AACf;AAAa;AACb;AAAgB;AAChB;AAAyB;AACzB;AAAkB;AAClB;AAAW;AACX;AAAa;AACb;AAAgB;AAChB;AAAkB;AAElB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;AAqBA;AACI;;AAIY;AACA;AACA;AACA;;;;;;AAUZ;;AAIY;AACA;AACA;AACA;;;;;AAUhB;AACI;AACA;;AAGJ;AAIY;AACH;AAiCe;AACA;AACA;AACA;;AAU5B;;"}
1
+ {"version":3,"file":"index.js","sources":["../../src/Accordion/index.tsx"],"sourcesContent":["\"use client\";\nimport React, { ReactElement, useState } from 'react';\nimport { Tag, TagProps, useInterface, UseColorTemplateColor, UseColorTemplateType, TagComponentType, useBreakpointPropsType, useBreakpointProps } from '@xanui/core';\nimport ExpandIcon from \"@xanui/icons/ExpandMore\";\nimport Collaps from '../Collaps';\nimport List from '../List';\nimport ListItem from '../ListItem';\nimport type { CollapsProps } from '../Collaps';\nimport type { ListProps } from '../List';\nimport type { ListItemProps } from '../ListItem';\n\nexport type AccordionProps<T extends TagComponentType = \"div\"> = Omit<TagProps<T>, \"color\"> & {\n expand?: boolean;\n defaultExpand?: boolean;\n onClick?: () => void;\n title: useBreakpointPropsType<ReactElement | string>;\n subtitle?: useBreakpointPropsType<ReactElement | string>;\n startIcon?: useBreakpointPropsType<ReactElement>;\n endIcon?: useBreakpointPropsType<ReactElement>;\n expandIcon?: useBreakpointPropsType<ReactElement>;\n expandIconPlacement?: useBreakpointPropsType<\"start\" | \"end\">;\n expandAction?: useBreakpointPropsType<\"header\" | \"icon\">;\n color?: useBreakpointPropsType<UseColorTemplateColor>;\n variant?: useBreakpointPropsType<UseColorTemplateType>;\n hoverColor?: useBreakpointPropsType<UseColorTemplateColor>;\n hoverVariant?: useBreakpointPropsType<UseColorTemplateType>;\n\n slotProps?: {\n header?: Omit<ListProps, \"children\" | \"color\" | \"variant\" | \"hoverColor\" | \"hoverVariant\" | \"className\">;\n headerContent?: Omit<ListItemProps, \"children\" | \"subtitle\" | \"selected\" | \"startIcon\" | \"endIcon\" | \"onClick\" | \"className\">\n collaps?: Omit<CollapsProps, \"children\" | \"open\">;\n content?: Omit<TagProps, \"children\">;\n expandIconContainer?: Omit<TagProps<\"div\">, 'children' | 'className'>;\n }\n}\n\nconst Accordion = React.forwardRef(<T extends TagComponentType = \"div\">({ children, title, subtitle, defaultExpand, ...rest }: AccordionProps<T>, ref: React.Ref<any>) => {\n const [_expand, setExpand] = useState(defaultExpand || false)\n let [{\n expand,\n onClick,\n color,\n variant,\n hoverColor,\n hoverVariant,\n expandIcon,\n expandIconPlacement,\n startIcon,\n endIcon,\n expandAction,\n classNames,\n slotProps,\n ...rootProps\n }] = useInterface<any>(\"Accordion\", rest, {\n onClick: () => setExpand(!_expand) as any,\n color: \"primary\",\n variant: \"ghost\"\n })\n\n const _p: any = {}\n if (title) _p.title = title\n if (subtitle) _p.subtitle = subtitle\n if (startIcon) _p.startIcon = startIcon\n if (endIcon) _p.endIcon = endIcon\n if (expandIcon) _p.expandIcon = expandIcon\n if (expandIconPlacement) _p.expandIconPlacement = expandIconPlacement\n if (expandAction) _p.expandAction = expandAction\n if (color) _p.color = color\n if (variant) _p.variant = variant\n if (hoverColor) _p.hoverColor = hoverColor\n if (hoverVariant) _p.hoverVariant = hoverVariant\n\n const p: any = useBreakpointProps(_p)\n\n title = p.title\n subtitle = p.subtitle\n startIcon = p.startIcon\n endIcon = p.endIcon\n expandIcon = p.expandIcon\n expandIconPlacement = p.expandIconPlacement\n expandAction = p.expandAction\n color = p.color\n variant = p.variant\n hoverColor = p.hoverColor\n hoverVariant = p.hoverVariant\n\n expand = expand === undefined ? _expand : expand\n expandIcon = expandIcon ? <Tag\n cursor=\"pointer\"\n {...slotProps?.expandIconContainer}\n onClick={expandAction === 'icon' && onClick ? () => onClick() : () => { }}\n className='expand-icon-container'\n >\n {expandIcon}\n </Tag> : <Tag\n transform={`rotate(${expand ? 0 : -180}deg)`}\n transition=\"transform .4s\"\n cursor=\"pointer\"\n {...slotProps?.expandIconContainer}\n onClick={expandAction === 'icon' && onClick ? () => onClick() : () => { }}\n className='expand-icon-container'\n >\n <ExpandIcon />\n </Tag>\n\n let itemsx: any = {}\n\n if (expandIconPlacement === 'start') {\n itemsx = {\n startIcon: <Tag\n className='start-icon-container'\n sxr={{\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 1\n }}\n >\n {expandIcon}\n {startIcon}\n </Tag>,\n endIcon\n }\n\n } else {\n itemsx = {\n endIcon: <Tag\n className='end-icon-container'\n sxr={{\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 1\n }}\n >\n {endIcon}\n {expandIcon}\n </Tag>,\n startIcon\n }\n }\n\n if (expandAction === 'icon') {\n itemsx.onClick = () => { }\n itemsx.cursor = \"initial!important\"\n }\n\n return (\n <Tag\n {...rootProps}\n sxr={{\n bgcolor: \"default.base\"\n }}\n baseClass='accordion'\n classNames={[{ \"accordion-expanded\": expand }, ...(classNames || [])]}\n ref={ref}\n >\n <List\n component='div'\n {...slotProps?.header}\n color={color}\n variant={variant}\n hoverColor={hoverColor}\n hoverVariant={hoverVariant}\n className='accoutdion-header'\n >\n <ListItem\n minHeight={55}\n radius={0}\n component='div'\n {...slotProps?.headerContent}\n {...itemsx}\n subtitle={subtitle}\n selected={expand}\n onClick={() => onClick && onClick()}\n className=\"accordion-header-content\"\n >{title}</ListItem>\n <Collaps\n {...slotProps?.collaps}\n open={expand}\n className=\"accordion-collaps\"\n >\n <Tag\n {...slotProps?.content}\n sxr={{\n color: \"default.contrast\",\n p: 2,\n py: 1,\n bgcolor: \"default.base\"\n }}\n baseClass='accordion-content'\n >\n {children}\n </Tag>\n </Collaps>\n </List>\n </Tag>\n )\n})\nexport default Accordion\n\n\n"],"names":[],"mappings":";;;;;;;;;;AAoCA;AAAwE;AACpE;AACA;;AAiBI;AACA;AACH;;AAGD;AAAW;AACX;AAAc;AACd;AAAe;AACf;AAAa;AACb;AAAgB;AAChB;AAAyB;AACzB;AAAkB;AAClB;AAAW;AACX;AAAa;AACb;AAAgB;AAChB;AAAkB;AAElB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;AAqBA;AACI;;AAIY;AACA;AACA;AACA;;;;;;AAUZ;;AAIY;AACA;AACA;AACA;;;;;AAUhB;AACI;AACA;;AAGJ;AAIY;AACH;AAiCe;AACA;AACA;AACA;;AAU5B;;"}
package/Alert/index.cjs CHANGED
@@ -20,7 +20,7 @@ const Alert = (_a) => {
20
20
  let [_b] = core.useInterface("Alert", rest, {
21
21
  variant: "fill"
22
22
  }), { title, variant, icon, color, direction, slotProps, onClose } = _b, _props = tslib.__rest(_b, ["title", "variant", "icon", "color", "direction", "slotProps", "onClose"]);
23
- color !== null && color !== void 0 ? color : (color = 'surface');
23
+ color !== null && color !== void 0 ? color : (color = 'default');
24
24
  direction !== null && direction !== void 0 ? direction : (direction = "row");
25
25
  const _p = {};
26
26
  if (title)
@@ -43,7 +43,7 @@ const Alert = (_a) => {
43
43
  const template = core.useColorTemplate(color, variant);
44
44
  let iconsx = {
45
45
  fontSize: isRow ? 22 : 40,
46
- color: color === 'surface' ? "surface.contrast" : template.main.color
46
+ color: color === 'default' ? "default.contrast" : template.main.color
47
47
  };
48
48
  const icons = {
49
49
  "info": jsxRuntime.jsx(InfoIcon, { sx: iconsx }),
@@ -91,7 +91,7 @@ const ConfirmAlert = (props) => {
91
91
  hideOkButton !== null && hideOkButton !== void 0 ? hideOkButton : (hideOkButton = false);
92
92
  hideCancelButton !== null && hideCancelButton !== void 0 ? hideCancelButton : (hideCancelButton = false);
93
93
  size !== null && size !== void 0 ? size : (size = "small");
94
- color !== null && color !== void 0 ? color : (color = 'surface');
94
+ color !== null && color !== void 0 ? color : (color = 'default');
95
95
  variant !== null && variant !== void 0 ? variant : (variant = "text");
96
96
  direction !== null && direction !== void 0 ? direction : (direction = "column");
97
97
  buttonPlacement !== null && buttonPlacement !== void 0 ? buttonPlacement : (buttonPlacement = "end");
@@ -121,19 +121,19 @@ const ConfirmAlert = (props) => {
121
121
  };
122
122
  let okcolor = color;
123
123
  let closecolor = color;
124
- if (color === 'surface') {
124
+ if (color === 'default') {
125
125
  okcolor = 'primary';
126
- closecolor = 'surface';
126
+ closecolor = 'default';
127
127
  variant = 'text';
128
128
  }
129
129
  else {
130
130
  if (variant === 'fill') {
131
- okcolor = 'surface';
132
- closecolor = 'surface';
131
+ okcolor = 'default';
132
+ closecolor = 'default';
133
133
  }
134
134
  else {
135
135
  okcolor = color;
136
- closecolor = 'surface';
136
+ closecolor = 'default';
137
137
  }
138
138
  }
139
139
  return (jsxRuntime.jsx(index$2, Object.assign({ open: open }, slotProps === null || slotProps === void 0 ? void 0 : slotProps.modal, { size: sizes[size] || size, blur: 40, blurMode: blurMode || "transparent", transition: transition || "zoom", onClickOutside: async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../src/Alert/index.tsx"],"sourcesContent":["\"use client\";\nimport { Tag, TagProps, useBreakpointProps, useColorTemplate, useInterface, useBreakpointPropsType, Renderar, UseColorTemplateType, UseColorTemplateColor, TransitionVariantTypes } from \"@xanui/core\"\nimport React, { isValidElement, ReactElement } from \"react\"\nimport Text from \"../Text\"\nimport InfoIcon from '@xanui/icons/Info';\nimport WarningIcon from '@xanui/icons/Warning';\nimport SuccessIcon from '@xanui/icons/CheckCircle';\nimport ErrorIcon from '@xanui/icons/Cancel';\nimport IconClose from '@xanui/icons/Close';\nimport IconButton from \"../IconButton\";\nimport Modal, { ModalProps } from \"../Modal\";\nimport Button, { ButtonProps } from \"../Button\";\n\nexport type AlertProps = Omit<TagProps<\"div\">, \"content\" | \"title\" | \"direction\"> & {\n title?: useBreakpointPropsType<string | ReactElement>;\n direction?: useBreakpointPropsType<\"row\" | \"column\">;\n variant?: useBreakpointPropsType<UseColorTemplateType>;\n color?: useBreakpointPropsType<UseColorTemplateColor>;\n icon?: useBreakpointPropsType<\"info\" | \"warning\" | \"success\" | \"error\" | false | ReactElement>;\n onClose?: React.DOMAttributes<\"button\">['onClick'];\n}\n\nexport type AlertMesssageType = string | ReactElement | AlertProps\n\nconst Alert = ({ children, ...rest }: AlertProps) => {\n let [{\n title,\n variant,\n icon,\n color,\n direction,\n slotProps,\n onClose,\n ..._props\n }] = useInterface<any>(\"Alert\", rest, {\n variant: \"fill\"\n })\n color ??= 'surface'\n direction ??= \"row\"\n\n const _p: any = {}\n if (title) _p.title = title\n if (variant) _p.variant = variant\n if (icon) _p.icon = icon\n if (color) _p.color = color\n if (direction) _p.direction = direction\n\n const p: any = useBreakpointProps(_p)\n\n title = p.title\n variant = p.variant\n icon = p.icon\n color = p.color\n direction = p.direction\n\n let isRow = direction === 'row'\n\n\n const template = useColorTemplate(color, variant)\n\n let iconsx = {\n fontSize: isRow ? 22 : 40,\n color: color === 'surface' ? \"surface.contrast\" : template.main.color\n }\n\n const icons: any = {\n \"info\": <InfoIcon sx={iconsx} />,\n \"warning\": <WarningIcon sx={iconsx} />,\n \"success\": <SuccessIcon sx={iconsx} />,\n \"danger\": <ErrorIcon sx={iconsx} />\n }\n\n let _icon = icons[icon] || icons[color]\n\n return (\n <Tag\n {..._props}\n baseClass=\"alert\"\n sxr={{\n justifyContent: \"flex-start\",\n position: \"relative\",\n radius: 1,\n px: isRow ? (_icon ? .5 : 2) : 3,\n py: isRow ? .5 : 3,\n flexDirection: \"column\",\n display: 'flex',\n ..._props?.sx\n }}\n {...template.main}\n >\n {\n onClose && <IconButton\n color={color}\n variant={variant === 'fill' ? \"fill\" : \"text\"}\n size={25}\n sx={{\n position: \"absolute\",\n top: 5,\n right: 5\n }}\n onClick={onClose}\n className=\"alert-close-button\"\n >\n <IconClose fontSize={18} />\n </IconButton>\n }\n <Tag\n sx={{\n display: \"flex\",\n gap: 1,\n flexDirection: direction,\n alignItems: isRow ? \"flex-start\" : \"center\"\n }}\n baseClass=\"alert-container\"\n >\n {\n _icon && <Tag\n baseClass=\"alert-icon\"\n sxr={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n p: isRow ? .5 : 0,\n \"& svg\": {\n color: template.main.color\n }\n }}\n >\n {_icon}\n </Tag>\n }\n <Tag\n baseClass=\"alert-content\"\n sxr={{\n display: \"flex\",\n flexDirection: \"column\",\n flex: 1,\n color: template.main.color,\n textAlign: isRow ? \"left\" : \"center\",\n gap: isRow ? 0 : 1,\n width: \"100%\"\n }}\n >\n {title && <>\n {\n isValidElement(title) ? <Tag className=\"alert-title\">{title}</Tag> : <Text\n className=\"alert-titles\"\n variant=\"text\"\n sx={{\n fontWeight: 500,\n color: template.main.color\n }}\n >{title}</Text>\n }\n </>}\n <Tag\n sxr={{\n fontSize: \"button\",\n fontWeight: \"button\",\n lineHeight: \"button\"\n }}\n >\n {children}\n </Tag>\n </Tag>\n </Tag>\n </Tag>\n )\n}\n\nexport type ConfirmAlertProps = Omit<AlertProps, 'children' | 'onClose' | 'variant' | \"size\"> & {\n open: boolean;\n loading: boolean;\n content: string | ReactElement,\n size?: \"small\" | \"medium\" | \"large\" | number;\n closeButton?: boolean;\n clickOutsideToClose?: boolean;\n okButtonText?: string;\n cancelButtonText?: string;\n hideOkButton?: boolean;\n hideCancelButton?: boolean;\n buttonPlacement?: \"start\" | \"end\" | \"between\" | \"full\";\n variant?: \"text\" | \"fill\"\n onConfirm?: () => Promise<void> | void;\n onCancel?: () => Promise<void> | void;\n transition?: TransitionVariantTypes;\n blurMode?: ModalProps['blurMode'];\n slotProps?: {\n modal?: Omit<ModalProps, 'open' | \"children\">;\n okButton?: Omit<ButtonProps, \"children\">;\n closeButton?: Omit<ButtonProps, \"children\">;\n }\n}\n\n\nconst ConfirmAlert = (props: ConfirmAlertProps) => {\n let {\n open,\n loading,\n content,\n size,\n color,\n direction,\n variant,\n closeButton,\n clickOutsideToClose,\n okButtonText,\n cancelButtonText,\n hideOkButton,\n hideCancelButton,\n buttonPlacement,\n onConfirm,\n onCancel,\n transition,\n blurMode,\n slotProps,\n ...rest\n } = props\n\n hideOkButton ??= false\n hideCancelButton ??= false\n\n size ??= \"small\"\n color ??= 'surface'\n variant ??= \"text\"\n direction ??= \"column\"\n buttonPlacement ??= \"end\"\n let sx: any = {};\n\n switch (buttonPlacement) {\n case \"start\":\n sx.justifyContent = 'flex-start'\n break;\n case \"end\":\n sx.justifyContent = 'flex-end'\n break;\n case \"between\":\n sx.justifyContent = 'space-between'\n break;\n case \"full\":\n sx = {\n \"& button\": {\n flex: 1\n }\n }\n break;\n }\n\n let sizes: any = {\n small: 320,\n medium: 400,\n large: 600\n }\n\n let okcolor = color\n let closecolor = color\n if (color === 'surface') {\n okcolor = 'primary'\n closecolor = 'surface'\n variant = 'text'\n } else {\n if (variant === 'fill') {\n okcolor = 'surface'\n closecolor = 'surface'\n } else {\n okcolor = color\n closecolor = 'surface'\n }\n }\n\n return (<Modal\n open={open}\n {...slotProps?.modal}\n size={sizes[size] || size}\n blur={40}\n blurMode={blurMode || \"transparent\"}\n transition={transition || \"zoom\"}\n onClickOutside={async () => {\n if (clickOutsideToClose && !loading) {\n onCancel && await onCancel()\n }\n }}\n >\n <Alert\n direction={direction}\n sx={{\n px: 2,\n py: 1,\n pt: direction === 'row' ? 1 : 2\n }}\n color={color}\n variant={variant}\n onClose={closeButton ? close : undefined}\n {...rest}\n >\n {content}\n <Tag\n sxr={{\n display: \"flex\",\n gap: 1,\n pt: 4,\n flexDirection: \"row\",\n ...sx,\n }}\n >\n {!hideCancelButton && <Button\n disabled={loading}\n color={closecolor}\n variant=\"fill\"\n {...slotProps?.closeButton}\n onClick={async () => {\n onCancel && await onCancel()\n }}\n >{cancelButtonText || \"Close\"}</Button>}\n <Button\n loading={loading}\n color={okcolor}\n variant=\"fill\"\n {...slotProps?.okButton}\n\n onClick={async () => {\n onConfirm && await onConfirm()\n }}\n >{okButtonText || \"OK\"}</Button>\n </Tag>\n </Alert>\n </Modal>)\n}\n\n\nAlert.confirm = ({ onConfirm, onCancel, ...props }: Omit<ConfirmAlertProps, \"open\" | \"loading\">) => {\n const Inst = (_props: any) => <ConfirmAlert {..._props} />\n const confirm = Renderar.render(Inst as any, {\n ...props,\n open: true,\n loading: false,\n onConfirm: async () => {\n if (onConfirm) {\n confirm.updateProps({ loading: true })\n if (onConfirm) await onConfirm()\n confirm.updateProps({ open: false, loading: false })\n } else {\n confirm.updateProps({ open: false })\n }\n },\n onCancel: async () => {\n if (onCancel) {\n confirm.updateProps({ loading: true })\n await onCancel()\n confirm.updateProps({ open: false, loading: false })\n } else {\n confirm.updateProps({ open: false })\n }\n },\n slotProps: {\n ...props.slotProps,\n modal: {\n ...props.slotProps?.modal,\n onExited: () => {\n confirm.unrender()\n if (props?.slotProps?.modal?.onExited) {\n props.slotProps?.modal?.onExited()\n }\n },\n }\n },\n })\n}\n\nexport default Alert"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAwBA;AAAe;AACX;AAUI;;;;;AAMJ;AAAW;AACX;AAAa;AACb;AAAU;AACV;AAAW;AACX;AAAe;AAEf;AAEA;AACA;AACA;AACA;AACA;AAEA;;AAKA;;AAEI;;AAGJ;AACI;AACA;AACA;AACA;;;;AA2BgB;AACA;AACA;;AAUJ;AACA;AACA;;AAEH;AAOW;AACA;AACA;;AAEA;AACI;AACH;;AASL;AACA;AACA;AACA;;;AAGA;AACH;AAQe;AACA;;AAOR;AACA;AACA;AACH;AAQzB;AA2BA;;;;;;;;;;;AAmCQ;AACI;;AAEJ;AACI;;AAEJ;AACI;;AAEJ;AACI;AACI;AACI;AACH;;;;AAKb;AACI;AACA;AACA;;;;AAKJ;;;;;;AAKI;;;;;;;;;;AAiBI;AACI;;;AAOA;AACA;;AAEH;AAsBW;AACJ;AASI;;AAMxB;AAGA;;;AACI;;;;AAQY;;AACA;;;;;AAIR;;;;AAKQ;;;;;AAIR;;;AAOY;;;AAGJ;AAIhB;;"}
1
+ {"version":3,"file":"index.cjs","sources":["../../src/Alert/index.tsx"],"sourcesContent":["\"use client\";\nimport { Tag, TagProps, useBreakpointProps, useColorTemplate, useInterface, useBreakpointPropsType, Renderar, UseColorTemplateType, UseColorTemplateColor, TransitionVariantTypes } from \"@xanui/core\"\nimport React, { isValidElement, ReactElement } from \"react\"\nimport Text from \"../Text\"\nimport InfoIcon from '@xanui/icons/Info';\nimport WarningIcon from '@xanui/icons/Warning';\nimport SuccessIcon from '@xanui/icons/CheckCircle';\nimport ErrorIcon from '@xanui/icons/Cancel';\nimport IconClose from '@xanui/icons/Close';\nimport IconButton from \"../IconButton\";\nimport Modal, { ModalProps } from \"../Modal\";\nimport Button, { ButtonProps } from \"../Button\";\n\nexport type AlertProps = Omit<TagProps<\"div\">, \"content\" | \"title\" | \"direction\"> & {\n title?: useBreakpointPropsType<string | ReactElement>;\n direction?: useBreakpointPropsType<\"row\" | \"column\">;\n variant?: useBreakpointPropsType<UseColorTemplateType>;\n color?: useBreakpointPropsType<UseColorTemplateColor>;\n icon?: useBreakpointPropsType<\"info\" | \"warning\" | \"success\" | \"error\" | false | ReactElement>;\n onClose?: React.DOMAttributes<\"button\">['onClick'];\n}\n\nexport type AlertMesssageType = string | ReactElement | AlertProps\n\nconst Alert = ({ children, ...rest }: AlertProps) => {\n let [{\n title,\n variant,\n icon,\n color,\n direction,\n slotProps,\n onClose,\n ..._props\n }] = useInterface<any>(\"Alert\", rest, {\n variant: \"fill\"\n })\n color ??= 'default'\n direction ??= \"row\"\n\n const _p: any = {}\n if (title) _p.title = title\n if (variant) _p.variant = variant\n if (icon) _p.icon = icon\n if (color) _p.color = color\n if (direction) _p.direction = direction\n\n const p: any = useBreakpointProps(_p)\n\n title = p.title\n variant = p.variant\n icon = p.icon\n color = p.color\n direction = p.direction\n\n let isRow = direction === 'row'\n\n const template = useColorTemplate(color, variant)\n\n let iconsx = {\n fontSize: isRow ? 22 : 40,\n color: color === 'default' ? \"default.contrast\" : template.main.color\n }\n\n const icons: any = {\n \"info\": <InfoIcon sx={iconsx} />,\n \"warning\": <WarningIcon sx={iconsx} />,\n \"success\": <SuccessIcon sx={iconsx} />,\n \"danger\": <ErrorIcon sx={iconsx} />\n }\n\n let _icon = icons[icon] || icons[color]\n\n return (\n <Tag\n {..._props}\n baseClass=\"alert\"\n sxr={{\n justifyContent: \"flex-start\",\n position: \"relative\",\n radius: 1,\n px: isRow ? (_icon ? .5 : 2) : 3,\n py: isRow ? .5 : 3,\n flexDirection: \"column\",\n display: 'flex',\n ..._props?.sx\n }}\n {...template.main}\n >\n {\n onClose && <IconButton\n color={color}\n variant={variant === 'fill' ? \"fill\" : \"text\"}\n size={25}\n sx={{\n position: \"absolute\",\n top: 5,\n right: 5\n }}\n onClick={onClose}\n className=\"alert-close-button\"\n >\n <IconClose fontSize={18} />\n </IconButton>\n }\n <Tag\n sx={{\n display: \"flex\",\n gap: 1,\n flexDirection: direction,\n alignItems: isRow ? \"flex-start\" : \"center\"\n }}\n baseClass=\"alert-container\"\n >\n {\n _icon && <Tag\n baseClass=\"alert-icon\"\n sxr={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n p: isRow ? .5 : 0,\n \"& svg\": {\n color: template.main.color\n }\n }}\n >\n {_icon}\n </Tag>\n }\n <Tag\n baseClass=\"alert-content\"\n sxr={{\n display: \"flex\",\n flexDirection: \"column\",\n flex: 1,\n color: template.main.color,\n textAlign: isRow ? \"left\" : \"center\",\n gap: isRow ? 0 : 1,\n width: \"100%\"\n }}\n >\n {title && <>\n {\n isValidElement(title) ? <Tag className=\"alert-title\">{title}</Tag> : <Text\n className=\"alert-titles\"\n variant=\"text\"\n sx={{\n fontWeight: 500,\n color: template.main.color\n }}\n >{title}</Text>\n }\n </>}\n <Tag\n sxr={{\n fontSize: \"button\",\n fontWeight: \"button\",\n lineHeight: \"button\"\n }}\n >\n {children}\n </Tag>\n </Tag>\n </Tag>\n </Tag>\n )\n}\n\nexport type ConfirmAlertProps = Omit<AlertProps, 'children' | 'onClose' | 'variant' | \"size\"> & {\n open: boolean;\n loading: boolean;\n content: string | ReactElement,\n size?: \"small\" | \"medium\" | \"large\" | number;\n closeButton?: boolean;\n clickOutsideToClose?: boolean;\n okButtonText?: string;\n cancelButtonText?: string;\n hideOkButton?: boolean;\n hideCancelButton?: boolean;\n buttonPlacement?: \"start\" | \"end\" | \"between\" | \"full\";\n variant?: \"text\" | \"fill\"\n onConfirm?: () => Promise<void> | void;\n onCancel?: () => Promise<void> | void;\n transition?: TransitionVariantTypes;\n blurMode?: ModalProps['blurMode'];\n slotProps?: {\n modal?: Omit<ModalProps, 'open' | \"children\">;\n okButton?: Omit<ButtonProps, \"children\">;\n closeButton?: Omit<ButtonProps, \"children\">;\n }\n}\n\n\nconst ConfirmAlert = (props: ConfirmAlertProps) => {\n let {\n open,\n loading,\n content,\n size,\n color,\n direction,\n variant,\n closeButton,\n clickOutsideToClose,\n okButtonText,\n cancelButtonText,\n hideOkButton,\n hideCancelButton,\n buttonPlacement,\n onConfirm,\n onCancel,\n transition,\n blurMode,\n slotProps,\n ...rest\n } = props\n\n hideOkButton ??= false\n hideCancelButton ??= false\n\n size ??= \"small\"\n color ??= 'default'\n variant ??= \"text\"\n direction ??= \"column\"\n buttonPlacement ??= \"end\"\n let sx: any = {};\n\n switch (buttonPlacement) {\n case \"start\":\n sx.justifyContent = 'flex-start'\n break;\n case \"end\":\n sx.justifyContent = 'flex-end'\n break;\n case \"between\":\n sx.justifyContent = 'space-between'\n break;\n case \"full\":\n sx = {\n \"& button\": {\n flex: 1\n }\n }\n break;\n }\n\n let sizes: any = {\n small: 320,\n medium: 400,\n large: 600\n }\n\n let okcolor = color\n let closecolor = color\n if (color === 'default') {\n okcolor = 'primary'\n closecolor = 'default'\n variant = 'text'\n } else {\n if (variant === 'fill') {\n okcolor = 'default'\n closecolor = 'default'\n } else {\n okcolor = color\n closecolor = 'default'\n }\n }\n\n return (<Modal\n open={open}\n {...slotProps?.modal}\n size={sizes[size] || size}\n blur={40}\n blurMode={blurMode || \"transparent\"}\n transition={transition || \"zoom\"}\n onClickOutside={async () => {\n if (clickOutsideToClose && !loading) {\n onCancel && await onCancel()\n }\n }}\n >\n <Alert\n direction={direction}\n sx={{\n px: 2,\n py: 1,\n pt: direction === 'row' ? 1 : 2\n }}\n color={color}\n variant={variant}\n onClose={closeButton ? close : undefined}\n {...rest}\n >\n {content}\n <Tag\n sxr={{\n display: \"flex\",\n gap: 1,\n pt: 4,\n flexDirection: \"row\",\n ...sx,\n }}\n >\n {!hideCancelButton && <Button\n disabled={loading}\n color={closecolor}\n variant=\"fill\"\n {...slotProps?.closeButton}\n onClick={async () => {\n onCancel && await onCancel()\n }}\n >{cancelButtonText || \"Close\"}</Button>}\n <Button\n loading={loading}\n color={okcolor}\n variant=\"fill\"\n {...slotProps?.okButton}\n\n onClick={async () => {\n onConfirm && await onConfirm()\n }}\n >{okButtonText || \"OK\"}</Button>\n </Tag>\n </Alert>\n </Modal>)\n}\n\n\nAlert.confirm = ({ onConfirm, onCancel, ...props }: Omit<ConfirmAlertProps, \"open\" | \"loading\">) => {\n const Inst = (_props: any) => <ConfirmAlert {..._props} />\n const confirm = Renderar.render(Inst as any, {\n ...props,\n open: true,\n loading: false,\n onConfirm: async () => {\n if (onConfirm) {\n confirm.updateProps({ loading: true })\n if (onConfirm) await onConfirm()\n confirm.updateProps({ open: false, loading: false })\n } else {\n confirm.updateProps({ open: false })\n }\n },\n onCancel: async () => {\n if (onCancel) {\n confirm.updateProps({ loading: true })\n await onCancel()\n confirm.updateProps({ open: false, loading: false })\n } else {\n confirm.updateProps({ open: false })\n }\n },\n slotProps: {\n ...props.slotProps,\n modal: {\n ...props.slotProps?.modal,\n onExited: () => {\n confirm.unrender()\n if (props?.slotProps?.modal?.onExited) {\n props.slotProps?.modal?.onExited()\n }\n },\n }\n },\n })\n}\n\nexport default Alert"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAwBA;AAAe;AACX;AAUI;;;;;AAMJ;AAAW;AACX;AAAa;AACb;AAAU;AACV;AAAW;AACX;AAAe;AAEf;AAEA;AACA;AACA;AACA;AACA;AAEA;;AAIA;;AAEI;;AAGJ;AACI;AACA;AACA;AACA;;;;AA2BgB;AACA;AACA;;AAUJ;AACA;AACA;;AAEH;AAOW;AACA;AACA;;AAEA;AACI;AACH;;AASL;AACA;AACA;AACA;;;AAGA;AACH;AAQe;AACA;;AAOR;AACA;AACA;AACH;AAQzB;AA2BA;;;;;;;;;;;AAmCQ;AACI;;AAEJ;AACI;;AAEJ;AACI;;AAEJ;AACI;AACI;AACI;AACH;;;;AAKb;AACI;AACA;AACA;;;;AAKJ;;;;;;AAKI;;;;;;;;;;AAiBI;AACI;;;AAOA;AACA;;AAEH;AAsBW;AACJ;AASI;;AAMxB;AAGA;;;AACI;;;;AAQY;;AACA;;;;;AAIR;;;;AAKQ;;;;;AAIR;;;AAOY;;;AAGJ;AAIhB;;"}
package/Alert/index.js CHANGED
@@ -18,7 +18,7 @@ const Alert = (_a) => {
18
18
  let [_b] = useInterface("Alert", rest, {
19
19
  variant: "fill"
20
20
  }), { title, variant, icon, color, direction, slotProps, onClose } = _b, _props = __rest(_b, ["title", "variant", "icon", "color", "direction", "slotProps", "onClose"]);
21
- color !== null && color !== void 0 ? color : (color = 'surface');
21
+ color !== null && color !== void 0 ? color : (color = 'default');
22
22
  direction !== null && direction !== void 0 ? direction : (direction = "row");
23
23
  const _p = {};
24
24
  if (title)
@@ -41,7 +41,7 @@ const Alert = (_a) => {
41
41
  const template = useColorTemplate(color, variant);
42
42
  let iconsx = {
43
43
  fontSize: isRow ? 22 : 40,
44
- color: color === 'surface' ? "surface.contrast" : template.main.color
44
+ color: color === 'default' ? "default.contrast" : template.main.color
45
45
  };
46
46
  const icons = {
47
47
  "info": jsx(InfoIcon, { sx: iconsx }),
@@ -89,7 +89,7 @@ const ConfirmAlert = (props) => {
89
89
  hideOkButton !== null && hideOkButton !== void 0 ? hideOkButton : (hideOkButton = false);
90
90
  hideCancelButton !== null && hideCancelButton !== void 0 ? hideCancelButton : (hideCancelButton = false);
91
91
  size !== null && size !== void 0 ? size : (size = "small");
92
- color !== null && color !== void 0 ? color : (color = 'surface');
92
+ color !== null && color !== void 0 ? color : (color = 'default');
93
93
  variant !== null && variant !== void 0 ? variant : (variant = "text");
94
94
  direction !== null && direction !== void 0 ? direction : (direction = "column");
95
95
  buttonPlacement !== null && buttonPlacement !== void 0 ? buttonPlacement : (buttonPlacement = "end");
@@ -119,19 +119,19 @@ const ConfirmAlert = (props) => {
119
119
  };
120
120
  let okcolor = color;
121
121
  let closecolor = color;
122
- if (color === 'surface') {
122
+ if (color === 'default') {
123
123
  okcolor = 'primary';
124
- closecolor = 'surface';
124
+ closecolor = 'default';
125
125
  variant = 'text';
126
126
  }
127
127
  else {
128
128
  if (variant === 'fill') {
129
- okcolor = 'surface';
130
- closecolor = 'surface';
129
+ okcolor = 'default';
130
+ closecolor = 'default';
131
131
  }
132
132
  else {
133
133
  okcolor = color;
134
- closecolor = 'surface';
134
+ closecolor = 'default';
135
135
  }
136
136
  }
137
137
  return (jsx(Modal, Object.assign({ open: open }, slotProps === null || slotProps === void 0 ? void 0 : slotProps.modal, { size: sizes[size] || size, blur: 40, blurMode: blurMode || "transparent", transition: transition || "zoom", onClickOutside: async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/Alert/index.tsx"],"sourcesContent":["\"use client\";\nimport { Tag, TagProps, useBreakpointProps, useColorTemplate, useInterface, useBreakpointPropsType, Renderar, UseColorTemplateType, UseColorTemplateColor, TransitionVariantTypes } from \"@xanui/core\"\nimport React, { isValidElement, ReactElement } from \"react\"\nimport Text from \"../Text\"\nimport InfoIcon from '@xanui/icons/Info';\nimport WarningIcon from '@xanui/icons/Warning';\nimport SuccessIcon from '@xanui/icons/CheckCircle';\nimport ErrorIcon from '@xanui/icons/Cancel';\nimport IconClose from '@xanui/icons/Close';\nimport IconButton from \"../IconButton\";\nimport Modal, { ModalProps } from \"../Modal\";\nimport Button, { ButtonProps } from \"../Button\";\n\nexport type AlertProps = Omit<TagProps<\"div\">, \"content\" | \"title\" | \"direction\"> & {\n title?: useBreakpointPropsType<string | ReactElement>;\n direction?: useBreakpointPropsType<\"row\" | \"column\">;\n variant?: useBreakpointPropsType<UseColorTemplateType>;\n color?: useBreakpointPropsType<UseColorTemplateColor>;\n icon?: useBreakpointPropsType<\"info\" | \"warning\" | \"success\" | \"error\" | false | ReactElement>;\n onClose?: React.DOMAttributes<\"button\">['onClick'];\n}\n\nexport type AlertMesssageType = string | ReactElement | AlertProps\n\nconst Alert = ({ children, ...rest }: AlertProps) => {\n let [{\n title,\n variant,\n icon,\n color,\n direction,\n slotProps,\n onClose,\n ..._props\n }] = useInterface<any>(\"Alert\", rest, {\n variant: \"fill\"\n })\n color ??= 'surface'\n direction ??= \"row\"\n\n const _p: any = {}\n if (title) _p.title = title\n if (variant) _p.variant = variant\n if (icon) _p.icon = icon\n if (color) _p.color = color\n if (direction) _p.direction = direction\n\n const p: any = useBreakpointProps(_p)\n\n title = p.title\n variant = p.variant\n icon = p.icon\n color = p.color\n direction = p.direction\n\n let isRow = direction === 'row'\n\n\n const template = useColorTemplate(color, variant)\n\n let iconsx = {\n fontSize: isRow ? 22 : 40,\n color: color === 'surface' ? \"surface.contrast\" : template.main.color\n }\n\n const icons: any = {\n \"info\": <InfoIcon sx={iconsx} />,\n \"warning\": <WarningIcon sx={iconsx} />,\n \"success\": <SuccessIcon sx={iconsx} />,\n \"danger\": <ErrorIcon sx={iconsx} />\n }\n\n let _icon = icons[icon] || icons[color]\n\n return (\n <Tag\n {..._props}\n baseClass=\"alert\"\n sxr={{\n justifyContent: \"flex-start\",\n position: \"relative\",\n radius: 1,\n px: isRow ? (_icon ? .5 : 2) : 3,\n py: isRow ? .5 : 3,\n flexDirection: \"column\",\n display: 'flex',\n ..._props?.sx\n }}\n {...template.main}\n >\n {\n onClose && <IconButton\n color={color}\n variant={variant === 'fill' ? \"fill\" : \"text\"}\n size={25}\n sx={{\n position: \"absolute\",\n top: 5,\n right: 5\n }}\n onClick={onClose}\n className=\"alert-close-button\"\n >\n <IconClose fontSize={18} />\n </IconButton>\n }\n <Tag\n sx={{\n display: \"flex\",\n gap: 1,\n flexDirection: direction,\n alignItems: isRow ? \"flex-start\" : \"center\"\n }}\n baseClass=\"alert-container\"\n >\n {\n _icon && <Tag\n baseClass=\"alert-icon\"\n sxr={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n p: isRow ? .5 : 0,\n \"& svg\": {\n color: template.main.color\n }\n }}\n >\n {_icon}\n </Tag>\n }\n <Tag\n baseClass=\"alert-content\"\n sxr={{\n display: \"flex\",\n flexDirection: \"column\",\n flex: 1,\n color: template.main.color,\n textAlign: isRow ? \"left\" : \"center\",\n gap: isRow ? 0 : 1,\n width: \"100%\"\n }}\n >\n {title && <>\n {\n isValidElement(title) ? <Tag className=\"alert-title\">{title}</Tag> : <Text\n className=\"alert-titles\"\n variant=\"text\"\n sx={{\n fontWeight: 500,\n color: template.main.color\n }}\n >{title}</Text>\n }\n </>}\n <Tag\n sxr={{\n fontSize: \"button\",\n fontWeight: \"button\",\n lineHeight: \"button\"\n }}\n >\n {children}\n </Tag>\n </Tag>\n </Tag>\n </Tag>\n )\n}\n\nexport type ConfirmAlertProps = Omit<AlertProps, 'children' | 'onClose' | 'variant' | \"size\"> & {\n open: boolean;\n loading: boolean;\n content: string | ReactElement,\n size?: \"small\" | \"medium\" | \"large\" | number;\n closeButton?: boolean;\n clickOutsideToClose?: boolean;\n okButtonText?: string;\n cancelButtonText?: string;\n hideOkButton?: boolean;\n hideCancelButton?: boolean;\n buttonPlacement?: \"start\" | \"end\" | \"between\" | \"full\";\n variant?: \"text\" | \"fill\"\n onConfirm?: () => Promise<void> | void;\n onCancel?: () => Promise<void> | void;\n transition?: TransitionVariantTypes;\n blurMode?: ModalProps['blurMode'];\n slotProps?: {\n modal?: Omit<ModalProps, 'open' | \"children\">;\n okButton?: Omit<ButtonProps, \"children\">;\n closeButton?: Omit<ButtonProps, \"children\">;\n }\n}\n\n\nconst ConfirmAlert = (props: ConfirmAlertProps) => {\n let {\n open,\n loading,\n content,\n size,\n color,\n direction,\n variant,\n closeButton,\n clickOutsideToClose,\n okButtonText,\n cancelButtonText,\n hideOkButton,\n hideCancelButton,\n buttonPlacement,\n onConfirm,\n onCancel,\n transition,\n blurMode,\n slotProps,\n ...rest\n } = props\n\n hideOkButton ??= false\n hideCancelButton ??= false\n\n size ??= \"small\"\n color ??= 'surface'\n variant ??= \"text\"\n direction ??= \"column\"\n buttonPlacement ??= \"end\"\n let sx: any = {};\n\n switch (buttonPlacement) {\n case \"start\":\n sx.justifyContent = 'flex-start'\n break;\n case \"end\":\n sx.justifyContent = 'flex-end'\n break;\n case \"between\":\n sx.justifyContent = 'space-between'\n break;\n case \"full\":\n sx = {\n \"& button\": {\n flex: 1\n }\n }\n break;\n }\n\n let sizes: any = {\n small: 320,\n medium: 400,\n large: 600\n }\n\n let okcolor = color\n let closecolor = color\n if (color === 'surface') {\n okcolor = 'primary'\n closecolor = 'surface'\n variant = 'text'\n } else {\n if (variant === 'fill') {\n okcolor = 'surface'\n closecolor = 'surface'\n } else {\n okcolor = color\n closecolor = 'surface'\n }\n }\n\n return (<Modal\n open={open}\n {...slotProps?.modal}\n size={sizes[size] || size}\n blur={40}\n blurMode={blurMode || \"transparent\"}\n transition={transition || \"zoom\"}\n onClickOutside={async () => {\n if (clickOutsideToClose && !loading) {\n onCancel && await onCancel()\n }\n }}\n >\n <Alert\n direction={direction}\n sx={{\n px: 2,\n py: 1,\n pt: direction === 'row' ? 1 : 2\n }}\n color={color}\n variant={variant}\n onClose={closeButton ? close : undefined}\n {...rest}\n >\n {content}\n <Tag\n sxr={{\n display: \"flex\",\n gap: 1,\n pt: 4,\n flexDirection: \"row\",\n ...sx,\n }}\n >\n {!hideCancelButton && <Button\n disabled={loading}\n color={closecolor}\n variant=\"fill\"\n {...slotProps?.closeButton}\n onClick={async () => {\n onCancel && await onCancel()\n }}\n >{cancelButtonText || \"Close\"}</Button>}\n <Button\n loading={loading}\n color={okcolor}\n variant=\"fill\"\n {...slotProps?.okButton}\n\n onClick={async () => {\n onConfirm && await onConfirm()\n }}\n >{okButtonText || \"OK\"}</Button>\n </Tag>\n </Alert>\n </Modal>)\n}\n\n\nAlert.confirm = ({ onConfirm, onCancel, ...props }: Omit<ConfirmAlertProps, \"open\" | \"loading\">) => {\n const Inst = (_props: any) => <ConfirmAlert {..._props} />\n const confirm = Renderar.render(Inst as any, {\n ...props,\n open: true,\n loading: false,\n onConfirm: async () => {\n if (onConfirm) {\n confirm.updateProps({ loading: true })\n if (onConfirm) await onConfirm()\n confirm.updateProps({ open: false, loading: false })\n } else {\n confirm.updateProps({ open: false })\n }\n },\n onCancel: async () => {\n if (onCancel) {\n confirm.updateProps({ loading: true })\n await onCancel()\n confirm.updateProps({ open: false, loading: false })\n } else {\n confirm.updateProps({ open: false })\n }\n },\n slotProps: {\n ...props.slotProps,\n modal: {\n ...props.slotProps?.modal,\n onExited: () => {\n confirm.unrender()\n if (props?.slotProps?.modal?.onExited) {\n props.slotProps?.modal?.onExited()\n }\n },\n }\n },\n })\n}\n\nexport default Alert"],"names":[],"mappings":";;;;;;;;;;;;;;;AAwBA;AAAe;AACX;AAUI;;;;;AAMJ;AAAW;AACX;AAAa;AACb;AAAU;AACV;AAAW;AACX;AAAe;AAEf;AAEA;AACA;AACA;AACA;AACA;AAEA;;AAKA;;AAEI;;AAGJ;AACI;AACA;AACA;AACA;;;;AA2BgB;AACA;AACA;;AAUJ;AACA;AACA;;AAEH;AAOW;AACA;AACA;;AAEA;AACI;AACH;;AASL;AACA;AACA;AACA;;;AAGA;AACH;AAQe;AACA;;AAOR;AACA;AACA;AACH;AAQzB;AA2BA;;;;;;;;;;;AAmCQ;AACI;;AAEJ;AACI;;AAEJ;AACI;;AAEJ;AACI;AACI;AACI;AACH;;;;AAKb;AACI;AACA;AACA;;;;AAKJ;;;;;;AAKI;;;;;;;;;;AAiBI;AACI;;;AAOA;AACA;;AAEH;AAsBW;AACJ;AASI;;AAMxB;AAGA;;;AACI;;;;AAQY;;AACA;;;;;AAIR;;;;AAKQ;;;;;AAIR;;;AAOY;;;AAGJ;AAIhB;;"}
1
+ {"version":3,"file":"index.js","sources":["../../src/Alert/index.tsx"],"sourcesContent":["\"use client\";\nimport { Tag, TagProps, useBreakpointProps, useColorTemplate, useInterface, useBreakpointPropsType, Renderar, UseColorTemplateType, UseColorTemplateColor, TransitionVariantTypes } from \"@xanui/core\"\nimport React, { isValidElement, ReactElement } from \"react\"\nimport Text from \"../Text\"\nimport InfoIcon from '@xanui/icons/Info';\nimport WarningIcon from '@xanui/icons/Warning';\nimport SuccessIcon from '@xanui/icons/CheckCircle';\nimport ErrorIcon from '@xanui/icons/Cancel';\nimport IconClose from '@xanui/icons/Close';\nimport IconButton from \"../IconButton\";\nimport Modal, { ModalProps } from \"../Modal\";\nimport Button, { ButtonProps } from \"../Button\";\n\nexport type AlertProps = Omit<TagProps<\"div\">, \"content\" | \"title\" | \"direction\"> & {\n title?: useBreakpointPropsType<string | ReactElement>;\n direction?: useBreakpointPropsType<\"row\" | \"column\">;\n variant?: useBreakpointPropsType<UseColorTemplateType>;\n color?: useBreakpointPropsType<UseColorTemplateColor>;\n icon?: useBreakpointPropsType<\"info\" | \"warning\" | \"success\" | \"error\" | false | ReactElement>;\n onClose?: React.DOMAttributes<\"button\">['onClick'];\n}\n\nexport type AlertMesssageType = string | ReactElement | AlertProps\n\nconst Alert = ({ children, ...rest }: AlertProps) => {\n let [{\n title,\n variant,\n icon,\n color,\n direction,\n slotProps,\n onClose,\n ..._props\n }] = useInterface<any>(\"Alert\", rest, {\n variant: \"fill\"\n })\n color ??= 'default'\n direction ??= \"row\"\n\n const _p: any = {}\n if (title) _p.title = title\n if (variant) _p.variant = variant\n if (icon) _p.icon = icon\n if (color) _p.color = color\n if (direction) _p.direction = direction\n\n const p: any = useBreakpointProps(_p)\n\n title = p.title\n variant = p.variant\n icon = p.icon\n color = p.color\n direction = p.direction\n\n let isRow = direction === 'row'\n\n const template = useColorTemplate(color, variant)\n\n let iconsx = {\n fontSize: isRow ? 22 : 40,\n color: color === 'default' ? \"default.contrast\" : template.main.color\n }\n\n const icons: any = {\n \"info\": <InfoIcon sx={iconsx} />,\n \"warning\": <WarningIcon sx={iconsx} />,\n \"success\": <SuccessIcon sx={iconsx} />,\n \"danger\": <ErrorIcon sx={iconsx} />\n }\n\n let _icon = icons[icon] || icons[color]\n\n return (\n <Tag\n {..._props}\n baseClass=\"alert\"\n sxr={{\n justifyContent: \"flex-start\",\n position: \"relative\",\n radius: 1,\n px: isRow ? (_icon ? .5 : 2) : 3,\n py: isRow ? .5 : 3,\n flexDirection: \"column\",\n display: 'flex',\n ..._props?.sx\n }}\n {...template.main}\n >\n {\n onClose && <IconButton\n color={color}\n variant={variant === 'fill' ? \"fill\" : \"text\"}\n size={25}\n sx={{\n position: \"absolute\",\n top: 5,\n right: 5\n }}\n onClick={onClose}\n className=\"alert-close-button\"\n >\n <IconClose fontSize={18} />\n </IconButton>\n }\n <Tag\n sx={{\n display: \"flex\",\n gap: 1,\n flexDirection: direction,\n alignItems: isRow ? \"flex-start\" : \"center\"\n }}\n baseClass=\"alert-container\"\n >\n {\n _icon && <Tag\n baseClass=\"alert-icon\"\n sxr={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n p: isRow ? .5 : 0,\n \"& svg\": {\n color: template.main.color\n }\n }}\n >\n {_icon}\n </Tag>\n }\n <Tag\n baseClass=\"alert-content\"\n sxr={{\n display: \"flex\",\n flexDirection: \"column\",\n flex: 1,\n color: template.main.color,\n textAlign: isRow ? \"left\" : \"center\",\n gap: isRow ? 0 : 1,\n width: \"100%\"\n }}\n >\n {title && <>\n {\n isValidElement(title) ? <Tag className=\"alert-title\">{title}</Tag> : <Text\n className=\"alert-titles\"\n variant=\"text\"\n sx={{\n fontWeight: 500,\n color: template.main.color\n }}\n >{title}</Text>\n }\n </>}\n <Tag\n sxr={{\n fontSize: \"button\",\n fontWeight: \"button\",\n lineHeight: \"button\"\n }}\n >\n {children}\n </Tag>\n </Tag>\n </Tag>\n </Tag>\n )\n}\n\nexport type ConfirmAlertProps = Omit<AlertProps, 'children' | 'onClose' | 'variant' | \"size\"> & {\n open: boolean;\n loading: boolean;\n content: string | ReactElement,\n size?: \"small\" | \"medium\" | \"large\" | number;\n closeButton?: boolean;\n clickOutsideToClose?: boolean;\n okButtonText?: string;\n cancelButtonText?: string;\n hideOkButton?: boolean;\n hideCancelButton?: boolean;\n buttonPlacement?: \"start\" | \"end\" | \"between\" | \"full\";\n variant?: \"text\" | \"fill\"\n onConfirm?: () => Promise<void> | void;\n onCancel?: () => Promise<void> | void;\n transition?: TransitionVariantTypes;\n blurMode?: ModalProps['blurMode'];\n slotProps?: {\n modal?: Omit<ModalProps, 'open' | \"children\">;\n okButton?: Omit<ButtonProps, \"children\">;\n closeButton?: Omit<ButtonProps, \"children\">;\n }\n}\n\n\nconst ConfirmAlert = (props: ConfirmAlertProps) => {\n let {\n open,\n loading,\n content,\n size,\n color,\n direction,\n variant,\n closeButton,\n clickOutsideToClose,\n okButtonText,\n cancelButtonText,\n hideOkButton,\n hideCancelButton,\n buttonPlacement,\n onConfirm,\n onCancel,\n transition,\n blurMode,\n slotProps,\n ...rest\n } = props\n\n hideOkButton ??= false\n hideCancelButton ??= false\n\n size ??= \"small\"\n color ??= 'default'\n variant ??= \"text\"\n direction ??= \"column\"\n buttonPlacement ??= \"end\"\n let sx: any = {};\n\n switch (buttonPlacement) {\n case \"start\":\n sx.justifyContent = 'flex-start'\n break;\n case \"end\":\n sx.justifyContent = 'flex-end'\n break;\n case \"between\":\n sx.justifyContent = 'space-between'\n break;\n case \"full\":\n sx = {\n \"& button\": {\n flex: 1\n }\n }\n break;\n }\n\n let sizes: any = {\n small: 320,\n medium: 400,\n large: 600\n }\n\n let okcolor = color\n let closecolor = color\n if (color === 'default') {\n okcolor = 'primary'\n closecolor = 'default'\n variant = 'text'\n } else {\n if (variant === 'fill') {\n okcolor = 'default'\n closecolor = 'default'\n } else {\n okcolor = color\n closecolor = 'default'\n }\n }\n\n return (<Modal\n open={open}\n {...slotProps?.modal}\n size={sizes[size] || size}\n blur={40}\n blurMode={blurMode || \"transparent\"}\n transition={transition || \"zoom\"}\n onClickOutside={async () => {\n if (clickOutsideToClose && !loading) {\n onCancel && await onCancel()\n }\n }}\n >\n <Alert\n direction={direction}\n sx={{\n px: 2,\n py: 1,\n pt: direction === 'row' ? 1 : 2\n }}\n color={color}\n variant={variant}\n onClose={closeButton ? close : undefined}\n {...rest}\n >\n {content}\n <Tag\n sxr={{\n display: \"flex\",\n gap: 1,\n pt: 4,\n flexDirection: \"row\",\n ...sx,\n }}\n >\n {!hideCancelButton && <Button\n disabled={loading}\n color={closecolor}\n variant=\"fill\"\n {...slotProps?.closeButton}\n onClick={async () => {\n onCancel && await onCancel()\n }}\n >{cancelButtonText || \"Close\"}</Button>}\n <Button\n loading={loading}\n color={okcolor}\n variant=\"fill\"\n {...slotProps?.okButton}\n\n onClick={async () => {\n onConfirm && await onConfirm()\n }}\n >{okButtonText || \"OK\"}</Button>\n </Tag>\n </Alert>\n </Modal>)\n}\n\n\nAlert.confirm = ({ onConfirm, onCancel, ...props }: Omit<ConfirmAlertProps, \"open\" | \"loading\">) => {\n const Inst = (_props: any) => <ConfirmAlert {..._props} />\n const confirm = Renderar.render(Inst as any, {\n ...props,\n open: true,\n loading: false,\n onConfirm: async () => {\n if (onConfirm) {\n confirm.updateProps({ loading: true })\n if (onConfirm) await onConfirm()\n confirm.updateProps({ open: false, loading: false })\n } else {\n confirm.updateProps({ open: false })\n }\n },\n onCancel: async () => {\n if (onCancel) {\n confirm.updateProps({ loading: true })\n await onCancel()\n confirm.updateProps({ open: false, loading: false })\n } else {\n confirm.updateProps({ open: false })\n }\n },\n slotProps: {\n ...props.slotProps,\n modal: {\n ...props.slotProps?.modal,\n onExited: () => {\n confirm.unrender()\n if (props?.slotProps?.modal?.onExited) {\n props.slotProps?.modal?.onExited()\n }\n },\n }\n },\n })\n}\n\nexport default Alert"],"names":[],"mappings":";;;;;;;;;;;;;;;AAwBA;AAAe;AACX;AAUI;;;;;AAMJ;AAAW;AACX;AAAa;AACb;AAAU;AACV;AAAW;AACX;AAAe;AAEf;AAEA;AACA;AACA;AACA;AACA;AAEA;;AAIA;;AAEI;;AAGJ;AACI;AACA;AACA;AACA;;;;AA2BgB;AACA;AACA;;AAUJ;AACA;AACA;;AAEH;AAOW;AACA;AACA;;AAEA;AACI;AACH;;AASL;AACA;AACA;AACA;;;AAGA;AACH;AAQe;AACA;;AAOR;AACA;AACA;AACH;AAQzB;AA2BA;;;;;;;;;;;AAmCQ;AACI;;AAEJ;AACI;;AAEJ;AACI;;AAEJ;AACI;AACI;AACI;AACH;;;;AAKb;AACI;AACA;AACA;;;;AAKJ;;;;;;AAKI;;;;;;;;;;AAiBI;AACI;;;AAOA;AACA;;AAEH;AAsBW;AACJ;AASI;;AAMxB;AAGA;;;AACI;;;;AAQY;;AACA;;;;;AAIR;;;;AAKQ;;;;;AAIR;;;AAOY;;;AAGJ;AAIhB;;"}
@@ -35,7 +35,7 @@ const Autocomplete = (_a) => {
35
35
  }
36
36
  if (!!value && multiple && Array.isArray(value)) {
37
37
  value.map((v, index$2) => {
38
- startIcons.push(jsxRuntime.jsx(index, { size: "small", label: getLabel(v), variant: "fill", color: "surface", endIcon: jsxRuntime.jsx(index$1, { size: 20, variant: "text", color: "surface", onClick: (e) => {
38
+ startIcons.push(jsxRuntime.jsx(index, { size: "small", label: getLabel(v), variant: "fill", color: "default", endIcon: jsxRuntime.jsx(index$1, { size: 20, variant: "text", color: "default", onClick: (e) => {
39
39
  e.stopPropagation();
40
40
  let newValue = Array.isArray(value) ? [...value] : [];
41
41
  newValue = newValue.filter((val) => getLabel(val) !== getLabel(v));
@@ -51,7 +51,7 @@ const Autocomplete = (_a) => {
51
51
  endIcons.push(jsxRuntime.jsx(index$2, { size: "small" }, "auto-complete-loading-icon"));
52
52
  }
53
53
  else if (!!value && !multiple) {
54
- endIcons.unshift(jsxRuntime.jsx(index$1, { variant: "text", color: "surface", onClick: (e) => {
54
+ endIcons.unshift(jsxRuntime.jsx(index$1, { variant: "text", color: "default", onClick: (e) => {
55
55
  e.stopPropagation();
56
56
  onChange && onChange(null);
57
57
  setInputValue("");
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../src/Autocomplete/index.tsx"],"sourcesContent":["\"use client\"\nimport React, { ReactElement, useEffect } from 'react'\nimport Input from '../Input'\nimport Menu from '../Menu'\nimport List from '../List';\nimport ListItem, { ListItemProps } from '../ListItem';\nimport Chip from '../Chip';\nimport IconButton from '../IconButton';\nimport Close from '@xanui/icons/Close';\nimport CircleProgress from '../CircleProgress';\nimport { useBreakpointPropsType, UseColorTemplateColor } from '@xanui/core';\n\nexport type AutocompleteProps = {\n\n options: any[] | ((text: string) => Promise<any[]>)\n getLabel: (option: any) => string;\n onChange?: (value: any) => void;\n value?: any;\n multiple?: boolean;\n renderOption?: (option: any, props: any) => ReactElement<ListItemProps>\n\n // input props customization\n disabled?: boolean;\n name?: string;\n placeholder?: string;\n readOnly?: boolean;\n autoFocus?: boolean;\n autoComplete?: string;\n label?: useBreakpointPropsType<string>;\n\n onFocus?: (e: React.FocusEvent<any>) => void;\n onBlur?: (e: React.FocusEvent<any>) => void;\n onInput?: (e: React.FormEvent<any>) => void;\n onKeyDown?: (e: React.KeyboardEvent<any>) => void;\n onKeyUp?: (e: React.KeyboardEvent<any>) => void;\n\n rows?: useBreakpointPropsType<number>;\n minRows?: useBreakpointPropsType<number>;\n maxRows?: useBreakpointPropsType<number>;\n fullWidth?: boolean;\n\n startIcon?: useBreakpointPropsType<ReactElement>;\n endIcon?: useBreakpointPropsType<ReactElement>;\n iconPlacement?: useBreakpointPropsType<\"start\" | \"center\" | \"end\">;\n focused?: boolean;\n color?: useBreakpointPropsType<Omit<UseColorTemplateColor, 'surface'>>;\n variant?: useBreakpointPropsType<\"fill\" | \"outline\" | \"text\">;\n error?: boolean;\n helperText?: useBreakpointPropsType<string>;\n\n}\n\nconst Autocomplete = ({ value, onChange, renderOption, options, getLabel, multiple, ...inputProps }: AutocompleteProps) => {\n const [_options, setOptions] = React.useState<any[]>()\n const [inputValue, setInputValue] = React.useState(value ? getLabel(value) : \"\")\n const [timer, setTimer] = React.useState<any>(null)\n const [loading, setLoading] = React.useState(false)\n const [focused, setFocused] = React.useState(false)\n const [open, setOpen] = React.useState(false)\n const menuRef = React.useRef<any>(null)\n\n useEffect(() => {\n if (!inputValue) {\n setInputValue(value ? getLabel(value) : \"\")\n }\n }, [value])\n\n getLabel ??= (option: any) => option.toString();\n multiple ??= false;\n\n let startIcons = []\n if (inputProps.startIcon) {\n startIcons.push(inputProps.startIcon)\n }\n\n if (!!value && multiple && Array.isArray(value)) {\n value.map((v: any, index: number) => {\n startIcons.push(<Chip\n key={index}\n size=\"small\"\n label={getLabel!(v)}\n variant={\"fill\"}\n color=\"surface\"\n endIcon={<IconButton\n size={20}\n variant={\"text\"}\n color=\"surface\"\n onClick={(e) => {\n e.stopPropagation();\n let newValue = Array.isArray(value) ? [...value] : []\n newValue = newValue.filter((val: any) => getLabel!(val) !== getLabel!(v))\n onChange && onChange(newValue)\n }}\n >\n <Close />\n </IconButton>}\n />)\n })\n }\n\n let endIcons = []\n if (inputProps.endIcon) {\n endIcons.push(inputProps.endIcon)\n }\n if (loading) {\n endIcons.push(<CircleProgress\n key=\"auto-complete-loading-icon\"\n size=\"small\"\n />)\n } else if (!!value && !multiple) {\n endIcons.unshift(<IconButton\n key=\"auto-complete-clear-button\"\n variant={\"text\"}\n color=\"surface\"\n onClick={(e) => {\n e.stopPropagation();\n onChange && onChange(null)\n setInputValue(\"\")\n }}\n >\n <Close />\n </IconButton>)\n }\n\n const loadOptions = async () => {\n setLoading(true)\n setOpen(false)\n let results = []\n if (typeof options === 'function') {\n results = await options(inputValue)\n } else {\n results = options.filter(option => getLabel!(option).toString().toLowerCase().includes(inputValue.toLowerCase()))\n }\n if (!multiple && inputValue) {\n const find = results.find(option => getLabel!(option).toString().toLowerCase() === inputValue.toLowerCase())\n onChange && onChange(find || null)\n }\n setOptions(results)\n setOpen(true)\n setLoading(false)\n }\n\n useEffect(() => {\n if (focused) {\n clearTimeout(timer)\n setTimer(setTimeout(() => {\n loadOptions()\n }, 300))\n } else {\n setOpen(false)\n }\n }, [focused, inputValue])\n\n\n return (\n <>\n <Input\n {...inputProps as any}\n ref={menuRef}\n slotProps={{\n rootContainer: {\n flexWrap: 'wrap',\n ...(multiple ? { height: \"auto\", gap: .5 } : {})\n },\n input: {\n width: multiple ? 'initial' : '100%',\n flex: 1,\n minWidth: 20,\n }\n }}\n startIcon={startIcons.length ? startIcons : undefined}\n endIcon={endIcons}\n value={inputValue}\n onFocus={() => setFocused(true)}\n onKeyDown={(e) => {\n if (inputProps?.onKeyDown) {\n inputProps.onKeyDown(e)\n }\n if (multiple && e.key === 'Backspace' && inputValue === \"\" && Array.isArray(value) && value.length > 0) {\n let newValue = [...value]\n newValue.pop()\n onChange && onChange(newValue)\n }\n }}\n onChange={(e) => {\n const value = e.target.value;\n setInputValue(value)\n }}\n />\n <Menu\n target={open ? menuRef.current : null}\n onClickOutside={() => {\n setFocused(false)\n }}\n slotProps={{\n content: { minWidth: menuRef.current ? menuRef.current.offsetWidth : 'auto' }\n }}\n >\n <List\n maxHeight={400}\n overflow={\"auto\"}\n >\n {_options?.map((option, index) => (\n renderOption ? <div key={\"auto-complete\" + index + getLabel!(option)}>{renderOption(option, {\n onClick: () => {\n if (multiple) {\n let newValue = Array.isArray(value) ? [...value] : []\n const has = newValue.find((v: any) => getLabel!(v) === getLabel!(option))\n if (!has) {\n newValue.push(option)\n } else {\n newValue = newValue.filter((v: any) => getLabel!(v) !== getLabel!(option))\n }\n onChange && onChange(newValue)\n } else {\n setFocused(false)\n onChange && onChange(option)\n setOpen(false)\n setInputValue(getLabel!(option))\n setOptions([])\n }\n }\n })}</div> : <ListItem\n key={index}\n onClick={() => {\n\n if (multiple) {\n let newValue = Array.isArray(value) ? [...value] : []\n const has = newValue.find((v: any) => getLabel!(v) === getLabel!(option))\n if (!has) {\n newValue.push(option)\n } else {\n newValue = newValue.filter((v: any) => getLabel!(v) !== getLabel!(option))\n }\n onChange && onChange(newValue)\n } else {\n setFocused(false)\n onChange && onChange(option)\n setOpen(false)\n setInputValue(getLabel!(option))\n setOptions([])\n }\n }}\n >\n {getLabel!(option)}\n </ListItem>\n ))}\n </List>\n </Menu>\n </>\n )\n}\n\nexport default Autocomplete\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAoDA;AAAsB;;;AAGnB;AACA;AACA;AACA;;;;AAKM;;AAEN;AAEA;;;AAIA;AACG;;AAGH;;;;AAce;;AAEA;;AAMZ;;;AAIH;AACG;;;AAGA;;AAII;AACJ;;AAMM;;;;AAQT;;;;AAIG;AACG;;;AAEA;;AAEH;;AAEG;;;;;AAKN;;;;AAKM;AACG;AACH;;;;;AAIN;AAGA;;AAUY;;AAEG;AACA;AACF;AACH;;AAOK;;;AAGA;;AAEA;;AAEN;AAEG;;;;;AAUA;AACF;;;AAUc;;;AAGG;;;;;AAIH;;;;AAGA;;AAEA;;;;AAIR;;AAKQ;;;AAGG;;;;;AAIH;;;;AAGA;;AAEA;;;AAGN;AASrB;;"}
1
+ {"version":3,"file":"index.cjs","sources":["../../src/Autocomplete/index.tsx"],"sourcesContent":["\"use client\"\nimport React, { ReactElement, useEffect } from 'react'\nimport Input from '../Input'\nimport Menu from '../Menu'\nimport List from '../List';\nimport ListItem, { ListItemProps } from '../ListItem';\nimport Chip from '../Chip';\nimport IconButton from '../IconButton';\nimport Close from '@xanui/icons/Close';\nimport CircleProgress from '../CircleProgress';\nimport { useBreakpointPropsType, UseColorTemplateColor } from '@xanui/core';\n\nexport type AutocompleteProps = {\n\n options: any[] | ((text: string) => Promise<any[]>)\n getLabel: (option: any) => string;\n onChange?: (value: any) => void;\n value?: any;\n multiple?: boolean;\n renderOption?: (option: any, props: any) => ReactElement<ListItemProps>\n\n // input props customization\n disabled?: boolean;\n name?: string;\n placeholder?: string;\n readOnly?: boolean;\n autoFocus?: boolean;\n autoComplete?: string;\n label?: useBreakpointPropsType<string>;\n\n onFocus?: (e: React.FocusEvent<any>) => void;\n onBlur?: (e: React.FocusEvent<any>) => void;\n onInput?: (e: React.FormEvent<any>) => void;\n onKeyDown?: (e: React.KeyboardEvent<any>) => void;\n onKeyUp?: (e: React.KeyboardEvent<any>) => void;\n\n rows?: useBreakpointPropsType<number>;\n minRows?: useBreakpointPropsType<number>;\n maxRows?: useBreakpointPropsType<number>;\n fullWidth?: boolean;\n\n startIcon?: useBreakpointPropsType<ReactElement>;\n endIcon?: useBreakpointPropsType<ReactElement>;\n iconPlacement?: useBreakpointPropsType<\"start\" | \"center\" | \"end\">;\n focused?: boolean;\n color?: useBreakpointPropsType<Omit<UseColorTemplateColor, 'default'>>;\n variant?: useBreakpointPropsType<\"fill\" | \"outline\" | \"text\">;\n error?: boolean;\n helperText?: useBreakpointPropsType<string>;\n\n}\n\nconst Autocomplete = ({ value, onChange, renderOption, options, getLabel, multiple, ...inputProps }: AutocompleteProps) => {\n const [_options, setOptions] = React.useState<any[]>()\n const [inputValue, setInputValue] = React.useState(value ? getLabel(value) : \"\")\n const [timer, setTimer] = React.useState<any>(null)\n const [loading, setLoading] = React.useState(false)\n const [focused, setFocused] = React.useState(false)\n const [open, setOpen] = React.useState(false)\n const menuRef = React.useRef<any>(null)\n\n useEffect(() => {\n if (!inputValue) {\n setInputValue(value ? getLabel(value) : \"\")\n }\n }, [value])\n\n getLabel ??= (option: any) => option.toString();\n multiple ??= false;\n\n let startIcons = []\n if (inputProps.startIcon) {\n startIcons.push(inputProps.startIcon)\n }\n\n if (!!value && multiple && Array.isArray(value)) {\n value.map((v: any, index: number) => {\n startIcons.push(<Chip\n key={index}\n size=\"small\"\n label={getLabel!(v)}\n variant={\"fill\"}\n color=\"default\"\n endIcon={<IconButton\n size={20}\n variant={\"text\"}\n color=\"default\"\n onClick={(e) => {\n e.stopPropagation();\n let newValue = Array.isArray(value) ? [...value] : []\n newValue = newValue.filter((val: any) => getLabel!(val) !== getLabel!(v))\n onChange && onChange(newValue)\n }}\n >\n <Close />\n </IconButton>}\n />)\n })\n }\n\n let endIcons = []\n if (inputProps.endIcon) {\n endIcons.push(inputProps.endIcon)\n }\n if (loading) {\n endIcons.push(<CircleProgress\n key=\"auto-complete-loading-icon\"\n size=\"small\"\n />)\n } else if (!!value && !multiple) {\n endIcons.unshift(<IconButton\n key=\"auto-complete-clear-button\"\n variant={\"text\"}\n color=\"default\"\n onClick={(e) => {\n e.stopPropagation();\n onChange && onChange(null)\n setInputValue(\"\")\n }}\n >\n <Close />\n </IconButton>)\n }\n\n const loadOptions = async () => {\n setLoading(true)\n setOpen(false)\n let results = []\n if (typeof options === 'function') {\n results = await options(inputValue)\n } else {\n results = options.filter(option => getLabel!(option).toString().toLowerCase().includes(inputValue.toLowerCase()))\n }\n if (!multiple && inputValue) {\n const find = results.find(option => getLabel!(option).toString().toLowerCase() === inputValue.toLowerCase())\n onChange && onChange(find || null)\n }\n setOptions(results)\n setOpen(true)\n setLoading(false)\n }\n\n useEffect(() => {\n if (focused) {\n clearTimeout(timer)\n setTimer(setTimeout(() => {\n loadOptions()\n }, 300))\n } else {\n setOpen(false)\n }\n }, [focused, inputValue])\n\n\n return (\n <>\n <Input\n {...inputProps as any}\n ref={menuRef}\n slotProps={{\n rootContainer: {\n flexWrap: 'wrap',\n ...(multiple ? { height: \"auto\", gap: .5 } : {})\n },\n input: {\n width: multiple ? 'initial' : '100%',\n flex: 1,\n minWidth: 20,\n }\n }}\n startIcon={startIcons.length ? startIcons : undefined}\n endIcon={endIcons}\n value={inputValue}\n onFocus={() => setFocused(true)}\n onKeyDown={(e) => {\n if (inputProps?.onKeyDown) {\n inputProps.onKeyDown(e)\n }\n if (multiple && e.key === 'Backspace' && inputValue === \"\" && Array.isArray(value) && value.length > 0) {\n let newValue = [...value]\n newValue.pop()\n onChange && onChange(newValue)\n }\n }}\n onChange={(e) => {\n const value = e.target.value;\n setInputValue(value)\n }}\n />\n <Menu\n target={open ? menuRef.current : null}\n onClickOutside={() => {\n setFocused(false)\n }}\n slotProps={{\n content: { minWidth: menuRef.current ? menuRef.current.offsetWidth : 'auto' }\n }}\n >\n <List\n maxHeight={400}\n overflow={\"auto\"}\n >\n {_options?.map((option, index) => (\n renderOption ? <div key={\"auto-complete\" + index + getLabel!(option)}>{renderOption(option, {\n onClick: () => {\n if (multiple) {\n let newValue = Array.isArray(value) ? [...value] : []\n const has = newValue.find((v: any) => getLabel!(v) === getLabel!(option))\n if (!has) {\n newValue.push(option)\n } else {\n newValue = newValue.filter((v: any) => getLabel!(v) !== getLabel!(option))\n }\n onChange && onChange(newValue)\n } else {\n setFocused(false)\n onChange && onChange(option)\n setOpen(false)\n setInputValue(getLabel!(option))\n setOptions([])\n }\n }\n })}</div> : <ListItem\n key={index}\n onClick={() => {\n\n if (multiple) {\n let newValue = Array.isArray(value) ? [...value] : []\n const has = newValue.find((v: any) => getLabel!(v) === getLabel!(option))\n if (!has) {\n newValue.push(option)\n } else {\n newValue = newValue.filter((v: any) => getLabel!(v) !== getLabel!(option))\n }\n onChange && onChange(newValue)\n } else {\n setFocused(false)\n onChange && onChange(option)\n setOpen(false)\n setInputValue(getLabel!(option))\n setOptions([])\n }\n }}\n >\n {getLabel!(option)}\n </ListItem>\n ))}\n </List>\n </Menu>\n </>\n )\n}\n\nexport default Autocomplete\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAoDA;AAAsB;;;AAGnB;AACA;AACA;AACA;;;;AAKM;;AAEN;AAEA;;;AAIA;AACG;;AAGH;;;;AAce;;AAEA;;AAMZ;;;AAIH;AACG;;;AAGA;;AAII;AACJ;;AAMM;;;;AAQT;;;;AAIG;AACG;;;AAEA;;AAEH;;AAEG;;;;;AAKN;;;;AAKM;AACG;AACH;;;;;AAIN;AAGA;;AAUY;;AAEG;AACA;AACF;AACH;;AAOK;;;AAGA;;AAEA;;AAEN;AAEG;;;;;AAUA;AACF;;;AAUc;;;AAGG;;;;;AAIH;;;;AAGA;;AAEA;;;;AAIR;;AAKQ;;;AAGG;;;;;AAIH;;;;AAGA;;AAEA;;;AAGN;AASrB;;"}
@@ -30,7 +30,7 @@ type AutocompleteProps = {
30
30
  endIcon?: useBreakpointPropsType<ReactElement>;
31
31
  iconPlacement?: useBreakpointPropsType<"start" | "center" | "end">;
32
32
  focused?: boolean;
33
- color?: useBreakpointPropsType<Omit<UseColorTemplateColor, 'surface'>>;
33
+ color?: useBreakpointPropsType<Omit<UseColorTemplateColor, 'default'>>;
34
34
  variant?: useBreakpointPropsType<"fill" | "outline" | "text">;
35
35
  error?: boolean;
36
36
  helperText?: useBreakpointPropsType<string>;
@@ -33,7 +33,7 @@ const Autocomplete = (_a) => {
33
33
  }
34
34
  if (!!value && multiple && Array.isArray(value)) {
35
35
  value.map((v, index) => {
36
- startIcons.push(jsx(Chip, { size: "small", label: getLabel(v), variant: "fill", color: "surface", endIcon: jsx(IconButton, { size: 20, variant: "text", color: "surface", onClick: (e) => {
36
+ startIcons.push(jsx(Chip, { size: "small", label: getLabel(v), variant: "fill", color: "default", endIcon: jsx(IconButton, { size: 20, variant: "text", color: "default", onClick: (e) => {
37
37
  e.stopPropagation();
38
38
  let newValue = Array.isArray(value) ? [...value] : [];
39
39
  newValue = newValue.filter((val) => getLabel(val) !== getLabel(v));
@@ -49,7 +49,7 @@ const Autocomplete = (_a) => {
49
49
  endIcons.push(jsx(CircleProgress, { size: "small" }, "auto-complete-loading-icon"));
50
50
  }
51
51
  else if (!!value && !multiple) {
52
- endIcons.unshift(jsx(IconButton, { variant: "text", color: "surface", onClick: (e) => {
52
+ endIcons.unshift(jsx(IconButton, { variant: "text", color: "default", onClick: (e) => {
53
53
  e.stopPropagation();
54
54
  onChange && onChange(null);
55
55
  setInputValue("");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/Autocomplete/index.tsx"],"sourcesContent":["\"use client\"\nimport React, { ReactElement, useEffect } from 'react'\nimport Input from '../Input'\nimport Menu from '../Menu'\nimport List from '../List';\nimport ListItem, { ListItemProps } from '../ListItem';\nimport Chip from '../Chip';\nimport IconButton from '../IconButton';\nimport Close from '@xanui/icons/Close';\nimport CircleProgress from '../CircleProgress';\nimport { useBreakpointPropsType, UseColorTemplateColor } from '@xanui/core';\n\nexport type AutocompleteProps = {\n\n options: any[] | ((text: string) => Promise<any[]>)\n getLabel: (option: any) => string;\n onChange?: (value: any) => void;\n value?: any;\n multiple?: boolean;\n renderOption?: (option: any, props: any) => ReactElement<ListItemProps>\n\n // input props customization\n disabled?: boolean;\n name?: string;\n placeholder?: string;\n readOnly?: boolean;\n autoFocus?: boolean;\n autoComplete?: string;\n label?: useBreakpointPropsType<string>;\n\n onFocus?: (e: React.FocusEvent<any>) => void;\n onBlur?: (e: React.FocusEvent<any>) => void;\n onInput?: (e: React.FormEvent<any>) => void;\n onKeyDown?: (e: React.KeyboardEvent<any>) => void;\n onKeyUp?: (e: React.KeyboardEvent<any>) => void;\n\n rows?: useBreakpointPropsType<number>;\n minRows?: useBreakpointPropsType<number>;\n maxRows?: useBreakpointPropsType<number>;\n fullWidth?: boolean;\n\n startIcon?: useBreakpointPropsType<ReactElement>;\n endIcon?: useBreakpointPropsType<ReactElement>;\n iconPlacement?: useBreakpointPropsType<\"start\" | \"center\" | \"end\">;\n focused?: boolean;\n color?: useBreakpointPropsType<Omit<UseColorTemplateColor, 'surface'>>;\n variant?: useBreakpointPropsType<\"fill\" | \"outline\" | \"text\">;\n error?: boolean;\n helperText?: useBreakpointPropsType<string>;\n\n}\n\nconst Autocomplete = ({ value, onChange, renderOption, options, getLabel, multiple, ...inputProps }: AutocompleteProps) => {\n const [_options, setOptions] = React.useState<any[]>()\n const [inputValue, setInputValue] = React.useState(value ? getLabel(value) : \"\")\n const [timer, setTimer] = React.useState<any>(null)\n const [loading, setLoading] = React.useState(false)\n const [focused, setFocused] = React.useState(false)\n const [open, setOpen] = React.useState(false)\n const menuRef = React.useRef<any>(null)\n\n useEffect(() => {\n if (!inputValue) {\n setInputValue(value ? getLabel(value) : \"\")\n }\n }, [value])\n\n getLabel ??= (option: any) => option.toString();\n multiple ??= false;\n\n let startIcons = []\n if (inputProps.startIcon) {\n startIcons.push(inputProps.startIcon)\n }\n\n if (!!value && multiple && Array.isArray(value)) {\n value.map((v: any, index: number) => {\n startIcons.push(<Chip\n key={index}\n size=\"small\"\n label={getLabel!(v)}\n variant={\"fill\"}\n color=\"surface\"\n endIcon={<IconButton\n size={20}\n variant={\"text\"}\n color=\"surface\"\n onClick={(e) => {\n e.stopPropagation();\n let newValue = Array.isArray(value) ? [...value] : []\n newValue = newValue.filter((val: any) => getLabel!(val) !== getLabel!(v))\n onChange && onChange(newValue)\n }}\n >\n <Close />\n </IconButton>}\n />)\n })\n }\n\n let endIcons = []\n if (inputProps.endIcon) {\n endIcons.push(inputProps.endIcon)\n }\n if (loading) {\n endIcons.push(<CircleProgress\n key=\"auto-complete-loading-icon\"\n size=\"small\"\n />)\n } else if (!!value && !multiple) {\n endIcons.unshift(<IconButton\n key=\"auto-complete-clear-button\"\n variant={\"text\"}\n color=\"surface\"\n onClick={(e) => {\n e.stopPropagation();\n onChange && onChange(null)\n setInputValue(\"\")\n }}\n >\n <Close />\n </IconButton>)\n }\n\n const loadOptions = async () => {\n setLoading(true)\n setOpen(false)\n let results = []\n if (typeof options === 'function') {\n results = await options(inputValue)\n } else {\n results = options.filter(option => getLabel!(option).toString().toLowerCase().includes(inputValue.toLowerCase()))\n }\n if (!multiple && inputValue) {\n const find = results.find(option => getLabel!(option).toString().toLowerCase() === inputValue.toLowerCase())\n onChange && onChange(find || null)\n }\n setOptions(results)\n setOpen(true)\n setLoading(false)\n }\n\n useEffect(() => {\n if (focused) {\n clearTimeout(timer)\n setTimer(setTimeout(() => {\n loadOptions()\n }, 300))\n } else {\n setOpen(false)\n }\n }, [focused, inputValue])\n\n\n return (\n <>\n <Input\n {...inputProps as any}\n ref={menuRef}\n slotProps={{\n rootContainer: {\n flexWrap: 'wrap',\n ...(multiple ? { height: \"auto\", gap: .5 } : {})\n },\n input: {\n width: multiple ? 'initial' : '100%',\n flex: 1,\n minWidth: 20,\n }\n }}\n startIcon={startIcons.length ? startIcons : undefined}\n endIcon={endIcons}\n value={inputValue}\n onFocus={() => setFocused(true)}\n onKeyDown={(e) => {\n if (inputProps?.onKeyDown) {\n inputProps.onKeyDown(e)\n }\n if (multiple && e.key === 'Backspace' && inputValue === \"\" && Array.isArray(value) && value.length > 0) {\n let newValue = [...value]\n newValue.pop()\n onChange && onChange(newValue)\n }\n }}\n onChange={(e) => {\n const value = e.target.value;\n setInputValue(value)\n }}\n />\n <Menu\n target={open ? menuRef.current : null}\n onClickOutside={() => {\n setFocused(false)\n }}\n slotProps={{\n content: { minWidth: menuRef.current ? menuRef.current.offsetWidth : 'auto' }\n }}\n >\n <List\n maxHeight={400}\n overflow={\"auto\"}\n >\n {_options?.map((option, index) => (\n renderOption ? <div key={\"auto-complete\" + index + getLabel!(option)}>{renderOption(option, {\n onClick: () => {\n if (multiple) {\n let newValue = Array.isArray(value) ? [...value] : []\n const has = newValue.find((v: any) => getLabel!(v) === getLabel!(option))\n if (!has) {\n newValue.push(option)\n } else {\n newValue = newValue.filter((v: any) => getLabel!(v) !== getLabel!(option))\n }\n onChange && onChange(newValue)\n } else {\n setFocused(false)\n onChange && onChange(option)\n setOpen(false)\n setInputValue(getLabel!(option))\n setOptions([])\n }\n }\n })}</div> : <ListItem\n key={index}\n onClick={() => {\n\n if (multiple) {\n let newValue = Array.isArray(value) ? [...value] : []\n const has = newValue.find((v: any) => getLabel!(v) === getLabel!(option))\n if (!has) {\n newValue.push(option)\n } else {\n newValue = newValue.filter((v: any) => getLabel!(v) !== getLabel!(option))\n }\n onChange && onChange(newValue)\n } else {\n setFocused(false)\n onChange && onChange(option)\n setOpen(false)\n setInputValue(getLabel!(option))\n setOptions([])\n }\n }}\n >\n {getLabel!(option)}\n </ListItem>\n ))}\n </List>\n </Menu>\n </>\n )\n}\n\nexport default Autocomplete\n"],"names":[],"mappings":";;;;;;;;;;;;;AAoDA;AAAsB;;;AAGnB;AACA;AACA;AACA;;;;AAKM;;AAEN;AAEA;;;AAIA;AACG;;AAGH;;;;AAce;;AAEA;;AAMZ;;;AAIH;AACG;;;AAGA;;AAII;AACJ;;AAMM;;;;AAQT;;;;AAIG;AACG;;;AAEA;;AAEH;;AAEG;;;;;AAKN;;;;AAKM;AACG;AACH;;;;;AAIN;AAGA;;AAUY;;AAEG;AACA;AACF;AACH;;AAOK;;;AAGA;;AAEA;;AAEN;AAEG;;;;;AAUA;AACF;;;AAUc;;;AAGG;;;;;AAIH;;;;AAGA;;AAEA;;;;AAIR;;AAKQ;;;AAGG;;;;;AAIH;;;;AAGA;;AAEA;;;AAGN;AASrB;;"}
1
+ {"version":3,"file":"index.js","sources":["../../src/Autocomplete/index.tsx"],"sourcesContent":["\"use client\"\nimport React, { ReactElement, useEffect } from 'react'\nimport Input from '../Input'\nimport Menu from '../Menu'\nimport List from '../List';\nimport ListItem, { ListItemProps } from '../ListItem';\nimport Chip from '../Chip';\nimport IconButton from '../IconButton';\nimport Close from '@xanui/icons/Close';\nimport CircleProgress from '../CircleProgress';\nimport { useBreakpointPropsType, UseColorTemplateColor } from '@xanui/core';\n\nexport type AutocompleteProps = {\n\n options: any[] | ((text: string) => Promise<any[]>)\n getLabel: (option: any) => string;\n onChange?: (value: any) => void;\n value?: any;\n multiple?: boolean;\n renderOption?: (option: any, props: any) => ReactElement<ListItemProps>\n\n // input props customization\n disabled?: boolean;\n name?: string;\n placeholder?: string;\n readOnly?: boolean;\n autoFocus?: boolean;\n autoComplete?: string;\n label?: useBreakpointPropsType<string>;\n\n onFocus?: (e: React.FocusEvent<any>) => void;\n onBlur?: (e: React.FocusEvent<any>) => void;\n onInput?: (e: React.FormEvent<any>) => void;\n onKeyDown?: (e: React.KeyboardEvent<any>) => void;\n onKeyUp?: (e: React.KeyboardEvent<any>) => void;\n\n rows?: useBreakpointPropsType<number>;\n minRows?: useBreakpointPropsType<number>;\n maxRows?: useBreakpointPropsType<number>;\n fullWidth?: boolean;\n\n startIcon?: useBreakpointPropsType<ReactElement>;\n endIcon?: useBreakpointPropsType<ReactElement>;\n iconPlacement?: useBreakpointPropsType<\"start\" | \"center\" | \"end\">;\n focused?: boolean;\n color?: useBreakpointPropsType<Omit<UseColorTemplateColor, 'default'>>;\n variant?: useBreakpointPropsType<\"fill\" | \"outline\" | \"text\">;\n error?: boolean;\n helperText?: useBreakpointPropsType<string>;\n\n}\n\nconst Autocomplete = ({ value, onChange, renderOption, options, getLabel, multiple, ...inputProps }: AutocompleteProps) => {\n const [_options, setOptions] = React.useState<any[]>()\n const [inputValue, setInputValue] = React.useState(value ? getLabel(value) : \"\")\n const [timer, setTimer] = React.useState<any>(null)\n const [loading, setLoading] = React.useState(false)\n const [focused, setFocused] = React.useState(false)\n const [open, setOpen] = React.useState(false)\n const menuRef = React.useRef<any>(null)\n\n useEffect(() => {\n if (!inputValue) {\n setInputValue(value ? getLabel(value) : \"\")\n }\n }, [value])\n\n getLabel ??= (option: any) => option.toString();\n multiple ??= false;\n\n let startIcons = []\n if (inputProps.startIcon) {\n startIcons.push(inputProps.startIcon)\n }\n\n if (!!value && multiple && Array.isArray(value)) {\n value.map((v: any, index: number) => {\n startIcons.push(<Chip\n key={index}\n size=\"small\"\n label={getLabel!(v)}\n variant={\"fill\"}\n color=\"default\"\n endIcon={<IconButton\n size={20}\n variant={\"text\"}\n color=\"default\"\n onClick={(e) => {\n e.stopPropagation();\n let newValue = Array.isArray(value) ? [...value] : []\n newValue = newValue.filter((val: any) => getLabel!(val) !== getLabel!(v))\n onChange && onChange(newValue)\n }}\n >\n <Close />\n </IconButton>}\n />)\n })\n }\n\n let endIcons = []\n if (inputProps.endIcon) {\n endIcons.push(inputProps.endIcon)\n }\n if (loading) {\n endIcons.push(<CircleProgress\n key=\"auto-complete-loading-icon\"\n size=\"small\"\n />)\n } else if (!!value && !multiple) {\n endIcons.unshift(<IconButton\n key=\"auto-complete-clear-button\"\n variant={\"text\"}\n color=\"default\"\n onClick={(e) => {\n e.stopPropagation();\n onChange && onChange(null)\n setInputValue(\"\")\n }}\n >\n <Close />\n </IconButton>)\n }\n\n const loadOptions = async () => {\n setLoading(true)\n setOpen(false)\n let results = []\n if (typeof options === 'function') {\n results = await options(inputValue)\n } else {\n results = options.filter(option => getLabel!(option).toString().toLowerCase().includes(inputValue.toLowerCase()))\n }\n if (!multiple && inputValue) {\n const find = results.find(option => getLabel!(option).toString().toLowerCase() === inputValue.toLowerCase())\n onChange && onChange(find || null)\n }\n setOptions(results)\n setOpen(true)\n setLoading(false)\n }\n\n useEffect(() => {\n if (focused) {\n clearTimeout(timer)\n setTimer(setTimeout(() => {\n loadOptions()\n }, 300))\n } else {\n setOpen(false)\n }\n }, [focused, inputValue])\n\n\n return (\n <>\n <Input\n {...inputProps as any}\n ref={menuRef}\n slotProps={{\n rootContainer: {\n flexWrap: 'wrap',\n ...(multiple ? { height: \"auto\", gap: .5 } : {})\n },\n input: {\n width: multiple ? 'initial' : '100%',\n flex: 1,\n minWidth: 20,\n }\n }}\n startIcon={startIcons.length ? startIcons : undefined}\n endIcon={endIcons}\n value={inputValue}\n onFocus={() => setFocused(true)}\n onKeyDown={(e) => {\n if (inputProps?.onKeyDown) {\n inputProps.onKeyDown(e)\n }\n if (multiple && e.key === 'Backspace' && inputValue === \"\" && Array.isArray(value) && value.length > 0) {\n let newValue = [...value]\n newValue.pop()\n onChange && onChange(newValue)\n }\n }}\n onChange={(e) => {\n const value = e.target.value;\n setInputValue(value)\n }}\n />\n <Menu\n target={open ? menuRef.current : null}\n onClickOutside={() => {\n setFocused(false)\n }}\n slotProps={{\n content: { minWidth: menuRef.current ? menuRef.current.offsetWidth : 'auto' }\n }}\n >\n <List\n maxHeight={400}\n overflow={\"auto\"}\n >\n {_options?.map((option, index) => (\n renderOption ? <div key={\"auto-complete\" + index + getLabel!(option)}>{renderOption(option, {\n onClick: () => {\n if (multiple) {\n let newValue = Array.isArray(value) ? [...value] : []\n const has = newValue.find((v: any) => getLabel!(v) === getLabel!(option))\n if (!has) {\n newValue.push(option)\n } else {\n newValue = newValue.filter((v: any) => getLabel!(v) !== getLabel!(option))\n }\n onChange && onChange(newValue)\n } else {\n setFocused(false)\n onChange && onChange(option)\n setOpen(false)\n setInputValue(getLabel!(option))\n setOptions([])\n }\n }\n })}</div> : <ListItem\n key={index}\n onClick={() => {\n\n if (multiple) {\n let newValue = Array.isArray(value) ? [...value] : []\n const has = newValue.find((v: any) => getLabel!(v) === getLabel!(option))\n if (!has) {\n newValue.push(option)\n } else {\n newValue = newValue.filter((v: any) => getLabel!(v) !== getLabel!(option))\n }\n onChange && onChange(newValue)\n } else {\n setFocused(false)\n onChange && onChange(option)\n setOpen(false)\n setInputValue(getLabel!(option))\n setOptions([])\n }\n }}\n >\n {getLabel!(option)}\n </ListItem>\n ))}\n </List>\n </Menu>\n </>\n )\n}\n\nexport default Autocomplete\n"],"names":[],"mappings":";;;;;;;;;;;;;AAoDA;AAAsB;;;AAGnB;AACA;AACA;AACA;;;;AAKM;;AAEN;AAEA;;;AAIA;AACG;;AAGH;;;;AAce;;AAEA;;AAMZ;;;AAIH;AACG;;;AAGA;;AAII;AACJ;;AAMM;;;;AAQT;;;;AAIG;AACG;;;AAEA;;AAEH;;AAEG;;;;;AAKN;;;;AAKM;AACG;AACH;;;;;AAIN;AAGA;;AAUY;;AAEG;AACA;AACF;AACH;;AAOK;;;AAGA;;AAEA;;AAEN;AAEG;;;;;AAUA;AACF;;;AAUc;;;AAGG;;;;;AAIH;;;;AAGA;;AAEA;;;;AAIR;;AAKQ;;;AAGG;;;;;AAIH;;;;AAGA;;AAEA;;;AAGN;AASrB;;"}
package/Avatar/index.cjs CHANGED
@@ -28,13 +28,13 @@ const Avatar = React.forwardRef((_a, ref) => {
28
28
  display: "inline-flex",
29
29
  justifyContent: "center",
30
30
  alignItems: "center",
31
- bgcolor: "surface.light",
31
+ bgcolor: "default.base",
32
32
  radius: size,
33
33
  fontSize: (size / 3) * 2,
34
34
  width: size,
35
35
  height: size,
36
36
  userSelect: "none",
37
- color: "surface.contrast",
37
+ color: "default.contrast",
38
38
  '& svg': {
39
39
  fontSize: (size / 3) * 2,
40
40
  opacity: .6
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../src/Avatar/index.tsx"],"sourcesContent":["\"use client\"\nimport React, { useState } from 'react';\nimport { Tag, TagProps, TagComponentType, useInterface, useBreakpointPropsType, useBreakpointProps } from '@xanui/core';\nimport PersonIcon from '@xanui/icons/Person'\nimport Skeleton, { SkeletonProps } from '../Skeleton';\n\nexport type AvatarProps<T extends TagComponentType = \"img\"> = TagProps<T> & {\n size?: useBreakpointPropsType<number>;\n skeleton?: boolean;\n slotProps?: {\n skeleton?: Omit<SkeletonProps, \"height\" | \"width\" | \"loading\" | \"children\">\n }\n}\n\nconst Avatar = React.forwardRef(<T extends TagComponentType = \"img\">({ children, src, alt, skeleton, ...rest }: AvatarProps<T>, ref: any) => {\n const [faild, setFaild] = useState<boolean>()\n let [{ size, slotProps, ...props }] = useInterface<any>(\"Avatar\", rest, {})\n size ??= 36\n const _p: any = {}\n if (size) _p.size = size\n const p: any = useBreakpointProps(_p)\n size = p.size\n\n if (skeleton) {\n return <Skeleton\n {...slotProps?.skeleton}\n height={size}\n width={size}\n animation={\"wave\"}\n sx={{\n ...slotProps?.skeleton?.sx,\n borderRadius: size,\n }}\n />\n }\n\n if (faild === false || !src) {\n let t = alt?.charAt(0).toUpperCase() || (children || <PersonIcon />)\n return (\n <Tag\n component=\"div\"\n src={src}\n {...props}\n baseClass='avatar'\n sxr={{\n display: \"inline-flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n bgcolor: \"surface.light\",\n radius: size,\n fontSize: (size / 3) * 2,\n width: size,\n height: size,\n userSelect: \"none\",\n color: \"surface.contrast\",\n '& svg': {\n fontSize: (size / 3) * 2,\n opacity: .6\n }\n }}\n ref={ref}\n >{t}</Tag>\n )\n }\n return (\n <Tag\n component=\"img\"\n radius={size}\n width={size}\n height={size}\n objectFit=\"cover\"\n {...props}\n alt={alt}\n src={src}\n baseClass='avatar'\n onError={(e) => {\n setFaild(false)\n props.onError && props.onError(e as any)\n }}\n ref={ref}\n />\n )\n})\n\nexport default Avatar\n\n\n"],"names":[],"mappings":";;;;;;;;;;AAcA;;AAAqE;;;;;AAKjE;AAAU;AACV;AACA;;AAGI;;AAYJ;;AAEI;AAOY;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACA;AACH;AACJ;;AAKb;;;AAcQ;AAIZ;;"}
1
+ {"version":3,"file":"index.cjs","sources":["../../src/Avatar/index.tsx"],"sourcesContent":["\"use client\"\nimport React, { useState } from 'react';\nimport { Tag, TagProps, TagComponentType, useInterface, useBreakpointPropsType, useBreakpointProps } from '@xanui/core';\nimport PersonIcon from '@xanui/icons/Person'\nimport Skeleton, { SkeletonProps } from '../Skeleton';\n\nexport type AvatarProps<T extends TagComponentType = \"img\"> = TagProps<T> & {\n size?: useBreakpointPropsType<number>;\n skeleton?: boolean;\n slotProps?: {\n skeleton?: Omit<SkeletonProps, \"height\" | \"width\" | \"loading\" | \"children\">\n }\n}\n\nconst Avatar = React.forwardRef(<T extends TagComponentType = \"img\">({ children, src, alt, skeleton, ...rest }: AvatarProps<T>, ref: any) => {\n const [faild, setFaild] = useState<boolean>()\n let [{ size, slotProps, ...props }] = useInterface<any>(\"Avatar\", rest, {})\n size ??= 36\n const _p: any = {}\n if (size) _p.size = size\n const p: any = useBreakpointProps(_p)\n size = p.size\n\n if (skeleton) {\n return <Skeleton\n {...slotProps?.skeleton}\n height={size}\n width={size}\n animation={\"wave\"}\n sx={{\n ...slotProps?.skeleton?.sx,\n borderRadius: size,\n }}\n />\n }\n\n if (faild === false || !src) {\n let t = alt?.charAt(0).toUpperCase() || (children || <PersonIcon />)\n return (\n <Tag\n component=\"div\"\n src={src}\n {...props}\n baseClass='avatar'\n sxr={{\n display: \"inline-flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n bgcolor: \"default.base\",\n radius: size,\n fontSize: (size / 3) * 2,\n width: size,\n height: size,\n userSelect: \"none\",\n color: \"default.contrast\",\n '& svg': {\n fontSize: (size / 3) * 2,\n opacity: .6\n }\n }}\n ref={ref}\n >{t}</Tag>\n )\n }\n return (\n <Tag\n component=\"img\"\n radius={size}\n width={size}\n height={size}\n objectFit=\"cover\"\n {...props}\n alt={alt}\n src={src}\n baseClass='avatar'\n onError={(e) => {\n setFaild(false)\n props.onError && props.onError(e as any)\n }}\n ref={ref}\n />\n )\n})\n\nexport default Avatar\n\n\n"],"names":[],"mappings":";;;;;;;;;;AAcA;;AAAqE;;;;;AAKjE;AAAU;AACV;AACA;;AAGI;;AAYJ;;AAEI;AAOY;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACA;AACH;AACJ;;AAKb;;;AAcQ;AAIZ;;"}
package/Avatar/index.js CHANGED
@@ -26,13 +26,13 @@ const Avatar = React.forwardRef((_a, ref) => {
26
26
  display: "inline-flex",
27
27
  justifyContent: "center",
28
28
  alignItems: "center",
29
- bgcolor: "surface.light",
29
+ bgcolor: "default.base",
30
30
  radius: size,
31
31
  fontSize: (size / 3) * 2,
32
32
  width: size,
33
33
  height: size,
34
34
  userSelect: "none",
35
- color: "surface.contrast",
35
+ color: "default.contrast",
36
36
  '& svg': {
37
37
  fontSize: (size / 3) * 2,
38
38
  opacity: .6
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/Avatar/index.tsx"],"sourcesContent":["\"use client\"\nimport React, { useState } from 'react';\nimport { Tag, TagProps, TagComponentType, useInterface, useBreakpointPropsType, useBreakpointProps } from '@xanui/core';\nimport PersonIcon from '@xanui/icons/Person'\nimport Skeleton, { SkeletonProps } from '../Skeleton';\n\nexport type AvatarProps<T extends TagComponentType = \"img\"> = TagProps<T> & {\n size?: useBreakpointPropsType<number>;\n skeleton?: boolean;\n slotProps?: {\n skeleton?: Omit<SkeletonProps, \"height\" | \"width\" | \"loading\" | \"children\">\n }\n}\n\nconst Avatar = React.forwardRef(<T extends TagComponentType = \"img\">({ children, src, alt, skeleton, ...rest }: AvatarProps<T>, ref: any) => {\n const [faild, setFaild] = useState<boolean>()\n let [{ size, slotProps, ...props }] = useInterface<any>(\"Avatar\", rest, {})\n size ??= 36\n const _p: any = {}\n if (size) _p.size = size\n const p: any = useBreakpointProps(_p)\n size = p.size\n\n if (skeleton) {\n return <Skeleton\n {...slotProps?.skeleton}\n height={size}\n width={size}\n animation={\"wave\"}\n sx={{\n ...slotProps?.skeleton?.sx,\n borderRadius: size,\n }}\n />\n }\n\n if (faild === false || !src) {\n let t = alt?.charAt(0).toUpperCase() || (children || <PersonIcon />)\n return (\n <Tag\n component=\"div\"\n src={src}\n {...props}\n baseClass='avatar'\n sxr={{\n display: \"inline-flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n bgcolor: \"surface.light\",\n radius: size,\n fontSize: (size / 3) * 2,\n width: size,\n height: size,\n userSelect: \"none\",\n color: \"surface.contrast\",\n '& svg': {\n fontSize: (size / 3) * 2,\n opacity: .6\n }\n }}\n ref={ref}\n >{t}</Tag>\n )\n }\n return (\n <Tag\n component=\"img\"\n radius={size}\n width={size}\n height={size}\n objectFit=\"cover\"\n {...props}\n alt={alt}\n src={src}\n baseClass='avatar'\n onError={(e) => {\n setFaild(false)\n props.onError && props.onError(e as any)\n }}\n ref={ref}\n />\n )\n})\n\nexport default Avatar\n\n\n"],"names":[],"mappings":";;;;;;;;AAcA;;AAAqE;;;;;AAKjE;AAAU;AACV;AACA;;AAGI;;AAYJ;;AAEI;AAOY;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACA;AACH;AACJ;;AAKb;;;AAcQ;AAIZ;;"}
1
+ {"version":3,"file":"index.js","sources":["../../src/Avatar/index.tsx"],"sourcesContent":["\"use client\"\nimport React, { useState } from 'react';\nimport { Tag, TagProps, TagComponentType, useInterface, useBreakpointPropsType, useBreakpointProps } from '@xanui/core';\nimport PersonIcon from '@xanui/icons/Person'\nimport Skeleton, { SkeletonProps } from '../Skeleton';\n\nexport type AvatarProps<T extends TagComponentType = \"img\"> = TagProps<T> & {\n size?: useBreakpointPropsType<number>;\n skeleton?: boolean;\n slotProps?: {\n skeleton?: Omit<SkeletonProps, \"height\" | \"width\" | \"loading\" | \"children\">\n }\n}\n\nconst Avatar = React.forwardRef(<T extends TagComponentType = \"img\">({ children, src, alt, skeleton, ...rest }: AvatarProps<T>, ref: any) => {\n const [faild, setFaild] = useState<boolean>()\n let [{ size, slotProps, ...props }] = useInterface<any>(\"Avatar\", rest, {})\n size ??= 36\n const _p: any = {}\n if (size) _p.size = size\n const p: any = useBreakpointProps(_p)\n size = p.size\n\n if (skeleton) {\n return <Skeleton\n {...slotProps?.skeleton}\n height={size}\n width={size}\n animation={\"wave\"}\n sx={{\n ...slotProps?.skeleton?.sx,\n borderRadius: size,\n }}\n />\n }\n\n if (faild === false || !src) {\n let t = alt?.charAt(0).toUpperCase() || (children || <PersonIcon />)\n return (\n <Tag\n component=\"div\"\n src={src}\n {...props}\n baseClass='avatar'\n sxr={{\n display: \"inline-flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n bgcolor: \"default.base\",\n radius: size,\n fontSize: (size / 3) * 2,\n width: size,\n height: size,\n userSelect: \"none\",\n color: \"default.contrast\",\n '& svg': {\n fontSize: (size / 3) * 2,\n opacity: .6\n }\n }}\n ref={ref}\n >{t}</Tag>\n )\n }\n return (\n <Tag\n component=\"img\"\n radius={size}\n width={size}\n height={size}\n objectFit=\"cover\"\n {...props}\n alt={alt}\n src={src}\n baseClass='avatar'\n onError={(e) => {\n setFaild(false)\n props.onError && props.onError(e as any)\n }}\n ref={ref}\n />\n )\n})\n\nexport default Avatar\n\n\n"],"names":[],"mappings":";;;;;;;;AAcA;;AAAqE;;;;;AAKjE;AAAU;AACV;AACA;;AAGI;;AAYJ;;AAEI;AAOY;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACA;AACH;AACJ;;AAKb;;;AAcQ;AAIZ;;"}