@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.
Files changed (67) hide show
  1. package/accordion/AGENTS.md +60 -0
  2. package/accordion/index.module.css +10 -0
  3. package/accordion/index.tsx +91 -0
  4. package/alert-dialog/AGENTS.md +78 -0
  5. package/alert-dialog/index.tsx +119 -0
  6. package/badge/AGENTS.md +35 -0
  7. package/badge/index.tsx +34 -0
  8. package/button/AGENTS.md +39 -0
  9. package/button/index.tsx +98 -0
  10. package/callout/AGENTS.md +42 -0
  11. package/callout/index.tsx +70 -0
  12. package/checkbox/AGENTS.md +54 -0
  13. package/checkbox/index.tsx +151 -0
  14. package/code-block/AGENTS.md +60 -0
  15. package/code-block/index.module.css +46 -0
  16. package/code-block/index.tsx +127 -0
  17. package/combobox/AGENTS.md +150 -0
  18. package/combobox/index.tsx +420 -0
  19. package/command-palette/AGENTS.md +44 -0
  20. package/command-palette/index.tsx +108 -0
  21. package/copy-button/AGENTS.md +43 -0
  22. package/copy-button/index.tsx +119 -0
  23. package/dialog/AGENTS.md +81 -0
  24. package/dialog/index.tsx +108 -0
  25. package/dist/index.js +189 -0
  26. package/drawer/AGENTS.md +66 -0
  27. package/drawer/index.module.css +17 -0
  28. package/drawer/index.tsx +198 -0
  29. package/dropdown-menu/AGENTS.md +133 -0
  30. package/dropdown-menu/index.tsx +223 -0
  31. package/field/AGENTS.md +96 -0
  32. package/field/index.tsx +149 -0
  33. package/input/AGENTS.md +35 -0
  34. package/input/index.tsx +36 -0
  35. package/kbd/AGENTS.md +17 -0
  36. package/kbd/index.tsx +13 -0
  37. package/label/AGENTS.md +21 -0
  38. package/label/index.tsx +13 -0
  39. package/number-field/AGENTS.md +53 -0
  40. package/number-field/index.tsx +227 -0
  41. package/package.json +73 -0
  42. package/popover/AGENTS.md +64 -0
  43. package/popover/index.tsx +66 -0
  44. package/press.css +37 -0
  45. package/radio-group/AGENTS.md +81 -0
  46. package/radio-group/index.tsx +139 -0
  47. package/registry.json +726 -0
  48. package/select/AGENTS.md +90 -0
  49. package/select/index.tsx +169 -0
  50. package/styles.css +347 -0
  51. package/switch/AGENTS.md +37 -0
  52. package/switch/index.tsx +42 -0
  53. package/table/AGENTS.md +82 -0
  54. package/table/index.tsx +120 -0
  55. package/tabs/AGENTS.md +60 -0
  56. package/tabs/index.module.css +14 -0
  57. package/tabs/index.tsx +105 -0
  58. package/test-utils.ts +10 -0
  59. package/textarea/AGENTS.md +35 -0
  60. package/textarea/index.tsx +37 -0
  61. package/toast/AGENTS.md +42 -0
  62. package/toast/index.tsx +71 -0
  63. package/toggle/AGENTS.md +37 -0
  64. package/toggle/index.tsx +36 -0
  65. package/tooltip/AGENTS.md +50 -0
  66. package/tooltip/index.tsx +57 -0
  67. 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
+ })