x-ui-design 0.1.67 → 0.1.69
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.
- package/dist/esm/types/index.d.ts +1 -0
- package/dist/index.esm.js +2 -0
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/lib/index.ts +2 -0
- package/lib/styles/globals.css +44 -0
- package/package.json +1 -1
- package/rollup.config.js +3 -2
- package/rollup.sh +5 -0
- package/dist/index.css +0 -1
- package/dist/index.esm.css +0 -1
package/dist/index.esm.js
CHANGED
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../lib/helpers/index.ts","../lib/utils/index.ts","../lib/components/Button/Button.tsx"],"sourcesContent":["import { RuleType } from '../types';\n\nexport const parseValue = (value: RuleType): RuleType => {\n if (value === 'true') {\n return true;\n }\n\n if (value === 'false') {\n return false;\n }\n\n if (!isNaN(Number(value))) {\n return Number(value);\n }\n\n return value;\n};\n\nexport function createArray(length: number): number[] {\n return Array.from({ length }, (_, index) => index);\n}\n\nexport function clsx(...args: RuleType[]): string {\n return args\n .flatMap(arg => {\n if (!arg) {\n return [];\n }\n\n if (typeof arg === 'string') {\n return [arg];\n }\n\n if (typeof arg === 'number') {\n return [String(arg)];\n }\n\n if (Array.isArray(arg)) {\n return clsx(...arg).split(' ');\n }\n\n if (typeof arg === 'object') {\n return Object.entries(arg)\n .filter(([, value]) => Boolean(value))\n .map(([key]) => key);\n }\n\n return [];\n })\n .filter(Boolean)\n .join(' ');\n}\n","export const prefixClsForm = 'xUi-form';\nexport const prefixClsFormItem = 'xUi-form-item';\nexport const prefixClsEmpty = 'xUi-empty';\nexport const prefixClsInput = 'xUi-input';\nexport const prefixClsSelect = 'xUi-select';\nexport const prefixClsCheckbox = 'xUi-checkbox';\nexport const prefixClsRadio = 'xUi-radio';\nexport const prefixClsTextArea = 'xUi-textarea';\nexport const prefixClsUpload = 'xUi-upload';\nexport const prefixClsDatePicker = 'xUi-datepicker';\nexport const prefixClsRangePicker = 'xUi-rangepicker';\nexport const prefixClsTimePicker = 'xUi-timepicker';\nexport const prefixClsButton = 'xUi-button';\nexport const prefixClsSkeleton = 'xUi-skeleton';\n","import { ReactElement, useEffect, useMemo, useState } from 'react';\nimport { clsx } from '../../helpers';\nimport { ButtonProps } from '../../types/button';\nimport { prefixClsButton } from '../../utils';\nimport './style.css';\n\nconst ButtonComponent = ({\n type = 'default',\n variant = 'solid',\n color = 'default',\n shape = 'default',\n size = 'middle',\n htmlType = 'button',\n className,\n rootClassName,\n classNames: customClassNames = {},\n styles = {},\n prefixCls = prefixClsButton,\n icon,\n iconPosition = 'start',\n loading = false,\n disabled = false,\n ghost = false,\n danger = false,\n block = false,\n children,\n href,\n ...restProps\n}: ButtonProps): ReactElement => {\n const [innerLoading, setInnerLoading] = useState(false);\n\n useEffect(() => {\n if (typeof loading === 'boolean') {\n setInnerLoading(loading);\n } else if (typeof loading === 'object' && loading.delay) {\n const timeout = setTimeout(() => setInnerLoading(true), loading.delay);\n\n return () => clearTimeout(timeout);\n } else {\n setInnerLoading(!!loading);\n }\n }, [loading]);\n\n const classes = clsx(\n prefixCls,\n rootClassName,\n `${prefixCls}-${type}`,\n `${prefixCls}-${variant}`,\n `${prefixCls}-${color}`,\n `${prefixCls}-${shape}`,\n `${prefixCls}-size-${size}`,\n {\n [`${prefixCls}-block`]: block,\n [`${prefixCls}-ghost`]: ghost,\n [`${prefixCls}-danger`]: danger,\n [`${prefixCls}-loading`]: innerLoading,\n [`${prefixCls}-disabled`]: disabled\n },\n className\n );\n\n const iconNode = useMemo(() => {\n return innerLoading\n ? (typeof loading === 'object' && loading.icon) || (\n <span className={`${prefixCls}-spinner`}></span>\n )\n : icon;\n}, [icon, innerLoading, loading, prefixCls]);\n\n const content = useMemo(() => {\n return (\n <>\n {iconNode && iconPosition === 'start' && (\n <span\n className={clsx(`${prefixCls}-icon`, customClassNames.icon)}\n style={styles.icon}\n >\n {iconNode}\n </span>\n )}\n <span className={`${prefixCls}-content`}>{children}</span>\n {iconNode && iconPosition === 'end' && (\n <span\n className={clsx(`${prefixCls}-icon`, customClassNames.icon)}\n style={styles.icon}\n >\n {iconNode}\n </span>\n )}\n </>\n )\n }, [children, customClassNames.icon, iconNode, iconPosition, prefixCls, styles.icon]);\n\n const mergedDisabled = disabled || innerLoading;\n\n if (href) {\n return (\n <a\n className={classes}\n href={mergedDisabled ? undefined : href}\n aria-disabled={mergedDisabled}\n >\n {content}\n </a>\n );\n }\n\n return (\n <button\n type={htmlType}\n className={classes}\n disabled={mergedDisabled}\n {...restProps}\n >\n {content}\n </button>\n );\n};\n\nexport default ButtonComponent"],"names":["clsx","args","flatMap","arg","String","Array","isArray","split","Object","entries","filter","value","Boolean","map","key","join","prefixClsButton","ButtonComponent","type","variant","color","shape","size","htmlType","className","rootClassName","classNames","customClassNames","styles","prefixCls","icon","iconPosition","loading","disabled","ghost","danger","block","children","href","restProps","innerLoading","setInnerLoading","useState","useEffect","delay","timeout","setTimeout","clearTimeout","classes","iconNode","useMemo","_jsx","content","_jsxs","_Fragment","style","mergedDisabled","undefined"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../lib/helpers/index.ts","../lib/utils/index.ts","../lib/components/Button/Button.tsx"],"sourcesContent":["import { RuleType } from '../types';\n\nexport const parseValue = (value: RuleType): RuleType => {\n if (value === 'true') {\n return true;\n }\n\n if (value === 'false') {\n return false;\n }\n\n if (!isNaN(Number(value))) {\n return Number(value);\n }\n\n return value;\n};\n\nexport function createArray(length: number): number[] {\n return Array.from({ length }, (_, index) => index);\n}\n\nexport function clsx(...args: RuleType[]): string {\n return args\n .flatMap(arg => {\n if (!arg) {\n return [];\n }\n\n if (typeof arg === 'string') {\n return [arg];\n }\n\n if (typeof arg === 'number') {\n return [String(arg)];\n }\n\n if (Array.isArray(arg)) {\n return clsx(...arg).split(' ');\n }\n\n if (typeof arg === 'object') {\n return Object.entries(arg)\n .filter(([, value]) => Boolean(value))\n .map(([key]) => key);\n }\n\n return [];\n })\n .filter(Boolean)\n .join(' ');\n}\n","export const prefixClsForm = 'xUi-form';\nexport const prefixClsFormItem = 'xUi-form-item';\nexport const prefixClsEmpty = 'xUi-empty';\nexport const prefixClsInput = 'xUi-input';\nexport const prefixClsSelect = 'xUi-select';\nexport const prefixClsCheckbox = 'xUi-checkbox';\nexport const prefixClsRadio = 'xUi-radio';\nexport const prefixClsTextArea = 'xUi-textarea';\nexport const prefixClsUpload = 'xUi-upload';\nexport const prefixClsDatePicker = 'xUi-datepicker';\nexport const prefixClsRangePicker = 'xUi-rangepicker';\nexport const prefixClsTimePicker = 'xUi-timepicker';\nexport const prefixClsButton = 'xUi-button';\nexport const prefixClsSkeleton = 'xUi-skeleton';\n","import { ReactElement, useEffect, useMemo, useState } from 'react';\nimport { clsx } from '../../helpers';\nimport { ButtonProps } from '../../types/button';\nimport { prefixClsButton } from '../../utils';\nimport './style.css';\n\nconst ButtonComponent = ({\n type = 'default',\n variant = 'solid',\n color = 'default',\n shape = 'default',\n size = 'middle',\n htmlType = 'button',\n className,\n rootClassName,\n classNames: customClassNames = {},\n styles = {},\n prefixCls = prefixClsButton,\n icon,\n iconPosition = 'start',\n loading = false,\n disabled = false,\n ghost = false,\n danger = false,\n block = false,\n children,\n href,\n ...restProps\n}: ButtonProps): ReactElement => {\n const [innerLoading, setInnerLoading] = useState(false);\n\n useEffect(() => {\n if (typeof loading === 'boolean') {\n setInnerLoading(loading);\n } else if (typeof loading === 'object' && loading.delay) {\n const timeout = setTimeout(() => setInnerLoading(true), loading.delay);\n\n return () => clearTimeout(timeout);\n } else {\n setInnerLoading(!!loading);\n }\n }, [loading]);\n\n const classes = clsx(\n prefixCls,\n rootClassName,\n `${prefixCls}-${type}`,\n `${prefixCls}-${variant}`,\n `${prefixCls}-${color}`,\n `${prefixCls}-${shape}`,\n `${prefixCls}-size-${size}`,\n {\n [`${prefixCls}-block`]: block,\n [`${prefixCls}-ghost`]: ghost,\n [`${prefixCls}-danger`]: danger,\n [`${prefixCls}-loading`]: innerLoading,\n [`${prefixCls}-disabled`]: disabled\n },\n className\n );\n\n const iconNode = useMemo(() => {\n return innerLoading\n ? (typeof loading === 'object' && loading.icon) || (\n <span className={`${prefixCls}-spinner`}></span>\n )\n : icon;\n}, [icon, innerLoading, loading, prefixCls]);\n\n const content = useMemo(() => {\n return (\n <>\n {iconNode && iconPosition === 'start' && (\n <span\n className={clsx(`${prefixCls}-icon`, customClassNames.icon)}\n style={styles.icon}\n >\n {iconNode}\n </span>\n )}\n <span className={`${prefixCls}-content`}>{children}</span>\n {iconNode && iconPosition === 'end' && (\n <span\n className={clsx(`${prefixCls}-icon`, customClassNames.icon)}\n style={styles.icon}\n >\n {iconNode}\n </span>\n )}\n </>\n )\n }, [children, customClassNames.icon, iconNode, iconPosition, prefixCls, styles.icon]);\n\n const mergedDisabled = disabled || innerLoading;\n\n if (href) {\n return (\n <a\n className={classes}\n href={mergedDisabled ? undefined : href}\n aria-disabled={mergedDisabled}\n >\n {content}\n </a>\n );\n }\n\n return (\n <button\n type={htmlType}\n className={classes}\n disabled={mergedDisabled}\n {...restProps}\n >\n {content}\n </button>\n );\n};\n\nexport default ButtonComponent"],"names":["clsx","args","flatMap","arg","String","Array","isArray","split","Object","entries","filter","value","Boolean","map","key","join","prefixClsButton","ButtonComponent","type","variant","color","shape","size","htmlType","className","rootClassName","classNames","customClassNames","styles","prefixCls","icon","iconPosition","loading","disabled","ghost","danger","block","children","href","restProps","innerLoading","setInnerLoading","useState","useEffect","delay","timeout","setTimeout","clearTimeout","classes","iconNode","useMemo","_jsx","content","_jsxs","_Fragment","style","mergedDisabled","undefined"],"mappings":"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"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../lib/helpers/index.ts","../lib/utils/index.ts","../lib/components/Button/Button.tsx"],"sourcesContent":["import { RuleType } from '../types';\n\nexport const parseValue = (value: RuleType): RuleType => {\n if (value === 'true') {\n return true;\n }\n\n if (value === 'false') {\n return false;\n }\n\n if (!isNaN(Number(value))) {\n return Number(value);\n }\n\n return value;\n};\n\nexport function createArray(length: number): number[] {\n return Array.from({ length }, (_, index) => index);\n}\n\nexport function clsx(...args: RuleType[]): string {\n return args\n .flatMap(arg => {\n if (!arg) {\n return [];\n }\n\n if (typeof arg === 'string') {\n return [arg];\n }\n\n if (typeof arg === 'number') {\n return [String(arg)];\n }\n\n if (Array.isArray(arg)) {\n return clsx(...arg).split(' ');\n }\n\n if (typeof arg === 'object') {\n return Object.entries(arg)\n .filter(([, value]) => Boolean(value))\n .map(([key]) => key);\n }\n\n return [];\n })\n .filter(Boolean)\n .join(' ');\n}\n","export const prefixClsForm = 'xUi-form';\nexport const prefixClsFormItem = 'xUi-form-item';\nexport const prefixClsEmpty = 'xUi-empty';\nexport const prefixClsInput = 'xUi-input';\nexport const prefixClsSelect = 'xUi-select';\nexport const prefixClsCheckbox = 'xUi-checkbox';\nexport const prefixClsRadio = 'xUi-radio';\nexport const prefixClsTextArea = 'xUi-textarea';\nexport const prefixClsUpload = 'xUi-upload';\nexport const prefixClsDatePicker = 'xUi-datepicker';\nexport const prefixClsRangePicker = 'xUi-rangepicker';\nexport const prefixClsTimePicker = 'xUi-timepicker';\nexport const prefixClsButton = 'xUi-button';\nexport const prefixClsSkeleton = 'xUi-skeleton';\n","import { ReactElement, useEffect, useMemo, useState } from 'react';\nimport { clsx } from '../../helpers';\nimport { ButtonProps } from '../../types/button';\nimport { prefixClsButton } from '../../utils';\nimport './style.css';\n\nconst ButtonComponent = ({\n type = 'default',\n variant = 'solid',\n color = 'default',\n shape = 'default',\n size = 'middle',\n htmlType = 'button',\n className,\n rootClassName,\n classNames: customClassNames = {},\n styles = {},\n prefixCls = prefixClsButton,\n icon,\n iconPosition = 'start',\n loading = false,\n disabled = false,\n ghost = false,\n danger = false,\n block = false,\n children,\n href,\n ...restProps\n}: ButtonProps): ReactElement => {\n const [innerLoading, setInnerLoading] = useState(false);\n\n useEffect(() => {\n if (typeof loading === 'boolean') {\n setInnerLoading(loading);\n } else if (typeof loading === 'object' && loading.delay) {\n const timeout = setTimeout(() => setInnerLoading(true), loading.delay);\n\n return () => clearTimeout(timeout);\n } else {\n setInnerLoading(!!loading);\n }\n }, [loading]);\n\n const classes = clsx(\n prefixCls,\n rootClassName,\n `${prefixCls}-${type}`,\n `${prefixCls}-${variant}`,\n `${prefixCls}-${color}`,\n `${prefixCls}-${shape}`,\n `${prefixCls}-size-${size}`,\n {\n [`${prefixCls}-block`]: block,\n [`${prefixCls}-ghost`]: ghost,\n [`${prefixCls}-danger`]: danger,\n [`${prefixCls}-loading`]: innerLoading,\n [`${prefixCls}-disabled`]: disabled\n },\n className\n );\n\n const iconNode = useMemo(() => {\n return innerLoading\n ? (typeof loading === 'object' && loading.icon) || (\n <span className={`${prefixCls}-spinner`}></span>\n )\n : icon;\n}, [icon, innerLoading, loading, prefixCls]);\n\n const content = useMemo(() => {\n return (\n <>\n {iconNode && iconPosition === 'start' && (\n <span\n className={clsx(`${prefixCls}-icon`, customClassNames.icon)}\n style={styles.icon}\n >\n {iconNode}\n </span>\n )}\n <span className={`${prefixCls}-content`}>{children}</span>\n {iconNode && iconPosition === 'end' && (\n <span\n className={clsx(`${prefixCls}-icon`, customClassNames.icon)}\n style={styles.icon}\n >\n {iconNode}\n </span>\n )}\n </>\n )\n }, [children, customClassNames.icon, iconNode, iconPosition, prefixCls, styles.icon]);\n\n const mergedDisabled = disabled || innerLoading;\n\n if (href) {\n return (\n <a\n className={classes}\n href={mergedDisabled ? undefined : href}\n aria-disabled={mergedDisabled}\n >\n {content}\n </a>\n );\n }\n\n return (\n <button\n type={htmlType}\n className={classes}\n disabled={mergedDisabled}\n {...restProps}\n >\n {content}\n </button>\n );\n};\n\nexport default ButtonComponent"],"names":["clsx","args","flatMap","arg","String","Array","isArray","split","Object","entries","filter","value","Boolean","map","key","join","prefixClsButton","ButtonComponent","type","variant","color","shape","size","htmlType","className","rootClassName","classNames","customClassNames","styles","prefixCls","icon","iconPosition","loading","disabled","ghost","danger","block","children","href","restProps","innerLoading","setInnerLoading","useState","useEffect","delay","timeout","setTimeout","clearTimeout","classes","iconNode","useMemo","_jsx","content","_jsxs","_Fragment","style","mergedDisabled","undefined"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../lib/helpers/index.ts","../lib/utils/index.ts","../lib/components/Button/Button.tsx"],"sourcesContent":["import { RuleType } from '../types';\n\nexport const parseValue = (value: RuleType): RuleType => {\n if (value === 'true') {\n return true;\n }\n\n if (value === 'false') {\n return false;\n }\n\n if (!isNaN(Number(value))) {\n return Number(value);\n }\n\n return value;\n};\n\nexport function createArray(length: number): number[] {\n return Array.from({ length }, (_, index) => index);\n}\n\nexport function clsx(...args: RuleType[]): string {\n return args\n .flatMap(arg => {\n if (!arg) {\n return [];\n }\n\n if (typeof arg === 'string') {\n return [arg];\n }\n\n if (typeof arg === 'number') {\n return [String(arg)];\n }\n\n if (Array.isArray(arg)) {\n return clsx(...arg).split(' ');\n }\n\n if (typeof arg === 'object') {\n return Object.entries(arg)\n .filter(([, value]) => Boolean(value))\n .map(([key]) => key);\n }\n\n return [];\n })\n .filter(Boolean)\n .join(' ');\n}\n","export const prefixClsForm = 'xUi-form';\nexport const prefixClsFormItem = 'xUi-form-item';\nexport const prefixClsEmpty = 'xUi-empty';\nexport const prefixClsInput = 'xUi-input';\nexport const prefixClsSelect = 'xUi-select';\nexport const prefixClsCheckbox = 'xUi-checkbox';\nexport const prefixClsRadio = 'xUi-radio';\nexport const prefixClsTextArea = 'xUi-textarea';\nexport const prefixClsUpload = 'xUi-upload';\nexport const prefixClsDatePicker = 'xUi-datepicker';\nexport const prefixClsRangePicker = 'xUi-rangepicker';\nexport const prefixClsTimePicker = 'xUi-timepicker';\nexport const prefixClsButton = 'xUi-button';\nexport const prefixClsSkeleton = 'xUi-skeleton';\n","import { ReactElement, useEffect, useMemo, useState } from 'react';\nimport { clsx } from '../../helpers';\nimport { ButtonProps } from '../../types/button';\nimport { prefixClsButton } from '../../utils';\nimport './style.css';\n\nconst ButtonComponent = ({\n type = 'default',\n variant = 'solid',\n color = 'default',\n shape = 'default',\n size = 'middle',\n htmlType = 'button',\n className,\n rootClassName,\n classNames: customClassNames = {},\n styles = {},\n prefixCls = prefixClsButton,\n icon,\n iconPosition = 'start',\n loading = false,\n disabled = false,\n ghost = false,\n danger = false,\n block = false,\n children,\n href,\n ...restProps\n}: ButtonProps): ReactElement => {\n const [innerLoading, setInnerLoading] = useState(false);\n\n useEffect(() => {\n if (typeof loading === 'boolean') {\n setInnerLoading(loading);\n } else if (typeof loading === 'object' && loading.delay) {\n const timeout = setTimeout(() => setInnerLoading(true), loading.delay);\n\n return () => clearTimeout(timeout);\n } else {\n setInnerLoading(!!loading);\n }\n }, [loading]);\n\n const classes = clsx(\n prefixCls,\n rootClassName,\n `${prefixCls}-${type}`,\n `${prefixCls}-${variant}`,\n `${prefixCls}-${color}`,\n `${prefixCls}-${shape}`,\n `${prefixCls}-size-${size}`,\n {\n [`${prefixCls}-block`]: block,\n [`${prefixCls}-ghost`]: ghost,\n [`${prefixCls}-danger`]: danger,\n [`${prefixCls}-loading`]: innerLoading,\n [`${prefixCls}-disabled`]: disabled\n },\n className\n );\n\n const iconNode = useMemo(() => {\n return innerLoading\n ? (typeof loading === 'object' && loading.icon) || (\n <span className={`${prefixCls}-spinner`}></span>\n )\n : icon;\n}, [icon, innerLoading, loading, prefixCls]);\n\n const content = useMemo(() => {\n return (\n <>\n {iconNode && iconPosition === 'start' && (\n <span\n className={clsx(`${prefixCls}-icon`, customClassNames.icon)}\n style={styles.icon}\n >\n {iconNode}\n </span>\n )}\n <span className={`${prefixCls}-content`}>{children}</span>\n {iconNode && iconPosition === 'end' && (\n <span\n className={clsx(`${prefixCls}-icon`, customClassNames.icon)}\n style={styles.icon}\n >\n {iconNode}\n </span>\n )}\n </>\n )\n }, [children, customClassNames.icon, iconNode, iconPosition, prefixCls, styles.icon]);\n\n const mergedDisabled = disabled || innerLoading;\n\n if (href) {\n return (\n <a\n className={classes}\n href={mergedDisabled ? undefined : href}\n aria-disabled={mergedDisabled}\n >\n {content}\n </a>\n );\n }\n\n return (\n <button\n type={htmlType}\n className={classes}\n disabled={mergedDisabled}\n {...restProps}\n >\n {content}\n </button>\n );\n};\n\nexport default ButtonComponent"],"names":["clsx","args","flatMap","arg","String","Array","isArray","split","Object","entries","filter","value","Boolean","map","key","join","prefixClsButton","ButtonComponent","type","variant","color","shape","size","htmlType","className","rootClassName","classNames","customClassNames","styles","prefixCls","icon","iconPosition","loading","disabled","ghost","danger","block","children","href","restProps","innerLoading","setInnerLoading","useState","useEffect","delay","timeout","setTimeout","clearTimeout","classes","iconNode","useMemo","_jsx","content","_jsxs","_Fragment","style","mergedDisabled","undefined"],"mappings":"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"}
|
package/lib/index.ts
CHANGED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
/* MAIN */
|
|
3
|
+
--xui-color-hover: #f5f5f5;
|
|
4
|
+
--xui-color-disabled: #e6e6e6;
|
|
5
|
+
|
|
6
|
+
--xui-primary-color: #1677ff;
|
|
7
|
+
--xui-primary-color-light: #40a9ff;
|
|
8
|
+
|
|
9
|
+
--xui-text-color: rgba(0, 0, 0, 0.88);
|
|
10
|
+
--xui-text-color-light: rgba(0, 0, 0, 0.5);
|
|
11
|
+
|
|
12
|
+
--xui-error-color: #ff4d4f;
|
|
13
|
+
--xui-error-color-light: #ff6668;
|
|
14
|
+
--xui-success-color: #52c41a;
|
|
15
|
+
|
|
16
|
+
--xui-background-color: #ffffff;
|
|
17
|
+
|
|
18
|
+
/* FONTS */
|
|
19
|
+
--xui-font-size-xs: 12px;
|
|
20
|
+
--xui-font-size-sm: 14px;
|
|
21
|
+
--xui-font-size-md: 14px;
|
|
22
|
+
--xui-font-size-lg: 16px;
|
|
23
|
+
|
|
24
|
+
/* BORDERS */
|
|
25
|
+
--xui-border-radius-sm: 4px;
|
|
26
|
+
--xui-border-radius-md: 4px;
|
|
27
|
+
--xui-border-radius-lg: 6px;
|
|
28
|
+
|
|
29
|
+
--xui-border-color: #d9d9d9;
|
|
30
|
+
|
|
31
|
+
/* SELECT */
|
|
32
|
+
--xui-select-primary-color: var(--xui-primary-color);
|
|
33
|
+
--xui-select-background-color: var(--xui-background-color);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
html {
|
|
37
|
+
font-family: sans-serif;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.globalEllipsis {
|
|
41
|
+
text-overflow: ellipsis;
|
|
42
|
+
overflow: hidden;
|
|
43
|
+
white-space: nowrap;
|
|
44
|
+
}
|
package/package.json
CHANGED
package/rollup.config.js
CHANGED
|
@@ -15,7 +15,7 @@ const packageJson = require('./package.json');
|
|
|
15
15
|
export default [
|
|
16
16
|
{
|
|
17
17
|
input: 'lib/index.ts',
|
|
18
|
-
external: ['react', 'react-dom'],
|
|
18
|
+
external: ['react', 'react-dom', /\.css/],
|
|
19
19
|
output: [
|
|
20
20
|
{
|
|
21
21
|
file: packageJson.main,
|
|
@@ -44,7 +44,8 @@ export default [
|
|
|
44
44
|
presets: ['@babel/preset-react', '@babel/preset-typescript'],
|
|
45
45
|
}),
|
|
46
46
|
postcss({
|
|
47
|
-
|
|
47
|
+
inject: true,
|
|
48
|
+
extract: false,
|
|
48
49
|
minimize: true,
|
|
49
50
|
modules: false
|
|
50
51
|
})
|
package/rollup.sh
ADDED
package/dist/index.css
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.xUi-button{border:1px solid transparent;border-radius:6px;cursor:pointer;font-weight:400;line-height:1.5715;transition:all .3s ease;user-select:none;vertical-align:middle;white-space:nowrap}.xUi-button,.xUi-button-content,.xUi-button-icon{align-items:center;display:inline-flex;justify-content:center}.xUi-button-icon{line-height:0;margin-right:.5em}.xUi-button-icon:last-child{margin-left:.5em;margin-right:0}.xUi-button-spinner{animation:xUi-spin 1s linear infinite;border:1px solid transparent;border-radius:50%;border-top:1px solid var(--xui-text-color);height:1em;width:1em}@keyframes xUi-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.xUi-button-size-small{font-size:12px;height:24px;padding:4px 12px}.xUi-button-size-middle{font-size:14px;height:32px;padding:0 16px}.xUi-button-size-large{font-size:16px;height:40px;padding:8px 20px}.xUi-button-circle{border-radius:50%;justify-content:center;padding:0}.xUi-button-circle.xUi-button-size-small{height:24px;width:24px}.xUi-button-circle.xUi-button-size-large{height:40px;width:40px}.xUi-button-round{border-radius:9999px}.xUi-button-default{background-color:#fff;border-color:var(--xui-border-color);color:rgba(0,0,0,.85)}.xUi-button-default:hover{border-color:var(--xui-primary-color);color:var(--xui-primary-color)}.xUi-button-primary{background-color:var(--xui-primary-color);border-color:var(--xui-primary-color);color:#fff}.xUi-button-primary:hover{background-color:var(--xui-primary-color-light);border-color:var(--xui-primary-color-light);color:#fff}.xUi-button-dashed{background-color:#fff;border-color:var(--xui-border-color);border-style:dashed;color:rgba(0,0,0,.85)}.xUi-button-dashed:hover{border-color:var(--xui-primary-color);color:var(--xui-primary-color)}.xUi-button-text{background-color:transparent;border-color:transparent!important;color:rgba(0,0,0,.88)}.xUi-button-text:hover{background-color:rgba(0,0,0,.04);border-color:transparent;color:rgba(0,0,0,.88)}.xUi-button-link{background-color:transparent;border-color:transparent!important;color:var(--xui-primary-color)}.xUi-button-link:hover{border-color:transparent;color:var(--xui-primary-color-light)}.xUi-button-outlined{color:#fff}.xUi-button-filled,.xUi-button-outlined{background-color:transparent;border-color:var(--xui-border-color)}.xUi-button-filled{color:var(--xui-text-color)}.xUi-button-danger{background-color:transparent;border-color:var(--xui-error-color);color:var(--xui-error-color)}.xUi-button-danger:hover{border-color:var(--xui-error-color-light);color:var(--xui-error-color-light)}.xUi-button-ghost{opacity:0}.xUi-button-ghost:hover{opacity:1}.xUi-button-block{display:flex;width:100%}.xUi-button-disabled,.xUi-button-loading{background-color:var(--xui-color-disabled);border-color:var(--xui-border-color);color:var(--xui-text-color);cursor:not-allowed;opacity:.5;pointer-events:none}.xUi-button-loading{background-color:transparent}
|
package/dist/index.esm.css
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.xUi-button{border:1px solid transparent;border-radius:6px;cursor:pointer;font-weight:400;line-height:1.5715;transition:all .3s ease;user-select:none;vertical-align:middle;white-space:nowrap}.xUi-button,.xUi-button-content,.xUi-button-icon{align-items:center;display:inline-flex;justify-content:center}.xUi-button-icon{line-height:0;margin-right:.5em}.xUi-button-icon:last-child{margin-left:.5em;margin-right:0}.xUi-button-spinner{animation:xUi-spin 1s linear infinite;border:1px solid transparent;border-radius:50%;border-top:1px solid var(--xui-text-color);height:1em;width:1em}@keyframes xUi-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.xUi-button-size-small{font-size:12px;height:24px;padding:4px 12px}.xUi-button-size-middle{font-size:14px;height:32px;padding:0 16px}.xUi-button-size-large{font-size:16px;height:40px;padding:8px 20px}.xUi-button-circle{border-radius:50%;justify-content:center;padding:0}.xUi-button-circle.xUi-button-size-small{height:24px;width:24px}.xUi-button-circle.xUi-button-size-large{height:40px;width:40px}.xUi-button-round{border-radius:9999px}.xUi-button-default{background-color:#fff;border-color:var(--xui-border-color);color:rgba(0,0,0,.85)}.xUi-button-default:hover{border-color:var(--xui-primary-color);color:var(--xui-primary-color)}.xUi-button-primary{background-color:var(--xui-primary-color);border-color:var(--xui-primary-color);color:#fff}.xUi-button-primary:hover{background-color:var(--xui-primary-color-light);border-color:var(--xui-primary-color-light);color:#fff}.xUi-button-dashed{background-color:#fff;border-color:var(--xui-border-color);border-style:dashed;color:rgba(0,0,0,.85)}.xUi-button-dashed:hover{border-color:var(--xui-primary-color);color:var(--xui-primary-color)}.xUi-button-text{background-color:transparent;border-color:transparent!important;color:rgba(0,0,0,.88)}.xUi-button-text:hover{background-color:rgba(0,0,0,.04);border-color:transparent;color:rgba(0,0,0,.88)}.xUi-button-link{background-color:transparent;border-color:transparent!important;color:var(--xui-primary-color)}.xUi-button-link:hover{border-color:transparent;color:var(--xui-primary-color-light)}.xUi-button-outlined{color:#fff}.xUi-button-filled,.xUi-button-outlined{background-color:transparent;border-color:var(--xui-border-color)}.xUi-button-filled{color:var(--xui-text-color)}.xUi-button-danger{background-color:transparent;border-color:var(--xui-error-color);color:var(--xui-error-color)}.xUi-button-danger:hover{border-color:var(--xui-error-color-light);color:var(--xui-error-color-light)}.xUi-button-ghost{opacity:0}.xUi-button-ghost:hover{opacity:1}.xUi-button-block{display:flex;width:100%}.xUi-button-disabled,.xUi-button-loading{background-color:var(--xui-color-disabled);border-color:var(--xui-border-color);color:var(--xui-text-color);cursor:not-allowed;opacity:.5;pointer-events:none}.xUi-button-loading{background-color:transparent}
|