diff --git a/.chromatic-fc/.parcelrc b/.chromatic-fc/.parcelrc index ad8b3c54a83..027801f9afe 100644 --- a/.chromatic-fc/.parcelrc +++ b/.chromatic-fc/.parcelrc @@ -7,6 +7,6 @@ "packages/**/intl/**/*.json": ["parcel-transformer-intl"], // Disable PostCSS from running over style macro output "packages/@react-spectrum/s2/**/*.css": ["@parcel/transformer-css"], - "packages/@react-spectrum/s2/**/*.svg": ["@parcel/transformer-svg-react"] + "packages/@react-spectrum/{s2,ai}/**/*.svg": ["@parcel/transformer-svg-react"] } } diff --git a/.chromatic/.parcelrc b/.chromatic/.parcelrc index 1e314e5cdce..4a3464e0642 100644 --- a/.chromatic/.parcelrc +++ b/.chromatic/.parcelrc @@ -7,6 +7,6 @@ "packages/**/intl/**/*.json": ["parcel-transformer-intl"], // Disable PostCSS from running over style macro output "packages/@react-spectrum/s2/**/*.css": ["@parcel/transformer-css"], - "packages/@react-spectrum/s2/**/*.svg": ["@parcel/transformer-svg-react"] + "packages/@react-spectrum/{s2,ai}/**/*.svg": ["@parcel/transformer-svg-react"] } } diff --git a/packages/@react-spectrum/ai/src/AttachmentList.tsx b/packages/@react-spectrum/ai/src/AttachmentList.tsx index 2856c8cfe15..9ccb19862ce 100644 --- a/packages/@react-spectrum/ai/src/AttachmentList.tsx +++ b/packages/@react-spectrum/ai/src/AttachmentList.tsx @@ -18,13 +18,17 @@ import { forwardRefType, GlobalDOMAttributes } from '@react-types/shared'; -import {baseColor, focusRing, style} from '@react-spectrum/s2/style' with {type: 'macro'}; +import { + baseColor, + focusRing, + iconStyle, + style +} from '@react-spectrum/s2/style' with {type: 'macro'}; import {BasicHorizontalCard} from './HorizontalCard'; import {Button} from 'react-aria-components/Button'; import {CardProps} from '@react-spectrum/s2/Card'; -import Close from '@react-spectrum/s2/icons/Close'; +import Cross from '../ui-icons/Cross'; import {forwardRef, ReactNode, useRef} from 'react'; -import {iconStyle} from '@react-spectrum/s2/style' with {type: 'macro'}; import {ImageContext} from '@react-spectrum/s2/Image'; // @ts-ignore import intlMessages from '../intl/*.json'; @@ -86,17 +90,18 @@ const styles = style<{ isFocusVisible: hoverBackground, isPressed: hoverBackground }, - '--iconPrimary': { - type: 'color', - value: { - default: baseColor('neutral'), - isDisabled: 'disabled', - forcedColors: { - default: 'ButtonText', - isDisabled: 'GrayText' - } + color: { + default: baseColor('neutral'), + isDisabled: 'disabled', + forcedColors: { + default: 'ButtonText', + isDisabled: 'GrayText' } }, + '--iconPrimary': { + type: 'fill', + value: 'currentColor' + }, outlineColor: { default: 'focus-ring', forcedColors: 'Highlight' @@ -104,14 +109,6 @@ const styles = style<{ disableTapHighlight: true }); -const closeIconStyle = ({size = 'M'}) => { - if (size === 'S') return iconStyle({size: 'XS'}); - else if (size === 'M') return iconStyle({size: 'S'}); - else if (size === 'L') return iconStyle({size: 'M'}); - else if (size === 'XL') return iconStyle({size: 'L'}); - else return iconStyle({size: 'S'}); -}; - const CloseButton = function CloseButton(props) { let ref = useRef(null); // oxlint-disable react/react-compiler @@ -124,7 +121,7 @@ const CloseButton = function CloseButton(props) { className={renderProps => mergeStyles(styles({...renderProps, size: props.size || 'M'}), props.styles) }> - + ); // oxlint-enable react/react-compiler diff --git a/packages/@react-spectrum/ai/src/ResponseStatus.tsx b/packages/@react-spectrum/ai/src/ResponseStatus.tsx index 7d854c7ae3a..37d84e4819b 100644 --- a/packages/@react-spectrum/ai/src/ResponseStatus.tsx +++ b/packages/@react-spectrum/ai/src/ResponseStatus.tsx @@ -14,7 +14,6 @@ import {AriaLabelingProps, DOMProps, DOMRef, GlobalDOMAttributes} from '@react-t import { baseColor, focusRing, - iconStyle, lightDark, space, style @@ -22,7 +21,7 @@ import { import {Button} from 'react-aria-components/Button'; import {CenterBaseline} from '@react-spectrum/s2/CenterBaseline'; import CheckmarkCircle from '@react-spectrum/s2/icons/CheckmarkCircle'; -import ChevronRight from '@react-spectrum/s2/icons/ChevronRight'; +import Chevron from '../ui-icons/Chevron'; import CloseCircle from '@react-spectrum/s2/icons/CloseCircle'; import { DisclosureStateContext, @@ -411,18 +410,3 @@ export const ResponseStatusPanel = forwardRef(function ResponseStatusPanel( ); }); - -// Ideally I would use iconStyle but since it must be fully evaluated at compile time — passing a runtime variable (size prop) to it is not allowed. -// TODO: Should iconStyle also return a runtime function? -function Chevron({size}) { - switch (size) { - case 'S': - return ; - case 'M': - return ; - case 'L': - return ; - case 'XL': - return ; - } -} diff --git a/packages/@react-spectrum/ai/ui-icons/Chevron.tsx b/packages/@react-spectrum/ai/ui-icons/Chevron.tsx new file mode 100644 index 00000000000..1db397ac23e --- /dev/null +++ b/packages/@react-spectrum/ai/ui-icons/Chevron.tsx @@ -0,0 +1,75 @@ +/* + * Copyright 2024 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import Chevron_L from './S2_ChevronSize200.svg'; +import Chevron_M from './S2_ChevronSize100.svg'; +import Chevron_S from './S2_ChevronSize75.svg'; +import Chevron_XL from './S2_ChevronSize300.svg'; +import Chevron_XS from './S2_ChevronSize50.svg'; +import Chevron_XXL from './S2_ChevronSize400.svg'; +import {ReactNode, SVGProps} from 'react'; +import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; + +let styles = style({ + width: { + size: { + M: 10, + L: 12, + XL: 14, + XXL: 16, + XS: 6, + S: 10 + } + }, + height: { + size: { + M: 10, + L: 12, + XL: 14, + XXL: 16, + XS: 6, + S: 10 + } + } +}); + +export default function Chevron( + props: SVGProps & {size?: 'M' | 'L' | 'XL' | 'XXL' | 'XS' | 'S'} +): ReactNode { + let {size = 'M', ...otherProps} = props; + switch (size) { + case 'M': + return ( + + ); + case 'L': + return ( + + ); + case 'XL': + return ( + + ); + case 'XXL': + return ( + + ); + case 'XS': + return ( + + ); + case 'S': + return ( + + ); + } +} diff --git a/packages/@react-spectrum/ai/ui-icons/Cross.tsx b/packages/@react-spectrum/ai/ui-icons/Cross.tsx new file mode 100644 index 00000000000..96b1bf045d2 --- /dev/null +++ b/packages/@react-spectrum/ai/ui-icons/Cross.tsx @@ -0,0 +1,74 @@ +/* + * Copyright 2024 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import Cross_L from './S2_CrossSize200.svg'; +import Cross_M from './S2_CrossSize100.svg'; +import Cross_S from './S2_CrossSize75.svg'; +import Cross_XL from './S2_CrossSize300.svg'; +import Cross_XXL from './S2_CrossSize400.svg'; +import Cross_XXXL from './S2_CrossSize500.svg'; +import Cross_XXXXL from './S2_CrossSize600.svg'; +import {ReactNode, SVGProps} from 'react'; +import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; + +let styles = style({ + width: { + size: { + M: 8, + L: 10, + XL: 12, + XXL: 12, + XXXL: 14, + XXXXL: 16, + S: 8 + } + }, + height: { + size: { + M: 8, + L: 10, + XL: 12, + XXL: 12, + XXXL: 14, + XXXXL: 16, + S: 8 + } + } +}); + +export default function Cross( + props: SVGProps & {size?: 'M' | 'L' | 'XL' | 'XXL' | 'XXXL' | 'XXXXL' | 'S'} +): ReactNode { + let {size = 'M', ...otherProps} = props; + switch (size) { + case 'M': + return ; + case 'L': + return ; + case 'XL': + return ; + case 'XXL': + return ( + + ); + case 'XXXL': + return ( + + ); + case 'XXXXL': + return ( + + ); + case 'S': + return ; + } +} diff --git a/packages/@react-spectrum/ai/ui-icons/S2_ChevronSize100.svg b/packages/@react-spectrum/ai/ui-icons/S2_ChevronSize100.svg new file mode 100644 index 00000000000..2c9651d4a76 --- /dev/null +++ b/packages/@react-spectrum/ai/ui-icons/S2_ChevronSize100.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/packages/@react-spectrum/ai/ui-icons/S2_ChevronSize200.svg b/packages/@react-spectrum/ai/ui-icons/S2_ChevronSize200.svg new file mode 100644 index 00000000000..432a261200a --- /dev/null +++ b/packages/@react-spectrum/ai/ui-icons/S2_ChevronSize200.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/packages/@react-spectrum/ai/ui-icons/S2_ChevronSize300.svg b/packages/@react-spectrum/ai/ui-icons/S2_ChevronSize300.svg new file mode 100644 index 00000000000..d73f848a1e7 --- /dev/null +++ b/packages/@react-spectrum/ai/ui-icons/S2_ChevronSize300.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/packages/@react-spectrum/ai/ui-icons/S2_ChevronSize400.svg b/packages/@react-spectrum/ai/ui-icons/S2_ChevronSize400.svg new file mode 100644 index 00000000000..6ec8b418664 --- /dev/null +++ b/packages/@react-spectrum/ai/ui-icons/S2_ChevronSize400.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/packages/@react-spectrum/ai/ui-icons/S2_ChevronSize50.svg b/packages/@react-spectrum/ai/ui-icons/S2_ChevronSize50.svg new file mode 100644 index 00000000000..aca7a74e41a --- /dev/null +++ b/packages/@react-spectrum/ai/ui-icons/S2_ChevronSize50.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/packages/@react-spectrum/ai/ui-icons/S2_ChevronSize75.svg b/packages/@react-spectrum/ai/ui-icons/S2_ChevronSize75.svg new file mode 100644 index 00000000000..ab538918da1 --- /dev/null +++ b/packages/@react-spectrum/ai/ui-icons/S2_ChevronSize75.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/packages/@react-spectrum/ai/ui-icons/S2_CrossSize100.svg b/packages/@react-spectrum/ai/ui-icons/S2_CrossSize100.svg new file mode 100644 index 00000000000..90ec9507fea --- /dev/null +++ b/packages/@react-spectrum/ai/ui-icons/S2_CrossSize100.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/packages/@react-spectrum/ai/ui-icons/S2_CrossSize200.svg b/packages/@react-spectrum/ai/ui-icons/S2_CrossSize200.svg new file mode 100644 index 00000000000..230c2d794f2 --- /dev/null +++ b/packages/@react-spectrum/ai/ui-icons/S2_CrossSize200.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/packages/@react-spectrum/ai/ui-icons/S2_CrossSize300.svg b/packages/@react-spectrum/ai/ui-icons/S2_CrossSize300.svg new file mode 100644 index 00000000000..7450b3f6332 --- /dev/null +++ b/packages/@react-spectrum/ai/ui-icons/S2_CrossSize300.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/packages/@react-spectrum/ai/ui-icons/S2_CrossSize400.svg b/packages/@react-spectrum/ai/ui-icons/S2_CrossSize400.svg new file mode 100644 index 00000000000..37d09069aa1 --- /dev/null +++ b/packages/@react-spectrum/ai/ui-icons/S2_CrossSize400.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/packages/@react-spectrum/ai/ui-icons/S2_CrossSize500.svg b/packages/@react-spectrum/ai/ui-icons/S2_CrossSize500.svg new file mode 100644 index 00000000000..6ba49186e42 --- /dev/null +++ b/packages/@react-spectrum/ai/ui-icons/S2_CrossSize500.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/packages/@react-spectrum/ai/ui-icons/S2_CrossSize600.svg b/packages/@react-spectrum/ai/ui-icons/S2_CrossSize600.svg new file mode 100644 index 00000000000..90309719a57 --- /dev/null +++ b/packages/@react-spectrum/ai/ui-icons/S2_CrossSize600.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/packages/@react-spectrum/ai/ui-icons/S2_CrossSize75.svg b/packages/@react-spectrum/ai/ui-icons/S2_CrossSize75.svg new file mode 100644 index 00000000000..88fc585b476 --- /dev/null +++ b/packages/@react-spectrum/ai/ui-icons/S2_CrossSize75.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file