@jinmi/ui 6.0.1 → 6.0.2
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/es/ActionIcon/ActionIcon.mjs.map +1 -1
- package/es/Avatar/Avatar.mjs.map +1 -1
- package/es/Button/Button.mjs.map +1 -1
- package/es/Checkbox/style.mjs +7 -6
- package/es/Checkbox/style.mjs.map +1 -1
- package/es/Modal/Modal.mjs.map +1 -1
- package/es/Segmented/Segmented.mjs.map +1 -1
- package/es/Select/Select.mjs.map +1 -1
- package/es/Skeleton/Skeleton.mjs.map +1 -1
- package/es/Skeleton/SkeletonAvatar.mjs.map +1 -1
- package/es/Skeleton/SkeletonBlock.mjs.map +1 -1
- package/es/Skeleton/SkeletonButton.mjs.map +1 -1
- package/es/Skeleton/SkeletonParagraph.mjs.map +1 -1
- package/es/Skeleton/SkeletonTitle.mjs.map +1 -1
- package/es/Tabs/Tabs.mjs.map +1 -1
- package/es/Tag/Tag.mjs.map +1 -1
- package/es/Text/Text.mjs.map +1 -1
- package/es/ThemeProvider/GlobalStyle/antdOverride.mjs +6 -6
- package/es/ThemeProvider/GlobalStyle/antdOverride.mjs.map +1 -1
- package/es/ThemeProvider/GlobalStyle/essential.mjs +91 -84
- package/es/ThemeProvider/GlobalStyle/essential.mjs.map +1 -1
- package/es/ThemeProvider/GlobalStyle/global.mjs.map +1 -1
- package/es/ThemeProvider/ThemeProvider.mjs +1 -1
- package/es/awesome/Hero/Hero.mjs.map +1 -1
- package/es/base-ui/Anchor/style.mjs.map +1 -1
- package/es/base-ui/Button/SplitButton.mjs +5 -4
- package/es/base-ui/Button/SplitButton.mjs.map +1 -1
- package/es/base-ui/Button/style.mjs +10 -9
- package/es/base-ui/Button/style.mjs.map +1 -1
- package/es/base-ui/Carousel/style.mjs.map +1 -1
- package/es/base-ui/Checkbox/style.mjs +4 -3
- package/es/base-ui/Checkbox/style.mjs.map +1 -1
- package/es/base-ui/DraggablePanel/style.mjs.map +1 -1
- package/es/base-ui/Form/index.mjs.map +1 -1
- package/es/base-ui/FormKit/Field.mjs.map +1 -1
- package/es/base-ui/FormKit/context.mjs.map +1 -1
- package/es/base-ui/FormKit/instance.mjs.map +1 -1
- package/es/base-ui/Input/style.d.mts +1 -1
- package/es/base-ui/Progress/Progress.mjs +2 -1
- package/es/base-ui/Progress/Progress.mjs.map +1 -1
- package/es/base-ui/Progress/style.mjs +2 -1
- package/es/base-ui/Progress/style.mjs.map +1 -1
- package/es/base-ui/Radio/style.mjs +4 -3
- package/es/base-ui/Radio/style.mjs.map +1 -1
- package/es/base-ui/Rate/style.mjs.map +1 -1
- package/es/base-ui/Slider/style.mjs +3 -2
- package/es/base-ui/Slider/style.mjs.map +1 -1
- package/es/base-ui/Switch/Switch.mjs +3 -2
- package/es/base-ui/Switch/Switch.mjs.map +1 -1
- package/es/base-ui/Switch/style.mjs +4 -3
- package/es/base-ui/Switch/style.mjs.map +1 -1
- package/es/base-ui/Upload/style.mjs.map +1 -1
- package/es/color/colors/primary.d.mts +4 -2
- package/es/color/colors/primary.mjs +55 -53
- package/es/color/colors/primary.mjs.map +1 -1
- package/es/eslint/index.mjs.map +1 -1
- package/es/index.d.mts +3 -2
- package/es/index.mjs +3 -2
- package/es/static-css/baseline.mjs.map +1 -1
- package/es/static-css/scan.mjs.map +1 -1
- package/es/styles/index.d.mts +3 -2
- package/es/styles/index.mjs +3 -2
- package/es/styles/inkCssVar.d.mts +15 -0
- package/es/styles/inkCssVar.mjs +16 -0
- package/es/styles/inkCssVar.mjs.map +1 -0
- package/es/styles/theme/antdTheme.mjs +18 -2
- package/es/styles/theme/antdTheme.mjs.map +1 -1
- package/es/styles/theme/customToken.d.mts +20 -1
- package/es/styles/theme/customToken.mjs +21 -1
- package/es/styles/theme/customToken.mjs.map +1 -1
- package/es/styles/theme/token/dark.mjs.map +1 -1
- package/es/styles/theme/token/light.mjs.map +1 -1
- package/es/styles/theme/token/shadow.mjs.map +1 -1
- package/es/types/customToken.d.mts +6 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Field.mjs","names":["formMessages"],"sources":["../../../src/base-ui/FormKit/Field.tsx"],"sourcesContent":["'use client';\r\n\r\nimport { cx, useResponsive } from 'antd-style';\r\nimport {\r\n cloneElement,\r\n isValidElement,\r\n memo,\r\n type ReactElement,\r\n type ReactNode,\r\n useCallback,\r\n useEffect,\r\n useId,\r\n useRef,\r\n} from 'react';\r\n\r\nimport formMessages from '@/i18n/resources/en/form';\r\nimport { useTranslation } from '@/i18n/useTranslation';\r\n\r\nimport FormDivider from '../Form/components/FormDivider';\r\nimport FormTitle from '../Form/components/FormTitle';\r\nimport { fieldStyles, fieldVariants } from '../Form/style';\r\nimport { resolveBinding } from './binding';\r\nimport { useFormKitContext } from './context';\r\nimport type { FieldValidator } from './engine/types';\r\nimport { getInternals } from './instance';\r\nimport { toFieldValidator } from './schema';\r\nimport { fieldKitStyles } from './style';\r\nimport type { FieldRenderProps, FormFieldProps, FormValues } from './type';\r\nimport { useStoreSelector } from './useStoreSelector';\r\n\r\nconst isEmpty = (value: unknown) =>\r\n value === undefined ||\r\n value === null ||\r\n value === '' ||\r\n (Array.isArray(value) && value.length === 0);\r\n\r\ntype ControlProps = Pick<\r\n FormFieldProps,\r\n | 'bare'\r\n | 'children'\r\n | 'deps'\r\n | 'emptyValue'\r\n | 'getValue'\r\n | 'name'\r\n | 'render'\r\n | 'required'\r\n | 'trigger'\r\n | 'validate'\r\n | 'validateDebounce'\r\n | 'validateOn'\r\n | 'valueProp'\r\n> & { id: string; name: string };\r\n\r\nconst FieldControl = memo<ControlProps>(\r\n ({\r\n bare,\r\n children,\r\n deps,\r\n emptyValue,\r\n getValue,\r\n id,\r\n name,\r\n render,\r\n required,\r\n trigger,\r\n validate,\r\n validateDebounce,\r\n validateOn,\r\n valueProp,\r\n }) => {\r\n const { form } = useFormKitContext();\r\n const { engine, validateOn: formValidateOn } = getInternals(form);\r\n const { t } = useTranslation(formMessages);\r\n const errorId = `${id}-error`;\r\n\r\n const requiredMessage = typeof required === 'string' ? required : t('form.required');\r\n const fieldValidator = validate ? toFieldValidator(validate) : undefined;\r\n const validatorRef = useRef<FieldValidator | undefined>(undefined);\r\n validatorRef.current = async (value, values) => {\r\n if (required && isEmpty(value)) return requiredMessage;\r\n return fieldValidator?.(value, values);\r\n };\r\n const hasValidator = Boolean(required || validate);\r\n const depsKey = deps?.join('\\u0000');\r\n\r\n useEffect(\r\n () =>\r\n engine.registerField(name, {\r\n debounceMs: validateDebounce,\r\n deps: depsKey ? depsKey.split('\\u0000') : undefined,\r\n validate: hasValidator\r\n ? (value, values) => validatorRef.current!(value, values)\r\n : undefined,\r\n validateOn: validateOn ?? formValidateOn,\r\n }),\r\n [engine, name, hasValidator, depsKey, validateDebounce, validateOn, formValidateOn],\r\n );\r\n\r\n const field = useStoreSelector(engine, (e) => e.getField(name));\r\n\r\n const child = isValidElement(children) ? (children as ReactElement<any>) : undefined;\r\n const binding = child\r\n ? resolveBinding(child, { emptyValue, getValue, trigger, valueProp })\r\n : undefined;\r\n const handlerRef = useRef({ binding, childProps: child?.props as Record<string, any> });\r\n handlerRef.current = { binding, childProps: child?.props as Record<string, any> };\r\n\r\n const onChange = useCallback(\r\n (...args: unknown[]) => {\r\n const { binding: current, childProps } = handlerRef.current;\r\n if (current) childProps?.[current.trigger]?.(...args);\r\n const next = current ? current.getValue(...args) : args[0];\r\n engine.setValue(name, next, 'user');\r\n },\r\n [engine, name],\r\n );\r\n const onBlur = useCallback(\r\n (...args: unknown[]) => {\r\n handlerRef.current.childProps?.onBlur?.(...args);\r\n engine.blurField(name);\r\n },\r\n [engine, name],\r\n );\r\n\r\n const warnedRef = useRef(false);\r\n useEffect(() => {\r\n if (render || child || warnedRef.current || process.env.NODE_ENV === 'production') return;\r\n warnedRef.current = true;\r\n console.warn(\r\n `[@jinmi/ui/base-ui/form] Form.Field \"${name}\" needs a single element child or a render prop; nothing was bound.`,\r\n );\r\n }, [render, child, name]);\r\n\r\n const errorNode =\r\n field.error && !bare ? (\r\n <div className={fieldStyles.error} id={errorId}>\r\n {field.error}\r\n </div>\r\n ) : null;\r\n\r\n if (render) {\r\n const renderProps: FieldRenderProps = {\r\n error: field.error,\r\n name,\r\n onBlur,\r\n onChange,\r\n touched: field.touched,\r\n validating: field.validating,\r\n value: field.value,\r\n };\r\n return (\r\n <>\r\n {render(renderProps)}\r\n {errorNode}\r\n </>\r\n );\r\n }\r\n\r\n if (!child || !binding) return <>{children}</>;\r\n\r\n const control = cloneElement(child, {\r\n 'aria-describedby': field.error ? errorId : undefined,\r\n 'aria-invalid': field.error ? true : undefined,\r\n 'id': child.props.id ?? id,\r\n [binding.trigger]: onChange,\r\n [binding.valueProp]: field.value === undefined ? binding.emptyValue : field.value,\r\n 'onBlur': onBlur,\r\n });\r\n\r\n return (\r\n <>\r\n {control}\r\n {errorNode}\r\n </>\r\n );\r\n },\r\n);\r\n\r\nFieldControl.displayName = 'FormFieldControl';\r\n\r\nconst FormField = memo<FormFieldProps>(\r\n ({\r\n avatar,\r\n bare,\r\n children,\r\n className,\r\n deps,\r\n desc,\r\n divider,\r\n emptyValue,\r\n extra,\r\n getValue,\r\n hidden,\r\n label,\r\n layout,\r\n minWidth,\r\n name,\r\n render,\r\n required,\r\n style,\r\n tag,\r\n trigger,\r\n validate,\r\n validateDebounce,\r\n validateOn,\r\n valueProp,\r\n variant,\r\n }) => {\r\n const id = useId();\r\n const { mobile } = useResponsive();\r\n const config = useFormKitContext();\r\n\r\n if (hidden) return null;\r\n\r\n const control = !name ? (\r\n children\r\n ) : (\r\n <FieldControl\r\n bare={bare}\r\n deps={deps}\r\n emptyValue={emptyValue}\r\n getValue={getValue}\r\n id={id}\r\n name={name}\r\n render={render}\r\n required={required}\r\n trigger={trigger}\r\n validate={validate}\r\n validateDebounce={validateDebounce}\r\n validateOn={validateOn}\r\n valueProp={valueProp}\r\n >\r\n {children}\r\n </FieldControl>\r\n );\r\n\r\n if (bare) return <>{control}</>;\r\n\r\n const labelFor = render\r\n ? undefined\r\n : name\r\n ? id\r\n : isValidElement<{ id?: string }>(children)\r\n ? children.props.id\r\n : undefined;\r\n const mergedLayout = layout || (mobile ? 'vertical' : config.layout);\r\n const mergedVariant = variant || config.variant;\r\n const controlWidth =\r\n mergedLayout === 'vertical' || minWidth === undefined || minWidth === ''\r\n ? undefined\r\n : typeof minWidth === 'number'\r\n ? `${minWidth}px`\r\n : minWidth;\r\n\r\n return (\r\n <>\r\n {divider && <FormDivider visible={mergedVariant !== 'borderless'} />}\r\n <div className={cx(fieldVariants({ layout: mergedLayout }), className)} style={style}>\r\n <label className={fieldStyles.label} htmlFor={labelFor}>\r\n <FormTitle\r\n avatar={avatar}\r\n desc={desc}\r\n tag={tag}\r\n title={\r\n required ? (\r\n <>\r\n {label}\r\n <span aria-hidden className={fieldKitStyles.required}>\r\n *\r\n </span>\r\n </>\r\n ) : (\r\n label\r\n )\r\n }\r\n />\r\n </label>\r\n <div\r\n style={controlWidth ? { width: controlWidth } : undefined}\r\n className={cx(\r\n fieldStyles.control,\r\n mergedLayout === 'vertical' && fieldStyles.controlVertical,\r\n controlWidth && fieldKitStyles.controlFixed,\r\n )}\r\n >\r\n {control}\r\n {extra && <div className={fieldKitStyles.extra}>{extra}</div>}\r\n </div>\r\n </div>\r\n </>\r\n );\r\n },\r\n);\r\n\r\nFormField.displayName = 'FormField';\r\n\r\nexport default FormField as unknown as (<T extends FormValues = FormValues>(\r\n props: FormFieldProps<T>,\r\n) => ReactNode) & { displayName?: string };\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Field.mjs","names":["formMessages"],"sources":["../../../src/base-ui/FormKit/Field.tsx"],"sourcesContent":["'use client';\n\nimport { cx, useResponsive } from 'antd-style';\nimport {\n cloneElement,\n isValidElement,\n memo,\n type ReactElement,\n type ReactNode,\n useCallback,\n useEffect,\n useId,\n useRef,\n} from 'react';\n\nimport formMessages from '@/i18n/resources/en/form';\nimport { useTranslation } from '@/i18n/useTranslation';\n\nimport FormDivider from '../Form/components/FormDivider';\nimport FormTitle from '../Form/components/FormTitle';\nimport { fieldStyles, fieldVariants } from '../Form/style';\nimport { resolveBinding } from './binding';\nimport { useFormKitContext } from './context';\nimport type { FieldValidator } from './engine/types';\nimport { getInternals } from './instance';\nimport { toFieldValidator } from './schema';\nimport { fieldKitStyles } from './style';\nimport type { FieldRenderProps, FormFieldProps, FormValues } from './type';\nimport { useStoreSelector } from './useStoreSelector';\n\nconst isEmpty = (value: unknown) =>\n value === undefined ||\n value === null ||\n value === '' ||\n (Array.isArray(value) && value.length === 0);\n\ntype ControlProps = Pick<\n FormFieldProps,\n | 'bare'\n | 'children'\n | 'deps'\n | 'emptyValue'\n | 'getValue'\n | 'name'\n | 'render'\n | 'required'\n | 'trigger'\n | 'validate'\n | 'validateDebounce'\n | 'validateOn'\n | 'valueProp'\n> & { id: string; name: string };\n\nconst FieldControl = memo<ControlProps>(\n ({\n bare,\n children,\n deps,\n emptyValue,\n getValue,\n id,\n name,\n render,\n required,\n trigger,\n validate,\n validateDebounce,\n validateOn,\n valueProp,\n }) => {\n const { form } = useFormKitContext();\n const { engine, validateOn: formValidateOn } = getInternals(form);\n const { t } = useTranslation(formMessages);\n const errorId = `${id}-error`;\n\n const requiredMessage = typeof required === 'string' ? required : t('form.required');\n const fieldValidator = validate ? toFieldValidator(validate) : undefined;\n const validatorRef = useRef<FieldValidator | undefined>(undefined);\n validatorRef.current = async (value, values) => {\n if (required && isEmpty(value)) return requiredMessage;\n return fieldValidator?.(value, values);\n };\n const hasValidator = Boolean(required || validate);\n const depsKey = deps?.join('\\u0000');\n\n useEffect(\n () =>\n engine.registerField(name, {\n debounceMs: validateDebounce,\n deps: depsKey ? depsKey.split('\\u0000') : undefined,\n validate: hasValidator\n ? (value, values) => validatorRef.current!(value, values)\n : undefined,\n validateOn: validateOn ?? formValidateOn,\n }),\n [engine, name, hasValidator, depsKey, validateDebounce, validateOn, formValidateOn],\n );\n\n const field = useStoreSelector(engine, (e) => e.getField(name));\n\n const child = isValidElement(children) ? (children as ReactElement<any>) : undefined;\n const binding = child\n ? resolveBinding(child, { emptyValue, getValue, trigger, valueProp })\n : undefined;\n const handlerRef = useRef({ binding, childProps: child?.props as Record<string, any> });\n handlerRef.current = { binding, childProps: child?.props as Record<string, any> };\n\n const onChange = useCallback(\n (...args: unknown[]) => {\n const { binding: current, childProps } = handlerRef.current;\n if (current) childProps?.[current.trigger]?.(...args);\n const next = current ? current.getValue(...args) : args[0];\n engine.setValue(name, next, 'user');\n },\n [engine, name],\n );\n const onBlur = useCallback(\n (...args: unknown[]) => {\n handlerRef.current.childProps?.onBlur?.(...args);\n engine.blurField(name);\n },\n [engine, name],\n );\n\n const warnedRef = useRef(false);\n useEffect(() => {\n if (render || child || warnedRef.current || process.env.NODE_ENV === 'production') return;\n warnedRef.current = true;\n console.warn(\n `[@jinmi/ui/base-ui/form] Form.Field \"${name}\" needs a single element child or a render prop; nothing was bound.`,\n );\n }, [render, child, name]);\n\n const errorNode =\n field.error && !bare ? (\n <div className={fieldStyles.error} id={errorId}>\n {field.error}\n </div>\n ) : null;\n\n if (render) {\n const renderProps: FieldRenderProps = {\n error: field.error,\n name,\n onBlur,\n onChange,\n touched: field.touched,\n validating: field.validating,\n value: field.value,\n };\n return (\n <>\n {render(renderProps)}\n {errorNode}\n </>\n );\n }\n\n if (!child || !binding) return <>{children}</>;\n\n const control = cloneElement(child, {\n 'aria-describedby': field.error ? errorId : undefined,\n 'aria-invalid': field.error ? true : undefined,\n 'id': child.props.id ?? id,\n [binding.trigger]: onChange,\n [binding.valueProp]: field.value === undefined ? binding.emptyValue : field.value,\n 'onBlur': onBlur,\n });\n\n return (\n <>\n {control}\n {errorNode}\n </>\n );\n },\n);\n\nFieldControl.displayName = 'FormFieldControl';\n\nconst FormField = memo<FormFieldProps>(\n ({\n avatar,\n bare,\n children,\n className,\n deps,\n desc,\n divider,\n emptyValue,\n extra,\n getValue,\n hidden,\n label,\n layout,\n minWidth,\n name,\n render,\n required,\n style,\n tag,\n trigger,\n validate,\n validateDebounce,\n validateOn,\n valueProp,\n variant,\n }) => {\n const id = useId();\n const { mobile } = useResponsive();\n const config = useFormKitContext();\n\n if (hidden) return null;\n\n const control = !name ? (\n children\n ) : (\n <FieldControl\n bare={bare}\n deps={deps}\n emptyValue={emptyValue}\n getValue={getValue}\n id={id}\n name={name}\n render={render}\n required={required}\n trigger={trigger}\n validate={validate}\n validateDebounce={validateDebounce}\n validateOn={validateOn}\n valueProp={valueProp}\n >\n {children}\n </FieldControl>\n );\n\n if (bare) return <>{control}</>;\n\n const labelFor = render\n ? undefined\n : name\n ? id\n : isValidElement<{ id?: string }>(children)\n ? children.props.id\n : undefined;\n const mergedLayout = layout || (mobile ? 'vertical' : config.layout);\n const mergedVariant = variant || config.variant;\n const controlWidth =\n mergedLayout === 'vertical' || minWidth === undefined || minWidth === ''\n ? undefined\n : typeof minWidth === 'number'\n ? `${minWidth}px`\n : minWidth;\n\n return (\n <>\n {divider && <FormDivider visible={mergedVariant !== 'borderless'} />}\n <div className={cx(fieldVariants({ layout: mergedLayout }), className)} style={style}>\n <label className={fieldStyles.label} htmlFor={labelFor}>\n <FormTitle\n avatar={avatar}\n desc={desc}\n tag={tag}\n title={\n required ? (\n <>\n {label}\n <span aria-hidden className={fieldKitStyles.required}>\n *\n </span>\n </>\n ) : (\n label\n )\n }\n />\n </label>\n <div\n style={controlWidth ? { width: controlWidth } : undefined}\n className={cx(\n fieldStyles.control,\n mergedLayout === 'vertical' && fieldStyles.controlVertical,\n controlWidth && fieldKitStyles.controlFixed,\n )}\n >\n {control}\n {extra && <div className={fieldKitStyles.extra}>{extra}</div>}\n </div>\n </div>\n </>\n );\n },\n);\n\nFormField.displayName = 'FormField';\n\nexport default FormField as unknown as (<T extends FormValues = FormValues>(\n props: FormFieldProps<T>,\n) => ReactNode) & { displayName?: string };\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.mjs","names":[],"sources":["../../../src/base-ui/FormKit/context.ts"],"sourcesContent":["'use client';\
|
|
1
|
+
{"version":3,"file":"context.mjs","names":[],"sources":["../../../src/base-ui/FormKit/context.ts"],"sourcesContent":["'use client';\n\nimport { createContext, use } from 'react';\n\nimport type { FormLayout, FormVariant } from '../Form/type';\nimport type { FormInstance, FormValues } from './type';\n\nexport interface FormKitContextValue {\n form: FormInstance<any>;\n layout: FormLayout;\n variant: FormVariant;\n}\n\nexport const FormKitContext = createContext<FormKitContextValue | null>(null);\n\nexport const useFormKitContext = () => {\n const value = use(FormKitContext);\n if (!value) throw new Error('[@jinmi/ui/base-ui/form] Form.Field must be rendered inside <Form>');\n return value;\n};\n\nexport const useFormInstance = <T extends FormValues = FormValues>() =>\n useFormKitContext().form as FormInstance<T>;\n"],"mappings":";;;AAaA,MAAa,iBAAiB,cAA0C,IAAI;AAE5E,MAAa,0BAA0B;CACrC,MAAM,QAAQ,IAAI,cAAc;CAChC,IAAI,CAAC,OAAO,MAAM,IAAI,MAAM,oEAAoE;CAChG,OAAO;AACT;AAEA,MAAa,wBACX,kBAAkB,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instance.mjs","names":[],"sources":["../../../src/base-ui/FormKit/instance.ts"],"sourcesContent":["import { createTanstackEngine } from './engine/tanstack';\
|
|
1
|
+
{"version":3,"file":"instance.mjs","names":[],"sources":["../../../src/base-ui/FormKit/instance.ts"],"sourcesContent":["import { createTanstackEngine } from './engine/tanstack';\nimport type { FormEngine, ValidateOn } from './engine/types';\nimport { schemaToFormValidator } from './schema';\nimport type { FormInstance, FormValues } from './type';\n\ninterface InstanceInternals {\n engine: FormEngine;\n onSubmit?: (values: FormValues) => unknown;\n validateOn: ValidateOn;\n}\n\nconst internals = new WeakMap<object, InstanceInternals>();\n\nexport const getInternals = (form: object): InstanceInternals => {\n const found = internals.get(form);\n if (!found) throw new Error('[@jinmi/ui/base-ui/form] form was not created by useForm');\n return found;\n};\n\nconst isPlainObject = (value: unknown): value is Record<string, unknown> => {\n if (typeof value !== 'object' || value === null) return false;\n const proto = Object.getPrototypeOf(value);\n return proto === Object.prototype || proto === null;\n};\n\nexport const leafPaths = (value: unknown, prefix = ''): string[] => {\n if (!isPlainObject(value) || (prefix && Object.keys(value).length === 0))\n return prefix ? [prefix] : [];\n return Object.entries(value).flatMap(([key, child]) =>\n leafPaths(child, prefix ? `${prefix}.${key}` : key),\n );\n};\n\nexport const getIn = (value: unknown, path: string): unknown =>\n path\n .split('.')\n .reduce<unknown>((acc, key) => (acc == null ? undefined : (acc as any)[key]), value);\n\nexport const setIn = (target: Record<string, unknown>, path: string, value: unknown) => {\n const keys = path.split('.');\n let cursor: Record<string, unknown> = target;\n keys.slice(0, -1).forEach((key) => {\n if (!isPlainObject(cursor[key])) cursor[key] = {};\n cursor = cursor[key] as Record<string, unknown>;\n });\n cursor[keys.at(-1)!] = value;\n};\n\ninterface CreateOptions {\n initialValues: FormValues;\n schema?: Parameters<typeof schemaToFormValidator>[0];\n validateOn: ValidateOn;\n}\n\nexport const createFormInstance = <T extends FormValues>({\n initialValues,\n schema,\n validateOn,\n}: CreateOptions): FormInstance<T> => {\n const engine = createTanstackEngine(initialValues);\n if (schema) engine.setFormValidator(schemaToFormValidator(schema));\n const source = (options?: { asUser?: boolean }) => (options?.asUser ? 'user' : 'api');\n\n const form: FormInstance<T> = {\n getValue: ((name: string) => engine.getValue(name)) as FormInstance<T>['getValue'],\n getValues: () => engine.getValues() as T,\n isDirty: () => engine.getStatus().dirty,\n isTouched: (name) => engine.isTouched(name),\n reset: (values) => engine.reset(values),\n resetField: (name) => engine.resetField(name),\n setErrors: (errors) => engine.setErrors(errors as Record<string, string | undefined>),\n setSchema: (next) => engine.setFormValidator(next ? schemaToFormValidator(next) : undefined),\n setValue: ((name: string, value: unknown, options?: { asUser?: boolean }) =>\n engine.setValue(name, value, source(options))) as FormInstance<T>['setValue'],\n setValues: (values, options) => {\n for (const path of leafPaths(values))\n engine.setValue(path, getIn(values, path), source(options));\n },\n submit: () =>\n engine.submit((values) => internals.get(form)?.onSubmit?.(values)) as ReturnType<\n FormInstance<T>['submit']\n >,\n subscribe: (selector, callback) => {\n let selected = selector(engine.getValues() as T);\n return engine.subscribe(() => {\n const next = selector(engine.getValues() as T);\n if (Object.is(next, selected)) return;\n selected = next;\n callback(next);\n });\n },\n validate: (names) => engine.validate(names) as ReturnType<FormInstance<T>['validate']>,\n };\n\n internals.set(form, { engine, validateOn });\n return form;\n};\n"],"mappings":";;;AAWA,MAAM,4BAAY,IAAI,QAAmC;AAEzD,MAAa,gBAAgB,SAAoC;CAC/D,MAAM,QAAQ,UAAU,IAAI,IAAI;CAChC,IAAI,CAAC,OAAO,MAAM,IAAI,MAAM,0DAA0D;CACtF,OAAO;AACT;AAEA,MAAM,iBAAiB,UAAqD;CAC1E,IAAI,OAAO,UAAU,YAAY,UAAU,MAAM,OAAO;CACxD,MAAM,QAAQ,OAAO,eAAe,KAAK;CACzC,OAAO,UAAU,OAAO,aAAa,UAAU;AACjD;AAEA,MAAa,aAAa,OAAgB,SAAS,OAAiB;CAClE,IAAI,CAAC,cAAc,KAAK,KAAM,UAAU,OAAO,KAAK,KAAK,CAAC,CAAC,WAAW,GACpE,OAAO,SAAS,CAAC,MAAM,IAAI,CAAC;CAC9B,OAAO,OAAO,QAAQ,KAAK,CAAC,CAAC,SAAS,CAAC,KAAK,WAC1C,UAAU,OAAO,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,CACpD;AACF;AAEA,MAAa,SAAS,OAAgB,SACpC,KACG,MAAM,GAAG,CAAC,CACV,QAAiB,KAAK,QAAS,OAAO,OAAO,KAAA,IAAa,IAAY,MAAO,KAAK;AAEvF,MAAa,SAAS,QAAiC,MAAc,UAAmB;CACtF,MAAM,OAAO,KAAK,MAAM,GAAG;CAC3B,IAAI,SAAkC;CACtC,KAAK,MAAM,GAAG,EAAE,CAAC,CAAC,SAAS,QAAQ;EACjC,IAAI,CAAC,cAAc,OAAO,IAAI,GAAG,OAAO,OAAO,CAAC;EAChD,SAAS,OAAO;CAClB,CAAC;CACD,OAAO,KAAK,GAAG,EAAE,KAAM;AACzB;AAQA,MAAa,sBAA4C,EACvD,eACA,QACA,iBACoC;CACpC,MAAM,SAAS,qBAAqB,aAAa;CACjD,IAAI,QAAQ,OAAO,iBAAiB,sBAAsB,MAAM,CAAC;CACjE,MAAM,UAAU,YAAoC,SAAS,SAAS,SAAS;CAE/E,MAAM,OAAwB;EAC5B,YAAY,SAAiB,OAAO,SAAS,IAAI;EACjD,iBAAiB,OAAO,UAAU;EAClC,eAAe,OAAO,UAAU,CAAC,CAAC;EAClC,YAAY,SAAS,OAAO,UAAU,IAAI;EAC1C,QAAQ,WAAW,OAAO,MAAM,MAAM;EACtC,aAAa,SAAS,OAAO,WAAW,IAAI;EAC5C,YAAY,WAAW,OAAO,UAAU,MAA4C;EACpF,YAAY,SAAS,OAAO,iBAAiB,OAAO,sBAAsB,IAAI,IAAI,KAAA,CAAS;EAC3F,YAAY,MAAc,OAAgB,YACxC,OAAO,SAAS,MAAM,OAAO,OAAO,OAAO,CAAC;EAC9C,YAAY,QAAQ,YAAY;GAC9B,KAAK,MAAM,QAAQ,UAAU,MAAM,GACjC,OAAO,SAAS,MAAM,MAAM,QAAQ,IAAI,GAAG,OAAO,OAAO,CAAC;EAC9D;EACA,cACE,OAAO,QAAQ,WAAW,UAAU,IAAI,IAAI,CAAC,EAAE,WAAW,MAAM,CAAC;EAGnE,YAAY,UAAU,aAAa;GACjC,IAAI,WAAW,SAAS,OAAO,UAAU,CAAM;GAC/C,OAAO,OAAO,gBAAgB;IAC5B,MAAM,OAAO,SAAS,OAAO,UAAU,CAAM;IAC7C,IAAI,OAAO,GAAG,MAAM,QAAQ,GAAG;IAC/B,WAAW;IACX,SAAS,IAAI;GACf,CAAC;EACH;EACA,WAAW,UAAU,OAAO,SAAS,KAAK;CAC5C;CAEA,UAAU,IAAI,MAAM;EAAE;EAAQ;CAAW,CAAC;CAC1C,OAAO;AACT"}
|
|
@@ -30,7 +30,7 @@ declare const styles: {
|
|
|
30
30
|
};
|
|
31
31
|
declare const rootVariants: (props?: ({
|
|
32
32
|
shadow?: boolean | null | undefined;
|
|
33
|
-
size?: "
|
|
33
|
+
size?: "small" | "middle" | "large" | null | undefined;
|
|
34
34
|
variant?: "filled" | "outlined" | "borderless" | null | undefined;
|
|
35
35
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
36
36
|
//#endregion
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
+
import { inkCssVar } from "../../styles/inkCssVar.mjs";
|
|
2
3
|
import Icon from "../../Icon/Icon.mjs";
|
|
3
4
|
import { styles, trackHeight } from "./style.mjs";
|
|
4
5
|
import { memo, useMemo } from "react";
|
|
@@ -28,7 +29,7 @@ const statusColor = {
|
|
|
28
29
|
};
|
|
29
30
|
const Progress = memo(({ className, format, label, percent, ref, segments = 20, showInfo = true, size = "middle", status = "normal", strokeColor, style, type = "line", variant = "line", ...rest }) => {
|
|
30
31
|
const clamped = Math.min(100, Math.max(0, percent));
|
|
31
|
-
const barColor = strokeColor ?? (status === "normal" ?
|
|
32
|
+
const barColor = strokeColor ?? (status === "normal" ? inkCssVar.colorInk : statusColor[status]);
|
|
32
33
|
const info = useMemo(() => {
|
|
33
34
|
if (status === "success") return /* @__PURE__ */ jsx(Icon, {
|
|
34
35
|
icon: Check,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Progress.mjs","names":[],"sources":["../../../src/base-ui/Progress/Progress.tsx"],"sourcesContent":["'use client';\r\n\r\nimport { cssVar, cx } from 'antd-style';\r\nimport { Check, X } from 'lucide-react';\r\nimport { memo, useMemo } from 'react';\r\n\r\nimport Icon from '@/Icon';\r\n\r\nimport { styles, trackHeight } from './style';\r\nimport type { ProgressProps } from './type';\r\n\r\nconst circleDiameterMap: Record<'small' | 'middle' | 'large', number> = {\r\n large: 72,\r\n middle: 40,\r\n small: 20,\r\n};\r\nconst blockHeightMap: Record<'small' | 'middle' | 'large', number> = {\r\n large: 12,\r\n middle: 8,\r\n small: 4,\r\n};\r\nconst circleStrokeMap: Record<'small' | 'middle' | 'large', number> = {\r\n large: 4,\r\n middle: 3,\r\n small: 2,\r\n};\r\n\r\nconst statusColor = {\r\n active: cssVar.colorInfo,\r\n exception: cssVar.colorError,\r\n success: cssVar.colorSuccess,\r\n};\r\n\r\nconst Progress = memo<ProgressProps>(\r\n ({\r\n className,\r\n format,\r\n label,\r\n percent,\r\n ref,\r\n segments = 20,\r\n showInfo = true,\r\n size = 'middle',\r\n status = 'normal',\r\n strokeColor,\r\n style,\r\n type = 'line',\r\n variant = 'line',\r\n ...rest\r\n }) => {\r\n const clamped = Math.min(100, Math.max(0, percent));\r\n const barColor =\r\n strokeColor ?? (status === 'normal' ? cssVar.colorPrimary : statusColor[status]);\r\n\r\n const info = useMemo(() => {\r\n if (status === 'success') return <Icon icon={Check} size={14} style={{ color: barColor }} />;\r\n if (status === 'exception') return <Icon icon={X} size={14} style={{ color: barColor }} />;\r\n return format ? format(clamped) : `${clamped}%`;\r\n }, [status, format, clamped, barColor]);\r\n\r\n const ariaValueText = useMemo(() => {\r\n if (!format) return undefined;\r\n const value = format(clamped);\r\n return typeof value === 'string' || typeof value === 'number' ? String(value) : undefined;\r\n }, [format, clamped]);\r\n\r\n const progressAria = {\r\n 'aria-valuemax': 100,\r\n 'aria-valuemin': 0,\r\n 'aria-valuenow': clamped,\r\n 'aria-valuetext': ariaValueText,\r\n 'role': 'progressbar' as const,\r\n };\r\n\r\n if (type === 'circle') {\r\n const isPreset = typeof size === 'string';\r\n const diameter = isPreset\r\n ? circleDiameterMap[size as 'small' | 'middle' | 'large']\r\n : (size as number);\r\n const stroke = isPreset\r\n ? circleStrokeMap[size as 'small' | 'middle' | 'large']\r\n : Math.max(2, Math.round((diameter * 3) / 40));\r\n const radius = diameter / 2 - stroke;\r\n const circumference = 2 * Math.PI * radius;\r\n const offset = circumference * (1 - clamped / 100);\r\n\r\n return (\r\n <div\r\n className={cx(styles.circleRoot, className)}\r\n ref={ref}\r\n style={style}\r\n {...progressAria}\r\n {...rest}\r\n >\r\n <svg\r\n className={styles.circleSvg}\r\n height={diameter}\r\n viewBox={`0 0 ${diameter} ${diameter}`}\r\n width={diameter}\r\n >\r\n <circle\r\n className={styles.circleTrack}\r\n cx={diameter / 2}\r\n cy={diameter / 2}\r\n r={radius}\r\n strokeWidth={stroke}\r\n />\r\n <circle\r\n cx={diameter / 2}\r\n cy={diameter / 2}\r\n fill=\"none\"\r\n r={radius}\r\n stroke={barColor}\r\n strokeDasharray={circumference}\r\n strokeDashoffset={offset}\r\n strokeLinecap=\"round\"\r\n strokeWidth={stroke}\r\n style={{ transition: 'stroke-dashoffset 0.3s' }}\r\n />\r\n </svg>\r\n {showInfo && diameter >= 40 && (\r\n <span\r\n className={styles.circleInfo}\r\n style={{ fontSize: Math.round(diameter * 0.15 + 6) }}\r\n >\r\n {info}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n }\r\n\r\n const heightStyle = typeof size === 'number' ? { height: size } : undefined;\r\n const heightClass = (family: 'line' | 'block') =>\r\n typeof size === 'number' ? undefined : trackHeight({ family, size });\r\n\r\n if (variant === 'segments') {\r\n const filled = Math.round((segments * clamped) / 100);\r\n\r\n return (\r\n <div\r\n className={cx(styles.rowRoot, className)}\r\n ref={ref}\r\n style={style}\r\n {...progressAria}\r\n {...rest}\r\n >\r\n <div className={cx(styles.segments, heightClass('block'))} style={heightStyle}>\r\n {Array.from({ length: segments }, (_, index) => (\r\n <span\r\n className={cx(styles.segment, index < filled && styles.segmentOn)}\r\n key={index}\r\n style={index < filled ? { background: barColor } : undefined}\r\n />\r\n ))}\r\n </div>\r\n {showInfo && <span className={styles.rowInfo}>{info}</span>}\r\n </div>\r\n );\r\n }\r\n\r\n if (variant === 'inset') {\r\n return (\r\n <div\r\n className={cx(styles.rowRoot, className)}\r\n ref={ref}\r\n style={style}\r\n {...progressAria}\r\n {...rest}\r\n >\r\n <div className={cx(styles.split, heightClass('block'))} style={heightStyle}>\r\n {clamped > 0 && (\r\n <span\r\n className={cx(styles.splitFill, status === 'active' && styles.barActive)}\r\n style={{\r\n backgroundColor: barColor,\r\n minWidth: typeof size === 'number' ? size : blockHeightMap[size],\r\n width: clamped === 100 ? '100%' : `calc((100% - 3px) * ${clamped / 100})`,\r\n }}\r\n />\r\n )}\r\n {clamped < 100 && <span className={styles.splitRest} />}\r\n </div>\r\n {showInfo && <span className={styles.rowInfo}>{info}</span>}\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div\r\n className={cx(styles.lineRoot, className)}\r\n ref={ref}\r\n style={style}\r\n {...progressAria}\r\n {...rest}\r\n >\r\n {(label || showInfo) && (\r\n <div className={styles.lineMeta}>\r\n <span>{label}</span>\r\n {showInfo && <span className={styles.lineValue}>{info}</span>}\r\n </div>\r\n )}\r\n <div className={cx(styles.lineTrack, heightClass('line'))} style={heightStyle}>\r\n <div\r\n style={{ backgroundColor: barColor, width: `${clamped}%` }}\r\n className={cx(\r\n styles.bar,\r\n variant === 'line' && status === 'active' && styles.barActive,\r\n )}\r\n />\r\n </div>\r\n </div>\r\n );\r\n },\r\n);\r\n\r\nProgress.displayName = 'Progress';\r\n\r\nexport default Progress;\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Progress.mjs","names":[],"sources":["../../../src/base-ui/Progress/Progress.tsx"],"sourcesContent":["'use client';\n\nimport { cssVar, cx } from 'antd-style';\nimport { Check, X } from 'lucide-react';\nimport { memo, useMemo } from 'react';\n\nimport Icon from '@/Icon';\nimport { inkCssVar } from '@/styles/inkCssVar';\n\nimport { styles, trackHeight } from './style';\nimport type { ProgressProps } from './type';\n\nconst circleDiameterMap: Record<'small' | 'middle' | 'large', number> = {\n large: 72,\n middle: 40,\n small: 20,\n};\nconst blockHeightMap: Record<'small' | 'middle' | 'large', number> = {\n large: 12,\n middle: 8,\n small: 4,\n};\nconst circleStrokeMap: Record<'small' | 'middle' | 'large', number> = {\n large: 4,\n middle: 3,\n small: 2,\n};\n\nconst statusColor = {\n active: cssVar.colorInfo,\n exception: cssVar.colorError,\n success: cssVar.colorSuccess,\n};\n\nconst Progress = memo<ProgressProps>(\n ({\n className,\n format,\n label,\n percent,\n ref,\n segments = 20,\n showInfo = true,\n size = 'middle',\n status = 'normal',\n strokeColor,\n style,\n type = 'line',\n variant = 'line',\n ...rest\n }) => {\n const clamped = Math.min(100, Math.max(0, percent));\n const barColor =\n strokeColor ?? (status === 'normal' ? inkCssVar.colorInk : statusColor[status]);\n\n const info = useMemo(() => {\n if (status === 'success') return <Icon icon={Check} size={14} style={{ color: barColor }} />;\n if (status === 'exception') return <Icon icon={X} size={14} style={{ color: barColor }} />;\n return format ? format(clamped) : `${clamped}%`;\n }, [status, format, clamped, barColor]);\n\n const ariaValueText = useMemo(() => {\n if (!format) return undefined;\n const value = format(clamped);\n return typeof value === 'string' || typeof value === 'number' ? String(value) : undefined;\n }, [format, clamped]);\n\n const progressAria = {\n 'aria-valuemax': 100,\n 'aria-valuemin': 0,\n 'aria-valuenow': clamped,\n 'aria-valuetext': ariaValueText,\n 'role': 'progressbar' as const,\n };\n\n if (type === 'circle') {\n const isPreset = typeof size === 'string';\n const diameter = isPreset\n ? circleDiameterMap[size as 'small' | 'middle' | 'large']\n : (size as number);\n const stroke = isPreset\n ? circleStrokeMap[size as 'small' | 'middle' | 'large']\n : Math.max(2, Math.round((diameter * 3) / 40));\n const radius = diameter / 2 - stroke;\n const circumference = 2 * Math.PI * radius;\n const offset = circumference * (1 - clamped / 100);\n\n return (\n <div\n className={cx(styles.circleRoot, className)}\n ref={ref}\n style={style}\n {...progressAria}\n {...rest}\n >\n <svg\n className={styles.circleSvg}\n height={diameter}\n viewBox={`0 0 ${diameter} ${diameter}`}\n width={diameter}\n >\n <circle\n className={styles.circleTrack}\n cx={diameter / 2}\n cy={diameter / 2}\n r={radius}\n strokeWidth={stroke}\n />\n <circle\n cx={diameter / 2}\n cy={diameter / 2}\n fill=\"none\"\n r={radius}\n stroke={barColor}\n strokeDasharray={circumference}\n strokeDashoffset={offset}\n strokeLinecap=\"round\"\n strokeWidth={stroke}\n style={{ transition: 'stroke-dashoffset 0.3s' }}\n />\n </svg>\n {showInfo && diameter >= 40 && (\n <span\n className={styles.circleInfo}\n style={{ fontSize: Math.round(diameter * 0.15 + 6) }}\n >\n {info}\n </span>\n )}\n </div>\n );\n }\n\n const heightStyle = typeof size === 'number' ? { height: size } : undefined;\n const heightClass = (family: 'line' | 'block') =>\n typeof size === 'number' ? undefined : trackHeight({ family, size });\n\n if (variant === 'segments') {\n const filled = Math.round((segments * clamped) / 100);\n\n return (\n <div\n className={cx(styles.rowRoot, className)}\n ref={ref}\n style={style}\n {...progressAria}\n {...rest}\n >\n <div className={cx(styles.segments, heightClass('block'))} style={heightStyle}>\n {Array.from({ length: segments }, (_, index) => (\n <span\n className={cx(styles.segment, index < filled && styles.segmentOn)}\n key={index}\n style={index < filled ? { background: barColor } : undefined}\n />\n ))}\n </div>\n {showInfo && <span className={styles.rowInfo}>{info}</span>}\n </div>\n );\n }\n\n if (variant === 'inset') {\n return (\n <div\n className={cx(styles.rowRoot, className)}\n ref={ref}\n style={style}\n {...progressAria}\n {...rest}\n >\n <div className={cx(styles.split, heightClass('block'))} style={heightStyle}>\n {clamped > 0 && (\n <span\n className={cx(styles.splitFill, status === 'active' && styles.barActive)}\n style={{\n backgroundColor: barColor,\n minWidth: typeof size === 'number' ? size : blockHeightMap[size],\n width: clamped === 100 ? '100%' : `calc((100% - 3px) * ${clamped / 100})`,\n }}\n />\n )}\n {clamped < 100 && <span className={styles.splitRest} />}\n </div>\n {showInfo && <span className={styles.rowInfo}>{info}</span>}\n </div>\n );\n }\n\n return (\n <div\n className={cx(styles.lineRoot, className)}\n ref={ref}\n style={style}\n {...progressAria}\n {...rest}\n >\n {(label || showInfo) && (\n <div className={styles.lineMeta}>\n <span>{label}</span>\n {showInfo && <span className={styles.lineValue}>{info}</span>}\n </div>\n )}\n <div className={cx(styles.lineTrack, heightClass('line'))} style={heightStyle}>\n <div\n style={{ backgroundColor: barColor, width: `${clamped}%` }}\n className={cx(\n styles.bar,\n variant === 'line' && status === 'active' && styles.barActive,\n )}\n />\n </div>\n </div>\n );\n },\n);\n\nProgress.displayName = 'Progress';\n\nexport default Progress;\n"],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { inkCssVar } from "../../styles/inkCssVar.mjs";
|
|
1
2
|
import { createStaticStyles, keyframes } from "antd-style";
|
|
2
3
|
import { cva } from "class-variance-authority";
|
|
3
4
|
//#region src/base-ui/Progress/style.ts
|
|
@@ -116,7 +117,7 @@ const styles = createStaticStyles(({ css, cssVar }) => ({
|
|
|
116
117
|
background: ${cssVar.colorFillTertiary};
|
|
117
118
|
`,
|
|
118
119
|
segmentOn: css`
|
|
119
|
-
background: ${
|
|
120
|
+
background: ${inkCssVar.colorInk};
|
|
120
121
|
`,
|
|
121
122
|
segments: css`
|
|
122
123
|
display: flex;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.mjs","names":[],"sources":["../../../src/base-ui/Progress/style.ts"],"sourcesContent":["import { createStaticStyles, keyframes } from 'antd-style';\
|
|
1
|
+
{"version":3,"file":"style.mjs","names":[],"sources":["../../../src/base-ui/Progress/style.ts"],"sourcesContent":["import { createStaticStyles, keyframes } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nimport { inkCssVar } from '@/styles/inkCssVar';\n\nconst shimmer = keyframes`\n from {\n background-position: -80px 0;\n }\n to {\n background-position: 200px 0;\n }\n`;\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n bar: css`\n height: 100%;\n border-radius: 999px;\n transition: width 0.3s;\n `,\n barActive: css`\n background-image: linear-gradient(\n 90deg,\n transparent,\n color-mix(in srgb, ${cssVar.colorWhite} 35%, transparent),\n transparent\n );\n background-size: 80px 100%;\n animation: ${shimmer} 1.2s linear infinite;\n\n @media (prefers-reduced-motion: reduce) {\n animation: none;\n }\n `,\n blockLg: css`\n height: 12px;\n `,\n blockMd: css`\n height: 8px;\n `,\n blockSm: css`\n height: 4px;\n `,\n circleInfo: css`\n position: absolute;\n\n font-variant-numeric: tabular-nums;\n line-height: 1;\n color: ${cssVar.colorText};\n white-space: nowrap;\n `,\n circleRoot: css`\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n `,\n circleSvg: css`\n rotate: -90deg;\n `,\n circleTrack: css`\n fill: none;\n stroke: ${cssVar.colorFillTertiary};\n `,\n lineLg: css`\n height: 6px;\n `,\n lineMd: css`\n height: 4px;\n `,\n lineMeta: css`\n display: flex;\n gap: 12px;\n align-items: baseline;\n justify-content: space-between;\n\n font-size: ${cssVar.fontSizeSM};\n color: ${cssVar.colorTextSecondary};\n `,\n lineRoot: css`\n display: flex;\n flex-direction: column;\n gap: 6px;\n width: 100%;\n `,\n lineSm: css`\n height: 2px;\n `,\n lineTrack: css`\n overflow: hidden;\n border-radius: 999px;\n background: ${cssVar.colorFillTertiary};\n `,\n lineValue: css`\n font-family: ${cssVar.fontFamilyCode};\n font-variant-numeric: tabular-nums;\n color: ${cssVar.colorText};\n `,\n rowInfo: css`\n min-width: 3.5ch;\n\n font-family: ${cssVar.fontFamilyCode};\n font-size: ${cssVar.fontSizeSM};\n font-variant-numeric: tabular-nums;\n color: ${cssVar.colorTextSecondary};\n text-align: end;\n `,\n rowRoot: css`\n display: flex;\n flex: 1;\n gap: 10px;\n align-items: center;\n\n width: 100%;\n `,\n segment: css`\n flex: 1;\n border-radius: 1px;\n background: ${cssVar.colorFillTertiary};\n `,\n segmentOn: css`\n background: ${inkCssVar.colorInk};\n `,\n segments: css`\n display: flex;\n flex: 1;\n gap: 2px;\n min-width: 0;\n `,\n split: css`\n display: flex;\n flex: 1;\n gap: 3px;\n min-width: 0;\n `,\n splitFill: css`\n flex: none;\n border-radius: 999px;\n transition: width 0.3s;\n `,\n splitRest: css`\n flex: 1;\n border-radius: 999px;\n background: ${cssVar.colorFillSecondary};\n `,\n}));\n\nexport const trackHeight = cva(undefined, {\n compoundVariants: [\n { className: styles.lineSm, family: 'line', size: 'small' },\n { className: styles.lineMd, family: 'line', size: 'middle' },\n { className: styles.lineLg, family: 'line', size: 'large' },\n { className: styles.blockSm, family: 'block', size: 'small' },\n { className: styles.blockMd, family: 'block', size: 'middle' },\n { className: styles.blockLg, family: 'block', size: 'large' },\n ],\n defaultVariants: {\n family: 'line',\n size: 'middle',\n },\n variants: {\n family: {\n block: null,\n line: null,\n },\n size: {\n large: null,\n middle: null,\n small: null,\n },\n },\n});\n"],"mappings":";;;;AAKA,MAAM,UAAU,SAAS;;;;;;;;AASzB,MAAa,SAAS,oBAAoB,EAAE,KAAK,cAAc;CAC7D,KAAK,GAAG;;;;;CAKR,WAAW,GAAG;;;;2BAIW,OAAO,WAAW;;;;iBAI5B,QAAQ;;;;;;CAMvB,SAAS,GAAG;;;CAGZ,SAAS,GAAG;;;CAGZ,SAAS,GAAG;;;CAGZ,YAAY,GAAG;;;;;aAKJ,OAAO,UAAU;;;CAG5B,YAAY,GAAG;;;;;;CAMf,WAAW,GAAG;;;CAGd,aAAa,GAAG;;cAEJ,OAAO,kBAAkB;;CAErC,QAAQ,GAAG;;;CAGX,QAAQ,GAAG;;;CAGX,UAAU,GAAG;;;;;;iBAME,OAAO,WAAW;aACtB,OAAO,mBAAmB;;CAErC,UAAU,GAAG;;;;;;CAMb,QAAQ,GAAG;;;CAGX,WAAW,GAAG;;;kBAGE,OAAO,kBAAkB;;CAEzC,WAAW,GAAG;mBACG,OAAO,eAAe;;aAE5B,OAAO,UAAU;;CAE5B,SAAS,GAAG;;;mBAGK,OAAO,eAAe;iBACxB,OAAO,WAAW;;aAEtB,OAAO,mBAAmB;;;CAGrC,SAAS,GAAG;;;;;;;;CAQZ,SAAS,GAAG;;;kBAGI,OAAO,kBAAkB;;CAEzC,WAAW,GAAG;kBACE,UAAU,SAAS;;CAEnC,UAAU,GAAG;;;;;;CAMb,OAAO,GAAG;;;;;;CAMV,WAAW,GAAG;;;;;CAKd,WAAW,GAAG;;;kBAGE,OAAO,mBAAmB;;AAE5C,EAAE;AAEF,MAAa,cAAc,IAAI,KAAA,GAAW;CACxC,kBAAkB;EAChB;GAAE,WAAW,OAAO;GAAQ,QAAQ;GAAQ,MAAM;EAAQ;EAC1D;GAAE,WAAW,OAAO;GAAQ,QAAQ;GAAQ,MAAM;EAAS;EAC3D;GAAE,WAAW,OAAO;GAAQ,QAAQ;GAAQ,MAAM;EAAQ;EAC1D;GAAE,WAAW,OAAO;GAAS,QAAQ;GAAS,MAAM;EAAQ;EAC5D;GAAE,WAAW,OAAO;GAAS,QAAQ;GAAS,MAAM;EAAS;EAC7D;GAAE,WAAW,OAAO;GAAS,QAAQ;GAAS,MAAM;EAAQ;CAC9D;CACA,iBAAiB;EACf,QAAQ;EACR,MAAM;CACR;CACA,UAAU;EACR,QAAQ;GACN,OAAO;GACP,MAAM;EACR;EACA,MAAM;GACJ,OAAO;GACP,QAAQ;GACR,OAAO;EACT;CACF;AACF,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { inkCssVar } from "../../styles/inkCssVar.mjs";
|
|
1
2
|
import { focusRing } from "../focusRing.mjs";
|
|
2
3
|
import { createStaticStyles } from "antd-style";
|
|
3
4
|
//#region src/base-ui/Radio/style.ts
|
|
@@ -31,7 +32,7 @@ const styles = createStaticStyles(({ css, cssVar }) => ({
|
|
|
31
32
|
border: 1px solid ${cssVar.colorBorderSecondary};
|
|
32
33
|
border-radius: 50%;
|
|
33
34
|
|
|
34
|
-
color: ${
|
|
35
|
+
color: ${inkCssVar.colorInkText};
|
|
35
36
|
|
|
36
37
|
background: ${cssVar.colorBgContainer};
|
|
37
38
|
outline: none;
|
|
@@ -47,8 +48,8 @@ const styles = createStaticStyles(({ css, cssVar }) => ({
|
|
|
47
48
|
${focusRing};
|
|
48
49
|
|
|
49
50
|
&[data-checked] {
|
|
50
|
-
border-color: var(--jinmi-radio-bg, ${
|
|
51
|
-
background: var(--jinmi-radio-bg, ${
|
|
51
|
+
border-color: var(--jinmi-radio-bg, ${inkCssVar.colorInk});
|
|
52
|
+
background: var(--jinmi-radio-bg, ${inkCssVar.colorInk});
|
|
52
53
|
}
|
|
53
54
|
|
|
54
55
|
&[data-disabled] {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.mjs","names":[],"sources":["../../../src/base-ui/Radio/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\n\nimport { focusRing } from '@/base-ui/focusRing';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n indicator: css`\n display: block;\n flex: none;\n border-radius: 50%;\n background: currentcolor;\n `,\n label: css`\n cursor: pointer;\n user-select: none;\n display: inline-flex;\n align-items: center;\n\n &:has([data-disabled]) {\n cursor: not-allowed;\n }\n `,\n root: css`\n cursor: pointer;\n\n display: inline-flex;\n flex: none;\n align-items: center;\n justify-content: center;\n\n margin: 0;\n padding: 0;\n border: 1px solid ${cssVar.colorBorderSecondary};\n border-radius: 50%;\n\n color: ${
|
|
1
|
+
{"version":3,"file":"style.mjs","names":[],"sources":["../../../src/base-ui/Radio/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\n\nimport { focusRing } from '@/base-ui/focusRing';\nimport { inkCssVar } from '@/styles/inkCssVar';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n indicator: css`\n display: block;\n flex: none;\n border-radius: 50%;\n background: currentcolor;\n `,\n label: css`\n cursor: pointer;\n user-select: none;\n display: inline-flex;\n align-items: center;\n\n &:has([data-disabled]) {\n cursor: not-allowed;\n }\n `,\n root: css`\n cursor: pointer;\n\n display: inline-flex;\n flex: none;\n align-items: center;\n justify-content: center;\n\n margin: 0;\n padding: 0;\n border: 1px solid ${cssVar.colorBorderSecondary};\n border-radius: 50%;\n\n color: ${inkCssVar.colorInkText};\n\n background: ${cssVar.colorBgContainer};\n outline: none;\n\n transition:\n background 150ms ${cssVar.motionEaseOut},\n border-color 150ms ${cssVar.motionEaseOut};\n\n &:hover:not([data-disabled], [data-checked]) {\n border-color: ${cssVar.colorBorder};\n }\n\n ${focusRing};\n\n &[data-checked] {\n border-color: var(--jinmi-radio-bg, ${inkCssVar.colorInk});\n background: var(--jinmi-radio-bg, ${inkCssVar.colorInk});\n }\n\n &[data-disabled] {\n cursor: not-allowed;\n\n border-color: ${cssVar.colorFill};\n\n color: ${cssVar.colorText};\n\n opacity: 0.25;\n background: ${cssVar.colorFill};\n }\n `,\n}));\n"],"mappings":";;;;AAKA,MAAa,SAAS,oBAAoB,EAAE,KAAK,cAAc;CAC7D,WAAW,GAAG;;;;;;CAMd,OAAO,GAAG;;;;;;;;;;CAUV,MAAM,GAAG;;;;;;;;;;wBAUa,OAAO,qBAAqB;;;aAGvC,UAAU,aAAa;;kBAElB,OAAO,iBAAiB;;;;yBAIjB,OAAO,cAAc;2BACnB,OAAO,cAAc;;;sBAG1B,OAAO,YAAY;;;MAGnC,UAAU;;;4CAG4B,UAAU,SAAS;0CACrB,UAAU,SAAS;;;;;;sBAMvC,OAAO,UAAU;;eAExB,OAAO,UAAU;;;oBAGZ,OAAO,UAAU;;;AAGrC,EAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.mjs","names":[],"sources":["../../../src/base-ui/Rate/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\
|
|
1
|
+
{"version":3,"file":"style.mjs","names":[],"sources":["../../../src/base-ui/Rate/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\n\nimport { brandCssVar } from '@/styles/brandCssVar';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n empty: css`\n /* Group opacity instead of the translucent colorFill so the star's stroke and fill don't double up where they overlap. */\n color: ${cssVar.colorText};\n opacity: 0.12;\n `,\n fill: css`\n pointer-events: none;\n\n position: absolute;\n inset-block: 0;\n inset-inline-start: 0;\n\n overflow: hidden;\n display: flex;\n `,\n half: css`\n position: absolute;\n inset-block: 0;\n width: 50%;\n\n &[data-half='start'] {\n inset-inline-start: 0;\n }\n\n &[data-half='end'] {\n inset-inline-end: 0;\n }\n `,\n icon: css`\n display: inline-flex;\n flex: none;\n align-items: center;\n justify-content: center;\n `,\n root: css`\n display: inline-flex;\n align-items: center;\n line-height: 1;\n outline: none;\n\n &[role='slider'] {\n cursor: pointer;\n }\n\n &[role='slider']:focus-visible {\n border-radius: 4px;\n outline: 2px solid ${brandCssVar.colorBrand};\n outline-offset: 2px;\n }\n\n &[aria-disabled='true'] {\n cursor: not-allowed;\n opacity: 0.5;\n }\n `,\n star: css`\n position: relative;\n\n display: inline-flex;\n flex: none;\n align-items: center;\n justify-content: center;\n\n transition: transform 0.15s ease;\n\n [role='slider']:not([aria-disabled='true']) > &:hover {\n transform: scale(1.1);\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n `,\n}));\n"],"mappings":";;;AAIA,MAAa,SAAS,oBAAoB,EAAE,KAAK,cAAc;CAC7D,OAAO,GAAG;;aAEC,OAAO,UAAU;;;CAG5B,MAAM,GAAG;;;;;;;;;;CAUT,MAAM,GAAG;;;;;;;;;;;;;CAaT,MAAM,GAAG;;;;;;CAMT,MAAM,GAAG;;;;;;;;;;;;2BAYgB,YAAY,WAAW;;;;;;;;;CAShD,MAAM,GAAG;;;;;;;;;;;;;;;;;;AAkBX,EAAE"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { inkCssVar } from "../../styles/inkCssVar.mjs";
|
|
1
2
|
import { focusRing } from "../focusRing.mjs";
|
|
2
3
|
import { createStaticStyles } from "antd-style";
|
|
3
4
|
//#region src/base-ui/Slider/style.ts
|
|
@@ -10,7 +11,7 @@ const styles = createStaticStyles(({ css, cssVar }) => ({
|
|
|
10
11
|
`,
|
|
11
12
|
indicator: css`
|
|
12
13
|
border-radius: inherit;
|
|
13
|
-
background: ${
|
|
14
|
+
background: ${inkCssVar.colorInk};
|
|
14
15
|
|
|
15
16
|
[data-disabled] & {
|
|
16
17
|
background: ${cssVar.colorTextQuaternary};
|
|
@@ -32,7 +33,7 @@ const styles = createStaticStyles(({ css, cssVar }) => ({
|
|
|
32
33
|
height: 16px;
|
|
33
34
|
border-radius: 100px;
|
|
34
35
|
|
|
35
|
-
background: ${
|
|
36
|
+
background: ${inkCssVar.colorInk};
|
|
36
37
|
box-shadow: 0 0 0 1px ${cssVar.colorBgContainer};
|
|
37
38
|
|
|
38
39
|
transition: box-shadow 150ms ${cssVar.motionEaseOut};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.mjs","names":[],"sources":["../../../src/base-ui/Slider/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\
|
|
1
|
+
{"version":3,"file":"style.mjs","names":[],"sources":["../../../src/base-ui/Slider/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\n\nimport { focusRing } from '@/base-ui/focusRing';\nimport { inkCssVar } from '@/styles/inkCssVar';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n control: css`\n display: flex;\n align-items: center;\n width: 100%;\n height: 20px;\n `,\n indicator: css`\n border-radius: inherit;\n background: ${inkCssVar.colorInk};\n\n [data-disabled] & {\n background: ${cssVar.colorTextQuaternary};\n }\n `,\n root: css`\n display: flex;\n align-items: center;\n width: 100%;\n\n &[data-disabled] {\n cursor: not-allowed;\n }\n `,\n thumb: css`\n flex-shrink: 0;\n\n width: 8px;\n height: 16px;\n border-radius: 100px;\n\n background: ${inkCssVar.colorInk};\n box-shadow: 0 0 0 1px ${cssVar.colorBgContainer};\n\n transition: box-shadow 150ms ${cssVar.motionEaseOut};\n\n &::before {\n content: '';\n\n position: absolute;\n inset-block-start: 50%;\n inset-inline-start: 50%;\n translate: -50% -50%;\n\n width: 24px;\n height: 40px;\n }\n\n &:hover:not([data-disabled] *) {\n box-shadow: 0 0 0 2px ${cssVar.colorPrimaryBorder};\n }\n\n ${focusRing};\n\n [data-dragging] & {\n box-shadow: 0 0 0 2px ${cssVar.colorPrimaryBorder};\n }\n\n [data-disabled] & {\n background: ${cssVar.colorTextQuaternary};\n box-shadow: 0 0 0 1px ${cssVar.colorBgContainer};\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition-duration: 0s;\n }\n `,\n track: css`\n width: 100%;\n height: 4px;\n border-radius: 100px;\n background: ${cssVar.colorFillSecondary};\n `,\n}));\n"],"mappings":";;;;AAKA,MAAa,SAAS,oBAAoB,EAAE,KAAK,cAAc;CAC7D,SAAS,GAAG;;;;;;CAMZ,WAAW,GAAG;;kBAEE,UAAU,SAAS;;;oBAGjB,OAAO,oBAAoB;;;CAG7C,MAAM,GAAG;;;;;;;;;CAST,OAAO,GAAG;;;;;;;kBAOM,UAAU,SAAS;4BACT,OAAO,iBAAiB;;mCAEjB,OAAO,cAAc;;;;;;;;;;;;;;;8BAe1B,OAAO,mBAAmB;;;MAGlD,UAAU;;;8BAGc,OAAO,mBAAmB;;;;oBAIpC,OAAO,oBAAoB;8BACjB,OAAO,iBAAiB;;;;;;;CAOpD,OAAO,GAAG;;;;kBAIM,OAAO,mBAAmB;;AAE5C,EAAE"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
"use client";
|
|
2
|
+
import { inkCssVar } from "../../styles/inkCssVar.mjs";
|
|
2
3
|
import Icon from "../../Icon/Icon.mjs";
|
|
3
4
|
import { styles } from "./style.mjs";
|
|
4
5
|
import { SwitchIcon, SwitchRoot, SwitchThumb } from "./atoms.mjs";
|
|
5
6
|
import { memo } from "react";
|
|
6
7
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
-
import {
|
|
8
|
+
import { cx } from "antd-style";
|
|
8
9
|
import { Loader2 } from "lucide-react";
|
|
9
10
|
//#region src/base-ui/Switch/Switch.tsx
|
|
10
11
|
const Switch = memo(({ autoFocus, checked, checkedChildren, className, classNames, defaultChecked, defaultValue, disabled, id, loading, name, onChange, onClick, ref, rootClassName, size = "default", style, styles: customStyles, tabIndex, title, unCheckedChildren, value }) => {
|
|
@@ -52,7 +53,7 @@ const Switch = memo(({ autoFocus, checked, checkedChildren, className, className
|
|
|
52
53
|
className: styles.loading,
|
|
53
54
|
icon: Loader2,
|
|
54
55
|
size: size === "small" ? 8 : 12,
|
|
55
|
-
style: { color:
|
|
56
|
+
style: { color: inkCssVar.colorInk }
|
|
56
57
|
})
|
|
57
58
|
})
|
|
58
59
|
]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Switch.mjs","names":[],"sources":["../../../src/base-ui/Switch/Switch.tsx"],"sourcesContent":["'use client';\
|
|
1
|
+
{"version":3,"file":"Switch.mjs","names":[],"sources":["../../../src/base-ui/Switch/Switch.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { Loader2 } from 'lucide-react';\nimport { memo } from 'react';\n\nimport Icon from '@/Icon';\nimport { inkCssVar } from '@/styles/inkCssVar';\n\nimport { SwitchIcon, SwitchRoot, SwitchThumb } from './atoms';\nimport { styles } from './style';\nimport type { SwitchProps } from './type';\n\nconst Switch = memo<SwitchProps>(\n ({\n autoFocus,\n checked,\n checkedChildren,\n className,\n classNames,\n defaultChecked,\n defaultValue,\n disabled,\n id,\n loading,\n name,\n onChange,\n onClick,\n ref,\n rootClassName,\n size = 'default',\n style,\n styles: customStyles,\n tabIndex,\n title,\n unCheckedChildren,\n value,\n }) => {\n const isDisabled = disabled || loading;\n const resolvedChecked = value ?? checked;\n const resolvedDefaultChecked = defaultValue ?? defaultChecked;\n\n return (\n <SwitchRoot\n autoFocus={autoFocus}\n checked={resolvedChecked}\n className={cx(className, rootClassName, classNames?.root)}\n defaultChecked={resolvedDefaultChecked}\n disabled={isDisabled}\n id={id}\n name={name}\n ref={ref}\n size={size}\n style={{ ...style, ...customStyles?.root }}\n tabIndex={tabIndex}\n title={title}\n onCheckedChange={onChange}\n onClick={onClick}\n >\n {checkedChildren && (\n <SwitchIcon\n className={classNames?.content}\n position=\"left\"\n size={size}\n style={customStyles?.content}\n >\n {checkedChildren}\n </SwitchIcon>\n )}\n {unCheckedChildren && (\n <SwitchIcon\n className={classNames?.content}\n position=\"right\"\n size={size}\n style={customStyles?.content}\n >\n {unCheckedChildren}\n </SwitchIcon>\n )}\n <SwitchThumb className={classNames?.thumb} size={size} style={customStyles?.thumb}>\n {loading && (\n <Icon\n className={styles.loading}\n icon={Loader2}\n size={size === 'small' ? 8 : 12}\n style={{ color: inkCssVar.colorInk }}\n />\n )}\n </SwitchThumb>\n </SwitchRoot>\n );\n },\n);\n\nSwitch.displayName = 'Switch';\n\nexport default Switch;\n"],"mappings":";;;;;;;;;;AAaA,MAAM,SAAS,MACZ,EACC,WACA,SACA,iBACA,WACA,YACA,gBACA,cACA,UACA,IACA,SACA,MACA,UACA,SACA,KACA,eACA,OAAO,WACP,OACA,QAAQ,cACR,UACA,OACA,mBACA,YACI;CACJ,MAAM,aAAa,YAAY;CAC/B,MAAM,kBAAkB,SAAS;CACjC,MAAM,yBAAyB,gBAAgB;CAE/C,OACE,qBAAC,YAAD;EACa;EACX,SAAS;EACT,WAAW,GAAG,WAAW,eAAe,YAAY,IAAI;EACxD,gBAAgB;EAChB,UAAU;EACN;EACE;EACD;EACC;EACN,OAAO;GAAE,GAAG;GAAO,GAAG,cAAc;EAAK;EAC/B;EACH;EACP,iBAAiB;EACR;EAdX,UAAA;GAgBG,mBACC,oBAAC,YAAD;IACE,WAAW,YAAY;IACvB,UAAS;IACH;IACN,OAAO,cAAc;IAEpB,UAAA;GACS,CAAA;GAEb,qBACC,oBAAC,YAAD;IACE,WAAW,YAAY;IACvB,UAAS;IACH;IACN,OAAO,cAAc;IAEpB,UAAA;GACS,CAAA;GAEd,oBAAC,aAAD;IAAa,WAAW,YAAY;IAAa;IAAM,OAAO,cAAc;IACzE,UAAA,WACC,oBAAC,MAAD;KACE,WAAW,OAAO;KAClB,MAAM;KACN,MAAM,SAAS,UAAU,IAAI;KAC7B,OAAO,EAAE,OAAO,UAAU,SAAS;IACpC,CAAA;GAEQ,CAAA;EACH;;AAEhB,CACF;AAEA,OAAO,cAAc"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { inkCssVar } from "../../styles/inkCssVar.mjs";
|
|
1
2
|
import { focusRing } from "../focusRing.mjs";
|
|
2
3
|
import { createStaticStyles } from "antd-style";
|
|
3
4
|
import { cva } from "class-variance-authority";
|
|
@@ -63,7 +64,7 @@ const styles = createStaticStyles(({ css, cssVar }) => ({
|
|
|
63
64
|
position: relative;
|
|
64
65
|
inset: unset;
|
|
65
66
|
transform: none;
|
|
66
|
-
color: ${
|
|
67
|
+
color: ${inkCssVar.colorInk};
|
|
67
68
|
`,
|
|
68
69
|
loading: css`
|
|
69
70
|
@keyframes jinmi-switch-loading {
|
|
@@ -123,11 +124,11 @@ const styles = createStaticStyles(({ css, cssVar }) => ({
|
|
|
123
124
|
}
|
|
124
125
|
|
|
125
126
|
&[data-checked] {
|
|
126
|
-
background: ${
|
|
127
|
+
background: ${inkCssVar.colorInk};
|
|
127
128
|
box-shadow: inset 0 1.5px 3px rgb(0 0 0 / 18%);
|
|
128
129
|
|
|
129
130
|
&:hover:not([data-disabled]) {
|
|
130
|
-
background: ${
|
|
131
|
+
background: ${inkCssVar.colorInkHover};
|
|
131
132
|
}
|
|
132
133
|
}
|
|
133
134
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.mjs","names":[],"sources":["../../../src/base-ui/Switch/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nimport { focusRing } from '@/base-ui/focusRing';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n icon: css`\n pointer-events: none;\n\n position: absolute;\n inset-block: 0;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n color: ${cssVar.colorBgLayout};\n\n transition:\n opacity 200ms ${cssVar.motionEaseOut},\n scale 200ms ${cssVar.motionEaseOut};\n\n @media (prefers-reduced-motion: reduce) {\n transition-duration: 0s;\n }\n `,\n iconLeft: css`\n inset-inline-start: 4px;\n scale: 0;\n opacity: 0;\n\n [data-checked] & {\n scale: 1;\n opacity: 1;\n }\n `,\n iconLeftSmall: css`\n inset-inline-start: 4px;\n scale: 0;\n opacity: 0;\n\n [data-checked] & {\n scale: 1;\n opacity: 1;\n }\n `,\n iconRight: css`\n inset-inline-end: 4px;\n\n [data-checked] & {\n scale: 0;\n opacity: 0;\n }\n `,\n iconRightSmall: css`\n inset-inline-end: 4px;\n\n [data-checked] & {\n scale: 0;\n opacity: 0;\n }\n `,\n iconThumb: css`\n position: relative;\n inset: unset;\n transform: none;\n color: ${
|
|
1
|
+
{"version":3,"file":"style.mjs","names":[],"sources":["../../../src/base-ui/Switch/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nimport { focusRing } from '@/base-ui/focusRing';\nimport { inkCssVar } from '@/styles/inkCssVar';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n icon: css`\n pointer-events: none;\n\n position: absolute;\n inset-block: 0;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n color: ${cssVar.colorBgLayout};\n\n transition:\n opacity 200ms ${cssVar.motionEaseOut},\n scale 200ms ${cssVar.motionEaseOut};\n\n @media (prefers-reduced-motion: reduce) {\n transition-duration: 0s;\n }\n `,\n iconLeft: css`\n inset-inline-start: 4px;\n scale: 0;\n opacity: 0;\n\n [data-checked] & {\n scale: 1;\n opacity: 1;\n }\n `,\n iconLeftSmall: css`\n inset-inline-start: 4px;\n scale: 0;\n opacity: 0;\n\n [data-checked] & {\n scale: 1;\n opacity: 1;\n }\n `,\n iconRight: css`\n inset-inline-end: 4px;\n\n [data-checked] & {\n scale: 0;\n opacity: 0;\n }\n `,\n iconRightSmall: css`\n inset-inline-end: 4px;\n\n [data-checked] & {\n scale: 0;\n opacity: 0;\n }\n `,\n iconThumb: css`\n position: relative;\n inset: unset;\n transform: none;\n color: ${inkCssVar.colorInk};\n `,\n loading: css`\n @keyframes jinmi-switch-loading {\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n }\n\n animation: jinmi-switch-loading 1s linear infinite;\n\n @media (prefers-reduced-motion: reduce) {\n animation-duration: 0s;\n }\n `,\n root: css`\n --switch-dir: 1;\n\n cursor: pointer;\n user-select: none;\n\n position: relative;\n\n overflow: hidden;\n display: inline-flex;\n align-items: center;\n justify-content: flex-start;\n\n box-sizing: border-box;\n padding: 2px;\n border: 0;\n border-radius: 100px;\n\n background: ${cssVar.colorFillSecondary};\n outline: none;\n box-shadow: inset 0 1.5px 2px rgb(0 0 0 / 8%);\n\n transition:\n background 200ms ${cssVar.motionEaseOut},\n box-shadow 200ms ${cssVar.motionEaseOut};\n\n &:dir(rtl) {\n --switch-dir: -1;\n }\n\n [dir='rtl'] & {\n --switch-dir: -1;\n }\n\n ${focusRing};\n\n &:hover:not([data-disabled]) {\n background: ${cssVar.colorFill};\n }\n\n &[data-checked] {\n background: ${inkCssVar.colorInk};\n box-shadow: inset 0 1.5px 3px rgb(0 0 0 / 18%);\n\n &:hover:not([data-disabled]) {\n background: ${inkCssVar.colorInkHover};\n }\n }\n\n &[data-disabled] {\n cursor: not-allowed;\n opacity: 0.45;\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition-duration: 0s;\n }\n `,\n rootDefault: css`\n width: 36px;\n min-width: 36px;\n height: 22px;\n `,\n rootSmall: css`\n width: 28px;\n min-width: 28px;\n height: 16px;\n `,\n thumb: css`\n transform: translateX(calc(var(--switch-x, 0px) * var(--switch-dir, 1)));\n\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n\n border-radius: 50%;\n\n background: ${cssVar.colorBgContainer};\n box-shadow:\n 0 0 0 0.5px rgb(0 0 0 / 4%),\n 0 1px 1px rgb(0 0 0 / 6%),\n 0 3px 8px rgb(0 30 80 / 16%);\n\n transition: box-shadow 200ms ${cssVar.motionEaseOut};\n\n [role='switch']:hover:not([data-disabled]) > & {\n box-shadow:\n 0 0 0 0.5px rgb(0 0 0 / 4%),\n 0 1px 1px rgb(0 0 0 / 8%),\n 0 6px 14px rgb(0 30 80 / 24%);\n }\n\n [data-disabled] > & {\n box-shadow: none;\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition-duration: 0s;\n }\n `,\n thumbDefault: css`\n width: 18px;\n height: 18px;\n `,\n thumbSmall: css`\n width: 12px;\n height: 12px;\n `,\n}));\n\nexport const rootVariants = cva(styles.root, {\n defaultVariants: {\n size: 'default',\n },\n variants: {\n size: {\n default: styles.rootDefault,\n small: styles.rootSmall,\n },\n },\n});\n\nexport const thumbVariants = cva(styles.thumb, {\n defaultVariants: {\n size: 'default',\n },\n variants: {\n size: {\n default: styles.thumbDefault,\n small: styles.thumbSmall,\n },\n },\n});\n"],"mappings":";;;;;AAMA,MAAa,SAAS,oBAAoB,EAAE,KAAK,cAAc;CAC7D,MAAM,GAAG;;;;;;;;;;aAUE,OAAO,cAAc;;;sBAGZ,OAAO,cAAc;oBACvB,OAAO,cAAc;;;;;;CAMvC,UAAU,GAAG;;;;;;;;;;CAUb,eAAe,GAAG;;;;;;;;;;CAUlB,WAAW,GAAG;;;;;;;;CAQd,gBAAgB,GAAG;;;;;;;;CAQnB,WAAW,GAAG;;;;aAIH,UAAU,SAAS;;CAE9B,SAAS,GAAG;;;;;;;;;;;;;;;;;CAiBZ,MAAM,GAAG;;;;;;;;;;;;;;;;;;kBAkBO,OAAO,mBAAmB;;;;;yBAKnB,OAAO,cAAc;yBACrB,OAAO,cAAc;;;;;;;;;;MAUxC,UAAU;;;oBAGI,OAAO,UAAU;;;;oBAIjB,UAAU,SAAS;;;;sBAIjB,UAAU,cAAc;;;;;;;;;;;;;CAa5C,aAAa,GAAG;;;;;CAKhB,WAAW,GAAG;;;;;CAKd,OAAO,GAAG;;;;;;;;;;kBAUM,OAAO,iBAAiB;;;;;;mCAMP,OAAO,cAAc;;;;;;;;;;;;;;;;;CAiBtD,cAAc,GAAG;;;;CAIjB,YAAY,GAAG;;;;AAIjB,EAAE;AAEF,MAAa,eAAe,IAAI,OAAO,MAAM;CAC3C,iBAAiB,EACf,MAAM,UACR;CACA,UAAU,EACR,MAAM;EACJ,SAAS,OAAO;EAChB,OAAO,OAAO;CAChB,EACF;AACF,CAAC;AAED,MAAa,gBAAgB,IAAI,OAAO,OAAO;CAC7C,iBAAiB,EACf,MAAM,UACR;CACA,UAAU,EACR,MAAM;EACJ,SAAS,OAAO;EAChB,OAAO,OAAO;CAChB,EACF;AACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.mjs","names":[],"sources":["../../../src/base-ui/Upload/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\
|
|
1
|
+
{"version":3,"file":"style.mjs","names":[],"sources":["../../../src/base-ui/Upload/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\n\nimport { brandCssVar } from '@/styles/brandCssVar';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n dragger: css`\n cursor: pointer;\n\n display: flex;\n flex-direction: column;\n gap: 6px;\n align-items: center;\n justify-content: center;\n\n padding-block: 28px;\n padding-inline: 20px;\n border: 1px dashed ${cssVar.colorBorder};\n border-radius: ${cssVar.borderRadiusLG};\n\n text-align: center;\n\n background: ${cssVar.colorFillQuaternary};\n\n transition:\n border-color 0.15s,\n background 0.15s;\n\n &:hover {\n border-color: ${cssVar.colorTextTertiary};\n background: ${cssVar.colorFillTertiary};\n }\n\n &:focus-visible {\n outline: 2px solid ${brandCssVar.colorBrand};\n outline-offset: 2px;\n }\n\n &[aria-disabled='true'] {\n cursor: not-allowed;\n opacity: 0.5;\n }\n `,\n draggerDescription: css`\n font-size: 12px;\n color: ${cssVar.colorTextTertiary};\n `,\n draggerIcon: css`\n color: ${cssVar.colorTextTertiary};\n `,\n draggerOver: css`\n border-color: ${cssVar.colorTextTertiary};\n background: ${cssVar.colorFillTertiary};\n `,\n draggerTitle: css`\n font-weight: 500;\n color: ${cssVar.colorText};\n `,\n trigger: css`\n cursor: pointer;\n display: inline-block;\n\n &[aria-disabled='true'] {\n cursor: not-allowed;\n opacity: 0.5;\n }\n\n &:focus-visible {\n outline: 2px solid ${brandCssVar.colorBrand};\n outline-offset: 2px;\n }\n `,\n}));\n"],"mappings":";;;AAIA,MAAa,SAAS,oBAAoB,EAAE,KAAK,cAAc;CAC7D,SAAS,GAAG;;;;;;;;;;;yBAWW,OAAO,YAAY;qBACvB,OAAO,eAAe;;;;kBAIzB,OAAO,oBAAoB;;;;;;;sBAOvB,OAAO,kBAAkB;oBAC3B,OAAO,kBAAkB;;;;2BAIlB,YAAY,WAAW;;;;;;;;;CAShD,oBAAoB,GAAG;;aAEZ,OAAO,kBAAkB;;CAEpC,aAAa,GAAG;aACL,OAAO,kBAAkB;;CAEpC,aAAa,GAAG;oBACE,OAAO,kBAAkB;kBAC3B,OAAO,kBAAkB;;CAEzC,cAAc,GAAG;;aAEN,OAAO,UAAU;;CAE5B,SAAS,GAAG;;;;;;;;;;2BAUa,YAAY,WAAW;;;;AAIlD,EAAE"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { ColorScaleItem } from "../types.mjs";
|
|
2
2
|
//#region src/color/colors/primary.d.ts
|
|
3
3
|
/**
|
|
4
|
-
* Jinmi
|
|
5
|
-
*
|
|
4
|
+
* Jinmi accent (design-system board 06). Step [9] is colorPrimary: accent text and
|
|
5
|
+
* selected chips (#06759A light, AA on white; #5CD6F2 dark). Filled controls —
|
|
6
|
+
* primary buttons, switches, checkboxes, radios, progress, sliders — use ink
|
|
7
|
+
* (`inkToken` / `inkCssVar`) instead.
|
|
6
8
|
*/
|
|
7
9
|
declare const primary: ColorScaleItem;
|
|
8
10
|
//#endregion
|
|
@@ -1,68 +1,70 @@
|
|
|
1
1
|
//#region src/color/colors/primary.ts
|
|
2
2
|
/**
|
|
3
|
-
* Jinmi
|
|
4
|
-
*
|
|
3
|
+
* Jinmi accent (design-system board 06). Step [9] is colorPrimary: accent text and
|
|
4
|
+
* selected chips (#06759A light, AA on white; #5CD6F2 dark). Filled controls —
|
|
5
|
+
* primary buttons, switches, checkboxes, radios, progress, sliders — use ink
|
|
6
|
+
* (`inkToken` / `inkCssVar`) instead.
|
|
5
7
|
*/
|
|
6
8
|
const primary = {
|
|
7
9
|
dark: [
|
|
8
|
-
"#
|
|
9
|
-
"#
|
|
10
|
-
"#
|
|
11
|
-
"#
|
|
12
|
-
"#
|
|
13
|
-
"#
|
|
14
|
-
"#
|
|
15
|
-
"#
|
|
16
|
-
"#
|
|
17
|
-
"#
|
|
18
|
-
"#
|
|
19
|
-
"#
|
|
20
|
-
"#
|
|
10
|
+
"#050d10",
|
|
11
|
+
"#0e2329",
|
|
12
|
+
"#123139",
|
|
13
|
+
"#15414c",
|
|
14
|
+
"#1b5866",
|
|
15
|
+
"#23768a",
|
|
16
|
+
"#2c97b0",
|
|
17
|
+
"#3fc9e8",
|
|
18
|
+
"#4fd0ee",
|
|
19
|
+
"#5cd6f2",
|
|
20
|
+
"#8be4f6",
|
|
21
|
+
"#bdf0fa",
|
|
22
|
+
"#e8fbfe"
|
|
21
23
|
],
|
|
22
24
|
darkA: [
|
|
23
|
-
"rgba(
|
|
24
|
-
"rgba(
|
|
25
|
-
"rgba(
|
|
26
|
-
"rgba(
|
|
27
|
-
"rgba(
|
|
28
|
-
"rgba(
|
|
29
|
-
"rgba(
|
|
30
|
-
"rgba(
|
|
31
|
-
"rgba(
|
|
32
|
-
"rgba(
|
|
33
|
-
"rgba(
|
|
34
|
-
"rgba(
|
|
35
|
-
"rgba(
|
|
25
|
+
"rgba(92, 214, 242, 0.02)",
|
|
26
|
+
"rgba(92, 214, 242, 0.08)",
|
|
27
|
+
"rgba(92, 214, 242, 0.16)",
|
|
28
|
+
"rgba(92, 214, 242, 0.22)",
|
|
29
|
+
"rgba(92, 214, 242, 0.36)",
|
|
30
|
+
"rgba(92, 214, 242, 0.48)",
|
|
31
|
+
"rgba(92, 214, 242, 0.6)",
|
|
32
|
+
"rgba(92, 214, 242, 0.72)",
|
|
33
|
+
"rgba(92, 214, 242, 0.84)",
|
|
34
|
+
"rgba(92, 214, 242, 0.88)",
|
|
35
|
+
"rgba(92, 214, 242, 0.92)",
|
|
36
|
+
"rgba(92, 214, 242, 0.96)",
|
|
37
|
+
"rgba(92, 214, 242, 0.98)"
|
|
36
38
|
],
|
|
37
39
|
light: [
|
|
38
40
|
"#ffffff",
|
|
39
|
-
"#
|
|
40
|
-
"#
|
|
41
|
-
"#
|
|
42
|
-
"#
|
|
43
|
-
"#
|
|
44
|
-
"#
|
|
45
|
-
"#
|
|
46
|
-
"#
|
|
47
|
-
"#
|
|
48
|
-
"#
|
|
49
|
-
"#
|
|
50
|
-
"#
|
|
41
|
+
"#e6f9fd",
|
|
42
|
+
"#cdf3fb",
|
|
43
|
+
"#b4ecf7",
|
|
44
|
+
"#9be3f3",
|
|
45
|
+
"#5fcfea",
|
|
46
|
+
"#22b5d9",
|
|
47
|
+
"#0e99bf",
|
|
48
|
+
"#0a86ac",
|
|
49
|
+
"#06759a",
|
|
50
|
+
"#055a77",
|
|
51
|
+
"#044a62",
|
|
52
|
+
"#02313f"
|
|
51
53
|
],
|
|
52
54
|
lightA: [
|
|
53
|
-
"rgba(
|
|
54
|
-
"rgba(
|
|
55
|
-
"rgba(
|
|
56
|
-
"rgba(
|
|
57
|
-
"rgba(
|
|
58
|
-
"rgba(
|
|
59
|
-
"rgba(
|
|
60
|
-
"rgba(
|
|
61
|
-
"rgba(
|
|
62
|
-
"rgba(
|
|
63
|
-
"rgba(
|
|
64
|
-
"rgba(
|
|
65
|
-
"rgba(
|
|
55
|
+
"rgba(6, 117, 154, 0.02)",
|
|
56
|
+
"rgba(6, 117, 154, 0.08)",
|
|
57
|
+
"rgba(6, 117, 154, 0.16)",
|
|
58
|
+
"rgba(6, 117, 154, 0.22)",
|
|
59
|
+
"rgba(6, 117, 154, 0.36)",
|
|
60
|
+
"rgba(6, 117, 154, 0.48)",
|
|
61
|
+
"rgba(6, 117, 154, 0.6)",
|
|
62
|
+
"rgba(6, 117, 154, 0.72)",
|
|
63
|
+
"rgba(6, 117, 154, 0.84)",
|
|
64
|
+
"rgba(6, 117, 154, 0.88)",
|
|
65
|
+
"rgba(6, 117, 154, 0.92)",
|
|
66
|
+
"rgba(6, 117, 154, 0.96)",
|
|
67
|
+
"rgba(6, 117, 154, 0.98)"
|
|
66
68
|
]
|
|
67
69
|
};
|
|
68
70
|
//#endregion
|