@keenthemes/ktui 1.1.0 → 1.1.1

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 (222) hide show
  1. package/README.md +0 -27
  2. package/dist/ktui.js +6790 -14063
  3. package/dist/ktui.min.js +1 -1
  4. package/dist/ktui.min.js.map +1 -1
  5. package/dist/styles.css +1132 -2705
  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/index.js +1 -10
  15. package/lib/cjs/index.js.map +1 -1
  16. package/lib/esm/components/datatable/__tests__/pagination-reset.test.js +594 -0
  17. package/lib/esm/components/datatable/__tests__/pagination-reset.test.js.map +1 -0
  18. package/lib/esm/components/datatable/__tests__/race-conditions.test.js +546 -0
  19. package/lib/esm/components/datatable/__tests__/race-conditions.test.js.map +1 -0
  20. package/lib/esm/components/datatable/__tests__/setup.js +58 -0
  21. package/lib/esm/components/datatable/__tests__/setup.js.map +1 -0
  22. package/lib/esm/components/datatable/datatable.js +92 -30
  23. package/lib/esm/components/datatable/datatable.js.map +1 -1
  24. package/lib/esm/index.js +0 -7
  25. package/lib/esm/index.js.map +1 -1
  26. package/package.json +7 -9
  27. package/src/components/alert/alert.css +188 -429
  28. package/src/components/datatable/__tests__/pagination-reset.test.ts +657 -0
  29. package/src/components/datatable/__tests__/race-conditions.test.ts +455 -0
  30. package/src/components/datatable/__tests__/setup.ts +67 -0
  31. package/src/components/datatable/datatable.ts +66 -11
  32. package/src/components/input/input.css +0 -1
  33. package/src/components/select/select.css +0 -1
  34. package/src/components/select/variants.css +4 -0
  35. package/src/components/textarea/textarea.css +0 -1
  36. package/src/index.ts +0 -10
  37. package/styles.css +0 -1
  38. package/lib/cjs/components/alert/alert.js +0 -1025
  39. package/lib/cjs/components/alert/alert.js.map +0 -1
  40. package/lib/cjs/components/alert/index.js +0 -20
  41. package/lib/cjs/components/alert/index.js.map +0 -1
  42. package/lib/cjs/components/alert/templates.js +0 -120
  43. package/lib/cjs/components/alert/templates.js.map +0 -1
  44. package/lib/cjs/components/alert/types.js +0 -7
  45. package/lib/cjs/components/alert/types.js.map +0 -1
  46. package/lib/cjs/components/datepicker/config/config.js +0 -42
  47. package/lib/cjs/components/datepicker/config/config.js.map +0 -1
  48. package/lib/cjs/components/datepicker/config/index.js +0 -24
  49. package/lib/cjs/components/datepicker/config/index.js.map +0 -1
  50. package/lib/cjs/components/datepicker/config/interfaces.js +0 -7
  51. package/lib/cjs/components/datepicker/config/interfaces.js.map +0 -1
  52. package/lib/cjs/components/datepicker/config/types.js +0 -7
  53. package/lib/cjs/components/datepicker/config/types.js.map +0 -1
  54. package/lib/cjs/components/datepicker/core/event-manager.js +0 -135
  55. package/lib/cjs/components/datepicker/core/event-manager.js.map +0 -1
  56. package/lib/cjs/components/datepicker/core/focus-manager.js +0 -167
  57. package/lib/cjs/components/datepicker/core/focus-manager.js.map +0 -1
  58. package/lib/cjs/components/datepicker/core/helpers.js +0 -219
  59. package/lib/cjs/components/datepicker/core/helpers.js.map +0 -1
  60. package/lib/cjs/components/datepicker/core/index.js +0 -25
  61. package/lib/cjs/components/datepicker/core/index.js.map +0 -1
  62. package/lib/cjs/components/datepicker/core/unified-state-manager.js +0 -394
  63. package/lib/cjs/components/datepicker/core/unified-state-manager.js.map +0 -1
  64. package/lib/cjs/components/datepicker/datepicker.js +0 -2252
  65. package/lib/cjs/components/datepicker/datepicker.js.map +0 -1
  66. package/lib/cjs/components/datepicker/index.js +0 -24
  67. package/lib/cjs/components/datepicker/index.js.map +0 -1
  68. package/lib/cjs/components/datepicker/ui/index.js +0 -23
  69. package/lib/cjs/components/datepicker/ui/index.js.map +0 -1
  70. package/lib/cjs/components/datepicker/ui/input/dropdown.js +0 -489
  71. package/lib/cjs/components/datepicker/ui/input/dropdown.js.map +0 -1
  72. package/lib/cjs/components/datepicker/ui/input/index.js +0 -23
  73. package/lib/cjs/components/datepicker/ui/input/index.js.map +0 -1
  74. package/lib/cjs/components/datepicker/ui/input/segmented-input.js +0 -640
  75. package/lib/cjs/components/datepicker/ui/input/segmented-input.js.map +0 -1
  76. package/lib/cjs/components/datepicker/ui/renderers/calendar.js +0 -446
  77. package/lib/cjs/components/datepicker/ui/renderers/calendar.js.map +0 -1
  78. package/lib/cjs/components/datepicker/ui/renderers/footer.js +0 -42
  79. package/lib/cjs/components/datepicker/ui/renderers/footer.js.map +0 -1
  80. package/lib/cjs/components/datepicker/ui/renderers/header.js +0 -32
  81. package/lib/cjs/components/datepicker/ui/renderers/header.js.map +0 -1
  82. package/lib/cjs/components/datepicker/ui/renderers/index.js +0 -25
  83. package/lib/cjs/components/datepicker/ui/renderers/index.js.map +0 -1
  84. package/lib/cjs/components/datepicker/ui/renderers/time-picker.js +0 -384
  85. package/lib/cjs/components/datepicker/ui/renderers/time-picker.js.map +0 -1
  86. package/lib/cjs/components/datepicker/ui/templates/index.js +0 -22
  87. package/lib/cjs/components/datepicker/ui/templates/index.js.map +0 -1
  88. package/lib/cjs/components/datepicker/ui/templates/templates.js +0 -253
  89. package/lib/cjs/components/datepicker/ui/templates/templates.js.map +0 -1
  90. package/lib/cjs/components/datepicker/utils/date-formatters.js +0 -88
  91. package/lib/cjs/components/datepicker/utils/date-formatters.js.map +0 -1
  92. package/lib/cjs/components/datepicker/utils/date-utils.js +0 -194
  93. package/lib/cjs/components/datepicker/utils/date-utils.js.map +0 -1
  94. package/lib/cjs/components/datepicker/utils/index.js +0 -24
  95. package/lib/cjs/components/datepicker/utils/index.js.map +0 -1
  96. package/lib/cjs/components/datepicker/utils/time-utils.js +0 -213
  97. package/lib/cjs/components/datepicker/utils/time-utils.js.map +0 -1
  98. package/lib/esm/components/alert/alert.js +0 -1022
  99. package/lib/esm/components/alert/alert.js.map +0 -1
  100. package/lib/esm/components/alert/index.js +0 -4
  101. package/lib/esm/components/alert/index.js.map +0 -1
  102. package/lib/esm/components/alert/templates.js +0 -112
  103. package/lib/esm/components/alert/templates.js.map +0 -1
  104. package/lib/esm/components/alert/types.js +0 -6
  105. package/lib/esm/components/alert/types.js.map +0 -1
  106. package/lib/esm/components/datepicker/config/config.js +0 -39
  107. package/lib/esm/components/datepicker/config/config.js.map +0 -1
  108. package/lib/esm/components/datepicker/config/index.js +0 -8
  109. package/lib/esm/components/datepicker/config/index.js.map +0 -1
  110. package/lib/esm/components/datepicker/config/interfaces.js +0 -6
  111. package/lib/esm/components/datepicker/config/interfaces.js.map +0 -1
  112. package/lib/esm/components/datepicker/config/types.js +0 -6
  113. package/lib/esm/components/datepicker/config/types.js.map +0 -1
  114. package/lib/esm/components/datepicker/core/event-manager.js +0 -133
  115. package/lib/esm/components/datepicker/core/event-manager.js.map +0 -1
  116. package/lib/esm/components/datepicker/core/focus-manager.js +0 -164
  117. package/lib/esm/components/datepicker/core/focus-manager.js.map +0 -1
  118. package/lib/esm/components/datepicker/core/helpers.js +0 -211
  119. package/lib/esm/components/datepicker/core/helpers.js.map +0 -1
  120. package/lib/esm/components/datepicker/core/index.js +0 -9
  121. package/lib/esm/components/datepicker/core/index.js.map +0 -1
  122. package/lib/esm/components/datepicker/core/unified-state-manager.js +0 -391
  123. package/lib/esm/components/datepicker/core/unified-state-manager.js.map +0 -1
  124. package/lib/esm/components/datepicker/datepicker.js +0 -2248
  125. package/lib/esm/components/datepicker/datepicker.js.map +0 -1
  126. package/lib/esm/components/datepicker/index.js +0 -7
  127. package/lib/esm/components/datepicker/index.js.map +0 -1
  128. package/lib/esm/components/datepicker/ui/index.js +0 -7
  129. package/lib/esm/components/datepicker/ui/index.js.map +0 -1
  130. package/lib/esm/components/datepicker/ui/input/dropdown.js +0 -486
  131. package/lib/esm/components/datepicker/ui/input/dropdown.js.map +0 -1
  132. package/lib/esm/components/datepicker/ui/input/index.js +0 -7
  133. package/lib/esm/components/datepicker/ui/input/index.js.map +0 -1
  134. package/lib/esm/components/datepicker/ui/input/segmented-input.js +0 -637
  135. package/lib/esm/components/datepicker/ui/input/segmented-input.js.map +0 -1
  136. package/lib/esm/components/datepicker/ui/renderers/calendar.js +0 -443
  137. package/lib/esm/components/datepicker/ui/renderers/calendar.js.map +0 -1
  138. package/lib/esm/components/datepicker/ui/renderers/footer.js +0 -39
  139. package/lib/esm/components/datepicker/ui/renderers/footer.js.map +0 -1
  140. package/lib/esm/components/datepicker/ui/renderers/header.js +0 -29
  141. package/lib/esm/components/datepicker/ui/renderers/header.js.map +0 -1
  142. package/lib/esm/components/datepicker/ui/renderers/index.js +0 -9
  143. package/lib/esm/components/datepicker/ui/renderers/index.js.map +0 -1
  144. package/lib/esm/components/datepicker/ui/renderers/time-picker.js +0 -381
  145. package/lib/esm/components/datepicker/ui/renderers/time-picker.js.map +0 -1
  146. package/lib/esm/components/datepicker/ui/templates/index.js +0 -6
  147. package/lib/esm/components/datepicker/ui/templates/index.js.map +0 -1
  148. package/lib/esm/components/datepicker/ui/templates/templates.js +0 -242
  149. package/lib/esm/components/datepicker/ui/templates/templates.js.map +0 -1
  150. package/lib/esm/components/datepicker/utils/date-formatters.js +0 -83
  151. package/lib/esm/components/datepicker/utils/date-formatters.js.map +0 -1
  152. package/lib/esm/components/datepicker/utils/date-utils.js +0 -184
  153. package/lib/esm/components/datepicker/utils/date-utils.js.map +0 -1
  154. package/lib/esm/components/datepicker/utils/index.js +0 -8
  155. package/lib/esm/components/datepicker/utils/index.js.map +0 -1
  156. package/lib/esm/components/datepicker/utils/time-utils.js +0 -201
  157. package/lib/esm/components/datepicker/utils/time-utils.js.map +0 -1
  158. package/src/components/alert/alert.ts +0 -990
  159. package/src/components/alert/index.ts +0 -4
  160. package/src/components/alert/templates.ts +0 -110
  161. package/src/components/alert/tests/accessibility/aria-roles.test.ts +0 -19
  162. package/src/components/alert/tests/accessibility/focus-management.test.ts +0 -19
  163. package/src/components/alert/tests/accessibility/keyboard-nav.test.ts +0 -22
  164. package/src/components/alert/tests/actions/confirm-cancel.test.ts +0 -122
  165. package/src/components/alert/tests/actions/input-field.test.ts +0 -180
  166. package/src/components/alert/tests/alert.basic.test.ts +0 -126
  167. package/src/components/alert/tests/alert.config.test.ts +0 -75
  168. package/src/components/alert/tests/alert.templates.test.ts +0 -17
  169. package/src/components/alert/tests/config/attribute-config.test.ts +0 -94
  170. package/src/components/alert/tests/config/json-config.test.ts +0 -119
  171. package/src/components/alert/tests/config/merging.test.ts +0 -89
  172. package/src/components/alert/tests/dismissal/auto-dismiss.test.ts +0 -96
  173. package/src/components/alert/tests/dismissal/escape-key-dismiss.test.ts +0 -105
  174. package/src/components/alert/tests/dismissal/manual-dismiss.test.ts +0 -90
  175. package/src/components/alert/tests/dismissal/outside-click-dismiss.test.ts +0 -91
  176. package/src/components/alert/tests/edge-cases/invalid-config.test.ts +0 -19
  177. package/src/components/alert/tests/edge-cases/multiple-alerts.test.ts +0 -19
  178. package/src/components/alert/tests/rendering/custom-content.test.ts +0 -81
  179. package/src/components/alert/tests/rendering/info-alert.test.ts +0 -84
  180. package/src/components/alert/tests/rendering/success-alert.test.ts +0 -100
  181. package/src/components/alert/tests/templates/default-templates.test.ts +0 -16
  182. package/src/components/alert/tests/templates/user-templates.test.ts +0 -16
  183. package/src/components/alert/types.ts +0 -145
  184. package/src/components/datepicker/__tests__/datepicker-events.test.ts +0 -356
  185. package/src/components/datepicker/__tests__/datepicker-init.test.ts +0 -343
  186. package/src/components/datepicker/__tests__/datepicker-integration.test.ts +0 -435
  187. package/src/components/datepicker/__tests__/datepicker-timezone.test.ts +0 -220
  188. package/src/components/datepicker/__tests__/segmented-input-focus.test.ts +0 -380
  189. package/src/components/datepicker/__tests__/selective-state-updates.test.ts +0 -400
  190. package/src/components/datepicker/__tests__/state-manager.test.ts +0 -421
  191. package/src/components/datepicker/__tests__/time-preservation.test.ts +0 -387
  192. package/src/components/datepicker/config/config.ts +0 -40
  193. package/src/components/datepicker/config/index.ts +0 -8
  194. package/src/components/datepicker/config/interfaces.ts +0 -82
  195. package/src/components/datepicker/config/types.ts +0 -188
  196. package/src/components/datepicker/core/event-manager.ts +0 -159
  197. package/src/components/datepicker/core/focus-manager.ts +0 -201
  198. package/src/components/datepicker/core/helpers.ts +0 -231
  199. package/src/components/datepicker/core/index.ts +0 -9
  200. package/src/components/datepicker/core/unified-state-manager.ts +0 -459
  201. package/src/components/datepicker/datepicker.css +0 -435
  202. package/src/components/datepicker/datepicker.ts +0 -2548
  203. package/src/components/datepicker/index.ts +0 -8
  204. package/src/components/datepicker/ui/index.ts +0 -7
  205. package/src/components/datepicker/ui/input/dropdown.ts +0 -552
  206. package/src/components/datepicker/ui/input/index.ts +0 -7
  207. package/src/components/datepicker/ui/input/segmented-input.ts +0 -638
  208. package/src/components/datepicker/ui/renderers/__tests__/calendar-optimizations.test.ts +0 -611
  209. package/src/components/datepicker/ui/renderers/calendar.ts +0 -530
  210. package/src/components/datepicker/ui/renderers/footer.ts +0 -43
  211. package/src/components/datepicker/ui/renderers/header.ts +0 -33
  212. package/src/components/datepicker/ui/renderers/index.ts +0 -9
  213. package/src/components/datepicker/ui/renderers/time-picker.ts +0 -438
  214. package/src/components/datepicker/ui/templates/index.ts +0 -6
  215. package/src/components/datepicker/ui/templates/templates.ts +0 -306
  216. package/src/components/datepicker/utils/__tests__/date-formatters.test.ts +0 -160
  217. package/src/components/datepicker/utils/__tests__/date-utils-keys.test.ts +0 -86
  218. package/src/components/datepicker/utils/__tests__/date-utils-timezone.test.ts +0 -215
  219. package/src/components/datepicker/utils/date-formatters.ts +0 -85
  220. package/src/components/datepicker/utils/date-utils.ts +0 -172
  221. package/src/components/datepicker/utils/index.ts +0 -8
  222. 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
-