# Selection Actions

- Page: https://jiguang132.com/resources/beautiful-ui/docs/selection-actions
- Resource: Beautiful UI (https://jiguang132.com/resources/beautiful-ui.md)
- All guides: https://jiguang132.com/resources/beautiful-ui/docs.md

Install: `npx shadcn@latest add https://jiguang132.com/r/beautiful-ui/selection-actions.json`


## When to use

Prototype an AI editing toolbar over a selected passage.

## Key props and data

| Native prop | Meaning |
|---|---|
| `text` | Partial lead, original and prewritten rewrite text. |
| `actions` | primary/more arrays with id, icon and optional action/busyLabel. |
| `labels` | Translate keep, discard and placeholder. |
| `onAction` | Receives the chosen action name. |

## Interaction and state checks

Test primary and additional actions, the busy display, and keep/discard. Handle the action name in your own service.

## Integration boundaries

The rewrite is a pre-supplied demo, not generated AI output. There is no public API returning the actual selected range or asynchronously applying a server rewrite.

The runnable usage and source reference below preserve the native API. These practical guides do not claim a full translation of upstream prose.


## Runnable usage

Install a complete example below first, then import its installed entry. Parameterized example source, shared helpers, native components and CSS are included; no manual relative-import edits are required.

```tsx
import Demo from '@/components/beautiful-ui/examples/presets/selection-actions-edit-actions';
import '@/styles/beautiful-ui.css';
export default function Example() { return <Demo />; }

```


## Preview states

Default, Edit actions

Demo state and mock data do not provide a backend service. Inspect the component props before wiring real data.

Highlight a passage and hand it to the agent to rewrite.



## Complete example installation

These are runnable native states and parameterized usage scenarios, not additional components. Each bundle includes its source closure, helpers, pinned dependencies, independent CSS and licenses. Scenario names are not new native component props; consult the source API below.

### Default

```bash
npx shadcn@latest add https://jiguang132.com/r/beautiful-ui/examples/selection-actions/selection-actions-default.json
```

Default import: `@/components/beautiful-ui/examples/presets/selection-actions-default`

Dependencies: `class-variance-authority@0.7.1`, `clsx@2.1.1`, `iconoir-react@7.11.1`, `tailwind-merge@3.6.0`, `shadow-plugin@2.1.1`

### Edit actions

```bash
npx shadcn@latest add https://jiguang132.com/r/beautiful-ui/examples/selection-actions/selection-actions-edit-actions.json
```

Default import: `@/components/beautiful-ui/examples/presets/selection-actions-edit-actions`

Dependencies: `class-variance-authority@0.7.1`, `clsx@2.1.1`, `iconoir-react@7.11.1`, `lucide-react@1.24.0`, `tailwind-merge@3.6.0`, `shadow-plugin@2.1.1`

Initialize Tailwind CSS v4, import beautiful-ui.css once and synchronize theme with the host html dark class. Examples read html lang for Chinese/English and do not supply backend, authentication or recording. Network/clipboard availability still depends on the browser.


## Source-backed parameter reference

Implementation signatures and types are generated from the pinned local source. Optional props, native inherited types, union branches and never exclusions are preserved. A forwardRef implementation's ref is a React reference, not an additional business prop.


```ts
SelectionActions({
  text: textProp,
  actions = DEFAULT_ACTIONS,
  labels,
  onAction,
}: SelectionActionsProps = {})
```



```ts
export type SelectionText = {
  lead: string;
  original: string;
  rewrite: string;
};

export type SelectionAction = {
  id: string;
  icon: ReactNode;
  action?: string;
  busyLabel?: string;
};

export type SelectionActionSet = {
  primary: SelectionAction[];
  more: SelectionAction[];
};

export type SelectionActionsLabels = {
  keep: string;
  discard: string;
  placeholder: string;
};

export type SelectionActionsProps = {
  /** Accepted for gallery/registry parity; not used by this bar. */
  variant?: string;
  /** The passage shown above the bar. */
  text?: Partial<SelectionText>;
  /** The AI actions offered in the bar. */
  actions?: SelectionActionSet;
  /** Prominent copy strings. */
  labels?: Partial<SelectionActionsLabels>;
  /** Called with the action name whenever an edit is run. */
  onAction?: (action: string) => void;
};
```


### Destructuring defaults in source

Only defaults written directly in parameter/props destructuring are listed. Conditional expressions, runtime theme and computed values require source inspection; this is not an exhaustive behavior-default list.


```ts
// SelectionActions
actions = DEFAULT_ACTIONS
```


### Native and external types

External types remain defined by React or native dependencies, not manually expanded into guessed props. The installed version's TypeScript definitions are authoritative.


```ts
Partial<SelectionText>
ReactNode
Partial<SelectionActionsLabels>
```

---

Index of all JGuang resources: https://jiguang132.com/llms.txt
