@tribepad/themis 1.0.1 → 1.0.3
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/elements/Accordion/index.js +1 -335
- package/dist/elements/Accordion/index.js.map +1 -1
- package/dist/elements/Accordion/index.mjs +1 -317
- package/dist/elements/Accordion/index.mjs.map +1 -1
- package/dist/elements/AlertDialog/AlertDialog.d.ts +43 -0
- package/dist/elements/AlertDialog/AlertDialog.d.ts.map +1 -0
- package/dist/elements/AlertDialog/AlertDialog.styles.d.ts +15 -0
- package/dist/elements/AlertDialog/AlertDialog.styles.d.ts.map +1 -0
- package/dist/elements/AlertDialog/AlertDialog.types.d.ts +72 -0
- package/dist/elements/AlertDialog/AlertDialog.types.d.ts.map +1 -0
- package/dist/elements/AlertDialog/index.d.ts +25 -0
- package/dist/elements/AlertDialog/index.d.ts.map +1 -0
- package/dist/elements/AlertDialog/index.js +3 -0
- package/dist/elements/AlertDialog/index.js.map +1 -0
- package/dist/elements/AlertDialog/index.mjs +3 -0
- package/dist/elements/AlertDialog/index.mjs.map +1 -0
- package/dist/elements/Avatar/index.js +1 -468
- package/dist/elements/Avatar/index.js.map +1 -1
- package/dist/elements/Avatar/index.mjs +1 -456
- package/dist/elements/Avatar/index.mjs.map +1 -1
- package/dist/elements/Badge/index.js +1 -243
- package/dist/elements/Badge/index.js.map +1 -1
- package/dist/elements/Badge/index.mjs +1 -234
- package/dist/elements/Badge/index.mjs.map +1 -1
- package/dist/elements/Breadcrumbs/index.js +1 -821
- package/dist/elements/Breadcrumbs/index.js.map +1 -1
- package/dist/elements/Breadcrumbs/index.mjs +1 -810
- package/dist/elements/Breadcrumbs/index.mjs.map +1 -1
- package/dist/elements/Button/Button.d.ts +26 -81
- package/dist/elements/Button/Button.d.ts.map +1 -1
- package/dist/elements/Button/Button.styles.d.ts +35 -0
- package/dist/elements/Button/Button.styles.d.ts.map +1 -0
- package/dist/elements/Button/Button.types.d.ts +20 -8
- package/dist/elements/Button/Button.types.d.ts.map +1 -1
- package/dist/elements/Button/index.js +1 -288
- package/dist/elements/Button/index.js.map +1 -1
- package/dist/elements/Button/index.mjs +1 -283
- package/dist/elements/Button/index.mjs.map +1 -1
- package/dist/elements/ButtonGroup/index.js +1 -237
- package/dist/elements/ButtonGroup/index.js.map +1 -1
- package/dist/elements/ButtonGroup/index.mjs +1 -222
- package/dist/elements/ButtonGroup/index.mjs.map +1 -1
- package/dist/elements/Card/index.js +1 -579
- package/dist/elements/Card/index.js.map +1 -1
- package/dist/elements/Card/index.mjs +1 -560
- package/dist/elements/Card/index.mjs.map +1 -1
- package/dist/elements/Carousel/Carousel.d.ts +1 -11
- package/dist/elements/Carousel/Carousel.d.ts.map +1 -1
- package/dist/elements/Carousel/LazyCarousel.d.ts +1 -1
- package/dist/elements/Carousel/LazyCarousel.d.ts.map +1 -1
- package/dist/elements/Carousel/index.js +1 -789
- package/dist/elements/Carousel/index.js.map +1 -1
- package/dist/elements/Carousel/index.mjs +1 -786
- package/dist/elements/Carousel/index.mjs.map +1 -1
- package/dist/elements/Chart/ChartContext.d.ts.map +1 -1
- package/dist/elements/Chart/index.js +1 -1842
- package/dist/elements/Chart/index.js.map +1 -1
- package/dist/elements/Chart/index.mjs +1 -1832
- package/dist/elements/Chart/index.mjs.map +1 -1
- package/dist/elements/Checkbox/index.js +1 -316
- package/dist/elements/Checkbox/index.js.map +1 -1
- package/dist/elements/Checkbox/index.mjs +1 -306
- package/dist/elements/Checkbox/index.mjs.map +1 -1
- package/dist/elements/CheckboxGroup/index.js +1 -455
- package/dist/elements/CheckboxGroup/index.js.map +1 -1
- package/dist/elements/CheckboxGroup/index.mjs +1 -439
- package/dist/elements/CheckboxGroup/index.mjs.map +1 -1
- package/dist/elements/Combobox/Combobox.d.ts +56 -0
- package/dist/elements/Combobox/Combobox.d.ts.map +1 -0
- package/dist/elements/Combobox/Combobox.styles.d.ts +29 -0
- package/dist/elements/Combobox/Combobox.styles.d.ts.map +1 -0
- package/dist/elements/Combobox/Combobox.types.d.ts +67 -0
- package/dist/elements/Combobox/Combobox.types.d.ts.map +1 -0
- package/dist/elements/Combobox/index.d.ts +20 -0
- package/dist/elements/Combobox/index.d.ts.map +1 -0
- package/dist/elements/Combobox/index.js +3 -0
- package/dist/elements/Combobox/index.js.map +1 -0
- package/dist/elements/Combobox/index.mjs +3 -0
- package/dist/elements/Combobox/index.mjs.map +1 -0
- package/dist/elements/DatePicker/DatePicker.d.ts +1 -1
- package/dist/elements/DatePicker/DatePicker.d.ts.map +1 -1
- package/dist/elements/DatePicker/index.js +1 -903
- package/dist/elements/DatePicker/index.js.map +1 -1
- package/dist/elements/DatePicker/index.mjs +1 -853
- package/dist/elements/DatePicker/index.mjs.map +1 -1
- package/dist/elements/Dropdown/Dropdown.d.ts +7 -15
- package/dist/elements/Dropdown/Dropdown.d.ts.map +1 -1
- package/dist/elements/Dropdown/Dropdown.styles.d.ts +22 -0
- package/dist/elements/Dropdown/Dropdown.styles.d.ts.map +1 -0
- package/dist/elements/Dropdown/index.d.ts +1 -0
- package/dist/elements/Dropdown/index.d.ts.map +1 -1
- package/dist/elements/Dropdown/index.js +1 -193
- package/dist/elements/Dropdown/index.js.map +1 -1
- package/dist/elements/Dropdown/index.mjs +1 -184
- package/dist/elements/Dropdown/index.mjs.map +1 -1
- package/dist/elements/FileField/index.js +1 -1539
- package/dist/elements/FileField/index.js.map +1 -1
- package/dist/elements/FileField/index.mjs +1 -1507
- package/dist/elements/FileField/index.mjs.map +1 -1
- package/dist/elements/FormLayout/index.js +1 -170
- package/dist/elements/FormLayout/index.js.map +1 -1
- package/dist/elements/FormLayout/index.mjs +1 -167
- package/dist/elements/FormLayout/index.mjs.map +1 -1
- package/dist/elements/Modal/Modal.d.ts +9 -14
- package/dist/elements/Modal/Modal.d.ts.map +1 -1
- package/dist/elements/Modal/Modal.styles.d.ts +29 -0
- package/dist/elements/Modal/Modal.styles.d.ts.map +1 -0
- package/dist/elements/Modal/index.d.ts +1 -0
- package/dist/elements/Modal/index.d.ts.map +1 -1
- package/dist/elements/Modal/index.js +1 -232
- package/dist/elements/Modal/index.js.map +1 -1
- package/dist/elements/Modal/index.mjs +1 -220
- package/dist/elements/Modal/index.mjs.map +1 -1
- package/dist/elements/NumberField/NumberField.variants.d.ts +1 -1
- package/dist/elements/NumberField/index.js +1 -666
- package/dist/elements/NumberField/index.js.map +1 -1
- package/dist/elements/NumberField/index.mjs +1 -654
- package/dist/elements/NumberField/index.mjs.map +1 -1
- package/dist/elements/OTPInput/OTPInput.d.ts.map +1 -1
- package/dist/elements/OTPInput/index.js +1 -734
- package/dist/elements/OTPInput/index.js.map +1 -1
- package/dist/elements/OTPInput/index.mjs +1 -732
- package/dist/elements/OTPInput/index.mjs.map +1 -1
- package/dist/elements/Pagination/Pagination.d.ts +45 -0
- package/dist/elements/Pagination/Pagination.d.ts.map +1 -0
- package/dist/elements/Pagination/Pagination.styles.d.ts +10 -0
- package/dist/elements/Pagination/Pagination.styles.d.ts.map +1 -0
- package/dist/elements/Pagination/Pagination.types.d.ts +55 -0
- package/dist/elements/Pagination/Pagination.types.d.ts.map +1 -0
- package/dist/elements/Pagination/index.d.ts +21 -0
- package/dist/elements/Pagination/index.d.ts.map +1 -0
- package/dist/elements/Pagination/index.js +3 -0
- package/dist/elements/Pagination/index.js.map +1 -0
- package/dist/elements/Pagination/index.mjs +3 -0
- package/dist/elements/Pagination/index.mjs.map +1 -0
- package/dist/elements/Panel/index.js +1 -330
- package/dist/elements/Panel/index.js.map +1 -1
- package/dist/elements/Panel/index.mjs +1 -323
- package/dist/elements/Panel/index.mjs.map +1 -1
- package/dist/elements/PasswordField/PasswordField.d.ts +27 -0
- package/dist/elements/PasswordField/PasswordField.d.ts.map +1 -0
- package/dist/elements/PasswordField/PasswordField.styles.d.ts +32 -0
- package/dist/elements/PasswordField/PasswordField.styles.d.ts.map +1 -0
- package/dist/elements/PasswordField/PasswordField.types.d.ts +100 -0
- package/dist/elements/PasswordField/PasswordField.types.d.ts.map +1 -0
- package/dist/elements/PasswordField/index.css +2 -0
- package/dist/elements/PasswordField/index.css.map +1 -0
- package/dist/elements/PasswordField/index.d.ts +20 -0
- package/dist/elements/PasswordField/index.d.ts.map +1 -0
- package/dist/elements/PasswordField/index.js +3 -0
- package/dist/elements/PasswordField/index.js.map +1 -0
- package/dist/elements/PasswordField/index.mjs +3 -0
- package/dist/elements/PasswordField/index.mjs.map +1 -0
- package/dist/elements/Progress/index.js +1 -187
- package/dist/elements/Progress/index.js.map +1 -1
- package/dist/elements/Progress/index.mjs +1 -181
- package/dist/elements/Progress/index.mjs.map +1 -1
- package/dist/elements/RadioGroup/index.js +1 -369
- package/dist/elements/RadioGroup/index.js.map +1 -1
- package/dist/elements/RadioGroup/index.mjs +1 -359
- package/dist/elements/RadioGroup/index.mjs.map +1 -1
- package/dist/elements/Resizable/index.js +1 -1580
- package/dist/elements/Resizable/index.js.map +1 -1
- package/dist/elements/Resizable/index.mjs +1 -1566
- package/dist/elements/Resizable/index.mjs.map +1 -1
- package/dist/elements/SearchField/SearchField.d.ts +27 -0
- package/dist/elements/SearchField/SearchField.d.ts.map +1 -0
- package/dist/elements/SearchField/SearchField.styles.d.ts +32 -0
- package/dist/elements/SearchField/SearchField.styles.d.ts.map +1 -0
- package/dist/elements/SearchField/SearchField.types.d.ts +45 -0
- package/dist/elements/SearchField/SearchField.types.d.ts.map +1 -0
- package/dist/elements/SearchField/index.css +2 -0
- package/dist/elements/SearchField/index.css.map +1 -0
- package/dist/elements/SearchField/index.d.ts +21 -0
- package/dist/elements/SearchField/index.d.ts.map +1 -0
- package/dist/elements/SearchField/index.js +3 -0
- package/dist/elements/SearchField/index.js.map +1 -0
- package/dist/elements/SearchField/index.mjs +3 -0
- package/dist/elements/SearchField/index.mjs.map +1 -0
- package/dist/elements/Select/Select.d.ts +19 -48
- package/dist/elements/Select/Select.d.ts.map +1 -1
- package/dist/elements/Select/Select.styles.d.ts +55 -0
- package/dist/elements/Select/Select.styles.d.ts.map +1 -0
- package/dist/elements/Select/index.js +1 -589
- package/dist/elements/Select/index.js.map +1 -1
- package/dist/elements/Select/index.mjs +1 -582
- package/dist/elements/Select/index.mjs.map +1 -1
- package/dist/elements/Skeleton/index.js +1 -82
- package/dist/elements/Skeleton/index.js.map +1 -1
- package/dist/elements/Skeleton/index.mjs +1 -78
- package/dist/elements/Skeleton/index.mjs.map +1 -1
- package/dist/elements/Switch/index.js +1 -179
- package/dist/elements/Switch/index.js.map +1 -1
- package/dist/elements/Switch/index.mjs +1 -173
- package/dist/elements/Switch/index.mjs.map +1 -1
- package/dist/elements/Table/Table.d.ts +3 -24
- package/dist/elements/Table/Table.d.ts.map +1 -1
- package/dist/elements/Table/Table.styles.d.ts +24 -0
- package/dist/elements/Table/Table.styles.d.ts.map +1 -0
- package/dist/elements/Table/index.js +1 -595
- package/dist/elements/Table/index.js.map +1 -1
- package/dist/elements/Table/index.mjs +1 -578
- package/dist/elements/Table/index.mjs.map +1 -1
- package/dist/elements/Tabs/Tabs.d.ts +5 -3
- package/dist/elements/Tabs/Tabs.d.ts.map +1 -1
- package/dist/elements/Tabs/Tabs.types.d.ts +15 -0
- package/dist/elements/Tabs/Tabs.types.d.ts.map +1 -1
- package/dist/elements/Tabs/index.js +1 -337
- package/dist/elements/Tabs/index.js.map +1 -1
- package/dist/elements/Tabs/index.mjs +1 -320
- package/dist/elements/Tabs/index.mjs.map +1 -1
- package/dist/elements/TextField/TextField.d.ts +6 -42
- package/dist/elements/TextField/TextField.d.ts.map +1 -1
- package/dist/elements/TextField/TextField.hooks.d.ts +63 -0
- package/dist/elements/TextField/TextField.hooks.d.ts.map +1 -0
- package/dist/elements/TextField/TextField.icons.d.ts +19 -0
- package/dist/elements/TextField/TextField.icons.d.ts.map +1 -0
- package/dist/elements/TextField/TextField.styles.d.ts +37 -0
- package/dist/elements/TextField/TextField.styles.d.ts.map +1 -0
- package/dist/elements/TextField/TextField.types.d.ts +3 -0
- package/dist/elements/TextField/TextField.types.d.ts.map +1 -1
- package/dist/elements/TextField/index.css +1 -22
- package/dist/elements/TextField/index.css.map +1 -1
- package/dist/elements/TextField/index.js +1 -902
- package/dist/elements/TextField/index.js.map +1 -1
- package/dist/elements/TextField/index.mjs +1 -882
- package/dist/elements/TextField/index.mjs.map +1 -1
- package/dist/elements/TimeField/index.js +1 -254
- package/dist/elements/TimeField/index.js.map +1 -1
- package/dist/elements/TimeField/index.mjs +1 -238
- package/dist/elements/TimeField/index.mjs.map +1 -1
- package/dist/elements/Toast/Toast.d.ts +0 -22
- package/dist/elements/Toast/Toast.d.ts.map +1 -1
- package/dist/elements/Toast/index.js +1 -737
- package/dist/elements/Toast/index.js.map +1 -1
- package/dist/elements/Toast/index.mjs +1 -724
- package/dist/elements/Toast/index.mjs.map +1 -1
- package/dist/elements/Tooltip/index.js +1 -323
- package/dist/elements/Tooltip/index.js.map +1 -1
- package/dist/elements/Tooltip/index.mjs +1 -310
- package/dist/elements/Tooltip/index.mjs.map +1 -1
- package/dist/elements/index.css +1 -22
- package/dist/elements/index.css.map +1 -1
- package/dist/elements/index.d.ts +13 -1
- package/dist/elements/index.d.ts.map +1 -1
- package/dist/elements/index.js +1 -12455
- package/dist/elements/index.js.map +1 -1
- package/dist/elements/index.mjs +1 -12233
- package/dist/elements/index.mjs.map +1 -1
- package/dist/index.css +1 -22
- package/dist/index.css.map +1 -1
- package/dist/index.js +2 -12490
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -12262
- package/dist/index.mjs.map +1 -1
- package/dist/schemas/index.js +2 -54
- package/dist/schemas/index.js.map +1 -1
- package/dist/schemas/index.mjs +2 -48
- package/dist/schemas/index.mjs.map +1 -1
- package/dist/styles/defaults.css +151 -0
- package/dist/styles/index.js +1 -166
- package/dist/styles/index.js.map +1 -1
- package/dist/styles/index.mjs +1 -129
- package/dist/styles/index.mjs.map +1 -1
- package/dist/styles/shared-variants.d.ts +3 -3
- package/dist/styles/shared-variants.d.ts.map +1 -1
- package/dist/utils/index.js +1 -12
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/index.mjs +1 -10
- package/dist/utils/index.mjs.map +1 -1
- package/package.json +9 -7
- package/src/elements/Accordion/Accordion.stories.tsx +1 -1
- package/src/elements/AlertDialog/AlertDialog.stories.tsx +124 -0
- package/src/elements/Avatar/Avatar.stories.tsx +1 -1
- package/src/elements/Badge/Badge.stories.tsx +1 -1
- package/src/elements/Breadcrumbs/Breadcrumbs.stories.tsx +1 -1
- package/src/elements/Button/Button.stories.tsx +1 -1
- package/src/elements/ButtonGroup/ButtonGroup.stories.tsx +1 -1
- package/src/elements/Card/Card.stories.tsx +1 -1
- package/src/elements/Carousel/Carousel.stories.tsx +1 -1
- package/src/elements/Chart/Chart.stories.tsx +1 -1
- package/src/elements/Checkbox/Checkbox.stories.tsx +1 -1
- package/src/elements/CheckboxGroup/CheckboxGroup.stories.tsx +4 -4
- package/src/elements/Combobox/Combobox.stories.tsx +133 -0
- package/src/elements/DatePicker/DatePicker.stories.tsx +1 -1
- package/src/elements/Dropdown/Dropdown.stories.tsx +1 -1
- package/src/elements/FileField/FileField.stories.tsx +2 -2
- package/src/elements/FileField/FileProgress.stories.tsx +1 -1
- package/src/elements/FormLayout/FormLayout.stories.tsx +1 -1
- package/src/elements/Modal/Modal.stories.tsx +1 -1
- package/src/elements/NumberField/NumberField.stories.tsx +1 -1
- package/src/elements/OTPInput/OTPInput.stories.tsx +1 -1
- package/src/elements/Pagination/Pagination.stories.tsx +203 -0
- package/src/elements/Panel/Panel.stories.tsx +1 -1
- package/src/elements/PasswordField/PasswordField.stories.tsx +167 -0
- package/src/elements/Progress/Progress.stories.tsx +7 -2
- package/src/elements/RadioGroup/RadioGroup.stories.tsx +3 -3
- package/src/elements/Resizable/Resizable.stories.tsx +1 -1
- package/src/elements/SearchField/SearchField.stories.tsx +146 -0
- package/src/elements/Select/Select.stories.tsx +1 -1
- package/src/elements/Skeleton/Skeleton.stories.tsx +1 -1
- package/src/elements/Switch/Switch.stories.tsx +1 -1
- package/src/elements/Table/Table.stories.tsx +1 -1
- package/src/elements/Tabs/Tabs.stories.tsx +46 -2
- package/src/elements/TextField/TextField.stories.tsx +1 -1
- package/src/elements/TimeField/TimeField.stories.tsx +1 -1
- package/src/elements/Toast/Toast.stories.tsx +1 -1
- package/src/elements/Tooltip/Tooltip.stories.tsx +1 -1
|
@@ -1,312 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {
|
|
3
|
-
import { cva } from 'class-variance-authority';
|
|
4
|
-
import { clsx } from 'clsx';
|
|
5
|
-
import { twMerge } from 'tailwind-merge';
|
|
6
|
-
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
7
|
-
import { z } from 'zod';
|
|
8
|
-
|
|
9
|
-
// src/elements/Tooltip/Tooltip.tsx
|
|
10
|
-
function cn(...inputs) {
|
|
11
|
-
return twMerge(clsx(inputs));
|
|
12
|
-
}
|
|
13
|
-
var tooltipContentVariants = cva(
|
|
14
|
-
// Base styles
|
|
15
|
-
[
|
|
16
|
-
"z-50 overflow-hidden rounded-md px-3 py-1.5 text-sm shadow-md",
|
|
17
|
-
// Inverted colors for high contrast (7:1 ratio)
|
|
18
|
-
"bg-[var(--content-foreground)] text-[var(--content-background)]",
|
|
19
|
-
// Entry animation base
|
|
20
|
-
"animate-in fade-in-0",
|
|
21
|
-
// Exit animation
|
|
22
|
-
"data-[exiting]:animate-out data-[exiting]:fade-out-0"
|
|
23
|
-
],
|
|
24
|
-
{
|
|
25
|
-
variants: {
|
|
26
|
-
side: {
|
|
27
|
-
top: [
|
|
28
|
-
"motion-safe:slide-in-from-bottom-2",
|
|
29
|
-
"data-[exiting]:motion-safe:slide-out-to-bottom-2"
|
|
30
|
-
],
|
|
31
|
-
bottom: [
|
|
32
|
-
"motion-safe:slide-in-from-top-2",
|
|
33
|
-
"data-[exiting]:motion-safe:slide-out-to-top-2"
|
|
34
|
-
],
|
|
35
|
-
left: [
|
|
36
|
-
"motion-safe:slide-in-from-right-2",
|
|
37
|
-
"data-[exiting]:motion-safe:slide-out-to-right-2"
|
|
38
|
-
],
|
|
39
|
-
right: [
|
|
40
|
-
"motion-safe:slide-in-from-left-2",
|
|
41
|
-
"data-[exiting]:motion-safe:slide-out-to-left-2"
|
|
42
|
-
]
|
|
43
|
-
}
|
|
44
|
-
},
|
|
45
|
-
defaultVariants: {
|
|
46
|
-
side: "top"
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
);
|
|
50
|
-
var tooltipArrowVariants = cva(
|
|
51
|
-
// Base arrow styles
|
|
52
|
-
"fill-[var(--content-foreground)]",
|
|
53
|
-
{
|
|
54
|
-
variants: {
|
|
55
|
-
side: {
|
|
56
|
-
top: "rotate-180",
|
|
57
|
-
bottom: "rotate-0",
|
|
58
|
-
left: "rotate-90",
|
|
59
|
-
right: "-rotate-90"
|
|
60
|
-
}
|
|
61
|
-
},
|
|
62
|
-
defaultVariants: {
|
|
63
|
-
side: "top"
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
);
|
|
67
|
-
function placementToSide(placement) {
|
|
68
|
-
if (!placement) return "top";
|
|
69
|
-
const basePlacement = placement.split(" ")[0];
|
|
70
|
-
if (basePlacement === "top" || basePlacement === "bottom" || basePlacement === "left" || basePlacement === "right") {
|
|
71
|
-
return basePlacement;
|
|
72
|
-
}
|
|
73
|
-
return "top";
|
|
74
|
-
}
|
|
75
|
-
function TooltipRoot({
|
|
76
|
-
children,
|
|
77
|
-
delay = 700,
|
|
78
|
-
closeDelay = 300,
|
|
79
|
-
trigger = "hover",
|
|
80
|
-
isOpen,
|
|
81
|
-
defaultOpen = false,
|
|
82
|
-
onOpenChange,
|
|
83
|
-
isDisabled = false
|
|
84
|
-
}) {
|
|
85
|
-
const effectiveDelay = trigger === "focus" ? 99999999 : delay;
|
|
86
|
-
return /* @__PURE__ */ jsx(
|
|
87
|
-
TooltipTrigger$1,
|
|
88
|
-
{
|
|
89
|
-
delay: effectiveDelay,
|
|
90
|
-
closeDelay,
|
|
91
|
-
isOpen,
|
|
92
|
-
defaultOpen,
|
|
93
|
-
onOpenChange,
|
|
94
|
-
isDisabled,
|
|
95
|
-
children
|
|
96
|
-
}
|
|
97
|
-
);
|
|
98
|
-
}
|
|
99
|
-
TooltipRoot.displayName = "Tooltip";
|
|
100
|
-
function TooltipTriggerComponent({
|
|
101
|
-
children
|
|
102
|
-
}) {
|
|
103
|
-
return children;
|
|
104
|
-
}
|
|
105
|
-
TooltipTriggerComponent.displayName = "TooltipTrigger";
|
|
106
|
-
function TooltipContentComponent({
|
|
107
|
-
children,
|
|
108
|
-
side = "top",
|
|
109
|
-
sideOffset = 4,
|
|
110
|
-
alignOffset = 0,
|
|
111
|
-
shouldFlip = true,
|
|
112
|
-
showArrow = false,
|
|
113
|
-
arrowSize = 8,
|
|
114
|
-
className,
|
|
115
|
-
...restProps
|
|
116
|
-
}) {
|
|
117
|
-
return /* @__PURE__ */ jsx(
|
|
118
|
-
Tooltip$1,
|
|
119
|
-
{
|
|
120
|
-
placement: side,
|
|
121
|
-
offset: sideOffset,
|
|
122
|
-
crossOffset: alignOffset,
|
|
123
|
-
shouldFlip,
|
|
124
|
-
...restProps,
|
|
125
|
-
className: composeRenderProps(className, (className2, renderProps) => {
|
|
126
|
-
const actualSide = placementToSide(renderProps.placement);
|
|
127
|
-
return cn(
|
|
128
|
-
tooltipContentVariants({ side: actualSide }),
|
|
129
|
-
className2
|
|
130
|
-
);
|
|
131
|
-
}),
|
|
132
|
-
children: (renderProps) => {
|
|
133
|
-
const actualSide = placementToSide(renderProps.placement);
|
|
134
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
135
|
-
showArrow && /* @__PURE__ */ jsx(OverlayArrow, { children: /* @__PURE__ */ jsx(
|
|
136
|
-
"svg",
|
|
137
|
-
{
|
|
138
|
-
width: arrowSize,
|
|
139
|
-
height: arrowSize,
|
|
140
|
-
viewBox: "0 0 8 8",
|
|
141
|
-
className: tooltipArrowVariants({ side: actualSide }),
|
|
142
|
-
"data-testid": "tooltip-arrow",
|
|
143
|
-
children: /* @__PURE__ */ jsx("path", { d: "M0 0 L4 4 L8 0" })
|
|
144
|
-
}
|
|
145
|
-
) }),
|
|
146
|
-
children
|
|
147
|
-
] });
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
);
|
|
151
|
-
}
|
|
152
|
-
TooltipContentComponent.displayName = "TooltipContent";
|
|
153
|
-
function TooltipArrowComponent({
|
|
154
|
-
size = 8,
|
|
155
|
-
className,
|
|
156
|
-
"data-testid": dataTestId = "tooltip-arrow",
|
|
157
|
-
...restProps
|
|
158
|
-
}) {
|
|
159
|
-
return /* @__PURE__ */ jsx(OverlayArrow, { children: ({ placement }) => {
|
|
160
|
-
const side = placementToSide(placement);
|
|
161
|
-
return /* @__PURE__ */ jsx(
|
|
162
|
-
"svg",
|
|
163
|
-
{
|
|
164
|
-
width: size,
|
|
165
|
-
height: size,
|
|
166
|
-
viewBox: "0 0 8 8",
|
|
167
|
-
className: cn(tooltipArrowVariants({ side }), className),
|
|
168
|
-
"data-testid": dataTestId,
|
|
169
|
-
...restProps,
|
|
170
|
-
children: /* @__PURE__ */ jsx("path", { d: "M0 0 L4 4 L8 0" })
|
|
171
|
-
}
|
|
172
|
-
);
|
|
173
|
-
} });
|
|
174
|
-
}
|
|
175
|
-
TooltipArrowComponent.displayName = "TooltipArrow";
|
|
176
|
-
var Tooltip = TooltipRoot;
|
|
177
|
-
var TooltipTrigger = TooltipTriggerComponent;
|
|
178
|
-
var TooltipContent = TooltipContentComponent;
|
|
179
|
-
var TooltipArrow = TooltipArrowComponent;
|
|
180
|
-
var BaseComponentPropsSchema = z.object({
|
|
181
|
-
// Styling
|
|
182
|
-
className: z.string().optional(),
|
|
183
|
-
// React
|
|
184
|
-
children: z.any().optional(),
|
|
185
|
-
// ReactNode not directly supported by Zod
|
|
186
|
-
id: z.string().optional(),
|
|
187
|
-
// Accessibility (WCAG 2.2 AA requirements)
|
|
188
|
-
"aria-label": z.string().optional(),
|
|
189
|
-
"aria-labelledby": z.string().optional(),
|
|
190
|
-
"aria-describedby": z.string().optional(),
|
|
191
|
-
"aria-live": z.enum(["off", "polite", "assertive"]).optional(),
|
|
192
|
-
"aria-hidden": z.boolean().optional(),
|
|
193
|
-
// Testing & Development
|
|
194
|
-
"data-testid": z.string().optional()
|
|
195
|
-
});
|
|
196
|
-
|
|
197
|
-
// src/elements/Tooltip/Tooltip.types.ts
|
|
198
|
-
var TooltipSideSchema = z.enum(["top", "bottom", "left", "right"]);
|
|
199
|
-
var TooltipTriggerModeSchema = z.enum(["hover", "focus"]);
|
|
200
|
-
var TooltipPropsSchema = BaseComponentPropsSchema.extend({
|
|
201
|
-
/**
|
|
202
|
-
* Show delay in milliseconds
|
|
203
|
-
* Time to wait before showing tooltip on hover
|
|
204
|
-
* @default 700
|
|
205
|
-
*/
|
|
206
|
-
delay: z.number().min(0).optional().default(700),
|
|
207
|
-
/**
|
|
208
|
-
* Hide delay in milliseconds
|
|
209
|
-
* Time to wait before hiding tooltip after mouse leave
|
|
210
|
-
* @default 300
|
|
211
|
-
*/
|
|
212
|
-
closeDelay: z.number().min(0).optional().default(300),
|
|
213
|
-
/**
|
|
214
|
-
* Trigger mode
|
|
215
|
-
* - 'hover': Show on hover and focus (default)
|
|
216
|
-
* - 'focus': Show only on keyboard focus (no hover)
|
|
217
|
-
* @default 'hover'
|
|
218
|
-
*/
|
|
219
|
-
trigger: TooltipTriggerModeSchema.optional().default("hover"),
|
|
220
|
-
/**
|
|
221
|
-
* Controlled open state
|
|
222
|
-
* When provided, tooltip becomes controlled
|
|
223
|
-
*/
|
|
224
|
-
isOpen: z.boolean().optional(),
|
|
225
|
-
/**
|
|
226
|
-
* Default open state for uncontrolled mode
|
|
227
|
-
* @default false
|
|
228
|
-
*/
|
|
229
|
-
defaultOpen: z.boolean().optional().default(false),
|
|
230
|
-
/**
|
|
231
|
-
* Callback when open state changes
|
|
232
|
-
* Called with new isOpen value
|
|
233
|
-
*/
|
|
234
|
-
onOpenChange: z.custom().optional(),
|
|
235
|
-
/**
|
|
236
|
-
* Disable tooltip without affecting trigger element
|
|
237
|
-
* @default false
|
|
238
|
-
*/
|
|
239
|
-
isDisabled: z.boolean().optional().default(false),
|
|
240
|
-
/**
|
|
241
|
-
* Children must include TooltipTrigger and TooltipContent
|
|
242
|
-
*/
|
|
243
|
-
children: z.custom()
|
|
244
|
-
});
|
|
245
|
-
var TooltipTriggerPropsSchema = BaseComponentPropsSchema.extend({
|
|
246
|
-
/**
|
|
247
|
-
* Render as child element instead of wrapping
|
|
248
|
-
* When true, merges props into the child element
|
|
249
|
-
* @default false
|
|
250
|
-
*/
|
|
251
|
-
asChild: z.boolean().optional().default(false),
|
|
252
|
-
/**
|
|
253
|
-
* Single child element that triggers the tooltip
|
|
254
|
-
* Must be focusable for keyboard accessibility
|
|
255
|
-
*/
|
|
256
|
-
children: z.custom()
|
|
257
|
-
});
|
|
258
|
-
var TooltipContentPropsSchema = BaseComponentPropsSchema.extend({
|
|
259
|
-
/**
|
|
260
|
-
* Placement relative to trigger element
|
|
261
|
-
* @default 'top'
|
|
262
|
-
*/
|
|
263
|
-
side: TooltipSideSchema.optional().default("top"),
|
|
264
|
-
/**
|
|
265
|
-
* Offset from trigger in pixels (main axis)
|
|
266
|
-
* @default 4
|
|
267
|
-
*/
|
|
268
|
-
sideOffset: z.number().optional().default(4),
|
|
269
|
-
/**
|
|
270
|
-
* Cross-axis offset in pixels
|
|
271
|
-
* @default 0
|
|
272
|
-
*/
|
|
273
|
-
alignOffset: z.number().optional().default(0),
|
|
274
|
-
/**
|
|
275
|
-
* Automatically flip placement when constrained by viewport
|
|
276
|
-
* @default true
|
|
277
|
-
*/
|
|
278
|
-
shouldFlip: z.boolean().optional().default(true),
|
|
279
|
-
/**
|
|
280
|
-
* Show arrow pointing to trigger element
|
|
281
|
-
* @default false
|
|
282
|
-
*/
|
|
283
|
-
showArrow: z.boolean().optional().default(false),
|
|
284
|
-
/**
|
|
285
|
-
* Arrow size in pixels
|
|
286
|
-
* @default 8
|
|
287
|
-
*/
|
|
288
|
-
arrowSize: z.number().min(0).optional().default(8),
|
|
289
|
-
/**
|
|
290
|
-
* Custom className for styling
|
|
291
|
-
*/
|
|
292
|
-
className: z.string().optional(),
|
|
293
|
-
/**
|
|
294
|
-
* Tooltip content (typically text)
|
|
295
|
-
*/
|
|
296
|
-
children: z.custom()
|
|
297
|
-
});
|
|
298
|
-
var TooltipArrowPropsSchema = z.object({
|
|
299
|
-
/**
|
|
300
|
-
* Arrow size in pixels
|
|
301
|
-
* @default 8
|
|
302
|
-
*/
|
|
303
|
-
size: z.number().min(0).optional().default(8),
|
|
304
|
-
/**
|
|
305
|
-
* Custom className for styling
|
|
306
|
-
*/
|
|
307
|
-
className: z.string().optional()
|
|
308
|
-
});
|
|
309
|
-
|
|
310
|
-
export { Tooltip, TooltipArrow, TooltipArrowPropsSchema, TooltipContent, TooltipContentPropsSchema, TooltipPropsSchema, TooltipSideSchema, TooltipTrigger, TooltipTriggerModeSchema, TooltipTriggerPropsSchema, tooltipArrowVariants, tooltipContentVariants };
|
|
311
|
-
//# sourceMappingURL=index.mjs.map
|
|
2
|
+
import {TooltipTrigger,Tooltip,OverlayArrow,composeRenderProps}from'react-aria-components';import {cva}from'class-variance-authority';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {z}from'zod';function T(...t){return twMerge(clsx(t))}var P=cva(["z-50 overflow-hidden rounded-md px-3 py-1.5 text-sm shadow-md","bg-[var(--content-foreground)] text-[var(--content-background)]","animate-in fade-in-0","data-[exiting]:animate-out data-[exiting]:fade-out-0"],{variants:{side:{top:["motion-safe:slide-in-from-bottom-2","data-[exiting]:motion-safe:slide-out-to-bottom-2"],bottom:["motion-safe:slide-in-from-top-2","data-[exiting]:motion-safe:slide-out-to-top-2"],left:["motion-safe:slide-in-from-right-2","data-[exiting]:motion-safe:slide-out-to-right-2"],right:["motion-safe:slide-in-from-left-2","data-[exiting]:motion-safe:slide-out-to-left-2"]}},defaultVariants:{side:"top"}}),u=cva("fill-[var(--content-foreground)]",{variants:{side:{top:"rotate-180",bottom:"rotate-0",left:"rotate-90",right:"-rotate-90"}},defaultVariants:{side:"top"}});function g(t){if(!t)return "top";let e=t.split(" ")[0];return e==="top"||e==="bottom"||e==="left"||e==="right"?e:"top"}function b({children:t,delay:e=700,closeDelay:a=300,trigger:p="hover",isOpen:n,defaultOpen:l=false,onOpenChange:s,isDisabled:m=false}){return jsx(TooltipTrigger,{delay:p==="focus"?99999999:e,closeDelay:a,isOpen:n,defaultOpen:l,onOpenChange:s,isDisabled:m,children:t})}b.displayName="Tooltip";function S({children:t}){return t}S.displayName="TooltipTrigger";function w({children:t,side:e="top",sideOffset:a=4,alignOffset:p=0,shouldFlip:n=true,showArrow:l=false,arrowSize:s=8,className:m,...h}){return jsx(Tooltip,{placement:e,offset:a,crossOffset:p,shouldFlip:n,...h,className:composeRenderProps(m,(f,c)=>{let N=g(c.placement);return T(P({side:N}),f)}),children:f=>{let c=g(f.placement);return jsxs(Fragment,{children:[l&&jsx(OverlayArrow,{children:jsx("svg",{width:s,height:s,viewBox:"0 0 8 8",className:u({side:c}),"data-testid":"tooltip-arrow",children:jsx("path",{d:"M0 0 L4 4 L8 0"})})}),t]})}})}w.displayName="TooltipContent";function C({size:t=8,className:e,"data-testid":a="tooltip-arrow",...p}){return jsx(OverlayArrow,{children:({placement:n})=>{let l=g(n);return jsx("svg",{width:t,height:t,viewBox:"0 0 8 8",className:T(u({side:l}),e),"data-testid":a,...p,children:jsx("path",{d:"M0 0 L4 4 L8 0"})})}})}C.displayName="TooltipArrow";var B=b,D=S,E=w,L=C;var d=z.object({className:z.string().optional(),children:z.any().optional(),id:z.string().optional(),"aria-label":z.string().optional(),"aria-labelledby":z.string().optional(),"aria-describedby":z.string().optional(),"aria-live":z.enum(["off","polite","assertive"]).optional(),"aria-hidden":z.boolean().optional(),"data-testid":z.string().optional()});var v=z.enum(["top","bottom","left","right"]),A=z.enum(["hover","focus"]),k=d.extend({delay:z.number().min(0).optional().default(700),closeDelay:z.number().min(0).optional().default(300),trigger:A.optional().default("hover"),isOpen:z.boolean().optional(),defaultOpen:z.boolean().optional().default(false),onOpenChange:z.custom().optional(),isDisabled:z.boolean().optional().default(false),children:z.custom()}),q=d.extend({asChild:z.boolean().optional().default(false),children:z.custom()}),G=d.extend({side:v.optional().default("top"),sideOffset:z.number().optional().default(4),alignOffset:z.number().optional().default(0),shouldFlip:z.boolean().optional().default(true),showArrow:z.boolean().optional().default(false),arrowSize:z.number().min(0).optional().default(8),className:z.string().optional(),children:z.custom()}),H=z.object({size:z.number().min(0).optional().default(8),className:z.string().optional()});export{B as Tooltip,L as TooltipArrow,H as TooltipArrowPropsSchema,E as TooltipContent,G as TooltipContentPropsSchema,k as TooltipPropsSchema,v as TooltipSideSchema,D as TooltipTrigger,A as TooltipTriggerModeSchema,q as TooltipTriggerPropsSchema,u as tooltipArrowVariants,P as tooltipContentVariants};//# sourceMappingURL=index.mjs.map
|
|
312
3
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/cn.ts","../../../src/elements/Tooltip/Tooltip.tsx","../../../src/schemas/BaseComponentProps.ts","../../../src/elements/Tooltip/Tooltip.types.ts"],"names":["AriaTooltipTrigger","AriaTooltip","className","z"],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * Class Name Utility\n * Merges Tailwind CSS classes with conflict resolution\n *\n * Combines clsx for conditional classes and tailwind-merge for deduplication\n *\n * @example\n * cn('px-2 py-1', 'px-4') // => 'py-1 px-4' (px-4 overrides px-2)\n * cn('text-red-500', condition && 'text-blue-500') // => conditional application\n */\n\nimport { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","\"use client\";\n\n/**\n * Tooltip Component - Implementation\n *\n * Accessible tooltip component combining React Aria primitives with ShadCN styling.\n * Follows Themis library patterns with compound component structure.\n *\n * @see plan.md (Implementation plan)\n * @see Tooltip.types.ts (Zod schemas)\n * @see tooltip-prd.md (Full requirements)\n */\n\nimport { type ReactElement } from 'react';\nimport {\n TooltipTrigger as AriaTooltipTrigger,\n Tooltip as AriaTooltip,\n OverlayArrow,\n composeRenderProps,\n} from 'react-aria-components';\nimport { cva } from 'class-variance-authority';\nimport { cn } from '../../utils/cn';\nimport type {\n TooltipProps,\n TooltipTriggerProps,\n TooltipContentProps,\n TooltipArrowProps,\n TooltipSide,\n} from './Tooltip.types';\n\n/**\n * CVA Variants for TooltipContent\n *\n * Placement-based animations and high-contrast inverted colors.\n *\n * @see plan.md (CVA Variant Structure)\n * @see tooltip-prd.md US-2 (Configurable Placement)\n */\nexport const tooltipContentVariants = cva(\n // Base styles\n [\n \"z-50 overflow-hidden rounded-md px-3 py-1.5 text-sm shadow-md\",\n // Inverted colors for high contrast (7:1 ratio)\n \"bg-[var(--content-foreground)] text-[var(--content-background)]\",\n // Entry animation base\n \"animate-in fade-in-0\",\n // Exit animation\n \"data-[exiting]:animate-out data-[exiting]:fade-out-0\",\n ],\n {\n variants: {\n side: {\n top: [\n \"motion-safe:slide-in-from-bottom-2\",\n \"data-[exiting]:motion-safe:slide-out-to-bottom-2\",\n ],\n bottom: [\n \"motion-safe:slide-in-from-top-2\",\n \"data-[exiting]:motion-safe:slide-out-to-top-2\",\n ],\n left: [\n \"motion-safe:slide-in-from-right-2\",\n \"data-[exiting]:motion-safe:slide-out-to-right-2\",\n ],\n right: [\n \"motion-safe:slide-in-from-left-2\",\n \"data-[exiting]:motion-safe:slide-out-to-left-2\",\n ],\n },\n },\n defaultVariants: {\n side: \"top\",\n },\n }\n);\n\n/**\n * CVA Variants for TooltipArrow\n *\n * Rotation based on placement for correct arrow pointing direction.\n *\n * @see tooltip-prd.md US-2 (Arrow Indicator)\n */\nexport const tooltipArrowVariants = cva(\n // Base arrow styles\n \"fill-[var(--content-foreground)]\",\n {\n variants: {\n side: {\n top: \"rotate-180\",\n bottom: \"rotate-0\",\n left: \"rotate-90\",\n right: \"-rotate-90\",\n },\n },\n defaultVariants: {\n side: \"top\",\n },\n }\n);\n\n/**\n * Map React Aria placement to our side prop\n * React Aria uses placement prop with values like 'top', 'bottom', etc.\n * PlacementAxis can be 'top' | 'bottom' | 'left' | 'right' | null\n */\nfunction placementToSide(placement: string | null | undefined): TooltipSide {\n if (!placement) return 'top';\n // Extract the base placement (e.g., 'top start' -> 'top')\n const basePlacement = placement.split(' ')[0];\n if (basePlacement === 'top' || basePlacement === 'bottom' ||\n basePlacement === 'left' || basePlacement === 'right') {\n return basePlacement;\n }\n return 'top';\n}\n\n/**\n * Tooltip Root Component\n *\n * Manages tooltip open/close state, delays, and trigger behavior.\n * Wraps React Aria's TooltipTrigger with delay configuration.\n *\n * @see tooltip-prd.md US-1 (Basic Usage)\n * @see tooltip-prd.md US-3 (Delay Configuration)\n * @see tooltip-prd.md US-7 (Controlled State)\n */\nfunction TooltipRoot({\n children,\n delay = 700,\n closeDelay = 300,\n trigger = 'hover',\n isOpen,\n defaultOpen = false,\n onOpenChange,\n isDisabled = false,\n}: TooltipProps): ReactElement {\n // React Aria doesn't have a direct trigger mode prop\n // 'focus' mode is achieved by setting delay to a very high value\n // and relying on focus to trigger immediately\n const effectiveDelay = trigger === 'focus' ? 99999999 : delay;\n\n return (\n <AriaTooltipTrigger\n delay={effectiveDelay}\n closeDelay={closeDelay}\n isOpen={isOpen}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n isDisabled={isDisabled}\n >\n {children}\n </AriaTooltipTrigger>\n );\n}\n\nTooltipRoot.displayName = 'Tooltip';\n\n/**\n * TooltipTrigger Component\n *\n * Wrapper for the element that triggers the tooltip.\n * The child element must be focusable (or wrapped with Focusable).\n *\n * React Aria's TooltipTrigger automatically applies:\n * - aria-describedby linking to tooltip\n * - Hover and focus event handlers\n *\n * @see tooltip-prd.md US-5 (Non-Button Triggers)\n */\nfunction TooltipTriggerComponent({\n children,\n}: TooltipTriggerProps): ReactElement {\n // React Aria's TooltipTrigger expects the trigger element as a direct child\n // We pass through the child element directly\n return children as ReactElement;\n}\n\nTooltipTriggerComponent.displayName = 'TooltipTrigger';\n\n/**\n * TooltipContent Component\n *\n * The actual tooltip overlay that appears.\n * Supports placement, offset, and optional arrow.\n *\n * @see tooltip-prd.md US-2 (Placement and Arrow)\n * @see tooltip-prd.md Technical Implementation Details\n */\nfunction TooltipContentComponent({\n children,\n side = 'top',\n sideOffset = 4,\n alignOffset = 0,\n shouldFlip = true,\n showArrow = false,\n arrowSize = 8,\n className,\n ...restProps\n}: TooltipContentProps & { 'data-testid'?: string }): ReactElement {\n return (\n <AriaTooltip\n placement={side}\n offset={sideOffset}\n crossOffset={alignOffset}\n shouldFlip={shouldFlip}\n {...restProps}\n className={composeRenderProps(className, (className, renderProps) => {\n // Get actual placement from render props for animation direction\n const actualSide = placementToSide(renderProps.placement);\n return cn(\n tooltipContentVariants({ side: actualSide }),\n className\n );\n })}\n >\n {(renderProps) => {\n const actualSide = placementToSide(renderProps.placement);\n return (\n <>\n {showArrow && (\n <OverlayArrow>\n <svg\n width={arrowSize}\n height={arrowSize}\n viewBox=\"0 0 8 8\"\n className={tooltipArrowVariants({ side: actualSide })}\n data-testid=\"tooltip-arrow\"\n >\n <path d=\"M0 0 L4 4 L8 0\" />\n </svg>\n </OverlayArrow>\n )}\n {children}\n </>\n );\n }}\n </AriaTooltip>\n );\n}\n\nTooltipContentComponent.displayName = 'TooltipContent';\n\n/**\n * TooltipArrow Component\n *\n * Optional arrow component for custom arrow rendering.\n * Automatically positioned based on tooltip placement.\n *\n * Note: This is an alternative to using showArrow prop on TooltipContent.\n * Use this when you need custom arrow styling or rendering.\n *\n * @see tooltip-prd.md US-2 (Arrow Indicator)\n */\nfunction TooltipArrowComponent({\n size = 8,\n className,\n 'data-testid': dataTestId = 'tooltip-arrow',\n ...restProps\n}: TooltipArrowProps & { 'data-testid'?: string }): ReactElement {\n // This component is designed to be used inside TooltipContent\n // The actual positioning is handled by OverlayArrow from React Aria\n return (\n <OverlayArrow>\n {({ placement }) => {\n const side = placementToSide(placement);\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 8 8\"\n className={cn(tooltipArrowVariants({ side }), className)}\n data-testid={dataTestId}\n {...restProps}\n >\n <path d=\"M0 0 L4 4 L8 0\" />\n </svg>\n );\n }}\n </OverlayArrow>\n );\n}\n\nTooltipArrowComponent.displayName = 'TooltipArrow';\n\n/**\n * Export all components\n *\n * Following Themis pattern - export individual components\n * No Object.assign compound pattern for Tooltip since React Aria\n * expects specific component hierarchy.\n */\nexport const Tooltip = TooltipRoot;\nexport const TooltipTrigger = TooltipTriggerComponent;\nexport const TooltipContent = TooltipContentComponent;\nexport const TooltipArrow = TooltipArrowComponent;\n","import { z } from 'zod';\n\n/**\n * Base props schema for all Themis components\n * Ensures consistent accessibility and styling APIs across the library\n *\n * @see spec.md FR-009 to FR-014 (Accessibility Requirements)\n * @see constitution.md Principle IV (Accessibility First - WCAG 2.2 AA minimum)\n */\nexport const BaseComponentPropsSchema = z.object({\n // Styling\n className: z.string().optional(),\n\n // React\n children: z.any().optional(), // ReactNode not directly supported by Zod\n id: z.string().optional(),\n\n // Accessibility (WCAG 2.2 AA requirements)\n 'aria-label': z.string().optional(),\n 'aria-labelledby': z.string().optional(),\n 'aria-describedby': z.string().optional(),\n 'aria-live': z.enum(['off', 'polite', 'assertive']).optional(),\n 'aria-hidden': z.boolean().optional(),\n\n // Testing & Development\n 'data-testid': z.string().optional(),\n});\n\nexport type BaseComponentProps = z.infer<typeof BaseComponentPropsSchema>;\n","import { z } from 'zod';\nimport { BaseComponentPropsSchema } from '../../schemas/BaseComponentProps';\nimport type { ReactNode } from 'react';\n\n/**\n * Tooltip placement/side options\n *\n * @see tooltip-prd.md US-2 (Configurable Placement)\n */\nexport const TooltipSideSchema = z.enum(['top', 'bottom', 'left', 'right']);\nexport type TooltipSide = z.infer<typeof TooltipSideSchema>;\n\n/**\n * Tooltip trigger mode options\n *\n * @see tooltip-prd.md US-4 (Keyboard-only Mode)\n */\nexport const TooltipTriggerModeSchema = z.enum(['hover', 'focus']);\nexport type TooltipTriggerMode = z.infer<typeof TooltipTriggerModeSchema>;\n\n/**\n * Tooltip root component props schema\n *\n * Manages tooltip open/close state, delays, and trigger behavior.\n * Wraps React Aria's TooltipTrigger with delay configuration.\n *\n * @see tooltip-prd.md US-1 (Basic Usage)\n * @see tooltip-prd.md US-3 (Delay Configuration)\n * @see tooltip-prd.md US-7 (Controlled State)\n */\nexport const TooltipPropsSchema = BaseComponentPropsSchema.extend({\n /**\n * Show delay in milliseconds\n * Time to wait before showing tooltip on hover\n * @default 700\n */\n delay: z.number().min(0).optional().default(700),\n\n /**\n * Hide delay in milliseconds\n * Time to wait before hiding tooltip after mouse leave\n * @default 300\n */\n closeDelay: z.number().min(0).optional().default(300),\n\n /**\n * Trigger mode\n * - 'hover': Show on hover and focus (default)\n * - 'focus': Show only on keyboard focus (no hover)\n * @default 'hover'\n */\n trigger: TooltipTriggerModeSchema.optional().default('hover'),\n\n /**\n * Controlled open state\n * When provided, tooltip becomes controlled\n */\n isOpen: z.boolean().optional(),\n\n /**\n * Default open state for uncontrolled mode\n * @default false\n */\n defaultOpen: z.boolean().optional().default(false),\n\n /**\n * Callback when open state changes\n * Called with new isOpen value\n */\n onOpenChange: z.custom<(isOpen: boolean) => void>().optional(),\n\n /**\n * Disable tooltip without affecting trigger element\n * @default false\n */\n isDisabled: z.boolean().optional().default(false),\n\n /**\n * Children must include TooltipTrigger and TooltipContent\n */\n children: z.custom<ReactNode>(),\n});\n\nexport type TooltipProps = z.infer<typeof TooltipPropsSchema>;\n\n/**\n * TooltipTrigger props schema\n *\n * Wrapper for the element that triggers the tooltip.\n * The child element must be focusable (or wrapped with Focusable).\n *\n * @see tooltip-prd.md US-5 (Non-Button Triggers)\n */\nexport const TooltipTriggerPropsSchema = BaseComponentPropsSchema.extend({\n /**\n * Render as child element instead of wrapping\n * When true, merges props into the child element\n * @default false\n */\n asChild: z.boolean().optional().default(false),\n\n /**\n * Single child element that triggers the tooltip\n * Must be focusable for keyboard accessibility\n */\n children: z.custom<ReactNode>(),\n});\n\nexport type TooltipTriggerProps = z.infer<typeof TooltipTriggerPropsSchema>;\n\n/**\n * TooltipContent props schema\n *\n * The actual tooltip overlay that appears.\n * Supports placement, offset, and optional arrow.\n *\n * @see tooltip-prd.md US-2 (Placement and Arrow)\n * @see tooltip-prd.md Technical Implementation Details\n */\nexport const TooltipContentPropsSchema = BaseComponentPropsSchema.extend({\n /**\n * Placement relative to trigger element\n * @default 'top'\n */\n side: TooltipSideSchema.optional().default('top'),\n\n /**\n * Offset from trigger in pixels (main axis)\n * @default 4\n */\n sideOffset: z.number().optional().default(4),\n\n /**\n * Cross-axis offset in pixels\n * @default 0\n */\n alignOffset: z.number().optional().default(0),\n\n /**\n * Automatically flip placement when constrained by viewport\n * @default true\n */\n shouldFlip: z.boolean().optional().default(true),\n\n /**\n * Show arrow pointing to trigger element\n * @default false\n */\n showArrow: z.boolean().optional().default(false),\n\n /**\n * Arrow size in pixels\n * @default 8\n */\n arrowSize: z.number().min(0).optional().default(8),\n\n /**\n * Custom className for styling\n */\n className: z.string().optional(),\n\n /**\n * Tooltip content (typically text)\n */\n children: z.custom<ReactNode>(),\n});\n\nexport type TooltipContentProps = z.infer<typeof TooltipContentPropsSchema>;\n\n/**\n * TooltipArrow props schema\n *\n * Optional arrow component for custom arrow rendering.\n * Automatically positioned based on tooltip placement.\n *\n * @see tooltip-prd.md US-2 (Arrow Indicator)\n */\nexport const TooltipArrowPropsSchema = z.object({\n /**\n * Arrow size in pixels\n * @default 8\n */\n size: z.number().min(0).optional().default(8),\n\n /**\n * Custom className for styling\n */\n className: z.string().optional(),\n});\n\nexport type TooltipArrowProps = z.infer<typeof TooltipArrowPropsSchema>;\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/cn.ts","../../../src/elements/Tooltip/Tooltip.tsx","../../../src/schemas/BaseComponentProps.ts","../../../src/elements/Tooltip/Tooltip.types.ts"],"names":["cn","inputs","twMerge","clsx","tooltipContentVariants","cva","tooltipArrowVariants","placementToSide","placement","basePlacement","TooltipRoot","children","delay","closeDelay","trigger","isOpen","defaultOpen","onOpenChange","isDisabled","jsx","AriaTooltipTrigger","TooltipTriggerComponent","TooltipContentComponent","side","sideOffset","alignOffset","shouldFlip","showArrow","arrowSize","className","restProps","AriaTooltip","composeRenderProps","renderProps","actualSide","jsxs","Fragment","OverlayArrow","TooltipArrowComponent","size","dataTestId","Tooltip","TooltipTrigger","TooltipContent","TooltipArrow","BaseComponentPropsSchema","z","TooltipSideSchema","TooltipTriggerModeSchema","TooltipPropsSchema","TooltipTriggerPropsSchema","TooltipContentPropsSchema","TooltipArrowPropsSchema"],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * Class Name Utility\n * Merges Tailwind CSS classes with conflict resolution\n *\n * Combines clsx for conditional classes and tailwind-merge for deduplication\n *\n * @example\n * cn('px-2 py-1', 'px-4') // => 'py-1 px-4' (px-4 overrides px-2)\n * cn('text-red-500', condition && 'text-blue-500') // => conditional application\n */\n\nimport { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","\"use client\";\n\n/**\n * Tooltip Component - Implementation\n *\n * Accessible tooltip component combining React Aria primitives with ShadCN styling.\n * Follows Themis library patterns with compound component structure.\n *\n * @see plan.md (Implementation plan)\n * @see Tooltip.types.ts (Zod schemas)\n * @see tooltip-prd.md (Full requirements)\n */\n\nimport { type ReactElement } from 'react';\nimport {\n TooltipTrigger as AriaTooltipTrigger,\n Tooltip as AriaTooltip,\n OverlayArrow,\n composeRenderProps,\n} from 'react-aria-components';\nimport { cva } from 'class-variance-authority';\nimport { cn } from '../../utils/cn';\nimport type {\n TooltipProps,\n TooltipTriggerProps,\n TooltipContentProps,\n TooltipArrowProps,\n TooltipSide,\n} from './Tooltip.types';\n\n/**\n * CVA Variants for TooltipContent\n *\n * Placement-based animations and high-contrast inverted colors.\n *\n * @see plan.md (CVA Variant Structure)\n * @see tooltip-prd.md US-2 (Configurable Placement)\n */\nexport const tooltipContentVariants = cva(\n // Base styles\n [\n \"z-50 overflow-hidden rounded-md px-3 py-1.5 text-sm shadow-md\",\n // Inverted colors for high contrast (7:1 ratio)\n \"bg-[var(--content-foreground)] text-[var(--content-background)]\",\n // Entry animation base\n \"animate-in fade-in-0\",\n // Exit animation\n \"data-[exiting]:animate-out data-[exiting]:fade-out-0\",\n ],\n {\n variants: {\n side: {\n top: [\n \"motion-safe:slide-in-from-bottom-2\",\n \"data-[exiting]:motion-safe:slide-out-to-bottom-2\",\n ],\n bottom: [\n \"motion-safe:slide-in-from-top-2\",\n \"data-[exiting]:motion-safe:slide-out-to-top-2\",\n ],\n left: [\n \"motion-safe:slide-in-from-right-2\",\n \"data-[exiting]:motion-safe:slide-out-to-right-2\",\n ],\n right: [\n \"motion-safe:slide-in-from-left-2\",\n \"data-[exiting]:motion-safe:slide-out-to-left-2\",\n ],\n },\n },\n defaultVariants: {\n side: \"top\",\n },\n }\n);\n\n/**\n * CVA Variants for TooltipArrow\n *\n * Rotation based on placement for correct arrow pointing direction.\n *\n * @see tooltip-prd.md US-2 (Arrow Indicator)\n */\nexport const tooltipArrowVariants = cva(\n // Base arrow styles\n \"fill-[var(--content-foreground)]\",\n {\n variants: {\n side: {\n top: \"rotate-180\",\n bottom: \"rotate-0\",\n left: \"rotate-90\",\n right: \"-rotate-90\",\n },\n },\n defaultVariants: {\n side: \"top\",\n },\n }\n);\n\n/**\n * Map React Aria placement to our side prop\n * React Aria uses placement prop with values like 'top', 'bottom', etc.\n * PlacementAxis can be 'top' | 'bottom' | 'left' | 'right' | null\n */\nfunction placementToSide(placement: string | null | undefined): TooltipSide {\n if (!placement) return 'top';\n // Extract the base placement (e.g., 'top start' -> 'top')\n const basePlacement = placement.split(' ')[0];\n if (basePlacement === 'top' || basePlacement === 'bottom' ||\n basePlacement === 'left' || basePlacement === 'right') {\n return basePlacement;\n }\n return 'top';\n}\n\n/**\n * Tooltip Root Component\n *\n * Manages tooltip open/close state, delays, and trigger behavior.\n * Wraps React Aria's TooltipTrigger with delay configuration.\n *\n * @see tooltip-prd.md US-1 (Basic Usage)\n * @see tooltip-prd.md US-3 (Delay Configuration)\n * @see tooltip-prd.md US-7 (Controlled State)\n */\nfunction TooltipRoot({\n children,\n delay = 700,\n closeDelay = 300,\n trigger = 'hover',\n isOpen,\n defaultOpen = false,\n onOpenChange,\n isDisabled = false,\n}: TooltipProps): ReactElement {\n // React Aria doesn't have a direct trigger mode prop\n // 'focus' mode is achieved by setting delay to a very high value\n // and relying on focus to trigger immediately\n const effectiveDelay = trigger === 'focus' ? 99999999 : delay;\n\n return (\n <AriaTooltipTrigger\n delay={effectiveDelay}\n closeDelay={closeDelay}\n isOpen={isOpen}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n isDisabled={isDisabled}\n >\n {children}\n </AriaTooltipTrigger>\n );\n}\n\nTooltipRoot.displayName = 'Tooltip';\n\n/**\n * TooltipTrigger Component\n *\n * Wrapper for the element that triggers the tooltip.\n * The child element must be focusable (or wrapped with Focusable).\n *\n * React Aria's TooltipTrigger automatically applies:\n * - aria-describedby linking to tooltip\n * - Hover and focus event handlers\n *\n * @see tooltip-prd.md US-5 (Non-Button Triggers)\n */\nfunction TooltipTriggerComponent({\n children,\n}: TooltipTriggerProps): ReactElement {\n // React Aria's TooltipTrigger expects the trigger element as a direct child\n // We pass through the child element directly\n return children as ReactElement;\n}\n\nTooltipTriggerComponent.displayName = 'TooltipTrigger';\n\n/**\n * TooltipContent Component\n *\n * The actual tooltip overlay that appears.\n * Supports placement, offset, and optional arrow.\n *\n * @see tooltip-prd.md US-2 (Placement and Arrow)\n * @see tooltip-prd.md Technical Implementation Details\n */\nfunction TooltipContentComponent({\n children,\n side = 'top',\n sideOffset = 4,\n alignOffset = 0,\n shouldFlip = true,\n showArrow = false,\n arrowSize = 8,\n className,\n ...restProps\n}: TooltipContentProps & { 'data-testid'?: string }): ReactElement {\n return (\n <AriaTooltip\n placement={side}\n offset={sideOffset}\n crossOffset={alignOffset}\n shouldFlip={shouldFlip}\n {...restProps}\n className={composeRenderProps(className, (className, renderProps) => {\n // Get actual placement from render props for animation direction\n const actualSide = placementToSide(renderProps.placement);\n return cn(\n tooltipContentVariants({ side: actualSide }),\n className\n );\n })}\n >\n {(renderProps) => {\n const actualSide = placementToSide(renderProps.placement);\n return (\n <>\n {showArrow && (\n <OverlayArrow>\n <svg\n width={arrowSize}\n height={arrowSize}\n viewBox=\"0 0 8 8\"\n className={tooltipArrowVariants({ side: actualSide })}\n data-testid=\"tooltip-arrow\"\n >\n <path d=\"M0 0 L4 4 L8 0\" />\n </svg>\n </OverlayArrow>\n )}\n {children}\n </>\n );\n }}\n </AriaTooltip>\n );\n}\n\nTooltipContentComponent.displayName = 'TooltipContent';\n\n/**\n * TooltipArrow Component\n *\n * Optional arrow component for custom arrow rendering.\n * Automatically positioned based on tooltip placement.\n *\n * Note: This is an alternative to using showArrow prop on TooltipContent.\n * Use this when you need custom arrow styling or rendering.\n *\n * @see tooltip-prd.md US-2 (Arrow Indicator)\n */\nfunction TooltipArrowComponent({\n size = 8,\n className,\n 'data-testid': dataTestId = 'tooltip-arrow',\n ...restProps\n}: TooltipArrowProps & { 'data-testid'?: string }): ReactElement {\n // This component is designed to be used inside TooltipContent\n // The actual positioning is handled by OverlayArrow from React Aria\n return (\n <OverlayArrow>\n {({ placement }) => {\n const side = placementToSide(placement);\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 8 8\"\n className={cn(tooltipArrowVariants({ side }), className)}\n data-testid={dataTestId}\n {...restProps}\n >\n <path d=\"M0 0 L4 4 L8 0\" />\n </svg>\n );\n }}\n </OverlayArrow>\n );\n}\n\nTooltipArrowComponent.displayName = 'TooltipArrow';\n\n/**\n * Export all components\n *\n * Following Themis pattern - export individual components\n * No Object.assign compound pattern for Tooltip since React Aria\n * expects specific component hierarchy.\n */\nexport const Tooltip = TooltipRoot;\nexport const TooltipTrigger = TooltipTriggerComponent;\nexport const TooltipContent = TooltipContentComponent;\nexport const TooltipArrow = TooltipArrowComponent;\n","import { z } from 'zod';\n\n/**\n * Base props schema for all Themis components\n * Ensures consistent accessibility and styling APIs across the library\n *\n * @see spec.md FR-009 to FR-014 (Accessibility Requirements)\n * @see constitution.md Principle IV (Accessibility First - WCAG 2.2 AA minimum)\n */\nexport const BaseComponentPropsSchema = z.object({\n // Styling\n className: z.string().optional(),\n\n // React\n children: z.any().optional(), // ReactNode not directly supported by Zod\n id: z.string().optional(),\n\n // Accessibility (WCAG 2.2 AA requirements)\n 'aria-label': z.string().optional(),\n 'aria-labelledby': z.string().optional(),\n 'aria-describedby': z.string().optional(),\n 'aria-live': z.enum(['off', 'polite', 'assertive']).optional(),\n 'aria-hidden': z.boolean().optional(),\n\n // Testing & Development\n 'data-testid': z.string().optional(),\n});\n\nexport type BaseComponentProps = z.infer<typeof BaseComponentPropsSchema>;\n","import { z } from 'zod';\nimport { BaseComponentPropsSchema } from '../../schemas/BaseComponentProps';\nimport type { ReactNode } from 'react';\n\n/**\n * Tooltip placement/side options\n *\n * @see tooltip-prd.md US-2 (Configurable Placement)\n */\nexport const TooltipSideSchema = z.enum(['top', 'bottom', 'left', 'right']);\nexport type TooltipSide = z.infer<typeof TooltipSideSchema>;\n\n/**\n * Tooltip trigger mode options\n *\n * @see tooltip-prd.md US-4 (Keyboard-only Mode)\n */\nexport const TooltipTriggerModeSchema = z.enum(['hover', 'focus']);\nexport type TooltipTriggerMode = z.infer<typeof TooltipTriggerModeSchema>;\n\n/**\n * Tooltip root component props schema\n *\n * Manages tooltip open/close state, delays, and trigger behavior.\n * Wraps React Aria's TooltipTrigger with delay configuration.\n *\n * @see tooltip-prd.md US-1 (Basic Usage)\n * @see tooltip-prd.md US-3 (Delay Configuration)\n * @see tooltip-prd.md US-7 (Controlled State)\n */\nexport const TooltipPropsSchema = BaseComponentPropsSchema.extend({\n /**\n * Show delay in milliseconds\n * Time to wait before showing tooltip on hover\n * @default 700\n */\n delay: z.number().min(0).optional().default(700),\n\n /**\n * Hide delay in milliseconds\n * Time to wait before hiding tooltip after mouse leave\n * @default 300\n */\n closeDelay: z.number().min(0).optional().default(300),\n\n /**\n * Trigger mode\n * - 'hover': Show on hover and focus (default)\n * - 'focus': Show only on keyboard focus (no hover)\n * @default 'hover'\n */\n trigger: TooltipTriggerModeSchema.optional().default('hover'),\n\n /**\n * Controlled open state\n * When provided, tooltip becomes controlled\n */\n isOpen: z.boolean().optional(),\n\n /**\n * Default open state for uncontrolled mode\n * @default false\n */\n defaultOpen: z.boolean().optional().default(false),\n\n /**\n * Callback when open state changes\n * Called with new isOpen value\n */\n onOpenChange: z.custom<(isOpen: boolean) => void>().optional(),\n\n /**\n * Disable tooltip without affecting trigger element\n * @default false\n */\n isDisabled: z.boolean().optional().default(false),\n\n /**\n * Children must include TooltipTrigger and TooltipContent\n */\n children: z.custom<ReactNode>(),\n});\n\nexport type TooltipProps = z.infer<typeof TooltipPropsSchema>;\n\n/**\n * TooltipTrigger props schema\n *\n * Wrapper for the element that triggers the tooltip.\n * The child element must be focusable (or wrapped with Focusable).\n *\n * @see tooltip-prd.md US-5 (Non-Button Triggers)\n */\nexport const TooltipTriggerPropsSchema = BaseComponentPropsSchema.extend({\n /**\n * Render as child element instead of wrapping\n * When true, merges props into the child element\n * @default false\n */\n asChild: z.boolean().optional().default(false),\n\n /**\n * Single child element that triggers the tooltip\n * Must be focusable for keyboard accessibility\n */\n children: z.custom<ReactNode>(),\n});\n\nexport type TooltipTriggerProps = z.infer<typeof TooltipTriggerPropsSchema>;\n\n/**\n * TooltipContent props schema\n *\n * The actual tooltip overlay that appears.\n * Supports placement, offset, and optional arrow.\n *\n * @see tooltip-prd.md US-2 (Placement and Arrow)\n * @see tooltip-prd.md Technical Implementation Details\n */\nexport const TooltipContentPropsSchema = BaseComponentPropsSchema.extend({\n /**\n * Placement relative to trigger element\n * @default 'top'\n */\n side: TooltipSideSchema.optional().default('top'),\n\n /**\n * Offset from trigger in pixels (main axis)\n * @default 4\n */\n sideOffset: z.number().optional().default(4),\n\n /**\n * Cross-axis offset in pixels\n * @default 0\n */\n alignOffset: z.number().optional().default(0),\n\n /**\n * Automatically flip placement when constrained by viewport\n * @default true\n */\n shouldFlip: z.boolean().optional().default(true),\n\n /**\n * Show arrow pointing to trigger element\n * @default false\n */\n showArrow: z.boolean().optional().default(false),\n\n /**\n * Arrow size in pixels\n * @default 8\n */\n arrowSize: z.number().min(0).optional().default(8),\n\n /**\n * Custom className for styling\n */\n className: z.string().optional(),\n\n /**\n * Tooltip content (typically text)\n */\n children: z.custom<ReactNode>(),\n});\n\nexport type TooltipContentProps = z.infer<typeof TooltipContentPropsSchema>;\n\n/**\n * TooltipArrow props schema\n *\n * Optional arrow component for custom arrow rendering.\n * Automatically positioned based on tooltip placement.\n *\n * @see tooltip-prd.md US-2 (Arrow Indicator)\n */\nexport const TooltipArrowPropsSchema = z.object({\n /**\n * Arrow size in pixels\n * @default 8\n */\n size: z.number().min(0).optional().default(8),\n\n /**\n * Custom className for styling\n */\n className: z.string().optional(),\n});\n\nexport type TooltipArrowProps = z.infer<typeof TooltipArrowPropsSchema>;\n"]}
|
package/dist/elements/index.css
CHANGED
|
@@ -1,23 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
@keyframes shake {
|
|
3
|
-
0%, 100% {
|
|
4
|
-
transform: translateX(0);
|
|
5
|
-
}
|
|
6
|
-
10%, 30%, 50%, 70%, 90% {
|
|
7
|
-
transform: translateX(-4px);
|
|
8
|
-
}
|
|
9
|
-
20%, 40%, 60%, 80% {
|
|
10
|
-
transform: translateX(4px);
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
.shake {
|
|
14
|
-
animation: shake 400ms ease-in-out;
|
|
15
|
-
}
|
|
16
|
-
@media (prefers-reduced-motion: reduce) {
|
|
17
|
-
.shake {
|
|
18
|
-
animation: none;
|
|
19
|
-
border-color: var(--destructive);
|
|
20
|
-
transition: border-color 100ms;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
1
|
+
@keyframes shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-4px)}20%,40%,60%,80%{transform:translate(4px)}}.shake{animation:shake .4s ease-in-out}@media(prefers-reduced-motion:reduce){.shake{animation:none;border-color:var(--destructive);transition:border-color .1s}}
|
|
23
2
|
/*# sourceMappingURL=index.css.map */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/elements/TextField/TextField.css"],"sourcesContent":["/**\n * TextField Component Styles\n * Additional CSS for animations and effects\n */\n\n/* Shake animation for paste prevention (Phase 3) */\n@keyframes shake {\n 0%, 100% { transform: translateX(0); }\n 10%, 30%, 50%, 70%, 90% { transform: translateX(-4px); }\n 20%, 40%, 60%, 80% { transform: translateX(4px); }\n}\n\n.shake {\n animation: shake 400ms ease-in-out;\n}\n\n/* Respect reduced motion preference (WCAG 2.2) */\n@media (prefers-reduced-motion: reduce) {\n .shake {\n animation: none;\n /* Alternative: brief border color flash */\n border-color: var(--destructive);\n transition: border-color 100ms;\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/elements/TextField/TextField.css"],"sourcesContent":["/**\n * TextField Component Styles\n * Additional CSS for animations and effects\n */\n\n/* Shake animation for paste prevention (Phase 3) */\n@keyframes shake {\n 0%, 100% { transform: translateX(0); }\n 10%, 30%, 50%, 70%, 90% { transform: translateX(-4px); }\n 20%, 40%, 60%, 80% { transform: translateX(4px); }\n}\n\n.shake {\n animation: shake 400ms ease-in-out;\n}\n\n/* Respect reduced motion preference (WCAG 2.2) */\n@media (prefers-reduced-motion: reduce) {\n .shake {\n animation: none;\n /* Alternative: brief border color flash */\n border-color: var(--destructive);\n transition: border-color 100ms;\n }\n}\n"],"mappings":"AAMA,WAAW,MACT,MAAW,UAAW,UAAW,EAAI,CACrC,oBAA0B,UAAW,UAAW,KAAO,CACvD,gBAAqB,UAAW,UAAW,IAAM,CACnD,CAEA,CANW,MAOT,UAAW,MAAM,IAAM,WACzB,CAGA,OAAO,uBAAyB,QAC9B,CAZS,MAaP,UAAW,KAEX,aAAc,IAAI,eAClB,WAAY,aAAa,GAC3B,CACF","names":[]}
|
package/dist/elements/index.d.ts
CHANGED
|
@@ -15,7 +15,8 @@ export type { CheckboxGroupProps, CheckboxGroupVariant, CheckboxGroupSize, Check
|
|
|
15
15
|
export { Chart, chartVariants, dataPointVariants, ChartPropsSchema, DataPointSchema, DataSeriesSchema, ChartTypeSchema, ChartVariantSchema, LinePatternSchema, } from './Chart';
|
|
16
16
|
export type { ChartProps, DataPoint, DataSeries, ChartType, ChartVariant, LinePattern, ChartState, ChartDimensions, ScaleInfo, ChartContextValue, } from './Chart';
|
|
17
17
|
export { DatePicker, DateRangePicker, DateField, Calendar, dateFieldVariants, dateSegmentVariants, calendarCellVariants, calendarHeaderVariants, calendarNavButtonVariants, calendarGridVariants, calendarGridHeaderCellVariants, datePickerPopoverVariants, datePickerTriggerVariants, datePickerDescriptionVariants, datePickerErrorVariants, datePickerLabelVariants, parseDate, parseDateTime, parseZonedDateTime, today, now, getLocalTimeZone, isWeekend, } from './DatePicker';
|
|
18
|
-
export { Dropdown } from './Dropdown
|
|
18
|
+
export { Dropdown, DropdownTrigger, DropdownMenu, DropdownItem, DropdownSeparator, DropdownLabel, menuVariants, menuItemVariants, } from './Dropdown';
|
|
19
|
+
export type { DropdownProps, DropdownTriggerProps, DropdownMenuProps, DropdownItemProps, DropdownSeparatorProps, DropdownLabelProps, DropdownMenuAlign, DropdownMenuSide, MenuVariantProps, MenuItemVariantProps, } from './Dropdown';
|
|
19
20
|
export { FileField, FilePreview, useFilePreview, FileFieldPropsSchema, formatFileSize, truncateFileName, isFileTypeAccepted, getFileIcon, deduplicateFiles, formatAcceptedTypes, fileFieldContainerVariants, fileFieldDropZoneVariants, fileFieldTriggerVariants, fileFieldItemVariants, fileFieldErrorVariants, } from './FileField';
|
|
20
21
|
export type { FileFieldProps, FileFieldSize, ValidationResult, } from './FileField';
|
|
21
22
|
export { FormLayout } from './FormLayout/FormLayout';
|
|
@@ -39,4 +40,15 @@ export { TimeField, Time, parseTime, timeFieldVariants, timeSegmentVariants, tim
|
|
|
39
40
|
export { toast, toastQueue, toastVariants, toasterVariants, ToastProvider, Toaster, ToastOptionsSchema, ToasterPropsSchema, ToastProviderPropsSchema, ToastVariantSchema, ToasterPositionSchema, DismissReasonSchema, } from './Toast';
|
|
40
41
|
export type { ToastOptions, ToastContent, ToasterProps, ToastProviderProps, ToastVariant, ToasterPosition, DismissReason, } from './Toast';
|
|
41
42
|
export { Tooltip, TooltipTrigger, TooltipContent, TooltipArrow, tooltipContentVariants, tooltipArrowVariants, } from './Tooltip';
|
|
43
|
+
export { AlertDialog, alertDialogContentVariants, } from './AlertDialog';
|
|
44
|
+
export type { AlertDialogProps, AlertDialogVariant, AlertDialogSize, } from './AlertDialog';
|
|
45
|
+
export { Combobox, ComboboxItem, ComboboxSection } from './Combobox';
|
|
46
|
+
export type { ComboboxProps, ComboboxItemProps, ComboboxSectionProps, ComboboxSize, } from './Combobox';
|
|
47
|
+
export { comboboxVariants, comboboxLabelVariants, comboboxInputVariants, comboboxTriggerWrapperVariants, comboboxButtonVariants, comboboxPopoverVariants, comboboxListBoxVariants, comboboxItemVariants, comboboxSectionVariants, comboboxSectionHeaderVariants, comboboxDescriptionVariants, comboboxErrorVariants, } from './Combobox';
|
|
48
|
+
export { Pagination, paginationNavVariants, paginationEllipsisVariants, paginationInfoVariants, } from './Pagination';
|
|
49
|
+
export type { PaginationProps, PaginationSize, PaginationVariant, } from './Pagination';
|
|
50
|
+
export { SearchField, searchFieldVariants, searchFieldLabelVariants, searchFieldDescriptionVariants, searchFieldErrorVariants, } from './SearchField';
|
|
51
|
+
export type { SearchFieldProps, SearchFieldSize } from './SearchField';
|
|
52
|
+
export { PasswordField, passwordFieldVariants, passwordFieldLabelVariants, passwordFieldDescriptionVariants, passwordFieldErrorVariants, } from './PasswordField';
|
|
53
|
+
export type { PasswordFieldProps, PasswordFieldSize } from './PasswordField';
|
|
42
54
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/elements/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/elements/index.ts"],"names":[],"mappings":"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"}
|