@tosui/react 0.1.0 → 0.1.2
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/components/Accordion/Accordion.d.ts.map +1 -1
- package/dist/components/Accordion/Accordion.js +109 -0
- package/dist/components/Accordion/Accordion.js.map +1 -0
- package/dist/components/Accordion/accordion.module.css +36 -0
- package/dist/components/Accordion/accordion.module.css.js +27 -0
- package/dist/components/Accordion/accordion.module.css.js.map +1 -0
- package/dist/components/Alert/Alert.js +109 -0
- package/dist/components/Alert/Alert.js.map +1 -0
- package/dist/components/Alert/alert.module.css +27 -0
- package/dist/components/Alert/alert.module.css.js +24 -0
- package/dist/components/Alert/alert.module.css.js.map +1 -0
- package/dist/components/Avatar/Avatar.d.ts.map +1 -1
- package/dist/components/Avatar/Avatar.js +72 -0
- package/dist/components/Avatar/Avatar.js.map +1 -0
- package/dist/components/Avatar/avatar.module.css +14 -0
- package/dist/components/Avatar/avatar.module.css.js +15 -0
- package/dist/components/Avatar/avatar.module.css.js.map +1 -0
- package/dist/components/Badge/Badge.js +66 -0
- package/dist/components/Badge/Badge.js.map +1 -0
- package/dist/components/Badge/badge.module.css +3 -0
- package/dist/components/Badge/badge.module.css.js +9 -0
- package/dist/components/Badge/badge.module.css.js.map +1 -0
- package/dist/components/Box/Box.js +217 -0
- package/dist/components/Box/Box.js.map +1 -0
- package/dist/components/Box/borders/borders.js +91 -0
- package/dist/components/Box/borders/borders.js.map +1 -0
- package/dist/components/Box/borders/borders.module.css +49 -0
- package/dist/components/Box/borders/borders.module.css.js +46 -0
- package/dist/components/Box/borders/borders.module.css.js.map +1 -0
- package/dist/components/Box/colors/colors.js +45 -0
- package/dist/components/Box/colors/colors.js.map +1 -0
- package/dist/components/Box/colors/colors.module.css +113 -0
- package/dist/components/Box/colors/colors.module.css.js +114 -0
- package/dist/components/Box/colors/colors.module.css.js.map +1 -0
- package/dist/components/Box/display/display.js +52 -0
- package/dist/components/Box/display/display.js.map +1 -0
- package/dist/components/Box/display/display.module.css +375 -0
- package/dist/components/Box/display/display.module.css.js +318 -0
- package/dist/components/Box/display/display.module.css.js.map +1 -0
- package/dist/components/Box/flexbox/flexbox.js +139 -0
- package/dist/components/Box/flexbox/flexbox.js.map +1 -0
- package/dist/components/Box/flexbox/flexbox.module.css +65 -0
- package/dist/components/Box/flexbox/flexbox.module.css.js +62 -0
- package/dist/components/Box/flexbox/flexbox.module.css.js.map +1 -0
- package/dist/components/Box/grid/grid.js +49 -0
- package/dist/components/Box/grid/grid.js.map +1 -0
- package/dist/components/Box/grid/grid.module.css +19 -0
- package/dist/components/Box/grid/grid.module.css.js +20 -0
- package/dist/components/Box/grid/grid.module.css.js.map +1 -0
- package/dist/components/Box/inset/inset.js +96 -0
- package/dist/components/Box/inset/inset.js.map +1 -0
- package/dist/components/Box/inset/inset.module.css +187 -0
- package/dist/components/Box/inset/inset.module.css.js +174 -0
- package/dist/components/Box/inset/inset.module.css.js.map +1 -0
- package/dist/components/Box/interactions/interactions.js +45 -0
- package/dist/components/Box/interactions/interactions.js.map +1 -0
- package/dist/components/Box/interactions/interactions.module.css +43 -0
- package/dist/components/Box/interactions/interactions.module.css.js +44 -0
- package/dist/components/Box/interactions/interactions.module.css.js.map +1 -0
- package/dist/components/Box/margin/margin.js +96 -0
- package/dist/components/Box/margin/margin.js.map +1 -0
- package/dist/components/Box/margin/margin.module.css +187 -0
- package/dist/components/Box/margin/margin.module.css.js +174 -0
- package/dist/components/Box/margin/margin.module.css.js.map +1 -0
- package/dist/components/Box/opacity/opacity.js +52 -0
- package/dist/components/Box/opacity/opacity.js.map +1 -0
- package/dist/components/Box/opacity/opacity.module.css +51 -0
- package/dist/components/Box/opacity/opacity.module.css.js +174 -0
- package/dist/components/Box/opacity/opacity.module.css.js.map +1 -0
- package/dist/components/Box/overflow/overflow.js +69 -0
- package/dist/components/Box/overflow/overflow.js.map +1 -0
- package/dist/components/Box/overflow/overflow.module.css +155 -0
- package/dist/components/Box/overflow/overflow.module.css.js +510 -0
- package/dist/components/Box/overflow/overflow.module.css.js.map +1 -0
- package/dist/components/Box/padding/padding.js +96 -0
- package/dist/components/Box/padding/padding.js.map +1 -0
- package/dist/components/Box/padding/padding.module.css +187 -0
- package/dist/components/Box/padding/padding.module.css.js +174 -0
- package/dist/components/Box/padding/padding.module.css.js.map +1 -0
- package/dist/components/Box/position/position.js +52 -0
- package/dist/components/Box/position/position.js.map +1 -0
- package/dist/components/Box/position/position.module.css +234 -0
- package/dist/components/Box/position/position.module.css.js +214 -0
- package/dist/components/Box/position/position.module.css.js.map +1 -0
- package/dist/components/Box/reset/reset.js +6 -0
- package/dist/components/Box/reset/reset.js.map +1 -0
- package/dist/components/Box/reset/reset.module.css +23 -0
- package/dist/components/Box/reset/reset.module.css.js +9 -0
- package/dist/components/Box/reset/reset.module.css.js.map +1 -0
- package/dist/components/Box/roundness/roundness.js +92 -0
- package/dist/components/Box/roundness/roundness.js.map +1 -0
- package/dist/components/Box/roundness/roundness.module.css +47 -0
- package/dist/components/Box/roundness/roundness.module.css.js +46 -0
- package/dist/components/Box/roundness/roundness.module.css.js.map +1 -0
- package/dist/components/Box/shadows/shadows.js +52 -0
- package/dist/components/Box/shadows/shadows.js.map +1 -0
- package/dist/components/Box/shadows/shadows.module.css +51 -0
- package/dist/components/Box/shadows/shadows.module.css.js +174 -0
- package/dist/components/Box/shadows/shadows.module.css.js.map +1 -0
- package/dist/components/Box/shared/constants.js +21 -0
- package/dist/components/Box/shared/constants.js.map +1 -0
- package/dist/components/Box/shared/spacing.js +10 -0
- package/dist/components/Box/shared/spacing.js.map +1 -0
- package/dist/components/Box/sizing/sizing.js +75 -0
- package/dist/components/Box/sizing/sizing.js.map +1 -0
- package/dist/components/Box/sizing/sizing.module.css +281 -0
- package/dist/components/Box/sizing/sizing.module.css.js +258 -0
- package/dist/components/Box/sizing/sizing.module.css.js.map +1 -0
- package/dist/components/Box/text/text.js +45 -0
- package/dist/components/Box/text/text.js.map +1 -0
- package/dist/components/Box/text/text.module.css +29 -0
- package/dist/components/Box/text/text.module.css.js +30 -0
- package/dist/components/Box/text/text.module.css.js.map +1 -0
- package/dist/components/Box/typography/typography.js +27 -0
- package/dist/components/Box/typography/typography.js.map +1 -0
- package/dist/components/Box/typography/typography.module.css +26 -0
- package/dist/components/Box/typography/typography.module.css.js +25 -0
- package/dist/components/Box/typography/typography.module.css.js.map +1 -0
- package/dist/components/Box/zIndex/zIndex.js +52 -0
- package/dist/components/Box/zIndex/zIndex.js.map +1 -0
- package/dist/components/Box/zIndex/zIndex.module.css +90 -0
- package/dist/components/Box/zIndex/zIndex.module.css.js +300 -0
- package/dist/components/Box/zIndex/zIndex.module.css.js.map +1 -0
- package/dist/components/Breadcrumb/Breadcrumb.js +78 -0
- package/dist/components/Breadcrumb/Breadcrumb.js.map +1 -0
- package/dist/components/Breadcrumb/breadcrumb.module.css +25 -0
- package/dist/components/Breadcrumb/breadcrumb.module.css.js +21 -0
- package/dist/components/Breadcrumb/breadcrumb.module.css.js.map +1 -0
- package/dist/components/Button/Button.js +129 -0
- package/dist/components/Button/Button.js.map +1 -0
- package/dist/components/Button/button.module.css +17 -0
- package/dist/components/Button/button.module.css.js +18 -0
- package/dist/components/Button/button.module.css.js.map +1 -0
- package/dist/components/Card/Card.js +60 -0
- package/dist/components/Card/Card.js.map +1 -0
- package/dist/components/Card/card.module.css +16 -0
- package/dist/components/Card/card.module.css.js +18 -0
- package/dist/components/Card/card.module.css.js.map +1 -0
- package/dist/components/Checkbox/Checkbox.js +74 -0
- package/dist/components/Checkbox/Checkbox.js.map +1 -0
- package/dist/components/Checkbox/checkbox.module.css +65 -0
- package/dist/components/Checkbox/checkbox.module.css.js +15 -0
- package/dist/components/Checkbox/checkbox.module.css.js.map +1 -0
- package/dist/components/Code/Code.js +32 -0
- package/dist/components/Code/Code.js.map +1 -0
- package/dist/components/Container/Container.js +44 -0
- package/dist/components/Container/Container.js.map +1 -0
- package/dist/components/Divider/Divider.js +48 -0
- package/dist/components/Divider/Divider.js.map +1 -0
- package/dist/components/Flex/Flex.js +48 -0
- package/dist/components/Flex/Flex.js.map +1 -0
- package/dist/components/FormField/FormField.js +52 -0
- package/dist/components/FormField/FormField.js.map +1 -0
- package/dist/components/Grid/Grid.js +41 -0
- package/dist/components/Grid/Grid.js.map +1 -0
- package/dist/components/HStack/HStack.js +17 -0
- package/dist/components/HStack/HStack.js.map +1 -0
- package/dist/components/Heading/Heading.js +42 -0
- package/dist/components/Heading/Heading.js.map +1 -0
- package/dist/components/IconButton/IconButton.js +93 -0
- package/dist/components/IconButton/IconButton.js.map +1 -0
- package/dist/components/IconButton/iconbutton.module.css +18 -0
- package/dist/components/IconButton/iconbutton.module.css.js +18 -0
- package/dist/components/IconButton/iconbutton.module.css.js.map +1 -0
- package/dist/components/Image/Image.d.ts.map +1 -1
- package/dist/components/Image/Image.js +101 -0
- package/dist/components/Image/Image.js.map +1 -0
- package/dist/components/Image/image.module.css +44 -0
- package/dist/components/Image/image.module.css.js +36 -0
- package/dist/components/Image/image.module.css.js.map +1 -0
- package/dist/components/Input/Input.js +57 -0
- package/dist/components/Input/Input.js.map +1 -0
- package/dist/components/Input/input.module.css +29 -0
- package/dist/components/Input/input.module.css.js +12 -0
- package/dist/components/Input/input.module.css.js.map +1 -0
- package/dist/components/Label/Label.js +36 -0
- package/dist/components/Label/Label.js.map +1 -0
- package/dist/components/Link/Link.js +38 -0
- package/dist/components/Link/Link.js.map +1 -0
- package/dist/components/Link/link.module.css +28 -0
- package/dist/components/Link/link.module.css.js +16 -0
- package/dist/components/Link/link.module.css.js.map +1 -0
- package/dist/components/List/List.js +51 -0
- package/dist/components/List/List.js.map +1 -0
- package/dist/components/List/list.module.css +45 -0
- package/dist/components/List/list.module.css.js +24 -0
- package/dist/components/List/list.module.css.js.map +1 -0
- package/dist/components/Menu/Menu.d.ts.map +1 -1
- package/dist/components/Menu/Menu.js +143 -0
- package/dist/components/Menu/Menu.js.map +1 -0
- package/dist/components/Menu/menu.module.css +24 -0
- package/dist/components/Menu/menu.module.css.js +18 -0
- package/dist/components/Menu/menu.module.css.js.map +1 -0
- package/dist/components/Modal/Modal.d.ts.map +1 -1
- package/dist/components/Modal/Modal.js +130 -0
- package/dist/components/Modal/Modal.js.map +1 -0
- package/dist/components/Modal/modal.module.css +26 -0
- package/dist/components/Modal/modal.module.css.js +21 -0
- package/dist/components/Modal/modal.module.css.js.map +1 -0
- package/dist/components/Pagination/Pagination.js +125 -0
- package/dist/components/Pagination/Pagination.js.map +1 -0
- package/dist/components/Pagination/pagination.module.css +3 -0
- package/dist/components/Pagination/pagination.module.css.js +9 -0
- package/dist/components/Pagination/pagination.module.css.js.map +1 -0
- package/dist/components/Popover/Popover.d.ts.map +1 -1
- package/dist/components/Popover/Popover.js +144 -0
- package/dist/components/Popover/Popover.js.map +1 -0
- package/dist/components/Popover/popover.module.css +11 -0
- package/dist/components/Popover/popover.module.css.js +15 -0
- package/dist/components/Popover/popover.module.css.js.map +1 -0
- package/dist/components/Progress/Progress.js +54 -0
- package/dist/components/Progress/Progress.js.map +1 -0
- package/dist/components/Progress/progress.module.css +24 -0
- package/dist/components/Progress/progress.module.css.js +15 -0
- package/dist/components/Progress/progress.module.css.js.map +1 -0
- package/dist/components/Radio/Radio.js +70 -0
- package/dist/components/Radio/Radio.js.map +1 -0
- package/dist/components/Radio/radio.module.css +48 -0
- package/dist/components/Radio/radio.module.css.js +12 -0
- package/dist/components/Radio/radio.module.css.js.map +1 -0
- package/dist/components/Select/Select.js +57 -0
- package/dist/components/Select/Select.js.map +1 -0
- package/dist/components/Select/select.module.css +43 -0
- package/dist/components/Select/select.module.css.js +12 -0
- package/dist/components/Select/select.module.css.js.map +1 -0
- package/dist/components/Skeleton/Skeleton.js +37 -0
- package/dist/components/Skeleton/Skeleton.js.map +1 -0
- package/dist/components/Skeleton/skeleton.module.css +26 -0
- package/dist/components/Skeleton/skeleton.module.css.js +9 -0
- package/dist/components/Skeleton/skeleton.module.css.js.map +1 -0
- package/dist/components/Spacer/Spacer.js +16 -0
- package/dist/components/Spacer/Spacer.js.map +1 -0
- package/dist/components/Spinner/Spinner.js +41 -0
- package/dist/components/Spinner/Spinner.js.map +1 -0
- package/dist/components/Spinner/spinner.module.css +21 -0
- package/dist/components/Spinner/spinner.module.css.js +9 -0
- package/dist/components/Spinner/spinner.module.css.js.map +1 -0
- package/dist/components/Stack/Stack.js +35 -0
- package/dist/components/Stack/Stack.js.map +1 -0
- package/dist/components/Switch/Switch.js +83 -0
- package/dist/components/Switch/Switch.js.map +1 -0
- package/dist/components/Switch/switch.module.css +48 -0
- package/dist/components/Switch/switch.module.css.js +15 -0
- package/dist/components/Switch/switch.module.css.js.map +1 -0
- package/dist/components/Tabs/Tabs.d.ts.map +1 -1
- package/dist/components/Tabs/Tabs.js +87 -0
- package/dist/components/Tabs/Tabs.js.map +1 -0
- package/dist/components/Tabs/tabs.module.css +55 -0
- package/dist/components/Tabs/tabs.module.css.js +27 -0
- package/dist/components/Tabs/tabs.module.css.js.map +1 -0
- package/dist/components/Text/Text.d.ts.map +1 -1
- package/dist/components/Text/Text.js +40 -0
- package/dist/components/Text/Text.js.map +1 -0
- package/dist/components/Text/text.module.css +9 -0
- package/dist/components/Text/text.module.css.js +12 -0
- package/dist/components/Text/text.module.css.js.map +1 -0
- package/dist/components/Textarea/Textarea.js +70 -0
- package/dist/components/Textarea/Textarea.js.map +1 -0
- package/dist/components/Textarea/textarea.module.css +46 -0
- package/dist/components/Textarea/textarea.module.css.js +24 -0
- package/dist/components/Textarea/textarea.module.css.js.map +1 -0
- package/dist/components/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/components/Tooltip/Tooltip.js +135 -0
- package/dist/components/Tooltip/Tooltip.js.map +1 -0
- package/dist/components/Tooltip/tooltip.module.css +4 -0
- package/dist/components/Tooltip/tooltip.module.css.js +9 -0
- package/dist/components/Tooltip/tooltip.module.css.js.map +1 -0
- package/dist/components/VStack/VStack.js +17 -0
- package/dist/components/VStack/VStack.js.map +1 -0
- package/dist/fonts.css +23 -1
- package/dist/index.css +3320 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +99 -5521
- package/dist/index.js.map +1 -1
- package/dist/styles/styles.css +353 -0
- package/package.json +8 -4
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
._tabs_qgiou_1 {
|
|
2
|
+
width: 100%;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
._tabList_qgiou_5 {
|
|
6
|
+
margin-bottom: 0;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
._tab_qgiou_1 {
|
|
10
|
+
position: relative;
|
|
11
|
+
transition: color 0.15s ease;
|
|
12
|
+
margin-bottom: -1px;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
._tab_qgiou_1:hover:not(:disabled) {
|
|
16
|
+
color: var(--t-color-primary-default);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/* Line variant - bottom border indicator */
|
|
20
|
+
._line_qgiou_20 ._tab_qgiou_1::after {
|
|
21
|
+
content: "";
|
|
22
|
+
position: absolute;
|
|
23
|
+
bottom: 0;
|
|
24
|
+
left: 0;
|
|
25
|
+
right: 0;
|
|
26
|
+
height: 2px;
|
|
27
|
+
background: transparent;
|
|
28
|
+
transition: background 0.15s ease;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
._line_qgiou_20 ._tab_qgiou_1._active_qgiou_31::after {
|
|
32
|
+
background: var(--t-color-primary-default);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/* Enclosed variant - tab-like borders */
|
|
36
|
+
._enclosed_qgiou_36 ._tabList_qgiou_5 {
|
|
37
|
+
border-bottom: none;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
._enclosed_qgiou_36 ._tab_qgiou_1 {
|
|
41
|
+
border: 1px solid transparent;
|
|
42
|
+
border-bottom: 1px solid var(--t-color-border);
|
|
43
|
+
border-radius: var(--t-radius-md) var(--t-radius-md) 0 0;
|
|
44
|
+
margin-bottom: -1px;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
._enclosed_qgiou_36 ._tab_qgiou_1._active_qgiou_31 {
|
|
48
|
+
border-color: var(--t-color-border);
|
|
49
|
+
border-bottom-color: var(--t-color-background);
|
|
50
|
+
background: var(--t-color-background);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
._tabPanel_qgiou_53 {
|
|
54
|
+
/* Panel styles */
|
|
55
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
const tabs = "_tabs_qgiou_1";
|
|
2
|
+
const tabList = "_tabList_qgiou_5";
|
|
3
|
+
const tab = "_tab_qgiou_1";
|
|
4
|
+
const line = "_line_qgiou_20";
|
|
5
|
+
const active = "_active_qgiou_31";
|
|
6
|
+
const enclosed = "_enclosed_qgiou_36";
|
|
7
|
+
const tabPanel = "_tabPanel_qgiou_53";
|
|
8
|
+
const styles = {
|
|
9
|
+
tabs,
|
|
10
|
+
tabList,
|
|
11
|
+
tab,
|
|
12
|
+
line,
|
|
13
|
+
active,
|
|
14
|
+
enclosed,
|
|
15
|
+
tabPanel
|
|
16
|
+
};
|
|
17
|
+
export {
|
|
18
|
+
active,
|
|
19
|
+
styles as default,
|
|
20
|
+
enclosed,
|
|
21
|
+
line,
|
|
22
|
+
tab,
|
|
23
|
+
tabList,
|
|
24
|
+
tabPanel,
|
|
25
|
+
tabs
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=tabs.module.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabs.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Text.d.ts","sourceRoot":"","sources":["../../../src/components/Text/Text.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAO,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAIvD,KAAK,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AACjF,KAAK,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;AAC5D,KAAK,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AACzD,KAAK,KAAK,GACN,YAAY,GACZ,kBAAkB,GAClB,mBAAmB,GACnB,qBAAqB,GACrB,2BAA2B,GAC3B,4BAA4B,GAC5B,QAAQ,GACR,iBAAiB,GACjB,SAAS,GACT,kBAAkB,GAClB,SAAS,GACT,kBAAkB,GAClB,SAAS,GACT,kBAAkB,GAClB,OAAO,GACP,gBAAgB,GAChB,MAAM,GACN,eAAe,CAAC;AAEpB,MAAM,MAAM,YAAY,GAAG,IAAI,CAC7B,WAAW,EACX,UAAU,GAAG,YAAY,GAAG,WAAW,GAAG,OAAO,CAClD,GAAG;IACF,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,WAAW,GAAG,MAAM,IAAI,WAAW,CACjE,CAAC,EACD,YAAY,CACb,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,WAAW,GAAG,MAAM,EAAE,EACnD,EAAE,EACF,IAAI,EACJ,MAAM,EACN,KAAK,EACL,
|
|
1
|
+
{"version":3,"file":"Text.d.ts","sourceRoot":"","sources":["../../../src/components/Text/Text.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAO,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAIvD,KAAK,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AACjF,KAAK,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;AAC5D,KAAK,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AACzD,KAAK,KAAK,GACN,YAAY,GACZ,kBAAkB,GAClB,mBAAmB,GACnB,qBAAqB,GACrB,2BAA2B,GAC3B,4BAA4B,GAC5B,QAAQ,GACR,iBAAiB,GACjB,SAAS,GACT,kBAAkB,GAClB,SAAS,GACT,kBAAkB,GAClB,SAAS,GACT,kBAAkB,GAClB,OAAO,GACP,gBAAgB,GAChB,MAAM,GACN,eAAe,CAAC;AAEpB,MAAM,MAAM,YAAY,GAAG,IAAI,CAC7B,WAAW,EACX,UAAU,GAAG,YAAY,GAAG,WAAW,GAAG,OAAO,CAClD,GAAG;IACF,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,WAAW,GAAG,MAAM,IAAI,WAAW,CACjE,CAAC,EACD,YAAY,CACb,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,WAAW,GAAG,MAAM,EAAE,EACnD,EAAE,EACF,IAAI,EACJ,MAAM,EACN,KAAK,EACL,KAAoB,EACpB,QAAQ,EACR,MAAM,EACN,SAAS,EACT,GAAG,IAAI,EACR,EAAE,SAAS,CAAC,CAAC,CAAC,2CAiBd"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import "react";
|
|
3
|
+
import clsx from "clsx";
|
|
4
|
+
import { Box } from "../Box/Box.js";
|
|
5
|
+
import styles from "./text.module.css.js";
|
|
6
|
+
function Text({
|
|
7
|
+
as,
|
|
8
|
+
size,
|
|
9
|
+
weight,
|
|
10
|
+
align,
|
|
11
|
+
color = "foreground",
|
|
12
|
+
truncate,
|
|
13
|
+
italic,
|
|
14
|
+
className,
|
|
15
|
+
...rest
|
|
16
|
+
}) {
|
|
17
|
+
return (
|
|
18
|
+
// @ts-expect-error - Polymorphic component prop forwarding
|
|
19
|
+
/* @__PURE__ */ jsx(
|
|
20
|
+
Box,
|
|
21
|
+
{
|
|
22
|
+
as,
|
|
23
|
+
fontSize: size,
|
|
24
|
+
fontWeight: weight,
|
|
25
|
+
textAlign: align,
|
|
26
|
+
color,
|
|
27
|
+
className: clsx(
|
|
28
|
+
truncate && styles.truncate,
|
|
29
|
+
italic && styles.italic,
|
|
30
|
+
className
|
|
31
|
+
),
|
|
32
|
+
...rest
|
|
33
|
+
}
|
|
34
|
+
)
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
export {
|
|
38
|
+
Text
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=Text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Text.js","sources":["../../../src/components/Text/Text.tsx"],"sourcesContent":["import { type ElementType } from \"react\";\nimport clsx from \"clsx\";\nimport { Box, type BoxOwnProps } from \"../Box/Box\";\nimport { type Polymorphic } from \"@/types/Polymorphic\";\nimport styles from \"./text.module.css\";\n\n// Import types from Box styleParts\ntype FontSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"3xl\" | \"4xl\" | \"5xl\";\ntype FontWeight = \"normal\" | \"medium\" | \"semibold\" | \"bold\";\ntype TextAlign = \"left\" | \"center\" | \"right\" | \"justify\";\ntype Color =\n | \"foreground\"\n | \"foreground-muted\"\n | \"foreground-subtle\"\n | \"foreground-inverted\"\n | \"foreground-inverted-muted\"\n | \"foreground-inverted-subtle\"\n | \"accent\"\n | \"accent-emphasis\"\n | \"primary\"\n | \"primary-emphasis\"\n | \"success\"\n | \"success-emphasis\"\n | \"warning\"\n | \"warning-emphasis\"\n | \"error\"\n | \"error-emphasis\"\n | \"info\"\n | \"info-emphasis\";\n\nexport type TextOwnProps = Omit<\n BoxOwnProps,\n \"fontSize\" | \"fontWeight\" | \"textAlign\" | \"color\"\n> & {\n size?: FontSize;\n weight?: FontWeight;\n align?: TextAlign;\n color?: Color;\n truncate?: boolean;\n italic?: boolean;\n};\n\nexport type TextProps<T extends ElementType = \"span\"> = Polymorphic<\n T,\n TextOwnProps\n>;\n\n/**\n * Text - Semantic text component for body copy, labels, captions, etc.\n *\n * Built on top of Box with text-specific conveniences:\n * - Default element: <span> (inline)\n * - Shorthand props: size, weight, align, color\n * - Utility props: truncate (ellipsis), italic\n * - Can be changed to any element via `as` prop\n */\nexport function Text<T extends ElementType = \"span\">({\n as,\n size,\n weight,\n align,\n color = \"foreground\",\n truncate,\n italic,\n className,\n ...rest\n}: TextProps<T>) {\n return (\n // @ts-expect-error - Polymorphic component prop forwarding\n <Box\n as={as}\n fontSize={size}\n fontWeight={weight}\n textAlign={align}\n color={color}\n className={clsx(\n truncate && styles.truncate,\n italic && styles.italic,\n className\n )}\n {...rest}\n />\n );\n}\n"],"names":[],"mappings":";;;;;AAwDO,SAAS,KAAqC;AAAA,EACnD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAiB;AACf;AAAA;AAAA,IAEE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,WAAW;AAAA,QACX;AAAA,QACA,WAAW;AAAA,UACT,YAAY,OAAO;AAAA,UACnB,UAAU,OAAO;AAAA,UACjB;AAAA,QAAA;AAAA,QAED,GAAG;AAAA,MAAA;AAAA,IAAA;AAAA;AAGV;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import "react";
|
|
3
|
+
import clsx from "clsx";
|
|
4
|
+
import { Box } from "../Box/Box.js";
|
|
5
|
+
import styles from "./textarea.module.css.js";
|
|
6
|
+
const sizeConfig = {
|
|
7
|
+
sm: { p: 2, fontSize: "sm", rounded: "sm" },
|
|
8
|
+
md: { p: 3, fontSize: "md", rounded: "md" },
|
|
9
|
+
lg: { p: 4, fontSize: "lg", rounded: "md" }
|
|
10
|
+
};
|
|
11
|
+
const resizeClassMap = {
|
|
12
|
+
none: styles.resizeNone,
|
|
13
|
+
vertical: styles.resizeVertical,
|
|
14
|
+
horizontal: styles.resizeHorizontal,
|
|
15
|
+
both: styles.resizeBoth
|
|
16
|
+
};
|
|
17
|
+
function Textarea({
|
|
18
|
+
as,
|
|
19
|
+
size = "md",
|
|
20
|
+
variant = "outline",
|
|
21
|
+
disabled = false,
|
|
22
|
+
isInvalid = false,
|
|
23
|
+
rows = 3,
|
|
24
|
+
resize = "vertical",
|
|
25
|
+
className,
|
|
26
|
+
...rest
|
|
27
|
+
}) {
|
|
28
|
+
const Component = as || "textarea";
|
|
29
|
+
const sizeProps = sizeConfig[size];
|
|
30
|
+
const variantStyles = variant === "outline" ? {
|
|
31
|
+
bg: "transparent",
|
|
32
|
+
border: "thin",
|
|
33
|
+
borderColor: "border"
|
|
34
|
+
} : {
|
|
35
|
+
bg: "surface",
|
|
36
|
+
border: "thin",
|
|
37
|
+
borderColor: "border-muted"
|
|
38
|
+
};
|
|
39
|
+
return (
|
|
40
|
+
// @ts-expect-error - Polymorphic component type forwarding
|
|
41
|
+
/* @__PURE__ */ jsx(
|
|
42
|
+
Box,
|
|
43
|
+
{
|
|
44
|
+
as: Component,
|
|
45
|
+
p: sizeProps.p,
|
|
46
|
+
fontSize: sizeProps.fontSize,
|
|
47
|
+
rounded: sizeProps.rounded,
|
|
48
|
+
bg: variantStyles.bg,
|
|
49
|
+
border: variantStyles.border,
|
|
50
|
+
borderColor: variantStyles.borderColor,
|
|
51
|
+
w: "100%",
|
|
52
|
+
color: "foreground",
|
|
53
|
+
rows,
|
|
54
|
+
className: clsx(
|
|
55
|
+
styles.textarea,
|
|
56
|
+
isInvalid && styles.invalid,
|
|
57
|
+
resizeClassMap[resize],
|
|
58
|
+
className
|
|
59
|
+
),
|
|
60
|
+
disabled,
|
|
61
|
+
"aria-invalid": isInvalid || void 0,
|
|
62
|
+
...rest
|
|
63
|
+
}
|
|
64
|
+
)
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
export {
|
|
68
|
+
Textarea
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=Textarea.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Textarea.js","sources":["../../../src/components/Textarea/Textarea.tsx"],"sourcesContent":["import { type ElementType } from \"react\";\nimport clsx from \"clsx\";\nimport { type Polymorphic } from \"@/types/Polymorphic\";\nimport { Box, type BoxOwnProps } from \"@/components/Box/Box\";\nimport styles from \"./textarea.module.css\";\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport type TextareaSize = \"sm\" | \"md\" | \"lg\";\nexport type TextareaVariant = \"outline\" | \"filled\";\nexport type TextareaResize = \"none\" | \"vertical\" | \"horizontal\" | \"both\";\n\nexport type TextareaOwnProps = Omit<\n BoxOwnProps,\n \"as\" | \"fontSize\" | \"rounded\" | \"border\" | \"borderColor\" | \"bg\"\n> & {\n /** Textarea size affecting font size and padding */\n size?: TextareaSize;\n /** Visual variant: outline (border) or filled (surface background) */\n variant?: TextareaVariant;\n /** Whether the textarea is disabled */\n disabled?: boolean;\n /** Whether the textarea is in an invalid state */\n isInvalid?: boolean;\n /** Number of visible text rows */\n rows?: number;\n /** Resize behavior */\n resize?: TextareaResize;\n};\n\nexport type TextareaProps<T extends ElementType = \"textarea\"> = Polymorphic<\n T,\n TextareaOwnProps\n>;\n\n// ============================================================================\n// Size configurations\n// ============================================================================\n\nconst sizeConfig = {\n sm: { p: 2, fontSize: \"sm\", rounded: \"sm\" },\n md: { p: 3, fontSize: \"md\", rounded: \"md\" },\n lg: { p: 4, fontSize: \"lg\", rounded: \"md\" },\n} as const;\n\n// ============================================================================\n// Resize class map\n// ============================================================================\n\nconst resizeClassMap: Record<TextareaResize, string> = {\n none: styles.resizeNone,\n vertical: styles.resizeVertical,\n horizontal: styles.resizeHorizontal,\n both: styles.resizeBoth,\n};\n\n// ============================================================================\n// Component\n// ============================================================================\n\n/**\n * Textarea - Multiline text input component\n *\n * A polymorphic textarea component that provides:\n * - Default element: <textarea>\n * - Sizes: sm, md (default), lg\n * - Variants: outline (default), filled\n * - Disabled and invalid states\n * - Configurable rows and resize behavior\n */\nexport function Textarea<T extends ElementType = \"textarea\">({\n as,\n size = \"md\",\n variant = \"outline\",\n disabled = false,\n isInvalid = false,\n rows = 3,\n resize = \"vertical\",\n className,\n ...rest\n}: TextareaProps<T>) {\n const Component = as || \"textarea\";\n const sizeProps = sizeConfig[size];\n\n // Variant-specific styling\n const variantStyles =\n variant === \"outline\"\n ? {\n bg: \"transparent\" as const,\n border: \"thin\" as const,\n borderColor: \"border\" as const,\n }\n : {\n bg: \"surface\" as const,\n border: \"thin\" as const,\n borderColor: \"border-muted\" as const,\n };\n\n return (\n // @ts-expect-error - Polymorphic component type forwarding\n <Box\n as={Component}\n // Size props\n p={sizeProps.p}\n fontSize={sizeProps.fontSize}\n rounded={sizeProps.rounded}\n // Variant props\n bg={variantStyles.bg}\n border={variantStyles.border}\n borderColor={variantStyles.borderColor}\n // Full width by default\n w=\"100%\"\n // Colors\n color=\"foreground\"\n // Native props\n rows={rows}\n // CSS module for states and resize\n className={clsx(\n styles.textarea,\n isInvalid && styles.invalid,\n resizeClassMap[resize],\n className\n )}\n // Native disabled\n disabled={disabled}\n aria-invalid={isInvalid || undefined}\n {...rest}\n />\n );\n}\n"],"names":[],"mappings":";;;;;AAyCA,MAAM,aAAa;AAAA,EACjB,IAAI,EAAE,GAAG,GAAG,UAAU,MAAM,SAAS,KAAA;AAAA,EACrC,IAAI,EAAE,GAAG,GAAG,UAAU,MAAM,SAAS,KAAA;AAAA,EACrC,IAAI,EAAE,GAAG,GAAG,UAAU,MAAM,SAAS,KAAA;AACvC;AAMA,MAAM,iBAAiD;AAAA,EACrD,MAAM,OAAO;AAAA,EACb,UAAU,OAAO;AAAA,EACjB,YAAY,OAAO;AAAA,EACnB,MAAM,OAAO;AACf;AAgBO,SAAS,SAA6C;AAAA,EAC3D;AAAA,EACA,OAAO;AAAA,EACP,UAAU;AAAA,EACV,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,SAAS;AAAA,EACT;AAAA,EACA,GAAG;AACL,GAAqB;AACnB,QAAM,YAAY,MAAM;AACxB,QAAM,YAAY,WAAW,IAAI;AAGjC,QAAM,gBACJ,YAAY,YACR;AAAA,IACE,IAAI;AAAA,IACJ,QAAQ;AAAA,IACR,aAAa;AAAA,EAAA,IAEf;AAAA,IACE,IAAI;AAAA,IACJ,QAAQ;AAAA,IACR,aAAa;AAAA,EAAA;AAGrB;AAAA;AAAA,IAEE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,IAAI;AAAA,QAEJ,GAAG,UAAU;AAAA,QACb,UAAU,UAAU;AAAA,QACpB,SAAS,UAAU;AAAA,QAEnB,IAAI,cAAc;AAAA,QAClB,QAAQ,cAAc;AAAA,QACtB,aAAa,cAAc;AAAA,QAE3B,GAAE;AAAA,QAEF,OAAM;AAAA,QAEN;AAAA,QAEA,WAAW;AAAA,UACT,OAAO;AAAA,UACP,aAAa,OAAO;AAAA,UACpB,eAAe,MAAM;AAAA,UACrB;AAAA,QAAA;AAAA,QAGF;AAAA,QACA,gBAAc,aAAa;AAAA,QAC1B,GAAG;AAAA,MAAA;AAAA,IAAA;AAAA;AAGV;"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
._textarea_1rmu7_1 {
|
|
2
|
+
transition-duration: 150ms;
|
|
3
|
+
transition-property: border-color, background-color, box-shadow;
|
|
4
|
+
transition-timing-function: ease-in-out;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
._textarea_1rmu7_1::placeholder {
|
|
8
|
+
color: var(--t-color-foreground-subtle);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
._textarea_1rmu7_1:focus-visible {
|
|
12
|
+
outline: none;
|
|
13
|
+
border-color: var(--t-color-primary-default);
|
|
14
|
+
box-shadow: 0 0 0 3px var(--t-color-primary-subtle);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
._textarea_1rmu7_1:disabled {
|
|
18
|
+
cursor: not-allowed;
|
|
19
|
+
opacity: 0.5;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
._textarea_1rmu7_1._invalid_1rmu7_22 {
|
|
23
|
+
border-color: var(--t-color-error-default);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
._textarea_1rmu7_1._invalid_1rmu7_22:focus-visible {
|
|
27
|
+
border-color: var(--t-color-error-default);
|
|
28
|
+
box-shadow: 0 0 0 3px var(--t-color-error-subtle);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/* Resize control */
|
|
32
|
+
._resizeNone_1rmu7_32 {
|
|
33
|
+
resize: none;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
._resizeVertical_1rmu7_36 {
|
|
37
|
+
resize: vertical;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
._resizeHorizontal_1rmu7_40 {
|
|
41
|
+
resize: horizontal;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
._resizeBoth_1rmu7_44 {
|
|
45
|
+
resize: both;
|
|
46
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
const textarea = "_textarea_1rmu7_1";
|
|
2
|
+
const invalid = "_invalid_1rmu7_22";
|
|
3
|
+
const resizeNone = "_resizeNone_1rmu7_32";
|
|
4
|
+
const resizeVertical = "_resizeVertical_1rmu7_36";
|
|
5
|
+
const resizeHorizontal = "_resizeHorizontal_1rmu7_40";
|
|
6
|
+
const resizeBoth = "_resizeBoth_1rmu7_44";
|
|
7
|
+
const styles = {
|
|
8
|
+
textarea,
|
|
9
|
+
invalid,
|
|
10
|
+
resizeNone,
|
|
11
|
+
resizeVertical,
|
|
12
|
+
resizeHorizontal,
|
|
13
|
+
resizeBoth
|
|
14
|
+
};
|
|
15
|
+
export {
|
|
16
|
+
styles as default,
|
|
17
|
+
invalid,
|
|
18
|
+
resizeBoth,
|
|
19
|
+
resizeHorizontal,
|
|
20
|
+
resizeNone,
|
|
21
|
+
resizeVertical,
|
|
22
|
+
textarea
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=textarea.module.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textarea.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tooltip.d.ts","sourceRoot":"","sources":["../../../src/components/Tooltip/Tooltip.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Tooltip.d.ts","sourceRoot":"","sources":["../../../src/components/Tooltip/Tooltip.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAA+B,MAAM,OAAO,CAAC;AAUpE,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAEnE,MAAM,MAAM,YAAY,GAAG;IACzB,sBAAsB;IACtB,KAAK,EAAE,SAAS,CAAC;IACjB,2BAA2B;IAC3B,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4BAA4B;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,4BAA4B;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sBAAsB;IACtB,QAAQ,EAAE,SAAS,CAAC;CACrB,CAAC;AAMF;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CAAC,EACtB,KAAK,EACL,SAAiB,EACjB,SAAa,EACb,UAAc,EACd,QAAgB,EAChB,MAAM,EAAE,gBAAgB,EACxB,MAAM,EACN,OAAO,EACP,SAAS,EACT,QAAQ,GACT,EAAE,YAAY,2CA6Hd"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs, Fragment, jsx } from "react/jsx-runtime";
|
|
3
|
+
import { useState, useRef, useEffect } from "react";
|
|
4
|
+
import { createPortal } from "react-dom";
|
|
5
|
+
import clsx from "clsx";
|
|
6
|
+
import { Box } from "../Box/Box.js";
|
|
7
|
+
import styles from "./tooltip.module.css.js";
|
|
8
|
+
function Tooltip({
|
|
9
|
+
label,
|
|
10
|
+
placement = "top",
|
|
11
|
+
openDelay = 0,
|
|
12
|
+
closeDelay = 0,
|
|
13
|
+
disabled = false,
|
|
14
|
+
isOpen: controlledIsOpen,
|
|
15
|
+
onOpen,
|
|
16
|
+
onClose,
|
|
17
|
+
className,
|
|
18
|
+
children
|
|
19
|
+
}) {
|
|
20
|
+
const [internalIsOpen, setInternalIsOpen] = useState(false);
|
|
21
|
+
const isControlled = controlledIsOpen !== void 0;
|
|
22
|
+
const isOpen = isControlled ? controlledIsOpen : internalIsOpen;
|
|
23
|
+
const [position, setPosition] = useState({ top: 0, left: 0 });
|
|
24
|
+
const triggerRef = useRef(null);
|
|
25
|
+
const tooltipRef = useRef(null);
|
|
26
|
+
const openTimeoutRef = useRef(null);
|
|
27
|
+
const closeTimeoutRef = useRef(null);
|
|
28
|
+
const updatePosition = () => {
|
|
29
|
+
if (!triggerRef.current || !tooltipRef.current) return;
|
|
30
|
+
const triggerRect = triggerRef.current.getBoundingClientRect();
|
|
31
|
+
const tooltipRect = tooltipRef.current.getBoundingClientRect();
|
|
32
|
+
const gap = 8;
|
|
33
|
+
let top = 0;
|
|
34
|
+
let left = 0;
|
|
35
|
+
switch (placement) {
|
|
36
|
+
case "top":
|
|
37
|
+
top = triggerRect.top - tooltipRect.height - gap;
|
|
38
|
+
left = triggerRect.left + (triggerRect.width - tooltipRect.width) / 2;
|
|
39
|
+
break;
|
|
40
|
+
case "bottom":
|
|
41
|
+
top = triggerRect.bottom + gap;
|
|
42
|
+
left = triggerRect.left + (triggerRect.width - tooltipRect.width) / 2;
|
|
43
|
+
break;
|
|
44
|
+
case "left":
|
|
45
|
+
top = triggerRect.top + (triggerRect.height - tooltipRect.height) / 2;
|
|
46
|
+
left = triggerRect.left - tooltipRect.width - gap;
|
|
47
|
+
break;
|
|
48
|
+
case "right":
|
|
49
|
+
top = triggerRect.top + (triggerRect.height - tooltipRect.height) / 2;
|
|
50
|
+
left = triggerRect.right + gap;
|
|
51
|
+
break;
|
|
52
|
+
}
|
|
53
|
+
setPosition({ top: top + window.scrollY, left: left + window.scrollX });
|
|
54
|
+
};
|
|
55
|
+
useEffect(() => {
|
|
56
|
+
if (isOpen) updatePosition();
|
|
57
|
+
}, [isOpen, placement]);
|
|
58
|
+
const setOpen = (open) => {
|
|
59
|
+
if (!isControlled) {
|
|
60
|
+
setInternalIsOpen(open);
|
|
61
|
+
}
|
|
62
|
+
if (open) {
|
|
63
|
+
onOpen?.();
|
|
64
|
+
} else {
|
|
65
|
+
onClose?.();
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
const handleOpen = () => {
|
|
69
|
+
if (disabled) return;
|
|
70
|
+
if (closeTimeoutRef.current) clearTimeout(closeTimeoutRef.current);
|
|
71
|
+
if (openDelay > 0) {
|
|
72
|
+
openTimeoutRef.current = window.setTimeout(() => setOpen(true), openDelay);
|
|
73
|
+
} else {
|
|
74
|
+
setOpen(true);
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
const handleClose = () => {
|
|
78
|
+
if (openTimeoutRef.current) clearTimeout(openTimeoutRef.current);
|
|
79
|
+
if (closeDelay > 0) {
|
|
80
|
+
closeTimeoutRef.current = window.setTimeout(
|
|
81
|
+
() => setOpen(false),
|
|
82
|
+
closeDelay
|
|
83
|
+
);
|
|
84
|
+
} else {
|
|
85
|
+
setOpen(false);
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
useEffect(() => {
|
|
89
|
+
return () => {
|
|
90
|
+
if (openTimeoutRef.current) clearTimeout(openTimeoutRef.current);
|
|
91
|
+
if (closeTimeoutRef.current) clearTimeout(closeTimeoutRef.current);
|
|
92
|
+
};
|
|
93
|
+
}, []);
|
|
94
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
95
|
+
/* @__PURE__ */ jsx(
|
|
96
|
+
Box,
|
|
97
|
+
{
|
|
98
|
+
as: "span",
|
|
99
|
+
ref: triggerRef,
|
|
100
|
+
display: "inline-block",
|
|
101
|
+
onMouseEnter: handleOpen,
|
|
102
|
+
onMouseLeave: handleClose,
|
|
103
|
+
onFocus: handleOpen,
|
|
104
|
+
onBlur: handleClose,
|
|
105
|
+
children
|
|
106
|
+
}
|
|
107
|
+
),
|
|
108
|
+
isOpen && createPortal(
|
|
109
|
+
/* @__PURE__ */ jsx(
|
|
110
|
+
Box,
|
|
111
|
+
{
|
|
112
|
+
ref: tooltipRef,
|
|
113
|
+
position: "absolute",
|
|
114
|
+
px: 2,
|
|
115
|
+
py: 1,
|
|
116
|
+
bg: "foreground",
|
|
117
|
+
color: "foreground-inverted",
|
|
118
|
+
fontSize: "sm",
|
|
119
|
+
rounded: "sm",
|
|
120
|
+
shadow: "md",
|
|
121
|
+
zIndex: "tooltip",
|
|
122
|
+
className: clsx(styles.tooltip, styles[placement], className),
|
|
123
|
+
style: { top: position.top, left: position.left },
|
|
124
|
+
role: "tooltip",
|
|
125
|
+
children: label
|
|
126
|
+
}
|
|
127
|
+
),
|
|
128
|
+
document.body
|
|
129
|
+
)
|
|
130
|
+
] });
|
|
131
|
+
}
|
|
132
|
+
export {
|
|
133
|
+
Tooltip
|
|
134
|
+
};
|
|
135
|
+
//# sourceMappingURL=Tooltip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tooltip.js","sources":["../../../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":["\"use client\";\n\nimport { type ReactNode, useState, useRef, useEffect } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport clsx from \"clsx\";\nimport { Box } from \"@/components/Box/Box\";\nimport styles from \"./tooltip.module.css\";\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport type TooltipPlacement = \"top\" | \"bottom\" | \"left\" | \"right\";\n\nexport type TooltipProps = {\n /** Tooltip content */\n label: ReactNode;\n /** Placement of tooltip */\n placement?: TooltipPlacement;\n /** Delay before showing (ms) */\n openDelay?: number;\n /** Delay before hiding (ms) */\n closeDelay?: number;\n /** Whether tooltip is disabled */\n disabled?: boolean;\n /** Controlled open state */\n isOpen?: boolean;\n /** Callback when tooltip opens */\n onOpen?: () => void;\n /** Callback when tooltip closes */\n onClose?: () => void;\n /** Additional class name */\n className?: string;\n /** Trigger element */\n children: ReactNode;\n};\n\n// ============================================================================\n// Component\n// ============================================================================\n\n/**\n * Tooltip - Hover-triggered information overlay\n *\n * A tooltip component that:\n * - Shows on hover and focus\n * - Positions relative to trigger element\n * - Supports configurable delays\n * - Supports controlled mode via isOpen/onOpen/onClose\n * - Renders via portal\n */\nexport function Tooltip({\n label,\n placement = \"top\",\n openDelay = 0,\n closeDelay = 0,\n disabled = false,\n isOpen: controlledIsOpen,\n onOpen,\n onClose,\n className,\n children,\n}: TooltipProps) {\n const [internalIsOpen, setInternalIsOpen] = useState(false);\n const isControlled = controlledIsOpen !== undefined;\n const isOpen = isControlled ? controlledIsOpen : internalIsOpen;\n\n const [position, setPosition] = useState({ top: 0, left: 0 });\n const triggerRef = useRef<HTMLElement>(null);\n const tooltipRef = useRef<HTMLDivElement>(null);\n const openTimeoutRef = useRef<number | null>(null);\n const closeTimeoutRef = useRef<number | null>(null);\n\n const updatePosition = () => {\n if (!triggerRef.current || !tooltipRef.current) return;\n\n const triggerRect = triggerRef.current.getBoundingClientRect();\n const tooltipRect = tooltipRef.current.getBoundingClientRect();\n const gap = 8;\n\n let top = 0;\n let left = 0;\n\n switch (placement) {\n case \"top\":\n top = triggerRect.top - tooltipRect.height - gap;\n left = triggerRect.left + (triggerRect.width - tooltipRect.width) / 2;\n break;\n case \"bottom\":\n top = triggerRect.bottom + gap;\n left = triggerRect.left + (triggerRect.width - tooltipRect.width) / 2;\n break;\n case \"left\":\n top = triggerRect.top + (triggerRect.height - tooltipRect.height) / 2;\n left = triggerRect.left - tooltipRect.width - gap;\n break;\n case \"right\":\n top = triggerRect.top + (triggerRect.height - tooltipRect.height) / 2;\n left = triggerRect.right + gap;\n break;\n }\n\n setPosition({ top: top + window.scrollY, left: left + window.scrollX });\n };\n\n useEffect(() => {\n if (isOpen) updatePosition();\n }, [isOpen, placement]);\n\n const setOpen = (open: boolean) => {\n if (!isControlled) {\n setInternalIsOpen(open);\n }\n if (open) {\n onOpen?.();\n } else {\n onClose?.();\n }\n };\n\n const handleOpen = () => {\n if (disabled) return;\n if (closeTimeoutRef.current) clearTimeout(closeTimeoutRef.current);\n\n if (openDelay > 0) {\n openTimeoutRef.current = window.setTimeout(() => setOpen(true), openDelay);\n } else {\n setOpen(true);\n }\n };\n\n const handleClose = () => {\n if (openTimeoutRef.current) clearTimeout(openTimeoutRef.current);\n\n if (closeDelay > 0) {\n closeTimeoutRef.current = window.setTimeout(\n () => setOpen(false),\n closeDelay\n );\n } else {\n setOpen(false);\n }\n };\n\n useEffect(() => {\n return () => {\n if (openTimeoutRef.current) clearTimeout(openTimeoutRef.current);\n if (closeTimeoutRef.current) clearTimeout(closeTimeoutRef.current);\n };\n }, []);\n\n return (\n <>\n <Box\n as=\"span\"\n ref={triggerRef}\n display=\"inline-block\"\n onMouseEnter={handleOpen}\n onMouseLeave={handleClose}\n onFocus={handleOpen}\n onBlur={handleClose}\n >\n {children}\n </Box>\n {isOpen &&\n createPortal(\n <Box\n ref={tooltipRef}\n position=\"absolute\"\n px={2}\n py={1}\n bg=\"foreground\"\n color=\"foreground-inverted\"\n fontSize=\"sm\"\n rounded=\"sm\"\n shadow=\"md\"\n zIndex=\"tooltip\"\n className={clsx(styles.tooltip, styles[placement], className)}\n style={{ top: position.top, left: position.left }}\n role=\"tooltip\"\n >\n {label}\n </Box>,\n document.body\n )}\n </>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tooltip.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import "react";
|
|
3
|
+
import { Stack } from "../Stack/Stack.js";
|
|
4
|
+
function VStack({
|
|
5
|
+
as,
|
|
6
|
+
children,
|
|
7
|
+
...rest
|
|
8
|
+
}) {
|
|
9
|
+
return (
|
|
10
|
+
// @ts-expect-error - Polymorphic component type forwarding
|
|
11
|
+
/* @__PURE__ */ jsx(Stack, { as: as || "div", direction: "column", ...rest, children })
|
|
12
|
+
);
|
|
13
|
+
}
|
|
14
|
+
export {
|
|
15
|
+
VStack
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=VStack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VStack.js","sources":["../../../src/components/VStack/VStack.tsx"],"sourcesContent":["import { type ElementType } from \"react\";\nimport { type Polymorphic } from \"@/types/Polymorphic\";\nimport { Stack, type StackOwnProps } from \"@/components/Stack/Stack\";\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport type VStackOwnProps = Omit<StackOwnProps, \"direction\">;\n\nexport type VStackProps<T extends ElementType = \"div\"> = Polymorphic<\n T,\n VStackOwnProps\n>;\n\n// ============================================================================\n// Component\n// ============================================================================\n\n/**\n * VStack - Vertical stack component\n *\n * A convenience wrapper around Stack with direction=\"column\".\n * - Default element: <div>\n * - Direction: column (fixed)\n * - Gap: spacing multiplier (0-32)\n * - Align: cross-axis alignment\n * - Justify: main-axis alignment\n * - Wrap: enable flex wrapping\n */\nexport function VStack<T extends ElementType = \"div\">({\n as,\n children,\n ...rest\n}: VStackProps<T>) {\n return (\n // @ts-expect-error - Polymorphic component type forwarding\n <Stack as={as || \"div\"} direction=\"column\" {...rest}>\n {children}\n </Stack>\n );\n}\n"],"names":[],"mappings":";;;AA8BO,SAAS,OAAsC;AAAA,EACpD;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAmB;AACjB;AAAA;AAAA,IAEE,oBAAC,SAAM,IAAI,MAAM,OAAO,WAAU,UAAU,GAAG,MAC5C,SAAA,CACH;AAAA;AAEJ;"}
|
package/dist/fonts.css
CHANGED
|
@@ -1 +1,23 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Tosui Default Fonts - IBM Plex
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* import '@tosui/react/styles.css';
|
|
6
|
+
* import '@tosui/react/fonts.css';
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/* IBM Plex Sans - Regular (400) */
|
|
10
|
+
@import url("https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600;700&display=swap");
|
|
11
|
+
|
|
12
|
+
/* IBM Plex Mono - Regular (400) */
|
|
13
|
+
@import url("https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600;700&display=swap");
|
|
14
|
+
|
|
15
|
+
/* Override font family variables to use IBM Plex */
|
|
16
|
+
:root {
|
|
17
|
+
--t-font-family-heading: "IBM Plex Sans", -apple-system, BlinkMacSystemFont,
|
|
18
|
+
"Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
|
19
|
+
--t-font-family-body: "IBM Plex Sans", -apple-system, BlinkMacSystemFont,
|
|
20
|
+
"Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
|
21
|
+
--t-font-family-mono: "IBM Plex Mono", "SF Mono", Menlo, Monaco, Consolas,
|
|
22
|
+
"Liberation Mono", "Courier New", monospace;
|
|
23
|
+
}
|