@hellboy/ds 0.1.3 → 0.2.7

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 (298) hide show
  1. package/README.md +512 -162
  2. package/{src/style/components/badge → dist/components}/badge.css +9 -25
  3. package/dist/components/badge.d.mts +12 -0
  4. package/dist/components/badge.d.ts +12 -0
  5. package/dist/components/badge.js +42 -0
  6. package/dist/components/badge.mjs +15 -0
  7. package/dist/components/banner.css +280 -0
  8. package/dist/components/banner.d.mts +12 -0
  9. package/dist/components/banner.d.ts +12 -0
  10. package/dist/components/banner.js +184 -0
  11. package/dist/components/banner.mjs +147 -0
  12. package/dist/components/button-group.css +289 -0
  13. package/dist/components/button-group.d.mts +81 -0
  14. package/dist/components/button-group.d.ts +81 -0
  15. package/dist/components/button-group.js +180 -0
  16. package/dist/components/button-group.mjs +143 -0
  17. package/{src/style/components/button → dist/components}/button.css +59 -62
  18. package/dist/components/button.d.mts +57 -0
  19. package/dist/components/button.d.ts +57 -0
  20. package/dist/components/button.js +129 -0
  21. package/dist/components/button.mjs +92 -0
  22. package/{src/style/components/card → dist/components}/card.css +9 -30
  23. package/dist/components/card.d.mts +31 -0
  24. package/dist/components/card.d.ts +31 -0
  25. package/dist/components/card.js +59 -0
  26. package/dist/components/card.mjs +32 -0
  27. package/{src/style → dist}/components/checkbox.css +51 -43
  28. package/dist/components/checkbox.d.mts +31 -0
  29. package/dist/components/checkbox.d.ts +31 -0
  30. package/dist/components/checkbox.js +130 -0
  31. package/dist/components/checkbox.mjs +93 -0
  32. package/{src/style/components/code-block → dist/components}/code-block.css +3 -7
  33. package/dist/components/code-block.d.mts +24 -0
  34. package/dist/components/code-block.d.ts +24 -0
  35. package/dist/components/code-block.js +43 -0
  36. package/dist/components/code-block.mjs +16 -0
  37. package/dist/components/color-control.css +285 -0
  38. package/dist/components/color-control.d.mts +5 -0
  39. package/dist/components/color-control.d.ts +5 -0
  40. package/dist/components/color-control.js +534 -0
  41. package/dist/components/color-control.mjs +497 -0
  42. package/dist/components/dialog.css +930 -0
  43. package/dist/components/dialog.d.mts +32 -0
  44. package/dist/components/dialog.d.ts +32 -0
  45. package/dist/components/dialog.js +1111 -0
  46. package/dist/components/dialog.mjs +1074 -0
  47. package/dist/components/divider.css +356 -0
  48. package/dist/components/divider.d.mts +32 -0
  49. package/dist/components/divider.d.ts +32 -0
  50. package/dist/components/divider.js +344 -0
  51. package/dist/components/divider.mjs +307 -0
  52. package/{src/style/components/drag-handle → dist/components}/drag-handle.css +3 -18
  53. package/dist/components/drag-handle.d.mts +11 -0
  54. package/dist/components/drag-handle.d.ts +11 -0
  55. package/dist/components/drag-handle.js +103 -0
  56. package/dist/components/drag-handle.mjs +66 -0
  57. package/dist/components/drawer.css +1027 -0
  58. package/dist/components/drawer.d.mts +14 -0
  59. package/dist/components/drawer.d.ts +14 -0
  60. package/dist/components/drawer.js +1072 -0
  61. package/dist/components/drawer.mjs +1035 -0
  62. package/dist/components/floating-bar.css +17 -0
  63. package/dist/components/floating-bar.d.mts +25 -0
  64. package/dist/components/floating-bar.d.ts +25 -0
  65. package/dist/components/floating-bar.js +52 -0
  66. package/dist/components/floating-bar.mjs +25 -0
  67. package/dist/components/footer.css +40 -0
  68. package/dist/components/footer.d.mts +8 -0
  69. package/dist/components/footer.d.ts +8 -0
  70. package/dist/components/footer.js +44 -0
  71. package/dist/components/footer.mjs +17 -0
  72. package/dist/components/grid.css +47 -0
  73. package/dist/components/grid.d.mts +27 -0
  74. package/dist/components/grid.d.ts +27 -0
  75. package/dist/components/grid.js +52 -0
  76. package/dist/components/grid.mjs +25 -0
  77. package/dist/components/header.css +1075 -0
  78. package/dist/components/header.d.mts +35 -0
  79. package/dist/components/header.d.ts +35 -0
  80. package/dist/components/header.js +1402 -0
  81. package/dist/components/header.mjs +1365 -0
  82. package/dist/components/hero.css +121 -0
  83. package/dist/components/hero.d.mts +111 -0
  84. package/dist/components/hero.d.ts +111 -0
  85. package/dist/components/hero.js +285 -0
  86. package/dist/components/hero.mjs +248 -0
  87. package/{src/style/components/icons → dist/components}/icons.css +14 -15
  88. package/dist/components/icons.d.mts +104 -0
  89. package/dist/components/icons.d.ts +104 -0
  90. package/dist/components/icons.js +239 -0
  91. package/dist/components/icons.mjs +203 -0
  92. package/{src/style/components/input → dist/components}/input.css +189 -102
  93. package/dist/components/input.d.mts +114 -0
  94. package/dist/components/input.d.ts +114 -0
  95. package/dist/components/input.js +926 -0
  96. package/dist/components/input.mjs +879 -0
  97. package/dist/components/layout.css +551 -0
  98. package/dist/components/layout.d.mts +16 -0
  99. package/dist/components/layout.d.ts +16 -0
  100. package/dist/components/layout.js +387 -0
  101. package/dist/components/layout.mjs +352 -0
  102. package/{src/style/components/list → dist/components}/list.css +47 -41
  103. package/dist/components/list.d.mts +46 -0
  104. package/dist/components/list.d.ts +46 -0
  105. package/dist/components/list.js +124 -0
  106. package/dist/components/list.mjs +96 -0
  107. package/dist/components/navbar.css +706 -0
  108. package/dist/components/navbar.d.mts +56 -0
  109. package/dist/components/navbar.d.ts +56 -0
  110. package/dist/components/navbar.js +994 -0
  111. package/dist/components/navbar.mjs +952 -0
  112. package/{src/style/components/page-index → dist/components}/page-index.css +2 -47
  113. package/dist/components/page-index.d.mts +25 -0
  114. package/dist/components/page-index.d.ts +25 -0
  115. package/dist/components/page-index.js +239 -0
  116. package/dist/components/page-index.mjs +202 -0
  117. package/{src/style/components/page → dist/components}/page.css +4 -15
  118. package/dist/components/page.d.mts +30 -0
  119. package/dist/components/page.d.ts +30 -0
  120. package/dist/components/page.js +40 -0
  121. package/dist/components/page.mjs +13 -0
  122. package/dist/components/popover.css +87 -0
  123. package/dist/components/popover.d.mts +22 -0
  124. package/dist/components/popover.d.ts +22 -0
  125. package/dist/components/popover.js +243 -0
  126. package/dist/components/popover.mjs +206 -0
  127. package/{src/style → dist}/components/radio.css +8 -51
  128. package/dist/components/radio.d.mts +59 -0
  129. package/dist/components/radio.d.ts +59 -0
  130. package/dist/components/radio.js +133 -0
  131. package/dist/components/radio.mjs +95 -0
  132. package/dist/components/section.css +993 -0
  133. package/dist/components/section.d.mts +33 -0
  134. package/dist/components/section.d.ts +33 -0
  135. package/dist/components/section.js +1401 -0
  136. package/dist/components/section.mjs +1364 -0
  137. package/dist/components/select.css +391 -0
  138. package/dist/components/select.d.mts +63 -0
  139. package/dist/components/select.d.ts +63 -0
  140. package/dist/components/select.js +452 -0
  141. package/dist/components/select.mjs +415 -0
  142. package/{src/style/components/slider → dist/components}/slider.css +55 -33
  143. package/dist/components/slider.d.mts +69 -0
  144. package/dist/components/slider.d.ts +69 -0
  145. package/dist/components/slider.js +254 -0
  146. package/dist/components/slider.mjs +217 -0
  147. package/dist/components/switch.css +1081 -0
  148. package/dist/components/switch.d.mts +33 -0
  149. package/dist/components/switch.d.ts +33 -0
  150. package/dist/components/switch.js +1092 -0
  151. package/dist/components/switch.mjs +1055 -0
  152. package/{src/style/components/table → dist/components}/table.css +3 -28
  153. package/dist/components/table.d.mts +42 -0
  154. package/dist/components/table.d.ts +42 -0
  155. package/dist/components/table.js +108 -0
  156. package/dist/components/table.mjs +76 -0
  157. package/dist/components/tag.css +97 -0
  158. package/dist/components/tag.d.mts +12 -0
  159. package/dist/components/tag.d.ts +12 -0
  160. package/dist/components/tag.js +42 -0
  161. package/dist/components/tag.mjs +15 -0
  162. package/dist/components/textarea.css +1359 -0
  163. package/dist/components/textarea.d.mts +84 -0
  164. package/dist/components/textarea.d.ts +84 -0
  165. package/dist/components/textarea.js +1962 -0
  166. package/dist/components/textarea.mjs +1924 -0
  167. package/{src/style/components/theme-control → dist/components}/theme-control.css +3 -7
  168. package/dist/components/theme-control.d.mts +9 -0
  169. package/dist/components/theme-control.d.ts +9 -0
  170. package/dist/components/theme-control.js +235 -0
  171. package/dist/components/theme-control.mjs +200 -0
  172. package/{src/style/components/tooltip → dist/components}/tooltip.css +5 -13
  173. package/dist/components/tooltip.d.mts +12 -0
  174. package/dist/components/tooltip.d.ts +12 -0
  175. package/dist/components/tooltip.js +200 -0
  176. package/dist/components/tooltip.mjs +163 -0
  177. package/dist/icons-Czahnf-r.d.mts +15 -0
  178. package/dist/icons-Czahnf-r.d.ts +15 -0
  179. package/dist/index.css +2914 -2067
  180. package/dist/index.d.mts +144 -721
  181. package/dist/index.d.ts +144 -721
  182. package/dist/index.js +4076 -2282
  183. package/dist/index.mjs +4132 -2366
  184. package/dist/theme.css +34 -34
  185. package/package.json +27 -8
  186. package/dist/index.css.map +0 -1
  187. package/dist/index.js.map +0 -1
  188. package/dist/index.mjs.map +0 -1
  189. package/hellboy-ds-0.1.2.tgz +0 -0
  190. package/src/components/badge/Badge.tsx +0 -29
  191. package/src/components/badge/index.ts +0 -1
  192. package/src/components/banner/Banner.tsx +0 -48
  193. package/src/components/banner/banner.css +0 -44
  194. package/src/components/banner/index.ts +0 -1
  195. package/src/components/button/button.tsx +0 -127
  196. package/src/components/button/index.ts +0 -1
  197. package/src/components/card/card.tsx +0 -57
  198. package/src/components/card/index.ts +0 -1
  199. package/src/components/checkbox/Checkbox.tsx +0 -98
  200. package/src/components/checkbox/index.ts +0 -1
  201. package/src/components/code-block/code-block.tsx +0 -44
  202. package/src/components/code-block/index.ts +0 -1
  203. package/src/components/color-control/color-control.tsx +0 -322
  204. package/src/components/color-control/index.ts +0 -1
  205. package/src/components/drag-handle/DragHandle.tsx +0 -78
  206. package/src/components/drag-handle/index.ts +0 -1
  207. package/src/components/drawer/drawer.tsx +0 -82
  208. package/src/components/drawer/index.ts +0 -1
  209. package/src/components/floating-bar/floating-bar.tsx +0 -52
  210. package/src/components/floating-bar/index.ts +0 -2
  211. package/src/components/footer/footer.tsx +0 -28
  212. package/src/components/footer/index.ts +0 -1
  213. package/src/components/grid/Grid.tsx +0 -53
  214. package/src/components/grid/index.ts +0 -1
  215. package/src/components/header/header.tsx +0 -57
  216. package/src/components/header/index.ts +0 -1
  217. package/src/components/icons/icons.tsx +0 -44
  218. package/src/components/icons/index.ts +0 -1
  219. package/src/components/index.ts +0 -29
  220. package/src/components/input/DatePicker.tsx +0 -133
  221. package/src/components/input/Input.tsx +0 -220
  222. package/src/components/input/InputDate.tsx +0 -10
  223. package/src/components/input/InputDateTime.tsx +0 -10
  224. package/src/components/input/InputEmail.tsx +0 -10
  225. package/src/components/input/InputField.tsx +0 -137
  226. package/src/components/input/InputNumber.tsx +0 -10
  227. package/src/components/input/InputPassword.tsx +0 -10
  228. package/src/components/input/InputSearch.tsx +0 -10
  229. package/src/components/input/InputTel.tsx +0 -10
  230. package/src/components/input/InputText.tsx +0 -10
  231. package/src/components/input/InputTime.tsx +0 -10
  232. package/src/components/input/InputUrl.tsx +0 -10
  233. package/src/components/input/TimePicker.tsx +0 -151
  234. package/src/components/input/index.ts +0 -11
  235. package/src/components/layout/Layout.tsx +0 -244
  236. package/src/components/layout/index.ts +0 -1
  237. package/src/components/list/List.tsx +0 -159
  238. package/src/components/list/index.ts +0 -1
  239. package/src/components/navbar/MenuCategory.tsx +0 -20
  240. package/src/components/navbar/MenuGroup.tsx +0 -288
  241. package/src/components/navbar/MenuItem.tsx +0 -65
  242. package/src/components/navbar/Navbar.tsx +0 -23
  243. package/src/components/navbar/index.ts +0 -4
  244. package/src/components/page/index.ts +0 -1
  245. package/src/components/page/page.tsx +0 -46
  246. package/src/components/page-index/PageIndex.tsx +0 -275
  247. package/src/components/page-index/index.ts +0 -1
  248. package/src/components/popover/index.ts +0 -1
  249. package/src/components/popover/popover.tsx +0 -199
  250. package/src/components/radio/Radio.tsx +0 -176
  251. package/src/components/radio/index.ts +0 -1
  252. package/src/components/section/index.ts +0 -1
  253. package/src/components/section/section.tsx +0 -66
  254. package/src/components/select/Select.tsx +0 -212
  255. package/src/components/select/index.ts +0 -1
  256. package/src/components/slider/Slider.tsx +0 -267
  257. package/src/components/slider/index.ts +0 -1
  258. package/src/components/switch/index.ts +0 -1
  259. package/src/components/switch/switch.tsx +0 -99
  260. package/src/components/table/Table.tsx +0 -147
  261. package/src/components/table/index.ts +0 -1
  262. package/src/components/theme-control/index.ts +0 -1
  263. package/src/components/theme-control/theme-control.tsx +0 -78
  264. package/src/components/tooltip/index.ts +0 -1
  265. package/src/components/tooltip/tooltip.tsx +0 -207
  266. package/src/contexts/NavbarTooltipContext.tsx +0 -48
  267. package/src/contexts/index.ts +0 -1
  268. package/src/foundations/motion.md +0 -136
  269. package/src/index.ts +0 -40
  270. package/src/style/_shared/field.css +0 -69
  271. package/src/style/components/color-control/color-control.css +0 -126
  272. package/src/style/components/drawer/drawer.css +0 -210
  273. package/src/style/components/floating-bar/floating-bar.css +0 -39
  274. package/src/style/components/footer/footer.css +0 -108
  275. package/src/style/components/grid/grid.css +0 -33
  276. package/src/style/components/header/header.css +0 -44
  277. package/src/style/components/layout/layout.css +0 -205
  278. package/src/style/components/navbar/navbar.css +0 -342
  279. package/src/style/components/popover/popover.css +0 -44
  280. package/src/style/components/section/section.css +0 -67
  281. package/src/style/components/select/select.css +0 -143
  282. package/src/style/components/switch/switch.css +0 -267
  283. package/src/style/foundations/global.css +0 -316
  284. package/src/style/foundations/motion.css +0 -164
  285. package/src/style/foundations/spacing.css +0 -51
  286. package/src/style/foundations/typography.css +0 -39
  287. package/src/style/foundations/z-index.css +0 -81
  288. package/src/style/modes/dark.css +0 -146
  289. package/src/style/modes/light.css +0 -147
  290. package/src/style/semantic.css +0 -52
  291. package/src/style/styles.css +0 -51
  292. package/src/style/themes/theme.json +0 -37
  293. package/src/utils/README.md +0 -305
  294. package/src/utils/USER_PREFERENCES.md +0 -558
  295. package/src/utils/theme.ts +0 -127
  296. package/src/utils/user-preferences.ts +0 -577
  297. package/tsconfig.json +0 -25
  298. package/tsup.config.ts +0 -52
@@ -1,34 +1,117 @@
1
- /**
2
- * Input Component Styles
3
- * Form input with label, icons, and accessibility support
4
- * Uses action colors for focus states
5
- */
1
+ /* src/style/components/icons/icons.css */
2
+ .icon {
3
+ display: inline-flex;
4
+ align-items: center;
5
+ justify-content: center;
6
+ }
7
+ .icon--skeleton {
8
+ background:
9
+ linear-gradient(
10
+ 90deg,
11
+ rgba(0, 0, 0, 0.06) 0%,
12
+ rgba(0, 0, 0, 0.03) 50%,
13
+ rgba(0, 0, 0, 0.06) 100%);
14
+ border-radius: 4px;
15
+ animation: hb-skeleton 1.2s ease-in-out infinite;
16
+ }
17
+ @keyframes hb-skeleton {
18
+ 0% {
19
+ background-position: 200% 0;
20
+ }
21
+ 100% {
22
+ background-position: -200% 0;
23
+ }
24
+ }
25
+ .icon {
26
+ display: inline-block;
27
+ flex-shrink: 0;
28
+ transition: color var(--transition-base, 0.2s ease);
29
+ }
30
+ .icon--interactive {
31
+ cursor: pointer;
32
+ color: var(--color-foreground-1);
33
+ }
34
+ .icon--interactive:hover:not(:disabled) {
35
+ color: var(--color-action-primary-hover);
36
+ }
37
+ .icon--interactive:active:not(:disabled) {
38
+ color: var(--color-action-primary-active);
39
+ }
40
+ .icon--interactive:disabled {
41
+ cursor: not-allowed;
42
+ color: var(--color-foreground-2);
43
+ }
6
44
 
7
- @import '../../_shared/field.css';
45
+ /* src/style/_shared/field.css */
46
+ .field {
47
+ width: 100%;
48
+ font-family: inherit;
49
+ font-size: var(--font-size-base);
50
+ line-height: 1.5;
51
+ color: var(--color-foreground-1);
52
+ background-color: var(--color-bg-1);
53
+ border: none;
54
+ outline: 2px solid var(--color-foreground-3);
55
+ outline-offset: -2px;
56
+ border-radius: var(--radius-base);
57
+ padding: var(--spacing-2) var(--spacing-3);
58
+ transition: outline-color var(--transition-base), box-shadow var(--transition-base);
59
+ cursor: pointer;
60
+ }
61
+ .field--sm {
62
+ font-size: var(--font-size-sm);
63
+ padding: var(--spacing-1) var(--spacing-2);
64
+ }
65
+ .field--lg {
66
+ font-size: var(--font-size-lg);
67
+ padding: var(--spacing-3) var(--spacing-4);
68
+ }
69
+ .field:focus,
70
+ .field:focus-visible {
71
+ outline-color: var(--color-action-primary);
72
+ box-shadow: var(--shadow-focus-ring);
73
+ }
74
+ .field:hover:not(:disabled):not(.field--error) {
75
+ outline-color: var(--color-action-primary-hover);
76
+ }
77
+ .field--error {
78
+ outline-color: hsla(var(--error-hue), var(--error-saturation), 50%, 1);
79
+ }
80
+ .field--error:focus,
81
+ .field--error:focus-visible {
82
+ outline-color: hsla(var(--error-hue), var(--error-saturation), 50%, 1);
83
+ box-shadow: var(--shadow-focus-ring-error);
84
+ }
85
+ .field:disabled,
86
+ .field--disabled {
87
+ cursor: not-allowed;
88
+ opacity: 0.6;
89
+ background-color: var(--color-bg-2);
90
+ }
91
+ .field--open {
92
+ outline-color: var(--color-action-primary);
93
+ }
8
94
 
95
+ /* src/style/components/input/input.css */
9
96
  .input-container {
10
97
  display: flex;
11
98
  flex-direction: column;
12
99
  gap: var(--spacing-2);
13
100
  }
14
-
15
101
  .input-container--full-width {
16
102
  width: 100%;
17
103
  }
18
-
19
104
  .input__label {
20
105
  font-size: var(--font-size-sm);
21
106
  font-weight: 500;
22
107
  color: var(--color-foreground-1);
23
108
  cursor: pointer;
24
109
  }
25
-
26
110
  .input__wrapper {
27
111
  position: relative;
28
112
  display: flex;
29
113
  align-items: center;
30
114
  }
31
-
32
115
  .input {
33
116
  width: 100%;
34
117
  font-family: inherit;
@@ -43,42 +126,30 @@
43
126
  padding: var(--spacing-2) var(--spacing-3);
44
127
  transition: outline-color var(--transition-base), box-shadow var(--transition-base);
45
128
  }
46
-
47
- /* Size variants */
48
129
  .input--sm {
49
130
  font-size: var(--font-size-sm);
50
131
  padding: var(--spacing-1) var(--spacing-2);
51
132
  }
52
-
53
133
  .input--lg {
54
134
  font-size: var(--font-size-lg);
55
135
  padding: var(--spacing-3) var(--spacing-4);
56
136
  }
57
-
58
- /* Error variant */
59
137
  .input--error {
60
138
  outline-color: hsla(var(--error-hue), var(--error-saturation), 50%, 1);
61
139
  }
62
-
63
140
  .input--error:focus {
64
141
  outline-color: hsla(var(--error-hue), var(--error-saturation), 50%, 1);
65
- box-shadow: 0 0 0 3px hsla(var(--error-hue), var(--error-saturation), var(--error-lightness), 0.1);
142
+ box-shadow: var(--shadow-focus-ring-error);
66
143
  }
67
-
68
- /* Disabled variant */
69
144
  .input--disabled {
70
145
  cursor: not-allowed;
71
146
  opacity: 0.6;
72
147
  background-color: var(--color-bg-2);
73
148
  }
74
-
75
- /* Focus state - uses action colors */
76
149
  .input:focus {
77
150
  outline-color: var(--color-action-primary);
78
- box-shadow: 0 0 0 3px hsla(var(--accent-hue), var(--accent-saturation), var(--accent-lightness), 0.1);
151
+ box-shadow: var(--shadow-focus-ring);
79
152
  }
80
-
81
- /* Hover state */
82
153
  .input:hover:not(:disabled):not(.input--error) {
83
154
  outline-color: var(--color-action-primary-hover);
84
155
  }
@@ -86,33 +157,24 @@
86
157
  color: var(--color-foreground-2);
87
158
  opacity: 0.7;
88
159
  }
89
-
90
- /* Icon spacing */
91
160
  .input--has-icon-left {
92
161
  padding-left: var(--spacing-10);
93
162
  }
94
-
95
163
  .input--has-icon-right {
96
164
  padding-right: var(--spacing-10);
97
165
  }
98
-
99
166
  .input--sm.input--has-icon-left {
100
167
  padding-left: var(--spacing-8);
101
168
  }
102
-
103
169
  .input--sm.input--has-icon-right {
104
170
  padding-right: var(--spacing-8);
105
171
  }
106
-
107
172
  .input--lg.input--has-icon-left {
108
173
  padding-left: var(--spacing-12);
109
174
  }
110
-
111
175
  .input--lg.input--has-icon-right {
112
176
  padding-right: var(--spacing-12);
113
177
  }
114
-
115
- /* Icons */
116
178
  .input__icon {
117
179
  position: absolute;
118
180
  display: flex;
@@ -121,11 +183,9 @@
121
183
  color: var(--color-foreground-2);
122
184
  pointer-events: none;
123
185
  }
124
-
125
186
  .input__icon--left {
126
187
  left: var(--spacing-3);
127
188
  }
128
-
129
189
  .input__icon--right {
130
190
  right: var(--spacing-3);
131
191
  pointer-events: auto;
@@ -136,45 +196,33 @@
136
196
  border-radius: var(--radius-sm);
137
197
  transition: background-color var(--transition-fast);
138
198
  }
139
-
140
199
  .input__icon--right:hover:not(:disabled) {
141
200
  background-color: var(--color-bg-3);
142
201
  color: var(--color-action-primary-hover);
143
202
  }
144
-
145
203
  .input__icon--right:active:not(:disabled) {
146
204
  background-color: var(--color-bg-2);
147
205
  color: var(--color-action-primary-active);
148
206
  }
149
-
150
207
  .input__icon--right:disabled {
151
208
  cursor: not-allowed;
152
209
  opacity: 0.6;
153
210
  }
154
-
155
- /* Focus on icon (for password toggle) */
156
211
  .input__icon--right:focus-visible {
157
212
  outline: 2px solid var(--color-action-primary);
158
213
  outline-offset: 2px;
159
214
  }
160
-
161
- /* Messages */
162
215
  .input__message {
163
216
  font-size: var(--font-size-sm);
164
217
  margin: 0;
165
218
  color: var(--color-foreground-2);
166
219
  }
167
-
168
220
  .input__message--error {
169
221
  color: hsla(var(--error-hue), var(--error-saturation), 60%, 1);
170
222
  }
171
-
172
- /* Dark theme adjustments */
173
- :root[data-theme="dark"] .input {
223
+ :root[data-theme=dark] .input {
174
224
  background-color: var(--color-bg-2);
175
225
  }
176
-
177
- /* Autofill styles */
178
226
  .input:-webkit-autofill,
179
227
  .input:-webkit-autofill:hover,
180
228
  .input:-webkit-autofill:focus {
@@ -182,44 +230,34 @@
182
230
  -webkit-box-shadow: 0 0 0 1000px var(--color-bg-1) inset;
183
231
  transition: background-color 5000s ease-in-out 0s;
184
232
  }
185
-
186
- :root[data-theme="dark"] .input:-webkit-autofill,
187
- :root[data-theme="dark"] .input:-webkit-autofill:hover,
188
- :root[data-theme="dark"] .input:-webkit-autofill:focus {
233
+ :root[data-theme=dark] .input:-webkit-autofill,
234
+ :root[data-theme=dark] .input:-webkit-autofill:hover,
235
+ :root[data-theme=dark] .input:-webkit-autofill:focus {
189
236
  -webkit-box-shadow: 0 0 0 1000px var(--color-bg-2) inset;
190
237
  }
191
-
192
- /* Hide default webkit search cancel button */
193
- .input[type="search"]::-webkit-search-cancel-button {
238
+ .input[type=search]::-webkit-search-cancel-button {
194
239
  -webkit-appearance: none;
195
240
  appearance: none;
196
241
  }
197
-
198
- /* Date/Time Picker */
199
242
  .input__datetime-picker {
200
243
  padding: var(--spacing-3);
201
244
  min-width: 300px;
202
245
  }
203
-
204
246
  .input__datetime-combined {
205
247
  display: flex;
206
248
  gap: var(--spacing-3);
207
249
  }
208
-
209
250
  .input__trigger-wrapper {
210
251
  position: relative;
211
252
  display: flex;
212
253
  align-items: center;
213
254
  width: 100%;
214
255
  }
215
-
216
- /* Date Picker */
217
256
  .date-picker {
218
257
  display: flex;
219
258
  flex-direction: column;
220
259
  gap: var(--spacing-2);
221
260
  }
222
-
223
261
  .date-picker__header {
224
262
  display: flex;
225
263
  align-items: center;
@@ -228,7 +266,6 @@
228
266
  padding-bottom: var(--spacing-2);
229
267
  border-bottom: 1px solid var(--color-foreground-2);
230
268
  }
231
-
232
269
  .date-picker__nav {
233
270
  background: none;
234
271
  border: none;
@@ -239,22 +276,18 @@
239
276
  border-radius: var(--radius-sm);
240
277
  transition: background-color var(--transition-fast);
241
278
  }
242
-
243
279
  .date-picker__nav:hover:not(:disabled) {
244
280
  background-color: var(--color-bg-3);
245
281
  }
246
-
247
282
  .date-picker__nav:disabled {
248
283
  opacity: 0.5;
249
284
  cursor: not-allowed;
250
285
  }
251
-
252
286
  .date-picker__title {
253
287
  display: flex;
254
288
  gap: var(--spacing-2);
255
289
  align-items: center;
256
290
  }
257
-
258
291
  .date-picker__select {
259
292
  background-color: var(--color-bg-1);
260
293
  color: var(--color-foreground-1);
@@ -264,14 +297,12 @@
264
297
  font-size: var(--font-size-sm);
265
298
  cursor: pointer;
266
299
  }
267
-
268
300
  .date-picker__weekdays {
269
301
  display: grid;
270
302
  grid-template-columns: repeat(7, 1fr);
271
303
  gap: var(--spacing-1);
272
304
  margin-top: var(--spacing-2);
273
305
  }
274
-
275
306
  .date-picker__weekday {
276
307
  text-align: center;
277
308
  font-size: var(--font-size-xs);
@@ -279,13 +310,11 @@
279
310
  color: var(--color-foreground-2);
280
311
  padding: var(--spacing-1);
281
312
  }
282
-
283
313
  .date-picker__days {
284
314
  display: grid;
285
315
  grid-template-columns: repeat(7, 1fr);
286
316
  gap: var(--spacing-1);
287
317
  }
288
-
289
318
  .date-picker__day {
290
319
  aspect-ratio: 1;
291
320
  background: none;
@@ -297,41 +326,33 @@
297
326
  transition: background-color var(--transition-fast);
298
327
  padding: var(--spacing-1);
299
328
  }
300
-
301
329
  .date-picker__day:hover:not(:disabled):not(.date-picker__day--empty) {
302
330
  background-color: var(--color-bg-3);
303
331
  }
304
-
305
332
  .date-picker__day--selected {
306
- background-color: var(--color-action-primary) ;
333
+ background-color: var(--color-action-primary);
307
334
  color: white;
308
335
  font-weight: 600;
309
336
  }
310
-
311
337
  .date-picker__day--empty {
312
338
  cursor: default;
313
339
  visibility: hidden;
314
340
  }
315
-
316
341
  .date-picker__day:disabled {
317
342
  opacity: 0.5;
318
343
  cursor: not-allowed;
319
344
  }
320
-
321
- /* Time Picker */
322
345
  .time-picker {
323
346
  display: flex;
324
347
  gap: var(--spacing-2);
325
348
  min-width: 240px;
326
349
  }
327
-
328
350
  .time-picker__column {
329
351
  flex: 1;
330
352
  display: flex;
331
353
  flex-direction: column;
332
354
  gap: var(--spacing-1);
333
355
  }
334
-
335
356
  .time-picker__label {
336
357
  text-align: center;
337
358
  font-size: var(--font-size-xs);
@@ -339,29 +360,12 @@
339
360
  color: var(--color-foreground-2);
340
361
  padding: var(--spacing-1);
341
362
  }
342
-
343
363
  .time-picker__scroll {
344
364
  max-height: 200px;
345
365
  overflow-y: auto;
346
- /* border: 1px solid var(--color-bg-3); */
347
366
  border-radius: var(--radius-sm);
348
- scrollbar-width: thin;
349
367
  background: var(--color-bg-2);
350
- }
351
- /*
352
- .time-picker__scroll::-webkit-scrollbar {
353
- width: 6px;
354
- }
355
-
356
- .time-picker__scroll::-webkit-scrollbar-track {
357
- background: var(--color-bg-2);
358
- }
359
- */
360
- .time-picker__scroll::-webkit-scrollbar-thumb {
361
- /* background: var(--color-foreground-2); */
362
- border-radius: var(--radius-sm);
363
368
  }
364
-
365
369
  .time-picker__item {
366
370
  width: 100%;
367
371
  background: none;
@@ -374,20 +378,103 @@
374
378
  text-align: center;
375
379
  font-variant-numeric: tabular-nums;
376
380
  }
377
-
378
381
  .time-picker__item:hover:not(:disabled) {
379
382
  background-color: var(--color-bg-3);
380
383
  }
381
-
382
384
  .time-picker__item--selected {
383
- background-color: var(--color-action-primary) ;
385
+ background-color: var(--color-action-primary);
384
386
  color: white;
385
387
  font-weight: 600;
386
388
  }
387
-
388
389
  .time-picker__item:disabled {
389
390
  opacity: 0.5;
390
391
  cursor: not-allowed;
391
392
  }
392
393
 
393
-
394
+ /* src/style/components/popover/popover.css */
395
+ .popover {
396
+ position: fixed;
397
+ background: var(--color-bg-1);
398
+ border-radius: var(--radius-base);
399
+ outline: 2px solid var(--color-bg-3);
400
+ outline-offset: -2px;
401
+ box-shadow: var(--shadow-md);
402
+ z-index: var(--z-popover);
403
+ min-width: 200px;
404
+ margin-top: var(--spacing-1);
405
+ animation: popover-slide-in var(--transition-base, 0.2s ease);
406
+ opacity: 0;
407
+ visibility: hidden;
408
+ pointer-events: none;
409
+ }
410
+ .popover--top {
411
+ animation: popover-slide-in-top var(--transition-base, 0.2s ease);
412
+ margin-bottom: var(--spacing-2);
413
+ }
414
+ .popover--bottom {
415
+ animation: popover-slide-in-bottom var(--transition-base, 0.2s ease);
416
+ margin-top: var(--spacing-2);
417
+ }
418
+ .popover--left {
419
+ animation: popover-slide-in-left var(--transition-base, 0.2s ease);
420
+ margin-right: var(--spacing-2);
421
+ }
422
+ .popover--right {
423
+ animation: popover-slide-in-right var(--transition-base, 0.2s ease);
424
+ margin-left: var(--spacing-2);
425
+ }
426
+ .popover:hover {
427
+ outline: 2px solid var(--color-primary-hover);
428
+ }
429
+ @keyframes popover-slide-in {
430
+ from {
431
+ opacity: 0;
432
+ transform: translateY(-8px);
433
+ }
434
+ to {
435
+ opacity: 1;
436
+ transform: translateY(0);
437
+ }
438
+ }
439
+ @keyframes popover-slide-in-top {
440
+ from {
441
+ opacity: 0;
442
+ transform: translateY(8px);
443
+ }
444
+ to {
445
+ opacity: 1;
446
+ transform: translateY(0);
447
+ }
448
+ }
449
+ @keyframes popover-slide-in-bottom {
450
+ from {
451
+ opacity: 0;
452
+ transform: translateY(-8px);
453
+ }
454
+ to {
455
+ opacity: 1;
456
+ transform: translateY(0);
457
+ }
458
+ }
459
+ @keyframes popover-slide-in-left {
460
+ from {
461
+ opacity: 0;
462
+ transform: translateX(8px);
463
+ }
464
+ to {
465
+ opacity: 1;
466
+ transform: translateX(0);
467
+ }
468
+ }
469
+ @keyframes popover-slide-in-right {
470
+ from {
471
+ opacity: 0;
472
+ transform: translateX(-8px);
473
+ }
474
+ to {
475
+ opacity: 1;
476
+ transform: translateX(0);
477
+ }
478
+ }
479
+ .popover__content {
480
+ }
@@ -0,0 +1,114 @@
1
+ import * as React from 'react';
2
+ import React__default from 'react';
3
+
4
+ interface InputFieldProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'> {
5
+ /**
6
+ * Input native type (text, email, password, etc.)
7
+ */
8
+ type?: string;
9
+ /**
10
+ * Label text
11
+ */
12
+ label?: string;
13
+ /**
14
+ * Helper text shown below the input
15
+ */
16
+ helperText?: string;
17
+ /**
18
+ * Error message - when present, input is in error state
19
+ */
20
+ error?: string;
21
+ /**
22
+ * Icon name from our icon library (shown on the left)
23
+ */
24
+ icon?: string;
25
+ /**
26
+ * Icon name for the right side
27
+ */
28
+ iconRight?: string;
29
+ /**
30
+ * Full width input
31
+ * @default false
32
+ */
33
+ fullWidth?: boolean;
34
+ /**
35
+ * Size variant
36
+ * @default 'md'
37
+ */
38
+ size?: 'sm' | 'md' | 'lg';
39
+ /**
40
+ * Custom class name
41
+ */
42
+ className?: string;
43
+ /**
44
+ * Right icon click handler
45
+ */
46
+ onRightIconClick?: () => void;
47
+ }
48
+
49
+ type InputType = 'text' | 'email' | 'password' | 'number' | 'tel' | 'url' | 'search' | 'date' | 'time' | 'datetime-local';
50
+ interface InputProps extends Omit<InputFieldProps, 'type' | 'iconRight' | 'onRightIconClick'> {
51
+ /**
52
+ * Input type with extended support for date/time pickers
53
+ * @default 'text'
54
+ */
55
+ type?: InputType;
56
+ /**
57
+ * Show milliseconds in time picker (only for time type)
58
+ * @default false
59
+ */
60
+ showMilliseconds?: boolean;
61
+ /**
62
+ * Minute step in time picker (only for time type)
63
+ * @default 1
64
+ */
65
+ minuteStep?: 1 | 5 | 15 | 30;
66
+ /**
67
+ * Show clear button for search inputs when they have value
68
+ * @default true
69
+ */
70
+ showClear?: boolean;
71
+ }
72
+ declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>>;
73
+
74
+ interface InputTextProps extends Omit<InputProps, 'type'> {
75
+ }
76
+ declare const InputText: React__default.ForwardRefExoticComponent<InputTextProps & React__default.RefAttributes<HTMLInputElement>>;
77
+
78
+ interface InputEmailProps extends Omit<InputProps, 'type'> {
79
+ }
80
+ declare const InputEmail: React__default.ForwardRefExoticComponent<InputEmailProps & React__default.RefAttributes<HTMLInputElement>>;
81
+
82
+ interface InputPasswordProps extends Omit<InputProps, 'type'> {
83
+ }
84
+ declare const InputPassword: React__default.ForwardRefExoticComponent<InputPasswordProps & React__default.RefAttributes<HTMLInputElement>>;
85
+
86
+ interface InputSearchProps extends Omit<InputProps, 'type'> {
87
+ }
88
+ declare const InputSearch: React__default.ForwardRefExoticComponent<InputSearchProps & React__default.RefAttributes<HTMLInputElement>>;
89
+
90
+ interface InputTelProps extends Omit<InputProps, 'type'> {
91
+ }
92
+ declare const InputTel: React__default.ForwardRefExoticComponent<InputTelProps & React__default.RefAttributes<HTMLInputElement>>;
93
+
94
+ interface InputUrlProps extends Omit<InputProps, 'type'> {
95
+ }
96
+ declare const InputUrl: React__default.ForwardRefExoticComponent<InputUrlProps & React__default.RefAttributes<HTMLInputElement>>;
97
+
98
+ interface InputNumberProps extends Omit<InputProps, 'type'> {
99
+ }
100
+ declare const InputNumber: React__default.ForwardRefExoticComponent<InputNumberProps & React__default.RefAttributes<HTMLInputElement>>;
101
+
102
+ interface InputDateProps extends Omit<InputProps, 'type'> {
103
+ }
104
+ declare const InputDate: React__default.ForwardRefExoticComponent<InputDateProps & React__default.RefAttributes<HTMLInputElement>>;
105
+
106
+ interface InputTimeProps extends Omit<InputProps, 'type'> {
107
+ }
108
+ declare const InputTime: React__default.ForwardRefExoticComponent<InputTimeProps & React__default.RefAttributes<HTMLInputElement>>;
109
+
110
+ interface InputDateTimeProps extends Omit<InputProps, 'type'> {
111
+ }
112
+ declare const InputDateTime: React__default.ForwardRefExoticComponent<InputDateTimeProps & React__default.RefAttributes<HTMLInputElement>>;
113
+
114
+ export { Input, InputDate, type InputDateProps, InputDateTime, type InputDateTimeProps, InputEmail, type InputEmailProps, InputNumber, type InputNumberProps, InputPassword, type InputPasswordProps, type InputProps, InputSearch, type InputSearchProps, InputTel, type InputTelProps, InputText, type InputTextProps, InputTime, type InputTimeProps, type InputType, InputUrl, type InputUrlProps };