@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.
Files changed (276) hide show
  1. package/dist/components/Accordion/Accordion.d.ts.map +1 -1
  2. package/dist/components/Accordion/Accordion.js +109 -0
  3. package/dist/components/Accordion/Accordion.js.map +1 -0
  4. package/dist/components/Accordion/accordion.module.css +36 -0
  5. package/dist/components/Accordion/accordion.module.css.js +27 -0
  6. package/dist/components/Accordion/accordion.module.css.js.map +1 -0
  7. package/dist/components/Alert/Alert.js +109 -0
  8. package/dist/components/Alert/Alert.js.map +1 -0
  9. package/dist/components/Alert/alert.module.css +27 -0
  10. package/dist/components/Alert/alert.module.css.js +24 -0
  11. package/dist/components/Alert/alert.module.css.js.map +1 -0
  12. package/dist/components/Avatar/Avatar.d.ts.map +1 -1
  13. package/dist/components/Avatar/Avatar.js +72 -0
  14. package/dist/components/Avatar/Avatar.js.map +1 -0
  15. package/dist/components/Avatar/avatar.module.css +14 -0
  16. package/dist/components/Avatar/avatar.module.css.js +15 -0
  17. package/dist/components/Avatar/avatar.module.css.js.map +1 -0
  18. package/dist/components/Badge/Badge.js +66 -0
  19. package/dist/components/Badge/Badge.js.map +1 -0
  20. package/dist/components/Badge/badge.module.css +3 -0
  21. package/dist/components/Badge/badge.module.css.js +9 -0
  22. package/dist/components/Badge/badge.module.css.js.map +1 -0
  23. package/dist/components/Box/Box.js +217 -0
  24. package/dist/components/Box/Box.js.map +1 -0
  25. package/dist/components/Box/borders/borders.js +91 -0
  26. package/dist/components/Box/borders/borders.js.map +1 -0
  27. package/dist/components/Box/borders/borders.module.css +49 -0
  28. package/dist/components/Box/borders/borders.module.css.js +46 -0
  29. package/dist/components/Box/borders/borders.module.css.js.map +1 -0
  30. package/dist/components/Box/colors/colors.js +45 -0
  31. package/dist/components/Box/colors/colors.js.map +1 -0
  32. package/dist/components/Box/colors/colors.module.css +113 -0
  33. package/dist/components/Box/colors/colors.module.css.js +114 -0
  34. package/dist/components/Box/colors/colors.module.css.js.map +1 -0
  35. package/dist/components/Box/display/display.js +52 -0
  36. package/dist/components/Box/display/display.js.map +1 -0
  37. package/dist/components/Box/display/display.module.css +375 -0
  38. package/dist/components/Box/display/display.module.css.js +318 -0
  39. package/dist/components/Box/display/display.module.css.js.map +1 -0
  40. package/dist/components/Box/flexbox/flexbox.js +139 -0
  41. package/dist/components/Box/flexbox/flexbox.js.map +1 -0
  42. package/dist/components/Box/flexbox/flexbox.module.css +65 -0
  43. package/dist/components/Box/flexbox/flexbox.module.css.js +62 -0
  44. package/dist/components/Box/flexbox/flexbox.module.css.js.map +1 -0
  45. package/dist/components/Box/grid/grid.js +49 -0
  46. package/dist/components/Box/grid/grid.js.map +1 -0
  47. package/dist/components/Box/grid/grid.module.css +19 -0
  48. package/dist/components/Box/grid/grid.module.css.js +20 -0
  49. package/dist/components/Box/grid/grid.module.css.js.map +1 -0
  50. package/dist/components/Box/inset/inset.js +96 -0
  51. package/dist/components/Box/inset/inset.js.map +1 -0
  52. package/dist/components/Box/inset/inset.module.css +187 -0
  53. package/dist/components/Box/inset/inset.module.css.js +174 -0
  54. package/dist/components/Box/inset/inset.module.css.js.map +1 -0
  55. package/dist/components/Box/interactions/interactions.js +45 -0
  56. package/dist/components/Box/interactions/interactions.js.map +1 -0
  57. package/dist/components/Box/interactions/interactions.module.css +43 -0
  58. package/dist/components/Box/interactions/interactions.module.css.js +44 -0
  59. package/dist/components/Box/interactions/interactions.module.css.js.map +1 -0
  60. package/dist/components/Box/margin/margin.js +96 -0
  61. package/dist/components/Box/margin/margin.js.map +1 -0
  62. package/dist/components/Box/margin/margin.module.css +187 -0
  63. package/dist/components/Box/margin/margin.module.css.js +174 -0
  64. package/dist/components/Box/margin/margin.module.css.js.map +1 -0
  65. package/dist/components/Box/opacity/opacity.js +52 -0
  66. package/dist/components/Box/opacity/opacity.js.map +1 -0
  67. package/dist/components/Box/opacity/opacity.module.css +51 -0
  68. package/dist/components/Box/opacity/opacity.module.css.js +174 -0
  69. package/dist/components/Box/opacity/opacity.module.css.js.map +1 -0
  70. package/dist/components/Box/overflow/overflow.js +69 -0
  71. package/dist/components/Box/overflow/overflow.js.map +1 -0
  72. package/dist/components/Box/overflow/overflow.module.css +155 -0
  73. package/dist/components/Box/overflow/overflow.module.css.js +510 -0
  74. package/dist/components/Box/overflow/overflow.module.css.js.map +1 -0
  75. package/dist/components/Box/padding/padding.js +96 -0
  76. package/dist/components/Box/padding/padding.js.map +1 -0
  77. package/dist/components/Box/padding/padding.module.css +187 -0
  78. package/dist/components/Box/padding/padding.module.css.js +174 -0
  79. package/dist/components/Box/padding/padding.module.css.js.map +1 -0
  80. package/dist/components/Box/position/position.js +52 -0
  81. package/dist/components/Box/position/position.js.map +1 -0
  82. package/dist/components/Box/position/position.module.css +234 -0
  83. package/dist/components/Box/position/position.module.css.js +214 -0
  84. package/dist/components/Box/position/position.module.css.js.map +1 -0
  85. package/dist/components/Box/reset/reset.js +6 -0
  86. package/dist/components/Box/reset/reset.js.map +1 -0
  87. package/dist/components/Box/reset/reset.module.css +23 -0
  88. package/dist/components/Box/reset/reset.module.css.js +9 -0
  89. package/dist/components/Box/reset/reset.module.css.js.map +1 -0
  90. package/dist/components/Box/roundness/roundness.js +92 -0
  91. package/dist/components/Box/roundness/roundness.js.map +1 -0
  92. package/dist/components/Box/roundness/roundness.module.css +47 -0
  93. package/dist/components/Box/roundness/roundness.module.css.js +46 -0
  94. package/dist/components/Box/roundness/roundness.module.css.js.map +1 -0
  95. package/dist/components/Box/shadows/shadows.js +52 -0
  96. package/dist/components/Box/shadows/shadows.js.map +1 -0
  97. package/dist/components/Box/shadows/shadows.module.css +51 -0
  98. package/dist/components/Box/shadows/shadows.module.css.js +174 -0
  99. package/dist/components/Box/shadows/shadows.module.css.js.map +1 -0
  100. package/dist/components/Box/shared/constants.js +21 -0
  101. package/dist/components/Box/shared/constants.js.map +1 -0
  102. package/dist/components/Box/shared/spacing.js +10 -0
  103. package/dist/components/Box/shared/spacing.js.map +1 -0
  104. package/dist/components/Box/sizing/sizing.js +75 -0
  105. package/dist/components/Box/sizing/sizing.js.map +1 -0
  106. package/dist/components/Box/sizing/sizing.module.css +281 -0
  107. package/dist/components/Box/sizing/sizing.module.css.js +258 -0
  108. package/dist/components/Box/sizing/sizing.module.css.js.map +1 -0
  109. package/dist/components/Box/text/text.js +45 -0
  110. package/dist/components/Box/text/text.js.map +1 -0
  111. package/dist/components/Box/text/text.module.css +29 -0
  112. package/dist/components/Box/text/text.module.css.js +30 -0
  113. package/dist/components/Box/text/text.module.css.js.map +1 -0
  114. package/dist/components/Box/typography/typography.js +27 -0
  115. package/dist/components/Box/typography/typography.js.map +1 -0
  116. package/dist/components/Box/typography/typography.module.css +26 -0
  117. package/dist/components/Box/typography/typography.module.css.js +25 -0
  118. package/dist/components/Box/typography/typography.module.css.js.map +1 -0
  119. package/dist/components/Box/zIndex/zIndex.js +52 -0
  120. package/dist/components/Box/zIndex/zIndex.js.map +1 -0
  121. package/dist/components/Box/zIndex/zIndex.module.css +90 -0
  122. package/dist/components/Box/zIndex/zIndex.module.css.js +300 -0
  123. package/dist/components/Box/zIndex/zIndex.module.css.js.map +1 -0
  124. package/dist/components/Breadcrumb/Breadcrumb.js +78 -0
  125. package/dist/components/Breadcrumb/Breadcrumb.js.map +1 -0
  126. package/dist/components/Breadcrumb/breadcrumb.module.css +25 -0
  127. package/dist/components/Breadcrumb/breadcrumb.module.css.js +21 -0
  128. package/dist/components/Breadcrumb/breadcrumb.module.css.js.map +1 -0
  129. package/dist/components/Button/Button.js +129 -0
  130. package/dist/components/Button/Button.js.map +1 -0
  131. package/dist/components/Button/button.module.css +17 -0
  132. package/dist/components/Button/button.module.css.js +18 -0
  133. package/dist/components/Button/button.module.css.js.map +1 -0
  134. package/dist/components/Card/Card.js +60 -0
  135. package/dist/components/Card/Card.js.map +1 -0
  136. package/dist/components/Card/card.module.css +16 -0
  137. package/dist/components/Card/card.module.css.js +18 -0
  138. package/dist/components/Card/card.module.css.js.map +1 -0
  139. package/dist/components/Checkbox/Checkbox.js +74 -0
  140. package/dist/components/Checkbox/Checkbox.js.map +1 -0
  141. package/dist/components/Checkbox/checkbox.module.css +65 -0
  142. package/dist/components/Checkbox/checkbox.module.css.js +15 -0
  143. package/dist/components/Checkbox/checkbox.module.css.js.map +1 -0
  144. package/dist/components/Code/Code.js +32 -0
  145. package/dist/components/Code/Code.js.map +1 -0
  146. package/dist/components/Container/Container.js +44 -0
  147. package/dist/components/Container/Container.js.map +1 -0
  148. package/dist/components/Divider/Divider.js +48 -0
  149. package/dist/components/Divider/Divider.js.map +1 -0
  150. package/dist/components/Flex/Flex.js +48 -0
  151. package/dist/components/Flex/Flex.js.map +1 -0
  152. package/dist/components/FormField/FormField.js +52 -0
  153. package/dist/components/FormField/FormField.js.map +1 -0
  154. package/dist/components/Grid/Grid.js +41 -0
  155. package/dist/components/Grid/Grid.js.map +1 -0
  156. package/dist/components/HStack/HStack.js +17 -0
  157. package/dist/components/HStack/HStack.js.map +1 -0
  158. package/dist/components/Heading/Heading.js +42 -0
  159. package/dist/components/Heading/Heading.js.map +1 -0
  160. package/dist/components/IconButton/IconButton.js +93 -0
  161. package/dist/components/IconButton/IconButton.js.map +1 -0
  162. package/dist/components/IconButton/iconbutton.module.css +18 -0
  163. package/dist/components/IconButton/iconbutton.module.css.js +18 -0
  164. package/dist/components/IconButton/iconbutton.module.css.js.map +1 -0
  165. package/dist/components/Image/Image.d.ts.map +1 -1
  166. package/dist/components/Image/Image.js +101 -0
  167. package/dist/components/Image/Image.js.map +1 -0
  168. package/dist/components/Image/image.module.css +44 -0
  169. package/dist/components/Image/image.module.css.js +36 -0
  170. package/dist/components/Image/image.module.css.js.map +1 -0
  171. package/dist/components/Input/Input.js +57 -0
  172. package/dist/components/Input/Input.js.map +1 -0
  173. package/dist/components/Input/input.module.css +29 -0
  174. package/dist/components/Input/input.module.css.js +12 -0
  175. package/dist/components/Input/input.module.css.js.map +1 -0
  176. package/dist/components/Label/Label.js +36 -0
  177. package/dist/components/Label/Label.js.map +1 -0
  178. package/dist/components/Link/Link.js +38 -0
  179. package/dist/components/Link/Link.js.map +1 -0
  180. package/dist/components/Link/link.module.css +28 -0
  181. package/dist/components/Link/link.module.css.js +16 -0
  182. package/dist/components/Link/link.module.css.js.map +1 -0
  183. package/dist/components/List/List.js +51 -0
  184. package/dist/components/List/List.js.map +1 -0
  185. package/dist/components/List/list.module.css +45 -0
  186. package/dist/components/List/list.module.css.js +24 -0
  187. package/dist/components/List/list.module.css.js.map +1 -0
  188. package/dist/components/Menu/Menu.d.ts.map +1 -1
  189. package/dist/components/Menu/Menu.js +143 -0
  190. package/dist/components/Menu/Menu.js.map +1 -0
  191. package/dist/components/Menu/menu.module.css +24 -0
  192. package/dist/components/Menu/menu.module.css.js +18 -0
  193. package/dist/components/Menu/menu.module.css.js.map +1 -0
  194. package/dist/components/Modal/Modal.d.ts.map +1 -1
  195. package/dist/components/Modal/Modal.js +130 -0
  196. package/dist/components/Modal/Modal.js.map +1 -0
  197. package/dist/components/Modal/modal.module.css +26 -0
  198. package/dist/components/Modal/modal.module.css.js +21 -0
  199. package/dist/components/Modal/modal.module.css.js.map +1 -0
  200. package/dist/components/Pagination/Pagination.js +125 -0
  201. package/dist/components/Pagination/Pagination.js.map +1 -0
  202. package/dist/components/Pagination/pagination.module.css +3 -0
  203. package/dist/components/Pagination/pagination.module.css.js +9 -0
  204. package/dist/components/Pagination/pagination.module.css.js.map +1 -0
  205. package/dist/components/Popover/Popover.d.ts.map +1 -1
  206. package/dist/components/Popover/Popover.js +144 -0
  207. package/dist/components/Popover/Popover.js.map +1 -0
  208. package/dist/components/Popover/popover.module.css +11 -0
  209. package/dist/components/Popover/popover.module.css.js +15 -0
  210. package/dist/components/Popover/popover.module.css.js.map +1 -0
  211. package/dist/components/Progress/Progress.js +54 -0
  212. package/dist/components/Progress/Progress.js.map +1 -0
  213. package/dist/components/Progress/progress.module.css +24 -0
  214. package/dist/components/Progress/progress.module.css.js +15 -0
  215. package/dist/components/Progress/progress.module.css.js.map +1 -0
  216. package/dist/components/Radio/Radio.js +70 -0
  217. package/dist/components/Radio/Radio.js.map +1 -0
  218. package/dist/components/Radio/radio.module.css +48 -0
  219. package/dist/components/Radio/radio.module.css.js +12 -0
  220. package/dist/components/Radio/radio.module.css.js.map +1 -0
  221. package/dist/components/Select/Select.js +57 -0
  222. package/dist/components/Select/Select.js.map +1 -0
  223. package/dist/components/Select/select.module.css +43 -0
  224. package/dist/components/Select/select.module.css.js +12 -0
  225. package/dist/components/Select/select.module.css.js.map +1 -0
  226. package/dist/components/Skeleton/Skeleton.js +37 -0
  227. package/dist/components/Skeleton/Skeleton.js.map +1 -0
  228. package/dist/components/Skeleton/skeleton.module.css +26 -0
  229. package/dist/components/Skeleton/skeleton.module.css.js +9 -0
  230. package/dist/components/Skeleton/skeleton.module.css.js.map +1 -0
  231. package/dist/components/Spacer/Spacer.js +16 -0
  232. package/dist/components/Spacer/Spacer.js.map +1 -0
  233. package/dist/components/Spinner/Spinner.js +41 -0
  234. package/dist/components/Spinner/Spinner.js.map +1 -0
  235. package/dist/components/Spinner/spinner.module.css +21 -0
  236. package/dist/components/Spinner/spinner.module.css.js +9 -0
  237. package/dist/components/Spinner/spinner.module.css.js.map +1 -0
  238. package/dist/components/Stack/Stack.js +35 -0
  239. package/dist/components/Stack/Stack.js.map +1 -0
  240. package/dist/components/Switch/Switch.js +83 -0
  241. package/dist/components/Switch/Switch.js.map +1 -0
  242. package/dist/components/Switch/switch.module.css +48 -0
  243. package/dist/components/Switch/switch.module.css.js +15 -0
  244. package/dist/components/Switch/switch.module.css.js.map +1 -0
  245. package/dist/components/Tabs/Tabs.d.ts.map +1 -1
  246. package/dist/components/Tabs/Tabs.js +87 -0
  247. package/dist/components/Tabs/Tabs.js.map +1 -0
  248. package/dist/components/Tabs/tabs.module.css +55 -0
  249. package/dist/components/Tabs/tabs.module.css.js +27 -0
  250. package/dist/components/Tabs/tabs.module.css.js.map +1 -0
  251. package/dist/components/Text/Text.d.ts.map +1 -1
  252. package/dist/components/Text/Text.js +40 -0
  253. package/dist/components/Text/Text.js.map +1 -0
  254. package/dist/components/Text/text.module.css +9 -0
  255. package/dist/components/Text/text.module.css.js +12 -0
  256. package/dist/components/Text/text.module.css.js.map +1 -0
  257. package/dist/components/Textarea/Textarea.js +70 -0
  258. package/dist/components/Textarea/Textarea.js.map +1 -0
  259. package/dist/components/Textarea/textarea.module.css +46 -0
  260. package/dist/components/Textarea/textarea.module.css.js +24 -0
  261. package/dist/components/Textarea/textarea.module.css.js.map +1 -0
  262. package/dist/components/Tooltip/Tooltip.d.ts.map +1 -1
  263. package/dist/components/Tooltip/Tooltip.js +135 -0
  264. package/dist/components/Tooltip/Tooltip.js.map +1 -0
  265. package/dist/components/Tooltip/tooltip.module.css +4 -0
  266. package/dist/components/Tooltip/tooltip.module.css.js +9 -0
  267. package/dist/components/Tooltip/tooltip.module.css.js.map +1 -0
  268. package/dist/components/VStack/VStack.js +17 -0
  269. package/dist/components/VStack/VStack.js.map +1 -0
  270. package/dist/fonts.css +23 -1
  271. package/dist/index.css +3320 -1
  272. package/dist/index.d.ts.map +1 -1
  273. package/dist/index.js +99 -5521
  274. package/dist/index.js.map +1 -1
  275. package/dist/styles/styles.css +353 -0
  276. 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,KAAK,EACL,QAAQ,EACR,MAAM,EACN,SAAS,EACT,GAAG,IAAI,EACR,EAAE,SAAS,CAAC,CAAC,CAAC,2CAiBd"}
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,9 @@
1
+ ._truncate_1v1ys_1 {
2
+ overflow: hidden;
3
+ text-overflow: ellipsis;
4
+ white-space: nowrap;
5
+ }
6
+
7
+ ._italic_1v1ys_7 {
8
+ font-style: italic;
9
+ }
@@ -0,0 +1,12 @@
1
+ const truncate = "_truncate_1v1ys_1";
2
+ const italic = "_italic_1v1ys_7";
3
+ const styles = {
4
+ truncate,
5
+ italic
6
+ };
7
+ export {
8
+ styles as default,
9
+ italic,
10
+ truncate
11
+ };
12
+ //# sourceMappingURL=text.module.css.js.map
@@ -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":"AAAA,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"}
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,4 @@
1
+ ._tooltip_11r2r_1 {
2
+ pointer-events: none;
3
+ white-space: nowrap;
4
+ }
@@ -0,0 +1,9 @@
1
+ const tooltip = "_tooltip_11r2r_1";
2
+ const styles = {
3
+ tooltip
4
+ };
5
+ export {
6
+ styles as default,
7
+ tooltip
8
+ };
9
+ //# sourceMappingURL=tooltip.module.css.js.map
@@ -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
- @import"https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600;700&display=swap";@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600;700&display=swap";:root{--t-font-family-heading: "IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--t-font-family-body: "IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--t-font-family-mono: "IBM Plex Mono", "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}
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
+ }