@sikka/hawa 0.1.3 → 0.1.4
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/dist/styles.css +40 -1
- package/es/elements/Tooltip.d.ts +12 -0
- package/es/index.es.js +3 -3
- package/lib/elements/Tooltip.d.ts +12 -0
- package/lib/index.js +3 -3
- package/package.json +2 -1
- package/src/blocks/Pricing/ComparingPlans.tsx +4 -6
- package/src/elements/Tooltip.tsx +179 -0
- package/src/elements/UsageCard.tsx +3 -3
- package/src/styles.css +40 -1
- package/src/tailwind.css +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sikka/hawa",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"description": "SaaS Oriented UI Kit",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "es/index.es.js",
|
|
@@ -107,6 +107,7 @@
|
|
|
107
107
|
"dependencies": {
|
|
108
108
|
"@radix-ui/react-dropdown-menu": "^2.0.5",
|
|
109
109
|
"@radix-ui/react-label": "^2.0.2",
|
|
110
|
+
"@radix-ui/react-tooltip": "^1.0.6",
|
|
110
111
|
"class-variance-authority": "^0.7.0",
|
|
111
112
|
"clsx": "^1.2.1",
|
|
112
113
|
"cmdk": "^0.2.0",
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React, { useState, FC } from "react"
|
|
2
|
-
import { HawaTabs
|
|
2
|
+
import { HawaTabs } from "../../elements"
|
|
3
|
+
import { Tooltip } from "../../elements/Tooltip"
|
|
3
4
|
|
|
4
5
|
const CheckMark = () => (
|
|
5
6
|
<svg
|
|
@@ -124,10 +125,7 @@ export const ComparingPlans: FC<ComparingPlansTypes> = (props) => {
|
|
|
124
125
|
<div className=" flex flex-row items-center gap-2 text-gray-500 dark:text-gray-400">
|
|
125
126
|
{feature.text}
|
|
126
127
|
{feature.description && (
|
|
127
|
-
<
|
|
128
|
-
position="top-right"
|
|
129
|
-
content={feature.description}
|
|
130
|
-
>
|
|
128
|
+
<Tooltip side="right" content={feature.description}>
|
|
131
129
|
<svg
|
|
132
130
|
stroke="currentColor"
|
|
133
131
|
fill="currentColor"
|
|
@@ -138,7 +136,7 @@ export const ComparingPlans: FC<ComparingPlansTypes> = (props) => {
|
|
|
138
136
|
>
|
|
139
137
|
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM8 4a.905.905 0 0 0-.9.995l.35 3.507a.552.552 0 0 0 1.1 0l.35-3.507A.905.905 0 0 0 8 4zm.002 6a1 1 0 1 0 0 2 1 1 0 0 0 0-2z"></path>
|
|
140
138
|
</svg>
|
|
141
|
-
</
|
|
139
|
+
</Tooltip>
|
|
142
140
|
)}
|
|
143
141
|
</div>
|
|
144
142
|
<UncheckMark />
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
// "use client"
|
|
2
|
+
|
|
3
|
+
// import * as React from "react"
|
|
4
|
+
// import * as TooltipPrimitive from "@radix-ui/react-tooltip"
|
|
5
|
+
|
|
6
|
+
import { cn } from "../util"
|
|
7
|
+
|
|
8
|
+
// const TooltipProvider = TooltipPrimitive.Provider
|
|
9
|
+
|
|
10
|
+
// const TooltipRoot = TooltipPrimitive.Root
|
|
11
|
+
|
|
12
|
+
// const TooltipTrigger = TooltipPrimitive.Trigger
|
|
13
|
+
|
|
14
|
+
// const TooltipContent = React.forwardRef<
|
|
15
|
+
// React.ElementRef<typeof TooltipPrimitive.Content>,
|
|
16
|
+
// React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>
|
|
17
|
+
// >(({ className, sideOffset = 4, ...props }, ref) => (
|
|
18
|
+
// <TooltipPrimitive.Content
|
|
19
|
+
// ref={ref}
|
|
20
|
+
// sideOffset={sideOffset}
|
|
21
|
+
// className={cn(
|
|
22
|
+
// "z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
|
|
23
|
+
// className
|
|
24
|
+
// )}
|
|
25
|
+
// {...props}
|
|
26
|
+
// />
|
|
27
|
+
// ))
|
|
28
|
+
// TooltipContent.displayName = TooltipPrimitive.Content.displayName
|
|
29
|
+
|
|
30
|
+
// interface TooltipProps {
|
|
31
|
+
// // TooltipProvider props
|
|
32
|
+
// delayDurationProvider?: number
|
|
33
|
+
// skipDelayDuration?: number
|
|
34
|
+
// disableHoverableContentProvider?: boolean
|
|
35
|
+
|
|
36
|
+
// // TooltipRoot props
|
|
37
|
+
// defaultOpen?: boolean
|
|
38
|
+
// open?: boolean
|
|
39
|
+
// onOpenChange?: (open: boolean) => void
|
|
40
|
+
// delayDurationRoot?: number
|
|
41
|
+
// disableHoverableContentRoot?: boolean
|
|
42
|
+
|
|
43
|
+
// // TooltipContent props
|
|
44
|
+
// content: React.ReactNode
|
|
45
|
+
// asChild?: boolean
|
|
46
|
+
// ariaLabel?: string
|
|
47
|
+
// onEscapeKeyDown?: () => void
|
|
48
|
+
// onPointerDownOutside?: (event: MouseEvent | TouchEvent) => void
|
|
49
|
+
// forceMount?: boolean
|
|
50
|
+
// side?: "top" | "right" | "bottom" | "left"
|
|
51
|
+
// sideOffset?: number
|
|
52
|
+
// align?: "start" | "center" | "end"
|
|
53
|
+
// alignOffset?: number
|
|
54
|
+
// avoidCollisions?: boolean
|
|
55
|
+
// collisionBoundary?: Element | Element[];
|
|
56
|
+
// collisionPadding?: number
|
|
57
|
+
// arrowPadding?: number
|
|
58
|
+
// sticky?: "partial" | "always";
|
|
59
|
+
// hideWhenDetached?: boolean
|
|
60
|
+
|
|
61
|
+
// children: React.ReactNode
|
|
62
|
+
// }
|
|
63
|
+
|
|
64
|
+
// const Tooltip: React.FC<TooltipProps> = (props) => {
|
|
65
|
+
// const { content, children, ...rest } = props
|
|
66
|
+
// return (
|
|
67
|
+
// <TooltipProvider
|
|
68
|
+
// delayDuration={props.delayDurationProvider}
|
|
69
|
+
// skipDelayDuration={props.skipDelayDuration}
|
|
70
|
+
// disableHoverableContent={props.disableHoverableContentProvider}
|
|
71
|
+
// >
|
|
72
|
+
// <TooltipRoot
|
|
73
|
+
// defaultOpen={props.defaultOpen}
|
|
74
|
+
// open={props.open}
|
|
75
|
+
// onOpenChange={props.onOpenChange}
|
|
76
|
+
// delayDuration={props.delayDurationRoot}
|
|
77
|
+
// disableHoverableContent={props.disableHoverableContentRoot}
|
|
78
|
+
// >
|
|
79
|
+
// <TooltipTrigger asChild>{children}</TooltipTrigger>
|
|
80
|
+
// <TooltipContent
|
|
81
|
+
// asChild={props.asChild}
|
|
82
|
+
// aria-label={props.ariaLabel}
|
|
83
|
+
// onEscapeKeyDown={props.onEscapeKeyDown}
|
|
84
|
+
// onPointerDownOutside={props.onPointerDownOutside}
|
|
85
|
+
// // forceMount={props.forceMount}
|
|
86
|
+
// side={props.side}
|
|
87
|
+
|
|
88
|
+
// sideOffset={props.sideOffset}
|
|
89
|
+
// align={props.align}
|
|
90
|
+
// alignOffset={props.alignOffset}
|
|
91
|
+
// avoidCollisions={props.avoidCollisions}
|
|
92
|
+
// collisionBoundary={props.collisionBoundary}
|
|
93
|
+
// collisionPadding={props.collisionPadding}
|
|
94
|
+
// arrowPadding={props.arrowPadding}
|
|
95
|
+
// sticky={props.sticky}
|
|
96
|
+
// hideWhenDetached={props.hideWhenDetached}
|
|
97
|
+
// {...rest}
|
|
98
|
+
// >
|
|
99
|
+
// {content}
|
|
100
|
+
// </TooltipContent>
|
|
101
|
+
// </TooltipRoot>
|
|
102
|
+
// </TooltipProvider>
|
|
103
|
+
// )
|
|
104
|
+
// }
|
|
105
|
+
|
|
106
|
+
// your-tooltip.jsx
|
|
107
|
+
import React from "react"
|
|
108
|
+
import * as TooltipPrimitive from "@radix-ui/react-tooltip"
|
|
109
|
+
|
|
110
|
+
const TooltipContent = React.forwardRef<
|
|
111
|
+
React.ElementRef<typeof TooltipPrimitive.Content>,
|
|
112
|
+
React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>
|
|
113
|
+
>(({ className, sideOffset = 4, ...props }, ref) => (
|
|
114
|
+
<TooltipPrimitive.Content
|
|
115
|
+
ref={ref}
|
|
116
|
+
sideOffset={sideOffset}
|
|
117
|
+
className={cn(
|
|
118
|
+
"z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
|
|
119
|
+
className
|
|
120
|
+
)}
|
|
121
|
+
{...props}
|
|
122
|
+
/>
|
|
123
|
+
))
|
|
124
|
+
TooltipContent.displayName = TooltipPrimitive.Content.displayName
|
|
125
|
+
|
|
126
|
+
const TooltipArrow = React.forwardRef<
|
|
127
|
+
React.ElementRef<typeof TooltipPrimitive.Arrow>,
|
|
128
|
+
React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Arrow>
|
|
129
|
+
>(({ className, ...props }, ref) => (
|
|
130
|
+
<TooltipPrimitive.Arrow
|
|
131
|
+
ref={ref}
|
|
132
|
+
className={cn(
|
|
133
|
+
// "bg-popover",
|
|
134
|
+
"bg-red-500 text-blue-500 ",
|
|
135
|
+
// "z-50 overflow-hidden rounded-md border bg-popover text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
|
|
136
|
+
className
|
|
137
|
+
)}
|
|
138
|
+
{...props}
|
|
139
|
+
/>
|
|
140
|
+
))
|
|
141
|
+
TooltipArrow.displayName = TooltipPrimitive.Arrow.displayName
|
|
142
|
+
|
|
143
|
+
type TooltipTypes = {
|
|
144
|
+
side?: "top" | "right" | "bottom" | "left"
|
|
145
|
+
children?: any
|
|
146
|
+
content?: any
|
|
147
|
+
open?: any
|
|
148
|
+
defaultOpen?: any
|
|
149
|
+
onOpenChange?: any
|
|
150
|
+
delayDuration?: any
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
export const Tooltip: React.FunctionComponent<TooltipTypes> = ({
|
|
154
|
+
children,
|
|
155
|
+
content,
|
|
156
|
+
open,
|
|
157
|
+
defaultOpen,
|
|
158
|
+
onOpenChange,
|
|
159
|
+
delayDuration = 300,
|
|
160
|
+
side,
|
|
161
|
+
...props
|
|
162
|
+
}) => {
|
|
163
|
+
return (
|
|
164
|
+
<TooltipPrimitive.TooltipProvider delayDuration={delayDuration}>
|
|
165
|
+
<TooltipPrimitive.Root
|
|
166
|
+
open={open}
|
|
167
|
+
defaultOpen={defaultOpen}
|
|
168
|
+
onOpenChange={onOpenChange}
|
|
169
|
+
>
|
|
170
|
+
<TooltipPrimitive.Trigger asChild>{children}</TooltipPrimitive.Trigger>
|
|
171
|
+
<TooltipContent side={side} align="center" {...props}>
|
|
172
|
+
{content}
|
|
173
|
+
{/* <TooltipArrow width={21} height={5} /> */}
|
|
174
|
+
</TooltipContent>
|
|
175
|
+
</TooltipPrimitive.Root>
|
|
176
|
+
</TooltipPrimitive.TooltipProvider>
|
|
177
|
+
)
|
|
178
|
+
}
|
|
179
|
+
// export { Tooltip, TooltipRoot, TooltipTrigger, TooltipContent, TooltipProvider }
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { FC } from "react"
|
|
2
|
-
import {
|
|
2
|
+
import { Tooltip } from "./Tooltip"
|
|
3
3
|
|
|
4
4
|
type UsageCardTypes = {
|
|
5
5
|
tooltip?: any
|
|
@@ -13,7 +13,7 @@ export const UsageCard: FC<UsageCardTypes> = (props) => {
|
|
|
13
13
|
<div className="flex flex-row items-center gap-2">
|
|
14
14
|
<span className="bg-white-200">{props.title}</span>
|
|
15
15
|
{props.tooltip && (
|
|
16
|
-
<
|
|
16
|
+
<Tooltip content={props.tooltip} side="right">
|
|
17
17
|
<svg
|
|
18
18
|
stroke="currentColor"
|
|
19
19
|
aria-label="Exclamation Circle"
|
|
@@ -25,7 +25,7 @@ export const UsageCard: FC<UsageCardTypes> = (props) => {
|
|
|
25
25
|
>
|
|
26
26
|
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM8 4a.905.905 0 0 0-.9.995l.35 3.507a.552.552 0 0 0 1.1 0l.35-3.507A.905.905 0 0 0 8 4zm.002 6a1 1 0 1 0 0 2 1 1 0 0 0 0-2z"></path>
|
|
27
27
|
</svg>
|
|
28
|
-
</
|
|
28
|
+
</Tooltip>
|
|
29
29
|
)}
|
|
30
30
|
</div>
|
|
31
31
|
<div className="bg-white-100 flex flex-row">
|
package/src/styles.css
CHANGED
|
@@ -405,7 +405,7 @@ video {
|
|
|
405
405
|
--border: 240 5.9% 90%;
|
|
406
406
|
--input: 240 5.9% 90%;
|
|
407
407
|
--ring: 240 5% 64.9%;
|
|
408
|
-
--radius:
|
|
408
|
+
--radius: 0.5rem;
|
|
409
409
|
--radius-inner: calc(var(--radius) - calc(var(--radius) / 3));
|
|
410
410
|
|
|
411
411
|
--layout-primary-700: #b7aff7;
|
|
@@ -1908,6 +1908,9 @@ video {
|
|
|
1908
1908
|
--tw-bg-opacity: 1;
|
|
1909
1909
|
background-color: rgb(251 146 60 / var(--tw-bg-opacity));
|
|
1910
1910
|
}
|
|
1911
|
+
.bg-popover {
|
|
1912
|
+
background-color: hsl(var(--popover));
|
|
1913
|
+
}
|
|
1911
1914
|
.bg-primary {
|
|
1912
1915
|
background-color: hsl(var(--primary));
|
|
1913
1916
|
}
|
|
@@ -2372,6 +2375,9 @@ video {
|
|
|
2372
2375
|
--tw-text-opacity: 1;
|
|
2373
2376
|
color: rgb(23 23 23 / var(--tw-text-opacity));
|
|
2374
2377
|
}
|
|
2378
|
+
.text-popover-foreground {
|
|
2379
|
+
color: hsl(var(--popover-foreground));
|
|
2380
|
+
}
|
|
2375
2381
|
.text-primary {
|
|
2376
2382
|
color: hsl(var(--primary));
|
|
2377
2383
|
}
|
|
@@ -2586,6 +2592,12 @@ video {
|
|
|
2586
2592
|
.fade-in {
|
|
2587
2593
|
--tw-enter-opacity: 0;
|
|
2588
2594
|
}
|
|
2595
|
+
.fade-in-0 {
|
|
2596
|
+
--tw-enter-opacity: 0;
|
|
2597
|
+
}
|
|
2598
|
+
.zoom-in-95 {
|
|
2599
|
+
--tw-enter-scale: .95;
|
|
2600
|
+
}
|
|
2589
2601
|
.duration-1000 {
|
|
2590
2602
|
animation-duration: 1000ms;
|
|
2591
2603
|
}
|
|
@@ -3077,6 +3089,33 @@ body {
|
|
|
3077
3089
|
--tw-text-opacity: 1;
|
|
3078
3090
|
color: hsl(250 43.0% 48.0% / var(--tw-text-opacity));
|
|
3079
3091
|
}
|
|
3092
|
+
.data-\[state\=closed\]\:animate-out[data-state=closed] {
|
|
3093
|
+
animation-name: exit;
|
|
3094
|
+
animation-duration: 150ms;
|
|
3095
|
+
--tw-exit-opacity: initial;
|
|
3096
|
+
--tw-exit-scale: initial;
|
|
3097
|
+
--tw-exit-rotate: initial;
|
|
3098
|
+
--tw-exit-translate-x: initial;
|
|
3099
|
+
--tw-exit-translate-y: initial;
|
|
3100
|
+
}
|
|
3101
|
+
.data-\[state\=closed\]\:fade-out-0[data-state=closed] {
|
|
3102
|
+
--tw-exit-opacity: 0;
|
|
3103
|
+
}
|
|
3104
|
+
.data-\[state\=closed\]\:zoom-out-95[data-state=closed] {
|
|
3105
|
+
--tw-exit-scale: .95;
|
|
3106
|
+
}
|
|
3107
|
+
.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom] {
|
|
3108
|
+
--tw-enter-translate-y: -0.5rem;
|
|
3109
|
+
}
|
|
3110
|
+
.data-\[side\=left\]\:slide-in-from-right-2[data-side=left] {
|
|
3111
|
+
--tw-enter-translate-x: 0.5rem;
|
|
3112
|
+
}
|
|
3113
|
+
.data-\[side\=right\]\:slide-in-from-left-2[data-side=right] {
|
|
3114
|
+
--tw-enter-translate-x: -0.5rem;
|
|
3115
|
+
}
|
|
3116
|
+
.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top] {
|
|
3117
|
+
--tw-enter-translate-y: 0.5rem;
|
|
3118
|
+
}
|
|
3080
3119
|
.group[data-disabled] .group-data-\[disabled\]\:text-mauve-8 {
|
|
3081
3120
|
--tw-text-opacity: 1;
|
|
3082
3121
|
color: hsl(249 10.4% 75.5% / var(--tw-text-opacity));
|