@pantoia/ui 0.1.0
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/accordion/AGENTS.md +60 -0
- package/accordion/index.module.css +10 -0
- package/accordion/index.tsx +91 -0
- package/alert-dialog/AGENTS.md +78 -0
- package/alert-dialog/index.tsx +119 -0
- package/badge/AGENTS.md +35 -0
- package/badge/index.tsx +34 -0
- package/button/AGENTS.md +39 -0
- package/button/index.tsx +98 -0
- package/callout/AGENTS.md +42 -0
- package/callout/index.tsx +70 -0
- package/checkbox/AGENTS.md +54 -0
- package/checkbox/index.tsx +151 -0
- package/code-block/AGENTS.md +60 -0
- package/code-block/index.module.css +46 -0
- package/code-block/index.tsx +127 -0
- package/combobox/AGENTS.md +150 -0
- package/combobox/index.tsx +420 -0
- package/command-palette/AGENTS.md +44 -0
- package/command-palette/index.tsx +108 -0
- package/copy-button/AGENTS.md +43 -0
- package/copy-button/index.tsx +119 -0
- package/dialog/AGENTS.md +81 -0
- package/dialog/index.tsx +108 -0
- package/dist/index.js +189 -0
- package/drawer/AGENTS.md +66 -0
- package/drawer/index.module.css +17 -0
- package/drawer/index.tsx +198 -0
- package/dropdown-menu/AGENTS.md +133 -0
- package/dropdown-menu/index.tsx +223 -0
- package/field/AGENTS.md +96 -0
- package/field/index.tsx +149 -0
- package/input/AGENTS.md +35 -0
- package/input/index.tsx +36 -0
- package/kbd/AGENTS.md +17 -0
- package/kbd/index.tsx +13 -0
- package/label/AGENTS.md +21 -0
- package/label/index.tsx +13 -0
- package/number-field/AGENTS.md +53 -0
- package/number-field/index.tsx +227 -0
- package/package.json +73 -0
- package/popover/AGENTS.md +64 -0
- package/popover/index.tsx +66 -0
- package/press.css +37 -0
- package/radio-group/AGENTS.md +81 -0
- package/radio-group/index.tsx +139 -0
- package/registry.json +726 -0
- package/select/AGENTS.md +90 -0
- package/select/index.tsx +169 -0
- package/styles.css +347 -0
- package/switch/AGENTS.md +37 -0
- package/switch/index.tsx +42 -0
- package/table/AGENTS.md +82 -0
- package/table/index.tsx +120 -0
- package/tabs/AGENTS.md +60 -0
- package/tabs/index.module.css +14 -0
- package/tabs/index.tsx +105 -0
- package/test-utils.ts +10 -0
- package/textarea/AGENTS.md +35 -0
- package/textarea/index.tsx +37 -0
- package/toast/AGENTS.md +42 -0
- package/toast/index.tsx +71 -0
- package/toggle/AGENTS.md +37 -0
- package/toggle/index.tsx +36 -0
- package/tooltip/AGENTS.md +50 -0
- package/tooltip/index.tsx +57 -0
- package/tv.ts +23 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Tooltip
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
받기 npx @pantoia/ui add tooltip
|
|
5
|
+
층 ui
|
|
6
|
+
파일 tooltip/index.tsx · tooltip/AGENTS.md
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
## 부위
|
|
10
|
+
|
|
11
|
+
| 이름 | props |
|
|
12
|
+
|---|---|
|
|
13
|
+
| `Tooltip` | `TooltipProps` |
|
|
14
|
+
| `TooltipTrigger` | — |
|
|
15
|
+
| `TooltipContent` | `TooltipContentProps` |
|
|
16
|
+
|
|
17
|
+
### `TooltipTrigger`
|
|
18
|
+
|
|
19
|
+
| 이름 | 타입 | 필수 |
|
|
20
|
+
|---|---|---|
|
|
21
|
+
| `children` | `ReactNode` | 예 |
|
|
22
|
+
|
|
23
|
+
## props
|
|
24
|
+
|
|
25
|
+
### `TooltipProps`
|
|
26
|
+
|
|
27
|
+
| 이름 | 타입 | 필수 |
|
|
28
|
+
|---|---|---|
|
|
29
|
+
| `open` | `boolean` | |
|
|
30
|
+
| `defaultOpen` | `boolean` | |
|
|
31
|
+
| `onOpenChange` | `(open: boolean) => void` | |
|
|
32
|
+
| `delay` | `number` | |
|
|
33
|
+
| `children` | `ReactNode` | |
|
|
34
|
+
|
|
35
|
+
### `TooltipContentProps`
|
|
36
|
+
|
|
37
|
+
`Omit<ComponentProps<typeof TooltipPrimitive.Content>, 'side'>` 를 확장한다.
|
|
38
|
+
|
|
39
|
+
| 이름 | 타입 | 필수 |
|
|
40
|
+
|---|---|---|
|
|
41
|
+
| `side` | `'top' \| 'right' \| 'bottom' \| 'left'` | |
|
|
42
|
+
| `arrow` | `boolean` | |
|
|
43
|
+
|
|
44
|
+
## 함께 받는 것
|
|
45
|
+
|
|
46
|
+
`tv`
|
|
47
|
+
|
|
48
|
+
## npm 의존
|
|
49
|
+
|
|
50
|
+
`radix-ui`
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
|
|
3
|
+
import { Tooltip as TooltipPrimitive } from 'radix-ui'
|
|
4
|
+
import type { ComponentProps, ReactNode } from 'react'
|
|
5
|
+
|
|
6
|
+
import { tv } from '../tv'
|
|
7
|
+
|
|
8
|
+
export interface TooltipProps {
|
|
9
|
+
open?: boolean
|
|
10
|
+
defaultOpen?: boolean
|
|
11
|
+
onOpenChange?: (open: boolean) => void
|
|
12
|
+
delay?: number
|
|
13
|
+
children?: ReactNode
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export function Tooltip({ open, defaultOpen = false, onOpenChange, delay = 100, children }: TooltipProps) {
|
|
17
|
+
return (
|
|
18
|
+
<TooltipPrimitive.Provider delayDuration={delay}>
|
|
19
|
+
<TooltipPrimitive.Root open={open} defaultOpen={defaultOpen} onOpenChange={onOpenChange}>
|
|
20
|
+
{children}
|
|
21
|
+
</TooltipPrimitive.Root>
|
|
22
|
+
</TooltipPrimitive.Provider>
|
|
23
|
+
)
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export function TooltipTrigger({ children }: { children: ReactNode }) {
|
|
27
|
+
return <TooltipPrimitive.Trigger asChild>{children}</TooltipPrimitive.Trigger>
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export interface TooltipContentProps extends Omit<ComponentProps<typeof TooltipPrimitive.Content>, 'side'> {
|
|
31
|
+
side?: 'top' | 'right' | 'bottom' | 'left'
|
|
32
|
+
arrow?: boolean
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export function TooltipContent({
|
|
36
|
+
side = 'top',
|
|
37
|
+
arrow = true,
|
|
38
|
+
className,
|
|
39
|
+
children,
|
|
40
|
+
...rest
|
|
41
|
+
}: TooltipContentProps) {
|
|
42
|
+
return (
|
|
43
|
+
<TooltipPrimitive.Portal>
|
|
44
|
+
<TooltipPrimitive.Content
|
|
45
|
+
{...rest}
|
|
46
|
+
side={side}
|
|
47
|
+
sideOffset={6}
|
|
48
|
+
className={tv({ base: 'bg-float text-fg rounded-r12 shadow-s3 z-overlay'
|
|
49
|
+
+ ' text-caption max-w-64 px-3 py-1'
|
|
50
|
+
+ ' open:animate-enter closed:animate-exit' })({ className })}
|
|
51
|
+
>
|
|
52
|
+
{children}
|
|
53
|
+
{arrow && <TooltipPrimitive.Arrow className="fill-float" width={10} height={5} />}
|
|
54
|
+
</TooltipPrimitive.Content>
|
|
55
|
+
</TooltipPrimitive.Portal>
|
|
56
|
+
)
|
|
57
|
+
}
|
package/tv.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { createTV } from 'tailwind-variants'
|
|
2
|
+
|
|
3
|
+
export type { VariantProps } from 'tailwind-variants'
|
|
4
|
+
|
|
5
|
+
export const tv = createTV({
|
|
6
|
+
twMergeConfig: {
|
|
7
|
+
theme: {
|
|
8
|
+
spacing: ['tight', 'stack', 'block', 'section', 'gutter'],
|
|
9
|
+
radius: [
|
|
10
|
+
'mark', 'well', 'panel', 'float',
|
|
11
|
+
'r2', 'r4', 'r6', 'r8', 'r10', 'r12', 'r14', 'r16', 'r20', 'r24',
|
|
12
|
+
],
|
|
13
|
+
text: [
|
|
14
|
+
'display', 'title', 'section', 'subsection', 'prose', 'value',
|
|
15
|
+
'label', 'caption', 'micro',
|
|
16
|
+
't10', 't11', 't12', 't13', 't14', 't16', 't18', 't20',
|
|
17
|
+
't24', 't28', 't32', 't40', 't48', 't56', 't64',
|
|
18
|
+
],
|
|
19
|
+
shadow: ['s1', 's2', 's3'],
|
|
20
|
+
ease: ['state', 'enter', 'exit'],
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
})
|