@luanthnh/cntt-ui 0.1.8 → 0.1.9

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 (238) hide show
  1. package/package.json +5 -1
  2. package/.storybook/globals.d.ts +0 -1
  3. package/.storybook/main.ts +0 -29
  4. package/.storybook/preview.ts +0 -32
  5. package/assets/fonts/Montserrat-Black.eot +0 -0
  6. package/assets/fonts/Montserrat-Black.ttf +0 -0
  7. package/assets/fonts/Montserrat-Black.woff +0 -0
  8. package/assets/fonts/Montserrat-Black.woff2 +0 -0
  9. package/assets/fonts/Montserrat-BlackItalic.eot +0 -0
  10. package/assets/fonts/Montserrat-BlackItalic.ttf +0 -0
  11. package/assets/fonts/Montserrat-BlackItalic.woff +0 -0
  12. package/assets/fonts/Montserrat-BlackItalic.woff2 +0 -0
  13. package/assets/fonts/Montserrat-Bold.eot +0 -0
  14. package/assets/fonts/Montserrat-Bold.ttf +0 -0
  15. package/assets/fonts/Montserrat-Bold.woff +0 -0
  16. package/assets/fonts/Montserrat-Bold.woff2 +0 -0
  17. package/assets/fonts/Montserrat-BoldItalic.eot +0 -0
  18. package/assets/fonts/Montserrat-BoldItalic.ttf +0 -0
  19. package/assets/fonts/Montserrat-BoldItalic.woff +0 -0
  20. package/assets/fonts/Montserrat-BoldItalic.woff2 +0 -0
  21. package/assets/fonts/Montserrat-ExtraBold.eot +0 -0
  22. package/assets/fonts/Montserrat-ExtraBold.ttf +0 -0
  23. package/assets/fonts/Montserrat-ExtraBold.woff +0 -0
  24. package/assets/fonts/Montserrat-ExtraBold.woff2 +0 -0
  25. package/assets/fonts/Montserrat-ExtraBoldItalic.eot +0 -0
  26. package/assets/fonts/Montserrat-ExtraBoldItalic.ttf +0 -0
  27. package/assets/fonts/Montserrat-ExtraBoldItalic.woff +0 -0
  28. package/assets/fonts/Montserrat-ExtraBoldItalic.woff2 +0 -0
  29. package/assets/fonts/Montserrat-ExtraLight.eot +0 -0
  30. package/assets/fonts/Montserrat-ExtraLight.ttf +0 -0
  31. package/assets/fonts/Montserrat-ExtraLight.woff +0 -0
  32. package/assets/fonts/Montserrat-ExtraLight.woff2 +0 -0
  33. package/assets/fonts/Montserrat-ExtraLightItalic.eot +0 -0
  34. package/assets/fonts/Montserrat-ExtraLightItalic.ttf +0 -0
  35. package/assets/fonts/Montserrat-ExtraLightItalic.woff +0 -0
  36. package/assets/fonts/Montserrat-ExtraLightItalic.woff2 +0 -0
  37. package/assets/fonts/Montserrat-Italic.eot +0 -0
  38. package/assets/fonts/Montserrat-Italic.ttf +0 -0
  39. package/assets/fonts/Montserrat-Italic.woff +0 -0
  40. package/assets/fonts/Montserrat-Italic.woff2 +0 -0
  41. package/assets/fonts/Montserrat-Light.eot +0 -0
  42. package/assets/fonts/Montserrat-Light.ttf +0 -0
  43. package/assets/fonts/Montserrat-Light.woff +0 -0
  44. package/assets/fonts/Montserrat-Light.woff2 +0 -0
  45. package/assets/fonts/Montserrat-LightItalic.eot +0 -0
  46. package/assets/fonts/Montserrat-LightItalic.ttf +0 -0
  47. package/assets/fonts/Montserrat-LightItalic.woff +0 -0
  48. package/assets/fonts/Montserrat-LightItalic.woff2 +0 -0
  49. package/assets/fonts/Montserrat-Medium.eot +0 -0
  50. package/assets/fonts/Montserrat-Medium.ttf +0 -0
  51. package/assets/fonts/Montserrat-Medium.woff +0 -0
  52. package/assets/fonts/Montserrat-Medium.woff2 +0 -0
  53. package/assets/fonts/Montserrat-MediumItalic.eot +0 -0
  54. package/assets/fonts/Montserrat-MediumItalic.ttf +0 -0
  55. package/assets/fonts/Montserrat-MediumItalic.woff +0 -0
  56. package/assets/fonts/Montserrat-MediumItalic.woff2 +0 -0
  57. package/assets/fonts/Montserrat-Regular.eot +0 -0
  58. package/assets/fonts/Montserrat-Regular.ttf +0 -0
  59. package/assets/fonts/Montserrat-Regular.woff +0 -0
  60. package/assets/fonts/Montserrat-Regular.woff2 +0 -0
  61. package/assets/fonts/Montserrat-SemiBold.eot +0 -0
  62. package/assets/fonts/Montserrat-SemiBold.ttf +0 -0
  63. package/assets/fonts/Montserrat-SemiBold.woff +0 -0
  64. package/assets/fonts/Montserrat-SemiBold.woff2 +0 -0
  65. package/assets/fonts/Montserrat-SemiBoldItalic.eot +0 -0
  66. package/assets/fonts/Montserrat-SemiBoldItalic.ttf +0 -0
  67. package/assets/fonts/Montserrat-SemiBoldItalic.woff +0 -0
  68. package/assets/fonts/Montserrat-SemiBoldItalic.woff2 +0 -0
  69. package/assets/fonts/Montserrat-Thin.eot +0 -0
  70. package/assets/fonts/Montserrat-Thin.ttf +0 -0
  71. package/assets/fonts/Montserrat-Thin.woff +0 -0
  72. package/assets/fonts/Montserrat-Thin.woff2 +0 -0
  73. package/assets/fonts/Montserrat-ThinItalic.eot +0 -0
  74. package/assets/fonts/Montserrat-ThinItalic.ttf +0 -0
  75. package/assets/fonts/Montserrat-ThinItalic.woff +0 -0
  76. package/assets/fonts/Montserrat-ThinItalic.woff2 +0 -0
  77. package/assets/fonts/Montserrat-Variable.eot +0 -0
  78. package/assets/fonts/Montserrat-Variable.ttf +0 -0
  79. package/assets/fonts/Montserrat-Variable.woff +0 -0
  80. package/assets/fonts/Montserrat-Variable.woff2 +0 -0
  81. package/assets/fonts/Montserrat-VariableItalic.eot +0 -0
  82. package/assets/fonts/Montserrat-VariableItalic.ttf +0 -0
  83. package/assets/fonts/Montserrat-VariableItalic.woff +0 -0
  84. package/assets/fonts/Montserrat-VariableItalic.woff2 +0 -0
  85. package/assets/icons/arrow-left.svg +0 -1
  86. package/assets/icons/file.svg +0 -1
  87. package/assets/icons/globe.svg +0 -1
  88. package/assets/icons/logo-line.svg +0 -1
  89. package/assets/icons/next.svg +0 -1
  90. package/assets/icons/panel-left-expand.svg +0 -1
  91. package/assets/icons/placeholder.svg +0 -57
  92. package/assets/icons/vercel.svg +0 -1
  93. package/assets/icons/window.svg +0 -1
  94. package/assets/lotties/error-404.json +0 -19642
  95. package/assets/lotties/error.json +0 -2414
  96. package/assets/lotties/loader.json +0 -305
  97. package/components/Welcome.mdx +0 -74
  98. package/components/lenis/index.tsx +0 -48
  99. package/components/motion/auto-height.tsx +0 -56
  100. package/components/motion/cursor.tsx +0 -108
  101. package/components/motion/highlight.tsx +0 -605
  102. package/components/motion/number-ticker.tsx +0 -55
  103. package/components/motion/slot.tsx +0 -106
  104. package/components/motion/waves.tsx +0 -417
  105. package/components/primitives/tabs.tsx +0 -174
  106. package/components/ui/Accordion/index.stories.tsx +0 -39
  107. package/components/ui/Accordion/index.tsx +0 -170
  108. package/components/ui/Alert/index.stories.tsx +0 -39
  109. package/components/ui/Alert/index.tsx +0 -60
  110. package/components/ui/AlertDialog/index.stories.tsx +0 -47
  111. package/components/ui/AlertDialog/index.tsx +0 -172
  112. package/components/ui/AspectRatio/index.stories.tsx +0 -40
  113. package/components/ui/AspectRatio/index.tsx +0 -9
  114. package/components/ui/Avatar/index.stories.tsx +0 -39
  115. package/components/ui/Avatar/index.tsx +0 -44
  116. package/components/ui/Badge/index.stories.tsx +0 -64
  117. package/components/ui/Badge/index.tsx +0 -46
  118. package/components/ui/Breadcrumb/index.stories.tsx +0 -64
  119. package/components/ui/Breadcrumb/index.tsx +0 -102
  120. package/components/ui/Button/index.stories.tsx +0 -232
  121. package/components/ui/Button/index.tsx +0 -114
  122. package/components/ui/Calendar/index.stories.tsx +0 -20
  123. package/components/ui/Calendar/index.tsx +0 -149
  124. package/components/ui/Card/index.stories.tsx +0 -39
  125. package/components/ui/Card/index.tsx +0 -65
  126. package/components/ui/Carousel/index.stories.tsx +0 -37
  127. package/components/ui/Carousel/index.tsx +0 -242
  128. package/components/ui/Chart/index.stories.tsx +0 -53
  129. package/components/ui/Chart/index.tsx +0 -322
  130. package/components/ui/Checkbox/index.stories.tsx +0 -56
  131. package/components/ui/Checkbox/index.tsx +0 -167
  132. package/components/ui/CircleProcess/index.stories.tsx +0 -29
  133. package/components/ui/CircleProcess/index.tsx +0 -50
  134. package/components/ui/Collapsible/index.stories.tsx +0 -33
  135. package/components/ui/Collapsible/index.tsx +0 -124
  136. package/components/ui/Command/index.stories.tsx +0 -65
  137. package/components/ui/Command/index.tsx +0 -161
  138. package/components/ui/Container/index.stories.tsx +0 -22
  139. package/components/ui/Container/index.tsx +0 -30
  140. package/components/ui/ContextMenu/index.stories.tsx +0 -51
  141. package/components/ui/ContextMenu/index.tsx +0 -224
  142. package/components/ui/Dialog/index.stories.tsx +0 -44
  143. package/components/ui/Dialog/index.tsx +0 -156
  144. package/components/ui/Drawer/index.stories.tsx +0 -54
  145. package/components/ui/Drawer/index.tsx +0 -124
  146. package/components/ui/DropdownMenu/index.stories.tsx +0 -83
  147. package/components/ui/DropdownMenu/index.tsx +0 -231
  148. package/components/ui/Dropzone/index.stories.tsx +0 -18
  149. package/components/ui/Dropzone/index.tsx +0 -47
  150. package/components/ui/Form/date-field.tsx +0 -77
  151. package/components/ui/Form/index.stories.tsx +0 -67
  152. package/components/ui/Form/index.tsx +0 -193
  153. package/components/ui/Form/select-field.tsx +0 -55
  154. package/components/ui/Form/text-area-field.tsx +0 -37
  155. package/components/ui/Form/text-field.tsx +0 -72
  156. package/components/ui/HStack/index.stories.tsx +0 -48
  157. package/components/ui/HStack/index.tsx +0 -73
  158. package/components/ui/HoverCard/index.stories.tsx +0 -38
  159. package/components/ui/HoverCard/index.tsx +0 -38
  160. package/components/ui/Icons/index.stories.tsx +0 -27
  161. package/components/ui/Icons/index.tsx +0 -33
  162. package/components/ui/ImageWithFallback/index.stories.tsx +0 -32
  163. package/components/ui/ImageWithFallback/index.tsx +0 -34
  164. package/components/ui/Input/index.stories.tsx +0 -47
  165. package/components/ui/Input/index.tsx +0 -21
  166. package/components/ui/InputOtp/index.stories.tsx +0 -35
  167. package/components/ui/InputOtp/index.tsx +0 -70
  168. package/components/ui/Label/index.stories.tsx +0 -18
  169. package/components/ui/Label/index.tsx +0 -21
  170. package/components/ui/Marquee/index.stories.tsx +0 -71
  171. package/components/ui/Marquee/index.tsx +0 -65
  172. package/components/ui/Menubar/index.stories.tsx +0 -116
  173. package/components/ui/Menubar/index.tsx +0 -252
  174. package/components/ui/NavigationMenu/index.stories.tsx +0 -112
  175. package/components/ui/NavigationMenu/index.tsx +0 -185
  176. package/components/ui/NoData/index.stories.tsx +0 -24
  177. package/components/ui/NoData/index.tsx +0 -19
  178. package/components/ui/Pagination/index.stories.tsx +0 -53
  179. package/components/ui/Pagination/index.tsx +0 -114
  180. package/components/ui/Popover/index.stories.tsx +0 -31
  181. package/components/ui/Popover/index.tsx +0 -42
  182. package/components/ui/Progress/index.stories.tsx +0 -35
  183. package/components/ui/Progress/index.tsx +0 -28
  184. package/components/ui/RadioGroup/index.stories.tsx +0 -28
  185. package/components/ui/RadioGroup/index.tsx +0 -45
  186. package/components/ui/Resizable/index.stories.tsx +0 -44
  187. package/components/ui/Resizable/index.tsx +0 -54
  188. package/components/ui/ScrollArea/index.stories.tsx +0 -31
  189. package/components/ui/ScrollArea/index.tsx +0 -56
  190. package/components/ui/Select/index.stories.tsx +0 -64
  191. package/components/ui/Select/index.tsx +0 -170
  192. package/components/ui/Separator/index.stories.tsx +0 -31
  193. package/components/ui/Separator/index.tsx +0 -28
  194. package/components/ui/Sheet/index.stories.tsx +0 -45
  195. package/components/ui/Sheet/index.tsx +0 -130
  196. package/components/ui/Sidebar/index.stories.tsx +0 -82
  197. package/components/ui/Sidebar/index.tsx +0 -676
  198. package/components/ui/Skeleton/index.stories.tsx +0 -36
  199. package/components/ui/Skeleton/index.tsx +0 -13
  200. package/components/ui/Slider/index.stories.tsx +0 -48
  201. package/components/ui/Slider/index.tsx +0 -82
  202. package/components/ui/Slot/index.stories.tsx +0 -29
  203. package/components/ui/Slot/index.tsx +0 -106
  204. package/components/ui/Sonner/index.stories.tsx +0 -36
  205. package/components/ui/Sonner/index.tsx +0 -31
  206. package/components/ui/Switch/index.stories.tsx +0 -33
  207. package/components/ui/Switch/index.tsx +0 -28
  208. package/components/ui/Table/index.stories.tsx +0 -74
  209. package/components/ui/Table/index.tsx +0 -95
  210. package/components/ui/Tabs/index.stories.tsx +0 -38
  211. package/components/ui/Tabs/index.tsx +0 -78
  212. package/components/ui/Text/index.stories.tsx +0 -53
  213. package/components/ui/Text/index.tsx +0 -138
  214. package/components/ui/Textarea/index.stories.tsx +0 -25
  215. package/components/ui/Textarea/index.tsx +0 -18
  216. package/components/ui/Toggle/index.stories.tsx +0 -52
  217. package/components/ui/Toggle/index.tsx +0 -46
  218. package/components/ui/ToggleGroup/index.stories.tsx +0 -52
  219. package/components/ui/ToggleGroup/index.tsx +0 -69
  220. package/components/ui/Tooltip/index.stories.tsx +0 -29
  221. package/components/ui/Tooltip/index.tsx +0 -35
  222. package/components/ui/VStack/index.stories.tsx +0 -45
  223. package/components/ui/VStack/index.tsx +0 -69
  224. package/components/ui/colors.stories.tsx +0 -148
  225. package/eslint.config.js +0 -10
  226. package/hooks/index.ts +0 -3
  227. package/hooks/use-auto-height.tsx +0 -99
  228. package/hooks/use-controlled-state.tsx +0 -32
  229. package/hooks/use-mobile.ts +0 -19
  230. package/index.ts +0 -58
  231. package/lib/get-strict-context.ts +0 -15
  232. package/lib/utils.ts +0 -10
  233. package/scripts/generate-exports.ts +0 -32
  234. package/tsconfig.json +0 -12
  235. package/tsconfig.tsbuildinfo +0 -1
  236. package/tsup.config.ts +0 -11
  237. package/types/svg.d.ts +0 -10
  238. package/vercel.json +0 -5
@@ -1,305 +0,0 @@
1
- {
2
- "nm": "Main Scene",
3
- "ddd": 0,
4
- "h": 500,
5
- "w": 500,
6
- "meta": { "g": "@lottiefiles/creator 1.15.0" },
7
- "layers": [
8
- {
9
- "ty": 4,
10
- "nm": "Ellipse 1",
11
- "sr": 1,
12
- "st": 0,
13
- "op": 120,
14
- "ip": 0,
15
- "hd": false,
16
- "ddd": 0,
17
- "bm": 0,
18
- "hasMask": false,
19
- "ao": 0,
20
- "ks": {
21
- "a": { "a": 0, "k": [0, 0] },
22
- "s": { "a": 0, "k": [80, 80] },
23
- "sk": { "a": 0, "k": 0 },
24
- "p": { "a": 0, "k": [246, 247] },
25
- "r": {
26
- "a": 1,
27
- "k": [
28
- { "o": { "x": 0, "y": 0 }, "i": { "x": 1, "y": 1 }, "s": [160], "t": 0 },
29
- { "s": [-200], "t": 119 }
30
- ]
31
- },
32
- "sa": { "a": 0, "k": 0 },
33
- "o": { "a": 0, "k": 100 }
34
- },
35
- "ef": [],
36
- "shapes": [
37
- {
38
- "ty": "sh",
39
- "bm": 0,
40
- "hd": false,
41
- "nm": "Ellipse Path 1",
42
- "d": 1,
43
- "ks": {
44
- "a": 0,
45
- "k": {
46
- "c": true,
47
- "i": [
48
- [-73.9546, 0],
49
- [0, -73.9546],
50
- [73.9546, 0],
51
- [0, 73.9546]
52
- ],
53
- "o": [
54
- [73.9546, 0],
55
- [0, 73.9546],
56
- [-73.9546, 0],
57
- [0, -73.9546]
58
- ],
59
- "v": [
60
- [0, -134],
61
- [134, 0],
62
- [0, 134],
63
- [-134, 0]
64
- ]
65
- }
66
- }
67
- },
68
- {
69
- "ty": "tm",
70
- "bm": 0,
71
- "hd": false,
72
- "nm": "Trim Path",
73
- "e": {
74
- "a": 1,
75
- "k": [
76
- { "o": { "x": 0.65, "y": 0 }, "i": { "x": 0.36, "y": 1 }, "s": [100], "t": 4 },
77
- { "s": [0], "t": 120 }
78
- ]
79
- },
80
- "o": { "a": 0, "k": 0 },
81
- "s": {
82
- "a": 1,
83
- "k": [
84
- { "o": { "x": 0.55, "y": 0.06 }, "i": { "x": 0.36, "y": 1 }, "s": [100], "t": 0 },
85
- { "s": [0], "t": 116 }
86
- ]
87
- },
88
- "m": 1
89
- },
90
- {
91
- "ty": "st",
92
- "bm": 0,
93
- "hd": false,
94
- "nm": "Stroke",
95
- "lc": 2,
96
- "lj": 2,
97
- "ml": 1,
98
- "o": { "a": 0, "k": 100 },
99
- "w": { "a": 0, "k": 28 },
100
- "c": { "a": 0, "k": [0.0627, 0.3255, 0.9529, 1] }
101
- }
102
- ],
103
- "ind": 1
104
- },
105
- {
106
- "ty": 4,
107
- "nm": "Ellipse 1",
108
- "sr": 1,
109
- "st": 0,
110
- "op": 120,
111
- "ip": 0,
112
- "hd": false,
113
- "ddd": 0,
114
- "bm": 0,
115
- "hasMask": false,
116
- "ao": 0,
117
- "ks": {
118
- "a": { "a": 0, "k": [0, 0] },
119
- "s": { "a": 0, "k": [80, 80] },
120
- "sk": { "a": 0, "k": 0 },
121
- "p": { "a": 0, "k": [246, 247] },
122
- "r": {
123
- "a": 1,
124
- "k": [
125
- { "o": { "x": 0, "y": 0 }, "i": { "x": 1, "y": 1 }, "s": [60], "t": 0 },
126
- { "s": [-300], "t": 119 }
127
- ]
128
- },
129
- "sa": { "a": 0, "k": 0 },
130
- "o": { "a": 0, "k": 100 }
131
- },
132
- "ef": [],
133
- "shapes": [
134
- {
135
- "ty": "sh",
136
- "bm": 0,
137
- "hd": false,
138
- "nm": "Ellipse Path 1",
139
- "d": 1,
140
- "ks": {
141
- "a": 0,
142
- "k": {
143
- "c": true,
144
- "i": [
145
- [-73.9546, 0],
146
- [0, -73.9546],
147
- [73.9546, 0],
148
- [0, 73.9546]
149
- ],
150
- "o": [
151
- [73.9546, 0],
152
- [0, 73.9546],
153
- [-73.9546, 0],
154
- [0, -73.9546]
155
- ],
156
- "v": [
157
- [0, -134],
158
- [134, 0],
159
- [0, 134],
160
- [-134, 0]
161
- ]
162
- }
163
- }
164
- },
165
- {
166
- "ty": "tm",
167
- "bm": 0,
168
- "hd": false,
169
- "nm": "Trim Path",
170
- "e": {
171
- "a": 1,
172
- "k": [
173
- { "o": { "x": 0.65, "y": 0 }, "i": { "x": 0.36, "y": 1 }, "s": [100], "t": 26 },
174
- { "s": [0], "t": 120 }
175
- ]
176
- },
177
- "o": { "a": 0, "k": 0 },
178
- "s": {
179
- "a": 1,
180
- "k": [
181
- { "o": { "x": 0.55, "y": 0.06 }, "i": { "x": 0.36, "y": 1 }, "s": [100], "t": 0 },
182
- { "s": [0], "t": 96 }
183
- ]
184
- },
185
- "m": 1
186
- },
187
- {
188
- "ty": "st",
189
- "bm": 0,
190
- "hd": false,
191
- "nm": "Stroke",
192
- "lc": 2,
193
- "lj": 2,
194
- "ml": 1,
195
- "o": { "a": 0, "k": 100 },
196
- "w": { "a": 0, "k": 28 },
197
- "c": { "a": 0, "k": [0.0627, 0.3255, 0.9529, 1] }
198
- }
199
- ],
200
- "ind": 2
201
- },
202
- {
203
- "ty": 4,
204
- "nm": "Ellipse 1",
205
- "sr": 1,
206
- "st": 0,
207
- "op": 122,
208
- "ip": 0,
209
- "hd": false,
210
- "ddd": 0,
211
- "bm": 0,
212
- "hasMask": false,
213
- "ao": 0,
214
- "ks": {
215
- "a": { "a": 0, "k": [0, 0] },
216
- "s": { "a": 0, "k": [100, 100] },
217
- "sk": { "a": 0, "k": 0 },
218
- "p": { "a": 0, "k": [246, 247] },
219
- "r": {
220
- "a": 1,
221
- "k": [
222
- { "o": { "x": 0, "y": 0 }, "i": { "x": 1, "y": 1 }, "s": [0], "t": 0 },
223
- { "s": [-359], "t": 120 }
224
- ]
225
- },
226
- "sa": { "a": 0, "k": 0 },
227
- "o": { "a": 0, "k": 100 }
228
- },
229
- "ef": [],
230
- "shapes": [
231
- {
232
- "ty": "sh",
233
- "bm": 0,
234
- "hd": false,
235
- "nm": "Ellipse Path 1",
236
- "d": 1,
237
- "ks": {
238
- "a": 0,
239
- "k": {
240
- "c": true,
241
- "i": [
242
- [-73.9546, 0],
243
- [0, -73.9546],
244
- [73.9546, 0],
245
- [0, 73.9546]
246
- ],
247
- "o": [
248
- [73.9546, 0],
249
- [0, 73.9546],
250
- [-73.9546, 0],
251
- [0, -73.9546]
252
- ],
253
- "v": [
254
- [0, -134],
255
- [134, 0],
256
- [0, 134],
257
- [-134, 0]
258
- ]
259
- }
260
- }
261
- },
262
- {
263
- "ty": "tm",
264
- "bm": 0,
265
- "hd": false,
266
- "nm": "Trim Path",
267
- "e": {
268
- "a": 1,
269
- "k": [
270
- { "o": { "x": 0.65, "y": 0 }, "i": { "x": 0.36, "y": 1 }, "s": [100], "t": 26 },
271
- { "s": [0], "t": 120 }
272
- ]
273
- },
274
- "o": { "a": 0, "k": 0 },
275
- "s": {
276
- "a": 1,
277
- "k": [
278
- { "o": { "x": 0.55, "y": 0.06 }, "i": { "x": 0.36, "y": 1 }, "s": [100], "t": 0 },
279
- { "s": [0], "t": 96 }
280
- ]
281
- },
282
- "m": 1
283
- },
284
- {
285
- "ty": "st",
286
- "bm": 0,
287
- "hd": false,
288
- "nm": "Stroke",
289
- "lc": 2,
290
- "lj": 2,
291
- "ml": 1,
292
- "o": { "a": 0, "k": 100 },
293
- "w": { "a": 0, "k": 10 },
294
- "c": { "a": 0, "k": [0.8992, 0.9237, 0.9808, 1] }
295
- }
296
- ],
297
- "ind": 3
298
- }
299
- ],
300
- "v": "5.7.0",
301
- "fr": 60,
302
- "op": 120,
303
- "ip": 0,
304
- "assets": []
305
- }
@@ -1,74 +0,0 @@
1
- import { Meta } from '@storybook/blocks';
2
-
3
- <Meta title="Welcome" />
4
-
5
- # Welcome 👋🏼
6
-
7
- Welcome to the **@luanthnh/cntt-ui** component library. A modern, high-performance UI component library built with **React**, **Tailwind CSS (v4)**, **Radix UI**, and **Framer Motion**.
8
-
9
- 🔗 **Live Demo**: [https://cntt-ui.vercel.app/](https://cntt-ui.vercel.app/)
10
-
11
- ---
12
-
13
- ## 📦 Install
14
-
15
- Use your preferred package manager to install the library:
16
-
17
- ```bash
18
- # npm
19
- npm install @luanthnh/cntt-ui
20
-
21
- # pnpm
22
- pnpm add @luanthnh/cntt-ui
23
-
24
- # yarn
25
- yarn add @luanthnh/cntt-ui
26
- ```
27
-
28
- ---
29
-
30
- ## 🛠️ Setup
31
-
32
- To get started, follow these simple steps:
33
-
34
- ### 1. Import Global CSS
35
-
36
- Include the global styles in your application's entry point (e.g., `layout.tsx` or `index.tsx`):
37
-
38
- ```tsx
39
- import '@luanthnh/cntt-ui/globals.css';
40
- ```
41
-
42
- ### 2. Configure Tailwind CSS (v4)
43
-
44
- Ensure your project is set up with Tailwind CSS v4. If you are using Next.js, make sure to configure `@tailwindcss/postcss` for optimal performance.
45
-
46
- ---
47
-
48
- ## 🚀 Use the component
49
-
50
- Start using our premium components in your project:
51
-
52
- ```tsx
53
- import { Button, Card, Text } from '@luanthnh/cntt-ui';
54
-
55
- export default function App() {
56
- return (
57
- <Card className="max-w-sm p-6">
58
- <Text variant="h3" className="mb-4">
59
- Hello World!
60
- </Text>
61
- <Text className="mb-6 opacity-80">
62
- You are now using the powerful @luanthnh/cntt-ui components.
63
- </Text>
64
- <Button variant="primary" onClick={() => alert('Ready to build!')}>
65
- Get Started
66
- </Button>
67
- </Card>
68
- );
69
- }
70
- ```
71
-
72
- ---
73
-
74
- Designed with ❤️ for a superior developer experience.
@@ -1,48 +0,0 @@
1
- 'use client';
2
-
3
- import type { LenisOptions } from 'lenis';
4
-
5
- import 'lenis/dist/lenis.css';
6
-
7
- import { useRef } from 'react';
8
- import { LenisRef, ReactLenis, LenisProps as ReactLenisProps } from 'lenis/react';
9
- import { useTempus } from 'tempus/react';
10
-
11
- interface LenisProps extends Omit<ReactLenisProps, 'ref'> {
12
- root: boolean;
13
- options: LenisOptions;
14
- }
15
-
16
- export function Lenis({ root, options }: LenisProps) {
17
- const lenisRef = useRef<LenisRef>(null);
18
- // const lenis = useLenis();
19
-
20
- useTempus((time: number) => {
21
- if (lenisRef.current?.lenis) {
22
- lenisRef.current.lenis.raf(time);
23
- }
24
- });
25
-
26
- // useEffect(() => {
27
- // if (isNavOpened) {
28
- // lenis?.stop();
29
- // } else {
30
- // lenis?.start();
31
- // }
32
- // }, [isNavOpened, lenis]);
33
-
34
- return (
35
- <ReactLenis
36
- ref={lenisRef}
37
- root={root}
38
- options={{
39
- ...options,
40
- lerp: options?.lerp ?? 0.125,
41
- autoRaf: false,
42
- anchors: true,
43
- prevent: (node: Element | null) =>
44
- node?.nodeName === 'VERCEL-LIVE-FEEDBACK' || node?.id === 'theatrejs-studio-root',
45
- }}
46
- />
47
- );
48
- }
@@ -1,56 +0,0 @@
1
- 'use client';
2
-
3
- import * as React from 'react';
4
- import {
5
- motion,
6
- type AnimationControls,
7
- type HTMLMotionProps,
8
- type TargetAndTransition,
9
- type Transition,
10
- } from 'motion/react';
11
-
12
- import { useAutoHeight } from '@/hooks/use-auto-height';
13
-
14
- import { Slot, WithAsChild } from './slot';
15
-
16
- type AutoHeightProps = WithAsChild<
17
- {
18
- children: React.ReactNode;
19
- deps?: React.DependencyList;
20
- animate?: TargetAndTransition | AnimationControls;
21
- transition?: Transition;
22
- } & Omit<HTMLMotionProps<'div'>, 'animate'>
23
- >;
24
-
25
- function AutoHeight({
26
- children,
27
- deps = [],
28
- transition = {
29
- type: 'spring',
30
- stiffness: 300,
31
- damping: 30,
32
- bounce: 0,
33
- restDelta: 0.01,
34
- },
35
- style,
36
- animate,
37
- asChild = false,
38
- ...props
39
- }: AutoHeightProps) {
40
- const { ref, height } = useAutoHeight<HTMLDivElement>(deps);
41
-
42
- const Comp = asChild ? Slot : motion.div;
43
-
44
- return (
45
- <Comp
46
- style={{ overflow: 'hidden', ...style }}
47
- animate={{ height, ...animate }}
48
- transition={transition}
49
- {...props}
50
- >
51
- <div ref={ref}>{children}</div>
52
- </Comp>
53
- );
54
- }
55
-
56
- export { AutoHeight, type AutoHeightProps };
@@ -1,108 +0,0 @@
1
- 'use client';
2
-
3
- import { useEffect, useRef, useState } from 'react';
4
-
5
- export default function Cursor() {
6
- const mousePosition = useRef({ x: 0, y: 0 });
7
-
8
- const dotPosition = useRef({ x: 0, y: 0 });
9
- const borderDotPosition = useRef({ x: 0, y: 0 });
10
-
11
- const [renderPos, setRenderPos] = useState({ dot: { x: 0, y: 0 }, border: { x: 0, y: 0 } });
12
- const [isHovering, setIsHovering] = useState(false);
13
-
14
- const DOT_SMOOTHNESS = 0.2;
15
- const BORDER_DOT_SMOOTHNESS = 0.1;
16
-
17
- useEffect(() => {
18
- const handleMouseMove = (e: MouseEvent) => {
19
- mousePosition.current = { x: e.clientX, y: e.clientY };
20
- };
21
-
22
- const handleMouseEnter = () => setIsHovering(true);
23
- const handleMouseLeave = () => setIsHovering(false);
24
-
25
- // Add event listeners
26
- window.addEventListener('mousemove', handleMouseMove);
27
-
28
- const interactiveElements = document.querySelectorAll(
29
- 'a, button, img, input, textarea, select',
30
- );
31
- interactiveElements.forEach((element) => {
32
- element.addEventListener('mouseenter', handleMouseEnter);
33
- element.addEventListener('mouseleave', handleMouseLeave);
34
- });
35
-
36
- // Animation function for smooth movement
37
- const animate = () => {
38
- const lerp = (start: number, end: number, factor: number) => {
39
- return start + (end - start) * factor;
40
- };
41
-
42
- dotPosition.current.x = lerp(dotPosition.current.x, mousePosition.current.x, DOT_SMOOTHNESS);
43
- dotPosition.current.y = lerp(dotPosition.current.y, mousePosition.current.y, DOT_SMOOTHNESS);
44
-
45
- borderDotPosition.current.x = lerp(
46
- borderDotPosition.current.x,
47
- mousePosition.current.x,
48
- BORDER_DOT_SMOOTHNESS,
49
- );
50
- borderDotPosition.current.y = lerp(
51
- borderDotPosition.current.y,
52
- mousePosition.current.y,
53
- BORDER_DOT_SMOOTHNESS,
54
- );
55
-
56
- setRenderPos({
57
- dot: { x: dotPosition.current.x, y: dotPosition.current.y },
58
- border: { x: borderDotPosition.current.x, y: borderDotPosition.current.y },
59
- });
60
-
61
- requestAnimationFrame(animate);
62
- };
63
-
64
- // Start animation loop
65
- const animationId = requestAnimationFrame(animate);
66
-
67
- // Clean up
68
- return () => {
69
- window.removeEventListener('mousemove', handleMouseMove);
70
-
71
- interactiveElements.forEach((element) => {
72
- element.removeEventListener('mouseenter', handleMouseEnter);
73
- element.removeEventListener('mouseleave', handleMouseLeave);
74
- });
75
-
76
- cancelAnimationFrame(animationId);
77
- };
78
- }, []);
79
-
80
- if (typeof window === 'undefined') return null;
81
-
82
- return (
83
- <div className="pointer-events-none fixed inset-0 z-[999]">
84
- <div
85
- className="bg-primary absolute rounded-full"
86
- style={{
87
- width: '8px',
88
- height: '8px',
89
- transform: 'translate(-50%, -50%)',
90
- left: `${renderPos.dot.x}px`,
91
- top: `${renderPos.dot.y}px`,
92
- }}
93
- />
94
-
95
- <div
96
- className="border-primary absolute rounded-full border"
97
- style={{
98
- width: isHovering ? '32px' : '24px',
99
- height: isHovering ? '32px' : '24px',
100
- transform: 'translate(-50%, -50%)',
101
- left: `${renderPos.border.x}px`,
102
- top: `${renderPos.border.y}px`,
103
- transition: 'width 0.3s, height 0.3s',
104
- }}
105
- />
106
- </div>
107
- );
108
- }