Skip to content

Commit 197ed5d

Browse files
committed
docs: clipboard
1 parent c6c8507 commit 197ed5d

File tree

9 files changed

+71
-0
lines changed

9 files changed

+71
-0
lines changed

packages/react/src/components/clipboard/clipboard.stories.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,6 @@ export { Basic } from './examples/basic'
1010
export { Context } from './examples/context'
1111
export { Controlled } from './examples/controlled'
1212
export { CustomTimeout } from './examples/custom-timeout'
13+
export { Programmatic } from './examples/programmatic'
1314
export { RootProvider } from './examples/root-provider'
1415
export { ValueText } from './examples/value-text'
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { Clipboard } from '@ark-ui/react/clipboard'
2+
3+
export const Programmatic = () => {
4+
return (
5+
<Clipboard.Root value="https://ark-ui.com">
6+
<Clipboard.Context>
7+
{(clipboard) => <button onClick={() => clipboard.copy()}>{clipboard.copied ? 'Copied!' : 'Copy URL'}</button>}
8+
</Clipboard.Context>
9+
</Clipboard.Root>
10+
)
11+
}

packages/solid/src/components/clipboard/clipboard.stories.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,6 @@ export { Basic } from './examples/basic'
1010
export { Context } from './examples/context'
1111
export { Controlled } from './examples/controlled'
1212
export { CustomTimeout } from './examples/custom-timeout'
13+
export { Programmatic } from './examples/programmatic'
1314
export { RootProvider } from './examples/root-provider'
1415
export { ValueText } from './examples/value-text'
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { Clipboard } from '@ark-ui/solid/clipboard'
2+
3+
export const Programmatic = () => {
4+
return (
5+
<Clipboard.Root value="https://ark-ui.com">
6+
<Clipboard.Context>
7+
{(clipboard) => (
8+
<button onClick={() => clipboard().copy()}>{clipboard().copied ? 'Copied!' : 'Copy URL'}</button>
9+
)}
10+
</Clipboard.Context>
11+
</Clipboard.Root>
12+
)
13+
}

packages/svelte/src/lib/components/clipboard/clipboard.stories.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import BasicExample from './examples/basic.svelte'
33
import ContextExample from './examples/context.svelte'
44
import ControlledExample from './examples/controlled.svelte'
55
import CustomTimeoutExample from './examples/custom-timeout.svelte'
6+
import ProgrammaticExample from './examples/programmatic.svelte'
67
import RootProviderExample from './examples/root-provider.svelte'
78
import ValueTextExample from './examples/value-text.svelte'
89

@@ -36,6 +37,12 @@ export const CustomTimeout = {
3637
}),
3738
}
3839

40+
export const Programmatic = {
41+
render: () => ({
42+
Component: ProgrammaticExample,
43+
}),
44+
}
45+
3946
export const RootProvider = {
4047
render: () => ({
4148
Component: RootProviderExample,
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<script lang="ts">
2+
import { Clipboard } from '@ark-ui/svelte/clipboard'
3+
</script>
4+
5+
<Clipboard.Root value="https://ark-ui.com">
6+
<Clipboard.Context>
7+
{#snippet render(clipboard)}
8+
<button onclick={() => clipboard().copy()}>
9+
{clipboard().copied ? 'Copied!' : 'Copy URL'}
10+
</button>
11+
{/snippet}
12+
</Clipboard.Context>
13+
</Clipboard.Root>

packages/vue/src/components/clipboard/clipboard.stories.vue

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import Basic from './examples/basic.vue'
33
import Context from './examples/context.vue'
44
import Controlled from './examples/controlled.vue'
55
import CustomTimeout from './examples/custom-timeout.vue'
6+
import Programmatic from './examples/programmatic.vue'
67
import RootProvider from './examples/root-provider.vue'
78
import ValueText from './examples/value-text.vue'
89
</script>
@@ -20,6 +21,9 @@ import ValueText from './examples/value-text.vue'
2021
<Variant title="CustomTimeout">
2122
<CustomTimeout />
2223
</Variant>
24+
<Variant title="Programmatic">
25+
<Programmatic />
26+
</Variant>
2327
<Variant title="RootProvider">
2428
<RootProvider />
2529
</Variant>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<script setup lang="ts">
2+
import { Clipboard } from '@ark-ui/vue/clipboard'
3+
</script>
4+
5+
<template>
6+
<Clipboard.Root default-value="https://ark-ui.com">
7+
<Clipboard.Context v-slot="clipboard">
8+
<button @click="clipboard.copy()">
9+
{{ clipboard.copied ? 'Copied!' : 'Copy URL' }}
10+
</button>
11+
</Clipboard.Context>
12+
</Clipboard.Root>
13+
</template>

website/src/content/pages/components/clipboard.mdx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ Learn how to use the `Clipboard` component in your project. Let's take a look at
2525
Access the clipboard state and methods using `Clipboard.Context`. This provides access to properties like `copied`,
2626
`value`, and `setValue`
2727

28+
> Alternatively, you can use the `useClipboardContext` hook to access the clipboard context.
29+
2830
<Example id="context" />
2931

3032
### Controlled
@@ -48,6 +50,12 @@ Configure the copy status timeout duration using the `timeout` prop. Default is
4850

4951
<Example id="custom-timeout" />
5052

53+
### Programmatic Copy
54+
55+
Trigger copy operations programmatically using the context's `copy()` method.
56+
57+
<Example id="programmatic" />
58+
5159
### Value Text
5260

5361
Use `Clipboard.ValueText` to display the current clipboard value.

0 commit comments

Comments
 (0)