@keenthemes/ktui 1.1.0 → 1.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 (258) hide show
  1. package/README.md +0 -27
  2. package/dist/ktui.js +5269 -12550
  3. package/dist/ktui.min.js +1 -1
  4. package/dist/ktui.min.js.map +1 -1
  5. package/dist/styles.css +1133 -2706
  6. package/lib/cjs/components/datatable/__tests__/pagination-reset.test.js +596 -0
  7. package/lib/cjs/components/datatable/__tests__/pagination-reset.test.js.map +1 -0
  8. package/lib/cjs/components/datatable/__tests__/race-conditions.test.js +548 -0
  9. package/lib/cjs/components/datatable/__tests__/race-conditions.test.js.map +1 -0
  10. package/lib/cjs/components/datatable/__tests__/setup.js +63 -0
  11. package/lib/cjs/components/datatable/__tests__/setup.js.map +1 -0
  12. package/lib/cjs/components/datatable/datatable.js +92 -30
  13. package/lib/cjs/components/datatable/datatable.js.map +1 -1
  14. package/lib/cjs/components/select/combobox.js +0 -2
  15. package/lib/cjs/components/select/combobox.js.map +1 -1
  16. package/lib/cjs/components/select/config.js +4 -1
  17. package/lib/cjs/components/select/config.js.map +1 -1
  18. package/lib/cjs/components/select/dropdown.js +0 -16
  19. package/lib/cjs/components/select/dropdown.js.map +1 -1
  20. package/lib/cjs/components/select/remote.js +0 -40
  21. package/lib/cjs/components/select/remote.js.map +1 -1
  22. package/lib/cjs/components/select/search.js +80 -19
  23. package/lib/cjs/components/select/search.js.map +1 -1
  24. package/lib/cjs/components/select/select.js +98 -110
  25. package/lib/cjs/components/select/select.js.map +1 -1
  26. package/lib/cjs/components/select/tags.js +0 -2
  27. package/lib/cjs/components/select/tags.js.map +1 -1
  28. package/lib/cjs/index.js +1 -10
  29. package/lib/cjs/index.js.map +1 -1
  30. package/lib/esm/components/datatable/__tests__/pagination-reset.test.js +594 -0
  31. package/lib/esm/components/datatable/__tests__/pagination-reset.test.js.map +1 -0
  32. package/lib/esm/components/datatable/__tests__/race-conditions.test.js +546 -0
  33. package/lib/esm/components/datatable/__tests__/race-conditions.test.js.map +1 -0
  34. package/lib/esm/components/datatable/__tests__/setup.js +58 -0
  35. package/lib/esm/components/datatable/__tests__/setup.js.map +1 -0
  36. package/lib/esm/components/datatable/datatable.js +92 -30
  37. package/lib/esm/components/datatable/datatable.js.map +1 -1
  38. package/lib/esm/components/select/combobox.js +0 -2
  39. package/lib/esm/components/select/combobox.js.map +1 -1
  40. package/lib/esm/components/select/config.js +4 -1
  41. package/lib/esm/components/select/config.js.map +1 -1
  42. package/lib/esm/components/select/dropdown.js +0 -16
  43. package/lib/esm/components/select/dropdown.js.map +1 -1
  44. package/lib/esm/components/select/remote.js +0 -40
  45. package/lib/esm/components/select/remote.js.map +1 -1
  46. package/lib/esm/components/select/search.js +80 -19
  47. package/lib/esm/components/select/search.js.map +1 -1
  48. package/lib/esm/components/select/select.js +98 -110
  49. package/lib/esm/components/select/select.js.map +1 -1
  50. package/lib/esm/components/select/tags.js +0 -2
  51. package/lib/esm/components/select/tags.js.map +1 -1
  52. package/lib/esm/index.js +0 -7
  53. package/lib/esm/index.js.map +1 -1
  54. package/package.json +7 -9
  55. package/src/components/alert/alert.css +188 -429
  56. package/src/components/datatable/__tests__/pagination-reset.test.ts +657 -0
  57. package/src/components/datatable/__tests__/race-conditions.test.ts +455 -0
  58. package/src/components/datatable/__tests__/setup.ts +67 -0
  59. package/src/components/datatable/datatable.ts +66 -11
  60. package/src/components/input/input.css +0 -1
  61. package/src/components/select/__tests__/ux-behaviors.test.ts +619 -0
  62. package/src/components/select/combobox.ts +0 -1
  63. package/src/components/select/config.ts +7 -1
  64. package/src/components/select/dropdown.ts +0 -24
  65. package/src/components/select/remote.ts +0 -49
  66. package/src/components/select/search.ts +85 -21
  67. package/src/components/select/select.css +0 -1
  68. package/src/components/select/select.ts +118 -149
  69. package/src/components/select/tags.ts +0 -1
  70. package/src/components/select/variants.css +4 -0
  71. package/src/components/textarea/textarea.css +0 -1
  72. package/src/index.ts +0 -10
  73. package/styles.css +0 -1
  74. package/lib/cjs/components/alert/alert.js +0 -1025
  75. package/lib/cjs/components/alert/alert.js.map +0 -1
  76. package/lib/cjs/components/alert/index.js +0 -20
  77. package/lib/cjs/components/alert/index.js.map +0 -1
  78. package/lib/cjs/components/alert/templates.js +0 -120
  79. package/lib/cjs/components/alert/templates.js.map +0 -1
  80. package/lib/cjs/components/alert/types.js +0 -7
  81. package/lib/cjs/components/alert/types.js.map +0 -1
  82. package/lib/cjs/components/datepicker/config/config.js +0 -42
  83. package/lib/cjs/components/datepicker/config/config.js.map +0 -1
  84. package/lib/cjs/components/datepicker/config/index.js +0 -24
  85. package/lib/cjs/components/datepicker/config/index.js.map +0 -1
  86. package/lib/cjs/components/datepicker/config/interfaces.js +0 -7
  87. package/lib/cjs/components/datepicker/config/interfaces.js.map +0 -1
  88. package/lib/cjs/components/datepicker/config/types.js +0 -7
  89. package/lib/cjs/components/datepicker/config/types.js.map +0 -1
  90. package/lib/cjs/components/datepicker/core/event-manager.js +0 -135
  91. package/lib/cjs/components/datepicker/core/event-manager.js.map +0 -1
  92. package/lib/cjs/components/datepicker/core/focus-manager.js +0 -167
  93. package/lib/cjs/components/datepicker/core/focus-manager.js.map +0 -1
  94. package/lib/cjs/components/datepicker/core/helpers.js +0 -219
  95. package/lib/cjs/components/datepicker/core/helpers.js.map +0 -1
  96. package/lib/cjs/components/datepicker/core/index.js +0 -25
  97. package/lib/cjs/components/datepicker/core/index.js.map +0 -1
  98. package/lib/cjs/components/datepicker/core/unified-state-manager.js +0 -394
  99. package/lib/cjs/components/datepicker/core/unified-state-manager.js.map +0 -1
  100. package/lib/cjs/components/datepicker/datepicker.js +0 -2252
  101. package/lib/cjs/components/datepicker/datepicker.js.map +0 -1
  102. package/lib/cjs/components/datepicker/index.js +0 -24
  103. package/lib/cjs/components/datepicker/index.js.map +0 -1
  104. package/lib/cjs/components/datepicker/ui/index.js +0 -23
  105. package/lib/cjs/components/datepicker/ui/index.js.map +0 -1
  106. package/lib/cjs/components/datepicker/ui/input/dropdown.js +0 -489
  107. package/lib/cjs/components/datepicker/ui/input/dropdown.js.map +0 -1
  108. package/lib/cjs/components/datepicker/ui/input/index.js +0 -23
  109. package/lib/cjs/components/datepicker/ui/input/index.js.map +0 -1
  110. package/lib/cjs/components/datepicker/ui/input/segmented-input.js +0 -640
  111. package/lib/cjs/components/datepicker/ui/input/segmented-input.js.map +0 -1
  112. package/lib/cjs/components/datepicker/ui/renderers/calendar.js +0 -446
  113. package/lib/cjs/components/datepicker/ui/renderers/calendar.js.map +0 -1
  114. package/lib/cjs/components/datepicker/ui/renderers/footer.js +0 -42
  115. package/lib/cjs/components/datepicker/ui/renderers/footer.js.map +0 -1
  116. package/lib/cjs/components/datepicker/ui/renderers/header.js +0 -32
  117. package/lib/cjs/components/datepicker/ui/renderers/header.js.map +0 -1
  118. package/lib/cjs/components/datepicker/ui/renderers/index.js +0 -25
  119. package/lib/cjs/components/datepicker/ui/renderers/index.js.map +0 -1
  120. package/lib/cjs/components/datepicker/ui/renderers/time-picker.js +0 -384
  121. package/lib/cjs/components/datepicker/ui/renderers/time-picker.js.map +0 -1
  122. package/lib/cjs/components/datepicker/ui/templates/index.js +0 -22
  123. package/lib/cjs/components/datepicker/ui/templates/index.js.map +0 -1
  124. package/lib/cjs/components/datepicker/ui/templates/templates.js +0 -253
  125. package/lib/cjs/components/datepicker/ui/templates/templates.js.map +0 -1
  126. package/lib/cjs/components/datepicker/utils/date-formatters.js +0 -88
  127. package/lib/cjs/components/datepicker/utils/date-formatters.js.map +0 -1
  128. package/lib/cjs/components/datepicker/utils/date-utils.js +0 -194
  129. package/lib/cjs/components/datepicker/utils/date-utils.js.map +0 -1
  130. package/lib/cjs/components/datepicker/utils/index.js +0 -24
  131. package/lib/cjs/components/datepicker/utils/index.js.map +0 -1
  132. package/lib/cjs/components/datepicker/utils/time-utils.js +0 -213
  133. package/lib/cjs/components/datepicker/utils/time-utils.js.map +0 -1
  134. package/lib/esm/components/alert/alert.js +0 -1022
  135. package/lib/esm/components/alert/alert.js.map +0 -1
  136. package/lib/esm/components/alert/index.js +0 -4
  137. package/lib/esm/components/alert/index.js.map +0 -1
  138. package/lib/esm/components/alert/templates.js +0 -112
  139. package/lib/esm/components/alert/templates.js.map +0 -1
  140. package/lib/esm/components/alert/types.js +0 -6
  141. package/lib/esm/components/alert/types.js.map +0 -1
  142. package/lib/esm/components/datepicker/config/config.js +0 -39
  143. package/lib/esm/components/datepicker/config/config.js.map +0 -1
  144. package/lib/esm/components/datepicker/config/index.js +0 -8
  145. package/lib/esm/components/datepicker/config/index.js.map +0 -1
  146. package/lib/esm/components/datepicker/config/interfaces.js +0 -6
  147. package/lib/esm/components/datepicker/config/interfaces.js.map +0 -1
  148. package/lib/esm/components/datepicker/config/types.js +0 -6
  149. package/lib/esm/components/datepicker/config/types.js.map +0 -1
  150. package/lib/esm/components/datepicker/core/event-manager.js +0 -133
  151. package/lib/esm/components/datepicker/core/event-manager.js.map +0 -1
  152. package/lib/esm/components/datepicker/core/focus-manager.js +0 -164
  153. package/lib/esm/components/datepicker/core/focus-manager.js.map +0 -1
  154. package/lib/esm/components/datepicker/core/helpers.js +0 -211
  155. package/lib/esm/components/datepicker/core/helpers.js.map +0 -1
  156. package/lib/esm/components/datepicker/core/index.js +0 -9
  157. package/lib/esm/components/datepicker/core/index.js.map +0 -1
  158. package/lib/esm/components/datepicker/core/unified-state-manager.js +0 -391
  159. package/lib/esm/components/datepicker/core/unified-state-manager.js.map +0 -1
  160. package/lib/esm/components/datepicker/datepicker.js +0 -2248
  161. package/lib/esm/components/datepicker/datepicker.js.map +0 -1
  162. package/lib/esm/components/datepicker/index.js +0 -7
  163. package/lib/esm/components/datepicker/index.js.map +0 -1
  164. package/lib/esm/components/datepicker/ui/index.js +0 -7
  165. package/lib/esm/components/datepicker/ui/index.js.map +0 -1
  166. package/lib/esm/components/datepicker/ui/input/dropdown.js +0 -486
  167. package/lib/esm/components/datepicker/ui/input/dropdown.js.map +0 -1
  168. package/lib/esm/components/datepicker/ui/input/index.js +0 -7
  169. package/lib/esm/components/datepicker/ui/input/index.js.map +0 -1
  170. package/lib/esm/components/datepicker/ui/input/segmented-input.js +0 -637
  171. package/lib/esm/components/datepicker/ui/input/segmented-input.js.map +0 -1
  172. package/lib/esm/components/datepicker/ui/renderers/calendar.js +0 -443
  173. package/lib/esm/components/datepicker/ui/renderers/calendar.js.map +0 -1
  174. package/lib/esm/components/datepicker/ui/renderers/footer.js +0 -39
  175. package/lib/esm/components/datepicker/ui/renderers/footer.js.map +0 -1
  176. package/lib/esm/components/datepicker/ui/renderers/header.js +0 -29
  177. package/lib/esm/components/datepicker/ui/renderers/header.js.map +0 -1
  178. package/lib/esm/components/datepicker/ui/renderers/index.js +0 -9
  179. package/lib/esm/components/datepicker/ui/renderers/index.js.map +0 -1
  180. package/lib/esm/components/datepicker/ui/renderers/time-picker.js +0 -381
  181. package/lib/esm/components/datepicker/ui/renderers/time-picker.js.map +0 -1
  182. package/lib/esm/components/datepicker/ui/templates/index.js +0 -6
  183. package/lib/esm/components/datepicker/ui/templates/index.js.map +0 -1
  184. package/lib/esm/components/datepicker/ui/templates/templates.js +0 -242
  185. package/lib/esm/components/datepicker/ui/templates/templates.js.map +0 -1
  186. package/lib/esm/components/datepicker/utils/date-formatters.js +0 -83
  187. package/lib/esm/components/datepicker/utils/date-formatters.js.map +0 -1
  188. package/lib/esm/components/datepicker/utils/date-utils.js +0 -184
  189. package/lib/esm/components/datepicker/utils/date-utils.js.map +0 -1
  190. package/lib/esm/components/datepicker/utils/index.js +0 -8
  191. package/lib/esm/components/datepicker/utils/index.js.map +0 -1
  192. package/lib/esm/components/datepicker/utils/time-utils.js +0 -201
  193. package/lib/esm/components/datepicker/utils/time-utils.js.map +0 -1
  194. package/src/components/alert/alert.ts +0 -990
  195. package/src/components/alert/index.ts +0 -4
  196. package/src/components/alert/templates.ts +0 -110
  197. package/src/components/alert/tests/accessibility/aria-roles.test.ts +0 -19
  198. package/src/components/alert/tests/accessibility/focus-management.test.ts +0 -19
  199. package/src/components/alert/tests/accessibility/keyboard-nav.test.ts +0 -22
  200. package/src/components/alert/tests/actions/confirm-cancel.test.ts +0 -122
  201. package/src/components/alert/tests/actions/input-field.test.ts +0 -180
  202. package/src/components/alert/tests/alert.basic.test.ts +0 -126
  203. package/src/components/alert/tests/alert.config.test.ts +0 -75
  204. package/src/components/alert/tests/alert.templates.test.ts +0 -17
  205. package/src/components/alert/tests/config/attribute-config.test.ts +0 -94
  206. package/src/components/alert/tests/config/json-config.test.ts +0 -119
  207. package/src/components/alert/tests/config/merging.test.ts +0 -89
  208. package/src/components/alert/tests/dismissal/auto-dismiss.test.ts +0 -96
  209. package/src/components/alert/tests/dismissal/escape-key-dismiss.test.ts +0 -105
  210. package/src/components/alert/tests/dismissal/manual-dismiss.test.ts +0 -90
  211. package/src/components/alert/tests/dismissal/outside-click-dismiss.test.ts +0 -91
  212. package/src/components/alert/tests/edge-cases/invalid-config.test.ts +0 -19
  213. package/src/components/alert/tests/edge-cases/multiple-alerts.test.ts +0 -19
  214. package/src/components/alert/tests/rendering/custom-content.test.ts +0 -81
  215. package/src/components/alert/tests/rendering/info-alert.test.ts +0 -84
  216. package/src/components/alert/tests/rendering/success-alert.test.ts +0 -100
  217. package/src/components/alert/tests/templates/default-templates.test.ts +0 -16
  218. package/src/components/alert/tests/templates/user-templates.test.ts +0 -16
  219. package/src/components/alert/types.ts +0 -145
  220. package/src/components/datepicker/__tests__/datepicker-events.test.ts +0 -356
  221. package/src/components/datepicker/__tests__/datepicker-init.test.ts +0 -343
  222. package/src/components/datepicker/__tests__/datepicker-integration.test.ts +0 -435
  223. package/src/components/datepicker/__tests__/datepicker-timezone.test.ts +0 -220
  224. package/src/components/datepicker/__tests__/segmented-input-focus.test.ts +0 -380
  225. package/src/components/datepicker/__tests__/selective-state-updates.test.ts +0 -400
  226. package/src/components/datepicker/__tests__/state-manager.test.ts +0 -421
  227. package/src/components/datepicker/__tests__/time-preservation.test.ts +0 -387
  228. package/src/components/datepicker/config/config.ts +0 -40
  229. package/src/components/datepicker/config/index.ts +0 -8
  230. package/src/components/datepicker/config/interfaces.ts +0 -82
  231. package/src/components/datepicker/config/types.ts +0 -188
  232. package/src/components/datepicker/core/event-manager.ts +0 -159
  233. package/src/components/datepicker/core/focus-manager.ts +0 -201
  234. package/src/components/datepicker/core/helpers.ts +0 -231
  235. package/src/components/datepicker/core/index.ts +0 -9
  236. package/src/components/datepicker/core/unified-state-manager.ts +0 -459
  237. package/src/components/datepicker/datepicker.css +0 -435
  238. package/src/components/datepicker/datepicker.ts +0 -2548
  239. package/src/components/datepicker/index.ts +0 -8
  240. package/src/components/datepicker/ui/index.ts +0 -7
  241. package/src/components/datepicker/ui/input/dropdown.ts +0 -552
  242. package/src/components/datepicker/ui/input/index.ts +0 -7
  243. package/src/components/datepicker/ui/input/segmented-input.ts +0 -638
  244. package/src/components/datepicker/ui/renderers/__tests__/calendar-optimizations.test.ts +0 -611
  245. package/src/components/datepicker/ui/renderers/calendar.ts +0 -530
  246. package/src/components/datepicker/ui/renderers/footer.ts +0 -43
  247. package/src/components/datepicker/ui/renderers/header.ts +0 -33
  248. package/src/components/datepicker/ui/renderers/index.ts +0 -9
  249. package/src/components/datepicker/ui/renderers/time-picker.ts +0 -438
  250. package/src/components/datepicker/ui/templates/index.ts +0 -6
  251. package/src/components/datepicker/ui/templates/templates.ts +0 -306
  252. package/src/components/datepicker/utils/__tests__/date-formatters.test.ts +0 -160
  253. package/src/components/datepicker/utils/__tests__/date-utils-keys.test.ts +0 -86
  254. package/src/components/datepicker/utils/__tests__/date-utils-timezone.test.ts +0 -215
  255. package/src/components/datepicker/utils/date-formatters.ts +0 -85
  256. package/src/components/datepicker/utils/date-utils.ts +0 -172
  257. package/src/components/datepicker/utils/index.ts +0 -8
  258. package/src/components/datepicker/utils/time-utils.ts +0 -221
@@ -1,435 +0,0 @@
1
- /**
2
- * KTUI - Free & Open-Source Tailwind UI Components by Keenthemes
3
- * Copyright 2025 by Keenthemes Inc
4
- */
5
-
6
- /* Input Wrapper */
7
- @layer utilities {
8
- [data-kt-datepicker-input-wrapper] {
9
- @apply relative inline-flex items-center w-full cursor-pointer;
10
- @apply h-8.5 rounded-md border border-input bg-background shadow-xs shadow-[rgba(0,0,0,0.05)] transition-[color,box-shadow];
11
- @apply focus-within:ring-ring/30 focus-within:border-ring focus-within:outline-none focus-within:ring-[3px];
12
- @apply hover:border-ring/50;
13
- @apply disabled:cursor-not-allowed disabled:opacity-60;
14
- @apply aria-invalid:border-destructive/60 aria-invalid:ring-destructive/10;
15
- padding-left: 10px;
16
- padding-right: 10px;
17
- }
18
-
19
- /* Segmented Input Container */
20
- [data-kt-datepicker-segmented-input] {
21
- @apply inline-flex items-center flex-1 min-w-0;
22
- @apply border-0 bg-transparent shadow-none;
23
- @apply focus-within:ring-0 focus-within:border-0;
24
- @apply hover:border-0;
25
- @apply text-[0.8125rem] leading-(--text-sm--line-height);
26
- /* Remove spacing between inline-flex children */
27
- font-size: 0;
28
- letter-spacing: 0;
29
- word-spacing: 0;
30
- }
31
-
32
- /* Date Range Input Container - tighter spacing */
33
- [data-kt-datepicker-segmented-range-input] {
34
- @apply gap-0.5;
35
- }
36
-
37
- /* Date Segment (Day/Month/Year) */
38
- [data-segment] {
39
- @apply inline-flex items-center justify-center min-w-[2rem] px-0 py-0 text-sm font-medium text-foreground;
40
- @apply rounded-sm transition-all outline-none;
41
- @apply focus:bg-accent focus:text-accent-foreground focus:ring-2 focus:ring-ring/50;
42
- @apply hover:bg-accent/50;
43
- @apply disabled:cursor-not-allowed disabled:opacity-50;
44
- @apply aria-invalid:bg-destructive/10 aria-invalid:text-destructive;
45
- /* Restore font-size from parent (font-size: 0 trick) */
46
- font-size: 0.875rem; /* text-sm equivalent */
47
- letter-spacing: normal;
48
- word-spacing: normal;
49
- }
50
-
51
- [data-segment][contenteditable="true"] {
52
- @apply cursor-text;
53
- /* Reset browser defaults for contenteditable spacing */
54
- padding: 0 !important;
55
- margin: 0 !important;
56
- line-height: 1.5;
57
- white-space: nowrap !important;
58
- overflow: hidden;
59
- /* Prevent browser default contenteditable spacing */
60
- -webkit-user-modify: read-write-plaintext-only;
61
- user-modify: read-write-plaintext-only;
62
- /* Remove any default outline spacing */
63
- outline: none;
64
- outline-offset: 0;
65
- /* Prevent any text selection spacing */
66
- text-indent: 0;
67
- /* Ensure no extra spacing from flex alignment - use flex-start to minimize spacing */
68
- align-items: center;
69
- justify-content: flex-start;
70
- /* Remove any default browser spacing for contenteditable */
71
- -webkit-tap-highlight-color: transparent;
72
- /* Ensure text node has no extra spacing */
73
- word-spacing: 0;
74
- letter-spacing: normal;
75
- /* Prevent empty contenteditable from collapsing */
76
- min-height: 1em;
77
- /* Remove any default browser margins on focus */
78
- -webkit-margin-before: 0;
79
- -webkit-margin-after: 0;
80
- -webkit-margin-start: 0;
81
- -webkit-margin-end: 0;
82
- /* Reduce min-width when editing to minimize spacing */
83
- min-width: fit-content;
84
- width: fit-content;
85
- }
86
-
87
- /* Remove spacing from text nodes inside contenteditable segments */
88
- [data-segment][contenteditable="true"] * {
89
- margin: 0;
90
- padding: 0;
91
- display: inline;
92
- }
93
-
94
- /* Handle empty contenteditable to prevent spacing issues */
95
- [data-segment][contenteditable="true"]:empty::before {
96
- content: "\200B"; /* Zero-width space to prevent collapsing */
97
- display: inline-block;
98
- }
99
-
100
- [data-segment][contenteditable="true"]:focus {
101
- @apply bg-accent text-accent-foreground ring-2 ring-ring/50;
102
- }
103
-
104
- /* Add left spacing for time input group - hour segment */
105
- /* Target hour segment that comes after a separator (space between date and time) */
106
- [data-segment-separator] + [data-segment="hour"] {
107
- @apply ml-3;
108
- }
109
-
110
- /* Remove left spacing if hour is the very first segment (time-only input) */
111
- [data-kt-datepicker-segmented-input] > [data-segment="hour"]:first-child {
112
- @apply ml-0;
113
- }
114
-
115
- /* Add left spacing for AM/PM segment when it follows time segments (space separator) */
116
- [data-segment-separator] + [data-segment="ampm"] {
117
- @apply ml-3;
118
- }
119
-
120
- /* Segment Separator */
121
- [data-segment-separator] {
122
- @apply inline-flex items-center text-muted-foreground select-none pointer-events-none;
123
- @apply text-sm font-medium;
124
- /* Restore font-size from parent (font-size: 0 trick) */
125
- font-size: 0.875rem; /* text-sm equivalent */
126
- letter-spacing: normal;
127
- word-spacing: normal;
128
- /* Ensure space separators are visible */
129
- white-space: pre;
130
- /* Ensure empty separators (whitespace) have minimum width to contribute to spacing */
131
- min-width: 0.25rem;
132
- }
133
-
134
- /* Calendar Button */
135
- [data-kt-datepicker-calendar-btn] {
136
- @apply absolute right-0 top-0 bottom-0;
137
- @apply inline-flex items-center justify-center shrink-0;
138
- @apply w-10 h-full rounded-r-md;
139
- @apply text-muted-foreground transition-all;
140
- @apply hover:bg-accent/50 hover:text-accent-foreground;
141
- @apply focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/50 focus-visible:ring-inset;
142
- @apply active:bg-accent/70;
143
- @apply border-0 bg-transparent;
144
- cursor: pointer;
145
- }
146
-
147
- [data-kt-datepicker-calendar-btn] svg {
148
- @apply w-4 h-4;
149
- }
150
-
151
- [data-kt-datepicker-calendar-btn][aria-expanded="true"] {
152
- @apply bg-accent/50 text-accent-foreground;
153
- }
154
-
155
- /* Placeholder */
156
- [data-kt-datepicker-placeholder] {
157
- @apply text-muted-foreground pointer-events-none select-none;
158
- }
159
-
160
- /* Display Wrapper */
161
- [data-kt-datepicker-display-wrapper] {
162
- @apply inline-flex items-center min-h-[2rem] px-3 py-1.5 text-sm text-foreground;
163
- }
164
-
165
- [data-kt-datepicker-display-element] {
166
- @apply text-foreground;
167
- }
168
- }
169
-
170
- /* Dropdown Container */
171
- @layer utilities {
172
- [data-kt-datepicker-dropdown] {
173
- @apply absolute z-50 mt-1.5 rounded-md border border-border/60 bg-popover text-popover-foreground;
174
- @apply px-3 py-2;
175
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
176
- /* Default width for single month calendar - will be adjusted dynamically for multiple months */
177
- width: 20rem; /* 320px - standard calendar width */
178
- min-width: 20rem;
179
- /* Remove max-width to allow flexible width for multiple months */
180
- }
181
-
182
- [data-kt-datepicker-dropdown].hidden {
183
- @apply hidden;
184
- }
185
-
186
- [data-kt-datepicker-dropdown].open {
187
- @apply block;
188
- }
189
-
190
- /* Panel Container */
191
- [data-kt-datepicker-panel] {
192
- @apply flex flex-col gap-1.5;
193
- }
194
-
195
- /* Header */
196
- [data-kt-datepicker-header] {
197
- @apply flex items-center justify-between gap-2 px-0.5 pb-1.5;
198
- @apply border-0;
199
- height: 34px;
200
- }
201
-
202
- [data-kt-datepicker-month-year] {
203
- @apply text-sm font-medium text-foreground select-none;
204
- @apply flex-1 text-center;
205
- }
206
-
207
- /* Navigation Buttons */
208
- [data-kt-datepicker-prev],
209
- [data-kt-datepicker-next] {
210
- @apply inline-flex items-center justify-center shrink-0;
211
- @apply w-7 h-7 rounded-md transition-all duration-150 cursor-pointer;
212
- @apply text-muted-foreground;
213
- @apply hover:bg-accent/60 hover:text-foreground;
214
- @apply focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/50 focus-visible:ring-offset-1;
215
- @apply active:scale-95 disabled:opacity-40 disabled:cursor-not-allowed disabled:hover:bg-transparent;
216
- }
217
-
218
- [data-kt-datepicker-prev] svg,
219
- [data-kt-datepicker-next] svg {
220
- @apply w-3.5 h-3.5;
221
- }
222
-
223
- /* Calendar Table */
224
- [data-kt-datepicker-calendar-table] {
225
- @apply w-full border-collapse;
226
- }
227
-
228
- [data-kt-datepicker-calendar-table] thead {
229
- @apply border-0;
230
- }
231
-
232
- [data-kt-datepicker-calendar-table] th {
233
- @apply py-1 px-0.5 text-xs font-medium text-muted-foreground text-center uppercase;
234
- @apply w-[calc(100%/7)];
235
- }
236
-
237
- [data-kt-datepicker-calendar-body] {
238
- @apply border-0;
239
- }
240
-
241
- [data-kt-datepicker-calendar-row] {
242
- @apply border-0;
243
- }
244
-
245
- /* Day Cell */
246
- [data-kt-datepicker-day] {
247
- @apply py-0.5 px-1 text-center;
248
- }
249
-
250
- [data-kt-datepicker-day] button {
251
- @apply w-full aspect-square rounded-md text-sm font-medium transition-all duration-150;
252
- @apply text-foreground cursor-pointer;
253
- @apply hover:bg-accent/60 hover:text-accent-foreground;
254
- @apply focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring/50 focus-visible:ring-offset-0;
255
- @apply active:scale-[0.97] disabled:opacity-40 disabled:cursor-not-allowed disabled:hover:bg-transparent;
256
- }
257
-
258
- [data-kt-datepicker-day][data-today="true"] button {
259
- @apply bg-primary/8 text-primary font-semibold;
260
- @apply hover:bg-primary/15;
261
- }
262
-
263
- /* Selected state - circular background like Flatpickr */
264
- [data-kt-datepicker-day][data-kt-selected="true"] button,
265
- [data-kt-datepicker-day].active button,
266
- [data-kt-datepicker-day][aria-selected="true"] button {
267
- @apply bg-primary text-primary-foreground font-semibold;
268
- @apply hover:bg-primary/90;
269
- }
270
-
271
- /* Selected + Today combination - selected takes precedence */
272
- [data-kt-datepicker-day][data-kt-selected="true"][data-today="true"] button,
273
- [data-kt-datepicker-day].active[data-today="true"] button,
274
- [data-kt-datepicker-day][aria-selected="true"][data-today="true"] button {
275
- @apply bg-primary text-primary-foreground font-semibold;
276
- @apply hover:bg-primary/90;
277
- @apply border-0;
278
- }
279
-
280
- /* Hover state */
281
- [data-kt-datepicker-day][data-kt-hover] button {
282
- @apply bg-accent text-accent-foreground;
283
- }
284
-
285
- /* Hover + Selected combination */
286
- [data-kt-datepicker-day][data-kt-selected="true"][data-kt-hover] button {
287
- @apply bg-primary/90 text-primary-foreground;
288
- }
289
-
290
- /* Range hover preview - dates in hover range */
291
- [data-kt-datepicker-day][data-kt-hover-range] button {
292
- @apply bg-accent/40 text-accent-foreground;
293
- }
294
-
295
- /* Range hover preview + Selected (start date) */
296
- [data-kt-datepicker-day][data-kt-selected="true"][data-kt-hover-range] button {
297
- @apply bg-primary/80 text-primary-foreground;
298
- }
299
-
300
- /* Range hover preview + Hover combination */
301
- [data-kt-datepicker-day][data-kt-hover-range][data-kt-hover] button {
302
- @apply bg-accent/60 text-accent-foreground;
303
- }
304
-
305
- [data-kt-datepicker-day][data-outside="true"] button {
306
- @apply text-muted-foreground opacity-50 cursor-default;
307
- @apply hover:opacity-70 hover:bg-accent/40;
308
- }
309
-
310
- [data-kt-datepicker-day][tabindex="0"] button {
311
- @apply ring-1 ring-ring/50 ring-offset-0;
312
- }
313
-
314
- /* Footer */
315
- [data-kt-datepicker-footer] {
316
- @apply flex items-center justify-end gap-2 pt-1.5 mt-1.5;
317
- @apply border-t border-border/40;
318
- }
319
-
320
- [data-kt-datepicker-today],
321
- [data-kt-datepicker-clear],
322
- [data-kt-datepicker-apply] {
323
- @apply inline-flex items-center justify-center;
324
- @apply h-7 px-3 text-xs font-medium rounded-md transition-all duration-150 cursor-pointer;
325
- @apply focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/50 focus-visible:ring-offset-2;
326
- @apply active:scale-[0.97] disabled:opacity-50 disabled:cursor-not-allowed;
327
- }
328
-
329
- [data-kt-datepicker-today] {
330
- @apply text-muted-foreground hover:text-foreground hover:bg-accent/70;
331
- }
332
-
333
- [data-kt-datepicker-clear] {
334
- @apply text-muted-foreground hover:text-destructive hover:bg-destructive/10;
335
- }
336
-
337
- [data-kt-datepicker-apply] {
338
- @apply bg-primary text-primary-foreground;
339
- @apply hover:bg-primary/95;
340
- box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
341
- }
342
-
343
- /* Multi-Month Container */
344
- [data-kt-datepicker-multimonth-container] {
345
- @apply flex flex-col md:flex-row gap-4;
346
- }
347
-
348
- /* Time Picker */
349
- [data-kt-datepicker-time-picker] {
350
- @apply flex flex-col gap-1.5 p-2 border-t border-border/40;
351
- }
352
-
353
- [data-kt-datepicker-time-display] {
354
- @apply text-center text-lg font-semibold text-foreground;
355
- }
356
-
357
- [data-kt-datepicker-time-controls] {
358
- @apply flex items-center justify-center gap-2;
359
- }
360
-
361
- [data-kt-datepicker-time-unit] {
362
- @apply flex flex-col items-center gap-1;
363
- }
364
-
365
- [data-kt-datepicker-time-up],
366
- [data-kt-datepicker-time-down] {
367
- @apply inline-flex items-center justify-center;
368
- @apply w-8 h-6 rounded-md transition-all;
369
- @apply text-muted-foreground hover:text-foreground;
370
- @apply hover:bg-accent hover:text-accent-foreground;
371
- @apply focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/50;
372
- @apply active:scale-95 disabled:opacity-50 disabled:cursor-not-allowed;
373
- }
374
-
375
- [data-kt-datepicker-time-value] {
376
- @apply text-sm font-semibold text-foreground;
377
- }
378
-
379
- [data-kt-datepicker-time-separator] {
380
- @apply text-muted-foreground text-sm font-medium;
381
- }
382
-
383
- [data-kt-datepicker-ampm-control] {
384
- @apply flex flex-col gap-1 ml-2;
385
- }
386
-
387
- [data-kt-datepicker-ampm-button] {
388
- @apply inline-flex items-center justify-center;
389
- @apply w-10 h-6 rounded-md text-xs font-medium transition-all;
390
- @apply text-muted-foreground hover:text-foreground;
391
- @apply hover:bg-accent hover:text-accent-foreground;
392
- @apply focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/50;
393
- @apply active:scale-95 disabled:opacity-50 disabled:cursor-not-allowed;
394
- }
395
-
396
- /* Multi-Date Tag */
397
- [data-kt-datepicker-multidate-tag] {
398
- @apply inline-flex items-center gap-1.5 px-2 py-1 rounded-md;
399
- @apply bg-accent text-accent-foreground text-xs font-medium;
400
- }
401
-
402
- [data-kt-datepicker-multidate-tag] button {
403
- @apply inline-flex items-center justify-center;
404
- @apply w-4 h-4 rounded-sm transition-all;
405
- @apply text-muted-foreground hover:text-destructive;
406
- @apply hover:bg-destructive/10;
407
- @apply focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring;
408
- }
409
-
410
- /* Empty State */
411
- [data-kt-datepicker-empty] {
412
- @apply text-center py-8 text-sm text-muted-foreground;
413
- }
414
-
415
- /* Live Region (Accessibility) */
416
- [data-kt-datepicker-live] {
417
- @apply absolute w-px h-px p-0 -m-px overflow-hidden whitespace-nowrap border-0;
418
- clip: rect(0, 0, 0, 0);
419
- }
420
- }
421
-
422
- /* Dark Mode Styles */
423
- @layer utilities {
424
- .dark [data-kt-datepicker-input-wrapper] {
425
- @apply aria-invalid:border-destructive aria-invalid:ring-destructive/20;
426
- }
427
-
428
- .dark [data-kt-datepicker-dropdown] {
429
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25);
430
- }
431
-
432
- /* Primary colors use system CSS variables - no dark mode overrides needed */
433
- }
434
-
435
-