diff --git a/examples/s2-parcel-example/src/App.js b/examples/s2-parcel-example/src/App.js index 94292892fe7..26200afa8a1 100644 --- a/examples/s2-parcel-example/src/App.js +++ b/examples/s2-parcel-example/src/App.js @@ -14,6 +14,7 @@ import React, { useState } from "react"; import "@react-spectrum/s2/page.css"; import { ActionButton, + ActionButtonGroup, ActionMenu, Button, ButtonGroup, @@ -34,6 +35,7 @@ import { TableView, Text, ToggleButton, + ToggleButtonGroup } from "@react-spectrum/s2"; import Edit from "@react-spectrum/s2/icons/Edit"; import Section from "./components/Section"; @@ -100,6 +102,16 @@ function App() { > Link Button + + Cut + Copy + Paste + + + Bold + Italic + Underline + diff --git a/examples/s2-vite-project/src/App.tsx b/examples/s2-vite-project/src/App.tsx index 041a6b1f96e..8ea3e636222 100644 --- a/examples/s2-vite-project/src/App.tsx +++ b/examples/s2-vite-project/src/App.tsx @@ -14,6 +14,7 @@ import React, { useState } from "react"; import "@react-spectrum/s2/page.css"; import { ActionButton, + ActionButtonGroup, ActionMenu, Button, ButtonGroup, @@ -34,6 +35,7 @@ import { TableView, Text, ToggleButton, + ToggleButtonGroup } from "@react-spectrum/s2"; import Edit from "@react-spectrum/s2/icons/Edit"; import Section from "./components/Section"; @@ -100,6 +102,16 @@ function App() { > Link Button + + Cut + Copy + Paste + + + Bold + Italic + Underline + diff --git a/examples/s2-webpack-5-example/src/App.js b/examples/s2-webpack-5-example/src/App.js index 16c74f390b1..d2cc185657c 100644 --- a/examples/s2-webpack-5-example/src/App.js +++ b/examples/s2-webpack-5-example/src/App.js @@ -14,6 +14,7 @@ import React, { useState } from "react"; import "@react-spectrum/s2/page.css"; import { ActionButton, + ActionButtonGroup, ActionMenu, Button, ButtonGroup, @@ -34,6 +35,7 @@ import { TableView, Text, ToggleButton, + ToggleButtonGroup } from "@react-spectrum/s2"; import Edit from "@react-spectrum/s2/icons/Edit"; import Section from "./components/Section"; @@ -100,6 +102,16 @@ function App() { > Link Button + + Cut + Copy + Paste + + + Bold + Italic + Underline + diff --git a/starters/tailwind/src/ToggleButton.tsx b/starters/tailwind/src/ToggleButton.tsx index d8d7d8c86ce..4f6bce13a27 100644 --- a/starters/tailwind/src/ToggleButton.tsx +++ b/starters/tailwind/src/ToggleButton.tsx @@ -5,7 +5,7 @@ import { focusRing } from './utils'; let styles = tv({ extend: focusRing, - base: 'px-5 py-2 text-sm text-center transition rounded-lg border border-black/10 dark:border-white/10 forced-colors:border-[ButtonBorder] shadow-[inset_0_1px_0_0_rgba(255,255,255,0.1)] dark:shadow-none cursor-default forced-color-adjust-none', + base: 'px-5 py-2 [&:has(svg:only-child)]:px-2 text-sm text-center transition rounded-lg border border-black/10 dark:border-white/10 forced-colors:border-[ButtonBorder] shadow-[inset_0_1px_0_0_rgba(255,255,255,0.1)] dark:shadow-none cursor-default forced-color-adjust-none', variants: { isSelected: { false: 'bg-gray-100 hover:bg-gray-200 pressed:bg-gray-300 text-gray-800 dark:bg-zinc-600 dark:hover:bg-zinc-500 dark:pressed:bg-zinc-400 dark:text-zinc-100 forced-colors:!bg-[ButtonFace] forced-colors:!text-[ButtonText]', diff --git a/starters/tailwind/src/ToggleButtonGroup.tsx b/starters/tailwind/src/ToggleButtonGroup.tsx new file mode 100644 index 00000000000..e1b92c1dd30 --- /dev/null +++ b/starters/tailwind/src/ToggleButtonGroup.tsx @@ -0,0 +1,21 @@ +import React from 'react'; +import { composeRenderProps, ToggleButtonGroup as RACToggleButtonGroup, ToggleButtonGroupProps } from 'react-aria-components'; +import { tv } from 'tailwind-variants'; + +const styles = tv({ + base: 'flex gap-1', + variants: { + orientation: { + horizontal: 'flex-row', + vertical: 'flex-col' + } + } +}); + +export function ToggleButtonGroup(props: ToggleButtonGroupProps) { + return ( + styles({orientation: props.orientation || 'horizontal', className}))} /> + ); +} diff --git a/starters/tailwind/stories/ToggleButtonGroup.stories.tsx b/starters/tailwind/stories/ToggleButtonGroup.stories.tsx new file mode 100644 index 00000000000..90e3ea2b9a4 --- /dev/null +++ b/starters/tailwind/stories/ToggleButtonGroup.stories.tsx @@ -0,0 +1,27 @@ +import type { Meta } from '@storybook/react'; +import React from 'react'; +import { ToggleButton } from '../src/ToggleButton'; +import { ToggleButtonGroup } from '../src/ToggleButtonGroup'; +import { Bold, Italic, Underline } from 'lucide-react' + +const meta: Meta = { + component: ToggleButtonGroup, + parameters: { + layout: 'centered' + }, + tags: ['autodocs'] +}; + +export default meta; + +export const Example = (args: any) => ( + + + + + +); + +Example.args = { + selectionMode: 'multiple' +};